From 11b28e0b33df4e4b24ada26e05095b9ac2184b5e Mon Sep 17 00:00:00 2001 From: Jeremy Layson Date: Thu, 22 Feb 2024 08:54:22 +0800 Subject: [PATCH 01/38] Save before remerging from main --- composer.lock | 2525 +++- database/Seeders/RoleAndPermissionSeeder.php | 2 +- phpunit.xml | 22 + src/Commands/MakeUser.php | 6 +- tests/Feature/AuthorTest.php | 50 + tests/Feature/Filament/UserResourceTest.php | 39 + tests/Feature/InstallTest.php | 77 + tests/Feature/MakeUserTest.php | 57 + tests/Feature/PageTest.php | 156 + tests/Feature/TaxonomyTest.php | 44 + .../anourvalar/eloquent-serialize/.gitignore | 5 - .../eloquent-serialize/.php-cs-fixer.php | 11 - vendor/anourvalar/eloquent-serialize/LICENSE | 21 - .../anourvalar/eloquent-serialize/README.md | 31 - .../eloquent-serialize/composer.json | 33 - .../anourvalar/eloquent-serialize/phpcs.xml | 37 - .../eloquent-serialize/phpstan.neon | 28 - .../anourvalar/eloquent-serialize/phpunit.xml | 29 - .../anourvalar/eloquent-serialize/psalm.xml | 42 - .../src/Facades/EloquentSerializeFacade.php | 20 - .../src/Grammars/EloquentBuilderGrammar.php | 131 - .../src/Grammars/ModelGrammar.php | 39 - .../src/Grammars/QueryBuilderGrammar.php | 181 - .../eloquent-serialize/src/Package.php | 33 - .../eloquent-serialize/src/Service.php | 44 - .../eloquent-serialize/tests/AbstractTest.php | 133 - .../tests/Casts/TestCast.php | 36 - .../tests/ConnectionTest.php | 40 - .../eloquent-serialize/tests/DistinctTest.php | 16 - .../eloquent-serialize/tests/EagerTest.php | 317 - .../eloquent-serialize/tests/FromTest.php | 22 - .../eloquent-serialize/tests/GroupByTest.php | 17 - .../eloquent-serialize/tests/HavingTest.php | 23 - .../eloquent-serialize/tests/JoinTest.php | 88 - .../eloquent-serialize/tests/LimitTest.php | 20 - .../eloquent-serialize/tests/Models/File.php | 7 - .../eloquent-serialize/tests/Models/Post.php | 7 - .../eloquent-serialize/tests/Models/User.php | 76 - .../tests/Models/UserPhone.php | 44 - .../tests/Models/UserPhoneNote.php | 7 - .../eloquent-serialize/tests/OrderByTest.php | 37 - .../eloquent-serialize/tests/ScopeTest.php | 36 - .../eloquent-serialize/tests/SelectTest.php | 31 - .../eloquent-serialize/tests/UnionTest.php | 79 - .../eloquent-serialize/tests/WhereTest.php | 285 - .../tests/WithCastsTest.php | 49 - .../tests/factories/Factory.php | 71 - vendor/autoload.php | 12 - vendor/bin/blade-icons-generate | 117 - vendor/bin/blade-icons-generate.bat | 5 - vendor/bin/carbon | 117 - vendor/bin/carbon.bat | 5 - vendor/bin/doctrine-dbal | 117 - vendor/bin/doctrine-dbal.bat | 5 - vendor/bin/patch-type-declarations | 117 - vendor/bin/patch-type-declarations.bat | 5 - vendor/bin/var-dump-server | 117 - vendor/bin/var-dump-server.bat | 5 - .../blade-ui-kit/blade-heroicons/LICENSE.md | 21 - .../blade-heroicons/composer.json | 54 - .../config/blade-heroicons.php | 57 - .../blade-ui-kit/blade-heroicons/package.json | 6 - .../resources/svg/c-academic-cap.svg | 4 - .../svg/c-adjustments-horizontal.svg | 3 - .../resources/svg/c-adjustments-vertical.svg | 3 - .../svg/c-archive-box-arrow-down.svg | 4 - .../resources/svg/c-archive-box-x-mark.svg | 4 - .../resources/svg/c-archive-box.svg | 4 - .../resources/svg/c-arrow-down-circle.svg | 3 - .../resources/svg/c-arrow-down-left.svg | 3 - .../svg/c-arrow-down-on-square-stack.svg | 4 - .../resources/svg/c-arrow-down-on-square.svg | 3 - .../resources/svg/c-arrow-down-right.svg | 3 - .../resources/svg/c-arrow-down-tray.svg | 4 - .../resources/svg/c-arrow-down.svg | 3 - .../resources/svg/c-arrow-left-circle.svg | 3 - .../svg/c-arrow-left-end-on-rectangle.svg | 4 - .../svg/c-arrow-left-start-on-rectangle.svg | 3 - .../resources/svg/c-arrow-left.svg | 3 - .../resources/svg/c-arrow-long-down.svg | 3 - .../resources/svg/c-arrow-long-left.svg | 3 - .../resources/svg/c-arrow-long-right.svg | 3 - .../resources/svg/c-arrow-long-up.svg | 3 - .../svg/c-arrow-path-rounded-square.svg | 3 - .../resources/svg/c-arrow-path.svg | 3 - .../resources/svg/c-arrow-right-circle.svg | 3 - .../svg/c-arrow-right-end-on-rectangle.svg | 4 - .../svg/c-arrow-right-start-on-rectangle.svg | 3 - .../resources/svg/c-arrow-right.svg | 3 - .../svg/c-arrow-top-right-on-square.svg | 4 - .../resources/svg/c-arrow-trending-down.svg | 3 - .../resources/svg/c-arrow-trending-up.svg | 3 - .../resources/svg/c-arrow-up-circle.svg | 3 - .../resources/svg/c-arrow-up-left.svg | 3 - .../svg/c-arrow-up-on-square-stack.svg | 4 - .../resources/svg/c-arrow-up-on-square.svg | 3 - .../resources/svg/c-arrow-up-right.svg | 3 - .../resources/svg/c-arrow-up-tray.svg | 4 - .../resources/svg/c-arrow-up.svg | 3 - .../resources/svg/c-arrow-uturn-down.svg | 3 - .../resources/svg/c-arrow-uturn-left.svg | 3 - .../resources/svg/c-arrow-uturn-right.svg | 3 - .../resources/svg/c-arrow-uturn-up.svg | 3 - .../resources/svg/c-arrows-pointing-in.svg | 3 - .../resources/svg/c-arrows-pointing-out.svg | 3 - .../resources/svg/c-arrows-right-left.svg | 3 - .../resources/svg/c-arrows-up-down.svg | 3 - .../resources/svg/c-at-symbol.svg | 3 - .../resources/svg/c-backspace.svg | 3 - .../resources/svg/c-backward.svg | 3 - .../resources/svg/c-banknotes.svg | 4 - .../resources/svg/c-bars-2.svg | 3 - .../resources/svg/c-bars-3-bottom-left.svg | 3 - .../resources/svg/c-bars-3-bottom-right.svg | 3 - .../resources/svg/c-bars-3-center-left.svg | 3 - .../resources/svg/c-bars-3.svg | 3 - .../resources/svg/c-bars-4.svg | 3 - .../resources/svg/c-bars-arrow-down.svg | 3 - .../resources/svg/c-bars-arrow-up.svg | 3 - .../resources/svg/c-battery-0.svg | 3 - .../resources/svg/c-battery-100.svg | 4 - .../resources/svg/c-battery-50.svg | 4 - .../resources/svg/c-beaker.svg | 3 - .../resources/svg/c-bell-alert.svg | 4 - .../resources/svg/c-bell-slash.svg | 4 - .../resources/svg/c-bell-snooze.svg | 3 - .../blade-heroicons/resources/svg/c-bell.svg | 3 - .../resources/svg/c-bolt-slash.svg | 3 - .../blade-heroicons/resources/svg/c-bolt.svg | 3 - .../resources/svg/c-book-open.svg | 3 - .../resources/svg/c-bookmark-slash.svg | 3 - .../resources/svg/c-bookmark-square.svg | 3 - .../resources/svg/c-bookmark.svg | 3 - .../resources/svg/c-briefcase.svg | 4 - .../resources/svg/c-bug-ant.svg | 3 - .../resources/svg/c-building-library.svg | 3 - .../resources/svg/c-building-office-2.svg | 3 - .../resources/svg/c-building-office.svg | 3 - .../resources/svg/c-building-storefront.svg | 3 - .../blade-heroicons/resources/svg/c-cake.svg | 3 - .../resources/svg/c-calculator.svg | 3 - .../resources/svg/c-calendar-days.svg | 4 - .../resources/svg/c-calendar.svg | 3 - .../resources/svg/c-camera.svg | 4 - .../resources/svg/c-chart-bar-square.svg | 3 - .../resources/svg/c-chart-bar.svg | 3 - .../resources/svg/c-chart-pie.svg | 4 - .../svg/c-chat-bubble-bottom-center-text.svg | 3 - .../svg/c-chat-bubble-bottom-center.svg | 3 - .../svg/c-chat-bubble-left-ellipsis.svg | 3 - .../svg/c-chat-bubble-left-right.svg | 4 - .../resources/svg/c-chat-bubble-left.svg | 3 - .../svg/c-chat-bubble-oval-left-ellipsis.svg | 3 - .../resources/svg/c-chat-bubble-oval-left.svg | 3 - .../resources/svg/c-check-badge.svg | 3 - .../resources/svg/c-check-circle.svg | 3 - .../blade-heroicons/resources/svg/c-check.svg | 3 - .../resources/svg/c-chevron-double-down.svg | 3 - .../resources/svg/c-chevron-double-left.svg | 3 - .../resources/svg/c-chevron-double-right.svg | 3 - .../resources/svg/c-chevron-double-up.svg | 3 - .../resources/svg/c-chevron-down.svg | 3 - .../resources/svg/c-chevron-left.svg | 3 - .../resources/svg/c-chevron-right.svg | 3 - .../resources/svg/c-chevron-up-down.svg | 3 - .../resources/svg/c-chevron-up.svg | 3 - .../resources/svg/c-circle-stack.svg | 5 - .../svg/c-clipboard-document-check.svg | 4 - .../svg/c-clipboard-document-list.svg | 4 - .../resources/svg/c-clipboard-document.svg | 4 - .../resources/svg/c-clipboard.svg | 3 - .../blade-heroicons/resources/svg/c-clock.svg | 3 - .../resources/svg/c-cloud-arrow-down.svg | 3 - .../resources/svg/c-cloud-arrow-up.svg | 3 - .../blade-heroicons/resources/svg/c-cloud.svg | 3 - .../resources/svg/c-code-bracket-square.svg | 3 - .../resources/svg/c-code-bracket.svg | 3 - .../resources/svg/c-cog-6-tooth.svg | 3 - .../resources/svg/c-cog-8-tooth.svg | 3 - .../blade-heroicons/resources/svg/c-cog.svg | 3 - .../resources/svg/c-command-line.svg | 3 - .../resources/svg/c-computer-desktop.svg | 3 - .../resources/svg/c-cpu-chip.svg | 4 - .../resources/svg/c-credit-card.svg | 4 - .../resources/svg/c-cube-transparent.svg | 3 - .../blade-heroicons/resources/svg/c-cube.svg | 3 - .../resources/svg/c-currency-bangladeshi.svg | 3 - .../resources/svg/c-currency-dollar.svg | 4 - .../resources/svg/c-currency-euro.svg | 3 - .../resources/svg/c-currency-pound.svg | 3 - .../resources/svg/c-currency-rupee.svg | 3 - .../resources/svg/c-currency-yen.svg | 3 - .../resources/svg/c-cursor-arrow-rays.svg | 3 - .../resources/svg/c-cursor-arrow-ripple.svg | 5 - .../resources/svg/c-device-phone-mobile.svg | 4 - .../resources/svg/c-device-tablet.svg | 4 - .../resources/svg/c-document-arrow-down.svg | 3 - .../resources/svg/c-document-arrow-up.svg | 3 - .../resources/svg/c-document-chart-bar.svg | 3 - .../resources/svg/c-document-check.svg | 3 - .../resources/svg/c-document-duplicate.svg | 4 - .../svg/c-document-magnifying-glass.svg | 4 - .../resources/svg/c-document-minus.svg | 3 - .../resources/svg/c-document-plus.svg | 3 - .../resources/svg/c-document-text.svg | 3 - .../resources/svg/c-document.svg | 3 - .../svg/c-ellipsis-horizontal-circle.svg | 3 - .../resources/svg/c-ellipsis-horizontal.svg | 3 - .../resources/svg/c-ellipsis-vertical.svg | 3 - .../resources/svg/c-envelope-open.svg | 3 - .../resources/svg/c-envelope.svg | 4 - .../resources/svg/c-exclamation-circle.svg | 3 - .../resources/svg/c-exclamation-triangle.svg | 3 - .../resources/svg/c-eye-dropper.svg | 3 - .../resources/svg/c-eye-slash.svg | 4 - .../blade-heroicons/resources/svg/c-eye.svg | 4 - .../resources/svg/c-face-frown.svg | 3 - .../resources/svg/c-face-smile.svg | 3 - .../blade-heroicons/resources/svg/c-film.svg | 3 - .../resources/svg/c-finger-print.svg | 3 - .../blade-heroicons/resources/svg/c-fire.svg | 3 - .../blade-heroicons/resources/svg/c-flag.svg | 3 - .../resources/svg/c-folder-arrow-down.svg | 3 - .../resources/svg/c-folder-minus.svg | 3 - .../resources/svg/c-folder-open.svg | 3 - .../resources/svg/c-folder-plus.svg | 3 - .../resources/svg/c-folder.svg | 3 - .../resources/svg/c-forward.svg | 3 - .../resources/svg/c-funnel.svg | 3 - .../blade-heroicons/resources/svg/c-gif.svg | 3 - .../resources/svg/c-gift-top.svg | 4 - .../blade-heroicons/resources/svg/c-gift.svg | 4 - .../resources/svg/c-globe-alt.svg | 3 - .../resources/svg/c-globe-americas.svg | 3 - .../resources/svg/c-globe-asia-australia.svg | 3 - .../resources/svg/c-globe-europe-africa.svg | 3 - .../resources/svg/c-hand-raised.svg | 3 - .../resources/svg/c-hand-thumb-down.svg | 3 - .../resources/svg/c-hand-thumb-up.svg | 3 - .../resources/svg/c-hashtag.svg | 3 - .../blade-heroicons/resources/svg/c-heart.svg | 3 - .../resources/svg/c-home-modern.svg | 3 - .../blade-heroicons/resources/svg/c-home.svg | 3 - .../resources/svg/c-identification.svg | 3 - .../resources/svg/c-inbox-arrow-down.svg | 4 - .../resources/svg/c-inbox-stack.svg | 4 - .../blade-heroicons/resources/svg/c-inbox.svg | 3 - .../resources/svg/c-information-circle.svg | 3 - .../blade-heroicons/resources/svg/c-key.svg | 3 - .../resources/svg/c-language.svg | 3 - .../resources/svg/c-lifebuoy.svg | 3 - .../resources/svg/c-light-bulb.svg | 3 - .../blade-heroicons/resources/svg/c-link.svg | 4 - .../resources/svg/c-list-bullet.svg | 3 - .../resources/svg/c-lock-closed.svg | 3 - .../resources/svg/c-lock-open.svg | 3 - .../svg/c-magnifying-glass-circle.svg | 4 - .../svg/c-magnifying-glass-minus.svg | 4 - .../resources/svg/c-magnifying-glass-plus.svg | 4 - .../resources/svg/c-magnifying-glass.svg | 3 - .../resources/svg/c-map-pin.svg | 3 - .../blade-heroicons/resources/svg/c-map.svg | 3 - .../resources/svg/c-megaphone.svg | 3 - .../resources/svg/c-microphone.svg | 4 - .../resources/svg/c-minus-circle.svg | 3 - .../blade-heroicons/resources/svg/c-minus.svg | 3 - .../blade-heroicons/resources/svg/c-moon.svg | 3 - .../resources/svg/c-musical-note.svg | 3 - .../resources/svg/c-newspaper.svg | 4 - .../resources/svg/c-no-symbol.svg | 3 - .../resources/svg/c-paint-brush.svg | 3 - .../resources/svg/c-paper-airplane.svg | 3 - .../resources/svg/c-paper-clip.svg | 3 - .../resources/svg/c-pause-circle.svg | 3 - .../blade-heroicons/resources/svg/c-pause.svg | 3 - .../resources/svg/c-pencil-square.svg | 4 - .../resources/svg/c-pencil.svg | 3 - .../resources/svg/c-phone-arrow-down-left.svg | 4 - .../resources/svg/c-phone-arrow-up-right.svg | 4 - .../resources/svg/c-phone-x-mark.svg | 4 - .../blade-heroicons/resources/svg/c-phone.svg | 3 - .../blade-heroicons/resources/svg/c-photo.svg | 3 - .../resources/svg/c-play-circle.svg | 3 - .../resources/svg/c-play-pause.svg | 3 - .../blade-heroicons/resources/svg/c-play.svg | 3 - .../resources/svg/c-plus-circle.svg | 3 - .../blade-heroicons/resources/svg/c-plus.svg | 3 - .../blade-heroicons/resources/svg/c-power.svg | 3 - .../svg/c-presentation-chart-bar.svg | 3 - .../svg/c-presentation-chart-line.svg | 3 - .../resources/svg/c-printer.svg | 3 - .../resources/svg/c-puzzle-piece.svg | 3 - .../resources/svg/c-qr-code.svg | 9 - .../resources/svg/c-question-mark-circle.svg | 3 - .../resources/svg/c-queue-list.svg | 3 - .../blade-heroicons/resources/svg/c-radio.svg | 3 - .../resources/svg/c-receipt-percent.svg | 3 - .../resources/svg/c-receipt-refund.svg | 3 - .../resources/svg/c-rectangle-group.svg | 3 - .../resources/svg/c-rectangle-stack.svg | 3 - .../resources/svg/c-rocket-launch.svg | 4 - .../blade-heroicons/resources/svg/c-rss.svg | 3 - .../blade-heroicons/resources/svg/c-scale.svg | 3 - .../resources/svg/c-scissors.svg | 4 - .../resources/svg/c-server-stack.svg | 4 - .../resources/svg/c-server.svg | 4 - .../blade-heroicons/resources/svg/c-share.svg | 3 - .../resources/svg/c-shield-check.svg | 3 - .../resources/svg/c-shield-exclamation.svg | 3 - .../resources/svg/c-shopping-bag.svg | 3 - .../resources/svg/c-shopping-cart.svg | 3 - .../resources/svg/c-signal-slash.svg | 3 - .../resources/svg/c-signal.svg | 5 - .../resources/svg/c-sparkles.svg | 3 - .../resources/svg/c-speaker-wave.svg | 4 - .../resources/svg/c-speaker-x-mark.svg | 3 - .../resources/svg/c-square-2-stack.svg | 4 - .../resources/svg/c-square-3-stack-3d.svg | 5 - .../resources/svg/c-squares-2x2.svg | 3 - .../resources/svg/c-squares-plus.svg | 3 - .../blade-heroicons/resources/svg/c-star.svg | 3 - .../resources/svg/c-stop-circle.svg | 3 - .../blade-heroicons/resources/svg/c-stop.svg | 3 - .../blade-heroicons/resources/svg/c-sun.svg | 3 - .../resources/svg/c-swatch.svg | 4 - .../resources/svg/c-table-cells.svg | 3 - .../blade-heroicons/resources/svg/c-tag.svg | 3 - .../resources/svg/c-ticket.svg | 3 - .../blade-heroicons/resources/svg/c-trash.svg | 3 - .../resources/svg/c-trophy.svg | 3 - .../blade-heroicons/resources/svg/c-truck.svg | 5 - .../blade-heroicons/resources/svg/c-tv.svg | 4 - .../resources/svg/c-user-circle.svg | 3 - .../resources/svg/c-user-group.svg | 3 - .../resources/svg/c-user-minus.svg | 3 - .../resources/svg/c-user-plus.svg | 3 - .../blade-heroicons/resources/svg/c-user.svg | 3 - .../blade-heroicons/resources/svg/c-users.svg | 3 - .../resources/svg/c-variable.svg | 3 - .../resources/svg/c-video-camera-slash.svg | 3 - .../resources/svg/c-video-camera.svg | 3 - .../resources/svg/c-view-columns.svg | 3 - .../resources/svg/c-viewfinder-circle.svg | 3 - .../resources/svg/c-wallet.svg | 3 - .../blade-heroicons/resources/svg/c-wifi.svg | 3 - .../resources/svg/c-window.svg | 3 - .../resources/svg/c-wrench-screwdriver.svg | 4 - .../resources/svg/c-wrench.svg | 3 - .../resources/svg/c-x-circle.svg | 3 - .../resources/svg/c-x-mark.svg | 3 - .../resources/svg/m-academic-cap.svg | 3 - .../svg/m-adjustments-horizontal.svg | 3 - .../resources/svg/m-adjustments-vertical.svg | 3 - .../svg/m-archive-box-arrow-down.svg | 3 - .../resources/svg/m-archive-box-x-mark.svg | 4 - .../resources/svg/m-archive-box.svg | 4 - .../resources/svg/m-arrow-down-circle.svg | 3 - .../resources/svg/m-arrow-down-left.svg | 3 - .../svg/m-arrow-down-on-square-stack.svg | 3 - .../resources/svg/m-arrow-down-on-square.svg | 3 - .../resources/svg/m-arrow-down-right.svg | 3 - .../resources/svg/m-arrow-down-tray.svg | 4 - .../resources/svg/m-arrow-down.svg | 3 - .../resources/svg/m-arrow-left-circle.svg | 10 - .../svg/m-arrow-left-end-on-rectangle.svg | 4 - .../svg/m-arrow-left-on-rectangle.svg | 4 - .../svg/m-arrow-left-start-on-rectangle.svg | 4 - .../resources/svg/m-arrow-left.svg | 3 - .../resources/svg/m-arrow-long-down.svg | 3 - .../resources/svg/m-arrow-long-left.svg | 3 - .../resources/svg/m-arrow-long-right.svg | 3 - .../resources/svg/m-arrow-long-up.svg | 3 - .../svg/m-arrow-path-rounded-square.svg | 3 - .../resources/svg/m-arrow-path.svg | 3 - .../resources/svg/m-arrow-right-circle.svg | 3 - .../svg/m-arrow-right-end-on-rectangle.svg | 4 - .../svg/m-arrow-right-on-rectangle.svg | 4 - .../svg/m-arrow-right-start-on-rectangle.svg | 4 - .../resources/svg/m-arrow-right.svg | 3 - .../resources/svg/m-arrow-small-down.svg | 3 - .../resources/svg/m-arrow-small-left.svg | 3 - .../resources/svg/m-arrow-small-right.svg | 3 - .../resources/svg/m-arrow-small-up.svg | 3 - .../svg/m-arrow-top-right-on-square.svg | 4 - .../resources/svg/m-arrow-trending-down.svg | 3 - .../resources/svg/m-arrow-trending-up.svg | 3 - .../resources/svg/m-arrow-up-circle.svg | 3 - .../resources/svg/m-arrow-up-left.svg | 3 - .../svg/m-arrow-up-on-square-stack.svg | 3 - .../resources/svg/m-arrow-up-on-square.svg | 3 - .../resources/svg/m-arrow-up-right.svg | 3 - .../resources/svg/m-arrow-up-tray.svg | 4 - .../resources/svg/m-arrow-up.svg | 3 - .../resources/svg/m-arrow-uturn-down.svg | 3 - .../resources/svg/m-arrow-uturn-left.svg | 3 - .../resources/svg/m-arrow-uturn-right.svg | 3 - .../resources/svg/m-arrow-uturn-up.svg | 3 - .../resources/svg/m-arrows-pointing-in.svg | 3 - .../resources/svg/m-arrows-pointing-out.svg | 3 - .../resources/svg/m-arrows-right-left.svg | 3 - .../resources/svg/m-arrows-up-down.svg | 3 - .../resources/svg/m-at-symbol.svg | 3 - .../resources/svg/m-backspace.svg | 3 - .../resources/svg/m-backward.svg | 3 - .../resources/svg/m-banknotes.svg | 3 - .../resources/svg/m-bars-2.svg | 3 - .../resources/svg/m-bars-3-bottom-left.svg | 3 - .../resources/svg/m-bars-3-bottom-right.svg | 3 - .../resources/svg/m-bars-3-center-left.svg | 3 - .../resources/svg/m-bars-3.svg | 3 - .../resources/svg/m-bars-4.svg | 3 - .../resources/svg/m-bars-arrow-down.svg | 3 - .../resources/svg/m-bars-arrow-up.svg | 3 - .../resources/svg/m-battery-0.svg | 3 - .../resources/svg/m-battery-100.svg | 4 - .../resources/svg/m-battery-50.svg | 4 - .../resources/svg/m-beaker.svg | 3 - .../resources/svg/m-bell-alert.svg | 4 - .../resources/svg/m-bell-slash.svg | 3 - .../resources/svg/m-bell-snooze.svg | 3 - .../blade-heroicons/resources/svg/m-bell.svg | 3 - .../resources/svg/m-bolt-slash.svg | 4 - .../blade-heroicons/resources/svg/m-bolt.svg | 3 - .../resources/svg/m-book-open.svg | 3 - .../resources/svg/m-bookmark-slash.svg | 3 - .../resources/svg/m-bookmark-square.svg | 3 - .../resources/svg/m-bookmark.svg | 3 - .../resources/svg/m-briefcase.svg | 4 - .../resources/svg/m-bug-ant.svg | 3 - .../resources/svg/m-building-library.svg | 3 - .../resources/svg/m-building-office-2.svg | 3 - .../resources/svg/m-building-office.svg | 3 - .../resources/svg/m-building-storefront.svg | 3 - .../blade-heroicons/resources/svg/m-cake.svg | 3 - .../resources/svg/m-calculator.svg | 3 - .../resources/svg/m-calendar-days.svg | 4 - .../resources/svg/m-calendar.svg | 3 - .../resources/svg/m-camera.svg | 3 - .../resources/svg/m-chart-bar-square.svg | 3 - .../resources/svg/m-chart-bar.svg | 3 - .../resources/svg/m-chart-pie.svg | 4 - .../svg/m-chat-bubble-bottom-center-text.svg | 3 - .../svg/m-chat-bubble-bottom-center.svg | 3 - .../svg/m-chat-bubble-left-ellipsis.svg | 3 - .../svg/m-chat-bubble-left-right.svg | 4 - .../resources/svg/m-chat-bubble-left.svg | 3 - .../svg/m-chat-bubble-oval-left-ellipsis.svg | 3 - .../resources/svg/m-chat-bubble-oval-left.svg | 3 - .../resources/svg/m-check-badge.svg | 3 - .../resources/svg/m-check-circle.svg | 3 - .../blade-heroicons/resources/svg/m-check.svg | 3 - .../resources/svg/m-chevron-double-down.svg | 3 - .../resources/svg/m-chevron-double-left.svg | 3 - .../resources/svg/m-chevron-double-right.svg | 3 - .../resources/svg/m-chevron-double-up.svg | 3 - .../resources/svg/m-chevron-down.svg | 3 - .../resources/svg/m-chevron-left.svg | 3 - .../resources/svg/m-chevron-right.svg | 3 - .../resources/svg/m-chevron-up-down.svg | 3 - .../resources/svg/m-chevron-up.svg | 3 - .../resources/svg/m-circle-stack.svg | 3 - .../svg/m-clipboard-document-check.svg | 4 - .../svg/m-clipboard-document-list.svg | 4 - .../resources/svg/m-clipboard-document.svg | 4 - .../resources/svg/m-clipboard.svg | 3 - .../blade-heroicons/resources/svg/m-clock.svg | 3 - .../resources/svg/m-cloud-arrow-down.svg | 3 - .../resources/svg/m-cloud-arrow-up.svg | 3 - .../blade-heroicons/resources/svg/m-cloud.svg | 3 - .../resources/svg/m-code-bracket-square.svg | 3 - .../resources/svg/m-code-bracket.svg | 3 - .../resources/svg/m-cog-6-tooth.svg | 3 - .../resources/svg/m-cog-8-tooth.svg | 3 - .../blade-heroicons/resources/svg/m-cog.svg | 4 - .../resources/svg/m-command-line.svg | 3 - .../resources/svg/m-computer-desktop.svg | 3 - .../resources/svg/m-cpu-chip.svg | 4 - .../resources/svg/m-credit-card.svg | 3 - .../resources/svg/m-cube-transparent.svg | 3 - .../blade-heroicons/resources/svg/m-cube.svg | 3 - .../resources/svg/m-currency-bangladeshi.svg | 3 - .../resources/svg/m-currency-dollar.svg | 4 - .../resources/svg/m-currency-euro.svg | 3 - .../resources/svg/m-currency-pound.svg | 3 - .../resources/svg/m-currency-rupee.svg | 3 - .../resources/svg/m-currency-yen.svg | 3 - .../resources/svg/m-cursor-arrow-rays.svg | 3 - .../resources/svg/m-cursor-arrow-ripple.svg | 5 - .../resources/svg/m-device-phone-mobile.svg | 4 - .../resources/svg/m-device-tablet.svg | 3 - .../resources/svg/m-document-arrow-down.svg | 3 - .../resources/svg/m-document-arrow-up.svg | 3 - .../resources/svg/m-document-chart-bar.svg | 3 - .../resources/svg/m-document-check.svg | 3 - .../resources/svg/m-document-duplicate.svg | 4 - .../svg/m-document-magnifying-glass.svg | 4 - .../resources/svg/m-document-minus.svg | 3 - .../resources/svg/m-document-plus.svg | 3 - .../resources/svg/m-document-text.svg | 3 - .../resources/svg/m-document.svg | 3 - .../svg/m-ellipsis-horizontal-circle.svg | 3 - .../resources/svg/m-ellipsis-horizontal.svg | 3 - .../resources/svg/m-ellipsis-vertical.svg | 3 - .../resources/svg/m-envelope-open.svg | 3 - .../resources/svg/m-envelope.svg | 4 - .../resources/svg/m-exclamation-circle.svg | 3 - .../resources/svg/m-exclamation-triangle.svg | 3 - .../resources/svg/m-eye-dropper.svg | 3 - .../resources/svg/m-eye-slash.svg | 4 - .../blade-heroicons/resources/svg/m-eye.svg | 4 - .../resources/svg/m-face-frown.svg | 3 - .../resources/svg/m-face-smile.svg | 3 - .../blade-heroicons/resources/svg/m-film.svg | 3 - .../resources/svg/m-finger-print.svg | 3 - .../blade-heroicons/resources/svg/m-fire.svg | 3 - .../blade-heroicons/resources/svg/m-flag.svg | 3 - .../resources/svg/m-folder-arrow-down.svg | 3 - .../resources/svg/m-folder-minus.svg | 3 - .../resources/svg/m-folder-open.svg | 3 - .../resources/svg/m-folder-plus.svg | 3 - .../resources/svg/m-folder.svg | 3 - .../resources/svg/m-forward.svg | 3 - .../resources/svg/m-funnel.svg | 3 - .../blade-heroicons/resources/svg/m-gif.svg | 3 - .../resources/svg/m-gift-top.svg | 3 - .../blade-heroicons/resources/svg/m-gift.svg | 4 - .../resources/svg/m-globe-alt.svg | 3 - .../resources/svg/m-globe-americas.svg | 3 - .../resources/svg/m-globe-asia-australia.svg | 3 - .../resources/svg/m-globe-europe-africa.svg | 3 - .../resources/svg/m-hand-raised.svg | 3 - .../resources/svg/m-hand-thumb-down.svg | 3 - .../resources/svg/m-hand-thumb-up.svg | 3 - .../resources/svg/m-hashtag.svg | 3 - .../blade-heroicons/resources/svg/m-heart.svg | 3 - .../resources/svg/m-home-modern.svg | 3 - .../blade-heroicons/resources/svg/m-home.svg | 3 - .../resources/svg/m-identification.svg | 3 - .../resources/svg/m-inbox-arrow-down.svg | 4 - .../resources/svg/m-inbox-stack.svg | 4 - .../blade-heroicons/resources/svg/m-inbox.svg | 3 - .../resources/svg/m-information-circle.svg | 3 - .../blade-heroicons/resources/svg/m-key.svg | 3 - .../resources/svg/m-language.svg | 4 - .../resources/svg/m-lifebuoy.svg | 3 - .../resources/svg/m-light-bulb.svg | 3 - .../blade-heroicons/resources/svg/m-link.svg | 4 - .../resources/svg/m-list-bullet.svg | 3 - .../resources/svg/m-lock-closed.svg | 3 - .../resources/svg/m-lock-open.svg | 3 - .../svg/m-magnifying-glass-circle.svg | 4 - .../svg/m-magnifying-glass-minus.svg | 4 - .../resources/svg/m-magnifying-glass-plus.svg | 4 - .../resources/svg/m-magnifying-glass.svg | 3 - .../resources/svg/m-map-pin.svg | 3 - .../blade-heroicons/resources/svg/m-map.svg | 3 - .../resources/svg/m-megaphone.svg | 3 - .../resources/svg/m-microphone.svg | 4 - .../resources/svg/m-minus-circle.svg | 3 - .../resources/svg/m-minus-small.svg | 3 - .../blade-heroicons/resources/svg/m-minus.svg | 3 - .../blade-heroicons/resources/svg/m-moon.svg | 3 - .../resources/svg/m-musical-note.svg | 3 - .../resources/svg/m-newspaper.svg | 4 - .../resources/svg/m-no-symbol.svg | 3 - .../resources/svg/m-paint-brush.svg | 3 - .../resources/svg/m-paper-airplane.svg | 3 - .../resources/svg/m-paper-clip.svg | 3 - .../resources/svg/m-pause-circle.svg | 3 - .../blade-heroicons/resources/svg/m-pause.svg | 3 - .../resources/svg/m-pencil-square.svg | 4 - .../resources/svg/m-pencil.svg | 3 - .../resources/svg/m-phone-arrow-down-left.svg | 3 - .../resources/svg/m-phone-arrow-up-right.svg | 3 - .../resources/svg/m-phone-x-mark.svg | 3 - .../blade-heroicons/resources/svg/m-phone.svg | 3 - .../blade-heroicons/resources/svg/m-photo.svg | 3 - .../resources/svg/m-play-circle.svg | 3 - .../resources/svg/m-play-pause.svg | 3 - .../blade-heroicons/resources/svg/m-play.svg | 3 - .../resources/svg/m-plus-circle.svg | 3 - .../resources/svg/m-plus-small.svg | 3 - .../blade-heroicons/resources/svg/m-plus.svg | 3 - .../blade-heroicons/resources/svg/m-power.svg | 3 - .../svg/m-presentation-chart-bar.svg | 3 - .../svg/m-presentation-chart-line.svg | 3 - .../resources/svg/m-printer.svg | 3 - .../resources/svg/m-puzzle-piece.svg | 3 - .../resources/svg/m-qr-code.svg | 3 - .../resources/svg/m-question-mark-circle.svg | 3 - .../resources/svg/m-queue-list.svg | 3 - .../blade-heroicons/resources/svg/m-radio.svg | 3 - .../resources/svg/m-receipt-percent.svg | 3 - .../resources/svg/m-receipt-refund.svg | 3 - .../resources/svg/m-rectangle-group.svg | 3 - .../resources/svg/m-rectangle-stack.svg | 3 - .../resources/svg/m-rocket-launch.svg | 4 - .../blade-heroicons/resources/svg/m-rss.svg | 4 - .../blade-heroicons/resources/svg/m-scale.svg | 3 - .../resources/svg/m-scissors.svg | 4 - .../resources/svg/m-server-stack.svg | 4 - .../resources/svg/m-server.svg | 4 - .../blade-heroicons/resources/svg/m-share.svg | 3 - .../resources/svg/m-shield-check.svg | 3 - .../resources/svg/m-shield-exclamation.svg | 3 - .../resources/svg/m-shopping-bag.svg | 3 - .../resources/svg/m-shopping-cart.svg | 3 - .../resources/svg/m-signal-slash.svg | 3 - .../resources/svg/m-signal.svg | 4 - .../resources/svg/m-sparkles.svg | 3 - .../resources/svg/m-speaker-wave.svg | 4 - .../resources/svg/m-speaker-x-mark.svg | 3 - .../resources/svg/m-square-2-stack.svg | 4 - .../resources/svg/m-square-3-stack-3d.svg | 5 - .../resources/svg/m-squares-2x2.svg | 3 - .../resources/svg/m-squares-plus.svg | 3 - .../blade-heroicons/resources/svg/m-star.svg | 3 - .../resources/svg/m-stop-circle.svg | 3 - .../blade-heroicons/resources/svg/m-stop.svg | 3 - .../blade-heroicons/resources/svg/m-sun.svg | 3 - .../resources/svg/m-swatch.svg | 3 - .../resources/svg/m-table-cells.svg | 3 - .../blade-heroicons/resources/svg/m-tag.svg | 3 - .../resources/svg/m-ticket.svg | 3 - .../blade-heroicons/resources/svg/m-trash.svg | 3 - .../resources/svg/m-trophy.svg | 3 - .../blade-heroicons/resources/svg/m-truck.svg | 4 - .../blade-heroicons/resources/svg/m-tv.svg | 4 - .../resources/svg/m-user-circle.svg | 3 - .../resources/svg/m-user-group.svg | 3 - .../resources/svg/m-user-minus.svg | 3 - .../resources/svg/m-user-plus.svg | 3 - .../blade-heroicons/resources/svg/m-user.svg | 3 - .../blade-heroicons/resources/svg/m-users.svg | 3 - .../resources/svg/m-variable.svg | 3 - .../resources/svg/m-video-camera-slash.svg | 3 - .../resources/svg/m-video-camera.svg | 3 - .../resources/svg/m-view-columns.svg | 3 - .../resources/svg/m-viewfinder-circle.svg | 3 - .../resources/svg/m-wallet.svg | 3 - .../blade-heroicons/resources/svg/m-wifi.svg | 3 - .../resources/svg/m-window.svg | 3 - .../resources/svg/m-wrench-screwdriver.svg | 4 - .../resources/svg/m-wrench.svg | 3 - .../resources/svg/m-x-circle.svg | 3 - .../resources/svg/m-x-mark.svg | 3 - .../resources/svg/o-academic-cap.svg | 3 - .../svg/o-adjustments-horizontal.svg | 3 - .../resources/svg/o-adjustments-vertical.svg | 3 - .../svg/o-archive-box-arrow-down.svg | 3 - .../resources/svg/o-archive-box-x-mark.svg | 3 - .../resources/svg/o-archive-box.svg | 3 - .../resources/svg/o-arrow-down-circle.svg | 3 - .../resources/svg/o-arrow-down-left.svg | 3 - .../svg/o-arrow-down-on-square-stack.svg | 3 - .../resources/svg/o-arrow-down-on-square.svg | 3 - .../resources/svg/o-arrow-down-right.svg | 3 - .../resources/svg/o-arrow-down-tray.svg | 3 - .../resources/svg/o-arrow-down.svg | 3 - .../resources/svg/o-arrow-left-circle.svg | 3 - .../svg/o-arrow-left-end-on-rectangle.svg | 3 - .../svg/o-arrow-left-on-rectangle.svg | 3 - .../svg/o-arrow-left-start-on-rectangle.svg | 3 - .../resources/svg/o-arrow-left.svg | 3 - .../resources/svg/o-arrow-long-down.svg | 3 - .../resources/svg/o-arrow-long-left.svg | 3 - .../resources/svg/o-arrow-long-right.svg | 3 - .../resources/svg/o-arrow-long-up.svg | 3 - .../svg/o-arrow-path-rounded-square.svg | 3 - .../resources/svg/o-arrow-path.svg | 3 - .../resources/svg/o-arrow-right-circle.svg | 3 - .../svg/o-arrow-right-end-on-rectangle.svg | 3 - .../svg/o-arrow-right-on-rectangle.svg | 3 - .../svg/o-arrow-right-start-on-rectangle.svg | 3 - .../resources/svg/o-arrow-right.svg | 3 - .../resources/svg/o-arrow-small-down.svg | 3 - .../resources/svg/o-arrow-small-left.svg | 3 - .../resources/svg/o-arrow-small-right.svg | 3 - .../resources/svg/o-arrow-small-up.svg | 3 - .../svg/o-arrow-top-right-on-square.svg | 3 - .../resources/svg/o-arrow-trending-down.svg | 3 - .../resources/svg/o-arrow-trending-up.svg | 3 - .../resources/svg/o-arrow-up-circle.svg | 3 - .../resources/svg/o-arrow-up-left.svg | 3 - .../svg/o-arrow-up-on-square-stack.svg | 3 - .../resources/svg/o-arrow-up-on-square.svg | 3 - .../resources/svg/o-arrow-up-right.svg | 3 - .../resources/svg/o-arrow-up-tray.svg | 3 - .../resources/svg/o-arrow-up.svg | 3 - .../resources/svg/o-arrow-uturn-down.svg | 3 - .../resources/svg/o-arrow-uturn-left.svg | 3 - .../resources/svg/o-arrow-uturn-right.svg | 3 - .../resources/svg/o-arrow-uturn-up.svg | 3 - .../resources/svg/o-arrows-pointing-in.svg | 3 - .../resources/svg/o-arrows-pointing-out.svg | 3 - .../resources/svg/o-arrows-right-left.svg | 3 - .../resources/svg/o-arrows-up-down.svg | 3 - .../resources/svg/o-at-symbol.svg | 3 - .../resources/svg/o-backspace.svg | 3 - .../resources/svg/o-backward.svg | 3 - .../resources/svg/o-banknotes.svg | 3 - .../resources/svg/o-bars-2.svg | 3 - .../resources/svg/o-bars-3-bottom-left.svg | 3 - .../resources/svg/o-bars-3-bottom-right.svg | 3 - .../resources/svg/o-bars-3-center-left.svg | 3 - .../resources/svg/o-bars-3.svg | 3 - .../resources/svg/o-bars-4.svg | 3 - .../resources/svg/o-bars-arrow-down.svg | 3 - .../resources/svg/o-bars-arrow-up.svg | 3 - .../resources/svg/o-battery-0.svg | 3 - .../resources/svg/o-battery-100.svg | 3 - .../resources/svg/o-battery-50.svg | 3 - .../resources/svg/o-beaker.svg | 3 - .../resources/svg/o-bell-alert.svg | 3 - .../resources/svg/o-bell-slash.svg | 3 - .../resources/svg/o-bell-snooze.svg | 3 - .../blade-heroicons/resources/svg/o-bell.svg | 3 - .../resources/svg/o-bolt-slash.svg | 3 - .../blade-heroicons/resources/svg/o-bolt.svg | 3 - .../resources/svg/o-book-open.svg | 3 - .../resources/svg/o-bookmark-slash.svg | 3 - .../resources/svg/o-bookmark-square.svg | 3 - .../resources/svg/o-bookmark.svg | 3 - .../resources/svg/o-briefcase.svg | 3 - .../resources/svg/o-bug-ant.svg | 3 - .../resources/svg/o-building-library.svg | 3 - .../resources/svg/o-building-office-2.svg | 3 - .../resources/svg/o-building-office.svg | 3 - .../resources/svg/o-building-storefront.svg | 3 - .../blade-heroicons/resources/svg/o-cake.svg | 3 - .../resources/svg/o-calculator.svg | 3 - .../resources/svg/o-calendar-days.svg | 3 - .../resources/svg/o-calendar.svg | 3 - .../resources/svg/o-camera.svg | 4 - .../resources/svg/o-chart-bar-square.svg | 3 - .../resources/svg/o-chart-bar.svg | 3 - .../resources/svg/o-chart-pie.svg | 4 - .../svg/o-chat-bubble-bottom-center-text.svg | 3 - .../svg/o-chat-bubble-bottom-center.svg | 3 - .../svg/o-chat-bubble-left-ellipsis.svg | 3 - .../svg/o-chat-bubble-left-right.svg | 3 - .../resources/svg/o-chat-bubble-left.svg | 3 - .../svg/o-chat-bubble-oval-left-ellipsis.svg | 3 - .../resources/svg/o-chat-bubble-oval-left.svg | 3 - .../resources/svg/o-check-badge.svg | 3 - .../resources/svg/o-check-circle.svg | 3 - .../blade-heroicons/resources/svg/o-check.svg | 3 - .../resources/svg/o-chevron-double-down.svg | 3 - .../resources/svg/o-chevron-double-left.svg | 3 - .../resources/svg/o-chevron-double-right.svg | 3 - .../resources/svg/o-chevron-double-up.svg | 4 - .../resources/svg/o-chevron-down.svg | 3 - .../resources/svg/o-chevron-left.svg | 3 - .../resources/svg/o-chevron-right.svg | 3 - .../resources/svg/o-chevron-up-down.svg | 3 - .../resources/svg/o-chevron-up.svg | 3 - .../resources/svg/o-circle-stack.svg | 3 - .../svg/o-clipboard-document-check.svg | 3 - .../svg/o-clipboard-document-list.svg | 3 - .../resources/svg/o-clipboard-document.svg | 3 - .../resources/svg/o-clipboard.svg | 3 - .../blade-heroicons/resources/svg/o-clock.svg | 3 - .../resources/svg/o-cloud-arrow-down.svg | 3 - .../resources/svg/o-cloud-arrow-up.svg | 3 - .../blade-heroicons/resources/svg/o-cloud.svg | 3 - .../resources/svg/o-code-bracket-square.svg | 3 - .../resources/svg/o-code-bracket.svg | 3 - .../resources/svg/o-cog-6-tooth.svg | 4 - .../resources/svg/o-cog-8-tooth.svg | 4 - .../blade-heroicons/resources/svg/o-cog.svg | 3 - .../resources/svg/o-command-line.svg | 3 - .../resources/svg/o-computer-desktop.svg | 3 - .../resources/svg/o-cpu-chip.svg | 3 - .../resources/svg/o-credit-card.svg | 3 - .../resources/svg/o-cube-transparent.svg | 3 - .../blade-heroicons/resources/svg/o-cube.svg | 3 - .../resources/svg/o-currency-bangladeshi.svg | 3 - .../resources/svg/o-currency-dollar.svg | 3 - .../resources/svg/o-currency-euro.svg | 3 - .../resources/svg/o-currency-pound.svg | 3 - .../resources/svg/o-currency-rupee.svg | 3 - .../resources/svg/o-currency-yen.svg | 3 - .../resources/svg/o-cursor-arrow-rays.svg | 3 - .../resources/svg/o-cursor-arrow-ripple.svg | 3 - .../resources/svg/o-device-phone-mobile.svg | 3 - .../resources/svg/o-device-tablet.svg | 3 - .../resources/svg/o-document-arrow-down.svg | 3 - .../resources/svg/o-document-arrow-up.svg | 3 - .../resources/svg/o-document-chart-bar.svg | 3 - .../resources/svg/o-document-check.svg | 3 - .../resources/svg/o-document-duplicate.svg | 3 - .../svg/o-document-magnifying-glass.svg | 3 - .../resources/svg/o-document-minus.svg | 3 - .../resources/svg/o-document-plus.svg | 3 - .../resources/svg/o-document-text.svg | 3 - .../resources/svg/o-document.svg | 3 - .../svg/o-ellipsis-horizontal-circle.svg | 3 - .../resources/svg/o-ellipsis-horizontal.svg | 3 - .../resources/svg/o-ellipsis-vertical.svg | 3 - .../resources/svg/o-envelope-open.svg | 3 - .../resources/svg/o-envelope.svg | 3 - .../resources/svg/o-exclamation-circle.svg | 3 - .../resources/svg/o-exclamation-triangle.svg | 3 - .../resources/svg/o-eye-dropper.svg | 3 - .../resources/svg/o-eye-slash.svg | 3 - .../blade-heroicons/resources/svg/o-eye.svg | 4 - .../resources/svg/o-face-frown.svg | 3 - .../resources/svg/o-face-smile.svg | 3 - .../blade-heroicons/resources/svg/o-film.svg | 3 - .../resources/svg/o-finger-print.svg | 3 - .../blade-heroicons/resources/svg/o-fire.svg | 4 - .../blade-heroicons/resources/svg/o-flag.svg | 3 - .../resources/svg/o-folder-arrow-down.svg | 3 - .../resources/svg/o-folder-minus.svg | 3 - .../resources/svg/o-folder-open.svg | 3 - .../resources/svg/o-folder-plus.svg | 3 - .../resources/svg/o-folder.svg | 3 - .../resources/svg/o-forward.svg | 3 - .../resources/svg/o-funnel.svg | 3 - .../blade-heroicons/resources/svg/o-gif.svg | 3 - .../resources/svg/o-gift-top.svg | 3 - .../blade-heroicons/resources/svg/o-gift.svg | 3 - .../resources/svg/o-globe-alt.svg | 3 - .../resources/svg/o-globe-americas.svg | 3 - .../resources/svg/o-globe-asia-australia.svg | 3 - .../resources/svg/o-globe-europe-africa.svg | 3 - .../resources/svg/o-hand-raised.svg | 3 - .../resources/svg/o-hand-thumb-down.svg | 3 - .../resources/svg/o-hand-thumb-up.svg | 3 - .../resources/svg/o-hashtag.svg | 3 - .../blade-heroicons/resources/svg/o-heart.svg | 3 - .../resources/svg/o-home-modern.svg | 3 - .../blade-heroicons/resources/svg/o-home.svg | 3 - .../resources/svg/o-identification.svg | 3 - .../resources/svg/o-inbox-arrow-down.svg | 3 - .../resources/svg/o-inbox-stack.svg | 3 - .../blade-heroicons/resources/svg/o-inbox.svg | 3 - .../resources/svg/o-information-circle.svg | 3 - .../blade-heroicons/resources/svg/o-key.svg | 3 - .../resources/svg/o-language.svg | 3 - .../resources/svg/o-lifebuoy.svg | 3 - .../resources/svg/o-light-bulb.svg | 3 - .../blade-heroicons/resources/svg/o-link.svg | 3 - .../resources/svg/o-list-bullet.svg | 3 - .../resources/svg/o-lock-closed.svg | 3 - .../resources/svg/o-lock-open.svg | 3 - .../svg/o-magnifying-glass-circle.svg | 3 - .../svg/o-magnifying-glass-minus.svg | 3 - .../resources/svg/o-magnifying-glass-plus.svg | 3 - .../resources/svg/o-magnifying-glass.svg | 3 - .../resources/svg/o-map-pin.svg | 4 - .../blade-heroicons/resources/svg/o-map.svg | 3 - .../resources/svg/o-megaphone.svg | 3 - .../resources/svg/o-microphone.svg | 3 - .../resources/svg/o-minus-circle.svg | 3 - .../resources/svg/o-minus-small.svg | 3 - .../blade-heroicons/resources/svg/o-minus.svg | 3 - .../blade-heroicons/resources/svg/o-moon.svg | 3 - .../resources/svg/o-musical-note.svg | 3 - .../resources/svg/o-newspaper.svg | 3 - .../resources/svg/o-no-symbol.svg | 3 - .../resources/svg/o-paint-brush.svg | 3 - .../resources/svg/o-paper-airplane.svg | 3 - .../resources/svg/o-paper-clip.svg | 3 - .../resources/svg/o-pause-circle.svg | 3 - .../blade-heroicons/resources/svg/o-pause.svg | 3 - .../resources/svg/o-pencil-square.svg | 3 - .../resources/svg/o-pencil.svg | 3 - .../resources/svg/o-phone-arrow-down-left.svg | 3 - .../resources/svg/o-phone-arrow-up-right.svg | 3 - .../resources/svg/o-phone-x-mark.svg | 3 - .../blade-heroicons/resources/svg/o-phone.svg | 3 - .../blade-heroicons/resources/svg/o-photo.svg | 3 - .../resources/svg/o-play-circle.svg | 4 - .../resources/svg/o-play-pause.svg | 3 - .../blade-heroicons/resources/svg/o-play.svg | 3 - .../resources/svg/o-plus-circle.svg | 3 - .../resources/svg/o-plus-small.svg | 3 - .../blade-heroicons/resources/svg/o-plus.svg | 3 - .../blade-heroicons/resources/svg/o-power.svg | 3 - .../svg/o-presentation-chart-bar.svg | 3 - .../svg/o-presentation-chart-line.svg | 3 - .../resources/svg/o-printer.svg | 3 - .../resources/svg/o-puzzle-piece.svg | 3 - .../resources/svg/o-qr-code.svg | 4 - .../resources/svg/o-question-mark-circle.svg | 3 - .../resources/svg/o-queue-list.svg | 3 - .../blade-heroicons/resources/svg/o-radio.svg | 3 - .../resources/svg/o-receipt-percent.svg | 3 - .../resources/svg/o-receipt-refund.svg | 3 - .../resources/svg/o-rectangle-group.svg | 3 - .../resources/svg/o-rectangle-stack.svg | 3 - .../resources/svg/o-rocket-launch.svg | 3 - .../blade-heroicons/resources/svg/o-rss.svg | 3 - .../blade-heroicons/resources/svg/o-scale.svg | 3 - .../resources/svg/o-scissors.svg | 3 - .../resources/svg/o-server-stack.svg | 3 - .../resources/svg/o-server.svg | 3 - .../blade-heroicons/resources/svg/o-share.svg | 3 - .../resources/svg/o-shield-check.svg | 3 - .../resources/svg/o-shield-exclamation.svg | 3 - .../resources/svg/o-shopping-bag.svg | 3 - .../resources/svg/o-shopping-cart.svg | 3 - .../resources/svg/o-signal-slash.svg | 3 - .../resources/svg/o-signal.svg | 3 - .../resources/svg/o-sparkles.svg | 3 - .../resources/svg/o-speaker-wave.svg | 3 - .../resources/svg/o-speaker-x-mark.svg | 3 - .../resources/svg/o-square-2-stack.svg | 3 - .../resources/svg/o-square-3-stack-3d.svg | 3 - .../resources/svg/o-squares-2x2.svg | 3 - .../resources/svg/o-squares-plus.svg | 3 - .../blade-heroicons/resources/svg/o-star.svg | 3 - .../resources/svg/o-stop-circle.svg | 4 - .../blade-heroicons/resources/svg/o-stop.svg | 3 - .../blade-heroicons/resources/svg/o-sun.svg | 3 - .../resources/svg/o-swatch.svg | 3 - .../resources/svg/o-table-cells.svg | 3 - .../blade-heroicons/resources/svg/o-tag.svg | 4 - .../resources/svg/o-ticket.svg | 3 - .../blade-heroicons/resources/svg/o-trash.svg | 3 - .../resources/svg/o-trophy.svg | 3 - .../blade-heroicons/resources/svg/o-truck.svg | 3 - .../blade-heroicons/resources/svg/o-tv.svg | 3 - .../resources/svg/o-user-circle.svg | 3 - .../resources/svg/o-user-group.svg | 3 - .../resources/svg/o-user-minus.svg | 3 - .../resources/svg/o-user-plus.svg | 3 - .../blade-heroicons/resources/svg/o-user.svg | 3 - .../blade-heroicons/resources/svg/o-users.svg | 3 - .../resources/svg/o-variable.svg | 3 - .../resources/svg/o-video-camera-slash.svg | 3 - .../resources/svg/o-video-camera.svg | 3 - .../resources/svg/o-view-columns.svg | 3 - .../resources/svg/o-viewfinder-circle.svg | 3 - .../resources/svg/o-wallet.svg | 3 - .../blade-heroicons/resources/svg/o-wifi.svg | 3 - .../resources/svg/o-window.svg | 3 - .../resources/svg/o-wrench-screwdriver.svg | 3 - .../resources/svg/o-wrench.svg | 4 - .../resources/svg/o-x-circle.svg | 3 - .../resources/svg/o-x-mark.svg | 3 - .../resources/svg/s-academic-cap.svg | 5 - .../svg/s-adjustments-horizontal.svg | 3 - .../resources/svg/s-adjustments-vertical.svg | 3 - .../svg/s-archive-box-arrow-down.svg | 4 - .../resources/svg/s-archive-box-x-mark.svg | 4 - .../resources/svg/s-archive-box.svg | 4 - .../resources/svg/s-arrow-down-circle.svg | 3 - .../resources/svg/s-arrow-down-left.svg | 3 - .../svg/s-arrow-down-on-square-stack.svg | 4 - .../resources/svg/s-arrow-down-on-square.svg | 3 - .../resources/svg/s-arrow-down-right.svg | 3 - .../resources/svg/s-arrow-down-tray.svg | 3 - .../resources/svg/s-arrow-down.svg | 3 - .../resources/svg/s-arrow-left-circle.svg | 3 - .../svg/s-arrow-left-end-on-rectangle.svg | 3 - .../svg/s-arrow-left-on-rectangle.svg | 3 - .../svg/s-arrow-left-start-on-rectangle.svg | 3 - .../resources/svg/s-arrow-left.svg | 3 - .../resources/svg/s-arrow-long-down.svg | 3 - .../resources/svg/s-arrow-long-left.svg | 3 - .../resources/svg/s-arrow-long-right.svg | 3 - .../resources/svg/s-arrow-long-up.svg | 3 - .../svg/s-arrow-path-rounded-square.svg | 3 - .../resources/svg/s-arrow-path.svg | 3 - .../resources/svg/s-arrow-right-circle.svg | 3 - .../svg/s-arrow-right-end-on-rectangle.svg | 3 - .../svg/s-arrow-right-on-rectangle.svg | 3 - .../svg/s-arrow-right-start-on-rectangle.svg | 3 - .../resources/svg/s-arrow-right.svg | 3 - .../resources/svg/s-arrow-small-down.svg | 3 - .../resources/svg/s-arrow-small-left.svg | 3 - .../resources/svg/s-arrow-small-right.svg | 3 - .../resources/svg/s-arrow-small-up.svg | 3 - .../svg/s-arrow-top-right-on-square.svg | 3 - .../resources/svg/s-arrow-trending-down.svg | 3 - .../resources/svg/s-arrow-trending-up.svg | 3 - .../resources/svg/s-arrow-up-circle.svg | 3 - .../resources/svg/s-arrow-up-left.svg | 3 - .../svg/s-arrow-up-on-square-stack.svg | 4 - .../resources/svg/s-arrow-up-on-square.svg | 3 - .../resources/svg/s-arrow-up-right.svg | 3 - .../resources/svg/s-arrow-up-tray.svg | 3 - .../resources/svg/s-arrow-up.svg | 3 - .../resources/svg/s-arrow-uturn-down.svg | 3 - .../resources/svg/s-arrow-uturn-left.svg | 3 - .../resources/svg/s-arrow-uturn-right.svg | 3 - .../resources/svg/s-arrow-uturn-up.svg | 3 - .../resources/svg/s-arrows-pointing-in.svg | 3 - .../resources/svg/s-arrows-pointing-out.svg | 3 - .../resources/svg/s-arrows-right-left.svg | 3 - .../resources/svg/s-arrows-up-down.svg | 3 - .../resources/svg/s-at-symbol.svg | 3 - .../resources/svg/s-backspace.svg | 3 - .../resources/svg/s-backward.svg | 3 - .../resources/svg/s-banknotes.svg | 5 - .../resources/svg/s-bars-2.svg | 3 - .../resources/svg/s-bars-3-bottom-left.svg | 3 - .../resources/svg/s-bars-3-bottom-right.svg | 3 - .../resources/svg/s-bars-3-center-left.svg | 3 - .../resources/svg/s-bars-3.svg | 3 - .../resources/svg/s-bars-4.svg | 3 - .../resources/svg/s-bars-arrow-down.svg | 3 - .../resources/svg/s-bars-arrow-up.svg | 3 - .../resources/svg/s-battery-0.svg | 3 - .../resources/svg/s-battery-100.svg | 3 - .../resources/svg/s-battery-50.svg | 4 - .../resources/svg/s-beaker.svg | 3 - .../resources/svg/s-bell-alert.svg | 4 - .../resources/svg/s-bell-slash.svg | 4 - .../resources/svg/s-bell-snooze.svg | 3 - .../blade-heroicons/resources/svg/s-bell.svg | 3 - .../resources/svg/s-bolt-slash.svg | 3 - .../blade-heroicons/resources/svg/s-bolt.svg | 3 - .../resources/svg/s-book-open.svg | 3 - .../resources/svg/s-bookmark-slash.svg | 3 - .../resources/svg/s-bookmark-square.svg | 3 - .../resources/svg/s-bookmark.svg | 3 - .../resources/svg/s-briefcase.svg | 4 - .../resources/svg/s-bug-ant.svg | 3 - .../resources/svg/s-building-library.svg | 5 - .../resources/svg/s-building-office-2.svg | 3 - .../resources/svg/s-building-office.svg | 3 - .../resources/svg/s-building-storefront.svg | 4 - .../blade-heroicons/resources/svg/s-cake.svg | 3 - .../resources/svg/s-calculator.svg | 3 - .../resources/svg/s-calendar-days.svg | 4 - .../resources/svg/s-calendar.svg | 3 - .../resources/svg/s-camera.svg | 4 - .../resources/svg/s-chart-bar-square.svg | 3 - .../resources/svg/s-chart-bar.svg | 3 - .../resources/svg/s-chart-pie.svg | 4 - .../svg/s-chat-bubble-bottom-center-text.svg | 3 - .../svg/s-chat-bubble-bottom-center.svg | 3 - .../svg/s-chat-bubble-left-ellipsis.svg | 3 - .../svg/s-chat-bubble-left-right.svg | 4 - .../resources/svg/s-chat-bubble-left.svg | 3 - .../svg/s-chat-bubble-oval-left-ellipsis.svg | 3 - .../resources/svg/s-chat-bubble-oval-left.svg | 3 - .../resources/svg/s-check-badge.svg | 3 - .../resources/svg/s-check-circle.svg | 3 - .../blade-heroicons/resources/svg/s-check.svg | 3 - .../resources/svg/s-chevron-double-down.svg | 4 - .../resources/svg/s-chevron-double-left.svg | 4 - .../resources/svg/s-chevron-double-right.svg | 4 - .../resources/svg/s-chevron-double-up.svg | 4 - .../resources/svg/s-chevron-down.svg | 3 - .../resources/svg/s-chevron-left.svg | 3 - .../resources/svg/s-chevron-right.svg | 3 - .../resources/svg/s-chevron-up-down.svg | 3 - .../resources/svg/s-chevron-up.svg | 3 - .../resources/svg/s-circle-stack.svg | 6 - .../svg/s-clipboard-document-check.svg | 4 - .../svg/s-clipboard-document-list.svg | 4 - .../resources/svg/s-clipboard-document.svg | 5 - .../resources/svg/s-clipboard.svg | 3 - .../blade-heroicons/resources/svg/s-clock.svg | 3 - .../resources/svg/s-cloud-arrow-down.svg | 3 - .../resources/svg/s-cloud-arrow-up.svg | 3 - .../blade-heroicons/resources/svg/s-cloud.svg | 3 - .../resources/svg/s-code-bracket-square.svg | 3 - .../resources/svg/s-code-bracket.svg | 3 - .../resources/svg/s-cog-6-tooth.svg | 3 - .../resources/svg/s-cog-8-tooth.svg | 3 - .../blade-heroicons/resources/svg/s-cog.svg | 4 - .../resources/svg/s-command-line.svg | 3 - .../resources/svg/s-computer-desktop.svg | 3 - .../resources/svg/s-cpu-chip.svg | 4 - .../resources/svg/s-credit-card.svg | 4 - .../resources/svg/s-cube-transparent.svg | 3 - .../blade-heroicons/resources/svg/s-cube.svg | 3 - .../resources/svg/s-currency-bangladeshi.svg | 3 - .../resources/svg/s-currency-dollar.svg | 4 - .../resources/svg/s-currency-euro.svg | 3 - .../resources/svg/s-currency-pound.svg | 3 - .../resources/svg/s-currency-rupee.svg | 3 - .../resources/svg/s-currency-yen.svg | 3 - .../resources/svg/s-cursor-arrow-rays.svg | 3 - .../resources/svg/s-cursor-arrow-ripple.svg | 3 - .../resources/svg/s-device-phone-mobile.svg | 4 - .../resources/svg/s-device-tablet.svg | 4 - .../resources/svg/s-document-arrow-down.svg | 4 - .../resources/svg/s-document-arrow-up.svg | 4 - .../resources/svg/s-document-chart-bar.svg | 4 - .../resources/svg/s-document-check.svg | 4 - .../resources/svg/s-document-duplicate.svg | 4 - .../svg/s-document-magnifying-glass.svg | 5 - .../resources/svg/s-document-minus.svg | 4 - .../resources/svg/s-document-plus.svg | 4 - .../resources/svg/s-document-text.svg | 4 - .../resources/svg/s-document.svg | 4 - .../svg/s-ellipsis-horizontal-circle.svg | 3 - .../resources/svg/s-ellipsis-horizontal.svg | 3 - .../resources/svg/s-ellipsis-vertical.svg | 3 - .../resources/svg/s-envelope-open.svg | 4 - .../resources/svg/s-envelope.svg | 4 - .../resources/svg/s-exclamation-circle.svg | 3 - .../resources/svg/s-exclamation-triangle.svg | 3 - .../resources/svg/s-eye-dropper.svg | 3 - .../resources/svg/s-eye-slash.svg | 5 - .../blade-heroicons/resources/svg/s-eye.svg | 4 - .../resources/svg/s-face-frown.svg | 3 - .../resources/svg/s-face-smile.svg | 3 - .../blade-heroicons/resources/svg/s-film.svg | 3 - .../resources/svg/s-finger-print.svg | 3 - .../blade-heroicons/resources/svg/s-fire.svg | 3 - .../blade-heroicons/resources/svg/s-flag.svg | 3 - .../resources/svg/s-folder-arrow-down.svg | 3 - .../resources/svg/s-folder-minus.svg | 3 - .../resources/svg/s-folder-open.svg | 3 - .../resources/svg/s-folder-plus.svg | 3 - .../resources/svg/s-folder.svg | 3 - .../resources/svg/s-forward.svg | 3 - .../resources/svg/s-funnel.svg | 3 - .../blade-heroicons/resources/svg/s-gif.svg | 3 - .../resources/svg/s-gift-top.svg | 4 - .../blade-heroicons/resources/svg/s-gift.svg | 3 - .../resources/svg/s-globe-alt.svg | 3 - .../resources/svg/s-globe-americas.svg | 3 - .../resources/svg/s-globe-asia-australia.svg | 4 - .../resources/svg/s-globe-europe-africa.svg | 3 - .../resources/svg/s-hand-raised.svg | 3 - .../resources/svg/s-hand-thumb-down.svg | 3 - .../resources/svg/s-hand-thumb-up.svg | 3 - .../resources/svg/s-hashtag.svg | 3 - .../blade-heroicons/resources/svg/s-heart.svg | 3 - .../resources/svg/s-home-modern.svg | 4 - .../blade-heroicons/resources/svg/s-home.svg | 4 - .../resources/svg/s-identification.svg | 3 - .../resources/svg/s-inbox-arrow-down.svg | 4 - .../resources/svg/s-inbox-stack.svg | 4 - .../blade-heroicons/resources/svg/s-inbox.svg | 3 - .../resources/svg/s-information-circle.svg | 3 - .../blade-heroicons/resources/svg/s-key.svg | 3 - .../resources/svg/s-language.svg | 3 - .../resources/svg/s-lifebuoy.svg | 3 - .../resources/svg/s-light-bulb.svg | 4 - .../blade-heroicons/resources/svg/s-link.svg | 3 - .../resources/svg/s-list-bullet.svg | 3 - .../resources/svg/s-lock-closed.svg | 3 - .../resources/svg/s-lock-open.svg | 3 - .../svg/s-magnifying-glass-circle.svg | 4 - .../svg/s-magnifying-glass-minus.svg | 3 - .../resources/svg/s-magnifying-glass-plus.svg | 3 - .../resources/svg/s-magnifying-glass.svg | 3 - .../resources/svg/s-map-pin.svg | 3 - .../blade-heroicons/resources/svg/s-map.svg | 3 - .../resources/svg/s-megaphone.svg | 3 - .../resources/svg/s-microphone.svg | 4 - .../resources/svg/s-minus-circle.svg | 3 - .../resources/svg/s-minus-small.svg | 3 - .../blade-heroicons/resources/svg/s-minus.svg | 3 - .../blade-heroicons/resources/svg/s-moon.svg | 3 - .../resources/svg/s-musical-note.svg | 3 - .../resources/svg/s-newspaper.svg | 4 - .../resources/svg/s-no-symbol.svg | 3 - .../resources/svg/s-paint-brush.svg | 3 - .../resources/svg/s-paper-airplane.svg | 3 - .../resources/svg/s-paper-clip.svg | 3 - .../resources/svg/s-pause-circle.svg | 3 - .../blade-heroicons/resources/svg/s-pause.svg | 3 - .../resources/svg/s-pencil-square.svg | 4 - .../resources/svg/s-pencil.svg | 3 - .../resources/svg/s-phone-arrow-down-left.svg | 4 - .../resources/svg/s-phone-arrow-up-right.svg | 4 - .../resources/svg/s-phone-x-mark.svg | 3 - .../blade-heroicons/resources/svg/s-phone.svg | 3 - .../blade-heroicons/resources/svg/s-photo.svg | 3 - .../resources/svg/s-play-circle.svg | 3 - .../resources/svg/s-play-pause.svg | 3 - .../blade-heroicons/resources/svg/s-play.svg | 3 - .../resources/svg/s-plus-circle.svg | 3 - .../resources/svg/s-plus-small.svg | 3 - .../blade-heroicons/resources/svg/s-plus.svg | 3 - .../blade-heroicons/resources/svg/s-power.svg | 3 - .../svg/s-presentation-chart-bar.svg | 3 - .../svg/s-presentation-chart-line.svg | 3 - .../resources/svg/s-printer.svg | 3 - .../resources/svg/s-puzzle-piece.svg | 3 - .../resources/svg/s-qr-code.svg | 3 - .../resources/svg/s-question-mark-circle.svg | 3 - .../resources/svg/s-queue-list.svg | 3 - .../blade-heroicons/resources/svg/s-radio.svg | 3 - .../resources/svg/s-receipt-percent.svg | 3 - .../resources/svg/s-receipt-refund.svg | 3 - .../resources/svg/s-rectangle-group.svg | 3 - .../resources/svg/s-rectangle-stack.svg | 3 - .../resources/svg/s-rocket-launch.svg | 4 - .../blade-heroicons/resources/svg/s-rss.svg | 3 - .../blade-heroicons/resources/svg/s-scale.svg | 3 - .../resources/svg/s-scissors.svg | 4 - .../resources/svg/s-server-stack.svg | 4 - .../resources/svg/s-server.svg | 4 - .../blade-heroicons/resources/svg/s-share.svg | 3 - .../resources/svg/s-shield-check.svg | 3 - .../resources/svg/s-shield-exclamation.svg | 3 - .../resources/svg/s-shopping-bag.svg | 3 - .../resources/svg/s-shopping-cart.svg | 3 - .../resources/svg/s-signal-slash.svg | 3 - .../resources/svg/s-signal.svg | 3 - .../resources/svg/s-sparkles.svg | 3 - .../resources/svg/s-speaker-wave.svg | 4 - .../resources/svg/s-speaker-x-mark.svg | 3 - .../resources/svg/s-square-2-stack.svg | 4 - .../resources/svg/s-square-3-stack-3d.svg | 5 - .../resources/svg/s-squares-2x2.svg | 3 - .../resources/svg/s-squares-plus.svg | 3 - .../blade-heroicons/resources/svg/s-star.svg | 3 - .../resources/svg/s-stop-circle.svg | 3 - .../blade-heroicons/resources/svg/s-stop.svg | 3 - .../blade-heroicons/resources/svg/s-sun.svg | 3 - .../resources/svg/s-swatch.svg | 4 - .../resources/svg/s-table-cells.svg | 3 - .../blade-heroicons/resources/svg/s-tag.svg | 3 - .../resources/svg/s-ticket.svg | 3 - .../blade-heroicons/resources/svg/s-trash.svg | 3 - .../resources/svg/s-trophy.svg | 3 - .../blade-heroicons/resources/svg/s-truck.svg | 5 - .../blade-heroicons/resources/svg/s-tv.svg | 4 - .../resources/svg/s-user-circle.svg | 3 - .../resources/svg/s-user-group.svg | 4 - .../resources/svg/s-user-minus.svg | 3 - .../resources/svg/s-user-plus.svg | 3 - .../blade-heroicons/resources/svg/s-user.svg | 3 - .../blade-heroicons/resources/svg/s-users.svg | 3 - .../resources/svg/s-variable.svg | 3 - .../resources/svg/s-video-camera-slash.svg | 3 - .../resources/svg/s-video-camera.svg | 3 - .../resources/svg/s-view-columns.svg | 3 - .../resources/svg/s-viewfinder-circle.svg | 3 - .../resources/svg/s-wallet.svg | 3 - .../blade-heroicons/resources/svg/s-wifi.svg | 3 - .../resources/svg/s-window.svg | 3 - .../resources/svg/s-wrench-screwdriver.svg | 5 - .../resources/svg/s-wrench.svg | 3 - .../resources/svg/s-x-circle.svg | 3 - .../resources/svg/s-x-mark.svg | 3 - .../src/BladeHeroiconsServiceProvider.php | 41 - vendor/blade-ui-kit/blade-icons/LICENSE.md | 21 - .../blade-icons/bin/blade-icons-generate | 25 - vendor/blade-ui-kit/blade-icons/composer.json | 69 - .../blade-icons/config/blade-icons.php | 183 - vendor/blade-ui-kit/blade-icons/pint.json | 6 - .../src/BladeIconsServiceProvider.php | 116 - .../blade-icons/src/Components/Icon.php | 31 - .../blade-icons/src/Components/Svg.php | 24 - .../src/Concerns/RendersAttributes.php | 43 - .../blade-icons/src/Console/CacheCommand.php | 35 - .../blade-icons/src/Console/ClearCommand.php | 34 - .../src/Exceptions/CannotRegisterIconSet.php | 30 - .../src/Exceptions/SvgNotFound.php | 15 - .../blade-ui-kit/blade-icons/src/Factory.php | 257 - .../src/Generation/IconGenerator.php | 92 - .../blade-icons/src/IconsManifest.php | 113 - vendor/blade-ui-kit/blade-icons/src/Svg.php | 73 - .../blade-ui-kit/blade-icons/src/helpers.php | 13 - vendor/brick/math/CHANGELOG.md | 445 - vendor/brick/math/LICENSE | 20 - vendor/brick/math/composer.json | 34 - vendor/brick/math/src/BigDecimal.php | 786 -- vendor/brick/math/src/BigInteger.php | 1079 -- vendor/brick/math/src/BigNumber.php | 512 - vendor/brick/math/src/BigRational.php | 445 - .../src/Exception/DivisionByZeroException.php | 35 - .../Exception/IntegerOverflowException.php | 23 - .../math/src/Exception/MathException.php | 12 - .../src/Exception/NegativeNumberException.php | 12 - .../src/Exception/NumberFormatException.php | 33 - .../Exception/RoundingNecessaryException.php | 19 - vendor/brick/math/src/Internal/Calculator.php | 676 - .../Internal/Calculator/BcMathCalculator.php | 75 - .../src/Internal/Calculator/GmpCalculator.php | 108 - .../Internal/Calculator/NativeCalculator.php | 581 - vendor/brick/math/src/RoundingMode.php | 107 - .../carbonphp/carbon-doctrine-types/LICENSE | 21 - .../carbonphp/carbon-doctrine-types/README.md | 14 - .../carbon-doctrine-types/composer.json | 36 - .../Carbon/Doctrine/CarbonDoctrineType.php | 14 - .../Carbon/Doctrine/CarbonImmutableType.php | 7 - .../src/Carbon/Doctrine/CarbonType.php | 7 - .../Carbon/Doctrine/CarbonTypeConverter.php | 141 - .../Doctrine/DateTimeDefaultPrecision.php | 28 - .../Carbon/Doctrine/DateTimeImmutableType.php | 20 - .../src/Carbon/Doctrine/DateTimeType.php | 12 - vendor/composer/ClassLoader.php | 572 - vendor/composer/InstalledVersions.php | 352 - vendor/composer/LICENSE | 21 - vendor/composer/autoload_classmap.php | 87 - vendor/composer/autoload_files.php | 42 - vendor/composer/autoload_namespaces.php | 9 - vendor/composer/autoload_psr4.php | 103 - vendor/composer/autoload_real.php | 55 - vendor/composer/autoload_static.php | 669 - vendor/composer/installed.json | 7419 ----------- vendor/composer/installed.php | 1140 -- .../date-format-converter/.gitattributes | 2 - .../date-format-converter/.github/FUNDING.yml | 1 - .../.github/ISSUE_TEMPLATE/bug_report.md | 23 - .../.github/ISSUE_TEMPLATE/config.yml | 8 - .../date-format-converter/.gitignore | 2 - .../date-format-converter/CODE_OF_CONDUCT.md | 76 - .../date-format-converter/LICENSE.md | 21 - .../danharrin/date-format-converter/README.md | 33 - .../date-format-converter/SECURITY.md | 11 - .../date-format-converter/composer.json | 32 - .../date-format-converter/src/Converter.php | 42 - .../date-format-converter/src/helpers.php | 10 - .../date-format-converter/src/standards.php | 154 - .../.github/FUNDING.yml | 1 - .../.github/ISSUE_TEMPLATE/bug_report.md | 25 - .../.github/ISSUE_TEMPLATE/config.yml | 8 - .../.github/workflows/tests.yml | 40 - .../livewire-rate-limiting/.gitignore | 4 - .../livewire-rate-limiting/CODE_OF_CONDUCT.md | 76 - .../livewire-rate-limiting/LICENSE.md | 21 - .../livewire-rate-limiting/README.md | 136 - .../livewire-rate-limiting/SECURITY.md | 11 - .../livewire-rate-limiting/composer.json | 40 - .../livewire-rate-limiting/phpunit.xml.dist | 22 - .../Exceptions/TooManyRequestsException.php | 27 - .../src/WithRateLimiting.php | 58 - .../tests/RateLimitingTest.php | 124 - .../livewire-rate-limiting/tests/TestCase.php | 28 - .../tests/views/component.blade.php | 1 - .../tests/views/volt-component.blade.php | 36 - vendor/dflydev/dot-access-data/CHANGELOG.md | 67 - vendor/dflydev/dot-access-data/LICENSE | 19 - vendor/dflydev/dot-access-data/README.md | 158 - vendor/dflydev/dot-access-data/composer.json | 67 - vendor/dflydev/dot-access-data/src/Data.php | 286 - .../dot-access-data/src/DataInterface.php | 131 - .../src/Exception/DataException.php | 21 - .../src/Exception/InvalidPathException.php | 21 - .../src/Exception/MissingPathException.php | 37 - vendor/dflydev/dot-access-data/src/Util.php | 78 - vendor/doctrine/cache/LICENSE | 19 - vendor/doctrine/cache/README.md | 13 - vendor/doctrine/cache/UPGRADE-1.11.md | 27 - vendor/doctrine/cache/UPGRADE-1.4.md | 16 - vendor/doctrine/cache/composer.json | 50 - .../cache/lib/Doctrine/Common/Cache/Cache.php | 90 - .../Doctrine/Common/Cache/CacheProvider.php | 325 - .../Doctrine/Common/Cache/ClearableCache.php | 21 - .../Doctrine/Common/Cache/FlushableCache.php | 18 - .../Common/Cache/MultiDeleteCache.php | 22 - .../Doctrine/Common/Cache/MultiGetCache.php | 23 - .../Common/Cache/MultiOperationCache.php | 12 - .../Doctrine/Common/Cache/MultiPutCache.php | 24 - .../Common/Cache/Psr6/CacheAdapter.php | 340 - .../Doctrine/Common/Cache/Psr6/CacheItem.php | 118 - .../Common/Cache/Psr6/DoctrineProvider.php | 135 - .../Common/Cache/Psr6/InvalidArgument.php | 13 - .../Common/Cache/Psr6/TypedCacheItem.php | 99 - vendor/doctrine/dbal/CONTRIBUTING.md | 6 - vendor/doctrine/dbal/LICENSE | 19 - vendor/doctrine/dbal/README.md | 34 - vendor/doctrine/dbal/bin/doctrine-dbal | 4 - vendor/doctrine/dbal/bin/doctrine-dbal.php | 55 - vendor/doctrine/dbal/composer.json | 73 - .../doctrine/dbal/src/ArrayParameterType.php | 42 - .../dbal/src/ArrayParameters/Exception.php | 10 - .../Exception/MissingNamedParameter.php | 19 - .../Exception/MissingPositionalParameter.php | 23 - .../doctrine/dbal/src/Cache/ArrayResult.php | 116 - .../dbal/src/Cache/CacheException.php | 21 - .../dbal/src/Cache/QueryCacheProfile.php | 176 - vendor/doctrine/dbal/src/ColumnCase.php | 28 - vendor/doctrine/dbal/src/Configuration.php | 265 - vendor/doctrine/dbal/src/Connection.php | 2000 --- .../doctrine/dbal/src/ConnectionException.php | 31 - .../PrimaryReadReplicaConnection.php | 374 - vendor/doctrine/dbal/src/Driver.php | 57 - .../src/Driver/API/ExceptionConverter.php | 25 - .../Driver/API/IBMDB2/ExceptionConverter.php | 65 - .../Driver/API/MySQL/ExceptionConverter.php | 119 - .../src/Driver/API/OCI/ExceptionConverter.php | 74 - .../API/PostgreSQL/ExceptionConverter.php | 89 - .../Driver/API/SQLSrv/ExceptionConverter.php | 69 - .../Driver/API/SQLite/ExceptionConverter.php | 85 - .../API/SQLite/UserDefinedFunctions.php | 80 - .../dbal/src/Driver/AbstractDB2Driver.php | 100 - .../dbal/src/Driver/AbstractException.php | 44 - .../dbal/src/Driver/AbstractMySQLDriver.php | 209 - .../dbal/src/Driver/AbstractOracleDriver.php | 65 - .../EasyConnectString.php | 116 - .../src/Driver/AbstractPostgreSQLDriver.php | 88 - .../src/Driver/AbstractSQLServerDriver.php | 53 - .../Exception/PortWithoutHost.php | 20 - .../dbal/src/Driver/AbstractSQLiteDriver.php | 52 - .../Middleware/EnableForeignKeys.php | 31 - .../doctrine/dbal/src/Driver/Connection.php | 86 - vendor/doctrine/dbal/src/Driver/Exception.php | 20 - .../Driver/Exception/UnknownParameterType.php | 23 - .../doctrine/dbal/src/Driver/FetchUtils.php | 73 - .../dbal/src/Driver/IBMDB2/Connection.php | 141 - .../dbal/src/Driver/IBMDB2/DataSourceName.php | 84 - .../dbal/src/Driver/IBMDB2/Driver.php | 41 - .../Exception/CannotCopyStreamToStream.php | 27 - .../Exception/CannotCreateTemporaryFile.php | 27 - .../IBMDB2/Exception/ConnectionError.php | 29 - .../IBMDB2/Exception/ConnectionFailed.php | 28 - .../src/Driver/IBMDB2/Exception/Factory.php | 35 - .../Driver/IBMDB2/Exception/PrepareFailed.php | 25 - .../IBMDB2/Exception/StatementError.php | 34 - .../dbal/src/Driver/IBMDB2/Result.php | 113 - .../dbal/src/Driver/IBMDB2/Statement.php | 220 - .../doctrine/dbal/src/Driver/Middleware.php | 12 - .../AbstractConnectionMiddleware.php | 113 - .../Middleware/AbstractDriverMiddleware.php | 73 - .../Middleware/AbstractResultMiddleware.php | 78 - .../AbstractStatementMiddleware.php | 71 - .../dbal/src/Driver/Mysqli/Connection.php | 141 - .../dbal/src/Driver/Mysqli/Driver.php | 117 - .../Mysqli/Exception/ConnectionError.php | 31 - .../Mysqli/Exception/ConnectionFailed.php | 36 - .../Exception/FailedReadingStreamOffset.php | 22 - .../Driver/Mysqli/Exception/HostRequired.php | 20 - .../Mysqli/Exception/InvalidCharset.php | 42 - .../Driver/Mysqli/Exception/InvalidOption.php | 25 - .../NonStreamResourceUsedAsLargeObject.php | 24 - .../Mysqli/Exception/StatementError.php | 31 - .../dbal/src/Driver/Mysqli/Initializer.php | 14 - .../src/Driver/Mysqli/Initializer/Charset.php | 35 - .../src/Driver/Mysqli/Initializer/Options.php | 32 - .../src/Driver/Mysqli/Initializer/Secure.php | 38 - .../dbal/src/Driver/Mysqli/Result.php | 179 - .../dbal/src/Driver/Mysqli/Statement.php | 239 - .../dbal/src/Driver/OCI8/Connection.php | 170 - .../ConvertPositionalToNamedPlaceholders.php | 56 - .../doctrine/dbal/src/Driver/OCI8/Driver.php | 58 - .../OCI8/Exception/ConnectionFailed.php | 26 - .../dbal/src/Driver/OCI8/Exception/Error.php | 27 - .../OCI8/Exception/InvalidConfiguration.php | 20 - .../Exception/NonTerminatedStringLiteral.php | 27 - .../OCI8/Exception/SequenceDoesNotExist.php | 20 - .../OCI8/Exception/UnknownParameterIndex.php | 24 - .../dbal/src/Driver/OCI8/ExecutionMode.php | 30 - .../OCI8/Middleware/InitializeSession.php | 39 - .../doctrine/dbal/src/Driver/OCI8/Result.php | 145 - .../dbal/src/Driver/OCI8/Statement.php | 174 - .../dbal/src/Driver/PDO/Connection.php | 158 - .../dbal/src/Driver/PDO/Exception.php | 30 - .../dbal/src/Driver/PDO/MySQL/Driver.php | 76 - .../dbal/src/Driver/PDO/OCI/Driver.php | 61 - .../dbal/src/Driver/PDO/PDOException.php | 33 - .../dbal/src/Driver/PDO/ParameterTypeMap.php | 49 - .../dbal/src/Driver/PDO/PgSQL/Driver.php | 131 - .../doctrine/dbal/src/Driver/PDO/Result.php | 124 - .../dbal/src/Driver/PDO/SQLSrv/Connection.php | 70 - .../dbal/src/Driver/PDO/SQLSrv/Driver.php | 108 - .../dbal/src/Driver/PDO/SQLSrv/Statement.php | 109 - .../dbal/src/Driver/PDO/SQLite/Driver.php | 77 - .../dbal/src/Driver/PDO/Statement.php | 137 - .../dbal/src/Driver/PgSQL/Connection.php | 161 - .../src/Driver/PgSQL/ConvertParameters.php | 49 - .../doctrine/dbal/src/Driver/PgSQL/Driver.php | 85 - .../dbal/src/Driver/PgSQL/Exception.php | 30 - .../PgSQL/Exception/UnexpectedValue.php | 29 - .../PgSQL/Exception/UnknownParameter.php | 18 - .../doctrine/dbal/src/Driver/PgSQL/Result.php | 282 - .../dbal/src/Driver/PgSQL/Statement.php | 177 - vendor/doctrine/dbal/src/Driver/Result.php | 93 - .../dbal/src/Driver/SQLSrv/Connection.php | 144 - .../dbal/src/Driver/SQLSrv/Driver.php | 73 - .../src/Driver/SQLSrv/Exception/Error.php | 44 - .../dbal/src/Driver/SQLSrv/Result.php | 118 - .../dbal/src/Driver/SQLSrv/Statement.php | 223 - .../dbal/src/Driver/SQLite3/Connection.php | 107 - .../dbal/src/Driver/SQLite3/Driver.php | 49 - .../dbal/src/Driver/SQLite3/Exception.php | 18 - .../dbal/src/Driver/SQLite3/Result.php | 91 - .../dbal/src/Driver/SQLite3/Statement.php | 136 - .../src/Driver/ServerInfoAwareConnection.php | 21 - vendor/doctrine/dbal/src/Driver/Statement.php | 78 - vendor/doctrine/dbal/src/DriverManager.php | 288 - .../dbal/src/Event/ConnectionEventArgs.php | 27 - .../src/Event/Listeners/OracleSessionInit.php | 77 - .../src/Event/Listeners/SQLSessionInit.php | 43 - .../src/Event/Listeners/SQLiteSessionInit.php | 30 - .../SchemaAlterTableAddColumnEventArgs.php | 81 - .../SchemaAlterTableChangeColumnEventArgs.php | 71 - .../src/Event/SchemaAlterTableEventArgs.php | 62 - .../SchemaAlterTableRemoveColumnEventArgs.php | 71 - .../SchemaAlterTableRenameColumnEventArgs.php | 82 - .../Event/SchemaColumnDefinitionEventArgs.php | 87 - .../SchemaCreateTableColumnEventArgs.php | 71 - .../src/Event/SchemaCreateTableEventArgs.php | 87 - .../src/Event/SchemaDropTableEventArgs.php | 64 - .../dbal/src/Event/SchemaEventArgs.php | 29 - .../Event/SchemaIndexDefinitionEventArgs.php | 75 - .../src/Event/TransactionBeginEventArgs.php | 10 - .../src/Event/TransactionCommitEventArgs.php | 10 - .../dbal/src/Event/TransactionEventArgs.php | 24 - .../Event/TransactionRollBackEventArgs.php | 10 - vendor/doctrine/dbal/src/Events.php | 64 - vendor/doctrine/dbal/src/Exception.php | 142 - .../src/Exception/ConnectionException.php | 12 - .../dbal/src/Exception/ConnectionLost.php | 8 - .../ConstraintViolationException.php | 12 - .../src/Exception/DatabaseDoesNotExist.php | 8 - .../DatabaseObjectExistsException.php | 16 - .../DatabaseObjectNotFoundException.php | 16 - .../dbal/src/Exception/DatabaseRequired.php | 18 - .../dbal/src/Exception/DeadlockException.php | 12 - .../dbal/src/Exception/DriverException.php | 57 - ...ForeignKeyConstraintViolationException.php | 12 - .../Exception/InvalidArgumentException.php | 19 - .../Exception/InvalidFieldNameException.php | 12 - .../dbal/src/Exception/InvalidLockMode.php | 22 - .../Exception/LockWaitTimeoutException.php | 12 - .../src/Exception/MalformedDsnException.php | 14 - .../dbal/src/Exception/NoKeyValue.php | 25 - .../Exception/NonUniqueFieldNameException.php | 12 - .../NotNullConstraintViolationException.php | 12 - .../dbal/src/Exception/ReadOnlyException.php | 12 - .../dbal/src/Exception/RetryableException.php | 14 - .../dbal/src/Exception/SchemaDoesNotExist.php | 8 - .../dbal/src/Exception/ServerException.php | 12 - .../src/Exception/SyntaxErrorException.php | 12 - .../src/Exception/TableExistsException.php | 12 - .../src/Exception/TableNotFoundException.php | 12 - .../UniqueConstraintViolationException.php | 12 - .../dbal/src/ExpandArrayParameters.php | 143 - vendor/doctrine/dbal/src/FetchMode.php | 20 - .../doctrine/dbal/src/Id/TableGenerator.php | 169 - .../src/Id/TableGeneratorSchemaVisitor.php | 77 - vendor/doctrine/dbal/src/LockMode.php | 23 - .../doctrine/dbal/src/Logging/Connection.php | 82 - .../doctrine/dbal/src/Logging/DebugStack.php | 75 - vendor/doctrine/dbal/src/Logging/Driver.php | 58 - .../doctrine/dbal/src/Logging/LoggerChain.php | 48 - .../doctrine/dbal/src/Logging/Middleware.php | 24 - .../doctrine/dbal/src/Logging/SQLLogger.php | 32 - .../doctrine/dbal/src/Logging/Statement.php | 100 - vendor/doctrine/dbal/src/ParameterType.php | 57 - .../src/Platforms/AbstractMySQLPlatform.php | 1471 --- .../dbal/src/Platforms/AbstractPlatform.php | 4710 ------- .../dbal/src/Platforms/DB2111Platform.php | 40 - .../dbal/src/Platforms/DB2Platform.php | 1053 -- .../dbal/src/Platforms/DateIntervalUnit.php | 29 - .../src/Platforms/Keywords/DB2Keywords.php | 430 - .../src/Platforms/Keywords/KeywordList.php | 56 - .../Platforms/Keywords/MariaDBKeywords.php | 276 - .../Platforms/Keywords/MariaDb102Keywords.php | 27 - .../Platforms/Keywords/MySQL57Keywords.php | 275 - .../Platforms/Keywords/MySQL80Keywords.php | 75 - .../src/Platforms/Keywords/MySQLKeywords.php | 275 - .../src/Platforms/Keywords/OracleKeywords.php | 149 - .../Keywords/PostgreSQL100Keywords.php | 27 - .../Keywords/PostgreSQL94Keywords.php | 12 - .../Platforms/Keywords/PostgreSQLKeywords.php | 135 - .../Keywords/ReservedKeywordsValidator.php | 130 - .../Keywords/SQLServer2012Keywords.php | 12 - .../Platforms/Keywords/SQLServerKeywords.php | 224 - .../src/Platforms/Keywords/SQLiteKeywords.php | 157 - .../dbal/src/Platforms/MariaDBPlatform.php | 55 - .../src/Platforms/MariaDb1027Platform.php | 15 - .../src/Platforms/MariaDb1043Platform.php | 129 - .../src/Platforms/MariaDb1052Platform.php | 38 - .../src/Platforms/MariaDb1060Platform.php | 16 - .../MySQL/CollationMetadataProvider.php | 11 - .../CachingCollationMetadataProvider.php | 33 - .../ConnectionCollationMetadataProvider.php | 41 - .../dbal/src/Platforms/MySQL/Comparator.php | 94 - .../dbal/src/Platforms/MySQL57Platform.php | 99 - .../dbal/src/Platforms/MySQL80Platform.php | 34 - .../dbal/src/Platforms/MySQLPlatform.php | 11 - .../dbal/src/Platforms/OraclePlatform.php | 1331 -- .../src/Platforms/PostgreSQL100Platform.php | 36 - .../src/Platforms/PostgreSQL94Platform.php | 12 - .../dbal/src/Platforms/PostgreSQLPlatform.php | 1409 --- .../src/Platforms/SQLServer/Comparator.php | 63 - .../SQL/Builder/SQLServerSelectSQLBuilder.php | 86 - .../src/Platforms/SQLServer2012Platform.php | 13 - .../dbal/src/Platforms/SQLServerPlatform.php | 1831 --- .../dbal/src/Platforms/SQLite/Comparator.php | 61 - .../dbal/src/Platforms/SqlitePlatform.php | 1540 --- .../doctrine/dbal/src/Platforms/TrimMode.php | 21 - .../dbal/src/Portability/Connection.php | 45 - .../dbal/src/Portability/Converter.php | 300 - .../doctrine/dbal/src/Portability/Driver.php | 83 - .../dbal/src/Portability/Middleware.php | 38 - .../dbal/src/Portability/OptimizeFlags.php | 42 - .../doctrine/dbal/src/Portability/Result.php | 81 - .../dbal/src/Portability/Statement.php | 36 - vendor/doctrine/dbal/src/Query.php | 64 - .../Query/Expression/CompositeExpression.php | 183 - .../Query/Expression/ExpressionBuilder.php | 323 - vendor/doctrine/dbal/src/Query/ForUpdate.php | 21 - .../ForUpdate/ConflictResolutionMode.php | 27 - vendor/doctrine/dbal/src/Query/Limit.php | 30 - .../doctrine/dbal/src/Query/QueryBuilder.php | 1759 --- .../dbal/src/Query/QueryException.php | 37 - .../doctrine/dbal/src/Query/SelectQuery.php | 107 - vendor/doctrine/dbal/src/Result.php | 339 - .../Builder/CreateSchemaObjectsSQLBuilder.php | 85 - .../SQL/Builder/DefaultSelectSQLBuilder.php | 95 - .../Builder/DropSchemaObjectsSQLBuilder.php | 62 - .../dbal/src/SQL/Builder/SelectSQLBuilder.php | 12 - vendor/doctrine/dbal/src/SQL/Parser.php | 127 - .../dbal/src/SQL/Parser/Exception.php | 11 - .../Exception/RegularExpressionError.php | 19 - .../doctrine/dbal/src/SQL/Parser/Visitor.php | 26 - .../dbal/src/Schema/AbstractAsset.php | 223 - .../dbal/src/Schema/AbstractSchemaManager.php | 1800 --- vendor/doctrine/dbal/src/Schema/Column.php | 466 - .../doctrine/dbal/src/Schema/ColumnDiff.php | 169 - .../doctrine/dbal/src/Schema/Comparator.php | 716 -- .../doctrine/dbal/src/Schema/Constraint.php | 41 - .../dbal/src/Schema/DB2SchemaManager.php | 451 - .../Schema/DefaultSchemaManagerFactory.php | 20 - .../Schema/Exception/ColumnAlreadyExists.php | 21 - .../Schema/Exception/ColumnDoesNotExist.php | 21 - .../Exception/ForeignKeyDoesNotExist.php | 21 - .../Schema/Exception/IndexAlreadyExists.php | 21 - .../Schema/Exception/IndexDoesNotExist.php | 21 - .../src/Schema/Exception/IndexNameInvalid.php | 21 - .../src/Schema/Exception/InvalidTableName.php | 18 - .../Exception/NamedForeignKeyRequired.php | 30 - .../Exception/NamespaceAlreadyExists.php | 21 - .../Exception/SequenceAlreadyExists.php | 21 - .../Schema/Exception/SequenceDoesNotExist.php | 21 - .../Schema/Exception/TableAlreadyExists.php | 21 - .../Schema/Exception/TableDoesNotExist.php | 21 - .../UniqueConstraintDoesNotExist.php | 21 - .../Schema/Exception/UnknownColumnOption.php | 20 - .../dbal/src/Schema/ForeignKeyConstraint.php | 406 - .../doctrine/dbal/src/Schema/Identifier.php | 27 - vendor/doctrine/dbal/src/Schema/Index.php | 365 - .../src/Schema/LegacySchemaManagerFactory.php | 19 - .../dbal/src/Schema/MySQLSchemaManager.php | 623 - .../dbal/src/Schema/OracleSchemaManager.php | 539 - .../src/Schema/PostgreSQLSchemaManager.php | 774 -- .../src/Schema/SQLServerSchemaManager.php | 611 - vendor/doctrine/dbal/src/Schema/Schema.php | 523 - .../doctrine/dbal/src/Schema/SchemaConfig.php | 120 - .../doctrine/dbal/src/Schema/SchemaDiff.php | 294 - .../dbal/src/Schema/SchemaException.php | 204 - .../dbal/src/Schema/SchemaManagerFactory.php | 17 - vendor/doctrine/dbal/src/Schema/Sequence.php | 151 - .../dbal/src/Schema/SqliteSchemaManager.php | 790 -- vendor/doctrine/dbal/src/Schema/Table.php | 1041 -- vendor/doctrine/dbal/src/Schema/TableDiff.php | 361 - .../dbal/src/Schema/UniqueConstraint.php | 154 - vendor/doctrine/dbal/src/Schema/View.php | 28 - .../src/Schema/Visitor/AbstractVisitor.php | 49 - .../Visitor/CreateSchemaSqlCollector.php | 104 - .../Schema/Visitor/DropSchemaSqlCollector.php | 107 - .../dbal/src/Schema/Visitor/Graphviz.php | 164 - .../src/Schema/Visitor/NamespaceVisitor.php | 20 - .../Schema/Visitor/RemoveNamespacedAssets.php | 103 - .../dbal/src/Schema/Visitor/Visitor.php | 45 - vendor/doctrine/dbal/src/Statement.php | 261 - .../Console/Command/CommandCompatibility.php | 35 - .../Console/Command/ReservedWordsCommand.php | 216 - .../Tools/Console/Command/RunSqlCommand.php | 120 - .../src/Tools/Console/ConnectionNotFound.php | 9 - .../src/Tools/Console/ConnectionProvider.php | 13 - .../SingleConnectionProvider.php | 36 - .../dbal/src/Tools/Console/ConsoleRunner.php | 81 - vendor/doctrine/dbal/src/Tools/DsnParser.php | 218 - .../dbal/src/TransactionIsolationLevel.php | 33 - vendor/doctrine/dbal/src/Types/ArrayType.php | 92 - .../dbal/src/Types/AsciiStringType.php | 29 - vendor/doctrine/dbal/src/Types/BigIntType.php | 50 - vendor/doctrine/dbal/src/Types/BinaryType.php | 67 - vendor/doctrine/dbal/src/Types/BlobType.php | 67 - .../doctrine/dbal/src/Types/BooleanType.php | 79 - .../dbal/src/Types/ConversionException.php | 123 - .../dbal/src/Types/DateImmutableType.php | 92 - .../dbal/src/Types/DateIntervalType.php | 110 - .../dbal/src/Types/DateTimeImmutableType.php | 98 - .../doctrine/dbal/src/Types/DateTimeType.php | 115 - .../src/Types/DateTimeTzImmutableType.php | 92 - .../dbal/src/Types/DateTimeTzType.php | 121 - vendor/doctrine/dbal/src/Types/DateType.php | 104 - .../doctrine/dbal/src/Types/DecimalType.php | 47 - vendor/doctrine/dbal/src/Types/FloatType.php | 38 - vendor/doctrine/dbal/src/Types/GuidType.php | 45 - .../doctrine/dbal/src/Types/IntegerType.php | 50 - vendor/doctrine/dbal/src/Types/JsonType.php | 96 - vendor/doctrine/dbal/src/Types/ObjectType.php | 88 - .../dbal/src/Types/PhpDateTimeMappingType.php | 12 - .../dbal/src/Types/PhpIntegerMappingType.php | 12 - .../dbal/src/Types/SimpleArrayType.php | 88 - .../doctrine/dbal/src/Types/SmallIntType.php | 50 - vendor/doctrine/dbal/src/Types/StringType.php | 27 - vendor/doctrine/dbal/src/Types/TextType.php | 38 - .../dbal/src/Types/TimeImmutableType.php | 92 - vendor/doctrine/dbal/src/Types/TimeType.php | 104 - vendor/doctrine/dbal/src/Types/Type.php | 296 - .../doctrine/dbal/src/Types/TypeRegistry.php | 127 - vendor/doctrine/dbal/src/Types/Types.php | 47 - .../src/Types/VarDateTimeImmutableType.php | 89 - .../dbal/src/Types/VarDateTimeType.php | 42 - .../dbal/src/VersionAwarePlatformDriver.php | 30 - vendor/doctrine/deprecations/LICENSE | 19 - vendor/doctrine/deprecations/README.md | 157 - vendor/doctrine/deprecations/composer.json | 38 - .../lib/Doctrine/Deprecations/Deprecation.php | 313 - .../PHPUnit/VerifyDeprecations.php | 66 - vendor/doctrine/event-manager/LICENSE | 19 - vendor/doctrine/event-manager/README.md | 13 - vendor/doctrine/event-manager/UPGRADE.md | 15 - vendor/doctrine/event-manager/composer.json | 68 - .../doctrine/event-manager/phpstan.neon.dist | 5 - vendor/doctrine/event-manager/psalm.xml | 15 - .../doctrine/event-manager/src/EventArgs.php | 37 - .../event-manager/src/EventManager.php | 129 - .../event-manager/src/EventSubscriber.php | 21 - vendor/doctrine/inflector/LICENSE | 19 - vendor/doctrine/inflector/README.md | 7 - vendor/doctrine/inflector/composer.json | 41 - vendor/doctrine/inflector/docs/en/index.rst | 226 - .../Inflector/CachedWordInflector.php | 24 - .../GenericLanguageInflectorFactory.php | 66 - .../lib/Doctrine/Inflector/Inflector.php | 507 - .../Doctrine/Inflector/InflectorFactory.php | 52 - .../lib/Doctrine/Inflector/Language.php | 19 - .../Inflector/LanguageInflectorFactory.php | 33 - .../Doctrine/Inflector/NoopWordInflector.php | 13 - .../Inflector/Rules/English/Inflectible.php | 184 - .../Rules/English/InflectorFactory.php | 21 - .../Inflector/Rules/English/Rules.php | 31 - .../Inflector/Rules/English/Uninflected.php | 189 - .../Inflector/Rules/French/Inflectible.php | 44 - .../Rules/French/InflectorFactory.php | 21 - .../Doctrine/Inflector/Rules/French/Rules.php | 31 - .../Inflector/Rules/French/Uninflected.php | 28 - .../Rules/NorwegianBokmal/Inflectible.php | 34 - .../NorwegianBokmal/InflectorFactory.php | 21 - .../Inflector/Rules/NorwegianBokmal/Rules.php | 31 - .../Rules/NorwegianBokmal/Uninflected.php | 30 - .../lib/Doctrine/Inflector/Rules/Pattern.php | 42 - .../lib/Doctrine/Inflector/Rules/Patterns.php | 34 - .../Rules/Portuguese/Inflectible.php | 98 - .../Rules/Portuguese/InflectorFactory.php | 21 - .../Inflector/Rules/Portuguese/Rules.php | 31 - .../Rules/Portuguese/Uninflected.php | 32 - .../lib/Doctrine/Inflector/Rules/Ruleset.php | 39 - .../Inflector/Rules/Spanish/Inflectible.php | 47 - .../Rules/Spanish/InflectorFactory.php | 21 - .../Inflector/Rules/Spanish/Rules.php | 31 - .../Inflector/Rules/Spanish/Uninflected.php | 30 - .../Doctrine/Inflector/Rules/Substitution.php | 30 - .../Inflector/Rules/Substitutions.php | 57 - .../Inflector/Rules/Transformation.php | 39 - .../Inflector/Rules/Transformations.php | 29 - .../Inflector/Rules/Turkish/Inflectible.php | 34 - .../Rules/Turkish/InflectorFactory.php | 21 - .../Inflector/Rules/Turkish/Rules.php | 31 - .../Inflector/Rules/Turkish/Uninflected.php | 30 - .../lib/Doctrine/Inflector/Rules/Word.php | 21 - .../Doctrine/Inflector/RulesetInflector.php | 56 - .../lib/Doctrine/Inflector/WordInflector.php | 10 - vendor/doctrine/lexer/LICENSE | 19 - vendor/doctrine/lexer/README.md | 9 - vendor/doctrine/lexer/UPGRADE.md | 22 - vendor/doctrine/lexer/composer.json | 55 - vendor/doctrine/lexer/src/AbstractLexer.php | 330 - vendor/doctrine/lexer/src/Token.php | 56 - .../cron-expression/CHANGELOG.md | 240 - vendor/dragonmantank/cron-expression/LICENSE | 19 - .../dragonmantank/cron-expression/README.md | 87 - .../cron-expression/composer.json | 47 - .../src/Cron/AbstractField.php | 346 - .../src/Cron/CronExpression.php | 578 - .../src/Cron/DayOfMonthField.php | 164 - .../src/Cron/DayOfWeekField.php | 194 - .../cron-expression/src/Cron/FieldFactory.php | 52 - .../src/Cron/FieldFactoryInterface.php | 8 - .../src/Cron/FieldInterface.php | 46 - .../cron-expression/src/Cron/HoursField.php | 212 - .../cron-expression/src/Cron/MinutesField.php | 97 - .../cron-expression/src/Cron/MonthField.php | 61 - vendor/egulias/email-validator/CHANGELOG.md | 32 - .../egulias/email-validator/CONTRIBUTING.md | 153 - vendor/egulias/email-validator/LICENSE | 19 - vendor/egulias/email-validator/composer.json | 37 - .../email-validator/src/EmailLexer.php | 330 - .../email-validator/src/EmailParser.php | 90 - .../email-validator/src/EmailValidator.php | 67 - .../email-validator/src/MessageIDParser.php | 91 - vendor/egulias/email-validator/src/Parser.php | 78 - .../email-validator/src/Parser/Comment.php | 102 - .../CommentStrategy/CommentStrategy.php | 22 - .../Parser/CommentStrategy/DomainComment.php | 33 - .../Parser/CommentStrategy/LocalComment.php | 37 - .../src/Parser/DomainLiteral.php | 210 - .../email-validator/src/Parser/DomainPart.php | 326 - .../src/Parser/DoubleQuote.php | 91 - .../src/Parser/FoldingWhiteSpace.php | 87 - .../email-validator/src/Parser/IDLeftPart.php | 15 - .../src/Parser/IDRightPart.php | 29 - .../email-validator/src/Parser/LocalPart.php | 162 - .../email-validator/src/Parser/PartParser.php | 63 - .../src/Result/InvalidEmail.php | 49 - .../src/Result/MultipleErrors.php | 56 - .../src/Result/Reason/AtextAfterCFWS.php | 16 - .../src/Result/Reason/CRLFAtTheEnd.php | 19 - .../src/Result/Reason/CRLFX2.php | 16 - .../src/Result/Reason/CRNoLF.php | 16 - .../src/Result/Reason/CharNotAllowed.php | 16 - .../src/Result/Reason/CommaInDomain.php | 16 - .../src/Result/Reason/CommentsInIDRight.php | 16 - .../src/Result/Reason/ConsecutiveAt.php | 17 - .../src/Result/Reason/ConsecutiveDot.php | 16 - .../src/Result/Reason/DetailedReason.php | 13 - .../src/Result/Reason/DomainAcceptsNoMail.php | 16 - .../src/Result/Reason/DomainHyphened.php | 16 - .../src/Result/Reason/DomainTooLong.php | 16 - .../src/Result/Reason/DotAtEnd.php | 16 - .../src/Result/Reason/DotAtStart.php | 16 - .../src/Result/Reason/EmptyReason.php | 16 - .../src/Result/Reason/ExceptionFound.php | 26 - .../src/Result/Reason/ExpectingATEXT.php | 16 - .../src/Result/Reason/ExpectingCTEXT.php | 16 - .../src/Result/Reason/ExpectingDTEXT.php | 16 - .../Reason/ExpectingDomainLiteralClose.php | 16 - .../src/Result/Reason/LabelTooLong.php | 16 - .../Result/Reason/LocalOrReservedDomain.php | 16 - .../src/Result/Reason/NoDNSRecord.php | 16 - .../src/Result/Reason/NoDomainPart.php | 16 - .../src/Result/Reason/NoLocalPart.php | 16 - .../src/Result/Reason/RFCWarnings.php | 16 - .../src/Result/Reason/Reason.php | 16 - .../src/Result/Reason/SpoofEmail.php | 17 - .../src/Result/Reason/UnOpenedComment.php | 16 - .../Result/Reason/UnableToGetDNSRecord.php | 19 - .../src/Result/Reason/UnclosedComment.php | 16 - .../Result/Reason/UnclosedQuotedString.php | 16 - .../src/Result/Reason/UnusualElements.php | 26 - .../email-validator/src/Result/Result.php | 27 - .../email-validator/src/Result/SpoofEmail.php | 13 - .../email-validator/src/Result/ValidEmail.php | 27 - .../src/Validation/DNSCheckValidation.php | 211 - .../src/Validation/DNSGetRecordWrapper.php | 31 - .../src/Validation/DNSRecords.php | 27 - .../src/Validation/EmailValidation.php | 34 - .../Exception/EmptyValidationList.php | 16 - .../Validation/Extra/SpoofCheckValidation.php | 49 - .../src/Validation/MessageIDValidation.php | 55 - .../Validation/MultipleValidationWithAnd.php | 105 - .../Validation/NoRFCWarningsValidation.php | 41 - .../src/Validation/RFCValidation.php | 54 - .../src/Warning/AddressLiteral.php | 14 - .../src/Warning/CFWSNearAt.php | 13 - .../src/Warning/CFWSWithFWS.php | 13 - .../email-validator/src/Warning/Comment.php | 13 - .../src/Warning/DeprecatedComment.php | 13 - .../src/Warning/DomainLiteral.php | 14 - .../src/Warning/EmailTooLong.php | 15 - .../src/Warning/IPV6BadChar.php | 14 - .../src/Warning/IPV6ColonEnd.php | 14 - .../src/Warning/IPV6ColonStart.php | 14 - .../src/Warning/IPV6Deprecated.php | 14 - .../src/Warning/IPV6DoubleColon.php | 14 - .../src/Warning/IPV6GroupCount.php | 14 - .../src/Warning/IPV6MaxGroups.php | 14 - .../src/Warning/LocalTooLong.php | 15 - .../src/Warning/NoDNSMXRecord.php | 14 - .../src/Warning/ObsoleteDTEXT.php | 14 - .../src/Warning/QuotedPart.php | 17 - .../src/Warning/QuotedString.php | 17 - .../email-validator/src/Warning/TLD.php | 13 - .../email-validator/src/Warning/Warning.php | 53 - vendor/filament/actions/.stubs.php | 65 - vendor/filament/actions/composer.json | 41 - .../migrations/create_exports_table.php | 35 - .../create_failed_import_rows_table.php | 30 - .../migrations/create_imports_table.php | 35 - .../filament/actions/docs/01-installation.md | 177 - vendor/filament/actions/docs/02-overview.md | 131 - .../actions/docs/03-trigger-button.md | 243 - vendor/filament/actions/docs/04-modals.md | 543 - .../actions/docs/05-grouping-actions.md | 104 - ...dding-an-action-to-a-livewire-component.md | 232 - .../docs/07-prebuilt-actions/01-create.md | 247 - .../docs/07-prebuilt-actions/02-edit.md | 200 - .../docs/07-prebuilt-actions/03-view.md | 56 - .../docs/07-prebuilt-actions/04-delete.md | 93 - .../docs/07-prebuilt-actions/05-replicate.md | 151 - .../07-prebuilt-actions/06-force-delete.md | 93 - .../docs/07-prebuilt-actions/07-restore.md | 93 - .../docs/07-prebuilt-actions/08-import.md | 708 -- .../docs/07-prebuilt-actions/09-export.md | 562 - vendor/filament/actions/docs/08-advanced.md | 87 - vendor/filament/actions/docs/09-testing.md | 285 - .../filament/actions/docs/10-upgrade-guide.md | 62 - .../actions/resources/lang/ar/associate.php | 45 - .../actions/resources/lang/ar/attach.php | 45 - .../actions/resources/lang/ar/create.php | 37 - .../actions/resources/lang/ar/delete.php | 61 - .../actions/resources/lang/ar/detach.php | 61 - .../actions/resources/lang/ar/dissociate.php | 61 - .../actions/resources/lang/ar/edit.php | 33 - .../actions/resources/lang/ar/export.php | 77 - .../resources/lang/ar/force-delete.php | 61 - .../actions/resources/lang/ar/group.php | 9 - .../actions/resources/lang/ar/import.php | 77 - .../actions/resources/lang/ar/modal.php | 23 - .../actions/resources/lang/ar/replicate.php | 33 - .../actions/resources/lang/ar/restore.php | 61 - .../actions/resources/lang/ar/view.php | 25 - .../actions/resources/lang/az/associate.php | 45 - .../actions/resources/lang/az/attach.php | 45 - .../actions/resources/lang/az/create.php | 37 - .../actions/resources/lang/az/delete.php | 61 - .../actions/resources/lang/az/detach.php | 61 - .../actions/resources/lang/az/dissociate.php | 61 - .../actions/resources/lang/az/edit.php | 33 - .../resources/lang/az/force-delete.php | 61 - .../actions/resources/lang/az/group.php | 9 - .../actions/resources/lang/az/modal.php | 23 - .../actions/resources/lang/az/replicate.php | 33 - .../actions/resources/lang/az/restore.php | 61 - .../actions/resources/lang/az/view.php | 25 - .../actions/resources/lang/bn/associate.php | 45 - .../actions/resources/lang/bn/attach.php | 45 - .../actions/resources/lang/bn/create.php | 37 - .../actions/resources/lang/bn/delete.php | 61 - .../actions/resources/lang/bn/detach.php | 61 - .../actions/resources/lang/bn/dissociate.php | 61 - .../actions/resources/lang/bn/edit.php | 33 - .../resources/lang/bn/force-delete.php | 61 - .../actions/resources/lang/bn/group.php | 9 - .../actions/resources/lang/bn/modal.php | 23 - .../actions/resources/lang/bn/replicate.php | 33 - .../actions/resources/lang/bn/restore.php | 61 - .../actions/resources/lang/bn/view.php | 25 - .../actions/resources/lang/bs/associate.php | 45 - .../actions/resources/lang/bs/attach.php | 45 - .../actions/resources/lang/bs/create.php | 37 - .../actions/resources/lang/bs/delete.php | 61 - .../actions/resources/lang/bs/detach.php | 61 - .../actions/resources/lang/bs/dissociate.php | 61 - .../actions/resources/lang/bs/edit.php | 33 - .../resources/lang/bs/force-delete.php | 61 - .../actions/resources/lang/bs/group.php | 9 - .../actions/resources/lang/bs/modal.php | 23 - .../actions/resources/lang/bs/replicate.php | 33 - .../actions/resources/lang/bs/restore.php | 61 - .../actions/resources/lang/bs/view.php | 25 - .../actions/resources/lang/ca/associate.php | 45 - .../actions/resources/lang/ca/attach.php | 45 - .../actions/resources/lang/ca/create.php | 37 - .../actions/resources/lang/ca/delete.php | 61 - .../actions/resources/lang/ca/detach.php | 61 - .../actions/resources/lang/ca/dissociate.php | 61 - .../actions/resources/lang/ca/edit.php | 33 - .../resources/lang/ca/force-delete.php | 61 - .../actions/resources/lang/ca/group.php | 9 - .../actions/resources/lang/ca/import.php | 77 - .../actions/resources/lang/ca/modal.php | 23 - .../actions/resources/lang/ca/replicate.php | 33 - .../actions/resources/lang/ca/restore.php | 61 - .../actions/resources/lang/ca/view.php | 25 - .../actions/resources/lang/ckb/associate.php | 45 - .../actions/resources/lang/ckb/attach.php | 45 - .../actions/resources/lang/ckb/create.php | 37 - .../actions/resources/lang/ckb/delete.php | 61 - .../actions/resources/lang/ckb/detach.php | 61 - .../actions/resources/lang/ckb/dissociate.php | 61 - .../actions/resources/lang/ckb/edit.php | 33 - .../resources/lang/ckb/force-delete.php | 61 - .../actions/resources/lang/ckb/group.php | 9 - .../actions/resources/lang/ckb/modal.php | 23 - .../actions/resources/lang/ckb/replicate.php | 33 - .../actions/resources/lang/ckb/restore.php | 61 - .../actions/resources/lang/ckb/view.php | 25 - .../actions/resources/lang/cs/associate.php | 45 - .../actions/resources/lang/cs/attach.php | 45 - .../actions/resources/lang/cs/create.php | 37 - .../actions/resources/lang/cs/delete.php | 61 - .../actions/resources/lang/cs/detach.php | 61 - .../actions/resources/lang/cs/dissociate.php | 61 - .../actions/resources/lang/cs/edit.php | 33 - .../resources/lang/cs/force-delete.php | 61 - .../actions/resources/lang/cs/group.php | 9 - .../actions/resources/lang/cs/import.php | 77 - .../actions/resources/lang/cs/modal.php | 23 - .../actions/resources/lang/cs/replicate.php | 33 - .../actions/resources/lang/cs/restore.php | 61 - .../actions/resources/lang/cs/view.php | 25 - .../actions/resources/lang/da/associate.php | 45 - .../actions/resources/lang/da/attach.php | 45 - .../actions/resources/lang/da/create.php | 37 - .../actions/resources/lang/da/delete.php | 61 - .../actions/resources/lang/da/detach.php | 61 - .../actions/resources/lang/da/dissociate.php | 61 - .../actions/resources/lang/da/edit.php | 33 - .../actions/resources/lang/da/export.php | 77 - .../resources/lang/da/force-delete.php | 61 - .../actions/resources/lang/da/group.php | 9 - .../actions/resources/lang/da/import.php | 77 - .../actions/resources/lang/da/modal.php | 23 - .../actions/resources/lang/da/replicate.php | 33 - .../actions/resources/lang/da/restore.php | 61 - .../actions/resources/lang/da/view.php | 25 - .../actions/resources/lang/de/associate.php | 45 - .../actions/resources/lang/de/attach.php | 45 - .../actions/resources/lang/de/create.php | 37 - .../actions/resources/lang/de/delete.php | 61 - .../actions/resources/lang/de/detach.php | 61 - .../actions/resources/lang/de/dissociate.php | 61 - .../actions/resources/lang/de/edit.php | 33 - .../resources/lang/de/force-delete.php | 61 - .../actions/resources/lang/de/group.php | 9 - .../actions/resources/lang/de/modal.php | 23 - .../actions/resources/lang/de/replicate.php | 33 - .../actions/resources/lang/de/restore.php | 61 - .../actions/resources/lang/de/view.php | 25 - .../actions/resources/lang/el/associate.php | 45 - .../actions/resources/lang/el/attach.php | 45 - .../actions/resources/lang/el/create.php | 37 - .../actions/resources/lang/el/delete.php | 61 - .../actions/resources/lang/el/detach.php | 61 - .../actions/resources/lang/el/dissociate.php | 61 - .../actions/resources/lang/el/edit.php | 33 - .../actions/resources/lang/el/export.php | 77 - .../resources/lang/el/force-delete.php | 61 - .../actions/resources/lang/el/group.php | 9 - .../actions/resources/lang/el/import.php | 77 - .../actions/resources/lang/el/modal.php | 23 - .../actions/resources/lang/el/replicate.php | 33 - .../actions/resources/lang/el/restore.php | 61 - .../actions/resources/lang/el/view.php | 25 - .../actions/resources/lang/en/associate.php | 45 - .../actions/resources/lang/en/attach.php | 45 - .../actions/resources/lang/en/create.php | 37 - .../actions/resources/lang/en/delete.php | 61 - .../actions/resources/lang/en/detach.php | 61 - .../actions/resources/lang/en/dissociate.php | 61 - .../actions/resources/lang/en/edit.php | 33 - .../actions/resources/lang/en/export.php | 77 - .../resources/lang/en/force-delete.php | 61 - .../actions/resources/lang/en/group.php | 9 - .../actions/resources/lang/en/import.php | 77 - .../actions/resources/lang/en/modal.php | 23 - .../actions/resources/lang/en/replicate.php | 33 - .../actions/resources/lang/en/restore.php | 61 - .../actions/resources/lang/en/view.php | 25 - .../actions/resources/lang/es/associate.php | 45 - .../actions/resources/lang/es/attach.php | 45 - .../actions/resources/lang/es/create.php | 37 - .../actions/resources/lang/es/delete.php | 61 - .../actions/resources/lang/es/detach.php | 61 - .../actions/resources/lang/es/dissociate.php | 61 - .../actions/resources/lang/es/edit.php | 33 - .../actions/resources/lang/es/export.php | 77 - .../resources/lang/es/force-delete.php | 61 - .../actions/resources/lang/es/group.php | 9 - .../actions/resources/lang/es/import.php | 77 - .../actions/resources/lang/es/modal.php | 23 - .../actions/resources/lang/es/replicate.php | 33 - .../actions/resources/lang/es/restore.php | 61 - .../actions/resources/lang/es/view.php | 25 - .../actions/resources/lang/fa/associate.php | 45 - .../actions/resources/lang/fa/attach.php | 45 - .../actions/resources/lang/fa/create.php | 37 - .../actions/resources/lang/fa/delete.php | 61 - .../actions/resources/lang/fa/detach.php | 61 - .../actions/resources/lang/fa/dissociate.php | 61 - .../actions/resources/lang/fa/edit.php | 33 - .../resources/lang/fa/force-delete.php | 61 - .../actions/resources/lang/fa/group.php | 9 - .../actions/resources/lang/fa/modal.php | 23 - .../actions/resources/lang/fa/replicate.php | 33 - .../actions/resources/lang/fa/restore.php | 61 - .../actions/resources/lang/fa/view.php | 25 - .../actions/resources/lang/fi/associate.php | 45 - .../actions/resources/lang/fi/attach.php | 45 - .../actions/resources/lang/fi/create.php | 37 - .../actions/resources/lang/fi/delete.php | 61 - .../actions/resources/lang/fi/detach.php | 61 - .../actions/resources/lang/fi/dissociate.php | 61 - .../actions/resources/lang/fi/edit.php | 33 - .../actions/resources/lang/fi/export.php | 77 - .../resources/lang/fi/force-delete.php | 61 - .../actions/resources/lang/fi/group.php | 9 - .../actions/resources/lang/fi/import.php | 77 - .../actions/resources/lang/fi/modal.php | 23 - .../actions/resources/lang/fi/replicate.php | 33 - .../actions/resources/lang/fi/restore.php | 61 - .../actions/resources/lang/fi/view.php | 25 - .../actions/resources/lang/fr/associate.php | 45 - .../actions/resources/lang/fr/attach.php | 45 - .../actions/resources/lang/fr/create.php | 37 - .../actions/resources/lang/fr/delete.php | 61 - .../actions/resources/lang/fr/detach.php | 61 - .../actions/resources/lang/fr/dissociate.php | 61 - .../actions/resources/lang/fr/edit.php | 33 - .../resources/lang/fr/force-delete.php | 61 - .../actions/resources/lang/fr/group.php | 9 - .../actions/resources/lang/fr/import.php | 77 - .../actions/resources/lang/fr/modal.php | 23 - .../actions/resources/lang/fr/replicate.php | 33 - .../actions/resources/lang/fr/restore.php | 61 - .../actions/resources/lang/fr/view.php | 25 - .../actions/resources/lang/he/associate.php | 45 - .../actions/resources/lang/he/attach.php | 45 - .../actions/resources/lang/he/create.php | 37 - .../actions/resources/lang/he/delete.php | 61 - .../actions/resources/lang/he/detach.php | 61 - .../actions/resources/lang/he/dissociate.php | 61 - .../actions/resources/lang/he/edit.php | 33 - .../resources/lang/he/force-delete.php | 61 - .../actions/resources/lang/he/group.php | 9 - .../actions/resources/lang/he/modal.php | 23 - .../actions/resources/lang/he/replicate.php | 33 - .../actions/resources/lang/he/restore.php | 61 - .../actions/resources/lang/he/view.php | 25 - .../actions/resources/lang/hi/attach.php | 45 - .../actions/resources/lang/hi/create.php | 37 - .../actions/resources/lang/hi/delete.php | 61 - .../actions/resources/lang/hi/detach.php | 61 - .../actions/resources/lang/hi/edit.php | 33 - .../actions/resources/lang/hi/modal.php | 23 - .../actions/resources/lang/hr/associate.php | 45 - .../actions/resources/lang/hr/attach.php | 45 - .../actions/resources/lang/hr/create.php | 37 - .../actions/resources/lang/hr/delete.php | 61 - .../actions/resources/lang/hr/detach.php | 61 - .../actions/resources/lang/hr/dissociate.php | 61 - .../actions/resources/lang/hr/edit.php | 33 - .../resources/lang/hr/force-delete.php | 61 - .../actions/resources/lang/hr/group.php | 9 - .../actions/resources/lang/hr/modal.php | 23 - .../actions/resources/lang/hr/replicate.php | 33 - .../actions/resources/lang/hr/restore.php | 61 - .../actions/resources/lang/hr/view.php | 25 - .../actions/resources/lang/hu/associate.php | 45 - .../actions/resources/lang/hu/attach.php | 45 - .../actions/resources/lang/hu/create.php | 37 - .../actions/resources/lang/hu/delete.php | 61 - .../actions/resources/lang/hu/detach.php | 61 - .../actions/resources/lang/hu/dissociate.php | 61 - .../actions/resources/lang/hu/edit.php | 33 - .../resources/lang/hu/force-delete.php | 61 - .../actions/resources/lang/hu/group.php | 9 - .../actions/resources/lang/hu/import.php | 77 - .../actions/resources/lang/hu/modal.php | 23 - .../actions/resources/lang/hu/replicate.php | 33 - .../actions/resources/lang/hu/restore.php | 61 - .../actions/resources/lang/hu/view.php | 25 - .../actions/resources/lang/hy/associate.php | 45 - .../actions/resources/lang/hy/attach.php | 45 - .../actions/resources/lang/hy/create.php | 37 - .../actions/resources/lang/hy/delete.php | 61 - .../actions/resources/lang/hy/detach.php | 61 - .../actions/resources/lang/hy/dissociate.php | 61 - .../actions/resources/lang/hy/edit.php | 33 - .../resources/lang/hy/force-delete.php | 61 - .../actions/resources/lang/hy/group.php | 9 - .../actions/resources/lang/hy/modal.php | 23 - .../actions/resources/lang/hy/replicate.php | 33 - .../actions/resources/lang/hy/restore.php | 61 - .../actions/resources/lang/hy/view.php | 25 - .../actions/resources/lang/id/associate.php | 45 - .../actions/resources/lang/id/attach.php | 45 - .../actions/resources/lang/id/create.php | 37 - .../actions/resources/lang/id/delete.php | 61 - .../actions/resources/lang/id/detach.php | 61 - .../actions/resources/lang/id/dissociate.php | 61 - .../actions/resources/lang/id/edit.php | 33 - .../actions/resources/lang/id/export.php | 77 - .../resources/lang/id/force-delete.php | 61 - .../actions/resources/lang/id/group.php | 9 - .../actions/resources/lang/id/import.php | 77 - .../actions/resources/lang/id/modal.php | 23 - .../actions/resources/lang/id/replicate.php | 33 - .../actions/resources/lang/id/restore.php | 61 - .../actions/resources/lang/id/view.php | 25 - .../actions/resources/lang/it/associate.php | 45 - .../actions/resources/lang/it/attach.php | 45 - .../actions/resources/lang/it/create.php | 37 - .../actions/resources/lang/it/delete.php | 61 - .../actions/resources/lang/it/detach.php | 61 - .../actions/resources/lang/it/dissociate.php | 61 - .../actions/resources/lang/it/edit.php | 33 - .../actions/resources/lang/it/export.php | 77 - .../resources/lang/it/force-delete.php | 61 - .../actions/resources/lang/it/group.php | 9 - .../actions/resources/lang/it/import.php | 77 - .../actions/resources/lang/it/modal.php | 23 - .../actions/resources/lang/it/replicate.php | 33 - .../actions/resources/lang/it/restore.php | 61 - .../actions/resources/lang/it/view.php | 25 - .../actions/resources/lang/ja/associate.php | 45 - .../actions/resources/lang/ja/attach.php | 45 - .../actions/resources/lang/ja/create.php | 37 - .../actions/resources/lang/ja/delete.php | 61 - .../actions/resources/lang/ja/detach.php | 61 - .../actions/resources/lang/ja/dissociate.php | 61 - .../actions/resources/lang/ja/edit.php | 33 - .../resources/lang/ja/force-delete.php | 61 - .../actions/resources/lang/ja/group.php | 9 - .../actions/resources/lang/ja/modal.php | 23 - .../actions/resources/lang/ja/replicate.php | 33 - .../actions/resources/lang/ja/restore.php | 61 - .../actions/resources/lang/ja/view.php | 25 - .../actions/resources/lang/kh/attach.php | 45 - .../actions/resources/lang/kh/create.php | 37 - .../actions/resources/lang/kh/delete.php | 61 - .../actions/resources/lang/kh/detach.php | 61 - .../actions/resources/lang/kh/edit.php | 33 - .../actions/resources/lang/km/associate.php | 45 - .../actions/resources/lang/km/attach.php | 45 - .../actions/resources/lang/km/create.php | 37 - .../actions/resources/lang/km/delete.php | 61 - .../actions/resources/lang/km/detach.php | 61 - .../actions/resources/lang/km/dissociate.php | 61 - .../actions/resources/lang/km/edit.php | 33 - .../actions/resources/lang/km/export.php | 77 - .../resources/lang/km/force-delete.php | 61 - .../actions/resources/lang/km/group.php | 9 - .../actions/resources/lang/km/import.php | 77 - .../actions/resources/lang/km/modal.php | 23 - .../actions/resources/lang/km/replicate.php | 33 - .../actions/resources/lang/km/restore.php | 61 - .../actions/resources/lang/km/view.php | 25 - .../actions/resources/lang/ko/associate.php | 45 - .../actions/resources/lang/ko/attach.php | 45 - .../actions/resources/lang/ko/create.php | 37 - .../actions/resources/lang/ko/delete.php | 61 - .../actions/resources/lang/ko/detach.php | 61 - .../actions/resources/lang/ko/dissociate.php | 61 - .../actions/resources/lang/ko/edit.php | 33 - .../resources/lang/ko/force-delete.php | 61 - .../actions/resources/lang/ko/group.php | 9 - .../actions/resources/lang/ko/modal.php | 23 - .../actions/resources/lang/ko/replicate.php | 33 - .../actions/resources/lang/ko/restore.php | 61 - .../actions/resources/lang/ko/view.php | 25 - .../actions/resources/lang/ku/associate.php | 45 - .../actions/resources/lang/ku/attach.php | 45 - .../actions/resources/lang/ku/create.php | 37 - .../actions/resources/lang/ku/delete.php | 61 - .../actions/resources/lang/ku/detach.php | 61 - .../actions/resources/lang/ku/dissociate.php | 61 - .../actions/resources/lang/ku/edit.php | 33 - .../resources/lang/ku/force-delete.php | 61 - .../actions/resources/lang/ku/group.php | 9 - .../actions/resources/lang/ku/modal.php | 23 - .../actions/resources/lang/ku/replicate.php | 33 - .../actions/resources/lang/ku/restore.php | 61 - .../actions/resources/lang/ku/view.php | 25 - .../actions/resources/lang/lt/associate.php | 45 - .../actions/resources/lang/lt/attach.php | 45 - .../actions/resources/lang/lt/create.php | 37 - .../actions/resources/lang/lt/delete.php | 61 - .../actions/resources/lang/lt/detach.php | 61 - .../actions/resources/lang/lt/dissociate.php | 61 - .../actions/resources/lang/lt/edit.php | 33 - .../resources/lang/lt/force-delete.php | 61 - .../actions/resources/lang/lt/group.php | 9 - .../actions/resources/lang/lt/modal.php | 23 - .../actions/resources/lang/lt/replicate.php | 33 - .../actions/resources/lang/lt/restore.php | 61 - .../actions/resources/lang/lt/view.php | 25 - .../actions/resources/lang/lv/associate.php | 45 - .../actions/resources/lang/lv/attach.php | 45 - .../actions/resources/lang/lv/create.php | 37 - .../actions/resources/lang/lv/delete.php | 61 - .../actions/resources/lang/lv/detach.php | 61 - .../actions/resources/lang/lv/dissociate.php | 61 - .../actions/resources/lang/lv/edit.php | 33 - .../resources/lang/lv/force-delete.php | 61 - .../actions/resources/lang/lv/group.php | 9 - .../actions/resources/lang/lv/modal.php | 23 - .../actions/resources/lang/lv/replicate.php | 33 - .../actions/resources/lang/lv/restore.php | 61 - .../actions/resources/lang/lv/view.php | 25 - .../actions/resources/lang/mn/associate.php | 45 - .../actions/resources/lang/mn/attach.php | 45 - .../actions/resources/lang/mn/create.php | 37 - .../actions/resources/lang/mn/delete.php | 61 - .../actions/resources/lang/mn/detach.php | 61 - .../actions/resources/lang/mn/dissociate.php | 61 - .../actions/resources/lang/mn/edit.php | 33 - .../resources/lang/mn/force-delete.php | 61 - .../actions/resources/lang/mn/group.php | 9 - .../actions/resources/lang/mn/modal.php | 23 - .../actions/resources/lang/mn/replicate.php | 33 - .../actions/resources/lang/mn/restore.php | 61 - .../actions/resources/lang/mn/view.php | 25 - .../actions/resources/lang/ms/associate.php | 45 - .../actions/resources/lang/ms/attach.php | 45 - .../actions/resources/lang/ms/create.php | 37 - .../actions/resources/lang/ms/delete.php | 61 - .../actions/resources/lang/ms/detach.php | 61 - .../actions/resources/lang/ms/dissociate.php | 61 - .../actions/resources/lang/ms/edit.php | 33 - .../resources/lang/ms/force-delete.php | 61 - .../actions/resources/lang/ms/group.php | 9 - .../actions/resources/lang/ms/import.php | 77 - .../actions/resources/lang/ms/modal.php | 23 - .../actions/resources/lang/ms/replicate.php | 33 - .../actions/resources/lang/ms/restore.php | 61 - .../actions/resources/lang/ms/view.php | 25 - .../actions/resources/lang/my/associate.php | 45 - .../actions/resources/lang/my/attach.php | 45 - .../actions/resources/lang/my/create.php | 37 - .../actions/resources/lang/my/delete.php | 61 - .../actions/resources/lang/my/detach.php | 61 - .../actions/resources/lang/my/dissociate.php | 61 - .../actions/resources/lang/my/edit.php | 33 - .../actions/resources/lang/my/modal.php | 23 - .../actions/resources/lang/nl/associate.php | 45 - .../actions/resources/lang/nl/attach.php | 45 - .../actions/resources/lang/nl/create.php | 37 - .../actions/resources/lang/nl/delete.php | 61 - .../actions/resources/lang/nl/detach.php | 61 - .../actions/resources/lang/nl/dissociate.php | 61 - .../actions/resources/lang/nl/edit.php | 33 - .../actions/resources/lang/nl/export.php | 77 - .../resources/lang/nl/force-delete.php | 61 - .../actions/resources/lang/nl/group.php | 9 - .../actions/resources/lang/nl/import.php | 77 - .../actions/resources/lang/nl/modal.php | 23 - .../actions/resources/lang/nl/replicate.php | 33 - .../actions/resources/lang/nl/restore.php | 61 - .../actions/resources/lang/nl/view.php | 25 - .../actions/resources/lang/no/associate.php | 45 - .../actions/resources/lang/no/attach.php | 45 - .../actions/resources/lang/no/create.php | 37 - .../actions/resources/lang/no/delete.php | 61 - .../actions/resources/lang/no/detach.php | 61 - .../actions/resources/lang/no/dissociate.php | 61 - .../actions/resources/lang/no/edit.php | 33 - .../resources/lang/no/force-delete.php | 61 - .../actions/resources/lang/no/group.php | 9 - .../actions/resources/lang/no/modal.php | 23 - .../actions/resources/lang/no/replicate.php | 33 - .../actions/resources/lang/no/restore.php | 61 - .../actions/resources/lang/no/view.php | 25 - .../actions/resources/lang/np/associate.php | 45 - .../actions/resources/lang/np/attach.php | 45 - .../actions/resources/lang/np/create.php | 37 - .../actions/resources/lang/np/delete.php | 61 - .../actions/resources/lang/np/detach.php | 61 - .../actions/resources/lang/np/dissociate.php | 61 - .../actions/resources/lang/np/edit.php | 33 - .../resources/lang/np/force-delete.php | 61 - .../actions/resources/lang/np/group.php | 9 - .../actions/resources/lang/np/modal.php | 23 - .../actions/resources/lang/np/replicate.php | 33 - .../actions/resources/lang/np/restore.php | 61 - .../actions/resources/lang/np/view.php | 25 - .../actions/resources/lang/pl/associate.php | 45 - .../actions/resources/lang/pl/attach.php | 45 - .../actions/resources/lang/pl/create.php | 37 - .../actions/resources/lang/pl/delete.php | 61 - .../actions/resources/lang/pl/detach.php | 61 - .../actions/resources/lang/pl/dissociate.php | 61 - .../actions/resources/lang/pl/edit.php | 33 - .../resources/lang/pl/force-delete.php | 61 - .../actions/resources/lang/pl/group.php | 9 - .../actions/resources/lang/pl/modal.php | 23 - .../actions/resources/lang/pl/replicate.php | 33 - .../actions/resources/lang/pl/restore.php | 61 - .../actions/resources/lang/pl/view.php | 25 - .../resources/lang/pt_BR/associate.php | 45 - .../actions/resources/lang/pt_BR/attach.php | 45 - .../actions/resources/lang/pt_BR/create.php | 37 - .../actions/resources/lang/pt_BR/delete.php | 61 - .../actions/resources/lang/pt_BR/detach.php | 61 - .../resources/lang/pt_BR/dissociate.php | 61 - .../actions/resources/lang/pt_BR/edit.php | 33 - .../resources/lang/pt_BR/force-delete.php | 61 - .../actions/resources/lang/pt_BR/group.php | 9 - .../actions/resources/lang/pt_BR/modal.php | 23 - .../resources/lang/pt_BR/replicate.php | 33 - .../actions/resources/lang/pt_BR/restore.php | 61 - .../actions/resources/lang/pt_BR/view.php | 25 - .../resources/lang/pt_PT/associate.php | 45 - .../actions/resources/lang/pt_PT/attach.php | 45 - .../actions/resources/lang/pt_PT/create.php | 37 - .../actions/resources/lang/pt_PT/delete.php | 61 - .../actions/resources/lang/pt_PT/detach.php | 61 - .../resources/lang/pt_PT/dissociate.php | 61 - .../actions/resources/lang/pt_PT/edit.php | 33 - .../actions/resources/lang/pt_PT/export.php | 77 - .../resources/lang/pt_PT/force-delete.php | 61 - .../actions/resources/lang/pt_PT/group.php | 9 - .../actions/resources/lang/pt_PT/import.php | 77 - .../actions/resources/lang/pt_PT/modal.php | 23 - .../resources/lang/pt_PT/replicate.php | 33 - .../actions/resources/lang/pt_PT/restore.php | 61 - .../actions/resources/lang/pt_PT/view.php | 25 - .../actions/resources/lang/ro/associate.php | 45 - .../actions/resources/lang/ro/attach.php | 45 - .../actions/resources/lang/ro/create.php | 37 - .../actions/resources/lang/ro/delete.php | 61 - .../actions/resources/lang/ro/detach.php | 61 - .../actions/resources/lang/ro/dissociate.php | 61 - .../actions/resources/lang/ro/edit.php | 33 - .../resources/lang/ro/force-delete.php | 61 - .../actions/resources/lang/ro/group.php | 9 - .../actions/resources/lang/ro/modal.php | 23 - .../actions/resources/lang/ro/replicate.php | 33 - .../actions/resources/lang/ro/restore.php | 61 - .../actions/resources/lang/ro/view.php | 25 - .../actions/resources/lang/ru/associate.php | 45 - .../actions/resources/lang/ru/attach.php | 45 - .../actions/resources/lang/ru/create.php | 37 - .../actions/resources/lang/ru/delete.php | 61 - .../actions/resources/lang/ru/detach.php | 61 - .../actions/resources/lang/ru/dissociate.php | 61 - .../actions/resources/lang/ru/edit.php | 33 - .../resources/lang/ru/force-delete.php | 61 - .../actions/resources/lang/ru/group.php | 9 - .../actions/resources/lang/ru/modal.php | 23 - .../actions/resources/lang/ru/replicate.php | 33 - .../actions/resources/lang/ru/restore.php | 61 - .../actions/resources/lang/ru/view.php | 25 - .../actions/resources/lang/sk/associate.php | 45 - .../actions/resources/lang/sk/attach.php | 45 - .../actions/resources/lang/sk/create.php | 37 - .../actions/resources/lang/sk/delete.php | 61 - .../actions/resources/lang/sk/detach.php | 61 - .../actions/resources/lang/sk/dissociate.php | 61 - .../actions/resources/lang/sk/edit.php | 33 - .../resources/lang/sk/force-delete.php | 61 - .../actions/resources/lang/sk/group.php | 9 - .../actions/resources/lang/sk/modal.php | 23 - .../actions/resources/lang/sk/replicate.php | 33 - .../actions/resources/lang/sk/restore.php | 61 - .../actions/resources/lang/sk/view.php | 25 - .../actions/resources/lang/sq/associate.php | 45 - .../actions/resources/lang/sq/attach.php | 45 - .../actions/resources/lang/sq/create.php | 37 - .../actions/resources/lang/sq/delete.php | 61 - .../actions/resources/lang/sq/detach.php | 61 - .../actions/resources/lang/sq/dissociate.php | 61 - .../actions/resources/lang/sq/edit.php | 33 - .../resources/lang/sq/force-delete.php | 61 - .../actions/resources/lang/sq/group.php | 9 - .../actions/resources/lang/sq/modal.php | 23 - .../actions/resources/lang/sq/replicate.php | 33 - .../actions/resources/lang/sq/restore.php | 61 - .../actions/resources/lang/sq/view.php | 25 - .../actions/resources/lang/sv/associate.php | 45 - .../actions/resources/lang/sv/attach.php | 45 - .../actions/resources/lang/sv/create.php | 37 - .../actions/resources/lang/sv/delete.php | 61 - .../actions/resources/lang/sv/detach.php | 61 - .../actions/resources/lang/sv/dissociate.php | 61 - .../actions/resources/lang/sv/edit.php | 33 - .../resources/lang/sv/force-delete.php | 61 - .../actions/resources/lang/sv/group.php | 9 - .../actions/resources/lang/sv/modal.php | 23 - .../actions/resources/lang/sv/replicate.php | 33 - .../actions/resources/lang/sv/restore.php | 61 - .../actions/resources/lang/sv/view.php | 25 - .../actions/resources/lang/sw/associate.php | 45 - .../actions/resources/lang/sw/attach.php | 45 - .../actions/resources/lang/sw/create.php | 37 - .../actions/resources/lang/sw/delete.php | 61 - .../actions/resources/lang/sw/detach.php | 61 - .../actions/resources/lang/sw/dissociate.php | 61 - .../actions/resources/lang/sw/edit.php | 33 - .../resources/lang/sw/force-delete.php | 61 - .../actions/resources/lang/sw/group.php | 9 - .../actions/resources/lang/sw/modal.php | 23 - .../actions/resources/lang/sw/replicate.php | 33 - .../actions/resources/lang/sw/restore.php | 61 - .../actions/resources/lang/sw/view.php | 25 - .../actions/resources/lang/tr/associate.php | 45 - .../actions/resources/lang/tr/attach.php | 45 - .../actions/resources/lang/tr/create.php | 37 - .../actions/resources/lang/tr/delete.php | 61 - .../actions/resources/lang/tr/detach.php | 61 - .../actions/resources/lang/tr/dissociate.php | 61 - .../actions/resources/lang/tr/edit.php | 33 - .../resources/lang/tr/force-delete.php | 61 - .../actions/resources/lang/tr/group.php | 9 - .../actions/resources/lang/tr/modal.php | 23 - .../actions/resources/lang/tr/replicate.php | 33 - .../actions/resources/lang/tr/restore.php | 61 - .../actions/resources/lang/tr/view.php | 25 - .../actions/resources/lang/uk/associate.php | 45 - .../actions/resources/lang/uk/attach.php | 45 - .../actions/resources/lang/uk/create.php | 37 - .../actions/resources/lang/uk/delete.php | 61 - .../actions/resources/lang/uk/detach.php | 61 - .../actions/resources/lang/uk/dissociate.php | 61 - .../actions/resources/lang/uk/edit.php | 33 - .../resources/lang/uk/force-delete.php | 61 - .../actions/resources/lang/uk/group.php | 9 - .../actions/resources/lang/uk/modal.php | 23 - .../actions/resources/lang/uk/replicate.php | 33 - .../actions/resources/lang/uk/restore.php | 61 - .../actions/resources/lang/uk/view.php | 25 - .../actions/resources/lang/uz/associate.php | 45 - .../actions/resources/lang/uz/attach.php | 45 - .../actions/resources/lang/uz/create.php | 37 - .../actions/resources/lang/uz/delete.php | 61 - .../actions/resources/lang/uz/detach.php | 61 - .../actions/resources/lang/uz/dissociate.php | 61 - .../actions/resources/lang/uz/edit.php | 33 - .../resources/lang/uz/force-delete.php | 60 - .../actions/resources/lang/uz/group.php | 9 - .../actions/resources/lang/uz/modal.php | 23 - .../actions/resources/lang/uz/replicate.php | 33 - .../actions/resources/lang/uz/restore.php | 61 - .../actions/resources/lang/uz/view.php | 25 - .../actions/resources/lang/vi/associate.php | 45 - .../actions/resources/lang/vi/attach.php | 45 - .../actions/resources/lang/vi/create.php | 37 - .../actions/resources/lang/vi/delete.php | 61 - .../actions/resources/lang/vi/detach.php | 61 - .../actions/resources/lang/vi/dissociate.php | 61 - .../actions/resources/lang/vi/edit.php | 33 - .../resources/lang/vi/force-delete.php | 61 - .../actions/resources/lang/vi/group.php | 9 - .../actions/resources/lang/vi/import.php | 77 - .../actions/resources/lang/vi/modal.php | 23 - .../actions/resources/lang/vi/replicate.php | 33 - .../actions/resources/lang/vi/restore.php | 61 - .../actions/resources/lang/vi/view.php | 25 - .../resources/lang/zh_CN/associate.php | 45 - .../actions/resources/lang/zh_CN/attach.php | 45 - .../actions/resources/lang/zh_CN/create.php | 37 - .../actions/resources/lang/zh_CN/delete.php | 61 - .../actions/resources/lang/zh_CN/detach.php | 61 - .../resources/lang/zh_CN/dissociate.php | 61 - .../actions/resources/lang/zh_CN/edit.php | 33 - .../resources/lang/zh_CN/force-delete.php | 61 - .../actions/resources/lang/zh_CN/group.php | 9 - .../actions/resources/lang/zh_CN/import.php | 75 - .../actions/resources/lang/zh_CN/modal.php | 23 - .../resources/lang/zh_CN/replicate.php | 33 - .../actions/resources/lang/zh_CN/restore.php | 61 - .../actions/resources/lang/zh_CN/view.php | 25 - .../resources/lang/zh_TW/associate.php | 45 - .../actions/resources/lang/zh_TW/attach.php | 45 - .../actions/resources/lang/zh_TW/create.php | 37 - .../actions/resources/lang/zh_TW/delete.php | 61 - .../actions/resources/lang/zh_TW/detach.php | 61 - .../resources/lang/zh_TW/dissociate.php | 61 - .../actions/resources/lang/zh_TW/edit.php | 33 - .../resources/lang/zh_TW/force-delete.php | 61 - .../actions/resources/lang/zh_TW/group.php | 9 - .../actions/resources/lang/zh_TW/modal.php | 23 - .../resources/lang/zh_TW/replicate.php | 33 - .../actions/resources/lang/zh_TW/restore.php | 61 - .../actions/resources/lang/zh_TW/view.php | 25 - .../resources/views/badge-action.blade.php | 9 - .../resources/views/badge-group.blade.php | 9 - .../resources/views/button-action.blade.php | 13 - .../resources/views/button-group.blade.php | 13 - .../views/components/action.blade.php | 36 - .../views/components/actions.blade.php | 3 - .../views/components/group.blade.php | 124 - .../views/components/modals.blade.php | 280 - .../resources/views/grouped-action.blade.php | 10 - .../resources/views/grouped-group.blade.php | 10 - .../views/icon-button-action.blade.php | 9 - .../views/icon-button-group.blade.php | 9 - .../resources/views/link-action.blade.php | 11 - .../resources/views/link-group.blade.php | 12 - .../resources/views/select-action.blade.php | 28 - vendor/filament/actions/routes/web.php | 13 - vendor/filament/actions/src/Action.php | 96 - vendor/filament/actions/src/ActionGroup.php | 211 - .../actions/src/ActionsServiceProvider.php | 68 - .../Commands/Aliases/MakeExporterCommand.php | 12 - .../Commands/Aliases/MakeImporterCommand.php | 12 - .../Concerns/CanGenerateExporterColumns.php | 110 - .../Concerns/CanGenerateImporterColumns.php | 159 - .../src/Commands/MakeExporterCommand.php | 86 - .../src/Commands/MakeImporterCommand.php | 86 - .../src/Concerns/BelongsToLivewire.php | 22 - .../actions/src/Concerns/CanBeDisabled.php | 27 - .../actions/src/Concerns/CanBeHidden.php | 112 - .../actions/src/Concerns/CanBeLabeledFrom.php | 22 - .../actions/src/Concerns/CanBeMounted.php | 50 - .../actions/src/Concerns/CanBeOutlined.php | 22 - .../src/Concerns/CanCallParentAction.php | 20 - .../actions/src/Concerns/CanClose.php | 22 - .../src/Concerns/CanCustomizeProcess.php | 25 - .../actions/src/Concerns/CanDispatchEvent.php | 137 - .../actions/src/Concerns/CanExportRecords.php | 366 - .../actions/src/Concerns/CanImportRecords.php | 465 - .../actions/src/Concerns/CanNotify.php | 101 - .../actions/src/Concerns/CanOpenModal.php | 634 - .../actions/src/Concerns/CanOpenUrl.php | 37 - .../actions/src/Concerns/CanRedirect.php | 58 - .../src/Concerns/CanReplicateRecords.php | 129 - .../src/Concerns/CanRequireConfirmation.php | 26 - .../actions/src/Concerns/CanSubmitForm.php | 28 - .../actions/src/Concerns/HasAction.php | 52 - .../actions/src/Concerns/HasArguments.php | 61 - .../actions/src/Concerns/HasDropdown.php | 79 - .../filament/actions/src/Concerns/HasForm.php | 138 - .../actions/src/Concerns/HasGroupedIcon.php | 22 - .../filament/actions/src/Concerns/HasId.php | 20 - .../actions/src/Concerns/HasInfolist.php | 65 - .../actions/src/Concerns/HasKeyBindings.php | 34 - .../actions/src/Concerns/HasLabel.php | 64 - .../src/Concerns/HasLifecycleHooks.php | 92 - .../src/Concerns/HasMountableArguments.php | 21 - .../filament/actions/src/Concerns/HasName.php | 28 - .../actions/src/Concerns/HasParentActions.php | 27 - .../actions/src/Concerns/HasSelect.php | 75 - .../filament/actions/src/Concerns/HasSize.php | 37 - .../actions/src/Concerns/HasTooltip.php | 22 - .../actions/src/Concerns/HasWizard.php | 65 - .../src/Concerns/InteractsWithActions.php | 463 - .../src/Concerns/InteractsWithRecord.php | 205 - .../actions/src/Contracts/Groupable.php | 8 - .../actions/src/Contracts/HasActions.php | 18 - .../actions/src/Contracts/HasLivewire.php | 10 - .../actions/src/Contracts/HasRecord.php | 15 - .../src/Contracts/ReplicatesRecords.php | 13 - vendor/filament/actions/src/CreateAction.php | 134 - vendor/filament/actions/src/DeleteAction.php | 60 - vendor/filament/actions/src/EditAction.php | 69 - .../filament/actions/src/Exceptions/Hold.php | 12 - vendor/filament/actions/src/ExportAction.php | 8 - .../src/Exports/Concerns/CanFormatState.php | 149 - .../Downloaders/Contracts/Downloader.php | 11 - .../src/Exports/Downloaders/CsvDownloader.php | 37 - .../Exports/Downloaders/XlsxDownloader.php | 61 - .../src/Exports/Enums/ExportFormat.php | 32 - .../actions/src/Exports/ExportColumn.php | 142 - .../filament/actions/src/Exports/Exporter.php | 164 - .../Http/Controllers/DownloadExport.php | 22 - .../src/Exports/Jobs/CreateXlsxFile.php | 89 - .../src/Exports/Jobs/ExportCompletion.php | 79 - .../actions/src/Exports/Jobs/ExportCsv.php | 144 - .../src/Exports/Jobs/PrepareCsvExport.php | 125 - .../actions/src/Exports/Models/Export.php | 98 - .../actions/src/ForceDeleteAction.php | 56 - vendor/filament/actions/src/ImportAction.php | 8 - .../Controllers/DownloadImportFailureCsv.php | 46 - .../actions/src/Imports/ImportColumn.php | 540 - .../filament/actions/src/Imports/Importer.php | 320 - .../actions/src/Imports/Jobs/ImportCsv.php | 162 - .../src/Imports/Models/FailedImportRow.php | 38 - .../actions/src/Imports/Models/Import.php | 94 - .../actions/src/Modal/Actions/Action.php | 12 - .../filament/actions/src/MountableAction.php | 84 - .../filament/actions/src/ReplicateAction.php | 21 - vendor/filament/actions/src/RestoreAction.php | 64 - vendor/filament/actions/src/SelectAction.php | 15 - vendor/filament/actions/src/StaticAction.php | 213 - .../actions/src/Testing/TestsActions.php | 692 - vendor/filament/actions/src/ViewAction.php | 57 - vendor/filament/actions/stubs/Exporter.stub | 31 - vendor/filament/actions/stubs/Importer.stub | 41 - vendor/filament/filament/composer.json | 53 - vendor/filament/filament/dist/echo.js | 13 - vendor/filament/filament/dist/index.js | 1 - vendor/filament/filament/dist/theme.css | 1 - .../filament/filament/docs/01-installation.md | 129 - .../filament/docs/02-getting-started.md | 755 -- .../docs/03-resources/01-getting-started.md | 539 - .../docs/03-resources/02-listing-records.md | 152 - .../docs/03-resources/03-creating-records.md | 378 - .../docs/03-resources/04-editing-records.md | 365 - .../docs/03-resources/05-viewing-records.md | 198 - .../docs/03-resources/06-deleting-records.md | 114 - .../docs/03-resources/07-relation-managers.md | 1006 -- .../docs/03-resources/08-global-search.md | 157 - .../filament/docs/03-resources/09-widgets.md | 160 - .../docs/03-resources/10-custom-pages.md | 64 - .../filament/docs/03-resources/11-security.md | 22 - vendor/filament/filament/docs/04-pages.md | 352 - vendor/filament/filament/docs/05-dashboard.md | 283 - .../filament/filament/docs/06-navigation.md | 494 - .../filament/docs/07-notifications.md | 34 - vendor/filament/filament/docs/08-users.md | 331 - .../filament/docs/09-configuration.md | 248 - vendor/filament/filament/docs/10-clusters.md | 88 - vendor/filament/filament/docs/11-tenancy.md | 776 -- vendor/filament/filament/docs/12-themes.md | 256 - vendor/filament/filament/docs/13-plugins.md | 240 - vendor/filament/filament/docs/14-testing.md | 319 - .../filament/docs/15-upgrade-guide.md | 220 - .../filament/filament/resources/css/index.css | 14 - .../filament/filament/resources/css/theme.css | 1 - vendor/filament/filament/resources/js/echo.js | 5 - .../filament/filament/resources/js/index.js | 80 - .../resources/lang/ar/global-search.php | 12 - .../filament/resources/lang/ar/layout.php | 55 - .../lang/ar/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/ar/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/ar/pages/auth/register.php | 56 - .../resources/lang/ar/pages/dashboard.php | 33 - .../ar/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/ar/resources/pages/create-record.php | 37 - .../lang/ar/resources/pages/edit-record.php | 41 - .../lang/ar/resources/pages/list-records.php | 7 - .../lang/ar/resources/pages/view-record.php | 17 - .../lang/ar/widgets/account-widget.php | 15 - .../lang/ar/widgets/filament-info-widget.php | 17 - .../resources/lang/az/global-search.php | 12 - .../filament/resources/lang/az/layout.php | 55 - .../lang/az/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/az/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/az/pages/auth/register.php | 56 - .../resources/lang/az/pages/dashboard.php | 7 - .../az/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/az/resources/pages/create-record.php | 37 - .../lang/az/resources/pages/edit-record.php | 41 - .../lang/az/resources/pages/list-records.php | 7 - .../lang/az/resources/pages/view-record.php | 17 - .../lang/az/widgets/account-widget.php | 15 - .../lang/az/widgets/filament-info-widget.php | 17 - .../resources/lang/bn/global-search.php | 12 - .../filament/resources/lang/bn/layout.php | 35 - .../resources/lang/bn/pages/auth/login.php | 47 - .../resources/lang/bn/pages/dashboard.php | 7 - .../lang/bn/resources/pages/create-record.php | 37 - .../lang/bn/resources/pages/edit-record.php | 41 - .../lang/bn/resources/pages/list-records.php | 7 - .../lang/bn/resources/pages/view-record.php | 17 - .../lang/bn/widgets/account-widget.php | 15 - .../lang/bn/widgets/filament-info-widget.php | 17 - .../resources/lang/bs/global-search.php | 12 - .../filament/resources/lang/bs/layout.php | 35 - .../resources/lang/bs/pages/auth/login.php | 47 - .../resources/lang/bs/pages/dashboard.php | 7 - .../lang/bs/resources/pages/create-record.php | 37 - .../lang/bs/resources/pages/edit-record.php | 41 - .../lang/bs/resources/pages/list-records.php | 7 - .../lang/bs/resources/pages/view-record.php | 17 - .../lang/bs/widgets/account-widget.php | 15 - .../lang/bs/widgets/filament-info-widget.php | 17 - .../resources/lang/ca/global-search.php | 12 - .../filament/resources/lang/ca/layout.php | 55 - .../lang/ca/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/ca/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/ca/pages/auth/register.php | 56 - .../resources/lang/ca/pages/dashboard.php | 33 - .../ca/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/ca/resources/pages/create-record.php | 37 - .../lang/ca/resources/pages/edit-record.php | 41 - .../lang/ca/resources/pages/list-records.php | 7 - .../lang/ca/resources/pages/view-record.php | 17 - .../lang/ca/widgets/account-widget.php | 15 - .../lang/ca/widgets/filament-info-widget.php | 17 - .../resources/lang/ckb/global-search.php | 12 - .../filament/resources/lang/ckb/layout.php | 55 - .../lang/ckb/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/ckb/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../lang/ckb/pages/auth/register.php | 56 - .../resources/lang/ckb/pages/dashboard.php | 7 - .../ckb/pages/tenancy/edit-tenant-profile.php | 25 - .../ckb/resources/pages/create-record.php | 37 - .../lang/ckb/resources/pages/edit-record.php | 41 - .../lang/ckb/resources/pages/list-records.php | 7 - .../lang/ckb/resources/pages/view-record.php | 17 - .../lang/ckb/widgets/account-widget.php | 15 - .../lang/ckb/widgets/filament-info-widget.php | 17 - .../resources/lang/cs/global-search.php | 12 - .../filament/resources/lang/cs/layout.php | 55 - .../lang/cs/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/cs/pages/auth/login.php | 47 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/cs/pages/auth/register.php | 56 - .../resources/lang/cs/pages/dashboard.php | 33 - .../cs/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/cs/resources/pages/create-record.php | 37 - .../lang/cs/resources/pages/edit-record.php | 41 - .../lang/cs/resources/pages/list-records.php | 7 - .../lang/cs/resources/pages/view-record.php | 17 - .../lang/cs/widgets/account-widget.php | 15 - .../lang/cs/widgets/filament-info-widget.php | 17 - .../resources/lang/da/global-search.php | 12 - .../filament/resources/lang/da/layout.php | 55 - .../lang/da/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/da/pages/auth/login.php | 60 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/da/pages/auth/register.php | 56 - .../resources/lang/da/pages/dashboard.php | 33 - .../da/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/da/resources/pages/create-record.php | 37 - .../lang/da/resources/pages/edit-record.php | 41 - .../lang/da/resources/pages/list-records.php | 7 - .../lang/da/resources/pages/view-record.php | 17 - .../lang/da/widgets/account-widget.php | 15 - .../lang/da/widgets/filament-info-widget.php | 17 - .../resources/lang/de/global-search.php | 12 - .../filament/resources/lang/de/layout.php | 51 - .../lang/de/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 34 - .../resources/lang/de/pages/auth/login.php | 60 - .../password-reset/request-password-reset.php | 41 - .../auth/password-reset/reset-password.php | 42 - .../resources/lang/de/pages/auth/register.php | 55 - .../resources/lang/de/pages/dashboard.php | 7 - .../de/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/de/resources/pages/create-record.php | 37 - .../lang/de/resources/pages/edit-record.php | 41 - .../lang/de/resources/pages/list-records.php | 7 - .../lang/de/resources/pages/view-record.php | 17 - .../lang/de/widgets/account-widget.php | 15 - .../lang/de/widgets/filament-info-widget.php | 17 - .../resources/lang/el/global-search.php | 12 - .../filament/resources/lang/el/layout.php | 35 - .../resources/lang/el/pages/auth/login.php | 47 - .../resources/lang/el/pages/dashboard.php | 7 - .../lang/el/resources/pages/create-record.php | 37 - .../lang/el/resources/pages/edit-record.php | 41 - .../lang/el/resources/pages/list-records.php | 7 - .../lang/el/resources/pages/view-record.php | 17 - .../lang/el/widgets/account-widget.php | 15 - .../lang/el/widgets/filament-info-widget.php | 17 - .../resources/lang/en/global-search.php | 12 - .../filament/resources/lang/en/layout.php | 55 - .../lang/en/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/en/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/en/pages/auth/register.php | 56 - .../resources/lang/en/pages/dashboard.php | 33 - .../en/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/en/resources/pages/create-record.php | 37 - .../lang/en/resources/pages/edit-record.php | 41 - .../lang/en/resources/pages/list-records.php | 7 - .../lang/en/resources/pages/view-record.php | 17 - .../lang/en/widgets/account-widget.php | 15 - .../lang/en/widgets/filament-info-widget.php | 17 - .../resources/lang/es/global-search.php | 12 - .../filament/resources/lang/es/layout.php | 55 - .../lang/es/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/es/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/es/pages/auth/register.php | 56 - .../resources/lang/es/pages/dashboard.php | 33 - .../es/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/es/resources/pages/create-record.php | 37 - .../lang/es/resources/pages/edit-record.php | 41 - .../lang/es/resources/pages/list-records.php | 7 - .../lang/es/resources/pages/view-record.php | 17 - .../lang/es/widgets/account-widget.php | 15 - .../lang/es/widgets/filament-info-widget.php | 17 - .../resources/lang/fa/global-search.php | 12 - .../filament/resources/lang/fa/layout.php | 55 - .../lang/fa/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/fa/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/fa/pages/auth/register.php | 56 - .../resources/lang/fa/pages/dashboard.php | 7 - .../fa/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/fa/resources/pages/create-record.php | 37 - .../lang/fa/resources/pages/edit-record.php | 41 - .../lang/fa/resources/pages/list-records.php | 7 - .../lang/fa/resources/pages/view-record.php | 17 - .../lang/fa/widgets/account-widget.php | 15 - .../lang/fa/widgets/filament-info-widget.php | 17 - .../resources/lang/fi/global-search.php | 12 - .../filament/resources/lang/fi/layout.php | 55 - .../lang/fi/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/fi/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/fi/pages/auth/register.php | 55 - .../resources/lang/fi/pages/dashboard.php | 33 - .../fi/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/fi/resources/pages/create-record.php | 37 - .../lang/fi/resources/pages/edit-record.php | 41 - .../lang/fi/resources/pages/list-records.php | 7 - .../lang/fi/resources/pages/view-record.php | 17 - .../lang/fi/widgets/account-widget.php | 15 - .../lang/fi/widgets/filament-info-widget.php | 17 - .../resources/lang/fr/global-search.php | 12 - .../filament/resources/lang/fr/layout.php | 55 - .../lang/fr/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/fr/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/fr/pages/auth/register.php | 56 - .../resources/lang/fr/pages/dashboard.php | 33 - .../fr/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/fr/resources/pages/create-record.php | 37 - .../lang/fr/resources/pages/edit-record.php | 41 - .../lang/fr/resources/pages/list-records.php | 7 - .../lang/fr/resources/pages/view-record.php | 17 - .../lang/fr/widgets/account-widget.php | 15 - .../lang/fr/widgets/filament-info-widget.php | 17 - .../resources/lang/he/global-search.php | 12 - .../filament/resources/lang/he/layout.php | 55 - .../lang/he/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/he/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/he/pages/auth/register.php | 56 - .../resources/lang/he/pages/dashboard.php | 7 - .../he/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/he/resources/pages/create-record.php | 37 - .../lang/he/resources/pages/edit-record.php | 41 - .../lang/he/resources/pages/list-records.php | 7 - .../lang/he/resources/pages/view-record.php | 17 - .../lang/he/widgets/account-widget.php | 15 - .../lang/he/widgets/filament-info-widget.php | 17 - .../resources/lang/hi/global-search.php | 12 - .../filament/resources/lang/hi/layout.php | 31 - .../resources/lang/hi/pages/auth/login.php | 47 - .../resources/lang/hi/pages/dashboard.php | 7 - .../lang/hi/resources/pages/create-record.php | 37 - .../lang/hi/resources/pages/edit-record.php | 33 - .../lang/hi/resources/pages/list-records.php | 7 - .../lang/hi/resources/pages/view-record.php | 9 - .../lang/hi/widgets/account-widget.php | 15 - .../lang/hi/widgets/filament-info-widget.php | 17 - .../resources/lang/hr/global-search.php | 12 - .../filament/resources/lang/hr/layout.php | 55 - .../lang/hr/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/hr/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/hr/pages/auth/register.php | 56 - .../resources/lang/hr/pages/dashboard.php | 7 - .../hr/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/hr/resources/pages/create-record.php | 37 - .../lang/hr/resources/pages/edit-record.php | 41 - .../lang/hr/resources/pages/list-records.php | 7 - .../lang/hr/resources/pages/view-record.php | 17 - .../lang/hr/widgets/account-widget.php | 15 - .../lang/hr/widgets/filament-info-widget.php | 17 - .../resources/lang/hu/global-search.php | 12 - .../filament/resources/lang/hu/layout.php | 55 - .../lang/hu/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/hu/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/hu/pages/auth/register.php | 56 - .../resources/lang/hu/pages/dashboard.php | 33 - .../hu/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/hu/resources/pages/create-record.php | 37 - .../lang/hu/resources/pages/edit-record.php | 41 - .../lang/hu/resources/pages/list-records.php | 7 - .../lang/hu/resources/pages/view-record.php | 17 - .../lang/hu/widgets/account-widget.php | 15 - .../lang/hu/widgets/filament-info-widget.php | 17 - .../resources/lang/hy/global-search.php | 12 - .../filament/resources/lang/hy/layout.php | 31 - .../resources/lang/hy/pages/auth/login.php | 47 - .../resources/lang/hy/pages/dashboard.php | 7 - .../lang/hy/resources/pages/create-record.php | 37 - .../lang/hy/resources/pages/edit-record.php | 33 - .../lang/hy/resources/pages/list-records.php | 7 - .../lang/hy/resources/pages/view-record.php | 9 - .../lang/hy/widgets/account-widget.php | 15 - .../lang/hy/widgets/filament-info-widget.php | 17 - .../resources/lang/id/global-search.php | 12 - .../filament/resources/lang/id/layout.php | 55 - .../lang/id/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/id/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/id/pages/auth/register.php | 56 - .../resources/lang/id/pages/dashboard.php | 33 - .../id/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/id/resources/pages/create-record.php | 37 - .../lang/id/resources/pages/edit-record.php | 41 - .../lang/id/resources/pages/list-records.php | 7 - .../lang/id/resources/pages/view-record.php | 17 - .../lang/id/widgets/account-widget.php | 15 - .../lang/id/widgets/filament-info-widget.php | 17 - .../resources/lang/it/global-search.php | 12 - .../filament/resources/lang/it/layout.php | 55 - .../lang/it/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/it/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/it/pages/auth/register.php | 56 - .../resources/lang/it/pages/dashboard.php | 33 - .../it/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/it/resources/pages/create-record.php | 37 - .../lang/it/resources/pages/edit-record.php | 41 - .../lang/it/resources/pages/list-records.php | 7 - .../lang/it/resources/pages/view-record.php | 17 - .../lang/it/widgets/account-widget.php | 15 - .../lang/it/widgets/filament-info-widget.php | 17 - .../resources/lang/ja/global-search.php | 12 - .../filament/resources/lang/ja/layout.php | 55 - .../lang/ja/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/ja/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/ja/pages/auth/register.php | 56 - .../resources/lang/ja/pages/dashboard.php | 33 - .../ja/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/ja/resources/pages/create-record.php | 37 - .../lang/ja/resources/pages/edit-record.php | 41 - .../lang/ja/resources/pages/list-records.php | 7 - .../lang/ja/resources/pages/view-record.php | 17 - .../lang/ja/widgets/account-widget.php | 15 - .../lang/ja/widgets/filament-info-widget.php | 17 - .../resources/lang/km/global-search.php | 12 - .../filament/resources/lang/km/layout.php | 55 - .../lang/km/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/km/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/km/pages/auth/register.php | 56 - .../resources/lang/km/pages/dashboard.php | 33 - .../km/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/km/resources/pages/create-record.php | 37 - .../lang/km/resources/pages/edit-record.php | 41 - .../lang/km/resources/pages/list-records.php | 7 - .../lang/km/resources/pages/view-record.php | 17 - .../lang/km/widgets/account-widget.php | 15 - .../lang/km/widgets/filament-info-widget.php | 17 - .../resources/lang/ko/global-search.php | 12 - .../filament/resources/lang/ko/layout.php | 55 - .../lang/ko/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/ko/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/ko/pages/auth/register.php | 56 - .../resources/lang/ko/pages/dashboard.php | 7 - .../ko/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/ko/resources/pages/create-record.php | 37 - .../lang/ko/resources/pages/edit-record.php | 41 - .../lang/ko/resources/pages/list-records.php | 7 - .../lang/ko/resources/pages/view-record.php | 17 - .../lang/ko/widgets/account-widget.php | 15 - .../lang/ko/widgets/filament-info-widget.php | 17 - .../resources/lang/ku/global-search.php | 12 - .../filament/resources/lang/ku/layout.php | 55 - .../lang/ku/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/ku/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/ku/pages/auth/register.php | 56 - .../resources/lang/ku/pages/dashboard.php | 7 - .../ku/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/ku/resources/pages/create-record.php | 37 - .../lang/ku/resources/pages/edit-record.php | 41 - .../lang/ku/resources/pages/list-records.php | 7 - .../lang/ku/resources/pages/view-record.php | 17 - .../lang/ku/widgets/account-widget.php | 15 - .../lang/ku/widgets/filament-info-widget.php | 17 - .../resources/lang/lt/global-search.php | 12 - .../filament/resources/lang/lt/layout.php | 55 - .../lang/lt/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/lt/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/lt/pages/auth/register.php | 56 - .../resources/lang/lt/pages/dashboard.php | 7 - .../lt/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/lt/resources/pages/create-record.php | 37 - .../lang/lt/resources/pages/edit-record.php | 41 - .../lang/lt/resources/pages/list-records.php | 7 - .../lang/lt/resources/pages/view-record.php | 17 - .../lang/lt/widgets/account-widget.php | 15 - .../lang/lt/widgets/filament-info-widget.php | 17 - .../resources/lang/lv/global-search.php | 12 - .../filament/resources/lang/lv/layout.php | 55 - .../lang/lv/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/lv/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/lv/pages/auth/register.php | 56 - .../resources/lang/lv/pages/dashboard.php | 7 - .../lv/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/lv/resources/pages/create-record.php | 37 - .../lang/lv/resources/pages/edit-record.php | 41 - .../lang/lv/resources/pages/list-records.php | 7 - .../lang/lv/resources/pages/view-record.php | 17 - .../lang/lv/widgets/account-widget.php | 15 - .../lang/lv/widgets/filament-info-widget.php | 17 - .../resources/lang/ms/global-search.php | 12 - .../filament/resources/lang/ms/layout.php | 55 - .../lang/ms/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/ms/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/ms/pages/auth/register.php | 56 - .../resources/lang/ms/pages/dashboard.php | 33 - .../ms/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/ms/resources/pages/create-record.php | 37 - .../lang/ms/resources/pages/edit-record.php | 41 - .../lang/ms/resources/pages/list-records.php | 7 - .../lang/ms/resources/pages/view-record.php | 17 - .../lang/ms/widgets/account-widget.php | 15 - .../lang/ms/widgets/filament-info-widget.php | 17 - .../resources/lang/my/global-search.php | 12 - .../filament/resources/lang/my/layout.php | 31 - .../resources/lang/my/pages/auth/login.php | 47 - .../resources/lang/my/pages/dashboard.php | 7 - .../lang/my/resources/pages/create-record.php | 37 - .../lang/my/resources/pages/edit-record.php | 33 - .../lang/my/resources/pages/list-records.php | 7 - .../lang/my/resources/pages/view-record.php | 7 - .../lang/my/widgets/account-widget.php | 15 - .../lang/my/widgets/filament-info-widget.php | 17 - .../resources/lang/nl/global-search.php | 12 - .../filament/resources/lang/nl/layout.php | 55 - .../lang/nl/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 36 - .../resources/lang/nl/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/nl/pages/auth/register.php | 56 - .../resources/lang/nl/pages/dashboard.php | 33 - .../nl/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/nl/resources/pages/create-record.php | 37 - .../lang/nl/resources/pages/edit-record.php | 41 - .../lang/nl/resources/pages/list-records.php | 7 - .../lang/nl/resources/pages/view-record.php | 17 - .../lang/nl/widgets/account-widget.php | 15 - .../lang/nl/widgets/filament-info-widget.php | 17 - .../resources/lang/no/global-search.php | 12 - .../filament/resources/lang/no/layout.php | 55 - .../lang/no/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/no/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/no/pages/auth/register.php | 56 - .../resources/lang/no/pages/dashboard.php | 7 - .../no/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/no/resources/pages/create-record.php | 37 - .../lang/no/resources/pages/edit-record.php | 41 - .../lang/no/resources/pages/list-records.php | 7 - .../lang/no/resources/pages/view-record.php | 17 - .../lang/no/widgets/account-widget.php | 15 - .../lang/no/widgets/filament-info-widget.php | 17 - .../resources/lang/np/global-search.php | 12 - .../filament/resources/lang/np/layout.php | 55 - .../lang/np/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/np/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/np/pages/auth/register.php | 56 - .../resources/lang/np/pages/dashboard.php | 7 - .../np/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/np/resources/pages/create-record.php | 37 - .../lang/np/resources/pages/edit-record.php | 41 - .../lang/np/resources/pages/list-records.php | 7 - .../lang/np/resources/pages/view-record.php | 17 - .../lang/np/widgets/account-widget.php | 15 - .../lang/np/widgets/filament-info-widget.php | 17 - .../resources/lang/pl/global-search.php | 12 - .../filament/resources/lang/pl/layout.php | 55 - .../lang/pl/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/pl/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/pl/pages/auth/register.php | 56 - .../resources/lang/pl/pages/dashboard.php | 7 - .../pl/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/pl/resources/pages/create-record.php | 37 - .../lang/pl/resources/pages/edit-record.php | 41 - .../lang/pl/resources/pages/list-records.php | 7 - .../lang/pl/resources/pages/view-record.php | 17 - .../lang/pl/widgets/account-widget.php | 15 - .../lang/pl/widgets/filament-info-widget.php | 17 - .../resources/lang/pt_BR/global-search.php | 12 - .../filament/resources/lang/pt_BR/layout.php | 55 - .../lang/pt_BR/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/pt_BR/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../lang/pt_BR/pages/auth/register.php | 56 - .../resources/lang/pt_BR/pages/dashboard.php | 33 - .../pages/tenancy/edit-tenant-profile.php | 25 - .../pt_BR/resources/pages/create-record.php | 37 - .../pt_BR/resources/pages/edit-record.php | 41 - .../pt_BR/resources/pages/list-records.php | 7 - .../pt_BR/resources/pages/view-record.php | 17 - .../lang/pt_BR/widgets/account-widget.php | 15 - .../pt_BR/widgets/filament-info-widget.php | 17 - .../resources/lang/pt_PT/global-search.php | 12 - .../filament/resources/lang/pt_PT/layout.php | 55 - .../lang/pt_PT/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/pt_PT/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../lang/pt_PT/pages/auth/register.php | 56 - .../resources/lang/pt_PT/pages/dashboard.php | 33 - .../pages/tenancy/edit-tenant-profile.php | 25 - .../pt_PT/resources/pages/create-record.php | 37 - .../pt_PT/resources/pages/edit-record.php | 41 - .../pt_PT/resources/pages/list-records.php | 7 - .../pt_PT/resources/pages/view-record.php | 17 - .../lang/pt_PT/widgets/account-widget.php | 15 - .../pt_PT/widgets/filament-info-widget.php | 17 - .../resources/lang/ro/global-search.php | 12 - .../filament/resources/lang/ro/layout.php | 55 - .../lang/ro/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/ro/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/ro/pages/auth/register.php | 56 - .../resources/lang/ro/pages/dashboard.php | 7 - .../ro/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/ro/resources/pages/create-record.php | 37 - .../lang/ro/resources/pages/edit-record.php | 41 - .../lang/ro/resources/pages/list-records.php | 7 - .../lang/ro/resources/pages/view-record.php | 17 - .../lang/ro/widgets/account-widget.php | 15 - .../lang/ro/widgets/filament-info-widget.php | 17 - .../resources/lang/ru/global-search.php | 12 - .../filament/resources/lang/ru/layout.php | 55 - .../lang/ru/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/ru/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/ru/pages/auth/register.php | 56 - .../resources/lang/ru/pages/dashboard.php | 7 - .../ru/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/ru/resources/pages/create-record.php | 37 - .../lang/ru/resources/pages/edit-record.php | 41 - .../lang/ru/resources/pages/list-records.php | 7 - .../lang/ru/resources/pages/view-record.php | 17 - .../lang/ru/widgets/account-widget.php | 15 - .../lang/ru/widgets/filament-info-widget.php | 17 - .../resources/lang/sk/global-search.php | 12 - .../filament/resources/lang/sk/layout.php | 55 - .../lang/sk/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/sk/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/sk/pages/auth/register.php | 56 - .../resources/lang/sk/pages/dashboard.php | 7 - .../sk/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/sk/resources/pages/create-record.php | 37 - .../lang/sk/resources/pages/edit-record.php | 41 - .../lang/sk/resources/pages/list-records.php | 7 - .../lang/sk/resources/pages/view-record.php | 17 - .../lang/sk/widgets/account-widget.php | 15 - .../lang/sk/widgets/filament-info-widget.php | 17 - .../resources/lang/sq/global-search.php | 12 - .../filament/resources/lang/sq/layout.php | 55 - .../lang/sq/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/sq/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/sq/pages/auth/register.php | 56 - .../resources/lang/sq/pages/dashboard.php | 7 - .../sq/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/sq/resources/pages/create-record.php | 37 - .../lang/sq/resources/pages/edit-record.php | 41 - .../lang/sq/resources/pages/list-records.php | 7 - .../lang/sq/resources/pages/view-record.php | 17 - .../lang/sq/widgets/account-widget.php | 15 - .../lang/sq/widgets/filament-info-widget.php | 17 - .../resources/lang/sv/global-search.php | 12 - .../filament/resources/lang/sv/layout.php | 55 - .../lang/sv/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/sv/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/sv/pages/auth/register.php | 56 - .../resources/lang/sv/pages/dashboard.php | 7 - .../sv/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/sv/resources/pages/create-record.php | 37 - .../lang/sv/resources/pages/edit-record.php | 41 - .../lang/sv/resources/pages/list-records.php | 7 - .../lang/sv/resources/pages/view-record.php | 17 - .../lang/sv/widgets/account-widget.php | 15 - .../lang/sv/widgets/filament-info-widget.php | 17 - .../resources/lang/sw/global-search.php | 12 - .../filament/resources/lang/sw/layout.php | 35 - .../resources/lang/sw/pages/auth/login.php | 47 - .../resources/lang/sw/pages/dashboard.php | 7 - .../lang/sw/resources/pages/create-record.php | 37 - .../lang/sw/resources/pages/edit-record.php | 41 - .../lang/sw/resources/pages/list-records.php | 7 - .../lang/sw/resources/pages/view-record.php | 17 - .../lang/sw/widgets/account-widget.php | 15 - .../lang/sw/widgets/filament-info-widget.php | 17 - .../resources/lang/tr/global-search.php | 12 - .../filament/resources/lang/tr/layout.php | 55 - .../lang/tr/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/tr/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/tr/pages/auth/register.php | 56 - .../resources/lang/tr/pages/dashboard.php | 7 - .../tr/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/tr/resources/pages/create-record.php | 37 - .../lang/tr/resources/pages/edit-record.php | 41 - .../lang/tr/resources/pages/list-records.php | 7 - .../lang/tr/resources/pages/view-record.php | 17 - .../lang/tr/widgets/account-widget.php | 15 - .../lang/tr/widgets/filament-info-widget.php | 17 - .../resources/lang/uk/global-search.php | 12 - .../filament/resources/lang/uk/layout.php | 55 - .../lang/uk/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/uk/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/uk/pages/auth/register.php | 56 - .../resources/lang/uk/pages/dashboard.php | 7 - .../uk/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/uk/resources/pages/create-record.php | 37 - .../lang/uk/resources/pages/edit-record.php | 41 - .../lang/uk/resources/pages/list-records.php | 7 - .../lang/uk/resources/pages/view-record.php | 17 - .../lang/uk/widgets/account-widget.php | 15 - .../lang/uk/widgets/filament-info-widget.php | 17 - .../resources/lang/uz/global-search.php | 12 - .../filament/resources/lang/uz/layout.php | 55 - .../lang/uz/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/uz/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/uz/pages/auth/register.php | 56 - .../resources/lang/uz/pages/dashboard.php | 33 - .../uz/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/uz/resources/pages/create-record.php | 37 - .../lang/uz/resources/pages/edit-record.php | 41 - .../lang/uz/resources/pages/list-records.php | 7 - .../lang/uz/resources/pages/view-record.php | 17 - .../lang/uz/widgets/account-widget.php | 15 - .../lang/uz/widgets/filament-info-widget.php | 17 - .../resources/lang/vi/global-search.php | 12 - .../filament/resources/lang/vi/layout.php | 55 - .../lang/vi/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/vi/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../resources/lang/vi/pages/auth/register.php | 55 - .../resources/lang/vi/pages/dashboard.php | 32 - .../vi/pages/tenancy/edit-tenant-profile.php | 25 - .../lang/vi/resources/pages/create-record.php | 37 - .../lang/vi/resources/pages/edit-record.php | 41 - .../lang/vi/resources/pages/list-records.php | 7 - .../lang/vi/resources/pages/view-record.php | 17 - .../lang/vi/widgets/account-widget.php | 15 - .../lang/vi/widgets/filament-info-widget.php | 17 - .../resources/lang/zh_CN/global-search.php | 12 - .../filament/resources/lang/zh_CN/layout.php | 55 - .../lang/zh_CN/pages/auth/edit-profile.php | 51 - .../email-verification-prompt.php | 35 - .../resources/lang/zh_CN/pages/auth/login.php | 61 - .../password-reset/request-password-reset.php | 42 - .../auth/password-reset/reset-password.php | 43 - .../lang/zh_CN/pages/auth/register.php | 56 - .../resources/lang/zh_CN/pages/dashboard.php | 7 - .../pages/tenancy/edit-tenant-profile.php | 25 - .../zh_CN/resources/pages/create-record.php | 37 - .../zh_CN/resources/pages/edit-record.php | 37 - .../zh_CN/resources/pages/list-records.php | 7 - .../zh_CN/resources/pages/view-record.php | 17 - .../lang/zh_CN/widgets/account-widget.php | 15 - .../zh_CN/widgets/filament-info-widget.php | 17 - .../resources/lang/zh_TW/global-search.php | 12 - .../filament/resources/lang/zh_TW/layout.php | 31 - .../resources/lang/zh_TW/pages/auth/login.php | 47 - .../resources/lang/zh_TW/pages/dashboard.php | 7 - .../zh_TW/resources/pages/create-record.php | 37 - .../zh_TW/resources/pages/edit-record.php | 33 - .../zh_TW/resources/pages/list-records.php | 7 - .../zh_TW/resources/pages/view-record.php | 9 - .../lang/zh_TW/widgets/account-widget.php | 15 - .../zh_TW/widgets/filament-info-widget.php | 17 - .../views/components/avatar/tenant.blade.php | 12 - .../views/components/avatar/user.blade.php | 11 - .../views/components/form/actions.blade.php | 34 - .../views/components/form/index.blade.php | 9 - .../global-search/actions.blade.php | 13 - .../components/global-search/field.blade.php | 38 - .../components/global-search/index.blade.php | 19 - .../no-results-message.blade.php | 5 - .../global-search/result-group.blade.php | 29 - .../components/global-search/result.blade.php | 39 - .../global-search/results-container.blade.php | 50 - .../views/components/header/index.blade.php | 47 - .../views/components/header/simple.blade.php | 27 - .../views/components/layout/base.blade.php | 154 - .../views/components/layout/index.blade.php | 93 - .../views/components/layout/simple.blade.php | 52 - .../resources/views/components/logo.blade.php | 58 - .../views/components/page/index.blade.php | 132 - .../views/components/page/simple.blade.php | 20 - .../page/sub-navigation/select.blade.php | 43 - .../page/sub-navigation/sidebar.blade.php | 20 - .../page/sub-navigation/tabs.blade.php | 63 - .../page/unsaved-data-changes-alert.blade.php | 23 - .../resources/relation-managers.blade.php | 111 - .../views/components/resources/tabs.blade.php | 31 - .../views/components/sidebar/group.blade.php | 90 - .../views/components/sidebar/index.blade.php | 175 - .../views/components/sidebar/item.blade.php | 153 - .../views/components/tenant-menu.blade.php | 161 - .../theme-switcher/button.blade.php | 30 - .../components/theme-switcher/index.blade.php | 26 - .../database-notifications-trigger.blade.php | 9 - .../views/components/topbar/index.blade.php | 148 - .../views/components/topbar/item.blade.php | 77 - .../unsaved-action-changes-alert.blade.php | 31 - .../views/components/user-menu.blade.php | 93 - .../views/pages/auth/edit-profile.blade.php | 10 - .../email-verification-prompt.blade.php | 15 - .../views/pages/auth/login.blade.php | 22 - .../request-password-reset.blade.php | 20 - .../password-reset/reset-password.blade.php | 14 - .../views/pages/auth/register.blade.php | 22 - .../resources/views/pages/dashboard.blade.php | 16 - .../tenancy/edit-tenant-profile.blade.php | 10 - .../pages/tenancy/register-tenant.blade.php | 10 - .../resources/pages/create-record.blade.php | 20 - .../resources/pages/edit-record.blade.php | 49 - .../resources/pages/list-records.blade.php | 16 - .../pages/manage-related-records.blade.php | 28 - .../resources/pages/view-record.blade.php | 45 - .../resources/relation-manager.blade.php | 11 - .../views/widgets/account-widget.blade.php | 42 - .../widgets/filament-info-widget.blade.php | 70 - vendor/filament/filament/routes/web.php | 135 - .../Contracts/AvatarProvider.php | 10 - .../src/AvatarProviders/UiAvatarsProvider.php | 25 - .../Billing/Providers/Contracts/Provider.php | 15 - .../filament/src/Clusters/Cluster.php | 130 - .../Commands/Aliases/MakeClusterCommand.php | 12 - .../src/Commands/Aliases/MakePageCommand.php | 12 - .../src/Commands/Aliases/MakePanelCommand.php | 12 - .../Aliases/MakeRelationManagerCommand.php | 12 - .../Commands/Aliases/MakeResourceCommand.php | 12 - .../src/Commands/Aliases/MakeThemeCommand.php | 12 - .../src/Commands/Aliases/MakeUserCommand.php | 12 - .../src/Commands/MakeClusterCommand.php | 102 - .../filament/src/Commands/MakePageCommand.php | 310 - .../src/Commands/MakePanelCommand.php | 40 - .../Commands/MakeRelationManagerCommand.php | 189 - .../src/Commands/MakeResourceCommand.php | 293 - .../src/Commands/MakeThemeCommand.php | 123 - .../filament/src/Commands/MakeUserCommand.php | 103 - .../filament/src/Contracts/Plugin.php | 14 - .../filament/filament/src/Enums/ThemeMode.php | 12 - .../filament/src/Events/Auth/Registered.php | 21 - .../filament/src/Events/ServingFilament.php | 10 - .../filament/src/Events/TenantSet.php | 29 - .../Exceptions/NoDefaultPanelSetException.php | 19 - .../filament/src/Facades/Filament.php | 137 - .../filament/filament/src/FilamentManager.php | 853 -- .../filament/src/FilamentServiceProvider.php | 125 - .../src/FontProviders/BunnyFontProvider.php | 20 - .../FontProviders/Contracts/FontProvider.php | 10 - .../src/FontProviders/GoogleFontProvider.php | 21 - .../src/FontProviders/LocalFontProvider.php | 20 - .../src/GlobalSearch/Actions/Action.php | 18 - .../Contracts/GlobalSearchProvider.php | 10 - .../DefaultGlobalSearchProvider.php | 29 - .../src/GlobalSearch/GlobalSearchResult.php | 21 - .../src/GlobalSearch/GlobalSearchResults.php | 36 - .../Auth/EmailVerificationController.php | 16 - .../Controllers/Auth/LogoutController.php | 19 - .../Controllers/RedirectToHomeController.php | 22 - .../RedirectToTenantController.php | 37 - .../filament/src/Http/Livewire/Auth/Login.php | 10 - .../src/Http/Middleware/Authenticate.php | 44 - .../Middleware/DisableBladeIconComponents.php | 16 - .../DispatchServingFilamentEvent.php | 17 - .../src/Http/Middleware/IdentifyTenant.php | 42 - .../src/Http/Middleware/SetUpPanel.php | 21 - .../Contracts/EmailVerificationResponse.php | 9 - .../Auth/Contracts/LoginResponse.php | 9 - .../Auth/Contracts/LogoutResponse.php | 9 - .../Auth/Contracts/PasswordResetResponse.php | 9 - .../Auth/Contracts/RegistrationResponse.php | 9 - .../Auth/EmailVerificationResponse.php | 16 - .../src/Http/Responses/Auth/LoginResponse.php | 16 - .../Http/Responses/Auth/LogoutResponse.php | 17 - .../Responses/Auth/PasswordResetResponse.php | 18 - .../Responses/Auth/RegistrationResponse.php | 16 - .../src/Livewire/DatabaseNotifications.php | 27 - .../filament/src/Livewire/GlobalSearch.php | 39 - .../filament/src/Livewire/Notifications.php | 16 - .../src/Models/Contracts/FilamentUser.php | 10 - .../src/Models/Contracts/HasAvatar.php | 8 - .../Contracts/HasCurrentTenantLabel.php | 8 - .../src/Models/Contracts/HasDefaultTenant.php | 11 - .../filament/src/Models/Contracts/HasName.php | 8 - .../src/Models/Contracts/HasTenants.php | 17 - .../filament/src/Navigation/MenuItem.php | 148 - .../src/Navigation/NavigationBuilder.php | 98 - .../src/Navigation/NavigationGroup.php | 155 - .../src/Navigation/NavigationItem.php | 274 - .../filament/src/Navigation/UserMenuItem.php | 10 - .../src/Notifications/Auth/ResetPassword.php | 19 - .../src/Notifications/Auth/VerifyEmail.php | 19 - .../filament/src/Pages/Actions/Action.php | 12 - .../src/Pages/Actions/ActionGroup.php | 12 - .../src/Pages/Actions/ButtonAction.php | 12 - .../src/Pages/Actions/CreateAction.php | 12 - .../src/Pages/Actions/DeleteAction.php | 12 - .../filament/src/Pages/Actions/EditAction.php | 12 - .../src/Pages/Actions/ForceDeleteAction.php | 12 - .../Pages/Actions/Modal/Actions/Action.php | 12 - .../Actions/Modal/Actions/ButtonAction.php | 12 - .../src/Pages/Actions/ReplicateAction.php | 12 - .../src/Pages/Actions/RestoreAction.php | 12 - .../src/Pages/Actions/SelectAction.php | 12 - .../filament/src/Pages/Actions/ViewAction.php | 12 - .../filament/src/Pages/Auth/EditProfile.php | 306 - .../EmailVerificationPrompt.php | 92 - .../filament/src/Pages/Auth/Login.php | 203 - .../PasswordReset/RequestPasswordReset.php | 179 - .../Auth/PasswordReset/ResetPassword.php | 189 - .../filament/src/Pages/Auth/Register.php | 234 - .../filament/filament/src/Pages/BasePage.php | 199 - .../src/Pages/Concerns/CanAuthorizeAccess.php | 16 - .../Pages/Concerns/ExposesTableToWidgets.php | 22 - .../filament/src/Pages/Concerns/HasRoutes.php | 96 - .../src/Pages/Concerns/HasSubNavigation.php | 154 - .../Concerns/HasUnsavedDataChangesAlert.php | 33 - .../Concerns/InteractsWithFormActions.php | 72 - .../Concerns/InteractsWithHeaderActions.php | 77 - .../filament/filament/src/Pages/Dashboard.php | 69 - .../Pages/Dashboard/Actions/FilterAction.php | 54 - .../Pages/Dashboard/Concerns/HasFilters.php | 90 - .../Dashboard/Concerns/HasFiltersAction.php | 8 - .../Dashboard/Concerns/HasFiltersForm.php | 38 - vendor/filament/filament/src/Pages/Page.php | 318 - .../filament/src/Pages/SimplePage.php | 29 - .../src/Pages/SubNavigationPosition.php | 12 - .../src/Pages/Tenancy/EditTenantProfile.php | 217 - .../src/Pages/Tenancy/RegisterTenant.php | 179 - vendor/filament/filament/src/Panel.php | 104 - .../filament/src/Panel/Concerns/HasAssets.php | 34 - .../filament/src/Panel/Concerns/HasAuth.php | 464 - .../src/Panel/Concerns/HasAvatars.php | 22 - .../src/Panel/Concerns/HasBrandLogo.php | 52 - .../src/Panel/Concerns/HasBrandName.php | 23 - .../src/Panel/Concerns/HasBreadcrumbs.php | 20 - .../filament/src/Panel/Concerns/HasColors.php | 41 - .../src/Panel/Concerns/HasComponents.php | 564 - .../src/Panel/Concerns/HasDarkMode.php | 28 - .../src/Panel/Concerns/HasFavicon.php | 22 - .../filament/src/Panel/Concerns/HasFont.php | 50 - .../src/Panel/Concerns/HasGlobalSearch.php | 61 - .../filament/src/Panel/Concerns/HasIcons.php | 32 - .../filament/src/Panel/Concerns/HasId.php | 20 - .../src/Panel/Concerns/HasMaxContentWidth.php | 22 - .../src/Panel/Concerns/HasMiddleware.php | 130 - .../src/Panel/Concerns/HasNavigation.php | 195 - .../src/Panel/Concerns/HasNotifications.php | 36 - .../src/Panel/Concerns/HasPlugins.php | 52 - .../src/Panel/Concerns/HasRenderHooks.php | 41 - .../filament/src/Panel/Concerns/HasRoutes.php | 196 - .../src/Panel/Concerns/HasSidebar.php | 76 - .../src/Panel/Concerns/HasSpaMode.php | 22 - .../src/Panel/Concerns/HasTenancy.php | 260 - .../filament/src/Panel/Concerns/HasTheme.php | 81 - .../src/Panel/Concerns/HasTopNavigation.php | 20 - .../filament/src/Panel/Concerns/HasTopbar.php | 20 - .../Concerns/HasUnsavedChangesAlerts.php | 29 - .../src/Panel/Concerns/HasUserMenu.php | 37 - .../filament/filament/src/PanelProvider.php | 18 - .../filament/src/Resources/Components/Tab.php | 65 - .../src/Resources/Concerns/HasTabs.php | 73 - .../InteractsWithRelationshipTable.php | 111 - .../Concerns/CanAuthorizeResourceAccess.php | 16 - .../Pages/Concerns/HasRelationManagers.php | 71 - .../Resources/Pages/Concerns/HasWizard.php | 47 - .../Pages/Concerns/InteractsWithRecord.php | 131 - .../src/Resources/Pages/CreateRecord.php | 309 - .../Pages/CreateRecord/Concerns/HasWizard.php | 10 - .../src/Resources/Pages/EditRecord.php | 340 - .../Pages/EditRecord/Concerns/HasWizard.php | 10 - .../src/Resources/Pages/ListRecords.php | 341 - .../src/Resources/Pages/ListRecords/Tab.php | 12 - .../src/Resources/Pages/ManageRecords.php | 15 - .../Resources/Pages/ManageRelatedRecords.php | 396 - .../filament/src/Resources/Pages/Page.php | 191 - .../src/Resources/Pages/PageRegistration.php | 26 - .../src/Resources/Pages/ViewRecord.php | 234 - .../RelationManagers/RelationGroup.php | 168 - .../RelationManagers/RelationManager.php | 542 - .../RelationManagerConfiguration.php | 16 - .../filament/src/Resources/Resource.php | 936 -- .../src/View/LegacyComponents/Page.php | 14 - .../src/View/LegacyComponents/Widget.php | 14 - .../filament/src/Widgets/AccountWidget.php | 15 - .../Concerns/InteractsWithPageFilters.php | 14 - .../Concerns/InteractsWithPageTable.php | 96 - .../src/Widgets/FilamentInfoWidget.php | 15 - .../filament/filament/src/global_helpers.php | 18 - vendor/filament/filament/src/helpers.php | 49 - vendor/filament/filament/stubs/Cluster.stub | 10 - .../filament/stubs/CustomResourcePage.stub | 13 - vendor/filament/filament/stubs/Page.stub | 12 - vendor/filament/filament/stubs/PageView.stub | 3 - .../filament/stubs/RelationManager.stub | 49 - vendor/filament/filament/stubs/Resource.stub | 55 - .../filament/stubs/ResourceEditPage.stub | 19 - .../filament/stubs/ResourceListPage.stub | 19 - .../filament/stubs/ResourceManagePage.stub | 19 - .../ResourceManageRelatedRecordsPage.stub | 60 - .../filament/filament/stubs/ResourcePage.stub | 12 - .../filament/stubs/ResourceViewPage.stub | 19 - vendor/filament/filament/stubs/ThemeCss.stub | 3 - .../filament/stubs/ThemePostcssConfig.stub | 7 - .../filament/stubs/ThemeTailwindConfig.stub | 10 - vendor/filament/filament/tailwind.config.js | 6 - .../filament/tailwind.config.preset.js | 8 - vendor/filament/forms/.stubs.php | 89 - vendor/filament/forms/composer.json | 44 - .../forms/dist/components/color-picker.js | 1 - .../forms/dist/components/date-time-picker.js | 1 - .../forms/dist/components/file-upload.js | 123 - .../forms/dist/components/key-value.js | 1 - .../forms/dist/components/markdown-editor.js | 51 - .../forms/dist/components/rich-editor.js | 143 - .../filament/forms/dist/components/select.js | 6 - .../forms/dist/components/tags-input.js | 1 - .../forms/dist/components/textarea.js | 1 - vendor/filament/forms/dist/index.css | 49 - vendor/filament/forms/dist/index.js | 1 - vendor/filament/forms/docs/01-installation.md | 179 - .../filament/forms/docs/02-getting-started.md | 213 - .../docs/03-fields/01-getting-started.md | 328 - .../forms/docs/03-fields/02-text-input.md | 290 - .../forms/docs/03-fields/03-select.md | 605 - .../forms/docs/03-fields/04-checkbox.md | 81 - .../forms/docs/03-fields/05-toggle.md | 113 - .../forms/docs/03-fields/06-checkbox-list.md | 308 - .../filament/forms/docs/03-fields/07-radio.md | 117 - .../docs/03-fields/08-date-time-picker.md | 250 - .../forms/docs/03-fields/09-file-upload.md | 442 - .../forms/docs/03-fields/10-rich-editor.md | 69 - .../docs/03-fields/11-markdown-editor.md | 68 - .../forms/docs/03-fields/12-repeater.md | 665 - .../forms/docs/03-fields/13-builder.md | 465 - .../forms/docs/03-fields/14-tags-input.md | 122 - .../forms/docs/03-fields/15-textarea.md | 81 - .../forms/docs/03-fields/16-key-value.md | 175 - .../forms/docs/03-fields/17-color-picker.md | 35 - .../forms/docs/03-fields/18-toggle-buttons.md | 213 - .../forms/docs/03-fields/19-hidden.md | 15 - .../forms/docs/03-fields/20-custom.md | 141 - .../docs/04-layout/01-getting-started.md | 88 - .../filament/forms/docs/04-layout/02-grid.md | 102 - .../forms/docs/04-layout/03-fieldset.md | 33 - .../filament/forms/docs/04-layout/04-tabs.md | 241 - .../forms/docs/04-layout/05-wizard.md | 204 - .../forms/docs/04-layout/06-section.md | 196 - .../filament/forms/docs/04-layout/07-split.md | 33 - .../forms/docs/04-layout/08-custom.md | 73 - .../forms/docs/04-layout/08-placeholder.md | 46 - vendor/filament/forms/docs/05-validation.md | 587 - vendor/filament/forms/docs/06-actions.md | 243 - vendor/filament/forms/docs/07-advanced.md | 688 - ...8-adding-a-form-to-a-livewire-component.md | 333 - vendor/filament/forms/docs/09-testing.md | 435 - .../filament/forms/docs/10-upgrade-guide.md | 106 - .../css/components/date-time-picker.css | 7 - .../resources/css/components/file-upload.css | 73 - .../css/components/markdown-editor.css | 298 - .../resources/css/components/rich-editor.css | 52 - .../forms/resources/css/components/select.css | 171 - .../resources/css/components/tags-input.css | 3 - .../resources/js/components/color-picker.js | 90 - .../js/components/date-time-picker.js | 515 - .../resources/js/components/file-upload.js | 765 -- .../resources/js/components/key-value.js | 110 - .../js/components/markdown-editor.js | 366 - .../js/components/markdown-editor/EasyMDE.js | 3467 ----- .../resources/js/components/rich-editor.js | 68 - .../forms/resources/js/components/select.js | 314 - .../resources/js/components/tags-input.js | 72 - .../forms/resources/js/components/textarea.js | 14 - vendor/filament/forms/resources/js/index.js | 6 - .../forms/resources/lang/ar/components.php | 438 - .../forms/resources/lang/ar/validation.php | 10 - .../forms/resources/lang/az/components.php | 416 - .../forms/resources/lang/bn/components.php | 271 - .../forms/resources/lang/bs/components.php | 271 - .../forms/resources/lang/ca/components.php | 463 - .../forms/resources/lang/ca/validation.php | 10 - .../forms/resources/lang/ckb/components.php | 416 - .../forms/resources/lang/cs/components.php | 438 - .../forms/resources/lang/cs/validation.php | 10 - .../forms/resources/lang/cy/components.php | 271 - .../forms/resources/lang/da/components.php | 462 - .../forms/resources/lang/da/validation.php | 10 - .../forms/resources/lang/de/components.php | 271 - .../forms/resources/lang/en/components.php | 463 - .../forms/resources/lang/en/validation.php | 10 - .../forms/resources/lang/es/components.php | 463 - .../forms/resources/lang/es/validation.php | 10 - .../forms/resources/lang/eu/components.php | 293 - .../forms/resources/lang/fa/components.php | 416 - .../forms/resources/lang/fi/components.php | 463 - .../forms/resources/lang/fi/validation.php | 10 - .../forms/resources/lang/fr/components.php | 438 - .../forms/resources/lang/fr/validation.php | 10 - .../forms/resources/lang/he/components.php | 412 - .../forms/resources/lang/hi/components.php | 150 - .../forms/resources/lang/hr/components.php | 416 - .../forms/resources/lang/hu/components.php | 438 - .../forms/resources/lang/hu/validation.php | 10 - .../forms/resources/lang/hy/components.php | 229 - .../forms/resources/lang/id/components.php | 463 - .../forms/resources/lang/id/validation.php | 10 - .../forms/resources/lang/it/components.php | 439 - .../forms/resources/lang/it/validation.php | 10 - .../forms/resources/lang/ja/components.php | 438 - .../forms/resources/lang/ja/validation.php | 10 - .../forms/resources/lang/ka/components.php | 53 - .../forms/resources/lang/km/components.php | 463 - .../forms/resources/lang/km/validation.php | 10 - .../forms/resources/lang/ko/components.php | 420 - .../forms/resources/lang/ku/components.php | 416 - .../forms/resources/lang/lt/components.php | 416 - .../forms/resources/lang/lv/components.php | 429 - .../forms/resources/lang/mn/components.php | 271 - .../forms/resources/lang/ms/components.php | 438 - .../forms/resources/lang/ms/validation.php | 10 - .../forms/resources/lang/my/components.php | 154 - .../forms/resources/lang/nl/components.php | 463 - .../forms/resources/lang/nl/validation.php | 10 - .../forms/resources/lang/no/components.php | 416 - .../forms/resources/lang/np/components.php | 416 - .../forms/resources/lang/pl/components.php | 416 - .../forms/resources/lang/pt_BR/components.php | 463 - .../forms/resources/lang/pt_BR/validation.php | 10 - .../forms/resources/lang/pt_PT/components.php | 463 - .../forms/resources/lang/pt_PT/validation.php | 10 - .../forms/resources/lang/ro/components.php | 462 - .../forms/resources/lang/ro/validation.php | 10 - .../forms/resources/lang/ru/components.php | 426 - .../forms/resources/lang/sk/components.php | 429 - .../forms/resources/lang/sq/components.php | 416 - .../forms/resources/lang/sv/components.php | 429 - .../forms/resources/lang/sw/components.php | 255 - .../forms/resources/lang/tr/components.php | 416 - .../forms/resources/lang/uk/components.php | 426 - .../forms/resources/lang/uz/components.php | 425 - .../forms/resources/lang/uz/validation.php | 10 - .../forms/resources/lang/vi/components.php | 438 - .../forms/resources/lang/vi/validation.php | 10 - .../forms/resources/lang/zh_CN/components.php | 416 - .../forms/resources/lang/zh_TW/components.php | 229 - .../views/component-container.blade.php | 104 - .../views/components/actions.blade.php | 34 - .../actions/action-container.blade.php | 5 - .../views/components/builder.blade.php | 250 - .../components/builder/block-picker.blade.php | 52 - .../views/components/checkbox-list.blade.php | 231 - .../views/components/checkbox.blade.php | 36 - .../views/components/color-picker.blade.php | 118 - .../components/date-time-picker.blade.php | 296 - .../field-wrapper/error-message.blade.php | 10 - .../field-wrapper/helper-text.blade.php | 5 - .../components/field-wrapper/hint.blade.php | 65 - .../components/field-wrapper/index.blade.php | 129 - .../components/field-wrapper/label.blade.php | 20 - .../views/components/fieldset.blade.php | 13 - .../views/components/file-upload.blade.php | 329 - .../resources/views/components/grid.blade.php | 11 - .../views/components/group.blade.php | 11 - .../views/components/hidden.blade.php | 12 - .../views/components/key-value.blade.php | 171 - .../views/components/livewire.blade.php | 7 - .../components/markdown-editor.blade.php | 55 - .../views/components/placeholder.blade.php | 24 - .../views/components/radio.blade.php | 67 - .../views/components/repeater/index.blade.php | 227 - .../components/repeater/simple.blade.php | 100 - .../views/components/rich-editor.blade.php | 489 - .../rich-editor/toolbar/button.blade.php | 11 - .../rich-editor/toolbar/group.blade.php | 3 - .../views/components/section.blade.php | 28 - .../views/components/select.blade.php | 165 - .../views/components/split.blade.php | 63 - .../resources/views/components/tabs.blade.php | 105 - .../views/components/tabs/tab.blade.php | 34 - .../views/components/tags-input.blade.php | 124 - .../views/components/text-input.blade.php | 104 - .../views/components/textarea.blade.php | 77 - .../toggle-buttons/grouped.blade.php | 61 - .../components/toggle-buttons/index.blade.php | 80 - .../views/components/toggle.blade.php | 130 - .../views/components/wizard.blade.php | 277 - .../views/components/wizard/step.blade.php | 40 - .../src/Commands/Aliases/MakeFieldCommand.php | 12 - .../Aliases/MakeLayoutComponentCommand.php | 12 - .../Commands/Concerns/CanGenerateForms.php | 183 - .../forms/src/Commands/MakeFieldCommand.php | 74 - .../forms/src/Commands/MakeFormCommand.php | 108 - .../Commands/MakeLayoutComponentCommand.php | 74 - .../filament/forms/src/ComponentContainer.php | 80 - .../filament/forms/src/Components/Actions.php | 62 - .../forms/src/Components/Actions/Action.php | 101 - .../Components/Actions/ActionContainer.php | 36 - .../Actions/Concerns/BelongsToComponent.php | 28 - .../forms/src/Components/BaseFileUpload.php | 864 -- .../Components/BelongsToManyCheckboxList.php | 10 - .../Components/BelongsToManyMultiSelect.php | 10 - .../forms/src/Components/BelongsToSelect.php | 10 - .../filament/forms/src/Components/Builder.php | 952 -- .../forms/src/Components/Builder/Block.php | 67 - vendor/filament/forms/src/Components/Card.php | 10 - .../forms/src/Components/Checkbox.php | 29 - .../forms/src/Components/CheckboxList.php | 269 - .../forms/src/Components/ColorPicker.php | 61 - .../forms/src/Components/Component.php | 73 - .../Concerns/BelongsToContainer.php | 28 - .../Components/Concerns/BelongsToModel.php | 189 - .../src/Components/Concerns/CanAllowHtml.php | 22 - .../src/Components/Concerns/CanBeAccepted.php | 22 - .../Concerns/CanBeAutocapitalized.php | 39 - .../Concerns/CanBeAutocompleted.php | 39 - .../Components/Concerns/CanBeAutofocused.php | 22 - .../src/Components/Concerns/CanBeCloned.php | 26 - .../Components/Concerns/CanBeCollapsed.php | 55 - .../Components/Concerns/CanBeCompacted.php | 22 - .../Components/Concerns/CanBeConcealed.php | 35 - .../src/Components/Concerns/CanBeDisabled.php | 49 - .../src/Components/Concerns/CanBeHidden.php | 135 - .../src/Components/Concerns/CanBeInline.php | 26 - .../Concerns/CanBeLengthConstrained.php | 84 - .../Concerns/CanBeMarkedAsRequired.php | 22 - .../Components/Concerns/CanBePreloaded.php | 22 - .../src/Components/Concerns/CanBeReadOnly.php | 42 - .../src/Components/Concerns/CanBeRepeated.php | 29 - .../Components/Concerns/CanBeSearchable.php | 118 - .../Components/Concerns/CanBeValidated.php | 811 -- .../Components/Concerns/CanDisableOptions.php | 49 - ...ionsWhenSelectedInSiblingRepeaterItems.php | 37 - .../Concerns/CanFixIndistinctState.php | 84 - .../Components/Concerns/CanGenerateUuids.php | 27 - .../Concerns/CanLimitItemsLength.php | 60 - .../Concerns/CanSelectPlaceholder.php | 32 - .../Components/Concerns/CanSpanColumns.php | 111 - .../src/Components/Concerns/Cloneable.php | 29 - ...EntanglesStateWithSingularRelationship.php | 285 - .../src/Components/Concerns/HasActions.php | 120 - .../src/Components/Concerns/HasAffixes.php | 269 - .../Concerns/HasChildComponents.php | 82 - .../src/Components/Concerns/HasColors.php | 60 - .../Concerns/HasContainerGridLayout.php | 51 - .../Concerns/HasDatalistOptions.php | 38 - .../Components/Concerns/HasDescriptions.php | 72 - .../Concerns/HasExtraAlpineAttributes.php | 14 - .../Concerns/HasExtraAttributes.php | 14 - .../Concerns/HasExtraInputAttributes.php | 47 - .../Concerns/HasExtraItemActions.php | 63 - .../Components/Concerns/HasFieldWrapper.php | 29 - .../Concerns/HasFileAttachments.php | 133 - .../Components/Concerns/HasGridDirection.php | 22 - .../Components/Concerns/HasHeaderActions.php | 57 - .../src/Components/Concerns/HasHelperText.php | 23 - .../forms/src/Components/Concerns/HasHint.php | 136 - .../src/Components/Concerns/HasIcons.php | 58 - .../forms/src/Components/Concerns/HasId.php | 22 - .../Components/Concerns/HasInlineLabel.php | 22 - .../src/Components/Concerns/HasInputMode.php | 22 - .../forms/src/Components/Concerns/HasKey.php | 22 - .../src/Components/Concerns/HasLabel.php | 60 - .../Components/Concerns/HasLoadingMessage.php | 22 - .../src/Components/Concerns/HasMaxWidth.php | 23 - .../forms/src/Components/Concerns/HasMeta.php | 44 - .../forms/src/Components/Concerns/HasName.php | 35 - .../HasNestedRecursiveValidationRules.php | 48 - .../src/Components/Concerns/HasOptions.php | 64 - .../Components/Concerns/HasPlaceholder.php | 22 - .../src/Components/Concerns/HasState.php | 494 - .../forms/src/Components/Concerns/HasStep.php | 22 - .../Components/Concerns/HasToggleColors.php | 54 - .../Components/Concerns/HasToggleIcons.php | 46 - .../Concerns/HasUploadingMessage.php | 22 - .../Concerns/InteractsWithToolbarButtons.php | 75 - .../Components/Concerns/ListensToEvents.php | 51 - .../Contracts/CanBeLengthConstrained.php | 12 - .../Contracts/CanConcealComponents.php | 8 - .../Contracts/CanDisableOptions.php | 10 - .../CanEntangleWithSingularRelationships.php | 41 - .../Contracts/CanHaveNumericState.php | 8 - .../Components/Contracts/HasAffixActions.php | 18 - .../Contracts/HasExtraItemActions.php | 13 - .../Contracts/HasFileAttachments.php | 10 - .../Components/Contracts/HasHeaderActions.php | 13 - .../Components/Contracts/HasHintActions.php | 13 - .../HasNestedRecursiveValidationRules.php | 11 - .../Contracts/HasValidationRules.php | 21 - .../forms/src/Components/DatePicker.php | 11 - .../forms/src/Components/DateTimePicker.php | 524 - .../filament/forms/src/Components/Field.php | 39 - .../forms/src/Components/Fieldset.php | 39 - .../forms/src/Components/FileUpload.php | 562 - vendor/filament/forms/src/Components/Grid.php | 41 - .../filament/forms/src/Components/Group.php | 35 - .../forms/src/Components/HasManyRepeater.php | 10 - .../filament/forms/src/Components/Hidden.php | 18 - .../forms/src/Components/KeyValue.php | 379 - .../forms/src/Components/Livewire.php | 106 - .../forms/src/Components/MarkdownEditor.php | 39 - .../src/Components/MorphManyRepeater.php | 10 - .../forms/src/Components/MorphToSelect.php | 154 - .../src/Components/MorphToSelect/Type.php | 316 - .../forms/src/Components/MultiSelect.php | 14 - .../forms/src/Components/Placeholder.php | 55 - .../filament/forms/src/Components/Radio.php | 62 - .../src/Components/RelationshipRepeater.php | 16 - .../forms/src/Components/Repeater.php | 1237 -- .../forms/src/Components/RichEditor.php | 41 - .../filament/forms/src/Components/Section.php | 120 - .../filament/forms/src/Components/Select.php | 1214 -- .../filament/forms/src/Components/Split.php | 38 - vendor/filament/forms/src/Components/Tabs.php | 87 - .../forms/src/Components/Tabs/Tab.php | 52 - .../forms/src/Components/TagsInput.php | 171 - .../forms/src/Components/TextInput.php | 262 - .../TextInput/Actions/HidePasswordAction.php | 32 - .../TextInput/Actions/ShowPasswordAction.php | 31 - .../forms/src/Components/Textarea.php | 63 - .../forms/src/Components/TimePicker.php | 11 - .../filament/forms/src/Components/Toggle.php | 33 - .../forms/src/Components/ToggleButtons.php | 96 - vendor/filament/forms/src/Components/View.php | 25 - .../forms/src/Components/ViewField.php | 7 - .../filament/forms/src/Components/Wizard.php | 238 - .../forms/src/Components/Wizard/Step.php | 109 - .../forms/src/Concerns/BelongsToLivewire.php | 22 - .../forms/src/Concerns/BelongsToModel.php | 92 - .../src/Concerns/BelongsToParentComponent.php | 27 - .../forms/src/Concerns/CanBeDisabled.php | 27 - .../forms/src/Concerns/CanBeHidden.php | 16 - .../forms/src/Concerns/CanBeValidated.php | 107 - .../filament/forms/src/Concerns/Cloneable.php | 31 - .../forms/src/Concerns/HasColumns.php | 65 - .../forms/src/Concerns/HasComponents.php | 117 - .../forms/src/Concerns/HasFieldWrapper.php | 23 - .../src/Concerns/HasFormComponentActions.php | 315 - .../forms/src/Concerns/HasInlineLabels.php | 22 - .../forms/src/Concerns/HasOperation.php | 38 - .../filament/forms/src/Concerns/HasState.php | 292 - .../src/Concerns/HasStateBindingModifiers.php | 226 - .../forms/src/Concerns/InteractsWithForms.php | 464 - .../forms/src/Concerns/ListensToEvents.php | 23 - .../SupportsComponentFileAttachments.php | 36 - .../src/Concerns/SupportsFileUploadFields.php | 104 - .../src/Concerns/SupportsSelectFields.php | 101 - .../filament/forms/src/Contracts/HasForms.php | 63 - vendor/filament/forms/src/Form.php | 7 - vendor/filament/forms/src/FormsComponent.php | 10 - .../forms/src/FormsServiceProvider.php | 81 - vendor/filament/forms/src/Get.php | 23 - vendor/filament/forms/src/Set.php | 26 - .../src/Testing/TestsComponentActions.php | 595 - .../filament/forms/src/Testing/TestsForms.php | 299 - vendor/filament/forms/src/helpers.php | 63 - vendor/filament/forms/stubs/CreateForm.stub | 47 - vendor/filament/forms/stubs/EditForm.stub | 47 - vendor/filament/forms/stubs/Field.stub | 10 - vendor/filament/forms/stubs/FieldView.stub | 8 - vendor/filament/forms/stubs/Form.stub | 43 - vendor/filament/forms/stubs/FormView.stub | 11 - .../filament/forms/stubs/LayoutComponent.stub | 15 - .../forms/stubs/LayoutComponentView.stub | 3 - vendor/filament/infolists/.stubs.php | 65 - vendor/filament/infolists/composer.json | 39 - .../infolists/docs/01-installation.md | 177 - .../infolists/docs/02-getting-started.md | 97 - .../docs/03-entries/01-getting-started.md | 305 - .../infolists/docs/03-entries/02-text.md | 347 - .../infolists/docs/03-entries/03-icon.md | 101 - .../infolists/docs/03-entries/04-image.md | 229 - .../infolists/docs/03-entries/05-color.md | 31 - .../infolists/docs/03-entries/06-key-value.md | 53 - .../docs/03-entries/07-repeatable.md | 58 - .../infolists/docs/03-entries/08-custom.md | 69 - .../docs/04-layout/01-getting-started.md | 78 - .../infolists/docs/04-layout/02-grid.md | 103 - .../infolists/docs/04-layout/03-fieldset.md | 33 - .../infolists/docs/04-layout/04-tabs.md | 240 - .../infolists/docs/04-layout/05-section.md | 196 - .../infolists/docs/04-layout/06-split.md | 37 - .../infolists/docs/04-layout/07-custom.md | 73 - vendor/filament/infolists/docs/05-actions.md | 224 - vendor/filament/infolists/docs/06-advanced.md | 93 - ...ing-an-infolist-to-a-livewire-component.md | 113 - vendor/filament/infolists/docs/08-testing.md | 270 - .../resources/lang/ar/components.php | 20 - .../resources/lang/az/components.php | 9 - .../resources/lang/ca/components.php | 36 - .../resources/lang/ckb/components.php | 9 - .../resources/lang/da/components.php | 36 - .../resources/lang/de/components.php | 9 - .../resources/lang/en/components.php | 36 - .../resources/lang/es/components.php | 36 - .../resources/lang/fa/components.php | 9 - .../resources/lang/fi/components.php | 36 - .../resources/lang/fr/components.php | 20 - .../resources/lang/hr/components.php | 9 - .../resources/lang/hu/components.php | 20 - .../resources/lang/ja/components.php | 20 - .../resources/lang/km/components.php | 36 - .../resources/lang/ko/components.php | 9 - .../resources/lang/ku/components.php | 9 - .../resources/lang/lt/components.php | 9 - .../resources/lang/nl/components.php | 36 - .../resources/lang/no/components.php | 9 - .../resources/lang/np/components.php | 9 - .../resources/lang/pt_BR/components.php | 9 - .../resources/lang/pt_PT/components.php | 36 - .../resources/lang/ru/components.php | 9 - .../resources/lang/sk/components.php | 9 - .../resources/lang/sv/components.php | 9 - .../resources/lang/tr/components.php | 9 - .../resources/lang/uk/components.php | 9 - .../resources/lang/uz/components.php | 36 - .../resources/lang/vi/components.php | 20 - .../resources/lang/zh_CN/components.php | 9 - .../views/component-container.blade.php | 53 - .../views/components/actions.blade.php | 34 - .../actions/action-container.blade.php | 5 - .../views/components/affixes.blade.php | 52 - .../views/components/color-entry.blade.php | 46 - .../components/entries/placeholder.blade.php | 3 - .../entry-wrapper/helper-text.blade.php | 5 - .../components/entry-wrapper/hint.blade.php | 65 - .../components/entry-wrapper/index.blade.php | 155 - .../components/entry-wrapper/label.blade.php | 16 - .../views/components/fieldset.blade.php | 13 - .../resources/views/components/grid.blade.php | 11 - .../views/components/group.blade.php | 11 - .../views/components/icon-entry.blade.php | 57 - .../views/components/image-entry.blade.php | 129 - .../components/key-value-entry.blade.php | 49 - .../views/components/livewire.blade.php | 7 - .../components/repeatable-entry.blade.php | 48 - .../views/components/section.blade.php | 28 - .../views/components/split.blade.php | 63 - .../resources/views/components/tabs.blade.php | 103 - .../views/components/tabs/tab.blade.php | 29 - .../views/components/text-entry.blade.php | 295 - .../src/Commands/Aliases/MakeEntryCommand.php | 12 - .../Aliases/MakeLayoutComponentCommand.php | 12 - .../src/Commands/MakeEntryCommand.php | 74 - .../Commands/MakeLayoutComponentCommand.php | 74 - .../infolists/src/ComponentContainer.php | 69 - .../infolists/src/Components/Actions.php | 62 - .../src/Components/Actions/Action.php | 100 - .../Components/Actions/ActionContainer.php | 33 - .../Actions/Concerns/BelongsToInfolist.php | 41 - .../infolists/src/Components/Card.php | 10 - .../infolists/src/Components/ColorEntry.php | 15 - .../infolists/src/Components/Component.php | 61 - .../Concerns/BelongsToContainer.php | 34 - .../Components/Concerns/CanBeCollapsed.php | 54 - .../Components/Concerns/CanBeCompacted.php | 22 - .../src/Components/Concerns/CanBeHidden.php | 56 - .../Components/Concerns/CanFormatState.php | 341 - .../Concerns/CanGetStateFromRelationships.php | 113 - .../src/Components/Concerns/CanOpenUrl.php | 37 - .../Components/Concerns/CanSpanColumns.php | 111 - .../src/Components/Concerns/Cloneable.php | 29 - ...EntanglesStateWithSingularRelationship.php | 13 - .../src/Components/Concerns/HasActions.php | 145 - .../src/Components/Concerns/HasAffixes.php | 127 - .../Concerns/HasChildComponents.php | 82 - .../src/Components/Concerns/HasColor.php | 75 - .../Concerns/HasContainerGridLayout.php | 51 - .../Components/Concerns/HasEntryWrapper.php | 29 - .../src/Components/Concerns/HasFontFamily.php | 25 - .../Components/Concerns/HasHeaderActions.php | 57 - .../src/Components/Concerns/HasHelperText.php | 23 - .../src/Components/Concerns/HasHint.php | 136 - .../src/Components/Concerns/HasIcon.php | 81 - .../src/Components/Concerns/HasIconColor.php | 33 - .../src/Components/Concerns/HasId.php | 22 - .../Components/Concerns/HasInlineLabel.php | 22 - .../src/Components/Concerns/HasKey.php | 22 - .../src/Components/Concerns/HasLabel.php | 50 - .../src/Components/Concerns/HasMaxWidth.php | 23 - .../src/Components/Concerns/HasMeta.php | 44 - .../src/Components/Concerns/HasName.php | 20 - .../src/Components/Concerns/HasState.php | 174 - .../src/Components/Concerns/HasTooltip.php | 22 - .../src/Components/Concerns/HasWeight.php | 25 - .../Components/Contracts/HasAffixActions.php | 18 - .../Components/Contracts/HasHeaderActions.php | 13 - .../Components/Contracts/HasHintActions.php | 13 - .../infolists/src/Components/Entry.php | 58 - .../infolists/src/Components/Fieldset.php | 35 - .../infolists/src/Components/Grid.php | 39 - .../infolists/src/Components/Group.php | 34 - .../infolists/src/Components/IconEntry.php | 197 - .../Components/IconEntry/IconEntrySize.php | 23 - .../infolists/src/Components/ImageEntry.php | 325 - .../src/Components/KeyValueEntry.php | 41 - .../infolists/src/Components/Livewire.php | 106 - .../src/Components/RepeatableEntry.php | 46 - .../infolists/src/Components/Section.php | 115 - .../infolists/src/Components/Split.php | 37 - .../infolists/src/Components/Tabs.php | 87 - .../infolists/src/Components/Tabs/Tab.php | 46 - .../infolists/src/Components/TextEntry.php | 125 - .../Components/TextEntry/TextEntrySize.php | 14 - .../infolists/src/Components/View.php | 25 - .../infolists/src/Components/ViewEntry.php | 7 - .../src/Concerns/BelongsToLivewire.php | 22 - .../src/Concerns/BelongsToParentComponent.php | 39 - .../infolists/src/Concerns/CanBeHidden.php | 16 - .../infolists/src/Concerns/Cloneable.php | 26 - .../infolists/src/Concerns/HasColumns.php | 65 - .../infolists/src/Concerns/HasComponents.php | 95 - .../src/Concerns/HasEntryWrapper.php | 23 - .../src/Concerns/HasInlineLabels.php | 22 - .../infolists/src/Concerns/HasState.php | 97 - .../src/Concerns/InteractsWithInfolists.php | 346 - .../infolists/src/Contracts/HasInfolists.php | 10 - vendor/filament/infolists/src/Infolist.php | 28 - .../src/InfolistsServiceProvider.php | 53 - .../infolists/src/Testing/TestsActions.php | 547 - vendor/filament/infolists/stubs/Entry.stub | 10 - .../filament/infolists/stubs/EntryView.stub | 5 - .../infolists/stubs/LayoutComponent.stub | 15 - .../infolists/stubs/LayoutComponentView.stub | 3 - vendor/filament/notifications/.stubs.php | 13 - vendor/filament/notifications/composer.json | 40 - vendor/filament/notifications/dist/index.js | 1 - .../notifications/docs/01-installation.md | 179 - .../docs/02-sending-notifications.md | 423 - .../docs/03-database-notifications.md | 185 - .../docs/04-broadcast-notifications.md | 56 - .../docs/05-customizing-notifications.md | 126 - .../filament/notifications/docs/06-testing.md | 85 - .../notifications/docs/07-upgrade-guide.md | 69 - .../resources/js/Notification.js | 346 - .../resources/js/components/notification.js | 154 - .../notifications/resources/js/index.js | 14 - .../resources/lang/ar/database.php | 28 - .../resources/lang/az/database.php | 28 - .../resources/lang/bn/database.php | 28 - .../resources/lang/bs/database.php | 28 - .../resources/lang/ca/database.php | 28 - .../resources/lang/ckb/database.php | 28 - .../resources/lang/cs/database.php | 28 - .../resources/lang/cy/database.php | 28 - .../resources/lang/da/database.php | 28 - .../resources/lang/de/database.php | 28 - .../resources/lang/el/database.php | 28 - .../resources/lang/en/database.php | 28 - .../resources/lang/es/database.php | 28 - .../resources/lang/eu/database.php | 28 - .../resources/lang/fa/database.php | 28 - .../resources/lang/fi/database.php | 28 - .../resources/lang/fr/database.php | 28 - .../resources/lang/he/database.php | 28 - .../resources/lang/hr/database.php | 28 - .../resources/lang/hu/database.php | 28 - .../resources/lang/id/database.php | 28 - .../resources/lang/it/database.php | 28 - .../resources/lang/ja/database.php | 28 - .../resources/lang/km/database.php | 28 - .../resources/lang/ko/database.php | 28 - .../resources/lang/ku/database.php | 28 - .../resources/lang/lt/database.php | 28 - .../resources/lang/lv/database.php | 28 - .../resources/lang/ms/database.php | 28 - .../resources/lang/nl/database.php | 28 - .../resources/lang/no/database.php | 28 - .../resources/lang/np/database.php | 28 - .../resources/lang/pl/database.php | 28 - .../resources/lang/pt_BR/database.php | 28 - .../resources/lang/pt_PT/database.php | 28 - .../resources/lang/ro/database.php | 28 - .../resources/lang/ru/database.php | 28 - .../resources/lang/sk/database.php | 28 - .../resources/lang/sq/database.php | 28 - .../resources/lang/sv/database.php | 28 - .../resources/lang/sw/database.php | 28 - .../resources/lang/tr/database.php | 28 - .../resources/lang/uk/database.php | 28 - .../resources/lang/uz/database.php | 28 - .../resources/lang/vi/database.php | 28 - .../resources/lang/zh_CN/database.php | 28 - .../views/components/actions.blade.php | 11 - .../resources/views/components/body.blade.php | 5 - .../views/components/close-button.blade.php | 7 - .../views/components/database/echo.blade.php | 19 - .../database/modal/actions.blade.php | 27 - .../database/modal/heading.blade.php | 18 - .../components/database/modal/index.blade.php | 64 - .../components/database/trigger.blade.php | 7 - .../resources/views/components/date.blade.php | 5 - .../resources/views/components/echo.blade.php | 19 - .../resources/views/components/icon.blade.php | 36 - .../views/components/notification.blade.php | 16 - .../views/components/title.blade.php | 5 - .../views/database-notifications.blade.php | 28 - .../resources/views/notification.blade.php | 103 - .../resources/views/notifications.blade.php | 32 - .../notifications/src/Actions/Action.php | 148 - .../notifications/src/Actions/ActionGroup.php | 88 - .../src/BroadcastNotification.php | 39 - .../filament/notifications/src/Collection.php | 35 - .../src/Concerns/CanBeInline.php | 20 - .../notifications/src/Concerns/HasActions.php | 34 - .../notifications/src/Concerns/HasBody.php | 22 - .../notifications/src/Concerns/HasDate.php | 22 - .../src/Concerns/HasDuration.php | 36 - .../notifications/src/Concerns/HasIcon.php | 24 - .../src/Concerns/HasIconColor.php | 20 - .../notifications/src/Concerns/HasId.php | 20 - .../notifications/src/Concerns/HasStatus.php | 42 - .../notifications/src/Concerns/HasTitle.php | 22 - .../src/DatabaseNotification.php | 39 - .../src/Events/DatabaseNotificationsSent.php | 41 - .../src/Livewire/DatabaseNotifications.php | 178 - .../src/Livewire/Notifications.php | 126 - .../notifications/src/Notification.php | 313 - .../src/NotificationsServiceProvider.php | 57 - .../notifications/src/Testing/Autoload.php | 15 - .../src/Testing/TestsNotifications.php | 34 - vendor/filament/support/composer.json | 45 - vendor/filament/support/config/filament.php | 74 - vendor/filament/support/dist/async-alpine.js | 1 - vendor/filament/support/dist/index.css | 1 - vendor/filament/support/dist/index.js | 46 - vendor/filament/support/docs/01-overview.md | 9 - vendor/filament/support/docs/02-assets.md | 387 - vendor/filament/support/docs/03-icons.md | 217 - vendor/filament/support/docs/04-colors.md | 96 - .../support/docs/05-style-customization.md | 71 - .../filament/support/docs/06-render-hooks.md | 184 - vendor/filament/support/docs/07-enums.md | 214 - .../docs/08-plugins/01-getting-started.md | 89 - .../08-plugins/02-build-a-panel-plugin.md | 212 - .../03-build-a-standalone-plugin.md | 280 - .../docs/09-blade-components/01-overview.md | 36 - .../docs/09-blade-components/02-avatar.md | 47 - .../docs/09-blade-components/02-badge.md | 74 - .../09-blade-components/02-breadcrumbs.md | 18 - .../docs/09-blade-components/02-button.md | 141 - .../docs/09-blade-components/02-checkbox.md | 41 - .../docs/09-blade-components/02-dropdown.md | 146 - .../docs/09-blade-components/02-fieldset.md | 17 - .../09-blade-components/02-icon-button.md | 135 - .../09-blade-components/02-input-wrapper.md | 116 - .../docs/09-blade-components/02-input.md | 18 - .../docs/09-blade-components/02-link.md | 131 - .../02-loading-indicator.md | 11 - .../docs/09-blade-components/02-modal.md | 206 - .../docs/09-blade-components/02-pagination.md | 70 - .../docs/09-blade-components/02-section.md | 193 - .../docs/09-blade-components/02-select.md | 19 - .../docs/09-blade-components/02-tabs.md | 133 - .../resources/css/components/pagination.css | 75 - .../support/resources/css/sortable.css | 3 - vendor/filament/support/resources/js/index.js | 116 - .../filament/support/resources/js/sortable.js | 21 - .../resources/lang/ar/components/button.php | 9 - .../resources/lang/ar/components/copyable.php | 9 - .../resources/lang/ar/components/modal.php | 13 - .../lang/ar/components/pagination.php | 39 - .../resources/lang/az/components/button.php | 9 - .../resources/lang/az/components/copyable.php | 9 - .../resources/lang/az/components/modal.php | 13 - .../lang/az/components/pagination.php | 37 - .../resources/lang/bn/components/button.php | 9 - .../resources/lang/bn/components/copyable.php | 9 - .../resources/lang/bn/components/modal.php | 13 - .../lang/bn/components/pagination.php | 39 - .../resources/lang/bs/components/button.php | 9 - .../resources/lang/bs/components/copyable.php | 9 - .../resources/lang/bs/components/modal.php | 13 - .../lang/bs/components/pagination.php | 39 - .../resources/lang/ca/components/button.php | 9 - .../resources/lang/ca/components/copyable.php | 9 - .../resources/lang/ca/components/modal.php | 13 - .../lang/ca/components/pagination.php | 39 - .../resources/lang/ckb/components/button.php | 9 - .../lang/ckb/components/copyable.php | 9 - .../resources/lang/ckb/components/modal.php | 13 - .../lang/ckb/components/pagination.php | 39 - .../resources/lang/cs/components/button.php | 11 - .../resources/lang/cs/components/copyable.php | 9 - .../resources/lang/cs/components/modal.php | 13 - .../lang/cs/components/pagination.php | 37 - .../resources/lang/cy/components/copyable.php | 9 - .../lang/cy/components/pagination.php | 39 - .../resources/lang/da/components/button.php | 9 - .../resources/lang/da/components/copyable.php | 9 - .../resources/lang/da/components/modal.php | 13 - .../lang/da/components/pagination.php | 39 - .../resources/lang/de/components/button.php | 9 - .../resources/lang/de/components/copyable.php | 9 - .../resources/lang/de/components/modal.php | 13 - .../lang/de/components/pagination.php | 39 - .../resources/lang/en/components/button.php | 9 - .../resources/lang/en/components/copyable.php | 9 - .../resources/lang/en/components/modal.php | 13 - .../lang/en/components/pagination.php | 39 - .../resources/lang/es/components/button.php | 11 - .../resources/lang/es/components/copyable.php | 9 - .../resources/lang/es/components/modal.php | 13 - .../lang/es/components/pagination.php | 39 - .../resources/lang/eu/components/button.php | 11 - .../resources/lang/eu/components/copyable.php | 9 - .../resources/lang/eu/components/modal.php | 13 - .../lang/eu/components/pagination.php | 39 - .../resources/lang/fa/components/button.php | 11 - .../resources/lang/fa/components/copyable.php | 9 - .../resources/lang/fa/components/modal.php | 13 - .../lang/fa/components/pagination.php | 39 - .../resources/lang/fi/components/button.php | 9 - .../resources/lang/fi/components/copyable.php | 9 - .../resources/lang/fi/components/modal.php | 13 - .../lang/fi/components/pagination.php | 39 - .../resources/lang/fr/components/button.php | 9 - .../resources/lang/fr/components/copyable.php | 9 - .../resources/lang/fr/components/modal.php | 13 - .../lang/fr/components/pagination.php | 39 - .../resources/lang/he/components/button.php | 9 - .../resources/lang/he/components/copyable.php | 9 - .../resources/lang/he/components/modal.php | 13 - .../lang/he/components/pagination.php | 39 - .../lang/hi/components/pagination.php | 33 - .../resources/lang/hr/components/button.php | 9 - .../resources/lang/hr/components/copyable.php | 9 - .../resources/lang/hr/components/modal.php | 13 - .../lang/hr/components/pagination.php | 39 - .../resources/lang/hu/components/button.php | 9 - .../resources/lang/hu/components/copyable.php | 9 - .../resources/lang/hu/components/modal.php | 13 - .../lang/hu/components/pagination.php | 39 - .../resources/lang/hy/components/button.php | 9 - .../lang/hy/components/pagination.php | 33 - .../resources/lang/id/components/button.php | 11 - .../resources/lang/id/components/copyable.php | 9 - .../resources/lang/id/components/modal.php | 13 - .../lang/id/components/pagination.php | 39 - .../resources/lang/it/components/button.php | 11 - .../resources/lang/it/components/copyable.php | 9 - .../resources/lang/it/components/modal.php | 13 - .../lang/it/components/pagination.php | 39 - .../resources/lang/ja/components/button.php | 9 - .../resources/lang/ja/components/copyable.php | 9 - .../resources/lang/ja/components/modal.php | 13 - .../lang/ja/components/pagination.php | 39 - .../lang/ka/components/pagination.php | 39 - .../resources/lang/km/components/button.php | 9 - .../resources/lang/km/components/copyable.php | 9 - .../resources/lang/km/components/modal.php | 13 - .../lang/km/components/pagination.php | 39 - .../resources/lang/ko/components/button.php | 9 - .../resources/lang/ko/components/copyable.php | 9 - .../resources/lang/ko/components/modal.php | 13 - .../lang/ko/components/pagination.php | 39 - .../resources/lang/ku/components/button.php | 9 - .../resources/lang/ku/components/copyable.php | 9 - .../resources/lang/ku/components/modal.php | 13 - .../lang/ku/components/pagination.php | 39 - .../resources/lang/lt/components/button.php | 9 - .../resources/lang/lt/components/copyable.php | 9 - .../resources/lang/lt/components/modal.php | 13 - .../lang/lt/components/pagination.php | 39 - .../resources/lang/lv/components/button.php | 9 - .../resources/lang/lv/components/copyable.php | 9 - .../resources/lang/lv/components/modal.php | 13 - .../lang/lv/components/pagination.php | 39 - .../resources/lang/mn/components/button.php | 9 - .../resources/lang/mn/components/copyable.php | 9 - .../resources/lang/mn/components/modal.php | 13 - .../lang/mn/components/pagination.php | 39 - .../resources/lang/ms/components/button.php | 9 - .../resources/lang/ms/components/copyable.php | 9 - .../resources/lang/ms/components/modal.php | 13 - .../lang/ms/components/pagination.php | 39 - .../resources/lang/nl/components/button.php | 9 - .../resources/lang/nl/components/copyable.php | 9 - .../resources/lang/nl/components/modal.php | 13 - .../lang/nl/components/pagination.php | 39 - .../resources/lang/no/components/button.php | 9 - .../resources/lang/no/components/copyable.php | 9 - .../resources/lang/no/components/modal.php | 13 - .../lang/no/components/pagination.php | 39 - .../resources/lang/np/components/button.php | 9 - .../resources/lang/np/components/copyable.php | 9 - .../resources/lang/np/components/modal.php | 13 - .../lang/np/components/pagination.php | 39 - .../resources/lang/pl/components/button.php | 9 - .../resources/lang/pl/components/copyable.php | 9 - .../resources/lang/pl/components/modal.php | 13 - .../lang/pl/components/pagination.php | 39 - .../lang/pt_BR/components/button.php | 9 - .../lang/pt_BR/components/copyable.php | 9 - .../resources/lang/pt_BR/components/modal.php | 13 - .../lang/pt_BR/components/pagination.php | 39 - .../lang/pt_PT/components/button.php | 9 - .../lang/pt_PT/components/copyable.php | 9 - .../resources/lang/pt_PT/components/modal.php | 13 - .../lang/pt_PT/components/pagination.php | 39 - .../resources/lang/ro/components/button.php | 9 - .../resources/lang/ro/components/copyable.php | 9 - .../resources/lang/ro/components/modal.php | 13 - .../lang/ro/components/pagination.php | 39 - .../resources/lang/ru/components/button.php | 9 - .../resources/lang/ru/components/copyable.php | 9 - .../resources/lang/ru/components/modal.php | 13 - .../lang/ru/components/pagination.php | 39 - .../resources/lang/sk/components/button.php | 9 - .../resources/lang/sk/components/copyable.php | 9 - .../resources/lang/sk/components/modal.php | 13 - .../lang/sk/components/pagination.php | 39 - .../resources/lang/sq/components/button.php | 9 - .../resources/lang/sq/components/copyable.php | 9 - .../resources/lang/sq/components/modal.php | 13 - .../lang/sq/components/pagination.php | 39 - .../resources/lang/sv/components/button.php | 9 - .../resources/lang/sv/components/copyable.php | 9 - .../resources/lang/sv/components/modal.php | 13 - .../lang/sv/components/pagination.php | 39 - .../resources/lang/sw/components/button.php | 9 - .../resources/lang/sw/components/copyable.php | 9 - .../resources/lang/sw/components/modal.php | 13 - .../lang/sw/components/pagination.php | 39 - .../resources/lang/tr/components/button.php | 9 - .../resources/lang/tr/components/copyable.php | 9 - .../resources/lang/tr/components/modal.php | 13 - .../lang/tr/components/pagination.php | 37 - .../resources/lang/uk/components/button.php | 9 - .../resources/lang/uk/components/copyable.php | 9 - .../resources/lang/uk/components/modal.php | 13 - .../lang/uk/components/pagination.php | 39 - .../resources/lang/uz/components/button.php | 9 - .../resources/lang/uz/components/copyable.php | 9 - .../resources/lang/uz/components/modal.php | 13 - .../lang/uz/components/pagination.php | 39 - .../resources/lang/vi/components/button.php | 9 - .../resources/lang/vi/components/copyable.php | 9 - .../resources/lang/vi/components/modal.php | 13 - .../lang/vi/components/pagination.php | 39 - .../lang/zh_CN/components/button.php | 9 - .../lang/zh_CN/components/copyable.php | 9 - .../resources/lang/zh_CN/components/modal.php | 13 - .../lang/zh_CN/components/pagination.php | 39 - .../lang/zh_TW/components/button.php | 9 - .../lang/zh_TW/components/pagination.php | 33 - .../support/resources/views/assets.blade.php | 17 - .../views/components/actions.blade.php | 49 - .../views/components/avatar.blade.php | 21 - .../views/components/badge.blade.php | 233 - .../views/components/breadcrumbs.blade.php | 43 - .../views/components/button/group.blade.php | 9 - .../views/components/button/index.blade.php | 323 - .../resources/views/components/card.blade.php | 3 - .../components/dropdown/header.blade.php | 70 - .../views/components/dropdown/index.blade.php | 73 - .../components/dropdown/list/index.blade.php | 3 - .../components/dropdown/list/item.blade.php | 271 - .../views/components/fieldset.blade.php | 25 - .../views/components/grid/column.blade.php | 62 - .../views/components/grid/index.blade.php | 53 - .../views/components/icon-button.blade.php | 232 - .../resources/views/components/icon.blade.php | 29 - .../views/components/input/checkbox.blade.php | 29 - .../views/components/input/index.blade.php | 22 - .../views/components/input/radio.blade.php | 15 - .../views/components/input/select.blade.php | 16 - .../views/components/input/wrapper.blade.php | 212 - .../resources/views/components/link.blade.php | 279 - .../components/loading-indicator.blade.php | 18 - .../components/loading-section.blade.php | 31 - .../components/modal/description.blade.php | 5 - .../views/components/modal/heading.blade.php | 5 - .../views/components/modal/index.blade.php | 360 - .../components/pagination/index.blade.php | 167 - .../components/pagination/item.blade.php | 50 - .../components/section/description.blade.php | 5 - .../components/section/heading.blade.php | 5 - .../views/components/section/index.blade.php | 175 - .../views/components/tabs/index.blade.php | 21 - .../views/components/tabs/item.blade.php | 118 - .../support/src/Assets/AlpineComponent.php | 23 - vendor/filament/support/src/Assets/Asset.php | 78 - .../support/src/Assets/AssetManager.php | 284 - vendor/filament/support/src/Assets/Css.php | 57 - vendor/filament/support/src/Assets/Js.php | 141 - vendor/filament/support/src/Assets/Theme.php | 7 - vendor/filament/support/src/ChunkIterator.php | 38 - vendor/filament/support/src/Colors/Color.php | 402 - .../support/src/Colors/ColorManager.php | 150 - .../support/src/Commands/AssetsCommand.php | 77 - .../src/Commands/CheckTranslationsCommand.php | 151 - .../Commands/Concerns/CanGeneratePanels.php | 66 - .../Commands/Concerns/CanIndentStrings.php | 17 - .../Commands/Concerns/CanManipulateFiles.php | 82 - .../Commands/Concerns/CanReadModelSchemas.php | 112 - .../Commands/Concerns/CanValidateInput.php | 42 - .../support/src/Commands/InstallCommand.php | 174 - .../support/src/Commands/UpgradeCommand.php | 31 - .../support/src/Components/Component.php | 18 - .../src/Components/ComponentManager.php | 122 - .../Contracts/ScopedComponentManager.php | 18 - .../support/src/Components/ViewComponent.php | 121 - .../Concerns/CanAggregateRelatedModels.php | 178 - .../support/src/Concerns/CanBeContained.php | 24 - .../support/src/Concerns/CanBeCopied.php | 72 - .../filament/support/src/Concerns/CanGrow.php | 22 - .../support/src/Concerns/CanPersistTab.php | 22 - .../support/src/Concerns/Configurable.php | 33 - .../src/Concerns/EvaluatesClosures.php | 144 - .../support/src/Concerns/HasAlignment.php | 58 - .../support/src/Concerns/HasBadge.php | 68 - .../support/src/Concerns/HasCellState.php | 285 - .../support/src/Concerns/HasColor.php | 46 - .../support/src/Concerns/HasDescription.php | 23 - .../src/Concerns/HasExtraAlpineAttributes.php | 47 - .../src/Concerns/HasExtraAttributes.php | 47 - .../Concerns/HasExtraSidebarAttributes.php | 47 - .../src/Concerns/HasExtraTopbarAttributes.php | 47 - .../src/Concerns/HasFromBreakpoint.php | 22 - .../support/src/Concerns/HasHeading.php | 23 - .../filament/support/src/Concerns/HasIcon.php | 52 - .../support/src/Concerns/HasIconColor.php | 31 - .../support/src/Concerns/HasPlaceholder.php | 23 - .../Concerns/HasReorderAnimationDuration.php | 22 - .../src/Concerns/HasVerticalAlignment.php | 38 - .../support/src/Concerns/Macroable.php | 108 - .../ResolvesDynamicLivewireProperties.php | 48 - .../support/src/Contracts/HasColor.php | 11 - .../support/src/Contracts/HasDescription.php | 8 - .../support/src/Contracts/HasIcon.php | 8 - .../support/src/Contracts/HasLabel.php | 8 - .../Contracts/TranslatableContentDriver.php | 32 - .../filament/support/src/Enums/ActionSize.php | 16 - .../filament/support/src/Enums/Alignment.php | 20 - .../filament/support/src/Enums/FontFamily.php | 12 - .../filament/support/src/Enums/FontWeight.php | 22 - .../support/src/Enums/IconPosition.php | 10 - .../filament/support/src/Enums/IconSize.php | 12 - .../filament/support/src/Enums/MaxWidth.php | 50 - .../support/src/Enums/VerticalAlignment.php | 12 - .../support/src/Events/FilamentUpgraded.php | 10 - .../support/src/Exceptions/Cancel.php | 9 - .../filament/support/src/Exceptions/Halt.php | 9 - .../support/src/Facades/FilamentAsset.php | 61 - .../support/src/Facades/FilamentColor.php | 37 - .../support/src/Facades/FilamentIcon.php | 29 - .../support/src/Facades/FilamentView.php | 39 - .../support/src/Icons/IconManager.php | 39 - vendor/filament/support/src/Markdown.php | 38 - vendor/filament/support/src/RawJs.php | 18 - .../src/Services/RelationshipJoiner.php | 98 - .../support/src/SupportServiceProvider.php | 174 - .../support/src/View/Components/Modal.php | 20 - .../filament/support/src/View/ViewManager.php | 81 - vendor/filament/support/src/helpers.php | 218 - .../support/stubs/DefaultPanelProvider.stub | 58 - .../filament/support/stubs/PanelProvider.stub | 56 - .../stubs/scaffolding/postcss.config.js | 7 - .../stubs/scaffolding/resources/css/app.css | 3 - .../stubs/scaffolding/resources/js/app.js | 0 .../views/components/layouts/app.blade.php | 28 - .../stubs/scaffolding/tailwind.config.js | 10 - .../support/stubs/scaffolding/vite.config.js | 19 - vendor/filament/support/tailwind.config.js | 6 - .../support/tailwind.config.preset.js | 105 - vendor/filament/tables/.stubs.php | 176 - vendor/filament/tables/composer.json | 41 - .../filament/tables/dist/components/table.js | 1 - vendor/filament/tables/dist/index.js | 1 - .../filament/tables/docs/01-installation.md | 179 - .../tables/docs/02-getting-started.md | 177 - .../docs/03-columns/01-getting-started.md | 619 - .../tables/docs/03-columns/02-text.md | 453 - .../tables/docs/03-columns/03-icon.md | 115 - .../tables/docs/03-columns/04-image.md | 239 - .../tables/docs/03-columns/05-color.md | 68 - .../tables/docs/03-columns/06-select.md | 69 - .../tables/docs/03-columns/07-toggle.md | 30 - .../tables/docs/03-columns/08-text-input.md | 51 - .../tables/docs/03-columns/09-checkbox.md | 30 - .../tables/docs/03-columns/10-custom.md | 68 - .../docs/03-columns/11-relationships.md | 82 - .../tables/docs/03-columns/12-advanced.md | 123 - .../docs/04-filters/01-getting-started.md | 310 - .../tables/docs/04-filters/02-select.md | 102 - .../tables/docs/04-filters/03-ternary.md | 82 - .../docs/04-filters/04-query-builder.md | 495 - .../tables/docs/04-filters/05-custom.md | 145 - .../tables/docs/04-filters/06-layout.md | 180 - vendor/filament/tables/docs/05-actions.md | 457 - vendor/filament/tables/docs/06-layout.md | 468 - vendor/filament/tables/docs/07-summaries.md | 314 - vendor/filament/tables/docs/08-grouping.md | 339 - vendor/filament/tables/docs/09-empty-state.md | 96 - vendor/filament/tables/docs/10-advanced.md | 412 - ...-adding-a-table-to-a-livewire-component.md | 139 - vendor/filament/tables/docs/12-testing.md | 683 - .../filament/tables/docs/13-upgrade-guide.md | 85 - .../tables/resources/js/components/table.js | 161 - vendor/filament/tables/resources/js/index.js | 0 .../lang/ar/filters/query-builder.php | 482 - .../tables/resources/lang/ar/table.php | 224 - .../tables/resources/lang/az/table.php | 217 - .../tables/resources/lang/bn/table.php | 136 - .../tables/resources/lang/bs/table.php | 144 - .../lang/ca/filters/query-builder.php | 482 - .../tables/resources/lang/ca/table.php | 228 - .../tables/resources/lang/ckb/table.php | 213 - .../lang/cs/filters/query-builder.php | 482 - .../tables/resources/lang/cs/table.php | 223 - .../tables/resources/lang/cy/table.php | 146 - .../lang/da/filters/query-builder.php | 482 - .../tables/resources/lang/da/table.php | 220 - .../tables/resources/lang/de/table.php | 219 - .../lang/el/filters/query-builder.php | 482 - .../tables/resources/lang/el/tables.php | 228 - .../lang/en/filters/query-builder.php | 482 - .../tables/resources/lang/en/table.php | 228 - .../lang/es/filters/query-builder.php | 482 - .../tables/resources/lang/es/table.php | 228 - .../tables/resources/lang/eu/table.php | 213 - .../tables/resources/lang/fa/table.php | 213 - .../lang/fi/filters/query-builder.php | 482 - .../tables/resources/lang/fi/table.php | 228 - .../lang/fr/filters/query-builder.php | 482 - .../tables/resources/lang/fr/table.php | 228 - .../tables/resources/lang/he/table.php | 149 - .../tables/resources/lang/hi/table.php | 68 - .../tables/resources/lang/hr/table.php | 217 - .../lang/hu/filters/query-builder.php | 482 - .../tables/resources/lang/hu/table.php | 224 - .../tables/resources/lang/hy/table.php | 84 - .../lang/id/filters/query-builder.php | 482 - .../tables/resources/lang/id/table.php | 228 - .../lang/it/filters/query-builder.php | 482 - .../tables/resources/lang/it/table.php | 223 - .../lang/ja/filters/query-builder.php | 482 - .../tables/resources/lang/ja/table.php | 224 - .../tables/resources/lang/ka/table.php | 138 - .../lang/km/filters/query-builder.php | 482 - .../tables/resources/lang/km/table.php | 228 - .../tables/resources/lang/ko/table.php | 217 - .../tables/resources/lang/ku/table.php | 213 - .../lang/lt/filters/query-builder.php | 482 - .../tables/resources/lang/lt/table.php | 213 - .../tables/resources/lang/lv/table.php | 217 - .../tables/resources/lang/mn/table.php | 146 - .../lang/ms/filters/query-builder.php | 482 - .../tables/resources/lang/ms/table.php | 223 - .../lang/nl/filters/query-builder.php | 482 - .../tables/resources/lang/nl/table.php | 227 - .../tables/resources/lang/no/table.php | 217 - .../tables/resources/lang/np/table.php | 214 - .../tables/resources/lang/pl/table.php | 213 - .../tables/resources/lang/pt_BR/table.php | 216 - .../lang/pt_PT/filters/query-builder.php | 482 - .../tables/resources/lang/pt_PT/table.php | 228 - .../tables/resources/lang/ro/table.php | 213 - .../tables/resources/lang/ru/table.php | 210 - .../tables/resources/lang/sk/table.php | 217 - .../tables/resources/lang/sq/table.php | 213 - .../tables/resources/lang/sv/table.php | 217 - .../tables/resources/lang/sw/table.php | 144 - .../tables/resources/lang/tr/table.php | 217 - .../tables/resources/lang/uk/table.php | 210 - .../lang/uz/filters/query-builder.php | 482 - .../tables/resources/lang/uz/table.php | 224 - .../lang/vi/filters/query-builder.php | 482 - .../tables/resources/lang/vi/table.php | 223 - .../tables/resources/lang/zh_CN/table.php | 217 - .../tables/resources/lang/zh_TW/table.php | 84 - .../views/columns/checkbox-column.blade.php | 86 - .../views/columns/color-column.blade.php | 49 - .../views/columns/icon-column.blade.php | 58 - .../views/columns/image-column.blade.php | 131 - .../views/columns/layout/grid.blade.php | 29 - .../views/columns/layout/panel.blade.php | 13 - .../views/columns/layout/split.blade.php | 24 - .../views/columns/layout/stack.blade.php | 39 - .../views/columns/select-column.blade.php | 114 - .../columns/summaries/icon-count.blade.php | 53 - .../views/columns/summaries/range.blade.php | 31 - .../views/columns/summaries/text.blade.php | 17 - .../views/columns/summaries/values.blade.php | 27 - .../views/columns/text-column.blade.php | 299 - .../views/columns/text-input-column.blade.php | 135 - .../views/columns/toggle-column.blade.php | 168 - .../views/components/actions.blade.php | 49 - .../views/components/actions/cell.blade.php | 7 - .../resources/views/components/cell.blade.php | 9 - .../column-toggle/dropdown.blade.php | 29 - .../views/components/columns/column.blade.php | 86 - .../views/components/columns/layout.blade.php | 72 - .../components/columns/placeholder.blade.php | 3 - .../views/components/container.blade.php | 9 - .../empty-state/description.blade.php | 5 - .../components/empty-state/heading.blade.php | 5 - .../components/empty-state/index.blade.php | 46 - .../views/components/filters/dialog.blade.php | 62 - .../views/components/filters/index.blade.php | 51 - .../components/filters/indicators.blade.php | 45 - .../views/components/group/header.blade.php | 49 - .../views/components/groups.blade.php | 138 - .../views/components/header-cell.blade.php | 62 - .../views/components/header.blade.php | 52 - .../views/components/reorder/cell.blade.php | 10 - .../views/components/reorder/handle.blade.php | 10 - .../components/reorder/indicator.blade.php | 29 - .../resources/views/components/row.blade.php | 33 - .../views/components/search-field.blade.php | 45 - .../views/components/selection/cell.blade.php | 10 - .../components/selection/checkbox.blade.php | 21 - .../components/selection/group-cell.blade.php | 10 - .../selection/group-checkbox.blade.php | 24 - .../components/selection/indicator.blade.php | 59 - .../components/summary/header-cell.blade.php | 5 - .../views/components/summary/index.blade.php | 135 - .../views/components/summary/row.blade.php | 115 - .../views/components/table.blade.php | 44 - .../tables/resources/views/index.blade.php | 1237 -- vendor/filament/tables/src/Actions/Action.php | 175 - .../tables/src/Actions/ActionGroup.php | 75 - .../tables/src/Actions/AssociateAction.php | 314 - .../tables/src/Actions/AttachAction.php | 313 - .../tables/src/Actions/BulkAction.php | 106 - .../tables/src/Actions/BulkActionGroup.php | 25 - .../tables/src/Actions/ButtonAction.php | 17 - .../src/Actions/Concerns/BelongsToTable.php | 28 - .../Concerns/CanAccessSelectedRecords.php | 34 - .../CanDeselectRecordsAfterCompletion.php | 22 - .../Concerns/CanFetchSelectedRecords.php | 22 - .../Actions/Concerns/InteractsWithRecords.php | 69 - .../tables/src/Actions/Contracts/HasTable.php | 10 - .../tables/src/Actions/CreateAction.php | 135 - .../tables/src/Actions/DeleteAction.php | 58 - .../tables/src/Actions/DeleteBulkAction.php | 63 - .../tables/src/Actions/DetachAction.php | 55 - .../tables/src/Actions/DetachBulkAction.php | 60 - .../tables/src/Actions/DissociateAction.php | 52 - .../src/Actions/DissociateBulkAction.php | 57 - .../tables/src/Actions/EditAction.php | 92 - .../tables/src/Actions/ExportAction.php | 10 - .../tables/src/Actions/ExportBulkAction.php | 19 - .../tables/src/Actions/ForceDeleteAction.php | 58 - .../src/Actions/ForceDeleteBulkAction.php | 61 - .../src/Actions/HeaderActionsPosition.php | 9 - .../tables/src/Actions/IconButtonAction.php | 17 - .../tables/src/Actions/ImportAction.php | 10 - .../tables/src/Actions/LinkAction.php | 11 - .../src/Actions/Modal/Actions/Action.php | 12 - .../Actions/Modal/Actions/ButtonAction.php | 12 - .../tables/src/Actions/ReplicateAction.php | 21 - .../tables/src/Actions/RestoreAction.php | 64 - .../tables/src/Actions/RestoreBulkAction.php | 67 - .../tables/src/Actions/SelectAction.php | 17 - .../tables/src/Actions/ViewAction.php | 61 - .../tables/src/Columns/BadgeColumn.php | 14 - .../tables/src/Columns/BooleanColumn.php | 14 - .../tables/src/Columns/CheckboxColumn.php | 27 - .../tables/src/Columns/ColorColumn.php | 14 - vendor/filament/tables/src/Columns/Column.php | 104 - .../tables/src/Columns/ColumnGroup.php | 100 - .../src/Columns/Concerns/BelongsToGroup.php | 22 - .../src/Columns/Concerns/BelongsToLayout.php | 22 - .../src/Columns/Concerns/BelongsToTable.php | 28 - .../src/Columns/Concerns/CanBeCopied.php | 36 - .../src/Columns/Concerns/CanBeDisabled.php | 51 - .../src/Columns/Concerns/CanBeHidden.php | 80 - .../Concerns/CanBeHiddenResponsively.php | 36 - .../src/Columns/Concerns/CanBeInline.php | 22 - .../src/Columns/Concerns/CanBeSearchable.php | 91 - .../src/Columns/Concerns/CanBeSortable.php | 56 - .../src/Columns/Concerns/CanBeSummarized.php | 50 - .../src/Columns/Concerns/CanBeToggled.php | 42 - .../src/Columns/Concerns/CanBeValidated.php | 63 - .../src/Columns/Concerns/CanCallAction.php | 35 - .../src/Columns/Concerns/CanFormatState.php | 341 - .../src/Columns/Concerns/CanOpenUrl.php | 37 - .../src/Columns/Concerns/CanSpanColumns.php | 111 - .../src/Columns/Concerns/CanUpdateState.php | 99 - .../tables/src/Columns/Concerns/CanWrap.php | 22 - .../src/Columns/Concerns/CanWrapHeader.php | 22 - .../tables/src/Columns/Concerns/HasColor.php | 75 - .../src/Columns/Concerns/HasDescription.php | 34 - .../Columns/Concerns/HasExtraAttributes.php | 14 - .../Concerns/HasExtraCellAttributes.php | 47 - .../Concerns/HasExtraHeaderAttributes.php | 47 - .../src/Columns/Concerns/HasFontFamily.php | 25 - .../tables/src/Columns/Concerns/HasIcon.php | 81 - .../src/Columns/Concerns/HasIconColor.php | 33 - .../tables/src/Columns/Concerns/HasLabel.php | 39 - .../tables/src/Columns/Concerns/HasName.php | 20 - .../tables/src/Columns/Concerns/HasRecord.php | 22 - .../src/Columns/Concerns/HasRowLoopObject.php | 22 - .../tables/src/Columns/Concerns/HasSpace.php | 22 - .../src/Columns/Concerns/HasTooltip.php | 22 - .../tables/src/Columns/Concerns/HasWeight.php | 25 - .../Concerns/InteractsWithTableQuery.php | 161 - .../tables/src/Columns/Contracts/Editable.php | 10 - .../tables/src/Columns/IconColumn.php | 225 - .../src/Columns/IconColumn/IconColumnSize.php | 23 - .../tables/src/Columns/ImageColumn.php | 353 - .../tables/src/Columns/Layout/Component.php | 159 - .../tables/src/Columns/Layout/Grid.php | 62 - .../tables/src/Columns/Layout/Panel.php | 33 - .../tables/src/Columns/Layout/Split.php | 36 - .../tables/src/Columns/Layout/Stack.php | 38 - .../tables/src/Columns/Layout/View.php | 25 - .../tables/src/Columns/SelectColumn.php | 47 - .../src/Columns/Summarizers/Average.php | 52 - .../Summarizers/Concerns/BelongsToColumn.php | 34 - .../Summarizers/Concerns/CanFormatState.php | 130 - .../Columns/Summarizers/Concerns/HasLabel.php | 46 - .../Concerns/InteractsWithTableQuery.php | 36 - .../tables/src/Columns/Summarizers/Count.php | 101 - .../tables/src/Columns/Summarizers/Range.php | 141 - .../tables/src/Columns/Summarizers/Sum.php | 52 - .../src/Columns/Summarizers/Summarizer.php | 161 - .../tables/src/Columns/Summarizers/Values.php | 36 - .../tables/src/Columns/TagsColumn.php | 28 - .../tables/src/Columns/TextColumn.php | 142 - .../src/Columns/TextColumn/TextColumnSize.php | 14 - .../tables/src/Columns/TextInputColumn.php | 44 - .../tables/src/Columns/ToggleColumn.php | 29 - .../tables/src/Columns/ViewColumn.php | 7 - .../Commands/Aliases/MakeColumnCommand.php | 12 - .../Commands/Concerns/CanGenerateTables.php | 181 - .../tables/src/Commands/MakeColumnCommand.php | 74 - .../tables/src/Commands/MakeTableCommand.php | 91 - .../tables/src/Concerns/CanBeStriped.php | 17 - .../tables/src/Concerns/CanDeferLoading.php | 30 - .../tables/src/Concerns/CanGroupRecords.php | 62 - .../src/Concerns/CanPaginateRecords.php | 99 - .../tables/src/Concerns/CanPollRecords.php | 17 - .../tables/src/Concerns/CanReorderRecords.php | 76 - .../tables/src/Concerns/CanSearchRecords.php | 303 - .../tables/src/Concerns/CanSortRecords.php | 158 - .../src/Concerns/CanSummarizeRecords.php | 119 - .../tables/src/Concerns/CanToggleColumns.php | 113 - .../tables/src/Concerns/HasActions.php | 396 - .../tables/src/Concerns/HasBulkActions.php | 460 - .../tables/src/Concerns/HasColumns.php | 80 - .../tables/src/Concerns/HasContent.php | 37 - .../tables/src/Concerns/HasEmptyState.php | 55 - .../tables/src/Concerns/HasFilters.php | 220 - .../tables/src/Concerns/HasHeader.php | 49 - .../tables/src/Concerns/HasRecordAction.php | 30 - .../tables/src/Concerns/HasRecordClasses.php | 19 - .../tables/src/Concerns/HasRecordUrl.php | 19 - .../tables/src/Concerns/HasRecords.php | 205 - .../src/Concerns/InteractsWithTable.php | 320 - .../tables/src/Contracts/HasTable.php | 136 - .../tables/src/Enums/ActionsPosition.php | 16 - .../tables/src/Enums/FiltersLayout.php | 16 - .../src/Enums/RecordCheckboxPosition.php | 10 - .../tables/src/Filters/BaseFilter.php | 68 - .../src/Filters/Concerns/BelongsToTable.php | 36 - .../src/Filters/Concerns/CanBeHidden.php | 78 - .../src/Filters/Concerns/CanResetState.php | 31 - .../src/Filters/Concerns/CanSpanColumns.php | 61 - .../src/Filters/Concerns/HasColumns.php | 29 - .../src/Filters/Concerns/HasDefaultState.php | 20 - .../src/Filters/Concerns/HasFormSchema.php | 85 - .../src/Filters/Concerns/HasIndicators.php | 71 - .../tables/src/Filters/Concerns/HasLabel.php | 37 - .../tables/src/Filters/Concerns/HasName.php | 20 - .../src/Filters/Concerns/HasOptions.php | 101 - .../src/Filters/Concerns/HasPlaceholder.php | 22 - .../src/Filters/Concerns/HasRelationship.php | 95 - .../Concerns/InteractsWithTableQuery.php | 103 - vendor/filament/tables/src/Filters/Filter.php | 76 - .../filament/tables/src/Filters/Indicator.php | 80 - .../tables/src/Filters/MultiSelectFilter.php | 14 - .../tables/src/Filters/QueryBuilder.php | 291 - .../QueryBuilder/Concerns/HasConstraints.php | 41 - .../Constraints/BooleanConstraint.php | 25 - .../Operators/IsTrueOperator.php | 38 - .../Constraints/Concerns/CanBeNullable.php | 22 - .../Constraints/Concerns/HasLabel.php | 37 - .../Constraints/Concerns/HasName.php | 20 - .../Constraints/Concerns/HasOperators.php | 79 - .../QueryBuilder/Constraints/Constraint.php | 287 - .../Constraints/DateConstraint.php | 33 - .../Operators/IsAfterOperator.php | 56 - .../Operators/IsBeforeOperator.php | 56 - .../Operators/IsDateOperator.php | 56 - .../Operators/IsMonthOperator.php | 68 - .../Operators/IsYearOperator.php | 56 - .../Constraints/NumberConstraint.php | 61 - .../Concerns/CanAggregateRelationships.php | 132 - .../Operators/EqualsOperator.php | 62 - .../Operators/IsMaxOperator.php | 62 - .../Operators/IsMinOperator.php | 62 - .../Operators/Concerns/CanBeHidden.php | 40 - .../Operators/IsFilledOperator.php | 52 - .../Constraints/Operators/Operator.php | 249 - .../Constraints/RelationshipConstraint.php | 67 - .../Operators/EqualsOperator.php | 57 - .../Operators/HasMaxOperator.php | 57 - .../Operators/HasMinOperator.php | 57 - .../Operators/IsEmptyOperator.php | 38 - .../Operators/IsRelatedToOperator.php | 334 - .../Constraints/SelectConstraint.php | 98 - .../SelectConstraint/Operators/IsOperator.php | 104 - .../Constraints/TextConstraint.php | 31 - .../Operators/ContainsOperator.php | 69 - .../Operators/EndsWithOperator.php | 69 - .../Operators/EqualsOperator.php | 69 - .../Operators/StartsWithOperator.php | 69 - .../Forms/Components/RuleBuilder.php | 129 - .../tables/src/Filters/SelectFilter.php | 310 - .../tables/src/Filters/TernaryFilter.php | 166 - .../tables/src/Filters/TrashedFilter.php | 49 - vendor/filament/tables/src/Grouping/Group.php | 472 - vendor/filament/tables/src/Table.php | 107 - .../src/Table/Concerns/BelongsToLivewire.php | 28 - .../src/Table/Concerns/CanBeStriped.php | 22 - .../src/Table/Concerns/CanDeferLoading.php | 27 - .../src/Table/Concerns/CanGroupRecords.php | 174 - .../src/Table/Concerns/CanPaginateRecords.php | 94 - .../src/Table/Concerns/CanPollRecords.php | 22 - .../src/Table/Concerns/CanReorderRecords.php | 86 - .../src/Table/Concerns/CanSearchRecords.php | 136 - .../src/Table/Concerns/CanSortRecords.php | 93 - .../Table/Concerns/CanSummarizeRecords.php | 13 - .../src/Table/Concerns/CanToggleColumns.php | 119 - .../tables/src/Table/Concerns/HasActions.php | 243 - .../src/Table/Concerns/HasBulkActions.php | 198 - .../tables/src/Table/Concerns/HasColumns.php | 150 - .../tables/src/Table/Concerns/HasContent.php | 61 - .../src/Table/Concerns/HasEmptyState.php | 124 - .../Table/Concerns/HasFilterIndicators.php | 48 - .../tables/src/Table/Concerns/HasFilters.php | 302 - .../tables/src/Table/Concerns/HasHeader.php | 52 - .../src/Table/Concerns/HasHeaderActions.php | 92 - .../tables/src/Table/Concerns/HasQuery.php | 156 - .../Concerns/HasQueryStringIdentifier.php | 22 - .../src/Table/Concerns/HasRecordAction.php | 47 - .../src/Table/Concerns/HasRecordClasses.php | 42 - .../src/Table/Concerns/HasRecordUrl.php | 32 - .../tables/src/Table/Concerns/HasRecords.php | 143 - vendor/filament/tables/src/TableComponent.php | 12 - .../tables/src/TablesServiceProvider.php | 78 - .../tables/src/Testing/TestsActions.php | 738 -- .../tables/src/Testing/TestsBulkActions.php | 472 - .../tables/src/Testing/TestsColumns.php | 443 - .../tables/src/Testing/TestsFilters.php | 102 - .../tables/src/Testing/TestsRecords.php | 86 - .../tables/src/Testing/TestsSummaries.php | 106 - vendor/filament/tables/stubs/Column.stub | 10 - vendor/filament/tables/stubs/ColumnView.stub | 3 - vendor/filament/tables/stubs/Table.stub | 45 - vendor/filament/tables/stubs/TableView.stub | 3 - vendor/filament/widgets/composer.json | 32 - .../filament/widgets/dist/components/chart.js | 37 - .../components/stats-overview/stat/chart.js | 29 - .../filament/widgets/docs/01-installation.md | 177 - .../widgets/docs/02-stats-overview.md | 148 - vendor/filament/widgets/docs/03-charts.md | 254 - vendor/filament/widgets/docs/04-tables.md | 7 - .../05-adding-a-widget-to-a-blade-view.md | 13 - .../widgets/resources/js/components/chart.js | 91 - .../components/stats-overview/stat/chart.js | 99 - .../resources/views/chart-widget.blade.php | 112 - .../views/components/widget.blade.php | 35 - .../views/components/widgets.blade.php | 39 - .../views/stats-overview-widget.blade.php | 22 - .../stats-overview-widget/stat.blade.php | 155 - .../resources/views/table-widget.blade.php | 7 - .../filament/widgets/src/BarChartWidget.php | 14 - .../widgets/src/BubbleChartWidget.php | 14 - vendor/filament/widgets/src/ChartWidget.php | 120 - .../Commands/Aliases/MakeWidgetCommand.php | 12 - .../src/Commands/MakeWidgetCommand.php | 226 - .../filament/widgets/src/Concerns/CanPoll.php | 13 - .../widgets/src/DoughnutChartWidget.php | 14 - .../filament/widgets/src/LineChartWidget.php | 14 - .../filament/widgets/src/PieChartWidget.php | 14 - .../widgets/src/PolarAreaChartWidget.php | 14 - .../filament/widgets/src/RadarChartWidget.php | 14 - .../widgets/src/ScatterChartWidget.php | 14 - .../widgets/src/StatsOverviewWidget.php | 63 - .../widgets/src/StatsOverviewWidget/Card.php | 10 - .../widgets/src/StatsOverviewWidget/Stat.php | 296 - vendor/filament/widgets/src/TableWidget.php | 58 - vendor/filament/widgets/src/Widget.php | 109 - .../widgets/src/WidgetConfiguration.php | 16 - .../widgets/src/WidgetsServiceProvider.php | 54 - .../filament/widgets/stubs/ChartWidget.stub | 22 - .../widgets/stubs/StatsOverviewWidget.stub | 16 - .../filament/widgets/stubs/TableWidget.stub | 21 - vendor/filament/widgets/stubs/Widget.stub | 10 - vendor/filament/widgets/stubs/WidgetView.stub | 5 - vendor/fruitcake/php-cors/LICENSE | 20 - vendor/fruitcake/php-cors/README.md | 78 - vendor/fruitcake/php-cors/composer.json | 49 - vendor/fruitcake/php-cors/src/CorsService.php | 285 - .../src/Exceptions/InvalidOptionException.php | 16 - vendor/graham-campbell/result-type/LICENSE | 21 - .../graham-campbell/result-type/composer.json | 33 - .../graham-campbell/result-type/src/Error.php | 121 - .../result-type/src/Result.php | 69 - .../result-type/src/Success.php | 120 - vendor/guzzlehttp/uri-template/CHANGELOG.md | 45 - vendor/guzzlehttp/uri-template/LICENSE | 23 - vendor/guzzlehttp/uri-template/README.md | 33 - vendor/guzzlehttp/uri-template/composer.json | 76 - .../uri-template/src/UriTemplate.php | 295 - .../.github/workflows/ci.yaml | 72 - .../eloquent-power-joins/.php_cs | 100 - .../eloquent-power-joins/CHANGELOG.md | 27 - .../eloquent-power-joins/CONTRIBUTING.md | 55 - .../eloquent-power-joins/LICENSE.md | 21 - .../eloquent-power-joins/README.md | 351 - .../eloquent-power-joins/composer.json | 55 - .../eloquent-power-joins/config/config.php | 8 - .../screenshots/eloquent-power-joins.jpg | Bin 71543 -> 0 bytes .../screenshots/mysql-cpu-graph.png | Bin 72771 -> 0 bytes .../src/EloquentJoins.php | 26 - .../src/FakeJoinCallback.php | 23 - .../eloquent-power-joins/src/JoinsHelper.php | 122 - .../src/Mixins/JoinRelationship.php | 552 - .../src/Mixins/QueryBuilderExtraMethods.php | 20 - .../src/Mixins/QueryRelationshipExistence.php | 31 - .../src/Mixins/RelationshipsExtraMethods.php | 538 - .../src/PowerJoinClause.php | 255 - .../eloquent-power-joins/src/PowerJoins.php | 9 - .../src/PowerJoinsServiceProvider.php | 23 - .../eloquent-power-joins/src/StaticCache.php | 29 - vendor/laravel/framework/CHANGELOG.md | 1204 -- vendor/laravel/framework/LICENSE.md | 21 - vendor/laravel/framework/README.md | 47 - vendor/laravel/framework/composer.json | 201 - .../Auth/Access/AuthorizationException.php | 114 - .../Auth/Access/Events/GateEvaluated.php | 51 - .../src/Illuminate/Auth/Access/Gate.php | 898 -- .../Auth/Access/HandlesAuthorization.php | 55 - .../src/Illuminate/Auth/Access/Response.php | 215 - .../src/Illuminate/Auth/AuthManager.php | 342 - .../Illuminate/Auth/AuthServiceProvider.php | 112 - .../src/Illuminate/Auth/Authenticatable.php | 88 - .../Auth/AuthenticationException.php | 58 - .../Auth/Console/ClearResetsCommand.php | 36 - .../Console/stubs/make/views/layouts/app.stub | 76 - .../Illuminate/Auth/CreatesUserProviders.php | 91 - .../Illuminate/Auth/DatabaseUserProvider.php | 161 - .../Illuminate/Auth/EloquentUserProvider.php | 255 - .../src/Illuminate/Auth/Events/Attempting.php | 42 - .../Illuminate/Auth/Events/Authenticated.php | 37 - .../Auth/Events/CurrentDeviceLogout.php | 37 - .../src/Illuminate/Auth/Events/Failed.php | 42 - .../src/Illuminate/Auth/Events/Lockout.php | 26 - .../src/Illuminate/Auth/Events/Login.php | 46 - .../src/Illuminate/Auth/Events/Logout.php | 37 - .../Auth/Events/OtherDeviceLogout.php | 37 - .../Illuminate/Auth/Events/PasswordReset.php | 28 - .../src/Illuminate/Auth/Events/Registered.php | 28 - .../src/Illuminate/Auth/Events/Validated.php | 37 - .../src/Illuminate/Auth/Events/Verified.php | 28 - .../src/Illuminate/Auth/GenericUser.php | 132 - .../src/Illuminate/Auth/GuardHelpers.php | 126 - .../framework/src/Illuminate/Auth/LICENSE.md | 21 - .../SendEmailVerificationNotification.php | 22 - .../Auth/Middleware/Authenticate.php | 110 - .../Middleware/AuthenticateWithBasicAuth.php | 59 - .../Illuminate/Auth/Middleware/Authorize.php | 105 - .../Auth/Middleware/EnsureEmailIsVerified.php | 43 - .../Auth/Middleware/RequirePassword.php | 100 - .../src/Illuminate/Auth/MustVerifyEmail.php | 50 - .../Auth/Notifications/ResetPassword.php | 124 - .../Auth/Notifications/VerifyEmail.php | 114 - .../Auth/Passwords/CanResetPassword.php | 29 - .../Passwords/DatabaseTokenRepository.php | 246 - .../Auth/Passwords/PasswordBroker.php | 190 - .../Auth/Passwords/PasswordBrokerManager.php | 145 - .../PasswordResetServiceProvider.php | 45 - .../Passwords/TokenRepositoryInterface.php | 48 - .../src/Illuminate/Auth/Recaller.php | 96 - .../src/Illuminate/Auth/RequestGuard.php | 87 - .../src/Illuminate/Auth/SessionGuard.php | 962 -- .../src/Illuminate/Auth/TokenGuard.php | 149 - .../src/Illuminate/Auth/composer.json | 45 - .../Broadcasting/BroadcastController.php | 44 - .../Broadcasting/BroadcastEvent.php | 156 - .../Broadcasting/BroadcastException.php | 10 - .../Broadcasting/BroadcastManager.php | 481 - .../Broadcasting/BroadcastServiceProvider.php | 43 - .../Broadcasters/AblyBroadcaster.php | 235 - .../Broadcasting/Broadcasters/Broadcaster.php | 386 - .../Broadcasters/LogBroadcaster.php | 54 - .../Broadcasters/NullBroadcaster.php | 30 - .../Broadcasters/PusherBroadcaster.php | 190 - .../Broadcasters/RedisBroadcaster.php | 169 - .../UsePusherChannelConventions.php | 36 - .../src/Illuminate/Broadcasting/Channel.php | 36 - .../Broadcasting/EncryptedPrivateChannel.php | 17 - .../InteractsWithBroadcasting.php | 40 - .../Broadcasting/InteractsWithSockets.php | 39 - .../src/Illuminate/Broadcasting/LICENSE.md | 21 - .../Broadcasting/PendingBroadcast.php | 74 - .../Broadcasting/PresenceChannel.php | 17 - .../Broadcasting/PrivateChannel.php | 21 - .../Broadcasting/UniqueBroadcastEvent.php | 61 - .../src/Illuminate/Broadcasting/composer.json | 45 - .../framework/src/Illuminate/Bus/Batch.php | 506 - .../src/Illuminate/Bus/BatchFactory.php | 58 - .../src/Illuminate/Bus/BatchRepository.php | 95 - .../src/Illuminate/Bus/Batchable.php | 108 - .../src/Illuminate/Bus/BusServiceProvider.php | 104 - .../src/Illuminate/Bus/ChainedBatch.php | 142 - .../Bus/DatabaseBatchRepository.php | 403 - .../src/Illuminate/Bus/Dispatcher.php | 296 - .../Illuminate/Bus/DynamoBatchRepository.php | 536 - .../Illuminate/Bus/Events/BatchDispatched.php | 26 - .../framework/src/Illuminate/Bus/LICENSE.md | 21 - .../src/Illuminate/Bus/PendingBatch.php | 369 - .../Bus/PrunableBatchRepository.php | 16 - .../src/Illuminate/Bus/Queueable.php | 276 - .../src/Illuminate/Bus/UniqueLock.php | 75 - .../Illuminate/Bus/UpdatedBatchJobCounts.php | 43 - .../src/Illuminate/Bus/composer.json | 40 - .../src/Illuminate/Cache/ApcStore.php | 126 - .../src/Illuminate/Cache/ApcWrapper.php | 94 - .../src/Illuminate/Cache/ArrayLock.php | 106 - .../src/Illuminate/Cache/ArrayStore.php | 219 - .../src/Illuminate/Cache/CacheLock.php | 85 - .../src/Illuminate/Cache/CacheManager.php | 431 - .../Illuminate/Cache/CacheServiceProvider.php | 52 - .../Cache/Console/CacheTableCommand.php | 44 - .../Illuminate/Cache/Console/ClearCommand.php | 147 - .../Cache/Console/ForgetCommand.php | 59 - .../Cache/Console/PruneStaleTagsCommand.php | 60 - .../Illuminate/Cache/Console/stubs/cache.stub | 35 - .../src/Illuminate/Cache/DatabaseLock.php | 156 - .../src/Illuminate/Cache/DatabaseStore.php | 421 - .../src/Illuminate/Cache/DynamoDbLock.php | 77 - .../src/Illuminate/Cache/DynamoDbStore.php | 546 - .../Illuminate/Cache/Events/CacheEvent.php | 46 - .../src/Illuminate/Cache/Events/CacheHit.php | 28 - .../Illuminate/Cache/Events/CacheMissed.php | 8 - .../Illuminate/Cache/Events/KeyForgotten.php | 8 - .../Illuminate/Cache/Events/KeyWritten.php | 37 - .../src/Illuminate/Cache/FileLock.php | 16 - .../src/Illuminate/Cache/FileStore.php | 405 - .../src/Illuminate/Cache/HasCacheLock.php | 31 - .../framework/src/Illuminate/Cache/LICENSE.md | 21 - .../framework/src/Illuminate/Cache/Lock.php | 168 - .../src/Illuminate/Cache/LuaScripts.php | 25 - .../Illuminate/Cache/MemcachedConnector.php | 87 - .../src/Illuminate/Cache/MemcachedLock.php | 75 - .../src/Illuminate/Cache/MemcachedStore.php | 279 - .../framework/src/Illuminate/Cache/NoLock.php | 46 - .../src/Illuminate/Cache/NullStore.php | 126 - .../src/Illuminate/Cache/PhpRedisLock.php | 35 - .../src/Illuminate/Cache/RateLimiter.php | 225 - .../Cache/RateLimiting/GlobalLimit.php | 18 - .../Illuminate/Cache/RateLimiting/Limit.php | 132 - .../Cache/RateLimiting/Unlimited.php | 16 - .../src/Illuminate/Cache/RedisLock.php | 83 - .../src/Illuminate/Cache/RedisStore.php | 419 - .../src/Illuminate/Cache/RedisTagSet.php | 125 - .../src/Illuminate/Cache/RedisTaggedCache.php | 129 - .../src/Illuminate/Cache/Repository.php | 705 -- .../Cache/RetrievesMultipleKeys.php | 49 - .../framework/src/Illuminate/Cache/TagSet.php | 130 - .../src/Illuminate/Cache/TaggableStore.php | 19 - .../src/Illuminate/Cache/TaggedCache.php | 125 - .../src/Illuminate/Cache/composer.json | 49 - .../src/Illuminate/Collections/Arr.php | 897 -- .../src/Illuminate/Collections/Collection.php | 1761 --- .../src/Illuminate/Collections/Enumerable.php | 1260 -- .../HigherOrderCollectionProxy.php | 63 - .../Collections/ItemNotFoundException.php | 9 - .../src/Illuminate/Collections/LICENSE.md | 21 - .../Illuminate/Collections/LazyCollection.php | 1747 --- .../MultipleItemsFoundException.php | 40 - .../Collections/Traits/EnumeratesValues.php | 1152 -- .../src/Illuminate/Collections/composer.json | 42 - .../src/Illuminate/Collections/helpers.php | 226 - .../Conditionable/HigherOrderWhenProxy.php | 109 - .../src/Illuminate/Conditionable/LICENSE.md | 21 - .../Conditionable/Traits/Conditionable.php | 73 - .../Illuminate/Conditionable/composer.json | 33 - .../src/Illuminate/Config/LICENSE.md | 21 - .../src/Illuminate/Config/Repository.php | 182 - .../src/Illuminate/Config/composer.json | 35 - .../src/Illuminate/Console/Application.php | 316 - .../Console/BufferedConsoleOutput.php | 43 - .../Illuminate/Console/CacheCommandMutex.php | 141 - .../src/Illuminate/Console/Command.php | 296 - .../src/Illuminate/Console/CommandMutex.php | 30 - .../Console/Concerns/CallsCommands.php | 108 - .../Console/Concerns/ConfiguresPrompts.php | 170 - .../Console/Concerns/CreatesMatchingTest.php | 44 - .../Console/Concerns/HasParameters.php | 56 - .../Console/Concerns/InteractsWithIO.php | 463 - .../Console/Concerns/InteractsWithSignals.php | 51 - .../Concerns/PromptsForMissingInput.php | 101 - .../Illuminate/Console/ConfirmableTrait.php | 54 - .../Console/ContainerCommandLoader.php | 76 - .../Console/Contracts/NewLineAware.php | 22 - .../Console/Events/ArtisanStarting.php | 24 - .../Console/Events/CommandFinished.php | 54 - .../Console/Events/CommandStarting.php | 45 - .../ScheduledBackgroundTaskFinished.php | 26 - .../Console/Events/ScheduledTaskFailed.php | 36 - .../Console/Events/ScheduledTaskFinished.php | 35 - .../Console/Events/ScheduledTaskSkipped.php | 26 - .../Console/Events/ScheduledTaskStarting.php | 26 - .../Illuminate/Console/GeneratorCommand.php | 528 - .../src/Illuminate/Console/LICENSE.md | 21 - .../Console/MigrationGeneratorCommand.php | 122 - .../src/Illuminate/Console/OutputStyle.php | 197 - .../src/Illuminate/Console/Parser.php | 141 - .../Console/PromptValidationException.php | 9 - .../src/Illuminate/Console/QuestionHelper.php | 84 - .../Console/Scheduling/CacheAware.php | 14 - .../Console/Scheduling/CacheEventMutex.php | 114 - .../Scheduling/CacheSchedulingMutex.php | 75 - .../Console/Scheduling/CallbackEvent.php | 203 - .../Console/Scheduling/CommandBuilder.php | 75 - .../Illuminate/Console/Scheduling/Event.php | 1019 -- .../Console/Scheduling/EventMutex.php | 30 - .../Console/Scheduling/ManagesFrequencies.php | 667 - .../Console/Scheduling/Schedule.php | 374 - .../Scheduling/ScheduleClearCacheCommand.php | 47 - .../Scheduling/ScheduleFinishCommand.php | 50 - .../Scheduling/ScheduleInterruptCommand.php | 58 - .../Scheduling/ScheduleListCommand.php | 308 - .../Console/Scheduling/ScheduleRunCommand.php | 280 - .../Scheduling/ScheduleTestCommand.php | 117 - .../Scheduling/ScheduleWorkCommand.php | 77 - .../Console/Scheduling/SchedulingMutex.php | 26 - .../src/Illuminate/Console/Signals.php | 152 - .../Console/View/Components/Alert.php | 28 - .../Console/View/Components/Ask.php | 18 - .../View/Components/AskWithCompletion.php | 29 - .../Console/View/Components/BulletList.php | 28 - .../Console/View/Components/Choice.php | 29 - .../Console/View/Components/Component.php | 123 - .../Console/View/Components/Confirm.php | 20 - .../Console/View/Components/Error.php | 20 - .../Console/View/Components/Factory.php | 60 - .../Console/View/Components/Info.php | 20 - .../Console/View/Components/Line.php | 54 - .../EnsureDynamicContentIsHighlighted.php | 17 - .../Mutators/EnsureNoPunctuation.php | 21 - .../Components/Mutators/EnsurePunctuation.php | 21 - .../Mutators/EnsureRelativePaths.php | 21 - .../Console/View/Components/Secret.php | 24 - .../Console/View/Components/Task.php | 58 - .../View/Components/TwoColumnDetail.php | 36 - .../Console/View/Components/Warn.php | 21 - .../src/Illuminate/Console/composer.json | 52 - .../resources/views/components/alert.php | 3 - .../views/components/bullet-list.php | 7 - .../resources/views/components/line.php | 8 - .../views/components/two-column-detail.php | 11 - .../src/Illuminate/Container/BoundMethod.php | 202 - .../src/Illuminate/Container/Container.php | 1502 --- .../Container/ContextualBindingBuilder.php | 96 - .../Container/EntryNotFoundException.php | 11 - .../src/Illuminate/Container/LICENSE.md | 21 - .../Container/RewindableGenerator.php | 61 - .../src/Illuminate/Container/Util.php | 74 - .../src/Illuminate/Container/composer.json | 38 - .../Contracts/Auth/Access/Authorizable.php | 15 - .../Illuminate/Contracts/Auth/Access/Gate.php | 150 - .../Contracts/Auth/Authenticatable.php | 49 - .../Contracts/Auth/CanResetPassword.php | 21 - .../src/Illuminate/Contracts/Auth/Factory.php | 22 - .../src/Illuminate/Contracts/Auth/Guard.php | 57 - .../Auth/Middleware/AuthenticatesRequests.php | 8 - .../Contracts/Auth/MustVerifyEmail.php | 34 - .../Contracts/Auth/PasswordBroker.php | 61 - .../Contracts/Auth/PasswordBrokerFactory.php | 14 - .../Contracts/Auth/StatefulGuard.php | 63 - .../Contracts/Auth/SupportsBasicAuth.php | 24 - .../Contracts/Auth/UserProvider.php | 49 - .../Contracts/Broadcasting/Broadcaster.php | 35 - .../Contracts/Broadcasting/Factory.php | 14 - .../Broadcasting/HasBroadcastChannel.php | 20 - .../Contracts/Broadcasting/ShouldBeUnique.php | 8 - .../Broadcasting/ShouldBroadcast.php | 13 - .../Broadcasting/ShouldBroadcastNow.php | 8 - .../Illuminate/Contracts/Bus/Dispatcher.php | 66 - .../Contracts/Bus/QueueingDispatcher.php | 30 - .../Illuminate/Contracts/Cache/Factory.php | 14 - .../src/Illuminate/Contracts/Cache/Lock.php | 44 - .../Contracts/Cache/LockProvider.php | 25 - .../Contracts/Cache/LockTimeoutException.php | 10 - .../Illuminate/Contracts/Cache/Repository.php | 116 - .../src/Illuminate/Contracts/Cache/Store.php | 92 - .../Contracts/Config/Repository.php | 57 - .../Contracts/Console/Application.php | 23 - .../Contracts/Console/Isolatable.php | 8 - .../Illuminate/Contracts/Console/Kernel.php | 64 - .../Console/PromptsForMissingInput.php | 8 - .../Container/BindingResolutionException.php | 11 - .../Container/CircularDependencyException.php | 11 - .../Contracts/Container/Container.php | 219 - .../Container/ContextualBindingBuilder.php | 39 - .../Illuminate/Contracts/Cookie/Factory.php | 47 - .../Contracts/Cookie/QueueingFactory.php | 30 - .../Contracts/Database/Eloquent/Builder.php | 14 - .../Contracts/Database/Eloquent/Castable.php | 14 - .../Database/Eloquent/CastsAttributes.php | 34 - .../Eloquent/CastsInboundAttributes.php | 19 - .../Eloquent/DeviatesCastableAttributes.php | 28 - .../Eloquent/SerializesCastableAttributes.php | 19 - .../Eloquent/SupportsPartialRelations.php | 30 - .../Database/Events/MigrationEvent.php | 8 - .../Contracts/Database/ModelIdentifier.php | 73 - .../Contracts/Database/Query/Builder.php | 12 - .../Database/Query/ConditionExpression.php | 7 - .../Contracts/Database/Query/Expression.php | 16 - .../Contracts/Debug/ExceptionHandler.php | 48 - .../Contracts/Encryption/DecryptException.php | 10 - .../Contracts/Encryption/EncryptException.php | 10 - .../Contracts/Encryption/Encrypter.php | 35 - .../Contracts/Encryption/StringEncrypter.php | 26 - .../Contracts/Events/Dispatcher.php | 82 - .../Events/ShouldDispatchAfterCommit.php | 8 - .../Events/ShouldHandleEventsAfterCommit.php | 8 - .../Illuminate/Contracts/Filesystem/Cloud.php | 14 - .../Contracts/Filesystem/Factory.php | 14 - .../Filesystem/FileNotFoundException.php | 10 - .../Contracts/Filesystem/Filesystem.php | 191 - .../Filesystem/LockTimeoutException.php | 10 - .../Contracts/Foundation/Application.php | 254 - .../Foundation/CachesConfiguration.php | 27 - .../Contracts/Foundation/CachesRoutes.php | 20 - .../Foundation/ExceptionRenderer.php | 14 - .../Contracts/Foundation/MaintenanceMode.php | 35 - .../Illuminate/Contracts/Hashing/Hasher.php | 42 - .../src/Illuminate/Contracts/Http/Kernel.php | 37 - .../src/Illuminate/Contracts/LICENSE.md | 21 - .../Illuminate/Contracts/Mail/Attachable.php | 13 - .../src/Illuminate/Contracts/Mail/Factory.php | 14 - .../Illuminate/Contracts/Mail/MailQueue.php | 25 - .../Illuminate/Contracts/Mail/Mailable.php | 76 - .../src/Illuminate/Contracts/Mail/Mailer.php | 41 - .../Contracts/Notifications/Dispatcher.php | 24 - .../Contracts/Notifications/Factory.php | 32 - .../Contracts/Pagination/CursorPaginator.php | 124 - .../Pagination/LengthAwarePaginator.php | 29 - .../Contracts/Pagination/Paginator.php | 124 - .../src/Illuminate/Contracts/Pipeline/Hub.php | 15 - .../Contracts/Pipeline/Pipeline.php | 40 - .../Contracts/Process/InvokedProcess.php | 64 - .../Contracts/Process/ProcessResult.php | 65 - .../Contracts/Queue/ClearableQueue.php | 14 - .../Queue/EntityNotFoundException.php | 22 - .../Contracts/Queue/EntityResolver.php | 15 - .../Illuminate/Contracts/Queue/Factory.php | 14 - .../src/Illuminate/Contracts/Queue/Job.php | 164 - .../Illuminate/Contracts/Queue/Monitor.php | 30 - .../src/Illuminate/Contracts/Queue/Queue.php | 99 - .../Contracts/Queue/QueueableCollection.php | 34 - .../Contracts/Queue/QueueableEntity.php | 27 - .../Contracts/Queue/ShouldBeEncrypted.php | 8 - .../Contracts/Queue/ShouldBeUnique.php | 8 - .../Queue/ShouldBeUniqueUntilProcessing.php | 8 - .../Contracts/Queue/ShouldQueue.php | 8 - .../Queue/ShouldQueueAfterCommit.php | 8 - .../Illuminate/Contracts/Redis/Connection.php | 35 - .../Illuminate/Contracts/Redis/Connector.php | 25 - .../Illuminate/Contracts/Redis/Factory.php | 14 - .../Redis/LimiterTimeoutException.php | 10 - .../Contracts/Routing/BindingRegistrar.php | 23 - .../Contracts/Routing/Registrar.php | 105 - .../Contracts/Routing/ResponseFactory.php | 155 - .../Contracts/Routing/UrlGenerator.php | 86 - .../Contracts/Routing/UrlRoutable.php | 39 - .../Middleware/AuthenticatesSessions.php | 8 - .../Illuminate/Contracts/Session/Session.php | 204 - .../Contracts/Support/Arrayable.php | 17 - .../Support/CanBeEscapedWhenCastToString.php | 14 - .../Contracts/Support/DeferrableProvider.php | 13 - .../Support/DeferringDisplayableValue.php | 13 - .../Illuminate/Contracts/Support/Htmlable.php | 13 - .../Illuminate/Contracts/Support/Jsonable.php | 14 - .../Contracts/Support/MessageBag.php | 110 - .../Contracts/Support/MessageProvider.php | 13 - .../Contracts/Support/Renderable.php | 13 - .../Contracts/Support/Responsable.php | 14 - .../Contracts/Support/ValidatedData.php | 11 - .../Translation/HasLocalePreference.php | 13 - .../Contracts/Translation/Loader.php | 40 - .../Contracts/Translation/Translator.php | 42 - .../Contracts/Validation/DataAwareRule.php | 14 - .../Contracts/Validation/Factory.php | 46 - .../Contracts/Validation/ImplicitRule.php | 11 - .../Contracts/Validation/InvokableRule.php | 21 - .../Illuminate/Contracts/Validation/Rule.php | 25 - .../Validation/UncompromisedVerifier.php | 14 - .../Validation/ValidatesWhenResolved.php | 13 - .../Contracts/Validation/ValidationRule.php | 18 - .../Contracts/Validation/Validator.php | 65 - .../Validation/ValidatorAwareRule.php | 16 - .../src/Illuminate/Contracts/View/Engine.php | 15 - .../src/Illuminate/Contracts/View/Factory.php | 79 - .../src/Illuminate/Contracts/View/View.php | 31 - .../View/ViewCompilationException.php | 10 - .../src/Illuminate/Contracts/composer.json | 35 - .../src/Illuminate/Cookie/CookieJar.php | 242 - .../Cookie/CookieServiceProvider.php | 24 - .../Illuminate/Cookie/CookieValuePrefix.php | 44 - .../src/Illuminate/Cookie/LICENSE.md | 21 - .../Middleware/AddQueuedCookiesToResponse.php | 45 - .../Cookie/Middleware/EncryptCookies.php | 222 - .../src/Illuminate/Cookie/composer.json | 40 - .../Illuminate/Database/Capsule/Manager.php | 202 - .../Database/ClassMorphViolationException.php | 29 - .../Database/Concerns/BuildsQueries.php | 543 - .../Database/Concerns/CompilesJsonPaths.php | 64 - .../Database/Concerns/ExplainsQueries.php | 24 - .../Database/Concerns/ManagesTransactions.php | 348 - .../Database/Concerns/ParsesSearchPath.php | 25 - .../Database/ConfigurationUrlParser.php | 10 - .../src/Illuminate/Database/Connection.php | 1747 --- .../Database/ConnectionInterface.php | 170 - .../Database/ConnectionResolver.php | 92 - .../Database/ConnectionResolverInterface.php | 29 - .../Database/Connectors/ConnectionFactory.php | 277 - .../Database/Connectors/Connector.php | 122 - .../Connectors/ConnectorInterface.php | 14 - .../Database/Connectors/MySqlConnector.php | 208 - .../Database/Connectors/PostgresConnector.php | 217 - .../Database/Connectors/SQLiteConnector.php | 39 - .../Connectors/SqlServerConnector.php | 233 - .../Console/DatabaseInspectionCommand.php | 248 - .../Illuminate/Database/Console/DbCommand.php | 227 - .../Database/Console/DumpCommand.php | 90 - .../Console/Factories/FactoryMakeCommand.php | 143 - .../Console/Factories/stubs/factory.stub | 23 - .../Console/Migrations/BaseCommand.php | 51 - .../Console/Migrations/FreshCommand.php | 120 - .../Console/Migrations/InstallCommand.php | 70 - .../Console/Migrations/MigrateCommand.php | 283 - .../Console/Migrations/MigrateMakeCommand.php | 144 - .../Console/Migrations/RefreshCommand.php | 159 - .../Console/Migrations/ResetCommand.php | 91 - .../Console/Migrations/RollbackCommand.php | 88 - .../Console/Migrations/StatusCommand.php | 136 - .../Console/Migrations/TableGuesser.php | 37 - .../Database/Console/MonitorCommand.php | 140 - .../Database/Console/PruneCommand.php | 199 - .../Database/Console/Seeds/SeedCommand.php | 140 - .../Console/Seeds/SeederMakeCommand.php | 92 - .../Console/Seeds/WithoutModelEvents.php | 19 - .../Database/Console/Seeds/stubs/seeder.stub | 17 - .../Database/Console/ShowCommand.php | 190 - .../Database/Console/ShowModelCommand.php | 535 - .../Database/Console/TableCommand.php | 248 - .../Database/Console/WipeCommand.php | 114 - .../Database/DBAL/TimestampType.php | 104 - .../Illuminate/Database/DatabaseManager.php | 511 - .../Database/DatabaseServiceProvider.php | 113 - .../Database/DatabaseTransactionRecord.php | 82 - .../Database/DatabaseTransactionsManager.php | 247 - .../Illuminate/Database/DeadlockException.php | 10 - .../Database/DetectsConcurrencyErrors.php | 37 - .../Database/DetectsLostConnections.php | 76 - .../BroadcastableModelEventOccurred.php | 144 - .../Database/Eloquent/BroadcastsEvents.php | 197 - .../Eloquent/BroadcastsEventsAfterCommit.php | 18 - .../Illuminate/Database/Eloquent/Builder.php | 2049 --- .../Database/Eloquent/Casts/ArrayObject.php | 46 - .../Database/Eloquent/Casts/AsArrayObject.php | 42 - .../Database/Eloquent/Casts/AsCollection.php | 49 - .../Eloquent/Casts/AsEncryptedArrayObject.php | 45 - .../Eloquent/Casts/AsEncryptedCollection.php | 52 - .../Eloquent/Casts/AsEnumArrayObject.php | 84 - .../Eloquent/Casts/AsEnumCollection.php | 80 - .../Database/Eloquent/Casts/AsStringable.php | 32 - .../Database/Eloquent/Casts/Attribute.php | 105 - .../Database/Eloquent/Casts/Json.php | 54 - .../Database/Eloquent/Collection.php | 789 -- .../Eloquent/Concerns/GuardsAttributes.php | 255 - .../Eloquent/Concerns/HasAttributes.php | 2274 ---- .../Database/Eloquent/Concerns/HasEvents.php | 415 - .../Eloquent/Concerns/HasGlobalScopes.php | 92 - .../Eloquent/Concerns/HasRelationships.php | 929 -- .../Eloquent/Concerns/HasTimestamps.php | 224 - .../Database/Eloquent/Concerns/HasUlids.php | 90 - .../Eloquent/Concerns/HasUniqueIds.php | 57 - .../Database/Eloquent/Concerns/HasUuids.php | 90 - .../Eloquent/Concerns/HidesAttributes.php | 124 - .../Concerns/QueriesRelationships.php | 887 -- .../Factories/BelongsToManyRelationship.php | 76 - .../Factories/BelongsToRelationship.php | 97 - .../Eloquent/Factories/CrossJoinSequence.php | 26 - .../Database/Eloquent/Factories/Factory.php | 934 -- .../Eloquent/Factories/HasFactory.php | 32 - .../Eloquent/Factories/Relationship.php | 75 - .../Database/Eloquent/Factories/Sequence.php | 63 - .../Eloquent/HigherOrderBuilderProxy.php | 50 - .../Eloquent/InvalidCastException.php | 48 - .../Eloquent/JsonEncodingException.php | 49 - .../Eloquent/MassAssignmentException.php | 10 - .../Database/Eloquent/MassPrunable.php | 48 - .../Eloquent/MissingAttributeException.php | 23 - .../Illuminate/Database/Eloquent/Model.php | 2400 ---- .../Eloquent/ModelNotFoundException.php | 69 - .../PendingHasThroughRelationship.php | 90 - .../Illuminate/Database/Eloquent/Prunable.php | 67 - .../Database/Eloquent/QueueEntityResolver.php | 29 - .../Eloquent/RelationNotFoundException.php | 46 - .../Database/Eloquent/Relations/BelongsTo.php | 390 - .../Eloquent/Relations/BelongsToMany.php | 1529 --- .../Eloquent/Relations/Concerns/AsPivot.php | 333 - .../Relations/Concerns/CanBeOneOfMany.php | 331 - .../Concerns/ComparesRelatedModels.php | 77 - .../Concerns/InteractsWithDictionary.php | 35 - .../Concerns/InteractsWithPivotTable.php | 683 - .../Concerns/SupportsDefaultModels.php | 63 - .../Database/Eloquent/Relations/HasMany.php | 64 - .../Eloquent/Relations/HasManyThrough.php | 844 -- .../Database/Eloquent/Relations/HasOne.php | 137 - .../Eloquent/Relations/HasOneOrMany.php | 517 - .../Eloquent/Relations/HasOneThrough.php | 77 - .../Database/Eloquent/Relations/MorphMany.php | 90 - .../Database/Eloquent/Relations/MorphOne.php | 137 - .../Eloquent/Relations/MorphOneOrMany.php | 141 - .../Eloquent/Relations/MorphPivot.php | 182 - .../Database/Eloquent/Relations/MorphTo.php | 447 - .../Eloquent/Relations/MorphToMany.php | 211 - .../Database/Eloquent/Relations/Pivot.php | 25 - .../Database/Eloquent/Relations/Relation.php | 529 - .../Illuminate/Database/Eloquent/Scope.php | 15 - .../Database/Eloquent/SoftDeletes.php | 249 - .../Database/Eloquent/SoftDeletingScope.php | 165 - .../Database/Events/ConnectionEstablished.php | 8 - .../Database/Events/ConnectionEvent.php | 32 - .../Database/Events/DatabaseBusy.php | 32 - .../Database/Events/DatabaseRefreshed.php | 22 - .../Database/Events/MigrationEnded.php | 8 - .../Database/Events/MigrationEvent.php | 36 - .../Database/Events/MigrationStarted.php | 8 - .../Database/Events/MigrationsEnded.php | 8 - .../Database/Events/MigrationsEvent.php | 26 - .../Database/Events/MigrationsStarted.php | 8 - .../Database/Events/ModelPruningFinished.php | 24 - .../Database/Events/ModelPruningStarting.php | 24 - .../Database/Events/ModelsPruned.php | 33 - .../Database/Events/NoPendingMigrations.php | 24 - .../Database/Events/QueryExecuted.php | 59 - .../Database/Events/SchemaDumped.php | 41 - .../Database/Events/SchemaLoaded.php | 41 - .../Database/Events/StatementPrepared.php | 33 - .../Database/Events/TransactionBeginning.php | 8 - .../Database/Events/TransactionCommitted.php | 8 - .../Database/Events/TransactionCommitting.php | 8 - .../Database/Events/TransactionRolledBack.php | 8 - .../src/Illuminate/Database/Grammar.php | 293 - .../src/Illuminate/Database/LICENSE.md | 21 - .../LazyLoadingViolationException.php | 39 - .../Database/LostConnectionException.php | 10 - .../Database/MigrationServiceProvider.php | 222 - .../DatabaseMigrationRepository.php | 239 - .../Database/Migrations/Migration.php | 30 - .../Database/Migrations/MigrationCreator.php | 231 - .../MigrationRepositoryInterface.php | 96 - .../Database/Migrations/Migrator.php | 778 -- .../Migrations/stubs/migration.create.stub | 27 - .../Database/Migrations/stubs/migration.stub | 24 - .../Migrations/stubs/migration.update.stub | 28 - .../MultipleColumnsSelectedException.php | 10 - .../MultipleRecordsFoundException.php | 40 - .../Illuminate/Database/MySqlConnection.php | 120 - .../PDO/Concerns/ConnectsToDatabase.php | 30 - .../Illuminate/Database/PDO/Connection.php | 186 - .../Illuminate/Database/PDO/MySqlDriver.php | 19 - .../Database/PDO/PostgresDriver.php | 19 - .../Illuminate/Database/PDO/SQLiteDriver.php | 19 - .../Database/PDO/SqlServerConnection.php | 152 - .../Database/PDO/SqlServerDriver.php | 32 - .../Database/PostgresConnection.php | 120 - .../src/Illuminate/Database/Query/Builder.php | 3969 ------ .../Illuminate/Database/Query/Expression.php | 38 - .../Database/Query/Grammars/Grammar.php | 1411 --- .../Database/Query/Grammars/MySqlGrammar.php | 385 - .../Query/Grammars/PostgresGrammar.php | 723 -- .../Database/Query/Grammars/SQLiteGrammar.php | 394 - .../Query/Grammars/SqlServerGrammar.php | 543 - .../Illuminate/Database/Query/IndexHint.php | 33 - .../Illuminate/Database/Query/JoinClause.php | 146 - .../Query/Processors/MySqlProcessor.php | 89 - .../Query/Processors/PostgresProcessor.php | 179 - .../Database/Query/Processors/Processor.php | 136 - .../Query/Processors/SQLiteProcessor.php | 105 - .../Query/Processors/SqlServerProcessor.php | 147 - .../Illuminate/Database/QueryException.php | 99 - .../src/Illuminate/Database/README.md | 69 - .../Database/RecordsNotFoundException.php | 10 - .../Illuminate/Database/SQLiteConnection.php | 144 - .../SQLiteDatabaseDoesNotExistException.php | 28 - .../Illuminate/Database/Schema/Blueprint.php | 1889 --- .../Illuminate/Database/Schema/Builder.php | 611 - .../Database/Schema/ColumnDefinition.php | 38 - .../Schema/ForeignIdColumnDefinition.php | 54 - .../Database/Schema/ForeignKeyDefinition.php | 86 - .../Database/Schema/Grammars/ChangeColumn.php | 238 - .../Database/Schema/Grammars/Grammar.php | 357 - .../Database/Schema/Grammars/MySqlGrammar.php | 1398 --- .../Schema/Grammars/PostgresGrammar.php | 1359 -- .../Database/Schema/Grammars/RenameColumn.php | 84 - .../Schema/Grammars/SQLiteGrammar.php | 1106 -- .../Schema/Grammars/SqlServerGrammar.php | 1162 -- .../Database/Schema/IndexDefinition.php | 16 - .../Database/Schema/MySqlBuilder.php | 179 - .../Database/Schema/MySqlSchemaState.php | 170 - .../Database/Schema/PostgresBuilder.php | 320 - .../Database/Schema/PostgresSchemaState.php | 79 - .../Database/Schema/SQLiteBuilder.php | 127 - .../Database/Schema/SchemaState.php | 122 - .../Database/Schema/SqlServerBuilder.php | 82 - .../Database/Schema/SqliteSchemaState.php | 99 - .../src/Illuminate/Database/Seeder.php | 195 - .../Database/SqlServerConnection.php | 152 - .../UniqueConstraintViolationException.php | 7 - .../src/Illuminate/Database/composer.json | 55 - .../src/Illuminate/Encryption/Encrypter.php | 292 - .../Encryption/EncryptionServiceProvider.php | 83 - .../src/Illuminate/Encryption/LICENSE.md | 21 - .../Encryption/MissingAppKeyException.php | 19 - .../src/Illuminate/Encryption/composer.json | 38 - .../Illuminate/Events/CallQueuedListener.php | 180 - .../src/Illuminate/Events/Dispatcher.php | 776 -- .../Events/EventServiceProvider.php | 27 - .../Illuminate/Events/InvokeQueuedClosure.php | 34 - .../src/Illuminate/Events/LICENSE.md | 21 - .../src/Illuminate/Events/NullDispatcher.php | 144 - .../src/Illuminate/Events/QueuedClosure.php | 125 - .../src/Illuminate/Events/composer.json | 42 - .../src/Illuminate/Events/functions.php | 18 - .../Illuminate/Filesystem/AwsS3V3Adapter.php | 141 - .../src/Illuminate/Filesystem/Filesystem.php | 793 -- .../Filesystem/FilesystemAdapter.php | 989 -- .../Filesystem/FilesystemManager.php | 440 - .../Filesystem/FilesystemServiceProvider.php | 82 - .../src/Illuminate/Filesystem/LICENSE.md | 21 - .../Illuminate/Filesystem/LockableFile.php | 194 - .../src/Illuminate/Filesystem/composer.json | 54 - .../src/Illuminate/Filesystem/functions.php | 25 - .../src/Illuminate/Foundation/AliasLoader.php | 243 - .../src/Illuminate/Foundation/Application.php | 1528 --- .../Foundation/Auth/Access/Authorizable.php | 56 - .../Auth/Access/AuthorizesRequests.php | 131 - .../Auth/EmailVerificationRequest.php | 65 - .../src/Illuminate/Foundation/Auth/User.php | 20 - .../Foundation/Bootstrap/BootProviders.php | 19 - .../Foundation/Bootstrap/HandleExceptions.php | 300 - .../Bootstrap/LoadConfiguration.php | 114 - .../Bootstrap/LoadEnvironmentVariables.php | 110 - .../Foundation/Bootstrap/RegisterFacades.php | 29 - .../Bootstrap/RegisterProviders.php | 19 - .../Bootstrap/SetRequestForConsole.php | 35 - .../Foundation/Bus/Dispatchable.php | 100 - .../Foundation/Bus/DispatchesJobs.php | 30 - .../Foundation/Bus/PendingChain.php | 190 - .../Foundation/Bus/PendingClosureDispatch.php | 21 - .../Foundation/Bus/PendingDispatch.php | 196 - .../Foundation/CacheBasedMaintenanceMode.php | 97 - .../Illuminate/Foundation/ComposerScripts.php | 69 - .../Concerns/ResolvesDumpSource.php | 197 - .../Foundation/Console/AboutCommand.php | 317 - .../Foundation/Console/CastMakeCommand.php | 81 - .../Foundation/Console/ChannelListCommand.php | 151 - .../Foundation/Console/ChannelMakeCommand.php | 80 - .../Console/ClearCompiledCommand.php | 42 - .../Foundation/Console/CliDumper.php | 134 - .../Foundation/Console/ClosureCommand.php | 82 - .../Console/ComponentMakeCommand.php | 182 - .../Foundation/Console/ConfigCacheCommand.php | 94 - .../Foundation/Console/ConfigClearCommand.php | 57 - .../Foundation/Console/ConfigShowCommand.php | 124 - .../Foundation/Console/ConsoleMakeCommand.php | 103 - .../Foundation/Console/DocsCommand.php | 529 - .../Foundation/Console/DownCommand.php | 162 - .../Foundation/Console/EnvironmentCommand.php | 37 - .../Console/EnvironmentDecryptCommand.php | 148 - .../Console/EnvironmentEncryptCommand.php | 124 - .../Foundation/Console/EventCacheCommand.php | 60 - .../Foundation/Console/EventClearCommand.php | 59 - .../Console/EventGenerateCommand.php | 79 - .../Foundation/Console/EventListCommand.php | 221 - .../Foundation/Console/EventMakeCommand.php | 90 - .../Console/ExceptionMakeCommand.php | 86 - .../Foundation/Console/JobMakeCommand.php | 84 - .../Illuminate/Foundation/Console/Kernel.php | 537 - .../Foundation/Console/KeyGenerateCommand.php | 125 - .../Foundation/Console/LangPublishCommand.php | 57 - .../Console/ListenerMakeCommand.php | 144 - .../Foundation/Console/MailMakeCommand.php | 161 - .../Foundation/Console/ModelMakeCommand.php | 253 - .../Console/NotificationMakeCommand.php | 135 - .../Console/ObserverMakeCommand.php | 169 - .../Console/OptimizeClearCommand.php | 45 - .../Foundation/Console/OptimizeCommand.php | 41 - .../Console/PackageDiscoverCommand.php | 43 - .../Foundation/Console/PolicyMakeCommand.php | 228 - .../Console/ProviderMakeCommand.php | 78 - .../Foundation/Console/QueuedCommand.php | 52 - .../Foundation/Console/RequestMakeCommand.php | 78 - .../Console/ResourceMakeCommand.php | 106 - .../Foundation/Console/RouteCacheCommand.php | 111 - .../Foundation/Console/RouteClearCommand.php | 57 - .../Foundation/Console/RouteListCommand.php | 499 - .../Foundation/Console/RuleMakeCommand.php | 89 - .../Foundation/Console/ScopeMakeCommand.php | 78 - .../Foundation/Console/ServeCommand.php | 347 - .../Foundation/Console/StorageLinkCommand.php | 78 - .../Foundation/Console/StubPublishCommand.php | 99 - .../Foundation/Console/TestMakeCommand.php | 144 - .../Foundation/Console/UpCommand.php | 61 - .../Console/VendorPublishCommand.php | 342 - .../Foundation/Console/ViewCacheCommand.php | 108 - .../Foundation/Console/ViewClearCommand.php | 72 - .../Foundation/Console/ViewMakeCommand.php | 236 - .../Console/stubs/cast.inbound.stub | 19 - .../Foundation/Console/stubs/cast.stub | 29 - .../Foundation/Console/stubs/channel.stub | 24 - .../Foundation/Console/stubs/console.stub | 30 - .../Foundation/Console/stubs/event.stub | 36 - .../stubs/exception-render-report.stub | 26 - .../Console/stubs/exception-render.stub | 18 - .../Console/stubs/exception-report.stub | 16 - .../Foundation/Console/stubs/exception.stub | 10 - .../Foundation/Console/stubs/job.queued.stub | 30 - .../Foundation/Console/stubs/job.stub | 26 - .../Console/stubs/listener-duck.stub | 25 - .../Console/stubs/listener-queued-duck.stub | 27 - .../Console/stubs/listener-queued.stub | 28 - .../Foundation/Console/stubs/listener.stub | 26 - .../Foundation/Console/stubs/mail.stub | 53 - .../Console/stubs/maintenance-mode.stub | 78 - .../Console/stubs/markdown-mail.stub | 53 - .../Console/stubs/markdown-notification.stub | 51 - .../Foundation/Console/stubs/markdown.stub | 12 - .../Console/stubs/model.morph-pivot.stub | 10 - .../Foundation/Console/stubs/model.pivot.stub | 10 - .../Foundation/Console/stubs/model.stub | 11 - .../Console/stubs/notification.stub | 54 - .../Console/stubs/observer.plain.stub | 8 - .../Foundation/Console/stubs/observer.stub | 48 - .../Foundation/Console/stubs/pest.stub | 7 - .../Foundation/Console/stubs/pest.unit.stub | 5 - .../Console/stubs/policy.plain.stub | 16 - .../Foundation/Console/stubs/policy.stub | 66 - .../Foundation/Console/stubs/provider.stub | 24 - .../Foundation/Console/stubs/request.stub | 28 - .../Console/stubs/resource-collection.stub | 19 - .../Foundation/Console/stubs/resource.stub | 19 - .../Foundation/Console/stubs/routes.stub | 16 - .../Console/stubs/rule.implicit.stub | 26 - .../Foundation/Console/stubs/rule.stub | 19 - .../Foundation/Console/stubs/scope.stub | 18 - .../Foundation/Console/stubs/test.stub | 20 - .../Foundation/Console/stubs/test.unit.stub | 16 - .../Console/stubs/view-component.stub | 26 - .../Foundation/Console/stubs/view.pest.stub | 9 - .../Foundation/Console/stubs/view.stub | 3 - .../Foundation/Console/stubs/view.test.stub | 20 - .../Foundation/EnvironmentDetector.php | 73 - .../Foundation/Events/DiscoverEvents.php | 120 - .../Foundation/Events/Dispatchable.php | 54 - .../Foundation/Events/LocaleUpdated.php | 24 - .../Events/MaintenanceModeDisabled.php | 8 - .../Events/MaintenanceModeEnabled.php | 8 - .../Foundation/Events/PublishingStubs.php | 40 - .../Foundation/Events/VendorTagPublished.php | 33 - .../Foundation/Exceptions/Handler.php | 891 -- .../Exceptions/RegisterErrorViewPaths.php | 20 - .../Exceptions/ReportableHandler.php | 82 - .../Whoops/WhoopsExceptionRenderer.php | 38 - .../Exceptions/Whoops/WhoopsHandler.php | 86 - .../Foundation/Exceptions/views/401.blade.php | 5 - .../Foundation/Exceptions/views/402.blade.php | 5 - .../Foundation/Exceptions/views/403.blade.php | 5 - .../Foundation/Exceptions/views/404.blade.php | 5 - .../Foundation/Exceptions/views/419.blade.php | 5 - .../Foundation/Exceptions/views/429.blade.php | 5 - .../Foundation/Exceptions/views/500.blade.php | 5 - .../Foundation/Exceptions/views/503.blade.php | 5 - .../Exceptions/views/layout.blade.php | 53 - .../Exceptions/views/minimal.blade.php | 34 - .../Foundation/FileBasedMaintenanceMode.php | 64 - .../Foundation/Http/Events/RequestHandled.php | 33 - .../Foundation/Http/FormRequest.php | 294 - .../Illuminate/Foundation/Http/HtmlDumper.php | 140 - .../src/Illuminate/Foundation/Http/Kernel.php | 566 - .../Http/MaintenanceModeBypassCookie.php | 43 - .../Middleware/CheckForMaintenanceMode.php | 8 - .../Middleware/ConvertEmptyStringsToNull.php | 66 - .../Middleware/HandlePrecognitiveRequests.php | 81 - .../PreventRequestsDuringMaintenance.php | 179 - .../Http/Middleware/TransformsRequest.php | 95 - .../Http/Middleware/TrimStrings.php | 79 - .../Http/Middleware/ValidatePostSize.php | 51 - .../Http/Middleware/VerifyCsrfToken.php | 228 - .../src/Illuminate/Foundation/Inspiring.php | 129 - .../Foundation/MaintenanceModeManager.php | 44 - .../src/Illuminate/Foundation/Mix.php | 74 - .../Illuminate/Foundation/PackageManifest.php | 185 - .../Illuminate/Foundation/Precognition.php | 21 - .../Foundation/ProviderRepository.php | 208 - .../Providers/ArtisanServiceProvider.php | 834 -- .../Providers/ComposerServiceProvider.php | 32 - .../ConsoleSupportServiceProvider.php | 21 - .../Providers/FormRequestServiceProvider.php | 39 - .../Providers/FoundationServiceProvider.php | 196 - .../PrecognitionCallableDispatcher.php | 23 - .../PrecognitionControllerDispatcher.php | 45 - .../Support/Providers/AuthServiceProvider.php | 50 - .../Providers/EventServiceProvider.php | 159 - .../Providers/RouteServiceProvider.php | 139 - .../Concerns/InteractsWithAuthentication.php | 151 - .../Testing/Concerns/InteractsWithConsole.php | 96 - .../Concerns/InteractsWithContainer.php | 237 - .../Concerns/InteractsWithDatabase.php | 320 - .../InteractsWithDeprecationHandling.php | 47 - .../InteractsWithExceptionHandling.php | 194 - .../Testing/Concerns/InteractsWithRedis.php | 117 - .../Testing/Concerns/InteractsWithSession.php | 64 - .../Testing/Concerns/InteractsWithTime.php | 70 - .../Testing/Concerns/InteractsWithViews.php | 83 - .../Testing/Concerns/MakesHttpRequests.php | 740 -- .../Foundation/Testing/DatabaseMigrations.php | 61 - .../Testing/DatabaseTransactions.php | 51 - .../Testing/DatabaseTransactionsManager.php | 47 - .../Foundation/Testing/DatabaseTruncation.php | 171 - .../Testing/LazilyRefreshDatabase.php | 34 - .../Foundation/Testing/RefreshDatabase.php | 147 - .../Testing/RefreshDatabaseState.php | 20 - .../Foundation/Testing/TestCase.php | 327 - .../Traits/CanConfigureMigrationCommands.php | 64 - .../Foundation/Testing/WithConsoleEvents.php | 18 - .../Foundation/Testing/WithFaker.php | 56 - .../Foundation/Testing/WithoutEvents.php | 22 - .../Foundation/Testing/WithoutMiddleware.php | 22 - .../Foundation/Testing/Wormhole.php | 245 - .../Validation/ValidatesRequests.php | 100 - .../src/Illuminate/Foundation/Vite.php | 806 -- .../ViteManifestNotFoundException.php | 10 - .../src/Illuminate/Foundation/helpers.php | 1022 -- .../Foundation/resources/server.php | 16 - .../Illuminate/Foundation/stubs/facade.stub | 19 - .../src/Illuminate/Hashing/AbstractHasher.php | 34 - .../src/Illuminate/Hashing/Argon2IdHasher.php | 52 - .../src/Illuminate/Hashing/ArgonHasher.php | 246 - .../src/Illuminate/Hashing/BcryptHasher.php | 156 - .../src/Illuminate/Hashing/HashManager.php | 111 - .../Hashing/HashServiceProvider.php | 35 - .../src/Illuminate/Hashing/LICENSE.md | 21 - .../src/Illuminate/Hashing/composer.json | 35 - .../Client/Concerns/DeterminesStatusCode.php | 167 - .../Http/Client/ConnectionException.php | 8 - .../Http/Client/Events/ConnectionFailed.php | 26 - .../Http/Client/Events/RequestSending.php | 26 - .../Http/Client/Events/ResponseReceived.php | 36 - .../src/Illuminate/Http/Client/Factory.php | 463 - .../Http/Client/HttpClientException.php | 10 - .../Illuminate/Http/Client/PendingRequest.php | 1463 --- .../src/Illuminate/Http/Client/Pool.php | 87 - .../src/Illuminate/Http/Client/Request.php | 305 - .../Http/Client/RequestException.php | 43 - .../src/Illuminate/Http/Client/Response.php | 444 - .../Http/Client/ResponseSequence.php | 156 - .../Http/Concerns/CanBePrecognitive.php | 45 - .../Concerns/InteractsWithContentTypes.php | 179 - .../Http/Concerns/InteractsWithFlashData.php | 68 - .../Http/Concerns/InteractsWithInput.php | 636 - .../Http/Exceptions/HttpResponseException.php | 37 - .../Http/Exceptions/PostTooLargeException.php | 23 - .../Exceptions/ThrottleRequestsException.php | 23 - .../framework/src/Illuminate/Http/File.php | 10 - .../src/Illuminate/Http/FileHelpers.php | 66 - .../src/Illuminate/Http/JsonResponse.php | 136 - .../framework/src/Illuminate/Http/LICENSE.md | 21 - .../AddLinkHeadersForPreloadedAssets.php | 27 - .../CheckResponseForModifications.php | 27 - .../Illuminate/Http/Middleware/FrameGuard.php | 24 - .../Illuminate/Http/Middleware/HandleCors.php | 112 - .../Http/Middleware/SetCacheHeaders.php | 85 - .../Illuminate/Http/Middleware/TrustHosts.php | 73 - .../Http/Middleware/TrustProxies.php | 120 - .../src/Illuminate/Http/RedirectResponse.php | 258 - .../framework/src/Illuminate/Http/Request.php | 791 -- .../Http/Resources/CollectsResources.php | 94 - .../ConditionallyLoadsAttributes.php | 417 - .../Http/Resources/DelegatesToResource.php | 157 - .../Json/AnonymousResourceCollection.php | 34 - .../Http/Resources/Json/JsonResource.php | 256 - .../Json/PaginatedResourceResponse.php | 93 - .../Resources/Json/ResourceCollection.php | 136 - .../Http/Resources/Json/ResourceResponse.php | 122 - .../Illuminate/Http/Resources/MergeValue.php | 33 - .../Http/Resources/MissingValue.php | 16 - .../Http/Resources/PotentiallyMissing.php | 13 - .../src/Illuminate/Http/Response.php | 108 - .../src/Illuminate/Http/ResponseTrait.php | 182 - .../src/Illuminate/Http/Testing/File.php | 147 - .../Illuminate/Http/Testing/FileFactory.php | 100 - .../src/Illuminate/Http/Testing/MimeType.php | 65 - .../src/Illuminate/Http/UploadedFile.php | 157 - .../src/Illuminate/Http/composer.json | 47 - .../Illuminate/Log/Events/MessageLogged.php | 42 - .../framework/src/Illuminate/Log/LICENSE.md | 21 - .../src/Illuminate/Log/LogManager.php | 761 -- .../src/Illuminate/Log/LogServiceProvider.php | 18 - .../framework/src/Illuminate/Log/Logger.php | 313 - .../Illuminate/Log/ParsesLogConfiguration.php | 81 - .../src/Illuminate/Log/composer.json | 36 - .../src/Illuminate/Macroable/LICENSE.md | 21 - .../Illuminate/Macroable/Traits/Macroable.php | 125 - .../src/Illuminate/Macroable/composer.json | 33 - .../src/Illuminate/Mail/Attachment.php | 192 - .../Illuminate/Mail/Events/MessageSending.php | 35 - .../Illuminate/Mail/Events/MessageSent.php | 87 - .../framework/src/Illuminate/Mail/LICENSE.md | 21 - .../src/Illuminate/Mail/MailManager.php | 594 - .../Illuminate/Mail/MailServiceProvider.php | 73 - .../src/Illuminate/Mail/Mailable.php | 1821 --- .../src/Illuminate/Mail/Mailables/Address.php | 33 - .../Illuminate/Mail/Mailables/Attachment.php | 10 - .../src/Illuminate/Mail/Mailables/Content.php | 157 - .../Illuminate/Mail/Mailables/Envelope.php | 369 - .../src/Illuminate/Mail/Mailables/Headers.php | 100 - .../framework/src/Illuminate/Mail/Mailer.php | 656 - .../src/Illuminate/Mail/Markdown.php | 189 - .../framework/src/Illuminate/Mail/Message.php | 412 - .../src/Illuminate/Mail/PendingMail.php | 166 - .../Illuminate/Mail/SendQueuedMailable.php | 146 - .../src/Illuminate/Mail/SentMessage.php | 82 - .../src/Illuminate/Mail/TextMessage.php | 67 - .../Mail/Transport/ArrayTransport.php | 67 - .../Mail/Transport/LogTransport.php | 98 - .../Mail/Transport/SesTransport.php | 131 - .../Mail/Transport/SesV2Transport.php | 135 - .../src/Illuminate/Mail/composer.json | 48 - .../resources/views/html/button.blade.php | 24 - .../resources/views/html/footer.blade.php | 11 - .../resources/views/html/header.blade.php | 12 - .../resources/views/html/layout.blade.php | 57 - .../resources/views/html/message.blade.php | 27 - .../Mail/resources/views/html/panel.blade.php | 14 - .../resources/views/html/subcopy.blade.php | 7 - .../Mail/resources/views/html/table.blade.php | 3 - .../resources/views/html/themes/default.css | 290 - .../resources/views/text/button.blade.php | 1 - .../resources/views/text/footer.blade.php | 1 - .../resources/views/text/header.blade.php | 1 - .../resources/views/text/layout.blade.php | 9 - .../resources/views/text/message.blade.php | 27 - .../Mail/resources/views/text/panel.blade.php | 1 - .../resources/views/text/subcopy.blade.php | 1 - .../Mail/resources/views/text/table.blade.php | 1 - .../src/Illuminate/Notifications/Action.php | 33 - .../Notifications/AnonymousNotifiable.php | 79 - .../Notifications/ChannelManager.php | 162 - .../Channels/BroadcastChannel.php | 75 - .../Channels/DatabaseChannel.php | 65 - .../Notifications/Channels/MailChannel.php | 305 - .../Console/NotificationTableCommand.php | 44 - .../Console/stubs/notifications.stub | 31 - .../Notifications/DatabaseNotification.php | 134 - .../DatabaseNotificationCollection.php | 34 - .../Events/BroadcastNotificationCreated.php | 135 - .../Events/NotificationFailed.php | 56 - .../Events/NotificationSending.php | 47 - .../Notifications/Events/NotificationSent.php | 56 - .../HasDatabaseNotifications.php | 36 - .../src/Illuminate/Notifications/LICENSE.md | 21 - .../Messages/BroadcastMessage.php | 41 - .../Messages/DatabaseMessage.php | 24 - .../Notifications/Messages/MailMessage.php | 421 - .../Notifications/Messages/SimpleMessage.php | 292 - .../Illuminate/Notifications/Notifiable.php | 8 - .../Illuminate/Notifications/Notification.php | 47 - .../Notifications/NotificationSender.php | 255 - .../NotificationServiceProvider.php | 44 - .../Notifications/RoutesNotifications.php | 52 - .../Notifications/SendQueuedNotifications.php | 183 - .../Illuminate/Notifications/composer.json | 45 - .../resources/views/email.blade.php | 58 - .../Pagination/AbstractCursorPaginator.php | 671 - .../Pagination/AbstractPaginator.php | 797 -- .../src/Illuminate/Pagination/Cursor.php | 132 - .../Illuminate/Pagination/CursorPaginator.php | 172 - .../src/Illuminate/Pagination/LICENSE.md | 21 - .../Pagination/LengthAwarePaginator.php | 231 - .../Pagination/PaginationServiceProvider.php | 34 - .../Illuminate/Pagination/PaginationState.php | 35 - .../src/Illuminate/Pagination/Paginator.php | 176 - .../src/Illuminate/Pagination/UrlWindow.php | 220 - .../src/Illuminate/Pagination/composer.json | 37 - .../resources/views/bootstrap-4.blade.php | 46 - .../resources/views/bootstrap-5.blade.php | 88 - .../resources/views/default.blade.php | 46 - .../resources/views/semantic-ui.blade.php | 36 - .../views/simple-bootstrap-4.blade.php | 27 - .../views/simple-bootstrap-5.blade.php | 29 - .../resources/views/simple-default.blade.php | 19 - .../resources/views/simple-tailwind.blade.php | 25 - .../resources/views/tailwind.blade.php | 106 - .../framework/src/Illuminate/Pipeline/Hub.php | 97 - .../src/Illuminate/Pipeline/LICENSE.md | 21 - .../src/Illuminate/Pipeline/Pipeline.php | 274 - .../Pipeline/PipelineServiceProvider.php | 38 - .../src/Illuminate/Pipeline/composer.json | 35 - .../Exceptions/ProcessFailedException.php | 42 - .../Exceptions/ProcessTimedOutException.php | 31 - .../src/Illuminate/Process/Factory.php | 328 - .../Illuminate/Process/FakeInvokedProcess.php | 302 - .../Process/FakeProcessDescription.php | 225 - .../Illuminate/Process/FakeProcessResult.php | 210 - .../Process/FakeProcessSequence.php | 121 - .../src/Illuminate/Process/InvokedProcess.php | 121 - .../Illuminate/Process/InvokedProcessPool.php | 67 - .../src/Illuminate/Process/LICENSE.md | 21 - .../src/Illuminate/Process/PendingProcess.php | 420 - .../framework/src/Illuminate/Process/Pipe.php | 102 - .../framework/src/Illuminate/Process/Pool.php | 118 - .../Illuminate/Process/ProcessPoolResults.php | 82 - .../src/Illuminate/Process/ProcessResult.php | 151 - .../src/Illuminate/Process/composer.json | 38 - .../Queue/Attributes/WithoutRelations.php | 11 - .../src/Illuminate/Queue/BeanstalkdQueue.php | 211 - .../Illuminate/Queue/CallQueuedClosure.php | 111 - .../Illuminate/Queue/CallQueuedHandler.php | 297 - .../src/Illuminate/Queue/Capsule/Manager.php | 187 - .../Queue/Connectors/BeanstalkdConnector.php | 42 - .../Queue/Connectors/ConnectorInterface.php | 14 - .../Queue/Connectors/DatabaseConnector.php | 44 - .../Queue/Connectors/NullConnector.php | 19 - .../Queue/Connectors/RedisConnector.php | 54 - .../Queue/Connectors/SqsConnector.php | 52 - .../Queue/Connectors/SyncConnector.php | 19 - .../Queue/Console/BatchesTableCommand.php | 44 - .../Illuminate/Queue/Console/ClearCommand.php | 105 - .../Queue/Console/FailedTableCommand.php | 44 - .../Queue/Console/FlushFailedCommand.php | 42 - .../Queue/Console/ForgetFailedCommand.php | 40 - .../Queue/Console/ListFailedCommand.php | 123 - .../Queue/Console/ListenCommand.php | 130 - .../Queue/Console/MonitorCommand.php | 143 - .../Queue/Console/PruneBatchesCommand.php | 69 - .../Queue/Console/PruneFailedJobsCommand.php | 47 - .../Queue/Console/RestartCommand.php | 60 - .../Queue/Console/RetryBatchCommand.php | 64 - .../Illuminate/Queue/Console/RetryCommand.php | 202 - .../Illuminate/Queue/Console/TableCommand.php | 44 - .../Illuminate/Queue/Console/WorkCommand.php | 306 - .../Queue/Console/stubs/batches.stub | 35 - .../Queue/Console/stubs/failed_jobs.stub | 32 - .../Illuminate/Queue/Console/stubs/jobs.stub | 32 - .../src/Illuminate/Queue/DatabaseQueue.php | 414 - .../Queue/Events/JobExceptionOccurred.php | 42 - .../src/Illuminate/Queue/Events/JobFailed.php | 42 - .../src/Illuminate/Queue/Events/JobPopped.php | 33 - .../Illuminate/Queue/Events/JobPopping.php | 24 - .../Illuminate/Queue/Events/JobProcessed.php | 33 - .../Illuminate/Queue/Events/JobProcessing.php | 33 - .../src/Illuminate/Queue/Events/JobQueued.php | 67 - .../Illuminate/Queue/Events/JobQueueing.php | 58 - .../Events/JobReleasedAfterException.php | 33 - .../Queue/Events/JobRetryRequested.php | 45 - .../Illuminate/Queue/Events/JobTimedOut.php | 33 - .../src/Illuminate/Queue/Events/Looping.php | 33 - .../src/Illuminate/Queue/Events/QueueBusy.php | 42 - .../Queue/Events/WorkerStopping.php | 33 - .../Failed/CountableFailedJobProvider.php | 15 - .../Failed/DatabaseFailedJobProvider.php | 172 - .../Failed/DatabaseUuidFailedJobProvider.php | 185 - .../Failed/DynamoDbFailedJobProvider.php | 191 - .../Failed/FailedJobProviderInterface.php | 51 - .../Queue/Failed/FileFailedJobProvider.php | 237 - .../Queue/Failed/NullFailedJobProvider.php | 86 - .../Failed/PrunableFailedJobProvider.php | 16 - .../Illuminate/Queue/InteractsWithQueue.php | 94 - .../Queue/InvalidPayloadException.php | 29 - .../Illuminate/Queue/Jobs/BeanstalkdJob.php | 135 - .../src/Illuminate/Queue/Jobs/DatabaseJob.php | 108 - .../Queue/Jobs/DatabaseJobRecord.php | 63 - .../src/Illuminate/Queue/Jobs/Job.php | 382 - .../src/Illuminate/Queue/Jobs/JobName.php | 35 - .../src/Illuminate/Queue/Jobs/RedisJob.php | 139 - .../src/Illuminate/Queue/Jobs/SqsJob.php | 124 - .../src/Illuminate/Queue/Jobs/SyncJob.php | 91 - .../framework/src/Illuminate/Queue/LICENSE.md | 21 - .../src/Illuminate/Queue/Listener.php | 236 - .../src/Illuminate/Queue/ListenerOptions.php | 34 - .../src/Illuminate/Queue/LuaScripts.php | 148 - .../Queue/ManuallyFailedException.php | 10 - .../Queue/MaxAttemptsExceededException.php | 28 - .../Queue/Middleware/RateLimited.php | 146 - .../Queue/Middleware/RateLimitedWithRedis.php | 103 - .../Queue/Middleware/SkipIfBatchCancelled.php | 22 - .../Queue/Middleware/ThrottlesExceptions.php | 201 - .../ThrottlesExceptionsWithRedis.php | 62 - .../Queue/Middleware/WithoutOverlapping.php | 162 - .../src/Illuminate/Queue/NullQueue.php | 70 - .../framework/src/Illuminate/Queue/Queue.php | 442 - .../src/Illuminate/Queue/QueueManager.php | 293 - .../Illuminate/Queue/QueueServiceProvider.php | 342 - .../framework/src/Illuminate/Queue/README.md | 34 - .../src/Illuminate/Queue/RedisQueue.php | 382 - .../SerializesAndRestoresModelIdentifiers.php | 123 - .../src/Illuminate/Queue/SerializesModels.php | 108 - .../src/Illuminate/Queue/SqsQueue.php | 241 - .../src/Illuminate/Queue/SyncQueue.php | 160 - .../Queue/TimeoutExceededException.php | 19 - .../framework/src/Illuminate/Queue/Worker.php | 876 -- .../src/Illuminate/Queue/WorkerOptions.php | 115 - .../src/Illuminate/Queue/composer.json | 54 - .../Redis/Connections/Connection.php | 231 - .../Redis/Connections/PacksPhpRedisValues.php | 183 - .../Connections/PhpRedisClusterConnection.php | 24 - .../Redis/Connections/PhpRedisConnection.php | 566 - .../Connections/PredisClusterConnection.php | 25 - .../Redis/Connections/PredisConnection.php | 70 - .../Redis/Connectors/PhpRedisConnector.php | 228 - .../Redis/Connectors/PredisConnector.php | 53 - .../Redis/Events/CommandExecuted.php | 59 - .../framework/src/Illuminate/Redis/LICENSE.md | 21 - .../Redis/Limiters/ConcurrencyLimiter.php | 168 - .../Limiters/ConcurrencyLimiterBuilder.php | 142 - .../Redis/Limiters/DurationLimiter.php | 204 - .../Redis/Limiters/DurationLimiterBuilder.php | 142 - .../src/Illuminate/Redis/RedisManager.php | 278 - .../Illuminate/Redis/RedisServiceProvider.php | 38 - .../src/Illuminate/Redis/composer.json | 41 - .../Routing/AbstractRouteCollection.php | 284 - .../Illuminate/Routing/CallableDispatcher.php | 54 - .../Routing/CompiledRouteCollection.php | 330 - .../Routing/Console/ControllerMakeCommand.php | 332 - .../Routing/Console/MiddlewareMakeCommand.php | 68 - .../Routing/Console/stubs/controller.api.stub | 49 - .../Console/stubs/controller.invokable.stub | 17 - .../Console/stubs/controller.model.api.stub | 50 - .../Console/stubs/controller.model.stub | 66 - .../Console/stubs/controller.nested.api.stub | 51 - .../controller.nested.singleton.api.stub | 43 - .../stubs/controller.nested.singleton.stub | 59 - .../Console/stubs/controller.nested.stub | 67 - .../Console/stubs/controller.plain.stub | 11 - .../stubs/controller.singleton.api.stub | 41 - .../Console/stubs/controller.singleton.stub | 57 - .../Routing/Console/stubs/controller.stub | 65 - .../Routing/Console/stubs/middleware.stub | 20 - .../Routing/Contracts/CallableDispatcher.php | 17 - .../Contracts/ControllerDispatcher.php | 27 - .../src/Illuminate/Routing/Controller.php | 72 - .../Routing/ControllerDispatcher.php | 81 - .../Routing/ControllerMiddlewareOptions.php | 50 - .../Routing/Controllers/HasMiddleware.php | 13 - .../Routing/Controllers/Middleware.php | 67 - ...eatesRegularExpressionRouteConstraints.php | 89 - .../Routing/Events/PreparingResponse.php | 33 - .../Routing/Events/ResponsePrepared.php | 33 - .../Routing/Events/RouteMatched.php | 33 - .../src/Illuminate/Routing/Events/Routing.php | 24 - .../BackedEnumCaseNotFoundException.php | 20 - .../Exceptions/InvalidSignatureException.php | 18 - .../Exceptions/StreamedResponseException.php | 50 - .../Exceptions/UrlGenerationException.php | 37 - .../Routing/FiltersControllerMiddleware.php | 19 - .../Routing/ImplicitRouteBinding.php | 118 - .../src/Illuminate/Routing/LICENSE.md | 21 - .../Routing/Matching/HostValidator.php | 27 - .../Routing/Matching/MethodValidator.php | 21 - .../Routing/Matching/SchemeValidator.php | 27 - .../Routing/Matching/UriValidator.php | 23 - .../Routing/Matching/ValidatorInterface.php | 18 - .../Routing/Middleware/SubstituteBindings.php | 52 - .../Routing/Middleware/ThrottleRequests.php | 331 - .../Middleware/ThrottleRequestsWithRedis.php | 132 - .../Routing/Middleware/ValidateSignature.php | 90 - .../Routing/MiddlewareNameResolver.php | 85 - .../Routing/PendingResourceRegistration.php | 268 - .../PendingSingletonResourceRegistration.php | 240 - .../src/Illuminate/Routing/Pipeline.php | 59 - .../Illuminate/Routing/RedirectController.php | 44 - .../src/Illuminate/Routing/Redirector.php | 263 - .../Routing/ResolvesRouteDependencies.php | 117 - .../Illuminate/Routing/ResourceRegistrar.php | 714 -- .../Illuminate/Routing/ResponseFactory.php | 276 - .../src/Illuminate/Routing/Route.php | 1373 -- .../src/Illuminate/Routing/RouteAction.php | 111 - .../src/Illuminate/Routing/RouteBinding.php | 84 - .../Illuminate/Routing/RouteCollection.php | 268 - .../Routing/RouteCollectionInterface.php | 98 - .../Routing/RouteDependencyResolverTrait.php | 11 - .../Illuminate/Routing/RouteFileRegistrar.php | 37 - .../src/Illuminate/Routing/RouteGroup.php | 105 - .../Routing/RouteParameterBinder.php | 117 - .../src/Illuminate/Routing/RouteRegistrar.php | 287 - .../Routing/RouteSignatureParameters.php | 52 - .../src/Illuminate/Routing/RouteUri.php | 62 - .../Illuminate/Routing/RouteUrlGenerator.php | 320 - .../src/Illuminate/Routing/Router.php | 1504 --- .../Routing/RoutingServiceProvider.php | 209 - .../Illuminate/Routing/SortedMiddleware.php | 130 - .../src/Illuminate/Routing/UrlGenerator.php | 870 -- .../src/Illuminate/Routing/ViewController.php | 60 - .../src/Illuminate/Routing/composer.json | 51 - .../Session/ArraySessionHandler.php | 139 - .../Session/CacheBasedSessionHandler.php | 106 - .../Session/Console/SessionTableCommand.php | 44 - .../Session/Console/stubs/database.stub | 31 - .../Session/CookieSessionHandler.php | 141 - .../Session/DatabaseSessionHandler.php | 319 - .../src/Illuminate/Session/EncryptedStore.php | 70 - .../Session/ExistenceAwareInterface.php | 14 - .../Illuminate/Session/FileSessionHandler.php | 129 - .../src/Illuminate/Session/LICENSE.md | 21 - .../Middleware/AuthenticateSession.php | 123 - .../Session/Middleware/StartSession.php | 306 - .../Illuminate/Session/NullSessionHandler.php | 68 - .../src/Illuminate/Session/SessionManager.php | 289 - .../Session/SessionServiceProvider.php | 55 - .../src/Illuminate/Session/Store.php | 782 -- .../Session/SymfonySessionDecorator.php | 200 - .../Session/TokenMismatchException.php | 10 - .../src/Illuminate/Session/composer.json | 44 - .../Support/AggregateServiceProvider.php | 52 - .../src/Illuminate/Support/Benchmark.php | 69 - .../src/Illuminate/Support/Carbon.php | 61 - .../src/Illuminate/Support/Composer.php | 256 - .../Support/ConfigurationUrlParser.php | 191 - .../src/Illuminate/Support/DateFactory.php | 231 - .../Illuminate/Support/DefaultProviders.php | 102 - .../framework/src/Illuminate/Support/Env.php | 125 - .../Support/Exceptions/MathException.php | 10 - .../src/Illuminate/Support/Facades/App.php | 146 - .../Illuminate/Support/Facades/Artisan.php | 35 - .../src/Illuminate/Support/Facades/Auth.php | 98 - .../src/Illuminate/Support/Facades/Blade.php | 61 - .../Illuminate/Support/Facades/Broadcast.php | 47 - .../src/Illuminate/Support/Facades/Bus.php | 97 - .../src/Illuminate/Support/Facades/Cache.php | 71 - .../src/Illuminate/Support/Facades/Config.php | 31 - .../src/Illuminate/Support/Facades/Cookie.php | 58 - .../src/Illuminate/Support/Facades/Crypt.php | 27 - .../src/Illuminate/Support/Facades/DB.php | 125 - .../src/Illuminate/Support/Facades/Date.php | 122 - .../src/Illuminate/Support/Facades/Event.php | 129 - .../src/Illuminate/Support/Facades/Facade.php | 357 - .../src/Illuminate/Support/Facades/File.php | 72 - .../src/Illuminate/Support/Facades/Gate.php | 48 - .../src/Illuminate/Support/Facades/Hash.php | 36 - .../src/Illuminate/Support/Facades/Http.php | 160 - .../src/Illuminate/Support/Facades/Lang.php | 47 - .../src/Illuminate/Support/Facades/Log.php | 50 - .../src/Illuminate/Support/Facades/Mail.php | 89 - .../Support/Facades/Notification.php | 95 - .../Support/Facades/ParallelTesting.php | 34 - .../Illuminate/Support/Facades/Password.php | 68 - .../Illuminate/Support/Facades/Pipeline.php | 36 - .../Illuminate/Support/Facades/Process.php | 74 - .../src/Illuminate/Support/Facades/Queue.php | 100 - .../Support/Facades/RateLimiter.php | 32 - .../Illuminate/Support/Facades/Redirect.php | 39 - .../src/Illuminate/Support/Facades/Redis.php | 46 - .../Illuminate/Support/Facades/Request.php | 196 - .../Illuminate/Support/Facades/Response.php | 40 - .../src/Illuminate/Support/Facades/Route.php | 116 - .../src/Illuminate/Support/Facades/Schema.php | 78 - .../Illuminate/Support/Facades/Session.php | 83 - .../Illuminate/Support/Facades/Storage.php | 142 - .../src/Illuminate/Support/Facades/URL.php | 63 - .../Illuminate/Support/Facades/Validator.php | 34 - .../src/Illuminate/Support/Facades/View.php | 97 - .../src/Illuminate/Support/Facades/Vite.php | 43 - .../src/Illuminate/Support/Fluent.php | 201 - .../Support/HigherOrderTapProxy.php | 38 - .../src/Illuminate/Support/HtmlString.php | 66 - .../Illuminate/Support/InteractsWithTime.php | 64 - .../framework/src/Illuminate/Support/Js.php | 150 - .../src/Illuminate/Support/LICENSE.md | 21 - .../src/Illuminate/Support/Lottery.php | 271 - .../src/Illuminate/Support/Manager.php | 193 - .../src/Illuminate/Support/MessageBag.php | 446 - .../Support/MultipleInstanceManager.php | 191 - .../Support/NamespacedItemResolver.php | 112 - .../src/Illuminate/Support/Number.php | 275 - .../src/Illuminate/Support/Optional.php | 131 - .../src/Illuminate/Support/Pluralizer.php | 127 - .../src/Illuminate/Support/ProcessUtils.php | 69 - .../src/Illuminate/Support/Reflector.php | 170 - .../Illuminate/Support/ServiceProvider.php | 447 - .../src/Illuminate/Support/Sleep.php | 461 - .../framework/src/Illuminate/Support/Str.php | 1820 --- .../src/Illuminate/Support/Stringable.php | 1418 --- .../Support/Testing/Fakes/BatchFake.php | 166 - .../Testing/Fakes/BatchRepositoryFake.php | 153 - .../Support/Testing/Fakes/BusFake.php | 863 -- .../Testing/Fakes/ChainedBatchTruthTest.php | 37 - .../Support/Testing/Fakes/EventFake.php | 418 - .../Illuminate/Support/Testing/Fakes/Fake.php | 8 - .../Support/Testing/Fakes/MailFake.php | 516 - .../Testing/Fakes/NotificationFake.php | 361 - .../Testing/Fakes/PendingBatchFake.php | 49 - .../Testing/Fakes/PendingChainFake.php | 56 - .../Support/Testing/Fakes/PendingMailFake.php | 42 - .../Support/Testing/Fakes/QueueFake.php | 577 - .../src/Illuminate/Support/Timebox.php | 84 - .../Support/Traits/CapsuleManagerTrait.php | 69 - .../Support/Traits/ForwardsCalls.php | 71 - .../Illuminate/Support/Traits/Localizable.php | 34 - .../Support/Traits/ReflectsClosures.php | 88 - .../Illuminate/Support/Traits/Tappable.php | 17 - .../src/Illuminate/Support/ValidatedInput.php | 245 - .../src/Illuminate/Support/ViewErrorBag.php | 130 - .../src/Illuminate/Support/composer.json | 58 - .../src/Illuminate/Support/helpers.php | 434 - .../src/Illuminate/Testing/Assert.php | 38 - .../Testing/AssertableJsonString.php | 425 - .../Testing/Concerns/AssertsStatusCodes.php | 253 - .../Testing/Concerns/RunsInParallel.php | 193 - .../Testing/Concerns/TestDatabases.php | 193 - .../Testing/Constraints/ArraySubset.php | 143 - .../Testing/Constraints/CountInDatabase.php | 83 - .../Testing/Constraints/HasInDatabase.php | 121 - .../Constraints/NotSoftDeletedInDatabase.php | 115 - .../Testing/Constraints/SeeInOrder.php | 88 - .../Constraints/SoftDeletedInDatabase.php | 117 - .../Exceptions/InvalidArgumentException.php | 34 - .../Testing/Fluent/AssertableJson.php | 179 - .../Testing/Fluent/Concerns/Debugging.php | 38 - .../Testing/Fluent/Concerns/Has.php | 213 - .../Testing/Fluent/Concerns/Interaction.php | 67 - .../Testing/Fluent/Concerns/Matching.php | 236 - .../src/Illuminate/Testing/LICENSE.md | 21 - .../Testing/LoggedExceptionCollection.php | 10 - .../Testing/ParallelConsoleOutput.php | 60 - .../src/Illuminate/Testing/ParallelRunner.php | 37 - .../Illuminate/Testing/ParallelTesting.php | 291 - .../ParallelTestingServiceProvider.php | 38 - .../src/Illuminate/Testing/PendingCommand.php | 486 - .../src/Illuminate/Testing/TestComponent.php | 166 - .../src/Illuminate/Testing/TestResponse.php | 1795 --- .../src/Illuminate/Testing/TestView.php | 226 - .../src/Illuminate/Testing/composer.json | 46 - .../Illuminate/Translation/ArrayLoader.php | 81 - .../CreatesPotentiallyTranslatedStrings.php | 54 - .../src/Illuminate/Translation/FileLoader.php | 204 - .../src/Illuminate/Translation/LICENSE.md | 21 - .../Translation/MessageSelector.php | 410 - .../PotentiallyTranslatedString.php | 101 - .../TranslationServiceProvider.php | 56 - .../src/Illuminate/Translation/Translator.php | 557 - .../src/Illuminate/Translation/composer.json | 38 - .../Illuminate/Translation/lang/en/auth.php | 20 - .../Translation/lang/en/pagination.php | 19 - .../Translation/lang/en/passwords.php | 22 - .../Translation/lang/en/validation.php | 191 - .../Validation/ClosureValidationRule.php | 94 - .../Concerns/FilterEmailValidation.php | 72 - .../Validation/Concerns/FormatsMessages.php | 524 - .../Concerns/ReplacesAttributes.php | 869 -- .../Concerns/ValidatesAttributes.php | 2626 ---- .../Validation/ConditionalRules.php | 83 - .../Validation/DatabasePresenceVerifier.php | 137 - .../DatabasePresenceVerifierInterface.php | 14 - .../src/Illuminate/Validation/Factory.php | 335 - .../Validation/InvokableValidationRule.php | 156 - .../src/Illuminate/Validation/LICENSE.md | 21 - .../src/Illuminate/Validation/NestedRules.php | 57 - .../Validation/NotPwnedVerifier.php | 104 - .../Validation/PresenceVerifierInterface.php | 30 - .../src/Illuminate/Validation/Rule.php | 201 - .../src/Illuminate/Validation/Rules/Can.php | 86 - .../Validation/Rules/DatabaseRule.php | 241 - .../Validation/Rules/Dimensions.php | 135 - .../src/Illuminate/Validation/Rules/Enum.php | 86 - .../Illuminate/Validation/Rules/ExcludeIf.php | 47 - .../Illuminate/Validation/Rules/Exists.php | 24 - .../src/Illuminate/Validation/Rules/File.php | 377 - .../Illuminate/Validation/Rules/ImageFile.php | 28 - .../src/Illuminate/Validation/Rules/In.php | 61 - .../src/Illuminate/Validation/Rules/NotIn.php | 59 - .../Illuminate/Validation/Rules/Password.php | 382 - .../Validation/Rules/ProhibitedIf.php | 47 - .../Validation/Rules/RequiredIf.php | 44 - .../Illuminate/Validation/Rules/Unique.php | 75 - .../Validation/UnauthorizedException.php | 10 - .../Validation/ValidatesWhenResolvedTrait.php | 108 - .../Illuminate/Validation/ValidationData.php | 112 - .../Validation/ValidationException.php | 163 - .../Validation/ValidationRuleParser.php | 342 - .../Validation/ValidationServiceProvider.php | 78 - .../src/Illuminate/Validation/Validator.php | 1635 --- .../src/Illuminate/Validation/composer.json | 48 - .../Illuminate/View/AnonymousComponent.php | 60 - .../View/AppendableAttributeValue.php | 34 - .../View/Compilers/BladeCompiler.php | 1029 -- .../Illuminate/View/Compilers/Compiler.php | 135 - .../View/Compilers/CompilerInterface.php | 30 - .../View/Compilers/ComponentTagCompiler.php | 798 -- .../Concerns/CompilesAuthorizations.php | 102 - .../Compilers/Concerns/CompilesClasses.php | 19 - .../Compilers/Concerns/CompilesComments.php | 19 - .../Compilers/Concerns/CompilesComponents.php | 206 - .../Concerns/CompilesConditionals.php | 409 - .../View/Compilers/Concerns/CompilesEchos.php | 171 - .../Compilers/Concerns/CompilesErrors.php | 37 - .../Compilers/Concerns/CompilesFragments.php | 36 - .../Compilers/Concerns/CompilesHelpers.php | 78 - .../Compilers/Concerns/CompilesIncludes.php | 82 - .../Compilers/Concerns/CompilesInjections.php | 23 - .../View/Compilers/Concerns/CompilesJs.php | 22 - .../View/Compilers/Concerns/CompilesJson.php | 30 - .../Compilers/Concerns/CompilesLayouts.php | 133 - .../View/Compilers/Concerns/CompilesLoops.php | 194 - .../Compilers/Concerns/CompilesRawPhp.php | 32 - .../Compilers/Concerns/CompilesSessions.php | 37 - .../Compilers/Concerns/CompilesStacks.php | 117 - .../Compilers/Concerns/CompilesStyles.php | 19 - .../Concerns/CompilesTranslations.php | 44 - .../Concerns/CompilesUseStatements.php | 22 - .../src/Illuminate/View/Component.php | 467 - .../Illuminate/View/ComponentAttributeBag.php | 513 - .../src/Illuminate/View/ComponentSlot.php | 89 - .../View/Concerns/ManagesComponents.php | 221 - .../View/Concerns/ManagesEvents.php | 190 - .../View/Concerns/ManagesFragments.php | 88 - .../View/Concerns/ManagesLayouts.php | 255 - .../Illuminate/View/Concerns/ManagesLoops.php | 96 - .../View/Concerns/ManagesStacks.php | 179 - .../View/Concerns/ManagesTranslations.php | 38 - .../src/Illuminate/View/DynamicComponent.php | 172 - .../View/Engines/CompilerEngine.php | 144 - .../src/Illuminate/View/Engines/Engine.php | 23 - .../View/Engines/EngineResolver.php | 71 - .../Illuminate/View/Engines/FileEngine.php | 39 - .../src/Illuminate/View/Engines/PhpEngine.php | 83 - .../framework/src/Illuminate/View/Factory.php | 614 - .../src/Illuminate/View/FileViewFinder.php | 330 - .../View/InvokableComponentVariable.php | 96 - .../framework/src/Illuminate/View/LICENSE.md | 21 - .../Middleware/ShareErrorsFromSession.php | 51 - .../framework/src/Illuminate/View/View.php | 506 - .../src/Illuminate/View/ViewException.php | 41 - .../Illuminate/View/ViewFinderInterface.php | 71 - .../src/Illuminate/View/ViewName.php | 25 - .../Illuminate/View/ViewServiceProvider.php | 173 - .../src/Illuminate/View/composer.json | 41 - vendor/laravel/prompts/LICENSE.md | 21 - vendor/laravel/prompts/README.md | 34 - vendor/laravel/prompts/composer.json | 49 - vendor/laravel/prompts/phpunit.xml | 14 - .../laravel/prompts/src/Concerns/Colors.php | 206 - .../laravel/prompts/src/Concerns/Cursor.php | 63 - vendor/laravel/prompts/src/Concerns/Erase.php | 31 - .../laravel/prompts/src/Concerns/Events.php | 41 - .../prompts/src/Concerns/FakesInputOutput.php | 91 - .../laravel/prompts/src/Concerns/Fallback.php | 61 - .../prompts/src/Concerns/Interactivity.php | 37 - .../prompts/src/Concerns/Scrolling.php | 115 - .../laravel/prompts/src/Concerns/Termwind.php | 25 - .../laravel/prompts/src/Concerns/Themes.php | 111 - .../prompts/src/Concerns/Truncation.php | 20 - .../prompts/src/Concerns/TypedValue.php | 120 - vendor/laravel/prompts/src/ConfirmPrompt.php | 50 - .../NonInteractiveValidationException.php | 10 - vendor/laravel/prompts/src/Key.php | 88 - .../laravel/prompts/src/MultiSearchPrompt.php | 168 - .../laravel/prompts/src/MultiSelectPrompt.php | 133 - vendor/laravel/prompts/src/Note.php | 44 - .../src/Output/BufferedConsoleOutput.php | 50 - .../prompts/src/Output/ConsoleOutput.php | 49 - vendor/laravel/prompts/src/PasswordPrompt.php | 41 - vendor/laravel/prompts/src/Progress.php | 205 - vendor/laravel/prompts/src/Prompt.php | 394 - vendor/laravel/prompts/src/SearchPrompt.php | 138 - vendor/laravel/prompts/src/SelectPrompt.php | 106 - vendor/laravel/prompts/src/Spinner.php | 160 - vendor/laravel/prompts/src/SuggestPrompt.php | 123 - vendor/laravel/prompts/src/Table.php | 71 - vendor/laravel/prompts/src/Terminal.php | 105 - vendor/laravel/prompts/src/TextPrompt.php | 34 - .../src/Themes/Contracts/Scrolling.php | 11 - .../Themes/Default/Concerns/DrawsBoxes.php | 93 - .../Default/Concerns/DrawsScrollbars.php | 55 - .../Themes/Default/ConfirmPromptRenderer.php | 71 - .../Default/MultiSearchPromptRenderer.php | 176 - .../Default/MultiSelectPromptRenderer.php | 121 - .../src/Themes/Default/NoteRenderer.php | 56 - .../Themes/Default/PasswordPromptRenderer.php | 53 - .../src/Themes/Default/ProgressRenderer.php | 63 - .../prompts/src/Themes/Default/Renderer.php | 118 - .../Themes/Default/SearchPromptRenderer.php | 134 - .../Themes/Default/SelectPromptRenderer.php | 94 - .../src/Themes/Default/SpinnerRenderer.php | 41 - .../Themes/Default/SuggestPromptRenderer.php | 122 - .../src/Themes/Default/TableRenderer.php | 42 - .../src/Themes/Default/TextPromptRenderer.php | 53 - vendor/laravel/prompts/src/helpers.php | 186 - .../laravel/serializable-closure/LICENSE.md | 21 - vendor/laravel/serializable-closure/README.md | 73 - .../serializable-closure/composer.json | 52 - .../src/Contracts/Serializable.php | 20 - .../src/Contracts/Signer.php | 22 - .../Exceptions/InvalidSignatureException.php | 19 - .../Exceptions/MissingSecretKeyException.php | 19 - .../PhpVersionNotSupportedException.php | 19 - .../src/SerializableClosure.php | 139 - .../src/Serializers/Native.php | 514 - .../src/Serializers/Signed.php | 91 - .../serializable-closure/src/Signers/Hmac.php | 53 - .../src/Support/ClosureScope.php | 22 - .../src/Support/ClosureStream.php | 179 - .../src/Support/ReflectionClosure.php | 1198 -- .../src/Support/SelfReference.php | 24 - .../src/UnsignedSerializableClosure.php | 82 - vendor/league/commonmark/.phpstorm.meta.php | 104 - vendor/league/commonmark/CHANGELOG.md | 595 - vendor/league/commonmark/LICENSE | 28 - vendor/league/commonmark/README.md | 221 - vendor/league/commonmark/composer.json | 125 - .../commonmark/src/CommonMarkConverter.php | 46 - .../commonmark/src/ConverterInterface.php | 30 - .../commonmark/src/Delimiter/Delimiter.php | 134 - .../src/Delimiter/DelimiterInterface.php | 50 - .../src/Delimiter/DelimiterParser.php | 102 - .../src/Delimiter/DelimiterStack.php | 214 - .../DelimiterProcessorCollection.php | 89 - .../DelimiterProcessorCollectionInterface.php | 46 - .../Processor/DelimiterProcessorInterface.php | 78 - .../Processor/StaggeredDelimiterProcessor.php | 111 - .../src/Environment/Environment.php | 447 - .../Environment/EnvironmentAwareInterface.php | 19 - .../EnvironmentBuilderInterface.php | 97 - .../src/Environment/EnvironmentInterface.php | 55 - .../commonmark/src/Event/AbstractEvent.php | 54 - .../src/Event/DocumentParsedEvent.php | 35 - .../src/Event/DocumentPreParsedEvent.php | 49 - .../src/Event/DocumentPreRenderEvent.php | 44 - .../src/Event/DocumentRenderedEvent.php | 42 - .../commonmark/src/Event/ListenerData.php | 50 - .../Exception/AlreadyInitializedException.php | 18 - .../src/Exception/CommonMarkException.php | 21 - .../commonmark/src/Exception/IOException.php | 18 - .../Exception/InvalidArgumentException.php | 18 - .../src/Exception/LogicException.php | 18 - .../Exception/MissingDependencyException.php | 18 - .../Exception/UnexpectedEncodingException.php | 18 - .../Attributes/AttributesExtension.php | 32 - .../Attributes/Event/AttributesListener.php | 139 - .../Extension/Attributes/Node/Attributes.php | 65 - .../Attributes/Node/AttributesInline.php | 57 - .../Parser/AttributesBlockContinueParser.php | 92 - .../Parser/AttributesBlockStartParser.php | 40 - .../Parser/AttributesInlineParser.php | 54 - .../Attributes/Util/AttributesHelper.php | 137 - .../Extension/Autolink/AutolinkExtension.php | 26 - .../Autolink/EmailAutolinkParser.php | 48 - .../Extension/Autolink/UrlAutolinkParser.php | 153 - .../CommonMark/CommonMarkCoreExtension.php | 92 - .../Processor/EmphasisDelimiterProcessor.php | 108 - .../CommonMark/Node/Block/BlockQuote.php | 20 - .../CommonMark/Node/Block/FencedCode.php | 100 - .../CommonMark/Node/Block/Heading.php | 41 - .../CommonMark/Node/Block/HtmlBlock.php | 79 - .../CommonMark/Node/Block/IndentedCode.php | 32 - .../CommonMark/Node/Block/ListBlock.php | 56 - .../CommonMark/Node/Block/ListData.php | 47 - .../CommonMark/Node/Block/ListItem.php | 37 - .../CommonMark/Node/Block/ThematicBreak.php | 20 - .../Node/Inline/AbstractWebResource.php | 41 - .../Extension/CommonMark/Node/Inline/Code.php | 23 - .../CommonMark/Node/Inline/Emphasis.php | 42 - .../CommonMark/Node/Inline/HtmlInline.php | 24 - .../CommonMark/Node/Inline/Image.php | 49 - .../Extension/CommonMark/Node/Inline/Link.php | 49 - .../CommonMark/Node/Inline/Strong.php | 42 - .../Parser/Block/BlockQuoteParser.php | 60 - .../Parser/Block/BlockQuoteStartParser.php | 39 - .../Parser/Block/FencedCodeParser.php | 84 - .../Parser/Block/FencedCodeStartParser.php | 40 - .../CommonMark/Parser/Block/HeadingParser.php | 51 - .../Parser/Block/HeadingStartParser.php | 80 - .../Parser/Block/HtmlBlockParser.php | 82 - .../Parser/Block/HtmlBlockStartParser.php | 62 - .../Parser/Block/IndentedCodeParser.php | 83 - .../Parser/Block/IndentedCodeStartParser.php | 42 - .../Parser/Block/ListBlockParser.php | 79 - .../Parser/Block/ListBlockStartParser.php | 153 - .../Parser/Block/ListItemParser.php | 90 - .../Parser/Block/ThematicBreakParser.php | 42 - .../Parser/Block/ThematicBreakStartParser.php | 40 - .../Parser/Inline/AutolinkParser.php | 54 - .../Parser/Inline/BacktickParser.php | 70 - .../CommonMark/Parser/Inline/BangParser.php | 46 - .../Parser/Inline/CloseBracketParser.php | 212 - .../CommonMark/Parser/Inline/EntityParser.php | 42 - .../Parser/Inline/EscapableParser.php | 57 - .../Parser/Inline/HtmlInlineParser.php | 41 - .../Parser/Inline/OpenBracketParser.php | 44 - .../Renderer/Block/BlockQuoteRenderer.php | 70 - .../Renderer/Block/FencedCodeRenderer.php | 76 - .../Renderer/Block/HeadingRenderer.php | 64 - .../Renderer/Block/HtmlBlockRenderer.php | 66 - .../Renderer/Block/IndentedCodeRenderer.php | 61 - .../Renderer/Block/ListBlockRenderer.php | 86 - .../Renderer/Block/ListItemRenderer.php | 74 - .../Renderer/Block/ThematicBreakRenderer.php | 56 - .../Renderer/Inline/CodeRenderer.php | 57 - .../Renderer/Inline/EmphasisRenderer.php | 56 - .../Renderer/Inline/HtmlInlineRenderer.php | 66 - .../Renderer/Inline/ImageRenderer.php | 107 - .../Renderer/Inline/LinkRenderer.php | 89 - .../Renderer/Inline/StrongRenderer.php | 56 - .../ConfigurableExtensionInterface.php | 21 - .../ApplyDefaultAttributesProcessor.php | 65 - .../DefaultAttributesExtension.php | 39 - .../DescriptionListExtension.php | 42 - .../ConsecutiveDescriptionListMerger.php | 41 - .../Event/LooseDescriptionHandler.php | 66 - .../DescriptionList/Node/Description.php | 39 - .../DescriptionList/Node/DescriptionList.php | 20 - .../DescriptionList/Node/DescriptionTerm.php | 20 - .../Parser/DescriptionContinueParser.php | 71 - .../Parser/DescriptionListContinueParser.php | 53 - .../Parser/DescriptionStartParser.php | 73 - .../Parser/DescriptionTermContinueParser.php | 52 - .../Renderer/DescriptionListRenderer.php | 39 - .../Renderer/DescriptionRenderer.php | 37 - .../Renderer/DescriptionTermRenderer.php | 37 - .../DisallowedRawHtmlExtension.php | 51 - .../DisallowedRawHtmlRenderer.php | 62 - .../Embed/Bridge/OscaroteroEmbedAdapter.php | 50 - .../Embed/DomainFilteringAdapter.php | 53 - .../commonmark/src/Extension/Embed/Embed.php | 50 - .../Extension/Embed/EmbedAdapterInterface.php | 25 - .../src/Extension/Embed/EmbedExtension.php | 48 - .../src/Extension/Embed/EmbedParser.php | 62 - .../src/Extension/Embed/EmbedProcessor.php | 70 - .../src/Extension/Embed/EmbedRenderer.php | 35 - .../src/Extension/Embed/EmbedStartParser.php | 53 - .../src/Extension/ExtensionInterface.php | 24 - .../ExternalLink/ExternalLinkExtension.php | 47 - .../ExternalLink/ExternalLinkProcessor.php | 119 - .../Event/AnonymousFootnotesListener.php | 62 - .../FixOrphanedFootnotesAndRefsListener.php | 68 - .../Event/GatherFootnotesListener.php | 106 - .../Event/NumberFootnotesListener.php | 75 - .../Extension/Footnote/FootnoteExtension.php | 70 - .../src/Extension/Footnote/Node/Footnote.php | 37 - .../Footnote/Node/FootnoteBackref.php | 40 - .../Footnote/Node/FootnoteContainer.php | 21 - .../Extension/Footnote/Node/FootnoteRef.php | 57 - .../Parser/AnonymousFootnoteRefParser.php | 66 - .../Footnote/Parser/FootnoteParser.php | 68 - .../Footnote/Parser/FootnoteRefParser.php | 57 - .../Footnote/Parser/FootnoteStartParser.php | 56 - .../Renderer/FootnoteBackrefRenderer.php | 81 - .../Renderer/FootnoteContainerRenderer.php | 71 - .../Footnote/Renderer/FootnoteRefRenderer.php | 87 - .../Footnote/Renderer/FootnoteRenderer.php | 80 - .../Data/FrontMatterDataParserInterface.php | 26 - .../Data/LibYamlFrontMatterParser.php | 47 - .../Data/SymfonyYamlFrontMatterParser.php | 39 - .../Exception/InvalidFrontMatterException.php | 24 - .../FrontMatter/FrontMatterExtension.php | 46 - .../FrontMatter/FrontMatterParser.php | 64 - .../FrontMatterParserInterface.php | 21 - .../FrontMatterProviderInterface.php | 22 - .../Input/MarkdownInputWithFrontMatter.php | 43 - .../FrontMatterPostRenderListener.php | 35 - .../Listener/FrontMatterPreParser.php | 37 - .../Output/RenderedContentWithFrontMatter.php | 51 - .../GithubFlavoredMarkdownExtension.php | 33 - .../HeadingPermalink/HeadingPermalink.php | 37 - .../HeadingPermalinkExtension.php | 49 - .../HeadingPermalinkProcessor.php | 101 - .../HeadingPermalinkRenderer.php | 106 - .../Extension/InlinesOnly/ChildRenderer.php | 35 - .../InlinesOnly/InlinesOnlyExtension.php | 73 - .../Mention/Generator/CallbackGenerator.php | 54 - .../Generator/MentionGeneratorInterface.php | 22 - .../Generator/StringTemplateLinkGenerator.php | 34 - .../src/Extension/Mention/Mention.php | 93 - .../Extension/Mention/MentionExtension.php | 61 - .../src/Extension/Mention/MentionParser.php | 87 - .../src/Extension/SmartPunct/DashParser.php | 59 - .../Extension/SmartPunct/EllipsesParser.php | 38 - .../src/Extension/SmartPunct/Quote.php | 30 - .../src/Extension/SmartPunct/QuoteParser.php | 105 - .../Extension/SmartPunct/QuoteProcessor.php | 82 - .../ReplaceUnpairedQuotesListener.php | 43 - .../SmartPunct/SmartPunctExtension.php | 64 - .../Extension/Strikethrough/Strikethrough.php | 39 - .../StrikethroughDelimiterProcessor.php | 63 - .../Strikethrough/StrikethroughExtension.php | 26 - .../Strikethrough/StrikethroughRenderer.php | 50 - .../commonmark/src/Extension/Table/Table.php | 22 - .../src/Extension/Table/TableCell.php | 99 - .../src/Extension/Table/TableCellRenderer.php | 89 - .../src/Extension/Table/TableExtension.php | 62 - .../src/Extension/Table/TableParser.php | 200 - .../src/Extension/Table/TableRenderer.php | 58 - .../src/Extension/Table/TableRow.php | 22 - .../src/Extension/Table/TableRowRenderer.php | 56 - .../src/Extension/Table/TableSection.php | 64 - .../Extension/Table/TableSectionRenderer.php | 70 - .../src/Extension/Table/TableStartParser.php | 158 - .../TableOfContents/Node/TableOfContents.php | 20 - .../Node/TableOfContentsPlaceholder.php | 20 - .../Normalizer/AsIsNormalizerStrategy.php | 72 - .../Normalizer/FlatNormalizerStrategy.php | 33 - .../NormalizerStrategyInterface.php | 21 - .../Normalizer/RelativeNormalizerStrategy.php | 67 - .../TableOfContentsBuilder.php | 106 - .../TableOfContentsExtension.php | 53 - .../TableOfContentsGenerator.php | 168 - .../TableOfContentsGeneratorInterface.php | 22 - .../TableOfContentsPlaceholderParser.php | 74 - .../TableOfContentsPlaceholderRenderer.php | 40 - .../TableOfContentsRenderer.php | 56 - .../Extension/TaskList/TaskListExtension.php | 26 - .../Extension/TaskList/TaskListItemMarker.php | 39 - .../TaskList/TaskListItemMarkerParser.php | 55 - .../TaskList/TaskListItemMarkerRenderer.php | 70 - .../src/GithubFlavoredMarkdownConverter.php | 45 - .../commonmark/src/Input/MarkdownInput.php | 102 - .../src/Input/MarkdownInputInterface.php | 26 - .../commonmark/src/MarkdownConverter.php | 93 - .../src/MarkdownConverterInterface.php | 34 - .../src/Node/Block/AbstractBlock.php | 64 - .../commonmark/src/Node/Block/Document.php | 56 - .../commonmark/src/Node/Block/Paragraph.php | 21 - .../src/Node/Block/TightBlockInterface.php | 21 - .../src/Node/Inline/AbstractInline.php | 23 - .../Node/Inline/AbstractStringContainer.php | 47 - .../src/Node/Inline/AdjacentTextMerger.php | 105 - .../src/Node/Inline/DelimitedInterface.php | 21 - .../commonmark/src/Node/Inline/Newline.php | 40 - .../commonmark/src/Node/Inline/Text.php | 25 - vendor/league/commonmark/src/Node/Node.php | 262 - .../commonmark/src/Node/NodeIterator.php | 58 - .../league/commonmark/src/Node/NodeWalker.php | 80 - .../commonmark/src/Node/NodeWalkerEvent.php | 42 - vendor/league/commonmark/src/Node/Query.php | 139 - .../commonmark/src/Node/Query/AndExpr.php | 55 - .../src/Node/Query/ExpressionInterface.php | 21 - .../commonmark/src/Node/Query/OrExpr.php | 55 - .../src/Node/RawMarkupContainerInterface.php | 21 - .../src/Node/StringContainerHelper.php | 54 - .../src/Node/StringContainerInterface.php | 27 - .../src/Normalizer/SlugNormalizer.php | 56 - .../src/Normalizer/TextNormalizer.php | 39 - .../Normalizer/TextNormalizerInterface.php | 33 - .../src/Normalizer/UniqueSlugNormalizer.php | 56 - .../UniqueSlugNormalizerInterface.php | 28 - .../commonmark/src/Output/RenderedContent.php | 49 - .../src/Output/RenderedContentInterface.php | 29 - .../Block/AbstractBlockContinueParser.php | 47 - .../src/Parser/Block/BlockContinue.php | 73 - .../Block/BlockContinueParserInterface.php | 64 - ...lockContinueParserWithInlinesInterface.php | 24 - .../src/Parser/Block/BlockStart.php | 124 - .../Block/BlockStartParserInterface.php | 33 - .../src/Parser/Block/DocumentBlockParser.php | 53 - .../src/Parser/Block/ParagraphParser.php | 87 - .../SkipLinesStartingWithLettersParser.php | 45 - .../league/commonmark/src/Parser/Cursor.php | 493 - .../commonmark/src/Parser/CursorState.php | 56 - .../Parser/Inline/InlineParserInterface.php | 23 - .../src/Parser/Inline/InlineParserMatch.php | 87 - .../src/Parser/Inline/NewlineParser.php | 53 - .../src/Parser/InlineParserContext.php | 120 - .../src/Parser/InlineParserEngine.php | 177 - .../Parser/InlineParserEngineInterface.php | 27 - .../commonmark/src/Parser/MarkdownParser.php | 346 - .../src/Parser/MarkdownParserInterface.php | 25 - .../src/Parser/MarkdownParserState.php | 57 - .../Parser/MarkdownParserStateInterface.php | 36 - .../src/Parser/ParserLogicException.php | 20 - .../commonmark/src/Reference/Reference.php | 54 - .../src/Reference/ReferenceInterface.php | 29 - .../commonmark/src/Reference/ReferenceMap.php | 77 - .../src/Reference/ReferenceMapInterface.php | 31 - .../src/Reference/ReferenceParser.php | 324 - .../src/Reference/ReferenceableInterface.php | 19 - .../src/Renderer/Block/DocumentRenderer.php | 57 - .../src/Renderer/Block/ParagraphRenderer.php | 74 - .../Renderer/ChildNodeRendererInterface.php | 31 - .../Renderer/DocumentRendererInterface.php | 28 - .../commonmark/src/Renderer/HtmlDecorator.php | 45 - .../commonmark/src/Renderer/HtmlRenderer.php | 100 - .../src/Renderer/Inline/NewlineRenderer.php | 76 - .../src/Renderer/Inline/TextRenderer.php | 54 - .../Renderer/MarkdownRendererInterface.php | 30 - .../Renderer/NoMatchingRendererException.php | 20 - .../src/Renderer/NodeRendererInterface.php | 27 - .../commonmark/src/Util/ArrayCollection.php | 173 - .../src/Util/Html5EntityDecoder.php | 75 - .../commonmark/src/Util/HtmlElement.php | 160 - .../league/commonmark/src/Util/HtmlFilter.php | 55 - .../commonmark/src/Util/LinkParserHelper.php | 142 - .../commonmark/src/Util/PrioritizedList.php | 73 - .../commonmark/src/Util/RegexHelper.php | 237 - .../league/commonmark/src/Util/SpecReader.php | 71 - .../league/commonmark/src/Util/UrlEncoder.php | 69 - vendor/league/commonmark/src/Util/Xml.php | 33 - .../src/Xml/FallbackNodeXmlRenderer.php | 85 - .../src/Xml/MarkdownToXmlConverter.php | 59 - .../src/Xml/XmlNodeRendererInterface.php | 28 - .../league/commonmark/src/Xml/XmlRenderer.php | 135 - vendor/league/config/CHANGELOG.md | 42 - vendor/league/config/LICENSE.md | 28 - vendor/league/config/README.md | 153 - vendor/league/config/composer.json | 69 - vendor/league/config/src/Configuration.php | 255 - .../src/ConfigurationAwareInterface.php | 22 - .../src/ConfigurationBuilderInterface.php | 21 - .../config/src/ConfigurationInterface.php | 46 - .../src/ConfigurationProviderInterface.php | 22 - .../ConfigurationExceptionInterface.php | 21 - .../InvalidConfigurationException.php | 46 - .../src/Exception/UnknownOptionException.php | 33 - .../src/Exception/ValidationException.php | 37 - .../src/MutableConfigurationInterface.php | 34 - .../config/src/ReadOnlyConfiguration.php | 40 - .../config/src/SchemaBuilderInterface.php | 27 - vendor/league/csv/LICENSE | 20 - vendor/league/csv/autoload.php | 16 - vendor/league/csv/composer.json | 83 - vendor/league/csv/src/AbstractCsv.php | 468 - vendor/league/csv/src/ByteSequence.php | 24 - vendor/league/csv/src/CannotInsertRecord.php | 64 - vendor/league/csv/src/CharsetConverter.php | 240 - vendor/league/csv/src/ColumnConsistency.php | 56 - vendor/league/csv/src/EncloseField.php | 122 - vendor/league/csv/src/EscapeFormula.php | 160 - vendor/league/csv/src/Exception.php | 23 - vendor/league/csv/src/HTMLConverter.php | 162 - vendor/league/csv/src/Info.php | 96 - vendor/league/csv/src/InvalidArgument.php | 97 - vendor/league/csv/src/MapIterator.php | 39 - vendor/league/csv/src/RFC4180Field.php | 192 - vendor/league/csv/src/Reader.php | 514 - vendor/league/csv/src/ResultSet.php | 336 - vendor/league/csv/src/Statement.php | 169 - vendor/league/csv/src/Stream.php | 425 - vendor/league/csv/src/SyntaxError.php | 64 - vendor/league/csv/src/TabularDataReader.php | 134 - vendor/league/csv/src/TabularDataWriter.php | 41 - vendor/league/csv/src/UnableToProcessCsv.php | 20 - vendor/league/csv/src/UnavailableFeature.php | 42 - vendor/league/csv/src/UnavailableStream.php | 32 - vendor/league/csv/src/Writer.php | 304 - vendor/league/csv/src/XMLConverter.php | 183 - vendor/league/csv/src/functions.php | 50 - vendor/league/csv/src/functions_include.php | 14 - .../FallbackMimeTypeDetector.php | 52 - vendor/league/flysystem-local/LICENSE | 19 - .../LocalFilesystemAdapter.php | 483 - vendor/league/flysystem-local/composer.json | 25 - vendor/league/flysystem/INFO.md | 2 - vendor/league/flysystem/LICENSE | 19 - vendor/league/flysystem/composer.json | 69 - vendor/league/flysystem/readme.md | 57 - .../src/CalculateChecksumFromStream.php | 30 - .../src/ChecksumAlgoIsNotSupported.php | 11 - .../league/flysystem/src/ChecksumProvider.php | 14 - vendor/league/flysystem/src/Config.php | 57 - .../flysystem/src/CorruptedPathDetected.php | 13 - .../league/flysystem/src/DecoratedAdapter.php | 97 - .../flysystem/src/DirectoryAttributes.php | 87 - .../league/flysystem/src/DirectoryListing.php | 93 - .../league/flysystem/src/FileAttributes.php | 100 - vendor/league/flysystem/src/Filesystem.php | 281 - .../flysystem/src/FilesystemAdapter.php | 115 - .../flysystem/src/FilesystemException.php | 11 - .../src/FilesystemOperationFailed.php | 25 - .../flysystem/src/FilesystemOperator.php | 9 - .../league/flysystem/src/FilesystemReader.php | 85 - .../league/flysystem/src/FilesystemWriter.php | 58 - .../flysystem/src/InvalidStreamProvided.php | 11 - .../src/InvalidVisibilityProvided.php | 20 - vendor/league/flysystem/src/MountManager.php | 427 - .../league/flysystem/src/PathNormalizer.php | 10 - vendor/league/flysystem/src/PathPrefixer.php | 50 - .../flysystem/src/PathTraversalDetected.php | 25 - .../flysystem/src/PortableVisibilityGuard.php | 19 - .../src/ProxyArrayAccessToProperties.php | 62 - .../src/ResolveIdenticalPathConflict.php | 11 - .../flysystem/src/StorageAttributes.php | 40 - .../flysystem/src/SymbolicLinkEncountered.php | 25 - .../src/UnableToCheckDirectoryExistence.php | 13 - .../flysystem/src/UnableToCheckExistence.php | 26 - .../src/UnableToCheckFileExistence.php | 13 - .../league/flysystem/src/UnableToCopyFile.php | 62 - .../flysystem/src/UnableToCreateDirectory.php | 50 - .../flysystem/src/UnableToDeleteDirectory.php | 48 - .../flysystem/src/UnableToDeleteFile.php | 45 - .../src/UnableToGeneratePublicUrl.php | 26 - .../src/UnableToGenerateTemporaryUrl.php | 26 - .../flysystem/src/UnableToListContents.php | 24 - .../flysystem/src/UnableToMountFilesystem.php | 32 - .../league/flysystem/src/UnableToMoveFile.php | 67 - .../flysystem/src/UnableToProvideChecksum.php | 16 - .../league/flysystem/src/UnableToReadFile.php | 45 - .../src/UnableToResolveFilesystemMount.php | 20 - .../src/UnableToRetrieveMetadata.php | 76 - .../flysystem/src/UnableToSetVisibility.php | 49 - .../flysystem/src/UnableToWriteFile.php | 45 - .../PortableVisibilityConverter.php | 79 - .../UnixVisibility/VisibilityConverter.php | 14 - .../src/UnreadableFileEncountered.php | 28 - .../ChainedPublicUrlGenerator.php | 30 - .../PrefixPublicUrlGenerator.php | 23 - .../src/UrlGeneration/PublicUrlGenerator.php | 16 - .../ShardedPrefixPublicUrlGenerator.php | 39 - .../UrlGeneration/TemporaryUrlGenerator.php | 16 - vendor/league/flysystem/src/Visibility.php | 11 - .../src/WhitespacePathNormalizer.php | 49 - .../league/mime-type-detection/CHANGELOG.md | 55 - vendor/league/mime-type-detection/LICENSE | 19 - .../league/mime-type-detection/composer.json | 34 - .../src/EmptyExtensionToMimeTypeMap.php | 13 - .../src/ExtensionLookup.php | 14 - .../src/ExtensionMimeTypeDetector.php | 56 - .../src/ExtensionToMimeTypeMap.php | 10 - .../src/FinfoMimeTypeDetector.php | 106 - .../src/GeneratedExtensionToMimeTypeMap.php | 2296 ---- .../src/MimeTypeDetector.php | 19 - .../src/OverridingExtensionToMimeTypeMap.php | 30 - .../Contracts/AuthorityInterface.php | 93 - .../Contracts/DataPathInterface.php | 95 - .../Contracts/DomainHostInterface.php | 117 - .../Contracts/FragmentInterface.php | 22 - .../Contracts/HostInterface.php | 56 - .../Contracts/IpHostInterface.php | 49 - .../Contracts/PathInterface.php | 90 - .../Contracts/PortInterface.php | 22 - .../Contracts/QueryInterface.php | 251 - .../Contracts/SegmentedPathInterface.php | 149 - .../uri-interfaces/Contracts/UriAccess.php | 23 - .../Contracts/UriComponentInterface.php | 75 - .../uri-interfaces/Contracts/UriException.php | 20 - .../uri-interfaces/Contracts/UriInterface.php | 310 - .../Contracts/UserInfoInterface.php | 62 - vendor/league/uri-interfaces/Encoder.php | 175 - .../Exceptions/ConversionFailed.php | 46 - .../Exceptions/MissingFeature.php | 21 - .../Exceptions/OffsetOutOfBounds.php | 18 - .../uri-interfaces/Exceptions/SyntaxError.php | 21 - .../uri-interfaces/FeatureDetection.php | 56 - .../uri-interfaces/IPv4/BCMathCalculator.php | 85 - .../league/uri-interfaces/IPv4/Calculator.php | 95 - .../league/uri-interfaces/IPv4/Converter.php | 222 - .../uri-interfaces/IPv4/GMPCalculator.php | 70 - .../uri-interfaces/IPv4/NativeCalculator.php | 60 - .../league/uri-interfaces/Idna/Converter.php | 218 - vendor/league/uri-interfaces/Idna/Error.php | 64 - vendor/league/uri-interfaces/Idna/Option.php | 179 - vendor/league/uri-interfaces/Idna/Result.php | 64 - .../uri-interfaces/KeyValuePair/Converter.php | 212 - vendor/league/uri-interfaces/LICENSE | 20 - vendor/league/uri-interfaces/QueryString.php | 272 - vendor/league/uri-interfaces/UriString.php | 443 - vendor/league/uri-interfaces/composer.json | 70 - vendor/league/uri/BaseUri.php | 630 - vendor/league/uri/Http.php | 270 - vendor/league/uri/HttpFactory.php | 25 - vendor/league/uri/LICENSE | 20 - vendor/league/uri/Uri.php | 1340 -- vendor/league/uri/UriInfo.php | 97 - vendor/league/uri/UriResolver.php | 53 - vendor/league/uri/UriTemplate.php | 123 - vendor/league/uri/UriTemplate/Expression.php | 97 - vendor/league/uri/UriTemplate/Operator.php | 225 - vendor/league/uri/UriTemplate/Template.php | 143 - .../UriTemplate/TemplateCanNotBeExpanded.php | 44 - .../league/uri/UriTemplate/VarSpecifier.php | 73 - vendor/league/uri/UriTemplate/VariableBag.php | 151 - vendor/league/uri/composer.json | 76 - vendor/livewire/livewire/LICENSE.md | 9 - vendor/livewire/livewire/README.md | 41 - vendor/livewire/livewire/composer.json | 57 - vendor/livewire/livewire/config/livewire.php | 159 - vendor/livewire/livewire/dist/livewire.esm.js | 10432 ---------------- vendor/livewire/livewire/dist/livewire.js | 9594 -------------- vendor/livewire/livewire/dist/livewire.min.js | 102 - vendor/livewire/livewire/dist/manifest.json | 2 - vendor/livewire/livewire/src/Attribute.php | 10 - .../livewire/src/Attributes/Computed.php | 11 - .../livewire/src/Attributes/Isolate.php | 11 - .../livewire/livewire/src/Attributes/Js.php | 11 - .../livewire/src/Attributes/Layout.php | 11 - .../livewire/livewire/src/Attributes/Lazy.php | 11 - .../livewire/src/Attributes/Locked.php | 11 - .../livewire/src/Attributes/Modelable.php | 11 - .../livewire/livewire/src/Attributes/On.php | 12 - .../livewire/src/Attributes/Reactive.php | 11 - .../livewire/src/Attributes/Renderless.php | 11 - .../livewire/livewire/src/Attributes/Rule.php | 13 - .../livewire/src/Attributes/Session.php | 12 - .../livewire/src/Attributes/Title.php | 11 - .../livewire/livewire/src/Attributes/Url.php | 11 - .../livewire/src/Attributes/Validate.php | 13 - vendor/livewire/livewire/src/Component.php | 147 - .../livewire/livewire/src/ComponentHook.php | 103 - .../livewire/src/ComponentHookRegistry.php | 120 - .../src/Concerns/InteractsWithProperties.php | 116 - .../livewire/src/Drawer/BaseUtils.php | 94 - .../src/Drawer/ImplicitRouteBinding.php | 137 - .../livewire/livewire/src/Drawer/Regexes.php | 169 - vendor/livewire/livewire/src/Drawer/Utils.php | 176 - vendor/livewire/livewire/src/EventBus.php | 82 - .../src/Exceptions/BypassViewHandler.php | 8 - ...buteMissingOnDynamicComponentException.php | 13 - .../Exceptions/ComponentNotFoundException.php | 8 - ...wDeploymentHasSignificantEnoughChanges.php | 16 - .../Exceptions/MethodNotFoundException.php | 15 - .../src/Exceptions/MissingRulesException.php | 17 - .../NonPublicComponentMethodCall.php | 13 - .../Exceptions/PropertyNotFoundException.php | 15 - .../PublicPropertyNotFoundException.php | 15 - .../RootTagMissingFromViewException.php | 16 - .../Features/SupportAttributes/Attribute.php | 101 - .../SupportAttributes/AttributeCollection.php | 55 - .../SupportAttributes/AttributeLevel.php | 10 - .../SupportAttributes/HandlesAttributes.php | 25 - .../SupportAttributes/SupportAttributes.php | 144 - .../SupportAutoInjectedAssets.php | 95 - .../SupportBladeAttributes.php | 22 - .../SupportChecksumErrorDebugging.php | 82 - .../Features/SupportComputed/BaseComputed.php | 152 - .../CannotCallComputedDirectlyException.php | 15 - .../SupportLegacyComputedPropertySyntax.php | 68 - .../Commands/AttributeCommand.php | 50 - .../Commands/ComponentParser.php | 225 - .../ComponentParserFromExistingComponent.php | 45 - .../Commands/CopyCommand.php | 84 - .../Commands/CpCommand.php | 13 - .../Commands/DeleteCommand.php | 89 - .../Commands/FileManipulationCommand.php | 45 - .../Commands/FormCommand.php | 50 - .../Commands/LayoutCommand.php | 78 - .../Commands/MakeCommand.php | 252 - .../Commands/MakeLivewireCommand.php | 8 - .../Commands/MoveCommand.php | 93 - .../Commands/MvCommand.php | 13 - .../Commands/PublishCommand.php | 45 - .../Commands/RmCommand.php | 13 - .../Commands/S3CleanupCommand.php | 51 - .../Commands/StubsCommand.php | 49 - .../Commands/TouchCommand.php | 13 - .../AddLiveModifierToEntangleDirectives.php | 32 - .../AddLiveModifierToWireModelDirectives.php | 22 - .../Upgrade/ChangeDefaultLayoutView.php | 47 - .../Upgrade/ChangeDefaultNamespace.php | 115 - .../Upgrade/ChangeForgetComputedToUnset.php | 39 - ...azyToBlurModifierOnWireModelDirectives.php | 22 - .../Upgrade/ChangeTestAssertionMethods.php | 53 - .../ChangeWireLoadDirectiveToWireInit.php | 23 - .../Commands/Upgrade/ClearViewCache.php | 15 - ...oveDeferModifierFromEntangleDirectives.php | 22 - ...veDeferModifierFromWireModelDirectives.php | 22 - ...PrefetchModifierFromWireClickDirective.php | 22 - ...PreventModifierFromWireSubmitDirective.php | 22 - .../Upgrade/ReplaceEmitWithDispatch.php | 126 - .../Commands/Upgrade/RepublishNavigation.php | 29 - .../Upgrade/ThirdPartyUpgradeNotice.php | 23 - .../Upgrade/UpgradeAlpineInstructions.php | 34 - .../Upgrade/UpgradeConfigInstructions.php | 24 - .../Commands/Upgrade/UpgradeIntroduction.php | 27 - .../Commands/Upgrade/UpgradeStep.php | 142 - .../Commands/UpgradeCommand.php | 80 - .../Commands/livewire.attribute.stub | 11 - .../Commands/livewire.form.stub | 11 - .../Commands/livewire.inline.stub | 17 - .../Commands/livewire.layout.stub | 12 - .../Commands/livewire.pest.stub | 9 - .../Commands/livewire.stub | 13 - .../Commands/livewire.test.stub | 19 - .../Commands/livewire.view.stub | 3 - .../Commands/the-tao.php | 21 - .../SupportConsoleCommands.php | 40 - .../DisableBackButtonCacheMiddleware.php | 31 - .../HandlesDisablingBackButtonCache.php | 16 - .../SupportDisablingBackButtonCache.php | 26 - .../SupportEntangle/SupportEntangle.php | 18 - .../src/Features/SupportEvents/BaseOn.php | 26 - .../src/Features/SupportEvents/Event.php | 51 - .../Features/SupportEvents/HandlesEvents.php | 23 - .../Features/SupportEvents/SupportEvents.php | 122 - .../Features/SupportEvents/TestsEvents.php | 90 - .../src/Features/SupportEvents/fake-echo.js | 95 - .../SupportFileDownloads.php | 90 - .../TestsFileDownloads.php | 49 - .../FileNotPreviewableException.php | 17 - .../FilePreviewController.php | 27 - .../FileUploadConfiguration.php | 114 - .../FileUploadController.php | 47 - .../SupportFileUploads/FileUploadSynth.php | 66 - .../GenerateSignedUploadUrl.php | 65 - .../MissingFileUploadsTraitException.php | 18 - .../S3DoesntSupportMultipleFileUploads.php | 18 - .../SupportFileUploads/SupportFileUploads.php | 40 - .../TemporaryUploadedFile.php | 229 - .../SupportFileUploads/WithFileUploads.php | 116 - .../SupportFileUploads/browser_test_image.png | Bin 2749 -> 0 bytes .../browser_test_image_big.jpg | Bin 1065569 -> 0 bytes .../src/Features/SupportFormObjects/Form.php | 156 - .../SupportFormObjects/FormObjectSynth.php | 69 - .../SupportFormObjects/HandlesFormObjects.php | 21 - .../SupportFormObjects/SupportFormObjects.php | 54 - .../Features/SupportIsolating/BaseIsolate.php | 11 - .../SupportIsolating/SupportIsolating.php | 22 - .../Features/SupportJsEvaluation/BaseJs.php | 22 - .../HandlesJsEvaluation.php | 13 - .../SupportJsEvaluation.php | 18 - .../Features/SupportLazyLoading/BaseLazy.php | 13 - .../SupportLazyLoading/SupportLazyLoading.php | 171 - ...odelDataWithoutValidationRuleException.php | 17 - .../EloquentCollectionSynth.php | 176 - .../EloquentModelSynth.php | 215 - .../SupportLegacyModels.php | 169 - ...llingLifecycleHooksNotAllowedException.php | 17 - .../SupportLifecycleHooks.php | 139 - .../SupportLocales/SupportLocales.php | 18 - .../SupportLockedProperties/BaseLocked.php | 14 - .../CannotUpdateLockedPropertyException.php | 13 - .../SupportModels/EloquentCollectionSynth.php | 92 - .../src/Features/SupportModels/ModelSynth.php | 73 - .../Features/SupportModels/SupportModels.php | 16 - .../SupportMorphAwareIfStatement.php | 86 - .../MultipleRootElementsDetectedException.php | 15 - .../SupportMultipleRootElementDetection.php | 51 - .../SupportNavigate/SupportNavigate.php | 33 - .../test-views/changed-layout.blade.php | 13 - .../changed-tracked-layout.blade.php | 13 - .../layout-with-navigate-outside.blade.php | 15 - .../test-views/layout.blade.php | 13 - .../test-views/test-navigate-asset.js | 8 - .../test-views/tracked-layout.blade.php | 13 - .../SupportNestedComponentListeners.php | 66 - .../SupportNestingComponents.php | 91 - .../SupportPageComponents/BaseLayout.php | 14 - .../SupportPageComponents/BaseTitle.php | 13 - .../HandlesPageComponents.php | 32 - .../MissingLayoutException.php | 13 - .../PageComponentConfig.php | 59 - .../SupportPageComponents.php | 247 - .../SupportPagination/HandlesPagination.php | 74 - .../SupportPagination/PaginationUrl.php | 17 - .../SupportPagination/SupportPagination.php | 147 - .../WithoutUrlPagination.php | 8 - .../views/bootstrap.blade.php | 60 - .../views/simple-bootstrap.blade.php | 53 - .../views/simple-tailwind.blade.php | 56 - .../views/tailwind.blade.php | 126 - .../Features/SupportQueryString/BaseUrl.php | 120 - .../SupportQueryString/SupportQueryString.php | 62 - .../SupportReactiveProps/BaseReactive.php | 45 - .../CannotMutateReactivePropException.php | 13 - .../SupportReactiveProps.php | 30 - .../SupportRedirects/HandlesRedirects.php | 36 - .../Features/SupportRedirects/Redirector.php | 46 - .../SupportRedirects/SupportRedirects.php | 57 - .../SupportRedirects/TestsRedirects.php | 41 - .../SupportScriptsAndAssets.php | 142 - .../Features/SupportScriptsAndAssets/test.js | 2 - .../Features/SupportSession/BaseSession.php | 49 - .../SupportStreaming/HandlesStreaming.php | 14 - .../SupportStreaming/SupportStreaming.php | 42 - .../SupportTeleporting/SupportTeleporting.php | 19 - .../SupportTesting/ComponentState.php | 79 - .../SupportTesting/DuskBrowserMacros.php | 385 - .../Features/SupportTesting/DuskTestable.php | 182 - .../Features/SupportTesting/InitialRender.php | 72 - .../SupportTesting/MakesAssertions.php | 153 - .../src/Features/SupportTesting/Render.php | 30 - .../Features/SupportTesting/RequestBroker.php | 52 - .../SupportTesting/ShowDuskComponent.php | 13 - .../SupportTesting/SubsequentRender.php | 77 - .../SupportTesting/SupportTesting.php | 111 - .../src/Features/SupportTesting/Testable.php | 283 - .../Features/SupportValidation/BaseRule.php | 11 - .../SupportValidation/BaseValidate.php | 103 - .../SupportValidation/HandlesValidation.php | 518 - .../SupportValidation/SupportValidation.php | 54 - .../SupportValidation/TestsValidation.php | 135 - .../BaseModelable.php | 55 - .../SupportWireModelingNestedComponents.php | 94 - .../SupportWireables/SupportWireables.php | 13 - .../SupportWireables/WireableSynth.php | 42 - vendor/livewire/livewire/src/Form.php | 10 - .../livewire/src/ImplicitlyBoundMethod.php | 139 - vendor/livewire/livewire/src/Livewire.php | 42 - .../livewire/livewire/src/LivewireManager.php | 263 - .../livewire/src/LivewireServiceProvider.php | 129 - .../CompileLivewireTags.php | 13 - .../LivewireTagPrecompiler.php | 92 - .../src/Mechanisms/ComponentRegistry.php | 217 - .../livewire/src/Mechanisms/DataStore.php | 89 - .../ExtendBlade/DeterministicBladeKeys.php | 39 - .../Mechanisms/ExtendBlade/ExtendBlade.php | 145 - .../ExtendBlade/ExtendedCompilerEngine.php | 76 - .../FrontendAssets/FrontendAssets.php | 197 - .../HandleComponents/BaseRenderless.php | 14 - .../Mechanisms/HandleComponents/Checksum.php | 31 - .../HandleComponents/ComponentContext.php | 55 - .../CorruptComponentPayloadException.php | 18 - .../HandleComponents/HandleComponents.php | 529 - .../Synthesizers/ArraySynth.php | 43 - .../Synthesizers/CarbonSynth.php | 40 - .../Synthesizers/CollectionSynth.php | 51 - .../Synthesizers/EnumSynth.php | 36 - .../Synthesizers/IntSynth.php | 22 - .../Synthesizers/StdClassSynth.php | 37 - .../Synthesizers/StringableSynth.php | 21 - .../HandleComponents/Synthesizers/Synth.php | 66 - .../HandleComponents/ViewContext.php | 35 - .../HandleRequests/HandleRequests.php | 103 - .../livewire/src/Mechanisms/Mechanism.php | 20 - .../PersistentMiddleware.php | 175 - .../src/Mechanisms/RenderComponent.php | 49 - vendor/livewire/livewire/src/Pipe.php | 36 - vendor/livewire/livewire/src/Transparency.php | 44 - .../livewire/livewire/src/WireDirective.php | 59 - vendor/livewire/livewire/src/Wireable.php | 10 - .../livewire/livewire/src/WithFileUploads.php | 10 - .../livewire/livewire/src/WithPagination.php | 10 - .../livewire/src/WithoutUrlPagination.php | 10 - vendor/livewire/livewire/src/Wrapped.php | 40 - vendor/livewire/livewire/src/helpers.php | 170 - vendor/masterminds/html5/CREDITS | 11 - vendor/masterminds/html5/LICENSE.txt | 66 - vendor/masterminds/html5/README.md | 270 - vendor/masterminds/html5/RELEASE.md | 157 - vendor/masterminds/html5/UPGRADING.md | 21 - vendor/masterminds/html5/bin/entities.php | 26 - vendor/masterminds/html5/composer.json | 40 - vendor/masterminds/html5/src/HTML5.php | 246 - .../masterminds/html5/src/HTML5/Elements.php | 619 - .../masterminds/html5/src/HTML5/Entities.php | 2236 ---- .../masterminds/html5/src/HTML5/Exception.php | 10 - .../html5/src/HTML5/InstructionProcessor.php | 41 - .../src/HTML5/Parser/CharacterReference.php | 61 - .../html5/src/HTML5/Parser/DOMTreeBuilder.php | 705 -- .../html5/src/HTML5/Parser/EventHandler.php | 114 - .../src/HTML5/Parser/FileInputStream.php | 33 - .../html5/src/HTML5/Parser/InputStream.php | 87 - .../html5/src/HTML5/Parser/ParseError.php | 10 - .../html5/src/HTML5/Parser/README.md | 53 - .../html5/src/HTML5/Parser/Scanner.php | 416 - .../src/HTML5/Parser/StringInputStream.php | 331 - .../html5/src/HTML5/Parser/Tokenizer.php | 1214 -- .../src/HTML5/Parser/TreeBuildingRules.php | 127 - .../html5/src/HTML5/Parser/UTF8Utils.php | 177 - .../src/HTML5/Serializer/HTML5Entities.php | 1533 --- .../src/HTML5/Serializer/OutputRules.php | 553 - .../html5/src/HTML5/Serializer/README.md | 33 - .../src/HTML5/Serializer/RulesInterface.php | 99 - .../html5/src/HTML5/Serializer/Traverser.php | 142 - vendor/monolog/monolog/CHANGELOG.md | 737 -- vendor/monolog/monolog/LICENSE | 19 - vendor/monolog/monolog/README.md | 120 - vendor/monolog/monolog/composer.json | 77 - vendor/monolog/monolog/favicon.ico | Bin 11583 -> 0 bytes vendor/monolog/monolog/logo.jpg | Bin 707527 -> 0 bytes .../Monolog/Attribute/AsMonologProcessor.php | 38 - .../Monolog/Attribute/WithMonologChannel.php | 29 - .../monolog/src/Monolog/DateTimeImmutable.php | 46 - .../monolog/src/Monolog/ErrorHandler.php | 279 - .../Monolog/Formatter/ChromePHPFormatter.php | 87 - .../Monolog/Formatter/ElasticaFormatter.php | 89 - .../Formatter/ElasticsearchFormatter.php | 88 - .../Monolog/Formatter/FlowdockFormatter.php | 106 - .../Monolog/Formatter/FluentdFormatter.php | 92 - .../Monolog/Formatter/FormatterInterface.php | 38 - .../Formatter/GelfMessageFormatter.php | 148 - .../Formatter/GoogleCloudLoggingFormatter.php | 40 - .../src/Monolog/Formatter/HtmlFormatter.php | 143 - .../src/Monolog/Formatter/JsonFormatter.php | 216 - .../src/Monolog/Formatter/LineFormatter.php | 289 - .../src/Monolog/Formatter/LogglyFormatter.php | 47 - .../Monolog/Formatter/LogmaticFormatter.php | 70 - .../Monolog/Formatter/LogstashFormatter.php | 102 - .../Monolog/Formatter/MongoDBFormatter.php | 159 - .../Monolog/Formatter/NormalizerFormatter.php | 325 - .../src/Monolog/Formatter/ScalarFormatter.php | 49 - .../src/Monolog/Formatter/SyslogFormatter.php | 66 - .../Monolog/Formatter/WildfireFormatter.php | 139 - .../src/Monolog/Handler/AbstractHandler.php | 104 - .../Handler/AbstractProcessingHandler.php | 60 - .../Monolog/Handler/AbstractSyslogHandler.php | 95 - .../src/Monolog/Handler/AmqpHandler.php | 159 - .../Monolog/Handler/BrowserConsoleHandler.php | 301 - .../src/Monolog/Handler/BufferHandler.php | 165 - .../src/Monolog/Handler/ChromePHPHandler.php | 192 - .../src/Monolog/Handler/CouchDBHandler.php | 97 - .../src/Monolog/Handler/CubeHandler.php | 167 - .../monolog/src/Monolog/Handler/Curl/Util.php | 69 - .../Monolog/Handler/DeduplicationHandler.php | 166 - .../Handler/DoctrineCouchDBHandler.php | 47 - .../src/Monolog/Handler/DynamoDbHandler.php | 80 - .../src/Monolog/Handler/ElasticaHandler.php | 142 - .../Monolog/Handler/ElasticsearchHandler.php | 230 - .../src/Monolog/Handler/ErrorLogHandler.php | 93 - .../Monolog/Handler/FallbackGroupHandler.php | 68 - .../src/Monolog/Handler/FilterHandler.php | 202 - .../ActivationStrategyInterface.php | 27 - .../ChannelLevelActivationStrategy.php | 69 - .../ErrorLevelActivationStrategy.php | 42 - .../Monolog/Handler/FingersCrossedHandler.php | 242 - .../src/Monolog/Handler/FirePHPHandler.php | 174 - .../src/Monolog/Handler/FleepHookHandler.php | 132 - .../src/Monolog/Handler/FlowdockHandler.php | 127 - .../Handler/FormattableHandlerInterface.php | 34 - .../Handler/FormattableHandlerTrait.php | 57 - .../src/Monolog/Handler/GelfHandler.php | 58 - .../src/Monolog/Handler/GroupHandler.php | 130 - .../monolog/src/Monolog/Handler/Handler.php | 62 - .../src/Monolog/Handler/HandlerInterface.php | 76 - .../src/Monolog/Handler/HandlerWrapper.php | 134 - .../src/Monolog/Handler/IFTTTHandler.php | 75 - .../src/Monolog/Handler/InsightOpsHandler.php | 74 - .../src/Monolog/Handler/LogEntriesHandler.php | 68 - .../src/Monolog/Handler/LogglyHandler.php | 157 - .../src/Monolog/Handler/LogmaticHandler.php | 98 - .../src/Monolog/Handler/MailHandler.php | 91 - .../src/Monolog/Handler/MandrillHandler.php | 83 - .../Handler/MissingExtensionException.php | 21 - .../src/Monolog/Handler/MongoDBHandler.php | 82 - .../Monolog/Handler/NativeMailerHandler.php | 173 - .../src/Monolog/Handler/NewRelicHandler.php | 180 - .../src/Monolog/Handler/NoopHandler.php | 42 - .../src/Monolog/Handler/NullHandler.php | 56 - .../src/Monolog/Handler/OverflowHandler.php | 139 - .../src/Monolog/Handler/PHPConsoleHandler.php | 303 - .../src/Monolog/Handler/ProcessHandler.php | 186 - .../Handler/ProcessableHandlerInterface.php | 43 - .../Handler/ProcessableHandlerTrait.php | 70 - .../src/Monolog/Handler/PsrHandler.php | 87 - .../src/Monolog/Handler/PushoverHandler.php | 246 - .../src/Monolog/Handler/RedisHandler.php | 94 - .../Monolog/Handler/RedisPubSubHandler.php | 65 - .../src/Monolog/Handler/RollbarHandler.php | 133 - .../Monolog/Handler/RotatingFileHandler.php | 217 - .../src/Monolog/Handler/SamplingHandler.php | 121 - .../src/Monolog/Handler/SendGridHandler.php | 100 - .../src/Monolog/Handler/Slack/SlackRecord.php | 381 - .../src/Monolog/Handler/SlackHandler.php | 267 - .../Monolog/Handler/SlackWebhookHandler.php | 131 - .../src/Monolog/Handler/SocketHandler.php | 436 - .../src/Monolog/Handler/SqsHandler.php | 61 - .../src/Monolog/Handler/StreamHandler.php | 205 - .../Monolog/Handler/SymfonyMailerHandler.php | 109 - .../src/Monolog/Handler/SyslogHandler.php | 64 - .../Monolog/Handler/SyslogUdp/UdpSocket.php | 77 - .../src/Monolog/Handler/SyslogUdpHandler.php | 154 - .../Monolog/Handler/TelegramBotHandler.php | 297 - .../src/Monolog/Handler/TestHandler.php | 195 - .../Handler/WebRequestRecognizerTrait.php | 23 - .../Handler/WhatFailureGroupHandler.php | 80 - .../Monolog/Handler/ZendMonitorHandler.php | 90 - vendor/monolog/monolog/src/Monolog/Level.php | 209 - .../monolog/monolog/src/Monolog/LogRecord.php | 124 - vendor/monolog/monolog/src/Monolog/Logger.php | 749 -- .../Processor/ClosureContextProcessor.php | 51 - .../src/Monolog/Processor/GitProcessor.php | 75 - .../Monolog/Processor/HostnameProcessor.php | 37 - .../Processor/IntrospectionProcessor.php | 122 - .../Processor/LoadAverageProcessor.php | 66 - .../Processor/MemoryPeakUsageProcessor.php | 39 - .../src/Monolog/Processor/MemoryProcessor.php | 60 - .../Processor/MemoryUsageProcessor.php | 39 - .../Monolog/Processor/MercurialProcessor.php | 75 - .../Monolog/Processor/ProcessIdProcessor.php | 32 - .../Monolog/Processor/ProcessorInterface.php | 27 - .../Processor/PsrLogMessageProcessor.php | 87 - .../src/Monolog/Processor/TagProcessor.php | 65 - .../src/Monolog/Processor/UidProcessor.php | 67 - .../src/Monolog/Processor/WebProcessor.php | 115 - .../monolog/monolog/src/Monolog/Registry.php | 133 - .../src/Monolog/ResettableInterface.php | 31 - .../monolog/src/Monolog/SignalHandler.php | 113 - .../monolog/src/Monolog/Test/TestCase.php | 82 - vendor/monolog/monolog/src/Monolog/Utils.php | 274 - vendor/nesbot/carbon/.phpstorm.meta.php | 10 - vendor/nesbot/carbon/LICENSE | 19 - vendor/nesbot/carbon/bin/carbon | 23 - vendor/nesbot/carbon/bin/carbon.bat | 4 - vendor/nesbot/carbon/composer.json | 127 - vendor/nesbot/carbon/extension.neon | 5 - .../MessageFormatterMapperStrongType.php | 28 - .../MessageFormatterMapperWeakType.php | 36 - .../Carbon/PHPStan/AbstractMacroBuiltin.php | 36 - .../Carbon/PHPStan/AbstractMacroStatic.php | 45 - .../lazy/Carbon/PHPStan/MacroStrongType.php | 45 - .../lazy/Carbon/PHPStan/MacroWeakType.php | 51 - .../lazy/Carbon/TranslatorStrongType.php | 52 - .../carbon/lazy/Carbon/TranslatorWeakType.php | 32 - vendor/nesbot/carbon/readme.md | 173 - vendor/nesbot/carbon/sponsors.php | 120 - .../carbon/src/Carbon/AbstractTranslator.php | 398 - vendor/nesbot/carbon/src/Carbon/Carbon.php | 523 - .../src/Carbon/CarbonConverterInterface.php | 19 - .../carbon/src/Carbon/CarbonImmutable.php | 582 - .../carbon/src/Carbon/CarbonInterface.php | 5142 -------- .../carbon/src/Carbon/CarbonInterval.php | 3054 ----- .../nesbot/carbon/src/Carbon/CarbonPeriod.php | 2742 ---- .../src/Carbon/CarbonPeriodImmutable.php | 40 - .../carbon/src/Carbon/CarbonTimeZone.php | 320 - .../nesbot/carbon/src/Carbon/Cli/Invoker.php | 38 - .../Exceptions/BadComparisonUnitException.php | 48 - .../BadFluentConstructorException.php | 49 - .../Exceptions/BadFluentSetterException.php | 49 - .../Exceptions/BadMethodCallException.php | 17 - .../Exceptions/EndLessPeriodException.php | 19 - .../src/Carbon/Exceptions/Exception.php | 17 - .../Carbon/Exceptions/ImmutableException.php | 48 - .../Exceptions/InvalidArgumentException.php | 17 - .../Exceptions/InvalidCastException.php | 19 - .../Exceptions/InvalidDateException.php | 67 - .../Exceptions/InvalidFormatException.php | 19 - .../Exceptions/InvalidIntervalException.php | 19 - .../Exceptions/InvalidPeriodDateException.php | 19 - .../InvalidPeriodParameterException.php | 19 - .../Exceptions/InvalidTimeZoneException.php | 19 - .../Exceptions/InvalidTypeException.php | 19 - .../Exceptions/NotACarbonClassException.php | 50 - .../Carbon/Exceptions/NotAPeriodException.php | 19 - .../Exceptions/NotLocaleAwareException.php | 32 - .../Carbon/Exceptions/OutOfRangeException.php | 101 - .../Carbon/Exceptions/ParseErrorException.php | 88 - .../Carbon/Exceptions/RuntimeException.php | 17 - .../src/Carbon/Exceptions/UnitException.php | 19 - .../Exceptions/UnitNotConfiguredException.php | 48 - .../Exceptions/UnknownGetterException.php | 49 - .../Exceptions/UnknownMethodException.php | 49 - .../Exceptions/UnknownSetterException.php | 49 - .../Exceptions/UnknownUnitException.php | 48 - .../Exceptions/UnreachableException.php | 19 - vendor/nesbot/carbon/src/Carbon/Factory.php | 326 - .../carbon/src/Carbon/FactoryImmutable.php | 259 - vendor/nesbot/carbon/src/Carbon/Lang/aa.php | 15 - .../nesbot/carbon/src/Carbon/Lang/aa_DJ.php | 44 - .../nesbot/carbon/src/Carbon/Lang/aa_ER.php | 28 - .../carbon/src/Carbon/Lang/aa_ER@saaho.php | 28 - .../nesbot/carbon/src/Carbon/Lang/aa_ET.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/af.php | 79 - .../nesbot/carbon/src/Carbon/Lang/af_NA.php | 28 - .../nesbot/carbon/src/Carbon/Lang/af_ZA.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/agq.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/agr.php | 15 - .../nesbot/carbon/src/Carbon/Lang/agr_PE.php | 44 - vendor/nesbot/carbon/src/Carbon/Lang/ak.php | 15 - .../nesbot/carbon/src/Carbon/Lang/ak_GH.php | 40 - vendor/nesbot/carbon/src/Carbon/Lang/am.php | 15 - .../nesbot/carbon/src/Carbon/Lang/am_ET.php | 58 - vendor/nesbot/carbon/src/Carbon/Lang/an.php | 15 - .../nesbot/carbon/src/Carbon/Lang/an_ES.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/anp.php | 15 - .../nesbot/carbon/src/Carbon/Lang/anp_IN.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/ar.php | 93 - .../nesbot/carbon/src/Carbon/Lang/ar_AE.php | 29 - .../nesbot/carbon/src/Carbon/Lang/ar_BH.php | 29 - .../nesbot/carbon/src/Carbon/Lang/ar_DJ.php | 13 - .../nesbot/carbon/src/Carbon/Lang/ar_DZ.php | 92 - .../nesbot/carbon/src/Carbon/Lang/ar_EG.php | 29 - .../nesbot/carbon/src/Carbon/Lang/ar_EH.php | 13 - .../nesbot/carbon/src/Carbon/Lang/ar_ER.php | 13 - .../nesbot/carbon/src/Carbon/Lang/ar_IL.php | 13 - .../nesbot/carbon/src/Carbon/Lang/ar_IN.php | 26 - .../nesbot/carbon/src/Carbon/Lang/ar_IQ.php | 29 - .../nesbot/carbon/src/Carbon/Lang/ar_JO.php | 29 - .../nesbot/carbon/src/Carbon/Lang/ar_KM.php | 13 - .../nesbot/carbon/src/Carbon/Lang/ar_KW.php | 95 - .../nesbot/carbon/src/Carbon/Lang/ar_LB.php | 29 - .../nesbot/carbon/src/Carbon/Lang/ar_LY.php | 92 - .../nesbot/carbon/src/Carbon/Lang/ar_MA.php | 92 - .../nesbot/carbon/src/Carbon/Lang/ar_MR.php | 13 - .../nesbot/carbon/src/Carbon/Lang/ar_OM.php | 29 - .../nesbot/carbon/src/Carbon/Lang/ar_PS.php | 18 - .../nesbot/carbon/src/Carbon/Lang/ar_QA.php | 29 - .../nesbot/carbon/src/Carbon/Lang/ar_SA.php | 94 - .../nesbot/carbon/src/Carbon/Lang/ar_SD.php | 29 - .../nesbot/carbon/src/Carbon/Lang/ar_SO.php | 13 - .../nesbot/carbon/src/Carbon/Lang/ar_SS.php | 27 - .../nesbot/carbon/src/Carbon/Lang/ar_SY.php | 29 - .../carbon/src/Carbon/Lang/ar_Shakl.php | 95 - .../nesbot/carbon/src/Carbon/Lang/ar_TD.php | 13 - .../nesbot/carbon/src/Carbon/Lang/ar_TN.php | 91 - .../nesbot/carbon/src/Carbon/Lang/ar_YE.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/as.php | 15 - .../nesbot/carbon/src/Carbon/Lang/as_IN.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/asa.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/ast.php | 59 - .../nesbot/carbon/src/Carbon/Lang/ast_ES.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/ayc.php | 15 - .../nesbot/carbon/src/Carbon/Lang/ayc_PE.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/az.php | 128 - .../nesbot/carbon/src/Carbon/Lang/az_AZ.php | 21 - .../nesbot/carbon/src/Carbon/Lang/az_Cyrl.php | 20 - .../nesbot/carbon/src/Carbon/Lang/az_IR.php | 27 - .../nesbot/carbon/src/Carbon/Lang/az_Latn.php | 29 - vendor/nesbot/carbon/src/Carbon/Lang/bas.php | 32 - vendor/nesbot/carbon/src/Carbon/Lang/be.php | 172 - .../nesbot/carbon/src/Carbon/Lang/be_BY.php | 22 - .../carbon/src/Carbon/Lang/be_BY@latin.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/bem.php | 15 - .../nesbot/carbon/src/Carbon/Lang/bem_ZM.php | 56 - vendor/nesbot/carbon/src/Carbon/Lang/ber.php | 15 - .../nesbot/carbon/src/Carbon/Lang/ber_DZ.php | 27 - .../nesbot/carbon/src/Carbon/Lang/ber_MA.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/bez.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/bg.php | 114 - .../nesbot/carbon/src/Carbon/Lang/bg_BG.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/bhb.php | 15 - .../nesbot/carbon/src/Carbon/Lang/bhb_IN.php | 26 - vendor/nesbot/carbon/src/Carbon/Lang/bho.php | 15 - .../nesbot/carbon/src/Carbon/Lang/bho_IN.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/bi.php | 15 - .../nesbot/carbon/src/Carbon/Lang/bi_VU.php | 53 - vendor/nesbot/carbon/src/Carbon/Lang/bm.php | 70 - vendor/nesbot/carbon/src/Carbon/Lang/bn.php | 100 - .../nesbot/carbon/src/Carbon/Lang/bn_BD.php | 27 - .../nesbot/carbon/src/Carbon/Lang/bn_IN.php | 26 - vendor/nesbot/carbon/src/Carbon/Lang/bo.php | 71 - .../nesbot/carbon/src/Carbon/Lang/bo_CN.php | 12 - .../nesbot/carbon/src/Carbon/Lang/bo_IN.php | 29 - vendor/nesbot/carbon/src/Carbon/Lang/br.php | 76 - .../nesbot/carbon/src/Carbon/Lang/br_FR.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/brx.php | 15 - .../nesbot/carbon/src/Carbon/Lang/brx_IN.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/bs.php | 97 - .../nesbot/carbon/src/Carbon/Lang/bs_BA.php | 12 - .../nesbot/carbon/src/Carbon/Lang/bs_Cyrl.php | 28 - .../nesbot/carbon/src/Carbon/Lang/bs_Latn.php | 13 - vendor/nesbot/carbon/src/Carbon/Lang/byn.php | 15 - .../nesbot/carbon/src/Carbon/Lang/byn_ER.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/ca.php | 117 - .../nesbot/carbon/src/Carbon/Lang/ca_AD.php | 13 - .../nesbot/carbon/src/Carbon/Lang/ca_ES.php | 12 - .../carbon/src/Carbon/Lang/ca_ES_Valencia.php | 23 - .../nesbot/carbon/src/Carbon/Lang/ca_FR.php | 13 - .../nesbot/carbon/src/Carbon/Lang/ca_IT.php | 13 - vendor/nesbot/carbon/src/Carbon/Lang/ccp.php | 27 - .../nesbot/carbon/src/Carbon/Lang/ccp_IN.php | 14 - vendor/nesbot/carbon/src/Carbon/Lang/ce.php | 15 - .../nesbot/carbon/src/Carbon/Lang/ce_RU.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/cgg.php | 31 - vendor/nesbot/carbon/src/Carbon/Lang/chr.php | 15 - .../nesbot/carbon/src/Carbon/Lang/chr_US.php | 58 - vendor/nesbot/carbon/src/Carbon/Lang/ckb.php | 89 - vendor/nesbot/carbon/src/Carbon/Lang/cmn.php | 15 - .../nesbot/carbon/src/Carbon/Lang/cmn_TW.php | 54 - vendor/nesbot/carbon/src/Carbon/Lang/crh.php | 15 - .../nesbot/carbon/src/Carbon/Lang/crh_UA.php | 56 - vendor/nesbot/carbon/src/Carbon/Lang/cs.php | 123 - .../nesbot/carbon/src/Carbon/Lang/cs_CZ.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/csb.php | 15 - .../nesbot/carbon/src/Carbon/Lang/csb_PL.php | 41 - vendor/nesbot/carbon/src/Carbon/Lang/cu.php | 52 - vendor/nesbot/carbon/src/Carbon/Lang/cv.php | 65 - .../nesbot/carbon/src/Carbon/Lang/cv_RU.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/cy.php | 79 - .../nesbot/carbon/src/Carbon/Lang/cy_GB.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/da.php | 81 - .../nesbot/carbon/src/Carbon/Lang/da_DK.php | 12 - .../nesbot/carbon/src/Carbon/Lang/da_GL.php | 19 - vendor/nesbot/carbon/src/Carbon/Lang/dav.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/de.php | 117 - .../nesbot/carbon/src/Carbon/Lang/de_AT.php | 27 - .../nesbot/carbon/src/Carbon/Lang/de_BE.php | 20 - .../nesbot/carbon/src/Carbon/Lang/de_CH.php | 20 - .../nesbot/carbon/src/Carbon/Lang/de_DE.php | 16 - .../nesbot/carbon/src/Carbon/Lang/de_IT.php | 16 - .../nesbot/carbon/src/Carbon/Lang/de_LI.php | 12 - .../nesbot/carbon/src/Carbon/Lang/de_LU.php | 20 - vendor/nesbot/carbon/src/Carbon/Lang/dje.php | 40 - vendor/nesbot/carbon/src/Carbon/Lang/doi.php | 15 - .../nesbot/carbon/src/Carbon/Lang/doi_IN.php | 31 - vendor/nesbot/carbon/src/Carbon/Lang/dsb.php | 15 - .../nesbot/carbon/src/Carbon/Lang/dsb_DE.php | 60 - vendor/nesbot/carbon/src/Carbon/Lang/dua.php | 56 - vendor/nesbot/carbon/src/Carbon/Lang/dv.php | 89 - .../nesbot/carbon/src/Carbon/Lang/dv_MV.php | 87 - vendor/nesbot/carbon/src/Carbon/Lang/dyo.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/dz.php | 15 - .../nesbot/carbon/src/Carbon/Lang/dz_BT.php | 43 - vendor/nesbot/carbon/src/Carbon/Lang/ebu.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/ee.php | 56 - .../nesbot/carbon/src/Carbon/Lang/ee_TG.php | 19 - vendor/nesbot/carbon/src/Carbon/Lang/el.php | 93 - .../nesbot/carbon/src/Carbon/Lang/el_CY.php | 19 - .../nesbot/carbon/src/Carbon/Lang/el_GR.php | 19 - vendor/nesbot/carbon/src/Carbon/Lang/en.php | 87 - .../nesbot/carbon/src/Carbon/Lang/en_001.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_150.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_AG.php | 21 - .../nesbot/carbon/src/Carbon/Lang/en_AI.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_AS.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_AT.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_AU.php | 31 - .../nesbot/carbon/src/Carbon/Lang/en_BB.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_BE.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_BI.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_BM.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_BS.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_BW.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_BZ.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_CA.php | 29 - .../nesbot/carbon/src/Carbon/Lang/en_CC.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_CH.php | 22 - .../nesbot/carbon/src/Carbon/Lang/en_CK.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_CM.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_CX.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_CY.php | 28 - .../nesbot/carbon/src/Carbon/Lang/en_DE.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_DG.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_DK.php | 22 - .../nesbot/carbon/src/Carbon/Lang/en_DM.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_ER.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_FI.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_FJ.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_FK.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_FM.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_GB.php | 30 - .../nesbot/carbon/src/Carbon/Lang/en_GD.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_GG.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_GH.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_GI.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_GM.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_GU.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_GY.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_HK.php | 18 - .../nesbot/carbon/src/Carbon/Lang/en_IE.php | 31 - .../nesbot/carbon/src/Carbon/Lang/en_IL.php | 29 - .../nesbot/carbon/src/Carbon/Lang/en_IM.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_IN.php | 26 - .../nesbot/carbon/src/Carbon/Lang/en_IO.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_ISO.php | 21 - .../nesbot/carbon/src/Carbon/Lang/en_JE.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_JM.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_KE.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_KI.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_KN.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_KY.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_LC.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_LR.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_LS.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_MG.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_MH.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_MO.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_MP.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_MS.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_MT.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_MU.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_MW.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_MY.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_NA.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_NF.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_NG.php | 18 - .../nesbot/carbon/src/Carbon/Lang/en_NL.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_NR.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_NU.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_NZ.php | 31 - .../nesbot/carbon/src/Carbon/Lang/en_PG.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_PH.php | 18 - .../nesbot/carbon/src/Carbon/Lang/en_PK.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_PN.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_PR.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_PW.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_RW.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_SB.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_SC.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_SD.php | 15 - .../nesbot/carbon/src/Carbon/Lang/en_SE.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_SG.php | 24 - .../nesbot/carbon/src/Carbon/Lang/en_SH.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_SI.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_SL.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_SS.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_SX.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_SZ.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_TC.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_TK.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_TO.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_TT.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_TV.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_TZ.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_UG.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_UM.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_US.php | 12 - .../carbon/src/Carbon/Lang/en_US_Posix.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_VC.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_VG.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_VI.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_VU.php | 14 - .../nesbot/carbon/src/Carbon/Lang/en_WS.php | 12 - .../nesbot/carbon/src/Carbon/Lang/en_ZA.php | 26 - .../nesbot/carbon/src/Carbon/Lang/en_ZM.php | 22 - .../nesbot/carbon/src/Carbon/Lang/en_ZW.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/eo.php | 77 - vendor/nesbot/carbon/src/Carbon/Lang/es.php | 121 - .../nesbot/carbon/src/Carbon/Lang/es_419.php | 19 - .../nesbot/carbon/src/Carbon/Lang/es_AR.php | 19 - .../nesbot/carbon/src/Carbon/Lang/es_BO.php | 19 - .../nesbot/carbon/src/Carbon/Lang/es_BR.php | 14 - .../nesbot/carbon/src/Carbon/Lang/es_BZ.php | 14 - .../nesbot/carbon/src/Carbon/Lang/es_CL.php | 19 - .../nesbot/carbon/src/Carbon/Lang/es_CO.php | 19 - .../nesbot/carbon/src/Carbon/Lang/es_CR.php | 19 - .../nesbot/carbon/src/Carbon/Lang/es_CU.php | 14 - .../nesbot/carbon/src/Carbon/Lang/es_DO.php | 31 - .../nesbot/carbon/src/Carbon/Lang/es_EA.php | 14 - .../nesbot/carbon/src/Carbon/Lang/es_EC.php | 19 - .../nesbot/carbon/src/Carbon/Lang/es_ES.php | 16 - .../nesbot/carbon/src/Carbon/Lang/es_GQ.php | 14 - .../nesbot/carbon/src/Carbon/Lang/es_GT.php | 19 - .../nesbot/carbon/src/Carbon/Lang/es_HN.php | 19 - .../nesbot/carbon/src/Carbon/Lang/es_IC.php | 14 - .../nesbot/carbon/src/Carbon/Lang/es_MX.php | 20 - .../nesbot/carbon/src/Carbon/Lang/es_NI.php | 19 - .../nesbot/carbon/src/Carbon/Lang/es_PA.php | 19 - .../nesbot/carbon/src/Carbon/Lang/es_PE.php | 19 - .../nesbot/carbon/src/Carbon/Lang/es_PH.php | 22 - .../nesbot/carbon/src/Carbon/Lang/es_PR.php | 19 - .../nesbot/carbon/src/Carbon/Lang/es_PY.php | 19 - .../nesbot/carbon/src/Carbon/Lang/es_SV.php | 20 - .../nesbot/carbon/src/Carbon/Lang/es_US.php | 38 - .../nesbot/carbon/src/Carbon/Lang/es_UY.php | 21 - .../nesbot/carbon/src/Carbon/Lang/es_VE.php | 19 - vendor/nesbot/carbon/src/Carbon/Lang/et.php | 93 - .../nesbot/carbon/src/Carbon/Lang/et_EE.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/eu.php | 67 - .../nesbot/carbon/src/Carbon/Lang/eu_ES.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/ewo.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/fa.php | 84 - .../nesbot/carbon/src/Carbon/Lang/fa_AF.php | 21 - .../nesbot/carbon/src/Carbon/Lang/fa_IR.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/ff.php | 60 - .../nesbot/carbon/src/Carbon/Lang/ff_CM.php | 12 - .../nesbot/carbon/src/Carbon/Lang/ff_GN.php | 12 - .../nesbot/carbon/src/Carbon/Lang/ff_MR.php | 21 - .../nesbot/carbon/src/Carbon/Lang/ff_SN.php | 16 - vendor/nesbot/carbon/src/Carbon/Lang/fi.php | 88 - .../nesbot/carbon/src/Carbon/Lang/fi_FI.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/fil.php | 15 - .../nesbot/carbon/src/Carbon/Lang/fil_PH.php | 62 - vendor/nesbot/carbon/src/Carbon/Lang/fo.php | 69 - .../nesbot/carbon/src/Carbon/Lang/fo_DK.php | 19 - .../nesbot/carbon/src/Carbon/Lang/fo_FO.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/fr.php | 123 - .../nesbot/carbon/src/Carbon/Lang/fr_BE.php | 18 - .../nesbot/carbon/src/Carbon/Lang/fr_BF.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_BI.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_BJ.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_BL.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_CA.php | 25 - .../nesbot/carbon/src/Carbon/Lang/fr_CD.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_CF.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_CG.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_CH.php | 24 - .../nesbot/carbon/src/Carbon/Lang/fr_CI.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_CM.php | 14 - .../nesbot/carbon/src/Carbon/Lang/fr_DJ.php | 22 - .../nesbot/carbon/src/Carbon/Lang/fr_DZ.php | 23 - .../nesbot/carbon/src/Carbon/Lang/fr_FR.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_GA.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_GF.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_GN.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_GP.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_GQ.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_HT.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_KM.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_LU.php | 21 - .../nesbot/carbon/src/Carbon/Lang/fr_MA.php | 15 - .../nesbot/carbon/src/Carbon/Lang/fr_MC.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_MF.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_MG.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_ML.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_MQ.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_MR.php | 21 - .../nesbot/carbon/src/Carbon/Lang/fr_MU.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_NC.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_NE.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_PF.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_PM.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_RE.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_RW.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_SC.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_SN.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_SY.php | 23 - .../nesbot/carbon/src/Carbon/Lang/fr_TD.php | 21 - .../nesbot/carbon/src/Carbon/Lang/fr_TG.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_TN.php | 22 - .../nesbot/carbon/src/Carbon/Lang/fr_VU.php | 21 - .../nesbot/carbon/src/Carbon/Lang/fr_WF.php | 12 - .../nesbot/carbon/src/Carbon/Lang/fr_YT.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/fur.php | 15 - .../nesbot/carbon/src/Carbon/Lang/fur_IT.php | 39 - vendor/nesbot/carbon/src/Carbon/Lang/fy.php | 76 - .../nesbot/carbon/src/Carbon/Lang/fy_DE.php | 27 - .../nesbot/carbon/src/Carbon/Lang/fy_NL.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/ga.php | 77 - .../nesbot/carbon/src/Carbon/Lang/ga_IE.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/gd.php | 75 - .../nesbot/carbon/src/Carbon/Lang/gd_GB.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/gez.php | 15 - .../nesbot/carbon/src/Carbon/Lang/gez_ER.php | 56 - .../nesbot/carbon/src/Carbon/Lang/gez_ET.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/gl.php | 98 - .../nesbot/carbon/src/Carbon/Lang/gl_ES.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/gom.php | 15 - .../carbon/src/Carbon/Lang/gom_Latn.php | 79 - vendor/nesbot/carbon/src/Carbon/Lang/gsw.php | 49 - .../nesbot/carbon/src/Carbon/Lang/gsw_CH.php | 12 - .../nesbot/carbon/src/Carbon/Lang/gsw_FR.php | 20 - .../nesbot/carbon/src/Carbon/Lang/gsw_LI.php | 20 - vendor/nesbot/carbon/src/Carbon/Lang/gu.php | 82 - .../nesbot/carbon/src/Carbon/Lang/gu_IN.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/guz.php | 47 - vendor/nesbot/carbon/src/Carbon/Lang/gv.php | 15 - .../nesbot/carbon/src/Carbon/Lang/gv_GB.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/ha.php | 60 - .../nesbot/carbon/src/Carbon/Lang/ha_GH.php | 12 - .../nesbot/carbon/src/Carbon/Lang/ha_NE.php | 12 - .../nesbot/carbon/src/Carbon/Lang/ha_NG.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/hak.php | 15 - .../nesbot/carbon/src/Carbon/Lang/hak_TW.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/haw.php | 54 - vendor/nesbot/carbon/src/Carbon/Lang/he.php | 86 - .../nesbot/carbon/src/Carbon/Lang/he_IL.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/hi.php | 82 - .../nesbot/carbon/src/Carbon/Lang/hi_IN.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/hif.php | 15 - .../nesbot/carbon/src/Carbon/Lang/hif_FJ.php | 54 - vendor/nesbot/carbon/src/Carbon/Lang/hne.php | 15 - .../nesbot/carbon/src/Carbon/Lang/hne_IN.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/hr.php | 111 - .../nesbot/carbon/src/Carbon/Lang/hr_BA.php | 32 - .../nesbot/carbon/src/Carbon/Lang/hr_HR.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/hsb.php | 15 - .../nesbot/carbon/src/Carbon/Lang/hsb_DE.php | 60 - vendor/nesbot/carbon/src/Carbon/Lang/ht.php | 15 - .../nesbot/carbon/src/Carbon/Lang/ht_HT.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/hu.php | 118 - .../nesbot/carbon/src/Carbon/Lang/hu_HU.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/hy.php | 95 - .../nesbot/carbon/src/Carbon/Lang/hy_AM.php | 24 - vendor/nesbot/carbon/src/Carbon/Lang/i18n.php | 23 - vendor/nesbot/carbon/src/Carbon/Lang/ia.php | 15 - .../nesbot/carbon/src/Carbon/Lang/ia_FR.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/id.php | 92 - .../nesbot/carbon/src/Carbon/Lang/id_ID.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/ig.php | 15 - .../nesbot/carbon/src/Carbon/Lang/ig_NG.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/ii.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/ik.php | 15 - .../nesbot/carbon/src/Carbon/Lang/ik_CA.php | 50 - vendor/nesbot/carbon/src/Carbon/Lang/in.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/is.php | 55 - .../nesbot/carbon/src/Carbon/Lang/is_IS.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/it.php | 115 - .../nesbot/carbon/src/Carbon/Lang/it_CH.php | 20 - .../nesbot/carbon/src/Carbon/Lang/it_IT.php | 16 - .../nesbot/carbon/src/Carbon/Lang/it_SM.php | 12 - .../nesbot/carbon/src/Carbon/Lang/it_VA.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/iu.php | 15 - .../nesbot/carbon/src/Carbon/Lang/iu_CA.php | 54 - vendor/nesbot/carbon/src/Carbon/Lang/iw.php | 58 - vendor/nesbot/carbon/src/Carbon/Lang/ja.php | 102 - .../nesbot/carbon/src/Carbon/Lang/ja_JP.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/jgo.php | 13 - vendor/nesbot/carbon/src/Carbon/Lang/jmc.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/jv.php | 71 - vendor/nesbot/carbon/src/Carbon/Lang/ka.php | 204 - .../nesbot/carbon/src/Carbon/Lang/ka_GE.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/kab.php | 15 - .../nesbot/carbon/src/Carbon/Lang/kab_DZ.php | 56 - vendor/nesbot/carbon/src/Carbon/Lang/kam.php | 50 - vendor/nesbot/carbon/src/Carbon/Lang/kde.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/kea.php | 49 - vendor/nesbot/carbon/src/Carbon/Lang/khq.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/ki.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/kk.php | 103 - .../nesbot/carbon/src/Carbon/Lang/kk_KZ.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/kkj.php | 13 - vendor/nesbot/carbon/src/Carbon/Lang/kl.php | 15 - .../nesbot/carbon/src/Carbon/Lang/kl_GL.php | 64 - vendor/nesbot/carbon/src/Carbon/Lang/kln.php | 31 - vendor/nesbot/carbon/src/Carbon/Lang/km.php | 71 - .../nesbot/carbon/src/Carbon/Lang/km_KH.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/kn.php | 75 - .../nesbot/carbon/src/Carbon/Lang/kn_IN.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/ko.php | 91 - .../nesbot/carbon/src/Carbon/Lang/ko_KP.php | 14 - .../nesbot/carbon/src/Carbon/Lang/ko_KR.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/kok.php | 15 - .../nesbot/carbon/src/Carbon/Lang/kok_IN.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/ks.php | 15 - .../nesbot/carbon/src/Carbon/Lang/ks_IN.php | 51 - .../src/Carbon/Lang/ks_IN@devanagari.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/ksb.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/ksf.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/ksh.php | 57 - vendor/nesbot/carbon/src/Carbon/Lang/ku.php | 40 - .../nesbot/carbon/src/Carbon/Lang/ku_TR.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/kw.php | 15 - .../nesbot/carbon/src/Carbon/Lang/kw_GB.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/ky.php | 106 - .../nesbot/carbon/src/Carbon/Lang/ky_KG.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/lag.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/lb.php | 88 - .../nesbot/carbon/src/Carbon/Lang/lb_LU.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/lg.php | 15 - .../nesbot/carbon/src/Carbon/Lang/lg_UG.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/li.php | 15 - .../nesbot/carbon/src/Carbon/Lang/li_NL.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/lij.php | 15 - .../nesbot/carbon/src/Carbon/Lang/lij_IT.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/lkt.php | 41 - vendor/nesbot/carbon/src/Carbon/Lang/ln.php | 60 - .../nesbot/carbon/src/Carbon/Lang/ln_AO.php | 17 - .../nesbot/carbon/src/Carbon/Lang/ln_CD.php | 16 - .../nesbot/carbon/src/Carbon/Lang/ln_CF.php | 17 - .../nesbot/carbon/src/Carbon/Lang/ln_CG.php | 17 - vendor/nesbot/carbon/src/Carbon/Lang/lo.php | 62 - .../nesbot/carbon/src/Carbon/Lang/lo_LA.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/lrc.php | 17 - .../nesbot/carbon/src/Carbon/Lang/lrc_IQ.php | 13 - vendor/nesbot/carbon/src/Carbon/Lang/lt.php | 135 - .../nesbot/carbon/src/Carbon/Lang/lt_LT.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/lu.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/luo.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/luy.php | 57 - vendor/nesbot/carbon/src/Carbon/Lang/lv.php | 183 - .../nesbot/carbon/src/Carbon/Lang/lv_LV.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/lzh.php | 15 - .../nesbot/carbon/src/Carbon/Lang/lzh_TW.php | 56 - vendor/nesbot/carbon/src/Carbon/Lang/mag.php | 15 - .../nesbot/carbon/src/Carbon/Lang/mag_IN.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/mai.php | 15 - .../nesbot/carbon/src/Carbon/Lang/mai_IN.php | 51 - vendor/nesbot/carbon/src/Carbon/Lang/mas.php | 51 - .../nesbot/carbon/src/Carbon/Lang/mas_TZ.php | 14 - vendor/nesbot/carbon/src/Carbon/Lang/mer.php | 43 - vendor/nesbot/carbon/src/Carbon/Lang/mfe.php | 15 - .../nesbot/carbon/src/Carbon/Lang/mfe_MU.php | 53 - vendor/nesbot/carbon/src/Carbon/Lang/mg.php | 15 - .../nesbot/carbon/src/Carbon/Lang/mg_MG.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/mgh.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/mgo.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/mhr.php | 15 - .../nesbot/carbon/src/Carbon/Lang/mhr_RU.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/mi.php | 66 - .../nesbot/carbon/src/Carbon/Lang/mi_NZ.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/miq.php | 15 - .../nesbot/carbon/src/Carbon/Lang/miq_NI.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/mjw.php | 15 - .../nesbot/carbon/src/Carbon/Lang/mjw_IN.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/mk.php | 116 - .../nesbot/carbon/src/Carbon/Lang/mk_MK.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/ml.php | 76 - .../nesbot/carbon/src/Carbon/Lang/ml_IN.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/mn.php | 116 - .../nesbot/carbon/src/Carbon/Lang/mn_MN.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/mni.php | 15 - .../nesbot/carbon/src/Carbon/Lang/mni_IN.php | 35 - vendor/nesbot/carbon/src/Carbon/Lang/mo.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/mr.php | 86 - .../nesbot/carbon/src/Carbon/Lang/mr_IN.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/ms.php | 104 - .../nesbot/carbon/src/Carbon/Lang/ms_BN.php | 22 - .../nesbot/carbon/src/Carbon/Lang/ms_MY.php | 18 - .../nesbot/carbon/src/Carbon/Lang/ms_SG.php | 22 - vendor/nesbot/carbon/src/Carbon/Lang/mt.php | 65 - .../nesbot/carbon/src/Carbon/Lang/mt_MT.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/mua.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/my.php | 70 - .../nesbot/carbon/src/Carbon/Lang/my_MM.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/mzn.php | 25 - vendor/nesbot/carbon/src/Carbon/Lang/nan.php | 15 - .../nesbot/carbon/src/Carbon/Lang/nan_TW.php | 55 - .../carbon/src/Carbon/Lang/nan_TW@latin.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/naq.php | 52 - vendor/nesbot/carbon/src/Carbon/Lang/nb.php | 84 - .../nesbot/carbon/src/Carbon/Lang/nb_NO.php | 12 - .../nesbot/carbon/src/Carbon/Lang/nb_SJ.php | 18 - vendor/nesbot/carbon/src/Carbon/Lang/nd.php | 54 - vendor/nesbot/carbon/src/Carbon/Lang/nds.php | 15 - .../nesbot/carbon/src/Carbon/Lang/nds_DE.php | 60 - .../nesbot/carbon/src/Carbon/Lang/nds_NL.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/ne.php | 82 - .../nesbot/carbon/src/Carbon/Lang/ne_IN.php | 25 - .../nesbot/carbon/src/Carbon/Lang/ne_NP.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/nhn.php | 15 - .../nesbot/carbon/src/Carbon/Lang/nhn_MX.php | 50 - vendor/nesbot/carbon/src/Carbon/Lang/niu.php | 15 - .../nesbot/carbon/src/Carbon/Lang/niu_NU.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/nl.php | 113 - .../nesbot/carbon/src/Carbon/Lang/nl_AW.php | 27 - .../nesbot/carbon/src/Carbon/Lang/nl_BE.php | 27 - .../nesbot/carbon/src/Carbon/Lang/nl_BQ.php | 12 - .../nesbot/carbon/src/Carbon/Lang/nl_CW.php | 12 - .../nesbot/carbon/src/Carbon/Lang/nl_NL.php | 24 - .../nesbot/carbon/src/Carbon/Lang/nl_SR.php | 12 - .../nesbot/carbon/src/Carbon/Lang/nl_SX.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/nmg.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/nn.php | 78 - .../nesbot/carbon/src/Carbon/Lang/nn_NO.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/nnh.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/no.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/nr.php | 15 - .../nesbot/carbon/src/Carbon/Lang/nr_ZA.php | 26 - vendor/nesbot/carbon/src/Carbon/Lang/nso.php | 15 - .../nesbot/carbon/src/Carbon/Lang/nso_ZA.php | 54 - vendor/nesbot/carbon/src/Carbon/Lang/nus.php | 36 - vendor/nesbot/carbon/src/Carbon/Lang/nyn.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/oc.php | 100 - .../nesbot/carbon/src/Carbon/Lang/oc_FR.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/om.php | 60 - .../nesbot/carbon/src/Carbon/Lang/om_ET.php | 12 - .../nesbot/carbon/src/Carbon/Lang/om_KE.php | 14 - vendor/nesbot/carbon/src/Carbon/Lang/or.php | 15 - .../nesbot/carbon/src/Carbon/Lang/or_IN.php | 51 - vendor/nesbot/carbon/src/Carbon/Lang/os.php | 15 - .../nesbot/carbon/src/Carbon/Lang/os_RU.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/pa.php | 76 - .../nesbot/carbon/src/Carbon/Lang/pa_Arab.php | 26 - .../nesbot/carbon/src/Carbon/Lang/pa_Guru.php | 27 - .../nesbot/carbon/src/Carbon/Lang/pa_IN.php | 19 - .../nesbot/carbon/src/Carbon/Lang/pa_PK.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/pap.php | 39 - .../nesbot/carbon/src/Carbon/Lang/pap_AW.php | 16 - .../nesbot/carbon/src/Carbon/Lang/pap_CW.php | 16 - vendor/nesbot/carbon/src/Carbon/Lang/pl.php | 126 - .../nesbot/carbon/src/Carbon/Lang/pl_PL.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/prg.php | 52 - vendor/nesbot/carbon/src/Carbon/Lang/ps.php | 55 - .../nesbot/carbon/src/Carbon/Lang/ps_AF.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/pt.php | 116 - .../nesbot/carbon/src/Carbon/Lang/pt_AO.php | 12 - .../nesbot/carbon/src/Carbon/Lang/pt_BR.php | 39 - .../nesbot/carbon/src/Carbon/Lang/pt_CH.php | 12 - .../nesbot/carbon/src/Carbon/Lang/pt_CV.php | 12 - .../nesbot/carbon/src/Carbon/Lang/pt_GQ.php | 12 - .../nesbot/carbon/src/Carbon/Lang/pt_GW.php | 12 - .../nesbot/carbon/src/Carbon/Lang/pt_LU.php | 12 - .../nesbot/carbon/src/Carbon/Lang/pt_MO.php | 20 - .../nesbot/carbon/src/Carbon/Lang/pt_MZ.php | 14 - .../nesbot/carbon/src/Carbon/Lang/pt_PT.php | 27 - .../nesbot/carbon/src/Carbon/Lang/pt_ST.php | 12 - .../nesbot/carbon/src/Carbon/Lang/pt_TL.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/qu.php | 22 - .../nesbot/carbon/src/Carbon/Lang/qu_BO.php | 14 - .../nesbot/carbon/src/Carbon/Lang/qu_EC.php | 14 - vendor/nesbot/carbon/src/Carbon/Lang/quz.php | 15 - .../nesbot/carbon/src/Carbon/Lang/quz_PE.php | 54 - vendor/nesbot/carbon/src/Carbon/Lang/raj.php | 15 - .../nesbot/carbon/src/Carbon/Lang/raj_IN.php | 47 - vendor/nesbot/carbon/src/Carbon/Lang/rm.php | 51 - vendor/nesbot/carbon/src/Carbon/Lang/rn.php | 56 - vendor/nesbot/carbon/src/Carbon/Lang/ro.php | 77 - .../nesbot/carbon/src/Carbon/Lang/ro_MD.php | 21 - .../nesbot/carbon/src/Carbon/Lang/ro_RO.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/rof.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/ru.php | 191 - .../nesbot/carbon/src/Carbon/Lang/ru_BY.php | 12 - .../nesbot/carbon/src/Carbon/Lang/ru_KG.php | 12 - .../nesbot/carbon/src/Carbon/Lang/ru_KZ.php | 12 - .../nesbot/carbon/src/Carbon/Lang/ru_MD.php | 12 - .../nesbot/carbon/src/Carbon/Lang/ru_RU.php | 12 - .../nesbot/carbon/src/Carbon/Lang/ru_UA.php | 20 - vendor/nesbot/carbon/src/Carbon/Lang/rw.php | 15 - .../nesbot/carbon/src/Carbon/Lang/rw_RW.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/rwk.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/sa.php | 15 - .../nesbot/carbon/src/Carbon/Lang/sa_IN.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/sah.php | 15 - .../nesbot/carbon/src/Carbon/Lang/sah_RU.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/saq.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/sat.php | 15 - .../nesbot/carbon/src/Carbon/Lang/sat_IN.php | 54 - vendor/nesbot/carbon/src/Carbon/Lang/sbp.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/sc.php | 15 - .../nesbot/carbon/src/Carbon/Lang/sc_IT.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/sd.php | 81 - .../nesbot/carbon/src/Carbon/Lang/sd_IN.php | 26 - .../src/Carbon/Lang/sd_IN@devanagari.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/se.php | 73 - .../nesbot/carbon/src/Carbon/Lang/se_FI.php | 27 - .../nesbot/carbon/src/Carbon/Lang/se_NO.php | 12 - .../nesbot/carbon/src/Carbon/Lang/se_SE.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/seh.php | 26 - vendor/nesbot/carbon/src/Carbon/Lang/ses.php | 56 - vendor/nesbot/carbon/src/Carbon/Lang/sg.php | 52 - vendor/nesbot/carbon/src/Carbon/Lang/sgs.php | 15 - .../nesbot/carbon/src/Carbon/Lang/sgs_LT.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/sh.php | 68 - vendor/nesbot/carbon/src/Carbon/Lang/shi.php | 57 - .../carbon/src/Carbon/Lang/shi_Latn.php | 33 - .../carbon/src/Carbon/Lang/shi_Tfng.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/shn.php | 15 - .../nesbot/carbon/src/Carbon/Lang/shn_MM.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/shs.php | 15 - .../nesbot/carbon/src/Carbon/Lang/shs_CA.php | 38 - vendor/nesbot/carbon/src/Carbon/Lang/si.php | 78 - .../nesbot/carbon/src/Carbon/Lang/si_LK.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/sid.php | 15 - .../nesbot/carbon/src/Carbon/Lang/sid_ET.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/sk.php | 155 - .../nesbot/carbon/src/Carbon/Lang/sk_SK.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/sl.php | 129 - .../nesbot/carbon/src/Carbon/Lang/sl_SI.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/sm.php | 15 - .../nesbot/carbon/src/Carbon/Lang/sm_WS.php | 53 - vendor/nesbot/carbon/src/Carbon/Lang/smn.php | 57 - vendor/nesbot/carbon/src/Carbon/Lang/sn.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/so.php | 74 - .../nesbot/carbon/src/Carbon/Lang/so_DJ.php | 20 - .../nesbot/carbon/src/Carbon/Lang/so_ET.php | 16 - .../nesbot/carbon/src/Carbon/Lang/so_KE.php | 16 - .../nesbot/carbon/src/Carbon/Lang/so_SO.php | 16 - vendor/nesbot/carbon/src/Carbon/Lang/sq.php | 79 - .../nesbot/carbon/src/Carbon/Lang/sq_AL.php | 12 - .../nesbot/carbon/src/Carbon/Lang/sq_MK.php | 19 - .../nesbot/carbon/src/Carbon/Lang/sq_XK.php | 19 - vendor/nesbot/carbon/src/Carbon/Lang/sr.php | 112 - .../nesbot/carbon/src/Carbon/Lang/sr_Cyrl.php | 112 - .../carbon/src/Carbon/Lang/sr_Cyrl_BA.php | 33 - .../carbon/src/Carbon/Lang/sr_Cyrl_ME.php | 118 - .../carbon/src/Carbon/Lang/sr_Cyrl_XK.php | 24 - .../nesbot/carbon/src/Carbon/Lang/sr_Latn.php | 12 - .../carbon/src/Carbon/Lang/sr_Latn_BA.php | 33 - .../carbon/src/Carbon/Lang/sr_Latn_ME.php | 76 - .../carbon/src/Carbon/Lang/sr_Latn_XK.php | 24 - .../nesbot/carbon/src/Carbon/Lang/sr_ME.php | 12 - .../nesbot/carbon/src/Carbon/Lang/sr_RS.php | 16 - .../carbon/src/Carbon/Lang/sr_RS@latin.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/ss.php | 78 - .../nesbot/carbon/src/Carbon/Lang/ss_ZA.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/st.php | 15 - .../nesbot/carbon/src/Carbon/Lang/st_ZA.php | 54 - vendor/nesbot/carbon/src/Carbon/Lang/sv.php | 87 - .../nesbot/carbon/src/Carbon/Lang/sv_AX.php | 19 - .../nesbot/carbon/src/Carbon/Lang/sv_FI.php | 12 - .../nesbot/carbon/src/Carbon/Lang/sv_SE.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/sw.php | 74 - .../nesbot/carbon/src/Carbon/Lang/sw_CD.php | 17 - .../nesbot/carbon/src/Carbon/Lang/sw_KE.php | 27 - .../nesbot/carbon/src/Carbon/Lang/sw_TZ.php | 28 - .../nesbot/carbon/src/Carbon/Lang/sw_UG.php | 17 - vendor/nesbot/carbon/src/Carbon/Lang/szl.php | 15 - .../nesbot/carbon/src/Carbon/Lang/szl_PL.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/ta.php | 97 - .../nesbot/carbon/src/Carbon/Lang/ta_IN.php | 27 - .../nesbot/carbon/src/Carbon/Lang/ta_LK.php | 28 - .../nesbot/carbon/src/Carbon/Lang/ta_MY.php | 28 - .../nesbot/carbon/src/Carbon/Lang/ta_SG.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/tcy.php | 15 - .../nesbot/carbon/src/Carbon/Lang/tcy_IN.php | 39 - vendor/nesbot/carbon/src/Carbon/Lang/te.php | 89 - .../nesbot/carbon/src/Carbon/Lang/te_IN.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/teo.php | 28 - .../nesbot/carbon/src/Carbon/Lang/teo_KE.php | 14 - vendor/nesbot/carbon/src/Carbon/Lang/tet.php | 64 - vendor/nesbot/carbon/src/Carbon/Lang/tg.php | 104 - .../nesbot/carbon/src/Carbon/Lang/tg_TJ.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/th.php | 73 - .../nesbot/carbon/src/Carbon/Lang/th_TH.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/the.php | 15 - .../nesbot/carbon/src/Carbon/Lang/the_NP.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/ti.php | 15 - .../nesbot/carbon/src/Carbon/Lang/ti_ER.php | 56 - .../nesbot/carbon/src/Carbon/Lang/ti_ET.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/tig.php | 15 - .../nesbot/carbon/src/Carbon/Lang/tig_ER.php | 56 - vendor/nesbot/carbon/src/Carbon/Lang/tk.php | 15 - .../nesbot/carbon/src/Carbon/Lang/tk_TM.php | 77 - vendor/nesbot/carbon/src/Carbon/Lang/tl.php | 61 - .../nesbot/carbon/src/Carbon/Lang/tl_PH.php | 18 - vendor/nesbot/carbon/src/Carbon/Lang/tlh.php | 72 - vendor/nesbot/carbon/src/Carbon/Lang/tn.php | 15 - .../nesbot/carbon/src/Carbon/Lang/tn_ZA.php | 54 - vendor/nesbot/carbon/src/Carbon/Lang/to.php | 15 - .../nesbot/carbon/src/Carbon/Lang/to_TO.php | 54 - vendor/nesbot/carbon/src/Carbon/Lang/tpi.php | 15 - .../nesbot/carbon/src/Carbon/Lang/tpi_PG.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/tr.php | 121 - .../nesbot/carbon/src/Carbon/Lang/tr_CY.php | 23 - .../nesbot/carbon/src/Carbon/Lang/tr_TR.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/ts.php | 15 - .../nesbot/carbon/src/Carbon/Lang/ts_ZA.php | 54 - vendor/nesbot/carbon/src/Carbon/Lang/tt.php | 15 - .../nesbot/carbon/src/Carbon/Lang/tt_RU.php | 39 - .../carbon/src/Carbon/Lang/tt_RU@iqtelif.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/twq.php | 14 - vendor/nesbot/carbon/src/Carbon/Lang/tzl.php | 65 - vendor/nesbot/carbon/src/Carbon/Lang/tzm.php | 57 - .../carbon/src/Carbon/Lang/tzm_Latn.php | 64 - vendor/nesbot/carbon/src/Carbon/Lang/ug.php | 90 - .../nesbot/carbon/src/Carbon/Lang/ug_CN.php | 17 - vendor/nesbot/carbon/src/Carbon/Lang/uk.php | 212 - .../nesbot/carbon/src/Carbon/Lang/uk_UA.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/unm.php | 15 - .../nesbot/carbon/src/Carbon/Lang/unm_US.php | 57 - vendor/nesbot/carbon/src/Carbon/Lang/ur.php | 94 - .../nesbot/carbon/src/Carbon/Lang/ur_IN.php | 26 - .../nesbot/carbon/src/Carbon/Lang/ur_PK.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/uz.php | 85 - .../nesbot/carbon/src/Carbon/Lang/uz_Arab.php | 28 - .../nesbot/carbon/src/Carbon/Lang/uz_Cyrl.php | 20 - .../nesbot/carbon/src/Carbon/Lang/uz_Latn.php | 74 - .../nesbot/carbon/src/Carbon/Lang/uz_UZ.php | 27 - .../carbon/src/Carbon/Lang/uz_UZ@cyrillic.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/vai.php | 35 - .../carbon/src/Carbon/Lang/vai_Latn.php | 27 - .../carbon/src/Carbon/Lang/vai_Vaii.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/ve.php | 15 - .../nesbot/carbon/src/Carbon/Lang/ve_ZA.php | 49 - vendor/nesbot/carbon/src/Carbon/Lang/vi.php | 76 - .../nesbot/carbon/src/Carbon/Lang/vi_VN.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/vo.php | 52 - vendor/nesbot/carbon/src/Carbon/Lang/vun.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/wa.php | 15 - .../nesbot/carbon/src/Carbon/Lang/wa_BE.php | 55 - vendor/nesbot/carbon/src/Carbon/Lang/wae.php | 15 - .../nesbot/carbon/src/Carbon/Lang/wae_CH.php | 31 - vendor/nesbot/carbon/src/Carbon/Lang/wal.php | 15 - .../nesbot/carbon/src/Carbon/Lang/wal_ET.php | 27 - vendor/nesbot/carbon/src/Carbon/Lang/wo.php | 15 - .../nesbot/carbon/src/Carbon/Lang/wo_SN.php | 39 - vendor/nesbot/carbon/src/Carbon/Lang/xh.php | 15 - .../nesbot/carbon/src/Carbon/Lang/xh_ZA.php | 54 - vendor/nesbot/carbon/src/Carbon/Lang/xog.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/yav.php | 28 - vendor/nesbot/carbon/src/Carbon/Lang/yi.php | 15 - .../nesbot/carbon/src/Carbon/Lang/yi_US.php | 54 - vendor/nesbot/carbon/src/Carbon/Lang/yo.php | 65 - .../nesbot/carbon/src/Carbon/Lang/yo_BJ.php | 28 - .../nesbot/carbon/src/Carbon/Lang/yo_NG.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/yue.php | 15 - .../nesbot/carbon/src/Carbon/Lang/yue_HK.php | 28 - .../carbon/src/Carbon/Lang/yue_Hans.php | 12 - .../carbon/src/Carbon/Lang/yue_Hant.php | 12 - vendor/nesbot/carbon/src/Carbon/Lang/yuw.php | 15 - .../nesbot/carbon/src/Carbon/Lang/yuw_PG.php | 26 - vendor/nesbot/carbon/src/Carbon/Lang/zgh.php | 80 - vendor/nesbot/carbon/src/Carbon/Lang/zh.php | 29 - .../nesbot/carbon/src/Carbon/Lang/zh_CN.php | 33 - .../nesbot/carbon/src/Carbon/Lang/zh_HK.php | 12 - .../nesbot/carbon/src/Carbon/Lang/zh_Hans.php | 109 - .../carbon/src/Carbon/Lang/zh_Hans_HK.php | 12 - .../carbon/src/Carbon/Lang/zh_Hans_MO.php | 12 - .../carbon/src/Carbon/Lang/zh_Hans_SG.php | 12 - .../nesbot/carbon/src/Carbon/Lang/zh_Hant.php | 111 - .../carbon/src/Carbon/Lang/zh_Hant_HK.php | 12 - .../carbon/src/Carbon/Lang/zh_Hant_MO.php | 12 - .../carbon/src/Carbon/Lang/zh_Hant_TW.php | 12 - .../nesbot/carbon/src/Carbon/Lang/zh_MO.php | 21 - .../nesbot/carbon/src/Carbon/Lang/zh_SG.php | 26 - .../nesbot/carbon/src/Carbon/Lang/zh_TW.php | 12 - .../nesbot/carbon/src/Carbon/Lang/zh_YUE.php | 20 - vendor/nesbot/carbon/src/Carbon/Lang/zu.php | 15 - .../nesbot/carbon/src/Carbon/Lang/zu_ZA.php | 54 - vendor/nesbot/carbon/src/Carbon/Language.php | 342 - .../src/Carbon/Laravel/ServiceProvider.php | 127 - .../carbon/src/Carbon/List/languages.php | 1239 -- .../nesbot/carbon/src/Carbon/List/regions.php | 265 - .../MessageFormatterMapper.php | 44 - .../src/Carbon/PHPStan/AbstractMacro.php | 286 - .../carbon/src/Carbon/PHPStan/Macro.php | 34 - .../src/Carbon/PHPStan/MacroExtension.php | 88 - .../src/Carbon/PHPStan/MacroScanner.php | 83 - .../carbon/src/Carbon/Traits/Boundaries.php | 443 - .../nesbot/carbon/src/Carbon/Traits/Cast.php | 43 - .../carbon/src/Carbon/Traits/Comparison.php | 1125 -- .../carbon/src/Carbon/Traits/Converter.php | 639 - .../carbon/src/Carbon/Traits/Creator.php | 977 -- .../nesbot/carbon/src/Carbon/Traits/Date.php | 2747 ---- .../Carbon/Traits/DeprecatedProperties.php | 61 - .../carbon/src/Carbon/Traits/Difference.php | 1182 -- .../src/Carbon/Traits/IntervalRounding.php | 57 - .../carbon/src/Carbon/Traits/IntervalStep.php | 93 - .../carbon/src/Carbon/Traits/Localization.php | 840 -- .../nesbot/carbon/src/Carbon/Traits/Macro.php | 136 - .../src/Carbon/Traits/MagicParameter.php | 33 - .../nesbot/carbon/src/Carbon/Traits/Mixin.php | 226 - .../carbon/src/Carbon/Traits/Modifiers.php | 472 - .../carbon/src/Carbon/Traits/Mutability.php | 71 - .../Carbon/Traits/ObjectInitialisation.php | 22 - .../carbon/src/Carbon/Traits/Options.php | 471 - .../carbon/src/Carbon/Traits/Rounding.php | 254 - .../src/Carbon/Traits/Serialization.php | 326 - .../nesbot/carbon/src/Carbon/Traits/Test.php | 228 - .../carbon/src/Carbon/Traits/Timestamp.php | 198 - .../src/Carbon/Traits/ToStringFormat.php | 56 - .../nesbot/carbon/src/Carbon/Traits/Units.php | 412 - .../nesbot/carbon/src/Carbon/Traits/Week.php | 219 - .../nesbot/carbon/src/Carbon/Translator.php | 32 - .../carbon/src/Carbon/TranslatorImmutable.php | 99 - .../Carbon/TranslatorStrongTypeInterface.php | 22 - vendor/nette/schema/composer.json | 39 - vendor/nette/schema/license.md | 60 - vendor/nette/schema/readme.md | 537 - vendor/nette/schema/src/Schema/Context.php | 51 - .../schema/src/Schema/DynamicParameter.php | 15 - .../schema/src/Schema/Elements/AnyOf.php | 147 - .../nette/schema/src/Schema/Elements/Base.php | 162 - .../schema/src/Schema/Elements/Structure.php | 200 - .../nette/schema/src/Schema/Elements/Type.php | 208 - vendor/nette/schema/src/Schema/Expect.php | 108 - vendor/nette/schema/src/Schema/Helpers.php | 183 - vendor/nette/schema/src/Schema/Message.php | 98 - vendor/nette/schema/src/Schema/Processor.php | 96 - vendor/nette/schema/src/Schema/Schema.php | 37 - .../schema/src/Schema/ValidationException.php | 55 - vendor/nette/utils/.phpstorm.meta.php | 13 - vendor/nette/utils/composer.json | 51 - vendor/nette/utils/license.md | 60 - vendor/nette/utils/readme.md | 56 - vendor/nette/utils/src/HtmlStringable.php | 22 - .../utils/src/Iterators/CachingIterator.php | 164 - vendor/nette/utils/src/Iterators/Mapper.php | 34 - vendor/nette/utils/src/SmartObject.php | 140 - vendor/nette/utils/src/StaticClass.php | 34 - vendor/nette/utils/src/Translator.php | 25 - vendor/nette/utils/src/Utils/ArrayHash.php | 106 - vendor/nette/utils/src/Utils/ArrayList.php | 136 - vendor/nette/utils/src/Utils/Arrays.php | 522 - vendor/nette/utils/src/Utils/Callback.php | 137 - vendor/nette/utils/src/Utils/DateTime.php | 140 - vendor/nette/utils/src/Utils/FileInfo.php | 69 - vendor/nette/utils/src/Utils/FileSystem.php | 326 - vendor/nette/utils/src/Utils/Finder.php | 510 - vendor/nette/utils/src/Utils/Floats.php | 107 - vendor/nette/utils/src/Utils/Helpers.php | 104 - vendor/nette/utils/src/Utils/Html.php | 839 -- vendor/nette/utils/src/Utils/Image.php | 829 -- vendor/nette/utils/src/Utils/ImageColor.php | 75 - vendor/nette/utils/src/Utils/ImageType.php | 25 - vendor/nette/utils/src/Utils/Iterables.php | 159 - vendor/nette/utils/src/Utils/Json.php | 84 - .../nette/utils/src/Utils/ObjectHelpers.php | 229 - vendor/nette/utils/src/Utils/Paginator.php | 245 - vendor/nette/utils/src/Utils/Random.php | 52 - vendor/nette/utils/src/Utils/Reflection.php | 320 - .../utils/src/Utils/ReflectionMethod.php | 36 - vendor/nette/utils/src/Utils/Strings.php | 708 -- vendor/nette/utils/src/Utils/Type.php | 267 - vendor/nette/utils/src/Utils/Validators.php | 416 - vendor/nette/utils/src/Utils/exceptions.php | 50 - vendor/nette/utils/src/compatibility.php | 32 - vendor/nette/utils/src/exceptions.php | 109 - vendor/nunomaduro/termwind/LICENSE.md | 21 - vendor/nunomaduro/termwind/Makefile | 33 - vendor/nunomaduro/termwind/composer.json | 69 - vendor/nunomaduro/termwind/docker-compose.yml | 13 - vendor/nunomaduro/termwind/docker/Dockerfile | 11 - vendor/nunomaduro/termwind/playground.php | 14 - .../termwind/src/Actions/StyleToMethod.php | 154 - .../termwind/src/Components/Anchor.php | 9 - .../termwind/src/Components/BreakLine.php | 26 - .../nunomaduro/termwind/src/Components/Dd.php | 10 - .../termwind/src/Components/Div.php | 10 - .../nunomaduro/termwind/src/Components/Dl.php | 10 - .../nunomaduro/termwind/src/Components/Dt.php | 10 - .../termwind/src/Components/Element.php | 121 - .../nunomaduro/termwind/src/Components/Hr.php | 10 - .../nunomaduro/termwind/src/Components/Li.php | 10 - .../nunomaduro/termwind/src/Components/Ol.php | 10 - .../termwind/src/Components/Paragraph.php | 10 - .../termwind/src/Components/Raw.php | 19 - .../termwind/src/Components/Span.php | 10 - .../nunomaduro/termwind/src/Components/Ul.php | 10 - .../nunomaduro/termwind/src/Enums/Color.php | 482 - .../termwind/src/Exceptions/ColorNotFound.php | 14 - .../termwind/src/Exceptions/InvalidChild.php | 14 - .../termwind/src/Exceptions/InvalidColor.php | 14 - .../termwind/src/Exceptions/InvalidStyle.php | 14 - .../termwind/src/Exceptions/StyleNotFound.php | 29 - vendor/nunomaduro/termwind/src/Functions.php | 65 - .../termwind/src/Helpers/QuestionHelper.php | 25 - .../termwind/src/Html/CodeRenderer.php | 282 - .../termwind/src/Html/InheritStyles.php | 218 - .../termwind/src/Html/PreRenderer.php | 46 - .../termwind/src/Html/TableRenderer.php | 251 - .../nunomaduro/termwind/src/HtmlRenderer.php | 116 - .../src/Laravel/TermwindServiceProvider.php | 22 - vendor/nunomaduro/termwind/src/Question.php | 93 - .../termwind/src/Repositories/Styles.php | 59 - vendor/nunomaduro/termwind/src/Terminal.php | 50 - vendor/nunomaduro/termwind/src/Termwind.php | 300 - .../termwind/src/ValueObjects/Node.php | 205 - .../termwind/src/ValueObjects/Style.php | 70 - .../termwind/src/ValueObjects/Styles.php | 1061 -- vendor/openspout/openspout/LICENSE | 21 - .../openspout/openspout/LICENSE-for-cc42c1d | 166 - vendor/openspout/openspout/README.md | 38 - vendor/openspout/openspout/UPGRADE.md | 162 - vendor/openspout/openspout/composer.json | 76 - vendor/openspout/openspout/renovate.json | 6 - .../openspout/src/Common/Entity/Cell.php | 65 - .../src/Common/Entity/Cell/BooleanCell.php | 24 - .../Common/Entity/Cell/DateIntervalCell.php | 31 - .../src/Common/Entity/Cell/DateTimeCell.php | 25 - .../src/Common/Entity/Cell/EmptyCell.php | 24 - .../src/Common/Entity/Cell/ErrorCell.php | 29 - .../src/Common/Entity/Cell/FormulaCell.php | 31 - .../src/Common/Entity/Cell/NumericCell.php | 24 - .../src/Common/Entity/Cell/StringCell.php | 24 - .../src/Common/Entity/Comment/Comment.php | 47 - .../src/Common/Entity/Comment/TextRun.php | 23 - .../openspout/src/Common/Entity/Row.php | 156 - .../src/Common/Entity/Style/Border.php | 46 - .../src/Common/Entity/Style/BorderPart.php | 90 - .../src/Common/Entity/Style/CellAlignment.php | 31 - .../Entity/Style/CellVerticalAlignment.php | 37 - .../src/Common/Entity/Style/Color.php | 88 - .../src/Common/Entity/Style/Style.php | 467 - .../Exception/EncodingConversionException.php | 7 - .../src/Common/Exception/IOException.php | 7 - .../Exception/InvalidArgumentException.php | 7 - .../Exception/InvalidColorException.php | 7 - .../Common/Exception/OpenSpoutException.php | 9 - .../Exception/UnsupportedTypeException.php | 7 - .../src/Common/Helper/EncodingHelper.php | 195 - .../Helper/Escaper/EscaperInterface.php | 29 - .../src/Common/Helper/Escaper/ODS.php | 47 - .../src/Common/Helper/Escaper/XLSX.php | 193 - .../src/Common/Helper/FileSystemHelper.php | 164 - .../Helper/FileSystemHelperInterface.php | 57 - .../src/Common/Helper/StringHelper.php | 80 - .../src/Common/TempFolderOptionTrait.php | 33 - .../openspout/src/Reader/AbstractReader.php | 171 - .../openspout/src/Reader/CSV/Options.php | 15 - .../openspout/src/Reader/CSV/Reader.php | 80 - .../openspout/src/Reader/CSV/RowIterator.php | 219 - .../openspout/src/Reader/CSV/Sheet.php | 53 - .../src/Reader/CSV/SheetIterator.php | 77 - .../src/Reader/Common/ColumnWidth.php | 21 - .../Reader/Common/Creator/ReaderFactory.php | 64 - .../src/Reader/Common/Manager/RowManager.php | 51 - .../src/Reader/Common/XMLProcessor.php | 153 - .../Exception/InvalidValueException.php | 23 - .../IteratorNotRewindableException.php | 7 - .../Exception/NoSheetsFoundException.php | 7 - .../src/Reader/Exception/ReaderException.php | 9 - .../Exception/ReaderNotOpenedException.php | 7 - .../SharedStringNotFoundException.php | 7 - .../Exception/XMLProcessingException.php | 7 - .../Reader/ODS/Helper/CellValueFormatter.php | 283 - .../src/Reader/ODS/Helper/SettingsHelper.php | 54 - .../openspout/src/Reader/ODS/Options.php | 11 - .../openspout/src/Reader/ODS/Reader.php | 72 - .../openspout/src/Reader/ODS/RowIterator.php | 343 - .../openspout/src/Reader/ODS/Sheet.php | 81 - .../src/Reader/ODS/SheetIterator.php | 228 - .../openspout/src/Reader/ReaderInterface.php | 37 - .../src/Reader/RowIteratorInterface.php | 16 - .../openspout/src/Reader/SheetInterface.php | 31 - .../src/Reader/SheetIteratorInterface.php | 20 - .../Reader/SheetWithVisibilityInterface.php | 18 - .../Wrapper/XMLInternalErrorsHelper.php | 77 - .../src/Reader/Wrapper/XMLReader.php | 181 - .../src/Reader/XLSX/Helper/CellHelper.php | 85 - .../Reader/XLSX/Helper/CellValueFormatter.php | 331 - .../Reader/XLSX/Helper/DateFormatHelper.php | 125 - .../XLSX/Helper/DateIntervalFormatHelper.php | 96 - .../CachingStrategyFactory.php | 103 - .../CachingStrategyFactoryInterface.php | 19 - .../CachingStrategyInterface.php | 43 - .../FileBasedStrategy.php | 183 - .../SharedStringsCaching/InMemoryStrategy.php | 81 - .../SharedStringsCaching/MemoryLimit.php | 50 - .../XLSX/Manager/SharedStringsManager.php | 241 - .../src/Reader/XLSX/Manager/SheetManager.php | 285 - .../src/Reader/XLSX/Manager/StyleManager.php | 322 - .../XLSX/Manager/StyleManagerInterface.php | 31 - .../Manager/WorkbookRelationshipsManager.php | 151 - .../openspout/src/Reader/XLSX/Options.php | 16 - .../openspout/src/Reader/XLSX/Reader.php | 111 - .../openspout/src/Reader/XLSX/RowIterator.php | 398 - .../openspout/src/Reader/XLSX/Sheet.php | 94 - .../src/Reader/XLSX/SheetHeaderReader.php | 119 - .../src/Reader/XLSX/SheetIterator.php | 86 - .../openspout/src/Writer/AbstractWriter.php | 169 - .../src/Writer/AbstractWriterMultiSheets.php | 121 - .../openspout/src/Writer/AutoFilter.php | 24 - .../openspout/src/Writer/CSV/Options.php | 15 - .../openspout/src/Writer/CSV/Writer.php | 91 - .../src/Writer/Common/AbstractOptions.php | 67 - .../src/Writer/Common/ColumnWidth.php | 21 - .../Writer/Common/Creator/WriterFactory.php | 39 - .../src/Writer/Common/Entity/Sheet.php | 222 - .../src/Writer/Common/Entity/Workbook.php | 46 - .../src/Writer/Common/Entity/Worksheet.php | 92 - .../src/Writer/Common/Helper/CellHelper.php | 47 - ...ileSystemWithRootFolderHelperInterface.php | 25 - .../src/Writer/Common/Helper/ZipHelper.php | 200 - .../Manager/AbstractWorkbookManager.php | 290 - .../Writer/Common/Manager/RegisteredStyle.php | 35 - .../Writer/Common/Manager/SheetManager.php | 134 - .../Manager/Style/AbstractStyleManager.php | 84 - .../Manager/Style/AbstractStyleRegistry.php | 96 - .../Manager/Style/PossiblyUpdatedStyle.php | 32 - .../Manager/Style/StyleManagerInterface.php | 32 - .../Common/Manager/Style/StyleMerger.php | 97 - .../Manager/WorkbookManagerInterface.php | 71 - .../Manager/WorksheetManagerInterface.php | 41 - .../Exception/Border/InvalidNameException.php | 18 - .../Border/InvalidStyleException.php | 18 - .../Border/InvalidWidthException.php | 18 - .../Exception/InvalidSheetNameException.php | 7 - .../Exception/SheetNotFoundException.php | 7 - .../WriterAlreadyOpenedException.php | 7 - .../src/Writer/Exception/WriterException.php | 9 - .../Exception/WriterNotOpenedException.php | 7 - .../src/Writer/ODS/Helper/BorderHelper.php | 62 - .../Writer/ODS/Helper/FileSystemHelper.php | 328 - .../Writer/ODS/Manager/Style/StyleManager.php | 436 - .../ODS/Manager/Style/StyleRegistry.php | 45 - .../Writer/ODS/Manager/WorkbookManager.php | 73 - .../Writer/ODS/Manager/WorksheetManager.php | 273 - .../openspout/src/Writer/ODS/Options.php | 9 - .../openspout/src/Writer/ODS/Writer.php | 54 - .../openspout/src/Writer/WriterInterface.php | 71 - .../src/Writer/XLSX/Entity/SheetView.php | 270 - .../src/Writer/XLSX/Helper/BorderHelper.php | 70 - .../src/Writer/XLSX/Helper/DateHelper.php | 57 - .../Writer/XLSX/Helper/DateIntervalHelper.php | 41 - .../Writer/XLSX/Helper/FileSystemHelper.php | 738 -- .../Writer/XLSX/Manager/CommentsManager.php | 225 - .../XLSX/Manager/SharedStringsManager.php | 86 - .../XLSX/Manager/Style/StyleManager.php | 319 - .../XLSX/Manager/Style/StyleRegistry.php | 254 - .../Writer/XLSX/Manager/WorkbookManager.php | 85 - .../Writer/XLSX/Manager/WorksheetManager.php | 246 - .../openspout/src/Writer/XLSX/MergeCell.php | 26 - .../openspout/src/Writer/XLSX/Options.php | 105 - .../src/Writer/XLSX/Options/HeaderFooter.php | 16 - .../src/Writer/XLSX/Options/PageMargin.php | 17 - .../Writer/XLSX/Options/PageOrientation.php | 11 - .../src/Writer/XLSX/Options/PageSetup.php | 19 - .../src/Writer/XLSX/Options/PaperSize.php | 34 - .../openspout/src/Writer/XLSX/Writer.php | 77 - vendor/phpoption/phpoption/LICENSE | 201 - vendor/phpoption/phpoption/composer.json | 52 - .../phpoption/src/PhpOption/LazyOption.php | 175 - .../phpoption/src/PhpOption/None.php | 136 - .../phpoption/src/PhpOption/Option.php | 434 - .../phpoption/src/PhpOption/Some.php | 169 - vendor/psr/cache/CHANGELOG.md | 16 - vendor/psr/cache/LICENSE.txt | 19 - vendor/psr/cache/README.md | 12 - vendor/psr/cache/composer.json | 25 - vendor/psr/cache/src/CacheException.php | 10 - vendor/psr/cache/src/CacheItemInterface.php | 105 - .../psr/cache/src/CacheItemPoolInterface.php | 138 - .../cache/src/InvalidArgumentException.php | 13 - vendor/psr/clock/CHANGELOG.md | 11 - vendor/psr/clock/LICENSE | 19 - vendor/psr/clock/README.md | 61 - vendor/psr/clock/composer.json | 21 - vendor/psr/clock/src/ClockInterface.php | 13 - vendor/psr/container/.gitignore | 3 - vendor/psr/container/LICENSE | 21 - vendor/psr/container/README.md | 13 - vendor/psr/container/composer.json | 27 - .../src/ContainerExceptionInterface.php | 12 - .../psr/container/src/ContainerInterface.php | 36 - .../src/NotFoundExceptionInterface.php | 10 - vendor/psr/event-dispatcher/.editorconfig | 15 - vendor/psr/event-dispatcher/.gitignore | 2 - vendor/psr/event-dispatcher/LICENSE | 21 - vendor/psr/event-dispatcher/README.md | 6 - vendor/psr/event-dispatcher/composer.json | 26 - .../src/EventDispatcherInterface.php | 21 - .../src/ListenerProviderInterface.php | 19 - .../src/StoppableEventInterface.php | 26 - vendor/psr/http-factory/LICENSE | 21 - vendor/psr/http-factory/README.md | 12 - vendor/psr/http-factory/composer.json | 35 - .../src/RequestFactoryInterface.php | 18 - .../src/ResponseFactoryInterface.php | 18 - .../src/ServerRequestFactoryInterface.php | 24 - .../src/StreamFactoryInterface.php | 45 - .../src/UploadedFileFactoryInterface.php | 34 - .../http-factory/src/UriFactoryInterface.php | 17 - vendor/psr/http-message/CHANGELOG.md | 36 - vendor/psr/http-message/LICENSE | 19 - vendor/psr/http-message/README.md | 16 - vendor/psr/http-message/composer.json | 26 - .../psr/http-message/docs/PSR7-Interfaces.md | 130 - vendor/psr/http-message/docs/PSR7-Usage.md | 159 - .../psr/http-message/src/MessageInterface.php | 187 - .../psr/http-message/src/RequestInterface.php | 130 - .../http-message/src/ResponseInterface.php | 68 - .../src/ServerRequestInterface.php | 261 - .../psr/http-message/src/StreamInterface.php | 158 - .../src/UploadedFileInterface.php | 123 - vendor/psr/http-message/src/UriInterface.php | 324 - vendor/psr/log/LICENSE | 19 - vendor/psr/log/README.md | 58 - vendor/psr/log/composer.json | 26 - vendor/psr/log/src/AbstractLogger.php | 15 - .../psr/log/src/InvalidArgumentException.php | 7 - vendor/psr/log/src/LogLevel.php | 18 - vendor/psr/log/src/LoggerAwareInterface.php | 18 - vendor/psr/log/src/LoggerAwareTrait.php | 26 - vendor/psr/log/src/LoggerInterface.php | 125 - vendor/psr/log/src/LoggerTrait.php | 142 - vendor/psr/log/src/NullLogger.php | 30 - vendor/psr/simple-cache/.editorconfig | 12 - vendor/psr/simple-cache/LICENSE.md | 21 - vendor/psr/simple-cache/README.md | 8 - vendor/psr/simple-cache/composer.json | 25 - .../psr/simple-cache/src/CacheException.php | 10 - .../psr/simple-cache/src/CacheInterface.php | 114 - .../src/InvalidArgumentException.php | 13 - vendor/ramsey/collection/LICENSE | 19 - vendor/ramsey/collection/README.md | 70 - vendor/ramsey/collection/SECURITY.md | 169 - vendor/ramsey/collection/composer.json | 119 - .../collection/conventional-commits.json | 22 - .../ramsey/collection/src/AbstractArray.php | 171 - .../collection/src/AbstractCollection.php | 393 - vendor/ramsey/collection/src/AbstractSet.php | 44 - .../ramsey/collection/src/ArrayInterface.php | 49 - vendor/ramsey/collection/src/Collection.php | 95 - .../collection/src/CollectionInterface.php | 253 - .../collection/src/DoubleEndedQueue.php | 166 - .../src/DoubleEndedQueueInterface.php | 313 - .../src/Exception/CollectionException.php | 21 - .../Exception/CollectionMismatchException.php | 24 - .../Exception/InvalidArgumentException.php | 24 - .../src/Exception/InvalidPropertyOrMethod.php | 26 - .../src/Exception/NoSuchElementException.php | 24 - .../src/Exception/OutOfBoundsException.php | 24 - .../UnsupportedOperationException.php | 24 - vendor/ramsey/collection/src/GenericArray.php | 24 - .../ramsey/collection/src/Map/AbstractMap.php | 203 - .../collection/src/Map/AbstractTypedMap.php | 60 - .../src/Map/AssociativeArrayMap.php | 24 - .../collection/src/Map/MapInterface.php | 142 - .../collection/src/Map/NamedParameterMap.php | 110 - vendor/ramsey/collection/src/Map/TypedMap.php | 112 - .../collection/src/Map/TypedMapInterface.php | 36 - vendor/ramsey/collection/src/Queue.php | 148 - .../ramsey/collection/src/QueueInterface.php | 202 - vendor/ramsey/collection/src/Set.php | 59 - vendor/ramsey/collection/src/Sort.php | 31 - .../ramsey/collection/src/Tool/TypeTrait.php | 57 - .../src/Tool/ValueExtractorTrait.php | 81 - .../src/Tool/ValueToStringTrait.php | 91 - vendor/ramsey/uuid/LICENSE | 19 - vendor/ramsey/uuid/README.md | 83 - vendor/ramsey/uuid/composer.json | 108 - vendor/ramsey/uuid/src/BinaryUtils.php | 63 - .../uuid/src/Builder/BuilderCollection.php | 85 - .../uuid/src/Builder/DefaultUuidBuilder.php | 26 - .../uuid/src/Builder/DegradedUuidBuilder.php | 67 - .../uuid/src/Builder/FallbackBuilder.php | 68 - .../uuid/src/Builder/UuidBuilderInterface.php | 39 - .../ramsey/uuid/src/Codec/CodecInterface.php | 71 - .../ramsey/uuid/src/Codec/GuidStringCodec.php | 76 - .../uuid/src/Codec/OrderedTimeCodec.php | 113 - vendor/ramsey/uuid/src/Codec/StringCodec.php | 131 - .../src/Codec/TimestampFirstCombCodec.php | 113 - .../uuid/src/Codec/TimestampLastCombCodec.php | 51 - .../Converter/Number/BigNumberConverter.php | 54 - .../Number/DegradedNumberConverter.php | 25 - .../Number/GenericNumberConverter.php | 57 - .../Converter/NumberConverterInterface.php | 57 - .../Converter/Time/BigNumberTimeConverter.php | 48 - .../Converter/Time/DegradedTimeConverter.php | 25 - .../Converter/Time/GenericTimeConverter.php | 118 - .../src/Converter/Time/PhpTimeConverter.php | 172 - .../src/Converter/Time/UnixTimeConverter.php | 90 - .../src/Converter/TimeConverterInterface.php | 58 - vendor/ramsey/uuid/src/DegradedUuid.php | 25 - .../uuid/src/DeprecatedUuidInterface.php | 140 - .../uuid/src/DeprecatedUuidMethodsTrait.php | 360 - .../Exception/BuilderNotFoundException.php | 24 - .../uuid/src/Exception/DateTimeException.php | 24 - .../src/Exception/DceSecurityException.php | 25 - .../Exception/InvalidArgumentException.php | 24 - .../src/Exception/InvalidBytesException.php | 24 - .../Exception/InvalidUuidStringException.php | 25 - .../uuid/src/Exception/NameException.php | 25 - .../uuid/src/Exception/NodeException.php | 24 - .../src/Exception/RandomSourceException.php | 27 - .../src/Exception/TimeSourceException.php | 24 - .../Exception/UnableToBuildUuidException.php | 24 - .../UnsupportedOperationException.php | 24 - .../src/Exception/UuidExceptionInterface.php | 21 - vendor/ramsey/uuid/src/FeatureSet.php | 397 - .../uuid/src/Fields/FieldsInterface.php | 32 - .../src/Fields/SerializableFieldsTrait.php | 87 - .../uuid/src/Generator/CombGenerator.php | 115 - .../src/Generator/DceSecurityGenerator.php | 141 - .../DceSecurityGeneratorInterface.php | 53 - .../src/Generator/DefaultNameGenerator.php | 48 - .../src/Generator/DefaultTimeGenerator.php | 129 - .../src/Generator/NameGeneratorFactory.php | 30 - .../src/Generator/NameGeneratorInterface.php | 38 - .../src/Generator/PeclUuidNameGenerator.php | 49 - .../src/Generator/PeclUuidRandomGenerator.php | 35 - .../src/Generator/PeclUuidTimeGenerator.php | 39 - .../src/Generator/RandomBytesGenerator.php | 45 - .../src/Generator/RandomGeneratorFactory.php | 30 - .../Generator/RandomGeneratorInterface.php | 30 - .../uuid/src/Generator/RandomLibAdapter.php | 56 - .../src/Generator/TimeGeneratorFactory.php | 45 - .../src/Generator/TimeGeneratorInterface.php | 38 - .../uuid/src/Generator/UnixTimeGenerator.php | 169 - vendor/ramsey/uuid/src/Guid/Fields.php | 195 - vendor/ramsey/uuid/src/Guid/Guid.php | 61 - vendor/ramsey/uuid/src/Guid/GuidBuilder.php | 77 - .../uuid/src/Lazy/LazyUuidFromString.php | 572 - .../uuid/src/Math/BrickMathCalculator.php | 144 - .../uuid/src/Math/CalculatorInterface.php | 106 - vendor/ramsey/uuid/src/Math/RoundingMode.php | 146 - vendor/ramsey/uuid/src/Nonstandard/Fields.php | 131 - vendor/ramsey/uuid/src/Nonstandard/Uuid.php | 37 - .../uuid/src/Nonstandard/UuidBuilder.php | 76 - vendor/ramsey/uuid/src/Nonstandard/UuidV6.php | 105 - .../Dce/SystemDceSecurityProvider.php | 231 - .../Provider/DceSecurityProviderInterface.php | 41 - .../Provider/Node/FallbackNodeProvider.php | 54 - .../Provider/Node/NodeProviderCollection.php | 66 - .../src/Provider/Node/RandomNodeProvider.php | 69 - .../src/Provider/Node/StaticNodeProvider.php | 73 - .../src/Provider/Node/SystemNodeProvider.php | 193 - .../src/Provider/NodeProviderInterface.php | 30 - .../src/Provider/Time/FixedTimeProvider.php | 57 - .../src/Provider/Time/SystemTimeProvider.php | 33 - .../src/Provider/TimeProviderInterface.php | 28 - vendor/ramsey/uuid/src/Rfc4122/Fields.php | 195 - .../uuid/src/Rfc4122/FieldsInterface.php | 128 - vendor/ramsey/uuid/src/Rfc4122/MaxTrait.php | 41 - vendor/ramsey/uuid/src/Rfc4122/MaxUuid.php | 27 - vendor/ramsey/uuid/src/Rfc4122/NilTrait.php | 41 - vendor/ramsey/uuid/src/Rfc4122/NilUuid.php | 27 - vendor/ramsey/uuid/src/Rfc4122/TimeTrait.php | 55 - .../ramsey/uuid/src/Rfc4122/UuidBuilder.php | 118 - .../ramsey/uuid/src/Rfc4122/UuidInterface.php | 29 - vendor/ramsey/uuid/src/Rfc4122/UuidV1.php | 60 - vendor/ramsey/uuid/src/Rfc4122/UuidV2.php | 115 - vendor/ramsey/uuid/src/Rfc4122/UuidV3.php | 58 - vendor/ramsey/uuid/src/Rfc4122/UuidV4.php | 58 - vendor/ramsey/uuid/src/Rfc4122/UuidV5.php | 58 - vendor/ramsey/uuid/src/Rfc4122/UuidV6.php | 29 - vendor/ramsey/uuid/src/Rfc4122/UuidV7.php | 62 - vendor/ramsey/uuid/src/Rfc4122/UuidV8.php | 65 - vendor/ramsey/uuid/src/Rfc4122/Validator.php | 50 - .../ramsey/uuid/src/Rfc4122/VariantTrait.php | 94 - .../ramsey/uuid/src/Rfc4122/VersionTrait.php | 60 - vendor/ramsey/uuid/src/Type/Decimal.php | 129 - vendor/ramsey/uuid/src/Type/Hexadecimal.php | 115 - vendor/ramsey/uuid/src/Type/Integer.php | 158 - .../ramsey/uuid/src/Type/NumberInterface.php | 28 - vendor/ramsey/uuid/src/Type/Time.php | 128 - vendor/ramsey/uuid/src/Type/TypeInterface.php | 30 - vendor/ramsey/uuid/src/Uuid.php | 758 -- vendor/ramsey/uuid/src/UuidFactory.php | 513 - .../ramsey/uuid/src/UuidFactoryInterface.php | 182 - vendor/ramsey/uuid/src/UuidInterface.php | 109 - .../uuid/src/Validator/GenericValidator.php | 50 - .../uuid/src/Validator/ValidatorInterface.php | 41 - vendor/ramsey/uuid/src/functions.php | 158 - .../blade-capture-directive/CHANGELOG.md | 41 - .../blade-capture-directive/LICENSE.md | 21 - .../blade-capture-directive/README.md | 116 - .../blade-capture-directive/composer.json | 70 - .../src/BladeCaptureDirective.php | 30 - .../BladeCaptureDirectiveServiceProvider.php | 22 - vendor/spatie/color/.editorconfig | 15 - vendor/spatie/color/.github/FUNDING.yml | 3 - .../color/.github/workflows/php-cs-fixer.yml | 24 - .../color/.github/workflows/run-tests.yml | 36 - .../.github/workflows/update-changelog.yml | 28 - vendor/spatie/color/.php_cs.dist.php | 40 - vendor/spatie/color/CHANGELOG.md | 87 - vendor/spatie/color/LICENSE.md | 21 - vendor/spatie/color/README.md | 286 - vendor/spatie/color/composer.json | 46 - vendor/spatie/color/src/CIELab.php | 127 - vendor/spatie/color/src/Cmyk.php | 132 - vendor/spatie/color/src/Color.php | 34 - vendor/spatie/color/src/Contrast.php | 33 - vendor/spatie/color/src/Convert.php | 389 - vendor/spatie/color/src/Distance.php | 155 - .../src/Exceptions/InvalidColorValue.php | 100 - vendor/spatie/color/src/Factory.php | 38 - vendor/spatie/color/src/Hex.php | 152 - vendor/spatie/color/src/Hsb.php | 121 - vendor/spatie/color/src/Hsl.php | 120 - vendor/spatie/color/src/Hsla.php | 134 - vendor/spatie/color/src/Rgb.php | 127 - vendor/spatie/color/src/Rgba.php | 124 - vendor/spatie/color/src/Validate.php | 155 - vendor/spatie/color/src/Xyz.php | 133 - vendor/spatie/invade/CHANGELOG.md | 84 - vendor/spatie/invade/LICENSE.md | 21 - vendor/spatie/invade/README.md | 93 - vendor/spatie/invade/composer.json | 51 - vendor/spatie/invade/phpstan-baseline.neon | 0 vendor/spatie/invade/phpstan.neon.dist | 9 - vendor/spatie/invade/src/Invader.php | 33 - vendor/spatie/invade/src/functions.php | 16 - .../spatie/laravel-package-tools/LICENSE.md | 21 - vendor/spatie/laravel-package-tools/README.md | 553 - .../laravel-package-tools/composer.json | 50 - .../src/Commands/InstallCommand.php | 187 - .../src/Exceptions/InvalidPackage.php | 13 - .../laravel-package-tools/src/Package.php | 241 - .../src/PackageServiceProvider.php | 215 - vendor/spatie/laravel-permission/LICENSE.md | 21 - vendor/spatie/laravel-permission/README.md | 101 - .../spatie/laravel-permission/composer.json | 70 - .../laravel-permission/config/permission.php | 186 - .../migrations/add_teams_fields.php.stub | 91 - .../create_permission_tables.php.stub | 138 - vendor/spatie/laravel-permission/ide.json | 72 - .../src/Commands/CacheReset.php | 22 - .../src/Commands/CreatePermission.php | 24 - .../src/Commands/CreateRole.php | 67 - .../laravel-permission/src/Commands/Show.php | 77 - .../src/Commands/UpgradeForTeams.php | 122 - .../src/Contracts/Permission.php | 41 - .../laravel-permission/src/Contracts/Role.php | 48 - .../src/Contracts/Wildcard.php | 14 - .../src/Exceptions/GuardDoesNotMatch.php | 14 - .../Exceptions/PermissionAlreadyExists.php | 13 - .../src/Exceptions/PermissionDoesNotExist.php | 22 - .../src/Exceptions/RoleAlreadyExists.php | 13 - .../src/Exceptions/RoleDoesNotExist.php | 22 - .../src/Exceptions/UnauthorizedException.php | 77 - .../WildcardPermissionInvalidArgument.php | 13 - ...ildcardPermissionNotImplementsContract.php | 13 - ...WildcardPermissionNotProperlyFormatted.php | 13 - .../spatie/laravel-permission/src/Guard.php | 107 - .../src/Middleware/PermissionMiddleware.php | 56 - .../src/Middleware/RoleMiddleware.php | 56 - .../Middleware/RoleOrPermissionMiddleware.php | 56 - .../src/Models/Permission.php | 156 - .../laravel-permission/src/Models/Role.php | 193 - .../src/PermissionRegistrar.php | 411 - .../src/PermissionServiceProvider.php | 184 - .../src/Traits/HasPermissions.php | 574 - .../src/Traits/HasRoles.php | 402 - .../src/Traits/RefreshesPermissionCache.php | 19 - .../src/WildcardPermission.php | 118 - .../spatie/laravel-permission/src/helpers.php | 33 - vendor/symfony/console/Application.php | 1331 -- .../symfony/console/Attribute/AsCommand.php | 39 - vendor/symfony/console/CHANGELOG.md | 261 - .../console/CI/GithubActionReporter.php | 99 - vendor/symfony/console/Color.php | 133 - vendor/symfony/console/Command/Command.php | 725 -- .../console/Command/CompleteCommand.php | 223 - .../console/Command/DumpCompletionCommand.php | 161 - .../symfony/console/Command/HelpCommand.php | 82 - .../symfony/console/Command/LazyCommand.php | 207 - .../symfony/console/Command/ListCommand.php | 75 - .../symfony/console/Command/LockableTrait.php | 68 - .../Command/SignalableCommandInterface.php | 34 - .../console/Command/TraceableCommand.php | 356 - .../CommandLoader/CommandLoaderInterface.php | 38 - .../CommandLoader/ContainerCommandLoader.php | 55 - .../CommandLoader/FactoryCommandLoader.php | 54 - .../console/Completion/CompletionInput.php | 248 - .../Completion/CompletionSuggestions.php | 97 - .../Output/BashCompletionOutput.php | 33 - .../Output/CompletionOutputInterface.php | 25 - .../Output/FishCompletionOutput.php | 33 - .../Completion/Output/ZshCompletionOutput.php | 36 - .../symfony/console/Completion/Suggestion.php | 41 - vendor/symfony/console/ConsoleEvents.php | 72 - vendor/symfony/console/Cursor.php | 204 - .../DataCollector/CommandDataCollector.php | 234 - vendor/symfony/console/Debug/CliRequest.php | 70 - .../AddConsoleCommandPass.php | 134 - .../Descriptor/ApplicationDescription.php | 139 - .../symfony/console/Descriptor/Descriptor.php | 74 - .../Descriptor/DescriptorInterface.php | 27 - .../console/Descriptor/JsonDescriptor.php | 166 - .../console/Descriptor/MarkdownDescriptor.php | 173 - .../Descriptor/ReStructuredTextDescriptor.php | 272 - .../console/Descriptor/TextDescriptor.php | 317 - .../console/Descriptor/XmlDescriptor.php | 232 - .../console/Event/ConsoleCommandEvent.php | 54 - .../console/Event/ConsoleErrorEvent.php | 57 - vendor/symfony/console/Event/ConsoleEvent.php | 61 - .../console/Event/ConsoleSignalEvent.php | 56 - .../console/Event/ConsoleTerminateEvent.php | 50 - .../console/EventListener/ErrorListener.php | 101 - .../Exception/CommandNotFoundException.php | 43 - .../console/Exception/ExceptionInterface.php | 21 - .../Exception/InvalidArgumentException.php | 19 - .../Exception/InvalidOptionException.php | 21 - .../console/Exception/LogicException.php | 19 - .../Exception/MissingInputException.php | 21 - .../Exception/NamespaceNotFoundException.php | 21 - .../Exception/RunCommandFailedException.php | 29 - .../console/Exception/RuntimeException.php | 19 - .../console/Formatter/NullOutputFormatter.php | 51 - .../Formatter/NullOutputFormatterStyle.php | 54 - .../console/Formatter/OutputFormatter.php | 277 - .../Formatter/OutputFormatterInterface.php | 56 - .../Formatter/OutputFormatterStyle.php | 110 - .../OutputFormatterStyleInterface.php | 60 - .../Formatter/OutputFormatterStyleStack.php | 107 - .../WrappableOutputFormatterInterface.php | 27 - .../console/Helper/DebugFormatterHelper.php | 98 - .../console/Helper/DescriptorHelper.php | 93 - vendor/symfony/console/Helper/Dumper.php | 57 - .../console/Helper/FormatterHelper.php | 81 - vendor/symfony/console/Helper/Helper.php | 174 - .../console/Helper/HelperInterface.php | 39 - vendor/symfony/console/Helper/HelperSet.php | 77 - .../console/Helper/InputAwareHelper.php | 33 - .../symfony/console/Helper/OutputWrapper.php | 76 - .../symfony/console/Helper/ProcessHelper.php | 137 - vendor/symfony/console/Helper/ProgressBar.php | 618 - .../console/Helper/ProgressIndicator.php | 235 - .../symfony/console/Helper/QuestionHelper.php | 612 - .../console/Helper/SymfonyQuestionHelper.php | 109 - vendor/symfony/console/Helper/Table.php | 926 -- vendor/symfony/console/Helper/TableCell.php | 72 - .../symfony/console/Helper/TableCellStyle.php | 84 - vendor/symfony/console/Helper/TableRows.php | 30 - .../symfony/console/Helper/TableSeparator.php | 25 - vendor/symfony/console/Helper/TableStyle.php | 362 - vendor/symfony/console/Input/ArgvInput.php | 370 - vendor/symfony/console/Input/ArrayInput.php | 196 - vendor/symfony/console/Input/Input.php | 193 - .../symfony/console/Input/InputArgument.php | 154 - .../console/Input/InputAwareInterface.php | 28 - .../symfony/console/Input/InputDefinition.php | 416 - .../symfony/console/Input/InputInterface.php | 150 - vendor/symfony/console/Input/InputOption.php | 255 - .../Input/StreamableInputInterface.php | 39 - vendor/symfony/console/Input/StringInput.php | 87 - vendor/symfony/console/LICENSE | 19 - .../symfony/console/Logger/ConsoleLogger.php | 119 - .../console/Messenger/RunCommandContext.php | 25 - .../console/Messenger/RunCommandMessage.php | 36 - .../Messenger/RunCommandMessageHandler.php | 48 - .../symfony/console/Output/AnsiColorMode.php | 106 - .../symfony/console/Output/BufferedOutput.php | 43 - .../symfony/console/Output/ConsoleOutput.php | 165 - .../console/Output/ConsoleOutputInterface.php | 33 - .../console/Output/ConsoleSectionOutput.php | 244 - vendor/symfony/console/Output/NullOutput.php | 104 - vendor/symfony/console/Output/Output.php | 155 - .../console/Output/OutputInterface.php | 111 - .../symfony/console/Output/StreamOutput.php | 113 - .../console/Output/TrimmedBufferOutput.php | 61 - .../console/Question/ChoiceQuestion.php | 177 - .../console/Question/ConfirmationQuestion.php | 57 - vendor/symfony/console/Question/Question.php | 291 - vendor/symfony/console/README.md | 36 - .../console/Resources/bin/hiddeninput.exe | Bin 9216 -> 0 bytes .../symfony/console/Resources/completion.bash | 94 - .../symfony/console/Resources/completion.fish | 29 - .../symfony/console/Resources/completion.zsh | 82 - .../console/SignalRegistry/SignalMap.php | 36 - .../console/SignalRegistry/SignalRegistry.php | 57 - .../console/SingleCommandApplication.php | 72 - vendor/symfony/console/Style/OutputStyle.php | 132 - .../symfony/console/Style/StyleInterface.php | 138 - vendor/symfony/console/Style/SymfonyStyle.php | 514 - vendor/symfony/console/Terminal.php | 236 - .../console/Tester/ApplicationTester.php | 85 - .../Tester/CommandCompletionTester.php | 56 - .../symfony/console/Tester/CommandTester.php | 76 - .../Tester/Constraint/CommandIsSuccessful.php | 43 - vendor/symfony/console/Tester/TesterTrait.php | 178 - vendor/symfony/console/composer.json | 55 - vendor/symfony/css-selector/CHANGELOG.md | 23 - .../css-selector/CssSelectorConverter.php | 67 - .../Exception/ExceptionInterface.php | 24 - .../Exception/ExpressionErrorException.php | 24 - .../Exception/InternalErrorException.php | 24 - .../css-selector/Exception/ParseException.php | 24 - .../Exception/SyntaxErrorException.php | 55 - vendor/symfony/css-selector/LICENSE | 19 - .../css-selector/Node/AbstractNode.php | 32 - .../css-selector/Node/AttributeNode.php | 79 - .../symfony/css-selector/Node/ClassNode.php | 54 - .../Node/CombinedSelectorNode.php | 63 - .../symfony/css-selector/Node/ElementNode.php | 56 - .../css-selector/Node/FunctionNode.php | 71 - vendor/symfony/css-selector/Node/HashNode.php | 54 - .../css-selector/Node/NegationNode.php | 54 - .../css-selector/Node/NodeInterface.php | 29 - .../symfony/css-selector/Node/PseudoNode.php | 54 - .../css-selector/Node/SelectorNode.php | 54 - .../symfony/css-selector/Node/Specificity.php | 73 - .../Parser/Handler/CommentHandler.php | 45 - .../Parser/Handler/HandlerInterface.php | 30 - .../Parser/Handler/HashHandler.php | 55 - .../Parser/Handler/IdentifierHandler.php | 55 - .../Parser/Handler/NumberHandler.php | 51 - .../Parser/Handler/StringHandler.php | 74 - .../Parser/Handler/WhitespaceHandler.php | 43 - vendor/symfony/css-selector/Parser/Parser.php | 359 - .../css-selector/Parser/ParserInterface.php | 34 - vendor/symfony/css-selector/Parser/Reader.php | 83 - .../Parser/Shortcut/ClassParser.php | 48 - .../Parser/Shortcut/ElementParser.php | 44 - .../Parser/Shortcut/EmptyStringParser.php | 43 - .../Parser/Shortcut/HashParser.php | 48 - vendor/symfony/css-selector/Parser/Token.php | 111 - .../css-selector/Parser/TokenStream.php | 156 - .../Parser/Tokenizer/Tokenizer.php | 73 - .../Parser/Tokenizer/TokenizerEscaping.php | 65 - .../Parser/Tokenizer/TokenizerPatterns.php | 89 - vendor/symfony/css-selector/README.md | 20 - .../XPath/Extension/AbstractExtension.php | 50 - .../Extension/AttributeMatchingExtension.php | 113 - .../XPath/Extension/CombinationExtension.php | 65 - .../XPath/Extension/ExtensionInterface.php | 67 - .../XPath/Extension/FunctionExtension.php | 165 - .../XPath/Extension/HtmlExtension.php | 178 - .../XPath/Extension/NodeExtension.php | 191 - .../XPath/Extension/PseudoClassExtension.php | 122 - .../symfony/css-selector/XPath/Translator.php | 224 - .../XPath/TranslatorInterface.php | 37 - .../symfony/css-selector/XPath/XPathExpr.php | 111 - vendor/symfony/css-selector/composer.json | 32 - .../deprecation-contracts/CHANGELOG.md | 5 - vendor/symfony/deprecation-contracts/LICENSE | 19 - .../symfony/deprecation-contracts/README.md | 26 - .../deprecation-contracts/composer.json | 35 - .../deprecation-contracts/function.php | 27 - .../symfony/error-handler/BufferingLogger.php | 71 - vendor/symfony/error-handler/CHANGELOG.md | 40 - vendor/symfony/error-handler/Debug.php | 40 - .../error-handler/DebugClassLoader.php | 1273 -- .../Error/ClassNotFoundError.php | 29 - .../error-handler/Error/FatalError.php | 83 - .../error-handler/Error/OutOfMemoryError.php | 16 - .../Error/UndefinedFunctionError.php | 29 - .../Error/UndefinedMethodError.php | 29 - .../ClassNotFoundErrorEnhancer.php | 182 - .../ErrorEnhancer/ErrorEnhancerInterface.php | 20 - .../UndefinedFunctionErrorEnhancer.php | 84 - .../UndefinedMethodErrorEnhancer.php | 66 - vendor/symfony/error-handler/ErrorHandler.php | 737 -- .../ErrorRenderer/CliErrorRenderer.php | 46 - .../ErrorRenderer/ErrorRendererInterface.php | 37 - .../ErrorRenderer/FileLinkFormatter.php | 115 - .../ErrorRenderer/HtmlErrorRenderer.php | 351 - .../ErrorRenderer/SerializerErrorRenderer.php | 81 - .../Exception/FlattenException.php | 440 - .../Exception/SilencedErrorContext.php | 67 - .../error-handler/Internal/TentativeTypes.php | 1643 --- vendor/symfony/error-handler/LICENSE | 19 - vendor/symfony/error-handler/README.md | 44 - .../Resources/assets/css/error.css | 4 - .../Resources/assets/css/exception.css | 359 - .../Resources/assets/css/exception_full.css | 128 - .../Resources/assets/images/chevron-right.svg | 1 - .../assets/images/favicon.png.base64 | 1 - .../Resources/assets/images/icon-book.svg | 1 - .../Resources/assets/images/icon-copy.svg | 1 - .../assets/images/icon-minus-square-o.svg | 1 - .../assets/images/icon-minus-square.svg | 1 - .../assets/images/icon-plus-square-o.svg | 1 - .../assets/images/icon-plus-square.svg | 1 - .../Resources/assets/images/icon-support.svg | 1 - .../assets/images/symfony-ghost.svg.php | 1 - .../Resources/assets/images/symfony-logo.svg | 1 - .../Resources/assets/js/exception.js | 304 - .../bin/extract-tentative-return-types.php | 84 - .../Resources/bin/patch-type-declarations | 98 - .../Resources/views/error.html.php | 21 - .../Resources/views/exception.html.php | 115 - .../Resources/views/exception_full.html.php | 42 - .../Resources/views/logs.html.php | 45 - .../Resources/views/trace.html.php | 43 - .../Resources/views/traces.html.php | 59 - .../Resources/views/traces_text.html.php | 43 - .../symfony/error-handler/ThrowableUtils.php | 37 - vendor/symfony/error-handler/composer.json | 42 - .../event-dispatcher-contracts/CHANGELOG.md | 5 - .../event-dispatcher-contracts/Event.php | 51 - .../EventDispatcherInterface.php | 33 - .../event-dispatcher-contracts/LICENSE | 19 - .../event-dispatcher-contracts/README.md | 9 - .../event-dispatcher-contracts/composer.json | 35 - .../Attribute/AsEventListener.php | 29 - vendor/symfony/event-dispatcher/CHANGELOG.md | 96 - .../Debug/TraceableEventDispatcher.php | 356 - .../Debug/WrappedListener.php | 144 - .../AddEventAliasesPass.php | 40 - .../RegisterListenersPass.php | 213 - .../event-dispatcher/EventDispatcher.php | 256 - .../EventDispatcherInterface.php | 66 - .../EventSubscriberInterface.php | 49 - .../symfony/event-dispatcher/GenericEvent.php | 158 - .../ImmutableEventDispatcher.php | 67 - vendor/symfony/event-dispatcher/LICENSE | 19 - vendor/symfony/event-dispatcher/README.md | 15 - vendor/symfony/event-dispatcher/composer.json | 47 - vendor/symfony/finder/CHANGELOG.md | 103 - .../symfony/finder/Comparator/Comparator.php | 62 - .../finder/Comparator/DateComparator.php | 50 - .../finder/Comparator/NumberComparator.php | 78 - .../Exception/AccessDeniedException.php | 19 - .../Exception/DirectoryNotFoundException.php | 19 - vendor/symfony/finder/Finder.php | 859 -- vendor/symfony/finder/Gitignore.php | 91 - vendor/symfony/finder/Glob.php | 109 - .../finder/Iterator/CustomFilterIterator.php | 61 - .../Iterator/DateRangeFilterIterator.php | 58 - .../Iterator/DepthRangeFilterIterator.php | 48 - .../ExcludeDirectoryFilterIterator.php | 110 - .../Iterator/FileTypeFilterIterator.php | 53 - .../Iterator/FilecontentFilterIterator.php | 58 - .../Iterator/FilenameFilterIterator.php | 45 - .../symfony/finder/Iterator/LazyIterator.php | 32 - .../Iterator/MultiplePcreFilterIterator.php | 111 - .../finder/Iterator/PathFilterIterator.php | 56 - .../Iterator/RecursiveDirectoryIterator.php | 133 - .../Iterator/SizeRangeFilterIterator.php | 57 - .../finder/Iterator/SortableIterator.php | 103 - .../Iterator/VcsIgnoredFilterIterator.php | 173 - vendor/symfony/finder/LICENSE | 19 - vendor/symfony/finder/README.md | 14 - vendor/symfony/finder/SplFileInfo.php | 82 - vendor/symfony/finder/composer.json | 31 - vendor/symfony/html-sanitizer/CHANGELOG.md | 12 - .../symfony/html-sanitizer/HtmlSanitizer.php | 127 - .../html-sanitizer/HtmlSanitizerConfig.php | 507 - .../html-sanitizer/HtmlSanitizerInterface.php | 42 - vendor/symfony/html-sanitizer/LICENSE | 19 - .../Parser/MastermindsParser.php | 29 - .../html-sanitizer/Parser/ParserInterface.php | 27 - vendor/symfony/html-sanitizer/README.md | 115 - .../html-sanitizer/Reference/W3CReference.php | 400 - .../TextSanitizer/StringSanitizer.php | 82 - .../TextSanitizer/UrlSanitizer.php | 136 - .../AttributeSanitizerInterface.php | 41 - .../UrlAttributeSanitizer.php | 53 - .../html-sanitizer/Visitor/DomVisitor.php | 176 - .../html-sanitizer/Visitor/Model/Cursor.php | 26 - .../Visitor/Node/BlockedNode.php | 46 - .../Visitor/Node/DocumentNode.php | 40 - .../html-sanitizer/Visitor/Node/Node.php | 123 - .../Visitor/Node/NodeInterface.php | 37 - .../html-sanitizer/Visitor/Node/TextNode.php | 39 - vendor/symfony/html-sanitizer/composer.json | 31 - .../symfony/http-foundation/AcceptHeader.php | 150 - .../http-foundation/AcceptHeaderItem.php | 159 - .../http-foundation/BinaryFileResponse.php | 381 - vendor/symfony/http-foundation/CHANGELOG.md | 355 - .../http-foundation/ChainRequestMatcher.php | 38 - vendor/symfony/http-foundation/Cookie.php | 412 - .../Exception/BadRequestException.php | 19 - .../Exception/ConflictingHeadersException.php | 21 - .../Exception/JsonException.php | 21 - .../Exception/RequestExceptionInterface.php | 21 - .../Exception/SessionNotFoundException.php | 27 - .../SuspiciousOperationException.php | 20 - .../Exception/UnexpectedValueException.php | 16 - .../ExpressionRequestMatcher.php | 56 - .../File/Exception/AccessDeniedException.php | 25 - .../Exception/CannotWriteFileException.php | 21 - .../File/Exception/ExtensionFileException.php | 21 - .../File/Exception/FileException.php | 21 - .../File/Exception/FileNotFoundException.php | 25 - .../File/Exception/FormSizeFileException.php | 21 - .../File/Exception/IniSizeFileException.php | 21 - .../File/Exception/NoFileException.php | 21 - .../File/Exception/NoTmpDirFileException.php | 21 - .../File/Exception/PartialFileException.php | 21 - .../Exception/UnexpectedTypeException.php | 20 - .../File/Exception/UploadException.php | 21 - vendor/symfony/http-foundation/File/File.php | 141 - .../symfony/http-foundation/File/Stream.php | 25 - .../http-foundation/File/UploadedFile.php | 269 - vendor/symfony/http-foundation/FileBag.php | 136 - vendor/symfony/http-foundation/HeaderBag.php | 290 - .../symfony/http-foundation/HeaderUtils.php | 294 - vendor/symfony/http-foundation/InputBag.php | 140 - vendor/symfony/http-foundation/IpUtils.php | 241 - .../symfony/http-foundation/JsonResponse.php | 190 - vendor/symfony/http-foundation/LICENSE | 19 - .../symfony/http-foundation/ParameterBag.php | 258 - vendor/symfony/http-foundation/README.md | 14 - .../AbstractRequestRateLimiter.php | 81 - .../PeekableRequestRateLimiterInterface.php | 35 - .../RequestRateLimiterInterface.php | 30 - .../http-foundation/RedirectResponse.php | 91 - vendor/symfony/http-foundation/Request.php | 2119 ---- .../http-foundation/RequestMatcher.php | 200 - .../AttributesRequestMatcher.php | 45 - .../ExpressionRequestMatcher.php | 43 - .../RequestMatcher/HostRequestMatcher.php | 32 - .../RequestMatcher/IpsRequestMatcher.php | 44 - .../RequestMatcher/IsJsonRequestMatcher.php | 28 - .../RequestMatcher/MethodRequestMatcher.php | 46 - .../RequestMatcher/PathRequestMatcher.php | 32 - .../RequestMatcher/PortRequestMatcher.php | 32 - .../RequestMatcher/SchemeRequestMatcher.php | 46 - .../RequestMatcherInterface.php | 25 - .../symfony/http-foundation/RequestStack.php | 109 - vendor/symfony/http-foundation/Response.php | 1355 -- .../http-foundation/ResponseHeaderBag.php | 288 - vendor/symfony/http-foundation/ServerBag.php | 97 - .../Session/Attribute/AttributeBag.php | 130 - .../Attribute/AttributeBagInterface.php | 58 - .../Session/Flash/AutoExpireFlashBag.php | 137 - .../Session/Flash/FlashBag.php | 128 - .../Session/Flash/FlashBagInterface.php | 78 - .../Session/FlashBagAwareSessionInterface.php | 22 - .../http-foundation/Session/Session.php | 244 - .../Session/SessionBagInterface.php | 44 - .../Session/SessionBagProxy.php | 83 - .../Session/SessionFactory.php | 40 - .../Session/SessionFactoryInterface.php | 20 - .../Session/SessionInterface.php | 154 - .../http-foundation/Session/SessionUtils.php | 59 - .../Handler/AbstractSessionHandler.php | 111 - .../Storage/Handler/IdentityMarshaller.php | 36 - .../Handler/MarshallingSessionHandler.php | 76 - .../Handler/MemcachedSessionHandler.php | 112 - .../Handler/MigratingSessionHandler.php | 100 - .../Storage/Handler/MongoDbSessionHandler.php | 186 - .../Handler/NativeFileSessionHandler.php | 55 - .../Storage/Handler/NullSessionHandler.php | 55 - .../Storage/Handler/PdoSessionHandler.php | 901 -- .../Storage/Handler/RedisSessionHandler.php | 103 - .../Storage/Handler/SessionHandlerFactory.php | 99 - .../Storage/Handler/StrictSessionHandler.php | 89 - .../Session/Storage/MetadataBag.php | 148 - .../Storage/MockArraySessionStorage.php | 238 - .../Storage/MockFileSessionStorage.php | 152 - .../Storage/MockFileSessionStorageFactory.php | 42 - .../Session/Storage/NativeSessionStorage.php | 449 - .../Storage/NativeSessionStorageFactory.php | 50 - .../Storage/PhpBridgeSessionStorage.php | 58 - .../PhpBridgeSessionStorageFactory.php | 45 - .../Session/Storage/Proxy/AbstractProxy.php | 110 - .../Storage/Proxy/SessionHandlerProxy.php | 76 - .../SessionStorageFactoryInterface.php | 25 - .../Storage/SessionStorageInterface.php | 126 - .../http-foundation/StreamedJsonResponse.php | 162 - .../http-foundation/StreamedResponse.php | 131 - .../Constraint/RequestAttributeValueSame.php | 48 - .../Constraint/ResponseCookieValueSame.php | 76 - .../Test/Constraint/ResponseFormatSame.php | 62 - .../Test/Constraint/ResponseHasCookie.php | 68 - .../Test/Constraint/ResponseHasHeader.php | 46 - .../Constraint/ResponseHeaderLocationSame.php | 65 - .../Test/Constraint/ResponseHeaderSame.php | 48 - .../Test/Constraint/ResponseIsRedirected.php | 47 - .../Test/Constraint/ResponseIsSuccessful.php | 47 - .../Constraint/ResponseIsUnprocessable.php | 47 - .../Constraint/ResponseStatusCodeSame.php | 54 - vendor/symfony/http-foundation/UriSigner.php | 112 - vendor/symfony/http-foundation/UrlHelper.php | 108 - vendor/symfony/http-foundation/composer.json | 44 - .../http-kernel/Attribute/AsController.php | 27 - .../Attribute/AsTargetedValueResolver.php | 24 - .../symfony/http-kernel/Attribute/Cache.php | 107 - .../http-kernel/Attribute/MapDateTime.php | 29 - .../Attribute/MapQueryParameter.php | 38 - .../http-kernel/Attribute/MapQueryString.php | 37 - .../Attribute/MapRequestPayload.php | 38 - .../http-kernel/Attribute/ValueResolver.php | 27 - .../http-kernel/Attribute/WithHttpStatus.php | 28 - .../http-kernel/Attribute/WithLogLevel.php | 31 - .../http-kernel/Bundle/AbstractBundle.php | 61 - vendor/symfony/http-kernel/Bundle/Bundle.php | 160 - .../http-kernel/Bundle/BundleExtension.php | 67 - .../http-kernel/Bundle/BundleInterface.php | 74 - vendor/symfony/http-kernel/CHANGELOG.md | 382 - .../CacheClearer/CacheClearerInterface.php | 27 - .../CacheClearer/ChainCacheClearer.php | 39 - .../CacheClearer/Psr6CacheClearer.php | 69 - .../http-kernel/CacheWarmer/CacheWarmer.php | 35 - .../CacheWarmer/CacheWarmerAggregate.php | 141 - .../CacheWarmer/CacheWarmerInterface.php | 32 - .../CacheWarmer/WarmableInterface.php | 30 - .../http-kernel/Config/FileLocator.php | 43 - .../Controller/ArgumentResolver.php | 146 - .../BackedEnumValueResolver.php | 93 - .../DateTimeValueResolver.php | 98 - .../ArgumentResolver/DefaultValueResolver.php | 48 - .../NotTaggedControllerValueResolver.php | 90 - .../QueryParameterValueResolver.php | 125 - .../RequestAttributeValueResolver.php | 40 - .../RequestPayloadValueResolver.php | 197 - .../ArgumentResolver/RequestValueResolver.php | 40 - .../ArgumentResolver/ServiceValueResolver.php | 99 - .../ArgumentResolver/SessionValueResolver.php | 59 - .../TraceableValueResolver.php | 64 - .../ArgumentResolver/UidValueResolver.php | 52 - .../VariadicValueResolver.php | 50 - .../Controller/ArgumentResolverInterface.php | 32 - .../ArgumentValueResolverInterface.php | 35 - .../ContainerControllerResolver.php | 63 - .../Controller/ControllerReference.php | 44 - .../Controller/ControllerResolver.php | 279 - .../ControllerResolverInterface.php | 41 - .../Controller/ErrorController.php | 62 - .../Controller/TraceableArgumentResolver.php | 45 - .../TraceableControllerResolver.php | 41 - .../Controller/ValueResolverInterface.php | 28 - .../ControllerMetadata/ArgumentMetadata.php | 145 - .../ArgumentMetadataFactory.php | 56 - .../ArgumentMetadataFactoryInterface.php | 27 - .../DataCollector/AjaxDataCollector.php | 38 - .../DataCollector/ConfigDataCollector.php | 259 - .../DataCollector/DataCollector.php | 113 - .../DataCollector/DataCollectorInterface.php | 38 - .../DataCollector/DumpDataCollector.php | 287 - .../DataCollector/EventDataCollector.php | 140 - .../DataCollector/ExceptionDataCollector.php | 68 - .../LateDataCollectorInterface.php | 27 - .../DataCollector/LoggerDataCollector.php | 335 - .../DataCollector/MemoryDataCollector.php | 95 - .../DataCollector/RequestDataCollector.php | 535 - .../DataCollector/RouterDataCollector.php | 105 - .../DataCollector/TimeDataCollector.php | 130 - .../Debug/ErrorHandlerConfigurator.php | 107 - .../http-kernel/Debug/FileLinkFormatter.php | 31 - .../Debug/TraceableEventDispatcher.php | 85 - .../http-kernel/Debug/VirtualRequestStack.php | 65 - .../AddAnnotatedClassesToCachePass.php | 145 - .../ConfigurableExtension.php | 41 - .../ControllerArgumentValueResolverPass.php | 73 - .../DependencyInjection/Extension.php | 44 - .../FragmentRendererPass.php | 57 - .../LazyLoadingFragmentHandler.php | 49 - .../DependencyInjection/LoggerPass.php | 48 - .../MergeExtensionConfigurationPass.php | 44 - ...RegisterControllerArgumentLocatorsPass.php | 231 - .../RegisterLocaleAwareServicesPass.php | 52 - ...oveEmptyControllerArgumentLocatorsPass.php | 71 - .../ResettableServicePass.php | 68 - .../DependencyInjection/ServicesResetter.php | 61 - .../Event/ControllerArgumentsEvent.php | 109 - .../http-kernel/Event/ControllerEvent.php | 113 - .../http-kernel/Event/ExceptionEvent.php | 72 - .../http-kernel/Event/FinishRequestEvent.php | 21 - .../symfony/http-kernel/Event/KernelEvent.php | 74 - .../http-kernel/Event/RequestEvent.php | 56 - .../http-kernel/Event/ResponseEvent.php | 47 - .../http-kernel/Event/TerminateEvent.php | 41 - .../symfony/http-kernel/Event/ViewEvent.php | 48 - .../EventListener/AbstractSessionListener.php | 324 - .../AddRequestFormatsListener.php | 49 - .../EventListener/CacheAttributeListener.php | 197 - .../EventListener/DebugHandlersListener.php | 121 - .../DisallowRobotsIndexingListener.php | 40 - .../EventListener/DumpListener.php | 69 - .../EventListener/ErrorListener.php | 241 - .../EventListener/FragmentListener.php | 100 - .../EventListener/LocaleAwareListener.php | 77 - .../EventListener/LocaleListener.php | 95 - .../EventListener/ProfilerListener.php | 150 - .../EventListener/ResponseListener.php | 68 - .../EventListener/RouterListener.php | 166 - .../EventListener/SessionListener.php | 33 - .../StreamedResponseListener.php | 55 - .../EventListener/SurrogateListener.php | 67 - .../EventListener/ValidateRequestListener.php | 52 - .../Exception/AccessDeniedHttpException.php | 24 - .../Exception/BadRequestHttpException.php | 23 - .../Exception/ConflictHttpException.php | 23 - ...ntrollerDoesNotReturnResponseException.php | 83 - .../Exception/GoneHttpException.php | 23 - .../http-kernel/Exception/HttpException.php | 49 - .../Exception/HttpExceptionInterface.php | 30 - .../Exception/InvalidMetadataException.php | 16 - .../Exception/LengthRequiredHttpException.php | 23 - .../Exception/LockedHttpException.php | 23 - .../MethodNotAllowedHttpException.php | 28 - .../Exception/NotAcceptableHttpException.php | 23 - .../Exception/NotFoundHttpException.php | 23 - .../PreconditionFailedHttpException.php | 23 - .../PreconditionRequiredHttpException.php | 25 - .../Exception/ResolverNotFoundException.php | 33 - .../ServiceUnavailableHttpException.php | 30 - .../TooManyRequestsHttpException.php | 32 - .../Exception/UnauthorizedHttpException.php | 28 - .../UnexpectedSessionUsageException.php | 19 - .../UnprocessableEntityHttpException.php | 23 - .../UnsupportedMediaTypeHttpException.php | 23 - .../AbstractSurrogateFragmentRenderer.php | 106 - .../Fragment/EsiFragmentRenderer.php | 25 - .../http-kernel/Fragment/FragmentHandler.php | 111 - .../Fragment/FragmentRendererInterface.php | 34 - .../Fragment/FragmentUriGenerator.php | 90 - .../FragmentUriGeneratorInterface.php | 32 - .../Fragment/HIncludeFragmentRenderer.php | 97 - .../Fragment/InlineFragmentRenderer.php | 147 - .../Fragment/RoutableFragmentRenderer.php | 52 - .../Fragment/SsiFragmentRenderer.php | 25 - .../HttpCache/AbstractSurrogate.php | 142 - vendor/symfony/http-kernel/HttpCache/Esi.php | 105 - .../http-kernel/HttpCache/HttpCache.php | 758 -- .../HttpCache/ResponseCacheStrategy.php | 238 - .../ResponseCacheStrategyInterface.php | 41 - vendor/symfony/http-kernel/HttpCache/Ssi.php | 86 - .../symfony/http-kernel/HttpCache/Store.php | 498 - .../http-kernel/HttpCache/StoreInterface.php | 83 - .../HttpCache/SubRequestHandler.php | 92 - .../HttpCache/SurrogateInterface.php | 77 - .../symfony/http-kernel/HttpClientKernel.php | 112 - vendor/symfony/http-kernel/HttpKernel.php | 319 - .../symfony/http-kernel/HttpKernelBrowser.php | 198 - .../http-kernel/HttpKernelInterface.php | 46 - vendor/symfony/http-kernel/Kernel.php | 859 -- vendor/symfony/http-kernel/KernelEvents.php | 128 - .../symfony/http-kernel/KernelInterface.php | 139 - vendor/symfony/http-kernel/LICENSE | 19 - .../Log/DebugLoggerConfigurator.php | 55 - .../http-kernel/Log/DebugLoggerInterface.php | 51 - vendor/symfony/http-kernel/Log/Logger.php | 190 - .../Profiler/FileProfilerStorage.php | 358 - .../symfony/http-kernel/Profiler/Profile.php | 285 - .../symfony/http-kernel/Profiler/Profiler.php | 262 - .../Profiler/ProfilerStorageInterface.php | 58 - vendor/symfony/http-kernel/README.md | 15 - .../http-kernel/RebootableInterface.php | 32 - .../http-kernel/Resources/welcome.html.php | 124 - .../http-kernel/TerminableInterface.php | 34 - vendor/symfony/http-kernel/UriSigner.php | 27 - vendor/symfony/http-kernel/composer.json | 80 - vendor/symfony/mailer/CHANGELOG.md | 98 - .../mailer/Command/MailerTestCommand.php | 75 - .../DataCollector/MessageDataCollector.php | 59 - vendor/symfony/mailer/DelayedEnvelope.php | 98 - vendor/symfony/mailer/Envelope.php | 88 - .../mailer/Event/FailedMessageEvent.php | 37 - vendor/symfony/mailer/Event/MessageEvent.php | 105 - vendor/symfony/mailer/Event/MessageEvents.php | 74 - .../symfony/mailer/Event/SentMessageEvent.php | 30 - .../mailer/EventListener/EnvelopeListener.php | 71 - .../mailer/EventListener/MessageListener.php | 134 - .../EventListener/MessageLoggerListener.php | 57 - .../MessengerTransportListener.php | 49 - .../mailer/Exception/ExceptionInterface.php | 21 - .../Exception/HttpTransportException.php | 34 - .../Exception/IncompleteDsnException.php | 19 - .../Exception/InvalidArgumentException.php | 19 - .../mailer/Exception/LogicException.php | 19 - .../mailer/Exception/RuntimeException.php | 19 - .../mailer/Exception/TransportException.php | 30 - .../Exception/TransportExceptionInterface.php | 22 - .../Exception/UnsupportedSchemeException.php | 101 - .../symfony/mailer/Header/MetadataHeader.php | 34 - vendor/symfony/mailer/Header/TagHeader.php | 25 - vendor/symfony/mailer/LICENSE | 19 - vendor/symfony/mailer/Mailer.php | 76 - vendor/symfony/mailer/MailerInterface.php | 30 - .../mailer/Messenger/MessageHandler.php | 33 - .../mailer/Messenger/SendEmailMessage.php | 40 - vendor/symfony/mailer/README.md | 74 - vendor/symfony/mailer/SentMessage.php | 95 - .../mailer/Test/Constraint/EmailCount.php | 65 - .../mailer/Test/Constraint/EmailIsQueued.php | 39 - .../mailer/Test/TransportFactoryTestCase.php | 117 - vendor/symfony/mailer/Transport.php | 186 - .../mailer/Transport/AbstractApiTransport.php | 47 - .../Transport/AbstractHttpTransport.php | 78 - .../mailer/Transport/AbstractTransport.php | 136 - .../Transport/AbstractTransportFactory.php | 51 - vendor/symfony/mailer/Transport/Dsn.php | 89 - .../mailer/Transport/FailoverTransport.php | 41 - .../Transport/NativeTransportFactory.php | 63 - .../mailer/Transport/NullTransport.php | 31 - .../mailer/Transport/NullTransportFactory.php | 34 - .../mailer/Transport/RoundRobinTransport.php | 125 - .../mailer/Transport/SendmailTransport.php | 123 - .../Transport/SendmailTransportFactory.php | 34 - .../Smtp/Auth/AuthenticatorInterface.php | 35 - .../Smtp/Auth/CramMd5Authenticator.php | 65 - .../Smtp/Auth/LoginAuthenticator.php | 37 - .../Smtp/Auth/PlainAuthenticator.php | 35 - .../Smtp/Auth/XOAuth2Authenticator.php | 37 - .../mailer/Transport/Smtp/EsmtpTransport.php | 227 - .../Transport/Smtp/EsmtpTransportFactory.php | 78 - .../mailer/Transport/Smtp/SmtpTransport.php | 392 - .../Transport/Smtp/Stream/AbstractStream.php | 141 - .../Transport/Smtp/Stream/ProcessStream.php | 65 - .../Transport/Smtp/Stream/SocketStream.php | 193 - .../Transport/TransportFactoryInterface.php | 29 - .../mailer/Transport/TransportInterface.php | 33 - .../symfony/mailer/Transport/Transports.php | 75 - vendor/symfony/mailer/composer.json | 47 - vendor/symfony/mime/Address.php | 120 - vendor/symfony/mime/BodyRendererInterface.php | 20 - vendor/symfony/mime/CHANGELOG.md | 50 - vendor/symfony/mime/CharacterStream.php | 211 - vendor/symfony/mime/Crypto/DkimOptions.php | 97 - vendor/symfony/mime/Crypto/DkimSigner.php | 217 - vendor/symfony/mime/Crypto/SMime.php | 111 - vendor/symfony/mime/Crypto/SMimeEncrypter.php | 63 - vendor/symfony/mime/Crypto/SMimeSigner.php | 65 - .../AddMimeTypeGuesserPass.php | 37 - vendor/symfony/mime/DraftEmail.php | 45 - vendor/symfony/mime/Email.php | 587 - .../mime/Encoder/AddressEncoderInterface.php | 28 - .../mime/Encoder/Base64ContentEncoder.php | 45 - vendor/symfony/mime/Encoder/Base64Encoder.php | 41 - .../mime/Encoder/Base64MimeHeaderEncoder.php | 43 - .../mime/Encoder/ContentEncoderInterface.php | 30 - .../mime/Encoder/EightBitContentEncoder.php | 35 - .../symfony/mime/Encoder/EncoderInterface.php | 26 - .../mime/Encoder/IdnAddressEncoder.php | 44 - .../Encoder/MimeHeaderEncoderInterface.php | 23 - .../symfony/mime/Encoder/QpContentEncoder.php | 55 - vendor/symfony/mime/Encoder/QpEncoder.php | 192 - .../mime/Encoder/QpMimeHeaderEncoder.php | 40 - .../symfony/mime/Encoder/Rfc2231Encoder.php | 50 - .../Exception/AddressEncoderException.php | 19 - .../mime/Exception/ExceptionInterface.php | 19 - .../Exception/InvalidArgumentException.php | 19 - .../symfony/mime/Exception/LogicException.php | 19 - .../mime/Exception/RfcComplianceException.php | 19 - .../mime/Exception/RuntimeException.php | 19 - .../mime/FileBinaryMimeTypeGuesser.php | 87 - .../symfony/mime/FileinfoMimeTypeGuesser.php | 63 - vendor/symfony/mime/Header/AbstractHeader.php | 288 - vendor/symfony/mime/Header/DateHeader.php | 62 - .../symfony/mime/Header/HeaderInterface.php | 72 - vendor/symfony/mime/Header/Headers.php | 316 - .../mime/Header/IdentificationHeader.php | 107 - vendor/symfony/mime/Header/MailboxHeader.php | 85 - .../symfony/mime/Header/MailboxListHeader.php | 136 - .../mime/Header/ParameterizedHeader.php | 191 - vendor/symfony/mime/Header/PathHeader.php | 62 - .../mime/Header/UnstructuredHeader.php | 70 - .../DefaultHtmlToTextConverter.php | 23 - .../HtmlToTextConverterInterface.php | 25 - .../LeagueHtmlToMarkdownConverter.php | 35 - vendor/symfony/mime/LICENSE | 19 - vendor/symfony/mime/Message.php | 166 - vendor/symfony/mime/MessageConverter.php | 122 - .../symfony/mime/MimeTypeGuesserInterface.php | 33 - vendor/symfony/mime/MimeTypes.php | 3655 ------ vendor/symfony/mime/MimeTypesInterface.php | 32 - .../mime/Part/AbstractMultipartPart.php | 95 - vendor/symfony/mime/Part/AbstractPart.php | 65 - vendor/symfony/mime/Part/DataPart.php | 168 - vendor/symfony/mime/Part/File.php | 51 - vendor/symfony/mime/Part/MessagePart.php | 72 - .../mime/Part/Multipart/AlternativePart.php | 25 - .../mime/Part/Multipart/DigestPart.php | 31 - .../mime/Part/Multipart/FormDataPart.php | 108 - .../symfony/mime/Part/Multipart/MixedPart.php | 25 - .../mime/Part/Multipart/RelatedPart.php | 55 - vendor/symfony/mime/Part/SMimePart.php | 111 - vendor/symfony/mime/Part/TextPart.php | 244 - vendor/symfony/mime/README.md | 13 - vendor/symfony/mime/RawMessage.php | 91 - .../mime/Resources/bin/update_mime_types.php | 168 - .../Test/Constraint/EmailAddressContains.php | 67 - .../Test/Constraint/EmailAttachmentCount.php | 53 - .../mime/Test/Constraint/EmailHasHeader.php | 50 - .../mime/Test/Constraint/EmailHeaderSame.php | 62 - .../Test/Constraint/EmailHtmlBodyContains.php | 51 - .../Test/Constraint/EmailSubjectContains.php | 47 - .../Test/Constraint/EmailTextBodyContains.php | 51 - vendor/symfony/mime/composer.json | 47 - vendor/symfony/polyfill-ctype/Ctype.php | 232 - vendor/symfony/polyfill-ctype/LICENSE | 19 - vendor/symfony/polyfill-ctype/README.md | 12 - vendor/symfony/polyfill-ctype/bootstrap.php | 50 - vendor/symfony/polyfill-ctype/bootstrap80.php | 46 - vendor/symfony/polyfill-ctype/composer.json | 41 - .../polyfill-intl-grapheme/Grapheme.php | 247 - vendor/symfony/polyfill-intl-grapheme/LICENSE | 19 - .../symfony/polyfill-intl-grapheme/README.md | 31 - .../polyfill-intl-grapheme/bootstrap.php | 58 - .../polyfill-intl-grapheme/bootstrap80.php | 50 - .../polyfill-intl-grapheme/composer.json | 38 - vendor/symfony/polyfill-intl-idn/Idn.php | 923 -- vendor/symfony/polyfill-intl-idn/Info.php | 23 - vendor/symfony/polyfill-intl-idn/LICENSE | 19 - vendor/symfony/polyfill-intl-idn/README.md | 12 - .../Resources/unidata/DisallowedRanges.php | 384 - .../Resources/unidata/Regex.php | 33 - .../Resources/unidata/deviation.php | 8 - .../Resources/unidata/disallowed.php | 2638 ---- .../unidata/disallowed_STD3_mapped.php | 308 - .../unidata/disallowed_STD3_valid.php | 71 - .../Resources/unidata/ignored.php | 273 - .../Resources/unidata/mapped.php | 5778 --------- .../Resources/unidata/virama.php | 65 - .../symfony/polyfill-intl-idn/bootstrap.php | 145 - .../symfony/polyfill-intl-idn/bootstrap80.php | 125 - .../symfony/polyfill-intl-idn/composer.json | 44 - .../symfony/polyfill-intl-normalizer/LICENSE | 19 - .../polyfill-intl-normalizer/Normalizer.php | 310 - .../polyfill-intl-normalizer/README.md | 14 - .../Resources/stubs/Normalizer.php | 17 - .../unidata/canonicalComposition.php | 945 -- .../unidata/canonicalDecomposition.php | 2065 --- .../Resources/unidata/combiningClass.php | 876 -- .../unidata/compatibilityDecomposition.php | 3695 ------ .../polyfill-intl-normalizer/bootstrap.php | 23 - .../polyfill-intl-normalizer/bootstrap80.php | 19 - .../polyfill-intl-normalizer/composer.json | 39 - vendor/symfony/polyfill-mbstring/LICENSE | 19 - vendor/symfony/polyfill-mbstring/Mbstring.php | 947 -- vendor/symfony/polyfill-mbstring/README.md | 13 - .../Resources/unidata/caseFolding.php | 119 - .../Resources/unidata/lowerCase.php | 1397 --- .../Resources/unidata/titleCaseRegexp.php | 5 - .../Resources/unidata/upperCase.php | 1489 --- .../symfony/polyfill-mbstring/bootstrap.php | 151 - .../symfony/polyfill-mbstring/bootstrap80.php | 147 - .../symfony/polyfill-mbstring/composer.json | 41 - vendor/symfony/polyfill-php72/LICENSE | 19 - vendor/symfony/polyfill-php72/Php72.php | 217 - vendor/symfony/polyfill-php72/README.md | 35 - vendor/symfony/polyfill-php72/bootstrap.php | 57 - vendor/symfony/polyfill-php72/composer.json | 35 - vendor/symfony/polyfill-php80/LICENSE | 19 - vendor/symfony/polyfill-php80/Php80.php | 115 - vendor/symfony/polyfill-php80/PhpToken.php | 103 - vendor/symfony/polyfill-php80/README.md | 25 - .../Resources/stubs/Attribute.php | 31 - .../Resources/stubs/PhpToken.php | 16 - .../Resources/stubs/Stringable.php | 20 - .../Resources/stubs/UnhandledMatchError.php | 16 - .../Resources/stubs/ValueError.php | 16 - vendor/symfony/polyfill-php80/bootstrap.php | 42 - vendor/symfony/polyfill-php80/composer.json | 40 - vendor/symfony/polyfill-php83/LICENSE | 19 - vendor/symfony/polyfill-php83/Php83.php | 85 - vendor/symfony/polyfill-php83/README.md | 20 - .../Resources/stubs/DateError.php | 16 - .../Resources/stubs/DateException.php | 16 - .../stubs/DateInvalidOperationException.php | 16 - .../stubs/DateInvalidTimeZoneException.php | 16 - .../DateMalformedIntervalStringException.php | 16 - .../DateMalformedPeriodStringException.php | 16 - .../stubs/DateMalformedStringException.php | 16 - .../Resources/stubs/DateObjectError.php | 16 - .../Resources/stubs/DateRangeError.php | 16 - .../Resources/stubs/Override.php | 20 - vendor/symfony/polyfill-php83/bootstrap.php | 40 - vendor/symfony/polyfill-php83/bootstrap81.php | 22 - vendor/symfony/polyfill-php83/composer.json | 37 - vendor/symfony/polyfill-uuid/LICENSE | 19 - vendor/symfony/polyfill-uuid/README.md | 12 - vendor/symfony/polyfill-uuid/Uuid.php | 531 - vendor/symfony/polyfill-uuid/bootstrap.php | 97 - vendor/symfony/polyfill-uuid/bootstrap80.php | 89 - vendor/symfony/polyfill-uuid/composer.json | 41 - vendor/symfony/process/CHANGELOG.md | 124 - .../process/Exception/ExceptionInterface.php | 21 - .../Exception/InvalidArgumentException.php | 21 - .../process/Exception/LogicException.php | 21 - .../Exception/ProcessFailedException.php | 57 - .../Exception/ProcessSignaledException.php | 41 - .../Exception/ProcessTimedOutException.php | 73 - .../Exception/RunProcessFailedException.php | 25 - .../process/Exception/RuntimeException.php | 21 - vendor/symfony/process/ExecutableFinder.php | 82 - vendor/symfony/process/InputStream.php | 99 - vendor/symfony/process/LICENSE | 19 - .../process/Messenger/RunProcessContext.php | 33 - .../process/Messenger/RunProcessMessage.php | 32 - .../Messenger/RunProcessMessageHandler.php | 33 - .../symfony/process/PhpExecutableFinder.php | 99 - vendor/symfony/process/PhpProcess.php | 69 - vendor/symfony/process/PhpSubprocess.php | 164 - .../symfony/process/Pipes/AbstractPipes.php | 176 - .../symfony/process/Pipes/PipesInterface.php | 61 - vendor/symfony/process/Pipes/UnixPipes.php | 148 - vendor/symfony/process/Pipes/WindowsPipes.php | 186 - vendor/symfony/process/Process.php | 1596 --- vendor/symfony/process/ProcessUtils.php | 64 - vendor/symfony/process/README.md | 13 - vendor/symfony/process/composer.json | 28 - vendor/symfony/routing/Alias.php | 93 - vendor/symfony/routing/Annotation/Route.php | 23 - vendor/symfony/routing/Attribute/Route.php | 261 - vendor/symfony/routing/CHANGELOG.md | 326 - vendor/symfony/routing/CompiledRoute.php | 157 - .../AddExpressionLanguageProvidersPass.php | 36 - .../RoutingResolverPass.php | 43 - .../routing/Exception/ExceptionInterface.php | 21 - .../Exception/InvalidArgumentException.php | 16 - .../Exception/InvalidParameterException.php | 21 - .../Exception/MethodNotAllowedException.php | 44 - .../MissingMandatoryParametersException.php | 57 - .../Exception/NoConfigurationException.php | 21 - .../Exception/ResourceNotFoundException.php | 23 - .../RouteCircularReferenceException.php | 20 - .../Exception/RouteNotFoundException.php | 21 - .../routing/Exception/RuntimeException.php | 16 - .../Generator/CompiledUrlGenerator.php | 69 - .../ConfigurableRequirementsInterface.php | 53 - .../Dumper/CompiledUrlGeneratorDumper.php | 121 - .../Generator/Dumper/GeneratorDumper.php | 34 - .../Dumper/GeneratorDumperInterface.php | 33 - .../routing/Generator/UrlGenerator.php | 358 - .../Generator/UrlGeneratorInterface.php | 80 - vendor/symfony/routing/LICENSE | 19 - .../routing/Loader/AnnotationClassLoader.php | 25 - .../Loader/AnnotationDirectoryLoader.php | 25 - .../routing/Loader/AnnotationFileLoader.php | 25 - .../routing/Loader/AttributeClassLoader.php | 431 - .../Loader/AttributeDirectoryLoader.php | 92 - .../routing/Loader/AttributeFileLoader.php | 145 - .../symfony/routing/Loader/ClosureLoader.php | 38 - .../Loader/Configurator/AliasConfigurator.php | 43 - .../Configurator/CollectionConfigurator.php | 128 - .../Configurator/ImportConfigurator.php | 90 - .../Loader/Configurator/RouteConfigurator.php | 49 - .../Configurator/RoutingConfigurator.php | 78 - .../Loader/Configurator/Traits/AddTrait.php | 60 - .../Loader/Configurator/Traits/HostTrait.php | 49 - .../Traits/LocalizedRouteTrait.php | 76 - .../Configurator/Traits/PrefixTrait.php | 62 - .../Loader/Configurator/Traits/RouteTrait.php | 175 - .../routing/Loader/ContainerLoader.php | 40 - .../routing/Loader/DirectoryLoader.php | 52 - .../symfony/routing/Loader/GlobFileLoader.php | 41 - .../symfony/routing/Loader/ObjectLoader.php | 77 - .../symfony/routing/Loader/PhpFileLoader.php | 77 - .../routing/Loader/Psr4DirectoryLoader.php | 91 - .../symfony/routing/Loader/XmlFileLoader.php | 470 - .../symfony/routing/Loader/YamlFileLoader.php | 302 - .../Loader/schema/routing/routing-1.0.xsd | 201 - .../routing/Matcher/CompiledUrlMatcher.php | 31 - .../Dumper/CompiledUrlMatcherDumper.php | 501 - .../Dumper/CompiledUrlMatcherTrait.php | 186 - .../routing/Matcher/Dumper/MatcherDumper.php | 34 - .../Matcher/Dumper/MatcherDumperInterface.php | 33 - .../Matcher/Dumper/StaticPrefixCollection.php | 203 - .../Matcher/ExpressionLanguageProvider.php | 51 - .../Matcher/RedirectableUrlMatcher.php | 61 - .../RedirectableUrlMatcherInterface.php | 29 - .../Matcher/RequestMatcherInterface.php | 37 - .../routing/Matcher/TraceableUrlMatcher.php | 172 - vendor/symfony/routing/Matcher/UrlMatcher.php | 287 - .../routing/Matcher/UrlMatcherInterface.php | 39 - vendor/symfony/routing/README.md | 66 - vendor/symfony/routing/RequestContext.php | 303 - .../routing/RequestContextAwareInterface.php | 27 - .../routing/Requirement/EnumRequirement.php | 56 - .../routing/Requirement/Requirement.php | 36 - vendor/symfony/routing/Route.php | 458 - vendor/symfony/routing/RouteCollection.php | 410 - vendor/symfony/routing/RouteCompiler.php | 339 - .../routing/RouteCompilerInterface.php | 28 - vendor/symfony/routing/Router.php | 356 - vendor/symfony/routing/RouterInterface.php | 35 - vendor/symfony/routing/composer.json | 44 - .../service-contracts/Attribute/Required.php | 25 - .../Attribute/SubscribedService.php | 47 - vendor/symfony/service-contracts/CHANGELOG.md | 5 - vendor/symfony/service-contracts/LICENSE | 19 - vendor/symfony/service-contracts/README.md | 9 - .../service-contracts/ResetInterface.php | 33 - .../service-contracts/ServiceLocatorTrait.php | 115 - .../ServiceProviderInterface.php | 45 - .../ServiceSubscriberInterface.php | 62 - .../ServiceSubscriberTrait.php | 78 - .../Test/ServiceLocatorTest.php | 23 - .../Test/ServiceLocatorTestCase.php | 96 - .../symfony/service-contracts/composer.json | 41 - vendor/symfony/string/AbstractString.php | 702 -- .../symfony/string/AbstractUnicodeString.php | 590 - vendor/symfony/string/ByteString.php | 485 - vendor/symfony/string/CHANGELOG.md | 40 - vendor/symfony/string/CodePointString.php | 260 - .../string/Exception/ExceptionInterface.php | 16 - .../Exception/InvalidArgumentException.php | 16 - .../string/Exception/RuntimeException.php | 16 - .../string/Inflector/EnglishInflector.php | 541 - .../string/Inflector/FrenchInflector.php | 151 - .../string/Inflector/InflectorInterface.php | 33 - vendor/symfony/string/LICENSE | 19 - vendor/symfony/string/LazyString.php | 145 - vendor/symfony/string/README.md | 14 - .../Resources/data/wcswidth_table_wide.php | 1155 -- .../Resources/data/wcswidth_table_zero.php | 1415 --- vendor/symfony/string/Resources/functions.php | 38 - .../symfony/string/Slugger/AsciiSlugger.php | 207 - .../string/Slugger/SluggerInterface.php | 27 - vendor/symfony/string/UnicodeString.php | 382 - vendor/symfony/string/composer.json | 43 - .../translation-contracts/CHANGELOG.md | 5 - vendor/symfony/translation-contracts/LICENSE | 19 - .../LocaleAwareInterface.php | 29 - .../symfony/translation-contracts/README.md | 9 - .../Test/TranslatorTest.php | 385 - .../TranslatableInterface.php | 20 - .../TranslatorInterface.php | 68 - .../translation-contracts/TranslatorTrait.php | 225 - .../translation-contracts/composer.json | 37 - vendor/symfony/translation/CHANGELOG.md | 205 - .../Catalogue/AbstractOperation.php | 187 - .../translation/Catalogue/MergeOperation.php | 72 - .../Catalogue/OperationInterface.php | 61 - .../translation/Catalogue/TargetOperation.php | 86 - .../CatalogueMetadataAwareInterface.php | 48 - .../Command/TranslationPullCommand.php | 184 - .../Command/TranslationPushCommand.php | 182 - .../translation/Command/TranslationTrait.php | 77 - .../translation/Command/XliffLintCommand.php | 285 - .../TranslationDataCollector.php | 148 - .../translation/DataCollectorTranslator.php | 143 - .../DataCollectorTranslatorPass.php | 36 - .../LoggingTranslatorPass.php | 59 - .../TranslationDumperPass.php | 38 - .../TranslationExtractorPass.php | 43 - .../DependencyInjection/TranslatorPass.php | 94 - .../TranslatorPathsPass.php | 145 - .../translation/Dumper/CsvFileDumper.php | 56 - .../translation/Dumper/DumperInterface.php | 32 - .../symfony/translation/Dumper/FileDumper.php | 108 - .../translation/Dumper/IcuResFileDumper.php | 95 - .../translation/Dumper/IniFileDumper.php | 39 - .../translation/Dumper/JsonFileDumper.php | 34 - .../translation/Dumper/MoFileDumper.php | 76 - .../translation/Dumper/PhpFileDumper.php | 32 - .../translation/Dumper/PoFileDumper.php | 131 - .../translation/Dumper/QtFileDumper.php | 55 - .../translation/Dumper/XliffFileDumper.php | 221 - .../translation/Dumper/YamlFileDumper.php | 56 - .../Exception/ExceptionInterface.php | 21 - .../Exception/IncompleteDsnException.php | 24 - .../Exception/InvalidArgumentException.php | 21 - .../Exception/InvalidResourceException.php | 21 - .../translation/Exception/LogicException.php | 21 - .../MissingRequiredOptionException.php | 25 - .../Exception/NotFoundResourceException.php | 21 - .../Exception/ProviderException.php | 41 - .../Exception/ProviderExceptionInterface.php | 23 - .../Exception/RuntimeException.php | 21 - .../Exception/UnsupportedSchemeException.php | 58 - .../Extractor/AbstractFileExtractor.php | 67 - .../translation/Extractor/ChainExtractor.php | 59 - .../Extractor/ExtractorInterface.php | 39 - .../translation/Extractor/PhpAstExtractor.php | 80 - .../translation/Extractor/PhpExtractor.php | 333 - .../Extractor/PhpStringTokenParser.php | 141 - .../Extractor/Visitor/AbstractVisitor.php | 124 - .../Extractor/Visitor/ConstraintVisitor.php | 112 - .../Extractor/Visitor/TransMethodVisitor.php | 65 - .../Visitor/TranslatableMessageVisitor.php | 65 - .../translation/Formatter/IntlFormatter.php | 57 - .../Formatter/IntlFormatterInterface.php | 27 - .../Formatter/MessageFormatter.php | 46 - .../Formatter/MessageFormatterInterface.php | 28 - .../translation/IdentityTranslator.php | 26 - vendor/symfony/translation/LICENSE | 19 - .../translation/Loader/ArrayLoader.php | 57 - .../translation/Loader/CsvFileLoader.php | 64 - .../symfony/translation/Loader/FileLoader.php | 57 - .../translation/Loader/IcuDatFileLoader.php | 58 - .../translation/Loader/IcuResFileLoader.php | 86 - .../translation/Loader/IniFileLoader.php | 25 - .../translation/Loader/JsonFileLoader.php | 51 - .../translation/Loader/LoaderInterface.php | 32 - .../translation/Loader/MoFileLoader.php | 138 - .../translation/Loader/PhpFileLoader.php | 35 - .../translation/Loader/PoFileLoader.php | 147 - .../translation/Loader/QtFileLoader.php | 78 - .../translation/Loader/XliffFileLoader.php | 233 - .../translation/Loader/YamlFileLoader.php | 51 - vendor/symfony/translation/LocaleSwitcher.php | 78 - .../symfony/translation/LoggingTranslator.php | 115 - .../symfony/translation/MessageCatalogue.php | 338 - .../translation/MessageCatalogueInterface.php | 134 - .../translation/MetadataAwareInterface.php | 48 - .../Provider/AbstractProviderFactory.php | 37 - vendor/symfony/translation/Provider/Dsn.php | 110 - .../Provider/FilteringProvider.php | 62 - .../translation/Provider/NullProvider.php | 39 - .../Provider/NullProviderFactory.php | 34 - .../Provider/ProviderFactoryInterface.php | 26 - .../Provider/ProviderInterface.php | 30 - .../TranslationProviderCollection.php | 57 - .../TranslationProviderCollectionFactory.php | 57 - .../PseudoLocalizationTranslator.php | 365 - vendor/symfony/translation/README.md | 40 - .../translation/Reader/TranslationReader.php | 64 - .../Reader/TranslationReaderInterface.php | 29 - .../Resources/bin/translation-status.php | 274 - .../translation/Resources/data/parents.json | 142 - .../translation/Resources/functions.php | 22 - .../schemas/xliff-core-1.2-transitional.xsd | 2261 ---- .../Resources/schemas/xliff-core-2.0.xsd | 411 - .../translation/Resources/schemas/xml.xsd | 309 - .../Test/ProviderFactoryTestCase.php | 153 - .../translation/Test/ProviderTestCase.php | 82 - .../translation/TranslatableMessage.php | 60 - vendor/symfony/translation/Translator.php | 472 - vendor/symfony/translation/TranslatorBag.php | 102 - .../translation/TranslatorBagInterface.php | 36 - .../translation/Util/ArrayConverter.php | 142 - .../symfony/translation/Util/XliffUtils.php | 191 - .../translation/Writer/TranslationWriter.php | 75 - .../Writer/TranslationWriterInterface.php | 35 - vendor/symfony/translation/composer.json | 60 - vendor/symfony/uid/AbstractUid.php | 176 - vendor/symfony/uid/BinaryUtil.php | 175 - vendor/symfony/uid/CHANGELOG.md | 36 - .../uid/Command/GenerateUlidCommand.php | 119 - .../uid/Command/GenerateUuidCommand.php | 208 - .../uid/Command/InspectUlidCommand.php | 67 - .../uid/Command/InspectUuidCommand.php | 85 - .../uid/Factory/NameBasedUuidFactory.php | 44 - .../uid/Factory/RandomBasedUuidFactory.php | 31 - .../uid/Factory/TimeBasedUuidFactory.php | 44 - vendor/symfony/uid/Factory/UlidFactory.php | 22 - vendor/symfony/uid/Factory/UuidFactory.php | 95 - vendor/symfony/uid/LICENSE | 19 - vendor/symfony/uid/MaxUlid.php | 20 - vendor/symfony/uid/MaxUuid.php | 22 - vendor/symfony/uid/NilUlid.php | 20 - vendor/symfony/uid/NilUuid.php | 25 - vendor/symfony/uid/README.md | 16 - vendor/symfony/uid/TimeBasedUidInterface.php | 22 - vendor/symfony/uid/Ulid.php | 208 - vendor/symfony/uid/Uuid.php | 185 - vendor/symfony/uid/UuidV1.php | 73 - vendor/symfony/uid/UuidV3.php | 29 - vendor/symfony/uid/UuidV4.php | 36 - vendor/symfony/uid/UuidV5.php | 29 - vendor/symfony/uid/UuidV6.php | 66 - vendor/symfony/uid/UuidV7.php | 125 - vendor/symfony/uid/UuidV8.php | 27 - vendor/symfony/uid/composer.json | 36 - vendor/symfony/var-dumper/CHANGELOG.md | 91 - .../symfony/var-dumper/Caster/AmqpCaster.php | 227 - vendor/symfony/var-dumper/Caster/ArgsStub.php | 80 - vendor/symfony/var-dumper/Caster/Caster.php | 198 - .../symfony/var-dumper/Caster/ClassStub.php | 107 - .../symfony/var-dumper/Caster/ConstStub.php | 33 - .../var-dumper/Caster/CutArrayStub.php | 30 - vendor/symfony/var-dumper/Caster/CutStub.php | 64 - .../symfony/var-dumper/Caster/DOMCaster.php | 312 - .../symfony/var-dumper/Caster/DateCaster.php | 139 - .../var-dumper/Caster/DoctrineCaster.php | 71 - vendor/symfony/var-dumper/Caster/DsCaster.php | 70 - .../symfony/var-dumper/Caster/DsPairStub.php | 28 - vendor/symfony/var-dumper/Caster/EnumStub.php | 30 - .../var-dumper/Caster/ExceptionCaster.php | 419 - .../symfony/var-dumper/Caster/FFICaster.php | 161 - .../symfony/var-dumper/Caster/FiberCaster.php | 46 - .../symfony/var-dumper/Caster/FrameStub.php | 30 - .../symfony/var-dumper/Caster/GmpCaster.php | 32 - .../var-dumper/Caster/ImagineCaster.php | 37 - vendor/symfony/var-dumper/Caster/ImgStub.php | 26 - .../symfony/var-dumper/Caster/IntlCaster.php | 187 - vendor/symfony/var-dumper/Caster/LinkStub.php | 105 - .../var-dumper/Caster/MemcachedCaster.php | 84 - .../var-dumper/Caster/MysqliCaster.php | 33 - .../symfony/var-dumper/Caster/PdoCaster.php | 128 - .../symfony/var-dumper/Caster/PgSqlCaster.php | 165 - .../var-dumper/Caster/ProxyManagerCaster.php | 36 - .../var-dumper/Caster/RdKafkaCaster.php | 222 - .../symfony/var-dumper/Caster/RedisCaster.php | 159 - .../var-dumper/Caster/ReflectionCaster.php | 485 - .../var-dumper/Caster/ResourceCaster.php | 106 - .../symfony/var-dumper/Caster/ScalarStub.php | 27 - .../symfony/var-dumper/Caster/SplCaster.php | 286 - .../symfony/var-dumper/Caster/StubCaster.php | 107 - .../var-dumper/Caster/SymfonyCaster.php | 139 - .../symfony/var-dumper/Caster/TraceStub.php | 36 - .../var-dumper/Caster/UninitializedStub.php | 25 - .../symfony/var-dumper/Caster/UuidCaster.php | 30 - .../var-dumper/Caster/XmlReaderCaster.php | 95 - .../var-dumper/Caster/XmlResourceCaster.php | 66 - .../var-dumper/Cloner/AbstractCloner.php | 397 - .../var-dumper/Cloner/ClonerInterface.php | 23 - vendor/symfony/var-dumper/Cloner/Cursor.php | 43 - vendor/symfony/var-dumper/Cloner/Data.php | 434 - .../var-dumper/Cloner/DumperInterface.php | 61 - vendor/symfony/var-dumper/Cloner/Stub.php | 68 - .../symfony/var-dumper/Cloner/VarCloner.php | 243 - .../Command/Descriptor/CliDescriptor.php | 79 - .../Descriptor/DumpDescriptorInterface.php | 23 - .../Command/Descriptor/HtmlDescriptor.php | 119 - .../var-dumper/Command/ServerDumpCommand.php | 112 - .../var-dumper/Dumper/AbstractDumper.php | 204 - .../symfony/var-dumper/Dumper/CliDumper.php | 673 - .../ContextProvider/CliContextProvider.php | 32 - .../ContextProviderInterface.php | 22 - .../RequestContextProvider.php | 51 - .../ContextProvider/SourceContextProvider.php | 127 - .../Dumper/ContextualizedDumper.php | 46 - .../var-dumper/Dumper/DataDumperInterface.php | 27 - .../symfony/var-dumper/Dumper/HtmlDumper.php | 998 -- .../var-dumper/Dumper/ServerDumper.php | 55 - .../Exception/ThrowingCasterException.php | 26 - vendor/symfony/var-dumper/LICENSE | 19 - vendor/symfony/var-dumper/README.md | 15 - .../var-dumper/Resources/bin/var-dump-server | 67 - .../Resources/css/htmlDescriptor.css | 130 - .../var-dumper/Resources/functions/dump.php | 62 - .../var-dumper/Resources/js/htmlDescriptor.js | 10 - .../symfony/var-dumper/Server/Connection.php | 97 - .../symfony/var-dumper/Server/DumpServer.php | 109 - .../var-dumper/Test/VarDumperTestTrait.php | 84 - vendor/symfony/var-dumper/VarDumper.php | 127 - vendor/symfony/var-dumper/composer.json | 46 - .../css-to-inline-styles/LICENSE.md | 23 - .../css-to-inline-styles/composer.json | 38 - .../src/Css/Processor.php | 71 - .../src/Css/Property/Processor.php | 127 - .../src/Css/Property/Property.php | 90 - .../src/Css/Rule/Processor.php | 163 - .../src/Css/Rule/Rule.php | 85 - .../src/CssToInlineStyles.php | 240 - vendor/vlucas/phpdotenv/LICENSE | 30 - vendor/vlucas/phpdotenv/composer.json | 60 - vendor/vlucas/phpdotenv/src/Dotenv.php | 267 - .../src/Exception/ExceptionInterface.php | 12 - .../Exception/InvalidEncodingException.php | 12 - .../src/Exception/InvalidFileException.php | 12 - .../src/Exception/InvalidPathException.php | 12 - .../src/Exception/ValidationException.php | 12 - vendor/vlucas/phpdotenv/src/Loader/Loader.php | 47 - .../phpdotenv/src/Loader/LoaderInterface.php | 20 - .../vlucas/phpdotenv/src/Loader/Resolver.php | 65 - vendor/vlucas/phpdotenv/src/Parser/Entry.php | 59 - .../phpdotenv/src/Parser/EntryParser.php | 300 - vendor/vlucas/phpdotenv/src/Parser/Lexer.php | 58 - vendor/vlucas/phpdotenv/src/Parser/Lines.php | 127 - vendor/vlucas/phpdotenv/src/Parser/Parser.php | 53 - .../phpdotenv/src/Parser/ParserInterface.php | 19 - vendor/vlucas/phpdotenv/src/Parser/Value.php | 88 - .../Repository/Adapter/AdapterInterface.php | 15 - .../src/Repository/Adapter/ApacheAdapter.php | 89 - .../src/Repository/Adapter/ArrayAdapter.php | 80 - .../Repository/Adapter/EnvConstAdapter.php | 89 - .../src/Repository/Adapter/GuardedWriter.php | 85 - .../Repository/Adapter/ImmutableWriter.php | 110 - .../src/Repository/Adapter/MultiReader.php | 48 - .../src/Repository/Adapter/MultiWriter.php | 64 - .../src/Repository/Adapter/PutenvAdapter.php | 91 - .../Repository/Adapter/ReaderInterface.php | 17 - .../Repository/Adapter/ReplacingWriter.php | 104 - .../Repository/Adapter/ServerConstAdapter.php | 89 - .../Repository/Adapter/WriterInterface.php | 27 - .../src/Repository/AdapterRepository.php | 107 - .../src/Repository/RepositoryBuilder.php | 272 - .../src/Repository/RepositoryInterface.php | 51 - .../vlucas/phpdotenv/src/Store/File/Paths.php | 44 - .../phpdotenv/src/Store/File/Reader.php | 81 - .../vlucas/phpdotenv/src/Store/FileStore.php | 72 - .../phpdotenv/src/Store/StoreBuilder.php | 141 - .../phpdotenv/src/Store/StoreInterface.php | 17 - .../phpdotenv/src/Store/StringStore.php | 37 - vendor/vlucas/phpdotenv/src/Util/Regex.php | 112 - vendor/vlucas/phpdotenv/src/Util/Str.php | 98 - vendor/vlucas/phpdotenv/src/Validator.php | 209 - vendor/voku/portable-ascii/CHANGELOG.md | 202 - vendor/voku/portable-ascii/LICENSE.txt | 19 - vendor/voku/portable-ascii/README.md | 451 - vendor/voku/portable-ascii/composer.json | 37 - .../portable-ascii/src/voku/helper/ASCII.php | 1501 --- .../voku/helper/data/ascii_by_languages.php | 2950 ----- .../helper/data/ascii_extras_by_languages.php | 759 -- .../helper/data/ascii_language_max_key.php | 65 - .../src/voku/helper/data/ascii_ord.php | 1 - .../src/voku/helper/data/x000.php | 16 - .../src/voku/helper/data/x001.php | 1 - .../src/voku/helper/data/x002.php | 1 - .../src/voku/helper/data/x003.php | 1 - .../src/voku/helper/data/x004.php | 1 - .../src/voku/helper/data/x005.php | 1 - .../src/voku/helper/data/x006.php | 1 - .../src/voku/helper/data/x007.php | 1 - .../src/voku/helper/data/x009.php | 1 - .../src/voku/helper/data/x00a.php | 1 - .../src/voku/helper/data/x00b.php | 1 - .../src/voku/helper/data/x00c.php | 1 - .../src/voku/helper/data/x00d.php | 1 - .../src/voku/helper/data/x00e.php | 1 - .../src/voku/helper/data/x00f.php | 1 - .../src/voku/helper/data/x010.php | 1 - .../src/voku/helper/data/x011.php | 1 - .../src/voku/helper/data/x012.php | 1 - .../src/voku/helper/data/x013.php | 1 - .../src/voku/helper/data/x014.php | 1 - .../src/voku/helper/data/x015.php | 1 - .../src/voku/helper/data/x016.php | 1 - .../src/voku/helper/data/x017.php | 1 - .../src/voku/helper/data/x018.php | 1 - .../src/voku/helper/data/x01d.php | 1 - .../src/voku/helper/data/x01e.php | 1 - .../src/voku/helper/data/x01f.php | 1 - .../src/voku/helper/data/x020.php | 4 - .../src/voku/helper/data/x021.php | 1 - .../src/voku/helper/data/x022.php | 1 - .../src/voku/helper/data/x023.php | 1 - .../src/voku/helper/data/x024.php | 1 - .../src/voku/helper/data/x025.php | 1 - .../src/voku/helper/data/x026.php | 1 - .../src/voku/helper/data/x027.php | 1 - .../src/voku/helper/data/x028.php | 1 - .../src/voku/helper/data/x029.php | 1 - .../src/voku/helper/data/x02a.php | 1 - .../src/voku/helper/data/x02c.php | 1 - .../src/voku/helper/data/x02e.php | 1 - .../src/voku/helper/data/x02f.php | 1 - .../src/voku/helper/data/x030.php | 9 - .../src/voku/helper/data/x031.php | 1 - .../src/voku/helper/data/x032.php | 1 - .../src/voku/helper/data/x033.php | 1 - .../src/voku/helper/data/x04d.php | 1 - .../src/voku/helper/data/x04e.php | 1 - .../src/voku/helper/data/x04f.php | 1 - .../src/voku/helper/data/x050.php | 1 - .../src/voku/helper/data/x051.php | 1 - .../src/voku/helper/data/x052.php | 1 - .../src/voku/helper/data/x053.php | 1 - .../src/voku/helper/data/x054.php | 1 - .../src/voku/helper/data/x055.php | 1 - .../src/voku/helper/data/x056.php | 1 - .../src/voku/helper/data/x057.php | 1 - .../src/voku/helper/data/x058.php | 1 - .../src/voku/helper/data/x059.php | 1 - .../src/voku/helper/data/x05a.php | 1 - .../src/voku/helper/data/x05b.php | 1 - .../src/voku/helper/data/x05c.php | 1 - .../src/voku/helper/data/x05d.php | 1 - .../src/voku/helper/data/x05e.php | 1 - .../src/voku/helper/data/x05f.php | 1 - .../src/voku/helper/data/x060.php | 1 - .../src/voku/helper/data/x061.php | 1 - .../src/voku/helper/data/x062.php | 1 - .../src/voku/helper/data/x063.php | 1 - .../src/voku/helper/data/x064.php | 1 - .../src/voku/helper/data/x065.php | 1 - .../src/voku/helper/data/x066.php | 1 - .../src/voku/helper/data/x067.php | 1 - .../src/voku/helper/data/x068.php | 1 - .../src/voku/helper/data/x069.php | 1 - .../src/voku/helper/data/x06a.php | 1 - .../src/voku/helper/data/x06b.php | 1 - .../src/voku/helper/data/x06c.php | 1 - .../src/voku/helper/data/x06d.php | 1 - .../src/voku/helper/data/x06e.php | 1 - .../src/voku/helper/data/x06f.php | 1 - .../src/voku/helper/data/x070.php | 1 - .../src/voku/helper/data/x071.php | 1 - .../src/voku/helper/data/x072.php | 1 - .../src/voku/helper/data/x073.php | 1 - .../src/voku/helper/data/x074.php | 1 - .../src/voku/helper/data/x075.php | 1 - .../src/voku/helper/data/x076.php | 1 - .../src/voku/helper/data/x077.php | 1 - .../src/voku/helper/data/x078.php | 1 - .../src/voku/helper/data/x079.php | 1 - .../src/voku/helper/data/x07a.php | 1 - .../src/voku/helper/data/x07b.php | 1 - .../src/voku/helper/data/x07c.php | 1 - .../src/voku/helper/data/x07d.php | 1 - .../src/voku/helper/data/x07e.php | 1 - .../src/voku/helper/data/x07f.php | 1 - .../src/voku/helper/data/x080.php | 1 - .../src/voku/helper/data/x081.php | 1 - .../src/voku/helper/data/x082.php | 1 - .../src/voku/helper/data/x083.php | 1 - .../src/voku/helper/data/x084.php | 1 - .../src/voku/helper/data/x085.php | 1 - .../src/voku/helper/data/x086.php | 1 - .../src/voku/helper/data/x087.php | 1 - .../src/voku/helper/data/x088.php | 1 - .../src/voku/helper/data/x089.php | 1 - .../src/voku/helper/data/x08a.php | 1 - .../src/voku/helper/data/x08b.php | 1 - .../src/voku/helper/data/x08c.php | 1 - .../src/voku/helper/data/x08d.php | 1 - .../src/voku/helper/data/x08e.php | 1 - .../src/voku/helper/data/x08f.php | 1 - .../src/voku/helper/data/x090.php | 1 - .../src/voku/helper/data/x091.php | 1 - .../src/voku/helper/data/x092.php | 1 - .../src/voku/helper/data/x093.php | 1 - .../src/voku/helper/data/x094.php | 1 - .../src/voku/helper/data/x095.php | 1 - .../src/voku/helper/data/x096.php | 1 - .../src/voku/helper/data/x097.php | 1 - .../src/voku/helper/data/x098.php | 1 - .../src/voku/helper/data/x099.php | 1 - .../src/voku/helper/data/x09a.php | 1 - .../src/voku/helper/data/x09b.php | 1 - .../src/voku/helper/data/x09c.php | 1 - .../src/voku/helper/data/x09d.php | 1 - .../src/voku/helper/data/x09e.php | 1 - .../src/voku/helper/data/x09f.php | 1 - .../src/voku/helper/data/x0a0.php | 1 - .../src/voku/helper/data/x0a1.php | 1 - .../src/voku/helper/data/x0a2.php | 1 - .../src/voku/helper/data/x0a3.php | 1 - .../src/voku/helper/data/x0a4.php | 1 - .../src/voku/helper/data/x0ac.php | 1 - .../src/voku/helper/data/x0ad.php | 1 - .../src/voku/helper/data/x0ae.php | 1 - .../src/voku/helper/data/x0af.php | 1 - .../src/voku/helper/data/x0b0.php | 1 - .../src/voku/helper/data/x0b1.php | 1 - .../src/voku/helper/data/x0b2.php | 1 - .../src/voku/helper/data/x0b3.php | 1 - .../src/voku/helper/data/x0b4.php | 1 - .../src/voku/helper/data/x0b5.php | 1 - .../src/voku/helper/data/x0b6.php | 1 - .../src/voku/helper/data/x0b7.php | 1 - .../src/voku/helper/data/x0b8.php | 1 - .../src/voku/helper/data/x0b9.php | 1 - .../src/voku/helper/data/x0ba.php | 1 - .../src/voku/helper/data/x0bb.php | 1 - .../src/voku/helper/data/x0bc.php | 1 - .../src/voku/helper/data/x0bd.php | 1 - .../src/voku/helper/data/x0be.php | 1 - .../src/voku/helper/data/x0bf.php | 1 - .../src/voku/helper/data/x0c0.php | 1 - .../src/voku/helper/data/x0c1.php | 1 - .../src/voku/helper/data/x0c2.php | 1 - .../src/voku/helper/data/x0c3.php | 1 - .../src/voku/helper/data/x0c4.php | 1 - .../src/voku/helper/data/x0c5.php | 1 - .../src/voku/helper/data/x0c6.php | 1 - .../src/voku/helper/data/x0c7.php | 1 - .../src/voku/helper/data/x0c8.php | 1 - .../src/voku/helper/data/x0c9.php | 1 - .../src/voku/helper/data/x0ca.php | 1 - .../src/voku/helper/data/x0cb.php | 1 - .../src/voku/helper/data/x0cc.php | 1 - .../src/voku/helper/data/x0cd.php | 1 - .../src/voku/helper/data/x0ce.php | 1 - .../src/voku/helper/data/x0cf.php | 1 - .../src/voku/helper/data/x0d0.php | 1 - .../src/voku/helper/data/x0d1.php | 1 - .../src/voku/helper/data/x0d2.php | 1 - .../src/voku/helper/data/x0d3.php | 1 - .../src/voku/helper/data/x0d4.php | 1 - .../src/voku/helper/data/x0d5.php | 1 - .../src/voku/helper/data/x0d6.php | 1 - .../src/voku/helper/data/x0d7.php | 1 - .../src/voku/helper/data/x0f9.php | 1 - .../src/voku/helper/data/x0fa.php | 1 - .../src/voku/helper/data/x0fb.php | 1 - .../src/voku/helper/data/x0fc.php | 1 - .../src/voku/helper/data/x0fd.php | 1 - .../src/voku/helper/data/x0fe.php | 1 - .../src/voku/helper/data/x0ff.php | 1 - .../src/voku/helper/data/x1d4.php | 1 - .../src/voku/helper/data/x1d5.php | 4 - .../src/voku/helper/data/x1d6.php | 1 - .../src/voku/helper/data/x1d7.php | 1 - .../src/voku/helper/data/x1f1.php | 2 - vendor/webmozart/assert/CHANGELOG.md | 207 - vendor/webmozart/assert/LICENSE | 20 - vendor/webmozart/assert/README.md | 287 - vendor/webmozart/assert/composer.json | 43 - vendor/webmozart/assert/src/Assert.php | 2080 --- .../assert/src/InvalidArgumentException.php | 16 - vendor/webmozart/assert/src/Mixin.php | 5089 -------- 10314 files changed, 2970 insertions(+), 921856 deletions(-) create mode 100644 phpunit.xml create mode 100644 tests/Feature/AuthorTest.php create mode 100644 tests/Feature/Filament/UserResourceTest.php create mode 100644 tests/Feature/InstallTest.php create mode 100644 tests/Feature/MakeUserTest.php create mode 100644 tests/Feature/PageTest.php create mode 100644 tests/Feature/TaxonomyTest.php delete mode 100644 vendor/anourvalar/eloquent-serialize/.gitignore delete mode 100644 vendor/anourvalar/eloquent-serialize/.php-cs-fixer.php delete mode 100644 vendor/anourvalar/eloquent-serialize/LICENSE delete mode 100644 vendor/anourvalar/eloquent-serialize/README.md delete mode 100644 vendor/anourvalar/eloquent-serialize/composer.json delete mode 100644 vendor/anourvalar/eloquent-serialize/phpcs.xml delete mode 100644 vendor/anourvalar/eloquent-serialize/phpstan.neon delete mode 100644 vendor/anourvalar/eloquent-serialize/phpunit.xml delete mode 100644 vendor/anourvalar/eloquent-serialize/psalm.xml delete mode 100644 vendor/anourvalar/eloquent-serialize/src/Facades/EloquentSerializeFacade.php delete mode 100644 vendor/anourvalar/eloquent-serialize/src/Grammars/EloquentBuilderGrammar.php delete mode 100644 vendor/anourvalar/eloquent-serialize/src/Grammars/ModelGrammar.php delete mode 100644 vendor/anourvalar/eloquent-serialize/src/Grammars/QueryBuilderGrammar.php delete mode 100644 vendor/anourvalar/eloquent-serialize/src/Package.php delete mode 100644 vendor/anourvalar/eloquent-serialize/src/Service.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/AbstractTest.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/Casts/TestCast.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/ConnectionTest.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/DistinctTest.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/EagerTest.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/FromTest.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/GroupByTest.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/HavingTest.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/JoinTest.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/LimitTest.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/Models/File.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/Models/Post.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/Models/User.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/Models/UserPhone.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/Models/UserPhoneNote.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/OrderByTest.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/ScopeTest.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/SelectTest.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/UnionTest.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/WhereTest.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/WithCastsTest.php delete mode 100644 vendor/anourvalar/eloquent-serialize/tests/factories/Factory.php delete mode 100644 vendor/autoload.php delete mode 100755 vendor/bin/blade-icons-generate delete mode 100755 vendor/bin/blade-icons-generate.bat delete mode 100755 vendor/bin/carbon delete mode 100755 vendor/bin/carbon.bat delete mode 100755 vendor/bin/doctrine-dbal delete mode 100755 vendor/bin/doctrine-dbal.bat delete mode 100755 vendor/bin/patch-type-declarations delete mode 100755 vendor/bin/patch-type-declarations.bat delete mode 100755 vendor/bin/var-dump-server delete mode 100755 vendor/bin/var-dump-server.bat delete mode 100644 vendor/blade-ui-kit/blade-heroicons/LICENSE.md delete mode 100644 vendor/blade-ui-kit/blade-heroicons/composer.json delete mode 100644 vendor/blade-ui-kit/blade-heroicons/config/blade-heroicons.php delete mode 100644 vendor/blade-ui-kit/blade-heroicons/package.json delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-academic-cap.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-adjustments-horizontal.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-adjustments-vertical.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box-x-mark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-on-square-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-on-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-tray.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-end-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-start-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-path-rounded-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-path.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-end-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-start-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-top-right-on-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-trending-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-trending-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-on-square-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-on-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-tray.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-pointing-in.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-pointing-out.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-right-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-up-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-at-symbol.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-backspace.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-backward.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-banknotes.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-2.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-bottom-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-bottom-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-center-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-4.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-arrow-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-0.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-100.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-50.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-beaker.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-alert.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-snooze.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bolt-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bolt.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-book-open.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-briefcase.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bug-ant.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-library.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-office-2.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-office.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-storefront.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cake.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calculator.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calendar-days.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calendar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-camera.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-bar-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-bar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-pie.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-bottom-center-text.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-bottom-center.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left-ellipsis.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-oval-left-ellipsis.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-oval-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check-badge.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-up-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-circle-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document-check.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document-list.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clock.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud-arrow-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-code-bracket-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-code-bracket.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog-6-tooth.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog-8-tooth.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-command-line.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-computer-desktop.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cpu-chip.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-credit-card.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cube-transparent.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cube.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-bangladeshi.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-dollar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-euro.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-pound.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-rupee.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-yen.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cursor-arrow-rays.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cursor-arrow-ripple.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-device-phone-mobile.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-device-tablet.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-arrow-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-chart-bar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-check.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-duplicate.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-magnifying-glass.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-text.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-horizontal-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-horizontal.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-vertical.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-envelope-open.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-envelope.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-exclamation-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-exclamation-triangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye-dropper.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-face-frown.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-face-smile.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-film.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-finger-print.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-fire.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-flag.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-open.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-forward.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-funnel.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gif.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gift-top.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gift.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-alt.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-americas.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-asia-australia.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-europe-africa.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-raised.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-thumb-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-thumb-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hashtag.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-heart.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-home-modern.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-home.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-identification.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-information-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-key.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-language.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lifebuoy.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-light-bulb.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-link.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-list-bullet.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lock-closed.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lock-open.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-map-pin.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-map.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-megaphone.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-microphone.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-minus-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-moon.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-musical-note.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-newspaper.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-no-symbol.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paint-brush.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paper-airplane.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paper-clip.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pause-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pause.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pencil-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pencil.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-arrow-down-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-arrow-up-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-x-mark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-photo.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play-pause.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-plus-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-power.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-presentation-chart-bar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-presentation-chart-line.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-printer.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-puzzle-piece.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-qr-code.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-question-mark-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-queue-list.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-radio.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-receipt-percent.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-receipt-refund.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rectangle-group.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rectangle-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rocket-launch.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rss.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-scale.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-scissors.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-server-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-server.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-share.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shield-check.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shield-exclamation.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shopping-bag.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shopping-cart.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-signal-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-signal.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-sparkles.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-speaker-wave.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-speaker-x-mark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-square-2-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-square-3-stack-3d.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-squares-2x2.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-squares-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-star.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-stop-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-stop.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-sun.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-swatch.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-table-cells.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-tag.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ticket.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-trash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-trophy.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-truck.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-tv.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-group.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-users.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-variable.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-video-camera-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-video-camera.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-view-columns.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-viewfinder-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wallet.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wifi.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-window.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wrench-screwdriver.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wrench.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-x-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/c-x-mark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-academic-cap.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-adjustments-horizontal.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-adjustments-vertical.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box-x-mark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-on-square-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-on-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-tray.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-end-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-start-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-path-rounded-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-path.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-end-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-start-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-top-right-on-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-trending-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-trending-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-on-square-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-on-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-tray.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-pointing-in.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-pointing-out.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-right-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-up-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-at-symbol.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-backspace.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-backward.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-banknotes.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-2.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-bottom-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-bottom-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-center-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-4.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-arrow-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-0.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-100.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-50.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-beaker.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-alert.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-snooze.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bolt-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bolt.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-book-open.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-briefcase.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bug-ant.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-library.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-office-2.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-office.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-storefront.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cake.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calculator.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calendar-days.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calendar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-camera.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-bar-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-bar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-pie.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-bottom-center-text.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-bottom-center.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left-ellipsis.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-oval-left-ellipsis.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-oval-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check-badge.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-up-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-circle-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document-check.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document-list.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clock.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud-arrow-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-code-bracket-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-code-bracket.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog-6-tooth.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog-8-tooth.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-command-line.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-computer-desktop.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cpu-chip.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-credit-card.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cube-transparent.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cube.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-bangladeshi.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-dollar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-euro.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-pound.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-rupee.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-yen.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cursor-arrow-rays.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cursor-arrow-ripple.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-device-phone-mobile.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-device-tablet.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-arrow-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-chart-bar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-check.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-duplicate.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-magnifying-glass.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-text.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-horizontal-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-horizontal.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-vertical.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-envelope-open.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-envelope.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-exclamation-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-exclamation-triangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye-dropper.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-face-frown.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-face-smile.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-film.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-finger-print.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-fire.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-flag.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-open.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-forward.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-funnel.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gif.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gift-top.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gift.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-alt.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-americas.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-asia-australia.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-europe-africa.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-raised.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-thumb-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-thumb-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hashtag.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-heart.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-home-modern.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-home.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-identification.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-information-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-key.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-language.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lifebuoy.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-light-bulb.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-link.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-list-bullet.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lock-closed.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lock-open.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-map-pin.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-map.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-megaphone.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-microphone.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus-small.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-moon.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-musical-note.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-newspaper.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-no-symbol.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paint-brush.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paper-airplane.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paper-clip.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pause-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pause.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pencil-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pencil.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-arrow-down-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-arrow-up-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-x-mark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-photo.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play-pause.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus-small.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-power.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-presentation-chart-bar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-presentation-chart-line.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-printer.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-puzzle-piece.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-qr-code.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-question-mark-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-queue-list.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-radio.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-receipt-percent.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-receipt-refund.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rectangle-group.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rectangle-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rocket-launch.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rss.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-scale.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-scissors.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-server-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-server.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-share.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shield-check.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shield-exclamation.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shopping-bag.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shopping-cart.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-signal-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-signal.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-sparkles.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-speaker-wave.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-speaker-x-mark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-square-2-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-square-3-stack-3d.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-squares-2x2.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-squares-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-star.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-stop-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-stop.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-sun.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-swatch.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-table-cells.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-tag.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ticket.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-trash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-trophy.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-truck.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-tv.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-group.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-users.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-variable.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-video-camera-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-video-camera.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-view-columns.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-viewfinder-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wallet.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wifi.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-window.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wrench-screwdriver.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wrench.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-x-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/m-x-mark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-academic-cap.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-adjustments-horizontal.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-adjustments-vertical.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box-x-mark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-on-square-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-on-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-tray.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-end-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-start-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-path-rounded-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-path.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-end-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-start-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-top-right-on-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-trending-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-trending-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-on-square-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-on-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-tray.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-pointing-in.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-pointing-out.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-right-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-up-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-at-symbol.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-backspace.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-backward.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-banknotes.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-2.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-bottom-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-bottom-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-center-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-4.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-arrow-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-0.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-100.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-50.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-beaker.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-alert.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-snooze.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bolt-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bolt.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-book-open.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-briefcase.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bug-ant.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-library.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-office-2.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-office.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-storefront.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cake.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calculator.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calendar-days.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calendar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-camera.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-bar-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-bar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-pie.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-bottom-center-text.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-bottom-center.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left-ellipsis.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-oval-left-ellipsis.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-oval-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check-badge.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-up-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-circle-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document-check.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document-list.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clock.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud-arrow-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-code-bracket-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-code-bracket.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog-6-tooth.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog-8-tooth.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-command-line.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-computer-desktop.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cpu-chip.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-credit-card.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cube-transparent.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cube.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-bangladeshi.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-dollar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-euro.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-pound.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-rupee.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-yen.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cursor-arrow-rays.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cursor-arrow-ripple.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-device-phone-mobile.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-device-tablet.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-arrow-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-chart-bar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-check.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-duplicate.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-magnifying-glass.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-text.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-horizontal-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-horizontal.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-vertical.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-envelope-open.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-envelope.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-exclamation-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-exclamation-triangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye-dropper.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-face-frown.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-face-smile.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-film.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-finger-print.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-fire.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-flag.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-open.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-forward.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-funnel.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gif.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gift-top.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gift.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-alt.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-americas.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-asia-australia.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-europe-africa.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-raised.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-thumb-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-thumb-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hashtag.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-heart.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-home-modern.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-home.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-identification.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-information-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-key.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-language.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lifebuoy.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-light-bulb.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-link.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-list-bullet.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lock-closed.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lock-open.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-map-pin.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-map.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-megaphone.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-microphone.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus-small.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-moon.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-musical-note.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-newspaper.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-no-symbol.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paint-brush.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paper-airplane.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paper-clip.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pause-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pause.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pencil-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pencil.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-arrow-down-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-arrow-up-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-x-mark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-photo.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play-pause.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus-small.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-power.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-presentation-chart-bar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-presentation-chart-line.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-printer.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-puzzle-piece.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-qr-code.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-question-mark-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-queue-list.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-radio.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-receipt-percent.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-receipt-refund.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rectangle-group.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rectangle-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rocket-launch.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rss.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-scale.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-scissors.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-server-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-server.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-share.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shield-check.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shield-exclamation.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shopping-bag.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shopping-cart.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-signal-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-signal.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-sparkles.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-speaker-wave.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-speaker-x-mark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-square-2-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-square-3-stack-3d.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-squares-2x2.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-squares-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-star.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-stop-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-stop.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-sun.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-swatch.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-table-cells.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-tag.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ticket.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-trash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-trophy.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-truck.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-tv.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-group.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-users.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-variable.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-video-camera-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-video-camera.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-view-columns.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-viewfinder-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wallet.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wifi.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-window.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wrench-screwdriver.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wrench.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-x-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/o-x-mark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-academic-cap.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-adjustments-horizontal.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-adjustments-vertical.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box-x-mark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-on-square-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-on-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-tray.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-end-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-start-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-path-rounded-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-path.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-end-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-start-on-rectangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-top-right-on-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-trending-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-trending-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-on-square-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-on-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-tray.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-pointing-in.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-pointing-out.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-right-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-up-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-at-symbol.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-backspace.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-backward.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-banknotes.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-2.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-bottom-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-bottom-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-center-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-4.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-arrow-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-0.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-100.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-50.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-beaker.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-alert.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-snooze.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bolt-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bolt.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-book-open.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-briefcase.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bug-ant.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-library.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-office-2.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-office.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-storefront.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cake.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calculator.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calendar-days.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calendar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-camera.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-bar-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-bar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-pie.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-bottom-center-text.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-bottom-center.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left-ellipsis.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-oval-left-ellipsis.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-oval-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check-badge.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-up-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-circle-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document-check.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document-list.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clock.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud-arrow-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-code-bracket-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-code-bracket.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog-6-tooth.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog-8-tooth.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-command-line.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-computer-desktop.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cpu-chip.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-credit-card.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cube-transparent.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cube.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-bangladeshi.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-dollar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-euro.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-pound.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-rupee.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-yen.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cursor-arrow-rays.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cursor-arrow-ripple.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-device-phone-mobile.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-device-tablet.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-arrow-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-chart-bar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-check.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-duplicate.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-magnifying-glass.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-text.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-horizontal-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-horizontal.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-vertical.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-envelope-open.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-envelope.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-exclamation-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-exclamation-triangle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye-dropper.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-face-frown.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-face-smile.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-film.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-finger-print.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-fire.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-flag.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-open.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-forward.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-funnel.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gif.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gift-top.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gift.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-alt.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-americas.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-asia-australia.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-europe-africa.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-raised.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-thumb-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-thumb-up.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hashtag.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-heart.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-home-modern.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-home.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-identification.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox-arrow-down.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-information-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-key.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-language.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lifebuoy.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-light-bulb.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-link.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-list-bullet.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lock-closed.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lock-open.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-map-pin.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-map.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-megaphone.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-microphone.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus-small.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-moon.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-musical-note.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-newspaper.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-no-symbol.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paint-brush.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paper-airplane.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paper-clip.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pause-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pause.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pencil-square.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pencil.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-arrow-down-left.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-arrow-up-right.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-x-mark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-photo.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play-pause.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus-small.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-power.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-presentation-chart-bar.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-presentation-chart-line.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-printer.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-puzzle-piece.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-qr-code.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-question-mark-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-queue-list.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-radio.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-receipt-percent.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-receipt-refund.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rectangle-group.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rectangle-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rocket-launch.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rss.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-scale.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-scissors.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-server-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-server.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-share.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shield-check.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shield-exclamation.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shopping-bag.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shopping-cart.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-signal-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-signal.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-sparkles.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-speaker-wave.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-speaker-x-mark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-square-2-stack.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-square-3-stack-3d.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-squares-2x2.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-squares-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-star.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-stop-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-stop.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-sun.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-swatch.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-table-cells.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-tag.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ticket.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-trash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-trophy.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-truck.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-tv.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-group.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-minus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-plus.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-users.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-variable.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-video-camera-slash.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-video-camera.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-view-columns.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-viewfinder-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wallet.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wifi.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-window.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wrench-screwdriver.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wrench.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-x-circle.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/resources/svg/s-x-mark.svg delete mode 100644 vendor/blade-ui-kit/blade-heroicons/src/BladeHeroiconsServiceProvider.php delete mode 100644 vendor/blade-ui-kit/blade-icons/LICENSE.md delete mode 100755 vendor/blade-ui-kit/blade-icons/bin/blade-icons-generate delete mode 100644 vendor/blade-ui-kit/blade-icons/composer.json delete mode 100644 vendor/blade-ui-kit/blade-icons/config/blade-icons.php delete mode 100644 vendor/blade-ui-kit/blade-icons/pint.json delete mode 100644 vendor/blade-ui-kit/blade-icons/src/BladeIconsServiceProvider.php delete mode 100644 vendor/blade-ui-kit/blade-icons/src/Components/Icon.php delete mode 100644 vendor/blade-ui-kit/blade-icons/src/Components/Svg.php delete mode 100644 vendor/blade-ui-kit/blade-icons/src/Concerns/RendersAttributes.php delete mode 100644 vendor/blade-ui-kit/blade-icons/src/Console/CacheCommand.php delete mode 100644 vendor/blade-ui-kit/blade-icons/src/Console/ClearCommand.php delete mode 100644 vendor/blade-ui-kit/blade-icons/src/Exceptions/CannotRegisterIconSet.php delete mode 100644 vendor/blade-ui-kit/blade-icons/src/Exceptions/SvgNotFound.php delete mode 100644 vendor/blade-ui-kit/blade-icons/src/Factory.php delete mode 100644 vendor/blade-ui-kit/blade-icons/src/Generation/IconGenerator.php delete mode 100644 vendor/blade-ui-kit/blade-icons/src/IconsManifest.php delete mode 100644 vendor/blade-ui-kit/blade-icons/src/Svg.php delete mode 100644 vendor/blade-ui-kit/blade-icons/src/helpers.php delete mode 100644 vendor/brick/math/CHANGELOG.md delete mode 100644 vendor/brick/math/LICENSE delete mode 100644 vendor/brick/math/composer.json delete mode 100644 vendor/brick/math/src/BigDecimal.php delete mode 100644 vendor/brick/math/src/BigInteger.php delete mode 100644 vendor/brick/math/src/BigNumber.php delete mode 100644 vendor/brick/math/src/BigRational.php delete mode 100644 vendor/brick/math/src/Exception/DivisionByZeroException.php delete mode 100644 vendor/brick/math/src/Exception/IntegerOverflowException.php delete mode 100644 vendor/brick/math/src/Exception/MathException.php delete mode 100644 vendor/brick/math/src/Exception/NegativeNumberException.php delete mode 100644 vendor/brick/math/src/Exception/NumberFormatException.php delete mode 100644 vendor/brick/math/src/Exception/RoundingNecessaryException.php delete mode 100644 vendor/brick/math/src/Internal/Calculator.php delete mode 100644 vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php delete mode 100644 vendor/brick/math/src/Internal/Calculator/GmpCalculator.php delete mode 100644 vendor/brick/math/src/Internal/Calculator/NativeCalculator.php delete mode 100644 vendor/brick/math/src/RoundingMode.php delete mode 100644 vendor/carbonphp/carbon-doctrine-types/LICENSE delete mode 100644 vendor/carbonphp/carbon-doctrine-types/README.md delete mode 100644 vendor/carbonphp/carbon-doctrine-types/composer.json delete mode 100644 vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonDoctrineType.php delete mode 100644 vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonImmutableType.php delete mode 100644 vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonType.php delete mode 100644 vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonTypeConverter.php delete mode 100644 vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeDefaultPrecision.php delete mode 100644 vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeImmutableType.php delete mode 100644 vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeType.php delete mode 100644 vendor/composer/ClassLoader.php delete mode 100644 vendor/composer/InstalledVersions.php delete mode 100644 vendor/composer/LICENSE delete mode 100644 vendor/composer/autoload_classmap.php delete mode 100644 vendor/composer/autoload_files.php delete mode 100644 vendor/composer/autoload_namespaces.php delete mode 100644 vendor/composer/autoload_psr4.php delete mode 100644 vendor/composer/autoload_real.php delete mode 100644 vendor/composer/autoload_static.php delete mode 100644 vendor/composer/installed.json delete mode 100644 vendor/composer/installed.php delete mode 100644 vendor/danharrin/date-format-converter/.gitattributes delete mode 100644 vendor/danharrin/date-format-converter/.github/FUNDING.yml delete mode 100644 vendor/danharrin/date-format-converter/.github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 vendor/danharrin/date-format-converter/.github/ISSUE_TEMPLATE/config.yml delete mode 100644 vendor/danharrin/date-format-converter/.gitignore delete mode 100644 vendor/danharrin/date-format-converter/CODE_OF_CONDUCT.md delete mode 100644 vendor/danharrin/date-format-converter/LICENSE.md delete mode 100644 vendor/danharrin/date-format-converter/README.md delete mode 100644 vendor/danharrin/date-format-converter/SECURITY.md delete mode 100644 vendor/danharrin/date-format-converter/composer.json delete mode 100644 vendor/danharrin/date-format-converter/src/Converter.php delete mode 100644 vendor/danharrin/date-format-converter/src/helpers.php delete mode 100644 vendor/danharrin/date-format-converter/src/standards.php delete mode 100644 vendor/danharrin/livewire-rate-limiting/.github/FUNDING.yml delete mode 100644 vendor/danharrin/livewire-rate-limiting/.github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 vendor/danharrin/livewire-rate-limiting/.github/ISSUE_TEMPLATE/config.yml delete mode 100644 vendor/danharrin/livewire-rate-limiting/.github/workflows/tests.yml delete mode 100644 vendor/danharrin/livewire-rate-limiting/.gitignore delete mode 100644 vendor/danharrin/livewire-rate-limiting/CODE_OF_CONDUCT.md delete mode 100644 vendor/danharrin/livewire-rate-limiting/LICENSE.md delete mode 100644 vendor/danharrin/livewire-rate-limiting/README.md delete mode 100644 vendor/danharrin/livewire-rate-limiting/SECURITY.md delete mode 100644 vendor/danharrin/livewire-rate-limiting/composer.json delete mode 100644 vendor/danharrin/livewire-rate-limiting/phpunit.xml.dist delete mode 100644 vendor/danharrin/livewire-rate-limiting/src/Exceptions/TooManyRequestsException.php delete mode 100644 vendor/danharrin/livewire-rate-limiting/src/WithRateLimiting.php delete mode 100644 vendor/danharrin/livewire-rate-limiting/tests/RateLimitingTest.php delete mode 100644 vendor/danharrin/livewire-rate-limiting/tests/TestCase.php delete mode 100644 vendor/danharrin/livewire-rate-limiting/tests/views/component.blade.php delete mode 100644 vendor/danharrin/livewire-rate-limiting/tests/views/volt-component.blade.php delete mode 100644 vendor/dflydev/dot-access-data/CHANGELOG.md delete mode 100644 vendor/dflydev/dot-access-data/LICENSE delete mode 100644 vendor/dflydev/dot-access-data/README.md delete mode 100644 vendor/dflydev/dot-access-data/composer.json delete mode 100644 vendor/dflydev/dot-access-data/src/Data.php delete mode 100644 vendor/dflydev/dot-access-data/src/DataInterface.php delete mode 100644 vendor/dflydev/dot-access-data/src/Exception/DataException.php delete mode 100644 vendor/dflydev/dot-access-data/src/Exception/InvalidPathException.php delete mode 100644 vendor/dflydev/dot-access-data/src/Exception/MissingPathException.php delete mode 100644 vendor/dflydev/dot-access-data/src/Util.php delete mode 100644 vendor/doctrine/cache/LICENSE delete mode 100644 vendor/doctrine/cache/README.md delete mode 100644 vendor/doctrine/cache/UPGRADE-1.11.md delete mode 100644 vendor/doctrine/cache/UPGRADE-1.4.md delete mode 100644 vendor/doctrine/cache/composer.json delete mode 100644 vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php delete mode 100644 vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php delete mode 100644 vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php delete mode 100644 vendor/doctrine/cache/lib/Doctrine/Common/Cache/FlushableCache.php delete mode 100644 vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiDeleteCache.php delete mode 100644 vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiGetCache.php delete mode 100644 vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiOperationCache.php delete mode 100644 vendor/doctrine/cache/lib/Doctrine/Common/Cache/MultiPutCache.php delete mode 100644 vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheAdapter.php delete mode 100644 vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheItem.php delete mode 100644 vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/DoctrineProvider.php delete mode 100644 vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/InvalidArgument.php delete mode 100644 vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/TypedCacheItem.php delete mode 100644 vendor/doctrine/dbal/CONTRIBUTING.md delete mode 100644 vendor/doctrine/dbal/LICENSE delete mode 100644 vendor/doctrine/dbal/README.md delete mode 100755 vendor/doctrine/dbal/bin/doctrine-dbal delete mode 100644 vendor/doctrine/dbal/bin/doctrine-dbal.php delete mode 100644 vendor/doctrine/dbal/composer.json delete mode 100644 vendor/doctrine/dbal/src/ArrayParameterType.php delete mode 100644 vendor/doctrine/dbal/src/ArrayParameters/Exception.php delete mode 100644 vendor/doctrine/dbal/src/ArrayParameters/Exception/MissingNamedParameter.php delete mode 100644 vendor/doctrine/dbal/src/ArrayParameters/Exception/MissingPositionalParameter.php delete mode 100644 vendor/doctrine/dbal/src/Cache/ArrayResult.php delete mode 100644 vendor/doctrine/dbal/src/Cache/CacheException.php delete mode 100644 vendor/doctrine/dbal/src/Cache/QueryCacheProfile.php delete mode 100644 vendor/doctrine/dbal/src/ColumnCase.php delete mode 100644 vendor/doctrine/dbal/src/Configuration.php delete mode 100644 vendor/doctrine/dbal/src/Connection.php delete mode 100644 vendor/doctrine/dbal/src/ConnectionException.php delete mode 100644 vendor/doctrine/dbal/src/Connections/PrimaryReadReplicaConnection.php delete mode 100644 vendor/doctrine/dbal/src/Driver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/API/ExceptionConverter.php delete mode 100644 vendor/doctrine/dbal/src/Driver/API/IBMDB2/ExceptionConverter.php delete mode 100644 vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php delete mode 100644 vendor/doctrine/dbal/src/Driver/API/OCI/ExceptionConverter.php delete mode 100644 vendor/doctrine/dbal/src/Driver/API/PostgreSQL/ExceptionConverter.php delete mode 100644 vendor/doctrine/dbal/src/Driver/API/SQLSrv/ExceptionConverter.php delete mode 100644 vendor/doctrine/dbal/src/Driver/API/SQLite/ExceptionConverter.php delete mode 100644 vendor/doctrine/dbal/src/Driver/API/SQLite/UserDefinedFunctions.php delete mode 100644 vendor/doctrine/dbal/src/Driver/AbstractDB2Driver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/AbstractException.php delete mode 100644 vendor/doctrine/dbal/src/Driver/AbstractMySQLDriver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/AbstractOracleDriver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/AbstractOracleDriver/EasyConnectString.php delete mode 100644 vendor/doctrine/dbal/src/Driver/AbstractPostgreSQLDriver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/AbstractSQLServerDriver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/AbstractSQLServerDriver/Exception/PortWithoutHost.php delete mode 100644 vendor/doctrine/dbal/src/Driver/AbstractSQLiteDriver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/AbstractSQLiteDriver/Middleware/EnableForeignKeys.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Connection.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Exception.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Exception/UnknownParameterType.php delete mode 100644 vendor/doctrine/dbal/src/Driver/FetchUtils.php delete mode 100644 vendor/doctrine/dbal/src/Driver/IBMDB2/Connection.php delete mode 100644 vendor/doctrine/dbal/src/Driver/IBMDB2/DataSourceName.php delete mode 100644 vendor/doctrine/dbal/src/Driver/IBMDB2/Driver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/IBMDB2/Exception/CannotCopyStreamToStream.php delete mode 100644 vendor/doctrine/dbal/src/Driver/IBMDB2/Exception/CannotCreateTemporaryFile.php delete mode 100644 vendor/doctrine/dbal/src/Driver/IBMDB2/Exception/ConnectionError.php delete mode 100644 vendor/doctrine/dbal/src/Driver/IBMDB2/Exception/ConnectionFailed.php delete mode 100644 vendor/doctrine/dbal/src/Driver/IBMDB2/Exception/Factory.php delete mode 100644 vendor/doctrine/dbal/src/Driver/IBMDB2/Exception/PrepareFailed.php delete mode 100644 vendor/doctrine/dbal/src/Driver/IBMDB2/Exception/StatementError.php delete mode 100644 vendor/doctrine/dbal/src/Driver/IBMDB2/Result.php delete mode 100644 vendor/doctrine/dbal/src/Driver/IBMDB2/Statement.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Middleware.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Middleware/AbstractConnectionMiddleware.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Middleware/AbstractDriverMiddleware.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Middleware/AbstractResultMiddleware.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Middleware/AbstractStatementMiddleware.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Mysqli/Connection.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Mysqli/Driver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionError.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionFailed.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Mysqli/Exception/FailedReadingStreamOffset.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Mysqli/Exception/HostRequired.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Mysqli/Exception/InvalidCharset.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Mysqli/Exception/InvalidOption.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Mysqli/Exception/NonStreamResourceUsedAsLargeObject.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Mysqli/Exception/StatementError.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Mysqli/Initializer.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Mysqli/Initializer/Charset.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Mysqli/Initializer/Options.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Mysqli/Initializer/Secure.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Mysqli/Result.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Mysqli/Statement.php delete mode 100644 vendor/doctrine/dbal/src/Driver/OCI8/Connection.php delete mode 100644 vendor/doctrine/dbal/src/Driver/OCI8/ConvertPositionalToNamedPlaceholders.php delete mode 100644 vendor/doctrine/dbal/src/Driver/OCI8/Driver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/OCI8/Exception/ConnectionFailed.php delete mode 100644 vendor/doctrine/dbal/src/Driver/OCI8/Exception/Error.php delete mode 100644 vendor/doctrine/dbal/src/Driver/OCI8/Exception/InvalidConfiguration.php delete mode 100644 vendor/doctrine/dbal/src/Driver/OCI8/Exception/NonTerminatedStringLiteral.php delete mode 100644 vendor/doctrine/dbal/src/Driver/OCI8/Exception/SequenceDoesNotExist.php delete mode 100644 vendor/doctrine/dbal/src/Driver/OCI8/Exception/UnknownParameterIndex.php delete mode 100644 vendor/doctrine/dbal/src/Driver/OCI8/ExecutionMode.php delete mode 100644 vendor/doctrine/dbal/src/Driver/OCI8/Middleware/InitializeSession.php delete mode 100644 vendor/doctrine/dbal/src/Driver/OCI8/Result.php delete mode 100644 vendor/doctrine/dbal/src/Driver/OCI8/Statement.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PDO/Connection.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PDO/Exception.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PDO/MySQL/Driver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PDO/OCI/Driver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PDO/PDOException.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PDO/ParameterTypeMap.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PDO/PgSQL/Driver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PDO/Result.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Connection.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Driver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Statement.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PDO/SQLite/Driver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PDO/Statement.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PgSQL/Connection.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PgSQL/ConvertParameters.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PgSQL/Driver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PgSQL/Exception.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PgSQL/Exception/UnexpectedValue.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PgSQL/Exception/UnknownParameter.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PgSQL/Result.php delete mode 100644 vendor/doctrine/dbal/src/Driver/PgSQL/Statement.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Result.php delete mode 100644 vendor/doctrine/dbal/src/Driver/SQLSrv/Connection.php delete mode 100644 vendor/doctrine/dbal/src/Driver/SQLSrv/Driver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/SQLSrv/Exception/Error.php delete mode 100644 vendor/doctrine/dbal/src/Driver/SQLSrv/Result.php delete mode 100644 vendor/doctrine/dbal/src/Driver/SQLSrv/Statement.php delete mode 100644 vendor/doctrine/dbal/src/Driver/SQLite3/Connection.php delete mode 100644 vendor/doctrine/dbal/src/Driver/SQLite3/Driver.php delete mode 100644 vendor/doctrine/dbal/src/Driver/SQLite3/Exception.php delete mode 100644 vendor/doctrine/dbal/src/Driver/SQLite3/Result.php delete mode 100644 vendor/doctrine/dbal/src/Driver/SQLite3/Statement.php delete mode 100644 vendor/doctrine/dbal/src/Driver/ServerInfoAwareConnection.php delete mode 100644 vendor/doctrine/dbal/src/Driver/Statement.php delete mode 100644 vendor/doctrine/dbal/src/DriverManager.php delete mode 100644 vendor/doctrine/dbal/src/Event/ConnectionEventArgs.php delete mode 100644 vendor/doctrine/dbal/src/Event/Listeners/OracleSessionInit.php delete mode 100644 vendor/doctrine/dbal/src/Event/Listeners/SQLSessionInit.php delete mode 100644 vendor/doctrine/dbal/src/Event/Listeners/SQLiteSessionInit.php delete mode 100644 vendor/doctrine/dbal/src/Event/SchemaAlterTableAddColumnEventArgs.php delete mode 100644 vendor/doctrine/dbal/src/Event/SchemaAlterTableChangeColumnEventArgs.php delete mode 100644 vendor/doctrine/dbal/src/Event/SchemaAlterTableEventArgs.php delete mode 100644 vendor/doctrine/dbal/src/Event/SchemaAlterTableRemoveColumnEventArgs.php delete mode 100644 vendor/doctrine/dbal/src/Event/SchemaAlterTableRenameColumnEventArgs.php delete mode 100644 vendor/doctrine/dbal/src/Event/SchemaColumnDefinitionEventArgs.php delete mode 100644 vendor/doctrine/dbal/src/Event/SchemaCreateTableColumnEventArgs.php delete mode 100644 vendor/doctrine/dbal/src/Event/SchemaCreateTableEventArgs.php delete mode 100644 vendor/doctrine/dbal/src/Event/SchemaDropTableEventArgs.php delete mode 100644 vendor/doctrine/dbal/src/Event/SchemaEventArgs.php delete mode 100644 vendor/doctrine/dbal/src/Event/SchemaIndexDefinitionEventArgs.php delete mode 100644 vendor/doctrine/dbal/src/Event/TransactionBeginEventArgs.php delete mode 100644 vendor/doctrine/dbal/src/Event/TransactionCommitEventArgs.php delete mode 100644 vendor/doctrine/dbal/src/Event/TransactionEventArgs.php delete mode 100644 vendor/doctrine/dbal/src/Event/TransactionRollBackEventArgs.php delete mode 100644 vendor/doctrine/dbal/src/Events.php delete mode 100644 vendor/doctrine/dbal/src/Exception.php delete mode 100644 vendor/doctrine/dbal/src/Exception/ConnectionException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/ConnectionLost.php delete mode 100644 vendor/doctrine/dbal/src/Exception/ConstraintViolationException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/DatabaseDoesNotExist.php delete mode 100644 vendor/doctrine/dbal/src/Exception/DatabaseObjectExistsException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/DatabaseObjectNotFoundException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/DatabaseRequired.php delete mode 100644 vendor/doctrine/dbal/src/Exception/DeadlockException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/DriverException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/ForeignKeyConstraintViolationException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/InvalidArgumentException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/InvalidFieldNameException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/InvalidLockMode.php delete mode 100644 vendor/doctrine/dbal/src/Exception/LockWaitTimeoutException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/MalformedDsnException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/NoKeyValue.php delete mode 100644 vendor/doctrine/dbal/src/Exception/NonUniqueFieldNameException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/NotNullConstraintViolationException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/ReadOnlyException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/RetryableException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/SchemaDoesNotExist.php delete mode 100644 vendor/doctrine/dbal/src/Exception/ServerException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/SyntaxErrorException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/TableExistsException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/TableNotFoundException.php delete mode 100644 vendor/doctrine/dbal/src/Exception/UniqueConstraintViolationException.php delete mode 100644 vendor/doctrine/dbal/src/ExpandArrayParameters.php delete mode 100644 vendor/doctrine/dbal/src/FetchMode.php delete mode 100644 vendor/doctrine/dbal/src/Id/TableGenerator.php delete mode 100644 vendor/doctrine/dbal/src/Id/TableGeneratorSchemaVisitor.php delete mode 100644 vendor/doctrine/dbal/src/LockMode.php delete mode 100644 vendor/doctrine/dbal/src/Logging/Connection.php delete mode 100644 vendor/doctrine/dbal/src/Logging/DebugStack.php delete mode 100644 vendor/doctrine/dbal/src/Logging/Driver.php delete mode 100644 vendor/doctrine/dbal/src/Logging/LoggerChain.php delete mode 100644 vendor/doctrine/dbal/src/Logging/Middleware.php delete mode 100644 vendor/doctrine/dbal/src/Logging/SQLLogger.php delete mode 100644 vendor/doctrine/dbal/src/Logging/Statement.php delete mode 100644 vendor/doctrine/dbal/src/ParameterType.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/AbstractMySQLPlatform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/AbstractPlatform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/DB2111Platform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/DB2Platform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/DateIntervalUnit.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/Keywords/DB2Keywords.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/Keywords/KeywordList.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/Keywords/MariaDBKeywords.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/Keywords/MariaDb102Keywords.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/Keywords/MySQL57Keywords.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/Keywords/MySQL80Keywords.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/Keywords/MySQLKeywords.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/Keywords/OracleKeywords.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/Keywords/PostgreSQL100Keywords.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/Keywords/PostgreSQL94Keywords.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/Keywords/PostgreSQLKeywords.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/Keywords/ReservedKeywordsValidator.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/Keywords/SQLServer2012Keywords.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/Keywords/SQLServerKeywords.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/Keywords/SQLiteKeywords.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/MariaDBPlatform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/MariaDb1027Platform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/MariaDb1043Platform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/MariaDb1052Platform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/MariaDb1060Platform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/MySQL/CollationMetadataProvider.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/MySQL/CollationMetadataProvider/CachingCollationMetadataProvider.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/MySQL/CollationMetadataProvider/ConnectionCollationMetadataProvider.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/MySQL/Comparator.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/MySQL57Platform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/MySQL80Platform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/MySQLPlatform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/OraclePlatform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/PostgreSQL100Platform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/PostgreSQL94Platform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/PostgreSQLPlatform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/SQLServer/Comparator.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/SQLServer/SQL/Builder/SQLServerSelectSQLBuilder.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/SQLServer2012Platform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/SQLServerPlatform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/SQLite/Comparator.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/SqlitePlatform.php delete mode 100644 vendor/doctrine/dbal/src/Platforms/TrimMode.php delete mode 100644 vendor/doctrine/dbal/src/Portability/Connection.php delete mode 100644 vendor/doctrine/dbal/src/Portability/Converter.php delete mode 100644 vendor/doctrine/dbal/src/Portability/Driver.php delete mode 100644 vendor/doctrine/dbal/src/Portability/Middleware.php delete mode 100644 vendor/doctrine/dbal/src/Portability/OptimizeFlags.php delete mode 100644 vendor/doctrine/dbal/src/Portability/Result.php delete mode 100644 vendor/doctrine/dbal/src/Portability/Statement.php delete mode 100644 vendor/doctrine/dbal/src/Query.php delete mode 100644 vendor/doctrine/dbal/src/Query/Expression/CompositeExpression.php delete mode 100644 vendor/doctrine/dbal/src/Query/Expression/ExpressionBuilder.php delete mode 100644 vendor/doctrine/dbal/src/Query/ForUpdate.php delete mode 100644 vendor/doctrine/dbal/src/Query/ForUpdate/ConflictResolutionMode.php delete mode 100644 vendor/doctrine/dbal/src/Query/Limit.php delete mode 100644 vendor/doctrine/dbal/src/Query/QueryBuilder.php delete mode 100644 vendor/doctrine/dbal/src/Query/QueryException.php delete mode 100644 vendor/doctrine/dbal/src/Query/SelectQuery.php delete mode 100644 vendor/doctrine/dbal/src/Result.php delete mode 100644 vendor/doctrine/dbal/src/SQL/Builder/CreateSchemaObjectsSQLBuilder.php delete mode 100644 vendor/doctrine/dbal/src/SQL/Builder/DefaultSelectSQLBuilder.php delete mode 100644 vendor/doctrine/dbal/src/SQL/Builder/DropSchemaObjectsSQLBuilder.php delete mode 100644 vendor/doctrine/dbal/src/SQL/Builder/SelectSQLBuilder.php delete mode 100644 vendor/doctrine/dbal/src/SQL/Parser.php delete mode 100644 vendor/doctrine/dbal/src/SQL/Parser/Exception.php delete mode 100644 vendor/doctrine/dbal/src/SQL/Parser/Exception/RegularExpressionError.php delete mode 100644 vendor/doctrine/dbal/src/SQL/Parser/Visitor.php delete mode 100644 vendor/doctrine/dbal/src/Schema/AbstractAsset.php delete mode 100644 vendor/doctrine/dbal/src/Schema/AbstractSchemaManager.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Column.php delete mode 100644 vendor/doctrine/dbal/src/Schema/ColumnDiff.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Comparator.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Constraint.php delete mode 100644 vendor/doctrine/dbal/src/Schema/DB2SchemaManager.php delete mode 100644 vendor/doctrine/dbal/src/Schema/DefaultSchemaManagerFactory.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Exception/ColumnAlreadyExists.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Exception/ColumnDoesNotExist.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Exception/ForeignKeyDoesNotExist.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Exception/IndexAlreadyExists.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Exception/IndexDoesNotExist.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Exception/IndexNameInvalid.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Exception/InvalidTableName.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Exception/NamedForeignKeyRequired.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Exception/NamespaceAlreadyExists.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Exception/SequenceAlreadyExists.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Exception/SequenceDoesNotExist.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Exception/TableAlreadyExists.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Exception/TableDoesNotExist.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Exception/UniqueConstraintDoesNotExist.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Exception/UnknownColumnOption.php delete mode 100644 vendor/doctrine/dbal/src/Schema/ForeignKeyConstraint.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Identifier.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Index.php delete mode 100644 vendor/doctrine/dbal/src/Schema/LegacySchemaManagerFactory.php delete mode 100644 vendor/doctrine/dbal/src/Schema/MySQLSchemaManager.php delete mode 100644 vendor/doctrine/dbal/src/Schema/OracleSchemaManager.php delete mode 100644 vendor/doctrine/dbal/src/Schema/PostgreSQLSchemaManager.php delete mode 100644 vendor/doctrine/dbal/src/Schema/SQLServerSchemaManager.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Schema.php delete mode 100644 vendor/doctrine/dbal/src/Schema/SchemaConfig.php delete mode 100644 vendor/doctrine/dbal/src/Schema/SchemaDiff.php delete mode 100644 vendor/doctrine/dbal/src/Schema/SchemaException.php delete mode 100644 vendor/doctrine/dbal/src/Schema/SchemaManagerFactory.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Sequence.php delete mode 100644 vendor/doctrine/dbal/src/Schema/SqliteSchemaManager.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Table.php delete mode 100644 vendor/doctrine/dbal/src/Schema/TableDiff.php delete mode 100644 vendor/doctrine/dbal/src/Schema/UniqueConstraint.php delete mode 100644 vendor/doctrine/dbal/src/Schema/View.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Visitor/AbstractVisitor.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Visitor/CreateSchemaSqlCollector.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Visitor/DropSchemaSqlCollector.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Visitor/Graphviz.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Visitor/NamespaceVisitor.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Visitor/RemoveNamespacedAssets.php delete mode 100644 vendor/doctrine/dbal/src/Schema/Visitor/Visitor.php delete mode 100644 vendor/doctrine/dbal/src/Statement.php delete mode 100644 vendor/doctrine/dbal/src/Tools/Console/Command/CommandCompatibility.php delete mode 100644 vendor/doctrine/dbal/src/Tools/Console/Command/ReservedWordsCommand.php delete mode 100644 vendor/doctrine/dbal/src/Tools/Console/Command/RunSqlCommand.php delete mode 100644 vendor/doctrine/dbal/src/Tools/Console/ConnectionNotFound.php delete mode 100644 vendor/doctrine/dbal/src/Tools/Console/ConnectionProvider.php delete mode 100644 vendor/doctrine/dbal/src/Tools/Console/ConnectionProvider/SingleConnectionProvider.php delete mode 100644 vendor/doctrine/dbal/src/Tools/Console/ConsoleRunner.php delete mode 100644 vendor/doctrine/dbal/src/Tools/DsnParser.php delete mode 100644 vendor/doctrine/dbal/src/TransactionIsolationLevel.php delete mode 100644 vendor/doctrine/dbal/src/Types/ArrayType.php delete mode 100644 vendor/doctrine/dbal/src/Types/AsciiStringType.php delete mode 100644 vendor/doctrine/dbal/src/Types/BigIntType.php delete mode 100644 vendor/doctrine/dbal/src/Types/BinaryType.php delete mode 100644 vendor/doctrine/dbal/src/Types/BlobType.php delete mode 100644 vendor/doctrine/dbal/src/Types/BooleanType.php delete mode 100644 vendor/doctrine/dbal/src/Types/ConversionException.php delete mode 100644 vendor/doctrine/dbal/src/Types/DateImmutableType.php delete mode 100644 vendor/doctrine/dbal/src/Types/DateIntervalType.php delete mode 100644 vendor/doctrine/dbal/src/Types/DateTimeImmutableType.php delete mode 100644 vendor/doctrine/dbal/src/Types/DateTimeType.php delete mode 100644 vendor/doctrine/dbal/src/Types/DateTimeTzImmutableType.php delete mode 100644 vendor/doctrine/dbal/src/Types/DateTimeTzType.php delete mode 100644 vendor/doctrine/dbal/src/Types/DateType.php delete mode 100644 vendor/doctrine/dbal/src/Types/DecimalType.php delete mode 100644 vendor/doctrine/dbal/src/Types/FloatType.php delete mode 100644 vendor/doctrine/dbal/src/Types/GuidType.php delete mode 100644 vendor/doctrine/dbal/src/Types/IntegerType.php delete mode 100644 vendor/doctrine/dbal/src/Types/JsonType.php delete mode 100644 vendor/doctrine/dbal/src/Types/ObjectType.php delete mode 100644 vendor/doctrine/dbal/src/Types/PhpDateTimeMappingType.php delete mode 100644 vendor/doctrine/dbal/src/Types/PhpIntegerMappingType.php delete mode 100644 vendor/doctrine/dbal/src/Types/SimpleArrayType.php delete mode 100644 vendor/doctrine/dbal/src/Types/SmallIntType.php delete mode 100644 vendor/doctrine/dbal/src/Types/StringType.php delete mode 100644 vendor/doctrine/dbal/src/Types/TextType.php delete mode 100644 vendor/doctrine/dbal/src/Types/TimeImmutableType.php delete mode 100644 vendor/doctrine/dbal/src/Types/TimeType.php delete mode 100644 vendor/doctrine/dbal/src/Types/Type.php delete mode 100644 vendor/doctrine/dbal/src/Types/TypeRegistry.php delete mode 100644 vendor/doctrine/dbal/src/Types/Types.php delete mode 100644 vendor/doctrine/dbal/src/Types/VarDateTimeImmutableType.php delete mode 100644 vendor/doctrine/dbal/src/Types/VarDateTimeType.php delete mode 100644 vendor/doctrine/dbal/src/VersionAwarePlatformDriver.php delete mode 100644 vendor/doctrine/deprecations/LICENSE delete mode 100644 vendor/doctrine/deprecations/README.md delete mode 100644 vendor/doctrine/deprecations/composer.json delete mode 100644 vendor/doctrine/deprecations/lib/Doctrine/Deprecations/Deprecation.php delete mode 100644 vendor/doctrine/deprecations/lib/Doctrine/Deprecations/PHPUnit/VerifyDeprecations.php delete mode 100644 vendor/doctrine/event-manager/LICENSE delete mode 100644 vendor/doctrine/event-manager/README.md delete mode 100644 vendor/doctrine/event-manager/UPGRADE.md delete mode 100644 vendor/doctrine/event-manager/composer.json delete mode 100644 vendor/doctrine/event-manager/phpstan.neon.dist delete mode 100644 vendor/doctrine/event-manager/psalm.xml delete mode 100644 vendor/doctrine/event-manager/src/EventArgs.php delete mode 100644 vendor/doctrine/event-manager/src/EventManager.php delete mode 100644 vendor/doctrine/event-manager/src/EventSubscriber.php delete mode 100644 vendor/doctrine/inflector/LICENSE delete mode 100644 vendor/doctrine/inflector/README.md delete mode 100644 vendor/doctrine/inflector/composer.json delete mode 100644 vendor/doctrine/inflector/docs/en/index.rst delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Language.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/LanguageInflectorFactory.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/NoopWordInflector.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Inflectible.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/InflectorFactory.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Rules.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Uninflected.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Inflectible.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/InflectorFactory.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Rules.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Uninflected.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Inflectible.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/InflectorFactory.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Rules.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Uninflected.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Pattern.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Patterns.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Inflectible.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/InflectorFactory.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Rules.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Uninflected.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Ruleset.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Inflectible.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/InflectorFactory.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Rules.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Uninflected.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitution.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitutions.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformation.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformations.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Inflectible.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/InflectorFactory.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Rules.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Uninflected.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Word.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/RulesetInflector.php delete mode 100644 vendor/doctrine/inflector/lib/Doctrine/Inflector/WordInflector.php delete mode 100644 vendor/doctrine/lexer/LICENSE delete mode 100644 vendor/doctrine/lexer/README.md delete mode 100644 vendor/doctrine/lexer/UPGRADE.md delete mode 100644 vendor/doctrine/lexer/composer.json delete mode 100644 vendor/doctrine/lexer/src/AbstractLexer.php delete mode 100644 vendor/doctrine/lexer/src/Token.php delete mode 100644 vendor/dragonmantank/cron-expression/CHANGELOG.md delete mode 100644 vendor/dragonmantank/cron-expression/LICENSE delete mode 100644 vendor/dragonmantank/cron-expression/README.md delete mode 100644 vendor/dragonmantank/cron-expression/composer.json delete mode 100644 vendor/dragonmantank/cron-expression/src/Cron/AbstractField.php delete mode 100644 vendor/dragonmantank/cron-expression/src/Cron/CronExpression.php delete mode 100644 vendor/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php delete mode 100644 vendor/dragonmantank/cron-expression/src/Cron/DayOfWeekField.php delete mode 100644 vendor/dragonmantank/cron-expression/src/Cron/FieldFactory.php delete mode 100644 vendor/dragonmantank/cron-expression/src/Cron/FieldFactoryInterface.php delete mode 100644 vendor/dragonmantank/cron-expression/src/Cron/FieldInterface.php delete mode 100644 vendor/dragonmantank/cron-expression/src/Cron/HoursField.php delete mode 100644 vendor/dragonmantank/cron-expression/src/Cron/MinutesField.php delete mode 100644 vendor/dragonmantank/cron-expression/src/Cron/MonthField.php delete mode 100644 vendor/egulias/email-validator/CHANGELOG.md delete mode 100644 vendor/egulias/email-validator/CONTRIBUTING.md delete mode 100644 vendor/egulias/email-validator/LICENSE delete mode 100644 vendor/egulias/email-validator/composer.json delete mode 100644 vendor/egulias/email-validator/src/EmailLexer.php delete mode 100644 vendor/egulias/email-validator/src/EmailParser.php delete mode 100644 vendor/egulias/email-validator/src/EmailValidator.php delete mode 100644 vendor/egulias/email-validator/src/MessageIDParser.php delete mode 100644 vendor/egulias/email-validator/src/Parser.php delete mode 100644 vendor/egulias/email-validator/src/Parser/Comment.php delete mode 100644 vendor/egulias/email-validator/src/Parser/CommentStrategy/CommentStrategy.php delete mode 100644 vendor/egulias/email-validator/src/Parser/CommentStrategy/DomainComment.php delete mode 100644 vendor/egulias/email-validator/src/Parser/CommentStrategy/LocalComment.php delete mode 100644 vendor/egulias/email-validator/src/Parser/DomainLiteral.php delete mode 100644 vendor/egulias/email-validator/src/Parser/DomainPart.php delete mode 100644 vendor/egulias/email-validator/src/Parser/DoubleQuote.php delete mode 100644 vendor/egulias/email-validator/src/Parser/FoldingWhiteSpace.php delete mode 100644 vendor/egulias/email-validator/src/Parser/IDLeftPart.php delete mode 100644 vendor/egulias/email-validator/src/Parser/IDRightPart.php delete mode 100644 vendor/egulias/email-validator/src/Parser/LocalPart.php delete mode 100644 vendor/egulias/email-validator/src/Parser/PartParser.php delete mode 100644 vendor/egulias/email-validator/src/Result/InvalidEmail.php delete mode 100644 vendor/egulias/email-validator/src/Result/MultipleErrors.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/AtextAfterCFWS.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/CRLFAtTheEnd.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/CRLFX2.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/CRNoLF.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/CharNotAllowed.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/CommaInDomain.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/CommentsInIDRight.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/ConsecutiveAt.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/ConsecutiveDot.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/DetailedReason.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/DomainAcceptsNoMail.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/DomainHyphened.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/DomainTooLong.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/DotAtEnd.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/DotAtStart.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/EmptyReason.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/ExceptionFound.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/ExpectingATEXT.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/ExpectingCTEXT.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/ExpectingDTEXT.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/ExpectingDomainLiteralClose.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/LabelTooLong.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/LocalOrReservedDomain.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/NoDNSRecord.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/NoDomainPart.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/NoLocalPart.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/RFCWarnings.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/Reason.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/SpoofEmail.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/UnOpenedComment.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/UnableToGetDNSRecord.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/UnclosedComment.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/UnclosedQuotedString.php delete mode 100644 vendor/egulias/email-validator/src/Result/Reason/UnusualElements.php delete mode 100644 vendor/egulias/email-validator/src/Result/Result.php delete mode 100644 vendor/egulias/email-validator/src/Result/SpoofEmail.php delete mode 100644 vendor/egulias/email-validator/src/Result/ValidEmail.php delete mode 100644 vendor/egulias/email-validator/src/Validation/DNSCheckValidation.php delete mode 100644 vendor/egulias/email-validator/src/Validation/DNSGetRecordWrapper.php delete mode 100644 vendor/egulias/email-validator/src/Validation/DNSRecords.php delete mode 100644 vendor/egulias/email-validator/src/Validation/EmailValidation.php delete mode 100644 vendor/egulias/email-validator/src/Validation/Exception/EmptyValidationList.php delete mode 100644 vendor/egulias/email-validator/src/Validation/Extra/SpoofCheckValidation.php delete mode 100644 vendor/egulias/email-validator/src/Validation/MessageIDValidation.php delete mode 100644 vendor/egulias/email-validator/src/Validation/MultipleValidationWithAnd.php delete mode 100644 vendor/egulias/email-validator/src/Validation/NoRFCWarningsValidation.php delete mode 100644 vendor/egulias/email-validator/src/Validation/RFCValidation.php delete mode 100644 vendor/egulias/email-validator/src/Warning/AddressLiteral.php delete mode 100644 vendor/egulias/email-validator/src/Warning/CFWSNearAt.php delete mode 100644 vendor/egulias/email-validator/src/Warning/CFWSWithFWS.php delete mode 100644 vendor/egulias/email-validator/src/Warning/Comment.php delete mode 100644 vendor/egulias/email-validator/src/Warning/DeprecatedComment.php delete mode 100644 vendor/egulias/email-validator/src/Warning/DomainLiteral.php delete mode 100644 vendor/egulias/email-validator/src/Warning/EmailTooLong.php delete mode 100644 vendor/egulias/email-validator/src/Warning/IPV6BadChar.php delete mode 100644 vendor/egulias/email-validator/src/Warning/IPV6ColonEnd.php delete mode 100644 vendor/egulias/email-validator/src/Warning/IPV6ColonStart.php delete mode 100644 vendor/egulias/email-validator/src/Warning/IPV6Deprecated.php delete mode 100644 vendor/egulias/email-validator/src/Warning/IPV6DoubleColon.php delete mode 100644 vendor/egulias/email-validator/src/Warning/IPV6GroupCount.php delete mode 100644 vendor/egulias/email-validator/src/Warning/IPV6MaxGroups.php delete mode 100644 vendor/egulias/email-validator/src/Warning/LocalTooLong.php delete mode 100644 vendor/egulias/email-validator/src/Warning/NoDNSMXRecord.php delete mode 100644 vendor/egulias/email-validator/src/Warning/ObsoleteDTEXT.php delete mode 100644 vendor/egulias/email-validator/src/Warning/QuotedPart.php delete mode 100644 vendor/egulias/email-validator/src/Warning/QuotedString.php delete mode 100644 vendor/egulias/email-validator/src/Warning/TLD.php delete mode 100644 vendor/egulias/email-validator/src/Warning/Warning.php delete mode 100644 vendor/filament/actions/.stubs.php delete mode 100644 vendor/filament/actions/composer.json delete mode 100644 vendor/filament/actions/database/migrations/create_exports_table.php delete mode 100644 vendor/filament/actions/database/migrations/create_failed_import_rows_table.php delete mode 100644 vendor/filament/actions/database/migrations/create_imports_table.php delete mode 100644 vendor/filament/actions/docs/01-installation.md delete mode 100644 vendor/filament/actions/docs/02-overview.md delete mode 100644 vendor/filament/actions/docs/03-trigger-button.md delete mode 100644 vendor/filament/actions/docs/04-modals.md delete mode 100644 vendor/filament/actions/docs/05-grouping-actions.md delete mode 100644 vendor/filament/actions/docs/06-adding-an-action-to-a-livewire-component.md delete mode 100644 vendor/filament/actions/docs/07-prebuilt-actions/01-create.md delete mode 100644 vendor/filament/actions/docs/07-prebuilt-actions/02-edit.md delete mode 100644 vendor/filament/actions/docs/07-prebuilt-actions/03-view.md delete mode 100644 vendor/filament/actions/docs/07-prebuilt-actions/04-delete.md delete mode 100644 vendor/filament/actions/docs/07-prebuilt-actions/05-replicate.md delete mode 100644 vendor/filament/actions/docs/07-prebuilt-actions/06-force-delete.md delete mode 100644 vendor/filament/actions/docs/07-prebuilt-actions/07-restore.md delete mode 100644 vendor/filament/actions/docs/07-prebuilt-actions/08-import.md delete mode 100644 vendor/filament/actions/docs/07-prebuilt-actions/09-export.md delete mode 100644 vendor/filament/actions/docs/08-advanced.md delete mode 100644 vendor/filament/actions/docs/09-testing.md delete mode 100644 vendor/filament/actions/docs/10-upgrade-guide.md delete mode 100644 vendor/filament/actions/resources/lang/ar/associate.php delete mode 100644 vendor/filament/actions/resources/lang/ar/attach.php delete mode 100644 vendor/filament/actions/resources/lang/ar/create.php delete mode 100644 vendor/filament/actions/resources/lang/ar/delete.php delete mode 100644 vendor/filament/actions/resources/lang/ar/detach.php delete mode 100644 vendor/filament/actions/resources/lang/ar/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/ar/edit.php delete mode 100644 vendor/filament/actions/resources/lang/ar/export.php delete mode 100644 vendor/filament/actions/resources/lang/ar/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/ar/group.php delete mode 100644 vendor/filament/actions/resources/lang/ar/import.php delete mode 100644 vendor/filament/actions/resources/lang/ar/modal.php delete mode 100644 vendor/filament/actions/resources/lang/ar/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/ar/restore.php delete mode 100644 vendor/filament/actions/resources/lang/ar/view.php delete mode 100644 vendor/filament/actions/resources/lang/az/associate.php delete mode 100644 vendor/filament/actions/resources/lang/az/attach.php delete mode 100644 vendor/filament/actions/resources/lang/az/create.php delete mode 100644 vendor/filament/actions/resources/lang/az/delete.php delete mode 100644 vendor/filament/actions/resources/lang/az/detach.php delete mode 100644 vendor/filament/actions/resources/lang/az/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/az/edit.php delete mode 100644 vendor/filament/actions/resources/lang/az/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/az/group.php delete mode 100644 vendor/filament/actions/resources/lang/az/modal.php delete mode 100644 vendor/filament/actions/resources/lang/az/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/az/restore.php delete mode 100644 vendor/filament/actions/resources/lang/az/view.php delete mode 100644 vendor/filament/actions/resources/lang/bn/associate.php delete mode 100644 vendor/filament/actions/resources/lang/bn/attach.php delete mode 100644 vendor/filament/actions/resources/lang/bn/create.php delete mode 100644 vendor/filament/actions/resources/lang/bn/delete.php delete mode 100644 vendor/filament/actions/resources/lang/bn/detach.php delete mode 100644 vendor/filament/actions/resources/lang/bn/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/bn/edit.php delete mode 100644 vendor/filament/actions/resources/lang/bn/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/bn/group.php delete mode 100644 vendor/filament/actions/resources/lang/bn/modal.php delete mode 100644 vendor/filament/actions/resources/lang/bn/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/bn/restore.php delete mode 100644 vendor/filament/actions/resources/lang/bn/view.php delete mode 100644 vendor/filament/actions/resources/lang/bs/associate.php delete mode 100644 vendor/filament/actions/resources/lang/bs/attach.php delete mode 100644 vendor/filament/actions/resources/lang/bs/create.php delete mode 100644 vendor/filament/actions/resources/lang/bs/delete.php delete mode 100644 vendor/filament/actions/resources/lang/bs/detach.php delete mode 100644 vendor/filament/actions/resources/lang/bs/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/bs/edit.php delete mode 100644 vendor/filament/actions/resources/lang/bs/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/bs/group.php delete mode 100644 vendor/filament/actions/resources/lang/bs/modal.php delete mode 100644 vendor/filament/actions/resources/lang/bs/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/bs/restore.php delete mode 100644 vendor/filament/actions/resources/lang/bs/view.php delete mode 100644 vendor/filament/actions/resources/lang/ca/associate.php delete mode 100644 vendor/filament/actions/resources/lang/ca/attach.php delete mode 100644 vendor/filament/actions/resources/lang/ca/create.php delete mode 100644 vendor/filament/actions/resources/lang/ca/delete.php delete mode 100644 vendor/filament/actions/resources/lang/ca/detach.php delete mode 100644 vendor/filament/actions/resources/lang/ca/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/ca/edit.php delete mode 100644 vendor/filament/actions/resources/lang/ca/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/ca/group.php delete mode 100644 vendor/filament/actions/resources/lang/ca/import.php delete mode 100644 vendor/filament/actions/resources/lang/ca/modal.php delete mode 100644 vendor/filament/actions/resources/lang/ca/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/ca/restore.php delete mode 100644 vendor/filament/actions/resources/lang/ca/view.php delete mode 100644 vendor/filament/actions/resources/lang/ckb/associate.php delete mode 100644 vendor/filament/actions/resources/lang/ckb/attach.php delete mode 100644 vendor/filament/actions/resources/lang/ckb/create.php delete mode 100644 vendor/filament/actions/resources/lang/ckb/delete.php delete mode 100644 vendor/filament/actions/resources/lang/ckb/detach.php delete mode 100644 vendor/filament/actions/resources/lang/ckb/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/ckb/edit.php delete mode 100644 vendor/filament/actions/resources/lang/ckb/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/ckb/group.php delete mode 100644 vendor/filament/actions/resources/lang/ckb/modal.php delete mode 100644 vendor/filament/actions/resources/lang/ckb/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/ckb/restore.php delete mode 100644 vendor/filament/actions/resources/lang/ckb/view.php delete mode 100644 vendor/filament/actions/resources/lang/cs/associate.php delete mode 100644 vendor/filament/actions/resources/lang/cs/attach.php delete mode 100644 vendor/filament/actions/resources/lang/cs/create.php delete mode 100644 vendor/filament/actions/resources/lang/cs/delete.php delete mode 100644 vendor/filament/actions/resources/lang/cs/detach.php delete mode 100644 vendor/filament/actions/resources/lang/cs/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/cs/edit.php delete mode 100644 vendor/filament/actions/resources/lang/cs/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/cs/group.php delete mode 100644 vendor/filament/actions/resources/lang/cs/import.php delete mode 100644 vendor/filament/actions/resources/lang/cs/modal.php delete mode 100644 vendor/filament/actions/resources/lang/cs/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/cs/restore.php delete mode 100644 vendor/filament/actions/resources/lang/cs/view.php delete mode 100644 vendor/filament/actions/resources/lang/da/associate.php delete mode 100644 vendor/filament/actions/resources/lang/da/attach.php delete mode 100644 vendor/filament/actions/resources/lang/da/create.php delete mode 100644 vendor/filament/actions/resources/lang/da/delete.php delete mode 100644 vendor/filament/actions/resources/lang/da/detach.php delete mode 100644 vendor/filament/actions/resources/lang/da/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/da/edit.php delete mode 100644 vendor/filament/actions/resources/lang/da/export.php delete mode 100644 vendor/filament/actions/resources/lang/da/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/da/group.php delete mode 100644 vendor/filament/actions/resources/lang/da/import.php delete mode 100644 vendor/filament/actions/resources/lang/da/modal.php delete mode 100644 vendor/filament/actions/resources/lang/da/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/da/restore.php delete mode 100644 vendor/filament/actions/resources/lang/da/view.php delete mode 100644 vendor/filament/actions/resources/lang/de/associate.php delete mode 100644 vendor/filament/actions/resources/lang/de/attach.php delete mode 100644 vendor/filament/actions/resources/lang/de/create.php delete mode 100644 vendor/filament/actions/resources/lang/de/delete.php delete mode 100644 vendor/filament/actions/resources/lang/de/detach.php delete mode 100644 vendor/filament/actions/resources/lang/de/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/de/edit.php delete mode 100644 vendor/filament/actions/resources/lang/de/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/de/group.php delete mode 100644 vendor/filament/actions/resources/lang/de/modal.php delete mode 100644 vendor/filament/actions/resources/lang/de/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/de/restore.php delete mode 100644 vendor/filament/actions/resources/lang/de/view.php delete mode 100644 vendor/filament/actions/resources/lang/el/associate.php delete mode 100644 vendor/filament/actions/resources/lang/el/attach.php delete mode 100644 vendor/filament/actions/resources/lang/el/create.php delete mode 100644 vendor/filament/actions/resources/lang/el/delete.php delete mode 100644 vendor/filament/actions/resources/lang/el/detach.php delete mode 100644 vendor/filament/actions/resources/lang/el/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/el/edit.php delete mode 100644 vendor/filament/actions/resources/lang/el/export.php delete mode 100644 vendor/filament/actions/resources/lang/el/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/el/group.php delete mode 100644 vendor/filament/actions/resources/lang/el/import.php delete mode 100644 vendor/filament/actions/resources/lang/el/modal.php delete mode 100644 vendor/filament/actions/resources/lang/el/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/el/restore.php delete mode 100644 vendor/filament/actions/resources/lang/el/view.php delete mode 100644 vendor/filament/actions/resources/lang/en/associate.php delete mode 100644 vendor/filament/actions/resources/lang/en/attach.php delete mode 100644 vendor/filament/actions/resources/lang/en/create.php delete mode 100644 vendor/filament/actions/resources/lang/en/delete.php delete mode 100644 vendor/filament/actions/resources/lang/en/detach.php delete mode 100644 vendor/filament/actions/resources/lang/en/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/en/edit.php delete mode 100644 vendor/filament/actions/resources/lang/en/export.php delete mode 100644 vendor/filament/actions/resources/lang/en/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/en/group.php delete mode 100644 vendor/filament/actions/resources/lang/en/import.php delete mode 100644 vendor/filament/actions/resources/lang/en/modal.php delete mode 100644 vendor/filament/actions/resources/lang/en/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/en/restore.php delete mode 100644 vendor/filament/actions/resources/lang/en/view.php delete mode 100644 vendor/filament/actions/resources/lang/es/associate.php delete mode 100644 vendor/filament/actions/resources/lang/es/attach.php delete mode 100644 vendor/filament/actions/resources/lang/es/create.php delete mode 100644 vendor/filament/actions/resources/lang/es/delete.php delete mode 100644 vendor/filament/actions/resources/lang/es/detach.php delete mode 100644 vendor/filament/actions/resources/lang/es/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/es/edit.php delete mode 100644 vendor/filament/actions/resources/lang/es/export.php delete mode 100644 vendor/filament/actions/resources/lang/es/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/es/group.php delete mode 100644 vendor/filament/actions/resources/lang/es/import.php delete mode 100644 vendor/filament/actions/resources/lang/es/modal.php delete mode 100644 vendor/filament/actions/resources/lang/es/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/es/restore.php delete mode 100644 vendor/filament/actions/resources/lang/es/view.php delete mode 100644 vendor/filament/actions/resources/lang/fa/associate.php delete mode 100644 vendor/filament/actions/resources/lang/fa/attach.php delete mode 100644 vendor/filament/actions/resources/lang/fa/create.php delete mode 100644 vendor/filament/actions/resources/lang/fa/delete.php delete mode 100644 vendor/filament/actions/resources/lang/fa/detach.php delete mode 100644 vendor/filament/actions/resources/lang/fa/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/fa/edit.php delete mode 100644 vendor/filament/actions/resources/lang/fa/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/fa/group.php delete mode 100644 vendor/filament/actions/resources/lang/fa/modal.php delete mode 100644 vendor/filament/actions/resources/lang/fa/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/fa/restore.php delete mode 100644 vendor/filament/actions/resources/lang/fa/view.php delete mode 100644 vendor/filament/actions/resources/lang/fi/associate.php delete mode 100644 vendor/filament/actions/resources/lang/fi/attach.php delete mode 100644 vendor/filament/actions/resources/lang/fi/create.php delete mode 100644 vendor/filament/actions/resources/lang/fi/delete.php delete mode 100644 vendor/filament/actions/resources/lang/fi/detach.php delete mode 100644 vendor/filament/actions/resources/lang/fi/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/fi/edit.php delete mode 100644 vendor/filament/actions/resources/lang/fi/export.php delete mode 100644 vendor/filament/actions/resources/lang/fi/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/fi/group.php delete mode 100644 vendor/filament/actions/resources/lang/fi/import.php delete mode 100644 vendor/filament/actions/resources/lang/fi/modal.php delete mode 100644 vendor/filament/actions/resources/lang/fi/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/fi/restore.php delete mode 100644 vendor/filament/actions/resources/lang/fi/view.php delete mode 100644 vendor/filament/actions/resources/lang/fr/associate.php delete mode 100644 vendor/filament/actions/resources/lang/fr/attach.php delete mode 100644 vendor/filament/actions/resources/lang/fr/create.php delete mode 100644 vendor/filament/actions/resources/lang/fr/delete.php delete mode 100644 vendor/filament/actions/resources/lang/fr/detach.php delete mode 100644 vendor/filament/actions/resources/lang/fr/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/fr/edit.php delete mode 100644 vendor/filament/actions/resources/lang/fr/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/fr/group.php delete mode 100644 vendor/filament/actions/resources/lang/fr/import.php delete mode 100644 vendor/filament/actions/resources/lang/fr/modal.php delete mode 100644 vendor/filament/actions/resources/lang/fr/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/fr/restore.php delete mode 100644 vendor/filament/actions/resources/lang/fr/view.php delete mode 100644 vendor/filament/actions/resources/lang/he/associate.php delete mode 100644 vendor/filament/actions/resources/lang/he/attach.php delete mode 100644 vendor/filament/actions/resources/lang/he/create.php delete mode 100644 vendor/filament/actions/resources/lang/he/delete.php delete mode 100644 vendor/filament/actions/resources/lang/he/detach.php delete mode 100644 vendor/filament/actions/resources/lang/he/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/he/edit.php delete mode 100644 vendor/filament/actions/resources/lang/he/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/he/group.php delete mode 100644 vendor/filament/actions/resources/lang/he/modal.php delete mode 100644 vendor/filament/actions/resources/lang/he/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/he/restore.php delete mode 100644 vendor/filament/actions/resources/lang/he/view.php delete mode 100644 vendor/filament/actions/resources/lang/hi/attach.php delete mode 100644 vendor/filament/actions/resources/lang/hi/create.php delete mode 100644 vendor/filament/actions/resources/lang/hi/delete.php delete mode 100644 vendor/filament/actions/resources/lang/hi/detach.php delete mode 100644 vendor/filament/actions/resources/lang/hi/edit.php delete mode 100644 vendor/filament/actions/resources/lang/hi/modal.php delete mode 100644 vendor/filament/actions/resources/lang/hr/associate.php delete mode 100644 vendor/filament/actions/resources/lang/hr/attach.php delete mode 100644 vendor/filament/actions/resources/lang/hr/create.php delete mode 100644 vendor/filament/actions/resources/lang/hr/delete.php delete mode 100644 vendor/filament/actions/resources/lang/hr/detach.php delete mode 100644 vendor/filament/actions/resources/lang/hr/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/hr/edit.php delete mode 100644 vendor/filament/actions/resources/lang/hr/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/hr/group.php delete mode 100644 vendor/filament/actions/resources/lang/hr/modal.php delete mode 100644 vendor/filament/actions/resources/lang/hr/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/hr/restore.php delete mode 100644 vendor/filament/actions/resources/lang/hr/view.php delete mode 100644 vendor/filament/actions/resources/lang/hu/associate.php delete mode 100644 vendor/filament/actions/resources/lang/hu/attach.php delete mode 100644 vendor/filament/actions/resources/lang/hu/create.php delete mode 100644 vendor/filament/actions/resources/lang/hu/delete.php delete mode 100644 vendor/filament/actions/resources/lang/hu/detach.php delete mode 100644 vendor/filament/actions/resources/lang/hu/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/hu/edit.php delete mode 100644 vendor/filament/actions/resources/lang/hu/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/hu/group.php delete mode 100644 vendor/filament/actions/resources/lang/hu/import.php delete mode 100644 vendor/filament/actions/resources/lang/hu/modal.php delete mode 100644 vendor/filament/actions/resources/lang/hu/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/hu/restore.php delete mode 100644 vendor/filament/actions/resources/lang/hu/view.php delete mode 100644 vendor/filament/actions/resources/lang/hy/associate.php delete mode 100644 vendor/filament/actions/resources/lang/hy/attach.php delete mode 100644 vendor/filament/actions/resources/lang/hy/create.php delete mode 100644 vendor/filament/actions/resources/lang/hy/delete.php delete mode 100644 vendor/filament/actions/resources/lang/hy/detach.php delete mode 100644 vendor/filament/actions/resources/lang/hy/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/hy/edit.php delete mode 100644 vendor/filament/actions/resources/lang/hy/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/hy/group.php delete mode 100644 vendor/filament/actions/resources/lang/hy/modal.php delete mode 100644 vendor/filament/actions/resources/lang/hy/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/hy/restore.php delete mode 100644 vendor/filament/actions/resources/lang/hy/view.php delete mode 100644 vendor/filament/actions/resources/lang/id/associate.php delete mode 100644 vendor/filament/actions/resources/lang/id/attach.php delete mode 100644 vendor/filament/actions/resources/lang/id/create.php delete mode 100644 vendor/filament/actions/resources/lang/id/delete.php delete mode 100644 vendor/filament/actions/resources/lang/id/detach.php delete mode 100644 vendor/filament/actions/resources/lang/id/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/id/edit.php delete mode 100644 vendor/filament/actions/resources/lang/id/export.php delete mode 100644 vendor/filament/actions/resources/lang/id/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/id/group.php delete mode 100644 vendor/filament/actions/resources/lang/id/import.php delete mode 100644 vendor/filament/actions/resources/lang/id/modal.php delete mode 100644 vendor/filament/actions/resources/lang/id/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/id/restore.php delete mode 100644 vendor/filament/actions/resources/lang/id/view.php delete mode 100644 vendor/filament/actions/resources/lang/it/associate.php delete mode 100644 vendor/filament/actions/resources/lang/it/attach.php delete mode 100644 vendor/filament/actions/resources/lang/it/create.php delete mode 100644 vendor/filament/actions/resources/lang/it/delete.php delete mode 100644 vendor/filament/actions/resources/lang/it/detach.php delete mode 100644 vendor/filament/actions/resources/lang/it/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/it/edit.php delete mode 100644 vendor/filament/actions/resources/lang/it/export.php delete mode 100644 vendor/filament/actions/resources/lang/it/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/it/group.php delete mode 100644 vendor/filament/actions/resources/lang/it/import.php delete mode 100644 vendor/filament/actions/resources/lang/it/modal.php delete mode 100644 vendor/filament/actions/resources/lang/it/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/it/restore.php delete mode 100644 vendor/filament/actions/resources/lang/it/view.php delete mode 100644 vendor/filament/actions/resources/lang/ja/associate.php delete mode 100644 vendor/filament/actions/resources/lang/ja/attach.php delete mode 100644 vendor/filament/actions/resources/lang/ja/create.php delete mode 100644 vendor/filament/actions/resources/lang/ja/delete.php delete mode 100644 vendor/filament/actions/resources/lang/ja/detach.php delete mode 100644 vendor/filament/actions/resources/lang/ja/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/ja/edit.php delete mode 100644 vendor/filament/actions/resources/lang/ja/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/ja/group.php delete mode 100644 vendor/filament/actions/resources/lang/ja/modal.php delete mode 100644 vendor/filament/actions/resources/lang/ja/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/ja/restore.php delete mode 100644 vendor/filament/actions/resources/lang/ja/view.php delete mode 100644 vendor/filament/actions/resources/lang/kh/attach.php delete mode 100644 vendor/filament/actions/resources/lang/kh/create.php delete mode 100644 vendor/filament/actions/resources/lang/kh/delete.php delete mode 100644 vendor/filament/actions/resources/lang/kh/detach.php delete mode 100644 vendor/filament/actions/resources/lang/kh/edit.php delete mode 100644 vendor/filament/actions/resources/lang/km/associate.php delete mode 100644 vendor/filament/actions/resources/lang/km/attach.php delete mode 100644 vendor/filament/actions/resources/lang/km/create.php delete mode 100644 vendor/filament/actions/resources/lang/km/delete.php delete mode 100644 vendor/filament/actions/resources/lang/km/detach.php delete mode 100644 vendor/filament/actions/resources/lang/km/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/km/edit.php delete mode 100644 vendor/filament/actions/resources/lang/km/export.php delete mode 100644 vendor/filament/actions/resources/lang/km/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/km/group.php delete mode 100644 vendor/filament/actions/resources/lang/km/import.php delete mode 100644 vendor/filament/actions/resources/lang/km/modal.php delete mode 100644 vendor/filament/actions/resources/lang/km/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/km/restore.php delete mode 100644 vendor/filament/actions/resources/lang/km/view.php delete mode 100644 vendor/filament/actions/resources/lang/ko/associate.php delete mode 100644 vendor/filament/actions/resources/lang/ko/attach.php delete mode 100644 vendor/filament/actions/resources/lang/ko/create.php delete mode 100644 vendor/filament/actions/resources/lang/ko/delete.php delete mode 100644 vendor/filament/actions/resources/lang/ko/detach.php delete mode 100644 vendor/filament/actions/resources/lang/ko/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/ko/edit.php delete mode 100644 vendor/filament/actions/resources/lang/ko/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/ko/group.php delete mode 100644 vendor/filament/actions/resources/lang/ko/modal.php delete mode 100644 vendor/filament/actions/resources/lang/ko/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/ko/restore.php delete mode 100644 vendor/filament/actions/resources/lang/ko/view.php delete mode 100644 vendor/filament/actions/resources/lang/ku/associate.php delete mode 100644 vendor/filament/actions/resources/lang/ku/attach.php delete mode 100644 vendor/filament/actions/resources/lang/ku/create.php delete mode 100644 vendor/filament/actions/resources/lang/ku/delete.php delete mode 100644 vendor/filament/actions/resources/lang/ku/detach.php delete mode 100644 vendor/filament/actions/resources/lang/ku/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/ku/edit.php delete mode 100644 vendor/filament/actions/resources/lang/ku/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/ku/group.php delete mode 100644 vendor/filament/actions/resources/lang/ku/modal.php delete mode 100644 vendor/filament/actions/resources/lang/ku/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/ku/restore.php delete mode 100644 vendor/filament/actions/resources/lang/ku/view.php delete mode 100644 vendor/filament/actions/resources/lang/lt/associate.php delete mode 100644 vendor/filament/actions/resources/lang/lt/attach.php delete mode 100644 vendor/filament/actions/resources/lang/lt/create.php delete mode 100644 vendor/filament/actions/resources/lang/lt/delete.php delete mode 100644 vendor/filament/actions/resources/lang/lt/detach.php delete mode 100644 vendor/filament/actions/resources/lang/lt/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/lt/edit.php delete mode 100644 vendor/filament/actions/resources/lang/lt/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/lt/group.php delete mode 100644 vendor/filament/actions/resources/lang/lt/modal.php delete mode 100644 vendor/filament/actions/resources/lang/lt/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/lt/restore.php delete mode 100644 vendor/filament/actions/resources/lang/lt/view.php delete mode 100644 vendor/filament/actions/resources/lang/lv/associate.php delete mode 100644 vendor/filament/actions/resources/lang/lv/attach.php delete mode 100644 vendor/filament/actions/resources/lang/lv/create.php delete mode 100644 vendor/filament/actions/resources/lang/lv/delete.php delete mode 100644 vendor/filament/actions/resources/lang/lv/detach.php delete mode 100644 vendor/filament/actions/resources/lang/lv/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/lv/edit.php delete mode 100644 vendor/filament/actions/resources/lang/lv/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/lv/group.php delete mode 100644 vendor/filament/actions/resources/lang/lv/modal.php delete mode 100644 vendor/filament/actions/resources/lang/lv/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/lv/restore.php delete mode 100644 vendor/filament/actions/resources/lang/lv/view.php delete mode 100644 vendor/filament/actions/resources/lang/mn/associate.php delete mode 100644 vendor/filament/actions/resources/lang/mn/attach.php delete mode 100644 vendor/filament/actions/resources/lang/mn/create.php delete mode 100644 vendor/filament/actions/resources/lang/mn/delete.php delete mode 100644 vendor/filament/actions/resources/lang/mn/detach.php delete mode 100644 vendor/filament/actions/resources/lang/mn/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/mn/edit.php delete mode 100644 vendor/filament/actions/resources/lang/mn/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/mn/group.php delete mode 100644 vendor/filament/actions/resources/lang/mn/modal.php delete mode 100644 vendor/filament/actions/resources/lang/mn/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/mn/restore.php delete mode 100644 vendor/filament/actions/resources/lang/mn/view.php delete mode 100644 vendor/filament/actions/resources/lang/ms/associate.php delete mode 100644 vendor/filament/actions/resources/lang/ms/attach.php delete mode 100644 vendor/filament/actions/resources/lang/ms/create.php delete mode 100644 vendor/filament/actions/resources/lang/ms/delete.php delete mode 100644 vendor/filament/actions/resources/lang/ms/detach.php delete mode 100644 vendor/filament/actions/resources/lang/ms/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/ms/edit.php delete mode 100644 vendor/filament/actions/resources/lang/ms/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/ms/group.php delete mode 100644 vendor/filament/actions/resources/lang/ms/import.php delete mode 100644 vendor/filament/actions/resources/lang/ms/modal.php delete mode 100644 vendor/filament/actions/resources/lang/ms/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/ms/restore.php delete mode 100644 vendor/filament/actions/resources/lang/ms/view.php delete mode 100644 vendor/filament/actions/resources/lang/my/associate.php delete mode 100644 vendor/filament/actions/resources/lang/my/attach.php delete mode 100644 vendor/filament/actions/resources/lang/my/create.php delete mode 100644 vendor/filament/actions/resources/lang/my/delete.php delete mode 100644 vendor/filament/actions/resources/lang/my/detach.php delete mode 100644 vendor/filament/actions/resources/lang/my/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/my/edit.php delete mode 100644 vendor/filament/actions/resources/lang/my/modal.php delete mode 100644 vendor/filament/actions/resources/lang/nl/associate.php delete mode 100644 vendor/filament/actions/resources/lang/nl/attach.php delete mode 100644 vendor/filament/actions/resources/lang/nl/create.php delete mode 100644 vendor/filament/actions/resources/lang/nl/delete.php delete mode 100644 vendor/filament/actions/resources/lang/nl/detach.php delete mode 100644 vendor/filament/actions/resources/lang/nl/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/nl/edit.php delete mode 100644 vendor/filament/actions/resources/lang/nl/export.php delete mode 100644 vendor/filament/actions/resources/lang/nl/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/nl/group.php delete mode 100644 vendor/filament/actions/resources/lang/nl/import.php delete mode 100644 vendor/filament/actions/resources/lang/nl/modal.php delete mode 100644 vendor/filament/actions/resources/lang/nl/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/nl/restore.php delete mode 100644 vendor/filament/actions/resources/lang/nl/view.php delete mode 100644 vendor/filament/actions/resources/lang/no/associate.php delete mode 100644 vendor/filament/actions/resources/lang/no/attach.php delete mode 100644 vendor/filament/actions/resources/lang/no/create.php delete mode 100644 vendor/filament/actions/resources/lang/no/delete.php delete mode 100644 vendor/filament/actions/resources/lang/no/detach.php delete mode 100644 vendor/filament/actions/resources/lang/no/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/no/edit.php delete mode 100644 vendor/filament/actions/resources/lang/no/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/no/group.php delete mode 100644 vendor/filament/actions/resources/lang/no/modal.php delete mode 100644 vendor/filament/actions/resources/lang/no/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/no/restore.php delete mode 100644 vendor/filament/actions/resources/lang/no/view.php delete mode 100644 vendor/filament/actions/resources/lang/np/associate.php delete mode 100644 vendor/filament/actions/resources/lang/np/attach.php delete mode 100644 vendor/filament/actions/resources/lang/np/create.php delete mode 100644 vendor/filament/actions/resources/lang/np/delete.php delete mode 100644 vendor/filament/actions/resources/lang/np/detach.php delete mode 100644 vendor/filament/actions/resources/lang/np/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/np/edit.php delete mode 100644 vendor/filament/actions/resources/lang/np/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/np/group.php delete mode 100644 vendor/filament/actions/resources/lang/np/modal.php delete mode 100644 vendor/filament/actions/resources/lang/np/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/np/restore.php delete mode 100644 vendor/filament/actions/resources/lang/np/view.php delete mode 100644 vendor/filament/actions/resources/lang/pl/associate.php delete mode 100644 vendor/filament/actions/resources/lang/pl/attach.php delete mode 100644 vendor/filament/actions/resources/lang/pl/create.php delete mode 100644 vendor/filament/actions/resources/lang/pl/delete.php delete mode 100644 vendor/filament/actions/resources/lang/pl/detach.php delete mode 100644 vendor/filament/actions/resources/lang/pl/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/pl/edit.php delete mode 100644 vendor/filament/actions/resources/lang/pl/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/pl/group.php delete mode 100644 vendor/filament/actions/resources/lang/pl/modal.php delete mode 100644 vendor/filament/actions/resources/lang/pl/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/pl/restore.php delete mode 100644 vendor/filament/actions/resources/lang/pl/view.php delete mode 100644 vendor/filament/actions/resources/lang/pt_BR/associate.php delete mode 100644 vendor/filament/actions/resources/lang/pt_BR/attach.php delete mode 100644 vendor/filament/actions/resources/lang/pt_BR/create.php delete mode 100644 vendor/filament/actions/resources/lang/pt_BR/delete.php delete mode 100644 vendor/filament/actions/resources/lang/pt_BR/detach.php delete mode 100644 vendor/filament/actions/resources/lang/pt_BR/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/pt_BR/edit.php delete mode 100644 vendor/filament/actions/resources/lang/pt_BR/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/pt_BR/group.php delete mode 100644 vendor/filament/actions/resources/lang/pt_BR/modal.php delete mode 100644 vendor/filament/actions/resources/lang/pt_BR/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/pt_BR/restore.php delete mode 100644 vendor/filament/actions/resources/lang/pt_BR/view.php delete mode 100644 vendor/filament/actions/resources/lang/pt_PT/associate.php delete mode 100644 vendor/filament/actions/resources/lang/pt_PT/attach.php delete mode 100644 vendor/filament/actions/resources/lang/pt_PT/create.php delete mode 100644 vendor/filament/actions/resources/lang/pt_PT/delete.php delete mode 100644 vendor/filament/actions/resources/lang/pt_PT/detach.php delete mode 100644 vendor/filament/actions/resources/lang/pt_PT/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/pt_PT/edit.php delete mode 100644 vendor/filament/actions/resources/lang/pt_PT/export.php delete mode 100644 vendor/filament/actions/resources/lang/pt_PT/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/pt_PT/group.php delete mode 100644 vendor/filament/actions/resources/lang/pt_PT/import.php delete mode 100644 vendor/filament/actions/resources/lang/pt_PT/modal.php delete mode 100644 vendor/filament/actions/resources/lang/pt_PT/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/pt_PT/restore.php delete mode 100644 vendor/filament/actions/resources/lang/pt_PT/view.php delete mode 100644 vendor/filament/actions/resources/lang/ro/associate.php delete mode 100644 vendor/filament/actions/resources/lang/ro/attach.php delete mode 100644 vendor/filament/actions/resources/lang/ro/create.php delete mode 100644 vendor/filament/actions/resources/lang/ro/delete.php delete mode 100644 vendor/filament/actions/resources/lang/ro/detach.php delete mode 100644 vendor/filament/actions/resources/lang/ro/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/ro/edit.php delete mode 100644 vendor/filament/actions/resources/lang/ro/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/ro/group.php delete mode 100644 vendor/filament/actions/resources/lang/ro/modal.php delete mode 100644 vendor/filament/actions/resources/lang/ro/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/ro/restore.php delete mode 100644 vendor/filament/actions/resources/lang/ro/view.php delete mode 100644 vendor/filament/actions/resources/lang/ru/associate.php delete mode 100644 vendor/filament/actions/resources/lang/ru/attach.php delete mode 100644 vendor/filament/actions/resources/lang/ru/create.php delete mode 100644 vendor/filament/actions/resources/lang/ru/delete.php delete mode 100644 vendor/filament/actions/resources/lang/ru/detach.php delete mode 100644 vendor/filament/actions/resources/lang/ru/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/ru/edit.php delete mode 100644 vendor/filament/actions/resources/lang/ru/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/ru/group.php delete mode 100644 vendor/filament/actions/resources/lang/ru/modal.php delete mode 100644 vendor/filament/actions/resources/lang/ru/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/ru/restore.php delete mode 100644 vendor/filament/actions/resources/lang/ru/view.php delete mode 100644 vendor/filament/actions/resources/lang/sk/associate.php delete mode 100644 vendor/filament/actions/resources/lang/sk/attach.php delete mode 100644 vendor/filament/actions/resources/lang/sk/create.php delete mode 100644 vendor/filament/actions/resources/lang/sk/delete.php delete mode 100644 vendor/filament/actions/resources/lang/sk/detach.php delete mode 100644 vendor/filament/actions/resources/lang/sk/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/sk/edit.php delete mode 100644 vendor/filament/actions/resources/lang/sk/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/sk/group.php delete mode 100644 vendor/filament/actions/resources/lang/sk/modal.php delete mode 100644 vendor/filament/actions/resources/lang/sk/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/sk/restore.php delete mode 100644 vendor/filament/actions/resources/lang/sk/view.php delete mode 100644 vendor/filament/actions/resources/lang/sq/associate.php delete mode 100644 vendor/filament/actions/resources/lang/sq/attach.php delete mode 100644 vendor/filament/actions/resources/lang/sq/create.php delete mode 100644 vendor/filament/actions/resources/lang/sq/delete.php delete mode 100644 vendor/filament/actions/resources/lang/sq/detach.php delete mode 100644 vendor/filament/actions/resources/lang/sq/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/sq/edit.php delete mode 100644 vendor/filament/actions/resources/lang/sq/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/sq/group.php delete mode 100644 vendor/filament/actions/resources/lang/sq/modal.php delete mode 100644 vendor/filament/actions/resources/lang/sq/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/sq/restore.php delete mode 100644 vendor/filament/actions/resources/lang/sq/view.php delete mode 100644 vendor/filament/actions/resources/lang/sv/associate.php delete mode 100644 vendor/filament/actions/resources/lang/sv/attach.php delete mode 100644 vendor/filament/actions/resources/lang/sv/create.php delete mode 100644 vendor/filament/actions/resources/lang/sv/delete.php delete mode 100644 vendor/filament/actions/resources/lang/sv/detach.php delete mode 100644 vendor/filament/actions/resources/lang/sv/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/sv/edit.php delete mode 100644 vendor/filament/actions/resources/lang/sv/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/sv/group.php delete mode 100644 vendor/filament/actions/resources/lang/sv/modal.php delete mode 100644 vendor/filament/actions/resources/lang/sv/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/sv/restore.php delete mode 100644 vendor/filament/actions/resources/lang/sv/view.php delete mode 100644 vendor/filament/actions/resources/lang/sw/associate.php delete mode 100644 vendor/filament/actions/resources/lang/sw/attach.php delete mode 100644 vendor/filament/actions/resources/lang/sw/create.php delete mode 100644 vendor/filament/actions/resources/lang/sw/delete.php delete mode 100644 vendor/filament/actions/resources/lang/sw/detach.php delete mode 100644 vendor/filament/actions/resources/lang/sw/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/sw/edit.php delete mode 100644 vendor/filament/actions/resources/lang/sw/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/sw/group.php delete mode 100644 vendor/filament/actions/resources/lang/sw/modal.php delete mode 100644 vendor/filament/actions/resources/lang/sw/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/sw/restore.php delete mode 100644 vendor/filament/actions/resources/lang/sw/view.php delete mode 100644 vendor/filament/actions/resources/lang/tr/associate.php delete mode 100644 vendor/filament/actions/resources/lang/tr/attach.php delete mode 100644 vendor/filament/actions/resources/lang/tr/create.php delete mode 100644 vendor/filament/actions/resources/lang/tr/delete.php delete mode 100644 vendor/filament/actions/resources/lang/tr/detach.php delete mode 100644 vendor/filament/actions/resources/lang/tr/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/tr/edit.php delete mode 100644 vendor/filament/actions/resources/lang/tr/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/tr/group.php delete mode 100644 vendor/filament/actions/resources/lang/tr/modal.php delete mode 100644 vendor/filament/actions/resources/lang/tr/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/tr/restore.php delete mode 100644 vendor/filament/actions/resources/lang/tr/view.php delete mode 100644 vendor/filament/actions/resources/lang/uk/associate.php delete mode 100644 vendor/filament/actions/resources/lang/uk/attach.php delete mode 100644 vendor/filament/actions/resources/lang/uk/create.php delete mode 100644 vendor/filament/actions/resources/lang/uk/delete.php delete mode 100644 vendor/filament/actions/resources/lang/uk/detach.php delete mode 100644 vendor/filament/actions/resources/lang/uk/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/uk/edit.php delete mode 100644 vendor/filament/actions/resources/lang/uk/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/uk/group.php delete mode 100644 vendor/filament/actions/resources/lang/uk/modal.php delete mode 100644 vendor/filament/actions/resources/lang/uk/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/uk/restore.php delete mode 100644 vendor/filament/actions/resources/lang/uk/view.php delete mode 100644 vendor/filament/actions/resources/lang/uz/associate.php delete mode 100644 vendor/filament/actions/resources/lang/uz/attach.php delete mode 100644 vendor/filament/actions/resources/lang/uz/create.php delete mode 100644 vendor/filament/actions/resources/lang/uz/delete.php delete mode 100644 vendor/filament/actions/resources/lang/uz/detach.php delete mode 100644 vendor/filament/actions/resources/lang/uz/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/uz/edit.php delete mode 100644 vendor/filament/actions/resources/lang/uz/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/uz/group.php delete mode 100644 vendor/filament/actions/resources/lang/uz/modal.php delete mode 100644 vendor/filament/actions/resources/lang/uz/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/uz/restore.php delete mode 100644 vendor/filament/actions/resources/lang/uz/view.php delete mode 100644 vendor/filament/actions/resources/lang/vi/associate.php delete mode 100644 vendor/filament/actions/resources/lang/vi/attach.php delete mode 100644 vendor/filament/actions/resources/lang/vi/create.php delete mode 100644 vendor/filament/actions/resources/lang/vi/delete.php delete mode 100644 vendor/filament/actions/resources/lang/vi/detach.php delete mode 100644 vendor/filament/actions/resources/lang/vi/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/vi/edit.php delete mode 100644 vendor/filament/actions/resources/lang/vi/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/vi/group.php delete mode 100644 vendor/filament/actions/resources/lang/vi/import.php delete mode 100644 vendor/filament/actions/resources/lang/vi/modal.php delete mode 100644 vendor/filament/actions/resources/lang/vi/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/vi/restore.php delete mode 100644 vendor/filament/actions/resources/lang/vi/view.php delete mode 100644 vendor/filament/actions/resources/lang/zh_CN/associate.php delete mode 100644 vendor/filament/actions/resources/lang/zh_CN/attach.php delete mode 100644 vendor/filament/actions/resources/lang/zh_CN/create.php delete mode 100644 vendor/filament/actions/resources/lang/zh_CN/delete.php delete mode 100644 vendor/filament/actions/resources/lang/zh_CN/detach.php delete mode 100644 vendor/filament/actions/resources/lang/zh_CN/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/zh_CN/edit.php delete mode 100644 vendor/filament/actions/resources/lang/zh_CN/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/zh_CN/group.php delete mode 100644 vendor/filament/actions/resources/lang/zh_CN/import.php delete mode 100644 vendor/filament/actions/resources/lang/zh_CN/modal.php delete mode 100644 vendor/filament/actions/resources/lang/zh_CN/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/zh_CN/restore.php delete mode 100644 vendor/filament/actions/resources/lang/zh_CN/view.php delete mode 100644 vendor/filament/actions/resources/lang/zh_TW/associate.php delete mode 100644 vendor/filament/actions/resources/lang/zh_TW/attach.php delete mode 100644 vendor/filament/actions/resources/lang/zh_TW/create.php delete mode 100644 vendor/filament/actions/resources/lang/zh_TW/delete.php delete mode 100644 vendor/filament/actions/resources/lang/zh_TW/detach.php delete mode 100644 vendor/filament/actions/resources/lang/zh_TW/dissociate.php delete mode 100644 vendor/filament/actions/resources/lang/zh_TW/edit.php delete mode 100644 vendor/filament/actions/resources/lang/zh_TW/force-delete.php delete mode 100644 vendor/filament/actions/resources/lang/zh_TW/group.php delete mode 100644 vendor/filament/actions/resources/lang/zh_TW/modal.php delete mode 100644 vendor/filament/actions/resources/lang/zh_TW/replicate.php delete mode 100644 vendor/filament/actions/resources/lang/zh_TW/restore.php delete mode 100644 vendor/filament/actions/resources/lang/zh_TW/view.php delete mode 100644 vendor/filament/actions/resources/views/badge-action.blade.php delete mode 100644 vendor/filament/actions/resources/views/badge-group.blade.php delete mode 100644 vendor/filament/actions/resources/views/button-action.blade.php delete mode 100644 vendor/filament/actions/resources/views/button-group.blade.php delete mode 100644 vendor/filament/actions/resources/views/components/action.blade.php delete mode 100644 vendor/filament/actions/resources/views/components/actions.blade.php delete mode 100644 vendor/filament/actions/resources/views/components/group.blade.php delete mode 100644 vendor/filament/actions/resources/views/components/modals.blade.php delete mode 100644 vendor/filament/actions/resources/views/grouped-action.blade.php delete mode 100644 vendor/filament/actions/resources/views/grouped-group.blade.php delete mode 100644 vendor/filament/actions/resources/views/icon-button-action.blade.php delete mode 100644 vendor/filament/actions/resources/views/icon-button-group.blade.php delete mode 100644 vendor/filament/actions/resources/views/link-action.blade.php delete mode 100644 vendor/filament/actions/resources/views/link-group.blade.php delete mode 100644 vendor/filament/actions/resources/views/select-action.blade.php delete mode 100644 vendor/filament/actions/routes/web.php delete mode 100644 vendor/filament/actions/src/Action.php delete mode 100644 vendor/filament/actions/src/ActionGroup.php delete mode 100644 vendor/filament/actions/src/ActionsServiceProvider.php delete mode 100644 vendor/filament/actions/src/Commands/Aliases/MakeExporterCommand.php delete mode 100644 vendor/filament/actions/src/Commands/Aliases/MakeImporterCommand.php delete mode 100644 vendor/filament/actions/src/Commands/Concerns/CanGenerateExporterColumns.php delete mode 100644 vendor/filament/actions/src/Commands/Concerns/CanGenerateImporterColumns.php delete mode 100644 vendor/filament/actions/src/Commands/MakeExporterCommand.php delete mode 100644 vendor/filament/actions/src/Commands/MakeImporterCommand.php delete mode 100644 vendor/filament/actions/src/Concerns/BelongsToLivewire.php delete mode 100644 vendor/filament/actions/src/Concerns/CanBeDisabled.php delete mode 100644 vendor/filament/actions/src/Concerns/CanBeHidden.php delete mode 100644 vendor/filament/actions/src/Concerns/CanBeLabeledFrom.php delete mode 100644 vendor/filament/actions/src/Concerns/CanBeMounted.php delete mode 100644 vendor/filament/actions/src/Concerns/CanBeOutlined.php delete mode 100644 vendor/filament/actions/src/Concerns/CanCallParentAction.php delete mode 100644 vendor/filament/actions/src/Concerns/CanClose.php delete mode 100644 vendor/filament/actions/src/Concerns/CanCustomizeProcess.php delete mode 100644 vendor/filament/actions/src/Concerns/CanDispatchEvent.php delete mode 100644 vendor/filament/actions/src/Concerns/CanExportRecords.php delete mode 100644 vendor/filament/actions/src/Concerns/CanImportRecords.php delete mode 100644 vendor/filament/actions/src/Concerns/CanNotify.php delete mode 100644 vendor/filament/actions/src/Concerns/CanOpenModal.php delete mode 100644 vendor/filament/actions/src/Concerns/CanOpenUrl.php delete mode 100644 vendor/filament/actions/src/Concerns/CanRedirect.php delete mode 100644 vendor/filament/actions/src/Concerns/CanReplicateRecords.php delete mode 100644 vendor/filament/actions/src/Concerns/CanRequireConfirmation.php delete mode 100644 vendor/filament/actions/src/Concerns/CanSubmitForm.php delete mode 100644 vendor/filament/actions/src/Concerns/HasAction.php delete mode 100644 vendor/filament/actions/src/Concerns/HasArguments.php delete mode 100644 vendor/filament/actions/src/Concerns/HasDropdown.php delete mode 100644 vendor/filament/actions/src/Concerns/HasForm.php delete mode 100644 vendor/filament/actions/src/Concerns/HasGroupedIcon.php delete mode 100644 vendor/filament/actions/src/Concerns/HasId.php delete mode 100644 vendor/filament/actions/src/Concerns/HasInfolist.php delete mode 100644 vendor/filament/actions/src/Concerns/HasKeyBindings.php delete mode 100644 vendor/filament/actions/src/Concerns/HasLabel.php delete mode 100644 vendor/filament/actions/src/Concerns/HasLifecycleHooks.php delete mode 100644 vendor/filament/actions/src/Concerns/HasMountableArguments.php delete mode 100644 vendor/filament/actions/src/Concerns/HasName.php delete mode 100644 vendor/filament/actions/src/Concerns/HasParentActions.php delete mode 100644 vendor/filament/actions/src/Concerns/HasSelect.php delete mode 100644 vendor/filament/actions/src/Concerns/HasSize.php delete mode 100644 vendor/filament/actions/src/Concerns/HasTooltip.php delete mode 100644 vendor/filament/actions/src/Concerns/HasWizard.php delete mode 100644 vendor/filament/actions/src/Concerns/InteractsWithActions.php delete mode 100644 vendor/filament/actions/src/Concerns/InteractsWithRecord.php delete mode 100644 vendor/filament/actions/src/Contracts/Groupable.php delete mode 100644 vendor/filament/actions/src/Contracts/HasActions.php delete mode 100644 vendor/filament/actions/src/Contracts/HasLivewire.php delete mode 100644 vendor/filament/actions/src/Contracts/HasRecord.php delete mode 100644 vendor/filament/actions/src/Contracts/ReplicatesRecords.php delete mode 100644 vendor/filament/actions/src/CreateAction.php delete mode 100644 vendor/filament/actions/src/DeleteAction.php delete mode 100644 vendor/filament/actions/src/EditAction.php delete mode 100644 vendor/filament/actions/src/Exceptions/Hold.php delete mode 100644 vendor/filament/actions/src/ExportAction.php delete mode 100644 vendor/filament/actions/src/Exports/Concerns/CanFormatState.php delete mode 100644 vendor/filament/actions/src/Exports/Downloaders/Contracts/Downloader.php delete mode 100644 vendor/filament/actions/src/Exports/Downloaders/CsvDownloader.php delete mode 100644 vendor/filament/actions/src/Exports/Downloaders/XlsxDownloader.php delete mode 100644 vendor/filament/actions/src/Exports/Enums/ExportFormat.php delete mode 100644 vendor/filament/actions/src/Exports/ExportColumn.php delete mode 100644 vendor/filament/actions/src/Exports/Exporter.php delete mode 100644 vendor/filament/actions/src/Exports/Http/Controllers/DownloadExport.php delete mode 100644 vendor/filament/actions/src/Exports/Jobs/CreateXlsxFile.php delete mode 100644 vendor/filament/actions/src/Exports/Jobs/ExportCompletion.php delete mode 100644 vendor/filament/actions/src/Exports/Jobs/ExportCsv.php delete mode 100644 vendor/filament/actions/src/Exports/Jobs/PrepareCsvExport.php delete mode 100644 vendor/filament/actions/src/Exports/Models/Export.php delete mode 100644 vendor/filament/actions/src/ForceDeleteAction.php delete mode 100644 vendor/filament/actions/src/ImportAction.php delete mode 100644 vendor/filament/actions/src/Imports/Http/Controllers/DownloadImportFailureCsv.php delete mode 100644 vendor/filament/actions/src/Imports/ImportColumn.php delete mode 100644 vendor/filament/actions/src/Imports/Importer.php delete mode 100644 vendor/filament/actions/src/Imports/Jobs/ImportCsv.php delete mode 100644 vendor/filament/actions/src/Imports/Models/FailedImportRow.php delete mode 100644 vendor/filament/actions/src/Imports/Models/Import.php delete mode 100644 vendor/filament/actions/src/Modal/Actions/Action.php delete mode 100644 vendor/filament/actions/src/MountableAction.php delete mode 100644 vendor/filament/actions/src/ReplicateAction.php delete mode 100644 vendor/filament/actions/src/RestoreAction.php delete mode 100644 vendor/filament/actions/src/SelectAction.php delete mode 100644 vendor/filament/actions/src/StaticAction.php delete mode 100644 vendor/filament/actions/src/Testing/TestsActions.php delete mode 100644 vendor/filament/actions/src/ViewAction.php delete mode 100644 vendor/filament/actions/stubs/Exporter.stub delete mode 100644 vendor/filament/actions/stubs/Importer.stub delete mode 100644 vendor/filament/filament/composer.json delete mode 100644 vendor/filament/filament/dist/echo.js delete mode 100644 vendor/filament/filament/dist/index.js delete mode 100644 vendor/filament/filament/dist/theme.css delete mode 100644 vendor/filament/filament/docs/01-installation.md delete mode 100644 vendor/filament/filament/docs/02-getting-started.md delete mode 100644 vendor/filament/filament/docs/03-resources/01-getting-started.md delete mode 100644 vendor/filament/filament/docs/03-resources/02-listing-records.md delete mode 100644 vendor/filament/filament/docs/03-resources/03-creating-records.md delete mode 100644 vendor/filament/filament/docs/03-resources/04-editing-records.md delete mode 100644 vendor/filament/filament/docs/03-resources/05-viewing-records.md delete mode 100644 vendor/filament/filament/docs/03-resources/06-deleting-records.md delete mode 100644 vendor/filament/filament/docs/03-resources/07-relation-managers.md delete mode 100644 vendor/filament/filament/docs/03-resources/08-global-search.md delete mode 100644 vendor/filament/filament/docs/03-resources/09-widgets.md delete mode 100644 vendor/filament/filament/docs/03-resources/10-custom-pages.md delete mode 100644 vendor/filament/filament/docs/03-resources/11-security.md delete mode 100644 vendor/filament/filament/docs/04-pages.md delete mode 100644 vendor/filament/filament/docs/05-dashboard.md delete mode 100644 vendor/filament/filament/docs/06-navigation.md delete mode 100644 vendor/filament/filament/docs/07-notifications.md delete mode 100644 vendor/filament/filament/docs/08-users.md delete mode 100644 vendor/filament/filament/docs/09-configuration.md delete mode 100644 vendor/filament/filament/docs/10-clusters.md delete mode 100644 vendor/filament/filament/docs/11-tenancy.md delete mode 100644 vendor/filament/filament/docs/12-themes.md delete mode 100644 vendor/filament/filament/docs/13-plugins.md delete mode 100644 vendor/filament/filament/docs/14-testing.md delete mode 100644 vendor/filament/filament/docs/15-upgrade-guide.md delete mode 100644 vendor/filament/filament/resources/css/index.css delete mode 100644 vendor/filament/filament/resources/css/theme.css delete mode 100644 vendor/filament/filament/resources/js/echo.js delete mode 100644 vendor/filament/filament/resources/js/index.js delete mode 100644 vendor/filament/filament/resources/lang/ar/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/ar/layout.php delete mode 100644 vendor/filament/filament/resources/lang/ar/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ar/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/ar/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/ar/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/ar/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/ar/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/ar/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/ar/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ar/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/ar/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/ar/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/ar/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/ar/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/ar/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/az/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/az/layout.php delete mode 100644 vendor/filament/filament/resources/lang/az/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/az/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/az/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/az/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/az/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/az/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/az/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/az/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/az/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/az/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/az/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/az/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/az/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/az/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/bn/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/bn/layout.php delete mode 100644 vendor/filament/filament/resources/lang/bn/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/bn/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/bn/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/bn/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/bn/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/bn/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/bn/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/bn/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/bs/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/bs/layout.php delete mode 100644 vendor/filament/filament/resources/lang/bs/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/bs/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/bs/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/bs/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/bs/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/bs/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/bs/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/bs/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/ca/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/ca/layout.php delete mode 100644 vendor/filament/filament/resources/lang/ca/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ca/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/ca/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/ca/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/ca/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/ca/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/ca/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/ca/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ca/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/ca/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/ca/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/ca/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/ca/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/ca/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/ckb/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/ckb/layout.php delete mode 100644 vendor/filament/filament/resources/lang/ckb/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ckb/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/ckb/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/ckb/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/ckb/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/ckb/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/ckb/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/ckb/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ckb/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/ckb/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/ckb/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/ckb/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/ckb/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/ckb/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/cs/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/cs/layout.php delete mode 100644 vendor/filament/filament/resources/lang/cs/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/cs/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/cs/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/cs/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/cs/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/cs/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/cs/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/cs/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/cs/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/cs/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/cs/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/cs/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/cs/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/cs/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/da/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/da/layout.php delete mode 100644 vendor/filament/filament/resources/lang/da/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/da/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/da/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/da/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/da/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/da/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/da/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/da/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/da/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/da/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/da/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/da/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/da/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/da/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/de/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/de/layout.php delete mode 100644 vendor/filament/filament/resources/lang/de/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/de/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/de/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/de/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/de/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/de/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/de/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/de/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/de/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/de/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/de/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/de/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/de/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/de/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/el/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/el/layout.php delete mode 100644 vendor/filament/filament/resources/lang/el/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/el/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/el/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/el/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/el/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/el/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/el/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/el/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/en/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/en/layout.php delete mode 100644 vendor/filament/filament/resources/lang/en/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/en/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/en/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/en/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/en/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/en/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/en/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/en/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/en/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/en/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/en/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/en/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/en/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/en/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/es/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/es/layout.php delete mode 100644 vendor/filament/filament/resources/lang/es/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/es/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/es/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/es/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/es/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/es/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/es/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/es/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/es/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/es/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/es/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/es/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/es/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/es/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/fa/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/fa/layout.php delete mode 100644 vendor/filament/filament/resources/lang/fa/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/fa/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/fa/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/fa/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/fa/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/fa/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/fa/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/fa/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/fa/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/fa/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/fa/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/fa/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/fa/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/fa/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/fi/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/fi/layout.php delete mode 100644 vendor/filament/filament/resources/lang/fi/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/fi/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/fi/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/fi/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/fi/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/fi/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/fi/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/fi/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/fi/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/fi/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/fi/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/fi/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/fi/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/fi/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/fr/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/fr/layout.php delete mode 100644 vendor/filament/filament/resources/lang/fr/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/fr/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/fr/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/fr/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/fr/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/fr/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/fr/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/fr/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/fr/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/fr/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/fr/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/fr/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/fr/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/fr/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/he/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/he/layout.php delete mode 100644 vendor/filament/filament/resources/lang/he/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/he/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/he/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/he/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/he/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/he/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/he/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/he/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/he/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/he/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/he/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/he/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/he/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/he/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/hi/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/hi/layout.php delete mode 100644 vendor/filament/filament/resources/lang/hi/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/hi/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/hi/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/hi/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/hi/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/hi/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/hi/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/hi/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/hr/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/hr/layout.php delete mode 100644 vendor/filament/filament/resources/lang/hr/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/hr/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/hr/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/hr/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/hr/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/hr/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/hr/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/hr/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/hr/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/hr/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/hr/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/hr/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/hr/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/hr/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/hu/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/hu/layout.php delete mode 100644 vendor/filament/filament/resources/lang/hu/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/hu/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/hu/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/hu/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/hu/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/hu/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/hu/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/hu/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/hu/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/hu/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/hu/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/hu/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/hu/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/hu/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/hy/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/hy/layout.php delete mode 100644 vendor/filament/filament/resources/lang/hy/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/hy/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/hy/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/hy/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/hy/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/hy/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/hy/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/hy/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/id/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/id/layout.php delete mode 100644 vendor/filament/filament/resources/lang/id/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/id/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/id/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/id/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/id/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/id/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/id/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/id/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/id/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/id/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/id/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/id/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/id/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/id/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/it/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/it/layout.php delete mode 100644 vendor/filament/filament/resources/lang/it/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/it/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/it/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/it/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/it/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/it/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/it/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/it/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/it/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/it/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/it/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/it/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/it/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/it/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/ja/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/ja/layout.php delete mode 100644 vendor/filament/filament/resources/lang/ja/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ja/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/ja/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/ja/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/ja/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/ja/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/ja/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/ja/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ja/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/ja/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/ja/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/ja/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/ja/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/ja/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/km/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/km/layout.php delete mode 100644 vendor/filament/filament/resources/lang/km/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/km/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/km/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/km/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/km/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/km/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/km/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/km/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/km/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/km/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/km/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/km/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/km/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/km/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/ko/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/ko/layout.php delete mode 100644 vendor/filament/filament/resources/lang/ko/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ko/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/ko/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/ko/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/ko/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/ko/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/ko/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/ko/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ko/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/ko/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/ko/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/ko/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/ko/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/ko/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/ku/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/ku/layout.php delete mode 100644 vendor/filament/filament/resources/lang/ku/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ku/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/ku/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/ku/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/ku/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/ku/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/ku/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/ku/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ku/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/ku/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/ku/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/ku/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/ku/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/ku/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/lt/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/lt/layout.php delete mode 100644 vendor/filament/filament/resources/lang/lt/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/lt/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/lt/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/lt/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/lt/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/lt/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/lt/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/lt/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/lt/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/lt/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/lt/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/lt/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/lt/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/lt/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/lv/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/lv/layout.php delete mode 100644 vendor/filament/filament/resources/lang/lv/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/lv/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/lv/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/lv/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/lv/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/lv/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/lv/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/lv/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/lv/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/lv/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/lv/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/lv/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/lv/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/lv/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/ms/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/ms/layout.php delete mode 100644 vendor/filament/filament/resources/lang/ms/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ms/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/ms/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/ms/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/ms/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/ms/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/ms/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/ms/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ms/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/ms/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/ms/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/ms/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/ms/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/ms/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/my/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/my/layout.php delete mode 100644 vendor/filament/filament/resources/lang/my/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/my/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/my/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/my/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/my/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/my/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/my/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/my/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/nl/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/nl/layout.php delete mode 100644 vendor/filament/filament/resources/lang/nl/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/nl/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/nl/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/nl/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/nl/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/nl/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/nl/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/nl/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/nl/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/nl/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/nl/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/nl/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/nl/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/nl/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/no/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/no/layout.php delete mode 100644 vendor/filament/filament/resources/lang/no/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/no/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/no/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/no/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/no/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/no/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/no/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/no/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/no/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/no/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/no/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/no/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/no/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/no/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/np/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/np/layout.php delete mode 100644 vendor/filament/filament/resources/lang/np/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/np/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/np/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/np/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/np/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/np/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/np/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/np/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/np/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/np/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/np/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/np/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/np/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/np/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/pl/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/pl/layout.php delete mode 100644 vendor/filament/filament/resources/lang/pl/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/pl/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/pl/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/pl/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/pl/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/pl/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/pl/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/pl/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/pl/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/pl/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/pl/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/pl/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/pl/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/pl/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/pt_BR/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/pt_BR/layout.php delete mode 100644 vendor/filament/filament/resources/lang/pt_BR/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/pt_BR/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/pt_BR/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/pt_BR/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/pt_BR/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/pt_BR/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/pt_BR/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/pt_BR/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/pt_BR/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/pt_BR/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/pt_BR/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/pt_BR/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/pt_BR/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/pt_BR/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/pt_PT/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/pt_PT/layout.php delete mode 100644 vendor/filament/filament/resources/lang/pt_PT/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/pt_PT/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/pt_PT/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/pt_PT/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/pt_PT/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/pt_PT/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/pt_PT/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/pt_PT/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/pt_PT/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/pt_PT/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/pt_PT/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/pt_PT/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/pt_PT/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/pt_PT/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/ro/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/ro/layout.php delete mode 100644 vendor/filament/filament/resources/lang/ro/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ro/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/ro/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/ro/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/ro/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/ro/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/ro/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/ro/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ro/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/ro/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/ro/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/ro/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/ro/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/ro/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/ru/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/ru/layout.php delete mode 100644 vendor/filament/filament/resources/lang/ru/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ru/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/ru/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/ru/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/ru/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/ru/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/ru/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/ru/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/ru/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/ru/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/ru/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/ru/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/ru/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/ru/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/sk/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/sk/layout.php delete mode 100644 vendor/filament/filament/resources/lang/sk/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/sk/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/sk/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/sk/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/sk/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/sk/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/sk/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/sk/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/sk/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/sk/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/sk/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/sk/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/sk/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/sk/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/sq/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/sq/layout.php delete mode 100644 vendor/filament/filament/resources/lang/sq/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/sq/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/sq/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/sq/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/sq/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/sq/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/sq/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/sq/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/sq/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/sq/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/sq/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/sq/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/sq/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/sq/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/sv/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/sv/layout.php delete mode 100644 vendor/filament/filament/resources/lang/sv/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/sv/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/sv/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/sv/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/sv/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/sv/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/sv/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/sv/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/sv/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/sv/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/sv/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/sv/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/sv/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/sv/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/sw/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/sw/layout.php delete mode 100644 vendor/filament/filament/resources/lang/sw/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/sw/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/sw/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/sw/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/sw/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/sw/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/sw/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/sw/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/tr/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/tr/layout.php delete mode 100644 vendor/filament/filament/resources/lang/tr/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/tr/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/tr/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/tr/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/tr/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/tr/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/tr/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/tr/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/tr/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/tr/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/tr/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/tr/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/tr/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/tr/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/uk/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/uk/layout.php delete mode 100644 vendor/filament/filament/resources/lang/uk/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/uk/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/uk/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/uk/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/uk/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/uk/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/uk/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/uk/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/uk/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/uk/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/uk/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/uk/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/uk/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/uk/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/uz/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/uz/layout.php delete mode 100644 vendor/filament/filament/resources/lang/uz/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/uz/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/uz/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/uz/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/uz/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/uz/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/uz/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/uz/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/uz/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/uz/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/uz/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/uz/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/uz/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/uz/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/vi/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/vi/layout.php delete mode 100644 vendor/filament/filament/resources/lang/vi/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/vi/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/vi/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/vi/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/vi/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/vi/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/vi/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/vi/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/vi/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/vi/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/vi/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/vi/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/vi/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/vi/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/zh_CN/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/zh_CN/layout.php delete mode 100644 vendor/filament/filament/resources/lang/zh_CN/pages/auth/edit-profile.php delete mode 100644 vendor/filament/filament/resources/lang/zh_CN/pages/auth/email-verification/email-verification-prompt.php delete mode 100644 vendor/filament/filament/resources/lang/zh_CN/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/zh_CN/pages/auth/password-reset/request-password-reset.php delete mode 100644 vendor/filament/filament/resources/lang/zh_CN/pages/auth/password-reset/reset-password.php delete mode 100644 vendor/filament/filament/resources/lang/zh_CN/pages/auth/register.php delete mode 100644 vendor/filament/filament/resources/lang/zh_CN/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/zh_CN/pages/tenancy/edit-tenant-profile.php delete mode 100644 vendor/filament/filament/resources/lang/zh_CN/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/zh_CN/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/zh_CN/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/zh_CN/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/zh_CN/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/zh_CN/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/lang/zh_TW/global-search.php delete mode 100644 vendor/filament/filament/resources/lang/zh_TW/layout.php delete mode 100644 vendor/filament/filament/resources/lang/zh_TW/pages/auth/login.php delete mode 100644 vendor/filament/filament/resources/lang/zh_TW/pages/dashboard.php delete mode 100644 vendor/filament/filament/resources/lang/zh_TW/resources/pages/create-record.php delete mode 100644 vendor/filament/filament/resources/lang/zh_TW/resources/pages/edit-record.php delete mode 100644 vendor/filament/filament/resources/lang/zh_TW/resources/pages/list-records.php delete mode 100644 vendor/filament/filament/resources/lang/zh_TW/resources/pages/view-record.php delete mode 100644 vendor/filament/filament/resources/lang/zh_TW/widgets/account-widget.php delete mode 100644 vendor/filament/filament/resources/lang/zh_TW/widgets/filament-info-widget.php delete mode 100644 vendor/filament/filament/resources/views/components/avatar/tenant.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/avatar/user.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/form/actions.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/form/index.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/global-search/actions.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/global-search/field.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/global-search/index.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/global-search/no-results-message.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/global-search/result-group.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/global-search/result.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/global-search/results-container.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/header/index.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/header/simple.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/layout/base.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/layout/index.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/layout/simple.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/logo.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/page/index.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/page/simple.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/page/sub-navigation/select.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/page/sub-navigation/sidebar.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/page/sub-navigation/tabs.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/page/unsaved-data-changes-alert.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/resources/relation-managers.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/resources/tabs.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/sidebar/group.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/sidebar/index.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/sidebar/item.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/tenant-menu.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/theme-switcher/button.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/theme-switcher/index.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/topbar/database-notifications-trigger.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/topbar/index.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/topbar/item.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/unsaved-action-changes-alert.blade.php delete mode 100644 vendor/filament/filament/resources/views/components/user-menu.blade.php delete mode 100644 vendor/filament/filament/resources/views/pages/auth/edit-profile.blade.php delete mode 100644 vendor/filament/filament/resources/views/pages/auth/email-verification/email-verification-prompt.blade.php delete mode 100644 vendor/filament/filament/resources/views/pages/auth/login.blade.php delete mode 100644 vendor/filament/filament/resources/views/pages/auth/password-reset/request-password-reset.blade.php delete mode 100644 vendor/filament/filament/resources/views/pages/auth/password-reset/reset-password.blade.php delete mode 100644 vendor/filament/filament/resources/views/pages/auth/register.blade.php delete mode 100644 vendor/filament/filament/resources/views/pages/dashboard.blade.php delete mode 100644 vendor/filament/filament/resources/views/pages/tenancy/edit-tenant-profile.blade.php delete mode 100644 vendor/filament/filament/resources/views/pages/tenancy/register-tenant.blade.php delete mode 100644 vendor/filament/filament/resources/views/resources/pages/create-record.blade.php delete mode 100644 vendor/filament/filament/resources/views/resources/pages/edit-record.blade.php delete mode 100644 vendor/filament/filament/resources/views/resources/pages/list-records.blade.php delete mode 100644 vendor/filament/filament/resources/views/resources/pages/manage-related-records.blade.php delete mode 100644 vendor/filament/filament/resources/views/resources/pages/view-record.blade.php delete mode 100644 vendor/filament/filament/resources/views/resources/relation-manager.blade.php delete mode 100644 vendor/filament/filament/resources/views/widgets/account-widget.blade.php delete mode 100644 vendor/filament/filament/resources/views/widgets/filament-info-widget.blade.php delete mode 100644 vendor/filament/filament/routes/web.php delete mode 100644 vendor/filament/filament/src/AvatarProviders/Contracts/AvatarProvider.php delete mode 100644 vendor/filament/filament/src/AvatarProviders/UiAvatarsProvider.php delete mode 100644 vendor/filament/filament/src/Billing/Providers/Contracts/Provider.php delete mode 100644 vendor/filament/filament/src/Clusters/Cluster.php delete mode 100644 vendor/filament/filament/src/Commands/Aliases/MakeClusterCommand.php delete mode 100644 vendor/filament/filament/src/Commands/Aliases/MakePageCommand.php delete mode 100644 vendor/filament/filament/src/Commands/Aliases/MakePanelCommand.php delete mode 100644 vendor/filament/filament/src/Commands/Aliases/MakeRelationManagerCommand.php delete mode 100644 vendor/filament/filament/src/Commands/Aliases/MakeResourceCommand.php delete mode 100644 vendor/filament/filament/src/Commands/Aliases/MakeThemeCommand.php delete mode 100644 vendor/filament/filament/src/Commands/Aliases/MakeUserCommand.php delete mode 100644 vendor/filament/filament/src/Commands/MakeClusterCommand.php delete mode 100644 vendor/filament/filament/src/Commands/MakePageCommand.php delete mode 100644 vendor/filament/filament/src/Commands/MakePanelCommand.php delete mode 100644 vendor/filament/filament/src/Commands/MakeRelationManagerCommand.php delete mode 100644 vendor/filament/filament/src/Commands/MakeResourceCommand.php delete mode 100644 vendor/filament/filament/src/Commands/MakeThemeCommand.php delete mode 100644 vendor/filament/filament/src/Commands/MakeUserCommand.php delete mode 100644 vendor/filament/filament/src/Contracts/Plugin.php delete mode 100644 vendor/filament/filament/src/Enums/ThemeMode.php delete mode 100644 vendor/filament/filament/src/Events/Auth/Registered.php delete mode 100644 vendor/filament/filament/src/Events/ServingFilament.php delete mode 100644 vendor/filament/filament/src/Events/TenantSet.php delete mode 100644 vendor/filament/filament/src/Exceptions/NoDefaultPanelSetException.php delete mode 100644 vendor/filament/filament/src/Facades/Filament.php delete mode 100644 vendor/filament/filament/src/FilamentManager.php delete mode 100644 vendor/filament/filament/src/FilamentServiceProvider.php delete mode 100644 vendor/filament/filament/src/FontProviders/BunnyFontProvider.php delete mode 100644 vendor/filament/filament/src/FontProviders/Contracts/FontProvider.php delete mode 100644 vendor/filament/filament/src/FontProviders/GoogleFontProvider.php delete mode 100644 vendor/filament/filament/src/FontProviders/LocalFontProvider.php delete mode 100644 vendor/filament/filament/src/GlobalSearch/Actions/Action.php delete mode 100644 vendor/filament/filament/src/GlobalSearch/Contracts/GlobalSearchProvider.php delete mode 100644 vendor/filament/filament/src/GlobalSearch/DefaultGlobalSearchProvider.php delete mode 100644 vendor/filament/filament/src/GlobalSearch/GlobalSearchResult.php delete mode 100644 vendor/filament/filament/src/GlobalSearch/GlobalSearchResults.php delete mode 100644 vendor/filament/filament/src/Http/Controllers/Auth/EmailVerificationController.php delete mode 100644 vendor/filament/filament/src/Http/Controllers/Auth/LogoutController.php delete mode 100644 vendor/filament/filament/src/Http/Controllers/RedirectToHomeController.php delete mode 100644 vendor/filament/filament/src/Http/Controllers/RedirectToTenantController.php delete mode 100644 vendor/filament/filament/src/Http/Livewire/Auth/Login.php delete mode 100644 vendor/filament/filament/src/Http/Middleware/Authenticate.php delete mode 100644 vendor/filament/filament/src/Http/Middleware/DisableBladeIconComponents.php delete mode 100644 vendor/filament/filament/src/Http/Middleware/DispatchServingFilamentEvent.php delete mode 100644 vendor/filament/filament/src/Http/Middleware/IdentifyTenant.php delete mode 100644 vendor/filament/filament/src/Http/Middleware/SetUpPanel.php delete mode 100644 vendor/filament/filament/src/Http/Responses/Auth/Contracts/EmailVerificationResponse.php delete mode 100644 vendor/filament/filament/src/Http/Responses/Auth/Contracts/LoginResponse.php delete mode 100644 vendor/filament/filament/src/Http/Responses/Auth/Contracts/LogoutResponse.php delete mode 100644 vendor/filament/filament/src/Http/Responses/Auth/Contracts/PasswordResetResponse.php delete mode 100644 vendor/filament/filament/src/Http/Responses/Auth/Contracts/RegistrationResponse.php delete mode 100644 vendor/filament/filament/src/Http/Responses/Auth/EmailVerificationResponse.php delete mode 100644 vendor/filament/filament/src/Http/Responses/Auth/LoginResponse.php delete mode 100644 vendor/filament/filament/src/Http/Responses/Auth/LogoutResponse.php delete mode 100644 vendor/filament/filament/src/Http/Responses/Auth/PasswordResetResponse.php delete mode 100644 vendor/filament/filament/src/Http/Responses/Auth/RegistrationResponse.php delete mode 100644 vendor/filament/filament/src/Livewire/DatabaseNotifications.php delete mode 100644 vendor/filament/filament/src/Livewire/GlobalSearch.php delete mode 100644 vendor/filament/filament/src/Livewire/Notifications.php delete mode 100644 vendor/filament/filament/src/Models/Contracts/FilamentUser.php delete mode 100644 vendor/filament/filament/src/Models/Contracts/HasAvatar.php delete mode 100644 vendor/filament/filament/src/Models/Contracts/HasCurrentTenantLabel.php delete mode 100644 vendor/filament/filament/src/Models/Contracts/HasDefaultTenant.php delete mode 100644 vendor/filament/filament/src/Models/Contracts/HasName.php delete mode 100644 vendor/filament/filament/src/Models/Contracts/HasTenants.php delete mode 100644 vendor/filament/filament/src/Navigation/MenuItem.php delete mode 100644 vendor/filament/filament/src/Navigation/NavigationBuilder.php delete mode 100644 vendor/filament/filament/src/Navigation/NavigationGroup.php delete mode 100644 vendor/filament/filament/src/Navigation/NavigationItem.php delete mode 100644 vendor/filament/filament/src/Navigation/UserMenuItem.php delete mode 100644 vendor/filament/filament/src/Notifications/Auth/ResetPassword.php delete mode 100644 vendor/filament/filament/src/Notifications/Auth/VerifyEmail.php delete mode 100644 vendor/filament/filament/src/Pages/Actions/Action.php delete mode 100644 vendor/filament/filament/src/Pages/Actions/ActionGroup.php delete mode 100644 vendor/filament/filament/src/Pages/Actions/ButtonAction.php delete mode 100644 vendor/filament/filament/src/Pages/Actions/CreateAction.php delete mode 100644 vendor/filament/filament/src/Pages/Actions/DeleteAction.php delete mode 100644 vendor/filament/filament/src/Pages/Actions/EditAction.php delete mode 100644 vendor/filament/filament/src/Pages/Actions/ForceDeleteAction.php delete mode 100644 vendor/filament/filament/src/Pages/Actions/Modal/Actions/Action.php delete mode 100644 vendor/filament/filament/src/Pages/Actions/Modal/Actions/ButtonAction.php delete mode 100644 vendor/filament/filament/src/Pages/Actions/ReplicateAction.php delete mode 100644 vendor/filament/filament/src/Pages/Actions/RestoreAction.php delete mode 100644 vendor/filament/filament/src/Pages/Actions/SelectAction.php delete mode 100644 vendor/filament/filament/src/Pages/Actions/ViewAction.php delete mode 100644 vendor/filament/filament/src/Pages/Auth/EditProfile.php delete mode 100644 vendor/filament/filament/src/Pages/Auth/EmailVerification/EmailVerificationPrompt.php delete mode 100644 vendor/filament/filament/src/Pages/Auth/Login.php delete mode 100644 vendor/filament/filament/src/Pages/Auth/PasswordReset/RequestPasswordReset.php delete mode 100644 vendor/filament/filament/src/Pages/Auth/PasswordReset/ResetPassword.php delete mode 100644 vendor/filament/filament/src/Pages/Auth/Register.php delete mode 100644 vendor/filament/filament/src/Pages/BasePage.php delete mode 100644 vendor/filament/filament/src/Pages/Concerns/CanAuthorizeAccess.php delete mode 100644 vendor/filament/filament/src/Pages/Concerns/ExposesTableToWidgets.php delete mode 100644 vendor/filament/filament/src/Pages/Concerns/HasRoutes.php delete mode 100644 vendor/filament/filament/src/Pages/Concerns/HasSubNavigation.php delete mode 100644 vendor/filament/filament/src/Pages/Concerns/HasUnsavedDataChangesAlert.php delete mode 100644 vendor/filament/filament/src/Pages/Concerns/InteractsWithFormActions.php delete mode 100644 vendor/filament/filament/src/Pages/Concerns/InteractsWithHeaderActions.php delete mode 100644 vendor/filament/filament/src/Pages/Dashboard.php delete mode 100644 vendor/filament/filament/src/Pages/Dashboard/Actions/FilterAction.php delete mode 100644 vendor/filament/filament/src/Pages/Dashboard/Concerns/HasFilters.php delete mode 100644 vendor/filament/filament/src/Pages/Dashboard/Concerns/HasFiltersAction.php delete mode 100644 vendor/filament/filament/src/Pages/Dashboard/Concerns/HasFiltersForm.php delete mode 100644 vendor/filament/filament/src/Pages/Page.php delete mode 100644 vendor/filament/filament/src/Pages/SimplePage.php delete mode 100644 vendor/filament/filament/src/Pages/SubNavigationPosition.php delete mode 100644 vendor/filament/filament/src/Pages/Tenancy/EditTenantProfile.php delete mode 100644 vendor/filament/filament/src/Pages/Tenancy/RegisterTenant.php delete mode 100644 vendor/filament/filament/src/Panel.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasAssets.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasAuth.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasAvatars.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasBrandLogo.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasBrandName.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasBreadcrumbs.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasColors.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasComponents.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasDarkMode.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasFavicon.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasFont.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasGlobalSearch.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasIcons.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasId.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasMaxContentWidth.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasMiddleware.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasNavigation.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasNotifications.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasPlugins.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasRenderHooks.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasRoutes.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasSidebar.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasSpaMode.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasTenancy.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasTheme.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasTopNavigation.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasTopbar.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasUnsavedChangesAlerts.php delete mode 100644 vendor/filament/filament/src/Panel/Concerns/HasUserMenu.php delete mode 100644 vendor/filament/filament/src/PanelProvider.php delete mode 100644 vendor/filament/filament/src/Resources/Components/Tab.php delete mode 100644 vendor/filament/filament/src/Resources/Concerns/HasTabs.php delete mode 100644 vendor/filament/filament/src/Resources/Concerns/InteractsWithRelationshipTable.php delete mode 100644 vendor/filament/filament/src/Resources/Pages/Concerns/CanAuthorizeResourceAccess.php delete mode 100644 vendor/filament/filament/src/Resources/Pages/Concerns/HasRelationManagers.php delete mode 100644 vendor/filament/filament/src/Resources/Pages/Concerns/HasWizard.php delete mode 100644 vendor/filament/filament/src/Resources/Pages/Concerns/InteractsWithRecord.php delete mode 100644 vendor/filament/filament/src/Resources/Pages/CreateRecord.php delete mode 100644 vendor/filament/filament/src/Resources/Pages/CreateRecord/Concerns/HasWizard.php delete mode 100644 vendor/filament/filament/src/Resources/Pages/EditRecord.php delete mode 100644 vendor/filament/filament/src/Resources/Pages/EditRecord/Concerns/HasWizard.php delete mode 100644 vendor/filament/filament/src/Resources/Pages/ListRecords.php delete mode 100644 vendor/filament/filament/src/Resources/Pages/ListRecords/Tab.php delete mode 100644 vendor/filament/filament/src/Resources/Pages/ManageRecords.php delete mode 100644 vendor/filament/filament/src/Resources/Pages/ManageRelatedRecords.php delete mode 100644 vendor/filament/filament/src/Resources/Pages/Page.php delete mode 100644 vendor/filament/filament/src/Resources/Pages/PageRegistration.php delete mode 100644 vendor/filament/filament/src/Resources/Pages/ViewRecord.php delete mode 100644 vendor/filament/filament/src/Resources/RelationManagers/RelationGroup.php delete mode 100644 vendor/filament/filament/src/Resources/RelationManagers/RelationManager.php delete mode 100644 vendor/filament/filament/src/Resources/RelationManagers/RelationManagerConfiguration.php delete mode 100644 vendor/filament/filament/src/Resources/Resource.php delete mode 100644 vendor/filament/filament/src/View/LegacyComponents/Page.php delete mode 100644 vendor/filament/filament/src/View/LegacyComponents/Widget.php delete mode 100644 vendor/filament/filament/src/Widgets/AccountWidget.php delete mode 100644 vendor/filament/filament/src/Widgets/Concerns/InteractsWithPageFilters.php delete mode 100644 vendor/filament/filament/src/Widgets/Concerns/InteractsWithPageTable.php delete mode 100644 vendor/filament/filament/src/Widgets/FilamentInfoWidget.php delete mode 100644 vendor/filament/filament/src/global_helpers.php delete mode 100644 vendor/filament/filament/src/helpers.php delete mode 100644 vendor/filament/filament/stubs/Cluster.stub delete mode 100644 vendor/filament/filament/stubs/CustomResourcePage.stub delete mode 100644 vendor/filament/filament/stubs/Page.stub delete mode 100644 vendor/filament/filament/stubs/PageView.stub delete mode 100644 vendor/filament/filament/stubs/RelationManager.stub delete mode 100644 vendor/filament/filament/stubs/Resource.stub delete mode 100644 vendor/filament/filament/stubs/ResourceEditPage.stub delete mode 100644 vendor/filament/filament/stubs/ResourceListPage.stub delete mode 100644 vendor/filament/filament/stubs/ResourceManagePage.stub delete mode 100644 vendor/filament/filament/stubs/ResourceManageRelatedRecordsPage.stub delete mode 100644 vendor/filament/filament/stubs/ResourcePage.stub delete mode 100644 vendor/filament/filament/stubs/ResourceViewPage.stub delete mode 100644 vendor/filament/filament/stubs/ThemeCss.stub delete mode 100644 vendor/filament/filament/stubs/ThemePostcssConfig.stub delete mode 100644 vendor/filament/filament/stubs/ThemeTailwindConfig.stub delete mode 100644 vendor/filament/filament/tailwind.config.js delete mode 100644 vendor/filament/filament/tailwind.config.preset.js delete mode 100644 vendor/filament/forms/.stubs.php delete mode 100644 vendor/filament/forms/composer.json delete mode 100644 vendor/filament/forms/dist/components/color-picker.js delete mode 100644 vendor/filament/forms/dist/components/date-time-picker.js delete mode 100644 vendor/filament/forms/dist/components/file-upload.js delete mode 100644 vendor/filament/forms/dist/components/key-value.js delete mode 100644 vendor/filament/forms/dist/components/markdown-editor.js delete mode 100644 vendor/filament/forms/dist/components/rich-editor.js delete mode 100644 vendor/filament/forms/dist/components/select.js delete mode 100644 vendor/filament/forms/dist/components/tags-input.js delete mode 100644 vendor/filament/forms/dist/components/textarea.js delete mode 100644 vendor/filament/forms/dist/index.css delete mode 100644 vendor/filament/forms/dist/index.js delete mode 100644 vendor/filament/forms/docs/01-installation.md delete mode 100644 vendor/filament/forms/docs/02-getting-started.md delete mode 100644 vendor/filament/forms/docs/03-fields/01-getting-started.md delete mode 100644 vendor/filament/forms/docs/03-fields/02-text-input.md delete mode 100644 vendor/filament/forms/docs/03-fields/03-select.md delete mode 100644 vendor/filament/forms/docs/03-fields/04-checkbox.md delete mode 100644 vendor/filament/forms/docs/03-fields/05-toggle.md delete mode 100644 vendor/filament/forms/docs/03-fields/06-checkbox-list.md delete mode 100644 vendor/filament/forms/docs/03-fields/07-radio.md delete mode 100644 vendor/filament/forms/docs/03-fields/08-date-time-picker.md delete mode 100644 vendor/filament/forms/docs/03-fields/09-file-upload.md delete mode 100644 vendor/filament/forms/docs/03-fields/10-rich-editor.md delete mode 100644 vendor/filament/forms/docs/03-fields/11-markdown-editor.md delete mode 100644 vendor/filament/forms/docs/03-fields/12-repeater.md delete mode 100644 vendor/filament/forms/docs/03-fields/13-builder.md delete mode 100644 vendor/filament/forms/docs/03-fields/14-tags-input.md delete mode 100644 vendor/filament/forms/docs/03-fields/15-textarea.md delete mode 100644 vendor/filament/forms/docs/03-fields/16-key-value.md delete mode 100644 vendor/filament/forms/docs/03-fields/17-color-picker.md delete mode 100644 vendor/filament/forms/docs/03-fields/18-toggle-buttons.md delete mode 100644 vendor/filament/forms/docs/03-fields/19-hidden.md delete mode 100644 vendor/filament/forms/docs/03-fields/20-custom.md delete mode 100644 vendor/filament/forms/docs/04-layout/01-getting-started.md delete mode 100644 vendor/filament/forms/docs/04-layout/02-grid.md delete mode 100644 vendor/filament/forms/docs/04-layout/03-fieldset.md delete mode 100644 vendor/filament/forms/docs/04-layout/04-tabs.md delete mode 100644 vendor/filament/forms/docs/04-layout/05-wizard.md delete mode 100644 vendor/filament/forms/docs/04-layout/06-section.md delete mode 100644 vendor/filament/forms/docs/04-layout/07-split.md delete mode 100644 vendor/filament/forms/docs/04-layout/08-custom.md delete mode 100644 vendor/filament/forms/docs/04-layout/08-placeholder.md delete mode 100644 vendor/filament/forms/docs/05-validation.md delete mode 100644 vendor/filament/forms/docs/06-actions.md delete mode 100644 vendor/filament/forms/docs/07-advanced.md delete mode 100644 vendor/filament/forms/docs/08-adding-a-form-to-a-livewire-component.md delete mode 100644 vendor/filament/forms/docs/09-testing.md delete mode 100644 vendor/filament/forms/docs/10-upgrade-guide.md delete mode 100644 vendor/filament/forms/resources/css/components/date-time-picker.css delete mode 100644 vendor/filament/forms/resources/css/components/file-upload.css delete mode 100644 vendor/filament/forms/resources/css/components/markdown-editor.css delete mode 100644 vendor/filament/forms/resources/css/components/rich-editor.css delete mode 100644 vendor/filament/forms/resources/css/components/select.css delete mode 100644 vendor/filament/forms/resources/css/components/tags-input.css delete mode 100644 vendor/filament/forms/resources/js/components/color-picker.js delete mode 100644 vendor/filament/forms/resources/js/components/date-time-picker.js delete mode 100644 vendor/filament/forms/resources/js/components/file-upload.js delete mode 100644 vendor/filament/forms/resources/js/components/key-value.js delete mode 100644 vendor/filament/forms/resources/js/components/markdown-editor.js delete mode 100644 vendor/filament/forms/resources/js/components/markdown-editor/EasyMDE.js delete mode 100644 vendor/filament/forms/resources/js/components/rich-editor.js delete mode 100644 vendor/filament/forms/resources/js/components/select.js delete mode 100644 vendor/filament/forms/resources/js/components/tags-input.js delete mode 100644 vendor/filament/forms/resources/js/components/textarea.js delete mode 100644 vendor/filament/forms/resources/js/index.js delete mode 100644 vendor/filament/forms/resources/lang/ar/components.php delete mode 100644 vendor/filament/forms/resources/lang/ar/validation.php delete mode 100644 vendor/filament/forms/resources/lang/az/components.php delete mode 100644 vendor/filament/forms/resources/lang/bn/components.php delete mode 100644 vendor/filament/forms/resources/lang/bs/components.php delete mode 100644 vendor/filament/forms/resources/lang/ca/components.php delete mode 100644 vendor/filament/forms/resources/lang/ca/validation.php delete mode 100644 vendor/filament/forms/resources/lang/ckb/components.php delete mode 100644 vendor/filament/forms/resources/lang/cs/components.php delete mode 100644 vendor/filament/forms/resources/lang/cs/validation.php delete mode 100644 vendor/filament/forms/resources/lang/cy/components.php delete mode 100644 vendor/filament/forms/resources/lang/da/components.php delete mode 100644 vendor/filament/forms/resources/lang/da/validation.php delete mode 100644 vendor/filament/forms/resources/lang/de/components.php delete mode 100644 vendor/filament/forms/resources/lang/en/components.php delete mode 100644 vendor/filament/forms/resources/lang/en/validation.php delete mode 100644 vendor/filament/forms/resources/lang/es/components.php delete mode 100644 vendor/filament/forms/resources/lang/es/validation.php delete mode 100644 vendor/filament/forms/resources/lang/eu/components.php delete mode 100644 vendor/filament/forms/resources/lang/fa/components.php delete mode 100644 vendor/filament/forms/resources/lang/fi/components.php delete mode 100644 vendor/filament/forms/resources/lang/fi/validation.php delete mode 100644 vendor/filament/forms/resources/lang/fr/components.php delete mode 100644 vendor/filament/forms/resources/lang/fr/validation.php delete mode 100644 vendor/filament/forms/resources/lang/he/components.php delete mode 100644 vendor/filament/forms/resources/lang/hi/components.php delete mode 100644 vendor/filament/forms/resources/lang/hr/components.php delete mode 100644 vendor/filament/forms/resources/lang/hu/components.php delete mode 100644 vendor/filament/forms/resources/lang/hu/validation.php delete mode 100644 vendor/filament/forms/resources/lang/hy/components.php delete mode 100644 vendor/filament/forms/resources/lang/id/components.php delete mode 100644 vendor/filament/forms/resources/lang/id/validation.php delete mode 100644 vendor/filament/forms/resources/lang/it/components.php delete mode 100644 vendor/filament/forms/resources/lang/it/validation.php delete mode 100644 vendor/filament/forms/resources/lang/ja/components.php delete mode 100644 vendor/filament/forms/resources/lang/ja/validation.php delete mode 100644 vendor/filament/forms/resources/lang/ka/components.php delete mode 100644 vendor/filament/forms/resources/lang/km/components.php delete mode 100644 vendor/filament/forms/resources/lang/km/validation.php delete mode 100644 vendor/filament/forms/resources/lang/ko/components.php delete mode 100644 vendor/filament/forms/resources/lang/ku/components.php delete mode 100644 vendor/filament/forms/resources/lang/lt/components.php delete mode 100644 vendor/filament/forms/resources/lang/lv/components.php delete mode 100644 vendor/filament/forms/resources/lang/mn/components.php delete mode 100644 vendor/filament/forms/resources/lang/ms/components.php delete mode 100644 vendor/filament/forms/resources/lang/ms/validation.php delete mode 100644 vendor/filament/forms/resources/lang/my/components.php delete mode 100644 vendor/filament/forms/resources/lang/nl/components.php delete mode 100644 vendor/filament/forms/resources/lang/nl/validation.php delete mode 100644 vendor/filament/forms/resources/lang/no/components.php delete mode 100644 vendor/filament/forms/resources/lang/np/components.php delete mode 100644 vendor/filament/forms/resources/lang/pl/components.php delete mode 100644 vendor/filament/forms/resources/lang/pt_BR/components.php delete mode 100644 vendor/filament/forms/resources/lang/pt_BR/validation.php delete mode 100644 vendor/filament/forms/resources/lang/pt_PT/components.php delete mode 100644 vendor/filament/forms/resources/lang/pt_PT/validation.php delete mode 100644 vendor/filament/forms/resources/lang/ro/components.php delete mode 100644 vendor/filament/forms/resources/lang/ro/validation.php delete mode 100644 vendor/filament/forms/resources/lang/ru/components.php delete mode 100644 vendor/filament/forms/resources/lang/sk/components.php delete mode 100644 vendor/filament/forms/resources/lang/sq/components.php delete mode 100644 vendor/filament/forms/resources/lang/sv/components.php delete mode 100644 vendor/filament/forms/resources/lang/sw/components.php delete mode 100644 vendor/filament/forms/resources/lang/tr/components.php delete mode 100644 vendor/filament/forms/resources/lang/uk/components.php delete mode 100644 vendor/filament/forms/resources/lang/uz/components.php delete mode 100644 vendor/filament/forms/resources/lang/uz/validation.php delete mode 100644 vendor/filament/forms/resources/lang/vi/components.php delete mode 100644 vendor/filament/forms/resources/lang/vi/validation.php delete mode 100644 vendor/filament/forms/resources/lang/zh_CN/components.php delete mode 100644 vendor/filament/forms/resources/lang/zh_TW/components.php delete mode 100644 vendor/filament/forms/resources/views/component-container.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/actions.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/actions/action-container.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/builder.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/builder/block-picker.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/checkbox-list.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/checkbox.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/color-picker.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/date-time-picker.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/field-wrapper/error-message.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/field-wrapper/helper-text.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/field-wrapper/hint.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/field-wrapper/index.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/field-wrapper/label.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/fieldset.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/file-upload.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/grid.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/group.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/hidden.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/key-value.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/livewire.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/markdown-editor.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/placeholder.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/radio.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/repeater/index.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/repeater/simple.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/rich-editor.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/rich-editor/toolbar/button.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/rich-editor/toolbar/group.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/section.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/select.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/split.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/tabs.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/tabs/tab.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/tags-input.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/text-input.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/textarea.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/toggle-buttons/grouped.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/toggle-buttons/index.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/toggle.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/wizard.blade.php delete mode 100644 vendor/filament/forms/resources/views/components/wizard/step.blade.php delete mode 100644 vendor/filament/forms/src/Commands/Aliases/MakeFieldCommand.php delete mode 100644 vendor/filament/forms/src/Commands/Aliases/MakeLayoutComponentCommand.php delete mode 100644 vendor/filament/forms/src/Commands/Concerns/CanGenerateForms.php delete mode 100644 vendor/filament/forms/src/Commands/MakeFieldCommand.php delete mode 100644 vendor/filament/forms/src/Commands/MakeFormCommand.php delete mode 100644 vendor/filament/forms/src/Commands/MakeLayoutComponentCommand.php delete mode 100644 vendor/filament/forms/src/ComponentContainer.php delete mode 100644 vendor/filament/forms/src/Components/Actions.php delete mode 100644 vendor/filament/forms/src/Components/Actions/Action.php delete mode 100644 vendor/filament/forms/src/Components/Actions/ActionContainer.php delete mode 100644 vendor/filament/forms/src/Components/Actions/Concerns/BelongsToComponent.php delete mode 100644 vendor/filament/forms/src/Components/BaseFileUpload.php delete mode 100644 vendor/filament/forms/src/Components/BelongsToManyCheckboxList.php delete mode 100644 vendor/filament/forms/src/Components/BelongsToManyMultiSelect.php delete mode 100644 vendor/filament/forms/src/Components/BelongsToSelect.php delete mode 100644 vendor/filament/forms/src/Components/Builder.php delete mode 100644 vendor/filament/forms/src/Components/Builder/Block.php delete mode 100644 vendor/filament/forms/src/Components/Card.php delete mode 100644 vendor/filament/forms/src/Components/Checkbox.php delete mode 100644 vendor/filament/forms/src/Components/CheckboxList.php delete mode 100644 vendor/filament/forms/src/Components/ColorPicker.php delete mode 100644 vendor/filament/forms/src/Components/Component.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/BelongsToContainer.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/BelongsToModel.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanAllowHtml.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBeAccepted.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBeAutocapitalized.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBeAutocompleted.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBeAutofocused.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBeCloned.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBeCollapsed.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBeCompacted.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBeConcealed.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBeDisabled.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBeHidden.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBeInline.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBeLengthConstrained.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBeMarkedAsRequired.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBePreloaded.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBeReadOnly.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBeRepeated.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBeSearchable.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanBeValidated.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanDisableOptions.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanDisableOptionsWhenSelectedInSiblingRepeaterItems.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanFixIndistinctState.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanGenerateUuids.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanLimitItemsLength.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanSelectPlaceholder.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/CanSpanColumns.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/Cloneable.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/EntanglesStateWithSingularRelationship.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasActions.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasAffixes.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasChildComponents.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasColors.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasContainerGridLayout.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasDatalistOptions.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasDescriptions.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasExtraAlpineAttributes.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasExtraAttributes.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasExtraInputAttributes.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasExtraItemActions.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasFieldWrapper.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasFileAttachments.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasGridDirection.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasHeaderActions.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasHelperText.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasHint.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasIcons.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasId.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasInlineLabel.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasInputMode.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasKey.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasLabel.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasLoadingMessage.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasMaxWidth.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasMeta.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasName.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasNestedRecursiveValidationRules.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasOptions.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasPlaceholder.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasState.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasStep.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasToggleColors.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasToggleIcons.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/HasUploadingMessage.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/InteractsWithToolbarButtons.php delete mode 100644 vendor/filament/forms/src/Components/Concerns/ListensToEvents.php delete mode 100644 vendor/filament/forms/src/Components/Contracts/CanBeLengthConstrained.php delete mode 100644 vendor/filament/forms/src/Components/Contracts/CanConcealComponents.php delete mode 100644 vendor/filament/forms/src/Components/Contracts/CanDisableOptions.php delete mode 100644 vendor/filament/forms/src/Components/Contracts/CanEntangleWithSingularRelationships.php delete mode 100644 vendor/filament/forms/src/Components/Contracts/CanHaveNumericState.php delete mode 100644 vendor/filament/forms/src/Components/Contracts/HasAffixActions.php delete mode 100644 vendor/filament/forms/src/Components/Contracts/HasExtraItemActions.php delete mode 100644 vendor/filament/forms/src/Components/Contracts/HasFileAttachments.php delete mode 100644 vendor/filament/forms/src/Components/Contracts/HasHeaderActions.php delete mode 100644 vendor/filament/forms/src/Components/Contracts/HasHintActions.php delete mode 100644 vendor/filament/forms/src/Components/Contracts/HasNestedRecursiveValidationRules.php delete mode 100644 vendor/filament/forms/src/Components/Contracts/HasValidationRules.php delete mode 100644 vendor/filament/forms/src/Components/DatePicker.php delete mode 100644 vendor/filament/forms/src/Components/DateTimePicker.php delete mode 100644 vendor/filament/forms/src/Components/Field.php delete mode 100644 vendor/filament/forms/src/Components/Fieldset.php delete mode 100644 vendor/filament/forms/src/Components/FileUpload.php delete mode 100644 vendor/filament/forms/src/Components/Grid.php delete mode 100644 vendor/filament/forms/src/Components/Group.php delete mode 100644 vendor/filament/forms/src/Components/HasManyRepeater.php delete mode 100644 vendor/filament/forms/src/Components/Hidden.php delete mode 100644 vendor/filament/forms/src/Components/KeyValue.php delete mode 100644 vendor/filament/forms/src/Components/Livewire.php delete mode 100644 vendor/filament/forms/src/Components/MarkdownEditor.php delete mode 100644 vendor/filament/forms/src/Components/MorphManyRepeater.php delete mode 100644 vendor/filament/forms/src/Components/MorphToSelect.php delete mode 100644 vendor/filament/forms/src/Components/MorphToSelect/Type.php delete mode 100644 vendor/filament/forms/src/Components/MultiSelect.php delete mode 100644 vendor/filament/forms/src/Components/Placeholder.php delete mode 100644 vendor/filament/forms/src/Components/Radio.php delete mode 100644 vendor/filament/forms/src/Components/RelationshipRepeater.php delete mode 100644 vendor/filament/forms/src/Components/Repeater.php delete mode 100644 vendor/filament/forms/src/Components/RichEditor.php delete mode 100644 vendor/filament/forms/src/Components/Section.php delete mode 100644 vendor/filament/forms/src/Components/Select.php delete mode 100644 vendor/filament/forms/src/Components/Split.php delete mode 100644 vendor/filament/forms/src/Components/Tabs.php delete mode 100644 vendor/filament/forms/src/Components/Tabs/Tab.php delete mode 100644 vendor/filament/forms/src/Components/TagsInput.php delete mode 100644 vendor/filament/forms/src/Components/TextInput.php delete mode 100644 vendor/filament/forms/src/Components/TextInput/Actions/HidePasswordAction.php delete mode 100644 vendor/filament/forms/src/Components/TextInput/Actions/ShowPasswordAction.php delete mode 100644 vendor/filament/forms/src/Components/Textarea.php delete mode 100644 vendor/filament/forms/src/Components/TimePicker.php delete mode 100644 vendor/filament/forms/src/Components/Toggle.php delete mode 100644 vendor/filament/forms/src/Components/ToggleButtons.php delete mode 100644 vendor/filament/forms/src/Components/View.php delete mode 100644 vendor/filament/forms/src/Components/ViewField.php delete mode 100644 vendor/filament/forms/src/Components/Wizard.php delete mode 100644 vendor/filament/forms/src/Components/Wizard/Step.php delete mode 100644 vendor/filament/forms/src/Concerns/BelongsToLivewire.php delete mode 100644 vendor/filament/forms/src/Concerns/BelongsToModel.php delete mode 100644 vendor/filament/forms/src/Concerns/BelongsToParentComponent.php delete mode 100644 vendor/filament/forms/src/Concerns/CanBeDisabled.php delete mode 100644 vendor/filament/forms/src/Concerns/CanBeHidden.php delete mode 100644 vendor/filament/forms/src/Concerns/CanBeValidated.php delete mode 100644 vendor/filament/forms/src/Concerns/Cloneable.php delete mode 100644 vendor/filament/forms/src/Concerns/HasColumns.php delete mode 100644 vendor/filament/forms/src/Concerns/HasComponents.php delete mode 100644 vendor/filament/forms/src/Concerns/HasFieldWrapper.php delete mode 100644 vendor/filament/forms/src/Concerns/HasFormComponentActions.php delete mode 100644 vendor/filament/forms/src/Concerns/HasInlineLabels.php delete mode 100644 vendor/filament/forms/src/Concerns/HasOperation.php delete mode 100644 vendor/filament/forms/src/Concerns/HasState.php delete mode 100644 vendor/filament/forms/src/Concerns/HasStateBindingModifiers.php delete mode 100644 vendor/filament/forms/src/Concerns/InteractsWithForms.php delete mode 100644 vendor/filament/forms/src/Concerns/ListensToEvents.php delete mode 100644 vendor/filament/forms/src/Concerns/SupportsComponentFileAttachments.php delete mode 100644 vendor/filament/forms/src/Concerns/SupportsFileUploadFields.php delete mode 100644 vendor/filament/forms/src/Concerns/SupportsSelectFields.php delete mode 100644 vendor/filament/forms/src/Contracts/HasForms.php delete mode 100644 vendor/filament/forms/src/Form.php delete mode 100644 vendor/filament/forms/src/FormsComponent.php delete mode 100644 vendor/filament/forms/src/FormsServiceProvider.php delete mode 100644 vendor/filament/forms/src/Get.php delete mode 100644 vendor/filament/forms/src/Set.php delete mode 100644 vendor/filament/forms/src/Testing/TestsComponentActions.php delete mode 100644 vendor/filament/forms/src/Testing/TestsForms.php delete mode 100644 vendor/filament/forms/src/helpers.php delete mode 100644 vendor/filament/forms/stubs/CreateForm.stub delete mode 100644 vendor/filament/forms/stubs/EditForm.stub delete mode 100644 vendor/filament/forms/stubs/Field.stub delete mode 100644 vendor/filament/forms/stubs/FieldView.stub delete mode 100644 vendor/filament/forms/stubs/Form.stub delete mode 100644 vendor/filament/forms/stubs/FormView.stub delete mode 100644 vendor/filament/forms/stubs/LayoutComponent.stub delete mode 100644 vendor/filament/forms/stubs/LayoutComponentView.stub delete mode 100644 vendor/filament/infolists/.stubs.php delete mode 100644 vendor/filament/infolists/composer.json delete mode 100644 vendor/filament/infolists/docs/01-installation.md delete mode 100644 vendor/filament/infolists/docs/02-getting-started.md delete mode 100644 vendor/filament/infolists/docs/03-entries/01-getting-started.md delete mode 100644 vendor/filament/infolists/docs/03-entries/02-text.md delete mode 100644 vendor/filament/infolists/docs/03-entries/03-icon.md delete mode 100644 vendor/filament/infolists/docs/03-entries/04-image.md delete mode 100644 vendor/filament/infolists/docs/03-entries/05-color.md delete mode 100644 vendor/filament/infolists/docs/03-entries/06-key-value.md delete mode 100644 vendor/filament/infolists/docs/03-entries/07-repeatable.md delete mode 100644 vendor/filament/infolists/docs/03-entries/08-custom.md delete mode 100644 vendor/filament/infolists/docs/04-layout/01-getting-started.md delete mode 100644 vendor/filament/infolists/docs/04-layout/02-grid.md delete mode 100644 vendor/filament/infolists/docs/04-layout/03-fieldset.md delete mode 100644 vendor/filament/infolists/docs/04-layout/04-tabs.md delete mode 100644 vendor/filament/infolists/docs/04-layout/05-section.md delete mode 100644 vendor/filament/infolists/docs/04-layout/06-split.md delete mode 100644 vendor/filament/infolists/docs/04-layout/07-custom.md delete mode 100644 vendor/filament/infolists/docs/05-actions.md delete mode 100644 vendor/filament/infolists/docs/06-advanced.md delete mode 100644 vendor/filament/infolists/docs/07-adding-an-infolist-to-a-livewire-component.md delete mode 100644 vendor/filament/infolists/docs/08-testing.md delete mode 100644 vendor/filament/infolists/resources/lang/ar/components.php delete mode 100644 vendor/filament/infolists/resources/lang/az/components.php delete mode 100644 vendor/filament/infolists/resources/lang/ca/components.php delete mode 100644 vendor/filament/infolists/resources/lang/ckb/components.php delete mode 100644 vendor/filament/infolists/resources/lang/da/components.php delete mode 100644 vendor/filament/infolists/resources/lang/de/components.php delete mode 100644 vendor/filament/infolists/resources/lang/en/components.php delete mode 100644 vendor/filament/infolists/resources/lang/es/components.php delete mode 100644 vendor/filament/infolists/resources/lang/fa/components.php delete mode 100644 vendor/filament/infolists/resources/lang/fi/components.php delete mode 100644 vendor/filament/infolists/resources/lang/fr/components.php delete mode 100644 vendor/filament/infolists/resources/lang/hr/components.php delete mode 100644 vendor/filament/infolists/resources/lang/hu/components.php delete mode 100644 vendor/filament/infolists/resources/lang/ja/components.php delete mode 100644 vendor/filament/infolists/resources/lang/km/components.php delete mode 100644 vendor/filament/infolists/resources/lang/ko/components.php delete mode 100644 vendor/filament/infolists/resources/lang/ku/components.php delete mode 100644 vendor/filament/infolists/resources/lang/lt/components.php delete mode 100644 vendor/filament/infolists/resources/lang/nl/components.php delete mode 100644 vendor/filament/infolists/resources/lang/no/components.php delete mode 100644 vendor/filament/infolists/resources/lang/np/components.php delete mode 100644 vendor/filament/infolists/resources/lang/pt_BR/components.php delete mode 100644 vendor/filament/infolists/resources/lang/pt_PT/components.php delete mode 100644 vendor/filament/infolists/resources/lang/ru/components.php delete mode 100644 vendor/filament/infolists/resources/lang/sk/components.php delete mode 100644 vendor/filament/infolists/resources/lang/sv/components.php delete mode 100644 vendor/filament/infolists/resources/lang/tr/components.php delete mode 100644 vendor/filament/infolists/resources/lang/uk/components.php delete mode 100644 vendor/filament/infolists/resources/lang/uz/components.php delete mode 100644 vendor/filament/infolists/resources/lang/vi/components.php delete mode 100644 vendor/filament/infolists/resources/lang/zh_CN/components.php delete mode 100644 vendor/filament/infolists/resources/views/component-container.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/actions.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/actions/action-container.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/affixes.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/color-entry.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/entries/placeholder.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/entry-wrapper/helper-text.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/entry-wrapper/hint.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/entry-wrapper/index.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/entry-wrapper/label.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/fieldset.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/grid.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/group.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/icon-entry.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/image-entry.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/key-value-entry.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/livewire.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/repeatable-entry.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/section.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/split.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/tabs.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/tabs/tab.blade.php delete mode 100644 vendor/filament/infolists/resources/views/components/text-entry.blade.php delete mode 100644 vendor/filament/infolists/src/Commands/Aliases/MakeEntryCommand.php delete mode 100644 vendor/filament/infolists/src/Commands/Aliases/MakeLayoutComponentCommand.php delete mode 100644 vendor/filament/infolists/src/Commands/MakeEntryCommand.php delete mode 100644 vendor/filament/infolists/src/Commands/MakeLayoutComponentCommand.php delete mode 100644 vendor/filament/infolists/src/ComponentContainer.php delete mode 100644 vendor/filament/infolists/src/Components/Actions.php delete mode 100644 vendor/filament/infolists/src/Components/Actions/Action.php delete mode 100644 vendor/filament/infolists/src/Components/Actions/ActionContainer.php delete mode 100644 vendor/filament/infolists/src/Components/Actions/Concerns/BelongsToInfolist.php delete mode 100644 vendor/filament/infolists/src/Components/Card.php delete mode 100644 vendor/filament/infolists/src/Components/ColorEntry.php delete mode 100644 vendor/filament/infolists/src/Components/Component.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/BelongsToContainer.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/CanBeCollapsed.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/CanBeCompacted.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/CanBeHidden.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/CanFormatState.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/CanGetStateFromRelationships.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/CanOpenUrl.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/CanSpanColumns.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/Cloneable.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/EntanglesStateWithSingularRelationship.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasActions.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasAffixes.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasChildComponents.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasColor.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasContainerGridLayout.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasEntryWrapper.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasFontFamily.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasHeaderActions.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasHelperText.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasHint.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasIcon.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasIconColor.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasId.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasInlineLabel.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasKey.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasLabel.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasMaxWidth.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasMeta.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasName.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasState.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasTooltip.php delete mode 100644 vendor/filament/infolists/src/Components/Concerns/HasWeight.php delete mode 100644 vendor/filament/infolists/src/Components/Contracts/HasAffixActions.php delete mode 100644 vendor/filament/infolists/src/Components/Contracts/HasHeaderActions.php delete mode 100644 vendor/filament/infolists/src/Components/Contracts/HasHintActions.php delete mode 100644 vendor/filament/infolists/src/Components/Entry.php delete mode 100644 vendor/filament/infolists/src/Components/Fieldset.php delete mode 100644 vendor/filament/infolists/src/Components/Grid.php delete mode 100644 vendor/filament/infolists/src/Components/Group.php delete mode 100644 vendor/filament/infolists/src/Components/IconEntry.php delete mode 100644 vendor/filament/infolists/src/Components/IconEntry/IconEntrySize.php delete mode 100644 vendor/filament/infolists/src/Components/ImageEntry.php delete mode 100644 vendor/filament/infolists/src/Components/KeyValueEntry.php delete mode 100644 vendor/filament/infolists/src/Components/Livewire.php delete mode 100644 vendor/filament/infolists/src/Components/RepeatableEntry.php delete mode 100644 vendor/filament/infolists/src/Components/Section.php delete mode 100644 vendor/filament/infolists/src/Components/Split.php delete mode 100644 vendor/filament/infolists/src/Components/Tabs.php delete mode 100644 vendor/filament/infolists/src/Components/Tabs/Tab.php delete mode 100644 vendor/filament/infolists/src/Components/TextEntry.php delete mode 100644 vendor/filament/infolists/src/Components/TextEntry/TextEntrySize.php delete mode 100644 vendor/filament/infolists/src/Components/View.php delete mode 100644 vendor/filament/infolists/src/Components/ViewEntry.php delete mode 100644 vendor/filament/infolists/src/Concerns/BelongsToLivewire.php delete mode 100644 vendor/filament/infolists/src/Concerns/BelongsToParentComponent.php delete mode 100644 vendor/filament/infolists/src/Concerns/CanBeHidden.php delete mode 100644 vendor/filament/infolists/src/Concerns/Cloneable.php delete mode 100644 vendor/filament/infolists/src/Concerns/HasColumns.php delete mode 100644 vendor/filament/infolists/src/Concerns/HasComponents.php delete mode 100644 vendor/filament/infolists/src/Concerns/HasEntryWrapper.php delete mode 100644 vendor/filament/infolists/src/Concerns/HasInlineLabels.php delete mode 100644 vendor/filament/infolists/src/Concerns/HasState.php delete mode 100644 vendor/filament/infolists/src/Concerns/InteractsWithInfolists.php delete mode 100644 vendor/filament/infolists/src/Contracts/HasInfolists.php delete mode 100644 vendor/filament/infolists/src/Infolist.php delete mode 100644 vendor/filament/infolists/src/InfolistsServiceProvider.php delete mode 100644 vendor/filament/infolists/src/Testing/TestsActions.php delete mode 100644 vendor/filament/infolists/stubs/Entry.stub delete mode 100644 vendor/filament/infolists/stubs/EntryView.stub delete mode 100644 vendor/filament/infolists/stubs/LayoutComponent.stub delete mode 100644 vendor/filament/infolists/stubs/LayoutComponentView.stub delete mode 100644 vendor/filament/notifications/.stubs.php delete mode 100644 vendor/filament/notifications/composer.json delete mode 100644 vendor/filament/notifications/dist/index.js delete mode 100644 vendor/filament/notifications/docs/01-installation.md delete mode 100644 vendor/filament/notifications/docs/02-sending-notifications.md delete mode 100644 vendor/filament/notifications/docs/03-database-notifications.md delete mode 100644 vendor/filament/notifications/docs/04-broadcast-notifications.md delete mode 100644 vendor/filament/notifications/docs/05-customizing-notifications.md delete mode 100644 vendor/filament/notifications/docs/06-testing.md delete mode 100644 vendor/filament/notifications/docs/07-upgrade-guide.md delete mode 100644 vendor/filament/notifications/resources/js/Notification.js delete mode 100644 vendor/filament/notifications/resources/js/components/notification.js delete mode 100644 vendor/filament/notifications/resources/js/index.js delete mode 100644 vendor/filament/notifications/resources/lang/ar/database.php delete mode 100644 vendor/filament/notifications/resources/lang/az/database.php delete mode 100644 vendor/filament/notifications/resources/lang/bn/database.php delete mode 100644 vendor/filament/notifications/resources/lang/bs/database.php delete mode 100644 vendor/filament/notifications/resources/lang/ca/database.php delete mode 100644 vendor/filament/notifications/resources/lang/ckb/database.php delete mode 100644 vendor/filament/notifications/resources/lang/cs/database.php delete mode 100644 vendor/filament/notifications/resources/lang/cy/database.php delete mode 100644 vendor/filament/notifications/resources/lang/da/database.php delete mode 100644 vendor/filament/notifications/resources/lang/de/database.php delete mode 100644 vendor/filament/notifications/resources/lang/el/database.php delete mode 100644 vendor/filament/notifications/resources/lang/en/database.php delete mode 100644 vendor/filament/notifications/resources/lang/es/database.php delete mode 100644 vendor/filament/notifications/resources/lang/eu/database.php delete mode 100644 vendor/filament/notifications/resources/lang/fa/database.php delete mode 100644 vendor/filament/notifications/resources/lang/fi/database.php delete mode 100644 vendor/filament/notifications/resources/lang/fr/database.php delete mode 100644 vendor/filament/notifications/resources/lang/he/database.php delete mode 100644 vendor/filament/notifications/resources/lang/hr/database.php delete mode 100644 vendor/filament/notifications/resources/lang/hu/database.php delete mode 100644 vendor/filament/notifications/resources/lang/id/database.php delete mode 100644 vendor/filament/notifications/resources/lang/it/database.php delete mode 100644 vendor/filament/notifications/resources/lang/ja/database.php delete mode 100644 vendor/filament/notifications/resources/lang/km/database.php delete mode 100644 vendor/filament/notifications/resources/lang/ko/database.php delete mode 100644 vendor/filament/notifications/resources/lang/ku/database.php delete mode 100644 vendor/filament/notifications/resources/lang/lt/database.php delete mode 100644 vendor/filament/notifications/resources/lang/lv/database.php delete mode 100644 vendor/filament/notifications/resources/lang/ms/database.php delete mode 100644 vendor/filament/notifications/resources/lang/nl/database.php delete mode 100644 vendor/filament/notifications/resources/lang/no/database.php delete mode 100644 vendor/filament/notifications/resources/lang/np/database.php delete mode 100644 vendor/filament/notifications/resources/lang/pl/database.php delete mode 100644 vendor/filament/notifications/resources/lang/pt_BR/database.php delete mode 100644 vendor/filament/notifications/resources/lang/pt_PT/database.php delete mode 100644 vendor/filament/notifications/resources/lang/ro/database.php delete mode 100644 vendor/filament/notifications/resources/lang/ru/database.php delete mode 100644 vendor/filament/notifications/resources/lang/sk/database.php delete mode 100644 vendor/filament/notifications/resources/lang/sq/database.php delete mode 100644 vendor/filament/notifications/resources/lang/sv/database.php delete mode 100644 vendor/filament/notifications/resources/lang/sw/database.php delete mode 100644 vendor/filament/notifications/resources/lang/tr/database.php delete mode 100644 vendor/filament/notifications/resources/lang/uk/database.php delete mode 100644 vendor/filament/notifications/resources/lang/uz/database.php delete mode 100644 vendor/filament/notifications/resources/lang/vi/database.php delete mode 100644 vendor/filament/notifications/resources/lang/zh_CN/database.php delete mode 100644 vendor/filament/notifications/resources/views/components/actions.blade.php delete mode 100644 vendor/filament/notifications/resources/views/components/body.blade.php delete mode 100644 vendor/filament/notifications/resources/views/components/close-button.blade.php delete mode 100644 vendor/filament/notifications/resources/views/components/database/echo.blade.php delete mode 100644 vendor/filament/notifications/resources/views/components/database/modal/actions.blade.php delete mode 100644 vendor/filament/notifications/resources/views/components/database/modal/heading.blade.php delete mode 100644 vendor/filament/notifications/resources/views/components/database/modal/index.blade.php delete mode 100644 vendor/filament/notifications/resources/views/components/database/trigger.blade.php delete mode 100644 vendor/filament/notifications/resources/views/components/date.blade.php delete mode 100644 vendor/filament/notifications/resources/views/components/echo.blade.php delete mode 100644 vendor/filament/notifications/resources/views/components/icon.blade.php delete mode 100644 vendor/filament/notifications/resources/views/components/notification.blade.php delete mode 100644 vendor/filament/notifications/resources/views/components/title.blade.php delete mode 100644 vendor/filament/notifications/resources/views/database-notifications.blade.php delete mode 100644 vendor/filament/notifications/resources/views/notification.blade.php delete mode 100644 vendor/filament/notifications/resources/views/notifications.blade.php delete mode 100644 vendor/filament/notifications/src/Actions/Action.php delete mode 100644 vendor/filament/notifications/src/Actions/ActionGroup.php delete mode 100644 vendor/filament/notifications/src/BroadcastNotification.php delete mode 100644 vendor/filament/notifications/src/Collection.php delete mode 100644 vendor/filament/notifications/src/Concerns/CanBeInline.php delete mode 100644 vendor/filament/notifications/src/Concerns/HasActions.php delete mode 100644 vendor/filament/notifications/src/Concerns/HasBody.php delete mode 100644 vendor/filament/notifications/src/Concerns/HasDate.php delete mode 100644 vendor/filament/notifications/src/Concerns/HasDuration.php delete mode 100644 vendor/filament/notifications/src/Concerns/HasIcon.php delete mode 100644 vendor/filament/notifications/src/Concerns/HasIconColor.php delete mode 100644 vendor/filament/notifications/src/Concerns/HasId.php delete mode 100644 vendor/filament/notifications/src/Concerns/HasStatus.php delete mode 100644 vendor/filament/notifications/src/Concerns/HasTitle.php delete mode 100644 vendor/filament/notifications/src/DatabaseNotification.php delete mode 100644 vendor/filament/notifications/src/Events/DatabaseNotificationsSent.php delete mode 100644 vendor/filament/notifications/src/Livewire/DatabaseNotifications.php delete mode 100644 vendor/filament/notifications/src/Livewire/Notifications.php delete mode 100644 vendor/filament/notifications/src/Notification.php delete mode 100644 vendor/filament/notifications/src/NotificationsServiceProvider.php delete mode 100644 vendor/filament/notifications/src/Testing/Autoload.php delete mode 100644 vendor/filament/notifications/src/Testing/TestsNotifications.php delete mode 100644 vendor/filament/support/composer.json delete mode 100644 vendor/filament/support/config/filament.php delete mode 100644 vendor/filament/support/dist/async-alpine.js delete mode 100644 vendor/filament/support/dist/index.css delete mode 100644 vendor/filament/support/dist/index.js delete mode 100644 vendor/filament/support/docs/01-overview.md delete mode 100644 vendor/filament/support/docs/02-assets.md delete mode 100644 vendor/filament/support/docs/03-icons.md delete mode 100644 vendor/filament/support/docs/04-colors.md delete mode 100644 vendor/filament/support/docs/05-style-customization.md delete mode 100644 vendor/filament/support/docs/06-render-hooks.md delete mode 100644 vendor/filament/support/docs/07-enums.md delete mode 100644 vendor/filament/support/docs/08-plugins/01-getting-started.md delete mode 100644 vendor/filament/support/docs/08-plugins/02-build-a-panel-plugin.md delete mode 100644 vendor/filament/support/docs/08-plugins/03-build-a-standalone-plugin.md delete mode 100644 vendor/filament/support/docs/09-blade-components/01-overview.md delete mode 100644 vendor/filament/support/docs/09-blade-components/02-avatar.md delete mode 100644 vendor/filament/support/docs/09-blade-components/02-badge.md delete mode 100644 vendor/filament/support/docs/09-blade-components/02-breadcrumbs.md delete mode 100644 vendor/filament/support/docs/09-blade-components/02-button.md delete mode 100644 vendor/filament/support/docs/09-blade-components/02-checkbox.md delete mode 100644 vendor/filament/support/docs/09-blade-components/02-dropdown.md delete mode 100644 vendor/filament/support/docs/09-blade-components/02-fieldset.md delete mode 100644 vendor/filament/support/docs/09-blade-components/02-icon-button.md delete mode 100644 vendor/filament/support/docs/09-blade-components/02-input-wrapper.md delete mode 100644 vendor/filament/support/docs/09-blade-components/02-input.md delete mode 100644 vendor/filament/support/docs/09-blade-components/02-link.md delete mode 100644 vendor/filament/support/docs/09-blade-components/02-loading-indicator.md delete mode 100644 vendor/filament/support/docs/09-blade-components/02-modal.md delete mode 100644 vendor/filament/support/docs/09-blade-components/02-pagination.md delete mode 100644 vendor/filament/support/docs/09-blade-components/02-section.md delete mode 100644 vendor/filament/support/docs/09-blade-components/02-select.md delete mode 100644 vendor/filament/support/docs/09-blade-components/02-tabs.md delete mode 100644 vendor/filament/support/resources/css/components/pagination.css delete mode 100644 vendor/filament/support/resources/css/sortable.css delete mode 100644 vendor/filament/support/resources/js/index.js delete mode 100644 vendor/filament/support/resources/js/sortable.js delete mode 100644 vendor/filament/support/resources/lang/ar/components/button.php delete mode 100644 vendor/filament/support/resources/lang/ar/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/ar/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/ar/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/az/components/button.php delete mode 100644 vendor/filament/support/resources/lang/az/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/az/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/az/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/bn/components/button.php delete mode 100644 vendor/filament/support/resources/lang/bn/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/bn/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/bn/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/bs/components/button.php delete mode 100644 vendor/filament/support/resources/lang/bs/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/bs/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/bs/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/ca/components/button.php delete mode 100644 vendor/filament/support/resources/lang/ca/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/ca/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/ca/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/ckb/components/button.php delete mode 100644 vendor/filament/support/resources/lang/ckb/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/ckb/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/ckb/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/cs/components/button.php delete mode 100644 vendor/filament/support/resources/lang/cs/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/cs/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/cs/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/cy/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/cy/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/da/components/button.php delete mode 100644 vendor/filament/support/resources/lang/da/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/da/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/da/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/de/components/button.php delete mode 100644 vendor/filament/support/resources/lang/de/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/de/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/de/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/en/components/button.php delete mode 100644 vendor/filament/support/resources/lang/en/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/en/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/en/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/es/components/button.php delete mode 100644 vendor/filament/support/resources/lang/es/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/es/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/es/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/eu/components/button.php delete mode 100644 vendor/filament/support/resources/lang/eu/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/eu/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/eu/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/fa/components/button.php delete mode 100644 vendor/filament/support/resources/lang/fa/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/fa/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/fa/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/fi/components/button.php delete mode 100644 vendor/filament/support/resources/lang/fi/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/fi/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/fi/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/fr/components/button.php delete mode 100644 vendor/filament/support/resources/lang/fr/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/fr/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/fr/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/he/components/button.php delete mode 100644 vendor/filament/support/resources/lang/he/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/he/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/he/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/hi/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/hr/components/button.php delete mode 100644 vendor/filament/support/resources/lang/hr/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/hr/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/hr/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/hu/components/button.php delete mode 100644 vendor/filament/support/resources/lang/hu/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/hu/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/hu/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/hy/components/button.php delete mode 100644 vendor/filament/support/resources/lang/hy/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/id/components/button.php delete mode 100644 vendor/filament/support/resources/lang/id/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/id/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/id/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/it/components/button.php delete mode 100644 vendor/filament/support/resources/lang/it/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/it/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/it/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/ja/components/button.php delete mode 100644 vendor/filament/support/resources/lang/ja/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/ja/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/ja/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/ka/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/km/components/button.php delete mode 100644 vendor/filament/support/resources/lang/km/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/km/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/km/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/ko/components/button.php delete mode 100644 vendor/filament/support/resources/lang/ko/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/ko/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/ko/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/ku/components/button.php delete mode 100644 vendor/filament/support/resources/lang/ku/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/ku/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/ku/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/lt/components/button.php delete mode 100644 vendor/filament/support/resources/lang/lt/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/lt/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/lt/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/lv/components/button.php delete mode 100644 vendor/filament/support/resources/lang/lv/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/lv/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/lv/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/mn/components/button.php delete mode 100644 vendor/filament/support/resources/lang/mn/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/mn/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/mn/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/ms/components/button.php delete mode 100644 vendor/filament/support/resources/lang/ms/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/ms/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/ms/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/nl/components/button.php delete mode 100644 vendor/filament/support/resources/lang/nl/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/nl/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/nl/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/no/components/button.php delete mode 100644 vendor/filament/support/resources/lang/no/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/no/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/no/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/np/components/button.php delete mode 100644 vendor/filament/support/resources/lang/np/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/np/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/np/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/pl/components/button.php delete mode 100644 vendor/filament/support/resources/lang/pl/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/pl/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/pl/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/pt_BR/components/button.php delete mode 100644 vendor/filament/support/resources/lang/pt_BR/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/pt_BR/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/pt_BR/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/pt_PT/components/button.php delete mode 100644 vendor/filament/support/resources/lang/pt_PT/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/pt_PT/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/pt_PT/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/ro/components/button.php delete mode 100644 vendor/filament/support/resources/lang/ro/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/ro/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/ro/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/ru/components/button.php delete mode 100644 vendor/filament/support/resources/lang/ru/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/ru/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/ru/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/sk/components/button.php delete mode 100644 vendor/filament/support/resources/lang/sk/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/sk/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/sk/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/sq/components/button.php delete mode 100644 vendor/filament/support/resources/lang/sq/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/sq/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/sq/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/sv/components/button.php delete mode 100644 vendor/filament/support/resources/lang/sv/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/sv/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/sv/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/sw/components/button.php delete mode 100644 vendor/filament/support/resources/lang/sw/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/sw/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/sw/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/tr/components/button.php delete mode 100644 vendor/filament/support/resources/lang/tr/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/tr/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/tr/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/uk/components/button.php delete mode 100644 vendor/filament/support/resources/lang/uk/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/uk/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/uk/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/uz/components/button.php delete mode 100644 vendor/filament/support/resources/lang/uz/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/uz/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/uz/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/vi/components/button.php delete mode 100644 vendor/filament/support/resources/lang/vi/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/vi/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/vi/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/zh_CN/components/button.php delete mode 100644 vendor/filament/support/resources/lang/zh_CN/components/copyable.php delete mode 100644 vendor/filament/support/resources/lang/zh_CN/components/modal.php delete mode 100644 vendor/filament/support/resources/lang/zh_CN/components/pagination.php delete mode 100644 vendor/filament/support/resources/lang/zh_TW/components/button.php delete mode 100644 vendor/filament/support/resources/lang/zh_TW/components/pagination.php delete mode 100644 vendor/filament/support/resources/views/assets.blade.php delete mode 100644 vendor/filament/support/resources/views/components/actions.blade.php delete mode 100644 vendor/filament/support/resources/views/components/avatar.blade.php delete mode 100644 vendor/filament/support/resources/views/components/badge.blade.php delete mode 100644 vendor/filament/support/resources/views/components/breadcrumbs.blade.php delete mode 100644 vendor/filament/support/resources/views/components/button/group.blade.php delete mode 100644 vendor/filament/support/resources/views/components/button/index.blade.php delete mode 100644 vendor/filament/support/resources/views/components/card.blade.php delete mode 100644 vendor/filament/support/resources/views/components/dropdown/header.blade.php delete mode 100644 vendor/filament/support/resources/views/components/dropdown/index.blade.php delete mode 100644 vendor/filament/support/resources/views/components/dropdown/list/index.blade.php delete mode 100644 vendor/filament/support/resources/views/components/dropdown/list/item.blade.php delete mode 100644 vendor/filament/support/resources/views/components/fieldset.blade.php delete mode 100644 vendor/filament/support/resources/views/components/grid/column.blade.php delete mode 100644 vendor/filament/support/resources/views/components/grid/index.blade.php delete mode 100644 vendor/filament/support/resources/views/components/icon-button.blade.php delete mode 100644 vendor/filament/support/resources/views/components/icon.blade.php delete mode 100644 vendor/filament/support/resources/views/components/input/checkbox.blade.php delete mode 100644 vendor/filament/support/resources/views/components/input/index.blade.php delete mode 100644 vendor/filament/support/resources/views/components/input/radio.blade.php delete mode 100644 vendor/filament/support/resources/views/components/input/select.blade.php delete mode 100644 vendor/filament/support/resources/views/components/input/wrapper.blade.php delete mode 100644 vendor/filament/support/resources/views/components/link.blade.php delete mode 100644 vendor/filament/support/resources/views/components/loading-indicator.blade.php delete mode 100644 vendor/filament/support/resources/views/components/loading-section.blade.php delete mode 100644 vendor/filament/support/resources/views/components/modal/description.blade.php delete mode 100644 vendor/filament/support/resources/views/components/modal/heading.blade.php delete mode 100644 vendor/filament/support/resources/views/components/modal/index.blade.php delete mode 100644 vendor/filament/support/resources/views/components/pagination/index.blade.php delete mode 100644 vendor/filament/support/resources/views/components/pagination/item.blade.php delete mode 100644 vendor/filament/support/resources/views/components/section/description.blade.php delete mode 100644 vendor/filament/support/resources/views/components/section/heading.blade.php delete mode 100644 vendor/filament/support/resources/views/components/section/index.blade.php delete mode 100644 vendor/filament/support/resources/views/components/tabs/index.blade.php delete mode 100644 vendor/filament/support/resources/views/components/tabs/item.blade.php delete mode 100644 vendor/filament/support/src/Assets/AlpineComponent.php delete mode 100644 vendor/filament/support/src/Assets/Asset.php delete mode 100644 vendor/filament/support/src/Assets/AssetManager.php delete mode 100644 vendor/filament/support/src/Assets/Css.php delete mode 100644 vendor/filament/support/src/Assets/Js.php delete mode 100644 vendor/filament/support/src/Assets/Theme.php delete mode 100644 vendor/filament/support/src/ChunkIterator.php delete mode 100644 vendor/filament/support/src/Colors/Color.php delete mode 100644 vendor/filament/support/src/Colors/ColorManager.php delete mode 100644 vendor/filament/support/src/Commands/AssetsCommand.php delete mode 100644 vendor/filament/support/src/Commands/CheckTranslationsCommand.php delete mode 100644 vendor/filament/support/src/Commands/Concerns/CanGeneratePanels.php delete mode 100644 vendor/filament/support/src/Commands/Concerns/CanIndentStrings.php delete mode 100644 vendor/filament/support/src/Commands/Concerns/CanManipulateFiles.php delete mode 100644 vendor/filament/support/src/Commands/Concerns/CanReadModelSchemas.php delete mode 100644 vendor/filament/support/src/Commands/Concerns/CanValidateInput.php delete mode 100644 vendor/filament/support/src/Commands/InstallCommand.php delete mode 100644 vendor/filament/support/src/Commands/UpgradeCommand.php delete mode 100644 vendor/filament/support/src/Components/Component.php delete mode 100644 vendor/filament/support/src/Components/ComponentManager.php delete mode 100644 vendor/filament/support/src/Components/Contracts/ScopedComponentManager.php delete mode 100644 vendor/filament/support/src/Components/ViewComponent.php delete mode 100644 vendor/filament/support/src/Concerns/CanAggregateRelatedModels.php delete mode 100644 vendor/filament/support/src/Concerns/CanBeContained.php delete mode 100644 vendor/filament/support/src/Concerns/CanBeCopied.php delete mode 100644 vendor/filament/support/src/Concerns/CanGrow.php delete mode 100644 vendor/filament/support/src/Concerns/CanPersistTab.php delete mode 100644 vendor/filament/support/src/Concerns/Configurable.php delete mode 100644 vendor/filament/support/src/Concerns/EvaluatesClosures.php delete mode 100644 vendor/filament/support/src/Concerns/HasAlignment.php delete mode 100644 vendor/filament/support/src/Concerns/HasBadge.php delete mode 100644 vendor/filament/support/src/Concerns/HasCellState.php delete mode 100644 vendor/filament/support/src/Concerns/HasColor.php delete mode 100644 vendor/filament/support/src/Concerns/HasDescription.php delete mode 100644 vendor/filament/support/src/Concerns/HasExtraAlpineAttributes.php delete mode 100644 vendor/filament/support/src/Concerns/HasExtraAttributes.php delete mode 100644 vendor/filament/support/src/Concerns/HasExtraSidebarAttributes.php delete mode 100644 vendor/filament/support/src/Concerns/HasExtraTopbarAttributes.php delete mode 100644 vendor/filament/support/src/Concerns/HasFromBreakpoint.php delete mode 100644 vendor/filament/support/src/Concerns/HasHeading.php delete mode 100644 vendor/filament/support/src/Concerns/HasIcon.php delete mode 100644 vendor/filament/support/src/Concerns/HasIconColor.php delete mode 100644 vendor/filament/support/src/Concerns/HasPlaceholder.php delete mode 100644 vendor/filament/support/src/Concerns/HasReorderAnimationDuration.php delete mode 100644 vendor/filament/support/src/Concerns/HasVerticalAlignment.php delete mode 100644 vendor/filament/support/src/Concerns/Macroable.php delete mode 100644 vendor/filament/support/src/Concerns/ResolvesDynamicLivewireProperties.php delete mode 100644 vendor/filament/support/src/Contracts/HasColor.php delete mode 100644 vendor/filament/support/src/Contracts/HasDescription.php delete mode 100644 vendor/filament/support/src/Contracts/HasIcon.php delete mode 100644 vendor/filament/support/src/Contracts/HasLabel.php delete mode 100644 vendor/filament/support/src/Contracts/TranslatableContentDriver.php delete mode 100644 vendor/filament/support/src/Enums/ActionSize.php delete mode 100644 vendor/filament/support/src/Enums/Alignment.php delete mode 100644 vendor/filament/support/src/Enums/FontFamily.php delete mode 100644 vendor/filament/support/src/Enums/FontWeight.php delete mode 100644 vendor/filament/support/src/Enums/IconPosition.php delete mode 100644 vendor/filament/support/src/Enums/IconSize.php delete mode 100644 vendor/filament/support/src/Enums/MaxWidth.php delete mode 100644 vendor/filament/support/src/Enums/VerticalAlignment.php delete mode 100644 vendor/filament/support/src/Events/FilamentUpgraded.php delete mode 100644 vendor/filament/support/src/Exceptions/Cancel.php delete mode 100644 vendor/filament/support/src/Exceptions/Halt.php delete mode 100644 vendor/filament/support/src/Facades/FilamentAsset.php delete mode 100644 vendor/filament/support/src/Facades/FilamentColor.php delete mode 100644 vendor/filament/support/src/Facades/FilamentIcon.php delete mode 100644 vendor/filament/support/src/Facades/FilamentView.php delete mode 100644 vendor/filament/support/src/Icons/IconManager.php delete mode 100644 vendor/filament/support/src/Markdown.php delete mode 100644 vendor/filament/support/src/RawJs.php delete mode 100644 vendor/filament/support/src/Services/RelationshipJoiner.php delete mode 100644 vendor/filament/support/src/SupportServiceProvider.php delete mode 100644 vendor/filament/support/src/View/Components/Modal.php delete mode 100644 vendor/filament/support/src/View/ViewManager.php delete mode 100644 vendor/filament/support/src/helpers.php delete mode 100644 vendor/filament/support/stubs/DefaultPanelProvider.stub delete mode 100644 vendor/filament/support/stubs/PanelProvider.stub delete mode 100644 vendor/filament/support/stubs/scaffolding/postcss.config.js delete mode 100644 vendor/filament/support/stubs/scaffolding/resources/css/app.css delete mode 100644 vendor/filament/support/stubs/scaffolding/resources/js/app.js delete mode 100644 vendor/filament/support/stubs/scaffolding/resources/views/components/layouts/app.blade.php delete mode 100644 vendor/filament/support/stubs/scaffolding/tailwind.config.js delete mode 100644 vendor/filament/support/stubs/scaffolding/vite.config.js delete mode 100644 vendor/filament/support/tailwind.config.js delete mode 100644 vendor/filament/support/tailwind.config.preset.js delete mode 100644 vendor/filament/tables/.stubs.php delete mode 100644 vendor/filament/tables/composer.json delete mode 100644 vendor/filament/tables/dist/components/table.js delete mode 100644 vendor/filament/tables/dist/index.js delete mode 100644 vendor/filament/tables/docs/01-installation.md delete mode 100644 vendor/filament/tables/docs/02-getting-started.md delete mode 100644 vendor/filament/tables/docs/03-columns/01-getting-started.md delete mode 100644 vendor/filament/tables/docs/03-columns/02-text.md delete mode 100644 vendor/filament/tables/docs/03-columns/03-icon.md delete mode 100644 vendor/filament/tables/docs/03-columns/04-image.md delete mode 100644 vendor/filament/tables/docs/03-columns/05-color.md delete mode 100644 vendor/filament/tables/docs/03-columns/06-select.md delete mode 100644 vendor/filament/tables/docs/03-columns/07-toggle.md delete mode 100644 vendor/filament/tables/docs/03-columns/08-text-input.md delete mode 100644 vendor/filament/tables/docs/03-columns/09-checkbox.md delete mode 100644 vendor/filament/tables/docs/03-columns/10-custom.md delete mode 100644 vendor/filament/tables/docs/03-columns/11-relationships.md delete mode 100644 vendor/filament/tables/docs/03-columns/12-advanced.md delete mode 100644 vendor/filament/tables/docs/04-filters/01-getting-started.md delete mode 100644 vendor/filament/tables/docs/04-filters/02-select.md delete mode 100644 vendor/filament/tables/docs/04-filters/03-ternary.md delete mode 100644 vendor/filament/tables/docs/04-filters/04-query-builder.md delete mode 100644 vendor/filament/tables/docs/04-filters/05-custom.md delete mode 100644 vendor/filament/tables/docs/04-filters/06-layout.md delete mode 100644 vendor/filament/tables/docs/05-actions.md delete mode 100644 vendor/filament/tables/docs/06-layout.md delete mode 100644 vendor/filament/tables/docs/07-summaries.md delete mode 100644 vendor/filament/tables/docs/08-grouping.md delete mode 100644 vendor/filament/tables/docs/09-empty-state.md delete mode 100644 vendor/filament/tables/docs/10-advanced.md delete mode 100644 vendor/filament/tables/docs/11-adding-a-table-to-a-livewire-component.md delete mode 100644 vendor/filament/tables/docs/12-testing.md delete mode 100644 vendor/filament/tables/docs/13-upgrade-guide.md delete mode 100644 vendor/filament/tables/resources/js/components/table.js delete mode 100644 vendor/filament/tables/resources/js/index.js delete mode 100644 vendor/filament/tables/resources/lang/ar/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/ar/table.php delete mode 100644 vendor/filament/tables/resources/lang/az/table.php delete mode 100644 vendor/filament/tables/resources/lang/bn/table.php delete mode 100644 vendor/filament/tables/resources/lang/bs/table.php delete mode 100644 vendor/filament/tables/resources/lang/ca/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/ca/table.php delete mode 100644 vendor/filament/tables/resources/lang/ckb/table.php delete mode 100644 vendor/filament/tables/resources/lang/cs/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/cs/table.php delete mode 100644 vendor/filament/tables/resources/lang/cy/table.php delete mode 100644 vendor/filament/tables/resources/lang/da/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/da/table.php delete mode 100644 vendor/filament/tables/resources/lang/de/table.php delete mode 100644 vendor/filament/tables/resources/lang/el/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/el/tables.php delete mode 100644 vendor/filament/tables/resources/lang/en/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/en/table.php delete mode 100644 vendor/filament/tables/resources/lang/es/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/es/table.php delete mode 100644 vendor/filament/tables/resources/lang/eu/table.php delete mode 100644 vendor/filament/tables/resources/lang/fa/table.php delete mode 100644 vendor/filament/tables/resources/lang/fi/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/fi/table.php delete mode 100644 vendor/filament/tables/resources/lang/fr/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/fr/table.php delete mode 100644 vendor/filament/tables/resources/lang/he/table.php delete mode 100644 vendor/filament/tables/resources/lang/hi/table.php delete mode 100644 vendor/filament/tables/resources/lang/hr/table.php delete mode 100644 vendor/filament/tables/resources/lang/hu/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/hu/table.php delete mode 100644 vendor/filament/tables/resources/lang/hy/table.php delete mode 100644 vendor/filament/tables/resources/lang/id/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/id/table.php delete mode 100644 vendor/filament/tables/resources/lang/it/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/it/table.php delete mode 100644 vendor/filament/tables/resources/lang/ja/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/ja/table.php delete mode 100644 vendor/filament/tables/resources/lang/ka/table.php delete mode 100644 vendor/filament/tables/resources/lang/km/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/km/table.php delete mode 100644 vendor/filament/tables/resources/lang/ko/table.php delete mode 100644 vendor/filament/tables/resources/lang/ku/table.php delete mode 100644 vendor/filament/tables/resources/lang/lt/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/lt/table.php delete mode 100644 vendor/filament/tables/resources/lang/lv/table.php delete mode 100644 vendor/filament/tables/resources/lang/mn/table.php delete mode 100644 vendor/filament/tables/resources/lang/ms/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/ms/table.php delete mode 100644 vendor/filament/tables/resources/lang/nl/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/nl/table.php delete mode 100644 vendor/filament/tables/resources/lang/no/table.php delete mode 100644 vendor/filament/tables/resources/lang/np/table.php delete mode 100644 vendor/filament/tables/resources/lang/pl/table.php delete mode 100644 vendor/filament/tables/resources/lang/pt_BR/table.php delete mode 100644 vendor/filament/tables/resources/lang/pt_PT/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/pt_PT/table.php delete mode 100644 vendor/filament/tables/resources/lang/ro/table.php delete mode 100644 vendor/filament/tables/resources/lang/ru/table.php delete mode 100644 vendor/filament/tables/resources/lang/sk/table.php delete mode 100644 vendor/filament/tables/resources/lang/sq/table.php delete mode 100644 vendor/filament/tables/resources/lang/sv/table.php delete mode 100644 vendor/filament/tables/resources/lang/sw/table.php delete mode 100644 vendor/filament/tables/resources/lang/tr/table.php delete mode 100644 vendor/filament/tables/resources/lang/uk/table.php delete mode 100644 vendor/filament/tables/resources/lang/uz/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/uz/table.php delete mode 100644 vendor/filament/tables/resources/lang/vi/filters/query-builder.php delete mode 100644 vendor/filament/tables/resources/lang/vi/table.php delete mode 100644 vendor/filament/tables/resources/lang/zh_CN/table.php delete mode 100644 vendor/filament/tables/resources/lang/zh_TW/table.php delete mode 100644 vendor/filament/tables/resources/views/columns/checkbox-column.blade.php delete mode 100644 vendor/filament/tables/resources/views/columns/color-column.blade.php delete mode 100644 vendor/filament/tables/resources/views/columns/icon-column.blade.php delete mode 100644 vendor/filament/tables/resources/views/columns/image-column.blade.php delete mode 100644 vendor/filament/tables/resources/views/columns/layout/grid.blade.php delete mode 100644 vendor/filament/tables/resources/views/columns/layout/panel.blade.php delete mode 100644 vendor/filament/tables/resources/views/columns/layout/split.blade.php delete mode 100644 vendor/filament/tables/resources/views/columns/layout/stack.blade.php delete mode 100644 vendor/filament/tables/resources/views/columns/select-column.blade.php delete mode 100644 vendor/filament/tables/resources/views/columns/summaries/icon-count.blade.php delete mode 100644 vendor/filament/tables/resources/views/columns/summaries/range.blade.php delete mode 100644 vendor/filament/tables/resources/views/columns/summaries/text.blade.php delete mode 100644 vendor/filament/tables/resources/views/columns/summaries/values.blade.php delete mode 100644 vendor/filament/tables/resources/views/columns/text-column.blade.php delete mode 100644 vendor/filament/tables/resources/views/columns/text-input-column.blade.php delete mode 100644 vendor/filament/tables/resources/views/columns/toggle-column.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/actions.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/actions/cell.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/cell.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/column-toggle/dropdown.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/columns/column.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/columns/layout.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/columns/placeholder.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/container.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/empty-state/description.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/empty-state/heading.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/empty-state/index.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/filters/dialog.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/filters/index.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/filters/indicators.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/group/header.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/groups.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/header-cell.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/header.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/reorder/cell.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/reorder/handle.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/reorder/indicator.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/row.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/search-field.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/selection/cell.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/selection/checkbox.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/selection/group-cell.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/selection/group-checkbox.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/selection/indicator.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/summary/header-cell.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/summary/index.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/summary/row.blade.php delete mode 100644 vendor/filament/tables/resources/views/components/table.blade.php delete mode 100644 vendor/filament/tables/resources/views/index.blade.php delete mode 100644 vendor/filament/tables/src/Actions/Action.php delete mode 100644 vendor/filament/tables/src/Actions/ActionGroup.php delete mode 100644 vendor/filament/tables/src/Actions/AssociateAction.php delete mode 100644 vendor/filament/tables/src/Actions/AttachAction.php delete mode 100644 vendor/filament/tables/src/Actions/BulkAction.php delete mode 100644 vendor/filament/tables/src/Actions/BulkActionGroup.php delete mode 100644 vendor/filament/tables/src/Actions/ButtonAction.php delete mode 100644 vendor/filament/tables/src/Actions/Concerns/BelongsToTable.php delete mode 100644 vendor/filament/tables/src/Actions/Concerns/CanAccessSelectedRecords.php delete mode 100644 vendor/filament/tables/src/Actions/Concerns/CanDeselectRecordsAfterCompletion.php delete mode 100644 vendor/filament/tables/src/Actions/Concerns/CanFetchSelectedRecords.php delete mode 100644 vendor/filament/tables/src/Actions/Concerns/InteractsWithRecords.php delete mode 100644 vendor/filament/tables/src/Actions/Contracts/HasTable.php delete mode 100644 vendor/filament/tables/src/Actions/CreateAction.php delete mode 100644 vendor/filament/tables/src/Actions/DeleteAction.php delete mode 100644 vendor/filament/tables/src/Actions/DeleteBulkAction.php delete mode 100644 vendor/filament/tables/src/Actions/DetachAction.php delete mode 100644 vendor/filament/tables/src/Actions/DetachBulkAction.php delete mode 100644 vendor/filament/tables/src/Actions/DissociateAction.php delete mode 100644 vendor/filament/tables/src/Actions/DissociateBulkAction.php delete mode 100644 vendor/filament/tables/src/Actions/EditAction.php delete mode 100644 vendor/filament/tables/src/Actions/ExportAction.php delete mode 100644 vendor/filament/tables/src/Actions/ExportBulkAction.php delete mode 100644 vendor/filament/tables/src/Actions/ForceDeleteAction.php delete mode 100644 vendor/filament/tables/src/Actions/ForceDeleteBulkAction.php delete mode 100644 vendor/filament/tables/src/Actions/HeaderActionsPosition.php delete mode 100644 vendor/filament/tables/src/Actions/IconButtonAction.php delete mode 100644 vendor/filament/tables/src/Actions/ImportAction.php delete mode 100644 vendor/filament/tables/src/Actions/LinkAction.php delete mode 100644 vendor/filament/tables/src/Actions/Modal/Actions/Action.php delete mode 100644 vendor/filament/tables/src/Actions/Modal/Actions/ButtonAction.php delete mode 100644 vendor/filament/tables/src/Actions/ReplicateAction.php delete mode 100644 vendor/filament/tables/src/Actions/RestoreAction.php delete mode 100644 vendor/filament/tables/src/Actions/RestoreBulkAction.php delete mode 100644 vendor/filament/tables/src/Actions/SelectAction.php delete mode 100644 vendor/filament/tables/src/Actions/ViewAction.php delete mode 100644 vendor/filament/tables/src/Columns/BadgeColumn.php delete mode 100644 vendor/filament/tables/src/Columns/BooleanColumn.php delete mode 100644 vendor/filament/tables/src/Columns/CheckboxColumn.php delete mode 100644 vendor/filament/tables/src/Columns/ColorColumn.php delete mode 100644 vendor/filament/tables/src/Columns/Column.php delete mode 100644 vendor/filament/tables/src/Columns/ColumnGroup.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/BelongsToGroup.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/BelongsToLayout.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/BelongsToTable.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/CanBeCopied.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/CanBeDisabled.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/CanBeHidden.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/CanBeHiddenResponsively.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/CanBeInline.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/CanBeSearchable.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/CanBeSortable.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/CanBeSummarized.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/CanBeToggled.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/CanBeValidated.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/CanCallAction.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/CanFormatState.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/CanOpenUrl.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/CanSpanColumns.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/CanUpdateState.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/CanWrap.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/CanWrapHeader.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/HasColor.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/HasDescription.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/HasExtraAttributes.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/HasExtraCellAttributes.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/HasExtraHeaderAttributes.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/HasFontFamily.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/HasIcon.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/HasIconColor.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/HasLabel.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/HasName.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/HasRecord.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/HasRowLoopObject.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/HasSpace.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/HasTooltip.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/HasWeight.php delete mode 100644 vendor/filament/tables/src/Columns/Concerns/InteractsWithTableQuery.php delete mode 100644 vendor/filament/tables/src/Columns/Contracts/Editable.php delete mode 100644 vendor/filament/tables/src/Columns/IconColumn.php delete mode 100644 vendor/filament/tables/src/Columns/IconColumn/IconColumnSize.php delete mode 100644 vendor/filament/tables/src/Columns/ImageColumn.php delete mode 100644 vendor/filament/tables/src/Columns/Layout/Component.php delete mode 100644 vendor/filament/tables/src/Columns/Layout/Grid.php delete mode 100644 vendor/filament/tables/src/Columns/Layout/Panel.php delete mode 100644 vendor/filament/tables/src/Columns/Layout/Split.php delete mode 100644 vendor/filament/tables/src/Columns/Layout/Stack.php delete mode 100644 vendor/filament/tables/src/Columns/Layout/View.php delete mode 100644 vendor/filament/tables/src/Columns/SelectColumn.php delete mode 100644 vendor/filament/tables/src/Columns/Summarizers/Average.php delete mode 100644 vendor/filament/tables/src/Columns/Summarizers/Concerns/BelongsToColumn.php delete mode 100644 vendor/filament/tables/src/Columns/Summarizers/Concerns/CanFormatState.php delete mode 100644 vendor/filament/tables/src/Columns/Summarizers/Concerns/HasLabel.php delete mode 100644 vendor/filament/tables/src/Columns/Summarizers/Concerns/InteractsWithTableQuery.php delete mode 100644 vendor/filament/tables/src/Columns/Summarizers/Count.php delete mode 100644 vendor/filament/tables/src/Columns/Summarizers/Range.php delete mode 100644 vendor/filament/tables/src/Columns/Summarizers/Sum.php delete mode 100644 vendor/filament/tables/src/Columns/Summarizers/Summarizer.php delete mode 100644 vendor/filament/tables/src/Columns/Summarizers/Values.php delete mode 100644 vendor/filament/tables/src/Columns/TagsColumn.php delete mode 100644 vendor/filament/tables/src/Columns/TextColumn.php delete mode 100644 vendor/filament/tables/src/Columns/TextColumn/TextColumnSize.php delete mode 100644 vendor/filament/tables/src/Columns/TextInputColumn.php delete mode 100644 vendor/filament/tables/src/Columns/ToggleColumn.php delete mode 100644 vendor/filament/tables/src/Columns/ViewColumn.php delete mode 100644 vendor/filament/tables/src/Commands/Aliases/MakeColumnCommand.php delete mode 100644 vendor/filament/tables/src/Commands/Concerns/CanGenerateTables.php delete mode 100644 vendor/filament/tables/src/Commands/MakeColumnCommand.php delete mode 100644 vendor/filament/tables/src/Commands/MakeTableCommand.php delete mode 100644 vendor/filament/tables/src/Concerns/CanBeStriped.php delete mode 100644 vendor/filament/tables/src/Concerns/CanDeferLoading.php delete mode 100644 vendor/filament/tables/src/Concerns/CanGroupRecords.php delete mode 100644 vendor/filament/tables/src/Concerns/CanPaginateRecords.php delete mode 100644 vendor/filament/tables/src/Concerns/CanPollRecords.php delete mode 100644 vendor/filament/tables/src/Concerns/CanReorderRecords.php delete mode 100644 vendor/filament/tables/src/Concerns/CanSearchRecords.php delete mode 100644 vendor/filament/tables/src/Concerns/CanSortRecords.php delete mode 100644 vendor/filament/tables/src/Concerns/CanSummarizeRecords.php delete mode 100644 vendor/filament/tables/src/Concerns/CanToggleColumns.php delete mode 100644 vendor/filament/tables/src/Concerns/HasActions.php delete mode 100644 vendor/filament/tables/src/Concerns/HasBulkActions.php delete mode 100644 vendor/filament/tables/src/Concerns/HasColumns.php delete mode 100644 vendor/filament/tables/src/Concerns/HasContent.php delete mode 100644 vendor/filament/tables/src/Concerns/HasEmptyState.php delete mode 100644 vendor/filament/tables/src/Concerns/HasFilters.php delete mode 100644 vendor/filament/tables/src/Concerns/HasHeader.php delete mode 100644 vendor/filament/tables/src/Concerns/HasRecordAction.php delete mode 100644 vendor/filament/tables/src/Concerns/HasRecordClasses.php delete mode 100644 vendor/filament/tables/src/Concerns/HasRecordUrl.php delete mode 100644 vendor/filament/tables/src/Concerns/HasRecords.php delete mode 100644 vendor/filament/tables/src/Concerns/InteractsWithTable.php delete mode 100644 vendor/filament/tables/src/Contracts/HasTable.php delete mode 100644 vendor/filament/tables/src/Enums/ActionsPosition.php delete mode 100644 vendor/filament/tables/src/Enums/FiltersLayout.php delete mode 100644 vendor/filament/tables/src/Enums/RecordCheckboxPosition.php delete mode 100644 vendor/filament/tables/src/Filters/BaseFilter.php delete mode 100644 vendor/filament/tables/src/Filters/Concerns/BelongsToTable.php delete mode 100644 vendor/filament/tables/src/Filters/Concerns/CanBeHidden.php delete mode 100644 vendor/filament/tables/src/Filters/Concerns/CanResetState.php delete mode 100644 vendor/filament/tables/src/Filters/Concerns/CanSpanColumns.php delete mode 100644 vendor/filament/tables/src/Filters/Concerns/HasColumns.php delete mode 100644 vendor/filament/tables/src/Filters/Concerns/HasDefaultState.php delete mode 100644 vendor/filament/tables/src/Filters/Concerns/HasFormSchema.php delete mode 100644 vendor/filament/tables/src/Filters/Concerns/HasIndicators.php delete mode 100644 vendor/filament/tables/src/Filters/Concerns/HasLabel.php delete mode 100644 vendor/filament/tables/src/Filters/Concerns/HasName.php delete mode 100644 vendor/filament/tables/src/Filters/Concerns/HasOptions.php delete mode 100644 vendor/filament/tables/src/Filters/Concerns/HasPlaceholder.php delete mode 100644 vendor/filament/tables/src/Filters/Concerns/HasRelationship.php delete mode 100644 vendor/filament/tables/src/Filters/Concerns/InteractsWithTableQuery.php delete mode 100644 vendor/filament/tables/src/Filters/Filter.php delete mode 100644 vendor/filament/tables/src/Filters/Indicator.php delete mode 100644 vendor/filament/tables/src/Filters/MultiSelectFilter.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Concerns/HasConstraints.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/BooleanConstraint.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/BooleanConstraint/Operators/IsTrueOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/Concerns/CanBeNullable.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/Concerns/HasLabel.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/Concerns/HasName.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/Concerns/HasOperators.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/Constraint.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/DateConstraint.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/DateConstraint/Operators/IsAfterOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/DateConstraint/Operators/IsBeforeOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/DateConstraint/Operators/IsDateOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/DateConstraint/Operators/IsMonthOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/DateConstraint/Operators/IsYearOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/NumberConstraint.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/NumberConstraint/Operators/Concerns/CanAggregateRelationships.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/NumberConstraint/Operators/EqualsOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/NumberConstraint/Operators/IsMaxOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/NumberConstraint/Operators/IsMinOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/Operators/Concerns/CanBeHidden.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/Operators/IsFilledOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/Operators/Operator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/RelationshipConstraint.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/RelationshipConstraint/Operators/EqualsOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/RelationshipConstraint/Operators/HasMaxOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/RelationshipConstraint/Operators/HasMinOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/RelationshipConstraint/Operators/IsEmptyOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/RelationshipConstraint/Operators/IsRelatedToOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/SelectConstraint.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/SelectConstraint/Operators/IsOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/TextConstraint.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/TextConstraint/Operators/ContainsOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/TextConstraint/Operators/EndsWithOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/TextConstraint/Operators/EqualsOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Constraints/TextConstraint/Operators/StartsWithOperator.php delete mode 100644 vendor/filament/tables/src/Filters/QueryBuilder/Forms/Components/RuleBuilder.php delete mode 100644 vendor/filament/tables/src/Filters/SelectFilter.php delete mode 100644 vendor/filament/tables/src/Filters/TernaryFilter.php delete mode 100644 vendor/filament/tables/src/Filters/TrashedFilter.php delete mode 100644 vendor/filament/tables/src/Grouping/Group.php delete mode 100644 vendor/filament/tables/src/Table.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/BelongsToLivewire.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/CanBeStriped.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/CanDeferLoading.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/CanGroupRecords.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/CanPaginateRecords.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/CanPollRecords.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/CanReorderRecords.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/CanSearchRecords.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/CanSortRecords.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/CanSummarizeRecords.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/CanToggleColumns.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/HasActions.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/HasBulkActions.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/HasColumns.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/HasContent.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/HasEmptyState.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/HasFilterIndicators.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/HasFilters.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/HasHeader.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/HasHeaderActions.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/HasQuery.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/HasQueryStringIdentifier.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/HasRecordAction.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/HasRecordClasses.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/HasRecordUrl.php delete mode 100644 vendor/filament/tables/src/Table/Concerns/HasRecords.php delete mode 100644 vendor/filament/tables/src/TableComponent.php delete mode 100644 vendor/filament/tables/src/TablesServiceProvider.php delete mode 100644 vendor/filament/tables/src/Testing/TestsActions.php delete mode 100644 vendor/filament/tables/src/Testing/TestsBulkActions.php delete mode 100644 vendor/filament/tables/src/Testing/TestsColumns.php delete mode 100644 vendor/filament/tables/src/Testing/TestsFilters.php delete mode 100644 vendor/filament/tables/src/Testing/TestsRecords.php delete mode 100644 vendor/filament/tables/src/Testing/TestsSummaries.php delete mode 100644 vendor/filament/tables/stubs/Column.stub delete mode 100644 vendor/filament/tables/stubs/ColumnView.stub delete mode 100644 vendor/filament/tables/stubs/Table.stub delete mode 100644 vendor/filament/tables/stubs/TableView.stub delete mode 100644 vendor/filament/widgets/composer.json delete mode 100644 vendor/filament/widgets/dist/components/chart.js delete mode 100644 vendor/filament/widgets/dist/components/stats-overview/stat/chart.js delete mode 100644 vendor/filament/widgets/docs/01-installation.md delete mode 100644 vendor/filament/widgets/docs/02-stats-overview.md delete mode 100644 vendor/filament/widgets/docs/03-charts.md delete mode 100644 vendor/filament/widgets/docs/04-tables.md delete mode 100644 vendor/filament/widgets/docs/05-adding-a-widget-to-a-blade-view.md delete mode 100644 vendor/filament/widgets/resources/js/components/chart.js delete mode 100644 vendor/filament/widgets/resources/js/components/stats-overview/stat/chart.js delete mode 100644 vendor/filament/widgets/resources/views/chart-widget.blade.php delete mode 100644 vendor/filament/widgets/resources/views/components/widget.blade.php delete mode 100644 vendor/filament/widgets/resources/views/components/widgets.blade.php delete mode 100644 vendor/filament/widgets/resources/views/stats-overview-widget.blade.php delete mode 100644 vendor/filament/widgets/resources/views/stats-overview-widget/stat.blade.php delete mode 100644 vendor/filament/widgets/resources/views/table-widget.blade.php delete mode 100644 vendor/filament/widgets/src/BarChartWidget.php delete mode 100644 vendor/filament/widgets/src/BubbleChartWidget.php delete mode 100644 vendor/filament/widgets/src/ChartWidget.php delete mode 100644 vendor/filament/widgets/src/Commands/Aliases/MakeWidgetCommand.php delete mode 100644 vendor/filament/widgets/src/Commands/MakeWidgetCommand.php delete mode 100644 vendor/filament/widgets/src/Concerns/CanPoll.php delete mode 100644 vendor/filament/widgets/src/DoughnutChartWidget.php delete mode 100644 vendor/filament/widgets/src/LineChartWidget.php delete mode 100644 vendor/filament/widgets/src/PieChartWidget.php delete mode 100644 vendor/filament/widgets/src/PolarAreaChartWidget.php delete mode 100644 vendor/filament/widgets/src/RadarChartWidget.php delete mode 100644 vendor/filament/widgets/src/ScatterChartWidget.php delete mode 100644 vendor/filament/widgets/src/StatsOverviewWidget.php delete mode 100644 vendor/filament/widgets/src/StatsOverviewWidget/Card.php delete mode 100644 vendor/filament/widgets/src/StatsOverviewWidget/Stat.php delete mode 100644 vendor/filament/widgets/src/TableWidget.php delete mode 100644 vendor/filament/widgets/src/Widget.php delete mode 100644 vendor/filament/widgets/src/WidgetConfiguration.php delete mode 100644 vendor/filament/widgets/src/WidgetsServiceProvider.php delete mode 100644 vendor/filament/widgets/stubs/ChartWidget.stub delete mode 100644 vendor/filament/widgets/stubs/StatsOverviewWidget.stub delete mode 100644 vendor/filament/widgets/stubs/TableWidget.stub delete mode 100644 vendor/filament/widgets/stubs/Widget.stub delete mode 100644 vendor/filament/widgets/stubs/WidgetView.stub delete mode 100644 vendor/fruitcake/php-cors/LICENSE delete mode 100644 vendor/fruitcake/php-cors/README.md delete mode 100644 vendor/fruitcake/php-cors/composer.json delete mode 100644 vendor/fruitcake/php-cors/src/CorsService.php delete mode 100644 vendor/fruitcake/php-cors/src/Exceptions/InvalidOptionException.php delete mode 100644 vendor/graham-campbell/result-type/LICENSE delete mode 100644 vendor/graham-campbell/result-type/composer.json delete mode 100644 vendor/graham-campbell/result-type/src/Error.php delete mode 100644 vendor/graham-campbell/result-type/src/Result.php delete mode 100644 vendor/graham-campbell/result-type/src/Success.php delete mode 100644 vendor/guzzlehttp/uri-template/CHANGELOG.md delete mode 100644 vendor/guzzlehttp/uri-template/LICENSE delete mode 100644 vendor/guzzlehttp/uri-template/README.md delete mode 100644 vendor/guzzlehttp/uri-template/composer.json delete mode 100644 vendor/guzzlehttp/uri-template/src/UriTemplate.php delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/.github/workflows/ci.yaml delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/.php_cs delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/CHANGELOG.md delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/CONTRIBUTING.md delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/LICENSE.md delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/README.md delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/composer.json delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/config/config.php delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/screenshots/eloquent-power-joins.jpg delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/screenshots/mysql-cpu-graph.png delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/src/EloquentJoins.php delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/src/FakeJoinCallback.php delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/src/JoinsHelper.php delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/src/Mixins/JoinRelationship.php delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/src/Mixins/QueryBuilderExtraMethods.php delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/src/Mixins/QueryRelationshipExistence.php delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/src/Mixins/RelationshipsExtraMethods.php delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/src/PowerJoinClause.php delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/src/PowerJoins.php delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/src/PowerJoinsServiceProvider.php delete mode 100644 vendor/kirschbaum-development/eloquent-power-joins/src/StaticCache.php delete mode 100644 vendor/laravel/framework/CHANGELOG.md delete mode 100644 vendor/laravel/framework/LICENSE.md delete mode 100644 vendor/laravel/framework/README.md delete mode 100644 vendor/laravel/framework/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Access/AuthorizationException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Access/Events/GateEvaluated.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Access/Gate.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Access/HandlesAuthorization.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Access/Response.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Auth/AuthManager.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Auth/AuthServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Authenticatable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/AuthenticationException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Console/ClearResetsCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Console/stubs/make/views/layouts/app.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/CreatesUserProviders.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Auth/DatabaseUserProvider.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Events/Attempting.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Events/Authenticated.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Events/CurrentDeviceLogout.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Events/Failed.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Events/Lockout.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Events/Login.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Events/Logout.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Events/OtherDeviceLogout.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Events/PasswordReset.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Events/Registered.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Events/Validated.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Events/Verified.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Auth/GenericUser.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/GuardHelpers.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Listeners/SendEmailVerificationNotification.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Middleware/AuthenticateWithBasicAuth.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authorize.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Middleware/EnsureEmailIsVerified.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Middleware/RequirePassword.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/MustVerifyEmail.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Notifications/VerifyEmail.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Passwords/CanResetPassword.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Auth/Passwords/DatabaseTokenRepository.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBroker.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordBrokerManager.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Auth/Passwords/PasswordResetServiceProvider.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Auth/Passwords/TokenRepositoryInterface.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/Recaller.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/RequestGuard.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/TokenGuard.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Auth/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastController.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastEvent.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastManager.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/BroadcastServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/AblyBroadcaster.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/Broadcaster.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/LogBroadcaster.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/NullBroadcaster.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/PusherBroadcaster.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/RedisBroadcaster.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/Broadcasters/UsePusherChannelConventions.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/Channel.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/EncryptedPrivateChannel.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/InteractsWithBroadcasting.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/InteractsWithSockets.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/PendingBroadcast.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/PresenceChannel.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/PrivateChannel.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/UniqueBroadcastEvent.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Broadcasting/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Bus/Batch.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Bus/BatchFactory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Bus/BatchRepository.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Bus/Batchable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Bus/BusServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Bus/ChainedBatch.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Bus/DatabaseBatchRepository.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Bus/DynamoBatchRepository.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Bus/Events/BatchDispatched.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Bus/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Bus/PendingBatch.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Bus/PrunableBatchRepository.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Bus/Queueable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Bus/UniqueLock.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Bus/UpdatedBatchJobCounts.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Bus/composer.json delete mode 100755 vendor/laravel/framework/src/Illuminate/Cache/ApcStore.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Cache/ApcWrapper.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/ArrayLock.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/ArrayStore.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/CacheLock.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Cache/CacheManager.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Cache/CacheServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/Console/CacheTableCommand.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Cache/Console/ClearCommand.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Cache/Console/ForgetCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/Console/PruneStaleTagsCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/Console/stubs/cache.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/DatabaseLock.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Cache/DatabaseStore.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/DynamoDbLock.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/DynamoDbStore.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/Events/CacheEvent.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/Events/CacheHit.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/Events/CacheMissed.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/Events/KeyForgotten.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/Events/KeyWritten.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/FileLock.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Cache/FileStore.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/HasCacheLock.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/Lock.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/LuaScripts.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Cache/MemcachedConnector.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/MemcachedLock.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Cache/MemcachedStore.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/NoLock.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Cache/NullStore.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/PhpRedisLock.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/RateLimiter.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/RateLimiting/GlobalLimit.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/RateLimiting/Limit.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/RateLimiting/Unlimited.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/RedisLock.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Cache/RedisStore.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/RedisTagSet.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/RedisTaggedCache.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Cache/Repository.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/RetrievesMultipleKeys.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/TagSet.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/TaggableStore.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cache/TaggedCache.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Cache/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Collections/Arr.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Collections/Collection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Collections/Enumerable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Collections/HigherOrderCollectionProxy.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Collections/ItemNotFoundException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Collections/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Collections/LazyCollection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Collections/MultipleItemsFoundException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Collections/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Collections/helpers.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Conditionable/HigherOrderWhenProxy.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Conditionable/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Conditionable/Traits/Conditionable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Conditionable/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Config/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Config/Repository.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Config/composer.json delete mode 100755 vendor/laravel/framework/src/Illuminate/Console/Application.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/BufferedConsoleOutput.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/CacheCommandMutex.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Console/Command.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/CommandMutex.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Concerns/CallsCommands.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Concerns/ConfiguresPrompts.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Concerns/CreatesMatchingTest.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Concerns/HasParameters.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Concerns/InteractsWithIO.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Concerns/InteractsWithSignals.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Concerns/PromptsForMissingInput.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/ConfirmableTrait.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/ContainerCommandLoader.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Contracts/NewLineAware.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Events/ArtisanStarting.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Events/CommandFinished.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Events/CommandStarting.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Events/ScheduledBackgroundTaskFinished.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Events/ScheduledTaskFailed.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Events/ScheduledTaskFinished.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Events/ScheduledTaskSkipped.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Events/ScheduledTaskStarting.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/GeneratorCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/MigrationGeneratorCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/OutputStyle.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Parser.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/PromptValidationException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/QuestionHelper.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/CacheAware.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/CacheEventMutex.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/CacheSchedulingMutex.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/CallbackEvent.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/CommandBuilder.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/Event.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/EventMutex.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/ManagesFrequencies.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/Schedule.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleClearCacheCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleFinishCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleInterruptCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleListCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleRunCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleTestCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/ScheduleWorkCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Scheduling/SchedulingMutex.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/Signals.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/Alert.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/Ask.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/AskWithCompletion.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/BulletList.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/Choice.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/Component.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/Confirm.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/Error.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/Factory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/Info.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/Line.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/Mutators/EnsureDynamicContentIsHighlighted.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/Mutators/EnsureNoPunctuation.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/Mutators/EnsurePunctuation.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/Mutators/EnsureRelativePaths.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/Secret.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/TwoColumnDetail.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/View/Components/Warn.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Console/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/resources/views/components/alert.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/resources/views/components/bullet-list.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/resources/views/components/line.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Console/resources/views/components/two-column-detail.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Container/Container.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Container/ContextualBindingBuilder.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Container/EntryNotFoundException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Container/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Container/RewindableGenerator.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Container/Util.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Container/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Auth/Access/Authorizable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Auth/Access/Gate.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Auth/Authenticatable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Auth/CanResetPassword.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Auth/Factory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Auth/Guard.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Auth/Middleware/AuthenticatesRequests.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Auth/MustVerifyEmail.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Auth/PasswordBroker.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Auth/PasswordBrokerFactory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Auth/StatefulGuard.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Auth/SupportsBasicAuth.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Auth/UserProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Broadcasting/Broadcaster.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Broadcasting/Factory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Broadcasting/HasBroadcastChannel.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Broadcasting/ShouldBeUnique.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Broadcasting/ShouldBroadcast.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Broadcasting/ShouldBroadcastNow.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Bus/Dispatcher.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Bus/QueueingDispatcher.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Cache/Factory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Cache/Lock.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Cache/LockProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Cache/LockTimeoutException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Cache/Repository.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Cache/Store.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Config/Repository.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Console/Application.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Console/Isolatable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Console/Kernel.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Console/PromptsForMissingInput.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Container/BindingResolutionException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Container/CircularDependencyException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Container/Container.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Container/ContextualBindingBuilder.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Cookie/Factory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Cookie/QueueingFactory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/Builder.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/Castable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/CastsAttributes.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/CastsInboundAttributes.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/DeviatesCastableAttributes.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/SerializesCastableAttributes.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Database/Eloquent/SupportsPartialRelations.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Database/Events/MigrationEvent.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Database/ModelIdentifier.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Database/Query/Builder.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Database/Query/ConditionExpression.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Database/Query/Expression.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Debug/ExceptionHandler.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Encryption/DecryptException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Encryption/EncryptException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Encryption/Encrypter.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Encryption/StringEncrypter.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Events/Dispatcher.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Events/ShouldDispatchAfterCommit.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Events/ShouldHandleEventsAfterCommit.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Filesystem/Cloud.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Filesystem/Factory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Filesystem/FileNotFoundException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Filesystem/Filesystem.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Filesystem/LockTimeoutException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Foundation/Application.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Foundation/CachesConfiguration.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Foundation/CachesRoutes.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Foundation/ExceptionRenderer.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Foundation/MaintenanceMode.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Hashing/Hasher.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Http/Kernel.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Mail/Attachable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Mail/Factory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Mail/MailQueue.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Mail/Mailable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Mail/Mailer.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Notifications/Dispatcher.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Notifications/Factory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Pagination/CursorPaginator.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Pagination/LengthAwarePaginator.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Pagination/Paginator.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Pipeline/Hub.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Pipeline/Pipeline.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Process/InvokedProcess.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Process/ProcessResult.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Queue/ClearableQueue.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Queue/EntityNotFoundException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Queue/EntityResolver.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Queue/Factory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Queue/Job.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Queue/Monitor.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Queue/Queue.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Queue/QueueableCollection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Queue/QueueableEntity.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Queue/ShouldBeEncrypted.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Queue/ShouldBeUnique.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Queue/ShouldBeUniqueUntilProcessing.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Queue/ShouldQueue.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Queue/ShouldQueueAfterCommit.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Redis/Connection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Redis/Connector.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Redis/Factory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Redis/LimiterTimeoutException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Routing/BindingRegistrar.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Routing/Registrar.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Routing/ResponseFactory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Routing/UrlGenerator.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Routing/UrlRoutable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Session/Middleware/AuthenticatesSessions.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Session/Session.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Contracts/Support/Arrayable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Support/CanBeEscapedWhenCastToString.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Support/DeferrableProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Support/DeferringDisplayableValue.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Support/Htmlable.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Contracts/Support/Jsonable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Support/MessageBag.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Contracts/Support/MessageProvider.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Contracts/Support/Renderable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Support/Responsable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Support/ValidatedData.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Translation/HasLocalePreference.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Contracts/Translation/Loader.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Translation/Translator.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Validation/DataAwareRule.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Validation/Factory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Validation/ImplicitRule.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Validation/InvokableRule.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Validation/Rule.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Validation/UncompromisedVerifier.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Validation/ValidatesWhenResolved.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Validation/ValidationRule.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Validation/Validator.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/Validation/ValidatorAwareRule.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Contracts/View/Engine.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/View/Factory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/View/View.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/View/ViewCompilationException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Contracts/composer.json delete mode 100755 vendor/laravel/framework/src/Illuminate/Cookie/CookieJar.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Cookie/CookieServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cookie/CookieValuePrefix.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cookie/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Cookie/composer.json delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Capsule/Manager.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/ClassMorphViolationException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Concerns/CompilesJsonPaths.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Concerns/ExplainsQueries.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Concerns/ManagesTransactions.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Concerns/ParsesSearchPath.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/ConfigurationUrlParser.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Connection.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/ConnectionInterface.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/ConnectionResolver.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/ConnectionResolverInterface.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectorInterface.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Connectors/PostgresConnector.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Connectors/SQLiteConnector.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Connectors/SqlServerConnector.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/DatabaseInspectionCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/DbCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/DumpCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/Factories/FactoryMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/Factories/stubs/factory.stub delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/BaseCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/FreshCommand.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/InstallCommand.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/MigrateMakeCommand.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/RefreshCommand.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/ResetCommand.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/RollbackCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/StatusCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/TableGuesser.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/MonitorCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/PruneCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeedCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/SeederMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/WithoutModelEvents.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/Seeds/stubs/seeder.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/ShowCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/ShowModelCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/TableCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Console/WipeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/DBAL/TimestampType.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/DatabaseServiceProvider.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/DatabaseTransactionRecord.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/DatabaseTransactionsManager.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/DeadlockException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/DetectsConcurrencyErrors.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/DetectsLostConnections.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/BroadcastableModelEventOccurred.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/BroadcastsEvents.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/BroadcastsEventsAfterCommit.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/ArrayObject.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsArrayObject.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsCollection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEncryptedArrayObject.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEncryptedCollection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEnumArrayObject.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsEnumCollection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/AsStringable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/Attribute.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Casts/Json.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Collection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasEvents.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasGlobalScopes.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasTimestamps.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasUlids.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasUniqueIds.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasUuids.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HidesAttributes.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/QueriesRelationships.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/BelongsToManyRelationship.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/BelongsToRelationship.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/CrossJoinSequence.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Factory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/HasFactory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Relationship.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Factories/Sequence.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/HigherOrderBuilderProxy.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/InvalidCastException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/JsonEncodingException.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Eloquent/MassAssignmentException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/MassPrunable.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Eloquent/MissingAttributeException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Eloquent/ModelNotFoundException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/PendingHasThroughRelationship.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Prunable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/QueueEntityResolver.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Eloquent/RelationNotFoundException.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsTo.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/AsPivot.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/CanBeOneOfMany.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/ComparesRelatedModels.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/InteractsWithDictionary.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/InteractsWithPivotTable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Concerns/SupportsDefaultModels.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasMany.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasManyThrough.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOne.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOneOrMany.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/HasOneThrough.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphMany.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphOne.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphOneOrMany.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphPivot.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphTo.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/MorphToMany.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Pivot.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Relation.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/Scope.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/SoftDeletes.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Eloquent/SoftDeletingScope.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/ConnectionEstablished.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/ConnectionEvent.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/DatabaseBusy.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/DatabaseRefreshed.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/MigrationEnded.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/MigrationEvent.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/MigrationStarted.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/MigrationsEnded.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/MigrationsEvent.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/MigrationsStarted.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/ModelPruningFinished.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/ModelPruningStarting.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/ModelsPruned.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/NoPendingMigrations.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/QueryExecuted.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/SchemaDumped.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/SchemaLoaded.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/StatementPrepared.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/TransactionBeginning.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/TransactionCommitted.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/TransactionCommitting.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Events/TransactionRolledBack.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Grammar.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/LazyLoadingViolationException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/LostConnectionException.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/MigrationServiceProvider.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Migrations/DatabaseMigrationRepository.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Migrations/Migration.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Migrations/MigrationCreator.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Migrations/MigrationRepositoryInterface.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Migrations/stubs/migration.create.stub delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Migrations/stubs/migration.stub delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Migrations/stubs/migration.update.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/MultipleColumnsSelectedException.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/MultipleRecordsFoundException.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/MySqlConnection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/PDO/Concerns/ConnectsToDatabase.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/PDO/Connection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/PDO/MySqlDriver.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/PDO/PostgresDriver.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/PDO/SQLiteDriver.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/PDO/SqlServerConnection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/PDO/SqlServerDriver.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/PostgresConnection.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Query/Expression.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/MySqlGrammar.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/PostgresGrammar.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/SQLiteGrammar.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/SqlServerGrammar.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Query/IndexHint.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Query/JoinClause.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Query/Processors/MySqlProcessor.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Query/Processors/PostgresProcessor.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Query/Processors/Processor.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Query/Processors/SQLiteProcessor.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Query/Processors/SqlServerProcessor.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/QueryException.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/README.md delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/RecordsNotFoundException.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/SQLiteConnection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/SQLiteDatabaseDoesNotExistException.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Schema/ColumnDefinition.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Schema/ForeignIdColumnDefinition.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Schema/ForeignKeyDefinition.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/ChangeColumn.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/Grammar.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/MySqlGrammar.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/PostgresGrammar.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/RenameColumn.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/SQLiteGrammar.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Schema/Grammars/SqlServerGrammar.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Schema/IndexDefinition.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlBuilder.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Schema/MySqlSchemaState.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Schema/PostgresBuilder.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Schema/PostgresSchemaState.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Schema/SQLiteBuilder.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Schema/SchemaState.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Schema/SqlServerBuilder.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/Schema/SqliteSchemaState.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/Seeder.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Database/SqlServerConnection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/UniqueConstraintViolationException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Database/composer.json delete mode 100755 vendor/laravel/framework/src/Illuminate/Encryption/Encrypter.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Encryption/EncryptionServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Encryption/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Encryption/MissingAppKeyException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Encryption/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Events/CallQueuedListener.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Events/EventServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Events/InvokeQueuedClosure.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Events/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Events/NullDispatcher.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Events/QueuedClosure.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Events/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Events/functions.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Filesystem/AwsS3V3Adapter.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Filesystem/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Filesystem/LockableFile.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Filesystem/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Filesystem/functions.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Foundation/AliasLoader.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Foundation/Application.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Auth/Access/Authorizable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Auth/Access/AuthorizesRequests.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Auth/EmailVerificationRequest.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Auth/User.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/BootProviders.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadEnvironmentVariables.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterFacades.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterProviders.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/SetRequestForConsole.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Bus/Dispatchable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Bus/DispatchesJobs.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Bus/PendingChain.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Bus/PendingClosureDispatch.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Bus/PendingDispatch.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/CacheBasedMaintenanceMode.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/ComposerScripts.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Concerns/ResolvesDumpSource.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/AboutCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/CastMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ChannelListCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ChannelMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ClearCompiledCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/CliDumper.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ClosureCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ComponentMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ConfigCacheCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ConfigClearCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ConfigShowCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ConsoleMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/DocsCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/DownCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/EnvironmentCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/EnvironmentDecryptCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/EnvironmentEncryptCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/EventCacheCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/EventClearCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/EventGenerateCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/EventListCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/EventMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ExceptionMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/JobMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/KeyGenerateCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/LangPublishCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ListenerMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/MailMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ModelMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/NotificationMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ObserverMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/OptimizeClearCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/OptimizeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/PackageDiscoverCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/PolicyMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ProviderMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/QueuedCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/RequestMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ResourceMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteCacheCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteClearCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/RuleMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ScopeMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ServeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/StorageLinkCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/StubPublishCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/TestMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/UpCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/VendorPublishCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ViewCacheCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ViewClearCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/ViewMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/cast.inbound.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/cast.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/channel.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/console.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/event.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/exception-render-report.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/exception-render.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/exception-report.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/exception.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/job.queued.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/job.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/listener-duck.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/listener-queued-duck.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/listener-queued.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/listener.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/mail.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/maintenance-mode.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/markdown-mail.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/markdown-notification.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/markdown.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/model.morph-pivot.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/model.pivot.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/model.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/notification.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/observer.plain.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/observer.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/pest.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/pest.unit.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/policy.plain.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/policy.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/provider.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/request.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/resource-collection.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/resource.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/routes.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/rule.implicit.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/rule.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/scope.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/test.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/test.unit.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/view-component.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/view.pest.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/view.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Console/stubs/view.test.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/EnvironmentDetector.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Events/DiscoverEvents.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Events/Dispatchable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Events/LocaleUpdated.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Events/MaintenanceModeDisabled.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Events/MaintenanceModeEnabled.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Events/PublishingStubs.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Events/VendorTagPublished.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/RegisterErrorViewPaths.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/ReportableHandler.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Whoops/WhoopsExceptionRenderer.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Whoops/WhoopsHandler.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/401.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/402.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/403.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/404.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/419.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/429.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/500.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/503.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/layout.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/minimal.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/FileBasedMaintenanceMode.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Http/Events/RequestHandled.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Http/HtmlDumper.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Http/MaintenanceModeBypassCookie.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/HandlePrecognitiveRequests.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Inspiring.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/MaintenanceModeManager.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Mix.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/PackageManifest.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Precognition.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Foundation/Providers/ArtisanServiceProvider.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Foundation/Providers/ComposerServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Providers/ConsoleSupportServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Providers/FormRequestServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Providers/FoundationServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Routing/PrecognitionCallableDispatcher.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Routing/PrecognitionControllerDispatcher.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/AuthServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/EventServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/RouteServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithAuthentication.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithConsole.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithContainer.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithDatabase.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithDeprecationHandling.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithExceptionHandling.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithRedis.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithSession.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithTime.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/InteractsWithViews.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/DatabaseMigrations.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/DatabaseTransactions.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/DatabaseTransactionsManager.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/DatabaseTruncation.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/LazilyRefreshDatabase.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/RefreshDatabase.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/RefreshDatabaseState.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/Traits/CanConfigureMigrationCommands.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/WithConsoleEvents.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/WithFaker.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/WithoutEvents.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/WithoutMiddleware.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Testing/Wormhole.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Validation/ValidatesRequests.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/Vite.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/ViteManifestNotFoundException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/helpers.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/resources/server.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Foundation/stubs/facade.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Hashing/AbstractHasher.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Hashing/Argon2IdHasher.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Hashing/ArgonHasher.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Hashing/BcryptHasher.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Hashing/HashManager.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Hashing/HashServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Hashing/LICENSE.md delete mode 100755 vendor/laravel/framework/src/Illuminate/Hashing/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/Concerns/DeterminesStatusCode.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/ConnectionException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/Events/ConnectionFailed.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/Events/RequestSending.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/Events/ResponseReceived.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/Factory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/HttpClientException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/PendingRequest.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/Pool.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/Request.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/RequestException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/Response.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Client/ResponseSequence.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Concerns/CanBePrecognitive.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithContentTypes.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithFlashData.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Concerns/InteractsWithInput.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Exceptions/HttpResponseException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Exceptions/PostTooLargeException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Exceptions/ThrottleRequestsException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/File.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/FileHelpers.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Http/JsonResponse.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Middleware/AddLinkHeadersForPreloadedAssets.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Middleware/CheckResponseForModifications.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Middleware/FrameGuard.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Middleware/SetCacheHeaders.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustHosts.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Http/RedirectResponse.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Request.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Resources/CollectsResources.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Resources/ConditionallyLoadsAttributes.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Resources/DelegatesToResource.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Resources/Json/AnonymousResourceCollection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Resources/Json/JsonResource.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Resources/Json/PaginatedResourceResponse.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Resources/Json/ResourceCollection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Resources/Json/ResourceResponse.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Resources/MergeValue.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Resources/MissingValue.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Resources/PotentiallyMissing.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Http/Response.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/ResponseTrait.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Testing/File.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Testing/FileFactory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/Testing/MimeType.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Http/UploadedFile.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Http/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Log/Events/MessageLogged.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Log/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Log/LogManager.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Log/LogServiceProvider.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Log/Logger.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Log/ParsesLogConfiguration.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Log/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Macroable/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Macroable/Traits/Macroable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Macroable/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/Attachment.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/Events/MessageSending.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/Events/MessageSent.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/MailManager.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Mail/MailServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/Mailable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/Mailables/Address.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/Mailables/Attachment.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/Mailables/Content.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/Mailables/Envelope.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/Mailables/Headers.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Mail/Mailer.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/Markdown.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Mail/Message.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/PendingMail.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/SendQueuedMailable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/SentMessage.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/TextMessage.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/Transport/ArrayTransport.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/Transport/LogTransport.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/Transport/SesTransport.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/Transport/SesV2Transport.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Mail/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/button.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/footer.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/header.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/layout.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/message.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/panel.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/subcopy.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/table.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/themes/default.css delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/text/button.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/text/footer.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/text/header.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/text/layout.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/text/message.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/text/panel.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/text/subcopy.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Mail/resources/views/text/table.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/Action.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/AnonymousNotifiable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/ChannelManager.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/Channels/BroadcastChannel.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/Channels/DatabaseChannel.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/Channels/MailChannel.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/Console/NotificationTableCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/Console/stubs/notifications.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/DatabaseNotification.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/DatabaseNotificationCollection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/Events/BroadcastNotificationCreated.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/Events/NotificationFailed.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/Events/NotificationSending.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/Events/NotificationSent.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/HasDatabaseNotifications.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/Messages/BroadcastMessage.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/Messages/DatabaseMessage.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/Messages/MailMessage.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/Messages/SimpleMessage.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/Notifiable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/Notification.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/NotificationSender.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/NotificationServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/RoutesNotifications.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/SendQueuedNotifications.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Notifications/resources/views/email.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/AbstractCursorPaginator.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/AbstractPaginator.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/Cursor.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/CursorPaginator.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/LengthAwarePaginator.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Pagination/PaginationServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/PaginationState.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/Paginator.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/UrlWindow.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Pagination/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/resources/views/bootstrap-4.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/resources/views/bootstrap-5.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/resources/views/default.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/resources/views/semantic-ui.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/resources/views/simple-bootstrap-4.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/resources/views/simple-bootstrap-5.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/resources/views/simple-default.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/resources/views/simple-tailwind.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pagination/resources/views/tailwind.blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pipeline/Hub.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pipeline/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pipeline/PipelineServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Pipeline/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Process/Exceptions/ProcessFailedException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Process/Exceptions/ProcessTimedOutException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Process/Factory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Process/FakeInvokedProcess.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Process/FakeProcessDescription.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Process/FakeProcessResult.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Process/FakeProcessSequence.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Process/InvokedProcess.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Process/InvokedProcessPool.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Process/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Process/PendingProcess.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Process/Pipe.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Process/Pool.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Process/ProcessPoolResults.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Process/ProcessResult.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Process/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Attributes/WithoutRelations.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Queue/BeanstalkdQueue.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/CallQueuedClosure.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Capsule/Manager.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Queue/Connectors/BeanstalkdConnector.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Queue/Connectors/ConnectorInterface.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Connectors/DatabaseConnector.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Connectors/NullConnector.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Connectors/RedisConnector.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Queue/Connectors/SqsConnector.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Queue/Connectors/SyncConnector.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Console/BatchesTableCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Console/ClearCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Console/FailedTableCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Console/FlushFailedCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Console/ForgetFailedCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Console/ListFailedCommand.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Queue/Console/ListenCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Console/MonitorCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Console/PruneBatchesCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Console/PruneFailedJobsCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Console/RestartCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Console/RetryBatchCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Console/RetryCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Console/TableCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Console/stubs/batches.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Console/stubs/failed_jobs.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Console/stubs/jobs.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/DatabaseQueue.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Events/JobExceptionOccurred.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Events/JobFailed.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Events/JobPopped.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Events/JobPopping.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Events/JobProcessed.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Events/JobProcessing.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Events/JobQueued.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Events/JobQueueing.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Events/JobReleasedAfterException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Events/JobRetryRequested.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Events/JobTimedOut.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Events/Looping.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Events/QueueBusy.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Events/WorkerStopping.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Failed/CountableFailedJobProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Failed/DatabaseFailedJobProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Failed/DatabaseUuidFailedJobProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Failed/DynamoDbFailedJobProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Failed/FailedJobProviderInterface.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Failed/FileFailedJobProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Failed/NullFailedJobProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Failed/PrunableFailedJobProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/InteractsWithQueue.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/InvalidPayloadException.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Queue/Jobs/BeanstalkdJob.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Jobs/DatabaseJob.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Jobs/DatabaseJobRecord.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Jobs/JobName.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Jobs/RedisJob.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Queue/Jobs/SqsJob.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Queue/Jobs/SyncJob.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/LICENSE.md delete mode 100755 vendor/laravel/framework/src/Illuminate/Queue/Listener.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/ListenerOptions.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/LuaScripts.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/ManuallyFailedException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/MaxAttemptsExceededException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Middleware/RateLimited.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Middleware/RateLimitedWithRedis.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Middleware/SkipIfBatchCancelled.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Middleware/ThrottlesExceptions.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Middleware/ThrottlesExceptionsWithRedis.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Middleware/WithoutOverlapping.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/NullQueue.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Queue/Queue.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Queue/QueueManager.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Queue/QueueServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/README.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/RedisQueue.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/SerializesAndRestoresModelIdentifiers.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/SerializesModels.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Queue/SqsQueue.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Queue/SyncQueue.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/TimeoutExceededException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/Worker.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/WorkerOptions.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Queue/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Redis/Connections/PacksPhpRedisValues.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Redis/Connections/PhpRedisClusterConnection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Redis/Connections/PhpRedisConnection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Redis/Connections/PredisClusterConnection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Redis/Connections/PredisConnection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Redis/Connectors/PredisConnector.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Redis/Events/CommandExecuted.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Redis/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Redis/Limiters/ConcurrencyLimiter.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Redis/Limiters/ConcurrencyLimiterBuilder.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Redis/Limiters/DurationLimiter.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Redis/Limiters/DurationLimiterBuilder.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Redis/RedisManager.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Redis/RedisServiceProvider.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Redis/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/AbstractRouteCollection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/CallableDispatcher.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/CompiledRouteCollection.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Routing/Console/ControllerMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Console/MiddlewareMakeCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Console/stubs/controller.api.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Console/stubs/controller.invokable.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Console/stubs/controller.model.api.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Console/stubs/controller.model.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Console/stubs/controller.nested.api.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Console/stubs/controller.nested.singleton.api.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Console/stubs/controller.nested.singleton.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Console/stubs/controller.nested.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Console/stubs/controller.plain.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Console/stubs/controller.singleton.api.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Console/stubs/controller.singleton.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Console/stubs/controller.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Console/stubs/middleware.stub delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Contracts/CallableDispatcher.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Contracts/ControllerDispatcher.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Controller.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/ControllerMiddlewareOptions.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Controllers/HasMiddleware.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Controllers/Middleware.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/CreatesRegularExpressionRouteConstraints.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Events/PreparingResponse.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Events/ResponsePrepared.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Events/RouteMatched.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Events/Routing.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Exceptions/BackedEnumCaseNotFoundException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Exceptions/InvalidSignatureException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Exceptions/StreamedResponseException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Exceptions/UrlGenerationException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/FiltersControllerMiddleware.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/ImplicitRouteBinding.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Matching/HostValidator.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Matching/MethodValidator.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Matching/SchemeValidator.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Matching/UriValidator.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Matching/ValidatorInterface.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequestsWithRedis.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Middleware/ValidateSignature.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/MiddlewareNameResolver.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/PendingResourceRegistration.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/PendingSingletonResourceRegistration.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/RedirectController.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Routing/Redirector.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/ResolvesRouteDependencies.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/ResourceRegistrar.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/ResponseFactory.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Routing/Route.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/RouteAction.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/RouteBinding.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/RouteCollection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/RouteCollectionInterface.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/RouteDependencyResolverTrait.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/RouteFileRegistrar.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/RouteGroup.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/RouteParameterBinder.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/RouteRegistrar.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/RouteSignatureParameters.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/RouteUri.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/RouteUrlGenerator.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/Router.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Routing/RoutingServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/SortedMiddleware.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Routing/UrlGenerator.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/ViewController.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Routing/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Session/ArraySessionHandler.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Session/CacheBasedSessionHandler.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Session/Console/SessionTableCommand.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Session/Console/stubs/database.stub delete mode 100755 vendor/laravel/framework/src/Illuminate/Session/CookieSessionHandler.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Session/DatabaseSessionHandler.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Session/EncryptedStore.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Session/ExistenceAwareInterface.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Session/FileSessionHandler.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Session/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Session/NullSessionHandler.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Session/SessionManager.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Session/SessionServiceProvider.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Session/Store.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Session/SymfonySessionDecorator.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Session/TokenMismatchException.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Session/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/AggregateServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Benchmark.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Carbon.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Composer.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/ConfigurationUrlParser.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/DateFactory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/DefaultProviders.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Env.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Exceptions/MathException.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/App.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Artisan.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Auth.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Blade.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Facades/Broadcast.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Facades/Bus.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Cache.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Config.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Cookie.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Crypt.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/DB.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Facades/Date.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Event.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/File.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Facades/Gate.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Hash.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Facades/Http.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Lang.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Log.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Mail.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Facades/Notification.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Facades/ParallelTesting.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Password.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Facades/Pipeline.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Facades/Process.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Queue.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Facades/RateLimiter.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Redirect.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Redis.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Request.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Response.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Route.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Schema.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Session.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Facades/Storage.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/URL.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/Validator.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Facades/View.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Facades/Vite.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Fluent.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/HigherOrderTapProxy.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/HtmlString.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/InteractsWithTime.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Js.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Lottery.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Manager.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/MessageBag.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/MultipleInstanceManager.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/NamespacedItemResolver.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Number.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Optional.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/Pluralizer.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/ProcessUtils.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Reflector.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/ServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Sleep.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Str.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Stringable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/BatchFake.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/BatchRepositoryFake.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/BusFake.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/ChainedBatchTruthTest.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/EventFake.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/Fake.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/MailFake.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/NotificationFake.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/PendingBatchFake.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/PendingChainFake.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/PendingMailFake.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/QueueFake.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Timebox.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Traits/CapsuleManagerTrait.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Traits/Localizable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Traits/ReflectsClosures.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/Traits/Tappable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/ValidatedInput.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/ViewErrorBag.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Support/composer.json delete mode 100755 vendor/laravel/framework/src/Illuminate/Support/helpers.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Assert.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/AssertableJsonString.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Concerns/AssertsStatusCodes.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Concerns/RunsInParallel.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Concerns/TestDatabases.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Constraints/ArraySubset.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Constraints/CountInDatabase.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Constraints/HasInDatabase.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Constraints/NotSoftDeletedInDatabase.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Constraints/SeeInOrder.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Constraints/SoftDeletedInDatabase.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Exceptions/InvalidArgumentException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Fluent/AssertableJson.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Debugging.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Has.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Interaction.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/Fluent/Concerns/Matching.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/LoggedExceptionCollection.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/ParallelConsoleOutput.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/ParallelRunner.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/ParallelTesting.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/ParallelTestingServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/PendingCommand.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/TestComponent.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/TestResponse.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/TestView.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Testing/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Translation/ArrayLoader.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Translation/CreatesPotentiallyTranslatedStrings.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Translation/FileLoader.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Translation/LICENSE.md delete mode 100755 vendor/laravel/framework/src/Illuminate/Translation/MessageSelector.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Translation/PotentiallyTranslatedString.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Translation/TranslationServiceProvider.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Translation/Translator.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Translation/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/Translation/lang/en/auth.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Translation/lang/en/pagination.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Translation/lang/en/passwords.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Translation/lang/en/validation.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/ClosureValidationRule.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Concerns/FilterEmailValidation.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Concerns/FormatsMessages.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Concerns/ReplacesAttributes.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Concerns/ValidatesAttributes.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/ConditionalRules.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Validation/DatabasePresenceVerifier.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Validation/DatabasePresenceVerifierInterface.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Validation/Factory.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/InvokableValidationRule.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/NestedRules.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/NotPwnedVerifier.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Validation/PresenceVerifierInterface.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Rule.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Rules/Can.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Rules/DatabaseRule.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Rules/Dimensions.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Rules/Enum.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Rules/ExcludeIf.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Rules/Exists.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Rules/File.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Rules/ImageFile.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Rules/In.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Rules/NotIn.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Rules/Password.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Rules/ProhibitedIf.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Rules/RequiredIf.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/Rules/Unique.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/UnauthorizedException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/ValidatesWhenResolvedTrait.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/ValidationData.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/ValidationException.php delete mode 100644 vendor/laravel/framework/src/Illuminate/Validation/ValidationRuleParser.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Validation/ValidationServiceProvider.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Validation/Validator.php delete mode 100755 vendor/laravel/framework/src/Illuminate/Validation/composer.json delete mode 100644 vendor/laravel/framework/src/Illuminate/View/AnonymousComponent.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/AppendableAttributeValue.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/BladeCompiler.php delete mode 100755 vendor/laravel/framework/src/Illuminate/View/Compilers/Compiler.php delete mode 100755 vendor/laravel/framework/src/Illuminate/View/Compilers/CompilerInterface.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/ComponentTagCompiler.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesAuthorizations.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesClasses.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesComments.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesComponents.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesConditionals.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesEchos.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesErrors.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesFragments.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesHelpers.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesIncludes.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesInjections.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesJs.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesJson.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesLayouts.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesLoops.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesRawPhp.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesSessions.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesStacks.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesStyles.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesTranslations.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Compilers/Concerns/CompilesUseStatements.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Component.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/ComponentAttributeBag.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/ComponentSlot.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Concerns/ManagesComponents.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Concerns/ManagesEvents.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Concerns/ManagesFragments.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Concerns/ManagesLayouts.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Concerns/ManagesLoops.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Concerns/ManagesStacks.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Concerns/ManagesTranslations.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/DynamicComponent.php delete mode 100755 vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php delete mode 100755 vendor/laravel/framework/src/Illuminate/View/Engines/Engine.php delete mode 100755 vendor/laravel/framework/src/Illuminate/View/Engines/EngineResolver.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Engines/FileEngine.php delete mode 100755 vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php delete mode 100755 vendor/laravel/framework/src/Illuminate/View/Factory.php delete mode 100755 vendor/laravel/framework/src/Illuminate/View/FileViewFinder.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/InvokableComponentVariable.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/LICENSE.md delete mode 100644 vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php delete mode 100755 vendor/laravel/framework/src/Illuminate/View/View.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/ViewException.php delete mode 100755 vendor/laravel/framework/src/Illuminate/View/ViewFinderInterface.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/ViewName.php delete mode 100755 vendor/laravel/framework/src/Illuminate/View/ViewServiceProvider.php delete mode 100644 vendor/laravel/framework/src/Illuminate/View/composer.json delete mode 100644 vendor/laravel/prompts/LICENSE.md delete mode 100644 vendor/laravel/prompts/README.md delete mode 100644 vendor/laravel/prompts/composer.json delete mode 100644 vendor/laravel/prompts/phpunit.xml delete mode 100644 vendor/laravel/prompts/src/Concerns/Colors.php delete mode 100644 vendor/laravel/prompts/src/Concerns/Cursor.php delete mode 100644 vendor/laravel/prompts/src/Concerns/Erase.php delete mode 100644 vendor/laravel/prompts/src/Concerns/Events.php delete mode 100644 vendor/laravel/prompts/src/Concerns/FakesInputOutput.php delete mode 100644 vendor/laravel/prompts/src/Concerns/Fallback.php delete mode 100644 vendor/laravel/prompts/src/Concerns/Interactivity.php delete mode 100644 vendor/laravel/prompts/src/Concerns/Scrolling.php delete mode 100644 vendor/laravel/prompts/src/Concerns/Termwind.php delete mode 100644 vendor/laravel/prompts/src/Concerns/Themes.php delete mode 100644 vendor/laravel/prompts/src/Concerns/Truncation.php delete mode 100644 vendor/laravel/prompts/src/Concerns/TypedValue.php delete mode 100644 vendor/laravel/prompts/src/ConfirmPrompt.php delete mode 100644 vendor/laravel/prompts/src/Exceptions/NonInteractiveValidationException.php delete mode 100644 vendor/laravel/prompts/src/Key.php delete mode 100644 vendor/laravel/prompts/src/MultiSearchPrompt.php delete mode 100644 vendor/laravel/prompts/src/MultiSelectPrompt.php delete mode 100644 vendor/laravel/prompts/src/Note.php delete mode 100644 vendor/laravel/prompts/src/Output/BufferedConsoleOutput.php delete mode 100644 vendor/laravel/prompts/src/Output/ConsoleOutput.php delete mode 100644 vendor/laravel/prompts/src/PasswordPrompt.php delete mode 100644 vendor/laravel/prompts/src/Progress.php delete mode 100644 vendor/laravel/prompts/src/Prompt.php delete mode 100644 vendor/laravel/prompts/src/SearchPrompt.php delete mode 100644 vendor/laravel/prompts/src/SelectPrompt.php delete mode 100644 vendor/laravel/prompts/src/Spinner.php delete mode 100644 vendor/laravel/prompts/src/SuggestPrompt.php delete mode 100644 vendor/laravel/prompts/src/Table.php delete mode 100644 vendor/laravel/prompts/src/Terminal.php delete mode 100644 vendor/laravel/prompts/src/TextPrompt.php delete mode 100644 vendor/laravel/prompts/src/Themes/Contracts/Scrolling.php delete mode 100644 vendor/laravel/prompts/src/Themes/Default/Concerns/DrawsBoxes.php delete mode 100644 vendor/laravel/prompts/src/Themes/Default/Concerns/DrawsScrollbars.php delete mode 100644 vendor/laravel/prompts/src/Themes/Default/ConfirmPromptRenderer.php delete mode 100644 vendor/laravel/prompts/src/Themes/Default/MultiSearchPromptRenderer.php delete mode 100644 vendor/laravel/prompts/src/Themes/Default/MultiSelectPromptRenderer.php delete mode 100644 vendor/laravel/prompts/src/Themes/Default/NoteRenderer.php delete mode 100644 vendor/laravel/prompts/src/Themes/Default/PasswordPromptRenderer.php delete mode 100644 vendor/laravel/prompts/src/Themes/Default/ProgressRenderer.php delete mode 100644 vendor/laravel/prompts/src/Themes/Default/Renderer.php delete mode 100644 vendor/laravel/prompts/src/Themes/Default/SearchPromptRenderer.php delete mode 100644 vendor/laravel/prompts/src/Themes/Default/SelectPromptRenderer.php delete mode 100644 vendor/laravel/prompts/src/Themes/Default/SpinnerRenderer.php delete mode 100644 vendor/laravel/prompts/src/Themes/Default/SuggestPromptRenderer.php delete mode 100644 vendor/laravel/prompts/src/Themes/Default/TableRenderer.php delete mode 100644 vendor/laravel/prompts/src/Themes/Default/TextPromptRenderer.php delete mode 100644 vendor/laravel/prompts/src/helpers.php delete mode 100644 vendor/laravel/serializable-closure/LICENSE.md delete mode 100644 vendor/laravel/serializable-closure/README.md delete mode 100644 vendor/laravel/serializable-closure/composer.json delete mode 100644 vendor/laravel/serializable-closure/src/Contracts/Serializable.php delete mode 100644 vendor/laravel/serializable-closure/src/Contracts/Signer.php delete mode 100644 vendor/laravel/serializable-closure/src/Exceptions/InvalidSignatureException.php delete mode 100644 vendor/laravel/serializable-closure/src/Exceptions/MissingSecretKeyException.php delete mode 100644 vendor/laravel/serializable-closure/src/Exceptions/PhpVersionNotSupportedException.php delete mode 100644 vendor/laravel/serializable-closure/src/SerializableClosure.php delete mode 100644 vendor/laravel/serializable-closure/src/Serializers/Native.php delete mode 100644 vendor/laravel/serializable-closure/src/Serializers/Signed.php delete mode 100644 vendor/laravel/serializable-closure/src/Signers/Hmac.php delete mode 100644 vendor/laravel/serializable-closure/src/Support/ClosureScope.php delete mode 100644 vendor/laravel/serializable-closure/src/Support/ClosureStream.php delete mode 100644 vendor/laravel/serializable-closure/src/Support/ReflectionClosure.php delete mode 100644 vendor/laravel/serializable-closure/src/Support/SelfReference.php delete mode 100644 vendor/laravel/serializable-closure/src/UnsignedSerializableClosure.php delete mode 100644 vendor/league/commonmark/.phpstorm.meta.php delete mode 100644 vendor/league/commonmark/CHANGELOG.md delete mode 100644 vendor/league/commonmark/LICENSE delete mode 100644 vendor/league/commonmark/README.md delete mode 100644 vendor/league/commonmark/composer.json delete mode 100644 vendor/league/commonmark/src/CommonMarkConverter.php delete mode 100644 vendor/league/commonmark/src/ConverterInterface.php delete mode 100644 vendor/league/commonmark/src/Delimiter/Delimiter.php delete mode 100644 vendor/league/commonmark/src/Delimiter/DelimiterInterface.php delete mode 100644 vendor/league/commonmark/src/Delimiter/DelimiterParser.php delete mode 100644 vendor/league/commonmark/src/Delimiter/DelimiterStack.php delete mode 100644 vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorCollection.php delete mode 100644 vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorCollectionInterface.php delete mode 100644 vendor/league/commonmark/src/Delimiter/Processor/DelimiterProcessorInterface.php delete mode 100644 vendor/league/commonmark/src/Delimiter/Processor/StaggeredDelimiterProcessor.php delete mode 100644 vendor/league/commonmark/src/Environment/Environment.php delete mode 100644 vendor/league/commonmark/src/Environment/EnvironmentAwareInterface.php delete mode 100644 vendor/league/commonmark/src/Environment/EnvironmentBuilderInterface.php delete mode 100644 vendor/league/commonmark/src/Environment/EnvironmentInterface.php delete mode 100644 vendor/league/commonmark/src/Event/AbstractEvent.php delete mode 100644 vendor/league/commonmark/src/Event/DocumentParsedEvent.php delete mode 100644 vendor/league/commonmark/src/Event/DocumentPreParsedEvent.php delete mode 100644 vendor/league/commonmark/src/Event/DocumentPreRenderEvent.php delete mode 100644 vendor/league/commonmark/src/Event/DocumentRenderedEvent.php delete mode 100644 vendor/league/commonmark/src/Event/ListenerData.php delete mode 100644 vendor/league/commonmark/src/Exception/AlreadyInitializedException.php delete mode 100644 vendor/league/commonmark/src/Exception/CommonMarkException.php delete mode 100644 vendor/league/commonmark/src/Exception/IOException.php delete mode 100644 vendor/league/commonmark/src/Exception/InvalidArgumentException.php delete mode 100644 vendor/league/commonmark/src/Exception/LogicException.php delete mode 100644 vendor/league/commonmark/src/Exception/MissingDependencyException.php delete mode 100644 vendor/league/commonmark/src/Exception/UnexpectedEncodingException.php delete mode 100644 vendor/league/commonmark/src/Extension/Attributes/AttributesExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Attributes/Event/AttributesListener.php delete mode 100644 vendor/league/commonmark/src/Extension/Attributes/Node/Attributes.php delete mode 100644 vendor/league/commonmark/src/Extension/Attributes/Node/AttributesInline.php delete mode 100644 vendor/league/commonmark/src/Extension/Attributes/Parser/AttributesBlockContinueParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Attributes/Parser/AttributesBlockStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Attributes/Parser/AttributesInlineParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Attributes/Util/AttributesHelper.php delete mode 100644 vendor/league/commonmark/src/Extension/Autolink/AutolinkExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Autolink/EmailAutolinkParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Autolink/UrlAutolinkParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/CommonMarkCoreExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Delimiter/Processor/EmphasisDelimiterProcessor.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/BlockQuote.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/FencedCode.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/Heading.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/HtmlBlock.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/IndentedCode.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/ListBlock.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/ListData.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/ListItem.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Block/ThematicBreak.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Inline/AbstractWebResource.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Inline/Code.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Inline/Emphasis.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Inline/HtmlInline.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Inline/Image.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Inline/Link.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Node/Inline/Strong.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/BlockQuoteParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/BlockQuoteStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/FencedCodeParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/FencedCodeStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/HeadingParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/HeadingStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/HtmlBlockParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/HtmlBlockStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/IndentedCodeParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/IndentedCodeStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ListBlockParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ListBlockStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ListItemParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ThematicBreakParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Block/ThematicBreakStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/AutolinkParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/BacktickParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/BangParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/CloseBracketParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/EntityParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/EscapableParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/HtmlInlineParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Parser/Inline/OpenBracketParser.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/BlockQuoteRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/FencedCodeRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/HeadingRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/HtmlBlockRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/IndentedCodeRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/ListBlockRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/ListItemRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Block/ThematicBreakRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Inline/CodeRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Inline/EmphasisRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Inline/HtmlInlineRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Inline/ImageRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Inline/LinkRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/CommonMark/Renderer/Inline/StrongRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/ConfigurableExtensionInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/DefaultAttributes/ApplyDefaultAttributesProcessor.php delete mode 100644 vendor/league/commonmark/src/Extension/DefaultAttributes/DefaultAttributesExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/DescriptionListExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Event/ConsecutiveDescriptionListMerger.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Event/LooseDescriptionHandler.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Node/Description.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Node/DescriptionList.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Node/DescriptionTerm.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Parser/DescriptionContinueParser.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Parser/DescriptionListContinueParser.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Parser/DescriptionStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Parser/DescriptionTermContinueParser.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Renderer/DescriptionListRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Renderer/DescriptionRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/DescriptionList/Renderer/DescriptionTermRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/DisallowedRawHtml/DisallowedRawHtmlExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/DisallowedRawHtml/DisallowedRawHtmlRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/Bridge/OscaroteroEmbedAdapter.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/DomainFilteringAdapter.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/Embed.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/EmbedAdapterInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/EmbedExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/EmbedParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/EmbedProcessor.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/EmbedRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Embed/EmbedStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/ExtensionInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/ExternalLink/ExternalLinkExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/ExternalLink/ExternalLinkProcessor.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Event/AnonymousFootnotesListener.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Event/FixOrphanedFootnotesAndRefsListener.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Event/GatherFootnotesListener.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Event/NumberFootnotesListener.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/FootnoteExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Node/Footnote.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Node/FootnoteBackref.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Node/FootnoteContainer.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Node/FootnoteRef.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Parser/AnonymousFootnoteRefParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Parser/FootnoteParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Parser/FootnoteRefParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Parser/FootnoteStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Renderer/FootnoteBackrefRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Renderer/FootnoteContainerRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Renderer/FootnoteRefRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Footnote/Renderer/FootnoteRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/Data/FrontMatterDataParserInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/Data/LibYamlFrontMatterParser.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/Data/SymfonyYamlFrontMatterParser.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/Exception/InvalidFrontMatterException.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/FrontMatterExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/FrontMatterParser.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/FrontMatterParserInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/FrontMatterProviderInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/Input/MarkdownInputWithFrontMatter.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/Listener/FrontMatterPostRenderListener.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/Listener/FrontMatterPreParser.php delete mode 100644 vendor/league/commonmark/src/Extension/FrontMatter/Output/RenderedContentWithFrontMatter.php delete mode 100644 vendor/league/commonmark/src/Extension/GithubFlavoredMarkdownExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/HeadingPermalink/HeadingPermalink.php delete mode 100644 vendor/league/commonmark/src/Extension/HeadingPermalink/HeadingPermalinkExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/HeadingPermalink/HeadingPermalinkProcessor.php delete mode 100644 vendor/league/commonmark/src/Extension/HeadingPermalink/HeadingPermalinkRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/InlinesOnly/ChildRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/InlinesOnly/InlinesOnlyExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Mention/Generator/CallbackGenerator.php delete mode 100644 vendor/league/commonmark/src/Extension/Mention/Generator/MentionGeneratorInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/Mention/Generator/StringTemplateLinkGenerator.php delete mode 100644 vendor/league/commonmark/src/Extension/Mention/Mention.php delete mode 100644 vendor/league/commonmark/src/Extension/Mention/MentionExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Mention/MentionParser.php delete mode 100644 vendor/league/commonmark/src/Extension/SmartPunct/DashParser.php delete mode 100644 vendor/league/commonmark/src/Extension/SmartPunct/EllipsesParser.php delete mode 100644 vendor/league/commonmark/src/Extension/SmartPunct/Quote.php delete mode 100644 vendor/league/commonmark/src/Extension/SmartPunct/QuoteParser.php delete mode 100644 vendor/league/commonmark/src/Extension/SmartPunct/QuoteProcessor.php delete mode 100644 vendor/league/commonmark/src/Extension/SmartPunct/ReplaceUnpairedQuotesListener.php delete mode 100644 vendor/league/commonmark/src/Extension/SmartPunct/SmartPunctExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Strikethrough/Strikethrough.php delete mode 100644 vendor/league/commonmark/src/Extension/Strikethrough/StrikethroughDelimiterProcessor.php delete mode 100644 vendor/league/commonmark/src/Extension/Strikethrough/StrikethroughExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Strikethrough/StrikethroughRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/Table.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableCell.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableCellRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableParser.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableRow.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableRowRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableSection.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableSectionRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/Table/TableStartParser.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/Node/TableOfContents.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/Node/TableOfContentsPlaceholder.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/Normalizer/AsIsNormalizerStrategy.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/Normalizer/FlatNormalizerStrategy.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/Normalizer/NormalizerStrategyInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/Normalizer/RelativeNormalizerStrategy.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/TableOfContentsBuilder.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/TableOfContentsExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/TableOfContentsGenerator.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/TableOfContentsGeneratorInterface.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/TableOfContentsPlaceholderParser.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/TableOfContentsPlaceholderRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/TableOfContents/TableOfContentsRenderer.php delete mode 100644 vendor/league/commonmark/src/Extension/TaskList/TaskListExtension.php delete mode 100644 vendor/league/commonmark/src/Extension/TaskList/TaskListItemMarker.php delete mode 100644 vendor/league/commonmark/src/Extension/TaskList/TaskListItemMarkerParser.php delete mode 100644 vendor/league/commonmark/src/Extension/TaskList/TaskListItemMarkerRenderer.php delete mode 100644 vendor/league/commonmark/src/GithubFlavoredMarkdownConverter.php delete mode 100644 vendor/league/commonmark/src/Input/MarkdownInput.php delete mode 100644 vendor/league/commonmark/src/Input/MarkdownInputInterface.php delete mode 100644 vendor/league/commonmark/src/MarkdownConverter.php delete mode 100644 vendor/league/commonmark/src/MarkdownConverterInterface.php delete mode 100644 vendor/league/commonmark/src/Node/Block/AbstractBlock.php delete mode 100644 vendor/league/commonmark/src/Node/Block/Document.php delete mode 100644 vendor/league/commonmark/src/Node/Block/Paragraph.php delete mode 100644 vendor/league/commonmark/src/Node/Block/TightBlockInterface.php delete mode 100644 vendor/league/commonmark/src/Node/Inline/AbstractInline.php delete mode 100644 vendor/league/commonmark/src/Node/Inline/AbstractStringContainer.php delete mode 100644 vendor/league/commonmark/src/Node/Inline/AdjacentTextMerger.php delete mode 100644 vendor/league/commonmark/src/Node/Inline/DelimitedInterface.php delete mode 100644 vendor/league/commonmark/src/Node/Inline/Newline.php delete mode 100644 vendor/league/commonmark/src/Node/Inline/Text.php delete mode 100644 vendor/league/commonmark/src/Node/Node.php delete mode 100644 vendor/league/commonmark/src/Node/NodeIterator.php delete mode 100644 vendor/league/commonmark/src/Node/NodeWalker.php delete mode 100644 vendor/league/commonmark/src/Node/NodeWalkerEvent.php delete mode 100644 vendor/league/commonmark/src/Node/Query.php delete mode 100644 vendor/league/commonmark/src/Node/Query/AndExpr.php delete mode 100644 vendor/league/commonmark/src/Node/Query/ExpressionInterface.php delete mode 100644 vendor/league/commonmark/src/Node/Query/OrExpr.php delete mode 100644 vendor/league/commonmark/src/Node/RawMarkupContainerInterface.php delete mode 100644 vendor/league/commonmark/src/Node/StringContainerHelper.php delete mode 100644 vendor/league/commonmark/src/Node/StringContainerInterface.php delete mode 100644 vendor/league/commonmark/src/Normalizer/SlugNormalizer.php delete mode 100644 vendor/league/commonmark/src/Normalizer/TextNormalizer.php delete mode 100644 vendor/league/commonmark/src/Normalizer/TextNormalizerInterface.php delete mode 100644 vendor/league/commonmark/src/Normalizer/UniqueSlugNormalizer.php delete mode 100644 vendor/league/commonmark/src/Normalizer/UniqueSlugNormalizerInterface.php delete mode 100644 vendor/league/commonmark/src/Output/RenderedContent.php delete mode 100644 vendor/league/commonmark/src/Output/RenderedContentInterface.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/AbstractBlockContinueParser.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/BlockContinue.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/BlockContinueParserInterface.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/BlockContinueParserWithInlinesInterface.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/BlockStart.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/BlockStartParserInterface.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/DocumentBlockParser.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/ParagraphParser.php delete mode 100644 vendor/league/commonmark/src/Parser/Block/SkipLinesStartingWithLettersParser.php delete mode 100644 vendor/league/commonmark/src/Parser/Cursor.php delete mode 100644 vendor/league/commonmark/src/Parser/CursorState.php delete mode 100644 vendor/league/commonmark/src/Parser/Inline/InlineParserInterface.php delete mode 100644 vendor/league/commonmark/src/Parser/Inline/InlineParserMatch.php delete mode 100644 vendor/league/commonmark/src/Parser/Inline/NewlineParser.php delete mode 100644 vendor/league/commonmark/src/Parser/InlineParserContext.php delete mode 100644 vendor/league/commonmark/src/Parser/InlineParserEngine.php delete mode 100644 vendor/league/commonmark/src/Parser/InlineParserEngineInterface.php delete mode 100644 vendor/league/commonmark/src/Parser/MarkdownParser.php delete mode 100644 vendor/league/commonmark/src/Parser/MarkdownParserInterface.php delete mode 100644 vendor/league/commonmark/src/Parser/MarkdownParserState.php delete mode 100644 vendor/league/commonmark/src/Parser/MarkdownParserStateInterface.php delete mode 100644 vendor/league/commonmark/src/Parser/ParserLogicException.php delete mode 100644 vendor/league/commonmark/src/Reference/Reference.php delete mode 100644 vendor/league/commonmark/src/Reference/ReferenceInterface.php delete mode 100644 vendor/league/commonmark/src/Reference/ReferenceMap.php delete mode 100644 vendor/league/commonmark/src/Reference/ReferenceMapInterface.php delete mode 100644 vendor/league/commonmark/src/Reference/ReferenceParser.php delete mode 100644 vendor/league/commonmark/src/Reference/ReferenceableInterface.php delete mode 100644 vendor/league/commonmark/src/Renderer/Block/DocumentRenderer.php delete mode 100644 vendor/league/commonmark/src/Renderer/Block/ParagraphRenderer.php delete mode 100644 vendor/league/commonmark/src/Renderer/ChildNodeRendererInterface.php delete mode 100644 vendor/league/commonmark/src/Renderer/DocumentRendererInterface.php delete mode 100644 vendor/league/commonmark/src/Renderer/HtmlDecorator.php delete mode 100644 vendor/league/commonmark/src/Renderer/HtmlRenderer.php delete mode 100644 vendor/league/commonmark/src/Renderer/Inline/NewlineRenderer.php delete mode 100644 vendor/league/commonmark/src/Renderer/Inline/TextRenderer.php delete mode 100644 vendor/league/commonmark/src/Renderer/MarkdownRendererInterface.php delete mode 100644 vendor/league/commonmark/src/Renderer/NoMatchingRendererException.php delete mode 100644 vendor/league/commonmark/src/Renderer/NodeRendererInterface.php delete mode 100644 vendor/league/commonmark/src/Util/ArrayCollection.php delete mode 100644 vendor/league/commonmark/src/Util/Html5EntityDecoder.php delete mode 100644 vendor/league/commonmark/src/Util/HtmlElement.php delete mode 100644 vendor/league/commonmark/src/Util/HtmlFilter.php delete mode 100644 vendor/league/commonmark/src/Util/LinkParserHelper.php delete mode 100644 vendor/league/commonmark/src/Util/PrioritizedList.php delete mode 100644 vendor/league/commonmark/src/Util/RegexHelper.php delete mode 100644 vendor/league/commonmark/src/Util/SpecReader.php delete mode 100644 vendor/league/commonmark/src/Util/UrlEncoder.php delete mode 100644 vendor/league/commonmark/src/Util/Xml.php delete mode 100644 vendor/league/commonmark/src/Xml/FallbackNodeXmlRenderer.php delete mode 100644 vendor/league/commonmark/src/Xml/MarkdownToXmlConverter.php delete mode 100644 vendor/league/commonmark/src/Xml/XmlNodeRendererInterface.php delete mode 100644 vendor/league/commonmark/src/Xml/XmlRenderer.php delete mode 100644 vendor/league/config/CHANGELOG.md delete mode 100644 vendor/league/config/LICENSE.md delete mode 100644 vendor/league/config/README.md delete mode 100644 vendor/league/config/composer.json delete mode 100644 vendor/league/config/src/Configuration.php delete mode 100644 vendor/league/config/src/ConfigurationAwareInterface.php delete mode 100644 vendor/league/config/src/ConfigurationBuilderInterface.php delete mode 100644 vendor/league/config/src/ConfigurationInterface.php delete mode 100644 vendor/league/config/src/ConfigurationProviderInterface.php delete mode 100644 vendor/league/config/src/Exception/ConfigurationExceptionInterface.php delete mode 100644 vendor/league/config/src/Exception/InvalidConfigurationException.php delete mode 100644 vendor/league/config/src/Exception/UnknownOptionException.php delete mode 100644 vendor/league/config/src/Exception/ValidationException.php delete mode 100644 vendor/league/config/src/MutableConfigurationInterface.php delete mode 100644 vendor/league/config/src/ReadOnlyConfiguration.php delete mode 100644 vendor/league/config/src/SchemaBuilderInterface.php delete mode 100644 vendor/league/csv/LICENSE delete mode 100644 vendor/league/csv/autoload.php delete mode 100644 vendor/league/csv/composer.json delete mode 100644 vendor/league/csv/src/AbstractCsv.php delete mode 100644 vendor/league/csv/src/ByteSequence.php delete mode 100644 vendor/league/csv/src/CannotInsertRecord.php delete mode 100644 vendor/league/csv/src/CharsetConverter.php delete mode 100644 vendor/league/csv/src/ColumnConsistency.php delete mode 100644 vendor/league/csv/src/EncloseField.php delete mode 100644 vendor/league/csv/src/EscapeFormula.php delete mode 100644 vendor/league/csv/src/Exception.php delete mode 100644 vendor/league/csv/src/HTMLConverter.php delete mode 100644 vendor/league/csv/src/Info.php delete mode 100644 vendor/league/csv/src/InvalidArgument.php delete mode 100644 vendor/league/csv/src/MapIterator.php delete mode 100644 vendor/league/csv/src/RFC4180Field.php delete mode 100644 vendor/league/csv/src/Reader.php delete mode 100644 vendor/league/csv/src/ResultSet.php delete mode 100644 vendor/league/csv/src/Statement.php delete mode 100644 vendor/league/csv/src/Stream.php delete mode 100644 vendor/league/csv/src/SyntaxError.php delete mode 100644 vendor/league/csv/src/TabularDataReader.php delete mode 100644 vendor/league/csv/src/TabularDataWriter.php delete mode 100644 vendor/league/csv/src/UnableToProcessCsv.php delete mode 100644 vendor/league/csv/src/UnavailableFeature.php delete mode 100644 vendor/league/csv/src/UnavailableStream.php delete mode 100644 vendor/league/csv/src/Writer.php delete mode 100644 vendor/league/csv/src/XMLConverter.php delete mode 100644 vendor/league/csv/src/functions.php delete mode 100644 vendor/league/csv/src/functions_include.php delete mode 100644 vendor/league/flysystem-local/FallbackMimeTypeDetector.php delete mode 100644 vendor/league/flysystem-local/LICENSE delete mode 100644 vendor/league/flysystem-local/LocalFilesystemAdapter.php delete mode 100644 vendor/league/flysystem-local/composer.json delete mode 100644 vendor/league/flysystem/INFO.md delete mode 100644 vendor/league/flysystem/LICENSE delete mode 100644 vendor/league/flysystem/composer.json delete mode 100644 vendor/league/flysystem/readme.md delete mode 100644 vendor/league/flysystem/src/CalculateChecksumFromStream.php delete mode 100644 vendor/league/flysystem/src/ChecksumAlgoIsNotSupported.php delete mode 100644 vendor/league/flysystem/src/ChecksumProvider.php delete mode 100644 vendor/league/flysystem/src/Config.php delete mode 100644 vendor/league/flysystem/src/CorruptedPathDetected.php delete mode 100644 vendor/league/flysystem/src/DecoratedAdapter.php delete mode 100644 vendor/league/flysystem/src/DirectoryAttributes.php delete mode 100644 vendor/league/flysystem/src/DirectoryListing.php delete mode 100644 vendor/league/flysystem/src/FileAttributes.php delete mode 100644 vendor/league/flysystem/src/Filesystem.php delete mode 100644 vendor/league/flysystem/src/FilesystemAdapter.php delete mode 100644 vendor/league/flysystem/src/FilesystemException.php delete mode 100644 vendor/league/flysystem/src/FilesystemOperationFailed.php delete mode 100644 vendor/league/flysystem/src/FilesystemOperator.php delete mode 100644 vendor/league/flysystem/src/FilesystemReader.php delete mode 100644 vendor/league/flysystem/src/FilesystemWriter.php delete mode 100644 vendor/league/flysystem/src/InvalidStreamProvided.php delete mode 100644 vendor/league/flysystem/src/InvalidVisibilityProvided.php delete mode 100644 vendor/league/flysystem/src/MountManager.php delete mode 100644 vendor/league/flysystem/src/PathNormalizer.php delete mode 100644 vendor/league/flysystem/src/PathPrefixer.php delete mode 100644 vendor/league/flysystem/src/PathTraversalDetected.php delete mode 100644 vendor/league/flysystem/src/PortableVisibilityGuard.php delete mode 100644 vendor/league/flysystem/src/ProxyArrayAccessToProperties.php delete mode 100644 vendor/league/flysystem/src/ResolveIdenticalPathConflict.php delete mode 100644 vendor/league/flysystem/src/StorageAttributes.php delete mode 100644 vendor/league/flysystem/src/SymbolicLinkEncountered.php delete mode 100644 vendor/league/flysystem/src/UnableToCheckDirectoryExistence.php delete mode 100644 vendor/league/flysystem/src/UnableToCheckExistence.php delete mode 100644 vendor/league/flysystem/src/UnableToCheckFileExistence.php delete mode 100644 vendor/league/flysystem/src/UnableToCopyFile.php delete mode 100644 vendor/league/flysystem/src/UnableToCreateDirectory.php delete mode 100644 vendor/league/flysystem/src/UnableToDeleteDirectory.php delete mode 100644 vendor/league/flysystem/src/UnableToDeleteFile.php delete mode 100644 vendor/league/flysystem/src/UnableToGeneratePublicUrl.php delete mode 100644 vendor/league/flysystem/src/UnableToGenerateTemporaryUrl.php delete mode 100644 vendor/league/flysystem/src/UnableToListContents.php delete mode 100644 vendor/league/flysystem/src/UnableToMountFilesystem.php delete mode 100644 vendor/league/flysystem/src/UnableToMoveFile.php delete mode 100644 vendor/league/flysystem/src/UnableToProvideChecksum.php delete mode 100644 vendor/league/flysystem/src/UnableToReadFile.php delete mode 100644 vendor/league/flysystem/src/UnableToResolveFilesystemMount.php delete mode 100644 vendor/league/flysystem/src/UnableToRetrieveMetadata.php delete mode 100644 vendor/league/flysystem/src/UnableToSetVisibility.php delete mode 100644 vendor/league/flysystem/src/UnableToWriteFile.php delete mode 100644 vendor/league/flysystem/src/UnixVisibility/PortableVisibilityConverter.php delete mode 100644 vendor/league/flysystem/src/UnixVisibility/VisibilityConverter.php delete mode 100644 vendor/league/flysystem/src/UnreadableFileEncountered.php delete mode 100644 vendor/league/flysystem/src/UrlGeneration/ChainedPublicUrlGenerator.php delete mode 100644 vendor/league/flysystem/src/UrlGeneration/PrefixPublicUrlGenerator.php delete mode 100644 vendor/league/flysystem/src/UrlGeneration/PublicUrlGenerator.php delete mode 100644 vendor/league/flysystem/src/UrlGeneration/ShardedPrefixPublicUrlGenerator.php delete mode 100644 vendor/league/flysystem/src/UrlGeneration/TemporaryUrlGenerator.php delete mode 100644 vendor/league/flysystem/src/Visibility.php delete mode 100644 vendor/league/flysystem/src/WhitespacePathNormalizer.php delete mode 100644 vendor/league/mime-type-detection/CHANGELOG.md delete mode 100644 vendor/league/mime-type-detection/LICENSE delete mode 100644 vendor/league/mime-type-detection/composer.json delete mode 100644 vendor/league/mime-type-detection/src/EmptyExtensionToMimeTypeMap.php delete mode 100644 vendor/league/mime-type-detection/src/ExtensionLookup.php delete mode 100644 vendor/league/mime-type-detection/src/ExtensionMimeTypeDetector.php delete mode 100644 vendor/league/mime-type-detection/src/ExtensionToMimeTypeMap.php delete mode 100644 vendor/league/mime-type-detection/src/FinfoMimeTypeDetector.php delete mode 100644 vendor/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php delete mode 100644 vendor/league/mime-type-detection/src/MimeTypeDetector.php delete mode 100644 vendor/league/mime-type-detection/src/OverridingExtensionToMimeTypeMap.php delete mode 100644 vendor/league/uri-interfaces/Contracts/AuthorityInterface.php delete mode 100644 vendor/league/uri-interfaces/Contracts/DataPathInterface.php delete mode 100644 vendor/league/uri-interfaces/Contracts/DomainHostInterface.php delete mode 100644 vendor/league/uri-interfaces/Contracts/FragmentInterface.php delete mode 100644 vendor/league/uri-interfaces/Contracts/HostInterface.php delete mode 100644 vendor/league/uri-interfaces/Contracts/IpHostInterface.php delete mode 100644 vendor/league/uri-interfaces/Contracts/PathInterface.php delete mode 100644 vendor/league/uri-interfaces/Contracts/PortInterface.php delete mode 100644 vendor/league/uri-interfaces/Contracts/QueryInterface.php delete mode 100644 vendor/league/uri-interfaces/Contracts/SegmentedPathInterface.php delete mode 100644 vendor/league/uri-interfaces/Contracts/UriAccess.php delete mode 100644 vendor/league/uri-interfaces/Contracts/UriComponentInterface.php delete mode 100644 vendor/league/uri-interfaces/Contracts/UriException.php delete mode 100644 vendor/league/uri-interfaces/Contracts/UriInterface.php delete mode 100644 vendor/league/uri-interfaces/Contracts/UserInfoInterface.php delete mode 100644 vendor/league/uri-interfaces/Encoder.php delete mode 100644 vendor/league/uri-interfaces/Exceptions/ConversionFailed.php delete mode 100644 vendor/league/uri-interfaces/Exceptions/MissingFeature.php delete mode 100644 vendor/league/uri-interfaces/Exceptions/OffsetOutOfBounds.php delete mode 100644 vendor/league/uri-interfaces/Exceptions/SyntaxError.php delete mode 100644 vendor/league/uri-interfaces/FeatureDetection.php delete mode 100644 vendor/league/uri-interfaces/IPv4/BCMathCalculator.php delete mode 100644 vendor/league/uri-interfaces/IPv4/Calculator.php delete mode 100644 vendor/league/uri-interfaces/IPv4/Converter.php delete mode 100644 vendor/league/uri-interfaces/IPv4/GMPCalculator.php delete mode 100644 vendor/league/uri-interfaces/IPv4/NativeCalculator.php delete mode 100644 vendor/league/uri-interfaces/Idna/Converter.php delete mode 100644 vendor/league/uri-interfaces/Idna/Error.php delete mode 100644 vendor/league/uri-interfaces/Idna/Option.php delete mode 100644 vendor/league/uri-interfaces/Idna/Result.php delete mode 100644 vendor/league/uri-interfaces/KeyValuePair/Converter.php delete mode 100644 vendor/league/uri-interfaces/LICENSE delete mode 100644 vendor/league/uri-interfaces/QueryString.php delete mode 100644 vendor/league/uri-interfaces/UriString.php delete mode 100644 vendor/league/uri-interfaces/composer.json delete mode 100644 vendor/league/uri/BaseUri.php delete mode 100644 vendor/league/uri/Http.php delete mode 100644 vendor/league/uri/HttpFactory.php delete mode 100644 vendor/league/uri/LICENSE delete mode 100644 vendor/league/uri/Uri.php delete mode 100644 vendor/league/uri/UriInfo.php delete mode 100644 vendor/league/uri/UriResolver.php delete mode 100644 vendor/league/uri/UriTemplate.php delete mode 100644 vendor/league/uri/UriTemplate/Expression.php delete mode 100644 vendor/league/uri/UriTemplate/Operator.php delete mode 100644 vendor/league/uri/UriTemplate/Template.php delete mode 100644 vendor/league/uri/UriTemplate/TemplateCanNotBeExpanded.php delete mode 100644 vendor/league/uri/UriTemplate/VarSpecifier.php delete mode 100644 vendor/league/uri/UriTemplate/VariableBag.php delete mode 100644 vendor/league/uri/composer.json delete mode 100644 vendor/livewire/livewire/LICENSE.md delete mode 100644 vendor/livewire/livewire/README.md delete mode 100644 vendor/livewire/livewire/composer.json delete mode 100644 vendor/livewire/livewire/config/livewire.php delete mode 100644 vendor/livewire/livewire/dist/livewire.esm.js delete mode 100644 vendor/livewire/livewire/dist/livewire.js delete mode 100644 vendor/livewire/livewire/dist/livewire.min.js delete mode 100644 vendor/livewire/livewire/dist/manifest.json delete mode 100644 vendor/livewire/livewire/src/Attribute.php delete mode 100644 vendor/livewire/livewire/src/Attributes/Computed.php delete mode 100644 vendor/livewire/livewire/src/Attributes/Isolate.php delete mode 100644 vendor/livewire/livewire/src/Attributes/Js.php delete mode 100644 vendor/livewire/livewire/src/Attributes/Layout.php delete mode 100644 vendor/livewire/livewire/src/Attributes/Lazy.php delete mode 100644 vendor/livewire/livewire/src/Attributes/Locked.php delete mode 100644 vendor/livewire/livewire/src/Attributes/Modelable.php delete mode 100644 vendor/livewire/livewire/src/Attributes/On.php delete mode 100644 vendor/livewire/livewire/src/Attributes/Reactive.php delete mode 100644 vendor/livewire/livewire/src/Attributes/Renderless.php delete mode 100644 vendor/livewire/livewire/src/Attributes/Rule.php delete mode 100644 vendor/livewire/livewire/src/Attributes/Session.php delete mode 100644 vendor/livewire/livewire/src/Attributes/Title.php delete mode 100644 vendor/livewire/livewire/src/Attributes/Url.php delete mode 100644 vendor/livewire/livewire/src/Attributes/Validate.php delete mode 100644 vendor/livewire/livewire/src/Component.php delete mode 100644 vendor/livewire/livewire/src/ComponentHook.php delete mode 100644 vendor/livewire/livewire/src/ComponentHookRegistry.php delete mode 100644 vendor/livewire/livewire/src/Concerns/InteractsWithProperties.php delete mode 100644 vendor/livewire/livewire/src/Drawer/BaseUtils.php delete mode 100644 vendor/livewire/livewire/src/Drawer/ImplicitRouteBinding.php delete mode 100644 vendor/livewire/livewire/src/Drawer/Regexes.php delete mode 100644 vendor/livewire/livewire/src/Drawer/Utils.php delete mode 100644 vendor/livewire/livewire/src/EventBus.php delete mode 100644 vendor/livewire/livewire/src/Exceptions/BypassViewHandler.php delete mode 100644 vendor/livewire/livewire/src/Exceptions/ComponentAttributeMissingOnDynamicComponentException.php delete mode 100644 vendor/livewire/livewire/src/Exceptions/ComponentNotFoundException.php delete mode 100644 vendor/livewire/livewire/src/Exceptions/LivewirePageExpiredBecauseNewDeploymentHasSignificantEnoughChanges.php delete mode 100644 vendor/livewire/livewire/src/Exceptions/MethodNotFoundException.php delete mode 100644 vendor/livewire/livewire/src/Exceptions/MissingRulesException.php delete mode 100644 vendor/livewire/livewire/src/Exceptions/NonPublicComponentMethodCall.php delete mode 100644 vendor/livewire/livewire/src/Exceptions/PropertyNotFoundException.php delete mode 100644 vendor/livewire/livewire/src/Exceptions/PublicPropertyNotFoundException.php delete mode 100644 vendor/livewire/livewire/src/Exceptions/RootTagMissingFromViewException.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportAttributes/Attribute.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportAttributes/AttributeCollection.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportAttributes/AttributeLevel.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportAttributes/HandlesAttributes.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportAttributes/SupportAttributes.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportAutoInjectedAssets/SupportAutoInjectedAssets.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportBladeAttributes/SupportBladeAttributes.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportChecksumErrorDebugging/SupportChecksumErrorDebugging.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportComputed/BaseComputed.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportComputed/CannotCallComputedDirectlyException.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportComputed/SupportLegacyComputedPropertySyntax.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/AttributeCommand.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/ComponentParser.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/ComponentParserFromExistingComponent.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/CopyCommand.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/CpCommand.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/DeleteCommand.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/FileManipulationCommand.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/FormCommand.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/LayoutCommand.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/MakeCommand.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/MakeLivewireCommand.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/MoveCommand.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/MvCommand.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/PublishCommand.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/RmCommand.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/S3CleanupCommand.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/StubsCommand.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/TouchCommand.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/AddLiveModifierToEntangleDirectives.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/AddLiveModifierToWireModelDirectives.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/ChangeDefaultLayoutView.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/ChangeDefaultNamespace.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/ChangeForgetComputedToUnset.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/ChangeLazyToBlurModifierOnWireModelDirectives.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/ChangeTestAssertionMethods.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/ChangeWireLoadDirectiveToWireInit.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/ClearViewCache.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/RemoveDeferModifierFromEntangleDirectives.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/RemoveDeferModifierFromWireModelDirectives.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/RemovePrefetchModifierFromWireClickDirective.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/RemovePreventModifierFromWireSubmitDirective.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/ReplaceEmitWithDispatch.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/RepublishNavigation.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/ThirdPartyUpgradeNotice.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/UpgradeAlpineInstructions.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/UpgradeConfigInstructions.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/UpgradeIntroduction.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/Upgrade/UpgradeStep.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/UpgradeCommand.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/livewire.attribute.stub delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/livewire.form.stub delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/livewire.inline.stub delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/livewire.layout.stub delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/livewire.pest.stub delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/livewire.stub delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/livewire.test.stub delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/livewire.view.stub delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/Commands/the-tao.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportConsoleCommands/SupportConsoleCommands.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/DisableBackButtonCacheMiddleware.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/HandlesDisablingBackButtonCache.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/SupportDisablingBackButtonCache.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportEntangle/SupportEntangle.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportEvents/BaseOn.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportEvents/Event.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportEvents/HandlesEvents.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportEvents/SupportEvents.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportEvents/TestsEvents.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportEvents/fake-echo.js delete mode 100644 vendor/livewire/livewire/src/Features/SupportFileDownloads/SupportFileDownloads.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportFileDownloads/TestsFileDownloads.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportFileUploads/FileNotPreviewableException.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportFileUploads/FilePreviewController.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportFileUploads/FileUploadConfiguration.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportFileUploads/FileUploadController.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportFileUploads/FileUploadSynth.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportFileUploads/GenerateSignedUploadUrl.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportFileUploads/MissingFileUploadsTraitException.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportFileUploads/S3DoesntSupportMultipleFileUploads.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportFileUploads/SupportFileUploads.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportFileUploads/TemporaryUploadedFile.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportFileUploads/WithFileUploads.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportFileUploads/browser_test_image.png delete mode 100755 vendor/livewire/livewire/src/Features/SupportFileUploads/browser_test_image_big.jpg delete mode 100644 vendor/livewire/livewire/src/Features/SupportFormObjects/Form.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportFormObjects/FormObjectSynth.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportFormObjects/HandlesFormObjects.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportFormObjects/SupportFormObjects.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportIsolating/BaseIsolate.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportIsolating/SupportIsolating.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportJsEvaluation/BaseJs.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportJsEvaluation/HandlesJsEvaluation.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportJsEvaluation/SupportJsEvaluation.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportLazyLoading/BaseLazy.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportLazyLoading/SupportLazyLoading.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportLegacyModels/CannotBindToModelDataWithoutValidationRuleException.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportLegacyModels/EloquentCollectionSynth.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportLegacyModels/EloquentModelSynth.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportLegacyModels/SupportLegacyModels.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportLifecycleHooks/DirectlyCallingLifecycleHooksNotAllowedException.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportLifecycleHooks/SupportLifecycleHooks.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportLocales/SupportLocales.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportLockedProperties/BaseLocked.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportLockedProperties/CannotUpdateLockedPropertyException.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportModels/EloquentCollectionSynth.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportModels/ModelSynth.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportModels/SupportModels.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportMorphAwareIfStatement/SupportMorphAwareIfStatement.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportMultipleRootElementDetection/MultipleRootElementsDetectedException.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportMultipleRootElementDetection/SupportMultipleRootElementDetection.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportNavigate/SupportNavigate.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportNavigate/test-views/changed-layout.blade.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportNavigate/test-views/changed-tracked-layout.blade.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportNavigate/test-views/layout-with-navigate-outside.blade.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportNavigate/test-views/layout.blade.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportNavigate/test-views/test-navigate-asset.js delete mode 100644 vendor/livewire/livewire/src/Features/SupportNavigate/test-views/tracked-layout.blade.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportNestedComponentListeners/SupportNestedComponentListeners.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportNestingComponents/SupportNestingComponents.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportPageComponents/BaseLayout.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportPageComponents/BaseTitle.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportPageComponents/HandlesPageComponents.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportPageComponents/MissingLayoutException.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportPageComponents/PageComponentConfig.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportPageComponents/SupportPageComponents.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportPagination/HandlesPagination.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportPagination/PaginationUrl.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportPagination/SupportPagination.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportPagination/WithoutUrlPagination.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportPagination/views/bootstrap.blade.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportPagination/views/simple-bootstrap.blade.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportPagination/views/simple-tailwind.blade.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportPagination/views/tailwind.blade.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportQueryString/BaseUrl.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportQueryString/SupportQueryString.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportReactiveProps/BaseReactive.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportReactiveProps/CannotMutateReactivePropException.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportReactiveProps/SupportReactiveProps.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportRedirects/HandlesRedirects.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportRedirects/Redirector.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportRedirects/SupportRedirects.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportRedirects/TestsRedirects.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportScriptsAndAssets/SupportScriptsAndAssets.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportScriptsAndAssets/test.js delete mode 100644 vendor/livewire/livewire/src/Features/SupportSession/BaseSession.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportStreaming/HandlesStreaming.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportStreaming/SupportStreaming.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportTeleporting/SupportTeleporting.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportTesting/ComponentState.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportTesting/DuskBrowserMacros.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportTesting/DuskTestable.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportTesting/InitialRender.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportTesting/MakesAssertions.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportTesting/Render.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportTesting/RequestBroker.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportTesting/ShowDuskComponent.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportTesting/SubsequentRender.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportTesting/SupportTesting.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportTesting/Testable.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportValidation/BaseRule.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportValidation/BaseValidate.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportValidation/HandlesValidation.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportValidation/SupportValidation.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportValidation/TestsValidation.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportWireModelingNestedComponents/BaseModelable.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportWireModelingNestedComponents/SupportWireModelingNestedComponents.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportWireables/SupportWireables.php delete mode 100644 vendor/livewire/livewire/src/Features/SupportWireables/WireableSynth.php delete mode 100644 vendor/livewire/livewire/src/Form.php delete mode 100644 vendor/livewire/livewire/src/ImplicitlyBoundMethod.php delete mode 100644 vendor/livewire/livewire/src/Livewire.php delete mode 100644 vendor/livewire/livewire/src/LivewireManager.php delete mode 100644 vendor/livewire/livewire/src/LivewireServiceProvider.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/CompileLivewireTags.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/ComponentRegistry.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/DataStore.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/ExtendBlade/DeterministicBladeKeys.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/ExtendBlade/ExtendBlade.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/ExtendBlade/ExtendedCompilerEngine.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/HandleComponents/BaseRenderless.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/HandleComponents/Checksum.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/HandleComponents/ComponentContext.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/HandleComponents/CorruptComponentPayloadException.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/HandleComponents/HandleComponents.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/ArraySynth.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/CarbonSynth.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/CollectionSynth.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/EnumSynth.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/IntSynth.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/StdClassSynth.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/StringableSynth.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/Synth.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/HandleComponents/ViewContext.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/Mechanism.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/PersistentMiddleware/PersistentMiddleware.php delete mode 100644 vendor/livewire/livewire/src/Mechanisms/RenderComponent.php delete mode 100644 vendor/livewire/livewire/src/Pipe.php delete mode 100644 vendor/livewire/livewire/src/Transparency.php delete mode 100644 vendor/livewire/livewire/src/WireDirective.php delete mode 100644 vendor/livewire/livewire/src/Wireable.php delete mode 100644 vendor/livewire/livewire/src/WithFileUploads.php delete mode 100644 vendor/livewire/livewire/src/WithPagination.php delete mode 100644 vendor/livewire/livewire/src/WithoutUrlPagination.php delete mode 100644 vendor/livewire/livewire/src/Wrapped.php delete mode 100644 vendor/livewire/livewire/src/helpers.php delete mode 100644 vendor/masterminds/html5/CREDITS delete mode 100644 vendor/masterminds/html5/LICENSE.txt delete mode 100644 vendor/masterminds/html5/README.md delete mode 100644 vendor/masterminds/html5/RELEASE.md delete mode 100644 vendor/masterminds/html5/UPGRADING.md delete mode 100644 vendor/masterminds/html5/bin/entities.php delete mode 100644 vendor/masterminds/html5/composer.json delete mode 100644 vendor/masterminds/html5/src/HTML5.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Elements.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Entities.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Exception.php delete mode 100644 vendor/masterminds/html5/src/HTML5/InstructionProcessor.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Parser/CharacterReference.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Parser/DOMTreeBuilder.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Parser/EventHandler.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Parser/FileInputStream.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Parser/InputStream.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Parser/ParseError.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Parser/README.md delete mode 100644 vendor/masterminds/html5/src/HTML5/Parser/Scanner.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Parser/StringInputStream.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Parser/Tokenizer.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Parser/TreeBuildingRules.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Parser/UTF8Utils.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Serializer/HTML5Entities.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Serializer/OutputRules.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Serializer/README.md delete mode 100644 vendor/masterminds/html5/src/HTML5/Serializer/RulesInterface.php delete mode 100644 vendor/masterminds/html5/src/HTML5/Serializer/Traverser.php delete mode 100644 vendor/monolog/monolog/CHANGELOG.md delete mode 100644 vendor/monolog/monolog/LICENSE delete mode 100644 vendor/monolog/monolog/README.md delete mode 100644 vendor/monolog/monolog/composer.json delete mode 100644 vendor/monolog/monolog/favicon.ico delete mode 100644 vendor/monolog/monolog/logo.jpg delete mode 100644 vendor/monolog/monolog/src/Monolog/Attribute/AsMonologProcessor.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Attribute/WithMonologChannel.php delete mode 100644 vendor/monolog/monolog/src/Monolog/DateTimeImmutable.php delete mode 100644 vendor/monolog/monolog/src/Monolog/ErrorHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/ElasticsearchFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/GoogleCloudLoggingFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/LogmaticFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/SyslogFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/ElasticaHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/ElasticsearchHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/FallbackGroupHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/Handler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/LogmaticHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/NoopHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/OverflowHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/ProcessHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/RedisPubSubHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/SendGridHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/SqsHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/SymfonyMailerHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/TelegramBotHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/WebRequestRecognizerTrait.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Level.php delete mode 100644 vendor/monolog/monolog/src/Monolog/LogRecord.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Logger.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Processor/ClosureContextProcessor.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Processor/HostnameProcessor.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Processor/LoadAverageProcessor.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Registry.php delete mode 100644 vendor/monolog/monolog/src/Monolog/ResettableInterface.php delete mode 100644 vendor/monolog/monolog/src/Monolog/SignalHandler.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Test/TestCase.php delete mode 100644 vendor/monolog/monolog/src/Monolog/Utils.php delete mode 100644 vendor/nesbot/carbon/.phpstorm.meta.php delete mode 100644 vendor/nesbot/carbon/LICENSE delete mode 100755 vendor/nesbot/carbon/bin/carbon delete mode 100644 vendor/nesbot/carbon/bin/carbon.bat delete mode 100644 vendor/nesbot/carbon/composer.json delete mode 100644 vendor/nesbot/carbon/extension.neon delete mode 100644 vendor/nesbot/carbon/lazy/Carbon/MessageFormatter/MessageFormatterMapperStrongType.php delete mode 100644 vendor/nesbot/carbon/lazy/Carbon/MessageFormatter/MessageFormatterMapperWeakType.php delete mode 100644 vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroBuiltin.php delete mode 100644 vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroStatic.php delete mode 100644 vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroStrongType.php delete mode 100644 vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroWeakType.php delete mode 100644 vendor/nesbot/carbon/lazy/Carbon/TranslatorStrongType.php delete mode 100644 vendor/nesbot/carbon/lazy/Carbon/TranslatorWeakType.php delete mode 100644 vendor/nesbot/carbon/readme.md delete mode 100644 vendor/nesbot/carbon/sponsors.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/AbstractTranslator.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Carbon.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/CarbonConverterInterface.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/CarbonImmutable.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/CarbonInterface.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/CarbonInterval.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/CarbonPeriodImmutable.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/CarbonTimeZone.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/BadComparisonUnitException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentConstructorException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentSetterException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/BadMethodCallException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/EndLessPeriodException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/Exception.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/ImmutableException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidArgumentException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidCastException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidFormatException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidIntervalException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodDateException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodParameterException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTimeZoneException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTypeException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/NotACarbonClassException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/OutOfRangeException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/RuntimeException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/UnitException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/UnitNotConfiguredException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownGetterException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownMethodException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownSetterException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownUnitException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Exceptions/UnreachableException.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Factory.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/aa.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/aa_DJ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/aa_ER.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/aa_ER@saaho.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/aa_ET.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/af.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/af_NA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/af_ZA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/agq.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/agr.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/agr_PE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ak.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ak_GH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/am.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/am_ET.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/an.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/an_ES.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/anp.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/anp_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_AE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_BH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_DJ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_DZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_EG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_EH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_ER.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_IL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_IQ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_JO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_KM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_KW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_LB.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_LY.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_MA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_MR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_OM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_PS.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_QA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_SA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_SD.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_SO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_SS.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_SY.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_Shakl.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_TD.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_TN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ar_YE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/as.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/as_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/asa.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ast.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ast_ES.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ayc.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ayc_PE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/az.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/az_AZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/az_Cyrl.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/az_IR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/az_Latn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bas.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/be.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/be_BY.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/be_BY@latin.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bem.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bem_ZM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ber.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ber_DZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ber_MA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bez.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bg.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bg_BG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bhb.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bhb_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bho.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bho_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bi.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bi_VU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bm.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bn_BD.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bn_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bo.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bo_CN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bo_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/br.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/br_FR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/brx.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/brx_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bs.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bs_BA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bs_Cyrl.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/bs_Latn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/byn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/byn_ER.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ca.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ca_AD.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ca_ES.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ca_ES_Valencia.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ca_FR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ca_IT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ccp.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ccp_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ce.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ce_RU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cgg.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/chr.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/chr_US.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ckb.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cmn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cmn_TW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/crh.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/crh_UA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cs.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cs_CZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/csb.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/csb_PL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cu.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cv.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cv_RU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cy.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/cy_GB.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/da.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/da_DK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/da_GL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dav.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/de.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/de_AT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/de_BE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/de_CH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/de_DE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/de_IT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/de_LI.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/de_LU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dje.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/doi.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/doi_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dsb.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dsb_DE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dua.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dv.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dv_MV.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dyo.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dz.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/dz_BT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ebu.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ee.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ee_TG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/el.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/el_CY.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/el_GR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_001.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_150.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_AG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_AI.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_AS.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_AT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_AU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_BB.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_BE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_BI.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_BM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_BS.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_BW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_BZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_CA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_CC.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_CH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_CK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_CM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_CX.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_CY.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_DE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_DG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_DK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_DM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_ER.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_FI.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_FJ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_FK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_FM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_GB.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_GD.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_GG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_GH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_GI.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_GM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_GU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_GY.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_HK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_IE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_IL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_IM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_IO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_ISO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_JE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_JM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_KE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_KI.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_KN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_KY.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_LC.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_LR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_LS.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MP.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MS.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_MY.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_NA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_NF.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_NG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_NL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_NR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_NU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_NZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_PG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_PH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_PK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_PN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_PR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_PW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_RW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SB.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SC.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SD.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SI.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SS.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SX.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_SZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_TC.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_TK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_TO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_TT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_TV.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_TZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_UG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_UM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_US.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_US_Posix.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_VC.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_VG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_VI.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_VU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_WS.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_ZA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_ZM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/en_ZW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/eo.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_419.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_AR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_BO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_BR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_BZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_CL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_CO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_CR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_CU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_DO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_EA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_EC.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_ES.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_GQ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_GT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_HN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_IC.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_MX.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_NI.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_PA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_PE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_PH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_PR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_PY.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_SV.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_US.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_UY.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/es_VE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/et.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/et_EE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/eu.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/eu_ES.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ewo.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fa.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fa_AF.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fa_IR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ff.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ff_CM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ff_GN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ff_MR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ff_SN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fi.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fi_FI.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fil.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fil_PH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fo.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fo_DK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fo_FO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_BE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_BF.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_BI.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_BJ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_BL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_CA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_CD.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_CF.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_CG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_CH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_CI.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_CM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_DJ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_DZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_FR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_GA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_GF.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_GN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_GP.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_GQ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_HT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_KM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_LU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_MA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_MC.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_MF.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_MG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_ML.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_MQ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_MR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_MU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_NC.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_NE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_PF.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_PM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_RE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_RW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_SC.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_SN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_SY.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_TD.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_TG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_TN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_VU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_WF.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fr_YT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fur.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fur_IT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fy.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fy_DE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/fy_NL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ga.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ga_IE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gd.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gd_GB.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gez.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gez_ER.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gez_ET.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gl.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gl_ES.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gom.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gom_Latn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gsw.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gsw_CH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gsw_FR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gsw_LI.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gu.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gu_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/guz.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gv.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/gv_GB.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ha.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ha_GH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ha_NE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ha_NG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hak.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hak_TW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/haw.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/he.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/he_IL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hi.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hi_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hif.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hif_FJ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hne.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hne_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hr.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hr_BA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hr_HR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hsb.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hsb_DE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ht.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ht_HT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hu.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hu_HU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hy.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/hy_AM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/i18n.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ia.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ia_FR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/id.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/id_ID.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ig.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ig_NG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ii.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ik.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ik_CA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/in.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/is.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/is_IS.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/it.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/it_CH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/it_IT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/it_SM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/it_VA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/iu.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/iu_CA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/iw.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ja.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ja_JP.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/jgo.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/jmc.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/jv.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ka.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ka_GE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kab.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kab_DZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kam.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kde.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kea.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/khq.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ki.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kk.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kk_KZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kkj.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kl.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kl_GL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kln.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/km.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/km_KH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kn_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ko.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ko_KP.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ko_KR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kok.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kok_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ks.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ks_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ks_IN@devanagari.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ksb.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ksf.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ksh.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ku.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ku_TR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kw.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/kw_GB.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ky.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ky_KG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lag.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lb.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lb_LU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lg.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lg_UG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/li.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/li_NL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lij.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lij_IT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lkt.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ln.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ln_AO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ln_CD.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ln_CF.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ln_CG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lo.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lo_LA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lrc.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lrc_IQ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lt.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lt_LT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lu.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/luo.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/luy.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lv.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lv_LV.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lzh.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/lzh_TW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mag.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mag_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mai.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mai_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mas.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mas_TZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mer.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mfe.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mfe_MU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mg.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mg_MG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mgh.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mgo.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mhr.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mhr_RU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mi.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mi_NZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/miq.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/miq_NI.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mjw.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mjw_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mk.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mk_MK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ml.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ml_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mn_MN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mni.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mni_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mo.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mr.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mr_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ms.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ms_BN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ms_MY.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ms_SG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mt.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mt_MT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mua.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/my.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/my_MM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/mzn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nan.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nan_TW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nan_TW@latin.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/naq.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nb.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nb_NO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nb_SJ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nd.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nds.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nds_DE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nds_NL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ne.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ne_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ne_NP.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nhn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nhn_MX.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/niu.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/niu_NU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nl.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nl_AW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nl_BE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nl_BQ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nl_CW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nl_NL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nl_SR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nl_SX.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nmg.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nn_NO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nnh.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/no.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nr.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nr_ZA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nso.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nso_ZA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nus.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/nyn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/oc.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/oc_FR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/om.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/om_ET.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/om_KE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/or.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/or_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/os.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/os_RU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pa.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pa_Arab.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pa_Guru.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pa_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pa_PK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pap.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pap_AW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pap_CW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pl.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pl_PL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/prg.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ps.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ps_AF.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_AO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_BR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_CH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_CV.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_GQ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_GW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_LU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_MO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_MZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_PT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_ST.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/pt_TL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/qu.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/qu_BO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/qu_EC.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/quz.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/quz_PE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/raj.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/raj_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/rm.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/rn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ro.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ro_MD.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ro_RO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/rof.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ru.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ru_BY.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ru_KG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ru_KZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ru_MD.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ru_RU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ru_UA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/rw.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/rw_RW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/rwk.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sa.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sa_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sah.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sah_RU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/saq.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sat.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sat_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sbp.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sc.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sc_IT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sd.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sd_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sd_IN@devanagari.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/se.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/se_FI.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/se_NO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/se_SE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/seh.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ses.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sg.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sgs.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sgs_LT.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sh.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/shi.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/shi_Latn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/shi_Tfng.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/shn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/shn_MM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/shs.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/shs_CA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/si.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/si_LK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sid.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sid_ET.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sk.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sk_SK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sl.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sl_SI.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sm.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sm_WS.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/smn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/so.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/so_DJ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/so_ET.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/so_KE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/so_SO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sq.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sq_AL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sq_MK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sq_XK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_BA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_ME.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_XK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_BA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_ME.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_XK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_ME.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_RS.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sr_RS@latin.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ss.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ss_ZA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/st.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/st_ZA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sv.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sv_AX.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sv_FI.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sv_SE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sw.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sw_CD.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sw_KE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sw_TZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/sw_UG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/szl.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/szl_PL.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ta.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ta_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ta_LK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ta_MY.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ta_SG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tcy.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tcy_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/te.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/te_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/teo.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/teo_KE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tet.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tg.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tg_TJ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/th.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/th_TH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/the.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/the_NP.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ti.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ti_ER.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ti_ET.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tig.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tig_ER.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tk.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tk_TM.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tl.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tl_PH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tlh.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tn_ZA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/to.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/to_TO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tpi.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tpi_PG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tr.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tr_CY.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tr_TR.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ts.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ts_ZA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tt.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tt_RU.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tt_RU@iqtelif.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/twq.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tzl.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tzm.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/tzm_Latn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ug.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ug_CN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/uk.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/uk_UA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/unm.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/unm_US.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ur.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ur_IN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ur_PK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/uz.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/uz_Arab.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/uz_Cyrl.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/uz_Latn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ@cyrillic.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/vai.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/vai_Latn.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/vai_Vaii.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ve.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/ve_ZA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/vi.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/vi_VN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/vo.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/vun.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/wa.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/wa_BE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/wae.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/wae_CH.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/wal.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/wal_ET.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/wo.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/wo_SN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/xh.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/xh_ZA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/xog.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yav.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yi.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yi_US.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yo.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yo_BJ.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yo_NG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yue.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yue_HK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yue_Hans.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yue_Hant.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yuw.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/yuw_PG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zgh.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_CN.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_HK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_HK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_MO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_SG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_HK.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_MO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_TW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_MO.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_SG.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_TW.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zh_YUE.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zu.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Lang/zu_ZA.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Language.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/List/languages.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/List/regions.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/MessageFormatter/MessageFormatterMapper.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/PHPStan/AbstractMacro.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/PHPStan/Macro.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/PHPStan/MacroScanner.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Cast.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Converter.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Creator.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Date.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/DeprecatedProperties.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Difference.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/IntervalStep.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Localization.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Macro.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/MagicParameter.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Mixin.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Modifiers.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Mutability.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Options.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Rounding.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Serialization.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Test.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Timestamp.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/ToStringFormat.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Units.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Traits/Week.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/Translator.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/TranslatorImmutable.php delete mode 100644 vendor/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php delete mode 100644 vendor/nette/schema/composer.json delete mode 100644 vendor/nette/schema/license.md delete mode 100644 vendor/nette/schema/readme.md delete mode 100644 vendor/nette/schema/src/Schema/Context.php delete mode 100644 vendor/nette/schema/src/Schema/DynamicParameter.php delete mode 100644 vendor/nette/schema/src/Schema/Elements/AnyOf.php delete mode 100644 vendor/nette/schema/src/Schema/Elements/Base.php delete mode 100644 vendor/nette/schema/src/Schema/Elements/Structure.php delete mode 100644 vendor/nette/schema/src/Schema/Elements/Type.php delete mode 100644 vendor/nette/schema/src/Schema/Expect.php delete mode 100644 vendor/nette/schema/src/Schema/Helpers.php delete mode 100644 vendor/nette/schema/src/Schema/Message.php delete mode 100644 vendor/nette/schema/src/Schema/Processor.php delete mode 100644 vendor/nette/schema/src/Schema/Schema.php delete mode 100644 vendor/nette/schema/src/Schema/ValidationException.php delete mode 100644 vendor/nette/utils/.phpstorm.meta.php delete mode 100644 vendor/nette/utils/composer.json delete mode 100644 vendor/nette/utils/license.md delete mode 100644 vendor/nette/utils/readme.md delete mode 100644 vendor/nette/utils/src/HtmlStringable.php delete mode 100644 vendor/nette/utils/src/Iterators/CachingIterator.php delete mode 100644 vendor/nette/utils/src/Iterators/Mapper.php delete mode 100644 vendor/nette/utils/src/SmartObject.php delete mode 100644 vendor/nette/utils/src/StaticClass.php delete mode 100644 vendor/nette/utils/src/Translator.php delete mode 100644 vendor/nette/utils/src/Utils/ArrayHash.php delete mode 100644 vendor/nette/utils/src/Utils/ArrayList.php delete mode 100644 vendor/nette/utils/src/Utils/Arrays.php delete mode 100644 vendor/nette/utils/src/Utils/Callback.php delete mode 100644 vendor/nette/utils/src/Utils/DateTime.php delete mode 100644 vendor/nette/utils/src/Utils/FileInfo.php delete mode 100644 vendor/nette/utils/src/Utils/FileSystem.php delete mode 100644 vendor/nette/utils/src/Utils/Finder.php delete mode 100644 vendor/nette/utils/src/Utils/Floats.php delete mode 100644 vendor/nette/utils/src/Utils/Helpers.php delete mode 100644 vendor/nette/utils/src/Utils/Html.php delete mode 100644 vendor/nette/utils/src/Utils/Image.php delete mode 100644 vendor/nette/utils/src/Utils/ImageColor.php delete mode 100644 vendor/nette/utils/src/Utils/ImageType.php delete mode 100644 vendor/nette/utils/src/Utils/Iterables.php delete mode 100644 vendor/nette/utils/src/Utils/Json.php delete mode 100644 vendor/nette/utils/src/Utils/ObjectHelpers.php delete mode 100644 vendor/nette/utils/src/Utils/Paginator.php delete mode 100644 vendor/nette/utils/src/Utils/Random.php delete mode 100644 vendor/nette/utils/src/Utils/Reflection.php delete mode 100644 vendor/nette/utils/src/Utils/ReflectionMethod.php delete mode 100644 vendor/nette/utils/src/Utils/Strings.php delete mode 100644 vendor/nette/utils/src/Utils/Type.php delete mode 100644 vendor/nette/utils/src/Utils/Validators.php delete mode 100644 vendor/nette/utils/src/Utils/exceptions.php delete mode 100644 vendor/nette/utils/src/compatibility.php delete mode 100644 vendor/nette/utils/src/exceptions.php delete mode 100755 vendor/nunomaduro/termwind/LICENSE.md delete mode 100644 vendor/nunomaduro/termwind/Makefile delete mode 100644 vendor/nunomaduro/termwind/composer.json delete mode 100644 vendor/nunomaduro/termwind/docker-compose.yml delete mode 100644 vendor/nunomaduro/termwind/docker/Dockerfile delete mode 100644 vendor/nunomaduro/termwind/playground.php delete mode 100644 vendor/nunomaduro/termwind/src/Actions/StyleToMethod.php delete mode 100644 vendor/nunomaduro/termwind/src/Components/Anchor.php delete mode 100644 vendor/nunomaduro/termwind/src/Components/BreakLine.php delete mode 100644 vendor/nunomaduro/termwind/src/Components/Dd.php delete mode 100644 vendor/nunomaduro/termwind/src/Components/Div.php delete mode 100644 vendor/nunomaduro/termwind/src/Components/Dl.php delete mode 100644 vendor/nunomaduro/termwind/src/Components/Dt.php delete mode 100644 vendor/nunomaduro/termwind/src/Components/Element.php delete mode 100644 vendor/nunomaduro/termwind/src/Components/Hr.php delete mode 100644 vendor/nunomaduro/termwind/src/Components/Li.php delete mode 100644 vendor/nunomaduro/termwind/src/Components/Ol.php delete mode 100644 vendor/nunomaduro/termwind/src/Components/Paragraph.php delete mode 100644 vendor/nunomaduro/termwind/src/Components/Raw.php delete mode 100644 vendor/nunomaduro/termwind/src/Components/Span.php delete mode 100644 vendor/nunomaduro/termwind/src/Components/Ul.php delete mode 100644 vendor/nunomaduro/termwind/src/Enums/Color.php delete mode 100644 vendor/nunomaduro/termwind/src/Exceptions/ColorNotFound.php delete mode 100644 vendor/nunomaduro/termwind/src/Exceptions/InvalidChild.php delete mode 100644 vendor/nunomaduro/termwind/src/Exceptions/InvalidColor.php delete mode 100644 vendor/nunomaduro/termwind/src/Exceptions/InvalidStyle.php delete mode 100644 vendor/nunomaduro/termwind/src/Exceptions/StyleNotFound.php delete mode 100644 vendor/nunomaduro/termwind/src/Functions.php delete mode 100644 vendor/nunomaduro/termwind/src/Helpers/QuestionHelper.php delete mode 100644 vendor/nunomaduro/termwind/src/Html/CodeRenderer.php delete mode 100644 vendor/nunomaduro/termwind/src/Html/InheritStyles.php delete mode 100644 vendor/nunomaduro/termwind/src/Html/PreRenderer.php delete mode 100644 vendor/nunomaduro/termwind/src/Html/TableRenderer.php delete mode 100644 vendor/nunomaduro/termwind/src/HtmlRenderer.php delete mode 100644 vendor/nunomaduro/termwind/src/Laravel/TermwindServiceProvider.php delete mode 100644 vendor/nunomaduro/termwind/src/Question.php delete mode 100644 vendor/nunomaduro/termwind/src/Repositories/Styles.php delete mode 100644 vendor/nunomaduro/termwind/src/Terminal.php delete mode 100644 vendor/nunomaduro/termwind/src/Termwind.php delete mode 100644 vendor/nunomaduro/termwind/src/ValueObjects/Node.php delete mode 100644 vendor/nunomaduro/termwind/src/ValueObjects/Style.php delete mode 100644 vendor/nunomaduro/termwind/src/ValueObjects/Styles.php delete mode 100644 vendor/openspout/openspout/LICENSE delete mode 100644 vendor/openspout/openspout/LICENSE-for-cc42c1d delete mode 100644 vendor/openspout/openspout/README.md delete mode 100644 vendor/openspout/openspout/UPGRADE.md delete mode 100644 vendor/openspout/openspout/composer.json delete mode 100644 vendor/openspout/openspout/renovate.json delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Cell.php delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Cell/BooleanCell.php delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Cell/DateIntervalCell.php delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Cell/DateTimeCell.php delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Cell/EmptyCell.php delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Cell/ErrorCell.php delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Cell/FormulaCell.php delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Cell/NumericCell.php delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Cell/StringCell.php delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Comment/Comment.php delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Comment/TextRun.php delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Row.php delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Style/Border.php delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Style/BorderPart.php delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Style/CellAlignment.php delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Style/CellVerticalAlignment.php delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Style/Color.php delete mode 100644 vendor/openspout/openspout/src/Common/Entity/Style/Style.php delete mode 100644 vendor/openspout/openspout/src/Common/Exception/EncodingConversionException.php delete mode 100644 vendor/openspout/openspout/src/Common/Exception/IOException.php delete mode 100644 vendor/openspout/openspout/src/Common/Exception/InvalidArgumentException.php delete mode 100644 vendor/openspout/openspout/src/Common/Exception/InvalidColorException.php delete mode 100644 vendor/openspout/openspout/src/Common/Exception/OpenSpoutException.php delete mode 100644 vendor/openspout/openspout/src/Common/Exception/UnsupportedTypeException.php delete mode 100644 vendor/openspout/openspout/src/Common/Helper/EncodingHelper.php delete mode 100644 vendor/openspout/openspout/src/Common/Helper/Escaper/EscaperInterface.php delete mode 100644 vendor/openspout/openspout/src/Common/Helper/Escaper/ODS.php delete mode 100644 vendor/openspout/openspout/src/Common/Helper/Escaper/XLSX.php delete mode 100644 vendor/openspout/openspout/src/Common/Helper/FileSystemHelper.php delete mode 100644 vendor/openspout/openspout/src/Common/Helper/FileSystemHelperInterface.php delete mode 100644 vendor/openspout/openspout/src/Common/Helper/StringHelper.php delete mode 100644 vendor/openspout/openspout/src/Common/TempFolderOptionTrait.php delete mode 100644 vendor/openspout/openspout/src/Reader/AbstractReader.php delete mode 100644 vendor/openspout/openspout/src/Reader/CSV/Options.php delete mode 100644 vendor/openspout/openspout/src/Reader/CSV/Reader.php delete mode 100644 vendor/openspout/openspout/src/Reader/CSV/RowIterator.php delete mode 100644 vendor/openspout/openspout/src/Reader/CSV/Sheet.php delete mode 100644 vendor/openspout/openspout/src/Reader/CSV/SheetIterator.php delete mode 100644 vendor/openspout/openspout/src/Reader/Common/ColumnWidth.php delete mode 100644 vendor/openspout/openspout/src/Reader/Common/Creator/ReaderFactory.php delete mode 100644 vendor/openspout/openspout/src/Reader/Common/Manager/RowManager.php delete mode 100644 vendor/openspout/openspout/src/Reader/Common/XMLProcessor.php delete mode 100644 vendor/openspout/openspout/src/Reader/Exception/InvalidValueException.php delete mode 100644 vendor/openspout/openspout/src/Reader/Exception/IteratorNotRewindableException.php delete mode 100644 vendor/openspout/openspout/src/Reader/Exception/NoSheetsFoundException.php delete mode 100644 vendor/openspout/openspout/src/Reader/Exception/ReaderException.php delete mode 100644 vendor/openspout/openspout/src/Reader/Exception/ReaderNotOpenedException.php delete mode 100644 vendor/openspout/openspout/src/Reader/Exception/SharedStringNotFoundException.php delete mode 100644 vendor/openspout/openspout/src/Reader/Exception/XMLProcessingException.php delete mode 100644 vendor/openspout/openspout/src/Reader/ODS/Helper/CellValueFormatter.php delete mode 100644 vendor/openspout/openspout/src/Reader/ODS/Helper/SettingsHelper.php delete mode 100644 vendor/openspout/openspout/src/Reader/ODS/Options.php delete mode 100644 vendor/openspout/openspout/src/Reader/ODS/Reader.php delete mode 100644 vendor/openspout/openspout/src/Reader/ODS/RowIterator.php delete mode 100644 vendor/openspout/openspout/src/Reader/ODS/Sheet.php delete mode 100644 vendor/openspout/openspout/src/Reader/ODS/SheetIterator.php delete mode 100644 vendor/openspout/openspout/src/Reader/ReaderInterface.php delete mode 100644 vendor/openspout/openspout/src/Reader/RowIteratorInterface.php delete mode 100644 vendor/openspout/openspout/src/Reader/SheetInterface.php delete mode 100644 vendor/openspout/openspout/src/Reader/SheetIteratorInterface.php delete mode 100644 vendor/openspout/openspout/src/Reader/SheetWithVisibilityInterface.php delete mode 100644 vendor/openspout/openspout/src/Reader/Wrapper/XMLInternalErrorsHelper.php delete mode 100644 vendor/openspout/openspout/src/Reader/Wrapper/XMLReader.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Helper/CellHelper.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Helper/CellValueFormatter.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Helper/DateFormatHelper.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Helper/DateIntervalFormatHelper.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/CachingStrategyFactory.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/CachingStrategyFactoryInterface.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/CachingStrategyInterface.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/FileBasedStrategy.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/InMemoryStrategy.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/MemoryLimit.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsManager.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Manager/SheetManager.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Manager/StyleManager.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Manager/StyleManagerInterface.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Manager/WorkbookRelationshipsManager.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Options.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Reader.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/RowIterator.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/Sheet.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/SheetHeaderReader.php delete mode 100644 vendor/openspout/openspout/src/Reader/XLSX/SheetIterator.php delete mode 100644 vendor/openspout/openspout/src/Writer/AbstractWriter.php delete mode 100644 vendor/openspout/openspout/src/Writer/AbstractWriterMultiSheets.php delete mode 100644 vendor/openspout/openspout/src/Writer/AutoFilter.php delete mode 100644 vendor/openspout/openspout/src/Writer/CSV/Options.php delete mode 100644 vendor/openspout/openspout/src/Writer/CSV/Writer.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/AbstractOptions.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/ColumnWidth.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/Creator/WriterFactory.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/Entity/Sheet.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/Entity/Workbook.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/Entity/Worksheet.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/Helper/CellHelper.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/Helper/FileSystemWithRootFolderHelperInterface.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/Helper/ZipHelper.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/Manager/AbstractWorkbookManager.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/Manager/RegisteredStyle.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/Manager/SheetManager.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/Manager/Style/AbstractStyleManager.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/Manager/Style/AbstractStyleRegistry.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/Manager/Style/PossiblyUpdatedStyle.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/Manager/Style/StyleManagerInterface.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/Manager/Style/StyleMerger.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/Manager/WorkbookManagerInterface.php delete mode 100644 vendor/openspout/openspout/src/Writer/Common/Manager/WorksheetManagerInterface.php delete mode 100644 vendor/openspout/openspout/src/Writer/Exception/Border/InvalidNameException.php delete mode 100644 vendor/openspout/openspout/src/Writer/Exception/Border/InvalidStyleException.php delete mode 100644 vendor/openspout/openspout/src/Writer/Exception/Border/InvalidWidthException.php delete mode 100644 vendor/openspout/openspout/src/Writer/Exception/InvalidSheetNameException.php delete mode 100644 vendor/openspout/openspout/src/Writer/Exception/SheetNotFoundException.php delete mode 100644 vendor/openspout/openspout/src/Writer/Exception/WriterAlreadyOpenedException.php delete mode 100644 vendor/openspout/openspout/src/Writer/Exception/WriterException.php delete mode 100644 vendor/openspout/openspout/src/Writer/Exception/WriterNotOpenedException.php delete mode 100644 vendor/openspout/openspout/src/Writer/ODS/Helper/BorderHelper.php delete mode 100644 vendor/openspout/openspout/src/Writer/ODS/Helper/FileSystemHelper.php delete mode 100644 vendor/openspout/openspout/src/Writer/ODS/Manager/Style/StyleManager.php delete mode 100644 vendor/openspout/openspout/src/Writer/ODS/Manager/Style/StyleRegistry.php delete mode 100644 vendor/openspout/openspout/src/Writer/ODS/Manager/WorkbookManager.php delete mode 100644 vendor/openspout/openspout/src/Writer/ODS/Manager/WorksheetManager.php delete mode 100644 vendor/openspout/openspout/src/Writer/ODS/Options.php delete mode 100644 vendor/openspout/openspout/src/Writer/ODS/Writer.php delete mode 100644 vendor/openspout/openspout/src/Writer/WriterInterface.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Entity/SheetView.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Helper/BorderHelper.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Helper/DateHelper.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Helper/DateIntervalHelper.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Helper/FileSystemHelper.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Manager/CommentsManager.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Manager/SharedStringsManager.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Manager/Style/StyleManager.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Manager/Style/StyleRegistry.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Manager/WorkbookManager.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Manager/WorksheetManager.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/MergeCell.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Options.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Options/HeaderFooter.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Options/PageMargin.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Options/PageOrientation.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Options/PageSetup.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Options/PaperSize.php delete mode 100644 vendor/openspout/openspout/src/Writer/XLSX/Writer.php delete mode 100644 vendor/phpoption/phpoption/LICENSE delete mode 100644 vendor/phpoption/phpoption/composer.json delete mode 100644 vendor/phpoption/phpoption/src/PhpOption/LazyOption.php delete mode 100644 vendor/phpoption/phpoption/src/PhpOption/None.php delete mode 100644 vendor/phpoption/phpoption/src/PhpOption/Option.php delete mode 100644 vendor/phpoption/phpoption/src/PhpOption/Some.php delete mode 100644 vendor/psr/cache/CHANGELOG.md delete mode 100644 vendor/psr/cache/LICENSE.txt delete mode 100644 vendor/psr/cache/README.md delete mode 100644 vendor/psr/cache/composer.json delete mode 100644 vendor/psr/cache/src/CacheException.php delete mode 100644 vendor/psr/cache/src/CacheItemInterface.php delete mode 100644 vendor/psr/cache/src/CacheItemPoolInterface.php delete mode 100644 vendor/psr/cache/src/InvalidArgumentException.php delete mode 100644 vendor/psr/clock/CHANGELOG.md delete mode 100644 vendor/psr/clock/LICENSE delete mode 100644 vendor/psr/clock/README.md delete mode 100644 vendor/psr/clock/composer.json delete mode 100644 vendor/psr/clock/src/ClockInterface.php delete mode 100644 vendor/psr/container/.gitignore delete mode 100644 vendor/psr/container/LICENSE delete mode 100644 vendor/psr/container/README.md delete mode 100644 vendor/psr/container/composer.json delete mode 100644 vendor/psr/container/src/ContainerExceptionInterface.php delete mode 100644 vendor/psr/container/src/ContainerInterface.php delete mode 100644 vendor/psr/container/src/NotFoundExceptionInterface.php delete mode 100644 vendor/psr/event-dispatcher/.editorconfig delete mode 100644 vendor/psr/event-dispatcher/.gitignore delete mode 100644 vendor/psr/event-dispatcher/LICENSE delete mode 100644 vendor/psr/event-dispatcher/README.md delete mode 100644 vendor/psr/event-dispatcher/composer.json delete mode 100644 vendor/psr/event-dispatcher/src/EventDispatcherInterface.php delete mode 100644 vendor/psr/event-dispatcher/src/ListenerProviderInterface.php delete mode 100644 vendor/psr/event-dispatcher/src/StoppableEventInterface.php delete mode 100644 vendor/psr/http-factory/LICENSE delete mode 100644 vendor/psr/http-factory/README.md delete mode 100644 vendor/psr/http-factory/composer.json delete mode 100644 vendor/psr/http-factory/src/RequestFactoryInterface.php delete mode 100644 vendor/psr/http-factory/src/ResponseFactoryInterface.php delete mode 100644 vendor/psr/http-factory/src/ServerRequestFactoryInterface.php delete mode 100644 vendor/psr/http-factory/src/StreamFactoryInterface.php delete mode 100644 vendor/psr/http-factory/src/UploadedFileFactoryInterface.php delete mode 100644 vendor/psr/http-factory/src/UriFactoryInterface.php delete mode 100644 vendor/psr/http-message/CHANGELOG.md delete mode 100644 vendor/psr/http-message/LICENSE delete mode 100644 vendor/psr/http-message/README.md delete mode 100644 vendor/psr/http-message/composer.json delete mode 100644 vendor/psr/http-message/docs/PSR7-Interfaces.md delete mode 100644 vendor/psr/http-message/docs/PSR7-Usage.md delete mode 100644 vendor/psr/http-message/src/MessageInterface.php delete mode 100644 vendor/psr/http-message/src/RequestInterface.php delete mode 100644 vendor/psr/http-message/src/ResponseInterface.php delete mode 100644 vendor/psr/http-message/src/ServerRequestInterface.php delete mode 100644 vendor/psr/http-message/src/StreamInterface.php delete mode 100644 vendor/psr/http-message/src/UploadedFileInterface.php delete mode 100644 vendor/psr/http-message/src/UriInterface.php delete mode 100644 vendor/psr/log/LICENSE delete mode 100644 vendor/psr/log/README.md delete mode 100644 vendor/psr/log/composer.json delete mode 100644 vendor/psr/log/src/AbstractLogger.php delete mode 100644 vendor/psr/log/src/InvalidArgumentException.php delete mode 100644 vendor/psr/log/src/LogLevel.php delete mode 100644 vendor/psr/log/src/LoggerAwareInterface.php delete mode 100644 vendor/psr/log/src/LoggerAwareTrait.php delete mode 100644 vendor/psr/log/src/LoggerInterface.php delete mode 100644 vendor/psr/log/src/LoggerTrait.php delete mode 100644 vendor/psr/log/src/NullLogger.php delete mode 100644 vendor/psr/simple-cache/.editorconfig delete mode 100644 vendor/psr/simple-cache/LICENSE.md delete mode 100644 vendor/psr/simple-cache/README.md delete mode 100644 vendor/psr/simple-cache/composer.json delete mode 100644 vendor/psr/simple-cache/src/CacheException.php delete mode 100644 vendor/psr/simple-cache/src/CacheInterface.php delete mode 100644 vendor/psr/simple-cache/src/InvalidArgumentException.php delete mode 100644 vendor/ramsey/collection/LICENSE delete mode 100644 vendor/ramsey/collection/README.md delete mode 100644 vendor/ramsey/collection/SECURITY.md delete mode 100644 vendor/ramsey/collection/composer.json delete mode 100644 vendor/ramsey/collection/conventional-commits.json delete mode 100644 vendor/ramsey/collection/src/AbstractArray.php delete mode 100644 vendor/ramsey/collection/src/AbstractCollection.php delete mode 100644 vendor/ramsey/collection/src/AbstractSet.php delete mode 100644 vendor/ramsey/collection/src/ArrayInterface.php delete mode 100644 vendor/ramsey/collection/src/Collection.php delete mode 100644 vendor/ramsey/collection/src/CollectionInterface.php delete mode 100644 vendor/ramsey/collection/src/DoubleEndedQueue.php delete mode 100644 vendor/ramsey/collection/src/DoubleEndedQueueInterface.php delete mode 100644 vendor/ramsey/collection/src/Exception/CollectionException.php delete mode 100644 vendor/ramsey/collection/src/Exception/CollectionMismatchException.php delete mode 100644 vendor/ramsey/collection/src/Exception/InvalidArgumentException.php delete mode 100644 vendor/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php delete mode 100644 vendor/ramsey/collection/src/Exception/NoSuchElementException.php delete mode 100644 vendor/ramsey/collection/src/Exception/OutOfBoundsException.php delete mode 100644 vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php delete mode 100644 vendor/ramsey/collection/src/GenericArray.php delete mode 100644 vendor/ramsey/collection/src/Map/AbstractMap.php delete mode 100644 vendor/ramsey/collection/src/Map/AbstractTypedMap.php delete mode 100644 vendor/ramsey/collection/src/Map/AssociativeArrayMap.php delete mode 100644 vendor/ramsey/collection/src/Map/MapInterface.php delete mode 100644 vendor/ramsey/collection/src/Map/NamedParameterMap.php delete mode 100644 vendor/ramsey/collection/src/Map/TypedMap.php delete mode 100644 vendor/ramsey/collection/src/Map/TypedMapInterface.php delete mode 100644 vendor/ramsey/collection/src/Queue.php delete mode 100644 vendor/ramsey/collection/src/QueueInterface.php delete mode 100644 vendor/ramsey/collection/src/Set.php delete mode 100644 vendor/ramsey/collection/src/Sort.php delete mode 100644 vendor/ramsey/collection/src/Tool/TypeTrait.php delete mode 100644 vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php delete mode 100644 vendor/ramsey/collection/src/Tool/ValueToStringTrait.php delete mode 100644 vendor/ramsey/uuid/LICENSE delete mode 100644 vendor/ramsey/uuid/README.md delete mode 100644 vendor/ramsey/uuid/composer.json delete mode 100644 vendor/ramsey/uuid/src/BinaryUtils.php delete mode 100644 vendor/ramsey/uuid/src/Builder/BuilderCollection.php delete mode 100644 vendor/ramsey/uuid/src/Builder/DefaultUuidBuilder.php delete mode 100644 vendor/ramsey/uuid/src/Builder/DegradedUuidBuilder.php delete mode 100644 vendor/ramsey/uuid/src/Builder/FallbackBuilder.php delete mode 100644 vendor/ramsey/uuid/src/Builder/UuidBuilderInterface.php delete mode 100644 vendor/ramsey/uuid/src/Codec/CodecInterface.php delete mode 100644 vendor/ramsey/uuid/src/Codec/GuidStringCodec.php delete mode 100644 vendor/ramsey/uuid/src/Codec/OrderedTimeCodec.php delete mode 100644 vendor/ramsey/uuid/src/Codec/StringCodec.php delete mode 100644 vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php delete mode 100644 vendor/ramsey/uuid/src/Codec/TimestampLastCombCodec.php delete mode 100644 vendor/ramsey/uuid/src/Converter/Number/BigNumberConverter.php delete mode 100644 vendor/ramsey/uuid/src/Converter/Number/DegradedNumberConverter.php delete mode 100644 vendor/ramsey/uuid/src/Converter/Number/GenericNumberConverter.php delete mode 100644 vendor/ramsey/uuid/src/Converter/NumberConverterInterface.php delete mode 100644 vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php delete mode 100644 vendor/ramsey/uuid/src/Converter/Time/DegradedTimeConverter.php delete mode 100644 vendor/ramsey/uuid/src/Converter/Time/GenericTimeConverter.php delete mode 100644 vendor/ramsey/uuid/src/Converter/Time/PhpTimeConverter.php delete mode 100644 vendor/ramsey/uuid/src/Converter/Time/UnixTimeConverter.php delete mode 100644 vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php delete mode 100644 vendor/ramsey/uuid/src/DegradedUuid.php delete mode 100644 vendor/ramsey/uuid/src/DeprecatedUuidInterface.php delete mode 100644 vendor/ramsey/uuid/src/DeprecatedUuidMethodsTrait.php delete mode 100644 vendor/ramsey/uuid/src/Exception/BuilderNotFoundException.php delete mode 100644 vendor/ramsey/uuid/src/Exception/DateTimeException.php delete mode 100644 vendor/ramsey/uuid/src/Exception/DceSecurityException.php delete mode 100644 vendor/ramsey/uuid/src/Exception/InvalidArgumentException.php delete mode 100644 vendor/ramsey/uuid/src/Exception/InvalidBytesException.php delete mode 100644 vendor/ramsey/uuid/src/Exception/InvalidUuidStringException.php delete mode 100644 vendor/ramsey/uuid/src/Exception/NameException.php delete mode 100644 vendor/ramsey/uuid/src/Exception/NodeException.php delete mode 100644 vendor/ramsey/uuid/src/Exception/RandomSourceException.php delete mode 100644 vendor/ramsey/uuid/src/Exception/TimeSourceException.php delete mode 100644 vendor/ramsey/uuid/src/Exception/UnableToBuildUuidException.php delete mode 100644 vendor/ramsey/uuid/src/Exception/UnsupportedOperationException.php delete mode 100644 vendor/ramsey/uuid/src/Exception/UuidExceptionInterface.php delete mode 100644 vendor/ramsey/uuid/src/FeatureSet.php delete mode 100644 vendor/ramsey/uuid/src/Fields/FieldsInterface.php delete mode 100644 vendor/ramsey/uuid/src/Fields/SerializableFieldsTrait.php delete mode 100644 vendor/ramsey/uuid/src/Generator/CombGenerator.php delete mode 100644 vendor/ramsey/uuid/src/Generator/DceSecurityGenerator.php delete mode 100644 vendor/ramsey/uuid/src/Generator/DceSecurityGeneratorInterface.php delete mode 100644 vendor/ramsey/uuid/src/Generator/DefaultNameGenerator.php delete mode 100644 vendor/ramsey/uuid/src/Generator/DefaultTimeGenerator.php delete mode 100644 vendor/ramsey/uuid/src/Generator/NameGeneratorFactory.php delete mode 100644 vendor/ramsey/uuid/src/Generator/NameGeneratorInterface.php delete mode 100644 vendor/ramsey/uuid/src/Generator/PeclUuidNameGenerator.php delete mode 100644 vendor/ramsey/uuid/src/Generator/PeclUuidRandomGenerator.php delete mode 100644 vendor/ramsey/uuid/src/Generator/PeclUuidTimeGenerator.php delete mode 100644 vendor/ramsey/uuid/src/Generator/RandomBytesGenerator.php delete mode 100644 vendor/ramsey/uuid/src/Generator/RandomGeneratorFactory.php delete mode 100644 vendor/ramsey/uuid/src/Generator/RandomGeneratorInterface.php delete mode 100644 vendor/ramsey/uuid/src/Generator/RandomLibAdapter.php delete mode 100644 vendor/ramsey/uuid/src/Generator/TimeGeneratorFactory.php delete mode 100644 vendor/ramsey/uuid/src/Generator/TimeGeneratorInterface.php delete mode 100644 vendor/ramsey/uuid/src/Generator/UnixTimeGenerator.php delete mode 100644 vendor/ramsey/uuid/src/Guid/Fields.php delete mode 100644 vendor/ramsey/uuid/src/Guid/Guid.php delete mode 100644 vendor/ramsey/uuid/src/Guid/GuidBuilder.php delete mode 100644 vendor/ramsey/uuid/src/Lazy/LazyUuidFromString.php delete mode 100644 vendor/ramsey/uuid/src/Math/BrickMathCalculator.php delete mode 100644 vendor/ramsey/uuid/src/Math/CalculatorInterface.php delete mode 100644 vendor/ramsey/uuid/src/Math/RoundingMode.php delete mode 100644 vendor/ramsey/uuid/src/Nonstandard/Fields.php delete mode 100644 vendor/ramsey/uuid/src/Nonstandard/Uuid.php delete mode 100644 vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php delete mode 100644 vendor/ramsey/uuid/src/Nonstandard/UuidV6.php delete mode 100644 vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php delete mode 100644 vendor/ramsey/uuid/src/Provider/DceSecurityProviderInterface.php delete mode 100644 vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php delete mode 100644 vendor/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php delete mode 100644 vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php delete mode 100644 vendor/ramsey/uuid/src/Provider/Node/StaticNodeProvider.php delete mode 100644 vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php delete mode 100644 vendor/ramsey/uuid/src/Provider/NodeProviderInterface.php delete mode 100644 vendor/ramsey/uuid/src/Provider/Time/FixedTimeProvider.php delete mode 100644 vendor/ramsey/uuid/src/Provider/Time/SystemTimeProvider.php delete mode 100644 vendor/ramsey/uuid/src/Provider/TimeProviderInterface.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/Fields.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/FieldsInterface.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/MaxTrait.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/MaxUuid.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/NilTrait.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/NilUuid.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/TimeTrait.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidBuilder.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidInterface.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV1.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV2.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV3.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV4.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV5.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV6.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV7.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/UuidV8.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/Validator.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/VariantTrait.php delete mode 100644 vendor/ramsey/uuid/src/Rfc4122/VersionTrait.php delete mode 100644 vendor/ramsey/uuid/src/Type/Decimal.php delete mode 100644 vendor/ramsey/uuid/src/Type/Hexadecimal.php delete mode 100644 vendor/ramsey/uuid/src/Type/Integer.php delete mode 100644 vendor/ramsey/uuid/src/Type/NumberInterface.php delete mode 100644 vendor/ramsey/uuid/src/Type/Time.php delete mode 100644 vendor/ramsey/uuid/src/Type/TypeInterface.php delete mode 100644 vendor/ramsey/uuid/src/Uuid.php delete mode 100644 vendor/ramsey/uuid/src/UuidFactory.php delete mode 100644 vendor/ramsey/uuid/src/UuidFactoryInterface.php delete mode 100644 vendor/ramsey/uuid/src/UuidInterface.php delete mode 100644 vendor/ramsey/uuid/src/Validator/GenericValidator.php delete mode 100644 vendor/ramsey/uuid/src/Validator/ValidatorInterface.php delete mode 100644 vendor/ramsey/uuid/src/functions.php delete mode 100644 vendor/ryangjchandler/blade-capture-directive/CHANGELOG.md delete mode 100644 vendor/ryangjchandler/blade-capture-directive/LICENSE.md delete mode 100644 vendor/ryangjchandler/blade-capture-directive/README.md delete mode 100644 vendor/ryangjchandler/blade-capture-directive/composer.json delete mode 100644 vendor/ryangjchandler/blade-capture-directive/src/BladeCaptureDirective.php delete mode 100644 vendor/ryangjchandler/blade-capture-directive/src/BladeCaptureDirectiveServiceProvider.php delete mode 100644 vendor/spatie/color/.editorconfig delete mode 100644 vendor/spatie/color/.github/FUNDING.yml delete mode 100644 vendor/spatie/color/.github/workflows/php-cs-fixer.yml delete mode 100644 vendor/spatie/color/.github/workflows/run-tests.yml delete mode 100644 vendor/spatie/color/.github/workflows/update-changelog.yml delete mode 100644 vendor/spatie/color/.php_cs.dist.php delete mode 100755 vendor/spatie/color/CHANGELOG.md delete mode 100644 vendor/spatie/color/LICENSE.md delete mode 100644 vendor/spatie/color/README.md delete mode 100644 vendor/spatie/color/composer.json delete mode 100644 vendor/spatie/color/src/CIELab.php delete mode 100644 vendor/spatie/color/src/Cmyk.php delete mode 100644 vendor/spatie/color/src/Color.php delete mode 100644 vendor/spatie/color/src/Contrast.php delete mode 100644 vendor/spatie/color/src/Convert.php delete mode 100644 vendor/spatie/color/src/Distance.php delete mode 100644 vendor/spatie/color/src/Exceptions/InvalidColorValue.php delete mode 100644 vendor/spatie/color/src/Factory.php delete mode 100644 vendor/spatie/color/src/Hex.php delete mode 100644 vendor/spatie/color/src/Hsb.php delete mode 100644 vendor/spatie/color/src/Hsl.php delete mode 100644 vendor/spatie/color/src/Hsla.php delete mode 100644 vendor/spatie/color/src/Rgb.php delete mode 100644 vendor/spatie/color/src/Rgba.php delete mode 100644 vendor/spatie/color/src/Validate.php delete mode 100644 vendor/spatie/color/src/Xyz.php delete mode 100644 vendor/spatie/invade/CHANGELOG.md delete mode 100644 vendor/spatie/invade/LICENSE.md delete mode 100644 vendor/spatie/invade/README.md delete mode 100644 vendor/spatie/invade/composer.json delete mode 100644 vendor/spatie/invade/phpstan-baseline.neon delete mode 100644 vendor/spatie/invade/phpstan.neon.dist delete mode 100755 vendor/spatie/invade/src/Invader.php delete mode 100644 vendor/spatie/invade/src/functions.php delete mode 100644 vendor/spatie/laravel-package-tools/LICENSE.md delete mode 100644 vendor/spatie/laravel-package-tools/README.md delete mode 100644 vendor/spatie/laravel-package-tools/composer.json delete mode 100644 vendor/spatie/laravel-package-tools/src/Commands/InstallCommand.php delete mode 100644 vendor/spatie/laravel-package-tools/src/Exceptions/InvalidPackage.php delete mode 100644 vendor/spatie/laravel-package-tools/src/Package.php delete mode 100644 vendor/spatie/laravel-package-tools/src/PackageServiceProvider.php delete mode 100644 vendor/spatie/laravel-permission/LICENSE.md delete mode 100644 vendor/spatie/laravel-permission/README.md delete mode 100644 vendor/spatie/laravel-permission/composer.json delete mode 100644 vendor/spatie/laravel-permission/config/permission.php delete mode 100644 vendor/spatie/laravel-permission/database/migrations/add_teams_fields.php.stub delete mode 100644 vendor/spatie/laravel-permission/database/migrations/create_permission_tables.php.stub delete mode 100644 vendor/spatie/laravel-permission/ide.json delete mode 100644 vendor/spatie/laravel-permission/src/Commands/CacheReset.php delete mode 100644 vendor/spatie/laravel-permission/src/Commands/CreatePermission.php delete mode 100644 vendor/spatie/laravel-permission/src/Commands/CreateRole.php delete mode 100644 vendor/spatie/laravel-permission/src/Commands/Show.php delete mode 100644 vendor/spatie/laravel-permission/src/Commands/UpgradeForTeams.php delete mode 100644 vendor/spatie/laravel-permission/src/Contracts/Permission.php delete mode 100644 vendor/spatie/laravel-permission/src/Contracts/Role.php delete mode 100644 vendor/spatie/laravel-permission/src/Contracts/Wildcard.php delete mode 100644 vendor/spatie/laravel-permission/src/Exceptions/GuardDoesNotMatch.php delete mode 100644 vendor/spatie/laravel-permission/src/Exceptions/PermissionAlreadyExists.php delete mode 100644 vendor/spatie/laravel-permission/src/Exceptions/PermissionDoesNotExist.php delete mode 100644 vendor/spatie/laravel-permission/src/Exceptions/RoleAlreadyExists.php delete mode 100644 vendor/spatie/laravel-permission/src/Exceptions/RoleDoesNotExist.php delete mode 100644 vendor/spatie/laravel-permission/src/Exceptions/UnauthorizedException.php delete mode 100644 vendor/spatie/laravel-permission/src/Exceptions/WildcardPermissionInvalidArgument.php delete mode 100644 vendor/spatie/laravel-permission/src/Exceptions/WildcardPermissionNotImplementsContract.php delete mode 100644 vendor/spatie/laravel-permission/src/Exceptions/WildcardPermissionNotProperlyFormatted.php delete mode 100644 vendor/spatie/laravel-permission/src/Guard.php delete mode 100644 vendor/spatie/laravel-permission/src/Middleware/PermissionMiddleware.php delete mode 100644 vendor/spatie/laravel-permission/src/Middleware/RoleMiddleware.php delete mode 100644 vendor/spatie/laravel-permission/src/Middleware/RoleOrPermissionMiddleware.php delete mode 100644 vendor/spatie/laravel-permission/src/Models/Permission.php delete mode 100644 vendor/spatie/laravel-permission/src/Models/Role.php delete mode 100644 vendor/spatie/laravel-permission/src/PermissionRegistrar.php delete mode 100644 vendor/spatie/laravel-permission/src/PermissionServiceProvider.php delete mode 100644 vendor/spatie/laravel-permission/src/Traits/HasPermissions.php delete mode 100644 vendor/spatie/laravel-permission/src/Traits/HasRoles.php delete mode 100644 vendor/spatie/laravel-permission/src/Traits/RefreshesPermissionCache.php delete mode 100644 vendor/spatie/laravel-permission/src/WildcardPermission.php delete mode 100644 vendor/spatie/laravel-permission/src/helpers.php delete mode 100644 vendor/symfony/console/Application.php delete mode 100644 vendor/symfony/console/Attribute/AsCommand.php delete mode 100644 vendor/symfony/console/CHANGELOG.md delete mode 100644 vendor/symfony/console/CI/GithubActionReporter.php delete mode 100644 vendor/symfony/console/Color.php delete mode 100644 vendor/symfony/console/Command/Command.php delete mode 100644 vendor/symfony/console/Command/CompleteCommand.php delete mode 100644 vendor/symfony/console/Command/DumpCompletionCommand.php delete mode 100644 vendor/symfony/console/Command/HelpCommand.php delete mode 100644 vendor/symfony/console/Command/LazyCommand.php delete mode 100644 vendor/symfony/console/Command/ListCommand.php delete mode 100644 vendor/symfony/console/Command/LockableTrait.php delete mode 100644 vendor/symfony/console/Command/SignalableCommandInterface.php delete mode 100644 vendor/symfony/console/Command/TraceableCommand.php delete mode 100644 vendor/symfony/console/CommandLoader/CommandLoaderInterface.php delete mode 100644 vendor/symfony/console/CommandLoader/ContainerCommandLoader.php delete mode 100644 vendor/symfony/console/CommandLoader/FactoryCommandLoader.php delete mode 100644 vendor/symfony/console/Completion/CompletionInput.php delete mode 100644 vendor/symfony/console/Completion/CompletionSuggestions.php delete mode 100644 vendor/symfony/console/Completion/Output/BashCompletionOutput.php delete mode 100644 vendor/symfony/console/Completion/Output/CompletionOutputInterface.php delete mode 100644 vendor/symfony/console/Completion/Output/FishCompletionOutput.php delete mode 100644 vendor/symfony/console/Completion/Output/ZshCompletionOutput.php delete mode 100644 vendor/symfony/console/Completion/Suggestion.php delete mode 100644 vendor/symfony/console/ConsoleEvents.php delete mode 100644 vendor/symfony/console/Cursor.php delete mode 100644 vendor/symfony/console/DataCollector/CommandDataCollector.php delete mode 100644 vendor/symfony/console/Debug/CliRequest.php delete mode 100644 vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php delete mode 100644 vendor/symfony/console/Descriptor/ApplicationDescription.php delete mode 100644 vendor/symfony/console/Descriptor/Descriptor.php delete mode 100644 vendor/symfony/console/Descriptor/DescriptorInterface.php delete mode 100644 vendor/symfony/console/Descriptor/JsonDescriptor.php delete mode 100644 vendor/symfony/console/Descriptor/MarkdownDescriptor.php delete mode 100644 vendor/symfony/console/Descriptor/ReStructuredTextDescriptor.php delete mode 100644 vendor/symfony/console/Descriptor/TextDescriptor.php delete mode 100644 vendor/symfony/console/Descriptor/XmlDescriptor.php delete mode 100644 vendor/symfony/console/Event/ConsoleCommandEvent.php delete mode 100644 vendor/symfony/console/Event/ConsoleErrorEvent.php delete mode 100644 vendor/symfony/console/Event/ConsoleEvent.php delete mode 100644 vendor/symfony/console/Event/ConsoleSignalEvent.php delete mode 100644 vendor/symfony/console/Event/ConsoleTerminateEvent.php delete mode 100644 vendor/symfony/console/EventListener/ErrorListener.php delete mode 100644 vendor/symfony/console/Exception/CommandNotFoundException.php delete mode 100644 vendor/symfony/console/Exception/ExceptionInterface.php delete mode 100644 vendor/symfony/console/Exception/InvalidArgumentException.php delete mode 100644 vendor/symfony/console/Exception/InvalidOptionException.php delete mode 100644 vendor/symfony/console/Exception/LogicException.php delete mode 100644 vendor/symfony/console/Exception/MissingInputException.php delete mode 100644 vendor/symfony/console/Exception/NamespaceNotFoundException.php delete mode 100644 vendor/symfony/console/Exception/RunCommandFailedException.php delete mode 100644 vendor/symfony/console/Exception/RuntimeException.php delete mode 100644 vendor/symfony/console/Formatter/NullOutputFormatter.php delete mode 100644 vendor/symfony/console/Formatter/NullOutputFormatterStyle.php delete mode 100644 vendor/symfony/console/Formatter/OutputFormatter.php delete mode 100644 vendor/symfony/console/Formatter/OutputFormatterInterface.php delete mode 100644 vendor/symfony/console/Formatter/OutputFormatterStyle.php delete mode 100644 vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php delete mode 100644 vendor/symfony/console/Formatter/OutputFormatterStyleStack.php delete mode 100644 vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php delete mode 100644 vendor/symfony/console/Helper/DebugFormatterHelper.php delete mode 100644 vendor/symfony/console/Helper/DescriptorHelper.php delete mode 100644 vendor/symfony/console/Helper/Dumper.php delete mode 100644 vendor/symfony/console/Helper/FormatterHelper.php delete mode 100644 vendor/symfony/console/Helper/Helper.php delete mode 100644 vendor/symfony/console/Helper/HelperInterface.php delete mode 100644 vendor/symfony/console/Helper/HelperSet.php delete mode 100644 vendor/symfony/console/Helper/InputAwareHelper.php delete mode 100644 vendor/symfony/console/Helper/OutputWrapper.php delete mode 100644 vendor/symfony/console/Helper/ProcessHelper.php delete mode 100644 vendor/symfony/console/Helper/ProgressBar.php delete mode 100644 vendor/symfony/console/Helper/ProgressIndicator.php delete mode 100644 vendor/symfony/console/Helper/QuestionHelper.php delete mode 100644 vendor/symfony/console/Helper/SymfonyQuestionHelper.php delete mode 100644 vendor/symfony/console/Helper/Table.php delete mode 100644 vendor/symfony/console/Helper/TableCell.php delete mode 100644 vendor/symfony/console/Helper/TableCellStyle.php delete mode 100644 vendor/symfony/console/Helper/TableRows.php delete mode 100644 vendor/symfony/console/Helper/TableSeparator.php delete mode 100644 vendor/symfony/console/Helper/TableStyle.php delete mode 100644 vendor/symfony/console/Input/ArgvInput.php delete mode 100644 vendor/symfony/console/Input/ArrayInput.php delete mode 100644 vendor/symfony/console/Input/Input.php delete mode 100644 vendor/symfony/console/Input/InputArgument.php delete mode 100644 vendor/symfony/console/Input/InputAwareInterface.php delete mode 100644 vendor/symfony/console/Input/InputDefinition.php delete mode 100644 vendor/symfony/console/Input/InputInterface.php delete mode 100644 vendor/symfony/console/Input/InputOption.php delete mode 100644 vendor/symfony/console/Input/StreamableInputInterface.php delete mode 100644 vendor/symfony/console/Input/StringInput.php delete mode 100644 vendor/symfony/console/LICENSE delete mode 100644 vendor/symfony/console/Logger/ConsoleLogger.php delete mode 100644 vendor/symfony/console/Messenger/RunCommandContext.php delete mode 100644 vendor/symfony/console/Messenger/RunCommandMessage.php delete mode 100644 vendor/symfony/console/Messenger/RunCommandMessageHandler.php delete mode 100644 vendor/symfony/console/Output/AnsiColorMode.php delete mode 100644 vendor/symfony/console/Output/BufferedOutput.php delete mode 100644 vendor/symfony/console/Output/ConsoleOutput.php delete mode 100644 vendor/symfony/console/Output/ConsoleOutputInterface.php delete mode 100644 vendor/symfony/console/Output/ConsoleSectionOutput.php delete mode 100644 vendor/symfony/console/Output/NullOutput.php delete mode 100644 vendor/symfony/console/Output/Output.php delete mode 100644 vendor/symfony/console/Output/OutputInterface.php delete mode 100644 vendor/symfony/console/Output/StreamOutput.php delete mode 100644 vendor/symfony/console/Output/TrimmedBufferOutput.php delete mode 100644 vendor/symfony/console/Question/ChoiceQuestion.php delete mode 100644 vendor/symfony/console/Question/ConfirmationQuestion.php delete mode 100644 vendor/symfony/console/Question/Question.php delete mode 100644 vendor/symfony/console/README.md delete mode 100644 vendor/symfony/console/Resources/bin/hiddeninput.exe delete mode 100644 vendor/symfony/console/Resources/completion.bash delete mode 100644 vendor/symfony/console/Resources/completion.fish delete mode 100644 vendor/symfony/console/Resources/completion.zsh delete mode 100644 vendor/symfony/console/SignalRegistry/SignalMap.php delete mode 100644 vendor/symfony/console/SignalRegistry/SignalRegistry.php delete mode 100644 vendor/symfony/console/SingleCommandApplication.php delete mode 100644 vendor/symfony/console/Style/OutputStyle.php delete mode 100644 vendor/symfony/console/Style/StyleInterface.php delete mode 100644 vendor/symfony/console/Style/SymfonyStyle.php delete mode 100644 vendor/symfony/console/Terminal.php delete mode 100644 vendor/symfony/console/Tester/ApplicationTester.php delete mode 100644 vendor/symfony/console/Tester/CommandCompletionTester.php delete mode 100644 vendor/symfony/console/Tester/CommandTester.php delete mode 100644 vendor/symfony/console/Tester/Constraint/CommandIsSuccessful.php delete mode 100644 vendor/symfony/console/Tester/TesterTrait.php delete mode 100644 vendor/symfony/console/composer.json delete mode 100644 vendor/symfony/css-selector/CHANGELOG.md delete mode 100644 vendor/symfony/css-selector/CssSelectorConverter.php delete mode 100644 vendor/symfony/css-selector/Exception/ExceptionInterface.php delete mode 100644 vendor/symfony/css-selector/Exception/ExpressionErrorException.php delete mode 100644 vendor/symfony/css-selector/Exception/InternalErrorException.php delete mode 100644 vendor/symfony/css-selector/Exception/ParseException.php delete mode 100644 vendor/symfony/css-selector/Exception/SyntaxErrorException.php delete mode 100644 vendor/symfony/css-selector/LICENSE delete mode 100644 vendor/symfony/css-selector/Node/AbstractNode.php delete mode 100644 vendor/symfony/css-selector/Node/AttributeNode.php delete mode 100644 vendor/symfony/css-selector/Node/ClassNode.php delete mode 100644 vendor/symfony/css-selector/Node/CombinedSelectorNode.php delete mode 100644 vendor/symfony/css-selector/Node/ElementNode.php delete mode 100644 vendor/symfony/css-selector/Node/FunctionNode.php delete mode 100644 vendor/symfony/css-selector/Node/HashNode.php delete mode 100644 vendor/symfony/css-selector/Node/NegationNode.php delete mode 100644 vendor/symfony/css-selector/Node/NodeInterface.php delete mode 100644 vendor/symfony/css-selector/Node/PseudoNode.php delete mode 100644 vendor/symfony/css-selector/Node/SelectorNode.php delete mode 100644 vendor/symfony/css-selector/Node/Specificity.php delete mode 100644 vendor/symfony/css-selector/Parser/Handler/CommentHandler.php delete mode 100644 vendor/symfony/css-selector/Parser/Handler/HandlerInterface.php delete mode 100644 vendor/symfony/css-selector/Parser/Handler/HashHandler.php delete mode 100644 vendor/symfony/css-selector/Parser/Handler/IdentifierHandler.php delete mode 100644 vendor/symfony/css-selector/Parser/Handler/NumberHandler.php delete mode 100644 vendor/symfony/css-selector/Parser/Handler/StringHandler.php delete mode 100644 vendor/symfony/css-selector/Parser/Handler/WhitespaceHandler.php delete mode 100644 vendor/symfony/css-selector/Parser/Parser.php delete mode 100644 vendor/symfony/css-selector/Parser/ParserInterface.php delete mode 100644 vendor/symfony/css-selector/Parser/Reader.php delete mode 100644 vendor/symfony/css-selector/Parser/Shortcut/ClassParser.php delete mode 100644 vendor/symfony/css-selector/Parser/Shortcut/ElementParser.php delete mode 100644 vendor/symfony/css-selector/Parser/Shortcut/EmptyStringParser.php delete mode 100644 vendor/symfony/css-selector/Parser/Shortcut/HashParser.php delete mode 100644 vendor/symfony/css-selector/Parser/Token.php delete mode 100644 vendor/symfony/css-selector/Parser/TokenStream.php delete mode 100644 vendor/symfony/css-selector/Parser/Tokenizer/Tokenizer.php delete mode 100644 vendor/symfony/css-selector/Parser/Tokenizer/TokenizerEscaping.php delete mode 100644 vendor/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php delete mode 100644 vendor/symfony/css-selector/README.md delete mode 100644 vendor/symfony/css-selector/XPath/Extension/AbstractExtension.php delete mode 100644 vendor/symfony/css-selector/XPath/Extension/AttributeMatchingExtension.php delete mode 100644 vendor/symfony/css-selector/XPath/Extension/CombinationExtension.php delete mode 100644 vendor/symfony/css-selector/XPath/Extension/ExtensionInterface.php delete mode 100644 vendor/symfony/css-selector/XPath/Extension/FunctionExtension.php delete mode 100644 vendor/symfony/css-selector/XPath/Extension/HtmlExtension.php delete mode 100644 vendor/symfony/css-selector/XPath/Extension/NodeExtension.php delete mode 100644 vendor/symfony/css-selector/XPath/Extension/PseudoClassExtension.php delete mode 100644 vendor/symfony/css-selector/XPath/Translator.php delete mode 100644 vendor/symfony/css-selector/XPath/TranslatorInterface.php delete mode 100644 vendor/symfony/css-selector/XPath/XPathExpr.php delete mode 100644 vendor/symfony/css-selector/composer.json delete mode 100644 vendor/symfony/deprecation-contracts/CHANGELOG.md delete mode 100644 vendor/symfony/deprecation-contracts/LICENSE delete mode 100644 vendor/symfony/deprecation-contracts/README.md delete mode 100644 vendor/symfony/deprecation-contracts/composer.json delete mode 100644 vendor/symfony/deprecation-contracts/function.php delete mode 100644 vendor/symfony/error-handler/BufferingLogger.php delete mode 100644 vendor/symfony/error-handler/CHANGELOG.md delete mode 100644 vendor/symfony/error-handler/Debug.php delete mode 100644 vendor/symfony/error-handler/DebugClassLoader.php delete mode 100644 vendor/symfony/error-handler/Error/ClassNotFoundError.php delete mode 100644 vendor/symfony/error-handler/Error/FatalError.php delete mode 100644 vendor/symfony/error-handler/Error/OutOfMemoryError.php delete mode 100644 vendor/symfony/error-handler/Error/UndefinedFunctionError.php delete mode 100644 vendor/symfony/error-handler/Error/UndefinedMethodError.php delete mode 100644 vendor/symfony/error-handler/ErrorEnhancer/ClassNotFoundErrorEnhancer.php delete mode 100644 vendor/symfony/error-handler/ErrorEnhancer/ErrorEnhancerInterface.php delete mode 100644 vendor/symfony/error-handler/ErrorEnhancer/UndefinedFunctionErrorEnhancer.php delete mode 100644 vendor/symfony/error-handler/ErrorEnhancer/UndefinedMethodErrorEnhancer.php delete mode 100644 vendor/symfony/error-handler/ErrorHandler.php delete mode 100644 vendor/symfony/error-handler/ErrorRenderer/CliErrorRenderer.php delete mode 100644 vendor/symfony/error-handler/ErrorRenderer/ErrorRendererInterface.php delete mode 100644 vendor/symfony/error-handler/ErrorRenderer/FileLinkFormatter.php delete mode 100644 vendor/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php delete mode 100644 vendor/symfony/error-handler/ErrorRenderer/SerializerErrorRenderer.php delete mode 100644 vendor/symfony/error-handler/Exception/FlattenException.php delete mode 100644 vendor/symfony/error-handler/Exception/SilencedErrorContext.php delete mode 100644 vendor/symfony/error-handler/Internal/TentativeTypes.php delete mode 100644 vendor/symfony/error-handler/LICENSE delete mode 100644 vendor/symfony/error-handler/README.md delete mode 100644 vendor/symfony/error-handler/Resources/assets/css/error.css delete mode 100644 vendor/symfony/error-handler/Resources/assets/css/exception.css delete mode 100644 vendor/symfony/error-handler/Resources/assets/css/exception_full.css delete mode 100644 vendor/symfony/error-handler/Resources/assets/images/chevron-right.svg delete mode 100644 vendor/symfony/error-handler/Resources/assets/images/favicon.png.base64 delete mode 100644 vendor/symfony/error-handler/Resources/assets/images/icon-book.svg delete mode 100644 vendor/symfony/error-handler/Resources/assets/images/icon-copy.svg delete mode 100644 vendor/symfony/error-handler/Resources/assets/images/icon-minus-square-o.svg delete mode 100644 vendor/symfony/error-handler/Resources/assets/images/icon-minus-square.svg delete mode 100644 vendor/symfony/error-handler/Resources/assets/images/icon-plus-square-o.svg delete mode 100644 vendor/symfony/error-handler/Resources/assets/images/icon-plus-square.svg delete mode 100644 vendor/symfony/error-handler/Resources/assets/images/icon-support.svg delete mode 100644 vendor/symfony/error-handler/Resources/assets/images/symfony-ghost.svg.php delete mode 100644 vendor/symfony/error-handler/Resources/assets/images/symfony-logo.svg delete mode 100644 vendor/symfony/error-handler/Resources/assets/js/exception.js delete mode 100755 vendor/symfony/error-handler/Resources/bin/extract-tentative-return-types.php delete mode 100755 vendor/symfony/error-handler/Resources/bin/patch-type-declarations delete mode 100644 vendor/symfony/error-handler/Resources/views/error.html.php delete mode 100644 vendor/symfony/error-handler/Resources/views/exception.html.php delete mode 100644 vendor/symfony/error-handler/Resources/views/exception_full.html.php delete mode 100644 vendor/symfony/error-handler/Resources/views/logs.html.php delete mode 100644 vendor/symfony/error-handler/Resources/views/trace.html.php delete mode 100644 vendor/symfony/error-handler/Resources/views/traces.html.php delete mode 100644 vendor/symfony/error-handler/Resources/views/traces_text.html.php delete mode 100644 vendor/symfony/error-handler/ThrowableUtils.php delete mode 100644 vendor/symfony/error-handler/composer.json delete mode 100644 vendor/symfony/event-dispatcher-contracts/CHANGELOG.md delete mode 100644 vendor/symfony/event-dispatcher-contracts/Event.php delete mode 100644 vendor/symfony/event-dispatcher-contracts/EventDispatcherInterface.php delete mode 100644 vendor/symfony/event-dispatcher-contracts/LICENSE delete mode 100644 vendor/symfony/event-dispatcher-contracts/README.md delete mode 100644 vendor/symfony/event-dispatcher-contracts/composer.json delete mode 100644 vendor/symfony/event-dispatcher/Attribute/AsEventListener.php delete mode 100644 vendor/symfony/event-dispatcher/CHANGELOG.md delete mode 100644 vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php delete mode 100644 vendor/symfony/event-dispatcher/Debug/WrappedListener.php delete mode 100644 vendor/symfony/event-dispatcher/DependencyInjection/AddEventAliasesPass.php delete mode 100644 vendor/symfony/event-dispatcher/DependencyInjection/RegisterListenersPass.php delete mode 100644 vendor/symfony/event-dispatcher/EventDispatcher.php delete mode 100644 vendor/symfony/event-dispatcher/EventDispatcherInterface.php delete mode 100644 vendor/symfony/event-dispatcher/EventSubscriberInterface.php delete mode 100644 vendor/symfony/event-dispatcher/GenericEvent.php delete mode 100644 vendor/symfony/event-dispatcher/ImmutableEventDispatcher.php delete mode 100644 vendor/symfony/event-dispatcher/LICENSE delete mode 100644 vendor/symfony/event-dispatcher/README.md delete mode 100644 vendor/symfony/event-dispatcher/composer.json delete mode 100644 vendor/symfony/finder/CHANGELOG.md delete mode 100644 vendor/symfony/finder/Comparator/Comparator.php delete mode 100644 vendor/symfony/finder/Comparator/DateComparator.php delete mode 100644 vendor/symfony/finder/Comparator/NumberComparator.php delete mode 100644 vendor/symfony/finder/Exception/AccessDeniedException.php delete mode 100644 vendor/symfony/finder/Exception/DirectoryNotFoundException.php delete mode 100644 vendor/symfony/finder/Finder.php delete mode 100644 vendor/symfony/finder/Gitignore.php delete mode 100644 vendor/symfony/finder/Glob.php delete mode 100644 vendor/symfony/finder/Iterator/CustomFilterIterator.php delete mode 100644 vendor/symfony/finder/Iterator/DateRangeFilterIterator.php delete mode 100644 vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php delete mode 100644 vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php delete mode 100644 vendor/symfony/finder/Iterator/FileTypeFilterIterator.php delete mode 100644 vendor/symfony/finder/Iterator/FilecontentFilterIterator.php delete mode 100644 vendor/symfony/finder/Iterator/FilenameFilterIterator.php delete mode 100644 vendor/symfony/finder/Iterator/LazyIterator.php delete mode 100644 vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php delete mode 100644 vendor/symfony/finder/Iterator/PathFilterIterator.php delete mode 100644 vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php delete mode 100644 vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php delete mode 100644 vendor/symfony/finder/Iterator/SortableIterator.php delete mode 100644 vendor/symfony/finder/Iterator/VcsIgnoredFilterIterator.php delete mode 100644 vendor/symfony/finder/LICENSE delete mode 100644 vendor/symfony/finder/README.md delete mode 100644 vendor/symfony/finder/SplFileInfo.php delete mode 100644 vendor/symfony/finder/composer.json delete mode 100644 vendor/symfony/html-sanitizer/CHANGELOG.md delete mode 100644 vendor/symfony/html-sanitizer/HtmlSanitizer.php delete mode 100644 vendor/symfony/html-sanitizer/HtmlSanitizerConfig.php delete mode 100644 vendor/symfony/html-sanitizer/HtmlSanitizerInterface.php delete mode 100644 vendor/symfony/html-sanitizer/LICENSE delete mode 100644 vendor/symfony/html-sanitizer/Parser/MastermindsParser.php delete mode 100644 vendor/symfony/html-sanitizer/Parser/ParserInterface.php delete mode 100644 vendor/symfony/html-sanitizer/README.md delete mode 100644 vendor/symfony/html-sanitizer/Reference/W3CReference.php delete mode 100644 vendor/symfony/html-sanitizer/TextSanitizer/StringSanitizer.php delete mode 100644 vendor/symfony/html-sanitizer/TextSanitizer/UrlSanitizer.php delete mode 100644 vendor/symfony/html-sanitizer/Visitor/AttributeSanitizer/AttributeSanitizerInterface.php delete mode 100644 vendor/symfony/html-sanitizer/Visitor/AttributeSanitizer/UrlAttributeSanitizer.php delete mode 100644 vendor/symfony/html-sanitizer/Visitor/DomVisitor.php delete mode 100644 vendor/symfony/html-sanitizer/Visitor/Model/Cursor.php delete mode 100644 vendor/symfony/html-sanitizer/Visitor/Node/BlockedNode.php delete mode 100644 vendor/symfony/html-sanitizer/Visitor/Node/DocumentNode.php delete mode 100644 vendor/symfony/html-sanitizer/Visitor/Node/Node.php delete mode 100644 vendor/symfony/html-sanitizer/Visitor/Node/NodeInterface.php delete mode 100644 vendor/symfony/html-sanitizer/Visitor/Node/TextNode.php delete mode 100644 vendor/symfony/html-sanitizer/composer.json delete mode 100644 vendor/symfony/http-foundation/AcceptHeader.php delete mode 100644 vendor/symfony/http-foundation/AcceptHeaderItem.php delete mode 100644 vendor/symfony/http-foundation/BinaryFileResponse.php delete mode 100644 vendor/symfony/http-foundation/CHANGELOG.md delete mode 100644 vendor/symfony/http-foundation/ChainRequestMatcher.php delete mode 100644 vendor/symfony/http-foundation/Cookie.php delete mode 100644 vendor/symfony/http-foundation/Exception/BadRequestException.php delete mode 100644 vendor/symfony/http-foundation/Exception/ConflictingHeadersException.php delete mode 100644 vendor/symfony/http-foundation/Exception/JsonException.php delete mode 100644 vendor/symfony/http-foundation/Exception/RequestExceptionInterface.php delete mode 100644 vendor/symfony/http-foundation/Exception/SessionNotFoundException.php delete mode 100644 vendor/symfony/http-foundation/Exception/SuspiciousOperationException.php delete mode 100644 vendor/symfony/http-foundation/Exception/UnexpectedValueException.php delete mode 100644 vendor/symfony/http-foundation/ExpressionRequestMatcher.php delete mode 100644 vendor/symfony/http-foundation/File/Exception/AccessDeniedException.php delete mode 100644 vendor/symfony/http-foundation/File/Exception/CannotWriteFileException.php delete mode 100644 vendor/symfony/http-foundation/File/Exception/ExtensionFileException.php delete mode 100644 vendor/symfony/http-foundation/File/Exception/FileException.php delete mode 100644 vendor/symfony/http-foundation/File/Exception/FileNotFoundException.php delete mode 100644 vendor/symfony/http-foundation/File/Exception/FormSizeFileException.php delete mode 100644 vendor/symfony/http-foundation/File/Exception/IniSizeFileException.php delete mode 100644 vendor/symfony/http-foundation/File/Exception/NoFileException.php delete mode 100644 vendor/symfony/http-foundation/File/Exception/NoTmpDirFileException.php delete mode 100644 vendor/symfony/http-foundation/File/Exception/PartialFileException.php delete mode 100644 vendor/symfony/http-foundation/File/Exception/UnexpectedTypeException.php delete mode 100644 vendor/symfony/http-foundation/File/Exception/UploadException.php delete mode 100644 vendor/symfony/http-foundation/File/File.php delete mode 100644 vendor/symfony/http-foundation/File/Stream.php delete mode 100644 vendor/symfony/http-foundation/File/UploadedFile.php delete mode 100644 vendor/symfony/http-foundation/FileBag.php delete mode 100644 vendor/symfony/http-foundation/HeaderBag.php delete mode 100644 vendor/symfony/http-foundation/HeaderUtils.php delete mode 100644 vendor/symfony/http-foundation/InputBag.php delete mode 100644 vendor/symfony/http-foundation/IpUtils.php delete mode 100644 vendor/symfony/http-foundation/JsonResponse.php delete mode 100644 vendor/symfony/http-foundation/LICENSE delete mode 100644 vendor/symfony/http-foundation/ParameterBag.php delete mode 100644 vendor/symfony/http-foundation/README.md delete mode 100644 vendor/symfony/http-foundation/RateLimiter/AbstractRequestRateLimiter.php delete mode 100644 vendor/symfony/http-foundation/RateLimiter/PeekableRequestRateLimiterInterface.php delete mode 100644 vendor/symfony/http-foundation/RateLimiter/RequestRateLimiterInterface.php delete mode 100644 vendor/symfony/http-foundation/RedirectResponse.php delete mode 100644 vendor/symfony/http-foundation/Request.php delete mode 100644 vendor/symfony/http-foundation/RequestMatcher.php delete mode 100644 vendor/symfony/http-foundation/RequestMatcher/AttributesRequestMatcher.php delete mode 100644 vendor/symfony/http-foundation/RequestMatcher/ExpressionRequestMatcher.php delete mode 100644 vendor/symfony/http-foundation/RequestMatcher/HostRequestMatcher.php delete mode 100644 vendor/symfony/http-foundation/RequestMatcher/IpsRequestMatcher.php delete mode 100644 vendor/symfony/http-foundation/RequestMatcher/IsJsonRequestMatcher.php delete mode 100644 vendor/symfony/http-foundation/RequestMatcher/MethodRequestMatcher.php delete mode 100644 vendor/symfony/http-foundation/RequestMatcher/PathRequestMatcher.php delete mode 100644 vendor/symfony/http-foundation/RequestMatcher/PortRequestMatcher.php delete mode 100644 vendor/symfony/http-foundation/RequestMatcher/SchemeRequestMatcher.php delete mode 100644 vendor/symfony/http-foundation/RequestMatcherInterface.php delete mode 100644 vendor/symfony/http-foundation/RequestStack.php delete mode 100644 vendor/symfony/http-foundation/Response.php delete mode 100644 vendor/symfony/http-foundation/ResponseHeaderBag.php delete mode 100644 vendor/symfony/http-foundation/ServerBag.php delete mode 100644 vendor/symfony/http-foundation/Session/Attribute/AttributeBag.php delete mode 100644 vendor/symfony/http-foundation/Session/Attribute/AttributeBagInterface.php delete mode 100644 vendor/symfony/http-foundation/Session/Flash/AutoExpireFlashBag.php delete mode 100644 vendor/symfony/http-foundation/Session/Flash/FlashBag.php delete mode 100644 vendor/symfony/http-foundation/Session/Flash/FlashBagInterface.php delete mode 100644 vendor/symfony/http-foundation/Session/FlashBagAwareSessionInterface.php delete mode 100644 vendor/symfony/http-foundation/Session/Session.php delete mode 100644 vendor/symfony/http-foundation/Session/SessionBagInterface.php delete mode 100644 vendor/symfony/http-foundation/Session/SessionBagProxy.php delete mode 100644 vendor/symfony/http-foundation/Session/SessionFactory.php delete mode 100644 vendor/symfony/http-foundation/Session/SessionFactoryInterface.php delete mode 100644 vendor/symfony/http-foundation/Session/SessionInterface.php delete mode 100644 vendor/symfony/http-foundation/Session/SessionUtils.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/Handler/AbstractSessionHandler.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/Handler/IdentityMarshaller.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/Handler/MarshallingSessionHandler.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/Handler/MemcachedSessionHandler.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/Handler/MigratingSessionHandler.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/Handler/MongoDbSessionHandler.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/Handler/NullSessionHandler.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/Handler/PdoSessionHandler.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/Handler/RedisSessionHandler.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/Handler/SessionHandlerFactory.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/Handler/StrictSessionHandler.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/MetadataBag.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/MockArraySessionStorage.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorage.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/MockFileSessionStorageFactory.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/NativeSessionStorage.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/NativeSessionStorageFactory.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorage.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/PhpBridgeSessionStorageFactory.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/Proxy/AbstractProxy.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/Proxy/SessionHandlerProxy.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/SessionStorageFactoryInterface.php delete mode 100644 vendor/symfony/http-foundation/Session/Storage/SessionStorageInterface.php delete mode 100644 vendor/symfony/http-foundation/StreamedJsonResponse.php delete mode 100644 vendor/symfony/http-foundation/StreamedResponse.php delete mode 100644 vendor/symfony/http-foundation/Test/Constraint/RequestAttributeValueSame.php delete mode 100644 vendor/symfony/http-foundation/Test/Constraint/ResponseCookieValueSame.php delete mode 100644 vendor/symfony/http-foundation/Test/Constraint/ResponseFormatSame.php delete mode 100644 vendor/symfony/http-foundation/Test/Constraint/ResponseHasCookie.php delete mode 100644 vendor/symfony/http-foundation/Test/Constraint/ResponseHasHeader.php delete mode 100644 vendor/symfony/http-foundation/Test/Constraint/ResponseHeaderLocationSame.php delete mode 100644 vendor/symfony/http-foundation/Test/Constraint/ResponseHeaderSame.php delete mode 100644 vendor/symfony/http-foundation/Test/Constraint/ResponseIsRedirected.php delete mode 100644 vendor/symfony/http-foundation/Test/Constraint/ResponseIsSuccessful.php delete mode 100644 vendor/symfony/http-foundation/Test/Constraint/ResponseIsUnprocessable.php delete mode 100644 vendor/symfony/http-foundation/Test/Constraint/ResponseStatusCodeSame.php delete mode 100644 vendor/symfony/http-foundation/UriSigner.php delete mode 100644 vendor/symfony/http-foundation/UrlHelper.php delete mode 100644 vendor/symfony/http-foundation/composer.json delete mode 100644 vendor/symfony/http-kernel/Attribute/AsController.php delete mode 100644 vendor/symfony/http-kernel/Attribute/AsTargetedValueResolver.php delete mode 100644 vendor/symfony/http-kernel/Attribute/Cache.php delete mode 100644 vendor/symfony/http-kernel/Attribute/MapDateTime.php delete mode 100644 vendor/symfony/http-kernel/Attribute/MapQueryParameter.php delete mode 100644 vendor/symfony/http-kernel/Attribute/MapQueryString.php delete mode 100644 vendor/symfony/http-kernel/Attribute/MapRequestPayload.php delete mode 100644 vendor/symfony/http-kernel/Attribute/ValueResolver.php delete mode 100644 vendor/symfony/http-kernel/Attribute/WithHttpStatus.php delete mode 100644 vendor/symfony/http-kernel/Attribute/WithLogLevel.php delete mode 100644 vendor/symfony/http-kernel/Bundle/AbstractBundle.php delete mode 100644 vendor/symfony/http-kernel/Bundle/Bundle.php delete mode 100644 vendor/symfony/http-kernel/Bundle/BundleExtension.php delete mode 100644 vendor/symfony/http-kernel/Bundle/BundleInterface.php delete mode 100644 vendor/symfony/http-kernel/CHANGELOG.md delete mode 100644 vendor/symfony/http-kernel/CacheClearer/CacheClearerInterface.php delete mode 100644 vendor/symfony/http-kernel/CacheClearer/ChainCacheClearer.php delete mode 100644 vendor/symfony/http-kernel/CacheClearer/Psr6CacheClearer.php delete mode 100644 vendor/symfony/http-kernel/CacheWarmer/CacheWarmer.php delete mode 100644 vendor/symfony/http-kernel/CacheWarmer/CacheWarmerAggregate.php delete mode 100644 vendor/symfony/http-kernel/CacheWarmer/CacheWarmerInterface.php delete mode 100644 vendor/symfony/http-kernel/CacheWarmer/WarmableInterface.php delete mode 100644 vendor/symfony/http-kernel/Config/FileLocator.php delete mode 100644 vendor/symfony/http-kernel/Controller/ArgumentResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/ArgumentResolver/BackedEnumValueResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/ArgumentResolver/DateTimeValueResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/ArgumentResolver/DefaultValueResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/ArgumentResolver/NotTaggedControllerValueResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/ArgumentResolver/QueryParameterValueResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestAttributeValueResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestPayloadValueResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/ArgumentResolver/RequestValueResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/ArgumentResolver/ServiceValueResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/ArgumentResolver/SessionValueResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/ArgumentResolver/TraceableValueResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/ArgumentResolver/UidValueResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/ArgumentResolver/VariadicValueResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/ArgumentResolverInterface.php delete mode 100644 vendor/symfony/http-kernel/Controller/ArgumentValueResolverInterface.php delete mode 100644 vendor/symfony/http-kernel/Controller/ContainerControllerResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/ControllerReference.php delete mode 100644 vendor/symfony/http-kernel/Controller/ControllerResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/ControllerResolverInterface.php delete mode 100644 vendor/symfony/http-kernel/Controller/ErrorController.php delete mode 100644 vendor/symfony/http-kernel/Controller/TraceableArgumentResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/TraceableControllerResolver.php delete mode 100644 vendor/symfony/http-kernel/Controller/ValueResolverInterface.php delete mode 100644 vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadata.php delete mode 100644 vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactory.php delete mode 100644 vendor/symfony/http-kernel/ControllerMetadata/ArgumentMetadataFactoryInterface.php delete mode 100644 vendor/symfony/http-kernel/DataCollector/AjaxDataCollector.php delete mode 100644 vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php delete mode 100644 vendor/symfony/http-kernel/DataCollector/DataCollector.php delete mode 100644 vendor/symfony/http-kernel/DataCollector/DataCollectorInterface.php delete mode 100644 vendor/symfony/http-kernel/DataCollector/DumpDataCollector.php delete mode 100644 vendor/symfony/http-kernel/DataCollector/EventDataCollector.php delete mode 100644 vendor/symfony/http-kernel/DataCollector/ExceptionDataCollector.php delete mode 100644 vendor/symfony/http-kernel/DataCollector/LateDataCollectorInterface.php delete mode 100644 vendor/symfony/http-kernel/DataCollector/LoggerDataCollector.php delete mode 100644 vendor/symfony/http-kernel/DataCollector/MemoryDataCollector.php delete mode 100644 vendor/symfony/http-kernel/DataCollector/RequestDataCollector.php delete mode 100644 vendor/symfony/http-kernel/DataCollector/RouterDataCollector.php delete mode 100644 vendor/symfony/http-kernel/DataCollector/TimeDataCollector.php delete mode 100644 vendor/symfony/http-kernel/Debug/ErrorHandlerConfigurator.php delete mode 100644 vendor/symfony/http-kernel/Debug/FileLinkFormatter.php delete mode 100644 vendor/symfony/http-kernel/Debug/TraceableEventDispatcher.php delete mode 100644 vendor/symfony/http-kernel/Debug/VirtualRequestStack.php delete mode 100644 vendor/symfony/http-kernel/DependencyInjection/AddAnnotatedClassesToCachePass.php delete mode 100644 vendor/symfony/http-kernel/DependencyInjection/ConfigurableExtension.php delete mode 100644 vendor/symfony/http-kernel/DependencyInjection/ControllerArgumentValueResolverPass.php delete mode 100644 vendor/symfony/http-kernel/DependencyInjection/Extension.php delete mode 100644 vendor/symfony/http-kernel/DependencyInjection/FragmentRendererPass.php delete mode 100644 vendor/symfony/http-kernel/DependencyInjection/LazyLoadingFragmentHandler.php delete mode 100644 vendor/symfony/http-kernel/DependencyInjection/LoggerPass.php delete mode 100644 vendor/symfony/http-kernel/DependencyInjection/MergeExtensionConfigurationPass.php delete mode 100644 vendor/symfony/http-kernel/DependencyInjection/RegisterControllerArgumentLocatorsPass.php delete mode 100644 vendor/symfony/http-kernel/DependencyInjection/RegisterLocaleAwareServicesPass.php delete mode 100644 vendor/symfony/http-kernel/DependencyInjection/RemoveEmptyControllerArgumentLocatorsPass.php delete mode 100644 vendor/symfony/http-kernel/DependencyInjection/ResettableServicePass.php delete mode 100644 vendor/symfony/http-kernel/DependencyInjection/ServicesResetter.php delete mode 100644 vendor/symfony/http-kernel/Event/ControllerArgumentsEvent.php delete mode 100644 vendor/symfony/http-kernel/Event/ControllerEvent.php delete mode 100644 vendor/symfony/http-kernel/Event/ExceptionEvent.php delete mode 100644 vendor/symfony/http-kernel/Event/FinishRequestEvent.php delete mode 100644 vendor/symfony/http-kernel/Event/KernelEvent.php delete mode 100644 vendor/symfony/http-kernel/Event/RequestEvent.php delete mode 100644 vendor/symfony/http-kernel/Event/ResponseEvent.php delete mode 100644 vendor/symfony/http-kernel/Event/TerminateEvent.php delete mode 100644 vendor/symfony/http-kernel/Event/ViewEvent.php delete mode 100644 vendor/symfony/http-kernel/EventListener/AbstractSessionListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/AddRequestFormatsListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/CacheAttributeListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/DebugHandlersListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/DisallowRobotsIndexingListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/DumpListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/ErrorListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/FragmentListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/LocaleAwareListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/LocaleListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/ProfilerListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/ResponseListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/RouterListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/SessionListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/StreamedResponseListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/SurrogateListener.php delete mode 100644 vendor/symfony/http-kernel/EventListener/ValidateRequestListener.php delete mode 100644 vendor/symfony/http-kernel/Exception/AccessDeniedHttpException.php delete mode 100644 vendor/symfony/http-kernel/Exception/BadRequestHttpException.php delete mode 100644 vendor/symfony/http-kernel/Exception/ConflictHttpException.php delete mode 100644 vendor/symfony/http-kernel/Exception/ControllerDoesNotReturnResponseException.php delete mode 100644 vendor/symfony/http-kernel/Exception/GoneHttpException.php delete mode 100644 vendor/symfony/http-kernel/Exception/HttpException.php delete mode 100644 vendor/symfony/http-kernel/Exception/HttpExceptionInterface.php delete mode 100644 vendor/symfony/http-kernel/Exception/InvalidMetadataException.php delete mode 100644 vendor/symfony/http-kernel/Exception/LengthRequiredHttpException.php delete mode 100644 vendor/symfony/http-kernel/Exception/LockedHttpException.php delete mode 100644 vendor/symfony/http-kernel/Exception/MethodNotAllowedHttpException.php delete mode 100644 vendor/symfony/http-kernel/Exception/NotAcceptableHttpException.php delete mode 100644 vendor/symfony/http-kernel/Exception/NotFoundHttpException.php delete mode 100644 vendor/symfony/http-kernel/Exception/PreconditionFailedHttpException.php delete mode 100644 vendor/symfony/http-kernel/Exception/PreconditionRequiredHttpException.php delete mode 100644 vendor/symfony/http-kernel/Exception/ResolverNotFoundException.php delete mode 100644 vendor/symfony/http-kernel/Exception/ServiceUnavailableHttpException.php delete mode 100644 vendor/symfony/http-kernel/Exception/TooManyRequestsHttpException.php delete mode 100644 vendor/symfony/http-kernel/Exception/UnauthorizedHttpException.php delete mode 100644 vendor/symfony/http-kernel/Exception/UnexpectedSessionUsageException.php delete mode 100644 vendor/symfony/http-kernel/Exception/UnprocessableEntityHttpException.php delete mode 100644 vendor/symfony/http-kernel/Exception/UnsupportedMediaTypeHttpException.php delete mode 100644 vendor/symfony/http-kernel/Fragment/AbstractSurrogateFragmentRenderer.php delete mode 100644 vendor/symfony/http-kernel/Fragment/EsiFragmentRenderer.php delete mode 100644 vendor/symfony/http-kernel/Fragment/FragmentHandler.php delete mode 100644 vendor/symfony/http-kernel/Fragment/FragmentRendererInterface.php delete mode 100644 vendor/symfony/http-kernel/Fragment/FragmentUriGenerator.php delete mode 100644 vendor/symfony/http-kernel/Fragment/FragmentUriGeneratorInterface.php delete mode 100644 vendor/symfony/http-kernel/Fragment/HIncludeFragmentRenderer.php delete mode 100644 vendor/symfony/http-kernel/Fragment/InlineFragmentRenderer.php delete mode 100644 vendor/symfony/http-kernel/Fragment/RoutableFragmentRenderer.php delete mode 100644 vendor/symfony/http-kernel/Fragment/SsiFragmentRenderer.php delete mode 100644 vendor/symfony/http-kernel/HttpCache/AbstractSurrogate.php delete mode 100644 vendor/symfony/http-kernel/HttpCache/Esi.php delete mode 100644 vendor/symfony/http-kernel/HttpCache/HttpCache.php delete mode 100644 vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategy.php delete mode 100644 vendor/symfony/http-kernel/HttpCache/ResponseCacheStrategyInterface.php delete mode 100644 vendor/symfony/http-kernel/HttpCache/Ssi.php delete mode 100644 vendor/symfony/http-kernel/HttpCache/Store.php delete mode 100644 vendor/symfony/http-kernel/HttpCache/StoreInterface.php delete mode 100644 vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php delete mode 100644 vendor/symfony/http-kernel/HttpCache/SurrogateInterface.php delete mode 100644 vendor/symfony/http-kernel/HttpClientKernel.php delete mode 100644 vendor/symfony/http-kernel/HttpKernel.php delete mode 100644 vendor/symfony/http-kernel/HttpKernelBrowser.php delete mode 100644 vendor/symfony/http-kernel/HttpKernelInterface.php delete mode 100644 vendor/symfony/http-kernel/Kernel.php delete mode 100644 vendor/symfony/http-kernel/KernelEvents.php delete mode 100644 vendor/symfony/http-kernel/KernelInterface.php delete mode 100644 vendor/symfony/http-kernel/LICENSE delete mode 100644 vendor/symfony/http-kernel/Log/DebugLoggerConfigurator.php delete mode 100644 vendor/symfony/http-kernel/Log/DebugLoggerInterface.php delete mode 100644 vendor/symfony/http-kernel/Log/Logger.php delete mode 100644 vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php delete mode 100644 vendor/symfony/http-kernel/Profiler/Profile.php delete mode 100644 vendor/symfony/http-kernel/Profiler/Profiler.php delete mode 100644 vendor/symfony/http-kernel/Profiler/ProfilerStorageInterface.php delete mode 100644 vendor/symfony/http-kernel/README.md delete mode 100644 vendor/symfony/http-kernel/RebootableInterface.php delete mode 100644 vendor/symfony/http-kernel/Resources/welcome.html.php delete mode 100644 vendor/symfony/http-kernel/TerminableInterface.php delete mode 100644 vendor/symfony/http-kernel/UriSigner.php delete mode 100644 vendor/symfony/http-kernel/composer.json delete mode 100644 vendor/symfony/mailer/CHANGELOG.md delete mode 100644 vendor/symfony/mailer/Command/MailerTestCommand.php delete mode 100644 vendor/symfony/mailer/DataCollector/MessageDataCollector.php delete mode 100644 vendor/symfony/mailer/DelayedEnvelope.php delete mode 100644 vendor/symfony/mailer/Envelope.php delete mode 100644 vendor/symfony/mailer/Event/FailedMessageEvent.php delete mode 100644 vendor/symfony/mailer/Event/MessageEvent.php delete mode 100644 vendor/symfony/mailer/Event/MessageEvents.php delete mode 100644 vendor/symfony/mailer/Event/SentMessageEvent.php delete mode 100644 vendor/symfony/mailer/EventListener/EnvelopeListener.php delete mode 100644 vendor/symfony/mailer/EventListener/MessageListener.php delete mode 100644 vendor/symfony/mailer/EventListener/MessageLoggerListener.php delete mode 100644 vendor/symfony/mailer/EventListener/MessengerTransportListener.php delete mode 100644 vendor/symfony/mailer/Exception/ExceptionInterface.php delete mode 100644 vendor/symfony/mailer/Exception/HttpTransportException.php delete mode 100644 vendor/symfony/mailer/Exception/IncompleteDsnException.php delete mode 100644 vendor/symfony/mailer/Exception/InvalidArgumentException.php delete mode 100644 vendor/symfony/mailer/Exception/LogicException.php delete mode 100644 vendor/symfony/mailer/Exception/RuntimeException.php delete mode 100644 vendor/symfony/mailer/Exception/TransportException.php delete mode 100644 vendor/symfony/mailer/Exception/TransportExceptionInterface.php delete mode 100644 vendor/symfony/mailer/Exception/UnsupportedSchemeException.php delete mode 100644 vendor/symfony/mailer/Header/MetadataHeader.php delete mode 100644 vendor/symfony/mailer/Header/TagHeader.php delete mode 100644 vendor/symfony/mailer/LICENSE delete mode 100644 vendor/symfony/mailer/Mailer.php delete mode 100644 vendor/symfony/mailer/MailerInterface.php delete mode 100644 vendor/symfony/mailer/Messenger/MessageHandler.php delete mode 100644 vendor/symfony/mailer/Messenger/SendEmailMessage.php delete mode 100644 vendor/symfony/mailer/README.md delete mode 100644 vendor/symfony/mailer/SentMessage.php delete mode 100644 vendor/symfony/mailer/Test/Constraint/EmailCount.php delete mode 100644 vendor/symfony/mailer/Test/Constraint/EmailIsQueued.php delete mode 100644 vendor/symfony/mailer/Test/TransportFactoryTestCase.php delete mode 100644 vendor/symfony/mailer/Transport.php delete mode 100644 vendor/symfony/mailer/Transport/AbstractApiTransport.php delete mode 100644 vendor/symfony/mailer/Transport/AbstractHttpTransport.php delete mode 100644 vendor/symfony/mailer/Transport/AbstractTransport.php delete mode 100644 vendor/symfony/mailer/Transport/AbstractTransportFactory.php delete mode 100644 vendor/symfony/mailer/Transport/Dsn.php delete mode 100644 vendor/symfony/mailer/Transport/FailoverTransport.php delete mode 100644 vendor/symfony/mailer/Transport/NativeTransportFactory.php delete mode 100644 vendor/symfony/mailer/Transport/NullTransport.php delete mode 100644 vendor/symfony/mailer/Transport/NullTransportFactory.php delete mode 100644 vendor/symfony/mailer/Transport/RoundRobinTransport.php delete mode 100644 vendor/symfony/mailer/Transport/SendmailTransport.php delete mode 100644 vendor/symfony/mailer/Transport/SendmailTransportFactory.php delete mode 100644 vendor/symfony/mailer/Transport/Smtp/Auth/AuthenticatorInterface.php delete mode 100644 vendor/symfony/mailer/Transport/Smtp/Auth/CramMd5Authenticator.php delete mode 100644 vendor/symfony/mailer/Transport/Smtp/Auth/LoginAuthenticator.php delete mode 100644 vendor/symfony/mailer/Transport/Smtp/Auth/PlainAuthenticator.php delete mode 100644 vendor/symfony/mailer/Transport/Smtp/Auth/XOAuth2Authenticator.php delete mode 100644 vendor/symfony/mailer/Transport/Smtp/EsmtpTransport.php delete mode 100644 vendor/symfony/mailer/Transport/Smtp/EsmtpTransportFactory.php delete mode 100644 vendor/symfony/mailer/Transport/Smtp/SmtpTransport.php delete mode 100644 vendor/symfony/mailer/Transport/Smtp/Stream/AbstractStream.php delete mode 100644 vendor/symfony/mailer/Transport/Smtp/Stream/ProcessStream.php delete mode 100644 vendor/symfony/mailer/Transport/Smtp/Stream/SocketStream.php delete mode 100644 vendor/symfony/mailer/Transport/TransportFactoryInterface.php delete mode 100644 vendor/symfony/mailer/Transport/TransportInterface.php delete mode 100644 vendor/symfony/mailer/Transport/Transports.php delete mode 100644 vendor/symfony/mailer/composer.json delete mode 100644 vendor/symfony/mime/Address.php delete mode 100644 vendor/symfony/mime/BodyRendererInterface.php delete mode 100644 vendor/symfony/mime/CHANGELOG.md delete mode 100644 vendor/symfony/mime/CharacterStream.php delete mode 100644 vendor/symfony/mime/Crypto/DkimOptions.php delete mode 100644 vendor/symfony/mime/Crypto/DkimSigner.php delete mode 100644 vendor/symfony/mime/Crypto/SMime.php delete mode 100644 vendor/symfony/mime/Crypto/SMimeEncrypter.php delete mode 100644 vendor/symfony/mime/Crypto/SMimeSigner.php delete mode 100644 vendor/symfony/mime/DependencyInjection/AddMimeTypeGuesserPass.php delete mode 100644 vendor/symfony/mime/DraftEmail.php delete mode 100644 vendor/symfony/mime/Email.php delete mode 100644 vendor/symfony/mime/Encoder/AddressEncoderInterface.php delete mode 100644 vendor/symfony/mime/Encoder/Base64ContentEncoder.php delete mode 100644 vendor/symfony/mime/Encoder/Base64Encoder.php delete mode 100644 vendor/symfony/mime/Encoder/Base64MimeHeaderEncoder.php delete mode 100644 vendor/symfony/mime/Encoder/ContentEncoderInterface.php delete mode 100644 vendor/symfony/mime/Encoder/EightBitContentEncoder.php delete mode 100644 vendor/symfony/mime/Encoder/EncoderInterface.php delete mode 100644 vendor/symfony/mime/Encoder/IdnAddressEncoder.php delete mode 100644 vendor/symfony/mime/Encoder/MimeHeaderEncoderInterface.php delete mode 100644 vendor/symfony/mime/Encoder/QpContentEncoder.php delete mode 100644 vendor/symfony/mime/Encoder/QpEncoder.php delete mode 100644 vendor/symfony/mime/Encoder/QpMimeHeaderEncoder.php delete mode 100644 vendor/symfony/mime/Encoder/Rfc2231Encoder.php delete mode 100644 vendor/symfony/mime/Exception/AddressEncoderException.php delete mode 100644 vendor/symfony/mime/Exception/ExceptionInterface.php delete mode 100644 vendor/symfony/mime/Exception/InvalidArgumentException.php delete mode 100644 vendor/symfony/mime/Exception/LogicException.php delete mode 100644 vendor/symfony/mime/Exception/RfcComplianceException.php delete mode 100644 vendor/symfony/mime/Exception/RuntimeException.php delete mode 100644 vendor/symfony/mime/FileBinaryMimeTypeGuesser.php delete mode 100644 vendor/symfony/mime/FileinfoMimeTypeGuesser.php delete mode 100644 vendor/symfony/mime/Header/AbstractHeader.php delete mode 100644 vendor/symfony/mime/Header/DateHeader.php delete mode 100644 vendor/symfony/mime/Header/HeaderInterface.php delete mode 100644 vendor/symfony/mime/Header/Headers.php delete mode 100644 vendor/symfony/mime/Header/IdentificationHeader.php delete mode 100644 vendor/symfony/mime/Header/MailboxHeader.php delete mode 100644 vendor/symfony/mime/Header/MailboxListHeader.php delete mode 100644 vendor/symfony/mime/Header/ParameterizedHeader.php delete mode 100644 vendor/symfony/mime/Header/PathHeader.php delete mode 100644 vendor/symfony/mime/Header/UnstructuredHeader.php delete mode 100644 vendor/symfony/mime/HtmlToTextConverter/DefaultHtmlToTextConverter.php delete mode 100644 vendor/symfony/mime/HtmlToTextConverter/HtmlToTextConverterInterface.php delete mode 100644 vendor/symfony/mime/HtmlToTextConverter/LeagueHtmlToMarkdownConverter.php delete mode 100644 vendor/symfony/mime/LICENSE delete mode 100644 vendor/symfony/mime/Message.php delete mode 100644 vendor/symfony/mime/MessageConverter.php delete mode 100644 vendor/symfony/mime/MimeTypeGuesserInterface.php delete mode 100644 vendor/symfony/mime/MimeTypes.php delete mode 100644 vendor/symfony/mime/MimeTypesInterface.php delete mode 100644 vendor/symfony/mime/Part/AbstractMultipartPart.php delete mode 100644 vendor/symfony/mime/Part/AbstractPart.php delete mode 100644 vendor/symfony/mime/Part/DataPart.php delete mode 100644 vendor/symfony/mime/Part/File.php delete mode 100644 vendor/symfony/mime/Part/MessagePart.php delete mode 100644 vendor/symfony/mime/Part/Multipart/AlternativePart.php delete mode 100644 vendor/symfony/mime/Part/Multipart/DigestPart.php delete mode 100644 vendor/symfony/mime/Part/Multipart/FormDataPart.php delete mode 100644 vendor/symfony/mime/Part/Multipart/MixedPart.php delete mode 100644 vendor/symfony/mime/Part/Multipart/RelatedPart.php delete mode 100644 vendor/symfony/mime/Part/SMimePart.php delete mode 100644 vendor/symfony/mime/Part/TextPart.php delete mode 100644 vendor/symfony/mime/README.md delete mode 100644 vendor/symfony/mime/RawMessage.php delete mode 100644 vendor/symfony/mime/Resources/bin/update_mime_types.php delete mode 100644 vendor/symfony/mime/Test/Constraint/EmailAddressContains.php delete mode 100644 vendor/symfony/mime/Test/Constraint/EmailAttachmentCount.php delete mode 100644 vendor/symfony/mime/Test/Constraint/EmailHasHeader.php delete mode 100644 vendor/symfony/mime/Test/Constraint/EmailHeaderSame.php delete mode 100644 vendor/symfony/mime/Test/Constraint/EmailHtmlBodyContains.php delete mode 100644 vendor/symfony/mime/Test/Constraint/EmailSubjectContains.php delete mode 100644 vendor/symfony/mime/Test/Constraint/EmailTextBodyContains.php delete mode 100644 vendor/symfony/mime/composer.json delete mode 100644 vendor/symfony/polyfill-ctype/Ctype.php delete mode 100644 vendor/symfony/polyfill-ctype/LICENSE delete mode 100644 vendor/symfony/polyfill-ctype/README.md delete mode 100644 vendor/symfony/polyfill-ctype/bootstrap.php delete mode 100644 vendor/symfony/polyfill-ctype/bootstrap80.php delete mode 100644 vendor/symfony/polyfill-ctype/composer.json delete mode 100644 vendor/symfony/polyfill-intl-grapheme/Grapheme.php delete mode 100644 vendor/symfony/polyfill-intl-grapheme/LICENSE delete mode 100644 vendor/symfony/polyfill-intl-grapheme/README.md delete mode 100644 vendor/symfony/polyfill-intl-grapheme/bootstrap.php delete mode 100644 vendor/symfony/polyfill-intl-grapheme/bootstrap80.php delete mode 100644 vendor/symfony/polyfill-intl-grapheme/composer.json delete mode 100644 vendor/symfony/polyfill-intl-idn/Idn.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Info.php delete mode 100644 vendor/symfony/polyfill-intl-idn/LICENSE delete mode 100644 vendor/symfony/polyfill-intl-idn/README.md delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php delete mode 100644 vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php delete mode 100644 vendor/symfony/polyfill-intl-idn/bootstrap.php delete mode 100644 vendor/symfony/polyfill-intl-idn/bootstrap80.php delete mode 100644 vendor/symfony/polyfill-intl-idn/composer.json delete mode 100644 vendor/symfony/polyfill-intl-normalizer/LICENSE delete mode 100644 vendor/symfony/polyfill-intl-normalizer/Normalizer.php delete mode 100644 vendor/symfony/polyfill-intl-normalizer/README.md delete mode 100644 vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php delete mode 100644 vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php delete mode 100644 vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php delete mode 100644 vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php delete mode 100644 vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php delete mode 100644 vendor/symfony/polyfill-intl-normalizer/bootstrap.php delete mode 100644 vendor/symfony/polyfill-intl-normalizer/bootstrap80.php delete mode 100644 vendor/symfony/polyfill-intl-normalizer/composer.json delete mode 100644 vendor/symfony/polyfill-mbstring/LICENSE delete mode 100644 vendor/symfony/polyfill-mbstring/Mbstring.php delete mode 100644 vendor/symfony/polyfill-mbstring/README.md delete mode 100644 vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php delete mode 100644 vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php delete mode 100644 vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php delete mode 100644 vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php delete mode 100644 vendor/symfony/polyfill-mbstring/bootstrap.php delete mode 100644 vendor/symfony/polyfill-mbstring/bootstrap80.php delete mode 100644 vendor/symfony/polyfill-mbstring/composer.json delete mode 100644 vendor/symfony/polyfill-php72/LICENSE delete mode 100644 vendor/symfony/polyfill-php72/Php72.php delete mode 100644 vendor/symfony/polyfill-php72/README.md delete mode 100644 vendor/symfony/polyfill-php72/bootstrap.php delete mode 100644 vendor/symfony/polyfill-php72/composer.json delete mode 100644 vendor/symfony/polyfill-php80/LICENSE delete mode 100644 vendor/symfony/polyfill-php80/Php80.php delete mode 100644 vendor/symfony/polyfill-php80/PhpToken.php delete mode 100644 vendor/symfony/polyfill-php80/README.md delete mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php delete mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php delete mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php delete mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php delete mode 100644 vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php delete mode 100644 vendor/symfony/polyfill-php80/bootstrap.php delete mode 100644 vendor/symfony/polyfill-php80/composer.json delete mode 100644 vendor/symfony/polyfill-php83/LICENSE delete mode 100644 vendor/symfony/polyfill-php83/Php83.php delete mode 100644 vendor/symfony/polyfill-php83/README.md delete mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateError.php delete mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateException.php delete mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateInvalidOperationException.php delete mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateInvalidTimeZoneException.php delete mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateMalformedIntervalStringException.php delete mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateMalformedPeriodStringException.php delete mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateMalformedStringException.php delete mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateObjectError.php delete mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/DateRangeError.php delete mode 100644 vendor/symfony/polyfill-php83/Resources/stubs/Override.php delete mode 100644 vendor/symfony/polyfill-php83/bootstrap.php delete mode 100644 vendor/symfony/polyfill-php83/bootstrap81.php delete mode 100644 vendor/symfony/polyfill-php83/composer.json delete mode 100644 vendor/symfony/polyfill-uuid/LICENSE delete mode 100644 vendor/symfony/polyfill-uuid/README.md delete mode 100644 vendor/symfony/polyfill-uuid/Uuid.php delete mode 100644 vendor/symfony/polyfill-uuid/bootstrap.php delete mode 100644 vendor/symfony/polyfill-uuid/bootstrap80.php delete mode 100644 vendor/symfony/polyfill-uuid/composer.json delete mode 100644 vendor/symfony/process/CHANGELOG.md delete mode 100644 vendor/symfony/process/Exception/ExceptionInterface.php delete mode 100644 vendor/symfony/process/Exception/InvalidArgumentException.php delete mode 100644 vendor/symfony/process/Exception/LogicException.php delete mode 100644 vendor/symfony/process/Exception/ProcessFailedException.php delete mode 100644 vendor/symfony/process/Exception/ProcessSignaledException.php delete mode 100644 vendor/symfony/process/Exception/ProcessTimedOutException.php delete mode 100644 vendor/symfony/process/Exception/RunProcessFailedException.php delete mode 100644 vendor/symfony/process/Exception/RuntimeException.php delete mode 100644 vendor/symfony/process/ExecutableFinder.php delete mode 100644 vendor/symfony/process/InputStream.php delete mode 100644 vendor/symfony/process/LICENSE delete mode 100644 vendor/symfony/process/Messenger/RunProcessContext.php delete mode 100644 vendor/symfony/process/Messenger/RunProcessMessage.php delete mode 100644 vendor/symfony/process/Messenger/RunProcessMessageHandler.php delete mode 100644 vendor/symfony/process/PhpExecutableFinder.php delete mode 100644 vendor/symfony/process/PhpProcess.php delete mode 100644 vendor/symfony/process/PhpSubprocess.php delete mode 100644 vendor/symfony/process/Pipes/AbstractPipes.php delete mode 100644 vendor/symfony/process/Pipes/PipesInterface.php delete mode 100644 vendor/symfony/process/Pipes/UnixPipes.php delete mode 100644 vendor/symfony/process/Pipes/WindowsPipes.php delete mode 100644 vendor/symfony/process/Process.php delete mode 100644 vendor/symfony/process/ProcessUtils.php delete mode 100644 vendor/symfony/process/README.md delete mode 100644 vendor/symfony/process/composer.json delete mode 100644 vendor/symfony/routing/Alias.php delete mode 100644 vendor/symfony/routing/Annotation/Route.php delete mode 100644 vendor/symfony/routing/Attribute/Route.php delete mode 100644 vendor/symfony/routing/CHANGELOG.md delete mode 100644 vendor/symfony/routing/CompiledRoute.php delete mode 100644 vendor/symfony/routing/DependencyInjection/AddExpressionLanguageProvidersPass.php delete mode 100644 vendor/symfony/routing/DependencyInjection/RoutingResolverPass.php delete mode 100644 vendor/symfony/routing/Exception/ExceptionInterface.php delete mode 100644 vendor/symfony/routing/Exception/InvalidArgumentException.php delete mode 100644 vendor/symfony/routing/Exception/InvalidParameterException.php delete mode 100644 vendor/symfony/routing/Exception/MethodNotAllowedException.php delete mode 100644 vendor/symfony/routing/Exception/MissingMandatoryParametersException.php delete mode 100644 vendor/symfony/routing/Exception/NoConfigurationException.php delete mode 100644 vendor/symfony/routing/Exception/ResourceNotFoundException.php delete mode 100644 vendor/symfony/routing/Exception/RouteCircularReferenceException.php delete mode 100644 vendor/symfony/routing/Exception/RouteNotFoundException.php delete mode 100644 vendor/symfony/routing/Exception/RuntimeException.php delete mode 100644 vendor/symfony/routing/Generator/CompiledUrlGenerator.php delete mode 100644 vendor/symfony/routing/Generator/ConfigurableRequirementsInterface.php delete mode 100644 vendor/symfony/routing/Generator/Dumper/CompiledUrlGeneratorDumper.php delete mode 100644 vendor/symfony/routing/Generator/Dumper/GeneratorDumper.php delete mode 100644 vendor/symfony/routing/Generator/Dumper/GeneratorDumperInterface.php delete mode 100644 vendor/symfony/routing/Generator/UrlGenerator.php delete mode 100644 vendor/symfony/routing/Generator/UrlGeneratorInterface.php delete mode 100644 vendor/symfony/routing/LICENSE delete mode 100644 vendor/symfony/routing/Loader/AnnotationClassLoader.php delete mode 100644 vendor/symfony/routing/Loader/AnnotationDirectoryLoader.php delete mode 100644 vendor/symfony/routing/Loader/AnnotationFileLoader.php delete mode 100644 vendor/symfony/routing/Loader/AttributeClassLoader.php delete mode 100644 vendor/symfony/routing/Loader/AttributeDirectoryLoader.php delete mode 100644 vendor/symfony/routing/Loader/AttributeFileLoader.php delete mode 100644 vendor/symfony/routing/Loader/ClosureLoader.php delete mode 100644 vendor/symfony/routing/Loader/Configurator/AliasConfigurator.php delete mode 100644 vendor/symfony/routing/Loader/Configurator/CollectionConfigurator.php delete mode 100644 vendor/symfony/routing/Loader/Configurator/ImportConfigurator.php delete mode 100644 vendor/symfony/routing/Loader/Configurator/RouteConfigurator.php delete mode 100644 vendor/symfony/routing/Loader/Configurator/RoutingConfigurator.php delete mode 100644 vendor/symfony/routing/Loader/Configurator/Traits/AddTrait.php delete mode 100644 vendor/symfony/routing/Loader/Configurator/Traits/HostTrait.php delete mode 100644 vendor/symfony/routing/Loader/Configurator/Traits/LocalizedRouteTrait.php delete mode 100644 vendor/symfony/routing/Loader/Configurator/Traits/PrefixTrait.php delete mode 100644 vendor/symfony/routing/Loader/Configurator/Traits/RouteTrait.php delete mode 100644 vendor/symfony/routing/Loader/ContainerLoader.php delete mode 100644 vendor/symfony/routing/Loader/DirectoryLoader.php delete mode 100644 vendor/symfony/routing/Loader/GlobFileLoader.php delete mode 100644 vendor/symfony/routing/Loader/ObjectLoader.php delete mode 100644 vendor/symfony/routing/Loader/PhpFileLoader.php delete mode 100644 vendor/symfony/routing/Loader/Psr4DirectoryLoader.php delete mode 100644 vendor/symfony/routing/Loader/XmlFileLoader.php delete mode 100644 vendor/symfony/routing/Loader/YamlFileLoader.php delete mode 100644 vendor/symfony/routing/Loader/schema/routing/routing-1.0.xsd delete mode 100644 vendor/symfony/routing/Matcher/CompiledUrlMatcher.php delete mode 100644 vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherDumper.php delete mode 100644 vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php delete mode 100644 vendor/symfony/routing/Matcher/Dumper/MatcherDumper.php delete mode 100644 vendor/symfony/routing/Matcher/Dumper/MatcherDumperInterface.php delete mode 100644 vendor/symfony/routing/Matcher/Dumper/StaticPrefixCollection.php delete mode 100644 vendor/symfony/routing/Matcher/ExpressionLanguageProvider.php delete mode 100644 vendor/symfony/routing/Matcher/RedirectableUrlMatcher.php delete mode 100644 vendor/symfony/routing/Matcher/RedirectableUrlMatcherInterface.php delete mode 100644 vendor/symfony/routing/Matcher/RequestMatcherInterface.php delete mode 100644 vendor/symfony/routing/Matcher/TraceableUrlMatcher.php delete mode 100644 vendor/symfony/routing/Matcher/UrlMatcher.php delete mode 100644 vendor/symfony/routing/Matcher/UrlMatcherInterface.php delete mode 100644 vendor/symfony/routing/README.md delete mode 100644 vendor/symfony/routing/RequestContext.php delete mode 100644 vendor/symfony/routing/RequestContextAwareInterface.php delete mode 100644 vendor/symfony/routing/Requirement/EnumRequirement.php delete mode 100644 vendor/symfony/routing/Requirement/Requirement.php delete mode 100644 vendor/symfony/routing/Route.php delete mode 100644 vendor/symfony/routing/RouteCollection.php delete mode 100644 vendor/symfony/routing/RouteCompiler.php delete mode 100644 vendor/symfony/routing/RouteCompilerInterface.php delete mode 100644 vendor/symfony/routing/Router.php delete mode 100644 vendor/symfony/routing/RouterInterface.php delete mode 100644 vendor/symfony/routing/composer.json delete mode 100644 vendor/symfony/service-contracts/Attribute/Required.php delete mode 100644 vendor/symfony/service-contracts/Attribute/SubscribedService.php delete mode 100644 vendor/symfony/service-contracts/CHANGELOG.md delete mode 100644 vendor/symfony/service-contracts/LICENSE delete mode 100644 vendor/symfony/service-contracts/README.md delete mode 100644 vendor/symfony/service-contracts/ResetInterface.php delete mode 100644 vendor/symfony/service-contracts/ServiceLocatorTrait.php delete mode 100644 vendor/symfony/service-contracts/ServiceProviderInterface.php delete mode 100644 vendor/symfony/service-contracts/ServiceSubscriberInterface.php delete mode 100644 vendor/symfony/service-contracts/ServiceSubscriberTrait.php delete mode 100644 vendor/symfony/service-contracts/Test/ServiceLocatorTest.php delete mode 100644 vendor/symfony/service-contracts/Test/ServiceLocatorTestCase.php delete mode 100644 vendor/symfony/service-contracts/composer.json delete mode 100644 vendor/symfony/string/AbstractString.php delete mode 100644 vendor/symfony/string/AbstractUnicodeString.php delete mode 100644 vendor/symfony/string/ByteString.php delete mode 100644 vendor/symfony/string/CHANGELOG.md delete mode 100644 vendor/symfony/string/CodePointString.php delete mode 100644 vendor/symfony/string/Exception/ExceptionInterface.php delete mode 100644 vendor/symfony/string/Exception/InvalidArgumentException.php delete mode 100644 vendor/symfony/string/Exception/RuntimeException.php delete mode 100644 vendor/symfony/string/Inflector/EnglishInflector.php delete mode 100644 vendor/symfony/string/Inflector/FrenchInflector.php delete mode 100644 vendor/symfony/string/Inflector/InflectorInterface.php delete mode 100644 vendor/symfony/string/LICENSE delete mode 100644 vendor/symfony/string/LazyString.php delete mode 100644 vendor/symfony/string/README.md delete mode 100644 vendor/symfony/string/Resources/data/wcswidth_table_wide.php delete mode 100644 vendor/symfony/string/Resources/data/wcswidth_table_zero.php delete mode 100644 vendor/symfony/string/Resources/functions.php delete mode 100644 vendor/symfony/string/Slugger/AsciiSlugger.php delete mode 100644 vendor/symfony/string/Slugger/SluggerInterface.php delete mode 100644 vendor/symfony/string/UnicodeString.php delete mode 100644 vendor/symfony/string/composer.json delete mode 100644 vendor/symfony/translation-contracts/CHANGELOG.md delete mode 100644 vendor/symfony/translation-contracts/LICENSE delete mode 100644 vendor/symfony/translation-contracts/LocaleAwareInterface.php delete mode 100644 vendor/symfony/translation-contracts/README.md delete mode 100644 vendor/symfony/translation-contracts/Test/TranslatorTest.php delete mode 100644 vendor/symfony/translation-contracts/TranslatableInterface.php delete mode 100644 vendor/symfony/translation-contracts/TranslatorInterface.php delete mode 100644 vendor/symfony/translation-contracts/TranslatorTrait.php delete mode 100644 vendor/symfony/translation-contracts/composer.json delete mode 100644 vendor/symfony/translation/CHANGELOG.md delete mode 100644 vendor/symfony/translation/Catalogue/AbstractOperation.php delete mode 100644 vendor/symfony/translation/Catalogue/MergeOperation.php delete mode 100644 vendor/symfony/translation/Catalogue/OperationInterface.php delete mode 100644 vendor/symfony/translation/Catalogue/TargetOperation.php delete mode 100644 vendor/symfony/translation/CatalogueMetadataAwareInterface.php delete mode 100644 vendor/symfony/translation/Command/TranslationPullCommand.php delete mode 100644 vendor/symfony/translation/Command/TranslationPushCommand.php delete mode 100644 vendor/symfony/translation/Command/TranslationTrait.php delete mode 100644 vendor/symfony/translation/Command/XliffLintCommand.php delete mode 100644 vendor/symfony/translation/DataCollector/TranslationDataCollector.php delete mode 100644 vendor/symfony/translation/DataCollectorTranslator.php delete mode 100644 vendor/symfony/translation/DependencyInjection/DataCollectorTranslatorPass.php delete mode 100644 vendor/symfony/translation/DependencyInjection/LoggingTranslatorPass.php delete mode 100644 vendor/symfony/translation/DependencyInjection/TranslationDumperPass.php delete mode 100644 vendor/symfony/translation/DependencyInjection/TranslationExtractorPass.php delete mode 100644 vendor/symfony/translation/DependencyInjection/TranslatorPass.php delete mode 100644 vendor/symfony/translation/DependencyInjection/TranslatorPathsPass.php delete mode 100644 vendor/symfony/translation/Dumper/CsvFileDumper.php delete mode 100644 vendor/symfony/translation/Dumper/DumperInterface.php delete mode 100644 vendor/symfony/translation/Dumper/FileDumper.php delete mode 100644 vendor/symfony/translation/Dumper/IcuResFileDumper.php delete mode 100644 vendor/symfony/translation/Dumper/IniFileDumper.php delete mode 100644 vendor/symfony/translation/Dumper/JsonFileDumper.php delete mode 100644 vendor/symfony/translation/Dumper/MoFileDumper.php delete mode 100644 vendor/symfony/translation/Dumper/PhpFileDumper.php delete mode 100644 vendor/symfony/translation/Dumper/PoFileDumper.php delete mode 100644 vendor/symfony/translation/Dumper/QtFileDumper.php delete mode 100644 vendor/symfony/translation/Dumper/XliffFileDumper.php delete mode 100644 vendor/symfony/translation/Dumper/YamlFileDumper.php delete mode 100644 vendor/symfony/translation/Exception/ExceptionInterface.php delete mode 100644 vendor/symfony/translation/Exception/IncompleteDsnException.php delete mode 100644 vendor/symfony/translation/Exception/InvalidArgumentException.php delete mode 100644 vendor/symfony/translation/Exception/InvalidResourceException.php delete mode 100644 vendor/symfony/translation/Exception/LogicException.php delete mode 100644 vendor/symfony/translation/Exception/MissingRequiredOptionException.php delete mode 100644 vendor/symfony/translation/Exception/NotFoundResourceException.php delete mode 100644 vendor/symfony/translation/Exception/ProviderException.php delete mode 100644 vendor/symfony/translation/Exception/ProviderExceptionInterface.php delete mode 100644 vendor/symfony/translation/Exception/RuntimeException.php delete mode 100644 vendor/symfony/translation/Exception/UnsupportedSchemeException.php delete mode 100644 vendor/symfony/translation/Extractor/AbstractFileExtractor.php delete mode 100644 vendor/symfony/translation/Extractor/ChainExtractor.php delete mode 100644 vendor/symfony/translation/Extractor/ExtractorInterface.php delete mode 100644 vendor/symfony/translation/Extractor/PhpAstExtractor.php delete mode 100644 vendor/symfony/translation/Extractor/PhpExtractor.php delete mode 100644 vendor/symfony/translation/Extractor/PhpStringTokenParser.php delete mode 100644 vendor/symfony/translation/Extractor/Visitor/AbstractVisitor.php delete mode 100644 vendor/symfony/translation/Extractor/Visitor/ConstraintVisitor.php delete mode 100644 vendor/symfony/translation/Extractor/Visitor/TransMethodVisitor.php delete mode 100644 vendor/symfony/translation/Extractor/Visitor/TranslatableMessageVisitor.php delete mode 100644 vendor/symfony/translation/Formatter/IntlFormatter.php delete mode 100644 vendor/symfony/translation/Formatter/IntlFormatterInterface.php delete mode 100644 vendor/symfony/translation/Formatter/MessageFormatter.php delete mode 100644 vendor/symfony/translation/Formatter/MessageFormatterInterface.php delete mode 100644 vendor/symfony/translation/IdentityTranslator.php delete mode 100644 vendor/symfony/translation/LICENSE delete mode 100644 vendor/symfony/translation/Loader/ArrayLoader.php delete mode 100644 vendor/symfony/translation/Loader/CsvFileLoader.php delete mode 100644 vendor/symfony/translation/Loader/FileLoader.php delete mode 100644 vendor/symfony/translation/Loader/IcuDatFileLoader.php delete mode 100644 vendor/symfony/translation/Loader/IcuResFileLoader.php delete mode 100644 vendor/symfony/translation/Loader/IniFileLoader.php delete mode 100644 vendor/symfony/translation/Loader/JsonFileLoader.php delete mode 100644 vendor/symfony/translation/Loader/LoaderInterface.php delete mode 100644 vendor/symfony/translation/Loader/MoFileLoader.php delete mode 100644 vendor/symfony/translation/Loader/PhpFileLoader.php delete mode 100644 vendor/symfony/translation/Loader/PoFileLoader.php delete mode 100644 vendor/symfony/translation/Loader/QtFileLoader.php delete mode 100644 vendor/symfony/translation/Loader/XliffFileLoader.php delete mode 100644 vendor/symfony/translation/Loader/YamlFileLoader.php delete mode 100644 vendor/symfony/translation/LocaleSwitcher.php delete mode 100644 vendor/symfony/translation/LoggingTranslator.php delete mode 100644 vendor/symfony/translation/MessageCatalogue.php delete mode 100644 vendor/symfony/translation/MessageCatalogueInterface.php delete mode 100644 vendor/symfony/translation/MetadataAwareInterface.php delete mode 100644 vendor/symfony/translation/Provider/AbstractProviderFactory.php delete mode 100644 vendor/symfony/translation/Provider/Dsn.php delete mode 100644 vendor/symfony/translation/Provider/FilteringProvider.php delete mode 100644 vendor/symfony/translation/Provider/NullProvider.php delete mode 100644 vendor/symfony/translation/Provider/NullProviderFactory.php delete mode 100644 vendor/symfony/translation/Provider/ProviderFactoryInterface.php delete mode 100644 vendor/symfony/translation/Provider/ProviderInterface.php delete mode 100644 vendor/symfony/translation/Provider/TranslationProviderCollection.php delete mode 100644 vendor/symfony/translation/Provider/TranslationProviderCollectionFactory.php delete mode 100644 vendor/symfony/translation/PseudoLocalizationTranslator.php delete mode 100644 vendor/symfony/translation/README.md delete mode 100644 vendor/symfony/translation/Reader/TranslationReader.php delete mode 100644 vendor/symfony/translation/Reader/TranslationReaderInterface.php delete mode 100644 vendor/symfony/translation/Resources/bin/translation-status.php delete mode 100644 vendor/symfony/translation/Resources/data/parents.json delete mode 100644 vendor/symfony/translation/Resources/functions.php delete mode 100644 vendor/symfony/translation/Resources/schemas/xliff-core-1.2-transitional.xsd delete mode 100644 vendor/symfony/translation/Resources/schemas/xliff-core-2.0.xsd delete mode 100644 vendor/symfony/translation/Resources/schemas/xml.xsd delete mode 100644 vendor/symfony/translation/Test/ProviderFactoryTestCase.php delete mode 100644 vendor/symfony/translation/Test/ProviderTestCase.php delete mode 100644 vendor/symfony/translation/TranslatableMessage.php delete mode 100644 vendor/symfony/translation/Translator.php delete mode 100644 vendor/symfony/translation/TranslatorBag.php delete mode 100644 vendor/symfony/translation/TranslatorBagInterface.php delete mode 100644 vendor/symfony/translation/Util/ArrayConverter.php delete mode 100644 vendor/symfony/translation/Util/XliffUtils.php delete mode 100644 vendor/symfony/translation/Writer/TranslationWriter.php delete mode 100644 vendor/symfony/translation/Writer/TranslationWriterInterface.php delete mode 100644 vendor/symfony/translation/composer.json delete mode 100644 vendor/symfony/uid/AbstractUid.php delete mode 100644 vendor/symfony/uid/BinaryUtil.php delete mode 100644 vendor/symfony/uid/CHANGELOG.md delete mode 100644 vendor/symfony/uid/Command/GenerateUlidCommand.php delete mode 100644 vendor/symfony/uid/Command/GenerateUuidCommand.php delete mode 100644 vendor/symfony/uid/Command/InspectUlidCommand.php delete mode 100644 vendor/symfony/uid/Command/InspectUuidCommand.php delete mode 100644 vendor/symfony/uid/Factory/NameBasedUuidFactory.php delete mode 100644 vendor/symfony/uid/Factory/RandomBasedUuidFactory.php delete mode 100644 vendor/symfony/uid/Factory/TimeBasedUuidFactory.php delete mode 100644 vendor/symfony/uid/Factory/UlidFactory.php delete mode 100644 vendor/symfony/uid/Factory/UuidFactory.php delete mode 100644 vendor/symfony/uid/LICENSE delete mode 100644 vendor/symfony/uid/MaxUlid.php delete mode 100644 vendor/symfony/uid/MaxUuid.php delete mode 100644 vendor/symfony/uid/NilUlid.php delete mode 100644 vendor/symfony/uid/NilUuid.php delete mode 100644 vendor/symfony/uid/README.md delete mode 100644 vendor/symfony/uid/TimeBasedUidInterface.php delete mode 100644 vendor/symfony/uid/Ulid.php delete mode 100644 vendor/symfony/uid/Uuid.php delete mode 100644 vendor/symfony/uid/UuidV1.php delete mode 100644 vendor/symfony/uid/UuidV3.php delete mode 100644 vendor/symfony/uid/UuidV4.php delete mode 100644 vendor/symfony/uid/UuidV5.php delete mode 100644 vendor/symfony/uid/UuidV6.php delete mode 100644 vendor/symfony/uid/UuidV7.php delete mode 100644 vendor/symfony/uid/UuidV8.php delete mode 100644 vendor/symfony/uid/composer.json delete mode 100644 vendor/symfony/var-dumper/CHANGELOG.md delete mode 100644 vendor/symfony/var-dumper/Caster/AmqpCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/ArgsStub.php delete mode 100644 vendor/symfony/var-dumper/Caster/Caster.php delete mode 100644 vendor/symfony/var-dumper/Caster/ClassStub.php delete mode 100644 vendor/symfony/var-dumper/Caster/ConstStub.php delete mode 100644 vendor/symfony/var-dumper/Caster/CutArrayStub.php delete mode 100644 vendor/symfony/var-dumper/Caster/CutStub.php delete mode 100644 vendor/symfony/var-dumper/Caster/DOMCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/DateCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/DoctrineCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/DsCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/DsPairStub.php delete mode 100644 vendor/symfony/var-dumper/Caster/EnumStub.php delete mode 100644 vendor/symfony/var-dumper/Caster/ExceptionCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/FFICaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/FiberCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/FrameStub.php delete mode 100644 vendor/symfony/var-dumper/Caster/GmpCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/ImagineCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/ImgStub.php delete mode 100644 vendor/symfony/var-dumper/Caster/IntlCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/LinkStub.php delete mode 100644 vendor/symfony/var-dumper/Caster/MemcachedCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/MysqliCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/PdoCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/PgSqlCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/ProxyManagerCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/RdKafkaCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/RedisCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/ReflectionCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/ResourceCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/ScalarStub.php delete mode 100644 vendor/symfony/var-dumper/Caster/SplCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/StubCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/SymfonyCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/TraceStub.php delete mode 100644 vendor/symfony/var-dumper/Caster/UninitializedStub.php delete mode 100644 vendor/symfony/var-dumper/Caster/UuidCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/XmlReaderCaster.php delete mode 100644 vendor/symfony/var-dumper/Caster/XmlResourceCaster.php delete mode 100644 vendor/symfony/var-dumper/Cloner/AbstractCloner.php delete mode 100644 vendor/symfony/var-dumper/Cloner/ClonerInterface.php delete mode 100644 vendor/symfony/var-dumper/Cloner/Cursor.php delete mode 100644 vendor/symfony/var-dumper/Cloner/Data.php delete mode 100644 vendor/symfony/var-dumper/Cloner/DumperInterface.php delete mode 100644 vendor/symfony/var-dumper/Cloner/Stub.php delete mode 100644 vendor/symfony/var-dumper/Cloner/VarCloner.php delete mode 100644 vendor/symfony/var-dumper/Command/Descriptor/CliDescriptor.php delete mode 100644 vendor/symfony/var-dumper/Command/Descriptor/DumpDescriptorInterface.php delete mode 100644 vendor/symfony/var-dumper/Command/Descriptor/HtmlDescriptor.php delete mode 100644 vendor/symfony/var-dumper/Command/ServerDumpCommand.php delete mode 100644 vendor/symfony/var-dumper/Dumper/AbstractDumper.php delete mode 100644 vendor/symfony/var-dumper/Dumper/CliDumper.php delete mode 100644 vendor/symfony/var-dumper/Dumper/ContextProvider/CliContextProvider.php delete mode 100644 vendor/symfony/var-dumper/Dumper/ContextProvider/ContextProviderInterface.php delete mode 100644 vendor/symfony/var-dumper/Dumper/ContextProvider/RequestContextProvider.php delete mode 100644 vendor/symfony/var-dumper/Dumper/ContextProvider/SourceContextProvider.php delete mode 100644 vendor/symfony/var-dumper/Dumper/ContextualizedDumper.php delete mode 100644 vendor/symfony/var-dumper/Dumper/DataDumperInterface.php delete mode 100644 vendor/symfony/var-dumper/Dumper/HtmlDumper.php delete mode 100644 vendor/symfony/var-dumper/Dumper/ServerDumper.php delete mode 100644 vendor/symfony/var-dumper/Exception/ThrowingCasterException.php delete mode 100644 vendor/symfony/var-dumper/LICENSE delete mode 100644 vendor/symfony/var-dumper/README.md delete mode 100755 vendor/symfony/var-dumper/Resources/bin/var-dump-server delete mode 100644 vendor/symfony/var-dumper/Resources/css/htmlDescriptor.css delete mode 100644 vendor/symfony/var-dumper/Resources/functions/dump.php delete mode 100644 vendor/symfony/var-dumper/Resources/js/htmlDescriptor.js delete mode 100644 vendor/symfony/var-dumper/Server/Connection.php delete mode 100644 vendor/symfony/var-dumper/Server/DumpServer.php delete mode 100644 vendor/symfony/var-dumper/Test/VarDumperTestTrait.php delete mode 100644 vendor/symfony/var-dumper/VarDumper.php delete mode 100644 vendor/symfony/var-dumper/composer.json delete mode 100644 vendor/tijsverkoyen/css-to-inline-styles/LICENSE.md delete mode 100644 vendor/tijsverkoyen/css-to-inline-styles/composer.json delete mode 100644 vendor/tijsverkoyen/css-to-inline-styles/src/Css/Processor.php delete mode 100644 vendor/tijsverkoyen/css-to-inline-styles/src/Css/Property/Processor.php delete mode 100644 vendor/tijsverkoyen/css-to-inline-styles/src/Css/Property/Property.php delete mode 100644 vendor/tijsverkoyen/css-to-inline-styles/src/Css/Rule/Processor.php delete mode 100644 vendor/tijsverkoyen/css-to-inline-styles/src/Css/Rule/Rule.php delete mode 100644 vendor/tijsverkoyen/css-to-inline-styles/src/CssToInlineStyles.php delete mode 100644 vendor/vlucas/phpdotenv/LICENSE delete mode 100644 vendor/vlucas/phpdotenv/composer.json delete mode 100644 vendor/vlucas/phpdotenv/src/Dotenv.php delete mode 100644 vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php delete mode 100644 vendor/vlucas/phpdotenv/src/Exception/InvalidEncodingException.php delete mode 100644 vendor/vlucas/phpdotenv/src/Exception/InvalidFileException.php delete mode 100644 vendor/vlucas/phpdotenv/src/Exception/InvalidPathException.php delete mode 100644 vendor/vlucas/phpdotenv/src/Exception/ValidationException.php delete mode 100644 vendor/vlucas/phpdotenv/src/Loader/Loader.php delete mode 100644 vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php delete mode 100644 vendor/vlucas/phpdotenv/src/Loader/Resolver.php delete mode 100644 vendor/vlucas/phpdotenv/src/Parser/Entry.php delete mode 100644 vendor/vlucas/phpdotenv/src/Parser/EntryParser.php delete mode 100644 vendor/vlucas/phpdotenv/src/Parser/Lexer.php delete mode 100644 vendor/vlucas/phpdotenv/src/Parser/Lines.php delete mode 100644 vendor/vlucas/phpdotenv/src/Parser/Parser.php delete mode 100644 vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php delete mode 100644 vendor/vlucas/phpdotenv/src/Parser/Value.php delete mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php delete mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php delete mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php delete mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php delete mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php delete mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php delete mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php delete mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php delete mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php delete mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php delete mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php delete mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php delete mode 100644 vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php delete mode 100644 vendor/vlucas/phpdotenv/src/Repository/AdapterRepository.php delete mode 100644 vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php delete mode 100644 vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php delete mode 100644 vendor/vlucas/phpdotenv/src/Store/File/Paths.php delete mode 100644 vendor/vlucas/phpdotenv/src/Store/File/Reader.php delete mode 100644 vendor/vlucas/phpdotenv/src/Store/FileStore.php delete mode 100644 vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php delete mode 100644 vendor/vlucas/phpdotenv/src/Store/StoreInterface.php delete mode 100644 vendor/vlucas/phpdotenv/src/Store/StringStore.php delete mode 100644 vendor/vlucas/phpdotenv/src/Util/Regex.php delete mode 100644 vendor/vlucas/phpdotenv/src/Util/Str.php delete mode 100644 vendor/vlucas/phpdotenv/src/Validator.php delete mode 100644 vendor/voku/portable-ascii/CHANGELOG.md delete mode 100644 vendor/voku/portable-ascii/LICENSE.txt delete mode 100644 vendor/voku/portable-ascii/README.md delete mode 100644 vendor/voku/portable-ascii/composer.json delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/ASCII.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/ascii_by_languages.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/ascii_extras_by_languages.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/ascii_language_max_key.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/ascii_ord.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x000.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x001.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x002.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x003.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x004.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x005.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x006.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x007.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x009.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00a.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00b.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00c.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00d.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00e.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x00f.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x010.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x011.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x012.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x013.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x014.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x015.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x016.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x017.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x018.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x01d.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x01e.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x01f.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x020.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x021.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x022.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x023.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x024.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x025.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x026.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x027.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x028.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x029.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x02a.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x02c.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x02e.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x02f.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x030.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x031.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x032.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x033.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x04d.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x04e.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x04f.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x050.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x051.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x052.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x053.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x054.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x055.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x056.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x057.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x058.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x059.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05a.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05b.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05c.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05d.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05e.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x05f.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x060.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x061.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x062.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x063.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x064.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x065.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x066.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x067.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x068.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x069.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06a.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06b.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06c.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06d.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06e.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x06f.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x070.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x071.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x072.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x073.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x074.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x075.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x076.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x077.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x078.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x079.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07a.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07b.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07c.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07d.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07e.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x07f.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x080.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x081.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x082.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x083.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x084.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x085.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x086.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x087.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x088.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x089.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08a.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08b.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08c.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08d.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08e.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x08f.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x090.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x091.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x092.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x093.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x094.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x095.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x096.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x097.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x098.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x099.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09a.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09b.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09c.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09d.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09e.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x09f.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0a0.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0a1.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0a2.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0a3.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0a4.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ac.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ad.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ae.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0af.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b0.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b1.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b2.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b3.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b4.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b5.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b6.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b7.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b8.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0b9.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ba.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0bb.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0bc.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0bd.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0be.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0bf.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c0.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c1.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c2.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c3.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c4.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c5.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c6.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c7.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c8.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0c9.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ca.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0cb.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0cc.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0cd.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ce.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0cf.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d0.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d1.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d2.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d3.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d4.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d5.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d6.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0d7.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0f9.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0fa.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0fb.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0fc.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0fd.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0fe.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x0ff.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x1d4.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x1d5.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x1d6.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x1d7.php delete mode 100644 vendor/voku/portable-ascii/src/voku/helper/data/x1f1.php delete mode 100644 vendor/webmozart/assert/CHANGELOG.md delete mode 100644 vendor/webmozart/assert/LICENSE delete mode 100644 vendor/webmozart/assert/README.md delete mode 100644 vendor/webmozart/assert/composer.json delete mode 100644 vendor/webmozart/assert/src/Assert.php delete mode 100644 vendor/webmozart/assert/src/InvalidArgumentException.php delete mode 100644 vendor/webmozart/assert/src/Mixin.php diff --git a/composer.lock b/composer.lock index 233447ca..721ab73b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f5a660631542b238dd6896120e29e8d3", + "content-hash": "da2612cd499d76b03328e90f1630cbaa", "packages": [ { "name": "anourvalar/eloquent-serialize", @@ -7785,7 +7785,2528 @@ "time": "2022-06-03T18:03:27+00:00" } ], - "packages-dev": [], + "packages-dev": [ + { + "name": "brianium/paratest", + "version": "v7.3.1", + "source": { + "type": "git", + "url": "https://github.com/paratestphp/paratest.git", + "reference": "551f46f52a93177d873f3be08a1649ae886b4a30" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/551f46f52a93177d873f3be08a1649ae886b4a30", + "reference": "551f46f52a93177d873f3be08a1649ae886b4a30", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-simplexml": "*", + "fidry/cpu-core-counter": "^0.5.1 || ^1.0.0", + "jean85/pretty-package-versions": "^2.0.5", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "phpunit/php-code-coverage": "^10.1.7", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-timer": "^6.0", + "phpunit/phpunit": "^10.4.2", + "sebastian/environment": "^6.0.1", + "symfony/console": "^6.3.4 || ^7.0.0", + "symfony/process": "^6.3.4 || ^7.0.0" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0.0", + "ext-pcov": "*", + "ext-posix": "*", + "infection/infection": "^0.27.6", + "phpstan/phpstan": "^1.10.40", + "phpstan/phpstan-deprecation-rules": "^1.1.4", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpstan/phpstan-strict-rules": "^1.5.2", + "squizlabs/php_codesniffer": "^3.7.2", + "symfony/filesystem": "^6.3.1 || ^7.0.0" + }, + "bin": [ + "bin/paratest", + "bin/paratest.bat", + "bin/paratest_for_phpstorm" + ], + "type": "library", + "autoload": { + "psr-4": { + "ParaTest\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com", + "role": "Developer" + }, + { + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com", + "role": "Developer" + } + ], + "description": "Parallel testing for PHP", + "homepage": "https://github.com/paratestphp/paratest", + "keywords": [ + "concurrent", + "parallel", + "phpunit", + "testing" + ], + "support": { + "issues": "https://github.com/paratestphp/paratest/issues", + "source": "https://github.com/paratestphp/paratest/tree/v7.3.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/Slamdunk", + "type": "github" + }, + { + "url": "https://paypal.me/filippotessarotto", + "type": "paypal" + } + ], + "time": "2023-10-31T09:24:17+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2024-02-07T09:43:46+00:00" + }, + { + "name": "filp/whoops", + "version": "2.15.4", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.15.4" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2023-11-03T12:00:00+00:00" + }, + { + "name": "jean85/pretty-package-versions", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0.0", + "php": "^7.1|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.17", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^0.12.66", + "phpunit/phpunit": "^7.5|^8.5|^9.4", + "vimeo/psalm": "^4.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Jean85\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A library to get pretty versions strings of installed dependencies", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" + }, + "time": "2021-10-08T21:21:46+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.11.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2023-03-08T13:26:56+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.0.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4a21235f7e56e713259a6f76bf4b5ea08502b9dc", + "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc", + "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" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.0" + }, + "time": "2024-01-07T17:17:35+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v7.10.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "49ec67fa7b002712da8526678abd651c09f375b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/49ec67fa7b002712da8526678abd651c09f375b2", + "reference": "49ec67fa7b002712da8526678abd651c09f375b2", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.15.3", + "nunomaduro/termwind": "^1.15.1", + "php": "^8.1.0", + "symfony/console": "^6.3.4" + }, + "conflict": { + "laravel/framework": ">=11.0.0" + }, + "require-dev": { + "brianium/paratest": "^7.3.0", + "laravel/framework": "^10.28.0", + "laravel/pint": "^1.13.3", + "laravel/sail": "^1.25.0", + "laravel/sanctum": "^3.3.1", + "laravel/tinker": "^2.8.2", + "nunomaduro/larastan": "^2.6.4", + "orchestra/testbench-core": "^8.13.0", + "pestphp/pest": "^2.23.2", + "phpunit/phpunit": "^10.4.1", + "sebastian/environment": "^6.0.1", + "spatie/laravel-ignition": "^2.3.1" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2023-10-11T15:45:01+00:00" + }, + { + "name": "pestphp/pest", + "version": "v2.33.6", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest.git", + "reference": "5b0f88c22716452be59202cfe7c5a24fbb2fb7de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest/zipball/5b0f88c22716452be59202cfe7c5a24fbb2fb7de", + "reference": "5b0f88c22716452be59202cfe7c5a24fbb2fb7de", + "shasum": "" + }, + "require": { + "brianium/paratest": "^7.3.1", + "nunomaduro/collision": "^7.10.0|^8.1.0", + "nunomaduro/termwind": "^1.15.1|^2.0.0", + "pestphp/pest-plugin": "^2.1.1", + "pestphp/pest-plugin-arch": "^2.7.0", + "php": "^8.1.0", + "phpunit/phpunit": "^10.5.10" + }, + "conflict": { + "phpunit/phpunit": ">10.5.10", + "sebastian/exporter": "<5.1.0", + "webmozart/assert": "<1.11.0" + }, + "require-dev": { + "pestphp/pest-dev-tools": "^2.16.0", + "pestphp/pest-plugin-type-coverage": "^2.8.0", + "symfony/process": "^6.4.0|^7.0.3" + }, + "bin": [ + "bin/pest" + ], + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Plugins\\Bail", + "Pest\\Plugins\\Cache", + "Pest\\Plugins\\Coverage", + "Pest\\Plugins\\Init", + "Pest\\Plugins\\Environment", + "Pest\\Plugins\\Help", + "Pest\\Plugins\\Memory", + "Pest\\Plugins\\Only", + "Pest\\Plugins\\Printer", + "Pest\\Plugins\\ProcessIsolation", + "Pest\\Plugins\\Profile", + "Pest\\Plugins\\Retry", + "Pest\\Plugins\\Snapshot", + "Pest\\Plugins\\Verbose", + "Pest\\Plugins\\Version", + "Pest\\Plugins\\Parallel" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "files": [ + "src/Functions.php", + "src/Pest.php" + ], + "psr-4": { + "Pest\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "The elegant PHP Testing Framework.", + "keywords": [ + "framework", + "pest", + "php", + "test", + "testing", + "unit" + ], + "support": { + "issues": "https://github.com/pestphp/pest/issues", + "source": "https://github.com/pestphp/pest/tree/v2.33.6" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2024-02-12T08:55:32+00:00" + }, + { + "name": "pestphp/pest-plugin", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin.git", + "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/e05d2859e08c2567ee38ce8b005d044e72648c0b", + "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0.0", + "composer-runtime-api": "^2.2.2", + "php": "^8.1" + }, + "conflict": { + "pestphp/pest": "<2.2.3" + }, + "require-dev": { + "composer/composer": "^2.5.8", + "pestphp/pest": "^2.16.0", + "pestphp/pest-dev-tools": "^2.16.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Pest\\Plugin\\Manager" + }, + "autoload": { + "psr-4": { + "Pest\\Plugin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest plugin manager", + "keywords": [ + "framework", + "manager", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin/tree/v2.1.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2023-08-22T08:40:06+00:00" + }, + { + "name": "pestphp/pest-plugin-arch", + "version": "v2.7.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-arch.git", + "reference": "d23b2d7498475354522c3818c42ef355dca3fcda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/d23b2d7498475354522c3818c42ef355dca3fcda", + "reference": "d23b2d7498475354522c3818c42ef355dca3fcda", + "shasum": "" + }, + "require": { + "nunomaduro/collision": "^7.10.0|^8.1.0", + "pestphp/pest-plugin": "^2.1.1", + "php": "^8.1", + "ta-tikoma/phpunit-architecture-test": "^0.8.4" + }, + "require-dev": { + "pestphp/pest": "^2.33.0", + "pestphp/pest-dev-tools": "^2.16.0" + }, + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Arch\\Plugin" + ] + } + }, + "autoload": { + "files": [ + "src/Autoload.php" + ], + "psr-4": { + "Pest\\Arch\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Arch plugin for Pest PHP.", + "keywords": [ + "arch", + "architecture", + "framework", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.7.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2024-01-26T09:46:42+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "time": "2021-10-19T17:43:47+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fad452781b3d774e3337b0c0b245dd8e5a4455fc", + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.0", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" + }, + "require-dev": { + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.0" + }, + "time": "2024-01-11T11:49:22+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.25.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240", + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.25.0" + }, + "time": "2024-01-04T17:06:16+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "10.1.11", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "78c3b7625965c2513ee96569a4dbb62601784145" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145", + "reference": "78c3b7625965c2513ee96569a4dbb62601784145", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-text-template": "^3.0", + "sebastian/code-unit-reverse-lookup": "^3.0", + "sebastian/complexity": "^3.0", + "sebastian/environment": "^6.0", + "sebastian/lines-of-code": "^2.0", + "sebastian/version": "^4.0", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.1" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.11" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T15:38:30+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "4.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T06:24:48+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:56:09+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T14:07:24+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:57:52+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "10.5.10", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "50b8e314b6d0dd06521dc31d1abffa73f25f850c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/50b8e314b6d0dd06521dc31d1abffa73f25f850c", + "reference": "50b8e314b6d0dd06521dc31d1abffa73f25f850c", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.5", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-invoker": "^4.0", + "phpunit/php-text-template": "^3.0", + "phpunit/php-timer": "^6.0", + "sebastian/cli-parser": "^2.0", + "sebastian/code-unit": "^2.0", + "sebastian/comparator": "^5.0", + "sebastian/diff": "^5.0", + "sebastian/environment": "^6.0", + "sebastian/exporter": "^5.1", + "sebastian/global-state": "^6.0.1", + "sebastian/object-enumerator": "^5.0", + "sebastian/recursion-context": "^5.0", + "sebastian/type": "^4.0", + "sebastian/version": "^4.0" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.5-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.10" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2024-02-04T09:07:51+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:58:15+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:58:43+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:59:15+00:00" + }, + { + "name": "sebastian/comparator", + "version": "5.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-14T13:18:12+00:00" + }, + { + "name": "sebastian/complexity", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "68ff824baeae169ec9f2137158ee529584553799" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:37:17+00:00" + }, + { + "name": "sebastian/diff", + "version": "5.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-22T10:55:06+00:00" + }, + { + "name": "sebastian/environment", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-04-11T05:39:26+00:00" + }, + { + "name": "sebastian/exporter", + "version": "5.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-09-24T13:22:09+00:00" + }, + { + "name": "sebastian/global-state", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-07-19T07:19:23+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:38:20+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:08:32+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:06:18+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:05:40+00:00" + }, + { + "name": "sebastian/type", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:10:45+00:00" + }, + { + "name": "sebastian/version", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-07T11:34:05+00:00" + }, + { + "name": "ta-tikoma/phpunit-architecture-test", + "version": "0.8.4", + "source": { + "type": "git", + "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", + "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/89f0dea1cb0f0d5744d3ec1764a286af5e006636", + "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18.0 || ^5.0.0", + "php": "^8.1.0", + "phpdocumentor/reflection-docblock": "^5.3.0", + "phpunit/phpunit": "^10.5.5 || ^11.0.0", + "symfony/finder": "^6.4.0 || ^7.0.0" + }, + "require-dev": { + "laravel/pint": "^1.13.7", + "phpstan/phpstan": "^1.10.52" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPUnit\\Architecture\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ni Shi", + "email": "futik0ma011@gmail.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Methods for testing application architecture", + "keywords": [ + "architecture", + "phpunit", + "stucture", + "test", + "testing" + ], + "support": { + "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.4" + }, + "time": "2024-01-05T14:10:56+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.2" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2023-11-20T00:12:19+00:00" + } + ], "aliases": [], "minimum-stability": "stable", "stability-flags": [], diff --git a/database/Seeders/RoleAndPermissionSeeder.php b/database/Seeders/RoleAndPermissionSeeder.php index 3a5b319c..67aa3e3e 100644 --- a/database/Seeders/RoleAndPermissionSeeder.php +++ b/database/Seeders/RoleAndPermissionSeeder.php @@ -40,6 +40,6 @@ public function run() $adminPermissions = Permission::all(); - $adminRole->permissions()->attach($adminPermissions); + $adminRole->permissions()->sync($adminPermissions); } } diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 00000000..acd5ed13 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,22 @@ + + + + + src/ + + + + + tests + + + + + + + + \ No newline at end of file diff --git a/src/Commands/MakeUser.php b/src/Commands/MakeUser.php index 6cca4d47..227a91f6 100644 --- a/src/Commands/MakeUser.php +++ b/src/Commands/MakeUser.php @@ -19,11 +19,6 @@ public function handle() { $dryRun = $this->option('dry-run'); - // check if Role table exists - if (Schema::hasTable('role') === FALSE) { - - } - // check first if there's an admin role in place $checkRole = Role::where('name', 'Admin')->first(); @@ -56,6 +51,7 @@ public function handle() $this->info('User to be created'); $this->info($userModel); } else { + $this->info('User created'); $userModel->save(); } } diff --git a/tests/Feature/AuthorTest.php b/tests/Feature/AuthorTest.php new file mode 100644 index 00000000..6aad38b9 --- /dev/null +++ b/tests/Feature/AuthorTest.php @@ -0,0 +1,50 @@ +assertTrue(Schema::hasTable('authors')); + } + + public function test_can_add_author(): void + { + $author = Author::create([ + 'first_name' => 'Jeremy', + 'last_name' => 'Layson', + 'is_individual' => 1, + ]); + + $this->assertModelExists($author); + $this->assertEquals($author->display_name, 'Jeremy Layson'); + + // test edit + $author = Author::orderBy('id', 'DESC')->limit(1)->first(); + $author->update(['first_name' => 'John']); + + // test non-individual + $author = Author::create([ + 'first_name' => 'Portable', + 'last_name' => 'SHOULD NOT SHOW', + 'is_individual' => 0, + ]); + + $this->assertModelExists($author); + $this->assertEquals($author->display_name, 'Portable'); + + $this->assertDatabaseHas('authors', [ 'first_name' => 'John', 'last_name' => 'Layson' ]); + $this->assertDatabaseMissing('authors', [ 'first_name' => 'Jeremy', 'last_name' => 'Layson' ]); + } +} \ No newline at end of file diff --git a/tests/Feature/Filament/UserResourceTest.php b/tests/Feature/Filament/UserResourceTest.php new file mode 100644 index 00000000..e59dbb68 --- /dev/null +++ b/tests/Feature/Filament/UserResourceTest.php @@ -0,0 +1,39 @@ +artisan('db:seed', ['--class' => '\\Portable\\FilaCms\\Database\\Seeders\\RoleAndPermissionSeeder']); + $adminRole = Role::where('name', 'Admin')->first(); + $adminUser = User::factory()->create(); + $adminUser->assignRole($adminRole); + + $this->actingAs($adminUser); + } + + public function test_render_page(): void + { + $this->get(UserResource::getUrl('index'))->assertSuccessful(); + } + + public function test_forbidden(): void + { + $user = User::factory()->create(); + $this->be($user); + $this->get(UserResource::getUrl('index'))->assertForbidden(); + } +} \ No newline at end of file diff --git a/tests/Feature/InstallTest.php b/tests/Feature/InstallTest.php new file mode 100644 index 00000000..3cb42e62 --- /dev/null +++ b/tests/Feature/InstallTest.php @@ -0,0 +1,77 @@ +artisan('fila-cms:install') + ->expectsOutputToContain('Installing Filament Base...') + ->expectsQuestion('Would you like to public the FilaCMS config?(Y/n)', 'Y') + ->expectsQuestion('Would you like to run migrations(Y/n)?', 'Y') + ->expectsQuestion('Would you like to add the required trait to your App\\Models\\User model?(Y/n)', 'Y') + ->expectsOutputToContain('Finished') + ->assertExitCode(0); + + $this->assertTrue(File::exists(config_path('fila-cms.php'))); + $this->assertTrue(File::exists(config_path('filament-tiptap-editor.php'))); + + $this->assertTrue(File::exists(database_path('migrations\2013_04_09_062329_create_revisions_table.php'))); + + } + + public function test_user_model_has_traits(): void + { + // check if User Model has the trait + $existingTraits = class_uses_recursive('App\Models\User'); + $this->assertTrue(in_array(HasRoles::class, $existingTraits)); + + // check if has interface + $userContents = file_get_contents(app_path("Models/User.php")); + $this->assertGreaterThan(0, strpos($userContents, FilamentUser::class)); + } + + public function test_roles_table_seeded(): void + { + $this->assertDatabaseHas('roles', ['name' => 'Admin']); + $this->assertDatabaseHas('roles', ['name' => 'User']); + $this->assertDatabaseHas('permissions', ['name' => 'access filacms-backend']); + } +} diff --git a/tests/Feature/MakeUserTest.php b/tests/Feature/MakeUserTest.php new file mode 100644 index 00000000..31736ae8 --- /dev/null +++ b/tests/Feature/MakeUserTest.php @@ -0,0 +1,57 @@ +artisan('db:seed', ['--class' => '\\Portable\\FilaCms\\Database\\Seeders\\RoleAndPermissionSeeder']); + } + + + public function test_can_detect_missing_role(): void + { + Role::query()->delete(); + Permission::query()->delete(); + + $this->artisan('fila-cms:make-user') + ->expectsOutputToContain('Cannot locate Admin role, have you run php artisan fila-cms:install?') + ->assertExitCode(0); + } + + public function test_roles_created(): void + { + $userFieldsRaw = Schema::getColumnListing((new \App\Models\User)->getTable()); + + $excludeFields = [ 'id', 'created_at', 'updated_at', 'deleted_at', 'remember_token', 'email_verified_at' ]; + $userFields = array_diff($userFieldsRaw, $excludeFields); + foreach ($userFields as $key => $field) { + $this->expectedQuestions[] = ['Enter admin ' . $field, 'test']; + } + + $artisan = $this->artisan('fila-cms:make-user') + ->expectsOutputToContain('User created') + ->assertExitCode(0) + ->run(); + + // verify user has been created + $this->assertDatabaseHas('users', [ + 'name' => 'test', + ]); + + // verify user has role + $user = \App\Models\User::first(); + $this->assertTrue($user->can('access filacms-backend')); + } +} \ No newline at end of file diff --git a/tests/Feature/PageTest.php b/tests/Feature/PageTest.php new file mode 100644 index 00000000..51e8932a --- /dev/null +++ b/tests/Feature/PageTest.php @@ -0,0 +1,156 @@ + 'Jeremy Layson', + 'email' => 'jeremy.layson@portable.com.au', + 'password' => 'password' + ]); + + $this->be($user); + + Author::create([ + 'first_name' => 'Portable', + 'is_individual' => 0 + ]); + + } + public function test_table_exists(): void + { + $this->assertTrue(Schema::hasTable('pages')); + } + + public function test_can_add_page(): void + { + $user = User::first(); + + $secondUser = User::create([ + 'name' => 'John Santos', + 'email' => 'johnsantos@portable.com.au', + 'password' => 'password' + ]); + + $title = $this->faker->text; + $page = Page::create([ + 'title' => $title, + 'is_draft' => 1, + 'contents' => $this->faker->paragraph(5), + ]); + + $this->assertModelExists($page); + $this->assertDatabaseHas('pages', [ 'slug' => Str::slug($title) ]); + $this->assertEquals($page->created_user_id, $user->id); + + $this->be($secondUser); + $page->title = 'Edit'; + $page->save(); + $page = $page->fresh(); + + $this->assertEquals($page->updated_user_id, $secondUser->id); + } + + public function test_custom_slug(): void + { + $author = Author::first(); + $user = User::first(); + + $title = $this->faker->text; + $page = Page::create([ + 'title' => $title, + 'slug' => 'test-slug', + 'is_draft' => 1, + 'contents' => $this->faker->paragraph(5), + ]); + + $this->assertDatabaseHas('pages', [ 'slug' => 'test-slug' ]); + $this->assertDatabaseMissing('pages', [ 'slug' => Str::slug($title) ]); + } + + public function test_draft_status(): void + { + $author = Author::first(); + $user = User::first(); + + $title = $this->faker->text; + $page = Page::create([ + 'title' => $title, + 'is_draft' => 1, + 'publish_at' => now()->subDays(10), + 'expire_at' => now()->addDays(10), + 'contents' => $this->faker->paragraph(5), + ]); + + $this->assertEquals($page->status, 'Draft'); + } + + public function test_published_status(): void + { + $author = Author::first(); + $user = User::first(); + + $title = $this->faker->text; + $page = Page::create([ + 'title' => $title, + 'is_draft' => 0, + 'publish_at' => now()->subDays(10), + 'expire_at' => now()->addDays(10), + 'contents' => $this->faker->paragraph(5), + ]); + + $this->assertEquals($page->status, 'Published'); + } + + public function test_expired_status(): void + { + $author = Author::first(); + $user = User::first(); + + $title = $this->faker->text; + $page = Page::create([ + 'title' => $title, + 'is_draft' => 0, + 'publish_at' => now()->subDays(10), + 'expire_at' => now()->subDays(10), + 'contents' => $this->faker->paragraph(5), + ]); + + $this->assertEquals($page->status, 'Expired'); + } + + public function test_pending_status(): void + { + $author = Author::first(); + $user = User::first(); + + $title = $this->faker->text; + $page = Page::create([ + 'title' => $title, + 'is_draft' => 0, + 'publish_at' => now()->addDays(10), + 'expire_at' => now()->addDays(10), + 'contents' => $this->faker->paragraph(5), + ]); + + $this->assertEquals($page->status, 'Pending'); + } +} \ No newline at end of file diff --git a/tests/Feature/TaxonomyTest.php b/tests/Feature/TaxonomyTest.php new file mode 100644 index 00000000..eacc3aac --- /dev/null +++ b/tests/Feature/TaxonomyTest.php @@ -0,0 +1,44 @@ +assertTrue(Schema::hasTable('taxonomies')); + $this->assertTrue(Schema::hasTable('taxonomy_terms')); + } + + public function test_can_add_taxonomy(): void + { + $taxonomy = Taxonomy::create(['name' => 'Taxonomy A']); + $term = $taxonomy->terms()->create(['name' => 'Term A']); + $this->assertModelExists($taxonomy); + $this->assertModelExists($term); + + // test edit + $taxonomy = Taxonomy::orderBy('id', 'DESC')->limit(1)->first(); + $taxonomy->update(['name' => 'Taxonomy Edited']); + + $this->assertDatabaseHas('taxonomies', [ 'name' => 'Taxonomy Edited' ]); + $this->assertDatabaseMissing('taxonomies', [ 'name' => 'Taxonomy A' ]); + + $term = $taxonomy->terms()->first(); + $term->update(['name' => 'Term B']); + + $this->assertDatabaseHas('taxonomy_terms', [ 'name' => 'Term B' ]); + $this->assertDatabaseMissing('taxonomy_terms', [ 'name' => 'Term A' ]); + } +} \ No newline at end of file diff --git a/vendor/anourvalar/eloquent-serialize/.gitignore b/vendor/anourvalar/eloquent-serialize/.gitignore deleted file mode 100644 index debc9e3a..00000000 --- a/vendor/anourvalar/eloquent-serialize/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -/vendor -composer.lock -.idea -.phpunit.result.cache -.DS_Store \ No newline at end of file diff --git a/vendor/anourvalar/eloquent-serialize/.php-cs-fixer.php b/vendor/anourvalar/eloquent-serialize/.php-cs-fixer.php deleted file mode 100644 index 1344ecbf..00000000 --- a/vendor/anourvalar/eloquent-serialize/.php-cs-fixer.php +++ /dev/null @@ -1,11 +0,0 @@ -exclude('vendor') - ->in(__DIR__); - -$config = new PhpCsFixer\Config(); -return $config->setRules([ - '@PSR12' => true, - ]) - ->setFinder($finder); diff --git a/vendor/anourvalar/eloquent-serialize/LICENSE b/vendor/anourvalar/eloquent-serialize/LICENSE deleted file mode 100644 index 6bf614ed..00000000 --- a/vendor/anourvalar/eloquent-serialize/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 AnourValar - -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/vendor/anourvalar/eloquent-serialize/README.md b/vendor/anourvalar/eloquent-serialize/README.md deleted file mode 100644 index 2feaebf4..00000000 --- a/vendor/anourvalar/eloquent-serialize/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# Serialization for Eloquent's QueryBuilder -Supports Laravel 6+ - -## Installation - -```bash -composer require anourvalar/eloquent-serialize -``` - - -## Usage - -### Serialize -```php -$package = \EloquentSerialize::serialize( - \App\User::query() - ->with('userPhones') - ->where('id', '>', '10') - ->limit(20) -); -``` - - -### Unserialize -```php -$builder = \EloquentSerialize::unserialize($package); - -foreach ($builder->get() as $item) { - // ... -} -``` diff --git a/vendor/anourvalar/eloquent-serialize/composer.json b/vendor/anourvalar/eloquent-serialize/composer.json deleted file mode 100644 index 0e2b3585..00000000 --- a/vendor/anourvalar/eloquent-serialize/composer.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "anourvalar/eloquent-serialize", - "description": "Laravel Query Builder (Eloquent) serialization", - "keywords": ["laravel", "query", "builder", "querybuilder", "anourvalar", "serialize", "serialization", "eloquent", "serializable", "job", "queue", "copy"], - "homepage": "https://github.com/AnourValar/eloquent-serialize", - "license": "MIT", - "require": { - "php": "^7.1|^8.0", - "laravel/framework": "^6.0|^7.0|^8.0|^9.0|^10.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5", - "orchestra/testbench": "~3.6.0|~3.7.0|~3.8.0|^4.0|^5.0|^6.0|^7.0|^8.0", - "laravel/legacy-factories": "^1.1", - "phpstan/phpstan": "^1.10", - "friendsofphp/php-cs-fixer": "^3.26", - "squizlabs/php_codesniffer": "^3.7", - "psalm/plugin-laravel": "^2.8" - }, - "autoload": { - "psr-4": {"AnourValar\\EloquentSerialize\\": "src/"} - }, - "autoload-dev": { - "psr-4": {"AnourValar\\EloquentSerialize\\Tests\\": "tests/"} - }, - "extra": { - "laravel": { - "aliases": { - "EloquentSerialize": "AnourValar\\EloquentSerialize\\Facades\\EloquentSerializeFacade" - } - } - } -} diff --git a/vendor/anourvalar/eloquent-serialize/phpcs.xml b/vendor/anourvalar/eloquent-serialize/phpcs.xml deleted file mode 100644 index 6d6f9dd8..00000000 --- a/vendor/anourvalar/eloquent-serialize/phpcs.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - PHPCS ruleset - - src - tests - src/resources - - - - - - - - - - - - - - - - - - - - - tests/ - - - - tests/ - - - diff --git a/vendor/anourvalar/eloquent-serialize/phpstan.neon b/vendor/anourvalar/eloquent-serialize/phpstan.neon deleted file mode 100644 index ff0b0d83..00000000 --- a/vendor/anourvalar/eloquent-serialize/phpstan.neon +++ /dev/null @@ -1,28 +0,0 @@ -parameters: - - paths: - - src - - tests - - # The level 9 is the highest level - level: 5 - - ignoreErrors: - - '#Call to an undefined static method#' - - '#Call to an undefined method#' - - '#Call to static method#' - - '#Illuminate\\Database\\Eloquent\\Relations\\HasOneThrough but returns Illuminate\\Database\\Eloquent\\Relations\\HasManyThrough\.#' - - '#Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\PendingHasThroughRelationship\:\:has\(\)#' - - excludePaths: - - checkFunctionNameCase: true - checkInternalClassCaseSensitivity: true - checkAlwaysTrueInstanceof: true - reportMaybesInMethodSignatures: true - reportStaticMethodSignatures: true - checkUninitializedProperties: true - checkDynamicProperties: true - reportAlwaysTrueInLastCondition: true - reportWrongPhpDocTypeInVarTag: true - checkMissingCallableSignature: true diff --git a/vendor/anourvalar/eloquent-serialize/phpunit.xml b/vendor/anourvalar/eloquent-serialize/phpunit.xml deleted file mode 100644 index 0e392064..00000000 --- a/vendor/anourvalar/eloquent-serialize/phpunit.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - src/ - - - - - tests - - - - - - diff --git a/vendor/anourvalar/eloquent-serialize/psalm.xml b/vendor/anourvalar/eloquent-serialize/psalm.xml deleted file mode 100644 index 106beb63..00000000 --- a/vendor/anourvalar/eloquent-serialize/psalm.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/anourvalar/eloquent-serialize/src/Facades/EloquentSerializeFacade.php b/vendor/anourvalar/eloquent-serialize/src/Facades/EloquentSerializeFacade.php deleted file mode 100644 index 6228d33c..00000000 --- a/vendor/anourvalar/eloquent-serialize/src/Facades/EloquentSerializeFacade.php +++ /dev/null @@ -1,20 +0,0 @@ - $this->getEagers($builder), // preloaded ("eager") relations - 'removed_scopes' => $builder->removedScopes(), // global scopes - 'casts' => $builder->getModel()->getCasts(), - ]; - } - - /** - * Unserialize state for \Illuminate\Database\Eloquent\Builder - * - * @param array $data - * @param \Illuminate\Database\Eloquent\Builder $builder - * @return void - */ - protected function unpackEloquentBuilder(array $data, \Illuminate\Database\Eloquent\Builder &$builder): void - { - // Preloaded ("eager") relations - $this->setEagers($builder, $data['with']); - - // Global scopes - if ($data['removed_scopes']) { - $builder->withoutGlobalScopes($data['removed_scopes']); - } - - // Casts - if (method_exists($builder->getModel(), 'mergeCasts')) { // old versions support - $builder->getModel()->mergeCasts($data['casts']); - } - } - - /** - * @param \Illuminate\Database\Eloquent\Builder $builder - * @return array - */ - private function getEagers(\Illuminate\Database\Eloquent\Builder $builder): array - { - $result = []; - - foreach ($builder->getEagerLoads() as $name => $value) { - $relation = $builder; - foreach (explode('.', $name) as $part) { - $relation = $relation->getRelation($part); // get a relation without "constraints" - } - $referenceRelation = clone $relation; - - $value($relation); // apply closure - $result[$name] = $this->packQueryBuilder($relation->getQuery()->getQuery()); - - $relation->getQuery()->getModel()->newInstance()->with($name)->getEagerLoads()[$name]($referenceRelation); - $this->cleanStaticConstraints($result[$name], $this->packQueryBuilder($referenceRelation->getQuery()->getQuery())); - } - - return $result; - } - - /** - * @param \Illuminate\Database\Eloquent\Builder $builder - * @param array $eagers - * @return void - */ - private function setEagers(\Illuminate\Database\Eloquent\Builder $builder, array $eagers): void - { - foreach ($eagers as &$value) { - $value = function ($query) use ($value) { - // Input argument may be different depends on context - while (! ($query instanceof \Illuminate\Database\Query\Builder)) { - $query = $query->getQuery(); - } - - $this->unpackQueryBuilder($value, $query); - }; - } - unset($value); - - $builder->setEagerLoads($eagers); - } - - /** - * @param array $packedQueryBuilder - * @param array $packedReferenceQueryBuilder - * @return void - */ - private function cleanStaticConstraints(array &$packedQueryBuilder, array $packedReferenceQueryBuilder): void - { - $properties = [ - 'aggregate', 'columns', 'distinct', 'wheres', 'groups', 'havings', 'orders', 'limit', 'offset', 'unions', - 'unionLimit', 'unionOffset', 'unionOrders', 'joins', - ]; - - foreach ($properties as $property) { - if (! is_array($packedQueryBuilder[$property])) { - continue; - } - - foreach ($packedQueryBuilder[$property] as $key => $item) { - if (in_array($item, (array) $packedReferenceQueryBuilder[$property], true)) { - unset($packedQueryBuilder[$property][$key]); - } - } - } - - foreach ($packedQueryBuilder['bindings'] as $binding => $data) { - if (! is_array($data)) { - continue; // just in case ;) - } - - foreach ($data as $key => $value) { - if ( - isset($packedReferenceQueryBuilder['bindings'][$binding][$key]) - && $packedReferenceQueryBuilder['bindings'][$binding][$key] === $value - ) { - unset($packedQueryBuilder['bindings'][$binding][$key]); - } - } - } - } -} diff --git a/vendor/anourvalar/eloquent-serialize/src/Grammars/ModelGrammar.php b/vendor/anourvalar/eloquent-serialize/src/Grammars/ModelGrammar.php deleted file mode 100644 index 25283dcb..00000000 --- a/vendor/anourvalar/eloquent-serialize/src/Grammars/ModelGrammar.php +++ /dev/null @@ -1,39 +0,0 @@ - get_class($builder->getModel()), - 'connection' => $builder->getModel()->getConnectionName(), - 'eloquent' => $this->packEloquentBuilder($builder), - 'query' => $this->packQueryBuilder($builder->getQuery()), - ]); - } - - /** - * Unpack - * - * @param \AnourValar\EloquentSerialize\Package $package - * @return \Illuminate\Database\Eloquent\Builder - */ - protected function unpack(\AnourValar\EloquentSerialize\Package $package): \Illuminate\Database\Eloquent\Builder - { - $builder = $package->get('model'); - $builder = $builder::on($package->get('connection')); - - $this->unpackEloquentBuilder($package->get('eloquent'), $builder); - $this->unpackQueryBuilder($package->get('query'), $builder->getQuery()); - - return $builder; - } -} diff --git a/vendor/anourvalar/eloquent-serialize/src/Grammars/QueryBuilderGrammar.php b/vendor/anourvalar/eloquent-serialize/src/Grammars/QueryBuilderGrammar.php deleted file mode 100644 index b244ac25..00000000 --- a/vendor/anourvalar/eloquent-serialize/src/Grammars/QueryBuilderGrammar.php +++ /dev/null @@ -1,181 +0,0 @@ - $builder->bindings, - 'aggregate' => $builder->aggregate, - 'columns' => $builder->columns, - 'distinct' => $builder->distinct, - 'from' => $builder->from, - 'wheres' => $this->packWheres($builder->wheres), - 'groups' => $builder->groups, - 'havings' => $builder->havings, - 'orders' => $builder->orders, - 'limit' => $builder->limit, - 'offset' => $builder->offset, - 'unions' => $this->packUnions($builder->unions), - 'unionLimit' => $builder->unionLimit, - 'unionOffset' => $builder->unionOffset, - 'unionOrders' => $builder->unionOrders, - - 'joins' => $this->packJoins($builder->joins), // must be the last - ]; - } - - /** - * @param array $data - * @param \Illuminate\Database\Query\Builder $builder - * @return \Illuminate\Database\Query\Builder - */ - protected function unpackQueryBuilder(array $data, \Illuminate\Database\Query\Builder $builder): \Illuminate\Database\Query\Builder - { - foreach ($data as $key => $value) { - if ($key == 'wheres') { - $value = $this->unpackWheres($value, $builder); - } - - if ($key == 'unions') { - $value = $this->unpackUnions($value); - } - - if ($key == 'joins') { - $value = $this->unpackJoins($value, $builder); - } - - if (is_array($builder->$key) && is_array($value)) { - $builder->$key = array_merge_recursive($builder->$key, $value); - } else { - $builder->$key = $value; - } - } - - return $builder; - } - - /** - * @param mixed $wheres - * @return mixed - */ - private function packWheres($wheres) - { - foreach ($wheres as &$item) { - if (isset($item['query'])) { - $item['query'] = $this->packQueryBuilder($item['query']); - } - } - unset($item); - - return $wheres; - } - - /** - * @param mixed $unions - * @return mixed - */ - private function packUnions($unions) - { - if (! is_array($unions)) { - return $unions; - } - - foreach ($unions as &$item) { - if (isset($item['query'])) { - $item['query'] = $this->pack($item['query']); - } - } - unset($item); - - return $unions; - } - - /** - * @param mixed $joins - * @return mixed - */ - private function packJoins($joins) - { - if (! is_array($joins)) { - return $joins; - } - - foreach ($joins as &$item) { - $item = array_replace( - ['type' => $item->type, 'table' => $item->table], - $this->packQueryBuilder($item) - ); - } - unset($item); - - return $joins; - } - - /** - * @param mixed $wheres - * @param \Illuminate\Database\Query\Builder $builder - * @return mixed - */ - private function unpackWheres($wheres, \Illuminate\Database\Query\Builder $builder) - { - foreach ($wheres as &$item) { - if (isset($item['query'])) { - $item['query'] = $this->unpackQueryBuilder($item['query'], $builder->newQuery()); - } - } - unset($item); - - return $wheres; - } - - /** - * @param mixed $unions - * @return mixed - */ - private function unpackUnions($unions) - { - if (! is_array($unions)) { - return $unions; - } - - foreach ($unions as &$item) { - if (isset($item['query'])) { - $item['query'] = $this->unpack($item['query']); - } - } - unset($item); - - return $unions; - } - - /** - * @param mixed $joins - * @param \Illuminate\Database\Query\Builder $builder - * @return mixed - */ - private function unpackJoins($joins, \Illuminate\Database\Query\Builder $builder) - { - if (! is_array($joins)) { - return $joins; - } - - foreach ($joins as &$item) { - $parentQuery = new \Illuminate\Database\Query\JoinClause($builder, $item['type'], $item['table']); - unset($item['type'], $item['table']); - - $item = $this->unpackQueryBuilder($item, $parentQuery); - } - unset($item); - - return $joins; - } -} diff --git a/vendor/anourvalar/eloquent-serialize/src/Package.php b/vendor/anourvalar/eloquent-serialize/src/Package.php deleted file mode 100644 index 323cf5b2..00000000 --- a/vendor/anourvalar/eloquent-serialize/src/Package.php +++ /dev/null @@ -1,33 +0,0 @@ -data = $data; - } - - /** - * @param string $key - * @return mixed - */ - public function get(string $key = null) - { - if (is_null($key)) { - return $this->data; - } - - return ($this->data[$key] ?? null); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/src/Service.php b/vendor/anourvalar/eloquent-serialize/src/Service.php deleted file mode 100644 index 5554eefb..00000000 --- a/vendor/anourvalar/eloquent-serialize/src/Service.php +++ /dev/null @@ -1,44 +0,0 @@ -pack($builder); - - return serialize($package); // important! - } - - /** - * Unpack - * - * @param mixed $package - * @throws \LogicException - * @return \Illuminate\Database\Eloquent\Builder - */ - public function unserialize($package): \Illuminate\Database\Eloquent\Builder - { - // Prepare data - if (is_string($package)) { - $package = unserialize($package); - } - if (! ($package instanceof Package)) { - throw new \LogicException('Incorrect argument.'); - } - - // Unpack - return $this->unpack($package); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/AbstractTest.php b/vendor/anourvalar/eloquent-serialize/tests/AbstractTest.php deleted file mode 100644 index 32ef1604..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/AbstractTest.php +++ /dev/null @@ -1,133 +0,0 @@ -withFactories(__DIR__.'/factories'); - $this->setUpDatabase($this->app); - $this->setUpSeeder(); - - \DB::enableQueryLog(); - - $this->service = \App::make(\AnourValar\EloquentSerialize\Service::class); - } - - /** - * @param \Illuminate\Foundation\Application $app - * @return void - */ - protected function setUpDatabase(\Illuminate\Foundation\Application $app) - { - $app['db']->connection()->getSchemaBuilder()->create('users', function (Blueprint $table) { - $table->increments('id'); - $table->string('title'); - $table->integer('sort'); - $table->jsonb('meta')->nullable(); - $table->timestamps(); - $table->softDeletes(); - }); - - $app['db']->connection()->getSchemaBuilder()->create('user_phones', function (Blueprint $table) { - $table->increments('id'); - $table->integer('user_id'); - $table->string('phone'); - $table->boolean('is_primary'); - $table->timestamps(); - }); - - $app['db']->connection()->getSchemaBuilder()->create('user_phone_notes', function (Blueprint $table) { - $table->increments('id'); - $table->integer('user_phone_id'); - $table->string('note'); - $table->timestamps(); - }); - - $app['db']->connection()->getSchemaBuilder()->create('posts', function (Blueprint $table) { - $table->increments('id'); - $table->integer('user_id'); - $table->string('title'); - $table->text('body'); - $table->timestamps(); - }); - - $app['db']->connection()->getSchemaBuilder()->create('files', function (Blueprint $table) { - $table->id(); - $table->foreignIdFor(User::class); - $table->string('type'); - $table->timestamps(); - }); - } - - /** - * @return void - */ - protected function setUpSeeder() - { - factory(UserPhoneNote::class)->times(80)->create(); - factory(File::class)->times(40)->create(); - } - - /** - * @param \Illuminate\Database\Eloquent\Builder $builder - * @param bool $execute - * @return void - */ - protected function compare(\Illuminate\Database\Eloquent\Builder $builder, bool $execute = true): void - { - $referenceBuilder = clone $builder; - $referenceSerialize = $this->service->serialize($builder); - - for ($i = 1; $i <= 3; $i++) { - $builder = $this->service->serialize($builder); - $this->assertSame($referenceSerialize, $builder, "#$i"); - - $builder = json_encode($builder); - $builder = json_decode($builder, true); - $builder = $this->service->unserialize($builder); - $this->assertSame($this->getScheme($referenceBuilder, $execute), $this->getScheme($builder, $execute), "#$i"); - } - } - - /** - * @param \Illuminate\Database\Eloquent\Builder $builder - * @param bool $execute - * @return string - */ - private function getScheme(\Illuminate\Database\Eloquent\Builder $builder, bool $execute): string - { - \DB::flushQueryLog(); - if ($execute) { - $result = $builder->get(); - } else { - $result = []; - } - $logs = \DB::getQueryLog(); - - foreach ($logs as &$log) { - unset($log['time']); - } - unset($log); - - return json_encode(['query' => $logs, 'result' => $result], JSON_PRETTY_PRINT); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/Casts/TestCast.php b/vendor/anourvalar/eloquent-serialize/tests/Casts/TestCast.php deleted file mode 100644 index e7a8c8cf..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/Casts/TestCast.php +++ /dev/null @@ -1,36 +0,0 @@ -service->serialize(User::where('id', '!=', 1)); - $package = json_encode($package); - - $package = json_decode($package, true); - $builder = $this->service->unserialize($package); - - $this->assertEquals('testing', $builder->getQuery()->getConnection()->getName()); - $this->assertEquals('testing', $builder->first()->getConnectionName()); - } - - /** - * @return void - */ - public function testSimple() - { - config(['database.connections.foo' => config('database.connections.testing')]); - - $package = $this->service->serialize((new User())->setConnection('foo')->where('id', '!=', 1)); - $package = json_encode($package); - - $package = json_decode($package, true); - $builder = $this->service->unserialize($package); - - $this->assertEquals('foo', $builder->getQuery()->getConnection()->getName()); - $this->assertEquals('foo', $builder->getModel()->getConnectionName()); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/DistinctTest.php b/vendor/anourvalar/eloquent-serialize/tests/DistinctTest.php deleted file mode 100644 index 43ae35e1..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/DistinctTest.php +++ /dev/null @@ -1,16 +0,0 @@ -compare(User::distinct('title')); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/EagerTest.php b/vendor/anourvalar/eloquent-serialize/tests/EagerTest.php deleted file mode 100644 index 08863b51..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/EagerTest.php +++ /dev/null @@ -1,317 +0,0 @@ -compare(User::query()); - - // with - $this->compare(User::with('userPhones')); - - // with count - $this->compare(User::withCount('userPhones')); - } - - /** - * @return void - */ - public function testComplex() - { - // with - $this->compare(User::with('userPhonesSorted')); - $this->compare(User::with('userPhonesPrimary')); - $this->compare(User::with(['userPhonesSorted', 'userPhonesPrimary'])); - $this->compare(User::query()->with('filesAB', 'filesC', 'filesDE')); - - // with count - $this->compare(User::withCount('userPhonesSorted')); - $this->compare(User::withCount('userPhonesPrimary')); - $this->compare(User::withCount(['userPhonesSorted', 'userPhonesPrimary'])); - $this->compare(User::query()->withCount('filesAB', 'filesC', 'filesDE')); - } - - /** - * @return void - */ - public function testNested() - { - // with - $this->compare(User::with('userPhones.userPhoneNote')); - - // with (reverse) - $this->compare(UserPhone::with('user.userPhones')); - } - - /** - * @return void - */ - public function testNestedComplex() - { - // with - $this->compare(User::with('userPhonesSorted.userPhoneNote')); - $this->compare(User::with('userPhonesPrimary.userPhoneNote')); - - // with (reverse) - $this->compare(UserPhone::with('user.userPhonesSorted')); - $this->compare(UserPhone::with('user.userPhonesPrimary')); - } - - /** - * @return void - */ - public function testWithBuilder() - { - // 1 level - $this->compare( - User::with(['userPhones' => function ($query) { - $query->orderBy('id', 'ASC')->limit(1)->select(['id', 'phone']); - }]) - ); - - // 2 levels - $this->compare( - User::with(['userPhones' => function ($query) { - $query->where(function ($query) { - $query->where('phone', '=', '111')->orWhere('phone', '!=', '222'); - }); - }]) - ); - - // 3 levels - $this->compare( - User::with(['userPhones' => function ($query) { - $query->where(function ($query) { - $query - ->where('phone', '=', '111') - ->orWhere(function ($query) { - $query->where('phone', '=', '222')->orWhere('created_at', '>', '2010-01-01'); - }); - }); - }]) - ); - } - - /** - * @return void - */ - public function testWithComplexBuilder() - { - // 1 level - $this->compare( - User::with(['userPhonesPrimary' => function ($query) { - $query->orderBy('id', 'ASC')->limit(1)->select(['id', 'phone']); - }]) - ); - - // 2 levels - $this->compare( - User::with(['userPhonesPrimary' => function ($query) { - $query->where(function ($query) { - $query->where('phone', '=', '111')->orWhere('phone', '!=', '222'); - }); - }]) - ); - - // 3 levels - $this->compare( - User::with(['userPhonesPrimary' => function ($query) { - $query->where(function ($query) { - $query - ->where('phone', '=', '111') - ->orWhere(function ($query) { - $query->where('phone', '=', '222')->orWhere('created_at', '>', '2010-01-01'); - }); - }); - }]) - ); - } - - /** - * @return void - */ - public function testWithCountBuilder() - { - // 1 level - $this->compare( - User::withCount(['userPhones' => function ($query) { - $query->limit(2); - }]) - ); - - // 2 levels - $this->compare( - User::withCount(['userPhones' => function ($query) { - $query->where(function ($query) { - $query->where('phone', '=', '111')->orWhere('phone', '!=', '222'); - }); - }]) - ); - } - - /** - * @return void - */ - public function testWithComplexCountBuilder() - { - // 1 level - $this->compare( - User::withCount(['userPhonesSorted' => function ($query) { - $query->limit(2); - }]) - ); - - // 2 levels - $this->compare( - User::withCount(['userPhonesSorted' => function ($query) { - $query->where(function ($query) { - $query->where('phone', '=', '111')->orWhere('phone', '!=', '222'); - }); - }]) - ); - } - - /** - * @return void - */ - public function testWithCountAlias() - { - // simple - $this->compare( - User::withCount('userPhones as test') - ); - - // builder - $this->compare( - User::withCount([ - 'userPhones as primary' => function ($query) { - $query->where(function ($query) { - $query->where('is_primary', true); - }); - }, - 'userPhones as not_primary' => function ($query) { - $query->where('is_primary', false); - }, - ]) - ); - } - - /** - * @return void - */ - public function testBelongs() - { - // simple - $this->compare( - UserPhone::with('user') - ); - - // simple count - $this->compare( - UserPhone::withCount('user') - ); - - // builder - $this->compare( - UserPhone::with([ - 'user' => function ($query) { - $query->where('title', '=', 'admin')->limit(1); - }, - ]) - ); - } - - /** - * @return void - */ - public function testHasManyThrough() - { - // simple - $this->compare(User::with('userPhoneNote')); - $this->compare(User::with('userPhonesSorted')); - $this->compare(User::with('userPhonesPrimary')); - - // simple count - $this->compare(User::withCount('userPhoneNote')); - $this->compare(User::withCount('userPhonesSorted')); - $this->compare(User::withCount('userPhonesPrimary')); - - // builder - $this->compare( - User::with([ - 'userPhoneNote' => function ($query) { - $query->limit(1); - }, - ]) - ); - $this->compare( - User::with([ - 'userPhonesSorted' => function ($query) { - $query->limit(1); - }, - ]) - ); - $this->compare( - User::with([ - 'userPhonesPrimary' => function ($query) { - $query->limit(1); - }, - ]) - ); - } - - /** - * @return void - */ - public function testThroughBuilder() - { - // simple - $this->compare(User::with('userPhoneNoteAlt')); - - // simple count - $this->compare(User::withCount('userPhoneNoteAlt')); - - // builder - $this->compare( - User::with([ - 'userPhoneNoteAlt' => function ($query) { - $query->limit(1); - }, - ]) - ); - } - - /** - * @return void - */ - public function testHasOne() - { - // simple - $this->compare( - UserPhone::with('userPhoneNote') - ); - - // simple count - $this->compare( - UserPhone::withCount('userPhoneNote') - ); - - // builder - $this->compare( - UserPhone::with([ - 'userPhoneNote' => function ($query) { - $query->whereNotNull('note'); - }, - ]) - ); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/FromTest.php b/vendor/anourvalar/eloquent-serialize/tests/FromTest.php deleted file mode 100644 index c2d264fc..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/FromTest.php +++ /dev/null @@ -1,22 +0,0 @@ -compare( - User::whereExists(function ($query) { - $query - ->from('user_phones') - ->whereRaw('user_phones.user_id = users.id'); - }) - ); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/GroupByTest.php b/vendor/anourvalar/eloquent-serialize/tests/GroupByTest.php deleted file mode 100644 index eb19cde2..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/GroupByTest.php +++ /dev/null @@ -1,17 +0,0 @@ -compare(User::groupBy('title')); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/HavingTest.php b/vendor/anourvalar/eloquent-serialize/tests/HavingTest.php deleted file mode 100644 index 5527fc2f..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/HavingTest.php +++ /dev/null @@ -1,23 +0,0 @@ -compare(User::groupBy(['id'])->having('id', '>', 1)); - - // Two columns - $this->compare(User::groupBy(['id', 'title'])->having('id', '>', 1)->orHaving('title', '=', 'abc')); - - // Raw - $this->compare(User::groupBy('id')->havingRaw('COUNT(id) > ?', [1])); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/JoinTest.php b/vendor/anourvalar/eloquent-serialize/tests/JoinTest.php deleted file mode 100644 index 50d40e0a..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/JoinTest.php +++ /dev/null @@ -1,88 +0,0 @@ -compare( - User::leftJoin('user_phones', 'users.id', '=', 'user_phones.user_id')->selectRaw('users.*, user_phones.phone') - ); - - $this->compare( - UserPhone::leftJoin('users', 'users.id', '=', 'user_phones.user_id')->groupBy('users.id') - ); - } - - /** - * @return void - */ - public function testInner() - { - $this->compare( - UserPhone::join('users', 'users.id', '=', 'user_phones.user_id') - ); - } - - /** - * @return void - */ - public function testCross() - { - $this->compare(UserPhone::crossJoin('users')); - } - - /** - * @return void - */ - public function testMultiple() - { - $this->compare( - UserPhone::join('users', 'users.id', '=', 'user_phones.user_id') - ->join('posts', 'users.id', '=', 'posts.user_id') - ); - } - - /** - * @return void - */ - public function testExpression() - { - $this->compare( - User::join('posts', function ($join) { - $join->on('users.id', '=', 'posts.user_id')->orOn('users.id', '=', 'posts.user_id'); - }) - ); - - $this->compare( - User::join('posts', function ($join) { - $join->on('users.id', '=', 'posts.user_id')->where('posts.title', '=', 'abc'); - }) - ); - } - - /** - * @return void - */ - public function testSubQuery() - { - $latestPosts = Post::select('user_id', \DB::raw('MAX(created_at) as last_post_created_at')) - ->groupBy('user_id'); - - $this->compare($latestPosts); - - $this->compare( - User::joinSub($latestPosts, 'latest_posts', function ($join) { - $join->on('users.id', '=', 'latest_posts.user_id'); - }) - ); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/LimitTest.php b/vendor/anourvalar/eloquent-serialize/tests/LimitTest.php deleted file mode 100644 index a36201f3..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/LimitTest.php +++ /dev/null @@ -1,20 +0,0 @@ -compare(User::limit(10)); - - // Limit with offset - $this->compare(User::offset(20)->limit(10)); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/Models/File.php b/vendor/anourvalar/eloquent-serialize/tests/Models/File.php deleted file mode 100644 index 5865a1d7..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/Models/File.php +++ /dev/null @@ -1,7 +0,0 @@ -hasMany(UserPhone::class); - } - - /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany - */ - public function userPhonesSorted() - { - return $this->hasMany(UserPhone::class)->orderBy('phone', 'ASC'); - } - - /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany - */ - public function userPhonesPrimary() - { - return $this->hasMany(UserPhone::class)->where('is_primary', '=', true); - } - - /** - * @return \Illuminate\Database\Eloquent\Relations\HasManyThrough - */ - public function userPhoneNote() - { - return $this->hasManyThrough(UserPhoneNote::class, UserPhone::class); - } - - /** - * @return \Illuminate\Database\Eloquent\Relations\HasOneThrough - */ - public function userPhoneNoteAlt() - { - return $this->through($this->userPhones()) - ->has(fn (UserPhone $userPhone) => $userPhone->userPhoneNote()); - } - - /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany - */ - public function filesAB() - { - return $this->hasMany(File::class, 'user_id')->whereIn('type', ['a', 'b']); - } - - /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany - */ - public function filesC() - { - return $this->hasMany(File::class, 'user_id', 'id')->where('type', 'c'); - } - - /** - * @return \Illuminate\Database\Eloquent\Relations\HasMany - */ - public function filesDE() - { - return $this->hasOne(File::class) - ->whereNotIn('type', ['f', 'g']) - ->whereIn('type', ['d', 'e']) - ->whereNotIn('type', ['a', 'b', 'c']); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/Models/UserPhone.php b/vendor/anourvalar/eloquent-serialize/tests/Models/UserPhone.php deleted file mode 100644 index d712bbcb..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/Models/UserPhone.php +++ /dev/null @@ -1,44 +0,0 @@ -belongsTo(User::class); - } - - /** - * @return \Illuminate\Database\Eloquent\Relations\HasOne - */ - public function userPhoneNote() - { - return $this->hasOne(UserPhoneNote::class); - } - - /** - * @param \Illuminate\Database\Eloquent\Builder $query - * @param bool $isPrimary - * @return void - */ - public function scopeMajor(\Illuminate\Database\Eloquent\Builder $query, bool $isPrimary) - { - $query->where('is_primary', '=', $isPrimary); - } - - /** - * @param \Illuminate\Database\Eloquent\Builder $query - * @param string $pattern - * @return void - */ - public function scopeSearch(\Illuminate\Database\Eloquent\Builder $query, string $pattern) - { - $query->where(function ($query) use ($pattern) { - $query->where('phone', 'LIKE', "%$pattern%"); - }); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/Models/UserPhoneNote.php b/vendor/anourvalar/eloquent-serialize/tests/Models/UserPhoneNote.php deleted file mode 100644 index cee7d40f..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/Models/UserPhoneNote.php +++ /dev/null @@ -1,7 +0,0 @@ -compare(User::orderBy('id', 'ASC')); - - // Two columns - $this->compare(User::orderBy('id', 'ASC')->orderBy('sort', 'DESC')); - } - - /** - * @return void - */ - public function testExpression() - { - // ASC - $this->compare( - User::orderBy(UserPhone::select('created_at')->whereColumn('user_id', 'users.id')->limit(1)->orderBy('created_at', 'ASC')) - ); - - // DESC - $this->compare( - User::orderByDesc(UserPhone::select('phone')->whereColumn('user_id', 'users.id')->limit(1)->orderBy('phone', 'DESC')) - ); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/ScopeTest.php b/vendor/anourvalar/eloquent-serialize/tests/ScopeTest.php deleted file mode 100644 index ed6bf03b..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/ScopeTest.php +++ /dev/null @@ -1,36 +0,0 @@ -compare(User::withTrashed()); - - // Reverted - $this->compare(User::withTrashed()->withoutTrashed()); - } - - /** - * @return void - */ - public function testWithParams() - { - // Primary - $this->compare(UserPhone::major(true)); - - // NOT primary - $this->compare(UserPhone::major(false)); - - // Combine - $this->compare(UserPhone::major(false)->search('906')); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/SelectTest.php b/vendor/anourvalar/eloquent-serialize/tests/SelectTest.php deleted file mode 100644 index 0b421296..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/SelectTest.php +++ /dev/null @@ -1,31 +0,0 @@ -compare(User::select(['id', 'title'])); - - // Raw - $this->compare(User::selectRaw('id, (SELECT COUNT(*) FROM user_phones WHERE user_id = users.id)')); - } - - /** - * @return void - */ - public function testExpression() - { - $this->compare( - User::select(['users.*', 'test' => UserPhone::selectRaw('MAX(created_at)')->whereColumn('user_id', 'users.id')]) - ); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/UnionTest.php b/vendor/anourvalar/eloquent-serialize/tests/UnionTest.php deleted file mode 100644 index 59e75404..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/UnionTest.php +++ /dev/null @@ -1,79 +0,0 @@ -compare( - User::whereIn('title', ['a', 'b'])->union(User::whereIn('id', ['1', '2'])) - ); - } - - /** - * @return void - */ - public function testNested() - { - // 2 levels - $union = User::where('id', '=', '1'); - $union = User::where('id', '=', '2')->union($union); - - $this->compare( - User::whereIn('title', ['a', 'b'])->union($union) - ); - - // 3 levels - $union = User::where('id', '=', '1'); - $union = User::where('id', '=', '2')->union($union); - $union = User::where('id', '=', '3')->union($union); - - $this->compare( - User::whereIn('title', ['a', 'b'])->union($union) - ); - } - - /** - * @return void - */ - public function testExpression() - { - $union1 = User::where(function ($query) { - $query->whereDoesnthave('userPhones', function ($query) { - $query->where(function ($query) { - $query - ->where('created_at', '>=', '2010-01-01') - ->orWhere('id', '=', '1'); - }); - }); - }); - - $union2 = User::whereHas('userPhones', function ($query) { - $query->where('created_at', '>=', '2010-01-01'); - }); - - $union2 = User::union($union2)->where(function ($query) { - $query - ->where('id', '=', '1') - ->orWhere(function ($query) { - $query - ->where('id', '=', '2') - ->orWhere(function ($query) { - $query - ->where('title', '!=', 'admin') - ->orWhere('id', '=', '3'); - }); - }); - }); - - $this->compare( - User::whereNotIn('title', ['a', 'b'])->union($union1)->union($union2, true) - ); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/WhereTest.php b/vendor/anourvalar/eloquent-serialize/tests/WhereTest.php deleted file mode 100644 index 9945111f..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/WhereTest.php +++ /dev/null @@ -1,285 +0,0 @@ -compare(User::where('id', '=', '1')); - - // Two columns - $this->compare(User::where('id', '=', '1')->orWhere('id', '=', '2')); - } - - /** - * @return void - */ - public function testExpression() - { - // Raw - $this->compare( - User::whereRaw('(id = ? or (SELECT COUNT(*) FROM user_phones WHERE user_id = users.id) > ?)', [5, 1]) - ); - - // DB Raw - $this->compare( - User::where(\DB::raw('(id = ? or (SELECT COUNT(*) FROM user_phones WHERE user_id = users.id) > ?)', [5, 1])) - ); - - // 1 level - $this->compare( - User::where(function ($query) { - $query->where('id', '=', '1')->orWhere('id', '=', 2); - }) - ); - - // 2 levels - $this->compare( - User::where(function ($query) { - $query - ->where('id', '=', '1') - ->orWhere(function ($query) { - $query->where('id', '=', '2')->where('title', '!=', 'admin'); - }); - }) - ); - - // 3 levels - $this->compare( - User::where(function ($query) { - $query - ->where('id', '=', '1') - ->orWhere(function ($query) { - $query - ->where('id', '=', '2') - ->orWhere(function ($query) { - $query - ->where('title', '!=', 'admin') - ->orWhere('id', '=', '3'); - }); - }); - }) - ); - } - - /** - * @return void - */ - public function testHas() - { - // has - $this->compare(User::has('userPhones')); - $this->compare(User::has('filesAB')->has('filesC')); - - // whereHas, 1 level - $this->compare( - User::whereHas('userPhones', function ($query) { - $query->where('created_at', '>=', '2010-01-01'); - }) - ); - - $this->compare( - User::whereHas('filesAB', function ($query) { - $query->whereIn('type', ['f', 'g']); - }) - ); - - // whereHas, X levels - $this->compare( - User::where(function ($query) { - $query->whereHas('userPhones', function ($query) { - $query->where(function ($query) { - $query - ->where('created_at', '>=', '2010-01-01') - ->orWhere('id', '=', '1'); - }); - }); - }) - ); - } - - /** - * @return void - */ - public function testWithHas() - { - // withWhereHas, 1 level - $this->compare( - User::withWhereHas('userPhones', function ($query) { - $query->where('created_at', '>=', '2010-01-01'); - }) - ); - - $this->compare( - User::withWhereHas('userPhones:id,is_primary') - ); - - $this->compare( - User::withWhereHas('filesAB', function ($query) { - $query->whereIn('type', ['f', 'g']); - }) - ); - - // withWhereHas, X levels - $this->compare( - User::where(function ($query) { - $query->withWhereHas('userPhones', function ($query) { - $query->where(function ($query) { - $query - ->where('created_at', '>=', '2010-01-01') - ->orWhere('id', '=', '1'); - }); - }); - }) - ); - } - - /** - * @return void - */ - public function testNestedHas() - { - // has - $this->compare(User::has('userPhones.userPhoneNote')); - - // whereHas, 1 level - $this->compare( - User::whereHas('userPhones.userPhoneNote', function ($query) { - $query->where('created_at', '>=', '2010-01-01'); - }) - ); - - // whereHas, X levels - $this->compare( - User::where(function ($query) { - $query->whereHas('userPhones.userPhoneNote', function ($query) { - $query->where(function ($query) { - $query - ->where('created_at', '>=', '2010-01-01') - ->orWhere('id', '=', '1'); - }); - }); - }) - ); - } - - /** - * @return void - */ - public function testNestedWithHas() - { - // withWhereHas, 1 level - $this->compare( - User::withWhereHas('userPhones.userPhoneNote', function ($query) { - $query->where('created_at', '>=', '2010-01-01'); - }) - ); - - // withWhereHas, X levels - $this->compare( - User::where(function ($query) { - $query->withWhereHas('userPhones.userPhoneNote', function ($query) { - $query->where(function ($query) { - $query - ->where('created_at', '>=', '2010-01-01') - ->orWhere('id', '=', '1'); - }); - }); - }) - ); - } - - /** - * @return void - */ - public function testDoesnthave() - { - // doesnthave - $this->compare(User::doesnthave('userPhones')); - $this->compare(User::doesnthave('filesAB')->doesnthave('filesC')); - - // whereDoesnthave - $this->compare( - User::whereDoesnthave('userPhones', function ($query) { - $query->where('created_at', '>=', '2010-01-01'); - }) - ); - - // whereDoesnthave, X levels - $this->compare( - User::where(function ($query) { - $query->whereDoesnthave('userPhones', function ($query) { - $query->where(function ($query) { - $query - ->where('created_at', '>=', '2010-01-01') - ->orWhere('id', '=', '1'); - }); - }); - }) - ); - } - - /** - * @return void - */ - public function testJson() - { - $this->compare(User::where('meta->foo', 'a')); - - $this->compare(User::whereJsonContains('meta->foo', ['a']), false); - - $this->compare(User::whereJsonDoesntContain('meta->foo', ['a']), false); - - $this->compare(User::whereJsonLength('meta->foo', 0)); - $this->compare(User::whereJsonLength('meta->foo', '>', 1)); - - $this->compare(User::whereJsonContainsKey('meta->foo')); - $this->compare(User::whereJsonContainsKey('meta->foo[0]')); - $this->compare(User::whereJsonContainsKey('meta->foo->bar')); - $this->compare(User::whereJsonContainsKey('meta->foo->bar[0]')); - - $this->compare(User::whereJsonDoesntContainKey('meta->foo')); - $this->compare(User::whereJsonDoesntContainKey('meta->foo[0]')); - $this->compare(User::whereJsonDoesntContainKey('meta->foo->bar')); - $this->compare(User::whereJsonDoesntContainKey('meta->foo->bar[0]')); - } - - /** - * @return void - */ - public function testFullText() - { - // Simple - $this->compare(Post::whereFullText('body', 'said'), false); - - // With options - $this->compare(Post::whereFullText('body', 'said', ['language' => 'russian']), false); - - // Inside closure - $this->compare( - User::whereHas('userPhoneNote', function ($query) { - $query->whereFullText('note', 'another', ['language' => 'russian']); - }), - false - ); - } - - /** - * @return void - */ - public function testBelongsTo() - { - $this->compare( - UserPhone::whereBelongsTo(UserPhone::has('user')->first()->user) - ); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/WithCastsTest.php b/vendor/anourvalar/eloquent-serialize/tests/WithCastsTest.php deleted file mode 100644 index b71d1a92..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/WithCastsTest.php +++ /dev/null @@ -1,49 +0,0 @@ -markTestSkipped('Old version.'); - } - } - - /** - * @return void - */ - public function testSimple() - { - // Common - $this->compare(User::withCasts(['user_id' => 'integer'])); - - // Custom - $this->compare(User::withCasts(['user_id' => \AnourValar\EloquentSerialize\Tests\Casts\TestCast::class])); - } - - /** - * @return void - */ - public function testSelectRaw() - { - $this->compare( - User::select([ - 'users.*', - 'last_phone_created_at' => UserPhone::selectRaw('MAX(created_at)')->whereColumn('user_id', 'users.id'), - ])->withCasts([ - 'last_phone_created_at' => 'datetime', - ]) - ); - } -} diff --git a/vendor/anourvalar/eloquent-serialize/tests/factories/Factory.php b/vendor/anourvalar/eloquent-serialize/tests/factories/Factory.php deleted file mode 100644 index 62408320..00000000 --- a/vendor/anourvalar/eloquent-serialize/tests/factories/Factory.php +++ /dev/null @@ -1,71 +0,0 @@ -define(User::class, function (Faker $faker, array $attributes) { - return [ - 'title' => 'admin', - 'sort' => $faker->numberBetween(1, 10), - 'meta' => $faker->randomElement([json_encode(['foo' => 'a']), json_encode(['foo' => ['bar' => ['hello']]])]), - 'deleted_at' => mt_rand(0, 5) ? null : $faker->date('Y-m-d H:i:s'), - ]; -}); - -$factory->define(UserPhone::class, function (Faker $faker, array $attributes) { - static $counter; - $counter++; - - return [ - 'user_id' => function () use ($counter) { - if (! ($counter % 2)) { - $id = User::max('id'); - if ($id) { - return $id; - } - } - - return factory(User::class)->create(); - }, - 'phone' => $faker->phoneNumber, - 'is_primary' => $faker->boolean, - ]; -}); - -$factory->define(UserPhoneNote::class, function (Faker $faker, array $attributes) { - static $counter; - $counter++; - - return [ - 'user_phone_id' => function () use ($counter) { - if (! ($counter % 2)) { - $id = UserPhone::max('id'); - if ($id) { - return $id; - } - } - - return factory(UserPhone::class)->create(); - }, - 'note' => $faker->realText(100), - ]; -}); - -$factory->define(File::class, function (Faker $faker, array $attributes) { - static $users; - if (! $users) { - $users = User::get(['id']); - } - - return [ - 'user_id' => function () use ($users) { - return $users->shuffle()->first(); - }, - 'type' => $faker->randomElement(['a', 'b', 'c', 'd', 'e', 'f']), - ]; -}); diff --git a/vendor/autoload.php b/vendor/autoload.php deleted file mode 100644 index 84fc30f1..00000000 --- a/vendor/autoload.php +++ /dev/null @@ -1,12 +0,0 @@ -realpath = realpath($opened_path) ?: $opened_path; - $opened_path = $this->realpath; - $this->handle = fopen($this->realpath, $mode); - $this->position = 0; - - return (bool) $this->handle; - } - - public function stream_read($count) - { - $data = fread($this->handle, $count); - - if ($this->position === 0) { - $data = preg_replace('{^#!.*\r?\n}', '', $data); - } - - $this->position += strlen($data); - - return $data; - } - - public function stream_cast($castAs) - { - return $this->handle; - } - - public function stream_close() - { - fclose($this->handle); - } - - public function stream_lock($operation) - { - return $operation ? flock($this->handle, $operation) : true; - } - - public function stream_seek($offset, $whence) - { - if (0 === fseek($this->handle, $offset, $whence)) { - $this->position = ftell($this->handle); - return true; - } - - return false; - } - - public function stream_tell() - { - return $this->position; - } - - public function stream_eof() - { - return feof($this->handle); - } - - public function stream_stat() - { - return array(); - } - - public function stream_set_option($option, $arg1, $arg2) - { - return true; - } - - public function url_stat($path, $flags) - { - $path = substr($path, 17); - if (file_exists($path)) { - return stat($path); - } - - return false; - } - } - } - - if (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) { - include("phpvfscomposer://" . __DIR__ . '/..'.'/blade-ui-kit/blade-icons/bin/blade-icons-generate'); - exit(0); - } -} - -include __DIR__ . '/..'.'/blade-ui-kit/blade-icons/bin/blade-icons-generate'; diff --git a/vendor/bin/blade-icons-generate.bat b/vendor/bin/blade-icons-generate.bat deleted file mode 100755 index 6fd88263..00000000 --- a/vendor/bin/blade-icons-generate.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF -setlocal DISABLEDELAYEDEXPANSION -SET BIN_TARGET=%~dp0/blade-icons-generate -SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 -php "%BIN_TARGET%" %* diff --git a/vendor/bin/carbon b/vendor/bin/carbon deleted file mode 100755 index d6da140b..00000000 --- a/vendor/bin/carbon +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env php -realpath = realpath($opened_path) ?: $opened_path; - $opened_path = $this->realpath; - $this->handle = fopen($this->realpath, $mode); - $this->position = 0; - - return (bool) $this->handle; - } - - public function stream_read($count) - { - $data = fread($this->handle, $count); - - if ($this->position === 0) { - $data = preg_replace('{^#!.*\r?\n}', '', $data); - } - - $this->position += strlen($data); - - return $data; - } - - public function stream_cast($castAs) - { - return $this->handle; - } - - public function stream_close() - { - fclose($this->handle); - } - - public function stream_lock($operation) - { - return $operation ? flock($this->handle, $operation) : true; - } - - public function stream_seek($offset, $whence) - { - if (0 === fseek($this->handle, $offset, $whence)) { - $this->position = ftell($this->handle); - return true; - } - - return false; - } - - public function stream_tell() - { - return $this->position; - } - - public function stream_eof() - { - return feof($this->handle); - } - - public function stream_stat() - { - return array(); - } - - public function stream_set_option($option, $arg1, $arg2) - { - return true; - } - - public function url_stat($path, $flags) - { - $path = substr($path, 17); - if (file_exists($path)) { - return stat($path); - } - - return false; - } - } - } - - if (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) { - include("phpvfscomposer://" . __DIR__ . '/..'.'/nesbot/carbon/bin/carbon'); - exit(0); - } -} - -include __DIR__ . '/..'.'/nesbot/carbon/bin/carbon'; diff --git a/vendor/bin/carbon.bat b/vendor/bin/carbon.bat deleted file mode 100755 index 44bca208..00000000 --- a/vendor/bin/carbon.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF -setlocal DISABLEDELAYEDEXPANSION -SET BIN_TARGET=%~dp0/carbon -SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 -php "%BIN_TARGET%" %* diff --git a/vendor/bin/doctrine-dbal b/vendor/bin/doctrine-dbal deleted file mode 100755 index 374a92a0..00000000 --- a/vendor/bin/doctrine-dbal +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env php -realpath = realpath($opened_path) ?: $opened_path; - $opened_path = $this->realpath; - $this->handle = fopen($this->realpath, $mode); - $this->position = 0; - - return (bool) $this->handle; - } - - public function stream_read($count) - { - $data = fread($this->handle, $count); - - if ($this->position === 0) { - $data = preg_replace('{^#!.*\r?\n}', '', $data); - } - - $this->position += strlen($data); - - return $data; - } - - public function stream_cast($castAs) - { - return $this->handle; - } - - public function stream_close() - { - fclose($this->handle); - } - - public function stream_lock($operation) - { - return $operation ? flock($this->handle, $operation) : true; - } - - public function stream_seek($offset, $whence) - { - if (0 === fseek($this->handle, $offset, $whence)) { - $this->position = ftell($this->handle); - return true; - } - - return false; - } - - public function stream_tell() - { - return $this->position; - } - - public function stream_eof() - { - return feof($this->handle); - } - - public function stream_stat() - { - return array(); - } - - public function stream_set_option($option, $arg1, $arg2) - { - return true; - } - - public function url_stat($path, $flags) - { - $path = substr($path, 17); - if (file_exists($path)) { - return stat($path); - } - - return false; - } - } - } - - if (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) { - include("phpvfscomposer://" . __DIR__ . '/..'.'/doctrine/dbal/bin/doctrine-dbal'); - exit(0); - } -} - -include __DIR__ . '/..'.'/doctrine/dbal/bin/doctrine-dbal'; diff --git a/vendor/bin/doctrine-dbal.bat b/vendor/bin/doctrine-dbal.bat deleted file mode 100755 index 29f8235f..00000000 --- a/vendor/bin/doctrine-dbal.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF -setlocal DISABLEDELAYEDEXPANSION -SET BIN_TARGET=%~dp0/doctrine-dbal -SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 -php "%BIN_TARGET%" %* diff --git a/vendor/bin/patch-type-declarations b/vendor/bin/patch-type-declarations deleted file mode 100755 index 36cc892e..00000000 --- a/vendor/bin/patch-type-declarations +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env php -realpath = realpath($opened_path) ?: $opened_path; - $opened_path = $this->realpath; - $this->handle = fopen($this->realpath, $mode); - $this->position = 0; - - return (bool) $this->handle; - } - - public function stream_read($count) - { - $data = fread($this->handle, $count); - - if ($this->position === 0) { - $data = preg_replace('{^#!.*\r?\n}', '', $data); - } - - $this->position += strlen($data); - - return $data; - } - - public function stream_cast($castAs) - { - return $this->handle; - } - - public function stream_close() - { - fclose($this->handle); - } - - public function stream_lock($operation) - { - return $operation ? flock($this->handle, $operation) : true; - } - - public function stream_seek($offset, $whence) - { - if (0 === fseek($this->handle, $offset, $whence)) { - $this->position = ftell($this->handle); - return true; - } - - return false; - } - - public function stream_tell() - { - return $this->position; - } - - public function stream_eof() - { - return feof($this->handle); - } - - public function stream_stat() - { - return array(); - } - - public function stream_set_option($option, $arg1, $arg2) - { - return true; - } - - public function url_stat($path, $flags) - { - $path = substr($path, 17); - if (file_exists($path)) { - return stat($path); - } - - return false; - } - } - } - - if (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) { - include("phpvfscomposer://" . __DIR__ . '/..'.'/symfony/error-handler/Resources/bin/patch-type-declarations'); - exit(0); - } -} - -include __DIR__ . '/..'.'/symfony/error-handler/Resources/bin/patch-type-declarations'; diff --git a/vendor/bin/patch-type-declarations.bat b/vendor/bin/patch-type-declarations.bat deleted file mode 100755 index c998d934..00000000 --- a/vendor/bin/patch-type-declarations.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF -setlocal DISABLEDELAYEDEXPANSION -SET BIN_TARGET=%~dp0/patch-type-declarations -SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 -php "%BIN_TARGET%" %* diff --git a/vendor/bin/var-dump-server b/vendor/bin/var-dump-server deleted file mode 100755 index 527f3ed4..00000000 --- a/vendor/bin/var-dump-server +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env php -realpath = realpath($opened_path) ?: $opened_path; - $opened_path = $this->realpath; - $this->handle = fopen($this->realpath, $mode); - $this->position = 0; - - return (bool) $this->handle; - } - - public function stream_read($count) - { - $data = fread($this->handle, $count); - - if ($this->position === 0) { - $data = preg_replace('{^#!.*\r?\n}', '', $data); - } - - $this->position += strlen($data); - - return $data; - } - - public function stream_cast($castAs) - { - return $this->handle; - } - - public function stream_close() - { - fclose($this->handle); - } - - public function stream_lock($operation) - { - return $operation ? flock($this->handle, $operation) : true; - } - - public function stream_seek($offset, $whence) - { - if (0 === fseek($this->handle, $offset, $whence)) { - $this->position = ftell($this->handle); - return true; - } - - return false; - } - - public function stream_tell() - { - return $this->position; - } - - public function stream_eof() - { - return feof($this->handle); - } - - public function stream_stat() - { - return array(); - } - - public function stream_set_option($option, $arg1, $arg2) - { - return true; - } - - public function url_stat($path, $flags) - { - $path = substr($path, 17); - if (file_exists($path)) { - return stat($path); - } - - return false; - } - } - } - - if (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) { - include("phpvfscomposer://" . __DIR__ . '/..'.'/symfony/var-dumper/Resources/bin/var-dump-server'); - exit(0); - } -} - -include __DIR__ . '/..'.'/symfony/var-dumper/Resources/bin/var-dump-server'; diff --git a/vendor/bin/var-dump-server.bat b/vendor/bin/var-dump-server.bat deleted file mode 100755 index c425720f..00000000 --- a/vendor/bin/var-dump-server.bat +++ /dev/null @@ -1,5 +0,0 @@ -@ECHO OFF -setlocal DISABLEDELAYEDEXPANSION -SET BIN_TARGET=%~dp0/var-dump-server -SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 -php "%BIN_TARGET%" %* diff --git a/vendor/blade-ui-kit/blade-heroicons/LICENSE.md b/vendor/blade-ui-kit/blade-heroicons/LICENSE.md deleted file mode 100644 index 669220b5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Dries Vints - -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/vendor/blade-ui-kit/blade-heroicons/composer.json b/vendor/blade-ui-kit/blade-heroicons/composer.json deleted file mode 100644 index 5624dc88..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/composer.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "blade-ui-kit/blade-heroicons", - "description": "A package to easily make use of Heroicons in your Laravel Blade views.", - "keywords": ["Blade", "Heroicons", "Laravel"], - "homepage": "https://github.com/blade-ui-kit/blade-heroicons", - "license": "MIT", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/driesvints" - }, - { - "type": "paypal", - "url": "https://www.paypal.com/paypalme/driesvints" - } - ], - "authors": [ - { - "name": "Dries Vints", - "homepage": "https://driesvints.com" - } - ], - "require": { - "php": "^8.0", - "blade-ui-kit/blade-icons": "^1.1", - "illuminate/support": "^9.0|^10.0" - }, - "require-dev": { - "orchestra/testbench": "^7.0|^8.0", - "phpunit/phpunit": "^9.0" - }, - "autoload": { - "psr-4": { - "BladeUI\\Heroicons\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests" - } - }, - "extra": { - "laravel": { - "providers": [ - "BladeUI\\Heroicons\\BladeHeroiconsServiceProvider" - ] - } - }, - "config": { - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/vendor/blade-ui-kit/blade-heroicons/config/blade-heroicons.php b/vendor/blade-ui-kit/blade-heroicons/config/blade-heroicons.php deleted file mode 100644 index e517a970..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/config/blade-heroicons.php +++ /dev/null @@ -1,57 +0,0 @@ - 'heroicon', - - /* - |----------------------------------------------------------------- - | Fallback Icon - |----------------------------------------------------------------- - | - | This config option allows you to define a fallback - | icon when an icon in this set cannot be found. - | - */ - - 'fallback' => '', - - /* - |----------------------------------------------------------------- - | Default Set Classes - |----------------------------------------------------------------- - | - | This config option allows you to define some classes which - | will be applied by default to all icons within this set. - | - */ - - 'class' => '', - - /* - |----------------------------------------------------------------- - | Default Set Attributes - |----------------------------------------------------------------- - | - | This config option allows you to define some attributes which - | will be applied by default to all icons within this set. - | - */ - - 'attributes' => [ - // 'width' => 50, - // 'height' => 50, - ], - -]; diff --git a/vendor/blade-ui-kit/blade-heroicons/package.json b/vendor/blade-ui-kit/blade-heroicons/package.json deleted file mode 100644 index d203a443..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "private": true, - "dependencies": { - "heroicons": "^2.1" - } -} diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-academic-cap.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-academic-cap.svg deleted file mode 100644 index c66143a9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-academic-cap.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-adjustments-horizontal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-adjustments-horizontal.svg deleted file mode 100644 index 19f1fcc0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-adjustments-horizontal.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-adjustments-vertical.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-adjustments-vertical.svg deleted file mode 100644 index 70f1f83b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-adjustments-vertical.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box-arrow-down.svg deleted file mode 100644 index bf0ff06f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box-arrow-down.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box-x-mark.svg deleted file mode 100644 index 869641da..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box-x-mark.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box.svg deleted file mode 100644 index b6f42cb1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-archive-box.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-circle.svg deleted file mode 100644 index 8836f9b6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-left.svg deleted file mode 100644 index f6ab16fd..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-on-square-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-on-square-stack.svg deleted file mode 100644 index 22848069..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-on-square-stack.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-on-square.svg deleted file mode 100644 index 801c244d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-on-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-right.svg deleted file mode 100644 index 8a1d80ab..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-tray.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-tray.svg deleted file mode 100644 index 1ff676b8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down-tray.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down.svg deleted file mode 100644 index b90f11a7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-circle.svg deleted file mode 100644 index 5dd2dedc..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-end-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-end-on-rectangle.svg deleted file mode 100644 index 2fd5cce2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-end-on-rectangle.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-start-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-start-on-rectangle.svg deleted file mode 100644 index 89e7d5a3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left-start-on-rectangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left.svg deleted file mode 100644 index 748b3853..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-down.svg deleted file mode 100644 index 364503c2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-left.svg deleted file mode 100644 index 185924f7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-right.svg deleted file mode 100644 index 40b5533c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-up.svg deleted file mode 100644 index 535b7b79..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-long-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-path-rounded-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-path-rounded-square.svg deleted file mode 100644 index b698c36a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-path-rounded-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-path.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-path.svg deleted file mode 100644 index 2d5cbe23..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-path.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-circle.svg deleted file mode 100644 index e9d64e26..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-end-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-end-on-rectangle.svg deleted file mode 100644 index 233ca174..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-end-on-rectangle.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-start-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-start-on-rectangle.svg deleted file mode 100644 index 14a3273d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right-start-on-rectangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right.svg deleted file mode 100644 index bc4ee023..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-top-right-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-top-right-on-square.svg deleted file mode 100644 index ef67401d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-top-right-on-square.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-trending-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-trending-down.svg deleted file mode 100644 index 98dc7f96..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-trending-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-trending-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-trending-up.svg deleted file mode 100644 index 77395a22..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-trending-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-circle.svg deleted file mode 100644 index 0385993f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-left.svg deleted file mode 100644 index 88cf7cf2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-on-square-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-on-square-stack.svg deleted file mode 100644 index 9e43afc5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-on-square-stack.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-on-square.svg deleted file mode 100644 index 13bf43d8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-on-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-right.svg deleted file mode 100644 index dd7a8ef9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-tray.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-tray.svg deleted file mode 100644 index aecaa260..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up-tray.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up.svg deleted file mode 100644 index 58f91a3b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-down.svg deleted file mode 100644 index 2afee9fb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-left.svg deleted file mode 100644 index 55f63dda..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-right.svg deleted file mode 100644 index 8028a572..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-up.svg deleted file mode 100644 index 7df0285c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrow-uturn-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-pointing-in.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-pointing-in.svg deleted file mode 100644 index 29ea56b2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-pointing-in.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-pointing-out.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-pointing-out.svg deleted file mode 100644 index a9d93856..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-pointing-out.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-right-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-right-left.svg deleted file mode 100644 index 9ba45afa..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-right-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-up-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-up-down.svg deleted file mode 100644 index 2cf5523a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-arrows-up-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-at-symbol.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-at-symbol.svg deleted file mode 100644 index 11e99d83..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-at-symbol.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-backspace.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-backspace.svg deleted file mode 100644 index 1c5f3556..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-backspace.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-backward.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-backward.svg deleted file mode 100644 index 0e7a49c0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-backward.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-banknotes.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-banknotes.svg deleted file mode 100644 index 27ceef78..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-banknotes.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-2.svg deleted file mode 100644 index 7a209e2d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-2.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-bottom-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-bottom-left.svg deleted file mode 100644 index 08ca32a5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-bottom-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-bottom-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-bottom-right.svg deleted file mode 100644 index edee4c93..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-bottom-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-center-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-center-left.svg deleted file mode 100644 index d2228f2c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3-center-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3.svg deleted file mode 100644 index 9a1136a8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-3.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-4.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-4.svg deleted file mode 100644 index e1c529ed..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-4.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-arrow-down.svg deleted file mode 100644 index 4d48bba4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-arrow-up.svg deleted file mode 100644 index 6d442463..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bars-arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-0.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-0.svg deleted file mode 100644 index 8df10660..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-0.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-100.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-100.svg deleted file mode 100644 index 561cc78b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-100.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-50.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-50.svg deleted file mode 100644 index ad4ef426..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-battery-50.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-beaker.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-beaker.svg deleted file mode 100644 index f8c9c3ac..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-beaker.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-alert.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-alert.svg deleted file mode 100644 index 189b8bc1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-alert.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-slash.svg deleted file mode 100644 index 7fcf3c19..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-slash.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-snooze.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-snooze.svg deleted file mode 100644 index 0af50483..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell-snooze.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell.svg deleted file mode 100644 index 1b4f00ff..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bell.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bolt-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bolt-slash.svg deleted file mode 100644 index 3f96c8e7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bolt-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bolt.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bolt.svg deleted file mode 100644 index e406e2f9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bolt.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-book-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-book-open.svg deleted file mode 100644 index 442db26d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-book-open.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark-slash.svg deleted file mode 100644 index b0b62d1e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark-square.svg deleted file mode 100644 index 8c4a3c89..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark.svg deleted file mode 100644 index 9a8282a7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bookmark.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-briefcase.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-briefcase.svg deleted file mode 100644 index 96e74f10..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-briefcase.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bug-ant.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bug-ant.svg deleted file mode 100644 index bc7e73ff..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-bug-ant.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-library.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-library.svg deleted file mode 100644 index 496facfa..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-library.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-office-2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-office-2.svg deleted file mode 100644 index acd46212..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-office-2.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-office.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-office.svg deleted file mode 100644 index 691dce8e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-office.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-storefront.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-storefront.svg deleted file mode 100644 index fc9c14b1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-building-storefront.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cake.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cake.svg deleted file mode 100644 index 012026ac..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cake.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calculator.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calculator.svg deleted file mode 100644 index a3c34203..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calculator.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calendar-days.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calendar-days.svg deleted file mode 100644 index 16c9890b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calendar-days.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calendar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calendar.svg deleted file mode 100644 index d8468cbb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-calendar.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-camera.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-camera.svg deleted file mode 100644 index 0429f042..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-camera.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-bar-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-bar-square.svg deleted file mode 100644 index 7e562127..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-bar-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-bar.svg deleted file mode 100644 index da7e5d08..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-bar.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-pie.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-pie.svg deleted file mode 100644 index 8d174904..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chart-pie.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-bottom-center-text.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-bottom-center-text.svg deleted file mode 100644 index 549eb6ed..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-bottom-center-text.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-bottom-center.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-bottom-center.svg deleted file mode 100644 index 0f5f609a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-bottom-center.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left-ellipsis.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left-ellipsis.svg deleted file mode 100644 index b7f2b84c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left-ellipsis.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left-right.svg deleted file mode 100644 index d99e13be..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left-right.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left.svg deleted file mode 100644 index 5c9b47ff..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-oval-left-ellipsis.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-oval-left-ellipsis.svg deleted file mode 100644 index a61f6bd5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-oval-left-ellipsis.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-oval-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-oval-left.svg deleted file mode 100644 index 2cc7ce59..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chat-bubble-oval-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check-badge.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check-badge.svg deleted file mode 100644 index cb96b01c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check-badge.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check-circle.svg deleted file mode 100644 index 5beeb13d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check.svg deleted file mode 100644 index 0b7e9b3d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-check.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-down.svg deleted file mode 100644 index 9d659c31..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-left.svg deleted file mode 100644 index 3194c3fa..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-right.svg deleted file mode 100644 index 86a963a0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-up.svg deleted file mode 100644 index bcf76199..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-double-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-down.svg deleted file mode 100644 index f734a0ce..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-left.svg deleted file mode 100644 index f2930414..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-right.svg deleted file mode 100644 index 3a08c80a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-up-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-up-down.svg deleted file mode 100644 index db44522b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-up-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-up.svg deleted file mode 100644 index 58573a7e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-chevron-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-circle-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-circle-stack.svg deleted file mode 100644 index 3da82752..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-circle-stack.svg +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document-check.svg deleted file mode 100644 index b8909e74..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document-check.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document-list.svg deleted file mode 100644 index 355dec27..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document-list.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document.svg deleted file mode 100644 index 6e099833..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard-document.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard.svg deleted file mode 100644 index 24474520..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clipboard.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clock.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clock.svg deleted file mode 100644 index b808f55f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-clock.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud-arrow-down.svg deleted file mode 100644 index 478173da..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud-arrow-up.svg deleted file mode 100644 index fcd0c96c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud-arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud.svg deleted file mode 100644 index 98a40cf4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cloud.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-code-bracket-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-code-bracket-square.svg deleted file mode 100644 index 9d59c9ac..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-code-bracket-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-code-bracket.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-code-bracket.svg deleted file mode 100644 index 48b64b1a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-code-bracket.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog-6-tooth.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog-6-tooth.svg deleted file mode 100644 index 67d34e6e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog-6-tooth.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog-8-tooth.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog-8-tooth.svg deleted file mode 100644 index 6d92cde8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog-8-tooth.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog.svg deleted file mode 100644 index 4a7ef24a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cog.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-command-line.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-command-line.svg deleted file mode 100644 index aa4c1646..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-command-line.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-computer-desktop.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-computer-desktop.svg deleted file mode 100644 index 56f18f79..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-computer-desktop.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cpu-chip.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cpu-chip.svg deleted file mode 100644 index ee847952..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cpu-chip.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-credit-card.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-credit-card.svg deleted file mode 100644 index d55fcd33..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-credit-card.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cube-transparent.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cube-transparent.svg deleted file mode 100644 index b3af3d6a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cube-transparent.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cube.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cube.svg deleted file mode 100644 index a3c841d1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cube.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-bangladeshi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-bangladeshi.svg deleted file mode 100644 index c9b40567..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-bangladeshi.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-dollar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-dollar.svg deleted file mode 100644 index 1d4c4ac7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-dollar.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-euro.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-euro.svg deleted file mode 100644 index 88b62da7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-euro.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-pound.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-pound.svg deleted file mode 100644 index 232af6ec..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-pound.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-rupee.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-rupee.svg deleted file mode 100644 index f79b4e70..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-rupee.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-yen.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-yen.svg deleted file mode 100644 index e234e5fd..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-currency-yen.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cursor-arrow-rays.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cursor-arrow-rays.svg deleted file mode 100644 index ff9f3d59..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cursor-arrow-rays.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cursor-arrow-ripple.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cursor-arrow-ripple.svg deleted file mode 100644 index 8ce389b4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-cursor-arrow-ripple.svg +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-device-phone-mobile.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-device-phone-mobile.svg deleted file mode 100644 index 99440e41..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-device-phone-mobile.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-device-tablet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-device-tablet.svg deleted file mode 100644 index 79cf2bf2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-device-tablet.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-arrow-down.svg deleted file mode 100644 index 3f24c1f7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-arrow-up.svg deleted file mode 100644 index b92118e4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-chart-bar.svg deleted file mode 100644 index 0a0dc7c9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-chart-bar.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-check.svg deleted file mode 100644 index 9867eabc..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-check.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-duplicate.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-duplicate.svg deleted file mode 100644 index faa81c5d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-duplicate.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-magnifying-glass.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-magnifying-glass.svg deleted file mode 100644 index e2c3f4be..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-magnifying-glass.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-minus.svg deleted file mode 100644 index 0c0c5e08..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-minus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-plus.svg deleted file mode 100644 index 2b9da444..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-text.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-text.svg deleted file mode 100644 index 14210f61..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document-text.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document.svg deleted file mode 100644 index 9f81766e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-document.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-horizontal-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-horizontal-circle.svg deleted file mode 100644 index 3002b9c7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-horizontal-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-horizontal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-horizontal.svg deleted file mode 100644 index 63594168..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-horizontal.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-vertical.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-vertical.svg deleted file mode 100644 index 937c4c6d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ellipsis-vertical.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-envelope-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-envelope-open.svg deleted file mode 100644 index 648144c0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-envelope-open.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-envelope.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-envelope.svg deleted file mode 100644 index 5f3d4fed..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-envelope.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-exclamation-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-exclamation-circle.svg deleted file mode 100644 index 094c29f8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-exclamation-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-exclamation-triangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-exclamation-triangle.svg deleted file mode 100644 index b8414365..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-exclamation-triangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye-dropper.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye-dropper.svg deleted file mode 100644 index 2807f236..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye-dropper.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye-slash.svg deleted file mode 100644 index 61957b39..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye-slash.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye.svg deleted file mode 100644 index 0e0f914e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-eye.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-face-frown.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-face-frown.svg deleted file mode 100644 index e3ee54ea..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-face-frown.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-face-smile.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-face-smile.svg deleted file mode 100644 index e36ddb7b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-face-smile.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-film.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-film.svg deleted file mode 100644 index d1bc36d3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-film.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-finger-print.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-finger-print.svg deleted file mode 100644 index f4f33407..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-finger-print.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-fire.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-fire.svg deleted file mode 100644 index 7556d5d6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-fire.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-flag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-flag.svg deleted file mode 100644 index ef6658e2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-flag.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-arrow-down.svg deleted file mode 100644 index 6c25eeaf..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-minus.svg deleted file mode 100644 index e9c9a04d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-minus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-open.svg deleted file mode 100644 index 3a36b572..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-open.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-plus.svg deleted file mode 100644 index e76be0e3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder.svg deleted file mode 100644 index 5b595b61..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-folder.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-forward.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-forward.svg deleted file mode 100644 index 1cf6daf4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-forward.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-funnel.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-funnel.svg deleted file mode 100644 index be9bae42..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-funnel.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gif.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gif.svg deleted file mode 100644 index 96f61763..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gif.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gift-top.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gift-top.svg deleted file mode 100644 index 4ac9ece3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gift-top.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gift.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gift.svg deleted file mode 100644 index cffe93dc..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-gift.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-alt.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-alt.svg deleted file mode 100644 index 43d1dccd..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-alt.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-americas.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-americas.svg deleted file mode 100644 index a630940e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-americas.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-asia-australia.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-asia-australia.svg deleted file mode 100644 index 4c073cff..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-asia-australia.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-europe-africa.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-europe-africa.svg deleted file mode 100644 index fc4644a0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-globe-europe-africa.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-raised.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-raised.svg deleted file mode 100644 index de3a1a14..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-raised.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-thumb-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-thumb-down.svg deleted file mode 100644 index 2cca4382..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-thumb-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-thumb-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-thumb-up.svg deleted file mode 100644 index 32c6f96d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hand-thumb-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hashtag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hashtag.svg deleted file mode 100644 index dc280353..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-hashtag.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-heart.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-heart.svg deleted file mode 100644 index b23191ff..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-heart.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-home-modern.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-home-modern.svg deleted file mode 100644 index 66948b18..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-home-modern.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-home.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-home.svg deleted file mode 100644 index 60b4496b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-home.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-identification.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-identification.svg deleted file mode 100644 index 8e831db6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-identification.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox-arrow-down.svg deleted file mode 100644 index c6bca811..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox-arrow-down.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox-stack.svg deleted file mode 100644 index 8bc16a56..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox-stack.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox.svg deleted file mode 100644 index 4ae995fd..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-inbox.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-information-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-information-circle.svg deleted file mode 100644 index a18abab3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-information-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-key.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-key.svg deleted file mode 100644 index dd7e56fe..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-key.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-language.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-language.svg deleted file mode 100644 index e7e0cfc0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-language.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lifebuoy.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lifebuoy.svg deleted file mode 100644 index e0c7a1f7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lifebuoy.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-light-bulb.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-light-bulb.svg deleted file mode 100644 index 10062888..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-light-bulb.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-link.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-link.svg deleted file mode 100644 index 35884ce6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-link.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-list-bullet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-list-bullet.svg deleted file mode 100644 index da9f504a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-list-bullet.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lock-closed.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lock-closed.svg deleted file mode 100644 index 31bd4071..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lock-closed.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lock-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lock-open.svg deleted file mode 100644 index 99b63e7d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-lock-open.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-circle.svg deleted file mode 100644 index 54c1fd3d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-circle.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-minus.svg deleted file mode 100644 index 1cf27b5a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-minus.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-plus.svg deleted file mode 100644 index ab075d60..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass-plus.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass.svg deleted file mode 100644 index 2e4c54d9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-magnifying-glass.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-map-pin.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-map-pin.svg deleted file mode 100644 index c4f17e05..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-map-pin.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-map.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-map.svg deleted file mode 100644 index ce2931cb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-map.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-megaphone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-megaphone.svg deleted file mode 100644 index 109b3962..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-megaphone.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-microphone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-microphone.svg deleted file mode 100644 index 8d6e8f48..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-microphone.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-minus-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-minus-circle.svg deleted file mode 100644 index f3572df0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-minus-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-minus.svg deleted file mode 100644 index f91443ca..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-minus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-moon.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-moon.svg deleted file mode 100644 index 799b15ba..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-moon.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-musical-note.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-musical-note.svg deleted file mode 100644 index 0a085985..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-musical-note.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-newspaper.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-newspaper.svg deleted file mode 100644 index 4d66d462..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-newspaper.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-no-symbol.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-no-symbol.svg deleted file mode 100644 index dd925762..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-no-symbol.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paint-brush.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paint-brush.svg deleted file mode 100644 index 0aebe49a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paint-brush.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paper-airplane.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paper-airplane.svg deleted file mode 100644 index 5cb9fe33..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paper-airplane.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paper-clip.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paper-clip.svg deleted file mode 100644 index 1a019c33..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-paper-clip.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pause-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pause-circle.svg deleted file mode 100644 index ec93c1d3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pause-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pause.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pause.svg deleted file mode 100644 index 55ea47dc..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pause.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pencil-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pencil-square.svg deleted file mode 100644 index 25c6e943..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pencil-square.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pencil.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pencil.svg deleted file mode 100644 index 2bc22ee1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-pencil.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-arrow-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-arrow-down-left.svg deleted file mode 100644 index 592ed3d8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-arrow-down-left.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-arrow-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-arrow-up-right.svg deleted file mode 100644 index 9f6896ed..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-arrow-up-right.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-x-mark.svg deleted file mode 100644 index e8f11977..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone-x-mark.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone.svg deleted file mode 100644 index b6808fb1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-phone.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-photo.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-photo.svg deleted file mode 100644 index fb02a1c0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-photo.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play-circle.svg deleted file mode 100644 index 0944fc66..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play-pause.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play-pause.svg deleted file mode 100644 index 5cc07e0b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play-pause.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play.svg deleted file mode 100644 index a348d36c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-play.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-plus-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-plus-circle.svg deleted file mode 100644 index a877442e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-plus-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-plus.svg deleted file mode 100644 index c650b5cb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-power.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-power.svg deleted file mode 100644 index 77dfe41b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-power.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-presentation-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-presentation-chart-bar.svg deleted file mode 100644 index 120aaaf7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-presentation-chart-bar.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-presentation-chart-line.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-presentation-chart-line.svg deleted file mode 100644 index 72f57202..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-presentation-chart-line.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-printer.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-printer.svg deleted file mode 100644 index bf288022..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-printer.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-puzzle-piece.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-puzzle-piece.svg deleted file mode 100644 index 0f01af8b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-puzzle-piece.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-qr-code.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-qr-code.svg deleted file mode 100644 index 4825d135..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-qr-code.svg +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-question-mark-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-question-mark-circle.svg deleted file mode 100644 index 34d8027f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-question-mark-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-queue-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-queue-list.svg deleted file mode 100644 index c30fec39..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-queue-list.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-radio.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-radio.svg deleted file mode 100644 index 273ae11d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-radio.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-receipt-percent.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-receipt-percent.svg deleted file mode 100644 index 3212a6fb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-receipt-percent.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-receipt-refund.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-receipt-refund.svg deleted file mode 100644 index 94d0f220..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-receipt-refund.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rectangle-group.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rectangle-group.svg deleted file mode 100644 index 4898a0c5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rectangle-group.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rectangle-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rectangle-stack.svg deleted file mode 100644 index 991c633d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rectangle-stack.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rocket-launch.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rocket-launch.svg deleted file mode 100644 index f950c24a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rocket-launch.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rss.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rss.svg deleted file mode 100644 index a148475c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-rss.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-scale.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-scale.svg deleted file mode 100644 index 928d3b83..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-scale.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-scissors.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-scissors.svg deleted file mode 100644 index fcf6e9b8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-scissors.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-server-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-server-stack.svg deleted file mode 100644 index 420066c9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-server-stack.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-server.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-server.svg deleted file mode 100644 index 13f2ae4a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-server.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-share.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-share.svg deleted file mode 100644 index 59671fbb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-share.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shield-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shield-check.svg deleted file mode 100644 index 6e93ee44..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shield-check.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shield-exclamation.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shield-exclamation.svg deleted file mode 100644 index c1e135f4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shield-exclamation.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shopping-bag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shopping-bag.svg deleted file mode 100644 index 5cf1a268..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shopping-bag.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shopping-cart.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shopping-cart.svg deleted file mode 100644 index 7afdf47d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-shopping-cart.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-signal-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-signal-slash.svg deleted file mode 100644 index b34500cf..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-signal-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-signal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-signal.svg deleted file mode 100644 index 9fa80dc5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-signal.svg +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-sparkles.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-sparkles.svg deleted file mode 100644 index fa542ae4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-sparkles.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-speaker-wave.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-speaker-wave.svg deleted file mode 100644 index cf8780e6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-speaker-wave.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-speaker-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-speaker-x-mark.svg deleted file mode 100644 index be225589..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-speaker-x-mark.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-square-2-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-square-2-stack.svg deleted file mode 100644 index 328a9977..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-square-2-stack.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-square-3-stack-3d.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-square-3-stack-3d.svg deleted file mode 100644 index 65209411..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-square-3-stack-3d.svg +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-squares-2x2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-squares-2x2.svg deleted file mode 100644 index 375f7067..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-squares-2x2.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-squares-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-squares-plus.svg deleted file mode 100644 index 8b6e1c2e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-squares-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-star.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-star.svg deleted file mode 100644 index c585d246..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-star.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-stop-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-stop-circle.svg deleted file mode 100644 index 767eb26c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-stop-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-stop.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-stop.svg deleted file mode 100644 index e90d5785..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-stop.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-sun.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-sun.svg deleted file mode 100644 index f08a75c6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-sun.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-swatch.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-swatch.svg deleted file mode 100644 index 91d53c8f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-swatch.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-table-cells.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-table-cells.svg deleted file mode 100644 index fa33c827..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-table-cells.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-tag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-tag.svg deleted file mode 100644 index e8fa33f2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-tag.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ticket.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ticket.svg deleted file mode 100644 index 1636997c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-ticket.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-trash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-trash.svg deleted file mode 100644 index 242d02e8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-trash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-trophy.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-trophy.svg deleted file mode 100644 index 4ce00445..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-trophy.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-truck.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-truck.svg deleted file mode 100644 index cf8b2ae9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-truck.svg +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-tv.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-tv.svg deleted file mode 100644 index 71a03f13..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-tv.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-circle.svg deleted file mode 100644 index a4828ea1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-group.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-group.svg deleted file mode 100644 index b3eac772..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-group.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-minus.svg deleted file mode 100644 index a9222c11..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-minus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-plus.svg deleted file mode 100644 index dbfb3803..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user.svg deleted file mode 100644 index 3b924bdb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-user.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-users.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-users.svg deleted file mode 100644 index 51b4585f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-users.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-variable.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-variable.svg deleted file mode 100644 index 025ef987..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-variable.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-video-camera-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-video-camera-slash.svg deleted file mode 100644 index 7206f3c3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-video-camera-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-video-camera.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-video-camera.svg deleted file mode 100644 index 91ffb601..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-video-camera.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-view-columns.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-view-columns.svg deleted file mode 100644 index a953a609..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-view-columns.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-viewfinder-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-viewfinder-circle.svg deleted file mode 100644 index da6fbe4e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-viewfinder-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wallet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wallet.svg deleted file mode 100644 index 5198eeea..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wallet.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wifi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wifi.svg deleted file mode 100644 index bcd92261..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wifi.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-window.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-window.svg deleted file mode 100644 index ecb5a8ee..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-window.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wrench-screwdriver.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wrench-screwdriver.svg deleted file mode 100644 index 89a99dea..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wrench-screwdriver.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wrench.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wrench.svg deleted file mode 100644 index 552ef3d9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-wrench.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-x-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-x-circle.svg deleted file mode 100644 index 8050905c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-x-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-x-mark.svg deleted file mode 100644 index dd7ae721..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/c-x-mark.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-academic-cap.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-academic-cap.svg deleted file mode 100644 index 28d31d1b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-academic-cap.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-adjustments-horizontal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-adjustments-horizontal.svg deleted file mode 100644 index 3e5e2c98..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-adjustments-horizontal.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-adjustments-vertical.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-adjustments-vertical.svg deleted file mode 100644 index afefea98..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-adjustments-vertical.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box-arrow-down.svg deleted file mode 100644 index 86f45bdb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box-x-mark.svg deleted file mode 100644 index 3a485263..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box-x-mark.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box.svg deleted file mode 100644 index 7b80ec21..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-archive-box.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-circle.svg deleted file mode 100644 index 2676c668..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-left.svg deleted file mode 100644 index 710c80af..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-on-square-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-on-square-stack.svg deleted file mode 100644 index 3f4bf611..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-on-square-stack.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-on-square.svg deleted file mode 100644 index 9c0621f2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-on-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-right.svg deleted file mode 100644 index 3ed2487c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-tray.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-tray.svg deleted file mode 100644 index 312dc387..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down-tray.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down.svg deleted file mode 100644 index 84425366..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-circle.svg deleted file mode 100644 index 7f1e7969..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-circle.svg +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-end-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-end-on-rectangle.svg deleted file mode 100644 index 81912ac9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-end-on-rectangle.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-on-rectangle.svg deleted file mode 100644 index 81912ac9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-on-rectangle.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-start-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-start-on-rectangle.svg deleted file mode 100644 index 0bdc78f2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left-start-on-rectangle.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left.svg deleted file mode 100644 index f087dba3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-down.svg deleted file mode 100644 index 387286bb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-left.svg deleted file mode 100644 index 63770714..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-right.svg deleted file mode 100644 index 82fe6cfb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-up.svg deleted file mode 100644 index 61f2ba16..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-long-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-path-rounded-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-path-rounded-square.svg deleted file mode 100644 index 47cf2527..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-path-rounded-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-path.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-path.svg deleted file mode 100644 index 80909420..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-path.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-circle.svg deleted file mode 100644 index fa2082b7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-end-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-end-on-rectangle.svg deleted file mode 100644 index 99c4be5b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-end-on-rectangle.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-on-rectangle.svg deleted file mode 100644 index 7e692559..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-on-rectangle.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-start-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-start-on-rectangle.svg deleted file mode 100644 index 7e692559..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right-start-on-rectangle.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right.svg deleted file mode 100644 index 3415f36a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-down.svg deleted file mode 100644 index f8a8957e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-left.svg deleted file mode 100644 index 55aae95a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-right.svg deleted file mode 100644 index 32ed766f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-up.svg deleted file mode 100644 index f60e86b2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-small-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-top-right-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-top-right-on-square.svg deleted file mode 100644 index 4216598f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-top-right-on-square.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-trending-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-trending-down.svg deleted file mode 100644 index ae6d9cda..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-trending-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-trending-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-trending-up.svg deleted file mode 100644 index f5aa7b90..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-trending-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-circle.svg deleted file mode 100644 index a07eca36..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-left.svg deleted file mode 100644 index 84d4ab9c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-on-square-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-on-square-stack.svg deleted file mode 100644 index c85ce24b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-on-square-stack.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-on-square.svg deleted file mode 100644 index 3a54f707..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-on-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-right.svg deleted file mode 100644 index 5f58b696..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-tray.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-tray.svg deleted file mode 100644 index a57986a8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up-tray.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up.svg deleted file mode 100644 index 1a1ca8ff..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-down.svg deleted file mode 100644 index 6c886200..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-left.svg deleted file mode 100644 index c3f666d1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-right.svg deleted file mode 100644 index 0a8b31a1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-up.svg deleted file mode 100644 index f79c4bca..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrow-uturn-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-pointing-in.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-pointing-in.svg deleted file mode 100644 index e300a282..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-pointing-in.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-pointing-out.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-pointing-out.svg deleted file mode 100644 index 7f581679..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-pointing-out.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-right-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-right-left.svg deleted file mode 100644 index cef196e8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-right-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-up-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-up-down.svg deleted file mode 100644 index 43927b75..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-arrows-up-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-at-symbol.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-at-symbol.svg deleted file mode 100644 index 5a7511ac..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-at-symbol.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-backspace.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-backspace.svg deleted file mode 100644 index b95a6b7b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-backspace.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-backward.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-backward.svg deleted file mode 100644 index a8879ec3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-backward.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-banknotes.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-banknotes.svg deleted file mode 100644 index e0b86f9d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-banknotes.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-2.svg deleted file mode 100644 index bdf38a38..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-2.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-bottom-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-bottom-left.svg deleted file mode 100644 index 943bdac5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-bottom-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-bottom-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-bottom-right.svg deleted file mode 100644 index 43853182..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-bottom-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-center-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-center-left.svg deleted file mode 100644 index f33da66c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3-center-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3.svg deleted file mode 100644 index 7ebe49c5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-3.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-4.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-4.svg deleted file mode 100644 index fa633803..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-4.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-arrow-down.svg deleted file mode 100644 index 7d1bcd70..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-arrow-up.svg deleted file mode 100644 index dbba8418..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bars-arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-0.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-0.svg deleted file mode 100644 index 86323f95..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-0.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-100.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-100.svg deleted file mode 100644 index 7d15706f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-100.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-50.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-50.svg deleted file mode 100644 index b88ade1b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-battery-50.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-beaker.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-beaker.svg deleted file mode 100644 index 6347163a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-beaker.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-alert.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-alert.svg deleted file mode 100644 index ea50a7b6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-alert.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-slash.svg deleted file mode 100644 index f7107f34..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-snooze.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-snooze.svg deleted file mode 100644 index 06daf77a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell-snooze.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell.svg deleted file mode 100644 index 4b55d26f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bell.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bolt-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bolt-slash.svg deleted file mode 100644 index ba8d1139..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bolt-slash.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bolt.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bolt.svg deleted file mode 100644 index c2af3c1d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bolt.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-book-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-book-open.svg deleted file mode 100644 index 5dc48390..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-book-open.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark-slash.svg deleted file mode 100644 index 2518392f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark-square.svg deleted file mode 100644 index 8aa84fb1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark.svg deleted file mode 100644 index 237b0dcc..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bookmark.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-briefcase.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-briefcase.svg deleted file mode 100644 index 84876366..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-briefcase.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bug-ant.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bug-ant.svg deleted file mode 100644 index 81190d21..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-bug-ant.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-library.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-library.svg deleted file mode 100644 index a0439c6a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-library.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-office-2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-office-2.svg deleted file mode 100644 index c4b4a9bd..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-office-2.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-office.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-office.svg deleted file mode 100644 index 2907c7b1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-office.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-storefront.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-storefront.svg deleted file mode 100644 index 6a5be94a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-building-storefront.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cake.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cake.svg deleted file mode 100644 index bd0ac56b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cake.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calculator.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calculator.svg deleted file mode 100644 index 374cfdfa..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calculator.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calendar-days.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calendar-days.svg deleted file mode 100644 index a0ed5ebf..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calendar-days.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calendar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calendar.svg deleted file mode 100644 index 52e5752d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-calendar.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-camera.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-camera.svg deleted file mode 100644 index 418456d5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-camera.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-bar-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-bar-square.svg deleted file mode 100644 index d34b2234..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-bar-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-bar.svg deleted file mode 100644 index 45a98668..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-bar.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-pie.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-pie.svg deleted file mode 100644 index f00fdeb0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chart-pie.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-bottom-center-text.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-bottom-center-text.svg deleted file mode 100644 index 98e8c48f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-bottom-center-text.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-bottom-center.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-bottom-center.svg deleted file mode 100644 index 8b1f45da..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-bottom-center.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left-ellipsis.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left-ellipsis.svg deleted file mode 100644 index f4474488..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left-ellipsis.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left-right.svg deleted file mode 100644 index 089463b8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left-right.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left.svg deleted file mode 100644 index fc1c62ea..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-oval-left-ellipsis.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-oval-left-ellipsis.svg deleted file mode 100644 index 59f7d8e4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-oval-left-ellipsis.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-oval-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-oval-left.svg deleted file mode 100644 index 97beedf3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chat-bubble-oval-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check-badge.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check-badge.svg deleted file mode 100644 index 6a79b883..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check-badge.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check-circle.svg deleted file mode 100644 index 763716ea..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check.svg deleted file mode 100644 index c29bd3fd..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-check.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-down.svg deleted file mode 100644 index bd4f8691..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-left.svg deleted file mode 100644 index 60babe16..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-right.svg deleted file mode 100644 index 7fe528c0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-up.svg deleted file mode 100644 index 8ce111d1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-double-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-down.svg deleted file mode 100644 index 18cbc1d4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-left.svg deleted file mode 100644 index b6e87d18..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-right.svg deleted file mode 100644 index e9eb2c46..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-up-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-up-down.svg deleted file mode 100644 index 64964bf6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-up-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-up.svg deleted file mode 100644 index b6cd4db2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-chevron-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-circle-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-circle-stack.svg deleted file mode 100644 index 21337530..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-circle-stack.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document-check.svg deleted file mode 100644 index 38fb9670..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document-check.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document-list.svg deleted file mode 100644 index 184daa00..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document-list.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document.svg deleted file mode 100644 index de69a121..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard-document.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard.svg deleted file mode 100644 index e08430a8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clipboard.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clock.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clock.svg deleted file mode 100644 index e8349dce..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-clock.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud-arrow-down.svg deleted file mode 100644 index e5088caf..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud-arrow-up.svg deleted file mode 100644 index e63c3c25..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud-arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud.svg deleted file mode 100644 index c47c4f49..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cloud.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-code-bracket-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-code-bracket-square.svg deleted file mode 100644 index 5e6a0c43..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-code-bracket-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-code-bracket.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-code-bracket.svg deleted file mode 100644 index 5b42af4c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-code-bracket.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog-6-tooth.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog-6-tooth.svg deleted file mode 100644 index 8eae3366..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog-6-tooth.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog-8-tooth.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog-8-tooth.svg deleted file mode 100644 index 81c94a5f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog-8-tooth.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog.svg deleted file mode 100644 index 55b19d46..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cog.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-command-line.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-command-line.svg deleted file mode 100644 index 93e35fc1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-command-line.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-computer-desktop.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-computer-desktop.svg deleted file mode 100644 index 3c0fe1c4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-computer-desktop.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cpu-chip.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cpu-chip.svg deleted file mode 100644 index 95adf0e1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cpu-chip.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-credit-card.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-credit-card.svg deleted file mode 100644 index dbfafefe..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-credit-card.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cube-transparent.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cube-transparent.svg deleted file mode 100644 index 600d2e30..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cube-transparent.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cube.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cube.svg deleted file mode 100644 index 75f36448..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cube.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-bangladeshi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-bangladeshi.svg deleted file mode 100644 index 187d75c4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-bangladeshi.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-dollar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-dollar.svg deleted file mode 100644 index e3295895..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-dollar.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-euro.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-euro.svg deleted file mode 100644 index 64e2a32b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-euro.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-pound.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-pound.svg deleted file mode 100644 index 480e7b61..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-pound.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-rupee.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-rupee.svg deleted file mode 100644 index 43a9b8cd..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-rupee.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-yen.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-yen.svg deleted file mode 100644 index 311006d4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-currency-yen.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cursor-arrow-rays.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cursor-arrow-rays.svg deleted file mode 100644 index 18f5dc87..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cursor-arrow-rays.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cursor-arrow-ripple.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cursor-arrow-ripple.svg deleted file mode 100644 index afbd7410..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-cursor-arrow-ripple.svg +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-device-phone-mobile.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-device-phone-mobile.svg deleted file mode 100644 index 7261026a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-device-phone-mobile.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-device-tablet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-device-tablet.svg deleted file mode 100644 index c2b14bd0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-device-tablet.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-arrow-down.svg deleted file mode 100644 index 04820b79..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-arrow-up.svg deleted file mode 100644 index b70468d7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-chart-bar.svg deleted file mode 100644 index 48c91e90..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-chart-bar.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-check.svg deleted file mode 100644 index 922f600c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-check.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-duplicate.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-duplicate.svg deleted file mode 100644 index 5b525462..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-duplicate.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-magnifying-glass.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-magnifying-glass.svg deleted file mode 100644 index 0cfcadba..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-magnifying-glass.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-minus.svg deleted file mode 100644 index 207fe75f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-minus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-plus.svg deleted file mode 100644 index a59bca9b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-text.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-text.svg deleted file mode 100644 index 11c383c5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document-text.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document.svg deleted file mode 100644 index 76315422..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-document.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-horizontal-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-horizontal-circle.svg deleted file mode 100644 index 4ed81ac7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-horizontal-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-horizontal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-horizontal.svg deleted file mode 100644 index e0b281b8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-horizontal.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-vertical.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-vertical.svg deleted file mode 100644 index 1f7b5a9d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ellipsis-vertical.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-envelope-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-envelope-open.svg deleted file mode 100644 index 871fc80f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-envelope-open.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-envelope.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-envelope.svg deleted file mode 100644 index e0ef01b4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-envelope.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-exclamation-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-exclamation-circle.svg deleted file mode 100644 index 3f12a446..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-exclamation-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-exclamation-triangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-exclamation-triangle.svg deleted file mode 100644 index c331b5b7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-exclamation-triangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye-dropper.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye-dropper.svg deleted file mode 100644 index bf1b0f4c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye-dropper.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye-slash.svg deleted file mode 100644 index 8ee3cb92..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye-slash.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye.svg deleted file mode 100644 index 5ce8bcc3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-eye.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-face-frown.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-face-frown.svg deleted file mode 100644 index dd9cd527..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-face-frown.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-face-smile.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-face-smile.svg deleted file mode 100644 index 0e8030c1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-face-smile.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-film.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-film.svg deleted file mode 100644 index 2131ddd9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-film.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-finger-print.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-finger-print.svg deleted file mode 100644 index c6cdebc6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-finger-print.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-fire.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-fire.svg deleted file mode 100644 index e22ab93a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-fire.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-flag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-flag.svg deleted file mode 100644 index b2a332aa..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-flag.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-arrow-down.svg deleted file mode 100644 index 67f62c98..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-minus.svg deleted file mode 100644 index abab6e99..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-minus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-open.svg deleted file mode 100644 index 5f236ce8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-open.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-plus.svg deleted file mode 100644 index db22ab93..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder.svg deleted file mode 100644 index a0fd97ba..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-folder.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-forward.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-forward.svg deleted file mode 100644 index e7755db1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-forward.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-funnel.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-funnel.svg deleted file mode 100644 index 86aaba0d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-funnel.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gif.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gif.svg deleted file mode 100644 index 7df5ca5d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gif.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gift-top.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gift-top.svg deleted file mode 100644 index e0564c35..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gift-top.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gift.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gift.svg deleted file mode 100644 index f3e40f4b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-gift.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-alt.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-alt.svg deleted file mode 100644 index bb9f5cc2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-alt.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-americas.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-americas.svg deleted file mode 100644 index 2ae11038..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-americas.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-asia-australia.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-asia-australia.svg deleted file mode 100644 index bb70e98b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-asia-australia.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-europe-africa.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-europe-africa.svg deleted file mode 100644 index 4584e073..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-globe-europe-africa.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-raised.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-raised.svg deleted file mode 100644 index 9657afea..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-raised.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-thumb-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-thumb-down.svg deleted file mode 100644 index 34760721..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-thumb-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-thumb-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-thumb-up.svg deleted file mode 100644 index 6ddf5871..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hand-thumb-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hashtag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hashtag.svg deleted file mode 100644 index befe1018..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-hashtag.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-heart.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-heart.svg deleted file mode 100644 index 4277e6f5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-heart.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-home-modern.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-home-modern.svg deleted file mode 100644 index ede9c1ea..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-home-modern.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-home.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-home.svg deleted file mode 100644 index 9f7580a5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-home.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-identification.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-identification.svg deleted file mode 100644 index 9117f871..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-identification.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox-arrow-down.svg deleted file mode 100644 index e44a2a57..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox-arrow-down.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox-stack.svg deleted file mode 100644 index 067b085a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox-stack.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox.svg deleted file mode 100644 index 93405790..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-inbox.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-information-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-information-circle.svg deleted file mode 100644 index d834a25a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-information-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-key.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-key.svg deleted file mode 100644 index ed927ea6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-key.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-language.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-language.svg deleted file mode 100644 index 53ad8392..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-language.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lifebuoy.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lifebuoy.svg deleted file mode 100644 index e3799ad6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lifebuoy.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-light-bulb.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-light-bulb.svg deleted file mode 100644 index 728c0000..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-light-bulb.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-link.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-link.svg deleted file mode 100644 index a40b5a5f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-link.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-list-bullet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-list-bullet.svg deleted file mode 100644 index 0700722e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-list-bullet.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lock-closed.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lock-closed.svg deleted file mode 100644 index 28f13873..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lock-closed.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lock-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lock-open.svg deleted file mode 100644 index 3370496c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-lock-open.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-circle.svg deleted file mode 100644 index 7c427ea4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-circle.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-minus.svg deleted file mode 100644 index 353b848d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-minus.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-plus.svg deleted file mode 100644 index 1dc4f5d4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass-plus.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass.svg deleted file mode 100644 index 8fede6f8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-magnifying-glass.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-map-pin.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-map-pin.svg deleted file mode 100644 index 43719f1a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-map-pin.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-map.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-map.svg deleted file mode 100644 index ac7d6d3f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-map.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-megaphone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-megaphone.svg deleted file mode 100644 index 0155e4bb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-megaphone.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-microphone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-microphone.svg deleted file mode 100644 index 7f17f474..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-microphone.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus-circle.svg deleted file mode 100644 index ad202c9c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus-small.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus-small.svg deleted file mode 100644 index a27d7cd0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus-small.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus.svg deleted file mode 100644 index 8dee1f98..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-minus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-moon.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-moon.svg deleted file mode 100644 index e5e23ac5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-moon.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-musical-note.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-musical-note.svg deleted file mode 100644 index cfc5cd0a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-musical-note.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-newspaper.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-newspaper.svg deleted file mode 100644 index a45e27cd..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-newspaper.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-no-symbol.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-no-symbol.svg deleted file mode 100644 index 238e1c4d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-no-symbol.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paint-brush.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paint-brush.svg deleted file mode 100644 index bcb054b0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paint-brush.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paper-airplane.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paper-airplane.svg deleted file mode 100644 index 4a019d56..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paper-airplane.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paper-clip.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paper-clip.svg deleted file mode 100644 index 3b486529..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-paper-clip.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pause-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pause-circle.svg deleted file mode 100644 index c2fc5be1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pause-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pause.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pause.svg deleted file mode 100644 index ffa1bf73..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pause.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pencil-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pencil-square.svg deleted file mode 100644 index 358fc128..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pencil-square.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pencil.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pencil.svg deleted file mode 100644 index a6ac73f8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-pencil.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-arrow-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-arrow-down-left.svg deleted file mode 100644 index d79024fe..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-arrow-down-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-arrow-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-arrow-up-right.svg deleted file mode 100644 index 015c1fb2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-arrow-up-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-x-mark.svg deleted file mode 100644 index 3326c34e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone-x-mark.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone.svg deleted file mode 100644 index e58c2173..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-phone.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-photo.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-photo.svg deleted file mode 100644 index a6d92e3f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-photo.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play-circle.svg deleted file mode 100644 index 0b3dac9e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play-pause.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play-pause.svg deleted file mode 100644 index 0727d8c6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play-pause.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play.svg deleted file mode 100644 index 9d635f6f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-play.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus-circle.svg deleted file mode 100644 index 9468c6e3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus-small.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus-small.svg deleted file mode 100644 index 97180823..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus-small.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus.svg deleted file mode 100644 index 6faf9aad..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-power.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-power.svg deleted file mode 100644 index 14ba4acc..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-power.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-presentation-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-presentation-chart-bar.svg deleted file mode 100644 index 73628611..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-presentation-chart-bar.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-presentation-chart-line.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-presentation-chart-line.svg deleted file mode 100644 index 282087ff..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-presentation-chart-line.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-printer.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-printer.svg deleted file mode 100644 index a5116160..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-printer.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-puzzle-piece.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-puzzle-piece.svg deleted file mode 100644 index fcb7d8a6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-puzzle-piece.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-qr-code.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-qr-code.svg deleted file mode 100644 index 008823ca..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-qr-code.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-question-mark-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-question-mark-circle.svg deleted file mode 100644 index e4b1de12..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-question-mark-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-queue-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-queue-list.svg deleted file mode 100644 index 3afe65b0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-queue-list.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-radio.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-radio.svg deleted file mode 100644 index 6261d4e7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-radio.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-receipt-percent.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-receipt-percent.svg deleted file mode 100644 index 100e23db..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-receipt-percent.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-receipt-refund.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-receipt-refund.svg deleted file mode 100644 index cc0ce43e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-receipt-refund.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rectangle-group.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rectangle-group.svg deleted file mode 100644 index c4ce4f62..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rectangle-group.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rectangle-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rectangle-stack.svg deleted file mode 100644 index f49e3395..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rectangle-stack.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rocket-launch.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rocket-launch.svg deleted file mode 100644 index e30ac8b4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rocket-launch.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rss.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rss.svg deleted file mode 100644 index a99b8bc4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-rss.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-scale.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-scale.svg deleted file mode 100644 index ba1a8491..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-scale.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-scissors.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-scissors.svg deleted file mode 100644 index eec0302d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-scissors.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-server-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-server-stack.svg deleted file mode 100644 index d4aea4af..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-server-stack.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-server.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-server.svg deleted file mode 100644 index 7bc532a8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-server.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-share.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-share.svg deleted file mode 100644 index 291a7b0c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-share.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shield-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shield-check.svg deleted file mode 100644 index d55fc7eb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shield-check.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shield-exclamation.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shield-exclamation.svg deleted file mode 100644 index dfcc0f39..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shield-exclamation.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shopping-bag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shopping-bag.svg deleted file mode 100644 index 3c706abe..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shopping-bag.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shopping-cart.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shopping-cart.svg deleted file mode 100644 index 7fc14d45..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-shopping-cart.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-signal-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-signal-slash.svg deleted file mode 100644 index 0096e64a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-signal-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-signal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-signal.svg deleted file mode 100644 index 63aec834..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-signal.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-sparkles.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-sparkles.svg deleted file mode 100644 index 1f280a0c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-sparkles.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-speaker-wave.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-speaker-wave.svg deleted file mode 100644 index 53bce852..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-speaker-wave.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-speaker-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-speaker-x-mark.svg deleted file mode 100644 index f6948afc..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-speaker-x-mark.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-square-2-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-square-2-stack.svg deleted file mode 100644 index 35a3aa81..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-square-2-stack.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-square-3-stack-3d.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-square-3-stack-3d.svg deleted file mode 100644 index 8302bd99..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-square-3-stack-3d.svg +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-squares-2x2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-squares-2x2.svg deleted file mode 100644 index d778a4d9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-squares-2x2.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-squares-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-squares-plus.svg deleted file mode 100644 index 725df1d6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-squares-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-star.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-star.svg deleted file mode 100644 index c6882d09..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-star.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-stop-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-stop-circle.svg deleted file mode 100644 index aac67893..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-stop-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-stop.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-stop.svg deleted file mode 100644 index c4559c4a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-stop.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-sun.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-sun.svg deleted file mode 100644 index 8d0e58f9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-sun.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-swatch.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-swatch.svg deleted file mode 100644 index 7ac8dfda..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-swatch.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-table-cells.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-table-cells.svg deleted file mode 100644 index c041d123..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-table-cells.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-tag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-tag.svg deleted file mode 100644 index 02f502e2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-tag.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ticket.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ticket.svg deleted file mode 100644 index cea3ce7b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-ticket.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-trash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-trash.svg deleted file mode 100644 index 529224d3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-trash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-trophy.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-trophy.svg deleted file mode 100644 index c02f0d5f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-trophy.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-truck.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-truck.svg deleted file mode 100644 index bf12ef74..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-truck.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-tv.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-tv.svg deleted file mode 100644 index b945a0c8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-tv.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-circle.svg deleted file mode 100644 index 59785eb6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-group.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-group.svg deleted file mode 100644 index 17e755e1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-group.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-minus.svg deleted file mode 100644 index 240bff5a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-minus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-plus.svg deleted file mode 100644 index 33929416..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user.svg deleted file mode 100644 index 25b7abc4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-user.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-users.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-users.svg deleted file mode 100644 index 5a48a77b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-users.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-variable.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-variable.svg deleted file mode 100644 index c3e1ccf4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-variable.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-video-camera-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-video-camera-slash.svg deleted file mode 100644 index a5ff5f75..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-video-camera-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-video-camera.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-video-camera.svg deleted file mode 100644 index 2485f0cc..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-video-camera.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-view-columns.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-view-columns.svg deleted file mode 100644 index 4289dccc..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-view-columns.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-viewfinder-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-viewfinder-circle.svg deleted file mode 100644 index e5f4c371..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-viewfinder-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wallet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wallet.svg deleted file mode 100644 index 9d7835d6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wallet.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wifi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wifi.svg deleted file mode 100644 index 95f17df6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wifi.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-window.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-window.svg deleted file mode 100644 index 40ae1cc8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-window.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wrench-screwdriver.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wrench-screwdriver.svg deleted file mode 100644 index 32c38edf..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wrench-screwdriver.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wrench.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wrench.svg deleted file mode 100644 index 46f68f4d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-wrench.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-x-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-x-circle.svg deleted file mode 100644 index c8b56c74..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-x-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-x-mark.svg deleted file mode 100644 index b20f867b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/m-x-mark.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-academic-cap.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-academic-cap.svg deleted file mode 100644 index cd05c0e3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-academic-cap.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-adjustments-horizontal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-adjustments-horizontal.svg deleted file mode 100644 index 24a8bc7c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-adjustments-horizontal.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-adjustments-vertical.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-adjustments-vertical.svg deleted file mode 100644 index 8ec937cd..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-adjustments-vertical.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box-arrow-down.svg deleted file mode 100644 index a325df47..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box-x-mark.svg deleted file mode 100644 index cca86e10..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box-x-mark.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box.svg deleted file mode 100644 index 921a5826..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-archive-box.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-circle.svg deleted file mode 100644 index 954042dc..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-left.svg deleted file mode 100644 index be398da5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-on-square-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-on-square-stack.svg deleted file mode 100644 index 6032f2c7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-on-square-stack.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-on-square.svg deleted file mode 100644 index d7253860..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-on-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-right.svg deleted file mode 100644 index d31282ef..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-tray.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-tray.svg deleted file mode 100644 index 2b8890c5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down-tray.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down.svg deleted file mode 100644 index 5e1a5de9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-circle.svg deleted file mode 100644 index 82402825..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-end-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-end-on-rectangle.svg deleted file mode 100644 index 4bca1c92..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-end-on-rectangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-on-rectangle.svg deleted file mode 100644 index 4bca1c92..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-on-rectangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-start-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-start-on-rectangle.svg deleted file mode 100644 index 29997d2d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left-start-on-rectangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left.svg deleted file mode 100644 index 10719883..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-down.svg deleted file mode 100644 index 768a2995..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-left.svg deleted file mode 100644 index 0c019237..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-right.svg deleted file mode 100644 index 746e1e46..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-up.svg deleted file mode 100644 index bebf680c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-long-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-path-rounded-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-path-rounded-square.svg deleted file mode 100644 index 43922951..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-path-rounded-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-path.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-path.svg deleted file mode 100644 index fba7241a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-path.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-circle.svg deleted file mode 100644 index 6f065a08..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-end-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-end-on-rectangle.svg deleted file mode 100644 index 48ffe901..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-end-on-rectangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-on-rectangle.svg deleted file mode 100644 index abea6bfa..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-on-rectangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-start-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-start-on-rectangle.svg deleted file mode 100644 index abea6bfa..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right-start-on-rectangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right.svg deleted file mode 100644 index f700b1fd..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-down.svg deleted file mode 100644 index 9977f0ee..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-left.svg deleted file mode 100644 index 8d54067c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-right.svg deleted file mode 100644 index af2ef624..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-up.svg deleted file mode 100644 index 78e282d2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-small-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-top-right-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-top-right-on-square.svg deleted file mode 100644 index f3fb15f7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-top-right-on-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-trending-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-trending-down.svg deleted file mode 100644 index 75f083af..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-trending-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-trending-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-trending-up.svg deleted file mode 100644 index b79bfbee..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-trending-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-circle.svg deleted file mode 100644 index c2e03599..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-left.svg deleted file mode 100644 index 65531688..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-on-square-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-on-square-stack.svg deleted file mode 100644 index f1b3d5ec..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-on-square-stack.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-on-square.svg deleted file mode 100644 index 3625717f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-on-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-right.svg deleted file mode 100644 index 9ec7dee5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-tray.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-tray.svg deleted file mode 100644 index 3779677d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up-tray.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up.svg deleted file mode 100644 index cb05fb24..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-down.svg deleted file mode 100644 index f3620083..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-left.svg deleted file mode 100644 index 5a9819c4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-right.svg deleted file mode 100644 index 244e674c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-up.svg deleted file mode 100644 index a19ff964..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrow-uturn-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-pointing-in.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-pointing-in.svg deleted file mode 100644 index 2621d38e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-pointing-in.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-pointing-out.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-pointing-out.svg deleted file mode 100644 index 73de08c6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-pointing-out.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-right-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-right-left.svg deleted file mode 100644 index 22dca0aa..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-right-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-up-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-up-down.svg deleted file mode 100644 index f8cc08f6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-arrows-up-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-at-symbol.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-at-symbol.svg deleted file mode 100644 index 2b9e4469..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-at-symbol.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-backspace.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-backspace.svg deleted file mode 100644 index 1563d7d1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-backspace.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-backward.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-backward.svg deleted file mode 100644 index ff788f8b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-backward.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-banknotes.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-banknotes.svg deleted file mode 100644 index 945f60ea..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-banknotes.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-2.svg deleted file mode 100644 index d64a9bbb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-2.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-bottom-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-bottom-left.svg deleted file mode 100644 index 9960567a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-bottom-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-bottom-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-bottom-right.svg deleted file mode 100644 index 4e90c18c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-bottom-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-center-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-center-left.svg deleted file mode 100644 index cca274c9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3-center-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3.svg deleted file mode 100644 index 6d2221f7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-3.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-4.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-4.svg deleted file mode 100644 index b9e9c465..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-4.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-arrow-down.svg deleted file mode 100644 index 91af7e4e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-arrow-up.svg deleted file mode 100644 index 5c515e51..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bars-arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-0.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-0.svg deleted file mode 100644 index b9811f78..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-0.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-100.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-100.svg deleted file mode 100644 index f8808790..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-100.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-50.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-50.svg deleted file mode 100644 index 0018f8de..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-battery-50.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-beaker.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-beaker.svg deleted file mode 100644 index 9457e9ae..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-beaker.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-alert.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-alert.svg deleted file mode 100644 index 68d2f64c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-alert.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-slash.svg deleted file mode 100644 index fc31652c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-snooze.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-snooze.svg deleted file mode 100644 index 10fa5bdd..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell-snooze.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell.svg deleted file mode 100644 index 8145b9d2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bell.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bolt-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bolt-slash.svg deleted file mode 100644 index 91f81b4a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bolt-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bolt.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bolt.svg deleted file mode 100644 index 506283d9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bolt.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-book-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-book-open.svg deleted file mode 100644 index de02b146..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-book-open.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark-slash.svg deleted file mode 100644 index d55d5aea..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark-square.svg deleted file mode 100644 index 538d9e64..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark.svg deleted file mode 100644 index 4e88a5cc..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bookmark.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-briefcase.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-briefcase.svg deleted file mode 100644 index d0c1fc35..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-briefcase.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bug-ant.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bug-ant.svg deleted file mode 100644 index 056d5a5f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-bug-ant.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-library.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-library.svg deleted file mode 100644 index 2ea181cb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-library.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-office-2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-office-2.svg deleted file mode 100644 index d1f922aa..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-office-2.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-office.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-office.svg deleted file mode 100644 index 695729fe..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-office.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-storefront.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-storefront.svg deleted file mode 100644 index 8e287f88..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-building-storefront.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cake.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cake.svg deleted file mode 100644 index aa770ce7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cake.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calculator.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calculator.svg deleted file mode 100644 index ef441d61..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calculator.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calendar-days.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calendar-days.svg deleted file mode 100644 index 94731d7b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calendar-days.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calendar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calendar.svg deleted file mode 100644 index 81b3dfc8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-calendar.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-camera.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-camera.svg deleted file mode 100644 index aabc3c63..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-camera.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-bar-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-bar-square.svg deleted file mode 100644 index e03b7df5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-bar-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-bar.svg deleted file mode 100644 index 31ff30c4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-bar.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-pie.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-pie.svg deleted file mode 100644 index eebd21fe..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chart-pie.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-bottom-center-text.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-bottom-center-text.svg deleted file mode 100644 index 549b4b2e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-bottom-center-text.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-bottom-center.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-bottom-center.svg deleted file mode 100644 index 3bd9cf4e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-bottom-center.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left-ellipsis.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left-ellipsis.svg deleted file mode 100644 index 5865363c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left-ellipsis.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left-right.svg deleted file mode 100644 index fb00eb15..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left.svg deleted file mode 100644 index 1c0d9867..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-oval-left-ellipsis.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-oval-left-ellipsis.svg deleted file mode 100644 index 3cc9ce5a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-oval-left-ellipsis.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-oval-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-oval-left.svg deleted file mode 100644 index c4bab3a6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chat-bubble-oval-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check-badge.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check-badge.svg deleted file mode 100644 index d39704d0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check-badge.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check-circle.svg deleted file mode 100644 index 912ffc67..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check.svg deleted file mode 100644 index 37ad683e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-check.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-down.svg deleted file mode 100644 index 308710e1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-left.svg deleted file mode 100644 index 7af02329..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-right.svg deleted file mode 100644 index e29b66f1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-up.svg deleted file mode 100644 index ab19f2e4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-double-up.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-down.svg deleted file mode 100644 index b6ac1cf6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-left.svg deleted file mode 100644 index 5e9f57b8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-right.svg deleted file mode 100644 index cd8a4572..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-up-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-up-down.svg deleted file mode 100644 index ba6820a0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-up-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-up.svg deleted file mode 100644 index eafbff4a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-chevron-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-circle-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-circle-stack.svg deleted file mode 100644 index 2f75456c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-circle-stack.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document-check.svg deleted file mode 100644 index b4be34b8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document-check.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document-list.svg deleted file mode 100644 index 11e818a3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document-list.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document.svg deleted file mode 100644 index 31eb487a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard-document.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard.svg deleted file mode 100644 index 2e7501e1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clipboard.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clock.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clock.svg deleted file mode 100644 index a7fce7bd..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-clock.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud-arrow-down.svg deleted file mode 100644 index 9bbee4ff..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud-arrow-up.svg deleted file mode 100644 index 09944371..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud-arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud.svg deleted file mode 100644 index 9662d6cc..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cloud.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-code-bracket-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-code-bracket-square.svg deleted file mode 100644 index de71371e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-code-bracket-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-code-bracket.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-code-bracket.svg deleted file mode 100644 index 8754e635..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-code-bracket.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog-6-tooth.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog-6-tooth.svg deleted file mode 100644 index 91ba7db9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog-6-tooth.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog-8-tooth.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog-8-tooth.svg deleted file mode 100644 index 515cc16d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog-8-tooth.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog.svg deleted file mode 100644 index 5aadb3e4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cog.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-command-line.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-command-line.svg deleted file mode 100644 index 6f9f8f9c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-command-line.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-computer-desktop.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-computer-desktop.svg deleted file mode 100644 index 1744ea27..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-computer-desktop.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cpu-chip.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cpu-chip.svg deleted file mode 100644 index 7ab9e09c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cpu-chip.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-credit-card.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-credit-card.svg deleted file mode 100644 index fbe46d80..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-credit-card.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cube-transparent.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cube-transparent.svg deleted file mode 100644 index 10f4c2c4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cube-transparent.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cube.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cube.svg deleted file mode 100644 index 87d16c0b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cube.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-bangladeshi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-bangladeshi.svg deleted file mode 100644 index 4aaae03b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-bangladeshi.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-dollar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-dollar.svg deleted file mode 100644 index a69380e1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-dollar.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-euro.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-euro.svg deleted file mode 100644 index b6504f34..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-euro.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-pound.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-pound.svg deleted file mode 100644 index fb323779..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-pound.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-rupee.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-rupee.svg deleted file mode 100644 index 2040a225..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-rupee.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-yen.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-yen.svg deleted file mode 100644 index 80d3c998..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-currency-yen.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cursor-arrow-rays.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cursor-arrow-rays.svg deleted file mode 100644 index 813793c3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cursor-arrow-rays.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cursor-arrow-ripple.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cursor-arrow-ripple.svg deleted file mode 100644 index 24dbb3e1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-cursor-arrow-ripple.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-device-phone-mobile.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-device-phone-mobile.svg deleted file mode 100644 index 7ff5ae21..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-device-phone-mobile.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-device-tablet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-device-tablet.svg deleted file mode 100644 index 58b94a4c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-device-tablet.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-arrow-down.svg deleted file mode 100644 index 39cb4d3b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-arrow-up.svg deleted file mode 100644 index f4ad8445..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-chart-bar.svg deleted file mode 100644 index 0bf7dc1e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-chart-bar.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-check.svg deleted file mode 100644 index 6ef1c98c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-check.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-duplicate.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-duplicate.svg deleted file mode 100644 index 9c6bc80d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-duplicate.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-magnifying-glass.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-magnifying-glass.svg deleted file mode 100644 index ebf1b135..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-magnifying-glass.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-minus.svg deleted file mode 100644 index a13b6fe9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-minus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-plus.svg deleted file mode 100644 index e06def85..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-text.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-text.svg deleted file mode 100644 index 8c03e9ed..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document-text.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document.svg deleted file mode 100644 index 5a4881a1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-document.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-horizontal-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-horizontal-circle.svg deleted file mode 100644 index d6f11dd9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-horizontal-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-horizontal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-horizontal.svg deleted file mode 100644 index 4efa28a1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-horizontal.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-vertical.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-vertical.svg deleted file mode 100644 index 2caf3e05..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ellipsis-vertical.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-envelope-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-envelope-open.svg deleted file mode 100644 index 01f34be5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-envelope-open.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-envelope.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-envelope.svg deleted file mode 100644 index b8029e86..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-envelope.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-exclamation-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-exclamation-circle.svg deleted file mode 100644 index 0833d8e6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-exclamation-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-exclamation-triangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-exclamation-triangle.svg deleted file mode 100644 index dc2e6cf8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-exclamation-triangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye-dropper.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye-dropper.svg deleted file mode 100644 index c1b7b8ac..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye-dropper.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye-slash.svg deleted file mode 100644 index fb794247..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye.svg deleted file mode 100644 index f4ae935c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-eye.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-face-frown.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-face-frown.svg deleted file mode 100644 index 86af7b0b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-face-frown.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-face-smile.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-face-smile.svg deleted file mode 100644 index e9872820..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-face-smile.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-film.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-film.svg deleted file mode 100644 index f02856d8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-film.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-finger-print.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-finger-print.svg deleted file mode 100644 index 2de9f823..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-finger-print.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-fire.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-fire.svg deleted file mode 100644 index 0e944f56..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-fire.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-flag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-flag.svg deleted file mode 100644 index f5d17df3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-flag.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-arrow-down.svg deleted file mode 100644 index 74f0b6c7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-minus.svg deleted file mode 100644 index fc4212b9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-minus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-open.svg deleted file mode 100644 index df90e716..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-open.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-plus.svg deleted file mode 100644 index 8acf5f7f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder.svg deleted file mode 100644 index 4c301add..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-folder.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-forward.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-forward.svg deleted file mode 100644 index 317f5ce7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-forward.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-funnel.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-funnel.svg deleted file mode 100644 index 5937bdc1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-funnel.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gif.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gif.svg deleted file mode 100644 index 6d22acae..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gif.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gift-top.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gift-top.svg deleted file mode 100644 index 3eb1793a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gift-top.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gift.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gift.svg deleted file mode 100644 index a856b6f7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-gift.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-alt.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-alt.svg deleted file mode 100644 index b63d2689..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-alt.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-americas.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-americas.svg deleted file mode 100644 index f0a6beb5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-americas.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-asia-australia.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-asia-australia.svg deleted file mode 100644 index 396cd3cc..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-asia-australia.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-europe-africa.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-europe-africa.svg deleted file mode 100644 index 427637dd..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-globe-europe-africa.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-raised.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-raised.svg deleted file mode 100644 index c9008af2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-raised.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-thumb-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-thumb-down.svg deleted file mode 100644 index 3d2cc169..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-thumb-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-thumb-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-thumb-up.svg deleted file mode 100644 index 01b98773..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hand-thumb-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hashtag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hashtag.svg deleted file mode 100644 index 9956ce04..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-hashtag.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-heart.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-heart.svg deleted file mode 100644 index 2c371f33..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-heart.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-home-modern.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-home-modern.svg deleted file mode 100644 index b081fe88..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-home-modern.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-home.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-home.svg deleted file mode 100644 index e1900b8e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-home.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-identification.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-identification.svg deleted file mode 100644 index 9a99a61d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-identification.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox-arrow-down.svg deleted file mode 100644 index 686060b1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox-stack.svg deleted file mode 100644 index c8a6ebbb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox-stack.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox.svg deleted file mode 100644 index 2a26cee2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-inbox.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-information-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-information-circle.svg deleted file mode 100644 index d4ac360d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-information-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-key.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-key.svg deleted file mode 100644 index 30c5bde5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-key.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-language.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-language.svg deleted file mode 100644 index 1094eb16..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-language.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lifebuoy.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lifebuoy.svg deleted file mode 100644 index 446562bc..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lifebuoy.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-light-bulb.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-light-bulb.svg deleted file mode 100644 index 37c03179..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-light-bulb.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-link.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-link.svg deleted file mode 100644 index 38febfc2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-link.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-list-bullet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-list-bullet.svg deleted file mode 100644 index 0dcb9404..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-list-bullet.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lock-closed.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lock-closed.svg deleted file mode 100644 index 4917dbb4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lock-closed.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lock-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lock-open.svg deleted file mode 100644 index 7f9a5a33..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-lock-open.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-circle.svg deleted file mode 100644 index 4c0da1f0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-minus.svg deleted file mode 100644 index d4dfada0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-minus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-plus.svg deleted file mode 100644 index a1d4363b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass.svg deleted file mode 100644 index 947336ca..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-magnifying-glass.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-map-pin.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-map-pin.svg deleted file mode 100644 index 74cc7867..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-map-pin.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-map.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-map.svg deleted file mode 100644 index 2d9e239b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-map.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-megaphone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-megaphone.svg deleted file mode 100644 index 2b3c60b6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-megaphone.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-microphone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-microphone.svg deleted file mode 100644 index e349845b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-microphone.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus-circle.svg deleted file mode 100644 index 7cc1de3c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus-small.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus-small.svg deleted file mode 100644 index 25144c88..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus-small.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus.svg deleted file mode 100644 index fa1fb8b2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-minus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-moon.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-moon.svg deleted file mode 100644 index 6a13b2f2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-moon.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-musical-note.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-musical-note.svg deleted file mode 100644 index d903ff2b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-musical-note.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-newspaper.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-newspaper.svg deleted file mode 100644 index 666274fc..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-newspaper.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-no-symbol.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-no-symbol.svg deleted file mode 100644 index a7dd3656..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-no-symbol.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paint-brush.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paint-brush.svg deleted file mode 100644 index 21a208e6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paint-brush.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paper-airplane.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paper-airplane.svg deleted file mode 100644 index 80db4d0d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paper-airplane.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paper-clip.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paper-clip.svg deleted file mode 100644 index c27a60ab..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-paper-clip.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pause-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pause-circle.svg deleted file mode 100644 index 723e5f2c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pause-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pause.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pause.svg deleted file mode 100644 index 7a611048..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pause.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pencil-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pencil-square.svg deleted file mode 100644 index 01de21ea..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pencil-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pencil.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pencil.svg deleted file mode 100644 index 7af74ab9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-pencil.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-arrow-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-arrow-down-left.svg deleted file mode 100644 index 31185c87..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-arrow-down-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-arrow-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-arrow-up-right.svg deleted file mode 100644 index ab875b04..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-arrow-up-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-x-mark.svg deleted file mode 100644 index 50568f0f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone-x-mark.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone.svg deleted file mode 100644 index a8789d13..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-phone.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-photo.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-photo.svg deleted file mode 100644 index 0e65af21..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-photo.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play-circle.svg deleted file mode 100644 index d83a73f3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play-circle.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play-pause.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play-pause.svg deleted file mode 100644 index 943efcb5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play-pause.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play.svg deleted file mode 100644 index 3c0fad30..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-play.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus-circle.svg deleted file mode 100644 index 1beab85b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus-small.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus-small.svg deleted file mode 100644 index 7fb7dcb1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus-small.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus.svg deleted file mode 100644 index 06b312f7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-power.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-power.svg deleted file mode 100644 index e471a03a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-power.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-presentation-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-presentation-chart-bar.svg deleted file mode 100644 index d0564395..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-presentation-chart-bar.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-presentation-chart-line.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-presentation-chart-line.svg deleted file mode 100644 index ed212e5c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-presentation-chart-line.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-printer.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-printer.svg deleted file mode 100644 index f3c1c548..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-printer.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-puzzle-piece.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-puzzle-piece.svg deleted file mode 100644 index 004855be..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-puzzle-piece.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-qr-code.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-qr-code.svg deleted file mode 100644 index 1cbd5d4c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-qr-code.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-question-mark-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-question-mark-circle.svg deleted file mode 100644 index e3dd599a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-question-mark-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-queue-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-queue-list.svg deleted file mode 100644 index 09f00664..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-queue-list.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-radio.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-radio.svg deleted file mode 100644 index 81c891b8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-radio.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-receipt-percent.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-receipt-percent.svg deleted file mode 100644 index 4dd59964..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-receipt-percent.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-receipt-refund.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-receipt-refund.svg deleted file mode 100644 index 345a8977..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-receipt-refund.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rectangle-group.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rectangle-group.svg deleted file mode 100644 index 8184b196..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rectangle-group.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rectangle-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rectangle-stack.svg deleted file mode 100644 index 8eb419a4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rectangle-stack.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rocket-launch.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rocket-launch.svg deleted file mode 100644 index a6a6cb97..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rocket-launch.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rss.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rss.svg deleted file mode 100644 index ff1e1a81..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-rss.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-scale.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-scale.svg deleted file mode 100644 index 559bcdab..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-scale.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-scissors.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-scissors.svg deleted file mode 100644 index 4df73af1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-scissors.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-server-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-server-stack.svg deleted file mode 100644 index 060c8208..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-server-stack.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-server.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-server.svg deleted file mode 100644 index eef8b9e5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-server.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-share.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-share.svg deleted file mode 100644 index e9312439..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-share.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shield-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shield-check.svg deleted file mode 100644 index 82b91259..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shield-check.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shield-exclamation.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shield-exclamation.svg deleted file mode 100644 index 5a8df172..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shield-exclamation.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shopping-bag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shopping-bag.svg deleted file mode 100644 index 7c5f29b4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shopping-bag.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shopping-cart.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shopping-cart.svg deleted file mode 100644 index b86c2abb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-shopping-cart.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-signal-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-signal-slash.svg deleted file mode 100644 index b858fdf7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-signal-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-signal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-signal.svg deleted file mode 100644 index 9daa0025..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-signal.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-sparkles.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-sparkles.svg deleted file mode 100644 index c8df7f1f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-sparkles.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-speaker-wave.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-speaker-wave.svg deleted file mode 100644 index 7bb46f26..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-speaker-wave.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-speaker-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-speaker-x-mark.svg deleted file mode 100644 index e89da3e6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-speaker-x-mark.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-square-2-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-square-2-stack.svg deleted file mode 100644 index d6d6ca9d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-square-2-stack.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-square-3-stack-3d.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-square-3-stack-3d.svg deleted file mode 100644 index d11f07bc..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-square-3-stack-3d.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-squares-2x2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-squares-2x2.svg deleted file mode 100644 index 1fe6594d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-squares-2x2.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-squares-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-squares-plus.svg deleted file mode 100644 index b87a5f12..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-squares-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-star.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-star.svg deleted file mode 100644 index 1f27ec8d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-star.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-stop-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-stop-circle.svg deleted file mode 100644 index 26c2aba9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-stop-circle.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-stop.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-stop.svg deleted file mode 100644 index 2058714a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-stop.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-sun.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-sun.svg deleted file mode 100644 index 0e49045a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-sun.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-swatch.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-swatch.svg deleted file mode 100644 index e1e1b276..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-swatch.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-table-cells.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-table-cells.svg deleted file mode 100644 index 3d0f1141..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-table-cells.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-tag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-tag.svg deleted file mode 100644 index 01eb0a35..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-tag.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ticket.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ticket.svg deleted file mode 100644 index f06ce3bf..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-ticket.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-trash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-trash.svg deleted file mode 100644 index 71669b09..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-trash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-trophy.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-trophy.svg deleted file mode 100644 index 95562271..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-trophy.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-truck.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-truck.svg deleted file mode 100644 index 7f475c87..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-truck.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-tv.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-tv.svg deleted file mode 100644 index b6fae6aa..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-tv.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-circle.svg deleted file mode 100644 index 74a941e6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-group.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-group.svg deleted file mode 100644 index 2a3159e9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-group.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-minus.svg deleted file mode 100644 index 878cc7a9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-minus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-plus.svg deleted file mode 100644 index a3c9bfce..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user.svg deleted file mode 100644 index 9a343c4c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-user.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-users.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-users.svg deleted file mode 100644 index 1de4a729..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-users.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-variable.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-variable.svg deleted file mode 100644 index 4656e2f1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-variable.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-video-camera-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-video-camera-slash.svg deleted file mode 100644 index c08bd006..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-video-camera-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-video-camera.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-video-camera.svg deleted file mode 100644 index 1af46bda..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-video-camera.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-view-columns.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-view-columns.svg deleted file mode 100644 index bc9a440a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-view-columns.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-viewfinder-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-viewfinder-circle.svg deleted file mode 100644 index 947dcd8f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-viewfinder-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wallet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wallet.svg deleted file mode 100644 index 58989cf9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wallet.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wifi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wifi.svg deleted file mode 100644 index c838da48..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wifi.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-window.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-window.svg deleted file mode 100644 index fcccbe2f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-window.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wrench-screwdriver.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wrench-screwdriver.svg deleted file mode 100644 index 8d05c28d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wrench-screwdriver.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wrench.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wrench.svg deleted file mode 100644 index 56c6f8d4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-wrench.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-x-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-x-circle.svg deleted file mode 100644 index e8d86efb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-x-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-x-mark.svg deleted file mode 100644 index 19b4ac76..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/o-x-mark.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-academic-cap.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-academic-cap.svg deleted file mode 100644 index caf08cf8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-academic-cap.svg +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-adjustments-horizontal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-adjustments-horizontal.svg deleted file mode 100644 index 5941a18a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-adjustments-horizontal.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-adjustments-vertical.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-adjustments-vertical.svg deleted file mode 100644 index 67922e68..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-adjustments-vertical.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box-arrow-down.svg deleted file mode 100644 index a55eaac3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box-arrow-down.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box-x-mark.svg deleted file mode 100644 index d3170249..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box-x-mark.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box.svg deleted file mode 100644 index 045a553f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-archive-box.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-circle.svg deleted file mode 100644 index 63783da7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-left.svg deleted file mode 100644 index 2a04263f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-on-square-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-on-square-stack.svg deleted file mode 100644 index 3ebf0cff..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-on-square-stack.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-on-square.svg deleted file mode 100644 index dcc413d0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-on-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-right.svg deleted file mode 100644 index dc6984ca..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-tray.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-tray.svg deleted file mode 100644 index a5742814..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down-tray.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down.svg deleted file mode 100644 index e8334d5f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-circle.svg deleted file mode 100644 index d958af3c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-end-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-end-on-rectangle.svg deleted file mode 100644 index cf507b85..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-end-on-rectangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-on-rectangle.svg deleted file mode 100644 index cf507b85..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-on-rectangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-start-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-start-on-rectangle.svg deleted file mode 100644 index 9fbe1ee0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left-start-on-rectangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left.svg deleted file mode 100644 index 3f84fb7b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-down.svg deleted file mode 100644 index 9176936b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-left.svg deleted file mode 100644 index b374f26b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-right.svg deleted file mode 100644 index 654992f8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-up.svg deleted file mode 100644 index 71b5c3c6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-long-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-path-rounded-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-path-rounded-square.svg deleted file mode 100644 index e7e20192..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-path-rounded-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-path.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-path.svg deleted file mode 100644 index 11083b2d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-path.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-circle.svg deleted file mode 100644 index 96ed0f54..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-end-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-end-on-rectangle.svg deleted file mode 100644 index 930a4acb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-end-on-rectangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-on-rectangle.svg deleted file mode 100644 index 17ad5547..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-on-rectangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-start-on-rectangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-start-on-rectangle.svg deleted file mode 100644 index 17ad5547..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right-start-on-rectangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right.svg deleted file mode 100644 index c985254d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-down.svg deleted file mode 100644 index dca23250..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-left.svg deleted file mode 100644 index a3ce2317..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-right.svg deleted file mode 100644 index a2abcef1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-up.svg deleted file mode 100644 index 8c25bba8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-small-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-top-right-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-top-right-on-square.svg deleted file mode 100644 index 80e5aff8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-top-right-on-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-trending-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-trending-down.svg deleted file mode 100644 index b65a0164..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-trending-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-trending-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-trending-up.svg deleted file mode 100644 index cf1ba1c0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-trending-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-circle.svg deleted file mode 100644 index 83747dc2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-left.svg deleted file mode 100644 index c6256c7a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-on-square-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-on-square-stack.svg deleted file mode 100644 index d38d02df..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-on-square-stack.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-on-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-on-square.svg deleted file mode 100644 index 70bf7725..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-on-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-right.svg deleted file mode 100644 index af327a94..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-tray.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-tray.svg deleted file mode 100644 index 97cea1eb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up-tray.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up.svg deleted file mode 100644 index 31d032b0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-down.svg deleted file mode 100644 index 04c20f4f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-left.svg deleted file mode 100644 index bfb80633..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-right.svg deleted file mode 100644 index 41516940..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-up.svg deleted file mode 100644 index 1ea28a7a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrow-uturn-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-pointing-in.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-pointing-in.svg deleted file mode 100644 index 1e398e86..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-pointing-in.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-pointing-out.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-pointing-out.svg deleted file mode 100644 index a1504592..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-pointing-out.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-right-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-right-left.svg deleted file mode 100644 index e0c2cd1a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-right-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-up-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-up-down.svg deleted file mode 100644 index 65ecb1d9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-arrows-up-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-at-symbol.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-at-symbol.svg deleted file mode 100644 index 12b3a4b3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-at-symbol.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-backspace.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-backspace.svg deleted file mode 100644 index 67ead14d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-backspace.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-backward.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-backward.svg deleted file mode 100644 index 77bb887d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-backward.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-banknotes.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-banknotes.svg deleted file mode 100644 index 35378857..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-banknotes.svg +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-2.svg deleted file mode 100644 index f202853f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-2.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-bottom-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-bottom-left.svg deleted file mode 100644 index b6d722af..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-bottom-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-bottom-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-bottom-right.svg deleted file mode 100644 index fe4ca2d3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-bottom-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-center-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-center-left.svg deleted file mode 100644 index f1837b79..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3-center-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3.svg deleted file mode 100644 index b346ec7e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-3.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-4.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-4.svg deleted file mode 100644 index a55c244f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-4.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-arrow-down.svg deleted file mode 100644 index a8988f49..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-arrow-up.svg deleted file mode 100644 index 50e5d62b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bars-arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-0.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-0.svg deleted file mode 100644 index e3cf12b4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-0.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-100.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-100.svg deleted file mode 100644 index 8c0b12a8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-100.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-50.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-50.svg deleted file mode 100644 index 9da699ca..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-battery-50.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-beaker.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-beaker.svg deleted file mode 100644 index 09f8405f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-beaker.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-alert.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-alert.svg deleted file mode 100644 index ab36d83c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-alert.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-slash.svg deleted file mode 100644 index 6c27b45f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-slash.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-snooze.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-snooze.svg deleted file mode 100644 index fa81242e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell-snooze.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell.svg deleted file mode 100644 index 15c304dc..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bell.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bolt-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bolt-slash.svg deleted file mode 100644 index db5bb003..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bolt-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bolt.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bolt.svg deleted file mode 100644 index ddafddce..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bolt.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-book-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-book-open.svg deleted file mode 100644 index be9503f1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-book-open.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark-slash.svg deleted file mode 100644 index 8029db0c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark-square.svg deleted file mode 100644 index 55893646..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark.svg deleted file mode 100644 index 4f4f5091..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bookmark.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-briefcase.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-briefcase.svg deleted file mode 100644 index 519aacd4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-briefcase.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bug-ant.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bug-ant.svg deleted file mode 100644 index 1278695b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-bug-ant.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-library.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-library.svg deleted file mode 100644 index bcecbd9f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-library.svg +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-office-2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-office-2.svg deleted file mode 100644 index 506b3cfd..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-office-2.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-office.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-office.svg deleted file mode 100644 index a36c69a3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-office.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-storefront.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-storefront.svg deleted file mode 100644 index 8a5f3170..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-building-storefront.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cake.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cake.svg deleted file mode 100644 index 9626351f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cake.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calculator.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calculator.svg deleted file mode 100644 index a512ef7d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calculator.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calendar-days.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calendar-days.svg deleted file mode 100644 index 80d447c9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calendar-days.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calendar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calendar.svg deleted file mode 100644 index cc157d6f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-calendar.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-camera.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-camera.svg deleted file mode 100644 index 8f26ad51..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-camera.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-bar-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-bar-square.svg deleted file mode 100644 index 13a71f56..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-bar-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-bar.svg deleted file mode 100644 index 0bb35a15..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-bar.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-pie.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-pie.svg deleted file mode 100644 index 2068099d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chart-pie.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-bottom-center-text.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-bottom-center-text.svg deleted file mode 100644 index e4b8f13d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-bottom-center-text.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-bottom-center.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-bottom-center.svg deleted file mode 100644 index 8b19aee7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-bottom-center.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left-ellipsis.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left-ellipsis.svg deleted file mode 100644 index bc6cc354..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left-ellipsis.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left-right.svg deleted file mode 100644 index c2b25fd3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left-right.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left.svg deleted file mode 100644 index d65d62a1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-oval-left-ellipsis.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-oval-left-ellipsis.svg deleted file mode 100644 index 30603d01..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-oval-left-ellipsis.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-oval-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-oval-left.svg deleted file mode 100644 index 583d5023..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chat-bubble-oval-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check-badge.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check-badge.svg deleted file mode 100644 index bcf807aa..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check-badge.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check-circle.svg deleted file mode 100644 index 4c534080..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check.svg deleted file mode 100644 index 99d96ee4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-check.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-down.svg deleted file mode 100644 index a2220eff..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-down.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-left.svg deleted file mode 100644 index 06446a78..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-left.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-right.svg deleted file mode 100644 index f25d457f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-right.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-up.svg deleted file mode 100644 index a1697978..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-double-up.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-down.svg deleted file mode 100644 index 9cd2647f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-left.svg deleted file mode 100644 index 5fcaa4e6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-left.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-right.svg deleted file mode 100644 index 6e37a51c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-right.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-up-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-up-down.svg deleted file mode 100644 index 4c19e13b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-up-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-up.svg deleted file mode 100644 index d9695d3f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-chevron-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-circle-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-circle-stack.svg deleted file mode 100644 index 51b626ec..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-circle-stack.svg +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document-check.svg deleted file mode 100644 index e5de2b68..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document-check.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document-list.svg deleted file mode 100644 index 91ac9b76..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document-list.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document.svg deleted file mode 100644 index 51c90dee..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard-document.svg +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard.svg deleted file mode 100644 index 2c98bb3a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clipboard.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clock.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clock.svg deleted file mode 100644 index fb8943ac..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-clock.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud-arrow-down.svg deleted file mode 100644 index 6bc1ecec..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud-arrow-up.svg deleted file mode 100644 index 59814e6e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud-arrow-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud.svg deleted file mode 100644 index 88edfce0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cloud.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-code-bracket-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-code-bracket-square.svg deleted file mode 100644 index b2e0ec1d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-code-bracket-square.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-code-bracket.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-code-bracket.svg deleted file mode 100644 index 94205647..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-code-bracket.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog-6-tooth.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog-6-tooth.svg deleted file mode 100644 index 4eebfb60..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog-6-tooth.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog-8-tooth.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog-8-tooth.svg deleted file mode 100644 index 17fcb970..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog-8-tooth.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog.svg deleted file mode 100644 index 762d1099..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cog.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-command-line.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-command-line.svg deleted file mode 100644 index d7a1426f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-command-line.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-computer-desktop.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-computer-desktop.svg deleted file mode 100644 index a7ad833d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-computer-desktop.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cpu-chip.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cpu-chip.svg deleted file mode 100644 index b9da5a15..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cpu-chip.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-credit-card.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-credit-card.svg deleted file mode 100644 index bd92d58e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-credit-card.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cube-transparent.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cube-transparent.svg deleted file mode 100644 index 56b08b89..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cube-transparent.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cube.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cube.svg deleted file mode 100644 index 875c5f83..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cube.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-bangladeshi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-bangladeshi.svg deleted file mode 100644 index 8d8833c3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-bangladeshi.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-dollar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-dollar.svg deleted file mode 100644 index e8aaeeaf..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-dollar.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-euro.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-euro.svg deleted file mode 100644 index 0d3f66d7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-euro.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-pound.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-pound.svg deleted file mode 100644 index 832100ec..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-pound.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-rupee.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-rupee.svg deleted file mode 100644 index 6a70776b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-rupee.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-yen.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-yen.svg deleted file mode 100644 index 1c55b60b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-currency-yen.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cursor-arrow-rays.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cursor-arrow-rays.svg deleted file mode 100644 index cfe75536..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cursor-arrow-rays.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cursor-arrow-ripple.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cursor-arrow-ripple.svg deleted file mode 100644 index 7386ee29..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-cursor-arrow-ripple.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-device-phone-mobile.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-device-phone-mobile.svg deleted file mode 100644 index a81f9660..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-device-phone-mobile.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-device-tablet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-device-tablet.svg deleted file mode 100644 index e576b7f0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-device-tablet.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-arrow-down.svg deleted file mode 100644 index fab4cd17..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-arrow-down.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-arrow-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-arrow-up.svg deleted file mode 100644 index 62bf4198..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-arrow-up.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-chart-bar.svg deleted file mode 100644 index 3ef54d88..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-chart-bar.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-check.svg deleted file mode 100644 index 357c565d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-check.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-duplicate.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-duplicate.svg deleted file mode 100644 index 55d74d5e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-duplicate.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-magnifying-glass.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-magnifying-glass.svg deleted file mode 100644 index 63cd019d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-magnifying-glass.svg +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-minus.svg deleted file mode 100644 index 13b09243..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-minus.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-plus.svg deleted file mode 100644 index 1ce84c4d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-plus.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-text.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-text.svg deleted file mode 100644 index 4f747fb4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document-text.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document.svg deleted file mode 100644 index de025c41..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-document.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-horizontal-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-horizontal-circle.svg deleted file mode 100644 index 4db48538..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-horizontal-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-horizontal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-horizontal.svg deleted file mode 100644 index 5f7a532e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-horizontal.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-vertical.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-vertical.svg deleted file mode 100644 index 5ada5378..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ellipsis-vertical.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-envelope-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-envelope-open.svg deleted file mode 100644 index 63936635..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-envelope-open.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-envelope.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-envelope.svg deleted file mode 100644 index 94fc56c6..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-envelope.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-exclamation-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-exclamation-circle.svg deleted file mode 100644 index 3fb372d4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-exclamation-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-exclamation-triangle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-exclamation-triangle.svg deleted file mode 100644 index 2024fae2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-exclamation-triangle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye-dropper.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye-dropper.svg deleted file mode 100644 index a6cd394b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye-dropper.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye-slash.svg deleted file mode 100644 index f067f2a7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye-slash.svg +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye.svg deleted file mode 100644 index 675bb242..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-eye.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-face-frown.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-face-frown.svg deleted file mode 100644 index 06fa63cd..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-face-frown.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-face-smile.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-face-smile.svg deleted file mode 100644 index 0231474a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-face-smile.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-film.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-film.svg deleted file mode 100644 index f94903ca..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-film.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-finger-print.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-finger-print.svg deleted file mode 100644 index 5e4955a7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-finger-print.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-fire.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-fire.svg deleted file mode 100644 index f61bdc11..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-fire.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-flag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-flag.svg deleted file mode 100644 index 97e5377a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-flag.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-arrow-down.svg deleted file mode 100644 index f6b5e27a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-arrow-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-minus.svg deleted file mode 100644 index 6bf869b3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-minus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-open.svg deleted file mode 100644 index e81ebeed..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-open.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-plus.svg deleted file mode 100644 index 97ce6888..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder.svg deleted file mode 100644 index fa0733df..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-folder.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-forward.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-forward.svg deleted file mode 100644 index 4895530e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-forward.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-funnel.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-funnel.svg deleted file mode 100644 index 8fd3b26d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-funnel.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gif.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gif.svg deleted file mode 100644 index 5047d636..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gif.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gift-top.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gift-top.svg deleted file mode 100644 index 96ec0976..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gift-top.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gift.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gift.svg deleted file mode 100644 index 461b34ba..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-gift.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-alt.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-alt.svg deleted file mode 100644 index bf5ac60d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-alt.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-americas.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-americas.svg deleted file mode 100644 index faee6a18..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-americas.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-asia-australia.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-asia-australia.svg deleted file mode 100644 index 28838413..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-asia-australia.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-europe-africa.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-europe-africa.svg deleted file mode 100644 index 9b1ad10d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-globe-europe-africa.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-raised.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-raised.svg deleted file mode 100644 index ad64f499..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-raised.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-thumb-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-thumb-down.svg deleted file mode 100644 index 4a4996db..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-thumb-down.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-thumb-up.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-thumb-up.svg deleted file mode 100644 index cb2396bb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hand-thumb-up.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hashtag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hashtag.svg deleted file mode 100644 index 7bf54c24..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-hashtag.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-heart.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-heart.svg deleted file mode 100644 index 27c7d20a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-heart.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-home-modern.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-home-modern.svg deleted file mode 100644 index 755bf33d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-home-modern.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-home.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-home.svg deleted file mode 100644 index 4ee93c40..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-home.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-identification.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-identification.svg deleted file mode 100644 index 03adf304..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-identification.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox-arrow-down.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox-arrow-down.svg deleted file mode 100644 index f593e2f4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox-arrow-down.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox-stack.svg deleted file mode 100644 index 646629ef..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox-stack.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox.svg deleted file mode 100644 index 0de433b5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-inbox.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-information-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-information-circle.svg deleted file mode 100644 index 46cbb616..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-information-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-key.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-key.svg deleted file mode 100644 index b4d50f5b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-key.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-language.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-language.svg deleted file mode 100644 index 41570fea..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-language.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lifebuoy.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lifebuoy.svg deleted file mode 100644 index 2876a9c1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lifebuoy.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-light-bulb.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-light-bulb.svg deleted file mode 100644 index 414cbf08..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-light-bulb.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-link.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-link.svg deleted file mode 100644 index 0c0509b0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-link.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-list-bullet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-list-bullet.svg deleted file mode 100644 index 15b29ca2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-list-bullet.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lock-closed.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lock-closed.svg deleted file mode 100644 index 08ff1148..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lock-closed.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lock-open.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lock-open.svg deleted file mode 100644 index 1fde51ed..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-lock-open.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-circle.svg deleted file mode 100644 index eb482b3a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-circle.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-minus.svg deleted file mode 100644 index b63c1a66..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-minus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-plus.svg deleted file mode 100644 index 3a896f46..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass.svg deleted file mode 100644 index 49657ffa..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-magnifying-glass.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-map-pin.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-map-pin.svg deleted file mode 100644 index 15e9fffd..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-map-pin.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-map.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-map.svg deleted file mode 100644 index c8b9dbd8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-map.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-megaphone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-megaphone.svg deleted file mode 100644 index 8d250a4f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-megaphone.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-microphone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-microphone.svg deleted file mode 100644 index db719bef..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-microphone.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus-circle.svg deleted file mode 100644 index 4848ae51..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus-small.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus-small.svg deleted file mode 100644 index 0c984301..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus-small.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus.svg deleted file mode 100644 index f0853c46..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-minus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-moon.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-moon.svg deleted file mode 100644 index 21421e17..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-moon.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-musical-note.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-musical-note.svg deleted file mode 100644 index 2647ae2d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-musical-note.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-newspaper.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-newspaper.svg deleted file mode 100644 index dd093eba..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-newspaper.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-no-symbol.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-no-symbol.svg deleted file mode 100644 index 214f8d00..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-no-symbol.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paint-brush.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paint-brush.svg deleted file mode 100644 index fd66d604..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paint-brush.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paper-airplane.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paper-airplane.svg deleted file mode 100644 index fe0dba26..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paper-airplane.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paper-clip.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paper-clip.svg deleted file mode 100644 index 7b84732e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-paper-clip.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pause-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pause-circle.svg deleted file mode 100644 index 39d5c9b0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pause-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pause.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pause.svg deleted file mode 100644 index 58b58c52..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pause.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pencil-square.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pencil-square.svg deleted file mode 100644 index 05f70cfd..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pencil-square.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pencil.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pencil.svg deleted file mode 100644 index 4b9897a7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-pencil.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-arrow-down-left.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-arrow-down-left.svg deleted file mode 100644 index ccba05f9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-arrow-down-left.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-arrow-up-right.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-arrow-up-right.svg deleted file mode 100644 index 8aff3e81..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-arrow-up-right.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-x-mark.svg deleted file mode 100644 index 2858b736..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone-x-mark.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone.svg deleted file mode 100644 index 2e9b05a2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-phone.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-photo.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-photo.svg deleted file mode 100644 index bb42a4d8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-photo.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play-circle.svg deleted file mode 100644 index d6a90c57..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play-pause.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play-pause.svg deleted file mode 100644 index 088f26ad..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play-pause.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play.svg deleted file mode 100644 index d177bab0..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-play.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus-circle.svg deleted file mode 100644 index 8e2d74d9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus-small.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus-small.svg deleted file mode 100644 index 18096b90..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus-small.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus.svg deleted file mode 100644 index 3d22cdd2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-power.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-power.svg deleted file mode 100644 index ec3eb816..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-power.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-presentation-chart-bar.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-presentation-chart-bar.svg deleted file mode 100644 index 637b71e9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-presentation-chart-bar.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-presentation-chart-line.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-presentation-chart-line.svg deleted file mode 100644 index 6ebdcef4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-presentation-chart-line.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-printer.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-printer.svg deleted file mode 100644 index eb04c858..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-printer.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-puzzle-piece.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-puzzle-piece.svg deleted file mode 100644 index e5196782..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-puzzle-piece.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-qr-code.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-qr-code.svg deleted file mode 100644 index 6be372ef..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-qr-code.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-question-mark-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-question-mark-circle.svg deleted file mode 100644 index 94150f12..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-question-mark-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-queue-list.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-queue-list.svg deleted file mode 100644 index 7f45d2f2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-queue-list.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-radio.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-radio.svg deleted file mode 100644 index aab76e8f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-radio.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-receipt-percent.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-receipt-percent.svg deleted file mode 100644 index 319028f7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-receipt-percent.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-receipt-refund.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-receipt-refund.svg deleted file mode 100644 index c48dd03a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-receipt-refund.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rectangle-group.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rectangle-group.svg deleted file mode 100644 index fb09df7d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rectangle-group.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rectangle-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rectangle-stack.svg deleted file mode 100644 index c505e47a..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rectangle-stack.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rocket-launch.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rocket-launch.svg deleted file mode 100644 index 05716602..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rocket-launch.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rss.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rss.svg deleted file mode 100644 index d44d0017..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-rss.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-scale.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-scale.svg deleted file mode 100644 index 2287acea..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-scale.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-scissors.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-scissors.svg deleted file mode 100644 index 33d2770f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-scissors.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-server-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-server-stack.svg deleted file mode 100644 index 9d9ee199..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-server-stack.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-server.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-server.svg deleted file mode 100644 index ea22cde1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-server.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-share.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-share.svg deleted file mode 100644 index aecf6a3e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-share.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shield-check.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shield-check.svg deleted file mode 100644 index 7a746012..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shield-check.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shield-exclamation.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shield-exclamation.svg deleted file mode 100644 index 94dd9960..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shield-exclamation.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shopping-bag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shopping-bag.svg deleted file mode 100644 index 87a0e41e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shopping-bag.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shopping-cart.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shopping-cart.svg deleted file mode 100644 index 43f86023..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-shopping-cart.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-signal-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-signal-slash.svg deleted file mode 100644 index ee7bc2c7..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-signal-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-signal.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-signal.svg deleted file mode 100644 index 6034aecb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-signal.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-sparkles.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-sparkles.svg deleted file mode 100644 index 9c38acee..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-sparkles.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-speaker-wave.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-speaker-wave.svg deleted file mode 100644 index 23661209..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-speaker-wave.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-speaker-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-speaker-x-mark.svg deleted file mode 100644 index 47637aa5..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-speaker-x-mark.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-square-2-stack.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-square-2-stack.svg deleted file mode 100644 index 4bbdc7ee..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-square-2-stack.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-square-3-stack-3d.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-square-3-stack-3d.svg deleted file mode 100644 index 50c33a94..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-square-3-stack-3d.svg +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-squares-2x2.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-squares-2x2.svg deleted file mode 100644 index 84651b9f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-squares-2x2.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-squares-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-squares-plus.svg deleted file mode 100644 index f5b9779b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-squares-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-star.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-star.svg deleted file mode 100644 index 875d16f4..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-star.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-stop-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-stop-circle.svg deleted file mode 100644 index a2d87ea2..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-stop-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-stop.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-stop.svg deleted file mode 100644 index 56cdb3e3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-stop.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-sun.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-sun.svg deleted file mode 100644 index afca1bd8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-sun.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-swatch.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-swatch.svg deleted file mode 100644 index 404c0bb9..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-swatch.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-table-cells.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-table-cells.svg deleted file mode 100644 index da3bcafe..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-table-cells.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-tag.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-tag.svg deleted file mode 100644 index 2969e324..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-tag.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ticket.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ticket.svg deleted file mode 100644 index 1bb654ca..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-ticket.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-trash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-trash.svg deleted file mode 100644 index 8791a17f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-trash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-trophy.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-trophy.svg deleted file mode 100644 index f8a5c8ca..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-trophy.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-truck.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-truck.svg deleted file mode 100644 index c919e588..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-truck.svg +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-tv.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-tv.svg deleted file mode 100644 index 2b33fba1..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-tv.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-circle.svg deleted file mode 100644 index 26bc7ff8..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-group.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-group.svg deleted file mode 100644 index 36c5e38b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-group.svg +++ /dev/null @@ -1,4 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-minus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-minus.svg deleted file mode 100644 index 4fedc83f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-minus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-plus.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-plus.svg deleted file mode 100644 index eabe7c7e..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user-plus.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user.svg deleted file mode 100644 index 194979bb..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-user.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-users.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-users.svg deleted file mode 100644 index d098e726..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-users.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-variable.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-variable.svg deleted file mode 100644 index 922baf0f..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-variable.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-video-camera-slash.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-video-camera-slash.svg deleted file mode 100644 index 96ef4018..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-video-camera-slash.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-video-camera.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-video-camera.svg deleted file mode 100644 index 7749fcdf..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-video-camera.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-view-columns.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-view-columns.svg deleted file mode 100644 index 352e81a3..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-view-columns.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-viewfinder-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-viewfinder-circle.svg deleted file mode 100644 index fc68de6b..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-viewfinder-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wallet.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wallet.svg deleted file mode 100644 index 57b676ae..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wallet.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wifi.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wifi.svg deleted file mode 100644 index b05d4872..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wifi.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-window.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-window.svg deleted file mode 100644 index 0f683fbf..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-window.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wrench-screwdriver.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wrench-screwdriver.svg deleted file mode 100644 index bb691b9c..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wrench-screwdriver.svg +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wrench.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wrench.svg deleted file mode 100644 index 7ad17c82..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-wrench.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-x-circle.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-x-circle.svg deleted file mode 100644 index d510ee1d..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-x-circle.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-x-mark.svg b/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-x-mark.svg deleted file mode 100644 index 5561f006..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/resources/svg/s-x-mark.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/blade-ui-kit/blade-heroicons/src/BladeHeroiconsServiceProvider.php b/vendor/blade-ui-kit/blade-heroicons/src/BladeHeroiconsServiceProvider.php deleted file mode 100644 index 42094965..00000000 --- a/vendor/blade-ui-kit/blade-heroicons/src/BladeHeroiconsServiceProvider.php +++ /dev/null @@ -1,41 +0,0 @@ -registerConfig(); - - $this->callAfterResolving(Factory::class, function (Factory $factory, Container $container) { - $config = $container->make('config')->get('blade-heroicons', []); - - $factory->add('heroicons', array_merge(['path' => __DIR__.'/../resources/svg'], $config)); - }); - } - - private function registerConfig(): void - { - $this->mergeConfigFrom(__DIR__.'/../config/blade-heroicons.php', 'blade-heroicons'); - } - - public function boot(): void - { - if ($this->app->runningInConsole()) { - $this->publishes([ - __DIR__.'/../resources/svg' => public_path('vendor/blade-heroicons'), - ], 'blade-heroicons'); - - $this->publishes([ - __DIR__.'/../config/blade-heroicons.php' => $this->app->configPath('blade-heroicons.php'), - ], 'blade-heroicons-config'); - } - } -} diff --git a/vendor/blade-ui-kit/blade-icons/LICENSE.md b/vendor/blade-ui-kit/blade-icons/LICENSE.md deleted file mode 100644 index 669220b5..00000000 --- a/vendor/blade-ui-kit/blade-icons/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Dries Vints - -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/vendor/blade-ui-kit/blade-icons/bin/blade-icons-generate b/vendor/blade-ui-kit/blade-icons/bin/blade-icons-generate deleted file mode 100755 index 0777467e..00000000 --- a/vendor/blade-ui-kit/blade-icons/bin/blade-icons-generate +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env php -setCode(function (InputInterface $input, OutputInterface $output) { - $output->writeln("Starting to generate icons..."); - - IconGenerator::create( - require getcwd().'/config/generation.php' - )->generate(); - - $output->writeln("Finished generating icons!"); - - return Command::SUCCESS; -})->run(); diff --git a/vendor/blade-ui-kit/blade-icons/composer.json b/vendor/blade-ui-kit/blade-icons/composer.json deleted file mode 100644 index 8f584891..00000000 --- a/vendor/blade-ui-kit/blade-icons/composer.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "blade-ui-kit/blade-icons", - "description": "A package to easily make use of icons in your Laravel Blade views.", - "keywords": ["Blade", "Icons", "Laravel", "SVG"], - "homepage": "https://github.com/blade-ui-kit/blade-icons", - "license": "MIT", - "support": { - "issues": "https://github.com/blade-ui-kit/blade-icons/issues", - "source": "https://github.com/blade-ui-kit/blade-icons" - }, - "authors": [ - { - "name": "Dries Vints", - "homepage": "https://driesvints.com" - } - ], - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/driesvints" - }, - { - "type": "paypal", - "url": "https://www.paypal.com/paypalme/driesvints" - } - ], - "require": { - "php": "^7.4|^8.0", - "illuminate/contracts": "^8.0|^9.0|^10.0", - "illuminate/filesystem": "^8.0|^9.0|^10.0", - "illuminate/support": "^8.0|^9.0|^10.0", - "illuminate/view": "^8.0|^9.0|^10.0", - "symfony/console": "^5.3|^6.0", - "symfony/finder": "^5.3|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.3", - "orchestra/testbench": "^6.0|^7.0|^8.0", - "phpunit/phpunit": "^9.0" - }, - "bin": [ - "bin/blade-icons-generate" - ], - "autoload": { - "psr-4": { - "BladeUI\\Icons\\": "src" - }, - "files": [ - "src/helpers.php" - ] - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests" - } - }, - "extra": { - "laravel": { - "providers": [ - "BladeUI\\Icons\\BladeIconsServiceProvider" - ] - } - }, - "config": { - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/vendor/blade-ui-kit/blade-icons/config/blade-icons.php b/vendor/blade-ui-kit/blade-icons/config/blade-icons.php deleted file mode 100644 index 5aade2a1..00000000 --- a/vendor/blade-ui-kit/blade-icons/config/blade-icons.php +++ /dev/null @@ -1,183 +0,0 @@ - [ - - // 'default' => [ - // - // /* - // |----------------------------------------------------------------- - // | Icons Path - // |----------------------------------------------------------------- - // | - // | Provide the relative path from your app root to your SVG icons - // | directory. Icons are loaded recursively so there's no need to - // | list every sub-directory. - // | - // | Relative to the disk root when the disk option is set. - // | - // */ - // - // 'path' => 'resources/svg', - // - // /* - // |----------------------------------------------------------------- - // | Filesystem Disk - // |----------------------------------------------------------------- - // | - // | Optionally, provide a specific filesystem disk to read - // | icons from. When defining a disk, the "path" option - // | starts relatively from the disk root. - // | - // */ - // - // 'disk' => '', - // - // /* - // |----------------------------------------------------------------- - // | Default Prefix - // |----------------------------------------------------------------- - // | - // | This config option allows you to define a default prefix for - // | your icons. The dash separator will be applied automatically - // | to every icon name. It's required and needs to be unique. - // | - // */ - // - // 'prefix' => 'icon', - // - // /* - // |----------------------------------------------------------------- - // | Fallback Icon - // |----------------------------------------------------------------- - // | - // | This config option allows you to define a fallback - // | icon when an icon in this set cannot be found. - // | - // */ - // - // 'fallback' => '', - // - // /* - // |----------------------------------------------------------------- - // | Default Set Classes - // |----------------------------------------------------------------- - // | - // | This config option allows you to define some classes which - // | will be applied by default to all icons within this set. - // | - // */ - // - // 'class' => '', - // - // /* - // |----------------------------------------------------------------- - // | Default Set Attributes - // |----------------------------------------------------------------- - // | - // | This config option allows you to define some attributes which - // | will be applied by default to all icons within this set. - // | - // */ - // - // 'attributes' => [ - // // 'width' => 50, - // // 'height' => 50, - // ], - // - // ], - - ], - - /* - |-------------------------------------------------------------------------- - | Global Default Classes - |-------------------------------------------------------------------------- - | - | This config option allows you to define some classes which - | will be applied by default to all icons. - | - */ - - 'class' => '', - - /* - |-------------------------------------------------------------------------- - | Global Default Attributes - |-------------------------------------------------------------------------- - | - | This config option allows you to define some attributes which - | will be applied by default to all icons. - | - */ - - 'attributes' => [ - // 'width' => 50, - // 'height' => 50, - ], - - /* - |-------------------------------------------------------------------------- - | Global Fallback Icon - |-------------------------------------------------------------------------- - | - | This config option allows you to define a global fallback - | icon when an icon in any set cannot be found. It can - | reference any icon from any configured set. - | - */ - - 'fallback' => '', - - /* - |-------------------------------------------------------------------------- - | Components - |-------------------------------------------------------------------------- - | - | These config options allow you to define some - | settings related to Blade Components. - | - */ - - 'components' => [ - - /* - |---------------------------------------------------------------------- - | Disable Components - |---------------------------------------------------------------------- - | - | This config option allows you to disable Blade components - | completely. It's useful to avoid performance problems - | when working with large icon libraries. - | - */ - - 'disabled' => false, - - /* - |---------------------------------------------------------------------- - | Default Icon Component Name - |---------------------------------------------------------------------- - | - | This config option allows you to define the name - | for the default Icon class component. - | - */ - - 'default' => 'icon', - - ], - -]; diff --git a/vendor/blade-ui-kit/blade-icons/pint.json b/vendor/blade-ui-kit/blade-icons/pint.json deleted file mode 100644 index 94b6307b..00000000 --- a/vendor/blade-ui-kit/blade-icons/pint.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "notPath": [ - "tests/fixtures/blade-icons.php", - "tests/fixtures/generated-manifest.php" - ] -} diff --git a/vendor/blade-ui-kit/blade-icons/src/BladeIconsServiceProvider.php b/vendor/blade-ui-kit/blade-icons/src/BladeIconsServiceProvider.php deleted file mode 100644 index c525b312..00000000 --- a/vendor/blade-ui-kit/blade-icons/src/BladeIconsServiceProvider.php +++ /dev/null @@ -1,116 +0,0 @@ -registerConfig(); - $this->registerFactory(); - $this->registerManifest(); - } - - public function boot(): void - { - $this->bootCommands(); - $this->bootDirectives(); - $this->bootIconComponent(); - $this->bootPublishing(); - } - - private function registerConfig(): void - { - $this->mergeConfigFrom(__DIR__.'/../config/blade-icons.php', 'blade-icons'); - } - - private function registerFactory(): void - { - $this->app->singleton(Factory::class, function (Application $app) { - $config = $app->make('config')->get('blade-icons', []); - - $factory = new Factory( - new Filesystem(), - $app->make(IconsManifest::class), - $app->make(FilesystemFactory::class), - $config, - ); - - foreach ($config['sets'] ?? [] as $set => $options) { - if (! isset($options['disk']) || ! $options['disk']) { - $paths = $options['paths'] ?? $options['path'] ?? []; - - $options['paths'] = array_map( - fn ($path) => $app->basePath($path), - (array) $paths, - ); - } - - $factory->add($set, $options); - } - - return $factory; - }); - - $this->callAfterResolving(ViewFactory::class, function ($view, Application $app) { - $app->make(Factory::class)->registerComponents(); - }); - } - - private function registerManifest(): void - { - $this->app->singleton(IconsManifest::class, function (Application $app) { - return new IconsManifest( - new Filesystem(), - $this->manifestPath(), - $app->make(FilesystemFactory::class), - ); - }); - } - - private function manifestPath(): string - { - return $this->app->bootstrapPath('cache/blade-icons.php'); - } - - private function bootCommands(): void - { - if ($this->app->runningInConsole()) { - $this->commands([ - Console\CacheCommand::class, - Console\ClearCommand::class, - ]); - } - } - - private function bootDirectives(): void - { - Blade::directive('svg', fn ($expression) => ""); - } - - private function bootIconComponent(): void - { - if ($name = config('blade-icons.components.default')) { - Blade::component($name, Icon::class); - } - } - - private function bootPublishing(): void - { - if ($this->app->runningInConsole()) { - $this->publishes([ - __DIR__.'/../config/blade-icons.php' => $this->app->configPath('blade-icons.php'), - ], 'blade-icons'); - } - } -} diff --git a/vendor/blade-ui-kit/blade-icons/src/Components/Icon.php b/vendor/blade-ui-kit/blade-icons/src/Components/Icon.php deleted file mode 100644 index c09da9a6..00000000 --- a/vendor/blade-ui-kit/blade-icons/src/Components/Icon.php +++ /dev/null @@ -1,31 +0,0 @@ -name = $name; - } - - public function render(): Closure - { - return function (array $data) { - $attributes = $data['attributes']->getIterator()->getArrayCopy(); - - $class = $attributes['class'] ?? ''; - - unset($attributes['class']); - - return svg($this->name, $class, $attributes)->toHtml(); - }; - } -} diff --git a/vendor/blade-ui-kit/blade-icons/src/Components/Svg.php b/vendor/blade-ui-kit/blade-icons/src/Components/Svg.php deleted file mode 100644 index c9c34f61..00000000 --- a/vendor/blade-ui-kit/blade-icons/src/Components/Svg.php +++ /dev/null @@ -1,24 +0,0 @@ -getIterator()->getArrayCopy(); - - $class = $attributes['class'] ?? ''; - - unset($attributes['class']); - - return svg($this->componentName, $class, $attributes)->toHtml(); - }; - } -} diff --git a/vendor/blade-ui-kit/blade-icons/src/Concerns/RendersAttributes.php b/vendor/blade-ui-kit/blade-icons/src/Concerns/RendersAttributes.php deleted file mode 100644 index 19abb0e6..00000000 --- a/vendor/blade-ui-kit/blade-icons/src/Concerns/RendersAttributes.php +++ /dev/null @@ -1,43 +0,0 @@ -attributes; - } - - private function renderAttributes(): string - { - if (count($this->attributes) == 0) { - return ''; - } - - return ' '.collect($this->attributes)->map(function (string $value, $attribute) { - if (is_int($attribute)) { - return $value; - } - - return sprintf('%s="%s"', $attribute, $value); - })->implode(' '); - } - - public function __call(string $method, array $arguments): self - { - if (count($arguments) === 0) { - $this->attributes[] = Str::snake($method, '-'); - } else { - $this->attributes[Str::snake($method, '-')] = $arguments[0]; - } - - return $this; - } -} diff --git a/vendor/blade-ui-kit/blade-icons/src/Console/CacheCommand.php b/vendor/blade-ui-kit/blade-icons/src/Console/CacheCommand.php deleted file mode 100644 index 608b1853..00000000 --- a/vendor/blade-ui-kit/blade-icons/src/Console/CacheCommand.php +++ /dev/null @@ -1,35 +0,0 @@ -write($factory->all()); - - $this->info('Blade icons manifest file generated successfully!'); - - return 0; - } -} diff --git a/vendor/blade-ui-kit/blade-icons/src/Console/ClearCommand.php b/vendor/blade-ui-kit/blade-icons/src/Console/ClearCommand.php deleted file mode 100644 index 6cc07071..00000000 --- a/vendor/blade-ui-kit/blade-icons/src/Console/ClearCommand.php +++ /dev/null @@ -1,34 +0,0 @@ -delete(); - - $this->info('Blade icons manifest file cleared!'); - - return 0; - } -} diff --git a/vendor/blade-ui-kit/blade-icons/src/Exceptions/CannotRegisterIconSet.php b/vendor/blade-ui-kit/blade-icons/src/Exceptions/CannotRegisterIconSet.php deleted file mode 100644 index 3158a8a2..00000000 --- a/vendor/blade-ui-kit/blade-icons/src/Exceptions/CannotRegisterIconSet.php +++ /dev/null @@ -1,30 +0,0 @@ -filesystem = $filesystem; - $this->manifest = $manifest; - $this->disks = $disks; - $this->config = $config; - - $this->config['class'] = $config['class'] ?? ''; - $this->config['attributes'] = (array) ($config['attributes'] ?? []); - $this->config['fallback'] = $config['fallback'] ?? ''; - $this->config['components'] = [ - 'disabled' => $config['components']['disabled'] ?? false, - 'default' => $config['components']['default'] ?? 'icon', - ]; - } - - /** - * @internal This method is only meant for internal purposes and does not fall under the package's BC promise. - */ - public function all(): array - { - return $this->sets; - } - - /** - * @throws CannotRegisterIconSet - */ - public function add(string $set, array $options): self - { - if (! isset($options['prefix'])) { - throw CannotRegisterIconSet::prefixNotDefined($set); - } - - if ($collidingSet = $this->getSetByPrefix($options['prefix'])) { - throw CannotRegisterIconSet::prefixNotUnique($set, $collidingSet); - } - - $paths = (array) ($options['paths'] ?? $options['path'] ?? []); - - $options['paths'] = array_filter(array_map( - fn ($path) => $path !== '/' ? rtrim($path, '/') : $path, - $paths, - )); - - if (empty($options['paths'])) { - throw CannotRegisterIconSet::pathsNotDefined($set); - } - - unset($options['path']); - - $filesystem = $this->filesystem($options['disk'] ?? null); - - foreach ($options['paths'] as $path) { - if ($path !== '/' && $filesystem->missing($path)) { - throw CannotRegisterIconSet::nonExistingPath($set, $path); - } - } - - $this->sets[$set] = $options; - - $this->cache = []; - - return $this; - } - - public function registerComponents(): void - { - if ($this->config['components']['disabled']) { - return; - } - - foreach ($this->manifest->getManifest($this->sets) as $set => $paths) { - foreach ($paths as $icons) { - foreach ($icons as $icon) { - Blade::component( - SvgComponent::class, - $icon, - $this->sets[$set]['prefix'] ?? '', - ); - } - } - } - } - - /** - * @throws SvgNotFound - */ - public function svg(string $name, $class = '', array $attributes = []): Svg - { - [$set, $name] = $this->splitSetAndName($name); - - try { - return new Svg( - $name, - $this->contents($set, $name), - $this->formatAttributes($set, $class, $attributes), - ); - } catch (SvgNotFound $exception) { - if (isset($this->sets[$set]['fallback']) && $this->sets[$set]['fallback'] !== '') { - $name = $this->sets[$set]['fallback']; - - try { - return new Svg( - $name, - $this->contents($set, $name), - $this->formatAttributes($set, $class, $attributes), - ); - } catch (SvgNotFound $exception) { - // - } - } - - if ($this->config['fallback']) { - return $this->svg($this->config['fallback'], $class, $attributes); - } - - throw $exception; - } - } - - /** - * @throws SvgNotFound - */ - private function contents(string $set, string $name): string - { - if (isset($this->cache[$set][$name])) { - return $this->cache[$set][$name]; - } - - if (isset($this->sets[$set])) { - foreach ($this->sets[$set]['paths'] as $path) { - try { - return $this->cache[$set][$name] = $this->getSvgFromPath( - $name, - $path, - $this->sets[$set]['disk'] ?? null, - ); - } catch (FileNotFoundException $exception) { - // - } - } - } - - throw SvgNotFound::missing($set, $name); - } - - private function getSvgFromPath(string $name, string $path, string $disk = null): string - { - $contents = trim($this->filesystem($disk)->get(sprintf( - '%s/%s.svg', - rtrim($path), - str_replace('.', '/', $name), - ))); - - return $this->cleanSvgContents($contents); - } - - private function cleanSvgContents(string $contents): string - { - return trim(preg_replace('/^(<\?xml.+?\?>)/', '', $contents)); - } - - private function splitSetAndName(string $name): array - { - $prefix = Str::before($name, '-'); - - $set = $this->getSetByPrefix($prefix); - - $name = $set ? Str::after($name, '-') : $name; - - return [$set ?? 'default', $name]; - } - - private function getSetByPrefix(string $prefix): ?string - { - return collect($this->sets)->where('prefix', $prefix)->keys()->first(); - } - - private function formatAttributes(string $set, $class = '', array $attributes = []): array - { - if (is_string($class)) { - if ($class = $this->buildClass($set, $class)) { - $attributes['class'] = $attributes['class'] ?? $class; - } - } elseif (is_array($class)) { - $attributes = $class; - - if (! isset($attributes['class']) && $class = $this->buildClass($set, '')) { - $attributes['class'] = $class; - } - } - - $attributes = array_merge( - $this->config['attributes'], - (array) ($this->sets[$set]['attributes'] ?? []), - $attributes, - ); - - foreach ($attributes as $key => $value) { - if (is_string($value)) { - $attributes[$key] = str_replace('"', '"', $value); - } - } - - return $attributes; - } - - private function buildClass(string $set, string $class): string - { - return trim(sprintf( - '%s %s', - trim(sprintf('%s %s', $this->config['class'], $this->sets[$set]['class'] ?? '')), - $class, - )); - } - - /** - * @return \Illuminate\Contracts\Filesystem\Filesystem|Filesystem - */ - private function filesystem(string $disk = null) - { - return $this->disks && $disk ? $this->disks->disk($disk) : $this->filesystem; - } -} diff --git a/vendor/blade-ui-kit/blade-icons/src/Generation/IconGenerator.php b/vendor/blade-ui-kit/blade-icons/src/Generation/IconGenerator.php deleted file mode 100644 index 819e5ee6..00000000 --- a/vendor/blade-ui-kit/blade-icons/src/Generation/IconGenerator.php +++ /dev/null @@ -1,92 +0,0 @@ -filesystem = new Filesystem(); - $this->sets = $sets; - } - - public static function create(array $config): self - { - return new self($config); - } - - public function generate(): void - { - foreach ($this->sets as $set) { - $destination = $this->getDestinationDirectory($set); - $files = array_filter( - $this->filesystem->files($set['source']), - fn (SplFileInfo $value) => str_ends_with($value->getFilename(), '.svg') - ); - - foreach ($files as $file) { - $filename = Str::of($file->getFilename()); - $filename = $this->applyPrefixes($set, $filename); - $filename = $this->applySuffixes($set, $filename); - $pathname = $destination.$filename; - - $this->filesystem->copy($file->getRealPath(), $pathname); - - if (is_callable($set['after'] ?? null)) { - $set['after']($pathname, $set, $file); - } - } - } - } - - private function getDestinationDirectory(array $set): string - { - $destination = Str::finish($set['destination'], DIRECTORY_SEPARATOR); - - if (! Arr::get($set, 'safe', false)) { - $this->filesystem->deleteDirectory($destination); - } - - $this->filesystem->ensureDirectoryExists($destination); - - return $destination; - } - - private function applyPrefixes($set, Stringable $filename): Stringable - { - if ($set['input-prefix'] ?? false) { - $filename = $filename->after($set['input-prefix']); - } - - if ($set['output-prefix'] ?? false) { - $filename = $filename->prepend($set['output-prefix']); - } - - return $filename; - } - - private function applySuffixes($set, Stringable $filename): Stringable - { - if ($set['input-suffix'] ?? false) { - $filename = $filename->replace($set['input-suffix'].'.svg', '.svg'); - } - - if ($set['output-suffix'] ?? false) { - $filename = $filename->replace('.svg', $set['output-suffix'].'.svg'); - } - - return $filename; - } -} diff --git a/vendor/blade-ui-kit/blade-icons/src/IconsManifest.php b/vendor/blade-ui-kit/blade-icons/src/IconsManifest.php deleted file mode 100644 index f93a6bc7..00000000 --- a/vendor/blade-ui-kit/blade-icons/src/IconsManifest.php +++ /dev/null @@ -1,113 +0,0 @@ -filesystem = $filesystem; - $this->manifestPath = $manifestPath; - $this->disks = $disks; - } - - private function build(array $sets): array - { - $compiled = []; - - foreach ($sets as $name => $set) { - $icons = []; - - foreach ($set['paths'] as $path) { - $icons[$path] = []; - - foreach ($this->filesystem($set['disk'] ?? null)->allFiles($path) as $file) { - if ($file instanceof SplFileInfo) { - if ($file->getExtension() !== 'svg') { - continue; - } - - $icons[$path][] = $this->format($file->getPathName(), $path); - } else { - if (! Str::endsWith($file, '.svg')) { - continue; - } - - $icons[$path][] = $this->format($file, $path); - } - } - - $icons[$path] = array_unique($icons[$path]); - } - - $compiled[$name] = array_filter($icons); - } - - return $compiled; - } - - /** - * @return \Illuminate\Contracts\Filesystem\Filesystem|Filesystem - */ - private function filesystem(string $disk = null) - { - return $this->disks && $disk ? $this->disks->disk($disk) : $this->filesystem; - } - - public function delete(): bool - { - return $this->filesystem->delete($this->manifestPath); - } - - private function format(string $pathname, string $path): string - { - return (string) Str::of($pathname) - ->after($path.DIRECTORY_SEPARATOR) - ->replace(DIRECTORY_SEPARATOR, '.') - ->basename('.svg'); - } - - public function getManifest(array $sets): array - { - if (! is_null($this->manifest)) { - return $this->manifest; - } - - if (! $this->filesystem->exists($this->manifestPath)) { - return $this->manifest = $this->build($sets); - } - - return $this->manifest = $this->filesystem->getRequire($this->manifestPath); - } - - /** - * @throws Exception - */ - public function write(array $sets): void - { - if (! is_writable($dirname = dirname($this->manifestPath))) { - throw new Exception("The {$dirname} directory must be present and writable."); - } - - $this->filesystem->replace( - $this->manifestPath, - 'build($sets), true).';', - ); - } -} diff --git a/vendor/blade-ui-kit/blade-icons/src/Svg.php b/vendor/blade-ui-kit/blade-icons/src/Svg.php deleted file mode 100644 index 636246b1..00000000 --- a/vendor/blade-ui-kit/blade-icons/src/Svg.php +++ /dev/null @@ -1,73 +0,0 @@ -name = $name; - $this->contents = $this->deferContent($contents, $attributes['defer'] ?? false); - - unset($attributes['defer']); - - $this->attributes = $attributes; - } - - public function name(): string - { - return $this->name; - } - - public function contents(): string - { - return $this->contents; - } - - public function toHtml(): string - { - return str_replace( - 'renderAttributes()), - $this->contents, - ); - } - - protected function deferContent(string $contents, $defer = false): string - { - if ($defer === false) { - return $contents; - } - - $svgContent = strip_tags($contents, ['circle', 'ellipse', 'line', 'path', 'polygon', 'polyline', 'rect', 'g', 'mask', 'defs', 'use']); - - // Force Unix line endings for hash. - $hashContent = str_replace(PHP_EOL, "\n", $svgContent); - $hash = 'icon-'.(is_string($defer) ? $defer : md5($hashContent)); - - $contents = str_replace($svgContent, strtr('', [':href' => '#'.$hash]), $contents).PHP_EOL; - $svgContent = ltrim($svgContent, PHP_EOL); - $contents .= << - {$svgContent} - - @endpush - @endonce - BLADE; - - return $contents; - } -} diff --git a/vendor/blade-ui-kit/blade-icons/src/helpers.php b/vendor/blade-ui-kit/blade-icons/src/helpers.php deleted file mode 100644 index 08c405ec..00000000 --- a/vendor/blade-ui-kit/blade-icons/src/helpers.php +++ /dev/null @@ -1,13 +0,0 @@ -svg($name, $class, $attributes); - } -} diff --git a/vendor/brick/math/CHANGELOG.md b/vendor/brick/math/CHANGELOG.md deleted file mode 100644 index 17cea8d9..00000000 --- a/vendor/brick/math/CHANGELOG.md +++ /dev/null @@ -1,445 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -## [0.11.0](https://github.com/brick/math/releases/tag/0.11.0) - 2023-01-16 - -💥 **Breaking changes** - -- Minimum PHP version is now 8.0 -- Methods accepting a union of types are now strongly typed* -- `MathException` now extends `Exception` instead of `RuntimeException` - -* You may now run into type errors if you were passing `Stringable` objects to `of()` or any of the methods -internally calling `of()`, with `strict_types` enabled. You can fix this by casting `Stringable` objects to `string` -first. - -## [0.10.2](https://github.com/brick/math/releases/tag/0.10.2) - 2022-08-11 - -👌 **Improvements** - -- `BigRational::toFloat()` now simplifies the fraction before performing division (#73) thanks to @olsavmic - -## [0.10.1](https://github.com/brick/math/releases/tag/0.10.1) - 2022-08-02 - -✨ **New features** - -- `BigInteger::gcdMultiple()` returns the GCD of multiple `BigInteger` numbers - -## [0.10.0](https://github.com/brick/math/releases/tag/0.10.0) - 2022-06-18 - -💥 **Breaking changes** - -- Minimum PHP version is now 7.4 - -## [0.9.3](https://github.com/brick/math/releases/tag/0.9.3) - 2021-08-15 - -🚀 **Compatibility with PHP 8.1** - -- Support for custom object serialization; this removes a warning on PHP 8.1 due to the `Serializable` interface being deprecated (#60) thanks @TRowbotham - -## [0.9.2](https://github.com/brick/math/releases/tag/0.9.2) - 2021-01-20 - -🐛 **Bug fix** - -- Incorrect results could be returned when using the BCMath calculator, with a default scale set with `bcscale()`, on PHP >= 7.2 (#55). - -## [0.9.1](https://github.com/brick/math/releases/tag/0.9.1) - 2020-08-19 - -✨ **New features** - -- `BigInteger::not()` returns the bitwise `NOT` value - -🐛 **Bug fixes** - -- `BigInteger::toBytes()` could return an incorrect binary representation for some numbers -- The bitwise operations `and()`, `or()`, `xor()` on `BigInteger` could return an incorrect result when the GMP extension is not available - -## [0.9.0](https://github.com/brick/math/releases/tag/0.9.0) - 2020-08-18 - -👌 **Improvements** - -- `BigNumber::of()` now accepts `.123` and `123.` formats, both of which return a `BigDecimal` - -💥 **Breaking changes** - -- Deprecated method `BigInteger::powerMod()` has been removed - use `modPow()` instead -- Deprecated method `BigInteger::parse()` has been removed - use `fromBase()` instead - -## [0.8.17](https://github.com/brick/math/releases/tag/0.8.17) - 2020-08-19 - -🐛 **Bug fix** - -- `BigInteger::toBytes()` could return an incorrect binary representation for some numbers -- The bitwise operations `and()`, `or()`, `xor()` on `BigInteger` could return an incorrect result when the GMP extension is not available - -## [0.8.16](https://github.com/brick/math/releases/tag/0.8.16) - 2020-08-18 - -🚑 **Critical fix** - -- This version reintroduces the deprecated `BigInteger::parse()` method, that has been removed by mistake in version `0.8.9` and should have lasted for the whole `0.8` release cycle. - -✨ **New features** - -- `BigInteger::modInverse()` calculates a modular multiplicative inverse -- `BigInteger::fromBytes()` creates a `BigInteger` from a byte string -- `BigInteger::toBytes()` converts a `BigInteger` to a byte string -- `BigInteger::randomBits()` creates a pseudo-random `BigInteger` of a given bit length -- `BigInteger::randomRange()` creates a pseudo-random `BigInteger` between two bounds - -💩 **Deprecations** - -- `BigInteger::powerMod()` is now deprecated in favour of `modPow()` - -## [0.8.15](https://github.com/brick/math/releases/tag/0.8.15) - 2020-04-15 - -🐛 **Fixes** - -- added missing `ext-json` requirement, due to `BigNumber` implementing `JsonSerializable` - -⚡️ **Optimizations** - -- additional optimization in `BigInteger::remainder()` - -## [0.8.14](https://github.com/brick/math/releases/tag/0.8.14) - 2020-02-18 - -✨ **New features** - -- `BigInteger::getLowestSetBit()` returns the index of the rightmost one bit - -## [0.8.13](https://github.com/brick/math/releases/tag/0.8.13) - 2020-02-16 - -✨ **New features** - -- `BigInteger::isEven()` tests whether the number is even -- `BigInteger::isOdd()` tests whether the number is odd -- `BigInteger::testBit()` tests if a bit is set -- `BigInteger::getBitLength()` returns the number of bits in the minimal representation of the number - -## [0.8.12](https://github.com/brick/math/releases/tag/0.8.12) - 2020-02-03 - -🛠️ **Maintenance release** - -Classes are now annotated for better static analysis with [psalm](https://psalm.dev/). - -This is a maintenance release: no bug fixes, no new features, no breaking changes. - -## [0.8.11](https://github.com/brick/math/releases/tag/0.8.11) - 2020-01-23 - -✨ **New feature** - -`BigInteger::powerMod()` performs a power-with-modulo operation. Useful for crypto. - -## [0.8.10](https://github.com/brick/math/releases/tag/0.8.10) - 2020-01-21 - -✨ **New feature** - -`BigInteger::mod()` returns the **modulo** of two numbers. The *modulo* differs from the *remainder* when the signs of the operands are different. - -## [0.8.9](https://github.com/brick/math/releases/tag/0.8.9) - 2020-01-08 - -⚡️ **Performance improvements** - -A few additional optimizations in `BigInteger` and `BigDecimal` when one of the operands can be returned as is. Thanks to @tomtomsen in #24. - -## [0.8.8](https://github.com/brick/math/releases/tag/0.8.8) - 2019-04-25 - -🐛 **Bug fixes** - -- `BigInteger::toBase()` could return an empty string for zero values (BCMath & Native calculators only, GMP calculator unaffected) - -✨ **New features** - -- `BigInteger::toArbitraryBase()` converts a number to an arbitrary base, using a custom alphabet -- `BigInteger::fromArbitraryBase()` converts a string in an arbitrary base, using a custom alphabet, back to a number - -These methods can be used as the foundation to convert strings between different bases/alphabets, using BigInteger as an intermediate representation. - -💩 **Deprecations** - -- `BigInteger::parse()` is now deprecated in favour of `fromBase()` - -`BigInteger::fromBase()` works the same way as `parse()`, with 2 minor differences: - -- the `$base` parameter is required, it does not default to `10` -- it throws a `NumberFormatException` instead of an `InvalidArgumentException` when the number is malformed - -## [0.8.7](https://github.com/brick/math/releases/tag/0.8.7) - 2019-04-20 - -**Improvements** - -- Safer conversion from `float` when using custom locales -- **Much faster** `NativeCalculator` implementation 🚀 - -You can expect **at least a 3x performance improvement** for common arithmetic operations when using the library on systems without GMP or BCMath; it gets exponentially faster on multiplications with a high number of digits. This is due to calculations now being performed on whole blocks of digits (the block size depending on the platform, 32-bit or 64-bit) instead of digit-by-digit as before. - -## [0.8.6](https://github.com/brick/math/releases/tag/0.8.6) - 2019-04-11 - -**New method** - -`BigNumber::sum()` returns the sum of one or more numbers. - -## [0.8.5](https://github.com/brick/math/releases/tag/0.8.5) - 2019-02-12 - -**Bug fix**: `of()` factory methods could fail when passing a `float` in environments using a `LC_NUMERIC` locale with a decimal separator other than `'.'` (#20). - -Thanks @manowark 👍 - -## [0.8.4](https://github.com/brick/math/releases/tag/0.8.4) - 2018-12-07 - -**New method** - -`BigDecimal::sqrt()` calculates the square root of a decimal number, to a given scale. - -## [0.8.3](https://github.com/brick/math/releases/tag/0.8.3) - 2018-12-06 - -**New method** - -`BigInteger::sqrt()` calculates the square root of a number (thanks @peter279k). - -**New exception** - -`NegativeNumberException` is thrown when calling `sqrt()` on a negative number. - -## [0.8.2](https://github.com/brick/math/releases/tag/0.8.2) - 2018-11-08 - -**Performance update** - -- Further improvement of `toInt()` performance -- `NativeCalculator` can now perform some multiplications more efficiently - -## [0.8.1](https://github.com/brick/math/releases/tag/0.8.1) - 2018-11-07 - -Performance optimization of `toInt()` methods. - -## [0.8.0](https://github.com/brick/math/releases/tag/0.8.0) - 2018-10-13 - -**Breaking changes** - -The following deprecated methods have been removed. Use the new method name instead: - -| Method removed | Replacement method | -| --- | --- | -| `BigDecimal::getIntegral()` | `BigDecimal::getIntegralPart()` | -| `BigDecimal::getFraction()` | `BigDecimal::getFractionalPart()` | - ---- - -**New features** - -`BigInteger` has been augmented with 5 new methods for bitwise operations: - -| New method | Description | -| --- | --- | -| `and()` | performs a bitwise `AND` operation on two numbers | -| `or()` | performs a bitwise `OR` operation on two numbers | -| `xor()` | performs a bitwise `XOR` operation on two numbers | -| `shiftedLeft()` | returns the number shifted left by a number of bits | -| `shiftedRight()` | returns the number shifted right by a number of bits | - -Thanks to @DASPRiD 👍 - -## [0.7.3](https://github.com/brick/math/releases/tag/0.7.3) - 2018-08-20 - -**New method:** `BigDecimal::hasNonZeroFractionalPart()` - -**Renamed/deprecated methods:** - -- `BigDecimal::getIntegral()` has been renamed to `getIntegralPart()` and is now deprecated -- `BigDecimal::getFraction()` has been renamed to `getFractionalPart()` and is now deprecated - -## [0.7.2](https://github.com/brick/math/releases/tag/0.7.2) - 2018-07-21 - -**Performance update** - -`BigInteger::parse()` and `toBase()` now use GMP's built-in base conversion features when available. - -## [0.7.1](https://github.com/brick/math/releases/tag/0.7.1) - 2018-03-01 - -This is a maintenance release, no code has been changed. - -- When installed with `--no-dev`, the autoloader does not autoload tests anymore -- Tests and other files unnecessary for production are excluded from the dist package - -This will help make installations more compact. - -## [0.7.0](https://github.com/brick/math/releases/tag/0.7.0) - 2017-10-02 - -Methods renamed: - -- `BigNumber:sign()` has been renamed to `getSign()` -- `BigDecimal::unscaledValue()` has been renamed to `getUnscaledValue()` -- `BigDecimal::scale()` has been renamed to `getScale()` -- `BigDecimal::integral()` has been renamed to `getIntegral()` -- `BigDecimal::fraction()` has been renamed to `getFraction()` -- `BigRational::numerator()` has been renamed to `getNumerator()` -- `BigRational::denominator()` has been renamed to `getDenominator()` - -Classes renamed: - -- `ArithmeticException` has been renamed to `MathException` - -## [0.6.2](https://github.com/brick/math/releases/tag/0.6.2) - 2017-10-02 - -The base class for all exceptions is now `MathException`. -`ArithmeticException` has been deprecated, and will be removed in 0.7.0. - -## [0.6.1](https://github.com/brick/math/releases/tag/0.6.1) - 2017-10-02 - -A number of methods have been renamed: - -- `BigNumber:sign()` is deprecated; use `getSign()` instead -- `BigDecimal::unscaledValue()` is deprecated; use `getUnscaledValue()` instead -- `BigDecimal::scale()` is deprecated; use `getScale()` instead -- `BigDecimal::integral()` is deprecated; use `getIntegral()` instead -- `BigDecimal::fraction()` is deprecated; use `getFraction()` instead -- `BigRational::numerator()` is deprecated; use `getNumerator()` instead -- `BigRational::denominator()` is deprecated; use `getDenominator()` instead - -The old methods will be removed in version 0.7.0. - -## [0.6.0](https://github.com/brick/math/releases/tag/0.6.0) - 2017-08-25 - -- Minimum PHP version is now [7.1](https://gophp71.org/); for PHP 5.6 and PHP 7.0 support, use version `0.5` -- Deprecated method `BigDecimal::withScale()` has been removed; use `toScale()` instead -- Method `BigNumber::toInteger()` has been renamed to `toInt()` - -## [0.5.4](https://github.com/brick/math/releases/tag/0.5.4) - 2016-10-17 - -`BigNumber` classes now implement [JsonSerializable](http://php.net/manual/en/class.jsonserializable.php). -The JSON output is always a string. - -## [0.5.3](https://github.com/brick/math/releases/tag/0.5.3) - 2016-03-31 - -This is a bugfix release. Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6. - -## [0.5.2](https://github.com/brick/math/releases/tag/0.5.2) - 2015-08-06 - -The `$scale` parameter of `BigDecimal::dividedBy()` is now optional again. - -## [0.5.1](https://github.com/brick/math/releases/tag/0.5.1) - 2015-07-05 - -**New method: `BigNumber::toScale()`** - -This allows to convert any `BigNumber` to a `BigDecimal` with a given scale, using rounding if necessary. - -## [0.5.0](https://github.com/brick/math/releases/tag/0.5.0) - 2015-07-04 - -**New features** -- Common `BigNumber` interface for all classes, with the following methods: - - `sign()` and derived methods (`isZero()`, `isPositive()`, ...) - - `compareTo()` and derived methods (`isEqualTo()`, `isGreaterThan()`, ...) that work across different `BigNumber` types - - `toBigInteger()`, `toBigDecimal()`, `toBigRational`() conversion methods - - `toInteger()` and `toFloat()` conversion methods to native types -- Unified `of()` behaviour: every class now accepts any type of number, provided that it can be safely converted to the current type -- New method: `BigDecimal::exactlyDividedBy()`; this method automatically computes the scale of the result, provided that the division yields a finite number of digits -- New methods: `BigRational::quotient()` and `remainder()` -- Fine-grained exceptions: `DivisionByZeroException`, `RoundingNecessaryException`, `NumberFormatException` -- Factory methods `zero()`, `one()` and `ten()` available in all classes -- Rounding mode reintroduced in `BigInteger::dividedBy()` - -This release also comes with many performance improvements. - ---- - -**Breaking changes** -- `BigInteger`: - - `getSign()` is renamed to `sign()` - - `toString()` is renamed to `toBase()` - - `BigInteger::dividedBy()` now throws an exception by default if the remainder is not zero; use `quotient()` to get the previous behaviour -- `BigDecimal`: - - `getSign()` is renamed to `sign()` - - `getUnscaledValue()` is renamed to `unscaledValue()` - - `getScale()` is renamed to `scale()` - - `getIntegral()` is renamed to `integral()` - - `getFraction()` is renamed to `fraction()` - - `divideAndRemainder()` is renamed to `quotientAndRemainder()` - - `dividedBy()` now takes a **mandatory** `$scale` parameter **before** the rounding mode - - `toBigInteger()` does not accept a `$roundingMode` parameter anymore - - `toBigRational()` does not simplify the fraction anymore; explicitly add `->simplified()` to get the previous behaviour -- `BigRational`: - - `getSign()` is renamed to `sign()` - - `getNumerator()` is renamed to `numerator()` - - `getDenominator()` is renamed to `denominator()` - - `of()` is renamed to `nd()`, while `parse()` is renamed to `of()` -- Miscellaneous: - - `ArithmeticException` is moved to an `Exception\` sub-namespace - - `of()` factory methods now throw `NumberFormatException` instead of `InvalidArgumentException` - -## [0.4.3](https://github.com/brick/math/releases/tag/0.4.3) - 2016-03-31 - -Backport of two bug fixes from the 0.5 branch: -- `BigInteger::parse()` did not always throw `InvalidArgumentException` as expected -- Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6. - -## [0.4.2](https://github.com/brick/math/releases/tag/0.4.2) - 2015-06-16 - -New method: `BigDecimal::stripTrailingZeros()` - -## [0.4.1](https://github.com/brick/math/releases/tag/0.4.1) - 2015-06-12 - -Introducing a `BigRational` class, to perform calculations on fractions of any size. - -## [0.4.0](https://github.com/brick/math/releases/tag/0.4.0) - 2015-06-12 - -Rounding modes have been removed from `BigInteger`, and are now a concept specific to `BigDecimal`. - -`BigInteger::dividedBy()` now always returns the quotient of the division. - -## [0.3.5](https://github.com/brick/math/releases/tag/0.3.5) - 2016-03-31 - -Backport of two bug fixes from the 0.5 branch: - -- `BigInteger::parse()` did not always throw `InvalidArgumentException` as expected -- Dividing by a negative power of 1 with the same scale as the dividend could trigger an incorrect optimization which resulted in a wrong result. See #6. - -## [0.3.4](https://github.com/brick/math/releases/tag/0.3.4) - 2015-06-11 - -New methods: -- `BigInteger::remainder()` returns the remainder of a division only -- `BigInteger::gcd()` returns the greatest common divisor of two numbers - -## [0.3.3](https://github.com/brick/math/releases/tag/0.3.3) - 2015-06-07 - -Fix `toString()` not handling negative numbers. - -## [0.3.2](https://github.com/brick/math/releases/tag/0.3.2) - 2015-06-07 - -`BigInteger` and `BigDecimal` now have a `getSign()` method that returns: -- `-1` if the number is negative -- `0` if the number is zero -- `1` if the number is positive - -## [0.3.1](https://github.com/brick/math/releases/tag/0.3.1) - 2015-06-05 - -Minor performance improvements - -## [0.3.0](https://github.com/brick/math/releases/tag/0.3.0) - 2015-06-04 - -The `$roundingMode` and `$scale` parameters have been swapped in `BigDecimal::dividedBy()`. - -## [0.2.2](https://github.com/brick/math/releases/tag/0.2.2) - 2015-06-04 - -Stronger immutability guarantee for `BigInteger` and `BigDecimal`. - -So far, it would have been possible to break immutability of these classes by calling the `unserialize()` internal function. This release fixes that. - -## [0.2.1](https://github.com/brick/math/releases/tag/0.2.1) - 2015-06-02 - -Added `BigDecimal::divideAndRemainder()` - -## [0.2.0](https://github.com/brick/math/releases/tag/0.2.0) - 2015-05-22 - -- `min()` and `max()` do not accept an `array` anymore, but a variable number of parameters -- **minimum PHP version is now 5.6** -- continuous integration with PHP 7 - -## [0.1.1](https://github.com/brick/math/releases/tag/0.1.1) - 2014-09-01 - -- Added `BigInteger::power()` -- Added HHVM support - -## [0.1.0](https://github.com/brick/math/releases/tag/0.1.0) - 2014-08-31 - -First beta release. - diff --git a/vendor/brick/math/LICENSE b/vendor/brick/math/LICENSE deleted file mode 100644 index f9b724f0..00000000 --- a/vendor/brick/math/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013-present Benjamin Morel - -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/vendor/brick/math/composer.json b/vendor/brick/math/composer.json deleted file mode 100644 index ed817bdd..00000000 --- a/vendor/brick/math/composer.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "brick/math", - "description": "Arbitrary-precision arithmetic library", - "type": "library", - "keywords": [ - "Brick", - "Math", - "Arbitrary-precision", - "Arithmetic", - "BigInteger", - "BigDecimal", - "BigRational", - "Bignum" - ], - "license": "MIT", - "require": { - "php": "^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.0", - "php-coveralls/php-coveralls": "^2.2", - "vimeo/psalm": "5.0.0" - }, - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Brick\\Math\\Tests\\": "tests/" - } - } -} diff --git a/vendor/brick/math/src/BigDecimal.php b/vendor/brick/math/src/BigDecimal.php deleted file mode 100644 index 02fc6561..00000000 --- a/vendor/brick/math/src/BigDecimal.php +++ /dev/null @@ -1,786 +0,0 @@ -value = $value; - $this->scale = $scale; - } - - /** - * Creates a BigDecimal of the given value. - * - * @throws MathException If the value cannot be converted to a BigDecimal. - * - * @psalm-pure - */ - public static function of(BigNumber|int|float|string $value) : BigDecimal - { - return parent::of($value)->toBigDecimal(); - } - - /** - * Creates a BigDecimal from an unscaled value and a scale. - * - * Example: `(12345, 3)` will result in the BigDecimal `12.345`. - * - * @param BigNumber|int|float|string $value The unscaled value. Must be convertible to a BigInteger. - * @param int $scale The scale of the number, positive or zero. - * - * @throws \InvalidArgumentException If the scale is negative. - * - * @psalm-pure - */ - public static function ofUnscaledValue(BigNumber|int|float|string $value, int $scale = 0) : BigDecimal - { - if ($scale < 0) { - throw new \InvalidArgumentException('The scale cannot be negative.'); - } - - return new BigDecimal((string) BigInteger::of($value), $scale); - } - - /** - * Returns a BigDecimal representing zero, with a scale of zero. - * - * @psalm-pure - */ - public static function zero() : BigDecimal - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigDecimal|null $zero - */ - static $zero; - - if ($zero === null) { - $zero = new BigDecimal('0'); - } - - return $zero; - } - - /** - * Returns a BigDecimal representing one, with a scale of zero. - * - * @psalm-pure - */ - public static function one() : BigDecimal - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigDecimal|null $one - */ - static $one; - - if ($one === null) { - $one = new BigDecimal('1'); - } - - return $one; - } - - /** - * Returns a BigDecimal representing ten, with a scale of zero. - * - * @psalm-pure - */ - public static function ten() : BigDecimal - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigDecimal|null $ten - */ - static $ten; - - if ($ten === null) { - $ten = new BigDecimal('10'); - } - - return $ten; - } - - /** - * Returns the sum of this number and the given one. - * - * The result has a scale of `max($this->scale, $that->scale)`. - * - * @param BigNumber|int|float|string $that The number to add. Must be convertible to a BigDecimal. - * - * @throws MathException If the number is not valid, or is not convertible to a BigDecimal. - */ - public function plus(BigNumber|int|float|string $that) : BigDecimal - { - $that = BigDecimal::of($that); - - if ($that->value === '0' && $that->scale <= $this->scale) { - return $this; - } - - if ($this->value === '0' && $this->scale <= $that->scale) { - return $that; - } - - [$a, $b] = $this->scaleValues($this, $that); - - $value = Calculator::get()->add($a, $b); - $scale = $this->scale > $that->scale ? $this->scale : $that->scale; - - return new BigDecimal($value, $scale); - } - - /** - * Returns the difference of this number and the given one. - * - * The result has a scale of `max($this->scale, $that->scale)`. - * - * @param BigNumber|int|float|string $that The number to subtract. Must be convertible to a BigDecimal. - * - * @throws MathException If the number is not valid, or is not convertible to a BigDecimal. - */ - public function minus(BigNumber|int|float|string $that) : BigDecimal - { - $that = BigDecimal::of($that); - - if ($that->value === '0' && $that->scale <= $this->scale) { - return $this; - } - - [$a, $b] = $this->scaleValues($this, $that); - - $value = Calculator::get()->sub($a, $b); - $scale = $this->scale > $that->scale ? $this->scale : $that->scale; - - return new BigDecimal($value, $scale); - } - - /** - * Returns the product of this number and the given one. - * - * The result has a scale of `$this->scale + $that->scale`. - * - * @param BigNumber|int|float|string $that The multiplier. Must be convertible to a BigDecimal. - * - * @throws MathException If the multiplier is not a valid number, or is not convertible to a BigDecimal. - */ - public function multipliedBy(BigNumber|int|float|string $that) : BigDecimal - { - $that = BigDecimal::of($that); - - if ($that->value === '1' && $that->scale === 0) { - return $this; - } - - if ($this->value === '1' && $this->scale === 0) { - return $that; - } - - $value = Calculator::get()->mul($this->value, $that->value); - $scale = $this->scale + $that->scale; - - return new BigDecimal($value, $scale); - } - - /** - * Returns the result of the division of this number by the given one, at the given scale. - * - * @param BigNumber|int|float|string $that The divisor. - * @param int|null $scale The desired scale, or null to use the scale of this number. - * @param int $roundingMode An optional rounding mode. - * - * @throws \InvalidArgumentException If the scale or rounding mode is invalid. - * @throws MathException If the number is invalid, is zero, or rounding was necessary. - */ - public function dividedBy(BigNumber|int|float|string $that, ?int $scale = null, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal - { - $that = BigDecimal::of($that); - - if ($that->isZero()) { - throw DivisionByZeroException::divisionByZero(); - } - - if ($scale === null) { - $scale = $this->scale; - } elseif ($scale < 0) { - throw new \InvalidArgumentException('Scale cannot be negative.'); - } - - if ($that->value === '1' && $that->scale === 0 && $scale === $this->scale) { - return $this; - } - - $p = $this->valueWithMinScale($that->scale + $scale); - $q = $that->valueWithMinScale($this->scale - $scale); - - $result = Calculator::get()->divRound($p, $q, $roundingMode); - - return new BigDecimal($result, $scale); - } - - /** - * Returns the exact result of the division of this number by the given one. - * - * The scale of the result is automatically calculated to fit all the fraction digits. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal. - * - * @throws MathException If the divisor is not a valid number, is not convertible to a BigDecimal, is zero, - * or the result yields an infinite number of digits. - */ - public function exactlyDividedBy(BigNumber|int|float|string $that) : BigDecimal - { - $that = BigDecimal::of($that); - - if ($that->value === '0') { - throw DivisionByZeroException::divisionByZero(); - } - - [, $b] = $this->scaleValues($this, $that); - - $d = \rtrim($b, '0'); - $scale = \strlen($b) - \strlen($d); - - $calculator = Calculator::get(); - - foreach ([5, 2] as $prime) { - for (;;) { - $lastDigit = (int) $d[-1]; - - if ($lastDigit % $prime !== 0) { - break; - } - - $d = $calculator->divQ($d, (string) $prime); - $scale++; - } - } - - return $this->dividedBy($that, $scale)->stripTrailingZeros(); - } - - /** - * Returns this number exponentiated to the given value. - * - * The result has a scale of `$this->scale * $exponent`. - * - * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000. - */ - public function power(int $exponent) : BigDecimal - { - if ($exponent === 0) { - return BigDecimal::one(); - } - - if ($exponent === 1) { - return $this; - } - - if ($exponent < 0 || $exponent > Calculator::MAX_POWER) { - throw new \InvalidArgumentException(\sprintf( - 'The exponent %d is not in the range 0 to %d.', - $exponent, - Calculator::MAX_POWER - )); - } - - return new BigDecimal(Calculator::get()->pow($this->value, $exponent), $this->scale * $exponent); - } - - /** - * Returns the quotient of the division of this number by this given one. - * - * The quotient has a scale of `0`. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal. - * - * @throws MathException If the divisor is not a valid decimal number, or is zero. - */ - public function quotient(BigNumber|int|float|string $that) : BigDecimal - { - $that = BigDecimal::of($that); - - if ($that->isZero()) { - throw DivisionByZeroException::divisionByZero(); - } - - $p = $this->valueWithMinScale($that->scale); - $q = $that->valueWithMinScale($this->scale); - - $quotient = Calculator::get()->divQ($p, $q); - - return new BigDecimal($quotient, 0); - } - - /** - * Returns the remainder of the division of this number by this given one. - * - * The remainder has a scale of `max($this->scale, $that->scale)`. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal. - * - * @throws MathException If the divisor is not a valid decimal number, or is zero. - */ - public function remainder(BigNumber|int|float|string $that) : BigDecimal - { - $that = BigDecimal::of($that); - - if ($that->isZero()) { - throw DivisionByZeroException::divisionByZero(); - } - - $p = $this->valueWithMinScale($that->scale); - $q = $that->valueWithMinScale($this->scale); - - $remainder = Calculator::get()->divR($p, $q); - - $scale = $this->scale > $that->scale ? $this->scale : $that->scale; - - return new BigDecimal($remainder, $scale); - } - - /** - * Returns the quotient and remainder of the division of this number by the given one. - * - * The quotient has a scale of `0`, and the remainder has a scale of `max($this->scale, $that->scale)`. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigDecimal. - * - * @return BigDecimal[] An array containing the quotient and the remainder. - * - * @throws MathException If the divisor is not a valid decimal number, or is zero. - */ - public function quotientAndRemainder(BigNumber|int|float|string $that) : array - { - $that = BigDecimal::of($that); - - if ($that->isZero()) { - throw DivisionByZeroException::divisionByZero(); - } - - $p = $this->valueWithMinScale($that->scale); - $q = $that->valueWithMinScale($this->scale); - - [$quotient, $remainder] = Calculator::get()->divQR($p, $q); - - $scale = $this->scale > $that->scale ? $this->scale : $that->scale; - - $quotient = new BigDecimal($quotient, 0); - $remainder = new BigDecimal($remainder, $scale); - - return [$quotient, $remainder]; - } - - /** - * Returns the square root of this number, rounded down to the given number of decimals. - * - * @throws \InvalidArgumentException If the scale is negative. - * @throws NegativeNumberException If this number is negative. - */ - public function sqrt(int $scale) : BigDecimal - { - if ($scale < 0) { - throw new \InvalidArgumentException('Scale cannot be negative.'); - } - - if ($this->value === '0') { - return new BigDecimal('0', $scale); - } - - if ($this->value[0] === '-') { - throw new NegativeNumberException('Cannot calculate the square root of a negative number.'); - } - - $value = $this->value; - $addDigits = 2 * $scale - $this->scale; - - if ($addDigits > 0) { - // add zeros - $value .= \str_repeat('0', $addDigits); - } elseif ($addDigits < 0) { - // trim digits - if (-$addDigits >= \strlen($this->value)) { - // requesting a scale too low, will always yield a zero result - return new BigDecimal('0', $scale); - } - - $value = \substr($value, 0, $addDigits); - } - - $value = Calculator::get()->sqrt($value); - - return new BigDecimal($value, $scale); - } - - /** - * Returns a copy of this BigDecimal with the decimal point moved $n places to the left. - */ - public function withPointMovedLeft(int $n) : BigDecimal - { - if ($n === 0) { - return $this; - } - - if ($n < 0) { - return $this->withPointMovedRight(-$n); - } - - return new BigDecimal($this->value, $this->scale + $n); - } - - /** - * Returns a copy of this BigDecimal with the decimal point moved $n places to the right. - */ - public function withPointMovedRight(int $n) : BigDecimal - { - if ($n === 0) { - return $this; - } - - if ($n < 0) { - return $this->withPointMovedLeft(-$n); - } - - $value = $this->value; - $scale = $this->scale - $n; - - if ($scale < 0) { - if ($value !== '0') { - $value .= \str_repeat('0', -$scale); - } - $scale = 0; - } - - return new BigDecimal($value, $scale); - } - - /** - * Returns a copy of this BigDecimal with any trailing zeros removed from the fractional part. - */ - public function stripTrailingZeros() : BigDecimal - { - if ($this->scale === 0) { - return $this; - } - - $trimmedValue = \rtrim($this->value, '0'); - - if ($trimmedValue === '') { - return BigDecimal::zero(); - } - - $trimmableZeros = \strlen($this->value) - \strlen($trimmedValue); - - if ($trimmableZeros === 0) { - return $this; - } - - if ($trimmableZeros > $this->scale) { - $trimmableZeros = $this->scale; - } - - $value = \substr($this->value, 0, -$trimmableZeros); - $scale = $this->scale - $trimmableZeros; - - return new BigDecimal($value, $scale); - } - - /** - * Returns the absolute value of this number. - */ - public function abs() : BigDecimal - { - return $this->isNegative() ? $this->negated() : $this; - } - - /** - * Returns the negated value of this number. - */ - public function negated() : BigDecimal - { - return new BigDecimal(Calculator::get()->neg($this->value), $this->scale); - } - - public function compareTo(BigNumber|int|float|string $that) : int - { - $that = BigNumber::of($that); - - if ($that instanceof BigInteger) { - $that = $that->toBigDecimal(); - } - - if ($that instanceof BigDecimal) { - [$a, $b] = $this->scaleValues($this, $that); - - return Calculator::get()->cmp($a, $b); - } - - return - $that->compareTo($this); - } - - public function getSign() : int - { - return ($this->value === '0') ? 0 : (($this->value[0] === '-') ? -1 : 1); - } - - public function getUnscaledValue() : BigInteger - { - return self::newBigInteger($this->value); - } - - public function getScale() : int - { - return $this->scale; - } - - /** - * Returns a string representing the integral part of this decimal number. - * - * Example: `-123.456` => `-123`. - */ - public function getIntegralPart() : string - { - if ($this->scale === 0) { - return $this->value; - } - - $value = $this->getUnscaledValueWithLeadingZeros(); - - return \substr($value, 0, -$this->scale); - } - - /** - * Returns a string representing the fractional part of this decimal number. - * - * If the scale is zero, an empty string is returned. - * - * Examples: `-123.456` => '456', `123` => ''. - */ - public function getFractionalPart() : string - { - if ($this->scale === 0) { - return ''; - } - - $value = $this->getUnscaledValueWithLeadingZeros(); - - return \substr($value, -$this->scale); - } - - /** - * Returns whether this decimal number has a non-zero fractional part. - */ - public function hasNonZeroFractionalPart() : bool - { - return $this->getFractionalPart() !== \str_repeat('0', $this->scale); - } - - public function toBigInteger() : BigInteger - { - $zeroScaleDecimal = $this->scale === 0 ? $this : $this->dividedBy(1, 0); - - return self::newBigInteger($zeroScaleDecimal->value); - } - - public function toBigDecimal() : BigDecimal - { - return $this; - } - - public function toBigRational() : BigRational - { - $numerator = self::newBigInteger($this->value); - $denominator = self::newBigInteger('1' . \str_repeat('0', $this->scale)); - - return self::newBigRational($numerator, $denominator, false); - } - - public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal - { - if ($scale === $this->scale) { - return $this; - } - - return $this->dividedBy(BigDecimal::one(), $scale, $roundingMode); - } - - public function toInt() : int - { - return $this->toBigInteger()->toInt(); - } - - public function toFloat() : float - { - return (float) (string) $this; - } - - public function __toString() : string - { - if ($this->scale === 0) { - return $this->value; - } - - $value = $this->getUnscaledValueWithLeadingZeros(); - - return \substr($value, 0, -$this->scale) . '.' . \substr($value, -$this->scale); - } - - /** - * This method is required for serializing the object and SHOULD NOT be accessed directly. - * - * @internal - * - * @return array{value: string, scale: int} - */ - public function __serialize(): array - { - return ['value' => $this->value, 'scale' => $this->scale]; - } - - /** - * This method is only here to allow unserializing the object and cannot be accessed directly. - * - * @internal - * @psalm-suppress RedundantPropertyInitializationCheck - * - * @param array{value: string, scale: int} $data - * - * @throws \LogicException - */ - public function __unserialize(array $data): void - { - if (isset($this->value)) { - throw new \LogicException('__unserialize() is an internal function, it must not be called directly.'); - } - - $this->value = $data['value']; - $this->scale = $data['scale']; - } - - /** - * This method is required by interface Serializable and SHOULD NOT be accessed directly. - * - * @internal - */ - public function serialize() : string - { - return $this->value . ':' . $this->scale; - } - - /** - * This method is only here to implement interface Serializable and cannot be accessed directly. - * - * @internal - * @psalm-suppress RedundantPropertyInitializationCheck - * - * @throws \LogicException - */ - public function unserialize($value) : void - { - if (isset($this->value)) { - throw new \LogicException('unserialize() is an internal function, it must not be called directly.'); - } - - [$value, $scale] = \explode(':', $value); - - $this->value = $value; - $this->scale = (int) $scale; - } - - /** - * Puts the internal values of the given decimal numbers on the same scale. - * - * @return array{string, string} The scaled integer values of $x and $y. - */ - private function scaleValues(BigDecimal $x, BigDecimal $y) : array - { - $a = $x->value; - $b = $y->value; - - if ($b !== '0' && $x->scale > $y->scale) { - $b .= \str_repeat('0', $x->scale - $y->scale); - } elseif ($a !== '0' && $x->scale < $y->scale) { - $a .= \str_repeat('0', $y->scale - $x->scale); - } - - return [$a, $b]; - } - - private function valueWithMinScale(int $scale) : string - { - $value = $this->value; - - if ($this->value !== '0' && $scale > $this->scale) { - $value .= \str_repeat('0', $scale - $this->scale); - } - - return $value; - } - - /** - * Adds leading zeros if necessary to the unscaled value to represent the full decimal number. - */ - private function getUnscaledValueWithLeadingZeros() : string - { - $value = $this->value; - $targetLength = $this->scale + 1; - $negative = ($value[0] === '-'); - $length = \strlen($value); - - if ($negative) { - $length--; - } - - if ($length >= $targetLength) { - return $this->value; - } - - if ($negative) { - $value = \substr($value, 1); - } - - $value = \str_pad($value, $targetLength, '0', STR_PAD_LEFT); - - if ($negative) { - $value = '-' . $value; - } - - return $value; - } -} diff --git a/vendor/brick/math/src/BigInteger.php b/vendor/brick/math/src/BigInteger.php deleted file mode 100644 index 43567933..00000000 --- a/vendor/brick/math/src/BigInteger.php +++ /dev/null @@ -1,1079 +0,0 @@ -value = $value; - } - - /** - * Creates a BigInteger of the given value. - * - * @throws MathException If the value cannot be converted to a BigInteger. - * - * @psalm-pure - */ - public static function of(BigNumber|int|float|string $value) : BigInteger - { - return parent::of($value)->toBigInteger(); - } - - /** - * Creates a number from a string in a given base. - * - * The string can optionally be prefixed with the `+` or `-` sign. - * - * Bases greater than 36 are not supported by this method, as there is no clear consensus on which of the lowercase - * or uppercase characters should come first. Instead, this method accepts any base up to 36, and does not - * differentiate lowercase and uppercase characters, which are considered equal. - * - * For bases greater than 36, and/or custom alphabets, use the fromArbitraryBase() method. - * - * @param string $number The number to convert, in the given base. - * @param int $base The base of the number, between 2 and 36. - * - * @throws NumberFormatException If the number is empty, or contains invalid chars for the given base. - * @throws \InvalidArgumentException If the base is out of range. - * - * @psalm-pure - */ - public static function fromBase(string $number, int $base) : BigInteger - { - if ($number === '') { - throw new NumberFormatException('The number cannot be empty.'); - } - - if ($base < 2 || $base > 36) { - throw new \InvalidArgumentException(\sprintf('Base %d is not in range 2 to 36.', $base)); - } - - if ($number[0] === '-') { - $sign = '-'; - $number = \substr($number, 1); - } elseif ($number[0] === '+') { - $sign = ''; - $number = \substr($number, 1); - } else { - $sign = ''; - } - - if ($number === '') { - throw new NumberFormatException('The number cannot be empty.'); - } - - $number = \ltrim($number, '0'); - - if ($number === '') { - // The result will be the same in any base, avoid further calculation. - return BigInteger::zero(); - } - - if ($number === '1') { - // The result will be the same in any base, avoid further calculation. - return new BigInteger($sign . '1'); - } - - $pattern = '/[^' . \substr(Calculator::ALPHABET, 0, $base) . ']/'; - - if (\preg_match($pattern, \strtolower($number), $matches) === 1) { - throw new NumberFormatException(\sprintf('"%s" is not a valid character in base %d.', $matches[0], $base)); - } - - if ($base === 10) { - // The number is usable as is, avoid further calculation. - return new BigInteger($sign . $number); - } - - $result = Calculator::get()->fromBase($number, $base); - - return new BigInteger($sign . $result); - } - - /** - * Parses a string containing an integer in an arbitrary base, using a custom alphabet. - * - * Because this method accepts an alphabet with any character, including dash, it does not handle negative numbers. - * - * @param string $number The number to parse. - * @param string $alphabet The alphabet, for example '01' for base 2, or '01234567' for base 8. - * - * @throws NumberFormatException If the given number is empty or contains invalid chars for the given alphabet. - * @throws \InvalidArgumentException If the alphabet does not contain at least 2 chars. - * - * @psalm-pure - */ - public static function fromArbitraryBase(string $number, string $alphabet) : BigInteger - { - if ($number === '') { - throw new NumberFormatException('The number cannot be empty.'); - } - - $base = \strlen($alphabet); - - if ($base < 2) { - throw new \InvalidArgumentException('The alphabet must contain at least 2 chars.'); - } - - $pattern = '/[^' . \preg_quote($alphabet, '/') . ']/'; - - if (\preg_match($pattern, $number, $matches) === 1) { - throw NumberFormatException::charNotInAlphabet($matches[0]); - } - - $number = Calculator::get()->fromArbitraryBase($number, $alphabet, $base); - - return new BigInteger($number); - } - - /** - * Translates a string of bytes containing the binary representation of a BigInteger into a BigInteger. - * - * The input string is assumed to be in big-endian byte-order: the most significant byte is in the zeroth element. - * - * If `$signed` is true, the input is assumed to be in two's-complement representation, and the leading bit is - * interpreted as a sign bit. If `$signed` is false, the input is interpreted as an unsigned number, and the - * resulting BigInteger will always be positive or zero. - * - * This method can be used to retrieve a number exported by `toBytes()`, as long as the `$signed` flags match. - * - * @param string $value The byte string. - * @param bool $signed Whether to interpret as a signed number in two's-complement representation with a leading - * sign bit. - * - * @throws NumberFormatException If the string is empty. - */ - public static function fromBytes(string $value, bool $signed = true) : BigInteger - { - if ($value === '') { - throw new NumberFormatException('The byte string must not be empty.'); - } - - $twosComplement = false; - - if ($signed) { - $x = \ord($value[0]); - - if (($twosComplement = ($x >= 0x80))) { - $value = ~$value; - } - } - - $number = self::fromBase(\bin2hex($value), 16); - - if ($twosComplement) { - return $number->plus(1)->negated(); - } - - return $number; - } - - /** - * Generates a pseudo-random number in the range 0 to 2^numBits - 1. - * - * Using the default random bytes generator, this method is suitable for cryptographic use. - * - * @psalm-param (callable(int): string)|null $randomBytesGenerator - * - * @param int $numBits The number of bits. - * @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer, and returns a - * string of random bytes of the given length. Defaults to the - * `random_bytes()` function. - * - * @throws \InvalidArgumentException If $numBits is negative. - */ - public static function randomBits(int $numBits, ?callable $randomBytesGenerator = null) : BigInteger - { - if ($numBits < 0) { - throw new \InvalidArgumentException('The number of bits cannot be negative.'); - } - - if ($numBits === 0) { - return BigInteger::zero(); - } - - if ($randomBytesGenerator === null) { - $randomBytesGenerator = 'random_bytes'; - } - - $byteLength = \intdiv($numBits - 1, 8) + 1; - - $extraBits = ($byteLength * 8 - $numBits); - $bitmask = \chr(0xFF >> $extraBits); - - $randomBytes = $randomBytesGenerator($byteLength); - $randomBytes[0] = $randomBytes[0] & $bitmask; - - return self::fromBytes($randomBytes, false); - } - - /** - * Generates a pseudo-random number between `$min` and `$max`. - * - * Using the default random bytes generator, this method is suitable for cryptographic use. - * - * @psalm-param (callable(int): string)|null $randomBytesGenerator - * - * @param BigNumber|int|float|string $min The lower bound. Must be convertible to a BigInteger. - * @param BigNumber|int|float|string $max The upper bound. Must be convertible to a BigInteger. - * @param callable|null $randomBytesGenerator A function that accepts a number of bytes as an integer, - * and returns a string of random bytes of the given length. - * Defaults to the `random_bytes()` function. - * - * @throws MathException If one of the parameters cannot be converted to a BigInteger, - * or `$min` is greater than `$max`. - */ - public static function randomRange( - BigNumber|int|float|string $min, - BigNumber|int|float|string $max, - ?callable $randomBytesGenerator = null - ) : BigInteger { - $min = BigInteger::of($min); - $max = BigInteger::of($max); - - if ($min->isGreaterThan($max)) { - throw new MathException('$min cannot be greater than $max.'); - } - - if ($min->isEqualTo($max)) { - return $min; - } - - $diff = $max->minus($min); - $bitLength = $diff->getBitLength(); - - // try until the number is in range (50% to 100% chance of success) - do { - $randomNumber = self::randomBits($bitLength, $randomBytesGenerator); - } while ($randomNumber->isGreaterThan($diff)); - - return $randomNumber->plus($min); - } - - /** - * Returns a BigInteger representing zero. - * - * @psalm-pure - */ - public static function zero() : BigInteger - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigInteger|null $zero - */ - static $zero; - - if ($zero === null) { - $zero = new BigInteger('0'); - } - - return $zero; - } - - /** - * Returns a BigInteger representing one. - * - * @psalm-pure - */ - public static function one() : BigInteger - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigInteger|null $one - */ - static $one; - - if ($one === null) { - $one = new BigInteger('1'); - } - - return $one; - } - - /** - * Returns a BigInteger representing ten. - * - * @psalm-pure - */ - public static function ten() : BigInteger - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigInteger|null $ten - */ - static $ten; - - if ($ten === null) { - $ten = new BigInteger('10'); - } - - return $ten; - } - - public static function gcdMultiple(BigInteger $a, BigInteger ...$n): BigInteger - { - $result = $a; - - foreach ($n as $next) { - $result = $result->gcd($next); - - if ($result->isEqualTo(1)) { - return $result; - } - } - - return $result; - } - - /** - * Returns the sum of this number and the given one. - * - * @param BigNumber|int|float|string $that The number to add. Must be convertible to a BigInteger. - * - * @throws MathException If the number is not valid, or is not convertible to a BigInteger. - */ - public function plus(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - if ($that->value === '0') { - return $this; - } - - if ($this->value === '0') { - return $that; - } - - $value = Calculator::get()->add($this->value, $that->value); - - return new BigInteger($value); - } - - /** - * Returns the difference of this number and the given one. - * - * @param BigNumber|int|float|string $that The number to subtract. Must be convertible to a BigInteger. - * - * @throws MathException If the number is not valid, or is not convertible to a BigInteger. - */ - public function minus(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - if ($that->value === '0') { - return $this; - } - - $value = Calculator::get()->sub($this->value, $that->value); - - return new BigInteger($value); - } - - /** - * Returns the product of this number and the given one. - * - * @param BigNumber|int|float|string $that The multiplier. Must be convertible to a BigInteger. - * - * @throws MathException If the multiplier is not a valid number, or is not convertible to a BigInteger. - */ - public function multipliedBy(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - if ($that->value === '1') { - return $this; - } - - if ($this->value === '1') { - return $that; - } - - $value = Calculator::get()->mul($this->value, $that->value); - - return new BigInteger($value); - } - - /** - * Returns the result of the division of this number by the given one. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. - * @param int $roundingMode An optional rounding mode. - * - * @throws MathException If the divisor is not a valid number, is not convertible to a BigInteger, is zero, - * or RoundingMode::UNNECESSARY is used and the remainder is not zero. - */ - public function dividedBy(BigNumber|int|float|string $that, int $roundingMode = RoundingMode::UNNECESSARY) : BigInteger - { - $that = BigInteger::of($that); - - if ($that->value === '1') { - return $this; - } - - if ($that->value === '0') { - throw DivisionByZeroException::divisionByZero(); - } - - $result = Calculator::get()->divRound($this->value, $that->value, $roundingMode); - - return new BigInteger($result); - } - - /** - * Returns this number exponentiated to the given value. - * - * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000. - */ - public function power(int $exponent) : BigInteger - { - if ($exponent === 0) { - return BigInteger::one(); - } - - if ($exponent === 1) { - return $this; - } - - if ($exponent < 0 || $exponent > Calculator::MAX_POWER) { - throw new \InvalidArgumentException(\sprintf( - 'The exponent %d is not in the range 0 to %d.', - $exponent, - Calculator::MAX_POWER - )); - } - - return new BigInteger(Calculator::get()->pow($this->value, $exponent)); - } - - /** - * Returns the quotient of the division of this number by the given one. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. - * - * @throws DivisionByZeroException If the divisor is zero. - */ - public function quotient(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - if ($that->value === '1') { - return $this; - } - - if ($that->value === '0') { - throw DivisionByZeroException::divisionByZero(); - } - - $quotient = Calculator::get()->divQ($this->value, $that->value); - - return new BigInteger($quotient); - } - - /** - * Returns the remainder of the division of this number by the given one. - * - * The remainder, when non-zero, has the same sign as the dividend. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. - * - * @throws DivisionByZeroException If the divisor is zero. - */ - public function remainder(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - if ($that->value === '1') { - return BigInteger::zero(); - } - - if ($that->value === '0') { - throw DivisionByZeroException::divisionByZero(); - } - - $remainder = Calculator::get()->divR($this->value, $that->value); - - return new BigInteger($remainder); - } - - /** - * Returns the quotient and remainder of the division of this number by the given one. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. - * - * @return BigInteger[] An array containing the quotient and the remainder. - * - * @throws DivisionByZeroException If the divisor is zero. - */ - public function quotientAndRemainder(BigNumber|int|float|string $that) : array - { - $that = BigInteger::of($that); - - if ($that->value === '0') { - throw DivisionByZeroException::divisionByZero(); - } - - [$quotient, $remainder] = Calculator::get()->divQR($this->value, $that->value); - - return [ - new BigInteger($quotient), - new BigInteger($remainder) - ]; - } - - /** - * Returns the modulo of this number and the given one. - * - * The modulo operation yields the same result as the remainder operation when both operands are of the same sign, - * and may differ when signs are different. - * - * The result of the modulo operation, when non-zero, has the same sign as the divisor. - * - * @param BigNumber|int|float|string $that The divisor. Must be convertible to a BigInteger. - * - * @throws DivisionByZeroException If the divisor is zero. - */ - public function mod(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - if ($that->value === '0') { - throw DivisionByZeroException::modulusMustNotBeZero(); - } - - $value = Calculator::get()->mod($this->value, $that->value); - - return new BigInteger($value); - } - - /** - * Returns the modular multiplicative inverse of this BigInteger modulo $m. - * - * @throws DivisionByZeroException If $m is zero. - * @throws NegativeNumberException If $m is negative. - * @throws MathException If this BigInteger has no multiplicative inverse mod m (that is, this BigInteger - * is not relatively prime to m). - */ - public function modInverse(BigInteger $m) : BigInteger - { - if ($m->value === '0') { - throw DivisionByZeroException::modulusMustNotBeZero(); - } - - if ($m->isNegative()) { - throw new NegativeNumberException('Modulus must not be negative.'); - } - - if ($m->value === '1') { - return BigInteger::zero(); - } - - $value = Calculator::get()->modInverse($this->value, $m->value); - - if ($value === null) { - throw new MathException('Unable to compute the modInverse for the given modulus.'); - } - - return new BigInteger($value); - } - - /** - * Returns this number raised into power with modulo. - * - * This operation only works on positive numbers. - * - * @param BigNumber|int|float|string $exp The exponent. Must be positive or zero. - * @param BigNumber|int|float|string $mod The modulus. Must be strictly positive. - * - * @throws NegativeNumberException If any of the operands is negative. - * @throws DivisionByZeroException If the modulus is zero. - */ - public function modPow(BigNumber|int|float|string $exp, BigNumber|int|float|string $mod) : BigInteger - { - $exp = BigInteger::of($exp); - $mod = BigInteger::of($mod); - - if ($this->isNegative() || $exp->isNegative() || $mod->isNegative()) { - throw new NegativeNumberException('The operands cannot be negative.'); - } - - if ($mod->isZero()) { - throw DivisionByZeroException::modulusMustNotBeZero(); - } - - $result = Calculator::get()->modPow($this->value, $exp->value, $mod->value); - - return new BigInteger($result); - } - - /** - * Returns the greatest common divisor of this number and the given one. - * - * The GCD is always positive, unless both operands are zero, in which case it is zero. - * - * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number. - */ - public function gcd(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - if ($that->value === '0' && $this->value[0] !== '-') { - return $this; - } - - if ($this->value === '0' && $that->value[0] !== '-') { - return $that; - } - - $value = Calculator::get()->gcd($this->value, $that->value); - - return new BigInteger($value); - } - - /** - * Returns the integer square root number of this number, rounded down. - * - * The result is the largest x such that x² ≤ n. - * - * @throws NegativeNumberException If this number is negative. - */ - public function sqrt() : BigInteger - { - if ($this->value[0] === '-') { - throw new NegativeNumberException('Cannot calculate the square root of a negative number.'); - } - - $value = Calculator::get()->sqrt($this->value); - - return new BigInteger($value); - } - - /** - * Returns the absolute value of this number. - */ - public function abs() : BigInteger - { - return $this->isNegative() ? $this->negated() : $this; - } - - /** - * Returns the inverse of this number. - */ - public function negated() : BigInteger - { - return new BigInteger(Calculator::get()->neg($this->value)); - } - - /** - * Returns the integer bitwise-and combined with another integer. - * - * This method returns a negative BigInteger if and only if both operands are negative. - * - * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number. - */ - public function and(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - return new BigInteger(Calculator::get()->and($this->value, $that->value)); - } - - /** - * Returns the integer bitwise-or combined with another integer. - * - * This method returns a negative BigInteger if and only if either of the operands is negative. - * - * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number. - */ - public function or(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - return new BigInteger(Calculator::get()->or($this->value, $that->value)); - } - - /** - * Returns the integer bitwise-xor combined with another integer. - * - * This method returns a negative BigInteger if and only if exactly one of the operands is negative. - * - * @param BigNumber|int|float|string $that The operand. Must be convertible to an integer number. - */ - public function xor(BigNumber|int|float|string $that) : BigInteger - { - $that = BigInteger::of($that); - - return new BigInteger(Calculator::get()->xor($this->value, $that->value)); - } - - /** - * Returns the bitwise-not of this BigInteger. - */ - public function not() : BigInteger - { - return $this->negated()->minus(1); - } - - /** - * Returns the integer left shifted by a given number of bits. - */ - public function shiftedLeft(int $distance) : BigInteger - { - if ($distance === 0) { - return $this; - } - - if ($distance < 0) { - return $this->shiftedRight(- $distance); - } - - return $this->multipliedBy(BigInteger::of(2)->power($distance)); - } - - /** - * Returns the integer right shifted by a given number of bits. - */ - public function shiftedRight(int $distance) : BigInteger - { - if ($distance === 0) { - return $this; - } - - if ($distance < 0) { - return $this->shiftedLeft(- $distance); - } - - $operand = BigInteger::of(2)->power($distance); - - if ($this->isPositiveOrZero()) { - return $this->quotient($operand); - } - - return $this->dividedBy($operand, RoundingMode::UP); - } - - /** - * Returns the number of bits in the minimal two's-complement representation of this BigInteger, excluding a sign bit. - * - * For positive BigIntegers, this is equivalent to the number of bits in the ordinary binary representation. - * Computes (ceil(log2(this < 0 ? -this : this+1))). - */ - public function getBitLength() : int - { - if ($this->value === '0') { - return 0; - } - - if ($this->isNegative()) { - return $this->abs()->minus(1)->getBitLength(); - } - - return \strlen($this->toBase(2)); - } - - /** - * Returns the index of the rightmost (lowest-order) one bit in this BigInteger. - * - * Returns -1 if this BigInteger contains no one bits. - */ - public function getLowestSetBit() : int - { - $n = $this; - $bitLength = $this->getBitLength(); - - for ($i = 0; $i <= $bitLength; $i++) { - if ($n->isOdd()) { - return $i; - } - - $n = $n->shiftedRight(1); - } - - return -1; - } - - /** - * Returns whether this number is even. - */ - public function isEven() : bool - { - return \in_array($this->value[-1], ['0', '2', '4', '6', '8'], true); - } - - /** - * Returns whether this number is odd. - */ - public function isOdd() : bool - { - return \in_array($this->value[-1], ['1', '3', '5', '7', '9'], true); - } - - /** - * Returns true if and only if the designated bit is set. - * - * Computes ((this & (1<shiftedRight($n)->isOdd(); - } - - public function compareTo(BigNumber|int|float|string $that) : int - { - $that = BigNumber::of($that); - - if ($that instanceof BigInteger) { - return Calculator::get()->cmp($this->value, $that->value); - } - - return - $that->compareTo($this); - } - - public function getSign() : int - { - return ($this->value === '0') ? 0 : (($this->value[0] === '-') ? -1 : 1); - } - - public function toBigInteger() : BigInteger - { - return $this; - } - - public function toBigDecimal() : BigDecimal - { - return self::newBigDecimal($this->value); - } - - public function toBigRational() : BigRational - { - return self::newBigRational($this, BigInteger::one(), false); - } - - public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal - { - return $this->toBigDecimal()->toScale($scale, $roundingMode); - } - - public function toInt() : int - { - $intValue = (int) $this->value; - - if ($this->value !== (string) $intValue) { - throw IntegerOverflowException::toIntOverflow($this); - } - - return $intValue; - } - - public function toFloat() : float - { - return (float) $this->value; - } - - /** - * Returns a string representation of this number in the given base. - * - * The output will always be lowercase for bases greater than 10. - * - * @throws \InvalidArgumentException If the base is out of range. - */ - public function toBase(int $base) : string - { - if ($base === 10) { - return $this->value; - } - - if ($base < 2 || $base > 36) { - throw new \InvalidArgumentException(\sprintf('Base %d is out of range [2, 36]', $base)); - } - - return Calculator::get()->toBase($this->value, $base); - } - - /** - * Returns a string representation of this number in an arbitrary base with a custom alphabet. - * - * Because this method accepts an alphabet with any character, including dash, it does not handle negative numbers; - * a NegativeNumberException will be thrown when attempting to call this method on a negative number. - * - * @param string $alphabet The alphabet, for example '01' for base 2, or '01234567' for base 8. - * - * @throws NegativeNumberException If this number is negative. - * @throws \InvalidArgumentException If the given alphabet does not contain at least 2 chars. - */ - public function toArbitraryBase(string $alphabet) : string - { - $base = \strlen($alphabet); - - if ($base < 2) { - throw new \InvalidArgumentException('The alphabet must contain at least 2 chars.'); - } - - if ($this->value[0] === '-') { - throw new NegativeNumberException(__FUNCTION__ . '() does not support negative numbers.'); - } - - return Calculator::get()->toArbitraryBase($this->value, $alphabet, $base); - } - - /** - * Returns a string of bytes containing the binary representation of this BigInteger. - * - * The string is in big-endian byte-order: the most significant byte is in the zeroth element. - * - * If `$signed` is true, the output will be in two's-complement representation, and a sign bit will be prepended to - * the output. If `$signed` is false, no sign bit will be prepended, and this method will throw an exception if the - * number is negative. - * - * The string will contain the minimum number of bytes required to represent this BigInteger, including a sign bit - * if `$signed` is true. - * - * This representation is compatible with the `fromBytes()` factory method, as long as the `$signed` flags match. - * - * @param bool $signed Whether to output a signed number in two's-complement representation with a leading sign bit. - * - * @throws NegativeNumberException If $signed is false, and the number is negative. - */ - public function toBytes(bool $signed = true) : string - { - if (! $signed && $this->isNegative()) { - throw new NegativeNumberException('Cannot convert a negative number to a byte string when $signed is false.'); - } - - $hex = $this->abs()->toBase(16); - - if (\strlen($hex) % 2 !== 0) { - $hex = '0' . $hex; - } - - $baseHexLength = \strlen($hex); - - if ($signed) { - if ($this->isNegative()) { - $bin = \hex2bin($hex); - assert($bin !== false); - - $hex = \bin2hex(~$bin); - $hex = self::fromBase($hex, 16)->plus(1)->toBase(16); - - $hexLength = \strlen($hex); - - if ($hexLength < $baseHexLength) { - $hex = \str_repeat('0', $baseHexLength - $hexLength) . $hex; - } - - if ($hex[0] < '8') { - $hex = 'FF' . $hex; - } - } else { - if ($hex[0] >= '8') { - $hex = '00' . $hex; - } - } - } - - return \hex2bin($hex); - } - - public function __toString() : string - { - return $this->value; - } - - /** - * This method is required for serializing the object and SHOULD NOT be accessed directly. - * - * @internal - * - * @return array{value: string} - */ - public function __serialize(): array - { - return ['value' => $this->value]; - } - - /** - * This method is only here to allow unserializing the object and cannot be accessed directly. - * - * @internal - * @psalm-suppress RedundantPropertyInitializationCheck - * - * @param array{value: string} $data - * - * @throws \LogicException - */ - public function __unserialize(array $data): void - { - if (isset($this->value)) { - throw new \LogicException('__unserialize() is an internal function, it must not be called directly.'); - } - - $this->value = $data['value']; - } - - /** - * This method is required by interface Serializable and SHOULD NOT be accessed directly. - * - * @internal - */ - public function serialize() : string - { - return $this->value; - } - - /** - * This method is only here to implement interface Serializable and cannot be accessed directly. - * - * @internal - * @psalm-suppress RedundantPropertyInitializationCheck - * - * @throws \LogicException - */ - public function unserialize($value) : void - { - if (isset($this->value)) { - throw new \LogicException('unserialize() is an internal function, it must not be called directly.'); - } - - $this->value = $value; - } -} diff --git a/vendor/brick/math/src/BigNumber.php b/vendor/brick/math/src/BigNumber.php deleted file mode 100644 index 80146d20..00000000 --- a/vendor/brick/math/src/BigNumber.php +++ /dev/null @@ -1,512 +0,0 @@ -[\-\+])?' . - '(?:' . - '(?:' . - '(?[0-9]+)?' . - '(?\.)?' . - '(?[0-9]+)?' . - '(?:[eE](?[\-\+]?[0-9]+))?' . - ')|(?:' . - '(?[0-9]+)' . - '\/?' . - '(?[0-9]+)' . - ')' . - ')' . - '$/'; - - /** - * Creates a BigNumber of the given value. - * - * The concrete return type is dependent on the given value, with the following rules: - * - * - BigNumber instances are returned as is - * - integer numbers are returned as BigInteger - * - floating point numbers are converted to a string then parsed as such - * - strings containing a `/` character are returned as BigRational - * - strings containing a `.` character or using an exponential notation are returned as BigDecimal - * - strings containing only digits with an optional leading `+` or `-` sign are returned as BigInteger - * - * @throws NumberFormatException If the format of the number is not valid. - * @throws DivisionByZeroException If the value represents a rational number with a denominator of zero. - * - * @psalm-pure - */ - public static function of(BigNumber|int|float|string $value) : BigNumber - { - if ($value instanceof BigNumber) { - return $value; - } - - if (\is_int($value)) { - return new BigInteger((string) $value); - } - - $value = \is_float($value) ? self::floatToString($value) : $value; - - $throw = static function() use ($value) : void { - throw new NumberFormatException(\sprintf( - 'The given value "%s" does not represent a valid number.', - $value - )); - }; - - if (\preg_match(self::PARSE_REGEXP, $value, $matches) !== 1) { - $throw(); - } - - $getMatch = static fn(string $value): ?string => (($matches[$value] ?? '') !== '') ? $matches[$value] : null; - - $sign = $getMatch('sign'); - $numerator = $getMatch('numerator'); - $denominator = $getMatch('denominator'); - - if ($numerator !== null) { - assert($denominator !== null); - - if ($sign !== null) { - $numerator = $sign . $numerator; - } - - $numerator = self::cleanUp($numerator); - $denominator = self::cleanUp($denominator); - - if ($denominator === '0') { - throw DivisionByZeroException::denominatorMustNotBeZero(); - } - - return new BigRational( - new BigInteger($numerator), - new BigInteger($denominator), - false - ); - } - - $point = $getMatch('point'); - $integral = $getMatch('integral'); - $fractional = $getMatch('fractional'); - $exponent = $getMatch('exponent'); - - if ($integral === null && $fractional === null) { - $throw(); - } - - if ($integral === null) { - $integral = '0'; - } - - if ($point !== null || $exponent !== null) { - $fractional = ($fractional ?? ''); - $exponent = ($exponent !== null) ? (int) $exponent : 0; - - if ($exponent === PHP_INT_MIN || $exponent === PHP_INT_MAX) { - throw new NumberFormatException('Exponent too large.'); - } - - $unscaledValue = self::cleanUp(($sign ?? ''). $integral . $fractional); - - $scale = \strlen($fractional) - $exponent; - - if ($scale < 0) { - if ($unscaledValue !== '0') { - $unscaledValue .= \str_repeat('0', - $scale); - } - $scale = 0; - } - - return new BigDecimal($unscaledValue, $scale); - } - - $integral = self::cleanUp(($sign ?? '') . $integral); - - return new BigInteger($integral); - } - - /** - * Safely converts float to string, avoiding locale-dependent issues. - * - * @see https://github.com/brick/math/pull/20 - * - * @psalm-pure - * @psalm-suppress ImpureFunctionCall - */ - private static function floatToString(float $float) : string - { - $currentLocale = \setlocale(LC_NUMERIC, '0'); - \setlocale(LC_NUMERIC, 'C'); - - $result = (string) $float; - - \setlocale(LC_NUMERIC, $currentLocale); - - return $result; - } - - /** - * Proxy method to access BigInteger's protected constructor from sibling classes. - * - * @internal - * @psalm-pure - */ - protected function newBigInteger(string $value) : BigInteger - { - return new BigInteger($value); - } - - /** - * Proxy method to access BigDecimal's protected constructor from sibling classes. - * - * @internal - * @psalm-pure - */ - protected function newBigDecimal(string $value, int $scale = 0) : BigDecimal - { - return new BigDecimal($value, $scale); - } - - /** - * Proxy method to access BigRational's protected constructor from sibling classes. - * - * @internal - * @psalm-pure - */ - protected function newBigRational(BigInteger $numerator, BigInteger $denominator, bool $checkDenominator) : BigRational - { - return new BigRational($numerator, $denominator, $checkDenominator); - } - - /** - * Returns the minimum of the given values. - * - * @param BigNumber|int|float|string ...$values The numbers to compare. All the numbers need to be convertible - * to an instance of the class this method is called on. - * - * @throws \InvalidArgumentException If no values are given. - * @throws MathException If an argument is not valid. - * - * @psalm-suppress LessSpecificReturnStatement - * @psalm-suppress MoreSpecificReturnType - * @psalm-pure - */ - public static function min(BigNumber|int|float|string ...$values) : static - { - $min = null; - - foreach ($values as $value) { - $value = static::of($value); - - if ($min === null || $value->isLessThan($min)) { - $min = $value; - } - } - - if ($min === null) { - throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.'); - } - - return $min; - } - - /** - * Returns the maximum of the given values. - * - * @param BigNumber|int|float|string ...$values The numbers to compare. All the numbers need to be convertible - * to an instance of the class this method is called on. - * - * @throws \InvalidArgumentException If no values are given. - * @throws MathException If an argument is not valid. - * - * @psalm-suppress LessSpecificReturnStatement - * @psalm-suppress MoreSpecificReturnType - * @psalm-pure - */ - public static function max(BigNumber|int|float|string ...$values) : static - { - $max = null; - - foreach ($values as $value) { - $value = static::of($value); - - if ($max === null || $value->isGreaterThan($max)) { - $max = $value; - } - } - - if ($max === null) { - throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.'); - } - - return $max; - } - - /** - * Returns the sum of the given values. - * - * @param BigNumber|int|float|string ...$values The numbers to add. All the numbers need to be convertible - * to an instance of the class this method is called on. - * - * @throws \InvalidArgumentException If no values are given. - * @throws MathException If an argument is not valid. - * - * @psalm-pure - */ - public static function sum(BigNumber|int|float|string ...$values) : static - { - /** @var static|null $sum */ - $sum = null; - - foreach ($values as $value) { - $value = static::of($value); - - $sum = $sum === null ? $value : self::add($sum, $value); - } - - if ($sum === null) { - throw new \InvalidArgumentException(__METHOD__ . '() expects at least one value.'); - } - - return $sum; - } - - /** - * Adds two BigNumber instances in the correct order to avoid a RoundingNecessaryException. - * - * @todo This could be better resolved by creating an abstract protected method in BigNumber, and leaving to - * concrete classes the responsibility to perform the addition themselves or delegate it to the given number, - * depending on their ability to perform the operation. This will also require a version bump because we're - * potentially breaking custom BigNumber implementations (if any...) - * - * @psalm-pure - */ - private static function add(BigNumber $a, BigNumber $b) : BigNumber - { - if ($a instanceof BigRational) { - return $a->plus($b); - } - - if ($b instanceof BigRational) { - return $b->plus($a); - } - - if ($a instanceof BigDecimal) { - return $a->plus($b); - } - - if ($b instanceof BigDecimal) { - return $b->plus($a); - } - - /** @var BigInteger $a */ - - return $a->plus($b); - } - - /** - * Removes optional leading zeros and + sign from the given number. - * - * @param string $number The number, validated as a non-empty string of digits with optional leading sign. - * - * @psalm-pure - */ - private static function cleanUp(string $number) : string - { - $firstChar = $number[0]; - - if ($firstChar === '+' || $firstChar === '-') { - $number = \substr($number, 1); - } - - $number = \ltrim($number, '0'); - - if ($number === '') { - return '0'; - } - - if ($firstChar === '-') { - return '-' . $number; - } - - return $number; - } - - /** - * Checks if this number is equal to the given one. - */ - public function isEqualTo(BigNumber|int|float|string $that) : bool - { - return $this->compareTo($that) === 0; - } - - /** - * Checks if this number is strictly lower than the given one. - */ - public function isLessThan(BigNumber|int|float|string $that) : bool - { - return $this->compareTo($that) < 0; - } - - /** - * Checks if this number is lower than or equal to the given one. - */ - public function isLessThanOrEqualTo(BigNumber|int|float|string $that) : bool - { - return $this->compareTo($that) <= 0; - } - - /** - * Checks if this number is strictly greater than the given one. - */ - public function isGreaterThan(BigNumber|int|float|string $that) : bool - { - return $this->compareTo($that) > 0; - } - - /** - * Checks if this number is greater than or equal to the given one. - */ - public function isGreaterThanOrEqualTo(BigNumber|int|float|string $that) : bool - { - return $this->compareTo($that) >= 0; - } - - /** - * Checks if this number equals zero. - */ - public function isZero() : bool - { - return $this->getSign() === 0; - } - - /** - * Checks if this number is strictly negative. - */ - public function isNegative() : bool - { - return $this->getSign() < 0; - } - - /** - * Checks if this number is negative or zero. - */ - public function isNegativeOrZero() : bool - { - return $this->getSign() <= 0; - } - - /** - * Checks if this number is strictly positive. - */ - public function isPositive() : bool - { - return $this->getSign() > 0; - } - - /** - * Checks if this number is positive or zero. - */ - public function isPositiveOrZero() : bool - { - return $this->getSign() >= 0; - } - - /** - * Returns the sign of this number. - * - * @return int -1 if the number is negative, 0 if zero, 1 if positive. - */ - abstract public function getSign() : int; - - /** - * Compares this number to the given one. - * - * @return int [-1,0,1] If `$this` is lower than, equal to, or greater than `$that`. - * - * @throws MathException If the number is not valid. - */ - abstract public function compareTo(BigNumber|int|float|string $that) : int; - - /** - * Converts this number to a BigInteger. - * - * @throws RoundingNecessaryException If this number cannot be converted to a BigInteger without rounding. - */ - abstract public function toBigInteger() : BigInteger; - - /** - * Converts this number to a BigDecimal. - * - * @throws RoundingNecessaryException If this number cannot be converted to a BigDecimal without rounding. - */ - abstract public function toBigDecimal() : BigDecimal; - - /** - * Converts this number to a BigRational. - */ - abstract public function toBigRational() : BigRational; - - /** - * Converts this number to a BigDecimal with the given scale, using rounding if necessary. - * - * @param int $scale The scale of the resulting `BigDecimal`. - * @param int $roundingMode A `RoundingMode` constant. - * - * @throws RoundingNecessaryException If this number cannot be converted to the given scale without rounding. - * This only applies when RoundingMode::UNNECESSARY is used. - */ - abstract public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal; - - /** - * Returns the exact value of this number as a native integer. - * - * If this number cannot be converted to a native integer without losing precision, an exception is thrown. - * Note that the acceptable range for an integer depends on the platform and differs for 32-bit and 64-bit. - * - * @throws MathException If this number cannot be exactly converted to a native integer. - */ - abstract public function toInt() : int; - - /** - * Returns an approximation of this number as a floating-point value. - * - * Note that this method can discard information as the precision of a floating-point value - * is inherently limited. - * - * If the number is greater than the largest representable floating point number, positive infinity is returned. - * If the number is less than the smallest representable floating point number, negative infinity is returned. - */ - abstract public function toFloat() : float; - - /** - * Returns a string representation of this number. - * - * The output of this method can be parsed by the `of()` factory method; - * this will yield an object equal to this one, without any information loss. - */ - abstract public function __toString() : string; - - public function jsonSerialize() : string - { - return $this->__toString(); - } -} diff --git a/vendor/brick/math/src/BigRational.php b/vendor/brick/math/src/BigRational.php deleted file mode 100644 index 31f2904f..00000000 --- a/vendor/brick/math/src/BigRational.php +++ /dev/null @@ -1,445 +0,0 @@ -isZero()) { - throw DivisionByZeroException::denominatorMustNotBeZero(); - } - - if ($denominator->isNegative()) { - $numerator = $numerator->negated(); - $denominator = $denominator->negated(); - } - } - - $this->numerator = $numerator; - $this->denominator = $denominator; - } - - /** - * Creates a BigRational of the given value. - * - * @throws MathException If the value cannot be converted to a BigRational. - * - * @psalm-pure - */ - public static function of(BigNumber|int|float|string $value) : BigRational - { - return parent::of($value)->toBigRational(); - } - - /** - * Creates a BigRational out of a numerator and a denominator. - * - * If the denominator is negative, the signs of both the numerator and the denominator - * will be inverted to ensure that the denominator is always positive. - * - * @param BigNumber|int|float|string $numerator The numerator. Must be convertible to a BigInteger. - * @param BigNumber|int|float|string $denominator The denominator. Must be convertible to a BigInteger. - * - * @throws NumberFormatException If an argument does not represent a valid number. - * @throws RoundingNecessaryException If an argument represents a non-integer number. - * @throws DivisionByZeroException If the denominator is zero. - * - * @psalm-pure - */ - public static function nd( - BigNumber|int|float|string $numerator, - BigNumber|int|float|string $denominator, - ) : BigRational { - $numerator = BigInteger::of($numerator); - $denominator = BigInteger::of($denominator); - - return new BigRational($numerator, $denominator, true); - } - - /** - * Returns a BigRational representing zero. - * - * @psalm-pure - */ - public static function zero() : BigRational - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigRational|null $zero - */ - static $zero; - - if ($zero === null) { - $zero = new BigRational(BigInteger::zero(), BigInteger::one(), false); - } - - return $zero; - } - - /** - * Returns a BigRational representing one. - * - * @psalm-pure - */ - public static function one() : BigRational - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigRational|null $one - */ - static $one; - - if ($one === null) { - $one = new BigRational(BigInteger::one(), BigInteger::one(), false); - } - - return $one; - } - - /** - * Returns a BigRational representing ten. - * - * @psalm-pure - */ - public static function ten() : BigRational - { - /** - * @psalm-suppress ImpureStaticVariable - * @var BigRational|null $ten - */ - static $ten; - - if ($ten === null) { - $ten = new BigRational(BigInteger::ten(), BigInteger::one(), false); - } - - return $ten; - } - - public function getNumerator() : BigInteger - { - return $this->numerator; - } - - public function getDenominator() : BigInteger - { - return $this->denominator; - } - - /** - * Returns the quotient of the division of the numerator by the denominator. - */ - public function quotient() : BigInteger - { - return $this->numerator->quotient($this->denominator); - } - - /** - * Returns the remainder of the division of the numerator by the denominator. - */ - public function remainder() : BigInteger - { - return $this->numerator->remainder($this->denominator); - } - - /** - * Returns the quotient and remainder of the division of the numerator by the denominator. - * - * @return BigInteger[] - */ - public function quotientAndRemainder() : array - { - return $this->numerator->quotientAndRemainder($this->denominator); - } - - /** - * Returns the sum of this number and the given one. - * - * @param BigNumber|int|float|string $that The number to add. - * - * @throws MathException If the number is not valid. - */ - public function plus(BigNumber|int|float|string $that) : BigRational - { - $that = BigRational::of($that); - - $numerator = $this->numerator->multipliedBy($that->denominator); - $numerator = $numerator->plus($that->numerator->multipliedBy($this->denominator)); - $denominator = $this->denominator->multipliedBy($that->denominator); - - return new BigRational($numerator, $denominator, false); - } - - /** - * Returns the difference of this number and the given one. - * - * @param BigNumber|int|float|string $that The number to subtract. - * - * @throws MathException If the number is not valid. - */ - public function minus(BigNumber|int|float|string $that) : BigRational - { - $that = BigRational::of($that); - - $numerator = $this->numerator->multipliedBy($that->denominator); - $numerator = $numerator->minus($that->numerator->multipliedBy($this->denominator)); - $denominator = $this->denominator->multipliedBy($that->denominator); - - return new BigRational($numerator, $denominator, false); - } - - /** - * Returns the product of this number and the given one. - * - * @param BigNumber|int|float|string $that The multiplier. - * - * @throws MathException If the multiplier is not a valid number. - */ - public function multipliedBy(BigNumber|int|float|string $that) : BigRational - { - $that = BigRational::of($that); - - $numerator = $this->numerator->multipliedBy($that->numerator); - $denominator = $this->denominator->multipliedBy($that->denominator); - - return new BigRational($numerator, $denominator, false); - } - - /** - * Returns the result of the division of this number by the given one. - * - * @param BigNumber|int|float|string $that The divisor. - * - * @throws MathException If the divisor is not a valid number, or is zero. - */ - public function dividedBy(BigNumber|int|float|string $that) : BigRational - { - $that = BigRational::of($that); - - $numerator = $this->numerator->multipliedBy($that->denominator); - $denominator = $this->denominator->multipliedBy($that->numerator); - - return new BigRational($numerator, $denominator, true); - } - - /** - * Returns this number exponentiated to the given value. - * - * @throws \InvalidArgumentException If the exponent is not in the range 0 to 1,000,000. - */ - public function power(int $exponent) : BigRational - { - if ($exponent === 0) { - $one = BigInteger::one(); - - return new BigRational($one, $one, false); - } - - if ($exponent === 1) { - return $this; - } - - return new BigRational( - $this->numerator->power($exponent), - $this->denominator->power($exponent), - false - ); - } - - /** - * Returns the reciprocal of this BigRational. - * - * The reciprocal has the numerator and denominator swapped. - * - * @throws DivisionByZeroException If the numerator is zero. - */ - public function reciprocal() : BigRational - { - return new BigRational($this->denominator, $this->numerator, true); - } - - /** - * Returns the absolute value of this BigRational. - */ - public function abs() : BigRational - { - return new BigRational($this->numerator->abs(), $this->denominator, false); - } - - /** - * Returns the negated value of this BigRational. - */ - public function negated() : BigRational - { - return new BigRational($this->numerator->negated(), $this->denominator, false); - } - - /** - * Returns the simplified value of this BigRational. - */ - public function simplified() : BigRational - { - $gcd = $this->numerator->gcd($this->denominator); - - $numerator = $this->numerator->quotient($gcd); - $denominator = $this->denominator->quotient($gcd); - - return new BigRational($numerator, $denominator, false); - } - - public function compareTo(BigNumber|int|float|string $that) : int - { - return $this->minus($that)->getSign(); - } - - public function getSign() : int - { - return $this->numerator->getSign(); - } - - public function toBigInteger() : BigInteger - { - $simplified = $this->simplified(); - - if (! $simplified->denominator->isEqualTo(1)) { - throw new RoundingNecessaryException('This rational number cannot be represented as an integer value without rounding.'); - } - - return $simplified->numerator; - } - - public function toBigDecimal() : BigDecimal - { - return $this->numerator->toBigDecimal()->exactlyDividedBy($this->denominator); - } - - public function toBigRational() : BigRational - { - return $this; - } - - public function toScale(int $scale, int $roundingMode = RoundingMode::UNNECESSARY) : BigDecimal - { - return $this->numerator->toBigDecimal()->dividedBy($this->denominator, $scale, $roundingMode); - } - - public function toInt() : int - { - return $this->toBigInteger()->toInt(); - } - - public function toFloat() : float - { - $simplified = $this->simplified(); - return $simplified->numerator->toFloat() / $simplified->denominator->toFloat(); - } - - public function __toString() : string - { - $numerator = (string) $this->numerator; - $denominator = (string) $this->denominator; - - if ($denominator === '1') { - return $numerator; - } - - return $this->numerator . '/' . $this->denominator; - } - - /** - * This method is required for serializing the object and SHOULD NOT be accessed directly. - * - * @internal - * - * @return array{numerator: BigInteger, denominator: BigInteger} - */ - public function __serialize(): array - { - return ['numerator' => $this->numerator, 'denominator' => $this->denominator]; - } - - /** - * This method is only here to allow unserializing the object and cannot be accessed directly. - * - * @internal - * @psalm-suppress RedundantPropertyInitializationCheck - * - * @param array{numerator: BigInteger, denominator: BigInteger} $data - * - * @throws \LogicException - */ - public function __unserialize(array $data): void - { - if (isset($this->numerator)) { - throw new \LogicException('__unserialize() is an internal function, it must not be called directly.'); - } - - $this->numerator = $data['numerator']; - $this->denominator = $data['denominator']; - } - - /** - * This method is required by interface Serializable and SHOULD NOT be accessed directly. - * - * @internal - */ - public function serialize() : string - { - return $this->numerator . '/' . $this->denominator; - } - - /** - * This method is only here to implement interface Serializable and cannot be accessed directly. - * - * @internal - * @psalm-suppress RedundantPropertyInitializationCheck - * - * @throws \LogicException - */ - public function unserialize($value) : void - { - if (isset($this->numerator)) { - throw new \LogicException('unserialize() is an internal function, it must not be called directly.'); - } - - [$numerator, $denominator] = \explode('/', $value); - - $this->numerator = BigInteger::of($numerator); - $this->denominator = BigInteger::of($denominator); - } -} diff --git a/vendor/brick/math/src/Exception/DivisionByZeroException.php b/vendor/brick/math/src/Exception/DivisionByZeroException.php deleted file mode 100644 index ce7769ac..00000000 --- a/vendor/brick/math/src/Exception/DivisionByZeroException.php +++ /dev/null @@ -1,35 +0,0 @@ - 126) { - $char = \strtoupper(\dechex($ord)); - - if ($ord < 10) { - $char = '0' . $char; - } - } else { - $char = '"' . $char . '"'; - } - - return new self(sprintf('Char %s is not a valid character in the given alphabet.', $char)); - } -} diff --git a/vendor/brick/math/src/Exception/RoundingNecessaryException.php b/vendor/brick/math/src/Exception/RoundingNecessaryException.php deleted file mode 100644 index 57bfcd84..00000000 --- a/vendor/brick/math/src/Exception/RoundingNecessaryException.php +++ /dev/null @@ -1,19 +0,0 @@ -init($a, $b); - - if ($aNeg && ! $bNeg) { - return -1; - } - - if ($bNeg && ! $aNeg) { - return 1; - } - - $aLen = \strlen($aDig); - $bLen = \strlen($bDig); - - if ($aLen < $bLen) { - $result = -1; - } elseif ($aLen > $bLen) { - $result = 1; - } else { - $result = $aDig <=> $bDig; - } - - return $aNeg ? -$result : $result; - } - - /** - * Adds two numbers. - */ - abstract public function add(string $a, string $b) : string; - - /** - * Subtracts two numbers. - */ - abstract public function sub(string $a, string $b) : string; - - /** - * Multiplies two numbers. - */ - abstract public function mul(string $a, string $b) : string; - - /** - * Returns the quotient of the division of two numbers. - * - * @param string $a The dividend. - * @param string $b The divisor, must not be zero. - * - * @return string The quotient. - */ - abstract public function divQ(string $a, string $b) : string; - - /** - * Returns the remainder of the division of two numbers. - * - * @param string $a The dividend. - * @param string $b The divisor, must not be zero. - * - * @return string The remainder. - */ - abstract public function divR(string $a, string $b) : string; - - /** - * Returns the quotient and remainder of the division of two numbers. - * - * @param string $a The dividend. - * @param string $b The divisor, must not be zero. - * - * @return array{string, string} An array containing the quotient and remainder. - */ - abstract public function divQR(string $a, string $b) : array; - - /** - * Exponentiates a number. - * - * @param string $a The base number. - * @param int $e The exponent, validated as an integer between 0 and MAX_POWER. - * - * @return string The power. - */ - abstract public function pow(string $a, int $e) : string; - - /** - * @param string $b The modulus; must not be zero. - */ - public function mod(string $a, string $b) : string - { - return $this->divR($this->add($this->divR($a, $b), $b), $b); - } - - /** - * Returns the modular multiplicative inverse of $x modulo $m. - * - * If $x has no multiplicative inverse mod m, this method must return null. - * - * This method can be overridden by the concrete implementation if the underlying library has built-in support. - * - * @param string $m The modulus; must not be negative or zero. - */ - public function modInverse(string $x, string $m) : ?string - { - if ($m === '1') { - return '0'; - } - - $modVal = $x; - - if ($x[0] === '-' || ($this->cmp($this->abs($x), $m) >= 0)) { - $modVal = $this->mod($x, $m); - } - - [$g, $x] = $this->gcdExtended($modVal, $m); - - if ($g !== '1') { - return null; - } - - return $this->mod($this->add($this->mod($x, $m), $m), $m); - } - - /** - * Raises a number into power with modulo. - * - * @param string $base The base number; must be positive or zero. - * @param string $exp The exponent; must be positive or zero. - * @param string $mod The modulus; must be strictly positive. - */ - abstract public function modPow(string $base, string $exp, string $mod) : string; - - /** - * Returns the greatest common divisor of the two numbers. - * - * This method can be overridden by the concrete implementation if the underlying library - * has built-in support for GCD calculations. - * - * @return string The GCD, always positive, or zero if both arguments are zero. - */ - public function gcd(string $a, string $b) : string - { - if ($a === '0') { - return $this->abs($b); - } - - if ($b === '0') { - return $this->abs($a); - } - - return $this->gcd($b, $this->divR($a, $b)); - } - - /** - * @return array{string, string, string} GCD, X, Y - */ - private function gcdExtended(string $a, string $b) : array - { - if ($a === '0') { - return [$b, '0', '1']; - } - - [$gcd, $x1, $y1] = $this->gcdExtended($this->mod($b, $a), $a); - - $x = $this->sub($y1, $this->mul($this->divQ($b, $a), $x1)); - $y = $x1; - - return [$gcd, $x, $y]; - } - - /** - * Returns the square root of the given number, rounded down. - * - * The result is the largest x such that x² ≤ n. - * The input MUST NOT be negative. - */ - abstract public function sqrt(string $n) : string; - - /** - * Converts a number from an arbitrary base. - * - * This method can be overridden by the concrete implementation if the underlying library - * has built-in support for base conversion. - * - * @param string $number The number, positive or zero, non-empty, case-insensitively validated for the given base. - * @param int $base The base of the number, validated from 2 to 36. - * - * @return string The converted number, following the Calculator conventions. - */ - public function fromBase(string $number, int $base) : string - { - return $this->fromArbitraryBase(\strtolower($number), self::ALPHABET, $base); - } - - /** - * Converts a number to an arbitrary base. - * - * This method can be overridden by the concrete implementation if the underlying library - * has built-in support for base conversion. - * - * @param string $number The number to convert, following the Calculator conventions. - * @param int $base The base to convert to, validated from 2 to 36. - * - * @return string The converted number, lowercase. - */ - public function toBase(string $number, int $base) : string - { - $negative = ($number[0] === '-'); - - if ($negative) { - $number = \substr($number, 1); - } - - $number = $this->toArbitraryBase($number, self::ALPHABET, $base); - - if ($negative) { - return '-' . $number; - } - - return $number; - } - - /** - * Converts a non-negative number in an arbitrary base using a custom alphabet, to base 10. - * - * @param string $number The number to convert, validated as a non-empty string, - * containing only chars in the given alphabet/base. - * @param string $alphabet The alphabet that contains every digit, validated as 2 chars minimum. - * @param int $base The base of the number, validated from 2 to alphabet length. - * - * @return string The number in base 10, following the Calculator conventions. - */ - final public function fromArbitraryBase(string $number, string $alphabet, int $base) : string - { - // remove leading "zeros" - $number = \ltrim($number, $alphabet[0]); - - if ($number === '') { - return '0'; - } - - // optimize for "one" - if ($number === $alphabet[1]) { - return '1'; - } - - $result = '0'; - $power = '1'; - - $base = (string) $base; - - for ($i = \strlen($number) - 1; $i >= 0; $i--) { - $index = \strpos($alphabet, $number[$i]); - - if ($index !== 0) { - $result = $this->add($result, ($index === 1) - ? $power - : $this->mul($power, (string) $index) - ); - } - - if ($i !== 0) { - $power = $this->mul($power, $base); - } - } - - return $result; - } - - /** - * Converts a non-negative number to an arbitrary base using a custom alphabet. - * - * @param string $number The number to convert, positive or zero, following the Calculator conventions. - * @param string $alphabet The alphabet that contains every digit, validated as 2 chars minimum. - * @param int $base The base to convert to, validated from 2 to alphabet length. - * - * @return string The converted number in the given alphabet. - */ - final public function toArbitraryBase(string $number, string $alphabet, int $base) : string - { - if ($number === '0') { - return $alphabet[0]; - } - - $base = (string) $base; - $result = ''; - - while ($number !== '0') { - [$number, $remainder] = $this->divQR($number, $base); - $remainder = (int) $remainder; - - $result .= $alphabet[$remainder]; - } - - return \strrev($result); - } - - /** - * Performs a rounded division. - * - * Rounding is performed when the remainder of the division is not zero. - * - * @param string $a The dividend. - * @param string $b The divisor, must not be zero. - * @param int $roundingMode The rounding mode. - * - * @throws \InvalidArgumentException If the rounding mode is invalid. - * @throws RoundingNecessaryException If RoundingMode::UNNECESSARY is provided but rounding is necessary. - * - * @psalm-suppress ImpureFunctionCall - */ - final public function divRound(string $a, string $b, int $roundingMode) : string - { - [$quotient, $remainder] = $this->divQR($a, $b); - - $hasDiscardedFraction = ($remainder !== '0'); - $isPositiveOrZero = ($a[0] === '-') === ($b[0] === '-'); - - $discardedFractionSign = function() use ($remainder, $b) : int { - $r = $this->abs($this->mul($remainder, '2')); - $b = $this->abs($b); - - return $this->cmp($r, $b); - }; - - $increment = false; - - switch ($roundingMode) { - case RoundingMode::UNNECESSARY: - if ($hasDiscardedFraction) { - throw RoundingNecessaryException::roundingNecessary(); - } - break; - - case RoundingMode::UP: - $increment = $hasDiscardedFraction; - break; - - case RoundingMode::DOWN: - break; - - case RoundingMode::CEILING: - $increment = $hasDiscardedFraction && $isPositiveOrZero; - break; - - case RoundingMode::FLOOR: - $increment = $hasDiscardedFraction && ! $isPositiveOrZero; - break; - - case RoundingMode::HALF_UP: - $increment = $discardedFractionSign() >= 0; - break; - - case RoundingMode::HALF_DOWN: - $increment = $discardedFractionSign() > 0; - break; - - case RoundingMode::HALF_CEILING: - $increment = $isPositiveOrZero ? $discardedFractionSign() >= 0 : $discardedFractionSign() > 0; - break; - - case RoundingMode::HALF_FLOOR: - $increment = $isPositiveOrZero ? $discardedFractionSign() > 0 : $discardedFractionSign() >= 0; - break; - - case RoundingMode::HALF_EVEN: - $lastDigit = (int) $quotient[-1]; - $lastDigitIsEven = ($lastDigit % 2 === 0); - $increment = $lastDigitIsEven ? $discardedFractionSign() > 0 : $discardedFractionSign() >= 0; - break; - - default: - throw new \InvalidArgumentException('Invalid rounding mode.'); - } - - if ($increment) { - return $this->add($quotient, $isPositiveOrZero ? '1' : '-1'); - } - - return $quotient; - } - - /** - * Calculates bitwise AND of two numbers. - * - * This method can be overridden by the concrete implementation if the underlying library - * has built-in support for bitwise operations. - */ - public function and(string $a, string $b) : string - { - return $this->bitwise('and', $a, $b); - } - - /** - * Calculates bitwise OR of two numbers. - * - * This method can be overridden by the concrete implementation if the underlying library - * has built-in support for bitwise operations. - */ - public function or(string $a, string $b) : string - { - return $this->bitwise('or', $a, $b); - } - - /** - * Calculates bitwise XOR of two numbers. - * - * This method can be overridden by the concrete implementation if the underlying library - * has built-in support for bitwise operations. - */ - public function xor(string $a, string $b) : string - { - return $this->bitwise('xor', $a, $b); - } - - /** - * Performs a bitwise operation on a decimal number. - * - * @param 'and'|'or'|'xor' $operator The operator to use. - * @param string $a The left operand. - * @param string $b The right operand. - */ - private function bitwise(string $operator, string $a, string $b) : string - { - [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b); - - $aBin = $this->toBinary($aDig); - $bBin = $this->toBinary($bDig); - - $aLen = \strlen($aBin); - $bLen = \strlen($bBin); - - if ($aLen > $bLen) { - $bBin = \str_repeat("\x00", $aLen - $bLen) . $bBin; - } elseif ($bLen > $aLen) { - $aBin = \str_repeat("\x00", $bLen - $aLen) . $aBin; - } - - if ($aNeg) { - $aBin = $this->twosComplement($aBin); - } - if ($bNeg) { - $bBin = $this->twosComplement($bBin); - } - - switch ($operator) { - case 'and': - $value = $aBin & $bBin; - $negative = ($aNeg and $bNeg); - break; - - case 'or': - $value = $aBin | $bBin; - $negative = ($aNeg or $bNeg); - break; - - case 'xor': - $value = $aBin ^ $bBin; - $negative = ($aNeg xor $bNeg); - break; - - // @codeCoverageIgnoreStart - default: - throw new \InvalidArgumentException('Invalid bitwise operator.'); - // @codeCoverageIgnoreEnd - } - - if ($negative) { - $value = $this->twosComplement($value); - } - - $result = $this->toDecimal($value); - - return $negative ? $this->neg($result) : $result; - } - - /** - * @param string $number A positive, binary number. - */ - private function twosComplement(string $number) : string - { - $xor = \str_repeat("\xff", \strlen($number)); - - $number ^= $xor; - - for ($i = \strlen($number) - 1; $i >= 0; $i--) { - $byte = \ord($number[$i]); - - if (++$byte !== 256) { - $number[$i] = \chr($byte); - break; - } - - $number[$i] = "\x00"; - - if ($i === 0) { - $number = "\x01" . $number; - } - } - - return $number; - } - - /** - * Converts a decimal number to a binary string. - * - * @param string $number The number to convert, positive or zero, only digits. - */ - private function toBinary(string $number) : string - { - $result = ''; - - while ($number !== '0') { - [$number, $remainder] = $this->divQR($number, '256'); - $result .= \chr((int) $remainder); - } - - return \strrev($result); - } - - /** - * Returns the positive decimal representation of a binary number. - * - * @param string $bytes The bytes representing the number. - */ - private function toDecimal(string $bytes) : string - { - $result = '0'; - $power = '1'; - - for ($i = \strlen($bytes) - 1; $i >= 0; $i--) { - $index = \ord($bytes[$i]); - - if ($index !== 0) { - $result = $this->add($result, ($index === 1) - ? $power - : $this->mul($power, (string) $index) - ); - } - - if ($i !== 0) { - $power = $this->mul($power, '256'); - } - } - - return $result; - } -} diff --git a/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php b/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php deleted file mode 100644 index 5457a3c9..00000000 --- a/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php +++ /dev/null @@ -1,75 +0,0 @@ -maxDigits = 9; - break; - - case 8: - $this->maxDigits = 18; - break; - - default: - throw new \RuntimeException('The platform is not 32-bit or 64-bit as expected.'); - } - } - - public function add(string $a, string $b) : string - { - /** - * @psalm-var numeric-string $a - * @psalm-var numeric-string $b - */ - $result = $a + $b; - - if (is_int($result)) { - return (string) $result; - } - - if ($a === '0') { - return $b; - } - - if ($b === '0') { - return $a; - } - - [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b); - - $result = $aNeg === $bNeg ? $this->doAdd($aDig, $bDig) : $this->doSub($aDig, $bDig); - - if ($aNeg) { - $result = $this->neg($result); - } - - return $result; - } - - public function sub(string $a, string $b) : string - { - return $this->add($a, $this->neg($b)); - } - - public function mul(string $a, string $b) : string - { - /** - * @psalm-var numeric-string $a - * @psalm-var numeric-string $b - */ - $result = $a * $b; - - if (is_int($result)) { - return (string) $result; - } - - if ($a === '0' || $b === '0') { - return '0'; - } - - if ($a === '1') { - return $b; - } - - if ($b === '1') { - return $a; - } - - if ($a === '-1') { - return $this->neg($b); - } - - if ($b === '-1') { - return $this->neg($a); - } - - [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b); - - $result = $this->doMul($aDig, $bDig); - - if ($aNeg !== $bNeg) { - $result = $this->neg($result); - } - - return $result; - } - - public function divQ(string $a, string $b) : string - { - return $this->divQR($a, $b)[0]; - } - - public function divR(string $a, string $b): string - { - return $this->divQR($a, $b)[1]; - } - - public function divQR(string $a, string $b) : array - { - if ($a === '0') { - return ['0', '0']; - } - - if ($a === $b) { - return ['1', '0']; - } - - if ($b === '1') { - return [$a, '0']; - } - - if ($b === '-1') { - return [$this->neg($a), '0']; - } - - /** @psalm-var numeric-string $a */ - $na = $a * 1; // cast to number - - if (is_int($na)) { - /** @psalm-var numeric-string $b */ - $nb = $b * 1; - - if (is_int($nb)) { - // the only division that may overflow is PHP_INT_MIN / -1, - // which cannot happen here as we've already handled a divisor of -1 above. - $r = $na % $nb; - $q = ($na - $r) / $nb; - - assert(is_int($q)); - - return [ - (string) $q, - (string) $r - ]; - } - } - - [$aNeg, $bNeg, $aDig, $bDig] = $this->init($a, $b); - - [$q, $r] = $this->doDiv($aDig, $bDig); - - if ($aNeg !== $bNeg) { - $q = $this->neg($q); - } - - if ($aNeg) { - $r = $this->neg($r); - } - - return [$q, $r]; - } - - public function pow(string $a, int $e) : string - { - if ($e === 0) { - return '1'; - } - - if ($e === 1) { - return $a; - } - - $odd = $e % 2; - $e -= $odd; - - $aa = $this->mul($a, $a); - - /** @psalm-suppress PossiblyInvalidArgument We're sure that $e / 2 is an int now */ - $result = $this->pow($aa, $e / 2); - - if ($odd === 1) { - $result = $this->mul($result, $a); - } - - return $result; - } - - /** - * Algorithm from: https://www.geeksforgeeks.org/modular-exponentiation-power-in-modular-arithmetic/ - */ - public function modPow(string $base, string $exp, string $mod) : string - { - // special case: the algorithm below fails with 0 power 0 mod 1 (returns 1 instead of 0) - if ($base === '0' && $exp === '0' && $mod === '1') { - return '0'; - } - - // special case: the algorithm below fails with power 0 mod 1 (returns 1 instead of 0) - if ($exp === '0' && $mod === '1') { - return '0'; - } - - $x = $base; - - $res = '1'; - - // numbers are positive, so we can use remainder instead of modulo - $x = $this->divR($x, $mod); - - while ($exp !== '0') { - if (in_array($exp[-1], ['1', '3', '5', '7', '9'])) { // odd - $res = $this->divR($this->mul($res, $x), $mod); - } - - $exp = $this->divQ($exp, '2'); - $x = $this->divR($this->mul($x, $x), $mod); - } - - return $res; - } - - /** - * Adapted from https://cp-algorithms.com/num_methods/roots_newton.html - */ - public function sqrt(string $n) : string - { - if ($n === '0') { - return '0'; - } - - // initial approximation - $x = \str_repeat('9', \intdiv(\strlen($n), 2) ?: 1); - - $decreased = false; - - for (;;) { - $nx = $this->divQ($this->add($x, $this->divQ($n, $x)), '2'); - - if ($x === $nx || $this->cmp($nx, $x) > 0 && $decreased) { - break; - } - - $decreased = $this->cmp($nx, $x) < 0; - $x = $nx; - } - - return $x; - } - - /** - * Performs the addition of two non-signed large integers. - */ - private function doAdd(string $a, string $b) : string - { - [$a, $b, $length] = $this->pad($a, $b); - - $carry = 0; - $result = ''; - - for ($i = $length - $this->maxDigits;; $i -= $this->maxDigits) { - $blockLength = $this->maxDigits; - - if ($i < 0) { - $blockLength += $i; - /** @psalm-suppress LoopInvalidation */ - $i = 0; - } - - /** @psalm-var numeric-string $blockA */ - $blockA = \substr($a, $i, $blockLength); - - /** @psalm-var numeric-string $blockB */ - $blockB = \substr($b, $i, $blockLength); - - $sum = (string) ($blockA + $blockB + $carry); - $sumLength = \strlen($sum); - - if ($sumLength > $blockLength) { - $sum = \substr($sum, 1); - $carry = 1; - } else { - if ($sumLength < $blockLength) { - $sum = \str_repeat('0', $blockLength - $sumLength) . $sum; - } - $carry = 0; - } - - $result = $sum . $result; - - if ($i === 0) { - break; - } - } - - if ($carry === 1) { - $result = '1' . $result; - } - - return $result; - } - - /** - * Performs the subtraction of two non-signed large integers. - */ - private function doSub(string $a, string $b) : string - { - if ($a === $b) { - return '0'; - } - - // Ensure that we always subtract to a positive result: biggest minus smallest. - $cmp = $this->doCmp($a, $b); - - $invert = ($cmp === -1); - - if ($invert) { - $c = $a; - $a = $b; - $b = $c; - } - - [$a, $b, $length] = $this->pad($a, $b); - - $carry = 0; - $result = ''; - - $complement = 10 ** $this->maxDigits; - - for ($i = $length - $this->maxDigits;; $i -= $this->maxDigits) { - $blockLength = $this->maxDigits; - - if ($i < 0) { - $blockLength += $i; - /** @psalm-suppress LoopInvalidation */ - $i = 0; - } - - /** @psalm-var numeric-string $blockA */ - $blockA = \substr($a, $i, $blockLength); - - /** @psalm-var numeric-string $blockB */ - $blockB = \substr($b, $i, $blockLength); - - $sum = $blockA - $blockB - $carry; - - if ($sum < 0) { - $sum += $complement; - $carry = 1; - } else { - $carry = 0; - } - - $sum = (string) $sum; - $sumLength = \strlen($sum); - - if ($sumLength < $blockLength) { - $sum = \str_repeat('0', $blockLength - $sumLength) . $sum; - } - - $result = $sum . $result; - - if ($i === 0) { - break; - } - } - - // Carry cannot be 1 when the loop ends, as a > b - assert($carry === 0); - - $result = \ltrim($result, '0'); - - if ($invert) { - $result = $this->neg($result); - } - - return $result; - } - - /** - * Performs the multiplication of two non-signed large integers. - */ - private function doMul(string $a, string $b) : string - { - $x = \strlen($a); - $y = \strlen($b); - - $maxDigits = \intdiv($this->maxDigits, 2); - $complement = 10 ** $maxDigits; - - $result = '0'; - - for ($i = $x - $maxDigits;; $i -= $maxDigits) { - $blockALength = $maxDigits; - - if ($i < 0) { - $blockALength += $i; - /** @psalm-suppress LoopInvalidation */ - $i = 0; - } - - $blockA = (int) \substr($a, $i, $blockALength); - - $line = ''; - $carry = 0; - - for ($j = $y - $maxDigits;; $j -= $maxDigits) { - $blockBLength = $maxDigits; - - if ($j < 0) { - $blockBLength += $j; - /** @psalm-suppress LoopInvalidation */ - $j = 0; - } - - $blockB = (int) \substr($b, $j, $blockBLength); - - $mul = $blockA * $blockB + $carry; - $value = $mul % $complement; - $carry = ($mul - $value) / $complement; - - $value = (string) $value; - $value = \str_pad($value, $maxDigits, '0', STR_PAD_LEFT); - - $line = $value . $line; - - if ($j === 0) { - break; - } - } - - if ($carry !== 0) { - $line = $carry . $line; - } - - $line = \ltrim($line, '0'); - - if ($line !== '') { - $line .= \str_repeat('0', $x - $blockALength - $i); - $result = $this->add($result, $line); - } - - if ($i === 0) { - break; - } - } - - return $result; - } - - /** - * Performs the division of two non-signed large integers. - * - * @return string[] The quotient and remainder. - */ - private function doDiv(string $a, string $b) : array - { - $cmp = $this->doCmp($a, $b); - - if ($cmp === -1) { - return ['0', $a]; - } - - $x = \strlen($a); - $y = \strlen($b); - - // we now know that a >= b && x >= y - - $q = '0'; // quotient - $r = $a; // remainder - $z = $y; // focus length, always $y or $y+1 - - for (;;) { - $focus = \substr($a, 0, $z); - - $cmp = $this->doCmp($focus, $b); - - if ($cmp === -1) { - if ($z === $x) { // remainder < dividend - break; - } - - $z++; - } - - $zeros = \str_repeat('0', $x - $z); - - $q = $this->add($q, '1' . $zeros); - $a = $this->sub($a, $b . $zeros); - - $r = $a; - - if ($r === '0') { // remainder == 0 - break; - } - - $x = \strlen($a); - - if ($x < $y) { // remainder < dividend - break; - } - - $z = $y; - } - - return [$q, $r]; - } - - /** - * Compares two non-signed large numbers. - * - * @return int [-1, 0, 1] - */ - private function doCmp(string $a, string $b) : int - { - $x = \strlen($a); - $y = \strlen($b); - - $cmp = $x <=> $y; - - if ($cmp !== 0) { - return $cmp; - } - - return \strcmp($a, $b) <=> 0; // enforce [-1, 0, 1] - } - - /** - * Pads the left of one of the given numbers with zeros if necessary to make both numbers the same length. - * - * The numbers must only consist of digits, without leading minus sign. - * - * @return array{string, string, int} - */ - private function pad(string $a, string $b) : array - { - $x = \strlen($a); - $y = \strlen($b); - - if ($x > $y) { - $b = \str_repeat('0', $x - $y) . $b; - - return [$a, $b, $x]; - } - - if ($x < $y) { - $a = \str_repeat('0', $y - $x) . $a; - - return [$a, $b, $y]; - } - - return [$a, $b, $x]; - } -} diff --git a/vendor/brick/math/src/RoundingMode.php b/vendor/brick/math/src/RoundingMode.php deleted file mode 100644 index 06936d8d..00000000 --- a/vendor/brick/math/src/RoundingMode.php +++ /dev/null @@ -1,107 +0,0 @@ -= 0.5; otherwise, behaves as for DOWN. - * Note that this is the rounding mode commonly taught at school. - */ - public const HALF_UP = 5; - - /** - * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round down. - * - * Behaves as for UP if the discarded fraction is > 0.5; otherwise, behaves as for DOWN. - */ - public const HALF_DOWN = 6; - - /** - * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round towards positive infinity. - * - * If the result is positive, behaves as for HALF_UP; if negative, behaves as for HALF_DOWN. - */ - public const HALF_CEILING = 7; - - /** - * Rounds towards "nearest neighbor" unless both neighbors are equidistant, in which case round towards negative infinity. - * - * If the result is positive, behaves as for HALF_DOWN; if negative, behaves as for HALF_UP. - */ - public const HALF_FLOOR = 8; - - /** - * Rounds towards the "nearest neighbor" unless both neighbors are equidistant, in which case rounds towards the even neighbor. - * - * Behaves as for HALF_UP if the digit to the left of the discarded fraction is odd; - * behaves as for HALF_DOWN if it's even. - * - * Note that this is the rounding mode that statistically minimizes - * cumulative error when applied repeatedly over a sequence of calculations. - * It is sometimes known as "Banker's rounding", and is chiefly used in the USA. - */ - public const HALF_EVEN = 9; -} diff --git a/vendor/carbonphp/carbon-doctrine-types/LICENSE b/vendor/carbonphp/carbon-doctrine-types/LICENSE deleted file mode 100644 index 2ee1671d..00000000 --- a/vendor/carbonphp/carbon-doctrine-types/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023 Carbon - -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/vendor/carbonphp/carbon-doctrine-types/README.md b/vendor/carbonphp/carbon-doctrine-types/README.md deleted file mode 100644 index 5a18121b..00000000 --- a/vendor/carbonphp/carbon-doctrine-types/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# carbonphp/carbon-doctrine-types - -Types to use Carbon in Doctrine - -## Documentation - -[Check how to use in the official Carbon documentation](https://carbon.nesbot.com/symfony/) - -This package is an externalization of [src/Carbon/Doctrine](https://github.com/briannesbitt/Carbon/tree/2.71.0/src/Carbon/Doctrine) -from `nestbot/carbon` package. - -Externalization allows to better deal with different versions of dbal. With -version 4.0 of dbal, it no longer sustainable to be compatible with all version -using a single code. diff --git a/vendor/carbonphp/carbon-doctrine-types/composer.json b/vendor/carbonphp/carbon-doctrine-types/composer.json deleted file mode 100644 index b5fd8a58..00000000 --- a/vendor/carbonphp/carbon-doctrine-types/composer.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "carbonphp/carbon-doctrine-types", - "description": "Types to use Carbon in Doctrine", - "type": "library", - "keywords": [ - "date", - "time", - "DateTime", - "Carbon", - "Doctrine" - ], - "require": { - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "doctrine/dbal": "^3.7.0", - "nesbot/carbon": "^2.71.0 || ^3.0.0", - "phpunit/phpunit": "^10.3" - }, - "conflict": { - "doctrine/dbal": "<3.7.0 || >=4.0.0" - }, - "license": "MIT", - "autoload": { - "psr-4": { - "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" - } - }, - "authors": [ - { - "name": "KyleKatarn", - "email": "kylekatarnls@gmail.com" - } - ], - "minimum-stability": "dev" -} diff --git a/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonDoctrineType.php b/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonDoctrineType.php deleted file mode 100644 index 8c42dc09..00000000 --- a/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/CarbonDoctrineType.php +++ /dev/null @@ -1,14 +0,0 @@ - - */ - protected function getCarbonClassName(): string - { - return Carbon::class; - } - - public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform): string - { - $precision = min( - $fieldDeclaration['precision'] ?? DateTimeDefaultPrecision::get(), - $this->getMaximumPrecision($platform), - ); - - $type = parent::getSQLDeclaration($fieldDeclaration, $platform); - - if (!$precision) { - return $type; - } - - if (str_contains($type, '(')) { - return preg_replace('/\(\d+\)/', "($precision)", $type); - } - - [$before, $after] = explode(' ', "$type "); - - return trim("$before($precision) $after"); - } - - /** - * @SuppressWarnings(PHPMD.UnusedFormalParameter) - * - * @return T|null - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - $class = $this->getCarbonClassName(); - - if ($value === null || is_a($value, $class)) { - return $value; - } - - if ($value instanceof DateTimeInterface) { - return $class::instance($value); - } - - $date = null; - $error = null; - - try { - $date = $class::parse($value); - } catch (Exception $exception) { - $error = $exception; - } - - if (!$date) { - throw ConversionException::conversionFailedFormat( - $value, - $this->getTypeName(), - 'Y-m-d H:i:s.u or any format supported by '.$class.'::parse()', - $error - ); - } - - return $date; - } - - /** - * @SuppressWarnings(PHPMD.UnusedFormalParameter) - */ - public function convertToDatabaseValue($value, AbstractPlatform $platform): ?string - { - if ($value === null) { - return $value; - } - - if ($value instanceof DateTimeInterface) { - return $value->format('Y-m-d H:i:s.u'); - } - - throw ConversionException::conversionFailedInvalidType( - $value, - $this->getTypeName(), - ['null', 'DateTime', 'Carbon'] - ); - } - - private function getTypeName(): string - { - $chunks = explode('\\', static::class); - $type = preg_replace('/Type$/', '', end($chunks)); - - return strtolower(preg_replace('/([a-z])([A-Z])/', '$1_$2', $type)); - } - - private function getMaximumPrecision(AbstractPlatform $platform): int - { - if ($platform instanceof DB2Platform) { - return 12; - } - - if ($platform instanceof OraclePlatform) { - return 9; - } - - if ($platform instanceof SQLServerPlatform || $platform instanceof SqlitePlatform) { - return 3; - } - - return 6; - } -} diff --git a/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeDefaultPrecision.php b/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeDefaultPrecision.php deleted file mode 100644 index 3a9ff110..00000000 --- a/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeDefaultPrecision.php +++ /dev/null @@ -1,28 +0,0 @@ - */ - use CarbonTypeConverter; - - /** - * @return class-string - */ - protected function getCarbonClassName(): string - { - return CarbonImmutable::class; - } -} diff --git a/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeType.php b/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeType.php deleted file mode 100644 index 3bf07e90..00000000 --- a/vendor/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine/DateTimeType.php +++ /dev/null @@ -1,12 +0,0 @@ - */ - use CarbonTypeConverter; -} diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php deleted file mode 100644 index afef3fa2..00000000 --- a/vendor/composer/ClassLoader.php +++ /dev/null @@ -1,572 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @see https://www.php-fig.org/psr/psr-0/ - * @see https://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - /** @var ?string */ - private $vendorDir; - - // PSR-4 - /** - * @var array[] - * @psalm-var array> - */ - private $prefixLengthsPsr4 = array(); - /** - * @var array[] - * @psalm-var array> - */ - private $prefixDirsPsr4 = array(); - /** - * @var array[] - * @psalm-var array - */ - private $fallbackDirsPsr4 = array(); - - // PSR-0 - /** - * @var array[] - * @psalm-var array> - */ - private $prefixesPsr0 = array(); - /** - * @var array[] - * @psalm-var array - */ - private $fallbackDirsPsr0 = array(); - - /** @var bool */ - private $useIncludePath = false; - - /** - * @var string[] - * @psalm-var array - */ - private $classMap = array(); - - /** @var bool */ - private $classMapAuthoritative = false; - - /** - * @var bool[] - * @psalm-var array - */ - private $missingClasses = array(); - - /** @var ?string */ - private $apcuPrefix; - - /** - * @var self[] - */ - private static $registeredLoaders = array(); - - /** - * @param ?string $vendorDir - */ - public function __construct($vendorDir = null) - { - $this->vendorDir = $vendorDir; - } - - /** - * @return string[] - */ - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); - } - - return array(); - } - - /** - * @return array[] - * @psalm-return array> - */ - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - /** - * @return array[] - * @psalm-return array - */ - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - /** - * @return array[] - * @psalm-return array - */ - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - /** - * @return string[] Array of classname => path - * @psalm-return array - */ - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param string[] $classMap Class to filename map - * @psalm-param array $classMap - * - * @return void - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param string[]|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - * - * @return void - */ - public function add($prefix, $paths, $prepend = false) - { - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - (array) $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - (array) $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = (array) $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - (array) $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param string[]|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - (array) $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - (array) $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - (array) $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - (array) $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param string[]|string $paths The PSR-0 base directories - * - * @return void - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param string[]|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - * - * @return void - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - * - * @return void - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * APCu prefix to use to cache found/not-found classes, if the extension is enabled. - * - * @param string|null $apcuPrefix - * - * @return void - */ - public function setApcuPrefix($apcuPrefix) - { - $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; - } - - /** - * The APCu prefix in use, or null if APCu caching is not enabled. - * - * @return string|null - */ - public function getApcuPrefix() - { - return $this->apcuPrefix; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - * - * @return void - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - - if (null === $this->vendorDir) { - return; - } - - if ($prepend) { - self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; - } else { - unset(self::$registeredLoaders[$this->vendorDir]); - self::$registeredLoaders[$this->vendorDir] = $this; - } - } - - /** - * Unregisters this instance as an autoloader. - * - * @return void - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - - if (null !== $this->vendorDir) { - unset(self::$registeredLoaders[$this->vendorDir]); - } - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return true|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - includeFile($file); - - return true; - } - - return null; - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - if (null !== $this->apcuPrefix) { - $file = apcu_fetch($this->apcuPrefix.$class, $hit); - if ($hit) { - return $file; - } - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (null !== $this->apcuPrefix) { - apcu_add($this->apcuPrefix.$class, $file); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - /** - * Returns the currently registered loaders indexed by their corresponding vendor directories. - * - * @return self[] - */ - public static function getRegisteredLoaders() - { - return self::$registeredLoaders; - } - - /** - * @param string $class - * @param string $ext - * @return string|false - */ - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - $subPath = $class; - while (false !== $lastPos = strrpos($subPath, '\\')) { - $subPath = substr($subPath, 0, $lastPos); - $search = $subPath . '\\'; - if (isset($this->prefixDirsPsr4[$search])) { - $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); - foreach ($this->prefixDirsPsr4[$search] as $dir) { - if (file_exists($file = $dir . $pathEnd)) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } -} - -/** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file - * @return void - * @private - */ -function includeFile($file) -{ - include $file; -} diff --git a/vendor/composer/InstalledVersions.php b/vendor/composer/InstalledVersions.php deleted file mode 100644 index 41bc143c..00000000 --- a/vendor/composer/InstalledVersions.php +++ /dev/null @@ -1,352 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer; - -use Composer\Autoload\ClassLoader; -use Composer\Semver\VersionParser; - -/** - * This class is copied in every Composer installed project and available to all - * - * See also https://getcomposer.org/doc/07-runtime.md#installed-versions - * - * To require its presence, you can require `composer-runtime-api ^2.0` - * - * @final - */ -class InstalledVersions -{ - /** - * @var mixed[]|null - * @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array}|array{}|null - */ - private static $installed; - - /** - * @var bool|null - */ - private static $canGetVendors; - - /** - * @var array[] - * @psalm-var array}> - */ - private static $installedByVendor = array(); - - /** - * Returns a list of all package names which are present, either by being installed, replaced or provided - * - * @return string[] - * @psalm-return list - */ - public static function getInstalledPackages() - { - $packages = array(); - foreach (self::getInstalled() as $installed) { - $packages[] = array_keys($installed['versions']); - } - - if (1 === \count($packages)) { - return $packages[0]; - } - - return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); - } - - /** - * Returns a list of all package names with a specific type e.g. 'library' - * - * @param string $type - * @return string[] - * @psalm-return list - */ - public static function getInstalledPackagesByType($type) - { - $packagesByType = array(); - - foreach (self::getInstalled() as $installed) { - foreach ($installed['versions'] as $name => $package) { - if (isset($package['type']) && $package['type'] === $type) { - $packagesByType[] = $name; - } - } - } - - return $packagesByType; - } - - /** - * Checks whether the given package is installed - * - * This also returns true if the package name is provided or replaced by another package - * - * @param string $packageName - * @param bool $includeDevRequirements - * @return bool - */ - public static function isInstalled($packageName, $includeDevRequirements = true) - { - foreach (self::getInstalled() as $installed) { - if (isset($installed['versions'][$packageName])) { - return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); - } - } - - return false; - } - - /** - * Checks whether the given package satisfies a version constraint - * - * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: - * - * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') - * - * @param VersionParser $parser Install composer/semver to have access to this class and functionality - * @param string $packageName - * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package - * @return bool - */ - public static function satisfies(VersionParser $parser, $packageName, $constraint) - { - $constraint = $parser->parseConstraints($constraint); - $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); - - return $provided->matches($constraint); - } - - /** - * Returns a version constraint representing all the range(s) which are installed for a given package - * - * It is easier to use this via isInstalled() with the $constraint argument if you need to check - * whether a given version of a package is installed, and not just whether it exists - * - * @param string $packageName - * @return string Version constraint usable with composer/semver - */ - public static function getVersionRanges($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - $ranges = array(); - if (isset($installed['versions'][$packageName]['pretty_version'])) { - $ranges[] = $installed['versions'][$packageName]['pretty_version']; - } - if (array_key_exists('aliases', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); - } - if (array_key_exists('replaced', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); - } - if (array_key_exists('provided', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); - } - - return implode(' || ', $ranges); - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['version'])) { - return null; - } - - return $installed['versions'][$packageName]['version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getPrettyVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['pretty_version'])) { - return null; - } - - return $installed['versions'][$packageName]['pretty_version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference - */ - public static function getReference($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['reference'])) { - return null; - } - - return $installed['versions'][$packageName]['reference']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. - */ - public static function getInstallPath($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @return array - * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string} - */ - public static function getRootPackage() - { - $installed = self::getInstalled(); - - return $installed[0]['root']; - } - - /** - * Returns the raw installed.php data for custom implementations - * - * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. - * @return array[] - * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array} - */ - public static function getRawData() - { - @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - self::$installed = include __DIR__ . '/installed.php'; - } else { - self::$installed = array(); - } - } - - return self::$installed; - } - - /** - * Returns the raw data of all installed.php which are currently loaded for custom implementations - * - * @return array[] - * @psalm-return list}> - */ - public static function getAllRawData() - { - return self::getInstalled(); - } - - /** - * Lets you reload the static array from another file - * - * This is only useful for complex integrations in which a project needs to use - * this class but then also needs to execute another project's autoloader in process, - * and wants to ensure both projects have access to their version of installed.php. - * - * A typical case would be PHPUnit, where it would need to make sure it reads all - * the data it needs from this class, then call reload() with - * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure - * the project in which it runs can then also use this class safely, without - * interference between PHPUnit's dependencies and the project's dependencies. - * - * @param array[] $data A vendor/composer/installed.php data set - * @return void - * - * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array} $data - */ - public static function reload($data) - { - self::$installed = $data; - self::$installedByVendor = array(); - } - - /** - * @return array[] - * @psalm-return list}> - */ - private static function getInstalled() - { - if (null === self::$canGetVendors) { - self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); - } - - $installed = array(); - - if (self::$canGetVendors) { - foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { - if (isset(self::$installedByVendor[$vendorDir])) { - $installed[] = self::$installedByVendor[$vendorDir]; - } elseif (is_file($vendorDir.'/composer/installed.php')) { - $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; - if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { - self::$installed = $installed[count($installed) - 1]; - } - } - } - } - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - self::$installed = require __DIR__ . '/installed.php'; - } else { - self::$installed = array(); - } - } - $installed[] = self::$installed; - - return $installed; - } -} diff --git a/vendor/composer/LICENSE b/vendor/composer/LICENSE deleted file mode 100644 index f27399a0..00000000 --- a/vendor/composer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) Nils Adermann, Jordi Boggiano - -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/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php deleted file mode 100644 index b7019a1c..00000000 --- a/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,87 +0,0 @@ - $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', - 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', - 'DateError' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateError.php', - 'DateException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateException.php', - 'DateInvalidOperationException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateInvalidOperationException.php', - 'DateInvalidTimeZoneException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateInvalidTimeZoneException.php', - 'DateMalformedIntervalStringException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateMalformedIntervalStringException.php', - 'DateMalformedPeriodStringException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateMalformedPeriodStringException.php', - 'DateMalformedStringException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateMalformedStringException.php', - 'DateObjectError' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateObjectError.php', - 'DateRangeError' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateRangeError.php', - 'Nette\\ArgumentOutOfRangeException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\DeprecatedException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\DirectoryNotFoundException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\FileNotFoundException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\HtmlStringable' => $vendorDir . '/nette/utils/src/HtmlStringable.php', - 'Nette\\IOException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\InvalidArgumentException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\InvalidStateException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\Iterators\\CachingIterator' => $vendorDir . '/nette/utils/src/Iterators/CachingIterator.php', - 'Nette\\Iterators\\Mapper' => $vendorDir . '/nette/utils/src/Iterators/Mapper.php', - 'Nette\\Localization\\ITranslator' => $vendorDir . '/nette/utils/src/compatibility.php', - 'Nette\\Localization\\Translator' => $vendorDir . '/nette/utils/src/Translator.php', - 'Nette\\MemberAccessException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\NotImplementedException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\NotSupportedException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\OutOfRangeException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\Schema\\Context' => $vendorDir . '/nette/schema/src/Schema/Context.php', - 'Nette\\Schema\\DynamicParameter' => $vendorDir . '/nette/schema/src/Schema/DynamicParameter.php', - 'Nette\\Schema\\Elements\\AnyOf' => $vendorDir . '/nette/schema/src/Schema/Elements/AnyOf.php', - 'Nette\\Schema\\Elements\\Base' => $vendorDir . '/nette/schema/src/Schema/Elements/Base.php', - 'Nette\\Schema\\Elements\\Structure' => $vendorDir . '/nette/schema/src/Schema/Elements/Structure.php', - 'Nette\\Schema\\Elements\\Type' => $vendorDir . '/nette/schema/src/Schema/Elements/Type.php', - 'Nette\\Schema\\Expect' => $vendorDir . '/nette/schema/src/Schema/Expect.php', - 'Nette\\Schema\\Helpers' => $vendorDir . '/nette/schema/src/Schema/Helpers.php', - 'Nette\\Schema\\Message' => $vendorDir . '/nette/schema/src/Schema/Message.php', - 'Nette\\Schema\\Processor' => $vendorDir . '/nette/schema/src/Schema/Processor.php', - 'Nette\\Schema\\Schema' => $vendorDir . '/nette/schema/src/Schema/Schema.php', - 'Nette\\Schema\\ValidationException' => $vendorDir . '/nette/schema/src/Schema/ValidationException.php', - 'Nette\\SmartObject' => $vendorDir . '/nette/utils/src/SmartObject.php', - 'Nette\\StaticClass' => $vendorDir . '/nette/utils/src/StaticClass.php', - 'Nette\\UnexpectedValueException' => $vendorDir . '/nette/utils/src/exceptions.php', - 'Nette\\Utils\\ArrayHash' => $vendorDir . '/nette/utils/src/Utils/ArrayHash.php', - 'Nette\\Utils\\ArrayList' => $vendorDir . '/nette/utils/src/Utils/ArrayList.php', - 'Nette\\Utils\\Arrays' => $vendorDir . '/nette/utils/src/Utils/Arrays.php', - 'Nette\\Utils\\AssertionException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\Callback' => $vendorDir . '/nette/utils/src/Utils/Callback.php', - 'Nette\\Utils\\DateTime' => $vendorDir . '/nette/utils/src/Utils/DateTime.php', - 'Nette\\Utils\\FileInfo' => $vendorDir . '/nette/utils/src/Utils/FileInfo.php', - 'Nette\\Utils\\FileSystem' => $vendorDir . '/nette/utils/src/Utils/FileSystem.php', - 'Nette\\Utils\\Finder' => $vendorDir . '/nette/utils/src/Utils/Finder.php', - 'Nette\\Utils\\Floats' => $vendorDir . '/nette/utils/src/Utils/Floats.php', - 'Nette\\Utils\\Helpers' => $vendorDir . '/nette/utils/src/Utils/Helpers.php', - 'Nette\\Utils\\Html' => $vendorDir . '/nette/utils/src/Utils/Html.php', - 'Nette\\Utils\\IHtmlString' => $vendorDir . '/nette/utils/src/compatibility.php', - 'Nette\\Utils\\Image' => $vendorDir . '/nette/utils/src/Utils/Image.php', - 'Nette\\Utils\\ImageColor' => $vendorDir . '/nette/utils/src/Utils/ImageColor.php', - 'Nette\\Utils\\ImageException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\ImageType' => $vendorDir . '/nette/utils/src/Utils/ImageType.php', - 'Nette\\Utils\\Iterables' => $vendorDir . '/nette/utils/src/Utils/Iterables.php', - 'Nette\\Utils\\Json' => $vendorDir . '/nette/utils/src/Utils/Json.php', - 'Nette\\Utils\\JsonException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\ObjectHelpers' => $vendorDir . '/nette/utils/src/Utils/ObjectHelpers.php', - 'Nette\\Utils\\Paginator' => $vendorDir . '/nette/utils/src/Utils/Paginator.php', - 'Nette\\Utils\\Random' => $vendorDir . '/nette/utils/src/Utils/Random.php', - 'Nette\\Utils\\Reflection' => $vendorDir . '/nette/utils/src/Utils/Reflection.php', - 'Nette\\Utils\\ReflectionMethod' => $vendorDir . '/nette/utils/src/Utils/ReflectionMethod.php', - 'Nette\\Utils\\RegexpException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\Strings' => $vendorDir . '/nette/utils/src/Utils/Strings.php', - 'Nette\\Utils\\Type' => $vendorDir . '/nette/utils/src/Utils/Type.php', - 'Nette\\Utils\\UnknownImageFileException' => $vendorDir . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\Validators' => $vendorDir . '/nette/utils/src/Utils/Validators.php', - 'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', - 'Override' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/Override.php', - 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', - 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', - 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', - 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', -); diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php deleted file mode 100644 index 1112bea0..00000000 --- a/vendor/composer/autoload_files.php +++ /dev/null @@ -1,42 +0,0 @@ - $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', - '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php', - 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', - 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', - '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', - '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php', - 'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php', - '662a729f963d39afe703c9d9b7ab4a8c' => $vendorDir . '/symfony/polyfill-php83/bootstrap.php', - '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php', - '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', - 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php', - '29ffe97919493792170d47eb03a68da9' => $vendorDir . '/blade-ui-kit/blade-icons/src/helpers.php', - '40275907c8566c390185147049ef6e5d' => $vendorDir . '/livewire/livewire/src/helpers.php', - '2c620c99f96a2b964346b45a4d1d1e64' => $vendorDir . '/spatie/invade/src/functions.php', - 'e125f489d647ae664b0af7b573079de7' => $vendorDir . '/filament/support/src/helpers.php', - '09f6b20656683369174dd6fa83b7e5fb' => $vendorDir . '/symfony/polyfill-uuid/bootstrap.php', - 'a1105708a18b76903365ca1c4aa61b02' => $vendorDir . '/symfony/translation/Resources/functions.php', - '47e1160838b5e5a10346ac4084b58c23' => $vendorDir . '/laravel/prompts/src/helpers.php', - '35a6ad97d21e794e7e22a17d806652e4' => $vendorDir . '/nunomaduro/termwind/src/Functions.php', - 'e39a8b23c42d4e1452234d762b03835a' => $vendorDir . '/ramsey/uuid/src/functions.php', - '265b4faa2b3a9766332744949e83bf97' => $vendorDir . '/laravel/framework/src/Illuminate/Collections/helpers.php', - 'c7a3c339e7e14b60e06a2d7fcce9476b' => $vendorDir . '/laravel/framework/src/Illuminate/Events/functions.php', - 'f57d353b41eb2e234b26064d63d8c5dd' => $vendorDir . '/laravel/framework/src/Illuminate/Filesystem/functions.php', - 'f0906e6318348a765ffb6eb24e0d0938' => $vendorDir . '/laravel/framework/src/Illuminate/Foundation/helpers.php', - '58571171fd5812e6e447dce228f52f4d' => $vendorDir . '/laravel/framework/src/Illuminate/Support/helpers.php', - '9e4824c5afbdc1482b6025ce3d4dfde8' => $vendorDir . '/league/csv/src/functions_include.php', - '9261e07cd92c53dcc971c7c88c176c04' => $vendorDir . '/danharrin/date-format-converter/src/helpers.php', - '9720327d09ed9a4ba00c9b5071b71c7d' => $vendorDir . '/danharrin/date-format-converter/src/standards.php', - '2ad94ea6f6f6013119e9abcf4e302a08' => $vendorDir . '/filament/forms/src/helpers.php', - 'b69d5f1f95cd1ed438c038b6cbcc45b5' => $vendorDir . '/filament/notifications/src/Testing/Autoload.php', - '89e9938b64b06cc502d7ceca69a380fe' => $vendorDir . '/filament/filament/src/global_helpers.php', - 'ebb446bb6d02e998480945fbbb73dc64' => $vendorDir . '/filament/filament/src/helpers.php', - '377b22b161c09ed6e5152de788ca020a' => $vendorDir . '/spatie/laravel-permission/src/helpers.php', -); diff --git a/vendor/composer/autoload_namespaces.php b/vendor/composer/autoload_namespaces.php deleted file mode 100644 index 15a2ff3a..00000000 --- a/vendor/composer/autoload_namespaces.php +++ /dev/null @@ -1,9 +0,0 @@ - array($vendorDir . '/voku/portable-ascii/src/voku'), - 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'), - 'TijsVerkoyen\\CssToInlineStyles\\' => array($vendorDir . '/tijsverkoyen/css-to-inline-styles/src'), - 'Termwind\\' => array($vendorDir . '/nunomaduro/termwind/src'), - 'Symfony\\Polyfill\\Uuid\\' => array($vendorDir . '/symfony/polyfill-uuid'), - 'Symfony\\Polyfill\\Php83\\' => array($vendorDir . '/symfony/polyfill-php83'), - 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), - 'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'), - 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'), - 'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'), - 'Symfony\\Polyfill\\Intl\\Grapheme\\' => array($vendorDir . '/symfony/polyfill-intl-grapheme'), - 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), - 'Symfony\\Contracts\\Translation\\' => array($vendorDir . '/symfony/translation-contracts'), - 'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'), - 'Symfony\\Contracts\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher-contracts'), - 'Symfony\\Component\\VarDumper\\' => array($vendorDir . '/symfony/var-dumper'), - 'Symfony\\Component\\Uid\\' => array($vendorDir . '/symfony/uid'), - 'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'), - 'Symfony\\Component\\String\\' => array($vendorDir . '/symfony/string'), - 'Symfony\\Component\\Routing\\' => array($vendorDir . '/symfony/routing'), - 'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'), - 'Symfony\\Component\\Mime\\' => array($vendorDir . '/symfony/mime'), - 'Symfony\\Component\\Mailer\\' => array($vendorDir . '/symfony/mailer'), - 'Symfony\\Component\\HttpKernel\\' => array($vendorDir . '/symfony/http-kernel'), - 'Symfony\\Component\\HttpFoundation\\' => array($vendorDir . '/symfony/http-foundation'), - 'Symfony\\Component\\HtmlSanitizer\\' => array($vendorDir . '/symfony/html-sanitizer'), - 'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'), - 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'), - 'Symfony\\Component\\ErrorHandler\\' => array($vendorDir . '/symfony/error-handler'), - 'Symfony\\Component\\CssSelector\\' => array($vendorDir . '/symfony/css-selector'), - 'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'), - 'Spatie\\Permission\\' => array($vendorDir . '/spatie/laravel-permission/src'), - 'Spatie\\LaravelPackageTools\\' => array($vendorDir . '/spatie/laravel-package-tools/src'), - 'Spatie\\Invade\\' => array($vendorDir . '/spatie/invade/src'), - 'Spatie\\Color\\' => array($vendorDir . '/spatie/color/src'), - 'RyanChandler\\BladeCaptureDirective\\Database\\Factories\\' => array($vendorDir . '/ryangjchandler/blade-capture-directive/database/factories'), - 'RyanChandler\\BladeCaptureDirective\\' => array($vendorDir . '/ryangjchandler/blade-capture-directive/src'), - 'Ramsey\\Uuid\\' => array($vendorDir . '/ramsey/uuid/src'), - 'Ramsey\\Collection\\' => array($vendorDir . '/ramsey/collection/src'), - 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'), - 'Psr\\Log\\' => array($vendorDir . '/psr/log/src'), - 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'), - 'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'), - 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), - 'Psr\\Clock\\' => array($vendorDir . '/psr/clock/src'), - 'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'), - 'Portable\\FilaCms\\' => array($baseDir . '/src'), - 'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'), - 'OpenSpout\\' => array($vendorDir . '/openspout/openspout/src'), - 'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'), - 'Masterminds\\' => array($vendorDir . '/masterminds/html5/src'), - 'Livewire\\' => array($vendorDir . '/livewire/livewire/src'), - 'League\\Uri\\' => array($vendorDir . '/league/uri', $vendorDir . '/league/uri-interfaces'), - 'League\\MimeTypeDetection\\' => array($vendorDir . '/league/mime-type-detection/src'), - 'League\\Flysystem\\Local\\' => array($vendorDir . '/league/flysystem-local'), - 'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'), - 'League\\Csv\\' => array($vendorDir . '/league/csv/src'), - 'League\\Config\\' => array($vendorDir . '/league/config/src'), - 'League\\CommonMark\\' => array($vendorDir . '/league/commonmark/src'), - 'Laravel\\SerializableClosure\\' => array($vendorDir . '/laravel/serializable-closure/src'), - 'Laravel\\Prompts\\' => array($vendorDir . '/laravel/prompts/src'), - 'Kirschbaum\\PowerJoins\\' => array($vendorDir . '/kirschbaum-development/eloquent-power-joins/src'), - 'Illuminate\\Support\\' => array($vendorDir . '/laravel/framework/src/Illuminate/Macroable', $vendorDir . '/laravel/framework/src/Illuminate/Collections', $vendorDir . '/laravel/framework/src/Illuminate/Conditionable'), - 'Illuminate\\' => array($vendorDir . '/laravel/framework/src/Illuminate'), - 'GuzzleHttp\\UriTemplate\\' => array($vendorDir . '/guzzlehttp/uri-template/src'), - 'GrahamCampbell\\ResultType\\' => array($vendorDir . '/graham-campbell/result-type/src'), - 'Fruitcake\\Cors\\' => array($vendorDir . '/fruitcake/php-cors/src'), - 'Filament\\Widgets\\' => array($vendorDir . '/filament/widgets/src'), - 'Filament\\Tables\\' => array($vendorDir . '/filament/tables/src'), - 'Filament\\Support\\' => array($vendorDir . '/filament/support/src'), - 'Filament\\Notifications\\' => array($vendorDir . '/filament/notifications/src'), - 'Filament\\Infolists\\' => array($vendorDir . '/filament/infolists/src'), - 'Filament\\Forms\\' => array($vendorDir . '/filament/forms/src'), - 'Filament\\Actions\\' => array($vendorDir . '/filament/actions/src'), - 'Filament\\' => array($vendorDir . '/filament/filament/src'), - 'Egulias\\EmailValidator\\' => array($vendorDir . '/egulias/email-validator/src'), - 'Dotenv\\' => array($vendorDir . '/vlucas/phpdotenv/src'), - 'Doctrine\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector'), - 'Doctrine\\Deprecations\\' => array($vendorDir . '/doctrine/deprecations/lib/Doctrine/Deprecations'), - 'Doctrine\\DBAL\\' => array($vendorDir . '/doctrine/dbal/src'), - 'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/src'), - 'Doctrine\\Common\\Cache\\' => array($vendorDir . '/doctrine/cache/lib/Doctrine/Common/Cache'), - 'Doctrine\\Common\\' => array($vendorDir . '/doctrine/event-manager/src'), - 'Dflydev\\DotAccessData\\' => array($vendorDir . '/dflydev/dot-access-data/src'), - 'DanHarrin\\LivewireRateLimiting\\' => array($vendorDir . '/danharrin/livewire-rate-limiting/src'), - 'DanHarrin\\DateFormatConverter\\' => array($vendorDir . '/danharrin/date-format-converter/src'), - 'Cron\\' => array($vendorDir . '/dragonmantank/cron-expression/src/Cron'), - 'Carbon\\Doctrine\\' => array($vendorDir . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine'), - 'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'), - 'Brick\\Math\\' => array($vendorDir . '/brick/math/src'), - 'BladeUI\\Icons\\' => array($vendorDir . '/blade-ui-kit/blade-icons/src'), - 'BladeUI\\Heroicons\\' => array($vendorDir . '/blade-ui-kit/blade-heroicons/src'), - 'AnourValar\\EloquentSerialize\\' => array($vendorDir . '/anourvalar/eloquent-serialize/src'), -); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php deleted file mode 100644 index 172960e5..00000000 --- a/vendor/composer/autoload_real.php +++ /dev/null @@ -1,55 +0,0 @@ -register(true); - - $includeFiles = \Composer\Autoload\ComposerStaticInit69d6b6dd110ee11eca1e1833580a7c06::$files; - foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire69d6b6dd110ee11eca1e1833580a7c06($fileIdentifier, $file); - } - - return $loader; - } -} - -/** - * @param string $fileIdentifier - * @param string $file - * @return void - */ -function composerRequire69d6b6dd110ee11eca1e1833580a7c06($fileIdentifier, $file) -{ - if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { - $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; - - require $file; - } -} diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php deleted file mode 100644 index 5ede0918..00000000 --- a/vendor/composer/autoload_static.php +++ /dev/null @@ -1,669 +0,0 @@ - __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', - '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', - 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', - 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', - '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', - '8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php', - 'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php', - '662a729f963d39afe703c9d9b7ab4a8c' => __DIR__ . '/..' . '/symfony/polyfill-php83/bootstrap.php', - '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php', - '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', - 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php', - '29ffe97919493792170d47eb03a68da9' => __DIR__ . '/..' . '/blade-ui-kit/blade-icons/src/helpers.php', - '40275907c8566c390185147049ef6e5d' => __DIR__ . '/..' . '/livewire/livewire/src/helpers.php', - '2c620c99f96a2b964346b45a4d1d1e64' => __DIR__ . '/..' . '/spatie/invade/src/functions.php', - 'e125f489d647ae664b0af7b573079de7' => __DIR__ . '/..' . '/filament/support/src/helpers.php', - '09f6b20656683369174dd6fa83b7e5fb' => __DIR__ . '/..' . '/symfony/polyfill-uuid/bootstrap.php', - 'a1105708a18b76903365ca1c4aa61b02' => __DIR__ . '/..' . '/symfony/translation/Resources/functions.php', - '47e1160838b5e5a10346ac4084b58c23' => __DIR__ . '/..' . '/laravel/prompts/src/helpers.php', - '35a6ad97d21e794e7e22a17d806652e4' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Functions.php', - 'e39a8b23c42d4e1452234d762b03835a' => __DIR__ . '/..' . '/ramsey/uuid/src/functions.php', - '265b4faa2b3a9766332744949e83bf97' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections/helpers.php', - 'c7a3c339e7e14b60e06a2d7fcce9476b' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Events/functions.php', - 'f57d353b41eb2e234b26064d63d8c5dd' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Filesystem/functions.php', - 'f0906e6318348a765ffb6eb24e0d0938' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Foundation/helpers.php', - '58571171fd5812e6e447dce228f52f4d' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/helpers.php', - '9e4824c5afbdc1482b6025ce3d4dfde8' => __DIR__ . '/..' . '/league/csv/src/functions_include.php', - '9261e07cd92c53dcc971c7c88c176c04' => __DIR__ . '/..' . '/danharrin/date-format-converter/src/helpers.php', - '9720327d09ed9a4ba00c9b5071b71c7d' => __DIR__ . '/..' . '/danharrin/date-format-converter/src/standards.php', - '2ad94ea6f6f6013119e9abcf4e302a08' => __DIR__ . '/..' . '/filament/forms/src/helpers.php', - 'b69d5f1f95cd1ed438c038b6cbcc45b5' => __DIR__ . '/..' . '/filament/notifications/src/Testing/Autoload.php', - '89e9938b64b06cc502d7ceca69a380fe' => __DIR__ . '/..' . '/filament/filament/src/global_helpers.php', - 'ebb446bb6d02e998480945fbbb73dc64' => __DIR__ . '/..' . '/filament/filament/src/helpers.php', - '377b22b161c09ed6e5152de788ca020a' => __DIR__ . '/..' . '/spatie/laravel-permission/src/helpers.php', - ); - - public static $prefixLengthsPsr4 = array ( - 'v' => - array ( - 'voku\\' => 5, - ), - 'W' => - array ( - 'Webmozart\\Assert\\' => 17, - ), - 'T' => - array ( - 'TijsVerkoyen\\CssToInlineStyles\\' => 31, - 'Termwind\\' => 9, - ), - 'S' => - array ( - 'Symfony\\Polyfill\\Uuid\\' => 22, - 'Symfony\\Polyfill\\Php83\\' => 23, - 'Symfony\\Polyfill\\Php80\\' => 23, - 'Symfony\\Polyfill\\Php72\\' => 23, - 'Symfony\\Polyfill\\Mbstring\\' => 26, - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33, - 'Symfony\\Polyfill\\Intl\\Idn\\' => 26, - 'Symfony\\Polyfill\\Intl\\Grapheme\\' => 31, - 'Symfony\\Polyfill\\Ctype\\' => 23, - 'Symfony\\Contracts\\Translation\\' => 30, - 'Symfony\\Contracts\\Service\\' => 26, - 'Symfony\\Contracts\\EventDispatcher\\' => 34, - 'Symfony\\Component\\VarDumper\\' => 28, - 'Symfony\\Component\\Uid\\' => 22, - 'Symfony\\Component\\Translation\\' => 30, - 'Symfony\\Component\\String\\' => 25, - 'Symfony\\Component\\Routing\\' => 26, - 'Symfony\\Component\\Process\\' => 26, - 'Symfony\\Component\\Mime\\' => 23, - 'Symfony\\Component\\Mailer\\' => 25, - 'Symfony\\Component\\HttpKernel\\' => 29, - 'Symfony\\Component\\HttpFoundation\\' => 33, - 'Symfony\\Component\\HtmlSanitizer\\' => 32, - 'Symfony\\Component\\Finder\\' => 25, - 'Symfony\\Component\\EventDispatcher\\' => 34, - 'Symfony\\Component\\ErrorHandler\\' => 31, - 'Symfony\\Component\\CssSelector\\' => 30, - 'Symfony\\Component\\Console\\' => 26, - 'Spatie\\Permission\\' => 18, - 'Spatie\\LaravelPackageTools\\' => 27, - 'Spatie\\Invade\\' => 14, - 'Spatie\\Color\\' => 13, - ), - 'R' => - array ( - 'RyanChandler\\BladeCaptureDirective\\Database\\Factories\\' => 54, - 'RyanChandler\\BladeCaptureDirective\\' => 35, - 'Ramsey\\Uuid\\' => 12, - 'Ramsey\\Collection\\' => 18, - ), - 'P' => - array ( - 'Psr\\SimpleCache\\' => 16, - 'Psr\\Log\\' => 8, - 'Psr\\Http\\Message\\' => 17, - 'Psr\\EventDispatcher\\' => 20, - 'Psr\\Container\\' => 14, - 'Psr\\Clock\\' => 10, - 'Psr\\Cache\\' => 10, - 'Portable\\FilaCms\\' => 17, - 'PhpOption\\' => 10, - ), - 'O' => - array ( - 'OpenSpout\\' => 10, - ), - 'M' => - array ( - 'Monolog\\' => 8, - 'Masterminds\\' => 12, - ), - 'L' => - array ( - 'Livewire\\' => 9, - 'League\\Uri\\' => 11, - 'League\\MimeTypeDetection\\' => 25, - 'League\\Flysystem\\Local\\' => 23, - 'League\\Flysystem\\' => 17, - 'League\\Csv\\' => 11, - 'League\\Config\\' => 14, - 'League\\CommonMark\\' => 18, - 'Laravel\\SerializableClosure\\' => 28, - 'Laravel\\Prompts\\' => 16, - ), - 'K' => - array ( - 'Kirschbaum\\PowerJoins\\' => 22, - ), - 'I' => - array ( - 'Illuminate\\Support\\' => 19, - 'Illuminate\\' => 11, - ), - 'G' => - array ( - 'GuzzleHttp\\UriTemplate\\' => 23, - 'GrahamCampbell\\ResultType\\' => 26, - ), - 'F' => - array ( - 'Fruitcake\\Cors\\' => 15, - 'Filament\\Widgets\\' => 17, - 'Filament\\Tables\\' => 16, - 'Filament\\Support\\' => 17, - 'Filament\\Notifications\\' => 23, - 'Filament\\Infolists\\' => 19, - 'Filament\\Forms\\' => 15, - 'Filament\\Actions\\' => 17, - 'Filament\\' => 9, - ), - 'E' => - array ( - 'Egulias\\EmailValidator\\' => 23, - ), - 'D' => - array ( - 'Dotenv\\' => 7, - 'Doctrine\\Inflector\\' => 19, - 'Doctrine\\Deprecations\\' => 22, - 'Doctrine\\DBAL\\' => 14, - 'Doctrine\\Common\\Lexer\\' => 22, - 'Doctrine\\Common\\Cache\\' => 22, - 'Doctrine\\Common\\' => 16, - 'Dflydev\\DotAccessData\\' => 22, - 'DanHarrin\\LivewireRateLimiting\\' => 31, - 'DanHarrin\\DateFormatConverter\\' => 30, - ), - 'C' => - array ( - 'Cron\\' => 5, - 'Carbon\\Doctrine\\' => 16, - 'Carbon\\' => 7, - ), - 'B' => - array ( - 'Brick\\Math\\' => 11, - 'BladeUI\\Icons\\' => 14, - 'BladeUI\\Heroicons\\' => 18, - ), - 'A' => - array ( - 'AnourValar\\EloquentSerialize\\' => 29, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'voku\\' => - array ( - 0 => __DIR__ . '/..' . '/voku/portable-ascii/src/voku', - ), - 'Webmozart\\Assert\\' => - array ( - 0 => __DIR__ . '/..' . '/webmozart/assert/src', - ), - 'TijsVerkoyen\\CssToInlineStyles\\' => - array ( - 0 => __DIR__ . '/..' . '/tijsverkoyen/css-to-inline-styles/src', - ), - 'Termwind\\' => - array ( - 0 => __DIR__ . '/..' . '/nunomaduro/termwind/src', - ), - 'Symfony\\Polyfill\\Uuid\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-uuid', - ), - 'Symfony\\Polyfill\\Php83\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-php83', - ), - 'Symfony\\Polyfill\\Php80\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-php80', - ), - 'Symfony\\Polyfill\\Php72\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-php72', - ), - 'Symfony\\Polyfill\\Mbstring\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', - ), - 'Symfony\\Polyfill\\Intl\\Normalizer\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer', - ), - 'Symfony\\Polyfill\\Intl\\Idn\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn', - ), - 'Symfony\\Polyfill\\Intl\\Grapheme\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme', - ), - 'Symfony\\Polyfill\\Ctype\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', - ), - 'Symfony\\Contracts\\Translation\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/translation-contracts', - ), - 'Symfony\\Contracts\\Service\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/service-contracts', - ), - 'Symfony\\Contracts\\EventDispatcher\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/event-dispatcher-contracts', - ), - 'Symfony\\Component\\VarDumper\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/var-dumper', - ), - 'Symfony\\Component\\Uid\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/uid', - ), - 'Symfony\\Component\\Translation\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/translation', - ), - 'Symfony\\Component\\String\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/string', - ), - 'Symfony\\Component\\Routing\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/routing', - ), - 'Symfony\\Component\\Process\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/process', - ), - 'Symfony\\Component\\Mime\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/mime', - ), - 'Symfony\\Component\\Mailer\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/mailer', - ), - 'Symfony\\Component\\HttpKernel\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/http-kernel', - ), - 'Symfony\\Component\\HttpFoundation\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/http-foundation', - ), - 'Symfony\\Component\\HtmlSanitizer\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/html-sanitizer', - ), - 'Symfony\\Component\\Finder\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/finder', - ), - 'Symfony\\Component\\EventDispatcher\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/event-dispatcher', - ), - 'Symfony\\Component\\ErrorHandler\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/error-handler', - ), - 'Symfony\\Component\\CssSelector\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/css-selector', - ), - 'Symfony\\Component\\Console\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/console', - ), - 'Spatie\\Permission\\' => - array ( - 0 => __DIR__ . '/..' . '/spatie/laravel-permission/src', - ), - 'Spatie\\LaravelPackageTools\\' => - array ( - 0 => __DIR__ . '/..' . '/spatie/laravel-package-tools/src', - ), - 'Spatie\\Invade\\' => - array ( - 0 => __DIR__ . '/..' . '/spatie/invade/src', - ), - 'Spatie\\Color\\' => - array ( - 0 => __DIR__ . '/..' . '/spatie/color/src', - ), - 'RyanChandler\\BladeCaptureDirective\\Database\\Factories\\' => - array ( - 0 => __DIR__ . '/..' . '/ryangjchandler/blade-capture-directive/database/factories', - ), - 'RyanChandler\\BladeCaptureDirective\\' => - array ( - 0 => __DIR__ . '/..' . '/ryangjchandler/blade-capture-directive/src', - ), - 'Ramsey\\Uuid\\' => - array ( - 0 => __DIR__ . '/..' . '/ramsey/uuid/src', - ), - 'Ramsey\\Collection\\' => - array ( - 0 => __DIR__ . '/..' . '/ramsey/collection/src', - ), - 'Psr\\SimpleCache\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/simple-cache/src', - ), - 'Psr\\Log\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/log/src', - ), - 'Psr\\Http\\Message\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/http-factory/src', - 1 => __DIR__ . '/..' . '/psr/http-message/src', - ), - 'Psr\\EventDispatcher\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/event-dispatcher/src', - ), - 'Psr\\Container\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/container/src', - ), - 'Psr\\Clock\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/clock/src', - ), - 'Psr\\Cache\\' => - array ( - 0 => __DIR__ . '/..' . '/psr/cache/src', - ), - 'Portable\\FilaCms\\' => - array ( - 0 => __DIR__ . '/../..' . '/src', - ), - 'PhpOption\\' => - array ( - 0 => __DIR__ . '/..' . '/phpoption/phpoption/src/PhpOption', - ), - 'OpenSpout\\' => - array ( - 0 => __DIR__ . '/..' . '/openspout/openspout/src', - ), - 'Monolog\\' => - array ( - 0 => __DIR__ . '/..' . '/monolog/monolog/src/Monolog', - ), - 'Masterminds\\' => - array ( - 0 => __DIR__ . '/..' . '/masterminds/html5/src', - ), - 'Livewire\\' => - array ( - 0 => __DIR__ . '/..' . '/livewire/livewire/src', - ), - 'League\\Uri\\' => - array ( - 0 => __DIR__ . '/..' . '/league/uri', - 1 => __DIR__ . '/..' . '/league/uri-interfaces', - ), - 'League\\MimeTypeDetection\\' => - array ( - 0 => __DIR__ . '/..' . '/league/mime-type-detection/src', - ), - 'League\\Flysystem\\Local\\' => - array ( - 0 => __DIR__ . '/..' . '/league/flysystem-local', - ), - 'League\\Flysystem\\' => - array ( - 0 => __DIR__ . '/..' . '/league/flysystem/src', - ), - 'League\\Csv\\' => - array ( - 0 => __DIR__ . '/..' . '/league/csv/src', - ), - 'League\\Config\\' => - array ( - 0 => __DIR__ . '/..' . '/league/config/src', - ), - 'League\\CommonMark\\' => - array ( - 0 => __DIR__ . '/..' . '/league/commonmark/src', - ), - 'Laravel\\SerializableClosure\\' => - array ( - 0 => __DIR__ . '/..' . '/laravel/serializable-closure/src', - ), - 'Laravel\\Prompts\\' => - array ( - 0 => __DIR__ . '/..' . '/laravel/prompts/src', - ), - 'Kirschbaum\\PowerJoins\\' => - array ( - 0 => __DIR__ . '/..' . '/kirschbaum-development/eloquent-power-joins/src', - ), - 'Illuminate\\Support\\' => - array ( - 0 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Macroable', - 1 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections', - 2 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Conditionable', - ), - 'Illuminate\\' => - array ( - 0 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate', - ), - 'GuzzleHttp\\UriTemplate\\' => - array ( - 0 => __DIR__ . '/..' . '/guzzlehttp/uri-template/src', - ), - 'GrahamCampbell\\ResultType\\' => - array ( - 0 => __DIR__ . '/..' . '/graham-campbell/result-type/src', - ), - 'Fruitcake\\Cors\\' => - array ( - 0 => __DIR__ . '/..' . '/fruitcake/php-cors/src', - ), - 'Filament\\Widgets\\' => - array ( - 0 => __DIR__ . '/..' . '/filament/widgets/src', - ), - 'Filament\\Tables\\' => - array ( - 0 => __DIR__ . '/..' . '/filament/tables/src', - ), - 'Filament\\Support\\' => - array ( - 0 => __DIR__ . '/..' . '/filament/support/src', - ), - 'Filament\\Notifications\\' => - array ( - 0 => __DIR__ . '/..' . '/filament/notifications/src', - ), - 'Filament\\Infolists\\' => - array ( - 0 => __DIR__ . '/..' . '/filament/infolists/src', - ), - 'Filament\\Forms\\' => - array ( - 0 => __DIR__ . '/..' . '/filament/forms/src', - ), - 'Filament\\Actions\\' => - array ( - 0 => __DIR__ . '/..' . '/filament/actions/src', - ), - 'Filament\\' => - array ( - 0 => __DIR__ . '/..' . '/filament/filament/src', - ), - 'Egulias\\EmailValidator\\' => - array ( - 0 => __DIR__ . '/..' . '/egulias/email-validator/src', - ), - 'Dotenv\\' => - array ( - 0 => __DIR__ . '/..' . '/vlucas/phpdotenv/src', - ), - 'Doctrine\\Inflector\\' => - array ( - 0 => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector', - ), - 'Doctrine\\Deprecations\\' => - array ( - 0 => __DIR__ . '/..' . '/doctrine/deprecations/lib/Doctrine/Deprecations', - ), - 'Doctrine\\DBAL\\' => - array ( - 0 => __DIR__ . '/..' . '/doctrine/dbal/src', - ), - 'Doctrine\\Common\\Lexer\\' => - array ( - 0 => __DIR__ . '/..' . '/doctrine/lexer/src', - ), - 'Doctrine\\Common\\Cache\\' => - array ( - 0 => __DIR__ . '/..' . '/doctrine/cache/lib/Doctrine/Common/Cache', - ), - 'Doctrine\\Common\\' => - array ( - 0 => __DIR__ . '/..' . '/doctrine/event-manager/src', - ), - 'Dflydev\\DotAccessData\\' => - array ( - 0 => __DIR__ . '/..' . '/dflydev/dot-access-data/src', - ), - 'DanHarrin\\LivewireRateLimiting\\' => - array ( - 0 => __DIR__ . '/..' . '/danharrin/livewire-rate-limiting/src', - ), - 'DanHarrin\\DateFormatConverter\\' => - array ( - 0 => __DIR__ . '/..' . '/danharrin/date-format-converter/src', - ), - 'Cron\\' => - array ( - 0 => __DIR__ . '/..' . '/dragonmantank/cron-expression/src/Cron', - ), - 'Carbon\\Doctrine\\' => - array ( - 0 => __DIR__ . '/..' . '/carbonphp/carbon-doctrine-types/src/Carbon/Doctrine', - ), - 'Carbon\\' => - array ( - 0 => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon', - ), - 'Brick\\Math\\' => - array ( - 0 => __DIR__ . '/..' . '/brick/math/src', - ), - 'BladeUI\\Icons\\' => - array ( - 0 => __DIR__ . '/..' . '/blade-ui-kit/blade-icons/src', - ), - 'BladeUI\\Heroicons\\' => - array ( - 0 => __DIR__ . '/..' . '/blade-ui-kit/blade-heroicons/src', - ), - 'AnourValar\\EloquentSerialize\\' => - array ( - 0 => __DIR__ . '/..' . '/anourvalar/eloquent-serialize/src', - ), - ); - - public static $classMap = array ( - 'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', - 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', - 'DateError' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateError.php', - 'DateException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateException.php', - 'DateInvalidOperationException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateInvalidOperationException.php', - 'DateInvalidTimeZoneException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateInvalidTimeZoneException.php', - 'DateMalformedIntervalStringException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateMalformedIntervalStringException.php', - 'DateMalformedPeriodStringException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateMalformedPeriodStringException.php', - 'DateMalformedStringException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateMalformedStringException.php', - 'DateObjectError' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateObjectError.php', - 'DateRangeError' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateRangeError.php', - 'Nette\\ArgumentOutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\DeprecatedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\DirectoryNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\FileNotFoundException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\HtmlStringable' => __DIR__ . '/..' . '/nette/utils/src/HtmlStringable.php', - 'Nette\\IOException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\InvalidArgumentException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\InvalidStateException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\Iterators\\CachingIterator' => __DIR__ . '/..' . '/nette/utils/src/Iterators/CachingIterator.php', - 'Nette\\Iterators\\Mapper' => __DIR__ . '/..' . '/nette/utils/src/Iterators/Mapper.php', - 'Nette\\Localization\\ITranslator' => __DIR__ . '/..' . '/nette/utils/src/compatibility.php', - 'Nette\\Localization\\Translator' => __DIR__ . '/..' . '/nette/utils/src/Translator.php', - 'Nette\\MemberAccessException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\NotImplementedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\NotSupportedException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\OutOfRangeException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\Schema\\Context' => __DIR__ . '/..' . '/nette/schema/src/Schema/Context.php', - 'Nette\\Schema\\DynamicParameter' => __DIR__ . '/..' . '/nette/schema/src/Schema/DynamicParameter.php', - 'Nette\\Schema\\Elements\\AnyOf' => __DIR__ . '/..' . '/nette/schema/src/Schema/Elements/AnyOf.php', - 'Nette\\Schema\\Elements\\Base' => __DIR__ . '/..' . '/nette/schema/src/Schema/Elements/Base.php', - 'Nette\\Schema\\Elements\\Structure' => __DIR__ . '/..' . '/nette/schema/src/Schema/Elements/Structure.php', - 'Nette\\Schema\\Elements\\Type' => __DIR__ . '/..' . '/nette/schema/src/Schema/Elements/Type.php', - 'Nette\\Schema\\Expect' => __DIR__ . '/..' . '/nette/schema/src/Schema/Expect.php', - 'Nette\\Schema\\Helpers' => __DIR__ . '/..' . '/nette/schema/src/Schema/Helpers.php', - 'Nette\\Schema\\Message' => __DIR__ . '/..' . '/nette/schema/src/Schema/Message.php', - 'Nette\\Schema\\Processor' => __DIR__ . '/..' . '/nette/schema/src/Schema/Processor.php', - 'Nette\\Schema\\Schema' => __DIR__ . '/..' . '/nette/schema/src/Schema/Schema.php', - 'Nette\\Schema\\ValidationException' => __DIR__ . '/..' . '/nette/schema/src/Schema/ValidationException.php', - 'Nette\\SmartObject' => __DIR__ . '/..' . '/nette/utils/src/SmartObject.php', - 'Nette\\StaticClass' => __DIR__ . '/..' . '/nette/utils/src/StaticClass.php', - 'Nette\\UnexpectedValueException' => __DIR__ . '/..' . '/nette/utils/src/exceptions.php', - 'Nette\\Utils\\ArrayHash' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayHash.php', - 'Nette\\Utils\\ArrayList' => __DIR__ . '/..' . '/nette/utils/src/Utils/ArrayList.php', - 'Nette\\Utils\\Arrays' => __DIR__ . '/..' . '/nette/utils/src/Utils/Arrays.php', - 'Nette\\Utils\\AssertionException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\Callback' => __DIR__ . '/..' . '/nette/utils/src/Utils/Callback.php', - 'Nette\\Utils\\DateTime' => __DIR__ . '/..' . '/nette/utils/src/Utils/DateTime.php', - 'Nette\\Utils\\FileInfo' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileInfo.php', - 'Nette\\Utils\\FileSystem' => __DIR__ . '/..' . '/nette/utils/src/Utils/FileSystem.php', - 'Nette\\Utils\\Finder' => __DIR__ . '/..' . '/nette/utils/src/Utils/Finder.php', - 'Nette\\Utils\\Floats' => __DIR__ . '/..' . '/nette/utils/src/Utils/Floats.php', - 'Nette\\Utils\\Helpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/Helpers.php', - 'Nette\\Utils\\Html' => __DIR__ . '/..' . '/nette/utils/src/Utils/Html.php', - 'Nette\\Utils\\IHtmlString' => __DIR__ . '/..' . '/nette/utils/src/compatibility.php', - 'Nette\\Utils\\Image' => __DIR__ . '/..' . '/nette/utils/src/Utils/Image.php', - 'Nette\\Utils\\ImageColor' => __DIR__ . '/..' . '/nette/utils/src/Utils/ImageColor.php', - 'Nette\\Utils\\ImageException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\ImageType' => __DIR__ . '/..' . '/nette/utils/src/Utils/ImageType.php', - 'Nette\\Utils\\Iterables' => __DIR__ . '/..' . '/nette/utils/src/Utils/Iterables.php', - 'Nette\\Utils\\Json' => __DIR__ . '/..' . '/nette/utils/src/Utils/Json.php', - 'Nette\\Utils\\JsonException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\ObjectHelpers' => __DIR__ . '/..' . '/nette/utils/src/Utils/ObjectHelpers.php', - 'Nette\\Utils\\Paginator' => __DIR__ . '/..' . '/nette/utils/src/Utils/Paginator.php', - 'Nette\\Utils\\Random' => __DIR__ . '/..' . '/nette/utils/src/Utils/Random.php', - 'Nette\\Utils\\Reflection' => __DIR__ . '/..' . '/nette/utils/src/Utils/Reflection.php', - 'Nette\\Utils\\ReflectionMethod' => __DIR__ . '/..' . '/nette/utils/src/Utils/ReflectionMethod.php', - 'Nette\\Utils\\RegexpException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\Strings' => __DIR__ . '/..' . '/nette/utils/src/Utils/Strings.php', - 'Nette\\Utils\\Type' => __DIR__ . '/..' . '/nette/utils/src/Utils/Type.php', - 'Nette\\Utils\\UnknownImageFileException' => __DIR__ . '/..' . '/nette/utils/src/Utils/exceptions.php', - 'Nette\\Utils\\Validators' => __DIR__ . '/..' . '/nette/utils/src/Utils/Validators.php', - 'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php', - 'Override' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/Override.php', - 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', - 'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', - 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', - 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit69d6b6dd110ee11eca1e1833580a7c06::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit69d6b6dd110ee11eca1e1833580a7c06::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit69d6b6dd110ee11eca1e1833580a7c06::$classMap; - - }, null, ClassLoader::class); - } -} diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json deleted file mode 100644 index 65f0482f..00000000 --- a/vendor/composer/installed.json +++ /dev/null @@ -1,7419 +0,0 @@ -{ - "packages": [ - { - "name": "anourvalar/eloquent-serialize", - "version": "1.2.17", - "version_normalized": "1.2.17.0", - "source": { - "type": "git", - "url": "https://github.com/AnourValar/eloquent-serialize.git", - "reference": "1fcfdd5f41a0d2e7c8cf1d37e7227357bb827aef" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/1fcfdd5f41a0d2e7c8cf1d37e7227357bb827aef", - "reference": "1fcfdd5f41a0d2e7c8cf1d37e7227357bb827aef", - "shasum": "" - }, - "require": { - "laravel/framework": "^6.0|^7.0|^8.0|^9.0|^10.0", - "php": "^7.1|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.26", - "laravel/legacy-factories": "^1.1", - "orchestra/testbench": "~3.6.0|~3.7.0|~3.8.0|^4.0|^5.0|^6.0|^7.0|^8.0", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.5", - "psalm/plugin-laravel": "^2.8", - "squizlabs/php_codesniffer": "^3.7" - }, - "time": "2023-12-06T15:54:01+00:00", - "type": "library", - "extra": { - "laravel": { - "aliases": { - "EloquentSerialize": "AnourValar\\EloquentSerialize\\Facades\\EloquentSerializeFacade" - } - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "AnourValar\\EloquentSerialize\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Laravel Query Builder (Eloquent) serialization", - "homepage": "https://github.com/AnourValar/eloquent-serialize", - "keywords": [ - "anourvalar", - "builder", - "copy", - "eloquent", - "job", - "laravel", - "query", - "querybuilder", - "queue", - "serializable", - "serialization", - "serialize" - ], - "support": { - "issues": "https://github.com/AnourValar/eloquent-serialize/issues", - "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.2.17" - }, - "install-path": "../anourvalar/eloquent-serialize" - }, - { - "name": "blade-ui-kit/blade-heroicons", - "version": "2.2.1", - "version_normalized": "2.2.1.0", - "source": { - "type": "git", - "url": "https://github.com/blade-ui-kit/blade-heroicons.git", - "reference": "bcf4be8f6bbde0bb4c23f2e3fb189b88dec1580a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/blade-ui-kit/blade-heroicons/zipball/bcf4be8f6bbde0bb4c23f2e3fb189b88dec1580a", - "reference": "bcf4be8f6bbde0bb4c23f2e3fb189b88dec1580a", - "shasum": "" - }, - "require": { - "blade-ui-kit/blade-icons": "^1.1", - "illuminate/support": "^9.0|^10.0", - "php": "^8.0" - }, - "require-dev": { - "orchestra/testbench": "^7.0|^8.0", - "phpunit/phpunit": "^9.0" - }, - "time": "2023-12-18T20:44:03+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "BladeUI\\Heroicons\\BladeHeroiconsServiceProvider" - ] - } - }, - "installation-source": "dist", - "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.2.1" - }, - "funding": [ - { - "url": "https://github.com/sponsors/driesvints", - "type": "github" - }, - { - "url": "https://www.paypal.com/paypalme/driesvints", - "type": "paypal" - } - ], - "install-path": "../blade-ui-kit/blade-heroicons" - }, - { - "name": "blade-ui-kit/blade-icons", - "version": "1.5.3", - "version_normalized": "1.5.3.0", - "source": { - "type": "git", - "url": "https://github.com/blade-ui-kit/blade-icons.git", - "reference": "b5e6603218e2347ac81cb780bc6f71c8c3b31f5b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/blade-ui-kit/blade-icons/zipball/b5e6603218e2347ac81cb780bc6f71c8c3b31f5b", - "reference": "b5e6603218e2347ac81cb780bc6f71c8c3b31f5b", - "shasum": "" - }, - "require": { - "illuminate/contracts": "^8.0|^9.0|^10.0", - "illuminate/filesystem": "^8.0|^9.0|^10.0", - "illuminate/support": "^8.0|^9.0|^10.0", - "illuminate/view": "^8.0|^9.0|^10.0", - "php": "^7.4|^8.0", - "symfony/console": "^5.3|^6.0", - "symfony/finder": "^5.3|^6.0" - }, - "require-dev": { - "mockery/mockery": "^1.3", - "orchestra/testbench": "^6.0|^7.0|^8.0", - "phpunit/phpunit": "^9.0" - }, - "time": "2023-10-18T10:50:13+00:00", - "bin": [ - "bin/blade-icons-generate" - ], - "type": "library", - "extra": { - "laravel": { - "providers": [ - "BladeUI\\Icons\\BladeIconsServiceProvider" - ] - } - }, - "installation-source": "dist", - "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" - } - ], - "install-path": "../blade-ui-kit/blade-icons" - }, - { - "name": "brick/math", - "version": "0.11.0", - "version_normalized": "0.11.0.0", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", - "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", - "shasum": "" - }, - "require": { - "php": "^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^9.0", - "vimeo/psalm": "5.0.0" - }, - "time": "2023-01-15T23:15:59+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "brick", - "math" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.11.0" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - } - ], - "install-path": "../brick/math" - }, - { - "name": "carbonphp/carbon-doctrine-types", - "version": "2.1.0", - "version_normalized": "2.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", - "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", - "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0" - }, - "conflict": { - "doctrine/dbal": "<3.7.0 || >=4.0.0" - }, - "require-dev": { - "doctrine/dbal": "^3.7.0", - "nesbot/carbon": "^2.71.0 || ^3.0.0", - "phpunit/phpunit": "^10.3" - }, - "time": "2023-12-11T17:09:12+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "KyleKatarn", - "email": "kylekatarnls@gmail.com" - } - ], - "description": "Types to use Carbon in Doctrine", - "keywords": [ - "carbon", - "date", - "datetime", - "doctrine", - "time" - ], - "support": { - "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", - "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" - }, - "funding": [ - { - "url": "https://github.com/kylekatarnls", - "type": "github" - }, - { - "url": "https://opencollective.com/Carbon", - "type": "open_collective" - }, - { - "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", - "type": "tidelift" - } - ], - "install-path": "../carbonphp/carbon-doctrine-types" - }, - { - "name": "danharrin/date-format-converter", - "version": "v0.3.0", - "version_normalized": "0.3.0.0", - "source": { - "type": "git", - "url": "https://github.com/danharrin/date-format-converter.git", - "reference": "42b6ddc52059d4ba228a67c15adaaa0c039e75f2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/danharrin/date-format-converter/zipball/42b6ddc52059d4ba228a67c15adaaa0c039e75f2", - "reference": "42b6ddc52059d4ba228a67c15adaaa0c039e75f2", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0" - }, - "time": "2022-09-29T07:48:20+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/helpers.php", - "src/standards.php" - ], - "psr-4": { - "DanHarrin\\DateFormatConverter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dan Harrin", - "email": "dan@danharrin.com" - } - ], - "description": "Convert token-based date formats between standards.", - "homepage": "https://github.com/danharrin/date-format-converter", - "support": { - "issues": "https://github.com/danharrin/date-format-converter/issues", - "source": "https://github.com/danharrin/date-format-converter" - }, - "funding": [ - { - "url": "https://github.com/danharrin", - "type": "github" - } - ], - "install-path": "../danharrin/date-format-converter" - }, - { - "name": "danharrin/livewire-rate-limiting", - "version": "v1.3.0", - "version_normalized": "1.3.0.0", - "source": { - "type": "git", - "url": "https://github.com/danharrin/livewire-rate-limiting.git", - "reference": "bf16003f0d977b5a41071526d697eec94ac41735" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/danharrin/livewire-rate-limiting/zipball/bf16003f0d977b5a41071526d697eec94ac41735", - "reference": "bf16003f0d977b5a41071526d697eec94ac41735", - "shasum": "" - }, - "require": { - "illuminate/support": "^9.0|^10.0|^11.0", - "php": "^8.0" - }, - "require-dev": { - "livewire/livewire": "^3.0", - "livewire/volt": "^1.3", - "orchestra/testbench": "^7.0|^8.0|^9.0", - "phpunit/phpunit": "^9.0|^10.0" - }, - "time": "2024-01-21T14:53:34+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "DanHarrin\\LivewireRateLimiting\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dan Harrin", - "email": "dan@danharrin.com" - } - ], - "description": "Apply rate limiters to Laravel Livewire actions.", - "homepage": "https://github.com/danharrin/livewire-rate-limiting", - "support": { - "issues": "https://github.com/danharrin/livewire-rate-limiting/issues", - "source": "https://github.com/danharrin/livewire-rate-limiting" - }, - "funding": [ - { - "url": "https://github.com/danharrin", - "type": "github" - } - ], - "install-path": "../danharrin/livewire-rate-limiting" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.2", - "version_normalized": "3.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "f41715465d65213d644d3141a6a93081be5d3549" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", - "reference": "f41715465d65213d644d3141a6a93081be5d3549", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.42", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", - "scrutinizer/ocular": "1.6.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.0.0" - }, - "time": "2022-10-27T11:44:00+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Dflydev\\DotAccessData\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dragonfly Development Inc.", - "email": "info@dflydev.com", - "homepage": "http://dflydev.com" - }, - { - "name": "Beau Simensen", - "email": "beau@dflydev.com", - "homepage": "http://beausimensen.com" - }, - { - "name": "Carlos Frutos", - "email": "carlos@kiwing.it", - "homepage": "https://github.com/cfrutos" - }, - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com" - } - ], - "description": "Given a deep data structure, access data by dot notation.", - "homepage": "https://github.com/dflydev/dflydev-dot-access-data", - "keywords": [ - "access", - "data", - "dot", - "notation" - ], - "support": { - "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", - "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" - }, - "install-path": "../dflydev/dot-access-data" - }, - { - "name": "doctrine/cache", - "version": "2.2.0", - "version_normalized": "2.2.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", - "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", - "shasum": "" - }, - "require": { - "php": "~7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.4 || ^6", - "symfony/var-exporter": "^4.4 || ^5.4 || ^6" - }, - "time": "2022-05-20T20:07:39+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.2.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", - "type": "tidelift" - } - ], - "install-path": "../doctrine/cache" - }, - { - "name": "doctrine/dbal", - "version": "3.8.0", - "version_normalized": "3.8.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/d244f2e6e6bf32bff5174e6729b57214923ecec9", - "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9", - "shasum": "" - }, - "require": { - "composer-runtime-api": "^2", - "doctrine/cache": "^1.11|^2.0", - "doctrine/deprecations": "^0.5.3|^1", - "doctrine/event-manager": "^1|^2", - "php": "^7.4 || ^8.0", - "psr/cache": "^1|^2|^3", - "psr/log": "^1|^2|^3" - }, - "require-dev": { - "doctrine/coding-standard": "12.0.0", - "fig/log-test": "^1", - "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.56", - "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.15", - "psalm/plugin-phpunit": "0.18.4", - "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.8.1", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/console": "^4.4|^5.4|^6.0|^7.0", - "vimeo/psalm": "4.30.0" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "time": "2024-01-25T21:44:02+00:00", - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "support": { - "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.8.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", - "type": "tidelift" - } - ], - "install-path": "../doctrine/dbal" - }, - { - "name": "doctrine/deprecations", - "version": "1.1.2", - "version_normalized": "1.1.2.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "1.4.10 || 1.10.15", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "0.18.4", - "psr/log": "^1 || ^2 || ^3", - "vimeo/psalm": "4.30.0 || 5.12.0" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "time": "2023-09-27T20:04:15+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", - "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.2" - }, - "install-path": "../doctrine/deprecations" - }, - { - "name": "doctrine/event-manager", - "version": "2.0.0", - "version_normalized": "2.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32", - "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "conflict": { - "doctrine/common": "<2.9" - }, - "require-dev": { - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.8.8", - "phpunit/phpunit": "^9.5", - "vimeo/psalm": "^4.28" - }, - "time": "2022-10-12T20:59:15+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "support": { - "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/2.0.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", - "type": "tidelift" - } - ], - "install-path": "../doctrine/event-manager" - }, - { - "name": "doctrine/inflector", - "version": "2.0.9", - "version_normalized": "2.0.9.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/2930cd5ef353871c821d5c43ed030d39ac8cfe65", - "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^11.0", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25 || ^5.4" - }, - "time": "2024-01-15T18:05:13+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", - "homepage": "https://www.doctrine-project.org/projects/inflector.html", - "keywords": [ - "inflection", - "inflector", - "lowercase", - "manipulation", - "php", - "plural", - "singular", - "strings", - "uppercase", - "words" - ], - "support": { - "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.9" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", - "type": "tidelift" - } - ], - "install-path": "../doctrine/inflector" - }, - { - "name": "doctrine/lexer", - "version": "3.0.0", - "version_normalized": "3.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "84a527db05647743d50373e0ec53a152f2cde568" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", - "reference": "84a527db05647743d50373e0ec53a152f2cde568", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^9.5", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.0" - }, - "time": "2022-12-15T16:57:16+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", - "type": "tidelift" - } - ], - "install-path": "../doctrine/lexer" - }, - { - "name": "dragonmantank/cron-expression", - "version": "v3.3.3", - "version_normalized": "3.3.3.0", - "source": { - "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", - "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "webmozart/assert": "^1.0" - }, - "replace": { - "mtdowling/cron-expression": "^1.0" - }, - "require-dev": { - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-webmozart-assert": "^1.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0" - }, - "time": "2023-08-10T19:36:49+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Cron\\": "src/Cron/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Tankersley", - "email": "chris@ctankersley.com", - "homepage": "https://github.com/dragonmantank" - } - ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": [ - "cron", - "schedule" - ], - "support": { - "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" - }, - "funding": [ - { - "url": "https://github.com/dragonmantank", - "type": "github" - } - ], - "install-path": "../dragonmantank/cron-expression" - }, - { - "name": "egulias/email-validator", - "version": "4.0.2", - "version_normalized": "4.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", - "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^2.0 || ^3.0", - "php": ">=8.1", - "symfony/polyfill-intl-idn": "^1.26" - }, - "require-dev": { - "phpunit/phpunit": "^10.2", - "vimeo/psalm": "^5.12" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "time": "2023-10-06T06:47:41+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Egulias\\EmailValidator\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eduardo Gulias Davis" - } - ], - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", - "keywords": [ - "email", - "emailvalidation", - "emailvalidator", - "validation", - "validator" - ], - "support": { - "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "install-path": "../egulias/email-validator" - }, - { - "name": "filament/actions", - "version": "v3.2.15", - "version_normalized": "3.2.15.0", - "source": { - "type": "git", - "url": "https://github.com/filamentphp/actions.git", - "reference": "84e7b82f669ce68ead59ba477fc87f09286d800c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filamentphp/actions/zipball/84e7b82f669ce68ead59ba477fc87f09286d800c", - "reference": "84e7b82f669ce68ead59ba477fc87f09286d800c", - "shasum": "" - }, - "require": { - "anourvalar/eloquent-serialize": "^1.2", - "filament/forms": "self.version", - "filament/infolists": "self.version", - "filament/notifications": "self.version", - "filament/support": "self.version", - "illuminate/contracts": "^10.0", - "illuminate/database": "^10.0", - "illuminate/support": "^10.0", - "league/csv": "9.11.0", - "openspout/openspout": "^4.23", - "php": "^8.1", - "spatie/laravel-package-tools": "^1.9" - }, - "time": "2024-01-26T12:42:37+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Filament\\Actions\\ActionsServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Filament\\Actions\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Easily add beautiful action modals to any Livewire component.", - "homepage": "https://github.com/filamentphp/filament", - "support": { - "issues": "https://github.com/filamentphp/filament/issues", - "source": "https://github.com/filamentphp/filament" - }, - "install-path": "../filament/actions" - }, - { - "name": "filament/filament", - "version": "v3.2.15", - "version_normalized": "3.2.15.0", - "source": { - "type": "git", - "url": "https://github.com/filamentphp/panels.git", - "reference": "24efb2ee0d238dbd04c37b13fd0425309fe3a0a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filamentphp/panels/zipball/24efb2ee0d238dbd04c37b13fd0425309fe3a0a9", - "reference": "24efb2ee0d238dbd04c37b13fd0425309fe3a0a9", - "shasum": "" - }, - "require": { - "danharrin/livewire-rate-limiting": "^0.3|^1.0", - "filament/actions": "self.version", - "filament/forms": "self.version", - "filament/infolists": "self.version", - "filament/notifications": "self.version", - "filament/support": "self.version", - "filament/tables": "self.version", - "filament/widgets": "self.version", - "illuminate/auth": "^10.0", - "illuminate/console": "^10.0", - "illuminate/contracts": "^10.0", - "illuminate/cookie": "^10.0", - "illuminate/database": "^10.0", - "illuminate/http": "^10.0", - "illuminate/routing": "^10.0", - "illuminate/session": "^10.0", - "illuminate/support": "^10.0", - "illuminate/view": "^10.0", - "php": "^8.1", - "spatie/laravel-package-tools": "^1.9" - }, - "time": "2024-01-26T12:42:40+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Filament\\FilamentServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/global_helpers.php", - "src/helpers.php" - ], - "psr-4": { - "Filament\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A collection of full-stack components for accelerated Laravel app development.", - "homepage": "https://github.com/filamentphp/filament", - "support": { - "issues": "https://github.com/filamentphp/filament/issues", - "source": "https://github.com/filamentphp/filament" - }, - "install-path": "../filament/filament" - }, - { - "name": "filament/forms", - "version": "v3.2.15", - "version_normalized": "3.2.15.0", - "source": { - "type": "git", - "url": "https://github.com/filamentphp/forms.git", - "reference": "1d1cd48bfb69415699f72e016d0d4da93dca6043" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filamentphp/forms/zipball/1d1cd48bfb69415699f72e016d0d4da93dca6043", - "reference": "1d1cd48bfb69415699f72e016d0d4da93dca6043", - "shasum": "" - }, - "require": { - "danharrin/date-format-converter": "^0.3", - "filament/actions": "self.version", - "filament/support": "self.version", - "illuminate/console": "^10.0", - "illuminate/contracts": "^10.0", - "illuminate/database": "^10.0", - "illuminate/filesystem": "^10.0", - "illuminate/support": "^10.0", - "illuminate/validation": "^10.0", - "illuminate/view": "^10.0", - "php": "^8.1", - "spatie/laravel-package-tools": "^1.9" - }, - "time": "2024-01-26T12:42:33+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Filament\\Forms\\FormsServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Filament\\Forms\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Easily add beautiful forms to any Livewire component.", - "homepage": "https://github.com/filamentphp/filament", - "support": { - "issues": "https://github.com/filamentphp/filament/issues", - "source": "https://github.com/filamentphp/filament" - }, - "install-path": "../filament/forms" - }, - { - "name": "filament/infolists", - "version": "v3.2.15", - "version_normalized": "3.2.15.0", - "source": { - "type": "git", - "url": "https://github.com/filamentphp/infolists.git", - "reference": "4ab39e8985cad7f5907b0c162d38023eb9dd402a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filamentphp/infolists/zipball/4ab39e8985cad7f5907b0c162d38023eb9dd402a", - "reference": "4ab39e8985cad7f5907b0c162d38023eb9dd402a", - "shasum": "" - }, - "require": { - "filament/actions": "self.version", - "filament/support": "self.version", - "illuminate/console": "^10.0", - "illuminate/contracts": "^10.0", - "illuminate/database": "^10.0", - "illuminate/filesystem": "^10.0", - "illuminate/support": "^10.0", - "illuminate/view": "^10.0", - "php": "^8.1", - "spatie/laravel-package-tools": "^1.9" - }, - "time": "2024-01-26T12:42:37+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Filament\\Infolists\\InfolistsServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Filament\\Infolists\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Easily add beautiful read-only infolists to any Livewire component.", - "homepage": "https://github.com/filamentphp/filament", - "support": { - "issues": "https://github.com/filamentphp/filament/issues", - "source": "https://github.com/filamentphp/filament" - }, - "install-path": "../filament/infolists" - }, - { - "name": "filament/notifications", - "version": "v3.2.15", - "version_normalized": "3.2.15.0", - "source": { - "type": "git", - "url": "https://github.com/filamentphp/notifications.git", - "reference": "c5f4f51d949fafc52643f2be654a4da92422836c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filamentphp/notifications/zipball/c5f4f51d949fafc52643f2be654a4da92422836c", - "reference": "c5f4f51d949fafc52643f2be654a4da92422836c", - "shasum": "" - }, - "require": { - "filament/actions": "self.version", - "filament/support": "self.version", - "illuminate/contracts": "^10.0", - "illuminate/filesystem": "^10.0", - "illuminate/notifications": "^10.0", - "illuminate/support": "^10.0", - "php": "^8.1", - "spatie/laravel-package-tools": "^1.9" - }, - "time": "2024-01-19T14:01:21+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Filament\\Notifications\\NotificationsServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/Testing/Autoload.php" - ], - "psr-4": { - "Filament\\Notifications\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Easily add beautiful notifications to any Livewire app.", - "homepage": "https://github.com/filamentphp/filament", - "support": { - "issues": "https://github.com/filamentphp/filament/issues", - "source": "https://github.com/filamentphp/filament" - }, - "install-path": "../filament/notifications" - }, - { - "name": "filament/support", - "version": "v3.2.15", - "version_normalized": "3.2.15.0", - "source": { - "type": "git", - "url": "https://github.com/filamentphp/support.git", - "reference": "efeec378372f65bfc0a4caa57a6090b7405acd2a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filamentphp/support/zipball/efeec378372f65bfc0a4caa57a6090b7405acd2a", - "reference": "efeec378372f65bfc0a4caa57a6090b7405acd2a", - "shasum": "" - }, - "require": { - "blade-ui-kit/blade-heroicons": "^2.2.1", - "doctrine/dbal": "^3.2", - "ext-intl": "*", - "illuminate/contracts": "^10.0", - "illuminate/support": "^10.0", - "illuminate/view": "^10.0", - "livewire/livewire": "^3.2.3", - "php": "^8.1", - "ryangjchandler/blade-capture-directive": "^0.2|^0.3", - "spatie/color": "^1.5", - "spatie/invade": "^1.0|^2.0", - "spatie/laravel-package-tools": "^1.9", - "symfony/html-sanitizer": "^6.1" - }, - "time": "2024-01-26T12:43:18+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Filament\\Support\\SupportServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Filament\\Support\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Core helper methods and foundation code for all Filament packages.", - "homepage": "https://github.com/filamentphp/filament", - "support": { - "issues": "https://github.com/filamentphp/filament/issues", - "source": "https://github.com/filamentphp/filament" - }, - "install-path": "../filament/support" - }, - { - "name": "filament/tables", - "version": "v3.2.15", - "version_normalized": "3.2.15.0", - "source": { - "type": "git", - "url": "https://github.com/filamentphp/tables.git", - "reference": "d317b8d6f6f01033d8f61c0150a52c503855855f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filamentphp/tables/zipball/d317b8d6f6f01033d8f61c0150a52c503855855f", - "reference": "d317b8d6f6f01033d8f61c0150a52c503855855f", - "shasum": "" - }, - "require": { - "filament/actions": "self.version", - "filament/forms": "self.version", - "filament/support": "self.version", - "illuminate/console": "^10.0", - "illuminate/contracts": "^10.0", - "illuminate/database": "^10.0", - "illuminate/filesystem": "^10.0", - "illuminate/support": "^10.0", - "illuminate/view": "^10.0", - "kirschbaum-development/eloquent-power-joins": "^3.0", - "php": "^8.1", - "spatie/laravel-package-tools": "^1.9" - }, - "time": "2024-01-26T12:43:15+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Filament\\Tables\\TablesServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Filament\\Tables\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Easily add beautiful tables to any Livewire component.", - "homepage": "https://github.com/filamentphp/filament", - "support": { - "issues": "https://github.com/filamentphp/filament/issues", - "source": "https://github.com/filamentphp/filament" - }, - "install-path": "../filament/tables" - }, - { - "name": "filament/widgets", - "version": "v3.2.15", - "version_normalized": "3.2.15.0", - "source": { - "type": "git", - "url": "https://github.com/filamentphp/widgets.git", - "reference": "9fae19f86f50b71b9d47c87305d742ee962af573" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filamentphp/widgets/zipball/9fae19f86f50b71b9d47c87305d742ee962af573", - "reference": "9fae19f86f50b71b9d47c87305d742ee962af573", - "shasum": "" - }, - "require": { - "filament/support": "self.version", - "php": "^8.1", - "spatie/laravel-package-tools": "^1.9" - }, - "time": "2024-01-15T20:39:18+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Filament\\Widgets\\WidgetsServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Filament\\Widgets\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Easily add beautiful dashboard widgets to any Livewire component.", - "homepage": "https://github.com/filamentphp/filament", - "support": { - "issues": "https://github.com/filamentphp/filament/issues", - "source": "https://github.com/filamentphp/filament" - }, - "install-path": "../filament/widgets" - }, - { - "name": "fruitcake/php-cors", - "version": "v1.3.0", - "version_normalized": "1.3.0.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", - "phpunit/phpunit": "^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "time": "2023-10-12T05:21:21+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Fruitcake\\Cors\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fruitcake", - "homepage": "https://fruitcake.nl" - }, - { - "name": "Barryvdh", - "email": "barryvdh@gmail.com" - } - ], - "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", - "homepage": "https://github.com/fruitcake/php-cors", - "keywords": [ - "cors", - "laravel", - "symfony" - ], - "support": { - "issues": "https://github.com/fruitcake/php-cors/issues", - "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" - }, - "funding": [ - { - "url": "https://fruitcake.nl", - "type": "custom" - }, - { - "url": "https://github.com/barryvdh", - "type": "github" - } - ], - "install-path": "../fruitcake/php-cors" - }, - { - "name": "graham-campbell/result-type", - "version": "v1.1.2", - "version_normalized": "1.1.2.0", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", - "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" - }, - "time": "2023-11-12T22:16:48+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "GrahamCampbell\\ResultType\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - } - ], - "description": "An Implementation Of The Result Type", - "keywords": [ - "Graham Campbell", - "GrahamCampbell", - "Result Type", - "Result-Type", - "result" - ], - "support": { - "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" - } - ], - "install-path": "../graham-campbell/result-type" - }, - { - "name": "guzzlehttp/uri-template", - "version": "v1.0.3", - "version_normalized": "1.0.3.0", - "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" - }, - "time": "2023-12-03T19:50:20+00:00", - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, - "installation-source": "dist", - "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" - } - ], - "install-path": "../guzzlehttp/uri-template" - }, - { - "name": "kirschbaum-development/eloquent-power-joins", - "version": "3.4.0", - "version_normalized": "3.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/kirschbaum-development/eloquent-power-joins.git", - "reference": "9238fcb53d777265ee9d8d139810e2cadecde079" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/9238fcb53d777265ee9d8d139810e2cadecde079", - "reference": "9238fcb53d777265ee9d8d139810e2cadecde079", - "shasum": "" - }, - "require": { - "illuminate/database": "^8.0|^9.0|^10.0", - "illuminate/support": "^8.0|^9.0|^10.0", - "php": "^8.0" - }, - "require-dev": { - "laravel/legacy-factories": "^1.0@dev", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0", - "phpunit/phpunit": "^8.0|^9.0" - }, - "time": "2023-12-07T10:44:41+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Kirschbaum\\PowerJoins\\PowerJoinsServiceProvider" - ] - } - }, - "installation-source": "dist", - "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.4.0" - }, - "install-path": "../kirschbaum-development/eloquent-power-joins" - }, - { - "name": "laravel/framework", - "version": "v10.42.0", - "version_normalized": "10.42.0.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/framework.git", - "reference": "fef1aff874a6749c44f8e142e5764eab8cb96890" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/fef1aff874a6749c44f8e142e5764eab8cb96890", - "reference": "fef1aff874a6749c44f8e142e5764eab8cb96890", - "shasum": "" - }, - "require": { - "brick/math": "^0.9.3|^0.10.2|^0.11", - "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.2", - "guzzlehttp/uri-template": "^1.0", - "laravel/prompts": "^0.1.9", - "laravel/serializable-closure": "^1.3", - "league/commonmark": "^2.2.1", - "league/flysystem": "^3.8.0", - "monolog/monolog": "^3.0", - "nesbot/carbon": "^2.67", - "nunomaduro/termwind": "^1.13", - "php": "^8.1", - "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": "^6.2", - "symfony/error-handler": "^6.2", - "symfony/finder": "^6.2", - "symfony/http-foundation": "^6.4", - "symfony/http-kernel": "^6.2", - "symfony/mailer": "^6.2", - "symfony/mime": "^6.2", - "symfony/process": "^6.2", - "symfony/routing": "^6.2", - "symfony/uid": "^6.2", - "symfony/var-dumper": "^6.2", - "tijsverkoyen/css-to-inline-styles": "^2.2.5", - "vlucas/phpdotenv": "^5.4.1", - "voku/portable-ascii": "^2.0" - }, - "conflict": { - "carbonphp/carbon-doctrine-types": ">=3.0", - "doctrine/dbal": ">=4.0", - "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", - "illuminate/pagination": "self.version", - "illuminate/pipeline": "self.version", - "illuminate/process": "self.version", - "illuminate/queue": "self.version", - "illuminate/redis": "self.version", - "illuminate/routing": "self.version", - "illuminate/session": "self.version", - "illuminate/support": "self.version", - "illuminate/testing": "self.version", - "illuminate/translation": "self.version", - "illuminate/validation": "self.version", - "illuminate/view": "self.version" - }, - "require-dev": { - "ably/ably-php": "^1.0", - "aws/aws-sdk-php": "^3.235.5", - "doctrine/dbal": "^3.5.1", - "ext-gmp": "*", - "fakerphp/faker": "^1.21", - "guzzlehttp/guzzle": "^7.5", - "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.5.1", - "nyholm/psr7": "^1.2", - "orchestra/testbench-core": "^8.18", - "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.4.7", - "phpunit/phpunit": "^10.0.7", - "predis/predis": "^2.0.2", - "symfony/cache": "^6.2", - "symfony/http-client": "^6.2.4", - "symfony/psr-http-message-bridge": "^2.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 (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", - "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).", - "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", - "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.5.1).", - "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", - "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).", - "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).", - "symfony/cache": "Required to PSR-6 cache bridge (^6.2).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." - }, - "time": "2024-01-23T15:07:56+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "10.x-dev" - } - }, - "installation-source": "dist", - "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" - }, - "install-path": "../laravel/framework" - }, - { - "name": "laravel/prompts", - "version": "v0.1.15", - "version_normalized": "0.1.15.0", - "source": { - "type": "git", - "url": "https://github.com/laravel/prompts.git", - "reference": "d814a27514d99b03c85aa42b22cfd946568636c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/d814a27514d99b03c85aa42b22cfd946568636c1", - "reference": "d814a27514d99b03c85aa42b22cfd946568636c1", - "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." - }, - "time": "2023-12-29T22:37:42+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "0.1.x-dev" - } - }, - "installation-source": "dist", - "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.15" - }, - "install-path": "../laravel/prompts" - }, - { - "name": "laravel/serializable-closure", - "version": "v1.3.3", - "version_normalized": "1.3.3.0", - "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" - }, - "time": "2023-11-08T14:08:06+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "installation-source": "dist", - "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" - }, - "install-path": "../laravel/serializable-closure" - }, - { - "name": "league/commonmark", - "version": "2.4.1", - "version_normalized": "2.4.1.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark.git", - "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5", - "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5", - "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.0", - "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", - "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.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" - }, - "time": "2023-08-30T16:55:00+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - } - }, - "installation-source": "dist", - "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" - } - ], - "install-path": "../league/commonmark" - }, - { - "name": "league/config", - "version": "v1.2.0", - "version_normalized": "1.2.0.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" - }, - "time": "2022-12-11T20:36:23+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.2-dev" - } - }, - "installation-source": "dist", - "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" - } - ], - "install-path": "../league/config" - }, - { - "name": "league/csv", - "version": "9.11.0", - "version_normalized": "9.11.0.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/csv.git", - "reference": "33149c4bea4949aa4fa3d03fb11ed28682168b39" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/csv/zipball/33149c4bea4949aa4fa3d03fb11ed28682168b39", - "reference": "33149c4bea4949aa4fa3d03fb11ed28682168b39", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "php": "^8.1.2" - }, - "require-dev": { - "doctrine/collections": "^2.1.3", - "ext-dom": "*", - "ext-xdebug": "*", - "friendsofphp/php-cs-fixer": "^v3.22.0", - "phpbench/phpbench": "^1.2.14", - "phpstan/phpstan": "^1.10.26", - "phpstan/phpstan-deprecation-rules": "^1.1.3", - "phpstan/phpstan-phpunit": "^1.3.13", - "phpstan/phpstan-strict-rules": "^1.5.1", - "phpunit/phpunit": "^10.3.1", - "symfony/var-dumper": "^6.3.3" - }, - "suggest": { - "ext-dom": "Required to use the XMLConverter and the HTMLConverter classes", - "ext-iconv": "Needed to ease transcoding CSV using iconv stream filters" - }, - "time": "2023-09-23T10:09:54+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "League\\Csv\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ignace Nyamagana Butera", - "email": "nyamsprod@gmail.com", - "homepage": "https://github.com/nyamsprod/", - "role": "Developer" - } - ], - "description": "CSV data manipulation made easy in PHP", - "homepage": "https://csv.thephpleague.com", - "keywords": [ - "convert", - "csv", - "export", - "filter", - "import", - "read", - "transform", - "write" - ], - "support": { - "docs": "https://csv.thephpleague.com", - "issues": "https://github.com/thephpleague/csv/issues", - "rss": "https://github.com/thephpleague/csv/releases.atom", - "source": "https://github.com/thephpleague/csv" - }, - "funding": [ - { - "url": "https://github.com/sponsors/nyamsprod", - "type": "github" - } - ], - "install-path": "../league/csv" - }, - { - "name": "league/flysystem", - "version": "3.23.1", - "version_normalized": "3.23.1.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e", - "reference": "199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e", - "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.220.0", - "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.34", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^9.5.11|^10.0", - "sabre/dav": "^4.3.1" - }, - "time": "2024-01-26T18:42:03+00:00", - "type": "library", - "installation-source": "dist", - "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.23.1" - }, - "funding": [ - { - "url": "https://ecologi.com/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - } - ], - "install-path": "../league/flysystem" - }, - { - "name": "league/flysystem-local", - "version": "3.23.1", - "version_normalized": "3.23.1.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "b884d2bf9b53bb4804a56d2df4902bb51e253f00" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/b884d2bf9b53bb4804a56d2df4902bb51e253f00", - "reference": "b884d2bf9b53bb4804a56d2df4902bb51e253f00", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "league/flysystem": "^3.0.0", - "league/mime-type-detection": "^1.0.0", - "php": "^8.0.2" - }, - "time": "2024-01-26T18:25:23+00:00", - "type": "library", - "installation-source": "dist", - "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": { - "issues": "https://github.com/thephpleague/flysystem-local/issues", - "source": "https://github.com/thephpleague/flysystem-local/tree/3.23.1" - }, - "funding": [ - { - "url": "https://ecologi.com/frankdejonge", - "type": "custom" - }, - { - "url": "https://github.com/frankdejonge", - "type": "github" - } - ], - "install-path": "../league/flysystem-local" - }, - { - "name": "league/mime-type-detection", - "version": "1.14.0", - "version_normalized": "1.14.0.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "b6a5854368533df0295c5761a0253656a2e52d9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e", - "reference": "b6a5854368533df0295c5761a0253656a2e52d9e", - "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" - }, - "time": "2023-10-17T14:13:20+00:00", - "type": "library", - "installation-source": "dist", - "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.14.0" - }, - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "install-path": "../league/mime-type-detection" - }, - { - "name": "league/uri", - "version": "7.4.0", - "version_normalized": "7.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/uri.git", - "reference": "bf414ba956d902f5d98bf9385fcf63954f09dce5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri/zipball/bf414ba956d902f5d98bf9385fcf63954f09dce5", - "reference": "bf414ba956d902f5d98bf9385fcf63954f09dce5", - "shasum": "" - }, - "require": { - "league/uri-interfaces": "^7.3", - "php": "^8.1" - }, - "conflict": { - "league/uri-schemes": "^1.0" - }, - "suggest": { - "ext-bcmath": "to improve IPV4 host parsing", - "ext-fileinfo": "to create Data URI from file contennts", - "ext-gmp": "to improve IPV4 host parsing", - "ext-intl": "to handle IDN host with the best performance", - "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", - "league/uri-components": "Needed to easily manipulate URI objects components", - "php-64bit": "to improve IPV4 host parsing", - "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" - }, - "time": "2023-12-01T06:24:25+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "7.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "League\\Uri\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ignace Nyamagana Butera", - "email": "nyamsprod@gmail.com", - "homepage": "https://nyamsprod.com" - } - ], - "description": "URI manipulation library", - "homepage": "https://uri.thephpleague.com", - "keywords": [ - "data-uri", - "file-uri", - "ftp", - "hostname", - "http", - "https", - "middleware", - "parse_str", - "parse_url", - "psr-7", - "query-string", - "querystring", - "rfc3986", - "rfc3987", - "rfc6570", - "uri", - "uri-template", - "url", - "ws" - ], - "support": { - "docs": "https://uri.thephpleague.com", - "forum": "https://thephpleague.slack.com", - "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri/tree/7.4.0" - }, - "funding": [ - { - "url": "https://github.com/sponsors/nyamsprod", - "type": "github" - } - ], - "install-path": "../league/uri" - }, - { - "name": "league/uri-interfaces", - "version": "7.4.0", - "version_normalized": "7.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/uri-interfaces.git", - "reference": "bd8c487ec236930f7bbc42b8d374fa882fbba0f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/bd8c487ec236930f7bbc42b8d374fa882fbba0f3", - "reference": "bd8c487ec236930f7bbc42b8d374fa882fbba0f3", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^8.1", - "psr/http-factory": "^1", - "psr/http-message": "^1.1 || ^2.0" - }, - "suggest": { - "ext-bcmath": "to improve IPV4 host parsing", - "ext-gmp": "to improve IPV4 host parsing", - "ext-intl": "to handle IDN host with the best performance", - "php-64bit": "to improve IPV4 host parsing", - "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" - }, - "time": "2023-11-24T15:40:42+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "7.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "League\\Uri\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ignace Nyamagana Butera", - "email": "nyamsprod@gmail.com", - "homepage": "https://nyamsprod.com" - } - ], - "description": "Common interfaces and classes for URI representation and interaction", - "homepage": "https://uri.thephpleague.com", - "keywords": [ - "data-uri", - "file-uri", - "ftp", - "hostname", - "http", - "https", - "parse_str", - "parse_url", - "psr-7", - "query-string", - "querystring", - "rfc3986", - "rfc3987", - "rfc6570", - "uri", - "url", - "ws" - ], - "support": { - "docs": "https://uri.thephpleague.com", - "forum": "https://thephpleague.slack.com", - "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-interfaces/tree/7.4.0" - }, - "funding": [ - { - "url": "https://github.com/sponsors/nyamsprod", - "type": "github" - } - ], - "install-path": "../league/uri-interfaces" - }, - { - "name": "livewire/livewire", - "version": "v3.4.2", - "version_normalized": "3.4.2.0", - "source": { - "type": "git", - "url": "https://github.com/livewire/livewire.git", - "reference": "ab0baed58b774dde8e0ddbab1bbfd5b3d6334a82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/livewire/livewire/zipball/ab0baed58b774dde8e0ddbab1bbfd5b3d6334a82", - "reference": "ab0baed58b774dde8e0ddbab1bbfd5b3d6334a82", - "shasum": "" - }, - "require": { - "illuminate/database": "^10.0|^11.0", - "illuminate/routing": "^10.0|^11.0", - "illuminate/support": "^10.0|^11.0", - "illuminate/validation": "^10.0|^11.0", - "league/mime-type-detection": "^1.9", - "php": "^8.1", - "symfony/http-kernel": "^6.2|^7.0" - }, - "require-dev": { - "calebporzio/sushi": "^2.1", - "laravel/framework": "^10.0|^11.0", - "laravel/prompts": "^0.1.6", - "mockery/mockery": "^1.3.1", - "orchestra/testbench": "8.20.0|^9.0", - "orchestra/testbench-dusk": "8.20.0|^9.0", - "phpunit/phpunit": "^10.4", - "psy/psysh": "^0.11.22|^0.12" - }, - "time": "2024-01-26T14:25:51+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Livewire\\LivewireServiceProvider" - ], - "aliases": { - "Livewire": "Livewire\\Livewire" - } - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Livewire\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Caleb Porzio", - "email": "calebporzio@gmail.com" - } - ], - "description": "A front-end framework for Laravel.", - "support": { - "issues": "https://github.com/livewire/livewire/issues", - "source": "https://github.com/livewire/livewire/tree/v3.4.2" - }, - "funding": [ - { - "url": "https://github.com/livewire", - "type": "github" - } - ], - "install-path": "../livewire/livewire" - }, - { - "name": "masterminds/html5", - "version": "2.8.1", - "version_normalized": "2.8.1.0", - "source": { - "type": "git", - "url": "https://github.com/Masterminds/html5-php.git", - "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f47dcf3c70c584de14f21143c55d9939631bc6cf", - "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8" - }, - "time": "2023-05-10T11:58:31+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Masterminds\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matt Butcher", - "email": "technosophos@gmail.com" - }, - { - "name": "Matt Farina", - "email": "matt@mattfarina.com" - }, - { - "name": "Asmir Mustafic", - "email": "goetas@gmail.com" - } - ], - "description": "An HTML5 parser and serializer.", - "homepage": "http://masterminds.github.io/html5-php", - "keywords": [ - "HTML5", - "dom", - "html", - "parser", - "querypath", - "serializer", - "xml" - ], - "support": { - "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.8.1" - }, - "install-path": "../masterminds/html5" - }, - { - "name": "monolog/monolog", - "version": "3.5.0", - "version_normalized": "3.5.0.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448", - "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448", - "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.1", - "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" - }, - "time": "2023-10-27T15:32:31+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "installation-source": "dist", - "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.5.0" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", - "type": "tidelift" - } - ], - "install-path": "../monolog/monolog" - }, - { - "name": "nesbot/carbon", - "version": "2.72.2", - "version_normalized": "2.72.2.0", - "source": { - "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "3e7edc41b58d65509baeb0d4a14c8fa41d627130" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/3e7edc41b58d65509baeb0d4a14c8fa41d627130", - "reference": "3e7edc41b58d65509baeb0d4a14c8fa41d627130", - "shasum": "" - }, - "require": { - "carbonphp/carbon-doctrine-types": "*", - "ext-json": "*", - "php": "^7.1.8 || ^8.0", - "psr/clock": "^1.0", - "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" - }, - "provide": { - "psr/clock-implementation": "1.0" - }, - "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", - "doctrine/orm": "^2.7 || ^3.0", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "ondrejmirtes/better-reflection": "*", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.99 || ^1.7.14", - "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", - "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", - "squizlabs/php_codesniffer": "^3.4" - }, - "time": "2024-01-19T00:21:53+00:00", - "bin": [ - "bin/carbon" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-3.x": "3.x-dev", - "dev-master": "2.x-dev" - }, - "laravel": { - "providers": [ - "Carbon\\Laravel\\ServiceProvider" - ] - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "installation-source": "dist", - "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" - } - ], - "install-path": "../nesbot/carbon" - }, - { - "name": "nette/schema", - "version": "v1.3.0", - "version_normalized": "1.3.0.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" - }, - "time": "2023-12-11T11:54:22+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "installation-source": "dist", - "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" - }, - "install-path": "../nette/schema" - }, - { - "name": "nette/utils", - "version": "v4.0.4", - "version_normalized": "4.0.4.0", - "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": { - "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()" - }, - "time": "2024-01-17T16:50:36+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "installation-source": "dist", - "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 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": [ - "array", - "core", - "datetime", - "images", - "json", - "nette", - "paginator", - "password", - "slugify", - "string", - "unicode", - "utf-8", - "utility", - "validation" - ], - "support": { - "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.4" - }, - "install-path": "../nette/utils" - }, - { - "name": "nunomaduro/termwind", - "version": "v1.15.1", - "version_normalized": "1.15.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/termwind.git", - "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", - "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": "^8.0", - "symfony/console": "^5.3.0|^6.0.0" - }, - "require-dev": { - "ergebnis/phpstan-rules": "^1.0.", - "illuminate/console": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "laravel/pint": "^1.0.0", - "pestphp/pest": "^1.21.0", - "pestphp/pest-plugin-mock": "^1.0", - "phpstan/phpstan": "^1.4.6", - "phpstan/phpstan-strict-rules": "^1.1.0", - "symfony/var-dumper": "^5.2.7|^6.0.0", - "thecodingmachine/phpstan-strict-rules": "^1.0.0" - }, - "time": "2023-02-08T01:06:31+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Termwind\\Laravel\\TermwindServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/Functions.php" - ], - "psr-4": { - "Termwind\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Its like Tailwind CSS, but for the console.", - "keywords": [ - "cli", - "console", - "css", - "package", - "php", - "style" - ], - "support": { - "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://github.com/xiCO2k", - "type": "github" - } - ], - "install-path": "../nunomaduro/termwind" - }, - { - "name": "openspout/openspout", - "version": "v4.23.0", - "version_normalized": "4.23.0.0", - "source": { - "type": "git", - "url": "https://github.com/openspout/openspout.git", - "reference": "28f6a0e45acc3377f34c26cc3866e21f0447e0c8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/openspout/openspout/zipball/28f6a0e45acc3377f34c26cc3866e21f0447e0c8", - "reference": "28f6a0e45acc3377f34c26cc3866e21f0447e0c8", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-fileinfo": "*", - "ext-filter": "*", - "ext-libxml": "*", - "ext-xmlreader": "*", - "ext-zip": "*", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" - }, - "require-dev": { - "ext-zlib": "*", - "friendsofphp/php-cs-fixer": "^3.46.0", - "infection/infection": "^0.27.9", - "phpbench/phpbench": "^1.2.15", - "phpstan/phpstan": "^1.10.55", - "phpstan/phpstan-phpunit": "^1.3.15", - "phpstan/phpstan-strict-rules": "^1.5.2", - "phpunit/phpunit": "^10.5.5" - }, - "suggest": { - "ext-iconv": "To handle non UTF-8 CSV files (if \"php-mbstring\" is not already installed or is too limited)", - "ext-mbstring": "To handle non UTF-8 CSV files (if \"iconv\" is not already installed)" - }, - "time": "2024-01-09T09:30:37+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "OpenSpout\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Adrien Loison", - "email": "adrien@box.com" - } - ], - "description": "PHP Library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way", - "homepage": "https://github.com/openspout/openspout", - "keywords": [ - "OOXML", - "csv", - "excel", - "memory", - "odf", - "ods", - "office", - "open", - "php", - "read", - "scale", - "spreadsheet", - "stream", - "write", - "xlsx" - ], - "support": { - "issues": "https://github.com/openspout/openspout/issues", - "source": "https://github.com/openspout/openspout/tree/v4.23.0" - }, - "funding": [ - { - "url": "https://paypal.me/filippotessarotto", - "type": "custom" - }, - { - "url": "https://github.com/Slamdunk", - "type": "github" - } - ], - "install-path": "../openspout/openspout" - }, - { - "name": "phpoption/phpoption", - "version": "1.9.2", - "version_normalized": "1.9.2.0", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", - "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", - "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" - }, - "time": "2023-11-12T21:59:55+00:00", - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": true - }, - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "PhpOption\\": "src/PhpOption/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "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" - } - ], - "description": "Option Type for PHP", - "keywords": [ - "language", - "option", - "php", - "type" - ], - "support": { - "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "install-path": "../phpoption/phpoption" - }, - { - "name": "psr/cache", - "version": "3.0.0", - "version_normalized": "3.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "time": "2021-02-03T23:26:27+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/3.0.0" - }, - "install-path": "../psr/cache" - }, - { - "name": "psr/clock", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/clock.git", - "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", - "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0" - }, - "time": "2022-11-25T14:36:26+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Clock\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for reading the clock.", - "homepage": "https://github.com/php-fig/clock", - "keywords": [ - "clock", - "now", - "psr", - "psr-20", - "time" - ], - "support": { - "issues": "https://github.com/php-fig/clock/issues", - "source": "https://github.com/php-fig/clock/tree/1.0.0" - }, - "install-path": "../psr/clock" - }, - { - "name": "psr/container", - "version": "2.0.2", - "version_normalized": "2.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "shasum": "" - }, - "require": { - "php": ">=7.4.0" - }, - "time": "2021-11-05T16:47:00+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" - }, - "install-path": "../psr/container" - }, - { - "name": "psr/event-dispatcher", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "time": "2019-01-08T18:20:26+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], - "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" - }, - "install-path": "../psr/event-dispatcher" - }, - { - "name": "psr/http-factory", - "version": "1.0.2", - "version_normalized": "1.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "time": "2023-04-10T20:10:41+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "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", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" - }, - "install-path": "../psr/http-factory" - }, - { - "name": "psr/http-message", - "version": "2.0", - "version_normalized": "2.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "time": "2023-04-04T09:54:51+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/2.0" - }, - "install-path": "../psr/http-message" - }, - { - "name": "psr/log", - "version": "3.0.0", - "version_normalized": "3.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "time": "2021-07-14T16:46:02+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" - }, - "install-path": "../psr/log" - }, - { - "name": "psr/simple-cache", - "version": "3.0.0", - "version_normalized": "3.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "time": "2021-10-29T13:26:27+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "support": { - "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" - }, - "install-path": "../psr/simple-cache" - }, - { - "name": "ramsey/collection", - "version": "2.0.0", - "version_normalized": "2.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", - "shasum": "" - }, - "require": { - "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" - }, - "time": "2022-12-31T21:50:55+00:00", - "type": "library", - "extra": { - "captainhook": { - "force-install": true - }, - "ramsey/conventional-commits": { - "configFile": "conventional-commits.json" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Ramsey\\Collection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - } - ], - "description": "A PHP library for representing and manipulating collections.", - "keywords": [ - "array", - "collection", - "hash", - "map", - "queue", - "set" - ], - "support": { - "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/2.0.0" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "install-path": "../ramsey/collection" - }, - { - "name": "ramsey/uuid", - "version": "4.7.5", - "version_normalized": "4.7.5.0", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", - "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", - "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." - }, - "time": "2023-11-08T05:53:05+00:00", - "type": "library", - "extra": { - "captainhook": { - "force-install": true - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Ramsey\\Uuid\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", - "keywords": [ - "guid", - "identifier", - "uuid" - ], - "support": { - "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.5" - }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "install-path": "../ramsey/uuid" - }, - { - "name": "ryangjchandler/blade-capture-directive", - "version": "v0.3.0", - "version_normalized": "0.3.0.0", - "source": { - "type": "git", - "url": "https://github.com/ryangjchandler/blade-capture-directive.git", - "reference": "62fd2ecb50b938a46025093bcb64fcaddd531f89" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ryangjchandler/blade-capture-directive/zipball/62fd2ecb50b938a46025093bcb64fcaddd531f89", - "reference": "62fd2ecb50b938a46025093bcb64fcaddd531f89", - "shasum": "" - }, - "require": { - "illuminate/contracts": "^9.0|^10.0", - "php": "^8.0", - "spatie/laravel-package-tools": "^1.9.2" - }, - "require-dev": { - "nunomaduro/collision": "^6.0|^7.0", - "nunomaduro/larastan": "^2.0", - "orchestra/testbench": "^7.22|^8.0", - "pestphp/pest": "^1.21", - "pestphp/pest-plugin-laravel": "^1.1", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5", - "spatie/laravel-ray": "^1.26" - }, - "time": "2023-02-14T16:54:54+00:00", - "type": "library", - "extra": { - "laravel": { - "providers": [ - "RyanChandler\\BladeCaptureDirective\\BladeCaptureDirectiveServiceProvider" - ], - "aliases": { - "BladeCaptureDirective": "RyanChandler\\BladeCaptureDirective\\Facades\\BladeCaptureDirective" - } - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "RyanChandler\\BladeCaptureDirective\\": "src", - "RyanChandler\\BladeCaptureDirective\\Database\\Factories\\": "database/factories" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ryan Chandler", - "email": "support@ryangjchandler.co.uk", - "role": "Developer" - } - ], - "description": "Create inline partials in your Blade templates with ease.", - "homepage": "https://github.com/ryangjchandler/blade-capture-directive", - "keywords": [ - "blade-capture-directive", - "laravel", - "ryangjchandler" - ], - "support": { - "issues": "https://github.com/ryangjchandler/blade-capture-directive/issues", - "source": "https://github.com/ryangjchandler/blade-capture-directive/tree/v0.3.0" - }, - "funding": [ - { - "url": "https://github.com/ryangjchandler", - "type": "github" - } - ], - "install-path": "../ryangjchandler/blade-capture-directive" - }, - { - "name": "spatie/color", - "version": "1.5.3", - "version_normalized": "1.5.3.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/color.git", - "reference": "49739265900cabce4640cd26c3266fd8d2cca390" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/color/zipball/49739265900cabce4640cd26c3266fd8d2cca390", - "reference": "49739265900cabce4640cd26c3266fd8d2cca390", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.22", - "phpunit/phpunit": "^6.5||^9.0" - }, - "time": "2022-12-18T12:58:32+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Spatie\\Color\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Sebastian De Deyne", - "email": "sebastian@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "A little library to handle color conversions", - "homepage": "https://github.com/spatie/color", - "keywords": [ - "color", - "conversion", - "rgb", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/color/issues", - "source": "https://github.com/spatie/color/tree/1.5.3" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "install-path": "../spatie/color" - }, - { - "name": "spatie/invade", - "version": "2.0.0", - "version_normalized": "2.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/invade.git", - "reference": "7b20a25486de69198e402da20dc924d8bcc8024a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/invade/zipball/7b20a25486de69198e402da20dc924d8bcc8024a", - "reference": "7b20a25486de69198e402da20dc924d8bcc8024a", - "shasum": "" - }, - "require": { - "php": "^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.20", - "phpstan/phpstan": "^1.4", - "spatie/ray": "^1.28" - }, - "time": "2023-07-19T18:55:36+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Spatie\\Invade\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "role": "Developer" - } - ], - "description": "A PHP function to work with private properties and methods", - "homepage": "https://github.com/spatie/invade", - "keywords": [ - "invade", - "spatie" - ], - "support": { - "source": "https://github.com/spatie/invade/tree/2.0.0" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "install-path": "../spatie/invade" - }, - { - "name": "spatie/laravel-package-tools", - "version": "1.16.2", - "version_normalized": "1.16.2.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15", - "reference": "e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15", - "shasum": "" - }, - "require": { - "illuminate/contracts": "^9.28|^10.0|^11.0", - "php": "^8.0" - }, - "require-dev": { - "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" - }, - "time": "2024-01-11T08:43:00+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Spatie\\LaravelPackageTools\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "role": "Developer" - } - ], - "description": "Tools for creating Laravel packages", - "homepage": "https://github.com/spatie/laravel-package-tools", - "keywords": [ - "laravel-package-tools", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.2" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "install-path": "../spatie/laravel-package-tools" - }, - { - "name": "spatie/laravel-permission", - "version": "6.3.0", - "version_normalized": "6.3.0.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-permission.git", - "reference": "4d119986c862ac0168b77338c85d8236bb559a88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/4d119986c862ac0168b77338c85d8236bb559a88", - "reference": "4d119986c862ac0168b77338c85d8236bb559a88", - "shasum": "" - }, - "require": { - "illuminate/auth": "^8.12|^9.0|^10.0|^11.0", - "illuminate/container": "^8.12|^9.0|^10.0|^11.0", - "illuminate/contracts": "^8.12|^9.0|^10.0|^11.0", - "illuminate/database": "^8.12|^9.0|^10.0|^11.0", - "php": "^8.0" - }, - "require-dev": { - "laravel/passport": "^11.0", - "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0", - "phpunit/phpunit": "^9.4|^10.1" - }, - "time": "2023-12-24T06:58:02+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.x-dev", - "dev-master": "6.x-dev" - }, - "laravel": { - "providers": [ - "Spatie\\Permission\\PermissionServiceProvider" - ] - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "src/helpers.php" - ], - "psr-4": { - "Spatie\\Permission\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Permission handling for Laravel 8.0 and up", - "homepage": "https://github.com/spatie/laravel-permission", - "keywords": [ - "acl", - "laravel", - "permission", - "permissions", - "rbac", - "roles", - "security", - "spatie" - ], - "support": { - "issues": "https://github.com/spatie/laravel-permission/issues", - "source": "https://github.com/spatie/laravel-permission/tree/6.3.0" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "install-path": "../spatie/laravel-permission" - }, - { - "name": "symfony/console", - "version": "v6.4.2", - "version_normalized": "6.4.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0254811a143e6bc6c8deea08b589a7e68a37f625", - "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0|^7.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" - }, - "time": "2023-12-10T16:15:48+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command-line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v6.4.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/console" - }, - { - "name": "symfony/css-selector", - "version": "v7.0.0", - "version_normalized": "7.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/bb51d46e53ef8d50d523f0c5faedba056a27943e", - "reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "time": "2023-10-31T17:59:56+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Converts CSS selectors to XPath expressions", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.0.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/css-selector" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.4.0", - "version_normalized": "3.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "time": "2023-05-23T14:45:45+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/deprecation-contracts" - }, - { - "name": "symfony/error-handler", - "version": "v6.4.0", - "version_normalized": "6.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788", - "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0|^7.0" - }, - "conflict": { - "symfony/deprecation-contracts": "<2.5", - "symfony/http-kernel": "<6.4" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^5.4|^6.0|^7.0" - }, - "time": "2023-10-18T09:43:34+00:00", - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/error-handler" - }, - { - "name": "symfony/event-dispatcher", - "version": "v7.0.2", - "version_normalized": "7.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "098b62ae81fdd6cbf941f355059f617db28f4f9a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/098b62ae81fdd6cbf941f355059f617db28f4f9a", - "reference": "098b62ae81fdd6cbf941f355059f617db28f4f9a", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/event-dispatcher-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/service-contracts": "<2.5" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0" - }, - "time": "2023-12-27T22:24:19+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/event-dispatcher" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.4.0", - "version_normalized": "3.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/event-dispatcher": "^1" - }, - "time": "2023-05-23T14:45:45+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/event-dispatcher-contracts" - }, - { - "name": "symfony/finder", - "version": "v6.4.0", - "version_normalized": "6.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", - "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "symfony/filesystem": "^6.0|^7.0" - }, - "time": "2023-10-31T17:30:12+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/finder" - }, - { - "name": "symfony/html-sanitizer", - "version": "v6.4.0", - "version_normalized": "6.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/html-sanitizer.git", - "reference": "9cc71f272eb62504872c80845074f236e8e43536" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/9cc71f272eb62504872c80845074f236e8e43536", - "reference": "9cc71f272eb62504872c80845074f236e8e43536", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "league/uri": "^6.5|^7.0", - "masterminds/html5": "^2.7.2", - "php": ">=8.1" - }, - "time": "2023-10-28T23:12:08+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\HtmlSanitizer\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Titouan Galopin", - "email": "galopintitouan@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to sanitize untrusted HTML input for safe insertion into a document's DOM.", - "homepage": "https://symfony.com", - "keywords": [ - "Purifier", - "html", - "sanitizer" - ], - "support": { - "source": "https://github.com/symfony/html-sanitizer/tree/v6.4.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/html-sanitizer" - }, - { - "name": "symfony/http-foundation", - "version": "v6.4.2", - "version_normalized": "6.4.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/172d807f9ef3fc3fbed8377cc57c20d389269271", - "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php83": "^1.27" - }, - "conflict": { - "symfony/cache": "<6.3" - }, - "require-dev": { - "doctrine/dbal": "^2.13.1|^3|^4", - "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.3|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0" - }, - "time": "2023-12-27T22:16:42+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Defines an object-oriented layer for the HTTP specification", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/http-foundation" - }, - { - "name": "symfony/http-kernel", - "version": "v6.4.2", - "version_normalized": "6.4.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "13e8387320b5942d0dc408440c888e2d526efef4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/13e8387320b5942d0dc408440c888e2d526efef4", - "reference": "13e8387320b5942d0dc408440c888e2d526efef4", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<6.1", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/http-client-contracts": "<2.5", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<6.4", - "symfony/var-dumper": "<6.3", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0|^7.0", - "symfony/clock": "^6.2|^7.0", - "symfony/config": "^6.1|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/css-selector": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/dom-crawler": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4.5|^6.0.5|^7.0", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.3|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4|^6.0|^7.0", - "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^5.4|^6.0|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-exporter": "^6.2|^7.0", - "twig/twig": "^2.13|^3.0.4" - }, - "time": "2023-12-30T15:31:44+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides a structured process for converting a Request into a Response", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/http-kernel" - }, - { - "name": "symfony/mailer", - "version": "v6.4.2", - "version_normalized": "6.4.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "6da89e5c9202f129717a770a03183fb140720168" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/6da89e5c9202f129717a770a03183fb140720168", - "reference": "6da89e5c9202f129717a770a03183fb140720168", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=8.1", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/mime": "^6.2|^7.0", - "symfony/service-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/messenger": "<6.2", - "symfony/mime": "<6.2", - "symfony/twig-bridge": "<6.2.1" - }, - "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/messenger": "^6.2|^7.0", - "symfony/twig-bridge": "^6.2|^7.0" - }, - "time": "2023-12-19T09:12:31+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Mailer\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Helps sending emails", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/mailer" - }, - { - "name": "symfony/mime", - "version": "v6.4.0", - "version_normalized": "6.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", - "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4", - "symfony/serializer": "<6.3.2" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1|^4", - "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/serializer": "^6.3.2|^7.0" - }, - "time": "2023-10-17T11:49:05+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Allows manipulating MIME messages", - "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], - "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/mime" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.28.0", - "version_normalized": "1.28.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "time": "2023-01-26T09:26:14+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-ctype" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", - "version_normalized": "1.28.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "time": "2023-01-26T09:26:14+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-intl-grapheme" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.28.0", - "version_normalized": "1.28.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "time": "2023-01-26T09:30:37+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-intl-idn" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", - "version_normalized": "1.28.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "time": "2023-01-26T09:26:14+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-intl-normalizer" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", - "version_normalized": "1.28.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "time": "2023-07-28T09:04:16+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-mbstring" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.28.0", - "version_normalized": "1.28.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", - "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "time": "2023-01-26T09:26:14+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-php72" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.28.0", - "version_normalized": "1.28.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "time": "2023-01-26T09:26:14+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-php80" - }, - { - "name": "symfony/polyfill-php83", - "version": "v1.28.0", - "version_normalized": "1.28.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", - "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "symfony/polyfill-php80": "^1.14" - }, - "time": "2023-08-16T06:22:46+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php83\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-php83" - }, - { - "name": "symfony/polyfill-uuid", - "version": "v1.28.0", - "version_normalized": "1.28.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9c44518a5aff8da565c8a55dbe85d2769e6f630e", - "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-uuid": "*" - }, - "suggest": { - "ext-uuid": "For best performance" - }, - "time": "2023-01-26T09:26:14+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Uuid\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for uuid functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "uuid" - ], - "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.28.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/polyfill-uuid" - }, - { - "name": "symfony/process", - "version": "v6.4.2", - "version_normalized": "6.4.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/c4b1ef0bc80533d87a2e969806172f1c2a980241", - "reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "time": "2023-12-22T16:42:54+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v6.4.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/process" - }, - { - "name": "symfony/routing", - "version": "v6.4.2", - "version_normalized": "6.4.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "98eab13a07fddc85766f1756129c69f207ffbc21" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/98eab13a07fddc85766f1756129c69f207ffbc21", - "reference": "98eab13a07fddc85766f1756129c69f207ffbc21", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<6.2", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12|^2", - "psr/log": "^1|^2|^3", - "symfony/config": "^6.2|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/yaml": "^5.4|^6.0|^7.0" - }, - "time": "2023-12-29T15:34:34+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Routing\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Maps an HTTP request to a set of configuration variables", - "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], - "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/routing" - }, - { - "name": "symfony/service-contracts", - "version": "v3.4.1", - "version_normalized": "3.4.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "time": "2023-12-26T14:02:43+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/service-contracts" - }, - { - "name": "symfony/string", - "version": "v7.0.2", - "version_normalized": "7.0.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/cc78f14f91f5e53b42044d0620961c48028ff9f5", - "reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.5" - }, - "require-dev": { - "symfony/error-handler": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" - }, - "time": "2023-12-10T16:54:46+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v7.0.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/string" - }, - { - "name": "symfony/translation", - "version": "v6.4.2", - "version_normalized": "6.4.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "a2ab2ec1a462e53016de8e8d5e8912bfd62ea681" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/a2ab2ec1a462e53016de8e8d5e8912bfd62ea681", - "reference": "a2ab2ec1a462e53016de8e8d5e8912bfd62ea681", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.5|^3.0" - }, - "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/service-contracts": "<2.5", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "nikic/php-parser": "^4.13", - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0|^7.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^5.4|^6.0|^7.0" - }, - "time": "2023-12-18T09:25:29+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to internationalize your application", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/translation/tree/v6.4.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/translation" - }, - { - "name": "symfony/translation-contracts", - "version": "v3.4.1", - "version_normalized": "3.4.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "06450585bf65e978026bda220cdebca3f867fde7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", - "reference": "06450585bf65e978026bda220cdebca3f867fde7", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "time": "2023-12-26T14:02:43+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/translation-contracts" - }, - { - "name": "symfony/uid", - "version": "v6.4.0", - "version_normalized": "6.4.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/uid.git", - "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/8092dd1b1a41372110d06374f99ee62f7f0b9a92", - "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/polyfill-uuid": "^1.15" - }, - "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0" - }, - "time": "2023-10-31T08:18:17+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "Symfony\\Component\\Uid\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Grégoire Pineau", - "email": "lyrixx@lyrixx.info" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to generate and represent UIDs", - "homepage": "https://symfony.com", - "keywords": [ - "UID", - "ulid", - "uuid" - ], - "support": { - "source": "https://github.com/symfony/uid/tree/v6.4.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/uid" - }, - { - "name": "symfony/var-dumper", - "version": "v6.4.2", - "version_normalized": "6.4.2.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", - "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/error-handler": "^6.3|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/uid": "^5.4|^6.0|^7.0", - "twig/twig": "^2.13|^3.0.4" - }, - "time": "2023-12-28T19:16:56+00:00", - "bin": [ - "Resources/bin/var-dump-server" - ], - "type": "library", - "installation-source": "dist", - "autoload": { - "files": [ - "Resources/functions/dump.php" - ], - "psr-4": { - "Symfony\\Component\\VarDumper\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides mechanisms for walking through any arbitrary PHP variable", - "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "install-path": "../symfony/var-dumper" - }, - { - "name": "tijsverkoyen/css-to-inline-styles", - "version": "v2.2.7", - "version_normalized": "2.2.7.0", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", - "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" - }, - "time": "2023-12-08T13:03:43+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "TijsVerkoyen\\CssToInlineStyles\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" - } - ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", - "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7" - }, - "install-path": "../tijsverkoyen/css-to-inline-styles" - }, - { - "name": "vlucas/phpdotenv", - "version": "v5.6.0", - "version_normalized": "5.6.0.0", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", - "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.1.2", - "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.2", - "symfony/polyfill-ctype": "^1.24", - "symfony/polyfill-mbstring": "^1.24", - "symfony/polyfill-php80": "^1.24" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "ext-filter": "*", - "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "time": "2023-11-12T22:43:29+00:00", - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": true - }, - "branch-alias": { - "dev-master": "5.6-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Dotenv\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Vance Lucas", - "email": "vance@vancelucas.com", - "homepage": "https://github.com/vlucas" - } - ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "keywords": [ - "dotenv", - "env", - "environment" - ], - "support": { - "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "install-path": "../vlucas/phpdotenv" - }, - { - "name": "voku/portable-ascii", - "version": "2.0.1", - "version_normalized": "2.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/voku/portable-ascii.git", - "reference": "b56450eed252f6801410d810c8e1727224ae0743" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", - "reference": "b56450eed252f6801410d810c8e1727224ae0743", - "shasum": "" - }, - "require": { - "php": ">=7.0.0" - }, - "require-dev": { - "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" - }, - "suggest": { - "ext-intl": "Use Intl for transliterator_transliterate() support" - }, - "time": "2022-03-08T17:03:00+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "psr-4": { - "voku\\": "src/voku/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Lars Moelleken", - "homepage": "http://www.moelleken.org/" - } - ], - "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", - "homepage": "https://github.com/voku/portable-ascii", - "keywords": [ - "ascii", - "clean", - "php" - ], - "support": { - "issues": "https://github.com/voku/portable-ascii/issues", - "source": "https://github.com/voku/portable-ascii/tree/2.0.1" - }, - "funding": [ - { - "url": "https://www.paypal.me/moelleken", - "type": "custom" - }, - { - "url": "https://github.com/voku", - "type": "github" - }, - { - "url": "https://opencollective.com/portable-ascii", - "type": "open_collective" - }, - { - "url": "https://www.patreon.com/voku", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", - "type": "tidelift" - } - ], - "install-path": "../voku/portable-ascii" - }, - { - "name": "webmozart/assert", - "version": "1.11.0", - "version_normalized": "1.11.0.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "time": "2022-06-03T18:03:27+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" - }, - "install-path": "../webmozart/assert" - } - ], - "dev": true, - "dev-package-names": [] -} diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php deleted file mode 100644 index f9dccb35..00000000 --- a/vendor/composer/installed.php +++ /dev/null @@ -1,1140 +0,0 @@ - array( - 'pretty_version' => '1.0.0+no-version-set', - 'version' => '1.0.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'reference' => NULL, - 'name' => 'portable/fila-cms', - 'dev' => true, - ), - 'versions' => array( - 'anourvalar/eloquent-serialize' => array( - 'pretty_version' => '1.2.17', - 'version' => '1.2.17.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../anourvalar/eloquent-serialize', - 'aliases' => array(), - 'reference' => '1fcfdd5f41a0d2e7c8cf1d37e7227357bb827aef', - 'dev_requirement' => false, - ), - 'blade-ui-kit/blade-heroicons' => array( - 'pretty_version' => '2.2.1', - 'version' => '2.2.1.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../blade-ui-kit/blade-heroicons', - 'aliases' => array(), - 'reference' => 'bcf4be8f6bbde0bb4c23f2e3fb189b88dec1580a', - 'dev_requirement' => false, - ), - 'blade-ui-kit/blade-icons' => array( - 'pretty_version' => '1.5.3', - 'version' => '1.5.3.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../blade-ui-kit/blade-icons', - 'aliases' => array(), - 'reference' => 'b5e6603218e2347ac81cb780bc6f71c8c3b31f5b', - 'dev_requirement' => false, - ), - 'brick/math' => array( - 'pretty_version' => '0.11.0', - 'version' => '0.11.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../brick/math', - 'aliases' => array(), - 'reference' => '0ad82ce168c82ba30d1c01ec86116ab52f589478', - 'dev_requirement' => false, - ), - 'carbonphp/carbon-doctrine-types' => array( - 'pretty_version' => '2.1.0', - 'version' => '2.1.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../carbonphp/carbon-doctrine-types', - 'aliases' => array(), - 'reference' => '99f76ffa36cce3b70a4a6abce41dba15ca2e84cb', - 'dev_requirement' => false, - ), - 'danharrin/date-format-converter' => array( - 'pretty_version' => 'v0.3.0', - 'version' => '0.3.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../danharrin/date-format-converter', - 'aliases' => array(), - 'reference' => '42b6ddc52059d4ba228a67c15adaaa0c039e75f2', - 'dev_requirement' => false, - ), - 'danharrin/livewire-rate-limiting' => array( - 'pretty_version' => 'v1.3.0', - 'version' => '1.3.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../danharrin/livewire-rate-limiting', - 'aliases' => array(), - 'reference' => 'bf16003f0d977b5a41071526d697eec94ac41735', - 'dev_requirement' => false, - ), - 'dflydev/dot-access-data' => array( - 'pretty_version' => 'v3.0.2', - 'version' => '3.0.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../dflydev/dot-access-data', - 'aliases' => array(), - 'reference' => 'f41715465d65213d644d3141a6a93081be5d3549', - 'dev_requirement' => false, - ), - 'doctrine/cache' => array( - 'pretty_version' => '2.2.0', - 'version' => '2.2.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../doctrine/cache', - 'aliases' => array(), - 'reference' => '1ca8f21980e770095a31456042471a57bc4c68fb', - 'dev_requirement' => false, - ), - 'doctrine/dbal' => array( - 'pretty_version' => '3.8.0', - 'version' => '3.8.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../doctrine/dbal', - 'aliases' => array(), - 'reference' => 'd244f2e6e6bf32bff5174e6729b57214923ecec9', - 'dev_requirement' => false, - ), - 'doctrine/deprecations' => array( - 'pretty_version' => '1.1.2', - 'version' => '1.1.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../doctrine/deprecations', - 'aliases' => array(), - 'reference' => '4f2d4f2836e7ec4e7a8625e75c6aa916004db931', - 'dev_requirement' => false, - ), - 'doctrine/event-manager' => array( - 'pretty_version' => '2.0.0', - 'version' => '2.0.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../doctrine/event-manager', - 'aliases' => array(), - 'reference' => '750671534e0241a7c50ea5b43f67e23eb5c96f32', - 'dev_requirement' => false, - ), - 'doctrine/inflector' => array( - 'pretty_version' => '2.0.9', - 'version' => '2.0.9.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../doctrine/inflector', - 'aliases' => array(), - 'reference' => '2930cd5ef353871c821d5c43ed030d39ac8cfe65', - 'dev_requirement' => false, - ), - 'doctrine/lexer' => array( - 'pretty_version' => '3.0.0', - 'version' => '3.0.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../doctrine/lexer', - 'aliases' => array(), - 'reference' => '84a527db05647743d50373e0ec53a152f2cde568', - 'dev_requirement' => false, - ), - 'dragonmantank/cron-expression' => array( - 'pretty_version' => 'v3.3.3', - 'version' => '3.3.3.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../dragonmantank/cron-expression', - 'aliases' => array(), - 'reference' => 'adfb1f505deb6384dc8b39804c5065dd3c8c8c0a', - 'dev_requirement' => false, - ), - 'egulias/email-validator' => array( - 'pretty_version' => '4.0.2', - 'version' => '4.0.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../egulias/email-validator', - 'aliases' => array(), - 'reference' => 'ebaaf5be6c0286928352e054f2d5125608e5405e', - 'dev_requirement' => false, - ), - 'filament/actions' => array( - 'pretty_version' => 'v3.2.15', - 'version' => '3.2.15.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../filament/actions', - 'aliases' => array(), - 'reference' => '84e7b82f669ce68ead59ba477fc87f09286d800c', - 'dev_requirement' => false, - ), - 'filament/filament' => array( - 'pretty_version' => 'v3.2.15', - 'version' => '3.2.15.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../filament/filament', - 'aliases' => array(), - 'reference' => '24efb2ee0d238dbd04c37b13fd0425309fe3a0a9', - 'dev_requirement' => false, - ), - 'filament/forms' => array( - 'pretty_version' => 'v3.2.15', - 'version' => '3.2.15.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../filament/forms', - 'aliases' => array(), - 'reference' => '1d1cd48bfb69415699f72e016d0d4da93dca6043', - 'dev_requirement' => false, - ), - 'filament/infolists' => array( - 'pretty_version' => 'v3.2.15', - 'version' => '3.2.15.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../filament/infolists', - 'aliases' => array(), - 'reference' => '4ab39e8985cad7f5907b0c162d38023eb9dd402a', - 'dev_requirement' => false, - ), - 'filament/notifications' => array( - 'pretty_version' => 'v3.2.15', - 'version' => '3.2.15.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../filament/notifications', - 'aliases' => array(), - 'reference' => 'c5f4f51d949fafc52643f2be654a4da92422836c', - 'dev_requirement' => false, - ), - 'filament/support' => array( - 'pretty_version' => 'v3.2.15', - 'version' => '3.2.15.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../filament/support', - 'aliases' => array(), - 'reference' => 'efeec378372f65bfc0a4caa57a6090b7405acd2a', - 'dev_requirement' => false, - ), - 'filament/tables' => array( - 'pretty_version' => 'v3.2.15', - 'version' => '3.2.15.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../filament/tables', - 'aliases' => array(), - 'reference' => 'd317b8d6f6f01033d8f61c0150a52c503855855f', - 'dev_requirement' => false, - ), - 'filament/widgets' => array( - 'pretty_version' => 'v3.2.15', - 'version' => '3.2.15.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../filament/widgets', - 'aliases' => array(), - 'reference' => '9fae19f86f50b71b9d47c87305d742ee962af573', - 'dev_requirement' => false, - ), - 'fruitcake/php-cors' => array( - 'pretty_version' => 'v1.3.0', - 'version' => '1.3.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../fruitcake/php-cors', - 'aliases' => array(), - 'reference' => '3d158f36e7875e2f040f37bc0573956240a5a38b', - 'dev_requirement' => false, - ), - 'graham-campbell/result-type' => array( - 'pretty_version' => 'v1.1.2', - 'version' => '1.1.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../graham-campbell/result-type', - 'aliases' => array(), - 'reference' => 'fbd48bce38f73f8a4ec8583362e732e4095e5862', - 'dev_requirement' => false, - ), - 'guzzlehttp/uri-template' => array( - 'pretty_version' => 'v1.0.3', - 'version' => '1.0.3.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../guzzlehttp/uri-template', - 'aliases' => array(), - 'reference' => 'ecea8feef63bd4fef1f037ecb288386999ecc11c', - 'dev_requirement' => false, - ), - 'illuminate/auth' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/broadcasting' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/bus' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/cache' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/collections' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/conditionable' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/config' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/console' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/container' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/contracts' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/cookie' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/database' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/encryption' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/events' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/filesystem' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/hashing' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/http' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/log' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/macroable' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/mail' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/notifications' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/pagination' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/pipeline' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/process' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/queue' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/redis' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/routing' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/session' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/support' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/testing' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/translation' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/validation' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'illuminate/view' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => 'v10.42.0', - ), - ), - 'kirschbaum-development/eloquent-power-joins' => array( - 'pretty_version' => '3.4.0', - 'version' => '3.4.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../kirschbaum-development/eloquent-power-joins', - 'aliases' => array(), - 'reference' => '9238fcb53d777265ee9d8d139810e2cadecde079', - 'dev_requirement' => false, - ), - 'laravel/framework' => array( - 'pretty_version' => 'v10.42.0', - 'version' => '10.42.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../laravel/framework', - 'aliases' => array(), - 'reference' => 'fef1aff874a6749c44f8e142e5764eab8cb96890', - 'dev_requirement' => false, - ), - 'laravel/prompts' => array( - 'pretty_version' => 'v0.1.15', - 'version' => '0.1.15.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../laravel/prompts', - 'aliases' => array(), - 'reference' => 'd814a27514d99b03c85aa42b22cfd946568636c1', - 'dev_requirement' => false, - ), - 'laravel/serializable-closure' => array( - 'pretty_version' => 'v1.3.3', - 'version' => '1.3.3.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../laravel/serializable-closure', - 'aliases' => array(), - 'reference' => '3dbf8a8e914634c48d389c1234552666b3d43754', - 'dev_requirement' => false, - ), - 'league/commonmark' => array( - 'pretty_version' => '2.4.1', - 'version' => '2.4.1.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../league/commonmark', - 'aliases' => array(), - 'reference' => '3669d6d5f7a47a93c08ddff335e6d945481a1dd5', - 'dev_requirement' => false, - ), - 'league/config' => array( - 'pretty_version' => 'v1.2.0', - 'version' => '1.2.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../league/config', - 'aliases' => array(), - 'reference' => '754b3604fb2984c71f4af4a9cbe7b57f346ec1f3', - 'dev_requirement' => false, - ), - 'league/csv' => array( - 'pretty_version' => '9.11.0', - 'version' => '9.11.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../league/csv', - 'aliases' => array(), - 'reference' => '33149c4bea4949aa4fa3d03fb11ed28682168b39', - 'dev_requirement' => false, - ), - 'league/flysystem' => array( - 'pretty_version' => '3.23.1', - 'version' => '3.23.1.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../league/flysystem', - 'aliases' => array(), - 'reference' => '199e1aebbe3e62bd39f4d4fc8c61ce0b3786197e', - 'dev_requirement' => false, - ), - 'league/flysystem-local' => array( - 'pretty_version' => '3.23.1', - 'version' => '3.23.1.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../league/flysystem-local', - 'aliases' => array(), - 'reference' => 'b884d2bf9b53bb4804a56d2df4902bb51e253f00', - 'dev_requirement' => false, - ), - 'league/mime-type-detection' => array( - 'pretty_version' => '1.14.0', - 'version' => '1.14.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../league/mime-type-detection', - 'aliases' => array(), - 'reference' => 'b6a5854368533df0295c5761a0253656a2e52d9e', - 'dev_requirement' => false, - ), - 'league/uri' => array( - 'pretty_version' => '7.4.0', - 'version' => '7.4.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../league/uri', - 'aliases' => array(), - 'reference' => 'bf414ba956d902f5d98bf9385fcf63954f09dce5', - 'dev_requirement' => false, - ), - 'league/uri-interfaces' => array( - 'pretty_version' => '7.4.0', - 'version' => '7.4.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../league/uri-interfaces', - 'aliases' => array(), - 'reference' => 'bd8c487ec236930f7bbc42b8d374fa882fbba0f3', - 'dev_requirement' => false, - ), - 'livewire/livewire' => array( - 'pretty_version' => 'v3.4.2', - 'version' => '3.4.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../livewire/livewire', - 'aliases' => array(), - 'reference' => 'ab0baed58b774dde8e0ddbab1bbfd5b3d6334a82', - 'dev_requirement' => false, - ), - 'masterminds/html5' => array( - 'pretty_version' => '2.8.1', - 'version' => '2.8.1.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../masterminds/html5', - 'aliases' => array(), - 'reference' => 'f47dcf3c70c584de14f21143c55d9939631bc6cf', - 'dev_requirement' => false, - ), - 'monolog/monolog' => array( - 'pretty_version' => '3.5.0', - 'version' => '3.5.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../monolog/monolog', - 'aliases' => array(), - 'reference' => 'c915e2634718dbc8a4a15c61b0e62e7a44e14448', - 'dev_requirement' => false, - ), - 'mtdowling/cron-expression' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => '^1.0', - ), - ), - 'nesbot/carbon' => array( - 'pretty_version' => '2.72.2', - 'version' => '2.72.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../nesbot/carbon', - 'aliases' => array(), - 'reference' => '3e7edc41b58d65509baeb0d4a14c8fa41d627130', - 'dev_requirement' => false, - ), - 'nette/schema' => array( - 'pretty_version' => 'v1.3.0', - 'version' => '1.3.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../nette/schema', - 'aliases' => array(), - 'reference' => 'a6d3a6d1f545f01ef38e60f375d1cf1f4de98188', - 'dev_requirement' => false, - ), - 'nette/utils' => array( - 'pretty_version' => 'v4.0.4', - 'version' => '4.0.4.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../nette/utils', - 'aliases' => array(), - 'reference' => 'd3ad0aa3b9f934602cb3e3902ebccf10be34d218', - 'dev_requirement' => false, - ), - 'nunomaduro/termwind' => array( - 'pretty_version' => 'v1.15.1', - 'version' => '1.15.1.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../nunomaduro/termwind', - 'aliases' => array(), - 'reference' => '8ab0b32c8caa4a2e09700ea32925441385e4a5dc', - 'dev_requirement' => false, - ), - 'openspout/openspout' => array( - 'pretty_version' => 'v4.23.0', - 'version' => '4.23.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../openspout/openspout', - 'aliases' => array(), - 'reference' => '28f6a0e45acc3377f34c26cc3866e21f0447e0c8', - 'dev_requirement' => false, - ), - 'phpoption/phpoption' => array( - 'pretty_version' => '1.9.2', - 'version' => '1.9.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../phpoption/phpoption', - 'aliases' => array(), - 'reference' => '80735db690fe4fc5c76dfa7f9b770634285fa820', - 'dev_requirement' => false, - ), - 'portable/fila-cms' => array( - 'pretty_version' => '1.0.0+no-version-set', - 'version' => '1.0.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'reference' => NULL, - 'dev_requirement' => false, - ), - 'psr/cache' => array( - 'pretty_version' => '3.0.0', - 'version' => '3.0.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/cache', - 'aliases' => array(), - 'reference' => 'aa5030cfa5405eccfdcb1083ce040c2cb8d253bf', - 'dev_requirement' => false, - ), - 'psr/clock' => array( - 'pretty_version' => '1.0.0', - 'version' => '1.0.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/clock', - 'aliases' => array(), - 'reference' => 'e41a24703d4560fd0acb709162f73b8adfc3aa0d', - 'dev_requirement' => false, - ), - 'psr/clock-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0', - ), - ), - 'psr/container' => array( - 'pretty_version' => '2.0.2', - 'version' => '2.0.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/container', - 'aliases' => array(), - 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', - 'dev_requirement' => false, - ), - 'psr/container-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.1|2.0', - ), - ), - 'psr/event-dispatcher' => array( - 'pretty_version' => '1.0.0', - 'version' => '1.0.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/event-dispatcher', - 'aliases' => array(), - 'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0', - 'dev_requirement' => false, - ), - 'psr/event-dispatcher-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0', - ), - ), - 'psr/http-factory' => array( - 'pretty_version' => '1.0.2', - 'version' => '1.0.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/http-factory', - 'aliases' => array(), - 'reference' => 'e616d01114759c4c489f93b099585439f795fe35', - 'dev_requirement' => false, - ), - 'psr/http-message' => array( - 'pretty_version' => '2.0', - 'version' => '2.0.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/http-message', - 'aliases' => array(), - 'reference' => '402d35bcb92c70c026d1a6a9883f06b2ead23d71', - 'dev_requirement' => false, - ), - 'psr/log' => array( - 'pretty_version' => '3.0.0', - 'version' => '3.0.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/log', - 'aliases' => array(), - 'reference' => 'fe5ea303b0887d5caefd3d431c3e61ad47037001', - 'dev_requirement' => false, - ), - 'psr/log-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '3.0.0', - 1 => '1.0|2.0|3.0', - ), - ), - 'psr/simple-cache' => array( - 'pretty_version' => '3.0.0', - 'version' => '3.0.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../psr/simple-cache', - 'aliases' => array(), - 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', - 'dev_requirement' => false, - ), - 'psr/simple-cache-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '1.0|2.0|3.0', - ), - ), - 'ramsey/collection' => array( - 'pretty_version' => '2.0.0', - 'version' => '2.0.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../ramsey/collection', - 'aliases' => array(), - 'reference' => 'a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5', - 'dev_requirement' => false, - ), - 'ramsey/uuid' => array( - 'pretty_version' => '4.7.5', - 'version' => '4.7.5.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../ramsey/uuid', - 'aliases' => array(), - 'reference' => '5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e', - 'dev_requirement' => false, - ), - 'rhumsaa/uuid' => array( - 'dev_requirement' => false, - 'replaced' => array( - 0 => '4.7.5', - ), - ), - 'ryangjchandler/blade-capture-directive' => array( - 'pretty_version' => 'v0.3.0', - 'version' => '0.3.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../ryangjchandler/blade-capture-directive', - 'aliases' => array(), - 'reference' => '62fd2ecb50b938a46025093bcb64fcaddd531f89', - 'dev_requirement' => false, - ), - 'spatie/color' => array( - 'pretty_version' => '1.5.3', - 'version' => '1.5.3.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../spatie/color', - 'aliases' => array(), - 'reference' => '49739265900cabce4640cd26c3266fd8d2cca390', - 'dev_requirement' => false, - ), - 'spatie/invade' => array( - 'pretty_version' => '2.0.0', - 'version' => '2.0.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../spatie/invade', - 'aliases' => array(), - 'reference' => '7b20a25486de69198e402da20dc924d8bcc8024a', - 'dev_requirement' => false, - ), - 'spatie/laravel-package-tools' => array( - 'pretty_version' => '1.16.2', - 'version' => '1.16.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../spatie/laravel-package-tools', - 'aliases' => array(), - 'reference' => 'e62eeb1fe8a8a0b2e83227a6c279c8c59f7d3a15', - 'dev_requirement' => false, - ), - 'spatie/laravel-permission' => array( - 'pretty_version' => '6.3.0', - 'version' => '6.3.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../spatie/laravel-permission', - 'aliases' => array(), - 'reference' => '4d119986c862ac0168b77338c85d8236bb559a88', - 'dev_requirement' => false, - ), - 'symfony/console' => array( - 'pretty_version' => 'v6.4.2', - 'version' => '6.4.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/console', - 'aliases' => array(), - 'reference' => '0254811a143e6bc6c8deea08b589a7e68a37f625', - 'dev_requirement' => false, - ), - 'symfony/css-selector' => array( - 'pretty_version' => 'v7.0.0', - 'version' => '7.0.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/css-selector', - 'aliases' => array(), - 'reference' => 'bb51d46e53ef8d50d523f0c5faedba056a27943e', - 'dev_requirement' => false, - ), - 'symfony/deprecation-contracts' => array( - 'pretty_version' => 'v3.4.0', - 'version' => '3.4.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', - 'aliases' => array(), - 'reference' => '7c3aff79d10325257a001fcf92d991f24fc967cf', - 'dev_requirement' => false, - ), - 'symfony/error-handler' => array( - 'pretty_version' => 'v6.4.0', - 'version' => '6.4.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/error-handler', - 'aliases' => array(), - 'reference' => 'c873490a1c97b3a0a4838afc36ff36c112d02788', - 'dev_requirement' => false, - ), - 'symfony/event-dispatcher' => array( - 'pretty_version' => 'v7.0.2', - 'version' => '7.0.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/event-dispatcher', - 'aliases' => array(), - 'reference' => '098b62ae81fdd6cbf941f355059f617db28f4f9a', - 'dev_requirement' => false, - ), - 'symfony/event-dispatcher-contracts' => array( - 'pretty_version' => 'v3.4.0', - 'version' => '3.4.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/event-dispatcher-contracts', - 'aliases' => array(), - 'reference' => 'a76aed96a42d2b521153fb382d418e30d18b59df', - 'dev_requirement' => false, - ), - 'symfony/event-dispatcher-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '2.0|3.0', - ), - ), - 'symfony/finder' => array( - 'pretty_version' => 'v6.4.0', - 'version' => '6.4.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/finder', - 'aliases' => array(), - 'reference' => '11d736e97f116ac375a81f96e662911a34cd50ce', - 'dev_requirement' => false, - ), - 'symfony/html-sanitizer' => array( - 'pretty_version' => 'v6.4.0', - 'version' => '6.4.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/html-sanitizer', - 'aliases' => array(), - 'reference' => '9cc71f272eb62504872c80845074f236e8e43536', - 'dev_requirement' => false, - ), - 'symfony/http-foundation' => array( - 'pretty_version' => 'v6.4.2', - 'version' => '6.4.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/http-foundation', - 'aliases' => array(), - 'reference' => '172d807f9ef3fc3fbed8377cc57c20d389269271', - 'dev_requirement' => false, - ), - 'symfony/http-kernel' => array( - 'pretty_version' => 'v6.4.2', - 'version' => '6.4.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/http-kernel', - 'aliases' => array(), - 'reference' => '13e8387320b5942d0dc408440c888e2d526efef4', - 'dev_requirement' => false, - ), - 'symfony/mailer' => array( - 'pretty_version' => 'v6.4.2', - 'version' => '6.4.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/mailer', - 'aliases' => array(), - 'reference' => '6da89e5c9202f129717a770a03183fb140720168', - 'dev_requirement' => false, - ), - 'symfony/mime' => array( - 'pretty_version' => 'v6.4.0', - 'version' => '6.4.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/mime', - 'aliases' => array(), - 'reference' => 'ca4f58b2ef4baa8f6cecbeca2573f88cd577d205', - 'dev_requirement' => false, - ), - 'symfony/polyfill-ctype' => array( - 'pretty_version' => 'v1.28.0', - 'version' => '1.28.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', - 'aliases' => array(), - 'reference' => 'ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb', - 'dev_requirement' => false, - ), - 'symfony/polyfill-intl-grapheme' => array( - 'pretty_version' => 'v1.28.0', - 'version' => '1.28.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', - 'aliases' => array(), - 'reference' => '875e90aeea2777b6f135677f618529449334a612', - 'dev_requirement' => false, - ), - 'symfony/polyfill-intl-idn' => array( - 'pretty_version' => 'v1.28.0', - 'version' => '1.28.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-intl-idn', - 'aliases' => array(), - 'reference' => 'ecaafce9f77234a6a449d29e49267ba10499116d', - 'dev_requirement' => false, - ), - 'symfony/polyfill-intl-normalizer' => array( - 'pretty_version' => 'v1.28.0', - 'version' => '1.28.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', - 'aliases' => array(), - 'reference' => '8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92', - 'dev_requirement' => false, - ), - 'symfony/polyfill-mbstring' => array( - 'pretty_version' => 'v1.28.0', - 'version' => '1.28.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', - 'aliases' => array(), - 'reference' => '42292d99c55abe617799667f454222c54c60e229', - 'dev_requirement' => false, - ), - 'symfony/polyfill-php72' => array( - 'pretty_version' => 'v1.28.0', - 'version' => '1.28.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-php72', - 'aliases' => array(), - 'reference' => '70f4aebd92afca2f865444d30a4d2151c13c3179', - 'dev_requirement' => false, - ), - 'symfony/polyfill-php80' => array( - 'pretty_version' => 'v1.28.0', - 'version' => '1.28.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-php80', - 'aliases' => array(), - 'reference' => '6caa57379c4aec19c0a12a38b59b26487dcfe4b5', - 'dev_requirement' => false, - ), - 'symfony/polyfill-php83' => array( - 'pretty_version' => 'v1.28.0', - 'version' => '1.28.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-php83', - 'aliases' => array(), - 'reference' => 'b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11', - 'dev_requirement' => false, - ), - 'symfony/polyfill-uuid' => array( - 'pretty_version' => 'v1.28.0', - 'version' => '1.28.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-uuid', - 'aliases' => array(), - 'reference' => '9c44518a5aff8da565c8a55dbe85d2769e6f630e', - 'dev_requirement' => false, - ), - 'symfony/process' => array( - 'pretty_version' => 'v6.4.2', - 'version' => '6.4.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/process', - 'aliases' => array(), - 'reference' => 'c4b1ef0bc80533d87a2e969806172f1c2a980241', - 'dev_requirement' => false, - ), - 'symfony/routing' => array( - 'pretty_version' => 'v6.4.2', - 'version' => '6.4.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/routing', - 'aliases' => array(), - 'reference' => '98eab13a07fddc85766f1756129c69f207ffbc21', - 'dev_requirement' => false, - ), - 'symfony/service-contracts' => array( - 'pretty_version' => 'v3.4.1', - 'version' => '3.4.1.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/service-contracts', - 'aliases' => array(), - 'reference' => 'fe07cbc8d837f60caf7018068e350cc5163681a0', - 'dev_requirement' => false, - ), - 'symfony/string' => array( - 'pretty_version' => 'v7.0.2', - 'version' => '7.0.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/string', - 'aliases' => array(), - 'reference' => 'cc78f14f91f5e53b42044d0620961c48028ff9f5', - 'dev_requirement' => false, - ), - 'symfony/translation' => array( - 'pretty_version' => 'v6.4.2', - 'version' => '6.4.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/translation', - 'aliases' => array(), - 'reference' => 'a2ab2ec1a462e53016de8e8d5e8912bfd62ea681', - 'dev_requirement' => false, - ), - 'symfony/translation-contracts' => array( - 'pretty_version' => 'v3.4.1', - 'version' => '3.4.1.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/translation-contracts', - 'aliases' => array(), - 'reference' => '06450585bf65e978026bda220cdebca3f867fde7', - 'dev_requirement' => false, - ), - 'symfony/translation-implementation' => array( - 'dev_requirement' => false, - 'provided' => array( - 0 => '2.3|3.0', - ), - ), - 'symfony/uid' => array( - 'pretty_version' => 'v6.4.0', - 'version' => '6.4.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/uid', - 'aliases' => array(), - 'reference' => '8092dd1b1a41372110d06374f99ee62f7f0b9a92', - 'dev_requirement' => false, - ), - 'symfony/var-dumper' => array( - 'pretty_version' => 'v6.4.2', - 'version' => '6.4.2.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/var-dumper', - 'aliases' => array(), - 'reference' => '68d6573ec98715ddcae5a0a85bee3c1c27a4c33f', - 'dev_requirement' => false, - ), - 'tijsverkoyen/css-to-inline-styles' => array( - 'pretty_version' => 'v2.2.7', - 'version' => '2.2.7.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../tijsverkoyen/css-to-inline-styles', - 'aliases' => array(), - 'reference' => '83ee6f38df0a63106a9e4536e3060458b74ccedb', - 'dev_requirement' => false, - ), - 'vlucas/phpdotenv' => array( - 'pretty_version' => 'v5.6.0', - 'version' => '5.6.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../vlucas/phpdotenv', - 'aliases' => array(), - 'reference' => '2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4', - 'dev_requirement' => false, - ), - 'voku/portable-ascii' => array( - 'pretty_version' => '2.0.1', - 'version' => '2.0.1.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../voku/portable-ascii', - 'aliases' => array(), - 'reference' => 'b56450eed252f6801410d810c8e1727224ae0743', - 'dev_requirement' => false, - ), - 'webmozart/assert' => array( - 'pretty_version' => '1.11.0', - 'version' => '1.11.0.0', - 'type' => 'library', - 'install_path' => __DIR__ . '/../webmozart/assert', - 'aliases' => array(), - 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', - 'dev_requirement' => false, - ), - ), -); diff --git a/vendor/danharrin/date-format-converter/.gitattributes b/vendor/danharrin/date-format-converter/.gitattributes deleted file mode 100644 index dfe07704..00000000 --- a/vendor/danharrin/date-format-converter/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto diff --git a/vendor/danharrin/date-format-converter/.github/FUNDING.yml b/vendor/danharrin/date-format-converter/.github/FUNDING.yml deleted file mode 100644 index 4df58a12..00000000 --- a/vendor/danharrin/date-format-converter/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -github: [danharrin] diff --git a/vendor/danharrin/date-format-converter/.github/ISSUE_TEMPLATE/bug_report.md b/vendor/danharrin/date-format-converter/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 916ebae0..00000000 --- a/vendor/danharrin/date-format-converter/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -labels: bug -assignees: DanHarrin ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To reproduce** -A simplified code example to demonstrate the issue you are facing. - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Context** -- Package version: [e.g. 0.1.0] -- Server OS: [e.g. Ubuntu 18.04.4] -- PHP version: [e.g. 7.4] - -**Additional details** -Add any other details about the problem here. diff --git a/vendor/danharrin/date-format-converter/.github/ISSUE_TEMPLATE/config.yml b/vendor/danharrin/date-format-converter/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 89e253d4..00000000 --- a/vendor/danharrin/date-format-converter/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,8 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Feature request - url: https://github.com/danharrin/date-format-converter/discussions/new - about: For ideas or feature requests - - name: Support questions & other - url: https://github.com/danharrin/date-format-converter/discussions/new - about: If you have a question or need help installing using the package diff --git a/vendor/danharrin/date-format-converter/.gitignore b/vendor/danharrin/date-format-converter/.gitignore deleted file mode 100644 index dfd6caa4..00000000 --- a/vendor/danharrin/date-format-converter/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/vendor -composer.lock \ No newline at end of file diff --git a/vendor/danharrin/date-format-converter/CODE_OF_CONDUCT.md b/vendor/danharrin/date-format-converter/CODE_OF_CONDUCT.md deleted file mode 100644 index e330c34a..00000000 --- a/vendor/danharrin/date-format-converter/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,76 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting Dan Harrin at dan@danharrin.com. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq diff --git a/vendor/danharrin/date-format-converter/LICENSE.md b/vendor/danharrin/date-format-converter/LICENSE.md deleted file mode 100644 index 0069f9eb..00000000 --- a/vendor/danharrin/date-format-converter/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# MIT License - -Copyright (c) Dan Harrin - -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/vendor/danharrin/date-format-converter/README.md b/vendor/danharrin/date-format-converter/README.md deleted file mode 100644 index badcb7d3..00000000 --- a/vendor/danharrin/date-format-converter/README.md +++ /dev/null @@ -1,33 +0,0 @@ -

- Package banner -

- -This package allows you to convert token-based date formats between standards. - -## Installation - -You can use Composer to install this package into your application: - -``` -composer require danharrin/date-format-converter -``` - -## Usage - -Use the `convert_date_format()` method to initialise a new instance of the converter, ready to use: - -```php -convert_date_format('Y-m-d H:i:s')->to('day.js'); -// YYYY-MM-DD HH:mm:ss - -convert_date_format('Y-m-d H:i:s')->to('moment.js'); -// YYYY-MM-DD HH:mm:ss -``` - -## Need Help? - -🐞 If you spot a bug with this package, please [submit a detailed issue](https://github.com/danharrin/date-format-converter/issues/new), and wait for assistance. - -🤔 If you have a question or feature request, please [start a new discussion](https://github.com/danharrin/date-format-converter/discussions/new). - -🔐 If you discover a vulnerability within the package, please review our [security policy](https://github.com/danharrin/date-format-converter/blob/main/SECURITY.md). diff --git a/vendor/danharrin/date-format-converter/SECURITY.md b/vendor/danharrin/date-format-converter/SECURITY.md deleted file mode 100644 index 9954dc14..00000000 --- a/vendor/danharrin/date-format-converter/SECURITY.md +++ /dev/null @@ -1,11 +0,0 @@ -# Security Policy - -## Supported Versions - -| Version | Supported | -| ------- | ------------------ | -| 0.x | :white_check_mark: | - -## Reporting a Vulnerability - -If you discover a security vulnerability within the package, please email Dan Harrin via [dan@danharrin.com](mailto:dan@danharrin.com). All security vulnerabilities will be promptly addressed. diff --git a/vendor/danharrin/date-format-converter/composer.json b/vendor/danharrin/date-format-converter/composer.json deleted file mode 100644 index 79ed30cb..00000000 --- a/vendor/danharrin/date-format-converter/composer.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "danharrin/date-format-converter", - "description": "Convert token-based date formats between standards.", - "license": "MIT", - "homepage": "https://github.com/danharrin/date-format-converter", - "support": { - "issues": "https://github.com/danharrin/date-format-converter/issues", - "source": "https://github.com/danharrin/date-format-converter" - }, - "authors": [ - { - "name": "Dan Harrin", - "email": "dan@danharrin.com" - } - ], - "require": { - "php": "^7.2|^8.0" - }, - "autoload": { - "files": [ - "src/helpers.php", - "src/standards.php" - ], - "psr-4": { - "DanHarrin\\DateFormatConverter\\": "src/" - } - }, - "config": { - "sort-packages": true - }, - "minimum-stability": "dev" -} diff --git a/vendor/danharrin/date-format-converter/src/Converter.php b/vendor/danharrin/date-format-converter/src/Converter.php deleted file mode 100644 index be873157..00000000 --- a/vendor/danharrin/date-format-converter/src/Converter.php +++ /dev/null @@ -1,42 +0,0 @@ -format = $format; - } - - public function to($standard) - { - $format = ''; - - $escape = false; - - foreach (str_split($this->format) as $token) { - if ($token === '[') { - $escape = true; - } - - if ($escape) { - if ($token === ']') { - $escape = false; - } - - $format .= $token; - - continue; - } - - $format .= array_key_exists($token, DATE_FORMAT_STANDARDS) ? - DATE_FORMAT_STANDARDS[$token][$standard] : - $token; - } - - return $format; - } -} diff --git a/vendor/danharrin/date-format-converter/src/helpers.php b/vendor/danharrin/date-format-converter/src/helpers.php deleted file mode 100644 index 22da8133..00000000 --- a/vendor/danharrin/date-format-converter/src/helpers.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'day.js' => 'A', - 'moment.js' => 'A', - ], - 'a' => [ - 'day.js' => 'a', - 'moment.js' => 'a', - ], - 'B' => [ - 'day.js' => '', - 'moment.js' => '', - ], - 'c' => [ - 'day.js' => '', - 'moment.js' => '', - ], - 'D' => [ - 'day.js' => 'ddd', - 'moment.js' => 'ddd', - ], - 'd' => [ - 'day.js' => 'DD', - 'moment.js' => 'DD', - ], - 'e' => [ - 'day.js' => '', - 'moment.js' => '', - ], - 'F' => [ - 'day.js' => 'MMMM', - 'moment.js' => 'MMMM', - ], - 'G' => [ - 'day.js' => 'H', - 'moment.js' => 'H', - ], - 'g' => [ - 'day.js' => 'h', - 'moment.js' => 'h', - ], - 'H' => [ - 'day.js' => 'HH', - 'moment.js' => 'HH', - ], - 'h' => [ - 'day.js' => 'hh', - 'moment.js' => 'hh', - ], - 'i' => [ - 'day.js' => 'mm', - 'moment.js' => 'mm', - ], - 'I' => [ - 'day.js' => '', - 'moment.js' => '', - ], - 'j' => [ - 'day.js' => 'D', - 'moment.js' => 'D', - ], - 'L' => [ - 'day.js' => '', - 'moment.js' => '', - ], - 'l' => [ - 'day.js' => 'dddd', - 'moment.js' => 'dddd', - ], - 'M' => [ - 'day.js' => 'MMM', - 'moment.js' => 'MMM', - ], - 'm' => [ - 'day.js' => 'MM', - 'moment.js' => 'MM', - ], - 'N' => [ - 'day.js' => '', - 'moment.js' => 'E', - ], - 'n' => [ - 'day.js' => 'M', - 'moment.js' => 'M', - ], - 'O' => [ - 'day.js' => 'ZZ', - 'moment.js' => 'ZZ', - ], - 'o' => [ - 'day.js' => '', - 'moment.js' => '', - ], - 'P' => [ - 'day.js' => 'Z', - 'moment.js' => 'Z', - ], - 'p' => [ - 'day.js' => '', - 'moment.js' => '', - ], - 'r' => [ - 'day.js' => '', - 'moment.js' => '', - ], - 'S' => [ - 'day.js' => '', - 'moment.js' => '', - ], - 's' => [ - 'day.js' => 'ss', - 'moment.js' => 'ss', - ], - 'T' => [ - 'day.js' => '', - 'moment.js' => '', - ], - 't' => [ - 'day.js' => '', - 'moment.js' => '', - ], - 'U' => [ - 'day.js' => '', - 'moment.js' => '', - ], - 'u' => [ - 'day.js' => '', - 'moment.js' => '', - ], - 'v' => [ - 'day.js' => 'SSS', - 'moment.js' => 'SSS', - ], - 'w' => [ - 'day.js' => '', - 'moment.js' => 'e', - ], - 'Y' => [ - 'day.js' => 'YYYY', - 'moment.js' => 'YYYY', - ], - 'y' => [ - 'day.js' => 'YY', - 'moment.js' => 'YY', - ], - 'X' => [ - 'day.js' => '', - 'moment.js' => 'DDDD', - ], -]; \ No newline at end of file diff --git a/vendor/danharrin/livewire-rate-limiting/.github/FUNDING.yml b/vendor/danharrin/livewire-rate-limiting/.github/FUNDING.yml deleted file mode 100644 index 4df58a12..00000000 --- a/vendor/danharrin/livewire-rate-limiting/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -github: [danharrin] diff --git a/vendor/danharrin/livewire-rate-limiting/.github/ISSUE_TEMPLATE/bug_report.md b/vendor/danharrin/livewire-rate-limiting/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 02228f31..00000000 --- a/vendor/danharrin/livewire-rate-limiting/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -labels: bug -assignees: DanHarrin ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To reproduce** -A simplified code example to demonstrate the issue you are facing. - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Context** -- Package version: [e.g. 0.1.0] -- Livewire version: [e.g. 2.0.0] -- Laravel version: [e.g. 8.0.0] -- Server OS: [e.g. Ubuntu 18.04.4] -- PHP version: [e.g. 7.4] - -**Additional details** -Add any other details about the problem here. diff --git a/vendor/danharrin/livewire-rate-limiting/.github/ISSUE_TEMPLATE/config.yml b/vendor/danharrin/livewire-rate-limiting/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 720ab07a..00000000 --- a/vendor/danharrin/livewire-rate-limiting/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,8 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Feature request - url: https://github.com/danharrin/livewire-rate-limiting/discussions/new - about: For ideas or feature requests - - name: Support questions & other - url: https://github.com/danharrin/livewire-rate-limiting/discussions/new - about: If you have a question or need help installing using the package diff --git a/vendor/danharrin/livewire-rate-limiting/.github/workflows/tests.yml b/vendor/danharrin/livewire-rate-limiting/.github/workflows/tests.yml deleted file mode 100644 index 0df7b335..00000000 --- a/vendor/danharrin/livewire-rate-limiting/.github/workflows/tests.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: tests - -on: - push: - pull_request: - -jobs: - run-tests: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - php: [ 8.3, 8.2 ] - laravel: [ 11.*, 10.* ] - dependency-version: [ prefer-stable ] - include: - - laravel: 11.* - testbench: 9.* - - laravel: 10.* - testbench: 8.* - name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.dependency-version }} - steps: - - uses: actions/checkout@v2 - - name: Cache dependencies - uses: actions/cache@v2 - with: - path: ~/.composer/cache/files - key: dependencies-laravel-${{ matrix.laravel }}-php-${{ matrix.php }}-composer-${{ hashFiles('composer.json') }} - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - extensions: mbstring, pdo, pdo_sqlite - coverage: none - - name: Install dependencies - run: | - composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" --no-interaction --no-update - composer update --${{ matrix.dependency-version }} --prefer-dist --no-interaction --no-suggest - - name: Execute tests - run: vendor/bin/phpunit diff --git a/vendor/danharrin/livewire-rate-limiting/.gitignore b/vendor/danharrin/livewire-rate-limiting/.gitignore deleted file mode 100644 index ef307002..00000000 --- a/vendor/danharrin/livewire-rate-limiting/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/.idea -/vendor -.phpunit.result.cache -.phpunit.cache diff --git a/vendor/danharrin/livewire-rate-limiting/CODE_OF_CONDUCT.md b/vendor/danharrin/livewire-rate-limiting/CODE_OF_CONDUCT.md deleted file mode 100644 index e330c34a..00000000 --- a/vendor/danharrin/livewire-rate-limiting/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,76 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting Dan Harrin at dan@danharrin.com. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq diff --git a/vendor/danharrin/livewire-rate-limiting/LICENSE.md b/vendor/danharrin/livewire-rate-limiting/LICENSE.md deleted file mode 100644 index 0069f9eb..00000000 --- a/vendor/danharrin/livewire-rate-limiting/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# MIT License - -Copyright (c) Dan Harrin - -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/vendor/danharrin/livewire-rate-limiting/README.md b/vendor/danharrin/livewire-rate-limiting/README.md deleted file mode 100644 index 748640ba..00000000 --- a/vendor/danharrin/livewire-rate-limiting/README.md +++ /dev/null @@ -1,136 +0,0 @@ -

- Package banner -

- -

- Tests passing - Laravel v8.x, v9.x, v10.x, v11.x - PHP 8.0+ -

- -This package allows you to apply rate limiters to Laravel Livewire actions. This is useful for throttling login attempts and other brute force attacks, reducing spam, and more. - -## Installation - -You can use Composer to install this package into your application: - -``` -composer require danharrin/livewire-rate-limiting -``` - -This package requires at least Laravel v8.x, when rate limiting improvements were introduced. - -This package is tested to support the `file` and `redis` cache drivers, but not `array`. - -## Usage - -Apply the `DanHarrin\LivewireRateLimiting\WithRateLimiting` trait to your Livewire component: - -```php -rateLimit(10); - } catch (TooManyRequestsException $exception) { - throw ValidationException::withMessages([ - 'email' => "Slow down! Please wait another {$exception->secondsUntilAvailable} seconds to log in.", - ]); - } - - // ... - } -} -``` - -## API Reference - -### Component Methods - -```php -use DanHarrin\LivewireRateLimiting\WithRateLimiting; - -/** - * Rate limit a Livewire method, `$maxAttempts` times every `$decaySeconds` seconds. - * - * @throws DanHarrin\LivewireRateLimiting\Exceptions\TooManyRequestsException - */ -$this->rateLimit( - $maxAttempts, // The number of times that the rate limit can be hit in the given decay period. - $decaySeconds = 60, // The length of the decay period in seconds. By default, this is a minute. - $method, // The name of the method that is being rate limited. By default, this is set to the method that `$this->rateLimit()` is called from. -); - -/** - * Hit a method's rate limiter without consequence. - */ -$this->hitRateLimiter( - $method, // The name of the method that is being rate limited. By default, this is set to the method that `$this->hitRateLimiter()` is called from. - $decaySeconds = 60, // The length of the decay period in seconds. By default, this is a minute. -); - -/** - * Clear a method's rate limiter. - */ -$this->clearRateLimiter( - $method, // The name of the method that is being rate limited. By default, this is set to the method that `$this->clearRateLimiter()` is called from. -); -``` - -### Exceptions - -```php -use DanHarrin\LivewireRateLimiting\Exceptions\TooManyRequestsException; - -try { - $this->rateLimit(10); -} catch (TooManyRequestsException $exception) { - $exception->component; // Class of the component that the rate limit was hit within. - $exception->ip; // IP of the user that has hit the rate limit. - $exception->method; // Name of the method that has hit the rate limit. - $exception->minutesUntilAvailable; // Number of minutes until the rate limit is lifted, rounded up. - $exception->secondsUntilAvailable; // Number of seconds until the rate limit is lifted. -} -``` - -## Need Help? - -🐞 If you spot a bug with this package, please [submit a detailed issue](https://github.com/danharrin/livewire-rate-limiting/issues/new), and wait for assistance. - -🤔 If you have a question or feature request, please [start a new discussion](https://github.com/danharrin/livewire-rate-limiting/discussions/new). - -🔐 If you discover a vulnerability within the package, please review our [security policy](https://github.com/danharrin/livewire-rate-limiting/blob/main/SECURITY.md). diff --git a/vendor/danharrin/livewire-rate-limiting/SECURITY.md b/vendor/danharrin/livewire-rate-limiting/SECURITY.md deleted file mode 100644 index 9954dc14..00000000 --- a/vendor/danharrin/livewire-rate-limiting/SECURITY.md +++ /dev/null @@ -1,11 +0,0 @@ -# Security Policy - -## Supported Versions - -| Version | Supported | -| ------- | ------------------ | -| 0.x | :white_check_mark: | - -## Reporting a Vulnerability - -If you discover a security vulnerability within the package, please email Dan Harrin via [dan@danharrin.com](mailto:dan@danharrin.com). All security vulnerabilities will be promptly addressed. diff --git a/vendor/danharrin/livewire-rate-limiting/composer.json b/vendor/danharrin/livewire-rate-limiting/composer.json deleted file mode 100644 index 3acfc328..00000000 --- a/vendor/danharrin/livewire-rate-limiting/composer.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "name": "danharrin/livewire-rate-limiting", - "description": "Apply rate limiters to Laravel Livewire actions.", - "license": "MIT", - "homepage": "https://github.com/danharrin/livewire-rate-limiting", - "support": { - "issues": "https://github.com/danharrin/livewire-rate-limiting/issues", - "source": "https://github.com/danharrin/livewire-rate-limiting" - }, - "authors": [ - { - "name": "Dan Harrin", - "email": "dan@danharrin.com" - } - ], - "require": { - "php": "^8.0", - "illuminate/support": "^9.0|^10.0|^11.0" - }, - "require-dev": { - "livewire/livewire": "^3.0", - "livewire/volt": "^1.3", - "orchestra/testbench": "^7.0|^8.0|^9.0", - "phpunit/phpunit": "^9.0|^10.0" - }, - "autoload": { - "psr-4": { - "DanHarrin\\LivewireRateLimiting\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "DanHarrin\\LivewireRateLimiting\\Tests\\": "tests" - } - }, - "config": { - "sort-packages": true - }, - "minimum-stability": "dev" -} diff --git a/vendor/danharrin/livewire-rate-limiting/phpunit.xml.dist b/vendor/danharrin/livewire-rate-limiting/phpunit.xml.dist deleted file mode 100644 index c569c7a7..00000000 --- a/vendor/danharrin/livewire-rate-limiting/phpunit.xml.dist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - src - - - - - tests - - - diff --git a/vendor/danharrin/livewire-rate-limiting/src/Exceptions/TooManyRequestsException.php b/vendor/danharrin/livewire-rate-limiting/src/Exceptions/TooManyRequestsException.php deleted file mode 100644 index a78a320c..00000000 --- a/vendor/danharrin/livewire-rate-limiting/src/Exceptions/TooManyRequestsException.php +++ /dev/null @@ -1,27 +0,0 @@ -minutesUntilAvailable = ceil($this->secondsUntilAvailable / 60); - - parent::__construct(sprintf( - 'Too many requests from [%s] to method [%s] on component: [%s]. Retry in %d seconds.', - $this->ip, - $this->method, - $this->component, - $this->secondsUntilAvailable, - )); - } -} diff --git a/vendor/danharrin/livewire-rate-limiting/src/WithRateLimiting.php b/vendor/danharrin/livewire-rate-limiting/src/WithRateLimiting.php deleted file mode 100644 index 400c3ff3..00000000 --- a/vendor/danharrin/livewire-rate-limiting/src/WithRateLimiting.php +++ /dev/null @@ -1,58 +0,0 @@ -getRateLimitKey($method, $component); - - RateLimiter::clear($key); - } - - protected function getRateLimitKey($method, $component) - { - $method ??= debug_backtrace(limit: 2)[1]['function']; - - $component ??= static::class; - - return sha1($component.'|'.$method.'|'.request()->ip()); - } - - protected function hitRateLimiter($method = null, $decaySeconds = 60, $component = null) - { - $method ??= debug_backtrace(limit: 2)[1]['function']; - - $component ??= static::class; - - $key = $this->getRateLimitKey($method, $component); - - RateLimiter::hit($key, $decaySeconds); - } - - protected function rateLimit($maxAttempts, $decaySeconds = 60, $method = null, $component = null) - { - $method ??= debug_backtrace(limit: 2)[1]['function']; - - $component ??= static::class; - - $key = $this->getRateLimitKey($method, $component); - - if (RateLimiter::tooManyAttempts($key, $maxAttempts)) { - $ip = request()->ip(); - $secondsUntilAvailable = RateLimiter::availableIn($key); - - throw new TooManyRequestsException($component, $method, $ip, $secondsUntilAvailable); - } - - $this->hitRateLimiter($method, $decaySeconds, $component); - } -} diff --git a/vendor/danharrin/livewire-rate-limiting/tests/RateLimitingTest.php b/vendor/danharrin/livewire-rate-limiting/tests/RateLimitingTest.php deleted file mode 100644 index cefe5248..00000000 --- a/vendor/danharrin/livewire-rate-limiting/tests/RateLimitingTest.php +++ /dev/null @@ -1,124 +0,0 @@ -call('limit') - ->assertSet('secondsUntilAvailable', 0) - ->call('limit') - ->assertSet('secondsUntilAvailable', 0) - ->call('limit') - ->assertSet('secondsUntilAvailable', 0) - ->call('limit') - ->assertNotSet('secondsUntilAvailable', 0); - - sleep(1); - - $component - ->call('limit') - ->assertSet('secondsUntilAvailable', 0); - } - - /** @test */ - public function can_hit_and_clear_rate_limiter() - { - Livewire::test(Component::class) - ->call('hit') - ->call('hit') - ->call('hit') - ->call('limit') - ->assertNotSet('secondsUntilAvailable', 0) - ->call('clear') - ->call('limit') - ->assertSet('secondsUntilAvailable', 0); - } - - /** @test */ - public function can_rate_limit_volt() - { - $this->mountVolt(); - $component = Volt::test('volt-component'); - - $component - ->call('limit') - ->assertSet('secondsUntilAvailable', 0) - ->call('limit') - ->assertSet('secondsUntilAvailable', 0) - ->call('limit') - ->assertSet('secondsUntilAvailable', 0) - ->call('limit') - ->assertNotSet('secondsUntilAvailable', 0); - - sleep(1); - - $component - ->call('limit') - ->assertSet('secondsUntilAvailable', 0); - } - - /** @test */ - public function can_hit_and_clear_rate_limiter_volt() - { - $this->mountVolt(); - Volt::test('volt-component') - ->call('hit') - ->call('hit') - ->call('hit') - ->call('limit') - ->assertNotSet('secondsUntilAvailable', 0) - ->call('clear') - ->call('limit') - ->assertSet('secondsUntilAvailable', 0); - } - - protected function mountVolt() - { - Volt::mount([ - __DIR__ . '/views', - ]); - } -} - -class Component extends \Livewire\Component -{ - use \DanHarrin\LivewireRateLimiting\WithRateLimiting; - - public $secondsUntilAvailable; - - public function clear() - { - $this->clearRateLimiter('limit'); - } - - public function hit() - { - $this->hitRateLimiter('limit', 1); - } - - public function limit() - { - try { - $this->rateLimit(3, 1); - } catch (TooManyRequestsException $exception) { - return $this->secondsUntilAvailable = $exception->secondsUntilAvailable; - } - - $this->secondsUntilAvailable = 0; - } - - public function render() - { - return view('component'); - } -} diff --git a/vendor/danharrin/livewire-rate-limiting/tests/TestCase.php b/vendor/danharrin/livewire-rate-limiting/tests/TestCase.php deleted file mode 100644 index 244f04dc..00000000 --- a/vendor/danharrin/livewire-rate-limiting/tests/TestCase.php +++ /dev/null @@ -1,28 +0,0 @@ -set('view.paths', [ - __DIR__ . '/views', - resource_path('views'), - ]); - - $app['config']->set('app.key', 'base64:Hupx3yAySikrM2/edkZQNQHslgDWYfiBfCuSThJ5SK8='); - } - - protected function getPackageProviders($app) - { - return [ - LivewireServiceProvider::class, - VoltServiceProvider::class, - ]; - } -} diff --git a/vendor/danharrin/livewire-rate-limiting/tests/views/component.blade.php b/vendor/danharrin/livewire-rate-limiting/tests/views/component.blade.php deleted file mode 100644 index 281c6866..00000000 --- a/vendor/danharrin/livewire-rate-limiting/tests/views/component.blade.php +++ /dev/null @@ -1 +0,0 @@ -
\ No newline at end of file diff --git a/vendor/danharrin/livewire-rate-limiting/tests/views/volt-component.blade.php b/vendor/danharrin/livewire-rate-limiting/tests/views/volt-component.blade.php deleted file mode 100644 index 867a06de..00000000 --- a/vendor/danharrin/livewire-rate-limiting/tests/views/volt-component.blade.php +++ /dev/null @@ -1,36 +0,0 @@ -clearRateLimiter('limit', component: 'VoltComponent'); - } - - public function hit() - { - $this->hitRateLimiter('limit', 1, component: 'VoltComponent'); - } - - public function limit() - { - try { - $this->rateLimit(3, 1, component: 'VoltComponent'); - } catch (TooManyRequestsException $exception) { - return $this->secondsUntilAvailable = $exception->secondsUntilAvailable; - } - - $this->secondsUntilAvailable = 0; - } - -}; ?> - -
- // -
diff --git a/vendor/dflydev/dot-access-data/CHANGELOG.md b/vendor/dflydev/dot-access-data/CHANGELOG.md deleted file mode 100644 index 8e92c238..00000000 --- a/vendor/dflydev/dot-access-data/CHANGELOG.md +++ /dev/null @@ -1,67 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [Unreleased] - -## [3.0.2] - 2022-10-27 - -### Fixed - - - Added missing return types to docblocks (#44, #45) - -## [3.0.1] - 2021-08-13 - -### Added - - - Adds ReturnTypeWillChange to suppress PHP 8.1 warnings (#40) - -## [3.0.0] - 2021-01-01 - -### Added - - Added support for both `.` and `/`-delimited key paths (#24) - - Added parameter and return types to everything; enabled strict type checks (#18) - - Added new exception classes to better identify certain types of errors (#20) - - `Data` now implements `ArrayAccess` (#17) - - Added ability to merge non-associative array values (#31, #32) - -### Changed - - All thrown exceptions are now instances or subclasses of `DataException` (#20) - - Calling `get()` on a missing key path without providing a default will throw a `MissingPathException` instead of returning `null` (#29) - - Bumped supported PHP versions to 7.1 - 8.x (#18) - -### Fixed - - Fixed incorrect merging of array values into string values (#32) - - Fixed `get()` method behaving as if keys with `null` values didn't exist - -## [2.0.0] - 2017-12-21 - -### Changed - - Bumped supported PHP versions to 7.0 - 7.4 (#12) - - Switched to PSR-4 autoloading - -## [1.1.0] - 2017-01-20 - -### Added - - Added new `has()` method to check for the existence of the given key (#4, #7) - -## [1.0.1] - 2015-08-12 - -### Added - - Added new optional `$default` parameter to the `get()` method (#2) - -## [1.0.0] - 2012-07-17 - -**Initial release!** - -[Unreleased]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.2...main -[3.0.2]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.1...v3.0.2 -[3.0.1]: https://github.com/dflydev/dflydev-dot-access-data/compare/v3.0.0...v3.0.1 -[3.0.0]: https://github.com/dflydev/dflydev-dot-access-data/compare/v2.0.0...v3.0.0 -[2.0.0]: https://github.com/dflydev/dflydev-dot-access-data/compare/v1.1.0...v2.0.0 -[1.1.0]: https://github.com/dflydev/dflydev-dot-access-data/compare/v1.0.1...v1.1.0 -[1.0.1]: https://github.com/dflydev/dflydev-dot-access-data/compare/v1.0.0...v1.0.1 -[1.0.0]: https://github.com/dflydev/dflydev-dot-access-data/releases/tag/v1.0.0 diff --git a/vendor/dflydev/dot-access-data/LICENSE b/vendor/dflydev/dot-access-data/LICENSE deleted file mode 100644 index b6880d43..00000000 --- a/vendor/dflydev/dot-access-data/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 Dragonfly Development Inc. - -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/vendor/dflydev/dot-access-data/README.md b/vendor/dflydev/dot-access-data/README.md deleted file mode 100644 index 775fbdf7..00000000 --- a/vendor/dflydev/dot-access-data/README.md +++ /dev/null @@ -1,158 +0,0 @@ -Dot Access Data -=============== - -[![Latest Version](https://img.shields.io/packagist/v/dflydev/dot-access-data.svg?style=flat-square)](https://packagist.org/packages/dflydev/dot-access-data) -[![Total Downloads](https://img.shields.io/packagist/dt/dflydev/dot-access-data.svg?style=flat-square)](https://packagist.org/packages/dflydev/dot-access-data) -[![Software License](https://img.shields.io/badge/License-MIT-brightgreen.svg?style=flat-square)](LICENSE) -[![Build Status](https://img.shields.io/github/workflow/status/dflydev/dflydev-dot-access-data/Tests/main.svg?style=flat-square)](https://github.com/dflydev/dflydev-dot-access-data/actions?query=workflow%3ATests+branch%3Amain) -[![Coverage Status](https://img.shields.io/scrutinizer/coverage/g/dflydev/dflydev-dot-access-data.svg?style=flat-square)](https://scrutinizer-ci.com/g/dflydev/dflydev-dot-access-data/code-structure/) -[![Quality Score](https://img.shields.io/scrutinizer/g/dflydev/dflydev-dot-access-data.svg?style=flat-square)](https://scrutinizer-ci.com/g/dflydev/dflydev-dot-access-data) - -Given a deep data structure, access data by dot notation. - - -Requirements ------------- - - * PHP (7.1+) - -> For PHP (5.3+) please refer to version `1.0`. - - -Usage ------ - -Abstract example: - -```php -use Dflydev\DotAccessData\Data; - -$data = new Data; - -$data->set('a.b.c', 'C'); -$data->set('a.b.d', 'D1'); -$data->append('a.b.d', 'D2'); -$data->set('a.b.e', ['E0', 'E1', 'E2']); - -// C -$data->get('a.b.c'); - -// ['D1', 'D2'] -$data->get('a.b.d'); - -// ['E0', 'E1', 'E2'] -$data->get('a.b.e'); - -// true -$data->has('a.b.c'); - -// false -$data->has('a.b.d.j'); - - -// 'some-default-value' -$data->get('some.path.that.does.not.exist', 'some-default-value'); - -// throws a MissingPathException because no default was given -$data->get('some.path.that.does.not.exist'); -``` - -A more concrete example: - -```php -use Dflydev\DotAccessData\Data; - -$data = new Data([ - 'hosts' => [ - 'hewey' => [ - 'username' => 'hman', - 'password' => 'HPASS', - 'roles' => ['web'], - ], - 'dewey' => [ - 'username' => 'dman', - 'password' => 'D---S', - 'roles' => ['web', 'db'], - 'nick' => 'dewey dman', - ], - 'lewey' => [ - 'username' => 'lman', - 'password' => 'LP@$$', - 'roles' => ['db'], - ], - ], -]); - -// hman -$username = $data->get('hosts.hewey.username'); -// HPASS -$password = $data->get('hosts.hewey.password'); -// ['web'] -$roles = $data->get('hosts.hewey.roles'); -// dewey dman -$nick = $data->get('hosts.dewey.nick'); -// Unknown -$nick = $data->get('hosts.lewey.nick', 'Unknown'); - -// DataInterface instance -$dewey = $data->getData('hosts.dewey'); -// dman -$username = $dewey->get('username'); -// D---S -$password = $dewey->get('password'); -// ['web', 'db'] -$roles = $dewey->get('roles'); - -// No more lewey -$data->remove('hosts.lewey'); - -// Add DB to hewey's roles -$data->append('hosts.hewey.roles', 'db'); - -$data->set('hosts.april', [ - 'username' => 'aman', - 'password' => '@---S', - 'roles' => ['web'], -]); - -// Check if a key exists (true to this case) -$hasKey = $data->has('hosts.dewey.username'); -``` - -`Data` may be used as an array, since it implements `ArrayAccess` interface: - -```php -// Get -$data->get('name') === $data['name']; // true - -$data['name'] = 'Dewey'; -// is equivalent to -$data->set($name, 'Dewey'); - -isset($data['name']) === $data->has('name'); - -// Remove key -unset($data['name']); -``` - -`/` can also be used as a path delimiter: - -```php -$data->set('a/b/c', 'd'); -echo $data->get('a/b/c'); // "d" - -$data->get('a/b/c') === $data->get('a.b.c'); // true -``` - -License -------- - -This library is licensed under the MIT License - see the LICENSE file -for details. - - -Community ---------- - -If you have questions or want to help out, join us in the -[#dflydev](irc://irc.freenode.net/#dflydev) channel on irc.freenode.net. diff --git a/vendor/dflydev/dot-access-data/composer.json b/vendor/dflydev/dot-access-data/composer.json deleted file mode 100644 index 44dc5ede..00000000 --- a/vendor/dflydev/dot-access-data/composer.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "dflydev/dot-access-data", - "type": "library", - "description": "Given a deep data structure, access data by dot notation.", - "homepage": "https://github.com/dflydev/dflydev-dot-access-data", - "keywords": ["dot", "access", "data", "notation"], - "license": "MIT", - "authors": [ - { - "name": "Dragonfly Development Inc.", - "email": "info@dflydev.com", - "homepage": "http://dflydev.com" - }, - { - "name": "Beau Simensen", - "email": "beau@dflydev.com", - "homepage": "http://beausimensen.com" - }, - { - "name": "Carlos Frutos", - "email": "carlos@kiwing.it", - "homepage": "https://github.com/cfrutos" - }, - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com" - } - ], - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.42", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", - "scrutinizer/ocular": "1.6.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.0.0" - }, - "autoload": { - "psr-4": { - "Dflydev\\DotAccessData\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Dflydev\\DotAccessData\\": "tests/" - } - }, - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "scripts": { - "phpcs": "phpcs", - "phpstan": "phpstan analyse", - "phpunit": "phpunit --no-coverage", - "psalm": "psalm", - "test": [ - "@phpcs", - "@phpstan", - "@psalm", - "@phpunit" - ] - } -} diff --git a/vendor/dflydev/dot-access-data/src/Data.php b/vendor/dflydev/dot-access-data/src/Data.php deleted file mode 100644 index 3409b8e5..00000000 --- a/vendor/dflydev/dot-access-data/src/Data.php +++ /dev/null @@ -1,286 +0,0 @@ - - */ -class Data implements DataInterface, ArrayAccess -{ - private const DELIMITERS = ['.', '/']; - - /** - * Internal representation of data data - * - * @var array - */ - protected $data; - - /** - * Constructor - * - * @param array $data - */ - public function __construct(array $data = []) - { - $this->data = $data; - } - - /** - * {@inheritdoc} - */ - public function append(string $key, $value = null): void - { - $currentValue =& $this->data; - $keyPath = self::keyToPathArray($key); - - $endKey = array_pop($keyPath); - foreach ($keyPath as $currentKey) { - if (! isset($currentValue[$currentKey])) { - $currentValue[$currentKey] = []; - } - $currentValue =& $currentValue[$currentKey]; - } - - if (!isset($currentValue[$endKey])) { - $currentValue[$endKey] = []; - } - - if (!is_array($currentValue[$endKey])) { - // Promote this key to an array. - // TODO: Is this really what we want to do? - $currentValue[$endKey] = [$currentValue[$endKey]]; - } - - $currentValue[$endKey][] = $value; - } - - /** - * {@inheritdoc} - */ - public function set(string $key, $value = null): void - { - $currentValue =& $this->data; - $keyPath = self::keyToPathArray($key); - - $endKey = array_pop($keyPath); - foreach ($keyPath as $currentKey) { - if (!isset($currentValue[$currentKey])) { - $currentValue[$currentKey] = []; - } - if (!is_array($currentValue[$currentKey])) { - throw new DataException(sprintf('Key path "%s" within "%s" cannot be indexed into (is not an array)', $currentKey, self::formatPath($key))); - } - $currentValue =& $currentValue[$currentKey]; - } - $currentValue[$endKey] = $value; - } - - /** - * {@inheritdoc} - */ - public function remove(string $key): void - { - $currentValue =& $this->data; - $keyPath = self::keyToPathArray($key); - - $endKey = array_pop($keyPath); - foreach ($keyPath as $currentKey) { - if (!isset($currentValue[$currentKey])) { - return; - } - $currentValue =& $currentValue[$currentKey]; - } - unset($currentValue[$endKey]); - } - - /** - * {@inheritdoc} - * - * @psalm-mutation-free - */ - public function get(string $key, $default = null) - { - /** @psalm-suppress ImpureFunctionCall */ - $hasDefault = \func_num_args() > 1; - - $currentValue = $this->data; - $keyPath = self::keyToPathArray($key); - - foreach ($keyPath as $currentKey) { - if (!is_array($currentValue) || !array_key_exists($currentKey, $currentValue)) { - if ($hasDefault) { - return $default; - } - - throw new MissingPathException($key, sprintf('No data exists at the given path: "%s"', self::formatPath($keyPath))); - } - - $currentValue = $currentValue[$currentKey]; - } - - return $currentValue === null ? $default : $currentValue; - } - - /** - * {@inheritdoc} - * - * @psalm-mutation-free - */ - public function has(string $key): bool - { - $currentValue = $this->data; - - foreach (self::keyToPathArray($key) as $currentKey) { - if ( - !is_array($currentValue) || - !array_key_exists($currentKey, $currentValue) - ) { - return false; - } - $currentValue = $currentValue[$currentKey]; - } - - return true; - } - - /** - * {@inheritdoc} - * - * @psalm-mutation-free - */ - public function getData(string $key): DataInterface - { - $value = $this->get($key); - if (is_array($value) && Util::isAssoc($value)) { - return new Data($value); - } - - throw new DataException(sprintf('Value at "%s" could not be represented as a DataInterface', self::formatPath($key))); - } - - /** - * {@inheritdoc} - */ - public function import(array $data, int $mode = self::REPLACE): void - { - $this->data = Util::mergeAssocArray($this->data, $data, $mode); - } - - /** - * {@inheritdoc} - */ - public function importData(DataInterface $data, int $mode = self::REPLACE): void - { - $this->import($data->export(), $mode); - } - - /** - * {@inheritdoc} - * - * @psalm-mutation-free - */ - public function export(): array - { - return $this->data; - } - - /** - * {@inheritdoc} - * - * @return bool - */ - #[\ReturnTypeWillChange] - public function offsetExists($key) - { - return $this->has($key); - } - - /** - * {@inheritdoc} - * - * @return mixed - */ - #[\ReturnTypeWillChange] - public function offsetGet($key) - { - return $this->get($key, null); - } - - /** - * {@inheritdoc} - * - * @param string $key - * @param mixed $value - * - * @return void - */ - #[\ReturnTypeWillChange] - public function offsetSet($key, $value) - { - $this->set($key, $value); - } - - /** - * {@inheritdoc} - * - * @return void - */ - #[\ReturnTypeWillChange] - public function offsetUnset($key) - { - $this->remove($key); - } - - /** - * @param string $path - * - * @return string[] - * - * @psalm-return non-empty-list - * - * @psalm-pure - */ - protected static function keyToPathArray(string $path): array - { - if (\strlen($path) === 0) { - throw new InvalidPathException('Path cannot be an empty string'); - } - - $path = \str_replace(self::DELIMITERS, '.', $path); - - return \explode('.', $path); - } - - /** - * @param string|string[] $path - * - * @return string - * - * @psalm-pure - */ - protected static function formatPath($path): string - { - if (is_string($path)) { - $path = self::keyToPathArray($path); - } - - return implode(' » ', $path); - } -} diff --git a/vendor/dflydev/dot-access-data/src/DataInterface.php b/vendor/dflydev/dot-access-data/src/DataInterface.php deleted file mode 100644 index 5909a8c6..00000000 --- a/vendor/dflydev/dot-access-data/src/DataInterface.php +++ /dev/null @@ -1,131 +0,0 @@ - $data - * @param self::PRESERVE|self::REPLACE|self::MERGE $mode - */ - public function import(array $data, int $mode = self::REPLACE): void; - - /** - * Import data from an external data into existing data - * - * @param DataInterface $data - * @param self::PRESERVE|self::REPLACE|self::MERGE $mode - */ - public function importData(DataInterface $data, int $mode = self::REPLACE): void; - - /** - * Export data as raw data - * - * @return array - * - * @psalm-mutation-free - */ - public function export(): array; -} diff --git a/vendor/dflydev/dot-access-data/src/Exception/DataException.php b/vendor/dflydev/dot-access-data/src/Exception/DataException.php deleted file mode 100644 index 2faf9f54..00000000 --- a/vendor/dflydev/dot-access-data/src/Exception/DataException.php +++ /dev/null @@ -1,21 +0,0 @@ -path = $path; - - parent::__construct($message, $code, $previous); - } - - public function getPath(): string - { - return $this->path; - } -} diff --git a/vendor/dflydev/dot-access-data/src/Util.php b/vendor/dflydev/dot-access-data/src/Util.php deleted file mode 100644 index 5634c511..00000000 --- a/vendor/dflydev/dot-access-data/src/Util.php +++ /dev/null @@ -1,78 +0,0 @@ - $arr - * - * @return bool - * - * @psalm-pure - */ - public static function isAssoc(array $arr): bool - { - return !count($arr) || count(array_filter(array_keys($arr), 'is_string')) == count($arr); - } - - /** - * Merge contents from one associtative array to another - * - * @param mixed $to - * @param mixed $from - * @param DataInterface::PRESERVE|DataInterface::REPLACE|DataInterface::MERGE $mode - * - * @return mixed - * - * @psalm-pure - */ - public static function mergeAssocArray($to, $from, int $mode = DataInterface::REPLACE) - { - if ($mode === DataInterface::MERGE && self::isList($to) && self::isList($from)) { - return array_merge($to, $from); - } - - if (is_array($from) && is_array($to)) { - foreach ($from as $k => $v) { - if (!isset($to[$k])) { - $to[$k] = $v; - } else { - $to[$k] = self::mergeAssocArray($to[$k], $v, $mode); - } - } - - return $to; - } - - return $mode === DataInterface::PRESERVE ? $to : $from; - } - - /** - * @param mixed $value - * - * @return bool - * - * @psalm-pure - */ - private static function isList($value): bool - { - return is_array($value) && array_values($value) === $value; - } -} diff --git a/vendor/doctrine/cache/LICENSE b/vendor/doctrine/cache/LICENSE deleted file mode 100644 index 8c38cc1b..00000000 --- a/vendor/doctrine/cache/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2006-2015 Doctrine Project - -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/vendor/doctrine/cache/README.md b/vendor/doctrine/cache/README.md deleted file mode 100644 index a13196d1..00000000 --- a/vendor/doctrine/cache/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Doctrine Cache - -[![Build Status](https://github.com/doctrine/cache/workflows/Continuous%20Integration/badge.svg)](https://github.com/doctrine/cache/actions) -[![Code Coverage](https://codecov.io/gh/doctrine/cache/branch/1.10.x/graph/badge.svg)](https://codecov.io/gh/doctrine/cache/branch/1.10.x) - -[![Latest Stable Version](https://img.shields.io/packagist/v/doctrine/cache.svg?style=flat-square)](https://packagist.org/packages/doctrine/cache) -[![Total Downloads](https://img.shields.io/packagist/dt/doctrine/cache.svg?style=flat-square)](https://packagist.org/packages/doctrine/cache) - -Cache component extracted from the Doctrine Common project. [Documentation](https://www.doctrine-project.org/projects/doctrine-cache/en/current/index.html) - -This library is deprecated and will no longer receive bug fixes from the -Doctrine Project. Please use a different cache library, preferably PSR-6 or -PSR-16 instead. diff --git a/vendor/doctrine/cache/UPGRADE-1.11.md b/vendor/doctrine/cache/UPGRADE-1.11.md deleted file mode 100644 index 6c5ddb55..00000000 --- a/vendor/doctrine/cache/UPGRADE-1.11.md +++ /dev/null @@ -1,27 +0,0 @@ -# Upgrade to 1.11 - -doctrine/cache will no longer be maintained and all cache implementations have -been marked as deprecated. These implementations will be removed in 2.0, which -will only contain interfaces to provide a lightweight package for backward -compatibility. - -There are two new classes to use in the `Doctrine\Common\Cache\Psr6` namespace: -* The `CacheAdapter` class allows using any Doctrine Cache as PSR-6 cache. This - is useful to provide a forward compatibility layer in libraries that accept - Doctrine cache implementations and switch to PSR-6. -* The `DoctrineProvider` class allows using any PSR-6 cache as Doctrine cache. - This implementation is designed for libraries that leak the cache and want to - switch to allowing PSR-6 implementations. This class is design to be used - during the transition phase of sunsetting doctrine/cache support. - -A full example to setup a filesystem based PSR-6 cache with symfony/cache -using the `DoctrineProvider` to convert back to Doctrine's `Cache` interface: - -```php -use Doctrine\Common\Cache\Psr6\DoctrineProvider; -use Symfony\Component\Cache\Adapter\FilesystemAdapter; - -$cachePool = new FilesystemAdapter(); -$cache = DoctrineProvider::wrap($cachePool); -// $cache instanceof \Doctrine\Common\Cache\Cache -``` diff --git a/vendor/doctrine/cache/UPGRADE-1.4.md b/vendor/doctrine/cache/UPGRADE-1.4.md deleted file mode 100644 index e1f8a503..00000000 --- a/vendor/doctrine/cache/UPGRADE-1.4.md +++ /dev/null @@ -1,16 +0,0 @@ -# Upgrade to 1.4 - -## Minor BC Break: `Doctrine\Common\Cache\FileCache#$extension` is now `private`. - -If you need to override the value of `Doctrine\Common\Cache\FileCache#$extension`, then use the -second parameter of `Doctrine\Common\Cache\FileCache#__construct()` instead of overriding -the property in your own implementation. - -## Minor BC Break: file based caches paths changed - -`Doctrine\Common\Cache\FileCache`, `Doctrine\Common\Cache\PhpFileCache` and -`Doctrine\Common\Cache\FilesystemCache` are using a different cache paths structure. - -If you rely on warmed up caches for deployments, consider that caches generated -with `doctrine/cache` `<1.4` are not compatible with the new directory structure, -and will be ignored. diff --git a/vendor/doctrine/cache/composer.json b/vendor/doctrine/cache/composer.json deleted file mode 100644 index 3c8ca971..00000000 --- a/vendor/doctrine/cache/composer.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "doctrine/cache", - "type": "library", - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "keywords": [ - "php", - "cache", - "caching", - "abstraction", - "redis", - "memcached", - "couchdb", - "xcache", - "apcu" - ], - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "license": "MIT", - "authors": [ - {"name": "Guilherme Blanco", "email": "guilhermeblanco@gmail.com"}, - {"name": "Roman Borschel", "email": "roman@code-factory.org"}, - {"name": "Benjamin Eberlei", "email": "kontakt@beberlei.de"}, - {"name": "Jonathan Wage", "email": "jonwage@gmail.com"}, - {"name": "Johannes Schmitt", "email": "schmittjoh@gmail.com"} - ], - "require": { - "php": "~7.1 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "doctrine/coding-standard": "^9", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "cache/integration-tests": "dev-master", - "symfony/cache": "^4.4 || ^5.4 || ^6", - "symfony/var-exporter": "^4.4 || ^5.4 || ^6" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "autoload": { - "psr-4": { "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" } - }, - "autoload-dev": { - "psr-4": { "Doctrine\\Tests\\": "tests/Doctrine/Tests" } - }, - "config": { - "allow-plugins": { - "dealerdirect/phpcodesniffer-composer-installer": true - } - } -} diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php deleted file mode 100644 index 4cfab6c0..00000000 --- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Cache.php +++ /dev/null @@ -1,90 +0,0 @@ -hits - * Number of keys that have been requested and found present. - * - * - misses - * Number of items that have been requested and not found. - * - * - uptime - * Time that the server is running. - * - * - memory_usage - * Memory used by this server to store items. - * - * - memory_available - * Memory allowed to use for storage. - * - * @return mixed[]|null An associative array with server's statistics if available, NULL otherwise. - */ - public function getStats(); -} diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php deleted file mode 100644 index 180482a7..00000000 --- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/CacheProvider.php +++ /dev/null @@ -1,325 +0,0 @@ -namespace = (string) $namespace; - $this->namespaceVersion = null; - } - - /** - * Retrieves the namespace that prefixes all cache ids. - * - * @return string - */ - public function getNamespace() - { - return $this->namespace; - } - - /** - * {@inheritdoc} - */ - public function fetch($id) - { - return $this->doFetch($this->getNamespacedId($id)); - } - - /** - * {@inheritdoc} - */ - public function fetchMultiple(array $keys) - { - if (empty($keys)) { - return []; - } - - // note: the array_combine() is in place to keep an association between our $keys and the $namespacedKeys - $namespacedKeys = array_combine($keys, array_map([$this, 'getNamespacedId'], $keys)); - $items = $this->doFetchMultiple($namespacedKeys); - $foundItems = []; - - // no internal array function supports this sort of mapping: needs to be iterative - // this filters and combines keys in one pass - foreach ($namespacedKeys as $requestedKey => $namespacedKey) { - if (! isset($items[$namespacedKey]) && ! array_key_exists($namespacedKey, $items)) { - continue; - } - - $foundItems[$requestedKey] = $items[$namespacedKey]; - } - - return $foundItems; - } - - /** - * {@inheritdoc} - */ - public function saveMultiple(array $keysAndValues, $lifetime = 0) - { - $namespacedKeysAndValues = []; - foreach ($keysAndValues as $key => $value) { - $namespacedKeysAndValues[$this->getNamespacedId($key)] = $value; - } - - return $this->doSaveMultiple($namespacedKeysAndValues, $lifetime); - } - - /** - * {@inheritdoc} - */ - public function contains($id) - { - return $this->doContains($this->getNamespacedId($id)); - } - - /** - * {@inheritdoc} - */ - public function save($id, $data, $lifeTime = 0) - { - return $this->doSave($this->getNamespacedId($id), $data, $lifeTime); - } - - /** - * {@inheritdoc} - */ - public function deleteMultiple(array $keys) - { - return $this->doDeleteMultiple(array_map([$this, 'getNamespacedId'], $keys)); - } - - /** - * {@inheritdoc} - */ - public function delete($id) - { - return $this->doDelete($this->getNamespacedId($id)); - } - - /** - * {@inheritdoc} - */ - public function getStats() - { - return $this->doGetStats(); - } - - /** - * {@inheritDoc} - */ - public function flushAll() - { - return $this->doFlush(); - } - - /** - * {@inheritDoc} - */ - public function deleteAll() - { - $namespaceCacheKey = $this->getNamespaceCacheKey(); - $namespaceVersion = $this->getNamespaceVersion() + 1; - - if ($this->doSave($namespaceCacheKey, $namespaceVersion)) { - $this->namespaceVersion = $namespaceVersion; - - return true; - } - - return false; - } - - /** - * Prefixes the passed id with the configured namespace value. - * - * @param string $id The id to namespace. - * - * @return string The namespaced id. - */ - private function getNamespacedId(string $id): string - { - $namespaceVersion = $this->getNamespaceVersion(); - - return sprintf('%s[%s][%s]', $this->namespace, $id, $namespaceVersion); - } - - /** - * Returns the namespace cache key. - */ - private function getNamespaceCacheKey(): string - { - return sprintf(self::DOCTRINE_NAMESPACE_CACHEKEY, $this->namespace); - } - - /** - * Returns the namespace version. - */ - private function getNamespaceVersion(): int - { - if ($this->namespaceVersion !== null) { - return $this->namespaceVersion; - } - - $namespaceCacheKey = $this->getNamespaceCacheKey(); - $this->namespaceVersion = (int) $this->doFetch($namespaceCacheKey) ?: 1; - - return $this->namespaceVersion; - } - - /** - * Default implementation of doFetchMultiple. Each driver that supports multi-get should owerwrite it. - * - * @param string[] $keys Array of keys to retrieve from cache - * - * @return mixed[] Array of values retrieved for the given keys. - */ - protected function doFetchMultiple(array $keys) - { - $returnValues = []; - - foreach ($keys as $key) { - $item = $this->doFetch($key); - if ($item === false && ! $this->doContains($key)) { - continue; - } - - $returnValues[$key] = $item; - } - - return $returnValues; - } - - /** - * Fetches an entry from the cache. - * - * @param string $id The id of the cache entry to fetch. - * - * @return mixed|false The cached data or FALSE, if no cache entry exists for the given id. - */ - abstract protected function doFetch($id); - - /** - * Tests if an entry exists in the cache. - * - * @param string $id The cache id of the entry to check for. - * - * @return bool TRUE if a cache entry exists for the given cache id, FALSE otherwise. - */ - abstract protected function doContains($id); - - /** - * Default implementation of doSaveMultiple. Each driver that supports multi-put should override it. - * - * @param mixed[] $keysAndValues Array of keys and values to save in cache - * @param int $lifetime The lifetime. If != 0, sets a specific lifetime for these - * cache entries (0 => infinite lifeTime). - * - * @return bool TRUE if the operation was successful, FALSE if it wasn't. - */ - protected function doSaveMultiple(array $keysAndValues, $lifetime = 0) - { - $success = true; - - foreach ($keysAndValues as $key => $value) { - if ($this->doSave($key, $value, $lifetime)) { - continue; - } - - $success = false; - } - - return $success; - } - - /** - * Puts data into the cache. - * - * @param string $id The cache id. - * @param string $data The cache entry/data. - * @param int $lifeTime The lifetime. If != 0, sets a specific lifetime for this - * cache entry (0 => infinite lifeTime). - * - * @return bool TRUE if the entry was successfully stored in the cache, FALSE otherwise. - */ - abstract protected function doSave($id, $data, $lifeTime = 0); - - /** - * Default implementation of doDeleteMultiple. Each driver that supports multi-delete should override it. - * - * @param string[] $keys Array of keys to delete from cache - * - * @return bool TRUE if the operation was successful, FALSE if it wasn't - */ - protected function doDeleteMultiple(array $keys) - { - $success = true; - - foreach ($keys as $key) { - if ($this->doDelete($key)) { - continue; - } - - $success = false; - } - - return $success; - } - - /** - * Deletes a cache entry. - * - * @param string $id The cache id. - * - * @return bool TRUE if the cache entry was successfully deleted, FALSE otherwise. - */ - abstract protected function doDelete($id); - - /** - * Flushes all cache entries. - * - * @return bool TRUE if the cache entries were successfully flushed, FALSE otherwise. - */ - abstract protected function doFlush(); - - /** - * Retrieves cached information from the data store. - * - * @return mixed[]|null An associative array with server's statistics if available, NULL otherwise. - */ - abstract protected function doGetStats(); -} diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php deleted file mode 100644 index b94618e4..00000000 --- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/ClearableCache.php +++ /dev/null @@ -1,21 +0,0 @@ - infinite lifeTime). - * - * @return bool TRUE if the operation was successful, FALSE if it wasn't. - */ - public function saveMultiple(array $keysAndValues, $lifetime = 0); -} diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheAdapter.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheAdapter.php deleted file mode 100644 index d3693b7c..00000000 --- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheAdapter.php +++ /dev/null @@ -1,340 +0,0 @@ - */ - private $deferredItems = []; - - public static function wrap(Cache $cache): CacheItemPoolInterface - { - if ($cache instanceof DoctrineProvider && ! $cache->getNamespace()) { - return $cache->getPool(); - } - - if ($cache instanceof SymfonyDoctrineProvider && ! $cache->getNamespace()) { - $getPool = function () { - // phpcs:ignore Squiz.Scope.StaticThisUsage.Found - return $this->pool; - }; - - return $getPool->bindTo($cache, SymfonyDoctrineProvider::class)(); - } - - return new self($cache); - } - - private function __construct(Cache $cache) - { - $this->cache = $cache; - } - - /** @internal */ - public function getCache(): Cache - { - return $this->cache; - } - - /** - * {@inheritDoc} - */ - public function getItem($key): CacheItemInterface - { - assert(self::validKey($key)); - - if (isset($this->deferredItems[$key])) { - $this->commit(); - } - - $value = $this->cache->fetch($key); - - if (PHP_VERSION_ID >= 80000) { - if ($value !== false) { - return new TypedCacheItem($key, $value, true); - } - - return new TypedCacheItem($key, null, false); - } - - if ($value !== false) { - return new CacheItem($key, $value, true); - } - - return new CacheItem($key, null, false); - } - - /** - * {@inheritDoc} - */ - public function getItems(array $keys = []): array - { - if ($this->deferredItems) { - $this->commit(); - } - - assert(self::validKeys($keys)); - - $values = $this->doFetchMultiple($keys); - $items = []; - - if (PHP_VERSION_ID >= 80000) { - foreach ($keys as $key) { - if (array_key_exists($key, $values)) { - $items[$key] = new TypedCacheItem($key, $values[$key], true); - } else { - $items[$key] = new TypedCacheItem($key, null, false); - } - } - - return $items; - } - - foreach ($keys as $key) { - if (array_key_exists($key, $values)) { - $items[$key] = new CacheItem($key, $values[$key], true); - } else { - $items[$key] = new CacheItem($key, null, false); - } - } - - return $items; - } - - /** - * {@inheritDoc} - */ - public function hasItem($key): bool - { - assert(self::validKey($key)); - - if (isset($this->deferredItems[$key])) { - $this->commit(); - } - - return $this->cache->contains($key); - } - - public function clear(): bool - { - $this->deferredItems = []; - - if (! $this->cache instanceof ClearableCache) { - return false; - } - - return $this->cache->deleteAll(); - } - - /** - * {@inheritDoc} - */ - public function deleteItem($key): bool - { - assert(self::validKey($key)); - unset($this->deferredItems[$key]); - - return $this->cache->delete($key); - } - - /** - * {@inheritDoc} - */ - public function deleteItems(array $keys): bool - { - foreach ($keys as $key) { - assert(self::validKey($key)); - unset($this->deferredItems[$key]); - } - - return $this->doDeleteMultiple($keys); - } - - public function save(CacheItemInterface $item): bool - { - return $this->saveDeferred($item) && $this->commit(); - } - - public function saveDeferred(CacheItemInterface $item): bool - { - if (! $item instanceof CacheItem && ! $item instanceof TypedCacheItem) { - return false; - } - - $this->deferredItems[$item->getKey()] = $item; - - return true; - } - - public function commit(): bool - { - if (! $this->deferredItems) { - return true; - } - - $now = microtime(true); - $itemsCount = 0; - $byLifetime = []; - $expiredKeys = []; - - foreach ($this->deferredItems as $key => $item) { - $lifetime = ($item->getExpiry() ?? $now) - $now; - - if ($lifetime < 0) { - $expiredKeys[] = $key; - - continue; - } - - ++$itemsCount; - $byLifetime[(int) $lifetime][$key] = $item->get(); - } - - $this->deferredItems = []; - - switch (count($expiredKeys)) { - case 0: - break; - case 1: - $this->cache->delete(current($expiredKeys)); - break; - default: - $this->doDeleteMultiple($expiredKeys); - break; - } - - if ($itemsCount === 1) { - return $this->cache->save($key, $item->get(), (int) $lifetime); - } - - $success = true; - foreach ($byLifetime as $lifetime => $values) { - $success = $this->doSaveMultiple($values, $lifetime) && $success; - } - - return $success; - } - - public function __destruct() - { - $this->commit(); - } - - /** - * @param mixed $key - */ - private static function validKey($key): bool - { - if (! is_string($key)) { - throw new InvalidArgument(sprintf('Cache key must be string, "%s" given.', is_object($key) ? get_class($key) : gettype($key))); - } - - if ($key === '') { - throw new InvalidArgument('Cache key length must be greater than zero.'); - } - - if (strpbrk($key, self::RESERVED_CHARACTERS) !== false) { - throw new InvalidArgument(sprintf('Cache key "%s" contains reserved characters "%s".', $key, self::RESERVED_CHARACTERS)); - } - - return true; - } - - /** - * @param mixed[] $keys - */ - private static function validKeys(array $keys): bool - { - foreach ($keys as $key) { - self::validKey($key); - } - - return true; - } - - /** - * @param mixed[] $keys - */ - private function doDeleteMultiple(array $keys): bool - { - if ($this->cache instanceof MultiDeleteCache) { - return $this->cache->deleteMultiple($keys); - } - - $success = true; - foreach ($keys as $key) { - $success = $this->cache->delete($key) && $success; - } - - return $success; - } - - /** - * @param mixed[] $keys - * - * @return mixed[] - */ - private function doFetchMultiple(array $keys): array - { - if ($this->cache instanceof MultiGetCache) { - return $this->cache->fetchMultiple($keys); - } - - $values = []; - foreach ($keys as $key) { - $value = $this->cache->fetch($key); - if (! $value) { - continue; - } - - $values[$key] = $value; - } - - return $values; - } - - /** - * @param mixed[] $keysAndValues - */ - private function doSaveMultiple(array $keysAndValues, int $lifetime = 0): bool - { - if ($this->cache instanceof MultiPutCache) { - return $this->cache->saveMultiple($keysAndValues, $lifetime); - } - - $success = true; - foreach ($keysAndValues as $key => $value) { - $success = $this->cache->save($key, $value, $lifetime) && $success; - } - - return $success; - } -} diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheItem.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheItem.php deleted file mode 100644 index 0b6f0a28..00000000 --- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/CacheItem.php +++ /dev/null @@ -1,118 +0,0 @@ -key = $key; - $this->value = $data; - $this->isHit = $isHit; - } - - public function getKey(): string - { - return $this->key; - } - - /** - * {@inheritDoc} - * - * @return mixed - */ - public function get() - { - return $this->value; - } - - public function isHit(): bool - { - return $this->isHit; - } - - /** - * {@inheritDoc} - */ - public function set($value): self - { - $this->value = $value; - - return $this; - } - - /** - * {@inheritDoc} - */ - public function expiresAt($expiration): self - { - if ($expiration === null) { - $this->expiry = null; - } elseif ($expiration instanceof DateTimeInterface) { - $this->expiry = (float) $expiration->format('U.u'); - } else { - throw new TypeError(sprintf( - 'Expected $expiration to be an instance of DateTimeInterface or null, got %s', - is_object($expiration) ? get_class($expiration) : gettype($expiration) - )); - } - - return $this; - } - - /** - * {@inheritDoc} - */ - public function expiresAfter($time): self - { - if ($time === null) { - $this->expiry = null; - } elseif ($time instanceof DateInterval) { - $this->expiry = microtime(true) + DateTime::createFromFormat('U', 0)->add($time)->format('U.u'); - } elseif (is_int($time)) { - $this->expiry = $time + microtime(true); - } else { - throw new TypeError(sprintf( - 'Expected $time to be either an integer, an instance of DateInterval or null, got %s', - is_object($time) ? get_class($time) : gettype($time) - )); - } - - return $this; - } - - /** - * @internal - */ - public function getExpiry(): ?float - { - return $this->expiry; - } -} diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/DoctrineProvider.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/DoctrineProvider.php deleted file mode 100644 index 3b0f416c..00000000 --- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/DoctrineProvider.php +++ /dev/null @@ -1,135 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Doctrine\Common\Cache\Psr6; - -use Doctrine\Common\Cache\Cache; -use Doctrine\Common\Cache\CacheProvider; -use Psr\Cache\CacheItemPoolInterface; -use Symfony\Component\Cache\Adapter\DoctrineAdapter as SymfonyDoctrineAdapter; -use Symfony\Contracts\Service\ResetInterface; - -use function rawurlencode; - -/** - * This class was copied from the Symfony Framework, see the original copyright - * notice above. The code is distributed subject to the license terms in - * https://github.com/symfony/symfony/blob/ff0cf61278982539c49e467db9ab13cbd342f76d/LICENSE - */ -final class DoctrineProvider extends CacheProvider -{ - /** @var CacheItemPoolInterface */ - private $pool; - - public static function wrap(CacheItemPoolInterface $pool): Cache - { - if ($pool instanceof CacheAdapter) { - return $pool->getCache(); - } - - if ($pool instanceof SymfonyDoctrineAdapter) { - $getCache = function () { - // phpcs:ignore Squiz.Scope.StaticThisUsage.Found - return $this->provider; - }; - - return $getCache->bindTo($pool, SymfonyDoctrineAdapter::class)(); - } - - return new self($pool); - } - - private function __construct(CacheItemPoolInterface $pool) - { - $this->pool = $pool; - } - - /** @internal */ - public function getPool(): CacheItemPoolInterface - { - return $this->pool; - } - - public function reset(): void - { - if ($this->pool instanceof ResetInterface) { - $this->pool->reset(); - } - - $this->setNamespace($this->getNamespace()); - } - - /** - * {@inheritdoc} - */ - protected function doFetch($id) - { - $item = $this->pool->getItem(rawurlencode($id)); - - return $item->isHit() ? $item->get() : false; - } - - /** - * {@inheritdoc} - * - * @return bool - */ - protected function doContains($id) - { - return $this->pool->hasItem(rawurlencode($id)); - } - - /** - * {@inheritdoc} - * - * @return bool - */ - protected function doSave($id, $data, $lifeTime = 0) - { - $item = $this->pool->getItem(rawurlencode($id)); - - if (0 < $lifeTime) { - $item->expiresAfter($lifeTime); - } - - return $this->pool->save($item->set($data)); - } - - /** - * {@inheritdoc} - * - * @return bool - */ - protected function doDelete($id) - { - return $this->pool->deleteItem(rawurlencode($id)); - } - - /** - * {@inheritdoc} - * - * @return bool - */ - protected function doFlush() - { - return $this->pool->clear(); - } - - /** - * {@inheritdoc} - * - * @return array|null - */ - protected function doGetStats() - { - return null; - } -} diff --git a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/InvalidArgument.php b/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/InvalidArgument.php deleted file mode 100644 index 196f1bca..00000000 --- a/vendor/doctrine/cache/lib/Doctrine/Common/Cache/Psr6/InvalidArgument.php +++ /dev/null @@ -1,13 +0,0 @@ -key; - } - - public function get(): mixed - { - return $this->value; - } - - public function isHit(): bool - { - return $this->isHit; - } - - public function set(mixed $value): static - { - $this->value = $value; - - return $this; - } - - /** - * {@inheritDoc} - */ - public function expiresAt($expiration): static - { - if ($expiration === null) { - $this->expiry = null; - } elseif ($expiration instanceof DateTimeInterface) { - $this->expiry = (float) $expiration->format('U.u'); - } else { - throw new TypeError(sprintf( - 'Expected $expiration to be an instance of DateTimeInterface or null, got %s', - get_debug_type($expiration) - )); - } - - return $this; - } - - /** - * {@inheritDoc} - */ - public function expiresAfter($time): static - { - if ($time === null) { - $this->expiry = null; - } elseif ($time instanceof DateInterval) { - $this->expiry = microtime(true) + DateTime::createFromFormat('U', 0)->add($time)->format('U.u'); - } elseif (is_int($time)) { - $this->expiry = $time + microtime(true); - } else { - throw new TypeError(sprintf( - 'Expected $time to be either an integer, an instance of DateInterval or null, got %s', - get_debug_type($time) - )); - } - - return $this; - } - - /** - * @internal - */ - public function getExpiry(): ?float - { - return $this->expiry; - } -} diff --git a/vendor/doctrine/dbal/CONTRIBUTING.md b/vendor/doctrine/dbal/CONTRIBUTING.md deleted file mode 100644 index 31b6eff1..00000000 --- a/vendor/doctrine/dbal/CONTRIBUTING.md +++ /dev/null @@ -1,6 +0,0 @@ -This repository has [guidelines specific to testing][testing guidelines], and -Doctrine has [general contributing guidelines][contributor workflow], make -sure you follow both. - -[contributor workflow]: https://www.doctrine-project.org/contribute/index.html -[testing guidelines]: https://www.doctrine-project.org/projects/doctrine-dbal/en/stable/reference/testing.html diff --git a/vendor/doctrine/dbal/LICENSE b/vendor/doctrine/dbal/LICENSE deleted file mode 100644 index e8fdec4a..00000000 --- a/vendor/doctrine/dbal/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2006-2018 Doctrine Project - -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/vendor/doctrine/dbal/README.md b/vendor/doctrine/dbal/README.md deleted file mode 100644 index b76a305d..00000000 --- a/vendor/doctrine/dbal/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# Doctrine DBAL - -| [4.0-dev][4.0] | [3.6][3.6] | -|:-----------------------------------------------:|:---------------------------------------------------:| -| [![GitHub Actions][GA 4.0 image]][GA 4.0] | [![GitHub Actions][GA 3.6 image]][GA 3.6] | -| [![AppVeyor][AppVeyor 4.0 image]][AppVeyor 4.0] | [![AppVeyor][AppVeyor 3.6 image]][AppVeyor 3.6] | -| [![Code Coverage][Coverage image]][CodeCov 4.0] | [![Code Coverage][Coverage 3.6 image]][CodeCov 3.6] | -| N/A | [![Type Coverage][TypeCov 3.6 image]][TypeCov 3.6] | - -Powerful ***D***ata***B***ase ***A***bstraction ***L***ayer with many features for database schema introspection and schema management. - -## More resources: - -* [Website](http://www.doctrine-project.org/projects/dbal.html) -* [Documentation](http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/) -* [Issue Tracker](https://github.com/doctrine/dbal/issues) - - [Coverage image]: https://codecov.io/gh/doctrine/dbal/branch/4.0.x/graph/badge.svg - [4.0]: https://github.com/doctrine/dbal/tree/4.0.x - [CodeCov 4.0]: https://codecov.io/gh/doctrine/dbal/branch/4.0.x - [AppVeyor 4.0]: https://ci.appveyor.com/project/doctrine/dbal/branch/4.0.x - [AppVeyor 4.0 image]: https://ci.appveyor.com/api/projects/status/i88kitq8qpbm0vie/branch/4.0.x?svg=true - [GA 4.0]: https://github.com/doctrine/dbal/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A4.0.x - [GA 4.0 image]: https://github.com/doctrine/dbal/workflows/Continuous%20Integration/badge.svg - - [Coverage 3.6 image]: https://codecov.io/gh/doctrine/dbal/branch/3.6.x/graph/badge.svg - [3.6]: https://github.com/doctrine/dbal/tree/3.6.x - [CodeCov 3.6]: https://codecov.io/gh/doctrine/dbal/branch/3.6.x - [AppVeyor 3.6]: https://ci.appveyor.com/project/doctrine/dbal/branch/3.6.x - [AppVeyor 3.6 image]: https://ci.appveyor.com/api/projects/status/i88kitq8qpbm0vie/branch/3.6.x?svg=true - [GA 3.6]: https://github.com/doctrine/dbal/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A3.6.x - [GA 3.6 image]: https://github.com/doctrine/dbal/workflows/Continuous%20Integration/badge.svg?branch=3.6.x - [TypeCov 3.6]: https://shepherd.dev/github/doctrine/dbal - [TypeCov 3.6 image]: https://shepherd.dev/github/doctrine/dbal/coverage.svg diff --git a/vendor/doctrine/dbal/bin/doctrine-dbal b/vendor/doctrine/dbal/bin/doctrine-dbal deleted file mode 100755 index 0531527d..00000000 --- a/vendor/doctrine/dbal/bin/doctrine-dbal +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env php -> */ - private array $data; - - private int $columnCount = 0; - private int $num = 0; - - /** @param list> $data */ - public function __construct(array $data) - { - $this->data = $data; - if (count($data) === 0) { - return; - } - - $this->columnCount = count($data[0]); - } - - /** - * {@inheritDoc} - */ - public function fetchNumeric() - { - $row = $this->fetch(); - - if ($row === false) { - return false; - } - - return array_values($row); - } - - /** - * {@inheritDoc} - */ - public function fetchAssociative() - { - return $this->fetch(); - } - - /** - * {@inheritDoc} - */ - public function fetchOne() - { - $row = $this->fetch(); - - if ($row === false) { - return false; - } - - return reset($row); - } - - /** - * {@inheritDoc} - */ - public function fetchAllNumeric(): array - { - return FetchUtils::fetchAllNumeric($this); - } - - /** - * {@inheritDoc} - */ - public function fetchAllAssociative(): array - { - return FetchUtils::fetchAllAssociative($this); - } - - /** - * {@inheritDoc} - */ - public function fetchFirstColumn(): array - { - return FetchUtils::fetchFirstColumn($this); - } - - public function rowCount(): int - { - return count($this->data); - } - - public function columnCount(): int - { - return $this->columnCount; - } - - public function free(): void - { - $this->data = []; - } - - /** @return array|false */ - private function fetch() - { - if (! isset($this->data[$this->num])) { - return false; - } - - return $this->data[$this->num++]; - } -} diff --git a/vendor/doctrine/dbal/src/Cache/CacheException.php b/vendor/doctrine/dbal/src/Cache/CacheException.php deleted file mode 100644 index 18e95d6b..00000000 --- a/vendor/doctrine/dbal/src/Cache/CacheException.php +++ /dev/null @@ -1,21 +0,0 @@ -lifetime = $lifetime; - $this->cacheKey = $cacheKey; - if ($resultCache instanceof CacheItemPoolInterface) { - $this->resultCache = $resultCache; - } elseif ($resultCache instanceof Cache) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4620', - 'Passing an instance of %s to %s as $resultCache is deprecated. Pass an instance of %s instead.', - Cache::class, - __METHOD__, - CacheItemPoolInterface::class, - ); - - $this->resultCache = CacheAdapter::wrap($resultCache); - } elseif ($resultCache !== null) { - throw new TypeError(sprintf( - '$resultCache: Expected either null or an instance of %s or %s, got %s.', - CacheItemPoolInterface::class, - Cache::class, - get_class($resultCache), - )); - } - } - - public function getResultCache(): ?CacheItemPoolInterface - { - return $this->resultCache; - } - - /** - * @deprecated Use {@see getResultCache()} instead. - * - * @return Cache|null - */ - public function getResultCacheDriver() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4620', - '%s is deprecated, call getResultCache() instead.', - __METHOD__, - ); - - return $this->resultCache !== null ? DoctrineProvider::wrap($this->resultCache) : null; - } - - /** @return int */ - public function getLifetime() - { - return $this->lifetime; - } - - /** - * @return string - * - * @throws CacheException - */ - public function getCacheKey() - { - if ($this->cacheKey === null) { - throw CacheException::noCacheKey(); - } - - return $this->cacheKey; - } - - /** - * Generates the real cache key from query, params, types and connection parameters. - * - * @param string $sql - * @param list|array $params - * @param array|array $types - * @param array $connectionParams - * - * @return array{string, string} - */ - public function generateCacheKeys($sql, $params, $types, array $connectionParams = []) - { - if (isset($connectionParams['password'])) { - unset($connectionParams['password']); - } - - $realCacheKey = 'query=' . $sql . - '¶ms=' . serialize($params) . - '&types=' . serialize($types) . - '&connectionParams=' . hash('sha256', serialize($connectionParams)); - - // should the key be automatically generated using the inputs or is the cache key set? - $cacheKey = $this->cacheKey ?? sha1($realCacheKey); - - return [$cacheKey, $realCacheKey]; - } - - public function setResultCache(CacheItemPoolInterface $cache): QueryCacheProfile - { - return new QueryCacheProfile($this->lifetime, $this->cacheKey, $cache); - } - - /** - * @deprecated Use {@see setResultCache()} instead. - * - * @return QueryCacheProfile - */ - public function setResultCacheDriver(Cache $cache) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4620', - '%s is deprecated, call setResultCache() instead.', - __METHOD__, - ); - - return new QueryCacheProfile($this->lifetime, $this->cacheKey, CacheAdapter::wrap($cache)); - } - - /** - * @param string|null $cacheKey - * - * @return QueryCacheProfile - */ - public function setCacheKey($cacheKey) - { - return new QueryCacheProfile($this->lifetime, $cacheKey, $this->resultCache); - } - - /** - * @param int $lifetime - * - * @return QueryCacheProfile - */ - public function setLifetime($lifetime) - { - return new QueryCacheProfile($lifetime, $this->cacheKey, $this->resultCache); - } -} diff --git a/vendor/doctrine/dbal/src/ColumnCase.php b/vendor/doctrine/dbal/src/ColumnCase.php deleted file mode 100644 index cb0dd409..00000000 --- a/vendor/doctrine/dbal/src/ColumnCase.php +++ /dev/null @@ -1,28 +0,0 @@ -schemaAssetsFilter = static function (): bool { - return true; - }; - } - - /** - * Sets the SQL logger to use. Defaults to NULL which means SQL logging is disabled. - * - * @deprecated Use {@see setMiddlewares()} and {@see \Doctrine\DBAL\Logging\Middleware} instead. - */ - public function setSQLLogger(?SQLLogger $logger = null): void - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4967', - '%s is deprecated, use setMiddlewares() and Logging\\Middleware instead.', - __METHOD__, - ); - - $this->sqlLogger = $logger; - } - - /** - * Gets the SQL logger that is used. - * - * @deprecated - */ - public function getSQLLogger(): ?SQLLogger - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4967', - '%s is deprecated.', - __METHOD__, - ); - - return $this->sqlLogger; - } - - /** - * Gets the cache driver implementation that is used for query result caching. - */ - public function getResultCache(): ?CacheItemPoolInterface - { - return $this->resultCache; - } - - /** - * Gets the cache driver implementation that is used for query result caching. - * - * @deprecated Use {@see getResultCache()} instead. - */ - public function getResultCacheImpl(): ?Cache - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4620', - '%s is deprecated, call getResultCache() instead.', - __METHOD__, - ); - - return $this->resultCacheImpl; - } - - /** - * Sets the cache driver implementation that is used for query result caching. - */ - public function setResultCache(CacheItemPoolInterface $cache): void - { - $this->resultCacheImpl = DoctrineProvider::wrap($cache); - $this->resultCache = $cache; - } - - /** - * Sets the cache driver implementation that is used for query result caching. - * - * @deprecated Use {@see setResultCache()} instead. - */ - public function setResultCacheImpl(Cache $cacheImpl): void - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4620', - '%s is deprecated, call setResultCache() instead.', - __METHOD__, - ); - - $this->resultCacheImpl = $cacheImpl; - $this->resultCache = CacheAdapter::wrap($cacheImpl); - } - - /** - * Sets the callable to use to filter schema assets. - */ - public function setSchemaAssetsFilter(?callable $callable = null): void - { - if (func_num_args() < 1) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5483', - 'Not passing an argument to %s is deprecated.', - __METHOD__, - ); - } elseif ($callable === null) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5483', - 'Using NULL as a schema asset filter is deprecated.' - . ' Use a callable that always returns true instead.', - ); - } - - $this->schemaAssetsFilter = $callable; - } - - /** - * Returns the callable to use to filter schema assets. - */ - public function getSchemaAssetsFilter(): ?callable - { - return $this->schemaAssetsFilter; - } - - /** - * Sets the default auto-commit mode for connections. - * - * If a connection is in auto-commit mode, then all its SQL statements will be executed and committed as individual - * transactions. Otherwise, its SQL statements are grouped into transactions that are terminated by a call to either - * the method commit or the method rollback. By default, new connections are in auto-commit mode. - * - * @see getAutoCommit - * - * @param bool $autoCommit True to enable auto-commit mode; false to disable it - */ - public function setAutoCommit(bool $autoCommit): void - { - $this->autoCommit = $autoCommit; - } - - /** - * Returns the default auto-commit mode for connections. - * - * @see setAutoCommit - * - * @return bool True if auto-commit mode is enabled by default for connections, false otherwise. - */ - public function getAutoCommit(): bool - { - return $this->autoCommit; - } - - /** - * @param Middleware[] $middlewares - * - * @return $this - */ - public function setMiddlewares(array $middlewares): self - { - $this->middlewares = $middlewares; - - return $this; - } - - /** @return Middleware[] */ - public function getMiddlewares(): array - { - return $this->middlewares; - } - - public function getSchemaManagerFactory(): ?SchemaManagerFactory - { - return $this->schemaManagerFactory; - } - - /** @return $this */ - public function setSchemaManagerFactory(SchemaManagerFactory $schemaManagerFactory): self - { - $this->schemaManagerFactory = $schemaManagerFactory; - - return $this; - } - - public function getDisableTypeComments(): bool - { - return $this->disableTypeComments; - } - - /** @return $this */ - public function setDisableTypeComments(bool $disableTypeComments): self - { - $this->disableTypeComments = $disableTypeComments; - - return $this; - } -} diff --git a/vendor/doctrine/dbal/src/Connection.php b/vendor/doctrine/dbal/src/Connection.php deleted file mode 100644 index 0d0d50de..00000000 --- a/vendor/doctrine/dbal/src/Connection.php +++ /dev/null @@ -1,2000 +0,0 @@ - - * @psalm-var Params - */ - private array $params; - - /** - * The database platform object used by the connection or NULL before it's initialized. - */ - private ?AbstractPlatform $platform = null; - - private ?ExceptionConverter $exceptionConverter = null; - private ?Parser $parser = null; - - /** - * The schema manager. - * - * @deprecated Use {@see createSchemaManager()} instead. - * - * @var AbstractSchemaManager|null - */ - protected $_schemaManager; - - /** - * The used DBAL driver. - * - * @var Driver - */ - protected $_driver; - - /** - * Flag that indicates whether the current transaction is marked for rollback only. - */ - private bool $isRollbackOnly = false; - - private SchemaManagerFactory $schemaManagerFactory; - - /** - * Initializes a new instance of the Connection class. - * - * @internal The connection can be only instantiated by the driver manager. - * - * @param array $params The connection parameters. - * @param Driver $driver The driver to use. - * @param Configuration|null $config The configuration, optional. - * @param EventManager|null $eventManager The event manager, optional. - * @psalm-param Params $params - * - * @throws Exception - */ - public function __construct( - #[SensitiveParameter] - array $params, - Driver $driver, - ?Configuration $config = null, - ?EventManager $eventManager = null - ) { - $this->_driver = $driver; - $this->params = $params; - - // Create default config and event manager if none given - $config ??= new Configuration(); - $eventManager ??= new EventManager(); - - $this->_config = $config; - $this->_eventManager = $eventManager; - - if (isset($params['platform'])) { - if (! $params['platform'] instanceof Platforms\AbstractPlatform) { - throw Exception::invalidPlatformType($params['platform']); - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5699', - 'The "platform" connection parameter is deprecated.' - . ' Use a driver middleware that would instantiate the platform instead.', - ); - - $this->platform = $params['platform']; - $this->platform->setEventManager($this->_eventManager); - $this->platform->setDisableTypeComments($config->getDisableTypeComments()); - } - - $this->_expr = $this->createExpressionBuilder(); - - $this->autoCommit = $config->getAutoCommit(); - - $schemaManagerFactory = $config->getSchemaManagerFactory(); - if ($schemaManagerFactory === null) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5812', - 'Not configuring a schema manager factory is deprecated.' - . ' Use %s which is going to be the default in DBAL 4.', - DefaultSchemaManagerFactory::class, - ); - - $schemaManagerFactory = new LegacySchemaManagerFactory(); - } - - $this->schemaManagerFactory = $schemaManagerFactory; - } - - /** - * Gets the parameters used during instantiation. - * - * @internal - * - * @return array - * @psalm-return Params - */ - public function getParams() - { - return $this->params; - } - - /** - * Gets the name of the currently selected database. - * - * @return string|null The name of the database or NULL if a database is not selected. - * The platforms which don't support the concept of a database (e.g. embedded databases) - * must always return a string as an indicator of an implicitly selected database. - * - * @throws Exception - */ - public function getDatabase() - { - $platform = $this->getDatabasePlatform(); - $query = $platform->getDummySelectSQL($platform->getCurrentDatabaseExpression()); - $database = $this->fetchOne($query); - - assert(is_string($database) || $database === null); - - return $database; - } - - /** - * Gets the DBAL driver instance. - * - * @return Driver - */ - public function getDriver() - { - return $this->_driver; - } - - /** - * Gets the Configuration used by the Connection. - * - * @return Configuration - */ - public function getConfiguration() - { - return $this->_config; - } - - /** - * Gets the EventManager used by the Connection. - * - * @deprecated - * - * @return EventManager - */ - public function getEventManager() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - '%s is deprecated.', - __METHOD__, - ); - - return $this->_eventManager; - } - - /** - * Gets the DatabasePlatform for the connection. - * - * @return AbstractPlatform - * - * @throws Exception - */ - public function getDatabasePlatform() - { - if ($this->platform === null) { - $this->platform = $this->detectDatabasePlatform(); - $this->platform->setEventManager($this->_eventManager); - $this->platform->setDisableTypeComments($this->_config->getDisableTypeComments()); - } - - return $this->platform; - } - - /** - * Creates an expression builder for the connection. - */ - public function createExpressionBuilder(): ExpressionBuilder - { - return new ExpressionBuilder($this); - } - - /** - * Gets the ExpressionBuilder for the connection. - * - * @deprecated Use {@see createExpressionBuilder()} instead. - * - * @return ExpressionBuilder - */ - public function getExpressionBuilder() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4515', - 'Connection::getExpressionBuilder() is deprecated,' - . ' use Connection::createExpressionBuilder() instead.', - ); - - return $this->_expr; - } - - /** - * Establishes the connection with the database. - * - * @internal This method will be made protected in DBAL 4.0. - * - * @return bool TRUE if the connection was successfully established, FALSE if - * the connection is already open. - * - * @throws Exception - * - * @psalm-assert !null $this->_conn - */ - public function connect() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4966', - 'Public access to Connection::connect() is deprecated.', - ); - - if ($this->_conn !== null) { - return false; - } - - try { - $this->_conn = $this->_driver->connect($this->params); - } catch (Driver\Exception $e) { - throw $this->convertException($e); - } - - if ($this->autoCommit === false) { - $this->beginTransaction(); - } - - if ($this->_eventManager->hasListeners(Events::postConnect)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated. Implement a middleware instead.', - Events::postConnect, - ); - - $eventArgs = new Event\ConnectionEventArgs($this); - $this->_eventManager->dispatchEvent(Events::postConnect, $eventArgs); - } - - return true; - } - - /** - * Detects and sets the database platform. - * - * Evaluates custom platform class and version in order to set the correct platform. - * - * @throws Exception If an invalid platform was specified for this connection. - */ - private function detectDatabasePlatform(): AbstractPlatform - { - $version = $this->getDatabasePlatformVersion(); - - if ($version !== null) { - assert($this->_driver instanceof VersionAwarePlatformDriver); - - return $this->_driver->createDatabasePlatformForVersion($version); - } - - return $this->_driver->getDatabasePlatform(); - } - - /** - * Returns the version of the related platform if applicable. - * - * Returns null if either the driver is not capable to create version - * specific platform instances, no explicit server version was specified - * or the underlying driver connection cannot determine the platform - * version without having to query it (performance reasons). - * - * @return string|null - * - * @throws Throwable - */ - private function getDatabasePlatformVersion() - { - // Driver does not support version specific platforms. - if (! $this->_driver instanceof VersionAwarePlatformDriver) { - return null; - } - - // Explicit platform version requested (supersedes auto-detection). - if (isset($this->params['serverVersion'])) { - return $this->params['serverVersion']; - } - - if (isset($this->params['primary']) && isset($this->params['primary']['serverVersion'])) { - return $this->params['primary']['serverVersion']; - } - - // If not connected, we need to connect now to determine the platform version. - if ($this->_conn === null) { - try { - $this->connect(); - } catch (Exception $originalException) { - if (! isset($this->params['dbname'])) { - throw $originalException; - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5707', - 'Relying on a fallback connection used to determine the database platform while connecting' - . ' to a non-existing database is deprecated. Either use an existing database name in' - . ' connection parameters or omit the database name if the platform' - . ' and the server configuration allow that.', - ); - - // The database to connect to might not yet exist. - // Retry detection without database name connection parameter. - $params = $this->params; - - unset($this->params['dbname']); - - try { - $this->connect(); - } catch (Exception $fallbackException) { - // Either the platform does not support database-less connections - // or something else went wrong. - throw $originalException; - } finally { - $this->params = $params; - } - - $serverVersion = $this->getServerVersion(); - - // Close "temporary" connection to allow connecting to the real database again. - $this->close(); - - return $serverVersion; - } - } - - return $this->getServerVersion(); - } - - /** - * Returns the database server version if the underlying driver supports it. - * - * @return string|null - * - * @throws Exception - */ - private function getServerVersion() - { - $connection = $this->getWrappedConnection(); - - // Automatic platform version detection. - if ($connection instanceof ServerInfoAwareConnection) { - try { - return $connection->getServerVersion(); - } catch (Driver\Exception $e) { - throw $this->convertException($e); - } - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4750', - 'Not implementing the ServerInfoAwareConnection interface in %s is deprecated', - get_class($connection), - ); - - // Unable to detect platform version. - return null; - } - - /** - * Returns the current auto-commit mode for this connection. - * - * @see setAutoCommit - * - * @return bool True if auto-commit mode is currently enabled for this connection, false otherwise. - */ - public function isAutoCommit() - { - return $this->autoCommit === true; - } - - /** - * Sets auto-commit mode for this connection. - * - * If a connection is in auto-commit mode, then all its SQL statements will be executed and committed as individual - * transactions. Otherwise, its SQL statements are grouped into transactions that are terminated by a call to either - * the method commit or the method rollback. By default, new connections are in auto-commit mode. - * - * NOTE: If this method is called during a transaction and the auto-commit mode is changed, the transaction is - * committed. If this method is called and the auto-commit mode is not changed, the call is a no-op. - * - * @see isAutoCommit - * - * @param bool $autoCommit True to enable auto-commit mode; false to disable it. - * - * @return void - */ - public function setAutoCommit($autoCommit) - { - $autoCommit = (bool) $autoCommit; - - // Mode not changed, no-op. - if ($autoCommit === $this->autoCommit) { - return; - } - - $this->autoCommit = $autoCommit; - - // Commit all currently active transactions if any when switching auto-commit mode. - if ($this->_conn === null || $this->transactionNestingLevel === 0) { - return; - } - - $this->commitAll(); - } - - /** - * Prepares and executes an SQL query and returns the first row of the result - * as an associative array. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return array|false False is returned if no rows are found. - * - * @throws Exception - */ - public function fetchAssociative(string $query, array $params = [], array $types = []) - { - return $this->executeQuery($query, $params, $types)->fetchAssociative(); - } - - /** - * Prepares and executes an SQL query and returns the first row of the result - * as a numerically indexed array. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return list|false False is returned if no rows are found. - * - * @throws Exception - */ - public function fetchNumeric(string $query, array $params = [], array $types = []) - { - return $this->executeQuery($query, $params, $types)->fetchNumeric(); - } - - /** - * Prepares and executes an SQL query and returns the value of a single column - * of the first row of the result. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return mixed|false False is returned if no rows are found. - * - * @throws Exception - */ - public function fetchOne(string $query, array $params = [], array $types = []) - { - return $this->executeQuery($query, $params, $types)->fetchOne(); - } - - /** - * Whether an actual connection to the database is established. - * - * @return bool - */ - public function isConnected() - { - return $this->_conn !== null; - } - - /** - * Checks whether a transaction is currently active. - * - * @return bool TRUE if a transaction is currently active, FALSE otherwise. - */ - public function isTransactionActive() - { - return $this->transactionNestingLevel > 0; - } - - /** - * Adds condition based on the criteria to the query components - * - * @param array $criteria Map of key columns to their values - * @param string[] $columns Column names - * @param mixed[] $values Column values - * @param string[] $conditions Key conditions - * - * @throws Exception - */ - private function addCriteriaCondition( - array $criteria, - array &$columns, - array &$values, - array &$conditions - ): void { - $platform = $this->getDatabasePlatform(); - - foreach ($criteria as $columnName => $value) { - if ($value === null) { - $conditions[] = $platform->getIsNullExpression($columnName); - continue; - } - - $columns[] = $columnName; - $values[] = $value; - $conditions[] = $columnName . ' = ?'; - } - } - - /** - * Executes an SQL DELETE statement on a table. - * - * Table expression and columns are not escaped and are not safe for user-input. - * - * @param string $table Table name - * @param array $criteria Deletion criteria - * @param array|array $types Parameter types - * - * @return int|string The number of affected rows. - * - * @throws Exception - */ - public function delete($table, array $criteria, array $types = []) - { - if (count($criteria) === 0) { - throw InvalidArgumentException::fromEmptyCriteria(); - } - - $columns = $values = $conditions = []; - - $this->addCriteriaCondition($criteria, $columns, $values, $conditions); - - return $this->executeStatement( - 'DELETE FROM ' . $table . ' WHERE ' . implode(' AND ', $conditions), - $values, - is_string(key($types)) ? $this->extractTypeValues($columns, $types) : $types, - ); - } - - /** - * Closes the connection. - * - * @return void - */ - public function close() - { - $this->_conn = null; - $this->transactionNestingLevel = 0; - } - - /** - * Sets the transaction isolation level. - * - * @param TransactionIsolationLevel::* $level The level to set. - * - * @return int|string - * - * @throws Exception - */ - public function setTransactionIsolation($level) - { - $this->transactionIsolationLevel = $level; - - return $this->executeStatement($this->getDatabasePlatform()->getSetTransactionIsolationSQL($level)); - } - - /** - * Gets the currently active transaction isolation level. - * - * @return TransactionIsolationLevel::* The current transaction isolation level. - * - * @throws Exception - */ - public function getTransactionIsolation() - { - return $this->transactionIsolationLevel ??= $this->getDatabasePlatform()->getDefaultTransactionIsolationLevel(); - } - - /** - * Executes an SQL UPDATE statement on a table. - * - * Table expression and columns are not escaped and are not safe for user-input. - * - * @param string $table Table name - * @param array $data Column-value pairs - * @param array $criteria Update criteria - * @param array|array $types Parameter types - * - * @return int|string The number of affected rows. - * - * @throws Exception - */ - public function update($table, array $data, array $criteria, array $types = []) - { - $columns = $values = $conditions = $set = []; - - foreach ($data as $columnName => $value) { - $columns[] = $columnName; - $values[] = $value; - $set[] = $columnName . ' = ?'; - } - - $this->addCriteriaCondition($criteria, $columns, $values, $conditions); - - if (is_string(key($types))) { - $types = $this->extractTypeValues($columns, $types); - } - - $sql = 'UPDATE ' . $table . ' SET ' . implode(', ', $set) - . ' WHERE ' . implode(' AND ', $conditions); - - return $this->executeStatement($sql, $values, $types); - } - - /** - * Inserts a table row with specified data. - * - * Table expression and columns are not escaped and are not safe for user-input. - * - * @param string $table Table name - * @param array $data Column-value pairs - * @param array|array $types Parameter types - * - * @return int|string The number of affected rows. - * - * @throws Exception - */ - public function insert($table, array $data, array $types = []) - { - if (count($data) === 0) { - return $this->executeStatement('INSERT INTO ' . $table . ' () VALUES ()'); - } - - $columns = []; - $values = []; - $set = []; - - foreach ($data as $columnName => $value) { - $columns[] = $columnName; - $values[] = $value; - $set[] = '?'; - } - - return $this->executeStatement( - 'INSERT INTO ' . $table . ' (' . implode(', ', $columns) . ')' . - ' VALUES (' . implode(', ', $set) . ')', - $values, - is_string(key($types)) ? $this->extractTypeValues($columns, $types) : $types, - ); - } - - /** - * Extract ordered type list from an ordered column list and type map. - * - * @param array $columnList - * @param array|array $types - * - * @return array|array - */ - private function extractTypeValues(array $columnList, array $types): array - { - $typeValues = []; - - foreach ($columnList as $columnName) { - $typeValues[] = $types[$columnName] ?? ParameterType::STRING; - } - - return $typeValues; - } - - /** - * Quotes a string so it can be safely used as a table or column name, even if - * it is a reserved name. - * - * Delimiting style depends on the underlying database platform that is being used. - * - * NOTE: Just because you CAN use quoted identifiers does not mean - * you SHOULD use them. In general, they end up causing way more - * problems than they solve. - * - * @param string $str The name to be quoted. - * - * @return string The quoted name. - */ - public function quoteIdentifier($str) - { - return $this->getDatabasePlatform()->quoteIdentifier($str); - } - - /** - * The usage of this method is discouraged. Use prepared statements - * or {@see AbstractPlatform::quoteStringLiteral()} instead. - * - * @param mixed $value - * @param int|string|Type|null $type - * - * @return mixed - */ - public function quote($value, $type = ParameterType::STRING) - { - $connection = $this->getWrappedConnection(); - - [$value, $bindingType] = $this->getBindingInfo($value, $type); - - return $connection->quote($value, $bindingType); - } - - /** - * Prepares and executes an SQL query and returns the result as an array of numeric arrays. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return list> - * - * @throws Exception - */ - public function fetchAllNumeric(string $query, array $params = [], array $types = []): array - { - return $this->executeQuery($query, $params, $types)->fetchAllNumeric(); - } - - /** - * Prepares and executes an SQL query and returns the result as an array of associative arrays. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return list> - * - * @throws Exception - */ - public function fetchAllAssociative(string $query, array $params = [], array $types = []): array - { - return $this->executeQuery($query, $params, $types)->fetchAllAssociative(); - } - - /** - * Prepares and executes an SQL query and returns the result as an associative array with the keys - * mapped to the first column and the values mapped to the second column. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return array - * - * @throws Exception - */ - public function fetchAllKeyValue(string $query, array $params = [], array $types = []): array - { - return $this->executeQuery($query, $params, $types)->fetchAllKeyValue(); - } - - /** - * Prepares and executes an SQL query and returns the result as an associative array with the keys mapped - * to the first column and the values being an associative array representing the rest of the columns - * and their values. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return array> - * - * @throws Exception - */ - public function fetchAllAssociativeIndexed(string $query, array $params = [], array $types = []): array - { - return $this->executeQuery($query, $params, $types)->fetchAllAssociativeIndexed(); - } - - /** - * Prepares and executes an SQL query and returns the result as an array of the first column values. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return list - * - * @throws Exception - */ - public function fetchFirstColumn(string $query, array $params = [], array $types = []): array - { - return $this->executeQuery($query, $params, $types)->fetchFirstColumn(); - } - - /** - * Prepares and executes an SQL query and returns the result as an iterator over rows represented as numeric arrays. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return Traversable> - * - * @throws Exception - */ - public function iterateNumeric(string $query, array $params = [], array $types = []): Traversable - { - return $this->executeQuery($query, $params, $types)->iterateNumeric(); - } - - /** - * Prepares and executes an SQL query and returns the result as an iterator over rows represented - * as associative arrays. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return Traversable> - * - * @throws Exception - */ - public function iterateAssociative(string $query, array $params = [], array $types = []): Traversable - { - return $this->executeQuery($query, $params, $types)->iterateAssociative(); - } - - /** - * Prepares and executes an SQL query and returns the result as an iterator with the keys - * mapped to the first column and the values mapped to the second column. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return Traversable - * - * @throws Exception - */ - public function iterateKeyValue(string $query, array $params = [], array $types = []): Traversable - { - return $this->executeQuery($query, $params, $types)->iterateKeyValue(); - } - - /** - * Prepares and executes an SQL query and returns the result as an iterator with the keys mapped - * to the first column and the values being an associative array representing the rest of the columns - * and their values. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return Traversable> - * - * @throws Exception - */ - public function iterateAssociativeIndexed(string $query, array $params = [], array $types = []): Traversable - { - return $this->executeQuery($query, $params, $types)->iterateAssociativeIndexed(); - } - - /** - * Prepares and executes an SQL query and returns the result as an iterator over the first column values. - * - * @param string $query SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @return Traversable - * - * @throws Exception - */ - public function iterateColumn(string $query, array $params = [], array $types = []): Traversable - { - return $this->executeQuery($query, $params, $types)->iterateColumn(); - } - - /** - * Prepares an SQL statement. - * - * @param string $sql The SQL statement to prepare. - * - * @throws Exception - */ - public function prepare(string $sql): Statement - { - $connection = $this->getWrappedConnection(); - - try { - $statement = $connection->prepare($sql); - } catch (Driver\Exception $e) { - throw $this->convertExceptionDuringQuery($e, $sql); - } - - return new Statement($this, $statement, $sql); - } - - /** - * Executes an, optionally parameterized, SQL query. - * - * If the query is parametrized, a prepared statement is used. - * If an SQLLogger is configured, the execution is logged. - * - * @param string $sql SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @throws Exception - */ - public function executeQuery( - string $sql, - array $params = [], - $types = [], - ?QueryCacheProfile $qcp = null - ): Result { - if ($qcp !== null) { - return $this->executeCacheQuery($sql, $params, $types, $qcp); - } - - $connection = $this->getWrappedConnection(); - - $logger = $this->_config->getSQLLogger(); - if ($logger !== null) { - $logger->startQuery($sql, $params, $types); - } - - try { - if (count($params) > 0) { - if ($this->needsArrayParameterConversion($params, $types)) { - [$sql, $params, $types] = $this->expandArrayParameters($sql, $params, $types); - } - - $stmt = $connection->prepare($sql); - - $this->bindParameters($stmt, $params, $types); - - $result = $stmt->execute(); - } else { - $result = $connection->query($sql); - } - - return new Result($result, $this); - } catch (Driver\Exception $e) { - throw $this->convertExceptionDuringQuery($e, $sql, $params, $types); - } finally { - if ($logger !== null) { - $logger->stopQuery(); - } - } - } - - /** - * Executes a caching query. - * - * @param string $sql SQL query - * @param list|array $params Query parameters - * @param array|array $types Parameter types - * - * @throws CacheException - * @throws Exception - */ - public function executeCacheQuery($sql, $params, $types, QueryCacheProfile $qcp): Result - { - $resultCache = $qcp->getResultCache() ?? $this->_config->getResultCache(); - - if ($resultCache === null) { - throw CacheException::noResultDriverConfigured(); - } - - $connectionParams = $this->params; - unset($connectionParams['platform'], $connectionParams['password'], $connectionParams['url']); - - [$cacheKey, $realKey] = $qcp->generateCacheKeys($sql, $params, $types, $connectionParams); - - $item = $resultCache->getItem($cacheKey); - - if ($item->isHit()) { - $value = $item->get(); - if (isset($value[$realKey])) { - return new Result(new ArrayResult($value[$realKey]), $this); - } - } else { - $value = []; - } - - $data = $this->fetchAllAssociative($sql, $params, $types); - - $value[$realKey] = $data; - - $item->set($value); - - $lifetime = $qcp->getLifetime(); - if ($lifetime > 0) { - $item->expiresAfter($lifetime); - } - - $resultCache->save($item); - - return new Result(new ArrayResult($data), $this); - } - - /** - * Executes an SQL statement with the given parameters and returns the number of affected rows. - * - * Could be used for: - * - DML statements: INSERT, UPDATE, DELETE, etc. - * - DDL statements: CREATE, DROP, ALTER, etc. - * - DCL statements: GRANT, REVOKE, etc. - * - Session control statements: ALTER SESSION, SET, DECLARE, etc. - * - Other statements that don't yield a row set. - * - * This method supports PDO binding types as well as DBAL mapping types. - * - * @param string $sql SQL statement - * @param list|array $params Statement parameters - * @param array|array $types Parameter types - * - * @return int|string The number of affected rows. - * - * @throws Exception - */ - public function executeStatement($sql, array $params = [], array $types = []) - { - $connection = $this->getWrappedConnection(); - - $logger = $this->_config->getSQLLogger(); - if ($logger !== null) { - $logger->startQuery($sql, $params, $types); - } - - try { - if (count($params) > 0) { - if ($this->needsArrayParameterConversion($params, $types)) { - [$sql, $params, $types] = $this->expandArrayParameters($sql, $params, $types); - } - - $stmt = $connection->prepare($sql); - - $this->bindParameters($stmt, $params, $types); - - return $stmt->execute() - ->rowCount(); - } - - return $connection->exec($sql); - } catch (Driver\Exception $e) { - throw $this->convertExceptionDuringQuery($e, $sql, $params, $types); - } finally { - if ($logger !== null) { - $logger->stopQuery(); - } - } - } - - /** - * Returns the current transaction nesting level. - * - * @return int The nesting level. A value of 0 means there's no active transaction. - */ - public function getTransactionNestingLevel() - { - return $this->transactionNestingLevel; - } - - /** - * Returns the ID of the last inserted row, or the last value from a sequence object, - * depending on the underlying driver. - * - * Note: This method may not return a meaningful or consistent result across different drivers, - * because the underlying database may not even support the notion of AUTO_INCREMENT/IDENTITY - * columns or sequences. - * - * @param string|null $name Name of the sequence object from which the ID should be returned. - * - * @return string|int|false A string representation of the last inserted ID. - * - * @throws Exception - */ - public function lastInsertId($name = null) - { - if ($name !== null) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4687', - 'The usage of Connection::lastInsertId() with a sequence name is deprecated.', - ); - } - - try { - return $this->getWrappedConnection()->lastInsertId($name); - } catch (Driver\Exception $e) { - throw $this->convertException($e); - } - } - - /** - * Executes a function in a transaction. - * - * The function gets passed this Connection instance as an (optional) parameter. - * - * If an exception occurs during execution of the function or transaction commit, - * the transaction is rolled back and the exception re-thrown. - * - * @param Closure(self):T $func The function to execute transactionally. - * - * @return T The value returned by $func - * - * @throws Throwable - * - * @template T - */ - public function transactional(Closure $func) - { - $this->beginTransaction(); - try { - $res = $func($this); - $this->commit(); - - return $res; - } catch (Throwable $e) { - $this->rollBack(); - - throw $e; - } - } - - /** - * Sets if nested transactions should use savepoints. - * - * @param bool $nestTransactionsWithSavepoints - * - * @return void - * - * @throws Exception - */ - public function setNestTransactionsWithSavepoints($nestTransactionsWithSavepoints) - { - if (! $nestTransactionsWithSavepoints) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5383', - <<<'DEPRECATION' - Nesting transactions without enabling savepoints is deprecated. - Call %s::setNestTransactionsWithSavepoints(true) to enable savepoints. - DEPRECATION, - self::class, - ); - } - - if ($this->transactionNestingLevel > 0) { - throw ConnectionException::mayNotAlterNestedTransactionWithSavepointsInTransaction(); - } - - if (! $this->getDatabasePlatform()->supportsSavepoints()) { - throw ConnectionException::savepointsNotSupported(); - } - - $this->nestTransactionsWithSavepoints = (bool) $nestTransactionsWithSavepoints; - } - - /** - * Gets if nested transactions should use savepoints. - * - * @return bool - */ - public function getNestTransactionsWithSavepoints() - { - return $this->nestTransactionsWithSavepoints; - } - - /** - * Returns the savepoint name to use for nested transactions. - * - * @return string - */ - protected function _getNestedTransactionSavePointName() - { - return 'DOCTRINE_' . $this->transactionNestingLevel; - } - - /** - * @return bool - * - * @throws Exception - */ - public function beginTransaction() - { - $connection = $this->getWrappedConnection(); - - ++$this->transactionNestingLevel; - - $logger = $this->_config->getSQLLogger(); - - if ($this->transactionNestingLevel === 1) { - if ($logger !== null) { - $logger->startQuery('"START TRANSACTION"'); - } - - $connection->beginTransaction(); - - if ($logger !== null) { - $logger->stopQuery(); - } - } elseif ($this->nestTransactionsWithSavepoints) { - if ($logger !== null) { - $logger->startQuery('"SAVEPOINT"'); - } - - $this->createSavepoint($this->_getNestedTransactionSavePointName()); - if ($logger !== null) { - $logger->stopQuery(); - } - } else { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5383', - <<<'DEPRECATION' - Nesting transactions without enabling savepoints is deprecated. - Call %s::setNestTransactionsWithSavepoints(true) to enable savepoints. - DEPRECATION, - self::class, - ); - } - - $eventManager = $this->getEventManager(); - - if ($eventManager->hasListeners(Events::onTransactionBegin)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onTransactionBegin, - ); - - $eventManager->dispatchEvent(Events::onTransactionBegin, new TransactionBeginEventArgs($this)); - } - - return true; - } - - /** - * @return bool - * - * @throws Exception - */ - public function commit() - { - if ($this->transactionNestingLevel === 0) { - throw ConnectionException::noActiveTransaction(); - } - - if ($this->isRollbackOnly) { - throw ConnectionException::commitFailedRollbackOnly(); - } - - $result = true; - - $connection = $this->getWrappedConnection(); - - if ($this->transactionNestingLevel === 1) { - $result = $this->doCommit($connection); - } elseif ($this->nestTransactionsWithSavepoints) { - $this->releaseSavepoint($this->_getNestedTransactionSavePointName()); - } - - --$this->transactionNestingLevel; - - $eventManager = $this->getEventManager(); - - if ($eventManager->hasListeners(Events::onTransactionCommit)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onTransactionCommit, - ); - - $eventManager->dispatchEvent(Events::onTransactionCommit, new TransactionCommitEventArgs($this)); - } - - if ($this->autoCommit !== false || $this->transactionNestingLevel !== 0) { - return $result; - } - - $this->beginTransaction(); - - return $result; - } - - /** - * @return bool - * - * @throws DriverException - */ - private function doCommit(DriverConnection $connection) - { - $logger = $this->_config->getSQLLogger(); - - if ($logger !== null) { - $logger->startQuery('"COMMIT"'); - } - - $result = $connection->commit(); - - if ($logger !== null) { - $logger->stopQuery(); - } - - return $result; - } - - /** - * Commits all current nesting transactions. - * - * @throws Exception - */ - private function commitAll(): void - { - while ($this->transactionNestingLevel !== 0) { - if ($this->autoCommit === false && $this->transactionNestingLevel === 1) { - // When in no auto-commit mode, the last nesting commit immediately starts a new transaction. - // Therefore we need to do the final commit here and then leave to avoid an infinite loop. - $this->commit(); - - return; - } - - $this->commit(); - } - } - - /** - * Cancels any database changes done during the current transaction. - * - * @return bool - * - * @throws Exception - */ - public function rollBack() - { - if ($this->transactionNestingLevel === 0) { - throw ConnectionException::noActiveTransaction(); - } - - $connection = $this->getWrappedConnection(); - - $logger = $this->_config->getSQLLogger(); - - if ($this->transactionNestingLevel === 1) { - if ($logger !== null) { - $logger->startQuery('"ROLLBACK"'); - } - - $this->transactionNestingLevel = 0; - $connection->rollBack(); - $this->isRollbackOnly = false; - if ($logger !== null) { - $logger->stopQuery(); - } - - if ($this->autoCommit === false) { - $this->beginTransaction(); - } - } elseif ($this->nestTransactionsWithSavepoints) { - if ($logger !== null) { - $logger->startQuery('"ROLLBACK TO SAVEPOINT"'); - } - - $this->rollbackSavepoint($this->_getNestedTransactionSavePointName()); - --$this->transactionNestingLevel; - if ($logger !== null) { - $logger->stopQuery(); - } - } else { - $this->isRollbackOnly = true; - --$this->transactionNestingLevel; - } - - $eventManager = $this->getEventManager(); - - if ($eventManager->hasListeners(Events::onTransactionRollBack)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onTransactionRollBack, - ); - - $eventManager->dispatchEvent(Events::onTransactionRollBack, new TransactionRollBackEventArgs($this)); - } - - return true; - } - - /** - * Creates a new savepoint. - * - * @param string $savepoint The name of the savepoint to create. - * - * @return void - * - * @throws Exception - */ - public function createSavepoint($savepoint) - { - $platform = $this->getDatabasePlatform(); - - if (! $platform->supportsSavepoints()) { - throw ConnectionException::savepointsNotSupported(); - } - - $this->executeStatement($platform->createSavePoint($savepoint)); - } - - /** - * Releases the given savepoint. - * - * @param string $savepoint The name of the savepoint to release. - * - * @return void - * - * @throws Exception - */ - public function releaseSavepoint($savepoint) - { - $logger = $this->_config->getSQLLogger(); - - $platform = $this->getDatabasePlatform(); - - if (! $platform->supportsSavepoints()) { - throw ConnectionException::savepointsNotSupported(); - } - - if (! $platform->supportsReleaseSavepoints()) { - if ($logger !== null) { - $logger->stopQuery(); - } - - return; - } - - if ($logger !== null) { - $logger->startQuery('"RELEASE SAVEPOINT"'); - } - - $this->executeStatement($platform->releaseSavePoint($savepoint)); - - if ($logger === null) { - return; - } - - $logger->stopQuery(); - } - - /** - * Rolls back to the given savepoint. - * - * @param string $savepoint The name of the savepoint to rollback to. - * - * @return void - * - * @throws Exception - */ - public function rollbackSavepoint($savepoint) - { - $platform = $this->getDatabasePlatform(); - - if (! $platform->supportsSavepoints()) { - throw ConnectionException::savepointsNotSupported(); - } - - $this->executeStatement($platform->rollbackSavePoint($savepoint)); - } - - /** - * Gets the wrapped driver connection. - * - * @deprecated Use {@link getNativeConnection()} to access the native connection. - * - * @return DriverConnection - * - * @throws Exception - */ - public function getWrappedConnection() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4966', - 'Connection::getWrappedConnection() is deprecated.' - . ' Use Connection::getNativeConnection() to access the native connection.', - ); - - $this->connect(); - - return $this->_conn; - } - - /** @return resource|object */ - public function getNativeConnection() - { - $this->connect(); - - if (! method_exists($this->_conn, 'getNativeConnection')) { - throw new LogicException(sprintf( - 'The driver connection %s does not support accessing the native connection.', - get_class($this->_conn), - )); - } - - return $this->_conn->getNativeConnection(); - } - - /** - * Creates a SchemaManager that can be used to inspect or change the - * database schema through the connection. - * - * @throws Exception - */ - public function createSchemaManager(): AbstractSchemaManager - { - return $this->schemaManagerFactory->createSchemaManager($this); - } - - /** - * Gets the SchemaManager that can be used to inspect or change the - * database schema through the connection. - * - * @deprecated Use {@see createSchemaManager()} instead. - * - * @return AbstractSchemaManager - * - * @throws Exception - */ - public function getSchemaManager() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4515', - 'Connection::getSchemaManager() is deprecated, use Connection::createSchemaManager() instead.', - ); - - return $this->_schemaManager ??= $this->createSchemaManager(); - } - - /** - * Marks the current transaction so that the only possible - * outcome for the transaction to be rolled back. - * - * @return void - * - * @throws ConnectionException If no transaction is active. - */ - public function setRollbackOnly() - { - if ($this->transactionNestingLevel === 0) { - throw ConnectionException::noActiveTransaction(); - } - - $this->isRollbackOnly = true; - } - - /** - * Checks whether the current transaction is marked for rollback only. - * - * @return bool - * - * @throws ConnectionException If no transaction is active. - */ - public function isRollbackOnly() - { - if ($this->transactionNestingLevel === 0) { - throw ConnectionException::noActiveTransaction(); - } - - return $this->isRollbackOnly; - } - - /** - * Converts a given value to its database representation according to the conversion - * rules of a specific DBAL mapping type. - * - * @param mixed $value The value to convert. - * @param string $type The name of the DBAL mapping type. - * - * @return mixed The converted value. - * - * @throws Exception - */ - public function convertToDatabaseValue($value, $type) - { - return Type::getType($type)->convertToDatabaseValue($value, $this->getDatabasePlatform()); - } - - /** - * Converts a given value to its PHP representation according to the conversion - * rules of a specific DBAL mapping type. - * - * @param mixed $value The value to convert. - * @param string $type The name of the DBAL mapping type. - * - * @return mixed The converted type. - * - * @throws Exception - */ - public function convertToPHPValue($value, $type) - { - return Type::getType($type)->convertToPHPValue($value, $this->getDatabasePlatform()); - } - - /** - * Binds a set of parameters, some or all of which are typed with a PDO binding type - * or DBAL mapping type, to a given statement. - * - * @param DriverStatement $stmt Prepared statement - * @param list|array $params Statement parameters - * @param array|array $types Parameter types - * - * @throws Exception - */ - private function bindParameters(DriverStatement $stmt, array $params, array $types): void - { - // Check whether parameters are positional or named. Mixing is not allowed. - if (is_int(key($params))) { - $bindIndex = 1; - - foreach ($params as $key => $value) { - if (isset($types[$key])) { - $type = $types[$key]; - [$value, $bindingType] = $this->getBindingInfo($value, $type); - } else { - if (array_key_exists($key, $types)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5550', - 'Using NULL as prepared statement parameter type is deprecated.' - . 'Omit or use ParameterType::STRING instead', - ); - } - - $bindingType = ParameterType::STRING; - } - - $stmt->bindValue($bindIndex, $value, $bindingType); - - ++$bindIndex; - } - } else { - // Named parameters - foreach ($params as $name => $value) { - if (isset($types[$name])) { - $type = $types[$name]; - [$value, $bindingType] = $this->getBindingInfo($value, $type); - } else { - if (array_key_exists($name, $types)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5550', - 'Using NULL as prepared statement parameter type is deprecated.' - . 'Omit or use ParameterType::STRING instead', - ); - } - - $bindingType = ParameterType::STRING; - } - - $stmt->bindValue($name, $value, $bindingType); - } - } - } - - /** - * Gets the binding type of a given type. - * - * @param mixed $value The value to bind. - * @param int|string|Type|null $type The type to bind (PDO or DBAL). - * - * @return array{mixed, int} [0] => the (escaped) value, [1] => the binding type. - * - * @throws Exception - */ - private function getBindingInfo($value, $type): array - { - if (is_string($type)) { - $type = Type::getType($type); - } - - if ($type instanceof Type) { - $value = $type->convertToDatabaseValue($value, $this->getDatabasePlatform()); - $bindingType = $type->getBindingType(); - } else { - $bindingType = $type ?? ParameterType::STRING; - } - - return [$value, $bindingType]; - } - - /** - * Creates a new instance of a SQL query builder. - * - * @return QueryBuilder - */ - public function createQueryBuilder() - { - return new Query\QueryBuilder($this); - } - - /** - * @internal - * - * @param list|array $params - * @param array|array $types - */ - final public function convertExceptionDuringQuery( - Driver\Exception $e, - string $sql, - array $params = [], - array $types = [] - ): DriverException { - return $this->handleDriverException($e, new Query($sql, $params, $types)); - } - - /** @internal */ - final public function convertException(Driver\Exception $e): DriverException - { - return $this->handleDriverException($e, null); - } - - /** - * @param array|array $params - * @param array|array $types - * - * @return array{string, list, array} - */ - private function expandArrayParameters(string $sql, array $params, array $types): array - { - $this->parser ??= $this->getDatabasePlatform()->createSQLParser(); - $visitor = new ExpandArrayParameters($params, $types); - - $this->parser->parse($sql, $visitor); - - return [ - $visitor->getSQL(), - $visitor->getParameters(), - $visitor->getTypes(), - ]; - } - - /** - * @param array|array $params - * @param array|array $types - */ - private function needsArrayParameterConversion(array $params, array $types): bool - { - if (is_string(key($params))) { - return true; - } - - foreach ($types as $type) { - if ( - $type === ArrayParameterType::INTEGER - || $type === ArrayParameterType::STRING - || $type === ArrayParameterType::ASCII - || $type === ArrayParameterType::BINARY - ) { - return true; - } - } - - return false; - } - - private function handleDriverException( - Driver\Exception $driverException, - ?Query $query - ): DriverException { - $this->exceptionConverter ??= $this->_driver->getExceptionConverter(); - $exception = $this->exceptionConverter->convert($driverException, $query); - - if ($exception instanceof ConnectionLost) { - $this->close(); - } - - return $exception; - } - - /** - * BC layer for a wide-spread use-case of old DBAL APIs - * - * @deprecated Use {@see executeStatement()} instead - * - * @param array $params The query parameters - * @param array $types The parameter types - */ - public function executeUpdate(string $sql, array $params = [], array $types = []): int - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4163', - '%s is deprecated, please use executeStatement() instead.', - __METHOD__, - ); - - return $this->executeStatement($sql, $params, $types); - } - - /** - * BC layer for a wide-spread use-case of old DBAL APIs - * - * @deprecated Use {@see executeQuery()} instead - */ - public function query(string $sql): Result - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4163', - '%s is deprecated, please use executeQuery() instead.', - __METHOD__, - ); - - return $this->executeQuery($sql); - } - - /** - * BC layer for a wide-spread use-case of old DBAL APIs - * - * @deprecated please use {@see executeStatement()} instead - */ - public function exec(string $sql): int - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4163', - '%s is deprecated, please use executeStatement() instead.', - __METHOD__, - ); - - return $this->executeStatement($sql); - } -} diff --git a/vendor/doctrine/dbal/src/ConnectionException.php b/vendor/doctrine/dbal/src/ConnectionException.php deleted file mode 100644 index f1e18987..00000000 --- a/vendor/doctrine/dbal/src/ConnectionException.php +++ /dev/null @@ -1,31 +0,0 @@ -executeQuery("DELETE FROM table"); - * - * Be aware that Connection#executeQuery is a method specifically for READ - * operations only. - * - * Use Connection#executeStatement for any SQL statement that changes/updates - * state in the database (UPDATE, INSERT, DELETE or DDL statements). - * - * This connection is limited to replica operations using the - * Connection#executeQuery operation only, because it wouldn't be compatible - * with the ORM or SchemaManager code otherwise. Both use all the other - * operations in a context where writes could happen to a replica, which makes - * this restricted approach necessary. - * - * You can manually connect to the primary at any time by calling: - * - * $conn->ensureConnectedToPrimary(); - * - * Instantiation through the DriverManager looks like: - * - * @psalm-import-type Params from DriverManager - * @example - * - * $conn = DriverManager::getConnection(array( - * 'wrapperClass' => 'Doctrine\DBAL\Connections\PrimaryReadReplicaConnection', - * 'driver' => 'pdo_mysql', - * 'primary' => array('user' => '', 'password' => '', 'host' => '', 'dbname' => ''), - * 'replica' => array( - * array('user' => 'replica1', 'password' => '', 'host' => '', 'dbname' => ''), - * array('user' => 'replica2', 'password' => '', 'host' => '', 'dbname' => ''), - * ) - * )); - * - * You can also pass 'driverOptions' and any other documented option to each of this drivers - * to pass additional information. - */ -class PrimaryReadReplicaConnection extends Connection -{ - /** - * Primary and Replica connection (one of the randomly picked replicas). - * - * @var DriverConnection[]|null[] - */ - protected $connections = ['primary' => null, 'replica' => null]; - - /** - * You can keep the replica connection and then switch back to it - * during the request if you know what you are doing. - * - * @var bool - */ - protected $keepReplica = false; - - /** - * Creates Primary Replica Connection. - * - * @internal The connection can be only instantiated by the driver manager. - * - * @param array $params - * @psalm-param Params $params - * - * @throws Exception - * @throws InvalidArgumentException - */ - public function __construct( - array $params, - Driver $driver, - ?Configuration $config = null, - ?EventManager $eventManager = null - ) { - if (! isset($params['replica'], $params['primary'])) { - throw new InvalidArgumentException('primary or replica configuration missing'); - } - - if (count($params['replica']) === 0) { - throw new InvalidArgumentException('You have to configure at least one replica.'); - } - - if (isset($params['driver'])) { - $params['primary']['driver'] = $params['driver']; - - foreach ($params['replica'] as $replicaKey => $replica) { - $params['replica'][$replicaKey]['driver'] = $params['driver']; - } - } - - $this->keepReplica = (bool) ($params['keepReplica'] ?? false); - - parent::__construct($params, $driver, $config, $eventManager); - } - - /** - * Checks if the connection is currently towards the primary or not. - */ - public function isConnectedToPrimary(): bool - { - return $this->_conn !== null && $this->_conn === $this->connections['primary']; - } - - /** - * @param string|null $connectionName - * - * @return bool - */ - public function connect($connectionName = null) - { - if ($connectionName !== null) { - throw new InvalidArgumentException( - 'Passing a connection name as first argument is not supported anymore.' - . ' Use ensureConnectedToPrimary()/ensureConnectedToReplica() instead.', - ); - } - - return $this->performConnect(); - } - - protected function performConnect(?string $connectionName = null): bool - { - $requestedConnectionChange = ($connectionName !== null); - $connectionName = $connectionName ?? 'replica'; - - if ($connectionName !== 'replica' && $connectionName !== 'primary') { - throw new InvalidArgumentException('Invalid option to connect(), only primary or replica allowed.'); - } - - // If we have a connection open, and this is not an explicit connection - // change request, then abort right here, because we are already done. - // This prevents writes to the replica in case of "keepReplica" option enabled. - if ($this->_conn !== null && ! $requestedConnectionChange) { - return false; - } - - $forcePrimaryAsReplica = false; - - if ($this->getTransactionNestingLevel() > 0) { - $connectionName = 'primary'; - $forcePrimaryAsReplica = true; - } - - if (isset($this->connections[$connectionName])) { - $this->_conn = $this->connections[$connectionName]; - - if ($forcePrimaryAsReplica && ! $this->keepReplica) { - $this->connections['replica'] = $this->_conn; - } - - return false; - } - - if ($connectionName === 'primary') { - $this->connections['primary'] = $this->_conn = $this->connectTo($connectionName); - - // Set replica connection to primary to avoid invalid reads - if (! $this->keepReplica) { - $this->connections['replica'] = $this->connections['primary']; - } - } else { - $this->connections['replica'] = $this->_conn = $this->connectTo($connectionName); - } - - if ($this->_eventManager->hasListeners(Events::postConnect)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated. Implement a middleware instead.', - Events::postConnect, - ); - - $eventArgs = new ConnectionEventArgs($this); - $this->_eventManager->dispatchEvent(Events::postConnect, $eventArgs); - } - - return true; - } - - /** - * Connects to the primary node of the database cluster. - * - * All following statements after this will be executed against the primary node. - */ - public function ensureConnectedToPrimary(): bool - { - return $this->performConnect('primary'); - } - - /** - * Connects to a replica node of the database cluster. - * - * All following statements after this will be executed against the replica node, - * unless the keepReplica option is set to false and a primary connection - * was already opened. - */ - public function ensureConnectedToReplica(): bool - { - return $this->performConnect('replica'); - } - - /** - * Connects to a specific connection. - * - * @param string $connectionName - * - * @return DriverConnection - * - * @throws Exception - */ - protected function connectTo($connectionName) - { - $params = $this->getParams(); - - $connectionParams = $this->chooseConnectionConfiguration($connectionName, $params); - - try { - return $this->_driver->connect($connectionParams); - } catch (DriverException $e) { - throw $this->convertException($e); - } - } - - /** - * @param string $connectionName - * @param mixed[] $params - * - * @return mixed - */ - protected function chooseConnectionConfiguration( - $connectionName, - #[SensitiveParameter] - $params - ) { - if ($connectionName === 'primary') { - return $params['primary']; - } - - $config = $params['replica'][array_rand($params['replica'])]; - - if (! isset($config['charset']) && isset($params['primary']['charset'])) { - $config['charset'] = $params['primary']['charset']; - } - - return $config; - } - - /** - * {@inheritDoc} - */ - public function executeStatement($sql, array $params = [], array $types = []) - { - $this->ensureConnectedToPrimary(); - - return parent::executeStatement($sql, $params, $types); - } - - /** - * {@inheritDoc} - */ - public function beginTransaction() - { - $this->ensureConnectedToPrimary(); - - return parent::beginTransaction(); - } - - /** - * {@inheritDoc} - */ - public function commit() - { - $this->ensureConnectedToPrimary(); - - return parent::commit(); - } - - /** - * {@inheritDoc} - */ - public function rollBack() - { - $this->ensureConnectedToPrimary(); - - return parent::rollBack(); - } - - /** - * {@inheritDoc} - */ - public function close() - { - unset($this->connections['primary'], $this->connections['replica']); - - parent::close(); - - $this->_conn = null; - $this->connections = ['primary' => null, 'replica' => null]; - } - - /** - * {@inheritDoc} - */ - public function createSavepoint($savepoint) - { - $this->ensureConnectedToPrimary(); - - parent::createSavepoint($savepoint); - } - - /** - * {@inheritDoc} - */ - public function releaseSavepoint($savepoint) - { - $this->ensureConnectedToPrimary(); - - parent::releaseSavepoint($savepoint); - } - - /** - * {@inheritDoc} - */ - public function rollbackSavepoint($savepoint) - { - $this->ensureConnectedToPrimary(); - - parent::rollbackSavepoint($savepoint); - } - - public function prepare(string $sql): Statement - { - $this->ensureConnectedToPrimary(); - - return parent::prepare($sql); - } -} diff --git a/vendor/doctrine/dbal/src/Driver.php b/vendor/doctrine/dbal/src/Driver.php deleted file mode 100644 index 46e422ba..00000000 --- a/vendor/doctrine/dbal/src/Driver.php +++ /dev/null @@ -1,57 +0,0 @@ - $params All connection parameters. - * @psalm-param Params $params All connection parameters. - * - * @return DriverConnection The database connection. - * - * @throws Exception - */ - public function connect( - #[SensitiveParameter] - array $params - ); - - /** - * Gets the DatabasePlatform instance that provides all the metadata about - * the platform this driver connects to. - * - * @return AbstractPlatform The database platform. - */ - public function getDatabasePlatform(); - - /** - * Gets the SchemaManager that can be used to inspect and change the underlying - * database schema of the platform this driver connects to. - * - * @deprecated Use {@link AbstractPlatform::createSchemaManager()} instead. - * - * @return AbstractSchemaManager - */ - public function getSchemaManager(Connection $conn, AbstractPlatform $platform); - - /** - * Gets the ExceptionConverter that can be used to convert driver-level exceptions into DBAL exceptions. - */ - public function getExceptionConverter(): ExceptionConverter; -} diff --git a/vendor/doctrine/dbal/src/Driver/API/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/ExceptionConverter.php deleted file mode 100644 index a7bf2713..00000000 --- a/vendor/doctrine/dbal/src/Driver/API/ExceptionConverter.php +++ /dev/null @@ -1,25 +0,0 @@ -getCode()) { - case -104: - return new SyntaxErrorException($exception, $query); - - case -203: - return new NonUniqueFieldNameException($exception, $query); - - case -204: - return new TableNotFoundException($exception, $query); - - case -206: - return new InvalidFieldNameException($exception, $query); - - case -407: - return new NotNullConstraintViolationException($exception, $query); - - case -530: - case -531: - case -532: - case -20356: - return new ForeignKeyConstraintViolationException($exception, $query); - - case -601: - return new TableExistsException($exception, $query); - - case -803: - return new UniqueConstraintViolationException($exception, $query); - - case -1336: - case -30082: - return new ConnectionException($exception, $query); - } - - return new DriverException($exception, $query); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php deleted file mode 100644 index 87d50aff..00000000 --- a/vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php +++ /dev/null @@ -1,119 +0,0 @@ -getCode()) { - case 1008: - return new DatabaseDoesNotExist($exception, $query); - - case 1213: - return new DeadlockException($exception, $query); - - case 1205: - return new LockWaitTimeoutException($exception, $query); - - case 1050: - return new TableExistsException($exception, $query); - - case 1051: - case 1146: - return new TableNotFoundException($exception, $query); - - case 1216: - case 1217: - case 1451: - case 1452: - case 1701: - return new ForeignKeyConstraintViolationException($exception, $query); - - case 1062: - case 1557: - case 1569: - case 1586: - return new UniqueConstraintViolationException($exception, $query); - - case 1054: - case 1166: - case 1611: - return new InvalidFieldNameException($exception, $query); - - case 1052: - case 1060: - case 1110: - return new NonUniqueFieldNameException($exception, $query); - - case 1064: - case 1149: - case 1287: - case 1341: - case 1342: - case 1343: - case 1344: - case 1382: - case 1479: - case 1541: - case 1554: - case 1626: - return new SyntaxErrorException($exception, $query); - - case 1044: - case 1045: - case 1046: - case 1049: - case 1095: - case 1142: - case 1143: - case 1227: - case 1370: - case 1429: - case 2002: - case 2005: - case 2054: - return new ConnectionException($exception, $query); - - case 2006: - return new ConnectionLost($exception, $query); - - case 1048: - case 1121: - case 1138: - case 1171: - case 1252: - case 1263: - case 1364: - case 1566: - return new NotNullConstraintViolationException($exception, $query); - } - - return new DriverException($exception, $query); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/API/OCI/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/OCI/ExceptionConverter.php deleted file mode 100644 index 4703a57d..00000000 --- a/vendor/doctrine/dbal/src/Driver/API/OCI/ExceptionConverter.php +++ /dev/null @@ -1,74 +0,0 @@ -getCode()) { - case 1: - case 2299: - case 38911: - return new UniqueConstraintViolationException($exception, $query); - - case 904: - return new InvalidFieldNameException($exception, $query); - - case 918: - case 960: - return new NonUniqueFieldNameException($exception, $query); - - case 923: - return new SyntaxErrorException($exception, $query); - - case 942: - return new TableNotFoundException($exception, $query); - - case 955: - return new TableExistsException($exception, $query); - - case 1017: - case 12545: - return new ConnectionException($exception, $query); - - case 1400: - return new NotNullConstraintViolationException($exception, $query); - - case 1918: - return new DatabaseDoesNotExist($exception, $query); - - case 2289: - case 2443: - case 4080: - return new DatabaseObjectNotFoundException($exception, $query); - - case 2266: - case 2291: - case 2292: - return new ForeignKeyConstraintViolationException($exception, $query); - } - - return new DriverException($exception, $query); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/API/PostgreSQL/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/PostgreSQL/ExceptionConverter.php deleted file mode 100644 index 2baca1ee..00000000 --- a/vendor/doctrine/dbal/src/Driver/API/PostgreSQL/ExceptionConverter.php +++ /dev/null @@ -1,89 +0,0 @@ -getSQLState()) { - case '40001': - case '40P01': - return new DeadlockException($exception, $query); - - case '0A000': - // Foreign key constraint violations during a TRUNCATE operation - // are considered "feature not supported" in PostgreSQL. - if (strpos($exception->getMessage(), 'truncate') !== false) { - return new ForeignKeyConstraintViolationException($exception, $query); - } - - break; - - case '23502': - return new NotNullConstraintViolationException($exception, $query); - - case '23503': - return new ForeignKeyConstraintViolationException($exception, $query); - - case '23505': - return new UniqueConstraintViolationException($exception, $query); - - case '3D000': - return new DatabaseDoesNotExist($exception, $query); - - case '3F000': - return new SchemaDoesNotExist($exception, $query); - - case '42601': - return new SyntaxErrorException($exception, $query); - - case '42702': - return new NonUniqueFieldNameException($exception, $query); - - case '42703': - return new InvalidFieldNameException($exception, $query); - - case '42P01': - return new TableNotFoundException($exception, $query); - - case '42P07': - return new TableExistsException($exception, $query); - - case '08006': - return new ConnectionException($exception, $query); - } - - // Prior to fixing https://bugs.php.net/bug.php?id=64705 (PHP 7.4.10), - // in some cases (mainly connection errors) the PDO exception wouldn't provide a SQLSTATE via its code. - // We have to match against the SQLSTATE in the error message in these cases. - if ($exception->getCode() === 7 && strpos($exception->getMessage(), 'SQLSTATE[08006]') !== false) { - return new ConnectionException($exception, $query); - } - - return new DriverException($exception, $query); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/API/SQLSrv/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/SQLSrv/ExceptionConverter.php deleted file mode 100644 index d0e8e9f4..00000000 --- a/vendor/doctrine/dbal/src/Driver/API/SQLSrv/ExceptionConverter.php +++ /dev/null @@ -1,69 +0,0 @@ -getCode()) { - case 102: - return new SyntaxErrorException($exception, $query); - - case 207: - return new InvalidFieldNameException($exception, $query); - - case 208: - return new TableNotFoundException($exception, $query); - - case 209: - return new NonUniqueFieldNameException($exception, $query); - - case 515: - return new NotNullConstraintViolationException($exception, $query); - - case 547: - case 4712: - return new ForeignKeyConstraintViolationException($exception, $query); - - case 2601: - case 2627: - return new UniqueConstraintViolationException($exception, $query); - - case 2714: - return new TableExistsException($exception, $query); - - case 3701: - case 15151: - return new DatabaseObjectNotFoundException($exception, $query); - - case 11001: - case 18456: - return new ConnectionException($exception, $query); - } - - return new DriverException($exception, $query); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/API/SQLite/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/SQLite/ExceptionConverter.php deleted file mode 100644 index 9e67155a..00000000 --- a/vendor/doctrine/dbal/src/Driver/API/SQLite/ExceptionConverter.php +++ /dev/null @@ -1,85 +0,0 @@ -getMessage(), 'database is locked') !== false) { - return new LockWaitTimeoutException($exception, $query); - } - - if ( - strpos($exception->getMessage(), 'must be unique') !== false || - strpos($exception->getMessage(), 'is not unique') !== false || - strpos($exception->getMessage(), 'are not unique') !== false || - strpos($exception->getMessage(), 'UNIQUE constraint failed') !== false - ) { - return new UniqueConstraintViolationException($exception, $query); - } - - if ( - strpos($exception->getMessage(), 'may not be NULL') !== false || - strpos($exception->getMessage(), 'NOT NULL constraint failed') !== false - ) { - return new NotNullConstraintViolationException($exception, $query); - } - - if (strpos($exception->getMessage(), 'no such table:') !== false) { - return new TableNotFoundException($exception, $query); - } - - if (strpos($exception->getMessage(), 'already exists') !== false) { - return new TableExistsException($exception, $query); - } - - if (strpos($exception->getMessage(), 'has no column named') !== false) { - return new InvalidFieldNameException($exception, $query); - } - - if (strpos($exception->getMessage(), 'ambiguous column name') !== false) { - return new NonUniqueFieldNameException($exception, $query); - } - - if (strpos($exception->getMessage(), 'syntax error') !== false) { - return new SyntaxErrorException($exception, $query); - } - - if (strpos($exception->getMessage(), 'attempt to write a readonly database') !== false) { - return new ReadOnlyException($exception, $query); - } - - if (strpos($exception->getMessage(), 'unable to open database file') !== false) { - return new ConnectionException($exception, $query); - } - - if (strpos($exception->getMessage(), 'FOREIGN KEY constraint failed') !== false) { - return new ForeignKeyConstraintViolationException($exception, $query); - } - - return new DriverException($exception, $query); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/API/SQLite/UserDefinedFunctions.php b/vendor/doctrine/dbal/src/Driver/API/SQLite/UserDefinedFunctions.php deleted file mode 100644 index 3779c8ba..00000000 --- a/vendor/doctrine/dbal/src/Driver/API/SQLite/UserDefinedFunctions.php +++ /dev/null @@ -1,80 +0,0 @@ - ['callback' => [SqlitePlatform::class, 'udfSqrt'], 'numArgs' => 1], - 'mod' => ['callback' => [SqlitePlatform::class, 'udfMod'], 'numArgs' => 2], - 'locate' => ['callback' => [SqlitePlatform::class, 'udfLocate'], 'numArgs' => -1], - ]; - - /** - * @param callable(string, callable, int): bool $callback - * @param array $additionalFunctions - */ - public static function register(callable $callback, array $additionalFunctions = []): void - { - $userDefinedFunctions = array_merge(self::DEFAULT_FUNCTIONS, $additionalFunctions); - - foreach ($userDefinedFunctions as $function => $data) { - $callback($function, $data['callback'], $data['numArgs']); - } - } - - /** - * User-defined function that implements MOD(). - * - * @param int $a - * @param int $b - */ - public static function mod($a, $b): int - { - return $a % $b; - } - - /** - * User-defined function that implements LOCATE(). - * - * @param string $str - * @param string $substr - * @param int $offset - */ - public static function locate($str, $substr, $offset = 0): int - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5749', - 'Relying on DBAL\'s emulated LOCATE() function is deprecated. ' - . 'Use INSTR() or %s::getLocateExpression() instead.', - AbstractPlatform::class, - ); - - // SQL's LOCATE function works on 1-based positions, while PHP's strpos works on 0-based positions. - // So we have to make them compatible if an offset is given. - if ($offset > 0) { - $offset -= 1; - } - - $pos = strpos($str, $substr, $offset); - - if ($pos !== false) { - return $pos + 1; - } - - return 0; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/AbstractDB2Driver.php b/vendor/doctrine/dbal/src/Driver/AbstractDB2Driver.php deleted file mode 100644 index 79efb865..00000000 --- a/vendor/doctrine/dbal/src/Driver/AbstractDB2Driver.php +++ /dev/null @@ -1,100 +0,0 @@ -getVersionNumber($version), '11.1', '>=')) { - return new DB2111Platform(); - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5156', - 'IBM DB2 < 11.1 support is deprecated and will be removed in DBAL 4.' - . ' Consider upgrading to IBM DB2 11.1 or later.', - ); - - return $this->getDatabasePlatform(); - } - - /** - * Detects IBM DB2 server version - * - * @param string $versionString Version string as returned by IBM DB2 server, i.e. 'DB2/LINUXX8664 11.5.8.0' - * - * @throws DBALException - */ - private function getVersionNumber(string $versionString): string - { - if ( - preg_match( - '/^(?:[^\s]+\s)?(?P\d+)\.(?P\d+)\.(?P\d+)/i', - $versionString, - $versionParts, - ) === 0 - ) { - throw DBALException::invalidPlatformVersionSpecified( - $versionString, - '^(?:[^\s]+\s)?..', - ); - } - - return $versionParts['major'] . '.' . $versionParts['minor'] . '.' . $versionParts['patch']; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/AbstractException.php b/vendor/doctrine/dbal/src/Driver/AbstractException.php deleted file mode 100644 index 389f82e7..00000000 --- a/vendor/doctrine/dbal/src/Driver/AbstractException.php +++ /dev/null @@ -1,44 +0,0 @@ -sqlState = $sqlState; - } - - /** - * {@inheritDoc} - */ - public function getSQLState() - { - return $this->sqlState; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/AbstractMySQLDriver.php b/vendor/doctrine/dbal/src/Driver/AbstractMySQLDriver.php deleted file mode 100644 index 83159a54..00000000 --- a/vendor/doctrine/dbal/src/Driver/AbstractMySQLDriver.php +++ /dev/null @@ -1,209 +0,0 @@ -getMariaDbMysqlVersionNumber($version); - if (version_compare($mariaDbVersion, '10.6.0', '>=')) { - return new MariaDb1060Platform(); - } - - if (version_compare($mariaDbVersion, '10.5.2', '>=')) { - return new MariaDb1052Platform(); - } - - if (version_compare($mariaDbVersion, '10.4.3', '>=')) { - return new MariaDb1043Platform(); - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6110', - 'Support for MariaDB < 10.4 is deprecated and will be removed in DBAL 4.' - . ' Consider upgrading to a more recent version of MariaDB.', - ); - - if (version_compare($mariaDbVersion, '10.2.7', '>=')) { - return new MariaDb1027Platform(); - } - } else { - $oracleMysqlVersion = $this->getOracleMysqlVersionNumber($version); - if (version_compare($oracleMysqlVersion, '8', '>=')) { - if (! version_compare($version, '8.0.0', '>=')) { - Deprecation::trigger( - 'doctrine/orm', - 'https://github.com/doctrine/dbal/pull/5779', - 'Version detection logic for MySQL will change in DBAL 4. ' - . 'Please specify the version as the server reports it, e.g. "8.0.31" instead of "8".', - ); - } - - return new MySQL80Platform(); - } - - if (version_compare($oracleMysqlVersion, '5.7.9', '>=')) { - if (! version_compare($version, '5.7.9', '>=')) { - Deprecation::trigger( - 'doctrine/orm', - 'https://github.com/doctrine/dbal/pull/5779', - 'Version detection logic for MySQL will change in DBAL 4. ' - . 'Please specify the version as the server reports it, e.g. "5.7.40" instead of "5.7".', - ); - } - - return new MySQL57Platform(); - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5072', - 'MySQL 5.6 support is deprecated and will be removed in DBAL 4.' - . ' Consider upgrading to MySQL 5.7 or later.', - ); - } - - return $this->getDatabasePlatform(); - } - - /** - * Get a normalized 'version number' from the server string - * returned by Oracle MySQL servers. - * - * @param string $versionString Version string returned by the driver, i.e. '5.7.10' - * - * @throws Exception - */ - private function getOracleMysqlVersionNumber(string $versionString): string - { - if ( - preg_match( - '/^(?P\d+)(?:\.(?P\d+)(?:\.(?P\d+))?)?/', - $versionString, - $versionParts, - ) === 0 - ) { - throw Exception::invalidPlatformVersionSpecified( - $versionString, - '..', - ); - } - - $majorVersion = $versionParts['major']; - $minorVersion = $versionParts['minor'] ?? 0; - $patchVersion = $versionParts['patch'] ?? null; - - if ($majorVersion === '5' && $minorVersion === '7') { - $patchVersion ??= '9'; - } - - return $majorVersion . '.' . $minorVersion . '.' . $patchVersion; - } - - /** - * Detect MariaDB server version, including hack for some mariadb distributions - * that starts with the prefix '5.5.5-' - * - * @param string $versionString Version string as returned by mariadb server, i.e. '5.5.5-Mariadb-10.0.8-xenial' - * - * @throws Exception - */ - private function getMariaDbMysqlVersionNumber(string $versionString): string - { - if (stripos($versionString, 'MariaDB') === 0) { - Deprecation::trigger( - 'doctrine/orm', - 'https://github.com/doctrine/dbal/pull/5779', - 'Version detection logic for MySQL will change in DBAL 4. ' - . 'Please specify the version as the server reports it, ' - . 'e.g. "10.9.3-MariaDB" instead of "mariadb-10.9".', - ); - } - - if ( - preg_match( - '/^(?:5\.5\.5-)?(mariadb-)?(?P\d+)\.(?P\d+)\.(?P\d+)/i', - $versionString, - $versionParts, - ) === 0 - ) { - throw Exception::invalidPlatformVersionSpecified( - $versionString, - '^(?:5\.5\.5-)?(mariadb-)?..', - ); - } - - return $versionParts['major'] . '.' . $versionParts['minor'] . '.' . $versionParts['patch']; - } - - /** - * {@inheritDoc} - * - * @return AbstractMySQLPlatform - */ - public function getDatabasePlatform() - { - return new MySQLPlatform(); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@link AbstractMySQLPlatform::createSchemaManager()} instead. - * - * @return MySQLSchemaManager - */ - public function getSchemaManager(Connection $conn, AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5458', - 'AbstractMySQLDriver::getSchemaManager() is deprecated.' - . ' Use MySQLPlatform::createSchemaManager() instead.', - ); - - assert($platform instanceof AbstractMySQLPlatform); - - return new MySQLSchemaManager($conn, $platform); - } - - public function getExceptionConverter(): ExceptionConverter - { - return new MySQL\ExceptionConverter(); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/AbstractOracleDriver.php b/vendor/doctrine/dbal/src/Driver/AbstractOracleDriver.php deleted file mode 100644 index b0f92453..00000000 --- a/vendor/doctrine/dbal/src/Driver/AbstractOracleDriver.php +++ /dev/null @@ -1,65 +0,0 @@ - $params The connection parameters to return the Easy Connect String for. - * - * @return string - */ - protected function getEasyConnectString(array $params) - { - return (string) EasyConnectString::fromConnectionParameters($params); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/AbstractOracleDriver/EasyConnectString.php b/vendor/doctrine/dbal/src/Driver/AbstractOracleDriver/EasyConnectString.php deleted file mode 100644 index 91bc6a7e..00000000 --- a/vendor/doctrine/dbal/src/Driver/AbstractOracleDriver/EasyConnectString.php +++ /dev/null @@ -1,116 +0,0 @@ -string = $string; - } - - public function __toString(): string - { - return $this->string; - } - - /** - * Creates the object from an array representation - * - * @param mixed[] $params - */ - public static function fromArray(array $params): self - { - return new self(self::renderParams($params)); - } - - /** - * Creates the object from the given DBAL connection parameters. - * - * @param mixed[] $params - */ - public static function fromConnectionParameters(array $params): self - { - if (isset($params['connectstring'])) { - return new self($params['connectstring']); - } - - if (! isset($params['host'])) { - return new self($params['dbname'] ?? ''); - } - - $connectData = []; - - if (isset($params['servicename']) || isset($params['dbname'])) { - $serviceKey = 'SID'; - - if (isset($params['service'])) { - $serviceKey = 'SERVICE_NAME'; - } - - $serviceName = $params['servicename'] ?? $params['dbname']; - - $connectData[$serviceKey] = $serviceName; - } - - if (isset($params['instancename'])) { - $connectData['INSTANCE_NAME'] = $params['instancename']; - } - - if (! empty($params['pooled'])) { - $connectData['SERVER'] = 'POOLED'; - } - - return self::fromArray([ - 'DESCRIPTION' => [ - 'ADDRESS' => [ - 'PROTOCOL' => 'TCP', - 'HOST' => $params['host'], - 'PORT' => $params['port'] ?? 1521, - ], - 'CONNECT_DATA' => $connectData, - ], - ]); - } - - /** @param mixed[] $params */ - private static function renderParams(array $params): string - { - $chunks = []; - - foreach ($params as $key => $value) { - $string = self::renderValue($value); - - if ($string === '') { - continue; - } - - $chunks[] = sprintf('(%s=%s)', $key, $string); - } - - return implode('', $chunks); - } - - /** @param mixed $value */ - private static function renderValue($value): string - { - if (is_array($value)) { - return self::renderParams($value); - } - - return (string) $value; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/AbstractPostgreSQLDriver.php b/vendor/doctrine/dbal/src/Driver/AbstractPostgreSQLDriver.php deleted file mode 100644 index 099630d3..00000000 --- a/vendor/doctrine/dbal/src/Driver/AbstractPostgreSQLDriver.php +++ /dev/null @@ -1,88 +0,0 @@ -\d+)(?:\.(?P\d+)(?:\.(?P\d+))?)?/', $version, $versionParts) === 0) { - throw Exception::invalidPlatformVersionSpecified( - $version, - '..', - ); - } - - $majorVersion = $versionParts['major']; - $minorVersion = $versionParts['minor'] ?? 0; - $patchVersion = $versionParts['patch'] ?? 0; - $version = $majorVersion . '.' . $minorVersion . '.' . $patchVersion; - - if (version_compare($version, '10.0', '>=')) { - return new PostgreSQL100Platform(); - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5060', - 'PostgreSQL 9 support is deprecated and will be removed in DBAL 4.' - . ' Consider upgrading to Postgres 10 or later.', - ); - - return new PostgreSQL94Platform(); - } - - /** - * {@inheritDoc} - */ - public function getDatabasePlatform() - { - return new PostgreSQL94Platform(); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@link PostgreSQLPlatform::createSchemaManager()} instead. - */ - public function getSchemaManager(Connection $conn, AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5458', - 'AbstractPostgreSQLDriver::getSchemaManager() is deprecated.' - . ' Use PostgreSQLPlatform::createSchemaManager() instead.', - ); - - assert($platform instanceof PostgreSQLPlatform); - - return new PostgreSQLSchemaManager($conn, $platform); - } - - public function getExceptionConverter(): ExceptionConverter - { - return new PostgreSQL\ExceptionConverter(); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/AbstractSQLServerDriver.php b/vendor/doctrine/dbal/src/Driver/AbstractSQLServerDriver.php deleted file mode 100644 index b9a99552..00000000 --- a/vendor/doctrine/dbal/src/Driver/AbstractSQLServerDriver.php +++ /dev/null @@ -1,53 +0,0 @@ -exec('PRAGMA foreign_keys=ON'); - - return $connection; - } - }; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/Connection.php b/vendor/doctrine/dbal/src/Driver/Connection.php deleted file mode 100644 index 2f460fd1..00000000 --- a/vendor/doctrine/dbal/src/Driver/Connection.php +++ /dev/null @@ -1,86 +0,0 @@ -fetchNumeric(); - - if ($row === false) { - return false; - } - - return $row[0]; - } - - /** - * @return list> - * - * @throws Exception - */ - public static function fetchAllNumeric(Result $result): array - { - $rows = []; - - while (($row = $result->fetchNumeric()) !== false) { - $rows[] = $row; - } - - return $rows; - } - - /** - * @return list> - * - * @throws Exception - */ - public static function fetchAllAssociative(Result $result): array - { - $rows = []; - - while (($row = $result->fetchAssociative()) !== false) { - $rows[] = $row; - } - - return $rows; - } - - /** - * @return list - * - * @throws Exception - */ - public static function fetchFirstColumn(Result $result): array - { - $rows = []; - - while (($row = $result->fetchOne()) !== false) { - $rows[] = $row; - } - - return $rows; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/IBMDB2/Connection.php b/vendor/doctrine/dbal/src/Driver/IBMDB2/Connection.php deleted file mode 100644 index dfb11c23..00000000 --- a/vendor/doctrine/dbal/src/Driver/IBMDB2/Connection.php +++ /dev/null @@ -1,141 +0,0 @@ -connection = $connection; - } - - /** - * {@inheritDoc} - */ - public function getServerVersion() - { - $serverInfo = db2_server_info($this->connection); - assert($serverInfo instanceof stdClass); - - return $serverInfo->DBMS_VER; - } - - public function prepare(string $sql): DriverStatement - { - $stmt = @db2_prepare($this->connection, $sql); - - if ($stmt === false) { - throw PrepareFailed::new(error_get_last()); - } - - return new Statement($stmt); - } - - public function query(string $sql): ResultInterface - { - return $this->prepare($sql)->execute(); - } - - /** - * {@inheritDoc} - */ - public function quote($value, $type = ParameterType::STRING) - { - $value = db2_escape_string($value); - - if ($type === ParameterType::INTEGER) { - return $value; - } - - return "'" . $value . "'"; - } - - public function exec(string $sql): int - { - $stmt = @db2_exec($this->connection, $sql); - - if ($stmt === false) { - throw StatementError::new(); - } - - return db2_num_rows($stmt); - } - - /** - * {@inheritDoc} - */ - public function lastInsertId($name = null) - { - if ($name !== null) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4687', - 'The usage of Connection::lastInsertId() with a sequence name is deprecated.', - ); - } - - return db2_last_insert_id($this->connection) ?? false; - } - - public function beginTransaction(): bool - { - return db2_autocommit($this->connection, DB2_AUTOCOMMIT_OFF); - } - - public function commit(): bool - { - if (! db2_commit($this->connection)) { - throw ConnectionError::new($this->connection); - } - - return db2_autocommit($this->connection, DB2_AUTOCOMMIT_ON); - } - - public function rollBack(): bool - { - if (! db2_rollback($this->connection)) { - throw ConnectionError::new($this->connection); - } - - return db2_autocommit($this->connection, DB2_AUTOCOMMIT_ON); - } - - /** @return resource */ - public function getNativeConnection() - { - return $this->connection; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/IBMDB2/DataSourceName.php b/vendor/doctrine/dbal/src/Driver/IBMDB2/DataSourceName.php deleted file mode 100644 index 124a6f6d..00000000 --- a/vendor/doctrine/dbal/src/Driver/IBMDB2/DataSourceName.php +++ /dev/null @@ -1,84 +0,0 @@ -string = $string; - } - - public function toString(): string - { - return $this->string; - } - - /** - * Creates the object from an array representation - * - * @param array $params - */ - public static function fromArray( - #[SensitiveParameter] - array $params - ): self { - $chunks = []; - - foreach ($params as $key => $value) { - $chunks[] = sprintf('%s=%s', $key, $value); - } - - return new self(implode(';', $chunks)); - } - - /** - * Creates the object from the given DBAL connection parameters. - * - * @param array $params - */ - public static function fromConnectionParameters( - #[SensitiveParameter] - array $params - ): self { - if (isset($params['dbname']) && strpos($params['dbname'], '=') !== false) { - return new self($params['dbname']); - } - - $dsnParams = []; - - foreach ( - [ - 'host' => 'HOSTNAME', - 'port' => 'PORT', - 'protocol' => 'PROTOCOL', - 'dbname' => 'DATABASE', - 'user' => 'UID', - 'password' => 'PWD', - ] as $dbalParam => $dsnParam - ) { - if (! isset($params[$dbalParam])) { - continue; - } - - $dsnParams[$dsnParam] = $params[$dbalParam]; - } - - return self::fromArray($dsnParams); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/IBMDB2/Driver.php b/vendor/doctrine/dbal/src/Driver/IBMDB2/Driver.php deleted file mode 100644 index 7650db5f..00000000 --- a/vendor/doctrine/dbal/src/Driver/IBMDB2/Driver.php +++ /dev/null @@ -1,41 +0,0 @@ -toString(); - - $username = $params['user'] ?? ''; - $password = $params['password'] ?? ''; - $driverOptions = $params['driverOptions'] ?? []; - - if (! empty($params['persistent'])) { - $connection = db2_pconnect($dataSourceName, $username, $password, $driverOptions); - } else { - $connection = db2_connect($dataSourceName, $username, $password, $driverOptions); - } - - if ($connection === false) { - throw ConnectionFailed::new(); - } - - return new Connection($connection); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/IBMDB2/Exception/CannotCopyStreamToStream.php b/vendor/doctrine/dbal/src/Driver/IBMDB2/Exception/CannotCopyStreamToStream.php deleted file mode 100644 index 231c9d47..00000000 --- a/vendor/doctrine/dbal/src/Driver/IBMDB2/Exception/CannotCopyStreamToStream.php +++ /dev/null @@ -1,27 +0,0 @@ -statement = $statement; - } - - /** - * {@inheritDoc} - */ - public function fetchNumeric() - { - $row = @db2_fetch_array($this->statement); - - if ($row === false && db2_stmt_error($this->statement) !== '02000') { - throw StatementError::new($this->statement); - } - - return $row; - } - - /** - * {@inheritDoc} - */ - public function fetchAssociative() - { - $row = @db2_fetch_assoc($this->statement); - - if ($row === false && db2_stmt_error($this->statement) !== '02000') { - throw StatementError::new($this->statement); - } - - return $row; - } - - /** - * {@inheritDoc} - */ - public function fetchOne() - { - return FetchUtils::fetchOne($this); - } - - /** - * {@inheritDoc} - */ - public function fetchAllNumeric(): array - { - return FetchUtils::fetchAllNumeric($this); - } - - /** - * {@inheritDoc} - */ - public function fetchAllAssociative(): array - { - return FetchUtils::fetchAllAssociative($this); - } - - /** - * {@inheritDoc} - */ - public function fetchFirstColumn(): array - { - return FetchUtils::fetchFirstColumn($this); - } - - public function rowCount(): int - { - return @db2_num_rows($this->statement); - } - - public function columnCount(): int - { - $count = db2_num_fields($this->statement); - - if ($count !== false) { - return $count; - } - - return 0; - } - - public function free(): void - { - db2_free_result($this->statement); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/IBMDB2/Statement.php b/vendor/doctrine/dbal/src/Driver/IBMDB2/Statement.php deleted file mode 100644 index 699e236d..00000000 --- a/vendor/doctrine/dbal/src/Driver/IBMDB2/Statement.php +++ /dev/null @@ -1,220 +0,0 @@ - - */ - private array $lobs = []; - - /** - * @internal The statement can be only instantiated by its driver connection. - * - * @param resource $stmt - */ - public function __construct($stmt) - { - $this->stmt = $stmt; - } - - /** - * {@inheritDoc} - */ - public function bindValue($param, $value, $type = ParameterType::STRING): bool - { - assert(is_int($param)); - - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindValue() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - return $this->bindParam($param, $value, $type); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see bindValue()} instead. - */ - public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null): bool - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5563', - '%s is deprecated. Use bindValue() instead.', - __METHOD__, - ); - - assert(is_int($param)); - - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindParam() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - switch ($type) { - case ParameterType::INTEGER: - $this->bind($param, $variable, DB2_PARAM_IN, DB2_LONG); - break; - - case ParameterType::LARGE_OBJECT: - $this->lobs[$param] = &$variable; - break; - - default: - $this->bind($param, $variable, DB2_PARAM_IN, DB2_CHAR); - break; - } - - return true; - } - - /** - * @param int $position Parameter position - * @param mixed $variable - * - * @throws Exception - */ - private function bind($position, &$variable, int $parameterType, int $dataType): void - { - $this->parameters[$position] =& $variable; - - if (! db2_bind_param($this->stmt, $position, '', $parameterType, $dataType)) { - throw StatementError::new($this->stmt); - } - } - - /** - * {@inheritDoc} - */ - public function execute($params = null): ResultInterface - { - if ($params !== null) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5556', - 'Passing $params to Statement::execute() is deprecated. Bind parameters using' - . ' Statement::bindParam() or Statement::bindValue() instead.', - ); - } - - $handles = $this->bindLobs(); - - $result = @db2_execute($this->stmt, $params ?? $this->parameters); - - foreach ($handles as $handle) { - fclose($handle); - } - - $this->lobs = []; - - if ($result === false) { - throw StatementError::new($this->stmt); - } - - return new Result($this->stmt); - } - - /** - * @return list - * - * @throws Exception - */ - private function bindLobs(): array - { - $handles = []; - - foreach ($this->lobs as $param => $value) { - if (is_resource($value)) { - $handle = $handles[] = $this->createTemporaryFile(); - $path = stream_get_meta_data($handle)['uri']; - - $this->copyStreamToStream($value, $handle); - - $this->bind($param, $path, DB2_PARAM_FILE, DB2_BINARY); - } else { - $this->bind($param, $value, DB2_PARAM_IN, DB2_CHAR); - } - - unset($value); - } - - return $handles; - } - - /** - * @return resource - * - * @throws Exception - */ - private function createTemporaryFile() - { - $handle = @tmpfile(); - - if ($handle === false) { - throw CannotCreateTemporaryFile::new(error_get_last()); - } - - return $handle; - } - - /** - * @param resource $source - * @param resource $target - * - * @throws Exception - */ - private function copyStreamToStream($source, $target): void - { - if (@stream_copy_to_stream($source, $target) === false) { - throw CannotCopyStreamToStream::new(error_get_last()); - } - } -} diff --git a/vendor/doctrine/dbal/src/Driver/Middleware.php b/vendor/doctrine/dbal/src/Driver/Middleware.php deleted file mode 100644 index 4629d9a8..00000000 --- a/vendor/doctrine/dbal/src/Driver/Middleware.php +++ /dev/null @@ -1,12 +0,0 @@ -wrappedConnection = $wrappedConnection; - } - - public function prepare(string $sql): Statement - { - return $this->wrappedConnection->prepare($sql); - } - - public function query(string $sql): Result - { - return $this->wrappedConnection->query($sql); - } - - /** - * {@inheritDoc} - */ - public function quote($value, $type = ParameterType::STRING) - { - return $this->wrappedConnection->quote($value, $type); - } - - public function exec(string $sql): int - { - return $this->wrappedConnection->exec($sql); - } - - /** - * {@inheritDoc} - */ - public function lastInsertId($name = null) - { - if ($name !== null) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4687', - 'The usage of Connection::lastInsertId() with a sequence name is deprecated.', - ); - } - - return $this->wrappedConnection->lastInsertId($name); - } - - /** - * {@inheritDoc} - */ - public function beginTransaction() - { - return $this->wrappedConnection->beginTransaction(); - } - - /** - * {@inheritDoc} - */ - public function commit() - { - return $this->wrappedConnection->commit(); - } - - /** - * {@inheritDoc} - */ - public function rollBack() - { - return $this->wrappedConnection->rollBack(); - } - - /** - * {@inheritDoc} - */ - public function getServerVersion() - { - if (! $this->wrappedConnection instanceof ServerInfoAwareConnection) { - throw new LogicException('The underlying connection is not a ServerInfoAwareConnection'); - } - - return $this->wrappedConnection->getServerVersion(); - } - - /** @return resource|object */ - public function getNativeConnection() - { - if (! method_exists($this->wrappedConnection, 'getNativeConnection')) { - throw new LogicException(sprintf( - 'The driver connection %s does not support accessing the native connection.', - get_class($this->wrappedConnection), - )); - } - - return $this->wrappedConnection->getNativeConnection(); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/Middleware/AbstractDriverMiddleware.php b/vendor/doctrine/dbal/src/Driver/Middleware/AbstractDriverMiddleware.php deleted file mode 100644 index 1c9d4309..00000000 --- a/vendor/doctrine/dbal/src/Driver/Middleware/AbstractDriverMiddleware.php +++ /dev/null @@ -1,73 +0,0 @@ -wrappedDriver = $wrappedDriver; - } - - /** - * {@inheritDoc} - */ - public function connect( - #[SensitiveParameter] - array $params - ) { - return $this->wrappedDriver->connect($params); - } - - /** - * {@inheritDoc} - */ - public function getDatabasePlatform() - { - return $this->wrappedDriver->getDatabasePlatform(); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@link AbstractPlatform::createSchemaManager()} instead. - */ - public function getSchemaManager(Connection $conn, AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5458', - 'AbstractDriverMiddleware::getSchemaManager() is deprecated.' - . ' Use AbstractPlatform::createSchemaManager() instead.', - ); - - return $this->wrappedDriver->getSchemaManager($conn, $platform); - } - - public function getExceptionConverter(): ExceptionConverter - { - return $this->wrappedDriver->getExceptionConverter(); - } - - /** - * {@inheritDoc} - */ - public function createDatabasePlatformForVersion($version) - { - if ($this->wrappedDriver instanceof VersionAwarePlatformDriver) { - return $this->wrappedDriver->createDatabasePlatformForVersion($version); - } - - return $this->wrappedDriver->getDatabasePlatform(); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/Middleware/AbstractResultMiddleware.php b/vendor/doctrine/dbal/src/Driver/Middleware/AbstractResultMiddleware.php deleted file mode 100644 index 198d39b0..00000000 --- a/vendor/doctrine/dbal/src/Driver/Middleware/AbstractResultMiddleware.php +++ /dev/null @@ -1,78 +0,0 @@ -wrappedResult = $result; - } - - /** - * {@inheritDoc} - */ - public function fetchNumeric() - { - return $this->wrappedResult->fetchNumeric(); - } - - /** - * {@inheritDoc} - */ - public function fetchAssociative() - { - return $this->wrappedResult->fetchAssociative(); - } - - /** - * {@inheritDoc} - */ - public function fetchOne() - { - return $this->wrappedResult->fetchOne(); - } - - /** - * {@inheritDoc} - */ - public function fetchAllNumeric(): array - { - return $this->wrappedResult->fetchAllNumeric(); - } - - /** - * {@inheritDoc} - */ - public function fetchAllAssociative(): array - { - return $this->wrappedResult->fetchAllAssociative(); - } - - /** - * {@inheritDoc} - */ - public function fetchFirstColumn(): array - { - return $this->wrappedResult->fetchFirstColumn(); - } - - public function rowCount(): int - { - return $this->wrappedResult->rowCount(); - } - - public function columnCount(): int - { - return $this->wrappedResult->columnCount(); - } - - public function free(): void - { - $this->wrappedResult->free(); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/Middleware/AbstractStatementMiddleware.php b/vendor/doctrine/dbal/src/Driver/Middleware/AbstractStatementMiddleware.php deleted file mode 100644 index 6cd2f8f0..00000000 --- a/vendor/doctrine/dbal/src/Driver/Middleware/AbstractStatementMiddleware.php +++ /dev/null @@ -1,71 +0,0 @@ -wrappedStatement = $wrappedStatement; - } - - /** - * {@inheritDoc} - */ - public function bindValue($param, $value, $type = ParameterType::STRING) - { - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindValue() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - return $this->wrappedStatement->bindValue($param, $value, $type); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see bindValue()} instead. - */ - public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5563', - '%s is deprecated. Use bindValue() instead.', - __METHOD__, - ); - - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindParam() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - return $this->wrappedStatement->bindParam($param, $variable, $type, $length); - } - - /** - * {@inheritDoc} - */ - public function execute($params = null): Result - { - return $this->wrappedStatement->execute($params); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Connection.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Connection.php deleted file mode 100644 index d492684c..00000000 --- a/vendor/doctrine/dbal/src/Driver/Mysqli/Connection.php +++ /dev/null @@ -1,141 +0,0 @@ -connection = $connection; - } - - /** - * Retrieves mysqli native resource handle. - * - * Could be used if part of your application is not using DBAL. - * - * @deprecated Call {@see getNativeConnection()} instead. - */ - public function getWrappedResourceHandle(): mysqli - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5037', - '%s is deprecated, call getNativeConnection() instead.', - __METHOD__, - ); - - return $this->getNativeConnection(); - } - - public function getServerVersion(): string - { - return $this->connection->get_server_info(); - } - - public function prepare(string $sql): DriverStatement - { - try { - $stmt = $this->connection->prepare($sql); - } catch (mysqli_sql_exception $e) { - throw ConnectionError::upcast($e); - } - - if ($stmt === false) { - throw ConnectionError::new($this->connection); - } - - return new Statement($stmt); - } - - public function query(string $sql): ResultInterface - { - return $this->prepare($sql)->execute(); - } - - /** - * {@inheritDoc} - */ - public function quote($value, $type = ParameterType::STRING) - { - return "'" . $this->connection->escape_string($value) . "'"; - } - - public function exec(string $sql): int - { - try { - $result = $this->connection->query($sql); - } catch (mysqli_sql_exception $e) { - throw ConnectionError::upcast($e); - } - - if ($result === false) { - throw ConnectionError::new($this->connection); - } - - return $this->connection->affected_rows; - } - - /** - * {@inheritDoc} - */ - public function lastInsertId($name = null) - { - if ($name !== null) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4687', - 'The usage of Connection::lastInsertId() with a sequence name is deprecated.', - ); - } - - return $this->connection->insert_id; - } - - public function beginTransaction(): bool - { - $this->connection->begin_transaction(); - - return true; - } - - public function commit(): bool - { - try { - return $this->connection->commit(); - } catch (mysqli_sql_exception $e) { - return false; - } - } - - public function rollBack(): bool - { - try { - return $this->connection->rollback(); - } catch (mysqli_sql_exception $e) { - return false; - } - } - - public function getNativeConnection(): mysqli - { - return $this->connection; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Driver.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Driver.php deleted file mode 100644 index 4f518687..00000000 --- a/vendor/doctrine/dbal/src/Driver/Mysqli/Driver.php +++ /dev/null @@ -1,117 +0,0 @@ -compilePreInitializers($params) as $initializer) { - $initializer->initialize($connection); - } - - try { - $success = @$connection->real_connect( - $host, - $params['user'] ?? null, - $params['password'] ?? null, - $params['dbname'] ?? null, - $params['port'] ?? null, - $params['unix_socket'] ?? null, - $params['driverOptions'][Connection::OPTION_FLAGS] ?? 0, - ); - } catch (mysqli_sql_exception $e) { - throw ConnectionFailed::upcast($e); - } - - if (! $success) { - throw ConnectionFailed::new($connection); - } - - foreach ($this->compilePostInitializers($params) as $initializer) { - $initializer->initialize($connection); - } - - return new Connection($connection); - } - - /** - * @param array $params - * - * @return Generator - */ - private function compilePreInitializers( - #[SensitiveParameter] - array $params - ): Generator { - unset($params['driverOptions'][Connection::OPTION_FLAGS]); - - if (isset($params['driverOptions']) && $params['driverOptions'] !== []) { - yield new Options($params['driverOptions']); - } - - if ( - ! isset($params['ssl_key']) && - ! isset($params['ssl_cert']) && - ! isset($params['ssl_ca']) && - ! isset($params['ssl_capath']) && - ! isset($params['ssl_cipher']) - ) { - return; - } - - yield new Secure( - $params['ssl_key'] ?? '', - $params['ssl_cert'] ?? '', - $params['ssl_ca'] ?? '', - $params['ssl_capath'] ?? '', - $params['ssl_cipher'] ?? '', - ); - } - - /** - * @param array $params - * - * @return Generator - */ - private function compilePostInitializers( - #[SensitiveParameter] - array $params - ): Generator { - if (! isset($params['charset'])) { - return; - } - - yield new Charset($params['charset']); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionError.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionError.php deleted file mode 100644 index ef5b9801..00000000 --- a/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionError.php +++ /dev/null @@ -1,31 +0,0 @@ -error, $connection->sqlstate, $connection->errno); - } - - public static function upcast(mysqli_sql_exception $exception): self - { - $p = new ReflectionProperty(mysqli_sql_exception::class, 'sqlstate'); - $p->setAccessible(true); - - return new self($exception->getMessage(), $p->getValue($exception), (int) $exception->getCode(), $exception); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionFailed.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionFailed.php deleted file mode 100644 index 44a8cab9..00000000 --- a/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/ConnectionFailed.php +++ /dev/null @@ -1,36 +0,0 @@ -connect_error; - assert($error !== null); - - return new self($error, 'HY000', $connection->connect_errno); - } - - public static function upcast(mysqli_sql_exception $exception): self - { - $p = new ReflectionProperty(mysqli_sql_exception::class, 'sqlstate'); - $p->setAccessible(true); - - return new self($exception->getMessage(), $p->getValue($exception), (int) $exception->getCode(), $exception); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/FailedReadingStreamOffset.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/FailedReadingStreamOffset.php deleted file mode 100644 index 6f26dbec..00000000 --- a/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/FailedReadingStreamOffset.php +++ /dev/null @@ -1,22 +0,0 @@ -error), - $connection->sqlstate, - $connection->errno, - ); - } - - public static function upcast(mysqli_sql_exception $exception, string $charset): self - { - $p = new ReflectionProperty(mysqli_sql_exception::class, 'sqlstate'); - $p->setAccessible(true); - - return new self( - sprintf('Failed to set charset "%s": %s', $charset, $exception->getMessage()), - $p->getValue($exception), - (int) $exception->getCode(), - $exception, - ); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/InvalidOption.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/InvalidOption.php deleted file mode 100644 index 6fb46316..00000000 --- a/vendor/doctrine/dbal/src/Driver/Mysqli/Exception/InvalidOption.php +++ /dev/null @@ -1,25 +0,0 @@ -error, $statement->sqlstate, $statement->errno); - } - - public static function upcast(mysqli_sql_exception $exception): self - { - $p = new ReflectionProperty(mysqli_sql_exception::class, 'sqlstate'); - $p->setAccessible(true); - - return new self($exception->getMessage(), $p->getValue($exception), (int) $exception->getCode(), $exception); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer.php deleted file mode 100644 index efab67e2..00000000 --- a/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer.php +++ /dev/null @@ -1,14 +0,0 @@ -charset = $charset; - } - - public function initialize(mysqli $connection): void - { - try { - $success = $connection->set_charset($this->charset); - } catch (mysqli_sql_exception $e) { - throw InvalidCharset::upcast($e, $this->charset); - } - - if ($success) { - return; - } - - throw InvalidCharset::fromCharset($connection, $this->charset); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer/Options.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer/Options.php deleted file mode 100644 index 2e66f8d6..00000000 --- a/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer/Options.php +++ /dev/null @@ -1,32 +0,0 @@ - */ - private array $options; - - /** @param array $options */ - public function __construct(array $options) - { - $this->options = $options; - } - - public function initialize(mysqli $connection): void - { - foreach ($this->options as $option => $value) { - if (! mysqli_options($connection, $option, $value)) { - throw InvalidOption::fromOption($option, $value); - } - } - } -} diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer/Secure.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer/Secure.php deleted file mode 100644 index a25fcfc2..00000000 --- a/vendor/doctrine/dbal/src/Driver/Mysqli/Initializer/Secure.php +++ /dev/null @@ -1,38 +0,0 @@ -key = $key; - $this->cert = $cert; - $this->ca = $ca; - $this->capath = $capath; - $this->cipher = $cipher; - } - - public function initialize(mysqli $connection): void - { - $connection->ssl_set($this->key, $this->cert, $this->ca, $this->capath, $this->cipher); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Result.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Result.php deleted file mode 100644 index c7dc65d1..00000000 --- a/vendor/doctrine/dbal/src/Driver/Mysqli/Result.php +++ /dev/null @@ -1,179 +0,0 @@ - - */ - private array $columnNames = []; - - /** @var mixed[] */ - private array $boundValues = []; - - /** - * @internal The result can be only instantiated by its driver connection or statement. - * - * @throws Exception - */ - public function __construct(mysqli_stmt $statement) - { - $this->statement = $statement; - - $meta = $statement->result_metadata(); - - if ($meta === false) { - return; - } - - $this->hasColumns = true; - - $this->columnNames = array_column($meta->fetch_fields(), 'name'); - - $meta->free(); - - // Store result of every execution which has it. Otherwise it will be impossible - // to execute a new statement in case if the previous one has non-fetched rows - // @link http://dev.mysql.com/doc/refman/5.7/en/commands-out-of-sync.html - $this->statement->store_result(); - - // Bind row values _after_ storing the result. Otherwise, if mysqli is compiled with libmysql, - // it will have to allocate as much memory as it may be needed for the given column type - // (e.g. for a LONGBLOB column it's 4 gigabytes) - // @link https://bugs.php.net/bug.php?id=51386#1270673122 - // - // Make sure that the values are bound after each execution. Otherwise, if free() has been - // previously called on the result, the values are unbound making the statement unusable. - // - // It's also important that row values are bound after _each_ call to store_result(). Otherwise, - // if mysqli is compiled with libmysql, subsequently fetched string values will get truncated - // to the length of the ones fetched during the previous execution. - $this->boundValues = array_fill(0, count($this->columnNames), null); - - // The following is necessary as PHP cannot handle references to properties properly - $refs = &$this->boundValues; - - if (! $this->statement->bind_result(...$refs)) { - throw StatementError::new($this->statement); - } - } - - /** - * {@inheritDoc} - */ - public function fetchNumeric() - { - try { - $ret = $this->statement->fetch(); - } catch (mysqli_sql_exception $e) { - throw StatementError::upcast($e); - } - - if ($ret === false) { - throw StatementError::new($this->statement); - } - - if ($ret === null) { - return false; - } - - $values = []; - - foreach ($this->boundValues as $v) { - $values[] = $v; - } - - return $values; - } - - /** - * {@inheritDoc} - */ - public function fetchAssociative() - { - $values = $this->fetchNumeric(); - - if ($values === false) { - return false; - } - - return array_combine($this->columnNames, $values); - } - - /** - * {@inheritDoc} - */ - public function fetchOne() - { - return FetchUtils::fetchOne($this); - } - - /** - * {@inheritDoc} - */ - public function fetchAllNumeric(): array - { - return FetchUtils::fetchAllNumeric($this); - } - - /** - * {@inheritDoc} - */ - public function fetchAllAssociative(): array - { - return FetchUtils::fetchAllAssociative($this); - } - - /** - * {@inheritDoc} - */ - public function fetchFirstColumn(): array - { - return FetchUtils::fetchFirstColumn($this); - } - - public function rowCount(): int - { - if ($this->hasColumns) { - return $this->statement->num_rows; - } - - return $this->statement->affected_rows; - } - - public function columnCount(): int - { - return $this->statement->field_count; - } - - public function free(): void - { - $this->statement->free_result(); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/Mysqli/Statement.php b/vendor/doctrine/dbal/src/Driver/Mysqli/Statement.php deleted file mode 100644 index fec7c95c..00000000 --- a/vendor/doctrine/dbal/src/Driver/Mysqli/Statement.php +++ /dev/null @@ -1,239 +0,0 @@ - 's', - ParameterType::STRING => 's', - ParameterType::BINARY => 's', - ParameterType::BOOLEAN => 'i', - ParameterType::NULL => 's', - ParameterType::INTEGER => 'i', - ParameterType::LARGE_OBJECT => 'b', - ]; - - private mysqli_stmt $stmt; - - /** @var mixed[] */ - private array $boundValues; - - private string $types; - - /** - * Contains ref values for bindValue(). - * - * @var mixed[] - */ - private array $values = []; - - /** @internal The statement can be only instantiated by its driver connection. */ - public function __construct(mysqli_stmt $stmt) - { - $this->stmt = $stmt; - - $paramCount = $this->stmt->param_count; - $this->types = str_repeat('s', $paramCount); - $this->boundValues = array_fill(1, $paramCount, null); - } - - /** - * @deprecated Use {@see bindValue()} instead. - * - * {@inheritDoc} - * - * @psalm-assert ParameterType::* $type - */ - public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null): bool - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5563', - '%s is deprecated. Use bindValue() instead.', - __METHOD__, - ); - - assert(is_int($param)); - - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindParam() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - if (! isset(self::PARAM_TYPE_MAP[$type])) { - throw UnknownParameterType::new($type); - } - - $this->boundValues[$param] =& $variable; - $this->types[$param - 1] = self::PARAM_TYPE_MAP[$type]; - - return true; - } - - /** - * {@inheritDoc} - * - * @psalm-assert ParameterType::* $type - */ - public function bindValue($param, $value, $type = ParameterType::STRING): bool - { - assert(is_int($param)); - - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindValue() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - if (! isset(self::PARAM_TYPE_MAP[$type])) { - throw UnknownParameterType::new($type); - } - - $this->values[$param] = $value; - $this->boundValues[$param] =& $this->values[$param]; - $this->types[$param - 1] = self::PARAM_TYPE_MAP[$type]; - - return true; - } - - /** - * {@inheritDoc} - */ - public function execute($params = null): ResultInterface - { - if ($params !== null) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5556', - 'Passing $params to Statement::execute() is deprecated. Bind parameters using' - . ' Statement::bindParam() or Statement::bindValue() instead.', - ); - } - - if ($params !== null && count($params) > 0) { - if (! $this->bindUntypedValues($params)) { - throw StatementError::new($this->stmt); - } - } elseif (count($this->boundValues) > 0) { - $this->bindTypedParameters(); - } - - try { - $result = $this->stmt->execute(); - } catch (mysqli_sql_exception $e) { - throw StatementError::upcast($e); - } - - if (! $result) { - throw StatementError::new($this->stmt); - } - - return new Result($this->stmt); - } - - /** - * Binds parameters with known types previously bound to the statement - * - * @throws Exception - */ - private function bindTypedParameters(): void - { - $streams = $values = []; - $types = $this->types; - - foreach ($this->boundValues as $parameter => $value) { - assert(is_int($parameter)); - - if (! isset($types[$parameter - 1])) { - $types[$parameter - 1] = self::PARAM_TYPE_MAP[ParameterType::STRING]; - } - - if ($types[$parameter - 1] === self::PARAM_TYPE_MAP[ParameterType::LARGE_OBJECT]) { - if (is_resource($value)) { - if (get_resource_type($value) !== 'stream') { - throw NonStreamResourceUsedAsLargeObject::new($parameter); - } - - $streams[$parameter] = $value; - $values[$parameter] = null; - continue; - } - - $types[$parameter - 1] = self::PARAM_TYPE_MAP[ParameterType::STRING]; - } - - $values[$parameter] = $value; - } - - if (! $this->stmt->bind_param($types, ...$values)) { - throw StatementError::new($this->stmt); - } - - $this->sendLongData($streams); - } - - /** - * Handle $this->_longData after regular query parameters have been bound - * - * @param array $streams - * - * @throws Exception - */ - private function sendLongData(array $streams): void - { - foreach ($streams as $paramNr => $stream) { - while (! feof($stream)) { - $chunk = fread($stream, 8192); - - if ($chunk === false) { - throw FailedReadingStreamOffset::new($paramNr); - } - - if (! $this->stmt->send_long_data($paramNr - 1, $chunk)) { - throw StatementError::new($this->stmt); - } - } - } - } - - /** - * Binds a array of values to bound parameters. - * - * @param mixed[] $values - */ - private function bindUntypedValues(array $values): bool - { - return $this->stmt->bind_param(str_repeat('s', count($values)), ...$values); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/OCI8/Connection.php b/vendor/doctrine/dbal/src/Driver/OCI8/Connection.php deleted file mode 100644 index 72353fa3..00000000 --- a/vendor/doctrine/dbal/src/Driver/OCI8/Connection.php +++ /dev/null @@ -1,170 +0,0 @@ -connection = $connection; - $this->parser = new Parser(false); - $this->executionMode = new ExecutionMode(); - } - - public function getServerVersion(): string - { - $version = oci_server_version($this->connection); - - if ($version === false) { - throw Error::new($this->connection); - } - - $result = preg_match('/\s+(\d+\.\d+\.\d+\.\d+\.\d+)\s+/', $version, $matches); - assert($result === 1); - - return $matches[1]; - } - - /** @throws Parser\Exception */ - public function prepare(string $sql): DriverStatement - { - $visitor = new ConvertPositionalToNamedPlaceholders(); - - $this->parser->parse($sql, $visitor); - - $statement = oci_parse($this->connection, $visitor->getSQL()); - assert(is_resource($statement)); - - return new Statement($this->connection, $statement, $visitor->getParameterMap(), $this->executionMode); - } - - /** - * @throws Exception - * @throws Parser\Exception - */ - public function query(string $sql): ResultInterface - { - return $this->prepare($sql)->execute(); - } - - /** - * {@inheritDoc} - */ - public function quote($value, $type = ParameterType::STRING) - { - if (is_int($value) || is_float($value)) { - return $value; - } - - $value = str_replace("'", "''", $value); - - return "'" . addcslashes($value, "\000\n\r\\\032") . "'"; - } - - /** - * @throws Exception - * @throws Parser\Exception - */ - public function exec(string $sql): int - { - return $this->prepare($sql)->execute()->rowCount(); - } - - /** - * {@inheritDoc} - * - * @param string|null $name - * - * @return int|false - * - * @throws Parser\Exception - */ - public function lastInsertId($name = null) - { - if ($name === null) { - return false; - } - - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4687', - 'The usage of Connection::lastInsertId() with a sequence name is deprecated.', - ); - - $result = $this->query('SELECT ' . $name . '.CURRVAL FROM DUAL')->fetchOne(); - - if ($result === false) { - throw SequenceDoesNotExist::new(); - } - - return (int) $result; - } - - public function beginTransaction(): bool - { - $this->executionMode->disableAutoCommit(); - - return true; - } - - public function commit(): bool - { - if (! oci_commit($this->connection)) { - throw Error::new($this->connection); - } - - $this->executionMode->enableAutoCommit(); - - return true; - } - - public function rollBack(): bool - { - if (! oci_rollback($this->connection)) { - throw Error::new($this->connection); - } - - $this->executionMode->enableAutoCommit(); - - return true; - } - - /** @return resource */ - public function getNativeConnection() - { - return $this->connection; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/OCI8/ConvertPositionalToNamedPlaceholders.php b/vendor/doctrine/dbal/src/Driver/OCI8/ConvertPositionalToNamedPlaceholders.php deleted file mode 100644 index e2a11262..00000000 --- a/vendor/doctrine/dbal/src/Driver/OCI8/ConvertPositionalToNamedPlaceholders.php +++ /dev/null @@ -1,56 +0,0 @@ -). - * - * Oracle does not support positional parameters, hence this method converts all - * positional parameters into artificially named parameters. - * - * @internal This class is not covered by the backward compatibility promise - */ -final class ConvertPositionalToNamedPlaceholders implements Visitor -{ - /** @var list */ - private array $buffer = []; - - /** @var array */ - private array $parameterMap = []; - - public function acceptOther(string $sql): void - { - $this->buffer[] = $sql; - } - - public function acceptPositionalParameter(string $sql): void - { - $position = count($this->parameterMap) + 1; - $param = ':param' . $position; - - $this->parameterMap[$position] = $param; - - $this->buffer[] = $param; - } - - public function acceptNamedParameter(string $sql): void - { - $this->buffer[] = $sql; - } - - public function getSQL(): string - { - return implode('', $this->buffer); - } - - /** @return array */ - public function getParameterMap(): array - { - return $this->parameterMap; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/OCI8/Driver.php b/vendor/doctrine/dbal/src/Driver/OCI8/Driver.php deleted file mode 100644 index 650a4f9a..00000000 --- a/vendor/doctrine/dbal/src/Driver/OCI8/Driver.php +++ /dev/null @@ -1,58 +0,0 @@ -getEasyConnectString($params); - - $persistent = ! empty($params['persistent']); - $exclusive = ! empty($params['driverOptions']['exclusive']); - - if ($persistent && $exclusive) { - throw InvalidConfiguration::forPersistentAndExclusive(); - } - - if ($persistent) { - $connection = @oci_pconnect($username, $password, $connectionString, $charset, $sessionMode); - } elseif ($exclusive) { - $connection = @oci_new_connect($username, $password, $connectionString, $charset, $sessionMode); - } else { - $connection = @oci_connect($username, $password, $connectionString, $charset, $sessionMode); - } - - if ($connection === false) { - throw ConnectionFailed::new(); - } - - return new Connection($connection); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/OCI8/Exception/ConnectionFailed.php b/vendor/doctrine/dbal/src/Driver/OCI8/Exception/ConnectionFailed.php deleted file mode 100644 index cefe9a3a..00000000 --- a/vendor/doctrine/dbal/src/Driver/OCI8/Exception/ConnectionFailed.php +++ /dev/null @@ -1,26 +0,0 @@ -isAutoCommitEnabled = true; - } - - public function disableAutoCommit(): void - { - $this->isAutoCommitEnabled = false; - } - - public function isAutoCommitEnabled(): bool - { - return $this->isAutoCommitEnabled; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/OCI8/Middleware/InitializeSession.php b/vendor/doctrine/dbal/src/Driver/OCI8/Middleware/InitializeSession.php deleted file mode 100644 index 314a04a6..00000000 --- a/vendor/doctrine/dbal/src/Driver/OCI8/Middleware/InitializeSession.php +++ /dev/null @@ -1,39 +0,0 @@ -exec( - 'ALTER SESSION SET' - . " NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'" - . " NLS_TIME_FORMAT = 'HH24:MI:SS'" - . " NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'" - . " NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS'" - . " NLS_TIMESTAMP_TZ_FORMAT = 'YYYY-MM-DD HH24:MI:SS TZH:TZM'" - . " NLS_NUMERIC_CHARACTERS = '.,'", - ); - - return $connection; - } - }; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/OCI8/Result.php b/vendor/doctrine/dbal/src/Driver/OCI8/Result.php deleted file mode 100644 index 08add4fa..00000000 --- a/vendor/doctrine/dbal/src/Driver/OCI8/Result.php +++ /dev/null @@ -1,145 +0,0 @@ -statement = $statement; - } - - /** - * {@inheritDoc} - */ - public function fetchNumeric() - { - return $this->fetch(OCI_NUM); - } - - /** - * {@inheritDoc} - */ - public function fetchAssociative() - { - return $this->fetch(OCI_ASSOC); - } - - /** - * {@inheritDoc} - */ - public function fetchOne() - { - return FetchUtils::fetchOne($this); - } - - /** - * {@inheritDoc} - */ - public function fetchAllNumeric(): array - { - return $this->fetchAll(OCI_NUM, OCI_FETCHSTATEMENT_BY_ROW); - } - - /** - * {@inheritDoc} - */ - public function fetchAllAssociative(): array - { - return $this->fetchAll(OCI_ASSOC, OCI_FETCHSTATEMENT_BY_ROW); - } - - /** - * {@inheritDoc} - */ - public function fetchFirstColumn(): array - { - return $this->fetchAll(OCI_NUM, OCI_FETCHSTATEMENT_BY_COLUMN)[0]; - } - - public function rowCount(): int - { - $count = oci_num_rows($this->statement); - - if ($count !== false) { - return $count; - } - - return 0; - } - - public function columnCount(): int - { - $count = oci_num_fields($this->statement); - - if ($count !== false) { - return $count; - } - - return 0; - } - - public function free(): void - { - oci_cancel($this->statement); - } - - /** - * @return mixed|false - * - * @throws Exception - */ - private function fetch(int $mode) - { - $result = oci_fetch_array($this->statement, $mode | OCI_RETURN_NULLS | OCI_RETURN_LOBS); - - if ($result === false && oci_error($this->statement) !== false) { - throw Error::new($this->statement); - } - - return $result; - } - - /** @return array */ - private function fetchAll(int $mode, int $fetchStructure): array - { - oci_fetch_all( - $this->statement, - $result, - 0, - -1, - $mode | OCI_RETURN_NULLS | $fetchStructure | OCI_RETURN_LOBS, - ); - - return $result; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/OCI8/Statement.php b/vendor/doctrine/dbal/src/Driver/OCI8/Statement.php deleted file mode 100644 index 015a14b7..00000000 --- a/vendor/doctrine/dbal/src/Driver/OCI8/Statement.php +++ /dev/null @@ -1,174 +0,0 @@ - */ - private array $parameterMap; - - private ExecutionMode $executionMode; - - /** - * @internal The statement can be only instantiated by its driver connection. - * - * @param resource $connection - * @param resource $statement - * @param array $parameterMap - */ - public function __construct($connection, $statement, array $parameterMap, ExecutionMode $executionMode) - { - $this->connection = $connection; - $this->statement = $statement; - $this->parameterMap = $parameterMap; - $this->executionMode = $executionMode; - } - - /** - * {@inheritDoc} - */ - public function bindValue($param, $value, $type = ParameterType::STRING): bool - { - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindValue() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - return $this->bindParam($param, $value, $type); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see bindValue()} instead. - */ - public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null): bool - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5563', - '%s is deprecated. Use bindValue() instead.', - __METHOD__, - ); - - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindParam() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - if (is_int($param)) { - if (! isset($this->parameterMap[$param])) { - throw UnknownParameterIndex::new($param); - } - - $param = $this->parameterMap[$param]; - } - - if ($type === ParameterType::LARGE_OBJECT) { - if ($variable !== null) { - $lob = oci_new_descriptor($this->connection, OCI_D_LOB); - $lob->writeTemporary($variable, OCI_TEMP_BLOB); - - $variable =& $lob; - } else { - $type = ParameterType::STRING; - } - } - - return oci_bind_by_name( - $this->statement, - $param, - $variable, - $length ?? -1, - $this->convertParameterType($type), - ); - } - - /** - * Converts DBAL parameter type to oci8 parameter type - */ - private function convertParameterType(int $type): int - { - switch ($type) { - case ParameterType::BINARY: - return OCI_B_BIN; - - case ParameterType::LARGE_OBJECT: - return OCI_B_BLOB; - - default: - return SQLT_CHR; - } - } - - /** - * {@inheritDoc} - */ - public function execute($params = null): ResultInterface - { - if ($params !== null) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5556', - 'Passing $params to Statement::execute() is deprecated. Bind parameters using' - . ' Statement::bindParam() or Statement::bindValue() instead.', - ); - - foreach ($params as $key => $val) { - if (is_int($key)) { - $this->bindValue($key + 1, $val, ParameterType::STRING); - } else { - $this->bindValue($key, $val, ParameterType::STRING); - } - } - } - - if ($this->executionMode->isAutoCommitEnabled()) { - $mode = OCI_COMMIT_ON_SUCCESS; - } else { - $mode = OCI_NO_AUTO_COMMIT; - } - - $ret = @oci_execute($this->statement, $mode); - if (! $ret) { - throw Error::new($this->statement); - } - - return new Result($this->statement); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PDO/Connection.php b/vendor/doctrine/dbal/src/Driver/PDO/Connection.php deleted file mode 100644 index 290dcc2d..00000000 --- a/vendor/doctrine/dbal/src/Driver/PDO/Connection.php +++ /dev/null @@ -1,158 +0,0 @@ -setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - - $this->connection = $connection; - } - - public function exec(string $sql): int - { - try { - $result = $this->connection->exec($sql); - - assert($result !== false); - - return $result; - } catch (PDOException $exception) { - throw Exception::new($exception); - } - } - - /** - * {@inheritDoc} - */ - public function getServerVersion() - { - return $this->connection->getAttribute(PDO::ATTR_SERVER_VERSION); - } - - /** - * {@inheritDoc} - * - * @return Statement - */ - public function prepare(string $sql): StatementInterface - { - try { - $stmt = $this->connection->prepare($sql); - assert($stmt instanceof PDOStatement); - - return new Statement($stmt); - } catch (PDOException $exception) { - throw Exception::new($exception); - } - } - - public function query(string $sql): ResultInterface - { - try { - $stmt = $this->connection->query($sql); - assert($stmt instanceof PDOStatement); - - return new Result($stmt); - } catch (PDOException $exception) { - throw Exception::new($exception); - } - } - - /** - * {@inheritDoc} - * - * @throws UnknownParameterType - * - * @psalm-assert ParameterType::* $type - */ - public function quote($value, $type = ParameterType::STRING) - { - return $this->connection->quote($value, ParameterTypeMap::convertParamType($type)); - } - - /** - * {@inheritDoc} - */ - public function lastInsertId($name = null) - { - try { - if ($name === null) { - return $this->connection->lastInsertId(); - } - - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4687', - 'The usage of Connection::lastInsertId() with a sequence name is deprecated.', - ); - - return $this->connection->lastInsertId($name); - } catch (PDOException $exception) { - throw Exception::new($exception); - } - } - - public function beginTransaction(): bool - { - try { - return $this->connection->beginTransaction(); - } catch (PDOException $exception) { - throw DriverPDOException::new($exception); - } - } - - public function commit(): bool - { - try { - return $this->connection->commit(); - } catch (PDOException $exception) { - throw DriverPDOException::new($exception); - } - } - - public function rollBack(): bool - { - try { - return $this->connection->rollBack(); - } catch (PDOException $exception) { - throw DriverPDOException::new($exception); - } - } - - public function getNativeConnection(): PDO - { - return $this->connection; - } - - /** @deprecated Call {@see getNativeConnection()} instead. */ - public function getWrappedConnection(): PDO - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5037', - '%s is deprecated, call getNativeConnection() instead.', - __METHOD__, - ); - - return $this->getNativeConnection(); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PDO/Exception.php b/vendor/doctrine/dbal/src/Driver/PDO/Exception.php deleted file mode 100644 index fbb81253..00000000 --- a/vendor/doctrine/dbal/src/Driver/PDO/Exception.php +++ /dev/null @@ -1,30 +0,0 @@ -errorInfo !== null) { - [$sqlState, $code] = $exception->errorInfo; - - $code ??= 0; - } else { - $code = $exception->getCode(); - $sqlState = null; - } - - return new self($exception->getMessage(), $sqlState, $code, $exception); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PDO/MySQL/Driver.php b/vendor/doctrine/dbal/src/Driver/PDO/MySQL/Driver.php deleted file mode 100644 index 2492698b..00000000 --- a/vendor/doctrine/dbal/src/Driver/PDO/MySQL/Driver.php +++ /dev/null @@ -1,76 +0,0 @@ -constructPdoDsn($safeParams), - $params['user'] ?? '', - $params['password'] ?? '', - $driverOptions, - ); - } catch (PDOException $exception) { - throw Exception::new($exception); - } - - return new Connection($pdo); - } - - /** - * Constructs the MySQL PDO DSN. - * - * @param mixed[] $params - */ - private function constructPdoDsn(array $params): string - { - $dsn = 'mysql:'; - if (isset($params['host']) && $params['host'] !== '') { - $dsn .= 'host=' . $params['host'] . ';'; - } - - if (isset($params['port'])) { - $dsn .= 'port=' . $params['port'] . ';'; - } - - if (isset($params['dbname'])) { - $dsn .= 'dbname=' . $params['dbname'] . ';'; - } - - if (isset($params['unix_socket'])) { - $dsn .= 'unix_socket=' . $params['unix_socket'] . ';'; - } - - if (isset($params['charset'])) { - $dsn .= 'charset=' . $params['charset'] . ';'; - } - - return $dsn; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PDO/OCI/Driver.php b/vendor/doctrine/dbal/src/Driver/PDO/OCI/Driver.php deleted file mode 100644 index 10ada9f0..00000000 --- a/vendor/doctrine/dbal/src/Driver/PDO/OCI/Driver.php +++ /dev/null @@ -1,61 +0,0 @@ -constructPdoDsn($params), - $params['user'] ?? '', - $params['password'] ?? '', - $driverOptions, - ); - } catch (PDOException $exception) { - throw Exception::new($exception); - } - - return new Connection($pdo); - } - - /** - * Constructs the Oracle PDO DSN. - * - * @param mixed[] $params - */ - private function constructPdoDsn(array $params): string - { - $dsn = 'oci:dbname=' . $this->getEasyConnectString($params); - - if (isset($params['charset'])) { - $dsn .= ';charset=' . $params['charset']; - } - - return $dsn; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PDO/PDOException.php b/vendor/doctrine/dbal/src/Driver/PDO/PDOException.php deleted file mode 100644 index 6eefda40..00000000 --- a/vendor/doctrine/dbal/src/Driver/PDO/PDOException.php +++ /dev/null @@ -1,33 +0,0 @@ -message, 0, $previous); - - $exception->errorInfo = $previous->errorInfo; - $exception->code = $previous->code; - $exception->sqlState = $previous->errorInfo[0] ?? null; - - return $exception; - } - - public function getSQLState(): ?string - { - return $this->sqlState; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PDO/ParameterTypeMap.php b/vendor/doctrine/dbal/src/Driver/PDO/ParameterTypeMap.php deleted file mode 100644 index f17b585f..00000000 --- a/vendor/doctrine/dbal/src/Driver/PDO/ParameterTypeMap.php +++ /dev/null @@ -1,49 +0,0 @@ - PDO::PARAM_NULL, - ParameterType::INTEGER => PDO::PARAM_INT, - ParameterType::STRING => PDO::PARAM_STR, - ParameterType::ASCII => PDO::PARAM_STR, - ParameterType::BINARY => PDO::PARAM_LOB, - ParameterType::LARGE_OBJECT => PDO::PARAM_LOB, - ParameterType::BOOLEAN => PDO::PARAM_BOOL, - ]; - - /** - * Converts DBAL parameter type to PDO parameter type - * - * @psalm-return PDO::PARAM_* - * - * @throws UnknownParameterType - * - * @psalm-assert ParameterType::* $type - */ - public static function convertParamType(int $type): int - { - if (! isset(self::PARAM_TYPE_MAP[$type])) { - throw UnknownParameterType::new($type); - } - - return self::PARAM_TYPE_MAP[$type]; - } - - private function __construct() - { - } - - private function __clone() - { - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PDO/PgSQL/Driver.php b/vendor/doctrine/dbal/src/Driver/PDO/PgSQL/Driver.php deleted file mode 100644 index 1c586d69..00000000 --- a/vendor/doctrine/dbal/src/Driver/PDO/PgSQL/Driver.php +++ /dev/null @@ -1,131 +0,0 @@ -constructPdoDsn($safeParams), - $params['user'] ?? '', - $params['password'] ?? '', - $driverOptions, - ); - } catch (PDOException $exception) { - throw Exception::new($exception); - } - - if ( - ! isset($driverOptions[PDO::PGSQL_ATTR_DISABLE_PREPARES]) - || $driverOptions[PDO::PGSQL_ATTR_DISABLE_PREPARES] === true - ) { - $pdo->setAttribute(PDO::PGSQL_ATTR_DISABLE_PREPARES, true); - } - - $connection = new Connection($pdo); - - /* defining client_encoding via SET NAMES to avoid inconsistent DSN support - * - passing client_encoding via the 'options' param breaks pgbouncer support - */ - if (isset($params['charset'])) { - $connection->exec('SET NAMES \'' . $params['charset'] . '\''); - } - - return $connection; - } - - /** - * Constructs the Postgres PDO DSN. - * - * @param array $params - */ - private function constructPdoDsn(array $params): string - { - $dsn = 'pgsql:'; - - if (isset($params['host']) && $params['host'] !== '') { - $dsn .= 'host=' . $params['host'] . ';'; - } - - if (isset($params['port']) && $params['port'] !== '') { - $dsn .= 'port=' . $params['port'] . ';'; - } - - if (isset($params['dbname'])) { - $dsn .= 'dbname=' . $params['dbname'] . ';'; - } elseif (isset($params['default_dbname'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5705', - 'The "default_dbname" connection parameter is deprecated. Use "dbname" instead.', - ); - - $dsn .= 'dbname=' . $params['default_dbname'] . ';'; - } else { - if (isset($params['user']) && $params['user'] !== 'postgres') { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5705', - 'Relying on the DBAL connecting to the "postgres" database by default is deprecated.' - . ' Unless you want to have the server determine the default database for the connection,' - . ' specify the database name explicitly.', - ); - } - - // Used for temporary connections to allow operations like dropping the database currently connected to. - $dsn .= 'dbname=postgres;'; - } - - if (isset($params['sslmode'])) { - $dsn .= 'sslmode=' . $params['sslmode'] . ';'; - } - - if (isset($params['sslrootcert'])) { - $dsn .= 'sslrootcert=' . $params['sslrootcert'] . ';'; - } - - if (isset($params['sslcert'])) { - $dsn .= 'sslcert=' . $params['sslcert'] . ';'; - } - - if (isset($params['sslkey'])) { - $dsn .= 'sslkey=' . $params['sslkey'] . ';'; - } - - if (isset($params['sslcrl'])) { - $dsn .= 'sslcrl=' . $params['sslcrl'] . ';'; - } - - if (isset($params['application_name'])) { - $dsn .= 'application_name=' . $params['application_name'] . ';'; - } - - return $dsn; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PDO/Result.php b/vendor/doctrine/dbal/src/Driver/PDO/Result.php deleted file mode 100644 index 67970ac5..00000000 --- a/vendor/doctrine/dbal/src/Driver/PDO/Result.php +++ /dev/null @@ -1,124 +0,0 @@ -statement = $statement; - } - - /** - * {@inheritDoc} - */ - public function fetchNumeric() - { - return $this->fetch(PDO::FETCH_NUM); - } - - /** - * {@inheritDoc} - */ - public function fetchAssociative() - { - return $this->fetch(PDO::FETCH_ASSOC); - } - - /** - * {@inheritDoc} - */ - public function fetchOne() - { - return $this->fetch(PDO::FETCH_COLUMN); - } - - /** - * {@inheritDoc} - */ - public function fetchAllNumeric(): array - { - return $this->fetchAll(PDO::FETCH_NUM); - } - - /** - * {@inheritDoc} - */ - public function fetchAllAssociative(): array - { - return $this->fetchAll(PDO::FETCH_ASSOC); - } - - /** - * {@inheritDoc} - */ - public function fetchFirstColumn(): array - { - return $this->fetchAll(PDO::FETCH_COLUMN); - } - - public function rowCount(): int - { - try { - return $this->statement->rowCount(); - } catch (PDOException $exception) { - throw Exception::new($exception); - } - } - - public function columnCount(): int - { - try { - return $this->statement->columnCount(); - } catch (PDOException $exception) { - throw Exception::new($exception); - } - } - - public function free(): void - { - $this->statement->closeCursor(); - } - - /** - * @psalm-param PDO::FETCH_* $mode - * - * @return mixed - * - * @throws Exception - */ - private function fetch(int $mode) - { - try { - return $this->statement->fetch($mode); - } catch (PDOException $exception) { - throw Exception::new($exception); - } - } - - /** - * @psalm-param PDO::FETCH_* $mode - * - * @return list - * - * @throws Exception - */ - private function fetchAll(int $mode): array - { - try { - return $this->statement->fetchAll($mode); - } catch (PDOException $exception) { - throw Exception::new($exception); - } - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Connection.php b/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Connection.php deleted file mode 100644 index 9015f555..00000000 --- a/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Connection.php +++ /dev/null @@ -1,70 +0,0 @@ -connection = $connection; - } - - public function prepare(string $sql): StatementInterface - { - return new Statement( - $this->connection->prepare($sql), - ); - } - - /** - * {@inheritDoc} - */ - public function lastInsertId($name = null) - { - if ($name === null) { - return parent::lastInsertId($name); - } - - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4687', - 'The usage of Connection::lastInsertId() with a sequence name is deprecated.', - ); - - $statement = $this->prepare( - 'SELECT CONVERT(VARCHAR(MAX), current_value) FROM sys.sequences WHERE name = ?', - ); - $statement->bindValue(1, $name); - - return $statement->execute() - ->fetchOne(); - } - - public function getNativeConnection(): PDO - { - return $this->connection->getNativeConnection(); - } - - /** @deprecated Call {@see getNativeConnection()} instead. */ - public function getWrappedConnection(): PDO - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5037', - '%s is deprecated, call getNativeConnection() instead.', - __METHOD__, - ); - - return $this->connection->getWrappedConnection(); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Driver.php b/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Driver.php deleted file mode 100644 index 63eabb71..00000000 --- a/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Driver.php +++ /dev/null @@ -1,108 +0,0 @@ - $value) { - if (is_int($option)) { - $driverOptions[$option] = $value; - } else { - $dsnOptions[$option] = $value; - } - } - } - - if (! empty($params['persistent'])) { - $driverOptions[PDO::ATTR_PERSISTENT] = true; - } - - $safeParams = $params; - unset($safeParams['password'], $safeParams['url']); - - try { - $pdo = new PDO( - $this->constructDsn($safeParams, $dsnOptions), - $params['user'] ?? '', - $params['password'] ?? '', - $driverOptions, - ); - } catch (\PDOException $exception) { - throw PDOException::new($exception); - } - - return new Connection(new PDOConnection($pdo)); - } - - /** - * Constructs the Sqlsrv PDO DSN. - * - * @param mixed[] $params - * @param string[] $connectionOptions - * - * @throws Exception - */ - private function constructDsn(array $params, array $connectionOptions): string - { - $dsn = 'sqlsrv:server='; - - if (isset($params['host'])) { - $dsn .= $params['host']; - - if (isset($params['port'])) { - $dsn .= ',' . $params['port']; - } - } elseif (isset($params['port'])) { - throw PortWithoutHost::new(); - } - - if (isset($params['dbname'])) { - $connectionOptions['Database'] = $params['dbname']; - } - - if (isset($params['MultipleActiveResultSets'])) { - $connectionOptions['MultipleActiveResultSets'] = $params['MultipleActiveResultSets'] ? 'true' : 'false'; - } - - return $dsn . $this->getConnectionOptionsDsn($connectionOptions); - } - - /** - * Converts a connection options array to the DSN - * - * @param string[] $connectionOptions - */ - private function getConnectionOptionsDsn(array $connectionOptions): string - { - $connectionOptionsDsn = ''; - - foreach ($connectionOptions as $paramName => $paramValue) { - $connectionOptionsDsn .= sprintf(';%s=%s', $paramName, $paramValue); - } - - return $connectionOptionsDsn; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Statement.php b/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Statement.php deleted file mode 100644 index cb2dfaed..00000000 --- a/vendor/doctrine/dbal/src/Driver/PDO/SQLSrv/Statement.php +++ /dev/null @@ -1,109 +0,0 @@ -statement = $statement; - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see bindValue()} instead. - * - * @param string|int $param - * @param mixed $variable - * @param int $type - * @param int|null $length - * @param mixed $driverOptions The usage of the argument is deprecated. - * - * @throws UnknownParameterType - * - * @psalm-assert ParameterType::* $type - */ - public function bindParam( - $param, - &$variable, - $type = ParameterType::STRING, - $length = null, - $driverOptions = null - ): bool { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5563', - '%s is deprecated. Use bindValue() instead.', - __METHOD__, - ); - - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindParam() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - if (func_num_args() > 4) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4533', - 'The $driverOptions argument of Statement::bindParam() is deprecated.', - ); - } - - switch ($type) { - case ParameterType::LARGE_OBJECT: - case ParameterType::BINARY: - $driverOptions ??= PDO::SQLSRV_ENCODING_BINARY; - - break; - - case ParameterType::ASCII: - $type = ParameterType::STRING; - $length = 0; - $driverOptions = PDO::SQLSRV_ENCODING_SYSTEM; - break; - } - - return $this->statement->bindParam($param, $variable, $type, $length ?? 0, $driverOptions); - } - - /** - * @throws UnknownParameterType - * - * {@inheritDoc} - * - * @psalm-assert ParameterType::* $type - */ - public function bindValue($param, $value, $type = ParameterType::STRING): bool - { - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindValue() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - return $this->bindParam($param, $value, $type); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PDO/SQLite/Driver.php b/vendor/doctrine/dbal/src/Driver/PDO/SQLite/Driver.php deleted file mode 100644 index 2e97788e..00000000 --- a/vendor/doctrine/dbal/src/Driver/PDO/SQLite/Driver.php +++ /dev/null @@ -1,77 +0,0 @@ -constructPdoDsn(array_intersect_key($params, ['path' => true, 'memory' => true])), - $params['user'] ?? '', - $params['password'] ?? '', - $driverOptions, - ); - } catch (PDOException $exception) { - throw Exception::new($exception); - } - - UserDefinedFunctions::register( - [$pdo, 'sqliteCreateFunction'], - $userDefinedFunctions, - ); - - return new Connection($pdo); - } - - /** - * Constructs the Sqlite PDO DSN. - * - * @param array $params - */ - private function constructPdoDsn(array $params): string - { - $dsn = 'sqlite:'; - if (isset($params['path'])) { - $dsn .= $params['path']; - } elseif (isset($params['memory'])) { - $dsn .= ':memory:'; - } - - return $dsn; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PDO/Statement.php b/vendor/doctrine/dbal/src/Driver/PDO/Statement.php deleted file mode 100644 index 64f318d2..00000000 --- a/vendor/doctrine/dbal/src/Driver/PDO/Statement.php +++ /dev/null @@ -1,137 +0,0 @@ -stmt = $stmt; - } - - /** - * {@inheritDoc} - * - * @throws UnknownParameterType - * - * @psalm-assert ParameterType::* $type - */ - public function bindValue($param, $value, $type = ParameterType::STRING) - { - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindValue() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - $pdoType = ParameterTypeMap::convertParamType($type); - - try { - return $this->stmt->bindValue($param, $value, $pdoType); - } catch (PDOException $exception) { - throw Exception::new($exception); - } - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see bindValue()} instead. - * - * @param mixed $param - * @param mixed $variable - * @param int $type - * @param int|null $length - * @param mixed $driverOptions The usage of the argument is deprecated. - * - * @throws UnknownParameterType - * - * @psalm-assert ParameterType::* $type - */ - public function bindParam( - $param, - &$variable, - $type = ParameterType::STRING, - $length = null, - $driverOptions = null - ): bool { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5563', - '%s is deprecated. Use bindValue() instead.', - __METHOD__, - ); - - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindParam() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - if (func_num_args() > 4) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4533', - 'The $driverOptions argument of Statement::bindParam() is deprecated.', - ); - } - - $pdoType = ParameterTypeMap::convertParamType($type); - - try { - return $this->stmt->bindParam( - $param, - $variable, - $pdoType, - $length ?? 0, - ...array_slice(func_get_args(), 4), - ); - } catch (PDOException $exception) { - throw Exception::new($exception); - } - } - - /** - * {@inheritDoc} - */ - public function execute($params = null): ResultInterface - { - if ($params !== null) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5556', - 'Passing $params to Statement::execute() is deprecated. Bind parameters using' - . ' Statement::bindParam() or Statement::bindValue() instead.', - ); - } - - try { - $this->stmt->execute($params); - } catch (PDOException $exception) { - throw Exception::new($exception); - } - - return new Result($this->stmt); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PgSQL/Connection.php b/vendor/doctrine/dbal/src/Driver/PgSQL/Connection.php deleted file mode 100644 index 378e8ed7..00000000 --- a/vendor/doctrine/dbal/src/Driver/PgSQL/Connection.php +++ /dev/null @@ -1,161 +0,0 @@ -connection = $connection; - $this->parser = new Parser(false); - } - - public function __destruct() - { - if (! isset($this->connection)) { - return; - } - - @pg_close($this->connection); - } - - public function prepare(string $sql): Statement - { - $visitor = new ConvertParameters(); - $this->parser->parse($sql, $visitor); - - $statementName = uniqid('dbal', true); - if (@pg_send_prepare($this->connection, $statementName, $visitor->getSQL()) !== true) { - throw new Exception(pg_last_error($this->connection)); - } - - $result = @pg_get_result($this->connection); - assert($result !== false); - - if ((bool) pg_result_error($result)) { - throw Exception::fromResult($result); - } - - return new Statement($this->connection, $statementName, $visitor->getParameterMap()); - } - - public function query(string $sql): Result - { - if (@pg_send_query($this->connection, $sql) !== true) { - throw new Exception(pg_last_error($this->connection)); - } - - $result = @pg_get_result($this->connection); - assert($result !== false); - - if ((bool) pg_result_error($result)) { - throw Exception::fromResult($result); - } - - return new Result($result); - } - - /** {@inheritDoc} */ - public function quote($value, $type = ParameterType::STRING) - { - if ($type === ParameterType::BINARY || $type === ParameterType::LARGE_OBJECT) { - return sprintf("'%s'", pg_escape_bytea($this->connection, $value)); - } - - return pg_escape_literal($this->connection, $value); - } - - public function exec(string $sql): int - { - return $this->query($sql)->rowCount(); - } - - /** {@inheritDoc} */ - public function lastInsertId($name = null) - { - if ($name !== null) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4687', - 'The usage of Connection::lastInsertId() with a sequence name is deprecated.', - ); - - return $this->query(sprintf('SELECT CURRVAL(%s)', $this->quote($name)))->fetchOne(); - } - - return $this->query('SELECT LASTVAL()')->fetchOne(); - } - - /** @return true */ - public function beginTransaction(): bool - { - $this->exec('BEGIN'); - - return true; - } - - /** @return true */ - public function commit(): bool - { - $this->exec('COMMIT'); - - return true; - } - - /** @return true */ - public function rollBack(): bool - { - $this->exec('ROLLBACK'); - - return true; - } - - public function getServerVersion(): string - { - return (string) pg_version($this->connection)['server']; - } - - /** @return PgSqlConnection|resource */ - public function getNativeConnection() - { - return $this->connection; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PgSQL/ConvertParameters.php b/vendor/doctrine/dbal/src/Driver/PgSQL/ConvertParameters.php deleted file mode 100644 index 795f12d2..00000000 --- a/vendor/doctrine/dbal/src/Driver/PgSQL/ConvertParameters.php +++ /dev/null @@ -1,49 +0,0 @@ - */ - private array $buffer = []; - - /** @var array */ - private array $parameterMap = []; - - public function acceptPositionalParameter(string $sql): void - { - $position = count($this->parameterMap) + 1; - $this->parameterMap[$position] = $position; - $this->buffer[] = '$' . $position; - } - - public function acceptNamedParameter(string $sql): void - { - $position = count($this->parameterMap) + 1; - $this->parameterMap[$sql] = $position; - $this->buffer[] = '$' . $position; - } - - public function acceptOther(string $sql): void - { - $this->buffer[] = $sql; - } - - public function getSQL(): string - { - return implode('', $this->buffer); - } - - /** @return array */ - public function getParameterMap(): array - { - return $this->parameterMap; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PgSQL/Driver.php b/vendor/doctrine/dbal/src/Driver/PgSQL/Driver.php deleted file mode 100644 index 73c97cd8..00000000 --- a/vendor/doctrine/dbal/src/Driver/PgSQL/Driver.php +++ /dev/null @@ -1,85 +0,0 @@ -constructConnectionString($params), PGSQL_CONNECT_FORCE_NEW); - } catch (ErrorException $e) { - throw new Exception($e->getMessage(), '08006', 0, $e); - } finally { - restore_error_handler(); - } - - if ($connection === false) { - throw new Exception('Unable to connect to Postgres server.'); - } - - $driverConnection = new Connection($connection); - - if (isset($params['application_name'])) { - $driverConnection->exec('SET application_name = ' . $driverConnection->quote($params['application_name'])); - } - - return $driverConnection; - } - - /** - * Constructs the Postgres connection string - * - * @param array $params - */ - private function constructConnectionString( - #[SensitiveParameter] - array $params - ): string { - $components = array_filter( - [ - 'host' => $params['host'] ?? null, - 'port' => $params['port'] ?? null, - 'dbname' => $params['dbname'] ?? 'postgres', - 'user' => $params['user'] ?? null, - 'password' => $params['password'] ?? null, - 'sslmode' => $params['sslmode'] ?? null, - ], - static fn ($value) => $value !== '' && $value !== null, - ); - - return implode(' ', array_map( - static fn ($value, string $key) => sprintf("%s='%s'", $key, addslashes($value)), - array_values($components), - array_keys($components), - )); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PgSQL/Exception.php b/vendor/doctrine/dbal/src/Driver/PgSQL/Exception.php deleted file mode 100644 index 41e0dff1..00000000 --- a/vendor/doctrine/dbal/src/Driver/PgSQL/Exception.php +++ /dev/null @@ -1,30 +0,0 @@ -result = $result; - } - - public function __destruct() - { - if (! isset($this->result)) { - return; - } - - $this->free(); - } - - /** {@inheritDoc} */ - public function fetchNumeric() - { - if ($this->result === null) { - return false; - } - - $row = pg_fetch_row($this->result); - if ($row === false) { - return false; - } - - return $this->mapNumericRow($row, $this->fetchNumericColumnTypes()); - } - - /** {@inheritDoc} */ - public function fetchAssociative() - { - if ($this->result === null) { - return false; - } - - $row = pg_fetch_assoc($this->result); - if ($row === false) { - return false; - } - - return $this->mapAssociativeRow($row, $this->fetchAssociativeColumnTypes()); - } - - /** {@inheritDoc} */ - public function fetchOne() - { - return FetchUtils::fetchOne($this); - } - - /** {@inheritDoc} */ - public function fetchAllNumeric(): array - { - if ($this->result === null) { - return []; - } - - $resultSet = pg_fetch_all($this->result, PGSQL_NUM); - // On PHP 7.4, pg_fetch_all() might return false for empty result sets. - if ($resultSet === false) { - return []; - } - - $types = $this->fetchNumericColumnTypes(); - - return array_map( - fn (array $row) => $this->mapNumericRow($row, $types), - $resultSet, - ); - } - - /** {@inheritDoc} */ - public function fetchAllAssociative(): array - { - if ($this->result === null) { - return []; - } - - $resultSet = pg_fetch_all($this->result, PGSQL_ASSOC); - // On PHP 7.4, pg_fetch_all() might return false for empty result sets. - if ($resultSet === false) { - return []; - } - - $types = $this->fetchAssociativeColumnTypes(); - - return array_map( - fn (array $row) => $this->mapAssociativeRow($row, $types), - $resultSet, - ); - } - - /** {@inheritDoc} */ - public function fetchFirstColumn(): array - { - if ($this->result === null) { - return []; - } - - $postgresType = pg_field_type($this->result, 0); - - return array_map( - fn ($value) => $this->mapType($postgresType, $value), - pg_fetch_all_columns($this->result), - ); - } - - public function rowCount(): int - { - if ($this->result === null) { - return 0; - } - - return pg_affected_rows($this->result); - } - - public function columnCount(): int - { - if ($this->result === null) { - return 0; - } - - return pg_num_fields($this->result); - } - - public function free(): void - { - if ($this->result === null) { - return; - } - - pg_free_result($this->result); - $this->result = null; - } - - /** @return array */ - private function fetchNumericColumnTypes(): array - { - assert($this->result !== null); - - $types = []; - $numFields = pg_num_fields($this->result); - for ($i = 0; $i < $numFields; ++$i) { - $types[$i] = pg_field_type($this->result, $i); - } - - return $types; - } - - /** @return array */ - private function fetchAssociativeColumnTypes(): array - { - assert($this->result !== null); - - $types = []; - $numFields = pg_num_fields($this->result); - for ($i = 0; $i < $numFields; ++$i) { - $types[pg_field_name($this->result, $i)] = pg_field_type($this->result, $i); - } - - return $types; - } - - /** - * @param list $row - * @param array $types - * - * @return list - */ - private function mapNumericRow(array $row, array $types): array - { - assert($this->result !== null); - - return array_map( - fn ($value, $field) => $this->mapType($types[$field], $value), - $row, - array_keys($row), - ); - } - - /** - * @param array $row - * @param array $types - * - * @return array - */ - private function mapAssociativeRow(array $row, array $types): array - { - assert($this->result !== null); - - $mappedRow = []; - foreach ($row as $field => $value) { - $mappedRow[$field] = $this->mapType($types[$field], $value); - } - - return $mappedRow; - } - - /** @return string|int|float|bool|null */ - private function mapType(string $postgresType, ?string $value) - { - if ($value === null) { - return null; - } - - switch ($postgresType) { - case 'bool': - switch ($value) { - case 't': - return true; - case 'f': - return false; - } - - throw UnexpectedValue::new($value, $postgresType); - - case 'bytea': - return hex2bin(substr($value, 2)); - - case 'float4': - case 'float8': - return (float) $value; - - case 'int2': - case 'int4': - return (int) $value; - - case 'int8': - return PHP_INT_SIZE >= 8 ? (int) $value : $value; - } - - return $value; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/PgSQL/Statement.php b/vendor/doctrine/dbal/src/Driver/PgSQL/Statement.php deleted file mode 100644 index 75af66f3..00000000 --- a/vendor/doctrine/dbal/src/Driver/PgSQL/Statement.php +++ /dev/null @@ -1,177 +0,0 @@ - */ - private array $parameterMap; - - /** @var array */ - private array $parameters = []; - - /** @psalm-var array */ - private array $parameterTypes = []; - - /** - * @param PgSqlConnection|resource $connection - * @param array $parameterMap - */ - public function __construct($connection, string $name, array $parameterMap) - { - if (! is_resource($connection) && ! $connection instanceof PgSqlConnection) { - throw new TypeError(sprintf( - 'Expected connection to be a resource or an instance of %s, got %s.', - PgSqlConnection::class, - is_object($connection) ? get_class($connection) : gettype($connection), - )); - } - - $this->connection = $connection; - $this->name = $name; - $this->parameterMap = $parameterMap; - } - - public function __destruct() - { - if (! isset($this->connection)) { - return; - } - - @pg_query( - $this->connection, - 'DEALLOCATE ' . pg_escape_identifier($this->connection, $this->name), - ); - } - - /** {@inheritDoc} */ - public function bindValue($param, $value, $type = ParameterType::STRING): bool - { - if (! isset($this->parameterMap[$param])) { - throw UnknownParameter::new((string) $param); - } - - $this->parameters[$this->parameterMap[$param]] = $value; - $this->parameterTypes[$this->parameterMap[$param]] = $type; - - return true; - } - - /** {@inheritDoc} */ - public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null): bool - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5563', - '%s is deprecated. Use bindValue() instead.', - __METHOD__, - ); - - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindParam() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - if (func_num_args() > 4) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4533', - 'The $driverOptions argument of Statement::bindParam() is deprecated.', - ); - } - - if (! isset($this->parameterMap[$param])) { - throw UnknownParameter::new((string) $param); - } - - $this->parameters[$this->parameterMap[$param]] = &$variable; - $this->parameterTypes[$this->parameterMap[$param]] = $type; - - return true; - } - - /** {@inheritDoc} */ - public function execute($params = null): Result - { - if ($params !== null) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5556', - 'Passing $params to Statement::execute() is deprecated. Bind parameters using' - . ' Statement::bindParam() or Statement::bindValue() instead.', - ); - - foreach ($params as $param => $value) { - if (is_int($param)) { - $this->bindValue($param + 1, $value, ParameterType::STRING); - } else { - $this->bindValue($param, $value, ParameterType::STRING); - } - } - } - - ksort($this->parameters); - - $escapedParameters = []; - foreach ($this->parameters as $parameter => $value) { - switch ($this->parameterTypes[$parameter]) { - case ParameterType::BINARY: - case ParameterType::LARGE_OBJECT: - $escapedParameters[] = $value === null ? null : pg_escape_bytea( - $this->connection, - is_resource($value) ? stream_get_contents($value) : $value, - ); - break; - default: - $escapedParameters[] = $value; - } - } - - if (@pg_send_execute($this->connection, $this->name, $escapedParameters) !== true) { - throw new Exception(pg_last_error($this->connection)); - } - - $result = @pg_get_result($this->connection); - assert($result !== false); - - if ((bool) pg_result_error($result)) { - throw Exception::fromResult($result); - } - - return new Result($result); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/Result.php b/vendor/doctrine/dbal/src/Driver/Result.php deleted file mode 100644 index 7843a958..00000000 --- a/vendor/doctrine/dbal/src/Driver/Result.php +++ /dev/null @@ -1,93 +0,0 @@ -|false - * - * @throws Exception - */ - public function fetchNumeric(); - - /** - * Returns the next row of the result as an associative array or FALSE if there are no more rows. - * - * @return array|false - * - * @throws Exception - */ - public function fetchAssociative(); - - /** - * Returns the first value of the next row of the result or FALSE if there are no more rows. - * - * @return mixed|false - * - * @throws Exception - */ - public function fetchOne(); - - /** - * Returns an array containing all of the result rows represented as numeric arrays. - * - * @return list> - * - * @throws Exception - */ - public function fetchAllNumeric(): array; - - /** - * Returns an array containing all of the result rows represented as associative arrays. - * - * @return list> - * - * @throws Exception - */ - public function fetchAllAssociative(): array; - - /** - * Returns an array containing the values of the first column of the result. - * - * @return list - * - * @throws Exception - */ - public function fetchFirstColumn(): array; - - /** - * Returns the number of rows affected by the DELETE, INSERT, or UPDATE statement that produced the result. - * - * If the statement executed a SELECT query or a similar platform-specific SQL (e.g. DESCRIBE, SHOW, etc.), - * some database drivers may return the number of rows returned by that query. However, this behaviour - * is not guaranteed for all drivers and should not be relied on in portable applications. - * - * @return int The number of rows. - * - * @throws Exception - */ - public function rowCount(): int; - - /** - * Returns the number of columns in the result - * - * @return int The number of columns in the result. If the columns cannot be counted, - * this method must return 0. - * - * @throws Exception - */ - public function columnCount(): int; - - /** - * Discards the non-fetched portion of the result, enabling the originating statement to be executed again. - */ - public function free(): void; -} diff --git a/vendor/doctrine/dbal/src/Driver/SQLSrv/Connection.php b/vendor/doctrine/dbal/src/Driver/SQLSrv/Connection.php deleted file mode 100644 index 16e45d11..00000000 --- a/vendor/doctrine/dbal/src/Driver/SQLSrv/Connection.php +++ /dev/null @@ -1,144 +0,0 @@ -connection = $connection; - } - - /** - * {@inheritDoc} - */ - public function getServerVersion() - { - $serverInfo = sqlsrv_server_info($this->connection); - - return $serverInfo['SQLServerVersion']; - } - - public function prepare(string $sql): DriverStatement - { - return new Statement($this->connection, $sql); - } - - public function query(string $sql): ResultInterface - { - return $this->prepare($sql)->execute(); - } - - /** - * {@inheritDoc} - */ - public function quote($value, $type = ParameterType::STRING) - { - if (is_int($value)) { - return $value; - } - - if (is_float($value)) { - return sprintf('%F', $value); - } - - return "'" . str_replace("'", "''", $value) . "'"; - } - - public function exec(string $sql): int - { - $stmt = sqlsrv_query($this->connection, $sql); - - if ($stmt === false) { - throw Error::new(); - } - - $rowsAffected = sqlsrv_rows_affected($stmt); - - if ($rowsAffected === false) { - throw Error::new(); - } - - return $rowsAffected; - } - - /** - * {@inheritDoc} - */ - public function lastInsertId($name = null) - { - if ($name !== null) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4687', - 'The usage of Connection::lastInsertId() with a sequence name is deprecated.', - ); - - $result = $this->prepare('SELECT CONVERT(VARCHAR(MAX), current_value) FROM sys.sequences WHERE name = ?') - ->execute([$name]); - } else { - $result = $this->query('SELECT @@IDENTITY'); - } - - return $result->fetchOne(); - } - - public function beginTransaction(): bool - { - if (! sqlsrv_begin_transaction($this->connection)) { - throw Error::new(); - } - - return true; - } - - public function commit(): bool - { - if (! sqlsrv_commit($this->connection)) { - throw Error::new(); - } - - return true; - } - - public function rollBack(): bool - { - if (! sqlsrv_rollback($this->connection)) { - throw Error::new(); - } - - return true; - } - - /** @return resource */ - public function getNativeConnection() - { - return $this->connection; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/SQLSrv/Driver.php b/vendor/doctrine/dbal/src/Driver/SQLSrv/Driver.php deleted file mode 100644 index fcbdb773..00000000 --- a/vendor/doctrine/dbal/src/Driver/SQLSrv/Driver.php +++ /dev/null @@ -1,73 +0,0 @@ -statement = $stmt; - } - - /** - * {@inheritDoc} - */ - public function fetchNumeric() - { - return $this->fetch(SQLSRV_FETCH_NUMERIC); - } - - /** - * {@inheritDoc} - */ - public function fetchAssociative() - { - return $this->fetch(SQLSRV_FETCH_ASSOC); - } - - /** - * {@inheritDoc} - */ - public function fetchOne() - { - return FetchUtils::fetchOne($this); - } - - /** - * {@inheritDoc} - */ - public function fetchAllNumeric(): array - { - return FetchUtils::fetchAllNumeric($this); - } - - /** - * {@inheritDoc} - */ - public function fetchAllAssociative(): array - { - return FetchUtils::fetchAllAssociative($this); - } - - /** - * {@inheritDoc} - */ - public function fetchFirstColumn(): array - { - return FetchUtils::fetchFirstColumn($this); - } - - public function rowCount(): int - { - $count = sqlsrv_rows_affected($this->statement); - - if ($count !== false) { - return $count; - } - - return 0; - } - - public function columnCount(): int - { - $count = sqlsrv_num_fields($this->statement); - - if ($count !== false) { - return $count; - } - - return 0; - } - - public function free(): void - { - // emulate it by fetching and discarding rows, similarly to what PDO does in this case - // @link http://php.net/manual/en/pdostatement.closecursor.php - // @link https://github.com/php/php-src/blob/php-7.0.11/ext/pdo/pdo_stmt.c#L2075 - // deliberately do not consider multiple result sets, since doctrine/dbal doesn't support them - while (sqlsrv_fetch($this->statement)) { - } - } - - /** @return mixed|false */ - private function fetch(int $fetchType) - { - return sqlsrv_fetch_array($this->statement, $fetchType) ?? false; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/SQLSrv/Statement.php b/vendor/doctrine/dbal/src/Driver/SQLSrv/Statement.php deleted file mode 100644 index 227c3345..00000000 --- a/vendor/doctrine/dbal/src/Driver/SQLSrv/Statement.php +++ /dev/null @@ -1,223 +0,0 @@ - - */ - private array $variables = []; - - /** - * Bound parameter types. - * - * @var array - */ - private array $types = []; - - /** - * Append to any INSERT query to retrieve the last insert id. - */ - private const LAST_INSERT_ID_SQL = ';SELECT SCOPE_IDENTITY() AS LastInsertId;'; - - /** - * @internal The statement can be only instantiated by its driver connection. - * - * @param resource $conn - * @param string $sql - */ - public function __construct($conn, $sql) - { - $this->conn = $conn; - $this->sql = $sql; - - if (stripos($sql, 'INSERT INTO ') !== 0) { - return; - } - - $this->sql .= self::LAST_INSERT_ID_SQL; - } - - /** - * {@inheritDoc} - */ - public function bindValue($param, $value, $type = ParameterType::STRING): bool - { - assert(is_int($param)); - - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindValue() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - $this->variables[$param] = $value; - $this->types[$param] = $type; - - return true; - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see bindValue()} instead. - */ - public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null): bool - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5563', - '%s is deprecated. Use bindValue() instead.', - __METHOD__, - ); - - assert(is_int($param)); - - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindParam() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - $this->variables[$param] =& $variable; - $this->types[$param] = $type; - - // unset the statement resource if it exists as the new one will need to be bound to the new variable - $this->stmt = null; - - return true; - } - - /** - * {@inheritDoc} - */ - public function execute($params = null): ResultInterface - { - if ($params !== null) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5556', - 'Passing $params to Statement::execute() is deprecated. Bind parameters using' - . ' Statement::bindParam() or Statement::bindValue() instead.', - ); - - foreach ($params as $key => $val) { - if (is_int($key)) { - $this->bindValue($key + 1, $val, ParameterType::STRING); - } else { - $this->bindValue($key, $val, ParameterType::STRING); - } - } - } - - $this->stmt ??= $this->prepare(); - - if (! sqlsrv_execute($this->stmt)) { - throw Error::new(); - } - - return new Result($this->stmt); - } - - /** - * Prepares SQL Server statement resource - * - * @return resource - * - * @throws Exception - */ - private function prepare() - { - $params = []; - - foreach ($this->variables as $column => &$variable) { - switch ($this->types[$column]) { - case ParameterType::LARGE_OBJECT: - $params[$column - 1] = [ - &$variable, - SQLSRV_PARAM_IN, - SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY), - SQLSRV_SQLTYPE_VARBINARY('max'), - ]; - break; - - case ParameterType::BINARY: - $params[$column - 1] = [ - &$variable, - SQLSRV_PARAM_IN, - SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_BINARY), - ]; - break; - - case ParameterType::ASCII: - $params[$column - 1] = [ - &$variable, - SQLSRV_PARAM_IN, - SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR), - ]; - break; - - default: - $params[$column - 1] =& $variable; - break; - } - } - - $stmt = sqlsrv_prepare($this->conn, $this->sql, $params); - - if ($stmt === false) { - throw Error::new(); - } - - return $stmt; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/SQLite3/Connection.php b/vendor/doctrine/dbal/src/Driver/SQLite3/Connection.php deleted file mode 100644 index 91b9b5ff..00000000 --- a/vendor/doctrine/dbal/src/Driver/SQLite3/Connection.php +++ /dev/null @@ -1,107 +0,0 @@ -connection = $connection; - } - - public function prepare(string $sql): Statement - { - try { - $statement = $this->connection->prepare($sql); - } catch (\Exception $e) { - throw Exception::new($e); - } - - assert($statement !== false); - - return new Statement($this->connection, $statement); - } - - public function query(string $sql): Result - { - try { - $result = $this->connection->query($sql); - } catch (\Exception $e) { - throw Exception::new($e); - } - - assert($result !== false); - - return new Result($result, $this->connection->changes()); - } - - /** @inheritDoc */ - public function quote($value, $type = ParameterType::STRING): string - { - return sprintf('\'%s\'', SQLite3::escapeString($value)); - } - - public function exec(string $sql): int - { - try { - $this->connection->exec($sql); - } catch (\Exception $e) { - throw Exception::new($e); - } - - return $this->connection->changes(); - } - - /** @inheritDoc */ - public function lastInsertId($name = null): int - { - return $this->connection->lastInsertRowID(); - } - - public function beginTransaction(): bool - { - try { - return $this->connection->exec('BEGIN'); - } catch (\Exception $e) { - return false; - } - } - - public function commit(): bool - { - try { - return $this->connection->exec('COMMIT'); - } catch (\Exception $e) { - return false; - } - } - - public function rollBack(): bool - { - try { - return $this->connection->exec('ROLLBACK'); - } catch (\Exception $e) { - return false; - } - } - - public function getNativeConnection(): SQLite3 - { - return $this->connection; - } - - public function getServerVersion(): string - { - return SQLite3::version()['versionString']; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/SQLite3/Driver.php b/vendor/doctrine/dbal/src/Driver/SQLite3/Driver.php deleted file mode 100644 index fecc4819..00000000 --- a/vendor/doctrine/dbal/src/Driver/SQLite3/Driver.php +++ /dev/null @@ -1,49 +0,0 @@ -enableExceptions(true); - - UserDefinedFunctions::register([$connection, 'createFunction']); - - return new Connection($connection); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/SQLite3/Exception.php b/vendor/doctrine/dbal/src/Driver/SQLite3/Exception.php deleted file mode 100644 index 3ca1190b..00000000 --- a/vendor/doctrine/dbal/src/Driver/SQLite3/Exception.php +++ /dev/null @@ -1,18 +0,0 @@ -getMessage(), null, (int) $exception->getCode(), $exception); - } -} diff --git a/vendor/doctrine/dbal/src/Driver/SQLite3/Result.php b/vendor/doctrine/dbal/src/Driver/SQLite3/Result.php deleted file mode 100644 index 3881e189..00000000 --- a/vendor/doctrine/dbal/src/Driver/SQLite3/Result.php +++ /dev/null @@ -1,91 +0,0 @@ -result = $result; - $this->changes = $changes; - } - - /** @inheritDoc */ - public function fetchNumeric() - { - if ($this->result === null) { - return false; - } - - return $this->result->fetchArray(SQLITE3_NUM); - } - - /** @inheritDoc */ - public function fetchAssociative() - { - if ($this->result === null) { - return false; - } - - return $this->result->fetchArray(SQLITE3_ASSOC); - } - - /** @inheritDoc */ - public function fetchOne() - { - return FetchUtils::fetchOne($this); - } - - /** @inheritDoc */ - public function fetchAllNumeric(): array - { - return FetchUtils::fetchAllNumeric($this); - } - - /** @inheritDoc */ - public function fetchAllAssociative(): array - { - return FetchUtils::fetchAllAssociative($this); - } - - /** @inheritDoc */ - public function fetchFirstColumn(): array - { - return FetchUtils::fetchFirstColumn($this); - } - - public function rowCount(): int - { - return $this->changes; - } - - public function columnCount(): int - { - if ($this->result === null) { - return 0; - } - - return $this->result->numColumns(); - } - - public function free(): void - { - if ($this->result === null) { - return; - } - - $this->result->finalize(); - $this->result = null; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/SQLite3/Statement.php b/vendor/doctrine/dbal/src/Driver/SQLite3/Statement.php deleted file mode 100644 index a4166aa6..00000000 --- a/vendor/doctrine/dbal/src/Driver/SQLite3/Statement.php +++ /dev/null @@ -1,136 +0,0 @@ - SQLITE3_NULL, - ParameterType::INTEGER => SQLITE3_INTEGER, - ParameterType::STRING => SQLITE3_TEXT, - ParameterType::ASCII => SQLITE3_TEXT, - ParameterType::BINARY => SQLITE3_BLOB, - ParameterType::LARGE_OBJECT => SQLITE3_BLOB, - ParameterType::BOOLEAN => SQLITE3_INTEGER, - ]; - - private SQLite3 $connection; - private SQLite3Stmt $statement; - - /** @internal The statement can be only instantiated by its driver connection. */ - public function __construct(SQLite3 $connection, SQLite3Stmt $statement) - { - $this->connection = $connection; - $this->statement = $statement; - } - - /** - * @throws UnknownParameterType - * - * {@inheritDoc} - * - * @psalm-assert ParameterType::* $type - */ - public function bindValue($param, $value, $type = ParameterType::STRING): bool - { - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindValue() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - return $this->statement->bindValue($param, $value, $this->convertParamType($type)); - } - - /** - * @throws UnknownParameterType - * - * {@inheritDoc} - * - * @psalm-assert ParameterType::* $type - */ - public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null): bool - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5563', - '%s is deprecated. Use bindValue() instead.', - __METHOD__, - ); - - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindParam() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - return $this->statement->bindParam($param, $variable, $this->convertParamType($type)); - } - - /** @inheritDoc */ - public function execute($params = null): Result - { - if ($params !== null) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5556', - 'Passing $params to Statement::execute() is deprecated. Bind parameters using' - . ' Statement::bindParam() or Statement::bindValue() instead.', - ); - - foreach ($params as $param => $value) { - if (is_int($param)) { - $this->bindValue($param + 1, $value, ParameterType::STRING); - } else { - $this->bindValue($param, $value, ParameterType::STRING); - } - } - } - - try { - $result = $this->statement->execute(); - } catch (\Exception $e) { - throw Exception::new($e); - } - - assert($result !== false); - - return new Result($result, $this->connection->changes()); - } - - /** - * @psalm-return value-of - * - * @psalm-assert ParameterType::* $type - */ - private function convertParamType(int $type): int - { - if (! isset(self::PARAM_TYPE_MAP[$type])) { - throw UnknownParameterType::new($type); - } - - return self::PARAM_TYPE_MAP[$type]; - } -} diff --git a/vendor/doctrine/dbal/src/Driver/ServerInfoAwareConnection.php b/vendor/doctrine/dbal/src/Driver/ServerInfoAwareConnection.php deleted file mode 100644 index 5687ab0b..00000000 --- a/vendor/doctrine/dbal/src/Driver/ServerInfoAwareConnection.php +++ /dev/null @@ -1,21 +0,0 @@ -execute() is called. - * - * As mentioned above, the named parameters are not natively supported by the mysqli driver, use executeQuery(), - * fetchAll(), fetchArray(), fetchColumn(), fetchAssoc() methods to have the named parameter emulated by doctrine. - * - * Most parameters are input parameters, that is, parameters that are - * used in a read-only fashion to build up the query. Some drivers support the invocation - * of stored procedures that return data as output parameters, and some also as input/output - * parameters that both send in data and are updated to receive it. - * - * @deprecated Use {@see bindValue()} instead. - * - * @param string|int $param Parameter identifier. For a prepared statement using named placeholders, - * this will be a parameter name of the form :name. For a prepared statement using - * question mark placeholders, this will be the 1-indexed position of the parameter. - * @param mixed $variable Name of the PHP variable to bind to the SQL statement parameter. - * @param int $type Explicit data type for the parameter using the {@see ParameterType} - * constants. - * @param int|null $length You must specify maxlength when using an OUT bind - * so that PHP allocates enough memory to hold the returned value. - * - * @return bool TRUE on success or FALSE on failure. - * - * @throws Exception - */ - public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null); - - /** - * Executes a prepared statement - * - * If the prepared statement included parameter markers, you must either: - * call {@see bindParam()} to bind PHP variables to the parameter markers: - * bound variables pass their value as input and receive the output value, - * if any, of their associated parameter markers or pass an array of input-only - * parameter values. - * - * @param mixed[]|null $params A numeric array of values with as many elements as there are - * bound parameters in the SQL statement being executed. - * - * @throws Exception - */ - public function execute($params = null): Result; -} diff --git a/vendor/doctrine/dbal/src/DriverManager.php b/vendor/doctrine/dbal/src/DriverManager.php deleted file mode 100644 index 056f4208..00000000 --- a/vendor/doctrine/dbal/src/DriverManager.php +++ /dev/null @@ -1,288 +0,0 @@ -, - * driverClass?: class-string, - * driverOptions?: array, - * host?: string, - * password?: string, - * path?: string, - * persistent?: bool, - * platform?: Platforms\AbstractPlatform, - * port?: int, - * serverVersion?: string, - * url?: string, - * user?: string, - * unix_socket?: string, - * } - * @psalm-type Params = array{ - * application_name?: string, - * charset?: string, - * dbname?: string, - * defaultTableOptions?: array, - * default_dbname?: string, - * driver?: key-of, - * driverClass?: class-string, - * driverOptions?: array, - * host?: string, - * keepSlave?: bool, - * keepReplica?: bool, - * master?: OverrideParams, - * memory?: bool, - * password?: string, - * path?: string, - * persistent?: bool, - * platform?: Platforms\AbstractPlatform, - * port?: int, - * primary?: OverrideParams, - * replica?: array, - * serverVersion?: string, - * sharding?: array, - * slaves?: array, - * url?: string, - * user?: string, - * wrapperClass?: class-string, - * unix_socket?: string, - * } - */ -final class DriverManager -{ - /** - * List of supported drivers and their mappings to the driver classes. - * - * To add your own driver use the 'driverClass' parameter to {@see DriverManager::getConnection()}. - */ - private const DRIVER_MAP = [ - 'pdo_mysql' => PDO\MySQL\Driver::class, - 'pdo_sqlite' => PDO\SQLite\Driver::class, - 'pdo_pgsql' => PDO\PgSQL\Driver::class, - 'pdo_oci' => PDO\OCI\Driver::class, - 'oci8' => OCI8\Driver::class, - 'ibm_db2' => IBMDB2\Driver::class, - 'pdo_sqlsrv' => PDO\SQLSrv\Driver::class, - 'mysqli' => Mysqli\Driver::class, - 'pgsql' => PgSQL\Driver::class, - 'sqlsrv' => SQLSrv\Driver::class, - 'sqlite3' => SQLite3\Driver::class, - ]; - - /** - * List of URL schemes from a database URL and their mappings to driver. - * - * @deprecated Use actual driver names instead. - * - * @var array - * @psalm-var array> - */ - private static array $driverSchemeAliases = [ - 'db2' => 'ibm_db2', - 'mssql' => 'pdo_sqlsrv', - 'mysql' => 'pdo_mysql', - 'mysql2' => 'pdo_mysql', // Amazon RDS, for some weird reason - 'postgres' => 'pdo_pgsql', - 'postgresql' => 'pdo_pgsql', - 'pgsql' => 'pdo_pgsql', - 'sqlite' => 'pdo_sqlite', - 'sqlite3' => 'pdo_sqlite', - ]; - - /** - * Private constructor. This class cannot be instantiated. - * - * @codeCoverageIgnore - */ - private function __construct() - { - } - - /** - * Creates a connection object based on the specified parameters. - * This method returns a Doctrine\DBAL\Connection which wraps the underlying - * driver connection. - * - * $params must contain at least one of the following. - * - * Either 'driver' with one of the array keys of {@see DRIVER_MAP}, - * OR 'driverClass' that contains the full class name (with namespace) of the - * driver class to instantiate. - * - * Other (optional) parameters: - * - * user (string): - * The username to use when connecting. - * - * password (string): - * The password to use when connecting. - * - * driverOptions (array): - * Any additional driver-specific options for the driver. These are just passed - * through to the driver. - * - * wrapperClass: - * You may specify a custom wrapper class through the 'wrapperClass' - * parameter but this class MUST inherit from Doctrine\DBAL\Connection. - * - * driverClass: - * The driver class to use. - * - * @param Configuration|null $config The configuration to use. - * @param EventManager|null $eventManager The event manager to use. - * @psalm-param Params $params - * - * @psalm-return ($params is array{wrapperClass: class-string} ? T : Connection) - * - * @throws Exception - * - * @template T of Connection - */ - public static function getConnection( - #[SensitiveParameter] - array $params, - ?Configuration $config = null, - ?EventManager $eventManager = null - ): Connection { - // create default config and event manager, if not set - $config ??= new Configuration(); - $eventManager ??= new EventManager(); - $params = self::parseDatabaseUrl($params); - - // URL support for PrimaryReplicaConnection - if (isset($params['primary'])) { - $params['primary'] = self::parseDatabaseUrl($params['primary']); - } - - if (isset($params['replica'])) { - foreach ($params['replica'] as $key => $replicaParams) { - $params['replica'][$key] = self::parseDatabaseUrl($replicaParams); - } - } - - $driver = self::createDriver($params['driver'] ?? null, $params['driverClass'] ?? null); - - foreach ($config->getMiddlewares() as $middleware) { - $driver = $middleware->wrap($driver); - } - - $wrapperClass = $params['wrapperClass'] ?? Connection::class; - if (! is_a($wrapperClass, Connection::class, true)) { - throw Exception::invalidWrapperClass($wrapperClass); - } - - return new $wrapperClass($params, $driver, $config, $eventManager); - } - - /** - * Returns the list of supported drivers. - * - * @return string[] - * @psalm-return list> - */ - public static function getAvailableDrivers(): array - { - return array_keys(self::DRIVER_MAP); - } - - /** - * @throws Exception - * - * @psalm-assert key-of|null $driver - * @psalm-assert class-string|null $driverClass - */ - private static function createDriver(?string $driver, ?string $driverClass): Driver - { - if ($driverClass === null) { - if ($driver === null) { - throw Exception::driverRequired(); - } - - if (! isset(self::DRIVER_MAP[$driver])) { - throw Exception::unknownDriver($driver, array_keys(self::DRIVER_MAP)); - } - - $driverClass = self::DRIVER_MAP[$driver]; - } elseif (! is_a($driverClass, Driver::class, true)) { - throw Exception::invalidDriverClass($driverClass); - } - - return new $driverClass(); - } - - /** - * Extracts parts from a database URL, if present, and returns an - * updated list of parameters. - * - * @param mixed[] $params The list of parameters. - * @psalm-param Params $params - * - * @return mixed[] A modified list of parameters with info from a database - * URL extracted into indidivual parameter parts. - * @psalm-return Params - * - * @throws Exception - */ - private static function parseDatabaseUrl( - #[SensitiveParameter] - array $params - ): array { - if (! isset($params['url'])) { - return $params; - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5843', - 'The "url" connection parameter is deprecated. Please use %s to parse a database url before calling %s.', - DsnParser::class, - self::class, - ); - - $parser = new DsnParser(self::$driverSchemeAliases); - try { - $parsedParams = $parser->parse($params['url']); - } catch (MalformedDsnException $e) { - throw new Exception('Malformed parameter "url".', 0, $e); - } - - if (isset($parsedParams['driver'])) { - // The requested driver from the URL scheme takes precedence - // over the default custom driver from the connection parameters (if any). - unset($params['driverClass']); - } - - $params = array_merge($params, $parsedParams); - - // If a schemeless connection URL is given, we require a default driver or default custom driver - // as connection parameter. - if (! isset($params['driverClass']) && ! isset($params['driver'])) { - throw Exception::driverRequired($params['url']); - } - - return $params; - } -} diff --git a/vendor/doctrine/dbal/src/Event/ConnectionEventArgs.php b/vendor/doctrine/dbal/src/Event/ConnectionEventArgs.php deleted file mode 100644 index 9a69c254..00000000 --- a/vendor/doctrine/dbal/src/Event/ConnectionEventArgs.php +++ /dev/null @@ -1,27 +0,0 @@ -connection = $connection; - } - - /** @return Connection */ - public function getConnection() - { - return $this->connection; - } -} diff --git a/vendor/doctrine/dbal/src/Event/Listeners/OracleSessionInit.php b/vendor/doctrine/dbal/src/Event/Listeners/OracleSessionInit.php deleted file mode 100644 index 9598f43c..00000000 --- a/vendor/doctrine/dbal/src/Event/Listeners/OracleSessionInit.php +++ /dev/null @@ -1,77 +0,0 @@ - 'HH24:MI:SS', - 'NLS_DATE_FORMAT' => 'YYYY-MM-DD HH24:MI:SS', - 'NLS_TIMESTAMP_FORMAT' => 'YYYY-MM-DD HH24:MI:SS', - 'NLS_TIMESTAMP_TZ_FORMAT' => 'YYYY-MM-DD HH24:MI:SS TZH:TZM', - 'NLS_NUMERIC_CHARACTERS' => '.,', - ]; - - /** @param string[] $oracleSessionVars */ - public function __construct(array $oracleSessionVars = []) - { - $this->_defaultSessionVars = array_merge($this->_defaultSessionVars, $oracleSessionVars); - } - - /** - * @return void - * - * @throws Exception - */ - public function postConnect(ConnectionEventArgs $args) - { - if (count($this->_defaultSessionVars) === 0) { - return; - } - - $vars = []; - foreach (array_change_key_case($this->_defaultSessionVars, CASE_UPPER) as $option => $value) { - if ($option === 'CURRENT_SCHEMA') { - $vars[] = $option . ' = ' . $value; - } else { - $vars[] = $option . " = '" . $value . "'"; - } - } - - $sql = 'ALTER SESSION SET ' . implode(' ', $vars); - $args->getConnection()->executeStatement($sql); - } - - /** - * {@inheritDoc} - */ - public function getSubscribedEvents() - { - return [Events::postConnect]; - } -} diff --git a/vendor/doctrine/dbal/src/Event/Listeners/SQLSessionInit.php b/vendor/doctrine/dbal/src/Event/Listeners/SQLSessionInit.php deleted file mode 100644 index 4ce32d62..00000000 --- a/vendor/doctrine/dbal/src/Event/Listeners/SQLSessionInit.php +++ /dev/null @@ -1,43 +0,0 @@ -sql = $sql; - } - - /** - * @return void - * - * @throws Exception - */ - public function postConnect(ConnectionEventArgs $args) - { - $args->getConnection()->executeStatement($this->sql); - } - - /** - * {@inheritDoc} - */ - public function getSubscribedEvents() - { - return [Events::postConnect]; - } -} diff --git a/vendor/doctrine/dbal/src/Event/Listeners/SQLiteSessionInit.php b/vendor/doctrine/dbal/src/Event/Listeners/SQLiteSessionInit.php deleted file mode 100644 index 950f05f4..00000000 --- a/vendor/doctrine/dbal/src/Event/Listeners/SQLiteSessionInit.php +++ /dev/null @@ -1,30 +0,0 @@ -getConnection()->executeStatement('PRAGMA foreign_keys=ON'); - } - - /** - * {@inheritDoc} - */ - public function getSubscribedEvents() - { - return [Events::postConnect]; - } -} diff --git a/vendor/doctrine/dbal/src/Event/SchemaAlterTableAddColumnEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaAlterTableAddColumnEventArgs.php deleted file mode 100644 index 9f3ff6ea..00000000 --- a/vendor/doctrine/dbal/src/Event/SchemaAlterTableAddColumnEventArgs.php +++ /dev/null @@ -1,81 +0,0 @@ -column = $column; - $this->tableDiff = $tableDiff; - $this->platform = $platform; - } - - /** @return Column */ - public function getColumn() - { - return $this->column; - } - - /** @return TableDiff */ - public function getTableDiff() - { - return $this->tableDiff; - } - - /** @return AbstractPlatform */ - public function getPlatform() - { - return $this->platform; - } - - /** - * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead. - * - * @param string|string[] $sql - * - * @return SchemaAlterTableAddColumnEventArgs - */ - public function addSql($sql) - { - if (is_array($sql)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3580', - 'Passing multiple SQL statements as an array to SchemaAlterTableAddColumnEventaArrgs::addSql() ' . - 'is deprecated. Pass each statement as an individual argument instead.', - ); - } - - $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args()); - - return $this; - } - - /** @return string[] */ - public function getSql() - { - return $this->sql; - } -} diff --git a/vendor/doctrine/dbal/src/Event/SchemaAlterTableChangeColumnEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaAlterTableChangeColumnEventArgs.php deleted file mode 100644 index 9ba37aad..00000000 --- a/vendor/doctrine/dbal/src/Event/SchemaAlterTableChangeColumnEventArgs.php +++ /dev/null @@ -1,71 +0,0 @@ -columnDiff = $columnDiff; - $this->tableDiff = $tableDiff; - $this->platform = $platform; - } - - /** @return ColumnDiff */ - public function getColumnDiff() - { - return $this->columnDiff; - } - - /** @return TableDiff */ - public function getTableDiff() - { - return $this->tableDiff; - } - - /** @return AbstractPlatform */ - public function getPlatform() - { - return $this->platform; - } - - /** - * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead. - * - * @param string|string[] $sql - * - * @return SchemaAlterTableChangeColumnEventArgs - */ - public function addSql($sql) - { - $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args()); - - return $this; - } - - /** @return string[] */ - public function getSql() - { - return $this->sql; - } -} diff --git a/vendor/doctrine/dbal/src/Event/SchemaAlterTableEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaAlterTableEventArgs.php deleted file mode 100644 index 07c065a9..00000000 --- a/vendor/doctrine/dbal/src/Event/SchemaAlterTableEventArgs.php +++ /dev/null @@ -1,62 +0,0 @@ -tableDiff = $tableDiff; - $this->platform = $platform; - } - - /** @return TableDiff */ - public function getTableDiff() - { - return $this->tableDiff; - } - - /** @return AbstractPlatform */ - public function getPlatform() - { - return $this->platform; - } - - /** - * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead. - * - * @param string|string[] $sql - * - * @return SchemaAlterTableEventArgs - */ - public function addSql($sql) - { - $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args()); - - return $this; - } - - /** @return string[] */ - public function getSql() - { - return $this->sql; - } -} diff --git a/vendor/doctrine/dbal/src/Event/SchemaAlterTableRemoveColumnEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaAlterTableRemoveColumnEventArgs.php deleted file mode 100644 index 4122b418..00000000 --- a/vendor/doctrine/dbal/src/Event/SchemaAlterTableRemoveColumnEventArgs.php +++ /dev/null @@ -1,71 +0,0 @@ -column = $column; - $this->tableDiff = $tableDiff; - $this->platform = $platform; - } - - /** @return Column */ - public function getColumn() - { - return $this->column; - } - - /** @return TableDiff */ - public function getTableDiff() - { - return $this->tableDiff; - } - - /** @return AbstractPlatform */ - public function getPlatform() - { - return $this->platform; - } - - /** - * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead. - * - * @param string|string[] $sql - * - * @return SchemaAlterTableRemoveColumnEventArgs - */ - public function addSql($sql) - { - $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args()); - - return $this; - } - - /** @return string[] */ - public function getSql() - { - return $this->sql; - } -} diff --git a/vendor/doctrine/dbal/src/Event/SchemaAlterTableRenameColumnEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaAlterTableRenameColumnEventArgs.php deleted file mode 100644 index 21d3c164..00000000 --- a/vendor/doctrine/dbal/src/Event/SchemaAlterTableRenameColumnEventArgs.php +++ /dev/null @@ -1,82 +0,0 @@ -oldColumnName = $oldColumnName; - $this->column = $column; - $this->tableDiff = $tableDiff; - $this->platform = $platform; - } - - /** @return string */ - public function getOldColumnName() - { - return $this->oldColumnName; - } - - /** @return Column */ - public function getColumn() - { - return $this->column; - } - - /** @return TableDiff */ - public function getTableDiff() - { - return $this->tableDiff; - } - - /** @return AbstractPlatform */ - public function getPlatform() - { - return $this->platform; - } - - /** - * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead. - * - * @param string|string[] $sql - * - * @return SchemaAlterTableRenameColumnEventArgs - */ - public function addSql($sql) - { - $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args()); - - return $this; - } - - /** @return string[] */ - public function getSql() - { - return $this->sql; - } -} diff --git a/vendor/doctrine/dbal/src/Event/SchemaColumnDefinitionEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaColumnDefinitionEventArgs.php deleted file mode 100644 index 04fcbde9..00000000 --- a/vendor/doctrine/dbal/src/Event/SchemaColumnDefinitionEventArgs.php +++ /dev/null @@ -1,87 +0,0 @@ -tableColumn = $tableColumn; - $this->table = $table; - $this->database = $database; - $this->connection = $connection; - } - - /** - * Allows to clear the column which means the column will be excluded from - * tables column list. - * - * @return SchemaColumnDefinitionEventArgs - */ - public function setColumn(?Column $column = null) - { - $this->column = $column; - - return $this; - } - - /** @return Column|null */ - public function getColumn() - { - return $this->column; - } - - /** @return mixed[] */ - public function getTableColumn() - { - return $this->tableColumn; - } - - /** @return string */ - public function getTable() - { - return $this->table; - } - - /** @return string */ - public function getDatabase() - { - return $this->database; - } - - /** @return Connection */ - public function getConnection() - { - return $this->connection; - } -} diff --git a/vendor/doctrine/dbal/src/Event/SchemaCreateTableColumnEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaCreateTableColumnEventArgs.php deleted file mode 100644 index 54f134d1..00000000 --- a/vendor/doctrine/dbal/src/Event/SchemaCreateTableColumnEventArgs.php +++ /dev/null @@ -1,71 +0,0 @@ -column = $column; - $this->table = $table; - $this->platform = $platform; - } - - /** @return Column */ - public function getColumn() - { - return $this->column; - } - - /** @return Table */ - public function getTable() - { - return $this->table; - } - - /** @return AbstractPlatform */ - public function getPlatform() - { - return $this->platform; - } - - /** - * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead. - * - * @param string|string[] $sql - * - * @return SchemaCreateTableColumnEventArgs - */ - public function addSql($sql) - { - $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args()); - - return $this; - } - - /** @return string[] */ - public function getSql() - { - return $this->sql; - } -} diff --git a/vendor/doctrine/dbal/src/Event/SchemaCreateTableEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaCreateTableEventArgs.php deleted file mode 100644 index a7d548de..00000000 --- a/vendor/doctrine/dbal/src/Event/SchemaCreateTableEventArgs.php +++ /dev/null @@ -1,87 +0,0 @@ -table = $table; - $this->columns = $columns; - $this->options = $options; - $this->platform = $platform; - } - - /** @return Table */ - public function getTable() - { - return $this->table; - } - - /** @return mixed[][] */ - public function getColumns() - { - return $this->columns; - } - - /** @return mixed[] */ - public function getOptions() - { - return $this->options; - } - - /** @return AbstractPlatform */ - public function getPlatform() - { - return $this->platform; - } - - /** - * Passing multiple SQL statements as an array is deprecated. Pass each statement as an individual argument instead. - * - * @param string|string[] $sql - * - * @return SchemaCreateTableEventArgs - */ - public function addSql($sql) - { - $this->sql = array_merge($this->sql, is_array($sql) ? $sql : func_get_args()); - - return $this; - } - - /** @return string[] */ - public function getSql() - { - return $this->sql; - } -} diff --git a/vendor/doctrine/dbal/src/Event/SchemaDropTableEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaDropTableEventArgs.php deleted file mode 100644 index f45e3a15..00000000 --- a/vendor/doctrine/dbal/src/Event/SchemaDropTableEventArgs.php +++ /dev/null @@ -1,64 +0,0 @@ -table = $table; - $this->platform = $platform; - } - - /** @return string|Table */ - public function getTable() - { - return $this->table; - } - - /** @return AbstractPlatform */ - public function getPlatform() - { - return $this->platform; - } - - /** - * @param string $sql - * - * @return SchemaDropTableEventArgs - */ - public function setSql($sql) - { - $this->sql = $sql; - - return $this; - } - - /** @return string|null */ - public function getSql() - { - return $this->sql; - } -} diff --git a/vendor/doctrine/dbal/src/Event/SchemaEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaEventArgs.php deleted file mode 100644 index 77d1d390..00000000 --- a/vendor/doctrine/dbal/src/Event/SchemaEventArgs.php +++ /dev/null @@ -1,29 +0,0 @@ -preventDefault = true; - - return $this; - } - - /** @return bool */ - public function isDefaultPrevented() - { - return $this->preventDefault; - } -} diff --git a/vendor/doctrine/dbal/src/Event/SchemaIndexDefinitionEventArgs.php b/vendor/doctrine/dbal/src/Event/SchemaIndexDefinitionEventArgs.php deleted file mode 100644 index dbee55a0..00000000 --- a/vendor/doctrine/dbal/src/Event/SchemaIndexDefinitionEventArgs.php +++ /dev/null @@ -1,75 +0,0 @@ -tableIndex = $tableIndex; - $this->table = $table; - $this->connection = $connection; - } - - /** - * Allows to clear the index which means the index will be excluded from tables index list. - * - * @return SchemaIndexDefinitionEventArgs - */ - public function setIndex(?Index $index = null) - { - $this->index = $index; - - return $this; - } - - /** @return Index|null */ - public function getIndex() - { - return $this->index; - } - - /** @return mixed[] */ - public function getTableIndex() - { - return $this->tableIndex; - } - - /** @return string */ - public function getTable() - { - return $this->table; - } - - /** @return Connection */ - public function getConnection() - { - return $this->connection; - } -} diff --git a/vendor/doctrine/dbal/src/Event/TransactionBeginEventArgs.php b/vendor/doctrine/dbal/src/Event/TransactionBeginEventArgs.php deleted file mode 100644 index be4ccdf1..00000000 --- a/vendor/doctrine/dbal/src/Event/TransactionBeginEventArgs.php +++ /dev/null @@ -1,10 +0,0 @@ -connection = $connection; - } - - public function getConnection(): Connection - { - return $this->connection; - } -} diff --git a/vendor/doctrine/dbal/src/Event/TransactionRollBackEventArgs.php b/vendor/doctrine/dbal/src/Event/TransactionRollBackEventArgs.php deleted file mode 100644 index 9e6e650d..00000000 --- a/vendor/doctrine/dbal/src/Event/TransactionRollBackEventArgs.php +++ /dev/null @@ -1,10 +0,0 @@ -getMessage(); - } else { - $message = 'An exception occurred in the driver: ' . $driverException->getMessage(); - } - - parent::__construct($message, $driverException->getCode(), $driverException); - - $this->query = $query; - } - - /** - * {@inheritDoc} - */ - public function getSQLState() - { - $previous = $this->getPrevious(); - assert($previous instanceof TheDriverException); - - return $previous->getSQLState(); - } - - public function getQuery(): ?Query - { - return $this->query; - } -} diff --git a/vendor/doctrine/dbal/src/Exception/ForeignKeyConstraintViolationException.php b/vendor/doctrine/dbal/src/Exception/ForeignKeyConstraintViolationException.php deleted file mode 100644 index f1a612b2..00000000 --- a/vendor/doctrine/dbal/src/Exception/ForeignKeyConstraintViolationException.php +++ /dev/null @@ -1,12 +0,0 @@ -|array */ - private array $originalParameters; - - /** @var array|array */ - private array $originalTypes; - - private int $originalParameterIndex = 0; - - /** @var list */ - private array $convertedSQL = []; - - /** @var list */ - private array $convertedParameters = []; - - /** @var array */ - private array $convertedTypes = []; - - /** - * @param array|array $parameters - * @param array|array $types - */ - public function __construct(array $parameters, array $types) - { - $this->originalParameters = $parameters; - $this->originalTypes = $types; - } - - public function acceptPositionalParameter(string $sql): void - { - $index = $this->originalParameterIndex; - - if (! array_key_exists($index, $this->originalParameters)) { - throw MissingPositionalParameter::new($index); - } - - $this->acceptParameter($index, $this->originalParameters[$index]); - - $this->originalParameterIndex++; - } - - public function acceptNamedParameter(string $sql): void - { - $name = substr($sql, 1); - - if (! array_key_exists($name, $this->originalParameters)) { - throw MissingNamedParameter::new($name); - } - - $this->acceptParameter($name, $this->originalParameters[$name]); - } - - public function acceptOther(string $sql): void - { - $this->convertedSQL[] = $sql; - } - - public function getSQL(): string - { - return implode('', $this->convertedSQL); - } - - /** @return list */ - public function getParameters(): array - { - return $this->convertedParameters; - } - - /** - * @param int|string $key - * @param mixed $value - */ - private function acceptParameter($key, $value): void - { - if (! isset($this->originalTypes[$key])) { - $this->convertedSQL[] = '?'; - $this->convertedParameters[] = $value; - - return; - } - - $type = $this->originalTypes[$key]; - - if ( - $type !== ArrayParameterType::INTEGER - && $type !== ArrayParameterType::STRING - && $type !== ArrayParameterType::ASCII - && $type !== ArrayParameterType::BINARY - ) { - $this->appendTypedParameter([$value], $type); - - return; - } - - if (count($value) === 0) { - $this->convertedSQL[] = 'NULL'; - - return; - } - - $this->appendTypedParameter($value, ArrayParameterType::toElementParameterType($type)); - } - - /** @return array */ - public function getTypes(): array - { - return $this->convertedTypes; - } - - /** - * @param list $values - * @param Type|int|string|null $type - */ - private function appendTypedParameter(array $values, $type): void - { - $this->convertedSQL[] = implode(', ', array_fill(0, count($values), '?')); - - $index = count($this->convertedParameters); - - foreach ($values as $value) { - $this->convertedParameters[] = $value; - $this->convertedTypes[$index] = $type; - - $index++; - } - } -} diff --git a/vendor/doctrine/dbal/src/FetchMode.php b/vendor/doctrine/dbal/src/FetchMode.php deleted file mode 100644 index d80719f2..00000000 --- a/vendor/doctrine/dbal/src/FetchMode.php +++ /dev/null @@ -1,20 +0,0 @@ -getDriver() instanceof Driver\PDO\SQLite\Driver) { - throw new Exception('Cannot use TableGenerator with SQLite.'); - } - - $this->conn = DriverManager::getConnection( - $conn->getParams(), - $conn->getConfiguration(), - $conn->getEventManager(), - ); - - $this->generatorTableName = $generatorTableName; - } - - /** - * Generates the next unused value for the given sequence name. - * - * @param string $sequence - * - * @return int - * - * @throws Exception - */ - public function nextValue($sequence) - { - if (isset($this->sequences[$sequence])) { - $value = $this->sequences[$sequence]['value']; - $this->sequences[$sequence]['value']++; - if ($this->sequences[$sequence]['value'] >= $this->sequences[$sequence]['max']) { - unset($this->sequences[$sequence]); - } - - return $value; - } - - $this->conn->beginTransaction(); - - try { - $row = $this->conn->createQueryBuilder() - ->select('sequence_value', 'sequence_increment_by') - ->from($this->generatorTableName) - ->where('sequence_name = ?') - ->forUpdate() - ->setParameter(1, $sequence) - ->fetchAssociative(); - - if ($row !== false) { - $row = array_change_key_case($row, CASE_LOWER); - - $value = $row['sequence_value']; - $value++; - - assert(is_int($value)); - - if ($row['sequence_increment_by'] > 1) { - $this->sequences[$sequence] = [ - 'value' => $value, - 'max' => $row['sequence_value'] + $row['sequence_increment_by'], - ]; - } - - $sql = 'UPDATE ' . $this->generatorTableName . ' ' . - 'SET sequence_value = sequence_value + sequence_increment_by ' . - 'WHERE sequence_name = ? AND sequence_value = ?'; - $rows = $this->conn->executeStatement($sql, [$sequence, $row['sequence_value']]); - - if ($rows !== 1) { - throw new Exception('Race-condition detected while updating sequence. Aborting generation'); - } - } else { - $this->conn->insert( - $this->generatorTableName, - ['sequence_name' => $sequence, 'sequence_value' => 1, 'sequence_increment_by' => 1], - ); - $value = 1; - } - - $this->conn->commit(); - } catch (Throwable $e) { - $this->conn->rollBack(); - - throw new Exception( - 'Error occurred while generating ID with TableGenerator, aborted generation: ' . $e->getMessage(), - 0, - $e, - ); - } - - return $value; - } -} diff --git a/vendor/doctrine/dbal/src/Id/TableGeneratorSchemaVisitor.php b/vendor/doctrine/dbal/src/Id/TableGeneratorSchemaVisitor.php deleted file mode 100644 index 75c9fe9c..00000000 --- a/vendor/doctrine/dbal/src/Id/TableGeneratorSchemaVisitor.php +++ /dev/null @@ -1,77 +0,0 @@ -generatorTableName = $generatorTableName; - } - - /** - * {@inheritDoc} - */ - public function acceptSchema(Schema $schema) - { - $table = $schema->createTable($this->generatorTableName); - $table->addColumn('sequence_name', 'string'); - $table->addColumn('sequence_value', 'integer', ['default' => 1]); - $table->addColumn('sequence_increment_by', 'integer', ['default' => 1]); - } - - /** - * {@inheritDoc} - */ - public function acceptTable(Table $table) - { - } - - /** - * {@inheritDoc} - */ - public function acceptColumn(Table $table, Column $column) - { - } - - /** - * {@inheritDoc} - */ - public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint) - { - } - - /** - * {@inheritDoc} - */ - public function acceptIndex(Table $table, Index $index) - { - } - - /** - * {@inheritDoc} - */ - public function acceptSequence(Sequence $sequence) - { - } -} diff --git a/vendor/doctrine/dbal/src/LockMode.php b/vendor/doctrine/dbal/src/LockMode.php deleted file mode 100644 index 1a7ed239..00000000 --- a/vendor/doctrine/dbal/src/LockMode.php +++ /dev/null @@ -1,23 +0,0 @@ -logger = $logger; - } - - public function __destruct() - { - $this->logger->info('Disconnecting'); - } - - public function prepare(string $sql): DriverStatement - { - return new Statement( - parent::prepare($sql), - $this->logger, - $sql, - ); - } - - public function query(string $sql): Result - { - $this->logger->debug('Executing query: {sql}', ['sql' => $sql]); - - return parent::query($sql); - } - - public function exec(string $sql): int - { - $this->logger->debug('Executing statement: {sql}', ['sql' => $sql]); - - return parent::exec($sql); - } - - /** - * {@inheritDoc} - */ - public function beginTransaction() - { - $this->logger->debug('Beginning transaction'); - - return parent::beginTransaction(); - } - - /** - * {@inheritDoc} - */ - public function commit() - { - $this->logger->debug('Committing transaction'); - - return parent::commit(); - } - - /** - * {@inheritDoc} - */ - public function rollBack() - { - $this->logger->debug('Rolling back transaction'); - - return parent::rollBack(); - } -} diff --git a/vendor/doctrine/dbal/src/Logging/DebugStack.php b/vendor/doctrine/dbal/src/Logging/DebugStack.php deleted file mode 100644 index 1a970d06..00000000 --- a/vendor/doctrine/dbal/src/Logging/DebugStack.php +++ /dev/null @@ -1,75 +0,0 @@ -> - */ - public $queries = []; - - /** - * If Debug Stack is enabled (log queries) or not. - * - * @var bool - */ - public $enabled = true; - - /** @var float|null */ - public $start = null; - - /** @var int */ - public $currentQuery = 0; - - public function __construct() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4967', - 'DebugStack is deprecated.', - ); - } - - /** - * {@inheritDoc} - */ - public function startQuery($sql, ?array $params = null, ?array $types = null) - { - if (! $this->enabled) { - return; - } - - $this->start = microtime(true); - - $this->queries[++$this->currentQuery] = [ - 'sql' => $sql, - 'params' => $params, - 'types' => $types, - 'executionMS' => 0, - ]; - } - - /** - * {@inheritDoc} - */ - public function stopQuery() - { - if (! $this->enabled) { - return; - } - - $this->queries[$this->currentQuery]['executionMS'] = microtime(true) - $this->start; - } -} diff --git a/vendor/doctrine/dbal/src/Logging/Driver.php b/vendor/doctrine/dbal/src/Logging/Driver.php deleted file mode 100644 index 32a5cd2c..00000000 --- a/vendor/doctrine/dbal/src/Logging/Driver.php +++ /dev/null @@ -1,58 +0,0 @@ -logger = $logger; - } - - /** - * {@inheritDoc} - */ - public function connect( - #[SensitiveParameter] - array $params - ) { - $this->logger->info('Connecting with parameters {params}', ['params' => $this->maskPassword($params)]); - - return new Connection( - parent::connect($params), - $this->logger, - ); - } - - /** - * @param array $params Connection parameters - * - * @return array - */ - private function maskPassword( - #[SensitiveParameter] - array $params - ): array { - if (isset($params['password'])) { - $params['password'] = ''; - } - - if (isset($params['url'])) { - $params['url'] = ''; - } - - return $params; - } -} diff --git a/vendor/doctrine/dbal/src/Logging/LoggerChain.php b/vendor/doctrine/dbal/src/Logging/LoggerChain.php deleted file mode 100644 index 7a4eaa49..00000000 --- a/vendor/doctrine/dbal/src/Logging/LoggerChain.php +++ /dev/null @@ -1,48 +0,0 @@ - */ - private iterable $loggers; - - /** @param iterable $loggers */ - public function __construct(iterable $loggers = []) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4967', - 'LoggerChain is deprecated', - ); - - $this->loggers = $loggers; - } - - /** - * {@inheritDoc} - */ - public function startQuery($sql, ?array $params = null, ?array $types = null) - { - foreach ($this->loggers as $logger) { - $logger->startQuery($sql, $params, $types); - } - } - - /** - * {@inheritDoc} - */ - public function stopQuery() - { - foreach ($this->loggers as $logger) { - $logger->stopQuery(); - } - } -} diff --git a/vendor/doctrine/dbal/src/Logging/Middleware.php b/vendor/doctrine/dbal/src/Logging/Middleware.php deleted file mode 100644 index da0c1b90..00000000 --- a/vendor/doctrine/dbal/src/Logging/Middleware.php +++ /dev/null @@ -1,24 +0,0 @@ -logger = $logger; - } - - public function wrap(DriverInterface $driver): DriverInterface - { - return new Driver($driver, $this->logger); - } -} diff --git a/vendor/doctrine/dbal/src/Logging/SQLLogger.php b/vendor/doctrine/dbal/src/Logging/SQLLogger.php deleted file mode 100644 index dab4a3a7..00000000 --- a/vendor/doctrine/dbal/src/Logging/SQLLogger.php +++ /dev/null @@ -1,32 +0,0 @@ -|array|null $params Statement parameters - * @param array|array|null $types Parameter types - * - * @return void - */ - public function startQuery($sql, ?array $params = null, ?array $types = null); - - /** - * Marks the last started query as stopped. This can be used for timing of queries. - * - * @return void - */ - public function stopQuery(); -} diff --git a/vendor/doctrine/dbal/src/Logging/Statement.php b/vendor/doctrine/dbal/src/Logging/Statement.php deleted file mode 100644 index 039b93b6..00000000 --- a/vendor/doctrine/dbal/src/Logging/Statement.php +++ /dev/null @@ -1,100 +0,0 @@ -|array */ - private array $params = []; - - /** @var array|array */ - private array $types = []; - - /** @internal This statement can be only instantiated by its connection. */ - public function __construct(StatementInterface $statement, LoggerInterface $logger, string $sql) - { - parent::__construct($statement); - - $this->logger = $logger; - $this->sql = $sql; - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see bindValue()} instead. - */ - public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5563', - '%s is deprecated. Use bindValue() instead.', - __METHOD__, - ); - - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindParam() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - $this->params[$param] = &$variable; - $this->types[$param] = $type; - - return parent::bindParam($param, $variable, $type, ...array_slice(func_get_args(), 3)); - } - - /** - * {@inheritDoc} - */ - public function bindValue($param, $value, $type = ParameterType::STRING) - { - if (func_num_args() < 3) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5558', - 'Not passing $type to Statement::bindValue() is deprecated.' - . ' Pass the type corresponding to the parameter being bound.', - ); - } - - $this->params[$param] = $value; - $this->types[$param] = $type; - - return parent::bindValue($param, $value, $type); - } - - /** - * {@inheritDoc} - */ - public function execute($params = null): ResultInterface - { - $this->logger->debug('Executing statement: {sql} (parameters: {params}, types: {types})', [ - 'sql' => $this->sql, - 'params' => $params ?? $this->params, - 'types' => $this->types, - ]); - - return parent::execute($params); - } -} diff --git a/vendor/doctrine/dbal/src/ParameterType.php b/vendor/doctrine/dbal/src/ParameterType.php deleted file mode 100644 index 77917e87..00000000 --- a/vendor/doctrine/dbal/src/ParameterType.php +++ /dev/null @@ -1,57 +0,0 @@ - 0) { - $query .= sprintf(' OFFSET %d', $offset); - } - } elseif ($offset > 0) { - // 2^64-1 is the maximum of unsigned BIGINT, the biggest limit possible - $query .= sprintf(' LIMIT 18446744073709551615 OFFSET %d', $offset); - } - - return $query; - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see quoteIdentifier()} to quote identifiers instead. - */ - public function getIdentifierQuoteCharacter() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5388', - 'AbstractMySQLPlatform::getIdentifierQuoteCharacter() is deprecated. Use quoteIdentifier() instead.', - ); - - return '`'; - } - - /** - * {@inheritDoc} - */ - public function getRegexpExpression() - { - return 'RLIKE'; - } - - /** - * {@inheritDoc} - */ - public function getLocateExpression($str, $substr, $startPos = false) - { - if ($startPos === false) { - return 'LOCATE(' . $substr . ', ' . $str . ')'; - } - - return 'LOCATE(' . $substr . ', ' . $str . ', ' . $startPos . ')'; - } - - /** - * {@inheritDoc} - */ - public function getConcatExpression() - { - return sprintf('CONCAT(%s)', implode(', ', func_get_args())); - } - - /** - * {@inheritDoc} - */ - protected function getDateArithmeticIntervalExpression($date, $operator, $interval, $unit) - { - $function = $operator === '+' ? 'DATE_ADD' : 'DATE_SUB'; - - return $function . '(' . $date . ', INTERVAL ' . $interval . ' ' . $unit . ')'; - } - - /** - * {@inheritDoc} - */ - public function getDateDiffExpression($date1, $date2) - { - return 'DATEDIFF(' . $date1 . ', ' . $date2 . ')'; - } - - public function getCurrentDatabaseExpression(): string - { - return 'DATABASE()'; - } - - /** - * {@inheritDoc} - */ - public function getLengthExpression($column) - { - return 'CHAR_LENGTH(' . $column . ')'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListDatabasesSQL() - { - return 'SHOW DATABASES'; - } - - /** - * @deprecated - * - * {@inheritDoc} - */ - public function getListTableConstraintsSQL($table) - { - return 'SHOW INDEX FROM ' . $table; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - * - * Two approaches to listing the table indexes. The information_schema is - * preferred, because it doesn't cause problems with SQL keywords such as "order" or "table". - */ - public function getListTableIndexesSQL($table, $database = null) - { - if ($database !== null) { - return 'SELECT NON_UNIQUE AS Non_Unique, INDEX_NAME AS Key_name, COLUMN_NAME AS Column_Name,' . - ' SUB_PART AS Sub_Part, INDEX_TYPE AS Index_Type' . - ' FROM information_schema.STATISTICS WHERE TABLE_NAME = ' . $this->quoteStringLiteral($table) . - ' AND TABLE_SCHEMA = ' . $this->quoteStringLiteral($database) . - ' ORDER BY SEQ_IN_INDEX ASC'; - } - - return 'SHOW INDEX FROM ' . $table; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListViewsSQL($database) - { - return 'SELECT * FROM information_schema.VIEWS WHERE TABLE_SCHEMA = ' . $this->quoteStringLiteral($database); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * @param string $table - * @param string|null $database - * - * @return string - */ - public function getListTableForeignKeysSQL($table, $database = null) - { - // The schema name is passed multiple times as a literal in the WHERE clause instead of using a JOIN condition - // in order to avoid performance issues on MySQL older than 8.0 and the corresponding MariaDB versions - // caused by https://bugs.mysql.com/bug.php?id=81347 - return 'SELECT k.CONSTRAINT_NAME, k.COLUMN_NAME, k.REFERENCED_TABLE_NAME, ' . - 'k.REFERENCED_COLUMN_NAME /*!50116 , c.UPDATE_RULE, c.DELETE_RULE */ ' . - 'FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE k /*!50116 ' . - 'INNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS c ON ' . - 'c.CONSTRAINT_NAME = k.CONSTRAINT_NAME AND ' . - 'c.TABLE_NAME = k.TABLE_NAME */ ' . - 'WHERE k.TABLE_NAME = ' . $this->quoteStringLiteral($table) . ' ' . - 'AND k.TABLE_SCHEMA = ' . $this->getDatabaseNameSQL($database) . ' /*!50116 ' . - 'AND c.CONSTRAINT_SCHEMA = ' . $this->getDatabaseNameSQL($database) . ' */' . - 'ORDER BY k.ORDINAL_POSITION'; - } - - /** - * {@inheritDoc} - */ - protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - if ($length <= 0 || (func_num_args() > 2 && func_get_arg(2))) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default string column length on MySQL is deprecated' - . ', specify the length explicitly.', - ); - } - - return $fixed ? ($length > 0 ? 'CHAR(' . $length . ')' : 'CHAR(255)') - : ($length > 0 ? 'VARCHAR(' . $length . ')' : 'VARCHAR(255)'); - } - - /** - * {@inheritDoc} - */ - protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - if ($length <= 0 || (func_num_args() > 2 && func_get_arg(2))) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default binary column length on MySQL is deprecated' - . ', specify the length explicitly.', - ); - } - - return $fixed - ? 'BINARY(' . ($length > 0 ? $length : 255) . ')' - : 'VARBINARY(' . ($length > 0 ? $length : 255) . ')'; - } - - /** - * Gets the SQL snippet used to declare a CLOB column type. - * TINYTEXT : 2 ^ 8 - 1 = 255 - * TEXT : 2 ^ 16 - 1 = 65535 - * MEDIUMTEXT : 2 ^ 24 - 1 = 16777215 - * LONGTEXT : 2 ^ 32 - 1 = 4294967295 - * - * {@inheritDoc} - */ - public function getClobTypeDeclarationSQL(array $column) - { - if (! empty($column['length']) && is_numeric($column['length'])) { - $length = $column['length']; - - if ($length <= static::LENGTH_LIMIT_TINYTEXT) { - return 'TINYTEXT'; - } - - if ($length <= static::LENGTH_LIMIT_TEXT) { - return 'TEXT'; - } - - if ($length <= static::LENGTH_LIMIT_MEDIUMTEXT) { - return 'MEDIUMTEXT'; - } - } - - return 'LONGTEXT'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTypeDeclarationSQL(array $column) - { - if (isset($column['version']) && $column['version'] === true) { - return 'TIMESTAMP'; - } - - return 'DATETIME'; - } - - /** - * {@inheritDoc} - */ - public function getDateTypeDeclarationSQL(array $column) - { - return 'DATE'; - } - - /** - * {@inheritDoc} - */ - public function getTimeTypeDeclarationSQL(array $column) - { - return 'TIME'; - } - - /** - * {@inheritDoc} - */ - public function getBooleanTypeDeclarationSQL(array $column) - { - return 'TINYINT(1)'; - } - - /** - * {@inheritDoc} - * - * @deprecated - * - * MySQL prefers "autoincrement" identity columns since sequences can only - * be emulated with a table. - */ - public function prefersIdentityColumns() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/1519', - 'AbstractMySQLPlatform::prefersIdentityColumns() is deprecated.', - ); - - return true; - } - - /** - * {@inheritDoc} - * - * MySQL supports this through AUTO_INCREMENT columns. - */ - public function supportsIdentityColumns() - { - return true; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsInlineColumnComments() - { - return true; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsColumnCollation() - { - return true; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTablesSQL() - { - return "SHOW FULL TABLES WHERE Table_type = 'BASE TABLE'"; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableColumnsSQL($table, $database = null) - { - return 'SELECT COLUMN_NAME AS Field, COLUMN_TYPE AS Type, IS_NULLABLE AS `Null`, ' . - 'COLUMN_KEY AS `Key`, COLUMN_DEFAULT AS `Default`, EXTRA AS Extra, COLUMN_COMMENT AS Comment, ' . - 'CHARACTER_SET_NAME AS CharacterSet, COLLATION_NAME AS Collation ' . - 'FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ' . $this->getDatabaseNameSQL($database) . - ' AND TABLE_NAME = ' . $this->quoteStringLiteral($table) . - ' ORDER BY ORDINAL_POSITION ASC'; - } - - /** - * @deprecated Use {@see getColumnTypeSQLSnippet()} instead. - * - * The SQL snippets required to elucidate a column type - * - * Returns an array of the form [column type SELECT snippet, additional JOIN statement snippet] - * - * @return array{string, string} - */ - public function getColumnTypeSQLSnippets(string $tableAlias = 'c'): array - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6202', - 'AbstractMySQLPlatform::getColumnTypeSQLSnippets() is deprecated. ' - . 'Use AbstractMySQLPlatform::getColumnTypeSQLSnippet() instead.', - ); - - return [$this->getColumnTypeSQLSnippet(...func_get_args()), '']; - } - - /** - * The SQL snippet required to elucidate a column type - * - * Returns a column type SELECT snippet string - */ - public function getColumnTypeSQLSnippet(string $tableAlias = 'c', ?string $databaseName = null): string - { - return $tableAlias . '.COLUMN_TYPE'; - } - - /** @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. */ - public function getListTableMetadataSQL(string $table, ?string $database = null): string - { - return sprintf( - <<<'SQL' -SELECT t.ENGINE, - t.AUTO_INCREMENT, - t.TABLE_COMMENT, - t.CREATE_OPTIONS, - t.TABLE_COLLATION, - ccsa.CHARACTER_SET_NAME -FROM information_schema.TABLES t - INNER JOIN information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` ccsa - ON ccsa.COLLATION_NAME = t.TABLE_COLLATION -WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA = %s AND TABLE_NAME = %s -SQL - , - $this->getDatabaseNameSQL($database), - $this->quoteStringLiteral($table), - ); - } - - /** - * {@inheritDoc} - */ - public function getCreateTablesSQL(array $tables): array - { - $sql = []; - - foreach ($tables as $table) { - $sql = array_merge($sql, $this->getCreateTableWithoutForeignKeysSQL($table)); - } - - foreach ($tables as $table) { - if (! $table->hasOption('engine') || $this->engineSupportsForeignKeys($table->getOption('engine'))) { - foreach ($table->getForeignKeys() as $foreignKey) { - $sql[] = $this->getCreateForeignKeySQL( - $foreignKey, - $table->getQuotedName($this), - ); - } - } elseif (count($table->getForeignKeys()) > 0) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5414', - 'Relying on the DBAL not generating DDL for foreign keys on MySQL engines' - . ' other than InnoDB is deprecated.' - . ' Define foreign key constraints only if they are necessary.', - ); - } - } - - return $sql; - } - - /** - * {@inheritDoc} - */ - protected function _getCreateTableSQL($name, array $columns, array $options = []) - { - $queryFields = $this->getColumnDeclarationListSQL($columns); - - if (isset($options['uniqueConstraints']) && ! empty($options['uniqueConstraints'])) { - foreach ($options['uniqueConstraints'] as $constraintName => $definition) { - $queryFields .= ', ' . $this->getUniqueConstraintDeclarationSQL($constraintName, $definition); - } - } - - // add all indexes - if (isset($options['indexes']) && ! empty($options['indexes'])) { - foreach ($options['indexes'] as $indexName => $definition) { - $queryFields .= ', ' . $this->getIndexDeclarationSQL($indexName, $definition); - } - } - - // attach all primary keys - if (isset($options['primary']) && ! empty($options['primary'])) { - $keyColumns = array_unique(array_values($options['primary'])); - $queryFields .= ', PRIMARY KEY(' . implode(', ', $keyColumns) . ')'; - } - - $query = 'CREATE '; - - if (! empty($options['temporary'])) { - $query .= 'TEMPORARY '; - } - - $query .= 'TABLE ' . $name . ' (' . $queryFields . ') '; - $query .= $this->buildTableOptions($options); - $query .= $this->buildPartitionOptions($options); - - $sql = [$query]; - - // Propagate foreign key constraints only for InnoDB. - if (isset($options['foreignKeys'])) { - if (! isset($options['engine']) || $this->engineSupportsForeignKeys($options['engine'])) { - foreach ($options['foreignKeys'] as $definition) { - $sql[] = $this->getCreateForeignKeySQL($definition, $name); - } - } elseif (count($options['foreignKeys']) > 0) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5414', - 'Relying on the DBAL not generating DDL for foreign keys on MySQL engines' - . ' other than InnoDB is deprecated.' - . ' Define foreign key constraints only if they are necessary.', - ); - } - } - - return $sql; - } - - public function createSelectSQLBuilder(): SelectSQLBuilder - { - return new DefaultSelectSQLBuilder($this, 'FOR UPDATE', null); - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getDefaultValueDeclarationSQL($column) - { - // Unset the default value if the given column definition does not allow default values. - if ($column['type'] instanceof TextType || $column['type'] instanceof BlobType) { - $column['default'] = null; - } - - return parent::getDefaultValueDeclarationSQL($column); - } - - /** - * Build SQL for table options - * - * @param mixed[] $options - */ - private function buildTableOptions(array $options): string - { - if (isset($options['table_options'])) { - return $options['table_options']; - } - - $tableOptions = []; - - // Charset - if (! isset($options['charset'])) { - $options['charset'] = 'utf8'; - } - - $tableOptions[] = sprintf('DEFAULT CHARACTER SET %s', $options['charset']); - - if (isset($options['collate'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5214', - 'The "collate" option is deprecated in favor of "collation" and will be removed in 4.0.', - ); - $options['collation'] = $options['collate']; - } - - // Collation - if (! isset($options['collation'])) { - $options['collation'] = $options['charset'] . '_unicode_ci'; - } - - $tableOptions[] = $this->getColumnCollationDeclarationSQL($options['collation']); - - // Engine - if (! isset($options['engine'])) { - $options['engine'] = 'InnoDB'; - } - - $tableOptions[] = sprintf('ENGINE = %s', $options['engine']); - - // Auto increment - if (isset($options['auto_increment'])) { - $tableOptions[] = sprintf('AUTO_INCREMENT = %s', $options['auto_increment']); - } - - // Comment - if (isset($options['comment'])) { - $tableOptions[] = sprintf('COMMENT = %s ', $this->quoteStringLiteral($options['comment'])); - } - - // Row format - if (isset($options['row_format'])) { - $tableOptions[] = sprintf('ROW_FORMAT = %s', $options['row_format']); - } - - return implode(' ', $tableOptions); - } - - /** - * Build SQL for partition options. - * - * @param mixed[] $options - */ - private function buildPartitionOptions(array $options): string - { - return isset($options['partition_options']) - ? ' ' . $options['partition_options'] - : ''; - } - - private function engineSupportsForeignKeys(string $engine): bool - { - return strcasecmp(trim($engine), 'InnoDB') === 0; - } - - /** - * {@inheritDoc} - */ - public function getAlterTableSQL(TableDiff $diff) - { - $columnSql = []; - $queryParts = []; - $newName = $diff->getNewName(); - - if ($newName !== false) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5663', - 'Generation of SQL that renames a table using %s is deprecated. Use getRenameTableSQL() instead.', - __METHOD__, - ); - - $queryParts[] = 'RENAME TO ' . $newName->getQuotedName($this); - } - - foreach ($diff->getAddedColumns() as $column) { - if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) { - continue; - } - - $columnProperties = array_merge($column->toArray(), [ - 'comment' => $this->getColumnComment($column), - ]); - - $queryParts[] = 'ADD ' . $this->getColumnDeclarationSQL( - $column->getQuotedName($this), - $columnProperties, - ); - } - - foreach ($diff->getDroppedColumns() as $column) { - if ($this->onSchemaAlterTableRemoveColumn($column, $diff, $columnSql)) { - continue; - } - - $queryParts[] = 'DROP ' . $column->getQuotedName($this); - } - - foreach ($diff->getModifiedColumns() as $columnDiff) { - if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) { - continue; - } - - $newColumn = $columnDiff->getNewColumn(); - - $newColumnProperties = array_merge($newColumn->toArray(), [ - 'comment' => $this->getColumnComment($newColumn), - ]); - - $oldColumn = $columnDiff->getOldColumn() ?? $columnDiff->getOldColumnName(); - - $queryParts[] = 'CHANGE ' . $oldColumn->getQuotedName($this) . ' ' - . $this->getColumnDeclarationSQL($newColumn->getQuotedName($this), $newColumnProperties); - } - - foreach ($diff->getRenamedColumns() as $oldColumnName => $column) { - if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $column, $diff, $columnSql)) { - continue; - } - - $oldColumnName = new Identifier($oldColumnName); - - $columnProperties = array_merge($column->toArray(), [ - 'comment' => $this->getColumnComment($column), - ]); - - $queryParts[] = 'CHANGE ' . $oldColumnName->getQuotedName($this) . ' ' - . $this->getColumnDeclarationSQL($column->getQuotedName($this), $columnProperties); - } - - $addedIndexes = $this->indexAssetsByLowerCaseName($diff->getAddedIndexes()); - $modifiedIndexes = $this->indexAssetsByLowerCaseName($diff->getModifiedIndexes()); - $diffModified = false; - - if (isset($addedIndexes['primary'])) { - $keyColumns = array_unique(array_values($addedIndexes['primary']->getColumns())); - $queryParts[] = 'ADD PRIMARY KEY (' . implode(', ', $keyColumns) . ')'; - unset($addedIndexes['primary']); - $diffModified = true; - } elseif (isset($modifiedIndexes['primary'])) { - $addedColumns = $this->indexAssetsByLowerCaseName($diff->getAddedColumns()); - - // Necessary in case the new primary key includes a new auto_increment column - foreach ($modifiedIndexes['primary']->getColumns() as $columnName) { - if (isset($addedColumns[$columnName]) && $addedColumns[$columnName]->getAutoincrement()) { - $keyColumns = array_unique(array_values($modifiedIndexes['primary']->getColumns())); - $queryParts[] = 'DROP PRIMARY KEY'; - $queryParts[] = 'ADD PRIMARY KEY (' . implode(', ', $keyColumns) . ')'; - unset($modifiedIndexes['primary']); - $diffModified = true; - break; - } - } - } - - if ($diffModified) { - $diff = new TableDiff( - $diff->name, - $diff->getAddedColumns(), - $diff->getModifiedColumns(), - $diff->getDroppedColumns(), - array_values($addedIndexes), - array_values($modifiedIndexes), - $diff->getDroppedIndexes(), - $diff->getOldTable(), - $diff->getAddedForeignKeys(), - $diff->getModifiedForeignKeys(), - $diff->getDroppedForeignKeys(), - $diff->getRenamedColumns(), - $diff->getRenamedIndexes(), - ); - } - - $sql = []; - $tableSql = []; - - if (! $this->onSchemaAlterTable($diff, $tableSql)) { - if (count($queryParts) > 0) { - $sql[] = 'ALTER TABLE ' . ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this) . ' ' - . implode(', ', $queryParts); - } - - $sql = array_merge( - $this->getPreAlterTableIndexForeignKeySQL($diff), - $sql, - $this->getPostAlterTableIndexForeignKeySQL($diff), - ); - } - - return array_merge($sql, $tableSql, $columnSql); - } - - /** - * {@inheritDoc} - */ - protected function getPreAlterTableIndexForeignKeySQL(TableDiff $diff) - { - $sql = []; - - $tableNameSQL = ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this); - - foreach ($diff->getModifiedIndexes() as $changedIndex) { - $sql = array_merge($sql, $this->getPreAlterTableAlterPrimaryKeySQL($diff, $changedIndex)); - } - - foreach ($diff->getDroppedIndexes() as $droppedIndex) { - $sql = array_merge($sql, $this->getPreAlterTableAlterPrimaryKeySQL($diff, $droppedIndex)); - - foreach ($diff->getAddedIndexes() as $addedIndex) { - if ($droppedIndex->getColumns() !== $addedIndex->getColumns()) { - continue; - } - - $indexClause = 'INDEX ' . $addedIndex->getName(); - - if ($addedIndex->isPrimary()) { - $indexClause = 'PRIMARY KEY'; - } elseif ($addedIndex->isUnique()) { - $indexClause = 'UNIQUE INDEX ' . $addedIndex->getName(); - } - - $query = 'ALTER TABLE ' . $tableNameSQL . ' DROP INDEX ' . $droppedIndex->getName() . ', '; - $query .= 'ADD ' . $indexClause; - $query .= ' (' . $this->getIndexFieldDeclarationListSQL($addedIndex) . ')'; - - $sql[] = $query; - - $diff->unsetAddedIndex($addedIndex); - $diff->unsetDroppedIndex($droppedIndex); - - break; - } - } - - $engine = 'INNODB'; - - $table = $diff->getOldTable(); - - if ($table !== null && $table->hasOption('engine')) { - $engine = strtoupper(trim($table->getOption('engine'))); - } - - // Suppress foreign key constraint propagation on non-supporting engines. - if ($engine !== 'INNODB') { - $diff->addedForeignKeys = []; - $diff->changedForeignKeys = []; - $diff->removedForeignKeys = []; - } - - $sql = array_merge( - $sql, - $this->getPreAlterTableAlterIndexForeignKeySQL($diff), - parent::getPreAlterTableIndexForeignKeySQL($diff), - $this->getPreAlterTableRenameIndexForeignKeySQL($diff), - ); - - return $sql; - } - - /** - * @return string[] - * - * @throws Exception - */ - private function getPreAlterTableAlterPrimaryKeySQL(TableDiff $diff, Index $index): array - { - if (! $index->isPrimary()) { - return []; - } - - $table = $diff->getOldTable(); - - if ($table === null) { - return []; - } - - $sql = []; - - $tableNameSQL = ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this); - - // Dropping primary keys requires to unset autoincrement attribute on the particular column first. - foreach ($index->getColumns() as $columnName) { - if (! $table->hasColumn($columnName)) { - continue; - } - - $column = $table->getColumn($columnName); - - if ($column->getAutoincrement() !== true) { - continue; - } - - $column->setAutoincrement(false); - - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' MODIFY ' . - $this->getColumnDeclarationSQL($column->getQuotedName($this), $column->toArray()); - - // original autoincrement information might be needed later on by other parts of the table alteration - $column->setAutoincrement(true); - } - - return $sql; - } - - /** - * @param TableDiff $diff The table diff to gather the SQL for. - * - * @return string[] - * - * @throws Exception - */ - private function getPreAlterTableAlterIndexForeignKeySQL(TableDiff $diff): array - { - $table = $diff->getOldTable(); - - if ($table === null) { - return []; - } - - $primaryKey = $table->getPrimaryKey(); - - if ($primaryKey === null) { - return []; - } - - $primaryKeyColumns = []; - - foreach ($primaryKey->getColumns() as $columnName) { - if (! $table->hasColumn($columnName)) { - continue; - } - - $primaryKeyColumns[] = $table->getColumn($columnName); - } - - if (count($primaryKeyColumns) === 0) { - return []; - } - - $sql = []; - - $tableNameSQL = $table->getQuotedName($this); - - foreach ($diff->getModifiedIndexes() as $changedIndex) { - // Changed primary key - if (! $changedIndex->isPrimary()) { - continue; - } - - foreach ($primaryKeyColumns as $column) { - // Check if an autoincrement column was dropped from the primary key. - if (! $column->getAutoincrement() || in_array($column->getName(), $changedIndex->getColumns(), true)) { - continue; - } - - // The autoincrement attribute needs to be removed from the dropped column - // before we can drop and recreate the primary key. - $column->setAutoincrement(false); - - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' MODIFY ' . - $this->getColumnDeclarationSQL($column->getQuotedName($this), $column->toArray()); - - // Restore the autoincrement attribute as it might be needed later on - // by other parts of the table alteration. - $column->setAutoincrement(true); - } - } - - return $sql; - } - - /** - * @param TableDiff $diff The table diff to gather the SQL for. - * - * @return string[] - */ - protected function getPreAlterTableRenameIndexForeignKeySQL(TableDiff $diff) - { - $sql = []; - - $tableNameSQL = ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this); - - foreach ($this->getRemainingForeignKeyConstraintsRequiringRenamedIndexes($diff) as $foreignKey) { - if (in_array($foreignKey, $diff->getModifiedForeignKeys(), true)) { - continue; - } - - $sql[] = $this->getDropForeignKeySQL($foreignKey->getQuotedName($this), $tableNameSQL); - } - - return $sql; - } - - /** - * Returns the remaining foreign key constraints that require one of the renamed indexes. - * - * "Remaining" here refers to the diff between the foreign keys currently defined in the associated - * table and the foreign keys to be removed. - * - * @param TableDiff $diff The table diff to evaluate. - * - * @return ForeignKeyConstraint[] - */ - private function getRemainingForeignKeyConstraintsRequiringRenamedIndexes(TableDiff $diff): array - { - if (count($diff->getRenamedIndexes()) === 0) { - return []; - } - - $table = $diff->getOldTable(); - - if ($table === null) { - return []; - } - - $foreignKeys = []; - /** @var ForeignKeyConstraint[] $remainingForeignKeys */ - $remainingForeignKeys = array_diff_key( - $table->getForeignKeys(), - $diff->getDroppedForeignKeys(), - ); - - foreach ($remainingForeignKeys as $foreignKey) { - foreach ($diff->getRenamedIndexes() as $index) { - if ($foreignKey->intersectsIndexColumns($index)) { - $foreignKeys[] = $foreignKey; - - break; - } - } - } - - return $foreignKeys; - } - - /** - * {@inheritDoc} - */ - protected function getPostAlterTableIndexForeignKeySQL(TableDiff $diff) - { - return array_merge( - parent::getPostAlterTableIndexForeignKeySQL($diff), - $this->getPostAlterTableRenameIndexForeignKeySQL($diff), - ); - } - - /** - * @param TableDiff $diff The table diff to gather the SQL for. - * - * @return string[] - */ - protected function getPostAlterTableRenameIndexForeignKeySQL(TableDiff $diff) - { - $sql = []; - $newName = $diff->getNewName(); - - if ($newName !== false) { - $tableNameSQL = $newName->getQuotedName($this); - } else { - $tableNameSQL = ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this); - } - - foreach ($this->getRemainingForeignKeyConstraintsRequiringRenamedIndexes($diff) as $foreignKey) { - if (in_array($foreignKey, $diff->getModifiedForeignKeys(), true)) { - continue; - } - - $sql[] = $this->getCreateForeignKeySQL($foreignKey, $tableNameSQL); - } - - return $sql; - } - - /** - * {@inheritDoc} - */ - protected function getCreateIndexSQLFlags(Index $index) - { - $type = ''; - if ($index->isUnique()) { - $type .= 'UNIQUE '; - } elseif ($index->hasFlag('fulltext')) { - $type .= 'FULLTEXT '; - } elseif ($index->hasFlag('spatial')) { - $type .= 'SPATIAL '; - } - - return $type; - } - - /** - * {@inheritDoc} - */ - public function getIntegerTypeDeclarationSQL(array $column) - { - return 'INT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getBigIntTypeDeclarationSQL(array $column) - { - return 'BIGINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getSmallIntTypeDeclarationSQL(array $column) - { - return 'SMALLINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getFloatDeclarationSQL(array $column) - { - return 'DOUBLE PRECISION' . $this->getUnsignedDeclaration($column); - } - - /** - * {@inheritDoc} - */ - public function getDecimalTypeDeclarationSQL(array $column) - { - return parent::getDecimalTypeDeclarationSQL($column) . $this->getUnsignedDeclaration($column); - } - - /** - * Get unsigned declaration for a column. - * - * @param mixed[] $columnDef - */ - private function getUnsignedDeclaration(array $columnDef): string - { - return ! empty($columnDef['unsigned']) ? ' UNSIGNED' : ''; - } - - /** - * {@inheritDoc} - */ - protected function _getCommonIntegerTypeDeclarationSQL(array $column) - { - $autoinc = ''; - if (! empty($column['autoincrement'])) { - $autoinc = ' AUTO_INCREMENT'; - } - - return $this->getUnsignedDeclaration($column) . $autoinc; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getColumnCharsetDeclarationSQL($charset) - { - return 'CHARACTER SET ' . $charset; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey) - { - $query = ''; - if ($foreignKey->hasOption('match')) { - $query .= ' MATCH ' . $foreignKey->getOption('match'); - } - - $query .= parent::getAdvancedForeignKeyOptionsSQL($foreignKey); - - return $query; - } - - /** - * {@inheritDoc} - */ - public function getDropIndexSQL($index, $table = null) - { - if ($index instanceof Index) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $index as an Index object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $indexName = $index->getQuotedName($this); - } elseif (is_string($index)) { - $indexName = $index; - } else { - throw new InvalidArgumentException( - __METHOD__ . '() expects $index parameter to be string or ' . Index::class . '.', - ); - } - - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } elseif (! is_string($table)) { - throw new InvalidArgumentException( - __METHOD__ . '() expects $table parameter to be string or ' . Table::class . '.', - ); - } - - if ($index instanceof Index && $index->isPrimary()) { - // MySQL primary keys are always named "PRIMARY", - // so we cannot use them in statements because of them being keyword. - return $this->getDropPrimaryKeySQL($table); - } - - return 'DROP INDEX ' . $indexName . ' ON ' . $table; - } - - /** - * @param string $table - * - * @return string - */ - protected function getDropPrimaryKeySQL($table) - { - return 'ALTER TABLE ' . $table . ' DROP PRIMARY KEY'; - } - - /** - * The `ALTER TABLE ... DROP CONSTRAINT` syntax is only available as of MySQL 8.0.19. - * - * @link https://dev.mysql.com/doc/refman/8.0/en/alter-table.html - */ - public function getDropUniqueConstraintSQL(string $name, string $tableName): string - { - return $this->getDropIndexSQL($name, $tableName); - } - - /** - * {@inheritDoc} - */ - public function getSetTransactionIsolationSQL($level) - { - return 'SET SESSION TRANSACTION ISOLATION LEVEL ' . $this->_getTransactionIsolationLevelSQL($level); - } - - /** - * {@inheritDoc} - */ - public function getName() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4749', - 'AbstractMySQLPlatform::getName() is deprecated. Identify platforms by their class.', - ); - - return 'mysql'; - } - - /** - * {@inheritDoc} - */ - public function getReadLockSQL() - { - return 'LOCK IN SHARE MODE'; - } - - /** - * {@inheritDoc} - */ - protected function initializeDoctrineTypeMappings() - { - $this->doctrineTypeMapping = [ - 'bigint' => Types::BIGINT, - 'binary' => Types::BINARY, - 'blob' => Types::BLOB, - 'char' => Types::STRING, - 'date' => Types::DATE_MUTABLE, - 'datetime' => Types::DATETIME_MUTABLE, - 'decimal' => Types::DECIMAL, - 'double' => Types::FLOAT, - 'float' => Types::FLOAT, - 'int' => Types::INTEGER, - 'integer' => Types::INTEGER, - 'longblob' => Types::BLOB, - 'longtext' => Types::TEXT, - 'mediumblob' => Types::BLOB, - 'mediumint' => Types::INTEGER, - 'mediumtext' => Types::TEXT, - 'numeric' => Types::DECIMAL, - 'real' => Types::FLOAT, - 'set' => Types::SIMPLE_ARRAY, - 'smallint' => Types::SMALLINT, - 'string' => Types::STRING, - 'text' => Types::TEXT, - 'time' => Types::TIME_MUTABLE, - 'timestamp' => Types::DATETIME_MUTABLE, - 'tinyblob' => Types::BLOB, - 'tinyint' => Types::BOOLEAN, - 'tinytext' => Types::TEXT, - 'varbinary' => Types::BINARY, - 'varchar' => Types::STRING, - 'year' => Types::DATE_MUTABLE, - ]; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getVarcharMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'AbstractMySQLPlatform::getVarcharMaxLength() is deprecated.', - ); - - return 65535; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getBinaryMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'AbstractMySQLPlatform::getBinaryMaxLength() is deprecated.', - ); - - return 65535; - } - - /** - * {@inheritDoc} - * - * @deprecated Implement {@see createReservedKeywordsList()} instead. - */ - protected function getReservedKeywordsClass() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4510', - 'AbstractMySQLPlatform::getReservedKeywordsClass() is deprecated,' - . ' use AbstractMySQLPlatform::createReservedKeywordsList() instead.', - ); - - return Keywords\MySQLKeywords::class; - } - - /** - * {@inheritDoc} - * - * MySQL commits a transaction implicitly when DROP TABLE is executed, however not - * if DROP TEMPORARY TABLE is executed. - */ - public function getDropTemporaryTableSQL($table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } elseif (! is_string($table)) { - throw new InvalidArgumentException( - __METHOD__ . '() expects $table parameter to be string or ' . Table::class . '.', - ); - } - - return 'DROP TEMPORARY TABLE ' . $table; - } - - /** - * Gets the SQL Snippet used to declare a BLOB column type. - * TINYBLOB : 2 ^ 8 - 1 = 255 - * BLOB : 2 ^ 16 - 1 = 65535 - * MEDIUMBLOB : 2 ^ 24 - 1 = 16777215 - * LONGBLOB : 2 ^ 32 - 1 = 4294967295 - * - * {@inheritDoc} - */ - public function getBlobTypeDeclarationSQL(array $column) - { - if (! empty($column['length']) && is_numeric($column['length'])) { - $length = $column['length']; - - if ($length <= static::LENGTH_LIMIT_TINYBLOB) { - return 'TINYBLOB'; - } - - if ($length <= static::LENGTH_LIMIT_BLOB) { - return 'BLOB'; - } - - if ($length <= static::LENGTH_LIMIT_MEDIUMBLOB) { - return 'MEDIUMBLOB'; - } - } - - return 'LONGBLOB'; - } - - /** - * {@inheritDoc} - */ - public function quoteStringLiteral($str) - { - $str = str_replace('\\', '\\\\', $str); // MySQL requires backslashes to be escaped - - return parent::quoteStringLiteral($str); - } - - /** - * {@inheritDoc} - */ - public function getDefaultTransactionIsolationLevel() - { - return TransactionIsolationLevel::REPEATABLE_READ; - } - - public function supportsColumnLengthIndexes(): bool - { - return true; - } - - /** @deprecated Will be removed without replacement. */ - protected function getDatabaseNameSQL(?string $databaseName): string - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6215', - '%s is deprecated without replacement.', - __METHOD__, - ); - - if ($databaseName !== null) { - return $this->quoteStringLiteral($databaseName); - } - - return $this->getCurrentDatabaseExpression(); - } - - public function createSchemaManager(Connection $connection): MySQLSchemaManager - { - return new MySQLSchemaManager($connection, $this); - } - - /** - * @param list $assets - * - * @return array - * - * @template T of AbstractAsset - */ - private function indexAssetsByLowerCaseName(array $assets): array - { - $result = []; - - foreach ($assets as $asset) { - $result[strtolower($asset->getName())] = $asset; - } - - return $result; - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/AbstractPlatform.php b/vendor/doctrine/dbal/src/Platforms/AbstractPlatform.php deleted file mode 100644 index c77882a1..00000000 --- a/vendor/doctrine/dbal/src/Platforms/AbstractPlatform.php +++ /dev/null @@ -1,4710 +0,0 @@ -disableTypeComments = $value; - } - - /** - * Sets the EventManager used by the Platform. - * - * @deprecated - * - * @return void - */ - public function setEventManager(EventManager $eventManager) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - '%s is deprecated.', - __METHOD__, - ); - - $this->_eventManager = $eventManager; - } - - /** - * Gets the EventManager used by the Platform. - * - * @deprecated - * - * @return EventManager|null - */ - public function getEventManager() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - '%s is deprecated.', - __METHOD__, - ); - - return $this->_eventManager; - } - - /** - * Returns the SQL snippet that declares a boolean column. - * - * @param mixed[] $column - * - * @return string - */ - abstract public function getBooleanTypeDeclarationSQL(array $column); - - /** - * Returns the SQL snippet that declares a 4 byte integer column. - * - * @param mixed[] $column - * - * @return string - */ - abstract public function getIntegerTypeDeclarationSQL(array $column); - - /** - * Returns the SQL snippet that declares an 8 byte integer column. - * - * @param mixed[] $column - * - * @return string - */ - abstract public function getBigIntTypeDeclarationSQL(array $column); - - /** - * Returns the SQL snippet that declares a 2 byte integer column. - * - * @param mixed[] $column - * - * @return string - */ - abstract public function getSmallIntTypeDeclarationSQL(array $column); - - /** - * Returns the SQL snippet that declares common properties of an integer column. - * - * @param mixed[] $column - * - * @return string - */ - abstract protected function _getCommonIntegerTypeDeclarationSQL(array $column); - - /** - * Lazy load Doctrine Type Mappings. - * - * @return void - */ - abstract protected function initializeDoctrineTypeMappings(); - - /** - * Initializes Doctrine Type Mappings with the platform defaults - * and with all additional type mappings. - */ - private function initializeAllDoctrineTypeMappings(): void - { - $this->initializeDoctrineTypeMappings(); - - foreach (Type::getTypesMap() as $typeName => $className) { - foreach (Type::getType($typeName)->getMappedDatabaseTypes($this) as $dbType) { - $this->doctrineTypeMapping[$dbType] = $typeName; - } - } - } - - /** - * Returns the SQL snippet used to declare a column that can - * store characters in the ASCII character set - * - * @param mixed[] $column - */ - public function getAsciiStringTypeDeclarationSQL(array $column): string - { - return $this->getStringTypeDeclarationSQL($column); - } - - /** - * Returns the SQL snippet used to declare a VARCHAR column type. - * - * @deprecated Use {@link getStringTypeDeclarationSQL()} instead. - * - * @param mixed[] $column - * - * @return string - */ - public function getVarcharTypeDeclarationSQL(array $column) - { - if (isset($column['length'])) { - $lengthOmitted = false; - } else { - $column['length'] = $this->getVarcharDefaultLength(); - $lengthOmitted = true; - } - - $fixed = $column['fixed'] ?? false; - - $maxLength = $fixed - ? $this->getCharMaxLength() - : $this->getVarcharMaxLength(); - - if ($column['length'] > $maxLength) { - return $this->getClobTypeDeclarationSQL($column); - } - - return $this->getVarcharTypeDeclarationSQLSnippet($column['length'], $fixed, $lengthOmitted); - } - - /** - * Returns the SQL snippet used to declare a string column type. - * - * @param mixed[] $column - * - * @return string - */ - public function getStringTypeDeclarationSQL(array $column) - { - return $this->getVarcharTypeDeclarationSQL($column); - } - - /** - * Returns the SQL snippet used to declare a BINARY/VARBINARY column type. - * - * @param mixed[] $column The column definition. - * - * @return string - */ - public function getBinaryTypeDeclarationSQL(array $column) - { - if (isset($column['length'])) { - $lengthOmitted = false; - } else { - $column['length'] = $this->getBinaryDefaultLength(); - $lengthOmitted = true; - } - - $fixed = $column['fixed'] ?? false; - - $maxLength = $this->getBinaryMaxLength(); - - if ($column['length'] > $maxLength) { - if ($maxLength > 0) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3187', - 'Binary column length %d is greater than supported by the platform (%d).' - . ' Reduce the column length or use a BLOB column instead.', - $column['length'], - $maxLength, - ); - } - - return $this->getBlobTypeDeclarationSQL($column); - } - - return $this->getBinaryTypeDeclarationSQLSnippet($column['length'], $fixed, $lengthOmitted); - } - - /** - * Returns the SQL snippet to declare a GUID/UUID column. - * - * By default this maps directly to a CHAR(36) and only maps to more - * special datatypes when the underlying databases support this datatype. - * - * @param mixed[] $column - * - * @return string - */ - public function getGuidTypeDeclarationSQL(array $column) - { - $column['length'] = 36; - $column['fixed'] = true; - - return $this->getStringTypeDeclarationSQL($column); - } - - /** - * Returns the SQL snippet to declare a JSON column. - * - * By default this maps directly to a CLOB and only maps to more - * special datatypes when the underlying databases support this datatype. - * - * @param mixed[] $column - * - * @return string - */ - public function getJsonTypeDeclarationSQL(array $column) - { - return $this->getClobTypeDeclarationSQL($column); - } - - /** - * @param int|false $length - * @param bool $fixed - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - throw Exception::notSupported('VARCHARs not supported by Platform.'); - } - - /** - * Returns the SQL snippet used to declare a BINARY/VARBINARY column type. - * - * @param int|false $length The length of the column. - * @param bool $fixed Whether the column length is fixed. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - throw Exception::notSupported('BINARY/VARBINARY column types are not supported by this platform.'); - } - - /** - * Returns the SQL snippet used to declare a CLOB column type. - * - * @param mixed[] $column - * - * @return string - */ - abstract public function getClobTypeDeclarationSQL(array $column); - - /** - * Returns the SQL Snippet used to declare a BLOB column type. - * - * @param mixed[] $column - * - * @return string - */ - abstract public function getBlobTypeDeclarationSQL(array $column); - - /** - * Gets the name of the platform. - * - * @deprecated Identify platforms by their class. - * - * @return string - */ - abstract public function getName(); - - /** - * Registers a doctrine type to be used in conjunction with a column type of this platform. - * - * @param string $dbType - * @param string $doctrineType - * - * @return void - * - * @throws Exception If the type is not found. - */ - public function registerDoctrineTypeMapping($dbType, $doctrineType) - { - if ($this->doctrineTypeMapping === null) { - $this->initializeAllDoctrineTypeMappings(); - } - - if (! Types\Type::hasType($doctrineType)) { - throw Exception::typeNotFound($doctrineType); - } - - $dbType = strtolower($dbType); - $this->doctrineTypeMapping[$dbType] = $doctrineType; - - $doctrineType = Type::getType($doctrineType); - - if (! $doctrineType->requiresSQLCommentHint($this)) { - return; - } - - $this->markDoctrineTypeCommented($doctrineType); - } - - /** - * Gets the Doctrine type that is mapped for the given database column type. - * - * @param string $dbType - * - * @return string - * - * @throws Exception - */ - public function getDoctrineTypeMapping($dbType) - { - if ($this->doctrineTypeMapping === null) { - $this->initializeAllDoctrineTypeMappings(); - } - - $dbType = strtolower($dbType); - - if (! isset($this->doctrineTypeMapping[$dbType])) { - throw new Exception( - 'Unknown database type ' . $dbType . ' requested, ' . static::class . ' may not support it.', - ); - } - - return $this->doctrineTypeMapping[$dbType]; - } - - /** - * Checks if a database type is currently supported by this platform. - * - * @param string $dbType - * - * @return bool - */ - public function hasDoctrineTypeMappingFor($dbType) - { - if ($this->doctrineTypeMapping === null) { - $this->initializeAllDoctrineTypeMappings(); - } - - $dbType = strtolower($dbType); - - return isset($this->doctrineTypeMapping[$dbType]); - } - - /** - * Initializes the Doctrine Type comments instance variable for in_array() checks. - * - * @deprecated This API will be removed in Doctrine DBAL 4.0. - * - * @return void - */ - protected function initializeCommentedDoctrineTypes() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5058', - '%s is deprecated and will be removed in Doctrine DBAL 4.0.', - __METHOD__, - ); - - $this->doctrineTypeComments = []; - - foreach (Type::getTypesMap() as $typeName => $className) { - $type = Type::getType($typeName); - - if (! $type->requiresSQLCommentHint($this)) { - continue; - } - - $this->doctrineTypeComments[] = $typeName; - } - } - - /** - * Is it necessary for the platform to add a parsable type comment to allow reverse engineering the given type? - * - * @deprecated Use {@link Type::requiresSQLCommentHint()} instead. - * - * @return bool - */ - public function isCommentedDoctrineType(Type $doctrineType) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5058', - '%s is deprecated and will be removed in Doctrine DBAL 4.0. Use Type::requiresSQLCommentHint() instead.', - __METHOD__, - ); - - if ($this->doctrineTypeComments === null) { - $this->initializeCommentedDoctrineTypes(); - } - - return $doctrineType->requiresSQLCommentHint($this); - } - - /** - * Marks this type as to be commented in ALTER TABLE and CREATE TABLE statements. - * - * @param string|Type $doctrineType - * - * @return void - */ - public function markDoctrineTypeCommented($doctrineType) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5058', - '%s is deprecated and will be removed in Doctrine DBAL 4.0. Use Type::requiresSQLCommentHint() instead.', - __METHOD__, - ); - - if ($this->doctrineTypeComments === null) { - $this->initializeCommentedDoctrineTypes(); - } - - assert(is_array($this->doctrineTypeComments)); - - $this->doctrineTypeComments[] = $doctrineType instanceof Type ? $doctrineType->getName() : $doctrineType; - } - - /** - * Gets the comment to append to a column comment that helps parsing this type in reverse engineering. - * - * @deprecated This method will be removed without replacement. - * - * @return string - */ - public function getDoctrineTypeComment(Type $doctrineType) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5107', - '%s is deprecated and will be removed in Doctrine DBAL 4.0.', - __METHOD__, - ); - - return '(DC2Type:' . $doctrineType->getName() . ')'; - } - - /** - * Gets the comment of a passed column modified by potential doctrine type comment hints. - * - * @deprecated This method will be removed without replacement. - * - * @return string|null - */ - protected function getColumnComment(Column $column) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5107', - '%s is deprecated and will be removed in Doctrine DBAL 4.0.', - __METHOD__, - ); - - $comment = $column->getComment(); - - if (! $this->disableTypeComments && $column->getType()->requiresSQLCommentHint($this)) { - $comment .= $this->getDoctrineTypeComment($column->getType()); - } - - return $comment; - } - - /** - * Gets the character used for identifier quoting. - * - * @deprecated Use {@see quoteIdentifier()} to quote identifiers instead. - * - * @return string - */ - public function getIdentifierQuoteCharacter() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5388', - 'AbstractPlatform::getIdentifierQuoteCharacter() is deprecated. Use quoteIdentifier() instead.', - ); - - return '"'; - } - - /** - * Gets the string portion that starts an SQL comment. - * - * @deprecated - * - * @return string - */ - public function getSqlCommentStartString() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getSqlCommentStartString() is deprecated.', - ); - - return '--'; - } - - /** - * Gets the string portion that ends an SQL comment. - * - * @deprecated - * - * @return string - */ - public function getSqlCommentEndString() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getSqlCommentEndString() is deprecated.', - ); - - return "\n"; - } - - /** - * Gets the maximum length of a char column. - * - * @deprecated - */ - public function getCharMaxLength(): int - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'AbstractPlatform::getCharMaxLength() is deprecated.', - ); - - return $this->getVarcharMaxLength(); - } - - /** - * Gets the maximum length of a varchar column. - * - * @deprecated - * - * @return int - */ - public function getVarcharMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'AbstractPlatform::getVarcharMaxLength() is deprecated.', - ); - - return 4000; - } - - /** - * Gets the default length of a varchar column. - * - * @deprecated - * - * @return int - */ - public function getVarcharDefaultLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default varchar column length is deprecated, specify the length explicitly.', - ); - - return 255; - } - - /** - * Gets the maximum length of a binary column. - * - * @deprecated - * - * @return int - */ - public function getBinaryMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'AbstractPlatform::getBinaryMaxLength() is deprecated.', - ); - - return 4000; - } - - /** - * Gets the default length of a binary column. - * - * @deprecated - * - * @return int - */ - public function getBinaryDefaultLength() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default binary column length is deprecated, specify the length explicitly.', - ); - - return 255; - } - - /** - * Gets all SQL wildcard characters of the platform. - * - * @deprecated Use {@see AbstractPlatform::getLikeWildcardCharacters()} instead. - * - * @return string[] - */ - public function getWildcards() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getWildcards() is deprecated.' - . ' Use AbstractPlatform::getLikeWildcardCharacters() instead.', - ); - - return ['%', '_']; - } - - /** - * Returns the regular expression operator. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getRegexpExpression() - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Returns the SQL snippet to get the average value of a column. - * - * @deprecated Use AVG() in SQL instead. - * - * @param string $column The column to use. - * - * @return string Generated SQL including an AVG aggregate function. - */ - public function getAvgExpression($column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getAvgExpression() is deprecated. Use AVG() in SQL instead.', - ); - - return 'AVG(' . $column . ')'; - } - - /** - * Returns the SQL snippet to get the number of rows (without a NULL value) of a column. - * - * If a '*' is used instead of a column the number of selected rows is returned. - * - * @deprecated Use COUNT() in SQL instead. - * - * @param string|int $column The column to use. - * - * @return string Generated SQL including a COUNT aggregate function. - */ - public function getCountExpression($column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getCountExpression() is deprecated. Use COUNT() in SQL instead.', - ); - - return 'COUNT(' . $column . ')'; - } - - /** - * Returns the SQL snippet to get the highest value of a column. - * - * @deprecated Use MAX() in SQL instead. - * - * @param string $column The column to use. - * - * @return string Generated SQL including a MAX aggregate function. - */ - public function getMaxExpression($column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getMaxExpression() is deprecated. Use MAX() in SQL instead.', - ); - - return 'MAX(' . $column . ')'; - } - - /** - * Returns the SQL snippet to get the lowest value of a column. - * - * @deprecated Use MIN() in SQL instead. - * - * @param string $column The column to use. - * - * @return string Generated SQL including a MIN aggregate function. - */ - public function getMinExpression($column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getMinExpression() is deprecated. Use MIN() in SQL instead.', - ); - - return 'MIN(' . $column . ')'; - } - - /** - * Returns the SQL snippet to get the total sum of a column. - * - * @deprecated Use SUM() in SQL instead. - * - * @param string $column The column to use. - * - * @return string Generated SQL including a SUM aggregate function. - */ - public function getSumExpression($column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getSumExpression() is deprecated. Use SUM() in SQL instead.', - ); - - return 'SUM(' . $column . ')'; - } - - // scalar functions - - /** - * Returns the SQL snippet to get the md5 sum of a column. - * - * Note: Not SQL92, but common functionality. - * - * @deprecated - * - * @param string $column - * - * @return string - */ - public function getMd5Expression($column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getMd5Expression() is deprecated.', - ); - - return 'MD5(' . $column . ')'; - } - - /** - * Returns the SQL snippet to get the length of a text column in characters. - * - * @param string $column - * - * @return string - */ - public function getLengthExpression($column) - { - return 'LENGTH(' . $column . ')'; - } - - /** - * Returns the SQL snippet to get the squared value of a column. - * - * @deprecated Use SQRT() in SQL instead. - * - * @param string $column The column to use. - * - * @return string Generated SQL including an SQRT aggregate function. - */ - public function getSqrtExpression($column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getSqrtExpression() is deprecated. Use SQRT() in SQL instead.', - ); - - return 'SQRT(' . $column . ')'; - } - - /** - * Returns the SQL snippet to round a numeric column to the number of decimals specified. - * - * @deprecated Use ROUND() in SQL instead. - * - * @param string $column - * @param string|int $decimals - * - * @return string - */ - public function getRoundExpression($column, $decimals = 0) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getRoundExpression() is deprecated. Use ROUND() in SQL instead.', - ); - - return 'ROUND(' . $column . ', ' . $decimals . ')'; - } - - /** - * Returns the SQL snippet to get the remainder of the division operation $expression1 / $expression2. - * - * @param string $expression1 - * @param string $expression2 - * - * @return string - */ - public function getModExpression($expression1, $expression2) - { - return 'MOD(' . $expression1 . ', ' . $expression2 . ')'; - } - - /** - * Returns the SQL snippet to trim a string. - * - * @param string $str The expression to apply the trim to. - * @param int $mode The position of the trim (leading/trailing/both). - * @param string|bool $char The char to trim, has to be quoted already. Defaults to space. - * - * @return string - */ - public function getTrimExpression($str, $mode = TrimMode::UNSPECIFIED, $char = false) - { - $expression = ''; - - switch ($mode) { - case TrimMode::LEADING: - $expression = 'LEADING '; - break; - - case TrimMode::TRAILING: - $expression = 'TRAILING '; - break; - - case TrimMode::BOTH: - $expression = 'BOTH '; - break; - } - - if ($char !== false) { - $expression .= $char . ' '; - } - - if ($mode !== TrimMode::UNSPECIFIED || $char !== false) { - $expression .= 'FROM '; - } - - return 'TRIM(' . $expression . $str . ')'; - } - - /** - * Returns the SQL snippet to trim trailing space characters from the expression. - * - * @deprecated Use RTRIM() in SQL instead. - * - * @param string $str Literal string or column name. - * - * @return string - */ - public function getRtrimExpression($str) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getRtrimExpression() is deprecated. Use RTRIM() in SQL instead.', - ); - - return 'RTRIM(' . $str . ')'; - } - - /** - * Returns the SQL snippet to trim leading space characters from the expression. - * - * @deprecated Use LTRIM() in SQL instead. - * - * @param string $str Literal string or column name. - * - * @return string - */ - public function getLtrimExpression($str) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getLtrimExpression() is deprecated. Use LTRIM() in SQL instead.', - ); - - return 'LTRIM(' . $str . ')'; - } - - /** - * Returns the SQL snippet to change all characters from the expression to uppercase, - * according to the current character set mapping. - * - * @deprecated Use UPPER() in SQL instead. - * - * @param string $str Literal string or column name. - * - * @return string - */ - public function getUpperExpression($str) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getUpperExpression() is deprecated. Use UPPER() in SQL instead.', - ); - - return 'UPPER(' . $str . ')'; - } - - /** - * Returns the SQL snippet to change all characters from the expression to lowercase, - * according to the current character set mapping. - * - * @deprecated Use LOWER() in SQL instead. - * - * @param string $str Literal string or column name. - * - * @return string - */ - public function getLowerExpression($str) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getLowerExpression() is deprecated. Use LOWER() in SQL instead.', - ); - - return 'LOWER(' . $str . ')'; - } - - /** - * Returns the SQL snippet to get the position of the first occurrence of substring $substr in string $str. - * - * @param string $str Literal string. - * @param string $substr Literal string to find. - * @param string|int|false $startPos Position to start at, beginning of string by default. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getLocateExpression($str, $substr, $startPos = false) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Returns the SQL snippet to get the current system date. - * - * @deprecated Generate dates within the application. - * - * @return string - */ - public function getNowExpression() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4753', - 'AbstractPlatform::getNowExpression() is deprecated. Generate dates within the application.', - ); - - return 'NOW()'; - } - - /** - * Returns a SQL snippet to get a substring inside an SQL statement. - * - * Note: Not SQL92, but common functionality. - * - * SQLite only supports the 2 parameter variant of this function. - * - * @param string $string An sql string literal or column name/alias. - * @param string|int $start Where to start the substring portion. - * @param string|int|null $length The substring portion length. - * - * @return string - */ - public function getSubstringExpression($string, $start, $length = null) - { - if ($length === null) { - return 'SUBSTRING(' . $string . ' FROM ' . $start . ')'; - } - - return 'SUBSTRING(' . $string . ' FROM ' . $start . ' FOR ' . $length . ')'; - } - - /** - * Returns a SQL snippet to concatenate the given expressions. - * - * Accepts an arbitrary number of string parameters. Each parameter must contain an expression. - * - * @return string - */ - public function getConcatExpression() - { - return implode(' || ', func_get_args()); - } - - /** - * Returns the SQL for a logical not. - * - * Example: - * - * $q = new Doctrine_Query(); - * $e = $q->expr; - * $q->select('*')->from('table') - * ->where($e->eq('id', $e->not('null')); - * - * - * @deprecated Use NOT() in SQL instead. - * - * @param string $expression - * - * @return string The logical expression. - */ - public function getNotExpression($expression) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getNotExpression() is deprecated. Use NOT() in SQL instead.', - ); - - return 'NOT(' . $expression . ')'; - } - - /** - * Returns the SQL that checks if an expression is null. - * - * @deprecated Use IS NULL in SQL instead. - * - * @param string $expression The expression that should be compared to null. - * - * @return string The logical expression. - */ - public function getIsNullExpression($expression) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getIsNullExpression() is deprecated. Use IS NULL in SQL instead.', - ); - - return $expression . ' IS NULL'; - } - - /** - * Returns the SQL that checks if an expression is not null. - * - * @deprecated Use IS NOT NULL in SQL instead. - * - * @param string $expression The expression that should be compared to null. - * - * @return string The logical expression. - */ - public function getIsNotNullExpression($expression) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getIsNotNullExpression() is deprecated. Use IS NOT NULL in SQL instead.', - ); - - return $expression . ' IS NOT NULL'; - } - - /** - * Returns the SQL that checks if an expression evaluates to a value between two values. - * - * The parameter $expression is checked if it is between $value1 and $value2. - * - * Note: There is a slight difference in the way BETWEEN works on some databases. - * http://www.w3schools.com/sql/sql_between.asp. If you want complete database - * independence you should avoid using between(). - * - * @deprecated Use BETWEEN in SQL instead. - * - * @param string $expression The value to compare to. - * @param string $value1 The lower value to compare with. - * @param string $value2 The higher value to compare with. - * - * @return string The logical expression. - */ - public function getBetweenExpression($expression, $value1, $value2) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getBetweenExpression() is deprecated. Use BETWEEN in SQL instead.', - ); - - return $expression . ' BETWEEN ' . $value1 . ' AND ' . $value2; - } - - /** - * Returns the SQL to get the arccosine of a value. - * - * @deprecated Use ACOS() in SQL instead. - * - * @param string $value - * - * @return string - */ - public function getAcosExpression($value) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getAcosExpression() is deprecated. Use ACOS() in SQL instead.', - ); - - return 'ACOS(' . $value . ')'; - } - - /** - * Returns the SQL to get the sine of a value. - * - * @deprecated Use SIN() in SQL instead. - * - * @param string $value - * - * @return string - */ - public function getSinExpression($value) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getSinExpression() is deprecated. Use SIN() in SQL instead.', - ); - - return 'SIN(' . $value . ')'; - } - - /** - * Returns the SQL to get the PI value. - * - * @deprecated Use PI() in SQL instead. - * - * @return string - */ - public function getPiExpression() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getPiExpression() is deprecated. Use PI() in SQL instead.', - ); - - return 'PI()'; - } - - /** - * Returns the SQL to get the cosine of a value. - * - * @deprecated Use COS() in SQL instead. - * - * @param string $value - * - * @return string - */ - public function getCosExpression($value) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getCosExpression() is deprecated. Use COS() in SQL instead.', - ); - - return 'COS(' . $value . ')'; - } - - /** - * Returns the SQL to calculate the difference in days between the two passed dates. - * - * Computes diff = date1 - date2. - * - * @param string $date1 - * @param string $date2 - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateDiffExpression($date1, $date2) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Returns the SQL to add the number of given seconds to a date. - * - * @param string $date - * @param int|numeric-string $seconds - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateAddSecondsExpression($date, $seconds) - { - if (is_int($seconds)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $seconds as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '+', $seconds, DateIntervalUnit::SECOND); - } - - /** - * Returns the SQL to subtract the number of given seconds from a date. - * - * @param string $date - * @param int|numeric-string $seconds - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateSubSecondsExpression($date, $seconds) - { - if (is_int($seconds)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $seconds as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '-', $seconds, DateIntervalUnit::SECOND); - } - - /** - * Returns the SQL to add the number of given minutes to a date. - * - * @param string $date - * @param int|numeric-string $minutes - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateAddMinutesExpression($date, $minutes) - { - if (is_int($minutes)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $minutes as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '+', $minutes, DateIntervalUnit::MINUTE); - } - - /** - * Returns the SQL to subtract the number of given minutes from a date. - * - * @param string $date - * @param int|numeric-string $minutes - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateSubMinutesExpression($date, $minutes) - { - if (is_int($minutes)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $minutes as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '-', $minutes, DateIntervalUnit::MINUTE); - } - - /** - * Returns the SQL to add the number of given hours to a date. - * - * @param string $date - * @param int|numeric-string $hours - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateAddHourExpression($date, $hours) - { - if (is_int($hours)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $hours as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '+', $hours, DateIntervalUnit::HOUR); - } - - /** - * Returns the SQL to subtract the number of given hours to a date. - * - * @param string $date - * @param int|numeric-string $hours - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateSubHourExpression($date, $hours) - { - if (is_int($hours)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $hours as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '-', $hours, DateIntervalUnit::HOUR); - } - - /** - * Returns the SQL to add the number of given days to a date. - * - * @param string $date - * @param int|numeric-string $days - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateAddDaysExpression($date, $days) - { - if (is_int($days)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $days as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '+', $days, DateIntervalUnit::DAY); - } - - /** - * Returns the SQL to subtract the number of given days to a date. - * - * @param string $date - * @param int|numeric-string $days - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateSubDaysExpression($date, $days) - { - if (is_int($days)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $days as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '-', $days, DateIntervalUnit::DAY); - } - - /** - * Returns the SQL to add the number of given weeks to a date. - * - * @param string $date - * @param int|numeric-string $weeks - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateAddWeeksExpression($date, $weeks) - { - if (is_int($weeks)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $weeks as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '+', $weeks, DateIntervalUnit::WEEK); - } - - /** - * Returns the SQL to subtract the number of given weeks from a date. - * - * @param string $date - * @param int|numeric-string $weeks - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateSubWeeksExpression($date, $weeks) - { - if (is_int($weeks)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $weeks as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '-', $weeks, DateIntervalUnit::WEEK); - } - - /** - * Returns the SQL to add the number of given months to a date. - * - * @param string $date - * @param int|numeric-string $months - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateAddMonthExpression($date, $months) - { - if (is_int($months)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $months as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '+', $months, DateIntervalUnit::MONTH); - } - - /** - * Returns the SQL to subtract the number of given months to a date. - * - * @param string $date - * @param int|numeric-string $months - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateSubMonthExpression($date, $months) - { - if (is_int($months)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $months as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '-', $months, DateIntervalUnit::MONTH); - } - - /** - * Returns the SQL to add the number of given quarters to a date. - * - * @param string $date - * @param int|numeric-string $quarters - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateAddQuartersExpression($date, $quarters) - { - if (is_int($quarters)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $quarters as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '+', $quarters, DateIntervalUnit::QUARTER); - } - - /** - * Returns the SQL to subtract the number of given quarters from a date. - * - * @param string $date - * @param int|numeric-string $quarters - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateSubQuartersExpression($date, $quarters) - { - if (is_int($quarters)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $quarters as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '-', $quarters, DateIntervalUnit::QUARTER); - } - - /** - * Returns the SQL to add the number of given years to a date. - * - * @param string $date - * @param int|numeric-string $years - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateAddYearsExpression($date, $years) - { - if (is_int($years)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $years as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '+', $years, DateIntervalUnit::YEAR); - } - - /** - * Returns the SQL to subtract the number of given years from a date. - * - * @param string $date - * @param int|numeric-string $years - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateSubYearsExpression($date, $years) - { - if (is_int($years)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3498', - 'Passing $years as an integer is deprecated. Pass it as a numeric string instead.', - ); - } - - return $this->getDateArithmeticIntervalExpression($date, '-', $years, DateIntervalUnit::YEAR); - } - - /** - * Returns the SQL for a date arithmetic expression. - * - * @param string $date The column or literal representing a date - * to perform the arithmetic operation on. - * @param string $operator The arithmetic operator (+ or -). - * @param int|numeric-string $interval The interval that shall be calculated into the date. - * @param string $unit The unit of the interval that shall be calculated into the date. - * One of the {@see DateIntervalUnit} constants. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - protected function getDateArithmeticIntervalExpression($date, $operator, $interval, $unit) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Returns the SQL bit AND comparison expression. - * - * @param string $value1 - * @param string $value2 - * - * @return string - */ - public function getBitAndComparisonExpression($value1, $value2) - { - return '(' . $value1 . ' & ' . $value2 . ')'; - } - - /** - * Returns the SQL bit OR comparison expression. - * - * @param string $value1 - * @param string $value2 - * - * @return string - */ - public function getBitOrComparisonExpression($value1, $value2) - { - return '(' . $value1 . ' | ' . $value2 . ')'; - } - - /** - * Returns the SQL expression which represents the currently selected database. - */ - abstract public function getCurrentDatabaseExpression(): string; - - /** - * Returns the FOR UPDATE expression. - * - * @deprecated This API is not portable. Use {@link QueryBuilder::forUpdate()}` instead. - * - * @return string - */ - public function getForUpdateSQL() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6191', - '%s is deprecated as non-portable.', - __METHOD__, - ); - - return 'FOR UPDATE'; - } - - /** - * Honors that some SQL vendors such as MsSql use table hints for locking instead of the - * ANSI SQL FOR UPDATE specification. - * - * @param string $fromClause The FROM clause to append the hint for the given lock mode to - * @param int $lockMode One of the Doctrine\DBAL\LockMode::* constants - * @psalm-param LockMode::* $lockMode - */ - public function appendLockHint(string $fromClause, int $lockMode): string - { - switch ($lockMode) { - case LockMode::NONE: - case LockMode::OPTIMISTIC: - case LockMode::PESSIMISTIC_READ: - case LockMode::PESSIMISTIC_WRITE: - return $fromClause; - - default: - throw InvalidLockMode::fromLockMode($lockMode); - } - } - - /** - * Returns the SQL snippet to append to any SELECT statement which locks rows in shared read lock. - * - * This defaults to the ANSI SQL "FOR UPDATE", which is an exclusive lock (Write). Some database - * vendors allow to lighten this constraint up to be a real read lock. - * - * @deprecated This API is not portable. - * - * @return string - */ - public function getReadLockSQL() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6191', - '%s is deprecated as non-portable.', - __METHOD__, - ); - - return $this->getForUpdateSQL(); - } - - /** - * Returns the SQL snippet to append to any SELECT statement which obtains an exclusive lock on the rows. - * - * The semantics of this lock mode should equal the SELECT .. FOR UPDATE of the ANSI SQL standard. - * - * @deprecated This API is not portable. - * - * @return string - */ - public function getWriteLockSQL() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6191', - '%s is deprecated as non-portable.', - __METHOD__, - ); - - return $this->getForUpdateSQL(); - } - - /** - * Returns the SQL snippet to drop an existing table. - * - * @param Table|string $table - * - * @return string - * - * @throws InvalidArgumentException - */ - public function getDropTableSQL($table) - { - $tableArg = $table; - - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } - - if (! is_string($table)) { - throw new InvalidArgumentException( - __METHOD__ . '() expects $table parameter to be string or ' . Table::class . '.', - ); - } - - if ($this->_eventManager !== null && $this->_eventManager->hasListeners(Events::onSchemaDropTable)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onSchemaDropTable, - ); - - $eventArgs = new SchemaDropTableEventArgs($tableArg, $this); - $this->_eventManager->dispatchEvent(Events::onSchemaDropTable, $eventArgs); - - if ($eventArgs->isDefaultPrevented()) { - $sql = $eventArgs->getSql(); - - if ($sql === null) { - throw new UnexpectedValueException('Default implementation of DROP TABLE was overridden with NULL'); - } - - return $sql; - } - } - - return 'DROP TABLE ' . $table; - } - - /** - * Returns the SQL to safely drop a temporary table WITHOUT implicitly committing an open transaction. - * - * @param Table|string $table - * - * @return string - */ - public function getDropTemporaryTableSQL($table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } - - return $this->getDropTableSQL($table); - } - - /** - * Returns the SQL to drop an index from a table. - * - * @param Index|string $index - * @param Table|string|null $table - * - * @return string - * - * @throws InvalidArgumentException - */ - public function getDropIndexSQL($index, $table = null) - { - if ($index instanceof Index) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $index as an Index object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $index = $index->getQuotedName($this); - } elseif (! is_string($index)) { - throw new InvalidArgumentException( - __METHOD__ . '() expects $index parameter to be string or ' . Index::class . '.', - ); - } - - return 'DROP INDEX ' . $index; - } - - /** - * Returns the SQL to drop a constraint. - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - * - * @param Constraint|string $constraint - * @param Table|string $table - * - * @return string - */ - public function getDropConstraintSQL($constraint, $table) - { - if ($constraint instanceof Constraint) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $constraint as a Constraint object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - } else { - $constraint = new Identifier($constraint); - } - - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - } else { - $table = new Identifier($table); - } - - $constraint = $constraint->getQuotedName($this); - $table = $table->getQuotedName($this); - - return 'ALTER TABLE ' . $table . ' DROP CONSTRAINT ' . $constraint; - } - - /** - * Returns the SQL to drop a foreign key. - * - * @param ForeignKeyConstraint|string $foreignKey - * @param Table|string $table - * - * @return string - */ - public function getDropForeignKeySQL($foreignKey, $table) - { - if ($foreignKey instanceof ForeignKeyConstraint) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $foreignKey as a ForeignKeyConstraint object to %s is deprecated.' - . ' Pass it as a quoted name instead.', - __METHOD__, - ); - } else { - $foreignKey = new Identifier($foreignKey); - } - - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - } else { - $table = new Identifier($table); - } - - $foreignKey = $foreignKey->getQuotedName($this); - $table = $table->getQuotedName($this); - - return 'ALTER TABLE ' . $table . ' DROP FOREIGN KEY ' . $foreignKey; - } - - /** - * Returns the SQL to drop a unique constraint. - */ - public function getDropUniqueConstraintSQL(string $name, string $tableName): string - { - return $this->getDropConstraintSQL($name, $tableName); - } - - /** - * Returns the SQL statement(s) to create a table with the specified name, columns and constraints - * on this platform. - * - * @param int $createFlags - * @psalm-param int-mask-of $createFlags - * - * @return list The list of SQL statements. - * - * @throws Exception - * @throws InvalidArgumentException - */ - public function getCreateTableSQL(Table $table, $createFlags = self::CREATE_INDEXES) - { - if (! is_int($createFlags)) { - throw new InvalidArgumentException( - 'Second argument of AbstractPlatform::getCreateTableSQL() has to be integer.', - ); - } - - if (($createFlags & self::CREATE_INDEXES) === 0) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5416', - 'Unsetting the CREATE_INDEXES flag in AbstractPlatform::getCreateTableSQL() is deprecated.', - ); - } - - if (($createFlags & self::CREATE_FOREIGNKEYS) === 0) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5416', - 'Not setting the CREATE_FOREIGNKEYS flag in AbstractPlatform::getCreateTableSQL()' - . ' is deprecated. In order to build the statements that create multiple tables' - . ' referencing each other via foreign keys, use AbstractPlatform::getCreateTablesSQL().', - ); - } - - return $this->buildCreateTableSQL( - $table, - ($createFlags & self::CREATE_INDEXES) > 0, - ($createFlags & self::CREATE_FOREIGNKEYS) > 0, - ); - } - - public function createSelectSQLBuilder(): SelectSQLBuilder - { - return new DefaultSelectSQLBuilder($this, 'FOR UPDATE', 'SKIP LOCKED'); - } - - /** - * @internal - * - * @return list - * - * @throws Exception - */ - final protected function getCreateTableWithoutForeignKeysSQL(Table $table): array - { - return $this->buildCreateTableSQL($table, true, false); - } - - /** - * @return list - * - * @throws Exception - */ - private function buildCreateTableSQL(Table $table, bool $createIndexes, bool $createForeignKeys): array - { - if (count($table->getColumns()) === 0) { - throw Exception::noColumnsSpecifiedForTable($table->getName()); - } - - $tableName = $table->getQuotedName($this); - $options = $table->getOptions(); - $options['uniqueConstraints'] = []; - $options['indexes'] = []; - $options['primary'] = []; - - if ($createIndexes) { - foreach ($table->getIndexes() as $index) { - if (! $index->isPrimary()) { - $options['indexes'][$index->getQuotedName($this)] = $index; - - continue; - } - - $options['primary'] = $index->getQuotedColumns($this); - $options['primary_index'] = $index; - } - - foreach ($table->getUniqueConstraints() as $uniqueConstraint) { - $options['uniqueConstraints'][$uniqueConstraint->getQuotedName($this)] = $uniqueConstraint; - } - } - - if ($createForeignKeys) { - $options['foreignKeys'] = []; - - foreach ($table->getForeignKeys() as $fkConstraint) { - $options['foreignKeys'][] = $fkConstraint; - } - } - - $columnSql = []; - $columns = []; - - foreach ($table->getColumns() as $column) { - if ( - $this->_eventManager !== null - && $this->_eventManager->hasListeners(Events::onSchemaCreateTableColumn) - ) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onSchemaCreateTableColumn, - ); - - $eventArgs = new SchemaCreateTableColumnEventArgs($column, $table, $this); - - $this->_eventManager->dispatchEvent(Events::onSchemaCreateTableColumn, $eventArgs); - - $columnSql = array_merge($columnSql, $eventArgs->getSql()); - - if ($eventArgs->isDefaultPrevented()) { - continue; - } - } - - $columnData = $this->columnToArray($column); - - if (in_array($column->getName(), $options['primary'], true)) { - $columnData['primary'] = true; - } - - $columns[$columnData['name']] = $columnData; - } - - if ($this->_eventManager !== null && $this->_eventManager->hasListeners(Events::onSchemaCreateTable)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onSchemaCreateTable, - ); - - $eventArgs = new SchemaCreateTableEventArgs($table, $columns, $options, $this); - - $this->_eventManager->dispatchEvent(Events::onSchemaCreateTable, $eventArgs); - - if ($eventArgs->isDefaultPrevented()) { - return array_merge($eventArgs->getSql(), $columnSql); - } - } - - $sql = $this->_getCreateTableSQL($tableName, $columns, $options); - - if ($this->supportsCommentOnStatement()) { - if ($table->hasOption('comment')) { - $sql[] = $this->getCommentOnTableSQL($tableName, $table->getOption('comment')); - } - - foreach ($table->getColumns() as $column) { - $comment = $this->getColumnComment($column); - - if ($comment === null || $comment === '') { - continue; - } - - $sql[] = $this->getCommentOnColumnSQL($tableName, $column->getQuotedName($this), $comment); - } - } - - return array_merge($sql, $columnSql); - } - - /** - * @param list $tables - * - * @return list - * - * @throws Exception - */ - public function getCreateTablesSQL(array $tables): array - { - $sql = []; - - foreach ($tables as $table) { - $sql = array_merge($sql, $this->getCreateTableWithoutForeignKeysSQL($table)); - } - - foreach ($tables as $table) { - foreach ($table->getForeignKeys() as $foreignKey) { - $sql[] = $this->getCreateForeignKeySQL( - $foreignKey, - $table->getQuotedName($this), - ); - } - } - - return $sql; - } - - /** - * @param list
$tables - * - * @return list - */ - public function getDropTablesSQL(array $tables): array - { - $sql = []; - - foreach ($tables as $table) { - foreach ($table->getForeignKeys() as $foreignKey) { - $sql[] = $this->getDropForeignKeySQL( - $foreignKey->getQuotedName($this), - $table->getQuotedName($this), - ); - } - } - - foreach ($tables as $table) { - $sql[] = $this->getDropTableSQL($table->getQuotedName($this)); - } - - return $sql; - } - - protected function getCommentOnTableSQL(string $tableName, ?string $comment): string - { - $tableName = new Identifier($tableName); - - return sprintf( - 'COMMENT ON TABLE %s IS %s', - $tableName->getQuotedName($this), - $this->quoteStringLiteral((string) $comment), - ); - } - - /** - * @param string $tableName - * @param string $columnName - * @param string|null $comment - * - * @return string - */ - public function getCommentOnColumnSQL($tableName, $columnName, $comment) - { - $tableName = new Identifier($tableName); - $columnName = new Identifier($columnName); - - return sprintf( - 'COMMENT ON COLUMN %s.%s IS %s', - $tableName->getQuotedName($this), - $columnName->getQuotedName($this), - $this->quoteStringLiteral((string) $comment), - ); - } - - /** - * Returns the SQL to create inline comment on a column. - * - * @param string $comment - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getInlineColumnCommentSQL($comment) - { - if (! $this->supportsInlineColumnComments()) { - throw Exception::notSupported(__METHOD__); - } - - return 'COMMENT ' . $this->quoteStringLiteral($comment); - } - - /** - * Returns the SQL used to create a table. - * - * @param string $name - * @param mixed[][] $columns - * @param mixed[] $options - * - * @return string[] - */ - protected function _getCreateTableSQL($name, array $columns, array $options = []) - { - $columnListSql = $this->getColumnDeclarationListSQL($columns); - - if (isset($options['uniqueConstraints']) && ! empty($options['uniqueConstraints'])) { - foreach ($options['uniqueConstraints'] as $index => $definition) { - $columnListSql .= ', ' . $this->getUniqueConstraintDeclarationSQL($index, $definition); - } - } - - if (isset($options['primary']) && ! empty($options['primary'])) { - $columnListSql .= ', PRIMARY KEY(' . implode(', ', array_unique(array_values($options['primary']))) . ')'; - } - - if (isset($options['indexes']) && ! empty($options['indexes'])) { - foreach ($options['indexes'] as $index => $definition) { - $columnListSql .= ', ' . $this->getIndexDeclarationSQL($index, $definition); - } - } - - $query = 'CREATE TABLE ' . $name . ' (' . $columnListSql; - $check = $this->getCheckDeclarationSQL($columns); - - if (! empty($check)) { - $query .= ', ' . $check; - } - - $query .= ')'; - - $sql = [$query]; - - if (isset($options['foreignKeys'])) { - foreach ($options['foreignKeys'] as $definition) { - $sql[] = $this->getCreateForeignKeySQL($definition, $name); - } - } - - return $sql; - } - - /** @return string */ - public function getCreateTemporaryTableSnippetSQL() - { - return 'CREATE TEMPORARY TABLE'; - } - - /** - * Generates SQL statements that can be used to apply the diff. - * - * @return list - */ - public function getAlterSchemaSQL(SchemaDiff $diff): array - { - return $diff->toSql($this); - } - - /** - * Returns the SQL to create a sequence on this platform. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getCreateSequenceSQL(Sequence $sequence) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Returns the SQL to change a sequence on this platform. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getAlterSequenceSQL(Sequence $sequence) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Returns the SQL snippet to drop an existing sequence. - * - * @param Sequence|string $sequence - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDropSequenceSQL($sequence) - { - if (! $this->supportsSequences()) { - throw Exception::notSupported(__METHOD__); - } - - if ($sequence instanceof Sequence) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $sequence as a Sequence object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $sequence = $sequence->getQuotedName($this); - } - - return 'DROP SEQUENCE ' . $sequence; - } - - /** - * Returns the SQL to create a constraint on a table on this platform. - * - * @deprecated Use {@see getCreateIndexSQL()}, {@see getCreateForeignKeySQL()} - * or {@see getCreateUniqueConstraintSQL()} instead. - * - * @param Table|string $table - * - * @return string - * - * @throws InvalidArgumentException - */ - public function getCreateConstraintSQL(Constraint $constraint, $table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } - - $query = 'ALTER TABLE ' . $table . ' ADD CONSTRAINT ' . $constraint->getQuotedName($this); - - $columnList = '(' . implode(', ', $constraint->getQuotedColumns($this)) . ')'; - - $referencesClause = ''; - if ($constraint instanceof Index) { - if ($constraint->isPrimary()) { - $query .= ' PRIMARY KEY'; - } elseif ($constraint->isUnique()) { - $query .= ' UNIQUE'; - } else { - throw new InvalidArgumentException( - 'Can only create primary or unique constraints, no common indexes with getCreateConstraintSQL().', - ); - } - } elseif ($constraint instanceof UniqueConstraint) { - $query .= ' UNIQUE'; - } elseif ($constraint instanceof ForeignKeyConstraint) { - $query .= ' FOREIGN KEY'; - - $referencesClause = ' REFERENCES ' . $constraint->getQuotedForeignTableName($this) . - ' (' . implode(', ', $constraint->getQuotedForeignColumns($this)) . ')'; - } - - $query .= ' ' . $columnList . $referencesClause; - - return $query; - } - - /** - * Returns the SQL to create an index on a table on this platform. - * - * @param Table|string $table The name of the table on which the index is to be created. - * - * @return string - * - * @throws InvalidArgumentException - */ - public function getCreateIndexSQL(Index $index, $table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } - - $name = $index->getQuotedName($this); - $columns = $index->getColumns(); - - if (count($columns) === 0) { - throw new InvalidArgumentException(sprintf( - 'Incomplete or invalid index definition %s on table %s', - $name, - $table, - )); - } - - if ($index->isPrimary()) { - return $this->getCreatePrimaryKeySQL($index, $table); - } - - $query = 'CREATE ' . $this->getCreateIndexSQLFlags($index) . 'INDEX ' . $name . ' ON ' . $table; - $query .= ' (' . $this->getIndexFieldDeclarationListSQL($index) . ')' . $this->getPartialIndexSQL($index); - - return $query; - } - - /** - * Adds condition for partial index. - * - * @return string - */ - protected function getPartialIndexSQL(Index $index) - { - if ($this->supportsPartialIndexes() && $index->hasOption('where')) { - return ' WHERE ' . $index->getOption('where'); - } - - return ''; - } - - /** - * Adds additional flags for index generation. - * - * @return string - */ - protected function getCreateIndexSQLFlags(Index $index) - { - return $index->isUnique() ? 'UNIQUE ' : ''; - } - - /** - * Returns the SQL to create an unnamed primary key constraint. - * - * @param Table|string $table - * - * @return string - */ - public function getCreatePrimaryKeySQL(Index $index, $table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } - - return 'ALTER TABLE ' . $table . ' ADD PRIMARY KEY (' . $this->getIndexFieldDeclarationListSQL($index) . ')'; - } - - /** - * Returns the SQL to create a named schema. - * - * @param string $schemaName - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getCreateSchemaSQL($schemaName) - { - if (! $this->supportsSchemas()) { - throw Exception::notSupported(__METHOD__); - } - - return 'CREATE SCHEMA ' . $schemaName; - } - - /** - * Returns the SQL to create a unique constraint on a table on this platform. - */ - public function getCreateUniqueConstraintSQL(UniqueConstraint $constraint, string $tableName): string - { - return $this->getCreateConstraintSQL($constraint, $tableName); - } - - /** - * Returns the SQL snippet to drop a schema. - * - * @throws Exception If not supported on this platform. - */ - public function getDropSchemaSQL(string $schemaName): string - { - if (! $this->supportsSchemas()) { - throw Exception::notSupported(__METHOD__); - } - - return 'DROP SCHEMA ' . $schemaName; - } - - /** - * Quotes a string so that it can be safely used as a table or column name, - * even if it is a reserved word of the platform. This also detects identifier - * chains separated by dot and quotes them independently. - * - * NOTE: Just because you CAN use quoted identifiers doesn't mean - * you SHOULD use them. In general, they end up causing way more - * problems than they solve. - * - * @param string $str The identifier name to be quoted. - * - * @return string The quoted identifier string. - */ - public function quoteIdentifier($str) - { - if (strpos($str, '.') !== false) { - $parts = array_map([$this, 'quoteSingleIdentifier'], explode('.', $str)); - - return implode('.', $parts); - } - - return $this->quoteSingleIdentifier($str); - } - - /** - * Quotes a single identifier (no dot chain separation). - * - * @param string $str The identifier name to be quoted. - * - * @return string The quoted identifier string. - */ - public function quoteSingleIdentifier($str) - { - $c = $this->getIdentifierQuoteCharacter(); - - return $c . str_replace($c, $c . $c, $str) . $c; - } - - /** - * Returns the SQL to create a new foreign key. - * - * @param ForeignKeyConstraint $foreignKey The foreign key constraint. - * @param Table|string $table The name of the table on which the foreign key is to be created. - * - * @return string - */ - public function getCreateForeignKeySQL(ForeignKeyConstraint $foreignKey, $table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } - - return 'ALTER TABLE ' . $table . ' ADD ' . $this->getForeignKeyDeclarationSQL($foreignKey); - } - - /** - * Gets the SQL statements for altering an existing table. - * - * This method returns an array of SQL statements, since some platforms need several statements. - * - * @return list - * - * @throws Exception If not supported on this platform. - */ - public function getAlterTableSQL(TableDiff $diff) - { - throw Exception::notSupported(__METHOD__); - } - - /** @return list */ - public function getRenameTableSQL(string $oldName, string $newName): array - { - return [ - sprintf('ALTER TABLE %s RENAME TO %s', $oldName, $newName), - ]; - } - - /** - * @param mixed[] $columnSql - * - * @return bool - */ - protected function onSchemaAlterTableAddColumn(Column $column, TableDiff $diff, &$columnSql) - { - if ($this->_eventManager === null) { - return false; - } - - if (! $this->_eventManager->hasListeners(Events::onSchemaAlterTableAddColumn)) { - return false; - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onSchemaAlterTableAddColumn, - ); - - $eventArgs = new SchemaAlterTableAddColumnEventArgs($column, $diff, $this); - $this->_eventManager->dispatchEvent(Events::onSchemaAlterTableAddColumn, $eventArgs); - - $columnSql = array_merge($columnSql, $eventArgs->getSql()); - - return $eventArgs->isDefaultPrevented(); - } - - /** - * @param string[] $columnSql - * - * @return bool - */ - protected function onSchemaAlterTableRemoveColumn(Column $column, TableDiff $diff, &$columnSql) - { - if ($this->_eventManager === null) { - return false; - } - - if (! $this->_eventManager->hasListeners(Events::onSchemaAlterTableRemoveColumn)) { - return false; - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onSchemaAlterTableRemoveColumn, - ); - - $eventArgs = new SchemaAlterTableRemoveColumnEventArgs($column, $diff, $this); - $this->_eventManager->dispatchEvent(Events::onSchemaAlterTableRemoveColumn, $eventArgs); - - $columnSql = array_merge($columnSql, $eventArgs->getSql()); - - return $eventArgs->isDefaultPrevented(); - } - - /** - * @param string[] $columnSql - * - * @return bool - */ - protected function onSchemaAlterTableChangeColumn(ColumnDiff $columnDiff, TableDiff $diff, &$columnSql) - { - if ($this->_eventManager === null) { - return false; - } - - if (! $this->_eventManager->hasListeners(Events::onSchemaAlterTableChangeColumn)) { - return false; - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onSchemaAlterTableChangeColumn, - ); - - $eventArgs = new SchemaAlterTableChangeColumnEventArgs($columnDiff, $diff, $this); - $this->_eventManager->dispatchEvent(Events::onSchemaAlterTableChangeColumn, $eventArgs); - - $columnSql = array_merge($columnSql, $eventArgs->getSql()); - - return $eventArgs->isDefaultPrevented(); - } - - /** - * @param string $oldColumnName - * @param string[] $columnSql - * - * @return bool - */ - protected function onSchemaAlterTableRenameColumn($oldColumnName, Column $column, TableDiff $diff, &$columnSql) - { - if ($this->_eventManager === null) { - return false; - } - - if (! $this->_eventManager->hasListeners(Events::onSchemaAlterTableRenameColumn)) { - return false; - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onSchemaAlterTableRenameColumn, - ); - - $eventArgs = new SchemaAlterTableRenameColumnEventArgs($oldColumnName, $column, $diff, $this); - $this->_eventManager->dispatchEvent(Events::onSchemaAlterTableRenameColumn, $eventArgs); - - $columnSql = array_merge($columnSql, $eventArgs->getSql()); - - return $eventArgs->isDefaultPrevented(); - } - - /** - * @param string[] $sql - * - * @return bool - */ - protected function onSchemaAlterTable(TableDiff $diff, &$sql) - { - if ($this->_eventManager === null) { - return false; - } - - if (! $this->_eventManager->hasListeners(Events::onSchemaAlterTable)) { - return false; - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated.', - Events::onSchemaAlterTable, - ); - - $eventArgs = new SchemaAlterTableEventArgs($diff, $this); - $this->_eventManager->dispatchEvent(Events::onSchemaAlterTable, $eventArgs); - - $sql = array_merge($sql, $eventArgs->getSql()); - - return $eventArgs->isDefaultPrevented(); - } - - /** @return string[] */ - protected function getPreAlterTableIndexForeignKeySQL(TableDiff $diff) - { - $tableNameSQL = ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this); - - $sql = []; - if ($this->supportsForeignKeyConstraints()) { - foreach ($diff->getDroppedForeignKeys() as $foreignKey) { - if ($foreignKey instanceof ForeignKeyConstraint) { - $foreignKey = $foreignKey->getQuotedName($this); - } - - $sql[] = $this->getDropForeignKeySQL($foreignKey, $tableNameSQL); - } - - foreach ($diff->getModifiedForeignKeys() as $foreignKey) { - $sql[] = $this->getDropForeignKeySQL($foreignKey->getQuotedName($this), $tableNameSQL); - } - } - - foreach ($diff->getDroppedIndexes() as $index) { - $sql[] = $this->getDropIndexSQL($index->getQuotedName($this), $tableNameSQL); - } - - foreach ($diff->getModifiedIndexes() as $index) { - $sql[] = $this->getDropIndexSQL($index->getQuotedName($this), $tableNameSQL); - } - - return $sql; - } - - /** @return string[] */ - protected function getPostAlterTableIndexForeignKeySQL(TableDiff $diff) - { - $sql = []; - $newName = $diff->getNewName(); - - if ($newName !== false) { - $tableNameSQL = $newName->getQuotedName($this); - } else { - $tableNameSQL = ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this); - } - - if ($this->supportsForeignKeyConstraints()) { - foreach ($diff->getAddedForeignKeys() as $foreignKey) { - $sql[] = $this->getCreateForeignKeySQL($foreignKey, $tableNameSQL); - } - - foreach ($diff->getModifiedForeignKeys() as $foreignKey) { - $sql[] = $this->getCreateForeignKeySQL($foreignKey, $tableNameSQL); - } - } - - foreach ($diff->getAddedIndexes() as $index) { - $sql[] = $this->getCreateIndexSQL($index, $tableNameSQL); - } - - foreach ($diff->getModifiedIndexes() as $index) { - $sql[] = $this->getCreateIndexSQL($index, $tableNameSQL); - } - - foreach ($diff->getRenamedIndexes() as $oldIndexName => $index) { - $oldIndexName = new Identifier($oldIndexName); - $sql = array_merge( - $sql, - $this->getRenameIndexSQL($oldIndexName->getQuotedName($this), $index, $tableNameSQL), - ); - } - - return $sql; - } - - /** - * Returns the SQL for renaming an index on a table. - * - * @param string $oldIndexName The name of the index to rename from. - * @param Index $index The definition of the index to rename to. - * @param string $tableName The table to rename the given index on. - * - * @return string[] The sequence of SQL statements for renaming the given index. - */ - protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName) - { - return [ - $this->getDropIndexSQL($oldIndexName, $tableName), - $this->getCreateIndexSQL($index, $tableName), - ]; - } - - /** - * Gets declaration of a number of columns in bulk. - * - * @param mixed[][] $columns A multidimensional associative array. - * The first dimension determines the column name, while the second - * dimension is keyed with the name of the properties - * of the column being declared as array indexes. Currently, the types - * of supported column properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * column. If this argument is missing the column should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this column. - * - * notnull - * Boolean flag that indicates whether this column is constrained - * to not be set to null. - * charset - * Text value with the default CHARACTER SET for this column. - * collation - * Text value with the default COLLATION for this column. - * unique - * unique constraint - * - * @return string - */ - public function getColumnDeclarationListSQL(array $columns) - { - $declarations = []; - - foreach ($columns as $name => $column) { - $declarations[] = $this->getColumnDeclarationSQL($name, $column); - } - - return implode(', ', $declarations); - } - - /** - * Obtains DBMS specific SQL code portion needed to declare a generic type - * column to be used in statements like CREATE TABLE. - * - * @param string $name The name the column to be declared. - * @param mixed[] $column An associative array with the name of the properties - * of the column being declared as array indexes. Currently, the types - * of supported column properties are as follows: - * - * length - * Integer value that determines the maximum length of the text - * column. If this argument is missing the column should be - * declared to have the longest length allowed by the DBMS. - * - * default - * Text value to be used as default for this column. - * - * notnull - * Boolean flag that indicates whether this column is constrained - * to not be set to null. - * charset - * Text value with the default CHARACTER SET for this column. - * collation - * Text value with the default COLLATION for this column. - * unique - * unique constraint - * check - * column check constraint - * columnDefinition - * a string that defines the complete column - * - * @return string DBMS specific SQL code portion that should be used to declare the column. - * - * @throws Exception - */ - public function getColumnDeclarationSQL($name, array $column) - { - if (isset($column['columnDefinition'])) { - $declaration = $this->getCustomTypeDeclarationSQL($column); - } else { - $default = $this->getDefaultValueDeclarationSQL($column); - - $charset = ! empty($column['charset']) ? - ' ' . $this->getColumnCharsetDeclarationSQL($column['charset']) : ''; - - $collation = ! empty($column['collation']) ? - ' ' . $this->getColumnCollationDeclarationSQL($column['collation']) : ''; - - $notnull = ! empty($column['notnull']) ? ' NOT NULL' : ''; - - if (! empty($column['unique'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5656', - 'The usage of the "unique" column property is deprecated. Use unique constraints instead.', - ); - - $unique = ' ' . $this->getUniqueFieldDeclarationSQL(); - } else { - $unique = ''; - } - - if (! empty($column['check'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5656', - 'The usage of the "check" column property is deprecated.', - ); - - $check = ' ' . $column['check']; - } else { - $check = ''; - } - - $typeDecl = $column['type']->getSQLDeclaration($column, $this); - $declaration = $typeDecl . $charset . $default . $notnull . $unique . $check . $collation; - - if ($this->supportsInlineColumnComments() && isset($column['comment']) && $column['comment'] !== '') { - $declaration .= ' ' . $this->getInlineColumnCommentSQL($column['comment']); - } - } - - return $name . ' ' . $declaration; - } - - /** - * Returns the SQL snippet that declares a floating point column of arbitrary precision. - * - * @param mixed[] $column - * - * @return string - */ - public function getDecimalTypeDeclarationSQL(array $column) - { - if (empty($column['precision'])) { - if (! isset($column['precision'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5637', - 'Relying on the default decimal column precision is deprecated' - . ', specify the precision explicitly.', - ); - } - - $precision = 10; - } else { - $precision = $column['precision']; - } - - if (empty($column['scale'])) { - if (! isset($column['scale'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5637', - 'Relying on the default decimal column scale is deprecated' - . ', specify the scale explicitly.', - ); - } - - $scale = 0; - } else { - $scale = $column['scale']; - } - - return 'NUMERIC(' . $precision . ', ' . $scale . ')'; - } - - /** - * Obtains DBMS specific SQL code portion needed to set a default value - * declaration to be used in statements like CREATE TABLE. - * - * @param mixed[] $column The column definition array. - * - * @return string DBMS specific SQL code portion needed to set a default value. - */ - public function getDefaultValueDeclarationSQL($column) - { - if (! isset($column['default'])) { - return empty($column['notnull']) ? ' DEFAULT NULL' : ''; - } - - $default = $column['default']; - - if (! isset($column['type'])) { - return " DEFAULT '" . $default . "'"; - } - - $type = $column['type']; - - if ($type instanceof Types\PhpIntegerMappingType) { - return ' DEFAULT ' . $default; - } - - if ($type instanceof Types\PhpDateTimeMappingType && $default === $this->getCurrentTimestampSQL()) { - return ' DEFAULT ' . $this->getCurrentTimestampSQL(); - } - - if ($type instanceof Types\TimeType && $default === $this->getCurrentTimeSQL()) { - return ' DEFAULT ' . $this->getCurrentTimeSQL(); - } - - if ($type instanceof Types\DateType && $default === $this->getCurrentDateSQL()) { - return ' DEFAULT ' . $this->getCurrentDateSQL(); - } - - if ($type instanceof Types\BooleanType) { - return ' DEFAULT ' . $this->convertBooleans($default); - } - - return ' DEFAULT ' . $this->quoteStringLiteral($default); - } - - /** - * Obtains DBMS specific SQL code portion needed to set a CHECK constraint - * declaration to be used in statements like CREATE TABLE. - * - * @param string[]|mixed[][] $definition The check definition. - * - * @return string DBMS specific SQL code portion needed to set a CHECK constraint. - */ - public function getCheckDeclarationSQL(array $definition) - { - $constraints = []; - foreach ($definition as $column => $def) { - if (is_string($def)) { - $constraints[] = 'CHECK (' . $def . ')'; - } else { - if (isset($def['min'])) { - $constraints[] = 'CHECK (' . $column . ' >= ' . $def['min'] . ')'; - } - - if (isset($def['max'])) { - $constraints[] = 'CHECK (' . $column . ' <= ' . $def['max'] . ')'; - } - } - } - - return implode(', ', $constraints); - } - - /** - * Obtains DBMS specific SQL code portion needed to set a unique - * constraint declaration to be used in statements like CREATE TABLE. - * - * @param string $name The name of the unique constraint. - * @param UniqueConstraint $constraint The unique constraint definition. - * - * @return string DBMS specific SQL code portion needed to set a constraint. - * - * @throws InvalidArgumentException - */ - public function getUniqueConstraintDeclarationSQL($name, UniqueConstraint $constraint) - { - $columns = $constraint->getQuotedColumns($this); - $name = new Identifier($name); - - if (count($columns) === 0) { - throw new InvalidArgumentException("Incomplete definition. 'columns' required."); - } - - $constraintFlags = array_merge(['UNIQUE'], array_map('strtoupper', $constraint->getFlags())); - $constraintName = $name->getQuotedName($this); - $columnListNames = $this->getColumnsFieldDeclarationListSQL($columns); - - return sprintf('CONSTRAINT %s %s (%s)', $constraintName, implode(' ', $constraintFlags), $columnListNames); - } - - /** - * Obtains DBMS specific SQL code portion needed to set an index - * declaration to be used in statements like CREATE TABLE. - * - * @param string $name The name of the index. - * @param Index $index The index definition. - * - * @return string DBMS specific SQL code portion needed to set an index. - * - * @throws InvalidArgumentException - */ - public function getIndexDeclarationSQL($name, Index $index) - { - $columns = $index->getColumns(); - $name = new Identifier($name); - - if (count($columns) === 0) { - throw new InvalidArgumentException("Incomplete definition. 'columns' required."); - } - - return $this->getCreateIndexSQLFlags($index) . 'INDEX ' . $name->getQuotedName($this) - . ' (' . $this->getIndexFieldDeclarationListSQL($index) . ')' . $this->getPartialIndexSQL($index); - } - - /** - * Obtains SQL code portion needed to create a custom column, - * e.g. when a column has the "columnDefinition" keyword. - * Only "AUTOINCREMENT" and "PRIMARY KEY" are added if appropriate. - * - * @deprecated - * - * @param mixed[] $column - * - * @return string - */ - public function getCustomTypeDeclarationSQL(array $column) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5527', - '%s is deprecated.', - __METHOD__, - ); - - return $column['columnDefinition']; - } - - /** - * Obtains DBMS specific SQL code portion needed to set an index - * declaration to be used in statements like CREATE TABLE. - * - * @deprecated - */ - public function getIndexFieldDeclarationListSQL(Index $index): string - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5527', - '%s is deprecated.', - __METHOD__, - ); - - return implode(', ', $index->getQuotedColumns($this)); - } - - /** - * Obtains DBMS specific SQL code portion needed to set an index - * declaration to be used in statements like CREATE TABLE. - * - * @deprecated - * - * @param mixed[] $columns - */ - public function getColumnsFieldDeclarationListSQL(array $columns): string - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5527', - '%s is deprecated.', - __METHOD__, - ); - - $ret = []; - - foreach ($columns as $column => $definition) { - if (is_array($definition)) { - $ret[] = $column; - } else { - $ret[] = $definition; - } - } - - return implode(', ', $ret); - } - - /** - * Returns the required SQL string that fits between CREATE ... TABLE - * to create the table as a temporary table. - * - * Should be overridden in driver classes to return the correct string for the - * specific database type. - * - * The default is to return the string "TEMPORARY" - this will result in a - * SQL error for any database that does not support temporary tables, or that - * requires a different SQL command from "CREATE TEMPORARY TABLE". - * - * @deprecated - * - * @return string The string required to be placed between "CREATE" and "TABLE" - * to generate a temporary table, if possible. - */ - public function getTemporaryTableSQL() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getTemporaryTableSQL() is deprecated.', - ); - - return 'TEMPORARY'; - } - - /** - * Some vendors require temporary table names to be qualified specially. - * - * @param string $tableName - * - * @return string - */ - public function getTemporaryTableName($tableName) - { - return $tableName; - } - - /** - * Obtain DBMS specific SQL code portion needed to set the FOREIGN KEY constraint - * of a column declaration to be used in statements like CREATE TABLE. - * - * @return string DBMS specific SQL code portion needed to set the FOREIGN KEY constraint - * of a column declaration. - */ - public function getForeignKeyDeclarationSQL(ForeignKeyConstraint $foreignKey) - { - $sql = $this->getForeignKeyBaseDeclarationSQL($foreignKey); - $sql .= $this->getAdvancedForeignKeyOptionsSQL($foreignKey); - - return $sql; - } - - /** - * Returns the FOREIGN KEY query section dealing with non-standard options - * as MATCH, INITIALLY DEFERRED, ON UPDATE, ... - * - * @param ForeignKeyConstraint $foreignKey The foreign key definition. - * - * @return string - */ - public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey) - { - $query = ''; - if ($foreignKey->hasOption('onUpdate')) { - $query .= ' ON UPDATE ' . $this->getForeignKeyReferentialActionSQL($foreignKey->getOption('onUpdate')); - } - - if ($foreignKey->hasOption('onDelete')) { - $query .= ' ON DELETE ' . $this->getForeignKeyReferentialActionSQL($foreignKey->getOption('onDelete')); - } - - return $query; - } - - /** - * Returns the given referential action in uppercase if valid, otherwise throws an exception. - * - * @param string $action The foreign key referential action. - * - * @return string - * - * @throws InvalidArgumentException If unknown referential action given. - */ - public function getForeignKeyReferentialActionSQL($action) - { - $upper = strtoupper($action); - switch ($upper) { - case 'CASCADE': - case 'SET NULL': - case 'NO ACTION': - case 'RESTRICT': - case 'SET DEFAULT': - return $upper; - - default: - throw new InvalidArgumentException('Invalid foreign key action: ' . $upper); - } - } - - /** - * Obtains DBMS specific SQL code portion needed to set the FOREIGN KEY constraint - * of a column declaration to be used in statements like CREATE TABLE. - * - * @return string - * - * @throws InvalidArgumentException - */ - public function getForeignKeyBaseDeclarationSQL(ForeignKeyConstraint $foreignKey) - { - $sql = ''; - if (strlen($foreignKey->getName()) > 0) { - $sql .= 'CONSTRAINT ' . $foreignKey->getQuotedName($this) . ' '; - } - - $sql .= 'FOREIGN KEY ('; - - if (count($foreignKey->getLocalColumns()) === 0) { - throw new InvalidArgumentException("Incomplete definition. 'local' required."); - } - - if (count($foreignKey->getForeignColumns()) === 0) { - throw new InvalidArgumentException("Incomplete definition. 'foreign' required."); - } - - if (strlen($foreignKey->getForeignTableName()) === 0) { - throw new InvalidArgumentException("Incomplete definition. 'foreignTable' required."); - } - - return $sql . implode(', ', $foreignKey->getQuotedLocalColumns($this)) - . ') REFERENCES ' - . $foreignKey->getQuotedForeignTableName($this) . ' (' - . implode(', ', $foreignKey->getQuotedForeignColumns($this)) . ')'; - } - - /** - * Obtains DBMS specific SQL code portion needed to set the UNIQUE constraint - * of a column declaration to be used in statements like CREATE TABLE. - * - * @deprecated Use UNIQUE in SQL instead. - * - * @return string DBMS specific SQL code portion needed to set the UNIQUE constraint - * of a column declaration. - */ - public function getUniqueFieldDeclarationSQL() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getUniqueFieldDeclarationSQL() is deprecated. Use UNIQUE in SQL instead.', - ); - - return 'UNIQUE'; - } - - /** - * Obtains DBMS specific SQL code portion needed to set the CHARACTER SET - * of a column declaration to be used in statements like CREATE TABLE. - * - * @param string $charset The name of the charset. - * - * @return string DBMS specific SQL code portion needed to set the CHARACTER SET - * of a column declaration. - */ - public function getColumnCharsetDeclarationSQL($charset) - { - return ''; - } - - /** - * Obtains DBMS specific SQL code portion needed to set the COLLATION - * of a column declaration to be used in statements like CREATE TABLE. - * - * @param string $collation The name of the collation. - * - * @return string DBMS specific SQL code portion needed to set the COLLATION - * of a column declaration. - */ - public function getColumnCollationDeclarationSQL($collation) - { - return $this->supportsColumnCollation() ? 'COLLATE ' . $this->quoteSingleIdentifier($collation) : ''; - } - - /** - * Whether the platform prefers identity columns (eg. autoincrement) for ID generation. - * Subclasses should override this method to return TRUE if they prefer identity columns. - * - * @deprecated - * - * @return bool - */ - public function prefersIdentityColumns() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/1519', - 'AbstractPlatform::prefersIdentityColumns() is deprecated.', - ); - - return false; - } - - /** - * Some platforms need the boolean values to be converted. - * - * The default conversion in this implementation converts to integers (false => 0, true => 1). - * - * Note: if the input is not a boolean the original input might be returned. - * - * There are two contexts when converting booleans: Literals and Prepared Statements. - * This method should handle the literal case - * - * @param mixed $item A boolean or an array of them. - * - * @return mixed A boolean database value or an array of them. - */ - public function convertBooleans($item) - { - if (is_array($item)) { - foreach ($item as $k => $value) { - if (! is_bool($value)) { - continue; - } - - $item[$k] = (int) $value; - } - } elseif (is_bool($item)) { - $item = (int) $item; - } - - return $item; - } - - /** - * Some platforms have boolean literals that needs to be correctly converted - * - * The default conversion tries to convert value into bool "(bool)$item" - * - * @param T $item - * - * @return (T is null ? null : bool) - * - * @template T - */ - public function convertFromBoolean($item) - { - return $item === null ? null : (bool) $item; - } - - /** - * This method should handle the prepared statements case. When there is no - * distinction, it's OK to use the same method. - * - * Note: if the input is not a boolean the original input might be returned. - * - * @param mixed $item A boolean or an array of them. - * - * @return mixed A boolean database value or an array of them. - */ - public function convertBooleansToDatabaseValue($item) - { - return $this->convertBooleans($item); - } - - /** - * Returns the SQL specific for the platform to get the current date. - * - * @return string - */ - public function getCurrentDateSQL() - { - return 'CURRENT_DATE'; - } - - /** - * Returns the SQL specific for the platform to get the current time. - * - * @return string - */ - public function getCurrentTimeSQL() - { - return 'CURRENT_TIME'; - } - - /** - * Returns the SQL specific for the platform to get the current timestamp - * - * @return string - */ - public function getCurrentTimestampSQL() - { - return 'CURRENT_TIMESTAMP'; - } - - /** - * Returns the SQL for a given transaction isolation level Connection constant. - * - * @param int $level - * - * @return string - * - * @throws InvalidArgumentException - */ - protected function _getTransactionIsolationLevelSQL($level) - { - switch ($level) { - case TransactionIsolationLevel::READ_UNCOMMITTED: - return 'READ UNCOMMITTED'; - - case TransactionIsolationLevel::READ_COMMITTED: - return 'READ COMMITTED'; - - case TransactionIsolationLevel::REPEATABLE_READ: - return 'REPEATABLE READ'; - - case TransactionIsolationLevel::SERIALIZABLE: - return 'SERIALIZABLE'; - - default: - throw new InvalidArgumentException('Invalid isolation level:' . $level); - } - } - - /** - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListDatabasesSQL() - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Returns the SQL statement for retrieving the namespaces defined in the database. - * - * @deprecated Use {@see AbstractSchemaManager::listSchemaNames()} instead. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListNamespacesSQL() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4503', - 'AbstractPlatform::getListNamespacesSQL() is deprecated,' - . ' use AbstractSchemaManager::listSchemaNames() instead.', - ); - - throw Exception::notSupported(__METHOD__); - } - - /** - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - * - * @param string $database - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListSequencesSQL($database) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * @deprecated - * - * @param string $table - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListTableConstraintsSQL($table) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * @param string $table - * @param string $database - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListTableColumnsSQL($table, $database = null) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListTablesSQL() - { - throw Exception::notSupported(__METHOD__); - } - - /** - * @deprecated - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListUsersSQL() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::getListUsersSQL() is deprecated.', - ); - - throw Exception::notSupported(__METHOD__); - } - - /** - * Returns the SQL to list all views of a database or user. - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - * - * @param string $database - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListViewsSQL($database) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * Returns the list of indexes for the current database. - * - * The current database parameter is optional but will always be passed - * when using the SchemaManager API and is the database the given table is in. - * - * Attention: Some platforms only support currentDatabase when they - * are connected with that database. Cross-database information schema - * requests may be impossible. - * - * @param string $table - * @param string $database - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListTableIndexesSQL($table, $database = null) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * @param string $table - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getListTableForeignKeysSQL($table) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * @param string $name - * @param string $sql - * - * @return string - */ - public function getCreateViewSQL($name, $sql) - { - return 'CREATE VIEW ' . $name . ' AS ' . $sql; - } - - /** - * @param string $name - * - * @return string - */ - public function getDropViewSQL($name) - { - return 'DROP VIEW ' . $name; - } - - /** - * @param string $sequence - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getSequenceNextValSQL($sequence) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Returns the SQL to create a new database. - * - * @param string $name The name of the database that should be created. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getCreateDatabaseSQL($name) - { - if (! $this->supportsCreateDropDatabase()) { - throw Exception::notSupported(__METHOD__); - } - - return 'CREATE DATABASE ' . $name; - } - - /** - * Returns the SQL snippet to drop an existing database. - * - * @param string $name The name of the database that should be dropped. - * - * @return string - */ - public function getDropDatabaseSQL($name) - { - if (! $this->supportsCreateDropDatabase()) { - throw Exception::notSupported(__METHOD__); - } - - return 'DROP DATABASE ' . $name; - } - - /** - * Returns the SQL to set the transaction isolation level. - * - * @param int $level - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getSetTransactionIsolationSQL($level) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Obtains DBMS specific SQL to be used to create datetime columns in - * statements like CREATE TABLE. - * - * @param mixed[] $column - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateTimeTypeDeclarationSQL(array $column) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Obtains DBMS specific SQL to be used to create datetime with timezone offset columns. - * - * @param mixed[] $column - * - * @return string - */ - public function getDateTimeTzTypeDeclarationSQL(array $column) - { - return $this->getDateTimeTypeDeclarationSQL($column); - } - - /** - * Obtains DBMS specific SQL to be used to create date columns in statements - * like CREATE TABLE. - * - * @param mixed[] $column - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDateTypeDeclarationSQL(array $column) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Obtains DBMS specific SQL to be used to create time columns in statements - * like CREATE TABLE. - * - * @param mixed[] $column - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getTimeTypeDeclarationSQL(array $column) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * @param mixed[] $column - * - * @return string - */ - public function getFloatDeclarationSQL(array $column) - { - return 'DOUBLE PRECISION'; - } - - /** - * Gets the default transaction isolation level of the platform. - * - * @see TransactionIsolationLevel - * - * @return TransactionIsolationLevel::* The default isolation level. - */ - public function getDefaultTransactionIsolationLevel() - { - return TransactionIsolationLevel::READ_COMMITTED; - } - - /* supports*() methods */ - - /** - * Whether the platform supports sequences. - * - * @return bool - */ - public function supportsSequences() - { - return false; - } - - /** - * Whether the platform supports identity columns. - * - * Identity columns are columns that receive an auto-generated value from the - * database on insert of a row. - * - * @return bool - */ - public function supportsIdentityColumns() - { - return false; - } - - /** - * Whether the platform emulates identity columns through sequences. - * - * Some platforms that do not support identity columns natively - * but support sequences can emulate identity columns by using - * sequences. - * - * @deprecated - * - * @return bool - */ - public function usesSequenceEmulatedIdentityColumns() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5513', - '%s is deprecated.', - __METHOD__, - ); - - return false; - } - - /** - * Returns the name of the sequence for a particular identity column in a particular table. - * - * @deprecated - * - * @see usesSequenceEmulatedIdentityColumns - * - * @param string $tableName The name of the table to return the sequence name for. - * @param string $columnName The name of the identity column in the table to return the sequence name for. - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getIdentitySequenceName($tableName, $columnName) - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Whether the platform supports indexes. - * - * @deprecated - * - * @return bool - */ - public function supportsIndexes() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::supportsIndexes() is deprecated.', - ); - - return true; - } - - /** - * Whether the platform supports partial indexes. - * - * @return bool - */ - public function supportsPartialIndexes() - { - return false; - } - - /** - * Whether the platform supports indexes with column length definitions. - */ - public function supportsColumnLengthIndexes(): bool - { - return false; - } - - /** - * Whether the platform supports altering tables. - * - * @deprecated All platforms must implement altering tables. - * - * @return bool - */ - public function supportsAlterTable() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::supportsAlterTable() is deprecated. All platforms must implement altering tables.', - ); - - return true; - } - - /** - * Whether the platform supports transactions. - * - * @deprecated - * - * @return bool - */ - public function supportsTransactions() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::supportsTransactions() is deprecated.', - ); - - return true; - } - - /** - * Whether the platform supports savepoints. - * - * @return bool - */ - public function supportsSavepoints() - { - return true; - } - - /** - * Whether the platform supports releasing savepoints. - * - * @return bool - */ - public function supportsReleaseSavepoints() - { - return $this->supportsSavepoints(); - } - - /** - * Whether the platform supports primary key constraints. - * - * @deprecated - * - * @return bool - */ - public function supportsPrimaryConstraints() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::supportsPrimaryConstraints() is deprecated.', - ); - - return true; - } - - /** - * Whether the platform supports foreign key constraints. - * - * @deprecated All platforms should support foreign key constraints. - * - * @return bool - */ - public function supportsForeignKeyConstraints() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5409', - 'AbstractPlatform::supportsForeignKeyConstraints() is deprecated.', - ); - - return true; - } - - /** - * Whether the platform supports database schemas. - * - * @return bool - */ - public function supportsSchemas() - { - return false; - } - - /** - * Whether this platform can emulate schemas. - * - * @deprecated - * - * Platforms that either support or emulate schemas don't automatically - * filter a schema for the namespaced elements in {@see AbstractManager::introspectSchema()}. - * - * @return bool - */ - public function canEmulateSchemas() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4805', - 'AbstractPlatform::canEmulateSchemas() is deprecated.', - ); - - return false; - } - - /** - * Returns the default schema name. - * - * @deprecated - * - * @return string - * - * @throws Exception If not supported on this platform. - */ - public function getDefaultSchemaName() - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Whether this platform supports create database. - * - * Some databases don't allow to create and drop databases at all or only with certain tools. - * - * @deprecated - * - * @return bool - */ - public function supportsCreateDropDatabase() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5513', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } - - /** - * Whether the platform supports getting the affected rows of a recent update/delete type query. - * - * @deprecated - * - * @return bool - */ - public function supportsGettingAffectedRows() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::supportsGettingAffectedRows() is deprecated.', - ); - - return true; - } - - /** - * Whether this platform support to add inline column comments as postfix. - * - * @return bool - */ - public function supportsInlineColumnComments() - { - return false; - } - - /** - * Whether this platform support the proprietary syntax "COMMENT ON asset". - * - * @return bool - */ - public function supportsCommentOnStatement() - { - return false; - } - - /** - * Does this platform have native guid type. - * - * @deprecated - * - * @return bool - */ - public function hasNativeGuidType() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return false; - } - - /** - * Does this platform have native JSON type. - * - * @deprecated - * - * @return bool - */ - public function hasNativeJsonType() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return false; - } - - /** - * Whether this platform supports views. - * - * @deprecated All platforms must implement support for views. - * - * @return bool - */ - public function supportsViews() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::supportsViews() is deprecated. All platforms must implement support for views.', - ); - - return true; - } - - /** - * Does this platform support column collation? - * - * @return bool - */ - public function supportsColumnCollation() - { - return false; - } - - /** - * Gets the format string, as accepted by the date() function, that describes - * the format of a stored datetime value of this platform. - * - * @return string The format string. - */ - public function getDateTimeFormatString() - { - return 'Y-m-d H:i:s'; - } - - /** - * Gets the format string, as accepted by the date() function, that describes - * the format of a stored datetime with timezone value of this platform. - * - * @return string The format string. - */ - public function getDateTimeTzFormatString() - { - return 'Y-m-d H:i:s'; - } - - /** - * Gets the format string, as accepted by the date() function, that describes - * the format of a stored date value of this platform. - * - * @return string The format string. - */ - public function getDateFormatString() - { - return 'Y-m-d'; - } - - /** - * Gets the format string, as accepted by the date() function, that describes - * the format of a stored time value of this platform. - * - * @return string The format string. - */ - public function getTimeFormatString() - { - return 'H:i:s'; - } - - /** - * Adds an driver-specific LIMIT clause to the query. - * - * @param string $query - * @param int|null $limit - * @param int $offset - * - * @throws Exception - */ - final public function modifyLimitQuery($query, $limit, $offset = 0): string - { - if ($offset < 0) { - throw new Exception(sprintf( - 'Offset must be a positive integer or zero, %d given', - $offset, - )); - } - - if ($offset > 0 && ! $this->supportsLimitOffset()) { - throw new Exception(sprintf( - 'Platform %s does not support offset values in limit queries.', - $this->getName(), - )); - } - - if ($limit !== null) { - $limit = (int) $limit; - } - - return $this->doModifyLimitQuery($query, $limit, (int) $offset); - } - - /** - * Adds an platform-specific LIMIT clause to the query. - * - * @param string $query - * @param int|null $limit - * @param int $offset - * - * @return string - */ - protected function doModifyLimitQuery($query, $limit, $offset) - { - if ($limit !== null) { - $query .= sprintf(' LIMIT %d', $limit); - } - - if ($offset > 0) { - $query .= sprintf(' OFFSET %d', $offset); - } - - return $query; - } - - /** - * Whether the database platform support offsets in modify limit clauses. - * - * @deprecated All platforms must implement support for offsets in modify limit clauses. - * - * @return bool - */ - public function supportsLimitOffset() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4724', - 'AbstractPlatform::supportsViews() is deprecated.' - . ' All platforms must implement support for offsets in modify limit clauses.', - ); - - return true; - } - - /** - * Maximum length of any given database identifier, like tables or column names. - * - * @return int - */ - public function getMaxIdentifierLength() - { - return 63; - } - - /** - * Returns the insert SQL for an empty insert statement. - * - * @param string $quotedTableName - * @param string $quotedIdentifierColumnName - * - * @return string - */ - public function getEmptyIdentityInsertSQL($quotedTableName, $quotedIdentifierColumnName) - { - return 'INSERT INTO ' . $quotedTableName . ' (' . $quotedIdentifierColumnName . ') VALUES (null)'; - } - - /** - * Generates a Truncate Table SQL statement for a given table. - * - * Cascade is not supported on many platforms but would optionally cascade the truncate by - * following the foreign keys. - * - * @param string $tableName - * @param bool $cascade - * - * @return string - */ - public function getTruncateTableSQL($tableName, $cascade = false) - { - $tableIdentifier = new Identifier($tableName); - - return 'TRUNCATE ' . $tableIdentifier->getQuotedName($this); - } - - /** - * This is for test reasons, many vendors have special requirements for dummy statements. - * - * @return string - */ - public function getDummySelectSQL() - { - $expression = func_num_args() > 0 ? func_get_arg(0) : '1'; - - return sprintf('SELECT %s', $expression); - } - - /** - * Returns the SQL to create a new savepoint. - * - * @param string $savepoint - * - * @return string - */ - public function createSavePoint($savepoint) - { - return 'SAVEPOINT ' . $savepoint; - } - - /** - * Returns the SQL to release a savepoint. - * - * @param string $savepoint - * - * @return string - */ - public function releaseSavePoint($savepoint) - { - return 'RELEASE SAVEPOINT ' . $savepoint; - } - - /** - * Returns the SQL to rollback a savepoint. - * - * @param string $savepoint - * - * @return string - */ - public function rollbackSavePoint($savepoint) - { - return 'ROLLBACK TO SAVEPOINT ' . $savepoint; - } - - /** - * Returns the keyword list instance of this platform. - * - * @throws Exception If no keyword list is specified. - */ - final public function getReservedKeywordsList(): KeywordList - { - // Store the instance so it doesn't need to be generated on every request. - return $this->_keywords ??= $this->createReservedKeywordsList(); - } - - /** - * Creates an instance of the reserved keyword list of this platform. - * - * This method will become @abstract in DBAL 4.0.0. - * - * @throws Exception - */ - protected function createReservedKeywordsList(): KeywordList - { - $class = $this->getReservedKeywordsClass(); - $keywords = new $class(); - if (! $keywords instanceof KeywordList) { - throw Exception::notSupported(__METHOD__); - } - - return $keywords; - } - - /** - * Returns the class name of the reserved keywords list. - * - * @deprecated Implement {@see createReservedKeywordsList()} instead. - * - * @return string - * @psalm-return class-string - * - * @throws Exception If not supported on this platform. - */ - protected function getReservedKeywordsClass() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4510', - 'AbstractPlatform::getReservedKeywordsClass() is deprecated,' - . ' use AbstractPlatform::createReservedKeywordsList() instead.', - ); - - throw Exception::notSupported(__METHOD__); - } - - /** - * Quotes a literal string. - * This method is NOT meant to fix SQL injections! - * It is only meant to escape this platform's string literal - * quote character inside the given literal string. - * - * @param string $str The literal string to be quoted. - * - * @return string The quoted literal string. - */ - public function quoteStringLiteral($str) - { - $c = $this->getStringLiteralQuoteCharacter(); - - return $c . str_replace($c, $c . $c, $str) . $c; - } - - /** - * Gets the character used for string literal quoting. - * - * @deprecated Use {@see quoteStringLiteral()} to quote string literals instead. - * - * @return string - */ - public function getStringLiteralQuoteCharacter() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5388', - 'AbstractPlatform::getStringLiteralQuoteCharacter() is deprecated.' - . ' Use quoteStringLiteral() instead.', - ); - - return "'"; - } - - /** - * Escapes metacharacters in a string intended to be used with a LIKE - * operator. - * - * @param string $inputString a literal, unquoted string - * @param string $escapeChar should be reused by the caller in the LIKE - * expression. - */ - final public function escapeStringForLike(string $inputString, string $escapeChar): string - { - return preg_replace( - '~([' . preg_quote($this->getLikeWildcardCharacters() . $escapeChar, '~') . '])~u', - addcslashes($escapeChar, '\\') . '$1', - $inputString, - ); - } - - /** - * @return array An associative array with the name of the properties - * of the column being declared as array indexes. - */ - private function columnToArray(Column $column): array - { - $name = $column->getQuotedName($this); - - return array_merge($column->toArray(), [ - 'name' => $name, - 'version' => $column->hasPlatformOption('version') ? $column->getPlatformOption('version') : false, - 'comment' => $this->getColumnComment($column), - ]); - } - - /** @internal */ - public function createSQLParser(): Parser - { - return new Parser(false); - } - - protected function getLikeWildcardCharacters(): string - { - return '%_'; - } - - /** - * Compares the definitions of the given columns in the context of this platform. - * - * @throws Exception - */ - public function columnsEqual(Column $column1, Column $column2): bool - { - $column1Array = $this->columnToArray($column1); - $column2Array = $this->columnToArray($column2); - - // ignore explicit columnDefinition since it's not set on the Column generated by the SchemaManager - unset($column1Array['columnDefinition']); - unset($column2Array['columnDefinition']); - - if ( - $this->getColumnDeclarationSQL('', $column1Array) - !== $this->getColumnDeclarationSQL('', $column2Array) - ) { - return false; - } - - if (! $this->columnDeclarationsMatch($column1, $column2)) { - return false; - } - - // If the platform supports inline comments, all comparison is already done above - if ($this->supportsInlineColumnComments()) { - return true; - } - - if ($column1->getComment() !== $column2->getComment()) { - return false; - } - - return $column1->getType() === $column2->getType(); - } - - /** - * Whether the database data type matches that expected for the doctrine type for the given colunms. - */ - private function columnDeclarationsMatch(Column $column1, Column $column2): bool - { - return ! ( - $column1->hasPlatformOption('declarationMismatch') || - $column2->hasPlatformOption('declarationMismatch') - ); - } - - /** - * Creates the schema manager that can be used to inspect and change the underlying - * database schema according to the dialect of the platform. - * - * @throws Exception - * - * @abstract - */ - public function createSchemaManager(Connection $connection): AbstractSchemaManager - { - throw Exception::notSupported(__METHOD__); - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/DB2111Platform.php b/vendor/doctrine/dbal/src/Platforms/DB2111Platform.php deleted file mode 100644 index 40ab42f6..00000000 --- a/vendor/doctrine/dbal/src/Platforms/DB2111Platform.php +++ /dev/null @@ -1,40 +0,0 @@ - 0) { - $query .= sprintf(' OFFSET %u ROWS', $offset); - } - - if ($limit !== null) { - if ($limit < 0) { - throw new Exception(sprintf('Limit must be a positive integer or zero, %d given', $limit)); - } - - $query .= sprintf(' FETCH %s %u ROWS ONLY', $offset === 0 ? 'FIRST' : 'NEXT', $limit); - } - - return $query; - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/DB2Platform.php b/vendor/doctrine/dbal/src/Platforms/DB2Platform.php deleted file mode 100644 index 64fabc32..00000000 --- a/vendor/doctrine/dbal/src/Platforms/DB2Platform.php +++ /dev/null @@ -1,1053 +0,0 @@ -getCharMaxLength(); - } - - return parent::getVarcharTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getBlobTypeDeclarationSQL(array $column) - { - // todo blob(n) with $column['length']; - return 'BLOB(1M)'; - } - - /** - * {@inheritDoc} - */ - protected function initializeDoctrineTypeMappings() - { - $this->doctrineTypeMapping = [ - 'bigint' => Types::BIGINT, - 'binary' => Types::BINARY, - 'blob' => Types::BLOB, - 'character' => Types::STRING, - 'clob' => Types::TEXT, - 'date' => Types::DATE_MUTABLE, - 'decimal' => Types::DECIMAL, - 'double' => Types::FLOAT, - 'integer' => Types::INTEGER, - 'real' => Types::FLOAT, - 'smallint' => Types::SMALLINT, - 'time' => Types::TIME_MUTABLE, - 'timestamp' => Types::DATETIME_MUTABLE, - 'varbinary' => Types::BINARY, - 'varchar' => Types::STRING, - ]; - } - - /** - * {@inheritDoc} - */ - public function isCommentedDoctrineType(Type $doctrineType) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5058', - '%s() is deprecated and will be removed in Doctrine DBAL 4.0. Use Type::requiresSQLCommentHint() instead.', - __METHOD__, - ); - - if ($doctrineType->getName() === Types::BOOLEAN) { - // We require a commented boolean type in order to distinguish between boolean and smallint - // as both (have to) map to the same native type. - return true; - } - - return parent::isCommentedDoctrineType($doctrineType); - } - - /** - * {@inheritDoc} - */ - protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - if ($length <= 0 || (func_num_args() > 2 && func_get_arg(2))) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default string column length on IBM DB2 is deprecated' - . ', specify the length explicitly.', - ); - } - - return $fixed ? ($length > 0 ? 'CHAR(' . $length . ')' : 'CHAR(254)') - : ($length > 0 ? 'VARCHAR(' . $length . ')' : 'VARCHAR(255)'); - } - - /** - * {@inheritDoc} - */ - protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - if ($length <= 0 || (func_num_args() > 2 && func_get_arg(2))) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default binary column length on IBM DB2 is deprecated' - . ', specify the length explicitly.', - ); - } - - return $this->getVarcharTypeDeclarationSQLSnippet($length, $fixed) . ' FOR BIT DATA'; - } - - /** - * {@inheritDoc} - */ - public function getClobTypeDeclarationSQL(array $column) - { - // todo clob(n) with $column['length']; - return 'CLOB(1M)'; - } - - /** - * {@inheritDoc} - */ - public function getName() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4749', - '%s() is deprecated. Identify platforms by their class.', - __METHOD__, - ); - - return 'db2'; - } - - /** - * {@inheritDoc} - */ - public function getBooleanTypeDeclarationSQL(array $column) - { - return 'SMALLINT'; - } - - /** - * {@inheritDoc} - */ - public function getIntegerTypeDeclarationSQL(array $column) - { - return 'INTEGER' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getBigIntTypeDeclarationSQL(array $column) - { - return 'BIGINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getSmallIntTypeDeclarationSQL(array $column) - { - return 'SMALLINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - protected function _getCommonIntegerTypeDeclarationSQL(array $column) - { - $autoinc = ''; - if (! empty($column['autoincrement'])) { - $autoinc = ' GENERATED BY DEFAULT AS IDENTITY'; - } - - return $autoinc; - } - - /** - * {@inheritDoc} - */ - public function getBitAndComparisonExpression($value1, $value2) - { - return 'BITAND(' . $value1 . ', ' . $value2 . ')'; - } - - /** - * {@inheritDoc} - */ - public function getBitOrComparisonExpression($value1, $value2) - { - return 'BITOR(' . $value1 . ', ' . $value2 . ')'; - } - - /** - * {@inheritDoc} - */ - protected function getDateArithmeticIntervalExpression($date, $operator, $interval, $unit) - { - switch ($unit) { - case DateIntervalUnit::WEEK: - $interval *= 7; - $unit = DateIntervalUnit::DAY; - break; - - case DateIntervalUnit::QUARTER: - $interval *= 3; - $unit = DateIntervalUnit::MONTH; - break; - } - - return $date . ' ' . $operator . ' ' . $interval . ' ' . $unit; - } - - /** - * {@inheritDoc} - */ - public function getDateDiffExpression($date1, $date2) - { - return 'DAYS(' . $date1 . ') - DAYS(' . $date2 . ')'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTypeDeclarationSQL(array $column) - { - if (isset($column['version']) && $column['version'] === true) { - return 'TIMESTAMP(0) WITH DEFAULT'; - } - - return 'TIMESTAMP(0)'; - } - - /** - * {@inheritDoc} - */ - public function getDateTypeDeclarationSQL(array $column) - { - return 'DATE'; - } - - /** - * {@inheritDoc} - */ - public function getTimeTypeDeclarationSQL(array $column) - { - return 'TIME'; - } - - /** - * {@inheritDoc} - */ - public function getTruncateTableSQL($tableName, $cascade = false) - { - $tableIdentifier = new Identifier($tableName); - - return 'TRUNCATE ' . $tableIdentifier->getQuotedName($this) . ' IMMEDIATE'; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * This code fragment is originally from the Zend_Db_Adapter_Db2 class, but has been edited. - * - * @param string $table - * @param string $database - * - * @return string - */ - public function getListTableColumnsSQL($table, $database = null) - { - $table = $this->quoteStringLiteral($table); - - // We do the funky subquery and join syscat.columns.default this crazy way because - // as of db2 v10, the column is CLOB(64k) and the distinct operator won't allow a CLOB, - // it wants shorter stuff like a varchar. - return " - SELECT - cols.default, - subq.* - FROM ( - SELECT DISTINCT - c.tabschema, - c.tabname, - c.colname, - c.colno, - c.typename, - c.codepage, - c.nulls, - c.length, - c.scale, - c.identity, - tc.type AS tabconsttype, - c.remarks AS comment, - k.colseq, - CASE - WHEN c.generated = '" . self::SYSCAT_COLUMNS_GENERATED_DEFAULT . "' THEN 1 - ELSE 0 - END AS autoincrement - FROM syscat.columns c - LEFT JOIN (syscat.keycoluse k JOIN syscat.tabconst tc - ON (k.tabschema = tc.tabschema - AND k.tabname = tc.tabname - AND tc.type = '" . self::SYSCAT_TABCONST_TYPE_PRIMARY_KEY . "')) - ON (c.tabschema = k.tabschema - AND c.tabname = k.tabname - AND c.colname = k.colname) - WHERE UPPER(c.tabname) = UPPER(" . $table . ') - ORDER BY c.colno - ) subq - JOIN syscat.columns cols - ON subq.tabschema = cols.tabschema - AND subq.tabname = cols.tabname - AND subq.colno = cols.colno - ORDER BY subq.colno - '; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTablesSQL() - { - return "SELECT NAME FROM SYSIBM.SYSTABLES WHERE TYPE = '" . self::SYSIBM_SYSTABLES_TYPE_TABLE . "'" - . ' AND CREATOR = CURRENT_USER'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListViewsSQL($database) - { - return 'SELECT NAME, TEXT FROM SYSIBM.SYSVIEWS'; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableIndexesSQL($table, $database = null) - { - $table = $this->quoteStringLiteral($table); - - return "SELECT idx.INDNAME AS key_name, - idxcol.COLNAME AS column_name, - CASE - WHEN idx.UNIQUERULE = '" . self::SYSCAT_INDEXES_UNIQUERULE_IMPLEMENTS_PRIMARY_KEY . "' - THEN 1 - ELSE 0 - END AS primary, - CASE - WHEN idx.UNIQUERULE = '" . self::SYSCAT_INDEXES_UNIQUERULE_PERMITS_DUPLICATES . "' - THEN 1 - ELSE 0 - END AS non_unique - FROM SYSCAT.INDEXES AS idx - JOIN SYSCAT.INDEXCOLUSE AS idxcol - ON idx.INDSCHEMA = idxcol.INDSCHEMA AND idx.INDNAME = idxcol.INDNAME - WHERE idx.TABNAME = UPPER(" . $table . ') - ORDER BY idxcol.COLSEQ ASC'; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableForeignKeysSQL($table) - { - $table = $this->quoteStringLiteral($table); - - return "SELECT fkcol.COLNAME AS local_column, - fk.REFTABNAME AS foreign_table, - pkcol.COLNAME AS foreign_column, - fk.CONSTNAME AS index_name, - CASE - WHEN fk.UPDATERULE = '" . self::SYSCAT_REFERENCES_UPDATERULE_RESTRICT . "' THEN 'RESTRICT' - ELSE NULL - END AS on_update, - CASE - WHEN fk.DELETERULE = '" . self::SYSCAT_REFERENCES_DELETERULE_CASCADE . "' THEN 'CASCADE' - WHEN fk.DELETERULE = '" . self::SYSCAT_REFERENCES_DELETERULE_SET_NULL . "' THEN 'SET NULL' - WHEN fk.DELETERULE = '" . self::SYSCAT_REFERENCES_DELETERULE_RESTRICT . "' THEN 'RESTRICT' - ELSE NULL - END AS on_delete - FROM SYSCAT.REFERENCES AS fk - JOIN SYSCAT.KEYCOLUSE AS fkcol - ON fk.CONSTNAME = fkcol.CONSTNAME - AND fk.TABSCHEMA = fkcol.TABSCHEMA - AND fk.TABNAME = fkcol.TABNAME - JOIN SYSCAT.KEYCOLUSE AS pkcol - ON fk.REFKEYNAME = pkcol.CONSTNAME - AND fk.REFTABSCHEMA = pkcol.TABSCHEMA - AND fk.REFTABNAME = pkcol.TABNAME - WHERE fk.TABNAME = UPPER(" . $table . ') - ORDER BY fkcol.COLSEQ ASC'; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function supportsCreateDropDatabase() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5513', - '%s() is deprecated.', - __METHOD__, - ); - - return false; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsCommentOnStatement() - { - return true; - } - - /** - * {@inheritDoc} - */ - public function getCurrentDateSQL() - { - return 'CURRENT DATE'; - } - - /** - * {@inheritDoc} - */ - public function getCurrentTimeSQL() - { - return 'CURRENT TIME'; - } - - /** - * {@inheritDoc} - */ - public function getCurrentTimestampSQL() - { - return 'CURRENT TIMESTAMP'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getIndexDeclarationSQL($name, Index $index) - { - // Index declaration in statements like CREATE TABLE is not supported. - throw Exception::notSupported(__METHOD__); - } - - /** - * {@inheritDoc} - */ - protected function _getCreateTableSQL($name, array $columns, array $options = []) - { - $indexes = []; - if (isset($options['indexes'])) { - $indexes = $options['indexes']; - } - - $options['indexes'] = []; - - $sqls = parent::_getCreateTableSQL($name, $columns, $options); - - foreach ($indexes as $definition) { - $sqls[] = $this->getCreateIndexSQL($definition, $name); - } - - return $sqls; - } - - /** - * {@inheritDoc} - */ - public function getAlterTableSQL(TableDiff $diff) - { - $sql = []; - $columnSql = []; - $commentsSQL = []; - - $tableNameSQL = ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this); - - $queryParts = []; - foreach ($diff->getAddedColumns() as $column) { - if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) { - continue; - } - - $columnDef = $column->toArray(); - $queryPart = 'ADD COLUMN ' . $this->getColumnDeclarationSQL($column->getQuotedName($this), $columnDef); - - // Adding non-nullable columns to a table requires a default value to be specified. - if ( - ! empty($columnDef['notnull']) && - ! isset($columnDef['default']) && - empty($columnDef['autoincrement']) - ) { - $queryPart .= ' WITH DEFAULT'; - } - - $queryParts[] = $queryPart; - - $comment = $this->getColumnComment($column); - - if ($comment === null || $comment === '') { - continue; - } - - $commentsSQL[] = $this->getCommentOnColumnSQL( - $tableNameSQL, - $column->getQuotedName($this), - $comment, - ); - } - - foreach ($diff->getDroppedColumns() as $column) { - if ($this->onSchemaAlterTableRemoveColumn($column, $diff, $columnSql)) { - continue; - } - - $queryParts[] = 'DROP COLUMN ' . $column->getQuotedName($this); - } - - foreach ($diff->getModifiedColumns() as $columnDiff) { - if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) { - continue; - } - - if ($columnDiff->hasCommentChanged()) { - $commentsSQL[] = $this->getCommentOnColumnSQL( - $tableNameSQL, - $columnDiff->getNewColumn()->getQuotedName($this), - $this->getColumnComment($columnDiff->getNewColumn()), - ); - } - - $this->gatherAlterColumnSQL( - $tableNameSQL, - $columnDiff, - $sql, - $queryParts, - ); - } - - foreach ($diff->getRenamedColumns() as $oldColumnName => $column) { - if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $column, $diff, $columnSql)) { - continue; - } - - $oldColumnName = new Identifier($oldColumnName); - - $queryParts[] = 'RENAME COLUMN ' . $oldColumnName->getQuotedName($this) . - ' TO ' . $column->getQuotedName($this); - } - - $tableSql = []; - - if (! $this->onSchemaAlterTable($diff, $tableSql)) { - if (count($queryParts) > 0) { - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ' . implode(' ', $queryParts); - } - - // Some table alteration operations require a table reorganization. - if (count($diff->getDroppedColumns()) > 0 || count($diff->getModifiedColumns()) > 0) { - $sql[] = "CALL SYSPROC.ADMIN_CMD ('REORG TABLE " . $tableNameSQL . "')"; - } - - $sql = array_merge($sql, $commentsSQL); - - $newName = $diff->getNewName(); - - if ($newName !== false) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5663', - 'Generation of "rename table" SQL using %s() is deprecated. Use getRenameTableSQL() instead.', - __METHOD__, - ); - - $sql[] = sprintf( - 'RENAME TABLE %s TO %s', - $tableNameSQL, - $newName->getQuotedName($this), - ); - } - - $sql = array_merge( - $this->getPreAlterTableIndexForeignKeySQL($diff), - $sql, - $this->getPostAlterTableIndexForeignKeySQL($diff), - ); - } - - return array_merge($sql, $tableSql, $columnSql); - } - - /** - * {@inheritDoc} - */ - public function getRenameTableSQL(string $oldName, string $newName): array - { - return [ - sprintf('RENAME TABLE %s TO %s', $oldName, $newName), - ]; - } - - /** - * Gathers the table alteration SQL for a given column diff. - * - * @param string $table The table to gather the SQL for. - * @param ColumnDiff $columnDiff The column diff to evaluate. - * @param string[] $sql The sequence of table alteration statements to fill. - * @param mixed[] $queryParts The sequence of column alteration clauses to fill. - */ - private function gatherAlterColumnSQL( - string $table, - ColumnDiff $columnDiff, - array &$sql, - array &$queryParts - ): void { - $alterColumnClauses = $this->getAlterColumnClausesSQL($columnDiff); - - if (empty($alterColumnClauses)) { - return; - } - - // If we have a single column alteration, we can append the clause to the main query. - if (count($alterColumnClauses) === 1) { - $queryParts[] = current($alterColumnClauses); - - return; - } - - // We have multiple alterations for the same column, - // so we need to trigger a complete ALTER TABLE statement - // for each ALTER COLUMN clause. - foreach ($alterColumnClauses as $alterColumnClause) { - $sql[] = 'ALTER TABLE ' . $table . ' ' . $alterColumnClause; - } - } - - /** - * Returns the ALTER COLUMN SQL clauses for altering a column described by the given column diff. - * - * @return string[] - */ - private function getAlterColumnClausesSQL(ColumnDiff $columnDiff): array - { - $newColumn = $columnDiff->getNewColumn()->toArray(); - - $alterClause = 'ALTER COLUMN ' . $columnDiff->getNewColumn()->getQuotedName($this); - - if ($newColumn['columnDefinition'] !== null) { - return [$alterClause . ' ' . $newColumn['columnDefinition']]; - } - - $clauses = []; - - if ( - $columnDiff->hasTypeChanged() || - $columnDiff->hasLengthChanged() || - $columnDiff->hasPrecisionChanged() || - $columnDiff->hasScaleChanged() || - $columnDiff->hasFixedChanged() - ) { - $clauses[] = $alterClause . ' SET DATA TYPE ' . $newColumn['type']->getSQLDeclaration($newColumn, $this); - } - - if ($columnDiff->hasNotNullChanged()) { - $clauses[] = $newColumn['notnull'] ? $alterClause . ' SET NOT NULL' : $alterClause . ' DROP NOT NULL'; - } - - if ($columnDiff->hasDefaultChanged()) { - if (isset($newColumn['default'])) { - $defaultClause = $this->getDefaultValueDeclarationSQL($newColumn); - - if ($defaultClause !== '') { - $clauses[] = $alterClause . ' SET' . $defaultClause; - } - } else { - $clauses[] = $alterClause . ' DROP DEFAULT'; - } - } - - return $clauses; - } - - /** - * {@inheritDoc} - */ - protected function getPreAlterTableIndexForeignKeySQL(TableDiff $diff) - { - $sql = []; - - $tableNameSQL = ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this); - - foreach ($diff->getDroppedIndexes() as $droppedIndex) { - foreach ($diff->getAddedIndexes() as $addedIndex) { - if ($droppedIndex->getColumns() !== $addedIndex->getColumns()) { - continue; - } - - if ($droppedIndex->isPrimary()) { - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' DROP PRIMARY KEY'; - } elseif ($droppedIndex->isUnique()) { - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' DROP UNIQUE ' . $droppedIndex->getQuotedName($this); - } else { - $sql[] = $this->getDropIndexSQL($droppedIndex, $tableNameSQL); - } - - $sql[] = $this->getCreateIndexSQL($addedIndex, $tableNameSQL); - - $diff->unsetAddedIndex($addedIndex); - $diff->unsetDroppedIndex($droppedIndex); - - break; - } - } - - return array_merge($sql, parent::getPreAlterTableIndexForeignKeySQL($diff)); - } - - /** - * {@inheritDoc} - */ - protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName) - { - if (strpos($tableName, '.') !== false) { - [$schema] = explode('.', $tableName); - $oldIndexName = $schema . '.' . $oldIndexName; - } - - return ['RENAME INDEX ' . $oldIndexName . ' TO ' . $index->getQuotedName($this)]; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getDefaultValueDeclarationSQL($column) - { - if (! empty($column['autoincrement'])) { - return ''; - } - - if (! empty($column['version'])) { - if ((string) $column['type'] !== 'DateTime') { - $column['default'] = '1'; - } - } - - return parent::getDefaultValueDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getEmptyIdentityInsertSQL($quotedTableName, $quotedIdentifierColumnName) - { - return 'INSERT INTO ' . $quotedTableName . ' (' . $quotedIdentifierColumnName . ') VALUES (DEFAULT)'; - } - - /** - * {@inheritDoc} - */ - public function getCreateTemporaryTableSnippetSQL() - { - return 'DECLARE GLOBAL TEMPORARY TABLE'; - } - - /** - * {@inheritDoc} - */ - public function getTemporaryTableName($tableName) - { - return 'SESSION.' . $tableName; - } - - /** - * {@inheritDoc} - */ - protected function doModifyLimitQuery($query, $limit, $offset) - { - $where = []; - - if ($offset > 0) { - $where[] = sprintf('db22.DC_ROWNUM >= %d', $offset + 1); - } - - if ($limit !== null) { - $where[] = sprintf('db22.DC_ROWNUM <= %d', $offset + $limit); - } - - if (empty($where)) { - return $query; - } - - // Todo OVER() needs ORDER BY data! - return sprintf( - 'SELECT db22.* FROM (SELECT db21.*, ROW_NUMBER() OVER() AS DC_ROWNUM FROM (%s) db21) db22 WHERE %s', - $query, - implode(' AND ', $where), - ); - } - - /** - * {@inheritDoc} - */ - public function getLocateExpression($str, $substr, $startPos = false) - { - if ($startPos === false) { - return 'LOCATE(' . $substr . ', ' . $str . ')'; - } - - return 'LOCATE(' . $substr . ', ' . $str . ', ' . $startPos . ')'; - } - - /** - * {@inheritDoc} - */ - public function getSubstringExpression($string, $start, $length = null) - { - if ($length === null) { - return 'SUBSTR(' . $string . ', ' . $start . ')'; - } - - return 'SUBSTR(' . $string . ', ' . $start . ', ' . $length . ')'; - } - - /** - * {@inheritDoc} - */ - public function getLengthExpression($column) - { - return 'LENGTH(' . $column . ', CODEUNITS32)'; - } - - public function getCurrentDatabaseExpression(): string - { - return 'CURRENT_USER'; - } - - /** - * {@inheritDoc} - */ - public function supportsIdentityColumns() - { - return true; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function prefersIdentityColumns() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/1519', - '%s() is deprecated.', - __METHOD__, - ); - - return true; - } - - public function createSelectSQLBuilder(): SelectSQLBuilder - { - return new DefaultSelectSQLBuilder($this, 'WITH RR USE AND KEEP UPDATE LOCKS', null); - } - - /** - * {@inheritDoc} - * - * @deprecated This API is not portable. - */ - public function getForUpdateSQL() - { - return ' WITH RR USE AND KEEP UPDATE LOCKS'; - } - - /** - * {@inheritDoc} - */ - public function getDummySelectSQL() - { - $expression = func_num_args() > 0 ? func_get_arg(0) : '1'; - - return sprintf('SELECT %s FROM sysibm.sysdummy1', $expression); - } - - /** - * {@inheritDoc} - * - * DB2 supports savepoints, but they work semantically different than on other vendor platforms. - * - * TODO: We have to investigate how to get DB2 up and running with savepoints. - */ - public function supportsSavepoints() - { - return false; - } - - /** - * {@inheritDoc} - * - * @deprecated Implement {@see createReservedKeywordsList()} instead. - */ - protected function getReservedKeywordsClass() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4510', - '%s() is deprecated,' - . ' use %s::createReservedKeywordsList() instead.', - __METHOD__, - static::class, - ); - - return Keywords\DB2Keywords::class; - } - - /** @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. */ - public function getListTableCommentsSQL(string $table): string - { - return sprintf( - <<<'SQL' -SELECT REMARKS - FROM SYSIBM.SYSTABLES - WHERE NAME = UPPER( %s ) -SQL - , - $this->quoteStringLiteral($table), - ); - } - - public function createSchemaManager(Connection $connection): DB2SchemaManager - { - return new DB2SchemaManager($connection, $this); - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/DateIntervalUnit.php b/vendor/doctrine/dbal/src/Platforms/DateIntervalUnit.php deleted file mode 100644 index a95c4e28..00000000 --- a/vendor/doctrine/dbal/src/Platforms/DateIntervalUnit.php +++ /dev/null @@ -1,29 +0,0 @@ -keywords === null) { - $this->initializeKeywords(); - } - - return isset($this->keywords[strtoupper($word)]); - } - - /** @return void */ - protected function initializeKeywords() - { - $this->keywords = array_flip(array_map('strtoupper', $this->getKeywords())); - } - - /** - * Returns the list of keywords. - * - * @return string[] - */ - abstract protected function getKeywords(); - - /** - * Returns the name of this keyword list. - * - * @deprecated - * - * @return string - */ - abstract public function getName(); -} diff --git a/vendor/doctrine/dbal/src/Platforms/Keywords/MariaDBKeywords.php b/vendor/doctrine/dbal/src/Platforms/Keywords/MariaDBKeywords.php deleted file mode 100644 index 5417c6ca..00000000 --- a/vendor/doctrine/dbal/src/Platforms/Keywords/MariaDBKeywords.php +++ /dev/null @@ -1,276 +0,0 @@ -keywordLists = $keywordLists; - } - - /** @return string[] */ - public function getViolations() - { - return $this->violations; - } - - /** - * @param string $word - * - * @return string[] - */ - private function isReservedWord($word): array - { - if ($word[0] === '`') { - $word = str_replace('`', '', $word); - } - - $keywordLists = []; - foreach ($this->keywordLists as $keywordList) { - if (! $keywordList->isKeyword($word)) { - continue; - } - - $keywordLists[] = $keywordList->getName(); - } - - return $keywordLists; - } - - /** - * @param string $asset - * @param string[] $violatedPlatforms - */ - private function addViolation($asset, $violatedPlatforms): void - { - if (count($violatedPlatforms) === 0) { - return; - } - - $this->violations[] = $asset . ' keyword violations: ' . implode(', ', $violatedPlatforms); - } - - /** - * {@inheritDoc} - */ - public function acceptColumn(Table $table, Column $column) - { - $this->addViolation( - 'Table ' . $table->getName() . ' column ' . $column->getName(), - $this->isReservedWord($column->getName()), - ); - } - - /** - * {@inheritDoc} - */ - public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint) - { - } - - /** - * {@inheritDoc} - */ - public function acceptIndex(Table $table, Index $index) - { - } - - /** - * {@inheritDoc} - */ - public function acceptSchema(Schema $schema) - { - } - - /** - * {@inheritDoc} - */ - public function acceptSequence(Sequence $sequence) - { - } - - /** - * {@inheritDoc} - */ - public function acceptTable(Table $table) - { - $this->addViolation( - 'Table ' . $table->getName(), - $this->isReservedWord($table->getName()), - ); - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/Keywords/SQLServer2012Keywords.php b/vendor/doctrine/dbal/src/Platforms/Keywords/SQLServer2012Keywords.php deleted file mode 100644 index ebc45c40..00000000 --- a/vendor/doctrine/dbal/src/Platforms/Keywords/SQLServer2012Keywords.php +++ /dev/null @@ -1,12 +0,0 @@ -doctrineTypeMapping['json'] = Types::JSON; - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/MariaDb1027Platform.php b/vendor/doctrine/dbal/src/Platforms/MariaDb1027Platform.php deleted file mode 100644 index 68f38133..00000000 --- a/vendor/doctrine/dbal/src/Platforms/MariaDb1027Platform.php +++ /dev/null @@ -1,15 +0,0 @@ -getColumnTypeSQLSnippets('c', $database); - - return sprintf( - <<getDatabaseNameSQL($database), - $this->quoteStringLiteral($table), - ); - } - - /** - * Generate SQL snippets to reverse the aliasing of JSON to LONGTEXT. - * - * MariaDb aliases columns specified as JSON to LONGTEXT and sets a CHECK constraint to ensure the column - * is valid json. This function generates the SQL snippets which reverse this aliasing i.e. report a column - * as JSON where it was originally specified as such instead of LONGTEXT. - * - * The CHECK constraints are stored in information_schema.CHECK_CONSTRAINTS so query that table. - */ - public function getColumnTypeSQLSnippet(string $tableAlias = 'c', ?string $databaseName = null): string - { - if ($this->getJsonTypeDeclarationSQL([]) !== 'JSON') { - return parent::getColumnTypeSQLSnippet($tableAlias, $databaseName); - } - - if ($databaseName === null) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6215', - 'Not passing a database name to methods "getColumnTypeSQLSnippet()", ' - . '"getColumnTypeSQLSnippets()", and "getListTableColumnsSQL()" of "%s" is deprecated.', - self::class, - ); - } - - $databaseName = $this->getDatabaseNameSQL($databaseName); - - // The check for `CONSTRAINT_SCHEMA = $databaseName` is mandatory here to prevent performance issues - return <<getJsonTypeDeclarationSQL([]) === 'JSON' && ($column['type'] ?? null) instanceof JsonType) { - unset($column['collation']); - unset($column['charset']); - } - - return parent::getColumnDeclarationSQL($name, $column); - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/MariaDb1052Platform.php b/vendor/doctrine/dbal/src/Platforms/MariaDb1052Platform.php deleted file mode 100644 index 4241187f..00000000 --- a/vendor/doctrine/dbal/src/Platforms/MariaDb1052Platform.php +++ /dev/null @@ -1,38 +0,0 @@ -getQuotedName($this)]; - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/MariaDb1060Platform.php b/vendor/doctrine/dbal/src/Platforms/MariaDb1060Platform.php deleted file mode 100644 index 82d11f21..00000000 --- a/vendor/doctrine/dbal/src/Platforms/MariaDb1060Platform.php +++ /dev/null @@ -1,16 +0,0 @@ - */ - private $cache = []; - - public function __construct(CollationMetadataProvider $collationMetadataProvider) - { - $this->collationMetadataProvider = $collationMetadataProvider; - } - - public function getCollationCharset(string $collation): ?string - { - if (array_key_exists($collation, $this->cache)) { - return $this->cache[$collation]; - } - - return $this->cache[$collation] = $this->collationMetadataProvider->getCollationCharset($collation); - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/MySQL/CollationMetadataProvider/ConnectionCollationMetadataProvider.php b/vendor/doctrine/dbal/src/Platforms/MySQL/CollationMetadataProvider/ConnectionCollationMetadataProvider.php deleted file mode 100644 index 8dc2421a..00000000 --- a/vendor/doctrine/dbal/src/Platforms/MySQL/CollationMetadataProvider/ConnectionCollationMetadataProvider.php +++ /dev/null @@ -1,41 +0,0 @@ -connection = $connection; - } - - /** @throws Exception */ - public function getCollationCharset(string $collation): ?string - { - $charset = $this->connection->fetchOne( - <<<'SQL' -SELECT CHARACTER_SET_NAME -FROM information_schema.COLLATIONS -WHERE COLLATION_NAME = ?; -SQL - , - [$collation], - ); - - if ($charset !== false) { - return $charset; - } - - return null; - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/MySQL/Comparator.php b/vendor/doctrine/dbal/src/Platforms/MySQL/Comparator.php deleted file mode 100644 index c27fef74..00000000 --- a/vendor/doctrine/dbal/src/Platforms/MySQL/Comparator.php +++ /dev/null @@ -1,94 +0,0 @@ -collationMetadataProvider = $collationMetadataProvider; - } - - public function compareTables(Table $fromTable, Table $toTable): TableDiff - { - return parent::compareTables( - $this->normalizeColumns($fromTable), - $this->normalizeColumns($toTable), - ); - } - - /** - * {@inheritDoc} - */ - public function diffTable(Table $fromTable, Table $toTable) - { - return parent::diffTable( - $this->normalizeColumns($fromTable), - $this->normalizeColumns($toTable), - ); - } - - private function normalizeColumns(Table $table): Table - { - $tableOptions = array_intersect_key($table->getOptions(), [ - 'charset' => null, - 'collation' => null, - ]); - - $table = clone $table; - - foreach ($table->getColumns() as $column) { - $originalOptions = $column->getPlatformOptions(); - $normalizedOptions = $this->normalizeOptions($originalOptions); - - $overrideOptions = array_diff_assoc($normalizedOptions, $tableOptions); - - if ($overrideOptions === $originalOptions) { - continue; - } - - $column->setPlatformOptions($overrideOptions); - } - - return $table; - } - - /** - * @param array $options - * - * @return array - */ - private function normalizeOptions(array $options): array - { - if (isset($options['collation']) && ! isset($options['charset'])) { - $charset = $this->collationMetadataProvider->getCollationCharset($options['collation']); - - if ($charset !== null) { - $options['charset'] = $charset; - } - } - - return $options; - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/MySQL57Platform.php b/vendor/doctrine/dbal/src/Platforms/MySQL57Platform.php deleted file mode 100644 index f3899959..00000000 --- a/vendor/doctrine/dbal/src/Platforms/MySQL57Platform.php +++ /dev/null @@ -1,99 +0,0 @@ -getQuotedName($this)]; - } - - /** - * {@inheritDoc} - * - * @deprecated Implement {@see createReservedKeywordsList()} instead. - */ - protected function getReservedKeywordsClass() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4510', - 'MySQL57Platform::getReservedKeywordsClass() is deprecated,' - . ' use MySQL57Platform::createReservedKeywordsList() instead.', - ); - - return Keywords\MySQL57Keywords::class; - } - - /** - * {@inheritDoc} - */ - protected function initializeDoctrineTypeMappings() - { - parent::initializeDoctrineTypeMappings(); - - $this->doctrineTypeMapping['json'] = Types::JSON; - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/MySQL80Platform.php b/vendor/doctrine/dbal/src/Platforms/MySQL80Platform.php deleted file mode 100644 index 5ab35384..00000000 --- a/vendor/doctrine/dbal/src/Platforms/MySQL80Platform.php +++ /dev/null @@ -1,34 +0,0 @@ -getBitAndComparisonExpression($value1, $value2) - . '+' . $value2 . ')'; - } - - /** - * {@inheritDoc} - */ - public function getCreatePrimaryKeySQL(Index $index, $table): string - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } - - return 'ALTER TABLE ' . $table . ' ADD CONSTRAINT ' . $index->getQuotedName($this) - . ' PRIMARY KEY (' . $this->getIndexFieldDeclarationListSQL($index) . ')'; - } - - /** - * {@inheritDoc} - * - * Need to specifiy minvalue, since start with is hidden in the system and MINVALUE <= START WITH. - * Therefore we can use MINVALUE to be able to get a hint what START WITH was for later introspection - * in {@see listSequences()} - */ - public function getCreateSequenceSQL(Sequence $sequence) - { - return 'CREATE SEQUENCE ' . $sequence->getQuotedName($this) . - ' START WITH ' . $sequence->getInitialValue() . - ' MINVALUE ' . $sequence->getInitialValue() . - ' INCREMENT BY ' . $sequence->getAllocationSize() . - $this->getSequenceCacheSQL($sequence); - } - - /** - * {@inheritDoc} - */ - public function getAlterSequenceSQL(Sequence $sequence) - { - return 'ALTER SEQUENCE ' . $sequence->getQuotedName($this) . - ' INCREMENT BY ' . $sequence->getAllocationSize() - . $this->getSequenceCacheSQL($sequence); - } - - /** - * Cache definition for sequences - */ - private function getSequenceCacheSQL(Sequence $sequence): string - { - if ($sequence->getCache() === 0) { - return ' NOCACHE'; - } - - if ($sequence->getCache() === 1) { - return ' NOCACHE'; - } - - if ($sequence->getCache() > 1) { - return ' CACHE ' . $sequence->getCache(); - } - - return ''; - } - - /** - * {@inheritDoc} - */ - public function getSequenceNextValSQL($sequence) - { - return 'SELECT ' . $sequence . '.nextval FROM DUAL'; - } - - /** - * {@inheritDoc} - */ - public function getSetTransactionIsolationSQL($level) - { - return 'SET TRANSACTION ISOLATION LEVEL ' . $this->_getTransactionIsolationLevelSQL($level); - } - - /** - * {@inheritDoc} - */ - protected function _getTransactionIsolationLevelSQL($level) - { - switch ($level) { - case TransactionIsolationLevel::READ_UNCOMMITTED: - return 'READ UNCOMMITTED'; - - case TransactionIsolationLevel::READ_COMMITTED: - return 'READ COMMITTED'; - - case TransactionIsolationLevel::REPEATABLE_READ: - case TransactionIsolationLevel::SERIALIZABLE: - return 'SERIALIZABLE'; - - default: - return parent::_getTransactionIsolationLevelSQL($level); - } - } - - /** - * {@inheritDoc} - */ - public function getBooleanTypeDeclarationSQL(array $column) - { - return 'NUMBER(1)'; - } - - /** - * {@inheritDoc} - */ - public function getIntegerTypeDeclarationSQL(array $column) - { - return 'NUMBER(10)'; - } - - /** - * {@inheritDoc} - */ - public function getBigIntTypeDeclarationSQL(array $column) - { - return 'NUMBER(20)'; - } - - /** - * {@inheritDoc} - */ - public function getSmallIntTypeDeclarationSQL(array $column) - { - return 'NUMBER(5)'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTypeDeclarationSQL(array $column) - { - return 'TIMESTAMP(0)'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTzTypeDeclarationSQL(array $column) - { - return 'TIMESTAMP(0) WITH TIME ZONE'; - } - - /** - * {@inheritDoc} - */ - public function getDateTypeDeclarationSQL(array $column) - { - return 'DATE'; - } - - /** - * {@inheritDoc} - */ - public function getTimeTypeDeclarationSQL(array $column) - { - return 'DATE'; - } - - /** - * {@inheritDoc} - */ - protected function _getCommonIntegerTypeDeclarationSQL(array $column) - { - return ''; - } - - /** - * {@inheritDoc} - */ - protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - if ($length <= 0 || (func_num_args() > 2 && func_get_arg(2))) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default string column length on Oracle is deprecated' - . ', specify the length explicitly.', - ); - } - - return $fixed ? ($length > 0 ? 'CHAR(' . $length . ')' : 'CHAR(2000)') - : ($length > 0 ? 'VARCHAR2(' . $length . ')' : 'VARCHAR2(4000)'); - } - - /** - * {@inheritDoc} - */ - protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - if ($length <= 0 || (func_num_args() > 2 && func_get_arg(2))) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default binary column length on Oracle is deprecated' - . ', specify the length explicitly.', - ); - } - - return 'RAW(' . ($length > 0 ? $length : $this->getBinaryMaxLength()) . ')'; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getBinaryMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'OraclePlatform::getBinaryMaxLength() is deprecated.', - ); - - return 2000; - } - - /** - * {@inheritDoc} - */ - public function getClobTypeDeclarationSQL(array $column) - { - return 'CLOB'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListDatabasesSQL() - { - return 'SELECT username FROM all_users'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListSequencesSQL($database) - { - $database = $this->normalizeIdentifier($database); - $database = $this->quoteStringLiteral($database->getName()); - - return 'SELECT sequence_name, min_value, increment_by FROM sys.all_sequences ' . - 'WHERE SEQUENCE_OWNER = ' . $database; - } - - /** - * {@inheritDoc} - */ - protected function _getCreateTableSQL($name, array $columns, array $options = []) - { - $indexes = $options['indexes'] ?? []; - $options['indexes'] = []; - $sql = parent::_getCreateTableSQL($name, $columns, $options); - - foreach ($columns as $columnName => $column) { - if (isset($column['sequence'])) { - $sql[] = $this->getCreateSequenceSQL($column['sequence']); - } - - if ( - ! isset($column['autoincrement']) || ! $column['autoincrement'] && - (! isset($column['autoinc']) || ! $column['autoinc']) - ) { - continue; - } - - $sql = array_merge($sql, $this->getCreateAutoincrementSql($columnName, $name)); - } - - foreach ($indexes as $index) { - $sql[] = $this->getCreateIndexSQL($index, $name); - } - - return $sql; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - * - * @link http://ezcomponents.org/docs/api/trunk/DatabaseSchema/ezcDbSchemaOracleReader.html - */ - public function getListTableIndexesSQL($table, $database = null) - { - $table = $this->normalizeIdentifier($table); - $table = $this->quoteStringLiteral($table->getName()); - - return "SELECT uind_col.index_name AS name, - ( - SELECT uind.index_type - FROM user_indexes uind - WHERE uind.index_name = uind_col.index_name - ) AS type, - decode( - ( - SELECT uind.uniqueness - FROM user_indexes uind - WHERE uind.index_name = uind_col.index_name - ), - 'NONUNIQUE', - 0, - 'UNIQUE', - 1 - ) AS is_unique, - uind_col.column_name AS column_name, - uind_col.column_position AS column_pos, - ( - SELECT ucon.constraint_type - FROM user_constraints ucon - WHERE ucon.index_name = uind_col.index_name - AND ucon.table_name = uind_col.table_name - ) AS is_primary - FROM user_ind_columns uind_col - WHERE uind_col.table_name = " . $table . ' - ORDER BY uind_col.column_position ASC'; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTablesSQL() - { - return 'SELECT * FROM sys.user_tables'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListViewsSQL($database) - { - return 'SELECT view_name, text FROM sys.user_views'; - } - - /** - * @internal The method should be only used from within the OraclePlatform class hierarchy. - * - * @param string $name - * @param string $table - * @param int $start - * - * @return string[] - */ - public function getCreateAutoincrementSql($name, $table, $start = 1) - { - $tableIdentifier = $this->normalizeIdentifier($table); - $quotedTableName = $tableIdentifier->getQuotedName($this); - $unquotedTableName = $tableIdentifier->getName(); - - $nameIdentifier = $this->normalizeIdentifier($name); - $quotedName = $nameIdentifier->getQuotedName($this); - $unquotedName = $nameIdentifier->getName(); - - $sql = []; - - $autoincrementIdentifierName = $this->getAutoincrementIdentifierName($tableIdentifier); - - $idx = new Index($autoincrementIdentifierName, [$quotedName], true, true); - - $sql[] = "DECLARE - constraints_Count NUMBER; -BEGIN - SELECT COUNT(CONSTRAINT_NAME) INTO constraints_Count - FROM USER_CONSTRAINTS - WHERE TABLE_NAME = '" . $unquotedTableName . "' - AND CONSTRAINT_TYPE = 'P'; - IF constraints_Count = 0 OR constraints_Count = '' THEN - EXECUTE IMMEDIATE '" . $this->getCreateConstraintSQL($idx, $quotedTableName) . "'; - END IF; -END;"; - - $sequenceName = $this->getIdentitySequenceName( - $tableIdentifier->isQuoted() ? $quotedTableName : $unquotedTableName, - $nameIdentifier->isQuoted() ? $quotedName : $unquotedName, - ); - $sequence = new Sequence($sequenceName, $start); - $sql[] = $this->getCreateSequenceSQL($sequence); - - $sql[] = 'CREATE TRIGGER ' . $autoincrementIdentifierName . ' - BEFORE INSERT - ON ' . $quotedTableName . ' - FOR EACH ROW -DECLARE - last_Sequence NUMBER; - last_InsertID NUMBER; -BEGIN - IF (:NEW.' . $quotedName . ' IS NULL OR :NEW.' . $quotedName . ' = 0) THEN - SELECT ' . $sequenceName . '.NEXTVAL INTO :NEW.' . $quotedName . ' FROM DUAL; - ELSE - SELECT NVL(Last_Number, 0) INTO last_Sequence - FROM User_Sequences - WHERE Sequence_Name = \'' . $sequence->getName() . '\'; - SELECT :NEW.' . $quotedName . ' INTO last_InsertID FROM DUAL; - WHILE (last_InsertID > last_Sequence) LOOP - SELECT ' . $sequenceName . '.NEXTVAL INTO last_Sequence FROM DUAL; - END LOOP; - SELECT ' . $sequenceName . '.NEXTVAL INTO last_Sequence FROM DUAL; - END IF; -END;'; - - return $sql; - } - - /** - * @internal The method should be only used from within the OracleSchemaManager class hierarchy. - * - * Returns the SQL statements to drop the autoincrement for the given table name. - * - * @param string $table The table name to drop the autoincrement for. - * - * @return string[] - */ - public function getDropAutoincrementSql($table) - { - $table = $this->normalizeIdentifier($table); - $autoincrementIdentifierName = $this->getAutoincrementIdentifierName($table); - $identitySequenceName = $this->getIdentitySequenceName( - $table->isQuoted() ? $table->getQuotedName($this) : $table->getName(), - '', - ); - - return [ - 'DROP TRIGGER ' . $autoincrementIdentifierName, - $this->getDropSequenceSQL($identitySequenceName), - $this->getDropConstraintSQL($autoincrementIdentifierName, $table->getQuotedName($this)), - ]; - } - - /** - * Normalizes the given identifier. - * - * Uppercases the given identifier if it is not quoted by intention - * to reflect Oracle's internal auto uppercasing strategy of unquoted identifiers. - * - * @param string $name The identifier to normalize. - */ - private function normalizeIdentifier($name): Identifier - { - $identifier = new Identifier($name); - - return $identifier->isQuoted() ? $identifier : new Identifier(strtoupper($name)); - } - - /** - * Adds suffix to identifier, - * - * if the new string exceeds max identifier length, - * keeps $suffix, cuts from $identifier as much as the part exceeding. - */ - private function addSuffix(string $identifier, string $suffix): string - { - $maxPossibleLengthWithoutSuffix = $this->getMaxIdentifierLength() - strlen($suffix); - if (strlen($identifier) > $maxPossibleLengthWithoutSuffix) { - $identifier = substr($identifier, 0, $maxPossibleLengthWithoutSuffix); - } - - return $identifier . $suffix; - } - - /** - * Returns the autoincrement primary key identifier name for the given table identifier. - * - * Quotes the autoincrement primary key identifier name - * if the given table name is quoted by intention. - */ - private function getAutoincrementIdentifierName(Identifier $table): string - { - $identifierName = $this->addSuffix($table->getName(), '_AI_PK'); - - return $table->isQuoted() - ? $this->quoteSingleIdentifier($identifierName) - : $identifierName; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableForeignKeysSQL($table) - { - $table = $this->normalizeIdentifier($table); - $table = $this->quoteStringLiteral($table->getName()); - - return "SELECT alc.constraint_name, - alc.DELETE_RULE, - cols.column_name \"local_column\", - cols.position, - ( - SELECT r_cols.table_name - FROM user_cons_columns r_cols - WHERE alc.r_constraint_name = r_cols.constraint_name - AND r_cols.position = cols.position - ) AS \"references_table\", - ( - SELECT r_cols.column_name - FROM user_cons_columns r_cols - WHERE alc.r_constraint_name = r_cols.constraint_name - AND r_cols.position = cols.position - ) AS \"foreign_column\" - FROM user_cons_columns cols - JOIN user_constraints alc - ON alc.constraint_name = cols.constraint_name - AND alc.constraint_type = 'R' - AND alc.table_name = " . $table . ' - ORDER BY cols.constraint_name ASC, cols.position ASC'; - } - - /** - * @deprecated - * - * {@inheritDoc} - */ - public function getListTableConstraintsSQL($table) - { - $table = $this->normalizeIdentifier($table); - $table = $this->quoteStringLiteral($table->getName()); - - return 'SELECT * FROM user_constraints WHERE table_name = ' . $table; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableColumnsSQL($table, $database = null) - { - $table = $this->normalizeIdentifier($table); - $table = $this->quoteStringLiteral($table->getName()); - - $tabColumnsTableName = 'user_tab_columns'; - $colCommentsTableName = 'user_col_comments'; - $tabColumnsOwnerCondition = ''; - $colCommentsOwnerCondition = ''; - - if ($database !== null && $database !== '/') { - $database = $this->normalizeIdentifier($database); - $database = $this->quoteStringLiteral($database->getName()); - $tabColumnsTableName = 'all_tab_columns'; - $colCommentsTableName = 'all_col_comments'; - $tabColumnsOwnerCondition = ' AND c.owner = ' . $database; - $colCommentsOwnerCondition = ' AND d.OWNER = c.OWNER'; - } - - return sprintf( - <<<'SQL' -SELECT c.*, - ( - SELECT d.comments - FROM %s d - WHERE d.TABLE_NAME = c.TABLE_NAME%s - AND d.COLUMN_NAME = c.COLUMN_NAME - ) AS comments -FROM %s c -WHERE c.table_name = %s%s -ORDER BY c.column_id -SQL - , - $colCommentsTableName, - $colCommentsOwnerCondition, - $tabColumnsTableName, - $table, - $tabColumnsOwnerCondition, - ); - } - - /** - * {@inheritDoc} - */ - public function getDropForeignKeySQL($foreignKey, $table) - { - if ($foreignKey instanceof ForeignKeyConstraint) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $foreignKey as a ForeignKeyConstraint object to %s is deprecated.' - . ' Pass it as a quoted name instead.', - __METHOD__, - ); - } else { - $foreignKey = new Identifier($foreignKey); - } - - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - } else { - $table = new Identifier($table); - } - - $foreignKey = $foreignKey->getQuotedName($this); - $table = $table->getQuotedName($this); - - return 'ALTER TABLE ' . $table . ' DROP CONSTRAINT ' . $foreignKey; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey) - { - $referentialAction = ''; - - if ($foreignKey->hasOption('onDelete')) { - $referentialAction = $this->getForeignKeyReferentialActionSQL($foreignKey->getOption('onDelete')); - } - - if ($referentialAction !== '') { - return ' ON DELETE ' . $referentialAction; - } - - return ''; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getForeignKeyReferentialActionSQL($action) - { - $action = strtoupper($action); - - switch ($action) { - case 'RESTRICT': // RESTRICT is not supported, therefore falling back to NO ACTION. - case 'NO ACTION': - // NO ACTION cannot be declared explicitly, - // therefore returning empty string to indicate to OMIT the referential clause. - return ''; - - case 'CASCADE': - case 'SET NULL': - return $action; - - default: - // SET DEFAULT is not supported, throw exception instead. - throw new InvalidArgumentException('Invalid foreign key action: ' . $action); - } - } - - /** - * {@inheritDoc} - */ - public function getCreateDatabaseSQL($name) - { - return 'CREATE USER ' . $name; - } - - /** - * {@inheritDoc} - */ - public function getDropDatabaseSQL($name) - { - return 'DROP USER ' . $name . ' CASCADE'; - } - - /** - * {@inheritDoc} - */ - public function getAlterTableSQL(TableDiff $diff) - { - $sql = []; - $commentsSQL = []; - $columnSql = []; - - $fields = []; - - $tableNameSQL = ($diff->getOldTable() ?? $diff->getName($this))->getQuotedName($this); - - foreach ($diff->getAddedColumns() as $column) { - if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) { - continue; - } - - $fields[] = $this->getColumnDeclarationSQL($column->getQuotedName($this), $column->toArray()); - $comment = $this->getColumnComment($column); - - if ($comment === null || $comment === '') { - continue; - } - - $commentsSQL[] = $this->getCommentOnColumnSQL( - $tableNameSQL, - $column->getQuotedName($this), - $comment, - ); - } - - if (count($fields) > 0) { - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ADD (' . implode(', ', $fields) . ')'; - } - - $fields = []; - foreach ($diff->getModifiedColumns() as $columnDiff) { - if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) { - continue; - } - - $newColumn = $columnDiff->getNewColumn(); - - // Do not generate column alteration clause if type is binary and only fixed property has changed. - // Oracle only supports binary type columns with variable length. - // Avoids unnecessary table alteration statements. - if ( - $newColumn->getType() instanceof BinaryType && - $columnDiff->hasFixedChanged() && - count($columnDiff->changedProperties) === 1 - ) { - continue; - } - - $columnHasChangedComment = $columnDiff->hasCommentChanged(); - - /** - * Do not add query part if only comment has changed - */ - if (! ($columnHasChangedComment && count($columnDiff->changedProperties) === 1)) { - $newColumnProperties = $newColumn->toArray(); - - if (! $columnDiff->hasNotNullChanged()) { - unset($newColumnProperties['notnull']); - } - - $fields[] = $newColumn->getQuotedName($this) . $this->getColumnDeclarationSQL('', $newColumnProperties); - } - - if (! $columnHasChangedComment) { - continue; - } - - $commentsSQL[] = $this->getCommentOnColumnSQL( - $tableNameSQL, - $newColumn->getQuotedName($this), - $this->getColumnComment($newColumn), - ); - } - - if (count($fields) > 0) { - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' MODIFY (' . implode(', ', $fields) . ')'; - } - - foreach ($diff->getRenamedColumns() as $oldColumnName => $column) { - if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $column, $diff, $columnSql)) { - continue; - } - - $oldColumnName = new Identifier($oldColumnName); - - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' RENAME COLUMN ' . $oldColumnName->getQuotedName($this) - . ' TO ' . $column->getQuotedName($this); - } - - $fields = []; - foreach ($diff->getDroppedColumns() as $column) { - if ($this->onSchemaAlterTableRemoveColumn($column, $diff, $columnSql)) { - continue; - } - - $fields[] = $column->getQuotedName($this); - } - - if (count($fields) > 0) { - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' DROP (' . implode(', ', $fields) . ')'; - } - - $tableSql = []; - - if (! $this->onSchemaAlterTable($diff, $tableSql)) { - $sql = array_merge($sql, $commentsSQL); - - $newName = $diff->getNewName(); - - if ($newName !== false) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5663', - 'Generation of "rename table" SQL using %s is deprecated. Use getRenameTableSQL() instead.', - __METHOD__, - ); - - $sql[] = sprintf( - 'ALTER TABLE %s RENAME TO %s', - $tableNameSQL, - $newName->getQuotedName($this), - ); - } - - $sql = array_merge( - $this->getPreAlterTableIndexForeignKeySQL($diff), - $sql, - $this->getPostAlterTableIndexForeignKeySQL($diff), - ); - } - - return array_merge($sql, $tableSql, $columnSql); - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getColumnDeclarationSQL($name, array $column) - { - if (isset($column['columnDefinition'])) { - $columnDef = $this->getCustomTypeDeclarationSQL($column); - } else { - $default = $this->getDefaultValueDeclarationSQL($column); - - $notnull = ''; - - if (isset($column['notnull'])) { - $notnull = $column['notnull'] ? ' NOT NULL' : ' NULL'; - } - - if (! empty($column['unique'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5656', - 'The usage of the "unique" column property is deprecated. Use unique constraints instead.', - ); - - $unique = ' ' . $this->getUniqueFieldDeclarationSQL(); - } else { - $unique = ''; - } - - if (! empty($column['check'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5656', - 'The usage of the "check" column property is deprecated.', - ); - - $check = ' ' . $column['check']; - } else { - $check = ''; - } - - $typeDecl = $column['type']->getSQLDeclaration($column, $this); - $columnDef = $typeDecl . $default . $notnull . $unique . $check; - } - - return $name . ' ' . $columnDef; - } - - /** - * {@inheritDoc} - */ - protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName) - { - if (strpos($tableName, '.') !== false) { - [$schema] = explode('.', $tableName); - $oldIndexName = $schema . '.' . $oldIndexName; - } - - return ['ALTER INDEX ' . $oldIndexName . ' RENAME TO ' . $index->getQuotedName($this)]; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function usesSequenceEmulatedIdentityColumns() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5513', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the OraclePlatform class hierarchy. - */ - public function getIdentitySequenceName($tableName, $columnName) - { - $table = new Identifier($tableName); - - // No usage of column name to preserve BC compatibility with <2.5 - $identitySequenceName = $this->addSuffix($table->getName(), '_SEQ'); - - if ($table->isQuoted()) { - $identitySequenceName = '"' . $identitySequenceName . '"'; - } - - $identitySequenceIdentifier = $this->normalizeIdentifier($identitySequenceName); - - return $identitySequenceIdentifier->getQuotedName($this); - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsCommentOnStatement() - { - return true; - } - - /** - * {@inheritDoc} - */ - public function getName() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4749', - 'OraclePlatform::getName() is deprecated. Identify platforms by their class.', - ); - - return 'oracle'; - } - - /** - * {@inheritDoc} - */ - protected function doModifyLimitQuery($query, $limit, $offset) - { - if ($limit === null && $offset <= 0) { - return $query; - } - - if (preg_match('/^\s*SELECT/i', $query) === 1) { - if (preg_match('/\sFROM\s/i', $query) === 0) { - $query .= ' FROM dual'; - } - - $columns = ['a.*']; - - if ($offset > 0) { - $columns[] = 'ROWNUM AS doctrine_rownum'; - } - - $query = sprintf('SELECT %s FROM (%s) a', implode(', ', $columns), $query); - - if ($limit !== null) { - $query .= sprintf(' WHERE ROWNUM <= %d', $offset + $limit); - } - - if ($offset > 0) { - $query = sprintf('SELECT * FROM (%s) WHERE doctrine_rownum >= %d', $query, $offset + 1); - } - } - - return $query; - } - - /** - * {@inheritDoc} - */ - public function getCreateTemporaryTableSnippetSQL() - { - return 'CREATE GLOBAL TEMPORARY TABLE'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTzFormatString() - { - return 'Y-m-d H:i:sP'; - } - - /** - * {@inheritDoc} - */ - public function getDateFormatString() - { - return 'Y-m-d 00:00:00'; - } - - /** - * {@inheritDoc} - */ - public function getTimeFormatString() - { - return '1900-01-01 H:i:s'; - } - - /** - * {@inheritDoc} - */ - public function getMaxIdentifierLength() - { - return 30; - } - - /** - * {@inheritDoc} - */ - public function supportsSequences() - { - return true; - } - - /** - * {@inheritDoc} - */ - public function supportsReleaseSavepoints() - { - return false; - } - - /** - * {@inheritDoc} - */ - public function getTruncateTableSQL($tableName, $cascade = false) - { - $tableIdentifier = new Identifier($tableName); - - return 'TRUNCATE TABLE ' . $tableIdentifier->getQuotedName($this); - } - - /** - * {@inheritDoc} - */ - public function getDummySelectSQL() - { - $expression = func_num_args() > 0 ? func_get_arg(0) : '1'; - - return sprintf('SELECT %s FROM DUAL', $expression); - } - - /** - * {@inheritDoc} - */ - protected function initializeDoctrineTypeMappings() - { - $this->doctrineTypeMapping = [ - 'binary_double' => Types::FLOAT, - 'binary_float' => Types::FLOAT, - 'binary_integer' => Types::BOOLEAN, - 'blob' => Types::BLOB, - 'char' => Types::STRING, - 'clob' => Types::TEXT, - 'date' => Types::DATE_MUTABLE, - 'float' => Types::FLOAT, - 'integer' => Types::INTEGER, - 'long' => Types::STRING, - 'long raw' => Types::BLOB, - 'nchar' => Types::STRING, - 'nclob' => Types::TEXT, - 'number' => Types::INTEGER, - 'nvarchar2' => Types::STRING, - 'pls_integer' => Types::BOOLEAN, - 'raw' => Types::BINARY, - 'rowid' => Types::STRING, - 'timestamp' => Types::DATETIME_MUTABLE, - 'timestamptz' => Types::DATETIMETZ_MUTABLE, - 'urowid' => Types::STRING, - 'varchar' => Types::STRING, - 'varchar2' => Types::STRING, - ]; - } - - /** - * {@inheritDoc} - */ - public function releaseSavePoint($savepoint) - { - return ''; - } - - /** - * {@inheritDoc} - * - * @deprecated Implement {@see createReservedKeywordsList()} instead. - */ - protected function getReservedKeywordsClass() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4510', - 'OraclePlatform::getReservedKeywordsClass() is deprecated,' - . ' use OraclePlatform::createReservedKeywordsList() instead.', - ); - - return Keywords\OracleKeywords::class; - } - - /** - * {@inheritDoc} - */ - public function getBlobTypeDeclarationSQL(array $column) - { - return 'BLOB'; - } - - /** @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. */ - public function getListTableCommentsSQL(string $table, ?string $database = null): string - { - $tableCommentsName = 'user_tab_comments'; - $ownerCondition = ''; - - if ($database !== null && $database !== '/') { - $tableCommentsName = 'all_tab_comments'; - $ownerCondition = ' AND owner = ' . $this->quoteStringLiteral( - $this->normalizeIdentifier($database)->getName(), - ); - } - - return sprintf( - <<<'SQL' -SELECT comments FROM %s WHERE table_name = %s%s -SQL - , - $tableCommentsName, - $this->quoteStringLiteral($this->normalizeIdentifier($table)->getName()), - $ownerCondition, - ); - } - - public function createSchemaManager(Connection $connection): OracleSchemaManager - { - return new OracleSchemaManager($connection, $this); - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/PostgreSQL100Platform.php b/vendor/doctrine/dbal/src/Platforms/PostgreSQL100Platform.php deleted file mode 100644 index 6ee1f90f..00000000 --- a/vendor/doctrine/dbal/src/Platforms/PostgreSQL100Platform.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - 't', - 'true', - 'y', - 'yes', - 'on', - '1', - ], - 'false' => [ - 'f', - 'false', - 'n', - 'no', - 'off', - '0', - ], - ]; - - /** - * PostgreSQL has different behavior with some drivers - * with regard to how booleans have to be handled. - * - * Enables use of 'true'/'false' or otherwise 1 and 0 instead. - * - * @param bool $flag - * - * @return void - */ - public function setUseBooleanTrueFalseStrings($flag) - { - $this->useBooleanTrueFalseStrings = (bool) $flag; - } - - /** - * {@inheritDoc} - */ - public function getSubstringExpression($string, $start, $length = null) - { - if ($length === null) { - return 'SUBSTRING(' . $string . ' FROM ' . $start . ')'; - } - - return 'SUBSTRING(' . $string . ' FROM ' . $start . ' FOR ' . $length . ')'; - } - - /** - * {@inheritDoc} - * - * @deprecated Generate dates within the application. - */ - public function getNowExpression() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4753', - 'PostgreSQLPlatform::getNowExpression() is deprecated. Generate dates within the application.', - ); - - return 'LOCALTIMESTAMP(0)'; - } - - /** - * {@inheritDoc} - */ - public function getRegexpExpression() - { - return 'SIMILAR TO'; - } - - /** - * {@inheritDoc} - */ - public function getLocateExpression($str, $substr, $startPos = false) - { - if ($startPos !== false) { - $str = $this->getSubstringExpression($str, $startPos); - - return 'CASE WHEN (POSITION(' . $substr . ' IN ' . $str . ') = 0) THEN 0' - . ' ELSE (POSITION(' . $substr . ' IN ' . $str . ') + ' . $startPos . ' - 1) END'; - } - - return 'POSITION(' . $substr . ' IN ' . $str . ')'; - } - - /** - * {@inheritDoc} - */ - protected function getDateArithmeticIntervalExpression($date, $operator, $interval, $unit) - { - if ($unit === DateIntervalUnit::QUARTER) { - $interval *= 3; - $unit = DateIntervalUnit::MONTH; - } - - return '(' . $date . ' ' . $operator . ' (' . $interval . " || ' " . $unit . "')::interval)"; - } - - /** - * {@inheritDoc} - */ - public function getDateDiffExpression($date1, $date2) - { - return '(DATE(' . $date1 . ')-DATE(' . $date2 . '))'; - } - - public function getCurrentDatabaseExpression(): string - { - return 'CURRENT_DATABASE()'; - } - - /** - * {@inheritDoc} - */ - public function supportsSequences() - { - return true; - } - - /** - * {@inheritDoc} - */ - public function supportsSchemas() - { - return true; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getDefaultSchemaName() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5513', - '%s is deprecated.', - __METHOD__, - ); - - return 'public'; - } - - /** - * {@inheritDoc} - */ - public function supportsIdentityColumns() - { - return true; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsPartialIndexes() - { - return true; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function usesSequenceEmulatedIdentityColumns() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5513', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getIdentitySequenceName($tableName, $columnName) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5513', - '%s is deprecated.', - __METHOD__, - ); - - return $tableName . '_' . $columnName . '_seq'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsCommentOnStatement() - { - return true; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function hasNativeGuidType() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } - - public function createSelectSQLBuilder(): SelectSQLBuilder - { - return new DefaultSelectSQLBuilder($this, 'FOR UPDATE', null); - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListDatabasesSQL() - { - return 'SELECT datname FROM pg_database'; - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see PostgreSQLSchemaManager::listSchemaNames()} instead. - */ - public function getListNamespacesSQL() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4503', - 'PostgreSQLPlatform::getListNamespacesSQL() is deprecated,' - . ' use PostgreSQLSchemaManager::listSchemaNames() instead.', - ); - - return "SELECT schema_name AS nspname - FROM information_schema.schemata - WHERE schema_name NOT LIKE 'pg\_%' - AND schema_name != 'information_schema'"; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListSequencesSQL($database) - { - return 'SELECT sequence_name AS relname, - sequence_schema AS schemaname, - minimum_value AS min_value, - increment AS increment_by - FROM information_schema.sequences - WHERE sequence_catalog = ' . $this->quoteStringLiteral($database) . " - AND sequence_schema NOT LIKE 'pg\_%' - AND sequence_schema != 'information_schema'"; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTablesSQL() - { - return "SELECT quote_ident(table_name) AS table_name, - table_schema AS schema_name - FROM information_schema.tables - WHERE table_schema NOT LIKE 'pg\_%' - AND table_schema != 'information_schema' - AND table_name != 'geometry_columns' - AND table_name != 'spatial_ref_sys' - AND table_type != 'VIEW'"; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListViewsSQL($database) - { - return 'SELECT quote_ident(table_name) AS viewname, - table_schema AS schemaname, - view_definition AS definition - FROM information_schema.views - WHERE view_definition IS NOT NULL'; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * @param string $table - * @param string|null $database - * - * @return string - */ - public function getListTableForeignKeysSQL($table, $database = null) - { - return 'SELECT quote_ident(r.conname) as conname, pg_catalog.pg_get_constraintdef(r.oid, true) as condef - FROM pg_catalog.pg_constraint r - WHERE r.conrelid = - ( - SELECT c.oid - FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n - WHERE ' . $this->getTableWhereClause($table) . " AND n.oid = c.relnamespace - ) - AND r.contype = 'f'"; - } - - /** - * @deprecated - * - * {@inheritDoc} - */ - public function getListTableConstraintsSQL($table) - { - $table = new Identifier($table); - $table = $this->quoteStringLiteral($table->getName()); - - return sprintf( - <<<'SQL' -SELECT - quote_ident(relname) as relname -FROM - pg_class -WHERE oid IN ( - SELECT indexrelid - FROM pg_index, pg_class - WHERE pg_class.relname = %s - AND pg_class.oid = pg_index.indrelid - AND (indisunique = 't' OR indisprimary = 't') - ) -SQL - , - $table, - ); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - * - * @link http://ezcomponents.org/docs/api/trunk/DatabaseSchema/ezcDbSchemaPgsqlReader.html - */ - public function getListTableIndexesSQL($table, $database = null) - { - return 'SELECT quote_ident(relname) as relname, pg_index.indisunique, pg_index.indisprimary, - pg_index.indkey, pg_index.indrelid, - pg_get_expr(indpred, indrelid) AS where - FROM pg_class, pg_index - WHERE oid IN ( - SELECT indexrelid - FROM pg_index si, pg_class sc, pg_namespace sn - WHERE ' . $this->getTableWhereClause($table, 'sc', 'sn') . ' - AND sc.oid=si.indrelid AND sc.relnamespace = sn.oid - ) AND pg_index.indexrelid = oid'; - } - - /** - * @param string $table - * @param string $classAlias - * @param string $namespaceAlias - */ - private function getTableWhereClause($table, $classAlias = 'c', $namespaceAlias = 'n'): string - { - $whereClause = $namespaceAlias . ".nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast') AND "; - if (strpos($table, '.') !== false) { - [$schema, $table] = explode('.', $table); - $schema = $this->quoteStringLiteral($schema); - } else { - $schema = 'ANY(current_schemas(false))'; - } - - $table = new Identifier($table); - $table = $this->quoteStringLiteral($table->getName()); - - return $whereClause . sprintf( - '%s.relname = %s AND %s.nspname = %s', - $classAlias, - $table, - $namespaceAlias, - $schema, - ); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableColumnsSQL($table, $database = null) - { - return "SELECT - a.attnum, - quote_ident(a.attname) AS field, - t.typname AS type, - format_type(a.atttypid, a.atttypmod) AS complete_type, - (SELECT tc.collcollate FROM pg_catalog.pg_collation tc WHERE tc.oid = a.attcollation) AS collation, - (SELECT t1.typname FROM pg_catalog.pg_type t1 WHERE t1.oid = t.typbasetype) AS domain_type, - (SELECT format_type(t2.typbasetype, t2.typtypmod) FROM - pg_catalog.pg_type t2 WHERE t2.typtype = 'd' AND t2.oid = a.atttypid) AS domain_complete_type, - a.attnotnull AS isnotnull, - (SELECT 't' - FROM pg_index - WHERE c.oid = pg_index.indrelid - AND pg_index.indkey[0] = a.attnum - AND pg_index.indisprimary = 't' - ) AS pri, - (SELECT pg_get_expr(adbin, adrelid) - FROM pg_attrdef - WHERE c.oid = pg_attrdef.adrelid - AND pg_attrdef.adnum=a.attnum - ) AS default, - (SELECT pg_description.description - FROM pg_description WHERE pg_description.objoid = c.oid AND a.attnum = pg_description.objsubid - ) AS comment - FROM pg_attribute a, pg_class c, pg_type t, pg_namespace n - WHERE " . $this->getTableWhereClause($table, 'c', 'n') . ' - AND a.attnum > 0 - AND a.attrelid = c.oid - AND a.atttypid = t.oid - AND n.oid = c.relnamespace - ORDER BY a.attnum'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey) - { - $query = ''; - - if ($foreignKey->hasOption('match')) { - $query .= ' MATCH ' . $foreignKey->getOption('match'); - } - - $query .= parent::getAdvancedForeignKeyOptionsSQL($foreignKey); - - if ($foreignKey->hasOption('deferrable') && $foreignKey->getOption('deferrable') !== false) { - $query .= ' DEFERRABLE'; - } else { - $query .= ' NOT DEFERRABLE'; - } - - if ( - ($foreignKey->hasOption('feferred') && $foreignKey->getOption('feferred') !== false) - || ($foreignKey->hasOption('deferred') && $foreignKey->getOption('deferred') !== false) - ) { - $query .= ' INITIALLY DEFERRED'; - } else { - $query .= ' INITIALLY IMMEDIATE'; - } - - return $query; - } - - /** - * {@inheritDoc} - */ - public function getAlterTableSQL(TableDiff $diff) - { - $sql = []; - $commentsSQL = []; - $columnSql = []; - - $table = $diff->getOldTable() ?? $diff->getName($this); - - $tableNameSQL = $table->getQuotedName($this); - - foreach ($diff->getAddedColumns() as $addedColumn) { - if ($this->onSchemaAlterTableAddColumn($addedColumn, $diff, $columnSql)) { - continue; - } - - $query = 'ADD ' . $this->getColumnDeclarationSQL( - $addedColumn->getQuotedName($this), - $addedColumn->toArray(), - ); - - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ' . $query; - - $comment = $this->getColumnComment($addedColumn); - - if ($comment === null || $comment === '') { - continue; - } - - $commentsSQL[] = $this->getCommentOnColumnSQL( - $tableNameSQL, - $addedColumn->getQuotedName($this), - $comment, - ); - } - - foreach ($diff->getDroppedColumns() as $droppedColumn) { - if ($this->onSchemaAlterTableRemoveColumn($droppedColumn, $diff, $columnSql)) { - continue; - } - - $query = 'DROP ' . $droppedColumn->getQuotedName($this); - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ' . $query; - } - - foreach ($diff->getModifiedColumns() as $columnDiff) { - if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) { - continue; - } - - if ($this->isUnchangedBinaryColumn($columnDiff)) { - continue; - } - - $oldColumn = $columnDiff->getOldColumn() ?? $columnDiff->getOldColumnName(); - $newColumn = $columnDiff->getNewColumn(); - - $oldColumnName = $oldColumn->getQuotedName($this); - - if ( - $columnDiff->hasTypeChanged() - || $columnDiff->hasPrecisionChanged() - || $columnDiff->hasScaleChanged() - || $columnDiff->hasFixedChanged() - ) { - $type = $newColumn->getType(); - - // SERIAL/BIGSERIAL are not "real" types and we can't alter a column to that type - $columnDefinition = $newColumn->toArray(); - $columnDefinition['autoincrement'] = false; - - // here was a server version check before, but DBAL API does not support this anymore. - $query = 'ALTER ' . $oldColumnName . ' TYPE ' . $type->getSQLDeclaration($columnDefinition, $this); - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ' . $query; - } - - if ($columnDiff->hasDefaultChanged()) { - $defaultClause = $newColumn->getDefault() === null - ? ' DROP DEFAULT' - : ' SET' . $this->getDefaultValueDeclarationSQL($newColumn->toArray()); - - $query = 'ALTER ' . $oldColumnName . $defaultClause; - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ' . $query; - } - - if ($columnDiff->hasNotNullChanged()) { - $query = 'ALTER ' . $oldColumnName . ' ' . ($newColumn->getNotnull() ? 'SET' : 'DROP') . ' NOT NULL'; - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ' . $query; - } - - if ($columnDiff->hasAutoIncrementChanged()) { - if ($newColumn->getAutoincrement()) { - // add autoincrement - $seqName = $this->getIdentitySequenceName( - $table->getName(), - $oldColumnName, - ); - - $sql[] = 'CREATE SEQUENCE ' . $seqName; - $sql[] = "SELECT setval('" . $seqName . "', (SELECT MAX(" . $oldColumnName . ') FROM ' - . $tableNameSQL . '))'; - $query = 'ALTER ' . $oldColumnName . " SET DEFAULT nextval('" . $seqName . "')"; - } else { - // Drop autoincrement, but do NOT drop the sequence. It might be re-used by other tables or have - $query = 'ALTER ' . $oldColumnName . ' DROP DEFAULT'; - } - - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ' . $query; - } - - $oldComment = $this->getOldColumnComment($columnDiff); - $newComment = $this->getColumnComment($newColumn); - - if ( - $columnDiff->hasCommentChanged() - || ($columnDiff->getOldColumn() !== null && $oldComment !== $newComment) - ) { - $commentsSQL[] = $this->getCommentOnColumnSQL( - $tableNameSQL, - $newColumn->getQuotedName($this), - $newComment, - ); - } - - if (! $columnDiff->hasLengthChanged()) { - continue; - } - - $query = 'ALTER ' . $oldColumnName . ' TYPE ' - . $newColumn->getType()->getSQLDeclaration($newColumn->toArray(), $this); - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ' . $query; - } - - foreach ($diff->getRenamedColumns() as $oldColumnName => $column) { - if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $column, $diff, $columnSql)) { - continue; - } - - $oldColumnName = new Identifier($oldColumnName); - - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' RENAME COLUMN ' . $oldColumnName->getQuotedName($this) - . ' TO ' . $column->getQuotedName($this); - } - - $tableSql = []; - - if (! $this->onSchemaAlterTable($diff, $tableSql)) { - $sql = array_merge($sql, $commentsSQL); - - $newName = $diff->getNewName(); - - if ($newName !== false) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5663', - 'Generation of "rename table" SQL using %s is deprecated. Use getRenameTableSQL() instead.', - __METHOD__, - ); - - $sql[] = sprintf( - 'ALTER TABLE %s RENAME TO %s', - $tableNameSQL, - $newName->getQuotedName($this), - ); - } - - $sql = array_merge( - $this->getPreAlterTableIndexForeignKeySQL($diff), - $sql, - $this->getPostAlterTableIndexForeignKeySQL($diff), - ); - } - - return array_merge($sql, $tableSql, $columnSql); - } - - /** - * Checks whether a given column diff is a logically unchanged binary type column. - * - * Used to determine whether a column alteration for a binary type column can be skipped. - * Doctrine's {@see BinaryType} and {@see BlobType} are mapped to the same database column type on this platform - * as this platform does not have a native VARBINARY/BINARY column type. Therefore the comparator - * might detect differences for binary type columns which do not have to be propagated - * to database as there actually is no difference at database level. - */ - private function isUnchangedBinaryColumn(ColumnDiff $columnDiff): bool - { - $newColumnType = $columnDiff->getNewColumn()->getType(); - - if (! $newColumnType instanceof BinaryType && ! $newColumnType instanceof BlobType) { - return false; - } - - $oldColumn = $columnDiff->getOldColumn() instanceof Column ? $columnDiff->getOldColumn() : null; - - if ($oldColumn !== null) { - $oldColumnType = $oldColumn->getType(); - - if (! $oldColumnType instanceof BinaryType && ! $oldColumnType instanceof BlobType) { - return false; - } - - return count(array_diff($columnDiff->changedProperties, ['type', 'length', 'fixed'])) === 0; - } - - if ($columnDiff->hasTypeChanged()) { - return false; - } - - return count(array_diff($columnDiff->changedProperties, ['length', 'fixed'])) === 0; - } - - /** - * {@inheritDoc} - */ - protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName) - { - if (strpos($tableName, '.') !== false) { - [$schema] = explode('.', $tableName); - $oldIndexName = $schema . '.' . $oldIndexName; - } - - return ['ALTER INDEX ' . $oldIndexName . ' RENAME TO ' . $index->getQuotedName($this)]; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getCommentOnColumnSQL($tableName, $columnName, $comment) - { - $tableName = new Identifier($tableName); - $columnName = new Identifier($columnName); - $comment = $comment === null ? 'NULL' : $this->quoteStringLiteral($comment); - - return sprintf( - 'COMMENT ON COLUMN %s.%s IS %s', - $tableName->getQuotedName($this), - $columnName->getQuotedName($this), - $comment, - ); - } - - /** - * {@inheritDoc} - */ - public function getCreateSequenceSQL(Sequence $sequence) - { - return 'CREATE SEQUENCE ' . $sequence->getQuotedName($this) . - ' INCREMENT BY ' . $sequence->getAllocationSize() . - ' MINVALUE ' . $sequence->getInitialValue() . - ' START ' . $sequence->getInitialValue() . - $this->getSequenceCacheSQL($sequence); - } - - /** - * {@inheritDoc} - */ - public function getAlterSequenceSQL(Sequence $sequence) - { - return 'ALTER SEQUENCE ' . $sequence->getQuotedName($this) . - ' INCREMENT BY ' . $sequence->getAllocationSize() . - $this->getSequenceCacheSQL($sequence); - } - - /** - * Cache definition for sequences - */ - private function getSequenceCacheSQL(Sequence $sequence): string - { - if ($sequence->getCache() > 1) { - return ' CACHE ' . $sequence->getCache(); - } - - return ''; - } - - /** - * {@inheritDoc} - */ - public function getDropSequenceSQL($sequence) - { - return parent::getDropSequenceSQL($sequence) . ' CASCADE'; - } - - /** - * {@inheritDoc} - */ - public function getDropForeignKeySQL($foreignKey, $table) - { - return $this->getDropConstraintSQL($foreignKey, $table); - } - - /** - * {@inheritDoc} - */ - public function getDropIndexSQL($index, $table = null) - { - if ($index instanceof Index && $index->isPrimary() && $table !== null) { - $constraintName = $index->getName() === 'primary' ? $this->tableName($table) . '_pkey' : $index->getName(); - - return $this->getDropConstraintSQL($constraintName, $table); - } - - if ($index === '"primary"' && $table !== null) { - $constraintName = $this->tableName($table) . '_pkey'; - - return $this->getDropConstraintSQL($constraintName, $table); - } - - return parent::getDropIndexSQL($index, $table); - } - - /** - * @param Table|string|null $table - * - * @return string - */ - private function tableName($table) - { - return $table instanceof Table ? $table->getName() : (string) $table; - } - - /** - * {@inheritDoc} - */ - protected function _getCreateTableSQL($name, array $columns, array $options = []) - { - $queryFields = $this->getColumnDeclarationListSQL($columns); - - if (isset($options['primary']) && ! empty($options['primary'])) { - $keyColumns = array_unique(array_values($options['primary'])); - $queryFields .= ', PRIMARY KEY(' . implode(', ', $keyColumns) . ')'; - } - - $unlogged = isset($options['unlogged']) && $options['unlogged'] === true ? ' UNLOGGED' : ''; - - $query = 'CREATE' . $unlogged . ' TABLE ' . $name . ' (' . $queryFields . ')'; - - $sql = [$query]; - - if (isset($options['indexes']) && ! empty($options['indexes'])) { - foreach ($options['indexes'] as $index) { - $sql[] = $this->getCreateIndexSQL($index, $name); - } - } - - if (isset($options['uniqueConstraints'])) { - foreach ($options['uniqueConstraints'] as $uniqueConstraint) { - $sql[] = $this->getCreateConstraintSQL($uniqueConstraint, $name); - } - } - - if (isset($options['foreignKeys'])) { - foreach ($options['foreignKeys'] as $definition) { - $sql[] = $this->getCreateForeignKeySQL($definition, $name); - } - } - - return $sql; - } - - /** - * Converts a single boolean value. - * - * First converts the value to its native PHP boolean type - * and passes it to the given callback function to be reconverted - * into any custom representation. - * - * @param mixed $value The value to convert. - * @param callable $callback The callback function to use for converting the real boolean value. - * - * @return mixed - * - * @throws UnexpectedValueException - */ - private function convertSingleBooleanValue($value, $callback) - { - if ($value === null) { - return $callback(null); - } - - if (is_bool($value) || is_numeric($value)) { - return $callback((bool) $value); - } - - if (! is_string($value)) { - return $callback(true); - } - - /** - * Better safe than sorry: http://php.net/in_array#106319 - */ - if (in_array(strtolower(trim($value)), $this->booleanLiterals['false'], true)) { - return $callback(false); - } - - if (in_array(strtolower(trim($value)), $this->booleanLiterals['true'], true)) { - return $callback(true); - } - - throw new UnexpectedValueException(sprintf("Unrecognized boolean literal '%s'", $value)); - } - - /** - * Converts one or multiple boolean values. - * - * First converts the value(s) to their native PHP boolean type - * and passes them to the given callback function to be reconverted - * into any custom representation. - * - * @param mixed $item The value(s) to convert. - * @param callable $callback The callback function to use for converting the real boolean value(s). - * - * @return mixed - */ - private function doConvertBooleans($item, $callback) - { - if (is_array($item)) { - foreach ($item as $key => $value) { - $item[$key] = $this->convertSingleBooleanValue($value, $callback); - } - - return $item; - } - - return $this->convertSingleBooleanValue($item, $callback); - } - - /** - * {@inheritDoc} - * - * Postgres wants boolean values converted to the strings 'true'/'false'. - */ - public function convertBooleans($item) - { - if (! $this->useBooleanTrueFalseStrings) { - return parent::convertBooleans($item); - } - - return $this->doConvertBooleans( - $item, - /** @param mixed $value */ - static function ($value) { - if ($value === null) { - return 'NULL'; - } - - return $value === true ? 'true' : 'false'; - }, - ); - } - - /** - * {@inheritDoc} - */ - public function convertBooleansToDatabaseValue($item) - { - if (! $this->useBooleanTrueFalseStrings) { - return parent::convertBooleansToDatabaseValue($item); - } - - return $this->doConvertBooleans( - $item, - /** @param mixed $value */ - static function ($value): ?int { - return $value === null ? null : (int) $value; - }, - ); - } - - /** - * {@inheritDoc} - * - * @param T $item - * - * @return (T is null ? null : bool) - * - * @template T - */ - public function convertFromBoolean($item) - { - if ($item !== null && in_array(strtolower($item), $this->booleanLiterals['false'], true)) { - return false; - } - - return parent::convertFromBoolean($item); - } - - /** - * {@inheritDoc} - */ - public function getSequenceNextValSQL($sequence) - { - return "SELECT NEXTVAL('" . $sequence . "')"; - } - - /** - * {@inheritDoc} - */ - public function getSetTransactionIsolationSQL($level) - { - return 'SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL ' - . $this->_getTransactionIsolationLevelSQL($level); - } - - /** - * {@inheritDoc} - */ - public function getBooleanTypeDeclarationSQL(array $column) - { - return 'BOOLEAN'; - } - - /** - * {@inheritDoc} - */ - public function getIntegerTypeDeclarationSQL(array $column) - { - if (! empty($column['autoincrement'])) { - return 'SERIAL'; - } - - return 'INT'; - } - - /** - * {@inheritDoc} - */ - public function getBigIntTypeDeclarationSQL(array $column) - { - if (! empty($column['autoincrement'])) { - return 'BIGSERIAL'; - } - - return 'BIGINT'; - } - - /** - * {@inheritDoc} - */ - public function getSmallIntTypeDeclarationSQL(array $column) - { - if (! empty($column['autoincrement'])) { - return 'SMALLSERIAL'; - } - - return 'SMALLINT'; - } - - /** - * {@inheritDoc} - */ - public function getGuidTypeDeclarationSQL(array $column) - { - return 'UUID'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTypeDeclarationSQL(array $column) - { - return 'TIMESTAMP(0) WITHOUT TIME ZONE'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTzTypeDeclarationSQL(array $column) - { - return 'TIMESTAMP(0) WITH TIME ZONE'; - } - - /** - * {@inheritDoc} - */ - public function getDateTypeDeclarationSQL(array $column) - { - return 'DATE'; - } - - /** - * {@inheritDoc} - */ - public function getTimeTypeDeclarationSQL(array $column) - { - return 'TIME(0) WITHOUT TIME ZONE'; - } - - /** - * {@inheritDoc} - */ - protected function _getCommonIntegerTypeDeclarationSQL(array $column) - { - return ''; - } - - /** - * {@inheritDoc} - */ - protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed) - { - return $fixed ? ($length > 0 ? 'CHAR(' . $length . ')' : 'CHAR(255)') - : ($length > 0 ? 'VARCHAR(' . $length . ')' : 'VARCHAR(255)'); - } - - /** - * {@inheritDoc} - */ - protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed) - { - return 'BYTEA'; - } - - /** - * {@inheritDoc} - */ - public function getClobTypeDeclarationSQL(array $column) - { - return 'TEXT'; - } - - /** - * {@inheritDoc} - */ - public function getName() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4749', - 'PostgreSQLPlatform::getName() is deprecated. Identify platforms by their class.', - ); - - return 'postgresql'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTzFormatString() - { - return 'Y-m-d H:i:sO'; - } - - /** - * {@inheritDoc} - */ - public function getEmptyIdentityInsertSQL($quotedTableName, $quotedIdentifierColumnName) - { - return 'INSERT INTO ' . $quotedTableName . ' (' . $quotedIdentifierColumnName . ') VALUES (DEFAULT)'; - } - - /** - * {@inheritDoc} - */ - public function getTruncateTableSQL($tableName, $cascade = false) - { - $tableIdentifier = new Identifier($tableName); - $sql = 'TRUNCATE ' . $tableIdentifier->getQuotedName($this); - - if ($cascade) { - $sql .= ' CASCADE'; - } - - return $sql; - } - - /** - * {@inheritDoc} - */ - public function getReadLockSQL() - { - return 'FOR SHARE'; - } - - /** - * {@inheritDoc} - */ - protected function initializeDoctrineTypeMappings() - { - $this->doctrineTypeMapping = [ - 'bigint' => Types::BIGINT, - 'bigserial' => Types::BIGINT, - 'bool' => Types::BOOLEAN, - 'boolean' => Types::BOOLEAN, - 'bpchar' => Types::STRING, - 'bytea' => Types::BLOB, - 'char' => Types::STRING, - 'date' => Types::DATE_MUTABLE, - 'datetime' => Types::DATETIME_MUTABLE, - 'decimal' => Types::DECIMAL, - 'double' => Types::FLOAT, - 'double precision' => Types::FLOAT, - 'float' => Types::FLOAT, - 'float4' => Types::FLOAT, - 'float8' => Types::FLOAT, - 'inet' => Types::STRING, - 'int' => Types::INTEGER, - 'int2' => Types::SMALLINT, - 'int4' => Types::INTEGER, - 'int8' => Types::BIGINT, - 'integer' => Types::INTEGER, - 'interval' => Types::STRING, - 'json' => Types::JSON, - 'jsonb' => Types::JSON, - 'money' => Types::DECIMAL, - 'numeric' => Types::DECIMAL, - 'serial' => Types::INTEGER, - 'serial4' => Types::INTEGER, - 'serial8' => Types::BIGINT, - 'real' => Types::FLOAT, - 'smallint' => Types::SMALLINT, - 'text' => Types::TEXT, - 'time' => Types::TIME_MUTABLE, - 'timestamp' => Types::DATETIME_MUTABLE, - 'timestamptz' => Types::DATETIMETZ_MUTABLE, - 'timetz' => Types::TIME_MUTABLE, - 'tsvector' => Types::TEXT, - 'uuid' => Types::GUID, - 'varchar' => Types::STRING, - 'year' => Types::DATE_MUTABLE, - '_varchar' => Types::STRING, - ]; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getVarcharMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'PostgreSQLPlatform::getVarcharMaxLength() is deprecated.', - ); - - return 65535; - } - - /** - * {@inheritDoc} - */ - public function getBinaryMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'PostgreSQLPlatform::getBinaryMaxLength() is deprecated.', - ); - - return 0; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getBinaryDefaultLength() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default binary column length is deprecated, specify the length explicitly.', - ); - - return 0; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function hasNativeJsonType() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } - - /** - * {@inheritDoc} - * - * @deprecated Implement {@see createReservedKeywordsList()} instead. - */ - protected function getReservedKeywordsClass() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4510', - 'PostgreSQLPlatform::getReservedKeywordsClass() is deprecated,' - . ' use PostgreSQLPlatform::createReservedKeywordsList() instead.', - ); - - return Keywords\PostgreSQL94Keywords::class; - } - - /** - * {@inheritDoc} - */ - public function getBlobTypeDeclarationSQL(array $column) - { - return 'BYTEA'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getDefaultValueDeclarationSQL($column) - { - if (isset($column['autoincrement']) && $column['autoincrement'] === true) { - return ''; - } - - return parent::getDefaultValueDeclarationSQL($column); - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsColumnCollation() - { - return true; - } - - /** - * {@inheritDoc} - */ - public function getJsonTypeDeclarationSQL(array $column) - { - if (! empty($column['jsonb'])) { - return 'JSONB'; - } - - return 'JSON'; - } - - private function getOldColumnComment(ColumnDiff $columnDiff): ?string - { - $oldColumn = $columnDiff->getOldColumn(); - - if ($oldColumn !== null) { - return $this->getColumnComment($oldColumn); - } - - return null; - } - - /** @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. */ - public function getListTableMetadataSQL(string $table, ?string $schema = null): string - { - if ($schema !== null) { - $table = $schema . '.' . $table; - } - - return sprintf( - <<<'SQL' -SELECT obj_description(%s::regclass) AS table_comment; -SQL - , - $this->quoteStringLiteral($table), - ); - } - - public function createSchemaManager(Connection $connection): PostgreSQLSchemaManager - { - return new PostgreSQLSchemaManager($connection, $this); - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/SQLServer/Comparator.php b/vendor/doctrine/dbal/src/Platforms/SQLServer/Comparator.php deleted file mode 100644 index 41ef422b..00000000 --- a/vendor/doctrine/dbal/src/Platforms/SQLServer/Comparator.php +++ /dev/null @@ -1,63 +0,0 @@ -databaseCollation = $databaseCollation; - } - - public function compareTables(Table $fromTable, Table $toTable): TableDiff - { - return parent::compareTables( - $this->normalizeColumns($fromTable), - $this->normalizeColumns($toTable), - ); - } - - /** - * {@inheritDoc} - */ - public function diffTable(Table $fromTable, Table $toTable) - { - return parent::diffTable( - $this->normalizeColumns($fromTable), - $this->normalizeColumns($toTable), - ); - } - - private function normalizeColumns(Table $table): Table - { - $table = clone $table; - - foreach ($table->getColumns() as $column) { - $options = $column->getPlatformOptions(); - - if (! isset($options['collation']) || $options['collation'] !== $this->databaseCollation) { - continue; - } - - unset($options['collation']); - $column->setPlatformOptions($options); - } - - return $table; - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/SQLServer/SQL/Builder/SQLServerSelectSQLBuilder.php b/vendor/doctrine/dbal/src/Platforms/SQLServer/SQL/Builder/SQLServerSelectSQLBuilder.php deleted file mode 100644 index dff12221..00000000 --- a/vendor/doctrine/dbal/src/Platforms/SQLServer/SQL/Builder/SQLServerSelectSQLBuilder.php +++ /dev/null @@ -1,86 +0,0 @@ -platform = $platform; - } - - public function buildSQL(SelectQuery $query): string - { - $parts = ['SELECT']; - - if ($query->isDistinct()) { - $parts[] = 'DISTINCT'; - } - - $parts[] = implode(', ', $query->getColumns()); - - $from = $query->getFrom(); - - if (count($from) > 0) { - $parts[] = 'FROM ' . implode(', ', $from); - } - - $forUpdate = $query->getForUpdate(); - - if ($forUpdate !== null) { - $with = ['UPDLOCK', 'ROWLOCK']; - - if ($forUpdate->getConflictResolutionMode() === ConflictResolutionMode::SKIP_LOCKED) { - $with[] = 'READPAST'; - } - - $parts[] = 'WITH (' . implode(', ', $with) . ')'; - } - - $where = $query->getWhere(); - - if ($where !== null) { - $parts[] = 'WHERE ' . $where; - } - - $groupBy = $query->getGroupBy(); - - if (count($groupBy) > 0) { - $parts[] = 'GROUP BY ' . implode(', ', $groupBy); - } - - $having = $query->getHaving(); - - if ($having !== null) { - $parts[] = 'HAVING ' . $having; - } - - $orderBy = $query->getOrderBy(); - - if (count($orderBy) > 0) { - $parts[] = 'ORDER BY ' . implode(', ', $orderBy); - } - - $sql = implode(' ', $parts); - $limit = $query->getLimit(); - - if ($limit->isDefined()) { - $sql = $this->platform->modifyLimitQuery($sql, $limit->getMaxResults(), $limit->getFirstResult()); - } - - return $sql; - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/SQLServer2012Platform.php b/vendor/doctrine/dbal/src/Platforms/SQLServer2012Platform.php deleted file mode 100644 index a8ba2fa0..00000000 --- a/vendor/doctrine/dbal/src/Platforms/SQLServer2012Platform.php +++ /dev/null @@ -1,13 +0,0 @@ -getConvertExpression('date', 'GETDATE()'); - } - - /** - * {@inheritDoc} - */ - public function getCurrentTimeSQL() - { - return $this->getConvertExpression('time', 'GETDATE()'); - } - - /** - * Returns an expression that converts an expression of one data type to another. - * - * @param string $dataType The target native data type. Alias data types cannot be used. - * @param string $expression The SQL expression to convert. - */ - private function getConvertExpression($dataType, $expression): string - { - return sprintf('CONVERT(%s, %s)', $dataType, $expression); - } - - /** - * {@inheritDoc} - */ - protected function getDateArithmeticIntervalExpression($date, $operator, $interval, $unit) - { - $factorClause = ''; - - if ($operator === '-') { - $factorClause = '-1 * '; - } - - return 'DATEADD(' . $unit . ', ' . $factorClause . $interval . ', ' . $date . ')'; - } - - /** - * {@inheritDoc} - */ - public function getDateDiffExpression($date1, $date2) - { - return 'DATEDIFF(day, ' . $date2 . ',' . $date1 . ')'; - } - - /** - * {@inheritDoc} - * - * Microsoft SQL Server prefers "autoincrement" identity columns - * since sequences can only be emulated with a table. - * - * @deprecated - */ - public function prefersIdentityColumns() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/1519', - 'SQLServerPlatform::prefersIdentityColumns() is deprecated.', - ); - - return true; - } - - /** - * {@inheritDoc} - * - * Microsoft SQL Server supports this through AUTO_INCREMENT columns. - */ - public function supportsIdentityColumns() - { - return true; - } - - /** - * {@inheritDoc} - */ - public function supportsReleaseSavepoints() - { - return false; - } - - /** - * {@inheritDoc} - */ - public function supportsSchemas() - { - return true; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getDefaultSchemaName() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5513', - '%s is deprecated.', - __METHOD__, - ); - - return 'dbo'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsColumnCollation() - { - return true; - } - - public function supportsSequences(): bool - { - return true; - } - - public function getAlterSequenceSQL(Sequence $sequence): string - { - return 'ALTER SEQUENCE ' . $sequence->getQuotedName($this) . - ' INCREMENT BY ' . $sequence->getAllocationSize(); - } - - public function getCreateSequenceSQL(Sequence $sequence): string - { - return 'CREATE SEQUENCE ' . $sequence->getQuotedName($this) . - ' START WITH ' . $sequence->getInitialValue() . - ' INCREMENT BY ' . $sequence->getAllocationSize() . - ' MINVALUE ' . $sequence->getInitialValue(); - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListSequencesSQL($database) - { - return 'SELECT seq.name, - CAST( - seq.increment AS VARCHAR(MAX) - ) AS increment, -- CAST avoids driver error for sql_variant type - CAST( - seq.start_value AS VARCHAR(MAX) - ) AS start_value -- CAST avoids driver error for sql_variant type - FROM sys.sequences AS seq'; - } - - /** - * {@inheritDoc} - */ - public function getSequenceNextValSQL($sequence) - { - return 'SELECT NEXT VALUE FOR ' . $sequence; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function hasNativeGuidType() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } - - /** - * {@inheritDoc} - */ - public function getDropForeignKeySQL($foreignKey, $table) - { - if (! $foreignKey instanceof ForeignKeyConstraint) { - $foreignKey = new Identifier($foreignKey); - } - - if (! $table instanceof Table) { - $table = new Identifier($table); - } - - $foreignKey = $foreignKey->getQuotedName($this); - $table = $table->getQuotedName($this); - - return 'ALTER TABLE ' . $table . ' DROP CONSTRAINT ' . $foreignKey; - } - - /** - * {@inheritDoc} - */ - public function getDropIndexSQL($index, $table = null) - { - if ($index instanceof Index) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $index as an Index object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $index = $index->getQuotedName($this); - } elseif (! is_string($index)) { - throw new InvalidArgumentException( - __METHOD__ . '() expects $index parameter to be string or ' . Index::class . '.', - ); - } - - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as an Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } elseif (! is_string($table)) { - throw new InvalidArgumentException( - __METHOD__ . '() expects $table parameter to be string or ' . Table::class . '.', - ); - } - - return 'DROP INDEX ' . $index . ' ON ' . $table; - } - - /** - * {@inheritDoc} - */ - protected function _getCreateTableSQL($name, array $columns, array $options = []) - { - $defaultConstraintsSql = []; - $commentsSql = []; - - $tableComment = $options['comment'] ?? null; - if ($tableComment !== null) { - $commentsSql[] = $this->getCommentOnTableSQL($name, $tableComment); - } - - // @todo does other code breaks because of this? - // force primary keys to be not null - foreach ($columns as &$column) { - if (! empty($column['primary'])) { - $column['notnull'] = true; - } - - // Build default constraints SQL statements. - if (isset($column['default'])) { - $defaultConstraintsSql[] = 'ALTER TABLE ' . $name . - ' ADD' . $this->getDefaultConstraintDeclarationSQL($name, $column); - } - - if (empty($column['comment']) && ! is_numeric($column['comment'])) { - continue; - } - - $commentsSql[] = $this->getCreateColumnCommentSQL($name, $column['name'], $column['comment']); - } - - $columnListSql = $this->getColumnDeclarationListSQL($columns); - - if (isset($options['uniqueConstraints']) && ! empty($options['uniqueConstraints'])) { - foreach ($options['uniqueConstraints'] as $constraintName => $definition) { - $columnListSql .= ', ' . $this->getUniqueConstraintDeclarationSQL($constraintName, $definition); - } - } - - if (isset($options['primary']) && ! empty($options['primary'])) { - $flags = ''; - if (isset($options['primary_index']) && $options['primary_index']->hasFlag('nonclustered')) { - $flags = ' NONCLUSTERED'; - } - - $columnListSql .= ', PRIMARY KEY' . $flags - . ' (' . implode(', ', array_unique(array_values($options['primary']))) . ')'; - } - - $query = 'CREATE TABLE ' . $name . ' (' . $columnListSql; - - $check = $this->getCheckDeclarationSQL($columns); - if (! empty($check)) { - $query .= ', ' . $check; - } - - $query .= ')'; - - $sql = [$query]; - - if (isset($options['indexes']) && ! empty($options['indexes'])) { - foreach ($options['indexes'] as $index) { - $sql[] = $this->getCreateIndexSQL($index, $name); - } - } - - if (isset($options['foreignKeys'])) { - foreach ($options['foreignKeys'] as $definition) { - $sql[] = $this->getCreateForeignKeySQL($definition, $name); - } - } - - return array_merge($sql, $commentsSql, $defaultConstraintsSql); - } - - /** - * {@inheritDoc} - */ - public function getCreatePrimaryKeySQL(Index $index, $table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $identifier = $table->getQuotedName($this); - } else { - $identifier = $table; - } - - $sql = 'ALTER TABLE ' . $identifier . ' ADD PRIMARY KEY'; - - if ($index->hasFlag('nonclustered')) { - $sql .= ' NONCLUSTERED'; - } - - return $sql . ' (' . $this->getIndexFieldDeclarationListSQL($index) . ')'; - } - - /** - * Returns the SQL statement for creating a column comment. - * - * SQL Server does not support native column comments, - * therefore the extended properties functionality is used - * as a workaround to store them. - * The property name used to store column comments is "MS_Description" - * which provides compatibility with SQL Server Management Studio, - * as column comments are stored in the same property there when - * specifying a column's "Description" attribute. - * - * @param string $tableName The quoted table name to which the column belongs. - * @param string $columnName The quoted column name to create the comment for. - * @param string|null $comment The column's comment. - * - * @return string - */ - protected function getCreateColumnCommentSQL($tableName, $columnName, $comment) - { - if (strpos($tableName, '.') !== false) { - [$schemaSQL, $tableSQL] = explode('.', $tableName); - $schemaSQL = $this->quoteStringLiteral($schemaSQL); - $tableSQL = $this->quoteStringLiteral($tableSQL); - } else { - $schemaSQL = "'dbo'"; - $tableSQL = $this->quoteStringLiteral($tableName); - } - - return $this->getAddExtendedPropertySQL( - 'MS_Description', - $comment, - 'SCHEMA', - $schemaSQL, - 'TABLE', - $tableSQL, - 'COLUMN', - $columnName, - ); - } - - /** - * Returns the SQL snippet for declaring a default constraint. - * - * @internal The method should be only used from within the SQLServerPlatform class hierarchy. - * - * @param string $table Name of the table to return the default constraint declaration for. - * @param mixed[] $column Column definition. - * - * @return string - * - * @throws InvalidArgumentException - */ - public function getDefaultConstraintDeclarationSQL($table, array $column) - { - if (! isset($column['default'])) { - throw new InvalidArgumentException("Incomplete column definition. 'default' required."); - } - - $columnName = new Identifier($column['name']); - - return ' CONSTRAINT ' . - $this->generateDefaultConstraintName($table, $column['name']) . - $this->getDefaultValueDeclarationSQL($column) . - ' FOR ' . $columnName->getQuotedName($this); - } - - /** - * {@inheritDoc} - */ - public function getCreateIndexSQL(Index $index, $table) - { - $constraint = parent::getCreateIndexSQL($index, $table); - - if ($index->isUnique() && ! $index->isPrimary()) { - $constraint = $this->_appendUniqueConstraintDefinition($constraint, $index); - } - - return $constraint; - } - - /** - * {@inheritDoc} - */ - protected function getCreateIndexSQLFlags(Index $index) - { - $type = ''; - if ($index->isUnique()) { - $type .= 'UNIQUE '; - } - - if ($index->hasFlag('clustered')) { - $type .= 'CLUSTERED '; - } elseif ($index->hasFlag('nonclustered')) { - $type .= 'NONCLUSTERED '; - } - - return $type; - } - - /** - * Extend unique key constraint with required filters - * - * @param string $sql - */ - private function _appendUniqueConstraintDefinition($sql, Index $index): string - { - $fields = []; - - foreach ($index->getQuotedColumns($this) as $field) { - $fields[] = $field . ' IS NOT NULL'; - } - - return $sql . ' WHERE ' . implode(' AND ', $fields); - } - - /** - * {@inheritDoc} - */ - public function getAlterTableSQL(TableDiff $diff) - { - $queryParts = []; - $sql = []; - $columnSql = []; - $commentsSql = []; - - $table = $diff->getOldTable() ?? $diff->getName($this); - - $tableName = $table->getName(); - - foreach ($diff->getAddedColumns() as $column) { - if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) { - continue; - } - - $columnProperties = $column->toArray(); - - $addColumnSql = 'ADD ' . $this->getColumnDeclarationSQL($column->getQuotedName($this), $columnProperties); - - if (isset($columnProperties['default'])) { - $addColumnSql .= ' CONSTRAINT ' . $this->generateDefaultConstraintName( - $tableName, - $column->getQuotedName($this), - ) . $this->getDefaultValueDeclarationSQL($columnProperties); - } - - $queryParts[] = $addColumnSql; - - $comment = $this->getColumnComment($column); - - if (empty($comment) && ! is_numeric($comment)) { - continue; - } - - $commentsSql[] = $this->getCreateColumnCommentSQL( - $tableName, - $column->getQuotedName($this), - $comment, - ); - } - - foreach ($diff->getDroppedColumns() as $column) { - if ($this->onSchemaAlterTableRemoveColumn($column, $diff, $columnSql)) { - continue; - } - - $queryParts[] = 'DROP COLUMN ' . $column->getQuotedName($this); - } - - foreach ($diff->getModifiedColumns() as $columnDiff) { - if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) { - continue; - } - - $newColumn = $columnDiff->getNewColumn(); - $newComment = $this->getColumnComment($newColumn); - $hasNewComment = ! empty($newComment) || is_numeric($newComment); - - $oldColumn = $columnDiff->getOldColumn(); - - if ($oldColumn instanceof Column) { - $oldComment = $this->getColumnComment($oldColumn); - $hasOldComment = ! empty($oldComment) || is_numeric($oldComment); - - if ($hasOldComment && $hasNewComment && $oldComment !== $newComment) { - $commentsSql[] = $this->getAlterColumnCommentSQL( - $tableName, - $newColumn->getQuotedName($this), - $newComment, - ); - } elseif ($hasOldComment && ! $hasNewComment) { - $commentsSql[] = $this->getDropColumnCommentSQL( - $tableName, - $newColumn->getQuotedName($this), - ); - } elseif (! $hasOldComment && $hasNewComment) { - $commentsSql[] = $this->getCreateColumnCommentSQL( - $tableName, - $newColumn->getQuotedName($this), - $newComment, - ); - } - } - - // Do not add query part if only comment has changed. - if ($columnDiff->hasCommentChanged() && count($columnDiff->changedProperties) === 1) { - continue; - } - - $requireDropDefaultConstraint = $this->alterColumnRequiresDropDefaultConstraint($columnDiff); - - if ($requireDropDefaultConstraint) { - $oldColumn = $columnDiff->getOldColumn(); - - if ($oldColumn !== null) { - $oldColumnName = $oldColumn->getName(); - } else { - $oldColumnName = $columnDiff->oldColumnName; - } - - $queryParts[] = $this->getAlterTableDropDefaultConstraintClause($tableName, $oldColumnName); - } - - $columnProperties = $newColumn->toArray(); - - $queryParts[] = 'ALTER COLUMN ' . - $this->getColumnDeclarationSQL($newColumn->getQuotedName($this), $columnProperties); - - if ( - ! isset($columnProperties['default']) - || (! $requireDropDefaultConstraint && ! $columnDiff->hasDefaultChanged()) - ) { - continue; - } - - $queryParts[] = $this->getAlterTableAddDefaultConstraintClause($tableName, $newColumn); - } - - $tableNameSQL = $table->getQuotedName($this); - - foreach ($diff->getRenamedColumns() as $oldColumnName => $newColumn) { - if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $newColumn, $diff, $columnSql)) { - continue; - } - - $oldColumnName = new Identifier($oldColumnName); - - $sql[] = "sp_rename '" . $tableNameSQL . '.' . $oldColumnName->getQuotedName($this) . - "', '" . $newColumn->getQuotedName($this) . "', 'COLUMN'"; - - // Recreate default constraint with new column name if necessary (for future reference). - if ($newColumn->getDefault() === null) { - continue; - } - - $queryParts[] = $this->getAlterTableDropDefaultConstraintClause( - $tableName, - $oldColumnName->getQuotedName($this), - ); - $queryParts[] = $this->getAlterTableAddDefaultConstraintClause($tableName, $newColumn); - } - - $tableSql = []; - - if ($this->onSchemaAlterTable($diff, $tableSql)) { - return array_merge($tableSql, $columnSql); - } - - foreach ($queryParts as $query) { - $sql[] = 'ALTER TABLE ' . $tableNameSQL . ' ' . $query; - } - - $sql = array_merge($sql, $commentsSql); - - $newName = $diff->getNewName(); - - if ($newName !== false) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5663', - 'Generation of "rename table" SQL using %s is deprecated. Use getRenameTableSQL() instead.', - __METHOD__, - ); - - $sql = array_merge($sql, $this->getRenameTableSQL($tableName, $newName->getName())); - } - - $sql = array_merge( - $this->getPreAlterTableIndexForeignKeySQL($diff), - $sql, - $this->getPostAlterTableIndexForeignKeySQL($diff), - ); - - return array_merge($sql, $tableSql, $columnSql); - } - - /** - * {@inheritDoc} - */ - public function getRenameTableSQL(string $oldName, string $newName): array - { - return [ - sprintf('sp_rename %s, %s', $this->quoteStringLiteral($oldName), $this->quoteStringLiteral($newName)), - - /* Rename table's default constraints names - * to match the new table name. - * This is necessary to ensure that the default - * constraints can be referenced in future table - * alterations as the table name is encoded in - * default constraints' names. */ - sprintf( - <<<'SQL' - DECLARE @sql NVARCHAR(MAX) = N''; - SELECT @sql += N'EXEC sp_rename N''' + dc.name + ''', N''' - + REPLACE(dc.name, '%s', '%s') + ''', ''OBJECT'';' - FROM sys.default_constraints dc - JOIN sys.tables tbl - ON dc.parent_object_id = tbl.object_id - WHERE tbl.name = %s; - EXEC sp_executesql @sql - SQL, - $this->generateIdentifierName($oldName), - $this->generateIdentifierName($newName), - $this->quoteStringLiteral($newName), - ), - ]; - } - - /** - * Returns the SQL clause for adding a default constraint in an ALTER TABLE statement. - * - * @param string $tableName The name of the table to generate the clause for. - * @param Column $column The column to generate the clause for. - */ - private function getAlterTableAddDefaultConstraintClause($tableName, Column $column): string - { - $columnDef = $column->toArray(); - $columnDef['name'] = $column->getQuotedName($this); - - return 'ADD' . $this->getDefaultConstraintDeclarationSQL($tableName, $columnDef); - } - - /** - * Returns the SQL clause for dropping an existing default constraint in an ALTER TABLE statement. - * - * @param string $tableName The name of the table to generate the clause for. - * @param string $columnName The name of the column to generate the clause for. - */ - private function getAlterTableDropDefaultConstraintClause($tableName, $columnName): string - { - return 'DROP CONSTRAINT ' . $this->generateDefaultConstraintName($tableName, $columnName); - } - - /** - * Checks whether a column alteration requires dropping its default constraint first. - * - * Different to other database vendors SQL Server implements column default values - * as constraints and therefore changes in a column's default value as well as changes - * in a column's type require dropping the default constraint first before being to - * alter the particular column to the new definition. - */ - private function alterColumnRequiresDropDefaultConstraint(ColumnDiff $columnDiff): bool - { - $oldColumn = $columnDiff->getOldColumn(); - - // We can only decide whether to drop an existing default constraint - // if we know the original default value. - if (! $oldColumn instanceof Column) { - return false; - } - - // We only need to drop an existing default constraint if we know the - // column was defined with a default value before. - if ($oldColumn->getDefault() === null) { - return false; - } - - // We need to drop an existing default constraint if the column was - // defined with a default value before and it has changed. - if ($columnDiff->hasDefaultChanged()) { - return true; - } - - // We need to drop an existing default constraint if the column was - // defined with a default value before and the native column type has changed. - return $columnDiff->hasTypeChanged() || $columnDiff->hasFixedChanged(); - } - - /** - * Returns the SQL statement for altering a column comment. - * - * SQL Server does not support native column comments, - * therefore the extended properties functionality is used - * as a workaround to store them. - * The property name used to store column comments is "MS_Description" - * which provides compatibility with SQL Server Management Studio, - * as column comments are stored in the same property there when - * specifying a column's "Description" attribute. - * - * @param string $tableName The quoted table name to which the column belongs. - * @param string $columnName The quoted column name to alter the comment for. - * @param string|null $comment The column's comment. - * - * @return string - */ - protected function getAlterColumnCommentSQL($tableName, $columnName, $comment) - { - if (strpos($tableName, '.') !== false) { - [$schemaSQL, $tableSQL] = explode('.', $tableName); - $schemaSQL = $this->quoteStringLiteral($schemaSQL); - $tableSQL = $this->quoteStringLiteral($tableSQL); - } else { - $schemaSQL = "'dbo'"; - $tableSQL = $this->quoteStringLiteral($tableName); - } - - return $this->getUpdateExtendedPropertySQL( - 'MS_Description', - $comment, - 'SCHEMA', - $schemaSQL, - 'TABLE', - $tableSQL, - 'COLUMN', - $columnName, - ); - } - - /** - * Returns the SQL statement for dropping a column comment. - * - * SQL Server does not support native column comments, - * therefore the extended properties functionality is used - * as a workaround to store them. - * The property name used to store column comments is "MS_Description" - * which provides compatibility with SQL Server Management Studio, - * as column comments are stored in the same property there when - * specifying a column's "Description" attribute. - * - * @param string $tableName The quoted table name to which the column belongs. - * @param string $columnName The quoted column name to drop the comment for. - * - * @return string - */ - protected function getDropColumnCommentSQL($tableName, $columnName) - { - if (strpos($tableName, '.') !== false) { - [$schemaSQL, $tableSQL] = explode('.', $tableName); - $schemaSQL = $this->quoteStringLiteral($schemaSQL); - $tableSQL = $this->quoteStringLiteral($tableSQL); - } else { - $schemaSQL = "'dbo'"; - $tableSQL = $this->quoteStringLiteral($tableName); - } - - return $this->getDropExtendedPropertySQL( - 'MS_Description', - 'SCHEMA', - $schemaSQL, - 'TABLE', - $tableSQL, - 'COLUMN', - $columnName, - ); - } - - /** - * {@inheritDoc} - */ - protected function getRenameIndexSQL($oldIndexName, Index $index, $tableName) - { - return [sprintf( - "EXEC sp_rename N'%s.%s', N'%s', N'INDEX'", - $tableName, - $oldIndexName, - $index->getQuotedName($this), - ), - ]; - } - - /** - * Returns the SQL statement for adding an extended property to a database object. - * - * @internal The method should be only used from within the SQLServerPlatform class hierarchy. - * - * @link http://msdn.microsoft.com/en-us/library/ms180047%28v=sql.90%29.aspx - * - * @param string $name The name of the property to add. - * @param string|null $value The value of the property to add. - * @param string|null $level0Type The type of the object at level 0 the property belongs to. - * @param string|null $level0Name The name of the object at level 0 the property belongs to. - * @param string|null $level1Type The type of the object at level 1 the property belongs to. - * @param string|null $level1Name The name of the object at level 1 the property belongs to. - * @param string|null $level2Type The type of the object at level 2 the property belongs to. - * @param string|null $level2Name The name of the object at level 2 the property belongs to. - * - * @return string - */ - public function getAddExtendedPropertySQL( - $name, - $value = null, - $level0Type = null, - $level0Name = null, - $level1Type = null, - $level1Name = null, - $level2Type = null, - $level2Name = null - ) { - return 'EXEC sp_addextendedproperty ' . - 'N' . $this->quoteStringLiteral($name) . ', N' . $this->quoteStringLiteral((string) $value) . ', ' . - 'N' . $this->quoteStringLiteral((string) $level0Type) . ', ' . $level0Name . ', ' . - 'N' . $this->quoteStringLiteral((string) $level1Type) . ', ' . $level1Name . ', ' . - 'N' . $this->quoteStringLiteral((string) $level2Type) . ', ' . $level2Name; - } - - /** - * Returns the SQL statement for dropping an extended property from a database object. - * - * @internal The method should be only used from within the SQLServerPlatform class hierarchy. - * - * @link http://technet.microsoft.com/en-gb/library/ms178595%28v=sql.90%29.aspx - * - * @param string $name The name of the property to drop. - * @param string|null $level0Type The type of the object at level 0 the property belongs to. - * @param string|null $level0Name The name of the object at level 0 the property belongs to. - * @param string|null $level1Type The type of the object at level 1 the property belongs to. - * @param string|null $level1Name The name of the object at level 1 the property belongs to. - * @param string|null $level2Type The type of the object at level 2 the property belongs to. - * @param string|null $level2Name The name of the object at level 2 the property belongs to. - * - * @return string - */ - public function getDropExtendedPropertySQL( - $name, - $level0Type = null, - $level0Name = null, - $level1Type = null, - $level1Name = null, - $level2Type = null, - $level2Name = null - ) { - return 'EXEC sp_dropextendedproperty ' . - 'N' . $this->quoteStringLiteral($name) . ', ' . - 'N' . $this->quoteStringLiteral((string) $level0Type) . ', ' . $level0Name . ', ' . - 'N' . $this->quoteStringLiteral((string) $level1Type) . ', ' . $level1Name . ', ' . - 'N' . $this->quoteStringLiteral((string) $level2Type) . ', ' . $level2Name; - } - - /** - * Returns the SQL statement for updating an extended property of a database object. - * - * @internal The method should be only used from within the SQLServerPlatform class hierarchy. - * - * @link http://msdn.microsoft.com/en-us/library/ms186885%28v=sql.90%29.aspx - * - * @param string $name The name of the property to update. - * @param string|null $value The value of the property to update. - * @param string|null $level0Type The type of the object at level 0 the property belongs to. - * @param string|null $level0Name The name of the object at level 0 the property belongs to. - * @param string|null $level1Type The type of the object at level 1 the property belongs to. - * @param string|null $level1Name The name of the object at level 1 the property belongs to. - * @param string|null $level2Type The type of the object at level 2 the property belongs to. - * @param string|null $level2Name The name of the object at level 2 the property belongs to. - * - * @return string - */ - public function getUpdateExtendedPropertySQL( - $name, - $value = null, - $level0Type = null, - $level0Name = null, - $level1Type = null, - $level1Name = null, - $level2Type = null, - $level2Name = null - ) { - return 'EXEC sp_updateextendedproperty ' . - 'N' . $this->quoteStringLiteral($name) . ', N' . $this->quoteStringLiteral((string) $value) . ', ' . - 'N' . $this->quoteStringLiteral((string) $level0Type) . ', ' . $level0Name . ', ' . - 'N' . $this->quoteStringLiteral((string) $level1Type) . ', ' . $level1Name . ', ' . - 'N' . $this->quoteStringLiteral((string) $level2Type) . ', ' . $level2Name; - } - - /** - * {@inheritDoc} - */ - public function getEmptyIdentityInsertSQL($quotedTableName, $quotedIdentifierColumnName) - { - return 'INSERT INTO ' . $quotedTableName . ' DEFAULT VALUES'; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTablesSQL() - { - // "sysdiagrams" table must be ignored as it's internal SQL Server table for Database Diagrams - // Category 2 must be ignored as it is "MS SQL Server 'pseudo-system' object[s]" for replication - return 'SELECT name, SCHEMA_NAME (uid) AS schema_name FROM sysobjects' - . " WHERE type = 'U' AND name != 'sysdiagrams' AND category != 2 ORDER BY name"; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableColumnsSQL($table, $database = null) - { - return "SELECT col.name, - type.name AS type, - col.max_length AS length, - ~col.is_nullable AS notnull, - def.definition AS [default], - col.scale, - col.precision, - col.is_identity AS autoincrement, - col.collation_name AS collation, - CAST(prop.value AS NVARCHAR(MAX)) AS comment -- CAST avoids driver error for sql_variant type - FROM sys.columns AS col - JOIN sys.types AS type - ON col.user_type_id = type.user_type_id - JOIN sys.objects AS obj - ON col.object_id = obj.object_id - JOIN sys.schemas AS scm - ON obj.schema_id = scm.schema_id - LEFT JOIN sys.default_constraints def - ON col.default_object_id = def.object_id - AND col.object_id = def.parent_object_id - LEFT JOIN sys.extended_properties AS prop - ON obj.object_id = prop.major_id - AND col.column_id = prop.minor_id - AND prop.name = 'MS_Description' - WHERE obj.type = 'U' - AND " . $this->getTableWhereClause($table, 'scm.name', 'obj.name'); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * @param string $table - * @param string|null $database - * - * @return string - */ - public function getListTableForeignKeysSQL($table, $database = null) - { - return 'SELECT f.name AS ForeignKey, - SCHEMA_NAME (f.SCHEMA_ID) AS SchemaName, - OBJECT_NAME (f.parent_object_id) AS TableName, - COL_NAME (fc.parent_object_id,fc.parent_column_id) AS ColumnName, - SCHEMA_NAME (o.SCHEMA_ID) ReferenceSchemaName, - OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName, - COL_NAME(fc.referenced_object_id,fc.referenced_column_id) AS ReferenceColumnName, - f.delete_referential_action_desc, - f.update_referential_action_desc - FROM sys.foreign_keys AS f - INNER JOIN sys.foreign_key_columns AS fc - INNER JOIN sys.objects AS o ON o.OBJECT_ID = fc.referenced_object_id - ON f.OBJECT_ID = fc.constraint_object_id - WHERE ' . - $this->getTableWhereClause($table, 'SCHEMA_NAME (f.schema_id)', 'OBJECT_NAME (f.parent_object_id)') . - ' ORDER BY fc.constraint_column_id'; - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableIndexesSQL($table, $database = null) - { - return "SELECT idx.name AS key_name, - col.name AS column_name, - ~idx.is_unique AS non_unique, - idx.is_primary_key AS [primary], - CASE idx.type - WHEN '1' THEN 'clustered' - WHEN '2' THEN 'nonclustered' - ELSE NULL - END AS flags - FROM sys.tables AS tbl - JOIN sys.schemas AS scm ON tbl.schema_id = scm.schema_id - JOIN sys.indexes AS idx ON tbl.object_id = idx.object_id - JOIN sys.index_columns AS idxcol ON idx.object_id = idxcol.object_id AND idx.index_id = idxcol.index_id - JOIN sys.columns AS col ON idxcol.object_id = col.object_id AND idxcol.column_id = col.column_id - WHERE " . $this->getTableWhereClause($table, 'scm.name', 'tbl.name') . ' - ORDER BY idx.index_id ASC, idxcol.key_ordinal ASC'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListViewsSQL($database) - { - return "SELECT name, definition FROM sysobjects - INNER JOIN sys.sql_modules ON sysobjects.id = sys.sql_modules.object_id - WHERE type = 'V' ORDER BY name"; - } - - /** - * Returns the where clause to filter schema and table name in a query. - * - * @param string $table The full qualified name of the table. - * @param string $schemaColumn The name of the column to compare the schema to in the where clause. - * @param string $tableColumn The name of the column to compare the table to in the where clause. - */ - private function getTableWhereClause($table, $schemaColumn, $tableColumn): string - { - if (strpos($table, '.') !== false) { - [$schema, $table] = explode('.', $table); - $schema = $this->quoteStringLiteral($schema); - $table = $this->quoteStringLiteral($table); - } else { - $schema = 'SCHEMA_NAME()'; - $table = $this->quoteStringLiteral($table); - } - - return sprintf('(%s = %s AND %s = %s)', $tableColumn, $table, $schemaColumn, $schema); - } - - /** - * {@inheritDoc} - */ - public function getLocateExpression($str, $substr, $startPos = false) - { - if ($startPos === false) { - return 'CHARINDEX(' . $substr . ', ' . $str . ')'; - } - - return 'CHARINDEX(' . $substr . ', ' . $str . ', ' . $startPos . ')'; - } - - /** - * {@inheritDoc} - */ - public function getModExpression($expression1, $expression2) - { - return $expression1 . ' % ' . $expression2; - } - - /** - * {@inheritDoc} - */ - public function getTrimExpression($str, $mode = TrimMode::UNSPECIFIED, $char = false) - { - if ($char === false) { - switch ($mode) { - case TrimMode::LEADING: - $trimFn = 'LTRIM'; - break; - - case TrimMode::TRAILING: - $trimFn = 'RTRIM'; - break; - - default: - return 'LTRIM(RTRIM(' . $str . '))'; - } - - return $trimFn . '(' . $str . ')'; - } - - $pattern = "'%[^' + " . $char . " + ']%'"; - - if ($mode === TrimMode::LEADING) { - return 'stuff(' . $str . ', 1, patindex(' . $pattern . ', ' . $str . ') - 1, null)'; - } - - if ($mode === TrimMode::TRAILING) { - return 'reverse(stuff(reverse(' . $str . '), 1, ' - . 'patindex(' . $pattern . ', reverse(' . $str . ')) - 1, null))'; - } - - return 'reverse(stuff(reverse(stuff(' . $str . ', 1, patindex(' . $pattern . ', ' . $str . ') - 1, null)), 1, ' - . 'patindex(' . $pattern . ', reverse(stuff(' . $str . ', 1, patindex(' . $pattern . ', ' . $str - . ') - 1, null))) - 1, null))'; - } - - /** - * {@inheritDoc} - */ - public function getConcatExpression() - { - return sprintf('CONCAT(%s)', implode(', ', func_get_args())); - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListDatabasesSQL() - { - return 'SELECT * FROM sys.databases'; - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see SQLServerSchemaManager::listSchemaNames()} instead. - */ - public function getListNamespacesSQL() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4503', - 'SQLServerPlatform::getListNamespacesSQL() is deprecated,' - . ' use SQLServerSchemaManager::listSchemaNames() instead.', - ); - - return "SELECT name FROM sys.schemas WHERE name NOT IN('guest', 'INFORMATION_SCHEMA', 'sys')"; - } - - /** - * {@inheritDoc} - */ - public function getSubstringExpression($string, $start, $length = null) - { - if ($length !== null) { - return 'SUBSTRING(' . $string . ', ' . $start . ', ' . $length . ')'; - } - - return 'SUBSTRING(' . $string . ', ' . $start . ', LEN(' . $string . ') - ' . $start . ' + 1)'; - } - - /** - * {@inheritDoc} - */ - public function getLengthExpression($column) - { - return 'LEN(' . $column . ')'; - } - - public function getCurrentDatabaseExpression(): string - { - return 'DB_NAME()'; - } - - /** - * {@inheritDoc} - */ - public function getSetTransactionIsolationSQL($level) - { - return 'SET TRANSACTION ISOLATION LEVEL ' . $this->_getTransactionIsolationLevelSQL($level); - } - - /** - * {@inheritDoc} - */ - public function getIntegerTypeDeclarationSQL(array $column) - { - return 'INT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getBigIntTypeDeclarationSQL(array $column) - { - return 'BIGINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getSmallIntTypeDeclarationSQL(array $column) - { - return 'SMALLINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getGuidTypeDeclarationSQL(array $column) - { - return 'UNIQUEIDENTIFIER'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTzTypeDeclarationSQL(array $column) - { - return 'DATETIMEOFFSET(6)'; - } - - /** - * {@inheritDoc} - */ - public function getAsciiStringTypeDeclarationSQL(array $column): string - { - $length = $column['length'] ?? null; - - if (! isset($column['fixed'])) { - return sprintf('VARCHAR(%d)', $length ?? 255); - } - - return sprintf('CHAR(%d)', $length ?? 255); - } - - /** - * {@inheritDoc} - */ - protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - if ($length <= 0 || (func_num_args() > 2 && func_get_arg(2))) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default string column length on SQL Server is deprecated' - . ', specify the length explicitly.', - ); - } - - return $fixed - ? 'NCHAR(' . ($length > 0 ? $length : 255) . ')' - : 'NVARCHAR(' . ($length > 0 ? $length : 255) . ')'; - } - - /** - * {@inheritDoc} - */ - protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed/*, $lengthOmitted = false*/) - { - if ($length <= 0 || (func_num_args() > 2 && func_get_arg(2))) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default binary column length on SQL Server is deprecated' - . ', specify the length explicitly.', - ); - } - - return $fixed - ? 'BINARY(' . ($length > 0 ? $length : 255) . ')' - : 'VARBINARY(' . ($length > 0 ? $length : 255) . ')'; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getBinaryMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'SQLServerPlatform::getBinaryMaxLength() is deprecated.', - ); - - return 8000; - } - - /** - * {@inheritDoc} - */ - public function getClobTypeDeclarationSQL(array $column) - { - return 'VARCHAR(MAX)'; - } - - /** - * {@inheritDoc} - */ - protected function _getCommonIntegerTypeDeclarationSQL(array $column) - { - return ! empty($column['autoincrement']) ? ' IDENTITY' : ''; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTypeDeclarationSQL(array $column) - { - // 3 - microseconds precision length - // http://msdn.microsoft.com/en-us/library/ms187819.aspx - return 'DATETIME2(6)'; - } - - /** - * {@inheritDoc} - */ - public function getDateTypeDeclarationSQL(array $column) - { - return 'DATE'; - } - - /** - * {@inheritDoc} - */ - public function getTimeTypeDeclarationSQL(array $column) - { - return 'TIME(0)'; - } - - /** - * {@inheritDoc} - */ - public function getBooleanTypeDeclarationSQL(array $column) - { - return 'BIT'; - } - - /** - * {@inheritDoc} - */ - protected function doModifyLimitQuery($query, $limit, $offset) - { - if ($limit === null && $offset <= 0) { - return $query; - } - - if ($this->shouldAddOrderBy($query)) { - if (preg_match('/^SELECT\s+DISTINCT/im', $query) > 0) { - // SQL Server won't let us order by a non-selected column in a DISTINCT query, - // so we have to do this madness. This says, order by the first column in the - // result. SQL Server's docs say that a nonordered query's result order is non- - // deterministic anyway, so this won't do anything that a bunch of update and - // deletes to the table wouldn't do anyway. - $query .= ' ORDER BY 1'; - } else { - // In another DBMS, we could do ORDER BY 0, but SQL Server gets angry if you - // use constant expressions in the order by list. - $query .= ' ORDER BY (SELECT 0)'; - } - } - - // This looks somewhat like MYSQL, but limit/offset are in inverse positions - // Supposedly SQL:2008 core standard. - // Per TSQL spec, FETCH NEXT n ROWS ONLY is not valid without OFFSET n ROWS. - $query .= sprintf(' OFFSET %d ROWS', $offset); - - if ($limit !== null) { - $query .= sprintf(' FETCH NEXT %d ROWS ONLY', $limit); - } - - return $query; - } - - /** - * {@inheritDoc} - */ - public function convertBooleans($item) - { - if (is_array($item)) { - foreach ($item as $key => $value) { - if (! is_bool($value) && ! is_numeric($value)) { - continue; - } - - $item[$key] = (int) (bool) $value; - } - } elseif (is_bool($item) || is_numeric($item)) { - $item = (int) (bool) $item; - } - - return $item; - } - - /** - * {@inheritDoc} - */ - public function getCreateTemporaryTableSnippetSQL() - { - return 'CREATE TABLE'; - } - - /** - * {@inheritDoc} - */ - public function getTemporaryTableName($tableName) - { - return '#' . $tableName; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeFormatString() - { - return 'Y-m-d H:i:s.u'; - } - - /** - * {@inheritDoc} - */ - public function getDateFormatString() - { - return 'Y-m-d'; - } - - /** - * {@inheritDoc} - */ - public function getTimeFormatString() - { - return 'H:i:s'; - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTzFormatString() - { - return 'Y-m-d H:i:s.u P'; - } - - /** - * {@inheritDoc} - */ - public function getName() - { - return 'mssql'; - } - - /** - * {@inheritDoc} - */ - protected function initializeDoctrineTypeMappings() - { - $this->doctrineTypeMapping = [ - 'bigint' => Types::BIGINT, - 'binary' => Types::BINARY, - 'bit' => Types::BOOLEAN, - 'blob' => Types::BLOB, - 'char' => Types::STRING, - 'date' => Types::DATE_MUTABLE, - 'datetime' => Types::DATETIME_MUTABLE, - 'datetime2' => Types::DATETIME_MUTABLE, - 'datetimeoffset' => Types::DATETIMETZ_MUTABLE, - 'decimal' => Types::DECIMAL, - 'double' => Types::FLOAT, - 'double precision' => Types::FLOAT, - 'float' => Types::FLOAT, - 'image' => Types::BLOB, - 'int' => Types::INTEGER, - 'money' => Types::INTEGER, - 'nchar' => Types::STRING, - 'ntext' => Types::TEXT, - 'numeric' => Types::DECIMAL, - 'nvarchar' => Types::STRING, - 'real' => Types::FLOAT, - 'smalldatetime' => Types::DATETIME_MUTABLE, - 'smallint' => Types::SMALLINT, - 'smallmoney' => Types::INTEGER, - 'text' => Types::TEXT, - 'time' => Types::TIME_MUTABLE, - 'tinyint' => Types::SMALLINT, - 'uniqueidentifier' => Types::GUID, - 'varbinary' => Types::BINARY, - 'varchar' => Types::STRING, - ]; - } - - /** - * {@inheritDoc} - */ - public function createSavePoint($savepoint) - { - return 'SAVE TRANSACTION ' . $savepoint; - } - - /** - * {@inheritDoc} - */ - public function releaseSavePoint($savepoint) - { - return ''; - } - - /** - * {@inheritDoc} - */ - public function rollbackSavePoint($savepoint) - { - return 'ROLLBACK TRANSACTION ' . $savepoint; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getForeignKeyReferentialActionSQL($action) - { - // RESTRICT is not supported, therefore falling back to NO ACTION. - if (strtoupper($action) === 'RESTRICT') { - return 'NO ACTION'; - } - - return parent::getForeignKeyReferentialActionSQL($action); - } - - public function appendLockHint(string $fromClause, int $lockMode): string - { - switch ($lockMode) { - case LockMode::NONE: - case LockMode::OPTIMISTIC: - return $fromClause; - - case LockMode::PESSIMISTIC_READ: - return $fromClause . ' WITH (HOLDLOCK, ROWLOCK)'; - - case LockMode::PESSIMISTIC_WRITE: - return $fromClause . ' WITH (UPDLOCK, ROWLOCK)'; - - default: - throw InvalidLockMode::fromLockMode($lockMode); - } - } - - /** - * {@inheritDoc} - * - * @deprecated This API is not portable. - */ - public function getForUpdateSQL() - { - return ' '; - } - - /** - * {@inheritDoc} - * - * @deprecated Implement {@see createReservedKeywordsList()} instead. - */ - protected function getReservedKeywordsClass() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4510', - 'SQLServerPlatform::getReservedKeywordsClass() is deprecated,' - . ' use SQLServerPlatform::createReservedKeywordsList() instead.', - ); - - return Keywords\SQLServer2012Keywords::class; - } - - /** - * {@inheritDoc} - */ - public function quoteSingleIdentifier($str) - { - return '[' . str_replace(']', ']]', $str) . ']'; - } - - /** - * {@inheritDoc} - */ - public function getTruncateTableSQL($tableName, $cascade = false) - { - $tableIdentifier = new Identifier($tableName); - - return 'TRUNCATE TABLE ' . $tableIdentifier->getQuotedName($this); - } - - /** - * {@inheritDoc} - */ - public function getBlobTypeDeclarationSQL(array $column) - { - return 'VARBINARY(MAX)'; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getColumnDeclarationSQL($name, array $column) - { - if (isset($column['columnDefinition'])) { - $columnDef = $this->getCustomTypeDeclarationSQL($column); - } else { - $collation = ! empty($column['collation']) ? - ' ' . $this->getColumnCollationDeclarationSQL($column['collation']) : ''; - - $notnull = ! empty($column['notnull']) ? ' NOT NULL' : ''; - - if (! empty($column['unique'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5656', - 'The usage of the "unique" column property is deprecated. Use unique constraints instead.', - ); - - $unique = ' ' . $this->getUniqueFieldDeclarationSQL(); - } else { - $unique = ''; - } - - if (! empty($column['check'])) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5656', - 'The usage of the "check" column property is deprecated.', - ); - - $check = ' ' . $column['check']; - } else { - $check = ''; - } - - $typeDecl = $column['type']->getSQLDeclaration($column, $this); - $columnDef = $typeDecl . $collation . $notnull . $unique . $check; - } - - return $name . ' ' . $columnDef; - } - - /** - * {@inheritDoc} - * - * SQL Server does not support quoting collation identifiers. - */ - public function getColumnCollationDeclarationSQL($collation) - { - return 'COLLATE ' . $collation; - } - - public function columnsEqual(Column $column1, Column $column2): bool - { - if (! parent::columnsEqual($column1, $column2)) { - return false; - } - - return $this->getDefaultValueDeclarationSQL($column1->toArray()) - === $this->getDefaultValueDeclarationSQL($column2->toArray()); - } - - protected function getLikeWildcardCharacters(): string - { - return parent::getLikeWildcardCharacters() . '[]^'; - } - - /** - * Returns a unique default constraint name for a table and column. - * - * @param string $table Name of the table to generate the unique default constraint name for. - * @param string $column Name of the column in the table to generate the unique default constraint name for. - */ - private function generateDefaultConstraintName($table, $column): string - { - return 'DF_' . $this->generateIdentifierName($table) . '_' . $this->generateIdentifierName($column); - } - - /** - * Returns a hash value for a given identifier. - * - * @param string $identifier Identifier to generate a hash value for. - */ - private function generateIdentifierName($identifier): string - { - // Always generate name for unquoted identifiers to ensure consistency. - $identifier = new Identifier($identifier); - - return strtoupper(dechex(crc32($identifier->getName()))); - } - - protected function getCommentOnTableSQL(string $tableName, ?string $comment): string - { - return sprintf( - <<<'SQL' - EXEC sys.sp_addextendedproperty @name=N'MS_Description', - @value=N%s, @level0type=N'SCHEMA', @level0name=N'dbo', - @level1type=N'TABLE', @level1name=N%s - SQL - , - $this->quoteStringLiteral((string) $comment), - $this->quoteStringLiteral($tableName), - ); - } - - /** @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. */ - public function getListTableMetadataSQL(string $table): string - { - return sprintf( - <<<'SQL' - SELECT - p.value AS [table_comment] - FROM - sys.tables AS tbl - INNER JOIN sys.extended_properties AS p ON p.major_id=tbl.object_id AND p.minor_id=0 AND p.class=1 - WHERE - (tbl.name=N%s and SCHEMA_NAME(tbl.schema_id)=N'dbo' and p.name=N'MS_Description') - SQL - , - $this->quoteStringLiteral($table), - ); - } - - /** @param string $query */ - private function shouldAddOrderBy($query): bool - { - // Find the position of the last instance of ORDER BY and ensure it is not within a parenthetical statement - // but can be in a newline - $matches = []; - $matchesCount = preg_match_all('/[\\s]+order\\s+by\\s/im', $query, $matches, PREG_OFFSET_CAPTURE); - if ($matchesCount === 0) { - return true; - } - - // ORDER BY instance may be in a subquery after ORDER BY - // e.g. SELECT col1 FROM test ORDER BY (SELECT col2 from test ORDER BY col2) - // if in the searched query ORDER BY clause was found where - // number of open parentheses after the occurrence of the clause is equal to - // number of closed brackets after the occurrence of the clause, - // it means that ORDER BY is included in the query being checked - while ($matchesCount > 0) { - $orderByPos = $matches[0][--$matchesCount][1]; - $openBracketsCount = substr_count($query, '(', $orderByPos); - $closedBracketsCount = substr_count($query, ')', $orderByPos); - if ($openBracketsCount === $closedBracketsCount) { - return false; - } - } - - return true; - } - - public function createSchemaManager(Connection $connection): SQLServerSchemaManager - { - return new SQLServerSchemaManager($connection, $this); - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/SQLite/Comparator.php b/vendor/doctrine/dbal/src/Platforms/SQLite/Comparator.php deleted file mode 100644 index 5218871c..00000000 --- a/vendor/doctrine/dbal/src/Platforms/SQLite/Comparator.php +++ /dev/null @@ -1,61 +0,0 @@ -normalizeColumns($fromTable), - $this->normalizeColumns($toTable), - ); - } - - /** - * {@inheritDoc} - */ - public function diffTable(Table $fromTable, Table $toTable) - { - return parent::diffTable( - $this->normalizeColumns($fromTable), - $this->normalizeColumns($toTable), - ); - } - - private function normalizeColumns(Table $table): Table - { - $table = clone $table; - - foreach ($table->getColumns() as $column) { - $options = $column->getPlatformOptions(); - - if (! isset($options['collation']) || strcasecmp($options['collation'], 'binary') !== 0) { - continue; - } - - unset($options['collation']); - $column->setPlatformOptions($options); - } - - return $table; - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/SqlitePlatform.php b/vendor/doctrine/dbal/src/Platforms/SqlitePlatform.php deleted file mode 100644 index e35580c7..00000000 --- a/vendor/doctrine/dbal/src/Platforms/SqlitePlatform.php +++ /dev/null @@ -1,1540 +0,0 @@ - 0 THEN INSTR(SUBSTR(' . $str . ', ' . $startPos . '), ' . $substr . ') + ' . $startPos - . ' - 1 ELSE 0 END'; - } - - /** - * {@inheritDoc} - */ - protected function getDateArithmeticIntervalExpression($date, $operator, $interval, $unit) - { - switch ($unit) { - case DateIntervalUnit::SECOND: - case DateIntervalUnit::MINUTE: - case DateIntervalUnit::HOUR: - return 'DATETIME(' . $date . ",'" . $operator . $interval . ' ' . $unit . "')"; - } - - switch ($unit) { - case DateIntervalUnit::WEEK: - $interval *= 7; - $unit = DateIntervalUnit::DAY; - break; - - case DateIntervalUnit::QUARTER: - $interval *= 3; - $unit = DateIntervalUnit::MONTH; - break; - } - - if (! is_numeric($interval)) { - $interval = "' || " . $interval . " || '"; - } - - return 'DATE(' . $date . ",'" . $operator . $interval . ' ' . $unit . "')"; - } - - /** - * {@inheritDoc} - */ - public function getDateDiffExpression($date1, $date2) - { - return sprintf("JULIANDAY(%s, 'start of day') - JULIANDAY(%s, 'start of day')", $date1, $date2); - } - - /** - * {@inheritDoc} - * - * The DBAL doesn't support databases on the SQLite platform. The expression here always returns a fixed string - * as an indicator of an implicitly selected database. - * - * @link https://www.sqlite.org/lang_select.html - * @see Connection::getDatabase() - */ - public function getCurrentDatabaseExpression(): string - { - return "'main'"; - } - - /** @link https://www2.sqlite.org/cvstrac/wiki?p=UnsupportedSql */ - public function createSelectSQLBuilder(): SelectSQLBuilder - { - return new DefaultSelectSQLBuilder($this, null, null); - } - - /** - * {@inheritDoc} - */ - protected function _getTransactionIsolationLevelSQL($level) - { - switch ($level) { - case TransactionIsolationLevel::READ_UNCOMMITTED: - return '0'; - - case TransactionIsolationLevel::READ_COMMITTED: - case TransactionIsolationLevel::REPEATABLE_READ: - case TransactionIsolationLevel::SERIALIZABLE: - return '1'; - - default: - return parent::_getTransactionIsolationLevelSQL($level); - } - } - - /** - * {@inheritDoc} - */ - public function getSetTransactionIsolationSQL($level) - { - return 'PRAGMA read_uncommitted = ' . $this->_getTransactionIsolationLevelSQL($level); - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function prefersIdentityColumns() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/1519', - 'SqlitePlatform::prefersIdentityColumns() is deprecated.', - ); - - return true; - } - - /** - * {@inheritDoc} - */ - public function getBooleanTypeDeclarationSQL(array $column) - { - return 'BOOLEAN'; - } - - /** - * {@inheritDoc} - */ - public function getIntegerTypeDeclarationSQL(array $column) - { - return 'INTEGER' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getBigIntTypeDeclarationSQL(array $column) - { - // SQLite autoincrement is implicit for INTEGER PKs, but not for BIGINT columns - if (! empty($column['autoincrement'])) { - return $this->getIntegerTypeDeclarationSQL($column); - } - - return 'BIGINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * @deprecated Use {@see getSmallIntTypeDeclarationSQL()} instead. - * - * @param array $column - * - * @return string - */ - public function getTinyIntTypeDeclarationSQL(array $column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5511', - '%s is deprecated. Use getSmallIntTypeDeclarationSQL() instead.', - __METHOD__, - ); - - // SQLite autoincrement is implicit for INTEGER PKs, but not for TINYINT columns - if (! empty($column['autoincrement'])) { - return $this->getIntegerTypeDeclarationSQL($column); - } - - return 'TINYINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getSmallIntTypeDeclarationSQL(array $column) - { - // SQLite autoincrement is implicit for INTEGER PKs, but not for SMALLINT columns - if (! empty($column['autoincrement'])) { - return $this->getIntegerTypeDeclarationSQL($column); - } - - return 'SMALLINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * @deprecated Use {@see getIntegerTypeDeclarationSQL()} instead. - * - * @param array $column - * - * @return string - */ - public function getMediumIntTypeDeclarationSQL(array $column) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5511', - '%s is deprecated. Use getIntegerTypeDeclarationSQL() instead.', - __METHOD__, - ); - - // SQLite autoincrement is implicit for INTEGER PKs, but not for MEDIUMINT columns - if (! empty($column['autoincrement'])) { - return $this->getIntegerTypeDeclarationSQL($column); - } - - return 'MEDIUMINT' . $this->_getCommonIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getDateTimeTypeDeclarationSQL(array $column) - { - return 'DATETIME'; - } - - /** - * {@inheritDoc} - */ - public function getDateTypeDeclarationSQL(array $column) - { - return 'DATE'; - } - - /** - * {@inheritDoc} - */ - public function getTimeTypeDeclarationSQL(array $column) - { - return 'TIME'; - } - - /** - * {@inheritDoc} - */ - protected function _getCommonIntegerTypeDeclarationSQL(array $column) - { - // sqlite autoincrement is only possible for the primary key - if (! empty($column['autoincrement'])) { - return ' PRIMARY KEY AUTOINCREMENT'; - } - - return ! empty($column['unsigned']) ? ' UNSIGNED' : ''; - } - - /** - * Disables schema emulation. - * - * Schema emulation is enabled by default to maintain backwards compatibility. - * Disable it to opt-in to the behavior of DBAL 4. - * - * @deprecated Will be removed in DBAL 4.0. - */ - public function disableSchemaEmulation(): void - { - $this->schemaEmulationEnabled = false; - } - - private function emulateSchemaNamespacing(string $tableName): string - { - return $this->schemaEmulationEnabled - ? str_replace('.', '__', $tableName) - : $tableName; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getForeignKeyDeclarationSQL(ForeignKeyConstraint $foreignKey) - { - return parent::getForeignKeyDeclarationSQL(new ForeignKeyConstraint( - $foreignKey->getQuotedLocalColumns($this), - $this->emulateSchemaNamespacing($foreignKey->getQuotedForeignTableName($this)), - $foreignKey->getQuotedForeignColumns($this), - $foreignKey->getName(), - $foreignKey->getOptions(), - )); - } - - /** - * {@inheritDoc} - */ - protected function _getCreateTableSQL($name, array $columns, array $options = []) - { - $name = $this->emulateSchemaNamespacing($name); - $queryFields = $this->getColumnDeclarationListSQL($columns); - - if (isset($options['uniqueConstraints']) && ! empty($options['uniqueConstraints'])) { - foreach ($options['uniqueConstraints'] as $constraintName => $definition) { - $queryFields .= ', ' . $this->getUniqueConstraintDeclarationSQL($constraintName, $definition); - } - } - - $queryFields .= $this->getNonAutoincrementPrimaryKeyDefinition($columns, $options); - - if (isset($options['foreignKeys'])) { - foreach ($options['foreignKeys'] as $foreignKey) { - $queryFields .= ', ' . $this->getForeignKeyDeclarationSQL($foreignKey); - } - } - - $tableComment = ''; - if (isset($options['comment'])) { - $comment = trim($options['comment'], " '"); - - $tableComment = $this->getInlineTableCommentSQL($comment); - } - - $query = ['CREATE TABLE ' . $name . ' ' . $tableComment . '(' . $queryFields . ')']; - - if (isset($options['alter']) && $options['alter'] === true) { - return $query; - } - - if (isset($options['indexes']) && ! empty($options['indexes'])) { - foreach ($options['indexes'] as $indexDef) { - $query[] = $this->getCreateIndexSQL($indexDef, $name); - } - } - - if (isset($options['unique']) && ! empty($options['unique'])) { - foreach ($options['unique'] as $indexDef) { - $query[] = $this->getCreateIndexSQL($indexDef, $name); - } - } - - return $query; - } - - /** - * Generate a PRIMARY KEY definition if no autoincrement value is used - * - * @param mixed[][] $columns - * @param mixed[] $options - */ - private function getNonAutoincrementPrimaryKeyDefinition(array $columns, array $options): string - { - if (empty($options['primary'])) { - return ''; - } - - $keyColumns = array_unique(array_values($options['primary'])); - - foreach ($keyColumns as $keyColumn) { - if (! empty($columns[$keyColumn]['autoincrement'])) { - return ''; - } - } - - return ', PRIMARY KEY(' . implode(', ', $keyColumns) . ')'; - } - - /** - * {@inheritDoc} - */ - protected function getVarcharTypeDeclarationSQLSnippet($length, $fixed) - { - return $fixed ? ($length > 0 ? 'CHAR(' . $length . ')' : 'CHAR(255)') - : ($length > 0 ? 'VARCHAR(' . $length . ')' : 'TEXT'); - } - - /** - * {@inheritDoc} - */ - protected function getBinaryTypeDeclarationSQLSnippet($length, $fixed) - { - return 'BLOB'; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getBinaryMaxLength() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'SqlitePlatform::getBinaryMaxLength() is deprecated.', - ); - - return 0; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getBinaryDefaultLength() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3263', - 'Relying on the default binary column length is deprecated, specify the length explicitly.', - ); - - return 0; - } - - /** - * {@inheritDoc} - */ - public function getClobTypeDeclarationSQL(array $column) - { - return 'CLOB'; - } - - /** - * @deprecated - * - * {@inheritDoc} - */ - public function getListTableConstraintsSQL($table) - { - $table = $this->emulateSchemaNamespacing($table); - - return sprintf( - "SELECT sql FROM sqlite_master WHERE type='index' AND tbl_name = %s AND sql NOT NULL ORDER BY name", - $this->quoteStringLiteral($table), - ); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableColumnsSQL($table, $database = null) - { - $table = $this->emulateSchemaNamespacing($table); - - return sprintf('PRAGMA table_info(%s)', $this->quoteStringLiteral($table)); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTableIndexesSQL($table, $database = null) - { - $table = $this->emulateSchemaNamespacing($table); - - return sprintf('PRAGMA index_list(%s)', $this->quoteStringLiteral($table)); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * {@inheritDoc} - */ - public function getListTablesSQL() - { - return 'SELECT name FROM sqlite_master' - . " WHERE type = 'table'" - . " AND name != 'sqlite_sequence'" - . " AND name != 'geometry_columns'" - . " AND name != 'spatial_ref_sys'" - . ' UNION ALL SELECT name FROM sqlite_temp_master' - . " WHERE type = 'table' ORDER BY name"; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. - */ - public function getListViewsSQL($database) - { - return "SELECT name, sql FROM sqlite_master WHERE type='view' AND sql NOT NULL"; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getAdvancedForeignKeyOptionsSQL(ForeignKeyConstraint $foreignKey) - { - $query = parent::getAdvancedForeignKeyOptionsSQL($foreignKey); - - if (! $foreignKey->hasOption('deferrable') || $foreignKey->getOption('deferrable') === false) { - $query .= ' NOT'; - } - - $query .= ' DEFERRABLE'; - $query .= ' INITIALLY'; - - if ($foreignKey->hasOption('deferred') && $foreignKey->getOption('deferred') !== false) { - $query .= ' DEFERRED'; - } else { - $query .= ' IMMEDIATE'; - } - - return $query; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function supportsCreateDropDatabase() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5513', - '%s is deprecated.', - __METHOD__, - ); - - return false; - } - - /** - * {@inheritDoc} - */ - public function supportsIdentityColumns() - { - return true; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsColumnCollation() - { - return true; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function supportsInlineColumnComments() - { - return true; - } - - /** - * {@inheritDoc} - */ - public function getName() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4749', - 'SqlitePlatform::getName() is deprecated. Identify platforms by their class.', - ); - - return 'sqlite'; - } - - /** - * {@inheritDoc} - */ - public function getTruncateTableSQL($tableName, $cascade = false) - { - $tableIdentifier = new Identifier($tableName); - $tableName = $this->emulateSchemaNamespacing($tableIdentifier->getQuotedName($this)); - - return 'DELETE FROM ' . $tableName; - } - - /** - * User-defined function for Sqlite that is used with PDO::sqliteCreateFunction(). - * - * @deprecated The driver will use {@see sqrt()} in the next major release. - * - * @param int|float $value - * - * @return float - */ - public static function udfSqrt($value) - { - return sqrt($value); - } - - /** - * User-defined function for Sqlite that implements MOD(a, b). - * - * @deprecated The driver will use {@see UserDefinedFunctions::mod()} in the next major release. - * - * @param int $a - * @param int $b - * - * @return int - */ - public static function udfMod($a, $b) - { - return UserDefinedFunctions::mod($a, $b); - } - - /** - * @deprecated The driver will use {@see UserDefinedFunctions::locate()} in the next major release. - * - * @param string $str - * @param string $substr - * @param int $offset - * - * @return int - */ - public static function udfLocate($str, $substr, $offset = 0) - { - return UserDefinedFunctions::locate($str, $substr, $offset); - } - - /** - * {@inheritDoc} - * - * @deprecated This API is not portable. - */ - public function getForUpdateSQL() - { - return ''; - } - - /** - * {@inheritDoc} - * - * @internal The method should be only used from within the {@see AbstractPlatform} class hierarchy. - */ - public function getInlineColumnCommentSQL($comment) - { - return '--' . str_replace("\n", "\n--", $comment) . "\n"; - } - - private function getInlineTableCommentSQL(string $comment): string - { - return $this->getInlineColumnCommentSQL($comment); - } - - /** - * {@inheritDoc} - */ - protected function initializeDoctrineTypeMappings() - { - $this->doctrineTypeMapping = [ - 'bigint' => Types\Types::BIGINT, - 'bigserial' => Types\Types::BIGINT, - 'blob' => Types\Types::BLOB, - 'boolean' => Types\Types::BOOLEAN, - 'char' => Types\Types::STRING, - 'clob' => Types\Types::TEXT, - 'date' => Types\Types::DATE_MUTABLE, - 'datetime' => Types\Types::DATETIME_MUTABLE, - 'decimal' => Types\Types::DECIMAL, - 'double' => Types\Types::FLOAT, - 'double precision' => Types\Types::FLOAT, - 'float' => Types\Types::FLOAT, - 'image' => Types\Types::STRING, - 'int' => Types\Types::INTEGER, - 'integer' => Types\Types::INTEGER, - 'longtext' => Types\Types::TEXT, - 'longvarchar' => Types\Types::STRING, - 'mediumint' => Types\Types::INTEGER, - 'mediumtext' => Types\Types::TEXT, - 'ntext' => Types\Types::STRING, - 'numeric' => Types\Types::DECIMAL, - 'nvarchar' => Types\Types::STRING, - 'real' => Types\Types::FLOAT, - 'serial' => Types\Types::INTEGER, - 'smallint' => Types\Types::SMALLINT, - 'text' => Types\Types::TEXT, - 'time' => Types\Types::TIME_MUTABLE, - 'timestamp' => Types\Types::DATETIME_MUTABLE, - 'tinyint' => Types\Types::BOOLEAN, - 'tinytext' => Types\Types::TEXT, - 'varchar' => Types\Types::STRING, - 'varchar2' => Types\Types::STRING, - ]; - } - - /** - * {@inheritDoc} - * - * @deprecated Implement {@see createReservedKeywordsList()} instead. - */ - protected function getReservedKeywordsClass() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4510', - 'SqlitePlatform::getReservedKeywordsClass() is deprecated,' - . ' use SqlitePlatform::createReservedKeywordsList() instead.', - ); - - return Keywords\SQLiteKeywords::class; - } - - /** - * {@inheritDoc} - */ - protected function getPreAlterTableIndexForeignKeySQL(TableDiff $diff) - { - return []; - } - - /** - * {@inheritDoc} - */ - protected function getPostAlterTableIndexForeignKeySQL(TableDiff $diff) - { - $table = $diff->getOldTable(); - - if (! $table instanceof Table) { - throw new Exception( - 'Sqlite platform requires for alter table the table diff with reference to original table schema', - ); - } - - $sql = []; - $tableName = $diff->getNewName(); - - if ($tableName === false) { - $tableName = $diff->getName($this); - } - - foreach ($this->getIndexesInAlteredTable($diff, $table) as $index) { - if ($index->isPrimary()) { - continue; - } - - $sql[] = $this->getCreateIndexSQL($index, $tableName->getQuotedName($this)); - } - - return $sql; - } - - /** - * {@inheritDoc} - */ - protected function doModifyLimitQuery($query, $limit, $offset) - { - if ($limit === null && $offset > 0) { - return sprintf('%s LIMIT -1 OFFSET %d', $query, $offset); - } - - return parent::doModifyLimitQuery($query, $limit, $offset); - } - - /** - * {@inheritDoc} - */ - public function getBlobTypeDeclarationSQL(array $column) - { - return 'BLOB'; - } - - /** - * {@inheritDoc} - */ - public function getTemporaryTableName($tableName) - { - $tableName = $this->emulateSchemaNamespacing($tableName); - - return $tableName; - } - - /** - * {@inheritDoc} - * - * @deprecated - * - * Sqlite Platform emulates schema by underscoring each dot and generating tables - * into the default database. - * - * This hack is implemented to be able to use SQLite as testdriver when - * using schema supporting databases. - */ - public function canEmulateSchemas() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4805', - 'SqlitePlatform::canEmulateSchemas() is deprecated.', - ); - - return $this->schemaEmulationEnabled; - } - - /** - * {@inheritDoc} - */ - public function getCreateTablesSQL(array $tables): array - { - $sql = []; - - foreach ($tables as $table) { - $sql = array_merge($sql, $this->getCreateTableSQL($table)); - } - - return $sql; - } - - /** - * {@inheritDoc} - */ - public function getCreateIndexSQL(Index $index, $table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this); - } - - $name = $index->getQuotedName($this); - $columns = $index->getColumns(); - - if (strpos($table, '.') !== false) { - [$schema, $table] = explode('.', $table); - $name = $schema . '.' . $name; - } - - if (count($columns) === 0) { - throw new InvalidArgumentException(sprintf( - 'Incomplete or invalid index definition %s on table %s', - $name, - $table, - )); - } - - if ($index->isPrimary()) { - return $this->getCreatePrimaryKeySQL($index, $table); - } - - $query = 'CREATE ' . $this->getCreateIndexSQLFlags($index) . 'INDEX ' . $name . ' ON ' . $table; - $query .= ' (' . $this->getIndexFieldDeclarationListSQL($index) . ')' . $this->getPartialIndexSQL($index); - - return $query; - } - - /** - * {@inheritDoc} - */ - public function getDropTablesSQL(array $tables): array - { - $sql = []; - - foreach ($tables as $table) { - $sql[] = $this->getDropTableSQL($table->getQuotedName($this)); - } - - return $sql; - } - - /** - * {@inheritDoc} - */ - public function getCreatePrimaryKeySQL(Index $index, $table) - { - throw new Exception('Sqlite platform does not support alter primary key.'); - } - - /** - * {@inheritDoc} - */ - public function getCreateForeignKeySQL(ForeignKeyConstraint $foreignKey, $table) - { - throw new Exception('Sqlite platform does not support alter foreign key.'); - } - - /** - * {@inheritDoc} - */ - public function getDropForeignKeySQL($foreignKey, $table) - { - throw new Exception('Sqlite platform does not support alter foreign key.'); - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getCreateConstraintSQL(Constraint $constraint, $table) - { - throw new Exception('Sqlite platform does not support alter constraint.'); - } - - /** - * {@inheritDoc} - * - * @param int|null $createFlags - * @psalm-param int-mask-of|null $createFlags - */ - public function getCreateTableSQL(Table $table, $createFlags = null) - { - $createFlags = $createFlags ?? self::CREATE_INDEXES | self::CREATE_FOREIGNKEYS; - - return parent::getCreateTableSQL($table, $createFlags); - } - - /** - * @deprecated The SQL used for schema introspection is an implementation detail and should not be relied upon. - * - * @param string $table - * @param string|null $database - * - * @return string - */ - public function getListTableForeignKeysSQL($table, $database = null) - { - $table = $this->emulateSchemaNamespacing($table); - - return sprintf('PRAGMA foreign_key_list(%s)', $this->quoteStringLiteral($table)); - } - - /** - * {@inheritDoc} - */ - public function getAlterTableSQL(TableDiff $diff) - { - $sql = $this->getSimpleAlterTableSQL($diff); - if ($sql !== false) { - return $sql; - } - - $table = $diff->getOldTable(); - - if (! $table instanceof Table) { - throw new Exception( - 'Sqlite platform requires for alter table the table diff with reference to original table schema', - ); - } - - $columns = []; - $oldColumnNames = []; - $newColumnNames = []; - $columnSql = []; - - foreach ($table->getColumns() as $columnName => $column) { - $columnName = strtolower($columnName); - $columns[$columnName] = $column; - $oldColumnNames[$columnName] = $newColumnNames[$columnName] = $column->getQuotedName($this); - } - - foreach ($diff->getDroppedColumns() as $column) { - if ($this->onSchemaAlterTableRemoveColumn($column, $diff, $columnSql)) { - continue; - } - - $columnName = strtolower($column->getName()); - if (! isset($columns[$columnName])) { - continue; - } - - unset( - $columns[$columnName], - $oldColumnNames[$columnName], - $newColumnNames[$columnName], - ); - } - - foreach ($diff->getRenamedColumns() as $oldColumnName => $column) { - if ($this->onSchemaAlterTableRenameColumn($oldColumnName, $column, $diff, $columnSql)) { - continue; - } - - $oldColumnName = strtolower($oldColumnName); - - $columns = $this->replaceColumn( - $table->getName(), - $columns, - $oldColumnName, - $column, - ); - - if (! isset($newColumnNames[$oldColumnName])) { - continue; - } - - $newColumnNames[$oldColumnName] = $column->getQuotedName($this); - } - - foreach ($diff->getModifiedColumns() as $columnDiff) { - if ($this->onSchemaAlterTableChangeColumn($columnDiff, $diff, $columnSql)) { - continue; - } - - $oldColumn = $columnDiff->getOldColumn() ?? $columnDiff->getOldColumnName(); - - $oldColumnName = strtolower($oldColumn->getName()); - - $columns = $this->replaceColumn( - $table->getName(), - $columns, - $oldColumnName, - $columnDiff->getNewColumn(), - ); - - if (! isset($newColumnNames[$oldColumnName])) { - continue; - } - - $newColumnNames[$oldColumnName] = $columnDiff->getNewColumn()->getQuotedName($this); - } - - foreach ($diff->getAddedColumns() as $column) { - if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) { - continue; - } - - $columns[strtolower($column->getName())] = $column; - } - - $sql = []; - $tableSql = []; - if (! $this->onSchemaAlterTable($diff, $tableSql)) { - $dataTable = new Table('__temp__' . $table->getName()); - - $newTable = new Table( - $table->getQuotedName($this), - $columns, - $this->getPrimaryIndexInAlteredTable($diff, $table), - [], - $this->getForeignKeysInAlteredTable($diff, $table), - $table->getOptions(), - ); - $newTable->addOption('alter', true); - - $sql = $this->getPreAlterTableIndexForeignKeySQL($diff); - - $sql[] = sprintf( - 'CREATE TEMPORARY TABLE %s AS SELECT %s FROM %s', - $dataTable->getQuotedName($this), - implode(', ', $oldColumnNames), - $table->getQuotedName($this), - ); - $sql[] = $this->getDropTableSQL($table); - - $sql = array_merge($sql, $this->getCreateTableSQL($newTable)); - $sql[] = sprintf( - 'INSERT INTO %s (%s) SELECT %s FROM %s', - $newTable->getQuotedName($this), - implode(', ', $newColumnNames), - implode(', ', $oldColumnNames), - $dataTable->getQuotedName($this), - ); - $sql[] = $this->getDropTableSQL($dataTable->getQuotedName($this)); - - $newName = $diff->getNewName(); - - if ($newName !== false) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5663', - 'Generation of "rename table" SQL using %s is deprecated. Use getRenameTableSQL() instead.', - __METHOD__, - ); - - $sql[] = sprintf( - 'ALTER TABLE %s RENAME TO %s', - $newTable->getQuotedName($this), - $newName->getQuotedName($this), - ); - } - - $sql = array_merge($sql, $this->getPostAlterTableIndexForeignKeySQL($diff)); - } - - return array_merge($sql, $tableSql, $columnSql); - } - - /** - * Replace the column with the given name with the new column. - * - * @param string $tableName - * @param array $columns - * @param string $columnName - * - * @return array - * - * @throws Exception - */ - private function replaceColumn($tableName, array $columns, $columnName, Column $column): array - { - $keys = array_keys($columns); - $index = array_search($columnName, $keys, true); - - if ($index === false) { - throw SchemaException::columnDoesNotExist($columnName, $tableName); - } - - $values = array_values($columns); - - $keys[$index] = strtolower($column->getName()); - $values[$index] = $column; - - return array_combine($keys, $values); - } - - /** - * @return string[]|false - * - * @throws Exception - */ - private function getSimpleAlterTableSQL(TableDiff $diff) - { - // Suppress changes on integer type autoincrement columns. - foreach ($diff->getModifiedColumns() as $columnDiff) { - $oldColumn = $columnDiff->getOldColumn(); - - if ($oldColumn === null) { - continue; - } - - $newColumn = $columnDiff->getNewColumn(); - - if (! $newColumn->getAutoincrement() || ! $newColumn->getType() instanceof IntegerType) { - continue; - } - - $oldColumnName = $oldColumn->getName(); - - if (! $columnDiff->hasTypeChanged() && $columnDiff->hasUnsignedChanged()) { - unset($diff->changedColumns[$oldColumnName]); - - continue; - } - - $fromColumnType = $oldColumn->getType(); - - if (! ($fromColumnType instanceof Types\SmallIntType) && ! ($fromColumnType instanceof Types\BigIntType)) { - continue; - } - - unset($diff->changedColumns[$oldColumnName]); - } - - if ( - count($diff->getModifiedColumns()) > 0 - || count($diff->getDroppedColumns()) > 0 - || count($diff->getRenamedColumns()) > 0 - || count($diff->getAddedIndexes()) > 0 - || count($diff->getModifiedIndexes()) > 0 - || count($diff->getDroppedIndexes()) > 0 - || count($diff->getRenamedIndexes()) > 0 - || count($diff->getAddedForeignKeys()) > 0 - || count($diff->getModifiedForeignKeys()) > 0 - || count($diff->getDroppedForeignKeys()) > 0 - ) { - return false; - } - - $table = $diff->getOldTable() ?? $diff->getName($this); - - $sql = []; - $tableSql = []; - $columnSql = []; - - foreach ($diff->getAddedColumns() as $column) { - if ($this->onSchemaAlterTableAddColumn($column, $diff, $columnSql)) { - continue; - } - - $definition = array_merge([ - 'unique' => null, - 'autoincrement' => null, - 'default' => null, - ], $column->toArray()); - - $type = $definition['type']; - - switch (true) { - case isset($definition['columnDefinition']) || $definition['autoincrement'] || $definition['unique']: - case $type instanceof Types\DateTimeType && $definition['default'] === $this->getCurrentTimestampSQL(): - case $type instanceof Types\DateType && $definition['default'] === $this->getCurrentDateSQL(): - case $type instanceof Types\TimeType && $definition['default'] === $this->getCurrentTimeSQL(): - return false; - } - - $definition['name'] = $column->getQuotedName($this); - if ($type instanceof Types\StringType) { - $definition['length'] ??= 255; - } - - $sql[] = 'ALTER TABLE ' . $table->getQuotedName($this) . ' ADD COLUMN ' - . $this->getColumnDeclarationSQL($definition['name'], $definition); - } - - if (! $this->onSchemaAlterTable($diff, $tableSql)) { - if ($diff->newName !== false) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5663', - 'Generation of SQL that renames a table using %s is deprecated.' - . ' Use getRenameTableSQL() instead.', - __METHOD__, - ); - - $newTable = new Identifier($diff->newName); - - $sql[] = 'ALTER TABLE ' . $table->getQuotedName($this) . ' RENAME TO ' - . $newTable->getQuotedName($this); - } - } - - return array_merge($sql, $tableSql, $columnSql); - } - - /** @return string[] */ - private function getColumnNamesInAlteredTable(TableDiff $diff, Table $fromTable): array - { - $columns = []; - - foreach ($fromTable->getColumns() as $columnName => $column) { - $columns[strtolower($columnName)] = $column->getName(); - } - - foreach ($diff->getDroppedColumns() as $column) { - $columnName = strtolower($column->getName()); - if (! isset($columns[$columnName])) { - continue; - } - - unset($columns[$columnName]); - } - - foreach ($diff->getRenamedColumns() as $oldColumnName => $column) { - $columnName = $column->getName(); - $columns[strtolower($oldColumnName)] = $columnName; - $columns[strtolower($columnName)] = $columnName; - } - - foreach ($diff->getModifiedColumns() as $columnDiff) { - $oldColumn = $columnDiff->getOldColumn() ?? $columnDiff->getOldColumnName(); - - $oldColumnName = $oldColumn->getName(); - $newColumnName = $columnDiff->getNewColumn()->getName(); - $columns[strtolower($oldColumnName)] = $newColumnName; - $columns[strtolower($newColumnName)] = $newColumnName; - } - - foreach ($diff->getAddedColumns() as $column) { - $columnName = $column->getName(); - $columns[strtolower($columnName)] = $columnName; - } - - return $columns; - } - - /** @return Index[] */ - private function getIndexesInAlteredTable(TableDiff $diff, Table $fromTable): array - { - $indexes = $fromTable->getIndexes(); - $columnNames = $this->getColumnNamesInAlteredTable($diff, $fromTable); - - foreach ($indexes as $key => $index) { - foreach ($diff->getRenamedIndexes() as $oldIndexName => $renamedIndex) { - if (strtolower($key) !== strtolower($oldIndexName)) { - continue; - } - - unset($indexes[$key]); - } - - $changed = false; - $indexColumns = []; - foreach ($index->getColumns() as $columnName) { - $normalizedColumnName = strtolower($columnName); - if (! isset($columnNames[$normalizedColumnName])) { - unset($indexes[$key]); - continue 2; - } - - $indexColumns[] = $columnNames[$normalizedColumnName]; - if ($columnName === $columnNames[$normalizedColumnName]) { - continue; - } - - $changed = true; - } - - if (! $changed) { - continue; - } - - $indexes[$key] = new Index( - $index->getName(), - $indexColumns, - $index->isUnique(), - $index->isPrimary(), - $index->getFlags(), - ); - } - - foreach ($diff->getDroppedIndexes() as $index) { - $indexName = strtolower($index->getName()); - if (strlen($indexName) === 0 || ! isset($indexes[$indexName])) { - continue; - } - - unset($indexes[$indexName]); - } - - foreach ( - array_merge( - $diff->getModifiedIndexes(), - $diff->getAddedIndexes(), - $diff->getRenamedIndexes(), - ) as $index - ) { - $indexName = strtolower($index->getName()); - if (strlen($indexName) > 0) { - $indexes[$indexName] = $index; - } else { - $indexes[] = $index; - } - } - - return $indexes; - } - - /** @return ForeignKeyConstraint[] */ - private function getForeignKeysInAlteredTable(TableDiff $diff, Table $fromTable): array - { - $foreignKeys = $fromTable->getForeignKeys(); - $columnNames = $this->getColumnNamesInAlteredTable($diff, $fromTable); - - foreach ($foreignKeys as $key => $constraint) { - $changed = false; - $localColumns = []; - foreach ($constraint->getLocalColumns() as $columnName) { - $normalizedColumnName = strtolower($columnName); - if (! isset($columnNames[$normalizedColumnName])) { - unset($foreignKeys[$key]); - continue 2; - } - - $localColumns[] = $columnNames[$normalizedColumnName]; - if ($columnName === $columnNames[$normalizedColumnName]) { - continue; - } - - $changed = true; - } - - if (! $changed) { - continue; - } - - $foreignKeys[$key] = new ForeignKeyConstraint( - $localColumns, - $constraint->getForeignTableName(), - $constraint->getForeignColumns(), - $constraint->getName(), - $constraint->getOptions(), - ); - } - - foreach ($diff->getDroppedForeignKeys() as $constraint) { - if (! $constraint instanceof ForeignKeyConstraint) { - $constraint = new Identifier($constraint); - } - - $constraintName = strtolower($constraint->getName()); - if (strlen($constraintName) === 0 || ! isset($foreignKeys[$constraintName])) { - continue; - } - - unset($foreignKeys[$constraintName]); - } - - foreach (array_merge($diff->getModifiedForeignKeys(), $diff->getAddedForeignKeys()) as $constraint) { - $constraintName = strtolower($constraint->getName()); - if (strlen($constraintName) > 0) { - $foreignKeys[$constraintName] = $constraint; - } else { - $foreignKeys[] = $constraint; - } - } - - return $foreignKeys; - } - - /** @return Index[] */ - private function getPrimaryIndexInAlteredTable(TableDiff $diff, Table $fromTable): array - { - $primaryIndex = []; - - foreach ($this->getIndexesInAlteredTable($diff, $fromTable) as $index) { - if (! $index->isPrimary()) { - continue; - } - - $primaryIndex = [$index->getName() => $index]; - } - - return $primaryIndex; - } - - public function createSchemaManager(Connection $connection): SqliteSchemaManager - { - return new SqliteSchemaManager($connection, $this); - } -} diff --git a/vendor/doctrine/dbal/src/Platforms/TrimMode.php b/vendor/doctrine/dbal/src/Platforms/TrimMode.php deleted file mode 100644 index 01356c0d..00000000 --- a/vendor/doctrine/dbal/src/Platforms/TrimMode.php +++ /dev/null @@ -1,21 +0,0 @@ -converter = $converter; - } - - public function prepare(string $sql): DriverStatement - { - return new Statement( - parent::prepare($sql), - $this->converter, - ); - } - - public function query(string $sql): DriverResult - { - return new Result( - parent::query($sql), - $this->converter, - ); - } -} diff --git a/vendor/doctrine/dbal/src/Portability/Converter.php b/vendor/doctrine/dbal/src/Portability/Converter.php deleted file mode 100644 index d0503977..00000000 --- a/vendor/doctrine/dbal/src/Portability/Converter.php +++ /dev/null @@ -1,300 +0,0 @@ -createConvertValue($convertEmptyStringToNull, $rightTrimString); - $convertNumeric = $this->createConvertRow($convertValue, null); - $convertAssociative = $this->createConvertRow($convertValue, $case); - - $this->convertNumeric = $this->createConvert($convertNumeric, [self::class, 'id']); - $this->convertAssociative = $this->createConvert($convertAssociative, [self::class, 'id']); - $this->convertOne = $this->createConvert($convertValue, [self::class, 'id']); - - $this->convertAllNumeric = $this->createConvertAll($convertNumeric, [self::class, 'id']); - $this->convertAllAssociative = $this->createConvertAll($convertAssociative, [self::class, 'id']); - $this->convertFirstColumn = $this->createConvertAll($convertValue, [self::class, 'id']); - } - - /** - * @param array|false $row - * - * @return list|false - */ - public function convertNumeric($row) - { - return ($this->convertNumeric)($row); - } - - /** - * @param array|false $row - * - * @return array|false - */ - public function convertAssociative($row) - { - return ($this->convertAssociative)($row); - } - - /** - * @param mixed|false $value - * - * @return mixed|false - */ - public function convertOne($value) - { - return ($this->convertOne)($value); - } - - /** - * @param list> $data - * - * @return list> - */ - public function convertAllNumeric(array $data): array - { - return ($this->convertAllNumeric)($data); - } - - /** - * @param list> $data - * - * @return list> - */ - public function convertAllAssociative(array $data): array - { - return ($this->convertAllAssociative)($data); - } - - /** - * @param list $data - * - * @return list - */ - public function convertFirstColumn(array $data): array - { - return ($this->convertFirstColumn)($data); - } - - /** - * @param T $value - * - * @return T - * - * @template T - */ - private static function id($value) - { - return $value; - } - - /** - * @param T $value - * - * @return T|null - * - * @template T - */ - private static function convertEmptyStringToNull($value) - { - if ($value === '') { - return null; - } - - return $value; - } - - /** - * @param T $value - * - * @return T|string - * @psalm-return (T is string ? string : T) - * - * @template T - */ - private static function rightTrimString($value) - { - if (! is_string($value)) { - return $value; - } - - return rtrim($value); - } - - /** - * Creates a function that will convert each individual value retrieved from the database - * - * @param bool $convertEmptyStringToNull Whether each empty string should be converted to NULL - * @param bool $rightTrimString Whether each string should right-trimmed - * - * @return callable|null The resulting function or NULL if no conversion is needed - */ - private function createConvertValue(bool $convertEmptyStringToNull, bool $rightTrimString): ?callable - { - $functions = []; - - if ($convertEmptyStringToNull) { - $functions[] = [self::class, 'convertEmptyStringToNull']; - } - - if ($rightTrimString) { - $functions[] = [self::class, 'rightTrimString']; - } - - return $this->compose(...$functions); - } - - /** - * Creates a function that will convert each array-row retrieved from the database - * - * @param callable|null $function The function that will convert each value - * @param self::CASE_LOWER|self::CASE_UPPER|null $case Column name case - * - * @return callable|null The resulting function or NULL if no conversion is needed - */ - private function createConvertRow(?callable $function, ?int $case): ?callable - { - $functions = []; - - if ($function !== null) { - $functions[] = $this->createMapper($function); - } - - if ($case !== null) { - $functions[] = static function (array $row) use ($case): array { - return array_change_key_case($row, $case); - }; - } - - return $this->compose(...$functions); - } - - /** - * Creates a function that will be applied to the return value of Statement::fetch*() - * or an identity function if no conversion is needed - * - * @param callable|null $function The function that will convert each tow - * @param callable $id Identity function - */ - private function createConvert(?callable $function, callable $id): callable - { - if ($function === null) { - return $id; - } - - return /** - * @param T $value - * - * @psalm-return (T is false ? false : T) - * - * @template T - */ - static function ($value) use ($function) { - if ($value === false) { - return false; - } - - return $function($value); - }; - } - - /** - * Creates a function that will be applied to the return value of Statement::fetchAll*() - * or an identity function if no transformation is required - * - * @param callable|null $function The function that will transform each value - * @param callable $id Identity function - */ - private function createConvertAll(?callable $function, callable $id): callable - { - if ($function === null) { - return $id; - } - - return $this->createMapper($function); - } - - /** - * Creates a function that maps each value of the array using the given function - * - * @param callable $function The function that maps each value of the array - */ - private function createMapper(callable $function): callable - { - return static function (array $array) use ($function): array { - return array_map($function, $array); - }; - } - - /** - * Creates a composition of the given set of functions - * - * @param callable(T):T ...$functions The functions to compose - * - * @return callable(T):T|null - * - * @template T - */ - private function compose(callable ...$functions): ?callable - { - return array_reduce($functions, static function (?callable $carry, callable $item): callable { - if ($carry === null) { - return $item; - } - - return /** - * @param T $value - * - * @return T - * - * @template T - */ - static function ($value) use ($carry, $item) { - return $item($carry($value)); - }; - }); - } -} diff --git a/vendor/doctrine/dbal/src/Portability/Driver.php b/vendor/doctrine/dbal/src/Portability/Driver.php deleted file mode 100644 index a5ac9679..00000000 --- a/vendor/doctrine/dbal/src/Portability/Driver.php +++ /dev/null @@ -1,83 +0,0 @@ -mode = $mode; - $this->case = $case; - } - - /** - * {@inheritDoc} - */ - public function connect( - #[SensitiveParameter] - array $params - ) { - $connection = parent::connect($params); - - $portability = (new OptimizeFlags())( - $this->getDatabasePlatform(), - $this->mode, - ); - - $case = null; - - if ($this->case !== 0 && ($portability & Connection::PORTABILITY_FIX_CASE) !== 0) { - $nativeConnection = null; - if (method_exists($connection, 'getNativeConnection')) { - try { - $nativeConnection = $connection->getNativeConnection(); - } catch (LogicException $e) { - } - } - - if ($nativeConnection instanceof PDO) { - $portability &= ~Connection::PORTABILITY_FIX_CASE; - $nativeConnection->setAttribute( - PDO::ATTR_CASE, - $this->case === ColumnCase::LOWER ? PDO::CASE_LOWER : PDO::CASE_UPPER, - ); - } else { - $case = $this->case === ColumnCase::LOWER ? Converter::CASE_LOWER : Converter::CASE_UPPER; - } - } - - $convertEmptyStringToNull = ($portability & Connection::PORTABILITY_EMPTY_TO_NULL) !== 0; - $rightTrimString = ($portability & Connection::PORTABILITY_RTRIM) !== 0; - - if (! $convertEmptyStringToNull && ! $rightTrimString && $case === null) { - return $connection; - } - - return new Connection( - $connection, - new Converter($convertEmptyStringToNull, $rightTrimString, $case), - ); - } -} diff --git a/vendor/doctrine/dbal/src/Portability/Middleware.php b/vendor/doctrine/dbal/src/Portability/Middleware.php deleted file mode 100644 index fae2c556..00000000 --- a/vendor/doctrine/dbal/src/Portability/Middleware.php +++ /dev/null @@ -1,38 +0,0 @@ -mode = $mode; - $this->case = $case; - } - - public function wrap(DriverInterface $driver): DriverInterface - { - if ($this->mode !== 0) { - return new Driver($driver, $this->mode, $this->case); - } - - return $driver; - } -} diff --git a/vendor/doctrine/dbal/src/Portability/OptimizeFlags.php b/vendor/doctrine/dbal/src/Portability/OptimizeFlags.php deleted file mode 100644 index 884a936c..00000000 --- a/vendor/doctrine/dbal/src/Portability/OptimizeFlags.php +++ /dev/null @@ -1,42 +0,0 @@ - - */ - private static array $platforms = [ - DB2Platform::class => 0, - OraclePlatform::class => Connection::PORTABILITY_EMPTY_TO_NULL, - PostgreSQLPlatform::class => 0, - SqlitePlatform::class => 0, - SQLServerPlatform::class => 0, - ]; - - public function __invoke(AbstractPlatform $platform, int $flags): int - { - foreach (self::$platforms as $class => $mask) { - if ($platform instanceof $class) { - $flags &= ~$mask; - - break; - } - } - - return $flags; - } -} diff --git a/vendor/doctrine/dbal/src/Portability/Result.php b/vendor/doctrine/dbal/src/Portability/Result.php deleted file mode 100644 index da1eca98..00000000 --- a/vendor/doctrine/dbal/src/Portability/Result.php +++ /dev/null @@ -1,81 +0,0 @@ -converter = $converter; - } - - /** - * {@inheritDoc} - */ - public function fetchNumeric() - { - return $this->converter->convertNumeric( - parent::fetchNumeric(), - ); - } - - /** - * {@inheritDoc} - */ - public function fetchAssociative() - { - return $this->converter->convertAssociative( - parent::fetchAssociative(), - ); - } - - /** - * {@inheritDoc} - */ - public function fetchOne() - { - return $this->converter->convertOne( - parent::fetchOne(), - ); - } - - /** - * {@inheritDoc} - */ - public function fetchAllNumeric(): array - { - return $this->converter->convertAllNumeric( - parent::fetchAllNumeric(), - ); - } - - /** - * {@inheritDoc} - */ - public function fetchAllAssociative(): array - { - return $this->converter->convertAllAssociative( - parent::fetchAllAssociative(), - ); - } - - /** - * {@inheritDoc} - */ - public function fetchFirstColumn(): array - { - return $this->converter->convertFirstColumn( - parent::fetchFirstColumn(), - ); - } -} diff --git a/vendor/doctrine/dbal/src/Portability/Statement.php b/vendor/doctrine/dbal/src/Portability/Statement.php deleted file mode 100644 index 8fcd79d4..00000000 --- a/vendor/doctrine/dbal/src/Portability/Statement.php +++ /dev/null @@ -1,36 +0,0 @@ -Statement and applies portability measures. - */ - public function __construct(DriverStatement $stmt, Converter $converter) - { - parent::__construct($stmt); - - $this->converter = $converter; - } - - /** - * {@inheritDoc} - */ - public function execute($params = null): ResultInterface - { - return new Result( - parent::execute($params), - $this->converter, - ); - } -} diff --git a/vendor/doctrine/dbal/src/Query.php b/vendor/doctrine/dbal/src/Query.php deleted file mode 100644 index bfc9b14e..00000000 --- a/vendor/doctrine/dbal/src/Query.php +++ /dev/null @@ -1,64 +0,0 @@ - - */ - private array $params; - - /** - * The types of the parameters bound to the query. - * - * @var array - */ - private array $types; - - /** - * @param array $params - * @param array $types - * - * @psalm-suppress ImpurePropertyAssignment - */ - public function __construct(string $sql, array $params, array $types) - { - $this->sql = $sql; - $this->params = $params; - $this->types = $types; - } - - public function getSQL(): string - { - return $this->sql; - } - - /** @return array */ - public function getParams(): array - { - return $this->params; - } - - /** @return array */ - public function getTypes(): array - { - return $this->types; - } -} diff --git a/vendor/doctrine/dbal/src/Query/Expression/CompositeExpression.php b/vendor/doctrine/dbal/src/Query/Expression/CompositeExpression.php deleted file mode 100644 index 4cad8ec1..00000000 --- a/vendor/doctrine/dbal/src/Query/Expression/CompositeExpression.php +++ /dev/null @@ -1,183 +0,0 @@ -type = $type; - - $this->addMultiple($parts); - - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3864', - 'Do not use CompositeExpression constructor directly, use static and() and or() factory methods.', - ); - } - - /** - * @param self|string $part - * @param self|string ...$parts - */ - public static function and($part, ...$parts): self - { - return new self(self::TYPE_AND, array_merge([$part], $parts)); - } - - /** - * @param self|string $part - * @param self|string ...$parts - */ - public static function or($part, ...$parts): self - { - return new self(self::TYPE_OR, array_merge([$part], $parts)); - } - - /** - * Adds multiple parts to composite expression. - * - * @deprecated This class will be made immutable. Use with() instead. - * - * @param self[]|string[] $parts - * - * @return CompositeExpression - */ - public function addMultiple(array $parts = []) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3844', - 'CompositeExpression::addMultiple() is deprecated, use CompositeExpression::with() instead.', - ); - - foreach ($parts as $part) { - $this->add($part); - } - - return $this; - } - - /** - * Adds an expression to composite expression. - * - * @deprecated This class will be made immutable. Use with() instead. - * - * @param mixed $part - * - * @return CompositeExpression - */ - public function add($part) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3844', - 'CompositeExpression::add() is deprecated, use CompositeExpression::with() instead.', - ); - - if ($part === null) { - return $this; - } - - if ($part instanceof self && count($part) === 0) { - return $this; - } - - $this->parts[] = $part; - - return $this; - } - - /** - * Returns a new CompositeExpression with the given parts added. - * - * @param self|string $part - * @param self|string ...$parts - */ - public function with($part, ...$parts): self - { - $that = clone $this; - - $that->parts = array_merge($that->parts, [$part], $parts); - - return $that; - } - - /** - * Retrieves the amount of expressions on composite expression. - * - * @return int - * @psalm-return int<0, max> - */ - #[ReturnTypeWillChange] - public function count() - { - return count($this->parts); - } - - /** - * Retrieves the string representation of this composite expression. - * - * @return string - */ - public function __toString() - { - if ($this->count() === 1) { - return (string) $this->parts[0]; - } - - return '(' . implode(') ' . $this->type . ' (', $this->parts) . ')'; - } - - /** - * Returns the type of this composite expression (AND/OR). - * - * @return string - */ - public function getType() - { - return $this->type; - } -} diff --git a/vendor/doctrine/dbal/src/Query/Expression/ExpressionBuilder.php b/vendor/doctrine/dbal/src/Query/Expression/ExpressionBuilder.php deleted file mode 100644 index d532b289..00000000 --- a/vendor/doctrine/dbal/src/Query/Expression/ExpressionBuilder.php +++ /dev/null @@ -1,323 +0,0 @@ -'; - public const LT = '<'; - public const LTE = '<='; - public const GT = '>'; - public const GTE = '>='; - - /** - * The DBAL Connection. - */ - private Connection $connection; - - /** - * Initializes a new ExpressionBuilder. - * - * @param Connection $connection The DBAL Connection. - */ - public function __construct(Connection $connection) - { - $this->connection = $connection; - } - - /** - * Creates a conjunction of the given expressions. - * - * @param string|CompositeExpression $expression - * @param string|CompositeExpression ...$expressions - */ - public function and($expression, ...$expressions): CompositeExpression - { - return CompositeExpression::and($expression, ...$expressions); - } - - /** - * Creates a disjunction of the given expressions. - * - * @param string|CompositeExpression $expression - * @param string|CompositeExpression ...$expressions - */ - public function or($expression, ...$expressions): CompositeExpression - { - return CompositeExpression::or($expression, ...$expressions); - } - - /** - * @deprecated Use `and()` instead. - * - * @param mixed $x Optional clause. Defaults = null, but requires - * at least one defined when converting to string. - * - * @return CompositeExpression - */ - public function andX($x = null) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3851', - 'ExpressionBuilder::andX() is deprecated, use ExpressionBuilder::and() instead.', - ); - - return new CompositeExpression(CompositeExpression::TYPE_AND, func_get_args()); - } - - /** - * @deprecated Use `or()` instead. - * - * @param mixed $x Optional clause. Defaults = null, but requires - * at least one defined when converting to string. - * - * @return CompositeExpression - */ - public function orX($x = null) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/3851', - 'ExpressionBuilder::orX() is deprecated, use ExpressionBuilder::or() instead.', - ); - - return new CompositeExpression(CompositeExpression::TYPE_OR, func_get_args()); - } - - /** - * Creates a comparison expression. - * - * @param mixed $x The left expression. - * @param string $operator One of the ExpressionBuilder::* constants. - * @param mixed $y The right expression. - * - * @return string - */ - public function comparison($x, $operator, $y) - { - return $x . ' ' . $operator . ' ' . $y; - } - - /** - * Creates an equality comparison expression with the given arguments. - * - * First argument is considered the left expression and the second is the right expression. - * When converted to string, it will generated a = . Example: - * - * [php] - * // u.id = ? - * $expr->eq('u.id', '?'); - * - * @param mixed $x The left expression. - * @param mixed $y The right expression. - * - * @return string - */ - public function eq($x, $y) - { - return $this->comparison($x, self::EQ, $y); - } - - /** - * Creates a non equality comparison expression with the given arguments. - * First argument is considered the left expression and the second is the right expression. - * When converted to string, it will generated a <> . Example: - * - * [php] - * // u.id <> 1 - * $q->where($q->expr()->neq('u.id', '1')); - * - * @param mixed $x The left expression. - * @param mixed $y The right expression. - * - * @return string - */ - public function neq($x, $y) - { - return $this->comparison($x, self::NEQ, $y); - } - - /** - * Creates a lower-than comparison expression with the given arguments. - * First argument is considered the left expression and the second is the right expression. - * When converted to string, it will generated a < . Example: - * - * [php] - * // u.id < ? - * $q->where($q->expr()->lt('u.id', '?')); - * - * @param mixed $x The left expression. - * @param mixed $y The right expression. - * - * @return string - */ - public function lt($x, $y) - { - return $this->comparison($x, self::LT, $y); - } - - /** - * Creates a lower-than-equal comparison expression with the given arguments. - * First argument is considered the left expression and the second is the right expression. - * When converted to string, it will generated a <= . Example: - * - * [php] - * // u.id <= ? - * $q->where($q->expr()->lte('u.id', '?')); - * - * @param mixed $x The left expression. - * @param mixed $y The right expression. - * - * @return string - */ - public function lte($x, $y) - { - return $this->comparison($x, self::LTE, $y); - } - - /** - * Creates a greater-than comparison expression with the given arguments. - * First argument is considered the left expression and the second is the right expression. - * When converted to string, it will generated a > . Example: - * - * [php] - * // u.id > ? - * $q->where($q->expr()->gt('u.id', '?')); - * - * @param mixed $x The left expression. - * @param mixed $y The right expression. - * - * @return string - */ - public function gt($x, $y) - { - return $this->comparison($x, self::GT, $y); - } - - /** - * Creates a greater-than-equal comparison expression with the given arguments. - * First argument is considered the left expression and the second is the right expression. - * When converted to string, it will generated a >= . Example: - * - * [php] - * // u.id >= ? - * $q->where($q->expr()->gte('u.id', '?')); - * - * @param mixed $x The left expression. - * @param mixed $y The right expression. - * - * @return string - */ - public function gte($x, $y) - { - return $this->comparison($x, self::GTE, $y); - } - - /** - * Creates an IS NULL expression with the given arguments. - * - * @param string $x The expression to be restricted by IS NULL. - * - * @return string - */ - public function isNull($x) - { - return $x . ' IS NULL'; - } - - /** - * Creates an IS NOT NULL expression with the given arguments. - * - * @param string $x The expression to be restricted by IS NOT NULL. - * - * @return string - */ - public function isNotNull($x) - { - return $x . ' IS NOT NULL'; - } - - /** - * Creates a LIKE() comparison expression with the given arguments. - * - * @param string $x The expression to be inspected by the LIKE comparison - * @param mixed $y The pattern to compare against - * - * @return string - */ - public function like($x, $y/*, ?string $escapeChar = null */) - { - return $this->comparison($x, 'LIKE', $y) . - (func_num_args() >= 3 ? sprintf(' ESCAPE %s', func_get_arg(2)) : ''); - } - - /** - * Creates a NOT LIKE() comparison expression with the given arguments. - * - * @param string $x The expression to be inspected by the NOT LIKE comparison - * @param mixed $y The pattern to compare against - * - * @return string - */ - public function notLike($x, $y/*, ?string $escapeChar = null */) - { - return $this->comparison($x, 'NOT LIKE', $y) . - (func_num_args() >= 3 ? sprintf(' ESCAPE %s', func_get_arg(2)) : ''); - } - - /** - * Creates an IN () comparison expression with the given arguments. - * - * @param string $x The SQL expression to be matched against the set. - * @param string|string[] $y The SQL expression or an array of SQL expressions representing the set. - * - * @return string - */ - public function in($x, $y) - { - return $this->comparison($x, 'IN', '(' . implode(', ', (array) $y) . ')'); - } - - /** - * Creates a NOT IN () comparison expression with the given arguments. - * - * @param string $x The SQL expression to be matched against the set. - * @param string|string[] $y The SQL expression or an array of SQL expressions representing the set. - * - * @return string - */ - public function notIn($x, $y) - { - return $this->comparison($x, 'NOT IN', '(' . implode(', ', (array) $y) . ')'); - } - - /** - * Builds an SQL literal from a given input parameter. - * - * The usage of this method is discouraged. Use prepared statements - * or {@see AbstractPlatform::quoteStringLiteral()} instead. - * - * @param mixed $input The parameter to be quoted. - * @param int|null $type The type of the parameter. - * - * @return string - */ - public function literal($input, $type = null) - { - return $this->connection->quote($input, $type); - } -} diff --git a/vendor/doctrine/dbal/src/Query/ForUpdate.php b/vendor/doctrine/dbal/src/Query/ForUpdate.php deleted file mode 100644 index fe54df90..00000000 --- a/vendor/doctrine/dbal/src/Query/ForUpdate.php +++ /dev/null @@ -1,21 +0,0 @@ -conflictResolutionMode = $conflictResolutionMode; - } - - public function getConflictResolutionMode(): int - { - return $this->conflictResolutionMode; - } -} diff --git a/vendor/doctrine/dbal/src/Query/ForUpdate/ConflictResolutionMode.php b/vendor/doctrine/dbal/src/Query/ForUpdate/ConflictResolutionMode.php deleted file mode 100644 index f968f7b9..00000000 --- a/vendor/doctrine/dbal/src/Query/ForUpdate/ConflictResolutionMode.php +++ /dev/null @@ -1,27 +0,0 @@ -maxResults = $maxResults; - $this->firstResult = $firstResult; - } - - public function isDefined(): bool - { - return $this->maxResults !== null || $this->firstResult !== 0; - } - - public function getMaxResults(): ?int - { - return $this->maxResults; - } - - public function getFirstResult(): int - { - return $this->firstResult; - } -} diff --git a/vendor/doctrine/dbal/src/Query/QueryBuilder.php b/vendor/doctrine/dbal/src/Query/QueryBuilder.php deleted file mode 100644 index f099e756..00000000 --- a/vendor/doctrine/dbal/src/Query/QueryBuilder.php +++ /dev/null @@ -1,1759 +0,0 @@ - [], - 'distinct' => false, - 'from' => [], - 'join' => [], - 'set' => [], - 'where' => null, - 'groupBy' => [], - 'having' => null, - 'orderBy' => [], - 'values' => [], - 'for_update' => null, - ]; - - /** - * The array of SQL parts collected. - * - * @var mixed[] - */ - private array $sqlParts = self::SQL_PARTS_DEFAULTS; - - /** - * The complete SQL string for this query. - */ - private ?string $sql = null; - - /** - * The query parameters. - * - * @var list|array - */ - private $params = []; - - /** - * The parameter type map of this query. - * - * @var array|array - */ - private array $paramTypes = []; - - /** - * The type of query this is. Can be select, update or delete. - * - * @psalm-var self::SELECT|self::DELETE|self::UPDATE|self::INSERT - */ - private int $type = self::SELECT; - - /** - * The state of the query object. Can be dirty or clean. - * - * @psalm-var self::STATE_* - */ - private int $state = self::STATE_CLEAN; - - /** - * The index of the first result to retrieve. - */ - private int $firstResult = 0; - - /** - * The maximum number of results to retrieve or NULL to retrieve all results. - */ - private ?int $maxResults = null; - - /** - * The counter of bound parameters used with {@see bindValue). - */ - private int $boundCounter = 0; - - /** - * The query cache profile used for caching results. - */ - private ?QueryCacheProfile $resultCacheProfile = null; - - /** - * Initializes a new QueryBuilder. - * - * @param Connection $connection The DBAL Connection. - */ - public function __construct(Connection $connection) - { - $this->connection = $connection; - } - - /** - * Gets an ExpressionBuilder used for object-oriented construction of query expressions. - * This producer method is intended for convenient inline usage. Example: - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u') - * ->from('users', 'u') - * ->where($qb->expr()->eq('u.id', 1)); - * - * - * For more complex expression construction, consider storing the expression - * builder object in a local variable. - * - * @return ExpressionBuilder - */ - public function expr() - { - return $this->connection->getExpressionBuilder(); - } - - /** - * Gets the type of the currently built query. - * - * @deprecated If necessary, track the type of the query being built outside of the builder. - * - * @return int - */ - public function getType() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5551', - 'Relying on the type of the query being built is deprecated.' - . ' If necessary, track the type of the query being built outside of the builder.', - ); - - return $this->type; - } - - /** - * Gets the associated DBAL Connection for this query builder. - * - * @deprecated Use the connection used to instantiate the builder instead. - * - * @return Connection - */ - public function getConnection() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5780', - '%s is deprecated. Use the connection used to instantiate the builder instead.', - __METHOD__, - ); - - return $this->connection; - } - - /** - * Gets the state of this query builder instance. - * - * @deprecated The builder state is an internal concern. - * - * @return int Either QueryBuilder::STATE_DIRTY or QueryBuilder::STATE_CLEAN. - * @psalm-return self::STATE_* - */ - public function getState() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5551', - 'Relying on the query builder state is deprecated as it is an internal concern.', - ); - - return $this->state; - } - - /** - * Prepares and executes an SQL query and returns the first row of the result - * as an associative array. - * - * @return array|false False is returned if no rows are found. - * - * @throws Exception - */ - public function fetchAssociative() - { - return $this->executeQuery()->fetchAssociative(); - } - - /** - * Prepares and executes an SQL query and returns the first row of the result - * as a numerically indexed array. - * - * @return array|false False is returned if no rows are found. - * - * @throws Exception - */ - public function fetchNumeric() - { - return $this->executeQuery()->fetchNumeric(); - } - - /** - * Prepares and executes an SQL query and returns the value of a single column - * of the first row of the result. - * - * @return mixed|false False is returned if no rows are found. - * - * @throws Exception - */ - public function fetchOne() - { - return $this->executeQuery()->fetchOne(); - } - - /** - * Prepares and executes an SQL query and returns the result as an array of numeric arrays. - * - * @return array> - * - * @throws Exception - */ - public function fetchAllNumeric(): array - { - return $this->executeQuery()->fetchAllNumeric(); - } - - /** - * Prepares and executes an SQL query and returns the result as an array of associative arrays. - * - * @return array> - * - * @throws Exception - */ - public function fetchAllAssociative(): array - { - return $this->executeQuery()->fetchAllAssociative(); - } - - /** - * Prepares and executes an SQL query and returns the result as an associative array with the keys - * mapped to the first column and the values mapped to the second column. - * - * @return array - * - * @throws Exception - */ - public function fetchAllKeyValue(): array - { - return $this->executeQuery()->fetchAllKeyValue(); - } - - /** - * Prepares and executes an SQL query and returns the result as an associative array with the keys mapped - * to the first column and the values being an associative array representing the rest of the columns - * and their values. - * - * @return array> - * - * @throws Exception - */ - public function fetchAllAssociativeIndexed(): array - { - return $this->executeQuery()->fetchAllAssociativeIndexed(); - } - - /** - * Prepares and executes an SQL query and returns the result as an array of the first column values. - * - * @return array - * - * @throws Exception - */ - public function fetchFirstColumn(): array - { - return $this->executeQuery()->fetchFirstColumn(); - } - - /** - * Executes an SQL query (SELECT) and returns a Result. - * - * @throws Exception - */ - public function executeQuery(): Result - { - return $this->connection->executeQuery( - $this->getSQL(), - $this->params, - $this->paramTypes, - $this->resultCacheProfile, - ); - } - - /** - * Executes an SQL statement and returns the number of affected rows. - * - * Should be used for INSERT, UPDATE and DELETE - * - * @return int The number of affected rows. - * - * @throws Exception - */ - public function executeStatement(): int - { - return $this->connection->executeStatement($this->getSQL(), $this->params, $this->paramTypes); - } - - /** - * Executes this query using the bound parameters and their types. - * - * @deprecated Use {@see executeQuery()} or {@see executeStatement()} instead. - * - * @return Result|int|string - * - * @throws Exception - */ - public function execute() - { - if ($this->type === self::SELECT) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4578', - 'QueryBuilder::execute() is deprecated, use QueryBuilder::executeQuery() for SQL queries instead.', - ); - - return $this->executeQuery(); - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4578', - 'QueryBuilder::execute() is deprecated, use QueryBuilder::executeStatement() for SQL statements instead.', - ); - - return $this->connection->executeStatement($this->getSQL(), $this->params, $this->paramTypes); - } - - /** - * Gets the complete SQL string formed by the current specifications of this QueryBuilder. - * - * - * $qb = $em->createQueryBuilder() - * ->select('u') - * ->from('User', 'u') - * echo $qb->getSQL(); // SELECT u FROM User u - * - * - * @return string The SQL query string. - */ - public function getSQL() - { - if ($this->sql !== null && $this->state === self::STATE_CLEAN) { - return $this->sql; - } - - switch ($this->type) { - case self::INSERT: - $sql = $this->getSQLForInsert(); - break; - - case self::DELETE: - $sql = $this->getSQLForDelete(); - break; - - case self::UPDATE: - $sql = $this->getSQLForUpdate(); - break; - - case self::SELECT: - $sql = $this->getSQLForSelect(); - break; - } - - $this->state = self::STATE_CLEAN; - $this->sql = $sql; - - return $sql; - } - - /** - * Sets a query parameter for the query being constructed. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u') - * ->from('users', 'u') - * ->where('u.id = :user_id') - * ->setParameter('user_id', 1); - * - * - * @param int|string $key Parameter position or name - * @param mixed $value Parameter value - * @param int|string|Type|null $type Parameter type - * - * @return $this This QueryBuilder instance. - */ - public function setParameter($key, $value, $type = ParameterType::STRING) - { - if ($type !== null) { - $this->paramTypes[$key] = $type; - } else { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5550', - 'Using NULL as prepared statement parameter type is deprecated.' - . 'Omit or use ParameterType::STRING instead', - ); - } - - $this->params[$key] = $value; - - return $this; - } - - /** - * Sets a collection of query parameters for the query being constructed. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u') - * ->from('users', 'u') - * ->where('u.id = :user_id1 OR u.id = :user_id2') - * ->setParameters(array( - * 'user_id1' => 1, - * 'user_id2' => 2 - * )); - * - * - * @param list|array $params Parameters to set - * @param array|array $types Parameter types - * - * @return $this This QueryBuilder instance. - */ - public function setParameters(array $params, array $types = []) - { - $this->paramTypes = $types; - $this->params = $params; - - return $this; - } - - /** - * Gets all defined query parameters for the query being constructed indexed by parameter index or name. - * - * @return list|array The currently defined query parameters - */ - public function getParameters() - { - return $this->params; - } - - /** - * Gets a (previously set) query parameter of the query being constructed. - * - * @param mixed $key The key (index or name) of the bound parameter. - * - * @return mixed The value of the bound parameter. - */ - public function getParameter($key) - { - return $this->params[$key] ?? null; - } - - /** - * Gets all defined query parameter types for the query being constructed indexed by parameter index or name. - * - * @return array|array The currently defined - * query parameter types - */ - public function getParameterTypes() - { - return $this->paramTypes; - } - - /** - * Gets a (previously set) query parameter type of the query being constructed. - * - * @param int|string $key The key of the bound parameter type - * - * @return int|string|Type The value of the bound parameter type - */ - public function getParameterType($key) - { - return $this->paramTypes[$key] ?? ParameterType::STRING; - } - - /** - * Sets the position of the first result to retrieve (the "offset"). - * - * @param int $firstResult The first result to return. - * - * @return $this This QueryBuilder instance. - */ - public function setFirstResult($firstResult) - { - $this->state = self::STATE_DIRTY; - $this->firstResult = $firstResult; - - return $this; - } - - /** - * Gets the position of the first result the query object was set to retrieve (the "offset"). - * - * @return int The position of the first result. - */ - public function getFirstResult() - { - return $this->firstResult; - } - - /** - * Sets the maximum number of results to retrieve (the "limit"). - * - * @param int|null $maxResults The maximum number of results to retrieve or NULL to retrieve all results. - * - * @return $this This QueryBuilder instance. - */ - public function setMaxResults($maxResults) - { - $this->state = self::STATE_DIRTY; - $this->maxResults = $maxResults; - - return $this; - } - - /** - * Gets the maximum number of results the query object was set to retrieve (the "limit"). - * Returns NULL if all results will be returned. - * - * @return int|null The maximum number of results. - */ - public function getMaxResults() - { - return $this->maxResults; - } - - /** - * Locks the queried rows for a subsequent update. - * - * @return $this - */ - public function forUpdate(int $conflictResolutionMode = ConflictResolutionMode::ORDINARY): self - { - $this->state = self::STATE_DIRTY; - - $this->sqlParts['for_update'] = new ForUpdate($conflictResolutionMode); - - return $this; - } - - /** - * Either appends to or replaces a single, generic query part. - * - * The available parts are: 'select', 'from', 'set', 'where', - * 'groupBy', 'having' and 'orderBy'. - * - * @param string $sqlPartName - * @param mixed $sqlPart - * @param bool $append - * - * @return $this This QueryBuilder instance. - */ - public function add($sqlPartName, $sqlPart, $append = false) - { - $isArray = is_array($sqlPart); - $isMultiple = is_array($this->sqlParts[$sqlPartName]); - - if ($isMultiple && ! $isArray) { - $sqlPart = [$sqlPart]; - } - - $this->state = self::STATE_DIRTY; - - if ($append) { - if ( - $sqlPartName === 'orderBy' - || $sqlPartName === 'groupBy' - || $sqlPartName === 'select' - || $sqlPartName === 'set' - ) { - foreach ($sqlPart as $part) { - $this->sqlParts[$sqlPartName][] = $part; - } - } elseif ($isArray && is_array($sqlPart[key($sqlPart)])) { - $key = key($sqlPart); - $this->sqlParts[$sqlPartName][$key][] = $sqlPart[$key]; - } elseif ($isMultiple) { - $this->sqlParts[$sqlPartName][] = $sqlPart; - } else { - $this->sqlParts[$sqlPartName] = $sqlPart; - } - - return $this; - } - - $this->sqlParts[$sqlPartName] = $sqlPart; - - return $this; - } - - /** - * Specifies an item that is to be returned in the query result. - * Replaces any previously specified selections, if any. - * - * USING AN ARRAY ARGUMENT IS DEPRECATED. Pass each value as an individual argument. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.id', 'p.id') - * ->from('users', 'u') - * ->leftJoin('u', 'phonenumbers', 'p', 'u.id = p.user_id'); - * - * - * @param string|string[]|null $select The selection expression. USING AN ARRAY OR NULL IS DEPRECATED. - * Pass each value as an individual argument. - * - * @return $this This QueryBuilder instance. - */ - public function select($select = null/*, string ...$selects*/) - { - $this->type = self::SELECT; - - if ($select === null) { - return $this; - } - - if (is_array($select)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3837', - 'Passing an array for the first argument to QueryBuilder::select() is deprecated, ' . - 'pass each value as an individual variadic argument instead.', - ); - } - - $selects = is_array($select) ? $select : func_get_args(); - - return $this->add('select', $selects); - } - - /** - * Adds or removes DISTINCT to/from the query. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.id') - * ->distinct() - * ->from('users', 'u') - * - * - * @return $this This QueryBuilder instance. - */ - public function distinct(/* bool $distinct = true */): self - { - $this->sqlParts['distinct'] = func_num_args() < 1 || func_get_arg(0); - $this->state = self::STATE_DIRTY; - - return $this; - } - - /** - * Adds an item that is to be returned in the query result. - * - * USING AN ARRAY ARGUMENT IS DEPRECATED. Pass each value as an individual argument. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.id') - * ->addSelect('p.id') - * ->from('users', 'u') - * ->leftJoin('u', 'phonenumbers', 'u.id = p.user_id'); - * - * - * @param string|string[]|null $select The selection expression. USING AN ARRAY OR NULL IS DEPRECATED. - * Pass each value as an individual argument. - * - * @return $this This QueryBuilder instance. - */ - public function addSelect($select = null/*, string ...$selects*/) - { - $this->type = self::SELECT; - - if ($select === null) { - return $this; - } - - if (is_array($select)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3837', - 'Passing an array for the first argument to QueryBuilder::addSelect() is deprecated, ' . - 'pass each value as an individual variadic argument instead.', - ); - } - - $selects = is_array($select) ? $select : func_get_args(); - - return $this->add('select', $selects, true); - } - - /** - * Turns the query being built into a bulk delete query that ranges over - * a certain table. - * - * - * $qb = $conn->createQueryBuilder() - * ->delete('users', 'u') - * ->where('u.id = :user_id') - * ->setParameter(':user_id', 1); - * - * - * @param string $delete The table whose rows are subject to the deletion. - * @param string $alias The table alias used in the constructed query. - * - * @return $this This QueryBuilder instance. - */ - public function delete($delete = null, $alias = null) - { - $this->type = self::DELETE; - - if ($delete === null) { - return $this; - } - - return $this->add('from', [ - 'table' => $delete, - 'alias' => $alias, - ]); - } - - /** - * Turns the query being built into a bulk update query that ranges over - * a certain table - * - * - * $qb = $conn->createQueryBuilder() - * ->update('counters', 'c') - * ->set('c.value', 'c.value + 1') - * ->where('c.id = ?'); - * - * - * @param string $update The table whose rows are subject to the update. - * @param string $alias The table alias used in the constructed query. - * - * @return $this This QueryBuilder instance. - */ - public function update($update = null, $alias = null) - { - $this->type = self::UPDATE; - - if ($update === null) { - return $this; - } - - return $this->add('from', [ - 'table' => $update, - 'alias' => $alias, - ]); - } - - /** - * Turns the query being built into an insert query that inserts into - * a certain table - * - * - * $qb = $conn->createQueryBuilder() - * ->insert('users') - * ->values( - * array( - * 'name' => '?', - * 'password' => '?' - * ) - * ); - * - * - * @param string $insert The table into which the rows should be inserted. - * - * @return $this This QueryBuilder instance. - */ - public function insert($insert = null) - { - $this->type = self::INSERT; - - if ($insert === null) { - return $this; - } - - return $this->add('from', ['table' => $insert]); - } - - /** - * Creates and adds a query root corresponding to the table identified by the - * given alias, forming a cartesian product with any existing query roots. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.id') - * ->from('users', 'u') - * - * - * @param string $from The table. - * @param string|null $alias The alias of the table. - * - * @return $this This QueryBuilder instance. - */ - public function from($from, $alias = null) - { - return $this->add('from', [ - 'table' => $from, - 'alias' => $alias, - ], true); - } - - /** - * Creates and adds a join to the query. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.name') - * ->from('users', 'u') - * ->join('u', 'phonenumbers', 'p', 'p.is_primary = 1'); - * - * - * @param string $fromAlias The alias that points to a from clause. - * @param string $join The table name to join. - * @param string $alias The alias of the join table. - * @param string $condition The condition for the join. - * - * @return $this This QueryBuilder instance. - */ - public function join($fromAlias, $join, $alias, $condition = null) - { - return $this->innerJoin($fromAlias, $join, $alias, $condition); - } - - /** - * Creates and adds a join to the query. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.name') - * ->from('users', 'u') - * ->innerJoin('u', 'phonenumbers', 'p', 'p.is_primary = 1'); - * - * - * @param string $fromAlias The alias that points to a from clause. - * @param string $join The table name to join. - * @param string $alias The alias of the join table. - * @param string $condition The condition for the join. - * - * @return $this This QueryBuilder instance. - */ - public function innerJoin($fromAlias, $join, $alias, $condition = null) - { - return $this->add('join', [ - $fromAlias => [ - 'joinType' => 'inner', - 'joinTable' => $join, - 'joinAlias' => $alias, - 'joinCondition' => $condition, - ], - ], true); - } - - /** - * Creates and adds a left join to the query. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.name') - * ->from('users', 'u') - * ->leftJoin('u', 'phonenumbers', 'p', 'p.is_primary = 1'); - * - * - * @param string $fromAlias The alias that points to a from clause. - * @param string $join The table name to join. - * @param string $alias The alias of the join table. - * @param string $condition The condition for the join. - * - * @return $this This QueryBuilder instance. - */ - public function leftJoin($fromAlias, $join, $alias, $condition = null) - { - return $this->add('join', [ - $fromAlias => [ - 'joinType' => 'left', - 'joinTable' => $join, - 'joinAlias' => $alias, - 'joinCondition' => $condition, - ], - ], true); - } - - /** - * Creates and adds a right join to the query. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.name') - * ->from('users', 'u') - * ->rightJoin('u', 'phonenumbers', 'p', 'p.is_primary = 1'); - * - * - * @param string $fromAlias The alias that points to a from clause. - * @param string $join The table name to join. - * @param string $alias The alias of the join table. - * @param string $condition The condition for the join. - * - * @return $this This QueryBuilder instance. - */ - public function rightJoin($fromAlias, $join, $alias, $condition = null) - { - return $this->add('join', [ - $fromAlias => [ - 'joinType' => 'right', - 'joinTable' => $join, - 'joinAlias' => $alias, - 'joinCondition' => $condition, - ], - ], true); - } - - /** - * Sets a new value for a column in a bulk update query. - * - * - * $qb = $conn->createQueryBuilder() - * ->update('counters', 'c') - * ->set('c.value', 'c.value + 1') - * ->where('c.id = ?'); - * - * - * @param string $key The column to set. - * @param string $value The value, expression, placeholder, etc. - * - * @return $this This QueryBuilder instance. - */ - public function set($key, $value) - { - return $this->add('set', $key . ' = ' . $value, true); - } - - /** - * Specifies one or more restrictions to the query result. - * Replaces any previously specified restrictions, if any. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('c.value') - * ->from('counters', 'c') - * ->where('c.id = ?'); - * - * // You can optionally programmatically build and/or expressions - * $qb = $conn->createQueryBuilder(); - * - * $or = $qb->expr()->orx(); - * $or->add($qb->expr()->eq('c.id', 1)); - * $or->add($qb->expr()->eq('c.id', 2)); - * - * $qb->update('counters', 'c') - * ->set('c.value', 'c.value + 1') - * ->where($or); - * - * - * @param mixed $predicates The restriction predicates. - * - * @return $this This QueryBuilder instance. - */ - public function where($predicates) - { - if (! (func_num_args() === 1 && $predicates instanceof CompositeExpression)) { - $predicates = CompositeExpression::and(...func_get_args()); - } - - return $this->add('where', $predicates); - } - - /** - * Adds one or more restrictions to the query results, forming a logical - * conjunction with any previously specified restrictions. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u') - * ->from('users', 'u') - * ->where('u.username LIKE ?') - * ->andWhere('u.is_active = 1'); - * - * - * @see where() - * - * @param mixed $where The query restrictions. - * - * @return $this This QueryBuilder instance. - */ - public function andWhere($where) - { - $args = func_get_args(); - $where = $this->getQueryPart('where'); - - if ($where instanceof CompositeExpression && $where->getType() === CompositeExpression::TYPE_AND) { - $where = $where->with(...$args); - } else { - array_unshift($args, $where); - $where = CompositeExpression::and(...$args); - } - - return $this->add('where', $where, true); - } - - /** - * Adds one or more restrictions to the query results, forming a logical - * disjunction with any previously specified restrictions. - * - * - * $qb = $em->createQueryBuilder() - * ->select('u.name') - * ->from('users', 'u') - * ->where('u.id = 1') - * ->orWhere('u.id = 2'); - * - * - * @see where() - * - * @param mixed $where The WHERE statement. - * - * @return $this This QueryBuilder instance. - */ - public function orWhere($where) - { - $args = func_get_args(); - $where = $this->getQueryPart('where'); - - if ($where instanceof CompositeExpression && $where->getType() === CompositeExpression::TYPE_OR) { - $where = $where->with(...$args); - } else { - array_unshift($args, $where); - $where = CompositeExpression::or(...$args); - } - - return $this->add('where', $where, true); - } - - /** - * Specifies a grouping over the results of the query. - * Replaces any previously specified groupings, if any. - * - * USING AN ARRAY ARGUMENT IS DEPRECATED. Pass each value as an individual argument. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.name') - * ->from('users', 'u') - * ->groupBy('u.id'); - * - * - * @param string|string[] $groupBy The grouping expression. USING AN ARRAY IS DEPRECATED. - * Pass each value as an individual argument. - * - * @return $this This QueryBuilder instance. - */ - public function groupBy($groupBy/*, string ...$groupBys*/) - { - if (is_array($groupBy) && count($groupBy) === 0) { - return $this; - } - - if (is_array($groupBy)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3837', - 'Passing an array for the first argument to QueryBuilder::groupBy() is deprecated, ' . - 'pass each value as an individual variadic argument instead.', - ); - } - - $groupBy = is_array($groupBy) ? $groupBy : func_get_args(); - - return $this->add('groupBy', $groupBy, false); - } - - /** - * Adds a grouping expression to the query. - * - * USING AN ARRAY ARGUMENT IS DEPRECATED. Pass each value as an individual argument. - * - * - * $qb = $conn->createQueryBuilder() - * ->select('u.name') - * ->from('users', 'u') - * ->groupBy('u.lastLogin') - * ->addGroupBy('u.createdAt'); - * - * - * @param string|string[] $groupBy The grouping expression. USING AN ARRAY IS DEPRECATED. - * Pass each value as an individual argument. - * - * @return $this This QueryBuilder instance. - */ - public function addGroupBy($groupBy/*, string ...$groupBys*/) - { - if (is_array($groupBy) && count($groupBy) === 0) { - return $this; - } - - if (is_array($groupBy)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3837', - 'Passing an array for the first argument to QueryBuilder::addGroupBy() is deprecated, ' . - 'pass each value as an individual variadic argument instead.', - ); - } - - $groupBy = is_array($groupBy) ? $groupBy : func_get_args(); - - return $this->add('groupBy', $groupBy, true); - } - - /** - * Sets a value for a column in an insert query. - * - * - * $qb = $conn->createQueryBuilder() - * ->insert('users') - * ->values( - * array( - * 'name' => '?' - * ) - * ) - * ->setValue('password', '?'); - * - * - * @param string $column The column into which the value should be inserted. - * @param string $value The value that should be inserted into the column. - * - * @return $this This QueryBuilder instance. - */ - public function setValue($column, $value) - { - $this->sqlParts['values'][$column] = $value; - - return $this; - } - - /** - * Specifies values for an insert query indexed by column names. - * Replaces any previous values, if any. - * - * - * $qb = $conn->createQueryBuilder() - * ->insert('users') - * ->values( - * array( - * 'name' => '?', - * 'password' => '?' - * ) - * ); - * - * - * @param mixed[] $values The values to specify for the insert query indexed by column names. - * - * @return $this This QueryBuilder instance. - */ - public function values(array $values) - { - return $this->add('values', $values); - } - - /** - * Specifies a restriction over the groups of the query. - * Replaces any previous having restrictions, if any. - * - * @param mixed $having The restriction over the groups. - * - * @return $this This QueryBuilder instance. - */ - public function having($having) - { - if (! (func_num_args() === 1 && $having instanceof CompositeExpression)) { - $having = CompositeExpression::and(...func_get_args()); - } - - return $this->add('having', $having); - } - - /** - * Adds a restriction over the groups of the query, forming a logical - * conjunction with any existing having restrictions. - * - * @param mixed $having The restriction to append. - * - * @return $this This QueryBuilder instance. - */ - public function andHaving($having) - { - $args = func_get_args(); - $having = $this->getQueryPart('having'); - - if ($having instanceof CompositeExpression && $having->getType() === CompositeExpression::TYPE_AND) { - $having = $having->with(...$args); - } else { - array_unshift($args, $having); - $having = CompositeExpression::and(...$args); - } - - return $this->add('having', $having); - } - - /** - * Adds a restriction over the groups of the query, forming a logical - * disjunction with any existing having restrictions. - * - * @param mixed $having The restriction to add. - * - * @return $this This QueryBuilder instance. - */ - public function orHaving($having) - { - $args = func_get_args(); - $having = $this->getQueryPart('having'); - - if ($having instanceof CompositeExpression && $having->getType() === CompositeExpression::TYPE_OR) { - $having = $having->with(...$args); - } else { - array_unshift($args, $having); - $having = CompositeExpression::or(...$args); - } - - return $this->add('having', $having); - } - - /** - * Specifies an ordering for the query results. - * Replaces any previously specified orderings, if any. - * - * @param string $sort The ordering expression. - * @param string $order The ordering direction. - * - * @return $this This QueryBuilder instance. - */ - public function orderBy($sort, $order = null) - { - return $this->add('orderBy', $sort . ' ' . ($order ?? 'ASC'), false); - } - - /** - * Adds an ordering to the query results. - * - * @param string $sort The ordering expression. - * @param string $order The ordering direction. - * - * @return $this This QueryBuilder instance. - */ - public function addOrderBy($sort, $order = null) - { - return $this->add('orderBy', $sort . ' ' . ($order ?? 'ASC'), true); - } - - /** - * Gets a query part by its name. - * - * @deprecated The query parts are implementation details and should not be relied upon. - * - * @param string $queryPartName - * - * @return mixed - */ - public function getQueryPart($queryPartName) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6179', - 'Getting query parts is deprecated as they are implementation details.', - ); - - return $this->sqlParts[$queryPartName]; - } - - /** - * Gets all query parts. - * - * @deprecated The query parts are implementation details and should not be relied upon. - * - * @return mixed[] - */ - public function getQueryParts() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6179', - 'Getting query parts is deprecated as they are implementation details.', - ); - - return $this->sqlParts; - } - - /** - * Resets SQL parts. - * - * @deprecated Use the dedicated reset*() methods instead. - * - * @param string[]|null $queryPartNames - * - * @return $this This QueryBuilder instance. - */ - public function resetQueryParts($queryPartNames = null) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6193', - '%s() is deprecated, instead use dedicated reset methods for the parts that shall be reset.', - __METHOD__, - ); - - $queryPartNames ??= array_keys($this->sqlParts); - - foreach ($queryPartNames as $queryPartName) { - $this->sqlParts[$queryPartName] = self::SQL_PARTS_DEFAULTS[$queryPartName]; - } - - $this->state = self::STATE_DIRTY; - - return $this; - } - - /** - * Resets a single SQL part. - * - * @deprecated Use the dedicated reset*() methods instead. - * - * @param string $queryPartName - * - * @return $this This QueryBuilder instance. - */ - public function resetQueryPart($queryPartName) - { - if ($queryPartName === 'distinct') { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6193', - 'Calling %s() with "distinct" is deprecated, call distinct(false) instead.', - __METHOD__, - ); - - return $this->distinct(false); - } - - $newMethodName = 'reset' . ucfirst($queryPartName); - if (array_key_exists($queryPartName, self::SQL_PARTS_DEFAULTS) && method_exists($this, $newMethodName)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6193', - 'Calling %s() with "%s" is deprecated, call %s() instead.', - __METHOD__, - $queryPartName, - $newMethodName, - ); - - return $this->$newMethodName(); - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6193', - 'Calling %s() with "%s" is deprecated without replacement.', - __METHOD__, - $queryPartName, - $newMethodName, - ); - - $this->sqlParts[$queryPartName] = self::SQL_PARTS_DEFAULTS[$queryPartName]; - - $this->state = self::STATE_DIRTY; - - return $this; - } - - /** - * Resets the WHERE conditions for the query. - * - * @return $this This QueryBuilder instance. - */ - public function resetWhere(): self - { - $this->sqlParts['where'] = self::SQL_PARTS_DEFAULTS['where']; - - $this->state = self::STATE_DIRTY; - - return $this; - } - - /** - * Resets the grouping for the query. - * - * @return $this This QueryBuilder instance. - */ - public function resetGroupBy(): self - { - $this->sqlParts['groupBy'] = self::SQL_PARTS_DEFAULTS['groupBy']; - - $this->state = self::STATE_DIRTY; - - return $this; - } - - /** - * Resets the HAVING conditions for the query. - * - * @return $this This QueryBuilder instance. - */ - public function resetHaving(): self - { - $this->sqlParts['having'] = self::SQL_PARTS_DEFAULTS['having']; - - $this->state = self::STATE_DIRTY; - - return $this; - } - - /** - * Resets the ordering for the query. - * - * @return $this This QueryBuilder instance. - */ - public function resetOrderBy(): self - { - $this->sqlParts['orderBy'] = self::SQL_PARTS_DEFAULTS['orderBy']; - - $this->state = self::STATE_DIRTY; - - return $this; - } - - /** @throws Exception */ - private function getSQLForSelect(): string - { - return $this->connection->getDatabasePlatform() - ->createSelectSQLBuilder() - ->buildSQL( - new SelectQuery( - $this->sqlParts['distinct'], - $this->sqlParts['select'], - $this->getFromClauses(), - $this->sqlParts['where'], - $this->sqlParts['groupBy'], - $this->sqlParts['having'], - $this->sqlParts['orderBy'], - new Limit($this->maxResults, $this->firstResult), - $this->sqlParts['for_update'], - ), - ); - } - - /** - * @return string[] - * - * @throws QueryException - */ - private function getFromClauses(): array - { - $fromClauses = []; - $knownAliases = []; - - // Loop through all FROM clauses - foreach ($this->sqlParts['from'] as $from) { - if ($from['alias'] === null) { - $tableSql = $from['table']; - $tableReference = $from['table']; - } else { - $tableSql = $from['table'] . ' ' . $from['alias']; - $tableReference = $from['alias']; - } - - $knownAliases[$tableReference] = true; - - $fromClauses[$tableReference] = $tableSql . $this->getSQLForJoins($tableReference, $knownAliases); - } - - $this->verifyAllAliasesAreKnown($knownAliases); - - return $fromClauses; - } - - /** - * @param array $knownAliases - * - * @throws QueryException - */ - private function verifyAllAliasesAreKnown(array $knownAliases): void - { - foreach ($this->sqlParts['join'] as $fromAlias => $joins) { - if (! isset($knownAliases[$fromAlias])) { - throw QueryException::unknownAlias($fromAlias, array_keys($knownAliases)); - } - } - } - - /** - * Converts this instance into an INSERT string in SQL. - */ - private function getSQLForInsert(): string - { - return 'INSERT INTO ' . $this->sqlParts['from']['table'] . - ' (' . implode(', ', array_keys($this->sqlParts['values'])) . ')' . - ' VALUES(' . implode(', ', $this->sqlParts['values']) . ')'; - } - - /** - * Converts this instance into an UPDATE string in SQL. - */ - private function getSQLForUpdate(): string - { - $table = $this->sqlParts['from']['table'] - . ($this->sqlParts['from']['alias'] ? ' ' . $this->sqlParts['from']['alias'] : ''); - - return 'UPDATE ' . $table - . ' SET ' . implode(', ', $this->sqlParts['set']) - . ($this->sqlParts['where'] !== null ? ' WHERE ' . ((string) $this->sqlParts['where']) : ''); - } - - /** - * Converts this instance into a DELETE string in SQL. - */ - private function getSQLForDelete(): string - { - $table = $this->sqlParts['from']['table'] - . ($this->sqlParts['from']['alias'] ? ' ' . $this->sqlParts['from']['alias'] : ''); - - return 'DELETE FROM ' . $table - . ($this->sqlParts['where'] !== null ? ' WHERE ' . ((string) $this->sqlParts['where']) : ''); - } - - /** - * Gets a string representation of this QueryBuilder which corresponds to - * the final SQL query being constructed. - * - * @return string The string representation of this QueryBuilder. - */ - public function __toString() - { - return $this->getSQL(); - } - - /** - * Creates a new named parameter and bind the value $value to it. - * - * This method provides a shortcut for {@see Statement::bindValue()} - * when using prepared statements. - * - * The parameter $value specifies the value that you want to bind. If - * $placeholder is not provided createNamedParameter() will automatically - * create a placeholder for you. An automatic placeholder will be of the - * name ':dcValue1', ':dcValue2' etc. - * - * Example: - * - * $value = 2; - * $q->eq( 'id', $q->createNamedParameter( $value ) ); - * $stmt = $q->executeQuery(); // executed with 'id = 2' - * - * - * @link http://www.zetacomponents.org - * - * @param mixed $value - * @param int|string|Type|null $type - * @param string $placeHolder The name to bind with. The string must start with a colon ':'. - * - * @return string the placeholder name used. - */ - public function createNamedParameter($value, $type = ParameterType::STRING, $placeHolder = null) - { - if ($placeHolder === null) { - $this->boundCounter++; - $placeHolder = ':dcValue' . $this->boundCounter; - } - - $this->setParameter(substr($placeHolder, 1), $value, $type); - - return $placeHolder; - } - - /** - * Creates a new positional parameter and bind the given value to it. - * - * Attention: If you are using positional parameters with the query builder you have - * to be very careful to bind all parameters in the order they appear in the SQL - * statement , otherwise they get bound in the wrong order which can lead to serious - * bugs in your code. - * - * Example: - * - * $qb = $conn->createQueryBuilder(); - * $qb->select('u.*') - * ->from('users', 'u') - * ->where('u.username = ' . $qb->createPositionalParameter('Foo', ParameterType::STRING)) - * ->orWhere('u.username = ' . $qb->createPositionalParameter('Bar', ParameterType::STRING)) - * - * - * @param mixed $value - * @param int|string|Type|null $type - * - * @return string - */ - public function createPositionalParameter($value, $type = ParameterType::STRING) - { - $this->setParameter($this->boundCounter, $value, $type); - $this->boundCounter++; - - return '?'; - } - - /** - * @param string $fromAlias - * @param array $knownAliases - * - * @throws QueryException - */ - private function getSQLForJoins($fromAlias, array &$knownAliases): string - { - $sql = ''; - - if (isset($this->sqlParts['join'][$fromAlias])) { - foreach ($this->sqlParts['join'][$fromAlias] as $join) { - if (array_key_exists($join['joinAlias'], $knownAliases)) { - throw QueryException::nonUniqueAlias((string) $join['joinAlias'], array_keys($knownAliases)); - } - - $sql .= ' ' . strtoupper($join['joinType']) - . ' JOIN ' . $join['joinTable'] . ' ' . $join['joinAlias']; - if ($join['joinCondition'] !== null) { - $sql .= ' ON ' . $join['joinCondition']; - } - - $knownAliases[$join['joinAlias']] = true; - } - - foreach ($this->sqlParts['join'][$fromAlias] as $join) { - $sql .= $this->getSQLForJoins($join['joinAlias'], $knownAliases); - } - } - - return $sql; - } - - /** - * Deep clone of all expression objects in the SQL parts. - * - * @return void - */ - public function __clone() - { - foreach ($this->sqlParts as $part => $elements) { - if (is_array($this->sqlParts[$part])) { - foreach ($this->sqlParts[$part] as $idx => $element) { - if (! is_object($element)) { - continue; - } - - $this->sqlParts[$part][$idx] = clone $element; - } - } elseif (is_object($elements)) { - $this->sqlParts[$part] = clone $elements; - } - } - - foreach ($this->params as $name => $param) { - if (! is_object($param)) { - continue; - } - - $this->params[$name] = clone $param; - } - } - - /** - * Enables caching of the results of this query, for given amount of seconds - * and optionally specified witch key to use for the cache entry. - * - * @return $this - */ - public function enableResultCache(QueryCacheProfile $cacheProfile): self - { - $this->resultCacheProfile = $cacheProfile; - - return $this; - } - - /** - * Disables caching of the results of this query. - * - * @return $this - */ - public function disableResultCache(): self - { - $this->resultCacheProfile = null; - - return $this; - } -} diff --git a/vendor/doctrine/dbal/src/Query/QueryException.php b/vendor/doctrine/dbal/src/Query/QueryException.php deleted file mode 100644 index 90d1f47d..00000000 --- a/vendor/doctrine/dbal/src/Query/QueryException.php +++ /dev/null @@ -1,37 +0,0 @@ -distinct = $distinct; - $this->columns = $columns; - $this->from = $from; - $this->where = $where; - $this->groupBy = $groupBy; - $this->having = $having; - $this->orderBy = $orderBy; - $this->limit = $limit; - $this->forUpdate = $forUpdate; - } - - public function isDistinct(): bool - { - return $this->distinct; - } - - /** @return string[] */ - public function getColumns(): array - { - return $this->columns; - } - - /** @return string[] */ - public function getFrom(): array - { - return $this->from; - } - - public function getWhere(): ?string - { - return $this->where; - } - - /** @return string[] */ - public function getGroupBy(): array - { - return $this->groupBy; - } - - public function getHaving(): ?string - { - return $this->having; - } - - /** @return string[] */ - public function getOrderBy(): array - { - return $this->orderBy; - } - - public function getLimit(): Limit - { - return $this->limit; - } - - public function getForUpdate(): ?ForUpdate - { - return $this->forUpdate; - } -} diff --git a/vendor/doctrine/dbal/src/Result.php b/vendor/doctrine/dbal/src/Result.php deleted file mode 100644 index fdc7daa9..00000000 --- a/vendor/doctrine/dbal/src/Result.php +++ /dev/null @@ -1,339 +0,0 @@ -result = $result; - $this->connection = $connection; - } - - /** - * Returns the next row of the result as a numeric array or FALSE if there are no more rows. - * - * @return list|false - * - * @throws Exception - */ - public function fetchNumeric() - { - try { - return $this->result->fetchNumeric(); - } catch (DriverException $e) { - throw $this->connection->convertException($e); - } - } - - /** - * Returns the next row of the result as an associative array or FALSE if there are no more rows. - * - * @return array|false - * - * @throws Exception - */ - public function fetchAssociative() - { - try { - return $this->result->fetchAssociative(); - } catch (DriverException $e) { - throw $this->connection->convertException($e); - } - } - - /** - * Returns the first value of the next row of the result or FALSE if there are no more rows. - * - * @return mixed|false - * - * @throws Exception - */ - public function fetchOne() - { - try { - return $this->result->fetchOne(); - } catch (DriverException $e) { - throw $this->connection->convertException($e); - } - } - - /** - * Returns an array containing all of the result rows represented as numeric arrays. - * - * @return list> - * - * @throws Exception - */ - public function fetchAllNumeric(): array - { - try { - return $this->result->fetchAllNumeric(); - } catch (DriverException $e) { - throw $this->connection->convertException($e); - } - } - - /** - * Returns an array containing all of the result rows represented as associative arrays. - * - * @return list> - * - * @throws Exception - */ - public function fetchAllAssociative(): array - { - try { - return $this->result->fetchAllAssociative(); - } catch (DriverException $e) { - throw $this->connection->convertException($e); - } - } - - /** - * Returns an array containing the values of the first column of the result. - * - * @return array - * - * @throws Exception - */ - public function fetchAllKeyValue(): array - { - $this->ensureHasKeyValue(); - - $data = []; - - foreach ($this->fetchAllNumeric() as [$key, $value]) { - $data[$key] = $value; - } - - return $data; - } - - /** - * Returns an associative array with the keys mapped to the first column and the values being - * an associative array representing the rest of the columns and their values. - * - * @return array> - * - * @throws Exception - */ - public function fetchAllAssociativeIndexed(): array - { - $data = []; - - foreach ($this->fetchAllAssociative() as $row) { - $data[array_shift($row)] = $row; - } - - return $data; - } - - /** - * @return list - * - * @throws Exception - */ - public function fetchFirstColumn(): array - { - try { - return $this->result->fetchFirstColumn(); - } catch (DriverException $e) { - throw $this->connection->convertException($e); - } - } - - /** - * @return Traversable> - * - * @throws Exception - */ - public function iterateNumeric(): Traversable - { - while (($row = $this->fetchNumeric()) !== false) { - yield $row; - } - } - - /** - * @return Traversable> - * - * @throws Exception - */ - public function iterateAssociative(): Traversable - { - while (($row = $this->fetchAssociative()) !== false) { - yield $row; - } - } - - /** - * {@inheritDoc} - * - * @throws Exception - */ - public function iterateKeyValue(): Traversable - { - $this->ensureHasKeyValue(); - - foreach ($this->iterateNumeric() as [$key, $value]) { - yield $key => $value; - } - } - - /** - * Returns an iterator over the result set with the keys mapped to the first column and the values being - * an associative array representing the rest of the columns and their values. - * - * @return Traversable> - * - * @throws Exception - */ - public function iterateAssociativeIndexed(): Traversable - { - foreach ($this->iterateAssociative() as $row) { - yield array_shift($row) => $row; - } - } - - /** - * @return Traversable - * - * @throws Exception - */ - public function iterateColumn(): Traversable - { - while (($value = $this->fetchOne()) !== false) { - yield $value; - } - } - - /** @throws Exception */ - public function rowCount(): int - { - try { - return $this->result->rowCount(); - } catch (DriverException $e) { - throw $this->connection->convertException($e); - } - } - - /** @throws Exception */ - public function columnCount(): int - { - try { - return $this->result->columnCount(); - } catch (DriverException $e) { - throw $this->connection->convertException($e); - } - } - - public function free(): void - { - $this->result->free(); - } - - /** @throws Exception */ - private function ensureHasKeyValue(): void - { - $columnCount = $this->columnCount(); - - if ($columnCount < 2) { - throw NoKeyValue::fromColumnCount($columnCount); - } - } - - /** - * BC layer for a wide-spread use-case of old DBAL APIs - * - * @deprecated Use {@see fetchNumeric()}, {@see fetchAssociative()} or {@see fetchOne()} instead. - * - * @psalm-param FetchMode::* $mode - * - * @return mixed - * - * @throws Exception - */ - public function fetch(int $mode = FetchMode::ASSOCIATIVE) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4007', - '%s is deprecated, please use fetchNumeric(), fetchAssociative() or fetchOne() instead.', - __METHOD__, - ); - - if (func_num_args() > 1) { - throw new LogicException('Only invocations with one argument are still supported by this legacy API.'); - } - - if ($mode === FetchMode::ASSOCIATIVE) { - return $this->fetchAssociative(); - } - - if ($mode === FetchMode::NUMERIC) { - return $this->fetchNumeric(); - } - - if ($mode === FetchMode::COLUMN) { - return $this->fetchOne(); - } - - throw new LogicException('Only fetch modes declared on Doctrine\DBAL\FetchMode are supported by legacy API.'); - } - - /** - * BC layer for a wide-spread use-case of old DBAL APIs - * - * @deprecated Use {@see fetchAllNumeric()}, {@see fetchAllAssociative()} or {@see fetchFirstColumn()} instead. - * - * @psalm-param FetchMode::* $mode - * - * @return list - * - * @throws Exception - */ - public function fetchAll(int $mode = FetchMode::ASSOCIATIVE): array - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4007', - '%s is deprecated, please use fetchAllNumeric(), fetchAllAssociative() or fetchFirstColumn() instead.', - __METHOD__, - ); - - if (func_num_args() > 1) { - throw new LogicException('Only invocations with one argument are still supported by this legacy API.'); - } - - if ($mode === FetchMode::ASSOCIATIVE) { - return $this->fetchAllAssociative(); - } - - if ($mode === FetchMode::NUMERIC) { - return $this->fetchAllNumeric(); - } - - if ($mode === FetchMode::COLUMN) { - return $this->fetchFirstColumn(); - } - - throw new LogicException('Only fetch modes declared on Doctrine\DBAL\FetchMode are supported by legacy API.'); - } -} diff --git a/vendor/doctrine/dbal/src/SQL/Builder/CreateSchemaObjectsSQLBuilder.php b/vendor/doctrine/dbal/src/SQL/Builder/CreateSchemaObjectsSQLBuilder.php deleted file mode 100644 index 2e392e66..00000000 --- a/vendor/doctrine/dbal/src/SQL/Builder/CreateSchemaObjectsSQLBuilder.php +++ /dev/null @@ -1,85 +0,0 @@ -platform = $platform; - } - - /** - * @return list - * - * @throws Exception - */ - public function buildSQL(Schema $schema): array - { - return array_merge( - $this->buildNamespaceStatements($schema->getNamespaces()), - $this->buildSequenceStatements($schema->getSequences()), - $this->buildTableStatements($schema->getTables()), - ); - } - - /** - * @param list $namespaces - * - * @return list - * - * @throws Exception - */ - private function buildNamespaceStatements(array $namespaces): array - { - $statements = []; - - if ($this->platform->supportsSchemas()) { - foreach ($namespaces as $namespace) { - $statements[] = $this->platform->getCreateSchemaSQL($namespace); - } - } - - return $statements; - } - - /** - * @param list
$tables - * - * @return list - * - * @throws Exception - */ - private function buildTableStatements(array $tables): array - { - return $this->platform->getCreateTablesSQL($tables); - } - - /** - * @param list $sequences - * - * @return list - * - * @throws Exception - */ - private function buildSequenceStatements(array $sequences): array - { - $statements = []; - - foreach ($sequences as $sequence) { - $statements[] = $this->platform->getCreateSequenceSQL($sequence); - } - - return $statements; - } -} diff --git a/vendor/doctrine/dbal/src/SQL/Builder/DefaultSelectSQLBuilder.php b/vendor/doctrine/dbal/src/SQL/Builder/DefaultSelectSQLBuilder.php deleted file mode 100644 index 9dcb7a19..00000000 --- a/vendor/doctrine/dbal/src/SQL/Builder/DefaultSelectSQLBuilder.php +++ /dev/null @@ -1,95 +0,0 @@ -platform = $platform; - $this->forUpdateSQL = $forUpdateSQL; - $this->skipLockedSQL = $skipLockedSQL; - } - - /** @throws Exception */ - public function buildSQL(SelectQuery $query): string - { - $parts = ['SELECT']; - - if ($query->isDistinct()) { - $parts[] = 'DISTINCT'; - } - - $parts[] = implode(', ', $query->getColumns()); - - $from = $query->getFrom(); - - if (count($from) > 0) { - $parts[] = 'FROM ' . implode(', ', $from); - } - - $where = $query->getWhere(); - - if ($where !== null) { - $parts[] = 'WHERE ' . $where; - } - - $groupBy = $query->getGroupBy(); - - if (count($groupBy) > 0) { - $parts[] = 'GROUP BY ' . implode(', ', $groupBy); - } - - $having = $query->getHaving(); - - if ($having !== null) { - $parts[] = 'HAVING ' . $having; - } - - $orderBy = $query->getOrderBy(); - - if (count($orderBy) > 0) { - $parts[] = 'ORDER BY ' . implode(', ', $orderBy); - } - - $sql = implode(' ', $parts); - $limit = $query->getLimit(); - - if ($limit->isDefined()) { - $sql = $this->platform->modifyLimitQuery($sql, $limit->getMaxResults(), $limit->getFirstResult()); - } - - $forUpdate = $query->getForUpdate(); - - if ($forUpdate !== null) { - if ($this->forUpdateSQL === null) { - throw Exception::notSupported('FOR UPDATE'); - } - - $sql .= ' ' . $this->forUpdateSQL; - - if ($forUpdate->getConflictResolutionMode() === ConflictResolutionMode::SKIP_LOCKED) { - if ($this->skipLockedSQL === null) { - throw Exception::notSupported('SKIP LOCKED'); - } - - $sql .= ' ' . $this->skipLockedSQL; - } - } - - return $sql; - } -} diff --git a/vendor/doctrine/dbal/src/SQL/Builder/DropSchemaObjectsSQLBuilder.php b/vendor/doctrine/dbal/src/SQL/Builder/DropSchemaObjectsSQLBuilder.php deleted file mode 100644 index 8de742a3..00000000 --- a/vendor/doctrine/dbal/src/SQL/Builder/DropSchemaObjectsSQLBuilder.php +++ /dev/null @@ -1,62 +0,0 @@ -platform = $platform; - } - - /** - * @return list - * - * @throws Exception - */ - public function buildSQL(Schema $schema): array - { - return array_merge( - $this->buildSequenceStatements($schema->getSequences()), - $this->buildTableStatements($schema->getTables()), - ); - } - - /** - * @param list
$tables - * - * @return list - */ - private function buildTableStatements(array $tables): array - { - return $this->platform->getDropTablesSQL($tables); - } - - /** - * @param list $sequences - * - * @return list - * - * @throws Exception - */ - private function buildSequenceStatements(array $sequences): array - { - $statements = []; - - foreach ($sequences as $sequence) { - $statements[] = $this->platform->getDropSequenceSQL($sequence); - } - - return $statements; - } -} diff --git a/vendor/doctrine/dbal/src/SQL/Builder/SelectSQLBuilder.php b/vendor/doctrine/dbal/src/SQL/Builder/SelectSQLBuilder.php deleted file mode 100644 index ddbf73c0..00000000 --- a/vendor/doctrine/dbal/src/SQL/Builder/SelectSQLBuilder.php +++ /dev/null @@ -1,12 +0,0 @@ -getMySQLStringLiteralPattern("'"), - $this->getMySQLStringLiteralPattern('"'), - ]; - } else { - $patterns = [ - $this->getAnsiSQLStringLiteralPattern("'"), - $this->getAnsiSQLStringLiteralPattern('"'), - ]; - } - - $patterns = array_merge($patterns, [ - self::BACKTICK_IDENTIFIER, - self::BRACKET_IDENTIFIER, - self::MULTICHAR, - self::ONE_LINE_COMMENT, - self::MULTI_LINE_COMMENT, - self::OTHER, - ]); - - $this->sqlPattern = sprintf('(%s)', implode('|', $patterns)); - } - - /** - * Parses the given SQL statement - * - * @throws Exception - */ - public function parse(string $sql, Visitor $visitor): void - { - /** @var array $patterns */ - $patterns = [ - self::NAMED_PARAMETER => static function (string $sql) use ($visitor): void { - $visitor->acceptNamedParameter($sql); - }, - self::POSITIONAL_PARAMETER => static function (string $sql) use ($visitor): void { - $visitor->acceptPositionalParameter($sql); - }, - $this->sqlPattern => static function (string $sql) use ($visitor): void { - $visitor->acceptOther($sql); - }, - self::SPECIAL => static function (string $sql) use ($visitor): void { - $visitor->acceptOther($sql); - }, - ]; - - $offset = 0; - - while (($handler = current($patterns)) !== false) { - if (preg_match('~\G' . key($patterns) . '~s', $sql, $matches, 0, $offset) === 1) { - $handler($matches[0]); - reset($patterns); - - $offset += strlen($matches[0]); - } elseif (preg_last_error() !== PREG_NO_ERROR) { - // @codeCoverageIgnoreStart - throw RegularExpressionError::new(); - // @codeCoverageIgnoreEnd - } else { - next($patterns); - } - } - - assert($offset === strlen($sql)); - } - - private function getMySQLStringLiteralPattern(string $delimiter): string - { - return $delimiter . '((\\\\.)|(?![' . $delimiter . '\\\\]).)*' . $delimiter; - } - - private function getAnsiSQLStringLiteralPattern(string $delimiter): string - { - return $delimiter . '[^' . $delimiter . ']*' . $delimiter; - } -} diff --git a/vendor/doctrine/dbal/src/SQL/Parser/Exception.php b/vendor/doctrine/dbal/src/SQL/Parser/Exception.php deleted file mode 100644 index 0c14b358..00000000 --- a/vendor/doctrine/dbal/src/SQL/Parser/Exception.php +++ /dev/null @@ -1,11 +0,0 @@ - Table($tableName)); if you want to rename the table, you have to make sure - */ -abstract class AbstractAsset -{ - /** @var string */ - protected $_name = ''; - - /** - * Namespace of the asset. If none isset the default namespace is assumed. - * - * @var string|null - */ - protected $_namespace; - - /** @var bool */ - protected $_quoted = false; - - /** - * Sets the name of this asset. - * - * @param string $name - * - * @return void - */ - protected function _setName($name) - { - if ($this->isIdentifierQuoted($name)) { - $this->_quoted = true; - $name = $this->trimQuotes($name); - } - - if (strpos($name, '.') !== false) { - $parts = explode('.', $name); - $this->_namespace = $parts[0]; - $name = $parts[1]; - } - - $this->_name = $name; - } - - /** - * Is this asset in the default namespace? - * - * @param string $defaultNamespaceName - * - * @return bool - */ - public function isInDefaultNamespace($defaultNamespaceName) - { - return $this->_namespace === $defaultNamespaceName || $this->_namespace === null; - } - - /** - * Gets the namespace name of this asset. - * - * If NULL is returned this means the default namespace is used. - * - * @return string|null - */ - public function getNamespaceName() - { - return $this->_namespace; - } - - /** - * The shortest name is stripped of the default namespace. All other - * namespaced elements are returned as full-qualified names. - * - * @param string|null $defaultNamespaceName - * - * @return string - */ - public function getShortestName($defaultNamespaceName) - { - $shortestName = $this->getName(); - if ($this->_namespace === $defaultNamespaceName) { - $shortestName = $this->_name; - } - - return strtolower($shortestName); - } - - /** - * The normalized name is full-qualified and lower-cased. Lower-casing is - * actually wrong, but we have to do it to keep our sanity. If you are - * using database objects that only differentiate in the casing (FOO vs - * Foo) then you will NOT be able to use Doctrine Schema abstraction. - * - * Every non-namespaced element is prefixed with the default namespace - * name which is passed as argument to this method. - * - * @deprecated Use {@see getNamespaceName()} and {@see getName()} instead. - * - * @param string $defaultNamespaceName - * - * @return string - */ - public function getFullQualifiedName($defaultNamespaceName) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4814', - 'AbstractAsset::getFullQualifiedName() is deprecated.' - . ' Use AbstractAsset::getNamespaceName() and ::getName() instead.', - ); - - $name = $this->getName(); - if ($this->_namespace === null) { - $name = $defaultNamespaceName . '.' . $name; - } - - return strtolower($name); - } - - /** - * Checks if this asset's name is quoted. - * - * @return bool - */ - public function isQuoted() - { - return $this->_quoted; - } - - /** - * Checks if this identifier is quoted. - * - * @param string $identifier - * - * @return bool - */ - protected function isIdentifierQuoted($identifier) - { - return isset($identifier[0]) && ($identifier[0] === '`' || $identifier[0] === '"' || $identifier[0] === '['); - } - - /** - * Trim quotes from the identifier. - * - * @param string $identifier - * - * @return string - */ - protected function trimQuotes($identifier) - { - return str_replace(['`', '"', '[', ']'], '', $identifier); - } - - /** - * Returns the name of this schema asset. - * - * @return string - */ - public function getName() - { - if ($this->_namespace !== null) { - return $this->_namespace . '.' . $this->_name; - } - - return $this->_name; - } - - /** - * Gets the quoted representation of this asset but only if it was defined with one. Otherwise - * return the plain unquoted value as inserted. - * - * @return string - */ - public function getQuotedName(AbstractPlatform $platform) - { - $keywords = $platform->getReservedKeywordsList(); - $parts = explode('.', $this->getName()); - foreach ($parts as $k => $v) { - $parts[$k] = $this->_quoted || $keywords->isKeyword($v) ? $platform->quoteIdentifier($v) : $v; - } - - return implode('.', $parts); - } - - /** - * Generates an identifier from a list of column names obeying a certain string length. - * - * This is especially important for Oracle, since it does not allow identifiers larger than 30 chars, - * however building idents automatically for foreign keys, composite keys or such can easily create - * very long names. - * - * @param string[] $columnNames - * @param string $prefix - * @param int $maxSize - * - * @return string - */ - protected function _generateIdentifierName($columnNames, $prefix = '', $maxSize = 30) - { - $hash = implode('', array_map(static function ($column): string { - return dechex(crc32($column)); - }, $columnNames)); - - return strtoupper(substr($prefix . '_' . $hash, 0, $maxSize)); - } -} diff --git a/vendor/doctrine/dbal/src/Schema/AbstractSchemaManager.php b/vendor/doctrine/dbal/src/Schema/AbstractSchemaManager.php deleted file mode 100644 index 7e1fd93f..00000000 --- a/vendor/doctrine/dbal/src/Schema/AbstractSchemaManager.php +++ /dev/null @@ -1,1800 +0,0 @@ -_conn = $connection; - $this->_platform = $platform; - } - - /** - * Returns the associated platform. - * - * @deprecated Use {@link Connection::getDatabasePlatform()} instead. - * - * @return T - */ - public function getDatabasePlatform() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5387', - 'AbstractSchemaManager::getDatabasePlatform() is deprecated.' - . ' Use Connection::getDatabasePlatform() instead.', - ); - - return $this->_platform; - } - - /** - * Tries any method on the schema manager. Normally a method throws an - * exception when your DBMS doesn't support it or if an error occurs. - * This method allows you to try and method on your SchemaManager - * instance and will return false if it does not work or is not supported. - * - * - * $result = $sm->tryMethod('dropView', 'view_name'); - * - * - * @deprecated - * - * @return mixed - */ - public function tryMethod() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'AbstractSchemaManager::tryMethod() is deprecated.', - ); - - $args = func_get_args(); - $method = $args[0]; - unset($args[0]); - $args = array_values($args); - - $callback = [$this, $method]; - assert(is_callable($callback)); - - try { - return call_user_func_array($callback, $args); - } catch (Throwable $e) { - return false; - } - } - - /** - * Lists the available databases for this connection. - * - * @return string[] - * - * @throws Exception - */ - public function listDatabases() - { - $sql = $this->_platform->getListDatabasesSQL(); - - $databases = $this->_conn->fetchAllAssociative($sql); - - return $this->_getPortableDatabasesList($databases); - } - - /** - * Returns a list of all namespaces in the current database. - * - * @deprecated Use {@see listSchemaNames()} instead. - * - * @return string[] - * - * @throws Exception - */ - public function listNamespaceNames() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4503', - 'AbstractSchemaManager::listNamespaceNames() is deprecated,' - . ' use AbstractSchemaManager::listSchemaNames() instead.', - ); - - $sql = $this->_platform->getListNamespacesSQL(); - - $namespaces = $this->_conn->fetchAllAssociative($sql); - - return $this->getPortableNamespacesList($namespaces); - } - - /** - * Returns a list of the names of all schemata in the current database. - * - * @return list - * - * @throws Exception - */ - public function listSchemaNames(): array - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Lists the available sequences for this connection. - * - * @param string|null $database - * - * @return Sequence[] - * - * @throws Exception - */ - public function listSequences($database = null) - { - if ($database === null) { - $database = $this->getDatabase(__METHOD__); - } else { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5284', - 'Passing $database to AbstractSchemaManager::listSequences() is deprecated.', - ); - } - - $sql = $this->_platform->getListSequencesSQL($database); - - $sequences = $this->_conn->fetchAllAssociative($sql); - - return $this->filterAssetNames($this->_getPortableSequencesList($sequences)); - } - - /** - * Lists the columns for a given table. - * - * In contrast to other libraries and to the old version of Doctrine, - * this column definition does try to contain the 'primary' column for - * the reason that it is not portable across different RDBMS. Use - * {@see listTableIndexes($tableName)} to retrieve the primary key - * of a table. Where a RDBMS specifies more details, these are held - * in the platformDetails array. - * - * @param string $table The name of the table. - * @param string|null $database - * - * @return Column[] - * - * @throws Exception - */ - public function listTableColumns($table, $database = null) - { - if ($database === null) { - $database = $this->getDatabase(__METHOD__); - } else { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5284', - 'Passing $database to AbstractSchemaManager::listTableColumns() is deprecated.', - ); - } - - $sql = $this->_platform->getListTableColumnsSQL($table, $database); - - $tableColumns = $this->_conn->fetchAllAssociative($sql); - - return $this->_getPortableTableColumnList($table, $database, $tableColumns); - } - - /** - * @param string $table - * @param string|null $database - * - * @return Column[] - * - * @throws Exception - */ - protected function doListTableColumns($table, $database = null): array - { - if ($database === null) { - $database = $this->getDatabase(__METHOD__); - } else { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5284', - 'Passing $database to AbstractSchemaManager::doListTableColumns() is deprecated.', - ); - } - - return $this->_getPortableTableColumnList( - $table, - $database, - $this->selectTableColumns($database, $this->normalizeName($table)) - ->fetchAllAssociative(), - ); - } - - /** - * Lists the indexes for a given table returning an array of Index instances. - * - * Keys of the portable indexes list are all lower-cased. - * - * @param string $table The name of the table. - * - * @return Index[] - * - * @throws Exception - */ - public function listTableIndexes($table) - { - $sql = $this->_platform->getListTableIndexesSQL($table, $this->_conn->getDatabase()); - - $tableIndexes = $this->_conn->fetchAllAssociative($sql); - - return $this->_getPortableTableIndexesList($tableIndexes, $table); - } - - /** - * @param string $table - * - * @return Index[] - * - * @throws Exception - */ - protected function doListTableIndexes($table): array - { - $database = $this->getDatabase(__METHOD__); - $table = $this->normalizeName($table); - - return $this->_getPortableTableIndexesList( - $this->selectIndexColumns( - $database, - $table, - )->fetchAllAssociative(), - $table, - ); - } - - /** - * Returns true if all the given tables exist. - * - * The usage of a string $tableNames is deprecated. Pass a one-element array instead. - * - * @param string|string[] $names - * - * @return bool - * - * @throws Exception - */ - public function tablesExist($names) - { - if (is_string($names)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/3580', - 'The usage of a string $tableNames in AbstractSchemaManager::tablesExist() is deprecated. ' . - 'Pass a one-element array instead.', - ); - } - - $names = array_map('strtolower', (array) $names); - - return count($names) === count(array_intersect($names, array_map('strtolower', $this->listTableNames()))); - } - - /** - * Returns a list of all tables in the current database. - * - * @return string[] - * - * @throws Exception - */ - public function listTableNames() - { - $sql = $this->_platform->getListTablesSQL(); - - $tables = $this->_conn->fetchAllAssociative($sql); - $tableNames = $this->_getPortableTablesList($tables); - - return $this->filterAssetNames($tableNames); - } - - /** - * @return list - * - * @throws Exception - */ - protected function doListTableNames(): array - { - $database = $this->getDatabase(__METHOD__); - - return $this->filterAssetNames( - $this->_getPortableTablesList( - $this->selectTableNames($database) - ->fetchAllAssociative(), - ), - ); - } - - /** - * Filters asset names if they are configured to return only a subset of all - * the found elements. - * - * @param mixed[] $assetNames - * - * @return mixed[] - */ - protected function filterAssetNames($assetNames) - { - $filter = $this->_conn->getConfiguration()->getSchemaAssetsFilter(); - if ($filter === null) { - return $assetNames; - } - - return array_values(array_filter($assetNames, $filter)); - } - - /** - * Lists the tables for this connection. - * - * @return list
- * - * @throws Exception - */ - public function listTables() - { - $tableNames = $this->listTableNames(); - - $tables = []; - foreach ($tableNames as $tableName) { - $tables[] = $this->introspectTable($tableName); - } - - return $tables; - } - - /** - * @return list
- * - * @throws Exception - */ - protected function doListTables(): array - { - $database = $this->getDatabase(__METHOD__); - - $tableColumnsByTable = $this->fetchTableColumnsByTable($database); - $indexColumnsByTable = $this->fetchIndexColumnsByTable($database); - $foreignKeyColumnsByTable = $this->fetchForeignKeyColumnsByTable($database); - $tableOptionsByTable = $this->fetchTableOptionsByTable($database); - - $filter = $this->_conn->getConfiguration()->getSchemaAssetsFilter(); - $tables = []; - - foreach ($tableColumnsByTable as $tableName => $tableColumns) { - if ($filter !== null && ! $filter($tableName)) { - continue; - } - - $tables[] = new Table( - $tableName, - $this->_getPortableTableColumnList($tableName, $database, $tableColumns), - $this->_getPortableTableIndexesList($indexColumnsByTable[$tableName] ?? [], $tableName), - [], - $this->_getPortableTableForeignKeysList($foreignKeyColumnsByTable[$tableName] ?? []), - $tableOptionsByTable[$tableName] ?? [], - ); - } - - return $tables; - } - - /** - * @deprecated Use {@see introspectTable()} instead. - * - * @param string $name - * - * @return Table - * - * @throws Exception - */ - public function listTableDetails($name) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5595', - '%s is deprecated. Use introspectTable() instead.', - __METHOD__, - ); - - $columns = $this->listTableColumns($name); - $foreignKeys = []; - - if ($this->_platform->supportsForeignKeyConstraints()) { - $foreignKeys = $this->listTableForeignKeys($name); - } - - $indexes = $this->listTableIndexes($name); - - return new Table($name, $columns, $indexes, [], $foreignKeys); - } - - /** - * @param string $name - * - * @throws Exception - */ - protected function doListTableDetails($name): Table - { - $database = $this->getDatabase(__METHOD__); - - $normalizedName = $this->normalizeName($name); - - $tableOptionsByTable = $this->fetchTableOptionsByTable($database, $normalizedName); - - if ($this->_platform->supportsForeignKeyConstraints()) { - $foreignKeys = $this->listTableForeignKeys($name); - } else { - $foreignKeys = []; - } - - return new Table( - $name, - $this->listTableColumns($name, $database), - $this->listTableIndexes($name), - [], - $foreignKeys, - $tableOptionsByTable[$normalizedName] ?? [], - ); - } - - /** - * An extension point for those platforms where case sensitivity of the object name depends on whether it's quoted. - * - * Such platforms should convert a possibly quoted name into a value of the corresponding case. - */ - protected function normalizeName(string $name): string - { - $identifier = new Identifier($name); - - return $identifier->getName(); - } - - /** - * Selects names of tables in the specified database. - * - * @throws Exception - * - * @abstract - */ - protected function selectTableNames(string $databaseName): Result - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Selects definitions of table columns in the specified database. If the table name is specified, narrows down - * the selection to this table. - * - * @throws Exception - * - * @abstract - */ - protected function selectTableColumns(string $databaseName, ?string $tableName = null): Result - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Selects definitions of index columns in the specified database. If the table name is specified, narrows down - * the selection to this table. - * - * @throws Exception - */ - protected function selectIndexColumns(string $databaseName, ?string $tableName = null): Result - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Selects definitions of foreign key columns in the specified database. If the table name is specified, - * narrows down the selection to this table. - * - * @throws Exception - */ - protected function selectForeignKeyColumns(string $databaseName, ?string $tableName = null): Result - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Fetches definitions of table columns in the specified database and returns them grouped by table name. - * - * @return array>> - * - * @throws Exception - */ - protected function fetchTableColumnsByTable(string $databaseName): array - { - return $this->fetchAllAssociativeGrouped($this->selectTableColumns($databaseName)); - } - - /** - * Fetches definitions of index columns in the specified database and returns them grouped by table name. - * - * @return array>> - * - * @throws Exception - */ - protected function fetchIndexColumnsByTable(string $databaseName): array - { - return $this->fetchAllAssociativeGrouped($this->selectIndexColumns($databaseName)); - } - - /** - * Fetches definitions of foreign key columns in the specified database and returns them grouped by table name. - * - * @return array>> - * - * @throws Exception - */ - protected function fetchForeignKeyColumnsByTable(string $databaseName): array - { - if (! $this->_platform->supportsForeignKeyConstraints()) { - return []; - } - - return $this->fetchAllAssociativeGrouped( - $this->selectForeignKeyColumns($databaseName), - ); - } - - /** - * Fetches table options for the tables in the specified database and returns them grouped by table name. - * If the table name is specified, narrows down the selection to this table. - * - * @return array> - * - * @throws Exception - */ - protected function fetchTableOptionsByTable(string $databaseName, ?string $tableName = null): array - { - throw Exception::notSupported(__METHOD__); - } - - /** - * Introspects the table with the given name. - * - * @throws Exception - */ - public function introspectTable(string $name): Table - { - $table = $this->listTableDetails($name); - - if ($table->getColumns() === []) { - throw SchemaException::tableDoesNotExist($name); - } - - return $table; - } - - /** - * Lists the views this connection has. - * - * @return View[] - * - * @throws Exception - */ - public function listViews() - { - $database = $this->_conn->getDatabase(); - $sql = $this->_platform->getListViewsSQL($database); - $views = $this->_conn->fetchAllAssociative($sql); - - return $this->_getPortableViewsList($views); - } - - /** - * Lists the foreign keys for the given table. - * - * @param string $table The name of the table. - * @param string|null $database - * - * @return ForeignKeyConstraint[] - * - * @throws Exception - */ - public function listTableForeignKeys($table, $database = null) - { - if ($database === null) { - $database = $this->getDatabase(__METHOD__); - } else { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5284', - 'Passing $database to AbstractSchemaManager::listTableForeignKeys() is deprecated.', - ); - } - - $sql = $this->_platform->getListTableForeignKeysSQL($table, $database); - $tableForeignKeys = $this->_conn->fetchAllAssociative($sql); - - return $this->_getPortableTableForeignKeysList($tableForeignKeys); - } - - /** - * @param string $table - * @param string|null $database - * - * @return ForeignKeyConstraint[] - * - * @throws Exception - */ - protected function doListTableForeignKeys($table, $database = null): array - { - if ($database === null) { - $database = $this->getDatabase(__METHOD__); - } else { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5284', - 'Passing $database to AbstractSchemaManager::listTableForeignKeys() is deprecated.', - ); - } - - return $this->_getPortableTableForeignKeysList( - $this->selectForeignKeyColumns( - $database, - $this->normalizeName($table), - )->fetchAllAssociative(), - ); - } - - /* drop*() Methods */ - - /** - * Drops a database. - * - * NOTE: You can not drop the database this SchemaManager is currently connected to. - * - * @param string $database The name of the database to drop. - * - * @return void - * - * @throws Exception - */ - public function dropDatabase($database) - { - $this->_conn->executeStatement( - $this->_platform->getDropDatabaseSQL($database), - ); - } - - /** - * Drops a schema. - * - * @throws Exception - */ - public function dropSchema(string $schemaName): void - { - $this->_conn->executeStatement( - $this->_platform->getDropSchemaSQL($schemaName), - ); - } - - /** - * Drops the given table. - * - * @param string $name The name of the table to drop. - * - * @return void - * - * @throws Exception - */ - public function dropTable($name) - { - $this->_conn->executeStatement( - $this->_platform->getDropTableSQL($name), - ); - } - - /** - * Drops the index from the given table. - * - * @param Index|string $index The name of the index. - * @param Table|string $table The name of the table. - * - * @return void - * - * @throws Exception - */ - public function dropIndex($index, $table) - { - if ($index instanceof Index) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $index as an Index object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $index = $index->getQuotedName($this->_platform); - } - - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as an Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this->_platform); - } - - $this->_conn->executeStatement( - $this->_platform->getDropIndexSQL($index, $table), - ); - } - - /** - * Drops the constraint from the given table. - * - * @deprecated Use {@see dropIndex()}, {@see dropForeignKey()} or {@see dropUniqueConstraint()} instead. - * - * @param Table|string $table The name of the table. - * - * @return void - * - * @throws Exception - */ - public function dropConstraint(Constraint $constraint, $table) - { - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this->_platform); - } - - $this->_conn->executeStatement($this->_platform->getDropConstraintSQL( - $constraint->getQuotedName($this->_platform), - $table, - )); - } - - /** - * Drops a foreign key from a table. - * - * @param ForeignKeyConstraint|string $foreignKey The name of the foreign key. - * @param Table|string $table The name of the table with the foreign key. - * - * @return void - * - * @throws Exception - */ - public function dropForeignKey($foreignKey, $table) - { - if ($foreignKey instanceof ForeignKeyConstraint) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $foreignKey as a ForeignKeyConstraint object to %s is deprecated.' - . ' Pass it as a quoted name instead.', - __METHOD__, - ); - - $foreignKey = $foreignKey->getQuotedName($this->_platform); - } - - if ($table instanceof Table) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4798', - 'Passing $table as a Table object to %s is deprecated. Pass it as a quoted name instead.', - __METHOD__, - ); - - $table = $table->getQuotedName($this->_platform); - } - - $this->_conn->executeStatement( - $this->_platform->getDropForeignKeySQL($foreignKey, $table), - ); - } - - /** - * Drops a sequence with a given name. - * - * @param string $name The name of the sequence to drop. - * - * @return void - * - * @throws Exception - */ - public function dropSequence($name) - { - $this->_conn->executeStatement( - $this->_platform->getDropSequenceSQL($name), - ); - } - - /** - * Drops the unique constraint from the given table. - * - * @throws Exception - */ - public function dropUniqueConstraint(string $name, string $tableName): void - { - $this->_conn->executeStatement( - $this->_platform->getDropUniqueConstraintSQL($name, $tableName), - ); - } - - /** - * Drops a view. - * - * @param string $name The name of the view. - * - * @return void - * - * @throws Exception - */ - public function dropView($name) - { - $this->_conn->executeStatement( - $this->_platform->getDropViewSQL($name), - ); - } - - /* create*() Methods */ - - /** @throws Exception */ - public function createSchemaObjects(Schema $schema): void - { - $this->_execSql($schema->toSql($this->_platform)); - } - - /** - * Creates a new database. - * - * @param string $database The name of the database to create. - * - * @return void - * - * @throws Exception - */ - public function createDatabase($database) - { - $this->_conn->executeStatement( - $this->_platform->getCreateDatabaseSQL($database), - ); - } - - /** - * Creates a new table. - * - * @return void - * - * @throws Exception - */ - public function createTable(Table $table) - { - $createFlags = AbstractPlatform::CREATE_INDEXES | AbstractPlatform::CREATE_FOREIGNKEYS; - $this->_execSql($this->_platform->getCreateTableSQL($table, $createFlags)); - } - - /** - * Creates a new sequence. - * - * @param Sequence $sequence - * - * @return void - * - * @throws Exception - */ - public function createSequence($sequence) - { - $this->_conn->executeStatement( - $this->_platform->getCreateSequenceSQL($sequence), - ); - } - - /** - * Creates a constraint on a table. - * - * @deprecated Use {@see createIndex()}, {@see createForeignKey()} or {@see createUniqueConstraint()} instead. - * - * @param Table|string $table - * - * @return void - * - * @throws Exception - */ - public function createConstraint(Constraint $constraint, $table) - { - $this->_conn->executeStatement( - $this->_platform->getCreateConstraintSQL($constraint, $table), - ); - } - - /** - * Creates a new index on a table. - * - * @param Table|string $table The name of the table on which the index is to be created. - * - * @return void - * - * @throws Exception - */ - public function createIndex(Index $index, $table) - { - $this->_conn->executeStatement( - $this->_platform->getCreateIndexSQL($index, $table), - ); - } - - /** - * Creates a new foreign key. - * - * @param ForeignKeyConstraint $foreignKey The ForeignKey instance. - * @param Table|string $table The name of the table on which the foreign key is to be created. - * - * @return void - * - * @throws Exception - */ - public function createForeignKey(ForeignKeyConstraint $foreignKey, $table) - { - $this->_conn->executeStatement( - $this->_platform->getCreateForeignKeySQL($foreignKey, $table), - ); - } - - /** - * Creates a unique constraint on a table. - * - * @throws Exception - */ - public function createUniqueConstraint(UniqueConstraint $uniqueConstraint, string $tableName): void - { - $this->_conn->executeStatement( - $this->_platform->getCreateUniqueConstraintSQL($uniqueConstraint, $tableName), - ); - } - - /** - * Creates a new view. - * - * @return void - * - * @throws Exception - */ - public function createView(View $view) - { - $this->_conn->executeStatement( - $this->_platform->getCreateViewSQL( - $view->getQuotedName($this->_platform), - $view->getSql(), - ), - ); - } - - /* dropAndCreate*() Methods */ - - /** @throws Exception */ - public function dropSchemaObjects(Schema $schema): void - { - $this->_execSql($schema->toDropSql($this->_platform)); - } - - /** - * Drops and creates a constraint. - * - * @deprecated Use {@see dropIndex()} and {@see createIndex()}, - * {@see dropForeignKey()} and {@see createForeignKey()} - * or {@see dropUniqueConstraint()} and {@see createUniqueConstraint()} instead. - * - * @see dropConstraint() - * @see createConstraint() - * - * @param Table|string $table - * - * @return void - * - * @throws Exception - */ - public function dropAndCreateConstraint(Constraint $constraint, $table) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'AbstractSchemaManager::dropAndCreateConstraint() is deprecated.' - . ' Use AbstractSchemaManager::dropIndex() and AbstractSchemaManager::createIndex(),' - . ' AbstractSchemaManager::dropForeignKey() and AbstractSchemaManager::createForeignKey()' - . ' or AbstractSchemaManager::dropUniqueConstraint()' - . ' and AbstractSchemaManager::createUniqueConstraint() instead.', - ); - - $this->tryMethod('dropConstraint', $constraint, $table); - $this->createConstraint($constraint, $table); - } - - /** - * Drops and creates a new index on a table. - * - * @deprecated Use {@see dropIndex()} and {@see createIndex()} instead. - * - * @param Table|string $table The name of the table on which the index is to be created. - * - * @return void - * - * @throws Exception - */ - public function dropAndCreateIndex(Index $index, $table) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'AbstractSchemaManager::dropAndCreateIndex() is deprecated.' - . ' Use AbstractSchemaManager::dropIndex() and AbstractSchemaManager::createIndex() instead.', - ); - - $this->tryMethod('dropIndex', $index->getQuotedName($this->_platform), $table); - $this->createIndex($index, $table); - } - - /** - * Drops and creates a new foreign key. - * - * @deprecated Use {@see dropForeignKey()} and {@see createForeignKey()} instead. - * - * @param ForeignKeyConstraint $foreignKey An associative array that defines properties - * of the foreign key to be created. - * @param Table|string $table The name of the table on which the foreign key is to be created. - * - * @return void - * - * @throws Exception - */ - public function dropAndCreateForeignKey(ForeignKeyConstraint $foreignKey, $table) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'AbstractSchemaManager::dropAndCreateForeignKey() is deprecated.' - . ' Use AbstractSchemaManager::dropForeignKey() and AbstractSchemaManager::createForeignKey() instead.', - ); - - $this->tryMethod('dropForeignKey', $foreignKey, $table); - $this->createForeignKey($foreignKey, $table); - } - - /** - * Drops and create a new sequence. - * - * @deprecated Use {@see dropSequence()} and {@see createSequence()} instead. - * - * @return void - * - * @throws Exception - */ - public function dropAndCreateSequence(Sequence $sequence) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'AbstractSchemaManager::dropAndCreateSequence() is deprecated.' - . ' Use AbstractSchemaManager::dropSequence() and AbstractSchemaManager::createSequence() instead.', - ); - - $this->tryMethod('dropSequence', $sequence->getQuotedName($this->_platform)); - $this->createSequence($sequence); - } - - /** - * Drops and creates a new table. - * - * @deprecated Use {@see dropTable()} and {@see createTable()} instead. - * - * @return void - * - * @throws Exception - */ - public function dropAndCreateTable(Table $table) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'AbstractSchemaManager::dropAndCreateTable() is deprecated.' - . ' Use AbstractSchemaManager::dropTable() and AbstractSchemaManager::createTable() instead.', - ); - - $this->tryMethod('dropTable', $table->getQuotedName($this->_platform)); - $this->createTable($table); - } - - /** - * Drops and creates a new database. - * - * @deprecated Use {@see dropDatabase()} and {@see createDatabase()} instead. - * - * @param string $database The name of the database to create. - * - * @return void - * - * @throws Exception - */ - public function dropAndCreateDatabase($database) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'AbstractSchemaManager::dropAndCreateDatabase() is deprecated.' - . ' Use AbstractSchemaManager::dropDatabase() and AbstractSchemaManager::createDatabase() instead.', - ); - - $this->tryMethod('dropDatabase', $database); - $this->createDatabase($database); - } - - /** - * Drops and creates a new view. - * - * @deprecated Use {@see dropView()} and {@see createView()} instead. - * - * @return void - * - * @throws Exception - */ - public function dropAndCreateView(View $view) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'AbstractSchemaManager::dropAndCreateView() is deprecated.' - . ' Use AbstractSchemaManager::dropView() and AbstractSchemaManager::createView() instead.', - ); - - $this->tryMethod('dropView', $view->getQuotedName($this->_platform)); - $this->createView($view); - } - - /** - * Alters an existing schema. - * - * @throws Exception - */ - public function alterSchema(SchemaDiff $schemaDiff): void - { - $this->_execSql($this->_platform->getAlterSchemaSQL($schemaDiff)); - } - - /** - * Migrates an existing schema to a new schema. - * - * @throws Exception - */ - public function migrateSchema(Schema $toSchema): void - { - $schemaDiff = $this->createComparator() - ->compareSchemas($this->introspectSchema(), $toSchema); - - $this->alterSchema($schemaDiff); - } - - /* alterTable() Methods */ - - /** - * Alters an existing tables schema. - * - * @return void - * - * @throws Exception - */ - public function alterTable(TableDiff $tableDiff) - { - $this->_execSql($this->_platform->getAlterTableSQL($tableDiff)); - } - - /** - * Renames a given table to another name. - * - * @param string $name The current name of the table. - * @param string $newName The new name of the table. - * - * @return void - * - * @throws Exception - */ - public function renameTable($name, $newName) - { - $this->_execSql($this->_platform->getRenameTableSQL($name, $newName)); - } - - /** - * Methods for filtering return values of list*() methods to convert - * the native DBMS data definition to a portable Doctrine definition - */ - - /** - * @param mixed[] $databases - * - * @return string[] - */ - protected function _getPortableDatabasesList($databases) - { - $list = []; - foreach ($databases as $value) { - $list[] = $this->_getPortableDatabaseDefinition($value); - } - - return $list; - } - - /** - * Converts a list of namespace names from the native DBMS data definition to a portable Doctrine definition. - * - * @deprecated Use {@see listSchemaNames()} instead. - * - * @param array> $namespaces The list of namespace names - * in the native DBMS data definition. - * - * @return string[] - */ - protected function getPortableNamespacesList(array $namespaces) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4503', - 'AbstractSchemaManager::getPortableNamespacesList() is deprecated,' - . ' use AbstractSchemaManager::listSchemaNames() instead.', - ); - - $namespacesList = []; - - foreach ($namespaces as $namespace) { - $namespacesList[] = $this->getPortableNamespaceDefinition($namespace); - } - - return $namespacesList; - } - - /** - * @param mixed $database - * - * @return mixed - */ - protected function _getPortableDatabaseDefinition($database) - { - return $database; - } - - /** - * Converts a namespace definition from the native DBMS data definition to a portable Doctrine definition. - * - * @deprecated Use {@see listSchemaNames()} instead. - * - * @param array $namespace The native DBMS namespace definition. - * - * @return mixed - */ - protected function getPortableNamespaceDefinition(array $namespace) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4503', - 'AbstractSchemaManager::getPortableNamespaceDefinition() is deprecated,' - . ' use AbstractSchemaManager::listSchemaNames() instead.', - ); - - return $namespace; - } - - /** - * @param mixed[][] $sequences - * - * @return Sequence[] - * - * @throws Exception - */ - protected function _getPortableSequencesList($sequences) - { - $list = []; - - foreach ($sequences as $value) { - $list[] = $this->_getPortableSequenceDefinition($value); - } - - return $list; - } - - /** - * @param mixed[] $sequence - * - * @return Sequence - * - * @throws Exception - */ - protected function _getPortableSequenceDefinition($sequence) - { - throw Exception::notSupported('Sequences'); - } - - /** - * Independent of the database the keys of the column list result are lowercased. - * - * The name of the created column instance however is kept in its case. - * - * @param string $table The name of the table. - * @param string $database - * @param mixed[][] $tableColumns - * - * @return Column[] - * - * @throws Exception - */ - protected function _getPortableTableColumnList($table, $database, $tableColumns) - { - $eventManager = $this->_platform->getEventManager(); - - $list = []; - foreach ($tableColumns as $tableColumn) { - $column = null; - $defaultPrevented = false; - - if ($eventManager !== null && $eventManager->hasListeners(Events::onSchemaColumnDefinition)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated. Use a custom schema manager instead.', - Events::onSchemaColumnDefinition, - ); - - $eventArgs = new SchemaColumnDefinitionEventArgs($tableColumn, $table, $database, $this->_conn); - $eventManager->dispatchEvent(Events::onSchemaColumnDefinition, $eventArgs); - - $defaultPrevented = $eventArgs->isDefaultPrevented(); - $column = $eventArgs->getColumn(); - } - - if (! $defaultPrevented) { - $column = $this->_getPortableTableColumnDefinition($tableColumn); - } - - if ($column === null) { - continue; - } - - $name = strtolower($column->getQuotedName($this->_platform)); - $list[$name] = $column; - } - - return $list; - } - - /** - * Gets Table Column Definition. - * - * @param mixed[] $tableColumn - * - * @return Column - * - * @throws Exception - */ - abstract protected function _getPortableTableColumnDefinition($tableColumn); - - /** - * Aggregates and groups the index results according to the required data result. - * - * @param mixed[][] $tableIndexes - * @param string|null $tableName - * - * @return Index[] - * - * @throws Exception - */ - protected function _getPortableTableIndexesList($tableIndexes, $tableName = null) - { - $result = []; - foreach ($tableIndexes as $tableIndex) { - $indexName = $keyName = $tableIndex['key_name']; - if ($tableIndex['primary']) { - $keyName = 'primary'; - } - - $keyName = strtolower($keyName); - - if (! isset($result[$keyName])) { - $options = [ - 'lengths' => [], - ]; - - if (isset($tableIndex['where'])) { - $options['where'] = $tableIndex['where']; - } - - $result[$keyName] = [ - 'name' => $indexName, - 'columns' => [], - 'unique' => ! $tableIndex['non_unique'], - 'primary' => $tableIndex['primary'], - 'flags' => $tableIndex['flags'] ?? [], - 'options' => $options, - ]; - } - - $result[$keyName]['columns'][] = $tableIndex['column_name']; - $result[$keyName]['options']['lengths'][] = $tableIndex['length'] ?? null; - } - - $eventManager = $this->_platform->getEventManager(); - - $indexes = []; - foreach ($result as $indexKey => $data) { - $index = null; - $defaultPrevented = false; - - if ($eventManager !== null && $eventManager->hasListeners(Events::onSchemaIndexDefinition)) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/5784', - 'Subscribing to %s events is deprecated. Use a custom schema manager instead.', - Events::onSchemaColumnDefinition, - ); - - $eventArgs = new SchemaIndexDefinitionEventArgs($data, $tableName, $this->_conn); - $eventManager->dispatchEvent(Events::onSchemaIndexDefinition, $eventArgs); - - $defaultPrevented = $eventArgs->isDefaultPrevented(); - $index = $eventArgs->getIndex(); - } - - if (! $defaultPrevented) { - $index = new Index( - $data['name'], - $data['columns'], - $data['unique'], - $data['primary'], - $data['flags'], - $data['options'], - ); - } - - if ($index === null) { - continue; - } - - $indexes[$indexKey] = $index; - } - - return $indexes; - } - - /** - * @param mixed[][] $tables - * - * @return string[] - */ - protected function _getPortableTablesList($tables) - { - $list = []; - foreach ($tables as $value) { - $list[] = $this->_getPortableTableDefinition($value); - } - - return $list; - } - - /** - * @param mixed $table - * - * @return string - */ - protected function _getPortableTableDefinition($table) - { - return $table; - } - - /** - * @param mixed[][] $views - * - * @return View[] - */ - protected function _getPortableViewsList($views) - { - $list = []; - foreach ($views as $value) { - $view = $this->_getPortableViewDefinition($value); - - if ($view === false) { - continue; - } - - $viewName = strtolower($view->getQuotedName($this->_platform)); - $list[$viewName] = $view; - } - - return $list; - } - - /** - * @param mixed[] $view - * - * @return View|false - */ - protected function _getPortableViewDefinition($view) - { - return false; - } - - /** - * @param mixed[][] $tableForeignKeys - * - * @return ForeignKeyConstraint[] - */ - protected function _getPortableTableForeignKeysList($tableForeignKeys) - { - $list = []; - - foreach ($tableForeignKeys as $value) { - $list[] = $this->_getPortableTableForeignKeyDefinition($value); - } - - return $list; - } - - /** - * @param mixed $tableForeignKey - * - * @return ForeignKeyConstraint - * - * @abstract - */ - protected function _getPortableTableForeignKeyDefinition($tableForeignKey) - { - return $tableForeignKey; - } - - /** - * @internal - * - * @param string[]|string $sql - * - * @return void - * - * @throws Exception - */ - protected function _execSql($sql) - { - foreach ((array) $sql as $query) { - $this->_conn->executeStatement($query); - } - } - - /** - * Creates a schema instance for the current database. - * - * @deprecated Use {@link introspectSchema()} instead. - * - * @return Schema - * - * @throws Exception - */ - public function createSchema() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5613', - '%s is deprecated. Use introspectSchema() instead.', - __METHOD__, - ); - - $schemaNames = []; - - if ($this->_platform->supportsSchemas()) { - $schemaNames = $this->listNamespaceNames(); - } - - $sequences = []; - - if ($this->_platform->supportsSequences()) { - $sequences = $this->listSequences(); - } - - $tables = $this->listTables(); - - return new Schema($tables, $sequences, $this->createSchemaConfig(), $schemaNames); - } - - /** - * Returns a {@see Schema} instance representing the current database schema. - * - * @throws Exception - */ - public function introspectSchema(): Schema - { - return $this->createSchema(); - } - - /** - * Creates the configuration for this schema. - * - * @return SchemaConfig - * - * @throws Exception - */ - public function createSchemaConfig() - { - $schemaConfig = new SchemaConfig(); - $schemaConfig->setMaxIdentifierLength($this->_platform->getMaxIdentifierLength()); - - $searchPaths = $this->getSchemaSearchPaths(); - if (isset($searchPaths[0])) { - $schemaConfig->setName($searchPaths[0]); - } - - $params = $this->_conn->getParams(); - if (! isset($params['defaultTableOptions'])) { - $params['defaultTableOptions'] = []; - } - - if (! isset($params['defaultTableOptions']['charset']) && isset($params['charset'])) { - $params['defaultTableOptions']['charset'] = $params['charset']; - } - - $schemaConfig->setDefaultTableOptions($params['defaultTableOptions']); - - return $schemaConfig; - } - - /** - * The search path for namespaces in the currently connected database. - * - * The first entry is usually the default namespace in the Schema. All - * further namespaces contain tables/sequences which can also be addressed - * with a short, not full-qualified name. - * - * For databases that don't support subschema/namespaces this method - * returns the name of the currently connected database. - * - * @deprecated - * - * @return string[] - * - * @throws Exception - */ - public function getSchemaSearchPaths() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4821', - 'AbstractSchemaManager::getSchemaSearchPaths() is deprecated.', - ); - - $database = $this->_conn->getDatabase(); - - if ($database !== null) { - return [$database]; - } - - return []; - } - - /** - * Given a table comment this method tries to extract a typehint for Doctrine Type, or returns - * the type given as default. - * - * @internal This method should be only used from within the AbstractSchemaManager class hierarchy. - * - * @param string|null $comment - * @param string $currentType - * - * @return string - */ - public function extractDoctrineTypeFromComment($comment, $currentType) - { - if ($comment !== null && preg_match('(\(DC2Type:(((?!\)).)+)\))', $comment, $match) === 1) { - return $match[1]; - } - - return $currentType; - } - - /** - * @internal This method should be only used from within the AbstractSchemaManager class hierarchy. - * - * @param string|null $comment - * @param string|null $type - * - * @return string|null - */ - public function removeDoctrineTypeFromComment($comment, $type) - { - if ($comment === null) { - return null; - } - - return str_replace('(DC2Type:' . $type . ')', '', $comment); - } - - /** @throws Exception */ - private function getDatabase(string $methodName): string - { - $database = $this->_conn->getDatabase(); - - if ($database === null) { - throw DatabaseRequired::new($methodName); - } - - return $database; - } - - public function createComparator(): Comparator - { - return new Comparator($this->_platform); - } - - /** - * @return array>> - * - * @throws Exception - */ - private function fetchAllAssociativeGrouped(Result $result): array - { - $data = []; - - foreach ($result->fetchAllAssociative() as $row) { - $tableName = $this->_getPortableTableDefinition($row); - $data[$tableName][] = $row; - } - - return $data; - } -} diff --git a/vendor/doctrine/dbal/src/Schema/Column.php b/vendor/doctrine/dbal/src/Schema/Column.php deleted file mode 100644 index e1580178..00000000 --- a/vendor/doctrine/dbal/src/Schema/Column.php +++ /dev/null @@ -1,466 +0,0 @@ -_setName($name); - $this->setType($type); - $this->setOptions($options); - } - - /** - * @param mixed[] $options - * - * @return Column - * - * @throws SchemaException - */ - public function setOptions(array $options) - { - foreach ($options as $name => $value) { - $method = 'set' . $name; - - if (! method_exists($this, $method)) { - throw UnknownColumnOption::new($name); - } - - $this->$method($value); - } - - return $this; - } - - /** @return Column */ - public function setType(Type $type) - { - $this->_type = $type; - - return $this; - } - - /** - * @param int|null $length - * - * @return Column - */ - public function setLength($length) - { - if ($length !== null) { - $this->_length = (int) $length; - } else { - $this->_length = null; - } - - return $this; - } - - /** - * @param int $precision - * - * @return Column - */ - public function setPrecision($precision) - { - if (! is_numeric($precision)) { - $precision = 10; // defaults to 10 when no valid precision is given. - } - - $this->_precision = (int) $precision; - - return $this; - } - - /** - * @param int $scale - * - * @return Column - */ - public function setScale($scale) - { - if (! is_numeric($scale)) { - $scale = 0; - } - - $this->_scale = (int) $scale; - - return $this; - } - - /** - * @param bool $unsigned - * - * @return Column - */ - public function setUnsigned($unsigned) - { - $this->_unsigned = (bool) $unsigned; - - return $this; - } - - /** - * @param bool $fixed - * - * @return Column - */ - public function setFixed($fixed) - { - $this->_fixed = (bool) $fixed; - - return $this; - } - - /** - * @param bool $notnull - * - * @return Column - */ - public function setNotnull($notnull) - { - $this->_notnull = (bool) $notnull; - - return $this; - } - - /** - * @param mixed $default - * - * @return Column - */ - public function setDefault($default) - { - $this->_default = $default; - - return $this; - } - - /** - * @param mixed[] $platformOptions - * - * @return Column - */ - public function setPlatformOptions(array $platformOptions) - { - $this->_platformOptions = $platformOptions; - - return $this; - } - - /** - * @param string $name - * @param mixed $value - * - * @return Column - */ - public function setPlatformOption($name, $value) - { - $this->_platformOptions[$name] = $value; - - return $this; - } - - /** - * @param string|null $value - * - * @return Column - */ - public function setColumnDefinition($value) - { - $this->_columnDefinition = $value; - - return $this; - } - - /** @return Type */ - public function getType() - { - return $this->_type; - } - - /** @return int|null */ - public function getLength() - { - return $this->_length; - } - - /** @return int */ - public function getPrecision() - { - return $this->_precision; - } - - /** @return int */ - public function getScale() - { - return $this->_scale; - } - - /** @return bool */ - public function getUnsigned() - { - return $this->_unsigned; - } - - /** @return bool */ - public function getFixed() - { - return $this->_fixed; - } - - /** @return bool */ - public function getNotnull() - { - return $this->_notnull; - } - - /** @return mixed */ - public function getDefault() - { - return $this->_default; - } - - /** @return mixed[] */ - public function getPlatformOptions() - { - return $this->_platformOptions; - } - - /** - * @param string $name - * - * @return bool - */ - public function hasPlatformOption($name) - { - return isset($this->_platformOptions[$name]); - } - - /** - * @param string $name - * - * @return mixed - */ - public function getPlatformOption($name) - { - return $this->_platformOptions[$name]; - } - - /** @return string|null */ - public function getColumnDefinition() - { - return $this->_columnDefinition; - } - - /** @return bool */ - public function getAutoincrement() - { - return $this->_autoincrement; - } - - /** - * @param bool $flag - * - * @return Column - */ - public function setAutoincrement($flag) - { - $this->_autoincrement = $flag; - - return $this; - } - - /** - * @param string|null $comment - * - * @return Column - */ - public function setComment($comment) - { - $this->_comment = $comment; - - return $this; - } - - /** @return string|null */ - public function getComment() - { - return $this->_comment; - } - - /** - * @deprecated Use {@link setPlatformOption()} instead - * - * @param string $name - * @param mixed $value - * - * @return Column - */ - public function setCustomSchemaOption($name, $value) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5476', - 'Column::setCustomSchemaOption() is deprecated. Use setPlatformOption() instead.', - ); - - $this->_customSchemaOptions[$name] = $value; - - return $this; - } - - /** - * @deprecated Use {@link hasPlatformOption()} instead - * - * @param string $name - * - * @return bool - */ - public function hasCustomSchemaOption($name) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5476', - 'Column::hasCustomSchemaOption() is deprecated. Use hasPlatformOption() instead.', - ); - - return isset($this->_customSchemaOptions[$name]); - } - - /** - * @deprecated Use {@link getPlatformOption()} instead - * - * @param string $name - * - * @return mixed - */ - public function getCustomSchemaOption($name) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5476', - 'Column::getCustomSchemaOption() is deprecated. Use getPlatformOption() instead.', - ); - - return $this->_customSchemaOptions[$name]; - } - - /** - * @deprecated Use {@link setPlatformOptions()} instead - * - * @param mixed[] $customSchemaOptions - * - * @return Column - */ - public function setCustomSchemaOptions(array $customSchemaOptions) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5476', - 'Column::setCustomSchemaOptions() is deprecated. Use setPlatformOptions() instead.', - ); - - $this->_customSchemaOptions = $customSchemaOptions; - - return $this; - } - - /** - * @deprecated Use {@link getPlatformOptions()} instead - * - * @return mixed[] - */ - public function getCustomSchemaOptions() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5476', - 'Column::getCustomSchemaOptions() is deprecated. Use getPlatformOptions() instead.', - ); - - return $this->_customSchemaOptions; - } - - /** @return mixed[] */ - public function toArray() - { - return array_merge([ - 'name' => $this->_name, - 'type' => $this->_type, - 'default' => $this->_default, - 'notnull' => $this->_notnull, - 'length' => $this->_length, - 'precision' => $this->_precision, - 'scale' => $this->_scale, - 'fixed' => $this->_fixed, - 'unsigned' => $this->_unsigned, - 'autoincrement' => $this->_autoincrement, - 'columnDefinition' => $this->_columnDefinition, - 'comment' => $this->_comment, - ], $this->_platformOptions, $this->_customSchemaOptions); - } -} diff --git a/vendor/doctrine/dbal/src/Schema/ColumnDiff.php b/vendor/doctrine/dbal/src/Schema/ColumnDiff.php deleted file mode 100644 index bd1b0eee..00000000 --- a/vendor/doctrine/dbal/src/Schema/ColumnDiff.php +++ /dev/null @@ -1,169 +0,0 @@ -oldColumnName = $oldColumnName; - $this->column = $column; - $this->changedProperties = $changedProperties; - $this->fromColumn = $fromColumn; - } - - public function getOldColumn(): ?Column - { - return $this->fromColumn; - } - - public function getNewColumn(): Column - { - return $this->column; - } - - public function hasTypeChanged(): bool - { - return $this->hasChanged('type'); - } - - public function hasLengthChanged(): bool - { - return $this->hasChanged('length'); - } - - public function hasPrecisionChanged(): bool - { - return $this->hasChanged('precision'); - } - - public function hasScaleChanged(): bool - { - return $this->hasChanged('scale'); - } - - public function hasUnsignedChanged(): bool - { - return $this->hasChanged('unsigned'); - } - - public function hasFixedChanged(): bool - { - return $this->hasChanged('fixed'); - } - - public function hasNotNullChanged(): bool - { - return $this->hasChanged('notnull'); - } - - public function hasDefaultChanged(): bool - { - return $this->hasChanged('default'); - } - - public function hasAutoIncrementChanged(): bool - { - return $this->hasChanged('autoincrement'); - } - - public function hasCommentChanged(): bool - { - return $this->hasChanged('comment'); - } - - /** - * @deprecated Use {@see hasTypeChanged()}, {@see hasLengthChanged()}, {@see hasPrecisionChanged()}, - * {@see hasScaleChanged()}, {@see hasUnsignedChanged()}, {@see hasFixedChanged()}, {@see hasNotNullChanged()}, - * {@see hasDefaultChanged()}, {@see hasAutoIncrementChanged()} or {@see hasCommentChanged()} instead. - * - * @param string $propertyName - * - * @return bool - */ - public function hasChanged($propertyName) - { - return in_array($propertyName, $this->changedProperties, true); - } - - /** - * @deprecated Use {@see $fromColumn} instead. - * - * @return Identifier - */ - public function getOldColumnName() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5622', - '%s is deprecated. Use $fromColumn instead.', - __METHOD__, - ); - - if ($this->fromColumn !== null) { - $name = $this->fromColumn->getName(); - $quote = $this->fromColumn->isQuoted(); - } else { - $name = $this->oldColumnName; - $quote = false; - } - - return new Identifier($name, $quote); - } -} diff --git a/vendor/doctrine/dbal/src/Schema/Comparator.php b/vendor/doctrine/dbal/src/Schema/Comparator.php deleted file mode 100644 index 28e7f2f7..00000000 --- a/vendor/doctrine/dbal/src/Schema/Comparator.php +++ /dev/null @@ -1,716 +0,0 @@ -platform = $platform; - } - - /** @param list $args */ - public function __call(string $method, array $args): SchemaDiff - { - if ($method !== 'compareSchemas') { - throw new BadMethodCallException(sprintf('Unknown method "%s"', $method)); - } - - return $this->doCompareSchemas(...$args); - } - - /** @param list $args */ - public static function __callStatic(string $method, array $args): SchemaDiff - { - if ($method !== 'compareSchemas') { - throw new BadMethodCallException(sprintf('Unknown method "%s"', $method)); - } - - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4707', - 'Calling %s::%s() statically is deprecated.', - self::class, - $method, - ); - - $comparator = new self(); - - return $comparator->doCompareSchemas(...$args); - } - - /** - * Returns a SchemaDiff object containing the differences between the schemas $fromSchema and $toSchema. - * - * This method should be called non-statically since it will be declared as non-static in the next major release. - * - * @return SchemaDiff - * - * @throws SchemaException - */ - private function doCompareSchemas( - Schema $fromSchema, - Schema $toSchema - ) { - $createdSchemas = []; - $droppedSchemas = []; - $createdTables = []; - $alteredTables = []; - $droppedTables = []; - $createdSequences = []; - $alteredSequences = []; - $droppedSequences = []; - - $orphanedForeignKeys = []; - - $foreignKeysToTable = []; - - foreach ($toSchema->getNamespaces() as $namespace) { - if ($fromSchema->hasNamespace($namespace)) { - continue; - } - - $createdSchemas[$namespace] = $namespace; - } - - foreach ($fromSchema->getNamespaces() as $namespace) { - if ($toSchema->hasNamespace($namespace)) { - continue; - } - - $droppedSchemas[$namespace] = $namespace; - } - - foreach ($toSchema->getTables() as $table) { - $tableName = $table->getShortestName($toSchema->getName()); - if (! $fromSchema->hasTable($tableName)) { - $createdTables[$tableName] = $toSchema->getTable($tableName); - } else { - $tableDifferences = $this->diffTable( - $fromSchema->getTable($tableName), - $toSchema->getTable($tableName), - ); - - if ($tableDifferences !== false) { - $alteredTables[$tableName] = $tableDifferences; - } - } - } - - /* Check if there are tables removed */ - foreach ($fromSchema->getTables() as $table) { - $tableName = $table->getShortestName($fromSchema->getName()); - - $table = $fromSchema->getTable($tableName); - if (! $toSchema->hasTable($tableName)) { - $droppedTables[$tableName] = $table; - } - - // also remember all foreign keys that point to a specific table - foreach ($table->getForeignKeys() as $foreignKey) { - $foreignTable = strtolower($foreignKey->getForeignTableName()); - if (! isset($foreignKeysToTable[$foreignTable])) { - $foreignKeysToTable[$foreignTable] = []; - } - - $foreignKeysToTable[$foreignTable][] = $foreignKey; - } - } - - foreach ($droppedTables as $tableName => $table) { - if (! isset($foreignKeysToTable[$tableName])) { - continue; - } - - foreach ($foreignKeysToTable[$tableName] as $foreignKey) { - if (isset($droppedTables[strtolower($foreignKey->getLocalTableName())])) { - continue; - } - - $orphanedForeignKeys[] = $foreignKey; - } - - // deleting duplicated foreign keys present on both on the orphanedForeignKey - // and the removedForeignKeys from changedTables - foreach ($foreignKeysToTable[$tableName] as $foreignKey) { - // strtolower the table name to make if compatible with getShortestName - $localTableName = strtolower($foreignKey->getLocalTableName()); - if (! isset($alteredTables[$localTableName])) { - continue; - } - - foreach ($alteredTables[$localTableName]->getDroppedForeignKeys() as $droppedForeignKey) { - assert($droppedForeignKey instanceof ForeignKeyConstraint); - - // We check if the key is from the removed table if not we skip. - if ($tableName !== strtolower($droppedForeignKey->getForeignTableName())) { - continue; - } - - $alteredTables[$localTableName]->unsetDroppedForeignKey($droppedForeignKey); - } - } - } - - foreach ($toSchema->getSequences() as $sequence) { - $sequenceName = $sequence->getShortestName($toSchema->getName()); - if (! $fromSchema->hasSequence($sequenceName)) { - if (! $this->isAutoIncrementSequenceInSchema($fromSchema, $sequence)) { - $createdSequences[] = $sequence; - } - } else { - if ($this->diffSequence($sequence, $fromSchema->getSequence($sequenceName))) { - $alteredSequences[] = $toSchema->getSequence($sequenceName); - } - } - } - - foreach ($fromSchema->getSequences() as $sequence) { - if ($this->isAutoIncrementSequenceInSchema($toSchema, $sequence)) { - continue; - } - - $sequenceName = $sequence->getShortestName($fromSchema->getName()); - - if ($toSchema->hasSequence($sequenceName)) { - continue; - } - - $droppedSequences[] = $sequence; - } - - $diff = new SchemaDiff( - $createdTables, - $alteredTables, - $droppedTables, - $fromSchema, - $createdSchemas, - $droppedSchemas, - $createdSequences, - $alteredSequences, - $droppedSequences, - ); - - $diff->orphanedForeignKeys = $orphanedForeignKeys; - - return $diff; - } - - /** - * @deprecated Use non-static call to {@see compareSchemas()} instead. - * - * @return SchemaDiff - * - * @throws SchemaException - */ - public function compare(Schema $fromSchema, Schema $toSchema) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4707', - 'Method compare() is deprecated. Use a non-static call to compareSchemas() instead.', - ); - - return $this->compareSchemas($fromSchema, $toSchema); - } - - /** - * @param Schema $schema - * @param Sequence $sequence - */ - private function isAutoIncrementSequenceInSchema($schema, $sequence): bool - { - foreach ($schema->getTables() as $table) { - if ($sequence->isAutoIncrementsFor($table)) { - return true; - } - } - - return false; - } - - /** @return bool */ - public function diffSequence(Sequence $sequence1, Sequence $sequence2) - { - if ($sequence1->getAllocationSize() !== $sequence2->getAllocationSize()) { - return true; - } - - return $sequence1->getInitialValue() !== $sequence2->getInitialValue(); - } - - /** - * Returns the difference between the tables $fromTable and $toTable. - * - * If there are no differences this method returns the boolean false. - * - * @deprecated Use {@see compareTables()} and, optionally, {@see TableDiff::isEmpty()} instead. - * - * @return TableDiff|false - * - * @throws Exception - */ - public function diffTable(Table $fromTable, Table $toTable) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5770', - '%s is deprecated. Use compareTables() instead.', - __METHOD__, - ); - - $diff = $this->compareTables($fromTable, $toTable); - - if ($diff->isEmpty()) { - return false; - } - - return $diff; - } - - /** - * Compares the tables and returns the difference between them. - * - * @throws Exception - */ - public function compareTables(Table $fromTable, Table $toTable): TableDiff - { - $addedColumns = []; - $modifiedColumns = []; - $droppedColumns = []; - $addedIndexes = []; - $modifiedIndexes = []; - $droppedIndexes = []; - $addedForeignKeys = []; - $modifiedForeignKeys = []; - $droppedForeignKeys = []; - - $fromTableColumns = $fromTable->getColumns(); - $toTableColumns = $toTable->getColumns(); - - /* See if all the columns in "from" table exist in "to" table */ - foreach ($toTableColumns as $columnName => $column) { - if ($fromTable->hasColumn($columnName)) { - continue; - } - - $addedColumns[$columnName] = $column; - } - - /* See if there are any removed columns in "to" table */ - foreach ($fromTableColumns as $columnName => $column) { - // See if column is removed in "to" table. - if (! $toTable->hasColumn($columnName)) { - $droppedColumns[$columnName] = $column; - - continue; - } - - $toColumn = $toTable->getColumn($columnName); - - // See if column has changed properties in "to" table. - $changedProperties = $this->diffColumn($column, $toColumn); - - if ($this->platform !== null) { - if ($this->columnsEqual($column, $toColumn)) { - continue; - } - } elseif (count($changedProperties) === 0) { - continue; - } - - $modifiedColumns[$column->getName()] = new ColumnDiff( - $column->getName(), - $toColumn, - $changedProperties, - $column, - ); - } - - $renamedColumns = $this->detectRenamedColumns($addedColumns, $droppedColumns); - - $fromTableIndexes = $fromTable->getIndexes(); - $toTableIndexes = $toTable->getIndexes(); - - /* See if all the indexes in "from" table exist in "to" table */ - foreach ($toTableIndexes as $indexName => $index) { - if (($index->isPrimary() && $fromTable->getPrimaryKey() !== null) || $fromTable->hasIndex($indexName)) { - continue; - } - - $addedIndexes[$indexName] = $index; - } - - /* See if there are any removed indexes in "to" table */ - foreach ($fromTableIndexes as $indexName => $index) { - // See if index is removed in "to" table. - if ( - ($index->isPrimary() && $toTable->getPrimaryKey() === null) || - ! $index->isPrimary() && ! $toTable->hasIndex($indexName) - ) { - $droppedIndexes[$indexName] = $index; - - continue; - } - - // See if index has changed in "to" table. - $toTableIndex = $index->isPrimary() ? $toTable->getPrimaryKey() : $toTable->getIndex($indexName); - assert($toTableIndex instanceof Index); - - if (! $this->diffIndex($index, $toTableIndex)) { - continue; - } - - $modifiedIndexes[$indexName] = $toTableIndex; - } - - $renamedIndexes = $this->detectRenamedIndexes($addedIndexes, $droppedIndexes); - - $fromForeignKeys = $fromTable->getForeignKeys(); - $toForeignKeys = $toTable->getForeignKeys(); - - foreach ($fromForeignKeys as $fromKey => $fromConstraint) { - foreach ($toForeignKeys as $toKey => $toConstraint) { - if ($this->diffForeignKey($fromConstraint, $toConstraint) === false) { - unset($fromForeignKeys[$fromKey], $toForeignKeys[$toKey]); - } else { - if (strtolower($fromConstraint->getName()) === strtolower($toConstraint->getName())) { - $modifiedForeignKeys[] = $toConstraint; - - unset($fromForeignKeys[$fromKey], $toForeignKeys[$toKey]); - } - } - } - } - - foreach ($fromForeignKeys as $fromConstraint) { - $droppedForeignKeys[] = $fromConstraint; - } - - foreach ($toForeignKeys as $toConstraint) { - $addedForeignKeys[] = $toConstraint; - } - - return new TableDiff( - $toTable->getName(), - $addedColumns, - $modifiedColumns, - $droppedColumns, - $addedIndexes, - $modifiedIndexes, - $droppedIndexes, - $fromTable, - $addedForeignKeys, - $modifiedForeignKeys, - $droppedForeignKeys, - $renamedColumns, - $renamedIndexes, - ); - } - - /** - * Try to find columns that only changed their name, rename operations maybe cheaper than add/drop - * however ambiguities between different possibilities should not lead to renaming at all. - * - * @param array $addedColumns - * @param array $removedColumns - * - * @return array - * - * @throws Exception - */ - private function detectRenamedColumns(array &$addedColumns, array &$removedColumns): array - { - $candidatesByName = []; - - foreach ($addedColumns as $addedColumnName => $addedColumn) { - foreach ($removedColumns as $removedColumn) { - if (! $this->columnsEqual($addedColumn, $removedColumn)) { - continue; - } - - $candidatesByName[$addedColumn->getName()][] = [$removedColumn, $addedColumn, $addedColumnName]; - } - } - - $renamedColumns = []; - - foreach ($candidatesByName as $candidates) { - if (count($candidates) !== 1) { - continue; - } - - [$removedColumn, $addedColumn] = $candidates[0]; - $removedColumnName = $removedColumn->getName(); - $addedColumnName = strtolower($addedColumn->getName()); - - if (isset($renamedColumns[$removedColumnName])) { - continue; - } - - $renamedColumns[$removedColumnName] = $addedColumn; - unset( - $addedColumns[$addedColumnName], - $removedColumns[strtolower($removedColumnName)], - ); - } - - return $renamedColumns; - } - - /** - * Try to find indexes that only changed their name, rename operations maybe cheaper than add/drop - * however ambiguities between different possibilities should not lead to renaming at all. - * - * @param array $addedIndexes - * @param array $removedIndexes - * - * @return array - */ - private function detectRenamedIndexes(array &$addedIndexes, array &$removedIndexes): array - { - $candidatesByName = []; - - // Gather possible rename candidates by comparing each added and removed index based on semantics. - foreach ($addedIndexes as $addedIndexName => $addedIndex) { - foreach ($removedIndexes as $removedIndex) { - if ($this->diffIndex($addedIndex, $removedIndex)) { - continue; - } - - $candidatesByName[$addedIndex->getName()][] = [$removedIndex, $addedIndex, $addedIndexName]; - } - } - - $renamedIndexes = []; - - foreach ($candidatesByName as $candidates) { - // If the current rename candidate contains exactly one semantically equal index, - // we can safely rename it. - // Otherwise, it is unclear if a rename action is really intended, - // therefore we let those ambiguous indexes be added/dropped. - if (count($candidates) !== 1) { - continue; - } - - [$removedIndex, $addedIndex] = $candidates[0]; - - $removedIndexName = strtolower($removedIndex->getName()); - $addedIndexName = strtolower($addedIndex->getName()); - - if (isset($renamedIndexes[$removedIndexName])) { - continue; - } - - $renamedIndexes[$removedIndexName] = $addedIndex; - unset( - $addedIndexes[$addedIndexName], - $removedIndexes[$removedIndexName], - ); - } - - return $renamedIndexes; - } - - /** - * @internal The method should be only used from within the {@see Comparator} class hierarchy. - * - * @return bool - */ - public function diffForeignKey(ForeignKeyConstraint $key1, ForeignKeyConstraint $key2) - { - if ( - array_map('strtolower', $key1->getUnquotedLocalColumns()) - !== array_map('strtolower', $key2->getUnquotedLocalColumns()) - ) { - return true; - } - - if ( - array_map('strtolower', $key1->getUnquotedForeignColumns()) - !== array_map('strtolower', $key2->getUnquotedForeignColumns()) - ) { - return true; - } - - if ($key1->getUnqualifiedForeignTableName() !== $key2->getUnqualifiedForeignTableName()) { - return true; - } - - if ($key1->onUpdate() !== $key2->onUpdate()) { - return true; - } - - return $key1->onDelete() !== $key2->onDelete(); - } - - /** - * Compares the definitions of the given columns - * - * @internal The method should be only used from within the {@see Comparator} class hierarchy. - * - * @throws Exception - */ - public function columnsEqual(Column $column1, Column $column2): bool - { - if ($this->platform === null) { - return $this->diffColumn($column1, $column2) === []; - } - - return $this->platform->columnsEqual($column1, $column2); - } - - /** - * Returns the difference between the columns - * - * If there are differences this method returns the changed properties as a - * string array, otherwise an empty array gets returned. - * - * @deprecated Use {@see columnsEqual()} instead. - * - * @return string[] - */ - public function diffColumn(Column $column1, Column $column2) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5650', - '%s is deprecated. Use diffTable() instead.', - __METHOD__, - ); - - $properties1 = $column1->toArray(); - $properties2 = $column2->toArray(); - - $changedProperties = []; - - if (get_class($properties1['type']) !== get_class($properties2['type'])) { - $changedProperties[] = 'type'; - } - - foreach (['notnull', 'unsigned', 'autoincrement'] as $property) { - if ($properties1[$property] === $properties2[$property]) { - continue; - } - - $changedProperties[] = $property; - } - - // Null values need to be checked additionally as they tell whether to create or drop a default value. - // null != 0, null != false, null != '' etc. This affects platform's table alteration SQL generation. - if ( - ($properties1['default'] === null) !== ($properties2['default'] === null) - || $properties1['default'] != $properties2['default'] - ) { - $changedProperties[] = 'default'; - } - - if ( - ($properties1['type'] instanceof Types\StringType && ! $properties1['type'] instanceof Types\GuidType) || - $properties1['type'] instanceof Types\BinaryType - ) { - // check if value of length is set at all, default value assumed otherwise. - $length1 = $properties1['length'] ?? 255; - $length2 = $properties2['length'] ?? 255; - if ($length1 !== $length2) { - $changedProperties[] = 'length'; - } - - if ($properties1['fixed'] !== $properties2['fixed']) { - $changedProperties[] = 'fixed'; - } - } elseif ($properties1['type'] instanceof Types\DecimalType) { - if (($properties1['precision'] ?? 10) !== ($properties2['precision'] ?? 10)) { - $changedProperties[] = 'precision'; - } - - if ($properties1['scale'] !== $properties2['scale']) { - $changedProperties[] = 'scale'; - } - } - - // A null value and an empty string are actually equal for a comment so they should not trigger a change. - if ( - $properties1['comment'] !== $properties2['comment'] && - ! ($properties1['comment'] === null && $properties2['comment'] === '') && - ! ($properties2['comment'] === null && $properties1['comment'] === '') - ) { - $changedProperties[] = 'comment'; - } - - $customOptions1 = $column1->getCustomSchemaOptions(); - $customOptions2 = $column2->getCustomSchemaOptions(); - - foreach (array_merge(array_keys($customOptions1), array_keys($customOptions2)) as $key) { - if (! array_key_exists($key, $properties1) || ! array_key_exists($key, $properties2)) { - $changedProperties[] = $key; - } elseif ($properties1[$key] !== $properties2[$key]) { - $changedProperties[] = $key; - } - } - - $platformOptions1 = $column1->getPlatformOptions(); - $platformOptions2 = $column2->getPlatformOptions(); - - foreach (array_keys(array_intersect_key($platformOptions1, $platformOptions2)) as $key) { - if ($properties1[$key] === $properties2[$key]) { - continue; - } - - $changedProperties[] = $key; - } - - return array_unique($changedProperties); - } - - /** - * Finds the difference between the indexes $index1 and $index2. - * - * Compares $index1 with $index2 and returns true if there are any - * differences or false in case there are no differences. - * - * @internal The method should be only used from within the {@see Comparator} class hierarchy. - * - * @return bool - */ - public function diffIndex(Index $index1, Index $index2) - { - return ! ($index1->isFulfilledBy($index2) && $index2->isFulfilledBy($index1)); - } -} diff --git a/vendor/doctrine/dbal/src/Schema/Constraint.php b/vendor/doctrine/dbal/src/Schema/Constraint.php deleted file mode 100644 index f47ee1fd..00000000 --- a/vendor/doctrine/dbal/src/Schema/Constraint.php +++ /dev/null @@ -1,41 +0,0 @@ - - */ -class DB2SchemaManager extends AbstractSchemaManager -{ - /** - * {@inheritDoc} - */ - public function listTableNames() - { - return $this->doListTableNames(); - } - - /** - * {@inheritDoc} - */ - public function listTables() - { - return $this->doListTables(); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see introspectTable()} instead. - */ - public function listTableDetails($name) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5595', - '%s is deprecated. Use introspectTable() instead.', - __METHOD__, - ); - - return $this->doListTableDetails($name); - } - - /** - * {@inheritDoc} - */ - public function listTableColumns($table, $database = null) - { - return $this->doListTableColumns($table, $database); - } - - /** - * {@inheritDoc} - */ - public function listTableIndexes($table) - { - return $this->doListTableIndexes($table); - } - - /** - * {@inheritDoc} - */ - public function listTableForeignKeys($table, $database = null) - { - return $this->doListTableForeignKeys($table, $database); - } - - /** - * {@inheritDoc} - * - * @throws Exception - */ - protected function _getPortableTableColumnDefinition($tableColumn) - { - $tableColumn = array_change_key_case($tableColumn, CASE_LOWER); - - $length = null; - $fixed = null; - $scale = false; - $precision = false; - - $default = null; - - if ($tableColumn['default'] !== null && $tableColumn['default'] !== 'NULL') { - $default = $tableColumn['default']; - - if (preg_match('/^\'(.*)\'$/s', $default, $matches) === 1) { - $default = str_replace("''", "'", $matches[1]); - } - } - - $type = $this->_platform->getDoctrineTypeMapping($tableColumn['typename']); - - if (isset($tableColumn['comment'])) { - $type = $this->extractDoctrineTypeFromComment($tableColumn['comment'], $type); - $tableColumn['comment'] = $this->removeDoctrineTypeFromComment($tableColumn['comment'], $type); - } - - switch (strtolower($tableColumn['typename'])) { - case 'varchar': - if ($tableColumn['codepage'] === 0) { - $type = Types::BINARY; - } - - $length = $tableColumn['length']; - $fixed = false; - break; - - case 'character': - if ($tableColumn['codepage'] === 0) { - $type = Types::BINARY; - } - - $length = $tableColumn['length']; - $fixed = true; - break; - - case 'clob': - $length = $tableColumn['length']; - break; - - case 'decimal': - case 'double': - case 'real': - $scale = $tableColumn['scale']; - $precision = $tableColumn['length']; - break; - } - - $options = [ - 'length' => $length, - 'fixed' => (bool) $fixed, - 'default' => $default, - 'autoincrement' => (bool) $tableColumn['autoincrement'], - 'notnull' => $tableColumn['nulls'] === 'N', - 'comment' => isset($tableColumn['comment']) && $tableColumn['comment'] !== '' - ? $tableColumn['comment'] - : null, - ]; - - if ($scale !== null && $precision !== null) { - $options['scale'] = $scale; - $options['precision'] = $precision; - } - - return new Column($tableColumn['colname'], Type::getType($type), $options); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableDefinition($table) - { - $table = array_change_key_case($table, CASE_LOWER); - - return $table['name']; - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableIndexesList($tableIndexes, $tableName = null) - { - foreach ($tableIndexes as &$tableIndexRow) { - $tableIndexRow = array_change_key_case($tableIndexRow, CASE_LOWER); - $tableIndexRow['primary'] = (bool) $tableIndexRow['primary']; - } - - return parent::_getPortableTableIndexesList($tableIndexes, $tableName); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeyDefinition($tableForeignKey) - { - return new ForeignKeyConstraint( - $tableForeignKey['local_columns'], - $tableForeignKey['foreign_table'], - $tableForeignKey['foreign_columns'], - $tableForeignKey['name'], - $tableForeignKey['options'], - ); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeysList($tableForeignKeys) - { - $foreignKeys = []; - - foreach ($tableForeignKeys as $tableForeignKey) { - $tableForeignKey = array_change_key_case($tableForeignKey, CASE_LOWER); - - if (! isset($foreignKeys[$tableForeignKey['index_name']])) { - $foreignKeys[$tableForeignKey['index_name']] = [ - 'local_columns' => [$tableForeignKey['local_column']], - 'foreign_table' => $tableForeignKey['foreign_table'], - 'foreign_columns' => [$tableForeignKey['foreign_column']], - 'name' => $tableForeignKey['index_name'], - 'options' => [ - 'onUpdate' => $tableForeignKey['on_update'], - 'onDelete' => $tableForeignKey['on_delete'], - ], - ]; - } else { - $foreignKeys[$tableForeignKey['index_name']]['local_columns'][] = $tableForeignKey['local_column']; - $foreignKeys[$tableForeignKey['index_name']]['foreign_columns'][] = $tableForeignKey['foreign_column']; - } - } - - return parent::_getPortableTableForeignKeysList($foreignKeys); - } - - /** - * @param string $def - * - * @return string|null - */ - protected function _getPortableForeignKeyRuleDef($def) - { - if ($def === 'C') { - return 'CASCADE'; - } - - if ($def === 'N') { - return 'SET NULL'; - } - - return null; - } - - /** - * {@inheritDoc} - */ - protected function _getPortableViewDefinition($view) - { - $view = array_change_key_case($view, CASE_LOWER); - - $sql = ''; - $pos = strpos($view['text'], ' AS '); - - if ($pos !== false) { - $sql = substr($view['text'], $pos + 4); - } - - return new View($view['name'], $sql); - } - - protected function normalizeName(string $name): string - { - $identifier = new Identifier($name); - - return $identifier->isQuoted() ? $identifier->getName() : strtoupper($name); - } - - protected function selectTableNames(string $databaseName): Result - { - $sql = <<<'SQL' -SELECT NAME -FROM SYSIBM.SYSTABLES -WHERE TYPE = 'T' - AND CREATOR = ? -SQL; - - return $this->_conn->executeQuery($sql, [$databaseName]); - } - - protected function selectTableColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' C.TABNAME AS NAME,'; - } - - $sql .= <<<'SQL' - C.COLNAME, - C.TYPENAME, - C.CODEPAGE, - C.NULLS, - C.LENGTH, - C.SCALE, - C.REMARKS AS COMMENT, - CASE - WHEN C.GENERATED = 'D' THEN 1 - ELSE 0 - END AS AUTOINCREMENT, - C.DEFAULT -FROM SYSCAT.COLUMNS C - JOIN SYSCAT.TABLES AS T - ON T.TABSCHEMA = C.TABSCHEMA - AND T.TABNAME = C.TABNAME -SQL; - - $conditions = ['C.TABSCHEMA = ?', "T.TYPE = 'T'"]; - $params = [$databaseName]; - - if ($tableName !== null) { - $conditions[] = 'C.TABNAME = ?'; - $params[] = $tableName; - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY C.TABNAME, C.COLNO'; - - return $this->_conn->executeQuery($sql, $params); - } - - protected function selectIndexColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' IDX.TABNAME AS NAME,'; - } - - $sql .= <<<'SQL' - IDX.INDNAME AS KEY_NAME, - IDXCOL.COLNAME AS COLUMN_NAME, - CASE - WHEN IDX.UNIQUERULE = 'P' THEN 1 - ELSE 0 - END AS PRIMARY, - CASE - WHEN IDX.UNIQUERULE = 'D' THEN 1 - ELSE 0 - END AS NON_UNIQUE - FROM SYSCAT.INDEXES AS IDX - JOIN SYSCAT.TABLES AS T - ON IDX.TABSCHEMA = T.TABSCHEMA AND IDX.TABNAME = T.TABNAME - JOIN SYSCAT.INDEXCOLUSE AS IDXCOL - ON IDX.INDSCHEMA = IDXCOL.INDSCHEMA AND IDX.INDNAME = IDXCOL.INDNAME -SQL; - - $conditions = ['IDX.TABSCHEMA = ?', "T.TYPE = 'T'"]; - $params = [$databaseName]; - - if ($tableName !== null) { - $conditions[] = 'IDX.TABNAME = ?'; - $params[] = $tableName; - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY IDX.INDNAME, IDXCOL.COLSEQ'; - - return $this->_conn->executeQuery($sql, $params); - } - - protected function selectForeignKeyColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' R.TABNAME AS NAME,'; - } - - $sql .= <<<'SQL' - FKCOL.COLNAME AS LOCAL_COLUMN, - R.REFTABNAME AS FOREIGN_TABLE, - PKCOL.COLNAME AS FOREIGN_COLUMN, - R.CONSTNAME AS INDEX_NAME, - CASE - WHEN R.UPDATERULE = 'R' THEN 'RESTRICT' - END AS ON_UPDATE, - CASE - WHEN R.DELETERULE = 'C' THEN 'CASCADE' - WHEN R.DELETERULE = 'N' THEN 'SET NULL' - WHEN R.DELETERULE = 'R' THEN 'RESTRICT' - END AS ON_DELETE - FROM SYSCAT.REFERENCES AS R - JOIN SYSCAT.TABLES AS T - ON T.TABSCHEMA = R.TABSCHEMA - AND T.TABNAME = R.TABNAME - JOIN SYSCAT.KEYCOLUSE AS FKCOL - ON FKCOL.CONSTNAME = R.CONSTNAME - AND FKCOL.TABSCHEMA = R.TABSCHEMA - AND FKCOL.TABNAME = R.TABNAME - JOIN SYSCAT.KEYCOLUSE AS PKCOL - ON PKCOL.CONSTNAME = R.REFKEYNAME - AND PKCOL.TABSCHEMA = R.REFTABSCHEMA - AND PKCOL.TABNAME = R.REFTABNAME - AND PKCOL.COLSEQ = FKCOL.COLSEQ -SQL; - - $conditions = ['R.TABSCHEMA = ?', "T.TYPE = 'T'"]; - $params = [$databaseName]; - - if ($tableName !== null) { - $conditions[] = 'R.TABNAME = ?'; - $params[] = $tableName; - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY R.CONSTNAME, FKCOL.COLSEQ'; - - return $this->_conn->executeQuery($sql, $params); - } - - /** - * {@inheritDoc} - */ - protected function fetchTableOptionsByTable(string $databaseName, ?string $tableName = null): array - { - $sql = 'SELECT NAME, REMARKS'; - - $conditions = []; - $params = []; - - if ($tableName !== null) { - $conditions[] = 'NAME = ?'; - $params[] = $tableName; - } - - $sql .= ' FROM SYSIBM.SYSTABLES'; - - if ($conditions !== []) { - $sql .= ' WHERE ' . implode(' AND ', $conditions); - } - - /** @var array> $metadata */ - $metadata = $this->_conn->executeQuery($sql, $params) - ->fetchAllAssociativeIndexed(); - - $tableOptions = []; - foreach ($metadata as $table => $data) { - $data = array_change_key_case($data, CASE_LOWER); - - $tableOptions[$table] = ['comment' => $data['remarks']]; - } - - return $tableOptions; - } -} diff --git a/vendor/doctrine/dbal/src/Schema/DefaultSchemaManagerFactory.php b/vendor/doctrine/dbal/src/Schema/DefaultSchemaManagerFactory.php deleted file mode 100644 index efba87f2..00000000 --- a/vendor/doctrine/dbal/src/Schema/DefaultSchemaManagerFactory.php +++ /dev/null @@ -1,20 +0,0 @@ -getDatabasePlatform()->createSchemaManager($connection); - } -} diff --git a/vendor/doctrine/dbal/src/Schema/Exception/ColumnAlreadyExists.php b/vendor/doctrine/dbal/src/Schema/Exception/ColumnAlreadyExists.php deleted file mode 100644 index cc7acea0..00000000 --- a/vendor/doctrine/dbal/src/Schema/Exception/ColumnAlreadyExists.php +++ /dev/null @@ -1,21 +0,0 @@ -getName(), - implode(', ', $foreignKey->getColumns()), - $foreignKey->getForeignTableName(), - implode(', ', $foreignKey->getForeignColumns()), - ), - ); - } -} diff --git a/vendor/doctrine/dbal/src/Schema/Exception/NamespaceAlreadyExists.php b/vendor/doctrine/dbal/src/Schema/Exception/NamespaceAlreadyExists.php deleted file mode 100644 index 008bd5f0..00000000 --- a/vendor/doctrine/dbal/src/Schema/Exception/NamespaceAlreadyExists.php +++ /dev/null @@ -1,21 +0,0 @@ - Identifier) - * - * @var Identifier[] - */ - protected $_localColumnNames; - - /** - * Table or asset identifier instance of the referenced table name the foreign key constraint is associated with. - * - * @var Table|Identifier - */ - protected $_foreignTableName; - - /** - * Asset identifier instances of the referenced table column names the foreign key constraint is associated with. - * array($columnName => Identifier) - * - * @var Identifier[] - */ - protected $_foreignColumnNames; - - /** - * Options associated with the foreign key constraint. - * - * @var mixed[] - */ - protected $_options; - - /** - * Initializes the foreign key constraint. - * - * @param string[] $localColumnNames Names of the referencing table columns. - * @param Table|string $foreignTableName Referenced table. - * @param string[] $foreignColumnNames Names of the referenced table columns. - * @param string|null $name Name of the foreign key constraint. - * @param mixed[] $options Options associated with the foreign key constraint. - */ - public function __construct( - array $localColumnNames, - $foreignTableName, - array $foreignColumnNames, - $name = null, - array $options = [] - ) { - if ($name !== null) { - $this->_setName($name); - } - - $this->_localColumnNames = $this->createIdentifierMap($localColumnNames); - - if ($foreignTableName instanceof Table) { - $this->_foreignTableName = $foreignTableName; - } else { - $this->_foreignTableName = new Identifier($foreignTableName); - } - - $this->_foreignColumnNames = $this->createIdentifierMap($foreignColumnNames); - $this->_options = $options; - } - - /** - * @param string[] $names - * - * @return Identifier[] - */ - private function createIdentifierMap(array $names): array - { - $identifiers = []; - - foreach ($names as $name) { - $identifiers[$name] = new Identifier($name); - } - - return $identifiers; - } - - /** - * Returns the name of the referencing table - * the foreign key constraint is associated with. - * - * @deprecated Use the table that contains the foreign key as part of its {@see Table::$_fkConstraints} instead. - * - * @return string - */ - public function getLocalTableName() - { - return $this->_localTable->getName(); - } - - /** - * Sets the Table instance of the referencing table - * the foreign key constraint is associated with. - * - * @deprecated Use the table that contains the foreign key as part of its {@see Table::$_fkConstraints} instead. - * - * @param Table $table Instance of the referencing table. - * - * @return void - */ - public function setLocalTable(Table $table) - { - $this->_localTable = $table; - } - - /** - * @deprecated Use the table that contains the foreign key as part of its {@see Table::$_fkConstraints} instead. - * - * @return Table - */ - public function getLocalTable() - { - return $this->_localTable; - } - - /** - * Returns the names of the referencing table columns - * the foreign key constraint is associated with. - * - * @return string[] - */ - public function getLocalColumns() - { - return array_keys($this->_localColumnNames); - } - - /** - * Returns the quoted representation of the referencing table column names - * the foreign key constraint is associated with. - * - * But only if they were defined with one or the referencing table column name - * is a keyword reserved by the platform. - * Otherwise the plain unquoted value as inserted is returned. - * - * @param AbstractPlatform $platform The platform to use for quotation. - * - * @return string[] - */ - public function getQuotedLocalColumns(AbstractPlatform $platform) - { - $columns = []; - - foreach ($this->_localColumnNames as $column) { - $columns[] = $column->getQuotedName($platform); - } - - return $columns; - } - - /** - * Returns unquoted representation of local table column names for comparison with other FK - * - * @return string[] - */ - public function getUnquotedLocalColumns() - { - return array_map([$this, 'trimQuotes'], $this->getLocalColumns()); - } - - /** - * Returns unquoted representation of foreign table column names for comparison with other FK - * - * @return string[] - */ - public function getUnquotedForeignColumns() - { - return array_map([$this, 'trimQuotes'], $this->getForeignColumns()); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see getLocalColumns()} instead. - * - * @see getLocalColumns - */ - public function getColumns() - { - return $this->getLocalColumns(); - } - - /** - * Returns the quoted representation of the referencing table column names - * the foreign key constraint is associated with. - * - * But only if they were defined with one or the referencing table column name - * is a keyword reserved by the platform. - * Otherwise the plain unquoted value as inserted is returned. - * - * @deprecated Use {@see getQuotedLocalColumns()} instead. - * - * @see getQuotedLocalColumns - * - * @param AbstractPlatform $platform The platform to use for quotation. - * - * @return string[] - */ - public function getQuotedColumns(AbstractPlatform $platform) - { - return $this->getQuotedLocalColumns($platform); - } - - /** - * Returns the name of the referenced table - * the foreign key constraint is associated with. - * - * @return string - */ - public function getForeignTableName() - { - return $this->_foreignTableName->getName(); - } - - /** - * Returns the non-schema qualified foreign table name. - * - * @return string - */ - public function getUnqualifiedForeignTableName() - { - $name = $this->_foreignTableName->getName(); - $position = strrpos($name, '.'); - - if ($position !== false) { - $name = substr($name, $position + 1); - } - - return strtolower($name); - } - - /** - * Returns the quoted representation of the referenced table name - * the foreign key constraint is associated with. - * - * But only if it was defined with one or the referenced table name - * is a keyword reserved by the platform. - * Otherwise the plain unquoted value as inserted is returned. - * - * @param AbstractPlatform $platform The platform to use for quotation. - * - * @return string - */ - public function getQuotedForeignTableName(AbstractPlatform $platform) - { - return $this->_foreignTableName->getQuotedName($platform); - } - - /** - * Returns the names of the referenced table columns - * the foreign key constraint is associated with. - * - * @return string[] - */ - public function getForeignColumns() - { - return array_keys($this->_foreignColumnNames); - } - - /** - * Returns the quoted representation of the referenced table column names - * the foreign key constraint is associated with. - * - * But only if they were defined with one or the referenced table column name - * is a keyword reserved by the platform. - * Otherwise the plain unquoted value as inserted is returned. - * - * @param AbstractPlatform $platform The platform to use for quotation. - * - * @return string[] - */ - public function getQuotedForeignColumns(AbstractPlatform $platform) - { - $columns = []; - - foreach ($this->_foreignColumnNames as $column) { - $columns[] = $column->getQuotedName($platform); - } - - return $columns; - } - - /** - * Returns whether or not a given option - * is associated with the foreign key constraint. - * - * @param string $name Name of the option to check. - * - * @return bool - */ - public function hasOption($name) - { - return isset($this->_options[$name]); - } - - /** - * Returns an option associated with the foreign key constraint. - * - * @param string $name Name of the option the foreign key constraint is associated with. - * - * @return mixed - */ - public function getOption($name) - { - return $this->_options[$name]; - } - - /** - * Returns the options associated with the foreign key constraint. - * - * @return mixed[] - */ - public function getOptions() - { - return $this->_options; - } - - /** - * Returns the referential action for UPDATE operations - * on the referenced table the foreign key constraint is associated with. - * - * @return string|null - */ - public function onUpdate() - { - return $this->onEvent('onUpdate'); - } - - /** - * Returns the referential action for DELETE operations - * on the referenced table the foreign key constraint is associated with. - * - * @return string|null - */ - public function onDelete() - { - return $this->onEvent('onDelete'); - } - - /** - * Returns the referential action for a given database operation - * on the referenced table the foreign key constraint is associated with. - * - * @param string $event Name of the database operation/event to return the referential action for. - */ - private function onEvent($event): ?string - { - if (isset($this->_options[$event])) { - $onEvent = strtoupper($this->_options[$event]); - - if ($onEvent !== 'NO ACTION' && $onEvent !== 'RESTRICT') { - return $onEvent; - } - } - - return null; - } - - /** - * Checks whether this foreign key constraint intersects the given index columns. - * - * Returns `true` if at least one of this foreign key's local columns - * matches one of the given index's columns, `false` otherwise. - * - * @param Index $index The index to be checked against. - * - * @return bool - */ - public function intersectsIndexColumns(Index $index) - { - foreach ($index->getColumns() as $indexColumn) { - foreach ($this->_localColumnNames as $localColumn) { - if (strtolower($indexColumn) === strtolower($localColumn->getName())) { - return true; - } - } - } - - return false; - } -} diff --git a/vendor/doctrine/dbal/src/Schema/Identifier.php b/vendor/doctrine/dbal/src/Schema/Identifier.php deleted file mode 100644 index f34465e9..00000000 --- a/vendor/doctrine/dbal/src/Schema/Identifier.php +++ /dev/null @@ -1,27 +0,0 @@ -_setName($identifier); - - if (! $quote || $this->_quoted) { - return; - } - - $this->_setName('"' . $this->getName() . '"'); - } -} diff --git a/vendor/doctrine/dbal/src/Schema/Index.php b/vendor/doctrine/dbal/src/Schema/Index.php deleted file mode 100644 index 84fac414..00000000 --- a/vendor/doctrine/dbal/src/Schema/Index.php +++ /dev/null @@ -1,365 +0,0 @@ - Identifier) - * - * @var Identifier[] - */ - protected $_columns = []; - - /** @var bool */ - protected $_isUnique = false; - - /** @var bool */ - protected $_isPrimary = false; - - /** - * Platform specific flags for indexes. - * array($flagName => true) - * - * @var true[] - */ - protected $_flags = []; - - /** - * Platform specific options - * - * @todo $_flags should eventually be refactored into options - * @var mixed[] - */ - private array $options = []; - - /** - * @param string $name - * @param string[] $columns - * @param bool $isUnique - * @param bool $isPrimary - * @param string[] $flags - * @param mixed[] $options - */ - public function __construct( - $name, - array $columns, - $isUnique = false, - $isPrimary = false, - array $flags = [], - array $options = [] - ) { - $isUnique = $isUnique || $isPrimary; - - $this->_setName($name); - $this->_isUnique = $isUnique; - $this->_isPrimary = $isPrimary; - $this->options = $options; - - foreach ($columns as $column) { - $this->_addColumn($column); - } - - foreach ($flags as $flag) { - $this->addFlag($flag); - } - } - - /** @throws InvalidArgumentException */ - protected function _addColumn(string $column): void - { - $this->_columns[$column] = new Identifier($column); - } - - /** - * {@inheritDoc} - */ - public function getColumns() - { - return array_keys($this->_columns); - } - - /** - * {@inheritDoc} - */ - public function getQuotedColumns(AbstractPlatform $platform) - { - $subParts = $platform->supportsColumnLengthIndexes() && $this->hasOption('lengths') - ? $this->getOption('lengths') : []; - - $columns = []; - - foreach ($this->_columns as $column) { - $length = array_shift($subParts); - - $quotedColumn = $column->getQuotedName($platform); - - if ($length !== null) { - $quotedColumn .= '(' . $length . ')'; - } - - $columns[] = $quotedColumn; - } - - return $columns; - } - - /** @return string[] */ - public function getUnquotedColumns() - { - return array_map([$this, 'trimQuotes'], $this->getColumns()); - } - - /** - * Is the index neither unique nor primary key? - * - * @return bool - */ - public function isSimpleIndex() - { - return ! $this->_isPrimary && ! $this->_isUnique; - } - - /** @return bool */ - public function isUnique() - { - return $this->_isUnique; - } - - /** @return bool */ - public function isPrimary() - { - return $this->_isPrimary; - } - - /** - * @param string $name - * @param int $pos - * - * @return bool - */ - public function hasColumnAtPosition($name, $pos = 0) - { - $name = $this->trimQuotes(strtolower($name)); - $indexColumns = array_map('strtolower', $this->getUnquotedColumns()); - - return array_search($name, $indexColumns, true) === $pos; - } - - /** - * Checks if this index exactly spans the given column names in the correct order. - * - * @param string[] $columnNames - * - * @return bool - */ - public function spansColumns(array $columnNames) - { - $columns = $this->getColumns(); - $numberOfColumns = count($columns); - $sameColumns = true; - - for ($i = 0; $i < $numberOfColumns; $i++) { - if ( - isset($columnNames[$i]) - && $this->trimQuotes(strtolower($columns[$i])) === $this->trimQuotes(strtolower($columnNames[$i])) - ) { - continue; - } - - $sameColumns = false; - } - - return $sameColumns; - } - - /** - * Keeping misspelled function name for backwards compatibility - * - * @deprecated Use {@see isFulfilledBy()} instead. - * - * @return bool - */ - public function isFullfilledBy(Index $other) - { - return $this->isFulfilledBy($other); - } - - /** - * Checks if the other index already fulfills all the indexing and constraint needs of the current one. - */ - public function isFulfilledBy(Index $other): bool - { - // allow the other index to be equally large only. It being larger is an option - // but it creates a problem with scenarios of the kind PRIMARY KEY(foo,bar) UNIQUE(foo) - if (count($other->getColumns()) !== count($this->getColumns())) { - return false; - } - - // Check if columns are the same, and even in the same order - $sameColumns = $this->spansColumns($other->getColumns()); - - if ($sameColumns) { - if (! $this->samePartialIndex($other)) { - return false; - } - - if (! $this->hasSameColumnLengths($other)) { - return false; - } - - if (! $this->isUnique() && ! $this->isPrimary()) { - // this is a special case: If the current key is neither primary or unique, any unique or - // primary key will always have the same effect for the index and there cannot be any constraint - // overlaps. This means a primary or unique index can always fulfill the requirements of just an - // index that has no constraints. - return true; - } - - if ($other->isPrimary() !== $this->isPrimary()) { - return false; - } - - return $other->isUnique() === $this->isUnique(); - } - - return false; - } - - /** - * Detects if the other index is a non-unique, non primary index that can be overwritten by this one. - * - * @return bool - */ - public function overrules(Index $other) - { - if ($other->isPrimary()) { - return false; - } - - if ($this->isSimpleIndex() && $other->isUnique()) { - return false; - } - - return $this->spansColumns($other->getColumns()) - && ($this->isPrimary() || $this->isUnique()) - && $this->samePartialIndex($other); - } - - /** - * Returns platform specific flags for indexes. - * - * @return string[] - */ - public function getFlags() - { - return array_keys($this->_flags); - } - - /** - * Adds Flag for an index that translates to platform specific handling. - * - * @param string $flag - * - * @return Index - * - * @example $index->addFlag('CLUSTERED') - */ - public function addFlag($flag) - { - $this->_flags[strtolower($flag)] = true; - - return $this; - } - - /** - * Does this index have a specific flag? - * - * @param string $flag - * - * @return bool - */ - public function hasFlag($flag) - { - return isset($this->_flags[strtolower($flag)]); - } - - /** - * Removes a flag. - * - * @param string $flag - * - * @return void - */ - public function removeFlag($flag) - { - unset($this->_flags[strtolower($flag)]); - } - - /** - * @param string $name - * - * @return bool - */ - public function hasOption($name) - { - return isset($this->options[strtolower($name)]); - } - - /** - * @param string $name - * - * @return mixed - */ - public function getOption($name) - { - return $this->options[strtolower($name)]; - } - - /** @return mixed[] */ - public function getOptions() - { - return $this->options; - } - - /** - * Return whether the two indexes have the same partial index - */ - private function samePartialIndex(Index $other): bool - { - if ( - $this->hasOption('where') - && $other->hasOption('where') - && $this->getOption('where') === $other->getOption('where') - ) { - return true; - } - - return ! $this->hasOption('where') && ! $other->hasOption('where'); - } - - /** - * Returns whether the index has the same column lengths as the other - */ - private function hasSameColumnLengths(self $other): bool - { - $filter = static function (?int $length): bool { - return $length !== null; - }; - - return array_filter($this->options['lengths'] ?? [], $filter) - === array_filter($other->options['lengths'] ?? [], $filter); - } -} diff --git a/vendor/doctrine/dbal/src/Schema/LegacySchemaManagerFactory.php b/vendor/doctrine/dbal/src/Schema/LegacySchemaManagerFactory.php deleted file mode 100644 index 01c856b6..00000000 --- a/vendor/doctrine/dbal/src/Schema/LegacySchemaManagerFactory.php +++ /dev/null @@ -1,19 +0,0 @@ -getDriver()->getSchemaManager( - $connection, - $connection->getDatabasePlatform(), - ); - } -} diff --git a/vendor/doctrine/dbal/src/Schema/MySQLSchemaManager.php b/vendor/doctrine/dbal/src/Schema/MySQLSchemaManager.php deleted file mode 100644 index 3c00d00e..00000000 --- a/vendor/doctrine/dbal/src/Schema/MySQLSchemaManager.php +++ /dev/null @@ -1,623 +0,0 @@ - - */ -class MySQLSchemaManager extends AbstractSchemaManager -{ - /** @see https://mariadb.com/kb/en/library/string-literals/#escape-sequences */ - private const MARIADB_ESCAPE_SEQUENCES = [ - '\\0' => "\0", - "\\'" => "'", - '\\"' => '"', - '\\b' => "\b", - '\\n' => "\n", - '\\r' => "\r", - '\\t' => "\t", - '\\Z' => "\x1a", - '\\\\' => '\\', - '\\%' => '%', - '\\_' => '_', - - // Internally, MariaDB escapes single quotes using the standard syntax - "''" => "'", - ]; - - /** - * {@inheritDoc} - */ - public function listTableNames() - { - return $this->doListTableNames(); - } - - /** - * {@inheritDoc} - */ - public function listTables() - { - return $this->doListTables(); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see introspectTable()} instead. - */ - public function listTableDetails($name) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5595', - '%s is deprecated. Use introspectTable() instead.', - __METHOD__, - ); - - return $this->doListTableDetails($name); - } - - /** - * {@inheritDoc} - */ - public function listTableColumns($table, $database = null) - { - return $this->doListTableColumns($table, $database); - } - - /** - * {@inheritDoc} - */ - public function listTableIndexes($table) - { - return $this->doListTableIndexes($table); - } - - /** - * {@inheritDoc} - */ - public function listTableForeignKeys($table, $database = null) - { - return $this->doListTableForeignKeys($table, $database); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableViewDefinition($view) - { - return new View($view['TABLE_NAME'], $view['VIEW_DEFINITION']); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableDefinition($table) - { - return array_shift($table); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableIndexesList($tableIndexes, $tableName = null) - { - foreach ($tableIndexes as $k => $v) { - $v = array_change_key_case($v, CASE_LOWER); - if ($v['key_name'] === 'PRIMARY') { - $v['primary'] = true; - } else { - $v['primary'] = false; - } - - if (strpos($v['index_type'], 'FULLTEXT') !== false) { - $v['flags'] = ['FULLTEXT']; - } elseif (strpos($v['index_type'], 'SPATIAL') !== false) { - $v['flags'] = ['SPATIAL']; - } - - // Ignore prohibited prefix `length` for spatial index - if (strpos($v['index_type'], 'SPATIAL') === false) { - $v['length'] = isset($v['sub_part']) ? (int) $v['sub_part'] : null; - } - - $tableIndexes[$k] = $v; - } - - return parent::_getPortableTableIndexesList($tableIndexes, $tableName); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableDatabaseDefinition($database) - { - return $database['Database']; - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableColumnDefinition($tableColumn) - { - $tableColumn = array_change_key_case($tableColumn, CASE_LOWER); - - $dbType = strtolower($tableColumn['type']); - $dbType = strtok($dbType, '(), '); - assert(is_string($dbType)); - - $length = $tableColumn['length'] ?? strtok('(), '); - - $fixed = null; - - if (! isset($tableColumn['name'])) { - $tableColumn['name'] = ''; - } - - $scale = null; - $precision = null; - - $type = $origType = $this->_platform->getDoctrineTypeMapping($dbType); - - // In cases where not connected to a database DESCRIBE $table does not return 'Comment' - if (isset($tableColumn['comment'])) { - $type = $this->extractDoctrineTypeFromComment($tableColumn['comment'], $type); - $tableColumn['comment'] = $this->removeDoctrineTypeFromComment($tableColumn['comment'], $type); - } - - switch ($dbType) { - case 'char': - case 'binary': - $fixed = true; - break; - - case 'float': - case 'double': - case 'real': - case 'numeric': - case 'decimal': - if ( - preg_match( - '([A-Za-z]+\(([0-9]+),([0-9]+)\))', - $tableColumn['type'], - $match, - ) === 1 - ) { - $precision = $match[1]; - $scale = $match[2]; - $length = null; - } - - break; - - case 'tinytext': - $length = AbstractMySQLPlatform::LENGTH_LIMIT_TINYTEXT; - break; - - case 'text': - $length = AbstractMySQLPlatform::LENGTH_LIMIT_TEXT; - break; - - case 'mediumtext': - $length = AbstractMySQLPlatform::LENGTH_LIMIT_MEDIUMTEXT; - break; - - case 'tinyblob': - $length = AbstractMySQLPlatform::LENGTH_LIMIT_TINYBLOB; - break; - - case 'blob': - $length = AbstractMySQLPlatform::LENGTH_LIMIT_BLOB; - break; - - case 'mediumblob': - $length = AbstractMySQLPlatform::LENGTH_LIMIT_MEDIUMBLOB; - break; - - case 'tinyint': - case 'smallint': - case 'mediumint': - case 'int': - case 'integer': - case 'bigint': - case 'year': - $length = null; - break; - } - - if ($this->_platform instanceof MariaDb1027Platform) { - $columnDefault = $this->getMariaDb1027ColumnDefault($this->_platform, $tableColumn['default']); - } else { - $columnDefault = $tableColumn['default']; - } - - $options = [ - 'length' => $length !== null ? (int) $length : null, - 'unsigned' => strpos($tableColumn['type'], 'unsigned') !== false, - 'fixed' => (bool) $fixed, - 'default' => $columnDefault, - 'notnull' => $tableColumn['null'] !== 'YES', - 'scale' => null, - 'precision' => null, - 'autoincrement' => strpos($tableColumn['extra'], 'auto_increment') !== false, - 'comment' => isset($tableColumn['comment']) && $tableColumn['comment'] !== '' - ? $tableColumn['comment'] - : null, - ]; - - if ($scale !== null && $precision !== null) { - $options['scale'] = (int) $scale; - $options['precision'] = (int) $precision; - } - - $column = new Column($tableColumn['field'], Type::getType($type), $options); - - if (isset($tableColumn['characterset'])) { - $column->setPlatformOption('charset', $tableColumn['characterset']); - } - - if (isset($tableColumn['collation'])) { - $column->setPlatformOption('collation', $tableColumn['collation']); - } - - if (isset($tableColumn['declarationMismatch'])) { - $column->setPlatformOption('declarationMismatch', $tableColumn['declarationMismatch']); - } - - // Check underlying database type where doctrine type is inferred from DC2Type comment - // and set a flag if it is not as expected. - if ($type === 'json' && $origType !== $type && $this->expectedDbType($type, $options) !== $dbType) { - $column->setPlatformOption('declarationMismatch', true); - } - - return $column; - } - - /** - * Returns the database data type for a given doctrine type and column - * - * Note that for data types that depend on length where length is not part of the column definition - * and therefore the $tableColumn['length'] will not be set, for example TEXT (which could be LONGTEXT, - * MEDIUMTEXT) or BLOB (LONGBLOB or TINYBLOB), the expectedDbType cannot be inferred exactly, merely - * the default type. - * - * This method is intended to be used to determine underlying database type where doctrine type is - * inferred from a DC2Type comment. - * - * @param mixed[] $tableColumn - */ - private function expectedDbType(string $type, array $tableColumn): string - { - $_type = Type::getType($type); - $expectedDbType = strtolower($_type->getSQLDeclaration($tableColumn, $this->_platform)); - $expectedDbType = strtok($expectedDbType, '(), '); - - return $expectedDbType === false ? '' : $expectedDbType; - } - - /** - * Return Doctrine/Mysql-compatible column default values for MariaDB 10.2.7+ servers. - * - * - Since MariaDb 10.2.7 column defaults stored in information_schema are now quoted - * to distinguish them from expressions (see MDEV-10134). - * - CURRENT_TIMESTAMP, CURRENT_TIME, CURRENT_DATE are stored in information_schema - * as current_timestamp(), currdate(), currtime() - * - Quoted 'NULL' is not enforced by Maria, it is technically possible to have - * null in some circumstances (see https://jira.mariadb.org/browse/MDEV-14053) - * - \' is always stored as '' in information_schema (normalized) - * - * @link https://mariadb.com/kb/en/library/information-schema-columns-table/ - * @link https://jira.mariadb.org/browse/MDEV-13132 - * - * @param string|null $columnDefault default value as stored in information_schema for MariaDB >= 10.2.7 - */ - private function getMariaDb1027ColumnDefault(MariaDb1027Platform $platform, ?string $columnDefault): ?string - { - if ($columnDefault === 'NULL' || $columnDefault === null) { - return null; - } - - if (preg_match('/^\'(.*)\'$/', $columnDefault, $matches) === 1) { - return strtr($matches[1], self::MARIADB_ESCAPE_SEQUENCES); - } - - switch ($columnDefault) { - case 'current_timestamp()': - return $platform->getCurrentTimestampSQL(); - - case 'curdate()': - return $platform->getCurrentDateSQL(); - - case 'curtime()': - return $platform->getCurrentTimeSQL(); - } - - return $columnDefault; - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeysList($tableForeignKeys) - { - $list = []; - foreach ($tableForeignKeys as $value) { - $value = array_change_key_case($value, CASE_LOWER); - if (! isset($list[$value['constraint_name']])) { - if (! isset($value['delete_rule']) || $value['delete_rule'] === 'RESTRICT') { - $value['delete_rule'] = null; - } - - if (! isset($value['update_rule']) || $value['update_rule'] === 'RESTRICT') { - $value['update_rule'] = null; - } - - $list[$value['constraint_name']] = [ - 'name' => $value['constraint_name'], - 'local' => [], - 'foreign' => [], - 'foreignTable' => $value['referenced_table_name'], - 'onDelete' => $value['delete_rule'], - 'onUpdate' => $value['update_rule'], - ]; - } - - $list[$value['constraint_name']]['local'][] = $value['column_name']; - $list[$value['constraint_name']]['foreign'][] = $value['referenced_column_name']; - } - - return parent::_getPortableTableForeignKeysList($list); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeyDefinition($tableForeignKey): ForeignKeyConstraint - { - return new ForeignKeyConstraint( - $tableForeignKey['local'], - $tableForeignKey['foreignTable'], - $tableForeignKey['foreign'], - $tableForeignKey['name'], - [ - 'onDelete' => $tableForeignKey['onDelete'], - 'onUpdate' => $tableForeignKey['onUpdate'], - ], - ); - } - - public function createComparator(): Comparator - { - return new MySQL\Comparator( - $this->_platform, - new CachingCollationMetadataProvider( - new ConnectionCollationMetadataProvider($this->_conn), - ), - ); - } - - protected function selectTableNames(string $databaseName): Result - { - $sql = <<<'SQL' -SELECT TABLE_NAME -FROM information_schema.TABLES -WHERE TABLE_SCHEMA = ? - AND TABLE_TYPE = 'BASE TABLE' -ORDER BY TABLE_NAME -SQL; - - return $this->_conn->executeQuery($sql, [$databaseName]); - } - - protected function selectTableColumns(string $databaseName, ?string $tableName = null): Result - { - // @todo 4.0 - call getColumnTypeSQLSnippet() instead - [$columnTypeSQL, $joinCheckConstraintSQL] = $this->_platform->getColumnTypeSQLSnippets('c', $databaseName); - - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' c.TABLE_NAME,'; - } - - $sql .= <<_conn->executeQuery($sql, $params); - } - - protected function selectIndexColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' TABLE_NAME,'; - } - - $sql .= <<<'SQL' - NON_UNIQUE AS Non_Unique, - INDEX_NAME AS Key_name, - COLUMN_NAME AS Column_Name, - SUB_PART AS Sub_Part, - INDEX_TYPE AS Index_Type -FROM information_schema.STATISTICS -SQL; - - $conditions = ['TABLE_SCHEMA = ?']; - $params = [$databaseName]; - - if ($tableName !== null) { - $conditions[] = 'TABLE_NAME = ?'; - $params[] = $tableName; - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY SEQ_IN_INDEX'; - - return $this->_conn->executeQuery($sql, $params); - } - - protected function selectForeignKeyColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT DISTINCT'; - - if ($tableName === null) { - $sql .= ' k.TABLE_NAME,'; - } - - $sql .= <<<'SQL' - k.CONSTRAINT_NAME, - k.COLUMN_NAME, - k.REFERENCED_TABLE_NAME, - k.REFERENCED_COLUMN_NAME, - k.ORDINAL_POSITION /*!50116, - c.UPDATE_RULE, - c.DELETE_RULE */ -FROM information_schema.key_column_usage k /*!50116 -INNER JOIN information_schema.referential_constraints c -ON c.CONSTRAINT_NAME = k.CONSTRAINT_NAME -AND c.TABLE_NAME = k.TABLE_NAME */ -SQL; - - $conditions = ['k.TABLE_SCHEMA = ?']; - $params = [$databaseName]; - - if ($tableName !== null) { - $conditions[] = 'k.TABLE_NAME = ?'; - $params[] = $tableName; - } - - $conditions[] = 'k.REFERENCED_COLUMN_NAME IS NOT NULL'; - - $sql .= ' WHERE ' . implode(' AND ', $conditions) - // The schema name is passed multiple times in the WHERE clause instead of using a JOIN condition - // in order to avoid performance issues on MySQL older than 8.0 and the corresponding MariaDB versions - // caused by https://bugs.mysql.com/bug.php?id=81347. - // Use a string literal for the database name since the internal PDO SQL parser - // cannot recognize parameter placeholders inside conditional comments - . ' /*!50116 AND c.CONSTRAINT_SCHEMA = ' . $this->_conn->quote($databaseName) . ' */' - . ' ORDER BY k.ORDINAL_POSITION'; - - return $this->_conn->executeQuery($sql, $params); - } - - /** - * {@inheritDoc} - */ - protected function fetchTableOptionsByTable(string $databaseName, ?string $tableName = null): array - { - $sql = <<<'SQL' - SELECT t.TABLE_NAME, - t.ENGINE, - t.AUTO_INCREMENT, - t.TABLE_COMMENT, - t.CREATE_OPTIONS, - t.TABLE_COLLATION, - ccsa.CHARACTER_SET_NAME - FROM information_schema.TABLES t - INNER JOIN information_schema.COLLATION_CHARACTER_SET_APPLICABILITY ccsa - ON ccsa.COLLATION_NAME = t.TABLE_COLLATION -SQL; - - $conditions = ['t.TABLE_SCHEMA = ?']; - $params = [$databaseName]; - - if ($tableName !== null) { - $conditions[] = 't.TABLE_NAME = ?'; - $params[] = $tableName; - } - - $conditions[] = "t.TABLE_TYPE = 'BASE TABLE'"; - - $sql .= ' WHERE ' . implode(' AND ', $conditions); - - /** @var array> $metadata */ - $metadata = $this->_conn->executeQuery($sql, $params) - ->fetchAllAssociativeIndexed(); - - $tableOptions = []; - foreach ($metadata as $table => $data) { - $data = array_change_key_case($data, CASE_LOWER); - - $tableOptions[$table] = [ - 'engine' => $data['engine'], - 'collation' => $data['table_collation'], - 'charset' => $data['character_set_name'], - 'autoincrement' => $data['auto_increment'], - 'comment' => $data['table_comment'], - 'create_options' => $this->parseCreateOptions($data['create_options']), - ]; - } - - return $tableOptions; - } - - /** @return string[]|true[] */ - private function parseCreateOptions(?string $string): array - { - $options = []; - - if ($string === null || $string === '') { - return $options; - } - - foreach (explode(' ', $string) as $pair) { - $parts = explode('=', $pair, 2); - - $options[$parts[0]] = $parts[1] ?? true; - } - - return $options; - } -} diff --git a/vendor/doctrine/dbal/src/Schema/OracleSchemaManager.php b/vendor/doctrine/dbal/src/Schema/OracleSchemaManager.php deleted file mode 100644 index 07375221..00000000 --- a/vendor/doctrine/dbal/src/Schema/OracleSchemaManager.php +++ /dev/null @@ -1,539 +0,0 @@ - - */ -class OracleSchemaManager extends AbstractSchemaManager -{ - /** - * {@inheritDoc} - */ - public function listTableNames() - { - return $this->doListTableNames(); - } - - /** - * {@inheritDoc} - */ - public function listTables() - { - return $this->doListTables(); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see introspectTable()} instead. - */ - public function listTableDetails($name) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5595', - '%s is deprecated. Use introspectTable() instead.', - __METHOD__, - ); - - return $this->doListTableDetails($name); - } - - /** - * {@inheritDoc} - */ - public function listTableColumns($table, $database = null) - { - return $this->doListTableColumns($table, $database); - } - - /** - * {@inheritDoc} - */ - public function listTableIndexes($table) - { - return $this->doListTableIndexes($table); - } - - /** - * {@inheritDoc} - */ - public function listTableForeignKeys($table, $database = null) - { - return $this->doListTableForeignKeys($table, $database); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableViewDefinition($view) - { - $view = array_change_key_case($view, CASE_LOWER); - - return new View($this->getQuotedIdentifierName($view['view_name']), $view['text']); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableDefinition($table) - { - $table = array_change_key_case($table, CASE_LOWER); - - return $this->getQuotedIdentifierName($table['table_name']); - } - - /** - * {@inheritDoc} - * - * @link http://ezcomponents.org/docs/api/trunk/DatabaseSchema/ezcDbSchemaPgsqlReader.html - */ - protected function _getPortableTableIndexesList($tableIndexes, $tableName = null) - { - $indexBuffer = []; - foreach ($tableIndexes as $tableIndex) { - $tableIndex = array_change_key_case($tableIndex, CASE_LOWER); - - $keyName = strtolower($tableIndex['name']); - $buffer = []; - - if ($tableIndex['is_primary'] === 'P') { - $keyName = 'primary'; - $buffer['primary'] = true; - $buffer['non_unique'] = false; - } else { - $buffer['primary'] = false; - $buffer['non_unique'] = ! $tableIndex['is_unique']; - } - - $buffer['key_name'] = $keyName; - $buffer['column_name'] = $this->getQuotedIdentifierName($tableIndex['column_name']); - $indexBuffer[] = $buffer; - } - - return parent::_getPortableTableIndexesList($indexBuffer, $tableName); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableColumnDefinition($tableColumn) - { - $tableColumn = array_change_key_case($tableColumn, CASE_LOWER); - - $dbType = strtolower($tableColumn['data_type']); - if (strpos($dbType, 'timestamp(') === 0) { - if (strpos($dbType, 'with time zone') !== false) { - $dbType = 'timestamptz'; - } else { - $dbType = 'timestamp'; - } - } - - $unsigned = $fixed = $precision = $scale = $length = null; - - if (! isset($tableColumn['column_name'])) { - $tableColumn['column_name'] = ''; - } - - // Default values returned from database sometimes have trailing spaces. - if (is_string($tableColumn['data_default'])) { - $tableColumn['data_default'] = trim($tableColumn['data_default']); - } - - if ($tableColumn['data_default'] === '' || $tableColumn['data_default'] === 'NULL') { - $tableColumn['data_default'] = null; - } - - if ($tableColumn['data_default'] !== null) { - // Default values returned from database are represented as literal expressions - if (preg_match('/^\'(.*)\'$/s', $tableColumn['data_default'], $matches) === 1) { - $tableColumn['data_default'] = str_replace("''", "'", $matches[1]); - } - } - - if ($tableColumn['data_precision'] !== null) { - $precision = (int) $tableColumn['data_precision']; - } - - if ($tableColumn['data_scale'] !== null) { - $scale = (int) $tableColumn['data_scale']; - } - - $type = $this->_platform->getDoctrineTypeMapping($dbType); - $type = $this->extractDoctrineTypeFromComment($tableColumn['comments'], $type); - $tableColumn['comments'] = $this->removeDoctrineTypeFromComment($tableColumn['comments'], $type); - - switch ($dbType) { - case 'number': - if ($precision === 20 && $scale === 0) { - $type = 'bigint'; - } elseif ($precision === 5 && $scale === 0) { - $type = 'smallint'; - } elseif ($precision === 1 && $scale === 0) { - $type = 'boolean'; - } elseif ($scale > 0) { - $type = 'decimal'; - } - - break; - - case 'varchar': - case 'varchar2': - case 'nvarchar2': - $length = $tableColumn['char_length']; - $fixed = false; - break; - - case 'raw': - $length = $tableColumn['data_length']; - $fixed = true; - break; - - case 'char': - case 'nchar': - $length = $tableColumn['char_length']; - $fixed = true; - break; - } - - $options = [ - 'notnull' => $tableColumn['nullable'] === 'N', - 'fixed' => (bool) $fixed, - 'unsigned' => (bool) $unsigned, - 'default' => $tableColumn['data_default'], - 'length' => $length, - 'precision' => $precision, - 'scale' => $scale, - 'comment' => isset($tableColumn['comments']) && $tableColumn['comments'] !== '' - ? $tableColumn['comments'] - : null, - ]; - - return new Column($this->getQuotedIdentifierName($tableColumn['column_name']), Type::getType($type), $options); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeysList($tableForeignKeys) - { - $list = []; - foreach ($tableForeignKeys as $value) { - $value = array_change_key_case($value, CASE_LOWER); - if (! isset($list[$value['constraint_name']])) { - if ($value['delete_rule'] === 'NO ACTION') { - $value['delete_rule'] = null; - } - - $list[$value['constraint_name']] = [ - 'name' => $this->getQuotedIdentifierName($value['constraint_name']), - 'local' => [], - 'foreign' => [], - 'foreignTable' => $value['references_table'], - 'onDelete' => $value['delete_rule'], - ]; - } - - $localColumn = $this->getQuotedIdentifierName($value['local_column']); - $foreignColumn = $this->getQuotedIdentifierName($value['foreign_column']); - - $list[$value['constraint_name']]['local'][$value['position']] = $localColumn; - $list[$value['constraint_name']]['foreign'][$value['position']] = $foreignColumn; - } - - return parent::_getPortableTableForeignKeysList($list); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeyDefinition($tableForeignKey): ForeignKeyConstraint - { - return new ForeignKeyConstraint( - array_values($tableForeignKey['local']), - $this->getQuotedIdentifierName($tableForeignKey['foreignTable']), - array_values($tableForeignKey['foreign']), - $this->getQuotedIdentifierName($tableForeignKey['name']), - ['onDelete' => $tableForeignKey['onDelete']], - ); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableSequenceDefinition($sequence) - { - $sequence = array_change_key_case($sequence, CASE_LOWER); - - return new Sequence( - $this->getQuotedIdentifierName($sequence['sequence_name']), - (int) $sequence['increment_by'], - (int) $sequence['min_value'], - ); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableDatabaseDefinition($database) - { - $database = array_change_key_case($database, CASE_LOWER); - - return $database['username']; - } - - /** - * {@inheritDoc} - */ - public function createDatabase($database) - { - $statement = $this->_platform->getCreateDatabaseSQL($database); - - $params = $this->_conn->getParams(); - - if (isset($params['password'])) { - $statement .= ' IDENTIFIED BY ' . $params['password']; - } - - $this->_conn->executeStatement($statement); - - $statement = 'GRANT DBA TO ' . $database; - $this->_conn->executeStatement($statement); - } - - /** - * @internal The method should be only used from within the OracleSchemaManager class hierarchy. - * - * @param string $table - * - * @return bool - * - * @throws Exception - */ - public function dropAutoincrement($table) - { - $sql = $this->_platform->getDropAutoincrementSql($table); - foreach ($sql as $query) { - $this->_conn->executeStatement($query); - } - - return true; - } - - /** - * {@inheritDoc} - */ - public function dropTable($name) - { - $this->tryMethod('dropAutoincrement', $name); - - parent::dropTable($name); - } - - /** - * Returns the quoted representation of the given identifier name. - * - * Quotes non-uppercase identifiers explicitly to preserve case - * and thus make references to the particular identifier work. - * - * @param string $identifier The identifier to quote. - */ - private function getQuotedIdentifierName($identifier): string - { - if (preg_match('/[a-z]/', $identifier) === 1) { - return $this->_platform->quoteIdentifier($identifier); - } - - return $identifier; - } - - protected function selectTableNames(string $databaseName): Result - { - $sql = <<<'SQL' -SELECT TABLE_NAME -FROM ALL_TABLES -WHERE OWNER = :OWNER -ORDER BY TABLE_NAME -SQL; - - return $this->_conn->executeQuery($sql, ['OWNER' => $databaseName]); - } - - protected function selectTableColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' C.TABLE_NAME,'; - } - - $sql .= <<<'SQL' - C.COLUMN_NAME, - C.DATA_TYPE, - C.DATA_DEFAULT, - C.DATA_PRECISION, - C.DATA_SCALE, - C.CHAR_LENGTH, - C.DATA_LENGTH, - C.NULLABLE, - D.COMMENTS - FROM ALL_TAB_COLUMNS C - INNER JOIN ALL_TABLES T - ON T.OWNER = C.OWNER - AND T.TABLE_NAME = C.TABLE_NAME - LEFT JOIN ALL_COL_COMMENTS D - ON D.OWNER = C.OWNER - AND D.TABLE_NAME = C.TABLE_NAME - AND D.COLUMN_NAME = C.COLUMN_NAME -SQL; - - $conditions = ['C.OWNER = :OWNER']; - $params = ['OWNER' => $databaseName]; - - if ($tableName !== null) { - $conditions[] = 'C.TABLE_NAME = :TABLE_NAME'; - $params['TABLE_NAME'] = $tableName; - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY C.COLUMN_ID'; - - return $this->_conn->executeQuery($sql, $params); - } - - protected function selectIndexColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' IND_COL.TABLE_NAME,'; - } - - $sql .= <<<'SQL' - IND_COL.INDEX_NAME AS NAME, - IND.INDEX_TYPE AS TYPE, - DECODE(IND.UNIQUENESS, 'NONUNIQUE', 0, 'UNIQUE', 1) AS IS_UNIQUE, - IND_COL.COLUMN_NAME, - IND_COL.COLUMN_POSITION AS COLUMN_POS, - CON.CONSTRAINT_TYPE AS IS_PRIMARY - FROM ALL_IND_COLUMNS IND_COL - LEFT JOIN ALL_INDEXES IND - ON IND.OWNER = IND_COL.INDEX_OWNER - AND IND.INDEX_NAME = IND_COL.INDEX_NAME - LEFT JOIN ALL_CONSTRAINTS CON - ON CON.OWNER = IND_COL.INDEX_OWNER - AND CON.INDEX_NAME = IND_COL.INDEX_NAME -SQL; - - $conditions = ['IND_COL.INDEX_OWNER = :OWNER']; - $params = ['OWNER' => $databaseName]; - - if ($tableName !== null) { - $conditions[] = 'IND_COL.TABLE_NAME = :TABLE_NAME'; - $params['TABLE_NAME'] = $tableName; - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY IND_COL.TABLE_NAME, IND_COL.INDEX_NAME' - . ', IND_COL.COLUMN_POSITION'; - - return $this->_conn->executeQuery($sql, $params); - } - - protected function selectForeignKeyColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' COLS.TABLE_NAME,'; - } - - $sql .= <<<'SQL' - ALC.CONSTRAINT_NAME, - ALC.DELETE_RULE, - COLS.COLUMN_NAME LOCAL_COLUMN, - COLS.POSITION, - R_COLS.TABLE_NAME REFERENCES_TABLE, - R_COLS.COLUMN_NAME FOREIGN_COLUMN - FROM ALL_CONS_COLUMNS COLS - LEFT JOIN ALL_CONSTRAINTS ALC ON ALC.OWNER = COLS.OWNER AND ALC.CONSTRAINT_NAME = COLS.CONSTRAINT_NAME - LEFT JOIN ALL_CONS_COLUMNS R_COLS ON R_COLS.OWNER = ALC.R_OWNER AND - R_COLS.CONSTRAINT_NAME = ALC.R_CONSTRAINT_NAME AND - R_COLS.POSITION = COLS.POSITION -SQL; - - $conditions = ["ALC.CONSTRAINT_TYPE = 'R'", 'COLS.OWNER = :OWNER']; - $params = ['OWNER' => $databaseName]; - - if ($tableName !== null) { - $conditions[] = 'COLS.TABLE_NAME = :TABLE_NAME'; - $params['TABLE_NAME'] = $tableName; - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY COLS.TABLE_NAME, COLS.CONSTRAINT_NAME' - . ', COLS.POSITION'; - - return $this->_conn->executeQuery($sql, $params); - } - - /** - * {@inheritDoc} - */ - protected function fetchTableOptionsByTable(string $databaseName, ?string $tableName = null): array - { - $sql = 'SELECT TABLE_NAME, COMMENTS'; - - $conditions = ['OWNER = :OWNER']; - $params = ['OWNER' => $databaseName]; - - if ($tableName !== null) { - $conditions[] = 'TABLE_NAME = :TABLE_NAME'; - $params['TABLE_NAME'] = $tableName; - } - - $sql .= ' FROM ALL_TAB_COMMENTS WHERE ' . implode(' AND ', $conditions); - - /** @var array> $metadata */ - $metadata = $this->_conn->executeQuery($sql, $params) - ->fetchAllAssociativeIndexed(); - - $tableOptions = []; - foreach ($metadata as $table => $data) { - $data = array_change_key_case($data, CASE_LOWER); - - $tableOptions[$table] = [ - 'comment' => $data['comments'], - ]; - } - - return $tableOptions; - } - - protected function normalizeName(string $name): string - { - $identifier = new Identifier($name); - - return $identifier->isQuoted() ? $identifier->getName() : strtoupper($name); - } -} diff --git a/vendor/doctrine/dbal/src/Schema/PostgreSQLSchemaManager.php b/vendor/doctrine/dbal/src/Schema/PostgreSQLSchemaManager.php deleted file mode 100644 index 13fde63b..00000000 --- a/vendor/doctrine/dbal/src/Schema/PostgreSQLSchemaManager.php +++ /dev/null @@ -1,774 +0,0 @@ - - */ -class PostgreSQLSchemaManager extends AbstractSchemaManager -{ - /** @var string[]|null */ - private ?array $existingSchemaPaths = null; - - /** - * {@inheritDoc} - */ - public function listTableNames() - { - return $this->doListTableNames(); - } - - /** - * {@inheritDoc} - */ - public function listTables() - { - return $this->doListTables(); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see introspectTable()} instead. - */ - public function listTableDetails($name) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5595', - '%s is deprecated. Use introspectTable() instead.', - __METHOD__, - ); - - return $this->doListTableDetails($name); - } - - /** - * {@inheritDoc} - */ - public function listTableColumns($table, $database = null) - { - return $this->doListTableColumns($table, $database); - } - - /** - * {@inheritDoc} - */ - public function listTableIndexes($table) - { - return $this->doListTableIndexes($table); - } - - /** - * {@inheritDoc} - */ - public function listTableForeignKeys($table, $database = null) - { - return $this->doListTableForeignKeys($table, $database); - } - - /** - * Gets all the existing schema names. - * - * @deprecated Use {@see listSchemaNames()} instead. - * - * @return string[] - * - * @throws Exception - */ - public function getSchemaNames() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4503', - 'PostgreSQLSchemaManager::getSchemaNames() is deprecated,' - . ' use PostgreSQLSchemaManager::listSchemaNames() instead.', - ); - - return $this->listNamespaceNames(); - } - - /** - * {@inheritDoc} - */ - public function listSchemaNames(): array - { - return $this->_conn->fetchFirstColumn( - <<<'SQL' -SELECT schema_name -FROM information_schema.schemata -WHERE schema_name NOT LIKE 'pg\_%' -AND schema_name != 'information_schema' -SQL, - ); - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getSchemaSearchPaths() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4821', - 'PostgreSQLSchemaManager::getSchemaSearchPaths() is deprecated.', - ); - - $params = $this->_conn->getParams(); - - $searchPaths = $this->_conn->fetchOne('SHOW search_path'); - assert($searchPaths !== false); - - $schema = explode(',', $searchPaths); - - if (isset($params['user'])) { - $schema = str_replace('"$user"', $params['user'], $schema); - } - - return array_map('trim', $schema); - } - - /** - * Gets names of all existing schemas in the current users search path. - * - * This is a PostgreSQL only function. - * - * @internal The method should be only used from within the PostgreSQLSchemaManager class hierarchy. - * - * @return string[] - * - * @throws Exception - */ - public function getExistingSchemaSearchPaths() - { - if ($this->existingSchemaPaths === null) { - $this->determineExistingSchemaSearchPaths(); - } - - assert($this->existingSchemaPaths !== null); - - return $this->existingSchemaPaths; - } - - /** - * Returns the name of the current schema. - * - * @return string|null - * - * @throws Exception - */ - protected function getCurrentSchema() - { - $schemas = $this->getExistingSchemaSearchPaths(); - - return array_shift($schemas); - } - - /** - * Sets or resets the order of the existing schemas in the current search path of the user. - * - * This is a PostgreSQL only function. - * - * @internal The method should be only used from within the PostgreSQLSchemaManager class hierarchy. - * - * @return void - * - * @throws Exception - */ - public function determineExistingSchemaSearchPaths() - { - $names = $this->listSchemaNames(); - $paths = $this->getSchemaSearchPaths(); - - $this->existingSchemaPaths = array_filter($paths, static function ($v) use ($names): bool { - return in_array($v, $names, true); - }); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeyDefinition($tableForeignKey) - { - $onUpdate = null; - $onDelete = null; - - if ( - preg_match( - '(ON UPDATE ([a-zA-Z0-9]+( (NULL|ACTION|DEFAULT))?))', - $tableForeignKey['condef'], - $match, - ) === 1 - ) { - $onUpdate = $match[1]; - } - - if ( - preg_match( - '(ON DELETE ([a-zA-Z0-9]+( (NULL|ACTION|DEFAULT))?))', - $tableForeignKey['condef'], - $match, - ) === 1 - ) { - $onDelete = $match[1]; - } - - $result = preg_match('/FOREIGN KEY \((.+)\) REFERENCES (.+)\((.+)\)/', $tableForeignKey['condef'], $values); - assert($result === 1); - - // PostgreSQL returns identifiers that are keywords with quotes, we need them later, don't get - // the idea to trim them here. - $localColumns = array_map('trim', explode(',', $values[1])); - $foreignColumns = array_map('trim', explode(',', $values[3])); - $foreignTable = $values[2]; - - return new ForeignKeyConstraint( - $localColumns, - $foreignTable, - $foreignColumns, - $tableForeignKey['conname'], - ['onUpdate' => $onUpdate, 'onDelete' => $onDelete], - ); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableViewDefinition($view) - { - return new View($view['schemaname'] . '.' . $view['viewname'], $view['definition']); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableDefinition($table) - { - $currentSchema = $this->getCurrentSchema(); - - if ($table['schema_name'] === $currentSchema) { - return $table['table_name']; - } - - return $table['schema_name'] . '.' . $table['table_name']; - } - - /** - * {@inheritDoc} - * - * @link http://ezcomponents.org/docs/api/trunk/DatabaseSchema/ezcDbSchemaPgsqlReader.html - */ - protected function _getPortableTableIndexesList($tableIndexes, $tableName = null) - { - $buffer = []; - foreach ($tableIndexes as $row) { - $colNumbers = array_map('intval', explode(' ', $row['indkey'])); - $columnNameSql = sprintf( - 'SELECT attnum, attname FROM pg_attribute WHERE attrelid=%d AND attnum IN (%s) ORDER BY attnum ASC', - $row['indrelid'], - implode(' ,', $colNumbers), - ); - - $indexColumns = $this->_conn->fetchAllAssociative($columnNameSql); - - // required for getting the order of the columns right. - foreach ($colNumbers as $colNum) { - foreach ($indexColumns as $colRow) { - if ($colNum !== $colRow['attnum']) { - continue; - } - - $buffer[] = [ - 'key_name' => $row['relname'], - 'column_name' => trim($colRow['attname']), - 'non_unique' => ! $row['indisunique'], - 'primary' => $row['indisprimary'], - 'where' => $row['where'], - ]; - } - } - } - - return parent::_getPortableTableIndexesList($buffer, $tableName); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableDatabaseDefinition($database) - { - return $database['datname']; - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see listSchemaNames()} instead. - */ - protected function getPortableNamespaceDefinition(array $namespace) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4503', - 'PostgreSQLSchemaManager::getPortableNamespaceDefinition() is deprecated,' - . ' use PostgreSQLSchemaManager::listSchemaNames() instead.', - ); - - return $namespace['nspname']; - } - - /** - * {@inheritDoc} - */ - protected function _getPortableSequenceDefinition($sequence) - { - if ($sequence['schemaname'] !== 'public') { - $sequenceName = $sequence['schemaname'] . '.' . $sequence['relname']; - } else { - $sequenceName = $sequence['relname']; - } - - return new Sequence($sequenceName, (int) $sequence['increment_by'], (int) $sequence['min_value']); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableColumnDefinition($tableColumn) - { - $tableColumn = array_change_key_case($tableColumn, CASE_LOWER); - - if (strtolower($tableColumn['type']) === 'varchar' || strtolower($tableColumn['type']) === 'bpchar') { - // get length from varchar definition - $length = preg_replace('~.*\(([0-9]*)\).*~', '$1', $tableColumn['complete_type']); - $tableColumn['length'] = $length; - } - - $matches = []; - - $autoincrement = false; - - if ( - $tableColumn['default'] !== null - && preg_match("/^nextval\('(.*)'(::.*)?\)$/", $tableColumn['default'], $matches) === 1 - ) { - $tableColumn['sequence'] = $matches[1]; - $tableColumn['default'] = null; - $autoincrement = true; - } - - if ($tableColumn['default'] !== null) { - if (preg_match("/^['(](.*)[')]::/", $tableColumn['default'], $matches) === 1) { - $tableColumn['default'] = $matches[1]; - } elseif (preg_match('/^NULL::/', $tableColumn['default']) === 1) { - $tableColumn['default'] = null; - } - } - - $length = $tableColumn['length'] ?? null; - if ($length === '-1' && isset($tableColumn['atttypmod'])) { - $length = $tableColumn['atttypmod'] - 4; - } - - if ((int) $length <= 0) { - $length = null; - } - - $fixed = null; - - if (! isset($tableColumn['name'])) { - $tableColumn['name'] = ''; - } - - $precision = null; - $scale = null; - $jsonb = null; - - $dbType = strtolower($tableColumn['type']); - if ( - $tableColumn['domain_type'] !== null - && $tableColumn['domain_type'] !== '' - && ! $this->_platform->hasDoctrineTypeMappingFor($tableColumn['type']) - ) { - $dbType = strtolower($tableColumn['domain_type']); - $tableColumn['complete_type'] = $tableColumn['domain_complete_type']; - } - - $type = $this->_platform->getDoctrineTypeMapping($dbType); - $type = $this->extractDoctrineTypeFromComment($tableColumn['comment'], $type); - $tableColumn['comment'] = $this->removeDoctrineTypeFromComment($tableColumn['comment'], $type); - - switch ($dbType) { - case 'smallint': - case 'int2': - $tableColumn['default'] = $this->fixVersion94NegativeNumericDefaultValue($tableColumn['default']); - $length = null; - break; - - case 'int': - case 'int4': - case 'integer': - $tableColumn['default'] = $this->fixVersion94NegativeNumericDefaultValue($tableColumn['default']); - $length = null; - break; - - case 'bigint': - case 'int8': - $tableColumn['default'] = $this->fixVersion94NegativeNumericDefaultValue($tableColumn['default']); - $length = null; - break; - - case 'bool': - case 'boolean': - if ($tableColumn['default'] === 'true') { - $tableColumn['default'] = true; - } - - if ($tableColumn['default'] === 'false') { - $tableColumn['default'] = false; - } - - $length = null; - break; - - case 'text': - case '_varchar': - case 'varchar': - $tableColumn['default'] = $this->parseDefaultExpression($tableColumn['default']); - $fixed = false; - break; - case 'interval': - $fixed = false; - break; - - case 'char': - case 'bpchar': - $fixed = true; - break; - - case 'float': - case 'float4': - case 'float8': - case 'double': - case 'double precision': - case 'real': - case 'decimal': - case 'money': - case 'numeric': - $tableColumn['default'] = $this->fixVersion94NegativeNumericDefaultValue($tableColumn['default']); - - if ( - preg_match( - '([A-Za-z]+\(([0-9]+),([0-9]+)\))', - $tableColumn['complete_type'], - $match, - ) === 1 - ) { - $precision = $match[1]; - $scale = $match[2]; - $length = null; - } - - break; - - case 'year': - $length = null; - break; - - // PostgreSQL 9.4+ only - case 'jsonb': - $jsonb = true; - break; - } - - if ( - $tableColumn['default'] !== null && preg_match( - "('([^']+)'::)", - $tableColumn['default'], - $match, - ) === 1 - ) { - $tableColumn['default'] = $match[1]; - } - - $options = [ - 'length' => $length, - 'notnull' => (bool) $tableColumn['isnotnull'], - 'default' => $tableColumn['default'], - 'precision' => $precision, - 'scale' => $scale, - 'fixed' => $fixed, - 'autoincrement' => $autoincrement, - 'comment' => isset($tableColumn['comment']) && $tableColumn['comment'] !== '' - ? $tableColumn['comment'] - : null, - ]; - - $column = new Column($tableColumn['field'], Type::getType($type), $options); - - if (! empty($tableColumn['collation'])) { - $column->setPlatformOption('collation', $tableColumn['collation']); - } - - if ($column->getType()->getName() === Types::JSON) { - if (! $column->getType() instanceof JsonType) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5049', - <<<'DEPRECATION' - %s not extending %s while being named %s is deprecated, - and will lead to jsonb never to being used in 4.0., - DEPRECATION, - get_class($column->getType()), - JsonType::class, - Types::JSON, - ); - } - - $column->setPlatformOption('jsonb', $jsonb); - } - - return $column; - } - - /** - * PostgreSQL 9.4 puts parentheses around negative numeric default values that need to be stripped eventually. - * - * @param mixed $defaultValue - * - * @return mixed - */ - private function fixVersion94NegativeNumericDefaultValue($defaultValue) - { - if ($defaultValue !== null && strpos($defaultValue, '(') === 0) { - return trim($defaultValue, '()'); - } - - return $defaultValue; - } - - /** - * Parses a default value expression as given by PostgreSQL - */ - private function parseDefaultExpression(?string $default): ?string - { - if ($default === null) { - return $default; - } - - return str_replace("''", "'", $default); - } - - protected function selectTableNames(string $databaseName): Result - { - $sql = <<<'SQL' -SELECT quote_ident(table_name) AS table_name, - table_schema AS schema_name -FROM information_schema.tables -WHERE table_catalog = ? - AND table_schema NOT LIKE 'pg\_%' - AND table_schema != 'information_schema' - AND table_name != 'geometry_columns' - AND table_name != 'spatial_ref_sys' - AND table_type = 'BASE TABLE' -SQL; - - return $this->_conn->executeQuery($sql, [$databaseName]); - } - - protected function selectTableColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' c.relname AS table_name, n.nspname AS schema_name,'; - } - - $sql .= <<<'SQL' - a.attnum, - quote_ident(a.attname) AS field, - t.typname AS type, - format_type(a.atttypid, a.atttypmod) AS complete_type, - (SELECT tc.collcollate FROM pg_catalog.pg_collation tc WHERE tc.oid = a.attcollation) AS collation, - (SELECT t1.typname FROM pg_catalog.pg_type t1 WHERE t1.oid = t.typbasetype) AS domain_type, - (SELECT format_type(t2.typbasetype, t2.typtypmod) FROM - pg_catalog.pg_type t2 WHERE t2.typtype = 'd' AND t2.oid = a.atttypid) AS domain_complete_type, - a.attnotnull AS isnotnull, - (SELECT 't' - FROM pg_index - WHERE c.oid = pg_index.indrelid - AND pg_index.indkey[0] = a.attnum - AND pg_index.indisprimary = 't' - ) AS pri, - (SELECT pg_get_expr(adbin, adrelid) - FROM pg_attrdef - WHERE c.oid = pg_attrdef.adrelid - AND pg_attrdef.adnum=a.attnum - ) AS default, - (SELECT pg_description.description - FROM pg_description WHERE pg_description.objoid = c.oid AND a.attnum = pg_description.objsubid - ) AS comment - FROM pg_attribute a - INNER JOIN pg_class c - ON c.oid = a.attrelid - INNER JOIN pg_type t - ON t.oid = a.atttypid - INNER JOIN pg_namespace n - ON n.oid = c.relnamespace - LEFT JOIN pg_depend d - ON d.objid = c.oid - AND d.deptype = 'e' - AND d.classid = (SELECT oid FROM pg_class WHERE relname = 'pg_class') -SQL; - - $conditions = array_merge([ - 'a.attnum > 0', - "c.relkind = 'r'", - 'd.refobjid IS NULL', - ], $this->buildQueryConditions($tableName)); - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY a.attnum'; - - return $this->_conn->executeQuery($sql); - } - - protected function selectIndexColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' tc.relname AS table_name, tn.nspname AS schema_name,'; - } - - $sql .= <<<'SQL' - quote_ident(ic.relname) AS relname, - i.indisunique, - i.indisprimary, - i.indkey, - i.indrelid, - pg_get_expr(indpred, indrelid) AS "where" - FROM pg_index i - JOIN pg_class AS tc ON tc.oid = i.indrelid - JOIN pg_namespace tn ON tn.oid = tc.relnamespace - JOIN pg_class AS ic ON ic.oid = i.indexrelid - WHERE ic.oid IN ( - SELECT indexrelid - FROM pg_index i, pg_class c, pg_namespace n -SQL; - - $conditions = array_merge([ - 'c.oid = i.indrelid', - 'c.relnamespace = n.oid', - ], $this->buildQueryConditions($tableName)); - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ')'; - - return $this->_conn->executeQuery($sql); - } - - protected function selectForeignKeyColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' tc.relname AS table_name, tn.nspname AS schema_name,'; - } - - $sql .= <<<'SQL' - quote_ident(r.conname) as conname, - pg_get_constraintdef(r.oid, true) as condef - FROM pg_constraint r - JOIN pg_class AS tc ON tc.oid = r.conrelid - JOIN pg_namespace tn ON tn.oid = tc.relnamespace - WHERE r.conrelid IN - ( - SELECT c.oid - FROM pg_class c, pg_namespace n -SQL; - - $conditions = array_merge(['n.oid = c.relnamespace'], $this->buildQueryConditions($tableName)); - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ") AND r.contype = 'f'"; - - return $this->_conn->executeQuery($sql); - } - - /** - * {@inheritDoc} - */ - protected function fetchTableOptionsByTable(string $databaseName, ?string $tableName = null): array - { - $sql = <<<'SQL' -SELECT c.relname, - CASE c.relpersistence WHEN 'u' THEN true ELSE false END as unlogged, - obj_description(c.oid, 'pg_class') AS comment -FROM pg_class c - INNER JOIN pg_namespace n - ON n.oid = c.relnamespace -SQL; - - $conditions = array_merge(["c.relkind = 'r'"], $this->buildQueryConditions($tableName)); - - $sql .= ' WHERE ' . implode(' AND ', $conditions); - - return $this->_conn->fetchAllAssociativeIndexed($sql); - } - - /** - * @param string|null $tableName - * - * @return list - */ - private function buildQueryConditions($tableName): array - { - $conditions = []; - - if ($tableName !== null) { - if (strpos($tableName, '.') !== false) { - [$schemaName, $tableName] = explode('.', $tableName); - $conditions[] = 'n.nspname = ' . $this->_platform->quoteStringLiteral($schemaName); - } else { - $conditions[] = 'n.nspname = ANY(current_schemas(false))'; - } - - $identifier = new Identifier($tableName); - $conditions[] = 'c.relname = ' . $this->_platform->quoteStringLiteral($identifier->getName()); - } - - $conditions[] = "n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast')"; - - return $conditions; - } -} diff --git a/vendor/doctrine/dbal/src/Schema/SQLServerSchemaManager.php b/vendor/doctrine/dbal/src/Schema/SQLServerSchemaManager.php deleted file mode 100644 index acef511a..00000000 --- a/vendor/doctrine/dbal/src/Schema/SQLServerSchemaManager.php +++ /dev/null @@ -1,611 +0,0 @@ - - */ -class SQLServerSchemaManager extends AbstractSchemaManager -{ - private ?string $databaseCollation = null; - - /** - * {@inheritDoc} - */ - public function listTableNames() - { - return $this->doListTableNames(); - } - - /** - * {@inheritDoc} - */ - public function listTables() - { - return $this->doListTables(); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see introspectTable()} instead. - */ - public function listTableDetails($name) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5595', - '%s is deprecated. Use introspectTable() instead.', - __METHOD__, - ); - - return $this->doListTableDetails($name); - } - - /** - * {@inheritDoc} - */ - public function listTableColumns($table, $database = null) - { - return $this->doListTableColumns($table, $database); - } - - /** - * {@inheritDoc} - */ - public function listTableIndexes($table) - { - return $this->doListTableIndexes($table); - } - - /** - * {@inheritDoc} - */ - public function listTableForeignKeys($table, $database = null) - { - return $this->doListTableForeignKeys($table, $database); - } - - /** - * {@inheritDoc} - */ - public function listSchemaNames(): array - { - return $this->_conn->fetchFirstColumn( - <<<'SQL' -SELECT name -FROM sys.schemas -WHERE name NOT IN('guest', 'INFORMATION_SCHEMA', 'sys') -SQL, - ); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableSequenceDefinition($sequence) - { - return new Sequence($sequence['name'], (int) $sequence['increment'], (int) $sequence['start_value']); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableColumnDefinition($tableColumn) - { - $dbType = strtok($tableColumn['type'], '(), '); - assert(is_string($dbType)); - - $fixed = null; - $length = (int) $tableColumn['length']; - $default = $tableColumn['default']; - - if (! isset($tableColumn['name'])) { - $tableColumn['name'] = ''; - } - - if ($default !== null) { - $default = $this->parseDefaultExpression($default); - } - - switch ($dbType) { - case 'nchar': - case 'ntext': - // Unicode data requires 2 bytes per character - $length /= 2; - break; - - case 'nvarchar': - if ($length === -1) { - break; - } - - // Unicode data requires 2 bytes per character - $length /= 2; - break; - - case 'varchar': - // TEXT type is returned as VARCHAR(MAX) with a length of -1 - if ($length === -1) { - $dbType = 'text'; - } - - break; - - case 'varbinary': - if ($length === -1) { - $dbType = 'blob'; - } - - break; - } - - if ($dbType === 'char' || $dbType === 'nchar' || $dbType === 'binary') { - $fixed = true; - } - - $type = $this->_platform->getDoctrineTypeMapping($dbType); - $type = $this->extractDoctrineTypeFromComment($tableColumn['comment'], $type); - $tableColumn['comment'] = $this->removeDoctrineTypeFromComment($tableColumn['comment'], $type); - - $options = [ - 'unsigned' => false, - 'fixed' => (bool) $fixed, - 'default' => $default, - 'notnull' => (bool) $tableColumn['notnull'], - 'scale' => $tableColumn['scale'], - 'precision' => $tableColumn['precision'], - 'autoincrement' => (bool) $tableColumn['autoincrement'], - 'comment' => $tableColumn['comment'] !== '' ? $tableColumn['comment'] : null, - ]; - - if ($length !== 0 && ($type === 'text' || $type === 'string' || $type === 'binary')) { - $options['length'] = $length; - } - - $column = new Column($tableColumn['name'], Type::getType($type), $options); - - if (isset($tableColumn['collation']) && $tableColumn['collation'] !== 'NULL') { - $column->setPlatformOption('collation', $tableColumn['collation']); - } - - return $column; - } - - private function parseDefaultExpression(string $value): ?string - { - while (preg_match('/^\((.*)\)$/s', $value, $matches)) { - $value = $matches[1]; - } - - if ($value === 'NULL') { - return null; - } - - if (preg_match('/^\'(.*)\'$/s', $value, $matches) === 1) { - $value = str_replace("''", "'", $matches[1]); - } - - if ($value === 'getdate()') { - return $this->_platform->getCurrentTimestampSQL(); - } - - return $value; - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeysList($tableForeignKeys) - { - $foreignKeys = []; - - foreach ($tableForeignKeys as $tableForeignKey) { - $name = $tableForeignKey['ForeignKey']; - - if (! isset($foreignKeys[$name])) { - $foreignKeys[$name] = [ - 'local_columns' => [$tableForeignKey['ColumnName']], - 'foreign_table' => $tableForeignKey['ReferenceTableName'], - 'foreign_columns' => [$tableForeignKey['ReferenceColumnName']], - 'name' => $name, - 'options' => [ - 'onUpdate' => str_replace('_', ' ', $tableForeignKey['update_referential_action_desc']), - 'onDelete' => str_replace('_', ' ', $tableForeignKey['delete_referential_action_desc']), - ], - ]; - } else { - $foreignKeys[$name]['local_columns'][] = $tableForeignKey['ColumnName']; - $foreignKeys[$name]['foreign_columns'][] = $tableForeignKey['ReferenceColumnName']; - } - } - - return parent::_getPortableTableForeignKeysList($foreignKeys); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableIndexesList($tableIndexes, $tableName = null) - { - foreach ($tableIndexes as &$tableIndex) { - $tableIndex['non_unique'] = (bool) $tableIndex['non_unique']; - $tableIndex['primary'] = (bool) $tableIndex['primary']; - $tableIndex['flags'] = $tableIndex['flags'] ? [$tableIndex['flags']] : null; - } - - return parent::_getPortableTableIndexesList($tableIndexes, $tableName); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeyDefinition($tableForeignKey) - { - return new ForeignKeyConstraint( - $tableForeignKey['local_columns'], - $tableForeignKey['foreign_table'], - $tableForeignKey['foreign_columns'], - $tableForeignKey['name'], - $tableForeignKey['options'], - ); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableDefinition($table) - { - if ($table['schema_name'] !== 'dbo') { - return $table['schema_name'] . '.' . $table['table_name']; - } - - return $table['table_name']; - } - - /** - * {@inheritDoc} - */ - protected function _getPortableDatabaseDefinition($database) - { - return $database['name']; - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see listSchemaNames()} instead. - */ - protected function getPortableNamespaceDefinition(array $namespace) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4503', - 'SQLServerSchemaManager::getPortableNamespaceDefinition() is deprecated,' - . ' use SQLServerSchemaManager::listSchemaNames() instead.', - ); - - return $namespace['name']; - } - - /** - * {@inheritDoc} - */ - protected function _getPortableViewDefinition($view) - { - // @todo - return new View($view['name'], $view['definition']); - } - - /** - * {@inheritDoc} - */ - public function alterTable(TableDiff $tableDiff) - { - $droppedColumns = $tableDiff->getDroppedColumns(); - - if (count($droppedColumns) > 0) { - $tableName = ($tableDiff->getOldTable() ?? $tableDiff->getName($this->_platform))->getName(); - - foreach ($droppedColumns as $col) { - foreach ($this->getColumnConstraints($tableName, $col->getName()) as $constraint) { - $this->_conn->executeStatement( - sprintf( - 'ALTER TABLE %s DROP CONSTRAINT %s', - $tableName, - $constraint, - ), - ); - } - } - } - - parent::alterTable($tableDiff); - } - - /** - * Returns the names of the constraints for a given column. - * - * @return iterable - * - * @throws Exception - */ - private function getColumnConstraints(string $table, string $column): iterable - { - return $this->_conn->iterateColumn( - <<<'SQL' -SELECT o.name -FROM sys.objects o - INNER JOIN sys.objects t - ON t.object_id = o.parent_object_id - AND t.type = 'U' - INNER JOIN sys.default_constraints dc - ON dc.object_id = o.object_id - INNER JOIN sys.columns c - ON c.column_id = dc.parent_column_id - AND c.object_id = t.object_id -WHERE t.name = ? - AND c.name = ? -SQL - , - [$table, $column], - ); - } - - /** @throws Exception */ - public function createComparator(): Comparator - { - return new SQLServer\Comparator($this->_platform, $this->getDatabaseCollation()); - } - - /** @throws Exception */ - private function getDatabaseCollation(): string - { - if ($this->databaseCollation === null) { - $databaseCollation = $this->_conn->fetchOne( - 'SELECT collation_name FROM sys.databases WHERE name = ' - . $this->_platform->getCurrentDatabaseExpression(), - ); - - // a database is always selected, even if omitted in the connection parameters - assert(is_string($databaseCollation)); - - $this->databaseCollation = $databaseCollation; - } - - return $this->databaseCollation; - } - - protected function selectTableNames(string $databaseName): Result - { - // The "sysdiagrams" table must be ignored as it's internal SQL Server table for Database Diagrams - $sql = <<<'SQL' -SELECT name AS table_name, - SCHEMA_NAME(schema_id) AS schema_name -FROM sys.objects -WHERE type = 'U' - AND name != 'sysdiagrams' -ORDER BY name -SQL; - - return $this->_conn->executeQuery($sql); - } - - protected function selectTableColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' obj.name AS table_name, scm.name AS schema_name,'; - } - - $sql .= <<<'SQL' - col.name, - type.name AS type, - col.max_length AS length, - ~col.is_nullable AS notnull, - def.definition AS [default], - col.scale, - col.precision, - col.is_identity AS autoincrement, - col.collation_name AS collation, - -- CAST avoids driver error for sql_variant type - CAST(prop.value AS NVARCHAR(MAX)) AS comment - FROM sys.columns AS col - JOIN sys.types AS type - ON col.user_type_id = type.user_type_id - JOIN sys.objects AS obj - ON col.object_id = obj.object_id - JOIN sys.schemas AS scm - ON obj.schema_id = scm.schema_id - LEFT JOIN sys.default_constraints def - ON col.default_object_id = def.object_id - AND col.object_id = def.parent_object_id - LEFT JOIN sys.extended_properties AS prop - ON obj.object_id = prop.major_id - AND col.column_id = prop.minor_id - AND prop.name = 'MS_Description' -SQL; - - // The "sysdiagrams" table must be ignored as it's internal SQL Server table for Database Diagrams - $conditions = ["obj.type = 'U'", "obj.name != 'sysdiagrams'"]; - $params = []; - - if ($tableName !== null) { - $conditions[] = $this->getTableWhereClause($tableName, 'scm.name', 'obj.name'); - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions); - - return $this->_conn->executeQuery($sql, $params); - } - - protected function selectIndexColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' tbl.name AS table_name, scm.name AS schema_name,'; - } - - $sql .= <<<'SQL' - idx.name AS key_name, - col.name AS column_name, - ~idx.is_unique AS non_unique, - idx.is_primary_key AS [primary], - CASE idx.type - WHEN '1' THEN 'clustered' - WHEN '2' THEN 'nonclustered' - ELSE NULL - END AS flags - FROM sys.tables AS tbl - JOIN sys.schemas AS scm - ON tbl.schema_id = scm.schema_id - JOIN sys.indexes AS idx - ON tbl.object_id = idx.object_id - JOIN sys.index_columns AS idxcol - ON idx.object_id = idxcol.object_id - AND idx.index_id = idxcol.index_id - JOIN sys.columns AS col - ON idxcol.object_id = col.object_id - AND idxcol.column_id = col.column_id -SQL; - - $conditions = []; - $params = []; - - if ($tableName !== null) { - $conditions[] = $this->getTableWhereClause($tableName, 'scm.name', 'tbl.name'); - $sql .= ' WHERE ' . implode(' AND ', $conditions); - } - - $sql .= ' ORDER BY idx.index_id, idxcol.key_ordinal'; - - return $this->_conn->executeQuery($sql, $params); - } - - protected function selectForeignKeyColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = 'SELECT'; - - if ($tableName === null) { - $sql .= ' OBJECT_NAME (f.parent_object_id) AS table_name, SCHEMA_NAME(f.schema_id) AS schema_name,'; - } - - $sql .= <<<'SQL' - f.name AS ForeignKey, - SCHEMA_NAME (f.SCHEMA_ID) AS SchemaName, - OBJECT_NAME (f.parent_object_id) AS TableName, - COL_NAME (fc.parent_object_id,fc.parent_column_id) AS ColumnName, - SCHEMA_NAME (o.SCHEMA_ID) ReferenceSchemaName, - OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName, - COL_NAME(fc.referenced_object_id,fc.referenced_column_id) AS ReferenceColumnName, - f.delete_referential_action_desc, - f.update_referential_action_desc - FROM sys.foreign_keys AS f - INNER JOIN sys.foreign_key_columns AS fc - INNER JOIN sys.objects AS o ON o.OBJECT_ID = fc.referenced_object_id - ON f.OBJECT_ID = fc.constraint_object_id -SQL; - - $conditions = []; - $params = []; - - if ($tableName !== null) { - $conditions[] = $this->getTableWhereClause( - $tableName, - 'SCHEMA_NAME(f.schema_id)', - 'OBJECT_NAME(f.parent_object_id)', - ); - - $sql .= ' WHERE ' . implode(' AND ', $conditions); - } - - $sql .= ' ORDER BY fc.constraint_column_id'; - - return $this->_conn->executeQuery($sql, $params); - } - - /** - * {@inheritDoc} - */ - protected function fetchTableOptionsByTable(string $databaseName, ?string $tableName = null): array - { - $sql = <<<'SQL' - SELECT - tbl.name, - p.value AS [table_comment] - FROM - sys.tables AS tbl - INNER JOIN sys.extended_properties AS p ON p.major_id=tbl.object_id AND p.minor_id=0 AND p.class=1 -SQL; - - $conditions = ["SCHEMA_NAME(tbl.schema_id) = N'dbo'", "p.name = N'MS_Description'"]; - $params = []; - - if ($tableName !== null) { - $conditions[] = "tbl.name = N'" . $tableName . "'"; - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions); - - /** @var array> $metadata */ - $metadata = $this->_conn->executeQuery($sql, $params) - ->fetchAllAssociativeIndexed(); - - $tableOptions = []; - foreach ($metadata as $table => $data) { - $data = array_change_key_case($data, CASE_LOWER); - - $tableOptions[$table] = [ - 'comment' => $data['table_comment'], - ]; - } - - return $tableOptions; - } - - /** - * Returns the where clause to filter schema and table name in a query. - * - * @param string $table The full qualified name of the table. - * @param string $schemaColumn The name of the column to compare the schema to in the where clause. - * @param string $tableColumn The name of the column to compare the table to in the where clause. - */ - private function getTableWhereClause($table, $schemaColumn, $tableColumn): string - { - if (strpos($table, '.') !== false) { - [$schema, $table] = explode('.', $table); - $schema = $this->_platform->quoteStringLiteral($schema); - $table = $this->_platform->quoteStringLiteral($table); - } else { - $schema = 'SCHEMA_NAME()'; - $table = $this->_platform->quoteStringLiteral($table); - } - - return sprintf('(%s = %s AND %s = %s)', $tableColumn, $table, $schemaColumn, $schema); - } -} diff --git a/vendor/doctrine/dbal/src/Schema/Schema.php b/vendor/doctrine/dbal/src/Schema/Schema.php deleted file mode 100644 index 703c83c5..00000000 --- a/vendor/doctrine/dbal/src/Schema/Schema.php +++ /dev/null @@ -1,523 +0,0 @@ -_schemaConfig = $schemaConfig; - $this->_setName($schemaConfig->getName() ?? 'public'); - - foreach ($namespaces as $namespace) { - $this->createNamespace($namespace); - } - - foreach ($tables as $table) { - $this->_addTable($table); - } - - foreach ($sequences as $sequence) { - $this->_addSequence($sequence); - } - } - - /** - * @deprecated - * - * @return bool - */ - public function hasExplicitForeignKeyIndexes() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4822', - 'Schema::hasExplicitForeignKeyIndexes() is deprecated.', - ); - - return $this->_schemaConfig->hasExplicitForeignKeyIndexes(); - } - - /** - * @return void - * - * @throws SchemaException - */ - protected function _addTable(Table $table) - { - $namespaceName = $table->getNamespaceName(); - $tableName = $this->normalizeName($table); - - if (isset($this->_tables[$tableName])) { - throw SchemaException::tableAlreadyExists($tableName); - } - - if ( - $namespaceName !== null - && ! $table->isInDefaultNamespace($this->getName()) - && ! $this->hasNamespace($namespaceName) - ) { - $this->createNamespace($namespaceName); - } - - $this->_tables[$tableName] = $table; - $table->setSchemaConfig($this->_schemaConfig); - } - - /** - * @return void - * - * @throws SchemaException - */ - protected function _addSequence(Sequence $sequence) - { - $namespaceName = $sequence->getNamespaceName(); - $seqName = $this->normalizeName($sequence); - - if (isset($this->_sequences[$seqName])) { - throw SchemaException::sequenceAlreadyExists($seqName); - } - - if ( - $namespaceName !== null - && ! $sequence->isInDefaultNamespace($this->getName()) - && ! $this->hasNamespace($namespaceName) - ) { - $this->createNamespace($namespaceName); - } - - $this->_sequences[$seqName] = $sequence; - } - - /** - * Returns the namespaces of this schema. - * - * @return string[] A list of namespace names. - */ - public function getNamespaces() - { - return $this->namespaces; - } - - /** - * Gets all tables of this schema. - * - * @return Table[] - */ - public function getTables() - { - return $this->_tables; - } - - /** - * @param string $name - * - * @return Table - * - * @throws SchemaException - */ - public function getTable($name) - { - $name = $this->getFullQualifiedAssetName($name); - if (! isset($this->_tables[$name])) { - throw SchemaException::tableDoesNotExist($name); - } - - return $this->_tables[$name]; - } - - /** @param string $name */ - private function getFullQualifiedAssetName($name): string - { - $name = $this->getUnquotedAssetName($name); - - if (strpos($name, '.') === false) { - $name = $this->getName() . '.' . $name; - } - - return strtolower($name); - } - - private function normalizeName(AbstractAsset $asset): string - { - return $asset->getFullQualifiedName($this->getName()); - } - - /** - * Returns the unquoted representation of a given asset name. - * - * @param string $assetName Quoted or unquoted representation of an asset name. - */ - private function getUnquotedAssetName($assetName): string - { - if ($this->isIdentifierQuoted($assetName)) { - return $this->trimQuotes($assetName); - } - - return $assetName; - } - - /** - * Does this schema have a namespace with the given name? - * - * @param string $name - * - * @return bool - */ - public function hasNamespace($name) - { - $name = strtolower($this->getUnquotedAssetName($name)); - - return isset($this->namespaces[$name]); - } - - /** - * Does this schema have a table with the given name? - * - * @param string $name - * - * @return bool - */ - public function hasTable($name) - { - $name = $this->getFullQualifiedAssetName($name); - - return isset($this->_tables[$name]); - } - - /** - * Gets all table names, prefixed with a schema name, even the default one if present. - * - * @deprecated Use {@see getTables()} and {@see Table::getName()} instead. - * - * @return string[] - */ - public function getTableNames() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4800', - 'Schema::getTableNames() is deprecated.' - . ' Use Schema::getTables() and Table::getName() instead.', - __METHOD__, - ); - - return array_keys($this->_tables); - } - - /** - * @param string $name - * - * @return bool - */ - public function hasSequence($name) - { - $name = $this->getFullQualifiedAssetName($name); - - return isset($this->_sequences[$name]); - } - - /** - * @param string $name - * - * @return Sequence - * - * @throws SchemaException - */ - public function getSequence($name) - { - $name = $this->getFullQualifiedAssetName($name); - if (! $this->hasSequence($name)) { - throw SchemaException::sequenceDoesNotExist($name); - } - - return $this->_sequences[$name]; - } - - /** @return Sequence[] */ - public function getSequences() - { - return $this->_sequences; - } - - /** - * Creates a new namespace. - * - * @param string $name The name of the namespace to create. - * - * @return Schema This schema instance. - * - * @throws SchemaException - */ - public function createNamespace($name) - { - $unquotedName = strtolower($this->getUnquotedAssetName($name)); - - if (isset($this->namespaces[$unquotedName])) { - throw SchemaException::namespaceAlreadyExists($unquotedName); - } - - $this->namespaces[$unquotedName] = $name; - - return $this; - } - - /** - * Creates a new table. - * - * @param string $name - * - * @return Table - * - * @throws SchemaException - */ - public function createTable($name) - { - $table = new Table($name); - $this->_addTable($table); - - foreach ($this->_schemaConfig->getDefaultTableOptions() as $option => $value) { - $table->addOption($option, $value); - } - - return $table; - } - - /** - * Renames a table. - * - * @param string $oldName - * @param string $newName - * - * @return Schema - * - * @throws SchemaException - */ - public function renameTable($oldName, $newName) - { - $table = $this->getTable($oldName); - $table->_setName($newName); - - $this->dropTable($oldName); - $this->_addTable($table); - - return $this; - } - - /** - * Drops a table from the schema. - * - * @param string $name - * - * @return Schema - * - * @throws SchemaException - */ - public function dropTable($name) - { - $name = $this->getFullQualifiedAssetName($name); - $this->getTable($name); - unset($this->_tables[$name]); - - return $this; - } - - /** - * Creates a new sequence. - * - * @param string $name - * @param int $allocationSize - * @param int $initialValue - * - * @return Sequence - * - * @throws SchemaException - */ - public function createSequence($name, $allocationSize = 1, $initialValue = 1) - { - $seq = new Sequence($name, $allocationSize, $initialValue); - $this->_addSequence($seq); - - return $seq; - } - - /** - * @param string $name - * - * @return Schema - */ - public function dropSequence($name) - { - $name = $this->getFullQualifiedAssetName($name); - unset($this->_sequences[$name]); - - return $this; - } - - /** - * Returns an array of necessary SQL queries to create the schema on the given platform. - * - * @return list - * - * @throws Exception - */ - public function toSql(AbstractPlatform $platform) - { - $builder = new CreateSchemaObjectsSQLBuilder($platform); - - return $builder->buildSQL($this); - } - - /** - * Return an array of necessary SQL queries to drop the schema on the given platform. - * - * @return list - * - * @throws Exception - */ - public function toDropSql(AbstractPlatform $platform) - { - $builder = new DropSchemaObjectsSQLBuilder($platform); - - return $builder->buildSQL($this); - } - - /** - * @deprecated - * - * @return string[] - * - * @throws SchemaException - */ - public function getMigrateToSql(Schema $toSchema, AbstractPlatform $platform) - { - $schemaDiff = (new Comparator())->compareSchemas($this, $toSchema); - - return $schemaDiff->toSql($platform); - } - - /** - * @deprecated - * - * @return string[] - * - * @throws SchemaException - */ - public function getMigrateFromSql(Schema $fromSchema, AbstractPlatform $platform) - { - $schemaDiff = (new Comparator())->compareSchemas($fromSchema, $this); - - return $schemaDiff->toSql($platform); - } - - /** - * @deprecated - * - * @return void - */ - public function visit(Visitor $visitor) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5435', - 'Schema::visit() is deprecated.', - ); - - $visitor->acceptSchema($this); - - if ($visitor instanceof NamespaceVisitor) { - foreach ($this->namespaces as $namespace) { - $visitor->acceptNamespace($namespace); - } - } - - foreach ($this->_tables as $table) { - $table->visit($visitor); - } - - foreach ($this->_sequences as $sequence) { - $sequence->visit($visitor); - } - } - - /** - * Cloning a Schema triggers a deep clone of all related assets. - * - * @return void - */ - public function __clone() - { - foreach ($this->_tables as $k => $table) { - $this->_tables[$k] = clone $table; - } - - foreach ($this->_sequences as $k => $sequence) { - $this->_sequences[$k] = clone $sequence; - } - } -} diff --git a/vendor/doctrine/dbal/src/Schema/SchemaConfig.php b/vendor/doctrine/dbal/src/Schema/SchemaConfig.php deleted file mode 100644 index 5e394514..00000000 --- a/vendor/doctrine/dbal/src/Schema/SchemaConfig.php +++ /dev/null @@ -1,120 +0,0 @@ -hasExplicitForeignKeyIndexes; - } - - /** - * @deprecated - * - * @param bool $flag - * - * @return void - */ - public function setExplicitForeignKeyIndexes($flag) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4822', - 'SchemaConfig::setExplicitForeignKeyIndexes() is deprecated.', - ); - - $this->hasExplicitForeignKeyIndexes = (bool) $flag; - } - - /** - * @param int $length - * - * @return void - */ - public function setMaxIdentifierLength($length) - { - $this->maxIdentifierLength = (int) $length; - } - - /** @return int */ - public function getMaxIdentifierLength() - { - return $this->maxIdentifierLength; - } - - /** - * Gets the default namespace of schema objects. - * - * @return string|null - */ - public function getName() - { - return $this->name; - } - - /** - * Sets the default namespace name of schema objects. - * - * @param string $name The value to set. - * - * @return void - */ - public function setName($name) - { - $this->name = $name; - } - - /** - * Gets the default options that are passed to Table instances created with - * Schema#createTable(). - * - * @return mixed[] - */ - public function getDefaultTableOptions() - { - return $this->defaultTableOptions; - } - - /** - * @param mixed[] $defaultTableOptions - * - * @return void - */ - public function setDefaultTableOptions(array $defaultTableOptions) - { - $this->defaultTableOptions = $defaultTableOptions; - } -} diff --git a/vendor/doctrine/dbal/src/Schema/SchemaDiff.php b/vendor/doctrine/dbal/src/Schema/SchemaDiff.php deleted file mode 100644 index a6a86657..00000000 --- a/vendor/doctrine/dbal/src/Schema/SchemaDiff.php +++ /dev/null @@ -1,294 +0,0 @@ - $createdSchemas - * @param array $droppedSchemas - * @param array $createdSequences - * @param array $alteredSequences - * @param array $droppedSequences - */ - public function __construct( - $newTables = [], - $changedTables = [], - $removedTables = [], - ?Schema $fromSchema = null, - $createdSchemas = [], - $droppedSchemas = [], - $createdSequences = [], - $alteredSequences = [], - $droppedSequences = [] - ) { - $this->newTables = $newTables; - - $this->changedTables = array_filter($changedTables, static function (TableDiff $diff): bool { - return ! $diff->isEmpty(); - }); - - $this->removedTables = $removedTables; - $this->fromSchema = $fromSchema; - $this->newNamespaces = $createdSchemas; - $this->removedNamespaces = $droppedSchemas; - $this->newSequences = $createdSequences; - $this->changedSequences = $alteredSequences; - $this->removedSequences = $droppedSequences; - } - - /** @return array */ - public function getCreatedSchemas(): array - { - return $this->newNamespaces; - } - - /** @return array */ - public function getDroppedSchemas(): array - { - return $this->removedNamespaces; - } - - /** @return array
*/ - public function getCreatedTables(): array - { - return $this->newTables; - } - - /** @return array */ - public function getAlteredTables(): array - { - return $this->changedTables; - } - - /** @return array
*/ - public function getDroppedTables(): array - { - return $this->removedTables; - } - - /** @return array */ - public function getCreatedSequences(): array - { - return $this->newSequences; - } - - /** @return array */ - public function getAlteredSequences(): array - { - return $this->changedSequences; - } - - /** @return array */ - public function getDroppedSequences(): array - { - return $this->removedSequences; - } - - /** - * Returns whether the diff is empty (contains no changes). - */ - public function isEmpty(): bool - { - return count($this->newNamespaces) === 0 - && count($this->removedNamespaces) === 0 - && count($this->newTables) === 0 - && count($this->changedTables) === 0 - && count($this->removedTables) === 0 - && count($this->newSequences) === 0 - && count($this->changedSequences) === 0 - && count($this->removedSequences) === 0; - } - - /** - * The to save sql mode ensures that the following things don't happen: - * - * 1. Tables are deleted - * 2. Sequences are deleted - * 3. Foreign Keys which reference tables that would otherwise be deleted. - * - * This way it is ensured that assets are deleted which might not be relevant to the metadata schema at all. - * - * @deprecated - * - * @return list - */ - public function toSaveSql(AbstractPlatform $platform) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5766', - '%s is deprecated.', - __METHOD__, - ); - - return $this->_toSql($platform, true); - } - - /** - * @deprecated Use {@link AbstractPlatform::getAlterSchemaSQL()} instead. - * - * @return list - */ - public function toSql(AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5766', - '%s is deprecated. Use AbstractPlatform::getAlterSchemaSQL() instead.', - __METHOD__, - ); - - return $this->_toSql($platform, false); - } - - /** - * @param bool $saveMode - * - * @return list - */ - protected function _toSql(AbstractPlatform $platform, $saveMode = false) - { - $sql = []; - - if ($platform->supportsSchemas()) { - foreach ($this->getCreatedSchemas() as $schema) { - $sql[] = $platform->getCreateSchemaSQL($schema); - } - } - - if ($platform->supportsForeignKeyConstraints() && $saveMode === false) { - foreach ($this->orphanedForeignKeys as $orphanedForeignKey) { - $sql[] = $platform->getDropForeignKeySQL($orphanedForeignKey, $orphanedForeignKey->getLocalTable()); - } - } - - if ($platform->supportsSequences() === true) { - foreach ($this->getAlteredSequences() as $sequence) { - $sql[] = $platform->getAlterSequenceSQL($sequence); - } - - if ($saveMode === false) { - foreach ($this->getDroppedSequences() as $sequence) { - $sql[] = $platform->getDropSequenceSQL($sequence); - } - } - - foreach ($this->getCreatedSequences() as $sequence) { - $sql[] = $platform->getCreateSequenceSQL($sequence); - } - } - - $sql = array_merge($sql, $platform->getCreateTablesSQL($this->getCreatedTables())); - - if ($saveMode === false) { - $sql = array_merge($sql, $platform->getDropTablesSQL($this->getDroppedTables())); - } - - foreach ($this->getAlteredTables() as $tableDiff) { - $sql = array_merge($sql, $platform->getAlterTableSQL($tableDiff)); - } - - return $sql; - } -} diff --git a/vendor/doctrine/dbal/src/Schema/SchemaException.php b/vendor/doctrine/dbal/src/Schema/SchemaException.php deleted file mode 100644 index 4ec091f8..00000000 --- a/vendor/doctrine/dbal/src/Schema/SchemaException.php +++ /dev/null @@ -1,204 +0,0 @@ -_setName($name); - $this->setAllocationSize($allocationSize); - $this->setInitialValue($initialValue); - $this->cache = $cache; - } - - /** @return int */ - public function getAllocationSize() - { - return $this->allocationSize; - } - - /** @return int */ - public function getInitialValue() - { - return $this->initialValue; - } - - /** @return int|null */ - public function getCache() - { - return $this->cache; - } - - /** - * @param int $allocationSize - * - * @return Sequence - */ - public function setAllocationSize($allocationSize) - { - if ($allocationSize > 0) { - $this->allocationSize = $allocationSize; - } else { - $this->allocationSize = 1; - } - - return $this; - } - - /** - * @param int $initialValue - * - * @return Sequence - */ - public function setInitialValue($initialValue) - { - if ($initialValue > 0) { - $this->initialValue = $initialValue; - } else { - $this->initialValue = 1; - } - - return $this; - } - - /** - * @param int $cache - * - * @return Sequence - */ - public function setCache($cache) - { - $this->cache = $cache; - - return $this; - } - - /** - * Checks if this sequence is an autoincrement sequence for a given table. - * - * This is used inside the comparator to not report sequences as missing, - * when the "from" schema implicitly creates the sequences. - * - * @return bool - */ - public function isAutoIncrementsFor(Table $table) - { - $primaryKey = $table->getPrimaryKey(); - - if ($primaryKey === null) { - return false; - } - - $pkColumns = $primaryKey->getColumns(); - - if (count($pkColumns) !== 1) { - return false; - } - - $column = $table->getColumn($pkColumns[0]); - - if (! $column->getAutoincrement()) { - return false; - } - - $sequenceName = $this->getShortestName($table->getNamespaceName()); - $tableName = $table->getShortestName($table->getNamespaceName()); - $tableSequenceName = sprintf('%s_%s_seq', $tableName, $column->getShortestName($table->getNamespaceName())); - - return $tableSequenceName === $sequenceName; - } - - /** - * @deprecated - * - * @return void - */ - public function visit(Visitor $visitor) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5435', - 'Sequence::visit() is deprecated.', - ); - - $visitor->acceptSequence($this); - } -} diff --git a/vendor/doctrine/dbal/src/Schema/SqliteSchemaManager.php b/vendor/doctrine/dbal/src/Schema/SqliteSchemaManager.php deleted file mode 100644 index 13f5c514..00000000 --- a/vendor/doctrine/dbal/src/Schema/SqliteSchemaManager.php +++ /dev/null @@ -1,790 +0,0 @@ - - */ -class SqliteSchemaManager extends AbstractSchemaManager -{ - /** - * {@inheritDoc} - */ - public function listTableNames() - { - return $this->doListTableNames(); - } - - /** - * {@inheritDoc} - */ - public function listTables() - { - return $this->doListTables(); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see introspectTable()} instead. - */ - public function listTableDetails($name) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5595', - '%s is deprecated. Use introspectTable() instead.', - __METHOD__, - ); - - return $this->doListTableDetails($name); - } - - /** - * {@inheritDoc} - */ - public function listTableColumns($table, $database = null) - { - return $this->doListTableColumns($table, $database); - } - - /** - * {@inheritDoc} - */ - public function listTableIndexes($table) - { - return $this->doListTableIndexes($table); - } - - /** - * {@inheritDoc} - */ - protected function fetchForeignKeyColumnsByTable(string $databaseName): array - { - $columnsByTable = parent::fetchForeignKeyColumnsByTable($databaseName); - - if (count($columnsByTable) > 0) { - foreach ($columnsByTable as $table => $columns) { - $columnsByTable[$table] = $this->addDetailsToTableForeignKeyColumns($table, $columns); - } - } - - return $columnsByTable; - } - - /** - * {@inheritDoc} - * - * @deprecated Delete the database file using the filesystem. - */ - public function dropDatabase($database) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4963', - 'SqliteSchemaManager::dropDatabase() is deprecated. Delete the database file using the filesystem.', - ); - - if (! file_exists($database)) { - return; - } - - unlink($database); - } - - /** - * {@inheritDoc} - * - * @deprecated The engine will create the database file automatically. - */ - public function createDatabase($database) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4963', - 'SqliteSchemaManager::createDatabase() is deprecated.' - . ' The engine will create the database file automatically.', - ); - - $params = $this->_conn->getParams(); - - $params['path'] = $database; - unset($params['memory']); - - $conn = DriverManager::getConnection($params); - $conn->connect(); - $conn->close(); - } - - /** - * {@inheritDoc} - */ - public function createForeignKey(ForeignKeyConstraint $foreignKey, $table) - { - if (! $table instanceof Table) { - $table = $this->listTableDetails($table); - } - - $this->alterTable(new TableDiff($table->getName(), [], [], [], [], [], [], $table, [$foreignKey])); - } - - /** - * {@inheritDoc} - * - * @deprecated Use {@see dropForeignKey()} and {@see createForeignKey()} instead. - */ - public function dropAndCreateForeignKey(ForeignKeyConstraint $foreignKey, $table) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4897', - 'SqliteSchemaManager::dropAndCreateForeignKey() is deprecated.' - . ' Use SqliteSchemaManager::dropForeignKey() and SqliteSchemaManager::createForeignKey() instead.', - ); - - if (! $table instanceof Table) { - $table = $this->listTableDetails($table); - } - - $this->alterTable(new TableDiff($table->getName(), [], [], [], [], [], [], $table, [], [$foreignKey])); - } - - /** - * {@inheritDoc} - */ - public function dropForeignKey($foreignKey, $table) - { - if (! $table instanceof Table) { - $table = $this->listTableDetails($table); - } - - $this->alterTable(new TableDiff($table->getName(), [], [], [], [], [], [], $table, [], [], [$foreignKey])); - } - - /** - * {@inheritDoc} - */ - public function listTableForeignKeys($table, $database = null) - { - $table = $this->normalizeName($table); - - $columns = $this->selectForeignKeyColumns('', $table) - ->fetchAllAssociative(); - - if (count($columns) > 0) { - $columns = $this->addDetailsToTableForeignKeyColumns($table, $columns); - } - - return $this->_getPortableTableForeignKeysList($columns); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableDefinition($table) - { - return $table['table_name']; - } - - /** - * {@inheritDoc} - * - * @link http://ezcomponents.org/docs/api/trunk/DatabaseSchema/ezcDbSchemaPgsqlReader.html - */ - protected function _getPortableTableIndexesList($tableIndexes, $tableName = null) - { - $indexBuffer = []; - - // fetch primary - $indexArray = $this->_conn->fetchAllAssociative('SELECT * FROM PRAGMA_TABLE_INFO (?)', [$tableName]); - - usort( - $indexArray, - /** - * @param array $a - * @param array $b - */ - static function (array $a, array $b): int { - if ($a['pk'] === $b['pk']) { - return $a['cid'] - $b['cid']; - } - - return $a['pk'] - $b['pk']; - }, - ); - - foreach ($indexArray as $indexColumnRow) { - if ($indexColumnRow['pk'] === 0 || $indexColumnRow['pk'] === '0') { - continue; - } - - $indexBuffer[] = [ - 'key_name' => 'primary', - 'primary' => true, - 'non_unique' => false, - 'column_name' => $indexColumnRow['name'], - ]; - } - - // fetch regular indexes - foreach ($tableIndexes as $tableIndex) { - // Ignore indexes with reserved names, e.g. autoindexes - if (strpos($tableIndex['name'], 'sqlite_') === 0) { - continue; - } - - $keyName = $tableIndex['name']; - $idx = []; - $idx['key_name'] = $keyName; - $idx['primary'] = false; - $idx['non_unique'] = ! $tableIndex['unique']; - - $indexArray = $this->_conn->fetchAllAssociative('SELECT * FROM PRAGMA_INDEX_INFO (?)', [$keyName]); - - foreach ($indexArray as $indexColumnRow) { - $idx['column_name'] = $indexColumnRow['name']; - $indexBuffer[] = $idx; - } - } - - return parent::_getPortableTableIndexesList($indexBuffer, $tableName); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableColumnList($table, $database, $tableColumns) - { - $list = parent::_getPortableTableColumnList($table, $database, $tableColumns); - - // find column with autoincrement - $autoincrementColumn = null; - $autoincrementCount = 0; - - foreach ($tableColumns as $tableColumn) { - if ($tableColumn['pk'] === 0 || $tableColumn['pk'] === '0') { - continue; - } - - $autoincrementCount++; - if ($autoincrementColumn !== null || strtolower($tableColumn['type']) !== 'integer') { - continue; - } - - $autoincrementColumn = $tableColumn['name']; - } - - if ($autoincrementCount === 1 && $autoincrementColumn !== null) { - foreach ($list as $column) { - if ($autoincrementColumn !== $column->getName()) { - continue; - } - - $column->setAutoincrement(true); - } - } - - // inspect column collation and comments - $createSql = $this->getCreateTableSQL($table); - - foreach ($list as $columnName => $column) { - $type = $column->getType(); - - if ($type instanceof StringType || $type instanceof TextType) { - $column->setPlatformOption( - 'collation', - $this->parseColumnCollationFromSQL($columnName, $createSql) ?? 'BINARY', - ); - } - - $comment = $this->parseColumnCommentFromSQL($columnName, $createSql); - - if ($comment === null) { - continue; - } - - $type = $this->extractDoctrineTypeFromComment($comment, ''); - - if ($type !== '') { - $column->setType(Type::getType($type)); - - $comment = $this->removeDoctrineTypeFromComment($comment, $type); - } - - $column->setComment($comment); - } - - return $list; - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableColumnDefinition($tableColumn) - { - $parts = explode('(', $tableColumn['type']); - $tableColumn['type'] = trim($parts[0]); - if (isset($parts[1])) { - $length = trim($parts[1], ')'); - $tableColumn['length'] = $length; - } - - $dbType = strtolower($tableColumn['type']); - $length = $tableColumn['length'] ?? null; - $unsigned = false; - - if (strpos($dbType, ' unsigned') !== false) { - $dbType = str_replace(' unsigned', '', $dbType); - $unsigned = true; - } - - $fixed = false; - $type = $this->_platform->getDoctrineTypeMapping($dbType); - $default = $tableColumn['dflt_value']; - if ($default === 'NULL') { - $default = null; - } - - if ($default !== null) { - // SQLite returns the default value as a literal expression, so we need to parse it - if (preg_match('/^\'(.*)\'$/s', $default, $matches) === 1) { - $default = str_replace("''", "'", $matches[1]); - } - } - - $notnull = (bool) $tableColumn['notnull']; - - if (! isset($tableColumn['name'])) { - $tableColumn['name'] = ''; - } - - $precision = null; - $scale = null; - - switch ($dbType) { - case 'char': - $fixed = true; - break; - case 'float': - case 'double': - case 'real': - case 'decimal': - case 'numeric': - if (isset($tableColumn['length'])) { - if (strpos($tableColumn['length'], ',') === false) { - $tableColumn['length'] .= ',0'; - } - - [$precision, $scale] = array_map('trim', explode(',', $tableColumn['length'])); - } - - $length = null; - break; - } - - $options = [ - 'length' => $length, - 'unsigned' => $unsigned, - 'fixed' => $fixed, - 'notnull' => $notnull, - 'default' => $default, - 'precision' => $precision, - 'scale' => $scale, - ]; - - return new Column($tableColumn['name'], Type::getType($type), $options); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableViewDefinition($view) - { - return new View($view['name'], $view['sql']); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeysList($tableForeignKeys) - { - $list = []; - foreach ($tableForeignKeys as $value) { - $value = array_change_key_case($value, CASE_LOWER); - $id = $value['id']; - if (! isset($list[$id])) { - if (! isset($value['on_delete']) || $value['on_delete'] === 'RESTRICT') { - $value['on_delete'] = null; - } - - if (! isset($value['on_update']) || $value['on_update'] === 'RESTRICT') { - $value['on_update'] = null; - } - - $list[$id] = [ - 'name' => $value['constraint_name'], - 'local' => [], - 'foreign' => [], - 'foreignTable' => $value['table'], - 'onDelete' => $value['on_delete'], - 'onUpdate' => $value['on_update'], - 'deferrable' => $value['deferrable'], - 'deferred' => $value['deferred'], - ]; - } - - $list[$id]['local'][] = $value['from']; - - if ($value['to'] === null) { - // Inferring a shorthand form for the foreign key constraint, where the "to" field is empty. - // @see https://www.sqlite.org/foreignkeys.html#fk_indexes. - $foreignTableIndexes = $this->_getPortableTableIndexesList([], $value['table']); - - if (! isset($foreignTableIndexes['primary'])) { - continue; - } - - $list[$id]['foreign'] = [...$list[$id]['foreign'], ...$foreignTableIndexes['primary']->getColumns()]; - - continue; - } - - $list[$id]['foreign'][] = $value['to']; - } - - return parent::_getPortableTableForeignKeysList($list); - } - - /** - * {@inheritDoc} - */ - protected function _getPortableTableForeignKeyDefinition($tableForeignKey): ForeignKeyConstraint - { - return new ForeignKeyConstraint( - $tableForeignKey['local'], - $tableForeignKey['foreignTable'], - $tableForeignKey['foreign'], - $tableForeignKey['name'], - [ - 'onDelete' => $tableForeignKey['onDelete'], - 'onUpdate' => $tableForeignKey['onUpdate'], - 'deferrable' => $tableForeignKey['deferrable'], - 'deferred' => $tableForeignKey['deferred'], - ], - ); - } - - private function parseColumnCollationFromSQL(string $column, string $sql): ?string - { - $pattern = '{(?:\W' . preg_quote($column) . '\W|\W' - . preg_quote($this->_platform->quoteSingleIdentifier($column)) - . '\W)[^,(]+(?:\([^()]+\)[^,]*)?(?:(?:DEFAULT|CHECK)\s*(?:\(.*?\))?[^,]*)*COLLATE\s+["\']?([^\s,"\')]+)}is'; - - if (preg_match($pattern, $sql, $match) !== 1) { - return null; - } - - return $match[1]; - } - - private function parseTableCommentFromSQL(string $table, string $sql): ?string - { - $pattern = '/\s* # Allow whitespace characters at start of line -CREATE\sTABLE # Match "CREATE TABLE" -(?:\W"' . preg_quote($this->_platform->quoteSingleIdentifier($table), '/') . '"\W|\W' . preg_quote($table, '/') - . '\W) # Match table name (quoted and unquoted) -( # Start capture - (?:\s*--[^\n]*\n?)+ # Capture anything that starts with whitespaces followed by -- until the end of the line(s) -)/ix'; - - if (preg_match($pattern, $sql, $match) !== 1) { - return null; - } - - $comment = preg_replace('{^\s*--}m', '', rtrim($match[1], "\n")); - - return $comment === '' ? null : $comment; - } - - private function parseColumnCommentFromSQL(string $column, string $sql): ?string - { - $pattern = '{[\s(,](?:\W' . preg_quote($this->_platform->quoteSingleIdentifier($column)) - . '\W|\W' . preg_quote($column) . '\W)(?:\([^)]*?\)|[^,(])*?,?((?:(?!\n))(?:\s*--[^\n]*\n?)+)}i'; - - if (preg_match($pattern, $sql, $match) !== 1) { - return null; - } - - $comment = preg_replace('{^\s*--}m', '', rtrim($match[1], "\n")); - - return $comment === '' ? null : $comment; - } - - /** @throws Exception */ - private function getCreateTableSQL(string $table): string - { - $sql = $this->_conn->fetchOne( - <<<'SQL' -SELECT sql - FROM ( - SELECT * - FROM sqlite_master - UNION ALL - SELECT * - FROM sqlite_temp_master - ) -WHERE type = 'table' -AND name = ? -SQL - , - [$table], - ); - - if ($sql !== false) { - return $sql; - } - - return ''; - } - - /** - * @param list> $columns - * - * @return list> - * - * @throws Exception - */ - private function addDetailsToTableForeignKeyColumns(string $table, array $columns): array - { - $foreignKeyDetails = $this->getForeignKeyDetails($table); - $foreignKeyCount = count($foreignKeyDetails); - - foreach ($columns as $i => $column) { - // SQLite identifies foreign keys in reverse order of appearance in SQL - $columns[$i] = array_merge($column, $foreignKeyDetails[$foreignKeyCount - $column['id'] - 1]); - } - - return $columns; - } - - /** - * @param string $table - * - * @return list> - * - * @throws Exception - */ - private function getForeignKeyDetails($table) - { - $createSql = $this->getCreateTableSQL($table); - - if ( - preg_match_all( - '# - (?:CONSTRAINT\s+(\S+)\s+)? - (?:FOREIGN\s+KEY[^)]+\)\s*)? - REFERENCES\s+\S+\s*(?:\([^)]+\))? - (?: - [^,]*? - (NOT\s+DEFERRABLE|DEFERRABLE) - (?:\s+INITIALLY\s+(DEFERRED|IMMEDIATE))? - )?#isx', - $createSql, - $match, - ) === 0 - ) { - return []; - } - - $names = $match[1]; - $deferrable = $match[2]; - $deferred = $match[3]; - $details = []; - - for ($i = 0, $count = count($match[0]); $i < $count; $i++) { - $details[] = [ - 'constraint_name' => isset($names[$i]) && $names[$i] !== '' ? $names[$i] : null, - 'deferrable' => isset($deferrable[$i]) && strcasecmp($deferrable[$i], 'deferrable') === 0, - 'deferred' => isset($deferred[$i]) && strcasecmp($deferred[$i], 'deferred') === 0, - ]; - } - - return $details; - } - - public function createComparator(): Comparator - { - return new SQLite\Comparator($this->_platform); - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function getSchemaSearchPaths() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4821', - 'SqliteSchemaManager::getSchemaSearchPaths() is deprecated.', - ); - - // SQLite does not support schemas or databases - return []; - } - - protected function selectTableNames(string $databaseName): Result - { - $sql = <<<'SQL' -SELECT name AS table_name -FROM sqlite_master -WHERE type = 'table' - AND name != 'sqlite_sequence' - AND name != 'geometry_columns' - AND name != 'spatial_ref_sys' -UNION ALL -SELECT name -FROM sqlite_temp_master -WHERE type = 'table' -ORDER BY name -SQL; - - return $this->_conn->executeQuery($sql); - } - - protected function selectTableColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = <<<'SQL' - SELECT t.name AS table_name, - c.* - FROM sqlite_master t - JOIN pragma_table_info(t.name) c -SQL; - - $conditions = [ - "t.type = 'table'", - "t.name NOT IN ('geometry_columns', 'spatial_ref_sys', 'sqlite_sequence')", - ]; - $params = []; - - if ($tableName !== null) { - $conditions[] = 't.name = ?'; - $params[] = str_replace('.', '__', $tableName); - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY t.name, c.cid'; - - return $this->_conn->executeQuery($sql, $params); - } - - protected function selectIndexColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = <<<'SQL' - SELECT t.name AS table_name, - i.* - FROM sqlite_master t - JOIN pragma_index_list(t.name) i -SQL; - - $conditions = [ - "t.type = 'table'", - "t.name NOT IN ('geometry_columns', 'spatial_ref_sys', 'sqlite_sequence')", - ]; - $params = []; - - if ($tableName !== null) { - $conditions[] = 't.name = ?'; - $params[] = str_replace('.', '__', $tableName); - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY t.name, i.seq'; - - return $this->_conn->executeQuery($sql, $params); - } - - protected function selectForeignKeyColumns(string $databaseName, ?string $tableName = null): Result - { - $sql = <<<'SQL' - SELECT t.name AS table_name, - p.* - FROM sqlite_master t - JOIN pragma_foreign_key_list(t.name) p - ON p."seq" != "-1" -SQL; - - $conditions = [ - "t.type = 'table'", - "t.name NOT IN ('geometry_columns', 'spatial_ref_sys', 'sqlite_sequence')", - ]; - $params = []; - - if ($tableName !== null) { - $conditions[] = 't.name = ?'; - $params[] = str_replace('.', '__', $tableName); - } - - $sql .= ' WHERE ' . implode(' AND ', $conditions) . ' ORDER BY t.name, p.id DESC, p.seq'; - - return $this->_conn->executeQuery($sql, $params); - } - - /** - * {@inheritDoc} - */ - protected function fetchTableOptionsByTable(string $databaseName, ?string $tableName = null): array - { - if ($tableName === null) { - $tables = $this->listTableNames(); - } else { - $tables = [$tableName]; - } - - $tableOptions = []; - foreach ($tables as $table) { - $comment = $this->parseTableCommentFromSQL($table, $this->getCreateTableSQL($table)); - - if ($comment === null) { - continue; - } - - $tableOptions[$table]['comment'] = $comment; - } - - return $tableOptions; - } -} diff --git a/vendor/doctrine/dbal/src/Schema/Table.php b/vendor/doctrine/dbal/src/Schema/Table.php deleted file mode 100644 index ce4cc326..00000000 --- a/vendor/doctrine/dbal/src/Schema/Table.php +++ /dev/null @@ -1,1041 +0,0 @@ - [], - ]; - - /** @var SchemaConfig|null */ - protected $_schemaConfig; - - /** @var Index[] */ - private array $implicitIndexes = []; - - /** - * @param Column[] $columns - * @param Index[] $indexes - * @param UniqueConstraint[] $uniqueConstraints - * @param ForeignKeyConstraint[] $fkConstraints - * @param mixed[] $options - * - * @throws SchemaException - * @throws Exception - */ - public function __construct( - string $name, - array $columns = [], - array $indexes = [], - array $uniqueConstraints = [], - array $fkConstraints = [], - array $options = [] - ) { - if ($name === '') { - throw InvalidTableName::new($name); - } - - $this->_setName($name); - - foreach ($columns as $column) { - $this->_addColumn($column); - } - - foreach ($indexes as $idx) { - $this->_addIndex($idx); - } - - foreach ($uniqueConstraints as $uniqueConstraint) { - $this->_addUniqueConstraint($uniqueConstraint); - } - - foreach ($fkConstraints as $constraint) { - $this->_addForeignKeyConstraint($constraint); - } - - $this->_options = array_merge($this->_options, $options); - } - - /** @return void */ - public function setSchemaConfig(SchemaConfig $schemaConfig) - { - $this->_schemaConfig = $schemaConfig; - } - - /** @return int */ - protected function _getMaxIdentifierLength() - { - if ($this->_schemaConfig instanceof SchemaConfig) { - return $this->_schemaConfig->getMaxIdentifierLength(); - } - - return 63; - } - - /** - * Sets the Primary Key. - * - * @param string[] $columnNames - * @param string|false $indexName - * - * @return self - * - * @throws SchemaException - */ - public function setPrimaryKey(array $columnNames, $indexName = false) - { - if ($indexName === false) { - $indexName = 'primary'; - } - - $this->_addIndex($this->_createIndex($columnNames, $indexName, true, true)); - - foreach ($columnNames as $columnName) { - $column = $this->getColumn($columnName); - $column->setNotnull(true); - } - - return $this; - } - - /** - * @param string[] $columnNames - * @param string[] $flags - * @param mixed[] $options - * - * @return self - * - * @throws SchemaException - */ - public function addIndex(array $columnNames, ?string $indexName = null, array $flags = [], array $options = []) - { - $indexName ??= $this->_generateIdentifierName( - array_merge([$this->getName()], $columnNames), - 'idx', - $this->_getMaxIdentifierLength(), - ); - - return $this->_addIndex($this->_createIndex($columnNames, $indexName, false, false, $flags, $options)); - } - - /** - * @param string[] $columnNames - * @param string[] $flags - * @param mixed[] $options - * - * @return self - */ - public function addUniqueConstraint( - array $columnNames, - ?string $indexName = null, - array $flags = [], - array $options = [] - ): Table { - $indexName ??= $this->_generateIdentifierName( - array_merge([$this->getName()], $columnNames), - 'uniq', - $this->_getMaxIdentifierLength(), - ); - - return $this->_addUniqueConstraint($this->_createUniqueConstraint($columnNames, $indexName, $flags, $options)); - } - - /** - * Drops the primary key from this table. - * - * @return void - * - * @throws SchemaException - */ - public function dropPrimaryKey() - { - if ($this->_primaryKeyName === null) { - return; - } - - $this->dropIndex($this->_primaryKeyName); - $this->_primaryKeyName = null; - } - - /** - * Drops an index from this table. - * - * @param string $name The index name. - * - * @return void - * - * @throws SchemaException If the index does not exist. - */ - public function dropIndex($name) - { - $name = $this->normalizeIdentifier($name); - - if (! $this->hasIndex($name)) { - throw SchemaException::indexDoesNotExist($name, $this->_name); - } - - unset($this->_indexes[$name]); - } - - /** - * @param string[] $columnNames - * @param string|null $indexName - * @param mixed[] $options - * - * @return self - * - * @throws SchemaException - */ - public function addUniqueIndex(array $columnNames, $indexName = null, array $options = []) - { - $indexName ??= $this->_generateIdentifierName( - array_merge([$this->getName()], $columnNames), - 'uniq', - $this->_getMaxIdentifierLength(), - ); - - return $this->_addIndex($this->_createIndex($columnNames, $indexName, true, false, [], $options)); - } - - /** - * Renames an index. - * - * @param string $oldName The name of the index to rename from. - * @param string|null $newName The name of the index to rename to. - * If null is given, the index name will be auto-generated. - * - * @return self This table instance. - * - * @throws SchemaException If no index exists for the given current name - * or if an index with the given new name already exists on this table. - */ - public function renameIndex($oldName, $newName = null) - { - $oldName = $this->normalizeIdentifier($oldName); - $normalizedNewName = $this->normalizeIdentifier($newName); - - if ($oldName === $normalizedNewName) { - return $this; - } - - if (! $this->hasIndex($oldName)) { - throw SchemaException::indexDoesNotExist($oldName, $this->_name); - } - - if ($this->hasIndex($normalizedNewName)) { - throw SchemaException::indexAlreadyExists($normalizedNewName, $this->_name); - } - - $oldIndex = $this->_indexes[$oldName]; - - if ($oldIndex->isPrimary()) { - $this->dropPrimaryKey(); - - return $this->setPrimaryKey($oldIndex->getColumns(), $newName ?? false); - } - - unset($this->_indexes[$oldName]); - - if ($oldIndex->isUnique()) { - return $this->addUniqueIndex($oldIndex->getColumns(), $newName, $oldIndex->getOptions()); - } - - return $this->addIndex($oldIndex->getColumns(), $newName, $oldIndex->getFlags(), $oldIndex->getOptions()); - } - - /** - * Checks if an index begins in the order of the given columns. - * - * @param string[] $columnNames - * - * @return bool - */ - public function columnsAreIndexed(array $columnNames) - { - foreach ($this->getIndexes() as $index) { - if ($index->spansColumns($columnNames)) { - return true; - } - } - - return false; - } - - /** - * @param string[] $columnNames - * @param string $indexName - * @param bool $isUnique - * @param bool $isPrimary - * @param string[] $flags - * @param mixed[] $options - * - * @throws SchemaException - */ - private function _createIndex( - array $columnNames, - $indexName, - $isUnique, - $isPrimary, - array $flags = [], - array $options = [] - ): Index { - if (preg_match('(([^a-zA-Z0-9_]+))', $this->normalizeIdentifier($indexName)) === 1) { - throw SchemaException::indexNameInvalid($indexName); - } - - foreach ($columnNames as $columnName) { - if (! $this->hasColumn($columnName)) { - throw SchemaException::columnDoesNotExist($columnName, $this->_name); - } - } - - return new Index($indexName, $columnNames, $isUnique, $isPrimary, $flags, $options); - } - - /** - * @param string $name - * @param string $typeName - * @param mixed[] $options - * - * @return Column - * - * @throws SchemaException - */ - public function addColumn($name, $typeName, array $options = []) - { - $column = new Column($name, Type::getType($typeName), $options); - - $this->_addColumn($column); - - return $column; - } - - /** - * Change Column Details. - * - * @deprecated Use {@link modifyColumn()} instead. - * - * @param string $name - * @param mixed[] $options - * - * @return self - * - * @throws SchemaException - */ - public function changeColumn($name, array $options) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5747', - '%s is deprecated. Use modifyColumn() instead.', - __METHOD__, - ); - - return $this->modifyColumn($name, $options); - } - - /** - * @param string $name - * @param mixed[] $options - * - * @return self - * - * @throws SchemaException - */ - public function modifyColumn($name, array $options) - { - $column = $this->getColumn($name); - $column->setOptions($options); - - return $this; - } - - /** - * Drops a Column from the Table. - * - * @param string $name - * - * @return self - */ - public function dropColumn($name) - { - $name = $this->normalizeIdentifier($name); - - unset($this->_columns[$name]); - - return $this; - } - - /** - * Adds a foreign key constraint. - * - * Name is inferred from the local columns. - * - * @param Table|string $foreignTable Table schema instance or table name - * @param string[] $localColumnNames - * @param string[] $foreignColumnNames - * @param mixed[] $options - * @param string|null $name - * - * @return self - * - * @throws SchemaException - */ - public function addForeignKeyConstraint( - $foreignTable, - array $localColumnNames, - array $foreignColumnNames, - array $options = [], - $name = null - ) { - $name ??= $this->_generateIdentifierName( - array_merge([$this->getName()], $localColumnNames), - 'fk', - $this->_getMaxIdentifierLength(), - ); - - if ($foreignTable instanceof Table) { - foreach ($foreignColumnNames as $columnName) { - if (! $foreignTable->hasColumn($columnName)) { - throw SchemaException::columnDoesNotExist($columnName, $foreignTable->getName()); - } - } - } - - foreach ($localColumnNames as $columnName) { - if (! $this->hasColumn($columnName)) { - throw SchemaException::columnDoesNotExist($columnName, $this->_name); - } - } - - $constraint = new ForeignKeyConstraint( - $localColumnNames, - $foreignTable, - $foreignColumnNames, - $name, - $options, - ); - - return $this->_addForeignKeyConstraint($constraint); - } - - /** - * @param string $name - * @param mixed $value - * - * @return self - */ - public function addOption($name, $value) - { - $this->_options[$name] = $value; - - return $this; - } - - /** - * @return void - * - * @throws SchemaException - */ - protected function _addColumn(Column $column) - { - $columnName = $column->getName(); - $columnName = $this->normalizeIdentifier($columnName); - - if (isset($this->_columns[$columnName])) { - throw SchemaException::columnAlreadyExists($this->getName(), $columnName); - } - - $this->_columns[$columnName] = $column; - } - - /** - * Adds an index to the table. - * - * @return self - * - * @throws SchemaException - */ - protected function _addIndex(Index $indexCandidate) - { - $indexName = $indexCandidate->getName(); - $indexName = $this->normalizeIdentifier($indexName); - $replacedImplicitIndexes = []; - - foreach ($this->implicitIndexes as $name => $implicitIndex) { - if (! $implicitIndex->isFulfilledBy($indexCandidate) || ! isset($this->_indexes[$name])) { - continue; - } - - $replacedImplicitIndexes[] = $name; - } - - if ( - (isset($this->_indexes[$indexName]) && ! in_array($indexName, $replacedImplicitIndexes, true)) || - ($this->_primaryKeyName !== null && $indexCandidate->isPrimary()) - ) { - throw SchemaException::indexAlreadyExists($indexName, $this->_name); - } - - foreach ($replacedImplicitIndexes as $name) { - unset($this->_indexes[$name], $this->implicitIndexes[$name]); - } - - if ($indexCandidate->isPrimary()) { - $this->_primaryKeyName = $indexName; - } - - $this->_indexes[$indexName] = $indexCandidate; - - return $this; - } - - /** @return self */ - protected function _addUniqueConstraint(UniqueConstraint $constraint): Table - { - $mergedNames = array_merge([$this->getName()], $constraint->getColumns()); - $name = strlen($constraint->getName()) > 0 - ? $constraint->getName() - : $this->_generateIdentifierName($mergedNames, 'fk', $this->_getMaxIdentifierLength()); - - $name = $this->normalizeIdentifier($name); - - $this->uniqueConstraints[$name] = $constraint; - - // If there is already an index that fulfills this requirements drop the request. In the case of __construct - // calling this method during hydration from schema-details all the explicitly added indexes lead to duplicates. - // This creates computation overhead in this case, however no duplicate indexes are ever added (column based). - $indexName = $this->_generateIdentifierName($mergedNames, 'idx', $this->_getMaxIdentifierLength()); - - $indexCandidate = $this->_createIndex($constraint->getColumns(), $indexName, true, false); - - foreach ($this->_indexes as $existingIndex) { - if ($indexCandidate->isFulfilledBy($existingIndex)) { - return $this; - } - } - - $this->implicitIndexes[$this->normalizeIdentifier($indexName)] = $indexCandidate; - - return $this; - } - - /** @return self */ - protected function _addForeignKeyConstraint(ForeignKeyConstraint $constraint) - { - $constraint->setLocalTable($this); - - if (strlen($constraint->getName()) > 0) { - $name = $constraint->getName(); - } else { - $name = $this->_generateIdentifierName( - array_merge([$this->getName()], $constraint->getLocalColumns()), - 'fk', - $this->_getMaxIdentifierLength(), - ); - } - - $name = $this->normalizeIdentifier($name); - - $this->_fkConstraints[$name] = $constraint; - - /* Add an implicit index (defined by the DBAL) on the foreign key - columns. If there is already a user-defined index that fulfills these - requirements drop the request. In the case of __construct() calling - this method during hydration from schema-details, all the explicitly - added indexes lead to duplicates. This creates computation overhead in - this case, however no duplicate indexes are ever added (based on - columns). */ - $indexName = $this->_generateIdentifierName( - array_merge([$this->getName()], $constraint->getColumns()), - 'idx', - $this->_getMaxIdentifierLength(), - ); - - $indexCandidate = $this->_createIndex($constraint->getColumns(), $indexName, false, false); - - foreach ($this->_indexes as $existingIndex) { - if ($indexCandidate->isFulfilledBy($existingIndex)) { - return $this; - } - } - - $this->_addIndex($indexCandidate); - $this->implicitIndexes[$this->normalizeIdentifier($indexName)] = $indexCandidate; - - return $this; - } - - /** - * Returns whether this table has a foreign key constraint with the given name. - * - * @param string $name - * - * @return bool - */ - public function hasForeignKey($name) - { - $name = $this->normalizeIdentifier($name); - - return isset($this->_fkConstraints[$name]); - } - - /** - * Returns the foreign key constraint with the given name. - * - * @param string $name The constraint name. - * - * @return ForeignKeyConstraint - * - * @throws SchemaException If the foreign key does not exist. - */ - public function getForeignKey($name) - { - $name = $this->normalizeIdentifier($name); - - if (! $this->hasForeignKey($name)) { - throw SchemaException::foreignKeyDoesNotExist($name, $this->_name); - } - - return $this->_fkConstraints[$name]; - } - - /** - * Removes the foreign key constraint with the given name. - * - * @param string $name The constraint name. - * - * @return void - * - * @throws SchemaException - */ - public function removeForeignKey($name) - { - $name = $this->normalizeIdentifier($name); - - if (! $this->hasForeignKey($name)) { - throw SchemaException::foreignKeyDoesNotExist($name, $this->_name); - } - - unset($this->_fkConstraints[$name]); - } - - /** - * Returns whether this table has a unique constraint with the given name. - */ - public function hasUniqueConstraint(string $name): bool - { - $name = $this->normalizeIdentifier($name); - - return isset($this->uniqueConstraints[$name]); - } - - /** - * Returns the unique constraint with the given name. - * - * @throws SchemaException If the unique constraint does not exist. - */ - public function getUniqueConstraint(string $name): UniqueConstraint - { - $name = $this->normalizeIdentifier($name); - - if (! $this->hasUniqueConstraint($name)) { - throw SchemaException::uniqueConstraintDoesNotExist($name, $this->_name); - } - - return $this->uniqueConstraints[$name]; - } - - /** - * Removes the unique constraint with the given name. - * - * @throws SchemaException If the unique constraint does not exist. - */ - public function removeUniqueConstraint(string $name): void - { - $name = $this->normalizeIdentifier($name); - - if (! $this->hasUniqueConstraint($name)) { - throw SchemaException::uniqueConstraintDoesNotExist($name, $this->_name); - } - - unset($this->uniqueConstraints[$name]); - } - - /** - * Returns ordered list of columns (primary keys are first, then foreign keys, then the rest) - * - * @return Column[] - */ - public function getColumns() - { - $primaryKeyColumns = $this->getPrimaryKey() !== null ? $this->getPrimaryKeyColumns() : []; - $foreignKeyColumns = $this->getForeignKeyColumns(); - $remainderColumns = $this->filterColumns( - array_merge(array_keys($primaryKeyColumns), array_keys($foreignKeyColumns)), - true, - ); - - return array_merge($primaryKeyColumns, $foreignKeyColumns, $remainderColumns); - } - - /** - * Returns the foreign key columns - * - * @deprecated Use {@see getForeignKey()} and {@see ForeignKeyConstraint::getLocalColumns()} instead. - * - * @return Column[] - */ - public function getForeignKeyColumns() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5731', - '%s is deprecated. Use getForeignKey() and ForeignKeyConstraint::getLocalColumns() instead.', - __METHOD__, - ); - - $foreignKeyColumns = []; - - foreach ($this->getForeignKeys() as $foreignKey) { - $foreignKeyColumns = array_merge($foreignKeyColumns, $foreignKey->getLocalColumns()); - } - - return $this->filterColumns($foreignKeyColumns); - } - - /** - * Returns only columns that have specified names - * - * @param string[] $columnNames - * - * @return Column[] - */ - private function filterColumns(array $columnNames, bool $reverse = false): array - { - return array_filter($this->_columns, static function (string $columnName) use ($columnNames, $reverse): bool { - return in_array($columnName, $columnNames, true) !== $reverse; - }, ARRAY_FILTER_USE_KEY); - } - - /** - * Returns whether this table has a Column with the given name. - * - * @param string $name The column name. - * - * @return bool - */ - public function hasColumn($name) - { - $name = $this->normalizeIdentifier($name); - - return isset($this->_columns[$name]); - } - - /** - * Returns the Column with the given name. - * - * @param string $name The column name. - * - * @return Column - * - * @throws SchemaException If the column does not exist. - */ - public function getColumn($name) - { - $name = $this->normalizeIdentifier($name); - - if (! $this->hasColumn($name)) { - throw SchemaException::columnDoesNotExist($name, $this->_name); - } - - return $this->_columns[$name]; - } - - /** - * Returns the primary key. - * - * @return Index|null The primary key, or null if this Table has no primary key. - */ - public function getPrimaryKey() - { - if ($this->_primaryKeyName !== null) { - return $this->getIndex($this->_primaryKeyName); - } - - return null; - } - - /** - * Returns the primary key columns. - * - * @deprecated Use {@see getPrimaryKey()} and {@see Index::getColumns()} instead. - * - * @return Column[] - * - * @throws Exception - */ - public function getPrimaryKeyColumns() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5731', - '%s is deprecated. Use getPrimaryKey() and Index::getColumns() instead.', - __METHOD__, - ); - - $primaryKey = $this->getPrimaryKey(); - - if ($primaryKey === null) { - throw new Exception('Table ' . $this->getName() . ' has no primary key.'); - } - - return $this->filterColumns($primaryKey->getColumns()); - } - - /** - * Returns whether this table has a primary key. - * - * @deprecated Use {@see getPrimaryKey()} instead. - * - * @return bool - */ - public function hasPrimaryKey() - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5731', - '%s is deprecated. Use getPrimaryKey() instead.', - __METHOD__, - ); - - return $this->_primaryKeyName !== null && $this->hasIndex($this->_primaryKeyName); - } - - /** - * Returns whether this table has an Index with the given name. - * - * @param string $name The index name. - * - * @return bool - */ - public function hasIndex($name) - { - $name = $this->normalizeIdentifier($name); - - return isset($this->_indexes[$name]); - } - - /** - * Returns the Index with the given name. - * - * @param string $name The index name. - * - * @return Index - * - * @throws SchemaException If the index does not exist. - */ - public function getIndex($name) - { - $name = $this->normalizeIdentifier($name); - if (! $this->hasIndex($name)) { - throw SchemaException::indexDoesNotExist($name, $this->_name); - } - - return $this->_indexes[$name]; - } - - /** @return Index[] */ - public function getIndexes() - { - return $this->_indexes; - } - - /** - * Returns the unique constraints. - * - * @return UniqueConstraint[] - */ - public function getUniqueConstraints(): array - { - return $this->uniqueConstraints; - } - - /** - * Returns the foreign key constraints. - * - * @return ForeignKeyConstraint[] - */ - public function getForeignKeys() - { - return $this->_fkConstraints; - } - - /** - * @param string $name - * - * @return bool - */ - public function hasOption($name) - { - return isset($this->_options[$name]); - } - - /** - * @param string $name - * - * @return mixed - */ - public function getOption($name) - { - return $this->_options[$name]; - } - - /** @return mixed[] */ - public function getOptions() - { - return $this->_options; - } - - /** - * @deprecated - * - * @return void - * - * @throws SchemaException - */ - public function visit(Visitor $visitor) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5435', - 'Table::visit() is deprecated.', - ); - - $visitor->acceptTable($this); - - foreach ($this->getColumns() as $column) { - $visitor->acceptColumn($this, $column); - } - - foreach ($this->getIndexes() as $index) { - $visitor->acceptIndex($this, $index); - } - - foreach ($this->getForeignKeys() as $constraint) { - $visitor->acceptForeignKey($this, $constraint); - } - } - - /** - * Clone of a Table triggers a deep clone of all affected assets. - * - * @return void - */ - public function __clone() - { - foreach ($this->_columns as $k => $column) { - $this->_columns[$k] = clone $column; - } - - foreach ($this->_indexes as $k => $index) { - $this->_indexes[$k] = clone $index; - } - - foreach ($this->_fkConstraints as $k => $fk) { - $this->_fkConstraints[$k] = clone $fk; - $this->_fkConstraints[$k]->setLocalTable($this); - } - } - - /** - * @param string[] $columnNames - * @param string[] $flags - * @param mixed[] $options - * - * @throws SchemaException - */ - private function _createUniqueConstraint( - array $columnNames, - string $indexName, - array $flags = [], - array $options = [] - ): UniqueConstraint { - if (preg_match('(([^a-zA-Z0-9_]+))', $this->normalizeIdentifier($indexName)) === 1) { - throw SchemaException::indexNameInvalid($indexName); - } - - foreach ($columnNames as $columnName) { - if (! $this->hasColumn($columnName)) { - throw SchemaException::columnDoesNotExist($columnName, $this->_name); - } - } - - return new UniqueConstraint($indexName, $columnNames, $flags, $options); - } - - /** - * Normalizes a given identifier. - * - * Trims quotes and lowercases the given identifier. - * - * @return string The normalized identifier. - */ - private function normalizeIdentifier(?string $identifier): string - { - if ($identifier === null) { - return ''; - } - - return $this->trimQuotes(strtolower($identifier)); - } - - public function setComment(?string $comment): self - { - // For keeping backward compatibility with MySQL in previous releases, table comments are stored as options. - $this->addOption('comment', $comment); - - return $this; - } - - public function getComment(): ?string - { - return $this->_options['comment'] ?? null; - } -} diff --git a/vendor/doctrine/dbal/src/Schema/TableDiff.php b/vendor/doctrine/dbal/src/Schema/TableDiff.php deleted file mode 100644 index 9aaf9e77..00000000 --- a/vendor/doctrine/dbal/src/Schema/TableDiff.php +++ /dev/null @@ -1,361 +0,0 @@ - $addedColumns - * @param array $modifiedColumns - * @param array $droppedColumns - * @param array $addedIndexes - * @param array $changedIndexes - * @param array $removedIndexes - * @param list $addedForeignKeys - * @param list $changedForeignKeys - * @param list $removedForeignKeys - * @param array $renamedColumns - * @param array $renamedIndexes - */ - public function __construct( - $tableName, - $addedColumns = [], - $modifiedColumns = [], - $droppedColumns = [], - $addedIndexes = [], - $changedIndexes = [], - $removedIndexes = [], - ?Table $fromTable = null, - $addedForeignKeys = [], - $changedForeignKeys = [], - $removedForeignKeys = [], - $renamedColumns = [], - $renamedIndexes = [] - ) { - $this->name = $tableName; - $this->addedColumns = $addedColumns; - $this->changedColumns = $modifiedColumns; - $this->renamedColumns = $renamedColumns; - $this->removedColumns = $droppedColumns; - $this->addedIndexes = $addedIndexes; - $this->changedIndexes = $changedIndexes; - $this->renamedIndexes = $renamedIndexes; - $this->removedIndexes = $removedIndexes; - $this->addedForeignKeys = $addedForeignKeys; - $this->changedForeignKeys = $changedForeignKeys; - $this->removedForeignKeys = $removedForeignKeys; - - if ($fromTable === null) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5678', - 'Not passing the $fromTable to %s is deprecated.', - __METHOD__, - ); - } - - $this->fromTable = $fromTable; - } - - /** - * @deprecated Use {@see getOldTable()} instead. - * - * @param AbstractPlatform $platform The platform to use for retrieving this table diff's name. - * - * @return Identifier - */ - public function getName(AbstractPlatform $platform) - { - return new Identifier( - $this->fromTable instanceof Table ? $this->fromTable->getQuotedName($platform) : $this->name, - ); - } - - /** - * @deprecated Rename tables via {@link AbstractSchemaManager::renameTable()} instead. - * - * @return Identifier|false - */ - public function getNewName() - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5663', - '%s is deprecated. Rename tables via AbstractSchemaManager::renameTable() instead.', - __METHOD__, - ); - - if ($this->newName === false) { - return false; - } - - return new Identifier($this->newName); - } - - public function getOldTable(): ?Table - { - return $this->fromTable; - } - - /** @return list */ - public function getAddedColumns(): array - { - return array_values($this->addedColumns); - } - - /** @return list */ - public function getModifiedColumns(): array - { - return array_values($this->changedColumns); - } - - /** @return list */ - public function getDroppedColumns(): array - { - return array_values($this->removedColumns); - } - - /** @return array */ - public function getRenamedColumns(): array - { - return $this->renamedColumns; - } - - /** @return list */ - public function getAddedIndexes(): array - { - return array_values($this->addedIndexes); - } - - /** - * @internal This method exists only for compatibility with the current implementation of schema managers - * that modify the diff while processing it. - */ - public function unsetAddedIndex(Index $index): void - { - $this->addedIndexes = array_filter( - $this->addedIndexes, - static function (Index $addedIndex) use ($index): bool { - return $addedIndex !== $index; - }, - ); - } - - /** @return array */ - public function getModifiedIndexes(): array - { - return array_values($this->changedIndexes); - } - - /** @return list */ - public function getDroppedIndexes(): array - { - return array_values($this->removedIndexes); - } - - /** - * @internal This method exists only for compatibility with the current implementation of schema managers - * that modify the diff while processing it. - */ - public function unsetDroppedIndex(Index $index): void - { - $this->removedIndexes = array_filter( - $this->removedIndexes, - static function (Index $removedIndex) use ($index): bool { - return $removedIndex !== $index; - }, - ); - } - - /** @return array */ - public function getRenamedIndexes(): array - { - return $this->renamedIndexes; - } - - /** @return list */ - public function getAddedForeignKeys(): array - { - return $this->addedForeignKeys; - } - - /** @return list */ - public function getModifiedForeignKeys(): array - { - return $this->changedForeignKeys; - } - - /** @return list */ - public function getDroppedForeignKeys(): array - { - return $this->removedForeignKeys; - } - - /** - * @internal This method exists only for compatibility with the current implementation of the schema comparator. - * - * @param ForeignKeyConstraint|string $foreignKey - */ - public function unsetDroppedForeignKey($foreignKey): void - { - $this->removedForeignKeys = array_filter( - $this->removedForeignKeys, - static function ($removedForeignKey) use ($foreignKey): bool { - return $removedForeignKey !== $foreignKey; - }, - ); - } - - /** - * Returns whether the diff is empty (contains no changes). - */ - public function isEmpty(): bool - { - return count($this->addedColumns) === 0 - && count($this->changedColumns) === 0 - && count($this->removedColumns) === 0 - && count($this->renamedColumns) === 0 - && count($this->addedIndexes) === 0 - && count($this->changedIndexes) === 0 - && count($this->removedIndexes) === 0 - && count($this->renamedIndexes) === 0 - && count($this->addedForeignKeys) === 0 - && count($this->changedForeignKeys) === 0 - && count($this->removedForeignKeys) === 0; - } -} diff --git a/vendor/doctrine/dbal/src/Schema/UniqueConstraint.php b/vendor/doctrine/dbal/src/Schema/UniqueConstraint.php deleted file mode 100644 index f353f303..00000000 --- a/vendor/doctrine/dbal/src/Schema/UniqueConstraint.php +++ /dev/null @@ -1,154 +0,0 @@ - Identifier) - * - * @var Identifier[] - */ - protected $columns = []; - - /** - * Platform specific flags. - * array($flagName => true) - * - * @var true[] - */ - protected $flags = []; - - /** - * Platform specific options. - * - * @var mixed[] - */ - private array $options; - - /** - * @param string[] $columns - * @param string[] $flags - * @param mixed[] $options - */ - public function __construct(string $name, array $columns, array $flags = [], array $options = []) - { - $this->_setName($name); - - $this->options = $options; - - foreach ($columns as $column) { - $this->addColumn($column); - } - - foreach ($flags as $flag) { - $this->addFlag($flag); - } - } - - /** - * {@inheritDoc} - */ - public function getColumns() - { - return array_keys($this->columns); - } - - /** - * {@inheritDoc} - */ - public function getQuotedColumns(AbstractPlatform $platform) - { - $columns = []; - - foreach ($this->columns as $column) { - $columns[] = $column->getQuotedName($platform); - } - - return $columns; - } - - /** @return string[] */ - public function getUnquotedColumns(): array - { - return array_map([$this, 'trimQuotes'], $this->getColumns()); - } - - /** - * Returns platform specific flags for unique constraint. - * - * @return string[] - */ - public function getFlags(): array - { - return array_keys($this->flags); - } - - /** - * Adds flag for a unique constraint that translates to platform specific handling. - * - * @return $this - * - * @example $uniqueConstraint->addFlag('CLUSTERED') - */ - public function addFlag(string $flag): UniqueConstraint - { - $this->flags[strtolower($flag)] = true; - - return $this; - } - - /** - * Does this unique constraint have a specific flag? - */ - public function hasFlag(string $flag): bool - { - return isset($this->flags[strtolower($flag)]); - } - - /** - * Removes a flag. - */ - public function removeFlag(string $flag): void - { - unset($this->flags[strtolower($flag)]); - } - - /** - * Does this unique constraint have a specific option? - */ - public function hasOption(string $name): bool - { - return isset($this->options[strtolower($name)]); - } - - /** @return mixed */ - public function getOption(string $name) - { - return $this->options[strtolower($name)]; - } - - /** @return mixed[] */ - public function getOptions(): array - { - return $this->options; - } - - /** - * Adds a new column to the unique constraint. - */ - protected function addColumn(string $column): void - { - $this->columns[$column] = new Identifier($column); - } -} diff --git a/vendor/doctrine/dbal/src/Schema/View.php b/vendor/doctrine/dbal/src/Schema/View.php deleted file mode 100644 index b19f2ad1..00000000 --- a/vendor/doctrine/dbal/src/Schema/View.php +++ /dev/null @@ -1,28 +0,0 @@ -_setName($name); - $this->sql = $sql; - } - - /** @return string */ - public function getSql() - { - return $this->sql; - } -} diff --git a/vendor/doctrine/dbal/src/Schema/Visitor/AbstractVisitor.php b/vendor/doctrine/dbal/src/Schema/Visitor/AbstractVisitor.php deleted file mode 100644 index f8f3b582..00000000 --- a/vendor/doctrine/dbal/src/Schema/Visitor/AbstractVisitor.php +++ /dev/null @@ -1,49 +0,0 @@ -platform = $platform; - } - - /** - * {@inheritDoc} - */ - public function acceptNamespace($namespaceName) - { - if (! $this->platform->supportsSchemas()) { - return; - } - - $this->createNamespaceQueries[] = $this->platform->getCreateSchemaSQL($namespaceName); - } - - /** - * {@inheritDoc} - */ - public function acceptTable(Table $table) - { - $this->createTableQueries = array_merge($this->createTableQueries, $this->platform->getCreateTableSQL($table)); - } - - /** - * {@inheritDoc} - */ - public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint) - { - if (! $this->platform->supportsForeignKeyConstraints()) { - return; - } - - $this->createFkConstraintQueries[] = $this->platform->getCreateForeignKeySQL($fkConstraint, $localTable); - } - - /** - * {@inheritDoc} - */ - public function acceptSequence(Sequence $sequence) - { - $this->createSequenceQueries[] = $this->platform->getCreateSequenceSQL($sequence); - } - - /** @return void */ - public function resetQueries() - { - $this->createNamespaceQueries = []; - $this->createTableQueries = []; - $this->createSequenceQueries = []; - $this->createFkConstraintQueries = []; - } - - /** - * Gets all queries collected so far. - * - * @return string[] - */ - public function getQueries() - { - return array_merge( - $this->createNamespaceQueries, - $this->createSequenceQueries, - $this->createTableQueries, - $this->createFkConstraintQueries, - ); - } -} diff --git a/vendor/doctrine/dbal/src/Schema/Visitor/DropSchemaSqlCollector.php b/vendor/doctrine/dbal/src/Schema/Visitor/DropSchemaSqlCollector.php deleted file mode 100644 index ddec6b4a..00000000 --- a/vendor/doctrine/dbal/src/Schema/Visitor/DropSchemaSqlCollector.php +++ /dev/null @@ -1,107 +0,0 @@ -platform = $platform; - $this->initializeQueries(); - } - - /** - * {@inheritDoc} - */ - public function acceptTable(Table $table) - { - $this->tables->attach($table); - } - - /** - * {@inheritDoc} - */ - public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint) - { - if (strlen($fkConstraint->getName()) === 0) { - throw SchemaException::namedForeignKeyRequired($localTable, $fkConstraint); - } - - $this->constraints->attach($fkConstraint, $localTable); - } - - /** - * {@inheritDoc} - */ - public function acceptSequence(Sequence $sequence) - { - $this->sequences->attach($sequence); - } - - /** @return void */ - public function clearQueries() - { - $this->initializeQueries(); - } - - /** @return string[] */ - public function getQueries() - { - $sql = []; - - foreach ($this->constraints as $fkConstraint) { - assert($fkConstraint instanceof ForeignKeyConstraint); - $localTable = $this->constraints[$fkConstraint]; - $sql[] = $this->platform->getDropForeignKeySQL( - $fkConstraint->getQuotedName($this->platform), - $localTable->getQuotedName($this->platform), - ); - } - - foreach ($this->sequences as $sequence) { - assert($sequence instanceof Sequence); - $sql[] = $this->platform->getDropSequenceSQL($sequence->getQuotedName($this->platform)); - } - - foreach ($this->tables as $table) { - assert($table instanceof Table); - $sql[] = $this->platform->getDropTableSQL($table->getQuotedName($this->platform)); - } - - return $sql; - } - - private function initializeQueries(): void - { - $this->constraints = new SplObjectStorage(); - $this->sequences = new SplObjectStorage(); - $this->tables = new SplObjectStorage(); - } -} diff --git a/vendor/doctrine/dbal/src/Schema/Visitor/Graphviz.php b/vendor/doctrine/dbal/src/Schema/Visitor/Graphviz.php deleted file mode 100644 index 5eff0d94..00000000 --- a/vendor/doctrine/dbal/src/Schema/Visitor/Graphviz.php +++ /dev/null @@ -1,164 +0,0 @@ -output .= $this->createNodeRelation( - $fkConstraint->getLocalTableName() . ':col' . current($fkConstraint->getLocalColumns()) . ':se', - $fkConstraint->getForeignTableName() . ':col' . current($fkConstraint->getForeignColumns()) . ':se', - [ - 'dir' => 'back', - 'arrowtail' => 'dot', - 'arrowhead' => 'normal', - ], - ); - } - - /** - * {@inheritDoc} - */ - public function acceptSchema(Schema $schema) - { - $this->output = 'digraph "' . $schema->getName() . '" {' . "\n"; - $this->output .= 'splines = true;' . "\n"; - $this->output .= 'overlap = false;' . "\n"; - $this->output .= 'outputorder=edgesfirst;' . "\n"; - $this->output .= 'mindist = 0.6;' . "\n"; - $this->output .= 'sep = .2;' . "\n"; - } - - /** - * {@inheritDoc} - */ - public function acceptTable(Table $table) - { - $this->output .= $this->createNode( - $table->getName(), - [ - 'label' => $this->createTableLabel($table), - 'shape' => 'plaintext', - ], - ); - } - - private function createTableLabel(Table $table): string - { - // Start the table - $label = '<
'; - - // The title - $label .= ''; - - // The attributes block - foreach ($table->getColumns() as $column) { - $columnLabel = $column->getName(); - - $label .= '' - . '' - . '' - . ''; - } - - // End the table - $label .= '
' - . '' . $table->getName() . '
' - . '' . $columnLabel . '' - . '' - . '' - . strtolower($column->getType()->getName()) - . '' - . ''; - - $primaryKey = $table->getPrimaryKey(); - - if ($primaryKey !== null && in_array($column->getName(), $primaryKey->getColumns(), true)) { - $label .= "\xe2\x9c\xb7"; - } - - $label .= '
>'; - - return $label; - } - - /** - * @param string $name - * @param string[] $options - */ - private function createNode($name, $options): string - { - $node = $name . ' ['; - foreach ($options as $key => $value) { - $node .= $key . '=' . $value . ' '; - } - - $node .= "]\n"; - - return $node; - } - - /** - * @param string $node1 - * @param string $node2 - * @param string[] $options - */ - private function createNodeRelation($node1, $node2, $options): string - { - $relation = $node1 . ' -> ' . $node2 . ' ['; - foreach ($options as $key => $value) { - $relation .= $key . '=' . $value . ' '; - } - - $relation .= "]\n"; - - return $relation; - } - - /** - * Get Graphviz Output - * - * @return string - */ - public function getOutput() - { - return $this->output . '}'; - } - - /** - * Writes dot language output to a file. This should usually be a *.dot file. - * - * You have to convert the output into a viewable format. For example use "neato" on linux systems - * and execute: - * - * neato -Tpng -o er.png er.dot - * - * @param string $filename - * - * @return void - */ - public function write($filename) - { - file_put_contents($filename, $this->getOutput()); - } -} diff --git a/vendor/doctrine/dbal/src/Schema/Visitor/NamespaceVisitor.php b/vendor/doctrine/dbal/src/Schema/Visitor/NamespaceVisitor.php deleted file mode 100644 index 44382434..00000000 --- a/vendor/doctrine/dbal/src/Schema/Visitor/NamespaceVisitor.php +++ /dev/null @@ -1,20 +0,0 @@ -schema = $schema; - } - - /** - * {@inheritDoc} - */ - public function acceptTable(Table $table) - { - if ($this->schema === null) { - return; - } - - if ($table->isInDefaultNamespace($this->schema->getName())) { - return; - } - - $this->schema->dropTable($table->getName()); - } - - /** - * {@inheritDoc} - */ - public function acceptSequence(Sequence $sequence) - { - if ($this->schema === null) { - return; - } - - if ($sequence->isInDefaultNamespace($this->schema->getName())) { - return; - } - - $this->schema->dropSequence($sequence->getName()); - } - - /** - * {@inheritDoc} - */ - public function acceptForeignKey(Table $localTable, ForeignKeyConstraint $fkConstraint) - { - if ($this->schema === null) { - return; - } - - // The table may already be deleted in a previous - // RemoveNamespacedAssets#acceptTable call. Removing Foreign keys that - // point to nowhere. - if (! $this->schema->hasTable($fkConstraint->getForeignTableName())) { - $localTable->removeForeignKey($fkConstraint->getName()); - - return; - } - - $foreignTable = $this->schema->getTable($fkConstraint->getForeignTableName()); - if ($foreignTable->isInDefaultNamespace($this->schema->getName())) { - return; - } - - $localTable->removeForeignKey($fkConstraint->getName()); - } -} diff --git a/vendor/doctrine/dbal/src/Schema/Visitor/Visitor.php b/vendor/doctrine/dbal/src/Schema/Visitor/Visitor.php deleted file mode 100644 index 8b34864c..00000000 --- a/vendor/doctrine/dbal/src/Schema/Visitor/Visitor.php +++ /dev/null @@ -1,45 +0,0 @@ -Statement for the given SQL and Connection. - * - * @internal The statement can be only instantiated by {@see Connection}. - * - * @param Connection $conn The connection for handling statement errors. - * @param Driver\Statement $statement The underlying driver-level statement. - * @param string $sql The SQL of the statement. - * - * @throws Exception - */ - public function __construct(Connection $conn, Driver\Statement $statement, string $sql) - { - $this->conn = $conn; - $this->stmt = $statement; - $this->sql = $sql; - $this->platform = $conn->getDatabasePlatform(); - } - - /** - * Binds a parameter value to the statement. - * - * The value can optionally be bound with a DBAL mapping type. - * If bound with a DBAL mapping type, the binding type is derived from the mapping - * type and the value undergoes the conversion routines of the mapping type before - * being bound. - * - * @param string|int $param The name or position of the parameter. - * @param mixed $value The value of the parameter. - * @param mixed $type Either a PDO binding type or a DBAL mapping type name or instance. - * - * @return bool TRUE on success, FALSE on failure. - * - * @throws Exception - */ - public function bindValue($param, $value, $type = ParameterType::STRING) - { - $this->params[$param] = $value; - $this->types[$param] = $type; - - $bindingType = ParameterType::STRING; - - if ($type !== null) { - if (is_string($type)) { - $type = Type::getType($type); - } - - $bindingType = $type; - - if ($type instanceof Type) { - $value = $type->convertToDatabaseValue($value, $this->platform); - $bindingType = $type->getBindingType(); - } - } - - try { - return $this->stmt->bindValue($param, $value, $bindingType); - } catch (Driver\Exception $e) { - throw $this->conn->convertException($e); - } - } - - /** - * Binds a parameter to a value by reference. - * - * Binding a parameter by reference does not support DBAL mapping types. - * - * @deprecated Use {@see bindValue()} instead. - * - * @param string|int $param The name or position of the parameter. - * @param mixed $variable The reference to the variable to bind. - * @param int $type The binding type. - * @param int|null $length Must be specified when using an OUT bind - * so that PHP allocates enough memory to hold the returned value. - * - * @return bool TRUE on success, FALSE on failure. - * - * @throws Exception - */ - public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5563', - '%s is deprecated. Use bindValue() instead.', - __METHOD__, - ); - - $this->params[$param] = $variable; - $this->types[$param] = $type; - - try { - if (func_num_args() > 3) { - return $this->stmt->bindParam($param, $variable, $type, $length); - } - - return $this->stmt->bindParam($param, $variable, $type); - } catch (Driver\Exception $e) { - throw $this->conn->convertException($e); - } - } - - /** - * Executes the statement with the currently bound parameters. - * - * @deprecated Statement::execute() is deprecated, use Statement::executeQuery() or executeStatement() instead - * - * @param mixed[]|null $params - * - * @throws Exception - */ - public function execute($params = null): Result - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/4580', - '%s() is deprecated, use Statement::executeQuery() or Statement::executeStatement() instead', - __METHOD__, - ); - - if ($params !== null) { - $this->params = $params; - } - - $logger = $this->conn->getConfiguration()->getSQLLogger(); - if ($logger !== null) { - $logger->startQuery($this->sql, $this->params, $this->types); - } - - try { - return new Result( - $this->stmt->execute($params), - $this->conn, - ); - } catch (Driver\Exception $ex) { - throw $this->conn->convertExceptionDuringQuery($ex, $this->sql, $this->params, $this->types); - } finally { - if ($logger !== null) { - $logger->stopQuery(); - } - } - } - - /** - * Executes the statement with the currently bound parameters and return result. - * - * @param mixed[] $params - * - * @throws Exception - */ - public function executeQuery(array $params = []): Result - { - if (func_num_args() > 0) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5556', - 'Passing $params to Statement::executeQuery() is deprecated. Bind parameters using' - . ' Statement::bindParam() or Statement::bindValue() instead.', - ); - } - - if ($params === []) { - $params = null; // Workaround as long execute() exists and used internally. - } - - return $this->execute($params); - } - - /** - * Executes the statement with the currently bound parameters and return affected rows. - * - * @param mixed[] $params - * - * @throws Exception - */ - public function executeStatement(array $params = []): int - { - if (func_num_args() > 0) { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5556', - 'Passing $params to Statement::executeStatement() is deprecated. Bind parameters using' - . ' Statement::bindParam() or Statement::bindValue() instead.', - ); - } - - if ($params === []) { - $params = null; // Workaround as long execute() exists and used internally. - } - - return $this->execute($params)->rowCount(); - } - - /** - * Gets the wrapped driver statement. - * - * @return Driver\Statement - */ - public function getWrappedStatement() - { - return $this->stmt; - } -} diff --git a/vendor/doctrine/dbal/src/Tools/Console/Command/CommandCompatibility.php b/vendor/doctrine/dbal/src/Tools/Console/Command/CommandCompatibility.php deleted file mode 100644 index 562b5ce4..00000000 --- a/vendor/doctrine/dbal/src/Tools/Console/Command/CommandCompatibility.php +++ /dev/null @@ -1,35 +0,0 @@ -hasReturnType()) { - /** @internal */ - trait CommandCompatibility - { - protected function execute(InputInterface $input, OutputInterface $output): int - { - return $this->doExecute($input, $output); - } - } -} else { - /** @internal */ - trait CommandCompatibility - { - /** - * {@inheritDoc} - * - * @return int - */ - protected function execute(InputInterface $input, OutputInterface $output) - { - return $this->doExecute($input, $output); - } - } -} diff --git a/vendor/doctrine/dbal/src/Tools/Console/Command/ReservedWordsCommand.php b/vendor/doctrine/dbal/src/Tools/Console/Command/ReservedWordsCommand.php deleted file mode 100644 index e6331546..00000000 --- a/vendor/doctrine/dbal/src/Tools/Console/Command/ReservedWordsCommand.php +++ /dev/null @@ -1,216 +0,0 @@ - */ - private array $keywordLists; - - private ConnectionProvider $connectionProvider; - - public function __construct(ConnectionProvider $connectionProvider) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5431', - 'ReservedWordsCommand is deprecated. Use database documentation instead.', - ); - - parent::__construct(); - - $this->connectionProvider = $connectionProvider; - - $this->keywordLists = [ - 'db2' => new DB2Keywords(), - 'mariadb102' => new MariaDb102Keywords(), - 'mysql' => new MySQLKeywords(), - 'mysql57' => new MySQL57Keywords(), - 'mysql80' => new MySQL80Keywords(), - 'oracle' => new OracleKeywords(), - 'pgsql' => new PostgreSQL94Keywords(), - 'pgsql100' => new PostgreSQL100Keywords(), - 'sqlite' => new SQLiteKeywords(), - 'sqlserver' => new SQLServer2012Keywords(), - ]; - } - - /** - * Add or replace a keyword list. - */ - public function setKeywordList(string $name, KeywordList $keywordList): void - { - $this->keywordLists[$name] = $keywordList; - } - - /** - * If you want to add or replace a keywords list use this command. - * - * @param string $name - * @param class-string $class - * - * @return void - */ - public function setKeywordListClass($name, $class) - { - Deprecation::trigger( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/issues/4510', - 'ReservedWordsCommand::setKeywordListClass() is deprecated,' - . ' use ReservedWordsCommand::setKeywordList() instead.', - ); - - $this->keywordLists[$name] = new $class(); - } - - /** @return void */ - protected function configure() - { - $this - ->setName('dbal:reserved-words') - ->setDescription('Checks if the current database contains identifiers that are reserved.') - ->setDefinition([ - new InputOption('connection', null, InputOption::VALUE_REQUIRED, 'The named database connection'), - new InputOption( - 'list', - 'l', - InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, - 'Keyword-List name.', - ), - ]) - ->setHelp(<<<'EOT' -Checks if the current database contains tables and columns -with names that are identifiers in this dialect or in other SQL dialects. - -By default all supported platform keywords are checked: - - %command.full_name% - -If you want to check against specific dialects you can -pass them to the command: - - %command.full_name% -l mysql -l pgsql - -The following keyword lists are currently shipped with Doctrine: - - * db2 - * mariadb102 - * mysql - * mysql57 - * mysql80 - * oracle - * pgsql - * pgsql100 - * sqlite - * sqlserver -EOT); - } - - /** @throws Exception */ - private function doExecute(InputInterface $input, OutputInterface $output): int - { - $output->writeln( - 'The dbal:reserved-words command is deprecated.' - . ' Use the documentation on the used database platform(s) instead.', - ); - $output->writeln(''); - - $conn = $this->getConnection($input); - - $keywordLists = $input->getOption('list'); - - if (is_string($keywordLists)) { - $keywordLists = [$keywordLists]; - } elseif (! is_array($keywordLists)) { - $keywordLists = []; - } - - if (count($keywordLists) === 0) { - $keywordLists = array_keys($this->keywordLists); - } - - $keywords = []; - foreach ($keywordLists as $keywordList) { - if (! isset($this->keywordLists[$keywordList])) { - throw new InvalidArgumentException( - "There exists no keyword list with name '" . $keywordList . "'. " . - 'Known lists: ' . implode(', ', array_keys($this->keywordLists)), - ); - } - - $keywords[] = $this->keywordLists[$keywordList]; - } - - $output->write( - 'Checking keyword violations for ' . implode(', ', $keywordLists) . '...', - true, - ); - - $schema = $conn->getSchemaManager()->introspectSchema(); - $visitor = new ReservedKeywordsValidator($keywords); - $schema->visit($visitor); - - $violations = $visitor->getViolations(); - if (count($violations) !== 0) { - $output->write( - 'There are ' . count($violations) . ' reserved keyword violations' - . ' in your database schema:', - true, - ); - - foreach ($violations as $violation) { - $output->write(' - ' . $violation, true); - } - - return 1; - } - - $output->write('No reserved keywords violations have been found!', true); - - return 0; - } - - private function getConnection(InputInterface $input): Connection - { - $connectionName = $input->getOption('connection'); - assert(is_string($connectionName) || $connectionName === null); - - if ($connectionName !== null) { - return $this->connectionProvider->getConnection($connectionName); - } - - return $this->connectionProvider->getDefaultConnection(); - } -} diff --git a/vendor/doctrine/dbal/src/Tools/Console/Command/RunSqlCommand.php b/vendor/doctrine/dbal/src/Tools/Console/Command/RunSqlCommand.php deleted file mode 100644 index 4e5681e2..00000000 --- a/vendor/doctrine/dbal/src/Tools/Console/Command/RunSqlCommand.php +++ /dev/null @@ -1,120 +0,0 @@ -connectionProvider = $connectionProvider; - } - - /** @return void */ - protected function configure() - { - $this - ->setName('dbal:run-sql') - ->setDescription('Executes arbitrary SQL directly from the command line.') - ->setDefinition([ - new InputOption('connection', null, InputOption::VALUE_REQUIRED, 'The named database connection'), - new InputArgument('sql', InputArgument::REQUIRED, 'The SQL statement to execute.'), - new InputOption('depth', null, InputOption::VALUE_REQUIRED, 'Dumping depth of result set (deprecated).'), - new InputOption('force-fetch', null, InputOption::VALUE_NONE, 'Forces fetching the result.'), - ]) - ->setHelp(<<<'EOT' -The %command.name% command executes the given SQL query and -outputs the results: - -php %command.full_name% "SELECT * FROM users" -EOT); - } - - /** @throws Exception */ - private function doExecute(InputInterface $input, OutputInterface $output): int - { - $conn = $this->getConnection($input); - $io = new SymfonyStyle($input, $output); - - $sql = $input->getArgument('sql'); - - if ($sql === null) { - throw new RuntimeException("Argument 'SQL' is required in order to execute this command correctly."); - } - - assert(is_string($sql)); - - if ($input->getOption('depth') !== null) { - $io->warning('Parameter "depth" is deprecated and has no effect anymore.'); - } - - $forceFetch = $input->getOption('force-fetch'); - assert(is_bool($forceFetch)); - - if (stripos($sql, 'select') === 0 || $forceFetch) { - $this->runQuery($io, $conn, $sql); - } else { - $this->runStatement($io, $conn, $sql); - } - - return 0; - } - - private function getConnection(InputInterface $input): Connection - { - $connectionName = $input->getOption('connection'); - assert(is_string($connectionName) || $connectionName === null); - - if ($connectionName !== null) { - return $this->connectionProvider->getConnection($connectionName); - } - - return $this->connectionProvider->getDefaultConnection(); - } - - /** @throws Exception */ - private function runQuery(SymfonyStyle $io, Connection $conn, string $sql): void - { - $resultSet = $conn->fetchAllAssociative($sql); - if ($resultSet === []) { - $io->success('The query yielded an empty result set.'); - - return; - } - - $io->table(array_keys($resultSet[0]), $resultSet); - } - - /** @throws Exception */ - private function runStatement(SymfonyStyle $io, Connection $conn, string $sql): void - { - $io->success(sprintf('%d rows affected.', $conn->executeStatement($sql))); - } -} diff --git a/vendor/doctrine/dbal/src/Tools/Console/ConnectionNotFound.php b/vendor/doctrine/dbal/src/Tools/Console/ConnectionNotFound.php deleted file mode 100644 index 81ca4182..00000000 --- a/vendor/doctrine/dbal/src/Tools/Console/ConnectionNotFound.php +++ /dev/null @@ -1,9 +0,0 @@ -connection = $connection; - $this->defaultConnectionName = $defaultConnectionName; - } - - public function getDefaultConnection(): Connection - { - return $this->connection; - } - - public function getConnection(string $name): Connection - { - if ($name !== $this->defaultConnectionName) { - throw new ConnectionNotFound(sprintf('Connection with name "%s" does not exist.', $name)); - } - - return $this->connection; - } -} diff --git a/vendor/doctrine/dbal/src/Tools/Console/ConsoleRunner.php b/vendor/doctrine/dbal/src/Tools/Console/ConsoleRunner.php deleted file mode 100644 index e8fa3c60..00000000 --- a/vendor/doctrine/dbal/src/Tools/Console/ConsoleRunner.php +++ /dev/null @@ -1,81 +0,0 @@ -setCatchExceptions(true); - self::addCommands($cli, $connectionProvider); - $cli->addCommands($commands); - $cli->run(); - } - - /** @return void */ - public static function addCommands(Application $cli, ConnectionProvider $connectionProvider) - { - $cli->addCommands([ - new RunSqlCommand($connectionProvider), - new ReservedWordsCommand($connectionProvider), - ]); - } - - /** - * Prints the instructions to create a configuration file - * - * @deprecated This method will be removed without replacement. - * - * @return void - */ - public static function printCliConfigTemplate() - { - echo <<<'HELP' -You are missing a "cli-config.php" or "config/cli-config.php" file in your -project, which is required to get the Doctrine-DBAL Console working. You can use the -following sample as a template: - -> */ - private array $schemeMapping; - - /** @param array> $schemeMapping An array used to map DSN schemes to DBAL drivers */ - public function __construct(array $schemeMapping = []) - { - $this->schemeMapping = $schemeMapping; - } - - /** - * @psalm-return Params - * - * @throws MalformedDsnException - */ - public function parse( - #[SensitiveParameter] - string $dsn - ): array { - // (pdo-)?sqlite3?:///... => (pdo-)?sqlite3?://localhost/... or else the URL will be invalid - $url = preg_replace('#^((?:pdo-)?sqlite3?):///#', '$1://localhost/', $dsn); - assert($url !== null); - - $url = parse_url($url); - - if ($url === false) { - throw MalformedDsnException::new(); - } - - foreach ($url as $param => $value) { - if (! is_string($value)) { - continue; - } - - $url[$param] = rawurldecode($value); - } - - $params = []; - - if (isset($url['scheme'])) { - $params['driver'] = $this->parseDatabaseUrlScheme($url['scheme']); - } - - if (isset($url['host'])) { - $params['host'] = $url['host']; - } - - if (isset($url['port'])) { - $params['port'] = $url['port']; - } - - if (isset($url['user'])) { - $params['user'] = $url['user']; - } - - if (isset($url['pass'])) { - $params['password'] = $url['pass']; - } - - if (isset($params['driver']) && is_a($params['driver'], Driver::class, true)) { - $params['driverClass'] = $params['driver']; - unset($params['driver']); - } - - $params = $this->parseDatabaseUrlPath($url, $params); - $params = $this->parseDatabaseUrlQuery($url, $params); - - return $params; - } - - /** - * Parses the given connection URL and resolves the given connection parameters. - * - * Assumes that the connection URL scheme is already parsed and resolved into the given connection parameters - * via {@see parseDatabaseUrlScheme}. - * - * @see parseDatabaseUrlScheme - * - * @param mixed[] $url The URL parts to evaluate. - * @param mixed[] $params The connection parameters to resolve. - * - * @return mixed[] The resolved connection parameters. - */ - private function parseDatabaseUrlPath(array $url, array $params): array - { - if (! isset($url['path'])) { - return $params; - } - - $url['path'] = $this->normalizeDatabaseUrlPath($url['path']); - - // If we do not have a known DBAL driver, we do not know any connection URL path semantics to evaluate - // and therefore treat the path as a regular DBAL connection URL path. - if (! isset($params['driver'])) { - return $this->parseRegularDatabaseUrlPath($url, $params); - } - - if (strpos($params['driver'], 'sqlite') !== false) { - return $this->parseSqliteDatabaseUrlPath($url, $params); - } - - return $this->parseRegularDatabaseUrlPath($url, $params); - } - - /** - * Normalizes the given connection URL path. - * - * @return string The normalized connection URL path - */ - private function normalizeDatabaseUrlPath(string $urlPath): string - { - // Trim leading slash from URL path. - return substr($urlPath, 1); - } - - /** - * Parses the query part of the given connection URL and resolves the given connection parameters. - * - * @param mixed[] $url The connection URL parts to evaluate. - * @param mixed[] $params The connection parameters to resolve. - * - * @return mixed[] The resolved connection parameters. - */ - private function parseDatabaseUrlQuery(array $url, array $params): array - { - if (! isset($url['query'])) { - return $params; - } - - $query = []; - - parse_str($url['query'], $query); // simply ingest query as extra params, e.g. charset or sslmode - - return array_merge($params, $query); // parse_str wipes existing array elements - } - - /** - * Parses the given regular connection URL and resolves the given connection parameters. - * - * Assumes that the "path" URL part is already normalized via {@see normalizeDatabaseUrlPath}. - * - * @see normalizeDatabaseUrlPath - * - * @param mixed[] $url The regular connection URL parts to evaluate. - * @param mixed[] $params The connection parameters to resolve. - * - * @return mixed[] The resolved connection parameters. - */ - private function parseRegularDatabaseUrlPath(array $url, array $params): array - { - $params['dbname'] = $url['path']; - - return $params; - } - - /** - * Parses the given SQLite connection URL and resolves the given connection parameters. - * - * Assumes that the "path" URL part is already normalized via {@see normalizeDatabaseUrlPath}. - * - * @see normalizeDatabaseUrlPath - * - * @param mixed[] $url The SQLite connection URL parts to evaluate. - * @param mixed[] $params The connection parameters to resolve. - * - * @return mixed[] The resolved connection parameters. - */ - private function parseSqliteDatabaseUrlPath(array $url, array $params): array - { - if ($url['path'] === ':memory:') { - $params['memory'] = true; - - return $params; - } - - $params['path'] = $url['path']; // pdo_sqlite driver uses 'path' instead of 'dbname' key - - return $params; - } - - /** - * Parses the scheme part from given connection URL and resolves the given connection parameters. - * - * @return string The resolved driver. - */ - private function parseDatabaseUrlScheme(string $scheme): string - { - // URL schemes must not contain underscores, but dashes are ok - $driver = str_replace('-', '_', $scheme); - - // If the driver is an alias (e.g. "postgres"), map it to the actual name ("pdo-pgsql"). - // Otherwise, let checkParams decide later if the driver exists. - return $this->schemeMapping[$driver] ?? $driver; - } -} diff --git a/vendor/doctrine/dbal/src/TransactionIsolationLevel.php b/vendor/doctrine/dbal/src/TransactionIsolationLevel.php deleted file mode 100644 index 9020343a..00000000 --- a/vendor/doctrine/dbal/src/TransactionIsolationLevel.php +++ /dev/null @@ -1,33 +0,0 @@ -getClobTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function convertToDatabaseValue($value, AbstractPlatform $platform) - { - // @todo 3.0 - $value === null check to save real NULL in database - return serialize($value); - } - - /** - * {@inheritDoc} - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value === null) { - return null; - } - - $value = is_resource($value) ? stream_get_contents($value) : $value; - - set_error_handler(function (int $code, string $message): bool { - if ($code === E_DEPRECATED || $code === E_USER_DEPRECATED) { - return false; - } - - throw ConversionException::conversionFailedUnserialization($this->getName(), $message); - }); - - try { - return unserialize($value); - } finally { - restore_error_handler(); - } - } - - /** - * {@inheritDoc} - */ - public function getName() - { - return Types::ARRAY; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } -} diff --git a/vendor/doctrine/dbal/src/Types/AsciiStringType.php b/vendor/doctrine/dbal/src/Types/AsciiStringType.php deleted file mode 100644 index 4ea92d97..00000000 --- a/vendor/doctrine/dbal/src/Types/AsciiStringType.php +++ /dev/null @@ -1,29 +0,0 @@ -getAsciiStringTypeDeclarationSQL($column); - } - - public function getBindingType(): int - { - return ParameterType::ASCII; - } - - public function getName(): string - { - return Types::ASCII_STRING; - } -} diff --git a/vendor/doctrine/dbal/src/Types/BigIntType.php b/vendor/doctrine/dbal/src/Types/BigIntType.php deleted file mode 100644 index 8d57a112..00000000 --- a/vendor/doctrine/dbal/src/Types/BigIntType.php +++ /dev/null @@ -1,50 +0,0 @@ -getBigIntTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getBindingType() - { - return ParameterType::STRING; - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : string) - * - * @template T - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - return $value === null ? null : (string) $value; - } -} diff --git a/vendor/doctrine/dbal/src/Types/BinaryType.php b/vendor/doctrine/dbal/src/Types/BinaryType.php deleted file mode 100644 index acbbd87a..00000000 --- a/vendor/doctrine/dbal/src/Types/BinaryType.php +++ /dev/null @@ -1,67 +0,0 @@ -getBinaryTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value === null) { - return null; - } - - if (is_string($value)) { - $fp = fopen('php://temp', 'rb+'); - assert(is_resource($fp)); - fwrite($fp, $value); - fseek($fp, 0); - $value = $fp; - } - - if (! is_resource($value)) { - throw ConversionException::conversionFailed($value, Types::BINARY); - } - - return $value; - } - - /** - * {@inheritDoc} - */ - public function getName() - { - return Types::BINARY; - } - - /** - * {@inheritDoc} - */ - public function getBindingType() - { - return ParameterType::BINARY; - } -} diff --git a/vendor/doctrine/dbal/src/Types/BlobType.php b/vendor/doctrine/dbal/src/Types/BlobType.php deleted file mode 100644 index cfaabec9..00000000 --- a/vendor/doctrine/dbal/src/Types/BlobType.php +++ /dev/null @@ -1,67 +0,0 @@ -getBlobTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value === null) { - return null; - } - - if (is_string($value)) { - $fp = fopen('php://temp', 'rb+'); - assert(is_resource($fp)); - fwrite($fp, $value); - fseek($fp, 0); - $value = $fp; - } - - if (! is_resource($value)) { - throw ConversionException::conversionFailed($value, Types::BLOB); - } - - return $value; - } - - /** - * {@inheritDoc} - */ - public function getName() - { - return Types::BLOB; - } - - /** - * {@inheritDoc} - */ - public function getBindingType() - { - return ParameterType::LARGE_OBJECT; - } -} diff --git a/vendor/doctrine/dbal/src/Types/BooleanType.php b/vendor/doctrine/dbal/src/Types/BooleanType.php deleted file mode 100644 index 7dc7f3a9..00000000 --- a/vendor/doctrine/dbal/src/Types/BooleanType.php +++ /dev/null @@ -1,79 +0,0 @@ -getBooleanTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function convertToDatabaseValue($value, AbstractPlatform $platform) - { - return $platform->convertBooleansToDatabaseValue($value); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : bool) - * - * @template T - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - return $platform->convertFromBoolean($value); - } - - /** - * {@inheritDoc} - */ - public function getName() - { - return Types::BOOLEAN; - } - - /** - * {@inheritDoc} - */ - public function getBindingType() - { - return ParameterType::BOOLEAN; - } - - /** - * @deprecated - * - * @return bool - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - // We require a commented boolean type in order to distinguish between - // boolean and smallint as both (have to) map to the same native type. - return $platform instanceof DB2Platform; - } -} diff --git a/vendor/doctrine/dbal/src/Types/ConversionException.php b/vendor/doctrine/dbal/src/Types/ConversionException.php deleted file mode 100644 index 154b06d3..00000000 --- a/vendor/doctrine/dbal/src/Types/ConversionException.php +++ /dev/null @@ -1,123 +0,0 @@ - 32 ? substr($value, 0, 20) . '...' : $value; - - return new self('Could not convert database value "' . $value . '" to Doctrine Type ' . $toType, 0, $previous); - } - - /** - * Thrown when a Database to Doctrine Type Conversion fails and we can make a statement - * about the expected format. - * - * @param mixed $value - * @param string $toType - * @param string $expectedFormat - * - * @return ConversionException - */ - public static function conversionFailedFormat($value, $toType, $expectedFormat, ?Throwable $previous = null) - { - $value = strlen($value) > 32 ? substr($value, 0, 20) . '...' : $value; - - return new self( - 'Could not convert database value "' . $value . '" to Doctrine Type ' . - $toType . '. Expected format: ' . $expectedFormat, - 0, - $previous, - ); - } - - /** - * Thrown when the PHP value passed to the converter was not of the expected type. - * - * @param mixed $value - * @param string $toType - * @param string[] $possibleTypes - * - * @return ConversionException - */ - public static function conversionFailedInvalidType( - $value, - $toType, - array $possibleTypes, - ?Throwable $previous = null - ) { - if (is_scalar($value) || $value === null) { - return new self(sprintf( - 'Could not convert PHP value %s to type %s. Expected one of the following types: %s', - var_export($value, true), - $toType, - implode(', ', $possibleTypes), - ), 0, $previous); - } - - return new self(sprintf( - 'Could not convert PHP value of type %s to type %s. Expected one of the following types: %s', - is_object($value) ? get_class($value) : gettype($value), - $toType, - implode(', ', $possibleTypes), - ), 0, $previous); - } - - /** - * @param mixed $value - * @param string $format - * @param string $error - * - * @return ConversionException - */ - public static function conversionFailedSerialization($value, $format, $error /*, ?Throwable $previous = null */) - { - $actualType = is_object($value) ? get_class($value) : gettype($value); - - return new self(sprintf( - "Could not convert PHP type '%s' to '%s', as an '%s' error was triggered by the serialization", - $actualType, - $format, - $error, - ), 0, func_num_args() >= 4 ? func_get_arg(3) : null); - } - - public static function conversionFailedUnserialization(string $format, string $error): self - { - return new self(sprintf( - "Could not convert database value to '%s' as an error was triggered by the unserialization: '%s'", - $format, - $error, - )); - } -} diff --git a/vendor/doctrine/dbal/src/Types/DateImmutableType.php b/vendor/doctrine/dbal/src/Types/DateImmutableType.php deleted file mode 100644 index da96b69d..00000000 --- a/vendor/doctrine/dbal/src/Types/DateImmutableType.php +++ /dev/null @@ -1,92 +0,0 @@ -format($platform->getDateFormatString()); - } - - throw ConversionException::conversionFailedInvalidType( - $value, - $this->getName(), - ['null', DateTimeImmutable::class], - ); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : DateTimeImmutable) - * - * @template T - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value === null || $value instanceof DateTimeImmutable) { - return $value; - } - - $dateTime = DateTimeImmutable::createFromFormat('!' . $platform->getDateFormatString(), $value); - - if ($dateTime === false) { - throw ConversionException::conversionFailedFormat( - $value, - $this->getName(), - $platform->getDateFormatString(), - ); - } - - return $dateTime; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } -} diff --git a/vendor/doctrine/dbal/src/Types/DateIntervalType.php b/vendor/doctrine/dbal/src/Types/DateIntervalType.php deleted file mode 100644 index 1630dc55..00000000 --- a/vendor/doctrine/dbal/src/Types/DateIntervalType.php +++ /dev/null @@ -1,110 +0,0 @@ -getStringTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : string) - * - * @template T - */ - public function convertToDatabaseValue($value, AbstractPlatform $platform) - { - if ($value === null) { - return null; - } - - if ($value instanceof DateInterval) { - return $value->format(self::FORMAT); - } - - throw ConversionException::conversionFailedInvalidType($value, $this->getName(), ['null', DateInterval::class]); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : DateInterval) - * - * @template T - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value === null || $value instanceof DateInterval) { - return $value; - } - - $negative = false; - - if (isset($value[0]) && ($value[0] === '+' || $value[0] === '-')) { - $negative = $value[0] === '-'; - $value = substr($value, 1); - } - - try { - $interval = new DateInterval($value); - - if ($negative) { - $interval->invert = 1; - } - - return $interval; - } catch (Throwable $exception) { - throw ConversionException::conversionFailedFormat($value, $this->getName(), self::FORMAT, $exception); - } - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } -} diff --git a/vendor/doctrine/dbal/src/Types/DateTimeImmutableType.php b/vendor/doctrine/dbal/src/Types/DateTimeImmutableType.php deleted file mode 100644 index a8c7fec9..00000000 --- a/vendor/doctrine/dbal/src/Types/DateTimeImmutableType.php +++ /dev/null @@ -1,98 +0,0 @@ -format($platform->getDateTimeFormatString()); - } - - throw ConversionException::conversionFailedInvalidType( - $value, - $this->getName(), - ['null', DateTimeImmutable::class], - ); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : DateTimeImmutable) - * - * @template T - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value === null || $value instanceof DateTimeImmutable) { - return $value; - } - - $dateTime = DateTimeImmutable::createFromFormat($platform->getDateTimeFormatString(), $value); - - if ($dateTime !== false) { - return $dateTime; - } - - try { - return new DateTimeImmutable($value); - } catch (Exception $e) { - throw ConversionException::conversionFailedFormat( - $value, - $this->getName(), - $platform->getDateTimeFormatString(), - $e, - ); - } - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } -} diff --git a/vendor/doctrine/dbal/src/Types/DateTimeType.php b/vendor/doctrine/dbal/src/Types/DateTimeType.php deleted file mode 100644 index 3ff592ae..00000000 --- a/vendor/doctrine/dbal/src/Types/DateTimeType.php +++ /dev/null @@ -1,115 +0,0 @@ -getDateTimeTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : string) - * - * @template T - */ - public function convertToDatabaseValue($value, AbstractPlatform $platform) - { - if ($value === null) { - return $value; - } - - if ($value instanceof DateTimeImmutable) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6017', - 'Passing an instance of %s is deprecated, use %s::%s() instead.', - get_class($value), - DateTimeImmutableType::class, - __FUNCTION__, - ); - } - - if ($value instanceof DateTimeInterface) { - return $value->format($platform->getDateTimeFormatString()); - } - - throw ConversionException::conversionFailedInvalidType( - $value, - $this->getName(), - ['null', DateTime::class, DateTimeImmutable::class], - ); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : DateTimeInterface) - * - * @template T - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value instanceof DateTimeImmutable) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6017', - 'Passing an instance of %s is deprecated, use %s::%s() instead.', - get_class($value), - DateTimeImmutableType::class, - __FUNCTION__, - ); - } - - if ($value === null || $value instanceof DateTimeInterface) { - return $value; - } - - $dateTime = DateTime::createFromFormat($platform->getDateTimeFormatString(), $value); - - if ($dateTime !== false) { - return $dateTime; - } - - try { - return new DateTime($value); - } catch (Exception $e) { - throw ConversionException::conversionFailedFormat( - $value, - $this->getName(), - $platform->getDateTimeFormatString(), - $e, - ); - } - } -} diff --git a/vendor/doctrine/dbal/src/Types/DateTimeTzImmutableType.php b/vendor/doctrine/dbal/src/Types/DateTimeTzImmutableType.php deleted file mode 100644 index e700f68d..00000000 --- a/vendor/doctrine/dbal/src/Types/DateTimeTzImmutableType.php +++ /dev/null @@ -1,92 +0,0 @@ -format($platform->getDateTimeTzFormatString()); - } - - throw ConversionException::conversionFailedInvalidType( - $value, - $this->getName(), - ['null', DateTimeImmutable::class], - ); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : DateTimeImmutable) - * - * @template T - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value === null || $value instanceof DateTimeImmutable) { - return $value; - } - - $dateTime = DateTimeImmutable::createFromFormat($platform->getDateTimeTzFormatString(), $value); - - if ($dateTime !== false) { - return $dateTime; - } - - throw ConversionException::conversionFailedFormat( - $value, - $this->getName(), - $platform->getDateTimeTzFormatString(), - ); - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } -} diff --git a/vendor/doctrine/dbal/src/Types/DateTimeTzType.php b/vendor/doctrine/dbal/src/Types/DateTimeTzType.php deleted file mode 100644 index 1980fd33..00000000 --- a/vendor/doctrine/dbal/src/Types/DateTimeTzType.php +++ /dev/null @@ -1,121 +0,0 @@ -getDateTimeTzTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : string) - * - * @template T - */ - public function convertToDatabaseValue($value, AbstractPlatform $platform) - { - if ($value === null) { - return $value; - } - - if ($value instanceof DateTimeImmutable) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6017', - 'Passing an instance of %s is deprecated, use %s::%s() instead.', - get_class($value), - DateTimeTzImmutableType::class, - __FUNCTION__, - ); - } - - if ($value instanceof DateTimeInterface) { - return $value->format($platform->getDateTimeTzFormatString()); - } - - throw ConversionException::conversionFailedInvalidType( - $value, - $this->getName(), - ['null', DateTime::class], - ); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : DateTimeInterface) - * - * @template T - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value instanceof DateTimeImmutable) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6017', - 'Passing an instance of %s is deprecated, use %s::%s() instead.', - get_class($value), - DateTimeTzImmutableType::class, - __FUNCTION__, - ); - } - - if ($value === null || $value instanceof DateTimeInterface) { - return $value; - } - - $dateTime = DateTime::createFromFormat($platform->getDateTimeTzFormatString(), $value); - if ($dateTime !== false) { - return $dateTime; - } - - throw ConversionException::conversionFailedFormat( - $value, - $this->getName(), - $platform->getDateTimeTzFormatString(), - ); - } -} diff --git a/vendor/doctrine/dbal/src/Types/DateType.php b/vendor/doctrine/dbal/src/Types/DateType.php deleted file mode 100644 index 842e8bd0..00000000 --- a/vendor/doctrine/dbal/src/Types/DateType.php +++ /dev/null @@ -1,104 +0,0 @@ -getDateTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - * - * @psalm-param T $value - * - * @return (T is null ? null : string) - * - * @template T - */ - public function convertToDatabaseValue($value, AbstractPlatform $platform) - { - if ($value === null) { - return $value; - } - - if ($value instanceof DateTimeInterface) { - if ($value instanceof DateTimeImmutable) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6017', - 'Passing an instance of %s is deprecated, use %s::%s() instead.', - get_class($value), - DateImmutableType::class, - __FUNCTION__, - ); - } - - return $value->format($platform->getDateFormatString()); - } - - throw ConversionException::conversionFailedInvalidType($value, $this->getName(), ['null', DateTime::class]); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : DateTimeInterface) - * - * @template T - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value instanceof DateTimeImmutable) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6017', - 'Passing an instance of %s is deprecated, use %s::%s() instead.', - get_class($value), - DateImmutableType::class, - __FUNCTION__, - ); - } - - if ($value === null || $value instanceof DateTimeInterface) { - return $value; - } - - $dateTime = DateTime::createFromFormat('!' . $platform->getDateFormatString(), $value); - if ($dateTime !== false) { - return $dateTime; - } - - throw ConversionException::conversionFailedFormat( - $value, - $this->getName(), - $platform->getDateFormatString(), - ); - } -} diff --git a/vendor/doctrine/dbal/src/Types/DecimalType.php b/vendor/doctrine/dbal/src/Types/DecimalType.php deleted file mode 100644 index 308134b0..00000000 --- a/vendor/doctrine/dbal/src/Types/DecimalType.php +++ /dev/null @@ -1,47 +0,0 @@ -getDecimalTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - // Some drivers starting from PHP 8.1 can represent decimals as float/int - // See also: https://github.com/doctrine/dbal/pull/4818 - if ((PHP_VERSION_ID >= 80100 || $platform instanceof SqlitePlatform) && (is_float($value) || is_int($value))) { - return (string) $value; - } - - return $value; - } -} diff --git a/vendor/doctrine/dbal/src/Types/FloatType.php b/vendor/doctrine/dbal/src/Types/FloatType.php deleted file mode 100644 index e01b7741..00000000 --- a/vendor/doctrine/dbal/src/Types/FloatType.php +++ /dev/null @@ -1,38 +0,0 @@ -getFloatDeclarationSQL($column); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : float) - * - * @template T - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - return $value === null ? null : (float) $value; - } -} diff --git a/vendor/doctrine/dbal/src/Types/GuidType.php b/vendor/doctrine/dbal/src/Types/GuidType.php deleted file mode 100644 index 3c8b7f4f..00000000 --- a/vendor/doctrine/dbal/src/Types/GuidType.php +++ /dev/null @@ -1,45 +0,0 @@ -getGuidTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getName() - { - return Types::GUID; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return ! $platform->hasNativeGuidType(); - } -} diff --git a/vendor/doctrine/dbal/src/Types/IntegerType.php b/vendor/doctrine/dbal/src/Types/IntegerType.php deleted file mode 100644 index 7c2d7110..00000000 --- a/vendor/doctrine/dbal/src/Types/IntegerType.php +++ /dev/null @@ -1,50 +0,0 @@ -getIntegerTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : int) - * - * @template T - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - return $value === null ? null : (int) $value; - } - - /** - * {@inheritDoc} - */ - public function getBindingType() - { - return ParameterType::INTEGER; - } -} diff --git a/vendor/doctrine/dbal/src/Types/JsonType.php b/vendor/doctrine/dbal/src/Types/JsonType.php deleted file mode 100644 index 27f872c8..00000000 --- a/vendor/doctrine/dbal/src/Types/JsonType.php +++ /dev/null @@ -1,96 +0,0 @@ -getJsonTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : string) - * - * @template T - */ - public function convertToDatabaseValue($value, AbstractPlatform $platform) - { - if ($value === null) { - return null; - } - - try { - return json_encode($value, JSON_THROW_ON_ERROR | JSON_PRESERVE_ZERO_FRACTION); - } catch (JsonException $e) { - throw ConversionException::conversionFailedSerialization($value, 'json', $e->getMessage(), $e); - } - } - - /** - * {@inheritDoc} - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value === null || $value === '') { - return null; - } - - if (is_resource($value)) { - $value = stream_get_contents($value); - } - - try { - return json_decode($value, true, 512, JSON_THROW_ON_ERROR); - } catch (JsonException $e) { - throw ConversionException::conversionFailed($value, $this->getName(), $e); - } - } - - /** - * {@inheritDoc} - */ - public function getName() - { - return Types::JSON; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return ! $platform->hasNativeJsonType(); - } -} diff --git a/vendor/doctrine/dbal/src/Types/ObjectType.php b/vendor/doctrine/dbal/src/Types/ObjectType.php deleted file mode 100644 index 497e9c40..00000000 --- a/vendor/doctrine/dbal/src/Types/ObjectType.php +++ /dev/null @@ -1,88 +0,0 @@ -getClobTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - * - * @param mixed $value - * - * @return string - */ - public function convertToDatabaseValue($value, AbstractPlatform $platform) - { - return serialize($value); - } - - /** - * {@inheritDoc} - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value === null) { - return null; - } - - $value = is_resource($value) ? stream_get_contents($value) : $value; - - set_error_handler(function (int $code, string $message): bool { - throw ConversionException::conversionFailedUnserialization($this->getName(), $message); - }); - - try { - return unserialize($value); - } finally { - restore_error_handler(); - } - } - - /** - * {@inheritDoc} - */ - public function getName() - { - return Types::OBJECT; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } -} diff --git a/vendor/doctrine/dbal/src/Types/PhpDateTimeMappingType.php b/vendor/doctrine/dbal/src/Types/PhpDateTimeMappingType.php deleted file mode 100644 index 45658505..00000000 --- a/vendor/doctrine/dbal/src/Types/PhpDateTimeMappingType.php +++ /dev/null @@ -1,12 +0,0 @@ -getClobTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - * - * @param mixed $value - * - * @return string|null - */ - public function convertToDatabaseValue($value, AbstractPlatform $platform) - { - if (! is_array($value) || count($value) === 0) { - return null; - } - - return implode(',', $value); - } - - /** - * {@inheritDoc} - * - * @param mixed $value - * - * @return list - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value === null) { - return []; - } - - $value = is_resource($value) ? stream_get_contents($value) : $value; - - return explode(',', $value); - } - - /** - * {@inheritDoc} - */ - public function getName() - { - return Types::SIMPLE_ARRAY; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } -} diff --git a/vendor/doctrine/dbal/src/Types/SmallIntType.php b/vendor/doctrine/dbal/src/Types/SmallIntType.php deleted file mode 100644 index 2c8567a1..00000000 --- a/vendor/doctrine/dbal/src/Types/SmallIntType.php +++ /dev/null @@ -1,50 +0,0 @@ -getSmallIntTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : int) - * - * @template T - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - return $value === null ? null : (int) $value; - } - - /** - * {@inheritDoc} - */ - public function getBindingType() - { - return ParameterType::INTEGER; - } -} diff --git a/vendor/doctrine/dbal/src/Types/StringType.php b/vendor/doctrine/dbal/src/Types/StringType.php deleted file mode 100644 index 1992e8fa..00000000 --- a/vendor/doctrine/dbal/src/Types/StringType.php +++ /dev/null @@ -1,27 +0,0 @@ -getStringTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function getName() - { - return Types::STRING; - } -} diff --git a/vendor/doctrine/dbal/src/Types/TextType.php b/vendor/doctrine/dbal/src/Types/TextType.php deleted file mode 100644 index d060bb2d..00000000 --- a/vendor/doctrine/dbal/src/Types/TextType.php +++ /dev/null @@ -1,38 +0,0 @@ -getClobTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - return is_resource($value) ? stream_get_contents($value) : $value; - } - - /** - * {@inheritDoc} - */ - public function getName() - { - return Types::TEXT; - } -} diff --git a/vendor/doctrine/dbal/src/Types/TimeImmutableType.php b/vendor/doctrine/dbal/src/Types/TimeImmutableType.php deleted file mode 100644 index 9373f591..00000000 --- a/vendor/doctrine/dbal/src/Types/TimeImmutableType.php +++ /dev/null @@ -1,92 +0,0 @@ -format($platform->getTimeFormatString()); - } - - throw ConversionException::conversionFailedInvalidType( - $value, - $this->getName(), - ['null', DateTimeImmutable::class], - ); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : DateTimeImmutable) - * - * @template T - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value === null || $value instanceof DateTimeImmutable) { - return $value; - } - - $dateTime = DateTimeImmutable::createFromFormat('!' . $platform->getTimeFormatString(), $value); - - if ($dateTime !== false) { - return $dateTime; - } - - throw ConversionException::conversionFailedFormat( - $value, - $this->getName(), - $platform->getTimeFormatString(), - ); - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } -} diff --git a/vendor/doctrine/dbal/src/Types/TimeType.php b/vendor/doctrine/dbal/src/Types/TimeType.php deleted file mode 100644 index 7356fc20..00000000 --- a/vendor/doctrine/dbal/src/Types/TimeType.php +++ /dev/null @@ -1,104 +0,0 @@ -getTimeTypeDeclarationSQL($column); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : string) - * - * @template T - */ - public function convertToDatabaseValue($value, AbstractPlatform $platform) - { - if ($value === null) { - return $value; - } - - if ($value instanceof DateTimeImmutable) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6017', - 'Passing an instance of %s is deprecated, use %s::%s() instead.', - get_class($value), - TimeImmutableType::class, - __FUNCTION__, - ); - } - - if ($value instanceof DateTimeInterface) { - return $value->format($platform->getTimeFormatString()); - } - - throw ConversionException::conversionFailedInvalidType($value, $this->getName(), ['null', DateTime::class]); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : DateTimeInterface) - * - * @template T - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value instanceof DateTimeImmutable) { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/6017', - 'Passing an instance of %s is deprecated, use %s::%s() instead.', - get_class($value), - TimeImmutableType::class, - __FUNCTION__, - ); - } - - if ($value === null || $value instanceof DateTimeInterface) { - return $value; - } - - $dateTime = DateTime::createFromFormat('!' . $platform->getTimeFormatString(), $value); - if ($dateTime !== false) { - return $dateTime; - } - - throw ConversionException::conversionFailedFormat( - $value, - $this->getName(), - $platform->getTimeFormatString(), - ); - } -} diff --git a/vendor/doctrine/dbal/src/Types/Type.php b/vendor/doctrine/dbal/src/Types/Type.php deleted file mode 100644 index 7613811e..00000000 --- a/vendor/doctrine/dbal/src/Types/Type.php +++ /dev/null @@ -1,296 +0,0 @@ - ArrayType::class, - Types::ASCII_STRING => AsciiStringType::class, - Types::BIGINT => BigIntType::class, - Types::BINARY => BinaryType::class, - Types::BLOB => BlobType::class, - Types::BOOLEAN => BooleanType::class, - Types::DATE_MUTABLE => DateType::class, - Types::DATE_IMMUTABLE => DateImmutableType::class, - Types::DATEINTERVAL => DateIntervalType::class, - Types::DATETIME_MUTABLE => DateTimeType::class, - Types::DATETIME_IMMUTABLE => DateTimeImmutableType::class, - Types::DATETIMETZ_MUTABLE => DateTimeTzType::class, - Types::DATETIMETZ_IMMUTABLE => DateTimeTzImmutableType::class, - Types::DECIMAL => DecimalType::class, - Types::FLOAT => FloatType::class, - Types::GUID => GuidType::class, - Types::INTEGER => IntegerType::class, - Types::JSON => JsonType::class, - Types::OBJECT => ObjectType::class, - Types::SIMPLE_ARRAY => SimpleArrayType::class, - Types::SMALLINT => SmallIntType::class, - Types::STRING => StringType::class, - Types::TEXT => TextType::class, - Types::TIME_MUTABLE => TimeType::class, - Types::TIME_IMMUTABLE => TimeImmutableType::class, - ]; - - private static ?TypeRegistry $typeRegistry = null; - - /** @internal Do not instantiate directly - use {@see Type::addType()} method instead. */ - final public function __construct() - { - } - - /** - * Converts a value from its PHP representation to its database representation - * of this type. - * - * @param mixed $value The value to convert. - * @param AbstractPlatform $platform The currently used database platform. - * - * @return mixed The database representation of the value. - * - * @throws ConversionException - */ - public function convertToDatabaseValue($value, AbstractPlatform $platform) - { - return $value; - } - - /** - * Converts a value from its database representation to its PHP representation - * of this type. - * - * @param mixed $value The value to convert. - * @param AbstractPlatform $platform The currently used database platform. - * - * @return mixed The PHP representation of the value. - * - * @throws ConversionException - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - return $value; - } - - /** - * Gets the SQL declaration snippet for a column of this type. - * - * @param mixed[] $column The column definition - * @param AbstractPlatform $platform The currently used database platform. - * - * @return string - */ - abstract public function getSQLDeclaration(array $column, AbstractPlatform $platform); - - /** - * Gets the name of this type. - * - * @deprecated this method will be removed in Doctrine DBAL 4.0, - * use {@see TypeRegistry::lookupName()} instead. - * - * @return string - */ - abstract public function getName(); - - final public static function getTypeRegistry(): TypeRegistry - { - return self::$typeRegistry ??= self::createTypeRegistry(); - } - - private static function createTypeRegistry(): TypeRegistry - { - $instances = []; - - foreach (self::BUILTIN_TYPES_MAP as $name => $class) { - $instances[$name] = new $class(); - } - - return new TypeRegistry($instances); - } - - /** - * Factory method to create type instances. - * Type instances are implemented as flyweights. - * - * @param string $name The name of the type (as returned by getName()). - * - * @return Type - * - * @throws Exception - */ - public static function getType($name) - { - return self::getTypeRegistry()->get($name); - } - - /** - * Finds a name for the given type. - * - * @throws Exception - */ - public static function lookupName(self $type): string - { - return self::getTypeRegistry()->lookupName($type); - } - - /** - * Adds a custom type to the type map. - * - * @param string $name The name of the type. This should correspond to what getName() returns. - * @param class-string $className The class name of the custom type. - * - * @return void - * - * @throws Exception - */ - public static function addType($name, $className) - { - self::getTypeRegistry()->register($name, new $className()); - } - - /** - * Checks if exists support for a type. - * - * @param string $name The name of the type. - * - * @return bool TRUE if type is supported; FALSE otherwise. - */ - public static function hasType($name) - { - return self::getTypeRegistry()->has($name); - } - - /** - * Overrides an already defined type to use a different implementation. - * - * @param string $name - * @param class-string $className - * - * @return void - * - * @throws Exception - */ - public static function overrideType($name, $className) - { - self::getTypeRegistry()->override($name, new $className()); - } - - /** - * Gets the (preferred) binding type for values of this type that - * can be used when binding parameters to prepared statements. - * - * This method should return one of the {@see ParameterType} constants. - * - * @return int - */ - public function getBindingType() - { - return ParameterType::STRING; - } - - /** - * Gets the types array map which holds all registered types and the corresponding - * type class - * - * @return array - */ - public static function getTypesMap() - { - return array_map( - static function (Type $type): string { - return get_class($type); - }, - self::getTypeRegistry()->getMap(), - ); - } - - /** - * Does working with this column require SQL conversion functions? - * - * This is a metadata function that is required for example in the ORM. - * Usage of {@see convertToDatabaseValueSQL} and - * {@see convertToPHPValueSQL} works for any type and mostly - * does nothing. This method can additionally be used for optimization purposes. - * - * @deprecated Consumers should call {@see convertToDatabaseValueSQL} and {@see convertToPHPValueSQL} - * regardless of the type. - * - * @return bool - */ - public function canRequireSQLConversion() - { - return false; - } - - /** - * Modifies the SQL expression (identifier, parameter) to convert to a database value. - * - * @param string $sqlExpr - * - * @return string - */ - public function convertToDatabaseValueSQL($sqlExpr, AbstractPlatform $platform) - { - return $sqlExpr; - } - - /** - * Modifies the SQL expression (identifier, parameter) to convert to a PHP value. - * - * @param string $sqlExpr - * @param AbstractPlatform $platform - * - * @return string - */ - public function convertToPHPValueSQL($sqlExpr, $platform) - { - return $sqlExpr; - } - - /** - * Gets an array of database types that map to this Doctrine type. - * - * @return string[] - */ - public function getMappedDatabaseTypes(AbstractPlatform $platform) - { - return []; - } - - /** - * If this Doctrine Type maps to an already mapped database type, - * reverse schema engineering can't tell them apart. You need to mark - * one of those types as commented, which will have Doctrine use an SQL - * comment to typehint the actual Doctrine Type. - * - * @deprecated - * - * @return bool - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return false; - } -} diff --git a/vendor/doctrine/dbal/src/Types/TypeRegistry.php b/vendor/doctrine/dbal/src/Types/TypeRegistry.php deleted file mode 100644 index 9b64c6fa..00000000 --- a/vendor/doctrine/dbal/src/Types/TypeRegistry.php +++ /dev/null @@ -1,127 +0,0 @@ - Map of type names and their corresponding flyweight objects. */ - private array $instances; - /** @var array */ - private array $instancesReverseIndex; - - /** @param array $instances */ - public function __construct(array $instances = []) - { - $this->instances = []; - $this->instancesReverseIndex = []; - foreach ($instances as $name => $type) { - $this->register($name, $type); - } - } - - /** - * Finds a type by the given name. - * - * @throws Exception - */ - public function get(string $name): Type - { - $type = $this->instances[$name] ?? null; - if ($type === null) { - throw Exception::unknownColumnType($name); - } - - return $type; - } - - /** - * Finds a name for the given type. - * - * @throws Exception - */ - public function lookupName(Type $type): string - { - $name = $this->findTypeName($type); - - if ($name === null) { - throw Exception::typeNotRegistered($type); - } - - return $name; - } - - /** - * Checks if there is a type of the given name. - */ - public function has(string $name): bool - { - return isset($this->instances[$name]); - } - - /** - * Registers a custom type to the type map. - * - * @throws Exception - */ - public function register(string $name, Type $type): void - { - if (isset($this->instances[$name])) { - throw Exception::typeExists($name); - } - - if ($this->findTypeName($type) !== null) { - throw Exception::typeAlreadyRegistered($type); - } - - $this->instances[$name] = $type; - $this->instancesReverseIndex[spl_object_id($type)] = $name; - } - - /** - * Overrides an already defined type to use a different implementation. - * - * @throws Exception - */ - public function override(string $name, Type $type): void - { - $origType = $this->instances[$name] ?? null; - if ($origType === null) { - throw Exception::typeNotFound($name); - } - - if (($this->findTypeName($type) ?? $name) !== $name) { - throw Exception::typeAlreadyRegistered($type); - } - - unset($this->instancesReverseIndex[spl_object_id($origType)]); - $this->instances[$name] = $type; - $this->instancesReverseIndex[spl_object_id($type)] = $name; - } - - /** - * Gets the map of all registered types and their corresponding type instances. - * - * @internal - * - * @return array - */ - public function getMap(): array - { - return $this->instances; - } - - private function findTypeName(Type $type): ?string - { - return $this->instancesReverseIndex[spl_object_id($type)] ?? null; - } -} diff --git a/vendor/doctrine/dbal/src/Types/Types.php b/vendor/doctrine/dbal/src/Types/Types.php deleted file mode 100644 index 54b0dfec..00000000 --- a/vendor/doctrine/dbal/src/Types/Types.php +++ /dev/null @@ -1,47 +0,0 @@ -format($platform->getDateTimeFormatString()); - } - - throw ConversionException::conversionFailedInvalidType( - $value, - $this->getName(), - ['null', DateTimeImmutable::class], - ); - } - - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : DateTimeImmutable) - * - * @template T - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value === null || $value instanceof DateTimeImmutable) { - return $value; - } - - try { - $dateTime = new DateTimeImmutable($value); - } catch (Exception $e) { - throw ConversionException::conversionFailed($value, $this->getName(), $e); - } - - return $dateTime; - } - - /** - * {@inheritDoc} - * - * @deprecated - */ - public function requiresSQLCommentHint(AbstractPlatform $platform) - { - Deprecation::triggerIfCalledFromOutside( - 'doctrine/dbal', - 'https://github.com/doctrine/dbal/pull/5509', - '%s is deprecated.', - __METHOD__, - ); - - return true; - } -} diff --git a/vendor/doctrine/dbal/src/Types/VarDateTimeType.php b/vendor/doctrine/dbal/src/Types/VarDateTimeType.php deleted file mode 100644 index 35ad4032..00000000 --- a/vendor/doctrine/dbal/src/Types/VarDateTimeType.php +++ /dev/null @@ -1,42 +0,0 @@ - 0 it is necessary to use this type. - */ -class VarDateTimeType extends DateTimeType -{ - /** - * {@inheritDoc} - * - * @param T $value - * - * @return (T is null ? null : DateTimeInterface) - * - * @template T - */ - public function convertToPHPValue($value, AbstractPlatform $platform) - { - if ($value === null || $value instanceof DateTime) { - return $value; - } - - try { - $dateTime = new DateTime($value); - } catch (Exception $e) { - throw ConversionException::conversionFailed($value, $this->getName(), $e); - } - - return $dateTime; - } -} diff --git a/vendor/doctrine/dbal/src/VersionAwarePlatformDriver.php b/vendor/doctrine/dbal/src/VersionAwarePlatformDriver.php deleted file mode 100644 index ffcfcd63..00000000 --- a/vendor/doctrine/dbal/src/VersionAwarePlatformDriver.php +++ /dev/null @@ -1,30 +0,0 @@ - $count) { - echo $identifier . " was triggered " . $count . " times\n"; -} -``` - -### Suppressing Specific Deprecations - -Disable triggering about specific deprecations: - -```php -\Doctrine\Deprecations\Deprecation::ignoreDeprecations("https://link/to/deprecations-description-identifier"); -``` - -Disable all deprecations from a package - -```php -\Doctrine\Deprecations\Deprecation::ignorePackage("doctrine/orm"); -``` - -### Other Operations - -When used within PHPUnit or other tools that could collect multiple instances of the same deprecations -the deduplication can be disabled: - -```php -\Doctrine\Deprecations\Deprecation::withoutDeduplication(); -``` - -Disable deprecation tracking again: - -```php -\Doctrine\Deprecations\Deprecation::disable(); -``` - -## Usage from a library/producer perspective: - -When you want to unconditionally trigger a deprecation even when called -from the library itself then the `trigger` method is the way to go: - -```php -\Doctrine\Deprecations\Deprecation::trigger( - "doctrine/orm", - "https://link/to/deprecations-description", - "message" -); -``` - -If variable arguments are provided at the end, they are used with `sprintf` on -the message. - -```php -\Doctrine\Deprecations\Deprecation::trigger( - "doctrine/orm", - "https://github.com/doctrine/orm/issue/1234", - "message %s %d", - "foo", - 1234 -); -``` - -When you want to trigger a deprecation only when it is called by a function -outside of the current package, but not trigger when the package itself is the cause, -then use: - -```php -\Doctrine\Deprecations\Deprecation::triggerIfCalledFromOutside( - "doctrine/orm", - "https://link/to/deprecations-description", - "message" -); -``` - -Based on the issue link each deprecation message is only triggered once per -request. - -A limited stacktrace is included in the deprecation message to find the -offending location. - -Note: A producer/library should never call `Deprecation::enableWith` methods -and leave the decision how to handle deprecations to application and -frameworks. - -## Usage in PHPUnit tests - -There is a `VerifyDeprecations` trait that you can use to make assertions on -the occurrence of deprecations within a test. - -```php -use Doctrine\Deprecations\PHPUnit\VerifyDeprecations; - -class MyTest extends TestCase -{ - use VerifyDeprecations; - - public function testSomethingDeprecation() - { - $this->expectDeprecationWithIdentifier('https://github.com/doctrine/orm/issue/1234'); - - triggerTheCodeWithDeprecation(); - } - - public function testSomethingDeprecationFixed() - { - $this->expectNoDeprecationWithIdentifier('https://github.com/doctrine/orm/issue/1234'); - - triggerTheCodeWithoutDeprecation(); - } -} -``` - -## What is a deprecation identifier? - -An identifier for deprecations is just a link to any resource, most often a -Github Issue or Pull Request explaining the deprecation and potentially its -alternative. diff --git a/vendor/doctrine/deprecations/composer.json b/vendor/doctrine/deprecations/composer.json deleted file mode 100644 index f8319f9a..00000000 --- a/vendor/doctrine/deprecations/composer.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "name": "doctrine/deprecations", - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "license": "MIT", - "type": "library", - "homepage": "https://www.doctrine-project.org/", - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "1.4.10 || 1.10.15", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "0.18.4", - "psr/log": "^1 || ^2 || ^3", - "vimeo/psalm": "4.30.0 || 5.12.0" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" - } - }, - "autoload-dev": { - "psr-4": { - "DeprecationTests\\": "test_fixtures/src", - "Doctrine\\Foo\\": "test_fixtures/vendor/doctrine/foo" - } - }, - "config": { - "allow-plugins": { - "dealerdirect/phpcodesniffer-composer-installer": true - } - } -} diff --git a/vendor/doctrine/deprecations/lib/Doctrine/Deprecations/Deprecation.php b/vendor/doctrine/deprecations/lib/Doctrine/Deprecations/Deprecation.php deleted file mode 100644 index bad5070a..00000000 --- a/vendor/doctrine/deprecations/lib/Doctrine/Deprecations/Deprecation.php +++ /dev/null @@ -1,313 +0,0 @@ -|null */ - private static $type; - - /** @var LoggerInterface|null */ - private static $logger; - - /** @var array */ - private static $ignoredPackages = []; - - /** @var array */ - private static $triggeredDeprecations = []; - - /** @var array */ - private static $ignoredLinks = []; - - /** @var bool */ - private static $deduplication = true; - - /** - * Trigger a deprecation for the given package and identfier. - * - * The link should point to a Github issue or Wiki entry detailing the - * deprecation. It is additionally used to de-duplicate the trigger of the - * same deprecation during a request. - * - * @param float|int|string $args - */ - public static function trigger(string $package, string $link, string $message, ...$args): void - { - $type = self::$type ?? self::getTypeFromEnv(); - - if ($type === self::TYPE_NONE) { - return; - } - - if (isset(self::$ignoredLinks[$link])) { - return; - } - - if (array_key_exists($link, self::$triggeredDeprecations)) { - self::$triggeredDeprecations[$link]++; - } else { - self::$triggeredDeprecations[$link] = 1; - } - - if (self::$deduplication === true && self::$triggeredDeprecations[$link] > 1) { - return; - } - - if (isset(self::$ignoredPackages[$package])) { - return; - } - - $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2); - - $message = sprintf($message, ...$args); - - self::delegateTriggerToBackend($message, $backtrace, $link, $package); - } - - /** - * Trigger a deprecation for the given package and identifier when called from outside. - * - * "Outside" means we assume that $package is currently installed as a - * dependency and the caller is not a file in that package. When $package - * is installed as a root package then deprecations triggered from the - * tests folder are also considered "outside". - * - * This deprecation method assumes that you are using Composer to install - * the dependency and are using the default /vendor/ folder and not a - * Composer plugin to change the install location. The assumption is also - * that $package is the exact composer packge name. - * - * Compared to {@link trigger()} this method causes some overhead when - * deprecation tracking is enabled even during deduplication, because it - * needs to call {@link debug_backtrace()} - * - * @param float|int|string $args - */ - public static function triggerIfCalledFromOutside(string $package, string $link, string $message, ...$args): void - { - $type = self::$type ?? self::getTypeFromEnv(); - - if ($type === self::TYPE_NONE) { - return; - } - - $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2); - - // first check that the caller is not from a tests folder, in which case we always let deprecations pass - if (isset($backtrace[1]['file'], $backtrace[0]['file']) && strpos($backtrace[1]['file'], DIRECTORY_SEPARATOR . 'tests' . DIRECTORY_SEPARATOR) === false) { - $path = DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . str_replace('/', DIRECTORY_SEPARATOR, $package) . DIRECTORY_SEPARATOR; - - if (strpos($backtrace[0]['file'], $path) === false) { - return; - } - - if (strpos($backtrace[1]['file'], $path) !== false) { - return; - } - } - - if (isset(self::$ignoredLinks[$link])) { - return; - } - - if (array_key_exists($link, self::$triggeredDeprecations)) { - self::$triggeredDeprecations[$link]++; - } else { - self::$triggeredDeprecations[$link] = 1; - } - - if (self::$deduplication === true && self::$triggeredDeprecations[$link] > 1) { - return; - } - - if (isset(self::$ignoredPackages[$package])) { - return; - } - - $message = sprintf($message, ...$args); - - self::delegateTriggerToBackend($message, $backtrace, $link, $package); - } - - /** - * @param list $backtrace - */ - private static function delegateTriggerToBackend(string $message, array $backtrace, string $link, string $package): void - { - $type = self::$type ?? self::getTypeFromEnv(); - - if (($type & self::TYPE_PSR_LOGGER) > 0) { - $context = [ - 'file' => $backtrace[0]['file'] ?? null, - 'line' => $backtrace[0]['line'] ?? null, - 'package' => $package, - 'link' => $link, - ]; - - assert(self::$logger !== null); - - self::$logger->notice($message, $context); - } - - if (! (($type & self::TYPE_TRIGGER_ERROR) > 0)) { - return; - } - - $message .= sprintf( - ' (%s:%d called by %s:%d, %s, package %s)', - self::basename($backtrace[0]['file'] ?? 'native code'), - $backtrace[0]['line'] ?? 0, - self::basename($backtrace[1]['file'] ?? 'native code'), - $backtrace[1]['line'] ?? 0, - $link, - $package - ); - - @trigger_error($message, E_USER_DEPRECATED); - } - - /** - * A non-local-aware version of PHPs basename function. - */ - private static function basename(string $filename): string - { - $pos = strrpos($filename, DIRECTORY_SEPARATOR); - - if ($pos === false) { - return $filename; - } - - return substr($filename, $pos + 1); - } - - public static function enableTrackingDeprecations(): void - { - self::$type = self::$type ?? 0; - self::$type |= self::TYPE_TRACK_DEPRECATIONS; - } - - public static function enableWithTriggerError(): void - { - self::$type = self::$type ?? 0; - self::$type |= self::TYPE_TRIGGER_ERROR; - } - - public static function enableWithPsrLogger(LoggerInterface $logger): void - { - self::$type = self::$type ?? 0; - self::$type |= self::TYPE_PSR_LOGGER; - self::$logger = $logger; - } - - public static function withoutDeduplication(): void - { - self::$deduplication = false; - } - - public static function disable(): void - { - self::$type = self::TYPE_NONE; - self::$logger = null; - self::$deduplication = true; - self::$ignoredLinks = []; - - foreach (self::$triggeredDeprecations as $link => $count) { - self::$triggeredDeprecations[$link] = 0; - } - } - - public static function ignorePackage(string $packageName): void - { - self::$ignoredPackages[$packageName] = true; - } - - public static function ignoreDeprecations(string ...$links): void - { - foreach ($links as $link) { - self::$ignoredLinks[$link] = true; - } - } - - public static function getUniqueTriggeredDeprecationsCount(): int - { - return array_reduce(self::$triggeredDeprecations, static function (int $carry, int $count) { - return $carry + $count; - }, 0); - } - - /** - * Returns each triggered deprecation link identifier and the amount of occurrences. - * - * @return array - */ - public static function getTriggeredDeprecations(): array - { - return self::$triggeredDeprecations; - } - - /** - * @return int-mask-of - */ - private static function getTypeFromEnv(): int - { - switch ($_SERVER['DOCTRINE_DEPRECATIONS'] ?? $_ENV['DOCTRINE_DEPRECATIONS'] ?? null) { - case 'trigger': - self::$type = self::TYPE_TRIGGER_ERROR; - break; - - case 'track': - self::$type = self::TYPE_TRACK_DEPRECATIONS; - break; - - default: - self::$type = self::TYPE_NONE; - break; - } - - return self::$type; - } -} diff --git a/vendor/doctrine/deprecations/lib/Doctrine/Deprecations/PHPUnit/VerifyDeprecations.php b/vendor/doctrine/deprecations/lib/Doctrine/Deprecations/PHPUnit/VerifyDeprecations.php deleted file mode 100644 index 4c3366a9..00000000 --- a/vendor/doctrine/deprecations/lib/Doctrine/Deprecations/PHPUnit/VerifyDeprecations.php +++ /dev/null @@ -1,66 +0,0 @@ - */ - private $doctrineDeprecationsExpectations = []; - - /** @var array */ - private $doctrineNoDeprecationsExpectations = []; - - public function expectDeprecationWithIdentifier(string $identifier): void - { - $this->doctrineDeprecationsExpectations[$identifier] = Deprecation::getTriggeredDeprecations()[$identifier] ?? 0; - } - - public function expectNoDeprecationWithIdentifier(string $identifier): void - { - $this->doctrineNoDeprecationsExpectations[$identifier] = Deprecation::getTriggeredDeprecations()[$identifier] ?? 0; - } - - /** - * @before - */ - public function enableDeprecationTracking(): void - { - Deprecation::enableTrackingDeprecations(); - } - - /** - * @after - */ - public function verifyDeprecationsAreTriggered(): void - { - foreach ($this->doctrineDeprecationsExpectations as $identifier => $expectation) { - $actualCount = Deprecation::getTriggeredDeprecations()[$identifier] ?? 0; - - $this->assertTrue( - $actualCount > $expectation, - sprintf( - "Expected deprecation with identifier '%s' was not triggered by code executed in test.", - $identifier - ) - ); - } - - foreach ($this->doctrineNoDeprecationsExpectations as $identifier => $expectation) { - $actualCount = Deprecation::getTriggeredDeprecations()[$identifier] ?? 0; - - $this->assertTrue( - $actualCount === $expectation, - sprintf( - "Expected deprecation with identifier '%s' was triggered by code executed in test, but expected not to.", - $identifier - ) - ); - } - } -} diff --git a/vendor/doctrine/event-manager/LICENSE b/vendor/doctrine/event-manager/LICENSE deleted file mode 100644 index 8c38cc1b..00000000 --- a/vendor/doctrine/event-manager/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2006-2015 Doctrine Project - -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/vendor/doctrine/event-manager/README.md b/vendor/doctrine/event-manager/README.md deleted file mode 100644 index 5b36f546..00000000 --- a/vendor/doctrine/event-manager/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Doctrine Event Manager - -[![Build Status](https://github.com/doctrine/event-manager/workflows/Continuous%20Integration/badge.svg)](https://github.com/doctrine/event-manager/actions) -[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/doctrine/event-manager/badges/quality-score.png?b=1.2.x)](https://scrutinizer-ci.com/g/doctrine/event-manager/?branch=1.2.x) -[![Code Coverage](https://scrutinizer-ci.com/g/doctrine/event-manager/badges/coverage.png?b=1.2.x)](https://scrutinizer-ci.com/g/doctrine/event-manager/?branch=1.2.x) - -The Doctrine Event Manager is a library that provides a simple event system. - -## More resources: - -* [Website](https://www.doctrine-project.org/) -* [Documentation](https://www.doctrine-project.org/projects/doctrine-event-manager/en/latest/) -* [Downloads](https://github.com/doctrine/event-manager/releases) diff --git a/vendor/doctrine/event-manager/UPGRADE.md b/vendor/doctrine/event-manager/UPGRADE.md deleted file mode 100644 index 25154ef7..00000000 --- a/vendor/doctrine/event-manager/UPGRADE.md +++ /dev/null @@ -1,15 +0,0 @@ -# Upgrade to 2.0 - -## Made the `$event` parameter of `EventManager::getListeners()` mandatory - -When calling `EventManager::getListeners()` you need to specify the event that -you want to fetch the listeners for. Call `getAllListeners()` instead if you -want to access the listeners of all events. - -# Upgrade to 1.2 - -## Deprecated calling `EventManager::getListeners()` without an event name - -When calling `EventManager::getListeners()` without an event name, all -listeners were returned, keyed by event name. A new method `getAllListeners()` -has been added to provide this functionality. It should be used instead. diff --git a/vendor/doctrine/event-manager/composer.json b/vendor/doctrine/event-manager/composer.json deleted file mode 100644 index 756e93db..00000000 --- a/vendor/doctrine/event-manager/composer.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "name": "doctrine/event-manager", - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "license": "MIT", - "type": "library", - "keywords": [ - "events", - "event", - "event dispatcher", - "event manager", - "event system" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.8.8", - "phpunit/phpunit": "^9.5", - "vimeo/psalm": "^4.28" - }, - "conflict": { - "doctrine/common": "<2.9" - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "Doctrine\\Tests\\Common\\": "tests" - } - }, - "config": { - "allow-plugins": { - "dealerdirect/phpcodesniffer-composer-installer": true - }, - "sort-packages": true - } -} diff --git a/vendor/doctrine/event-manager/phpstan.neon.dist b/vendor/doctrine/event-manager/phpstan.neon.dist deleted file mode 100644 index 1517ec8c..00000000 --- a/vendor/doctrine/event-manager/phpstan.neon.dist +++ /dev/null @@ -1,5 +0,0 @@ -parameters: - level: 9 - paths: - - src/ - - tests/ diff --git a/vendor/doctrine/event-manager/psalm.xml b/vendor/doctrine/event-manager/psalm.xml deleted file mode 100644 index 4e9226bd..00000000 --- a/vendor/doctrine/event-manager/psalm.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - diff --git a/vendor/doctrine/event-manager/src/EventArgs.php b/vendor/doctrine/event-manager/src/EventArgs.php deleted file mode 100644 index eea3d8a0..00000000 --- a/vendor/doctrine/event-manager/src/EventArgs.php +++ /dev/null @@ -1,37 +0,0 @@ - => - * - * @var array - */ - private array $listeners = []; - - /** - * Dispatches an event to all registered listeners. - * - * @param string $eventName The name of the event to dispatch. The name of the event is - * the name of the method that is invoked on listeners. - * @param EventArgs|null $eventArgs The event arguments to pass to the event handlers/listeners. - * If not supplied, the single empty EventArgs instance is used. - */ - public function dispatchEvent(string $eventName, EventArgs|null $eventArgs = null): void - { - if (! isset($this->listeners[$eventName])) { - return; - } - - $eventArgs ??= EventArgs::getEmptyInstance(); - - foreach ($this->listeners[$eventName] as $listener) { - $listener->$eventName($eventArgs); - } - } - - /** - * Gets the listeners of a specific event. - * - * @param string $event The name of the event. - * - * @return object[] - */ - public function getListeners(string $event): array - { - return $this->listeners[$event] ?? []; - } - - /** - * Gets all listeners keyed by event name. - * - * @return array The event listeners for the specified event, or all event listeners. - */ - public function getAllListeners(): array - { - return $this->listeners; - } - - /** - * Checks whether an event has any registered listeners. - */ - public function hasListeners(string $event): bool - { - return ! empty($this->listeners[$event]); - } - - /** - * Adds an event listener that listens on the specified events. - * - * @param string|string[] $events The event(s) to listen on. - * @param object $listener The listener object. - */ - public function addEventListener(string|array $events, object $listener): void - { - // Picks the hash code related to that listener - $hash = spl_object_hash($listener); - - foreach ((array) $events as $event) { - // Overrides listener if a previous one was associated already - // Prevents duplicate listeners on same event (same instance only) - $this->listeners[$event][$hash] = $listener; - } - } - - /** - * Removes an event listener from the specified events. - * - * @param string|string[] $events - */ - public function removeEventListener(string|array $events, object $listener): void - { - // Picks the hash code related to that listener - $hash = spl_object_hash($listener); - - foreach ((array) $events as $event) { - unset($this->listeners[$event][$hash]); - } - } - - /** - * Adds an EventSubscriber. - * - * The subscriber is asked for all the events it is interested in and added - * as a listener for these events. - */ - public function addEventSubscriber(EventSubscriber $subscriber): void - { - $this->addEventListener($subscriber->getSubscribedEvents(), $subscriber); - } - - /** - * Removes an EventSubscriber. - * - * The subscriber is asked for all the events it is interested in and removed - * as a listener for these events. - */ - public function removeEventSubscriber(EventSubscriber $subscriber): void - { - $this->removeEventListener($subscriber->getSubscribedEvents(), $subscriber); - } -} diff --git a/vendor/doctrine/event-manager/src/EventSubscriber.php b/vendor/doctrine/event-manager/src/EventSubscriber.php deleted file mode 100644 index 89cef558..00000000 --- a/vendor/doctrine/event-manager/src/EventSubscriber.php +++ /dev/null @@ -1,21 +0,0 @@ -build(); - -By default it will create an English inflector. If you want to use another language, just pass the language -you want to create an inflector for to the ``createForLanguage()`` method: - -.. code-block:: php - - use Doctrine\Inflector\InflectorFactory; - use Doctrine\Inflector\Language; - - $inflector = InflectorFactory::createForLanguage(Language::SPANISH)->build(); - -The supported languages are as follows: - -- ``Language::ENGLISH`` -- ``Language::FRENCH`` -- ``Language::NORWEGIAN_BOKMAL`` -- ``Language::PORTUGUESE`` -- ``Language::SPANISH`` -- ``Language::TURKISH`` - -If you want to manually construct the inflector instead of using a factory, you can do so like this: - -.. code-block:: php - - use Doctrine\Inflector\CachedWordInflector; - use Doctrine\Inflector\RulesetInflector; - use Doctrine\Inflector\Rules\English; - - $inflector = new Inflector( - new CachedWordInflector(new RulesetInflector( - English\Rules::getSingularRuleset() - )), - new CachedWordInflector(new RulesetInflector( - English\Rules::getPluralRuleset() - )) - ); - -Adding Languages ----------------- - -If you are interested in adding support for your language, take a look at the other languages defined in the -``Doctrine\Inflector\Rules`` namespace and the tests located in ``Doctrine\Tests\Inflector\Rules``. You can copy -one of the languages and update the rules for your language. - -Once you have done this, send a pull request to the ``doctrine/inflector`` repository with the additions. - -Custom Setup -============ - -If you want to setup custom singular and plural rules, you can configure these in the factory: - -.. code-block:: php - - use Doctrine\Inflector\InflectorFactory; - use Doctrine\Inflector\Rules\Pattern; - use Doctrine\Inflector\Rules\Patterns; - use Doctrine\Inflector\Rules\Ruleset; - use Doctrine\Inflector\Rules\Substitution; - use Doctrine\Inflector\Rules\Substitutions; - use Doctrine\Inflector\Rules\Transformation; - use Doctrine\Inflector\Rules\Transformations; - use Doctrine\Inflector\Rules\Word; - - $inflector = InflectorFactory::create() - ->withSingularRules( - new Ruleset( - new Transformations( - new Transformation(new Pattern('/^(bil)er$/i'), '\1'), - new Transformation(new Pattern('/^(inflec|contribu)tors$/i'), '\1ta') - ), - new Patterns(new Pattern('singulars')), - new Substitutions(new Substitution(new Word('spins'), new Word('spinor'))) - ) - ) - ->withPluralRules( - new Ruleset( - new Transformations( - new Transformation(new Pattern('^(bil)er$'), '\1'), - new Transformation(new Pattern('^(inflec|contribu)tors$'), '\1ta') - ), - new Patterns(new Pattern('noflect'), new Pattern('abtuse')), - new Substitutions( - new Substitution(new Word('amaze'), new Word('amazable')), - new Substitution(new Word('phone'), new Word('phonezes')) - ) - ) - ) - ->build(); - -No operation inflector ----------------------- - -The ``Doctrine\Inflector\NoopWordInflector`` may be used to configure an inflector that doesn't perform any operation for -pluralization and/or singularization. If will simply return the input as output. - -This is an implementation of the `Null Object design pattern `_. - -.. code-block:: php - - use Doctrine\Inflector\Inflector; - use Doctrine\Inflector\NoopWordInflector; - - $inflector = new Inflector(new NoopWordInflector(), new NoopWordInflector()); - -Tableize -======== - -Converts ``ModelName`` to ``model_name``: - -.. code-block:: php - - echo $inflector->tableize('ModelName'); // model_name - -Classify -======== - -Converts ``model_name`` to ``ModelName``: - -.. code-block:: php - - echo $inflector->classify('model_name'); // ModelName - -Camelize -======== - -This method uses `Classify`_ and then converts the first character to lowercase: - -.. code-block:: php - - echo $inflector->camelize('model_name'); // modelName - -Capitalize -========== - -Takes a string and capitalizes all of the words, like PHP's built-in -``ucwords`` function. This extends that behavior, however, by allowing the -word delimiters to be configured, rather than only separating on -whitespace. - -Here is an example: - -.. code-block:: php - - $string = 'top-o-the-morning to all_of_you!'; - - echo $inflector->capitalize($string); // Top-O-The-Morning To All_of_you! - - echo $inflector->capitalize($string, '-_ '); // Top-O-The-Morning To All_Of_You! - -Pluralize -========= - -Returns a word in plural form. - -.. code-block:: php - - echo $inflector->pluralize('browser'); // browsers - -Singularize -=========== - -Returns a word in singular form. - -.. code-block:: php - - echo $inflector->singularize('browsers'); // browser - -Urlize -====== - -Generate a URL friendly string from a string of text: - -.. code-block:: php - - echo $inflector->urlize('My first blog post'); // my-first-blog-post - -Unaccent -======== - -You can unaccent a string of text using the ``unaccent()`` method: - -.. code-block:: php - - echo $inflector->unaccent('año'); // ano - -Legacy API -========== - -The API present in Inflector 1.x is still available, but will be deprecated in a future release and dropped for 3.0. -Support for languages other than English is available in the 2.0 API only. - -Acknowledgements -================ - -The language rules in this library have been adapted from several different sources, including but not limited to: - -- `Ruby On Rails Inflector `_ -- `ICanBoogie Inflector `_ -- `CakePHP Inflector `_ diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php deleted file mode 100644 index 2d529087..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/CachedWordInflector.php +++ /dev/null @@ -1,24 +0,0 @@ -wordInflector = $wordInflector; - } - - public function inflect(string $word): string - { - return $this->cache[$word] ?? $this->cache[$word] = $this->wordInflector->inflect($word); - } -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php deleted file mode 100644 index 166061d2..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/GenericLanguageInflectorFactory.php +++ /dev/null @@ -1,66 +0,0 @@ -singularRulesets[] = $this->getSingularRuleset(); - $this->pluralRulesets[] = $this->getPluralRuleset(); - } - - final public function build(): Inflector - { - return new Inflector( - new CachedWordInflector(new RulesetInflector( - ...$this->singularRulesets - )), - new CachedWordInflector(new RulesetInflector( - ...$this->pluralRulesets - )) - ); - } - - final public function withSingularRules(?Ruleset $singularRules, bool $reset = false): LanguageInflectorFactory - { - if ($reset) { - $this->singularRulesets = []; - } - - if ($singularRules instanceof Ruleset) { - array_unshift($this->singularRulesets, $singularRules); - } - - return $this; - } - - final public function withPluralRules(?Ruleset $pluralRules, bool $reset = false): LanguageInflectorFactory - { - if ($reset) { - $this->pluralRulesets = []; - } - - if ($pluralRules instanceof Ruleset) { - array_unshift($this->pluralRulesets, $pluralRules); - } - - return $this; - } - - abstract protected function getSingularRuleset(): Ruleset; - - abstract protected function getPluralRuleset(): Ruleset; -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php deleted file mode 100644 index 610a4cf4..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Inflector.php +++ /dev/null @@ -1,507 +0,0 @@ - 'A', - 'Á' => 'A', - 'Â' => 'A', - 'Ã' => 'A', - 'Ä' => 'Ae', - 'Æ' => 'Ae', - 'Å' => 'Aa', - 'æ' => 'a', - 'Ç' => 'C', - 'È' => 'E', - 'É' => 'E', - 'Ê' => 'E', - 'Ë' => 'E', - 'Ì' => 'I', - 'Í' => 'I', - 'Î' => 'I', - 'Ï' => 'I', - 'Ñ' => 'N', - 'Ò' => 'O', - 'Ó' => 'O', - 'Ô' => 'O', - 'Õ' => 'O', - 'Ö' => 'Oe', - 'Ù' => 'U', - 'Ú' => 'U', - 'Û' => 'U', - 'Ü' => 'Ue', - 'Ý' => 'Y', - 'ß' => 'ss', - 'à' => 'a', - 'á' => 'a', - 'â' => 'a', - 'ã' => 'a', - 'ä' => 'ae', - 'å' => 'aa', - 'ç' => 'c', - 'è' => 'e', - 'é' => 'e', - 'ê' => 'e', - 'ë' => 'e', - 'ì' => 'i', - 'í' => 'i', - 'î' => 'i', - 'ï' => 'i', - 'ñ' => 'n', - 'ò' => 'o', - 'ó' => 'o', - 'ô' => 'o', - 'õ' => 'o', - 'ö' => 'oe', - 'ù' => 'u', - 'ú' => 'u', - 'û' => 'u', - 'ü' => 'ue', - 'ý' => 'y', - 'ÿ' => 'y', - 'Ā' => 'A', - 'ā' => 'a', - 'Ă' => 'A', - 'ă' => 'a', - 'Ą' => 'A', - 'ą' => 'a', - 'Ć' => 'C', - 'ć' => 'c', - 'Ĉ' => 'C', - 'ĉ' => 'c', - 'Ċ' => 'C', - 'ċ' => 'c', - 'Č' => 'C', - 'č' => 'c', - 'Ď' => 'D', - 'ď' => 'd', - 'Đ' => 'D', - 'đ' => 'd', - 'Ē' => 'E', - 'ē' => 'e', - 'Ĕ' => 'E', - 'ĕ' => 'e', - 'Ė' => 'E', - 'ė' => 'e', - 'Ę' => 'E', - 'ę' => 'e', - 'Ě' => 'E', - 'ě' => 'e', - 'Ĝ' => 'G', - 'ĝ' => 'g', - 'Ğ' => 'G', - 'ğ' => 'g', - 'Ġ' => 'G', - 'ġ' => 'g', - 'Ģ' => 'G', - 'ģ' => 'g', - 'Ĥ' => 'H', - 'ĥ' => 'h', - 'Ħ' => 'H', - 'ħ' => 'h', - 'Ĩ' => 'I', - 'ĩ' => 'i', - 'Ī' => 'I', - 'ī' => 'i', - 'Ĭ' => 'I', - 'ĭ' => 'i', - 'Į' => 'I', - 'į' => 'i', - 'İ' => 'I', - 'ı' => 'i', - 'IJ' => 'IJ', - 'ij' => 'ij', - 'Ĵ' => 'J', - 'ĵ' => 'j', - 'Ķ' => 'K', - 'ķ' => 'k', - 'ĸ' => 'k', - 'Ĺ' => 'L', - 'ĺ' => 'l', - 'Ļ' => 'L', - 'ļ' => 'l', - 'Ľ' => 'L', - 'ľ' => 'l', - 'Ŀ' => 'L', - 'ŀ' => 'l', - 'Ł' => 'L', - 'ł' => 'l', - 'Ń' => 'N', - 'ń' => 'n', - 'Ņ' => 'N', - 'ņ' => 'n', - 'Ň' => 'N', - 'ň' => 'n', - 'ʼn' => 'N', - 'Ŋ' => 'n', - 'ŋ' => 'N', - 'Ō' => 'O', - 'ō' => 'o', - 'Ŏ' => 'O', - 'ŏ' => 'o', - 'Ő' => 'O', - 'ő' => 'o', - 'Œ' => 'OE', - 'œ' => 'oe', - 'Ø' => 'O', - 'ø' => 'o', - 'Ŕ' => 'R', - 'ŕ' => 'r', - 'Ŗ' => 'R', - 'ŗ' => 'r', - 'Ř' => 'R', - 'ř' => 'r', - 'Ś' => 'S', - 'ś' => 's', - 'Ŝ' => 'S', - 'ŝ' => 's', - 'Ş' => 'S', - 'ş' => 's', - 'Š' => 'S', - 'š' => 's', - 'Ţ' => 'T', - 'ţ' => 't', - 'Ť' => 'T', - 'ť' => 't', - 'Ŧ' => 'T', - 'ŧ' => 't', - 'Ũ' => 'U', - 'ũ' => 'u', - 'Ū' => 'U', - 'ū' => 'u', - 'Ŭ' => 'U', - 'ŭ' => 'u', - 'Ů' => 'U', - 'ů' => 'u', - 'Ű' => 'U', - 'ű' => 'u', - 'Ų' => 'U', - 'ų' => 'u', - 'Ŵ' => 'W', - 'ŵ' => 'w', - 'Ŷ' => 'Y', - 'ŷ' => 'y', - 'Ÿ' => 'Y', - 'Ź' => 'Z', - 'ź' => 'z', - 'Ż' => 'Z', - 'ż' => 'z', - 'Ž' => 'Z', - 'ž' => 'z', - 'ſ' => 's', - '€' => 'E', - '£' => '', - ]; - - /** @var WordInflector */ - private $singularizer; - - /** @var WordInflector */ - private $pluralizer; - - public function __construct(WordInflector $singularizer, WordInflector $pluralizer) - { - $this->singularizer = $singularizer; - $this->pluralizer = $pluralizer; - } - - /** - * Converts a word into the format for a Doctrine table name. Converts 'ModelName' to 'model_name'. - */ - public function tableize(string $word): string - { - $tableized = preg_replace('~(?<=\\w)([A-Z])~u', '_$1', $word); - - if ($tableized === null) { - throw new RuntimeException(sprintf( - 'preg_replace returned null for value "%s"', - $word - )); - } - - return mb_strtolower($tableized); - } - - /** - * Converts a word into the format for a Doctrine class name. Converts 'table_name' to 'TableName'. - */ - public function classify(string $word): string - { - return str_replace([' ', '_', '-'], '', ucwords($word, ' _-')); - } - - /** - * Camelizes a word. This uses the classify() method and turns the first character to lowercase. - */ - public function camelize(string $word): string - { - return lcfirst($this->classify($word)); - } - - /** - * Uppercases words with configurable delimiters between words. - * - * Takes a string and capitalizes all of the words, like PHP's built-in - * ucwords function. This extends that behavior, however, by allowing the - * word delimiters to be configured, rather than only separating on - * whitespace. - * - * Here is an example: - * - * capitalize($string); - * // Top-O-The-Morning To All_of_you! - * - * echo $inflector->capitalize($string, '-_ '); - * // Top-O-The-Morning To All_Of_You! - * ?> - * - * - * @param string $string The string to operate on. - * @param string $delimiters A list of word separators. - * - * @return string The string with all delimiter-separated words capitalized. - */ - public function capitalize(string $string, string $delimiters = " \n\t\r\0\x0B-"): string - { - return ucwords($string, $delimiters); - } - - /** - * Checks if the given string seems like it has utf8 characters in it. - * - * @param string $string The string to check for utf8 characters in. - */ - public function seemsUtf8(string $string): bool - { - for ($i = 0; $i < strlen($string); $i++) { - if (ord($string[$i]) < 0x80) { - continue; // 0bbbbbbb - } - - if ((ord($string[$i]) & 0xE0) === 0xC0) { - $n = 1; // 110bbbbb - } elseif ((ord($string[$i]) & 0xF0) === 0xE0) { - $n = 2; // 1110bbbb - } elseif ((ord($string[$i]) & 0xF8) === 0xF0) { - $n = 3; // 11110bbb - } elseif ((ord($string[$i]) & 0xFC) === 0xF8) { - $n = 4; // 111110bb - } elseif ((ord($string[$i]) & 0xFE) === 0xFC) { - $n = 5; // 1111110b - } else { - return false; // Does not match any model - } - - for ($j = 0; $j < $n; $j++) { // n bytes matching 10bbbbbb follow ? - if (++$i === strlen($string) || ((ord($string[$i]) & 0xC0) !== 0x80)) { - return false; - } - } - } - - return true; - } - - /** - * Remove any illegal characters, accents, etc. - * - * @param string $string String to unaccent - * - * @return string Unaccented string - */ - public function unaccent(string $string): string - { - if (preg_match('/[\x80-\xff]/', $string) === false) { - return $string; - } - - if ($this->seemsUtf8($string)) { - $string = strtr($string, self::ACCENTED_CHARACTERS); - } else { - $characters = []; - - // Assume ISO-8859-1 if not UTF-8 - $characters['in'] = - chr(128) - . chr(131) - . chr(138) - . chr(142) - . chr(154) - . chr(158) - . chr(159) - . chr(162) - . chr(165) - . chr(181) - . chr(192) - . chr(193) - . chr(194) - . chr(195) - . chr(196) - . chr(197) - . chr(199) - . chr(200) - . chr(201) - . chr(202) - . chr(203) - . chr(204) - . chr(205) - . chr(206) - . chr(207) - . chr(209) - . chr(210) - . chr(211) - . chr(212) - . chr(213) - . chr(214) - . chr(216) - . chr(217) - . chr(218) - . chr(219) - . chr(220) - . chr(221) - . chr(224) - . chr(225) - . chr(226) - . chr(227) - . chr(228) - . chr(229) - . chr(231) - . chr(232) - . chr(233) - . chr(234) - . chr(235) - . chr(236) - . chr(237) - . chr(238) - . chr(239) - . chr(241) - . chr(242) - . chr(243) - . chr(244) - . chr(245) - . chr(246) - . chr(248) - . chr(249) - . chr(250) - . chr(251) - . chr(252) - . chr(253) - . chr(255); - - $characters['out'] = 'EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy'; - - $string = strtr($string, $characters['in'], $characters['out']); - - $doubleChars = []; - - $doubleChars['in'] = [ - chr(140), - chr(156), - chr(198), - chr(208), - chr(222), - chr(223), - chr(230), - chr(240), - chr(254), - ]; - - $doubleChars['out'] = ['OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th']; - - $string = str_replace($doubleChars['in'], $doubleChars['out'], $string); - } - - return $string; - } - - /** - * Convert any passed string to a url friendly string. - * Converts 'My first blog post' to 'my-first-blog-post' - * - * @param string $string String to urlize. - * - * @return string Urlized string. - */ - public function urlize(string $string): string - { - // Remove all non url friendly characters with the unaccent function - $unaccented = $this->unaccent($string); - - if (function_exists('mb_strtolower')) { - $lowered = mb_strtolower($unaccented); - } else { - $lowered = strtolower($unaccented); - } - - $replacements = [ - '/\W/' => ' ', - '/([A-Z]+)([A-Z][a-z])/' => '\1_\2', - '/([a-z\d])([A-Z])/' => '\1_\2', - '/[^A-Z^a-z^0-9^\/]+/' => '-', - ]; - - $urlized = $lowered; - - foreach ($replacements as $pattern => $replacement) { - $replaced = preg_replace($pattern, $replacement, $urlized); - - if ($replaced === null) { - throw new RuntimeException(sprintf( - 'preg_replace returned null for value "%s"', - $urlized - )); - } - - $urlized = $replaced; - } - - return trim($urlized, '-'); - } - - /** - * Returns a word in singular form. - * - * @param string $word The word in plural form. - * - * @return string The word in singular form. - */ - public function singularize(string $word): string - { - return $this->singularizer->inflect($word); - } - - /** - * Returns a word in plural form. - * - * @param string $word The word in singular form. - * - * @return string The word in plural form. - */ - public function pluralize(string $word): string - { - return $this->pluralizer->inflect($word); - } -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php deleted file mode 100644 index a0740a74..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/InflectorFactory.php +++ /dev/null @@ -1,52 +0,0 @@ -getFlippedSubstitutions() - ); - } - - public static function getPluralRuleset(): Ruleset - { - return new Ruleset( - new Transformations(...Inflectible::getPlural()), - new Patterns(...Uninflected::getPlural()), - new Substitutions(...Inflectible::getIrregular()) - ); - } -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Uninflected.php deleted file mode 100644 index 02257de1..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/English/Uninflected.php +++ /dev/null @@ -1,189 +0,0 @@ -getFlippedSubstitutions() - ); - } - - public static function getPluralRuleset(): Ruleset - { - return new Ruleset( - new Transformations(...Inflectible::getPlural()), - new Patterns(...Uninflected::getPlural()), - new Substitutions(...Inflectible::getIrregular()) - ); - } -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Uninflected.php deleted file mode 100644 index 9747f919..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/French/Uninflected.php +++ /dev/null @@ -1,28 +0,0 @@ -getFlippedSubstitutions() - ); - } - - public static function getPluralRuleset(): Ruleset - { - return new Ruleset( - new Transformations(...Inflectible::getPlural()), - new Patterns(...Uninflected::getPlural()), - new Substitutions(...Inflectible::getIrregular()) - ); - } -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Uninflected.php deleted file mode 100644 index 5d8d3b3a..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/NorwegianBokmal/Uninflected.php +++ /dev/null @@ -1,30 +0,0 @@ -pattern = $pattern; - - if (isset($this->pattern[0]) && $this->pattern[0] === '/') { - $this->regex = $this->pattern; - } else { - $this->regex = '/' . $this->pattern . '/i'; - } - } - - public function getPattern(): string - { - return $this->pattern; - } - - public function getRegex(): string - { - return $this->regex; - } - - public function matches(string $word): bool - { - return preg_match($this->getRegex(), $word) === 1; - } -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Patterns.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Patterns.php deleted file mode 100644 index e8d45cb7..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Patterns.php +++ /dev/null @@ -1,34 +0,0 @@ -patterns = $patterns; - - $patterns = array_map(static function (Pattern $pattern): string { - return $pattern->getPattern(); - }, $this->patterns); - - $this->regex = '/^(?:' . implode('|', $patterns) . ')$/i'; - } - - public function matches(string $word): bool - { - return preg_match($this->regex, $word, $regs) === 1; - } -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Inflectible.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Inflectible.php deleted file mode 100644 index 0d41fe7e..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Inflectible.php +++ /dev/null @@ -1,98 +0,0 @@ -getFlippedSubstitutions() - ); - } - - public static function getPluralRuleset(): Ruleset - { - return new Ruleset( - new Transformations(...Inflectible::getPlural()), - new Patterns(...Uninflected::getPlural()), - new Substitutions(...Inflectible::getIrregular()) - ); - } -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Uninflected.php deleted file mode 100644 index b8e988f8..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Portuguese/Uninflected.php +++ /dev/null @@ -1,32 +0,0 @@ -regular = $regular; - $this->uninflected = $uninflected; - $this->irregular = $irregular; - } - - public function getRegular(): Transformations - { - return $this->regular; - } - - public function getUninflected(): Patterns - { - return $this->uninflected; - } - - public function getIrregular(): Substitutions - { - return $this->irregular; - } -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Inflectible.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Inflectible.php deleted file mode 100644 index 91294609..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Inflectible.php +++ /dev/null @@ -1,47 +0,0 @@ -getFlippedSubstitutions() - ); - } - - public static function getPluralRuleset(): Ruleset - { - return new Ruleset( - new Transformations(...Inflectible::getPlural()), - new Patterns(...Uninflected::getPlural()), - new Substitutions(...Inflectible::getIrregular()) - ); - } -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Uninflected.php deleted file mode 100644 index c26ebe9c..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Spanish/Uninflected.php +++ /dev/null @@ -1,30 +0,0 @@ -from = $from; - $this->to = $to; - } - - public function getFrom(): Word - { - return $this->from; - } - - public function getTo(): Word - { - return $this->to; - } -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitutions.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitutions.php deleted file mode 100644 index 17ee2961..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Substitutions.php +++ /dev/null @@ -1,57 +0,0 @@ -substitutions[$substitution->getFrom()->getWord()] = $substitution; - } - } - - public function getFlippedSubstitutions(): Substitutions - { - $substitutions = []; - - foreach ($this->substitutions as $substitution) { - $substitutions[] = new Substitution( - $substitution->getTo(), - $substitution->getFrom() - ); - } - - return new Substitutions(...$substitutions); - } - - public function inflect(string $word): string - { - $lowerWord = strtolower($word); - - if (isset($this->substitutions[$lowerWord])) { - $firstLetterUppercase = $lowerWord[0] !== $word[0]; - - $toWord = $this->substitutions[$lowerWord]->getTo()->getWord(); - - if ($firstLetterUppercase) { - return strtoupper($toWord[0]) . substr($toWord, 1); - } - - return $toWord; - } - - return $word; - } -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformation.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformation.php deleted file mode 100644 index 30dcd594..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformation.php +++ /dev/null @@ -1,39 +0,0 @@ -pattern = $pattern; - $this->replacement = $replacement; - } - - public function getPattern(): Pattern - { - return $this->pattern; - } - - public function getReplacement(): string - { - return $this->replacement; - } - - public function inflect(string $word): string - { - return (string) preg_replace($this->pattern->getRegex(), $this->replacement, $word); - } -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformations.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformations.php deleted file mode 100644 index b6a48fa8..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Transformations.php +++ /dev/null @@ -1,29 +0,0 @@ -transformations = $transformations; - } - - public function inflect(string $word): string - { - foreach ($this->transformations as $transformation) { - if ($transformation->getPattern()->matches($word)) { - return $transformation->inflect($word); - } - } - - return $word; - } -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Inflectible.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Inflectible.php deleted file mode 100644 index a2bda0d9..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Inflectible.php +++ /dev/null @@ -1,34 +0,0 @@ -getFlippedSubstitutions() - ); - } - - public static function getPluralRuleset(): Ruleset - { - return new Ruleset( - new Transformations(...Inflectible::getPlural()), - new Patterns(...Uninflected::getPlural()), - new Substitutions(...Inflectible::getIrregular()) - ); - } -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Uninflected.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Uninflected.php deleted file mode 100644 index ec1c37dd..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/Rules/Turkish/Uninflected.php +++ /dev/null @@ -1,30 +0,0 @@ -word = $word; - } - - public function getWord(): string - { - return $this->word; - } -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/RulesetInflector.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/RulesetInflector.php deleted file mode 100644 index 12b2ed5b..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/RulesetInflector.php +++ /dev/null @@ -1,56 +0,0 @@ -rulesets = array_merge([$ruleset], $rulesets); - } - - public function inflect(string $word): string - { - if ($word === '') { - return ''; - } - - foreach ($this->rulesets as $ruleset) { - if ($ruleset->getUninflected()->matches($word)) { - return $word; - } - - $inflected = $ruleset->getIrregular()->inflect($word); - - if ($inflected !== $word) { - return $inflected; - } - - $inflected = $ruleset->getRegular()->inflect($word); - - if ($inflected !== $word) { - return $inflected; - } - } - - return $word; - } -} diff --git a/vendor/doctrine/inflector/lib/Doctrine/Inflector/WordInflector.php b/vendor/doctrine/inflector/lib/Doctrine/Inflector/WordInflector.php deleted file mode 100644 index b88b1d69..00000000 --- a/vendor/doctrine/inflector/lib/Doctrine/Inflector/WordInflector.php +++ /dev/null @@ -1,10 +0,0 @@ -> - */ - private array $tokens = []; - - /** - * Current lexer position in input string. - */ - private int $position = 0; - - /** - * Current peek of current lexer position. - */ - private int $peek = 0; - - /** - * The next token in the input. - * - * @var mixed[]|null - * @psalm-var Token|null - */ - public Token|null $lookahead; - - /** - * The last matched/seen token. - * - * @var mixed[]|null - * @psalm-var Token|null - */ - public Token|null $token; - - /** - * Composed regex for input parsing. - */ - private string|null $regex = null; - - /** - * Sets the input data to be tokenized. - * - * The Lexer is immediately reset and the new input tokenized. - * Any unprocessed tokens from any previous input are lost. - * - * @param string $input The input to be tokenized. - * - * @return void - */ - public function setInput(string $input) - { - $this->input = $input; - $this->tokens = []; - - $this->reset(); - $this->scan($input); - } - - /** - * Resets the lexer. - * - * @return void - */ - public function reset() - { - $this->lookahead = null; - $this->token = null; - $this->peek = 0; - $this->position = 0; - } - - /** - * Resets the peek pointer to 0. - * - * @return void - */ - public function resetPeek() - { - $this->peek = 0; - } - - /** - * Resets the lexer position on the input to the given position. - * - * @param int $position Position to place the lexical scanner. - * - * @return void - */ - public function resetPosition(int $position = 0) - { - $this->position = $position; - } - - /** - * Retrieve the original lexer's input until a given position. - * - * @return string - */ - public function getInputUntilPosition(int $position) - { - return substr($this->input, 0, $position); - } - - /** - * Checks whether a given token matches the current lookahead. - * - * @param T $type - * - * @return bool - * - * @psalm-assert-if-true !=null $this->lookahead - */ - public function isNextToken(int|string|UnitEnum $type) - { - return $this->lookahead !== null && $this->lookahead->isA($type); - } - - /** - * Checks whether any of the given tokens matches the current lookahead. - * - * @param list $types - * - * @return bool - * - * @psalm-assert-if-true !=null $this->lookahead - */ - public function isNextTokenAny(array $types) - { - return $this->lookahead !== null && $this->lookahead->isA(...$types); - } - - /** - * Moves to the next token in the input string. - * - * @return bool - * - * @psalm-assert-if-true !null $this->lookahead - */ - public function moveNext() - { - $this->peek = 0; - $this->token = $this->lookahead; - $this->lookahead = isset($this->tokens[$this->position]) - ? $this->tokens[$this->position++] : null; - - return $this->lookahead !== null; - } - - /** - * Tells the lexer to skip input tokens until it sees a token with the given value. - * - * @param T $type The token type to skip until. - * - * @return void - */ - public function skipUntil(int|string|UnitEnum $type) - { - while ($this->lookahead !== null && ! $this->lookahead->isA($type)) { - $this->moveNext(); - } - } - - /** - * Checks if given value is identical to the given token. - * - * @return bool - */ - public function isA(string $value, int|string|UnitEnum $token) - { - return $this->getType($value) === $token; - } - - /** - * Moves the lookahead token forward. - * - * @return mixed[]|null The next token or NULL if there are no more tokens ahead. - * @psalm-return Token|null - */ - public function peek() - { - if (isset($this->tokens[$this->position + $this->peek])) { - return $this->tokens[$this->position + $this->peek++]; - } - - return null; - } - - /** - * Peeks at the next token, returns it and immediately resets the peek. - * - * @return mixed[]|null The next token or NULL if there are no more tokens ahead. - * @psalm-return Token|null - */ - public function glimpse() - { - $peek = $this->peek(); - $this->peek = 0; - - return $peek; - } - - /** - * Scans the input string for tokens. - * - * @param string $input A query string. - * - * @return void - */ - protected function scan(string $input) - { - if (! isset($this->regex)) { - $this->regex = sprintf( - '/(%s)|%s/%s', - implode(')|(', $this->getCatchablePatterns()), - implode('|', $this->getNonCatchablePatterns()), - $this->getModifiers(), - ); - } - - $flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE; - $matches = preg_split($this->regex, $input, -1, $flags); - - if ($matches === false) { - // Work around https://bugs.php.net/78122 - $matches = [[$input, 0]]; - } - - foreach ($matches as $match) { - // Must remain before 'value' assignment since it can change content - $firstMatch = $match[0]; - $type = $this->getType($firstMatch); - - $this->tokens[] = new Token( - $firstMatch, - $type, - $match[1], - ); - } - } - - /** - * Gets the literal for a given token. - * - * @param T $token - * - * @return int|string - */ - public function getLiteral(int|string|UnitEnum $token) - { - if ($token instanceof UnitEnum) { - return $token::class . '::' . $token->name; - } - - $className = static::class; - - $reflClass = new ReflectionClass($className); - $constants = $reflClass->getConstants(); - - foreach ($constants as $name => $value) { - if ($value === $token) { - return $className . '::' . $name; - } - } - - return $token; - } - - /** - * Regex modifiers - * - * @return string - */ - protected function getModifiers() - { - return 'iu'; - } - - /** - * Lexical catchable patterns. - * - * @return string[] - */ - abstract protected function getCatchablePatterns(); - - /** - * Lexical non-catchable patterns. - * - * @return string[] - */ - abstract protected function getNonCatchablePatterns(); - - /** - * Retrieve token type. Also processes the token value if necessary. - * - * @return T|null - * - * @param-out V $value - */ - abstract protected function getType(string &$value); -} diff --git a/vendor/doctrine/lexer/src/Token.php b/vendor/doctrine/lexer/src/Token.php deleted file mode 100644 index b6df6946..00000000 --- a/vendor/doctrine/lexer/src/Token.php +++ /dev/null @@ -1,56 +0,0 @@ -value = $value; - $this->type = $type; - $this->position = $position; - } - - /** @param T ...$types */ - public function isA(...$types): bool - { - return in_array($this->type, $types, true); - } -} diff --git a/vendor/dragonmantank/cron-expression/CHANGELOG.md b/vendor/dragonmantank/cron-expression/CHANGELOG.md deleted file mode 100644 index 17ab2ce4..00000000 --- a/vendor/dragonmantank/cron-expression/CHANGELOG.md +++ /dev/null @@ -1,240 +0,0 @@ -# Change Log - -## [3.3.3] - 2024-08-10 - -### Added -- N/A - -### Changed -- N/A - -### Fixed -- Added fixes for making sure `?` is not passed for both DOM and DOW (#148, thank you https://github.com/LeoVie) -- Fixed bug in Next Execution Time by sorting minutes properly (#160, thank you https://github.com/imyip) - -## [3.3.2] - 2022-09-19 - -### Added -- N/A - -### Changed -- Skip some daylight savings time tests for PHP 8.1 daylight savings time weirdness (#146) - -### Fixed -- Changed string interpolations to work better with PHP 8.2 (#142) - -## [3.3.1] - 2022-01-18 - -### Added -- N/A - -### Changed -- N/A - -### Fixed -- Fixed issue when timezones had no transition, which can occur over very short timespans (#134) - -## [3.3.0] - 2022-01-13 - -### Added -- Added ability to register your own expression aliases (#132) - -### Changed -- Changed how Day of Week and Day of Month resolve when one or the other is `*` or `?` - -### Fixed -- PHPStan should no longer error out - -## [3.2.4] - 2022-01-12 - -### Added -- N/A - -### Changed -- Changed how Day of Week increment/decrement to help with DST changes (#131) - -### Fixed -- N/A - -## [3.2.3] - 2022-01-05 - -### Added -- N/A - -### Changed -- Changed how minutes and hours increment/decrement to help with DST changes (#131) - -### Fixed -- N/A - -## [3.2.2] - 2022-01-05 - -### Added -- N/A - -### Changed -- Marked some methods `@internal` (#124) - -### Fixed -- Fixed issue with small ranges and large steps that caused an error with `range()` (#88) -- Fixed issue where wraparound logic incorrectly considered high bound on range (#89) - -## [3.2.1] - 2022-01-04 - -### Added -- N/A - -### Changed -- Added PHP 8.1 to testing (#125) - -### Fixed -- Allow better mixture of ranges, steps, and lists (#122) -- Fixed return order when multiple dates are requested and inverted (#121) -- Better handling over DST (#115) -- Fixed PHPStan tests (#130) - -## [3.2.0] - 2022-01-04 - -### Added -- Added alias for `@midnight` (#117) - -### Changed -- Improved testing for instance of field in tests (#105) -- Optimization for determining multiple run dates (#75) -- `CronExpression` properties changed from private to protected (#106) - -### Fixed -- N/A - -## [3.1.0] - 2020-11-24 - -### Added -- Added `CronExpression::getParts()` method to get parts of the expression as an array (#83) - -### Changed -- Changed to Interfaces for some type hints (#97, #86) -- Dropped minimum PHP version to 7.2 -- Few syntax changes for phpstan compatibility (#93) - -### Fixed -- N/A - -### Deprecated -- Deprecated `CronExpression::factory` in favor of the constructor (#56) -- Deprecated `CronExpression::YEAR` as a formality, the functionality is already removed (#87) - -## [3.0.1] - 2020-10-12 -### Added -- Added support for PHP 8 (#92) -### Changed -- N/A -### Fixed -- N/A - -## [3.0.0] - 2020-03-25 - -**MAJOR CHANGE** - In previous versions of this library, setting both a "Day of Month" and a "Day of Week" would be interpreted as an `AND` statement, not an `OR` statement. For example: - -`30 0 1 * 1` - -would evaluate to "Run 30 minutes after the 0 hour when the Day Of Month is 1 AND a Monday" instead of "Run 30 minutes after the 0 hour on Day Of Month 1 OR a Monday", where the latter is more inline with most cron systems. This means that if your cron expression has both of these fields set, you may see your expression fire more often starting with v3.0.0. - -### Added -- Additional docblocks for IDE and documentation -- Added phpstan as a development dependency -- Added a `Cron\FieldFactoryInterface` to make migrations easier (#38) -### Changed -- Changed some DI testing during TravisCI runs -- `\Cron\CronExpression::determineTimezone()` now checks for `\DateTimeInterface` instead of just `\DateTime` -- Errors with fields now report a more human-understandable error and are 1-based instead of 0-based -- Better support for `\DateTimeImmutable` across the library by typehinting for `\DateTimeInterface` now -- Literals should now be less case-sensative across the board -- Changed logic for when both a Day of Week and a Day of Month are supplied to now be an OR statement, not an AND -### Fixed -- Fixed infinite loop when determining last day of week from literals -- Fixed bug where single number ranges were allowed (ex: `1/10`) -- Fixed nullable FieldFactory in CronExpression where no factory could be supplied -- Fixed issue where logic for dropping seconds to 0 could lead to a timezone change - -## [2.3.1] - 2020-10-12 -### Added -- Added support for PHP 8 (#92) -### Changed -- N/A -### Fixed -- N/A - -## [2.3.0] - 2019-03-30 -### Added -- Added support for DateTimeImmutable via DateTimeInterface -- Added support for PHP 7.3 -- Started listing projects that use the library -### Changed -- Errors should now report a human readable position in the cron expression, instead of starting at 0 -### Fixed -- N/A - -## [2.2.0] - 2018-06-05 -### Added -- Added support for steps larger than field ranges (#6) -## Changed -- N/A -### Fixed -- Fixed validation for numbers with leading 0s (#12) - -## [2.1.0] - 2018-04-06 -### Added -- N/A -### Changed -- Upgraded to PHPUnit 6 (#2) -### Fixed -- Refactored timezones to deal with some inconsistent behavior (#3) -- Allow ranges and lists in same expression (#5) -- Fixed regression where literals were not converted to their numerical counterpart (#) - -## [2.0.0] - 2017-10-12 -### Added -- N/A - -### Changed -- Dropped support for PHP 5.x -- Dropped support for the YEAR field, as it was not part of the cron standard - -### Fixed -- Reworked validation for all the field types -- Stepping should now work for 1-indexed fields like Month (#153) - -## [1.2.0] - 2017-01-22 -### Added -- Added IDE, CodeSniffer, and StyleCI.IO support - -### Changed -- Switched to PSR-4 Autoloading - -### Fixed -- 0 step expressions are handled better -- Fixed `DayOfMonth` validation to be more strict -- Typos - -## [1.1.0] - 2016-01-26 -### Added -- Support for non-hourly offset timezones -- Checks for valid expressions - -### Changed -- Max Iterations no longer hardcoded for `getRunDate()` -- Supports DateTimeImmutable for newer PHP verions - -### Fixed -- Fixed looping bug for PHP 7 when determining the last specified weekday of a month - -## [1.0.3] - 2013-11-23 -### Added -- Now supports expressions with any number of extra spaces, tabs, or newlines - -### Changed -- Using static instead of self in `CronExpression::factory` - -### Fixed -- Fixes issue [#28](https://github.com/mtdowling/cron-expression/issues/28) where PHP increments of ranges were failing due to PHP casting hyphens to 0 -- Only set default timezone if the given $currentTime is not a DateTime instance ([#34](https://github.com/mtdowling/cron-expression/issues/34)) diff --git a/vendor/dragonmantank/cron-expression/LICENSE b/vendor/dragonmantank/cron-expression/LICENSE deleted file mode 100644 index 3e38bbc8..00000000 --- a/vendor/dragonmantank/cron-expression/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Michael Dowling , 2016 Chris Tankersley , and contributors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/vendor/dragonmantank/cron-expression/README.md b/vendor/dragonmantank/cron-expression/README.md deleted file mode 100644 index 494652c8..00000000 --- a/vendor/dragonmantank/cron-expression/README.md +++ /dev/null @@ -1,87 +0,0 @@ -PHP Cron Expression Parser -========================== - -[![Latest Stable Version](https://poser.pugx.org/dragonmantank/cron-expression/v/stable.png)](https://packagist.org/packages/dragonmantank/cron-expression) [![Total Downloads](https://poser.pugx.org/dragonmantank/cron-expression/downloads.png)](https://packagist.org/packages/dragonmantank/cron-expression) [![Build Status](https://secure.travis-ci.org/dragonmantank/cron-expression.png)](http://travis-ci.org/dragonmantank/cron-expression) [![StyleCI](https://github.styleci.io/repos/103715337/shield?branch=master)](https://github.styleci.io/repos/103715337) - -The PHP cron expression parser can parse a CRON expression, determine if it is -due to run, calculate the next run date of the expression, and calculate the previous -run date of the expression. You can calculate dates far into the future or past by -skipping **n** number of matching dates. - -The parser can handle increments of ranges (e.g. */12, 2-59/3), intervals (e.g. 0-9), -lists (e.g. 1,2,3), **W** to find the nearest weekday for a given day of the month, **L** to -find the last day of the month, **L** to find the last given weekday of a month, and hash -(#) to find the nth weekday of a given month. - -More information about this fork can be found in the blog post [here](http://ctankersley.com/2017/10/12/cron-expression-update/). tl;dr - v2.0.0 is a major breaking change, and @dragonmantank can better take care of the project in a separate fork. - -Installing -========== - -Add the dependency to your project: - -```bash -composer require dragonmantank/cron-expression -``` - -Usage -===== -```php -isDue(); -echo $cron->getNextRunDate()->format('Y-m-d H:i:s'); -echo $cron->getPreviousRunDate()->format('Y-m-d H:i:s'); - -// Works with complex expressions -$cron = new Cron\CronExpression('3-59/15 6-12 */15 1 2-5'); -echo $cron->getNextRunDate()->format('Y-m-d H:i:s'); - -// Calculate a run date two iterations into the future -$cron = new Cron\CronExpression('@daily'); -echo $cron->getNextRunDate(null, 2)->format('Y-m-d H:i:s'); - -// Calculate a run date relative to a specific time -$cron = new Cron\CronExpression('@monthly'); -echo $cron->getNextRunDate('2010-01-12 00:00:00')->format('Y-m-d H:i:s'); -``` - -CRON Expressions -================ - -A CRON expression is a string representing the schedule for a particular command to execute. The parts of a CRON schedule are as follows: - - * * * * * - - - - - - - | | | | | - | | | | | - | | | | +----- day of week (0 - 7) (Sunday=0 or 7) - | | | +---------- month (1 - 12) - | | +--------------- day of month (1 - 31) - | +-------------------- hour (0 - 23) - +------------------------- min (0 - 59) - -This library also supports a few macros: - -* `@yearly`, `@annually` - Run once a year, midnight, Jan. 1 - `0 0 1 1 *` -* `@monthly` - Run once a month, midnight, first of month - `0 0 1 * *` -* `@weekly` - Run once a week, midnight on Sun - `0 0 * * 0` -* `@daily`, `@midnight` - Run once a day, midnight - `0 0 * * *` -* `@hourly` - Run once an hour, first minute - `0 * * * *` - -Requirements -============ - -- PHP 7.2+ -- PHPUnit is required to run the unit tests -- Composer is required to run the unit tests - -Projects that Use cron-expression -================================= -* Part of the [Laravel Framework](https://github.com/laravel/framework/) -* Available as a [Symfony Bundle - setono/cron-expression-bundle](https://github.com/Setono/CronExpressionBundle) -* Framework agnostic, PHP-based job scheduler - [Crunz](https://github.com/crunzphp/crunz) diff --git a/vendor/dragonmantank/cron-expression/composer.json b/vendor/dragonmantank/cron-expression/composer.json deleted file mode 100644 index 657a5b47..00000000 --- a/vendor/dragonmantank/cron-expression/composer.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "dragonmantank/cron-expression", - "type": "library", - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", - "keywords": ["cron", "schedule"], - "license": "MIT", - "authors": [ - { - "name": "Chris Tankersley", - "email": "chris@ctankersley.com", - "homepage": "https://github.com/dragonmantank" - } - ], - "require": { - "php": "^7.2|^8.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "phpstan/phpstan-webmozart-assert": "^1.0", - "phpstan/extension-installer": "^1.0" - }, - "autoload": { - "psr-4": { - "Cron\\": "src/Cron/" - } - }, - "autoload-dev": { - "psr-4": { - "Cron\\Tests\\": "tests/Cron/" - } - }, - "replace": { - "mtdowling/cron-expression": "^1.0" - }, - "scripts": { - "phpstan": "./vendor/bin/phpstan analyze", - "test": "phpunit" - }, - "config": { - "allow-plugins": { - "ocramius/package-versions": true, - "phpstan/extension-installer": true - } - } -} diff --git a/vendor/dragonmantank/cron-expression/src/Cron/AbstractField.php b/vendor/dragonmantank/cron-expression/src/Cron/AbstractField.php deleted file mode 100644 index df2848df..00000000 --- a/vendor/dragonmantank/cron-expression/src/Cron/AbstractField.php +++ /dev/null @@ -1,346 +0,0 @@ -fullRange = range($this->rangeStart, $this->rangeEnd); - } - - /** - * Check to see if a field is satisfied by a value. - * - * @internal - * @param int $dateValue Date value to check - * @param string $value Value to test - * - * @return bool - */ - public function isSatisfied(int $dateValue, string $value): bool - { - if ($this->isIncrementsOfRanges($value)) { - return $this->isInIncrementsOfRanges($dateValue, $value); - } - - if ($this->isRange($value)) { - return $this->isInRange($dateValue, $value); - } - - return '*' === $value || $dateValue === (int) $value; - } - - /** - * Check if a value is a range. - * - * @internal - * @param string $value Value to test - * - * @return bool - */ - public function isRange(string $value): bool - { - return false !== strpos($value, '-'); - } - - /** - * Check if a value is an increments of ranges. - * - * @internal - * @param string $value Value to test - * - * @return bool - */ - public function isIncrementsOfRanges(string $value): bool - { - return false !== strpos($value, '/'); - } - - /** - * Test if a value is within a range. - * - * @internal - * @param int $dateValue Set date value - * @param string $value Value to test - * - * @return bool - */ - public function isInRange(int $dateValue, $value): bool - { - $parts = array_map( - function ($value) { - $value = trim($value); - - return $this->convertLiterals($value); - }, - explode('-', $value, 2) - ); - - return $dateValue >= $parts[0] && $dateValue <= $parts[1]; - } - - /** - * Test if a value is within an increments of ranges (offset[-to]/step size). - * - * @internal - * @param int $dateValue Set date value - * @param string $value Value to test - * - * @return bool - */ - public function isInIncrementsOfRanges(int $dateValue, string $value): bool - { - $chunks = array_map('trim', explode('/', $value, 2)); - $range = $chunks[0]; - $step = $chunks[1] ?? 0; - - // No step or 0 steps aren't cool - /** @phpstan-ignore-next-line */ - if (null === $step || '0' === $step || 0 === $step) { - return false; - } - - // Expand the * to a full range - if ('*' === $range) { - $range = $this->rangeStart . '-' . $this->rangeEnd; - } - - // Generate the requested small range - $rangeChunks = explode('-', $range, 2); - $rangeStart = (int) $rangeChunks[0]; - $rangeEnd = $rangeChunks[1] ?? $rangeStart; - $rangeEnd = (int) $rangeEnd; - - if ($rangeStart < $this->rangeStart || $rangeStart > $this->rangeEnd || $rangeStart > $rangeEnd) { - throw new \OutOfRangeException('Invalid range start requested'); - } - - if ($rangeEnd < $this->rangeStart || $rangeEnd > $this->rangeEnd || $rangeEnd < $rangeStart) { - throw new \OutOfRangeException('Invalid range end requested'); - } - - // Steps larger than the range need to wrap around and be handled - // slightly differently than smaller steps - - // UPDATE - This is actually false. The C implementation will allow a - // larger step as valid syntax, it never wraps around. It will stop - // once it hits the end. Unfortunately this means in future versions - // we will not wrap around. However, because the logic exists today - // per the above documentation, fixing the bug from #89 - if ($step > $this->rangeEnd) { - $thisRange = [$this->fullRange[$step % \count($this->fullRange)]]; - } else { - if ($step > ($rangeEnd - $rangeStart)) { - $thisRange[$rangeStart] = (int) $rangeStart; - } else { - $thisRange = range($rangeStart, $rangeEnd, (int) $step); - } - } - - return \in_array($dateValue, $thisRange, true); - } - - /** - * Returns a range of values for the given cron expression. - * - * @param string $expression The expression to evaluate - * @param int $max Maximum offset for range - * - * @return array - */ - public function getRangeForExpression(string $expression, int $max): array - { - $values = []; - $expression = $this->convertLiterals($expression); - - if (false !== strpos($expression, ',')) { - $ranges = explode(',', $expression); - $values = []; - foreach ($ranges as $range) { - $expanded = $this->getRangeForExpression($range, $this->rangeEnd); - $values = array_merge($values, $expanded); - } - - return $values; - } - - if ($this->isRange($expression) || $this->isIncrementsOfRanges($expression)) { - if (!$this->isIncrementsOfRanges($expression)) { - [$offset, $to] = explode('-', $expression); - $offset = $this->convertLiterals($offset); - $to = $this->convertLiterals($to); - $stepSize = 1; - } else { - $range = array_map('trim', explode('/', $expression, 2)); - $stepSize = $range[1] ?? 0; - $range = $range[0]; - $range = explode('-', $range, 2); - $offset = $range[0]; - $to = $range[1] ?? $max; - } - $offset = '*' === $offset ? $this->rangeStart : $offset; - if ($stepSize >= $this->rangeEnd) { - $values = [$this->fullRange[$stepSize % \count($this->fullRange)]]; - } else { - for ($i = $offset; $i <= $to; $i += $stepSize) { - $values[] = (int) $i; - } - } - sort($values); - } else { - $values = [$expression]; - } - - return $values; - } - - /** - * Convert literal. - * - * @param string $value - * - * @return string - */ - protected function convertLiterals(string $value): string - { - if (\count($this->literals)) { - $key = array_search(strtoupper($value), $this->literals, true); - if (false !== $key) { - return (string) $key; - } - } - - return $value; - } - - /** - * Checks to see if a value is valid for the field. - * - * @param string $value - * - * @return bool - */ - public function validate(string $value): bool - { - $value = $this->convertLiterals($value); - - // All fields allow * as a valid value - if ('*' === $value) { - return true; - } - - // Validate each chunk of a list individually - if (false !== strpos($value, ',')) { - foreach (explode(',', $value) as $listItem) { - if (!$this->validate($listItem)) { - return false; - } - } - - return true; - } - - if (false !== strpos($value, '/')) { - [$range, $step] = explode('/', $value); - - // Don't allow numeric ranges - if (is_numeric($range)) { - return false; - } - - return $this->validate($range) && filter_var($step, FILTER_VALIDATE_INT); - } - - if (false !== strpos($value, '-')) { - if (substr_count($value, '-') > 1) { - return false; - } - - $chunks = explode('-', $value); - $chunks[0] = $this->convertLiterals($chunks[0]); - $chunks[1] = $this->convertLiterals($chunks[1]); - - if ('*' === $chunks[0] || '*' === $chunks[1]) { - return false; - } - - return $this->validate($chunks[0]) && $this->validate($chunks[1]); - } - - if (!is_numeric($value)) { - return false; - } - - if (false !== strpos($value, '.')) { - return false; - } - - // We should have a numeric by now, so coerce this into an integer - $value = (int) $value; - - return \in_array($value, $this->fullRange, true); - } - - protected function timezoneSafeModify(DateTimeInterface $dt, string $modification): DateTimeInterface - { - $timezone = $dt->getTimezone(); - $dt = $dt->setTimezone(new \DateTimeZone("UTC")); - $dt = $dt->modify($modification); - $dt = $dt->setTimezone($timezone); - return $dt; - } - - protected function setTimeHour(DateTimeInterface $date, bool $invert, int $originalTimestamp): DateTimeInterface - { - $date = $date->setTime((int)$date->format('H'), ($invert ? 59 : 0)); - - // setTime caused the offset to change, moving time in the wrong direction - $actualTimestamp = $date->format('U'); - if ((! $invert) && ($actualTimestamp <= $originalTimestamp)) { - $date = $this->timezoneSafeModify($date, "+1 hour"); - } elseif ($invert && ($actualTimestamp >= $originalTimestamp)) { - $date = $this->timezoneSafeModify($date, "-1 hour"); - } - - return $date; - } -} diff --git a/vendor/dragonmantank/cron-expression/src/Cron/CronExpression.php b/vendor/dragonmantank/cron-expression/src/Cron/CronExpression.php deleted file mode 100644 index 216ce432..00000000 --- a/vendor/dragonmantank/cron-expression/src/Cron/CronExpression.php +++ /dev/null @@ -1,578 +0,0 @@ - '0 0 1 1 *', - '@annually' => '0 0 1 1 *', - '@monthly' => '0 0 1 * *', - '@weekly' => '0 0 * * 0', - '@daily' => '0 0 * * *', - '@midnight' => '0 0 * * *', - '@hourly' => '0 * * * *', - ]; - - /** - * @var array CRON expression parts - */ - protected $cronParts; - - /** - * @var FieldFactoryInterface CRON field factory - */ - protected $fieldFactory; - - /** - * @var int Max iteration count when searching for next run date - */ - protected $maxIterationCount = 1000; - - /** - * @var array Order in which to test of cron parts - */ - protected static $order = [ - self::YEAR, - self::MONTH, - self::DAY, - self::WEEKDAY, - self::HOUR, - self::MINUTE, - ]; - - /** - * @var array - */ - private static $registeredAliases = self::MAPPINGS; - - /** - * Registered a user defined CRON Expression Alias. - * - * @throws LogicException If the expression or the alias name are invalid - * or if the alias is already registered. - */ - public static function registerAlias(string $alias, string $expression): void - { - try { - new self($expression); - } catch (InvalidArgumentException $exception) { - throw new LogicException("The expression `$expression` is invalid", 0, $exception); - } - - $shortcut = strtolower($alias); - if (1 !== preg_match('/^@\w+$/', $shortcut)) { - throw new LogicException("The alias `$alias` is invalid. It must start with an `@` character and contain alphanumeric (letters, numbers, regardless of case) plus underscore (_)."); - } - - if (isset(self::$registeredAliases[$shortcut])) { - throw new LogicException("The alias `$alias` is already registered."); - } - - self::$registeredAliases[$shortcut] = $expression; - } - - /** - * Unregistered a user defined CRON Expression Alias. - * - * @throws LogicException If the user tries to unregister a built-in alias - */ - public static function unregisterAlias(string $alias): bool - { - $shortcut = strtolower($alias); - if (isset(self::MAPPINGS[$shortcut])) { - throw new LogicException("The alias `$alias` is a built-in alias; it can not be unregistered."); - } - - if (!isset(self::$registeredAliases[$shortcut])) { - return false; - } - - unset(self::$registeredAliases[$shortcut]); - - return true; - } - - /** - * Tells whether a CRON Expression alias is registered. - */ - public static function supportsAlias(string $alias): bool - { - return isset(self::$registeredAliases[strtolower($alias)]); - } - - /** - * Returns all registered aliases as an associated array where the aliases are the key - * and their associated expressions are the values. - * - * @return array - */ - public static function getAliases(): array - { - return self::$registeredAliases; - } - - /** - * @deprecated since version 3.0.2, use __construct instead. - */ - public static function factory(string $expression, FieldFactoryInterface $fieldFactory = null): CronExpression - { - /** @phpstan-ignore-next-line */ - return new static($expression, $fieldFactory); - } - - /** - * Validate a CronExpression. - * - * @param string $expression the CRON expression to validate - * - * @return bool True if a valid CRON expression was passed. False if not. - */ - public static function isValidExpression(string $expression): bool - { - try { - new CronExpression($expression); - } catch (InvalidArgumentException $e) { - return false; - } - - return true; - } - - /** - * Parse a CRON expression. - * - * @param string $expression CRON expression (e.g. '8 * * * *') - * @param null|FieldFactoryInterface $fieldFactory Factory to create cron fields - * @throws InvalidArgumentException - */ - public function __construct(string $expression, FieldFactoryInterface $fieldFactory = null) - { - $shortcut = strtolower($expression); - $expression = self::$registeredAliases[$shortcut] ?? $expression; - - $this->fieldFactory = $fieldFactory ?: new FieldFactory(); - $this->setExpression($expression); - } - - /** - * Set or change the CRON expression. - * - * @param string $value CRON expression (e.g. 8 * * * *) - * - * @throws \InvalidArgumentException if not a valid CRON expression - * - * @return CronExpression - */ - public function setExpression(string $value): CronExpression - { - $split = preg_split('/\s/', $value, -1, PREG_SPLIT_NO_EMPTY); - Assert::isArray($split); - - $notEnoughParts = \count($split) < 5; - - $questionMarkInInvalidPart = array_key_exists(0, $split) && $split[0] === '?' - || array_key_exists(1, $split) && $split[1] === '?' - || array_key_exists(3, $split) && $split[3] === '?'; - - $tooManyQuestionMarks = array_key_exists(2, $split) && $split[2] === '?' - && array_key_exists(4, $split) && $split[4] === '?'; - - if ($notEnoughParts || $questionMarkInInvalidPart || $tooManyQuestionMarks) { - throw new InvalidArgumentException( - $value . ' is not a valid CRON expression' - ); - } - - $this->cronParts = $split; - foreach ($this->cronParts as $position => $part) { - $this->setPart($position, $part); - } - - return $this; - } - - /** - * Set part of the CRON expression. - * - * @param int $position The position of the CRON expression to set - * @param string $value The value to set - * - * @throws \InvalidArgumentException if the value is not valid for the part - * - * @return CronExpression - */ - public function setPart(int $position, string $value): CronExpression - { - if (!$this->fieldFactory->getField($position)->validate($value)) { - throw new InvalidArgumentException( - 'Invalid CRON field value ' . $value . ' at position ' . $position - ); - } - - $this->cronParts[$position] = $value; - - return $this; - } - - /** - * Set max iteration count for searching next run dates. - * - * @param int $maxIterationCount Max iteration count when searching for next run date - * - * @return CronExpression - */ - public function setMaxIterationCount(int $maxIterationCount): CronExpression - { - $this->maxIterationCount = $maxIterationCount; - - return $this; - } - - /** - * Get a next run date relative to the current date or a specific date - * - * @param string|\DateTimeInterface $currentTime Relative calculation date - * @param int $nth Number of matches to skip before returning a - * matching next run date. 0, the default, will return the - * current date and time if the next run date falls on the - * current date and time. Setting this value to 1 will - * skip the first match and go to the second match. - * Setting this value to 2 will skip the first 2 - * matches and so on. - * @param bool $allowCurrentDate Set to TRUE to return the current date if - * it matches the cron expression. - * @param null|string $timeZone TimeZone to use instead of the system default - * - * @throws \RuntimeException on too many iterations - * @throws \Exception - * - * @return \DateTime - */ - public function getNextRunDate($currentTime = 'now', int $nth = 0, bool $allowCurrentDate = false, $timeZone = null): DateTime - { - return $this->getRunDate($currentTime, $nth, false, $allowCurrentDate, $timeZone); - } - - /** - * Get a previous run date relative to the current date or a specific date. - * - * @param string|\DateTimeInterface $currentTime Relative calculation date - * @param int $nth Number of matches to skip before returning - * @param bool $allowCurrentDate Set to TRUE to return the - * current date if it matches the cron expression - * @param null|string $timeZone TimeZone to use instead of the system default - * - * @throws \RuntimeException on too many iterations - * @throws \Exception - * - * @return \DateTime - * - * @see \Cron\CronExpression::getNextRunDate - */ - public function getPreviousRunDate($currentTime = 'now', int $nth = 0, bool $allowCurrentDate = false, $timeZone = null): DateTime - { - return $this->getRunDate($currentTime, $nth, true, $allowCurrentDate, $timeZone); - } - - /** - * Get multiple run dates starting at the current date or a specific date. - * - * @param int $total Set the total number of dates to calculate - * @param string|\DateTimeInterface|null $currentTime Relative calculation date - * @param bool $invert Set to TRUE to retrieve previous dates - * @param bool $allowCurrentDate Set to TRUE to return the - * current date if it matches the cron expression - * @param null|string $timeZone TimeZone to use instead of the system default - * - * @return \DateTime[] Returns an array of run dates - */ - public function getMultipleRunDates(int $total, $currentTime = 'now', bool $invert = false, bool $allowCurrentDate = false, $timeZone = null): array - { - $timeZone = $this->determineTimeZone($currentTime, $timeZone); - - if ('now' === $currentTime) { - $currentTime = new DateTime(); - } elseif ($currentTime instanceof DateTime) { - $currentTime = clone $currentTime; - } elseif ($currentTime instanceof DateTimeImmutable) { - $currentTime = DateTime::createFromFormat('U', $currentTime->format('U')); - } elseif (\is_string($currentTime)) { - $currentTime = new DateTime($currentTime); - } - - Assert::isInstanceOf($currentTime, DateTime::class); - $currentTime->setTimezone(new DateTimeZone($timeZone)); - - $matches = []; - for ($i = 0; $i < $total; ++$i) { - try { - $result = $this->getRunDate($currentTime, 0, $invert, $allowCurrentDate, $timeZone); - } catch (RuntimeException $e) { - break; - } - - $allowCurrentDate = false; - $currentTime = clone $result; - $matches[] = $result; - } - - return $matches; - } - - /** - * Get all or part of the CRON expression. - * - * @param int|string|null $part specify the part to retrieve or NULL to get the full - * cron schedule string - * - * @return null|string Returns the CRON expression, a part of the - * CRON expression, or NULL if the part was specified but not found - */ - public function getExpression($part = null): ?string - { - if (null === $part) { - return implode(' ', $this->cronParts); - } - - if (array_key_exists($part, $this->cronParts)) { - return $this->cronParts[$part]; - } - - return null; - } - - /** - * Gets the parts of the cron expression as an array. - * - * @return string[] - * The array of parts that make up this expression. - */ - public function getParts() - { - return $this->cronParts; - } - - /** - * Helper method to output the full expression. - * - * @return string Full CRON expression - */ - public function __toString(): string - { - return (string) $this->getExpression(); - } - - /** - * Determine if the cron is due to run based on the current date or a - * specific date. This method assumes that the current number of - * seconds are irrelevant, and should be called once per minute. - * - * @param string|\DateTimeInterface $currentTime Relative calculation date - * @param null|string $timeZone TimeZone to use instead of the system default - * - * @return bool Returns TRUE if the cron is due to run or FALSE if not - */ - public function isDue($currentTime = 'now', $timeZone = null): bool - { - $timeZone = $this->determineTimeZone($currentTime, $timeZone); - - if ('now' === $currentTime) { - $currentTime = new DateTime(); - } elseif ($currentTime instanceof DateTime) { - $currentTime = clone $currentTime; - } elseif ($currentTime instanceof DateTimeImmutable) { - $currentTime = DateTime::createFromFormat('U', $currentTime->format('U')); - } elseif (\is_string($currentTime)) { - $currentTime = new DateTime($currentTime); - } - - Assert::isInstanceOf($currentTime, DateTime::class); - $currentTime->setTimezone(new DateTimeZone($timeZone)); - - // drop the seconds to 0 - $currentTime->setTime((int) $currentTime->format('H'), (int) $currentTime->format('i'), 0); - - try { - return $this->getNextRunDate($currentTime, 0, true)->getTimestamp() === $currentTime->getTimestamp(); - } catch (Exception $e) { - return false; - } - } - - /** - * Get the next or previous run date of the expression relative to a date. - * - * @param string|\DateTimeInterface|null $currentTime Relative calculation date - * @param int $nth Number of matches to skip before returning - * @param bool $invert Set to TRUE to go backwards in time - * @param bool $allowCurrentDate Set to TRUE to return the - * current date if it matches the cron expression - * @param string|null $timeZone TimeZone to use instead of the system default - * - * @throws \RuntimeException on too many iterations - * @throws Exception - * - * @return \DateTime - */ - protected function getRunDate($currentTime = null, int $nth = 0, bool $invert = false, bool $allowCurrentDate = false, $timeZone = null): DateTime - { - $timeZone = $this->determineTimeZone($currentTime, $timeZone); - - if ($currentTime instanceof DateTime) { - $currentDate = clone $currentTime; - } elseif ($currentTime instanceof DateTimeImmutable) { - $currentDate = DateTime::createFromFormat('U', $currentTime->format('U')); - } elseif (\is_string($currentTime)) { - $currentDate = new DateTime($currentTime); - } else { - $currentDate = new DateTime('now'); - } - - Assert::isInstanceOf($currentDate, DateTime::class); - $currentDate->setTimezone(new DateTimeZone($timeZone)); - // Workaround for setTime causing an offset change: https://bugs.php.net/bug.php?id=81074 - $currentDate = DateTime::createFromFormat("!Y-m-d H:iO", $currentDate->format("Y-m-d H:iP"), $currentDate->getTimezone()); - if ($currentDate === false) { - throw new \RuntimeException('Unable to create date from format'); - } - $currentDate->setTimezone(new DateTimeZone($timeZone)); - - $nextRun = clone $currentDate; - - // We don't have to satisfy * or null fields - $parts = []; - $fields = []; - foreach (self::$order as $position) { - $part = $this->getExpression($position); - if (null === $part || '*' === $part) { - continue; - } - $parts[$position] = $part; - $fields[$position] = $this->fieldFactory->getField($position); - } - - if (isset($parts[self::DAY]) && isset($parts[self::WEEKDAY])) { - $domExpression = sprintf('%s %s %s %s *', $this->getExpression(0), $this->getExpression(1), $this->getExpression(2), $this->getExpression(3)); - $dowExpression = sprintf('%s %s * %s %s', $this->getExpression(0), $this->getExpression(1), $this->getExpression(3), $this->getExpression(4)); - - $domExpression = new self($domExpression); - $dowExpression = new self($dowExpression); - - $domRunDates = $domExpression->getMultipleRunDates($nth + 1, $currentTime, $invert, $allowCurrentDate, $timeZone); - $dowRunDates = $dowExpression->getMultipleRunDates($nth + 1, $currentTime, $invert, $allowCurrentDate, $timeZone); - - if ($parts[self::DAY] === '?' || $parts[self::DAY] === '*') { - $domRunDates = []; - } - - if ($parts[self::WEEKDAY] === '?' || $parts[self::WEEKDAY] === '*') { - $dowRunDates = []; - } - - $combined = array_merge($domRunDates, $dowRunDates); - usort($combined, function ($a, $b) { - return $a->format('Y-m-d H:i:s') <=> $b->format('Y-m-d H:i:s'); - }); - if ($invert) { - $combined = array_reverse($combined); - } - - return $combined[$nth]; - } - - // Set a hard limit to bail on an impossible date - for ($i = 0; $i < $this->maxIterationCount; ++$i) { - foreach ($parts as $position => $part) { - $satisfied = false; - // Get the field object used to validate this part - $field = $fields[$position]; - // Check if this is singular or a list - if (false === strpos($part, ',')) { - $satisfied = $field->isSatisfiedBy($nextRun, $part, $invert); - } else { - foreach (array_map('trim', explode(',', $part)) as $listPart) { - if ($field->isSatisfiedBy($nextRun, $listPart, $invert)) { - $satisfied = true; - - break; - } - } - } - - // If the field is not satisfied, then start over - if (!$satisfied) { - $field->increment($nextRun, $invert, $part); - - continue 2; - } - } - - // Skip this match if needed - if ((!$allowCurrentDate && $nextRun == $currentDate) || --$nth > -1) { - $this->fieldFactory->getField(self::MINUTE)->increment($nextRun, $invert, $parts[self::MINUTE] ?? null); - continue; - } - - return $nextRun; - } - - // @codeCoverageIgnoreStart - throw new RuntimeException('Impossible CRON expression'); - // @codeCoverageIgnoreEnd - } - - /** - * Workout what timeZone should be used. - * - * @param string|\DateTimeInterface|null $currentTime Relative calculation date - * @param string|null $timeZone TimeZone to use instead of the system default - * - * @return string - */ - protected function determineTimeZone($currentTime, ?string $timeZone): string - { - if (null !== $timeZone) { - return $timeZone; - } - - if ($currentTime instanceof DateTimeInterface) { - return $currentTime->getTimezone()->getName(); - } - - return date_default_timezone_get(); - } -} diff --git a/vendor/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php b/vendor/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php deleted file mode 100644 index 39ff5978..00000000 --- a/vendor/dragonmantank/cron-expression/src/Cron/DayOfMonthField.php +++ /dev/null @@ -1,164 +0,0 @@ - - */ -class DayOfMonthField extends AbstractField -{ - /** - * {@inheritdoc} - */ - protected $rangeStart = 1; - - /** - * {@inheritdoc} - */ - protected $rangeEnd = 31; - - /** - * Get the nearest day of the week for a given day in a month. - * - * @param int $currentYear Current year - * @param int $currentMonth Current month - * @param int $targetDay Target day of the month - * - * @return \DateTime|null Returns the nearest date - */ - private static function getNearestWeekday(int $currentYear, int $currentMonth, int $targetDay): ?DateTime - { - $tday = str_pad((string) $targetDay, 2, '0', STR_PAD_LEFT); - $target = DateTime::createFromFormat('Y-m-d', "{$currentYear}-{$currentMonth}-{$tday}"); - - if ($target === false) { - return null; - } - - $currentWeekday = (int) $target->format('N'); - - if ($currentWeekday < 6) { - return $target; - } - - $lastDayOfMonth = $target->format('t'); - foreach ([-1, 1, -2, 2] as $i) { - $adjusted = $targetDay + $i; - if ($adjusted > 0 && $adjusted <= $lastDayOfMonth) { - $target->setDate($currentYear, $currentMonth, $adjusted); - - if ((int) $target->format('N') < 6 && (int) $target->format('m') === $currentMonth) { - return $target; - } - } - } - - return null; - } - - /** - * {@inheritdoc} - */ - public function isSatisfiedBy(DateTimeInterface $date, $value, bool $invert): bool - { - // ? states that the field value is to be skipped - if ('?' === $value) { - return true; - } - - $fieldValue = $date->format('d'); - - // Check to see if this is the last day of the month - if ('L' === $value) { - return $fieldValue === $date->format('t'); - } - - // Check to see if this is the nearest weekday to a particular value - if ($wPosition = strpos($value, 'W')) { - // Parse the target day - $targetDay = (int) substr($value, 0, $wPosition); - // Find out if the current day is the nearest day of the week - $nearest = self::getNearestWeekday( - (int) $date->format('Y'), - (int) $date->format('m'), - $targetDay - ); - if ($nearest) { - return $date->format('j') === $nearest->format('j'); - } - - throw new \RuntimeException('Unable to return nearest weekday'); - } - - return $this->isSatisfied((int) $date->format('d'), $value); - } - - /** - * @inheritDoc - * - * @param \DateTime|\DateTimeImmutable $date - */ - public function increment(DateTimeInterface &$date, $invert = false, $parts = null): FieldInterface - { - if (! $invert) { - $date = $date->add(new \DateInterval('P1D')); - $date = $date->setTime(0, 0); - } else { - $date = $date->sub(new \DateInterval('P1D')); - $date = $date->setTime(23, 59); - } - - return $this; - } - - /** - * {@inheritdoc} - */ - public function validate(string $value): bool - { - $basicChecks = parent::validate($value); - - // Validate that a list don't have W or L - if (false !== strpos($value, ',') && (false !== strpos($value, 'W') || false !== strpos($value, 'L'))) { - return false; - } - - if (!$basicChecks) { - if ('?' === $value) { - return true; - } - - if ('L' === $value) { - return true; - } - - if (preg_match('/^(.*)W$/', $value, $matches)) { - return $this->validate($matches[1]); - } - - return false; - } - - return $basicChecks; - } -} diff --git a/vendor/dragonmantank/cron-expression/src/Cron/DayOfWeekField.php b/vendor/dragonmantank/cron-expression/src/Cron/DayOfWeekField.php deleted file mode 100644 index b9bbf48b..00000000 --- a/vendor/dragonmantank/cron-expression/src/Cron/DayOfWeekField.php +++ /dev/null @@ -1,194 +0,0 @@ - 'MON', 2 => 'TUE', 3 => 'WED', 4 => 'THU', 5 => 'FRI', 6 => 'SAT', 7 => 'SUN']; - - /** - * Constructor - */ - public function __construct() - { - $this->nthRange = range(1, 5); - parent::__construct(); - } - - /** - * @inheritDoc - */ - public function isSatisfiedBy(DateTimeInterface $date, $value, bool $invert): bool - { - if ('?' === $value) { - return true; - } - - // Convert text day of the week values to integers - $value = $this->convertLiterals($value); - - $currentYear = (int) $date->format('Y'); - $currentMonth = (int) $date->format('m'); - $lastDayOfMonth = (int) $date->format('t'); - - // Find out if this is the last specific weekday of the month - if ($lPosition = strpos($value, 'L')) { - $weekday = $this->convertLiterals(substr($value, 0, $lPosition)); - $weekday %= 7; - - $daysInMonth = (int) $date->format('t'); - $remainingDaysInMonth = $daysInMonth - (int) $date->format('d'); - return (($weekday === (int) $date->format('w')) && ($remainingDaysInMonth < 7)); - } - - // Handle # hash tokens - if (strpos($value, '#')) { - [$weekday, $nth] = explode('#', $value); - - if (!is_numeric($nth)) { - throw new InvalidArgumentException("Hashed weekdays must be numeric, {$nth} given"); - } else { - $nth = (int) $nth; - } - - // 0 and 7 are both Sunday, however 7 matches date('N') format ISO-8601 - if ('0' === $weekday) { - $weekday = 7; - } - - $weekday = (int) $this->convertLiterals((string) $weekday); - - // Validate the hash fields - if ($weekday < 0 || $weekday > 7) { - throw new InvalidArgumentException("Weekday must be a value between 0 and 7. {$weekday} given"); - } - - if (!\in_array($nth, $this->nthRange, true)) { - throw new InvalidArgumentException("There are never more than 5 or less than 1 of a given weekday in a month, {$nth} given"); - } - - // The current weekday must match the targeted weekday to proceed - if ((int) $date->format('N') !== $weekday) { - return false; - } - - $tdate = clone $date; - $tdate = $tdate->setDate($currentYear, $currentMonth, 1); - $dayCount = 0; - $currentDay = 1; - while ($currentDay < $lastDayOfMonth + 1) { - if ((int) $tdate->format('N') === $weekday) { - if (++$dayCount >= $nth) { - break; - } - } - $tdate = $tdate->setDate($currentYear, $currentMonth, ++$currentDay); - } - - return (int) $date->format('j') === $currentDay; - } - - // Handle day of the week values - if (false !== strpos($value, '-')) { - $parts = explode('-', $value); - if ('7' === $parts[0]) { - $parts[0] = 0; - } elseif ('0' === $parts[1]) { - $parts[1] = 7; - } - $value = implode('-', $parts); - } - - // Test to see which Sunday to use -- 0 == 7 == Sunday - $format = \in_array(7, array_map(function ($value) { - return (int) $value; - }, str_split($value)), true) ? 'N' : 'w'; - $fieldValue = (int) $date->format($format); - - return $this->isSatisfied($fieldValue, $value); - } - - /** - * @inheritDoc - */ - public function increment(DateTimeInterface &$date, $invert = false, $parts = null): FieldInterface - { - if (! $invert) { - $date = $date->add(new \DateInterval('P1D')); - $date = $date->setTime(0, 0); - } else { - $date = $date->sub(new \DateInterval('P1D')); - $date = $date->setTime(23, 59); - } - - return $this; - } - - /** - * {@inheritdoc} - */ - public function validate(string $value): bool - { - $basicChecks = parent::validate($value); - - if (!$basicChecks) { - if ('?' === $value) { - return true; - } - - // Handle the # value - if (false !== strpos($value, '#')) { - $chunks = explode('#', $value); - $chunks[0] = $this->convertLiterals($chunks[0]); - - if (parent::validate($chunks[0]) && is_numeric($chunks[1]) && \in_array((int) $chunks[1], $this->nthRange, true)) { - return true; - } - } - - if (preg_match('/^(.*)L$/', $value, $matches)) { - return $this->validate($matches[1]); - } - - return false; - } - - return $basicChecks; - } -} diff --git a/vendor/dragonmantank/cron-expression/src/Cron/FieldFactory.php b/vendor/dragonmantank/cron-expression/src/Cron/FieldFactory.php deleted file mode 100644 index 839b2757..00000000 --- a/vendor/dragonmantank/cron-expression/src/Cron/FieldFactory.php +++ /dev/null @@ -1,52 +0,0 @@ -fields[$position] ?? $this->fields[$position] = $this->instantiateField($position); - } - - private function instantiateField(int $position): FieldInterface - { - switch ($position) { - case CronExpression::MINUTE: - return new MinutesField(); - case CronExpression::HOUR: - return new HoursField(); - case CronExpression::DAY: - return new DayOfMonthField(); - case CronExpression::MONTH: - return new MonthField(); - case CronExpression::WEEKDAY: - return new DayOfWeekField(); - } - - throw new InvalidArgumentException( - ($position + 1) . ' is not a valid position' - ); - } -} diff --git a/vendor/dragonmantank/cron-expression/src/Cron/FieldFactoryInterface.php b/vendor/dragonmantank/cron-expression/src/Cron/FieldFactoryInterface.php deleted file mode 100644 index 8bd3c658..00000000 --- a/vendor/dragonmantank/cron-expression/src/Cron/FieldFactoryInterface.php +++ /dev/null @@ -1,8 +0,0 @@ -format('H'); - $retval = $this->isSatisfied($checkValue, $value); - if ($retval) { - return $retval; - } - - // Are we on the edge of a transition - $lastTransition = $this->getPastTransition($date); - if (($lastTransition !== null) && ($lastTransition["ts"] > ((int) $date->format('U') - 3600))) { - $dtLastOffset = clone $date; - $this->timezoneSafeModify($dtLastOffset, "-1 hour"); - $lastOffset = $dtLastOffset->getOffset(); - - $dtNextOffset = clone $date; - $this->timezoneSafeModify($dtNextOffset, "+1 hour"); - $nextOffset = $dtNextOffset->getOffset(); - - $offsetChange = $nextOffset - $lastOffset; - if ($offsetChange >= 3600) { - $checkValue -= 1; - return $this->isSatisfied($checkValue, $value); - } - if ((! $invert) && ($offsetChange <= -3600)) { - $checkValue += 1; - return $this->isSatisfied($checkValue, $value); - } - } - - return $retval; - } - - public function getPastTransition(DateTimeInterface $date): ?array - { - $currentTimestamp = (int) $date->format('U'); - if ( - ($this->transitions === null) - || ($this->transitionsStart < ($currentTimestamp + 86400)) - || ($this->transitionsEnd > ($currentTimestamp - 86400)) - ) { - // We start a day before current time so we can differentiate between the first transition entry - // and a change that happens now - $dtLimitStart = clone $date; - $dtLimitStart = $dtLimitStart->modify("-12 months"); - $dtLimitEnd = clone $date; - $dtLimitEnd = $dtLimitEnd->modify('+12 months'); - - $this->transitions = $date->getTimezone()->getTransitions( - $dtLimitStart->getTimestamp(), - $dtLimitEnd->getTimestamp() - ); - if (empty($this->transitions)) { - return null; - } - $this->transitionsStart = $dtLimitStart->getTimestamp(); - $this->transitionsEnd = $dtLimitEnd->getTimestamp(); - } - - $nextTransition = null; - foreach ($this->transitions as $transition) { - if ($transition["ts"] > $currentTimestamp) { - continue; - } - - if (($nextTransition !== null) && ($transition["ts"] < $nextTransition["ts"])) { - continue; - } - - $nextTransition = $transition; - } - - return ($nextTransition ?? null); - } - - /** - * {@inheritdoc} - * - * @param string|null $parts - */ - public function increment(DateTimeInterface &$date, $invert = false, $parts = null): FieldInterface - { - $originalTimestamp = (int) $date->format('U'); - - // Change timezone to UTC temporarily. This will - // allow us to go back or forwards and hour even - // if DST will be changed between the hours. - if (null === $parts || '*' === $parts) { - if ($invert) { - $date = $date->sub(new \DateInterval('PT1H')); - } else { - $date = $date->add(new \DateInterval('PT1H')); - } - - $date = $this->setTimeHour($date, $invert, $originalTimestamp); - return $this; - } - - $parts = false !== strpos($parts, ',') ? explode(',', $parts) : [$parts]; - $hours = []; - foreach ($parts as $part) { - $hours = array_merge($hours, $this->getRangeForExpression($part, 23)); - } - - $current_hour = (int) $date->format('H'); - $position = $invert ? \count($hours) - 1 : 0; - $countHours = \count($hours); - if ($countHours > 1) { - for ($i = 0; $i < $countHours - 1; ++$i) { - if ((!$invert && $current_hour >= $hours[$i] && $current_hour < $hours[$i + 1]) || - ($invert && $current_hour > $hours[$i] && $current_hour <= $hours[$i + 1])) { - $position = $invert ? $i : $i + 1; - - break; - } - } - } - - $target = (int) $hours[$position]; - $originalHour = (int)$date->format('H'); - - $originalDay = (int)$date->format('d'); - $previousOffset = $date->getOffset(); - - if (! $invert) { - if ($originalHour >= $target) { - $distance = 24 - $originalHour; - $date = $this->timezoneSafeModify($date, "+{$distance} hours"); - - $actualDay = (int)$date->format('d'); - $actualHour = (int)$date->format('H'); - if (($actualDay !== ($originalDay + 1)) && ($actualHour !== 0)) { - $offsetChange = ($previousOffset - $date->getOffset()); - $date = $this->timezoneSafeModify($date, "+{$offsetChange} seconds"); - } - - $originalHour = (int)$date->format('H'); - } - - $distance = $target - $originalHour; - $date = $this->timezoneSafeModify($date, "+{$distance} hours"); - } else { - if ($originalHour <= $target) { - $distance = ($originalHour + 1); - $date = $this->timezoneSafeModify($date, "-" . $distance . " hours"); - - $actualDay = (int)$date->format('d'); - $actualHour = (int)$date->format('H'); - if (($actualDay !== ($originalDay - 1)) && ($actualHour !== 23)) { - $offsetChange = ($previousOffset - $date->getOffset()); - $date = $this->timezoneSafeModify($date, "+{$offsetChange} seconds"); - } - - $originalHour = (int)$date->format('H'); - } - - $distance = $originalHour - $target; - $date = $this->timezoneSafeModify($date, "-{$distance} hours"); - } - - $date = $this->setTimeHour($date, $invert, $originalTimestamp); - - $actualHour = (int)$date->format('H'); - if ($invert && ($actualHour === ($target - 1) || (($actualHour === 23) && ($target === 0)))) { - $date = $this->timezoneSafeModify($date, "+1 hour"); - } - - return $this; - } -} diff --git a/vendor/dragonmantank/cron-expression/src/Cron/MinutesField.php b/vendor/dragonmantank/cron-expression/src/Cron/MinutesField.php deleted file mode 100644 index f077e6ec..00000000 --- a/vendor/dragonmantank/cron-expression/src/Cron/MinutesField.php +++ /dev/null @@ -1,97 +0,0 @@ -isSatisfied((int)$date->format('i'), $value); - } - - /** - * {@inheritdoc} - * {@inheritDoc} - * - * @param string|null $parts - */ - public function increment(DateTimeInterface &$date, $invert = false, $parts = null): FieldInterface - { - if (is_null($parts)) { - $date = $this->timezoneSafeModify($date, ($invert ? "-" : "+") ."1 minute"); - return $this; - } - - $current_minute = (int) $date->format('i'); - - $parts = false !== strpos($parts, ',') ? explode(',', $parts) : [$parts]; - sort($parts); - $minutes = []; - foreach ($parts as $part) { - $minutes = array_merge($minutes, $this->getRangeForExpression($part, 59)); - } - - $position = $invert ? \count($minutes) - 1 : 0; - if (\count($minutes) > 1) { - for ($i = 0; $i < \count($minutes) - 1; ++$i) { - if ((!$invert && $current_minute >= $minutes[$i] && $current_minute < $minutes[$i + 1]) || - ($invert && $current_minute > $minutes[$i] && $current_minute <= $minutes[$i + 1])) { - $position = $invert ? $i : $i + 1; - - break; - } - } - } - - $target = (int) $minutes[$position]; - $originalMinute = (int) $date->format("i"); - - if (! $invert) { - if ($originalMinute >= $target) { - $distance = 60 - $originalMinute; - $date = $this->timezoneSafeModify($date, "+{$distance} minutes"); - - $originalMinute = (int) $date->format("i"); - } - - $distance = $target - $originalMinute; - $date = $this->timezoneSafeModify($date, "+{$distance} minutes"); - } else { - if ($originalMinute <= $target) { - $distance = ($originalMinute + 1); - $date = $this->timezoneSafeModify($date, "-{$distance} minutes"); - - $originalMinute = (int) $date->format("i"); - } - - $distance = $originalMinute - $target; - $date = $this->timezoneSafeModify($date, "-{$distance} minutes"); - } - - return $this; - } -} diff --git a/vendor/dragonmantank/cron-expression/src/Cron/MonthField.php b/vendor/dragonmantank/cron-expression/src/Cron/MonthField.php deleted file mode 100644 index 5a15fbb8..00000000 --- a/vendor/dragonmantank/cron-expression/src/Cron/MonthField.php +++ /dev/null @@ -1,61 +0,0 @@ - 'JAN', 2 => 'FEB', 3 => 'MAR', 4 => 'APR', 5 => 'MAY', 6 => 'JUN', 7 => 'JUL', - 8 => 'AUG', 9 => 'SEP', 10 => 'OCT', 11 => 'NOV', 12 => 'DEC', ]; - - /** - * {@inheritdoc} - */ - public function isSatisfiedBy(DateTimeInterface $date, $value, bool $invert): bool - { - if ($value === '?') { - return true; - } - - $value = $this->convertLiterals($value); - - return $this->isSatisfied((int) $date->format('m'), $value); - } - - /** - * @inheritDoc - * - * @param \DateTime|\DateTimeImmutable $date - */ - public function increment(DateTimeInterface &$date, $invert = false, $parts = null): FieldInterface - { - if (! $invert) { - $date = $date->modify('first day of next month'); - $date = $date->setTime(0, 0); - } else { - $date = $date->modify('last day of previous month'); - $date = $date->setTime(23, 59); - } - - return $this; - } -} diff --git a/vendor/egulias/email-validator/CHANGELOG.md b/vendor/egulias/email-validator/CHANGELOG.md deleted file mode 100644 index 39f5a8a0..00000000 --- a/vendor/egulias/email-validator/CHANGELOG.md +++ /dev/null @@ -1,32 +0,0 @@ -# EmailValidator Changelog - -## New Features - -* Access to local part and domain part from EmailParser -* Validations outside of the scope of the RFC will be considered "extra" validations, thus opening the door for adding new; will live in their own folder "extra" (as requested in #248, #195, #183). - -## Breaking changes - -* PHP version upgraded to match Symfony's (as of 12/2020). -* DNSCheckValidation now fails for missing MX records. While the RFC argues that the existence of only A records to be valid, starting in v3 they will be considered invalid. -* Emails domain part are now intenteded to be RFC 1035 compliant, rendering previous valid emails (e.g example@examp&) invalid. - -## PHP versions upgrade policy -PHP version upgrade requirement will happen via MINOR (3.x) version upgrades of the library, following the adoption level by major frameworks. - -## Changes -* #235 -* #215 -* #130 -* #258 -* #188 -* #181 -* #217 -* #214 -* #249 -* #236 -* #257 -* #210 - -## Thanks -To contributors, be it with PRs, reporting issues or supporting otherwise. diff --git a/vendor/egulias/email-validator/CONTRIBUTING.md b/vendor/egulias/email-validator/CONTRIBUTING.md deleted file mode 100644 index 907bc2c9..00000000 --- a/vendor/egulias/email-validator/CONTRIBUTING.md +++ /dev/null @@ -1,153 +0,0 @@ -# Contributing - -When contributing to this repository make sure to follow the Pull request process below. -Reduce to the minimum 3rd party dependencies. - -Please note we have a [code of conduct](#Code of Conduct), please follow it in all your interactions with the project. - -## Pull Request Process - -When doing a PR to v2 remember that you also have to do the PR port to v3, or tests confirming the bug is not reproducible. - -1. Supported version is v3. If you are fixing a bug in v2, please port to v3 -2. Use the title as a brief description of the changes -3. Describe the changes you are proposing - 1. If adding an extra validation state the benefits of adding it and the problem is solving - 2. Document in the readme, by adding it to the list -4. Provide appropriate tests for the code you are submitting: aim to keep the existing coverage percentage. -5. Add your Twitter handle (if you have) so we can thank you there. - -## License -By contributing, you agree that your contributions will be licensed under its MIT License. - -## Code of Conduct - -### Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity -and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -### Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the - overall community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or - advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email - address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -### Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -### Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -### Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at . -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -#### Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -#### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -#### 2. Warning - -**Community Impact**: A violation through a single incident or series -of actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or -permanent ban. - -#### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -#### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within -the community. - -### Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.0, available at -[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. - -Community Impact Guidelines were inspired by -[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. - -For answers to common questions about this code of conduct, see the FAQ at -[https://www.contributor-covenant.org/faq][FAQ]. Translations are available -at [https://www.contributor-covenant.org/translations][translations]. - -[homepage]: https://www.contributor-covenant.org -[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html -[Mozilla CoC]: https://github.com/mozilla/diversity -[FAQ]: https://www.contributor-covenant.org/faq -[translations]: https://www.contributor-covenant.org/translations diff --git a/vendor/egulias/email-validator/LICENSE b/vendor/egulias/email-validator/LICENSE deleted file mode 100644 index b1902a4e..00000000 --- a/vendor/egulias/email-validator/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2013-2023 Eduardo Gulias Davis - -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/vendor/egulias/email-validator/composer.json b/vendor/egulias/email-validator/composer.json deleted file mode 100644 index bf1b3f4c..00000000 --- a/vendor/egulias/email-validator/composer.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "egulias/email-validator", - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", - "keywords": ["email", "validation", "validator", "emailvalidation", "emailvalidator"], - "license": "MIT", - "authors": [ - {"name": "Eduardo Gulias Davis"} - ], - "extra": { - "branch-alias": { - "dev-master": "4.0.x-dev" - } - }, - "require": { - "php": ">=8.1", - "doctrine/lexer": "^2.0 || ^3.0", - "symfony/polyfill-intl-idn": "^1.26" - }, - "require-dev": { - "phpunit/phpunit": "^10.2", - "vimeo/psalm": "^5.12" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "autoload": { - "psr-4": { - "Egulias\\EmailValidator\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "Egulias\\EmailValidator\\Tests\\": "tests" - } - } -} diff --git a/vendor/egulias/email-validator/src/EmailLexer.php b/vendor/egulias/email-validator/src/EmailLexer.php deleted file mode 100644 index 969c049f..00000000 --- a/vendor/egulias/email-validator/src/EmailLexer.php +++ /dev/null @@ -1,330 +0,0 @@ - */ -class EmailLexer extends AbstractLexer -{ - //ASCII values - public const S_EMPTY = -1; - public const C_NUL = 0; - public const S_HTAB = 9; - public const S_LF = 10; - public const S_CR = 13; - public const S_SP = 32; - public const EXCLAMATION = 33; - public const S_DQUOTE = 34; - public const NUMBER_SIGN = 35; - public const DOLLAR = 36; - public const PERCENTAGE = 37; - public const AMPERSAND = 38; - public const S_SQUOTE = 39; - public const S_OPENPARENTHESIS = 40; - public const S_CLOSEPARENTHESIS = 41; - public const ASTERISK = 42; - public const S_PLUS = 43; - public const S_COMMA = 44; - public const S_HYPHEN = 45; - public const S_DOT = 46; - public const S_SLASH = 47; - public const S_COLON = 58; - public const S_SEMICOLON = 59; - public const S_LOWERTHAN = 60; - public const S_EQUAL = 61; - public const S_GREATERTHAN = 62; - public const QUESTIONMARK = 63; - public const S_AT = 64; - public const S_OPENBRACKET = 91; - public const S_BACKSLASH = 92; - public const S_CLOSEBRACKET = 93; - public const CARET = 94; - public const S_UNDERSCORE = 95; - public const S_BACKTICK = 96; - public const S_OPENCURLYBRACES = 123; - public const S_PIPE = 124; - public const S_CLOSECURLYBRACES = 125; - public const S_TILDE = 126; - public const C_DEL = 127; - public const INVERT_QUESTIONMARK = 168; - public const INVERT_EXCLAMATION = 173; - public const GENERIC = 300; - public const S_IPV6TAG = 301; - public const INVALID = 302; - public const CRLF = 1310; - public const S_DOUBLECOLON = 5858; - public const ASCII_INVALID_FROM = 127; - public const ASCII_INVALID_TO = 199; - - /** - * US-ASCII visible characters not valid for atext (@link http://tools.ietf.org/html/rfc5322#section-3.2.3) - * - * @var array - */ - protected $charValue = [ - '{' => self::S_OPENCURLYBRACES, - '}' => self::S_CLOSECURLYBRACES, - '(' => self::S_OPENPARENTHESIS, - ')' => self::S_CLOSEPARENTHESIS, - '<' => self::S_LOWERTHAN, - '>' => self::S_GREATERTHAN, - '[' => self::S_OPENBRACKET, - ']' => self::S_CLOSEBRACKET, - ':' => self::S_COLON, - ';' => self::S_SEMICOLON, - '@' => self::S_AT, - '\\' => self::S_BACKSLASH, - '/' => self::S_SLASH, - ',' => self::S_COMMA, - '.' => self::S_DOT, - "'" => self::S_SQUOTE, - "`" => self::S_BACKTICK, - '"' => self::S_DQUOTE, - '-' => self::S_HYPHEN, - '::' => self::S_DOUBLECOLON, - ' ' => self::S_SP, - "\t" => self::S_HTAB, - "\r" => self::S_CR, - "\n" => self::S_LF, - "\r\n" => self::CRLF, - 'IPv6' => self::S_IPV6TAG, - '' => self::S_EMPTY, - '\0' => self::C_NUL, - '*' => self::ASTERISK, - '!' => self::EXCLAMATION, - '&' => self::AMPERSAND, - '^' => self::CARET, - '$' => self::DOLLAR, - '%' => self::PERCENTAGE, - '~' => self::S_TILDE, - '|' => self::S_PIPE, - '_' => self::S_UNDERSCORE, - '=' => self::S_EQUAL, - '+' => self::S_PLUS, - '¿' => self::INVERT_QUESTIONMARK, - '?' => self::QUESTIONMARK, - '#' => self::NUMBER_SIGN, - '¡' => self::INVERT_EXCLAMATION, - ]; - - public const INVALID_CHARS_REGEX = "/[^\p{S}\p{C}\p{Cc}]+/iu"; - - public const VALID_UTF8_REGEX = '/\p{Cc}+/u'; - - public const CATCHABLE_PATTERNS = [ - '[a-zA-Z]+[46]?', //ASCII and domain literal - '[^\x00-\x7F]', //UTF-8 - '[0-9]+', - '\r\n', - '::', - '\s+?', - '.', - ]; - - public const NON_CATCHABLE_PATTERNS = [ - '[\xA0-\xff]+', - ]; - - public const MODIFIERS = 'iu'; - - /** @var bool */ - protected $hasInvalidTokens = false; - - /** - * @var Token - */ - protected Token $previous; - - /** - * The last matched/seen token. - * - * @var Token - */ - public Token $current; - - /** - * @var Token - */ - private Token $nullToken; - - /** @var string */ - private $accumulator = ''; - - /** @var bool */ - private $hasToRecord = false; - - public function __construct() - { - /** @var Token $nullToken */ - $nullToken = new Token('', self::S_EMPTY, 0); - $this->nullToken = $nullToken; - - $this->current = $this->previous = $this->nullToken; - $this->lookahead = null; - } - - public function reset(): void - { - $this->hasInvalidTokens = false; - parent::reset(); - $this->current = $this->previous = $this->nullToken; - } - - /** - * @param int $type - * @throws \UnexpectedValueException - * @return boolean - * - * @psalm-suppress InvalidScalarArgument - */ - public function find($type): bool - { - $search = clone $this; - $search->skipUntil($type); - - if (!$search->lookahead) { - throw new \UnexpectedValueException($type . ' not found'); - } - return true; - } - - /** - * moveNext - * - * @return boolean - */ - public function moveNext(): bool - { - if ($this->hasToRecord && $this->previous === $this->nullToken) { - $this->accumulator .= $this->current->value; - } - - $this->previous = $this->current; - - if ($this->lookahead === null) { - $this->lookahead = $this->nullToken; - } - - $hasNext = parent::moveNext(); - $this->current = $this->token ?? $this->nullToken; - - if ($this->hasToRecord) { - $this->accumulator .= $this->current->value; - } - - return $hasNext; - } - - /** - * Retrieve token type. Also processes the token value if necessary. - * - * @param string $value - * @throws \InvalidArgumentException - * @return integer - */ - protected function getType(&$value): int - { - $encoded = $value; - - if (mb_detect_encoding($value, 'auto', true) !== 'UTF-8') { - $encoded = mb_convert_encoding($value, 'UTF-8', 'Windows-1252'); - } - - if ($this->isValid($encoded)) { - return $this->charValue[$encoded]; - } - - if ($this->isNullType($encoded)) { - return self::C_NUL; - } - - if ($this->isInvalidChar($encoded)) { - $this->hasInvalidTokens = true; - return self::INVALID; - } - - return self::GENERIC; - } - - protected function isValid(string $value): bool - { - return isset($this->charValue[$value]); - } - - protected function isNullType(string $value): bool - { - return $value === "\0"; - } - - protected function isInvalidChar(string $value): bool - { - return !preg_match(self::INVALID_CHARS_REGEX, $value); - } - - protected function isUTF8Invalid(string $value): bool - { - return preg_match(self::VALID_UTF8_REGEX, $value) !== false; - } - - public function hasInvalidTokens(): bool - { - return $this->hasInvalidTokens; - } - - /** - * getPrevious - * - * @return Token - */ - public function getPrevious(): Token - { - return $this->previous; - } - - /** - * Lexical catchable patterns. - * - * @return string[] - */ - protected function getCatchablePatterns(): array - { - return self::CATCHABLE_PATTERNS; - } - - /** - * Lexical non-catchable patterns. - * - * @return string[] - */ - protected function getNonCatchablePatterns(): array - { - return self::NON_CATCHABLE_PATTERNS; - } - - protected function getModifiers(): string - { - return self::MODIFIERS; - } - - public function getAccumulatedValues(): string - { - return $this->accumulator; - } - - public function startRecording(): void - { - $this->hasToRecord = true; - } - - public function stopRecording(): void - { - $this->hasToRecord = false; - } - - public function clearRecorded(): void - { - $this->accumulator = ''; - } -} diff --git a/vendor/egulias/email-validator/src/EmailParser.php b/vendor/egulias/email-validator/src/EmailParser.php deleted file mode 100644 index fc449c76..00000000 --- a/vendor/egulias/email-validator/src/EmailParser.php +++ /dev/null @@ -1,90 +0,0 @@ -addLongEmailWarning($this->localPart, $this->domainPart); - - return $result; - } - - protected function preLeftParsing(): Result - { - if (!$this->hasAtToken()) { - return new InvalidEmail(new NoLocalPart(), $this->lexer->current->value); - } - return new ValidEmail(); - } - - protected function parseLeftFromAt(): Result - { - return $this->processLocalPart(); - } - - protected function parseRightFromAt(): Result - { - return $this->processDomainPart(); - } - - private function processLocalPart(): Result - { - $localPartParser = new LocalPart($this->lexer); - $localPartResult = $localPartParser->parse(); - $this->localPart = $localPartParser->localPart(); - $this->warnings = [...$localPartParser->getWarnings(), ...$this->warnings]; - - return $localPartResult; - } - - private function processDomainPart(): Result - { - $domainPartParser = new DomainPart($this->lexer); - $domainPartResult = $domainPartParser->parse(); - $this->domainPart = $domainPartParser->domainPart(); - $this->warnings = [...$domainPartParser->getWarnings(), ...$this->warnings]; - - return $domainPartResult; - } - - public function getDomainPart(): string - { - return $this->domainPart; - } - - public function getLocalPart(): string - { - return $this->localPart; - } - - private function addLongEmailWarning(string $localPart, string $parsedDomainPart): void - { - if (strlen($localPart . '@' . $parsedDomainPart) > self::EMAIL_MAX_LENGTH) { - $this->warnings[EmailTooLong::CODE] = new EmailTooLong(); - } - } -} diff --git a/vendor/egulias/email-validator/src/EmailValidator.php b/vendor/egulias/email-validator/src/EmailValidator.php deleted file mode 100644 index 5a2e5c82..00000000 --- a/vendor/egulias/email-validator/src/EmailValidator.php +++ /dev/null @@ -1,67 +0,0 @@ -lexer = new EmailLexer(); - } - - /** - * @param string $email - * @param EmailValidation $emailValidation - * @return bool - */ - public function isValid(string $email, EmailValidation $emailValidation) - { - $isValid = $emailValidation->isValid($email, $this->lexer); - $this->warnings = $emailValidation->getWarnings(); - $this->error = $emailValidation->getError(); - - return $isValid; - } - - /** - * @return boolean - */ - public function hasWarnings() - { - return !empty($this->warnings); - } - - /** - * @return array - */ - public function getWarnings() - { - return $this->warnings; - } - - /** - * @return InvalidEmail|null - */ - public function getError() - { - return $this->error; - } -} diff --git a/vendor/egulias/email-validator/src/MessageIDParser.php b/vendor/egulias/email-validator/src/MessageIDParser.php deleted file mode 100644 index 35bd0a7f..00000000 --- a/vendor/egulias/email-validator/src/MessageIDParser.php +++ /dev/null @@ -1,91 +0,0 @@ -addLongEmailWarning($this->idLeft, $this->idRight); - - return $result; - } - - protected function preLeftParsing(): Result - { - if (!$this->hasAtToken()) { - return new InvalidEmail(new NoLocalPart(), $this->lexer->current->value); - } - return new ValidEmail(); - } - - protected function parseLeftFromAt(): Result - { - return $this->processIDLeft(); - } - - protected function parseRightFromAt(): Result - { - return $this->processIDRight(); - } - - private function processIDLeft(): Result - { - $localPartParser = new IDLeftPart($this->lexer); - $localPartResult = $localPartParser->parse(); - $this->idLeft = $localPartParser->localPart(); - $this->warnings = [...$localPartParser->getWarnings(), ...$this->warnings]; - - return $localPartResult; - } - - private function processIDRight(): Result - { - $domainPartParser = new IDRightPart($this->lexer); - $domainPartResult = $domainPartParser->parse(); - $this->idRight = $domainPartParser->domainPart(); - $this->warnings = [...$domainPartParser->getWarnings(), ...$this->warnings]; - - return $domainPartResult; - } - - public function getLeftPart(): string - { - return $this->idLeft; - } - - public function getRightPart(): string - { - return $this->idRight; - } - - private function addLongEmailWarning(string $localPart, string $parsedDomainPart): void - { - if (strlen($localPart . '@' . $parsedDomainPart) > self::EMAILID_MAX_LENGTH) { - $this->warnings[EmailTooLong::CODE] = new EmailTooLong(); - } - } -} diff --git a/vendor/egulias/email-validator/src/Parser.php b/vendor/egulias/email-validator/src/Parser.php deleted file mode 100644 index d577e3ea..00000000 --- a/vendor/egulias/email-validator/src/Parser.php +++ /dev/null @@ -1,78 +0,0 @@ -lexer = $lexer; - } - - public function parse(string $str): Result - { - $this->lexer->setInput($str); - - if ($this->lexer->hasInvalidTokens()) { - return new InvalidEmail(new ExpectingATEXT("Invalid tokens found"), $this->lexer->current->value); - } - - $preParsingResult = $this->preLeftParsing(); - if ($preParsingResult->isInvalid()) { - return $preParsingResult; - } - - $localPartResult = $this->parseLeftFromAt(); - - if ($localPartResult->isInvalid()) { - return $localPartResult; - } - - $domainPartResult = $this->parseRightFromAt(); - - if ($domainPartResult->isInvalid()) { - return $domainPartResult; - } - - return new ValidEmail(); - } - - /** - * @return Warning\Warning[] - */ - public function getWarnings(): array - { - return $this->warnings; - } - - protected function hasAtToken(): bool - { - $this->lexer->moveNext(); - $this->lexer->moveNext(); - - return !$this->lexer->current->isA(EmailLexer::S_AT); - } -} diff --git a/vendor/egulias/email-validator/src/Parser/Comment.php b/vendor/egulias/email-validator/src/Parser/Comment.php deleted file mode 100644 index 7b5b47e2..00000000 --- a/vendor/egulias/email-validator/src/Parser/Comment.php +++ /dev/null @@ -1,102 +0,0 @@ -lexer = $lexer; - $this->commentStrategy = $commentStrategy; - } - - public function parse(): Result - { - if ($this->lexer->current->isA(EmailLexer::S_OPENPARENTHESIS)) { - $this->openedParenthesis++; - if ($this->noClosingParenthesis()) { - return new InvalidEmail(new UnclosedComment(), $this->lexer->current->value); - } - } - - if ($this->lexer->current->isA(EmailLexer::S_CLOSEPARENTHESIS)) { - return new InvalidEmail(new UnOpenedComment(), $this->lexer->current->value); - } - - $this->warnings[WarningComment::CODE] = new WarningComment(); - - $moreTokens = true; - while ($this->commentStrategy->exitCondition($this->lexer, $this->openedParenthesis) && $moreTokens) { - - if ($this->lexer->isNextToken(EmailLexer::S_OPENPARENTHESIS)) { - $this->openedParenthesis++; - } - $this->warnEscaping(); - if ($this->lexer->isNextToken(EmailLexer::S_CLOSEPARENTHESIS)) { - $this->openedParenthesis--; - } - $moreTokens = $this->lexer->moveNext(); - } - - if ($this->openedParenthesis >= 1) { - return new InvalidEmail(new UnclosedComment(), $this->lexer->current->value); - } - if ($this->openedParenthesis < 0) { - return new InvalidEmail(new UnOpenedComment(), $this->lexer->current->value); - } - - $finalValidations = $this->commentStrategy->endOfLoopValidations($this->lexer); - - $this->warnings = [...$this->warnings, ...$this->commentStrategy->getWarnings()]; - - return $finalValidations; - } - - - /** - * @return void - */ - private function warnEscaping(): void - { - //Backslash found - if (!$this->lexer->current->isA(EmailLexer::S_BACKSLASH)) { - return; - } - - if (!$this->lexer->isNextTokenAny(array(EmailLexer::S_SP, EmailLexer::S_HTAB, EmailLexer::C_DEL))) { - return; - } - - $this->warnings[QuotedPart::CODE] = - new QuotedPart($this->lexer->getPrevious()->type, $this->lexer->current->type); - } - - private function noClosingParenthesis(): bool - { - try { - $this->lexer->find(EmailLexer::S_CLOSEPARENTHESIS); - return false; - } catch (\RuntimeException $e) { - return true; - } - } -} diff --git a/vendor/egulias/email-validator/src/Parser/CommentStrategy/CommentStrategy.php b/vendor/egulias/email-validator/src/Parser/CommentStrategy/CommentStrategy.php deleted file mode 100644 index 8834db04..00000000 --- a/vendor/egulias/email-validator/src/Parser/CommentStrategy/CommentStrategy.php +++ /dev/null @@ -1,22 +0,0 @@ -isNextToken(EmailLexer::S_DOT)); - } - - public function endOfLoopValidations(EmailLexer $lexer): Result - { - //test for end of string - if (!$lexer->isNextToken(EmailLexer::S_DOT)) { - return new InvalidEmail(new ExpectingATEXT('DOT not found near CLOSEPARENTHESIS'), $lexer->current->value); - } - //add warning - //Address is valid within the message but cannot be used unmodified for the envelope - return new ValidEmail(); - } - - public function getWarnings(): array - { - return []; - } -} diff --git a/vendor/egulias/email-validator/src/Parser/CommentStrategy/LocalComment.php b/vendor/egulias/email-validator/src/Parser/CommentStrategy/LocalComment.php deleted file mode 100644 index 5c18b440..00000000 --- a/vendor/egulias/email-validator/src/Parser/CommentStrategy/LocalComment.php +++ /dev/null @@ -1,37 +0,0 @@ -isNextToken(EmailLexer::S_AT); - } - - public function endOfLoopValidations(EmailLexer $lexer): Result - { - if (!$lexer->isNextToken(EmailLexer::S_AT)) { - return new InvalidEmail(new ExpectingATEXT('ATEX is not expected after closing comments'), $lexer->current->value); - } - $this->warnings[CFWSNearAt::CODE] = new CFWSNearAt(); - return new ValidEmail(); - } - - public function getWarnings(): array - { - return $this->warnings; - } -} diff --git a/vendor/egulias/email-validator/src/Parser/DomainLiteral.php b/vendor/egulias/email-validator/src/Parser/DomainLiteral.php deleted file mode 100644 index 5093e508..00000000 --- a/vendor/egulias/email-validator/src/Parser/DomainLiteral.php +++ /dev/null @@ -1,210 +0,0 @@ -addTagWarnings(); - - $IPv6TAG = false; - $addressLiteral = ''; - - do { - if ($this->lexer->current->isA(EmailLexer::C_NUL)) { - return new InvalidEmail(new ExpectingDTEXT(), $this->lexer->current->value); - } - - $this->addObsoleteWarnings(); - - if ($this->lexer->isNextTokenAny(array(EmailLexer::S_OPENBRACKET, EmailLexer::S_OPENBRACKET))) { - return new InvalidEmail(new ExpectingDTEXT(), $this->lexer->current->value); - } - - if ($this->lexer->isNextTokenAny( - array(EmailLexer::S_HTAB, EmailLexer::S_SP, EmailLexer::CRLF) - )) { - $this->warnings[CFWSWithFWS::CODE] = new CFWSWithFWS(); - $this->parseFWS(); - } - - if ($this->lexer->isNextToken(EmailLexer::S_CR)) { - return new InvalidEmail(new CRNoLF(), $this->lexer->current->value); - } - - if ($this->lexer->current->isA(EmailLexer::S_BACKSLASH)) { - return new InvalidEmail(new UnusualElements($this->lexer->current->value), $this->lexer->current->value); - } - if ($this->lexer->current->isA(EmailLexer::S_IPV6TAG)) { - $IPv6TAG = true; - } - - if ($this->lexer->current->isA(EmailLexer::S_CLOSEBRACKET)) { - break; - } - - $addressLiteral .= $this->lexer->current->value; - } while ($this->lexer->moveNext()); - - - //Encapsulate - $addressLiteral = str_replace('[', '', $addressLiteral); - $isAddressLiteralIPv4 = $this->checkIPV4Tag($addressLiteral); - - if (!$isAddressLiteralIPv4) { - return new ValidEmail(); - } - - $addressLiteral = $this->convertIPv4ToIPv6($addressLiteral); - - if (!$IPv6TAG) { - $this->warnings[WarningDomainLiteral::CODE] = new WarningDomainLiteral(); - return new ValidEmail(); - } - - $this->warnings[AddressLiteral::CODE] = new AddressLiteral(); - - $this->checkIPV6Tag($addressLiteral); - - return new ValidEmail(); - } - - /** - * @param string $addressLiteral - * @param int $maxGroups - */ - public function checkIPV6Tag($addressLiteral, $maxGroups = 8): void - { - $prev = $this->lexer->getPrevious(); - if ($prev->isA(EmailLexer::S_COLON)) { - $this->warnings[IPV6ColonEnd::CODE] = new IPV6ColonEnd(); - } - - $IPv6 = substr($addressLiteral, 5); - //Daniel Marschall's new IPv6 testing strategy - $matchesIP = explode(':', $IPv6); - $groupCount = count($matchesIP); - $colons = strpos($IPv6, '::'); - - if (count(preg_grep('/^[0-9A-Fa-f]{0,4}$/', $matchesIP, PREG_GREP_INVERT)) !== 0) { - $this->warnings[IPV6BadChar::CODE] = new IPV6BadChar(); - } - - if ($colons === false) { - // We need exactly the right number of groups - if ($groupCount !== $maxGroups) { - $this->warnings[IPV6GroupCount::CODE] = new IPV6GroupCount(); - } - return; - } - - if ($colons !== strrpos($IPv6, '::')) { - $this->warnings[IPV6DoubleColon::CODE] = new IPV6DoubleColon(); - return; - } - - if ($colons === 0 || $colons === (strlen($IPv6) - 2)) { - // RFC 4291 allows :: at the start or end of an address - //with 7 other groups in addition - ++$maxGroups; - } - - if ($groupCount > $maxGroups) { - $this->warnings[IPV6MaxGroups::CODE] = new IPV6MaxGroups(); - } elseif ($groupCount === $maxGroups) { - $this->warnings[IPV6Deprecated::CODE] = new IPV6Deprecated(); - } - } - - public function convertIPv4ToIPv6(string $addressLiteralIPv4): string - { - $matchesIP = []; - $IPv4Match = preg_match(self::IPV4_REGEX, $addressLiteralIPv4, $matchesIP); - - // Extract IPv4 part from the end of the address-literal (if there is one) - if ($IPv4Match > 0) { - $index = (int) strrpos($addressLiteralIPv4, $matchesIP[0]); - //There's a match but it is at the start - if ($index > 0) { - // Convert IPv4 part to IPv6 format for further testing - return substr($addressLiteralIPv4, 0, $index) . '0:0'; - } - } - - return $addressLiteralIPv4; - } - - /** - * @param string $addressLiteral - * - * @return bool - */ - protected function checkIPV4Tag($addressLiteral): bool - { - $matchesIP = []; - $IPv4Match = preg_match(self::IPV4_REGEX, $addressLiteral, $matchesIP); - - // Extract IPv4 part from the end of the address-literal (if there is one) - - if ($IPv4Match > 0) { - $index = strrpos($addressLiteral, $matchesIP[0]); - //There's a match but it is at the start - if ($index === 0) { - $this->warnings[AddressLiteral::CODE] = new AddressLiteral(); - return false; - } - } - - return true; - } - - private function addObsoleteWarnings(): void - { - if (in_array($this->lexer->current->type, self::OBSOLETE_WARNINGS)) { - $this->warnings[ObsoleteDTEXT::CODE] = new ObsoleteDTEXT(); - } - } - - private function addTagWarnings(): void - { - if ($this->lexer->isNextToken(EmailLexer::S_COLON)) { - $this->warnings[IPV6ColonStart::CODE] = new IPV6ColonStart(); - } - if ($this->lexer->isNextToken(EmailLexer::S_IPV6TAG)) { - $lexer = clone $this->lexer; - $lexer->moveNext(); - if ($lexer->isNextToken(EmailLexer::S_DOUBLECOLON)) { - $this->warnings[IPV6ColonStart::CODE] = new IPV6ColonStart(); - } - } - } -} diff --git a/vendor/egulias/email-validator/src/Parser/DomainPart.php b/vendor/egulias/email-validator/src/Parser/DomainPart.php deleted file mode 100644 index a1a56cf3..00000000 --- a/vendor/egulias/email-validator/src/Parser/DomainPart.php +++ /dev/null @@ -1,326 +0,0 @@ -lexer->clearRecorded(); - $this->lexer->startRecording(); - - $this->lexer->moveNext(); - - $domainChecks = $this->performDomainStartChecks(); - if ($domainChecks->isInvalid()) { - return $domainChecks; - } - - if ($this->lexer->current->isA(EmailLexer::S_AT)) { - return new InvalidEmail(new ConsecutiveAt(), $this->lexer->current->value); - } - - $result = $this->doParseDomainPart(); - if ($result->isInvalid()) { - return $result; - } - - $end = $this->checkEndOfDomain(); - if ($end->isInvalid()) { - return $end; - } - - $this->lexer->stopRecording(); - $this->domainPart = $this->lexer->getAccumulatedValues(); - - $length = strlen($this->domainPart); - if ($length > self::DOMAIN_MAX_LENGTH) { - return new InvalidEmail(new DomainTooLong(), $this->lexer->current->value); - } - - return new ValidEmail(); - } - - private function checkEndOfDomain(): Result - { - $prev = $this->lexer->getPrevious(); - if ($prev->isA(EmailLexer::S_DOT)) { - return new InvalidEmail(new DotAtEnd(), $this->lexer->current->value); - } - if ($prev->isA(EmailLexer::S_HYPHEN)) { - return new InvalidEmail(new DomainHyphened('Hypen found at the end of the domain'), $prev->value); - } - - if ($this->lexer->current->isA(EmailLexer::S_SP)) { - return new InvalidEmail(new CRLFAtTheEnd(), $prev->value); - } - return new ValidEmail(); - } - - private function performDomainStartChecks(): Result - { - $invalidTokens = $this->checkInvalidTokensAfterAT(); - if ($invalidTokens->isInvalid()) { - return $invalidTokens; - } - - $missingDomain = $this->checkEmptyDomain(); - if ($missingDomain->isInvalid()) { - return $missingDomain; - } - - if ($this->lexer->current->isA(EmailLexer::S_OPENPARENTHESIS)) { - $this->warnings[DeprecatedComment::CODE] = new DeprecatedComment(); - } - return new ValidEmail(); - } - - private function checkEmptyDomain(): Result - { - $thereIsNoDomain = $this->lexer->current->isA(EmailLexer::S_EMPTY) || - ($this->lexer->current->isA(EmailLexer::S_SP) && - !$this->lexer->isNextToken(EmailLexer::GENERIC)); - - if ($thereIsNoDomain) { - return new InvalidEmail(new NoDomainPart(), $this->lexer->current->value); - } - - return new ValidEmail(); - } - - private function checkInvalidTokensAfterAT(): Result - { - if ($this->lexer->current->isA(EmailLexer::S_DOT)) { - return new InvalidEmail(new DotAtStart(), $this->lexer->current->value); - } - if ($this->lexer->current->isA(EmailLexer::S_HYPHEN)) { - return new InvalidEmail(new DomainHyphened('After AT'), $this->lexer->current->value); - } - return new ValidEmail(); - } - - protected function parseComments(): Result - { - $commentParser = new Comment($this->lexer, new DomainComment()); - $result = $commentParser->parse(); - $this->warnings = [...$this->warnings, ...$commentParser->getWarnings()]; - - return $result; - } - - protected function doParseDomainPart(): Result - { - $tldMissing = true; - $hasComments = false; - $domain = ''; - do { - $prev = $this->lexer->getPrevious(); - - $notAllowedChars = $this->checkNotAllowedChars($this->lexer->current); - if ($notAllowedChars->isInvalid()) { - return $notAllowedChars; - } - - if ( - $this->lexer->current->isA(EmailLexer::S_OPENPARENTHESIS) || - $this->lexer->current->isA(EmailLexer::S_CLOSEPARENTHESIS) - ) { - $hasComments = true; - $commentsResult = $this->parseComments(); - - //Invalid comment parsing - if ($commentsResult->isInvalid()) { - return $commentsResult; - } - } - - $dotsResult = $this->checkConsecutiveDots(); - if ($dotsResult->isInvalid()) { - return $dotsResult; - } - - if ($this->lexer->current->isA(EmailLexer::S_OPENBRACKET)) { - $literalResult = $this->parseDomainLiteral(); - - $this->addTLDWarnings($tldMissing); - return $literalResult; - } - - $labelCheck = $this->checkLabelLength(); - if ($labelCheck->isInvalid()) { - return $labelCheck; - } - - $FwsResult = $this->parseFWS(); - if ($FwsResult->isInvalid()) { - return $FwsResult; - } - - $domain .= $this->lexer->current->value; - - if ($this->lexer->current->isA(EmailLexer::S_DOT) && $this->lexer->isNextToken(EmailLexer::GENERIC)) { - $tldMissing = false; - } - - $exceptionsResult = $this->checkDomainPartExceptions($prev, $hasComments); - if ($exceptionsResult->isInvalid()) { - return $exceptionsResult; - } - $this->lexer->moveNext(); - } while (!$this->lexer->current->isA(EmailLexer::S_EMPTY)); - - $labelCheck = $this->checkLabelLength(true); - if ($labelCheck->isInvalid()) { - return $labelCheck; - } - $this->addTLDWarnings($tldMissing); - - $this->domainPart = $domain; - return new ValidEmail(); - } - - /** - * @param Token $token - * - * @return Result - */ - private function checkNotAllowedChars(Token $token): Result - { - $notAllowed = [EmailLexer::S_BACKSLASH => true, EmailLexer::S_SLASH => true]; - if (isset($notAllowed[$token->type])) { - return new InvalidEmail(new CharNotAllowed(), $token->value); - } - return new ValidEmail(); - } - - /** - * @return Result - */ - protected function parseDomainLiteral(): Result - { - try { - $this->lexer->find(EmailLexer::S_CLOSEBRACKET); - } catch (\RuntimeException $e) { - return new InvalidEmail(new ExpectingDomainLiteralClose(), $this->lexer->current->value); - } - - $domainLiteralParser = new DomainLiteralParser($this->lexer); - $result = $domainLiteralParser->parse(); - $this->warnings = [...$this->warnings, ...$domainLiteralParser->getWarnings()]; - return $result; - } - - /** - * @param Token $prev - * @param bool $hasComments - * - * @return Result - */ - protected function checkDomainPartExceptions(Token $prev, bool $hasComments): Result - { - if ($this->lexer->current->isA(EmailLexer::S_OPENBRACKET) && $prev->type !== EmailLexer::S_AT) { - return new InvalidEmail(new ExpectingATEXT('OPENBRACKET not after AT'), $this->lexer->current->value); - } - - if ($this->lexer->current->isA(EmailLexer::S_HYPHEN) && $this->lexer->isNextToken(EmailLexer::S_DOT)) { - return new InvalidEmail(new DomainHyphened('Hypen found near DOT'), $this->lexer->current->value); - } - - if ( - $this->lexer->current->isA(EmailLexer::S_BACKSLASH) - && $this->lexer->isNextToken(EmailLexer::GENERIC) - ) { - return new InvalidEmail(new ExpectingATEXT('Escaping following "ATOM"'), $this->lexer->current->value); - } - - return $this->validateTokens($hasComments); - } - - protected function validateTokens(bool $hasComments): Result - { - $validDomainTokens = array( - EmailLexer::GENERIC => true, - EmailLexer::S_HYPHEN => true, - EmailLexer::S_DOT => true, - ); - - if ($hasComments) { - $validDomainTokens[EmailLexer::S_OPENPARENTHESIS] = true; - $validDomainTokens[EmailLexer::S_CLOSEPARENTHESIS] = true; - } - - if (!isset($validDomainTokens[$this->lexer->current->type])) { - return new InvalidEmail(new ExpectingATEXT('Invalid token in domain: ' . $this->lexer->current->value), $this->lexer->current->value); - } - - return new ValidEmail(); - } - - private function checkLabelLength(bool $isEndOfDomain = false): Result - { - if ($this->lexer->current->isA(EmailLexer::S_DOT) || $isEndOfDomain) { - if ($this->isLabelTooLong($this->label)) { - return new InvalidEmail(new LabelTooLong(), $this->lexer->current->value); - } - $this->label = ''; - } - $this->label .= $this->lexer->current->value; - return new ValidEmail(); - } - - - private function isLabelTooLong(string $label): bool - { - if (preg_match('/[^\x00-\x7F]/', $label)) { - idn_to_ascii($label, IDNA_DEFAULT, INTL_IDNA_VARIANT_UTS46, $idnaInfo); - return (bool) ($idnaInfo['errors'] & IDNA_ERROR_LABEL_TOO_LONG); - } - return strlen($label) > self::LABEL_MAX_LENGTH; - } - - private function addTLDWarnings(bool $isTLDMissing): void - { - if ($isTLDMissing) { - $this->warnings[TLD::CODE] = new TLD(); - } - } - - public function domainPart(): string - { - return $this->domainPart; - } -} diff --git a/vendor/egulias/email-validator/src/Parser/DoubleQuote.php b/vendor/egulias/email-validator/src/Parser/DoubleQuote.php deleted file mode 100644 index b5335d30..00000000 --- a/vendor/egulias/email-validator/src/Parser/DoubleQuote.php +++ /dev/null @@ -1,91 +0,0 @@ -checkDQUOTE(); - if ($validQuotedString->isInvalid()) { - return $validQuotedString; - } - - $special = [ - EmailLexer::S_CR => true, - EmailLexer::S_HTAB => true, - EmailLexer::S_LF => true - ]; - - $invalid = [ - EmailLexer::C_NUL => true, - EmailLexer::S_HTAB => true, - EmailLexer::S_CR => true, - EmailLexer::S_LF => true - ]; - - $setSpecialsWarning = true; - - $this->lexer->moveNext(); - - while (!$this->lexer->current->isA(EmailLexer::S_DQUOTE) && !$this->lexer->current->isA(EmailLexer::S_EMPTY)) { - if (isset($special[$this->lexer->current->type]) && $setSpecialsWarning) { - $this->warnings[CFWSWithFWS::CODE] = new CFWSWithFWS(); - $setSpecialsWarning = false; - } - if ($this->lexer->current->isA(EmailLexer::S_BACKSLASH) && $this->lexer->isNextToken(EmailLexer::S_DQUOTE)) { - $this->lexer->moveNext(); - } - - $this->lexer->moveNext(); - - if (!$this->escaped() && isset($invalid[$this->lexer->current->type])) { - return new InvalidEmail(new ExpectingATEXT("Expecting ATEXT between DQUOTE"), $this->lexer->current->value); - } - } - - $prev = $this->lexer->getPrevious(); - - if ($prev->isA(EmailLexer::S_BACKSLASH)) { - $validQuotedString = $this->checkDQUOTE(); - if ($validQuotedString->isInvalid()) { - return $validQuotedString; - } - } - - if (!$this->lexer->isNextToken(EmailLexer::S_AT) && !$prev->isA(EmailLexer::S_BACKSLASH)) { - return new InvalidEmail(new ExpectingATEXT("Expecting ATEXT between DQUOTE"), $this->lexer->current->value); - } - - return new ValidEmail(); - } - - protected function checkDQUOTE(): Result - { - $previous = $this->lexer->getPrevious(); - - if ($this->lexer->isNextToken(EmailLexer::GENERIC) && $previous->isA(EmailLexer::GENERIC)) { - $description = 'https://tools.ietf.org/html/rfc5322#section-3.2.4 - quoted string should be a unit'; - return new InvalidEmail(new ExpectingATEXT($description), $this->lexer->current->value); - } - - try { - $this->lexer->find(EmailLexer::S_DQUOTE); - } catch (\Exception $e) { - return new InvalidEmail(new UnclosedQuotedString(), $this->lexer->current->value); - } - $this->warnings[QuotedString::CODE] = new QuotedString($previous->value, $this->lexer->current->value); - - return new ValidEmail(); - } -} diff --git a/vendor/egulias/email-validator/src/Parser/FoldingWhiteSpace.php b/vendor/egulias/email-validator/src/Parser/FoldingWhiteSpace.php deleted file mode 100644 index 348a7af4..00000000 --- a/vendor/egulias/email-validator/src/Parser/FoldingWhiteSpace.php +++ /dev/null @@ -1,87 +0,0 @@ -isFWS()) { - return new ValidEmail(); - } - - $previous = $this->lexer->getPrevious(); - - $resultCRLF = $this->checkCRLFInFWS(); - if ($resultCRLF->isInvalid()) { - return $resultCRLF; - } - - if ($this->lexer->current->isA(EmailLexer::S_CR)) { - return new InvalidEmail(new CRNoLF(), $this->lexer->current->value); - } - - if ($this->lexer->isNextToken(EmailLexer::GENERIC) && !$previous->isA(EmailLexer::S_AT)) { - return new InvalidEmail(new AtextAfterCFWS(), $this->lexer->current->value); - } - - if ($this->lexer->current->isA(EmailLexer::S_LF) || $this->lexer->current->isA(EmailLexer::C_NUL)) { - return new InvalidEmail(new ExpectingCTEXT(), $this->lexer->current->value); - } - - if ($this->lexer->isNextToken(EmailLexer::S_AT) || $previous->isA(EmailLexer::S_AT)) { - $this->warnings[CFWSNearAt::CODE] = new CFWSNearAt(); - } else { - $this->warnings[CFWSWithFWS::CODE] = new CFWSWithFWS(); - } - - return new ValidEmail(); - } - - protected function checkCRLFInFWS(): Result - { - if (!$this->lexer->current->isA(EmailLexer::CRLF)) { - return new ValidEmail(); - } - - if (!$this->lexer->isNextTokenAny(array(EmailLexer::S_SP, EmailLexer::S_HTAB))) { - return new InvalidEmail(new CRLFX2(), $this->lexer->current->value); - } - - //this has no coverage. Condition is repeated from above one - if (!$this->lexer->isNextTokenAny(array(EmailLexer::S_SP, EmailLexer::S_HTAB))) { - return new InvalidEmail(new CRLFAtTheEnd(), $this->lexer->current->value); - } - - return new ValidEmail(); - } - - protected function isFWS(): bool - { - if ($this->escaped()) { - return false; - } - - return in_array($this->lexer->current->type, self::FWS_TYPES); - } -} diff --git a/vendor/egulias/email-validator/src/Parser/IDLeftPart.php b/vendor/egulias/email-validator/src/Parser/IDLeftPart.php deleted file mode 100644 index bedcf7b2..00000000 --- a/vendor/egulias/email-validator/src/Parser/IDLeftPart.php +++ /dev/null @@ -1,15 +0,0 @@ -lexer->current->value); - } -} diff --git a/vendor/egulias/email-validator/src/Parser/IDRightPart.php b/vendor/egulias/email-validator/src/Parser/IDRightPart.php deleted file mode 100644 index d2fc1d74..00000000 --- a/vendor/egulias/email-validator/src/Parser/IDRightPart.php +++ /dev/null @@ -1,29 +0,0 @@ - true, - EmailLexer::S_SQUOTE => true, - EmailLexer::S_BACKTICK => true, - EmailLexer::S_SEMICOLON => true, - EmailLexer::S_GREATERTHAN => true, - EmailLexer::S_LOWERTHAN => true, - ]; - - if (isset($invalidDomainTokens[$this->lexer->current->type])) { - return new InvalidEmail(new ExpectingATEXT('Invalid token in domain: ' . $this->lexer->current->value), $this->lexer->current->value); - } - return new ValidEmail(); - } -} diff --git a/vendor/egulias/email-validator/src/Parser/LocalPart.php b/vendor/egulias/email-validator/src/Parser/LocalPart.php deleted file mode 100644 index 5ed29d60..00000000 --- a/vendor/egulias/email-validator/src/Parser/LocalPart.php +++ /dev/null @@ -1,162 +0,0 @@ - EmailLexer::S_COMMA, - EmailLexer::S_CLOSEBRACKET => EmailLexer::S_CLOSEBRACKET, - EmailLexer::S_OPENBRACKET => EmailLexer::S_OPENBRACKET, - EmailLexer::S_GREATERTHAN => EmailLexer::S_GREATERTHAN, - EmailLexer::S_LOWERTHAN => EmailLexer::S_LOWERTHAN, - EmailLexer::S_COLON => EmailLexer::S_COLON, - EmailLexer::S_SEMICOLON => EmailLexer::S_SEMICOLON, - EmailLexer::INVALID => EmailLexer::INVALID - ]; - - /** - * @var string - */ - private $localPart = ''; - - - public function parse(): Result - { - $this->lexer->startRecording(); - - while (!$this->lexer->current->isA(EmailLexer::S_AT) && !$this->lexer->current->isA(EmailLexer::S_EMPTY)) { - if ($this->hasDotAtStart()) { - return new InvalidEmail(new DotAtStart(), $this->lexer->current->value); - } - - if ($this->lexer->current->isA(EmailLexer::S_DQUOTE)) { - $dquoteParsingResult = $this->parseDoubleQuote(); - - //Invalid double quote parsing - if ($dquoteParsingResult->isInvalid()) { - return $dquoteParsingResult; - } - } - - if ( - $this->lexer->current->isA(EmailLexer::S_OPENPARENTHESIS) || - $this->lexer->current->isA(EmailLexer::S_CLOSEPARENTHESIS) - ) { - $commentsResult = $this->parseComments(); - - //Invalid comment parsing - if ($commentsResult->isInvalid()) { - return $commentsResult; - } - } - - if ($this->lexer->current->isA(EmailLexer::S_DOT) && $this->lexer->isNextToken(EmailLexer::S_DOT)) { - return new InvalidEmail(new ConsecutiveDot(), $this->lexer->current->value); - } - - if ( - $this->lexer->current->isA(EmailLexer::S_DOT) && - $this->lexer->isNextToken(EmailLexer::S_AT) - ) { - return new InvalidEmail(new DotAtEnd(), $this->lexer->current->value); - } - - $resultEscaping = $this->validateEscaping(); - if ($resultEscaping->isInvalid()) { - return $resultEscaping; - } - - $resultToken = $this->validateTokens(false); - if ($resultToken->isInvalid()) { - return $resultToken; - } - - $resultFWS = $this->parseLocalFWS(); - if ($resultFWS->isInvalid()) { - return $resultFWS; - } - - $this->lexer->moveNext(); - } - - $this->lexer->stopRecording(); - $this->localPart = rtrim($this->lexer->getAccumulatedValues(), '@'); - if (strlen($this->localPart) > LocalTooLong::LOCAL_PART_LENGTH) { - $this->warnings[LocalTooLong::CODE] = new LocalTooLong(); - } - - return new ValidEmail(); - } - - protected function validateTokens(bool $hasComments): Result - { - if (isset(self::INVALID_TOKENS[$this->lexer->current->type])) { - return new InvalidEmail(new ExpectingATEXT('Invalid token found'), $this->lexer->current->value); - } - return new ValidEmail(); - } - - public function localPart(): string - { - return $this->localPart; - } - - private function parseLocalFWS(): Result - { - $foldingWS = new FoldingWhiteSpace($this->lexer); - $resultFWS = $foldingWS->parse(); - if ($resultFWS->isValid()) { - $this->warnings = [...$this->warnings, ...$foldingWS->getWarnings()]; - } - return $resultFWS; - } - - private function hasDotAtStart(): bool - { - return $this->lexer->current->isA(EmailLexer::S_DOT) && $this->lexer->getPrevious()->isA(EmailLexer::S_EMPTY); - } - - private function parseDoubleQuote(): Result - { - $dquoteParser = new DoubleQuote($this->lexer); - $parseAgain = $dquoteParser->parse(); - $this->warnings = [...$this->warnings, ...$dquoteParser->getWarnings()]; - - return $parseAgain; - } - - protected function parseComments(): Result - { - $commentParser = new Comment($this->lexer, new LocalComment()); - $result = $commentParser->parse(); - $this->warnings = [...$this->warnings, ...$commentParser->getWarnings()]; - - return $result; - } - - private function validateEscaping(): Result - { - //Backslash found - if (!$this->lexer->current->isA(EmailLexer::S_BACKSLASH)) { - return new ValidEmail(); - } - - if ($this->lexer->isNextToken(EmailLexer::GENERIC)) { - return new InvalidEmail(new ExpectingATEXT('Found ATOM after escaping'), $this->lexer->current->value); - } - - return new ValidEmail(); - } -} diff --git a/vendor/egulias/email-validator/src/Parser/PartParser.php b/vendor/egulias/email-validator/src/Parser/PartParser.php deleted file mode 100644 index 53afb257..00000000 --- a/vendor/egulias/email-validator/src/Parser/PartParser.php +++ /dev/null @@ -1,63 +0,0 @@ -lexer = $lexer; - } - - abstract public function parse(): Result; - - /** - * @return Warning[] - */ - public function getWarnings() - { - return $this->warnings; - } - - protected function parseFWS(): Result - { - $foldingWS = new FoldingWhiteSpace($this->lexer); - $resultFWS = $foldingWS->parse(); - $this->warnings = [...$this->warnings, ...$foldingWS->getWarnings()]; - return $resultFWS; - } - - protected function checkConsecutiveDots(): Result - { - if ($this->lexer->current->isA(EmailLexer::S_DOT) && $this->lexer->isNextToken(EmailLexer::S_DOT)) { - return new InvalidEmail(new ConsecutiveDot(), $this->lexer->current->value); - } - - return new ValidEmail(); - } - - protected function escaped(): bool - { - $previous = $this->lexer->getPrevious(); - - return $previous->isA(EmailLexer::S_BACKSLASH) - && !$this->lexer->current->isA(EmailLexer::GENERIC); - } -} diff --git a/vendor/egulias/email-validator/src/Result/InvalidEmail.php b/vendor/egulias/email-validator/src/Result/InvalidEmail.php deleted file mode 100644 index 82699acc..00000000 --- a/vendor/egulias/email-validator/src/Result/InvalidEmail.php +++ /dev/null @@ -1,49 +0,0 @@ -token = $token; - $this->reason = $reason; - } - - public function isValid(): bool - { - return false; - } - - public function isInvalid(): bool - { - return true; - } - - public function description(): string - { - return $this->reason->description() . " in char " . $this->token; - } - - public function code(): int - { - return $this->reason->code(); - } - - public function reason(): Reason - { - return $this->reason; - } -} diff --git a/vendor/egulias/email-validator/src/Result/MultipleErrors.php b/vendor/egulias/email-validator/src/Result/MultipleErrors.php deleted file mode 100644 index 5fa85afc..00000000 --- a/vendor/egulias/email-validator/src/Result/MultipleErrors.php +++ /dev/null @@ -1,56 +0,0 @@ -reasons[$reason->code()] = $reason; - } - - /** - * @return Reason[] - */ - public function getReasons() : array - { - return $this->reasons; - } - - public function reason() : Reason - { - return 0 !== count($this->reasons) - ? current($this->reasons) - : new EmptyReason(); - } - - public function description() : string - { - $description = ''; - foreach($this->reasons as $reason) { - $description .= $reason->description() . PHP_EOL; - } - - return $description; - } - - public function code() : int - { - return 0; - } -} diff --git a/vendor/egulias/email-validator/src/Result/Reason/AtextAfterCFWS.php b/vendor/egulias/email-validator/src/Result/Reason/AtextAfterCFWS.php deleted file mode 100644 index 96e22842..00000000 --- a/vendor/egulias/email-validator/src/Result/Reason/AtextAfterCFWS.php +++ /dev/null @@ -1,16 +0,0 @@ -detailedDescription = $details; - } -} diff --git a/vendor/egulias/email-validator/src/Result/Reason/DomainAcceptsNoMail.php b/vendor/egulias/email-validator/src/Result/Reason/DomainAcceptsNoMail.php deleted file mode 100644 index bcaefb68..00000000 --- a/vendor/egulias/email-validator/src/Result/Reason/DomainAcceptsNoMail.php +++ /dev/null @@ -1,16 +0,0 @@ -exception = $exception; - - } - public function code() : int - { - return 999; - } - - public function description() : string - { - return $this->exception->getMessage(); - } -} diff --git a/vendor/egulias/email-validator/src/Result/Reason/ExpectingATEXT.php b/vendor/egulias/email-validator/src/Result/Reason/ExpectingATEXT.php deleted file mode 100644 index 07ea8d23..00000000 --- a/vendor/egulias/email-validator/src/Result/Reason/ExpectingATEXT.php +++ /dev/null @@ -1,16 +0,0 @@ -detailedDescription; - } -} diff --git a/vendor/egulias/email-validator/src/Result/Reason/ExpectingCTEXT.php b/vendor/egulias/email-validator/src/Result/Reason/ExpectingCTEXT.php deleted file mode 100644 index 64f5f7c3..00000000 --- a/vendor/egulias/email-validator/src/Result/Reason/ExpectingCTEXT.php +++ /dev/null @@ -1,16 +0,0 @@ -element = $element; - } - - public function code() : int - { - return 201; - } - - public function description() : string - { - return 'Unusual element found, wourld render invalid in majority of cases. Element found: ' . $this->element; - } -} diff --git a/vendor/egulias/email-validator/src/Result/Result.php b/vendor/egulias/email-validator/src/Result/Result.php deleted file mode 100644 index fd13e6c6..00000000 --- a/vendor/egulias/email-validator/src/Result/Result.php +++ /dev/null @@ -1,27 +0,0 @@ -reason = new ReasonSpoofEmail(); - parent::__construct($this->reason, ''); - } -} diff --git a/vendor/egulias/email-validator/src/Result/ValidEmail.php b/vendor/egulias/email-validator/src/Result/ValidEmail.php deleted file mode 100644 index fdc882fa..00000000 --- a/vendor/egulias/email-validator/src/Result/ValidEmail.php +++ /dev/null @@ -1,27 +0,0 @@ -dnsGetRecord = $dnsGetRecord; - } - - public function isValid(string $email, EmailLexer $emailLexer): bool - { - // use the input to check DNS if we cannot extract something similar to a domain - $host = $email; - - // Arguable pattern to extract the domain. Not aiming to validate the domain nor the email - if (false !== $lastAtPos = strrpos($email, '@')) { - $host = substr($email, $lastAtPos + 1); - } - - // Get the domain parts - $hostParts = explode('.', $host); - - $isLocalDomain = count($hostParts) <= 1; - $isReservedTopLevel = in_array($hostParts[(count($hostParts) - 1)], self::RESERVED_DNS_TOP_LEVEL_NAMES, true); - - // Exclude reserved top level DNS names - if ($isLocalDomain || $isReservedTopLevel) { - $this->error = new InvalidEmail(new LocalOrReservedDomain(), $host); - return false; - } - - return $this->checkDns($host); - } - - public function getError(): ?InvalidEmail - { - return $this->error; - } - - /** - * @return Warning[] - */ - public function getWarnings(): array - { - return $this->warnings; - } - - /** - * @param string $host - * - * @return bool - */ - protected function checkDns($host) - { - $variant = INTL_IDNA_VARIANT_UTS46; - - $host = rtrim(idn_to_ascii($host, IDNA_DEFAULT, $variant), '.'); - - $hostParts = explode('.', $host); - $host = array_pop($hostParts); - - while (count($hostParts) > 0) { - $host = array_pop($hostParts) . '.' . $host; - - if ($this->validateDnsRecords($host)) { - return true; - } - } - - return false; - } - - - /** - * Validate the DNS records for given host. - * - * @param string $host A set of DNS records in the format returned by dns_get_record. - * - * @return bool True on success. - */ - private function validateDnsRecords($host): bool - { - $dnsRecordsResult = $this->dnsGetRecord->getRecords($host, DNS_A + DNS_MX); - - if ($dnsRecordsResult->withError()) { - $this->error = new InvalidEmail(new UnableToGetDNSRecord(), ''); - return false; - } - - $dnsRecords = $dnsRecordsResult->getRecords(); - - // Combined check for A+MX+AAAA can fail with SERVFAIL, even in the presence of valid A/MX records - $aaaaRecordsResult = $this->dnsGetRecord->getRecords($host, DNS_AAAA); - - if (! $aaaaRecordsResult->withError()) { - $dnsRecords = array_merge($dnsRecords, $aaaaRecordsResult->getRecords()); - } - - // No MX, A or AAAA DNS records - if ($dnsRecords === []) { - $this->error = new InvalidEmail(new ReasonNoDNSRecord(), ''); - return false; - } - - // For each DNS record - foreach ($dnsRecords as $dnsRecord) { - if (!$this->validateMXRecord($dnsRecord)) { - // No MX records (fallback to A or AAAA records) - if (empty($this->mxRecords)) { - $this->warnings[NoDNSMXRecord::CODE] = new NoDNSMXRecord(); - } - return false; - } - } - return true; - } - - /** - * Validate an MX record - * - * @param array $dnsRecord Given DNS record. - * - * @return bool True if valid. - */ - private function validateMxRecord($dnsRecord): bool - { - if (!isset($dnsRecord['type'])) { - $this->error = new InvalidEmail(new ReasonNoDNSRecord(), ''); - return false; - } - - if ($dnsRecord['type'] !== 'MX') { - return true; - } - - // "Null MX" record indicates the domain accepts no mail (https://tools.ietf.org/html/rfc7505) - if (empty($dnsRecord['target']) || $dnsRecord['target'] === '.') { - $this->error = new InvalidEmail(new DomainAcceptsNoMail(), ""); - return false; - } - - $this->mxRecords[] = $dnsRecord; - - return true; - } -} diff --git a/vendor/egulias/email-validator/src/Validation/DNSGetRecordWrapper.php b/vendor/egulias/email-validator/src/Validation/DNSGetRecordWrapper.php deleted file mode 100644 index 25e2fa06..00000000 --- a/vendor/egulias/email-validator/src/Validation/DNSGetRecordWrapper.php +++ /dev/null @@ -1,31 +0,0 @@ -records; - } - - public function withError(): bool - { - return $this->error; - } -} diff --git a/vendor/egulias/email-validator/src/Validation/EmailValidation.php b/vendor/egulias/email-validator/src/Validation/EmailValidation.php deleted file mode 100644 index 1bcc0a70..00000000 --- a/vendor/egulias/email-validator/src/Validation/EmailValidation.php +++ /dev/null @@ -1,34 +0,0 @@ -setChecks(Spoofchecker::SINGLE_SCRIPT); - - if ($checker->isSuspicious($email)) { - $this->error = new SpoofEmail(); - } - - return $this->error === null; - } - - public function getError() : ?InvalidEmail - { - return $this->error; - } - - public function getWarnings() : array - { - return []; - } -} diff --git a/vendor/egulias/email-validator/src/Validation/MessageIDValidation.php b/vendor/egulias/email-validator/src/Validation/MessageIDValidation.php deleted file mode 100644 index 97d1ea7a..00000000 --- a/vendor/egulias/email-validator/src/Validation/MessageIDValidation.php +++ /dev/null @@ -1,55 +0,0 @@ -parse($email); - $this->warnings = $parser->getWarnings(); - if ($result->isInvalid()) { - /** @psalm-suppress PropertyTypeCoercion */ - $this->error = $result; - return false; - } - } catch (\Exception $invalid) { - $this->error = new InvalidEmail(new ExceptionFound($invalid), ''); - return false; - } - - return true; - } - - /** - * @return Warning[] - */ - public function getWarnings(): array - { - return $this->warnings; - } - - public function getError(): ?InvalidEmail - { - return $this->error; - } -} diff --git a/vendor/egulias/email-validator/src/Validation/MultipleValidationWithAnd.php b/vendor/egulias/email-validator/src/Validation/MultipleValidationWithAnd.php deleted file mode 100644 index c908053f..00000000 --- a/vendor/egulias/email-validator/src/Validation/MultipleValidationWithAnd.php +++ /dev/null @@ -1,105 +0,0 @@ -validations as $validation) { - $emailLexer->reset(); - $validationResult = $validation->isValid($email, $emailLexer); - $result = $result && $validationResult; - $this->warnings = [...$this->warnings, ...$validation->getWarnings()]; - if (!$validationResult) { - $this->processError($validation); - } - - if ($this->shouldStop($result)) { - break; - } - } - - return $result; - } - - private function initErrorStorage(): void - { - if (null === $this->error) { - $this->error = new MultipleErrors(); - } - } - - private function processError(EmailValidation $validation): void - { - if (null !== $validation->getError()) { - $this->initErrorStorage(); - /** @psalm-suppress PossiblyNullReference */ - $this->error->addReason($validation->getError()->reason()); - } - } - - private function shouldStop(bool $result): bool - { - return !$result && $this->mode === self::STOP_ON_ERROR; - } - - /** - * Returns the validation errors. - */ - public function getError(): ?InvalidEmail - { - return $this->error; - } - - /** - * @return Warning[] - */ - public function getWarnings(): array - { - return $this->warnings; - } -} diff --git a/vendor/egulias/email-validator/src/Validation/NoRFCWarningsValidation.php b/vendor/egulias/email-validator/src/Validation/NoRFCWarningsValidation.php deleted file mode 100644 index 06885ed7..00000000 --- a/vendor/egulias/email-validator/src/Validation/NoRFCWarningsValidation.php +++ /dev/null @@ -1,41 +0,0 @@ -getWarnings())) { - return true; - } - - $this->error = new InvalidEmail(new RFCWarnings(), ''); - - return false; - } - - /** - * {@inheritdoc} - */ - public function getError() : ?InvalidEmail - { - return $this->error ?: parent::getError(); - } -} diff --git a/vendor/egulias/email-validator/src/Validation/RFCValidation.php b/vendor/egulias/email-validator/src/Validation/RFCValidation.php deleted file mode 100644 index f59cbfc8..00000000 --- a/vendor/egulias/email-validator/src/Validation/RFCValidation.php +++ /dev/null @@ -1,54 +0,0 @@ -parse($email); - $this->warnings = $parser->getWarnings(); - if ($result->isInvalid()) { - /** @psalm-suppress PropertyTypeCoercion */ - $this->error = $result; - return false; - } - } catch (\Exception $invalid) { - $this->error = new InvalidEmail(new ExceptionFound($invalid), ''); - return false; - } - - return true; - } - - public function getError(): ?InvalidEmail - { - return $this->error; - } - - /** - * @return Warning[] - */ - public function getWarnings(): array - { - return $this->warnings; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/AddressLiteral.php b/vendor/egulias/email-validator/src/Warning/AddressLiteral.php deleted file mode 100644 index 474ff0e7..00000000 --- a/vendor/egulias/email-validator/src/Warning/AddressLiteral.php +++ /dev/null @@ -1,14 +0,0 @@ -message = 'Address literal in domain part'; - $this->rfcNumber = 5321; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/CFWSNearAt.php b/vendor/egulias/email-validator/src/Warning/CFWSNearAt.php deleted file mode 100644 index 8bac12b1..00000000 --- a/vendor/egulias/email-validator/src/Warning/CFWSNearAt.php +++ /dev/null @@ -1,13 +0,0 @@ -message = "Deprecated folding white space near @"; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/CFWSWithFWS.php b/vendor/egulias/email-validator/src/Warning/CFWSWithFWS.php deleted file mode 100644 index ba57601c..00000000 --- a/vendor/egulias/email-validator/src/Warning/CFWSWithFWS.php +++ /dev/null @@ -1,13 +0,0 @@ -message = 'Folding whites space followed by folding white space'; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/Comment.php b/vendor/egulias/email-validator/src/Warning/Comment.php deleted file mode 100644 index 6508295e..00000000 --- a/vendor/egulias/email-validator/src/Warning/Comment.php +++ /dev/null @@ -1,13 +0,0 @@ -message = "Comments found in this email"; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/DeprecatedComment.php b/vendor/egulias/email-validator/src/Warning/DeprecatedComment.php deleted file mode 100644 index a2578076..00000000 --- a/vendor/egulias/email-validator/src/Warning/DeprecatedComment.php +++ /dev/null @@ -1,13 +0,0 @@ -message = 'Deprecated comments'; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/DomainLiteral.php b/vendor/egulias/email-validator/src/Warning/DomainLiteral.php deleted file mode 100644 index 034388c4..00000000 --- a/vendor/egulias/email-validator/src/Warning/DomainLiteral.php +++ /dev/null @@ -1,14 +0,0 @@ -message = 'Domain Literal'; - $this->rfcNumber = 5322; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/EmailTooLong.php b/vendor/egulias/email-validator/src/Warning/EmailTooLong.php deleted file mode 100644 index d25ad123..00000000 --- a/vendor/egulias/email-validator/src/Warning/EmailTooLong.php +++ /dev/null @@ -1,15 +0,0 @@ -message = 'Email is too long, exceeds ' . EmailParser::EMAIL_MAX_LENGTH; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/IPV6BadChar.php b/vendor/egulias/email-validator/src/Warning/IPV6BadChar.php deleted file mode 100644 index 3ecd5bcc..00000000 --- a/vendor/egulias/email-validator/src/Warning/IPV6BadChar.php +++ /dev/null @@ -1,14 +0,0 @@ -message = 'Bad char in IPV6 domain literal'; - $this->rfcNumber = 5322; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/IPV6ColonEnd.php b/vendor/egulias/email-validator/src/Warning/IPV6ColonEnd.php deleted file mode 100644 index 3f0c2f2d..00000000 --- a/vendor/egulias/email-validator/src/Warning/IPV6ColonEnd.php +++ /dev/null @@ -1,14 +0,0 @@ -message = ':: found at the end of the domain literal'; - $this->rfcNumber = 5322; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/IPV6ColonStart.php b/vendor/egulias/email-validator/src/Warning/IPV6ColonStart.php deleted file mode 100644 index 742fb3bd..00000000 --- a/vendor/egulias/email-validator/src/Warning/IPV6ColonStart.php +++ /dev/null @@ -1,14 +0,0 @@ -message = ':: found at the start of the domain literal'; - $this->rfcNumber = 5322; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/IPV6Deprecated.php b/vendor/egulias/email-validator/src/Warning/IPV6Deprecated.php deleted file mode 100644 index 59c3037a..00000000 --- a/vendor/egulias/email-validator/src/Warning/IPV6Deprecated.php +++ /dev/null @@ -1,14 +0,0 @@ -message = 'Deprecated form of IPV6'; - $this->rfcNumber = 5321; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/IPV6DoubleColon.php b/vendor/egulias/email-validator/src/Warning/IPV6DoubleColon.php deleted file mode 100644 index d4066026..00000000 --- a/vendor/egulias/email-validator/src/Warning/IPV6DoubleColon.php +++ /dev/null @@ -1,14 +0,0 @@ -message = 'Double colon found after IPV6 tag'; - $this->rfcNumber = 5322; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/IPV6GroupCount.php b/vendor/egulias/email-validator/src/Warning/IPV6GroupCount.php deleted file mode 100644 index 551bc3af..00000000 --- a/vendor/egulias/email-validator/src/Warning/IPV6GroupCount.php +++ /dev/null @@ -1,14 +0,0 @@ -message = 'Group count is not IPV6 valid'; - $this->rfcNumber = 5322; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/IPV6MaxGroups.php b/vendor/egulias/email-validator/src/Warning/IPV6MaxGroups.php deleted file mode 100644 index 7f8a410a..00000000 --- a/vendor/egulias/email-validator/src/Warning/IPV6MaxGroups.php +++ /dev/null @@ -1,14 +0,0 @@ -message = 'Reached the maximum number of IPV6 groups allowed'; - $this->rfcNumber = 5321; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/LocalTooLong.php b/vendor/egulias/email-validator/src/Warning/LocalTooLong.php deleted file mode 100644 index b46b874c..00000000 --- a/vendor/egulias/email-validator/src/Warning/LocalTooLong.php +++ /dev/null @@ -1,15 +0,0 @@ -message = 'Local part is too long, exceeds 64 chars (octets)'; - $this->rfcNumber = 5322; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/NoDNSMXRecord.php b/vendor/egulias/email-validator/src/Warning/NoDNSMXRecord.php deleted file mode 100644 index bddb96be..00000000 --- a/vendor/egulias/email-validator/src/Warning/NoDNSMXRecord.php +++ /dev/null @@ -1,14 +0,0 @@ -message = 'No MX DSN record was found for this email'; - $this->rfcNumber = 5321; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/ObsoleteDTEXT.php b/vendor/egulias/email-validator/src/Warning/ObsoleteDTEXT.php deleted file mode 100644 index 412fd499..00000000 --- a/vendor/egulias/email-validator/src/Warning/ObsoleteDTEXT.php +++ /dev/null @@ -1,14 +0,0 @@ -rfcNumber = 5322; - $this->message = 'Obsolete DTEXT in domain literal'; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/QuotedPart.php b/vendor/egulias/email-validator/src/Warning/QuotedPart.php deleted file mode 100644 index c3e017d9..00000000 --- a/vendor/egulias/email-validator/src/Warning/QuotedPart.php +++ /dev/null @@ -1,17 +0,0 @@ -message = "Deprecated Quoted String found between $prevToken and $postToken"; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/QuotedString.php b/vendor/egulias/email-validator/src/Warning/QuotedString.php deleted file mode 100644 index c152ec2e..00000000 --- a/vendor/egulias/email-validator/src/Warning/QuotedString.php +++ /dev/null @@ -1,17 +0,0 @@ -message = "Quoted String found between $prevToken and $postToken"; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/TLD.php b/vendor/egulias/email-validator/src/Warning/TLD.php deleted file mode 100644 index 10cec281..00000000 --- a/vendor/egulias/email-validator/src/Warning/TLD.php +++ /dev/null @@ -1,13 +0,0 @@ -message = "RFC5321, TLD"; - } -} diff --git a/vendor/egulias/email-validator/src/Warning/Warning.php b/vendor/egulias/email-validator/src/Warning/Warning.php deleted file mode 100644 index 7adb3b85..00000000 --- a/vendor/egulias/email-validator/src/Warning/Warning.php +++ /dev/null @@ -1,53 +0,0 @@ -message; - } - - /** - * @return int - */ - public function code() - { - return self::CODE; - } - - /** - * @return int - */ - public function RFCNumber() - { - return $this->rfcNumber; - } - - /** - * @return string - */ - public function __toString(): string - { - return $this->message() . " rfc: " . $this->rfcNumber . "internal code: " . static::CODE; - } -} diff --git a/vendor/filament/actions/.stubs.php b/vendor/filament/actions/.stubs.php deleted file mode 100644 index 73490143..00000000 --- a/vendor/filament/actions/.stubs.php +++ /dev/null @@ -1,65 +0,0 @@ -id(); - $table->timestamp('completed_at')->nullable(); - $table->string('file_disk'); - $table->string('file_name')->nullable(); - $table->string('exporter'); - $table->unsignedInteger('processed_rows')->default(0); - $table->unsignedInteger('total_rows'); - $table->unsignedInteger('successful_rows')->default(0); - $table->foreignId('user_id')->constrained()->cascadeOnDelete(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('exports'); - } -}; diff --git a/vendor/filament/actions/database/migrations/create_failed_import_rows_table.php b/vendor/filament/actions/database/migrations/create_failed_import_rows_table.php deleted file mode 100644 index eae8cb2e..00000000 --- a/vendor/filament/actions/database/migrations/create_failed_import_rows_table.php +++ /dev/null @@ -1,30 +0,0 @@ -id(); - $table->json('data'); - $table->foreignId('import_id')->constrained()->cascadeOnDelete(); - $table->text('validation_error')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('failed_import_rows'); - } -}; diff --git a/vendor/filament/actions/database/migrations/create_imports_table.php b/vendor/filament/actions/database/migrations/create_imports_table.php deleted file mode 100644 index 34c5fc5b..00000000 --- a/vendor/filament/actions/database/migrations/create_imports_table.php +++ /dev/null @@ -1,35 +0,0 @@ -id(); - $table->timestamp('completed_at')->nullable(); - $table->string('file_name'); - $table->string('file_path'); - $table->string('importer'); - $table->unsignedInteger('processed_rows')->default(0); - $table->unsignedInteger('total_rows'); - $table->unsignedInteger('successful_rows')->default(0); - $table->foreignId('user_id')->constrained()->cascadeOnDelete(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - Schema::dropIfExists('imports'); - } -}; diff --git a/vendor/filament/actions/docs/01-installation.md b/vendor/filament/actions/docs/01-installation.md deleted file mode 100644 index 1d124881..00000000 --- a/vendor/filament/actions/docs/01-installation.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -title: Installation ---- - -**The Actions package is pre-installed with the [Panel Builder](/docs/panels).** This guide is for using the Actions package in a custom TALL Stack application (Tailwind, Alpine, Livewire, Laravel). - -## Requirements - -Filament requires the following to run: - -- PHP 8.1+ -- Laravel v10.0+ -- Livewire v3.0+ - -> **Livewire v3 is recently released!**
-> The Livewire team have done a great job in making it stable, but it was a complete rewrite of Livewire v2. You may encounter issues, so we recommend testing your application thoroughly before using Filament v3 in production. - -## Installation - -Require the Actions package using Composer: - -```bash -composer require filament/actions:"^3.2" -W -``` - -## New Laravel projects - -To quickly get started with Filament in a new Laravel project, run the following commands to install [Livewire](https://livewire.laravel.com), [Alpine.js](https://alpinejs.dev), and [Tailwind CSS](https://tailwindcss.com): - -> Since these commands will overwrite existing files in your application, only run this in a new Laravel project! - -```bash -php artisan filament:install --scaffold --actions - -npm install - -npm run dev -``` - -## Existing Laravel projects - -Run the following command to install the Actions package assets: - -```bash -php artisan filament:install --actions -``` - -### Installing Tailwind CSS - -Run the following command to install Tailwind CSS with the Tailwind Forms and Typography plugins: - -```bash -npm install tailwindcss @tailwindcss/forms @tailwindcss/typography postcss postcss-nesting autoprefixer --save-dev -``` - -Create a new `tailwind.config.js` file and add the Filament `preset` *(includes the Filament color scheme and the required Tailwind plugins)*: - -```js -import preset from './vendor/filament/support/tailwind.config.preset' - -export default { - presets: [preset], - content: [ - './app/Filament/**/*.php', - './resources/views/filament/**/*.blade.php', - './vendor/filament/**/*.blade.php', - ], -} -``` - -### Configuring styles - -Add Tailwind's CSS layers to your `resources/css/app.css`: - -```css -@tailwind base; -@tailwind components; -@tailwind utilities; -``` - -Create a `postcss.config.js` file in the root of your project and register Tailwind CSS, PostCSS Nesting and Autoprefixer as plugins: - -```js -export default { - plugins: { - 'tailwindcss/nesting': 'postcss-nesting', - tailwindcss: {}, - autoprefixer: {}, - }, -} -``` - -### Automatically refreshing the browser -You may also want to update your `vite.config.js` file to refresh the page automatically when Livewire components are updated: - -```js -import { defineConfig } from 'vite' -import laravel, { refreshPaths } from 'laravel-vite-plugin' - -export default defineConfig({ - plugins: [ - laravel({ - input: ['resources/css/app.css', 'resources/js/app.js'], - refresh: [ - ...refreshPaths, - 'app/Livewire/**', - ], - }), - ], -}) -``` - -### Compiling assets - -Compile your new CSS and Javascript assets using `npm run dev`. - -### Configuring your layout - -Create a new `resources/views/components/layouts/app.blade.php` layout file for Livewire components: - -```blade - - - - - - - - - - {{ config('app.name') }} - - - - @filamentStyles - @vite('resources/css/app.css') - - - - {{ $slot }} - - @filamentScripts - @vite('resources/js/app.js') - - -``` - -## Publishing configuration - -You can publish the package configuration using the following command (optional): - -```bash -php artisan vendor:publish --tag=filament-config -``` - -## Upgrading - -Filament automatically upgrades to the latest non-breaking version when you run `composer update`. After any updates, all Laravel caches need to be cleared, and frontend assets need to be republished. You can do this all at once using the `filament:upgrade` command, which should have been added to your `composer.json` file when you ran `filament:install` the first time: - -```json -"post-autoload-dump": [ - // ... - "@php artisan filament:upgrade" -], -``` - -Please note that `filament:upgrade` does not actually handle the update process, as Composer does that already. If you're upgrading manually without a `post-autoload-dump` hook, you can run the command yourself: - -```bash -composer update - -php artisan filament:upgrade -``` diff --git a/vendor/filament/actions/docs/02-overview.md b/vendor/filament/actions/docs/02-overview.md deleted file mode 100644 index ce94983a..00000000 --- a/vendor/filament/actions/docs/02-overview.md +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: Overview ---- - -## What is an action? - -"Action" is a word that is used quite a bit within the Laravel community. Traditionally, action PHP classes handle "doing" something in your application's business logic. For instance, logging a user in, sending an email, or creating a new user record in the database. - -In Filament, actions also handle "doing" something in your app. However, they are a bit different from traditional actions. They are designed to be used in the context of a user interface. For instance, you might have a button to delete a client record, which opens a modal to confirm your decision. When the user clicks the "Delete" button in the modal, the client is deleted. This whole workflow is an "action". - -```php -Action::make('delete') - ->requiresConfirmation() - ->action(fn () => $this->client->delete()) -``` - -Actions can also collect extra information from the user. For instance, you might have a button to email a client. When the user clicks the button, a modal opens to collect the email subject and body. When the user clicks the "Send" button in the modal, the email is sent: - -```php -use Filament\Forms\Components\RichEditor; -use Filament\Forms\Components\TextInput; -use Illuminate\Support\Facades\Mail; - -Action::make('sendEmail') - ->form([ - TextInput::make('subject')->required(), - RichEditor::make('body')->required(), - ]) - ->action(function (array $data) { - Mail::to($this->client) - ->send(new GenericEmail( - subject: $data['subject'], - body: $data['body'], - )); - }) -``` - -Usually, actions get executed without redirecting the user away from the page. This is because we extensively use Livewire. However, actions can be much simpler, and don't even need a modal. You can pass a URL to an action, and when the user clicks on the button, they are redirected to that page: - -```php -Action::make('edit') - ->url(fn (): string => route('posts.edit', ['post' => $this->post])) -``` - -The entire look of the action's trigger button and the modal is customizable using fluent PHP methods. We provide a sensible and consistent styling for the UI, but all of this is customizable with CSS. - -## Types of action - -The concept of "actions" is used throughout Filament in many contexts. Some contexts don't support opening modals from actions - they can only open a URL, call a public Livewire method, or dispatch a Livewire event. Additionally, different contexts use different action PHP classes since they provide the developer context-aware data that is appropriate to that use-case. - -### Custom Livewire component actions - -You can add an action to any Livewire component in your app, or even a page in a [panel](../panels/pages). - -These actions use the `Filament\Actions\Action` class. They can open a modal if you choose, or even just a URL. - -If you're looking to add an action to a Livewire component, [visit this page](adding-an-action-to-a-livewire-component) in the docs. If you want to add an action to the header of a page in a panel, [visit this page](../panels/pages#header-actions) instead. - -### Table actions - -Filament's tables also use actions. Actions can be added to the end of any table row, or even in the header of a table. For instance, you may want an action to "create" a new record in the header, and then "edit" and "delete" actions on each row. Additionally, actions can be added to any table column, such that each cell in that column is a trigger for your action. - -These actions use the `Filament\Tables\Actions\Action` class. They can open a modal if you choose, or even just a URL. - -If you're looking to add an action to a table in your app, [visit this page](../tables/actions) in the docs. - -#### Table bulk actions - -Tables also support "bulk actions". These can be used when the user selects rows in the table. Traditionally, when rows are selected, a "bulk actions" button appears in the top left corner of the table. When the user clicks this button, they are presented with a dropdown menu of actions to choose from. Bulk actions may also be added to the header of a table, next to other header actions. In this case, bulk action trigger buttons are disabled until the user selects table rows. - -These actions use the `Filament\Tables\Actions\BulkAction` class. They can open modals if you choose. - -If you're looking to add a bulk action to a table in your app, [visit this page](../tables/actions#bulk-actions) in the docs. - -### Form component actions - -Form components can contain actions. A good use case for actions inside form components would be with a select field, and an action button to "create" a new record. When you click on the button, a modal opens to collect the new record's data. When the modal form is submitted, the new record is created in the database, and the select field is filled with the newly created record. Fortunately, [this case is handled for you out of the box](../forms/fields/select#creating-new-records), but it's a good example of how form component actions can be powerful. - -These actions use the `Filament\Forms\Components\Actions\Action` class. They can open a modal if you choose, or even just a URL. - -If you're looking to add an action to a form component in your app, [visit this page](../forms/actions) in the docs. - -### Infolist component actions - -Infolist components can contain actions. These use the `Filament\Infolists\Components\Actions\Action` class. They can open a modal if you choose, or even just a URL. - -If you're looking to add an action to an infolist component in your app, [visit this page](../infolists/actions) in the docs. - -### Notification actions - -When you [send notifications](../notifications/sending-notifications), you can add actions. These buttons are rendered below the content of the notification. For example, a notification to alert the user that they have a new message should contain an action button that opens the conversation thread. - -These actions use the `Filament\Notifications\Actions\Action` class. They aren't able to open modals, but they can open a URL or dispatch a Livewire event. - -If you're looking to add an action to a notification in your app, [visit this page](../notifications/sending-notifications#adding-actions-to-notifications) in the docs. - -### Global search result actions - -In the Panel Builder, there is a [global search](../panels/resources/global-search) field that allows you to search all resources in your app from one place. When you click on a search result, it leads you to the resource page for that record. However, you may add additional actions below each global search result. For example, you may want both "Edit" and "View" options for a client search result, so the user can quickly edit their profile as well as view it in read-only mode. - -These actions use the `Filament\GlobalSearch\Actions\Action` class. They aren't able to open modals, but they can open a URL or dispatch a Livewire event. - -If you're looking to add an action to a global search result in a panel, [visit this page](../panels/resources/global-search#adding-actions-to-global-search-results) in the docs. - -## Prebuilt actions - -Filament includes several prebuilt actions that you can add to your app. Their aim is to simplify the most common Eloquent-related actions: - -- [Create](prebuilt-actions/create) -- [Edit](prebuilt-actions/edit) -- [View](prebuilt-actions/view) -- [Delete](prebuilt-actions/delete) -- [Replicate](prebuilt-actions/replicate) -- [Force-delete](prebuilt-actions/force-delete) -- [Restore](prebuilt-actions/restore) -- [Import](prebuilt-actions/import) -- [Export](prebuilt-actions/export) - -## Grouping actions - -You may group actions together into a dropdown menu by using an `ActionGroup` object. Groups may contain many actions, or other groups: - -```php -ActionGroup::make([ - Action::make('view'), - Action::make('edit'), - Action::make('delete'), -]) -``` - -To learn about how to group actions, see the [Grouping actions](grouping-actions) page. diff --git a/vendor/filament/actions/docs/03-trigger-button.md b/vendor/filament/actions/docs/03-trigger-button.md deleted file mode 100644 index 2310b3a7..00000000 --- a/vendor/filament/actions/docs/03-trigger-button.md +++ /dev/null @@ -1,243 +0,0 @@ ---- -title: Trigger button ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -All actions have a trigger button. When the user clicks on it, the action is executed - a modal will open, a closure function will be executed, or they will be redirected to a URL. - -This page is about customizing the look of that trigger button. - -## Choosing a trigger style - -Out of the box, action triggers have 4 styles - "button", "link", "icon button", and "badge". - -"Button" triggers have a background color, label, and optionally an [icon](#setting-an-icon). Usually, this is the default button style, but you can use it manually with the `button()` method: - -```php -Action::make('edit') - ->button() -``` - - - -"Link" triggers have no background color. They must have a label and optionally an [icon](#setting-an-icon). They look like a link that you might find embedded within text. You can switch to that style with the `link()` method: - -```php -Action::make('edit') - ->link() -``` - - - -"Icon button" triggers are circular buttons with an [icon](#setting-an-icon) and no label. You can switch to that style with the `iconButton()` method: - -```php -Action::make('edit') - ->icon('heroicon-m-pencil-square') - ->iconButton() -``` - - - -"Badge" triggers have a background color, label, and optionally an [icon](#setting-an-icon). You can use a badge as trigger using the `badge()` method: - -```php -Action::make('edit') - ->badge() -``` - - - -### Using an icon button on mobile devices only - -You may want to use a button style with a label on desktop, but remove the label on mobile. This will transform it into an icon button. You can do this with the `labeledFrom()` method, passing in the responsive [breakpoint](https://tailwindcss.com/docs/responsive-design#overview) at which you want the label to be added to the button: - -```php -Action::make('edit') - ->icon('heroicon-m-pencil-square') - ->button() - ->labeledFrom('md') -``` - -## Setting a label - -By default, the label of the trigger button is generated from its name. You may customize this using the `label()` method: - -```php -Action::make('edit') - ->label('Edit post') - ->url(fn (): string => route('posts.edit', ['post' => $this->post])) -``` - -Optionally, you can have the label automatically translated [using Laravel's localization features](https://laravel.com/docs/localization) with the `translateLabel()` method: - -```php -Action::make('edit') - ->translateLabel() // Equivalent to `label(__('Edit'))` - ->url(fn (): string => route('posts.edit', ['post' => $this->post])) -``` - -## Setting a color - -Buttons may have a color to indicate their significance. It may be either `danger`, `gray`, `info`, `primary`, `success` or `warning`: - -```php -Action::make('delete') - ->color('danger') -``` - - - -## Setting a size - -Buttons come in 3 sizes - `ActionSize::Small`, `ActionSize::Medium` or `ActionSize::Large`. You can change the size of the action's trigger using the `size()` method: - -```php -use Filament\Support\Enums\ActionSize; - -Action::make('create') - ->size(ActionSize::Large) -``` - - - -## Setting an icon - -Buttons may have an [icon](https://blade-ui-kit.com/blade-icons?set=1#search) to add more detail to the UI. You can set the icon using the `icon()` method: - -```php -Action::make('edit') - ->url(fn (): string => route('posts.edit', ['post' => $this->post])) - ->icon('heroicon-m-pencil-square') -``` - - - -You can also change the icon's position to be after the label instead of before it, using the `iconPosition()` method: - -```php -use Filament\Support\Enums\IconPosition; - -Action::make('edit') - ->url(fn (): string => route('posts.edit', ['post' => $this->post])) - ->icon('heroicon-m-pencil-square') - ->iconPosition(IconPosition::After) -``` - - - -## Authorization - -You may conditionally show or hide actions for certain users. To do this, you can use either the `visible()` or `hidden()` methods: - -```php -Action::make('edit') - ->url(fn (): string => route('posts.edit', ['post' => $this->post])) - ->visible(auth()->user()->can('update', $this->post)) - -Action::make('edit') - ->url(fn (): string => route('posts.edit', ['post' => $this->post])) - ->hidden(! auth()->user()->can('update', $this->post)) -``` - -This is useful for authorization of certain actions to only users who have permission. - -### Disabling a button - -If you want to disable a button instead of hiding it, you can use the `disabled()` method: - -```php -Action::make('delete') - ->disabled() -``` - -You can conditionally disable a button by passing a boolean to it: - -```php -Action::make('delete') - ->disabled(! auth()->user()->can('delete', $this->post)) -``` - -## Registering keybindings - -You can attach keyboard shortcuts to trigger buttons. These use the same key codes as [Mousetrap](https://craig.is/killing/mice): - -```php -use Filament\Actions\Action; - -Action::make('save') - ->action(fn () => $this->save()) - ->keyBindings(['command+s', 'ctrl+s']) -``` - -## Adding a badge to the corner of the button - -You can add a badge to the corner of the button, to display whatever you want. It's useful for displaying a count of something, or a status indicator: - -```php -use Filament\Actions\Action; - -Action::make('filter') - ->iconButton() - ->icon('heroicon-m-funnel') - ->badge(5) -``` - - - -You can also pass a color to be used for the badge, which can be either `danger`, `gray`, `info`, `primary`, `success` and `warning`: - -```php -use Filament\Actions\Action; - -Action::make('filter') - ->iconButton() - ->icon('heroicon-m-funnel') - ->badge(5) - ->badgeColor('success') -``` - - - -## Outlined button style - -When you're using the "button" trigger style, you might wish to make it less prominent. You could use a different [color](#setting-a-color), but sometimes you might want to make it outlined instead. You can do this with the `outlined()` method: - -```php -use Filament\Actions\Action; - -Action::make('edit') - ->url(fn (): string => route('posts.edit', ['post' => $this->post])) - ->button() - ->outlined() -``` - - - -## Adding extra HTML attributes - -You can pass extra HTML attributes to the button which will be merged onto the outer DOM element. Pass an array of attributes to the `extraAttributes()` method, where the key is the attribute name and the value is the attribute value: - -```php -use Filament\Actions\Action; - -Action::make('edit') - ->url(fn (): string => route('posts.edit', ['post' => $this->post])) - ->extraAttributes([ - 'title' => 'Edit this post', - ]) -``` - -If you pass CSS classes in a string, they will be merged with the default classes that already apply to the other HTML element of the button: - -```php -use Filament\Actions\Action; - -Action::make('edit') - ->url(fn (): string => route('posts.edit', ['post' => $this->post])) - ->extraAttributes([ - 'class' => 'mx-auto my-8', - ]) -``` diff --git a/vendor/filament/actions/docs/04-modals.md b/vendor/filament/actions/docs/04-modals.md deleted file mode 100644 index 2161d957..00000000 --- a/vendor/filament/actions/docs/04-modals.md +++ /dev/null @@ -1,543 +0,0 @@ ---- -title: Modals ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -Actions may require additional confirmation or input from the user before they run. You may open a modal before an action is executed to do this. - -## Confirmation modals - -You may require confirmation before an action is run using the `requiresConfirmation()` method. This is useful for particularly destructive actions, such as those that delete records. - -```php -use App\Models\Post; - -Action::make('delete') - ->action(fn (Post $record) => $record->delete()) - ->requiresConfirmation() -``` - - - -> The confirmation modal is not available when a `url()` is set instead of an `action()`. Instead, you should redirect to the URL within the `action()` closure. - -## Modal forms - -You may also render a form in the modal to collect extra information from the user before the action runs. - -You may use components from the [Form Builder](../forms) to create custom action modal forms. The data from the form is available in the `$data` array of the `action()` closure: - -```php -use App\Models\Post; -use App\Models\User; -use Filament\Forms\Components\Select; - -Action::make('updateAuthor') - ->form([ - Select::make('authorId') - ->label('Author') - ->options(User::query()->pluck('name', 'id')) - ->required(), - ]) - ->action(function (array $data, Post $record): void { - $record->author()->associate($data['authorId']); - $record->save(); - }) -``` - - - -### Filling the form with existing data - -You may fill the form with existing data, using the `fillForm()` method: - -```php -use App\Models\Post; -use App\Models\User; -use Filament\Forms\Components\Select; -use Filament\Forms\Form; - -Action::make('updateAuthor') - ->fillForm(fn (Post $record): array => [ - 'authorId' => $record->author->id, - ]) - ->form([ - Select::make('authorId') - ->label('Author') - ->options(User::query()->pluck('name', 'id')) - ->required(), - ]) - ->action(function (array $data, Post $record): void { - $record->author()->associate($data['authorId']); - $record->save(); - }) -``` - -### Using a wizard as a modal form - -You may create a [multistep form wizard](../forms/layout/wizard) inside a modal. Instead of using a `form()`, define a `steps()` array and pass your `Step` objects: - -```php -use Filament\Forms\Components\MarkdownEditor; -use Filament\Forms\Components\TextInput; -use Filament\Forms\Components\Toggle; -use Filament\Forms\Components\Wizard\Step; - -Action::make('create') - ->steps([ - Step::make('Name') - ->description('Give the category a unique name') - ->schema([ - TextInput::make('name') - ->required() - ->live() - ->afterStateUpdated(fn ($state, callable $set) => $set('slug', Str::slug($state))), - TextInput::make('slug') - ->disabled() - ->required() - ->unique(Category::class, 'slug'), - ]) - ->columns(2), - Step::make('Description') - ->description('Add some extra details') - ->schema([ - MarkdownEditor::make('description'), - ]), - Step::make('Visibility') - ->description('Control who can view it') - ->schema([ - Toggle::make('is_visible') - ->label('Visible to customers.') - ->default(true), - ]), - ]) -``` - - - -### Disabling all form fields - -You may wish to disable all form fields in the modal, ensuring the user cannot edit them. You may do so using the `disabledForm()` method: - -```php -use App\Models\Post; -use App\Models\User; -use Filament\Forms\Components\Textarea; -use Filament\Forms\Components\TextInput; - -Action::make('approvePost') - ->form([ - TextInput::make('title'), - Textarea::make('content'), - ]) - ->fillForm(fn (Post $record): array => [ - 'title' => $record->title, - 'content' => $record->content, - ]) - ->disabledForm() - ->action(function (Post $record): void { - $record->approve(); - }) -``` - -## Customizing the modal's heading, description, and submit action label - -You may customize the heading, description and label of the submit button in the modal: - -```php -use App\Models\Post; - -Action::make('delete') - ->action(fn (Post $record) => $record->delete()) - ->requiresConfirmation() - ->modalHeading('Delete post') - ->modalDescription('Are you sure you\'d like to delete this post? This cannot be undone.') - ->modalSubmitActionLabel('Yes, delete it') -``` - - - -## Adding an icon inside the modal - -You may add an [icon](https://blade-ui-kit.com/blade-icons?set=1#search) inside the modal using the `modalIcon()` method: - -```php -use App\Models\Post; - -Action::make('delete') - ->action(fn (Post $record) => $record->delete()) - ->requiresConfirmation() - ->modalIcon('heroicon-o-trash') -``` - - - -By default, the icon will inherit the color of the action button. You may customize the color of the icon using the `modalIconColor()` method: - -```php -use App\Models\Post; - -Action::make('delete') - ->action(fn (Post $record) => $record->delete()) - ->requiresConfirmation() - ->color('danger') - ->modalIcon('heroicon-o-trash') - ->modalIconColor('warning') -``` - -## Customizing the alignment of modal content - -By default, modal content will be aligned to the start, or centered if the modal is `xs` or `sm` in [width](#changing-the-modal-width). If you wish to change the alignment of content in a modal, you can use the `modalAlignment()` method and pass it `Alignment::Start` or `Alignment::Center`: - -```php -use Filament\Support\Enums\Alignment; - -Action::make('updateAuthor') - ->form([ - // ... - ]) - ->action(function (array $data): void { - // ... - }) - ->modalAlignment(Alignment::Center) -``` - -## Custom modal content - -You may define custom content to be rendered inside your modal, which you can specify by passing a Blade view into the `modalContent()` method: - -```php -use App\Models\Post; - -Action::make('advance') - ->action(fn (Post $record) => $record->advance()) - ->modalContent(view('filament.pages.actions.advance')) -``` - -### Passing data to the custom modal content - -You can pass data to the view by returning it from a function. For example, if the `$record` of an action is set, you can pass that through to the view: - -```php -use Illuminate\Contracts\View\View; - -Action::make('advance') - ->action(fn (Contract $record) => $record->advance()) - ->modalContent(fn (Contract $record): View => view( - 'filament.pages.actions.advance', - ['record' => $record], - )) -``` - -### Adding custom modal content below the form - -By default, the custom content is displayed above the modal form if there is one, but you can add content below using `modalContentFooter()` if you wish: - -```php -use App\Models\Post; - -Action::make('advance') - ->action(fn (Post $record) => $record->advance()) - ->modalContentFooter(view('filament.pages.actions.advance')) -``` - -### Adding an action to custom modal content - -You can add an action button to your custom modal content, which is useful if you want to add a button that performs an action other than the main action. You can do this by registering an action with the `registerModalActions()` method, and then passing it to the view: - -```php -use App\Models\Post; -use Illuminate\Contracts\View\View; - -Action::make('advance') - ->registerModalActions([ - Action::make('report') - ->requiresConfirmation() - ->action(fn (Post $record) => $record->report()), - ]) - ->action(fn (Post $record) => $record->advance()) - ->modalContent(fn (Action $action): View => view( - 'filament.pages.actions.advance', - ['action' => $action], - )) -``` - -Now, in the view file, you can render the action button by calling `getModalAction()`: - -```blade -
- {{ $action->getModalAction('report') }} -
-``` - -## Using a slide-over instead of a modal - -You can open a "slide-over" dialog instead of a modal by using the `slideOver()` method: - -```php -Action::make('updateAuthor') - ->form([ - // ... - ]) - ->action(function (array $data): void { - // ... - }) - ->slideOver() -``` - - - -Instead of opening in the center of the screen, the modal content will now slide in from the right and consume the entire height of the browser. - -## Making the modal header sticky - -The header of a modal scrolls out of view with the modal content when it overflows the modal size. However, slide-overs have a sticky modal that's always visible. You may control this behavior using `stickyModalHeader()`: - -```php -Action::make('updateAuthor') - ->form([ - // ... - ]) - ->action(function (array $data): void { - // ... - }) - ->stickyModalHeader() -``` - -## Making the modal footer sticky - -The footer of a modal is rendered inline after the content by default. Slide-overs, however, have a sticky footer that always shows when scrolling the content. You may enable this for a modal too using `stickyModalFooter()`: - -```php -Action::make('updateAuthor') - ->form([ - // ... - ]) - ->action(function (array $data): void { - // ... - }) - ->stickyModalFooter() -``` - -## Changing the modal width - -You can change the width of the modal by using the `modalWidth()` method. Options correspond to [Tailwind's max-width scale](https://tailwindcss.com/docs/max-width). The options are `ExtraSmall`, `Small`, `Medium`, `Large`, `ExtraLarge`, `TwoExtraLarge`, `ThreeExtraLarge`, `FourExtraLarge`, `FiveExtraLarge`, `SixExtraLarge`, `SevenExtraLarge`, and `Screen`: - -```php -use Filament\Support\Enums\MaxWidth; - -Action::make('updateAuthor') - ->form([ - // ... - ]) - ->action(function (array $data): void { - // ... - }) - ->modalWidth(MaxWidth::FiveExtraLarge) -``` - -## Conditionally hiding the modal - -You may have a need to conditionally show a modal for confirmation reasons while falling back to the default action. This can be achieved using `modalHidden()`: - -```php -Action::make('create') - ->action(function (array $data): void { - // ... - }) - ->modalHidden(fn (): bool => $this->role !== 'admin') - ->modalContent(view('filament.pages.actions.create')) -``` - -## Executing code when the modal opens - -You may execute code within a closure when the modal opens, by passing it to the `mountUsing()` method: - -```php -use Filament\Forms\Form; - -Action::make('create') - ->mountUsing(function (Form $form) { - $form->fill(); - - // ... - }) -``` - -> The `mountUsing()` method, by default, is used by Filament to initialize the [form](#modal-forms). If you override this method, you will need to call `$form->fill()` to ensure the form is initialized correctly. If you wish to populate the form with data, you can do so by passing an array to the `fill()` method, instead of [using `fillForm()` on the action itself](#filling-the-form-with-existing-data). - -## Customizing the action buttons in the footer of the modal - -By default, there are two actions in the footer of a modal. The first is a button to submit, which executes the `action()`. The second button closes the modal and cancels the action. - -### Modifying a default modal footer action button - -To modify the action instance that is used to render one of the default action buttons, you may pass a closure to the `modalSubmitAction()` and `modalCancelAction()` methods: - -```php -use Filament\Actions\StaticAction; - -Action::make('help') - ->modalContent(view('actions.help')) - ->modalCancelAction(fn (StaticAction $action) => $action->label('Close')) -``` - -The [methods available to customize trigger buttons](trigger-button) will work to modify the `$action` instance inside the closure. - -### Removing a default modal footer action button - -To remove a default action, you may pass `false` to either `modalSubmitAction()` or `modalCancelAction()`: - -```php -Action::make('help') - ->modalContent(view('actions.help')) - ->modalSubmitAction(false) -``` - -### Adding an extra modal action button to the footer - -You may pass an array of extra actions to be rendered, between the default actions, in the footer of the modal using the `extraModalFooterActions()` method: - -```php -Action::make('create') - ->form([ - // ... - ]) - // ... - ->extraModalFooterActions(fn (Action $action): array => [ - $action->makeModalSubmitAction('createAnother', arguments: ['another' => true]), - ]) -``` - -`$action->makeModalSubmitAction()` returns an action instance that can be customized using the [methods available to customize trigger buttons](trigger-button). - -The second parameter of `makeModalSubmitAction()` allows you to pass an array of arguments that will be accessible inside the action's `action()` closure as `$arguments`. These could be useful as flags to indicate that the action should behave differently based on the user's decision: - -```php -Action::make('create') - ->form([ - // ... - ]) - // ... - ->extraModalFooterActions(fn (Action $action): array => [ - $action->makeModalSubmitAction('createAnother', arguments: ['another' => true]), - ]) - ->action(function (array $data, array $arguments): void { - // Create - - if ($arguments['another'] ?? false) { - // Reset the form and don't close the modal - } - }) -``` - -#### Opening another modal from an extra footer action - -You can nest actions within each other, allowing you to open a new modal from an extra footer action: - -```php -Action::make('edit') - // ... - ->extraModalFooterActions([ - Action::make('delete') - ->requiresConfirmation() - ->action(function () { - // ... - }), - ]) -``` - -Now, the edit modal will have a "Delete" button in the footer, which will open a confirmation modal when clicked. This action is completely independent of the `edit` action, and will not run the `edit` action when it is clicked. - -In this example though, you probably want to cancel the `edit` action if the `delete` action is run. You can do this using the `cancelParentActions()` method: - -```php -Action::make('delete') - ->requiresConfirmation() - ->action(function () { - // ... - }) - ->cancelParentActions() -``` - -If you have deep nesting with multiple parent actions, but you don't want to cancel all of them, you can pass the name of the parent action you want to cancel, including its children, to `cancelParentActions()`: - -```php -Action::make('first') - ->requiresConfirmation() - ->action(function () { - // ... - }) - ->extraModalFooterActions([ - Action::make('second') - ->requiresConfirmation() - ->action(function () { - // ... - }) - ->extraModalFooterActions([ - Action::make('third') - ->requiresConfirmation() - ->action(function () { - // ... - }) - ->extraModalFooterActions([ - Action::make('fourth') - ->requiresConfirmation() - ->action(function () { - // ... - }) - ->cancelParentActions('second'), - ]), - ]), - ]) -``` - -In this example, if the `fourth` action is run, the `second` action is canceled, but so is the `third` action since it is a child of `second`. The `first` action is not canceled, however, since it is the parent of `second`. The `first` action's modal will remain open. - -## Closing the modal by clicking away - -By default, when you click away from a modal, it will close itself. If you wish to disable this behavior for a specific action, you can use the `closeModalByClickingAway(false)` method: - -```php -Action::make('updateAuthor') - ->form([ - // ... - ]) - ->action(function (array $data): void { - // ... - }) - ->closeModalByClickingAway(false) -``` - -If you'd like to change the behaviour for all modals in the application, you can do so by calling `Modal::closedByClickingAway()` inside a service provider or middleware: - -```php -use Filament\Support\View\Components\Modal; - -Modal::closedByClickingAway(false); -``` - -## Hiding the modal close button - -By default, modals have a close button in the top right corner. If you wish to hide the close button, you can use the `modalCloseButton(false)` method: - -```php -Action::make('updateAuthor') - ->form([ - // ... - ]) - ->action(function (array $data): void { - // ... - }) - ->modalCloseButton(false) -``` - -If you'd like to hide the close button for all modals in the application, you can do so by calling `Modal::closeButton(false)` inside a service provider or middleware: - -```php -use Filament\Support\View\Components\Modal; - -Modal::closeButton(false); -``` diff --git a/vendor/filament/actions/docs/05-grouping-actions.md b/vendor/filament/actions/docs/05-grouping-actions.md deleted file mode 100644 index 33202f82..00000000 --- a/vendor/filament/actions/docs/05-grouping-actions.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: Grouping actions ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -You may group actions together into a dropdown menu by using an `ActionGroup` object. Groups may contain many actions, or other groups: - -```php -ActionGroup::make([ - Action::make('view'), - Action::make('edit'), - Action::make('delete'), -]) -``` - - - -This page is about customizing the look of the group's trigger button and dropdown. - -## Customizing the group trigger style - -The button which opens the dropdown may be customized in the same way as a normal action. [All the methods available for trigger buttons](trigger-button) may be used to customize the group trigger button: - -```php -use Filament\Support\Enums\ActionSize; - -ActionGroup::make([ - // Array of actions -]) - ->label('More actions') - ->icon('heroicon-m-ellipsis-vertical') - ->size(ActionSize::Small) - ->color('primary') - ->button() -``` - - - -## Setting the placement of the dropdown - -The dropdown may be positioned relative to the trigger button by using the `dropdownPlacement()` method: - -```php -ActionGroup::make([ - // Array of actions -]) - ->dropdownPlacement('top-start') -``` - - - -## Adding dividers between actions - -You may add dividers between groups of actions by using nested `ActionGroup` objects: - -```php -ActionGroup::make([ - ActionGroup::make([ - // Array of actions - ])->dropdown(false), - // Array of actions -]) -``` - -The `dropdown(false)` method puts the actions inside the parent dropdown, instead of a new nested dropdown. - - - -## Setting the width of the dropdown - -The dropdown may be set to a width by using the `dropdownWidth()` method. Options correspond to [Tailwind's max-width scale](https://tailwindcss.com/docs/max-width). The options are `ExtraSmall`, `Small`, `Medium`, `Large`, `ExtraLarge`, `TwoExtraLarge`, `ThreeExtraLarge`, `FourExtraLarge`, `FiveExtraLarge`, `SixExtraLarge` and `SevenExtraLarge`: - -```php -use Filament\Support\Enums\MaxWidth; - -ActionGroup::make([ - // Array of actions -]) - ->dropdownWidth(MaxWidth::ExtraSmall) -``` - -## Controlling the maximum height of the dropdown - -The dropdown content can have a maximum height using the `maxHeight()` method, so that it scrolls. You can pass a [CSS length](https://developer.mozilla.org/en-US/docs/Web/CSS/length): - -```php -ActionGroup::make([ - // Array of actions -]) - ->maxHeight('400px') -``` - -## Controlling the dropdown offset - -You may control the offset of the dropdown using the `dropdownOffset()` method, by default the offset is set to `8`. - -```php -ActionGroup::make([ - // Array of actions -]) - ->dropdownOffset(16) -``` diff --git a/vendor/filament/actions/docs/06-adding-an-action-to-a-livewire-component.md b/vendor/filament/actions/docs/06-adding-an-action-to-a-livewire-component.md deleted file mode 100644 index d587e18b..00000000 --- a/vendor/filament/actions/docs/06-adding-an-action-to-a-livewire-component.md +++ /dev/null @@ -1,232 +0,0 @@ ---- -title: Adding an action to a Livewire component ---- - -## Setting up the Livewire component - -First, generate a new Livewire component: - -```bash -php artisan make:livewire ManageProduct -``` - -Then, render your Livewire component on the page: - -```blade -@livewire('manage-product') -``` - -Alternatively, you can use a full-page Livewire component: - -```php -use App\Livewire\ManageProduct; -use Illuminate\Support\Facades\Route; - -Route::get('products/{product}/manage', ManageProduct::class); -``` - -You must use the `InteractsWithActions` and `InteractsWithForms` traits, and implement the `HasActions` and `HasForms` interfaces on your Livewire component class: - -```php -use Filament\Actions\Concerns\InteractsWithActions; -use Filament\Actions\Contracts\HasActions; -use Filament\Forms\Concerns\InteractsWithForms; -use Filament\Forms\Contracts\HasForms; -use Livewire\Component; - -class ManagePost extends Component implements HasForms, HasActions -{ - use InteractsWithActions; - use InteractsWithForms; - - // ... -} -``` - -## Adding the action - -Add a method that returns your action: - -```php -use App\Models\Post; -use Filament\Actions\Action; -use Filament\Actions\Concerns\InteractsWithActions; -use Filament\Actions\Contracts\HasActions; -use Filament\Forms\Concerns\InteractsWithForms; -use Filament\Forms\Contracts\HasForms; -use Livewire\Component; - -class ManagePost extends Component implements HasForms, HasActions -{ - use InteractsWithActions; - use InteractsWithForms; - - public Post $post; - - public function deleteAction(): Action - { - return Action::make('delete') - ->requiresConfirmation() - ->action(fn () => $this->post->delete()); - } - - // ... -} -``` - -Finally, you need to render the action in your view. To do this, you can use `{{ $this->deleteAction }}`, where you replace `deleteAction` with the name of your action method: - -```blade -
- {{ $this->deleteAction }} - - -
-``` - -You also need `` which injects the HTML required to render action modals. This only needs to be included within the Livewire component once, regardless of how many actions you have for that component. - -## Passing action arguments - -Sometimes, you may wish to pass arguments to your action. For example, if you're rendering the same action multiple times in the same view, but each time for a different model, you could pass the model ID as an argument, and then retrieve it later. To do this, you can invoke the action in your view and pass in the arguments as an array: - -```php -
- @foreach ($posts as $post) -

{{ $post->title }}

- - {{ ($this->deleteAction)(['post' => $post->id]) }} - @endforeach - - -
-``` - -Now, you can access the post ID in your action method: - -```php -use App\Models\Post; -use Filament\Actions\Action; - -public function deleteAction(): Action -{ - return Action::make('delete') - ->requiresConfirmation() - ->action(function (array $arguments) { - $post = Post::find($arguments['post']); - - $post?->delete(); - }); -} -``` - -## Hiding actions in a Livewire view - -If you use `hidden()` or `visible()` to control if an action is rendered, you should wrap the action in an `@if` check for `isVisible()`: - -```blade -
- @if ($this->deleteAction->isVisible()) - {{ $this->deleteAction }} - @endif - - {{-- Or --}} - - @if (($this->deleteAction)(['post' => $post->id])->isVisible()) - {{ ($this->deleteAction)(['post' => $post->id]) }} - @endif -
-``` - -The `hidden()` and `visible()` methods also control if the action is `disabled()`, so they are still useful to protect the action from being run if the user does not have permission. Encapsulating this logic in the `hidden()` or `visible()` of the action itself is good practice otherwise you need to define the condition in the view and in `disabled()`. - -You can also take advantage of this to hide any wrapping elements that may not need to be rendered if the action is hidden: - -```blade -
- @if ($this->deleteAction->isVisible()) -
- {{ $this->deleteAction }} -
- @endif -
-``` - -## Grouping actions in a Livewire view - -You may [group actions together into a dropdown menu](grouping-actions) by using the `` Blade component, passing in the `actions` array as an attribute: - -```blade -
- - - -
-``` - -You can also pass in any attributes to customize the appearance of the trigger button and dropdown: - -```blade -
- - - -
-``` - -## Chaining actions - -You can chain multiple actions together, by calling the `replaceMountedAction()` method to replace the current action with another when it has finished: - -```php -use App\Models\Post; -use Filament\Actions\Action; - -public function editAction(): Action -{ - return Action::make('edit') - ->form([ - // ... - ]) - // ... - ->action(function (array $arguments) { - $post = Post::find($arguments['post']); - - // ... - - $this->replaceMountedAction('publish', $arguments); - }); -} - -public function publishAction(): Action -{ - return Action::make('publish') - ->requiresConfirmation() - // ... - ->action(function (array $arguments) { - $post = Post::find($arguments['post']); - - $post->publish(); - }); -} -``` - -Now, when the first action is submitted, the second action will open in its place. The [arguments](#passing-action-arguments) that were originally passed to the first action get passed to the second action, so you can use them to persist data between requests. - -If the first action is canceled, the second one is not opened. If the second action is canceled, the first one has already run and cannot be cancelled. diff --git a/vendor/filament/actions/docs/07-prebuilt-actions/01-create.md b/vendor/filament/actions/docs/07-prebuilt-actions/01-create.md deleted file mode 100644 index 9bfdd478..00000000 --- a/vendor/filament/actions/docs/07-prebuilt-actions/01-create.md +++ /dev/null @@ -1,247 +0,0 @@ ---- -title: Create action ---- - -## Overview - -Filament includes a prebuilt action that is able to create Eloquent records. When the trigger button is clicked, a modal will open with a form inside. The user fills the form, and that data is validated and saved into the database. You may use it like so: - -```php -use Filament\Actions\CreateAction; -use Filament\Forms\Components\TextInput; - -CreateAction::make() - ->model(Post::class) - ->form([ - TextInput::make('title') - ->required() - ->maxLength(255), - // ... - ]) -``` - -If you want to add this action to the header of a table instead, you can use `Filament\Tables\Actions\CreateAction`: - -```php -use Filament\Forms\Components\TextInput; -use Filament\Tables\Actions\CreateAction; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return $table - ->headerActions([ - CreateAction::make() - ->form([ - TextInput::make('title') - ->required() - ->maxLength(255), - // ... - ]), - ]); -} -``` - -## Customizing data before saving - -Sometimes, you may wish to modify form data before it is finally saved to the database. To do this, you may use the `mutateFormDataUsing()` method, which has access to the `$data` as an array, and returns the modified version: - -```php -CreateAction::make() - ->mutateFormDataUsing(function (array $data): array { - $data['user_id'] = auth()->id(); - - return $data; - }) -``` - -## Customizing the creation process - -You can tweak how the record is created with the `using()` method: - -```php -use Illuminate\Database\Eloquent\Model; - -CreateAction::make() - ->using(function (array $data, string $model): Model { - return $model::create($data); - }) -``` - -`$model` is the class name of the model, but you can replace this with your own hard-coded class if you wish. - -## Redirecting after creation - -You may set up a custom redirect when the form is submitted using the `successRedirectUrl()` method: - -```php -CreateAction::make() - ->successRedirectUrl(route('posts.list')) -``` - -If you want to redirect using the created record, use the `$record` parameter: - -```php -use Illuminate\Database\Eloquent\Model; - -CreateAction::make() - ->successRedirectUrl(fn (Model $record): string => route('posts.edit', [ - 'post' => $record, - ])) -``` - -## Customizing the save notification - -When the record is successfully created, a notification is dispatched to the user, which indicates the success of their action. - -To customize the title of this notification, use the `successNotificationTitle()` method: - -```php -CreateAction::make() - ->successNotificationTitle('User registered') -``` - -You may customize the entire notification using the `successNotification()` method: - -```php -use Filament\Notifications\Notification; - -CreateAction::make() - ->successNotification( - Notification::make() - ->success() - ->title('User registered') - ->body('The user has been created successfully.'), - ) -``` - -To disable the notification altogether, use the `successNotification(null)` method: - -```php -CreateAction::make() - ->successNotification(null) -``` - -## Lifecycle hooks - -Hooks may be used to execute code at various points within the action's lifecycle, like before a form is saved. - -There are several available hooks: - -```php -CreateAction::make() - ->beforeFormFilled(function () { - // Runs before the form fields are populated with their default values. - }) - ->afterFormFilled(function () { - // Runs after the form fields are populated with their default values. - }) - ->beforeFormValidated(function () { - // Runs before the form fields are validated when the form is submitted. - }) - ->afterFormValidated(function () { - // Runs after the form fields are validated when the form is submitted. - }) - ->before(function () { - // Runs before the form fields are saved to the database. - }) - ->after(function () { - // Runs after the form fields are saved to the database. - }) -``` - -## Halting the creation process - -At any time, you may call `$action->halt()` from inside a lifecycle hook or mutation method, which will halt the entire creation process: - -```php -use App\Models\Post; -use Filament\Notifications\Actions\Action; -use Filament\Notifications\Notification; - -CreateAction::make() - ->before(function (CreateAction $action, Post $record) { - if (! $record->team->subscribed()) { - Notification::make() - ->warning() - ->title('You don\'t have an active subscription!') - ->body('Choose a plan to continue.') - ->persistent() - ->actions([ - Action::make('subscribe') - ->button() - ->url(route('subscribe'), shouldOpenInNewTab: true), - ]) - ->send(); - - $action->halt(); - } - }) -``` - -If you'd like the action modal to close too, you can completely `cancel()` the action instead of halting it: - -```php -$action->cancel(); -``` - -## Using a wizard - -You may easily transform the creation process into a multistep wizard. Instead of using a `form()`, define a `steps()` array and pass your `Step` objects: - -```php -use Filament\Forms\Components\MarkdownEditor; -use Filament\Forms\Components\TextInput; -use Filament\Forms\Components\Toggle; -use Filament\Forms\Components\Wizard\Step; - -CreateAction::make() - ->steps([ - Step::make('Name') - ->description('Give the category a unique name') - ->schema([ - TextInput::make('name') - ->required() - ->live() - ->afterStateUpdated(fn ($state, callable $set) => $set('slug', Str::slug($state))), - TextInput::make('slug') - ->disabled() - ->required() - ->unique(Category::class, 'slug'), - ]) - ->columns(2), - Step::make('Description') - ->description('Add some extra details') - ->schema([ - MarkdownEditor::make('description'), - ]), - Step::make('Visibility') - ->description('Control who can view it') - ->schema([ - Toggle::make('is_visible') - ->label('Visible to customers.') - ->default(true), - ]), - ]) -``` - -Now, create a new record to see your wizard in action! Edit will still use the form defined within the resource class. - -If you'd like to allow free navigation, so all the steps are skippable, use the `skippableSteps()` method: - -```php -CreateAction::make() - ->steps([ - // ... - ]) - ->skippableSteps() -``` - -## Disabling create another - -If you'd like to remove the "create another" button from the modal, you can use the `createAnother(false)` method: - -```php -CreateAction::make() - ->createAnother(false) -``` diff --git a/vendor/filament/actions/docs/07-prebuilt-actions/02-edit.md b/vendor/filament/actions/docs/07-prebuilt-actions/02-edit.md deleted file mode 100644 index 7973658f..00000000 --- a/vendor/filament/actions/docs/07-prebuilt-actions/02-edit.md +++ /dev/null @@ -1,200 +0,0 @@ ---- -title: Edit action ---- - -## Overview - -Filament includes a prebuilt action that is able to edit Eloquent records. When the trigger button is clicked, a modal will open with a form inside. The user fills the form, and that data is validated and saved into the database. You may use it like so: - -```php -use Filament\Actions\EditAction; -use Filament\Forms\Components\TextInput; - -EditAction::make() - ->record($this->post) - ->form([ - TextInput::make('title') - ->required() - ->maxLength(255), - // ... - ]) -``` - -If you want to edit table rows, you can use the `Filament\Tables\Actions\EditAction` instead: - -```php -use Filament\Forms\Components\TextInput; -use Filament\Tables\Actions\EditAction; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return $table - ->actions([ - EditAction::make() - ->form([ - TextInput::make('title') - ->required() - ->maxLength(255), - // ... - ]), - ]); -} -``` - -## Customizing data before filling the form - -You may wish to modify the data from a record before it is filled into the form. To do this, you may use the `mutateRecordDataUsing()` method to modify the `$data` array, and return the modified version before it is filled into the form: - -```php -EditAction::make() - ->mutateRecordDataUsing(function (array $data): array { - $data['user_id'] = auth()->id(); - - return $data; - }) -``` - -## Customizing data before saving - -Sometimes, you may wish to modify form data before it is finally saved to the database. To do this, you may use the `mutateFormDataUsing()` method, which has access to the `$data` as an array, and returns the modified version: - -```php -EditAction::make() - ->mutateFormDataUsing(function (array $data): array { - $data['last_edited_by_id'] = auth()->id(); - - return $data; - }) -``` - -## Customizing the saving process - -You can tweak how the record is updated with the `using()` method: - -```php -use Illuminate\Database\Eloquent\Model; - -EditAction::make() - ->using(function (Model $record, array $data): Model { - $record->update($data); - - return $record; - }) -``` - -## Redirecting after saving - -You may set up a custom redirect when the form is submitted using the `successRedirectUrl()` method: - -```php -EditAction::make() - ->successRedirectUrl(route('posts.list')) -``` - -If you want to redirect using the created record, use the `$record` parameter: - -```php -use Illuminate\Database\Eloquent\Model; - -EditAction::make() - ->successRedirectUrl(fn (Model $record): string => route('posts.view', [ - 'post' => $record, - ])) -``` - -## Customizing the save notification - -When the record is successfully updated, a notification is dispatched to the user, which indicates the success of their action. - -To customize the title of this notification, use the `successNotificationTitle()` method: - -```php -EditAction::make() - ->successNotificationTitle('User updated') -``` - -You may customize the entire notification using the `successNotification()` method: - -```php -use Filament\Notifications\Notification; - -EditAction::make() - ->successNotification( - Notification::make() - ->success() - ->title('User updated') - ->body('The user has been saved successfully.'), - ) -``` - -To disable the notification altogether, use the `successNotification(null)` method: - -```php -EditAction::make() - ->successNotification(null) -``` - -## Lifecycle hooks - -Hooks may be used to execute code at various points within the action's lifecycle, like before a form is saved. - -There are several available hooks: - -```php -EditAction::make() - ->beforeFormFilled(function () { - // Runs before the form fields are populated from the database. - }) - ->afterFormFilled(function () { - // Runs after the form fields are populated from the database. - }) - ->beforeFormValidated(function () { - // Runs before the form fields are validated when the form is saved. - }) - ->afterFormValidated(function () { - // Runs after the form fields are validated when the form is saved. - }) - ->before(function () { - // Runs before the form fields are saved to the database. - }) - ->after(function () { - // Runs after the form fields are saved to the database. - }) -``` - -## Halting the saving process - -At any time, you may call `$action->halt()` from inside a lifecycle hook or mutation method, which will halt the entire saving process: - -```php -use App\Models\Post; -use Filament\Notifications\Actions\Action; -use Filament\Notifications\Notification; -use Filament\Tables\Actions\EditAction; - -EditAction::make() - ->before(function (EditAction $action, Post $record) { - if (! $record->team->subscribed()) { - Notification::make() - ->warning() - ->title('You don\'t have an active subscription!') - ->body('Choose a plan to continue.') - ->persistent() - ->actions([ - Action::make('subscribe') - ->button() - ->url(route('subscribe'), shouldOpenInNewTab: true), - ]) - ->send(); - - $action->halt(); - } - }) -``` - -If you'd like the action modal to close too, you can completely `cancel()` the action instead of halting it: - -```php -$action->cancel(); -``` diff --git a/vendor/filament/actions/docs/07-prebuilt-actions/03-view.md b/vendor/filament/actions/docs/07-prebuilt-actions/03-view.md deleted file mode 100644 index e9ea86c9..00000000 --- a/vendor/filament/actions/docs/07-prebuilt-actions/03-view.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: View action ---- - -## Overview - -Filament includes a prebuilt action that is able to view Eloquent records. When the trigger button is clicked, a modal will open with information inside. Filament uses form fields to structure this information. All form fields are disabled, so they are not editable by the user. You may use it like so: - -```php -use Filament\Actions\ViewAction; -use Filament\Forms\Components\TextInput; - -ViewAction::make() - ->record($this->post) - ->form([ - TextInput::make('title') - ->required() - ->maxLength(255), - // ... - ]) -``` - -If you want to view table rows, you can use the `Filament\Tables\Actions\ViewAction` instead: - -```php -use Filament\Forms\Components\TextInput; -use Filament\Tables\Actions\ViewAction; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return $table - ->actions([ - ViewAction::make() - ->form([ - TextInput::make('title') - ->required() - ->maxLength(255), - // ... - ]), - ]); -} -``` - -## Customizing data before filling the form - -You may wish to modify the data from a record before it is filled into the form. To do this, you may use the `mutateRecordDataUsing()` method to modify the `$data` array, and return the modified version before it is filled into the form: - -```php -ViewAction::make() - ->mutateRecordDataUsing(function (array $data): array { - $data['user_id'] = auth()->id(); - - return $data; - }) -``` \ No newline at end of file diff --git a/vendor/filament/actions/docs/07-prebuilt-actions/04-delete.md b/vendor/filament/actions/docs/07-prebuilt-actions/04-delete.md deleted file mode 100644 index 93daa4cd..00000000 --- a/vendor/filament/actions/docs/07-prebuilt-actions/04-delete.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: Delete action ---- - -## Overview - -Filament includes a prebuilt action that is able to delete Eloquent records. When the trigger button is clicked, a modal asks the user for confirmation. You may use it like so: - -```php -use Filament\Actions\DeleteAction; - -DeleteAction::make() - ->record($this->post) -``` - -If you want to delete table rows, you can use the `Filament\Tables\Actions\DeleteAction` instead, or `Filament\Tables\Actions\DeleteBulkAction` to delete multiple at once: - -```php -use Filament\Tables\Actions\BulkActionGroup; -use Filament\Tables\Actions\DeleteAction; -use Filament\Tables\Actions\DeleteBulkAction; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return $table - ->actions([ - DeleteAction::make(), - // ... - ]) - ->bulkActions([ - BulkActionGroup::make([ - DeleteBulkAction::make(), - // ... - ]), - ]); -} -``` - -## Redirecting after deleting - -You may set up a custom redirect when the form is submitted using the `successRedirectUrl()` method: - -```php -DeleteAction::make() - ->successRedirectUrl(route('posts.list')) -``` - -## Customizing the delete notification - -When the record is successfully deleted, a notification is dispatched to the user, which indicates the success of their action. - -To customize the title of this notification, use the `successNotificationTitle()` method: - -```php -DeleteAction::make() - ->successNotificationTitle('User deleted') -``` - -You may customize the entire notification using the `successNotification()` method: - -```php -use Filament\Notifications\Notification; - -DeleteAction::make() - ->successNotification( - Notification::make() - ->success() - ->title('User deleted') - ->body('The user has been deleted successfully.'), - ) -``` - -To disable the notification altogether, use the `successNotification(null)` method: - -```php -DeleteAction::make() - ->successNotification(null) -``` - -## Lifecycle hooks - -You can use the `before()` and `after()` methods to execute code before and after a record is deleted: - -```php -DeleteAction::make() - ->before(function () { - // ... - }) - ->after(function () { - // ... - }) -``` diff --git a/vendor/filament/actions/docs/07-prebuilt-actions/05-replicate.md b/vendor/filament/actions/docs/07-prebuilt-actions/05-replicate.md deleted file mode 100644 index 3d0265fe..00000000 --- a/vendor/filament/actions/docs/07-prebuilt-actions/05-replicate.md +++ /dev/null @@ -1,151 +0,0 @@ ---- -title: Replicate action ---- - -## Overview - -Filament includes a prebuilt action that is able to [replicate](https://laravel.com/docs/eloquent#replicating-models) Eloquent records. You may use it like so: - -```php -use Filament\Actions\ReplicateAction; - -ReplicateAction::make() - ->record($this->post) -``` - -If you want to replicate table rows, you can use the `Filament\Tables\Actions\ReplicateAction` instead: - -```php -use Filament\Tables\Actions\ReplicateAction; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return $table - ->actions([ - ReplicateAction::make(), - // ... - ]); -} -``` - -## Excluding attributes - -The `excludeAttributes()` method is used to instruct the action which columns should be excluded from replication: - -```php -ReplicateAction::make() - ->excludeAttributes(['slug']) -``` - -## Customizing data before filling the form - -You may wish to modify the data from a record before it is filled into the form. To do this, you may use the `mutateRecordDataUsing()` method to modify the `$data` array, and return the modified version before it is filled into the form: - -```php -ReplicateAction::make() - ->mutateRecordDataUsing(function (array $data): array { - $data['user_id'] = auth()->id(); - - return $data; - }) -``` - -## Redirecting after replication - -You may set up a custom redirect when the form is submitted using the `successRedirectUrl()` method: - -```php -ReplicateAction::make() - ->successRedirectUrl(route('posts.list')) -``` - -If you want to redirect using the replica, use the `$replica` parameter: - -```php -use Illuminate\Database\Eloquent\Model; - -ReplicateAction::make() - ->successRedirectUrl(fn (Model $replica): string => route('posts.edit', [ - 'post' => $replica, - ])) -``` - -## Customizing the replicate notification - -When the record is successfully replicated, a notification is dispatched to the user, which indicates the success of their action. - -To customize the title of this notification, use the `successNotificationTitle()` method: - -```php -ReplicateAction::make() - ->successNotificationTitle('Category replicated') -``` - -You may customize the entire notification using the `successNotification()` method: - -```php -use Filament\Notifications\Notification; - -ReplicateAction::make() - ->successNotification( - Notification::make() - ->success() - ->title('Category replicated') - ->body('The category has been replicated successfully.'), - ) -``` - -## Lifecycle hooks - -Hooks may be used to execute code at various points within the action's lifecycle, like before the replica is saved. - -```php -use Illuminate\Database\Eloquent\Model; - -ReplicateAction::make() - ->before(function () { - // Runs before the record has been replicated. - }) - ->beforeReplicaSaved(function (Model $replica): void { - // Runs after the record has been replicated but before it is saved to the database. - }) - ->after(function (Model $replica): void { - // Runs after the replica has been saved to the database. - }) -``` - -## Halting the replication process - -At any time, you may call `$action->halt()` from inside a lifecycle hook, which will halt the entire replication process: - -```php -use App\Models\Post; -use Filament\Notifications\Actions\Action; -use Filament\Notifications\Notification; - -ReplicateAction::make() - ->before(function (ReplicateAction $action, Post $record) { - if (! $record->team->subscribed()) { - Notification::make() - ->warning() - ->title('You don\'t have an active subscription!') - ->body('Choose a plan to continue.') - ->persistent() - ->actions([ - Action::make('subscribe') - ->button() - ->url(route('subscribe'), shouldOpenInNewTab: true), - ]) - ->send(); - - $action->halt(); - } - }) -``` - -If you'd like the action modal to close too, you can completely `cancel()` the action instead of halting it: - -```php -$action->cancel(); -``` diff --git a/vendor/filament/actions/docs/07-prebuilt-actions/06-force-delete.md b/vendor/filament/actions/docs/07-prebuilt-actions/06-force-delete.md deleted file mode 100644 index 211970bb..00000000 --- a/vendor/filament/actions/docs/07-prebuilt-actions/06-force-delete.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: Force-delete action ---- - -## Overview - -Filament includes a prebuilt action that is able to force-delete [soft deleted](https://laravel.com/docs/eloquent#soft-deleting) Eloquent records. When the trigger button is clicked, a modal asks the user for confirmation. You may use it like so: - -```php -use Filament\Actions\ForceDeleteAction; - -ForceDeleteAction::make() - ->record($this->post) -``` - -If you want to force-delete table rows, you can use the `Filament\Tables\Actions\ForceDeleteAction` instead, or `Filament\Tables\Actions\ForceDeleteBulkAction` to force-delete multiple at once: - -```php -use Filament\Tables\Actions\BulkActionGroup; -use Filament\Tables\Actions\ForceDeleteAction; -use Filament\Tables\Actions\ForceDeleteBulkAction; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return $table - ->actions([ - ForceDeleteAction::make(), - // ... - ]) - ->bulkActions([ - BulkActionGroup::make([ - ForceDeleteBulkAction::make(), - // ... - ]), - ]); -} -``` - -## Redirecting after force-deleting - -You may set up a custom redirect when the form is submitted using the `successRedirectUrl()` method: - -```php -ForceDeleteAction::make() - ->successRedirectUrl(route('posts.list')) -``` - -## Customizing the force-delete notification - -When the record is successfully force-deleted, a notification is dispatched to the user, which indicates the success of their action. - -To customize the title of this notification, use the `successNotificationTitle()` method: - -```php -ForceDeleteAction::make() - ->successNotificationTitle('User force-deleted') -``` - -You may customize the entire notification using the `successNotification()` method: - -```php -use Filament\Notifications\Notification; - -ForceDeleteAction::make() - ->successNotification( - Notification::make() - ->success() - ->title('User force-deleted') - ->body('The user has been force-deleted successfully.'), - ) -``` - -To disable the notification altogether, use the `successNotification(null)` method: - -```php -ForceDeleteAction::make() - ->successNotification(null) -``` - -## Lifecycle hooks - -You can use the `before()` and `after()` methods to execute code before and after a record is force-deleted: - -```php -ForceDeleteAction::make() - ->before(function () { - // ... - }) - ->after(function () { - // ... - }) -``` diff --git a/vendor/filament/actions/docs/07-prebuilt-actions/07-restore.md b/vendor/filament/actions/docs/07-prebuilt-actions/07-restore.md deleted file mode 100644 index a292e9c1..00000000 --- a/vendor/filament/actions/docs/07-prebuilt-actions/07-restore.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: Restore action ---- - -## Overview - -Filament includes a prebuilt action that is able to restore [soft deleted](https://laravel.com/docs/eloquent#soft-deleting) Eloquent records. When the trigger button is clicked, a modal asks the user for confirmation. You may use it like so: - -```php -use Filament\Actions\RestoreAction; - -RestoreAction::make() - ->record($this->post) -``` - -If you want to restore table rows, you can use the `Filament\Tables\Actions\RestoreAction` instead, or `Filament\Tables\Actions\RestoreBulkAction` to restore multiple at once: - -```php -use Filament\Tables\Actions\BulkActionGroup; -use Filament\Tables\Actions\RestoreAction; -use Filament\Tables\Actions\RestoreBulkAction; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return $table - ->actions([ - RestoreAction::make(), - // ... - ]) - ->bulkActions([ - BulkActionGroup::make([ - RestoreBulkAction::make(), - // ... - ]), - ]); -} -``` - -## Redirecting after restoring - -You may set up a custom redirect when the form is submitted using the `successRedirectUrl()` method: - -```php -RestoreAction::make() - ->successRedirectUrl(route('posts.list')) -``` - -## Customizing the restore notification - -When the record is successfully restored, a notification is dispatched to the user, which indicates the success of their action. - -To customize the title of this notification, use the `successNotificationTitle()` method: - -```php -RestoreAction::make() - ->successNotificationTitle('User restored') -``` - -You may customize the entire notification using the `successNotification()` method: - -```php -use Filament\Notifications\Notification; - -RestoreAction::make() - ->successNotification( - Notification::make() - ->success() - ->title('User restored') - ->body('The user has been restored successfully.'), - ) -``` - -To disable the notification altogether, use the `successNotification(null)` method: - -```php -RestoreAction::make() - ->successNotification(null) -``` - -## Lifecycle hooks - -You can use the `before()` and `after()` methods to execute code before and after a record is restored: - -```php -RestoreAction::make() - ->before(function () { - // ... - }) - ->after(function () { - // ... - }) -``` diff --git a/vendor/filament/actions/docs/07-prebuilt-actions/08-import.md b/vendor/filament/actions/docs/07-prebuilt-actions/08-import.md deleted file mode 100644 index e6fe2d80..00000000 --- a/vendor/filament/actions/docs/07-prebuilt-actions/08-import.md +++ /dev/null @@ -1,708 +0,0 @@ ---- -title: Import action ---- - -## Overview - -Filament v3.1 introduced a prebuilt action that is able to import rows from a CSV. When the trigger button is clicked, a modal asks the user for a file. Once they upload one, they are able to map each column in the CSV to a real column in the database. If any rows fail validation, they will be compiled into a downloadable CSV for the user to review after the rest of the rows have been imported. Users can also download an example CSV file containing all the columns that can be imported. - -This feature uses [job batches](https://laravel.com/docs/queues#job-batching) and [database notifications](../../notifications/database-notifications#overview), so you need to publish those migrations from Laravel. Also, you need to publish the migrations for tables that Filament uses to store information about imports: - -```bash -php artisan queue:batches-table -php artisan notifications:table -php artisan vendor:publish --tag=filament-actions-migrations - -php artisan migrate -``` - -> If you're using PostgreSQL, make sure that the `data` column in the notifications migration is using `json()`: `$table->json('data')`. - -> If you're using UUIDs for your `User` model, make sure that your `notifiable` column in the notifications migration is using `uuidMorphs()`: `$table->uuidMorphs('notifiable')`. - -You may use the `ImportAction` like so: - -```php -use App\Filament\Imports\ProductImporter; -use Filament\Actions\ImportAction; - -ImportAction::make() - ->importer(ProductImporter::class) -``` - -If you want to add this action to the header of a table instead, you can use `Filament\Tables\Actions\ImportAction`: - -```php -use App\Filament\Imports\ProductImporter; -use Filament\Tables\Actions\ImportAction; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return $table - ->headerActions([ - ImportAction::make() - ->importer(ProductImporter::class) - ]); -} -``` - -The ["importer" class needs to be created](#creating-an-importer) to tell Filament how to import each row of the CSV. - -## Creating an importer - -To create an importer class for a model, you may use the `make:filament-importer` command, passing the name of a model: - -```bash -php artisan make:filament-importer Product -``` - -This will create a new class in the `app/Filament/Imports` directory. You now need to define the [columns](#defining-importer-columns) that can be imported. - -### Automatically generating importer columns - -If you'd like to save time, Filament can automatically generate the [columns](#defining-importer-columns) for you, based on your model's database columns, using `--generate`: - -```bash -php artisan make:filament-importer Product --generate -``` - -> If your table contains ENUM columns, the `doctrine/dbal` package we use is unable to scan your table and will crash. Hence, Filament is unable to generate the columns for your importer if it contains an ENUM column. Read more about this issue [here](https://github.com/doctrine/dbal/issues/3819#issuecomment-573419808). - -## Defining importer columns - -To define the columns that can be imported, you need to override the `getColumns()` method on your importer class, returning an array of `ImportColumn` objects: - -```php -use Filament\Actions\Imports\ImportColumn; - -public function getColumns(): array -{ - return [ - ImportColumn::make('name') - ->requiredMapping() - ->rules(['required', 'max:255']), - ImportColumn::make('sku') - ->label('SKU') - ->requiredMapping() - ->rules(['required', 'max:32']), - ImportColumn::make('price') - ->numeric() - ->rules(['numeric', 'min:0']), - ]; -} -``` - -### Customizing the label of an import column - -The label for each column will be generated automatically from its name, but you can override it by calling the `label()` method: - -```php -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('sku') - ->label('SKU') -``` - -### Requiring an importer column to be mapped to a CSV column - -You can call the `requiredMapping()` method to make a column required to be mapped to a column in the CSV. Columns that are required in the database should be required to be mapped: - -```php -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('sku') - ->requiredMapping() -``` - -If you require a column in the database, you also need to make sure that it has a [`rules(['required'])` validation rule](#validating-csv-data). - -### Validating CSV data - -You can call the `rules()` method to add validation rules to a column. These rules will check the data in each row from the CSV before it is saved to the database: - -```php -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('sku') - ->rules(['required', 'max:32']) -``` - -Any rows that do not pass validation will not be imported. Instead, they will be compiled into a new CSV of "failed rows", which the user can download after the import has finished. The user will be shown a list of validation errors for each row that failed. - -### Casting state - -Before [validation](#validating-csv-data), data from the CSV can be cast. This is useful for converting strings into the correct data type, otherwise validation may fail. For example, if you have a `price` column in your CSV, you may want to cast it to a float: - -```php -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('price') - ->castStateUsing(function (string $state): ?float { - if (blank($state)) { - return null; - } - - $state = preg_replace('/[^0-9.]/', '', $state); - $state = floatval($state); - - return round($state, precision: 2); - }) -``` - -In this example, we pass in a function that is used to cast the `$state`. This function removes any non-numeric characters from the string, casts it to a float, and rounds it to two decimal places. - -> Please note: if a column is not [required by validation](#validating-csv-data), and it is empty, it will not be cast. - -Filament also ships with some built-in casting methods: - -```php -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('price') - ->numeric() // Casts the state to a float. - -ImportColumn::make('price') - ->numeric(decimalPlaces: 2) // Casts the state to a float, and rounds it to 2 decimal places. - -ImportColumn::make('quantity') - ->integer() // Casts the state to an integer. - -ImportColumn::make('is_visible') - ->boolean() // Casts the state to a boolean. -``` - -#### Mutating the state after it has been cast - -If you're using a [built-in casting method](#casting-state) or [array cast](#handling-multiple-values-in-a-single-column-as-an-array), you can mutate the state after it has been cast by passing a function to the `castStateUsing()` method: - -```php -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('price') - ->numeric() - ->castStateUsing(function (float $state): ?float { - if (blank($state)) { - return null; - } - - return round($state * 100); - }) -``` - -You can even access the original state before it was cast, by defining an `$originalState` argument in the function: - -```php -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('price') - ->numeric() - ->castStateUsing(function (float $state, mixed $originalState): ?float { - // ... - }) -``` - -### Importing relationships - -You may use the `relationship()` method to import a relationship. At the moment, only `BelongsTo` relationships are supported. For example, if you have a `category` column in your CSV, you may want to import the category relationship: - -```php -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('author') - ->relationship() -``` - -In this example, the `author` column in the CSV will be mapped to the `author_id` column in the database. The CSV should contain the primary keys of authors, usually `id`. - -If the column has a value, but the author cannot be found, the import will fail validation. Filament automatically adds validation to all relationship columns, to ensure that the relationship is not empty when it is required. - -#### Customizing the relationship import resolution - -If you want to find a related record using a different column, you can pass the column name as `resolveUsing`: - -```php -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('author') - ->relationship(resolveUsing: 'email') -``` - -You can pass in multiple columns to `resolveUsing`, and they will be used to find the author, in an "or" fashion. For example, if you pass in `['email', 'username']`, the record can be found by either their email or username: - -```php -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('author') - ->relationship(resolveUsing: ['email', 'username']) -``` - -You can also customize the resolution process, by passing in a function to `resolveUsing`, which should return a record to associate with the relationship: - -```php -use App\Models\Author; -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('author') - ->relationship(resolveUsing: function (array $state): ?Author { - return Author::query() - ->where('email', $state) - ->orWhere('username', $state) - ->first(); - }) -``` - -You could even use this function to dynamically determine which columns to use to resolve the record: - -```php -use App\Models\Author; -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('author') - ->relationship(resolveUsing: function (array $state): ?Author { - if (filter_var($state, FILTER_VALIDATE_EMAIL)) { - return 'email'; - } - - return 'username'; - }) -``` - -### Handling multiple values in a single column as an array - -You may use the `array()` method to cast the values in a column to an array. It accepts a delimiter as its first argument, which is used to split the values in the column into an array. For example, if you have a `documentation_urls` column in your CSV, you may want to cast it to an array of URLs: - -```php -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('documentation_urls') - ->array(',') -``` - -In this example, we pass in a comma as the delimiter, so the values in the column will be split by commas, and cast to an array. - -#### Casting each item in an array - -If you want to cast each item in the array to a different data type, you can chain the [built-in casting methods](#casting-state): - -```php -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('customer_ratings') - ->array(',') - ->integer() // Casts each item in the array to an integer. -``` - -#### Validating each item in an array - -If you want to validate each item in the array, you can chain the `nestedRecursiveRules()` method: - -```php -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('customer_ratings') - ->array(',') - ->integer() - ->rules(['array']) - ->nestedRecursiveRules(['integer', 'min:1', 'max:5']) -``` - -### Customizing how a column is filled into a record - -If you want to customize how column state is filled into a record, you can pass a function to the `fillRecordUsing()` method: - -```php -use App\Models\Product; - -ImportColumn::make('sku') - ->fillRecordUsing(function (Product $record, string $state): void { - $record->sku = strtoupper($state); - }) -``` - -## Updating existing records when importing - -When generating an importer class, you will see this `resolveRecord()` method: - -```php -use App\Models\Product; - -public function resolveRecord(): ?Product -{ - // return Product::firstOrNew([ - // // Update existing records, matching them by `$this->data['column_name']` - // 'email' => $this->data['email'], - // ]); - - return new Product(); -} -``` - -This method is called for each row in the CSV, and is responsible for returning a model instance that will be filled with the data from the CSV, and saved to the database. By default, it will create a new record for each row. However, you can customize this behavior to update existing records instead. For example, you might want to update a product if it already exists, and create a new one if it doesn't. To do this, you can uncomment the `firstOrNew()` line, and pass the column name that you want to match on. For a product, we might want to match on the `sku` column: - -```php -use App\Models\Product; - -public function resolveRecord(): ?Product -{ - return Product::firstOrNew([ - 'sku' => $this->data['sku'], - ]); -} -``` - -### Updating existing records when importing only - -If you want to write an importer that only updates existing records, and does not create new ones, you can return `null` if no record is found: - -```php -use App\Models\Product; - -public function resolveRecord(): ?Product -{ - return Product::query() - ->where('sku', $this->data['sku']) - ->first(); -} -``` - -### Ignoring blank state for an import column - -By default, if a column in the CSV is blank, and mapped by the user, and it's not required by validation, the column will be imported as `null` in the database. If you'd like to ignore blank state, and use the existing value in the database instead, you can call the `ignoreBlankState()` method: - -```php -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('price') - ->ignoreBlankState() -``` - -## Using import options - -The import action can render extra form components that the user can interact with when importing a CSV. This can be useful to allow the user to customize the behavior of the importer. For instance, you might want a user to be able to choose whether to update existing records when importing, or only create new ones. To do this, you can return options form components from the `getOptionsFormComponents()` method on your importer class: - -```php -use Filament\Forms\Components\Checkbox; - -public static function getOptionsFormComponents(): array -{ - return [ - Checkbox::make('updateExisting') - ->label('Update existing records'), - ]; -} -``` - -Alternatively, you can pass a set of static options to the importer through the `options()` method on the action: - -```php -use Filament\Actions\ImportAction; - -ImportAction::make() - ->importer(ProductImporter::class) - ->options([ - 'updateExisting' => true, - ]) -``` - -Now, you can access the data from these options inside the importer class, by calling `$this->options`. For example, you might want to use it inside `resolveRecord()` to [update an existing product](#updating-existing-records-when-importing): - -```php -use App\Models\Product; - -public function resolveRecord(): ?Product -{ - if ($this->options['updateExisting'] ?? false) { - return Product::firstOrNew([ - 'sku' => $this->data['sku'], - ]); - } - - return new Product(); -} -``` - -## Improving import column mapping guesses - -By default, Filament will attempt to "guess" which columns in the CSV match which columns in the database, to save the user time. It does this by attempting to find different combinations of the column name, with spaces, `-`, `_`, all cases insensitively. However, if you'd like to improve the guesses, you can call the `guess()` method with more examples of the column name that could be present in the CSV: - -```php -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('sku') - ->guess(['id', 'number', 'stock-keeping unit']) -``` - -## Providing example CSV data - -Before the user uploads a CSV, they have an option to download an example CSV file, containing all the available columns that can be imported. This is useful, as it allows the user to import this file directly into their spreadsheet software, and fill it out. - -You can also add an example row to the CSV, to show the user what the data should look like. To fill in this example row, you can pass in an example column value to the `example()` method: - -```php -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('sku') - ->example('ABC123') -``` - -## Using a custom user model - -By default, the `imports` table has a `user_id` column. That column is constrained to the `users` table: - -```php -$table->foreignId('user_id')->constrained()->cascadeOnDelete(); -``` - -In the `Import` model, the `user()` relationship is defined as a `BelongsTo` relationship to the `App\Models\User` model. If the `App\Models\User` model does not exist, or you want to use a different one, you can bind a new `Authenticatable` model to the container in a service provider's `register()` method: - -```php -use App\Models\Admin; -use Illuminate\Contracts\Auth\Authenticatable; - -$this->app->bind(Authenticatable::class, Admin::class); -``` - -If your authenticatable model uses a different table to `users`, you should pass that table name to `constrained()`: - -```php -$table->foreignId('user_id')->constrained('admins')->cascadeOnDelete(); -``` - -### Using a polymorphic user relationship - -If you want to associate imports with multiple user models, you can use a polymorphic `MorphTo` relationship instead. To do this, you need to replace the `user_id` column in the `imports` table: - -```php -$table->morphs('user'); -``` - -Then, in a service provider's `boot()` method, you should call `Import::polymorphicUserRelationship()` to swap the `user()` relationship on the `Import` model to a `MorphTo` relationship: - -```php -use Filament\Actions\Imports\Models\Import; - -Import::polymorphicUserRelationship(); -``` - -## Limiting the maximum number of rows that can be imported - -To prevent server overload, you may wish to limit the maximum number of rows that can be imported from one CSV file. You can do this by calling the `maxRows()` method on the action: - -```php -ImportAction::make() - ->importer(ProductImporter::class) - ->maxRows(100000) -``` - -## Changing the import chunk size - -Filament will chunk the CSV, and process each chunk in a different queued job. By default, chunks are 100 rows at a time. You can change this by calling the `chunkSize()` method on the action: - -```php -ImportAction::make() - ->importer(ProductImporter::class) - ->chunkSize(250) -``` - -If you are encountering memory or timeout issues when importing large CSV files, you may wish to reduce the chunk size. - -## Changing the CSV delimiter - -The default delimiter for CSVs is the comma (`,`). If your import uses a different delimiter, you may call the `csvDelimiter()` method on the action, passing a new one: - -```php -ImportAction::make() - ->importer(ProductImporter::class) - ->csvDelimiter(';') -``` - -You can only specify a single character, otherwise an exception will be thrown. - -## Customizing the import job - -The default job for processing imports is `Filament\Actions\Imports\Jobs\ImportCsv`. If you want to extend this class and override any of its methods, you may replace the original class in the `register()` method of a service provider: - -```php -use App\Jobs\ImportCsv; -use Filament\Actions\Imports\Jobs\ImportCsv as BaseImportCsv; - -$this->app->bind(BaseImportCsv::class, ImportCsv::class); -``` - -Or, you can pass the new job class to the `job()` method on the action, to customize the job for a specific import: - -```php -use App\Jobs\ImportCsv; - -ImportAction::make() - ->importer(ProductImporter::class) - ->job(ImportCsv::class) -``` - -### Customizing the import queue and connection - -By default, the import system will use the default queue and connection. If you'd like to customize the queue used for jobs of a certain importer, you may override the `getJobQueue()` method in your importer class: - -```php -public function getJobQueue(): ?string -{ - return 'imports'; -} -``` - -You can also customize the connection used for jobs of a certain importer, by overriding the `getJobConnection()` method in your importer class: - -```php -public function getJobConnection(): ?string -{ - return 'sqs'; -} -``` - -### Customizing the import job middleware - -By default, the import system will only process one job at a time from each import. This is to prevent the server from being overloaded, and other jobs from being delayed by large imports. That functionality is defined in the `WithoutOverlapping` middleware on the importer class: - -```php -public function getJobMiddleware(): array -{ - return [ - (new WithoutOverlapping("import{$this->import->getKey()}"))->expireAfter(600), - ]; -} -``` - -If you'd like to customize the middleware that is applied to jobs of a certain importer, you may override this method in your importer class. You can read more about job middleware in the [Laravel docs](https://laravel.com/docs/queues#job-middleware). - -### Customizing the import job retries - -By default, the import system will retry a job for 24 hours. This is to allow for temporary issues, such as the database being unavailable, to be resolved. That functionality is defined in the `getJobRetryUntil()` method on the importer class: - -```php -use Carbon\CarbonInterface; - -public function getJobRetryUntil(): ?CarbonInterface -{ - return now()->addDay(); -} -``` - -If you'd like to customize the retry time for jobs of a certain importer, you may override this method in your importer class. You can read more about job retries in the [Laravel docs](https://laravel.com/docs/queues#time-based-attempts). - -### Customizing the import job tags - -By default, the import system will tag each job with the ID of the import. This is to allow you to easily find all jobs related to a certain import. That functionality is defined in the `getJobTags()` method on the importer class: - -```php -public function getJobTags(): array -{ - return ["import{$this->import->getKey()}"]; -} -``` - -If you'd like to customize the tags that are applied to jobs of a certain importer, you may override this method in your importer class. - -## Customizing import validation messages - -The import system will automatically validate the CSV file before it is imported. If there are any errors, the user will be shown a list of them, and the import will not be processed. If you'd like to override any default validation messages, you may do so by overriding the `getValidationMessages()` method on your importer class: - -```php -public function getValidationMessages(): array -{ - return [ - 'name.required' => 'The name column must not be empty.', - ]; -} -``` - -To learn more about customizing validation messages, read the [Laravel docs](https://laravel.com/docs/validation#customizing-the-error-messages). - -### Customizing import validation attributes - -When columns fail validation, their label is used in the error message. To customize the label used in field error messages, use the `validationAttribute()` method: - -```php -use Filament\Actions\Imports\ImportColumn; - -ImportColumn::make('name') - ->validationAttribute('full name') -``` - -## Lifecycle hooks - -Hooks may be used to execute code at various points within an importer's lifecycle, like before a record is saved. To set up a hook, create a protected method on the importer class with the name of the hook: - -```php -protected function beforeSave(): void -{ - // ... -} -``` - -In this example, the code in the `beforeSave()` method will be called before the validated data from the CSV is saved to the database. - -There are several available hooks for importers: - -```php -use Filament\Actions\Imports\Importer; - -class ProductImporter extends Importer -{ - // ... - - protected function beforeValidate(): void - { - // Runs before the CSV data for a row is validated. - } - - protected function afterValidate(): void - { - // Runs after the CSV data for a row is validated. - } - - protected function beforeFill(): void - { - // Runs before the validated CSV data for a row is filled into a model instance. - } - - protected function afterFill(): void - { - // Runs after the validated CSV data for a row is filled into a model instance. - } - - protected function beforeSave(): void - { - // Runs before a record is saved to the database. - } - - protected function beforeCreate(): void - { - // Similar to `beforeSave()`, but only runs when creating a new record. - } - - protected function beforeUpdate(): void - { - // Similar to `beforeSave()`, but only runs when updating an existing record. - } - - protected function afterSave(): void - { - // Runs after a record is saved to the database. - } - - protected function afterCreate(): void - { - // Similar to `afterSave()`, but only runs when creating a new record. - } - - protected function afterUpdate(): void - { - // Similar to `afterSave()`, but only runs when updating an existing record. - } -} -``` - -Inside these hooks, you can access the current row's data using `$this->data`. You can also access the original row of data from the CSV, before it was [cast](#casting-state) or mapped, using `$this->originalData`. - -The current record (if it exists yet) is accessible in `$this->record`, and the [import form options](#using-import-options) using `$this->options`. diff --git a/vendor/filament/actions/docs/07-prebuilt-actions/09-export.md b/vendor/filament/actions/docs/07-prebuilt-actions/09-export.md deleted file mode 100644 index 4f992bfe..00000000 --- a/vendor/filament/actions/docs/07-prebuilt-actions/09-export.md +++ /dev/null @@ -1,562 +0,0 @@ ---- -title: Export action ---- - -## Overview - -Filament v3.2 introduced a prebuilt action that is able to export rows to a CSV or XLSX file. When the trigger button is clicked, a modal asks for the columns that they want to export, and what they should be labeled. This feature uses [job batches](https://laravel.com/docs/queues#job-batching) and [database notifications](../../notifications/database-notifications#overview), so you need to publish those migrations from Laravel. Also, you need to publish the migrations for tables that Filament uses to store information about exports: - -```bash -php artisan queue:batches-table -php artisan notifications:table -php artisan vendor:publish --tag=filament-actions-migrations - -php artisan migrate -``` - -> If you're using PostgreSQL, make sure that the `data` column in the notifications migration is using `json()`: `$table->json('data')`. - -> If you're using UUIDs for your `User` model, make sure that your `notifiable` column in the notifications migration is using `uuidMorphs()`: `$table->uuidMorphs('notifiable')`. - -You may use the `ExportAction` like so: - -```php -use App\Filament\Exports\ProductExporter; -use Filament\Actions\ExportAction; - -ExportAction::make() - ->exporter(ProductExporter::class) -``` - -If you want to add this action to the header of a table instead, you can use `Filament\Tables\Actions\ExportAction`: - -```php -use App\Filament\Exports\ProductExporter; -use Filament\Tables\Actions\ExportAction; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return $table - ->headerActions([ - ExportAction::make() - ->exporter(ProductExporter::class) - ]); -} -``` - -Or if you want to add it as a table bulk action, so that the user can choose which rows to export, they can use `Filament\Tables\Actions\ExportBulkAction`: - -```php -use App\Filament\Exports\ProductExporter; -use Filament\Tables\Actions\ExportBulkAction; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return $table - ->bulkActions([ - ExportBulkAction::make() - ->exporter(ProductExporter::class) - ]); -} -``` - -The ["exporter" class needs to be created](#creating-an-exporter) to tell Filament how to export each row. - -## Creating an exporter - -To create an exporter class for a model, you may use the `make:filament-exporter` command, passing the name of a model: - -```bash -php artisan make:filament-exporter Product -``` - -This will create a new class in the `app/Filament/Exports` directory. You now need to define the [columns](#defining-exporter-columns) that can be exported. - -### Automatically generating exporter columns - -If you'd like to save time, Filament can automatically generate the [columns](#defining-exporter-columns) for you, based on your model's database columns, using `--generate`: - -```bash -php artisan make:filament-exporter Product --generate -``` - -> If your table contains ENUM columns, the `doctrine/dbal` package we use is unable to scan your table and will crash. Hence, Filament is unable to generate the columns for your exporter if it contains an ENUM column. Read more about this issue [here](https://github.com/doctrine/dbal/issues/3819#issuecomment-573419808). - -## Defining exporter columns - -To define the columns that can be exported, you need to override the `getColumns()` method on your exporter class, returning an array of `ExportColumn` objects: - -```php -use Filament\Actions\Exports\ExportColumn; - -public function getColumns(): array -{ - return [ - ExportColumn::make('name'), - ExportColumn::make('sku') - ->label('SKU'), - ExportColumn::make('price'), - ]; -} -``` - -### Customizing the label of an export column - -The label for each column will be generated automatically from its name, but you can override it by calling the `label()` method: - -```php -use Filament\Actions\Exports\ExportColumn; - -ExportColumn::make('sku') - ->label('SKU') -``` - -### Calculated export column state - -Sometimes you need to calculate the state of a column, instead of directly reading it from a database column. - -By passing a callback function to the `state()` method, you can customize the returned state for that column based on the `$record`: - -```php -use App\Models\Order; -use Filament\Actions\Exports\ExportColumn; - -ExportColumn::make('amount_including_vat') - ->state(function (Order $record): float { - return $record->amount * (1 + $record->vat_rate); - }) -``` - -### Formatting the value of an export column - -You may instead pass a custom formatting callback to `formatStateUsing()`, which accepts the `$state` of the cell, and optionally the Eloquent `$record`: - -```php -use Filament\Actions\Exports\ExportColumn; - -ExportColumn::make('status') - ->formatStateUsing(fn (string $state): string => __("statuses.{$state}")) -``` - -If there are [multiple values](#exporting-multiple-values-in-a-cell) in the column, the function will be called for each value. - -#### Limiting text length - -You may `limit()` the length of the cell's value: - -```php -use Filament\Actions\Exports\ExportColumn; - -ExportColumn::make('description') - ->limit(50) -``` - -#### Limiting word count - -You may limit the number of `words()` displayed in the cell: - -```php -use Filament\Actions\Exports\ExportColumn; - -ExportColumn::make('description') - ->words(10) -``` - -#### Adding a prefix or suffix - -You may add a `prefix()` or `suffix()` to the cell's value: - -```php -use Filament\Actions\Exports\ExportColumn; - -ExportColumn::make('domain') - ->prefix('https://') - ->suffix('.com') -``` - -### Exporting multiple values in a cell - -By default, if there are multiple values in the column, they will be comma-separated. You may use the `listAsJson()` method to list them as a JSON array instead: - -```php -use Filament\Actions\Exports\ExportColumn; - -ExportColumn::make('tags') - ->listAsJson() -``` - -### Displaying data from relationships - -You may use "dot notation" to access columns within relationships. The name of the relationship comes first, followed by a period, followed by the name of the column to display: - -```php -use Filament\Actions\Exports\ExportColumn; - -ExportColumn::make('author.name') -``` - -### Counting relationships - -If you wish to count the number of related records in a column, you may use the `counts()` method: - -```php -use Filament\Actions\Exports\ExportColumn; - -ExportColumn::make('users_count')->counts('users') -``` - -In this example, `users` is the name of the relationship to count from. The name of the column must be `users_count`, as this is the convention that [Laravel uses](https://laravel.com/docs/eloquent-relationships#counting-related-models) for storing the result. - -If you'd like to scope the relationship before calculating, you can pass an array to the method, where the key is the relationship name and the value is the function to scope the Eloquent query with: - -```php -use Filament\Actions\Exports\ExportColumn; -use Illuminate\Database\Eloquent\Builder; - -ExportColumn::make('users_count')->counts([ - 'users' => fn (Builder $query) => $query->where('is_active', true), -]) -``` - -### Determining relationship existence - -If you simply wish to indicate whether related records exist in a column, you may use the `exists()` method: - -```php -use Filament\Actions\Exports\ExportColumn; - -ExportColumn::make('users_exists')->exists('users') -``` - -In this example, `users` is the name of the relationship to check for existence. The name of the column must be `users_exists`, as this is the convention that [Laravel uses](https://laravel.com/docs/eloquent-relationships#other-aggregate-functions) for storing the result. - -If you'd like to scope the relationship before calculating, you can pass an array to the method, where the key is the relationship name and the value is the function to scope the Eloquent query with: - -```php -use Filament\Actions\Exports\ExportColumn; -use Illuminate\Database\Eloquent\Builder; - -ExportColumn::make('users_exists')->exists([ - 'users' => fn (Builder $query) => $query->where('is_active', true), -]) -``` - -### Aggregating relationships - -Filament provides several methods for aggregating a relationship field, including `avg()`, `max()`, `min()` and `sum()`. For instance, if you wish to show the average of a field on all related records in a column, you may use the `avg()` method: - -```php -use Filament\Actions\Exports\ExportColumn; - -ExportColumn::make('users_avg_age')->avg('users', 'age') -``` - -In this example, `users` is the name of the relationship, while `age` is the field that is being averaged. The name of the column must be `users_avg_age`, as this is the convention that [Laravel uses](https://laravel.com/docs/eloquent-relationships#other-aggregate-functions) for storing the result. - -If you'd like to scope the relationship before calculating, you can pass an array to the method, where the key is the relationship name and the value is the function to scope the Eloquent query with: - -```php -use Filament\Actions\Exports\ExportColumn; -use Illuminate\Database\Eloquent\Builder; - -ExportColumn::make('users_avg_age')->avg([ - 'users' => fn (Builder $query) => $query->where('is_active', true), -], 'age') -``` - -## Configuring the export formats - -By default, the export action will allow the user to choose between both CSV and XLSX formats. You can use the `ExportFormat` enum to customize this, by passing an array of formats to the `formats()` method on the action: - -```php -use App\Filament\Exports\ProductExporter; -use Filament\Actions\ExportAction; -use Filament\Actions\Exports\Enums\ExportFormat; - -ExportAction::make() - ->exporter(ProductExporter::class) - ->formats([ - ExportFormat::Csv, - ]) - // or - ->formats([ - ExportFormat::Xlsx, - ]) - // or - ->formats([ - ExportFormat::Xlsx, - ExportFormat::Csv, - ]) -``` - -Alternatively, you can override the `getFormats()` method on the exporter class, which will set the default formats for all actions that use that exporter: - -```php -use Filament\Actions\Exports\Enums\ExportFormat; - -public function getFormats(): array -{ - return [ - ExportFormat::Csv, - ]; -} -``` - -## Configuring the export filesystem - -### Customizing the storage disk - -By default, exported files will be uploaded to the storage disk defined in the [configuration file](../installation#publishing-configuration). You can also set the `FILAMENT_FILESYSTEM_DISK` environment variable to change this. - -If you want to use a different disk for a specific export, you can pass the disk name to the `disk()` method on the action: - -```php -use Filament\Actions\ExportAction; - -ExportAction::make() - ->exporter(ProductExporter::class) - ->fileDisk('s3') -``` - -Alternatively, you can override the `getFileDisk()` method on the exporter class, returning the name of the disk: - -```php -public function getFileDisk(): string -{ - return 's3'; -} -``` - -### Configuring the export file names - -By default, exported files will have a name generated based on the ID and type of the export. You can also use the `fileName()` method on the action to customize the file name: - -```php -use Filament\Actions\ExportAction; -use Filament\Actions\Exports\Models\Export; - -ExportAction::make() - ->exporter(ProductExporter::class) - ->fileName(fn (Export $export): string => "products-{$export->getKey()}.csv") -``` - -Alternatively, you can override the `getFileName()` method on the exporter class, returning a string: - -```php - -use Filament\Actions\Exports\Models\Export; - -public function getFileName(Export $export): string -{ - return "products-{$export->getKey()}.csv"; -} -``` - -## Using export options - -The export action can render extra form components that the user can interact with when exporting a CSV. This can be useful to allow the user to customize the behavior of the exporter. For instance, you might want a user to be able to choose the format of specific columns when exporting. To do this, you can return options form components from the `getOptionsFormComponents()` method on your exporter class: - -```php -use Filament\Forms\Components\TextInput; - -public static function getOptionsFormComponents(): array -{ - return [ - TextInput::make('descriptionLimit') - ->label('Limit the length of the description column content') - ->integer(), - ]; -} -``` - -Alternatively, you can pass a set of static options to the exporter through the `options()` method on the action: - -```php -use Filament\Actions\ExportAction; - -ExportAction::make() - ->exporter(ProductExporter::class) - ->options([ - 'descriptionLimit' => 250, - ]) -``` - -Now, you can access the data from these options inside the exporter class, by injecting the `$options` argument into any closure function. For example, you might want to use it inside `formatStateUsing()` to [format a column's value](#formatting-the-value-of-an-export-column): - -```php -use Filament\Actions\Exports\ExportColumn; - -ExportColumn::make('description') - ->formatStateUsing(function (string $state, array $options): string { - return (string) str($state)->limit($options['descriptionLimit'] ?? 100); - }) -``` - -Alternatively, since the `$options` argument is passed to all closure functions, you can access it inside `limit()`: - -```php -use Filament\Actions\Exports\ExportColumn; - -ExportColumn::make('description') - ->limit(fn (array $options): int => $options['descriptionLimit'] ?? 100) -``` - -## Using a custom user model - -By default, the `exports` table has a `user_id` column. That column is constrained to the `users` table: - -```php -$table->foreignId('user_id')->constrained()->cascadeOnDelete(); -``` - -In the `Export` model, the `user()` relationship is defined as a `BelongsTo` relationship to the `App\Models\User` model. If the `App\Models\User` model does not exist, or you want to use a different one, you can bind a new `Authenticatable` model to the container in a service provider's `register()` method: - -```php -use App\Models\Admin; -use Illuminate\Contracts\Auth\Authenticatable; - -$this->app->bind(Authenticatable::class, Admin::class); -``` - -If your authenticatable model uses a different table to `users`, you should pass that table name to `constrained()`: - -```php -$table->foreignId('user_id')->constrained('admins')->cascadeOnDelete(); -``` - -### Using a polymorphic user relationship - -If you want to associate exports with multiple user models, you can use a polymorphic `MorphTo` relationship instead. To do this, you need to replace the `user_id` column in the `exports` table: - -```php -$table->morphs('user'); -``` - -Then, in a service provider's `boot()` method, you should call `Export::polymorphicUserRelationship()` to swap the `user()` relationship on the `Export` model to a `MorphTo` relationship: - -```php -use Filament\Actions\Exports\Models\Export; - -Export::polymorphicUserRelationship(); -``` - -## Limiting the maximum number of rows that can be exported - -To prevent server overload, you may wish to limit the maximum number of rows that can be exported from one CSV file. You can do this by calling the `maxRows()` method on the action: - -```php -ExportAction::make() - ->exporter(ProductExporter::class) - ->maxRows(100000) -``` - -## Changing the export chunk size - -Filament will chunk the CSV, and process each chunk in a different queued job. By default, chunks are 100 rows at a time. You can change this by calling the `chunkSize()` method on the action: - -```php -ExportAction::make() - ->exporter(ProductExporter::class) - ->chunkSize(250) -``` - -If you are encountering memory or timeout issues when exporting large CSV files, you may wish to reduce the chunk size. - -## Changing the CSV delimiter - -The default delimiter for CSVs is the comma (`,`). If you want to export using a different delimiter, you may override the `getCsvDelimiter()` method on the exporter class, returning a new one: - -```php -public static function getCsvDelimiter(): string -{ - return ';'; -} -``` - -You can only specify a single character, otherwise an exception will be thrown. - -## Customizing the export job - -The default job for processing exports is `Filament\Actions\Exports\Jobs\PrepareCsvExport`. If you want to extend this class and override any of its methods, you may replace the original class in the `register()` method of a service provider: - -```php -use App\Jobs\PrepareCsvExport; -use Filament\Actions\Exports\Jobs\PrepareCsvExport as BasePrepareCsvExport; - -$this->app->bind(BasePrepareCsvExport::class, PrepareCsvExport::class); -``` - -Or, you can pass the new job class to the `job()` method on the action, to customize the job for a specific export: - -```php -use App\Jobs\PrepareCsvExport; - -ExportAction::make() - ->exporter(ProductExporter::class) - ->job(PrepareCsvExport::class) -``` - -### Customizing the export queue and connection - -By default, the export system will use the default queue and connection. If you'd like to customize the queue used for jobs of a certain exporter, you may override the `getJobQueue()` method in your exporter class: - -```php -public function getJobQueue(): ?string -{ - return 'exports'; -} -``` - -You can also customize the connection used for jobs of a certain exporter, by overriding the `getJobConnection()` method in your exporter class: - -```php -public function getJobConnection(): ?string -{ - return 'sqs'; -} -``` - -### Customizing the export job middleware - -By default, the export system will only process one job at a time from each export. This is to prevent the server from being overloaded, and other jobs from being delayed by large exports. That functionality is defined in the `WithoutOverlapping` middleware on the exporter class: - -```php -public function getJobMiddleware(): array -{ - return [ - (new WithoutOverlapping("export{$this->export->getKey()}"))->expireAfter(600), - ]; -} -``` - -If you'd like to customize the middleware that is applied to jobs of a certain exporter, you may override this method in your exporter class. You can read more about job middleware in the [Laravel docs](https://laravel.com/docs/queues#job-middleware). - -### Customizing the export job retries - -By default, the export system will retry a job for 24 hours. This is to allow for temporary issues, such as the database being unavailable, to be resolved. That functionality is defined in the `getJobRetryUntil()` method on the exporter class: - -```php -use Carbon\CarbonInterface; - -public function getJobRetryUntil(): ?CarbonInterface -{ - return now()->addDay(); -} -``` - -If you'd like to customize the retry time for jobs of a certain exporter, you may override this method in your exporter class. You can read more about job retries in the [Laravel docs](https://laravel.com/docs/queues#time-based-attempts). - -### Customizing the export job tags - -By default, the export system will tag each job with the ID of the export. This is to allow you to easily find all jobs related to a certain export. That functionality is defined in the `getJobTags()` method on the exporter class: - -```php -public function getJobTags(): array -{ - return ["export{$this->export->getKey()}"]; -} -``` - -If you'd like to customize the tags that are applied to jobs of a certain exporter, you may override this method in your exporter class. diff --git a/vendor/filament/actions/docs/08-advanced.md b/vendor/filament/actions/docs/08-advanced.md deleted file mode 100644 index 571650c8..00000000 --- a/vendor/filament/actions/docs/08-advanced.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Advanced actions ---- - -## Action utility injection - -The vast majority of methods used to configure actions accept functions as parameters instead of hardcoded values: - -```php -Action::make('edit') - ->label('Edit post') - ->url(fn (): string => route('posts.edit', ['post' => $this->post])) -``` - -This alone unlocks many customization possibilities. - -The package is also able to inject many utilities to use inside these functions, as parameters. All customization methods that accept functions as arguments can inject utilities. - -These injected utilities require specific parameter names to be used. Otherwise, Filament doesn't know what to inject. - -### Injecting the current modal form data - -If you wish to access the current [modal form data](modals#modal-forms), define a `$data` parameter: - -```php -function (array $data) { - // ... -} -``` - -Be aware that this will be empty if the modal has not been submitted yet. - -### Injecting the current arguments - -If you wish to access the [current arguments](adding-an-action-to-a-livewire-component#passing-action-arguments) that have been passed to the action, define an `$arguments` parameter: - -```php -function (array $arguments) { - // ... -} -``` - -### Injecting the current Livewire component instance - -If you wish to access the current Livewire component instance that the action belongs to, define a `$livewire` parameter: - -```php -use Livewire\Component; - -function (Component $livewire) { - // ... -} -``` - -### Injecting the current action instance - -If you wish to access the current action instance, define a `$action` parameter: - -```php -function (Action $action) { - // ... -} -``` - -### Injecting multiple utilities - -The parameters are injected dynamically using reflection, so you are able to combine multiple parameters in any order: - -```php -use Livewire\Component; - -function (array $arguments, Component $livewire) { - // ... -} -``` - -### Injecting dependencies from Laravel's container - -You may inject anything from Laravel's container like normal, alongside utilities: - -```php -use Illuminate\Http\Request; - -function (Request $request, array $arguments) { - // ... -} -``` diff --git a/vendor/filament/actions/docs/09-testing.md b/vendor/filament/actions/docs/09-testing.md deleted file mode 100644 index 81b46009..00000000 --- a/vendor/filament/actions/docs/09-testing.md +++ /dev/null @@ -1,285 +0,0 @@ ---- -title: Testing ---- - -## Overview - -All examples in this guide will be written using [Pest](https://pestphp.com). However, you can easily adapt this to a PHPUnit. - -Since all actions are mounted to a Livewire component, we're just using Livewire testing helpers everywhere. If you've never tested Livewire components before, please read [this guide](https://livewire.laravel.com/docs/testing) from the Livewire docs. - -## Getting started - -You can call an action by passing its name or class to `callAction()`: - -```php -use function Pest\Livewire\livewire; - -it('can send invoices', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->callAction('send'); - - expect($invoice->refresh()) - ->isSent()->toBeTrue(); -}); -``` - -To pass an array of data into an action, use the `data` parameter: - -```php -use function Pest\Livewire\livewire; - -it('can send invoices', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->callAction('send', data: [ - 'email' => $email = fake()->email(), - ]) - ->assertHasNoActionErrors(); - - expect($invoice->refresh()) - ->isSent()->toBeTrue() - ->recipient_email->toBe($email); -}); -``` - -If you ever need to only set an action's data without immediately calling it, you can use `setActionData()`: - -```php -use function Pest\Livewire\livewire; - -it('can send invoices', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->mountAction('send') - ->setActionData('send', data: [ - 'email' => $email = fake()->email(), - ]) -}); -``` - -## Execution - -To check if an action has been halted, you can use `assertActionHalted()`: - -```php -use function Pest\Livewire\livewire; - -it('stops sending if invoice has no email address', function () { - $invoice = Invoice::factory(['email' => null])->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->callAction('send') - ->assertActionHalted('send'); -}); -``` - -## Errors - -`assertHasNoActionErrors()` is used to assert that no validation errors occurred when submitting the action form. - -To check if a validation error has occurred with the data, use `assertHasActionErrors()`, similar to `assertHasErrors()` in Livewire: - -```php -use function Pest\Livewire\livewire; - -it('can validate invoice recipient email', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->callAction('send', data: [ - 'email' => Str::random(), - ]) - ->assertHasActionErrors(['email' => ['email']]); -}); -``` - -To check if an action is pre-filled with data, you can use the `assertActionDataSet()` method: - -```php -use function Pest\Livewire\livewire; - -it('can send invoices to the primary contact by default', function () { - $invoice = Invoice::factory()->create(); - $recipientEmail = $invoice->company->primaryContact->email; - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->mountAction('send') - ->assertActionDataSet([ - 'email' => $recipientEmail, - ]) - ->callMountedAction() - ->assertHasNoActionErrors(); - - expect($invoice->refresh()) - ->isSent()->toBeTrue() - ->recipient_email->toBe($recipientEmail); -}); -``` - -## Action state - -To ensure that an action exists or doesn't, you can use the `assertActionExists()` or `assertActionDoesNotExist()` method: - -```php -use function Pest\Livewire\livewire; - -it('can send but not unsend invoices', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertActionExists('send') - ->assertActionDoesNotExist('unsend'); -}); -``` - -To ensure an action is hidden or visible for a user, you can use the `assertActionHidden()` or `assertActionVisible()` methods: - -```php -use function Pest\Livewire\livewire; - -it('can only print invoices', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertActionHidden('send') - ->assertActionVisible('print'); -}); -``` - -To ensure an action is enabled or disabled for a user, you can use the `assertActionEnabled()` or `assertActionDisabled()` methods: - -```php -use function Pest\Livewire\livewire; - -it('can only print a sent invoice', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertActionDisabled('send') - ->assertActionEnabled('print'); -}); -``` - -To ensure sets of actions exist in the correct order, you can use `assertActionsExistInOrder()`: - -```php -use function Pest\Livewire\livewire; - -it('can have actions in order', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertActionsExistInOrder(['send', 'export']); -}); -``` - -To check if an action is hidden to a user, you can use the `assertActionHidden()` method: - -```php -use function Pest\Livewire\livewire; - -it('can not send invoices', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertActionHidden('send'); -}); -``` - -## Button appearance - -To ensure an action has the correct label, you can use `assertActionHasLabel()` and `assertActionDoesNotHaveLabel()`: - -```php -use function Pest\Livewire\livewire; - -it('send action has correct label', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertActionHasLabel('send', 'Email Invoice') - ->assertActionDoesNotHaveLabel('send', 'Send'); -}); -``` - -To ensure an action's button is showing the correct icon, you can use `assertActionHasIcon()` or `assertActionDoesNotHaveIcon()`: - -```php -use function Pest\Livewire\livewire; - -it('when enabled the send button has correct icon', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertActionEnabled('send') - ->assertActionHasIcon('send', 'envelope-open') - ->assertActionDoesNotHaveIcon('send', 'envelope'); -}); -``` - -To ensure that an action's button is displaying the right color, you can use `assertActionHasColor()` or `assertActionDoesNotHaveColor()`: - -```php -use function Pest\Livewire\livewire; - -it('actions display proper colors', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertActionHasColor('delete', 'danger') - ->assertActionDoesNotHaveColor('print', 'danger'); -}); -``` - -## URL - -To ensure an action has the correct URL, you can use `assertActionHasUrl()`, `assertActionDoesNotHaveUrl()`, `assertActionShouldOpenUrlInNewTab()`, and `assertActionShouldNotOpenUrlInNewTab()`: - -```php -use function Pest\Livewire\livewire; - -it('links to the correct Filament sites', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertActionHasUrl('filament', 'https://filamentphp.com/') - ->assertActionDoesNotHaveUrl('filament', 'https://github.com/filamentphp/filament') - ->assertActionShouldOpenUrlInNewTab('filament') - ->assertActionShouldNotOpenUrlInNewTab('github'); -}); -``` diff --git a/vendor/filament/actions/docs/10-upgrade-guide.md b/vendor/filament/actions/docs/10-upgrade-guide.md deleted file mode 100644 index ff33cb0e..00000000 --- a/vendor/filament/actions/docs/10-upgrade-guide.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: Upgrading from v2.x ---- - -> If you see anything missing from this guide, please do not hesitate to [make a pull request](https://github.com/filamentphp/filament/edit/3.x/packages/actions/docs/10-upgrade-guide.md) to our repository! Any help is appreciated! - -## New requirements - -- Laravel v9.0+ -- Livewire v3.0+ - -Please upgrade Filament before upgrading to Livewire v3. Instructions on how to upgrade Livewire can be found [here](https://livewire.laravel.com/docs/upgrading). - -> **Livewire v3 is recently released!**
-> The Livewire team have done a great job in making it stable, but it was a complete rewrite of Livewire v2. You may encounter issues, so we recommend testing your application thoroughly before using Filament v3 in production. - -## Upgrading automatically - -The easiest way to upgrade your app is to run the automated upgrade script. This script will automatically upgrade your application to the latest version of Filament and make changes to your code, which handles most breaking changes. - -```bash -composer require filament/upgrade:"^3.2" -W --dev - -vendor/bin/filament-v3 -``` - -Make sure to carefully follow the instructions, and review the changes made by the script. You may need to make some manual changes to your code afterwards, but the script should handle most of the repetitive work for you. - -Finally, you must run `php artisan filament:install` to finalize the Filament v3 installation. This command must be run for all new Filament projects. - -You can now `composer remove filament/upgrade` as you don't need it anymore. - -> Some plugins you're using may not be available in v3 just yet. You could temporarily remove them from your `composer.json` file until they've been upgraded, replace them with a similar plugins that are v3-compatible, wait for the plugins to be upgraded before upgrading your app, or even write PRs to help the authors upgrade them. - -## Upgrading manually - -After upgrading the dependency via Composer, you should execute `php artisan filament:upgrade` in order to clear any Laravel caches and publish the new frontend assets. - -### Low-impact changes - -#### Action execution with forms - -In v2, if you passed a string to the `action()` function, and used a modal, the method with that name on the class would be run when the modal was submitted: - -```php - Action::make('import_data') - ->action('importData') - ->form([ - FileUpload::make('file'), - ]) -``` - -In v3, passing a string to the `action()` hard-wires it to run that action when the trigger button is clicked, so it does not open a modal. - -It is recommended to place your logic in a closure function instead. See the [documentation](overview) for more information. - -One easy alternative is using `Closure::fromCallable()`: - -```php -Action::make('import_data') - ->action(Closure::fromCallable([$this, 'importData'])) -``` diff --git a/vendor/filament/actions/resources/lang/ar/associate.php b/vendor/filament/actions/resources/lang/ar/associate.php deleted file mode 100644 index 09ae37cb..00000000 --- a/vendor/filament/actions/resources/lang/ar/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'ارتباط', - - 'modal' => [ - - 'heading' => 'ربط :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'السجلات', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'ربط', - ], - - 'associate_another' => [ - 'label' => 'ربط وبدء ربط المزيد', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'تم الربط', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ar/attach.php b/vendor/filament/actions/resources/lang/ar/attach.php deleted file mode 100644 index d8ca7a9d..00000000 --- a/vendor/filament/actions/resources/lang/ar/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'إرفاق', - - 'modal' => [ - - 'heading' => 'إرفاق :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'سجل', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'إرفاق', - ], - - 'attach_another' => [ - 'label' => 'إرفاق وبدء إرفاق المزيد', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'تم الإرفاق', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ar/create.php b/vendor/filament/actions/resources/lang/ar/create.php deleted file mode 100644 index 49cf98f9..00000000 --- a/vendor/filament/actions/resources/lang/ar/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'إضافة :label', - - 'modal' => [ - - 'heading' => 'إضافة :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'إضافة', - ], - - 'create_another' => [ - 'label' => 'إضافة وبدء إضافة المزيد', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'تمت الإضافة', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ar/delete.php b/vendor/filament/actions/resources/lang/ar/delete.php deleted file mode 100644 index de2d2508..00000000 --- a/vendor/filament/actions/resources/lang/ar/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'حذف', - - 'modal' => [ - - 'heading' => 'حذف :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'حذف', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'تم الحذف', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'حذف المحدد', - - 'modal' => [ - - 'heading' => 'حذف المحدد :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'حذف', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'تم الحذف', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ar/detach.php b/vendor/filament/actions/resources/lang/ar/detach.php deleted file mode 100644 index 2525194e..00000000 --- a/vendor/filament/actions/resources/lang/ar/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'فصل', - - 'modal' => [ - - 'heading' => 'فصل :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'فصل', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'تم الفصل', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'فصل المحدد', - - 'modal' => [ - - 'heading' => 'فصل المحدد :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'فصل', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'تم الفصل', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ar/dissociate.php b/vendor/filament/actions/resources/lang/ar/dissociate.php deleted file mode 100644 index 85e57829..00000000 --- a/vendor/filament/actions/resources/lang/ar/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'فك الارتباط', - - 'modal' => [ - - 'heading' => 'فك ربط :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'فك الارتباط', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'تم فك الارتباط', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'فك ارتباط المحدد', - - 'modal' => [ - - 'heading' => 'فك ارتباط :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'فك الارتباط', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'تم فك الارتباط', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ar/edit.php b/vendor/filament/actions/resources/lang/ar/edit.php deleted file mode 100644 index c0bc0609..00000000 --- a/vendor/filament/actions/resources/lang/ar/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'تعديل', - - 'modal' => [ - - 'heading' => 'تعديل :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'حفظ التغييرات', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'تم الحفظ', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ar/export.php b/vendor/filament/actions/resources/lang/ar/export.php deleted file mode 100644 index e2353149..00000000 --- a/vendor/filament/actions/resources/lang/ar/export.php +++ /dev/null @@ -1,77 +0,0 @@ - 'تصدير :label', - - 'modal' => [ - - 'heading' => 'تصدير :label', - - 'form' => [ - - 'columns' => [ - - 'label' => 'العواميد', - - 'form' => [ - - 'is_enabled' => [ - 'label' => ':column مفعل', - ], - - 'label' => [ - 'label' => ':column عنوان', - ], - - ], - - ], - - ], - - 'actions' => [ - - 'export' => [ - 'label' => 'تصدير', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'أكتمل التصدير', - - 'actions' => [ - - 'download_csv' => [ - 'label' => 'تحميل بصيغة .csv', - ], - - 'download_xlsx' => [ - 'label' => 'تحميل بصيغة .xlsx', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'الملف الذي تم تحميله كبير جدًا', - 'body' => 'لا يمكنك تصدير أكثر من صف واحد في كل مرة.|لا يمكنك تصدير أكثر من :count صف في كل مرة.', - ], - - 'started' => [ - 'title' => 'بدء التصدير', - 'body' => 'بدأت عملية التصدير الخاصة بك وستتم معالجة صف واحد في الخلفية.|بدأت عملية التصدير الخاصة بك وستتم معالجة :count صفوف في الخلفية.', - ], - - ], - - 'file_name' => 'export-:export_id-:model', - -]; diff --git a/vendor/filament/actions/resources/lang/ar/force-delete.php b/vendor/filament/actions/resources/lang/ar/force-delete.php deleted file mode 100644 index 30d5ab20..00000000 --- a/vendor/filament/actions/resources/lang/ar/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'حذف نهائي', - - 'modal' => [ - - 'heading' => 'حذف نهائي لـ :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'حذف', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'تم الحذف', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'حذف المحدد نهائيا', - - 'modal' => [ - - 'heading' => 'حذف نهائي لـ :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'حذف', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'تم الحذف', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ar/group.php b/vendor/filament/actions/resources/lang/ar/group.php deleted file mode 100644 index 92262577..00000000 --- a/vendor/filament/actions/resources/lang/ar/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'الإجراءات', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ar/import.php b/vendor/filament/actions/resources/lang/ar/import.php deleted file mode 100644 index ea966ca2..00000000 --- a/vendor/filament/actions/resources/lang/ar/import.php +++ /dev/null @@ -1,77 +0,0 @@ - 'استيراد :label', - - 'modal' => [ - - 'heading' => 'استيراد :label', - - 'form' => [ - - 'file' => [ - 'label' => 'ملف', - 'placeholder' => 'تحميل ملف CSV', - ], - - 'columns' => [ - 'label' => 'الأعمدة', - 'placeholder' => 'اختر عمود', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => 'تنزيل مثال لملف CSV', - ], - - 'import' => [ - 'label' => 'استيراد', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'اكتمل الاستيراد', - - 'actions' => [ - - 'download_failed_rows_csv' => [ - 'label' => 'تنزيل معلومات حول الصف الفاشل|تنزيل معلومات حول الصفوف الفاشلة', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'ملف CSV الذي تم تحميله كبير جدًا', - 'body' => 'لا تستطيع استيراد أكثر من صف واحد في كل مرة.|لا تستطيع استيراد أكثر من :count صف في كل مرة.', - ], - - 'started' => [ - 'title' => 'بدء الاستيراد', - 'body' => 'بدأت عملية الاستيراد الخاصة بك وستتم معالجة صف واحد في الخلفية.|بدأت عملية الاستيراد الخاصة بك وستتم معالجة :count صفوف في الخلفية.', - ], - - ], - - 'example_csv' => [ - 'file_name' => ':importer-example', - ], - - 'failure_csv' => [ - 'file_name' => 'import-:import_id-:csv_name-failed-rows', - 'error_header' => 'خطأ', - 'system_error' => 'خطأ في النظام، يرجى الاتصال بالدعم.', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ar/modal.php b/vendor/filament/actions/resources/lang/ar/modal.php deleted file mode 100644 index de234810..00000000 --- a/vendor/filament/actions/resources/lang/ar/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'هل أنت متأكد من القيام بهذه العملية؟', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'إلغاء', - ], - - 'confirm' => [ - 'label' => 'تأكيد', - ], - - 'submit' => [ - 'label' => 'إرسال', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ar/replicate.php b/vendor/filament/actions/resources/lang/ar/replicate.php deleted file mode 100644 index 789ae949..00000000 --- a/vendor/filament/actions/resources/lang/ar/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'نسخة', - - 'modal' => [ - - 'heading' => 'استنساخ :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'نسخ', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'تم النسخ', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ar/restore.php b/vendor/filament/actions/resources/lang/ar/restore.php deleted file mode 100644 index 3714f77e..00000000 --- a/vendor/filament/actions/resources/lang/ar/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'استعادة', - - 'modal' => [ - - 'heading' => 'استعادة :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'استعادة', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'تمت الاستعادة', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'استعادة المحدد', - - 'modal' => [ - - 'heading' => 'استعادة :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'استعادة', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'تمت الاستعادة', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ar/view.php b/vendor/filament/actions/resources/lang/ar/view.php deleted file mode 100644 index b891f813..00000000 --- a/vendor/filament/actions/resources/lang/ar/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'عرض', - - 'modal' => [ - - 'heading' => 'عرض :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'إغلاق', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/az/associate.php b/vendor/filament/actions/resources/lang/az/associate.php deleted file mode 100644 index 6597b203..00000000 --- a/vendor/filament/actions/resources/lang/az/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Əlaqələndir', - - 'modal' => [ - - 'heading' => ':label Əlaqələndir', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Məlumat', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Əlaqələndir', - ], - - 'associate_another' => [ - 'label' => 'Əlaqələndir və başqasına başla', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Əlaqələndirildi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/az/attach.php b/vendor/filament/actions/resources/lang/az/attach.php deleted file mode 100644 index 4078aa70..00000000 --- a/vendor/filament/actions/resources/lang/az/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'İlişdir', - - 'modal' => [ - - 'heading' => ':label ilişdir', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Məlumat', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'İlişdir', - ], - - 'attach_another' => [ - 'label' => 'İlişdir ve başqasına başla', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'İlişdirildi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/az/create.php b/vendor/filament/actions/resources/lang/az/create.php deleted file mode 100644 index 1dafd047..00000000 --- a/vendor/filament/actions/resources/lang/az/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => ':label Yarat', - - 'modal' => [ - - 'heading' => ':label yarat', - - 'actions' => [ - - 'create' => [ - 'label' => 'Yarat', - ], - - 'create_another' => [ - 'label' => 'Yarat ve başqasını yarat', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Yaradıldı', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/az/delete.php b/vendor/filament/actions/resources/lang/az/delete.php deleted file mode 100644 index c675c5ef..00000000 --- a/vendor/filament/actions/resources/lang/az/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Sil', - - 'modal' => [ - - 'heading' => ':label Sil', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Sil', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Silindi', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Seçilənləri sil', - - 'modal' => [ - - 'heading' => 'Seçilənləri sil', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Sil', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Silindi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/az/detach.php b/vendor/filament/actions/resources/lang/az/detach.php deleted file mode 100644 index 653bd8e5..00000000 --- a/vendor/filament/actions/resources/lang/az/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Ayır', - - 'modal' => [ - - 'heading' => ':label ayır', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Ayır', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Ayrıldı', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Seçiləni ayır', - - 'modal' => [ - - 'heading' => ':label seçiləni ayır ', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Seçiləni ayır', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Ayrıldı', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/az/dissociate.php b/vendor/filament/actions/resources/lang/az/dissociate.php deleted file mode 100644 index f6fe130e..00000000 --- a/vendor/filament/actions/resources/lang/az/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Parçala', - - 'modal' => [ - - 'heading' => ':label parçala', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Parçala', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Parçalandı', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Seçiləni parçala', - - 'modal' => [ - - 'heading' => ':label seçiləni parçala', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Seçiləni parçala', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Parçalandı', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/az/edit.php b/vendor/filament/actions/resources/lang/az/edit.php deleted file mode 100644 index 4141d22b..00000000 --- a/vendor/filament/actions/resources/lang/az/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Redaktə et', - - 'modal' => [ - - 'heading' => ':label redaktə et', - - 'actions' => [ - - 'save' => [ - 'label' => 'Yadda saxla', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Yadda saxlanıldı', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/az/force-delete.php b/vendor/filament/actions/resources/lang/az/force-delete.php deleted file mode 100644 index 5e4f2f20..00000000 --- a/vendor/filament/actions/resources/lang/az/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Həmişəlik sil', - - 'modal' => [ - - 'heading' => ':label həmişəlik sil', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Həmişəlik sil', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Məlumat həmişəlik silindi', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Seçilənləri həmişəlik sil', - - 'modal' => [ - - 'heading' => ':label seçilənləri həmişəlik sil', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Həmişəlik sil', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Məlumat həmişəlik silindi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/az/group.php b/vendor/filament/actions/resources/lang/az/group.php deleted file mode 100644 index 1470b5ea..00000000 --- a/vendor/filament/actions/resources/lang/az/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Tətikləyicilər', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/az/modal.php b/vendor/filament/actions/resources/lang/az/modal.php deleted file mode 100644 index b07c5dd6..00000000 --- a/vendor/filament/actions/resources/lang/az/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Bunu etmək istədiyinizdən əminsiniz?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'İmtina', - ], - - 'confirm' => [ - 'label' => 'Təsdiqlə', - ], - - 'submit' => [ - 'label' => 'Təqdim et', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/az/replicate.php b/vendor/filament/actions/resources/lang/az/replicate.php deleted file mode 100644 index f912f57b..00000000 --- a/vendor/filament/actions/resources/lang/az/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Çoxalt', - - 'modal' => [ - - 'heading' => ':label çoxalt', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Çoxalt', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Məlumat çoxaldıldı', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/az/restore.php b/vendor/filament/actions/resources/lang/az/restore.php deleted file mode 100644 index f1712013..00000000 --- a/vendor/filament/actions/resources/lang/az/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Bərpa et', - - 'modal' => [ - - 'heading' => ':label bərpa et', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Bərpa et', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Məlumat bərpa edildi', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Seçilənləri bərpa et', - - 'modal' => [ - - 'heading' => ':label seçilənləri bərpa et', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Bərpa et', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Məlumatlar bərpa edildi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/az/view.php b/vendor/filament/actions/resources/lang/az/view.php deleted file mode 100644 index ed393d4c..00000000 --- a/vendor/filament/actions/resources/lang/az/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Göstər', - - 'modal' => [ - - 'heading' => ':label göstər', - - 'actions' => [ - - 'close' => [ - 'label' => 'Bağla', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bn/associate.php b/vendor/filament/actions/resources/lang/bn/associate.php deleted file mode 100644 index eb17a9ce..00000000 --- a/vendor/filament/actions/resources/lang/bn/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'যুক্ত করুন', - - 'modal' => [ - - 'heading' => ':label যুক্ত করুন', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'রেকর্ড', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'যুক্ত করুন', - ], - - 'associate_another' => [ - 'label' => 'যুক্ত এবং পুনরায় যুক্ত করুন', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'যুক্ত করা হয়েছে', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bn/attach.php b/vendor/filament/actions/resources/lang/bn/attach.php deleted file mode 100644 index 7a14ce71..00000000 --- a/vendor/filament/actions/resources/lang/bn/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'সংযুক্ত করুন', - - 'modal' => [ - - 'heading' => ':label সংযুক্ত করুন', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'রেকর্ড', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'সংযুক্ত করুন', - ], - - 'attach_another' => [ - 'label' => 'সংযুক্ত এবং পুনরায় সংযুক্ত করুন', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'সংযুক্ত করা হয়েছে', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bn/create.php b/vendor/filament/actions/resources/lang/bn/create.php deleted file mode 100644 index ef950bad..00000000 --- a/vendor/filament/actions/resources/lang/bn/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'নতুন :label', - - 'modal' => [ - - 'heading' => ':label তৈরী করুন', - - 'actions' => [ - - 'create' => [ - 'label' => 'তৈরী করুন', - ], - - 'create_another' => [ - 'label' => 'তৈরী এবং নতুন তৈরী করুন', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'তৈরী হয়েছে', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bn/delete.php b/vendor/filament/actions/resources/lang/bn/delete.php deleted file mode 100644 index 96beb71b..00000000 --- a/vendor/filament/actions/resources/lang/bn/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'মুছে ফেলুন', - - 'modal' => [ - - 'heading' => ':label মুছে ফেলুন', - - 'actions' => [ - - 'delete' => [ - 'label' => 'মুছে ফেলুন', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'মুছে ফেলা হয়েছে', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'নির্বাচিত গুলো মুছে ফেলুন', - - 'modal' => [ - - 'heading' => 'নির্বাচিত :label মুছে ফেলুন', - - 'actions' => [ - - 'delete' => [ - 'label' => 'মুছে ফেলুন', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'মুছে ফেলা হয়েছে', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bn/detach.php b/vendor/filament/actions/resources/lang/bn/detach.php deleted file mode 100644 index 5923385b..00000000 --- a/vendor/filament/actions/resources/lang/bn/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'বিচ্ছিন্ন করুন', - - 'modal' => [ - - 'heading' => ':label বিচ্ছিন্ন করুন', - - 'actions' => [ - - 'detach' => [ - 'label' => 'বিচ্ছিন্ন করুন', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'বিচ্ছিন্ন করা হয়েছে', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'নির্বাচিত গুলো বিচ্ছিন্ন করুন', - - 'modal' => [ - - 'heading' => 'নির্বাচিত :label বিচ্ছিন্ন করুন', - - 'actions' => [ - - 'detach' => [ - 'label' => 'বিচ্ছিন্ন করুন', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'বিচ্ছিন্ন করা হয়েছে', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bn/dissociate.php b/vendor/filament/actions/resources/lang/bn/dissociate.php deleted file mode 100644 index f810b518..00000000 --- a/vendor/filament/actions/resources/lang/bn/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'পৃথক করুন', - - 'modal' => [ - - 'heading' => ':label পৃথক করুন', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'পৃথক করুন', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'পৃথক করা হয়েছে', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'নির্বাচিত গুলো পৃথক করুন', - - 'modal' => [ - - 'heading' => 'নির্বাচিত :label পৃথক করুন', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'পৃথক করুন', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'পৃথক করা হয়েছে', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bn/edit.php b/vendor/filament/actions/resources/lang/bn/edit.php deleted file mode 100644 index 82a9669a..00000000 --- a/vendor/filament/actions/resources/lang/bn/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'সম্পাদন করুন', - - 'modal' => [ - - 'heading' => ':label সম্পাদন করুন', - - 'actions' => [ - - 'save' => [ - 'label' => 'সংরক্ষণ করুন', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'সংরক্ষিত হয়েছে', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bn/force-delete.php b/vendor/filament/actions/resources/lang/bn/force-delete.php deleted file mode 100644 index 90d117f5..00000000 --- a/vendor/filament/actions/resources/lang/bn/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'জোর পূর্বক মুছে ফেলুন', - - 'modal' => [ - - 'heading' => ':label জোর পূর্বক মুছে ফেলুন', - - 'actions' => [ - - 'delete' => [ - 'label' => 'মুছে ফেলুন', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'মুছে ফেলা হয়েছে', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'নির্বাচিত গুলো জোর পূর্বক মুছে ফেলুন', - - 'modal' => [ - - 'heading' => ':label জোর পূর্বক মুছে ফেলুন', - - 'actions' => [ - - 'delete' => [ - 'label' => 'মুছে ফেলুন', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'মুছে ফেলা হয়েছে', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bn/group.php b/vendor/filament/actions/resources/lang/bn/group.php deleted file mode 100644 index 51736a20..00000000 --- a/vendor/filament/actions/resources/lang/bn/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'কার্যক্রম', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bn/modal.php b/vendor/filament/actions/resources/lang/bn/modal.php deleted file mode 100644 index 229571aa..00000000 --- a/vendor/filament/actions/resources/lang/bn/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'আপনি কি নিশ্চিত আপনি এটি করতে চান?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'বাতিল করুন', - ], - - 'confirm' => [ - 'label' => 'নিশ্চিত করুন', - ], - - 'submit' => [ - 'label' => 'জমা দিন', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bn/replicate.php b/vendor/filament/actions/resources/lang/bn/replicate.php deleted file mode 100644 index 75f7d846..00000000 --- a/vendor/filament/actions/resources/lang/bn/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'প্রতিরূপ করুন', - - 'modal' => [ - - 'heading' => ':label প্রতিরূপ করুন', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'প্রতিরূপ করুন', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'প্রতিরূপ তৈরি করা হয়েছে', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bn/restore.php b/vendor/filament/actions/resources/lang/bn/restore.php deleted file mode 100644 index 2d25021a..00000000 --- a/vendor/filament/actions/resources/lang/bn/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'পুনরুদ্ধার করুন', - - 'modal' => [ - - 'heading' => ':label পুনরুদ্ধার করুন', - - 'actions' => [ - - 'restore' => [ - 'label' => 'পুনরুদ্ধার করুন', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'পুনরুদ্ধার করা হয়েছে', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'নির্বাচিত গুলো পুনরুদ্ধার করুন', - - 'modal' => [ - - 'heading' => 'নির্বাচিত :label পুনরুদ্ধার করুন', - - 'actions' => [ - - 'restore' => [ - 'label' => 'পুনরুদ্ধার করুন', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'পুনরুদ্ধার করা হয়েছে', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bn/view.php b/vendor/filament/actions/resources/lang/bn/view.php deleted file mode 100644 index 7de9a93f..00000000 --- a/vendor/filament/actions/resources/lang/bn/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'দেখুন', - - 'modal' => [ - - 'heading' => ':label দেখুন', - - 'actions' => [ - - 'close' => [ - 'label' => 'বন্ধ করুন', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bs/associate.php b/vendor/filament/actions/resources/lang/bs/associate.php deleted file mode 100644 index eb971560..00000000 --- a/vendor/filament/actions/resources/lang/bs/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Spajanje', - - 'modal' => [ - - 'heading' => 'Spojite :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Zapis', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Spoji', - ], - - 'associate_another' => [ - 'label' => 'Spojite i spojite još jedan', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Spojeno', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bs/attach.php b/vendor/filament/actions/resources/lang/bs/attach.php deleted file mode 100644 index 0d11cb41..00000000 --- a/vendor/filament/actions/resources/lang/bs/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Priložiti', - - 'modal' => [ - - 'heading' => 'Priložite :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Zapis', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Priložite', - ], - - 'attach_another' => [ - 'label' => 'Priložite i priložite još jedan', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Priloženo', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bs/create.php b/vendor/filament/actions/resources/lang/bs/create.php deleted file mode 100644 index bed39349..00000000 --- a/vendor/filament/actions/resources/lang/bs/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Napraviti', - - 'modal' => [ - - 'heading' => 'Napravite :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Napraviti', - ], - - 'create_another' => [ - 'label' => 'Napravite i napravite još jedan', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Uspješno kreirano', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bs/delete.php b/vendor/filament/actions/resources/lang/bs/delete.php deleted file mode 100644 index 9585005e..00000000 --- a/vendor/filament/actions/resources/lang/bs/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Izbrišite', - - 'modal' => [ - - 'heading' => 'Brisanje :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Izbrišiti', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Izbrisano', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Izbrišite izabrani', - - 'modal' => [ - - 'heading' => 'Izbriši izabrani :label ', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Izbriši izabrani', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Izbrisano', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bs/detach.php b/vendor/filament/actions/resources/lang/bs/detach.php deleted file mode 100644 index 2c2de41c..00000000 --- a/vendor/filament/actions/resources/lang/bs/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Odvojite', - - 'modal' => [ - - 'heading' => 'Odvojite :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Odvojite', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Odvojeno', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Odvojite izabrani', - - 'modal' => [ - - 'heading' => 'Odvojite izabrani :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Odvojite izabrani', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Odvojeno', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bs/dissociate.php b/vendor/filament/actions/resources/lang/bs/dissociate.php deleted file mode 100644 index 2c2de41c..00000000 --- a/vendor/filament/actions/resources/lang/bs/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Odvojite', - - 'modal' => [ - - 'heading' => 'Odvojite :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Odvojite', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Odvojeno', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Odvojite izabrani', - - 'modal' => [ - - 'heading' => 'Odvojite izabrani :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Odvojite izabrani', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Odvojeno', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bs/edit.php b/vendor/filament/actions/resources/lang/bs/edit.php deleted file mode 100644 index 1a18f1f0..00000000 --- a/vendor/filament/actions/resources/lang/bs/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Uredite', - - 'modal' => [ - - 'heading' => 'Uredite :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Sačuvajte', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Sačuvano', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bs/force-delete.php b/vendor/filament/actions/resources/lang/bs/force-delete.php deleted file mode 100644 index 3dd86d56..00000000 --- a/vendor/filament/actions/resources/lang/bs/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Konačno izbrisat', - - 'modal' => [ - - 'heading' => 'Konačno izbrisati :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Izbrasiti', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Zapis izbrisan', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Izabrani konačno izbrisati', - - 'modal' => [ - - 'heading' => 'Konačno izbrisati izabrani :label ', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Izbrisati', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Zapisi izbrisani', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bs/group.php b/vendor/filament/actions/resources/lang/bs/group.php deleted file mode 100644 index edd7ebb4..00000000 --- a/vendor/filament/actions/resources/lang/bs/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Akcije', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bs/modal.php b/vendor/filament/actions/resources/lang/bs/modal.php deleted file mode 100644 index 4d515b6c..00000000 --- a/vendor/filament/actions/resources/lang/bs/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Jeste li sigurni da želite to učiniti?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Prekiniti', - ], - - 'confirm' => [ - 'label' => 'Konfirmisati', - ], - - 'submit' => [ - 'label' => 'Poslati', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bs/replicate.php b/vendor/filament/actions/resources/lang/bs/replicate.php deleted file mode 100644 index c35c2dff..00000000 --- a/vendor/filament/actions/resources/lang/bs/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Duplicirati', - - 'modal' => [ - - 'heading' => 'Duplicirajte :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Duplicirati', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Zapis dupliciran', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bs/restore.php b/vendor/filament/actions/resources/lang/bs/restore.php deleted file mode 100644 index 6973d714..00000000 --- a/vendor/filament/actions/resources/lang/bs/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Restaurirati', - - 'modal' => [ - - 'heading' => 'Restaurirati :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Restaurirati', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Zapis restauriran', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Izabrani restaurirati', - - 'modal' => [ - - 'heading' => 'Restaurirati izabrani :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Restaurirati', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Zapisi restaurirani', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/bs/view.php b/vendor/filament/actions/resources/lang/bs/view.php deleted file mode 100644 index 03d37293..00000000 --- a/vendor/filament/actions/resources/lang/bs/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Pogled', - - 'modal' => [ - - 'heading' => 'Pogled :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Zatvoriti', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ca/associate.php b/vendor/filament/actions/resources/lang/ca/associate.php deleted file mode 100644 index 3b92c32e..00000000 --- a/vendor/filament/actions/resources/lang/ca/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Associar', - - 'modal' => [ - - 'heading' => 'Associar :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Registre', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Associar', - ], - - 'associate_another' => [ - 'label' => 'Associar i associar un altre', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Associat', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ca/attach.php b/vendor/filament/actions/resources/lang/ca/attach.php deleted file mode 100644 index f5d6edae..00000000 --- a/vendor/filament/actions/resources/lang/ca/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Vincular', - - 'modal' => [ - - 'heading' => 'Vincular :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Registre', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Vincular', - ], - - 'attach_another' => [ - 'label' => 'Vincular i vincular un altre', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Vinculats', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ca/create.php b/vendor/filament/actions/resources/lang/ca/create.php deleted file mode 100644 index 167c3e4e..00000000 --- a/vendor/filament/actions/resources/lang/ca/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Crear :label', - - 'modal' => [ - - 'heading' => 'Crear :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Crear', - ], - - 'create_another' => [ - 'label' => 'Crear i crear un altre', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Creat', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ca/delete.php b/vendor/filament/actions/resources/lang/ca/delete.php deleted file mode 100644 index dff64bd6..00000000 --- a/vendor/filament/actions/resources/lang/ca/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Esborrar', - - 'modal' => [ - - 'heading' => 'Esborrar :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Esborrar', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Esborrat', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Esborrar seleccionats', - - 'modal' => [ - - 'heading' => 'Esborrar :label seleccionats', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Esborrar', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Esborrats', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ca/detach.php b/vendor/filament/actions/resources/lang/ca/detach.php deleted file mode 100644 index b1dd0ecc..00000000 --- a/vendor/filament/actions/resources/lang/ca/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Desvincular', - - 'modal' => [ - - 'heading' => 'Desvincular :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Desvincular', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Desvinculat', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Desvincular seleccionats', - - 'modal' => [ - - 'heading' => 'Desvincular :label seleccionats', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Desvincular seleccionats', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Desvinculats', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ca/dissociate.php b/vendor/filament/actions/resources/lang/ca/dissociate.php deleted file mode 100644 index aee6d966..00000000 --- a/vendor/filament/actions/resources/lang/ca/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Dissociar', - - 'modal' => [ - - 'heading' => 'Dissociar :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Dissociar', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Dissociat', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Dissociar seleccionats', - - 'modal' => [ - - 'heading' => 'Dissociar :label seleccionats', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Dissociar', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Dissociats', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ca/edit.php b/vendor/filament/actions/resources/lang/ca/edit.php deleted file mode 100644 index f23fc535..00000000 --- a/vendor/filament/actions/resources/lang/ca/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Editar', - - 'modal' => [ - - 'heading' => 'Editar :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Desar canvis', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Desat', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ca/force-delete.php b/vendor/filament/actions/resources/lang/ca/force-delete.php deleted file mode 100644 index b82f020d..00000000 --- a/vendor/filament/actions/resources/lang/ca/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Forçar l\'esborrat', - - 'modal' => [ - - 'heading' => 'Forçar l\'esborrat de :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Esborrar', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Registre esborrat', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Forçar l\'esborrat dels elements seleccionats', - - 'modal' => [ - - 'heading' => 'Forçar l\'esborrat dels :label seleccionats', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Esborrar', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Registres esborrats', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ca/group.php b/vendor/filament/actions/resources/lang/ca/group.php deleted file mode 100644 index d17c8a06..00000000 --- a/vendor/filament/actions/resources/lang/ca/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Accions', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ca/import.php b/vendor/filament/actions/resources/lang/ca/import.php deleted file mode 100644 index ee350745..00000000 --- a/vendor/filament/actions/resources/lang/ca/import.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Importar :label', - - 'modal' => [ - - 'heading' => 'Importar :label', - - 'form' => [ - - 'file' => [ - 'label' => 'Arxiu', - 'placeholder' => 'Carregar un arxiu CSV', - ], - - 'columns' => [ - 'label' => 'Columnes', - 'placeholder' => 'Seleccionar una columna', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => 'Descarregar arxiu CSV d\'exemple', - ], - - 'import' => [ - 'label' => 'Importar', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Importació completada', - - 'actions' => [ - - 'download_failed_rows_csv' => [ - 'label' => 'Descarregar informació de la fila fallida|Descarregar informació de les files fallides', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'L\'arxiu CSV carregat és massa gran', - 'body' => 'No es pot importar més d\'una fila alhora.|No es poden importar més de :count files alhora.', - ], - - 'started' => [ - 'title' => 'Importació iniciada', - 'body' => 'La vostra importació ha començat i es processarà 1 fila en segon pla.|La vostra importació ha començat i es processaran :count files en segon pla.', - ], - - ], - - 'example_csv' => [ - 'file_name' => ':importer-example', - ], - - 'failure_csv' => [ - 'file_name' => 'import-:import_id-:csv_name-failed-rows', - 'error_header' => 'error', - 'system_error' => 'Error del sistema, poseu-vos en contacte amb el servei d\'assistència.', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ca/modal.php b/vendor/filament/actions/resources/lang/ca/modal.php deleted file mode 100644 index 69d44b4f..00000000 --- a/vendor/filament/actions/resources/lang/ca/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Està segur/a de fer això?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancel·lar', - ], - - 'confirm' => [ - 'label' => 'Confirmar', - ], - - 'submit' => [ - 'label' => 'Enviar', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ca/replicate.php b/vendor/filament/actions/resources/lang/ca/replicate.php deleted file mode 100644 index 51ff4ef7..00000000 --- a/vendor/filament/actions/resources/lang/ca/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Replicar', - - 'modal' => [ - - 'heading' => 'Replicar :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Replicar', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Registre replicat', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ca/restore.php b/vendor/filament/actions/resources/lang/ca/restore.php deleted file mode 100644 index 94592858..00000000 --- a/vendor/filament/actions/resources/lang/ca/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Restaurar', - - 'modal' => [ - - 'heading' => 'Restaurar :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Restaurar', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Registre restaurat', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Restaurar seleccionats', - - 'modal' => [ - - 'heading' => 'Restaurar els :label seleccionats', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Restaurar', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Registres restaurats', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ca/view.php b/vendor/filament/actions/resources/lang/ca/view.php deleted file mode 100644 index 1dc9be66..00000000 --- a/vendor/filament/actions/resources/lang/ca/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Vista', - - 'modal' => [ - - 'heading' => 'Vista de :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Tancar', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ckb/associate.php b/vendor/filament/actions/resources/lang/ckb/associate.php deleted file mode 100644 index e25fd891..00000000 --- a/vendor/filament/actions/resources/lang/ckb/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'هاوبەشکردن', - - 'modal' => [ - - 'heading' => 'هاوبەشکردنی :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'تۆمار', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'هاوبەشکردن', - ], - - 'associate_another' => [ - 'label' => 'هاوبەشکردن و تۆمارێکی تر', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'هاوبەشکراو', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ckb/attach.php b/vendor/filament/actions/resources/lang/ckb/attach.php deleted file mode 100644 index 61444873..00000000 --- a/vendor/filament/actions/resources/lang/ckb/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'لکاندن', - - 'modal' => [ - - 'heading' => 'لکاندنی :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'تۆمار', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'لکاندن', - ], - - 'attach_another' => [ - 'label' => 'لکاندن و تۆمارێکی تر', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'لکێنرا', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ckb/create.php b/vendor/filament/actions/resources/lang/ckb/create.php deleted file mode 100644 index 0712e395..00000000 --- a/vendor/filament/actions/resources/lang/ckb/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'دروستکردنی :label', - - 'modal' => [ - - 'heading' => ':دروستکردنی :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'دروستکرن', - ], - - 'create_another' => [ - 'label' => 'دروستکردن و تۆمارێکی تر', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'دروستکرا', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ckb/delete.php b/vendor/filament/actions/resources/lang/ckb/delete.php deleted file mode 100644 index a6f7ba7c..00000000 --- a/vendor/filament/actions/resources/lang/ckb/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'سڕینەوە', - - 'modal' => [ - - 'heading' => 'سڕینەوەی :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'سڕینەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'سڕدرایەوە', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'سڕینەوەی دیاریکراوەکان', - - 'modal' => [ - - 'heading' => 'سڕینەوەی دیاریکراوەکانی :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'سڕینەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'سڕدرایەوە', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ckb/detach.php b/vendor/filament/actions/resources/lang/ckb/detach.php deleted file mode 100644 index 2b9b52b0..00000000 --- a/vendor/filament/actions/resources/lang/ckb/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'سەربەخۆکردن', - - 'modal' => [ - - 'heading' => 'سەربەخۆکردنی :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'سەربەخۆکردن', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'سەربەخۆکرا', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'سەربەخۆکردنی دیاریکراوەکان', - - 'modal' => [ - - 'heading' => 'سەربەخۆکردنی دیاریکراوەکانی :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'سەربەخۆکردن', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'سەربەخۆکرا', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ckb/dissociate.php b/vendor/filament/actions/resources/lang/ckb/dissociate.php deleted file mode 100644 index b79a824d..00000000 --- a/vendor/filament/actions/resources/lang/ckb/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'جوداکردن', - - 'modal' => [ - - 'heading' => 'جوداکردنی :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'جوداکردن', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'جوداکرا', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'جوداکردنی دیاریکراوەکان', - - 'modal' => [ - - 'heading' => 'جوداکردنی دیاریکراوەکانی :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'جوداکردن', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'جوداکرا', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ckb/edit.php b/vendor/filament/actions/resources/lang/ckb/edit.php deleted file mode 100644 index cdfc3317..00000000 --- a/vendor/filament/actions/resources/lang/ckb/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'دەستکارکردن', - - 'modal' => [ - - 'heading' => 'دەستکارکردنی :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'نوێکردنەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'نوێکرایەوە', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ckb/force-delete.php b/vendor/filament/actions/resources/lang/ckb/force-delete.php deleted file mode 100644 index c984bf30..00000000 --- a/vendor/filament/actions/resources/lang/ckb/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'سڕینەوەی بەهێز', - - 'modal' => [ - - 'heading' => 'سڕینەوەی بەهێزی :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'سڕینەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'سڕدرایەوە', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'سڕینەوەی بەهێزی دیاریکراوەکان', - - 'modal' => [ - - 'heading' => 'سڕینەوەی بەهێزی دیاریکراوەکانی :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'سڕینەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'سڕدرایەوە', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ckb/group.php b/vendor/filament/actions/resources/lang/ckb/group.php deleted file mode 100644 index 700a02e4..00000000 --- a/vendor/filament/actions/resources/lang/ckb/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'کردارەکان', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ckb/modal.php b/vendor/filament/actions/resources/lang/ckb/modal.php deleted file mode 100644 index fff5d529..00000000 --- a/vendor/filament/actions/resources/lang/ckb/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'ئایە دڵنیای لە کردنی ئەم کارە؟', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'پاشگەزبوونەوە', - ], - - 'confirm' => [ - 'label' => 'دڵنیام', - ], - - 'submit' => [ - 'label' => 'ناردن', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ckb/replicate.php b/vendor/filament/actions/resources/lang/ckb/replicate.php deleted file mode 100644 index 6fa53174..00000000 --- a/vendor/filament/actions/resources/lang/ckb/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'لەبەرگرتنەوە', - - 'modal' => [ - - 'heading' => 'لەبەرگرتنەوەی :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'لەبەرگرتنەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'لەبەرگیرایەوە', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ckb/restore.php b/vendor/filament/actions/resources/lang/ckb/restore.php deleted file mode 100644 index 15679469..00000000 --- a/vendor/filament/actions/resources/lang/ckb/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'گێڕانەوە', - - 'modal' => [ - - 'heading' => 'گێڕانەوەی :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'گێڕانەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'گێڕێندرایەوە', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'گێڕانەوەی دیاریکراوەکان', - - 'modal' => [ - - 'heading' => 'گێڕانەوەی دیاریکراوەکانی :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'گێڕانەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'گێڕێندرایەوە', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ckb/view.php b/vendor/filament/actions/resources/lang/ckb/view.php deleted file mode 100644 index d6c9542f..00000000 --- a/vendor/filament/actions/resources/lang/ckb/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'بینین', - - 'modal' => [ - - 'heading' => 'بینینی :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'داخستن', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/cs/associate.php b/vendor/filament/actions/resources/lang/cs/associate.php deleted file mode 100644 index 76d44233..00000000 --- a/vendor/filament/actions/resources/lang/cs/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Připojit', - - 'modal' => [ - - 'heading' => 'Připojit :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Záznam', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Připojit', - ], - - 'associate_another' => [ - 'label' => 'Připojit & připojit another', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Připojeno', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/cs/attach.php b/vendor/filament/actions/resources/lang/cs/attach.php deleted file mode 100644 index 4e2605f8..00000000 --- a/vendor/filament/actions/resources/lang/cs/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Přidat', - - 'modal' => [ - - 'heading' => 'Přidat :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Záznam', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Přidat', - ], - - 'attach_another' => [ - 'label' => 'Přidat & přidat další', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Přidáno', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/cs/create.php b/vendor/filament/actions/resources/lang/cs/create.php deleted file mode 100644 index ad4ff5b7..00000000 --- a/vendor/filament/actions/resources/lang/cs/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Vytvořit', - - 'modal' => [ - - 'heading' => 'Vytvořit :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Vytvořit', - ], - - 'create_another' => [ - 'label' => 'Vytvořit & vytvořit další', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Vytvořeno', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/cs/delete.php b/vendor/filament/actions/resources/lang/cs/delete.php deleted file mode 100644 index 7c52d190..00000000 --- a/vendor/filament/actions/resources/lang/cs/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Smazat', - - 'modal' => [ - - 'heading' => 'Smazat :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Smazat', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Smazáno', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Smazat vybrané', - - 'modal' => [ - - 'heading' => 'Smazat vybrané :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Smazat vybrané', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Smazáno', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/cs/detach.php b/vendor/filament/actions/resources/lang/cs/detach.php deleted file mode 100644 index 2bfb535a..00000000 --- a/vendor/filament/actions/resources/lang/cs/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Odebrat', - - 'modal' => [ - - 'heading' => 'Odebrat :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Odebrat', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Odebráno', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Odebrat zvolené', - - 'modal' => [ - - 'heading' => 'Odebrat zvolené :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Odebrat zvolené', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Odebráno', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/cs/dissociate.php b/vendor/filament/actions/resources/lang/cs/dissociate.php deleted file mode 100644 index 13c1ff81..00000000 --- a/vendor/filament/actions/resources/lang/cs/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Odpojit', - - 'modal' => [ - - 'heading' => 'Odpojit :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Odpojit', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Odpojeno', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Odpojit zvolené', - - 'modal' => [ - - 'heading' => 'Odpojit zvolené :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Odpojit zvolené', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Odpojeno', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/cs/edit.php b/vendor/filament/actions/resources/lang/cs/edit.php deleted file mode 100644 index 5cac0617..00000000 --- a/vendor/filament/actions/resources/lang/cs/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Upravit', - - 'modal' => [ - - 'heading' => 'Upravit :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Uložit', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Uloženo', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/cs/force-delete.php b/vendor/filament/actions/resources/lang/cs/force-delete.php deleted file mode 100644 index 6f208293..00000000 --- a/vendor/filament/actions/resources/lang/cs/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Trvale smazat', - - 'modal' => [ - - 'heading' => 'Trvale smazat :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Smazat', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Smazáno', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Trvale smazat vybrané', - - 'modal' => [ - - 'heading' => 'Trvale smazat vybrané :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Smazat', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Smazáno', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/cs/group.php b/vendor/filament/actions/resources/lang/cs/group.php deleted file mode 100644 index f55f9b34..00000000 --- a/vendor/filament/actions/resources/lang/cs/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Akce', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/cs/import.php b/vendor/filament/actions/resources/lang/cs/import.php deleted file mode 100644 index 8e03419d..00000000 --- a/vendor/filament/actions/resources/lang/cs/import.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Import :label', - - 'modal' => [ - - 'heading' => 'Import :label', - - 'form' => [ - - 'file' => [ - 'label' => 'Soubor', - 'placeholder' => 'Nahrát CSV soubor', - ], - - 'columns' => [ - 'label' => 'Sloupce', - 'placeholder' => 'Vyberte sloupec', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => 'Stáhnout vzorový soubor CSV', - ], - - 'import' => [ - 'label' => 'Import', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Import dokončen', - - 'actions' => [ - - 'download_failed_rows_csv' => [ - 'label' => 'Stáhnout informace o chybném řádku|Stáhnout informace o chybných řádcích', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'Nahraný CSV soubor je příliš velký', - 'body' => 'Nelze importovat více než 1 řádek najednou.|Nelze importovat více než :count řádků najednou.', - ], - - 'started' => [ - 'title' => 'Zahájení importu', - 'body' => 'Váš import byl zahájen a na pozadí bude zpracován 1 řádek.|Váš import byl zahájen a na pozadí budou zpracovány řádky :count.', - ], - - ], - - 'example_csv' => [ - 'file_name' => ':importer-example', - ], - - 'failure_csv' => [ - 'file_name' => 'import-:import_id-:csv_name-failed-rows', - 'error_header' => 'chyba', - 'system_error' => 'Chyba systému, kontaktujte prosím podporu.', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/cs/modal.php b/vendor/filament/actions/resources/lang/cs/modal.php deleted file mode 100644 index b681b5cb..00000000 --- a/vendor/filament/actions/resources/lang/cs/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Jste si jistí touto akcí?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Zrušit', - ], - - 'confirm' => [ - 'label' => 'Potvrdit', - ], - - 'submit' => [ - 'label' => 'Odeslat', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/cs/replicate.php b/vendor/filament/actions/resources/lang/cs/replicate.php deleted file mode 100644 index ebf92419..00000000 --- a/vendor/filament/actions/resources/lang/cs/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Duplikovat', - - 'modal' => [ - - 'heading' => 'Duplikovat :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Duplikovat', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Záznam duplikován', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/cs/restore.php b/vendor/filament/actions/resources/lang/cs/restore.php deleted file mode 100644 index f454a7ae..00000000 --- a/vendor/filament/actions/resources/lang/cs/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Obnovit', - - 'modal' => [ - - 'heading' => 'Obnovit :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Obnovit', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Obnoveno', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Obnovit vybrané', - - 'modal' => [ - - 'heading' => 'Obnovit vybrané :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Obnovit', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Obnoveno', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/cs/view.php b/vendor/filament/actions/resources/lang/cs/view.php deleted file mode 100644 index dd1abf85..00000000 --- a/vendor/filament/actions/resources/lang/cs/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Zobrazit', - - 'modal' => [ - - 'heading' => 'Zobrazit :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Zavřít', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/da/associate.php b/vendor/filament/actions/resources/lang/da/associate.php deleted file mode 100644 index c2b47f00..00000000 --- a/vendor/filament/actions/resources/lang/da/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Associer', - - 'modal' => [ - - 'heading' => 'Associer :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Registrering', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Associer', - ], - - 'associate_another' => [ - 'label' => 'Associer & Associer en mere', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Associeret', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/da/attach.php b/vendor/filament/actions/resources/lang/da/attach.php deleted file mode 100644 index 76ecd012..00000000 --- a/vendor/filament/actions/resources/lang/da/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Attach', - - 'modal' => [ - - 'heading' => 'Vedhæft :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Record', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Vedhæft', - ], - - 'attach_another' => [ - 'label' => 'Vedhæft & vedhæft en mere', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Vedhæftet', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/da/create.php b/vendor/filament/actions/resources/lang/da/create.php deleted file mode 100644 index 3d551ac4..00000000 --- a/vendor/filament/actions/resources/lang/da/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Opret :label', - - 'modal' => [ - - 'heading' => 'Opret :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Opret', - ], - - 'create_another' => [ - 'label' => 'Opret & opret en mere', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Oprettet', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/da/delete.php b/vendor/filament/actions/resources/lang/da/delete.php deleted file mode 100644 index c3102777..00000000 --- a/vendor/filament/actions/resources/lang/da/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Slet', - - 'modal' => [ - - 'heading' => 'Slet :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Slet', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Slettet', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Slet valgte', - - 'modal' => [ - - 'heading' => 'Slet valgte :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Slet', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Slettet', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/da/detach.php b/vendor/filament/actions/resources/lang/da/detach.php deleted file mode 100644 index ca69792e..00000000 --- a/vendor/filament/actions/resources/lang/da/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Frigør', - - 'modal' => [ - - 'heading' => 'Frigør :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Frigør', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Frigjort', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Frigør valgte', - - 'modal' => [ - - 'heading' => 'Frigør valgte :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Frigør', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Frigjort', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/da/dissociate.php b/vendor/filament/actions/resources/lang/da/dissociate.php deleted file mode 100644 index aa6e713c..00000000 --- a/vendor/filament/actions/resources/lang/da/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Dissocier', - - 'modal' => [ - - 'heading' => 'Dissocier :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Dissocier', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Dissocieret', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Dissocier valgte', - - 'modal' => [ - - 'heading' => 'Dissocier valgte :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Dissocier', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Dissocieret', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/da/edit.php b/vendor/filament/actions/resources/lang/da/edit.php deleted file mode 100644 index 4f0a3fc8..00000000 --- a/vendor/filament/actions/resources/lang/da/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Rediger', - - 'modal' => [ - - 'heading' => 'Rediger :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Gem ændringer', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Gemt', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/da/export.php b/vendor/filament/actions/resources/lang/da/export.php deleted file mode 100644 index 5c4e0542..00000000 --- a/vendor/filament/actions/resources/lang/da/export.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Eksporter :label', - - 'modal' => [ - - 'heading' => 'Eksporter :label', - - 'form' => [ - - 'columns' => [ - - 'label' => 'Kolonner', - - 'form' => [ - - 'is_enabled' => [ - 'label' => ':column aktiveret', - ], - - 'label' => [ - 'label' => ':column etiket', - ], - - ], - - ], - - ], - - 'actions' => [ - - 'export' => [ - 'label' => 'Eksporter', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Eksporter fuldført', - - 'actions' => [ - - 'download_csv' => [ - 'label' => 'Download .csv', - ], - - 'download_xlsx' => [ - 'label' => 'Download .xlsx', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'Eksporten er for stor', - 'body' => 'Du må ikke eksportere mere end 1 række på én gang.|Du må ikke eksportere mere end :count rækker på én gang.', - ], - - 'started' => [ - 'title' => 'Eksport er started', - 'body' => 'Din eksport er begyndt, og 1 række vil blive behandlet i baggrunden.|Din eksport er begyndt, og :count rækker vil blive behandlet i baggrunden.', - ], - - ], - - 'file_name' => 'export-:export_id-:model', - -]; diff --git a/vendor/filament/actions/resources/lang/da/force-delete.php b/vendor/filament/actions/resources/lang/da/force-delete.php deleted file mode 100644 index bc9ca087..00000000 --- a/vendor/filament/actions/resources/lang/da/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Fremtving sletning', - - 'modal' => [ - - 'heading' => 'Fremtving sletning af :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Slet', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Slettet', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Fremtving sletning af valgte', - - 'modal' => [ - - 'heading' => 'Fremtving sletning af valgte :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Slet', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Slettet', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/da/group.php b/vendor/filament/actions/resources/lang/da/group.php deleted file mode 100644 index 7745c75c..00000000 --- a/vendor/filament/actions/resources/lang/da/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Handlinger', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/da/import.php b/vendor/filament/actions/resources/lang/da/import.php deleted file mode 100644 index 960b8969..00000000 --- a/vendor/filament/actions/resources/lang/da/import.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Importer :label', - - 'modal' => [ - - 'heading' => 'Importer :label', - - 'form' => [ - - 'file' => [ - 'label' => 'Fil', - 'placeholder' => 'Upload en CSV fil', - ], - - 'columns' => [ - 'label' => 'Kolonner', - 'placeholder' => 'Vælg en kolonne', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => 'Download eksempel på CSV fil', - ], - - 'import' => [ - 'label' => 'Importer', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Import afsluttet', - - 'actions' => [ - - 'download_failed_rows_csv' => [ - 'label' => 'Download information om rækken med fejl|Download information om rækkerne med fejl', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'Uploadet CSV fil er for stor', - 'body' => 'Du må ikke importere mere end 1 række på én gang.|Du må ikke importere mere end :count rækker på én gang.', - ], - - 'started' => [ - 'title' => 'Import started', - 'body' => 'Din import er begyndt, og 1 række vil blive behandlet i baggrunden.|Din import er begyndt, og :count rækker vil blive behandlet i baggrunden', - ], - - ], - - 'example_csv' => [ - 'file_name' => ':importer-example', - ], - - 'failure_csv' => [ - 'file_name' => 'import-:import_id-:csv_name-failed-rows', - 'error_header' => 'fejl', - 'system_error' => 'Systemfejl, kontakt venligst support.', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/da/modal.php b/vendor/filament/actions/resources/lang/da/modal.php deleted file mode 100644 index f8da34b4..00000000 --- a/vendor/filament/actions/resources/lang/da/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Er du sikker på, at du gerne vil gøre dette?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Annuller', - ], - - 'confirm' => [ - 'label' => 'Bekræft', - ], - - 'submit' => [ - 'label' => 'Send', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/da/replicate.php b/vendor/filament/actions/resources/lang/da/replicate.php deleted file mode 100644 index 3dfeb499..00000000 --- a/vendor/filament/actions/resources/lang/da/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Repliker', - - 'modal' => [ - - 'heading' => 'Repliker :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Repliker', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Replikeret', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/da/restore.php b/vendor/filament/actions/resources/lang/da/restore.php deleted file mode 100644 index 22d3f0d9..00000000 --- a/vendor/filament/actions/resources/lang/da/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Gendan', - - 'modal' => [ - - 'heading' => 'Gendan :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Gendan', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Gendannet', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Gendan valgte', - - 'modal' => [ - - 'heading' => 'Gendan valgte :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Gendan', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Gendannet', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/da/view.php b/vendor/filament/actions/resources/lang/da/view.php deleted file mode 100644 index 7abe0abf..00000000 --- a/vendor/filament/actions/resources/lang/da/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Vis', - - 'modal' => [ - - 'heading' => 'Vis :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Luk', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/de/associate.php b/vendor/filament/actions/resources/lang/de/associate.php deleted file mode 100644 index a5b47634..00000000 --- a/vendor/filament/actions/resources/lang/de/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Verknüpfen', - - 'modal' => [ - - 'heading' => ':label verknüpfen', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Eintrag', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Verknüpfen', - ], - - 'associate_another' => [ - 'label' => 'Verknüpfen & weiterer Eintrag', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Verknüpft', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/de/attach.php b/vendor/filament/actions/resources/lang/de/attach.php deleted file mode 100644 index 667b4b9e..00000000 --- a/vendor/filament/actions/resources/lang/de/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Verknüpfen', - - 'modal' => [ - - 'heading' => ':label verknüpfen', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Eintrag', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Verknüpfen', - ], - - 'attach_another' => [ - 'label' => 'Verknüpfen & weiterer Eintrag', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Verknüpft', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/de/create.php b/vendor/filament/actions/resources/lang/de/create.php deleted file mode 100644 index bd8c6efd..00000000 --- a/vendor/filament/actions/resources/lang/de/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Erstellen', - - 'modal' => [ - - 'heading' => ':label erstellen', - - 'actions' => [ - - 'create' => [ - 'label' => 'Erstellen', - ], - - 'create_another' => [ - 'label' => 'Erstellen & weiterer Eintrag', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Erstellt', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/de/delete.php b/vendor/filament/actions/resources/lang/de/delete.php deleted file mode 100644 index 351e3d47..00000000 --- a/vendor/filament/actions/resources/lang/de/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Löschen', - - 'modal' => [ - - 'heading' => ':label löschen', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Löschen', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Gelöscht', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Ausgewählte löschen', - - 'modal' => [ - - 'heading' => 'Ausgewählte :label löschen', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Ausgewählte löschen', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Gelöscht', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/de/detach.php b/vendor/filament/actions/resources/lang/de/detach.php deleted file mode 100644 index 159d490b..00000000 --- a/vendor/filament/actions/resources/lang/de/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Trennen', - - 'modal' => [ - - 'heading' => ':label trennen', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Trennen', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Getrennt', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Ausgewählte trennen', - - 'modal' => [ - - 'heading' => 'Ausgewählte :label trennen', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Ausgewählte trennen', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Getrennt', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/de/dissociate.php b/vendor/filament/actions/resources/lang/de/dissociate.php deleted file mode 100644 index 6a3d2c3c..00000000 --- a/vendor/filament/actions/resources/lang/de/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Trennen', - - 'modal' => [ - - 'heading' => ':label trennen', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Trennen', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Getrennt', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Ausgewählte trennen', - - 'modal' => [ - - 'heading' => 'Ausgewählte :label trennen', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Ausgewählte trennen', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Getrennt', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/de/edit.php b/vendor/filament/actions/resources/lang/de/edit.php deleted file mode 100644 index 73da4970..00000000 --- a/vendor/filament/actions/resources/lang/de/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Bearbeiten', - - 'modal' => [ - - 'heading' => ':label bearbeiten', - - 'actions' => [ - - 'save' => [ - 'label' => 'Speichern', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Gespeichert', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/de/force-delete.php b/vendor/filament/actions/resources/lang/de/force-delete.php deleted file mode 100644 index 56440ceb..00000000 --- a/vendor/filament/actions/resources/lang/de/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Endgültig löschen', - - 'modal' => [ - - 'heading' => ':label endgültig löschen', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Löschen', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Eintrag gelöscht', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Ausgewählte endgültig löschen', - - 'modal' => [ - - 'heading' => 'Ausgewählte :label endgültig löschen', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Löschen', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Einträge gelöscht', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/de/group.php b/vendor/filament/actions/resources/lang/de/group.php deleted file mode 100644 index c9ddf6e0..00000000 --- a/vendor/filament/actions/resources/lang/de/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Aktionen', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/de/modal.php b/vendor/filament/actions/resources/lang/de/modal.php deleted file mode 100644 index 9ddc04cb..00000000 --- a/vendor/filament/actions/resources/lang/de/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Sind Sie sicher, dass Sie dies tun möchten?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Abbrechen', - ], - - 'confirm' => [ - 'label' => 'Bestätigen', - ], - - 'submit' => [ - 'label' => 'Absenden', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/de/replicate.php b/vendor/filament/actions/resources/lang/de/replicate.php deleted file mode 100644 index 522689f3..00000000 --- a/vendor/filament/actions/resources/lang/de/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Duplizieren', - - 'modal' => [ - - 'heading' => ':label duplizieren', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Duplizieren', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Eintrag dupliziert', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/de/restore.php b/vendor/filament/actions/resources/lang/de/restore.php deleted file mode 100644 index 45b1e531..00000000 --- a/vendor/filament/actions/resources/lang/de/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Wiederherstellen', - - 'modal' => [ - - 'heading' => ':label wiederherstellen', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Wiederherstellen', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Eintrag wiederhergestellt', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Ausgewählte wiederherstellen', - - 'modal' => [ - - 'heading' => 'Ausgewählte :label wiederherstellen', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Wiederherstellen', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Einträge wiederhergestellt', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/de/view.php b/vendor/filament/actions/resources/lang/de/view.php deleted file mode 100644 index db6bad46..00000000 --- a/vendor/filament/actions/resources/lang/de/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Anzeigen', - - 'modal' => [ - - 'heading' => ':label anzeigen', - - 'actions' => [ - - 'close' => [ - 'label' => 'Schließen', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/el/associate.php b/vendor/filament/actions/resources/lang/el/associate.php deleted file mode 100644 index 2d84348d..00000000 --- a/vendor/filament/actions/resources/lang/el/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Συσχέτιση', - - 'modal' => [ - - 'heading' => 'Associate :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Record', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Associate', - ], - - 'associate_another' => [ - 'label' => 'Associate & associate another', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Associated', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/el/attach.php b/vendor/filament/actions/resources/lang/el/attach.php deleted file mode 100644 index 09dc5499..00000000 --- a/vendor/filament/actions/resources/lang/el/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Attach', - - 'modal' => [ - - 'heading' => 'Attach :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Record', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Attach', - ], - - 'attach_another' => [ - 'label' => 'Attach & attach another', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Attached', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/el/create.php b/vendor/filament/actions/resources/lang/el/create.php deleted file mode 100644 index 8ef283de..00000000 --- a/vendor/filament/actions/resources/lang/el/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Προσθήκη :label', - - 'modal' => [ - - 'heading' => 'Δημιουργία :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Δημιουργία', - ], - - 'create_another' => [ - 'label' => 'Δημιουργία & δημιουργία νέου', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Δημιουργήθηκε επιτυχώς', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/el/delete.php b/vendor/filament/actions/resources/lang/el/delete.php deleted file mode 100644 index 26753646..00000000 --- a/vendor/filament/actions/resources/lang/el/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Διαγραφή', - - 'modal' => [ - - 'heading' => 'Διαγραφή :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Διαγραφή', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Διαγράφηκε επιτυχώς', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Διαγραφή επιλεγμένων', - - 'modal' => [ - - 'heading' => 'Διαγραφή επιλεγμένων :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Διαγραφή', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Διαγράφηκαν επιτυχώς', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/el/detach.php b/vendor/filament/actions/resources/lang/el/detach.php deleted file mode 100644 index d9799c51..00000000 --- a/vendor/filament/actions/resources/lang/el/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Detach', - - 'modal' => [ - - 'heading' => 'Detach :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Detach', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Detached', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Detach selected', - - 'modal' => [ - - 'heading' => 'Detach selected :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Detach', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Detached', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/el/dissociate.php b/vendor/filament/actions/resources/lang/el/dissociate.php deleted file mode 100644 index 7b702482..00000000 --- a/vendor/filament/actions/resources/lang/el/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Dissociate', - - 'modal' => [ - - 'heading' => 'Dissociate :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Dissociate', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Dissociated', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Dissociate selected', - - 'modal' => [ - - 'heading' => 'Dissociate selected :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Dissociate', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Dissociated', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/el/edit.php b/vendor/filament/actions/resources/lang/el/edit.php deleted file mode 100644 index bf36c338..00000000 --- a/vendor/filament/actions/resources/lang/el/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Επεξεργασία', - - 'modal' => [ - - 'heading' => 'Επεξεργασία :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Αποθήκευση αλλαγών', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Η αποθήκευση ολοκληρώθηκε', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/el/export.php b/vendor/filament/actions/resources/lang/el/export.php deleted file mode 100644 index 9c754a9d..00000000 --- a/vendor/filament/actions/resources/lang/el/export.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Export :label', - - 'modal' => [ - - 'heading' => 'Export :label', - - 'form' => [ - - 'columns' => [ - - 'label' => 'Columns', - - 'form' => [ - - 'is_enabled' => [ - 'label' => ':column enabled', - ], - - 'label' => [ - 'label' => ':column label', - ], - - ], - - ], - - ], - - 'actions' => [ - - 'export' => [ - 'label' => 'Export', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Export completed', - - 'actions' => [ - - 'download_csv' => [ - 'label' => 'Download .csv', - ], - - 'download_xlsx' => [ - 'label' => 'Download .xlsx', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'Export is too large', - 'body' => 'You may not export more than 1 row at once.|You may not export more than :count rows at once.', - ], - - 'started' => [ - 'title' => 'Export started', - 'body' => 'Your export has begun and 1 row will be processed in the background.|Your export has begun and :count rows will be processed in the background.', - ], - - ], - - 'file_name' => 'export-:export_id-:model', - -]; diff --git a/vendor/filament/actions/resources/lang/el/force-delete.php b/vendor/filament/actions/resources/lang/el/force-delete.php deleted file mode 100644 index f8ffa526..00000000 --- a/vendor/filament/actions/resources/lang/el/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Καθολική διαγραφή', - - 'modal' => [ - - 'heading' => 'Καθολική διαγραφή :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Διαγραφή', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Διαγράφηκε επιτυχώς', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Καθολική διαγραφή επιλεγμένων', - - 'modal' => [ - - 'heading' => 'Καθολική διαγραφή επιλεγμένων :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Διαγραφή', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Διαγράφηκαν επιτυχώς', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/el/group.php b/vendor/filament/actions/resources/lang/el/group.php deleted file mode 100644 index 92765dc8..00000000 --- a/vendor/filament/actions/resources/lang/el/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Actions', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/el/import.php b/vendor/filament/actions/resources/lang/el/import.php deleted file mode 100644 index 4770427b..00000000 --- a/vendor/filament/actions/resources/lang/el/import.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Import :label', - - 'modal' => [ - - 'heading' => 'Import :label', - - 'form' => [ - - 'file' => [ - 'label' => 'File', - 'placeholder' => 'Upload a CSV file', - ], - - 'columns' => [ - 'label' => 'Columns', - 'placeholder' => 'Select a column', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => 'Download example CSV file', - ], - - 'import' => [ - 'label' => 'Import', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Import completed', - - 'actions' => [ - - 'download_failed_rows_csv' => [ - 'label' => 'Download information about the failed row|Download information about the failed rows', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'Uploaded CSV file is too large', - 'body' => 'You may not import more than 1 row at once.|You may not import more than :count rows at once.', - ], - - 'started' => [ - 'title' => 'Import started', - 'body' => 'Your import has begun and 1 row will be processed in the background.|Your import has begun and :count rows will be processed in the background.', - ], - - ], - - 'example_csv' => [ - 'file_name' => ':importer-example', - ], - - 'failure_csv' => [ - 'file_name' => 'import-:import_id-:csv_name-failed-rows', - 'error_header' => 'error', - 'system_error' => 'System error, please contact support.', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/el/modal.php b/vendor/filament/actions/resources/lang/el/modal.php deleted file mode 100644 index 920e715a..00000000 --- a/vendor/filament/actions/resources/lang/el/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - "Είστε σίγουρος/η γι' αυτή την ενέργεια;", - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Άκυρο', - ], - - 'confirm' => [ - 'label' => 'Επιβεβαίωση', - ], - - 'submit' => [ - 'label' => 'Submit', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/el/replicate.php b/vendor/filament/actions/resources/lang/el/replicate.php deleted file mode 100644 index 4ffd5bb2..00000000 --- a/vendor/filament/actions/resources/lang/el/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Αντιγραφή', - - 'modal' => [ - - 'heading' => 'Αντιγραφή :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Αντιγραφή', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Αντιγράφηκε επιτυχώς', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/el/restore.php b/vendor/filament/actions/resources/lang/el/restore.php deleted file mode 100644 index 5a3b2fe3..00000000 --- a/vendor/filament/actions/resources/lang/el/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Επαναφορά', - - 'modal' => [ - - 'heading' => 'Επαναφορά :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Επαναφορά', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Έγινε επιτυχής επαναφορά', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Επαναφορά επιλεγμένων', - - 'modal' => [ - - 'heading' => 'Επαναφορά επιλεγμένων :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Επαναφορά', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Έγινε επιτυχής επαναφορά', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/el/view.php b/vendor/filament/actions/resources/lang/el/view.php deleted file mode 100644 index db8a83eb..00000000 --- a/vendor/filament/actions/resources/lang/el/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Προβολή', - - 'modal' => [ - - 'heading' => 'Προβολή :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Άκυρο', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/en/associate.php b/vendor/filament/actions/resources/lang/en/associate.php deleted file mode 100644 index 1fe931dc..00000000 --- a/vendor/filament/actions/resources/lang/en/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Associate', - - 'modal' => [ - - 'heading' => 'Associate :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Record', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Associate', - ], - - 'associate_another' => [ - 'label' => 'Associate & associate another', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Associated', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/en/attach.php b/vendor/filament/actions/resources/lang/en/attach.php deleted file mode 100644 index 09dc5499..00000000 --- a/vendor/filament/actions/resources/lang/en/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Attach', - - 'modal' => [ - - 'heading' => 'Attach :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Record', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Attach', - ], - - 'attach_another' => [ - 'label' => 'Attach & attach another', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Attached', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/en/create.php b/vendor/filament/actions/resources/lang/en/create.php deleted file mode 100644 index 7d08c4bb..00000000 --- a/vendor/filament/actions/resources/lang/en/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'New :label', - - 'modal' => [ - - 'heading' => 'Create :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Create', - ], - - 'create_another' => [ - 'label' => 'Create & create another', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Created', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/en/delete.php b/vendor/filament/actions/resources/lang/en/delete.php deleted file mode 100644 index b7276be9..00000000 --- a/vendor/filament/actions/resources/lang/en/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Delete', - - 'modal' => [ - - 'heading' => 'Delete :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Delete', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Deleted', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Delete selected', - - 'modal' => [ - - 'heading' => 'Delete selected :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Delete', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Deleted', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/en/detach.php b/vendor/filament/actions/resources/lang/en/detach.php deleted file mode 100644 index d9799c51..00000000 --- a/vendor/filament/actions/resources/lang/en/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Detach', - - 'modal' => [ - - 'heading' => 'Detach :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Detach', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Detached', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Detach selected', - - 'modal' => [ - - 'heading' => 'Detach selected :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Detach', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Detached', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/en/dissociate.php b/vendor/filament/actions/resources/lang/en/dissociate.php deleted file mode 100644 index 7b702482..00000000 --- a/vendor/filament/actions/resources/lang/en/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Dissociate', - - 'modal' => [ - - 'heading' => 'Dissociate :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Dissociate', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Dissociated', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Dissociate selected', - - 'modal' => [ - - 'heading' => 'Dissociate selected :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Dissociate', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Dissociated', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/en/edit.php b/vendor/filament/actions/resources/lang/en/edit.php deleted file mode 100644 index 28cc2084..00000000 --- a/vendor/filament/actions/resources/lang/en/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Edit', - - 'modal' => [ - - 'heading' => 'Edit :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Save changes', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Saved', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/en/export.php b/vendor/filament/actions/resources/lang/en/export.php deleted file mode 100644 index 9c754a9d..00000000 --- a/vendor/filament/actions/resources/lang/en/export.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Export :label', - - 'modal' => [ - - 'heading' => 'Export :label', - - 'form' => [ - - 'columns' => [ - - 'label' => 'Columns', - - 'form' => [ - - 'is_enabled' => [ - 'label' => ':column enabled', - ], - - 'label' => [ - 'label' => ':column label', - ], - - ], - - ], - - ], - - 'actions' => [ - - 'export' => [ - 'label' => 'Export', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Export completed', - - 'actions' => [ - - 'download_csv' => [ - 'label' => 'Download .csv', - ], - - 'download_xlsx' => [ - 'label' => 'Download .xlsx', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'Export is too large', - 'body' => 'You may not export more than 1 row at once.|You may not export more than :count rows at once.', - ], - - 'started' => [ - 'title' => 'Export started', - 'body' => 'Your export has begun and 1 row will be processed in the background.|Your export has begun and :count rows will be processed in the background.', - ], - - ], - - 'file_name' => 'export-:export_id-:model', - -]; diff --git a/vendor/filament/actions/resources/lang/en/force-delete.php b/vendor/filament/actions/resources/lang/en/force-delete.php deleted file mode 100644 index aa1081c8..00000000 --- a/vendor/filament/actions/resources/lang/en/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Force delete', - - 'modal' => [ - - 'heading' => 'Force delete :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Delete', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Deleted', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Force delete selected', - - 'modal' => [ - - 'heading' => 'Force delete selected :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Delete', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Deleted', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/en/group.php b/vendor/filament/actions/resources/lang/en/group.php deleted file mode 100644 index 92765dc8..00000000 --- a/vendor/filament/actions/resources/lang/en/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Actions', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/en/import.php b/vendor/filament/actions/resources/lang/en/import.php deleted file mode 100644 index 4770427b..00000000 --- a/vendor/filament/actions/resources/lang/en/import.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Import :label', - - 'modal' => [ - - 'heading' => 'Import :label', - - 'form' => [ - - 'file' => [ - 'label' => 'File', - 'placeholder' => 'Upload a CSV file', - ], - - 'columns' => [ - 'label' => 'Columns', - 'placeholder' => 'Select a column', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => 'Download example CSV file', - ], - - 'import' => [ - 'label' => 'Import', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Import completed', - - 'actions' => [ - - 'download_failed_rows_csv' => [ - 'label' => 'Download information about the failed row|Download information about the failed rows', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'Uploaded CSV file is too large', - 'body' => 'You may not import more than 1 row at once.|You may not import more than :count rows at once.', - ], - - 'started' => [ - 'title' => 'Import started', - 'body' => 'Your import has begun and 1 row will be processed in the background.|Your import has begun and :count rows will be processed in the background.', - ], - - ], - - 'example_csv' => [ - 'file_name' => ':importer-example', - ], - - 'failure_csv' => [ - 'file_name' => 'import-:import_id-:csv_name-failed-rows', - 'error_header' => 'error', - 'system_error' => 'System error, please contact support.', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/en/modal.php b/vendor/filament/actions/resources/lang/en/modal.php deleted file mode 100644 index 1ce970d3..00000000 --- a/vendor/filament/actions/resources/lang/en/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Are you sure you would like to do this?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancel', - ], - - 'confirm' => [ - 'label' => 'Confirm', - ], - - 'submit' => [ - 'label' => 'Submit', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/en/replicate.php b/vendor/filament/actions/resources/lang/en/replicate.php deleted file mode 100644 index 7fff7cc7..00000000 --- a/vendor/filament/actions/resources/lang/en/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Replicate', - - 'modal' => [ - - 'heading' => 'Replicate :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Replicate', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Replicated', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/en/restore.php b/vendor/filament/actions/resources/lang/en/restore.php deleted file mode 100644 index 403bc285..00000000 --- a/vendor/filament/actions/resources/lang/en/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Restore', - - 'modal' => [ - - 'heading' => 'Restore :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Restore', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Restored', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Restore selected', - - 'modal' => [ - - 'heading' => 'Restore selected :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Restore', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Restored', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/en/view.php b/vendor/filament/actions/resources/lang/en/view.php deleted file mode 100644 index fd33de1a..00000000 --- a/vendor/filament/actions/resources/lang/en/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'View', - - 'modal' => [ - - 'heading' => 'View :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Close', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/es/associate.php b/vendor/filament/actions/resources/lang/es/associate.php deleted file mode 100644 index f80d2cac..00000000 --- a/vendor/filament/actions/resources/lang/es/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Asociar', - - 'modal' => [ - - 'heading' => 'Asociar :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Registro', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Asociar', - ], - - 'associate_another' => [ - 'label' => 'Asociar y asociar otra', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Asociada', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/es/attach.php b/vendor/filament/actions/resources/lang/es/attach.php deleted file mode 100644 index a42a410b..00000000 --- a/vendor/filament/actions/resources/lang/es/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Vincular', - - 'modal' => [ - - 'heading' => 'Vincular :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Registro', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Vincular', - ], - - 'attach_another' => [ - 'label' => 'Vincular y vincular otro', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Vinculados', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/es/create.php b/vendor/filament/actions/resources/lang/es/create.php deleted file mode 100644 index f311bb1e..00000000 --- a/vendor/filament/actions/resources/lang/es/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Crear :label', - - 'modal' => [ - - 'heading' => 'Crear :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Crear', - ], - - 'create_another' => [ - 'label' => 'Crear y crear otro', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Creado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/es/delete.php b/vendor/filament/actions/resources/lang/es/delete.php deleted file mode 100644 index af13d9e8..00000000 --- a/vendor/filament/actions/resources/lang/es/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Borrar', - - 'modal' => [ - - 'heading' => 'Borrar :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Borrar', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Borrado', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Borrar seleccionados', - - 'modal' => [ - - 'heading' => 'Borrar :label seleccionados', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Borrar', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Borrados', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/es/detach.php b/vendor/filament/actions/resources/lang/es/detach.php deleted file mode 100644 index c758e151..00000000 --- a/vendor/filament/actions/resources/lang/es/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Desvincular', - - 'modal' => [ - - 'heading' => 'Desvincular :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Desvincular', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Desvinculado', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Desvincular seleccionados', - - 'modal' => [ - - 'heading' => 'Desvincular :label seleccionados', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Desvincular seleccionados', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Desvinculados', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/es/dissociate.php b/vendor/filament/actions/resources/lang/es/dissociate.php deleted file mode 100644 index 6109800e..00000000 --- a/vendor/filament/actions/resources/lang/es/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Disociar', - - 'modal' => [ - - 'heading' => 'Disociar :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Disociar', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Disociado', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Disociar seleccionados', - - 'modal' => [ - - 'heading' => 'Disociar :label seleccionados', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Disociar', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Disociados', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/es/edit.php b/vendor/filament/actions/resources/lang/es/edit.php deleted file mode 100644 index 60bad4d9..00000000 --- a/vendor/filament/actions/resources/lang/es/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Editar', - - 'modal' => [ - - 'heading' => 'Editar :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Guardar cambios', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Guardado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/es/export.php b/vendor/filament/actions/resources/lang/es/export.php deleted file mode 100644 index eafe8791..00000000 --- a/vendor/filament/actions/resources/lang/es/export.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Exportar :label', - - 'modal' => [ - - 'heading' => 'Exportar :label', - - 'form' => [ - - 'columns' => [ - - 'label' => 'Columnas', - - 'form' => [ - - 'is_enabled' => [ - 'label' => ':column habilitada', - ], - - 'label' => [ - 'label' => 'etiqueta para :column', - ], - - ], - - ], - - ], - - 'actions' => [ - - 'export' => [ - 'label' => 'Exportar', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Exportación completada', - - 'actions' => [ - - 'download_csv' => [ - 'label' => 'Descargar .csv', - ], - - 'download_xlsx' => [ - 'label' => 'Descargar .xlsx', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'La exportación es demasiado grande', - 'body' => 'No se puede exportar más de 1 fila a la vez.|No se pueden exportar más de :count filas a la vez.', - ], - - 'started' => [ - 'title' => 'Exportación iniciada', - 'body' => 'Su exportación ha comenzado y se procesará 1 fila en segundo plano.|Su exportación ha comenzado y se procesarán :count filas en segundo plano.', - ], - - ], - - 'file_name' => 'export-:export_id-:model', - -]; diff --git a/vendor/filament/actions/resources/lang/es/force-delete.php b/vendor/filament/actions/resources/lang/es/force-delete.php deleted file mode 100644 index 335f1dd8..00000000 --- a/vendor/filament/actions/resources/lang/es/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Forzar borrado', - - 'modal' => [ - - 'heading' => 'Forzar el borrado de :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Eliminar', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Registro eliminado', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Forzar la eliminación de los elementos seleccionados', - - 'modal' => [ - - 'heading' => 'Forzar la eliminación de los :label seleccionados', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Eliminar', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Registros eliminados', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/es/group.php b/vendor/filament/actions/resources/lang/es/group.php deleted file mode 100644 index c07aeb3e..00000000 --- a/vendor/filament/actions/resources/lang/es/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Acciones', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/es/import.php b/vendor/filament/actions/resources/lang/es/import.php deleted file mode 100644 index 0069ccbd..00000000 --- a/vendor/filament/actions/resources/lang/es/import.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Importar :label', - - 'modal' => [ - - 'heading' => 'Importar :label', - - 'form' => [ - - 'file' => [ - 'label' => 'Archivo', - 'placeholder' => 'Cargar un archivo CSV', - ], - - 'columns' => [ - 'label' => 'Columnas', - 'placeholder' => 'Seleccionar una columna', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => 'Descargar archivo CSV de ejemplo', - ], - - 'import' => [ - 'label' => 'Importar', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Importación completada', - - 'actions' => [ - - 'download_failed_rows_csv' => [ - 'label' => 'Descargar información de la fila fallida|Descargar información de las filas fallidas', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'El archivo CSV cargado es demasiado grande', - 'body' => 'No se puede importar más de una fila a la vez.|No se pueden importar más de :count filas a la vez.', - ], - - 'started' => [ - 'title' => 'Importación iniciada', - 'body' => 'Su importación ha comenzado y se procesará 1 fila en segundo plano.|Su importación ha comenzado y se procesarán :count filas en segundo plano.', - ], - - ], - - 'example_csv' => [ - 'file_name' => ':importer-example', - ], - - 'failure_csv' => [ - 'file_name' => 'import-:import_id-:csv_name-failed-rows', - 'error_header' => 'error', - 'system_error' => 'Error del sistema, póngase en contacto con el servicio de asistencia.', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/es/modal.php b/vendor/filament/actions/resources/lang/es/modal.php deleted file mode 100644 index f2a1a099..00000000 --- a/vendor/filament/actions/resources/lang/es/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - '¿Está segura/o de hacer esto?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancelar', - ], - - 'confirm' => [ - 'label' => 'Confirmar', - ], - - 'submit' => [ - 'label' => 'Enviar', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/es/replicate.php b/vendor/filament/actions/resources/lang/es/replicate.php deleted file mode 100644 index 42e10157..00000000 --- a/vendor/filament/actions/resources/lang/es/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Replicar', - - 'modal' => [ - - 'heading' => 'Replicar :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Replicar', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Registro replicado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/es/restore.php b/vendor/filament/actions/resources/lang/es/restore.php deleted file mode 100644 index e6db5caa..00000000 --- a/vendor/filament/actions/resources/lang/es/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Restaurar', - - 'modal' => [ - - 'heading' => 'Restaurar :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Restaurar', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Registro restaurado', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Restaurar seleccionados', - - 'modal' => [ - - 'heading' => 'Restaurar los :label seleccionados', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Restaurar', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Registros restaurados', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/es/view.php b/vendor/filament/actions/resources/lang/es/view.php deleted file mode 100644 index 090f3470..00000000 --- a/vendor/filament/actions/resources/lang/es/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Vista', - - 'modal' => [ - - 'heading' => 'Vista de :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Cerrar', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fa/associate.php b/vendor/filament/actions/resources/lang/fa/associate.php deleted file mode 100644 index 714d68bd..00000000 --- a/vendor/filament/actions/resources/lang/fa/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'ارتباط', - - 'modal' => [ - - 'heading' => 'ارتباط :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'رکورد', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'ارتباط', - ], - - 'associate_another' => [ - 'label' => 'ارتباط و ارتباط دیگر', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'مرتبط شد', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fa/attach.php b/vendor/filament/actions/resources/lang/fa/attach.php deleted file mode 100644 index 5b3ecd0c..00000000 --- a/vendor/filament/actions/resources/lang/fa/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'افزودن', - - 'modal' => [ - - 'heading' => 'افزودن :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'رکورد', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'افزودن', - ], - - 'attach_another' => [ - 'label' => 'افزودن و افزودن یکی دیگر', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'افزوده شد', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fa/create.php b/vendor/filament/actions/resources/lang/fa/create.php deleted file mode 100644 index 80e6a7fa..00000000 --- a/vendor/filament/actions/resources/lang/fa/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'ایجاد :label', - - 'modal' => [ - - 'heading' => 'ایجاد :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'ایجاد', - ], - - 'create_another' => [ - 'label' => 'ایجاد و ایجاد یکی دیگر', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'ایجاد شد', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fa/delete.php b/vendor/filament/actions/resources/lang/fa/delete.php deleted file mode 100644 index 6d44d871..00000000 --- a/vendor/filament/actions/resources/lang/fa/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'حذف', - - 'modal' => [ - - 'heading' => 'حذف :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'حذف', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'حذف شد', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'حذف انتخاب شده‌', - - 'modal' => [ - - 'heading' => 'حذف :label انتخاب شده', - - 'actions' => [ - - 'delete' => [ - 'label' => 'حذف انتخاب شده‌', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'حذف شد', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fa/detach.php b/vendor/filament/actions/resources/lang/fa/detach.php deleted file mode 100644 index 5e6654f8..00000000 --- a/vendor/filament/actions/resources/lang/fa/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'جدا کردن', - - 'modal' => [ - - 'heading' => 'جدا کردن :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'جدا کردن', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'جدا شد', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'جدا کردن انتخاب شده', - - 'modal' => [ - - 'heading' => 'جدا کردن :label انتخاب شده', - - 'actions' => [ - - 'detach' => [ - 'label' => 'جدا کردن انتخاب شده', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'جدا شد', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fa/dissociate.php b/vendor/filament/actions/resources/lang/fa/dissociate.php deleted file mode 100644 index 893e94ca..00000000 --- a/vendor/filament/actions/resources/lang/fa/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'جداکردن', - - 'modal' => [ - - 'heading' => 'جداکردن :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'جداکردن', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'جداکردن', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'جداکردن انتخاب شده', - - 'modal' => [ - - 'heading' => 'جداکردن :label انتخاب شده', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'جداکردن انتخاب شده', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'جدا شد', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fa/edit.php b/vendor/filament/actions/resources/lang/fa/edit.php deleted file mode 100644 index d3cbd465..00000000 --- a/vendor/filament/actions/resources/lang/fa/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'ویرایش', - - 'modal' => [ - - 'heading' => 'ویرایش :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'ذخیره', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'ذخیره شد', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fa/force-delete.php b/vendor/filament/actions/resources/lang/fa/force-delete.php deleted file mode 100644 index d9656763..00000000 --- a/vendor/filament/actions/resources/lang/fa/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'حذف دائمی', - - 'modal' => [ - - 'heading' => 'حذف دائمی :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'حذف', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'رکورد حذف شد', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'حذف دائمی انتخاب شده', - - 'modal' => [ - - 'heading' => 'حذف دائمی :label انتخاب شده', - - 'actions' => [ - - 'delete' => [ - 'label' => 'حذف', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'رکوردها حذف شدند', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fa/group.php b/vendor/filament/actions/resources/lang/fa/group.php deleted file mode 100644 index c3eaca19..00000000 --- a/vendor/filament/actions/resources/lang/fa/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'عملیات', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fa/modal.php b/vendor/filament/actions/resources/lang/fa/modal.php deleted file mode 100644 index ac5ceb84..00000000 --- a/vendor/filament/actions/resources/lang/fa/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'آیا برای انجام این کار مطمئن هستید؟', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'لغو', - ], - - 'confirm' => [ - 'label' => 'تایید', - ], - - 'submit' => [ - 'label' => 'ثبت', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fa/replicate.php b/vendor/filament/actions/resources/lang/fa/replicate.php deleted file mode 100644 index b15d7f23..00000000 --- a/vendor/filament/actions/resources/lang/fa/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'تکثیر', - - 'modal' => [ - - 'heading' => 'تکثیر :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'تکثیر', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'رکورد تکثیر شد', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fa/restore.php b/vendor/filament/actions/resources/lang/fa/restore.php deleted file mode 100644 index 8619c836..00000000 --- a/vendor/filament/actions/resources/lang/fa/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'بازگردانی', - - 'modal' => [ - - 'heading' => 'بازگردانی :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'بازگردانی', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'رکورد بازگردانی شد', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'بازگردانی انتخاب شده', - - 'modal' => [ - - 'heading' => 'بازگردانی :label انتخاب شده', - - 'actions' => [ - - 'restore' => [ - 'label' => 'بازگردانی', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'رکوردها بازگردانی شدند', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fa/view.php b/vendor/filament/actions/resources/lang/fa/view.php deleted file mode 100644 index a65182b9..00000000 --- a/vendor/filament/actions/resources/lang/fa/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'نمایش', - - 'modal' => [ - - 'heading' => 'نمایش :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'بستن', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fi/associate.php b/vendor/filament/actions/resources/lang/fi/associate.php deleted file mode 100644 index d04b5616..00000000 --- a/vendor/filament/actions/resources/lang/fi/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Yhdistä', - - 'modal' => [ - - 'heading' => 'Yhdistä :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Tietue', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Yhdistä', - ], - - 'associate_another' => [ - 'label' => 'Yhdistä & yhdistä toinen', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Yhdistetty', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fi/attach.php b/vendor/filament/actions/resources/lang/fi/attach.php deleted file mode 100644 index 75b5fce1..00000000 --- a/vendor/filament/actions/resources/lang/fi/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Liitä', - - 'modal' => [ - - 'heading' => 'Liitä :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Tietue', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Liitä', - ], - - 'attach_another' => [ - 'label' => 'Liitä & liitä toinen', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Liitetty', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fi/create.php b/vendor/filament/actions/resources/lang/fi/create.php deleted file mode 100644 index fa0cd38e..00000000 --- a/vendor/filament/actions/resources/lang/fi/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Uusi :label', - - 'modal' => [ - - 'heading' => 'Uusi :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Luo', - ], - - 'create_another' => [ - 'label' => 'Luo & luo toinen', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Luotu', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fi/delete.php b/vendor/filament/actions/resources/lang/fi/delete.php deleted file mode 100644 index efa13479..00000000 --- a/vendor/filament/actions/resources/lang/fi/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Poista', - - 'modal' => [ - - 'heading' => 'Poista :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Poista', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Poistettu', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Poista valitut', - - 'modal' => [ - - 'heading' => 'Poista valitut :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Poista', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Poistettu', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fi/detach.php b/vendor/filament/actions/resources/lang/fi/detach.php deleted file mode 100644 index ee4aadf3..00000000 --- a/vendor/filament/actions/resources/lang/fi/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Irrota', - - 'modal' => [ - - 'heading' => 'Irrota :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Irrota', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Irrotettu', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Irrota valitut', - - 'modal' => [ - - 'heading' => 'Irrota valitut :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Irrota valitut', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Irrotettu', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fi/dissociate.php b/vendor/filament/actions/resources/lang/fi/dissociate.php deleted file mode 100644 index d0963979..00000000 --- a/vendor/filament/actions/resources/lang/fi/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Erota', - - 'modal' => [ - - 'heading' => 'Erota :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Erota', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Erotettu', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Erota valitut', - - 'modal' => [ - - 'heading' => 'Erota valitut :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Erota valitut', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Erotettu', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fi/edit.php b/vendor/filament/actions/resources/lang/fi/edit.php deleted file mode 100644 index 11572fab..00000000 --- a/vendor/filament/actions/resources/lang/fi/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Muokkaa', - - 'modal' => [ - - 'heading' => 'Muokkaa :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Tallenna', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Tallennettu', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fi/export.php b/vendor/filament/actions/resources/lang/fi/export.php deleted file mode 100644 index 4a32c752..00000000 --- a/vendor/filament/actions/resources/lang/fi/export.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Vie :label', - - 'modal' => [ - - 'heading' => 'Vie :label', - - 'form' => [ - - 'columns' => [ - - 'label' => 'Kolumnit', - - 'form' => [ - - 'is_enabled' => [ - 'label' => ':column valittu', - ], - - 'label' => [ - 'label' => ':column nimike', - ], - - ], - - ], - - ], - - 'actions' => [ - - 'export' => [ - 'label' => 'Vie', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Vienti valmis', - - 'actions' => [ - - 'download_csv' => [ - 'label' => 'Lataa .csv', - ], - - 'download_xlsx' => [ - 'label' => 'Lataa .xlsx', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'Vienti on liian iso', - 'body' => 'Et voi viedä kuin yhden rivin kerralla.|Et voi viedä kuin :count riviä yhdellä kerralla.', - ], - - 'started' => [ - 'title' => 'Vienti aloitettu', - 'body' => 'Vienti on aloitettu ja 1 rivi käsitellään taustalla.|Vienti on aloitettu ja :count riviä käsitellään taustalla.', - ], - - ], - - 'file_name' => 'export-:export_id-:model', - -]; diff --git a/vendor/filament/actions/resources/lang/fi/force-delete.php b/vendor/filament/actions/resources/lang/fi/force-delete.php deleted file mode 100644 index 5a5c7f48..00000000 --- a/vendor/filament/actions/resources/lang/fi/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Poista lopullisesti', - - 'modal' => [ - - 'heading' => 'Pakota poistaminen :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Poista', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Tietue poistettu', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Poista valitut lopullisesti', - - 'modal' => [ - - 'heading' => 'Poista valitut lopullisesti :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Poista', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Tietueet poistettu', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fi/group.php b/vendor/filament/actions/resources/lang/fi/group.php deleted file mode 100644 index 49a9b289..00000000 --- a/vendor/filament/actions/resources/lang/fi/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Toimenpiteet', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fi/import.php b/vendor/filament/actions/resources/lang/fi/import.php deleted file mode 100644 index 8bfab41a..00000000 --- a/vendor/filament/actions/resources/lang/fi/import.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Tuo :label', - - 'modal' => [ - - 'heading' => 'Tuo :label', - - 'form' => [ - - 'file' => [ - 'label' => 'Tiedosto', - 'placeholder' => 'Siirrä CSV tiedosto', - ], - - 'columns' => [ - 'label' => 'Sarakkeet', - 'placeholder' => 'Valitse sarake', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => 'Lataa esimerkki CSV-tiedosto', - ], - - 'import' => [ - 'label' => 'Tuonti', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Tuonti valmis', - - 'actions' => [ - - 'download_failed_rows_csv' => [ - 'label' => 'Lataa tietoja epäonnistuneesta rivistä|Lataa tietoja epäonnistuneesta riveistä', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'Siirretty CSV on liian iso', - 'body' => 'Voi tuoda vain yhden rivin kerrallaan.|Voit tuoda vain :count riviä kerralla.', - ], - - 'started' => [ - 'title' => 'Tuonti aloitettu', - 'body' => 'Tuonti on aloitettu ja 1 rivi käsitellään taustalla.|Tuonti on aloitettu ja :count riviä käsitellään taustalla.', - ], - - ], - - 'example_csv' => [ - 'file_name' => ':importer-example', - ], - - 'failure_csv' => [ - 'file_name' => 'import-:import_id-:csv_name-failed-rows', - 'error_header' => 'virhe', - 'system_error' => 'Järjestelmävirhe, ota yhteyttä tukeen.', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fi/modal.php b/vendor/filament/actions/resources/lang/fi/modal.php deleted file mode 100644 index dc202f86..00000000 --- a/vendor/filament/actions/resources/lang/fi/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Oletko varma että haluat tehdä tämän?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Peruuta', - ], - - 'confirm' => [ - 'label' => 'Vahvista', - ], - - 'submit' => [ - 'label' => 'Lähetä', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fi/replicate.php b/vendor/filament/actions/resources/lang/fi/replicate.php deleted file mode 100644 index 6c34ff06..00000000 --- a/vendor/filament/actions/resources/lang/fi/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Monista', - - 'modal' => [ - - 'heading' => 'Monista :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Monista', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Tietue monistettu', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fi/restore.php b/vendor/filament/actions/resources/lang/fi/restore.php deleted file mode 100644 index 583cde3c..00000000 --- a/vendor/filament/actions/resources/lang/fi/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Palauta', - - 'modal' => [ - - 'heading' => 'Palauta :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Palauta', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Palautettu', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Palauta valitut', - - 'modal' => [ - - 'heading' => 'Palauta valitut :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Palauta', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Palautettu', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fi/view.php b/vendor/filament/actions/resources/lang/fi/view.php deleted file mode 100644 index ed85c516..00000000 --- a/vendor/filament/actions/resources/lang/fi/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Näytä', - - 'modal' => [ - - 'heading' => 'Näytä :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Sulje', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fr/associate.php b/vendor/filament/actions/resources/lang/fr/associate.php deleted file mode 100644 index a52878db..00000000 --- a/vendor/filament/actions/resources/lang/fr/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Associer', - - 'modal' => [ - - 'heading' => 'Associer :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Enregistrements', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Associer', - ], - - 'associate_another' => [ - 'label' => 'Associer & associer un autre', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Associé', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fr/attach.php b/vendor/filament/actions/resources/lang/fr/attach.php deleted file mode 100644 index c50e3660..00000000 --- a/vendor/filament/actions/resources/lang/fr/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Attacher', - - 'modal' => [ - - 'heading' => 'Attacher :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Enregistrement', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Attacher', - ], - - 'attach_another' => [ - 'label' => 'Attacher & Attacher un autre', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Attaché(e)s', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fr/create.php b/vendor/filament/actions/resources/lang/fr/create.php deleted file mode 100644 index d4a0cbb5..00000000 --- a/vendor/filament/actions/resources/lang/fr/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Créer', - - 'modal' => [ - - 'heading' => 'Créer :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Créer', - ], - - 'create_another' => [ - 'label' => 'Créer & Ajouter un autre', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Créé(e)', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fr/delete.php b/vendor/filament/actions/resources/lang/fr/delete.php deleted file mode 100644 index 57377b3f..00000000 --- a/vendor/filament/actions/resources/lang/fr/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Supprimer', - - 'modal' => [ - - 'heading' => 'Supprimer :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Supprimer', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Supprimé(e)', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Supprimer la sélection', - - 'modal' => [ - - 'heading' => 'Supprimer la sélection de :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Supprimer la sélection', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Supprimé(e)s', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fr/detach.php b/vendor/filament/actions/resources/lang/fr/detach.php deleted file mode 100644 index df6e4090..00000000 --- a/vendor/filament/actions/resources/lang/fr/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Détacher', - - 'modal' => [ - - 'heading' => 'Détacher :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Détacher', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Détaché(e)', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Détacher la sélection', - - 'modal' => [ - - 'heading' => 'Détacher la sélection de :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Détacher la sélection', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Détaché(e)s', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fr/dissociate.php b/vendor/filament/actions/resources/lang/fr/dissociate.php deleted file mode 100644 index 33b3cfd9..00000000 --- a/vendor/filament/actions/resources/lang/fr/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Dissocier', - - 'modal' => [ - - 'heading' => 'Dissocier :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Dissocier', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Dissocié', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Dissocier sélection', - - 'modal' => [ - - 'heading' => 'Dissocier la sélection :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Dissocier sélection', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Dissocié', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fr/edit.php b/vendor/filament/actions/resources/lang/fr/edit.php deleted file mode 100644 index f7d5f0ec..00000000 --- a/vendor/filament/actions/resources/lang/fr/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Modifier', - - 'modal' => [ - - 'heading' => 'Modifier :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Sauvegarder', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Sauvegardé(e)', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fr/force-delete.php b/vendor/filament/actions/resources/lang/fr/force-delete.php deleted file mode 100644 index c125aac0..00000000 --- a/vendor/filament/actions/resources/lang/fr/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Supprimer définitivement', - - 'modal' => [ - - 'heading' => 'Supprimer définitivement :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Supprimer', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Enregistrement supprimé', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Forcer la suppression de la sélection', - - 'modal' => [ - - 'heading' => 'Forcer la suppression de la sélection de :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Supprimer', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Enregistrements supprimés', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fr/group.php b/vendor/filament/actions/resources/lang/fr/group.php deleted file mode 100644 index 92765dc8..00000000 --- a/vendor/filament/actions/resources/lang/fr/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Actions', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fr/import.php b/vendor/filament/actions/resources/lang/fr/import.php deleted file mode 100644 index 384bd5a6..00000000 --- a/vendor/filament/actions/resources/lang/fr/import.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Importer :label', - - 'modal' => [ - - 'heading' => 'Importer :label', - - 'form' => [ - - 'file' => [ - 'label' => 'Fichier', - 'placeholder' => 'Télécharger un fichier CSV', - ], - - 'columns' => [ - 'label' => 'Colonnes', - 'placeholder' => 'Choisir une colonne', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => 'Télécharger le fichier CSV exemple', - ], - - 'import' => [ - 'label' => 'Importer', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Importation terminée', - - 'actions' => [ - - 'download_failed_rows_csv' => [ - 'label' => 'Télécharger les informations sur la ligne qui a échoué|Télécharger les informations sur les lignes qui ont échoué', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'Le fichier CSV est trop volumineux', - 'body' => 'Vous ne pouvez pas importer plus d\'une ligne à la fois.|Vous ne pouvez pas importer plus de :count lignes à la fois.', - ], - - 'started' => [ - 'title' => 'L\'importation a commencée', - 'body' => 'Votre importation a commencé et 1 ligne sera traitée en arrière-plan.|Votre importation a commencé et :count lignes seront traitées en arrière-plan.', - ], - - ], - - 'example_csv' => [ - 'file_name' => ':importer-example', - ], - - 'failure_csv' => [ - 'file_name' => 'import-:import_id-:csv_name-failed-rows', - 'error_header' => 'error', - 'system_error' => 'Erreur système, veuillez contacter le support.', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fr/modal.php b/vendor/filament/actions/resources/lang/fr/modal.php deleted file mode 100644 index 79889de7..00000000 --- a/vendor/filament/actions/resources/lang/fr/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Êtes-vous sûr de vouloir faire cela ?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Annuler', - ], - - 'confirm' => [ - 'label' => 'Confirmer', - ], - - 'submit' => [ - 'label' => 'Soumettre', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fr/replicate.php b/vendor/filament/actions/resources/lang/fr/replicate.php deleted file mode 100644 index f456fd4c..00000000 --- a/vendor/filament/actions/resources/lang/fr/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Dupliquer', - - 'modal' => [ - - 'heading' => 'Dupliquer :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Dupliquer', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Enregistrement dupliqué', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fr/restore.php b/vendor/filament/actions/resources/lang/fr/restore.php deleted file mode 100644 index 68a60f46..00000000 --- a/vendor/filament/actions/resources/lang/fr/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Restaurer', - - 'modal' => [ - - 'heading' => 'Restaurer :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Restaurer', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Enregistrement restauré', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Restaurer la sélection', - - 'modal' => [ - - 'heading' => 'Restaurer la sélection :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Restaurer', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Enregistrements restaurés', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/fr/view.php b/vendor/filament/actions/resources/lang/fr/view.php deleted file mode 100644 index 0b52deb2..00000000 --- a/vendor/filament/actions/resources/lang/fr/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Voir', - - 'modal' => [ - - 'heading' => 'Voir :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Fermer', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/he/associate.php b/vendor/filament/actions/resources/lang/he/associate.php deleted file mode 100644 index baf46870..00000000 --- a/vendor/filament/actions/resources/lang/he/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'שיוכים', - - 'modal' => [ - - 'heading' => 'שייך את :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'רשומה', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'שייך', - ], - - 'associate_another' => [ - 'label' => 'שייך ושייך אחד נוסף', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'שויך', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/he/attach.php b/vendor/filament/actions/resources/lang/he/attach.php deleted file mode 100644 index e0e0b46d..00000000 --- a/vendor/filament/actions/resources/lang/he/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'קשר', - - 'modal' => [ - - 'heading' => 'קשר את :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'רשומה', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'קשר', - ], - - 'attach_another' => [ - 'label' => 'קשר וקשר עוד אחד', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'קושר', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/he/create.php b/vendor/filament/actions/resources/lang/he/create.php deleted file mode 100644 index e8642bdb..00000000 --- a/vendor/filament/actions/resources/lang/he/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => ':label חדש', - - 'modal' => [ - - 'heading' => 'יצירת :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'צור', - ], - - 'create_another' => [ - 'label' => 'צור וצור עוד אחד', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'נוצר', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/he/delete.php b/vendor/filament/actions/resources/lang/he/delete.php deleted file mode 100644 index 0714de0b..00000000 --- a/vendor/filament/actions/resources/lang/he/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'מחיקה', - - 'modal' => [ - - 'heading' => 'מחק את :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'מחק', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'נמחק', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'מחק נבחרים', - - 'modal' => [ - - 'heading' => 'מחק את הנבחרים של :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'מחק', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'נמחק', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/he/detach.php b/vendor/filament/actions/resources/lang/he/detach.php deleted file mode 100644 index 74092e71..00000000 --- a/vendor/filament/actions/resources/lang/he/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'הסר קישור', - - 'modal' => [ - - 'heading' => 'הסר קישור של :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'הסר קישור', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'קישור הוסר', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'הסר קישור של נבחרים', - - 'modal' => [ - - 'heading' => 'הסר קישור נבחרים של :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'הסר קישור', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'קישורים הוסרו', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/he/dissociate.php b/vendor/filament/actions/resources/lang/he/dissociate.php deleted file mode 100644 index 2b28e7b2..00000000 --- a/vendor/filament/actions/resources/lang/he/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'הסר שיוך', - - 'modal' => [ - - 'heading' => 'הסר שיוך של :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'הסר שיוך', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'שיוך הוסר', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'הסר שיוך של נבחרים', - - 'modal' => [ - - 'heading' => 'הסר שיוך נבחרים של :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'הסר שיוך', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'שיוך הוסר', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/he/edit.php b/vendor/filament/actions/resources/lang/he/edit.php deleted file mode 100644 index 65b186ce..00000000 --- a/vendor/filament/actions/resources/lang/he/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'ערוך', - - 'modal' => [ - - 'heading' => 'ערך את :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'שמור שינויים', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'נשמר', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/he/force-delete.php b/vendor/filament/actions/resources/lang/he/force-delete.php deleted file mode 100644 index 0db5c6f9..00000000 --- a/vendor/filament/actions/resources/lang/he/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'מחיקה לתמיד', - - 'modal' => [ - - 'heading' => 'מחק לתמיד את :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'מחק', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'נמחק', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'נבחרו למחיקה לתמיד', - - 'modal' => [ - - 'heading' => 'נבחרו עבור מחיקה לתיד :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'מחק', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'נמחק', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/he/group.php b/vendor/filament/actions/resources/lang/he/group.php deleted file mode 100644 index 1c9220ea..00000000 --- a/vendor/filament/actions/resources/lang/he/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'פעולות', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/he/modal.php b/vendor/filament/actions/resources/lang/he/modal.php deleted file mode 100644 index 51d322fb..00000000 --- a/vendor/filament/actions/resources/lang/he/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'האם אתה בטוח?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'ביטול', - ], - - 'confirm' => [ - 'label' => 'אישור', - ], - - 'submit' => [ - 'label' => 'שלח', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/he/replicate.php b/vendor/filament/actions/resources/lang/he/replicate.php deleted file mode 100644 index 01bdc3e8..00000000 --- a/vendor/filament/actions/resources/lang/he/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'שכפל', - - 'modal' => [ - - 'heading' => 'שכפל את :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'שכפל', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'שוכפל', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/he/restore.php b/vendor/filament/actions/resources/lang/he/restore.php deleted file mode 100644 index e9ea577b..00000000 --- a/vendor/filament/actions/resources/lang/he/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'שחזור', - - 'modal' => [ - - 'heading' => 'שחזר את :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'שחזור', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'שוחזר', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'שחזר את הנבחרים', - - 'modal' => [ - - 'heading' => 'שוחזרו הנבחרים מ :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'שחזר', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'שוחזר', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/he/view.php b/vendor/filament/actions/resources/lang/he/view.php deleted file mode 100644 index 0b5346a9..00000000 --- a/vendor/filament/actions/resources/lang/he/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'תצוגה', - - 'modal' => [ - - 'heading' => 'מציג :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'סגור', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hi/attach.php b/vendor/filament/actions/resources/lang/hi/attach.php deleted file mode 100644 index b5d30d2e..00000000 --- a/vendor/filament/actions/resources/lang/hi/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'जोड़े', - - 'modal' => [ - - 'heading' => ':label जोड़े', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'रिकार्ड्स', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'जोड़े', - ], - - 'attach_another' => [ - 'label' => 'इसे जोड़े और एक और जोड़े', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'जुड़ गया', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hi/create.php b/vendor/filament/actions/resources/lang/hi/create.php deleted file mode 100644 index 45376a1c..00000000 --- a/vendor/filament/actions/resources/lang/hi/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'बनाएँ', - - 'modal' => [ - - 'heading' => ':label बनाएँ', - - 'actions' => [ - - 'create' => [ - 'label' => 'बनाएँ', - ], - - 'create_another' => [ - 'label' => 'बनाएँ और एक और एक और बनाएँ', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'बन गया', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hi/delete.php b/vendor/filament/actions/resources/lang/hi/delete.php deleted file mode 100644 index 316ef93d..00000000 --- a/vendor/filament/actions/resources/lang/hi/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'हटाएँ', - - 'modal' => [ - - 'heading' => ':label हटाएँ', - - 'actions' => [ - - 'delete' => [ - 'label' => 'हटाएँ', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'हटा दिया', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'चयनित हटाएँ', - - 'modal' => [ - - 'heading' => 'चयनित :label हटाएँ', - - 'actions' => [ - - 'delete' => [ - 'label' => 'चयनित हटाएँ', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'हटा दिया', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hi/detach.php b/vendor/filament/actions/resources/lang/hi/detach.php deleted file mode 100644 index cdbff244..00000000 --- a/vendor/filament/actions/resources/lang/hi/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'अलग करें', - - 'modal' => [ - - 'heading' => ':label अलग करें', - - 'actions' => [ - - 'detach' => [ - 'label' => 'अलग करें', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'अलग हो गया', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'चयनित अलग करे', - - 'modal' => [ - - 'heading' => 'चयनित :label अलग करे', - - 'actions' => [ - - 'detach' => [ - 'label' => 'चयनित अलग करे', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'अलग हो गए', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hi/edit.php b/vendor/filament/actions/resources/lang/hi/edit.php deleted file mode 100644 index 0e78a7eb..00000000 --- a/vendor/filament/actions/resources/lang/hi/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'संपादन', - - 'modal' => [ - - 'heading' => ':label संपादित करें', - - 'actions' => [ - - 'save' => [ - 'label' => 'सेव', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'सेव हो गया', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hi/modal.php b/vendor/filament/actions/resources/lang/hi/modal.php deleted file mode 100644 index 85d37c98..00000000 --- a/vendor/filament/actions/resources/lang/hi/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'क्या आप वाकई ऐसा करना चाहेंगे?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'रद्द करें', - ], - - 'confirm' => [ - 'label' => 'पुष्टि करें', - ], - - 'submit' => [ - 'label' => 'सबमिट', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hr/associate.php b/vendor/filament/actions/resources/lang/hr/associate.php deleted file mode 100644 index f76fd052..00000000 --- a/vendor/filament/actions/resources/lang/hr/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Poveži', - - 'modal' => [ - - 'heading' => 'Poveži :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Zapis', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Poveži', - ], - - 'associate_another' => [ - 'label' => 'Poveži i poveži drugi', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Povezano', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hr/attach.php b/vendor/filament/actions/resources/lang/hr/attach.php deleted file mode 100644 index 872f91cd..00000000 --- a/vendor/filament/actions/resources/lang/hr/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Priloži', - - 'modal' => [ - - 'heading' => 'Priloži :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Zapis', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Priloži', - ], - - 'attach_another' => [ - 'label' => 'Priloži i priloži drugi', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Priloženo', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hr/create.php b/vendor/filament/actions/resources/lang/hr/create.php deleted file mode 100644 index 1ed65126..00000000 --- a/vendor/filament/actions/resources/lang/hr/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Dodaj :label', - - 'modal' => [ - - 'heading' => 'Napravi :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Napravi', - ], - - 'create_another' => [ - 'label' => 'Napravi i napravi drugi', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Napravljeno', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hr/delete.php b/vendor/filament/actions/resources/lang/hr/delete.php deleted file mode 100644 index 25b6775a..00000000 --- a/vendor/filament/actions/resources/lang/hr/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Obriši', - - 'modal' => [ - - 'heading' => 'Obriši :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Obriši', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Obrisano', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Obriši odabrano', - - 'modal' => [ - - 'heading' => 'Obriši odabrano :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Obriši', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Obrisano', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hr/detach.php b/vendor/filament/actions/resources/lang/hr/detach.php deleted file mode 100644 index 6d5cc8c7..00000000 --- a/vendor/filament/actions/resources/lang/hr/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Odvoji', - - 'modal' => [ - - 'heading' => 'Odvoji :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Odvoji', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Odvojeno', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Odvoji odabrano', - - 'modal' => [ - - 'heading' => 'Odvoji odabrano :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Odvoji', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Odvojeno', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hr/dissociate.php b/vendor/filament/actions/resources/lang/hr/dissociate.php deleted file mode 100644 index f47a7e33..00000000 --- a/vendor/filament/actions/resources/lang/hr/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Razdvoji', - - 'modal' => [ - - 'heading' => 'Razdvoji :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Razdvoji', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Razdvojeno', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Dissociate selected', - - 'modal' => [ - - 'heading' => 'Razdvoji odabrano :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Razdvoji', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Razdvojeno', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hr/edit.php b/vendor/filament/actions/resources/lang/hr/edit.php deleted file mode 100644 index b72699ff..00000000 --- a/vendor/filament/actions/resources/lang/hr/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Uredi', - - 'modal' => [ - - 'heading' => 'Uredi :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Spremi promjene', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Spremljeno', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hr/force-delete.php b/vendor/filament/actions/resources/lang/hr/force-delete.php deleted file mode 100644 index 6ded95be..00000000 --- a/vendor/filament/actions/resources/lang/hr/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Prisilno izbriši', - - 'modal' => [ - - 'heading' => 'Prisilno izbriši :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Obriši', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Obrisano', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Prisilno izbriši odabrano', - - 'modal' => [ - - 'heading' => 'Prisilno izbriši odabrano :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Obriši', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Obrisano', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hr/group.php b/vendor/filament/actions/resources/lang/hr/group.php deleted file mode 100644 index edd7ebb4..00000000 --- a/vendor/filament/actions/resources/lang/hr/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Akcije', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hr/modal.php b/vendor/filament/actions/resources/lang/hr/modal.php deleted file mode 100644 index bb49ea6e..00000000 --- a/vendor/filament/actions/resources/lang/hr/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Jeste li sigurni da želite to učiniti?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Odustani', - ], - - 'confirm' => [ - 'label' => 'Potvrdi', - ], - - 'submit' => [ - 'label' => 'Pošalji', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hr/replicate.php b/vendor/filament/actions/resources/lang/hr/replicate.php deleted file mode 100644 index fa937b7e..00000000 --- a/vendor/filament/actions/resources/lang/hr/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Repliciraj', - - 'modal' => [ - - 'heading' => 'Repliciraj :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Repliciraj', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Replicirano', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hr/restore.php b/vendor/filament/actions/resources/lang/hr/restore.php deleted file mode 100644 index ef23b7c9..00000000 --- a/vendor/filament/actions/resources/lang/hr/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Vrati', - - 'modal' => [ - - 'heading' => 'Vrati :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Vrati', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Vraćeno', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Vrati odabrano', - - 'modal' => [ - - 'heading' => 'Vrati odabrano :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Vrati', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Vraćeno', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hr/view.php b/vendor/filament/actions/resources/lang/hr/view.php deleted file mode 100644 index ac7b78f2..00000000 --- a/vendor/filament/actions/resources/lang/hr/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Pregledaj', - - 'modal' => [ - - 'heading' => 'Pregled :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Zatvori', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hu/associate.php b/vendor/filament/actions/resources/lang/hu/associate.php deleted file mode 100644 index f4f0d748..00000000 --- a/vendor/filament/actions/resources/lang/hu/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Társítás', - - 'modal' => [ - - 'heading' => ':label társítása', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Elemek', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Társítás', - ], - - 'associate_another' => [ - 'label' => 'Mentés és új társítása', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Társítva', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hu/attach.php b/vendor/filament/actions/resources/lang/hu/attach.php deleted file mode 100644 index 13e620b4..00000000 --- a/vendor/filament/actions/resources/lang/hu/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Csatolás', - - 'modal' => [ - - 'heading' => ':label csatolása', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Elemek', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Csatolás', - ], - - 'attach_another' => [ - 'label' => 'Mentés és új csatolása', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Csatolva', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hu/create.php b/vendor/filament/actions/resources/lang/hu/create.php deleted file mode 100644 index f761e3f4..00000000 --- a/vendor/filament/actions/resources/lang/hu/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Új :label', - - 'modal' => [ - - 'heading' => 'Új :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Létrehozás', - ], - - 'create_another' => [ - 'label' => 'Mentés és új létrehozása', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Létrehozva', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hu/delete.php b/vendor/filament/actions/resources/lang/hu/delete.php deleted file mode 100644 index 1015c003..00000000 --- a/vendor/filament/actions/resources/lang/hu/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Törlés', - - 'modal' => [ - - 'heading' => ':label törlése', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Törlés', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Törölve', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Kijelöltek törlése', - - 'modal' => [ - - 'heading' => 'Kijelölt :label törlése', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Törlés', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Törölve', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hu/detach.php b/vendor/filament/actions/resources/lang/hu/detach.php deleted file mode 100644 index aeb13b54..00000000 --- a/vendor/filament/actions/resources/lang/hu/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Leválasztás', - - 'modal' => [ - - 'heading' => ':label leválasztása', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Leválasztás', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Leválasztva', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Kijelöltek leválasztása', - - 'modal' => [ - - 'heading' => 'Kijelölt :label leválasztása', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Kijelöltek leválasztása', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Leválasztva', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hu/dissociate.php b/vendor/filament/actions/resources/lang/hu/dissociate.php deleted file mode 100644 index 3472ade3..00000000 --- a/vendor/filament/actions/resources/lang/hu/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Lecsatolás', - - 'modal' => [ - - 'heading' => ':label lecstolása', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Lecsatolás', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Lecsatolva', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Kijelöltek lecsatolása', - - 'modal' => [ - - 'heading' => 'Kijelölt :label lecsatolása', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Kijelöltek lecsatolása', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Lecsatolva', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hu/edit.php b/vendor/filament/actions/resources/lang/hu/edit.php deleted file mode 100644 index 6b47c591..00000000 --- a/vendor/filament/actions/resources/lang/hu/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Szerkesztés', - - 'modal' => [ - - 'heading' => ':label szerkesztése', - - 'actions' => [ - - 'save' => [ - 'label' => 'Mentés', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Mentve', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hu/force-delete.php b/vendor/filament/actions/resources/lang/hu/force-delete.php deleted file mode 100644 index b5b8fcaf..00000000 --- a/vendor/filament/actions/resources/lang/hu/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Végleges törlés', - - 'modal' => [ - - 'heading' => ':label végleges törlése', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Törlés', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Törölve', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Kijelöltek végleges törlése', - - 'modal' => [ - - 'heading' => 'Kijelölt :label végleges törlése', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Törlés', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Törölve', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hu/group.php b/vendor/filament/actions/resources/lang/hu/group.php deleted file mode 100644 index c756cfb8..00000000 --- a/vendor/filament/actions/resources/lang/hu/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Műveletek', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hu/import.php b/vendor/filament/actions/resources/lang/hu/import.php deleted file mode 100644 index 78e7e350..00000000 --- a/vendor/filament/actions/resources/lang/hu/import.php +++ /dev/null @@ -1,77 +0,0 @@ - ':label importálása', - - 'modal' => [ - - 'heading' => ':label importálása', - - 'form' => [ - - 'file' => [ - 'label' => 'Fájl', - 'placeholder' => 'Tölts fel egy CSV fájlt', - ], - - 'columns' => [ - 'label' => 'Oszlopok', - 'placeholder' => 'Válassz egy oszlopot', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => 'Minta CSV fájl letöltése', - ], - - 'import' => [ - 'label' => 'Importálás', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Importálás befejezve', - - 'actions' => [ - - 'download_failed_rows_csv' => [ - 'label' => 'Információ letöltése a sikertelenül importált sorról|Információ letöltése a sikertelenül importált sorokról', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'A feltöltött CSV fájl túl nagy', - 'body' => 'Egyszerre nem importálhatsz több mint :count sort.|Egyszerre nem importálhatsz több mint :count sort.', - ], - - 'started' => [ - 'title' => 'Importálás elkezdve', - 'body' => 'A fájl importálása elkezdődött és :count sor feldolgozása jelenleg is zajlik a háttérben.|A fájl importálása elkezdődött és :count sor feldolgozása jelenleg is zajlik a háttérben.', - ], - - ], - - 'example_csv' => [ - 'file_name' => ':importer-minta', - ], - - 'failure_csv' => [ - 'file_name' => 'importálás-:import_id-:csv_name-sikertelen-sorok', - 'error_header' => 'hiba', - 'system_error' => 'Rendszerhiba, kérlek lépj kapcsolatba az ügyfélszolgálattal.', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hu/modal.php b/vendor/filament/actions/resources/lang/hu/modal.php deleted file mode 100644 index 858ee5df..00000000 --- a/vendor/filament/actions/resources/lang/hu/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Biztos, hogy ezt akarod csinálni?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Mégsem', - ], - - 'confirm' => [ - 'label' => 'Megerősítés', - ], - - 'submit' => [ - 'label' => 'Beküldés', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hu/replicate.php b/vendor/filament/actions/resources/lang/hu/replicate.php deleted file mode 100644 index 0abb036f..00000000 --- a/vendor/filament/actions/resources/lang/hu/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Duplikálás', - - 'modal' => [ - - 'heading' => ':label duplikálása', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Duplikálás', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Duplikálva', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hu/restore.php b/vendor/filament/actions/resources/lang/hu/restore.php deleted file mode 100644 index 2fe421b4..00000000 --- a/vendor/filament/actions/resources/lang/hu/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Visszaállítás', - - 'modal' => [ - - 'heading' => ':label visszaállítása', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Visszaállítás', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Visszaállítva', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Kijelöltek visszaállítása', - - 'modal' => [ - - 'heading' => 'Kijelölt :label visszaállítása', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Visszaállítás', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Visszaállítva', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hu/view.php b/vendor/filament/actions/resources/lang/hu/view.php deleted file mode 100644 index dcf0d0ba..00000000 --- a/vendor/filament/actions/resources/lang/hu/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Megtekintés', - - 'modal' => [ - - 'heading' => ':label megtekintése', - - 'actions' => [ - - 'close' => [ - 'label' => 'Bezárás', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hy/associate.php b/vendor/filament/actions/resources/lang/hy/associate.php deleted file mode 100644 index 40aa1cf6..00000000 --- a/vendor/filament/actions/resources/lang/hy/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Ասոցացնել', - - 'modal' => [ - - 'heading' => 'Ասոցացնել :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Գրառումներ', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Ասոցացնել', - ], - - 'associate_another' => [ - 'label' => 'Ասոցացնել և ասոցացնել մեկ այլ', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Ասոցացվել է', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hy/attach.php b/vendor/filament/actions/resources/lang/hy/attach.php deleted file mode 100644 index 35035bec..00000000 --- a/vendor/filament/actions/resources/lang/hy/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Կցել', - - 'modal' => [ - - 'heading' => 'Կցել :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Գրառումներ', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Կցել', - ], - - 'attach_another' => [ - 'label' => 'Կցել և կցել մեկ այլ', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Կցվել է', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hy/create.php b/vendor/filament/actions/resources/lang/hy/create.php deleted file mode 100644 index 97ef5e82..00000000 --- a/vendor/filament/actions/resources/lang/hy/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Նոր :label', - - 'modal' => [ - - 'heading' => 'Ստեղծել :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Ստեղծել', - ], - - 'create_another' => [ - 'label' => 'Ստեղծել և ստեղծել մեկ այլ', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Ստեղծվել է', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hy/delete.php b/vendor/filament/actions/resources/lang/hy/delete.php deleted file mode 100644 index 6d1d6953..00000000 --- a/vendor/filament/actions/resources/lang/hy/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Ջնջել', - - 'modal' => [ - - 'heading' => 'Ջնջել :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Ջնջել', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Ջնջվել է', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Ջնջել ընտրվածը', - - 'modal' => [ - - 'heading' => 'Ջնջել ընտրված :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Ջնջել', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Ջնջվել է', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hy/detach.php b/vendor/filament/actions/resources/lang/hy/detach.php deleted file mode 100644 index 9d5e6b3b..00000000 --- a/vendor/filament/actions/resources/lang/hy/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Անջատել', - - 'modal' => [ - - 'heading' => 'Անջատել :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Անջատել', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Անջատվել է', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Անջատել ընտրվածը', - - 'modal' => [ - - 'heading' => 'Անջատել ընտրված :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Անջատել ընտրվածը', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Անջատվել է', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hy/dissociate.php b/vendor/filament/actions/resources/lang/hy/dissociate.php deleted file mode 100644 index 97870f45..00000000 --- a/vendor/filament/actions/resources/lang/hy/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Տարանջատել', - - 'modal' => [ - - 'heading' => 'Տարանջատել :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Տարանջատել', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Տարանջատվել է', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Տարանջատել ընտրվածը', - - 'modal' => [ - - 'heading' => 'Տարանջատել ընտրված :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Տարանջատել ընտրվածը', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Տարանջատվել է', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hy/edit.php b/vendor/filament/actions/resources/lang/hy/edit.php deleted file mode 100644 index 7f8a42ca..00000000 --- a/vendor/filament/actions/resources/lang/hy/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Խմբագրել', - - 'modal' => [ - - 'heading' => 'Խմբագրել :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Պահպանել', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Պահպանվել է', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hy/force-delete.php b/vendor/filament/actions/resources/lang/hy/force-delete.php deleted file mode 100644 index 514b8c69..00000000 --- a/vendor/filament/actions/resources/lang/hy/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Հարկադրված ջնջել', - - 'modal' => [ - - 'heading' => 'Հարկադրված ջնջել :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Ջնջել', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Գրառումը ջնջվել է', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Հարկադրված ջնջել ընտրվածը', - - 'modal' => [ - - 'heading' => 'Հարկադրված ջնջել ընտրված :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Ջնջել', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Գրառումները ջնջվել են', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hy/group.php b/vendor/filament/actions/resources/lang/hy/group.php deleted file mode 100644 index 0b1c3732..00000000 --- a/vendor/filament/actions/resources/lang/hy/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Գործողություններ', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hy/modal.php b/vendor/filament/actions/resources/lang/hy/modal.php deleted file mode 100644 index 45332484..00000000 --- a/vendor/filament/actions/resources/lang/hy/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Վստա՞հ եք, որ ցանկանում եք դա անել:', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Չեղարկել', - ], - - 'confirm' => [ - 'label' => 'Հաստատել', - ], - - 'submit' => [ - 'label' => 'Հաստատել', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hy/replicate.php b/vendor/filament/actions/resources/lang/hy/replicate.php deleted file mode 100644 index 4058bd69..00000000 --- a/vendor/filament/actions/resources/lang/hy/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Կրկնօրինակել', - - 'modal' => [ - - 'heading' => 'Կրկնօրինակել :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Կրկնօրինակել', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Գրառումը կրկնօրինակվել է', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hy/restore.php b/vendor/filament/actions/resources/lang/hy/restore.php deleted file mode 100644 index 5eab6317..00000000 --- a/vendor/filament/actions/resources/lang/hy/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Վերականգնել', - - 'modal' => [ - - 'heading' => 'Վերականգնել :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Վերականգնել', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Գրառումը վերականգնել է', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Վերականգնել ընտրվածը', - - 'modal' => [ - - 'heading' => 'Վերականգնել ընտրված :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Վերականգնել', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Գրառումները վերականգնել են', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/hy/view.php b/vendor/filament/actions/resources/lang/hy/view.php deleted file mode 100644 index fd3390da..00000000 --- a/vendor/filament/actions/resources/lang/hy/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Դիտել', - - 'modal' => [ - - 'heading' => 'Դիտել :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Փակել', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/id/associate.php b/vendor/filament/actions/resources/lang/id/associate.php deleted file mode 100644 index d1414079..00000000 --- a/vendor/filament/actions/resources/lang/id/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Kaitkan', - - 'modal' => [ - - 'heading' => 'Kaitkan :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Data', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Kaitkan', - ], - - 'associate_another' => [ - 'label' => 'Kaitkan & kaitkan lainnya', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Data berhasil dikaitkan', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/id/attach.php b/vendor/filament/actions/resources/lang/id/attach.php deleted file mode 100644 index 5ed839ac..00000000 --- a/vendor/filament/actions/resources/lang/id/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Lampirkan', - - 'modal' => [ - - 'heading' => 'Lampirkan :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Data', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Lampirkan', - ], - - 'attach_another' => [ - 'label' => 'Lampirkan & lampirkan lainnya', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Data berhasil dilampirkan', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/id/create.php b/vendor/filament/actions/resources/lang/id/create.php deleted file mode 100644 index 8fa17c0e..00000000 --- a/vendor/filament/actions/resources/lang/id/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Buat', - - 'modal' => [ - - 'heading' => 'Buat :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Buat', - ], - - 'create_another' => [ - 'label' => 'Buat & buat lainnya', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Data berhasil dibuat', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/id/delete.php b/vendor/filament/actions/resources/lang/id/delete.php deleted file mode 100644 index 47dd485f..00000000 --- a/vendor/filament/actions/resources/lang/id/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Hapus', - - 'modal' => [ - - 'heading' => 'Hapus :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Hapus', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Data berhasil dihapus', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Hapus yang dipilih', - - 'modal' => [ - - 'heading' => 'Hapus :label yang dipilih', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Hapus yang dipilih', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Data berhasil dihapus', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/id/detach.php b/vendor/filament/actions/resources/lang/id/detach.php deleted file mode 100644 index 6f808eb5..00000000 --- a/vendor/filament/actions/resources/lang/id/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Lepaskan lampiran', - - 'modal' => [ - - 'heading' => 'Lepaskan lampiran :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Lepaskan lampiran', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Lampiran berhasil dilepaskan', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Lepaskan lampiran yang dipilih', - - 'modal' => [ - - 'heading' => 'Lepaskan lampiran :label yang dipilih', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Lepaskan lampiran yang dipilih', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Lampiran berhasil dilepaskan', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/id/dissociate.php b/vendor/filament/actions/resources/lang/id/dissociate.php deleted file mode 100644 index 21d0617a..00000000 --- a/vendor/filament/actions/resources/lang/id/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Pisahkan', - - 'modal' => [ - - 'heading' => 'Pisahkan :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Pisahkan', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Data berhasil dipisahkan', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Pisahkan yang dipilih', - - 'modal' => [ - - 'heading' => 'Pisahkan :label yang dipilih', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Pisahkan yang dipilih', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Data berhasil dipisahkan', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/id/edit.php b/vendor/filament/actions/resources/lang/id/edit.php deleted file mode 100644 index e4c7f683..00000000 --- a/vendor/filament/actions/resources/lang/id/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Ubah', - - 'modal' => [ - - 'heading' => 'Ubah :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Simpan', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Data berhasil disimpan', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/id/export.php b/vendor/filament/actions/resources/lang/id/export.php deleted file mode 100644 index 47c87da4..00000000 --- a/vendor/filament/actions/resources/lang/id/export.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Ekspor :label', - - 'modal' => [ - - 'heading' => 'Ekspor :label', - - 'form' => [ - - 'columns' => [ - - 'label' => 'Kolom', - - 'form' => [ - - 'is_enabled' => [ - 'label' => ':column diaktifkan', - ], - - 'label' => [ - 'label' => 'Label :column', - ], - - ], - - ], - - ], - - 'actions' => [ - - 'export' => [ - 'label' => 'Ekspor', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Ekspor selesai', - - 'actions' => [ - - 'download_csv' => [ - 'label' => 'Unduh .csv', - ], - - 'download_xlsx' => [ - 'label' => 'Unduh .xlsx', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'Ekspor terlalu besar', - 'body' => 'Anda tidak dapat mengekspor lebih dari :count sekaligus.', - ], - - 'started' => [ - 'title' => 'Export started', - 'body' => 'Mulai mengekspor :count baris dan proses akan berjalan di belakang layar.', - ], - - ], - - 'file_name' => 'ekspor-:export_id-:model', - -]; diff --git a/vendor/filament/actions/resources/lang/id/force-delete.php b/vendor/filament/actions/resources/lang/id/force-delete.php deleted file mode 100644 index eabd1cea..00000000 --- a/vendor/filament/actions/resources/lang/id/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Hapus selamanya', - - 'modal' => [ - - 'heading' => 'Hapus selamanya :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Hapus', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Data berhasil dihapus', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Hapus selamanya data yang dipilih', - - 'modal' => [ - - 'heading' => 'Hapus selamanya :label yang dipilih', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Hapus', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Data berhasil dihapus', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/id/group.php b/vendor/filament/actions/resources/lang/id/group.php deleted file mode 100644 index 22824e97..00000000 --- a/vendor/filament/actions/resources/lang/id/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Tindakan', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/id/import.php b/vendor/filament/actions/resources/lang/id/import.php deleted file mode 100644 index 12304ad1..00000000 --- a/vendor/filament/actions/resources/lang/id/import.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Impor :label', - - 'modal' => [ - - 'heading' => 'Impor :label', - - 'form' => [ - - 'file' => [ - 'label' => 'Berkas', - 'placeholder' => 'Unggah berkas CSV', - ], - - 'columns' => [ - 'label' => 'Kolom', - 'placeholder' => 'Pilih kolom', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => 'Unduh contoh berkas CSV', - ], - - 'import' => [ - 'label' => 'Impor', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Impor selesai', - - 'actions' => [ - - 'download_failed_rows_csv' => [ - 'label' => 'Unduh informasi baris yang gagal diimpor', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'Ukuran berkas CSV terlalu besar', - 'body' => 'Anda tidak dapat mengimpor lebih dari :count baris sekaligus.', - ], - - 'started' => [ - 'title' => 'Import started', - 'body' => 'Mulai mengimpor :count baris dan proses akan berjalan di belakang layar.', - ], - - ], - - 'example_csv' => [ - 'file_name' => 'contoh-:importer', - ], - - 'failure_csv' => [ - 'file_name' => 'impor-:import_id-:csv_name-gagal', - 'error_header' => 'error', - 'system_error' => 'Terjadi kesalahan sistem, harap hubungi tim support.', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/id/modal.php b/vendor/filament/actions/resources/lang/id/modal.php deleted file mode 100644 index ef67b2bf..00000000 --- a/vendor/filament/actions/resources/lang/id/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Apakah Anda yakin ingin melakukan ini?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Batal', - ], - - 'confirm' => [ - 'label' => 'Konfirmasi', - ], - - 'submit' => [ - 'label' => 'Kirim', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/id/replicate.php b/vendor/filament/actions/resources/lang/id/replicate.php deleted file mode 100644 index 00bec606..00000000 --- a/vendor/filament/actions/resources/lang/id/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Duplikat data', - - 'modal' => [ - - 'heading' => 'Duplikat :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Duplikat data', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Data berhasil diduplikat', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/id/restore.php b/vendor/filament/actions/resources/lang/id/restore.php deleted file mode 100644 index c911d6bc..00000000 --- a/vendor/filament/actions/resources/lang/id/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Kembalikan data', - - 'modal' => [ - - 'heading' => 'Kembalikan :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Kembalikan', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Data berhasil dikembalikan', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Kembalikan data yang dipilih', - - 'modal' => [ - - 'heading' => 'Kembalikan :label yang dipilih', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Kembalikan', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Data berhasil dikembalikan', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/id/view.php b/vendor/filament/actions/resources/lang/id/view.php deleted file mode 100644 index 65a2b50f..00000000 --- a/vendor/filament/actions/resources/lang/id/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Lihat', - - 'modal' => [ - - 'heading' => 'Lihat :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Tutup', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/it/associate.php b/vendor/filament/actions/resources/lang/it/associate.php deleted file mode 100644 index dc64656d..00000000 --- a/vendor/filament/actions/resources/lang/it/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Associa', - - 'modal' => [ - - 'heading' => 'Associa :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Record', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Associa', - ], - - 'associate_another' => [ - 'label' => 'Associa & associa un altro', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Associato', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/it/attach.php b/vendor/filament/actions/resources/lang/it/attach.php deleted file mode 100644 index 255a0bb1..00000000 --- a/vendor/filament/actions/resources/lang/it/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Collega', - - 'modal' => [ - - 'heading' => 'Collega :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Record', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Collega', - ], - - 'attach_another' => [ - 'label' => 'Collega & collega un altro', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Collegato', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/it/create.php b/vendor/filament/actions/resources/lang/it/create.php deleted file mode 100644 index 67b5d593..00000000 --- a/vendor/filament/actions/resources/lang/it/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Nuovo', - - 'modal' => [ - - 'heading' => 'Salva :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Salva', - ], - - 'create_another' => [ - 'label' => 'Salva & crea un altro', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Creato', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/it/delete.php b/vendor/filament/actions/resources/lang/it/delete.php deleted file mode 100644 index 240f8479..00000000 --- a/vendor/filament/actions/resources/lang/it/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Elimina', - - 'modal' => [ - - 'heading' => 'Elimina :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Elimina', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Eliminato', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Elimina selezionati', - - 'modal' => [ - - 'heading' => 'Elimina :label selezionati', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Elimina', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Eliminati', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/it/detach.php b/vendor/filament/actions/resources/lang/it/detach.php deleted file mode 100644 index 39d7af08..00000000 --- a/vendor/filament/actions/resources/lang/it/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Scollega', - - 'modal' => [ - - 'heading' => 'Scollega :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Scollega', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Scollegato', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Scollega selezionati', - - 'modal' => [ - - 'heading' => 'Scollega :label selezionati', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Scollega', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Scollegati', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/it/dissociate.php b/vendor/filament/actions/resources/lang/it/dissociate.php deleted file mode 100644 index d44140e3..00000000 --- a/vendor/filament/actions/resources/lang/it/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Dissocia', - - 'modal' => [ - - 'heading' => 'Dissocia :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Dissocia', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Dissociato', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Dissocia selezionati', - - 'modal' => [ - - 'heading' => 'Dissocia :label selezionati', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Dissocia', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Dissociati', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/it/edit.php b/vendor/filament/actions/resources/lang/it/edit.php deleted file mode 100644 index b4266ca7..00000000 --- a/vendor/filament/actions/resources/lang/it/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Modifica', - - 'modal' => [ - - 'heading' => 'Modifica :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Salva', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Salvato', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/it/export.php b/vendor/filament/actions/resources/lang/it/export.php deleted file mode 100644 index 4346bccb..00000000 --- a/vendor/filament/actions/resources/lang/it/export.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Esporta :label', - - 'modal' => [ - - 'heading' => 'Esporta :label', - - 'form' => [ - - 'columns' => [ - - 'label' => 'Colonne', - - 'form' => [ - - 'is_enabled' => [ - 'label' => ':column abilitata', - ], - - 'label' => [ - 'label' => ':column etichetta', - ], - - ], - - ], - - ], - - 'actions' => [ - - 'export' => [ - 'label' => 'Esporta', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Esportazione completata', - - 'actions' => [ - - 'download_csv' => [ - 'label' => 'Scarica .csv', - ], - - 'download_xlsx' => [ - 'label' => 'Scarica .xlsx', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'L\'esportazione è troppo grande', - 'body' => 'Non puoi esportare più di 1 riga alla volta.|Non puoi esportare più di :count righe alla volta.', - ], - - 'started' => [ - 'title' => 'Esportazione avviata', - 'body' => 'L\'esportazione è iniziata e 1 riga verrà elaborata in background.|L\'esportazione è iniziata e :count righe verranno elaborate in background.', - ], - - ], - - 'file_name' => 'export-:export_id-:model', - -]; diff --git a/vendor/filament/actions/resources/lang/it/force-delete.php b/vendor/filament/actions/resources/lang/it/force-delete.php deleted file mode 100644 index 8ca2dfb3..00000000 --- a/vendor/filament/actions/resources/lang/it/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Forza eliminazione', - - 'modal' => [ - - 'heading' => 'Forza eliminazione :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Elimina', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Eliminato', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Elimina forzatamente selezionati', - - 'modal' => [ - - 'heading' => 'Elimina forzatamente :label selezionati', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Elimina', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Eliminati', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/it/group.php b/vendor/filament/actions/resources/lang/it/group.php deleted file mode 100644 index 9c166bd1..00000000 --- a/vendor/filament/actions/resources/lang/it/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Azioni', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/it/import.php b/vendor/filament/actions/resources/lang/it/import.php deleted file mode 100644 index 3b96bbaa..00000000 --- a/vendor/filament/actions/resources/lang/it/import.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Importa :label', - - 'modal' => [ - - 'heading' => 'Importa :label', - - 'form' => [ - - 'file' => [ - 'label' => 'File', - 'placeholder' => 'Carica un file CSV', - ], - - 'columns' => [ - 'label' => 'Colonne', - 'placeholder' => 'Seleziona una colonna', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => 'Scarica un file CSV di esempio', - ], - - 'import' => [ - 'label' => 'Importa', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Importazione completata', - - 'actions' => [ - - 'download_failed_rows_csv' => [ - 'label' => 'Scarica le informazioni riguardo le righe fallite|Scarica l\'informazione riguardo la riga fallita', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'Il file CSV caricato è troppo grande', - 'body' => 'Non puoi importare più di 1 riga alla volta.|Non puoi importare più di :count righe alla volta.', - ], - - 'started' => [ - 'title' => 'L\'importazione è iniziata', - 'body' => 'L\'importazione è iniziata e 1 riga verrà elaborata in background.|L\'importazione è iniziata e :count righe verranno elaborate in background.', - ], - - ], - - 'example_csv' => [ - 'file_name' => ':importatore-esempio', - ], - - 'failure_csv' => [ - 'file_name' => 'import-:import_id-:csv_nome-righe-fallite', - 'error_header' => 'errore', - 'system_error' => 'Errore di sistema, per favore contatta il supporto.', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/it/modal.php b/vendor/filament/actions/resources/lang/it/modal.php deleted file mode 100644 index f116fc05..00000000 --- a/vendor/filament/actions/resources/lang/it/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Sei sicuro di volerlo fare?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Annulla', - ], - - 'confirm' => [ - 'label' => 'Conferma', - ], - - 'submit' => [ - 'label' => 'Invia', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/it/replicate.php b/vendor/filament/actions/resources/lang/it/replicate.php deleted file mode 100644 index a5b11039..00000000 --- a/vendor/filament/actions/resources/lang/it/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Duplica', - - 'modal' => [ - - 'heading' => 'Duplica :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Duplica', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Duplicato', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/it/restore.php b/vendor/filament/actions/resources/lang/it/restore.php deleted file mode 100644 index 9088d40a..00000000 --- a/vendor/filament/actions/resources/lang/it/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Ripristina', - - 'modal' => [ - - 'heading' => 'Ripristina :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Ripristina', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Ripristinato', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Ripristina selezionati', - - 'modal' => [ - - 'heading' => 'Ripristina selezionati :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Ripristina', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Ripristinati', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/it/view.php b/vendor/filament/actions/resources/lang/it/view.php deleted file mode 100644 index da8dbcad..00000000 --- a/vendor/filament/actions/resources/lang/it/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Vedi', - - 'modal' => [ - - 'heading' => 'Vedi :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Chiudi', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ja/associate.php b/vendor/filament/actions/resources/lang/ja/associate.php deleted file mode 100644 index e8487fa3..00000000 --- a/vendor/filament/actions/resources/lang/ja/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => '関連付ける', - - 'modal' => [ - - 'heading' => ':labelを関連付ける', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'レコード', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => '関連付ける', - ], - - 'associate_another' => [ - 'label' => '保存して、続けて関連付ける', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => '関連付けしました', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ja/attach.php b/vendor/filament/actions/resources/lang/ja/attach.php deleted file mode 100644 index bbdb96df..00000000 --- a/vendor/filament/actions/resources/lang/ja/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => '紐付ける', - - 'modal' => [ - - 'heading' => ':labelを紐付ける', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'レコード', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => '紐付ける', - ], - - 'attach_another' => [ - 'label' => '紐付けして、続けて紐付ける', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => '紐付けしました', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ja/create.php b/vendor/filament/actions/resources/lang/ja/create.php deleted file mode 100644 index 6e8de632..00000000 --- a/vendor/filament/actions/resources/lang/ja/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => '作成', - - 'modal' => [ - - 'heading' => ':label 作成', - - 'actions' => [ - - 'create' => [ - 'label' => '作成', - ], - - 'create_another' => [ - 'label' => '保存して、続けて作成', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => '作成しました', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ja/delete.php b/vendor/filament/actions/resources/lang/ja/delete.php deleted file mode 100644 index 6cf8a30e..00000000 --- a/vendor/filament/actions/resources/lang/ja/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '削除', - - 'modal' => [ - - 'heading' => ':label 削除', - - 'actions' => [ - - 'delete' => [ - 'label' => '削除', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => '削除しました', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '選択中を削除', - - 'modal' => [ - - 'heading' => '選択中の:labelを削除', - - 'actions' => [ - - 'delete' => [ - 'label' => '削除', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => '削除しました', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ja/detach.php b/vendor/filament/actions/resources/lang/ja/detach.php deleted file mode 100644 index 4d5e0311..00000000 --- a/vendor/filament/actions/resources/lang/ja/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '解除', - - 'modal' => [ - - 'heading' => ':labelを解除', - - 'actions' => [ - - 'detach' => [ - 'label' => '解除', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => '解除しました', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '選択中を解除', - - 'modal' => [ - - 'heading' => '選択中の:labelを解除', - - 'actions' => [ - - 'detach' => [ - 'label' => '解除', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => '解除しました', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ja/dissociate.php b/vendor/filament/actions/resources/lang/ja/dissociate.php deleted file mode 100644 index 51eeb0c8..00000000 --- a/vendor/filament/actions/resources/lang/ja/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '関連付け解除', - - 'modal' => [ - - 'heading' => ':labelの関連付け解除', - - 'actions' => [ - - 'dissociate' => [ - 'label' => '関連付け解除', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => '関連付け解除しました', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '選択中を関連付け解除', - - 'modal' => [ - - 'heading' => '選択中の:labelを関連付け解除', - - 'actions' => [ - - 'dissociate' => [ - 'label' => '関連付け解除', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => '関連付け解除しました', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ja/edit.php b/vendor/filament/actions/resources/lang/ja/edit.php deleted file mode 100644 index cc54134a..00000000 --- a/vendor/filament/actions/resources/lang/ja/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => '編集', - - 'modal' => [ - - 'heading' => ':label 編集', - - 'actions' => [ - - 'save' => [ - 'label' => '変更を保存', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => '保存しました', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ja/force-delete.php b/vendor/filament/actions/resources/lang/ja/force-delete.php deleted file mode 100644 index aa8aac65..00000000 --- a/vendor/filament/actions/resources/lang/ja/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '強制削除', - - 'modal' => [ - - 'heading' => ':label 強制削除', - - 'actions' => [ - - 'delete' => [ - 'label' => '削除', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => '削除しました', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '選択中を強制削除', - - 'modal' => [ - - 'heading' => '選択中の:labelを強制削除', - - 'actions' => [ - - 'delete' => [ - 'label' => '削除', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => '削除しました', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ja/group.php b/vendor/filament/actions/resources/lang/ja/group.php deleted file mode 100644 index be95fc0f..00000000 --- a/vendor/filament/actions/resources/lang/ja/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'アクション', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ja/modal.php b/vendor/filament/actions/resources/lang/ja/modal.php deleted file mode 100644 index db826a7c..00000000 --- a/vendor/filament/actions/resources/lang/ja/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - '本当に実行しますか?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'キャンセル', - ], - - 'confirm' => [ - 'label' => '確定', - ], - - 'submit' => [ - 'label' => '完了', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ja/replicate.php b/vendor/filament/actions/resources/lang/ja/replicate.php deleted file mode 100644 index cc1ffab6..00000000 --- a/vendor/filament/actions/resources/lang/ja/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => '複製', - - 'modal' => [ - - 'heading' => ':label 複製', - - 'actions' => [ - - 'replicate' => [ - 'label' => '複製', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => '複製しました', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ja/restore.php b/vendor/filament/actions/resources/lang/ja/restore.php deleted file mode 100644 index f6b9ca94..00000000 --- a/vendor/filament/actions/resources/lang/ja/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '復旧', - - 'modal' => [ - - 'heading' => ':label 復旧', - - 'actions' => [ - - 'restore' => [ - 'label' => '復旧', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => '復旧しました', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '選択中を復旧', - - 'modal' => [ - - 'heading' => '選択中の:labelを復旧', - - 'actions' => [ - - 'restore' => [ - 'label' => '復旧', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => '復旧しました', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ja/view.php b/vendor/filament/actions/resources/lang/ja/view.php deleted file mode 100644 index 4994eca6..00000000 --- a/vendor/filament/actions/resources/lang/ja/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => '表示', - - 'modal' => [ - - 'heading' => ':label 表示', - - 'actions' => [ - - 'close' => [ - 'label' => '閉じる', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/kh/attach.php b/vendor/filament/actions/resources/lang/kh/attach.php deleted file mode 100644 index 30a09952..00000000 --- a/vendor/filament/actions/resources/lang/kh/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'ភ្ជាប់', - - 'modal' => [ - - 'heading' => 'ភ្ជាប់ :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'កំណត់ត្រា', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'ភ្ជាប់', - ], - - 'attach_another' => [ - 'label' => 'ភ្ជាប់ & ភ្ជាប់ឡើងវិញ', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'បានភ្ជាប់ជោគជ័យ', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/kh/create.php b/vendor/filament/actions/resources/lang/kh/create.php deleted file mode 100644 index dabb83b0..00000000 --- a/vendor/filament/actions/resources/lang/kh/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'បង្កើត', - - 'modal' => [ - - 'heading' => 'បង្កើត :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'បង្កើត', - ], - - 'create_another' => [ - 'label' => 'បង្កើត & បង្កើតឡើងវិញ', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'បានបង្កើតដោយជោគជ័យ', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/kh/delete.php b/vendor/filament/actions/resources/lang/kh/delete.php deleted file mode 100644 index 2b694cbf..00000000 --- a/vendor/filament/actions/resources/lang/kh/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'លុប', - - 'modal' => [ - - 'heading' => 'លុប :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'លុប', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'បានលុបដោយជោគជ័យ', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'លុបដែលបានជ្រើសរើស', - - 'modal' => [ - - 'heading' => 'លុបដែលបានជ្រើសរើស :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'លុបដែលបានជ្រើសរើស', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'បានលុបដោយជោគជ័យ', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/kh/detach.php b/vendor/filament/actions/resources/lang/kh/detach.php deleted file mode 100644 index 08125b32..00000000 --- a/vendor/filament/actions/resources/lang/kh/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'ផ្ដាច់', - - 'modal' => [ - - 'heading' => 'ផ្ដាច់ :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'ផ្ដាច់', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'បានផ្ដាច់ដោយជោគជ័យ', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'ផ្ដាច់នៃការជ្រើសរើស', - - 'modal' => [ - - 'heading' => 'បានផ្ដាច់នៃការជ្រើសរើស :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'ផ្ដាច់នៃការជ្រើសរើស', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'បានផ្ដាច់', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/kh/edit.php b/vendor/filament/actions/resources/lang/kh/edit.php deleted file mode 100644 index f0010f7d..00000000 --- a/vendor/filament/actions/resources/lang/kh/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'កែប្រែ', - - 'modal' => [ - - 'heading' => 'កែប្រែ :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'រក្សាទុក', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'បានរក្សាទុកដោយជោគជ័យ', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/km/associate.php b/vendor/filament/actions/resources/lang/km/associate.php deleted file mode 100644 index 041b1941..00000000 --- a/vendor/filament/actions/resources/lang/km/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'សហការី', - - 'modal' => [ - - 'heading' => 'សហការី :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'ទិន្នន័យ', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'សហការី', - ], - - 'associate_another' => [ - 'label' => 'សេពគប់ & សេពគប់អ្នកដទៃ', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'ពាក់ព័ន្ធ', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/km/attach.php b/vendor/filament/actions/resources/lang/km/attach.php deleted file mode 100644 index 31451037..00000000 --- a/vendor/filament/actions/resources/lang/km/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'ភ្ជាប់', - - 'modal' => [ - - 'heading' => 'ភ្ជាប់ :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'ទិន្នន័យ', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'ភ្ជាប់', - ], - - 'attach_another' => [ - 'label' => 'ភ្ជាប់ & ភ្ជាប់ឡើងវិញ', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'បានភ្ជាប់ជោគជ័យ', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/km/create.php b/vendor/filament/actions/resources/lang/km/create.php deleted file mode 100644 index e6f83692..00000000 --- a/vendor/filament/actions/resources/lang/km/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'ថ្មី។ :label', - - 'modal' => [ - - 'heading' => 'បង្កើត :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'បង្កើត', - ], - - 'create_another' => [ - 'label' => 'បង្កើត & បង្កើតឡើងវិញ', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'បានបង្កើត', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/km/delete.php b/vendor/filament/actions/resources/lang/km/delete.php deleted file mode 100644 index 23313201..00000000 --- a/vendor/filament/actions/resources/lang/km/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'លុប', - - 'modal' => [ - - 'heading' => 'លុប :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'លុប', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'បានលុប', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'លុបចោលការជ្រើសរើស', - - 'modal' => [ - - 'heading' => 'លុបចោលការជ្រើសរើស :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'លុប', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'បានលុប', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/km/detach.php b/vendor/filament/actions/resources/lang/km/detach.php deleted file mode 100644 index 07f5465d..00000000 --- a/vendor/filament/actions/resources/lang/km/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'ផ្ដាច់', - - 'modal' => [ - - 'heading' => 'ផ្ដាច់ :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'ផ្ដាច់', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'បានផ្ដាច់', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'ផ្ដាច់នៃការជ្រើសរើស', - - 'modal' => [ - - 'heading' => 'បានផ្ដាច់នៃការជ្រើសរើស :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'ផ្ដាច់', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'បានផ្ដាច់', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/km/dissociate.php b/vendor/filament/actions/resources/lang/km/dissociate.php deleted file mode 100644 index c420a488..00000000 --- a/vendor/filament/actions/resources/lang/km/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'ផ្តាច់ខ្លួន', - - 'modal' => [ - - 'heading' => 'ផ្តាច់ខ្លួន :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'ផ្តាច់ខ្លួន', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'បែកគ្នា។', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'បានជ្រើសរើសផ្តាច់មុខ', - - 'modal' => [ - - 'heading' => 'បានជ្រើសរើសផ្តាច់មុខ :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'ផ្តាច់ខ្លួន', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'បែកគ្នា។', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/km/edit.php b/vendor/filament/actions/resources/lang/km/edit.php deleted file mode 100644 index 3626dea2..00000000 --- a/vendor/filament/actions/resources/lang/km/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'កែសម្រួល', - - 'modal' => [ - - 'heading' => 'កែសម្រួល :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'រក្សាទុកការផ្លាស់ប្តូរ', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'បានរក្សាទុក', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/km/export.php b/vendor/filament/actions/resources/lang/km/export.php deleted file mode 100644 index 5b07a72c..00000000 --- a/vendor/filament/actions/resources/lang/km/export.php +++ /dev/null @@ -1,77 +0,0 @@ - 'ទាញយក :label', - - 'modal' => [ - - 'heading' => 'ទាញយក :label', - - 'form' => [ - - 'columns' => [ - - 'label' => 'ជួរឈរ', - - 'form' => [ - - 'is_enabled' => [ - 'label' => ':column បើកដំណើរការ', - ], - - 'label' => [ - 'label' => ':column ស្លាក សញ្ញា', - ], - - ], - - ], - - ], - - 'actions' => [ - - 'export' => [ - 'label' => 'ទាញយក', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'បញ្ចប់ការទាញយក', - - 'actions' => [ - - 'download_csv' => [ - 'label' => 'ទាញយក .csv', - ], - - 'download_xlsx' => [ - 'label' => 'ទាញយក .xlsx', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'ការទាញយកមានទំហំធំពេក', - 'body' => 'អ្នកមិនអាចទាញយកលើសពី 1 ជួរក្នុងពេលតែមួយបានទេ។ | អ្នកមិនអាចទាញយកលើសពី :count ជួរក្នុងពេលតែមួយបានទេ។', - ], - - 'started' => [ - 'title' => 'ចាប់ផ្ដើមទាញយក', - 'body' => 'ការទាញយករបស់អ្នកបានចាប់ផ្តើមហើយ 1 ជួរនឹងត្រូវបានដំណើរការក្នុងផ្ទៃខាងក្រោយ។ | ការទាញយករបស់អ្នកបានចាប់ផ្តើមហើយ :count ជួរនឹងត្រូវបានដំណើរការក្នុងផ្ទៃខាងក្រោយ។', - ], - - ], - - 'file_name' => 'export-:export_id-:model', - -]; diff --git a/vendor/filament/actions/resources/lang/km/force-delete.php b/vendor/filament/actions/resources/lang/km/force-delete.php deleted file mode 100644 index 0a86e4ca..00000000 --- a/vendor/filament/actions/resources/lang/km/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'បង្ខំ​លុប', - - 'modal' => [ - - 'heading' => 'បង្ខំ​លុប :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'លុប', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'បានលុប', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'បង្ខំការលុបដែលបានជ្រើសរើស', - - 'modal' => [ - - 'heading' => 'បង្ខំការលុបដែលបានជ្រើសរើស :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'លុប', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'បានលុប', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/km/group.php b/vendor/filament/actions/resources/lang/km/group.php deleted file mode 100644 index f120e78b..00000000 --- a/vendor/filament/actions/resources/lang/km/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'សកម្មភាព', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/km/import.php b/vendor/filament/actions/resources/lang/km/import.php deleted file mode 100644 index 6f736934..00000000 --- a/vendor/filament/actions/resources/lang/km/import.php +++ /dev/null @@ -1,77 +0,0 @@ - 'ដាក់ចូល :label', - - 'modal' => [ - - 'heading' => 'ដាក់ចូល :label', - - 'form' => [ - - 'file' => [ - 'label' => 'ឯកសារ', - 'placeholder' => 'ផ្ទុកឡើងឯកសារ CSV', - ], - - 'columns' => [ - 'label' => 'ជួរឈរ', - 'placeholder' => 'ជ្រើសរើសជួរឈរ', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => 'ទាញយកឯកសារ CSV (ឧទាហរណ៍)', - ], - - 'import' => [ - 'label' => 'ដាក់ចូល', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'ដាក់ចូលបានបញ្ចប់', - - 'actions' => [ - - 'download_failed_rows_csv' => [ - 'label' => 'ទាញយកព័ត៌មានអំពីជួរដែលបរាជ័យ|ទាញយកព័ត៌មានអំពីជួរដែលបរាជ័យ', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'ឯកសារ CSV ដែលបានបង្ហោះមានទំហំធំពេក', - 'body' => 'អ្នកមិនអាចនាំចូលលើសពី 1 ជួរក្នុងពេលតែមួយបានទេ។|អ្នកមិនអាចនាំចូលលើសពី :count ជួរដេកក្នុងពេលតែមួយ។', - ], - - 'started' => [ - 'title' => 'ចាប់ផ្ដើមដាក់ចូល', - 'body' => 'ការនាំចូលរបស់អ្នកបានចាប់ផ្តើម ហើយ 1 ជួរនឹងត្រូវបានដំណើរការនៅផ្ទៃខាងក្រោយ។|ការនាំចូលរបស់អ្នកបានចាប់ផ្តើមហើយ :count ជួរដេកនឹងត្រូវបានដំណើរការនៅផ្ទៃខាងក្រោយ។', - ], - - ], - - 'example_csv' => [ - 'file_name' => ':importer-example', - ], - - 'failure_csv' => [ - 'file_name' => 'import-:import_id-:csv_name-failed-rows', - 'error_header' => 'កំហុស', - 'system_error' => 'ប្រព័ន្ធមានកំហុស,សូមទាក់ទងផ្នែកជំនួយ។', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/km/modal.php b/vendor/filament/actions/resources/lang/km/modal.php deleted file mode 100644 index 774a3198..00000000 --- a/vendor/filament/actions/resources/lang/km/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'តើអ្នកប្រាកដទេថាអ្នកចង់ធ្វើបែបនេះ?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'លុបចោល', - ], - - 'confirm' => [ - 'label' => 'យល់ព្រម', - ], - - 'submit' => [ - 'label' => 'ស្នើសុំ', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/km/replicate.php b/vendor/filament/actions/resources/lang/km/replicate.php deleted file mode 100644 index 352abfb6..00000000 --- a/vendor/filament/actions/resources/lang/km/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'ចម្លង', - - 'modal' => [ - - 'heading' => 'ចម្លង :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'ចម្លង', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'ចម្លង', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/km/restore.php b/vendor/filament/actions/resources/lang/km/restore.php deleted file mode 100644 index 96944685..00000000 --- a/vendor/filament/actions/resources/lang/km/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'ស្តារ', - - 'modal' => [ - - 'heading' => 'ស្តារ :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'ស្តារ', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'បានស្ដារឡើងវិញ', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'បានជ្រើសរើសឡើងវិញ', - - 'modal' => [ - - 'heading' => 'បានជ្រើសរើសឡើងវិញ :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'ស្តារ', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'បានស្ដារឡើងវិញ', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/km/view.php b/vendor/filament/actions/resources/lang/km/view.php deleted file mode 100644 index 263c63bb..00000000 --- a/vendor/filament/actions/resources/lang/km/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'មើល', - - 'modal' => [ - - 'heading' => 'មើល :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'បិទ', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ko/associate.php b/vendor/filament/actions/resources/lang/ko/associate.php deleted file mode 100644 index 995a46e1..00000000 --- a/vendor/filament/actions/resources/lang/ko/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => '연결', - - 'modal' => [ - - 'heading' => ':label 연결', - - 'fields' => [ - - 'record_id' => [ - 'label' => '기록', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => '연결', - ], - - 'associate_another' => [ - 'label' => '계속 연결', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => '연결 완료', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ko/attach.php b/vendor/filament/actions/resources/lang/ko/attach.php deleted file mode 100644 index b98c4ed7..00000000 --- a/vendor/filament/actions/resources/lang/ko/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => '추가', - - 'modal' => [ - - 'heading' => ':label 추가', - - 'fields' => [ - - 'record_id' => [ - 'label' => '기록', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => '추가', - ], - - 'attach_another' => [ - 'label' => '계속 추가', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => '추가 완료', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ko/create.php b/vendor/filament/actions/resources/lang/ko/create.php deleted file mode 100644 index 147844e5..00000000 --- a/vendor/filament/actions/resources/lang/ko/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => '만들기', - - 'modal' => [ - - 'heading' => ':label 만들기', - - 'actions' => [ - - 'create' => [ - 'label' => '만들기', - ], - - 'create_another' => [ - 'label' => '계속 만들기', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => '생성 완료', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ko/delete.php b/vendor/filament/actions/resources/lang/ko/delete.php deleted file mode 100644 index a2326fa2..00000000 --- a/vendor/filament/actions/resources/lang/ko/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '삭제', - - 'modal' => [ - - 'heading' => '삭제 :label', - - 'actions' => [ - - 'delete' => [ - 'label' => '삭제', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => '삭제 완료', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '선택한 항목 삭제', - - 'modal' => [ - - 'heading' => ':label 선택한 항목 삭제', - - 'actions' => [ - - 'delete' => [ - 'label' => '선택한 항목 삭제', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => '삭제 완료', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ko/detach.php b/vendor/filament/actions/resources/lang/ko/detach.php deleted file mode 100644 index efee8924..00000000 --- a/vendor/filament/actions/resources/lang/ko/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '분리', - - 'modal' => [ - - 'heading' => ':label 분리', - - 'actions' => [ - - 'detach' => [ - 'label' => '분리', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => '분리 완료', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '선택한 항목 분리', - - 'modal' => [ - - 'heading' => ':label 선택한 항목 분리', - - 'actions' => [ - - 'detach' => [ - 'label' => '선택한 항목 분리', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => '분리 완료', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ko/dissociate.php b/vendor/filament/actions/resources/lang/ko/dissociate.php deleted file mode 100644 index 55fe2609..00000000 --- a/vendor/filament/actions/resources/lang/ko/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '분리', - - 'modal' => [ - - 'heading' => ':label 분리', - - 'actions' => [ - - 'dissociate' => [ - 'label' => '분리', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => '분리 완료', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '선택한 항목 분리', - - 'modal' => [ - - 'heading' => '선택한 :label 분리', - - 'actions' => [ - - 'dissociate' => [ - 'label' => '분리', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => '분리 완료', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ko/edit.php b/vendor/filament/actions/resources/lang/ko/edit.php deleted file mode 100644 index afdc59cc..00000000 --- a/vendor/filament/actions/resources/lang/ko/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => '수정', - - 'modal' => [ - - 'heading' => ':label 수정', - - 'actions' => [ - - 'save' => [ - 'label' => '저장', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => '저장 완료', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ko/force-delete.php b/vendor/filament/actions/resources/lang/ko/force-delete.php deleted file mode 100644 index 9bde030c..00000000 --- a/vendor/filament/actions/resources/lang/ko/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '영구 삭제', - - 'modal' => [ - - 'heading' => ':label 영구 삭제', - - 'actions' => [ - - 'delete' => [ - 'label' => '삭제', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => '삭제 완료', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '선택한 항목 영구 삭제', - - 'modal' => [ - - 'heading' => '선택한 :label 영구 삭제', - - 'actions' => [ - - 'delete' => [ - 'label' => '삭제', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => '삭제 완료', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ko/group.php b/vendor/filament/actions/resources/lang/ko/group.php deleted file mode 100644 index 7f531d92..00000000 --- a/vendor/filament/actions/resources/lang/ko/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => '작업', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ko/modal.php b/vendor/filament/actions/resources/lang/ko/modal.php deleted file mode 100644 index 76eb5ce3..00000000 --- a/vendor/filament/actions/resources/lang/ko/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - '이 작업을 수행하시겠습니까?', - - 'actions' => [ - - 'cancel' => [ - 'label' => '취소', - ], - - 'confirm' => [ - 'label' => '확인', - ], - - 'submit' => [ - 'label' => '제출', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ko/replicate.php b/vendor/filament/actions/resources/lang/ko/replicate.php deleted file mode 100644 index b855f27d..00000000 --- a/vendor/filament/actions/resources/lang/ko/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => '복제', - - 'modal' => [ - - 'heading' => ':label 복제', - - 'actions' => [ - - 'replicate' => [ - 'label' => '복제', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => '복제 완료', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ko/restore.php b/vendor/filament/actions/resources/lang/ko/restore.php deleted file mode 100644 index 615a2ee6..00000000 --- a/vendor/filament/actions/resources/lang/ko/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '복원', - - 'modal' => [ - - 'heading' => ':label 복원', - - 'actions' => [ - - 'restore' => [ - 'label' => '복원', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => '복원 완료', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '선택한 항목 복원', - - 'modal' => [ - - 'heading' => '선택한 :label 복원', - - 'actions' => [ - - 'restore' => [ - 'label' => '복원', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => '복원 완료', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ko/view.php b/vendor/filament/actions/resources/lang/ko/view.php deleted file mode 100644 index 66d1ad8d..00000000 --- a/vendor/filament/actions/resources/lang/ko/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => '보기', - - 'modal' => [ - - 'heading' => ':label 보기', - - 'actions' => [ - - 'close' => [ - 'label' => '닫기', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ku/associate.php b/vendor/filament/actions/resources/lang/ku/associate.php deleted file mode 100644 index e25fd891..00000000 --- a/vendor/filament/actions/resources/lang/ku/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'هاوبەشکردن', - - 'modal' => [ - - 'heading' => 'هاوبەشکردنی :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'تۆمار', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'هاوبەشکردن', - ], - - 'associate_another' => [ - 'label' => 'هاوبەشکردن و تۆمارێکی تر', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'هاوبەشکراو', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ku/attach.php b/vendor/filament/actions/resources/lang/ku/attach.php deleted file mode 100644 index 61444873..00000000 --- a/vendor/filament/actions/resources/lang/ku/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'لکاندن', - - 'modal' => [ - - 'heading' => 'لکاندنی :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'تۆمار', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'لکاندن', - ], - - 'attach_another' => [ - 'label' => 'لکاندن و تۆمارێکی تر', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'لکێنرا', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ku/create.php b/vendor/filament/actions/resources/lang/ku/create.php deleted file mode 100644 index 0712e395..00000000 --- a/vendor/filament/actions/resources/lang/ku/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'دروستکردنی :label', - - 'modal' => [ - - 'heading' => ':دروستکردنی :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'دروستکرن', - ], - - 'create_another' => [ - 'label' => 'دروستکردن و تۆمارێکی تر', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'دروستکرا', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ku/delete.php b/vendor/filament/actions/resources/lang/ku/delete.php deleted file mode 100644 index a6f7ba7c..00000000 --- a/vendor/filament/actions/resources/lang/ku/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'سڕینەوە', - - 'modal' => [ - - 'heading' => 'سڕینەوەی :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'سڕینەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'سڕدرایەوە', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'سڕینەوەی دیاریکراوەکان', - - 'modal' => [ - - 'heading' => 'سڕینەوەی دیاریکراوەکانی :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'سڕینەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'سڕدرایەوە', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ku/detach.php b/vendor/filament/actions/resources/lang/ku/detach.php deleted file mode 100644 index 2b9b52b0..00000000 --- a/vendor/filament/actions/resources/lang/ku/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'سەربەخۆکردن', - - 'modal' => [ - - 'heading' => 'سەربەخۆکردنی :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'سەربەخۆکردن', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'سەربەخۆکرا', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'سەربەخۆکردنی دیاریکراوەکان', - - 'modal' => [ - - 'heading' => 'سەربەخۆکردنی دیاریکراوەکانی :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'سەربەخۆکردن', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'سەربەخۆکرا', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ku/dissociate.php b/vendor/filament/actions/resources/lang/ku/dissociate.php deleted file mode 100644 index b79a824d..00000000 --- a/vendor/filament/actions/resources/lang/ku/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'جوداکردن', - - 'modal' => [ - - 'heading' => 'جوداکردنی :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'جوداکردن', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'جوداکرا', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'جوداکردنی دیاریکراوەکان', - - 'modal' => [ - - 'heading' => 'جوداکردنی دیاریکراوەکانی :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'جوداکردن', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'جوداکرا', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ku/edit.php b/vendor/filament/actions/resources/lang/ku/edit.php deleted file mode 100644 index cdfc3317..00000000 --- a/vendor/filament/actions/resources/lang/ku/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'دەستکارکردن', - - 'modal' => [ - - 'heading' => 'دەستکارکردنی :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'نوێکردنەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'نوێکرایەوە', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ku/force-delete.php b/vendor/filament/actions/resources/lang/ku/force-delete.php deleted file mode 100644 index c984bf30..00000000 --- a/vendor/filament/actions/resources/lang/ku/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'سڕینەوەی بەهێز', - - 'modal' => [ - - 'heading' => 'سڕینەوەی بەهێزی :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'سڕینەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'سڕدرایەوە', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'سڕینەوەی بەهێزی دیاریکراوەکان', - - 'modal' => [ - - 'heading' => 'سڕینەوەی بەهێزی دیاریکراوەکانی :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'سڕینەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'سڕدرایەوە', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ku/group.php b/vendor/filament/actions/resources/lang/ku/group.php deleted file mode 100644 index 700a02e4..00000000 --- a/vendor/filament/actions/resources/lang/ku/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'کردارەکان', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ku/modal.php b/vendor/filament/actions/resources/lang/ku/modal.php deleted file mode 100644 index fff5d529..00000000 --- a/vendor/filament/actions/resources/lang/ku/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'ئایە دڵنیای لە کردنی ئەم کارە؟', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'پاشگەزبوونەوە', - ], - - 'confirm' => [ - 'label' => 'دڵنیام', - ], - - 'submit' => [ - 'label' => 'ناردن', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ku/replicate.php b/vendor/filament/actions/resources/lang/ku/replicate.php deleted file mode 100644 index 6fa53174..00000000 --- a/vendor/filament/actions/resources/lang/ku/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'لەبەرگرتنەوە', - - 'modal' => [ - - 'heading' => 'لەبەرگرتنەوەی :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'لەبەرگرتنەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'لەبەرگیرایەوە', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ku/restore.php b/vendor/filament/actions/resources/lang/ku/restore.php deleted file mode 100644 index 15679469..00000000 --- a/vendor/filament/actions/resources/lang/ku/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'گێڕانەوە', - - 'modal' => [ - - 'heading' => 'گێڕانەوەی :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'گێڕانەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'گێڕێندرایەوە', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'گێڕانەوەی دیاریکراوەکان', - - 'modal' => [ - - 'heading' => 'گێڕانەوەی دیاریکراوەکانی :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'گێڕانەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'گێڕێندرایەوە', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ku/view.php b/vendor/filament/actions/resources/lang/ku/view.php deleted file mode 100644 index d6c9542f..00000000 --- a/vendor/filament/actions/resources/lang/ku/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'بینین', - - 'modal' => [ - - 'heading' => 'بینینی :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'داخستن', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lt/associate.php b/vendor/filament/actions/resources/lang/lt/associate.php deleted file mode 100644 index f3b457a8..00000000 --- a/vendor/filament/actions/resources/lang/lt/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Susieti', - - 'modal' => [ - - 'heading' => 'Susieti :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Įrašas', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Susieta', - ], - - 'associate_another' => [ - 'label' => 'Susieti ir susieti kitą', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Susieta', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lt/attach.php b/vendor/filament/actions/resources/lang/lt/attach.php deleted file mode 100644 index 945c29e3..00000000 --- a/vendor/filament/actions/resources/lang/lt/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Pridėti', - - 'modal' => [ - - 'heading' => 'Pridėti :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Įrašas', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Pridėti', - ], - - 'attach_another' => [ - 'label' => 'Pridėti ir pridėti kitą', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Pridėta', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lt/create.php b/vendor/filament/actions/resources/lang/lt/create.php deleted file mode 100644 index b09d6dc9..00000000 --- a/vendor/filament/actions/resources/lang/lt/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Sukurti :label', - - 'modal' => [ - - 'heading' => 'Sukurti :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Sukurti', - ], - - 'create_another' => [ - 'label' => 'Sukurti ir sukurti naują', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Sukurta', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lt/delete.php b/vendor/filament/actions/resources/lang/lt/delete.php deleted file mode 100644 index 5e0f37f9..00000000 --- a/vendor/filament/actions/resources/lang/lt/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Ištrinti', - - 'modal' => [ - - 'heading' => 'Ištrinti :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Ištrinti', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Ištrinta', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Ištrinti pasirinktus', - - 'modal' => [ - - 'heading' => 'Ištrinti pasirinktus :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Ištrinti', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Ištrinta', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lt/detach.php b/vendor/filament/actions/resources/lang/lt/detach.php deleted file mode 100644 index 8c08073b..00000000 --- a/vendor/filament/actions/resources/lang/lt/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Atskirti', - - 'modal' => [ - - 'heading' => 'Atskirti :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Atskirti', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Atskirta', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Atskirti pasirinktus', - - 'modal' => [ - - 'heading' => 'Atskirti pasirinktus :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Atskirti', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Atskirta', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lt/dissociate.php b/vendor/filament/actions/resources/lang/lt/dissociate.php deleted file mode 100644 index b5fe8c8e..00000000 --- a/vendor/filament/actions/resources/lang/lt/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Atsieti', - - 'modal' => [ - - 'heading' => 'Atsieti :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Atsieti', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Atsieta', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Atsieti pasirinktus', - - 'modal' => [ - - 'heading' => 'Atsieti pasirinktus :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Atsieti', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Atsieta', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lt/edit.php b/vendor/filament/actions/resources/lang/lt/edit.php deleted file mode 100644 index 38772506..00000000 --- a/vendor/filament/actions/resources/lang/lt/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Redaguoti', - - 'modal' => [ - - 'heading' => 'Redaguoti :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Išsaugoti pakeitimus', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Išsaugota', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lt/force-delete.php b/vendor/filament/actions/resources/lang/lt/force-delete.php deleted file mode 100644 index 7311308f..00000000 --- a/vendor/filament/actions/resources/lang/lt/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Priverstinai ištrinti', - - 'modal' => [ - - 'heading' => 'Priverstinai ištrinti :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Ištrinti', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Ištrinta', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Priverstinai ištrinti pasirinktus', - - 'modal' => [ - - 'heading' => 'Priverstinai ištrinti pasirinktus :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Ištrinti', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Ištrinta', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lt/group.php b/vendor/filament/actions/resources/lang/lt/group.php deleted file mode 100644 index 17c8ce6b..00000000 --- a/vendor/filament/actions/resources/lang/lt/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Veiksmai', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lt/modal.php b/vendor/filament/actions/resources/lang/lt/modal.php deleted file mode 100644 index 931cacd4..00000000 --- a/vendor/filament/actions/resources/lang/lt/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Ar tikrai norite tai atlikti?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Atšaukti', - ], - - 'confirm' => [ - 'label' => 'Patvirtinti', - ], - - 'submit' => [ - 'label' => 'Pateikti', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lt/replicate.php b/vendor/filament/actions/resources/lang/lt/replicate.php deleted file mode 100644 index 20378845..00000000 --- a/vendor/filament/actions/resources/lang/lt/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Atkartoti', - - 'modal' => [ - - 'heading' => 'Atkartoti :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Atkartoti', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Atkartota', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lt/restore.php b/vendor/filament/actions/resources/lang/lt/restore.php deleted file mode 100644 index 2fe20213..00000000 --- a/vendor/filament/actions/resources/lang/lt/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Atkurti', - - 'modal' => [ - - 'heading' => 'Atkurti :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Atkurti', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Atkurta', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Atkurti pasirinktus', - - 'modal' => [ - - 'heading' => 'Atkurti pasirinktus :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Atkurti', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Atkurta', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lt/view.php b/vendor/filament/actions/resources/lang/lt/view.php deleted file mode 100644 index f540689b..00000000 --- a/vendor/filament/actions/resources/lang/lt/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Peržiūrėti', - - 'modal' => [ - - 'heading' => 'Peržiūrėti :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Uždaryti', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lv/associate.php b/vendor/filament/actions/resources/lang/lv/associate.php deleted file mode 100644 index 1f8cd173..00000000 --- a/vendor/filament/actions/resources/lang/lv/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Saistīt', - - 'modal' => [ - - 'heading' => 'Saistīt :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Ieraksts', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Saistīt', - ], - - 'associate_another' => [ - 'label' => 'Saistīt & saistīt citu', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Saistīts', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lv/attach.php b/vendor/filament/actions/resources/lang/lv/attach.php deleted file mode 100644 index 45b7cbb4..00000000 --- a/vendor/filament/actions/resources/lang/lv/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Pievienot', - - 'modal' => [ - - 'heading' => 'Pievienot :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Ieraksts', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Pievienot', - ], - - 'attach_another' => [ - 'label' => 'Pievienot & pievienot citu', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Pievienots', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lv/create.php b/vendor/filament/actions/resources/lang/lv/create.php deleted file mode 100644 index b24b44bb..00000000 --- a/vendor/filament/actions/resources/lang/lv/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Jauns :label', - - 'modal' => [ - - 'heading' => 'Izveidot :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Izveidot', - ], - - 'create_another' => [ - 'label' => 'Izveidot & izveidot citu', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Izveidots', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lv/delete.php b/vendor/filament/actions/resources/lang/lv/delete.php deleted file mode 100644 index ab72d89a..00000000 --- a/vendor/filament/actions/resources/lang/lv/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Dzēst', - - 'modal' => [ - - 'heading' => 'Dzēst :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Dzēst', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Dzēsts', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Dzēst izvēlētos', - - 'modal' => [ - - 'heading' => 'Dzēst izvēlētos :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Dzēst', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Dzēsts', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lv/detach.php b/vendor/filament/actions/resources/lang/lv/detach.php deleted file mode 100644 index e7819887..00000000 --- a/vendor/filament/actions/resources/lang/lv/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Atvienot', - - 'modal' => [ - - 'heading' => 'Atvienot :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Atvienot', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Atvienots', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Atvienot izvēlētos', - - 'modal' => [ - - 'heading' => 'Atvienot izvēlētos :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Atvienot', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Atvienots', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lv/dissociate.php b/vendor/filament/actions/resources/lang/lv/dissociate.php deleted file mode 100644 index 060b1a3e..00000000 --- a/vendor/filament/actions/resources/lang/lv/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Atdalīt', - - 'modal' => [ - - 'heading' => 'Atdalīt :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Atdalīt', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Atdalīts', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Atdalīt izvēlētos', - - 'modal' => [ - - 'heading' => 'Atdalīt izvēlētos :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Atdalīt', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Atdalīts', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lv/edit.php b/vendor/filament/actions/resources/lang/lv/edit.php deleted file mode 100644 index adbcec75..00000000 --- a/vendor/filament/actions/resources/lang/lv/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Rediģēt', - - 'modal' => [ - - 'heading' => 'Rediģēt :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Saglabāt izmaiņas', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Saglabāts', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lv/force-delete.php b/vendor/filament/actions/resources/lang/lv/force-delete.php deleted file mode 100644 index 2bb12019..00000000 --- a/vendor/filament/actions/resources/lang/lv/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Piespiedu kārtā dzēst', - - 'modal' => [ - - 'heading' => 'Piespiedu kārtā dzēst :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Dzēst', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Dzēsts', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Piespiedu kārtā dzēst izvēlētos', - - 'modal' => [ - - 'heading' => 'Piespiedu kārtā dzēst izvēlētos :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Dzēst', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Dzēsts', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lv/group.php b/vendor/filament/actions/resources/lang/lv/group.php deleted file mode 100644 index fc467490..00000000 --- a/vendor/filament/actions/resources/lang/lv/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Darbības', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lv/modal.php b/vendor/filament/actions/resources/lang/lv/modal.php deleted file mode 100644 index b7504498..00000000 --- a/vendor/filament/actions/resources/lang/lv/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Vai tiešām vēlaties to darīt?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Atcelt', - ], - - 'confirm' => [ - 'label' => 'Apstiprināt', - ], - - 'submit' => [ - 'label' => 'Iesniegt', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lv/replicate.php b/vendor/filament/actions/resources/lang/lv/replicate.php deleted file mode 100644 index ef067d90..00000000 --- a/vendor/filament/actions/resources/lang/lv/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Atkārtot', - - 'modal' => [ - - 'heading' => 'Atkārtot :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Atkārtot', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Atkārtots', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lv/restore.php b/vendor/filament/actions/resources/lang/lv/restore.php deleted file mode 100644 index 79fb0520..00000000 --- a/vendor/filament/actions/resources/lang/lv/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Atjaunot', - - 'modal' => [ - - 'heading' => 'Atjaunot :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Atjaunot', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Atjaunots', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Atjaunot izvēlētos', - - 'modal' => [ - - 'heading' => 'Atjaunot izvēlētos :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Atjaunot', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Atjaunots', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/lv/view.php b/vendor/filament/actions/resources/lang/lv/view.php deleted file mode 100644 index fdbb267f..00000000 --- a/vendor/filament/actions/resources/lang/lv/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Skatīt', - - 'modal' => [ - - 'heading' => 'Skatīt :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Aizvērt', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/mn/associate.php b/vendor/filament/actions/resources/lang/mn/associate.php deleted file mode 100644 index 4b38056c..00000000 --- a/vendor/filament/actions/resources/lang/mn/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Харилцан холбоос', - - 'modal' => [ - - 'heading' => 'Холбох :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Бичлэг', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Холбох', - ], - - 'associate_another' => [ - 'label' => 'Хадгалаад & ахиад шинийг үүсгэх', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Холбоос үүсэв', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/mn/attach.php b/vendor/filament/actions/resources/lang/mn/attach.php deleted file mode 100644 index a62f5e84..00000000 --- a/vendor/filament/actions/resources/lang/mn/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Хавсаргах', - - 'modal' => [ - - 'heading' => 'Хавсаргах :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Бичлэг', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Хавсаргах', - ], - - 'attach_another' => [ - 'label' => 'Хадгалаад & ахиад шинийг үүсгэх', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Амжилттай', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/mn/create.php b/vendor/filament/actions/resources/lang/mn/create.php deleted file mode 100644 index 2517d360..00000000 --- a/vendor/filament/actions/resources/lang/mn/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Шинэ :label', - - 'modal' => [ - - 'heading' => 'Шинэ :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Шинэ', - ], - - 'create_another' => [ - 'label' => 'Хадгалаад & дахин шинийг үүсгэх', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Үүсэв', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/mn/delete.php b/vendor/filament/actions/resources/lang/mn/delete.php deleted file mode 100644 index 9b1afc3e..00000000 --- a/vendor/filament/actions/resources/lang/mn/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Устгах', - - 'modal' => [ - - 'heading' => 'Устгах :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Устгах', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Устгасан', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Сонгосонг устгах', - - 'modal' => [ - - 'heading' => 'Устгах :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Устгах', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Устгасан', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/mn/detach.php b/vendor/filament/actions/resources/lang/mn/detach.php deleted file mode 100644 index d1de6beb..00000000 --- a/vendor/filament/actions/resources/lang/mn/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Салгах', - - 'modal' => [ - - 'heading' => 'Салгах :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Салгах', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Салгасан', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Сонгосонг салгах', - - 'modal' => [ - - 'heading' => 'Салгах :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Салгах', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Салгасан', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/mn/dissociate.php b/vendor/filament/actions/resources/lang/mn/dissociate.php deleted file mode 100644 index 8b24c392..00000000 --- a/vendor/filament/actions/resources/lang/mn/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Холбоосыг салгах', - - 'modal' => [ - - 'heading' => 'Салгах :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Салгах', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Салгасан', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Сонгосонг салгах', - - 'modal' => [ - - 'heading' => 'Салгах :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Салгах', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Салгасан', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/mn/edit.php b/vendor/filament/actions/resources/lang/mn/edit.php deleted file mode 100644 index 25021b5b..00000000 --- a/vendor/filament/actions/resources/lang/mn/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Засах', - - 'modal' => [ - - 'heading' => 'Засах :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Хадгалах', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Хадгалсан', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/mn/force-delete.php b/vendor/filament/actions/resources/lang/mn/force-delete.php deleted file mode 100644 index 796040c7..00000000 --- a/vendor/filament/actions/resources/lang/mn/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Устгах үйлдэл (force)', - - 'modal' => [ - - 'heading' => 'Устгах :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Устгах', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Устгасан', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Сонгосон устгах', - - 'modal' => [ - - 'heading' => 'Сонгосон устгах :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Устгах', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Устгасан', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/mn/group.php b/vendor/filament/actions/resources/lang/mn/group.php deleted file mode 100644 index 27ee6e62..00000000 --- a/vendor/filament/actions/resources/lang/mn/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Үйлдэл', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/mn/modal.php b/vendor/filament/actions/resources/lang/mn/modal.php deleted file mode 100644 index 05dd78a0..00000000 --- a/vendor/filament/actions/resources/lang/mn/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Та үүнийг устгахдаа итгэлтэй байна уу?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Цуцлах', - ], - - 'confirm' => [ - 'label' => 'Баталгаажуулах', - ], - - 'submit' => [ - 'label' => 'Батлах', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/mn/replicate.php b/vendor/filament/actions/resources/lang/mn/replicate.php deleted file mode 100644 index 5629cd71..00000000 --- a/vendor/filament/actions/resources/lang/mn/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Олшруулах', - - 'modal' => [ - - 'heading' => 'Олшруулах :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Олшруулах', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Олшруулав', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/mn/restore.php b/vendor/filament/actions/resources/lang/mn/restore.php deleted file mode 100644 index d47054fa..00000000 --- a/vendor/filament/actions/resources/lang/mn/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Сэргээх', - - 'modal' => [ - - 'heading' => 'Сэргээх :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Сэргээх', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Сэргээв', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Сонгосонг сэргээх', - - 'modal' => [ - - 'heading' => 'Сэргээх :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Сэргээх', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Сэргээв', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/mn/view.php b/vendor/filament/actions/resources/lang/mn/view.php deleted file mode 100644 index ea5fcfb3..00000000 --- a/vendor/filament/actions/resources/lang/mn/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Харах', - - 'modal' => [ - - 'heading' => 'Харах :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Хаах', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ms/associate.php b/vendor/filament/actions/resources/lang/ms/associate.php deleted file mode 100644 index ddaa81e9..00000000 --- a/vendor/filament/actions/resources/lang/ms/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Kaitkan', - - 'modal' => [ - - 'heading' => 'Kaitkan :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Rekod', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Kaitkan', - ], - - 'associate_another' => [ - 'label' => 'Kaitkan & kaitan yang lain', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Berkaitan', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ms/attach.php b/vendor/filament/actions/resources/lang/ms/attach.php deleted file mode 100644 index 7b68e47b..00000000 --- a/vendor/filament/actions/resources/lang/ms/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Lampirkan', - - 'modal' => [ - - 'heading' => 'Lampirkan :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Rekod', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Lampirkan', - ], - - 'attach_another' => [ - 'label' => 'Lampirkan & lampirkan yang lain', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Dilampirkan', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ms/create.php b/vendor/filament/actions/resources/lang/ms/create.php deleted file mode 100644 index 978aad33..00000000 --- a/vendor/filament/actions/resources/lang/ms/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Cipta', - - 'modal' => [ - - 'heading' => 'Cipta :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Cipta', - ], - - 'create_another' => [ - 'label' => 'Cipta dan cipta yang lain', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Dicipta', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ms/delete.php b/vendor/filament/actions/resources/lang/ms/delete.php deleted file mode 100644 index f93c14f4..00000000 --- a/vendor/filament/actions/resources/lang/ms/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Padam', - - 'modal' => [ - - 'heading' => 'Padam :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Padam', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Dipadamkan', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Padam pilihan', - - 'modal' => [ - - 'heading' => 'Padam pilihan :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Padam pilihan', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Dipadamkan', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ms/detach.php b/vendor/filament/actions/resources/lang/ms/detach.php deleted file mode 100644 index b93b7d2a..00000000 --- a/vendor/filament/actions/resources/lang/ms/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Tanggalkan', - - 'modal' => [ - - 'heading' => 'Tanggalkan :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Tanggalkan', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Ditanggalkan', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Tanggalkan pilihan', - - 'modal' => [ - - 'heading' => 'Tanggalkan pilihan :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Tanggalkan pilihan', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Ditanggalkan', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ms/dissociate.php b/vendor/filament/actions/resources/lang/ms/dissociate.php deleted file mode 100644 index b11fb9ac..00000000 --- a/vendor/filament/actions/resources/lang/ms/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Nyahkait', - - 'modal' => [ - - 'heading' => 'Nyahkait :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Nyahkait', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Ternyahkait', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Nyahkait pilihan', - - 'modal' => [ - - 'heading' => 'Nyahkait pilihan :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Nyahkait', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Ternyahkait', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ms/edit.php b/vendor/filament/actions/resources/lang/ms/edit.php deleted file mode 100644 index 5aee49e8..00000000 --- a/vendor/filament/actions/resources/lang/ms/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Sunting', - - 'modal' => [ - - 'heading' => 'Sunting :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Simpan', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Disimpan', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ms/force-delete.php b/vendor/filament/actions/resources/lang/ms/force-delete.php deleted file mode 100644 index abab053b..00000000 --- a/vendor/filament/actions/resources/lang/ms/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Padam paksa', - - 'modal' => [ - - 'heading' => 'Padam paksa :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Padam', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Terpadam', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Padam paksa pilihan', - - 'modal' => [ - - 'heading' => 'Padam paksa pilihan :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Padam', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Terpadam', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ms/group.php b/vendor/filament/actions/resources/lang/ms/group.php deleted file mode 100644 index 22824e97..00000000 --- a/vendor/filament/actions/resources/lang/ms/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Tindakan', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ms/import.php b/vendor/filament/actions/resources/lang/ms/import.php deleted file mode 100644 index 93a7c168..00000000 --- a/vendor/filament/actions/resources/lang/ms/import.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Import :label', - - 'modal' => [ - - 'heading' => 'Import :label', - - 'form' => [ - - 'file' => [ - 'label' => 'Fail', - 'placeholder' => 'Muat naik fail CSV', - ], - - 'columns' => [ - 'label' => 'Lajur', - 'placeholder' => 'Pilih lajur', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => 'Muat turun contoh fail CSV', - ], - - 'import' => [ - 'label' => 'Import', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Import selesai', - - 'actions' => [ - - 'download_failed_rows_csv' => [ - 'label' => 'Muat turun maklumat tentang baris yang gagal|Muat turun maklumat tentang baris yang gagal', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'Fail CSV yang dimuat naik terlalu besar', - 'body' => 'Anda tidak boleh mengimport lebih daripada 1 baris sekaligus.|Anda tidak boleh mengimport lebih daripada :count baris sekaligus.', - ], - - 'started' => [ - 'title' => 'Import dimulakan', - 'body' => 'Import anda telah bermula dan 1 baris akan diproses di latar belakang.|Import anda telah bermula dan :count baris akan diproses di latar belakang.', - ], - - ], - - 'example_csv' => [ - 'file_name' => ':importer-example', - ], - - 'failure_csv' => [ - 'file_name' => 'import-:import_id-:csv_name-failed-rows', - 'error_header' => 'ralat', - 'system_error' => 'Ralat sistem, sila hubungi sokongan.', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ms/modal.php b/vendor/filament/actions/resources/lang/ms/modal.php deleted file mode 100644 index 48ce4d60..00000000 --- a/vendor/filament/actions/resources/lang/ms/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Adakah anda pasti mahu melakukan ini?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Batal', - ], - - 'confirm' => [ - 'label' => 'Sahkan', - ], - - 'submit' => [ - 'label' => 'Hantar', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ms/replicate.php b/vendor/filament/actions/resources/lang/ms/replicate.php deleted file mode 100644 index d8490606..00000000 --- a/vendor/filament/actions/resources/lang/ms/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Replika', - - 'modal' => [ - - 'heading' => 'Replika :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Replika', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Direplikasi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ms/restore.php b/vendor/filament/actions/resources/lang/ms/restore.php deleted file mode 100644 index 07d804f4..00000000 --- a/vendor/filament/actions/resources/lang/ms/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Pulihkan', - - 'modal' => [ - - 'heading' => 'Pulihkan :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Pulihkan', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Dipulihkan', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Pulihkan pilihan', - - 'modal' => [ - - 'heading' => 'Pulihkan pilihan :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Pulihkan', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Dipulihkan', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ms/view.php b/vendor/filament/actions/resources/lang/ms/view.php deleted file mode 100644 index 119dee2f..00000000 --- a/vendor/filament/actions/resources/lang/ms/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Paparan', - - 'modal' => [ - - 'heading' => 'Paparan :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Tutup', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/my/associate.php b/vendor/filament/actions/resources/lang/my/associate.php deleted file mode 100644 index 974e983c..00000000 --- a/vendor/filament/actions/resources/lang/my/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'တွဲဘက်', - - 'modal' => [ - - 'heading' => ':label တွဲဘက်', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'မှတ်တမ်းများ', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'တွဲဘက်', - ], - - 'associate_another' => [ - 'label' => 'သိမ်းဆည်းပြီး နောက်တစ်ခုကို ဖန်တီးပါ', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'သိမ်းဆည်းပြီး', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/my/attach.php b/vendor/filament/actions/resources/lang/my/attach.php deleted file mode 100644 index 1ab7137e..00000000 --- a/vendor/filament/actions/resources/lang/my/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'ပူးတွဲရန်', - - 'modal' => [ - - 'heading' => ':label ပူးတွဲရန်', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'မှတ်တမ်းများ', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'ပူးတွဲရန်', - ], - - 'attach_another' => [ - 'label' => 'သိမ်းဆည်းပြီး နောက်တစ်ခုကို ဖန်တီးပါ', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'သိမ်းဆည်းပြီး', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/my/create.php b/vendor/filament/actions/resources/lang/my/create.php deleted file mode 100644 index 536c4bd3..00000000 --- a/vendor/filament/actions/resources/lang/my/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'ဖန်တီးပါ', - - 'modal' => [ - - 'heading' => ':label ဖန်တီးပါ', - - 'actions' => [ - - 'create' => [ - 'label' => 'ဖန်တီးပါ', - ], - - 'create_another' => [ - 'label' => 'သိမ်းဆည်းပြီး နောက်တစ်ခုကို ဖန်တီးပါ', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'သိမ်းဆည်းပြီး', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/my/delete.php b/vendor/filament/actions/resources/lang/my/delete.php deleted file mode 100644 index 129a21d8..00000000 --- a/vendor/filament/actions/resources/lang/my/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'ဖျက်ပါ', - - 'modal' => [ - - 'heading' => ':label ကိုဖျက်ပါ', - - 'actions' => [ - - 'delete' => [ - 'label' => 'ဖျက်ပါ', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'ဖျက်ပြီးပါပြီ', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Delete selected', - - 'modal' => [ - - 'heading' => 'Delete selected :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Delete selected', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Deleted', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/my/detach.php b/vendor/filament/actions/resources/lang/my/detach.php deleted file mode 100644 index d0057f60..00000000 --- a/vendor/filament/actions/resources/lang/my/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'ခွဲထုတ်ပါ', - - 'modal' => [ - - 'heading' => ':label ခွဲထုတ်ပါ။', - - 'actions' => [ - - 'detach' => [ - 'label' => 'ခွဲထုတ်ပါ', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'သိမ်းဆည်းပြီး', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Detach selected', - - 'modal' => [ - - 'heading' => 'Detach selected :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Detach selected', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Detached', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/my/dissociate.php b/vendor/filament/actions/resources/lang/my/dissociate.php deleted file mode 100644 index 18a62b75..00000000 --- a/vendor/filament/actions/resources/lang/my/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'သီးခြား', - - 'modal' => [ - - 'heading' => ':label သီးခြား', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'သီးခြား', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'သိမ်းဆည်းပြီး', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Dissociate selected', - - 'modal' => [ - - 'heading' => 'Dissociate selected :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Dissociate selected', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Dissociated', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/my/edit.php b/vendor/filament/actions/resources/lang/my/edit.php deleted file mode 100644 index 08f702e9..00000000 --- a/vendor/filament/actions/resources/lang/my/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'တည်းဖြတ်ပါ', - - 'modal' => [ - - 'heading' => ':label ကိုတည်းဖြတ်ပါ', - - 'actions' => [ - - 'save' => [ - 'label' => 'မှတ်ပါ', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'သိမ်းဆည်းပြီး', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/my/modal.php b/vendor/filament/actions/resources/lang/my/modal.php deleted file mode 100644 index 678aad8d..00000000 --- a/vendor/filament/actions/resources/lang/my/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'ဒီလိုလုပ်ချင်တာသေချာလား', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'မလုပ်တော့ပါ', - ], - - 'confirm' => [ - 'label' => 'အတည်ပြုသည်', - ], - - 'submit' => [ - 'label' => 'နှိပ်ပါ', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/nl/associate.php b/vendor/filament/actions/resources/lang/nl/associate.php deleted file mode 100644 index 5c7a8244..00000000 --- a/vendor/filament/actions/resources/lang/nl/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Koppelen', - - 'modal' => [ - - 'heading' => ':Label koppelen', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Record', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Koppelen', - ], - - 'associate_another' => [ - 'label' => 'Koppelen & nieuwe koppelen', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Gekoppeld', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/nl/attach.php b/vendor/filament/actions/resources/lang/nl/attach.php deleted file mode 100644 index 8625a026..00000000 --- a/vendor/filament/actions/resources/lang/nl/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Koppelen', - - 'modal' => [ - - 'heading' => ':Label koppelen', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Record', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Koppelen', - ], - - 'attach_another' => [ - 'label' => 'Koppelen & nieuwe koppelen', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Gekoppeld', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/nl/create.php b/vendor/filament/actions/resources/lang/nl/create.php deleted file mode 100644 index c1548d6d..00000000 --- a/vendor/filament/actions/resources/lang/nl/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => ':Label aanmaken', - - 'modal' => [ - - 'heading' => ':Label aanmaken', - - 'actions' => [ - - 'create' => [ - 'label' => 'Aanmaken', - ], - - 'create_another' => [ - 'label' => 'Aanmaken & nieuwe aanmaken', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Aangemaakt', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/nl/delete.php b/vendor/filament/actions/resources/lang/nl/delete.php deleted file mode 100644 index cdcbdf64..00000000 --- a/vendor/filament/actions/resources/lang/nl/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Verwijderen', - - 'modal' => [ - - 'heading' => ':Label verwijderen', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Verwijderen', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Verwijderd', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Geselecteerde verwijderen', - - 'modal' => [ - - 'heading' => 'Geselecteerde :label verwijderen', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Verwijderen', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Verwijderd', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/nl/detach.php b/vendor/filament/actions/resources/lang/nl/detach.php deleted file mode 100644 index abf94190..00000000 --- a/vendor/filament/actions/resources/lang/nl/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Ontkoppelen', - - 'modal' => [ - - 'heading' => ':Label ontkoppelen', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Ontkoppelen', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Ontkoppeld', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Geselecteerde ontkoppelen', - - 'modal' => [ - - 'heading' => 'Geselecteerde :label ontkoppelen', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Ontkoppelen', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Ontkoppeld', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/nl/dissociate.php b/vendor/filament/actions/resources/lang/nl/dissociate.php deleted file mode 100644 index 7d49fa0e..00000000 --- a/vendor/filament/actions/resources/lang/nl/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Ontkoppelen', - - 'modal' => [ - - 'heading' => ':Label ontkoppelen', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Ontkoppelen', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Ontkoppeld', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Geselecteerde ontkoppelen', - - 'modal' => [ - - 'heading' => 'Geselecteerde :label ontkoppelen', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Ontkoppelen', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Ontkoppeld', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/nl/edit.php b/vendor/filament/actions/resources/lang/nl/edit.php deleted file mode 100644 index 3f4a455a..00000000 --- a/vendor/filament/actions/resources/lang/nl/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Bewerken', - - 'modal' => [ - - 'heading' => ':Label bewerken', - - 'actions' => [ - - 'save' => [ - 'label' => 'Wijzigingen opslaan', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Opgeslagen', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/nl/export.php b/vendor/filament/actions/resources/lang/nl/export.php deleted file mode 100644 index 671414b2..00000000 --- a/vendor/filament/actions/resources/lang/nl/export.php +++ /dev/null @@ -1,77 +0,0 @@ - ':Label exporteren', - - 'modal' => [ - - 'heading' => ':Label exporteren', - - 'form' => [ - - 'columns' => [ - - 'label' => 'Kolommen', - - 'form' => [ - - 'is_enabled' => [ - 'label' => ':column ingeschakeld', - ], - - 'label' => [ - 'label' => ':column label', - ], - - ], - - ], - - ], - - 'actions' => [ - - 'export' => [ - 'label' => 'Exporteren', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Exporteren voltooid', - - 'actions' => [ - - 'download_csv' => [ - 'label' => '.csv downloaden', - ], - - 'download_xlsx' => [ - 'label' => '.xlsx downloaden', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'Export is te groot', - 'body' => 'Je mag niet meer dan 1 rij tegelijk exporteren.|Je mag niet meer dan :count rijen tegelijk exporteren.', - ], - - 'started' => [ - 'title' => 'Exporteren gestart', - 'body' => 'Je export is begonnen en 1 rij wordt op de achtergrond verwerkt.|Je export is begonnen en :count rijen worden op de achtergrond verwerkt.', - ], - - ], - - 'file_name' => 'export-:export_id-:model', - -]; diff --git a/vendor/filament/actions/resources/lang/nl/force-delete.php b/vendor/filament/actions/resources/lang/nl/force-delete.php deleted file mode 100644 index e10e875a..00000000 --- a/vendor/filament/actions/resources/lang/nl/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Geforceerd verwijderen', - - 'modal' => [ - - 'heading' => ':Label geforceerd verwijderen', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Verwijderen', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Verwijderd', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Geselecteerde geforceerd verwijderen', - - 'modal' => [ - - 'heading' => 'Geselecteerde :label geforceerd verwijderen', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Verwijderen', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Verwijderd', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/nl/group.php b/vendor/filament/actions/resources/lang/nl/group.php deleted file mode 100644 index 4f62ebac..00000000 --- a/vendor/filament/actions/resources/lang/nl/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Acties', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/nl/import.php b/vendor/filament/actions/resources/lang/nl/import.php deleted file mode 100644 index b834ae8c..00000000 --- a/vendor/filament/actions/resources/lang/nl/import.php +++ /dev/null @@ -1,77 +0,0 @@ - ':Label importeren', - - 'modal' => [ - - 'heading' => ':Label importeren', - - 'form' => [ - - 'file' => [ - 'label' => 'Bestand', - 'placeholder' => 'Upload een CSV-bestand', - ], - - 'columns' => [ - 'label' => 'Kolommen', - 'placeholder' => 'Selecteer een kolom', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => 'Voorbeeld CSV-bestand downloaden', - ], - - 'import' => [ - 'label' => 'Importeren', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Importeren voltooid', - - 'actions' => [ - - 'download_failed_rows_csv' => [ - 'label' => 'Informatie over de mislukte rij downloaden|Informatie over de mislukte rijen downloaden', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'Geüploade CSV-bestand is te groot', - 'body' => 'Je mag niet meer dan 1 rij tegelijk importeren.|Je mag niet meer dan :count rijen tegelijk importeren.', - ], - - 'started' => [ - 'title' => 'Importeren gestart', - 'body' => 'Je import is begonnen en 1 rij wordt op de achtergrond verwerkt.|Je import is begonnen en :count rijen worden op de achtergrond verwerkt.', - ], - - ], - - 'example_csv' => [ - 'file_name' => ':importer-voorbeeld', - ], - - 'failure_csv' => [ - 'file_name' => 'import-:import_id-:csv_name-mislukte-rijen', - 'error_header' => 'fout', - 'system_error' => 'Systeemfout, neem contact op met ondersteuning.', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/nl/modal.php b/vendor/filament/actions/resources/lang/nl/modal.php deleted file mode 100644 index 330b0e62..00000000 --- a/vendor/filament/actions/resources/lang/nl/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Weet je zeker dat je dit wilt doen?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Annuleren', - ], - - 'confirm' => [ - 'label' => 'Bevestigen', - ], - - 'submit' => [ - 'label' => 'Verzenden', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/nl/replicate.php b/vendor/filament/actions/resources/lang/nl/replicate.php deleted file mode 100644 index 99dab6ea..00000000 --- a/vendor/filament/actions/resources/lang/nl/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Dupliceren', - - 'modal' => [ - - 'heading' => ':Label dupliceren', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Dupliceren', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Gedupliceerd', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/nl/restore.php b/vendor/filament/actions/resources/lang/nl/restore.php deleted file mode 100644 index 2d58889a..00000000 --- a/vendor/filament/actions/resources/lang/nl/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Herstellen', - - 'modal' => [ - - 'heading' => ':Label herstellen', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Herstellen', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Hersteld', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Geselecteerde herstellen', - - 'modal' => [ - - 'heading' => 'Geselecteerde :label herstellen', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Herstellen', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Hersteld', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/nl/view.php b/vendor/filament/actions/resources/lang/nl/view.php deleted file mode 100644 index 3911fdad..00000000 --- a/vendor/filament/actions/resources/lang/nl/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Bekijken', - - 'modal' => [ - - 'heading' => ':Label bekijken', - - 'actions' => [ - - 'close' => [ - 'label' => 'Sluiten', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/no/associate.php b/vendor/filament/actions/resources/lang/no/associate.php deleted file mode 100644 index 265336d3..00000000 --- a/vendor/filament/actions/resources/lang/no/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Assosiere', - - 'modal' => [ - - 'heading' => 'Assosiere :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Post', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Assosiere', - ], - - 'associate_another' => [ - 'label' => 'Assosiere & assosiere en til', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Assosiert', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/no/attach.php b/vendor/filament/actions/resources/lang/no/attach.php deleted file mode 100644 index b029c70d..00000000 --- a/vendor/filament/actions/resources/lang/no/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Legg til', - - 'modal' => [ - - 'heading' => 'Legg til :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Post', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Legg til', - ], - - 'attach_another' => [ - 'label' => 'Legg til & legg til en annen', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Lagt til', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/no/create.php b/vendor/filament/actions/resources/lang/no/create.php deleted file mode 100644 index 018cc4d8..00000000 --- a/vendor/filament/actions/resources/lang/no/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Opprett :label', - - 'modal' => [ - - 'heading' => 'Opprett :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Opprett', - ], - - 'create_another' => [ - 'label' => 'Opprett & opprett en til', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Opprettet', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/no/delete.php b/vendor/filament/actions/resources/lang/no/delete.php deleted file mode 100644 index 982a519b..00000000 --- a/vendor/filament/actions/resources/lang/no/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Slett', - - 'modal' => [ - - 'heading' => 'Slett :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Slett', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Slettet', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Slett valgte', - - 'modal' => [ - - 'heading' => 'Slett valgte :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Slett', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Slettet', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/no/detach.php b/vendor/filament/actions/resources/lang/no/detach.php deleted file mode 100644 index 2bf8f8a8..00000000 --- a/vendor/filament/actions/resources/lang/no/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Løsne', - - 'modal' => [ - - 'heading' => 'Løsne fra :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Løsne fra', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Løsnet', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Løsne fra valgte', - - 'modal' => [ - - 'heading' => 'Løsne fra valgte :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Løsne fra', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Løsnet', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/no/dissociate.php b/vendor/filament/actions/resources/lang/no/dissociate.php deleted file mode 100644 index 87a36482..00000000 --- a/vendor/filament/actions/resources/lang/no/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Dissosiere', - - 'modal' => [ - - 'heading' => 'Dissosiere :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Dissosier', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Dissosiert', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Dissosiere valgte', - - 'modal' => [ - - 'heading' => 'Dissosiere valgte :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Dissosier', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Dissosiert', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/no/edit.php b/vendor/filament/actions/resources/lang/no/edit.php deleted file mode 100644 index 98dd864f..00000000 --- a/vendor/filament/actions/resources/lang/no/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Endre', - - 'modal' => [ - - 'heading' => 'Endre :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Lagre endringer', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Lagret', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/no/force-delete.php b/vendor/filament/actions/resources/lang/no/force-delete.php deleted file mode 100644 index ff1f3ede..00000000 --- a/vendor/filament/actions/resources/lang/no/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Tving sletting', - - 'modal' => [ - - 'heading' => 'Tving sletting av :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Slett', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Slettet', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Tving sletting av valgte', - - 'modal' => [ - - 'heading' => 'Tving sletting av valgte :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Slett', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Slettet', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/no/group.php b/vendor/filament/actions/resources/lang/no/group.php deleted file mode 100644 index 7745c75c..00000000 --- a/vendor/filament/actions/resources/lang/no/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Handlinger', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/no/modal.php b/vendor/filament/actions/resources/lang/no/modal.php deleted file mode 100644 index 63d0136a..00000000 --- a/vendor/filament/actions/resources/lang/no/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Er du sikker på at du vil gjøre dette?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Avbryt', - ], - - 'confirm' => [ - 'label' => 'Bekreft', - ], - - 'submit' => [ - 'label' => 'Send', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/no/replicate.php b/vendor/filament/actions/resources/lang/no/replicate.php deleted file mode 100644 index 9d2ccae5..00000000 --- a/vendor/filament/actions/resources/lang/no/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Gjenskape', - - 'modal' => [ - - 'heading' => 'Gjenskap :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Gjenskap', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Gjenskapt', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/no/restore.php b/vendor/filament/actions/resources/lang/no/restore.php deleted file mode 100644 index b042e573..00000000 --- a/vendor/filament/actions/resources/lang/no/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Gjenopprett', - - 'modal' => [ - - 'heading' => 'Gjenopprett :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Gjenopprett', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Gjenopprettet', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Gjenopprett valgte', - - 'modal' => [ - - 'heading' => 'Gjenopprett valgte :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Gjenopprett', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Gjenopprettet', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/no/view.php b/vendor/filament/actions/resources/lang/no/view.php deleted file mode 100644 index 2150324e..00000000 --- a/vendor/filament/actions/resources/lang/no/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Vis', - - 'modal' => [ - - 'heading' => 'Vis :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Lukk', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/np/associate.php b/vendor/filament/actions/resources/lang/np/associate.php deleted file mode 100644 index dbf492f0..00000000 --- a/vendor/filament/actions/resources/lang/np/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'जोड्नुहोस्', - - 'modal' => [ - - 'heading' => ':label सँग जोड्नुहोस्', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'रेकर्ड', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'जोड्नुहोस्', - ], - - 'associate_another' => [ - 'label' => 'यो जोड्नुहोस र अर्को जोड्नुहोस', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'जोडियो', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/np/attach.php b/vendor/filament/actions/resources/lang/np/attach.php deleted file mode 100644 index 9153ecf4..00000000 --- a/vendor/filament/actions/resources/lang/np/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'संलग्न', - - 'modal' => [ - - 'heading' => ':label सँग संलग्न गर्नुहोस्', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'रेकर्ड', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'संलग्न', - ], - - 'attach_another' => [ - 'label' => 'यो जोड्नुहोस र अर्को जोड्नुहोस', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'संलग्न गरियो', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/np/create.php b/vendor/filament/actions/resources/lang/np/create.php deleted file mode 100644 index 581701a9..00000000 --- a/vendor/filament/actions/resources/lang/np/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'नयाँ :label', - - 'modal' => [ - - 'heading' => ':label सिर्जना गर्नुहोस्', - - 'actions' => [ - - 'create' => [ - 'label' => 'सिर्जना गर्नुहोस्', - ], - - 'create_another' => [ - 'label' => 'बनाउनुहोस् र अर्को सिर्जना गर्नुहोस्', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'सिर्जना गरियो', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/np/delete.php b/vendor/filament/actions/resources/lang/np/delete.php deleted file mode 100644 index 7cce795b..00000000 --- a/vendor/filament/actions/resources/lang/np/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'मेटाउनुहोस्', - - 'modal' => [ - - 'heading' => ':label मेटाउनुहोस्', - - 'actions' => [ - - 'delete' => [ - 'label' => 'मेटाउनुहोस्', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'मेटाइयो', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'चयन गरिएको मेटाउनुहोस्', - - 'modal' => [ - - 'heading' => 'चयन गरिएका :label मेटाउनुहोस्', - - 'actions' => [ - - 'delete' => [ - 'label' => 'मेटाउनुहोस्', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'मेटाइयो', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/np/detach.php b/vendor/filament/actions/resources/lang/np/detach.php deleted file mode 100644 index e372cce2..00000000 --- a/vendor/filament/actions/resources/lang/np/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'अलग गर्नुहोस्', - - 'modal' => [ - - 'heading' => ':label अलग गर्नुहोस्', - - 'actions' => [ - - 'detach' => [ - 'label' => 'अलग गर्नुहोस्', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'अलग भयो', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'चयन गरिएको अलग गर्नुहोस्', - - 'modal' => [ - - 'heading' => 'चयन गरिएका :label अलग गर्नुहोस्', - - 'actions' => [ - - 'detach' => [ - 'label' => 'अलग गर्नुहोस्', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'अलग भयो', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/np/dissociate.php b/vendor/filament/actions/resources/lang/np/dissociate.php deleted file mode 100644 index 8d6b8119..00000000 --- a/vendor/filament/actions/resources/lang/np/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'छुटाउनुहोस', - - 'modal' => [ - - 'heading' => ':label लाई छुटाउनुहोस', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'छुटाउनुहोस', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'छुटाइयो', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'चयन गरिएको छुटाउनुहोस', - - 'modal' => [ - - 'heading' => 'चयन गरिएका :label छुटाउनुहोस ', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'छुटाउनुहोस', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'छुटाइयो', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/np/edit.php b/vendor/filament/actions/resources/lang/np/edit.php deleted file mode 100644 index e340fe19..00000000 --- a/vendor/filament/actions/resources/lang/np/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'सम्पादन गर्नुहोस्', - - 'modal' => [ - - 'heading' => ':label सम्पादन गर्नुहोस्', - - 'actions' => [ - - 'save' => [ - 'label' => 'परिवर्तनहरू सुरक्षित गर्नुहोस', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'परिवर्तन सुरक्षित गरियो', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/np/force-delete.php b/vendor/filament/actions/resources/lang/np/force-delete.php deleted file mode 100644 index b15faf42..00000000 --- a/vendor/filament/actions/resources/lang/np/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'जबर्जस्ती मेटाउनुहोस्', - - 'modal' => [ - - 'heading' => ':label जबर्जस्ती मेटाउनुहोस्', - - 'actions' => [ - - 'delete' => [ - 'label' => 'मेटाउनुहोस्', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'मेटाइयो', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'चयन गरिएको मेटाउनुहोस्', - - 'modal' => [ - - 'heading' => 'चयन गरिएका :label मेटाउनुहोस्', - - 'actions' => [ - - 'delete' => [ - 'label' => 'मेटाउनुहोस्', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'मेटाइयो', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/np/group.php b/vendor/filament/actions/resources/lang/np/group.php deleted file mode 100644 index bbae1509..00000000 --- a/vendor/filament/actions/resources/lang/np/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'कार्यहरू', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/np/modal.php b/vendor/filament/actions/resources/lang/np/modal.php deleted file mode 100644 index 6f4c6604..00000000 --- a/vendor/filament/actions/resources/lang/np/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'के तपाइँ यो गर्न निश्चित हुनुहुन्छ?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'रद्द गर्नुहोस्', - ], - - 'confirm' => [ - 'label' => 'पुष्टि गर्नुहोस्', - ], - - 'submit' => [ - 'label' => 'पेश गर्नुहोस्', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/np/replicate.php b/vendor/filament/actions/resources/lang/np/replicate.php deleted file mode 100644 index 1b8a1014..00000000 --- a/vendor/filament/actions/resources/lang/np/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'नक्कल गर्नुहोस्', - - 'modal' => [ - - 'heading' => ':label को नक्कल गर्नुहोस्', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'नक्कल गर्नुहोस्', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'नक्कल गरियो', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/np/restore.php b/vendor/filament/actions/resources/lang/np/restore.php deleted file mode 100644 index 1bf850b4..00000000 --- a/vendor/filament/actions/resources/lang/np/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'पुनर्स्थापना गर्नुहोस्', - - 'modal' => [ - - 'heading' => ':label को पुनर्स्थापना गर्नुहोस्', - - 'actions' => [ - - 'restore' => [ - 'label' => 'पुनर्स्थापना गर्नुहोस्', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'पुनर्स्थापित', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'चयन गरिएको पुनर्स्थापना गर्नुहोस्', - - 'modal' => [ - - 'heading' => 'चयन गरिएका :label पुनर्स्थापना गर्नुहोस्', - - 'actions' => [ - - 'restore' => [ - 'label' => 'पुनर्स्थापना गर्नुहोस्', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'पुनर्स्थापित', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/np/view.php b/vendor/filament/actions/resources/lang/np/view.php deleted file mode 100644 index fc55c9ba..00000000 --- a/vendor/filament/actions/resources/lang/np/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'हेर्नुहोस्', - - 'modal' => [ - - 'heading' => ':label हेर्नुहोस्', - - 'actions' => [ - - 'close' => [ - 'label' => 'बन्द गर्नुहोस्', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pl/associate.php b/vendor/filament/actions/resources/lang/pl/associate.php deleted file mode 100644 index d527aa9a..00000000 --- a/vendor/filament/actions/resources/lang/pl/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Powiąż', - - 'modal' => [ - - 'heading' => 'Powiąż :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Rekord', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Powiąż', - ], - - 'associate_another' => [ - 'label' => 'Powiąż i powiąż kolejny', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Utworzono powiązanie', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pl/attach.php b/vendor/filament/actions/resources/lang/pl/attach.php deleted file mode 100644 index 02350c40..00000000 --- a/vendor/filament/actions/resources/lang/pl/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Dołącz', - - 'modal' => [ - - 'heading' => 'Dołącz :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Rekord', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Dołącz', - ], - - 'attach_another' => [ - 'label' => 'Dołącz i dołącz kolejny', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Dołączono', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pl/create.php b/vendor/filament/actions/resources/lang/pl/create.php deleted file mode 100644 index 44eb4f20..00000000 --- a/vendor/filament/actions/resources/lang/pl/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Utwórz', - - 'modal' => [ - - 'heading' => 'Utwórz :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Utwórz', - ], - - 'create_another' => [ - 'label' => 'Utwórz i utwórz kolejny', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Utworzono', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pl/delete.php b/vendor/filament/actions/resources/lang/pl/delete.php deleted file mode 100644 index 2184a594..00000000 --- a/vendor/filament/actions/resources/lang/pl/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Usuń', - - 'modal' => [ - - 'heading' => 'Usuń :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Usuń', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Usunięto', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Usuń zaznaczone', - - 'modal' => [ - - 'heading' => 'Usuń zaznaczone :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Usuń zaznaczone', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Usunięto', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pl/detach.php b/vendor/filament/actions/resources/lang/pl/detach.php deleted file mode 100644 index f840c3c4..00000000 --- a/vendor/filament/actions/resources/lang/pl/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Odłącz', - - 'modal' => [ - - 'heading' => 'Odłącz :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Odłącz', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Odłączono', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Odłącz zaznaczone', - - 'modal' => [ - - 'heading' => 'Odłącz zaznaczone :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Odłącz zaznaczone', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Odłączono', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pl/dissociate.php b/vendor/filament/actions/resources/lang/pl/dissociate.php deleted file mode 100644 index 45b31336..00000000 --- a/vendor/filament/actions/resources/lang/pl/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Usuń powiązanie', - - 'modal' => [ - - 'heading' => 'Usuń powiązanie :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Usuń powiązanie', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Usunięto powiązanie', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Usuń powiązanie zaznaczonych', - - 'modal' => [ - - 'heading' => 'Usuń powiązania zaznaczonych :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Usuń powiązanie zaznaczonych', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Usunięto powiązania', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pl/edit.php b/vendor/filament/actions/resources/lang/pl/edit.php deleted file mode 100644 index 40d24f20..00000000 --- a/vendor/filament/actions/resources/lang/pl/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Edytuj', - - 'modal' => [ - - 'heading' => 'Edytuj :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Zapisz', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Zmiany zapisane', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pl/force-delete.php b/vendor/filament/actions/resources/lang/pl/force-delete.php deleted file mode 100644 index 339165f7..00000000 --- a/vendor/filament/actions/resources/lang/pl/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Usuń trwale', - - 'modal' => [ - - 'heading' => 'Trwale usuń :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Usuń trwale', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Trwale usunięto', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Trwale usuń zaznaczone', - - 'modal' => [ - - 'heading' => 'Trwale usuń zaznaczone :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Usuń trwale', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Trwale usunięto', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pl/group.php b/vendor/filament/actions/resources/lang/pl/group.php deleted file mode 100644 index da48b843..00000000 --- a/vendor/filament/actions/resources/lang/pl/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Czynności', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pl/modal.php b/vendor/filament/actions/resources/lang/pl/modal.php deleted file mode 100644 index 9f3a0d20..00000000 --- a/vendor/filament/actions/resources/lang/pl/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Czy na pewno chcesz to zrobić?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Anuluj', - ], - - 'confirm' => [ - 'label' => 'Potwierdź', - ], - - 'submit' => [ - 'label' => 'Zatwierdź', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pl/replicate.php b/vendor/filament/actions/resources/lang/pl/replicate.php deleted file mode 100644 index ffd24c7e..00000000 --- a/vendor/filament/actions/resources/lang/pl/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Powiel', - - 'modal' => [ - - 'heading' => 'Powiel :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Powiel', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Powielono', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pl/restore.php b/vendor/filament/actions/resources/lang/pl/restore.php deleted file mode 100644 index 629e893e..00000000 --- a/vendor/filament/actions/resources/lang/pl/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Przywróć', - - 'modal' => [ - - 'heading' => 'Przywróć :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Przywróć', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Przywrócono', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Przywróć zaznaczone', - - 'modal' => [ - - 'heading' => 'Przywróć zaznaczone :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Przywróć', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Przywrócono', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pl/view.php b/vendor/filament/actions/resources/lang/pl/view.php deleted file mode 100644 index b7108b56..00000000 --- a/vendor/filament/actions/resources/lang/pl/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Podgląd', - - 'modal' => [ - - 'heading' => 'Podgląd :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Zamknij', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_BR/associate.php b/vendor/filament/actions/resources/lang/pt_BR/associate.php deleted file mode 100644 index ae5cca52..00000000 --- a/vendor/filament/actions/resources/lang/pt_BR/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Associar', - - 'modal' => [ - - 'heading' => 'Associar :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Registro', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Associar', - ], - - 'associate_another' => [ - 'label' => 'Salvar e associar outro', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Associado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_BR/attach.php b/vendor/filament/actions/resources/lang/pt_BR/attach.php deleted file mode 100644 index 687ea79c..00000000 --- a/vendor/filament/actions/resources/lang/pt_BR/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Vincular', - - 'modal' => [ - - 'heading' => 'Vincular :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Registro', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Vincular', - ], - - 'attach_another' => [ - 'label' => 'Salvar e vincular outro', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Vinculado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_BR/create.php b/vendor/filament/actions/resources/lang/pt_BR/create.php deleted file mode 100644 index bf0628ee..00000000 --- a/vendor/filament/actions/resources/lang/pt_BR/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Criar :label', - - 'modal' => [ - - 'heading' => 'Criar :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Criar', - ], - - 'create_another' => [ - 'label' => 'Salvar e criar outro', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Criado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_BR/delete.php b/vendor/filament/actions/resources/lang/pt_BR/delete.php deleted file mode 100644 index a2678e83..00000000 --- a/vendor/filament/actions/resources/lang/pt_BR/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Excluir', - - 'modal' => [ - - 'heading' => 'Excluir :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Excluir', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Excluído', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Excluir selecionado', - - 'modal' => [ - - 'heading' => 'Excluir :label selecionado', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Excluir', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Excluído', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_BR/detach.php b/vendor/filament/actions/resources/lang/pt_BR/detach.php deleted file mode 100644 index 2ddd3bef..00000000 --- a/vendor/filament/actions/resources/lang/pt_BR/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Desvincular', - - 'modal' => [ - - 'heading' => 'Desvincular :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Desvincular', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Desvinculado', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Desvincular selecionado', - - 'modal' => [ - - 'heading' => 'Desvincular :label selecionado', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Desvincular', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Desvinculado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_BR/dissociate.php b/vendor/filament/actions/resources/lang/pt_BR/dissociate.php deleted file mode 100644 index 02576d4e..00000000 --- a/vendor/filament/actions/resources/lang/pt_BR/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Dissociar', - - 'modal' => [ - - 'heading' => 'Dissociar :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Dissociar', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Dissociado', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Dissociar selecionado', - - 'modal' => [ - - 'heading' => 'Dissociar :label selecionado', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Dissociar', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Dissociado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_BR/edit.php b/vendor/filament/actions/resources/lang/pt_BR/edit.php deleted file mode 100644 index 0fb59502..00000000 --- a/vendor/filament/actions/resources/lang/pt_BR/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Editar', - - 'modal' => [ - - 'heading' => 'Editar :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Salvar alterações', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Salvo', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_BR/force-delete.php b/vendor/filament/actions/resources/lang/pt_BR/force-delete.php deleted file mode 100644 index d495af8d..00000000 --- a/vendor/filament/actions/resources/lang/pt_BR/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Forçar exclusão', - - 'modal' => [ - - 'heading' => 'Forçar exclusão de :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Excluir', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Excluído', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Forçar exclusão selecionado', - - 'modal' => [ - - 'heading' => 'Forçar exclusão de :label selecionado', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Excluir', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Excluído', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_BR/group.php b/vendor/filament/actions/resources/lang/pt_BR/group.php deleted file mode 100644 index c564b242..00000000 --- a/vendor/filament/actions/resources/lang/pt_BR/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Ações', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_BR/modal.php b/vendor/filament/actions/resources/lang/pt_BR/modal.php deleted file mode 100644 index a2489f0b..00000000 --- a/vendor/filament/actions/resources/lang/pt_BR/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Você tem certeza que gostaria de fazer isso?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancelar', - ], - - 'confirm' => [ - 'label' => 'Confirmar', - ], - - 'submit' => [ - 'label' => 'Enviar', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_BR/replicate.php b/vendor/filament/actions/resources/lang/pt_BR/replicate.php deleted file mode 100644 index 15333fcc..00000000 --- a/vendor/filament/actions/resources/lang/pt_BR/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Replicar', - - 'modal' => [ - - 'heading' => 'Replicar :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Replicar', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Replicado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_BR/restore.php b/vendor/filament/actions/resources/lang/pt_BR/restore.php deleted file mode 100644 index eb636031..00000000 --- a/vendor/filament/actions/resources/lang/pt_BR/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Restaurar', - - 'modal' => [ - - 'heading' => 'Restaurar :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Restaurar', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Restaurado', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Restaurar selecionado', - - 'modal' => [ - - 'heading' => 'Restaurar :label selecionado', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Restaurar', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Restaurado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_BR/view.php b/vendor/filament/actions/resources/lang/pt_BR/view.php deleted file mode 100644 index 70829ec3..00000000 --- a/vendor/filament/actions/resources/lang/pt_BR/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Visualizar', - - 'modal' => [ - - 'heading' => 'Visualizar :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Fechar', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_PT/associate.php b/vendor/filament/actions/resources/lang/pt_PT/associate.php deleted file mode 100644 index 4bc473ed..00000000 --- a/vendor/filament/actions/resources/lang/pt_PT/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Associar', - - 'modal' => [ - - 'heading' => 'Associar :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Registo', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Associar', - ], - - 'associate_another' => [ - 'label' => 'Associar e associar outro', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Associado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_PT/attach.php b/vendor/filament/actions/resources/lang/pt_PT/attach.php deleted file mode 100644 index ae363e79..00000000 --- a/vendor/filament/actions/resources/lang/pt_PT/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Vincular', - - 'modal' => [ - - 'heading' => 'Vincular :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Registo', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Vincular', - ], - - 'attach_another' => [ - 'label' => 'Vincular e vincular outro', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Vinculado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_PT/create.php b/vendor/filament/actions/resources/lang/pt_PT/create.php deleted file mode 100644 index ad17f784..00000000 --- a/vendor/filament/actions/resources/lang/pt_PT/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Criar :label', - - 'modal' => [ - - 'heading' => 'Criar :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Criar', - ], - - 'create_another' => [ - 'label' => 'Criar e criar novo', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Criado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_PT/delete.php b/vendor/filament/actions/resources/lang/pt_PT/delete.php deleted file mode 100644 index bd08528f..00000000 --- a/vendor/filament/actions/resources/lang/pt_PT/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Eliminar', - - 'modal' => [ - - 'heading' => 'Eliminar :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Eliminar', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Eliminado', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Eliminar seleccionados', - - 'modal' => [ - - 'heading' => 'Eliminar :label seleccionados', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Eliminar', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Eliminado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_PT/detach.php b/vendor/filament/actions/resources/lang/pt_PT/detach.php deleted file mode 100644 index 9e21bf2e..00000000 --- a/vendor/filament/actions/resources/lang/pt_PT/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Desvincular', - - 'modal' => [ - - 'heading' => 'Desvincular :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Desvincular', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Desvinculado', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Desvincular seleccionados', - - 'modal' => [ - - 'heading' => 'Desvincular :label seleccionados', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Desvincular', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Desvinculado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_PT/dissociate.php b/vendor/filament/actions/resources/lang/pt_PT/dissociate.php deleted file mode 100644 index 26075f2f..00000000 --- a/vendor/filament/actions/resources/lang/pt_PT/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Desassociar', - - 'modal' => [ - - 'heading' => 'Desassociar :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Desassociar', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Desassociado', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Desassociar seleccionados', - - 'modal' => [ - - 'heading' => 'Desassociar :label seleccionados', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Desassociar', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Desassociado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_PT/edit.php b/vendor/filament/actions/resources/lang/pt_PT/edit.php deleted file mode 100644 index de90a18d..00000000 --- a/vendor/filament/actions/resources/lang/pt_PT/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Editar', - - 'modal' => [ - - 'heading' => 'Editar :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Guardar alterações', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Guardado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_PT/export.php b/vendor/filament/actions/resources/lang/pt_PT/export.php deleted file mode 100644 index 4909f2c3..00000000 --- a/vendor/filament/actions/resources/lang/pt_PT/export.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Exportar :label', - - 'modal' => [ - - 'heading' => 'Exportar :label', - - 'form' => [ - - 'columns' => [ - - 'label' => 'Colunas', - - 'form' => [ - - 'is_enabled' => [ - 'label' => ':column activa', - ], - - 'label' => [ - 'label' => 'etiqueta para :column', - ], - - ], - - ], - - ], - - 'actions' => [ - - 'export' => [ - 'label' => 'Exportar', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Exportação terminada', - - 'actions' => [ - - 'download_csv' => [ - 'label' => 'Descarregar .csv', - ], - - 'download_xlsx' => [ - 'label' => 'Descarregar .xlsx', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'A exportação é demasiado grande', - 'body' => 'Não é possível exportar mais de um registo de uma só vez.|Não é possível exportar mais de :count registos de uma só vez.', - ], - - 'started' => [ - 'title' => 'Exportação iniciada', - 'body' => 'A exportação foi iniciada e 1 registo será processado em segundo plano.|A exportação foi iniciada e :count registos serão processados em segundo plano.', - ], - - ], - - 'file_name' => 'export-:export_id-:model', - -]; diff --git a/vendor/filament/actions/resources/lang/pt_PT/force-delete.php b/vendor/filament/actions/resources/lang/pt_PT/force-delete.php deleted file mode 100644 index b738cefc..00000000 --- a/vendor/filament/actions/resources/lang/pt_PT/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Eliminar permanentemente', - - 'modal' => [ - - 'heading' => 'Eliminar permanentemente :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Eliminar', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Eliminado', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Eliminar permanentemente seleccionados', - - 'modal' => [ - - 'heading' => 'Eliminar permanentemente :label seleccionados', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Eliminar', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Eliminado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_PT/group.php b/vendor/filament/actions/resources/lang/pt_PT/group.php deleted file mode 100644 index 83a745ed..00000000 --- a/vendor/filament/actions/resources/lang/pt_PT/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Acções', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_PT/import.php b/vendor/filament/actions/resources/lang/pt_PT/import.php deleted file mode 100644 index 991fecec..00000000 --- a/vendor/filament/actions/resources/lang/pt_PT/import.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Importar :label', - - 'modal' => [ - - 'heading' => 'Importar :label', - - 'form' => [ - - 'file' => [ - 'label' => 'Ficheiro', - 'placeholder' => 'Carregar um ficheiro CSV', - ], - - 'columns' => [ - 'label' => 'Colunas', - 'placeholder' => 'Seleccione uma coluna', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => 'Descarregar um ficheiro CSV de exemplo', - ], - - 'import' => [ - 'label' => 'Importar', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Importação completa', - - 'actions' => [ - - 'download_failed_rows_csv' => [ - 'label' => 'Descarregar informação sobre a falha na linha|Descarregar informação sobre as falhas nas linhas', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'O ficheiro CSV carregado é demasiado grande', - 'body' => 'Não é possível importar mais de uma linha de uma só vez.|Não é possível importar mais de :count linhas de uma só vez.', - ], - - 'started' => [ - 'title' => 'Importação iniciada', - 'body' => 'A importação foi iniciada e 1 linha será processada em segundo plano.|A importação foi iniciada e :count linhas serão processadas em segundo plano.', - ], - - ], - - 'example_csv' => [ - 'file_name' => ':importer-example', - ], - - 'failure_csv' => [ - 'file_name' => 'import-:import_id-:csv_name-failed-rows', - 'error_header' => 'erro', - 'system_error' => 'Erro de sistema, por favor, contacte o suporte técnico.', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_PT/modal.php b/vendor/filament/actions/resources/lang/pt_PT/modal.php deleted file mode 100644 index fdda3044..00000000 --- a/vendor/filament/actions/resources/lang/pt_PT/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Tem a certeza que deseja prosseguir?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancelar', - ], - - 'confirm' => [ - 'label' => 'Confirmar', - ], - - 'submit' => [ - 'label' => 'Submeter', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_PT/replicate.php b/vendor/filament/actions/resources/lang/pt_PT/replicate.php deleted file mode 100644 index 15333fcc..00000000 --- a/vendor/filament/actions/resources/lang/pt_PT/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Replicar', - - 'modal' => [ - - 'heading' => 'Replicar :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Replicar', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Replicado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_PT/restore.php b/vendor/filament/actions/resources/lang/pt_PT/restore.php deleted file mode 100644 index d8049be2..00000000 --- a/vendor/filament/actions/resources/lang/pt_PT/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Restaurar', - - 'modal' => [ - - 'heading' => 'Restaurar :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Restaurar', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Restaurado', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Restaurar seleccionados', - - 'modal' => [ - - 'heading' => 'Restaurar :label seleccionados', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Restaurar', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Restaurado', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/pt_PT/view.php b/vendor/filament/actions/resources/lang/pt_PT/view.php deleted file mode 100644 index 70829ec3..00000000 --- a/vendor/filament/actions/resources/lang/pt_PT/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Visualizar', - - 'modal' => [ - - 'heading' => 'Visualizar :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Fechar', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ro/associate.php b/vendor/filament/actions/resources/lang/ro/associate.php deleted file mode 100644 index 9453951e..00000000 --- a/vendor/filament/actions/resources/lang/ro/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Asociere', - - 'modal' => [ - - 'heading' => 'Asociere :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Înregistrare', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Asociere', - ], - - 'associate_another' => [ - 'label' => 'Asociați și asociați altul', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Asociat cu succes', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ro/attach.php b/vendor/filament/actions/resources/lang/ro/attach.php deleted file mode 100644 index e2917186..00000000 --- a/vendor/filament/actions/resources/lang/ro/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Atașare', - - 'modal' => [ - - 'heading' => 'Atașare :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Înregistrare', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Atașare', - ], - - 'attach_another' => [ - 'label' => 'Atașați și atașați altul', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Atașat cu succes', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ro/create.php b/vendor/filament/actions/resources/lang/ro/create.php deleted file mode 100644 index d0d1c8de..00000000 --- a/vendor/filament/actions/resources/lang/ro/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Adăugare :label', - - 'modal' => [ - - 'heading' => 'Creare :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Creare', - ], - - 'create_another' => [ - 'label' => 'Creați și creați altul', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Creat cu succes', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ro/delete.php b/vendor/filament/actions/resources/lang/ro/delete.php deleted file mode 100644 index 5796a20f..00000000 --- a/vendor/filament/actions/resources/lang/ro/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Ștergere', - - 'modal' => [ - - 'heading' => 'Ștergere :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Ștergere', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Șters cu succes', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Ștergeți înregistrările selectate', - - 'modal' => [ - - 'heading' => 'Ștergeți :label selectate', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Ștergere', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Șters cu succes', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ro/detach.php b/vendor/filament/actions/resources/lang/ro/detach.php deleted file mode 100644 index b21404ec..00000000 --- a/vendor/filament/actions/resources/lang/ro/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Detașare', - - 'modal' => [ - - 'heading' => 'Detașare :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Detașare', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Detașat cu succes', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Detașați înregistrările selectate', - - 'modal' => [ - - 'heading' => 'Detașați :label selectate', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Detașați înregistrările selectate', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Detașat cu succes', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ro/dissociate.php b/vendor/filament/actions/resources/lang/ro/dissociate.php deleted file mode 100644 index 1b949b3e..00000000 --- a/vendor/filament/actions/resources/lang/ro/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Disociere', - - 'modal' => [ - - 'heading' => 'Disociere :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Disociere', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Disociat cu succes', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Disociați înregistrările selectate', - - 'modal' => [ - - 'heading' => 'Disociați :label selectate', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Disociați înregistrările selectate', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Disociat cu succes', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ro/edit.php b/vendor/filament/actions/resources/lang/ro/edit.php deleted file mode 100644 index 198aea0e..00000000 --- a/vendor/filament/actions/resources/lang/ro/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Editare', - - 'modal' => [ - - 'heading' => 'Editare :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Salvare', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Salvat cu succes', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ro/force-delete.php b/vendor/filament/actions/resources/lang/ro/force-delete.php deleted file mode 100644 index 6a66dcef..00000000 --- a/vendor/filament/actions/resources/lang/ro/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Ștergerea forțată', - - 'modal' => [ - - 'heading' => 'Ștergere forțată :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Ștergere', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Șters cu succes', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Ștergere forțată înregistrările selectate', - - 'modal' => [ - - 'heading' => 'Ștergere forțată :label selectate', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Ștergere', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Șters cu succes', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ro/group.php b/vendor/filament/actions/resources/lang/ro/group.php deleted file mode 100644 index 4c2eab45..00000000 --- a/vendor/filament/actions/resources/lang/ro/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Operaţii', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ro/modal.php b/vendor/filament/actions/resources/lang/ro/modal.php deleted file mode 100644 index 209e609b..00000000 --- a/vendor/filament/actions/resources/lang/ro/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Sunteţi sigur că doriţi să efectuaţi operaţia ?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Anulare', - ], - - 'confirm' => [ - 'label' => 'Confirmare', - ], - - 'submit' => [ - 'label' => 'Executați', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ro/replicate.php b/vendor/filament/actions/resources/lang/ro/replicate.php deleted file mode 100644 index e436384a..00000000 --- a/vendor/filament/actions/resources/lang/ro/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Replicare', - - 'modal' => [ - - 'heading' => 'Replicare :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Replicare', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Replicat cu succes', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ro/restore.php b/vendor/filament/actions/resources/lang/ro/restore.php deleted file mode 100644 index 70dd2e8b..00000000 --- a/vendor/filament/actions/resources/lang/ro/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Restaurare', - - 'modal' => [ - - 'heading' => 'Restaurare :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Restaurare', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Restaurat cu succes', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Restaurare înregistrările selectate', - - 'modal' => [ - - 'heading' => 'Restaurare :label selectate', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Restaurare', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Restaurat cu succes', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ro/view.php b/vendor/filament/actions/resources/lang/ro/view.php deleted file mode 100644 index 38c44045..00000000 --- a/vendor/filament/actions/resources/lang/ro/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Vizualizare', - - 'modal' => [ - - 'heading' => 'Vizualizare :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Închidere', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ru/associate.php b/vendor/filament/actions/resources/lang/ru/associate.php deleted file mode 100644 index 1e8dc793..00000000 --- a/vendor/filament/actions/resources/lang/ru/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Подключить', - - 'modal' => [ - - 'heading' => 'Подключить :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Запись', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Подключить', - ], - - 'associate_another' => [ - 'label' => 'Подключить и Подключить другое', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Подключено', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ru/attach.php b/vendor/filament/actions/resources/lang/ru/attach.php deleted file mode 100644 index e3eec148..00000000 --- a/vendor/filament/actions/resources/lang/ru/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Прикрепить', - - 'modal' => [ - - 'heading' => 'Прикрепить :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Запись', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Прикрепить', - ], - - 'attach_another' => [ - 'label' => 'Прикрепить и прикрепить еще', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Прикреплено', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ru/create.php b/vendor/filament/actions/resources/lang/ru/create.php deleted file mode 100644 index 4250ac94..00000000 --- a/vendor/filament/actions/resources/lang/ru/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Создать', - - 'modal' => [ - - 'heading' => 'Создать :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Создать', - ], - - 'create_another' => [ - 'label' => 'Создать и создать еще один', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Создано', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ru/delete.php b/vendor/filament/actions/resources/lang/ru/delete.php deleted file mode 100644 index af7a685a..00000000 --- a/vendor/filament/actions/resources/lang/ru/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Удалить', - - 'modal' => [ - - 'heading' => 'Удалить :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Удалить', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Удалено', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Удалить отмеченное', - - 'modal' => [ - - 'heading' => 'Удалить отмеченное :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Удалить отмеченное', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Удалено', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ru/detach.php b/vendor/filament/actions/resources/lang/ru/detach.php deleted file mode 100644 index f54079ed..00000000 --- a/vendor/filament/actions/resources/lang/ru/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Открепить', - - 'modal' => [ - - 'heading' => 'Открепить :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Открепить', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Откреплено', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Открепить', - - 'modal' => [ - - 'heading' => 'Открепить отмеченное :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Открепить отмеченное', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Откреплено', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ru/dissociate.php b/vendor/filament/actions/resources/lang/ru/dissociate.php deleted file mode 100644 index be483bb5..00000000 --- a/vendor/filament/actions/resources/lang/ru/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Отделить', - - 'modal' => [ - - 'heading' => 'Отделено :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Отделить', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Отделено', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Отделить отмеченное', - - 'modal' => [ - - 'heading' => 'Отделить отмеченное :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Отделить отмеченное', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Отделено', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ru/edit.php b/vendor/filament/actions/resources/lang/ru/edit.php deleted file mode 100644 index b8df9a88..00000000 --- a/vendor/filament/actions/resources/lang/ru/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Изменить', - - 'modal' => [ - - 'heading' => 'Изменить :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Сохранить', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Сохранено', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ru/force-delete.php b/vendor/filament/actions/resources/lang/ru/force-delete.php deleted file mode 100644 index ea768797..00000000 --- a/vendor/filament/actions/resources/lang/ru/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Удалить навсегда', - - 'modal' => [ - - 'heading' => 'Удалить навсегда :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Удалить', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Запись удалена', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Удалить навсегда выбранное', - - 'modal' => [ - - 'heading' => 'Удалить навсегда выбранное :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Удалить', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Записи удалены', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ru/group.php b/vendor/filament/actions/resources/lang/ru/group.php deleted file mode 100644 index 727dd797..00000000 --- a/vendor/filament/actions/resources/lang/ru/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Действия', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ru/modal.php b/vendor/filament/actions/resources/lang/ru/modal.php deleted file mode 100644 index ed937d27..00000000 --- a/vendor/filament/actions/resources/lang/ru/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Вы уверены, что хотите это сделать?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Отменить', - ], - - 'confirm' => [ - 'label' => 'Подтвердить', - ], - - 'submit' => [ - 'label' => 'Отправить', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ru/replicate.php b/vendor/filament/actions/resources/lang/ru/replicate.php deleted file mode 100644 index 26a9d921..00000000 --- a/vendor/filament/actions/resources/lang/ru/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Копировать', - - 'modal' => [ - - 'heading' => 'Копировать :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Копировать', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Запись скопирована', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ru/restore.php b/vendor/filament/actions/resources/lang/ru/restore.php deleted file mode 100644 index 81129a0e..00000000 --- a/vendor/filament/actions/resources/lang/ru/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Восстановить', - - 'modal' => [ - - 'heading' => 'Восстановить :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Восстановить', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Запись восстановлена', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Восстановить выбранное', - - 'modal' => [ - - 'heading' => 'Восстановить выбранное :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Восстановить', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Записи восстановлены', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/ru/view.php b/vendor/filament/actions/resources/lang/ru/view.php deleted file mode 100644 index 2c7a7cc9..00000000 --- a/vendor/filament/actions/resources/lang/ru/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Просмотр', - - 'modal' => [ - - 'heading' => 'Просмотр :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Закрыть', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sk/associate.php b/vendor/filament/actions/resources/lang/sk/associate.php deleted file mode 100644 index 83f39e27..00000000 --- a/vendor/filament/actions/resources/lang/sk/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Pripojiť', - - 'modal' => [ - - 'heading' => 'Pripojiť :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Záznam', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Pripojiť', - ], - - 'associate_another' => [ - 'label' => 'Pripojiť & pripojiť ďalšie', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Pripojené', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sk/attach.php b/vendor/filament/actions/resources/lang/sk/attach.php deleted file mode 100644 index 31fee0a7..00000000 --- a/vendor/filament/actions/resources/lang/sk/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Pridať', - - 'modal' => [ - - 'heading' => 'Pridať :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Záznam', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Pridať', - ], - - 'attach_another' => [ - 'label' => 'Pridať & pridať ďalšie', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Pridané', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sk/create.php b/vendor/filament/actions/resources/lang/sk/create.php deleted file mode 100644 index 8b38cbf7..00000000 --- a/vendor/filament/actions/resources/lang/sk/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Vytvoriť', - - 'modal' => [ - - 'heading' => 'Vytvoriť :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Vytvoriť', - ], - - 'create_another' => [ - 'label' => 'Vytvoriť & vytvoriť ďalšie', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Vytvoriť', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sk/delete.php b/vendor/filament/actions/resources/lang/sk/delete.php deleted file mode 100644 index 0fa8e389..00000000 --- a/vendor/filament/actions/resources/lang/sk/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Odstrániť', - - 'modal' => [ - - 'heading' => 'Odstrániť :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Odstrániť', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Odstránené', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Odstrániť vybrané', - - 'modal' => [ - - 'heading' => 'Odstrániť vybrané :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Odstrániť', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Odstránené', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sk/detach.php b/vendor/filament/actions/resources/lang/sk/detach.php deleted file mode 100644 index ef9d62b2..00000000 --- a/vendor/filament/actions/resources/lang/sk/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Odobrať', - - 'modal' => [ - - 'heading' => 'Odobrať :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Odobrať', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Odobrať', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Odobrať vybrané', - - 'modal' => [ - - 'heading' => 'Odobrať vybrané :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Odobrať', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Odobrať', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sk/dissociate.php b/vendor/filament/actions/resources/lang/sk/dissociate.php deleted file mode 100644 index 65cd3c66..00000000 --- a/vendor/filament/actions/resources/lang/sk/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Odpojiť', - - 'modal' => [ - - 'heading' => 'Odpojiť :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Odpojiť', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Odpojené', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Odpojiť vybrané', - - 'modal' => [ - - 'heading' => 'Odpojiť vybrané :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Odpojiť', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Odpojené', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sk/edit.php b/vendor/filament/actions/resources/lang/sk/edit.php deleted file mode 100644 index 6711af32..00000000 --- a/vendor/filament/actions/resources/lang/sk/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Upraviť', - - 'modal' => [ - - 'heading' => 'Upraviť :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Uložiť zmeny', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Uložené', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sk/force-delete.php b/vendor/filament/actions/resources/lang/sk/force-delete.php deleted file mode 100644 index 10ba86c1..00000000 --- a/vendor/filament/actions/resources/lang/sk/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Trvalo odstrániť', - - 'modal' => [ - - 'heading' => 'Trvalo odstrániť :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Odstrániť', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Odstránené', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Trvalo odstrániť vybrané', - - 'modal' => [ - - 'heading' => 'Trvalo odstrániť vybrané :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Odstránené', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Odstránené', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sk/group.php b/vendor/filament/actions/resources/lang/sk/group.php deleted file mode 100644 index 1a13018f..00000000 --- a/vendor/filament/actions/resources/lang/sk/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Akcie', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sk/modal.php b/vendor/filament/actions/resources/lang/sk/modal.php deleted file mode 100644 index aafaf8ef..00000000 --- a/vendor/filament/actions/resources/lang/sk/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Naozaj chcete pokračovať?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Zrušiť', - ], - - 'confirm' => [ - 'label' => 'Potvrdiť', - ], - - 'submit' => [ - 'label' => 'Odoslať', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sk/replicate.php b/vendor/filament/actions/resources/lang/sk/replicate.php deleted file mode 100644 index 4d50a8e3..00000000 --- a/vendor/filament/actions/resources/lang/sk/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Duplikovať', - - 'modal' => [ - - 'heading' => 'Duplikovať :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Duplikovať', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Duplikované', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sk/restore.php b/vendor/filament/actions/resources/lang/sk/restore.php deleted file mode 100644 index 9826dbb1..00000000 --- a/vendor/filament/actions/resources/lang/sk/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Obnoviť', - - 'modal' => [ - - 'heading' => 'Obnoviť :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Obnoviť', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Obnovené', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Obnoviť vybrané', - - 'modal' => [ - - 'heading' => 'Obnoviť vybrané :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Obnoviť', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Obnovené', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sk/view.php b/vendor/filament/actions/resources/lang/sk/view.php deleted file mode 100644 index e575d2f7..00000000 --- a/vendor/filament/actions/resources/lang/sk/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Zobraziť', - - 'modal' => [ - - 'heading' => 'Zobraziť :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Zavrieť', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sq/associate.php b/vendor/filament/actions/resources/lang/sq/associate.php deleted file mode 100644 index 7cb8033a..00000000 --- a/vendor/filament/actions/resources/lang/sq/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Lidh', - - 'modal' => [ - - 'heading' => 'Lidh :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Regjistro', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Lidh', - ], - - 'associate_another' => [ - 'label' => 'Lidh & lidh another', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'U lidh', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sq/attach.php b/vendor/filament/actions/resources/lang/sq/attach.php deleted file mode 100644 index c14df0f4..00000000 --- a/vendor/filament/actions/resources/lang/sq/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Ngarko', - - 'modal' => [ - - 'heading' => 'Ngarko :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Record', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Ngarko', - ], - - 'attach_another' => [ - 'label' => 'Ngarko & ngarko një tjetër', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'U ngarkua', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sq/create.php b/vendor/filament/actions/resources/lang/sq/create.php deleted file mode 100644 index 5af56549..00000000 --- a/vendor/filament/actions/resources/lang/sq/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Krijo :label', - - 'modal' => [ - - 'heading' => 'Krijo :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Krijo', - ], - - 'create_another' => [ - 'label' => 'Krijo & krijo një tjetër', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'U krijua', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sq/delete.php b/vendor/filament/actions/resources/lang/sq/delete.php deleted file mode 100644 index c7cfb110..00000000 --- a/vendor/filament/actions/resources/lang/sq/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Fshi', - - 'modal' => [ - - 'heading' => 'Fshi :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Fshi', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'U fshi', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Fshi të selektuarin', - - 'modal' => [ - - 'heading' => 'Fshi të selektuarin :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Fshi', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'U fshi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sq/detach.php b/vendor/filament/actions/resources/lang/sq/detach.php deleted file mode 100644 index c4c8fabd..00000000 --- a/vendor/filament/actions/resources/lang/sq/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Shkëput', - - 'modal' => [ - - 'heading' => 'Shkëput :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Shkëput', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'U shkëput', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Shkëput të përzgjedhurin', - - 'modal' => [ - - 'heading' => 'Shkëput të përzgjedhurin :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Shkëput', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'U shkëput', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sq/dissociate.php b/vendor/filament/actions/resources/lang/sq/dissociate.php deleted file mode 100644 index 0fc52286..00000000 --- a/vendor/filament/actions/resources/lang/sq/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Shkëput', - - 'modal' => [ - - 'heading' => 'Shkëput :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Shkëput', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Shkëput', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Shkëput të përzgjedhurin', - - 'modal' => [ - - 'heading' => 'Shkëput të përzgjedhurin :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Shkëput', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'U shkëput', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sq/edit.php b/vendor/filament/actions/resources/lang/sq/edit.php deleted file mode 100644 index 9f6194a9..00000000 --- a/vendor/filament/actions/resources/lang/sq/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Modifiko', - - 'modal' => [ - - 'heading' => 'Modifiko :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Ruaj ndryshimet', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'U ruajt', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sq/force-delete.php b/vendor/filament/actions/resources/lang/sq/force-delete.php deleted file mode 100644 index 6ba06ff9..00000000 --- a/vendor/filament/actions/resources/lang/sq/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Fshi me forcë', - - 'modal' => [ - - 'heading' => 'Fshi me forcë :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Fshi', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'U fshi', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Fshi me forcë të selektuarin', - - 'modal' => [ - - 'heading' => 'Fshi me forcë të selektuarin :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Fshi', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'U fshi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sq/group.php b/vendor/filament/actions/resources/lang/sq/group.php deleted file mode 100644 index a05a8c17..00000000 --- a/vendor/filament/actions/resources/lang/sq/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Veprimet', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sq/modal.php b/vendor/filament/actions/resources/lang/sq/modal.php deleted file mode 100644 index 5f3294f4..00000000 --- a/vendor/filament/actions/resources/lang/sq/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Jeni të sigurt që dëshironi ta bëni këtë?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Anulo', - ], - - 'confirm' => [ - 'label' => 'Konfirmo', - ], - - 'submit' => [ - 'label' => 'Ruaj', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sq/replicate.php b/vendor/filament/actions/resources/lang/sq/replicate.php deleted file mode 100644 index d23b1fb7..00000000 --- a/vendor/filament/actions/resources/lang/sq/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Kopjo', - - 'modal' => [ - - 'heading' => 'Kopjo :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Kopjo', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'U kopjua', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sq/restore.php b/vendor/filament/actions/resources/lang/sq/restore.php deleted file mode 100644 index a00cd87d..00000000 --- a/vendor/filament/actions/resources/lang/sq/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Rivendos', - - 'modal' => [ - - 'heading' => 'Rivendos :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Rivendos', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'U rivendos', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Rivendos të selektuarin', - - 'modal' => [ - - 'heading' => 'Rivendos të selektuarin :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Rivendos', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'U rivendos', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sq/view.php b/vendor/filament/actions/resources/lang/sq/view.php deleted file mode 100644 index 2e796c0b..00000000 --- a/vendor/filament/actions/resources/lang/sq/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Pamje', - - 'modal' => [ - - 'heading' => 'Pamje :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Mbyll', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sv/associate.php b/vendor/filament/actions/resources/lang/sv/associate.php deleted file mode 100644 index b3b77274..00000000 --- a/vendor/filament/actions/resources/lang/sv/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Koppla', - - 'modal' => [ - - 'heading' => 'Koppla :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Objekt', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Koppla', - ], - - 'associate_another' => [ - 'label' => 'Koppla & koppla en till', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Kopplades', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sv/attach.php b/vendor/filament/actions/resources/lang/sv/attach.php deleted file mode 100644 index 863f4bfe..00000000 --- a/vendor/filament/actions/resources/lang/sv/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Koppla', - - 'modal' => [ - - 'heading' => 'Koppla :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Objekt', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Koppla', - ], - - 'attach_another' => [ - 'label' => 'Koppla & koppla en till', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Kopplades', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sv/create.php b/vendor/filament/actions/resources/lang/sv/create.php deleted file mode 100644 index 023940c4..00000000 --- a/vendor/filament/actions/resources/lang/sv/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Ny :label', - - 'modal' => [ - - 'heading' => 'Skapa :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Skapa', - ], - - 'create_another' => [ - 'label' => 'Skapa & skapa en till', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Skapades', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sv/delete.php b/vendor/filament/actions/resources/lang/sv/delete.php deleted file mode 100644 index a0466784..00000000 --- a/vendor/filament/actions/resources/lang/sv/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Radera', - - 'modal' => [ - - 'heading' => 'Radera :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Radera', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Raderad', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Radera valda', - - 'modal' => [ - - 'heading' => 'Radera valda :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Radera', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Raderades', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sv/detach.php b/vendor/filament/actions/resources/lang/sv/detach.php deleted file mode 100644 index 943588ed..00000000 --- a/vendor/filament/actions/resources/lang/sv/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Frånkoppla', - - 'modal' => [ - - 'heading' => 'Frånkoppla :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Frånkoppla', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Frånkopplades', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Frånkoppla valda', - - 'modal' => [ - - 'heading' => 'Frånkoppla valda :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Frånkoppla', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Frånkopplades', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sv/dissociate.php b/vendor/filament/actions/resources/lang/sv/dissociate.php deleted file mode 100644 index 415f359b..00000000 --- a/vendor/filament/actions/resources/lang/sv/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Frånkoppla', - - 'modal' => [ - - 'heading' => 'Frånkoppla :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Frånkoppla', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Frånkopplades', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Frånkoppla valda', - - 'modal' => [ - - 'heading' => 'Frånkoppla valda :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Frånkoppla', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Frånkopplades', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sv/edit.php b/vendor/filament/actions/resources/lang/sv/edit.php deleted file mode 100644 index e58b6f38..00000000 --- a/vendor/filament/actions/resources/lang/sv/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Redigera', - - 'modal' => [ - - 'heading' => 'Redigera :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Spara ändringar', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Sparades', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sv/force-delete.php b/vendor/filament/actions/resources/lang/sv/force-delete.php deleted file mode 100644 index bdb8a2b7..00000000 --- a/vendor/filament/actions/resources/lang/sv/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Tvångsradera', - - 'modal' => [ - - 'heading' => 'Tvångsradera :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Radera', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Raderades', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Tvångsradera valda', - - 'modal' => [ - - 'heading' => 'Tvångsradera valda :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Radera', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Raderades', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sv/group.php b/vendor/filament/actions/resources/lang/sv/group.php deleted file mode 100644 index fd71fa5e..00000000 --- a/vendor/filament/actions/resources/lang/sv/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Åtgärder', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sv/modal.php b/vendor/filament/actions/resources/lang/sv/modal.php deleted file mode 100644 index 77136e1e..00000000 --- a/vendor/filament/actions/resources/lang/sv/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Är du säker på att du vill göra det här?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Avbryt', - ], - - 'confirm' => [ - 'label' => 'Bekräfta', - ], - - 'submit' => [ - 'label' => 'Skicka', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sv/replicate.php b/vendor/filament/actions/resources/lang/sv/replicate.php deleted file mode 100644 index bc668349..00000000 --- a/vendor/filament/actions/resources/lang/sv/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Duplicera', - - 'modal' => [ - - 'heading' => 'Duplicera :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Duplicera', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Duplicerades', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sv/restore.php b/vendor/filament/actions/resources/lang/sv/restore.php deleted file mode 100644 index c01f203e..00000000 --- a/vendor/filament/actions/resources/lang/sv/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Återställ', - - 'modal' => [ - - 'heading' => 'Återställ :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Återställ', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Återställdes', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Återställ valda', - - 'modal' => [ - - 'heading' => 'Återställ valda :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Återställ', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Återställdes', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sv/view.php b/vendor/filament/actions/resources/lang/sv/view.php deleted file mode 100644 index 57ea2f5e..00000000 --- a/vendor/filament/actions/resources/lang/sv/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Visa', - - 'modal' => [ - - 'heading' => 'Visa :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Stäng', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sw/associate.php b/vendor/filament/actions/resources/lang/sw/associate.php deleted file mode 100644 index 35d3bbbe..00000000 --- a/vendor/filament/actions/resources/lang/sw/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Unganisha', - - 'modal' => [ - - 'heading' => 'Unganisha :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Rekodi', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Unganisha', - ], - - 'associate_another' => [ - 'label' => 'Unganisha na unganisha tena', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Imeunganishwa', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sw/attach.php b/vendor/filament/actions/resources/lang/sw/attach.php deleted file mode 100644 index 3d068594..00000000 --- a/vendor/filament/actions/resources/lang/sw/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Pakia', - - 'modal' => [ - - 'heading' => 'Pakia :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Rekodi', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Pakia', - ], - - 'attach_another' => [ - 'label' => 'Pakia na pakia tena', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Imepakiwa', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sw/create.php b/vendor/filament/actions/resources/lang/sw/create.php deleted file mode 100644 index 3f1d1bdd..00000000 --- a/vendor/filament/actions/resources/lang/sw/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => ':label mpya', - - 'modal' => [ - - 'heading' => 'Tengeneza :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Tengeneza', - ], - - 'create_another' => [ - 'label' => 'Tengeneza na tengeneza nyingine', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Imetengenezwa', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sw/delete.php b/vendor/filament/actions/resources/lang/sw/delete.php deleted file mode 100644 index 25b8dfda..00000000 --- a/vendor/filament/actions/resources/lang/sw/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Futa', - - 'modal' => [ - - 'heading' => 'Futa :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Futa', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Imefutwa', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Futa chaguo', - - 'modal' => [ - - 'heading' => 'Futa chaguo :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Futa', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Imefutwa', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sw/detach.php b/vendor/filament/actions/resources/lang/sw/detach.php deleted file mode 100644 index a88d115d..00000000 --- a/vendor/filament/actions/resources/lang/sw/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Tenganisha', - - 'modal' => [ - - 'heading' => 'Tenganisha :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Tenganisha', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Imetenganishwa', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Tenganisha chaguo', - - 'modal' => [ - - 'heading' => 'Tenganisha chaguo :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Tenganisha', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Imetenganishwa', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sw/dissociate.php b/vendor/filament/actions/resources/lang/sw/dissociate.php deleted file mode 100644 index 2810babf..00000000 --- a/vendor/filament/actions/resources/lang/sw/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Tenganisha', - - 'modal' => [ - - 'heading' => 'Tenganisha :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Tenganisha', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Imetenganishwa', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Tenganisha chaguo', - - 'modal' => [ - - 'heading' => 'Tenganisha chaguo :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Tenganisha', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Imetenganishwa', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sw/edit.php b/vendor/filament/actions/resources/lang/sw/edit.php deleted file mode 100644 index 7559ea7b..00000000 --- a/vendor/filament/actions/resources/lang/sw/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Hariri', - - 'modal' => [ - - 'heading' => 'Hariri :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Hifadhi mabadiliko', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Imehifadhiwa', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sw/force-delete.php b/vendor/filament/actions/resources/lang/sw/force-delete.php deleted file mode 100644 index f43a86f4..00000000 --- a/vendor/filament/actions/resources/lang/sw/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Futa kwa lazima', - - 'modal' => [ - - 'heading' => 'Futa kwa lazima :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Futa', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Imefutwa', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Futa kwa lazima chaguo', - - 'modal' => [ - - 'heading' => 'Futa kwa lazima chaguo :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Futa', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Imefutwa', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sw/group.php b/vendor/filament/actions/resources/lang/sw/group.php deleted file mode 100644 index 04a77780..00000000 --- a/vendor/filament/actions/resources/lang/sw/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Vitendo', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sw/modal.php b/vendor/filament/actions/resources/lang/sw/modal.php deleted file mode 100644 index ebe4697f..00000000 --- a/vendor/filament/actions/resources/lang/sw/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Unahakika unataka kufanya hili?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Ghairi', - ], - - 'confirm' => [ - 'label' => 'Thibitisha', - ], - - 'submit' => [ - 'label' => 'Wasilisha', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sw/replicate.php b/vendor/filament/actions/resources/lang/sw/replicate.php deleted file mode 100644 index f15da57a..00000000 --- a/vendor/filament/actions/resources/lang/sw/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Iga', - - 'modal' => [ - - 'heading' => 'Iga :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Iga', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Imeigwa', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sw/restore.php b/vendor/filament/actions/resources/lang/sw/restore.php deleted file mode 100644 index ed41929d..00000000 --- a/vendor/filament/actions/resources/lang/sw/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Rudisha', - - 'modal' => [ - - 'heading' => 'Rudisha :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Rudisha', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Imerudishwa', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Rudisha chaguo', - - 'modal' => [ - - 'heading' => 'Rudisha chaguo :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Rudisha', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Imerudishwa', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/sw/view.php b/vendor/filament/actions/resources/lang/sw/view.php deleted file mode 100644 index 263caba6..00000000 --- a/vendor/filament/actions/resources/lang/sw/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Angalia', - - 'modal' => [ - - 'heading' => 'Angalia :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Funga', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/tr/associate.php b/vendor/filament/actions/resources/lang/tr/associate.php deleted file mode 100644 index 584c9b4c..00000000 --- a/vendor/filament/actions/resources/lang/tr/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'İlişkilendir', - - 'modal' => [ - - 'heading' => ':label İlişkilendir', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Kayıt', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'İlişkilendir', - ], - - 'associate_another' => [ - 'label' => 'İlişkilendir ve başka bir taneye başla', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'İlişkilendirildi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/tr/attach.php b/vendor/filament/actions/resources/lang/tr/attach.php deleted file mode 100644 index 9b2eca26..00000000 --- a/vendor/filament/actions/resources/lang/tr/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'İliştir', - - 'modal' => [ - - 'heading' => ':label iliştir', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Kayıt', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'İliştir', - ], - - 'attach_another' => [ - 'label' => 'İliştir ve başka bir taneye başla', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'İliştirildi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/tr/create.php b/vendor/filament/actions/resources/lang/tr/create.php deleted file mode 100644 index 84333dc0..00000000 --- a/vendor/filament/actions/resources/lang/tr/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => ':label Oluştur', - - 'modal' => [ - - 'heading' => ':label oluştur', - - 'actions' => [ - - 'create' => [ - 'label' => 'Oluştur', - ], - - 'create_another' => [ - 'label' => 'Oluştur ve başka bir tane oluştur', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Oluşturuldu', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/tr/delete.php b/vendor/filament/actions/resources/lang/tr/delete.php deleted file mode 100644 index 0dd8a5a6..00000000 --- a/vendor/filament/actions/resources/lang/tr/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Sil', - - 'modal' => [ - - 'heading' => ':label Sil', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Sil', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Silindi', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Seçilenleri sil', - - 'modal' => [ - - 'heading' => 'Seçilenleri sil', // When ':label' is used here, the meaning is distorted. - - 'actions' => [ - - 'delete' => [ - 'label' => 'Sil', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Silindi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/tr/detach.php b/vendor/filament/actions/resources/lang/tr/detach.php deleted file mode 100644 index bc4ccbe4..00000000 --- a/vendor/filament/actions/resources/lang/tr/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Ayır', - - 'modal' => [ - - 'heading' => ':label ayır', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Ayır', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Ayrıldı', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Seçiliyi ayır', - - 'modal' => [ - - 'heading' => ':label seçiliyi ayır ', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Seçiliyi ayır', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Ayrıldı', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/tr/dissociate.php b/vendor/filament/actions/resources/lang/tr/dissociate.php deleted file mode 100644 index 15a848c5..00000000 --- a/vendor/filament/actions/resources/lang/tr/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Ayrıştır', - - 'modal' => [ - - 'heading' => ':label ayrıştır', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Ayrıştır', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Ayrıştırıldı', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Seçiliyi ayrıştır', - - 'modal' => [ - - 'heading' => ':label seçiliyi ayrıştır', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Seçiliyi ayrıştır', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Ayrıştırıldı', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/tr/edit.php b/vendor/filament/actions/resources/lang/tr/edit.php deleted file mode 100644 index bcd1a487..00000000 --- a/vendor/filament/actions/resources/lang/tr/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Düzenle', - - 'modal' => [ - - 'heading' => ':label düzenle', - - 'actions' => [ - - 'save' => [ - 'label' => 'Kaydet', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Kaydedildi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/tr/force-delete.php b/vendor/filament/actions/resources/lang/tr/force-delete.php deleted file mode 100644 index a2401162..00000000 --- a/vendor/filament/actions/resources/lang/tr/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Kalıcı olarak sil', - - 'modal' => [ - - 'heading' => ':label kalıcı olarak sil', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Kalıcı olarak sil', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Kayıt kalıcı olarak silindi', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Seçiliyi kalıcı olarak sil', - - 'modal' => [ - - 'heading' => ':label seçiliyi kalıcı olarak sil', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Kalıcı olarak sil', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Kayıtlar kalıcı olarak silindi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/tr/group.php b/vendor/filament/actions/resources/lang/tr/group.php deleted file mode 100644 index 5b2f30f0..00000000 --- a/vendor/filament/actions/resources/lang/tr/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Eylemler', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/tr/modal.php b/vendor/filament/actions/resources/lang/tr/modal.php deleted file mode 100644 index 6a87c47a..00000000 --- a/vendor/filament/actions/resources/lang/tr/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Bunu yapmak istediğinizden emin misiniz?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'İptal', - ], - - 'confirm' => [ - 'label' => 'Onayla', - ], - - 'submit' => [ - 'label' => 'Gönder', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/tr/replicate.php b/vendor/filament/actions/resources/lang/tr/replicate.php deleted file mode 100644 index f3f6985b..00000000 --- a/vendor/filament/actions/resources/lang/tr/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Çoğalt', - - 'modal' => [ - - 'heading' => ':label çoğalt', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Çoğalt', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Kayıt çoğaltıldı', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/tr/restore.php b/vendor/filament/actions/resources/lang/tr/restore.php deleted file mode 100644 index 4b125998..00000000 --- a/vendor/filament/actions/resources/lang/tr/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Geri yükle', - - 'modal' => [ - - 'heading' => ':label geri yükle', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Geri yükle', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Kayıt geri yüklendi', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Seçiliyi geri yükle', - - 'modal' => [ - - 'heading' => ':label seçiliyi geri yükle', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Geri yükle', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Kayıtlar geri yüklendi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/tr/view.php b/vendor/filament/actions/resources/lang/tr/view.php deleted file mode 100644 index a5e686c5..00000000 --- a/vendor/filament/actions/resources/lang/tr/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Görüntüle', - - 'modal' => [ - - 'heading' => ':label görüntüle', - - 'actions' => [ - - 'close' => [ - 'label' => 'Kapat', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uk/associate.php b/vendor/filament/actions/resources/lang/uk/associate.php deleted file mode 100644 index 2089b443..00000000 --- a/vendor/filament/actions/resources/lang/uk/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Підключити', - - 'modal' => [ - - 'heading' => 'Підключити :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Запис', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Підключити', - ], - - 'associate_another' => [ - 'label' => 'Підключити та підключити інше', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Підключено', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uk/attach.php b/vendor/filament/actions/resources/lang/uk/attach.php deleted file mode 100644 index ec0281a6..00000000 --- a/vendor/filament/actions/resources/lang/uk/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Прикріпити', - - 'modal' => [ - - 'heading' => 'Прикріпити :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Запис', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Прикріпити', - ], - - 'attach_another' => [ - 'label' => 'Прикріпити та прикріпити інше', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Прикріплено', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uk/create.php b/vendor/filament/actions/resources/lang/uk/create.php deleted file mode 100644 index cb338962..00000000 --- a/vendor/filament/actions/resources/lang/uk/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Створити', - - 'modal' => [ - - 'heading' => 'Створити :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Створити', - ], - - 'create_another' => [ - 'label' => 'Створити та створити наступне', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Створено', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uk/delete.php b/vendor/filament/actions/resources/lang/uk/delete.php deleted file mode 100644 index 459bea7f..00000000 --- a/vendor/filament/actions/resources/lang/uk/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Видалити', - - 'modal' => [ - - 'heading' => 'Видалити :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Видалити', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Видалено', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Видалити вибране', - - 'modal' => [ - - 'heading' => 'Видалити вибране :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Видалити', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Видалено', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uk/detach.php b/vendor/filament/actions/resources/lang/uk/detach.php deleted file mode 100644 index 30d7fa0a..00000000 --- a/vendor/filament/actions/resources/lang/uk/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Від’єднати', - - 'modal' => [ - - 'heading' => 'Від’єднати :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Від’єднати', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Від’єднано', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Від’єднати вибране', - - 'modal' => [ - - 'heading' => 'Від’єднати вибране :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Від’єднати', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Від’єднано', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uk/dissociate.php b/vendor/filament/actions/resources/lang/uk/dissociate.php deleted file mode 100644 index 63dc4ec1..00000000 --- a/vendor/filament/actions/resources/lang/uk/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Відокремити', - - 'modal' => [ - - 'heading' => 'Відокремлено :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Відокремити', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Відокремлено', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Відокремити вибране', - - 'modal' => [ - - 'heading' => 'Відокремити вибране :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Відокремити', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Відокремлено', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uk/edit.php b/vendor/filament/actions/resources/lang/uk/edit.php deleted file mode 100644 index 444847e6..00000000 --- a/vendor/filament/actions/resources/lang/uk/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Змінити', - - 'modal' => [ - - 'heading' => 'Змінити :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Зберегти зміни', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Збережено', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uk/force-delete.php b/vendor/filament/actions/resources/lang/uk/force-delete.php deleted file mode 100644 index 9fb809ef..00000000 --- a/vendor/filament/actions/resources/lang/uk/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Видалити назавжди', - - 'modal' => [ - - 'heading' => 'Видалити назавжди :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Видалити', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Запис видалено', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Видалити назавжди обране', - - 'modal' => [ - - 'heading' => 'Видалити назавжди обране :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Видалити', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Записи видалено', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uk/group.php b/vendor/filament/actions/resources/lang/uk/group.php deleted file mode 100644 index 9ab03730..00000000 --- a/vendor/filament/actions/resources/lang/uk/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Дії', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uk/modal.php b/vendor/filament/actions/resources/lang/uk/modal.php deleted file mode 100644 index a0374a96..00000000 --- a/vendor/filament/actions/resources/lang/uk/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Ви впевнені, що хочете це зробити?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Скасувати', - ], - - 'confirm' => [ - 'label' => 'Підтвердити', - ], - - 'submit' => [ - 'label' => 'Відправити', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uk/replicate.php b/vendor/filament/actions/resources/lang/uk/replicate.php deleted file mode 100644 index f147848b..00000000 --- a/vendor/filament/actions/resources/lang/uk/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Копіювати', - - 'modal' => [ - - 'heading' => 'Копіювати :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Копіювати', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Запис скопійовано', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uk/restore.php b/vendor/filament/actions/resources/lang/uk/restore.php deleted file mode 100644 index 8e1597b7..00000000 --- a/vendor/filament/actions/resources/lang/uk/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Відновити', - - 'modal' => [ - - 'heading' => 'Відновити :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Відновити', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Запис відновлено', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Відновити вибране', - - 'modal' => [ - - 'heading' => 'Відновити вибране :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Відновити', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Записи відновлені', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uk/view.php b/vendor/filament/actions/resources/lang/uk/view.php deleted file mode 100644 index a1975542..00000000 --- a/vendor/filament/actions/resources/lang/uk/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Перегляд', - - 'modal' => [ - - 'heading' => 'Перегляд :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Закрити', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uz/associate.php b/vendor/filament/actions/resources/lang/uz/associate.php deleted file mode 100644 index 3cde81b2..00000000 --- a/vendor/filament/actions/resources/lang/uz/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Bog\'lash', - - 'modal' => [ - - 'heading' => ':labelni bog\'lash', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Yozib olish', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Bog\'lash', - ], - - 'associate_another' => [ - 'label' => 'Bog\'lash va yana boshqa bog\'lash', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Bog\'langan', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uz/attach.php b/vendor/filament/actions/resources/lang/uz/attach.php deleted file mode 100644 index 3dd8ce99..00000000 --- a/vendor/filament/actions/resources/lang/uz/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Biriktirish', - - 'modal' => [ - - 'heading' => ':labelni biriktirish', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Yozib olish', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Biriktirish', - ], - - 'attach_another' => [ - 'label' => 'Biriktirish va yana boshqa biriktirish', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Biriktirilgan', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uz/create.php b/vendor/filament/actions/resources/lang/uz/create.php deleted file mode 100644 index 548f8207..00000000 --- a/vendor/filament/actions/resources/lang/uz/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Yangi :labelni yaratish', - - 'modal' => [ - - 'heading' => 'Yangi :labelni yaratish', - - 'actions' => [ - - 'create' => [ - 'label' => 'Yaratish', - ], - - 'create_another' => [ - 'label' => 'Yaratish va yana boshqa yaratish', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Yaratildi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uz/delete.php b/vendor/filament/actions/resources/lang/uz/delete.php deleted file mode 100644 index c2a68185..00000000 --- a/vendor/filament/actions/resources/lang/uz/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'O\'chirish', - - 'modal' => [ - - 'heading' => ':labelni o\'chirish', - - 'actions' => [ - - 'delete' => [ - 'label' => 'O\'chirish', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'O\'chirildi', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Tanlanganlarni o\'chirish', - - 'modal' => [ - - 'heading' => ':labelni o\'chirish', - - 'actions' => [ - - 'delete' => [ - 'label' => 'O\'chirish', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'O\'chirish', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uz/detach.php b/vendor/filament/actions/resources/lang/uz/detach.php deleted file mode 100644 index 82903ea6..00000000 --- a/vendor/filament/actions/resources/lang/uz/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Ajratish', - - 'modal' => [ - - 'heading' => ':labelni ajratish', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Ajratish', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Ajratish', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Tanlanganlarni ajratish', - - 'modal' => [ - - 'heading' => ':labelni ajratish ', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Ajratish', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Ajratish', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uz/dissociate.php b/vendor/filament/actions/resources/lang/uz/dissociate.php deleted file mode 100644 index 562e961b..00000000 --- a/vendor/filament/actions/resources/lang/uz/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Ajratish', - - 'modal' => [ - - 'heading' => ':labelni ajratish', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Ajratish', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Ajratilgan', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Tanlanganlarni ajratish', - - 'modal' => [ - - 'heading' => ':labelni ajratish', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Ajratish', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Ajratilgan', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uz/edit.php b/vendor/filament/actions/resources/lang/uz/edit.php deleted file mode 100644 index 6d9e7bca..00000000 --- a/vendor/filament/actions/resources/lang/uz/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Tahrirlash', - - 'modal' => [ - - 'heading' => ':labelni tahrirlash', - - 'actions' => [ - - 'save' => [ - 'label' => 'O\'zgarishlarni saqlash', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Saqlandi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uz/force-delete.php b/vendor/filament/actions/resources/lang/uz/force-delete.php deleted file mode 100644 index e480a8ac..00000000 --- a/vendor/filament/actions/resources/lang/uz/force-delete.php +++ /dev/null @@ -1,60 +0,0 @@ - [ - - 'label' => 'Majburiy o\'chirish', - - 'modal' => [ - - 'heading' => ':labelni majburiy o\'chirish', - - 'actions' => [ - 'delete' => [ - 'label' => 'O\'chirish', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'O\'chirildi', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Tanlanganlarni majburiy o\'chirish', - - 'modal' => [ - - 'heading' => ':labelni majburiy o\'chirish', - - 'actions' => [ - - 'delete' => [ - 'label' => 'O\'chirish', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'O\'chirildi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uz/group.php b/vendor/filament/actions/resources/lang/uz/group.php deleted file mode 100644 index 7aab1994..00000000 --- a/vendor/filament/actions/resources/lang/uz/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Amallar', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uz/modal.php b/vendor/filament/actions/resources/lang/uz/modal.php deleted file mode 100644 index 58134a8a..00000000 --- a/vendor/filament/actions/resources/lang/uz/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Ushbu amalni bajarishga ishonchingiz komilmi?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Qaytarish', - ], - - 'confirm' => [ - 'label' => 'Tasdiqlash', - ], - - 'submit' => [ - 'label' => 'Yuborish', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uz/replicate.php b/vendor/filament/actions/resources/lang/uz/replicate.php deleted file mode 100644 index c7310358..00000000 --- a/vendor/filament/actions/resources/lang/uz/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Takrorlash', - - 'modal' => [ - - 'heading' => ':labelni takrorlash', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Takrorlash', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Takrorlandi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uz/restore.php b/vendor/filament/actions/resources/lang/uz/restore.php deleted file mode 100644 index 15070a3d..00000000 --- a/vendor/filament/actions/resources/lang/uz/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Qayta tiklash', - - 'modal' => [ - - 'heading' => ':labelni qayta tiklash', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Qayta tiklash', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Qayta tiklandi', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Tanlangan elementlarni qayta tiklash', - - 'modal' => [ - - 'heading' => ':labelni qayta tiklash', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Qayta tiklash', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Qayta tiklandi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/uz/view.php b/vendor/filament/actions/resources/lang/uz/view.php deleted file mode 100644 index fdc62923..00000000 --- a/vendor/filament/actions/resources/lang/uz/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Ko\'rish', - - 'modal' => [ - - 'heading' => ':labelni ko\'rish', - - 'actions' => [ - - 'close' => [ - 'label' => 'Yopish', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/vi/associate.php b/vendor/filament/actions/resources/lang/vi/associate.php deleted file mode 100644 index 8503a707..00000000 --- a/vendor/filament/actions/resources/lang/vi/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Liên kết', - - 'modal' => [ - - 'heading' => 'Liên kết :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Bản ghi', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => 'Liên kết', - ], - - 'associate_another' => [ - 'label' => 'Liên kết & liên kết thêm', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => 'Đã liên kết', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/vi/attach.php b/vendor/filament/actions/resources/lang/vi/attach.php deleted file mode 100644 index d83c2b9f..00000000 --- a/vendor/filament/actions/resources/lang/vi/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => 'Đính kèm', - - 'modal' => [ - - 'heading' => 'Đính kèm :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => 'Bản ghi', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => 'Đình kèm', - ], - - 'attach_another' => [ - 'label' => 'Đính kèm & đính kèm thêm', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => 'Đã đính kèm', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/vi/create.php b/vendor/filament/actions/resources/lang/vi/create.php deleted file mode 100644 index bbcd7740..00000000 --- a/vendor/filament/actions/resources/lang/vi/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => 'Tạo mới :label', - - 'modal' => [ - - 'heading' => 'Tạo :label', - - 'actions' => [ - - 'create' => [ - 'label' => 'Tạo', - ], - - 'create_another' => [ - 'label' => 'Tạo & tạo thêm', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Đã tạo', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/vi/delete.php b/vendor/filament/actions/resources/lang/vi/delete.php deleted file mode 100644 index de354438..00000000 --- a/vendor/filament/actions/resources/lang/vi/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Xóa', - - 'modal' => [ - - 'heading' => 'Xóa :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Xóa', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Đã xóa', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Xoá các mục đã chọn', - - 'modal' => [ - - 'heading' => 'Xóa các mục :label đã chọn', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Xóa', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Đã xóa', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/vi/detach.php b/vendor/filament/actions/resources/lang/vi/detach.php deleted file mode 100644 index 5aa74073..00000000 --- a/vendor/filament/actions/resources/lang/vi/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Tách', - - 'modal' => [ - - 'heading' => 'Tách :label', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Tách', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Đã tách', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Tách các mục đã chọn', - - 'modal' => [ - - 'heading' => 'Tách các mục :label đã chọn', - - 'actions' => [ - - 'detach' => [ - 'label' => 'Tách', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => 'Đã tách', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/vi/dissociate.php b/vendor/filament/actions/resources/lang/vi/dissociate.php deleted file mode 100644 index 66455370..00000000 --- a/vendor/filament/actions/resources/lang/vi/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Huỷ liên kết', - - 'modal' => [ - - 'heading' => 'Huỷ liên kết :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Huỷ liên kết', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Đã huỷ liên kết', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Huỷ liên kết các mục đã chọn', - - 'modal' => [ - - 'heading' => 'Huỷ liên kết :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => 'Huỷ liên kết', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => 'Đã huỷ liên kết', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/vi/edit.php b/vendor/filament/actions/resources/lang/vi/edit.php deleted file mode 100644 index 828058ae..00000000 --- a/vendor/filament/actions/resources/lang/vi/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Chỉnh sửa', - - 'modal' => [ - - 'heading' => 'Chỉnh sửa :label', - - 'actions' => [ - - 'save' => [ - 'label' => 'Lưu thay đổi', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Đã lưu', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/vi/force-delete.php b/vendor/filament/actions/resources/lang/vi/force-delete.php deleted file mode 100644 index a9f3f755..00000000 --- a/vendor/filament/actions/resources/lang/vi/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Xóa vĩnh viễn', - - 'modal' => [ - - 'heading' => 'Xóa vĩnh viễn :label', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Xoá', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Đã xoá', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Xóa vĩnh viễn các mục đã chọn', - - 'modal' => [ - - 'heading' => 'Xóa vĩnh viễn các mục :label đã chọn', - - 'actions' => [ - - 'delete' => [ - 'label' => 'Xoá', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => 'Đã xoá', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/vi/group.php b/vendor/filament/actions/resources/lang/vi/group.php deleted file mode 100644 index 9f486dd9..00000000 --- a/vendor/filament/actions/resources/lang/vi/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => 'Thao tác', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/vi/import.php b/vendor/filament/actions/resources/lang/vi/import.php deleted file mode 100644 index 31453fba..00000000 --- a/vendor/filament/actions/resources/lang/vi/import.php +++ /dev/null @@ -1,77 +0,0 @@ - 'Nhập :label', - - 'modal' => [ - - 'heading' => 'Nhập :label', - - 'form' => [ - - 'file' => [ - 'label' => 'Tệp', - 'placeholder' => 'Tải lên tệp CSV', - ], - - 'columns' => [ - 'label' => 'Cột', - 'placeholder' => 'Chọn một cột', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => 'Tải xuống tệp mẫu CSV', - ], - - 'import' => [ - 'label' => 'Nhập', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => 'Quá trình nhập hoàn tất', - - 'actions' => [ - - 'download_failed_rows_csv' => [ - 'label' => 'Tải thông tin về hàng bị lỗi xuống', - ], - - ], - - ], - - 'max_rows' => [ - 'title' => 'Tệp CSV đã tải lên quá lớn', - 'body' => 'Bạn không thể nhập hơn 1 hàng cùng một lúc.|Bạn không thể nhập hơn :count hàng cùng một lúc.', - ], - - 'started' => [ - 'title' => 'Quá trình nhập đã bắt đầu', - 'body' => 'Quá trình nhập của bạn đã bắt đầu và sẽ xử lý 1 hàng trong nền.|Quá trình nhập của bạn đã bắt đầu và sẽ xử lý :count hàng trong nền.', - ], - - ], - - 'example_csv' => [ - 'file_name' => ':importer-example', - ], - - 'failure_csv' => [ - 'file_name' => 'import-:import_id-:csv_name-failed-rows', - 'error_header' => 'lỗi', - 'system_error' => 'Lỗi hệ thống, vui lòng liên hệ bộ phận hỗ trợ.', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/vi/modal.php b/vendor/filament/actions/resources/lang/vi/modal.php deleted file mode 100644 index eadfcd8c..00000000 --- a/vendor/filament/actions/resources/lang/vi/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Bạn có chắc chắn khi thực hiện thao tác này?', - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Huỷ bỏ', - ], - - 'confirm' => [ - 'label' => 'Xác nhận', - ], - - 'submit' => [ - 'label' => 'Gửi', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/vi/replicate.php b/vendor/filament/actions/resources/lang/vi/replicate.php deleted file mode 100644 index d0e66aab..00000000 --- a/vendor/filament/actions/resources/lang/vi/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => 'Sao chép', - - 'modal' => [ - - 'heading' => 'Sao chép :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => 'Sao chép', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => 'Đã sao chép', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/vi/restore.php b/vendor/filament/actions/resources/lang/vi/restore.php deleted file mode 100644 index 360b656a..00000000 --- a/vendor/filament/actions/resources/lang/vi/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => 'Khôi phục', - - 'modal' => [ - - 'heading' => 'Khôi phục :label', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Khôi phục', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Đã khôi phục', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => 'Khôi phục các mục đã chọn', - - 'modal' => [ - - 'heading' => 'Khôi phục các mục :label đã chọn', - - 'actions' => [ - - 'restore' => [ - 'label' => 'Khôi phục', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => 'Đã khôi phục', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/vi/view.php b/vendor/filament/actions/resources/lang/vi/view.php deleted file mode 100644 index 9651b70c..00000000 --- a/vendor/filament/actions/resources/lang/vi/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => 'Xem', - - 'modal' => [ - - 'heading' => 'Xem :label', - - 'actions' => [ - - 'close' => [ - 'label' => 'Đóng', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_CN/associate.php b/vendor/filament/actions/resources/lang/zh_CN/associate.php deleted file mode 100644 index b98615c0..00000000 --- a/vendor/filament/actions/resources/lang/zh_CN/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => '关联', - - 'modal' => [ - - 'heading' => '关联 :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => '记录', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => '关联', - ], - - 'associate_another' => [ - 'label' => '关联并关联另一个', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => '已关联', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_CN/attach.php b/vendor/filament/actions/resources/lang/zh_CN/attach.php deleted file mode 100644 index e0864df5..00000000 --- a/vendor/filament/actions/resources/lang/zh_CN/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => '附加', - - 'modal' => [ - - 'heading' => '附加 :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => '记录', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => '保存', - ], - - 'attach_another' => [ - 'label' => '保存并附加另一个', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => '已附加', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_CN/create.php b/vendor/filament/actions/resources/lang/zh_CN/create.php deleted file mode 100644 index 3ede79e1..00000000 --- a/vendor/filament/actions/resources/lang/zh_CN/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => '创建:label', - - 'modal' => [ - - 'heading' => '创建:label', - - 'actions' => [ - - 'create' => [ - 'label' => '保存', - ], - - 'create_another' => [ - 'label' => '保存并创建另一个', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => '已创建', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_CN/delete.php b/vendor/filament/actions/resources/lang/zh_CN/delete.php deleted file mode 100644 index 6171975f..00000000 --- a/vendor/filament/actions/resources/lang/zh_CN/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '删除', - - 'modal' => [ - - 'heading' => '删除 :label', - - 'actions' => [ - - 'delete' => [ - 'label' => '删除', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => '已删除', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '删除已选项目', - - 'modal' => [ - - 'heading' => '删除已选 :label', - - 'actions' => [ - - 'delete' => [ - 'label' => '删除已选项目', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => '已删除', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_CN/detach.php b/vendor/filament/actions/resources/lang/zh_CN/detach.php deleted file mode 100644 index d5c84837..00000000 --- a/vendor/filament/actions/resources/lang/zh_CN/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '分离', - - 'modal' => [ - - 'heading' => '分离 :label', - - 'actions' => [ - - 'detach' => [ - 'label' => '分离', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => '已分离', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '分离已选项目', - - 'modal' => [ - - 'heading' => '分离已选 :label', - - 'actions' => [ - - 'detach' => [ - 'label' => '分离已选项目', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => '已分离', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_CN/dissociate.php b/vendor/filament/actions/resources/lang/zh_CN/dissociate.php deleted file mode 100644 index 6e435af6..00000000 --- a/vendor/filament/actions/resources/lang/zh_CN/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '解除关联', - - 'modal' => [ - - 'heading' => '解除 :label 的关联', - - 'actions' => [ - - 'dissociate' => [ - 'label' => '解除关联', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => '已解除关联', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '解除已选项目关联', - - 'modal' => [ - - 'heading' => '解除已选 :label 的关联', - - 'actions' => [ - - 'dissociate' => [ - 'label' => '解除已选项目关联', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => '已解除关联', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_CN/edit.php b/vendor/filament/actions/resources/lang/zh_CN/edit.php deleted file mode 100644 index 90520f35..00000000 --- a/vendor/filament/actions/resources/lang/zh_CN/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => '编辑', - - 'modal' => [ - - 'heading' => '编辑 :label', - - 'actions' => [ - - 'save' => [ - 'label' => '保存', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => '已保存', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_CN/force-delete.php b/vendor/filament/actions/resources/lang/zh_CN/force-delete.php deleted file mode 100644 index 164462c7..00000000 --- a/vendor/filament/actions/resources/lang/zh_CN/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '强制删除', - - 'modal' => [ - - 'heading' => '强制删除 :label', - - 'actions' => [ - - 'delete' => [ - 'label' => '删除', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => '记录已删除', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '强制删除已选项目', - - 'modal' => [ - - 'heading' => '强制删除已选 :label', - - 'actions' => [ - - 'delete' => [ - 'label' => '删除', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => '记录已删除', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_CN/group.php b/vendor/filament/actions/resources/lang/zh_CN/group.php deleted file mode 100644 index 22dceeed..00000000 --- a/vendor/filament/actions/resources/lang/zh_CN/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => '动作组', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_CN/import.php b/vendor/filament/actions/resources/lang/zh_CN/import.php deleted file mode 100644 index 01384d51..00000000 --- a/vendor/filament/actions/resources/lang/zh_CN/import.php +++ /dev/null @@ -1,75 +0,0 @@ - '导入:label', - - 'modal' => [ - - 'heading' => '导入:label', - - 'form' => [ - - 'file' => [ - 'label' => '文件', - 'placeholder' => '上传一个 CSV 文件', - ], - - 'columns' => [ - 'label' => '栏位', - 'placeholder' => '选择一个栏位', - ], - - ], - - 'actions' => [ - - 'download_example' => [ - 'label' => '下载一个 CSV 模板', - ], - - 'import' => [ - 'label' => '导入', - ], - - ], - - ], - - 'notifications' => [ - - 'completed' => [ - - 'title' => '导入完成', - - 'actions' => [ - 'download_failed_rows_csv' => [ - 'label' => '下载导入失败的记录|下载导入失败的记录', - ], - - ], - - 'max_rows' => [ - 'title' => '上传的 CSV 文件过大', - 'body' => '你不能够一次性导入超过 1 行记录。|你不能够一次性导入超过 :count 行记录。', - ], - - 'started' => [ - 'title' => '导入开始', - 'body' => '你的导入已经开始,共 1 行将在后台处理。|你的导入已经开始,共 :count 行将在后台处理。', - ], - - ], - - 'example_csv' => [ - 'file_name' => ':importer-example', - ], - - 'failure_csv' => [ - 'file_name' => 'import-:import_id-:csv_name-failed-rows', - 'error_header' => '错误', - 'system_error' => '系统错误,请联系支持。', - ], - - ], -]; diff --git a/vendor/filament/actions/resources/lang/zh_CN/modal.php b/vendor/filament/actions/resources/lang/zh_CN/modal.php deleted file mode 100644 index 0026f93a..00000000 --- a/vendor/filament/actions/resources/lang/zh_CN/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - '您确定要这样操作吗?', - - 'actions' => [ - - 'cancel' => [ - 'label' => '取消', - ], - - 'confirm' => [ - 'label' => '确定', - ], - - 'submit' => [ - 'label' => '提交', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_CN/replicate.php b/vendor/filament/actions/resources/lang/zh_CN/replicate.php deleted file mode 100644 index f6d2b703..00000000 --- a/vendor/filament/actions/resources/lang/zh_CN/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => '复制', - - 'modal' => [ - - 'heading' => '复制 :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => '复制', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => '记录已复制', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_CN/restore.php b/vendor/filament/actions/resources/lang/zh_CN/restore.php deleted file mode 100644 index 323b7477..00000000 --- a/vendor/filament/actions/resources/lang/zh_CN/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '恢复', - - 'modal' => [ - - 'heading' => '恢复 :label', - - 'actions' => [ - - 'restore' => [ - 'label' => '恢复', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => '记录已恢复', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '恢复已选项目', - - 'modal' => [ - - 'heading' => '恢复已选 :label', - - 'actions' => [ - - 'restore' => [ - 'label' => '恢复', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => '记录已恢复', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_CN/view.php b/vendor/filament/actions/resources/lang/zh_CN/view.php deleted file mode 100644 index e667c5ae..00000000 --- a/vendor/filament/actions/resources/lang/zh_CN/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => '查看', - - 'modal' => [ - - 'heading' => '查看 :label', - - 'actions' => [ - - 'close' => [ - 'label' => '关闭', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_TW/associate.php b/vendor/filament/actions/resources/lang/zh_TW/associate.php deleted file mode 100644 index 04555f7c..00000000 --- a/vendor/filament/actions/resources/lang/zh_TW/associate.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => '關聯', - - 'modal' => [ - - 'heading' => '關聯 :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => '資料', - ], - - ], - - 'actions' => [ - - 'associate' => [ - 'label' => '關聯', - ], - - 'associate_another' => [ - 'label' => '關聯後繼續關聯另一個', - ], - - ], - - ], - - 'notifications' => [ - - 'associated' => [ - 'title' => '已關聯', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_TW/attach.php b/vendor/filament/actions/resources/lang/zh_TW/attach.php deleted file mode 100644 index 26a73bae..00000000 --- a/vendor/filament/actions/resources/lang/zh_TW/attach.php +++ /dev/null @@ -1,45 +0,0 @@ - [ - - 'label' => '附加', - - 'modal' => [ - - 'heading' => '附加 :label', - - 'fields' => [ - - 'record_id' => [ - 'label' => '資料', - ], - - ], - - 'actions' => [ - - 'attach' => [ - 'label' => '附加', - ], - - 'attach_another' => [ - 'label' => '附加後繼續附加另一個', - ], - - ], - - ], - - 'notifications' => [ - - 'attached' => [ - 'title' => '已附加', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_TW/create.php b/vendor/filament/actions/resources/lang/zh_TW/create.php deleted file mode 100644 index c098f089..00000000 --- a/vendor/filament/actions/resources/lang/zh_TW/create.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - - 'label' => '新增 :label', - - 'modal' => [ - - 'heading' => '建立 :label', - - 'actions' => [ - - 'create' => [ - 'label' => '建立', - ], - - 'create_another' => [ - 'label' => '建立後繼續建立另一個', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => '已建立', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_TW/delete.php b/vendor/filament/actions/resources/lang/zh_TW/delete.php deleted file mode 100644 index 5af3ae3a..00000000 --- a/vendor/filament/actions/resources/lang/zh_TW/delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '刪除', - - 'modal' => [ - - 'heading' => '刪除 :label', - - 'actions' => [ - - 'delete' => [ - 'label' => '刪除', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => '已刪除', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '刪除所選的項目', - - 'modal' => [ - - 'heading' => '刪除所選的 :label', - - 'actions' => [ - - 'delete' => [ - 'label' => '刪除', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => '已刪除', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_TW/detach.php b/vendor/filament/actions/resources/lang/zh_TW/detach.php deleted file mode 100644 index d1deab23..00000000 --- a/vendor/filament/actions/resources/lang/zh_TW/detach.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '解除附加', - - 'modal' => [ - - 'heading' => '解除附加 :label', - - 'actions' => [ - - 'detach' => [ - 'label' => '解除附加', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => '解除附加', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '解除附加所選的項目', - - 'modal' => [ - - 'heading' => '解除附加所選的 :label', - - 'actions' => [ - - 'detach' => [ - 'label' => '解除附加所選的項目', - ], - - ], - - ], - - 'notifications' => [ - - 'detached' => [ - 'title' => '已解除附加', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_TW/dissociate.php b/vendor/filament/actions/resources/lang/zh_TW/dissociate.php deleted file mode 100644 index 0012953d..00000000 --- a/vendor/filament/actions/resources/lang/zh_TW/dissociate.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '取消關聯', - - 'modal' => [ - - 'heading' => '取消關聯 :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => '取消關聯', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => '已取消關聯', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '取消關聯所選的項目', - - 'modal' => [ - - 'heading' => '取消關聯所選的 :label', - - 'actions' => [ - - 'dissociate' => [ - 'label' => '取消關聯所選的項目', - ], - - ], - - ], - - 'notifications' => [ - - 'dissociated' => [ - 'title' => '已取消關聯', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_TW/edit.php b/vendor/filament/actions/resources/lang/zh_TW/edit.php deleted file mode 100644 index 51ab380a..00000000 --- a/vendor/filament/actions/resources/lang/zh_TW/edit.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => '編輯', - - 'modal' => [ - - 'heading' => '編輯 :label', - - 'actions' => [ - - 'save' => [ - 'label' => '保存', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => '已保存', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_TW/force-delete.php b/vendor/filament/actions/resources/lang/zh_TW/force-delete.php deleted file mode 100644 index a5d76ca5..00000000 --- a/vendor/filament/actions/resources/lang/zh_TW/force-delete.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '強制刪除', - - 'modal' => [ - - 'heading' => '強制刪除 :label', - - 'actions' => [ - - 'delete' => [ - 'label' => '刪除', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => '已刪除資料', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '強制刪除所選的項目', - - 'modal' => [ - - 'heading' => '強制刪除所選的 :label', - - 'actions' => [ - - 'delete' => [ - 'label' => '刪除', - ], - - ], - - ], - - 'notifications' => [ - - 'deleted' => [ - 'title' => '已刪除資料', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_TW/group.php b/vendor/filament/actions/resources/lang/zh_TW/group.php deleted file mode 100644 index 361d0a4f..00000000 --- a/vendor/filament/actions/resources/lang/zh_TW/group.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'label' => '動作', - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_TW/modal.php b/vendor/filament/actions/resources/lang/zh_TW/modal.php deleted file mode 100644 index 6c1e62cb..00000000 --- a/vendor/filament/actions/resources/lang/zh_TW/modal.php +++ /dev/null @@ -1,23 +0,0 @@ - '確定要進行嗎?', - - 'actions' => [ - - 'cancel' => [ - 'label' => '取消', - ], - - 'confirm' => [ - 'label' => '確定', - ], - - 'submit' => [ - 'label' => '送出', - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_TW/replicate.php b/vendor/filament/actions/resources/lang/zh_TW/replicate.php deleted file mode 100644 index 546a11e1..00000000 --- a/vendor/filament/actions/resources/lang/zh_TW/replicate.php +++ /dev/null @@ -1,33 +0,0 @@ - [ - - 'label' => '複製', - - 'modal' => [ - - 'heading' => '複製 :label', - - 'actions' => [ - - 'replicate' => [ - 'label' => '複製', - ], - - ], - - ], - - 'notifications' => [ - - 'replicated' => [ - 'title' => '已複製資料', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_TW/restore.php b/vendor/filament/actions/resources/lang/zh_TW/restore.php deleted file mode 100644 index 6c21235a..00000000 --- a/vendor/filament/actions/resources/lang/zh_TW/restore.php +++ /dev/null @@ -1,61 +0,0 @@ - [ - - 'label' => '還原', - - 'modal' => [ - - 'heading' => '還原 :label', - - 'actions' => [ - - 'restore' => [ - 'label' => '還原', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => '已還原資料', - ], - - ], - - ], - - 'multiple' => [ - - 'label' => '已還原所選的資料', - - 'modal' => [ - - 'heading' => '已選擇 :label', - - 'actions' => [ - - 'restore' => [ - 'label' => '還原', - ], - - ], - - ], - - 'notifications' => [ - - 'restored' => [ - 'title' => '已還原資料', - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/lang/zh_TW/view.php b/vendor/filament/actions/resources/lang/zh_TW/view.php deleted file mode 100644 index d58512c3..00000000 --- a/vendor/filament/actions/resources/lang/zh_TW/view.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'label' => '檢視', - - 'modal' => [ - - 'heading' => '檢視 :label', - - 'actions' => [ - - 'close' => [ - 'label' => '關閉', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/actions/resources/views/badge-action.blade.php b/vendor/filament/actions/resources/views/badge-action.blade.php deleted file mode 100644 index c6201764..00000000 --- a/vendor/filament/actions/resources/views/badge-action.blade.php +++ /dev/null @@ -1,9 +0,0 @@ - - {{ $getLabel() }} - diff --git a/vendor/filament/actions/resources/views/badge-group.blade.php b/vendor/filament/actions/resources/views/badge-group.blade.php deleted file mode 100644 index 6837446e..00000000 --- a/vendor/filament/actions/resources/views/badge-group.blade.php +++ /dev/null @@ -1,9 +0,0 @@ - - {{ $getLabel() }} - diff --git a/vendor/filament/actions/resources/views/button-action.blade.php b/vendor/filament/actions/resources/views/button-action.blade.php deleted file mode 100644 index fda37933..00000000 --- a/vendor/filament/actions/resources/views/button-action.blade.php +++ /dev/null @@ -1,13 +0,0 @@ - - {{ $getLabel() }} - diff --git a/vendor/filament/actions/resources/views/button-group.blade.php b/vendor/filament/actions/resources/views/button-group.blade.php deleted file mode 100644 index b5761441..00000000 --- a/vendor/filament/actions/resources/views/button-group.blade.php +++ /dev/null @@ -1,13 +0,0 @@ - - {{ $getLabel() }} - diff --git a/vendor/filament/actions/resources/views/components/action.blade.php b/vendor/filament/actions/resources/views/components/action.blade.php deleted file mode 100644 index 51ff532a..00000000 --- a/vendor/filament/actions/resources/views/components/action.blade.php +++ /dev/null @@ -1,36 +0,0 @@ -@props([ - 'action', - 'dynamicComponent', - 'icon' => null, -]) - -@php - $isDisabled = $action->isDisabled(); - $url = $action->getUrl(); -@endphp - - - {{ $slot }} - diff --git a/vendor/filament/actions/resources/views/components/actions.blade.php b/vendor/filament/actions/resources/views/components/actions.blade.php deleted file mode 100644 index f5a0ad72..00000000 --- a/vendor/filament/actions/resources/views/components/actions.blade.php +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/vendor/filament/actions/resources/views/components/group.blade.php b/vendor/filament/actions/resources/views/components/group.blade.php deleted file mode 100644 index 74f300fd..00000000 --- a/vendor/filament/actions/resources/views/components/group.blade.php +++ /dev/null @@ -1,124 +0,0 @@ -@props([ - 'actions' => [], - 'badge' => null, - 'badgeColor' => null, - 'button' => false, - 'color' => null, - 'dropdownMaxHeight' => null, - 'dropdownOffset' => null, - 'dropdownPlacement' => null, - 'dropdownWidth' => null, - 'dynamicComponent' => null, - 'group' => null, - 'icon' => null, - 'iconPosition' => null, - 'iconSize' => null, - 'iconButton' => false, - 'label' => null, - 'link' => false, - 'size' => null, - 'tooltip' => null, - 'view' => null, -]) - -@if (! ($dynamicComponent && $group)) - @php - $group = \Filament\Actions\ActionGroup::make($actions) - ->badgeColor($badgeColor) - ->color($color) - ->dropdownMaxHeight($dropdownMaxHeight) - ->dropdownOffset($dropdownOffset) - ->dropdownPlacement($dropdownPlacement) - ->dropdownWidth($dropdownWidth) - ->icon($icon) - ->iconPosition($iconPosition) - ->iconSize($iconSize) - ->label($label) - ->size($size) - ->tooltip($tooltip) - ->view($view); - - $badge === true - ? $group->badge() - : $group->badge($badge); - - if ($button) { - $group->button(); - } - - if ($iconButton) { - $group->iconButton(); - } - - if ($link) { - $group->link(); - } - @endphp - - {{ $group }} -@elseif (! $group->hasDropdown()) - @foreach ($group->getActions() as $action) - @if ($action->isVisible()) - {{ $action }} - @endif - @endforeach -@else - @php - $actionLists = []; - $singleActions = []; - - foreach ($group->getActions() as $action) { - if ($action->isHidden()) { - continue; - } - - if ($action instanceof \Filament\Actions\ActionGroup && (! $action->hasDropdown())) { - if (count($singleActions)) { - $actionLists[] = $singleActions; - $singleActions = []; - } - - $actionLists[] = array_filter( - $action->getActions(), - fn ($action): bool => $action->isVisible(), - ); - } else { - $singleActions[] = $action; - } - } - - if (count($singleActions)) { - $actionLists[] = $singleActions; - } - @endphp - - - - - {{ $slot }} - - - - @foreach ($actionLists as $actions) - - @foreach ($actions as $action) - {{ $action }} - @endforeach - - @endforeach - -@endif diff --git a/vendor/filament/actions/resources/views/components/modals.blade.php b/vendor/filament/actions/resources/views/components/modals.blade.php deleted file mode 100644 index c8e5dc69..00000000 --- a/vendor/filament/actions/resources/views/components/modals.blade.php +++ /dev/null @@ -1,280 +0,0 @@ -@if ($this instanceof \Filament\Actions\Contracts\HasActions && (! $this->hasActionsModalRendered)) -
- @php - $action = $this->getMountedAction(); - @endphp - - - @if ($action) - {{ $action->getModalContent() }} - - @if (count(($infolist = $action->getInfolist())?->getComponents() ?? [])) - {{ $infolist }} - @elseif ($this->mountedActionHasForm()) - {{ $this->getMountedActionForm() }} - @endif - - {{ $action->getModalContentFooter() }} - @endif - -
- - @php - $this->hasActionsModalRendered = true; - @endphp -@endif - -@if ($this instanceof \Filament\Tables\Contracts\HasTable && (! $this->hasTableModalRendered)) -
- @php - $action = $this->getMountedTableAction(); - @endphp - - - @if ($action) - {{ $action->getModalContent() }} - - @if (count(($infolist = $action->getInfolist())?->getComponents() ?? [])) - {{ $infolist }} - @elseif ($this->mountedTableActionHasForm()) - {{ $this->getMountedTableActionForm() }} - @endif - - {{ $action->getModalContentFooter() }} - @endif - -
- -
- @php - $action = $this->getMountedTableBulkAction(); - @endphp - - - @if ($action) - {{ $action->getModalContent() }} - - @if (count(($infolist = $action->getInfolist())?->getComponents() ?? [])) - {{ $infolist }} - @elseif ($this->mountedTableBulkActionHasForm()) - {{ $this->getMountedTableBulkActionForm() }} - @endif - - {{ $action->getModalContentFooter() }} - @endif - -
- - @php - $this->hasTableModalRendered = true; - @endphp -@endif - -@if ($this instanceof \Filament\Infolists\Contracts\HasInfolists && (! $this->hasInfolistsModalRendered)) -
- @php - $action = $this->getMountedInfolistAction(); - @endphp - - - @if ($action) - {{ $action->getModalContent() }} - - @if (count(($infolist = $action->getInfolist())?->getComponents() ?? [])) - {{ $infolist }} - @elseif ($this->mountedInfolistActionHasForm()) - {{ $this->getMountedInfolistActionForm() }} - @endif - - {{ $action->getModalContentFooter() }} - @endif - -
- - @php - $this->hasInfolistsModalRendered = true; - @endphp -@endif - -@if (! $this->hasFormsModalRendered) - @php - $action = $this->getMountedFormComponentAction(); - @endphp - -
- - @if ($action) - {{ $action->getModalContent() }} - - @if (count(($infolist = $action->getInfolist())?->getComponents() ?? [])) - {{ $infolist }} - @elseif ($this->mountedFormComponentActionHasForm()) - {{ $this->getMountedFormComponentActionForm() }} - @endif - - {{ $action->getModalContentFooter() }} - @endif - -
- - @php - $this->hasFormsModalRendered = true; - @endphp -@endif diff --git a/vendor/filament/actions/resources/views/grouped-action.blade.php b/vendor/filament/actions/resources/views/grouped-action.blade.php deleted file mode 100644 index d5d401f3..00000000 --- a/vendor/filament/actions/resources/views/grouped-action.blade.php +++ /dev/null @@ -1,10 +0,0 @@ - - {{ $getLabel() }} - diff --git a/vendor/filament/actions/resources/views/grouped-group.blade.php b/vendor/filament/actions/resources/views/grouped-group.blade.php deleted file mode 100644 index 5ea4cf95..00000000 --- a/vendor/filament/actions/resources/views/grouped-group.blade.php +++ /dev/null @@ -1,10 +0,0 @@ - - {{ $getLabel() }} - diff --git a/vendor/filament/actions/resources/views/icon-button-action.blade.php b/vendor/filament/actions/resources/views/icon-button-action.blade.php deleted file mode 100644 index 8eeed065..00000000 --- a/vendor/filament/actions/resources/views/icon-button-action.blade.php +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/vendor/filament/actions/resources/views/icon-button-group.blade.php b/vendor/filament/actions/resources/views/icon-button-group.blade.php deleted file mode 100644 index b9bca1b6..00000000 --- a/vendor/filament/actions/resources/views/icon-button-group.blade.php +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/vendor/filament/actions/resources/views/link-action.blade.php b/vendor/filament/actions/resources/views/link-action.blade.php deleted file mode 100644 index 9efacb2e..00000000 --- a/vendor/filament/actions/resources/views/link-action.blade.php +++ /dev/null @@ -1,11 +0,0 @@ - - {{ $getLabel() }} - diff --git a/vendor/filament/actions/resources/views/link-group.blade.php b/vendor/filament/actions/resources/views/link-group.blade.php deleted file mode 100644 index 347dfc2b..00000000 --- a/vendor/filament/actions/resources/views/link-group.blade.php +++ /dev/null @@ -1,12 +0,0 @@ - - {{ $getLabel() }} - diff --git a/vendor/filament/actions/resources/views/select-action.blade.php b/vendor/filament/actions/resources/views/select-action.blade.php deleted file mode 100644 index 89916f37..00000000 --- a/vendor/filament/actions/resources/views/select-action.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@php - $id = $getId(); - $isDisabled = $isDisabled(); -@endphp - -
- - - - - @if (($placeholder = $getPlaceholder()) !== null) - - @endif - - @foreach ($getOptions() as $value => $label) - - @endforeach - - -
diff --git a/vendor/filament/actions/routes/web.php b/vendor/filament/actions/routes/web.php deleted file mode 100644 index 918328a9..00000000 --- a/vendor/filament/actions/routes/web.php +++ /dev/null @@ -1,13 +0,0 @@ -name('filament.exports.download') - ->middleware(['web', 'auth']); - -Route::get('/filament/imports/{import}/failed-rows/download', DownloadImportFailureCsv::class) - ->name('filament.imports.failed-rows.download') - ->middleware(['web', 'auth']); diff --git a/vendor/filament/actions/src/Action.php b/vendor/filament/actions/src/Action.php deleted file mode 100644 index e065c239..00000000 --- a/vendor/filament/actions/src/Action.php +++ /dev/null @@ -1,96 +0,0 @@ -isLivewireClickHandlerEnabled()) { - return null; - } - - if (is_string($this->action)) { - return $this->action; - } - - if ($event = $this->getLivewireEventClickHandler()) { - return $event; - } - - $argumentsParameter = ''; - - if (count($arguments = $this->getArguments())) { - $argumentsParameter .= ', '; - $argumentsParameter .= Js::from($arguments); - } - - return "mountAction('{$this->getName()}'{$argumentsParameter})"; - } - - /** - * @return array - */ - protected function resolveDefaultClosureDependencyForEvaluationByName(string $parameterName): array - { - return match ($parameterName) { - 'model' => [$this->getModel()], - 'record' => [$this->getRecord()], - default => parent::resolveDefaultClosureDependencyForEvaluationByName($parameterName), - }; - } - - /** - * @return array - */ - protected function resolveDefaultClosureDependencyForEvaluationByType(string $parameterType): array - { - $record = $this->getRecord(); - - if (! $record) { - return parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType); - } - - return match ($parameterType) { - Model::class, $record::class => [$record], - default => parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType), - }; - } - - public function getLivewire(): Component - { - return $this->livewire; - } - - public function shouldClearRecordAfter(): bool - { - return ! $this->getRecord()?->exists; - } - - public function clearRecordAfter(): void - { - if (! $this->shouldClearRecordAfter()) { - return; - } - - $this->record(null); - } - - public function getInfolistName(): string - { - return 'mountedActionInfolist'; - } -} diff --git a/vendor/filament/actions/src/ActionGroup.php b/vendor/filament/actions/src/ActionGroup.php deleted file mode 100644 index b9cb2de4..00000000 --- a/vendor/filament/actions/src/ActionGroup.php +++ /dev/null @@ -1,211 +0,0 @@ - - */ - protected array $actions; - - /** - * @var array - */ - protected array $flatActions; - - protected string $evaluationIdentifier = 'group'; - - protected string $viewIdentifier = 'group'; - - /** - * @param array $actions - */ - public function __construct(array $actions) - { - $this->actions($actions); - } - - /** - * @param array $actions - */ - public static function make(array $actions): static - { - $static = app(static::class, ['actions' => $actions]); - $static->configure(); - - return $static; - } - - protected function setUp(): void - { - parent::setUp(); - - $this->iconButton(); - } - - /** - * @param array $actions - */ - public function actions(array $actions): static - { - $this->actions = []; - $this->flatActions = []; - - foreach ($actions as $action) { - if ($action instanceof ActionGroup) { - $action->dropdownPlacement('right-top'); - - $this->flatActions = [ - ...$this->flatActions, - ...$action->getFlatActions(), - ]; - } else { - $this->flatActions[$action->getName()] = $action; - } - - $this->actions[] = $action; - } - - return $this; - } - - public function isBadge(): bool - { - return $this->getView() === static::BADGE_VIEW; - } - - public function button(): static - { - return $this->view(static::BUTTON_VIEW); - } - - public function isButton(): bool - { - return $this->getView() === static::BUTTON_VIEW; - } - - public function grouped(): static - { - return $this->view(static::GROUPED_VIEW); - } - - public function iconButton(): static - { - return $this->view(static::ICON_BUTTON_VIEW); - } - - public function isIconButton(): bool - { - return $this->getView() === static::ICON_BUTTON_VIEW; - } - - public function link(): static - { - return $this->view(static::LINK_VIEW); - } - - public function isLink(): bool - { - return $this->getView() === static::LINK_VIEW; - } - - public function livewire(Component $livewire): static - { - foreach ($this->actions as $action) { - if (! $action instanceof HasLivewire) { - continue; - } - - $action->livewire($livewire); - } - - return $this; - } - - public function getLabel(): string - { - $label = $this->evaluate($this->label) ?? __('filament-actions::group.trigger.label'); - - return $this->shouldTranslateLabel ? __($label) : $label; - } - - /** - * @return array - */ - public function getActions(): array - { - return array_map( - fn (StaticAction | ActionGroup $action) => $action->defaultView($action::GROUPED_VIEW), - $this->actions, - ); - } - - /** - * @return array - */ - public function getFlatActions(): array - { - return $this->flatActions; - } - - public function getIcon(): string - { - return $this->getBaseIcon() ?? FilamentIcon::resolve('actions::action-group') ?? 'heroicon-m-ellipsis-vertical'; - } - - public function isHidden(): bool - { - $condition = $this->baseIsHidden(); - - if ($condition) { - return true; - } - - foreach ($this->getActions() as $action) { - if ($action->isHidden()) { - continue; - } - - return false; - } - - return true; - } -} diff --git a/vendor/filament/actions/src/ActionsServiceProvider.php b/vendor/filament/actions/src/ActionsServiceProvider.php deleted file mode 100644 index ba936323..00000000 --- a/vendor/filament/actions/src/ActionsServiceProvider.php +++ /dev/null @@ -1,68 +0,0 @@ -name('filament-actions') - ->hasCommands($this->getCommands()) - ->hasMigrations([ - 'create_imports_table', - 'create_exports_table', - 'create_failed_import_rows_table', - ]) - ->hasRoute('web') - ->hasTranslations() - ->hasViews(); - } - - public function packageBooted(): void - { - if ($this->app->runningInConsole()) { - foreach (app(Filesystem::class)->files(__DIR__ . '/../stubs/') as $file) { - $this->publishes([ - $file->getRealPath() => base_path("stubs/filament/{$file->getFilename()}"), - ], 'filament-stubs'); - } - } - - Testable::mixin(new TestsActions()); - } - - /** - * @return array - */ - protected function getCommands(): array - { - $commands = [ - Commands\MakeExporterCommand::class, - Commands\MakeImporterCommand::class, - ]; - - $aliases = []; - - foreach ($commands as $command) { - $class = 'Filament\\Actions\\Commands\\Aliases\\' . class_basename($command); - - if (! class_exists($class)) { - continue; - } - - $aliases[] = $class; - } - - return [ - ...$commands, - ...$aliases, - ]; - } -} diff --git a/vendor/filament/actions/src/Commands/Aliases/MakeExporterCommand.php b/vendor/filament/actions/src/Commands/Aliases/MakeExporterCommand.php deleted file mode 100644 index b65a0059..00000000 --- a/vendor/filament/actions/src/Commands/Aliases/MakeExporterCommand.php +++ /dev/null @@ -1,12 +0,0 @@ -getModel($model); - - if (blank($model)) { - return '//'; - } - - $table = $this->getModelTable($model); - - if (blank($table)) { - return '//'; - } - - $columns = []; - - foreach ($table->getColumns() as $column) { - $columnName = $column->getName(); - - if (str($columnName)->endsWith([ - '_token', - ])) { - continue; - } - - if (str($columnName)->contains([ - 'password', - ])) { - continue; - } - - if (str($columnName)->endsWith('_id')) { - $guessedRelationshipName = $this->guessBelongsToRelationshipName($column, $model); - - if (filled($guessedRelationshipName)) { - $guessedRelationshipTitleColumnName = $this->guessBelongsToRelationshipTitleColumnName($column, app($model)->{$guessedRelationshipName}()->getModel()::class); - - $columnName = "{$guessedRelationshipName}.{$guessedRelationshipTitleColumnName}"; - } - } - - $columnData = []; - - if (in_array($columnName, [ - 'id', - 'sku', - 'uuid', - ])) { - $columnData['label'] = [Str::upper($columnName)]; - } - - $columns[$columnName] = $columnData; - } - - $output = count($columns) ? '' : '//'; - - foreach ($columns as $columnName => $columnData) { - // Constructor - $output .= 'ExportColumn::make(\''; - $output .= $columnName; - $output .= '\')'; - - // Configuration - foreach ($columnData as $methodName => $parameters) { - $output .= PHP_EOL; - $output .= ' ->'; - $output .= $methodName; - $output .= '('; - $output .= collect($parameters) - ->map(function (mixed $parameterValue, int | string $parameterName): string { - $parameterValue = match (true) { - /** @phpstan-ignore-next-line */ - is_bool($parameterValue) => $parameterValue ? 'true' : 'false', - /** @phpstan-ignore-next-line */ - is_null($parameterValue) => 'null', - is_numeric($parameterValue) => $parameterValue, - /** @phpstan-ignore-next-line */ - is_array($parameterValue) => '[\'' . implode('\', \'', $parameterValue) . '\']', - default => "'{$parameterValue}'", - }; - - if (is_numeric($parameterName)) { - return $parameterValue; - } - - return "{$parameterName}: {$parameterValue}"; - }) - ->implode(', '); - $output .= ')'; - } - - // Termination - $output .= ','; - - if (! (array_key_last($columns) === $columnName)) { - $output .= PHP_EOL; - } - } - - return $output; - } -} diff --git a/vendor/filament/actions/src/Commands/Concerns/CanGenerateImporterColumns.php b/vendor/filament/actions/src/Commands/Concerns/CanGenerateImporterColumns.php deleted file mode 100644 index be0560fc..00000000 --- a/vendor/filament/actions/src/Commands/Concerns/CanGenerateImporterColumns.php +++ /dev/null @@ -1,159 +0,0 @@ -getModel($model); - - if (blank($model)) { - return '//'; - } - - $table = $this->getModelTable($model); - - if (blank($table)) { - return '//'; - } - - $columns = []; - - foreach ($table->getColumns() as $column) { - if ($column->getAutoincrement()) { - continue; - } - - $columnName = $column->getName(); - - if (str($columnName)->is([ - app($model)->getKeyName(), - 'created_at', - 'deleted_at', - 'updated_at', - '*_token', - ])) { - continue; - } - - $columnData = []; - - if (in_array($columnName, [ - 'id', - 'sku', - 'uuid', - ])) { - $columnData['label'] = [Str::upper($columnName)]; - } - - if ($column->getNotnull()) { - $columnData['rules'][0][] = 'required'; - $columnData['requiredMapping'] = []; - } - - if (str($columnName)->contains(['email'])) { - $columnData['rules'][0][] = 'email'; - } - - if ( - str($columnName)->endsWith('_id') && - filled($guessedRelationshipName = $this->guessBelongsToRelationshipName($column, $model)) - ) { - $columnName = $guessedRelationshipName; - $columnData['relationship'] = []; - } elseif (in_array($column->getType()::class, [ - Types\BooleanType::class, - ])) { - $columnData['rules'][0][] = 'boolean'; - $columnData['boolean'] = []; - } elseif (in_array($column->getType()::class, [ - Types\DateImmutableType::class, - Types\DateType::class, - ])) { - $columnData['rules'][0][] = 'date'; - } elseif (in_array($column->getType()::class, [ - Types\DateTimeImmutableType::class, - Types\DateTimeType::class, - Types\DateTimeTzImmutableType::class, - Types\DateTimeTzType::class, - ])) { - $columnData['rules'][0][] = 'datetime'; - } elseif (in_array($column->getType()::class, [ - Types\IntegerType::class, - Types\SmallIntType::class, - Types\BigIntType::class, - ])) { - $columnData['rules'][0][] = 'integer'; - $columnData['numeric'] = []; - } elseif (in_array($column->getType()::class, [ - Types\DecimalType::class, - Types\FloatType::class, - ])) { - $columnData['rules'][0][] = 'integer'; - $columnData['numeric'] = []; - } elseif ($length = $column->getLength()) { - $columnData['rules'][0][] = "max:{$length}"; - } - - // Move rules to the end of the column definition. - if (array_key_exists('rules', $columnData)) { - $rules = $columnData['rules']; - unset($columnData['rules']); - - $columnData['rules'] = $rules; - } - - $columns[$columnName] = $columnData; - } - - $output = count($columns) ? '' : '//'; - - foreach ($columns as $columnName => $columnData) { - // Constructor - $output .= 'ImportColumn::make(\''; - $output .= $columnName; - $output .= '\')'; - - // Configuration - foreach ($columnData as $methodName => $parameters) { - $output .= PHP_EOL; - $output .= ' ->'; - $output .= $methodName; - $output .= '('; - $output .= collect($parameters) - ->map(function (mixed $parameterValue, int | string $parameterName): string { - $parameterValue = match (true) { - /** @phpstan-ignore-next-line */ - is_bool($parameterValue) => $parameterValue ? 'true' : 'false', - /** @phpstan-ignore-next-line */ - is_null($parameterValue) => 'null', - is_numeric($parameterValue) => $parameterValue, - is_array($parameterValue) => '[\'' . implode('\', \'', $parameterValue) . '\']', - default => "'{$parameterValue}'", - }; - - if (is_numeric($parameterName)) { - return $parameterValue; - } - - return "{$parameterName}: {$parameterValue}"; - }) - ->implode(', '); - $output .= ')'; - } - - // Termination - $output .= ','; - - if (! (array_key_last($columns) === $columnName)) { - $output .= PHP_EOL; - } - } - - return $output; - } -} diff --git a/vendor/filament/actions/src/Commands/MakeExporterCommand.php b/vendor/filament/actions/src/Commands/MakeExporterCommand.php deleted file mode 100644 index 4a4adcdf..00000000 --- a/vendor/filament/actions/src/Commands/MakeExporterCommand.php +++ /dev/null @@ -1,86 +0,0 @@ -argument('name') ?? text( - label: 'What is the model name?', - placeholder: 'BlogPost', - required: true, - )) - ->studly() - ->beforeLast('Exporter') - ->trim('/') - ->trim('\\') - ->trim(' ') - ->studly() - ->replace('/', '\\'); - - if (blank($model)) { - $model = 'Exporter'; - } - - $modelClass = (string) str($model)->afterLast('\\'); - $modelNamespace = str($model)->contains('\\') ? - (string) str($model)->beforeLast('\\') : - ''; - - $namespace = 'App\\Filament\\Exports'; - $path = app_path('Filament/Exports/'); - - $exporter = "{$model}Exporter"; - $exporterClass = "{$modelClass}Exporter"; - $exporterNamespace = $modelNamespace; - $namespace .= $exporterNamespace !== '' ? "\\{$exporterNamespace}" : ''; - - $baseExporterPath = - (string) str($exporter) - ->prepend('/') - ->prepend($path) - ->replace('\\', '/') - ->replace('//', '/'); - - $exporterPath = "{$baseExporterPath}.php"; - - if (! $this->option('force') && $this->checkForCollision([ - $exporterPath, - ])) { - return static::INVALID; - } - - $this->copyStubToApp('Exporter', $exporterPath, [ - 'columns' => $this->indentString($this->option('generate') ? $this->getExporterColumns( - 'App\\Models' . ($modelNamespace !== '' ? "\\{$modelNamespace}" : '') . '\\' . $modelClass, - ) : '//', 3), - 'model' => $model === 'Exporter' ? 'Exporter as ExporterModel' : $model, - 'modelClass' => $model === 'Exporter' ? 'ExporterModel' : $modelClass, - 'modelLabel' => get_model_label($model), - 'namespace' => $namespace, - 'exporterClass' => $exporterClass, - ]); - - $this->components->info("Filament exporter [{$exporterPath}] created successfully."); - - return static::SUCCESS; - } -} diff --git a/vendor/filament/actions/src/Commands/MakeImporterCommand.php b/vendor/filament/actions/src/Commands/MakeImporterCommand.php deleted file mode 100644 index 5c28a445..00000000 --- a/vendor/filament/actions/src/Commands/MakeImporterCommand.php +++ /dev/null @@ -1,86 +0,0 @@ -argument('name') ?? text( - label: 'What is the model name?', - placeholder: 'BlogPost', - required: true, - )) - ->studly() - ->beforeLast('Importer') - ->trim('/') - ->trim('\\') - ->trim(' ') - ->studly() - ->replace('/', '\\'); - - if (blank($model)) { - $model = 'Importer'; - } - - $modelClass = (string) str($model)->afterLast('\\'); - $modelNamespace = str($model)->contains('\\') ? - (string) str($model)->beforeLast('\\') : - ''; - - $namespace = 'App\\Filament\\Imports'; - $path = app_path('Filament/Imports/'); - - $importer = "{$model}Importer"; - $importerClass = "{$modelClass}Importer"; - $importerNamespace = $modelNamespace; - $namespace .= $importerNamespace !== '' ? "\\{$importerNamespace}" : ''; - - $baseImporterPath = - (string) str($importer) - ->prepend('/') - ->prepend($path) - ->replace('\\', '/') - ->replace('//', '/'); - - $importerPath = "{$baseImporterPath}.php"; - - if (! $this->option('force') && $this->checkForCollision([ - $importerPath, - ])) { - return static::INVALID; - } - - $this->copyStubToApp('Importer', $importerPath, [ - 'columns' => $this->indentString($this->option('generate') ? $this->getImporterColumns( - 'App\\Models' . ($modelNamespace !== '' ? "\\{$modelNamespace}" : '') . '\\' . $modelClass, - ) : '//', 3), - 'model' => $model === 'Importer' ? 'Importer as ImporterModel' : $model, - 'modelClass' => $model === 'Importer' ? 'ImporterModel' : $modelClass, - 'modelLabel' => get_model_label($model), - 'namespace' => $namespace, - 'importerClass' => $importerClass, - ]); - - $this->components->info("Filament importer [{$importerPath}] created successfully."); - - return static::SUCCESS; - } -} diff --git a/vendor/filament/actions/src/Concerns/BelongsToLivewire.php b/vendor/filament/actions/src/Concerns/BelongsToLivewire.php deleted file mode 100644 index ecd188a3..00000000 --- a/vendor/filament/actions/src/Concerns/BelongsToLivewire.php +++ /dev/null @@ -1,22 +0,0 @@ -livewire = $livewire; - - return $this; - } - - public function getLivewire(): object - { - return $this->livewire; - } -} diff --git a/vendor/filament/actions/src/Concerns/CanBeDisabled.php b/vendor/filament/actions/src/Concerns/CanBeDisabled.php deleted file mode 100644 index 297bd1df..00000000 --- a/vendor/filament/actions/src/Concerns/CanBeDisabled.php +++ /dev/null @@ -1,27 +0,0 @@ -isDisabled = $condition; - - return $this; - } - - public function isDisabled(): bool - { - return $this->evaluate($this->isDisabled) || $this->isHidden(); - } - - public function isEnabled(): bool - { - return ! $this->isDisabled(); - } -} diff --git a/vendor/filament/actions/src/Concerns/CanBeHidden.php b/vendor/filament/actions/src/Concerns/CanBeHidden.php deleted file mode 100644 index 73e70e92..00000000 --- a/vendor/filament/actions/src/Concerns/CanBeHidden.php +++ /dev/null @@ -1,112 +0,0 @@ - | null $arguments - */ - public function authorize(mixed $abilities, Model | string | array | null $arguments = null): static - { - if (is_string($abilities) || is_array($abilities)) { - $this->authorization = [ - 'type' => 'all', - 'abilities' => Arr::wrap($abilities), - 'arguments' => Arr::wrap($arguments), - ]; - } else { - $this->authorization = $abilities; - } - - return $this; - } - - /** - * @param string | array $abilities - * @param Model | array | null $arguments - */ - public function authorizeAny(string | array $abilities, Model | array | null $arguments = null): static - { - $this->authorization = [ - 'type' => 'any', - 'abilities' => Arr::wrap($abilities), - 'arguments' => Arr::wrap($arguments), - ]; - - return $this; - } - - /** - * @param array $arguments - * @return array - */ - protected function parseAuthorizationArguments(array $arguments): array - { - return $arguments; - } - - public function hidden(bool | Closure $condition = true): static - { - $this->isHidden = $condition; - - return $this; - } - - public function visible(bool | Closure $condition = true): static - { - $this->isVisible = $condition; - - return $this; - } - - public function isAuthorized(): bool - { - if ($this->authorization === null) { - return true; - } - - if (! is_array($this->authorization)) { - return (bool) $this->evaluate($this->authorization); - } - - $abilities = $this->authorization['abilities'] ?? []; - $arguments = $this->parseAuthorizationArguments($this->authorization['arguments'] ?? []); - $type = $this->authorization['type'] ?? null; - - return match ($type) { - 'all' => Gate::check($abilities, $arguments), - 'any' => Gate::any($abilities, $arguments), - default => false, - }; - } - - public function isHidden(): bool - { - if ($this->evaluate($this->isHidden)) { - return true; - } - - if (! $this->evaluate($this->isVisible)) { - return true; - } - - return ! $this->isAuthorized(); - } - - public function isVisible(): bool - { - return ! $this->isHidden(); - } -} diff --git a/vendor/filament/actions/src/Concerns/CanBeLabeledFrom.php b/vendor/filament/actions/src/Concerns/CanBeLabeledFrom.php deleted file mode 100644 index dcfa9ae5..00000000 --- a/vendor/filament/actions/src/Concerns/CanBeLabeledFrom.php +++ /dev/null @@ -1,22 +0,0 @@ -labeledFrom = $breakpoint; - - return $this; - } - - public function getLabeledFromBreakpoint(): ?string - { - return $this->evaluate($this->labeledFrom); - } -} diff --git a/vendor/filament/actions/src/Concerns/CanBeMounted.php b/vendor/filament/actions/src/Concerns/CanBeMounted.php deleted file mode 100644 index b937bc79..00000000 --- a/vendor/filament/actions/src/Concerns/CanBeMounted.php +++ /dev/null @@ -1,50 +0,0 @@ - $parameters - */ - public function mount(array $parameters): mixed - { - return $this->evaluate($this->getMountUsing(), $parameters); - } - - public function mountUsing(?Closure $callback): static - { - $this->mountUsing = $callback; - - return $this; - } - - /** - * @param array | Closure $data - */ - public function fillForm(array | Closure $data): static - { - $this->mountUsing(function (?Form $form) use ($data) { - $form?->fill($this->evaluate($data)); - }); - - return $this; - } - - public function getMountUsing(): Closure - { - return $this->mountUsing ?? static function (?ComponentContainer $form = null): void { - if (! $form) { - return; - } - - $form->fill(); - }; - } -} diff --git a/vendor/filament/actions/src/Concerns/CanBeOutlined.php b/vendor/filament/actions/src/Concerns/CanBeOutlined.php deleted file mode 100644 index 67495a2f..00000000 --- a/vendor/filament/actions/src/Concerns/CanBeOutlined.php +++ /dev/null @@ -1,22 +0,0 @@ -isOutlined = $condition; - - return $this; - } - - public function isOutlined(): bool - { - return (bool) $this->evaluate($this->isOutlined); - } -} diff --git a/vendor/filament/actions/src/Concerns/CanCallParentAction.php b/vendor/filament/actions/src/Concerns/CanCallParentAction.php deleted file mode 100644 index e48c0c8d..00000000 --- a/vendor/filament/actions/src/Concerns/CanCallParentAction.php +++ /dev/null @@ -1,20 +0,0 @@ -parentActionCallLivewireClickHandler = $handler; - - return $this; - } - - public function getParentActionCallLivewireClickHandler(): ?string - { - return $this->parentActionCallLivewireClickHandler; - } -} diff --git a/vendor/filament/actions/src/Concerns/CanClose.php b/vendor/filament/actions/src/Concerns/CanClose.php deleted file mode 100644 index 309f9555..00000000 --- a/vendor/filament/actions/src/Concerns/CanClose.php +++ /dev/null @@ -1,22 +0,0 @@ -shouldClose = $condition; - - return $this; - } - - public function shouldClose(): bool - { - return (bool) $this->evaluate($this->shouldClose); - } -} diff --git a/vendor/filament/actions/src/Concerns/CanCustomizeProcess.php b/vendor/filament/actions/src/Concerns/CanCustomizeProcess.php deleted file mode 100644 index 8cd7fa51..00000000 --- a/vendor/filament/actions/src/Concerns/CanCustomizeProcess.php +++ /dev/null @@ -1,25 +0,0 @@ -using = $using; - - return $this; - } - - /** - * @param array $parameters - */ - public function process(?Closure $default, array $parameters = []): mixed - { - return $this->evaluate($this->using ?? $default, $parameters); - } -} diff --git a/vendor/filament/actions/src/Concerns/CanDispatchEvent.php b/vendor/filament/actions/src/Concerns/CanDispatchEvent.php deleted file mode 100644 index 3c5467e1..00000000 --- a/vendor/filament/actions/src/Concerns/CanDispatchEvent.php +++ /dev/null @@ -1,137 +0,0 @@ - | Closure - */ - protected array | Closure $eventData = []; - - protected string | bool $dispatchDirection = false; - - protected ?string $dispatchToComponent = null; - - /** - * @param array | Closure $data - */ - public function dispatch( - string | Closure | null $event, - array | Closure $data = [], - ): static { - $this->event = $event; - $this->eventData($data); - $this->dispatchDirection = false; - - return $this; - } - - /** - * @param array | Closure $data - */ - public function dispatchSelf( - string | Closure | null $event, - array | Closure $data = [], - ): static { - $this->dispatch($event, $data); - $this->dispatchDirection = 'self'; - - return $this; - } - - /** - * @param array | Closure $data - */ - public function dispatchTo( - string $component, - string | Closure | null $event, - array | Closure $data = [], - ): static { - $this->dispatch($event, $data); - $this->dispatchDirection = 'to'; - $this->dispatchToComponent = $component; - - return $this; - } - - /** - * @deprecated Use `dispatch()` instead. - * - * @param array | Closure $data - */ - public function emit( - string | Closure | null $event, - array | Closure $data = [], - ): static { - $this->dispatch($event, $data); - - return $this; - } - - /** - * @deprecated Use `dispatchSelf()` instead. - * - * @param array | Closure $data - */ - public function emitSelf( - string | Closure | null $event, - array | Closure $data = [], - ): static { - $this->dispatchSelf($event, $data); - - return $this; - } - - /** - * @deprecated Use `dispatchTo()` instead. - * - * @param array | Closure $data - */ - public function emitTo( - string $component, - string | Closure | null $event, - array | Closure $data = [], - ): static { - $this->dispatchTo($component, $event, $data); - - return $this; - } - - public function getEvent(): ?string - { - return $this->evaluate($this->event); - } - - /** - * @param array | Closure $data - */ - public function eventData(array | Closure $data): static - { - $this->eventData = $data; - - return $this; - } - - /** - * @return array - */ - public function getEventData(): array - { - return $this->evaluate($this->eventData); - } - - public function getDispatchDirection(): string | bool - { - return $this->dispatchDirection; - } - - public function getDispatchToComponent(): ?string - { - return $this->dispatchToComponent; - } -} diff --git a/vendor/filament/actions/src/Concerns/CanExportRecords.php b/vendor/filament/actions/src/Concerns/CanExportRecords.php deleted file mode 100644 index 9e5e2e53..00000000 --- a/vendor/filament/actions/src/Concerns/CanExportRecords.php +++ /dev/null @@ -1,366 +0,0 @@ - - */ - protected string $exporter; - - protected ?string $job = null; - - protected int | Closure $chunkSize = 100; - - protected int | Closure | null $maxRows = null; - - protected string | Closure | null $csvDelimiter = null; - - /** - * @var array | Closure - */ - protected array | Closure $options = []; - - protected string | Closure | null $fileDisk = null; - - protected string | Closure | null $fileName = null; - - /** - * @var array | Closure | null - */ - protected array | Closure | null $formats = null; - - protected function setUp(): void - { - parent::setUp(); - - $this->label(fn (ExportAction | ExportTableAction | ExportTableBulkAction $action): string => __('filament-actions::export.label', ['label' => $action->getPluralModelLabel()])); - - $this->modalHeading(fn (ExportAction | ExportTableAction | ExportTableBulkAction $action): string => __('filament-actions::export.modal.heading', ['label' => $action->getPluralModelLabel()])); - - $this->modalSubmitActionLabel(__('filament-actions::export.modal.actions.export.label')); - - $this->groupedIcon(FilamentIcon::resolve('actions::export-action.grouped') ?? 'heroicon-m-arrow-down-tray'); - - $this->form(fn (ExportAction | ExportTableAction | ExportTableBulkAction $action): array => array_merge([ - Fieldset::make(__('filament-actions::export.modal.form.columns.label')) - ->columns(1) - ->inlineLabel() - ->schema(function () use ($action): array { - return array_map( - fn (ExportColumn $column): Split => Split::make([ - Forms\Components\Checkbox::make('isEnabled') - ->label(__('filament-actions::export.modal.form.columns.form.is_enabled.label', ['column' => $column->getName()])) - ->hiddenLabel() - ->default(true) - ->live() - ->grow(false), - Forms\Components\TextInput::make('label') - ->label(__('filament-actions::export.modal.form.columns.form.label.label', ['column' => $column->getName()])) - ->hiddenLabel() - ->default($column->getLabel()) - ->placeholder($column->getLabel()) - ->disabled(fn (Forms\Get $get): bool => ! $get('isEnabled')) - ->required(fn (Forms\Get $get): bool => (bool) $get('isEnabled')), - ]) - ->verticallyAlignCenter() - ->statePath($column->getName()), - $action->getExporter()::getColumns(), - ); - }) - ->statePath('columnMap'), - ], $action->getExporter()::getOptionsFormComponents())); - - $this->action(function (ExportAction | ExportTableAction | ExportTableBulkAction $action, array $data, Component $livewire) { - if ($livewire instanceof HasTable) { - $query = $livewire->getFilteredSortedTableQuery(); - } else { - $query = $action->getExporter()::getModel()::query(); - } - - $records = $action instanceof ExportTableBulkAction ? $action->getRecords() : null; - - $totalRows = $records ? $records->count() : $query->count(); - $maxRows = $action->getMaxRows() ?? $totalRows; - - if ($maxRows < $totalRows) { - Notification::make() - ->title(__('filament-actions::export.notifications.max_rows.title')) - ->body(trans_choice('filament-actions::export.notifications.max_rows.body', $maxRows, [ - 'count' => format_number($maxRows), - ])) - ->success() - ->send(); - - return; - } - - $user = auth()->user(); - - $options = array_merge( - $action->getOptions(), - Arr::except($data, ['columnMap']), - ); - - $columnMap = collect($data['columnMap']) - ->dot() - ->reduce(fn (Collection $carry, mixed $value, string $key): Collection => $carry->mergeRecursive([ - Str::beforeLast($key, '.') => [Str::afterLast($key, '.') => $value], - ]), collect()) - ->filter(fn (array $column): bool => $column['isEnabled'] ?? false) - ->mapWithKeys(fn (array $column, string $columnName): array => [$columnName => $column['label']]) - ->all(); - - $export = app(Export::class); - $export->user()->associate($user); - $export->exporter = $action->getExporter(); - $export->total_rows = $totalRows; - - $exporter = $export->getExporter( - columnMap: $columnMap, - options: $options, - ); - - $export->file_disk = $action->getFileDisk() ?? $exporter->getFileDisk(); - $export->save(); - - $export->file_name = $action->getFileName($export) ?? $exporter->getFileName($export); - $export->save(); - - $formats = $action->getFormats() ?? $exporter->getFormats(); - $hasCsv = in_array(ExportFormat::Csv, $formats); - $hasXlsx = in_array(ExportFormat::Xlsx, $formats); - - $query->withoutEagerLoads(); - $serializedQuery = EloquentSerializeFacade::serialize($query); - - $job = $action->getJob(); - $jobQueue = $exporter->getJobQueue(); - $jobConnection = $exporter->getJobConnection(); - - $makeCreateXlsxFileJob = fn (): CreateXlsxFile => app(CreateXlsxFile::class, [ - 'export' => $export, - 'columnMap' => $columnMap, - 'options' => $options, - ]); - - Bus::chain([ - Bus::batch([new $job( - $export, - query: $serializedQuery, - columnMap: $columnMap, - options: $options, - chunkSize: $action->getChunkSize(), - records: $action instanceof ExportTableBulkAction ? $action->getRecords()->all() : null, - )]) - ->when( - filled($jobQueue), - fn (PendingBatch $batch) => $batch->onQueue($jobQueue), - ) - ->when( - filled($jobConnection), - fn (PendingBatch $batch) => $batch->onConnection($jobConnection), - ) - ->allowFailures(), - ...(($hasXlsx && (! $hasCsv)) ? [$makeCreateXlsxFileJob()] : []), - app(ExportCompletion::class, [ - 'export' => $export, - 'columnMap' => $columnMap, - 'formats' => $formats, - 'options' => $options, - ]), - ...(($hasXlsx && $hasCsv) ? [$makeCreateXlsxFileJob()] : []), - ]) - ->when( - filled($jobQueue), - fn (PendingChain $chain) => $chain->onQueue($jobQueue), - ) - ->when( - filled($jobConnection), - fn (PendingChain $chain) => $chain->onConnection($jobConnection), - ) - ->dispatch(); - - Notification::make() - ->title($action->getSuccessNotificationTitle()) - ->body(trans_choice('filament-actions::export.notifications.started.body', $export->total_rows, [ - 'count' => format_number($export->total_rows), - ])) - ->success() - ->send(); - }); - - $this->color('gray'); - - $this->modalWidth('xl'); - - $this->successNotificationTitle(__('filament-actions::export.notifications.started.title')); - - if (! $this instanceof ExportTableBulkAction) { - $this->model(fn (ExportAction | ExportTableAction $action): string => $action->getExporter()::getModel()); - } - } - - public static function getDefaultName(): ?string - { - return 'export'; - } - - /** - * @param class-string $exporter - */ - public function exporter(string $exporter): static - { - $this->exporter = $exporter; - - return $this; - } - - /** - * @param class-string | null $job - */ - public function job(?string $job): static - { - $this->job = $job; - - return $this; - } - - public function chunkSize(int | Closure $size): static - { - $this->chunkSize = $size; - - return $this; - } - - public function maxRows(int | Closure | null $rows): static - { - $this->maxRows = $rows; - - return $this; - } - - public function csvDelimiter(string | Closure | null $delimiter): static - { - $this->csvDelimiter = $delimiter; - - return $this; - } - - /** - * @return class-string - */ - public function getExporter(): string - { - return $this->exporter; - } - - /** - * @return class-string - */ - public function getJob(): string - { - return $this->job ?? PrepareCsvExport::class; - } - - public function getChunkSize(): int - { - return $this->evaluate($this->chunkSize); - } - - public function getMaxRows(): ?int - { - return $this->evaluate($this->maxRows); - } - - /** - * @param array | Closure $options - */ - public function options(array | Closure $options): static - { - $this->options = $options; - - return $this; - } - - /** - * @return array - */ - public function getOptions(): array - { - return $this->evaluate($this->options); - } - - public function fileDisk(string | Closure | null $disk): static - { - $this->fileDisk = $disk; - - return $this; - } - - public function getFileDisk(): ?string - { - return $this->evaluate($this->fileDisk); - } - - public function fileName(string | Closure | null $name): static - { - $this->fileName = $name; - - return $this; - } - - public function getFileName(Export $export): ?string - { - return $this->evaluate($this->fileName, [ - 'export' => $export, - ]); - } - - /** - * @param array | Closure | null $formats - */ - public function formats(array | Closure | null $formats): static - { - $this->formats = $formats; - - return $this; - } - - /** - * @return array | null - */ - public function getFormats(): ?array - { - return $this->evaluate($this->formats); - } -} diff --git a/vendor/filament/actions/src/Concerns/CanImportRecords.php b/vendor/filament/actions/src/Concerns/CanImportRecords.php deleted file mode 100644 index bdaa7066..00000000 --- a/vendor/filament/actions/src/Concerns/CanImportRecords.php +++ /dev/null @@ -1,465 +0,0 @@ - - */ - protected string $importer; - - protected ?string $job = null; - - protected int | Closure $chunkSize = 100; - - protected int | Closure | null $maxRows = null; - - protected string | Closure | null $csvDelimiter = null; - - /** - * @var array | Closure - */ - protected array | Closure $options = []; - - protected function setUp(): void - { - parent::setUp(); - - $this->label(fn (ImportAction | ImportTableAction $action): string => __('filament-actions::import.label', ['label' => $action->getPluralModelLabel()])); - - $this->modalHeading(fn (ImportAction | ImportTableAction $action): string => __('filament-actions::import.modal.heading', ['label' => $action->getPluralModelLabel()])); - - $this->modalDescription(fn (ImportAction | ImportTableAction $action): Htmlable => $action->getModalAction('downloadExample')); - - $this->modalSubmitActionLabel(__('filament-actions::import.modal.actions.import.label')); - - $this->groupedIcon(FilamentIcon::resolve('actions::import-action.grouped') ?? 'heroicon-m-arrow-up-tray'); - - $this->form(fn (ImportAction | ImportTableAction $action): array => array_merge([ - FileUpload::make('file') - ->label(__('filament-actions::import.modal.form.file.label')) - ->placeholder(__('filament-actions::import.modal.form.file.placeholder')) - ->acceptedFileTypes(['text/csv', 'text/x-csv', 'application/csv', 'application/x-csv', 'text/comma-separated-values', 'text/x-comma-separated-values', 'text/plain']) - ->afterStateUpdated(function (Forms\Set $set, ?TemporaryUploadedFile $state) use ($action) { - if (! $state instanceof TemporaryUploadedFile) { - return; - } - - $csvStream = $this->getUploadedFileStream($state); - - if (! $csvStream) { - return; - } - - $csvReader = CsvReader::createFromStream($csvStream); - - if (filled($csvDelimiter = $this->getCsvDelimiter($csvReader))) { - $csvReader->setDelimiter($csvDelimiter); - } - - $csvReader->setHeaderOffset(0); - - $csvColumns = $csvReader->getHeader(); - - $lowercaseCsvColumnValues = array_map('strtolower', $csvColumns); - $lowercaseCsvColumnKeys = array_combine( - $lowercaseCsvColumnValues, - $csvColumns, - ); - - $set('columnMap', array_reduce($action->getImporter()::getColumns(), function (array $carry, ImportColumn $column) use ($lowercaseCsvColumnKeys, $lowercaseCsvColumnValues) { - $carry[$column->getName()] = $lowercaseCsvColumnKeys[ - Arr::first( - array_intersect( - $lowercaseCsvColumnValues, - $column->getGuesses(), - ), - ) - ] ?? null; - - return $carry; - }, [])); - }) - ->storeFiles(false) - ->visibility('private') - ->required() - ->hiddenLabel(), - Fieldset::make(__('filament-actions::import.modal.form.columns.label')) - ->columns(1) - ->inlineLabel() - ->schema(function (Forms\Get $get) use ($action): array { - $csvFile = Arr::first((array) ($get('file') ?? [])); - - if (! $csvFile instanceof TemporaryUploadedFile) { - return []; - } - - $csvStream = $this->getUploadedFileStream($csvFile); - - if (! $csvStream) { - return []; - } - - $csvReader = CsvReader::createFromStream($csvStream); - - if (filled($csvDelimiter = $this->getCsvDelimiter($csvReader))) { - $csvReader->setDelimiter($csvDelimiter); - } - - $csvReader->setHeaderOffset(0); - - $csvColumns = $csvReader->getHeader(); - $csvColumnOptions = array_combine($csvColumns, $csvColumns); - - return array_map( - fn (ImportColumn $column): Select => $column->getSelect()->options($csvColumnOptions), - $action->getImporter()::getColumns(), - ); - }) - ->statePath('columnMap') - ->visible(fn (Forms\Get $get): bool => Arr::first((array) ($get('file') ?? [])) instanceof TemporaryUploadedFile), - ], $action->getImporter()::getOptionsFormComponents())); - - $this->action(function (ImportAction | ImportTableAction $action, array $data) { - /** @var TemporaryUploadedFile $csvFile */ - $csvFile = $data['file']; - - $csvStream = $this->getUploadedFileStream($csvFile); - - if (! $csvStream) { - return; - } - - $csvReader = CsvReader::createFromStream($csvStream); - - if (filled($csvDelimiter = $this->getCsvDelimiter($csvReader))) { - $csvReader->setDelimiter($csvDelimiter); - } - - $csvReader->setHeaderOffset(0); - $csvResults = Statement::create()->process($csvReader); - - $totalRows = $csvResults->count(); - $maxRows = $action->getMaxRows() ?? $totalRows; - - if ($maxRows < $totalRows) { - Notification::make() - ->title(__('filament-actions::import.notifications.max_rows.title')) - ->body(trans_choice('filament-actions::import.notifications.max_rows.body', $maxRows, [ - 'count' => format_number($maxRows), - ])) - ->success() - ->send(); - - return; - } - - $user = auth()->user(); - - $import = app(Import::class); - $import->user()->associate($user); - $import->file_name = $csvFile->getClientOriginalName(); - $import->file_path = $csvFile->getRealPath(); - $import->importer = $action->getImporter(); - $import->total_rows = $totalRows; - $import->save(); - - $importChunkIterator = new ChunkIterator($csvResults->getRecords(), chunkSize: $action->getChunkSize()); - - /** @var array>> $importChunks */ - $importChunks = $importChunkIterator->get(); - - $job = $action->getJob(); - - $options = array_merge( - $action->getOptions(), - Arr::except($data, ['file', 'columnMap']), - ); - - $importJobs = collect($importChunks) - ->map(fn (array $importChunk): object => new ($job)( - $import, - rows: base64_encode(serialize($importChunk)), - columnMap: $data['columnMap'], - options: $options, - )); - - $importer = $import->getImporter( - columnMap: $data['columnMap'], - options: $options, - ); - - Bus::batch($importJobs->all()) - ->allowFailures() - ->when( - filled($jobQueue = $importer->getJobQueue()), - fn (PendingBatch $batch) => $batch->onQueue($jobQueue), - ) - ->when( - filled($jobConnection = $importer->getJobConnection()), - fn (PendingBatch $batch) => $batch->onConnection($jobConnection), - ) - ->finally(function () use ($import) { - $import->touch('completed_at'); - - if (! $import->user instanceof Authenticatable) { - return; - } - - $failedRowsCount = $import->getFailedRowsCount(); - - Notification::make() - ->title(__('filament-actions::import.notifications.completed.title')) - ->body($import->importer::getCompletedNotificationBody($import)) - ->when( - ! $failedRowsCount, - fn (Notification $notification) => $notification->success(), - ) - ->when( - $failedRowsCount && ($failedRowsCount < $import->total_rows), - fn (Notification $notification) => $notification->warning(), - ) - ->when( - $failedRowsCount === $import->total_rows, - fn (Notification $notification) => $notification->danger(), - ) - ->when( - $failedRowsCount, - fn (Notification $notification) => $notification->actions([ - NotificationAction::make('downloadFailedRowsCsv') - ->label(trans_choice('filament-actions::import.notifications.completed.actions.download_failed_rows_csv.label', $failedRowsCount, [ - 'count' => format_number($failedRowsCount), - ])) - ->color('danger') - ->url(route('filament.imports.failed-rows.download', ['import' => $import], absolute: false), shouldOpenInNewTab: true) - ->markAsRead(), - ]), - ) - ->sendToDatabase($import->user); - }) - ->dispatch(); - - Notification::make() - ->title($action->getSuccessNotificationTitle()) - ->body(trans_choice('filament-actions::import.notifications.started.body', $import->total_rows, [ - 'count' => format_number($import->total_rows), - ])) - ->success() - ->send(); - }); - - $this->registerModalActions([ - (match (true) { - $this instanceof TableAction => TableAction::class, - default => Action::class, - })::make('downloadExample') - ->label(__('filament-actions::import.modal.actions.download_example.label')) - ->link() - ->action(function (): StreamedResponse { - $columns = $this->getImporter()::getColumns(); - - $csv = Writer::createFromFileObject(new SplTempFileObject()); - - if (filled($csvDelimiter = $this->getCsvDelimiter())) { - $csv->setDelimiter($csvDelimiter); - } - - $csv->insertOne(array_map( - fn (ImportColumn $column): string => $column->getName(), - $columns, - )); - - $example = array_map( - fn (ImportColumn $column) => $column->getExample(), - $columns, - ); - - if (array_filter( - $example, - fn ($value): bool => filled($value), - )) { - $csv->insertOne($example); - } - - return response()->streamDownload(function () use ($csv) { - echo $csv->toString(); - }, __('filament-actions::import.example_csv.file_name', ['importer' => (string) str($this->getImporter())->classBasename()->kebab()]), [ - 'Content-Type' => 'text/csv', - ]); - }), - ]); - - $this->color('gray'); - - $this->modalWidth('xl'); - - $this->successNotificationTitle(__('filament-actions::import.notifications.started.title')); - - $this->model(fn (ImportAction | ImportTableAction $action): string => $action->getImporter()::getModel()); - } - - /** - * @return resource | false - */ - public function getUploadedFileStream(TemporaryUploadedFile $file) - { - $filePath = $file->getRealPath(); - - if (config('filament.default_filesystem_disk') !== 's3') { - return fopen($filePath, mode: 'r'); - } - - /** @var AwsS3V3Adapter $s3Adapter */ - $s3Adapter = Storage::disk('s3')->getAdapter(); - - invade($s3Adapter)->client->registerStreamWrapper(); /** @phpstan-ignore-line */ - $fileS3Path = 's3://' . config('filesystems.disks.s3.bucket') . '/' . $filePath; - - return fopen($fileS3Path, mode: 'r', context: stream_context_create([ - 's3' => [ - 'seekable' => true, - ], - ])); - } - - public static function getDefaultName(): ?string - { - return 'import'; - } - - /** - * @param class-string $importer - */ - public function importer(string $importer): static - { - $this->importer = $importer; - - return $this; - } - - /** - * @param class-string | null $job - */ - public function job(?string $job): static - { - $this->job = $job; - - return $this; - } - - public function chunkSize(int | Closure $size): static - { - $this->chunkSize = $size; - - return $this; - } - - public function maxRows(int | Closure | null $rows): static - { - $this->maxRows = $rows; - - return $this; - } - - public function csvDelimiter(string | Closure | null $delimiter): static - { - $this->csvDelimiter = $delimiter; - - return $this; - } - - /** - * @return class-string - */ - public function getImporter(): string - { - return $this->importer; - } - - /** - * @return class-string - */ - public function getJob(): string - { - return $this->job ?? ImportCsv::class; - } - - public function getChunkSize(): int - { - return $this->evaluate($this->chunkSize); - } - - public function getMaxRows(): ?int - { - return $this->evaluate($this->maxRows); - } - - public function getCsvDelimiter(?CsvReader $reader = null): ?string - { - return $this->evaluate($this->csvDelimiter) ?? $this->guessCsvDelimiter($reader); - } - - protected function guessCsvDelimiter(?CsvReader $reader = null): ?string - { - if (! $reader) { - return null; - } - - $delimiterCounts = Info::getDelimiterStats($reader, delimiters: [',', ';', '|', "\t"], limit: 10); - - return array_search(max($delimiterCounts), $delimiterCounts); - } - - /** - * @param array | Closure $options - */ - public function options(array | Closure $options): static - { - $this->options = $options; - - return $this; - } - - /** - * @return array - */ - public function getOptions(): array - { - return $this->evaluate($this->options); - } -} diff --git a/vendor/filament/actions/src/Concerns/CanNotify.php b/vendor/filament/actions/src/Concerns/CanNotify.php deleted file mode 100644 index f23c2592..00000000 --- a/vendor/filament/actions/src/Concerns/CanNotify.php +++ /dev/null @@ -1,101 +0,0 @@ -evaluate($this->failureNotification, [ - 'notification' => Notification::make() - ->danger() - ->title($this->getFailureNotificationTitle()), - ]); - - if (filled($notification?->getTitle())) { - $notification->send(); - } - - return $this; - } - - public function failureNotification(Notification | Closure | null $notification): static - { - $this->failureNotification = $notification; - - return $this; - } - - /** - * @deprecated Use `failureNotificationTitle()` instead. - */ - public function failureNotificationMessage(string | Closure | null $message): static - { - return $this->failureNotificationTitle($message); - } - - public function failureNotificationTitle(string | Closure | null $title): static - { - $this->failureNotificationTitle = $title; - - return $this; - } - - public function sendSuccessNotification(): static - { - $notification = $this->evaluate($this->successNotification, [ - 'notification' => Notification::make() - ->success() - ->title($this->getSuccessNotificationTitle()), - ]); - - if (filled($notification?->getTitle())) { - $notification->send(); - } - - return $this; - } - - public function successNotification(Notification | Closure | null $notification): static - { - $this->successNotification = $notification; - - return $this; - } - - /** - * @deprecated Use `successNotificationTitle()` instead. - */ - public function successNotificationMessage(string | Closure | null $message): static - { - return $this->successNotificationTitle($message); - } - - public function successNotificationTitle(string | Closure | null $title): static - { - $this->successNotificationTitle = $title; - - return $this; - } - - public function getSuccessNotificationTitle(): ?string - { - return $this->evaluate($this->successNotificationTitle); - } - - public function getFailureNotificationTitle(): ?string - { - return $this->evaluate($this->failureNotificationTitle); - } -} diff --git a/vendor/filament/actions/src/Concerns/CanOpenModal.php b/vendor/filament/actions/src/Concerns/CanOpenModal.php deleted file mode 100644 index e2e77277..00000000 --- a/vendor/filament/actions/src/Concerns/CanOpenModal.php +++ /dev/null @@ -1,634 +0,0 @@ - - */ - protected array $cachedExtraModalFooterActions; - - /** - * @var array | Closure - */ - protected array | Closure $extraModalFooterActions = []; - - protected bool | Closure | null $isModalFooterSticky = null; - - protected bool | Closure | null $isModalHeaderSticky = null; - - /** - * @var array - */ - protected array $cachedModalActions; - - /** - * @var array - */ - protected array $modalActions = []; - - protected bool | Closure $isModalSlideOver = false; - - protected Alignment | string | Closure | null $modalAlignment = null; - - /** - * @var array - */ - protected array $cachedModalFooterActions; - - /** - * @var array | Closure | null - */ - protected array | Closure | null $modalFooterActions = null; - - protected Alignment | string | Closure | null $modalFooterActionsAlignment = null; - - protected StaticAction | bool | Closure | null $modalCancelAction = null; - - protected string | Closure | null $modalCancelActionLabel = null; - - protected StaticAction | bool | Closure | null $modalSubmitAction = null; - - protected string | Closure | null $modalSubmitActionLabel = null; - - protected View | Htmlable | Closure | null $modalContent = null; - - protected View | Htmlable | Closure | null $modalContentFooter = null; - - protected string | Htmlable | Closure | null $modalHeading = null; - - protected string | Htmlable | Closure | null $modalDescription = null; - - protected MaxWidth | string | Closure | null $modalWidth = null; - - protected bool | Closure | null $isModalHidden = false; - - protected bool | Closure | null $hasModalCloseButton = null; - - protected bool | Closure | null $isModalClosedByClickingAway = null; - - protected string | Closure | null $modalIcon = null; - - /** - * @var string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null - */ - protected string | array | Closure | null $modalIconColor = null; - - public function closeModalByClickingAway(bool | Closure | null $condition = true): static - { - $this->isModalClosedByClickingAway = $condition; - - return $this; - } - - /** - * @deprecated Use `modalAlignment(Alignment::Center)` instead. - */ - public function centerModal(bool | Closure | null $condition = true): static - { - if ($this->evaluate($condition)) { - $this->modalAlignment(Alignment::Center); - } - - return $this; - } - - public function modalAlignment(Alignment | string | Closure | null $alignment = null): static - { - $this->modalAlignment = $alignment; - - return $this; - } - - public function modalCloseButton(bool | Closure | null $condition = true): static - { - $this->hasModalCloseButton = $condition; - - return $this; - } - - public function modalIcon(string | Closure | null $icon = null): static - { - $this->modalIcon = $icon; - - return $this; - } - - /** - * @param string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null $color - */ - public function modalIconColor(string | array | Closure | null $color = null): static - { - $this->modalIconColor = $color; - - return $this; - } - - public function slideOver(bool | Closure $condition = true): static - { - $this->isModalSlideOver = $condition; - - return $this; - } - - /** - * @deprecated Use `modalFooterActions()` instead. - * - * @param array | Closure | null $actions - */ - public function modalActions(array | Closure | null $actions = null): static - { - $this->modalFooterActions($actions); - - return $this; - } - - /** - * @param array | Closure | null $actions - */ - public function modalFooterActions(array | Closure | null $actions = null): static - { - $this->modalFooterActions = $actions; - - return $this; - } - - public function modalFooterActionsAlignment(Alignment | string | Closure | null $alignment = null): static - { - $this->modalFooterActionsAlignment = $alignment; - - return $this; - } - - /** - * @deprecated Use `extraModalFooterActions()` instead. - * - * @param array | Closure $actions - */ - public function extraModalActions(array | Closure $actions): static - { - $this->extraModalFooterActions($actions); - - return $this; - } - - /** - * @param array | Closure $actions - */ - public function extraModalFooterActions(array | Closure $actions): static - { - $this->extraModalFooterActions = $actions; - - return $this; - } - - /** - * @param array $actions - */ - public function registerModalActions(array $actions): static - { - $this->modalActions = [ - ...$this->modalActions, - ...$actions, - ]; - - return $this; - } - - public function modalSubmitAction(StaticAction | bool | Closure | null $action = null): static - { - $this->modalSubmitAction = $action; - - return $this; - } - - public function modalCancelAction(StaticAction | bool | Closure | null $action = null): static - { - $this->modalCancelAction = $action; - - return $this; - } - - public function modalSubmitActionLabel(string | Closure | null $label = null): static - { - $this->modalSubmitActionLabel = $label; - - return $this; - } - - public function modalCancelActionLabel(string | Closure | null $label = null): static - { - $this->modalCancelActionLabel = $label; - - return $this; - } - - /** - * @deprecated Use `modalSubmitActionLabel()` instead. - */ - public function modalButton(string | Closure | null $label = null): static - { - $this->modalSubmitActionLabel($label); - - return $this; - } - - public function modalContent(View | Htmlable | Closure | null $content = null): static - { - $this->modalContent = $content; - - return $this; - } - - /** - * @deprecated Use `modalContentFooter()` instead. - */ - public function modalFooter(View | Htmlable | Closure | null $footer = null): static - { - return $this->modalContentFooter($footer); - } - - public function modalContentFooter(View | Htmlable | Closure | null $footer = null): static - { - $this->modalContentFooter = $footer; - - return $this; - } - - public function modalHeading(string | Htmlable | Closure | null $heading = null): static - { - $this->modalHeading = $heading; - - return $this; - } - - public function modalDescription(string | Htmlable | Closure | null $description = null): static - { - $this->modalDescription = $description; - - return $this; - } - - /** - * @deprecated Use `modalDescription()` instead. - */ - public function modalSubheading(string | Htmlable | Closure | null $subheading = null): static - { - $this->modalDescription($subheading); - - return $this; - } - - public function modalWidth(MaxWidth | string | Closure | null $width = null): static - { - $this->modalWidth = $width; - - return $this; - } - - public function getLivewireCallMountedActionName(): ?string - { - return null; - } - - public function modalHidden(bool | Closure | null $condition = false): static - { - $this->isModalHidden = $condition; - - return $this; - } - - /** - * @return array - */ - public function getModalFooterActions(): array - { - if ($this->isWizard()) { - return []; - } - - if (isset($this->cachedModalFooterActions)) { - return $this->cachedModalFooterActions; - } - - if ($this->modalFooterActions) { - $actions = []; - - foreach ($this->evaluate($this->modalFooterActions) as $action) { - $actions[$action->getName()] = $this->prepareModalAction($action); - } - - return $this->cachedModalFooterActions = $actions; - } - - $actions = []; - - if ($submitAction = $this->getModalSubmitAction()) { - $actions['submit'] = $submitAction; - } - - $actions = [ - ...$actions, - ...$this->getExtraModalFooterActions(), - ]; - - if ($cancelAction = $this->getModalCancelAction()) { - $actions['cancel'] = $cancelAction; - } - - if (in_array($this->getModalFooterActionsAlignment(), [Alignment::Center, 'center'])) { - $actions = array_reverse($actions); - } - - return $this->cachedModalFooterActions = $actions; - } - - public function getModalFooterActionsAlignment(): string | Alignment | null - { - return $this->evaluate($this->modalFooterActionsAlignment); - } - - /** - * @return array - */ - public function getModalActions(): array - { - if (isset($this->cachedModalActions)) { - return $this->cachedModalActions; - } - - $actions = $this->getModalFooterActions(); - - foreach ($this->modalActions as $action) { - $actions[$action->getName()] = $this->prepareModalAction($action); - } - - return $this->cachedModalActions = $actions; - } - - public function getModalAction(string $name): ?StaticAction - { - return $this->getModalActions()[$name] ?? null; - } - - public function getMountableModalAction(string $name): ?MountableAction - { - $action = $this->getModalAction($name); - - if (! $action) { - return null; - } - - if (! $action instanceof MountableAction) { - return null; - } - - return $action; - } - - public function prepareModalAction(StaticAction $action): StaticAction - { - if (! $action instanceof MountableAction) { - return $action; - } - - $action->livewire($this->getLivewire()); - - if ( - ($this instanceof HasRecord) && - ($action instanceof HasRecord) - ) { - $action->record($this->getRecord()); - } - - return $action; - } - - /** - * @return array - */ - public function getVisibleModalFooterActions(): array - { - return array_filter( - $this->getModalFooterActions(), - fn (StaticAction $action): bool => $action->isVisible(), - ); - } - - public function getModalSubmitAction(): ?StaticAction - { - $action = static::makeModalAction('submit') - ->label($this->getModalSubmitActionLabel()) - ->submit($this->getLivewireCallMountedActionName()) - ->color(match ($color = $this->getColor()) { - 'gray' => 'primary', - default => $color, - }); - - if ($this->modalSubmitAction !== null) { - $action = $this->evaluate($this->modalSubmitAction, ['action' => $action]) ?? $action; - } - - if ($action === false) { - return null; - } - - return $action; - } - - public function getModalCancelAction(): ?StaticAction - { - $action = static::makeModalAction('cancel') - ->label($this->getModalCancelActionLabel()) - ->close() - ->color('gray'); - - if ($this->modalCancelAction !== null) { - $action = $this->evaluate($this->modalCancelAction, ['action' => $action]) ?? $action; - } - - if ($action === false) { - return null; - } - - return $action; - } - - /** - * @return array - */ - public function getExtraModalFooterActions(): array - { - if (isset($this->cachedExtraModalFooterActions)) { - return $this->cachedExtraModalFooterActions; - } - - $actions = []; - - foreach ($this->evaluate($this->extraModalFooterActions) as $action) { - $actions[$action->getName()] = $this->prepareModalAction($action); - } - - return $this->cachedExtraModalFooterActions = $actions; - } - - public function getModalAlignment(): Alignment | string - { - return $this->evaluate($this->modalAlignment) ?? (in_array($this->getModalWidth(), [MaxWidth::ExtraSmall, MaxWidth::Small, 'xs', 'sm'])) ? Alignment::Center : Alignment::Start; - } - - public function getModalSubmitActionLabel(): string - { - return $this->evaluate($this->modalSubmitActionLabel) ?? __('filament-actions::modal.actions.submit.label'); - } - - public function getModalCancelActionLabel(): string - { - return $this->evaluate($this->modalCancelActionLabel) ?? __('filament-actions::modal.actions.cancel.label'); - } - - public function getModalContent(): View | Htmlable | null - { - return $this->evaluate($this->modalContent); - } - - public function getModalContentFooter(): View | Htmlable | null - { - return $this->evaluate($this->modalContentFooter); - } - - public function hasModalContent(): bool - { - return $this->modalContent !== null; - } - - public function hasModalContentFooter(): bool - { - return $this->modalContentFooter !== null; - } - - public function getCustomModalHeading(): string | Htmlable | null - { - return $this->evaluate($this->modalHeading); - } - - public function getModalHeading(): string | Htmlable - { - return $this->getCustomModalHeading() ?? $this->getLabel(); - } - - public function hasCustomModalHeading(): bool - { - return filled($this->getCustomModalHeading()); - } - - public function getModalDescription(): string | Htmlable | null - { - return $this->evaluate($this->modalDescription); - } - - public function hasModalDescription(): bool - { - return filled($this->getModalDescription()); - } - - public function getModalWidth(): MaxWidth | string - { - return $this->evaluate($this->modalWidth) ?? MaxWidth::FourExtraLarge; - } - - public function isModalFooterSticky(): bool - { - return (bool) ($this->evaluate($this->isModalFooterSticky) ?? $this->isModalSlideOver()); - } - - public function isModalHeaderSticky(): bool - { - return (bool) ($this->evaluate($this->isModalHeaderSticky) ?? $this->isModalSlideOver()); - } - - public function isModalSlideOver(): bool - { - return (bool) $this->evaluate($this->isModalSlideOver); - } - - public function isModalHidden(): bool - { - return (bool) $this->evaluate($this->isModalHidden); - } - - public function hasModalCloseButton(): bool - { - return $this->evaluate($this->hasModalCloseButton) ?? Modal::$hasCloseButton; - } - - public function isModalClosedByClickingAway(): bool - { - return (bool) ($this->evaluate($this->isModalClosedByClickingAway) ?? Modal::$isClosedByClickingAway); - } - - /** - * @deprecated Use `makeModalSubmitAction()` instead. - * - * @param array | null $arguments - */ - public function makeExtraModalAction(string $name, ?array $arguments = null): StaticAction - { - return $this->makeModalSubmitAction($name, $arguments); - } - - /** - * @param array | null $arguments - */ - public function makeModalSubmitAction(string $name, ?array $arguments = null): StaticAction - { - return static::makeModalAction($name) - ->callParent($this->getLivewireCallMountedActionName()) - ->arguments($arguments) - ->color('gray'); - } - - public function makeModalAction(string $name): StaticAction - { - return StaticAction::make($name) - ->button(); - } - - public function getModalIcon(): ?string - { - return $this->evaluate($this->modalIcon); - } - - /** - * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | null - */ - public function getModalIconColor(): string | array | null - { - return $this->evaluate($this->modalIconColor) ?? $this->getColor() ?? 'primary'; - } - - public function stickyModalFooter(bool | Closure $condition = true): static - { - $this->isModalFooterSticky = $condition; - - return $this; - } - - public function stickyModalHeader(bool | Closure $condition = true): static - { - $this->isModalHeaderSticky = $condition; - - return $this; - } -} diff --git a/vendor/filament/actions/src/Concerns/CanOpenUrl.php b/vendor/filament/actions/src/Concerns/CanOpenUrl.php deleted file mode 100644 index bb87eb38..00000000 --- a/vendor/filament/actions/src/Concerns/CanOpenUrl.php +++ /dev/null @@ -1,37 +0,0 @@ -shouldOpenUrlInNewTab = $condition; - - return $this; - } - - public function url(string | Closure | null $url, bool | Closure $shouldOpenInNewTab = false): static - { - $this->openUrlInNewTab($shouldOpenInNewTab); - $this->url = $url; - - return $this; - } - - public function getUrl(): ?string - { - return $this->evaluate($this->url); - } - - public function shouldOpenUrlInNewTab(): bool - { - return (bool) $this->evaluate($this->shouldOpenUrlInNewTab); - } -} diff --git a/vendor/filament/actions/src/Concerns/CanRedirect.php b/vendor/filament/actions/src/Concerns/CanRedirect.php deleted file mode 100644 index 71c8e5b7..00000000 --- a/vendor/filament/actions/src/Concerns/CanRedirect.php +++ /dev/null @@ -1,58 +0,0 @@ -evaluate($this->failureRedirectUrl); - - if (filled($url)) { - $this->redirect($url); - } - - return $this; - } - - public function dispatchSuccessRedirect(): static - { - $url = $this->evaluate($this->successRedirectUrl); - - if (filled($url)) { - $this->redirect($url); - } - - return $this; - } - - public function redirect(string | Closure $url): void - { - $url = $this->evaluate($url); - - $this->getLivewire()->redirect($url, navigate: FilamentView::hasSpaMode() && is_app_url($url)); - } - - public function failureRedirectUrl(string | Closure | null $url): static - { - $this->failureRedirectUrl = $url; - - return $this; - } - - public function successRedirectUrl(string | Closure | null $url): static - { - $this->successRedirectUrl = $url; - - return $this; - } -} diff --git a/vendor/filament/actions/src/Concerns/CanReplicateRecords.php b/vendor/filament/actions/src/Concerns/CanReplicateRecords.php deleted file mode 100644 index f11030ca..00000000 --- a/vendor/filament/actions/src/Concerns/CanReplicateRecords.php +++ /dev/null @@ -1,129 +0,0 @@ - | Closure | null - */ - protected array | Closure | null $excludedAttributes = null; - - protected ?Model $replica = null; - - protected ?Closure $mutateRecordDataUsing = null; - - public static function getDefaultName(): ?string - { - return 'replicate'; - } - - protected function setUp(): void - { - parent::setUp(); - - $this->label(__('filament-actions::replicate.single.label')); - - $this->modalHeading(fn (): string => __('filament-actions::replicate.single.modal.heading', ['label' => $this->getRecordTitle()])); - - $this->modalSubmitActionLabel(__('filament-actions::replicate.single.modal.actions.replicate.label')); - - $this->successNotificationTitle(__('filament-actions::replicate.single.notifications.replicated.title')); - - $this->fillForm(function (Model $record): array { - $data = $record->attributesToArray(); - - if ($this->mutateRecordDataUsing) { - $data = $this->evaluate($this->mutateRecordDataUsing, ['data' => $data]); - } - - return $data; - }); - - $this->action(function () { - $result = $this->process(function (Model $record) { - $this->replica = $record->replicate($this->getExcludedAttributes()); - - $this->callBeforeReplicaSaved(); - - $this->replica->save(); - }); - - try { - return $result; - } finally { - $this->success(); - } - }); - } - - public function beforeReplicaSaved(Closure $callback): static - { - $this->beforeReplicaSaved = $callback; - - return $this; - } - - public function mutateRecordDataUsing(?Closure $callback): static - { - $this->mutateRecordDataUsing = $callback; - - return $this; - } - - /** - * @deprecated Use `after()` instead. - */ - public function afterReplicaSaved(Closure $callback): static - { - $this->after($callback); - - return $this; - } - - /** - * @param array | Closure | null $attributes - */ - public function excludeAttributes(array | Closure | null $attributes): static - { - $this->excludedAttributes = $attributes; - - return $this; - } - - public function callBeforeReplicaSaved(): void - { - $this->evaluate($this->beforeReplicaSaved); - } - - /** - * @return array | null - */ - public function getExcludedAttributes(): ?array - { - return $this->evaluate($this->excludedAttributes); - } - - public function getReplica(): ?Model - { - return $this->replica; - } - - /** - * @return array - */ - protected function resolveDefaultClosureDependencyForEvaluationByName(string $parameterName): array - { - return match ($parameterName) { - 'replica' => [$this->getReplica()], - default => parent::resolveDefaultClosureDependencyForEvaluationByName($parameterName), - }; - } -} diff --git a/vendor/filament/actions/src/Concerns/CanRequireConfirmation.php b/vendor/filament/actions/src/Concerns/CanRequireConfirmation.php deleted file mode 100644 index 4fd7cbbc..00000000 --- a/vendor/filament/actions/src/Concerns/CanRequireConfirmation.php +++ /dev/null @@ -1,26 +0,0 @@ -modalAlignment(fn (MountableAction $action): ?Alignment => $action->evaluate($condition) ? Alignment::Center : null); - $this->modalFooterActionsAlignment(fn (MountableAction $action): ?Alignment => $action->evaluate($condition) ? Alignment::Center : null); - $this->modalIcon(fn (MountableAction $action): ?string => $action->evaluate($condition) ? (FilamentIcon::resolve('actions::modal.confirmation') ?? 'heroicon-o-exclamation-triangle') : null); - $this->modalHeading ??= fn (MountableAction $action): string | Htmlable | null => $action->evaluate($condition) ? $action->getLabel() : null; - $this->modalDescription(fn (MountableAction $action): ?string => $action->evaluate($condition) ? __('filament-actions::modal.confirmation') : null); - $this->modalSubmitActionLabel(fn (MountableAction $action): ?string => $action->evaluate($condition) ? __('filament-actions::modal.actions.confirm.label') : null); - $this->modalWidth(fn (MountableAction $action): ?MaxWidth => $action->evaluate($condition) ? MaxWidth::Medium : null); - - return $this; - } -} diff --git a/vendor/filament/actions/src/Concerns/CanSubmitForm.php b/vendor/filament/actions/src/Concerns/CanSubmitForm.php deleted file mode 100644 index 5e0e703b..00000000 --- a/vendor/filament/actions/src/Concerns/CanSubmitForm.php +++ /dev/null @@ -1,28 +0,0 @@ -canSubmitForm = filled($form); - $this->formToSubmit = $form; - - return $this; - } - - public function canSubmitForm(): bool - { - return $this->canSubmitForm; - } - - public function getFormToSubmit(): ?string - { - return $this->formToSubmit; - } -} diff --git a/vendor/filament/actions/src/Concerns/HasAction.php b/vendor/filament/actions/src/Concerns/HasAction.php deleted file mode 100644 index d7831ede..00000000 --- a/vendor/filament/actions/src/Concerns/HasAction.php +++ /dev/null @@ -1,52 +0,0 @@ -action = $action; - - return $this; - } - - public function livewireClickHandlerEnabled(bool | Closure | null $condition = true): static - { - $this->isLivewireClickHandlerEnabled = $condition; - - return $this; - } - - public function getActionFunction(): ?Closure - { - if (! $this->action instanceof Closure) { - return null; - } - - return $this->action; - } - - public function isLivewireClickHandlerEnabled(): bool - { - if (($isLivewireClickHandlerEnabled = $this->evaluate($this->isLivewireClickHandlerEnabled)) !== null) { - return (bool) $isLivewireClickHandlerEnabled; - } - - if (filled($this->getUrl())) { - return false; - } - - if ($this->canSubmitForm()) { - return false; - } - - return true; - } -} diff --git a/vendor/filament/actions/src/Concerns/HasArguments.php b/vendor/filament/actions/src/Concerns/HasArguments.php deleted file mode 100644 index c0a70806..00000000 --- a/vendor/filament/actions/src/Concerns/HasArguments.php +++ /dev/null @@ -1,61 +0,0 @@ - | null - */ - protected ?array $arguments = null; - - /** - * @param array | null $arguments - */ - public function arguments(?array $arguments): static - { - if ($arguments === null) { - $this->arguments = null; - - return $this; - } - - $this->arguments = []; - $this->mergeArguments($arguments); - - return $this; - } - - /** - * @param array $arguments - */ - public function mergeArguments(array $arguments): static - { - $this->arguments = [ - ...$this->arguments ?? [], - ...$arguments, - ]; - - return $this; - } - - /** - * @return array - */ - public function getArguments(): array - { - return $this->arguments ?? []; - } - - public function resetArguments(): static - { - $this->arguments(null); - - return $this; - } - - public function hasArguments(): bool - { - return $this->arguments !== null; - } -} diff --git a/vendor/filament/actions/src/Concerns/HasDropdown.php b/vendor/filament/actions/src/Concerns/HasDropdown.php deleted file mode 100644 index e8deee41..00000000 --- a/vendor/filament/actions/src/Concerns/HasDropdown.php +++ /dev/null @@ -1,79 +0,0 @@ -hasDropdown = $condition; - - return $this; - } - - public function dropdownPlacement(string | Closure | null $placement): static - { - $this->dropdownPlacement = $placement; - - return $this; - } - - public function dropdownMaxHeight(string | Closure | null $height): static - { - $this->dropdownMaxHeight = $height; - - return $this; - } - - public function dropdownOffset(int | Closure | null $offset): static - { - $this->dropdownOffset = $offset; - - return $this; - } - - public function dropdownWidth(MaxWidth | string | Closure | null $width): static - { - $this->dropdownWidth = $width; - - return $this; - } - - public function getDropdownPlacement(): ?string - { - return $this->evaluate($this->dropdownPlacement); - } - - public function getDropdownMaxHeight(): ?string - { - return $this->evaluate($this->dropdownMaxHeight); - } - - public function getDropdownOffset(): ?int - { - return $this->evaluate($this->dropdownOffset); - } - - public function getDropdownWidth(): MaxWidth | string | null - { - return $this->evaluate($this->dropdownWidth); - } - - public function hasDropdown(): bool - { - return (bool) $this->evaluate($this->hasDropdown); - } -} diff --git a/vendor/filament/actions/src/Concerns/HasForm.php b/vendor/filament/actions/src/Concerns/HasForm.php deleted file mode 100644 index ec44d8da..00000000 --- a/vendor/filament/actions/src/Concerns/HasForm.php +++ /dev/null @@ -1,138 +0,0 @@ - - */ - protected array $formData = []; - - /** - * @var array | Closure | null - */ - protected array | Closure | null $form = null; - - protected bool | Closure $isFormDisabled = false; - - protected ?Closure $mutateFormDataUsing = null; - - /** - * @deprecated Use `disabledForm() instead. - */ - public function disableForm(bool | Closure $condition = true): static - { - $this->disabledForm($condition); - - return $this; - } - - public function disabledForm(bool | Closure $condition = true): static - { - $this->isFormDisabled = $condition; - - return $this; - } - - /** - * @param array | Closure | null $form - */ - public function form(array | Closure | null $form): static - { - $this->form = $form; - - return $this; - } - - public function getForm(Form $form): ?Form - { - $modifiedForm = $this->evaluate($this->form, [ - 'form' => $form, - ]); - - if ($modifiedForm === null) { - return null; - } - - if (is_array($modifiedForm) && (! count($modifiedForm))) { - return null; - } - - if (is_array($modifiedForm) && $this->isWizard()) { - $wizard = Wizard::make($modifiedForm) - ->contained(false) - ->startOnStep($this->getWizardStartStep()) - ->cancelAction($this->getModalCancelAction()) - ->submitAction($this->getModalSubmitAction()) - ->skippable($this->isWizardSkippable()) - ->disabled($this->isFormDisabled()); - - if ($this->modifyWizardUsing) { - $wizard = $this->evaluate($this->modifyWizardUsing, [ - 'wizard' => $wizard, - ]) ?? $wizard; - } - - $modifiedForm = [$wizard]; - } - - if (is_array($modifiedForm)) { - $modifiedForm = $form->schema($modifiedForm); - } - - if ($this->isFormDisabled()) { - return $modifiedForm->disabled(); - } - - return $modifiedForm; - } - - public function mutateFormDataUsing(?Closure $callback): static - { - $this->mutateFormDataUsing = $callback; - - return $this; - } - - /** - * @param array $data - */ - public function formData(array $data, bool $shouldMutate = true): static - { - if ($shouldMutate && $this->mutateFormDataUsing) { - $data = $this->evaluate($this->mutateFormDataUsing, [ - 'data' => $data, - ]); - } - - $this->formData = $data; - - return $this; - } - - public function resetFormData(): static - { - $this->formData([], shouldMutate: false); - - return $this; - } - - /** - * @return array - */ - public function getFormData(): array - { - return $this->formData; - } - - public function isFormDisabled(): bool - { - return (bool) $this->evaluate($this->isFormDisabled); - } -} diff --git a/vendor/filament/actions/src/Concerns/HasGroupedIcon.php b/vendor/filament/actions/src/Concerns/HasGroupedIcon.php deleted file mode 100644 index b2c6208b..00000000 --- a/vendor/filament/actions/src/Concerns/HasGroupedIcon.php +++ /dev/null @@ -1,22 +0,0 @@ -groupedIcon = $icon; - - return $this; - } - - public function getGroupedIcon(): ?string - { - return $this->evaluate($this->groupedIcon) ?? $this->getIcon(); - } -} diff --git a/vendor/filament/actions/src/Concerns/HasId.php b/vendor/filament/actions/src/Concerns/HasId.php deleted file mode 100644 index da21cf85..00000000 --- a/vendor/filament/actions/src/Concerns/HasId.php +++ /dev/null @@ -1,20 +0,0 @@ -id = $id; - - return $this; - } - - public function getId(): string - { - return $this->id ?? $this->getName(); - } -} diff --git a/vendor/filament/actions/src/Concerns/HasInfolist.php b/vendor/filament/actions/src/Concerns/HasInfolist.php deleted file mode 100644 index 4f0e76bb..00000000 --- a/vendor/filament/actions/src/Concerns/HasInfolist.php +++ /dev/null @@ -1,65 +0,0 @@ - | Closure | null - */ - protected array | Closure | null $infolist = null; - - /** - * @param array | Closure | null $infolist - */ - public function infolist(array | Closure | null $infolist): static - { - $this->infolist = $infolist; - - return $this; - } - - public function getInfolist(): ?Infolist - { - $infolistName = $this->getInfolistName(); - - if (blank($infolistName)) { - return null; - } - - $infolist = Infolist::make($this->getLivewire()) - ->name($infolistName); - - if ($this instanceof HasRecord) { - $infolist->record($this->getRecord()); - } - - $modifiedInfolist = $this->evaluate($this->infolist, [ - 'infolist' => $infolist, - ]); - - if ($modifiedInfolist === null) { - return null; - } - - if (is_array($modifiedInfolist) && (! count($modifiedInfolist))) { - return null; - } - - if (is_array($modifiedInfolist)) { - $modifiedInfolist = $infolist->schema($modifiedInfolist); - } - - return $modifiedInfolist; - } - - public function getInfolistName(): ?string - { - return null; - } -} diff --git a/vendor/filament/actions/src/Concerns/HasKeyBindings.php b/vendor/filament/actions/src/Concerns/HasKeyBindings.php deleted file mode 100644 index 6c87c961..00000000 --- a/vendor/filament/actions/src/Concerns/HasKeyBindings.php +++ /dev/null @@ -1,34 +0,0 @@ - | Closure | null - */ - protected string | array | Closure | null $keyBindings = null; - - /** - * @param string | array | Closure | null $bindings - */ - public function keyBindings(string | array | Closure | null $bindings): static - { - $this->keyBindings = $bindings; - - return $this; - } - - /** - * @return array | null - */ - public function getKeyBindings(): ?array - { - $keyBindings = Arr::wrap($this->evaluate($this->keyBindings)); - - return count($keyBindings) ? $keyBindings : null; - } -} diff --git a/vendor/filament/actions/src/Concerns/HasLabel.php b/vendor/filament/actions/src/Concerns/HasLabel.php deleted file mode 100644 index f6e03a60..00000000 --- a/vendor/filament/actions/src/Concerns/HasLabel.php +++ /dev/null @@ -1,64 +0,0 @@ -hiddenLabel($condition); - - return $this; - } - - public function hiddenLabel(bool | Closure $condition = true): static - { - $this->isLabelHidden = $condition; - - return $this; - } - - public function label(string | Htmlable | Closure | null $label): static - { - $this->label = $label; - - return $this; - } - - public function translateLabel(bool $shouldTranslateLabel = true): static - { - $this->shouldTranslateLabel = $shouldTranslateLabel; - - return $this; - } - - public function getLabel(): string | Htmlable | null - { - $label = $this->evaluate($this->label) ?? (string) str($this->getName()) - ->before('.') - ->kebab() - ->replace(['-', '_'], ' ') - ->ucfirst(); - - return is_string($label) && $this->shouldTranslateLabel - ? __($label) - : $label; - } - - public function isLabelHidden(): bool - { - return (bool) $this->evaluate($this->isLabelHidden); - } -} diff --git a/vendor/filament/actions/src/Concerns/HasLifecycleHooks.php b/vendor/filament/actions/src/Concerns/HasLifecycleHooks.php deleted file mode 100644 index fe007094..00000000 --- a/vendor/filament/actions/src/Concerns/HasLifecycleHooks.php +++ /dev/null @@ -1,92 +0,0 @@ -before = $callback; - - return $this; - } - - public function after(Closure $callback): static - { - $this->after = $callback; - - return $this; - } - - public function beforeFormFilled(Closure $callback): static - { - $this->beforeFormFilled = $callback; - - return $this; - } - - public function afterFormFilled(Closure $callback): static - { - $this->afterFormFilled = $callback; - - return $this; - } - - public function beforeFormValidated(Closure $callback): static - { - $this->beforeFormValidated = $callback; - - return $this; - } - - public function afterFormValidated(Closure $callback): static - { - $this->afterFormValidated = $callback; - - return $this; - } - - public function callBefore(): mixed - { - return $this->evaluate($this->before); - } - - public function callAfter(): mixed - { - return $this->evaluate($this->after); - } - - public function callBeforeFormFilled(): mixed - { - return $this->evaluate($this->beforeFormFilled); - } - - public function callAfterFormFilled(): mixed - { - return $this->evaluate($this->afterFormFilled); - } - - public function callBeforeFormValidated(): mixed - { - return $this->evaluate($this->beforeFormValidated); - } - - public function callAfterFormValidated(): mixed - { - return $this->evaluate($this->afterFormValidated); - } -} diff --git a/vendor/filament/actions/src/Concerns/HasMountableArguments.php b/vendor/filament/actions/src/Concerns/HasMountableArguments.php deleted file mode 100644 index 0b15af54..00000000 --- a/vendor/filament/actions/src/Concerns/HasMountableArguments.php +++ /dev/null @@ -1,21 +0,0 @@ - $arguments - */ - public function __invoke(array $arguments): static - { - // Clone the action so that we don't accidentally mutate - // the cached action's arguments while rendering it, - // especially if it's mounted with different arguments. - $action = clone $this; - - $action->arguments($arguments); - - return $action; - } -} diff --git a/vendor/filament/actions/src/Concerns/HasName.php b/vendor/filament/actions/src/Concerns/HasName.php deleted file mode 100644 index 43bc4458..00000000 --- a/vendor/filament/actions/src/Concerns/HasName.php +++ /dev/null @@ -1,28 +0,0 @@ -name = $name; - - return $this; - } - - public function getName(): ?string - { - if (blank($this->name)) { - $actionClass = static::class; - - throw new Exception("Action of class [$actionClass] must have a unique name, passed to the [make()] method."); - } - - return $this->name; - } -} diff --git a/vendor/filament/actions/src/Concerns/HasParentActions.php b/vendor/filament/actions/src/Concerns/HasParentActions.php deleted file mode 100644 index 6263b91b..00000000 --- a/vendor/filament/actions/src/Concerns/HasParentActions.php +++ /dev/null @@ -1,27 +0,0 @@ -cancelParentActions = $toAction; - - return $this; - } - - public function shouldCancelAllParentActions(): bool - { - return $this->evaluate($this->cancelParentActions) === true; - } - - public function getParentActionToCancelTo(): ?string - { - return $this->evaluate($this->cancelParentActions); - } -} diff --git a/vendor/filament/actions/src/Concerns/HasSelect.php b/vendor/filament/actions/src/Concerns/HasSelect.php deleted file mode 100644 index 32c6f4f7..00000000 --- a/vendor/filament/actions/src/Concerns/HasSelect.php +++ /dev/null @@ -1,75 +0,0 @@ - | Arrayable | string | Closure - */ - protected array | Arrayable | string | Closure $options = []; - - protected ?string $placeholder = null; - - /** - * @param array | Arrayable | string | Closure $options - */ - public function options(array | Arrayable | string | Closure $options): static - { - $this->options = $options; - - return $this; - } - - public function placeholder(string $placeholder): static - { - $this->placeholder = $placeholder; - - return $this; - } - - /** - * @return array - */ - public function getOptions(): array - { - $options = $this->evaluate($this->options) ?? []; - - if ( - is_string($options) && - enum_exists($enum = $options) - ) { - if (is_a($enum, LabelInterface::class, allow_string: true)) { - return array_reduce($enum::cases(), function (array $carry, LabelInterface & UnitEnum $case): array { - $carry[$case?->value ?? $case->name] = $case->getLabel() ?? $case->name; - - return $carry; - }, []); - } - - return array_reduce($enum::cases(), function (array $carry, UnitEnum $case): array { - $carry[$case?->value ?? $case->name] = $case->name; - - return $carry; - }, []); - } - - if ($options instanceof Arrayable) { - $options = $options->toArray(); - } - - return $options; - } - - public function getPlaceholder(): ?string - { - return $this->placeholder; - } -} diff --git a/vendor/filament/actions/src/Concerns/HasSize.php b/vendor/filament/actions/src/Concerns/HasSize.php deleted file mode 100644 index b0a51354..00000000 --- a/vendor/filament/actions/src/Concerns/HasSize.php +++ /dev/null @@ -1,37 +0,0 @@ -defaultSize = $size; - - return $this; - } - - public function size(ActionSize | string | Closure | null $size): static - { - $this->size = $size; - - return $this; - } - - public function getDefaultSize(): ActionSize | string | null - { - return $this->evaluate($this->defaultSize); - } - - public function getSize(): ActionSize | string | null - { - return $this->evaluate($this->size) ?? $this->getDefaultSize(); - } -} diff --git a/vendor/filament/actions/src/Concerns/HasTooltip.php b/vendor/filament/actions/src/Concerns/HasTooltip.php deleted file mode 100644 index 25daa287..00000000 --- a/vendor/filament/actions/src/Concerns/HasTooltip.php +++ /dev/null @@ -1,22 +0,0 @@ -tooltip = $tooltip; - - return $this; - } - - public function getTooltip(): ?string - { - return $this->evaluate($this->tooltip); - } -} diff --git a/vendor/filament/actions/src/Concerns/HasWizard.php b/vendor/filament/actions/src/Concerns/HasWizard.php deleted file mode 100644 index 72ae34a4..00000000 --- a/vendor/filament/actions/src/Concerns/HasWizard.php +++ /dev/null @@ -1,65 +0,0 @@ - | Closure $steps - */ - public function steps(array | Closure $steps): static - { - $this->isWizard = true; - $this->form($steps); - - return $this; - } - - public function startOnStep(int | Closure $startStep): static - { - $this->wizardStartStep = $startStep; - - return $this; - } - - public function skippableSteps(bool | Closure $condition = true): static - { - $this->isWizardSkippable = $condition; - - return $this; - } - - public function isWizard(): bool - { - return $this->isWizard; - } - - public function isWizardSkippable(): bool - { - return (bool) $this->evaluate($this->isWizardSkippable); - } - - public function modifyWizardUsing(?Closure $callback): static - { - $this->isWizard = true; - $this->modifyWizardUsing = $callback; - - return $this; - } - - public function getWizardStartStep(): int - { - return $this->evaluate($this->wizardStartStep); - } -} diff --git a/vendor/filament/actions/src/Concerns/InteractsWithActions.php b/vendor/filament/actions/src/Concerns/InteractsWithActions.php deleted file mode 100644 index 80c417fe..00000000 --- a/vendor/filament/actions/src/Concerns/InteractsWithActions.php +++ /dev/null @@ -1,463 +0,0 @@ - | null - */ - public ?array $mountedActions = []; - - /** - * @var array> | null - */ - public ?array $mountedActionsArguments = []; - - /** - * @var array> | null - */ - public ?array $mountedActionsData = []; - - /** - * @var mixed - */ - #[Url(as: 'action')] - public $defaultAction = null; - - /** - * @var mixed - */ - #[Url(as: 'actionArguments')] - public $defaultActionArguments = null; - - /** - * @var array - */ - protected array $cachedActions = []; - - protected bool $hasActionsModalRendered = false; - - /** - * @param array $arguments - */ - public function callMountedAction(array $arguments = []): mixed - { - $action = $this->getMountedAction(); - - if (! $action) { - return null; - } - - if ($action->isDisabled()) { - return null; - } - - $action->mergeArguments($arguments); - - $form = $this->getMountedActionForm(); - - $result = null; - - $originallyMountedActions = $this->mountedActions; - - try { - if ($this->mountedActionHasForm()) { - $action->callBeforeFormValidated(); - - $action->formData($form->getState()); - - $action->callAfterFormValidated(); - } - - $action->callBefore(); - - $result = $action->call([ - 'form' => $form, - ]); - - $result = $action->callAfter() ?? $result; - - $this->afterActionCalled(); - } catch (Halt $exception) { - return null; - } catch (Cancel $exception) { - } catch (ValidationException $exception) { - if (! $this->mountedActionShouldOpenModal()) { - $action->resetArguments(); - $action->resetFormData(); - - $this->unmountAction(); - } - - throw $exception; - } - - if (store($this)->has('redirect')) { - return $result; - } - - $action->resetArguments(); - $action->resetFormData(); - - // If the action was replaced while it was being called, - // we don't want to unmount it. - if ($originallyMountedActions !== $this->mountedActions) { - $action->clearRecordAfter(); - - return null; - } - - $this->unmountAction(); - - return $result; - } - - protected function afterActionCalled(): void - { - } - - /** - * @param array $arguments - */ - public function mountAction(string $name, array $arguments = []): mixed - { - $this->mountedActions[] = $name; - $this->mountedActionsArguments[] = $arguments; - $this->mountedActionsData[] = []; - - $action = $this->getMountedAction(); - - if (! $action) { - $this->unmountAction(); - - return null; - } - - if ($action->isDisabled()) { - $this->unmountAction(); - - return null; - } - - $this->cacheMountedActionForm(); - - try { - $hasForm = $this->mountedActionHasForm(); - - if ($hasForm) { - $action->callBeforeFormFilled(); - } - - $action->mount([ - 'form' => $this->getMountedActionForm(), - ]); - - if ($hasForm) { - $action->callAfterFormFilled(); - } - } catch (Halt $exception) { - return null; - } catch (Cancel $exception) { - $this->unmountAction(shouldCancelParentActions: false); - - return null; - } - - if (! $this->mountedActionShouldOpenModal()) { - return $this->callMountedAction(); - } - - $this->resetErrorBag(); - - $this->openActionModal(); - - return null; - } - - /** - * @param array $arguments - */ - public function replaceMountedAction(string $name, array $arguments = []): void - { - $this->resetMountedActionProperties(); - $this->mountAction($name, $arguments); - } - - public function mountedActionShouldOpenModal(): bool - { - $action = $this->getMountedAction(); - - if ($action->isModalHidden()) { - return false; - } - - return $action->hasCustomModalHeading() || - $action->hasModalDescription() || - $action->hasModalContent() || - $action->hasModalContentFooter() || - $action->getInfolist() || - $this->mountedActionHasForm(); - } - - public function mountedActionHasForm(): bool - { - return (bool) count($this->getMountedActionForm()?->getComponents() ?? []); - } - - public function cacheAction(Action $action): Action - { - $action->livewire($this); - - return $this->cachedActions[$action->getName()] = $action; - } - - /** - * @param array $actions - */ - protected function mergeCachedActions(array $actions): void - { - $this->cachedActions = [ - ...$this->cachedActions, - ...$actions, - ]; - } - - protected function configureAction(Action $action): void - { - } - - public function getMountedAction(): ?Action - { - if (! count($this->mountedActions ?? [])) { - return null; - } - - return $this->getAction($this->mountedActions); - } - - /** - * @return array - */ - protected function getInteractsWithActionsForms(): array - { - return [ - 'mountedActionForm' => $this->getMountedActionForm(), - ]; - } - - public function getMountedActionForm(): ?Forms\Form - { - $action = $this->getMountedAction(); - - if (! $action) { - return null; - } - - if ((! $this->isCachingForms) && $this->hasCachedForm('mountedActionForm')) { - return $this->getForm('mountedActionForm'); - } - - return $action->getForm( - $this->makeForm() - ->statePath('mountedActionsData.' . array_key_last($this->mountedActionsData)) - ->model($action->getRecord() ?? $action->getModel() ?? $this->getMountedActionFormModel()) - ->operation(implode('.', $this->mountedActions)), - ); - } - - protected function getMountedActionFormModel(): Model | string | null - { - return null; - } - - /** - * @param string | array $name - */ - public function getAction(string | array $name): ?Action - { - if (is_string($name) && str($name)->contains('.')) { - $name = explode('.', $name); - } - - if (is_array($name)) { - $firstName = array_shift($name); - $modalActionNames = $name; - - $name = $firstName; - } - - if ($action = $this->cachedActions[$name] ?? null) { - return $this->getMountableModalActionFromAction( - $action, - modalActionNames: $modalActionNames ?? [], - ); - } - - if ( - (! str($name)->endsWith('Action')) && - method_exists($this, "{$name}Action") - ) { - $methodName = "{$name}Action"; - } elseif (method_exists($this, $name)) { - $methodName = $name; - } else { - return null; - } - - $action = Action::configureUsing( - Closure::fromCallable([$this, 'configureAction']), - fn () => $this->{$methodName}(), - ); - - if (! $action instanceof Action) { - throw new InvalidArgumentException('Actions must be an instance of ' . Action::class . ". The [{$methodName}] method on the Livewire component returned an instance of [" . get_class($action) . '].'); - } - - return $this->getMountableModalActionFromAction( - $this->cacheAction($action), - modalActionNames: $modalActionNames ?? [], - ); - } - - /** - * @param array $modalActionNames - */ - protected function getMountableModalActionFromAction(Action $action, array $modalActionNames): ?Action - { - $arguments = $this->mountedActionsArguments; - - if ( - (($actionArguments = array_shift($arguments)) !== null) && - (! $action->hasArguments()) - ) { - $action->arguments($actionArguments); - } - - foreach ($modalActionNames as $modalActionName) { - $action = $action->getMountableModalAction($modalActionName); - - if (! $action) { - return null; - } - - if ( - (($actionArguments = array_shift($arguments)) !== null) && - (! $action->hasArguments()) - ) { - $action->arguments($actionArguments); - } - } - - if (! $action instanceof Action) { - return null; - } - - return $action; - } - - protected function popMountedAction(): ?string - { - try { - return array_pop($this->mountedActions); - } finally { - array_pop($this->mountedActionsArguments); - array_pop($this->mountedActionsData); - } - } - - protected function resetMountedActionProperties(): void - { - $this->mountedActions = []; - $this->mountedActionsArguments = []; - $this->mountedActionsData = []; - } - - public function unmountAction(bool $shouldCancelParentActions = true): void - { - $action = $this->getMountedAction(); - - if (! ($shouldCancelParentActions && $action)) { - $this->popMountedAction(); - } elseif ($action->shouldCancelAllParentActions()) { - $this->resetMountedActionProperties(); - } else { - $parentActionToCancelTo = $action->getParentActionToCancelTo(); - - while (true) { - $recentlyClosedParentAction = $this->popMountedAction(); - - if ( - blank($parentActionToCancelTo) || - ($recentlyClosedParentAction === $parentActionToCancelTo) - ) { - break; - } - } - } - - if (! count($this->mountedActions)) { - $this->closeActionModal(); - - $action?->clearRecordAfter(); - - // Setting these to `null` creates a bug where the properties are - // actually set to `'null'` strings and remain in the URL. - $this->defaultAction = []; - $this->defaultActionArguments = []; - - return; - } - - $this->cacheMountedActionForm(); - - $this->resetErrorBag(); - - $this->openActionModal(); - } - - protected function cacheMountedActionForm(): void - { - $this->cacheForm( - 'mountedActionForm', - fn () => $this->getMountedActionForm(), - ); - } - - protected function closeActionModal(): void - { - $this->dispatch('close-modal', id: "{$this->getId()}-action"); - } - - protected function openActionModal(): void - { - $this->dispatch('open-modal', id: "{$this->getId()}-action"); - } - - public function getActiveActionsLocale(): ?string - { - return null; - } - - public function mountedActionInfolist(): Infolist - { - return $this->getMountedAction()->getInfolist(); - } -} diff --git a/vendor/filament/actions/src/Concerns/InteractsWithRecord.php b/vendor/filament/actions/src/Concerns/InteractsWithRecord.php deleted file mode 100644 index d5898088..00000000 --- a/vendor/filament/actions/src/Concerns/InteractsWithRecord.php +++ /dev/null @@ -1,205 +0,0 @@ -record = $record; - - return $this; - } - - public function model(string | Closure | null $model): static - { - $this->model = $model; - - return $this; - } - - public function modelLabel(string | Closure | null $label): static - { - $this->modelLabel = $label; - - return $this; - } - - public function pluralModelLabel(string | Closure | null $label): static - { - $this->pluralModelLabel = $label; - - return $this; - } - - public function recordTitle(string | Closure | null $title): static - { - $this->recordTitle = $title; - - return $this; - } - - public function recordTitleAttribute(string | Closure | null $attribute): static - { - $this->recordTitleAttribute = $attribute; - - return $this; - } - - public function getRecord(): ?Model - { - return $this->evaluate($this->record); - } - - public function getRecordTitle(?Model $record = null): ?string - { - return $this->getCustomRecordTitle($record) ?? $this->getModelLabel(); - } - - public function getCustomRecordTitle(?Model $record = null): ?string - { - $record ??= $this->getRecord(); - - $title = $this->evaluate( - $this->recordTitle, - namedInjections: [ - 'record' => $record, - ], - typedInjections: [ - Model::class => $record, - $record::class => $record, - ], - ); - - if (filled($title)) { - return $title; - } - - $titleAttribute = $this->getCustomRecordTitleAttribute(); - - if (blank($titleAttribute)) { - return null; - } - - return $record->getAttributeValue($titleAttribute); - } - - public function getCustomRecordTitleAttribute(): ?string - { - return $this->evaluate($this->recordTitleAttribute); - } - - public function hasCustomRecordTitle(): bool - { - return $this->recordTitle !== null; - } - - public function hasCustomRecordTitleAttribute(): bool - { - return $this->recordTitleAttribute !== null; - } - - public function getModel(): ?string - { - $model = $this->getCustomModel(); - - if (filled($model)) { - return $model; - } - - $record = $this->getRecord(); - - if (! $record) { - return null; - } - - return $record::class; - } - - public function getCustomModel(): ?string - { - return $this->evaluate($this->model); - } - - public function getModelLabel(): ?string - { - $label = $this->getCustomModelLabel(); - - if (filled($label)) { - return $label; - } - - $model = $this->getModel(); - - if (! $model) { - return null; - } - - return get_model_label($model); - } - - public function getCustomModelLabel(): ?string - { - return $this->evaluate($this->modelLabel); - } - - public function getPluralModelLabel(): ?string - { - $label = $this->getCustomPluralModelLabel(); - - if (filled($label)) { - return $label; - } - - $singularLabel = $this->getModelLabel(); - - if (blank($singularLabel)) { - return null; - } - - if (locale_has_pluralization()) { - return Str::plural($singularLabel); - } - - return $singularLabel; - } - - public function getCustomPluralModelLabel(): ?string - { - return $this->evaluate($this->pluralModelLabel); - } - - /** - * @param array $arguments - * @return array - */ - protected function parseAuthorizationArguments(array $arguments): array - { - if ($record = $this->getRecord()) { - array_unshift($arguments, $record); - } elseif ($model = $this->getModel()) { - array_unshift($arguments, $model); - } - - return $arguments; - } -} diff --git a/vendor/filament/actions/src/Contracts/Groupable.php b/vendor/filament/actions/src/Contracts/Groupable.php deleted file mode 100644 index de9453b4..00000000 --- a/vendor/filament/actions/src/Contracts/Groupable.php +++ /dev/null @@ -1,8 +0,0 @@ - $name - */ - public function getAction(string | array $name): ?Action; - - public function getActiveActionsLocale(): ?string; - - public function makeFilamentTranslatableContentDriver(): ?TranslatableContentDriver; -} diff --git a/vendor/filament/actions/src/Contracts/HasLivewire.php b/vendor/filament/actions/src/Contracts/HasLivewire.php deleted file mode 100644 index eb87fafc..00000000 --- a/vendor/filament/actions/src/Contracts/HasLivewire.php +++ /dev/null @@ -1,10 +0,0 @@ - | null - */ - public function getExcludedAttributes(): ?array; -} diff --git a/vendor/filament/actions/src/CreateAction.php b/vendor/filament/actions/src/CreateAction.php deleted file mode 100644 index 7d1887dd..00000000 --- a/vendor/filament/actions/src/CreateAction.php +++ /dev/null @@ -1,134 +0,0 @@ -label(fn (): string => __('filament-actions::create.single.label', ['label' => $this->getModelLabel()])); - - $this->modalHeading(fn (): string => __('filament-actions::create.single.modal.heading', ['label' => $this->getModelLabel()])); - - $this->modalSubmitActionLabel(__('filament-actions::create.single.modal.actions.create.label')); - - $this->extraModalFooterActions(function (): array { - return $this->canCreateAnother() ? [ - $this->makeModalSubmitAction('createAnother', arguments: ['another' => true]) - ->label(__('filament-actions::create.single.modal.actions.create_another.label')), - ] : []; - }); - - $this->successNotificationTitle(__('filament-actions::create.single.notifications.created.title')); - - $this->groupedIcon(FilamentIcon::resolve('actions::create-action.grouped') ?? 'heroicon-m-plus'); - - $this->record(null); - - $this->action(function (array $arguments, Form $form): void { - $model = $this->getModel(); - - $record = $this->process(function (array $data, HasActions $livewire) use ($model): Model { - if ($translatableContentDriver = $livewire->makeFilamentTranslatableContentDriver()) { - $record = $translatableContentDriver->makeRecord($model, $data); - } else { - $record = new $model(); - $record->fill($data); - } - - if ($relationship = $this->getRelationship()) { - /** @phpstan-ignore-next-line */ - $relationship->save($record); - - return $record; - } - - $record->save(); - - return $record; - }); - - $this->record($record); - $form->model($record)->saveRelationships(); - - if ($arguments['another'] ?? false) { - $this->callAfter(); - $this->sendSuccessNotification(); - - $this->record(null); - - // Ensure that the form record is anonymized so that relationships aren't loaded. - $form->model($model); - - $form->fill(); - - $this->halt(); - - return; - } - - $this->success(); - }); - } - - public function relationship(?Closure $relationship): static - { - $this->getRelationshipUsing = $relationship; - - return $this; - } - - public function createAnother(bool | Closure $condition = true): static - { - $this->canCreateAnother = $condition; - - return $this; - } - - /** - * @deprecated Use `createAnother()` instead. - */ - public function disableCreateAnother(bool | Closure $condition = true): static - { - $this->createAnother(fn (CreateAction $action): bool => ! $action->evaluate($condition)); - - return $this; - } - - public function canCreateAnother(): bool - { - return (bool) $this->evaluate($this->canCreateAnother); - } - - public function shouldClearRecordAfter(): bool - { - return true; - } - - public function getRelationship(): Relation | Builder | null - { - return $this->evaluate($this->getRelationshipUsing); - } -} diff --git a/vendor/filament/actions/src/DeleteAction.php b/vendor/filament/actions/src/DeleteAction.php deleted file mode 100644 index 97a28d2a..00000000 --- a/vendor/filament/actions/src/DeleteAction.php +++ /dev/null @@ -1,60 +0,0 @@ -label(__('filament-actions::delete.single.label')); - - $this->modalHeading(fn (): string => __('filament-actions::delete.single.modal.heading', ['label' => $this->getRecordTitle()])); - - $this->modalSubmitActionLabel(__('filament-actions::delete.single.modal.actions.delete.label')); - - $this->successNotificationTitle(__('filament-actions::delete.single.notifications.deleted.title')); - - $this->color('danger'); - - $this->groupedIcon(FilamentIcon::resolve('actions::delete-action.grouped') ?? 'heroicon-m-trash'); - - $this->requiresConfirmation(); - - $this->modalIcon(FilamentIcon::resolve('actions::delete-action.modal') ?? 'heroicon-o-trash'); - - $this->keyBindings(['mod+d']); - - $this->hidden(static function (Model $record): bool { - if (! method_exists($record, 'trashed')) { - return false; - } - - return $record->trashed(); - }); - - $this->action(function (): void { - $result = $this->process(static fn (Model $record) => $record->delete()); - - if (! $result) { - $this->failure(); - - return; - } - - $this->success(); - }); - } -} diff --git a/vendor/filament/actions/src/EditAction.php b/vendor/filament/actions/src/EditAction.php deleted file mode 100644 index 3b19cbd0..00000000 --- a/vendor/filament/actions/src/EditAction.php +++ /dev/null @@ -1,69 +0,0 @@ -label(__('filament-actions::edit.single.label')); - - $this->modalHeading(fn (): string => __('filament-actions::edit.single.modal.heading', ['label' => $this->getRecordTitle()])); - - $this->modalSubmitActionLabel(__('filament-actions::edit.single.modal.actions.save.label')); - - $this->successNotificationTitle(__('filament-actions::edit.single.notifications.saved.title')); - - $this->groupedIcon(FilamentIcon::resolve('actions::edit-action.grouped') ?? 'heroicon-m-pencil-square'); - - $this->fillForm(function (HasActions $livewire, Model $record): array { - if ($translatableContentDriver = $livewire->makeFilamentTranslatableContentDriver()) { - $data = $translatableContentDriver->getRecordAttributesToArray($record); - } else { - $data = $record->attributesToArray(); - } - - if ($this->mutateRecordDataUsing) { - $data = $this->evaluate($this->mutateRecordDataUsing, ['data' => $data]); - } - - return $data; - }); - - $this->action(function (): void { - $this->process(function (array $data, HasActions $livewire, Model $record) { - if ($translatableContentDriver = $livewire->makeFilamentTranslatableContentDriver()) { - $translatableContentDriver->updateRecord($record, $data); - } else { - $record->update($data); - } - }); - - $this->success(); - }); - } - - public function mutateRecordDataUsing(?Closure $callback): static - { - $this->mutateRecordDataUsing = $callback; - - return $this; - } -} diff --git a/vendor/filament/actions/src/Exceptions/Hold.php b/vendor/filament/actions/src/Exceptions/Hold.php deleted file mode 100644 index 986b1e1a..00000000 --- a/vendor/filament/actions/src/Exceptions/Hold.php +++ /dev/null @@ -1,12 +0,0 @@ -characterLimit = $length; - $this->characterLimitEnd = $end; - - return $this; - } - - public function words(int | Closure | null $words = 100, string | Closure | null $end = '...'): static - { - $this->wordLimit = $words; - $this->wordLimitEnd = $end; - - return $this; - } - - public function prefix(string | Closure | null $prefix): static - { - $this->prefix = $prefix; - - return $this; - } - - public function suffix(string | Closure | null $suffix): static - { - $this->suffix = $suffix; - - return $this; - } - - public function formatStateUsing(?Closure $callback): static - { - $this->formatStateUsing = $callback; - - return $this; - } - - public function formatState(mixed $state): mixed - { - $state = $this->evaluate($this->formatStateUsing ?? $state, [ - 'state' => $state, - ]); - - if ($characterLimit = $this->getCharacterLimit()) { - $state = Str::limit($state, $characterLimit, $this->getCharacterLimitEnd()); - } - - if ($wordLimit = $this->getWordLimit()) { - $state = Str::words($state, $wordLimit, $this->getWordLimitEnd()); - } - - $prefix = $this->getPrefix(); - $suffix = $this->getSuffix(); - - if (filled($prefix)) { - $state = $prefix . $state; - } - - if (filled($suffix)) { - $state = $state . $suffix; - } - - return $state; - } - - public function getFormattedState(): ?string - { - $state = $this->getState(); - - if (! is_array($state)) { - return $this->formatState($state); - } - - $state = array_map($this->formatState(...), $state); - - if ($this->isListedAsJson()) { - return json_encode($state); - } - - return implode(', ', $state); - } - - public function getCharacterLimit(): ?int - { - return $this->evaluate($this->characterLimit); - } - - public function getCharacterLimitEnd(): ?string - { - return $this->evaluate($this->characterLimitEnd); - } - - public function getWordLimit(): ?int - { - return $this->evaluate($this->wordLimit); - } - - public function getWordLimitEnd(): ?string - { - return $this->evaluate($this->wordLimitEnd); - } - - public function getPrefix(): ?string - { - return $this->evaluate($this->prefix); - } - - public function getSuffix(): ?string - { - return $this->evaluate($this->suffix); - } - - public function listAsJson(bool $condition = true): static - { - $this->isListedAsJson = $condition; - - return $this; - } - - public function isListedAsJson(): bool - { - return $this->isListedAsJson; - } -} diff --git a/vendor/filament/actions/src/Exports/Downloaders/Contracts/Downloader.php b/vendor/filament/actions/src/Exports/Downloaders/Contracts/Downloader.php deleted file mode 100644 index 8f12b26b..00000000 --- a/vendor/filament/actions/src/Exports/Downloaders/Contracts/Downloader.php +++ /dev/null @@ -1,11 +0,0 @@ -getFileDisk(); - - return response()->streamDownload(function () use ($disk, $export) { - echo $disk->get($export->getFileDirectory() . DIRECTORY_SEPARATOR . 'headers.csv'); - - flush(); - - foreach ($disk->files($export->getFileDirectory()) as $file) { - if (str($file)->endsWith('headers.csv')) { - continue; - } - - if (! str($file)->endsWith('.csv')) { - continue; - } - - echo $disk->get($file); - - flush(); - } - }, "{$export->file_name}.csv", [ - 'Content-Type' => 'text/csv', - ]); - } -} diff --git a/vendor/filament/actions/src/Exports/Downloaders/XlsxDownloader.php b/vendor/filament/actions/src/Exports/Downloaders/XlsxDownloader.php deleted file mode 100644 index e1eb48a3..00000000 --- a/vendor/filament/actions/src/Exports/Downloaders/XlsxDownloader.php +++ /dev/null @@ -1,61 +0,0 @@ -getFileDisk(); - - $fileName = $export->file_name . '.xlsx'; - - if ($disk->exists($filePath = $export->getFileDirectory() . DIRECTORY_SEPARATOR . $fileName)) { - return $disk->download($filePath); - } - - $writer = app(Writer::class); - - $csvDelimiter = $export->exporter::getCsvDelimiter(); - - $writeRowsFromFile = function (string $file) use ($csvDelimiter, $disk, $writer) { - $csvReader = CsvReader::createFromStream($disk->readStream($file)); - $csvReader->setDelimiter($csvDelimiter); - $csvResults = Statement::create()->process($csvReader); - - foreach ($csvResults->getRecords() as $row) { - $writer->addRow(Row::fromValues($row)); - } - }; - - return response()->streamDownload(function () use ($disk, $export, $fileName, $writer, $writeRowsFromFile) { - $writer->openToBrowser($fileName); - - $writeRowsFromFile($export->getFileDirectory() . DIRECTORY_SEPARATOR . 'headers.csv'); - - foreach ($disk->files($export->getFileDirectory()) as $file) { - if (str($file)->endsWith('headers.csv')) { - continue; - } - - if (! str($file)->endsWith('.csv')) { - continue; - } - - $writeRowsFromFile($file); - } - - $writer->close(); - }, $fileName, [ - 'Content-Type' => 'application/vnd.ms-excel', - ]); - } -} diff --git a/vendor/filament/actions/src/Exports/Enums/ExportFormat.php b/vendor/filament/actions/src/Exports/Enums/ExportFormat.php deleted file mode 100644 index fa81cc07..00000000 --- a/vendor/filament/actions/src/Exports/Enums/ExportFormat.php +++ /dev/null @@ -1,32 +0,0 @@ - app(CsvDownloader::class), - self::Xlsx => app(XlsxDownloader::class), - }; - } - - public function getDownloadNotificationAction(Export $export): NotificationAction - { - return NotificationAction::make("download_{$this->value}") - ->label(__("filament-actions::export.notifications.completed.actions.download_{$this->value}.label")) - ->url(route('filament.exports.download', ['export' => $export, 'format' => $this], absolute: false), shouldOpenInNewTab: true) - ->markAsRead(); - } -} diff --git a/vendor/filament/actions/src/Exports/ExportColumn.php b/vendor/filament/actions/src/Exports/ExportColumn.php deleted file mode 100644 index e66996f9..00000000 --- a/vendor/filament/actions/src/Exports/ExportColumn.php +++ /dev/null @@ -1,142 +0,0 @@ -name($name); - } - - public static function make(string $name): static - { - $static = app(static::class, ['name' => $name]); - $static->configure(); - - return $static; - } - - public function name(string $name): static - { - $this->name = $name; - - return $this; - } - - public function label(string | Closure | null $label): static - { - $this->label = $label; - - return $this; - } - - public function exporter(?Exporter $exporter): static - { - $this->exporter = $exporter; - - return $this; - } - - public function getName(): string - { - return $this->name; - } - - public function getExporter(): ?Exporter - { - return $this->exporter; - } - - public function getRecord(): ?Model - { - return $this->getExporter()->getRecord(); - } - - public function getLabel(): ?string - { - return $this->evaluate($this->label) ?? (string) str($this->getName()) - ->beforeLast('.') - ->afterLast('.') - ->kebab() - ->replace(['-', '_'], ' ') - ->ucfirst(); - } - - public function applyRelationshipAggregates(EloquentBuilder $query): EloquentBuilder - { - return $query->when( - filled([$this->getRelationshipToAvg(), $this->getColumnToAvg()]), - fn ($query) => $query->withAvg($this->getRelationshipToAvg(), $this->getColumnToAvg()) - )->when( - filled($this->getRelationshipsToCount()), - fn ($query) => $query->withCount(Arr::wrap($this->getRelationshipsToCount())) - )->when( - filled($this->getRelationshipsToExistenceCheck()), - fn ($query) => $query->withExists(Arr::wrap($this->getRelationshipsToExistenceCheck())) - )->when( - filled([$this->getRelationshipToMax(), $this->getColumnToMax()]), - fn ($query) => $query->withMax($this->getRelationshipToMax(), $this->getColumnToMax()) - )->when( - filled([$this->getRelationshipToMin(), $this->getColumnToMin()]), - fn ($query) => $query->withMin($this->getRelationshipToMin(), $this->getColumnToMin()) - )->when( - filled([$this->getRelationshipToSum(), $this->getColumnToSum()]), - fn ($query) => $query->withSum($this->getRelationshipToSum(), $this->getColumnToSum()) - ); - } - - public function applyEagerLoading(EloquentBuilder $query): EloquentBuilder - { - if (! $this->queriesRelationships($query->getModel())) { - return $query; - } - - $relationshipName = $this->getRelationshipName(); - - if (array_key_exists($relationshipName, $query->getEagerLoads())) { - return $query; - } - - return $query->with([$relationshipName]); - } - - protected function resolveDefaultClosureDependencyForEvaluationByName(string $parameterName): array - { - return match ($parameterName) { - 'exporter' => [$this->getExporter()], - 'options' => [$this->getExporter()->getOptions()], - 'record' => [$this->getRecord()], - default => parent::resolveDefaultClosureDependencyForEvaluationByName($parameterName), - }; - } - - protected function resolveDefaultClosureDependencyForEvaluationByType(string $parameterType): array - { - $record = $this->getRecord(); - - return match ($parameterType) { - Exporter::class => [$this->getExporter()], - Model::class, $record ? $record::class : null => [$record], - default => parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType), - }; - } -} diff --git a/vendor/filament/actions/src/Exports/Exporter.php b/vendor/filament/actions/src/Exports/Exporter.php deleted file mode 100644 index cee11f50..00000000 --- a/vendor/filament/actions/src/Exports/Exporter.php +++ /dev/null @@ -1,164 +0,0 @@ - */ - protected array $cachedColumns; - - protected ?Model $record; - - protected static ?string $model = null; - - /** - * @param array $columnMap - * @param array $options - */ - public function __construct( - protected Export $export, - protected array $columnMap, - protected array $options, - ) { - } - - /** - * @return array - */ - public function __invoke(Model $record): array - { - $this->record = $record; - - $columns = $this->getCachedColumns(); - - $data = []; - - foreach (array_keys($this->columnMap) as $column) { - $data[] = $columns[$column]->getFormattedState(); - } - - return $data; - } - - /** - * @return array - */ - abstract public static function getColumns(): array; - - /** - * @return array - */ - public static function getOptionsFormComponents(): array - { - return []; - } - - /** - * @return class-string - */ - public static function getModel(): string - { - return static::$model ?? (string) str(class_basename(static::class)) - ->beforeLast('Exporter') - ->prepend('App\\Models\\'); - } - - abstract public static function getCompletedNotificationBody(Export $export): string; - - /** - * @return array - */ - public function getJobMiddleware(): array - { - return [ - (new WithoutOverlapping("export{$this->export->getKey()}"))->expireAfter(600), - ]; - } - - public function getJobRetryUntil(): ?CarbonInterface - { - return now()->addDay(); - } - - /** - * @return array - */ - public function getJobTags(): array - { - return ["export{$this->export->getKey()}"]; - } - - public function getJobQueue(): ?string - { - return null; - } - - public function getJobConnection(): ?string - { - return null; - } - - /** - * @return array - */ - public function getCachedColumns(): array - { - return $this->cachedColumns ?? array_reduce(static::getColumns(), function (array $carry, ExportColumn $column): array { - $carry[$column->getName()] = $column->exporter($this); - - return $carry; - }, []); - } - - public function getRecord(): ?Model - { - return $this->record; - } - - /** - * @return array - */ - public function getOptions(): array - { - return $this->options; - } - - public function getFileDisk(): string - { - return config('filament.default_filesystem_disk'); - } - - public function getFileName(Export $export): string - { - return __('filament-actions::export.file_name', [ - 'export_id' => $export->getKey(), - 'model' => (string) str(static::getModel()) - ->classBasename() - ->beforeLast('Exporter') - ->kebab() - ->replace('-', ' ') - ->plural() - ->replace(' ', '-'), - ]); - } - - public static function getCsvDelimiter(): string - { - return ','; - } - - /** - * @return array - */ - public function getFormats(): array - { - return [ExportFormat::Csv, ExportFormat::Xlsx]; - } -} diff --git a/vendor/filament/actions/src/Exports/Http/Controllers/DownloadExport.php b/vendor/filament/actions/src/Exports/Http/Controllers/DownloadExport.php deleted file mode 100644 index 69d626fd..00000000 --- a/vendor/filament/actions/src/Exports/Http/Controllers/DownloadExport.php +++ /dev/null @@ -1,22 +0,0 @@ -user->is(auth()->user()), 403); - - $format = ExportFormat::tryFrom($request->query('format')); - - abort_unless($format !== null, 404); - - return $format->getDownloader()($export); - } -} diff --git a/vendor/filament/actions/src/Exports/Jobs/CreateXlsxFile.php b/vendor/filament/actions/src/Exports/Jobs/CreateXlsxFile.php deleted file mode 100644 index 9cd96fee..00000000 --- a/vendor/filament/actions/src/Exports/Jobs/CreateXlsxFile.php +++ /dev/null @@ -1,89 +0,0 @@ - $columnMap - * @param array $options - */ - public function __construct( - protected Export $export, - protected array $columnMap, - protected array $options = [], - ) { - $this->exporter = $this->export->getExporter( - $this->columnMap, - $this->options, - ); - } - - public function handle(): void - { - $disk = $this->export->getFileDisk(); - - $writer = app(Writer::class); - $writer->openToFile($temporaryFile = tempnam(sys_get_temp_dir(), $this->export->file_name)); - - $csvDelimiter = $this->exporter::getCsvDelimiter(); - - $writeRowsFromFile = function (string $file) use ($csvDelimiter, $disk, $writer) { - $csvReader = CsvReader::createFromStream($disk->readStream($file)); - $csvReader->setDelimiter($csvDelimiter); - $csvResults = Statement::create()->process($csvReader); - - foreach ($csvResults->getRecords() as $row) { - $writer->addRow(Row::fromValues($row)); - } - }; - - $writeRowsFromFile($this->export->getFileDirectory() . DIRECTORY_SEPARATOR . 'headers.csv'); - - foreach ($disk->files($this->export->getFileDirectory()) as $file) { - if (str($file)->endsWith('headers.csv')) { - continue; - } - - if (! str($file)->endsWith('.csv')) { - continue; - } - - $writeRowsFromFile($file); - } - - $writer->close(); - - $disk->putFileAs( - $this->export->getFileDirectory(), - new File($temporaryFile), - "{$this->export->file_name}.xlsx", - Filesystem::VISIBILITY_PRIVATE, - ); - - unlink($temporaryFile); - } -} diff --git a/vendor/filament/actions/src/Exports/Jobs/ExportCompletion.php b/vendor/filament/actions/src/Exports/Jobs/ExportCompletion.php deleted file mode 100644 index e5662067..00000000 --- a/vendor/filament/actions/src/Exports/Jobs/ExportCompletion.php +++ /dev/null @@ -1,79 +0,0 @@ - $columnMap - * @param array $formats - * @param array $options - */ - public function __construct( - protected Export $export, - protected array $columnMap, - protected array $formats = [], - protected array $options = [], - ) { - $this->exporter = $this->export->getExporter( - $this->columnMap, - $this->options, - ); - } - - public function handle(): void - { - $this->export->touch('completed_at'); - - if (! $this->export->user instanceof Authenticatable) { - return; - } - - $failedRowsCount = $this->export->getFailedRowsCount(); - - Notification::make() - ->title(__('filament-actions::export.notifications.completed.title')) - ->body($this->exporter::getCompletedNotificationBody($this->export)) - ->when( - ! $failedRowsCount, - fn (Notification $notification) => $notification->success(), - ) - ->when( - $failedRowsCount && ($failedRowsCount < $this->export->total_rows), - fn (Notification $notification) => $notification->warning(), - ) - ->when( - $failedRowsCount === $this->export->total_rows, - fn (Notification $notification) => $notification->danger(), - ) - ->when( - $failedRowsCount < $this->export->total_rows, - fn (Notification $notification) => $notification->actions(array_map( - fn (ExportFormat $format): NotificationAction => $format->getDownloadNotificationAction($this->export), - $this->formats, - )), - ) - ->sendToDatabase($this->export->user); - } -} diff --git a/vendor/filament/actions/src/Exports/Jobs/ExportCsv.php b/vendor/filament/actions/src/Exports/Jobs/ExportCsv.php deleted file mode 100644 index 207a780c..00000000 --- a/vendor/filament/actions/src/Exports/Jobs/ExportCsv.php +++ /dev/null @@ -1,144 +0,0 @@ - $records - * @param array $columnMap - * @param array $options - */ - public function __construct( - protected Export $export, - protected string $query, - protected array $records, - protected int $page, - protected array $columnMap, - protected array $options = [], - ) { - $this->exporter = $this->export->getExporter( - $this->columnMap, - $this->options, - ); - } - - /** - * @return array - */ - public function middleware(): array - { - return $this->exporter->getJobMiddleware(); - } - - public function handle(): void - { - /** @var Authenticatable $user */ - $user = $this->export->user; - - auth()->login($user); - - $exceptions = []; - - $processedRows = 0; - $successfulRows = 0; - - $csv = Writer::createFromFileObject(new SplTempFileObject()); - $csv->setDelimiter($this->exporter::getCsvDelimiter()); - - $query = EloquentSerializeFacade::unserialize($this->query); - - foreach ($this->exporter->getCachedColumns() as $column) { - $column->applyRelationshipAggregates($query); - $column->applyEagerLoading($query); - } - - foreach ($query->find($this->records) as $record) { - try { - $csv->insertOne(($this->exporter)($record)); - - $successfulRows++; - } catch (Throwable $exception) { - $exceptions[$exception::class] = $exception; - } - - $processedRows++; - } - - $filePath = $this->export->getFileDirectory() . DIRECTORY_SEPARATOR . str_pad(strval($this->page), 16, '0', STR_PAD_LEFT) . '.csv'; - $this->export->getFileDisk()->put($filePath, $csv->toString(), Filesystem::VISIBILITY_PRIVATE); - - $this->export->refresh(); - - $exportProcessedRows = $this->export->processed_rows + $processedRows; - $this->export->processed_rows = ($exportProcessedRows < $this->export->total_rows) ? - $exportProcessedRows : - $this->export->total_rows; - - $exportSuccessfulRows = $this->export->successful_rows + $successfulRows; - $this->export->successful_rows = ($exportSuccessfulRows < $this->export->total_rows) ? - $exportSuccessfulRows : - $this->export->total_rows; - - $this->export->save(); - - $this->handleExceptions($exceptions); - } - - public function retryUntil(): ?CarbonInterface - { - return $this->exporter->getJobRetryUntil(); - } - - /** - * @return array - */ - public function tags(): array - { - return $this->exporter->getJobTags(); - } - - /** - * @param array $exceptions - */ - protected function handleExceptions(array $exceptions): void - { - if (empty($exceptions)) { - return; - } - - if (count($exceptions) > 1) { - throw new Exception('Multiple types of exceptions occurred: [' . implode('], [', array_keys($exceptions)) . ']'); - } - - throw Arr::first($exceptions); - } -} diff --git a/vendor/filament/actions/src/Exports/Jobs/PrepareCsvExport.php b/vendor/filament/actions/src/Exports/Jobs/PrepareCsvExport.php deleted file mode 100644 index 73c14c4f..00000000 --- a/vendor/filament/actions/src/Exports/Jobs/PrepareCsvExport.php +++ /dev/null @@ -1,125 +0,0 @@ - $columnMap - * @param array $options - * @param array | null $records - */ - public function __construct( - protected Export $export, - protected string $query, - protected array $columnMap, - protected array $options = [], - protected int $chunkSize = 100, - protected ?array $records = null, - ) { - $this->exporter = $this->export->getExporter( - $this->columnMap, - $this->options, - ); - } - - public function handle(): void - { - $csv = Writer::createFromFileObject(new SplTempFileObject()); - $csv->setDelimiter($this->exporter::getCsvDelimiter()); - $csv->insertOne(array_values($this->columnMap)); - - $filePath = $this->export->getFileDirectory() . DIRECTORY_SEPARATOR . 'headers.csv'; - $this->export->getFileDisk()->put($filePath, $csv->toString(), Filesystem::VISIBILITY_PRIVATE); - - $query = EloquentSerializeFacade::unserialize($this->query); - $keyName = $query->getModel()->getKeyName(); - - $exportCsvJob = $this->getExportCsvJob(); - - $totalRows = 0; - $page = 1; - - $dispatchRecords = function (array $records) use ($exportCsvJob, &$page, &$totalRows) { - $recordsCount = count($records); - - if (($totalRows + $recordsCount) > $this->export->total_rows) { - $records = array_slice($records, 0, $this->export->total_rows - $totalRows); - $recordsCount = count($records); - } - - if (! $recordsCount) { - return; - } - - $jobs = []; - - foreach (array_chunk($records, length: $this->chunkSize) as $recordsChunk) { - $jobs[] = new $exportCsvJob( - $this->export, - $this->query, - $recordsChunk, - $page, - $this->columnMap, - $this->options, - ); - - $page++; - } - - $this->batch()->add($jobs); - - $totalRows += $recordsCount; - }; - - if ($this->records !== null) { - $dispatchRecords($this->records); - - return; - } - - $baseQuery = $query->toBase(); - $sortDirection = $baseQuery->orders[0]['direction'] ?? 'asc'; - - $baseQuery - ->select([$query->getModel()->getQualifiedKeyName()]) - ->orderedChunkById( - $this->chunkSize * 10, - fn (Collection $records) => $dispatchRecords( - Arr::pluck($records->all(), $keyName), - ), - $keyName, - descending: $sortDirection === 'desc', - ); - } - - public function getExportCsvJob(): string - { - return ExportCsv::class; - } -} diff --git a/vendor/filament/actions/src/Exports/Models/Export.php b/vendor/filament/actions/src/Exports/Models/Export.php deleted file mode 100644 index be38b5df..00000000 --- a/vendor/filament/actions/src/Exports/Models/Export.php +++ /dev/null @@ -1,98 +0,0 @@ - $exporter - * @property int $processed_rows - * @property int $total_rows - * @property int $successful_rows - * @property-read Authenticatable $user - */ -class Export extends Model -{ - use Prunable; - - protected $casts = [ - 'completed_at' => 'timestamp', - 'processed_rows' => 'integer', - 'total_rows' => 'integer', - 'successful_rows' => 'integer', - ]; - - protected $guarded = []; - - protected static bool $hasPolymorphicUserRelationship = false; - - public function user(): BelongsTo - { - if (static::hasPolymorphicUserRelationship()) { - return $this->morphTo(); - } - - $authenticatable = app(Authenticatable::class); - - if ($authenticatable) { - return $this->belongsTo($authenticatable::class); - } - - if (! class_exists(\App\Models\User::class)) { - throw new Exception('No [App\\Models\\User] model found. Please bind an authenticatable model to the [Illuminate\\Contracts\\Auth\\Authenticatable] interface in a service provider\'s [register()] method.'); - } - - return $this->belongsTo(\App\Models\User::class); - } - - /** - * @param array $columnMap - * @param array $options - */ - public function getExporter( - array $columnMap, - array $options, - ): Exporter { - return app($this->exporter, [ - 'export' => $this, - 'columnMap' => $columnMap, - 'options' => $options, - ]); - } - - public function getFailedRowsCount(): int - { - return $this->total_rows - $this->successful_rows; - } - - public static function polymorphicUserRelationship(bool $condition = true): void - { - static::$hasPolymorphicUserRelationship = $condition; - } - - public static function hasPolymorphicUserRelationship(): bool - { - return static::$hasPolymorphicUserRelationship; - } - - public function getFileDisk(): Filesystem - { - return Storage::disk($this->file_disk); - } - - public function getFileDirectory(): string - { - return 'filament_exports' . DIRECTORY_SEPARATOR . $this->getKey(); - } -} diff --git a/vendor/filament/actions/src/ForceDeleteAction.php b/vendor/filament/actions/src/ForceDeleteAction.php deleted file mode 100644 index 0e815dff..00000000 --- a/vendor/filament/actions/src/ForceDeleteAction.php +++ /dev/null @@ -1,56 +0,0 @@ -label(__('filament-actions::force-delete.single.label')); - - $this->modalHeading(fn (): string => __('filament-actions::force-delete.single.modal.heading', ['label' => $this->getRecordTitle()])); - - $this->modalSubmitActionLabel(__('filament-actions::force-delete.single.modal.actions.delete.label')); - - $this->color('danger'); - - $this->groupedIcon(FilamentIcon::resolve('actions::force-delete-action.grouped') ?? 'heroicon-m-trash'); - - $this->requiresConfirmation(); - - $this->modalIcon(FilamentIcon::resolve('actions::force-delete-action.modal') ?? 'heroicon-o-trash'); - - $this->action(function (): void { - $result = $this->process(static fn (Model $record) => $record->forceDelete()); - - if (! $result) { - $this->failure(); - - return; - } - - $this->success(); - }); - - $this->visible(static function (Model $record): bool { - if (! method_exists($record, 'trashed')) { - return false; - } - - return $record->trashed(); - }); - } -} diff --git a/vendor/filament/actions/src/ImportAction.php b/vendor/filament/actions/src/ImportAction.php deleted file mode 100644 index 77631d3e..00000000 --- a/vendor/filament/actions/src/ImportAction.php +++ /dev/null @@ -1,8 +0,0 @@ -user->is(auth()->user()), 403); - - $csv = Writer::createFromFileObject(new SplTempFileObject()); - - $columnHeaders = array_keys($import->failedRows()->first()->data); - $columnHeaders[] = __('filament-actions::import.failure_csv.error_header'); - - $csv->insertOne($columnHeaders); - - $import->failedRows() - ->lazyById(100) - ->each(fn (FailedImportRow $failedImportRow) => $csv->insertOne([ - ...$failedImportRow->data, - 'error' => $failedImportRow->validation_error ?? __('filament-actions::import.failure_csv.system_error'), - ])); - - return response()->streamDownload(function () use ($csv) { - foreach ($csv->chunk(1000) as $offset => $chunk) { - echo $chunk; - - if ($offset % 1000) { - flush(); - } - } - }, __('filament-actions::import.failure_csv.file_name', [ - 'import_id' => $import->getKey(), - 'csv_name' => (string) str($import->file_name)->beforeLast('.')->remove('.'), - ]) . '.csv', [ - 'Content-Type' => 'text/csv', - ]); - } -} diff --git a/vendor/filament/actions/src/Imports/ImportColumn.php b/vendor/filament/actions/src/Imports/ImportColumn.php deleted file mode 100644 index 32508cfc..00000000 --- a/vendor/filament/actions/src/Imports/ImportColumn.php +++ /dev/null @@ -1,540 +0,0 @@ - | Closure - */ - protected array | Closure $guesses = []; - - protected ?Closure $fillRecordUsing = null; - - protected ?Closure $castStateUsing = null; - - /** - * @var array | Closure - */ - protected array | Closure $dataValidationRules = []; - - /** - * @var array | Closure - */ - protected array | Closure $nestedRecursiveDataValidationRules = []; - - protected ?Importer $importer = null; - - protected mixed $example = null; - - protected string | Closure | null $relationship = null; - - /** - * @var string | array | Closure | null - */ - protected string | array | Closure | null $resolveRelationshipUsing = null; - - /** - * @var array - */ - protected array $resolvedRelatedRecords = []; - - protected string | Closure | null $validationAttribute = null; - - final public function __construct(string $name) - { - $this->name($name); - } - - public static function make(string $name): static - { - $static = app(static::class, ['name' => $name]); - $static->configure(); - - return $static; - } - - public function getSelect(): Select - { - return Select::make($this->getName()) - ->label($this->getLabel()) - ->placeholder(__('filament-actions::import.modal.form.columns.placeholder')) - ->required($this->isMappingRequired()); - } - - public function name(string $name): static - { - $this->name = $name; - - return $this; - } - - public function label(string | Closure | null $label): static - { - $this->label = $label; - - return $this; - } - - public function example(mixed $example): static - { - $this->example = $example; - - return $this; - } - - public function requiredMapping(bool | Closure $condition = true): static - { - $this->isMappingRequired = $condition; - - return $this; - } - - public function numeric(bool | Closure $condition = true, int | Closure | null $decimalPlaces = null): static - { - $this->isNumeric = $condition; - $this->decimalPlaces = $decimalPlaces; - - return $this; - } - - public function integer(bool | Closure $condition = true): static - { - $this->numeric($condition, decimalPlaces: 0); - - return $this; - } - - public function boolean(bool | Closure $condition = true): static - { - $this->isBoolean = $condition; - - return $this; - } - - public function ignoreBlankState(bool | Closure $condition = true): static - { - $this->isBlankStateIgnored = $condition; - - return $this; - } - - /** - * @param array | Closure $rules - */ - public function rules(array | Closure $rules): static - { - $this->dataValidationRules = $rules; - - return $this; - } - - /** - * @param array | Closure $rules - */ - public function nestedRecursiveRules(array | Closure $rules): static - { - $this->nestedRecursiveDataValidationRules = $rules; - - return $this; - } - - public function array(string | Closure | null $separator = ','): static - { - $this->arraySeparator = $separator; - - return $this; - } - - /** - * @param array | Closure $guesses - */ - public function guess(array | Closure $guesses): static - { - $this->guesses = $guesses; - - return $this; - } - - public function importer(?Importer $importer): static - { - $this->importer = $importer; - - return $this; - } - - /** - * @return array - */ - public function getGuesses(): array - { - $guesses = $this->evaluate($this->guesses); - - array_unshift($guesses, $this->getName()); - - if (filled($label = $this->getLabel())) { - array_unshift($guesses, $this->getLabel()); - } - - return array_reduce($guesses, function (array $carry, string $guess): array { - $carry[] = Str::lower($guess); - - $guess = (string) str($guess) - ->lower() - ->replace('-', ' ') - ->replace('_', ' '); - $carry[] = $guess; - - if (str($guess)->contains(' ')) { - $carry[] = (string) str($guess)->replace(' ', '-'); - $carry[] = (string) str($guess)->replace(' ', '_'); - } - - return $carry; - }, []); - } - - public function castStateUsing(?Closure $callback): static - { - $this->castStateUsing = $callback; - - return $this; - } - - public function fillRecordUsing(?Closure $callback): static - { - $this->fillRecordUsing = $callback; - - return $this; - } - - /** - * @param array $options - */ - public function castState(mixed $state, array $options): mixed - { - $originalState = $state; - - if (filled($arraySeparator = $this->getArraySeparator())) { - $state = collect(explode($arraySeparator, strval($state))) - ->map(fn (mixed $stateItem): mixed => $this->castStateItem($stateItem)) - ->filter(fn (mixed $stateItem): bool => filled($stateItem)) - ->all(); - } else { - $state = $this->castStateItem($state); - } - - if ($this->castStateUsing) { - return $this->evaluate($this->castStateUsing, [ - 'originalState' => $originalState, - 'state' => $state, - 'options' => $options, - ]); - } - - return $state; - } - - public function fillRecord(mixed $state): void - { - if ($this->fillRecordUsing) { - $this->evaluate($this->fillRecordUsing, [ - 'state' => $state, - ]); - - return; - } - - $relationship = $this->getRelationship(); - - if ($relationship) { - $relationship->associate($this->resolveRelatedRecord($state)); - - return; - } - - $this->getRecord()->{$this->getName()} = $state; - } - - public function getName(): string - { - return $this->name; - } - - /** - * @return array - */ - public function getDataValidationRules(): array - { - $rules = $this->evaluate($this->dataValidationRules); - - if ($this->hasRelationship()) { - $rules[] = function (string $attribute, mixed $state, Closure $fail) { - if (blank($state)) { - return; - } - - $record = $this->resolveRelatedRecord($state); - - if ($record) { - return; - } - - $fail(__('validation.exists', ['attribute' => $attribute])); - }; - } - - return $rules; - } - - public function resolveRelatedRecord(mixed $state): ?Model - { - if (array_key_exists($state, $this->resolvedRelatedRecords)) { - return $this->resolvedRelatedRecords[$state]; - } - - /** @var BelongsTo $relationship */ - $relationship = Relation::noConstraints(fn () => $this->getRelationship()); - $relationshipQuery = $relationship->getQuery(); - - if (blank($this->resolveRelationshipUsing)) { - return $this->resolvedRelatedRecords[$state] = $relationshipQuery - ->where($relationship->getQualifiedOwnerKeyName(), $state) - ->first(); - } - - $resolveUsing = $this->evaluate($this->resolveRelationshipUsing, [ - 'state' => $state, - ]); - - if (blank($resolveUsing)) { - return $this->resolvedRelatedRecords[$state] = null; - } - - if ($resolveUsing instanceof Model) { - return $this->resolvedRelatedRecords[$state] = $resolveUsing; - } - - if (! (is_array($resolveUsing) || is_string($resolveUsing))) { - return null; - } - - $resolveUsing = Arr::wrap($resolveUsing); - - $isFirst = true; - - foreach ($resolveUsing as $columnToResolve) { - $whereClause = $isFirst ? 'where' : 'orWhere'; - - $relationshipQuery->{$whereClause}( - $columnToResolve, - $state, - ); - - $isFirst = false; - } - - return $this->resolvedRelatedRecords[$state] = $relationshipQuery->first(); - } - - /** - * @return array - */ - public function getNestedRecursiveDataValidationRules(): array - { - return $this->evaluate($this->nestedRecursiveDataValidationRules); - } - - public function isNumeric(): bool - { - return (bool) $this->evaluate($this->isNumeric); - } - - public function isBoolean(): bool - { - return (bool) $this->evaluate($this->isBoolean); - } - - public function isBlankStateIgnored(): bool - { - return (bool) $this->evaluate($this->isBlankStateIgnored); - } - - public function getDecimalPlaces(): ?int - { - return $this->evaluate($this->decimalPlaces); - } - - public function getArraySeparator(): ?string - { - return $this->evaluate($this->arraySeparator); - } - - public function isArray(): bool - { - return filled($this->getArraySeparator()); - } - - public function getImporter(): ?Importer - { - return $this->importer; - } - - public function getExample(): mixed - { - return $this->evaluate($this->example); - } - - /** - * @param string | array | Closure | null $resolveUsing - */ - public function relationship(string | Closure | null $name = null, string | array | Closure | null $resolveUsing = null): static - { - $this->relationship = $name ?? $this->getName(); - $this->resolveRelationshipUsing = $resolveUsing; - - return $this; - } - - public function getRelationship(): ?BelongsTo - { - $name = $this->getRelationshipName(); - - if (blank($name)) { - return null; - } - - return $this->getRecord()->{$name}(); - } - - public function getRelationshipName(): ?string - { - return $this->evaluate($this->relationship); - } - - public function getRecord(): ?Model - { - return $this->getImporter()->getRecord(); - } - - public function isMappingRequired(): bool - { - return (bool) $this->evaluate($this->isMappingRequired); - } - - public function hasRelationship(): bool - { - return filled($this->getRelationshipName()); - } - - public function validationAttribute(string | Closure | null $label): static - { - $this->validationAttribute = $label; - - return $this; - } - - public function getValidationAttribute(): string - { - return $this->evaluate($this->validationAttribute) ?? Str::lcfirst($this->getLabel()); - } - - public function getLabel(): ?string - { - return $this->evaluate($this->label); - } - - protected function castStateItem(mixed $state): mixed - { - if (is_string($state)) { - $state = trim($state); - } - - if (blank($state)) { - return null; - } - - if ($this->isBoolean()) { - return $this->castBooleanStateItem($state); - } - - if ($this->isNumeric()) { - return $this->castNumericStateItem($state); - } - - return $state; - } - - protected function castBooleanStateItem(mixed $state): bool - { - // Narrow down the possible values of the state to make comparison easier. - $state = strtolower(strval($state)); - - return match ($state) { - '1', 'true', 'yes', 'y', 'on' => true, - '0', 'false', 'no', 'n', 'off' => false, - default => (bool) $state, - }; - } - - protected function castNumericStateItem(mixed $state): int | float - { - $state = floatval(preg_replace('/[^0-9.]/', '', $state)); - - $decimalPlaces = $this->getDecimalPlaces(); - - if ($decimalPlaces === null) { - return $state; - } - - return round($state, $decimalPlaces); - } - - protected function resolveDefaultClosureDependencyForEvaluationByName(string $parameterName): array - { - return match ($parameterName) { - 'data' => [$this->getImporter()->getData()], - 'importer' => [$this->getImporter()], - 'options' => [$this->getImporter()->getOptions()], - 'originalData' => [$this->getImporter()->getOriginalData()], - 'record' => [$this->getRecord()], - default => parent::resolveDefaultClosureDependencyForEvaluationByName($parameterName), - }; - } - - protected function resolveDefaultClosureDependencyForEvaluationByType(string $parameterType): array - { - $record = $this->getRecord(); - - return match ($parameterType) { - Importer::class => [$this->getImporter()], - Model::class, $record ? $record::class : null => [$record], - default => parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType), - }; - } -} diff --git a/vendor/filament/actions/src/Imports/Importer.php b/vendor/filament/actions/src/Imports/Importer.php deleted file mode 100644 index 7b1318b3..00000000 --- a/vendor/filament/actions/src/Imports/Importer.php +++ /dev/null @@ -1,320 +0,0 @@ - */ - protected array $cachedColumns; - - /** - * @var array - */ - protected array $originalData; - - /** - * @var array - */ - protected array $data; - - protected ?Model $record; - - protected static ?string $model = null; - - /** - * @param array $columnMap - * @param array $options - */ - public function __construct( - protected Import $import, - protected array $columnMap, - protected array $options, - ) { - } - - /** - * @param array $data - */ - public function __invoke(array $data): void - { - $this->originalData = $this->data = $data; - $this->record = null; - - $this->remapData(); - $this->castData(); - - $this->record = $this->resolveRecord(); - - if (! $this->record) { - return; - } - - $this->callHook('beforeValidate'); - $this->validateData(); - $this->callHook('afterValidate'); - - $this->callHook('beforeFill'); - $this->fillRecord(); - $this->callHook('afterFill'); - - $recordExists = $this->record->exists; - - $this->callHook('beforeSave'); - $this->callHook($recordExists ? 'beforeUpdate' : 'beforeCreate'); - $this->saveRecord(); - $this->callHook('afterSave'); - $this->callHook($recordExists ? 'afterUpdate' : 'afterCreate'); - } - - public function remapData(): void - { - $data = $this->data; - - foreach ($this->getCachedColumns() as $column) { - $columnName = $column->getName(); - $rowColumnName = $this->columnMap[$columnName] ?? null; - - if (! array_key_exists($rowColumnName, $this->data)) { - continue; - } - - $data[$columnName] = $this->data[$rowColumnName]; - } - - $this->data = $data; - } - - public function castData(): void - { - foreach ($this->getCachedColumns() as $column) { - $columnName = $column->getName(); - - if (! array_key_exists($columnName, $this->data)) { - continue; - } - - $this->data[$columnName] = $column->castState( - $this->data[$columnName], - $this->options, - ); - } - } - - public function resolveRecord(): ?Model - { - $keyName = app(static::getModel())->getKeyName(); - $keyColumnName = $this->columnMap[$keyName] ?? $keyName; - - return static::getModel()::find($this->data[$keyColumnName]); - } - - /** - * @throws ValidationException - */ - public function validateData(): void - { - $validator = Validator::make( - $this->data, - $this->getValidationRules(), - $this->getValidationMessages(), - $this->getValidationAttributes(), - ); - - $validator->validate(); - } - - /** - * @return array> - */ - public function getValidationRules(): array - { - $rules = []; - - foreach ($this->getCachedColumns() as $column) { - $columnName = $column->getName(); - - $rules[$columnName] = $column->getDataValidationRules(); - - if ( - $column->isArray() && - count($nestedRecursiveRules = $column->getNestedRecursiveDataValidationRules()) - ) { - $rules["{$columnName}.*"] = $nestedRecursiveRules; - } - } - - return $rules; - } - - /** - * @return array - */ - public function getValidationMessages(): array - { - return []; - } - - /** - * @return array - */ - public function getValidationAttributes(): array - { - $attributes = []; - - foreach ($this->getCachedColumns() as $column) { - $validationAttribute = $column->getValidationAttribute(); - - if (blank($validationAttribute)) { - continue; - } - - $attributes[$column->getName()] = $validationAttribute; - } - - return $attributes; - } - - public function fillRecord(): void - { - foreach ($this->getCachedColumns() as $column) { - $columnName = $column->getName(); - - if (! array_key_exists($columnName, $this->data)) { - continue; - } - - $state = $this->data[$columnName]; - - if (blank($state) && $column->isBlankStateIgnored()) { - continue; - } - - $column->fillRecord($state); - } - } - - public function saveRecord(): void - { - $this->record->save(); - } - - /** - * @return array - */ - abstract public static function getColumns(): array; - - /** - * @return array - */ - public static function getOptionsFormComponents(): array - { - return []; - } - - /** - * @return class-string - */ - public static function getModel(): string - { - return static::$model ?? (string) str(class_basename(static::class)) - ->beforeLast('Importer') - ->prepend('App\\Models\\'); - } - - abstract public static function getCompletedNotificationBody(Import $import): string; - - /** - * @return array - */ - public function getJobMiddleware(): array - { - return [ - (new WithoutOverlapping("import{$this->import->getKey()}"))->expireAfter(600), - ]; - } - - public function getJobRetryUntil(): ?CarbonInterface - { - return now()->addDay(); - } - - /** - * @return array - */ - public function getJobTags(): array - { - return ["import{$this->import->getKey()}"]; - } - - public function getJobQueue(): ?string - { - return null; - } - - public function getJobConnection(): ?string - { - return null; - } - - /** - * @return array - */ - public function getCachedColumns(): array - { - return $this->cachedColumns ??= array_map( - fn (ImportColumn $column) => $column->importer($this), - static::getColumns(), - ); - } - - public function getRecord(): ?Model - { - return $this->record; - } - - /** - * @return array - */ - public function getOriginalData(): array - { - return $this->originalData; - } - - /** - * @return array - */ - public function getData(): array - { - return $this->data; - } - - /** - * @return array - */ - public function getOptions(): array - { - return $this->options; - } - - protected function callHook(string $hook): void - { - if (! method_exists($this, $hook)) { - return; - } - - $this->{$hook}(); - } - - public function getImport(): Import - { - return $this->import; - } -} diff --git a/vendor/filament/actions/src/Imports/Jobs/ImportCsv.php b/vendor/filament/actions/src/Imports/Jobs/ImportCsv.php deleted file mode 100644 index 4d7943c0..00000000 --- a/vendor/filament/actions/src/Imports/Jobs/ImportCsv.php +++ /dev/null @@ -1,162 +0,0 @@ -> | string $rows - * @param array $columnMap - * @param array $options - */ - public function __construct( - protected Import $import, - protected array | string $rows, - protected array $columnMap, - protected array $options = [], - ) { - $this->importer = $this->import->getImporter( - $this->columnMap, - $this->options, - ); - } - - /** - * @return array - */ - public function middleware(): array - { - return $this->importer->getJobMiddleware(); - } - - public function handle(): void - { - /** @var Authenticatable $user */ - $user = $this->import->user; - - auth()->login($user); - - $exceptions = []; - - $processedRows = 0; - $successfulRows = 0; - - if (! is_array($this->rows)) { - $rows = unserialize(base64_decode($this->rows)); - } - - foreach (($rows ?? $this->rows) as $row) { - $row = $this->utf8Encode($row); - - try { - DB::transaction(fn () => ($this->importer)($row)); - $successfulRows++; - } catch (ValidationException $exception) { - $this->logFailedRow($row, collect($exception->errors())->flatten()->implode(' ')); - } catch (Throwable $exception) { - $exceptions[$exception::class] = $exception; - - $this->logFailedRow($row); - } - - $processedRows++; - } - - $this->import->refresh(); - - $importProcessedRows = $this->import->processed_rows + $processedRows; - $this->import->processed_rows = ($importProcessedRows < $this->import->total_rows) ? - $importProcessedRows : - $this->import->total_rows; - - $importSuccessfulRows = $this->import->successful_rows + $successfulRows; - $this->import->successful_rows = ($importSuccessfulRows < $this->import->total_rows) ? - $importSuccessfulRows : - $this->import->total_rows; - - $this->import->save(); - - $this->handleExceptions($exceptions); - } - - public function retryUntil(): ?CarbonInterface - { - return $this->importer->getJobRetryUntil(); - } - - /** - * @return array - */ - public function tags(): array - { - return $this->importer->getJobTags(); - } - - /** - * @param array $data - */ - protected function logFailedRow(array $data, ?string $validationError = null): void - { - $failedRow = app(FailedImportRow::class); - $failedRow->import()->associate($this->import); - $failedRow->data = $data; - $failedRow->validation_error = $validationError; - $failedRow->save(); - } - - protected function utf8Encode(mixed $value): mixed - { - if (is_array($value)) { - return array_map($this->utf8Encode(...), $value); - } - - if (is_string($value)) { - return mb_convert_encoding($value, 'UTF-8', 'UTF-8'); - } - - return $value; - } - - /** - * @param array $exceptions - */ - protected function handleExceptions(array $exceptions): void - { - if (empty($exceptions)) { - return; - } - - if (count($exceptions) > 1) { - throw new Exception('Multiple types of exceptions occurred: [' . implode('], [', array_keys($exceptions)) . ']'); - } - - throw Arr::first($exceptions); - } -} diff --git a/vendor/filament/actions/src/Imports/Models/FailedImportRow.php b/vendor/filament/actions/src/Imports/Models/FailedImportRow.php deleted file mode 100644 index adda2241..00000000 --- a/vendor/filament/actions/src/Imports/Models/FailedImportRow.php +++ /dev/null @@ -1,38 +0,0 @@ - 'array', - ]; - - protected $guarded = []; - - public function import(): BelongsTo - { - return $this->belongsTo(app(Import::class)::class); - } - - public function prunable(): Builder - { - return static::where( - 'created_at', - '<=', - now()->subMonth(), - ); - } -} diff --git a/vendor/filament/actions/src/Imports/Models/Import.php b/vendor/filament/actions/src/Imports/Models/Import.php deleted file mode 100644 index 7d100491..00000000 --- a/vendor/filament/actions/src/Imports/Models/Import.php +++ /dev/null @@ -1,94 +0,0 @@ - $importer - * @property int $processed_rows - * @property int $total_rows - * @property int $successful_rows - * @property-read Collection $failedRows - * @property-read Authenticatable $user - */ -class Import extends Model -{ - use Prunable; - - protected $casts = [ - 'completed_at' => 'timestamp', - 'processed_rows' => 'integer', - 'total_rows' => 'integer', - 'successful_rows' => 'integer', - ]; - - protected $guarded = []; - - protected static bool $hasPolymorphicUserRelationship = false; - - public function failedRows(): HasMany - { - return $this->hasMany(app(FailedImportRow::class)::class); - } - - public function user(): BelongsTo - { - if (static::hasPolymorphicUserRelationship()) { - return $this->morphTo(); - } - - $authenticatable = app(Authenticatable::class); - - if ($authenticatable) { - return $this->belongsTo($authenticatable::class); - } - - if (! class_exists(\App\Models\User::class)) { - throw new Exception('No [App\\Models\\User] model found. Please bind an authenticatable model to the [Illuminate\\Contracts\\Auth\\Authenticatable] interface in a service provider\'s [register()] method.'); - } - - return $this->belongsTo(\App\Models\User::class); - } - - /** - * @param array $columnMap - * @param array $options - */ - public function getImporter( - array $columnMap, - array $options, - ): Importer { - return app($this->importer, [ - 'import' => $this, - 'columnMap' => $columnMap, - 'options' => $options, - ]); - } - - public function getFailedRowsCount(): int - { - return $this->total_rows - $this->successful_rows; - } - - public static function polymorphicUserRelationship(bool $condition = true): void - { - static::$hasPolymorphicUserRelationship = $condition; - } - - public static function hasPolymorphicUserRelationship(): bool - { - return static::$hasPolymorphicUserRelationship; - } -} diff --git a/vendor/filament/actions/src/Modal/Actions/Action.php b/vendor/filament/actions/src/Modal/Actions/Action.php deleted file mode 100644 index 0880de43..00000000 --- a/vendor/filament/actions/src/Modal/Actions/Action.php +++ /dev/null @@ -1,12 +0,0 @@ -defaultView(static::BUTTON_VIEW); - - $this->failureNotification(fn (Notification $notification): Notification => $notification); - $this->successNotification(fn (Notification $notification): Notification => $notification); - } - - /** - * @param array $parameters - */ - public function call(array $parameters = []): mixed - { - return $this->evaluate($this->getActionFunction(), $parameters); - } - - public function cancel(): void - { - throw new Cancel(); - } - - public function halt(): void - { - throw new Halt(); - } - - /** - * @deprecated Use `halt()` instead. - */ - public function hold(): void - { - $this->halt(); - } - - public function success(): void - { - $this->sendSuccessNotification(); - $this->dispatchSuccessRedirect(); - } - - public function failure(): void - { - $this->sendFailureNotification(); - $this->dispatchFailureRedirect(); - } - - /** - * @return array - */ - protected function resolveDefaultClosureDependencyForEvaluationByName(string $parameterName): array - { - return match ($parameterName) { - 'arguments' => [$this->getArguments()], - 'data' => [$this->getFormData()], - 'livewire' => [$this->getLivewire()], - default => parent::resolveDefaultClosureDependencyForEvaluationByName($parameterName), - }; - } -} diff --git a/vendor/filament/actions/src/ReplicateAction.php b/vendor/filament/actions/src/ReplicateAction.php deleted file mode 100644 index 9def33dd..00000000 --- a/vendor/filament/actions/src/ReplicateAction.php +++ /dev/null @@ -1,21 +0,0 @@ -baseSetUp(); - - $this->groupedIcon(FilamentIcon::resolve('actions::replicate-action.grouped') ?? 'heroicon-m-square-2-stack'); - } -} diff --git a/vendor/filament/actions/src/RestoreAction.php b/vendor/filament/actions/src/RestoreAction.php deleted file mode 100644 index 6bc2be15..00000000 --- a/vendor/filament/actions/src/RestoreAction.php +++ /dev/null @@ -1,64 +0,0 @@ -label(__('filament-actions::restore.single.label')); - - $this->modalHeading(fn (): string => __('filament-actions::restore.single.modal.heading', ['label' => $this->getRecordTitle()])); - - $this->modalSubmitActionLabel(__('filament-actions::restore.single.modal.actions.restore.label')); - - $this->successNotificationTitle(__('filament-actions::restore.single.notifications.restored.title')); - - $this->color('gray'); - - $this->groupedIcon(FilamentIcon::resolve('actions::restore-action.grouped') ?? 'heroicon-m-arrow-uturn-left'); - - $this->requiresConfirmation(); - - $this->modalIcon(FilamentIcon::resolve('actions::restore-action.modal') ?? 'heroicon-o-arrow-uturn-left'); - - $this->action(function (Model $record): void { - if (! method_exists($record, 'restore')) { - $this->failure(); - - return; - } - - $result = $this->process(static fn () => $record->restore()); - - if (! $result) { - $this->failure(); - - return; - } - - $this->success(); - }); - - $this->visible(static function (Model $record): bool { - if (! method_exists($record, 'trashed')) { - return false; - } - - return $record->trashed(); - }); - } -} diff --git a/vendor/filament/actions/src/SelectAction.php b/vendor/filament/actions/src/SelectAction.php deleted file mode 100644 index 502780ac..00000000 --- a/vendor/filament/actions/src/SelectAction.php +++ /dev/null @@ -1,15 +0,0 @@ -view('filament-actions::select-action'); - } -} diff --git a/vendor/filament/actions/src/StaticAction.php b/vendor/filament/actions/src/StaticAction.php deleted file mode 100644 index c3a04988..00000000 --- a/vendor/filament/actions/src/StaticAction.php +++ /dev/null @@ -1,213 +0,0 @@ -name($name); - } - - public static function make(?string $name = null): static - { - $static = app(static::class, [ - 'name' => $name ?? static::getDefaultName(), - ]); - $static->configure(); - - return $static; - } - - public function isBadge(): bool - { - return $this->getView() === static::BADGE_VIEW; - } - - public function button(): static - { - return $this->view(static::BUTTON_VIEW); - } - - public function isButton(): bool - { - return $this->getView() === static::BUTTON_VIEW; - } - - public function grouped(): static - { - return $this->view(static::GROUPED_VIEW); - } - - public function iconButton(): static - { - return $this->view(static::ICON_BUTTON_VIEW); - } - - public function isIconButton(): bool - { - return $this->getView() === static::ICON_BUTTON_VIEW; - } - - public function link(): static - { - return $this->view(static::LINK_VIEW); - } - - public function isLink(): bool - { - return $this->getView() === static::LINK_VIEW; - } - - public function alpineClickHandler(string | Closure | null $handler): static - { - $this->alpineClickHandler = $handler; - $this->livewireClickHandlerEnabled(blank($handler)); - - return $this; - } - - public static function getDefaultName(): ?string - { - return null; - } - - public function getLivewireClickHandler(): ?string - { - if (! $this->isLivewireClickHandlerEnabled()) { - return null; - } - - if (is_string($this->action)) { - return $this->action; - } - - if ($event = $this->getLivewireEventClickHandler()) { - return $event; - } - - if ($handler = $this->getParentActionCallLivewireClickHandler()) { - $handler .= '('; - $handler .= Js::from($this->getArguments()); - $handler .= ')'; - - return $handler; - } - - return null; - } - - public function getLivewireEventClickHandler(): ?string - { - $event = $this->getEvent(); - - if (blank($event)) { - return null; - } - - $arguments = ''; - - if ($component = $this->getDispatchToComponent()) { - $arguments .= Js::from($component)->toHtml(); - $arguments .= ', '; - } - - $arguments .= Js::from($event)->toHtml(); - - if ($this->getEventData()) { - $arguments .= ', '; - $arguments .= Js::from($this->getEventData())->toHtml(); - } - - return match ($this->getDispatchDirection()) { - 'self' => "\$dispatchSelf($arguments)", - 'to' => "\$dispatchTo($arguments)", - default => "\$dispatch($arguments)" - }; - } - - public function getAlpineClickHandler(): ?string - { - if (filled($handler = $this->evaluate($this->alpineClickHandler))) { - return $handler; - } - - if (! $this->shouldClose()) { - return null; - } - - return 'close()'; - } - - public function livewireTarget(?string $target): static - { - $this->livewireTarget = $target; - - return $this; - } - - public function getLivewireTarget(): ?string - { - return $this->livewireTarget; - } - - /** - * @deprecated Use `extraAttributes()` instead. - * - * @param array $attributes - */ - public function withAttributes(array $attributes): static - { - return $this->extraAttributes($attributes); - } -} diff --git a/vendor/filament/actions/src/Testing/TestsActions.php b/vendor/filament/actions/src/Testing/TestsActions.php deleted file mode 100644 index 77ee0504..00000000 --- a/vendor/filament/actions/src/Testing/TestsActions.php +++ /dev/null @@ -1,692 +0,0 @@ - $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - foreach ($name as $actionNestingIndex => $actionName) { - $this->call( - 'mountAction', - $actionName, - $arguments[$actionName] ?? ($actionNestingIndex ? [] : $arguments), - ); - } - - if (store($this->instance())->has('redirect')) { - return $this; - } - - if (! count($this->instance()->mountedActions)) { - $this->assertNotDispatched('open-modal'); - - return $this; - } - - $this->assertSet('mountedActions', $name); - - $this->assertDispatched('open-modal', id: "{$this->instance()->getId()}-action"); - - return $this; - }; - } - - public function unmountAction(): Closure - { - return function (): static { - $this->call('unmountAction'); - - return $this; - }; - } - - public function setActionData(): Closure - { - return function (array $data): static { - foreach (Arr::dot($data, prepend: 'mountedActionsData.' . array_key_last($this->instance()->mountedActionsData) . '.') as $key => $value) { - $this->set($key, $value); - } - - return $this; - }; - } - - public function assertActionDataSet(): Closure - { - return function (array $data): static { - foreach (Arr::dot($data, prepend: 'mountedActionsData.' . array_key_last($this->instance()->mountedActionsData) . '.') as $key => $value) { - $this->assertSet($key, $value); - } - - return $this; - }; - } - - public function callAction(): Closure - { - return function (string | array $name, array $data = [], array $arguments = []): static { - /** @phpstan-ignore-next-line */ - $this->assertActionVisible($name); - - /** @phpstan-ignore-next-line */ - $this->mountAction($name, $arguments); - - if (! $this->instance()->getMountedAction()) { - return $this; - } - - /** @phpstan-ignore-next-line */ - $this->setActionData($data); - - /** @phpstan-ignore-next-line */ - $this->callMountedAction($arguments); - - return $this; - }; - } - - public function callMountedAction(): Closure - { - return function (array $arguments = []): static { - $action = $this->instance()->getMountedAction(); - - if (! $action) { - return $this; - } - - $this->call('callMountedAction', $arguments); - - if (store($this->instance())->has('redirect')) { - return $this; - } - - if (! count($this->instance()->mountedActions)) { - $this->assertDispatched('close-modal', id: "{$this->instance()->getId()}-action"); - } - - return $this; - }; - } - - public function assertActionExists(): Closure - { - return function (string | array $name): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - $action = $this->instance()->getAction($name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', $name); - - Assert::assertInstanceOf( - Action::class, - $action, - message: "Failed asserting that an action with name [{$prettyName}] exists on the [{$livewireClass}] page.", - ); - - return $this; - }; - } - - public function assertActionDoesNotExist(): Closure - { - return function (string | array $name): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - try { - $action = $this->instance()->getAction($name); - } catch (Exception $exception) { - $action = null; - } - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', $name); - - Assert::assertNull( - $action, - message: "Failed asserting that an action with name [{$prettyName}] does not exist on the [{$livewireClass}] page.", - ); - - return $this; - }; - } - - public function assertActionVisible(): Closure - { - return function (string | array $name): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - /** @phpstan-ignore-next-line */ - $this->assertActionExists($name); - - $action = $this->instance()->getAction($name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', $name); - - Assert::assertFalse( - $action->isHidden(), - message: "Failed asserting that an action with name [{$prettyName}] is visible on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertActionHidden(): Closure - { - return function (string | array $name): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - /** @phpstan-ignore-next-line */ - $this->assertActionExists($name); - - $action = $this->instance()->getAction($name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', $name); - - Assert::assertTrue( - $action->isHidden(), - message: "Failed asserting that an action with name [{$prettyName}] is hidden on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertActionEnabled(): Closure - { - return function (string | array $name): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - /** @phpstan-ignore-next-line */ - $this->assertActionExists($name); - - $action = $this->instance()->getAction($name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', $name); - - Assert::assertTrue( - $action->isEnabled(), - message: "Failed asserting that an action with name [{$prettyName}] is enabled on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertActionDisabled(): Closure - { - return function (string | array $name): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - /** @phpstan-ignore-next-line */ - $this->assertActionExists($name); - - $action = $this->instance()->getAction($name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', $name); - - Assert::assertTrue( - $action->isDisabled(), - message: "Failed asserting that an action with name [{$prettyName}] is disabled on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertActionHasIcon(): Closure - { - return function (string | array $name, string $icon, $record = null): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - /** @phpstan-ignore-next-line */ - $this->assertActionExists($name); - - $action = $this->instance()->getAction($name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', $name); - - Assert::assertTrue( - $action->getIcon() === $icon, - message: "Failed asserting that an action with name [{$prettyName}] has icon [{$icon}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertActionDoesNotHaveIcon(): Closure - { - return function (string | array $name, string $icon, $record = null): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - /** @phpstan-ignore-next-line */ - $this->assertActionExists($name); - - $action = $this->instance()->getAction($name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', $name); - - Assert::assertFalse( - $action->getIcon() === $icon, - message: "Failed asserting that an action with name [{$prettyName}] does not have icon [{$icon}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertActionHasLabel(): Closure - { - return function (string | array $name, string $label, $record = null): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - /** @phpstan-ignore-next-line */ - $this->assertActionExists($name); - - $action = $this->instance()->getAction($name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', $name); - - Assert::assertTrue( - $action->getLabel() === $label, - message: "Failed asserting that an action with name [{$prettyName}] has label [{$label}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertActionDoesNotHaveLabel(): Closure - { - return function (string | array $name, string $label, $record = null): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - /** @phpstan-ignore-next-line */ - $this->assertActionExists($name); - - $action = $this->instance()->getAction($name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', $name); - - Assert::assertFalse( - $action->getLabel() === $label, - message: "Failed asserting that an action with name [{$prettyName}] does not have label [{$label}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertActionHasColor(): Closure - { - return function (string | array $name, string | array $color, $record = null): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - /** @phpstan-ignore-next-line */ - $this->assertActionExists($name); - - $action = $this->instance()->getAction($name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', $name); - - Assert::assertTrue( - $action->getColor() === $color, - message: "Failed asserting that an action with name [{$prettyName}] has color [{$color}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertActionDoesNotHaveColor(): Closure - { - return function (string | array $name, string | array $color, $record = null): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - /** @phpstan-ignore-next-line */ - $this->assertActionExists($name); - - $action = $this->instance()->getAction($name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', $name); - - Assert::assertFalse( - $action->getColor() === $color, - message: "Failed asserting that an action with name [{$prettyName}] does not have color [{$color}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertActionHasUrl(): Closure - { - return function (string | array $name, string $url, $record = null): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - /** @phpstan-ignore-next-line */ - $this->assertActionExists($name); - - $action = $this->instance()->getAction($name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', $name); - - Assert::assertTrue( - $action->getUrl() === $url, - message: "Failed asserting that an action with name [{$prettyName}] has URL [{$url}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertActionDoesNotHaveUrl(): Closure - { - return function (string | array $name, string $url, $record = null): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - /** @phpstan-ignore-next-line */ - $this->assertActionExists($name); - - $action = $this->instance()->getAction($name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', $name); - - Assert::assertFalse( - $action->getUrl() === $url, - message: "Failed asserting that an action with name [{$prettyName}] does not have URL [{$url}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertActionShouldOpenUrlInNewTab(): Closure - { - return function (string | array $name, $record = null): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - /** @phpstan-ignore-next-line */ - $this->assertActionExists($name); - - $action = $this->instance()->getAction($name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', $name); - - Assert::assertTrue( - $action->shouldOpenUrlInNewTab(), - message: "Failed asserting that an action with name [{$prettyName}] should open url in new tab on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertActionShouldNotOpenUrlInNewTab(): Closure - { - return function (string | array $name, $record = null): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - /** @phpstan-ignore-next-line */ - $this->assertActionExists($name); - - $action = $this->instance()->getAction($name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', $name); - - Assert::assertFalse( - $action->shouldOpenUrlInNewTab(), - message: "Failed asserting that an action with name [{$prettyName}] should not open url in new tab on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertActionMounted(): Closure - { - return function (string | array $name): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - /** @phpstan-ignore-next-line */ - $this->assertActionExists($name); - - $this->assertSet('mountedActions', $name); - - return $this; - }; - } - - public function assertActionNotMounted(): Closure - { - return function (string | array $name): static { - /** @var array $name */ - /** @phpstan-ignore-next-line */ - $name = $this->parseNestedActionName($name); - - /** @phpstan-ignore-next-line */ - $this->assertActionExists($name); - - $this->assertNotSet('mountedActions', $name); - - return $this; - }; - } - - public function assertActionHalted(): Closure - { - return $this->assertActionMounted(); - } - - /** - * @deprecated Use `assertActionHalted()` instead. - */ - public function assertActionHeld(): Closure - { - return $this->assertActionHalted(); - } - - public function assertHasActionErrors(): Closure - { - return function (array $keys = []): static { - $this->assertHasErrors( - collect($keys) - ->mapWithKeys(function ($value, $key): array { - if (is_int($key)) { - return [$key => 'mountedActionsData.' . array_key_last($this->instance()->mountedActionsData) . '.' . $value]; - } - - return ['mountedActionsData.' . array_key_last($this->instance()->mountedActionsData) . '.' . $key => $value]; - }) - ->all(), - ); - - return $this; - }; - } - - public function assertHasNoActionErrors(): Closure - { - return function (array $keys = []): static { - $this->assertHasNoErrors( - collect($keys) - ->mapWithKeys(function ($value, $key): array { - if (is_int($key)) { - return [$key => 'mountedActionsData.' . array_key_last($this->instance()->mountedActionsData) . '.' . $value]; - } - - return ['mountedActionsData.' . array_key_last($this->instance()->mountedActionsData) . '.' . $key => $value]; - }) - ->all(), - ); - - return $this; - }; - } - - public function assertActionListInOrder(): Closure - { - return function (array $names, array $actions, string $actionType, string $actionClass): self { - $livewireClass = $this->instance()::class; - - /** @var array $names */ - $names = array_map(fn (string $name): string => $this->parseActionName($name), $names); // @phpstan-ignore-line - $namesIndex = 0; - - $actions = array_reduce( - $actions, - function (array $carry, StaticAction | ActionGroup $action): array { - if ($action instanceof ActionGroup) { - return [ - ...$carry, - ...$action->getFlatActions(), - ]; - } - - $carry[$action->getName()] = $action; - - return $carry; - }, - initial: [], - ); - - foreach ($actions as $actionName => $action) { - if ($namesIndex === count($names)) { - break; - } - - if ($names[$namesIndex] !== $actionName) { - continue; - } - - Assert::assertInstanceOf( - $actionClass, - $action, - message: "Failed asserting that a {$actionType} action with name [{$actionName}] exists on the [{$livewireClass}] component.", - ); - - $namesIndex++; - } - - Assert::assertEquals( - count($names), - $namesIndex, - message: "Failed asserting that a {$actionType} actions with names [" . implode(', ', $names) . "] exist in order on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function parseActionName(): Closure - { - return function (string $name): string { - if (! class_exists($name)) { - return $name; - } - - if (! is_subclass_of($name, MountableAction::class)) { - return $name; - } - - return $name::getDefaultName(); - }; - } - - public function parseNestedActionName(): Closure - { - return function (string | array $name): array { - if (is_string($name)) { - $name = explode('.', $name); - } - - foreach ($name as $actionNestingIndex => $actionName) { - if (! class_exists($actionName)) { - continue; - } - - if (! is_subclass_of($actionName, MountableAction::class)) { - continue; - } - - $name[$actionNestingIndex] = $actionName::getDefaultName(); - } - - return $name; - }; - } -} diff --git a/vendor/filament/actions/src/ViewAction.php b/vendor/filament/actions/src/ViewAction.php deleted file mode 100644 index becf46f8..00000000 --- a/vendor/filament/actions/src/ViewAction.php +++ /dev/null @@ -1,57 +0,0 @@ -label(__('filament-actions::view.single.label')); - - $this->modalHeading(fn (): string => __('filament-actions::view.single.modal.heading', ['label' => $this->getRecordTitle()])); - - $this->modalSubmitAction(false); - $this->modalCancelAction(fn (StaticAction $action) => $action->label(__('filament-actions::view.single.modal.actions.close.label'))); - - $this->color('gray'); - - $this->groupedIcon(FilamentIcon::resolve('actions::view-action.grouped') ?? 'heroicon-m-eye'); - - $this->disabledForm(); - - $this->fillForm(function (HasActions $livewire, Model $record): array { - if ($translatableContentDriver = $livewire->makeFilamentTranslatableContentDriver()) { - $data = $translatableContentDriver->getRecordAttributesToArray($record); - } else { - $data = $record->attributesToArray(); - } - - if ($this->mutateRecordDataUsing) { - $data = $this->evaluate($this->mutateRecordDataUsing, ['data' => $data]); - } - - return $data; - }); - } - - public function mutateRecordDataUsing(?Closure $callback): static - { - $this->mutateRecordDataUsing = $callback; - - return $this; - } -} diff --git a/vendor/filament/actions/stubs/Exporter.stub b/vendor/filament/actions/stubs/Exporter.stub deleted file mode 100644 index 418f5f5d..00000000 --- a/vendor/filament/actions/stubs/Exporter.stub +++ /dev/null @@ -1,31 +0,0 @@ -successful_rows) . ' ' . str('row')->plural($export->successful_rows) . ' exported.'; - - if ($failedRowsCount = $export->getFailedRowsCount()) { - $body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to export.'; - } - - return $body; - } -} diff --git a/vendor/filament/actions/stubs/Importer.stub b/vendor/filament/actions/stubs/Importer.stub deleted file mode 100644 index bf02802b..00000000 --- a/vendor/filament/actions/stubs/Importer.stub +++ /dev/null @@ -1,41 +0,0 @@ -data['column_name']` - // 'email' => $this->data['email'], - // ]); - - return new {{ modelClass }}(); - } - - public static function getCompletedNotificationBody(Import $import): string - { - $body = 'Your {{ modelLabel }} import has completed and ' . number_format($import->successful_rows) . ' ' . str('row')->plural($import->successful_rows) . ' imported.'; - - if ($failedRowsCount = $import->getFailedRowsCount()) { - $body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to import.'; - } - - return $body; - } -} diff --git a/vendor/filament/filament/composer.json b/vendor/filament/filament/composer.json deleted file mode 100644 index 6e0c6fe7..00000000 --- a/vendor/filament/filament/composer.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "filament/filament", - "description": "A collection of full-stack components for accelerated Laravel app development.", - "license": "MIT", - "homepage": "https://github.com/filamentphp/filament", - "support": { - "issues": "https://github.com/filamentphp/filament/issues", - "source": "https://github.com/filamentphp/filament" - }, - "require": { - "php": "^8.1", - "danharrin/livewire-rate-limiting": "^0.3|^1.0", - "filament/actions": "self.version", - "filament/forms": "self.version", - "filament/infolists": "self.version", - "filament/notifications": "self.version", - "filament/support": "self.version", - "filament/tables": "self.version", - "filament/widgets": "self.version", - "illuminate/auth": "^10.0", - "illuminate/console": "^10.0", - "illuminate/contracts": "^10.0", - "illuminate/cookie": "^10.0", - "illuminate/database": "^10.0", - "illuminate/http": "^10.0", - "illuminate/routing": "^10.0", - "illuminate/session": "^10.0", - "illuminate/support": "^10.0", - "illuminate/view": "^10.0", - "spatie/laravel-package-tools": "^1.9" - }, - "autoload": { - "files": [ - "src/global_helpers.php", - "src/helpers.php" - ], - "psr-4": { - "Filament\\": "src" - } - }, - "extra": { - "laravel": { - "providers": [ - "Filament\\FilamentServiceProvider" - ] - } - }, - "config": { - "sort-packages": true - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/vendor/filament/filament/dist/echo.js b/vendor/filament/filament/dist/echo.js deleted file mode 100644 index 2a43d89e..00000000 --- a/vendor/filament/filament/dist/echo.js +++ /dev/null @@ -1,13 +0,0 @@ -(()=>{var wi=Object.create;var he=Object.defineProperty;var ki=Object.getOwnPropertyDescriptor;var Si=Object.getOwnPropertyNames;var Ci=Object.getPrototypeOf,Ti=Object.prototype.hasOwnProperty;var Pi=(l,h)=>()=>(h||l((h={exports:{}}).exports,h),h.exports);var xi=(l,h,a,c)=>{if(h&&typeof h=="object"||typeof h=="function")for(let s of Si(h))!Ti.call(l,s)&&s!==a&&he(l,s,{get:()=>h[s],enumerable:!(c=ki(h,s))||c.enumerable});return l};var Oi=(l,h,a)=>(a=l!=null?wi(Ci(l)):{},xi(h||!l||!l.__esModule?he(a,"default",{value:l,enumerable:!0}):a,l));var ge=Pi((dt,It)=>{(function(h,a){typeof dt=="object"&&typeof It=="object"?It.exports=a():typeof define=="function"&&define.amd?define([],a):typeof dt=="object"?dt.Pusher=a():h.Pusher=a()})(window,function(){return function(l){var h={};function a(c){if(h[c])return h[c].exports;var s=h[c]={i:c,l:!1,exports:{}};return l[c].call(s.exports,s,s.exports,a),s.l=!0,s.exports}return a.m=l,a.c=h,a.d=function(c,s,f){a.o(c,s)||Object.defineProperty(c,s,{enumerable:!0,get:f})},a.r=function(c){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(c,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(c,"__esModule",{value:!0})},a.t=function(c,s){if(s&1&&(c=a(c)),s&8||s&4&&typeof c=="object"&&c&&c.__esModule)return c;var f=Object.create(null);if(a.r(f),Object.defineProperty(f,"default",{enumerable:!0,value:c}),s&2&&typeof c!="string")for(var d in c)a.d(f,d,function(N){return c[N]}.bind(null,d));return f},a.n=function(c){var s=c&&c.__esModule?function(){return c.default}:function(){return c};return a.d(s,"a",s),s},a.o=function(c,s){return Object.prototype.hasOwnProperty.call(c,s)},a.p="",a(a.s=2)}([function(l,h,a){"use strict";var c=this&&this.__extends||function(){var m=function(v,y){return m=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(w,O){w.__proto__=O}||function(w,O){for(var I in O)O.hasOwnProperty(I)&&(w[I]=O[I])},m(v,y)};return function(v,y){m(v,y);function w(){this.constructor=v}v.prototype=y===null?Object.create(y):(w.prototype=y.prototype,new w)}}();Object.defineProperty(h,"__esModule",{value:!0});var s=256,f=function(){function m(v){v===void 0&&(v="="),this._paddingCharacter=v}return m.prototype.encodedLength=function(v){return this._paddingCharacter?(v+2)/3*4|0:(v*8+5)/6|0},m.prototype.encode=function(v){for(var y="",w=0;w>>3*6&63),y+=this._encodeByte(O>>>2*6&63),y+=this._encodeByte(O>>>1*6&63),y+=this._encodeByte(O>>>0*6&63)}var I=v.length-w;if(I>0){var O=v[w]<<16|(I===2?v[w+1]<<8:0);y+=this._encodeByte(O>>>3*6&63),y+=this._encodeByte(O>>>2*6&63),I===2?y+=this._encodeByte(O>>>1*6&63):y+=this._paddingCharacter||"",y+=this._paddingCharacter||""}return y},m.prototype.maxDecodedLength=function(v){return this._paddingCharacter?v/4*3|0:(v*6+7)/8|0},m.prototype.decodedLength=function(v){return this.maxDecodedLength(v.length-this._getPaddingLength(v))},m.prototype.decode=function(v){if(v.length===0)return new Uint8Array(0);for(var y=this._getPaddingLength(v),w=v.length-y,O=new Uint8Array(this.maxDecodedLength(w)),I=0,q=0,M=0,J=0,F=0,z=0,B=0;q>>4,O[I++]=F<<4|z>>>2,O[I++]=z<<6|B,M|=J&s,M|=F&s,M|=z&s,M|=B&s;if(q>>4,M|=J&s,M|=F&s),q>>2,M|=z&s),q>>8&0-65-26+97,y+=51-v>>>8&26-97-52+48,y+=61-v>>>8&52-48-62+43,y+=62-v>>>8&62-43-63+47,String.fromCharCode(y)},m.prototype._decodeChar=function(v){var y=s;return y+=(42-v&v-44)>>>8&-s+v-43+62,y+=(46-v&v-48)>>>8&-s+v-47+63,y+=(47-v&v-58)>>>8&-s+v-48+52,y+=(64-v&v-91)>>>8&-s+v-65+0,y+=(96-v&v-123)>>>8&-s+v-97+26,y},m.prototype._getPaddingLength=function(v){var y=0;if(this._paddingCharacter){for(var w=v.length-1;w>=0&&v[w]===this._paddingCharacter;w--)y++;if(v.length<4||y>2)throw new Error("Base64Coder: incorrect padding")}return y},m}();h.Coder=f;var d=new f;function N(m){return d.encode(m)}h.encode=N;function P(m){return d.decode(m)}h.decode=P;var T=function(m){c(v,m);function v(){return m!==null&&m.apply(this,arguments)||this}return v.prototype._encodeByte=function(y){var w=y;return w+=65,w+=25-y>>>8&0-65-26+97,w+=51-y>>>8&26-97-52+48,w+=61-y>>>8&52-48-62+45,w+=62-y>>>8&62-45-63+95,String.fromCharCode(w)},v.prototype._decodeChar=function(y){var w=s;return w+=(44-y&y-46)>>>8&-s+y-45+62,w+=(94-y&y-96)>>>8&-s+y-95+63,w+=(47-y&y-58)>>>8&-s+y-48+52,w+=(64-y&y-91)>>>8&-s+y-65+0,w+=(96-y&y-123)>>>8&-s+y-97+26,w},v}(f);h.URLSafeCoder=T;var S=new T;function C(m){return S.encode(m)}h.encodeURLSafe=C;function x(m){return S.decode(m)}h.decodeURLSafe=x,h.encodedLength=function(m){return d.encodedLength(m)},h.maxDecodedLength=function(m){return d.maxDecodedLength(m)},h.decodedLength=function(m){return d.decodedLength(m)}},function(l,h,a){"use strict";Object.defineProperty(h,"__esModule",{value:!0});var c="utf8: invalid string",s="utf8: invalid source encoding";function f(P){for(var T=new Uint8Array(d(P)),S=0,C=0;C>6,T[S++]=128|x&63):x<55296?(T[S++]=224|x>>12,T[S++]=128|x>>6&63,T[S++]=128|x&63):(C++,x=(x&1023)<<10,x|=P.charCodeAt(C)&1023,x+=65536,T[S++]=240|x>>18,T[S++]=128|x>>12&63,T[S++]=128|x>>6&63,T[S++]=128|x&63)}return T}h.encode=f;function d(P){for(var T=0,S=0;S=P.length-1)throw new Error(c);S++,T+=4}else throw new Error(c)}return T}h.encodedLength=d;function N(P){for(var T=[],S=0;S=P.length)throw new Error(s);var m=P[++S];if((m&192)!==128)throw new Error(s);C=(C&31)<<6|m&63,x=128}else if(C<240){if(S>=P.length-1)throw new Error(s);var m=P[++S],v=P[++S];if((m&192)!==128||(v&192)!==128)throw new Error(s);C=(C&15)<<12|(m&63)<<6|v&63,x=2048}else if(C<248){if(S>=P.length-2)throw new Error(s);var m=P[++S],v=P[++S],y=P[++S];if((m&192)!==128||(v&192)!==128||(y&192)!==128)throw new Error(s);C=(C&15)<<18|(m&63)<<12|(v&63)<<6|y&63,x=65536}else throw new Error(s);if(C=55296&&C<=57343)throw new Error(s);if(C>=65536){if(C>1114111)throw new Error(s);C-=65536,T.push(String.fromCharCode(55296|C>>10)),C=56320|C&1023}}T.push(String.fromCharCode(C))}return T.join("")}h.decode=N},function(l,h,a){l.exports=a(3).default},function(l,h,a){"use strict";a.r(h);var c=function(){function e(t,n){this.lastId=0,this.prefix=t,this.name=n}return e.prototype.create=function(t){this.lastId++;var n=this.lastId,r=this.prefix+n,i=this.name+"["+n+"]",o=!1,u=function(){o||(t.apply(null,arguments),o=!0)};return this[n]=u,{number:n,id:r,name:i,callback:u}},e.prototype.remove=function(t){delete this[t.number]},e}(),s=new c("_pusher_script_","Pusher.ScriptReceivers"),f={VERSION:"7.6.0",PROTOCOL:7,wsPort:80,wssPort:443,wsPath:"",httpHost:"sockjs.pusher.com",httpPort:80,httpsPort:443,httpPath:"/pusher",stats_host:"stats.pusher.com",authEndpoint:"/pusher/auth",authTransport:"ajax",activityTimeout:12e4,pongTimeout:3e4,unavailableTimeout:1e4,cluster:"mt1",userAuthentication:{endpoint:"/pusher/user-auth",transport:"ajax"},channelAuthorization:{endpoint:"/pusher/auth",transport:"ajax"},cdn_http:"http://js.pusher.com",cdn_https:"https://js.pusher.com",dependency_suffix:""},d=f,N=function(){function e(t){this.options=t,this.receivers=t.receivers||s,this.loading={}}return e.prototype.load=function(t,n,r){var i=this;if(i.loading[t]&&i.loading[t].length>0)i.loading[t].push(r);else{i.loading[t]=[r];var o=b.createScriptRequest(i.getPath(t,n)),u=i.receivers.create(function(p){if(i.receivers.remove(u),i.loading[t]){var _=i.loading[t];delete i.loading[t];for(var g=function(L){L||o.cleanup()},k=0;k<_.length;k++)_[k](p,g)}});o.send(u)}},e.prototype.getRoot=function(t){var n,r=b.getDocument().location.protocol;return t&&t.useTLS||r==="https:"?n=this.options.cdn_https:n=this.options.cdn_http,n.replace(/\/*$/,"")+"/"+this.options.version},e.prototype.getPath=function(t,n){return this.getRoot(n)+"/"+t+this.options.suffix+".js"},e}(),P=N,T=new c("_pusher_dependencies","Pusher.DependenciesReceivers"),S=new P({cdn_http:d.cdn_http,cdn_https:d.cdn_https,version:d.VERSION,suffix:d.dependency_suffix,receivers:T}),C={baseUrl:"https://pusher.com",urls:{authenticationEndpoint:{path:"/docs/channels/server_api/authenticating_users"},authorizationEndpoint:{path:"/docs/channels/server_api/authorizing-users/"},javascriptQuickStart:{path:"/docs/javascript_quick_start"},triggeringClientEvents:{path:"/docs/client_api_guide/client_events#trigger-events"},encryptedChannelSupport:{fullUrl:"https://github.com/pusher/pusher-js/tree/cc491015371a4bde5743d1c87a0fbac0feb53195#encrypted-channel-support"}}},x=function(e){var t="See:",n=C.urls[e];if(!n)return"";var r;return n.fullUrl?r=n.fullUrl:n.path&&(r=C.baseUrl+n.path),r?t+" "+r:""},m={buildLogSuffix:x},v;(function(e){e.UserAuthentication="user-authentication",e.ChannelAuthorization="channel-authorization"})(v||(v={}));var y=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),w=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),O=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),I=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),q=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),M=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),J=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),F=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),z=function(e){y(t,e);function t(n){var r=this.constructor,i=e.call(this,n)||this;return Object.setPrototypeOf(i,r.prototype),i}return t}(Error),B=function(e){y(t,e);function t(n,r){var i=this.constructor,o=e.call(this,r)||this;return o.status=n,Object.setPrototypeOf(o,i.prototype),o}return t}(Error),me=function(e,t,n,r,i){var o=b.createXHR();o.open("POST",n.endpoint,!0),o.setRequestHeader("Content-Type","application/x-www-form-urlencoded");for(var u in n.headers)o.setRequestHeader(u,n.headers[u]);if(n.headersProvider!=null){var p=n.headersProvider();for(var u in p)o.setRequestHeader(u,p[u])}return o.onreadystatechange=function(){if(o.readyState===4)if(o.status===200){var _=void 0,g=!1;try{_=JSON.parse(o.responseText),g=!0}catch{i(new B(200,"JSON returned from "+r.toString()+" endpoint was invalid, yet status code was 200. Data was: "+o.responseText),null)}g&&i(null,_)}else{var k="";switch(r){case v.UserAuthentication:k=m.buildLogSuffix("authenticationEndpoint");break;case v.ChannelAuthorization:k="Clients must be authorized to join private or presence channels. "+m.buildLogSuffix("authorizationEndpoint");break}i(new B(o.status,"Unable to retrieve auth string from "+r.toString()+" endpoint - "+("received status: "+o.status+" from "+n.endpoint+". "+k)),null)}},o.send(t),o},be=me;function we(e){return xe(Te(e))}for(var nt=String.fromCharCode,Z="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ke={},st=0,Se=Z.length;st>>6)+nt(128|t&63):nt(224|t>>>12&15)+nt(128|t>>>6&63)+nt(128|t&63)},Te=function(e){return e.replace(/[^\x00-\x7F]/g,Ce)},Pe=function(e){var t=[0,2,1][e.length%3],n=e.charCodeAt(0)<<16|(e.length>1?e.charCodeAt(1):0)<<8|(e.length>2?e.charCodeAt(2):0),r=[Z.charAt(n>>>18),Z.charAt(n>>>12&63),t>=2?"=":Z.charAt(n>>>6&63),t>=1?"=":Z.charAt(n&63)];return r.join("")},xe=window.btoa||function(e){return e.replace(/[\s\S]{1,3}/g,Pe)},Oe=function(){function e(t,n,r,i){var o=this;this.clear=n,this.timer=t(function(){o.timer&&(o.timer=i(o.timer))},r)}return e.prototype.isRunning=function(){return this.timer!==null},e.prototype.ensureAborted=function(){this.timer&&(this.clear(this.timer),this.timer=null)},e}(),jt=Oe,Nt=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();function Ae(e){window.clearTimeout(e)}function Le(e){window.clearInterval(e)}var Q=function(e){Nt(t,e);function t(n,r){return e.call(this,setTimeout,Ae,n,function(i){return r(),null})||this}return t}(jt),Ee=function(e){Nt(t,e);function t(n,r){return e.call(this,setInterval,Le,n,function(i){return r(),i})||this}return t}(jt),Re={now:function(){return Date.now?Date.now():new Date().valueOf()},defer:function(e){return new Q(0,e)},method:function(e){for(var t=[],n=1;n0)for(var i=0;i=1002&&e.code<=1004?"backoff":null:e.code===4e3?"tls_only":e.code<4100?"refused":e.code<4200?"backoff":e.code<4300?"retry":"refused"},getCloseError:function(e){return e.code!==1e3&&e.code!==1001?{type:"PusherError",data:{code:e.code,message:e.reason||e.message}}:null}},K=Vt,wn=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),kn=function(e){wn(t,e);function t(n,r){var i=e.call(this)||this;return i.id=n,i.transport=r,i.activityTimeout=r.activityTimeout,i.bindListeners(),i}return t.prototype.handlesActivityChecks=function(){return this.transport.handlesActivityChecks()},t.prototype.send=function(n){return this.transport.send(n)},t.prototype.send_event=function(n,r,i){var o={event:n,data:r};return i&&(o.channel=i),A.debug("Event sent",o),this.send(K.encodeMessage(o))},t.prototype.ping=function(){this.transport.supportsPing()?this.transport.ping():this.send_event("pusher:ping",{})},t.prototype.close=function(){this.transport.close()},t.prototype.bindListeners=function(){var n=this,r={message:function(o){var u;try{u=K.decodeMessage(o)}catch(p){n.emit("error",{type:"MessageParseError",error:p,data:o.data})}if(u!==void 0){switch(A.debug("Event recd",u),u.event){case"pusher:error":n.emit("error",{type:"PusherError",data:u.data});break;case"pusher:ping":n.emit("ping");break;case"pusher:pong":n.emit("pong");break}n.emit("message",u)}},activity:function(){n.emit("activity")},error:function(o){n.emit("error",o)},closed:function(o){i(),o&&o.code&&n.handleCloseEvent(o),n.transport=null,n.emit("closed")}},i=function(){W(r,function(o,u){n.transport.unbind(u,o)})};W(r,function(o,u){n.transport.bind(u,o)})},t.prototype.handleCloseEvent=function(n){var r=K.getCloseAction(n),i=K.getCloseError(n);i&&this.emit("error",i),r&&this.emit(r,{action:r,error:i})},t}(V),Sn=kn,Cn=function(){function e(t,n){this.transport=t,this.callback=n,this.bindListeners()}return e.prototype.close=function(){this.unbindListeners(),this.transport.close()},e.prototype.bindListeners=function(){var t=this;this.onMessage=function(n){t.unbindListeners();var r;try{r=K.processHandshake(n)}catch(i){t.finish("error",{error:i}),t.transport.close();return}r.action==="connected"?t.finish("connected",{connection:new Sn(r.id,t.transport),activityTimeout:r.activityTimeout}):(t.finish(r.action,{error:r.error}),t.transport.close())},this.onClosed=function(n){t.unbindListeners();var r=K.getCloseAction(n)||"backoff",i=K.getCloseError(n);t.finish(r,{error:i})},this.transport.bind("message",this.onMessage),this.transport.bind("closed",this.onClosed)},e.prototype.unbindListeners=function(){this.transport.unbind("message",this.onMessage),this.transport.unbind("closed",this.onClosed)},e.prototype.finish=function(t,n){this.callback(U({transport:this.transport,action:t},n))},e}(),Tn=Cn,Pn=function(){function e(t,n){this.timeline=t,this.options=n||{}}return e.prototype.send=function(t,n){this.timeline.isEmpty()||this.timeline.send(b.TimelineTransport.getAgent(this,t),n)},e}(),xn=Pn,On=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),An=function(e){On(t,e);function t(n,r){var i=e.call(this,function(o,u){A.debug("No callbacks on "+n+" for "+o)})||this;return i.name=n,i.pusher=r,i.subscribed=!1,i.subscriptionPending=!1,i.subscriptionCancelled=!1,i}return t.prototype.authorize=function(n,r){return r(null,{auth:""})},t.prototype.trigger=function(n,r){if(n.indexOf("client-")!==0)throw new w("Event '"+n+"' does not start with 'client-'");if(!this.subscribed){var i=m.buildLogSuffix("triggeringClientEvents");A.warn("Client event triggered before channel 'subscription_succeeded' event . "+i)}return this.pusher.send_event(n,r,this.name)},t.prototype.disconnect=function(){this.subscribed=!1,this.subscriptionPending=!1},t.prototype.handleEvent=function(n){var r=n.event,i=n.data;if(r==="pusher_internal:subscription_succeeded")this.handleSubscriptionSucceededEvent(n);else if(r==="pusher_internal:subscription_count")this.handleSubscriptionCountEvent(n);else if(r.indexOf("pusher_internal:")!==0){var o={};this.emit(r,i,o)}},t.prototype.handleSubscriptionSucceededEvent=function(n){this.subscriptionPending=!1,this.subscribed=!0,this.subscriptionCancelled?this.pusher.unsubscribe(this.name):this.emit("pusher:subscription_succeeded",n.data)},t.prototype.handleSubscriptionCountEvent=function(n){n.data.subscription_count&&(this.subscriptionCount=n.data.subscription_count),this.emit("pusher:subscription_count",n.data)},t.prototype.subscribe=function(){var n=this;this.subscribed||(this.subscriptionPending=!0,this.subscriptionCancelled=!1,this.authorize(this.pusher.connection.socket_id,function(r,i){r?(n.subscriptionPending=!1,A.error(r.toString()),n.emit("pusher:subscription_error",Object.assign({},{type:"AuthError",error:r.message},r instanceof B?{status:r.status}:{}))):n.pusher.send_event("pusher:subscribe",{auth:i.auth,channel_data:i.channel_data,channel:n.name})}))},t.prototype.unsubscribe=function(){this.subscribed=!1,this.pusher.send_event("pusher:unsubscribe",{channel:this.name})},t.prototype.cancelSubscription=function(){this.subscriptionCancelled=!0},t.prototype.reinstateSubscription=function(){this.subscriptionCancelled=!1},t}(V),_t=An,Ln=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),En=function(e){Ln(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.authorize=function(n,r){return this.pusher.config.channelAuthorizer({channelName:this.name,socketId:n},r)},t}(_t),mt=En,Rn=function(){function e(){this.reset()}return e.prototype.get=function(t){return Object.prototype.hasOwnProperty.call(this.members,t)?{id:t,info:this.members[t]}:null},e.prototype.each=function(t){var n=this;W(this.members,function(r,i){t(n.get(i))})},e.prototype.setMyID=function(t){this.myID=t},e.prototype.onSubscription=function(t){this.members=t.presence.hash,this.count=t.presence.count,this.me=this.get(this.myID)},e.prototype.addMember=function(t){return this.get(t.user_id)===null&&this.count++,this.members[t.user_id]=t.user_info,this.get(t.user_id)},e.prototype.removeMember=function(t){var n=this.get(t.user_id);return n&&(delete this.members[t.user_id],this.count--),n},e.prototype.reset=function(){this.members={},this.count=0,this.myID=null,this.me=null},e}(),In=Rn,jn=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Nn=function(e,t,n,r){function i(o){return o instanceof n?o:new n(function(u){u(o)})}return new(n||(n=Promise))(function(o,u){function p(k){try{g(r.next(k))}catch(L){u(L)}}function _(k){try{g(r.throw(k))}catch(L){u(L)}}function g(k){k.done?o(k.value):i(k.value).then(p,_)}g((r=r.apply(e,t||[])).next())})},qn=function(e,t){var n={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},r,i,o,u;return u={next:p(0),throw:p(1),return:p(2)},typeof Symbol=="function"&&(u[Symbol.iterator]=function(){return this}),u;function p(g){return function(k){return _([g,k])}}function _(g){if(r)throw new TypeError("Generator is already executing.");for(;n;)try{if(r=1,i&&(o=g[0]&2?i.return:g[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,g[1])).done)return o;switch(i=0,o&&(g=[g[0]&2,o.value]),g[0]){case 0:case 1:o=g;break;case 4:return n.label++,{value:g[1],done:!1};case 5:n.label++,i=g[1],g=[0];continue;case 7:g=n.ops.pop(),n.trys.pop();continue;default:if(o=n.trys,!(o=o.length>0&&o[o.length-1])&&(g[0]===6||g[0]===2)){n=0;continue}if(g[0]===3&&(!o||g[1]>o[0]&&g[1]0&&this.emit("connecting_in",Math.round(n/1e3)),this.retryTimer=new Q(n||0,function(){r.disconnectInternally(),r.connect()})},t.prototype.clearRetryTimer=function(){this.retryTimer&&(this.retryTimer.ensureAborted(),this.retryTimer=null)},t.prototype.setUnavailableTimer=function(){var n=this;this.unavailableTimer=new Q(this.options.unavailableTimeout,function(){n.updateState("unavailable")})},t.prototype.clearUnavailableTimer=function(){this.unavailableTimer&&this.unavailableTimer.ensureAborted()},t.prototype.sendActivityCheck=function(){var n=this;this.stopActivityCheck(),this.connection.ping(),this.activityTimer=new Q(this.options.pongTimeout,function(){n.timeline.error({pong_timed_out:n.options.pongTimeout}),n.retryIn(0)})},t.prototype.resetActivityCheck=function(){var n=this;this.stopActivityCheck(),this.connection&&!this.connection.handlesActivityChecks()&&(this.activityTimer=new Q(this.activityTimeout,function(){n.sendActivityCheck()}))},t.prototype.stopActivityCheck=function(){this.activityTimer&&this.activityTimer.ensureAborted()},t.prototype.buildConnectionCallbacks=function(n){var r=this;return U({},n,{message:function(i){r.resetActivityCheck(),r.emit("message",i)},ping:function(){r.send_event("pusher:pong",{})},activity:function(){r.resetActivityCheck()},error:function(i){r.emit("error",i)},closed:function(){r.abandonConnection(),r.shouldRetry()&&r.retryIn(1e3)}})},t.prototype.buildHandshakeCallbacks=function(n){var r=this;return U({},n,{connected:function(i){r.activityTimeout=Math.min(r.options.activityTimeout,i.activityTimeout,i.connection.activityTimeout||1/0),r.clearUnavailableTimer(),r.setConnection(i.connection),r.socket_id=r.connection.id,r.updateState("connected",{socket_id:r.socket_id})}})},t.prototype.buildErrorCallbacks=function(){var n=this,r=function(i){return function(o){o.error&&n.emit("error",{type:"WebSocketError",error:o.error}),i(o)}};return{tls_only:r(function(){n.usingTLS=!0,n.updateStrategy(),n.retryIn(0)}),refused:r(function(){n.disconnect()}),backoff:r(function(){n.retryIn(1e3)}),retry:r(function(){n.retryIn(0)})}},t.prototype.setConnection=function(n){this.connection=n;for(var r in this.connectionCallbacks)this.connection.bind(r,this.connectionCallbacks[r]);this.resetActivityCheck()},t.prototype.abandonConnection=function(){if(this.connection){this.stopActivityCheck();for(var n in this.connectionCallbacks)this.connection.unbind(n,this.connectionCallbacks[n]);var r=this.connection;return this.connection=null,r}},t.prototype.updateState=function(n,r){var i=this.state;if(this.state=n,i!==n){var o=n;o==="connected"&&(o+=" with new socket ID "+r.socket_id),A.debug("State changed",i+" -> "+o),this.timeline.info({state:n,params:r}),this.emit("state_change",{previous:i,current:n}),this.emit(n,r)}},t.prototype.shouldRetry=function(){return this.state==="connecting"||this.state==="connected"},t}(V),Jn=Xn,Wn=function(){function e(){this.channels={}}return e.prototype.add=function(t,n){return this.channels[t]||(this.channels[t]=Gn(t,n)),this.channels[t]},e.prototype.all=function(){return je(this.channels)},e.prototype.find=function(t){return this.channels[t]},e.prototype.remove=function(t){var n=this.channels[t];return delete this.channels[t],n},e.prototype.disconnect=function(){W(this.channels,function(t){t.disconnect()})},e}(),Vn=Wn;function Gn(e,t){if(e.indexOf("private-encrypted-")===0){if(t.config.nacl)return G.createEncryptedChannel(e,t,t.config.nacl);var n="Tried to subscribe to a private-encrypted- channel but no nacl implementation available",r=m.buildLogSuffix("encryptedChannelSupport");throw new J(n+". "+r)}else{if(e.indexOf("private-")===0)return G.createPrivateChannel(e,t);if(e.indexOf("presence-")===0)return G.createPresenceChannel(e,t);if(e.indexOf("#")===0)throw new O('Cannot create a channel with name "'+e+'".');return G.createChannel(e,t)}}var Qn={createChannels:function(){return new Vn},createConnectionManager:function(e,t){return new Jn(e,t)},createChannel:function(e,t){return new _t(e,t)},createPrivateChannel:function(e,t){return new mt(e,t)},createPresenceChannel:function(e,t){return new Dn(e,t)},createEncryptedChannel:function(e,t,n){return new Fn(e,t,n)},createTimelineSender:function(e,t){return new xn(e,t)},createHandshake:function(e,t){return new Tn(e,t)},createAssistantToTheTransportManager:function(e,t,n){return new bn(e,t,n)}},G=Qn,Kn=function(){function e(t){this.options=t||{},this.livesLeft=this.options.lives||1/0}return e.prototype.getAssistant=function(t){return G.createAssistantToTheTransportManager(this,t,{minPingDelay:this.options.minPingDelay,maxPingDelay:this.options.maxPingDelay})},e.prototype.isAlive=function(){return this.livesLeft>0},e.prototype.reportDeath=function(){this.livesLeft-=1},e}(),Gt=Kn,Yn=function(){function e(t,n){this.strategies=t,this.loop=!!n.loop,this.failFast=!!n.failFast,this.timeout=n.timeout,this.timeoutLimit=n.timeoutLimit}return e.prototype.isSupported=function(){return zt(this.strategies,j.method("isSupported"))},e.prototype.connect=function(t,n){var r=this,i=this.strategies,o=0,u=this.timeout,p=null,_=function(g,k){k?n(null,k):(o=o+1,r.loop&&(o=o%i.length),o0&&(o=new Q(r.timeout,function(){u.abort(),i(!0)})),u=t.connect(n,function(p,_){p&&o&&o.isRunning()&&!r.failFast||(o&&o.ensureAborted(),i(p,_))}),{abort:function(){o&&o.ensureAborted(),u.abort()},forceMinPriority:function(p){u.forceMinPriority(p)}}},e}(),Y=Yn,$n=function(){function e(t){this.strategies=t}return e.prototype.isSupported=function(){return zt(this.strategies,j.method("isSupported"))},e.prototype.connect=function(t,n){return Zn(this.strategies,t,function(r,i){return function(o,u){if(i[r].error=o,o){tr(i)&&n(!0);return}rt(i,function(p){p.forceMinPriority(u.transport.priority)}),n(null,u)}})},e}(),wt=$n;function Zn(e,t,n){var r=Dt(e,function(i,o,u,p){return i.connect(t,n(o,p))});return{abort:function(){rt(r,er)},forceMinPriority:function(i){rt(r,function(o){o.forceMinPriority(i)})}}}function tr(e){return Ue(e,function(t){return!!t.error})}function er(e){!e.error&&!e.aborted&&(e.abort(),e.aborted=!0)}var nr=function(){function e(t,n,r){this.strategy=t,this.transports=n,this.ttl=r.ttl||1800*1e3,this.usingTLS=r.useTLS,this.timeline=r.timeline}return e.prototype.isSupported=function(){return this.strategy.isSupported()},e.prototype.connect=function(t,n){var r=this.usingTLS,i=ir(r),o=[this.strategy];if(i&&i.timestamp+this.ttl>=j.now()){var u=this.transports[i.transport];u&&(this.timeline.info({cached:!0,transport:i.transport,latency:i.latency}),o.push(new Y([u],{timeout:i.latency*2+1e3,failFast:!0})))}var p=j.now(),_=o.pop().connect(t,function g(k,L){k?(Qt(r),o.length>0?(p=j.now(),_=o.pop().connect(t,g)):n(k)):(or(r,L.transport.name,j.now()-p),n(null,L))});return{abort:function(){_.abort()},forceMinPriority:function(g){t=g,_&&_.forceMinPriority(g)}}},e}(),rr=nr;function kt(e){return"pusherTransport"+(e?"TLS":"NonTLS")}function ir(e){var t=b.getLocalStorage();if(t)try{var n=t[kt(e)];if(n)return JSON.parse(n)}catch{Qt(e)}return null}function or(e,t,n){var r=b.getLocalStorage();if(r)try{r[kt(e)]=at({timestamp:j.now(),transport:t,latency:n})}catch{}}function Qt(e){var t=b.getLocalStorage();if(t)try{delete t[kt(e)]}catch{}}var sr=function(){function e(t,n){var r=n.delay;this.strategy=t,this.options={delay:r}}return e.prototype.isSupported=function(){return this.strategy.isSupported()},e.prototype.connect=function(t,n){var r=this.strategy,i,o=new Q(this.options.delay,function(){i=r.connect(t,n)});return{abort:function(){o.ensureAborted(),i&&i.abort()},forceMinPriority:function(u){t=u,i&&i.forceMinPriority(u)}}},e}(),ut=sr,ar=function(){function e(t,n,r){this.test=t,this.trueBranch=n,this.falseBranch=r}return e.prototype.isSupported=function(){var t=this.test()?this.trueBranch:this.falseBranch;return t.isSupported()},e.prototype.connect=function(t,n){var r=this.test()?this.trueBranch:this.falseBranch;return r.connect(t,n)},e}(),it=ar,cr=function(){function e(t){this.strategy=t}return e.prototype.isSupported=function(){return this.strategy.isSupported()},e.prototype.connect=function(t,n){var r=this.strategy.connect(t,function(i,o){o&&r.abort(),n(i,o)});return r},e}(),ur=cr;function ot(e){return function(){return e.isSupported()}}var hr=function(e,t,n){var r={};function i(ce,gi,_i,mi,bi){var ue=n(e,ce,gi,_i,mi,bi);return r[ce]=ue,ue}var o=Object.assign({},t,{hostNonTLS:e.wsHost+":"+e.wsPort,hostTLS:e.wsHost+":"+e.wssPort,httpPath:e.wsPath}),u=Object.assign({},o,{useTLS:!0}),p=Object.assign({},t,{hostNonTLS:e.httpHost+":"+e.httpPort,hostTLS:e.httpHost+":"+e.httpsPort,httpPath:e.httpPath}),_={loop:!0,timeout:15e3,timeoutLimit:6e4},g=new Gt({lives:2,minPingDelay:1e4,maxPingDelay:e.activityTimeout}),k=new Gt({lives:2,minPingDelay:1e4,maxPingDelay:e.activityTimeout}),L=i("ws","ws",3,o,g),X=i("wss","ws",3,u,g),fi=i("sockjs","sockjs",1,p),ne=i("xhr_streaming","xhr_streaming",1,p,k),pi=i("xdr_streaming","xdr_streaming",1,p,k),re=i("xhr_polling","xhr_polling",1,p),di=i("xdr_polling","xdr_polling",1,p),ie=new Y([L],_),vi=new Y([X],_),yi=new Y([fi],_),oe=new Y([new it(ot(ne),ne,pi)],_),se=new Y([new it(ot(re),re,di)],_),ae=new Y([new it(ot(oe),new wt([oe,new ut(se,{delay:4e3})]),se)],_),Pt=new it(ot(ae),ae,yi),xt;return t.useTLS?xt=new wt([ie,new ut(Pt,{delay:2e3})]):xt=new wt([ie,new ut(vi,{delay:2e3}),new ut(Pt,{delay:5e3})]),new rr(new ur(new it(ot(L),xt,Pt)),r,{ttl:18e5,timeline:t.timeline,useTLS:t.useTLS})},lr=hr,fr=function(){var e=this;e.timeline.info(e.buildTimelineMessage({transport:e.name+(e.options.useTLS?"s":"")})),e.hooks.isInitialized()?e.changeState("initialized"):e.hooks.file?(e.changeState("initializing"),S.load(e.hooks.file,{useTLS:e.options.useTLS},function(t,n){e.hooks.isInitialized()?(e.changeState("initialized"),n(!0)):(t&&e.onError(t),e.onClose(),n(!1))})):e.onClose()},pr={getRequest:function(e){var t=new window.XDomainRequest;return t.ontimeout=function(){e.emit("error",new I),e.close()},t.onerror=function(n){e.emit("error",n),e.close()},t.onprogress=function(){t.responseText&&t.responseText.length>0&&e.onChunk(200,t.responseText)},t.onload=function(){t.responseText&&t.responseText.length>0&&e.onChunk(200,t.responseText),e.emit("finished",200),e.close()},t},abortRequest:function(e){e.ontimeout=e.onerror=e.onprogress=e.onload=null,e.abort()}},dr=pr,vr=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var o in i)i.hasOwnProperty(o)&&(r[o]=i[o])},e(t,n)};return function(t,n){e(t,n);function r(){this.constructor=t}t.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),yr=256*1024,gr=function(e){vr(t,e);function t(n,r,i){var o=e.call(this)||this;return o.hooks=n,o.method=r,o.url=i,o}return t.prototype.start=function(n){var r=this;this.position=0,this.xhr=this.hooks.getRequest(this),this.unloader=function(){r.close()},b.addUnloadListener(this.unloader),this.xhr.open(this.method,this.url,!0),this.xhr.setRequestHeader&&this.xhr.setRequestHeader("Content-Type","application/json"),this.xhr.send(n)},t.prototype.close=function(){this.unloader&&(b.removeUnloadListener(this.unloader),this.unloader=null),this.xhr&&(this.hooks.abortRequest(this.xhr),this.xhr=null)},t.prototype.onChunk=function(n,r){for(;;){var i=this.advanceBuffer(r);if(i)this.emit("chunk",{status:n,data:i});else break}this.isBufferTooLong(r)&&this.emit("buffer_too_long")},t.prototype.advanceBuffer=function(n){var r=n.slice(this.position),i=r.indexOf(` -`);return i!==-1?(this.position+=i+1,r.slice(0,i)):null},t.prototype.isBufferTooLong=function(n){return this.position===n.length&&n.length>yr},t}(V),_r=gr,St;(function(e){e[e.CONNECTING=0]="CONNECTING",e[e.OPEN=1]="OPEN",e[e.CLOSED=3]="CLOSED"})(St||(St={}));var $=St,mr=1,br=function(){function e(t,n){this.hooks=t,this.session=Yt(1e3)+"/"+Cr(8),this.location=wr(n),this.readyState=$.CONNECTING,this.openStream()}return e.prototype.send=function(t){return this.sendRaw(JSON.stringify([t]))},e.prototype.ping=function(){this.hooks.sendHeartbeat(this)},e.prototype.close=function(t,n){this.onClose(t,n,!0)},e.prototype.sendRaw=function(t){if(this.readyState===$.OPEN)try{return b.createSocketRequest("POST",Kt(kr(this.location,this.session))).start(t),!0}catch{return!1}else return!1},e.prototype.reconnect=function(){this.closeStream(),this.openStream()},e.prototype.onClose=function(t,n,r){this.closeStream(),this.readyState=$.CLOSED,this.onclose&&this.onclose({code:t,reason:n,wasClean:r})},e.prototype.onChunk=function(t){if(t.status===200){this.readyState===$.OPEN&&this.onActivity();var n,r=t.data.slice(0,1);switch(r){case"o":n=JSON.parse(t.data.slice(1)||"{}"),this.onOpen(n);break;case"a":n=JSON.parse(t.data.slice(1)||"[]");for(var i=0;i0&&e.onChunk(n.status,n.responseText);break;case 4:n.responseText&&n.responseText.length>0&&e.onChunk(n.status,n.responseText),e.emit("finished",n.status),e.close();break}},n},abortRequest:function(e){e.onreadystatechange=null,e.abort()}},Er=Lr,Rr={createStreamingSocket:function(e){return this.createSocket(xr,e)},createPollingSocket:function(e){return this.createSocket(Ar,e)},createSocket:function(e,t){return new Tr(e,t)},createXHR:function(e,t){return this.createRequest(Er,e,t)},createRequest:function(e,t,n){return new _r(e,t,n)}},$t=Rr;$t.createXDR=function(e,t){return this.createRequest(dr,e,t)};var Ir=$t,jr={nextAuthCallbackID:1,auth_callbacks:{},ScriptReceivers:s,DependenciesReceivers:T,getDefaultStrategy:lr,Transports:vn,transportConnectionInitializer:fr,HTTPFactory:Ir,TimelineTransport:Ke,getXHRAPI:function(){return window.XMLHttpRequest},getWebSocketAPI:function(){return window.WebSocket||window.MozWebSocket},setup:function(e){var t=this;window.Pusher=e;var n=function(){t.onDocumentBody(e.ready)};window.JSON?n():S.load("json2",{},n)},getDocument:function(){return document},getProtocol:function(){return this.getDocument().location.protocol},getAuthorizers:function(){return{ajax:be,jsonp:Be}},onDocumentBody:function(e){var t=this;document.body?e():setTimeout(function(){t.onDocumentBody(e)},0)},createJSONPRequest:function(e,t){return new Ve(e,t)},createScriptRequest:function(e){return new Je(e)},getLocalStorage:function(){try{return window.localStorage}catch{return}},createXHR:function(){return this.getXHRAPI()?this.createXMLHttpRequest():this.createMicrosoftXHR()},createXMLHttpRequest:function(){var e=this.getXHRAPI();return new e},createMicrosoftXHR:function(){return new ActiveXObject("Microsoft.XMLHTTP")},getNetwork:function(){return _n},createWebSocket:function(e){var t=this.getWebSocketAPI();return new t(e)},createSocketRequest:function(e,t){if(this.isXHRSupported())return this.HTTPFactory.createXHR(e,t);if(this.isXDRSupported(t.indexOf("https:")===0))return this.HTTPFactory.createXDR(e,t);throw"Cross-origin HTTP requests are not supported"},isXHRSupported:function(){var e=this.getXHRAPI();return!!e&&new e().withCredentials!==void 0},isXDRSupported:function(e){var t=e?"https:":"http:",n=this.getProtocol();return!!window.XDomainRequest&&n===t},addUnloadListener:function(e){window.addEventListener!==void 0?window.addEventListener("unload",e,!1):window.attachEvent!==void 0&&window.attachEvent("onunload",e)},removeUnloadListener:function(e){window.addEventListener!==void 0?window.removeEventListener("unload",e,!1):window.detachEvent!==void 0&&window.detachEvent("onunload",e)},randomInt:function(e){var t=function(){var n=window.crypto||window.msCrypto,r=n.getRandomValues(new Uint32Array(1))[0];return r/Math.pow(2,32)};return Math.floor(t()*e)}},b=jr,Ct;(function(e){e[e.ERROR=3]="ERROR",e[e.INFO=6]="INFO",e[e.DEBUG=7]="DEBUG"})(Ct||(Ct={}));var ht=Ct,Nr=function(){function e(t,n,r){this.key=t,this.session=n,this.events=[],this.options=r||{},this.sent=0,this.uniqueID=0}return e.prototype.log=function(t,n){t<=this.options.level&&(this.events.push(U({},n,{timestamp:j.now()})),this.options.limit&&this.events.length>this.options.limit&&this.events.shift())},e.prototype.error=function(t){this.log(ht.ERROR,t)},e.prototype.info=function(t){this.log(ht.INFO,t)},e.prototype.debug=function(t){this.log(ht.DEBUG,t)},e.prototype.isEmpty=function(){return this.events.length===0},e.prototype.send=function(t,n){var r=this,i=U({session:this.session,bundle:this.sent+1,key:this.key,lib:"js",version:this.options.version,cluster:this.options.cluster,features:this.options.features,timeline:this.events},this.options.params);return this.events=[],t(i,function(o,u){o||r.sent++,n&&n(o,u)}),!0},e.prototype.generateUniqueID=function(){return this.uniqueID++,this.uniqueID},e}(),qr=Nr,Ur=function(){function e(t,n,r,i){this.name=t,this.priority=n,this.transport=r,this.options=i||{}}return e.prototype.isSupported=function(){return this.transport.isSupported({useTLS:this.options.useTLS})},e.prototype.connect=function(t,n){var r=this;if(this.isSupported()){if(this.priority"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Li(l){if(l===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return l}function Ei(l,h){if(h&&(typeof h=="object"||typeof h=="function"))return h;if(h!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Li(l)}function H(l){var h=Ai();return function(){var c=lt(l),s;if(h){var f=lt(this).constructor;s=Reflect.construct(c,arguments,f)}else s=c.apply(this,arguments);return Ei(this,s)}}var Et=function(){function l(){E(this,l)}return R(l,[{key:"listenForWhisper",value:function(a,c){return this.listen(".client-"+a,c)}},{key:"notification",value:function(a){return this.listen(".Illuminate\\Notifications\\Events\\BroadcastNotificationCreated",a)}},{key:"stopListeningForWhisper",value:function(a,c){return this.stopListening(".client-"+a,c)}}]),l}(),pe=function(){function l(h){E(this,l),this.namespace=h}return R(l,[{key:"format",value:function(a){return a.charAt(0)==="."||a.charAt(0)==="\\"?a.substr(1):(this.namespace&&(a=this.namespace+"."+a),a.replace(/\./g,"\\"))}},{key:"setNamespace",value:function(a){this.namespace=a}}]),l}(),pt=function(l){D(a,l);var h=H(a);function a(c,s,f){var d;return E(this,a),d=h.call(this),d.name=s,d.pusher=c,d.options=f,d.eventFormatter=new pe(d.options.namespace),d.subscribe(),d}return R(a,[{key:"subscribe",value:function(){this.subscription=this.pusher.subscribe(this.name)}},{key:"unsubscribe",value:function(){this.pusher.unsubscribe(this.name)}},{key:"listen",value:function(s,f){return this.on(this.eventFormatter.format(s),f),this}},{key:"listenToAll",value:function(s){var f=this;return this.subscription.bind_global(function(d,N){if(!d.startsWith("pusher:")){var P=f.options.namespace.replace(/\./g,"\\"),T=d.startsWith(P)?d.substring(P.length+1):"."+d;s(T,N)}}),this}},{key:"stopListening",value:function(s,f){return f?this.subscription.unbind(this.eventFormatter.format(s),f):this.subscription.unbind(this.eventFormatter.format(s)),this}},{key:"stopListeningToAll",value:function(s){return s?this.subscription.unbind_global(s):this.subscription.unbind_global(),this}},{key:"subscribed",value:function(s){return this.on("pusher:subscription_succeeded",function(){s()}),this}},{key:"error",value:function(s){return this.on("pusher:subscription_error",function(f){s(f)}),this}},{key:"on",value:function(s,f){return this.subscription.bind(s,f),this}}]),a}(Et),Ri=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"whisper",value:function(s,f){return this.pusher.channels.channels[this.name].trigger("client-".concat(s),f),this}}]),a}(pt),Ii=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"whisper",value:function(s,f){return this.pusher.channels.channels[this.name].trigger("client-".concat(s),f),this}}]),a}(pt),ji=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"here",value:function(s){return this.on("pusher:subscription_succeeded",function(f){s(Object.keys(f.members).map(function(d){return f.members[d]}))}),this}},{key:"joining",value:function(s){return this.on("pusher:member_added",function(f){s(f.info)}),this}},{key:"whisper",value:function(s,f){return this.pusher.channels.channels[this.name].trigger("client-".concat(s),f),this}},{key:"leaving",value:function(s){return this.on("pusher:member_removed",function(f){s(f.info)}),this}}]),a}(pt),de=function(l){D(a,l);var h=H(a);function a(c,s,f){var d;return E(this,a),d=h.call(this),d.events={},d.listeners={},d.name=s,d.socket=c,d.options=f,d.eventFormatter=new pe(d.options.namespace),d.subscribe(),d}return R(a,[{key:"subscribe",value:function(){this.socket.emit("subscribe",{channel:this.name,auth:this.options.auth||{}})}},{key:"unsubscribe",value:function(){this.unbind(),this.socket.emit("unsubscribe",{channel:this.name,auth:this.options.auth||{}})}},{key:"listen",value:function(s,f){return this.on(this.eventFormatter.format(s),f),this}},{key:"stopListening",value:function(s,f){return this.unbindEvent(this.eventFormatter.format(s),f),this}},{key:"subscribed",value:function(s){return this.on("connect",function(f){s(f)}),this}},{key:"error",value:function(s){return this}},{key:"on",value:function(s,f){var d=this;return this.listeners[s]=this.listeners[s]||[],this.events[s]||(this.events[s]=function(N,P){d.name===N&&d.listeners[s]&&d.listeners[s].forEach(function(T){return T(P)})},this.socket.on(s,this.events[s])),this.listeners[s].push(f),this}},{key:"unbind",value:function(){var s=this;Object.keys(this.events).forEach(function(f){s.unbindEvent(f)})}},{key:"unbindEvent",value:function(s,f){this.listeners[s]=this.listeners[s]||[],f&&(this.listeners[s]=this.listeners[s].filter(function(d){return d!==f})),(!f||this.listeners[s].length===0)&&(this.events[s]&&(this.socket.removeListener(s,this.events[s]),delete this.events[s]),delete this.listeners[s])}}]),a}(Et),ve=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"whisper",value:function(s,f){return this.socket.emit("client event",{channel:this.name,event:"client-".concat(s),data:f}),this}}]),a}(de),Ni=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"here",value:function(s){return this.on("presence:subscribed",function(f){s(f.map(function(d){return d.user_info}))}),this}},{key:"joining",value:function(s){return this.on("presence:joining",function(f){return s(f.user_info)}),this}},{key:"whisper",value:function(s,f){return this.socket.emit("client event",{channel:this.name,event:"client-".concat(s),data:f}),this}},{key:"leaving",value:function(s){return this.on("presence:leaving",function(f){return s(f.user_info)}),this}}]),a}(ve),ft=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"subscribe",value:function(){}},{key:"unsubscribe",value:function(){}},{key:"listen",value:function(s,f){return this}},{key:"listenToAll",value:function(s){return this}},{key:"stopListening",value:function(s,f){return this}},{key:"subscribed",value:function(s){return this}},{key:"error",value:function(s){return this}},{key:"on",value:function(s,f){return this}}]),a}(Et),fe=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"whisper",value:function(s,f){return this}}]),a}(ft),qi=function(l){D(a,l);var h=H(a);function a(){return E(this,a),h.apply(this,arguments)}return R(a,[{key:"here",value:function(s){return this}},{key:"joining",value:function(s){return this}},{key:"whisper",value:function(s,f){return this}},{key:"leaving",value:function(s){return this}}]),a}(ft),Rt=function(){function l(h){E(this,l),this._defaultOptions={auth:{headers:{}},authEndpoint:"/broadcasting/auth",userAuthentication:{endpoint:"/broadcasting/user-auth",headers:{}},broadcaster:"pusher",csrfToken:null,bearerToken:null,host:null,key:null,namespace:"App.Events"},this.setOptions(h),this.connect()}return R(l,[{key:"setOptions",value:function(a){this.options=At(this._defaultOptions,a);var c=this.csrfToken();return c&&(this.options.auth.headers["X-CSRF-TOKEN"]=c,this.options.userAuthentication.headers["X-CSRF-TOKEN"]=c),c=this.options.bearerToken,c&&(this.options.auth.headers.Authorization="Bearer "+c,this.options.userAuthentication.headers.Authorization="Bearer "+c),a}},{key:"csrfToken",value:function(){var a;return typeof window<"u"&&window.Laravel&&window.Laravel.csrfToken?window.Laravel.csrfToken:this.options.csrfToken?this.options.csrfToken:typeof document<"u"&&typeof document.querySelector=="function"&&(a=document.querySelector('meta[name="csrf-token"]'))?a.getAttribute("content"):null}}]),l}(),Ui=function(l){D(a,l);var h=H(a);function a(){var c;return E(this,a),c=h.apply(this,arguments),c.channels={},c}return R(a,[{key:"connect",value:function(){typeof this.options.client<"u"?this.pusher=this.options.client:this.options.Pusher?this.pusher=new this.options.Pusher(this.options.key,this.options):this.pusher=new Pusher(this.options.key,this.options)}},{key:"signin",value:function(){this.pusher.signin()}},{key:"listen",value:function(s,f,d){return this.channel(s).listen(f,d)}},{key:"channel",value:function(s){return this.channels[s]||(this.channels[s]=new pt(this.pusher,s,this.options)),this.channels[s]}},{key:"privateChannel",value:function(s){return this.channels["private-"+s]||(this.channels["private-"+s]=new Ri(this.pusher,"private-"+s,this.options)),this.channels["private-"+s]}},{key:"encryptedPrivateChannel",value:function(s){return this.channels["private-encrypted-"+s]||(this.channels["private-encrypted-"+s]=new Ii(this.pusher,"private-encrypted-"+s,this.options)),this.channels["private-encrypted-"+s]}},{key:"presenceChannel",value:function(s){return this.channels["presence-"+s]||(this.channels["presence-"+s]=new ji(this.pusher,"presence-"+s,this.options)),this.channels["presence-"+s]}},{key:"leave",value:function(s){var f=this,d=[s,"private-"+s,"private-encrypted-"+s,"presence-"+s];d.forEach(function(N,P){f.leaveChannel(N)})}},{key:"leaveChannel",value:function(s){this.channels[s]&&(this.channels[s].unsubscribe(),delete this.channels[s])}},{key:"socketId",value:function(){return this.pusher.connection.socket_id}},{key:"disconnect",value:function(){this.pusher.disconnect()}}]),a}(Rt),Di=function(l){D(a,l);var h=H(a);function a(){var c;return E(this,a),c=h.apply(this,arguments),c.channels={},c}return R(a,[{key:"connect",value:function(){var s=this,f=this.getSocketIO();return this.socket=f(this.options.host,this.options),this.socket.on("reconnect",function(){Object.values(s.channels).forEach(function(d){d.subscribe()})}),this.socket}},{key:"getSocketIO",value:function(){if(typeof this.options.client<"u")return this.options.client;if(typeof io<"u")return io;throw new Error("Socket.io client not found. Should be globally available or passed via options.client")}},{key:"listen",value:function(s,f,d){return this.channel(s).listen(f,d)}},{key:"channel",value:function(s){return this.channels[s]||(this.channels[s]=new de(this.socket,s,this.options)),this.channels[s]}},{key:"privateChannel",value:function(s){return this.channels["private-"+s]||(this.channels["private-"+s]=new ve(this.socket,"private-"+s,this.options)),this.channels["private-"+s]}},{key:"presenceChannel",value:function(s){return this.channels["presence-"+s]||(this.channels["presence-"+s]=new Ni(this.socket,"presence-"+s,this.options)),this.channels["presence-"+s]}},{key:"leave",value:function(s){var f=this,d=[s,"private-"+s,"presence-"+s];d.forEach(function(N){f.leaveChannel(N)})}},{key:"leaveChannel",value:function(s){this.channels[s]&&(this.channels[s].unsubscribe(),delete this.channels[s])}},{key:"socketId",value:function(){return this.socket.id}},{key:"disconnect",value:function(){this.socket.disconnect()}}]),a}(Rt),Hi=function(l){D(a,l);var h=H(a);function a(){var c;return E(this,a),c=h.apply(this,arguments),c.channels={},c}return R(a,[{key:"connect",value:function(){}},{key:"listen",value:function(s,f,d){return new ft}},{key:"channel",value:function(s){return new ft}},{key:"privateChannel",value:function(s){return new fe}},{key:"encryptedPrivateChannel",value:function(s){return new fe}},{key:"presenceChannel",value:function(s){return new qi}},{key:"leave",value:function(s){}},{key:"leaveChannel",value:function(s){}},{key:"socketId",value:function(){return"fake-socket-id"}},{key:"disconnect",value:function(){}}]),a}(Rt),ye=function(){function l(h){E(this,l),this.options=h,this.connect(),this.options.withoutInterceptors||this.registerInterceptors()}return R(l,[{key:"channel",value:function(a){return this.connector.channel(a)}},{key:"connect",value:function(){this.options.broadcaster=="pusher"?this.connector=new Ui(this.options):this.options.broadcaster=="socket.io"?this.connector=new Di(this.options):this.options.broadcaster=="null"?this.connector=new Hi(this.options):typeof this.options.broadcaster=="function"&&(this.connector=new this.options.broadcaster(this.options))}},{key:"disconnect",value:function(){this.connector.disconnect()}},{key:"join",value:function(a){return this.connector.presenceChannel(a)}},{key:"leave",value:function(a){this.connector.leave(a)}},{key:"leaveChannel",value:function(a){this.connector.leaveChannel(a)}},{key:"leaveAllChannels",value:function(){for(var a in this.connector.channels)this.leaveChannel(a)}},{key:"listen",value:function(a,c,s){return this.connector.listen(a,c,s)}},{key:"private",value:function(a){return this.connector.privateChannel(a)}},{key:"encryptedPrivate",value:function(a){return this.connector.encryptedPrivateChannel(a)}},{key:"socketId",value:function(){return this.connector.socketId()}},{key:"registerInterceptors",value:function(){typeof Vue=="function"&&Vue.http&&this.registerVueRequestInterceptor(),typeof axios=="function"&&this.registerAxiosRequestInterceptor(),typeof jQuery=="function"&&this.registerjQueryAjaxSetup(),(typeof Turbo>"u"?"undefined":Ot(Turbo))==="object"&&this.registerTurboRequestInterceptor()}},{key:"registerVueRequestInterceptor",value:function(){var a=this;Vue.http.interceptors.push(function(c,s){a.socketId()&&c.headers.set("X-Socket-ID",a.socketId()),s()})}},{key:"registerAxiosRequestInterceptor",value:function(){var a=this;axios.interceptors.request.use(function(c){return a.socketId()&&(c.headers["X-Socket-Id"]=a.socketId()),c})}},{key:"registerjQueryAjaxSetup",value:function(){var a=this;typeof jQuery.ajax<"u"&&jQuery.ajaxPrefilter(function(c,s,f){a.socketId()&&f.setRequestHeader("X-Socket-Id",a.socketId())})}},{key:"registerTurboRequestInterceptor",value:function(){var a=this;document.addEventListener("turbo:before-fetch-request",function(c){c.detail.fetchOptions.headers["X-Socket-Id"]=a.socketId()})}}]),l}();var _e=Oi(ge(),1);window.EchoFactory=ye;window.Pusher=_e.default;})(); -/*! Bundled license information: - -pusher-js/dist/web/pusher.js: - (*! - * Pusher JavaScript Library v7.6.0 - * https://pusher.com/ - * - * Copyright 2020, Pusher - * Released under the MIT licence. - *) -*/ diff --git a/vendor/filament/filament/dist/index.js b/vendor/filament/filament/dist/index.js deleted file mode 100644 index 6edaa632..00000000 --- a/vendor/filament/filament/dist/index.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{var Z=Object.create,L=Object.defineProperty,ee=Object.getPrototypeOf,te=Object.prototype.hasOwnProperty,re=Object.getOwnPropertyNames,ne=Object.getOwnPropertyDescriptor,ae=o=>L(o,"__esModule",{value:!0}),ie=(o,n)=>()=>(n||(n={exports:{}},o(n.exports,n)),n.exports),se=(o,n,p)=>{if(n&&typeof n=="object"||typeof n=="function")for(let d of re(n))!te.call(o,d)&&d!=="default"&&L(o,d,{get:()=>n[d],enumerable:!(p=ne(n,d))||p.enumerable});return o},oe=o=>se(ae(L(o!=null?Z(ee(o)):{},"default",o&&o.__esModule&&"default"in o?{get:()=>o.default,enumerable:!0}:{value:o,enumerable:!0})),o),fe=ie((o,n)=>{(function(p,d,P){if(!p)return;for(var h={8:"backspace",9:"tab",13:"enter",16:"shift",17:"ctrl",18:"alt",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"ins",46:"del",91:"meta",93:"meta",224:"meta"},y={106:"*",107:"+",109:"-",110:".",111:"/",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},g={"~":"`","!":"1","@":"2","#":"3",$:"4","%":"5","^":"6","&":"7","*":"8","(":"9",")":"0",_:"-","+":"=",":":";",'"':"'","<":",",">":".","?":"/","|":"\\"},q={option:"alt",command:"meta",return:"enter",escape:"esc",plus:"+",mod:/Mac|iPod|iPhone|iPad/.test(navigator.platform)?"meta":"ctrl"},S,w=1;w<20;++w)h[111+w]="f"+w;for(w=0;w<=9;++w)h[w+96]=w.toString();function O(e,t,a){if(e.addEventListener){e.addEventListener(t,a,!1);return}e.attachEvent("on"+t,a)}function T(e){if(e.type=="keypress"){var t=String.fromCharCode(e.which);return e.shiftKey||(t=t.toLowerCase()),t}return h[e.which]?h[e.which]:y[e.which]?y[e.which]:String.fromCharCode(e.which).toLowerCase()}function $(e,t){return e.sort().join(",")===t.sort().join(",")}function B(e){var t=[];return e.shiftKey&&t.push("shift"),e.altKey&&t.push("alt"),e.ctrlKey&&t.push("ctrl"),e.metaKey&&t.push("meta"),t}function V(e){if(e.preventDefault){e.preventDefault();return}e.returnValue=!1}function H(e){if(e.stopPropagation){e.stopPropagation();return}e.cancelBubble=!0}function C(e){return e=="shift"||e=="ctrl"||e=="alt"||e=="meta"}function J(){if(!S){S={};for(var e in h)e>95&&e<112||h.hasOwnProperty(e)&&(S[h[e]]=e)}return S}function U(e,t,a){return a||(a=J()[e]?"keydown":"keypress"),a=="keypress"&&t.length&&(a="keydown"),a}function X(e){return e==="+"?["+"]:(e=e.replace(/\+{2}/g,"+plus"),e.split("+"))}function I(e,t){var a,c,b,M=[];for(a=X(e),b=0;b1){z(r,m,s,l);return}f=I(r,l),t._callbacks[f.key]=t._callbacks[f.key]||[],j(f.key,f.modifiers,{type:f.action},i,r,u),t._callbacks[f.key][i?"unshift":"push"]({callback:s,modifiers:f.modifiers,action:f.action,seq:i,level:u,combo:r})}t._bindMultiple=function(r,s,l){for(var i=0;i-1||D(t,a.target))return!1;if("composedPath"in e&&typeof e.composedPath=="function"){var c=e.composedPath()[0];c!==e.target&&(t=c)}return t.tagName=="INPUT"||t.tagName=="SELECT"||t.tagName=="TEXTAREA"||t.isContentEditable},v.prototype.handleKey=function(){var e=this;return e._handleKey.apply(e,arguments)},v.addKeycodes=function(e){for(var t in e)e.hasOwnProperty(t)&&(h[t]=e[t]);S=null},v.init=function(){var e=v(d);for(var t in e)t.charAt(0)!=="_"&&(v[t]=function(a){return function(){return e[a].apply(e,arguments)}}(t))},v.init(),p.Mousetrap=v,typeof n<"u"&&n.exports&&(n.exports=v),typeof define=="function"&&define.amd&&define(function(){return v})})(typeof window<"u"?window:null,typeof window<"u"?document:null)}),R=oe(fe());(function(o){if(o){var n={},p=o.prototype.stopCallback;o.prototype.stopCallback=function(d,P,h,y){var g=this;return g.paused?!0:n[h]||n[y]?!1:p.call(g,d,P,h)},o.prototype.bindGlobal=function(d,P,h){var y=this;if(y.bind(d,P,h),d instanceof Array){for(var g=0;g{o.directive("mousetrap",(n,{modifiers:p,expression:d},{evaluate:P})=>{let h=()=>d?P(d):n.click();p=p.map(y=>y.replace("-","+")),p.includes("global")&&(p=p.filter(y=>y!=="global"),R.default.bindGlobal(p,y=>{y.preventDefault(),h()})),R.default.bind(p,y=>{y.preventDefault(),h()})})},F=le;document.addEventListener("alpine:init",()=>{window.Alpine.plugin(F),window.Alpine.store("sidebar",{isOpen:window.Alpine.$persist(!0).as("isOpen"),collapsedGroups:window.Alpine.$persist(null).as("collapsedGroups"),groupIsCollapsed:function(n){return this.collapsedGroups.includes(n)},collapseGroup:function(n){this.collapsedGroups.includes(n)||(this.collapsedGroups=this.collapsedGroups.concat(n))},toggleCollapsedGroup:function(n){this.collapsedGroups=this.collapsedGroups.includes(n)?this.collapsedGroups.filter(p=>p!==n):this.collapsedGroups.concat(n)},close:function(){this.isOpen=!1},open:function(){this.isOpen=!0}});let o=localStorage.getItem("theme")??"system";window.Alpine.store("theme",o==="dark"||o==="system"&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),window.addEventListener("theme-changed",n=>{let p=n.detail;localStorage.setItem("theme",p),p==="system"&&(p=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),window.Alpine.store("theme",p)}),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",n=>{localStorage.getItem("theme")==="system"&&window.Alpine.store("theme",n.matches?"dark":"light")}),window.Alpine.effect(()=>{window.Alpine.store("theme")==="dark"?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")})});})(); diff --git a/vendor/filament/filament/dist/theme.css b/vendor/filament/filament/dist/theme.css deleted file mode 100644 index 1873312d..00000000 --- a/vendor/filament/filament/dist/theme.css +++ /dev/null @@ -1 +0,0 @@ -/*! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com*/*,:after,:before{border-color:rgba(var(--gray-200),1);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{-webkit-text-size-adjust:100%;font-feature-settings:normal;-webkit-tap-highlight-color:transparent;font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-variation-settings:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-feature-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-feature-settings:inherit;color:inherit;font-family:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-400),1);opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-400),1);opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,input:where(:not([type])):focus,select:focus,textarea:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}input::-moz-placeholder,textarea::-moz-placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}input::placeholder,textarea::placeholder{color:rgba(var(--gray-500),var(--tw-text-opacity,1));opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-meridiem-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}select{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='rgba(var(--gray-500), var(--tw-stroke-opacity, 1))' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{--tw-shadow:0 0 #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-origin:border-box;border-color:rgba(var(--gray-500),var(--tw-border-opacity,1));border-width:1px;color:#2563eb;display:inline-block;flex-shrink:0;height:1rem;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid transparent;outline-offset:2px}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}@media (forced-colors:active) {[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:transparent}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:transparent}@media (forced-colors:active) {[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:transparent}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}:root.dark{color-scheme:dark}[data-field-wrapper]{scroll-margin-top:8rem}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-left-color:var(--tw-prose-quote-borders);border-left-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-left:1em;quotes:"\201C""\201D""\2018""\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;text-align:left;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.7142857}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.8888889em;margin-top:.8888889em}.prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.1111111em}.prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.1428571em;line-height:1.2;margin-bottom:.8em;margin-top:0}.prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.4285714em;line-height:1.4;margin-bottom:.8em;margin-top:1.6em}.prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2857143em;line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.5555556em}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.4285714;margin-bottom:.5714286em;margin-top:1.4285714em}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8571429em;padding:.1428571em .3571429em}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.25rem;font-size:.8571429em;line-height:1.6666667;margin-bottom:1.6666667em;margin-top:1.6666667em;padding:.6666667em 1em}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em;padding-left:1.5714286em}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.2857143em;margin-top:.2857143em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4285714em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(.prose-sm>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(.prose-sm>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em}.prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5714286em;margin-top:.5714286em}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.1428571em;margin-top:1.1428571em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.1428571em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.2857143em;padding-left:1.5714286em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2.8571429em;margin-top:2.8571429em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.6666667em;padding-left:1em;padding-right:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.6666667em 1em}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7142857em;margin-top:1.7142857em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-base{font-size:1rem;line-height:1.75}.prose-base :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose-base :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6em;margin-top:1.6em;padding-left:1em}.prose-base :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.25em;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose-base :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.5em;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose-base :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.25em;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose-base :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose-base :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.875em;padding:.1875em .375em}.prose-base :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-base :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-base :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.875em;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;padding:.8571429em 1.1428571em}.prose-base :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em;padding-left:1.625em}.prose-base :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose-base :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose-base :where(.prose-base>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(.prose-base>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(.prose-base>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(.prose-base>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose-base :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose-base :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose-base :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose-base :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose-base :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3em;margin-top:3em}.prose-base :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857}.prose-base :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.5714286em;padding-left:.5714286em;padding-right:.5714286em}.prose-base :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose-base :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-base :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-base :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose-base :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-base :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose-base :where(.prose-base>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-base :where(.prose-base>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-lg{font-size:1.125rem;line-height:1.7777778}.prose-lg :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2222222em;line-height:1.4545455;margin-bottom:1.0909091em;margin-top:1.0909091em}.prose-lg :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.6666667em;margin-top:1.6666667em;padding-left:1em}.prose-lg :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.6666667em;line-height:1;margin-bottom:.8333333em;margin-top:0}.prose-lg :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.6666667em;line-height:1.3333333;margin-bottom:1.0666667em;margin-top:1.8666667em}.prose-lg :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.3333333em;line-height:1.5;margin-bottom:.6666667em;margin-top:1.6666667em}.prose-lg :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){line-height:1.5555556;margin-bottom:.4444444em;margin-top:1.7777778em}.prose-lg :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;font-size:.8888889em;padding:.2222222em .4444444em}.prose-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em}.prose-lg :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8666667em}.prose-lg :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em}.prose-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.375rem;font-size:.8888889em;line-height:1.75;margin-bottom:2em;margin-top:2em;padding:1em 1.5em}.prose-lg :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em;padding-left:1.5555556em}.prose-lg :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.6666667em;margin-top:.6666667em}.prose-lg :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.4444444em}.prose-lg :where(.prose-lg>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(.prose-lg>ul>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ul>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(.prose-lg>ol>li>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em}.prose-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.8888889em;margin-top:.8888889em}.prose-lg :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.3333333em;margin-top:1.3333333em}.prose-lg :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.3333333em}.prose-lg :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6666667em;padding-left:1.5555556em}.prose-lg :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:3.1111111em;margin-top:3.1111111em}.prose-lg :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5}.prose-lg :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-bottom:.75em;padding-left:.75em;padding-right:.75em}.prose-lg :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.75em}.prose-lg :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose-lg :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.7777778em;margin-top:1.7777778em}.prose-lg :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose-lg :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.prose-lg :where(.prose-lg>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-lg :where(.prose-lg>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-4{inset:1rem}.inset-x-0{left:0;right:0}.inset-x-4{left:1rem;right:1rem}.inset-y-0{bottom:0;top:0}.-bottom-1\/2{bottom:-50%}.-top-1{top:-.25rem}.-top-1\/2{top:-50%}.-top-2{top:-.5rem}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-1\/2{bottom:50%}.end-0{inset-inline-end:0}.end-4{inset-inline-end:1rem}.end-6{inset-inline-end:1.5rem}.left-3{left:.75rem}.start-0{inset-inline-start:0}.start-full{inset-inline-start:100%}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1rem}.top-6{top:1.5rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.col-\[--col-span-default\]{grid-column:var(--col-span-default)}.col-span-full{grid-column:1/-1}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.col-start-\[--col-start-default\]{grid-column-start:var(--col-start-default)}.-m-0{margin:0}.-m-0\.5{margin:-.125rem}.-m-1{margin:-.25rem}.-m-1\.5{margin:-.375rem}.-m-2{margin:-.5rem}.-m-2\.5{margin:-.625rem}.-m-3{margin:-.75rem}.-m-3\.5{margin:-.875rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.-my-1{margin-bottom:-.25rem;margin-top:-.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-16{margin-bottom:4rem;margin-top:4rem}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-4{margin-bottom:1rem;margin-top:1rem}.my-auto{margin-bottom:auto;margin-top:auto}.\!mt-0{margin-top:0!important}.-mb-4{margin-bottom:-1rem}.-mb-6{margin-bottom:-1.5rem}.-me-2{margin-inline-end:-.5rem}.-ms-0{margin-inline-start:0}.-ms-0\.5{margin-inline-start:-.125rem}.-ms-1{margin-inline-start:-.25rem}.-ms-2{margin-inline-start:-.5rem}.-mt-3{margin-top:-.75rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.-mt-7{margin-top:-1.75rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.me-1{margin-inline-end:.25rem}.me-4{margin-inline-end:1rem}.me-6{margin-inline-end:1.5rem}.ml-auto{margin-left:auto}.ms-1{margin-inline-start:.25rem}.ms-auto{margin-inline-start:auto}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.h-0{height:0}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-16{height:4rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-\[100dvh\],.h-dvh{height:100dvh}.h-full{height:100%}.h-screen{height:100vh}.max-h-96{max-height:24rem}.min-h-\[theme\(spacing\.48\)\]{min-height:12rem}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-16{width:4rem}.w-20{width:5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[--sidebar-width\]{width:var(--sidebar-width)}.w-\[calc\(100\%\+2rem\)\]{width:calc(100% + 2rem)}.w-auto{width:auto}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-\[theme\(spacing\.4\)\]{min-width:1rem}.min-w-\[theme\(spacing\.5\)\]{min-width:1.25rem}.min-w-\[theme\(spacing\.6\)\]{min-width:1.5rem}.min-w-\[theme\(spacing\.8\)\]{min-width:2rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[14rem\]{max-width:14rem}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-max{max-width:-moz-max-content;max-width:max-content}.max-w-md{max-width:28rem}.max-w-min{max-width:-moz-min-content;max-width:min-content}.max-w-none{max-width:none}.max-w-prose{max-width:65ch}.max-w-screen-2xl{max-width:1536px}.max-w-screen-lg{max-width:1024px}.max-w-screen-md{max-width:768px}.max-w-screen-sm{max-width:640px}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.table-auto{table-layout:auto}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-12,.-translate-x-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-12{--tw-translate-x:-3rem}.-translate-x-5{--tw-translate-x:-1.25rem}.-translate-x-5,.-translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-12{--tw-translate-y:-3rem}.-translate-y-12,.translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.translate-x-12{--tw-translate-x:3rem}.translate-x-12,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem}.translate-x-full{--tw-translate-x:100%}.translate-x-full,.translate-y-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-12{--tw-translate-y:3rem}.-rotate-180{--tw-rotate:-180deg}.-rotate-180,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-100,.scale-95{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-move{cursor:move}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.scroll-mt-9{scroll-margin-top:2.25rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.columns-\[--cols-default\]{-moz-columns:var(--cols-default);columns:var(--cols-default)}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.grid-flow-col{grid-auto-flow:column}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[--cols-default\]{grid-template-columns:var(--cols-default)}.grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.grid-cols-\[repeat\(7\2c minmax\(theme\(spacing\.7\)\2c 1fr\)\)\]{grid-template-columns:repeat(7,minmax(1.75rem,1fr))}.grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.justify-items-center{justify-items:center}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-1\.5{-moz-column-gap:.375rem;column-gap:.375rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-2\.5{-moz-column-gap:.625rem;column-gap:.625rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-1\.5{row-gap:.375rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.gap-y-4{row-gap:1rem}.gap-y-6{row-gap:1.5rem}.gap-y-7{row-gap:1.75rem}.gap-y-8{row-gap:2rem}.gap-y-px{row-gap:1px}.-space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.25rem*var(--tw-space-x-reverse))}.-space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.5rem*var(--tw-space-x-reverse))}.-space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-.75rem*var(--tw-space-x-reverse))}.-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1rem*var(--tw-space-x-reverse))}.-space-x-5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.25rem*var(--tw-space-x-reverse))}.-space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.5rem*var(--tw-space-x-reverse))}.-space-x-7>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-1.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-1.75rem*var(--tw-space-x-reverse))}.-space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(-2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(-2rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:0;border-left-width:calc(1px*(1 - var(--tw-divide-x-reverse)));border-right-width:calc(1px*var(--tw-divide-x-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-100),var(--tw-divide-opacity))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(var(--gray-200),var(--tw-divide-opacity))}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overflow-x-clip{overflow-x:clip}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b-xl{border-bottom-left-radius:.75rem;border-bottom-right-radius:.75rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-x-\[0\.5px\]{border-left-width:.5px;border-right-width:.5px}.border-y{border-bottom-width:1px;border-top-width:1px}.\!border-t-0{border-top-width:0!important}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-e{border-inline-end-width:1px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.\!border-none{border-style:none!important}.border-none{border-style:none}.border-gray-100{--tw-border-opacity:1;border-color:rgba(var(--gray-100),var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(var(--gray-300),var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}.border-primary-500{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.border-primary-600{--tw-border-opacity:1;border-color:rgba(var(--primary-600),var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-t-gray-200{--tw-border-opacity:1;border-top-color:rgba(var(--gray-200),var(--tw-border-opacity))}.\!bg-gray-50{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))!important}.\!bg-gray-700{--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-custom-100{--tw-bg-opacity:1;background-color:rgba(var(--c-100),var(--tw-bg-opacity))}.bg-custom-50{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(var(--gray-200),var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.bg-gray-950\/50{background-color:rgba(var(--gray-950),.5)}.bg-primary-500{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}.bg-primary-600{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\/0{background-color:hsla(0,0%,100%,0)}.bg-white\/5{background-color:hsla(0,0%,100%,.05)}.bg-cover{background-size:cover}.bg-center{background-position:50%}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-0\.5{padding-left:.125rem;padding-right:.125rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-3\.5{padding-bottom:.875rem;padding-top:.875rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-5{padding-bottom:1.25rem;padding-top:1.25rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:.75rem}.pe-4{padding-inline-end:1rem}.pe-6{padding-inline-end:1.5rem}.pe-8{padding-inline-end:2rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:.75rem}.ps-4{padding-inline-start:1rem}.ps-\[5\.25rem\]{padding-inline-start:5.25rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.text-start{text-align:start}.text-end{text-align:end}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.font-serif{font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-extralight{font-weight:200}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.font-thin{font-weight:100}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-loose{line-height:2}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.text-custom-400{--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}.text-custom-50{--tw-text-opacity:1;color:rgba(var(--c-50),var(--tw-text-opacity))}.text-custom-500{--tw-text-opacity:1;color:rgba(var(--c-500),var(--tw-text-opacity))}.text-custom-600{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.text-custom-700\/50{color:rgba(var(--c-700),.5)}.text-danger-600{--tw-text-opacity:1;color:rgba(var(--danger-600),var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity:1;color:rgba(var(--gray-100),var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.text-gray-700\/50{color:rgba(var(--gray-700),.5)}.text-gray-950{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}.text-primary-400{--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.text-primary-500{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.text-primary-600{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-0{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-1,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring-4{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-custom-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.ring-custom-600\/10{--tw-ring-color:rgba(var(--c-600),0.1)}.ring-custom-600\/20{--tw-ring-color:rgba(var(--c-600),0.2)}.ring-danger-600{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.ring-gray-200{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-300),var(--tw-ring-opacity))}.ring-gray-600\/10{--tw-ring-color:rgba(var(--gray-600),0.1)}.ring-gray-900\/10{--tw-ring-color:rgba(var(--gray-900),0.1)}.ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}.ring-gray-950\/5{--tw-ring-color:rgba(var(--gray-950),0.05)}.ring-white{--tw-ring-opacity:1;--tw-ring-color:rgb(255 255 255/var(--tw-ring-opacity))}.ring-white\/10{--tw-ring-color:hsla(0,0%,100%,.1)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.delay-100{transition-delay:.1s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[transform\:translateZ\(0\)\]{transform:translateZ(0)}:is(.dark .dark\:prose-invert){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.placeholder\:text-gray-400::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.placeholder\:text-gray-400::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-y-0:before{bottom:0;content:var(--tw-content);top:0}.before\:start-0:before{content:var(--tw-content);inset-inline-start:0}.before\:h-full:before{content:var(--tw-content);height:100%}.before\:w-0:before{content:var(--tw-content);width:0}.before\:w-0\.5:before{content:var(--tw-content);width:.125rem}.before\:bg-primary-600:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}.first\:border-s-0:first-child{border-inline-start-width:0}.first\:border-t-0:first-child{border-top-width:0}.last\:border-e-0:last-child{border-inline-end-width:0}.first-of-type\:ps-1:first-of-type{padding-inline-start:.25rem}.last-of-type\:pe-1:last-of-type{padding-inline-end:.25rem}.checked\:ring-0:checked{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:bg-gray-50:focus-within{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:bg-custom-400\/10:hover{background-color:rgba(var(--c-400),.1)}.hover\:bg-custom-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.hover\:bg-gray-400\/10:hover{background-color:rgba(var(--gray-400),.1)}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.hover\:text-custom-600:hover{--tw-text-opacity:1;color:rgba(var(--c-600),var(--tw-text-opacity))}.hover\:text-custom-700\/75:hover{color:rgba(var(--c-700),.75)}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.hover\:text-gray-700\/75:hover{color:rgba(var(--gray-700),.75)}.hover\:opacity-100:hover{opacity:1}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-0:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-danger-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.focus\:ring-primary-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.focus\:ring-offset-0:focus{--tw-ring-offset-width:0px}.checked\:focus\:ring-danger-500\/50:focus:checked{--tw-ring-color:rgba(var(--danger-500),0.5)}.checked\:focus\:ring-primary-500\/50:focus:checked{--tw-ring-color:rgba(var(--primary-500),0.5)}.focus-visible\:z-10:focus-visible{z-index:10}.focus-visible\:border-primary-500:focus-visible{--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}.focus-visible\:bg-custom-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--c-50),var(--tw-bg-opacity))}.focus-visible\:bg-gray-100:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-100),var(--tw-bg-opacity))}.focus-visible\:bg-gray-50:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.focus-visible\:text-custom-700\/75:focus-visible{color:rgba(var(--c-700),.75)}.focus-visible\:text-gray-500:focus-visible{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.focus-visible\:text-gray-700\/75:focus-visible{color:rgba(var(--gray-700),.75)}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-inset:focus-visible{--tw-ring-inset:inset}.focus-visible\:ring-custom-500\/50:focus-visible{--tw-ring-color:rgba(var(--c-500),0.5)}.focus-visible\:ring-custom-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-600),var(--tw-ring-opacity))}.focus-visible\:ring-gray-400\/40:focus-visible{--tw-ring-color:rgba(var(--gray-400),0.4)}.focus-visible\:ring-primary-500:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.focus-visible\:ring-primary-600:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}.enabled\:cursor-wait:enabled{cursor:wait}.enabled\:opacity-70:enabled{opacity:.7}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:bg-gray-50:disabled{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.disabled\:text-gray-50:disabled{--tw-text-opacity:1;color:rgba(var(--gray-50),var(--tw-text-opacity))}.disabled\:text-gray-500:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.disabled\:opacity-70:disabled{opacity:.7}.disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled{-webkit-text-fill-color:rgba(var(--gray-500),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled::placeholder{-webkit-text-fill-color:rgba(var(--gray-400),1)}.disabled\:checked\:bg-current:checked:disabled{background-color:currentColor}.disabled\:checked\:text-gray-400:checked:disabled{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.group\/item:first-child .group-first\/item\:rounded-s-lg{border-end-start-radius:.5rem;border-start-start-radius:.5rem}.group\/item:last-child .group-last\/item\:rounded-e-lg{border-end-end-radius:.5rem;border-start-end-radius:.5rem}.group:hover .group-hover\:text-gray-500,.group\/button:hover .group-hover\/button\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:hover .group-hover\/item\:underline,.group\/link:hover .group-hover\/link\:underline{text-decoration-line:underline}.group:focus-visible .group-focus-visible\:text-gray-500{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.group:focus-visible .group-focus-visible\:text-gray-700{--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}.group\/item:focus-visible .group-focus-visible\/item\:underline{text-decoration-line:underline}.group\/link:focus-visible .group-focus-visible\/link\:underline{text-decoration-line:underline}:is(.dark .dark\:inline-flex){display:inline-flex}:is(.dark .dark\:hidden){display:none}:is(.dark .dark\:divide-white\/10)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:divide-white\/5)>:not([hidden])~:not([hidden]){border-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:border-gray-600){--tw-border-opacity:1;border-color:rgba(var(--gray-600),var(--tw-border-opacity))}:is(.dark .dark\:border-gray-700){--tw-border-opacity:1;border-color:rgba(var(--gray-700),var(--tw-border-opacity))}:is(.dark .dark\:border-primary-500){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(.dark .dark\:border-white\/10){border-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:border-white\/5){border-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:border-t-white\/10){border-top-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:\!bg-gray-700){--tw-bg-opacity:1!important;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))!important}:is(.dark .dark\:bg-custom-400\/10){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:bg-custom-500){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-custom-500\/20){background-color:rgba(var(--c-500),.2)}:is(.dark .dark\:bg-gray-400\/10){background-color:rgba(var(--gray-400),.1)}:is(.dark .dark\:bg-gray-500){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-500\/20){background-color:rgba(var(--gray-500),.2)}:is(.dark .dark\:bg-gray-600){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-700){--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-800){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900){--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-900\/30){background-color:rgba(var(--gray-900),.3)}:is(.dark .dark\:bg-gray-950){--tw-bg-opacity:1;background-color:rgba(var(--gray-950),var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-950\/75){background-color:rgba(var(--gray-950),.75)}:is(.dark .dark\:bg-primary-400){--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}:is(.dark .dark\:bg-primary-500){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(.dark .dark\:bg-transparent){background-color:transparent}:is(.dark .dark\:bg-white\/10){background-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:bg-white\/5){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:fill-current){fill:currentColor}:is(.dark .dark\:text-custom-300\/50){color:rgba(var(--c-300),.5)}:is(.dark .dark\:text-custom-400){--tw-text-opacity:1;color:rgba(var(--c-400),var(--tw-text-opacity))}:is(.dark .dark\:text-custom-400\/10){color:rgba(var(--c-400),.1)}:is(.dark .dark\:text-danger-400){--tw-text-opacity:1;color:rgba(var(--danger-400),var(--tw-text-opacity))}:is(.dark .dark\:text-danger-500){--tw-text-opacity:1;color:rgba(var(--danger-500),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-300\/50){color:rgba(var(--gray-300),.5)}:is(.dark .dark\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-500){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-700){--tw-text-opacity:1;color:rgba(var(--gray-700),var(--tw-text-opacity))}:is(.dark .dark\:text-gray-800){--tw-text-opacity:1;color:rgba(var(--gray-800),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-400){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}:is(.dark .dark\:text-primary-500){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}:is(.dark .dark\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\:text-white\/5){color:hsla(0,0%,100%,.05)}:is(.dark .dark\:ring-custom-400\/30){--tw-ring-color:rgba(var(--c-400),0.3)}:is(.dark .dark\:ring-custom-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(.dark .dark\:ring-danger-500){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:ring-gray-400\/20){--tw-ring-color:rgba(var(--gray-400),0.2)}:is(.dark .dark\:ring-gray-50\/10){--tw-ring-color:rgba(var(--gray-50),0.1)}:is(.dark .dark\:ring-gray-700){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-700),var(--tw-ring-opacity))}:is(.dark .dark\:ring-gray-900){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-900),var(--tw-ring-opacity))}:is(.dark .dark\:ring-white\/10){--tw-ring-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:ring-white\/20){--tw-ring-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:placeholder\:text-gray-500)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:placeholder\:text-gray-500)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .dark\:before\:bg-primary-500):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}:is(.dark .dark\:checked\:bg-danger-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--danger-500),var(--tw-bg-opacity))}:is(.dark .dark\:checked\:bg-primary-500:checked){--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity))}:is(.dark .dark\:focus-within\:bg-white\/5:focus-within){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:hover\:bg-custom-400:hover){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-custom-400\/10:hover){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:hover\:bg-white\/10:hover){background-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:hover\:bg-white\/5:hover){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:hover\:text-custom-300:hover){--tw-text-opacity:1;color:rgba(var(--c-300),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-custom-300\/75:hover){color:rgba(var(--c-300),.75)}:is(.dark .dark\:hover\:text-gray-200:hover){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-gray-300\/75:hover){color:rgba(var(--gray-300),.75)}:is(.dark .dark\:hover\:text-gray-400:hover){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:hover\:ring-white\/20:hover){--tw-ring-color:hsla(0,0%,100%,.2)}:is(.dark .dark\:focus\:ring-danger-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus\:ring-primary-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:checked\:focus\:ring-danger-400\/50:focus:checked){--tw-ring-color:rgba(var(--danger-400),0.5)}:is(.dark .dark\:checked\:focus\:ring-primary-400\/50:focus:checked){--tw-ring-color:rgba(var(--primary-400),0.5)}:is(.dark .dark\:focus-visible\:border-primary-500:focus-visible){--tw-border-opacity:1;border-color:rgba(var(--primary-500),var(--tw-border-opacity))}:is(.dark .dark\:focus-visible\:bg-custom-400\/10:focus-visible){background-color:rgba(var(--c-400),.1)}:is(.dark .dark\:focus-visible\:bg-white\/5:focus-visible){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:focus-visible\:text-custom-300\/75:focus-visible){color:rgba(var(--c-300),.75)}:is(.dark .dark\:focus-visible\:text-gray-300\/75:focus-visible){color:rgba(var(--gray-300),.75)}:is(.dark .dark\:focus-visible\:text-gray-400:focus-visible){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:focus-visible\:ring-custom-400\/50:focus-visible){--tw-ring-color:rgba(var(--c-400),0.5)}:is(.dark .dark\:focus-visible\:ring-custom-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--c-500),var(--tw-ring-opacity))}:is(.dark .dark\:focus-visible\:ring-primary-500:focus-visible){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}:is(.dark .dark\:disabled\:bg-transparent:disabled){background-color:transparent}:is(.dark .dark\:disabled\:text-gray-400:disabled){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .dark\:disabled\:ring-white\/10:disabled){--tw-ring-color:hsla(0,0%,100%,.1)}:is(.dark .dark\:disabled\:\[-webkit-text-fill-color\:theme\(colors\.gray\.400\)\]:disabled){-webkit-text-fill-color:rgba(var(--gray-400),1)}:is(.dark .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::-moz-placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(.dark .dark\:disabled\:placeholder\:\[-webkit-text-fill-color\:theme\(colors\.gray\.500\)\]:disabled)::placeholder{-webkit-text-fill-color:rgba(var(--gray-500),1)}:is(.dark .dark\:disabled\:checked\:bg-gray-600:checked:disabled){--tw-bg-opacity:1;background-color:rgba(var(--gray-600),var(--tw-bg-opacity))}:is(.dark .group\/button:hover .dark\:group-hover\/button\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .group:hover .dark\:group-hover\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .group:focus-visible .dark\:group-focus-visible\:text-gray-200){--tw-text-opacity:1;color:rgba(var(--gray-200),var(--tw-text-opacity))}:is(.dark .group:focus-visible .dark\:group-focus-visible\:text-gray-400){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.sm\:relative{position:relative}.sm\:inset-x-auto{left:auto;right:auto}.sm\:end-0{inset-inline-end:0}.sm\:col-\[--col-span-sm\]{grid-column:var(--col-span-sm)}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-start-\[--col-start-sm\]{grid-column-start:var(--col-start-sm)}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:-my-2{margin-bottom:-.5rem;margin-top:-.5rem}.sm\:ms-auto{margin-inline-start:auto}.sm\:mt-7{margin-top:1.75rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:table-cell{display:table-cell}.sm\:grid{display:grid}.sm\:inline-grid{display:inline-grid}.sm\:hidden{display:none}.sm\:w-\[calc\(100\%\+3rem\)\]{width:calc(100% + 3rem)}.sm\:w-screen{width:100vw}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-4xl{max-width:56rem}.sm\:max-w-5xl{max-width:64rem}.sm\:max-w-6xl{max-width:72rem}.sm\:max-w-7xl{max-width:80rem}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-xl{max-width:36rem}.sm\:max-w-xs{max-width:20rem}.sm\:columns-\[--cols-sm\]{-moz-columns:var(--cols-sm);columns:var(--cols-sm)}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[--cols-sm\]{grid-template-columns:var(--cols-sm)}.sm\:grid-cols-\[repeat\(auto-fit\2c minmax\(0\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-1{gap:.25rem}.sm\:gap-3{gap:.75rem}.sm\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.sm\:rounded-xl{border-radius:.75rem}.sm\:p-10{padding:2.5rem}.sm\:px-12{padding-left:3rem;padding-right:3rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-1{padding-bottom:.25rem;padding-top:.25rem}.sm\:py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.sm\:pe-3{padding-inline-end:.75rem}.sm\:pe-6{padding-inline-end:1.5rem}.sm\:ps-3{padding-inline-start:.75rem}.sm\:ps-6{padding-inline-start:1.5rem}.sm\:pt-1{padding-top:.25rem}.sm\:pt-1\.5{padding-top:.375rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:leading-6{line-height:1.5rem}.sm\:first-of-type\:ps-3:first-of-type{padding-inline-start:.75rem}.sm\:first-of-type\:ps-6:first-of-type{padding-inline-start:1.5rem}.sm\:last-of-type\:pe-3:last-of-type{padding-inline-end:.75rem}.sm\:last-of-type\:pe-6:last-of-type{padding-inline-end:1.5rem}}@media (min-width:768px){.md\:bottom-4{bottom:1rem}.md\:order-first{order:-9999}.md\:col-\[--col-span-md\]{grid-column:var(--col-span-md)}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-start-\[--col-start-md\]{grid-column-start:var(--col-start-md)}.md\:block{display:block}.md\:flex{display:flex}.md\:table-cell{display:table-cell}.md\:inline-grid{display:inline-grid}.md\:hidden{display:none}.md\:columns-\[--cols-md\]{-moz-columns:var(--cols-md);columns:var(--cols-md)}.md\:grid-flow-col{grid-auto-flow:column}.md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-\[--cols-md\]{grid-template-columns:var(--cols-md)}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-end{align-items:flex-end}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}.md\:gap-1{gap:.25rem}.md\:gap-3{gap:.75rem}.md\:divide-y-0>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(0px*var(--tw-divide-y-reverse));border-top-width:calc(0px*(1 - var(--tw-divide-y-reverse)))}.md\:rounded-xl{border-radius:.75rem}.md\:p-20{padding:5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:pe-3{padding-inline-end:.75rem}.md\:pe-6{padding-inline-end:1.5rem}.md\:ps-3{padding-inline-start:.75rem}}@media (min-width:1024px){.lg\:sticky{position:sticky}.lg\:z-0{z-index:0}.lg\:col-\[--col-span-lg\]{grid-column:var(--col-span-lg)}.lg\:col-start-\[--col-start-lg\]{grid-column-start:var(--col-start-lg)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:table-cell{display:table-cell}.lg\:inline-grid{display:inline-grid}.lg\:hidden{display:none}.lg\:h-full{height:100%}.lg\:max-w-xs{max-width:20rem}.lg\:-translate-x-full{--tw-translate-x:-100%}.lg\:-translate-x-full,.lg\:translate-x-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:translate-x-0{--tw-translate-x:0px}.lg\:columns-\[--cols-lg\]{-moz-columns:var(--cols-lg);columns:var(--cols-lg)}.lg\:grid-cols-\[--cols-lg\]{grid-template-columns:var(--cols-lg)}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:items-end{align-items:flex-end}.lg\:items-center{align-items:center}.lg\:gap-1{gap:.25rem}.lg\:gap-3{gap:.75rem}.lg\:bg-transparent{background-color:transparent}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pe-8{padding-inline-end:2rem}.lg\:shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.lg\:shadow-none,.lg\:shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.lg\:shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.lg\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.lg\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.lg\:transition-none{transition-property:none}.lg\:delay-100{transition-delay:.1s}:is(.dark .dark\:lg\:bg-transparent){background-color:transparent}}@media (min-width:1280px){.xl\:col-\[--col-span-xl\]{grid-column:var(--col-span-xl)}.xl\:col-start-\[--col-start-xl\]{grid-column-start:var(--col-start-xl)}.xl\:block{display:block}.xl\:table-cell{display:table-cell}.xl\:inline-grid{display:inline-grid}.xl\:hidden{display:none}.xl\:columns-\[--cols-xl\]{-moz-columns:var(--cols-xl);columns:var(--cols-xl)}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-\[--cols-xl\]{grid-template-columns:var(--cols-xl)}.xl\:flex-row{flex-direction:row}.xl\:items-start{align-items:flex-start}.xl\:items-end{align-items:flex-end}.xl\:items-center{align-items:center}.xl\:gap-1{gap:.25rem}.xl\:gap-3{gap:.75rem}}@media (min-width:1536px){.\32xl\:col-\[--col-span-2xl\]{grid-column:var(--col-span-2xl)}.\32xl\:col-start-\[--col-start-2xl\]{grid-column-start:var(--col-start-2xl)}.\32xl\:block{display:block}.\32xl\:table-cell{display:table-cell}.\32xl\:inline-grid{display:inline-grid}.\32xl\:hidden{display:none}.\32xl\:columns-\[--cols-2xl\]{-moz-columns:var(--cols-2xl);columns:var(--cols-2xl)}.\32xl\:grid-cols-\[--cols-2xl\]{grid-template-columns:var(--cols-2xl)}.\32xl\:flex-row{flex-direction:row}.\32xl\:items-start{align-items:flex-start}.\32xl\:items-end{align-items:flex-end}.\32xl\:items-center{align-items:center}.\32xl\:gap-1{gap:.25rem}.\32xl\:gap-3{gap:.75rem}}.ltr\:hidden:where([dir=ltr],[dir=ltr] *){display:none}.rtl\:hidden:where([dir=rtl],[dir=rtl] *){display:none}.rtl\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-5:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:-translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-1\/2:where([dir=rtl],[dir=rtl] *){--tw-translate-x:50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:rotate-180:where([dir=rtl],[dir=rtl] *){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:flex-row-reverse:where([dir=rtl],[dir=rtl] *){flex-direction:row-reverse}.rtl\:divide-x-reverse:where([dir=rtl],[dir=rtl] *)>:not([hidden])~:not([hidden]){--tw-divide-x-reverse:1}@media (min-width:1024px){.rtl\:lg\:-translate-x-0:where([dir=rtl],[dir=rtl] *){--tw-translate-x:-0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\:lg\:translate-x-full:where([dir=rtl],[dir=rtl] *){--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}}.\[\&\.trix-active\]\:bg-gray-50.trix-active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.\[\&\.trix-active\]\:text-primary-600.trix-active{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity))}:is(.dark .dark\:\[\&\.trix-active\]\:bg-white\/5.trix-active){background-color:hsla(0,0%,100%,.05)}:is(.dark .dark\:\[\&\.trix-active\]\:text-primary-400.trix-active){--tw-text-opacity:1;color:rgba(var(--primary-400),var(--tw-text-opacity))}.\[\&\:\:-ms-reveal\]\:hidden::-ms-reveal{display:none}.\[\&\:not\(\:first-of-type\)\]\:border-s:not(:first-of-type){border-inline-start-width:1px}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-2:focus-within:not(:has(.fi-ac-action:focus)){--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-danger-600:focus-within:not(:has(.fi-ac-action:focus)){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-600),var(--tw-ring-opacity))}.\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-primary-600:focus-within:not(:has(.fi-ac-action:focus)){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}:is(.dark .dark\:\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-danger-500:focus-within:not(:has(.fi-ac-action:focus))){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--danger-500),var(--tw-ring-opacity))}:is(.dark .dark\:\[\&\:not\(\:has\(\.fi-ac-action\:focus\)\)\]\:focus-within\:ring-primary-500:focus-within:not(:has(.fi-ac-action:focus))){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-500),var(--tw-ring-opacity))}.\[\&\:not\(\:last-of-type\)\]\:border-e:not(:last-of-type){border-inline-end-width:1px}.\[\&\:not\(\:nth-child\(1_of_\.fi-btn\)\)\]\:shadow-\[-1px_0_0_0_theme\(colors\.gray\.200\)\]:not(:nth-child(1 of .fi-btn)){--tw-shadow:-1px 0 0 0 rgba(var(--gray-200),1);--tw-shadow-colored:-1px 0 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}:is(.dark .dark\:\[\&\:not\(\:nth-child\(1_of_\.fi-btn\)\)\]\:shadow-\[-1px_0_0_0_theme\(colors\.white\/20\%\)\]:not(:nth-child(1 of .fi-btn))){--tw-shadow:-1px 0 0 0 hsla(0,0%,100%,.2);--tw-shadow-colored:-1px 0 0 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.\[\&\:not\(\:nth-last-child\(1_of_\.fi-btn\)\)\]\:me-px:not(:nth-last-child(1 of .fi-btn)){margin-inline-end:1px}.\[\&\:nth-child\(1_of_\.fi-btn\)\]\:rounded-s-lg:nth-child(1 of .fi-btn){border-end-start-radius:.5rem;border-start-start-radius:.5rem}.\[\&\:nth-last-child\(1_of_\.fi-btn\)\]\:rounded-e-lg:nth-last-child(1 of .fi-btn){border-end-end-radius:.5rem;border-start-end-radius:.5rem}.\[\&\>\*\:first-child\]\:relative>:first-child{position:relative}.\[\&\>\*\:first-child\]\:mt-0>:first-child{margin-top:0}.\[\&\>\*\:first-child\]\:before\:absolute>:first-child:before{content:var(--tw-content);position:absolute}.\[\&\>\*\:first-child\]\:before\:inset-y-0>:first-child:before{bottom:0;content:var(--tw-content);top:0}.\[\&\>\*\:first-child\]\:before\:start-0>:first-child:before{content:var(--tw-content);inset-inline-start:0}.\[\&\>\*\:first-child\]\:before\:w-0\.5>:first-child:before{content:var(--tw-content);width:.125rem}.\[\&\>\*\:first-child\]\:before\:bg-primary-600>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity));content:var(--tw-content)}:is(.dark .\[\&\>\*\:first-child\]\:dark\:before\:bg-primary-500)>:first-child:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-500),var(--tw-bg-opacity));content:var(--tw-content)}.\[\&\>\*\:last-child\]\:mb-0>:last-child{margin-bottom:0}.\[\&_\.choices\\_\\_inner\]\:ps-0 .choices__inner{padding-inline-start:0}.\[\&_\.fi-badge-delete-button\]\:hidden .fi-badge-delete-button{display:none}.\[\&_\.filepond--root\]\:font-sans .filepond--root{font-family:var(--font-family),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}.\[\&_optgroup\]\:bg-white optgroup{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .\[\&_optgroup\]\:dark\:bg-gray-900) optgroup{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.\[\&_option\]\:bg-white option{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .\[\&_option\]\:dark\:bg-gray-900) option{--tw-bg-opacity:1;background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}:checked+*>.\[\:checked\+\*\>\&\]\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}@media(hover:hover){.\[\@media\(hover\:hover\)\]\:transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\[\@media\(hover\:hover\)\]\:duration-75{transition-duration:75ms}}input:checked+.\[input\:checked\+\&\]\:bg-custom-600{--tw-bg-opacity:1;background-color:rgba(var(--c-600),var(--tw-bg-opacity))}input:checked+.\[input\:checked\+\&\]\:text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}input:checked+.\[input\:checked\+\&\]\:ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}input:checked+.\[input\:checked\+\&\]\:hover\:bg-custom-500:hover{--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}:is(.dark input:checked+.dark\:\[input\:checked\+\&\]\:bg-custom-500){--tw-bg-opacity:1;background-color:rgba(var(--c-500),var(--tw-bg-opacity))}:is(.dark input:checked+.dark\:\[input\:checked\+\&\]\:hover\:bg-custom-400:hover){--tw-bg-opacity:1;background-color:rgba(var(--c-400),var(--tw-bg-opacity))}input:checked:focus-visible+.\[input\:checked\:focus-visible\+\&\]\:ring-custom-500\/50{--tw-ring-color:rgba(var(--c-500),0.5)}:is(.dark input:checked:focus-visible+.dark\:\[input\:checked\:focus-visible\+\&\]\:ring-custom-400\/50){--tw-ring-color:rgba(var(--c-400),0.5)}input:focus-visible+.\[input\:focus-visible\+\&\]\:z-10{z-index:10}input:focus-visible+.\[input\:focus-visible\+\&\]\:ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}input:focus-visible+.\[input\:focus-visible\+\&\]\:ring-gray-950\/10{--tw-ring-color:rgba(var(--gray-950),0.1)}:is(.dark input:focus-visible+.dark\:\[input\:focus-visible\+\&\]\:ring-white\/20){--tw-ring-color:hsla(0,0%,100%,.2)} \ No newline at end of file diff --git a/vendor/filament/filament/docs/01-installation.md b/vendor/filament/filament/docs/01-installation.md deleted file mode 100644 index 82c22f63..00000000 --- a/vendor/filament/filament/docs/01-installation.md +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Installation ---- - -## Requirements - -Filament requires the following to run: - -- PHP 8.1+ -- Laravel v10.0+ -- Livewire v3.0+ - -> **Livewire v3 is recently released!**
-> The Livewire team have done a great job in making it stable, but it was a complete rewrite of Livewire v2. You may encounter issues, so we recommend testing your application thoroughly before using Filament v3 in production. - -## Installation - -> If you are upgrading from Filament v2, please review the [upgrade guide](upgrade-guide). - -Install the Filament Panel Builder by running the following commands in your Laravel project directory: - -```bash -composer require filament/filament:"^3.2" -W - -php artisan filament:install --panels -``` - -This will create and register a new [Laravel service provider](https://laravel.com/docs/providers) called `app/Providers/Filament/AdminPanelProvider.php`. - -> If you get an error when accessing your panel, check that the service provider was registered in your `config/app.php`. If not, you should manually add it to the `providers` array. - -## Create a user -You can create a new user account with the following command: - -```bash -php artisan make:filament-user -``` - -Open `/admin` in your web browser, sign in, and start building your app! - -Not sure where to start? Review the [Getting Started guide](getting-started) to learn how to build a complete Filament admin panel. - -## Using other Filament packages -The Filament Panel Builder pre-installs the [Form Builder](/docs/forms), [Table Builder](/docs/tables), [Notifications](/docs/notifications), [Actions](/docs/actions), [Infolists](/docs/infolists), and [Widgets](/docs/widgets) packages. No other installation steps are required to use these packages within a panel. - -## Deploying to production - -### Allowing users to access a panel - -By default, all `User` models can access Filament locally. However, when deploying to production, you must update your `App\Models\User.php` to implement the `FilamentUser` contract — ensuring that only the correct users can access your panel: - -```php -email, '@yourdomain.com') && $this->hasVerifiedEmail(); - } -} -``` - -> If you don't complete these steps, a 403 Forbidden error will be returned when accessing the app in production. - -Learn more about [users](users). - -### Caching Blade Icons - -You may wish to consider using `php artisan icons:cache` in your deployment process, as Filament uses the [Blade Icons](https://blade-ui-kit.com/blade-icons) package, which can be much more performant when cached. This is very hardware-dependant though, and many servers do not require this command for Filament to run smoothly. - -## Publishing configuration - -You can publish the Filament package configuration (if needed) using the following command: - -```bash -php artisan vendor:publish --tag=filament-config -``` - -## Publishing translations - -You can publish the language files for translations (if needed) with the following command: - -```bash -php artisan vendor:publish --tag=filament-panels-translations -``` - -Since this package depends on other Filament packages, you can publish the language files for those packages with the following commands: - -```bash -php artisan vendor:publish --tag=filament-actions-translations - -php artisan vendor:publish --tag=filament-forms-translations - -php artisan vendor:publish --tag=filament-notifications-translations - -php artisan vendor:publish --tag=filament-tables-translations - -php artisan vendor:publish --tag=filament-translations -``` - -## Upgrading - -> Upgrading from Filament v2? Please review the [upgrade guide](upgrade-guide). - -Filament automatically upgrades to the latest non-breaking version when you run `composer update`. After any updates, all Laravel caches need to be cleared, and frontend assets need to be republished. You can do this all at once using the `filament:upgrade` command, which should have been added to your `composer.json` file when you ran `filament:install` the first time: - -```json -"post-autoload-dump": [ - // ... - "@php artisan filament:upgrade" -], -``` - -Please note that `filament:upgrade` does not actually handle the update process, as Composer does that already. If you're upgrading manually without a `post-autoload-dump` hook, you can run the command yourself: - -```bash -composer update - -php artisan filament:upgrade -``` diff --git a/vendor/filament/filament/docs/02-getting-started.md b/vendor/filament/filament/docs/02-getting-started.md deleted file mode 100644 index 43c54cb8..00000000 --- a/vendor/filament/filament/docs/02-getting-started.md +++ /dev/null @@ -1,755 +0,0 @@ ---- -title: Getting started ---- -import LaracastsBanner from "@components/LaracastsBanner.astro" - -## Overview - -Panels are the top-level container in Filament, allowing you to build feature-rich admin panels that include pages, resources, forms, tables, notifications, actions, infolists, and widgets. All Panels include a default dashboard that can include widgets with statistics, charts, tables, and more. - - - -## Prerequisites - -Before using Filament, you should be familiar with Laravel. Filament builds upon many core Laravel concepts, especially [database migrations](https://laravel.com/docs/migrations) and [Eloquent ORM](https://laravel.com/docs/eloquent). If you're new to Laravel or need a refresher, we highly recommend completing the [Laravel Bootcamp](https://bootcamp.laravel.com), which covers the fundamentals of building Laravel apps. - -## The demo project - -This guide covers building a simple patient management system for a veterinary practice using Filament. It will support adding new patients (cats, dogs, or rabbits), assigning them to an owner, and recording which treatments they received. The system will have a dashboard with statistics about the types of patients and a chart showing the number of treatments administered over the past year. - -## Setting up the database and models - -This project needs three models and migrations: `Owner`, `Patient`, and `Treatment`. Use the following artisan commands to create these: - -```bash -php artisan make:model Owner -m -php artisan make:model Patient -m -php artisan make:model Treatment -m -``` - -### Defining migrations - -Use the following basic schemas for your database migrations: - -```php - -// create_owners_table -Schema::create('owners', function (Blueprint $table) { - $table->id(); - $table->string('email'); - $table->string('name'); - $table->string('phone'); - $table->timestamps(); -}); - -// create_patients_table -Schema::create('patients', function (Blueprint $table) { - $table->id(); - $table->date('date_of_birth'); - $table->string('name'); - $table->foreignId('owner_id')->constrained('owners')->cascadeOnDelete(); - $table->string('type'); - $table->timestamps(); -}); - -// create_treatments_table -Schema::create('treatments', function (Blueprint $table) { - $table->id(); - $table->string('description'); - $table->text('notes')->nullable(); - $table->foreignId('patient_id')->constrained('patients')->cascadeOnDelete(); - $table->unsignedInteger('price')->nullable(); - $table->timestamps(); -}); -``` - -Run the migrations using `php artisan migrate`. - -### Unguarding all models - -For brevity in this guide, we will disable Laravel's [mass assignment protection](https://laravel.com/docs/eloquent#mass-assignment). Filament only saves valid data to models so the models can be unguarded safely. To unguard all Laravel models at once, add `Model::unguard()` to the `boot()` method of `app/Providers/AppServiceProvider.php`: - -```php -use Illuminate\Database\Eloquent\Model; - -public function boot(): void -{ - Model::unguard(); -} -``` - -### Setting up relationships between models - -Let's set up relationships between the models. For our system, pet owners can own multiple pets (patients), and patients can have many treatments: - -```php -use Illuminate\Database\Eloquent\Model; -use Illuminate\Database\Eloquent\Relations\BelongsTo; -use Illuminate\Database\Eloquent\Relations\HasMany; - -class Owner extends Model -{ - public function patients(): HasMany - { - return $this->hasMany(Patient::class); - } -} - -class Patient extends Model -{ - public function owner(): BelongsTo - { - return $this->belongsTo(Owner::class); - } - - public function treatments(): HasMany - { - return $this->hasMany(Treatment::class); - } -} - -class Treatment extends Model -{ - public function patient(): BelongsTo - { - return $this->belongsTo(Patient::class); - } -} -``` - -## Introducing resources - -In Filament, resources are static classes used to build CRUD interfaces for your Eloquent models. They describe how administrators can interact with data from your panel using tables and forms. - -Since patients (pets) are the core entity in this system, let's start by creating a patient resource that enables us to build pages for creating, viewing, updating, and deleting patients. - -Use the following artisan command to create a new Filament resource for the `Patient` model: - -```bash -php artisan make:filament-resource Patient -``` - -This will create several files in the `app/Filament/Resources` directory: - -``` -. -+-- PatientResource.php -+-- PatientResource -| +-- Pages -| | +-- CreatePatient.php -| | +-- EditPatient.php -| | +-- ListPatients.php -``` - -Visit `/admin/patients` in your browser and observe a new link called "Patients" in the navigation. Clicking the link will display an empty table. Let's add a form to create new patients. - -### Setting up the resource form - -If you open the `PatientResource.php` file, there's a `form()` method with an empty `schema([...])` array. Adding form fields to this schema will build a form that can be used to create and edit new patients. - -#### "Name" text input - -Filament bundles a large selection of [form fields](../forms/fields/getting-started). Let's start with a simple [text input field](../forms/fields/text-input): - -```php -use Filament\Forms; -use Filament\Forms\Form; - -public static function form(Form $form): Form -{ - return $form - ->schema([ - Forms\Components\TextInput::make('name'), - ]); -} -``` - -Visit `/admin/patients/create` (or click the "New Patient" button) and observe that a form field for the patient's name was added. - -Since this field is required in the database and has a maximum length of 255 characters, let's add two [validation rules](../forms/validation) to the name field: - -```php -use Filament\Forms; - -Forms\Components\TextInput::make('name') - ->required() - ->maxLength(255) -``` - -Attempt to submit the form to create a new patient without a name and observe that a message is displayed informing you that the name field is required. - -#### "Type" select - -Let's add a second field for the type of patient: a choice between a cat, dog, or rabbit. Since there's a fixed set of options to choose from, a [select](../forms/fields/select) field works well: - -```php -use Filament\Forms; -use Filament\Forms\Form; - -public static function form(Form $form): Form -{ - return $form - ->schema([ - Forms\Components\TextInput::make('name') - ->required() - ->maxLength(255), - Forms\Components\Select::make('type') - ->options([ - 'cat' => 'Cat', - 'dog' => 'Dog', - 'rabbit' => 'Rabbit', - ]), - ]); -} -``` - -The `options()` method of the Select field accepts an array of options for the user to choose from. The array keys should match the database, and the values are used as the form labels. Feel free to add as many animals to this array as you wish. - -Since this field is also required in the database, let's add the `required()` validation rule: - -```php -use Filament\Forms; - -Forms\Components\Select::make('type') - ->options([ - 'cat' => 'Cat', - 'dog' => 'Dog', - 'rabbit' => 'Rabbit', - ]) - ->required() -``` - -#### "Date of birth" picker - -Let's add a [date picker field](../forms/fields/date-time-picker) for the `date_of_birth` column along with the validation (the date of birth is required and the date should be no later than the current day). - -```php -use Filament\Forms; -use Filament\Forms\Form; - -public static function form(Form $form): Form -{ - return $form - ->schema([ - Forms\Components\TextInput::make('name') - ->required() - ->maxLength(255), - Forms\Components\Select::make('type') - ->options([ - 'cat' => 'Cat', - 'dog' => 'Dog', - 'rabbit' => 'Rabbit', - ]) - ->required(), - Forms\Components\DatePicker::make('date_of_birth') - ->required() - ->maxDate(now()), - ]); -} -``` - -#### "Owner" select - -We should also add an owner when creating a new patient. Since we added a `BelongsTo` relationship in the Patient model (associating it to the related `Owner` model), we can use the **[`relationship()` method](../forms/fields/select#integrating-with-an-eloquent-relationship)** from the select field to load a list of owners to choose from: - -```php -use Filament\Forms; -use Filament\Forms\Form; - -public static function form(Form $form): Form -{ - return $form - ->schema([ - Forms\Components\TextInput::make('name') - ->required() - ->maxLength(255), - Forms\Components\Select::make('type') - ->options([ - 'cat' => 'Cat', - 'dog' => 'Dog', - 'rabbit' => 'Rabbit', - ]) - ->required(), - Forms\Components\DatePicker::make('date_of_birth') - ->required() - ->maxDate(now()), - Forms\Components\Select::make('owner_id') - ->relationship('owner', 'name') - ->required(), - ]); -} -``` - -The first argument of the `relationship()` method is the name of the function that defines the relationship in the model (used by Filament to load the select options) — in this case, `owner`. The second argument is the column name to use from the related table — in this case, `name`. - -Let's also make the `owner` field required, `searchable()`, and `preload()` the first 50 owners into the searchable list (in case the list is long): - -```php -use Filament\Forms; - -Forms\Components\Select::make('owner_id') - ->relationship('owner', 'name') - ->searchable() - ->preload() - ->required() -``` - -#### Creating new owners without leaving the page -Currently, there are no owners in our database. Instead of creating a separate Filament owner resource, let's give users an easier way to add owners via a modal form (accessible as a `+` button next to the select). Use the [`createOptionForm()` method](../forms/fields/select#creating-a-new-option-in-a-modal) to embed a modal form with [`TextInput` fields](../forms/fields/text-input) for the owner's name, email address, and phone number: - -```php -use Filament\Forms; - -Forms\Components\Select::make('owner_id') - ->relationship('owner', 'name') - ->searchable() - ->preload() - ->createOptionForm([ - Forms\Components\TextInput::make('name') - ->required() - ->maxLength(255), - Forms\Components\TextInput::make('email') - ->label('Email address') - ->email() - ->required() - ->maxLength(255), - Forms\Components\TextInput::make('phone') - ->label('Phone number') - ->tel() - ->required(), - ]) - ->required() -``` - -A few new methods on the TextInput were used in this example: - -- `label()` overrides the auto-generated label for each field. In this case, we want the `Email` label to be `Email address`, and the `Phone` label to be `Phone number`. -- `email()` ensures that only valid email addresses can be input into the field. It also changes the keyboard layout on mobile devices. -- `tel()` ensures that only valid phone numbers can be input into the field. It also changes the keyboard layout on mobile devices. - -The form should be working now! Try creating a new patient and their owner. Once created, you will be redirected to the Edit page, where you can update their details. - -### Setting up the patients table - -Visit the `/admin/patients` page again. If you have created a patient, there should be one empty row in the table — with an edit button. Let's add some columns to the table, so we can view the actual patient data. - -Open the `PatientResource.php` file. You should see a `table()` method with an empty `columns([...])` array. You can use this array to add columns to the `patients` table. - -#### Adding text columns - -Filament bundles a large selection of [table columns](../tables/columns). Let's use a simple [text column](../tables/columns/text) for all the fields in the `patients` table: - -```php -use Filament\Tables; -use Filament\Tables\Table; - -public static function table(Table $table): Table -{ - return $table - ->columns([ - Tables\Columns\TextColumn::make('name'), - Tables\Columns\TextColumn::make('type'), - Tables\Columns\TextColumn::make('date_of_birth'), - Tables\Columns\TextColumn::make('owner.name'), - ]); -} -``` - -> Filament uses dot notation to eager-load related data. We used `owner.name` in our table to display a list of owner names instead of less informational ID numbers. You could also add columns for the owner's email address and phone number. - -##### Making columns searchable - -The ability to [search](/tables/columns/getting-started#searching) for patients directly in the table would be helpful as a veterinary practice grows. You can make columns searchable by chaining the `searchable()` method to the column. Let's make the patient's name and owner's name searchable. - -```php -use Filament\Tables; -use Filament\Tables\Table; - -public static function table(Table $table): Table -{ - return $table - ->columns([ - Tables\Columns\TextColumn::make('name') - ->searchable(), - Tables\Columns\TextColumn::make('type'), - Tables\Columns\TextColumn::make('date_of_birth'), - Tables\Columns\TextColumn::make('owner.name') - ->searchable(), - ]); -} -``` - -Reload the page and observe a new search input field on the table that filters the table entries using the search criteria. - -##### Making the columns sortable - -To make the `patients` table [sortable](../tables/columns/getting-started#sorting) by age, add the `sortable()` method to the `date_of_birth` column: - -```php -use Filament\Tables; -use Filament\Tables\Table; - -public static function table(Table $table): Table -{ - return $table - ->columns([ - Tables\Columns\TextColumn::make('name') - ->searchable(), - Tables\Columns\TextColumn::make('type'), - Tables\Columns\TextColumn::make('date_of_birth') - ->sortable(), - Tables\Columns\TextColumn::make('owner.name') - ->searchable(), - ]); -} -``` - -This will add a sort icon button to the column header. Clicking it will sort the table by date of birth. - -#### Filtering the table by patient type - -Although you can make the `type` field searchable, making it filterable is a much better user experience. - -Filament tables can have [filters](../tables/filters/getting-started), which are components that reduce the number of records in a table by adding a scope to the Eloquent query. Filters can even contain custom form components, making them a potent tool for building interfaces. - -Filament includes a prebuilt [`SelectFilter`](../tables/filters/select) that you can add to the table's `filters()`: - -```php -use Filament\Tables; -use Filament\Tables\Table; - -public static function table(Table $table): Table -{ - return $table - ->columns([ - // ... - ]) - ->filters([ - Tables\Filters\SelectFilter::make('type') - ->options([ - 'cat' => 'Cat', - 'dog' => 'Dog', - 'rabbit' => 'Rabbit', - ]), - ]); -} -``` - -Reload the page, and you should see a new filter icon in the top right corner (next to the search form). The filter opens a select menu with a list of patient types. Try filtering your patients by type. - -## Introducing relation managers - -Currently, patients can be associated with their owners in our system. But what happens if we want a third level? Patients come to the vet practice for treatment, and the system should be able to record these treatments and associate them with a patient. - -One option is to create a new `TreatmentResource` with a select field to associate treatments with a patient. However, managing treatments separately from the rest of the patient information is cumbersome for the user. Filament uses "relation managers" to solve this problem. - -Relation managers are tables that display related records for an existing resource on the edit screen for the parent resource. For example, in our project, you could view and manage a patient's treatments directly below their edit form. - -> You can also use Filament ["actions"](../actions/modals#modal-forms) to open a modal form to create, edit, and delete treatments directly from the patient's table. - -Use the `make:filament-relation-manager` artisan command to quickly create a relation manager, connecting the patient resource to the related treatments: - -```bash -php artisan make:filament-relation-manager PatientResource treatments description -``` - -- `PatientResource` is the name of the resource class for the owner model. Since treatments belong to patients, the treatments should be displayed on the Edit Patient page. -- `treatments` is the name of the relationship in the Patient model we created earlier. -- `description` is the column to display from the treatments table. - -This will create a `PatientResource/RelationManagers/TreatmentsRelationManager.php` file. You must register the new relation manager in the `getRelations()` method of the `PatientResource`: - -```php -use App\Filament\Resources\PatientResource\RelationManagers; - -public static function getRelations(): array -{ - return [ - RelationManagers\TreatmentsRelationManager::class, - ]; -} -``` - -The `TreatmentsRelationManager.php` file contains a class that is prepopulated with a form and table using the parameters from the `make:filament-relation-manager` artisan command. You can customize the fields and columns in the relation manager similar to how you would in a resource: - -```php -use Filament\Forms; -use Filament\Forms\Form; -use Filament\Tables; -use Filament\Tables\Table; - -public function form(Form $form): Form -{ - return $form - ->schema([ - Forms\Components\TextInput::make('description') - ->required() - ->maxLength(255), - ]); -} - -public function table(Table $table): Table -{ - return $table - ->columns([ - Tables\Columns\TextColumn::make('description'), - ]); -} -``` - -Visit the Edit page for one of your patients. You should already be able to create, edit, delete, and list treatments for that patient. - -### Setting up the treatment form - -By default, text fields only span half the width of the form. Since the `description` field might contain a lot of information, add a `columnSpan('full')` method to make the field span the entire width of the modal form: - -```php -use Filament\Forms; - -Forms\Components\TextInput::make('description') - ->required() - ->maxLength(255) - ->columnSpan('full') -``` - -Let's add the `notes` field, which can be used to add more details about the treatment. We can use a [textarea](../forms/fields/textarea) field with a `columnSpan('full')`: - -```php -use Filament\Forms; -use Filament\Forms\Form; - -public function form(Form $form): Form -{ - return $form - ->schema([ - Forms\Components\TextInput::make('description') - ->required() - ->maxLength(255) - ->columnSpan('full'), - Forms\Components\Textarea::make('notes') - ->maxLength(65535) - ->columnSpan('full'), - ]); -} -``` - -#### Configuring the `price` field - -Let's add a `price` field for the treatment. We can use a text input with some customizations to make it suitable for currency input. It should be `numeric()`, which adds validation and changes the keyboard layout on mobile devices. Add your preferred currency prefix using the `prefix()` method; for example, `prefix('€')` will add a `€` before the input without impacting the saved output value: - -```php -use Filament\Forms; -use Filament\Forms\Form; - -public function form(Form $form): Form -{ - return $form - ->schema([ - Forms\Components\TextInput::make('description') - ->required() - ->maxLength(255) - ->columnSpan('full'), - Forms\Components\Textarea::make('notes') - ->maxLength(65535) - ->columnSpan('full'), - Forms\Components\TextInput::make('price') - ->numeric() - ->prefix('€') - ->maxValue(42949672.95), - ]); -} -``` - -##### Casting the price to an integer - -Filament stores currency values as integers (not floats) to avoid rounding and precision issues — a widely-accepted approach in the Laravel community. However, this requires creating a cast in Laravel that transforms the float into an integer when retrieved and back to an integer when stored in the database. Use the following artisan command to create the cast: - -```bash -php artisan make:cast MoneyCast -``` - -Inside the new `app/Casts/MoneyCast.php` file, update the `get()` and `set()` methods: - -```php -public function get($model, string $key, $value, array $attributes): float -{ - // Transform the integer stored in the database into a float. - return round(floatval($value) / 100, precision: 2); -} - -public function set($model, string $key, $value, array $attributes): float -{ - // Transform the float into an integer for storage. - return round(floatval($value) * 100); -} -``` - -Now, add the `MoneyCast` to the `price` attribute in the `Treatment` model: - -```php -use App\Casts\MoneyCast; -use Illuminate\Database\Eloquent\Model; - -class Treatment extends Model -{ - protected $casts = [ - 'price' => MoneyCast::class, - ]; - - // ... -} -``` - -### Setting up the treatments table - -When the relation manager was generated previously, the `description` text column was automatically added. Let's also add a `sortable()` column for the `price` with a currency prefix. Use the Filament `money()` method to format the `price` column as money — in this case for `EUR` (`€`): - -```php -use Filament\Tables; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return $table - ->columns([ - Tables\Columns\TextColumn::make('description'), - Tables\Columns\TextColumn::make('price') - ->money('EUR') - ->sortable(), - ]); -} -``` - -Let's also add a column to indicate when the treatment was administered using the default `created_at` timestamp. Use the `dateTime()` method to display the date-time in a human-readable format: - -```php -use Filament\Tables; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return $table - ->columns([ - Tables\Columns\TextColumn::make('description'), - Tables\Columns\TextColumn::make('price') - ->money('EUR') - ->sortable(), - Tables\Columns\TextColumn::make('created_at') - ->dateTime(), - ]); -} -``` - -> You can pass any valid [PHP date formatting string](https://www.php.net/manual/en/datetime.format.php) to the `dateTime()` method (e.g. `dateTime('m-d-Y h:i A')`). - -## Introducing widgets - -Filament widgets are components that display information on your dashboard, especially statistics. Widgets are typically added to the default [Dashboard](../panels/dashboard) of the panel, but you can add them to any page, including resource pages. Filament includes built-in widgets like the [stats widget](../widgets/stats-overview), to render important statistics in a simple overview; [chart widget](../widgets/charts), which can render an interactive chart; and [table widget](../panels/dashboard#table-widgets), which allows you to easily embed the Table Builder. - -Let's add a stats widget to our default dashboard page that includes a stat for each type of patient and a chart to visualize treatments administered over time. - -### Creating a stats widget - -Create a [stats widget](../widgets/stats-overview) to render patient types using the following artisan command: - -```bash -php artisan make:filament-widget PatientTypeOverview --stats-overview -``` - -When prompted, do not specify a resource, and select "admin" for the location. - -This will create a new `app/Filament/Widgets/PatientTypeOverview.php` file. Open it, and return `Stat` instances from the `getStats()` method: - -```php -where('type', 'cat')->count()), - Stat::make('Dogs', Patient::query()->where('type', 'dog')->count()), - Stat::make('Rabbits', Patient::query()->where('type', 'rabbit')->count()), - ]; - } -} -``` - -Open your dashboard, and you should see your new widget displayed. Each stat should show the total number of patients for the specified type. - -### Creating a chart widget - -Let's add a chart to the dashboard to visualize the number of treatments administered over time. Use the following artisan command to create a new chart widget: - -```bash -php artisan make:filament-widget TreatmentsChart --chart -``` - -When prompted, do not specify a resource, select "admin" for the location, and choose "line chart" as the chart type. - -Open `app/Filament/Widgets/TreatmentsChart.php` and set the `$heading` of the chart to "Treatments". - -The `getData()` method returns an array of datasets and labels. Each dataset is a labeled array of points to plot on the chart, and each label is a string. This structure is identical to the [Chart.js](https://www.chartjs.org/docs) library, which Filament uses to render charts. - -To populate chart data from an Eloquent model, Filament recommends that you install the [flowframe/laravel-trend](https://github.com/Flowframe/laravel-trend) package: - -```bash -composer require flowframe/laravel-trend -``` - -Update the `getData()` to display the number of treatments per month for the past year: - -```php -use App\Models\Treatment; -use Flowframe\Trend\Trend; -use Flowframe\Trend\TrendValue; - -protected function getData(): array -{ - $data = Trend::model(Treatment::class) - ->between( - start: now()->subYear(), - end: now(), - ) - ->perMonth() - ->count(); - - return [ - 'datasets' => [ - [ - 'label' => 'Treatments', - 'data' => $data->map(fn (TrendValue $value) => $value->aggregate), - ], - ], - 'labels' => $data->map(fn (TrendValue $value) => $value->date), - ]; -} -``` - -Now, check out your new chart widget in the dashboard! - -> You can [customize your dashboard page](../panels/dashboard#customizing-the-dashboard-page) to change the grid and how many widgets are displayed. - -## Next steps with the Panel Builder - -Congratulations! Now that you know how to build a basic Filament application, here are some suggestions for further learning: - -- [Create custom pages in the panel that don't belong to resources.](pages) -- [Learn more about adding action buttons to pages and resources, with modals to collect user input or for confirmation.](../actions/overview) -- [Explore the available fields to collect input from your users.](../forms/fields/getting-started#available-fields) -- [Check out the list of form layout components.](../forms/layout/getting-started) -- [Discover how to build complex, responsive table layouts without touching CSS.](../tables/layout) -- [Add summaries to your tables](../tables/summaries) -- [Write automated tests for your panel using our suite of helper methods.](testing) diff --git a/vendor/filament/filament/docs/03-resources/01-getting-started.md b/vendor/filament/filament/docs/03-resources/01-getting-started.md deleted file mode 100644 index 9e90d29f..00000000 --- a/vendor/filament/filament/docs/03-resources/01-getting-started.md +++ /dev/null @@ -1,539 +0,0 @@ ---- -title: Getting started ---- -import LaracastsBanner from "@components/LaracastsBanner.astro" - -## Overview - - - -Resources are static classes that are used to build CRUD interfaces for your Eloquent models. They describe how administrators should be able to interact with data from your app - using tables and forms. - -## Creating a resource - -To create a resource for the `App\Models\Customer` model: - -```bash -php artisan make:filament-resource Customer -``` - -This will create several files in the `app/Filament/Resources` directory: - -``` -. -+-- CustomerResource.php -+-- CustomerResource -| +-- Pages -| | +-- CreateCustomer.php -| | +-- EditCustomer.php -| | +-- ListCustomers.php -``` - -Your new resource class lives in `CustomerResource.php`. - -The classes in the `Pages` directory are used to customize the pages in the app that interact with your resource. They're all full-page [Livewire](https://livewire.laravel.com) components that you can customize in any way you wish. - -> Have you created a resource, but it's not appearing in the navigation menu? If you have a [model policy](#authorization), make sure you return `true` from the `viewAny()` method. - -### Simple (modal) resources - -Sometimes, your models are simple enough that you only want to manage records on one page, using modals to create, edit and delete records. To generate a simple resource with modals: - -```bash -php artisan make:filament-resource Customer --simple -``` - -Your resource will have a "Manage" page, which is a List page with modals added. - -Additionally, your simple resource will have no `getRelations()` method, as [relation managers](relation-managers) are only displayed on the Edit and View pages, which are not present in simple resources. Everything else is the same. - -### Automatically generating forms and tables - -If you'd like to save time, Filament can automatically generate the [form](#resource-forms) and [table](#resource-tables) for you, based on your model's database columns, using `--generate`: - -```bash -php artisan make:filament-resource Customer --generate -``` - -> If your table contains ENUM columns, the `doctrine/dbal` package we use is unable to scan your table and will crash. Hence, Filament is unable to generate the schema for your resource if it contains an ENUM column. Read more about this issue [here](https://github.com/doctrine/dbal/issues/3819#issuecomment-573419808). - -### Handling soft deletes - -By default, you will not be able to interact with deleted records in the app. If you'd like to add functionality to restore, force delete and filter trashed records in your resource, use the `--soft-deletes` flag when generating the resource: - -```bash -php artisan make:filament-resource Customer --soft-deletes -``` - -You can find out more about soft deleting [here](deleting-records#handling-soft-deletes). - -### Generating a View page - -By default, only List, Create and Edit pages are generated for your resource. If you'd also like a [View page](viewing-records), use the `--view` flag: - -```bash -php artisan make:filament-resource Customer --view -``` - -### Specifiying a custom model namespace - -By default, Filament will assume that your model exists in the `App\Models` directory. You can pass a different namespace for the model using the `--model-namespace` flag: - -```bash -php artisan make:filament-resource Customer --model-namespace=Custom\\Path\\Models -``` - -In this example, the model should exist at `Custom\Path\Models\Customer`. Please note the double backslashes `\\` in the command that are required. - -Now when [generating the resource](#automatically-generating-forms-and-tables), Filament will be able to locate the model and read the database schema. - -## Record titles - -A `$recordTitleAttribute` may be set for your resource, which is the name of the column on your model that can be used to identify it from others. - -For example, this could be a blog post's `title` or a customer's `name`: - -```php -protected static ?string $recordTitleAttribute = 'name'; -``` - -This is required for features like [global search](global-search) to work. - -> You may specify the name of an [Eloquent accessor](https://laravel.com/docs/eloquent-mutators#defining-an-accessor) if just one column is inadequate at identifying a record. - -## Resource forms - - - -Resource classes contain a `form()` method that is used to build the forms on the [Create](creating-records) and [Edit](editing-records) pages: - -```php -use Filament\Forms; -use Filament\Forms\Form; - -public static function form(Form $form): Form -{ - return $form - ->schema([ - Forms\Components\TextInput::make('name')->required(), - Forms\Components\TextInput::make('email')->email()->required(), - // ... - ]); -} -``` - -The `schema()` method is used to define the structure of your form. It is an array of [fields](../../forms/fields/getting-started#available-fields) and [layout components](../../forms/layout/getting-started#available-layout-components), in the order they should appear in your form. - -Check out the Forms docs for a [guide](../../forms/getting-started) on how to build forms with Filament. - -### Hiding components based on the current operation - -The `hiddenOn()` method of form components allows you to dynamically hide fields based on the current page or action. - -In this example, we hide the `password` field on the `edit` page: - -```php -use Livewire\Component; - -Forms\Components\TextInput::make('password') - ->password() - ->required() - ->hiddenOn('edit'), -``` - -Alternatively, we have a `visibleOn()` shortcut method for only showing a field on one page or action: - -```php -use Livewire\Component; - -Forms\Components\TextInput::make('password') - ->password() - ->required() - ->visibleOn('create'), -``` - -## Resource tables - - - -Resource classes contain a `table()` method that is used to build the table on the [List page](listing-records): - -```php -use Filament\Tables; -use Filament\Tables\Table; -use Illuminate\Database\Eloquent\Builder; - -public static function table(Table $table): Table -{ - return $table - ->columns([ - Tables\Columns\TextColumn::make('name'), - Tables\Columns\TextColumn::make('email'), - // ... - ]) - ->filters([ - Tables\Filters\Filter::make('verified') - ->query(fn (Builder $query): Builder => $query->whereNotNull('email_verified_at')), - // ... - ]) - ->actions([ - Tables\Actions\EditAction::make(), - ]) - ->bulkActions([ - Tables\Actions\BulkActionGroup::make([ - Tables\Actions\DeleteBulkAction::make(), - ]), - ]); -} -``` - -Check out the [tables](../../tables/getting-started) docs to find out how to add table columns, filters, actions and more. - -## Authorization - -For authorization, Filament will observe any [model policies](https://laravel.com/docs/authorization#creating-policies) that are registered in your app. The following methods are used: - -- `viewAny()` is used to completely hide resources from the navigation menu, and prevents the user from accessing any pages. -- `create()` is used to control [creating new records](creating-records). -- `update()` is used to control [editing a record](editing-records). -- `view()` is used to control [viewing a record](viewing-records). -- `delete()` is used to prevent a single record from being deleted. `deleteAny()` is used to prevent records from being bulk deleted. Filament uses the `deleteAny()` method because iterating through multiple records and checking the `delete()` policy is not very performant. -- `forceDelete()` is used to prevent a single soft-deleted record from being force-deleted. `forceDeleteAny()` is used to prevent records from being bulk force-deleted. Filament uses the `forceDeleteAny()` method because iterating through multiple records and checking the `forceDelete()` policy is not very performant. -- `restore()` is used to prevent a single soft-deleted record from being restored. `restoreAny()` is used to prevent records from being bulk restored. Filament uses the `restoreAny()` method because iterating through multiple records and checking the `restore()` policy is not very performant. -- `reorder()` is used to control [reordering a record](listing-records#reordering-records). - -### Skipping authorization - -If you'd like to skip authorization for a resource, you may set the `$shouldSkipAuthorization` property to `true`: - -```php -protected static bool $shouldSkipAuthorization = true; -``` - -## Customizing the model label - -Each resource has a "model label" which is automatically generated from the model name. For example, an `App\Models\Customer` model will have a `customer` label. - -The label is used in several parts of the UI, and you may customize it using the `$modelLabel` property: - -```php -protected static ?string $modelLabel = 'cliente'; -``` - -Alternatively, you may use the `getModelLabel()` to define a dynamic label: - -```php -public static function getModelLabel(): string -{ - return __('filament/resources/customer.label'); -} -``` - -### Customizing the plural model label - -Resources also have a "plural model label" which is automatically generated from the model label. For example, a `customer` label will be pluralized into `customers`. - -You may customize the plural version of the label using the `$pluralModelLabel` property: - -```php -protected static ?string $pluralModelLabel = 'clientes'; -``` - -Alternatively, you may set a dynamic plural label in the `getPluralModelLabel()` method: - -```php -public static function getPluralModelLabel(): string -{ - return __('filament/resources/customer.plural_label'); -} -``` - -### Automatic model label capitalization - -By default, Filament will automatically capitalize each word in the model label, for some parts of the UI. For example, in page titles, the navigation menu, and the breadcrumbs. - -If you want to disable this behaviour for a resource, you can set `$hasTitleCaseModelLabel` in the resource: - -```php -protected static bool $hasTitleCaseModelLabel = false; -``` - -## Resource navigation items - -Filament will automatically generate a navigation menu item for your resource using the [plural label](#plural-label). - -If you'd like to customize the navigation item label, you may use the `$navigationLabel` property: - -```php -protected static ?string $navigationLabel = 'Mis Clientes'; -``` - -Alternatively, you may set a dynamic navigation label in the `getNavigationLabel()` method: - -```php -public static function getNavigationLabel(): string -{ - return __('filament/resources/customer.navigation_label'); -} -``` - -### Setting a resource navigation icon - -The `$navigationIcon` property supports the name of any Blade component. By default, [Heroicons](https://heroicons.com) are installed. However, you may create your own custom icon components or install an alternative library if you wish. - -```php -protected static ?string $navigationIcon = 'heroicon-o-user-group'; -``` - -Alternatively, you may set a dynamic navigation icon in the `getNavigationIcon()` method: - -```php -public static function getNavigationIcon(): ?string -{ - return 'heroicon-o-user-group'; -} -``` - -### Sorting resource navigation items - -The `$navigationSort` property allows you to specify the order in which navigation items are listed: - -```php -protected static ?int $navigationSort = 2; -``` - -Alternatively, you may set a dynamic navigation item order in the `getNavigationSort()` method: - -```php -public static function getNavigationSort(): ?int -{ - return 2; -} -``` - -### Grouping resource navigation items - -You may group navigation items by specifying a `$navigationGroup` property: - -```php -protected static ?string $navigationGroup = 'Shop'; -``` - -Alternatively, you may use the `getNavigationGroup()` method to set a dynamic group label: - -```php -public static function getNavigationGroup(): ?string -{ - return __('filament/navigation.groups.shop'); -} -``` - -#### Grouping resource navigation items under other items - -You may group navigation items as children of other items, by passing the label of the parent item as the `$navigationParentItem`: - -```php -protected static ?string $navigationParentItem = 'Products'; - -protected static ?string $navigationGroup = 'Shop'; -``` - -As seen above, if the parent item has a navigation group, that navigation group must also be defined, so the correct parent item can be identified. - -You may also use the `getNavigationParentItem()` method to set a dynamic parent item label: - -```php -public static function getNavigationParentItem(): ?string -{ - return __('filament/navigation.groups.shop.items.products'); -} -``` - -> If you're reaching for a third level of navigation like this, you should consider using [clusters](clusters) instead, which are a logical grouping of resources and [custom pages](../pages), which can share their own separate navigation. - -## Generating URLs to resource pages - -Filament provides `getUrl()` static method on resource classes to generate URLs to resources and specific pages within them. Traditionally, you would need to construct the URL by hand or by using Laravel's `route()` helper, but these methods depend on knowledge of the resource's slug or route naming conventions. - -The `getUrl()` method, without any arguments, will generate a URL to the resource's [List page](listing-records): - -```php -use App\Filament\Resources\CustomerResource; - -CustomerResource::getUrl(); // /admin/customers -``` - -You may also generate URLs to specific pages within the resource. The name of each page is the array key in the `getPages()` array of the resource. For example, to generate a URL to the [Create page](creating-records): - -```php -use App\Filament\Resources\CustomerResource; - -CustomerResource::getUrl('create'); // /admin/customers/create -``` - -Some pages in the `getPages()` method use URL parameters like `record`. To generate a URL to these pages and pass in a record, you should use the second argument: - -```php -use App\Filament\Resources\CustomerResource; - -CustomerResource::getUrl('edit', ['record' => $customer]); // /admin/customers/edit/1 -``` - -In this example, `$customer` can be an Eloquent model object, or an ID. - -### Generating URLs to resource modals - -This can be especially useful if you are using [simple resources](#simple-modal-resources) with only one page. - -To generate a URL for an action in the resource's table, you should pass the `tableAction` and `tableActionRecord` as URL parameters: - -```php -use App\Filament\Resources\CustomerResource; -use Filament\Tables\Actions\EditAction; - -CustomerResource::getUrl(parameters: [ - 'tableAction' => EditAction::getDefaultName(), - 'tableActionRecord' => $customer, -]); // /admin/customers?tableAction=edit&tableActionRecord=1 -``` - -Or if you want to generate a URL for an action on the page like a `CreateAction` in the header, you can pass it in to the `action` parameter: - -```php -use App\Filament\Resources\CustomerResource; -use Filament\Actions\CreateAction; - -CustomerResource::getUrl(parameters: [ - 'action' => CreateAction::getDefaultName(), -]); // /admin/customers?action=create -``` - -### Generating URLs to resources in other panels - -If you have multiple panels in your app, `getUrl()` will generate a URL within the current panel. You can also indicate which panel the resource is associated with, by passing the panel ID to the `panel` argument: - -```php -use App\Filament\Resources\CustomerResource; - -CustomerResource::getUrl(panel: 'marketing'); -``` - -## Customizing the resource Eloquent query - -Within Filament, every query to your resource model will start with the `getEloquentQuery()` method. - -Because of this, it's very easy to apply your own query constraints or [model scopes](https://laravel.com/docs/eloquent#query-scopes) that affect the entire resource: - -```php -public static function getEloquentQuery(): Builder -{ - return parent::getEloquentQuery()->where('is_active', true); -} -``` - -### Disabling global scopes - -By default, Filament will observe all global scopes that are registered to your model. However, this may not be ideal if you wish to access, for example, soft deleted records. - -To overcome this, you may override the `getEloquentQuery()` method that Filament uses: - -```php -public static function getEloquentQuery(): Builder -{ - return parent::getEloquentQuery()->withoutGlobalScopes(); -} -``` - -Alternatively, you may remove specific global scopes: - -```php -public static function getEloquentQuery(): Builder -{ - return parent::getEloquentQuery()->withoutGlobalScopes([ActiveScope::class]); -} -``` - -More information about removing global scopes may be found in the [Laravel documentation](https://laravel.com/docs/eloquent#removing-global-scopes). - -## Customizing the resource URL - -By default, Filament will generate a URL based on the name of the resource. You can customize this by setting the `$slug` property on the resource: - -```php -protected static ?string $slug = 'pending-orders'; -``` - -## Resource sub-navigation - -Sub-navigation allows the user to navigate between different pages within a resource. Typically, all pages in the sub-navigation will be related to the same record in the resource. For example, in a Customer resource, you may have a sub-navigation with the following pages: - -- View customer, a [`ViewRecord` page](viewing-records) that provides a read-only view of the customer's details. -- Edit customer, an [`EditRecord` page](editing-records) that allows the user to edit the customer's details. -- Edit customer contact, an [`EditRecord` page](editing-records) that allows the user to edit the customer's contact details. You can [learn how to create more than one Edit page](editing-records#creating-another-edit-page). -- Manage addresses, a [`ManageRelatedRecords` page](relation-managers#relation-pages) that allows the user to manage the customer's addresses. -- Manage payments, a [`ManageRelatedRecords` page](relation-managers#relation-pages) that allows the user to manage the customer's payments. - -To add a sub-navigation to each "singular record" page in the resource, you can add the `getRecordSubNavigation()` method to the resource class: - -```php -use App\Filament\Resources\CustomerResource\Pages; -use Filament\Resources\Pages\Page; - -public static function getRecordSubNavigation(Page $page): array -{ - return $page->generateNavigationItems([ - Pages\ViewCustomer::class, - Pages\EditCustomer::class, - Pages\EditCustomerContact::class, - Pages\ManageCustomerAddresses::class, - Pages\ManageCustomerPayments::class, - ]); -} -``` - -Each item in the sub-navigation can be customized using the [same navigation methods as normal pages](../navigation). - -> If you're looking to add sub-navigation to switch *between* entire resources and [custom pages](../pages), you might be looking for [clusters](../clusters), which are used to group these together. The `getRecordSubNavigation()` method is intended to construct a navigation between pages that relate to a particular record *inside* a resource. - -### Sub-navigation position - -The sub-navigation is rendered at the start of the page by default. You may change the position by setting the `$subNavigationPosition` property on the resource. The value may be `SubNavigationPosition::Start`, `SubNavigationPosition::End`, or `SubNavigationPosition::Top` to render the sub-navigation as tabs: - -```php -use Filament\Pages\SubNavigationPosition; - -protected static SubNavigationPosition $subNavigationPosition = SubNavigationPosition::End; -``` - -## Deleting resource pages - -If you'd like to delete a page from your resource, you can just delete the page file from the `Pages` directory of your resource, and its entry in the `getPages()` method. - -For example, you may have a resource with records that may not be created by anyone. Delete the `Create` page file, and then remove it from `getPages()`: - -```php -public static function getPages(): array -{ - return [ - 'index' => Pages\ListCustomers::route('/'), - 'edit' => Pages\EditCustomer::route('/{record}/edit'), - ]; -} -``` - -Deleting a page will not delete any actions that link to that page. Any actions will open a modal instead of sending the user to the non-existant page. For instance, the `CreateAction` on the List page, the `EditAction` on the table or View page, or the `ViewAction` on the table or Edit page. If you want to remove those buttons, you must delete the actions as well. diff --git a/vendor/filament/filament/docs/03-resources/02-listing-records.md b/vendor/filament/filament/docs/03-resources/02-listing-records.md deleted file mode 100644 index 5b83c394..00000000 --- a/vendor/filament/filament/docs/03-resources/02-listing-records.md +++ /dev/null @@ -1,152 +0,0 @@ ---- -title: Listing records ---- - -## Using tabs to filter the records - -You can add tabs above the table, which can be used to filter the records based on some predefined conditions. Each tab can scope the Eloquent query of the table in a different way. To register tabs, add a `getTabs()` method to the List page class, and return an array of `Tab` objects: - -```php -use Filament\Resources\Components\Tab; -use Illuminate\Database\Eloquent\Builder; - -public function getTabs(): array -{ - return [ - 'all' => Tab::make(), - 'active' => Tab::make() - ->modifyQueryUsing(fn (Builder $query) => $query->where('active', true)), - 'inactive' => Tab::make() - ->modifyQueryUsing(fn (Builder $query) => $query->where('active', false)), - ]; -} -``` - -### Customizing the filter tab labels - -The keys of the array will be used as identifiers for the tabs, so they can be persisted in the URL's query string. The label of each tab is also generated from the key, but you can override that by passing a label into the `make()` method of the tab: - -```php -use Filament\Resources\Components\Tab; -use Illuminate\Database\Eloquent\Builder; - -public function getTabs(): array -{ - return [ - 'all' => Tab::make('All customers'), - 'active' => Tab::make('Active customers') - ->modifyQueryUsing(fn (Builder $query) => $query->where('active', true)), - 'inactive' => Tab::make('Inactive customers') - ->modifyQueryUsing(fn (Builder $query) => $query->where('active', false)), - ]; -} -``` - -### Adding icons to filter tabs - -You can add icons to the tabs by passing an [icon](https://blade-ui-kit.com/blade-icons?set=1#search) into the `icon()` method of the tab: - -```php -use Filament\Resources\Components\Tab; - -Tab::make() - ->icon('heroicon-m-user-group') -``` - -You can also change the icon's position to be after the label instead of before it, using the `iconPosition()` method: - -```php -use Filament\Support\Enums\IconPosition; - -Tab::make() - ->icon('heroicon-m-user-group') - ->iconPosition(IconPosition::After) -``` - -### Adding badges to filter tabs - -You can add badges to the tabs by passing a string into the `badge()` method of the tab: - -```php -use Filament\Resources\Components\Tab; - -Tab::make() - ->badge(Customer::query()->where('active', true)->count()) -``` - -#### Changing the color of filter tab badges - -The color of a badge may be changed using the `badgeColor()` method: - -```php -use Filament\Resources\Components\Tab; - -Tab::make() - ->badge(Customer::query()->where('active', true)->count()) - ->badgeColor('success') -``` - -### Customizing the default tab - -To customize the default tab that is selected when the page is loaded, you can return the array key of the tab from the `getDefaultActiveTab()` method: - -```php -use Filament\Resources\Components\Tab; - -public function getTabs(): array -{ - return [ - 'all' => Tab::make(), - 'active' => Tab::make(), - 'inactive' => Tab::make(), - ]; -} - -public function getDefaultActiveTab(): string | int | null -{ - return 'active'; -} -``` - -## Authorization - -For authorization, Filament will observe any [model policies](https://laravel.com/docs/authorization#creating-policies) that are registered in your app. - -Users may access the List page if the `viewAny()` method of the model policy returns `true`. - -The `reorder()` method is used to control [reordering a record](#reordering-records). - -## Customizing the table Eloquent query - -Although you can [customize the Eloquent query for the entire resource](getting-started#customizing-the-resource-eloquent-query), you may also make specific modifications for the List page table. To do this, use the `modifyQueryUsing()` method in the `table()` method of the resource: - -```php -use Filament\Tables\Table; -use Illuminate\Database\Eloquent\Builder; - -public static function table(Table $table): Table -{ - return $table - ->modifyQueryUsing(fn (Builder $query) => $query->withoutGlobalScopes()); -} -``` - -## Custom list page view - -For further customization opportunities, you can override the static `$view` property on the page class to a custom view in your app: - -```php -protected static string $view = 'filament.resources.users.pages.list-users'; -``` - -This assumes that you have created a view at `resources/views/filament/resources/users/pages/list-users.blade.php`. - -Here's a basic example of what that view might contain: - -```blade - - {{ $this->table }} - -``` - -To see everything that the default view contains, you can check the `vendor/filament/filament/resources/views/resources/pages/list-records.blade.php` file in your project. diff --git a/vendor/filament/filament/docs/03-resources/03-creating-records.md b/vendor/filament/filament/docs/03-resources/03-creating-records.md deleted file mode 100644 index 3255b7b5..00000000 --- a/vendor/filament/filament/docs/03-resources/03-creating-records.md +++ /dev/null @@ -1,378 +0,0 @@ ---- -title: Creating records ---- - -## Customizing data before saving - -Sometimes, you may wish to modify form data before it is finally saved to the database. To do this, you may define a `mutateFormDataBeforeCreate()` method on the Create page class, which accepts the `$data` as an array, and returns the modified version: - -```php -protected function mutateFormDataBeforeCreate(array $data): array -{ - $data['user_id'] = auth()->id(); - - return $data; -} -``` - -Alternatively, if you're creating records in a modal action, check out the [Actions documentation](../../actions/prebuilt-actions/create#customizing-data-before-saving). - -## Customizing the creation process - -You can tweak how the record is created using the `handleRecordCreation()` method on the Create page class: - -```php -use Illuminate\Database\Eloquent\Model; - -protected function handleRecordCreation(array $data): Model -{ - return static::getModel()::create($data); -} -``` - -Alternatively, if you're creating records in a modal action, check out the [Actions documentation](../../actions/prebuilt-actions/create#customizing-the-creation-process). - -## Customizing redirects - -By default, after saving the form, the user will be redirected to the [Edit page](editing-records) of the resource, or the [View page](viewing-records) if it is present. - -You may set up a custom redirect when the form is saved by overriding the `getRedirectUrl()` method on the Create page class. - -For example, the form can redirect back to the [List page](listing-records): - -```php -protected function getRedirectUrl(): string -{ - return $this->getResource()::getUrl('index'); -} -``` - -If you wish to be redirected to the previous page, else the index page: - -```php -protected function getRedirectUrl(): string -{ - return $this->previousUrl ?? $this->getResource()::getUrl('index'); -} -``` - -## Customizing the save notification - -When the record is successfully created, a notification is dispatched to the user, which indicates the success of their action. - -To customize the title of this notification, define a `getCreatedNotificationTitle()` method on the create page class: - -```php -protected function getCreatedNotificationTitle(): ?string -{ - return 'User registered'; -} -``` - -Alternatively, if you're creating records in a modal action, check out the [Actions documentation](../../actions/prebuilt-actions/create#customizing-the-save-notification). - -You may customize the entire notification by overriding the `getCreatedNotification()` method on the create page class: - -```php -use Filament\Notifications\Notification; - -protected function getCreatedNotification(): ?Notification -{ - return Notification::make() - ->success() - ->title('User registered') - ->body('The user has been created successfully.'); -} -``` - -To disable the notification altogether, return `null` from the `getCreatedNotification()` method on the create page class: - -```php -use Filament\Notifications\Notification; - -protected function getCreatedNotification(): ?Notification -{ - return null; -} -``` - -## Lifecycle hooks - -Hooks may be used to execute code at various points within a page's lifecycle, like before a form is saved. To set up a hook, create a protected method on the Create page class with the name of the hook: - -```php -protected function beforeCreate(): void -{ - // ... -} -``` - -In this example, the code in the `beforeCreate()` method will be called before the data in the form is saved to the database. - -There are several available hooks for the Create page: - -```php -use Filament\Resources\Pages\CreateRecord; - -class CreateUser extends CreateRecord -{ - // ... - - protected function beforeFill(): void - { - // Runs before the form fields are populated with their default values. - } - - protected function afterFill(): void - { - // Runs after the form fields are populated with their default values. - } - - protected function beforeValidate(): void - { - // Runs before the form fields are validated when the form is submitted. - } - - protected function afterValidate(): void - { - // Runs after the form fields are validated when the form is submitted. - } - - protected function beforeCreate(): void - { - // Runs before the form fields are saved to the database. - } - - protected function afterCreate(): void - { - // Runs after the form fields are saved to the database. - } -} -``` - -Alternatively, if you're creating records in a modal action, check out the [Actions documentation](../../actions/prebuilt-actions/create#lifecycle-hooks). - -## Halting the creation process - -At any time, you may call `$this->halt()` from inside a lifecycle hook or mutation method, which will halt the entire creation process: - -```php -use Filament\Notifications\Actions\Action; -use Filament\Notifications\Notification; - -protected function beforeCreate(): void -{ - if (! $this->getRecord()->team->subscribed()) { - Notification::make() - ->warning() - ->title('You don\'t have an active subscription!') - ->body('Choose a plan to continue.') - ->persistent() - ->actions([ - Action::make('subscribe') - ->button() - ->url(route('subscribe'), shouldOpenInNewTab: true), - ]) - ->send(); - - $this->halt(); - } -} -``` - -Alternatively, if you're creating records in a modal action, check out the [Actions documentation](../../actions/prebuilt-actions/create#halting-the-creation-process). - -## Authorization - -For authorization, Filament will observe any [model policies](https://laravel.com/docs/authorization#creating-policies) that are registered in your app. - -Users may access the Create page if the `create()` method of the model policy returns `true`. - -## Using a wizard - -You may easily transform the creation process into a multistep wizard. - -On the page class, add the corresponding `HasWizard` trait: - -```php -use App\Filament\Resources\CategoryResource; -use Filament\Resources\Pages\CreateRecord; - -class CreateCategory extends CreateRecord -{ - use CreateRecord\Concerns\HasWizard; - - protected static string $resource = CategoryResource::class; - - protected function getSteps(): array - { - return [ - // ... - ]; - } -} -``` - -Inside the `getSteps()` array, return your [wizard steps](../../forms/layout/wizard): - -```php -use Filament\Forms\Components\MarkdownEditor; -use Filament\Forms\Components\TextInput; -use Filament\Forms\Components\Toggle; -use Filament\Forms\Components\Wizard\Step; - -protected function getSteps(): array -{ - return [ - Step::make('Name') - ->description('Give the category a clear and unique name') - ->schema([ - TextInput::make('name') - ->required() - ->live() - ->afterStateUpdated(fn ($state, callable $set) => $set('slug', Str::slug($state))), - TextInput::make('slug') - ->disabled() - ->required() - ->unique(Category::class, 'slug', fn ($record) => $record), - ]), - Step::make('Description') - ->description('Add some extra details') - ->schema([ - MarkdownEditor::make('description') - ->columnSpan('full'), - ]), - Step::make('Visibility') - ->description('Control who can view it') - ->schema([ - Toggle::make('is_visible') - ->label('Visible to customers.') - ->default(true), - ]), - ]; -} -``` - -Alternatively, if you're creating records in a modal action, check out the [Actions documentation](../../actions/prebuilt-actions/create#using-a-wizard). - -Now, create a new record to see your wizard in action! Edit will still use the form defined within the resource class. - -If you'd like to allow free navigation, so all the steps are skippable, override the `hasSkippableSteps()` method: - -```php -public function hasSkippableSteps(): bool -{ - return true; -} -``` - -### Sharing fields between the resource form and wizards - -If you'd like to reduce the amount of repetition between the resource form and wizard steps, it's a good idea to extract public static resource functions for your fields, where you can easily retrieve an instance of a field from the resource or the wizard: - -```php -use Filament\Forms; -use Filament\Forms\Form; -use Filament\Resources\Resource; - -class CategoryResource extends Resource -{ - public static function form(Form $form): Form - { - return $form - ->schema([ - static::getNameFormField(), - static::getSlugFormField(), - // ... - ]); - } - - public static function getNameFormField(): Forms\Components\TextInput - { - return TextInput::make('name') - ->required() - ->live() - ->afterStateUpdated(fn ($state, callable $set) => $set('slug', Str::slug($state))); - } - - public static function getSlugFormField(): Forms\Components\TextInput - { - return TextInput::make('slug') - ->disabled() - ->required() - ->unique(Category::class, 'slug', fn ($record) => $record); - } -} -``` - -```php -use App\Filament\Resources\CategoryResource; -use Filament\Resources\Pages\CreateRecord; - -class CreateCategory extends CreateRecord -{ - use CreateRecord\Concerns\HasWizard; - - protected static string $resource = CategoryResource::class; - - protected function getSteps(): array - { - return [ - Step::make('Name') - ->description('Give the category a clear and unique name') - ->schema([ - CategoryResource::getNameFormField(), - CategoryResource::getSlugFormField(), - ]), - // ... - ]; - } -} -``` - -## Importing resource records - -Filament includes an `ImportAction` that you can add to the `getHeaderActions()` of the [List page](listing-records). It allows users to upload a CSV of data to import into the resource: - -```php -use App\Filament\Imports\ProductImporter; -use Filament\Actions; - -protected function getHeaderActions(): array -{ - return [ - Actions\ImportAction::make() - ->importer(ProductImporter::class), - Actions\CreateAction::make(), - ]; -} -``` - -The "importer" class [needs to be created](../../actions/prebuilt-actions/import#creating-an-importer) to tell Filament how to import each row of the CSV. You can learn everything about the `ImportAction` in the [Actions documentation](../../actions/prebuilt-actions/import). - -## Custom view - -For further customization opportunities, you can override the static `$view` property on the page class to a custom view in your app: - -```php -protected static string $view = 'filament.resources.users.pages.create-user'; -``` - -This assumes that you have created a view at `resources/views/filament/resources/users/pages/create-user.blade.php`. - -Here's a basic example of what that view might contain: - -```blade - - - {{ $this->form }} - - - - -``` - -To see everything that the default view contains, you can check the `vendor/filament/filament/resources/views/resources/pages/create-record.blade.php` file in your project. diff --git a/vendor/filament/filament/docs/03-resources/04-editing-records.md b/vendor/filament/filament/docs/03-resources/04-editing-records.md deleted file mode 100644 index c0b8668f..00000000 --- a/vendor/filament/filament/docs/03-resources/04-editing-records.md +++ /dev/null @@ -1,365 +0,0 @@ ---- -title: Editing records ---- - -## Customizing data before filling the form - -You may wish to modify the data from a record before it is filled into the form. To do this, you may define a `mutateFormDataBeforeFill()` method on the Edit page class to modify the `$data` array, and return the modified version before it is filled into the form: - -```php -protected function mutateFormDataBeforeFill(array $data): array -{ - $data['user_id'] = auth()->id(); - - return $data; -} -``` - -Alternatively, if you're editing records in a modal action, check out the [Actions documentation](../../actions/prebuilt-actions/edit#customizing-data-before-filling-the-form). - -## Customizing data before saving - -Sometimes, you may wish to modify form data before it is finally saved to the database. To do this, you may define a `mutateFormDataBeforeSave()` method on the Edit page class, which accepts the `$data` as an array, and returns it modified: - -```php -protected function mutateFormDataBeforeSave(array $data): array -{ - $data['last_edited_by_id'] = auth()->id(); - - return $data; -} -``` - -Alternatively, if you're editing records in a modal action, check out the [Actions documentation](../../actions/prebuilt-actions/edit#customizing-data-before-saving). - -## Customizing the saving process - -You can tweak how the record is updated using the `handleRecordUpdate()` method on the Edit page class: - -```php -use Illuminate\Database\Eloquent\Model; - -protected function handleRecordUpdate(Model $record, array $data): Model -{ - $record->update($data); - - return $record; -} -``` - -Alternatively, if you're editing records in a modal action, check out the [Actions documentation](../../actions/prebuilt-actions/edit#customizing-the-saving-process). - -## Customizing redirects - -By default, saving the form will not redirect the user to another page. - -You may set up a custom redirect when the form is saved by overriding the `getRedirectUrl()` method on the Edit page class. - -For example, the form can redirect back to the [List page](listing-records) of the resource: - -```php -protected function getRedirectUrl(): string -{ - return $this->getResource()::getUrl('index'); -} -``` - -Or the [View page](viewing-records): - -```php -protected function getRedirectUrl(): string -{ - return $this->getResource()::getUrl('view', ['record' => $this->getRecord()]); -} -``` - -If you wish to be redirected to the previous page, else the index page: - -```php -protected function getRedirectUrl(): string -{ - return $this->previousUrl ?? $this->getResource()::getUrl('index'); -} -``` - -## Customizing the save notification - -When the record is successfully updated, a notification is dispatched to the user, which indicates the success of their action. - -To customize the title of this notification, define a `getSavedNotificationTitle()` method on the edit page class: - -```php -protected function getSavedNotificationTitle(): ?string -{ - return 'User updated'; -} -``` - -Alternatively, if you're editing records in a modal action, check out the [Actions documentation](../../actions/prebuilt-actions/edit#customizing-the-save-notification). - -You may customize the entire notification by overriding the `getSavedNotification()` method on the edit page class: - -```php -use Filament\Notifications\Notification; - -protected function getSavedNotification(): ?Notification -{ - return Notification::make() - ->success() - ->title('User updated') - ->body('The user has been saved successfully.'); -} -``` - -To disable the notification altogether, return `null` from the `getSavedNotification()` method on the edit page class: - -```php -use Filament\Notifications\Notification; - -protected function getSavedNotification(): ?Notification -{ - return null; -} -``` - -## Lifecycle hooks - -Hooks may be used to execute code at various points within a page's lifecycle, like before a form is saved. To set up a hook, create a protected method on the Edit page class with the name of the hook: - -```php -protected function beforeSave(): void -{ - // ... -} -``` - -In this example, the code in the `beforeSave()` method will be called before the data in the form is saved to the database. - -There are several available hooks for the Edit pages: - -```php -use Filament\Resources\Pages\EditRecord; - -class EditUser extends EditRecord -{ - // ... - - protected function beforeFill(): void - { - // Runs before the form fields are populated from the database. - } - - protected function afterFill(): void - { - // Runs after the form fields are populated from the database. - } - - protected function beforeValidate(): void - { - // Runs before the form fields are validated when the form is saved. - } - - protected function afterValidate(): void - { - // Runs after the form fields are validated when the form is saved. - } - - protected function beforeSave(): void - { - // Runs before the form fields are saved to the database. - } - - protected function afterSave(): void - { - // Runs after the form fields are saved to the database. - } -} -``` - -Alternatively, if you're editing records in a modal action, check out the [Actions documentation](../../actions/prebuilt-actions/edit#lifecycle-hooks). - -## Halting the saving process - -At any time, you may call `$this->halt()` from inside a lifecycle hook or mutation method, which will halt the entire saving process: - -```php -use Filament\Notifications\Actions\Action; -use Filament\Notifications\Notification; - -protected function beforeSave(): void -{ - if (! $this->getRecord()->team->subscribed()) { - Notification::make() - ->warning() - ->title('You don\'t have an active subscription!') - ->body('Choose a plan to continue.') - ->persistent() - ->actions([ - Action::make('subscribe') - ->button() - ->url(route('subscribe'), shouldOpenInNewTab: true), - ]) - ->send(); - - $this->halt(); - } -} -``` - -Alternatively, if you're editing records in a modal action, check out the [Actions documentation](../../actions/prebuilt-actions/edit#halting-the-saving-process). - -## Authorization - -For authorization, Filament will observe any [model policies](https://laravel.com/docs/authorization#creating-policies) that are registered in your app. - -Users may access the Edit page if the `update()` method of the model policy returns `true`. - -They also have the ability to delete the record if the `delete()` method of the policy returns `true`. - -## Custom actions - -"Actions" are buttons that are displayed on pages, which allow the user to run a Livewire method on the page or visit a URL. - -On resource pages, actions are usually in 2 places: in the top right of the page, and below the form. - -For example, you may add a new button action next to "Delete" on the Edit page: - -```php -use Filament\Actions; -use Filament\Resources\Pages\EditRecord; - -class EditUser extends EditRecord -{ - // ... - - protected function getHeaderActions(): array - { - return [ - Actions\Action::make('impersonate') - ->action(function (): void { - // ... - }), - Actions\DeleteAction::make(), - ]; - } -} -``` - -Or, a new button next to "Save" below the form: - -```php -use Filament\Actions\Action; -use Filament\Resources\Pages\EditRecord; - -class EditUser extends EditRecord -{ - // ... - - protected function getFormActions(): array - { - return [ - ...parent::getFormActions(), - Action::make('close')->action('saveAndClose'), - ]; - } - - public function saveAndClose(): void - { - // ... - } -} -``` - -To view the entire actions API, please visit the [pages section](../pages#adding-actions-to-pages). - -## Creating another Edit page - -One Edit page may not be enough space to allow users to navigate many form fields. You can create as many Edit pages for a resource as you want. This is especially useful if you are using [resource sub-navigation](getting-started#resource-sub-navigation), as you are then easily able to switch between the different Edit pages. - -To create an Edit page, you should use the `make:filament-page` command: - -```bash -php artisan make:filament-page EditCustomerContact --resource=CustomerResource --type=EditRecord -``` - -You must register this new page in your resource's `getPages()` method: - -```php -public static function getPages(): array -{ - return [ - 'index' => Pages\ListCustomers::route('/'), - 'create' => Pages\CreateCustomer::route('/create'), - 'view' => Pages\ViewCustomer::route('/{record}'), - 'edit' => Pages\EditCustomer::route('/{record}/edit'), - 'edit-contact' => Pages\EditCustomerContact::route('/{record}/edit/contact'), - ]; -} -``` - -Now, you can define the `form()` for this page, which can contain other fields that are not present on the main Edit page: - -```php -use Filament\Forms\Form; - -public function form(Form $form): Form -{ - return $form - ->schema([ - // ... - ]); -} -``` - -## Adding edit pages to resource sub-navigation - -If you're using [resource sub-navigation](getting-started#resource-sub-navigation), you can register this page as normal in `getRecordSubNavigation()` of the resource: - -```php -use App\Filament\Resources\CustomerResource\Pages; -use Filament\Resources\Pages\Page; - -public static function getRecordSubNavigation(Page $page): array -{ - return $page->generateNavigationItems([ - // ... - Pages\EditCustomerContact::class, - ]); -} -``` - -## Custom views - -For further customization opportunities, you can override the static `$view` property on the page class to a custom view in your app: - -```php -protected static string $view = 'filament.resources.users.pages.edit-user'; -``` - -This assumes that you have created a view at `resources/views/filament/resources/users/pages/edit-user.blade.php`. - -Here's a basic example of what that view might contain: - -```blade - - - {{ $this->form }} - - - - - @if (count($relationManagers = $this->getRelationManagers())) - - @endif - -``` - -To see everything that the default view contains, you can check the `vendor/filament/filament/resources/views/resources/pages/edit-record.blade.php` file in your project. diff --git a/vendor/filament/filament/docs/03-resources/05-viewing-records.md b/vendor/filament/filament/docs/03-resources/05-viewing-records.md deleted file mode 100644 index a98f93f5..00000000 --- a/vendor/filament/filament/docs/03-resources/05-viewing-records.md +++ /dev/null @@ -1,198 +0,0 @@ ---- -title: Viewing records ---- -import LaracastsBanner from "@components/LaracastsBanner.astro" - -## Creating a resource with a View page - -To create a new resource with a View page, you can use the `--view` flag: - -```bash -php artisan make:filament-resource User --view -``` - -## Using an infolist instead of a disabled form - - - -By default, the View page will display a disabled form with the record's data. If you preferred to display the record's data in an "infolist", you can define an `infolist()` method on the resource class: - -```php -use Filament\Infolists; -use Filament\Infolists\Infolist; - -public static function infolist(Infolist $infolist): Infolist -{ - return $infolist - ->schema([ - Infolists\Components\TextEntry::make('name'), - Infolists\Components\TextEntry::make('email'), - Infolists\Components\TextEntry::make('notes') - ->columnSpanFull(), - ]); -} -``` - -The `schema()` method is used to define the structure of your infolist. It is an array of [entries](../../infolists/entries/getting-started#available-entries) and [layout components](../../infolists/layout/getting-started#available-layout-components), in the order they should appear in your infolist. - -Check out the Infolists docs for a [guide](../../infolists/getting-started) on how to build infolists with Filament. - -## Adding a View page to an existing resource - -If you want to add a View page to an existing resource, create a new page in your resource's `Pages` directory: - -```bash -php artisan make:filament-page ViewUser --resource=UserResource --type=ViewRecord -``` - -You must register this new page in your resource's `getPages()` method: - -```php -public static function getPages(): array -{ - return [ - 'index' => Pages\ListUsers::route('/'), - 'create' => Pages\CreateUser::route('/create'), - 'view' => Pages\ViewUser::route('/{record}'), - 'edit' => Pages\EditUser::route('/{record}/edit'), - ]; -} -``` - -## Viewing records in modals - -If your resource is simple, you may wish to view records in modals rather than on the [View page](viewing-records). If this is the case, you can just [delete the view page](getting-started#deleting-resource-pages). - -If your resource doesn't contain a `ViewAction`, you can add one to the `$table->actions()` array: - -```php -use Filament\Tables; -use Filament\Tables\Table; - -public static function table(Table $table): Table -{ - return $table - ->columns([ - // ... - ]) - ->actions([ - Tables\Actions\ViewAction::make(), - // ... - ]); -} -``` - -## Customizing data before filling the form - -You may wish to modify the data from a record before it is filled into the form. To do this, you may define a `mutateFormDataBeforeFill()` method on the View page class to modify the `$data` array, and return the modified version before it is filled into the form: - -```php -protected function mutateFormDataBeforeFill(array $data): array -{ - $data['user_id'] = auth()->id(); - - return $data; -} -``` - -Alternatively, if you're viewing records in a modal action, check out the [Actions documentation](../../actions/prebuilt-actions/view#customizing-data-before-filling-the-form). - -## Authorization - -For authorization, Filament will observe any [model policies](https://laravel.com/docs/authorization#creating-policies) that are registered in your app. - -Users may access the View page if the `view()` method of the model policy returns `true`. - -## Creating another View page - -One View page may not be enough space to allow users to navigate a lot of information. You can create as many View pages for a resource as you want. This is especially useful if you are using [resource sub-navigation](getting-started#resource-sub-navigation), as you are then easily able to switch between the different View pages. - -To create a View page, you should use the `make:filament-page` command: - -```bash -php artisan make:filament-page ViewCustomerContact --resource=CustomerResource --type=ViewRecord -``` - -You must register this new page in your resource's `getPages()` method: - -```php -public static function getPages(): array -{ - return [ - 'index' => Pages\ListCustomers::route('/'), - 'create' => Pages\CreateCustomer::route('/create'), - 'view' => Pages\ViewCustomer::route('/{record}'), - 'view-contact' => Pages\ViewCustomerContact::route('/{record}/contact'), - 'edit' => Pages\EditCustomer::route('/{record}/edit'), - ]; -} -``` - -Now, you can define the `infolist()` or `form()` for this page, which can contain other components that are not present on the main View page: - -```php -use Filament\Infolists\Infolist; - -public function infolist(Infolist $infolist): Infolist -{ - return $infolist - ->schema([ - // ... - ]); -} -``` - -## Adding view pages to resource sub-navigation - -If you're using [resource sub-navigation](getting-started#resource-sub-navigation), you can register this page as normal in `getRecordSubNavigation()` of the resource: - -```php -use App\Filament\Resources\CustomerResource\Pages; -use Filament\Resources\Pages\Page; - -public static function getRecordSubNavigation(Page $page): array -{ - return $page->generateNavigationItems([ - // ... - Pages\ViewCustomerContact::class, - ]); -} -``` - -## Custom view - -For further customization opportunities, you can override the static `$view` property on the page class to a custom view in your app: - -```php -protected static string $view = 'filament.resources.users.pages.view-user'; -``` - -This assumes that you have created a view at `resources/views/filament/resources/users/pages/view-user.blade.php`. - -Here's a basic example of what that view might contain: - -```blade - - @if ($this->hasInfolist()) - {{ $this->infolist }} - @else - {{ $this->form }} - @endif - - @if (count($relationManagers = $this->getRelationManagers())) - - @endif - -``` - -To see everything that the default view contains, you can check the `vendor/filament/filament/resources/views/resources/pages/view-record.blade.php` file in your project. diff --git a/vendor/filament/filament/docs/03-resources/06-deleting-records.md b/vendor/filament/filament/docs/03-resources/06-deleting-records.md deleted file mode 100644 index 1b485ce7..00000000 --- a/vendor/filament/filament/docs/03-resources/06-deleting-records.md +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: Deleting records ---- - -## Handling soft deletes - -## Creating a resource with soft delete - -By default, you will not be able to interact with deleted records in the app. If you'd like to add functionality to restore, force delete and filter trashed records in your resource, use the `--soft-deletes` flag when generating the resource: - -```bash -php artisan make:filament-resource Customer --soft-deletes -``` - -## Adding soft deletes to an existing resource - -Alternatively, you may add soft deleting functionality to an existing resource. - -Firstly, you must update the resource: - -```php -use Filament\Tables; -use Filament\Tables\Table; -use Illuminate\Database\Eloquent\Builder; -use Illuminate\Database\Eloquent\SoftDeletingScope; - -public static function table(Table $table): Table -{ - return $table - ->columns([ - // ... - ]) - ->filters([ - Tables\Filters\TrashedFilter::make(), - // ... - ]) - ->actions([ - // You may add these actions to your table if you're using a simple - // resource, or you just want to be able to delete records without - // leaving the table. - Tables\Actions\DeleteAction::make(), - Tables\Actions\ForceDeleteAction::make(), - Tables\Actions\RestoreAction::make(), - // ... - ]) - ->bulkActions([ - Tables\Actions\BulkActionGroup::make([ - Tables\Actions\DeleteBulkAction::make(), - Tables\Actions\ForceDeleteBulkAction::make(), - Tables\Actions\RestoreBulkAction::make(), - // ... - ]), - ]); -} - -public static function getEloquentQuery(): Builder -{ - return parent::getEloquentQuery() - ->withoutGlobalScopes([ - SoftDeletingScope::class, - ]); -} -``` - -Now, update the Edit page class if you have one: - -```php -use Filament\Actions; - -protected function getHeaderActions(): array -{ - return [ - Actions\DeleteAction::make(), - Actions\ForceDeleteAction::make(), - Actions\RestoreAction::make(), - // ... - ]; -} -``` - -## Deleting records on the List page - -By default, you can bulk-delete records in your table. You may also wish to delete single records, using a `DeleteAction`: - -```php -use Filament\Tables; -use Filament\Tables\Table; - -public static function table(Table $table): Table -{ - return $table - ->columns([ - // ... - ]) - ->actions([ - // ... - Tables\Actions\DeleteAction::make(), - ]); -} -``` - -## Authorization - -For authorization, Filament will observe any [model policies](https://laravel.com/docs/authorization#creating-policies) that are registered in your app. - -Users may delete records if the `delete()` method of the model policy returns `true`. - -They also have the ability to bulk-delete records if the `deleteAny()` method of the policy returns `true`. Filament uses the `deleteAny()` method because iterating through multiple records and checking the `delete()` policy is not very performant. - -### Authorizing soft deletes - -The `forceDelete()` policy method is used to prevent a single soft-deleted record from being force-deleted. `forceDeleteAny()` is used to prevent records from being bulk force-deleted. Filament uses the `forceDeleteAny()` method because iterating through multiple records and checking the `forceDelete()` policy is not very performant. - -The `restore()` policy method is used to prevent a single soft-deleted record from being restored. `restoreAny()` is used to prevent records from being bulk restored. Filament uses the `restoreAny()` method because iterating through multiple records and checking the `restore()` policy is not very performant. diff --git a/vendor/filament/filament/docs/03-resources/07-relation-managers.md b/vendor/filament/filament/docs/03-resources/07-relation-managers.md deleted file mode 100644 index 32475e8a..00000000 --- a/vendor/filament/filament/docs/03-resources/07-relation-managers.md +++ /dev/null @@ -1,1006 +0,0 @@ ---- -title: Managing relationships ---- -import LaracastsBanner from "@components/LaracastsBanner.astro" - -## Choosing the right tool for the job - -Filament provides many ways to manage relationships in the app. Which feature you should use depends on the type of relationship you are managing, and which UI you are looking for. - -### Relation managers - interactive tables underneath your resource forms - -> These are compatible with `HasMany`, `HasManyThrough`, `BelongsToMany`, `MorphMany` and `MorphToMany` relationships. - -[Relation managers](#creating-a-relation-manager) are interactive tables that allow administrators to list, create, attach, associate, edit, detach, dissociate and delete related records without leaving the resource's Edit or View page. - -### Select & checkbox list - choose from existing records or create a new one - -> These are compatible with `BelongsTo`, `MorphTo` and `BelongsToMany` relationships. - -Using a [select](../../forms/fields/select#integrating-with-an-eloquent-relationship), users will be able to choose from a list of existing records. You may also [add a button that allows you to create a new record inside a modal](../../forms/fields/select#creating-new-records), without leaving the page. - -When using a `BelongsToMany` relationship with a select, you'll be able to select multiple options, not just one. Records will be automatically added to your pivot table when you submit the form. If you wish, you can swap out the multi-select dropdown with a simple [checkbox list](../../forms/fields/checkbox-list#integrating-with-an-eloquent-relationship). Both components work in the same way. - -### Repeaters - CRUD multiple related records inside the owner's form - -> These are compatible with `HasMany` and `MorphMany` relationships. - -[Repeaters](../../forms/fields/repeater#integrating-with-an-eloquent-relationship) are standard form components, which can render a repeatable set of fields infinitely. They can be hooked up to a relationship, so records are automatically read, created, updated, and deleted from the related table. They live inside the main form schema, and can be used inside resource pages, as well as nesting within action modals. - -From a UX perspective, this solution is only suitable if your related model only has a few fields. Otherwise, the form can get very long. - -### Layout form components - saving form fields to a single relationship - -> These are compatible with `BelongsTo`, `HasOne` and `MorphOne` relationships. - -All layout form components ([Grid](../../forms/layout/grid#grid-component), [Section](../../forms/layout/section), [Fieldset](../../forms/layout/fieldset), etc.) have a [`relationship()` method](../../forms/advanced#saving-data-to-relationships). When you use this, all fields within that layout are saved to the related model instead of the owner's model: - -```php -use Filament\Forms\Components\Fieldset; -use Filament\Forms\Components\FileUpload; -use Filament\Forms\Components\Textarea; -use Filament\Forms\Components\TextInput; - -Fieldset::make('Metadata') - ->relationship('metadata') - ->schema([ - TextInput::make('title'), - Textarea::make('description'), - FileUpload::make('image'), - ]) -``` - -In this example, the `title`, `description` and `image` are automatically loaded from the `metadata` relationship, and saved again when the form is submitted. If the `metadata` record does not exist, it is automatically created. - -This feature is explained more in depth in the [Forms documentation](../../forms/advanced#saving-data-to-relationships). Please visit that page for more information about how to use it. - -## Creating a relation manager - - - -To create a relation manager, you can use the `make:filament-relation-manager` command: - -```bash -php artisan make:filament-relation-manager CategoryResource posts title -``` - -- `CategoryResource` is the name of the resource class for the owner (parent) model. -- `posts` is the name of the relationship you want to manage. -- `title` is the name of the attribute that will be used to identify posts. - -This will create a `CategoryResource/RelationManagers/PostsRelationManager.php` file. This contains a class where you are able to define a [form](getting-started#resource-forms) and [table](getting-started#resource-tables) for your relation manager: - -```php -use Filament\Forms; -use Filament\Forms\Form; -use Filament\Tables; -use Filament\Tables\Table; - -public function form(Form $form): Form -{ - return $form - ->schema([ - Forms\Components\TextInput::make('title')->required(), - // ... - ]); -} - -public function table(Table $table): Table -{ - return $table - ->columns([ - Tables\Columns\TextColumn::make('title'), - // ... - ]); -} -``` - -You must register the new relation manager in your resource's `getRelations()` method: - -```php -public static function getRelations(): array -{ - return [ - RelationManagers\PostsRelationManager::class, - ]; -} -``` - -Once a table and form have been defined for the relation manager, visit the [Edit](editing-records) or [View](viewing-records) page of your resource to see it in action. - -### Read-only mode - -Relation managers are usually displayed on either the Edit or View page of a resource. On the View page, Filament will automatically hide all actions that modify the relationship, such as create, edit, and delete. We call this "read-only mode", and it is there by default to preserve the read-only behaviour of the View page. However, you can disable this behaviour, by overriding the `isReadOnly()` method on the relation manager class to return `false` all the time: - -```php -public function isReadOnly(): bool -{ - return false; -} -``` - -Alternatively, if you hate this functionality, you can disable it for all relation managers at once in the panel [configuration](../configuration): - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->readOnlyRelationManagersOnResourceViewPagesByDefault(false); -} -``` - -### Unconventional inverse relationship names - -For inverse relationships that do not follow Laravel's naming guidelines, you may wish to use the `inverseRelationship()` method on the table: - -```php -use Filament\Tables; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return $table - ->columns([ - Tables\Columns\TextColumn::make('title'), - // ... - ]) - ->inverseRelationship('section'); // Since the inverse related model is `Category`, this is normally `category`, not `section`. -} -``` - -### Handling soft deletes - -By default, you will not be able to interact with deleted records in the relation manager. If you'd like to add functionality to restore, force delete and filter trashed records in your relation manager, use the `--soft-deletes` flag when generating the relation manager: - -```bash -php artisan make:filament-relation-manager CategoryResource posts title --soft-deletes -``` - -You can find out more about soft deleting [here](#deleting-records). - -## Listing related records - -Related records will be listed in a table. The entire relation manager is based around this table, which contains actions to [create](#creating-related-records), [edit](#editing-related-records), [attach / detach](#attaching-and-detaching-records), [associate / dissociate](#associating-and-dissociating-records), and delete records. - -You may use any features of the [Table Builder](../../tables) to customize relation managers. - -### Listing with pivot attributes - -For `BelongsToMany` and `MorphToMany` relationships, you may also add pivot table attributes. For example, if you have a `TeamsRelationManager` for your `UserResource`, and you want to add the `role` pivot attribute to the table, you can use: - -```php -use Filament\Tables; - -public function table(Table $table): Table -{ - return $table - ->columns([ - Tables\Columns\TextColumn::make('name'), - Tables\Columns\TextColumn::make('role'), - ]); -} -``` - -Please ensure that any pivot attributes are listed in the `withPivot()` method of the relationship *and* inverse relationship. - -## Creating related records - -### Creating with pivot attributes - -For `BelongsToMany` and `MorphToMany` relationships, you may also add pivot table attributes. For example, if you have a `TeamsRelationManager` for your `UserResource`, and you want to add the `role` pivot attribute to the create form, you can use: - -```php -use Filament\Forms; -use Filament\Forms\Form; - -public function form(Form $form): Form -{ - return $form - ->schema([ - Forms\Components\TextInput::make('name')->required(), - Forms\Components\TextInput::make('role')->required(), - // ... - ]); -} -``` - -Please ensure that any pivot attributes are listed in the `withPivot()` method of the relationship *and* inverse relationship. - -### Customizing the `CreateAction` - -To learn how to customize the `CreateAction`, including mutating the form data, changing the notification, and adding lifecycle hooks, please see the [Actions documentation](../../actions/prebuilt-actions/create). - -## Editing related records - -### Editing with pivot attributes - -For `BelongsToMany` and `MorphToMany` relationships, you may also edit pivot table attributes. For example, if you have a `TeamsRelationManager` for your `UserResource`, and you want to add the `role` pivot attribute to the edit form, you can use: - -```php -use Filament\Forms; -use Filament\Forms\Form; - -public function form(Form $form): Form -{ - return $form - ->schema([ - Forms\Components\TextInput::make('name')->required(), - Forms\Components\TextInput::make('role')->required(), - // ... - ]); -} -``` - -Please ensure that any pivot attributes are listed in the `withPivot()` method of the relationship *and* inverse relationship. - -### Customizing the `EditAction` - -To learn how to customize the `EditAction`, including mutating the form data, changing the notification, and adding lifecycle hooks, please see the [Actions documentation](../../actions/prebuilt-actions/edit). - -## Attaching and detaching records - -Filament is able to attach and detach records for `BelongsToMany` and `MorphToMany` relationships. - -When generating your relation manager, you may pass the `--attach` flag to also add `AttachAction`, `DetachAction` and `DetachBulkAction` to the table: - -```bash -php artisan make:filament-relation-manager CategoryResource posts title --attach -``` - -Alternatively, if you've already generated your resource, you can just add the actions to the `$table` arrays: - -```php -use Filament\Tables; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return $table - ->columns([ - // ... - ]) - ->headerActions([ - // ... - Tables\Actions\AttachAction::make(), - ]) - ->actions([ - // ... - Tables\Actions\DetachAction::make(), - ]) - ->bulkActions([ - Tables\Actions\BulkActionGroup::make([ - // ... - Tables\Actions\DetachBulkAction::make(), - ]), - ]); -} -``` - -### Preloading the attachment modal select options - -By default, as you search for a record to attach, options will load from the database via AJAX. If you wish to preload these options when the form is first loaded instead, you can use the `preloadRecordSelect()` method of `AttachAction`: - -```php -use Filament\Tables\Actions\AttachAction; - -AttachAction::make() - ->preloadRecordSelect() -``` - -### Attaching with pivot attributes - -When you attach record with the `Attach` button, you may wish to define a custom form to add pivot attributes to the relationship: - -```php -use Filament\Forms; -use Filament\Tables\Actions\AttachAction; - -AttachAction::make() - ->form(fn (AttachAction $action): array => [ - $action->getRecordSelect(), - Forms\Components\TextInput::make('role')->required(), - ]) -``` - -In this example, `$action->getRecordSelect()` returns the select field to pick the record to attach. The `role` text input is then saved to the pivot table's `role` column. - -Please ensure that any pivot attributes are listed in the `withPivot()` method of the relationship *and* inverse relationship. - -### Scoping the options to attach - -You may want to scope the options available to `AttachAction`: - -```php -use Filament\Tables\Actions\AttachAction; -use Illuminate\Database\Eloquent\Builder; - -AttachAction::make() - ->recordSelectOptionsQuery(fn (Builder $query) => $query->whereBelongsTo(auth()->user())) -``` - -### Searching the options to attach across multiple columns - -By default, the options available to `AttachAction` will be searched in the `recordTitleAttribute()` of the table. If you wish to search across multiple columns, you can use the `recordSelectSearchColumns()` method: - -```php -use Filament\Tables\Actions\AttachAction; - -AttachAction::make() - ->recordSelectSearchColumns(['title', 'description']) -``` - -### Customizing the select field in the attached modal - -You may customize the select field object that is used during attachment by passing a function to the `recordSelect()` method: - -```php -use Filament\Forms\Components\Select; -use Filament\Tables\Actions\AttachAction; - -AttachAction::make() - ->recordSelect( - fn (Select $select) => $select->placeholder('Select a post'), - ) -``` - -### Handling duplicates - -By default, you will not be allowed to attach a record more than once. This is because you must also set up a primary `id` column on the pivot table for this feature to work. - -Please ensure that the `id` attribute is listed in the `withPivot()` method of the relationship *and* inverse relationship. - -Finally, add the `allowDuplicates()` method to the table: - -```php -public function table(Table $table): Table -{ - return $table - ->allowDuplicates(); -} -``` - -## Associating and dissociating records - -Filament is able to associate and dissociate records for `HasMany` and `MorphMany` relationships. - -When generating your relation manager, you may pass the `--associate` flag to also add `AssociateAction`, `DissociateAction` and `DissociateBulkAction` to the table: - -```bash -php artisan make:filament-relation-manager CategoryResource posts title --associate -``` - -Alternatively, if you've already generated your resource, you can just add the actions to the `$table` arrays: - -```php -use Filament\Tables; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return $table - ->columns([ - // ... - ]) - ->headerActions([ - // ... - Tables\Actions\AssociateAction::make(), - ]) - ->actions([ - // ... - Tables\Actions\DissociateAction::make(), - ]) - ->bulkActions([ - Tables\Actions\BulkActionGroup::make([ - // ... - Tables\Actions\DissociateBulkAction::make(), - ]), - ]); -} -``` - -### Preloading the associate modal select options - -By default, as you search for a record to associate, options will load from the database via AJAX. If you wish to preload these options when the form is first loaded instead, you can use the `preloadRecordSelect()` method of `AssociateAction`: - -```php -use Filament\Tables\Actions\AssociateAction; - -AssociateAction::make() - ->preloadRecordSelect() -``` - -### Scoping the options to associate - -You may want to scope the options available to `AssociateAction`: - -```php -use Filament\Tables\Actions\AssociateAction; -use Illuminate\Database\Eloquent\Builder; - -AssociateAction::make() - ->recordSelectOptionsQuery(fn (Builder $query) => $query->whereBelongsTo(auth()->user())) -``` - -### Searching the options to associate across multiple columns - -By default, the options available to `AssociateAction` will be searched in the `recordTitleAttribute()` of the table. If you wish to search across multiple columns, you can use the `recordSelectSearchColumns()` method: - -```php -use Filament\Tables\Actions\AssociateAction; - -AssociateAction::make() - ->recordSelectSearchColumns(['title', 'description']) -``` - -### Customizing the select field in the associate modal - -You may customize the select field object that is used during association by passing a function to the `recordSelect()` method: - -```php -use Filament\Forms\Components\Select; -use Filament\Tables\Actions\AssociateAction; - -AssociateAction::make() - ->recordSelect( - fn (Select $select) => $select->placeholder('Select a post'), - ) -``` - -## Viewing related records - -When generating your relation manager, you may pass the `--view` flag to also add a `ViewAction` to the table: - -```bash -php artisan make:filament-relation-manager CategoryResource posts title --view -``` - -Alternatively, if you've already generated your relation manager, you can just add the `ViewAction` to the `$table->actions()` array: - -```php -use Filament\Tables; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return $table - ->columns([ - // ... - ]) - ->actions([ - Tables\Actions\ViewAction::make(), - // ... - ]); -} -``` - -## Deleting related records - -By default, you will not be able to interact with deleted records in the relation manager. If you'd like to add functionality to restore, force delete and filter trashed records in your relation manager, use the `--soft-deletes` flag when generating the relation manager: - -```bash -php artisan make:filament-relation-manager CategoryResource posts title --soft-deletes -``` - -Alternatively, you may add soft deleting functionality to an existing relation manager: - -```php -use Filament\Tables; -use Filament\Tables\Table; -use Illuminate\Database\Eloquent\Builder; -use Illuminate\Database\Eloquent\SoftDeletingScope; - -public function table(Table $table): Table -{ - return $table - ->modifyQueryUsing(fn (Builder $query) => $query->withoutGlobalScopes([ - SoftDeletingScope::class, - ])) - ->columns([ - // ... - ]) - ->filters([ - Tables\Filters\TrashedFilter::make(), - // ... - ]) - ->actions([ - Tables\Actions\DeleteAction::make(), - Tables\Actions\ForceDeleteAction::make(), - Tables\Actions\RestoreAction::make(), - // ... - ]) - ->bulkActions([ - BulkActionGroup::make([ - Tables\Actions\DeleteBulkAction::make(), - Tables\Actions\ForceDeleteBulkAction::make(), - Tables\Actions\RestoreBulkAction::make(), - // ... - ]), - ]); -} -``` - -### Customizing the `DeleteAction` - -To learn how to customize the `DeleteAction`, including changing the notification and adding lifecycle hooks, please see the [Actions documentation](../../actions/prebuilt-actions/delete). - -## Importing related records - -The [`ImportAction`](../../actions/prebuilt-actions/import) can be added to the header of a relation manager to import records. In this case, you probably want to tell the importer which owner these new records belong to. You can use [import options](../../actions/prebuilt-actions/import#using-import-options) to pass through the ID of the owner record: - -```php -ImportAction::make() - ->importer(ProductImporter::class) - ->options(['categoryId' => $this->getOwnerRecord()->getKey()]) -``` - -Now, in the importer class, you can associate the owner in a one-to-many relationship with the imported record: - -```php -public function resolveRecord(): ?Product -{ - $product = Product::firstOrNew([ - 'sku' => $this->data['sku'], - ]); - - $product->category()->associate($this->options['categoryId']); - - return $product; -} -``` - -Alternatively, you can attach the record in a many-to-many relationship using the `afterSave()` hook of the importer: - -```php -protected function afterSave(): void -{ - $this->record->categories()->syncWithoutDetaching([$this->options['categoryId']]); -} -``` - -## Accessing the relationship's owner record - -Relation managers are Livewire components. When they are first loaded, the owner record (the Eloquent record which serves as a parent - the main resource model) is saved into a property. You can read this property using: - -```php -$this->getOwnerRecord() -``` - -However, if you're inside a `static` method like `form()` or `table()`, `$this` isn't accessible. So, you may [use a callback](../../forms/advanced#form-component-utility-injection) to access the `$livewire` instance: - -```php -use Filament\Forms; -use Filament\Forms\Form; -use Filament\Resources\RelationManagers\RelationManager; - -public function form(Form $form): Form -{ - return $form - ->schema([ - Forms\Components\Select::make('store_id') - ->options(function (RelationManager $livewire): array { - return $livewire->getOwnerRecord()->stores() - ->pluck('name', 'id') - ->toArray(); - }), - // ... - ]); -} -``` - -All methods in Filament accept a callback which you can access `$livewire->ownerRecord` in. - -## Grouping relation managers - -You may choose to group relation managers together into one tab. To do this, you may wrap multiple managers in a `RelationGroup` object, with a label: - -```php -use Filament\Resources\RelationManagers\RelationGroup; - -public static function getRelations(): array -{ - return [ - // ... - RelationGroup::make('Contacts', [ - RelationManagers\IndividualsRelationManager::class, - RelationManagers\OrganizationsRelationManager::class, - ]), - // ... - ]; -} -``` - -## Conditionally showing relation managers - -By default, relation managers will be visible if the `viewAny()` method for the related model policy returns `true`. - -You may use the `canViewForRecord()` method to determine if the relation manager should be visible for a specific owner record and page: - -```php -use Illuminate\Database\Eloquent\Model; - -public static function canViewForRecord(Model $ownerRecord, string $pageClass): bool -{ - return $ownerRecord->status === Status::Draft; -} -``` - -## Combining the relation manager tabs with the form - -On the Edit or View page class, override the `hasCombinedRelationManagerTabsWithContent()` method: - -```php -public function hasCombinedRelationManagerTabsWithContent(): bool -{ - return true; -} -``` - -## Adding badges to relation manager tabs - -You can add a badge to a relation manager tab by setting the `$badge` property: - -```php -protected static ?string $badge = 'new'; -``` - -Alternatively, you can override the `getBadge()` method: - -```php -use Illuminate\Database\Eloquent\Model; - -public static function getBadge(Model $ownerRecord, string $pageClass): ?string -{ - return static::$badge; -} -``` - -Or, if you are using a [relation group](#grouping-relation-managers), you can use the `badge()` method: - -```php -use Filament\Resources\RelationManagers\RelationGroup; - -RelationGroup::make('Contacts', [ - // ... -])->badge('new'); -``` - -### Changing the color of relation manager tab badges - -If a badge value is defined, it will display using the primary color by default. To style the badge contextually, set the `$badgeColor` to either `danger`, `gray`, `info`, `primary`, `success` or `warning`: - -```php -protected static ?string $badgeColor = 'danger'; -``` - -Alternatively, you can override the `getBadgeColor()` method: - -```php -use Illuminate\Database\Eloquent\Model; - -public static function getBadgeColor(Model $ownerRecord, string $pageClass): ?string -{ - return 'danger'; -} -``` - -Or, if you are using a [relation group](#grouping-relation-managers), you can use the `badgeColor()` method: - -```php -use Filament\Resources\RelationManagers\RelationGroup; - -RelationGroup::make('Contacts', [ - // ... -])->badgeColor('danger'); -``` - -### Adding a tooltip to relation manager tab badges - -If a badge value is defined, you can add a tooltip to it by setting the `$badgeTooltip` property: - -```php -protected static ?string $badgeTooltip = 'There are new posts'; -``` - -Alternatively, you can override the `getBadgeTooltip()` method: - -```php -use Illuminate\Database\Eloquent\Model; - -public static function getBadgeTooltip(Model $ownerRecord, string $pageClass): ?string -{ - return 'There are new posts'; -} -``` - -Or, if you are using a [relation group](#grouping-relation-managers), you can use the `badgeTooltip()` method: - -```php -use Filament\Resources\RelationManagers\RelationGroup; - -RelationGroup::make('Contacts', [ - // ... -])->badgeTooltip('There are new posts'); -``` - -## Sharing a resource's form and table with a relation manager - -You may decide that you want a resource's form and table to be identical to a relation manager's, and subsequently want to reuse the code you previously wrote. This is easy, by calling the `form()` and `table()` methods of the resource from the relation manager: - -```php -use App\Filament\Resources\Blog\PostResource; -use Filament\Forms\Form; -use Filament\Tables\Table; - -public function form(Form $form): Form -{ - return PostResource::form($form); -} - -public function table(Table $table): Table -{ - return PostResource::table($table); -} -``` - -### Hiding a shared form component on the relation manager - -If you're sharing a form component from the resource with the relation manager, you may want to hide it on the relation manager. This is especially useful if you want to hide a `Select` field for the owner record in the relation manager, since Filament will handle this for you anyway. To do this, you may use the `hiddenOn()` method, passing the name of the relation manager: - -```php -use App\Filament\Resources\Blog\PostResource\RelationManagers\CommentsRelationManager; -use Filament\Forms\Components\Select; - -Select::make('post_id') - ->relationship('post', 'title') - ->hiddenOn(CommentsRelationManager::class) -``` - -### Hiding a shared table column on the relation manager - -If you're sharing a table column from the resource with the relation manager, you may want to hide it on the relation manager. This is especially useful if you want to hide a column for the owner record in the relation manager, since this is not appropriate when the owner record is already listed above the relation manager. To do this, you may use the `hiddenOn()` method, passing the name of the relation manager: - -```php -use App\Filament\Resources\Blog\PostResource\RelationManagers\CommentsRelationManager; -use Filament\Tables\Columns\TextColumn; - -TextColumn::make('post.title') - ->hiddenOn(CommentsRelationManager::class) -``` - -### Hiding a shared table filter on the relation manager - -If you're sharing a table filter from the resource with the relation manager, you may want to hide it on the relation manager. This is especially useful if you want to hide a filter for the owner record in the relation manager, since this is not appropriate when the table is already filtered by the owner record. To do this, you may use the `hiddenOn()` method, passing the name of the relation manager: - -```php -use App\Filament\Resources\Blog\PostResource\RelationManagers\CommentsRelationManager; -use Filament\Tables\Filters\SelectFilter; - -SelectFilter::make('post') - ->relationship('post', 'title') - ->hiddenOn(CommentsRelationManager::class) -``` - -### Overriding shared configuration on the relation manager - -Any configuration that you make inside the resource can be overwritten on the relation manager. For example, if you wanted to disable pagination on the relation manager's inherited table but not the resource itself: - -```php -use App\Filament\Resources\Blog\PostResource; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return PostResource::table($table) - ->paginated(false); -} -``` - -It is probably also useful to provide extra configuration on the relation manager if you wanted to add a header action to [create](#creating-related-records), [attach](#attaching-and-detaching-records), or [associate](#associating-and-dissociating-records) records in the relation manager: - -```php -use App\Filament\Resources\Blog\PostResource; -use Filament\Tables; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return PostResource::table($table) - ->headerActions([ - Tables\Actions\CreateAction::make(), - Tables\Actions\AttachAction::make(), - ]); -} -``` - -## Customizing the relation manager Eloquent query - -You can apply your own query constraints or [model scopes](https://laravel.com/docs/eloquent#query-scopes) that affect the entire relation manager. To do this, you can pass a function to the `modifyQueryUsing()` method of the table, inside which you can customize the query: - -```php -use Filament\Tables; -use Illuminate\Database\Eloquent\Builder; - -public function table(Table $table): Table -{ - return $table - ->modifyQueryUsing(fn (Builder $query) => $query->where('is_active', true)) - ->columns([ - // ... - ]); -} -``` - -## Customizing the relation manager title - -To set the title of the relation manager, you can use the `$title` property on the relation manager class: - -```php -protected static ?string $title = 'Posts'; -``` - -To set the title of the relation manager dynamically, you can override the `getTitle()` method on the relation manager class: - -```php -use Illuminate\Database\Eloquent\Model; - -public static function getTitle(Model $ownerRecord, string $pageClass): string -{ - return __('relation-managers.posts.title'); -} -``` - -The title will be reflected in the [heading of the table](../../tables/advanced#customizing-the-table-header), as well as the relation manager tab if there is more than one. If you want to customize the table heading independently, you can still use the `$table->heading()` method: - -```php -use Filament\Tables; - -public function table(Table $table): Table -{ - return $table - ->heading('Posts') - ->columns([ - // ... - ]); -} -``` - -## Customizing the relation manager record title - -The relation manager uses the concept of a "record title attribute" to determine which attribute of the related model should be used to identify it. When creating a relation manager, this attribute is passed as the third argument to the `make:filament-relation-manager` command: - -```bash -php artisan make:filament-relation-manager CategoryResource posts title -``` - -In this example, the `title` attribute of the `Post` model will be used to identify a post in the relation manager. - -This is mainly used by the action classes. For instance, when you [attach](#attaching-and-detaching-records) or [associate](#associating-and-dissociating-records) a record, the titles will be listed in the select field. When you [edit](#editing-related-records), [view](#viewing-related-records) or [delete](#deleting-related-records) a record, the title will be used in the header of the modal. - -In some cases, you may want to concatenate multiple attributes together to form a title. You can do this by replacing the `recordTitleAttribute()` configuration method with `recordTitle()`, passing a function that transforms a model into a title: - -```php -use App\Models\Post; -use Filament\Tables\Table; - -public function table(Table $table): Table -{ - return $table - ->recordTitle(fn (Post $record): string => "{$record->title} ({$record->id})") - ->columns([ - // ... - ]); -} -``` - -If you're using `recordTitle()`, and you have an [associate action](#associating-and-dissociating-records) or [attach action](#attaching-and-detaching-records), you will also want to specify search columns for those actions: - -```php -use Filament\Tables\Actions\AssociateAction; -use Filament\Tables\Actions\AttachAction; - -AssociateAction::make() - ->recordSelectSearchColumns(['title', 'id']); - -AttachAction::make() - ->recordSelectSearchColumns(['title', 'id']) -``` - -## Relation pages - -Using a `ManageRelatedRecords` page is an alternative to using a relation manager, if you want to keep the functionality of managing a relationship separate from editing or viewing the owner record. - -This feature is ideal if you are using [resource sub-navigation](getting-started#resource-sub-navigation), as you are easily able to switch between the View or Edit page and the relation page. - -To create a relation page, you should use the `make:filament-page` command: - -```bash -php artisan make:filament-page ManageCustomerAddresses --resource=CustomerResource --type=ManageRelatedRecords -``` - -When you run this command, you will be asked a series of questions to customize the page, for example, the name of the relationship and its title attribute. - -You must register this new page in your resource's `getPages()` method: - -```php -public static function getPages(): array -{ - return [ - 'index' => Pages\ListCustomers::route('/'), - 'create' => Pages\CreateCustomer::route('/create'), - 'view' => Pages\ViewCustomer::route('/{record}'), - 'edit' => Pages\EditCustomer::route('/{record}/edit'), - 'addresses' => Pages\ManageCustomerAddresses::route('/{record}/addresses'), - ]; -} -``` - -> When using a relation page, you do not need to generate a relation manager with `make:filament-relation-manager`, and you do not need to register it in the `getRelations()` method of the resource. - -Now, you can customize the page in exactly the same way as a relation manager, with the same `table()` and `form()`. - -### Adding relation pages to resource sub-navigation - -If you're using [resource sub-navigation](getting-started#resource-sub-navigation), you can register this page as normal in `getRecordSubNavigation()` of the resource: - -```php -use App\Filament\Resources\CustomerResource\Pages; -use Filament\Resources\Pages\Page; - -public static function getRecordSubNavigation(Page $page): array -{ - return $page->generateNavigationItems([ - // ... - Pages\ManageCustomerAddresses::class, - ]); -} -``` - -## Passing properties to relation managers - -When registering a relation manager in a resource, you can use the `make()` method to pass an array of [Livewire properties](https://livewire.laravel.com/docs/properties) to it: - -```php -use App\Filament\Resources\Blog\PostResource\RelationManagers\CommentsRelationManager; - -public static function getRelations(): array -{ - return [ - CommentsRelationManager::make([ - 'status' => 'approved', - ]), - ]; -} -``` - -This array of properties gets mapped to [public Livewire properties](https://livewire.laravel.com/docs/properties) on the relation manager class: - -```php -use Filament\Resources\RelationManagers\RelationManager; - -class CommentsRelationManager extends RelationManager -{ - public string $status; - - // ... -} -``` - -Now, you can access the `status` in the relation manager class using `$this->status`. - -## Disabling lazy loading - -By default, relation managers are lazy-loaded. This means that they will only be loaded when they are visible on the page. - -To disable this behavior, you may override the `$isLazy` property on the relation manager class: - -```php -protected static bool $isLazy = false; -``` diff --git a/vendor/filament/filament/docs/03-resources/08-global-search.md b/vendor/filament/filament/docs/03-resources/08-global-search.md deleted file mode 100644 index 7bd4bfb7..00000000 --- a/vendor/filament/filament/docs/03-resources/08-global-search.md +++ /dev/null @@ -1,157 +0,0 @@ ---- -title: Global search ---- - -## Overview - -Global search allows you to search across all of your resource records, from anywhere in the app. - -## Setting global search result titles - -To enable global search on your model, you must [set a title attribute](getting-started#record-titles) for your resource: - -```php -protected static ?string $recordTitleAttribute = 'title'; -``` - -This attribute is used to retrieve the search result title for that record. - -> Your resource needs to have an Edit or View page to allow the global search results to link to a URL, otherwise no results will be returned for this resource. - -You may customize the title further by overriding `getGlobalSearchResultTitle()` method. It may return a plain text string, or an instance of `Illuminate\Support\HtmlString` or `Illuminate\Contracts\Support\Htmlable`. This allows you to render HTML, or even Markdown, in the search result title: - -```php -use Illuminate\Contracts\Support\Htmlable; - -public static function getGlobalSearchResultTitle(Model $record): string | Htmlable -{ - return $record->name; -} -``` - -## Globally searching across multiple columns - -If you would like to search across multiple columns of your resource, you may override the `getGloballySearchableAttributes()` method. "Dot notation" allows you to search inside relationships: - -```php -public static function getGloballySearchableAttributes(): array -{ - return ['title', 'slug', 'author.name', 'category.name']; -} -``` - -## Adding extra details to global search results - -Search results can display "details" below their title, which gives the user more information about the record. To enable this feature, you must override the `getGlobalSearchResultDetails()` method: - -```php -public static function getGlobalSearchResultDetails(Model $record): array -{ - return [ - 'Author' => $record->author->name, - 'Category' => $record->category->name, - ]; -} -``` - -In this example, the category and author of the record will be displayed below its title in the search result. However, the `category` and `author` relationships will be lazy-loaded, which will result in poor results performance. To [eager-load](https://laravel.com/docs/eloquent-relationships#eager-loading) these relationships, we must override the `getGlobalSearchEloquentQuery()` method: - -```php -public static function getGlobalSearchEloquentQuery(): Builder -{ - return parent::getGlobalSearchEloquentQuery()->with(['author', 'category']); -} -``` - -## Customizing global search result URLs - -Global search results will link to the [Edit page](editing-records) of your resource, or the [View page](viewing-page) if the user does not have [edit permissions](editing-records#authorization). To customize this, you may override the `getGlobalSearchResultUrl()` method and return a route of your choice: - -```php -public static function getGlobalSearchResultUrl(Model $record): string -{ - return UserResource::getUrl('edit', ['record' => $record]); -} -``` - -## Adding actions to global search results - -Global search supports actions, which are buttons that render below each search result. They can open a URL or dispatch a Livewire event. - -Actions can be defined as follows: - -```php -use Filament\GlobalSearch\Actions\Action; - -public static function getGlobalSearchResultActions(Model $record): array -{ - return [ - Action::make('edit') - ->url(static::getUrl('edit', ['record' => $record])), - ]; -} -``` - -You can learn more about how to style action buttons [here](../../actions/trigger-button). - -### Opening URLs from global search actions - -You can open a URL, optionally in a new tab, when clicking on an action: - -```php -use Filament\GlobalSearch\Actions\Action; - -Action::make('view') - ->url(static::getUrl('view', ['record' => $record]), shouldOpenInNewTab: true) -``` - -### Dispatching Livewire events from global search actions - -Sometimes you want to execute additional code when a global search result action is clicked. This can be achieved by setting a Livewire event which should be dispatched on clicking the action. You may optionally pass an array of data, which will be available as parameters in the event listener on your Livewire component: - -```php -use Filament\GlobalSearch\Actions\Action; - -Action::make('quickView') - ->dispatch('quickView', [$record->id]) -``` - -## Limiting the number of global search results - -By default, global search will return up to 50 results per resource. You can customize this on the resource label by overriding the `$globalSearchResultsLimit` property: - -```php -protected static int $globalSearchResultsLimit = 20; -``` - -## Disabling global search - -As [explained above](#title), global search is automatically enabled once you set a title attribute for your resource. Sometimes you may want to specify the title attribute while not enabling global search. - -This can be achieved by disabling global search in the [configuration](configuration): - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->globalSearch(false); -} -``` - -## Registering global search keybindings - -The global search field can be opened using keyboard shortcuts. To configure these, pass the `globalSearchKeyBindings()` method to the [configuration](configuration): - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->globalSearchKeyBindings(['command+k', 'ctrl+k']); -} -``` diff --git a/vendor/filament/filament/docs/03-resources/09-widgets.md b/vendor/filament/filament/docs/03-resources/09-widgets.md deleted file mode 100644 index 03340c8f..00000000 --- a/vendor/filament/filament/docs/03-resources/09-widgets.md +++ /dev/null @@ -1,160 +0,0 @@ ---- -title: Widgets ---- -import LaracastsBanner from "@components/LaracastsBanner.astro" - -## Overview - - - -Filament allows you to display widgets inside pages, below the header and above the footer. - -You can use an existing [dashboard widget](../dashboard), or create one specifically for the resource. - -## Creating a resource widget - -To get started building a resource widget: - -```bash -php artisan make:filament-widget CustomerOverview --resource=CustomerResource -``` - -This command will create two files - a widget class in the `app/Filament/Resources/CustomerResource/Widgets` directory, and a view in the `resources/views/filament/resources/customer-resource/widgets` directory. - -You must register the new widget in your resource's `getWidgets()` method: - -```php -public static function getWidgets(): array -{ - return [ - CustomerResource\Widgets\CustomerOverview::class, - ]; -} -``` - -If you'd like to learn how to build and customize widgets, check out the [Dashboard](../dashboard) documentation section. - -## Displaying a widget on a resource page - -To display a widget on a resource page, use the `getHeaderWidgets()` or `getFooterWidgets()` methods for that page: - -```php -getPageTableQuery()` method: - -```php -use Filament\Widgets\StatsOverviewWidget\Stat; - -Stat::make('Total Products', $this->getPageTableQuery()->count()), -``` - -Alternatively, you can access a collection of the records on the current page using the `$this->getPageTableRecords()` method: - -```php -use Filament\Widgets\StatsOverviewWidget\Stat; - -Stat::make('Total Products', $this->getPageTableRecords()->count()), -``` - -## Passing properties to widgets on resource pages - -When registering a widget on a resource page, you can use the `make()` method to pass an array of [Livewire properties](https://livewire.laravel.com/docs/properties) to it: - -```php -protected function getHeaderWidgets(): array -{ - return [ - CustomerResource\Widgets\CustomerOverview::make([ - 'status' => 'active', - ]), - ]; -} -``` - -This array of properties gets mapped to [public Livewire properties](https://livewire.laravel.com/docs/properties) on the widget class: - -```php -use Filament\Widgets\Widget; - -class CustomerOverview extends Widget -{ - public string $status; - - // ... -} -``` - -Now, you can access the `status` in the widget class using `$this->status`. diff --git a/vendor/filament/filament/docs/03-resources/10-custom-pages.md b/vendor/filament/filament/docs/03-resources/10-custom-pages.md deleted file mode 100644 index 00b540df..00000000 --- a/vendor/filament/filament/docs/03-resources/10-custom-pages.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Custom pages ---- - -## Overview - -Filament allows you to create completely custom pages for resources. To create a new page, you can use: - -```bash -php artisan make:filament-page SortUsers --resource=UserResource --type=custom -``` - -This command will create two files - a page class in the `/Pages` directory of your resource directory, and a view in the `/pages` directory of the resource views directory. - -You must register custom pages to a route in the static `getPages()` method of your resource: - -```php -public static function getPages(): array -{ - return [ - // ... - 'sort' => Pages\SortUsers::route('/sort'), - ]; -} -``` - -> The order of pages registered in this method matters - any wildcard route segments that are defined before hard-coded ones will be matched by Laravel's router first. - -Any [parameters](https://laravel.com/docs/routing#route-parameters) defined in the route's path will be available to the page class, in an identical way to [Livewire](https://livewire.laravel.com/docs/components#accessing-route-parameters). - -## Using a resource record - -If you'd like to create a page that uses a record similar to the [Edit](editing-records) or [View](viewing-records) pages, you can use the `InteractsWithRecord` trait: - -```php -use Filament\Resources\Pages\Page; -use Filament\Resources\Pages\Concerns\InteractsWithRecord; - -class ManageUser extends Page -{ - use InteractsWithRecord; - - public function mount(int | string $record): void - { - $this->record = $this->resolveRecord($record); - } - - // ... -} -``` - -The `mount()` method should resolve the record from the URL and store it in `$this->record`. You can access the record at any time using `$this->getRecord()` in the class or view. - -To add the record to the route as a parameter, you must define `{record}` in `getPages()`: - -```php -public static function getPages(): array -{ - return [ - // ... - 'manage' => Pages\ManageUser::route('/{record}/manage'), - ]; -} -``` diff --git a/vendor/filament/filament/docs/03-resources/11-security.md b/vendor/filament/filament/docs/03-resources/11-security.md deleted file mode 100644 index 256efb21..00000000 --- a/vendor/filament/filament/docs/03-resources/11-security.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Security ---- - -## Protecting model attributes - -Filament will expose all model attributes to JavaScript, except if they are `$hidden` on your model. This is Livewire's behaviour for model binding. We preserve this functionality to facilitate the dynamic addition and removal of form fields after they are initially loaded, while preserving the data they may need. - -> While attributes may be visible in JavaScript, only those with a form field are actually editable by the user. This is not an issue with mass assignment. - -To remove certain attributes from JavaScript on the Edit and View pages, you may override [the `mutateFormDataBeforeFill()` method](editing-records#customizing-data-before-filling-the-form): - -```php -protected function mutateFormDataBeforeFill(array $data): array -{ - unset($data['is_admin']); - - return $data; -} -``` - -In this example, we remove the `is_admin` attribute from JavaScript, as it's not being used by the form. diff --git a/vendor/filament/filament/docs/04-pages.md b/vendor/filament/filament/docs/04-pages.md deleted file mode 100644 index 154ceaae..00000000 --- a/vendor/filament/filament/docs/04-pages.md +++ /dev/null @@ -1,352 +0,0 @@ ---- -title: Pages ---- - -## Overview - -Filament allows you to create completely custom pages for the app. - -## Creating a page - -To create a new page, you can use: - -```bash -php artisan make:filament-page Settings -``` - -This command will create two files - a page class in the `/Pages` directory of the Filament directory, and a view in the `/pages` directory of the Filament views directory. - -Page classes are all full-page [Livewire](https://livewire.laravel.com) components with a few extra utilities you can use with the panel. - -## Authorization - -You can prevent pages from appearing in the menu by overriding the `canAccess()` method in your Page class. This is useful if you want to control which users can see the page in the navigation, and also which users can visit the page directly: - -```php -public static function canAccess(): bool -{ - return auth()->user()->canManageSettings(); -} -``` - -## Adding actions to pages - -Actions are buttons that can perform tasks on the page, or visit a URL. You can read more about their capabilities [here](../actions). - -Since all pages are Livewire components, you can [add actions](../actions/adding-an-action-to-a-livewire-component#adding-the-action) anywhere. Pages already have the `InteractsWithActions` trait, `HasActions` interface, and `` Blade component all set up for you. - -### Header actions - -You can also easily add actions to the header of any page, including [resource pages](resources/getting-started). You don't need to worry about adding anything to the Blade, we handle that for you. Just return your actions from the `getHeaderActions()` method of the page class: - -```php -use Filament\Actions\Action; - -protected function getHeaderActions(): array -{ - return [ - Action::make('edit') - ->url(route('posts.edit', ['post' => $this->post])), - Action::make('delete') - ->requiresConfirmation() - ->action(fn () => $this->post->delete()), - ]; -} -``` - -### Refreshing form data - -If you're using actions on an [Edit](resources/editing-records) or [View](resources/viewing-records) resource page, you can refresh data within the main form using the `refreshFormData()` method: - -```php -use App\Models\Post; -use Filament\Actions\Action; - -Action::make('approve') - ->action(function (Post $record) { - $record->approve(); - - $this->refreshFormData([ - 'status', - ]); - }) -``` - -This method accepts an array of model attributes that you wish to refresh in the form. - -## Adding widgets to pages - -Filament allows you to display [widgets](dashboard) inside pages, below the header and above the footer. - -To add a widget to a page, use the `getHeaderWidgets()` or `getFooterWidgets()` methods: - -```php -use App\Filament\Widgets\StatsOverviewWidget; - -protected function getHeaderWidgets(): array -{ - return [ - StatsOverviewWidget::class - ]; -} -``` - -`getHeaderWidgets()` returns an array of widgets to display above the page content, whereas `getFooterWidgets()` are displayed below. - -If you'd like to learn how to build and customize widgets, check out the [Dashboard](dashboard) documentation section. - -### Customizing the widgets' grid - -You may change how many grid columns are used to display widgets. - -You may override the `getHeaderWidgetsColumns()` or `getFooterWidgetsColumns()` methods to return a number of grid columns to use: - -```php -public function getHeaderWidgetsColumns(): int | array -{ - return 3; -} -``` - -#### Responsive widgets grid - -You may wish to change the number of widget grid columns based on the responsive [breakpoint](https://tailwindcss.com/docs/responsive-design#overview) of the browser. You can do this using an array that contains the number of columns that should be used at each breakpoint: - -```php -public function getHeaderWidgetsColumns(): int | array -{ - return [ - 'md' => 4, - 'xl' => 5, - ]; -} -``` - -This pairs well with [responsive widget widths](dashboard#responsive-widget-widths). - -#### Passing data to widgets from the page - -You may pass data to widgets from the page using the `getWidgetsData()` method: - -```php -public function getWidgetData(): array -{ - return [ - 'stats' => [ - 'total' => 100, - ], - ]; -} -``` - -Now, you can define a corresponding public `$stats` array property on the widget class, which will be automatically filled: - -```php -public $stats = []; -``` - -### Passing properties to widgets on pages - -When registering a widget on a page, you can use the `make()` method to pass an array of [Livewire properties](https://livewire.laravel.com/docs/properties) to it: - -```php -use App\Filament\Widgets\StatsOverviewWidget; - -protected function getHeaderWidgets(): array -{ - return [ - StatsOverviewWidget::make([ - 'status' => 'active', - ]), - ]; -} -``` - -This array of properties gets mapped to [public Livewire properties](https://livewire.laravel.com/docs/properties) on the widget class: - -```php -use Filament\Widgets\Widget; - -class StatsOverviewWidget extends Widget -{ - public string $status; - - // ... -} -``` - -Now, you can access the `status` in the widget class using `$this->status`. - -## Customizing the page title - -By default, Filament will automatically generate a title for your page based on its name. You may override this by defining a `$title` property on your page class: - -```php -protected static ?string $title = 'Custom Page Title'; -``` - -Alternatively, you may return a string from the `getTitle()` method: - -```php -use Illuminate\Contracts\Support\Htmlable; - -public function getTitle(): string | Htmlable -{ - return __('Custom Page Title'); -} -``` - -## Customizing the page navigation label - -By default, Filament will use the page's [title](#customizing-the-page-title) as its [navigation](navigation) item label. You may override this by defining a `$navigationLabel` property on your page class: - -```php -protected static ?string $navigationLabel = 'Custom Navigation Label'; -``` - -Alternatively, you may return a string from the `getNavigationLabel()` method: - -```php -public static function getNavigationLabel(): string -{ - return __('Custom Navigation Label'); -} -``` - -## Customizing the page URL - -By default, Filament will automatically generate a URL (slug) for your page based on its name. You may override this by defining a `$slug` property on your page class: - -```php -protected static ?string $slug = 'custom-url-slug'; -``` - -## Customizing the page heading - -By default, Filament will use the page's [title](#customizing-the-page-title) as its heading. You may override this by defining a `$heading` property on your page class: - -```php -protected ?string $heading = 'Custom Page Heading'; -``` - -Alternatively, you may return a string from the `getHeading()` method: - -```php -public function getHeading(): string -{ - return __('Custom Page Heading'); -} -``` - -### Adding a page subheading - -You may also add a subheading to your page by defining a `$subheading` property on your page class: - -```php -protected ?string $subheading = 'Custom Page Subheading'; -``` - -Alternatively, you may return a string from the `getSubheading()` method: - -```php -public function getSubheading(): ?string -{ - return __('Custom Page Subheading'); -} -``` - -## Replacing the page header with a custom view - -You may replace the default [heading](#customizing-the-page-heading), [subheading](#adding-a-page-subheading) and [actions](#header-actions) with a custom header view for any page. You may return it from the `getHeader()` method: - -```php -use Illuminate\Contracts\View\View; - -public function getHeader(): ?View -{ - return view('filament.settings.custom-header'); -} -``` - -This example assumes you have a Blade view at `resources/views/filament/settings/custom-header.blade.php`. - -## Rendering a custom view in the footer of the page - -You may also add a footer to any page, below its content. You may return it from the `getFooter()` method: - -```php -use Illuminate\Contracts\View\View; - -public function getFooter(): ?View -{ - return view('filament.settings.custom-footer'); -} -``` - -This example assumes you have a Blade view at `resources/views/filament/settings/custom-footer.blade.php`. - -## Customizing the maximum content width - -By default, Filament will restrict the width of the content on the page, so it doesn't become too wide on large screens. To change this, you may override the `getMaxContentWidth()` method. Options correspond to [Tailwind's max-width scale](https://tailwindcss.com/docs/max-width). The options are `ExtraSmall`, `Small`, `Medium`, `Large`, `ExtraLarge`, `TwoExtraLarge`, `ThreeExtraLarge`, `FourExtraLarge`, `FiveExtraLarge`, `SixExtraLarge`, `SevenExtraLarge`, `Full`, `MinContent`, `MaxContent`, `FitContent`, `Prose`, `ScreenSmall`, `ScreenMedium`, `ScreenLarge`, `ScreenExtraLarge` and `ScreenTwoExtraLarge`. The default is `SevenExtraLarge`: - -```php -use Filament\Support\Enums\MaxWidth; - -public function getMaxContentWidth(): MaxWidth -{ - return MaxWidth::Full; -} -``` - -## Generating URLs to pages - -Filament provides `getUrl()` static method on page classes to generate URLs to them. Traditionally, you would need to construct the URL by hand or by using Laravel's `route()` helper, but these methods depend on knowledge of the page's slug or route naming conventions. - -The `getUrl()` method, without any arguments, will generate a URL: - -```php -use App\Filament\Pages\Settings; - -Settings::getUrl(); // /admin/settings -``` - -If your page uses URL / query parameters, you should use the argument: - -```php -use App\Filament\Pages\Settings; - -Settings::getUrl(['section' => 'notifications']); // /admin/settings?section=notifications -``` - -### Generating URLs to pages in other panels - -If you have multiple panels in your app, `getUrl()` will generate a URL within the current panel. You can also indicate which panel the page is associated with, by passing the panel ID to the `panel` argument: - -```php -use App\Filament\Pages\Settings; - -Settings::getUrl(panel: 'marketing'); -``` - -## Adding sub-navigation between pages - -You may want to add a common sub-navigation to multiple pages, to allow users to quickly navigate between them. You can do this by defining a [cluster](clusters). Clusters can also contain [resources](resources), and you can switch between multiple pages or resources within a cluster. - -## Adding extra attributes to the body tag of a page - -You may wish to add extra attributes to the `` tag of a page. To do this, you can set an array of attributes in `$extraBodyAttributes`: - -```php -protected array $extraBodyAttributes = []; -``` - -Or, you can return an array of attributes and their values from the `getExtraBodyAttributes()` method: - -```php -public function getExtraBodyAttributes(): array -{ - return [ - 'class' => 'settings-page', - ]; -} -``` diff --git a/vendor/filament/filament/docs/05-dashboard.md b/vendor/filament/filament/docs/05-dashboard.md deleted file mode 100644 index e3942cf9..00000000 --- a/vendor/filament/filament/docs/05-dashboard.md +++ /dev/null @@ -1,283 +0,0 @@ ---- -title: Dashboard ---- - -## Overview - -Filament allows you to build dynamic dashboards, comprised of "widgets", very easily. - -The following document will explain how to use these widgets to assemble a dashboard using the panel. - -## Available widgets - -Filament ships with these widgets: - -- [Stats overview](../widgets/stats-overview) widgets display any data, often numeric data, as stats in a row. -- [Chart](../widgets/charts) widgets display numeric data in a visual chart. -- [Table](#table-widgets) widgets which display a [table](../tables/getting-started) on your dashboard. - -You may also [create your own custom widgets](#custom-widgets) which can then have a consistent design with Filament's prebuilt widgets. - -## Sorting widgets - -Each widget class contains a `$sort` property that may be used to change its order on the page, relative to other widgets: - -```php -protected static ?int $sort = 2; -``` - -## Customizing widget width - -You may customize the width of a widget using the `$columnSpan` property. You may use a number between 1 and 12 to indicate how many columns the widget should span, or `full` to make it occupy the full width of the page: - -```php -protected int | string | array $columnSpan = 'full'; -``` - -### Responsive widget widths - -You may wish to change the widget width based on the responsive [breakpoint](https://tailwindcss.com/docs/responsive-design#overview) of the browser. You can do this using an array that contains the number of columns that the widget should occupy at each breakpoint: - -```php -protected int | string | array $columnSpan = [ - 'md' => 2, - 'xl' => 3, -]; -``` - -This is especially useful when using a [responsive widgets grid](#responsive-widgets-grid). - -## Customizing the widgets' grid - -You may change how many grid columns are used to display widgets. - -Firstly, you must [replace the original Dashboard page](#customizing-the-dashboard-page). - -Now, in your new `app/Filament/Pages/Dashboard.php` file, you may override the `getColumns()` method to return a number of grid columns to use: - -```php -public function getColumns(): int | string | array -{ - return 2; -} -``` - -### Responsive widgets grid - -You may wish to change the number of widget grid columns based on the responsive [breakpoint](https://tailwindcss.com/docs/responsive-design#overview) of the browser. You can do this using an array that contains the number of columns that should be used at each breakpoint: - -```php -public function getColumns(): int | string | array -{ - return [ - 'md' => 4, - 'xl' => 5, - ]; -} -``` - -This pairs well with [responsive widget widths](#responsive-widget-widths). - -## Conditionally hiding widgets - -You may override the static `canView()` method on widgets to conditionally hide them: - -```php -public static function canView(): bool -{ - return auth()->user()->isAdmin(); -} -``` - -## Table widgets - -You may easily add tables to your dashboard. Start by creating a widget with the command: - -```bash -php artisan make:filament-widget LatestOrders --table -``` - -You may now [customize the table](../tables/getting-started) by editing the widget file. - -## Custom widgets - -To get started building a `BlogPostsOverview` widget: - -```bash -php artisan make:filament-widget BlogPostsOverview -``` - -This command will create two files - a widget class in the `/Widgets` directory of the Filament directory, and a view in the `/widgets` directory of the Filament views directory. - -## Filtering widget data - -You may add a form to the dashboard that allows the user to filter the data displayed across all widgets. When the filters are updated, the widgets will be reloaded with the new data. - -Firstly, you must [replace the original Dashboard page](#customizing-the-dashboard-page). - -Now, in your new `app/Filament/Pages/Dashboard.php` file, you may add the `HasFiltersForm` trait, and add the `filtersForm()` method to return form components: - -```php -use Filament\Forms\Components\DatePicker; -use Filament\Forms\Components\Section; -use Filament\Forms\Form; -use Filament\Pages\Dashboard as BaseDashboard; -use Filament\Pages\Dashboard\Concerns\HasFiltersForm; - -class Dashboard extends BaseDashboard -{ - use HasFiltersForm; - - public function filtersForm(Form $form): Form - { - return $form - ->schema([ - Section::make() - ->schema([ - DatePicker::make('startDate'), - DatePicker::make('endDate'), - // ... - ]) - ->columns(3), - ]); - } -} -``` - -In widget classes that require data from the filters, you need to add the `InteractsWithPageFilters` trait, which will allow you to use the `$this->filters` property to access the raw data from the filters form: - -```php -use App\Models\BlogPost; -use Carbon\CarbonImmutable; -use Filament\Widgets\StatsOverviewWidget; -use Filament\Widgets\Concerns\InteractsWithPageFilters; -use Illuminate\Database\Eloquent\Builder; - -class BlogPostsOverview extends StatsOverviewWidget -{ - use InteractsWithPageFilters; - - public function getStats(): array - { - $startDate = $this->filters['startDate'] ?? null; - $endDate = $this->filters['endDate'] ?? null; - - return [ - StatsOverviewWidget\Stat::make( - label: 'Total posts', - value: BlogPost::query() - ->when($startDate, fn (Builder $query) => $query->whereDate('created_at', '>=', $startDate)) - ->when($endDate, fn (Builder $query) => $query->whereDate('created_at', '<=', $endDate)) - ->count(), - ), - // ... - ]; - } -} -``` - -The `$this->filters` array will always reflect the current form data. Please note that this data is not validated, as it is available live and not intended to be used for anything other than querying the database. You must ensure that the data is valid before using it. In this example, we check if the start date is set before using it in the query. - -### Filtering widget data using an action modal - -Alternatively, you can swap out the filters form for an action modal, that can be opened by clicking a button in the header of the page. There are many benefits to using this approach: - -- The filters form is not always visible, which allows you to use the full height of the page for widgets. -- The filters do not update the widgets until the user clicks the "Apply" button, which means that the widgets are not reloaded until the user is ready. This can improve performance if the widgets are expensive to load. -- Validation can be performed on the filters form, which means that the widgets can rely on the fact that the data is valid - the user cannot submit the form until it is. Canceling the modal will discard the user's changes. - -To use an action modal instead of a filters form, you can use the `HasFiltersAction` trait instead of `HasFiltersForm`. Then, register the `FilterAction` class as an action in `getHeaderActions()`: - -```php -use Filament\Forms\Components\DatePicker; -use Filament\Forms\Form; -use Filament\Pages\Dashboard as BaseDashboard; -use Filament\Pages\Dashboard\Actions\FilterAction; -use Filament\Pages\Dashboard\Concerns\HasFiltersAction; - -class Dashboard extends BaseDashboard -{ - use HasFiltersAction; - - protected function getHeaderActions(): array - { - return [ - FilterAction::make() - ->form([ - DatePicker::make('startDate'), - DatePicker::make('endDate'), - // ... - ]), - ]; - } -} -``` - -Handling data from the filter action is the same as handling data from the filters header form, except that the data is validated before being passed to the widget. The `InteractsWithPageFilters` trait still applies. - -## Disabling the default widgets - -By default, two widgets are displayed on the dashboard. These widgets can be disabled by updating the `widgets()` array of the [configuration](configuration): - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->widgets([]); -} -``` - -## Customizing the dashboard page - -If you want to customize the dashboard class, for example, to [change the number of widget columns](#customizing-widget-width), create a new file at `app/Filament/Pages/Dashboard.php`: - -```php -pages([]); -} -``` - -### Creating multiple dashboards - -If you want to create multiple dashboards, you can do so by repeating [the process described above](#customizing-the-dashboard-page). Creating new pages that extend the `Dashboard` class will allow you to create as many dashboards as you need. - -You will also need to define the URL path to the extra dashboard, otherwise it will be at `/`: - -```php -protected static string $routePath = 'finance'; -``` - -You may also customize the title of the dashboard by overriding the `$title` property: - -```php -protected static ?string $title = 'Finance dashboard'; -``` - -The primary dashboard shown to a user is the first one they have access to (controlled by [`canAccess()` method](pages#authorization)), according to the defined navigation sort order. - -The default sort order for dashboards is `-2`. You can control the sort order of custom dashboards with `$navigationSort`: - -```php -protected static ?int $navigationSort = 15; -``` diff --git a/vendor/filament/filament/docs/06-navigation.md b/vendor/filament/filament/docs/06-navigation.md deleted file mode 100644 index bf36b92c..00000000 --- a/vendor/filament/filament/docs/06-navigation.md +++ /dev/null @@ -1,494 +0,0 @@ ---- -title: Navigation ---- - -## Overview - -By default, Filament will register navigation items for each of your [resources](resources/getting-started), [custom pages](pages), and [clusters](clusters). These classes contain static properties and methods that you can override, to configure that navigation item. - -If you're looking to add a second layer of navigation to your app, you can use [clusters](clusters). These are useful for grouping resources and pages together. - -## Customizing a navigation item's label - -By default, the navigation label is generated from the resource or page's name. You may customize this using the `$navigationLabel` property: - -```php -protected static ?string $navigationLabel = 'Custom Navigation Label'; -``` - -Alternatively, you may override the `getNavigationLabel()` method: - -```php -public static function getNavigationLabel(): string -{ - return 'Custom Navigation Label'; -} -``` - -## Customizing a navigation item's icon - -To customize a navigation item's [icon](https://blade-ui-kit.com/blade-icons?set=1#search), you may override the `$navigationIcon` property on the [resource](resources/getting-started) or [page](pages) class: - -```php -protected static ?string $navigationIcon = 'heroicon-o-document-text'; -``` - -If you set `$navigationIcon = null` on all items within the same navigation group, those items will be joined with a vertical bar below the group label. - -### Switching navigation item icon when it is active - -You may assign a navigation [icon](https://blade-ui-kit.com/blade-icons?set=1#search) which will only be used for active items using the `$activeNavigationIcon` property: - -```php -protected static ?string $activeNavigationIcon = 'heroicon-o-document-text'; -``` - -## Sorting navigation items - -By default, navigation items are sorted alphabetically. You may customize this using the `$navigationSort` property: - -```php -protected static ?int $navigationSort = 3; -``` - -Now, navigation items with a lower sort value will appear before those with a higher sort value - the order is ascending. - -## Adding a badge to a navigation item - -To add a badge next to the navigation item, you can use the `getNavigationBadge()` method and return the content of the badge: - -```php -public static function getNavigationBadge(): ?string -{ - return static::getModel()::count(); -} -``` - -If a badge value is returned by `getNavigationBadge()`, it will display using the primary color by default. To style the badge contextually, return either `danger`, `gray`, `info`, `primary`, `success` or `warning` from the `getNavigationBadgeColor()` method: - -```php -public static function getNavigationBadgeColor(): ?string -{ - return static::getModel()::count() > 10 ? 'warning' : 'primary'; -} -``` - -A custom tooltip for the navigation badge can be set in `$navigationBadgeTooltip`: - -```php -protected static ?string $navigationBadgeTooltip = 'The number of users'; -``` - -Or it can be returned from `getNavigationBadgeTooltip()`: - -```php -public static function getNavigationBadgeTooltip(): ?string -{ - return 'The number of users'; -} -``` - -## Grouping navigation items - -You may group navigation items by specifying a `$navigationGroup` property on a [resource](resources/getting-started) and [custom page](pages): - -```php -protected static ?string $navigationGroup = 'Settings'; -``` - -All items in the same navigation group will be displayed together under the same group label, "Settings" in this case. Ungrouped items will remain at the start of the navigation. - -### Grouping navigation items under other items - -You may group navigation items as children of other items, by passing the label of the parent item as the `$navigationParentItem`: - -```php -protected static ?string $navigationParentItem = 'Notifications'; - -protected static ?string $navigationGroup = 'Settings'; -``` - -You may also use the `getNavigationParentItem()` method to set a dynamic parent item label: - -```php -public static function getNavigationParentItem(): ?string -{ - return __('filament/navigation.groups.settings.items.notifications'); -} -``` - -As seen above, if the parent item has a navigation group, that navigation group must also be defined, so the correct parent item can be identified. - -> If you're reaching for a third level of navigation like this, you should consider using [clusters](clusters) instead, which are a logical grouping of resources and custom pages, which can share their own separate navigation. - -### Customizing navigation groups - -You may customize navigation groups by calling `navigationGroups()` in the [configuration](configuration), and passing `NavigationGroup` objects in order: - -```php -use Filament\Navigation\NavigationGroup; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->navigationGroups([ - NavigationGroup::make() - ->label('Shop') - ->icon('heroicon-o-shopping-cart'), - NavigationGroup::make() - ->label('Blog') - ->icon('heroicon-o-pencil'), - NavigationGroup::make() - ->label(fn (): string => __('navigation.settings')) - ->icon('heroicon-o-cog-6-tooth') - ->collapsed(), - ]); -} -``` - -In this example, we pass in a custom `icon()` for the groups, and make one `collapsed()` by default. - -#### Ordering navigation groups - -By using `navigationGroups()`, you are defining a new order for the navigation groups. If you just want to reorder the groups and not define an entire `NavigationGroup` object, you may just pass the labels of the groups in the new order: - -```php -$panel - ->navigationGroups([ - 'Shop', - 'Blog', - 'Settings', - ]) -``` - -#### Making navigation groups not collapsible - -By default, navigation groups are collapsible. You may disable this behavior by calling `collapsible(false)` on the `NavigationGroup` object: - -```php -use Filament\Navigation\NavigationGroup; - -NavigationGroup::make() - ->label('Settings') - ->icon('heroicon-o-cog-6-tooth') - ->collapsible(false); -``` - -Or, you can do it globally for all groups in the [configuration](configuration): - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->collapsibleNavigationGroups(false); -} -``` - -#### Adding extra HTML attributes to navigation groups - -You can pass extra HTML attributes to the navigation group, which will be merged onto the outer DOM element. Pass an array of attributes to the `extraSidebarAttributes()` or `extraTopbarAttributes()` method, where the key is the attribute name and the value is the attribute value: - -```php -NavigationGroup::make() - ->extraSidebarAttributes(['class' => 'featured-sidebar-group']), - ->extraTopbarAttributes(['class' => 'featured-topbar-group']), -``` - -The `extraSidebarAttributes()` will be applied to navigation group elements contained in the sidebar, and the `extraTopbarAttributes()` will only be applied to topbar navigation group dropdowns when using [top navigation](#using-top-navigation). - -## Collapsible sidebar on desktop - -To make the sidebar collapsible on desktop as well as mobile, you can use the [configuration](configuration): - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->sidebarCollapsibleOnDesktop(); -} -``` - -By default, when you collapse the sidebar on desktop, the navigation icons still show. You can fully collapse the sidebar using the `sidebarFullyCollapsibleOnDesktop()` method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->sidebarFullyCollapsibleOnDesktop(); -} -``` - -## Registering custom navigation items - -To register new navigation items, you can use the [configuration](configuration): - -```php -use Filament\Navigation\NavigationItem; -use Filament\Pages\Dashboard; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->navigationItems([ - NavigationItem::make('Analytics') - ->url('https://filament.pirsch.io', shouldOpenInNewTab: true) - ->icon('heroicon-o-presentation-chart-line') - ->group('Reports') - ->sort(3), - NavigationItem::make('dashboard') - ->label(fn (): string => __('filament-panels::pages/dashboard.title')) - ->url(fn (): string => Dashboard::getUrl()) - ->isActiveWhen(fn () => request()->routeIs('filament.admin.pages.dashboard')), - // ... - ]); -} -``` - -## Conditionally hiding navigation items - -You can also conditionally hide a navigation item by using the `visible()` or `hidden()` methods, passing in a condition to check: - -```php -use Filament\Navigation\NavigationItem; - -NavigationItem::make('Analytics') - ->visible(fn(): bool => auth()->user()->can('view-analytics')) - // or - ->hidden(fn(): bool => ! auth()->user()->can('view-analytics')), -``` - -## Disabling resource or page navigation items - -To prevent resources or pages from showing up in navigation, you may use: - -```php -protected static bool $shouldRegisterNavigation = false; -``` - -Or, you may override the `shouldRegisterNavigation()` method: - -```php -public static function shouldRegisterNavigation(): bool -{ - return false; -} -``` - -Please note that these methods do not control direct access to the resource or page. They only control whether the resource or page will show up in the navigation. If you want to also control access, then you should use [resource authorization](resources/getting-started#authorization) or [page authorization](pages#authorization). - -## Using top navigation - -By default, Filament will use a sidebar navigation. You may use a top navigation instead by using the [configuration](configuration): - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->topNavigation(); -} -``` - -## Advanced navigation customization - -The `navigation()` method can be called from the [configuration](configuration). It allows you to build a custom navigation that overrides Filament's automatically generated items. This API is designed to give you complete control over the navigation. - -### Registering custom navigation items - -To register navigation items, call the `items()` method: - -```php -use App\Filament\Pages\Settings; -use App\Filament\Resources\UserResource; -use Filament\Navigation\NavigationBuilder; -use Filament\Navigation\NavigationItem; -use Filament\Pages\Dashboard; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->navigation(function (NavigationBuilder $builder): NavigationBuilder { - return $builder->items([ - NavigationItem::make('Dashboard') - ->icon('heroicon-o-home') - ->isActiveWhen(fn (): bool => request()->routeIs('filament.admin.pages.dashboard')) - ->url(fn (): string => Dashboard::getUrl()), - ...UserResource::getNavigationItems(), - ...Settings::getNavigationItems(), - ]); - }); -} -``` - -### Registering custom navigation groups - -If you want to register groups, you can call the `groups()` method: - -```php -use App\Filament\Pages\HomePageSettings; -use App\Filament\Resources\CategoryResource; -use App\Filament\Resources\PageResource; -use Filament\Navigation\NavigationBuilder; -use Filament\Navigation\NavigationGroup; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->navigation(function (NavigationBuilder $builder): NavigationBuilder { - return $builder->groups([ - NavigationGroup::make('Website') - ->items([ - ...PageResource::getNavigationItems(), - ...CategoryResource::getNavigationItems(), - ...HomePageSettings::getNavigationItems(), - ]), - ]); - }); -} -``` - -### Disabling navigation - -You may disable navigation entirely by passing `false` to the `navigation()` method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->navigation(false); -} -``` - -### Disabling the topbar - -You may disable topbar entirely by passing `false` to the `topbar()` method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->topbar(false); -} -``` - -## Customizing the user menu - -The user menu is featured in the top right corner of the admin layout. It's fully customizable. - -To register new items to the user menu, you can use the [configuration](configuration): - -```php -use App\Filament\Pages\Settings; -use Filament\Navigation\MenuItem; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->userMenuItems([ - MenuItem::make() - ->label('Settings') - ->url(fn (): string => Settings::getUrl()) - ->icon('heroicon-o-cog-6-tooth'), - // ... - ]); -} -``` - -### Customizing the profile link - -To customize the user profile link at the start of the user menu, register a new item with the `profile` array key: - -```php -use Filament\Navigation\MenuItem; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->userMenuItems([ - 'profile' => MenuItem::make()->label('Edit profile'), - // ... - ]); -} -``` - -For more information on creating a profile page, check out the [authentication features documentation](users#authentication-features). - -### Customizing the logout link - -To customize the user logout link at the end of the user menu, register a new item with the `logout` array key: - -```php -use Filament\Navigation\MenuItem; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->userMenuItems([ - 'logout' => MenuItem::make()->label('Log out'), - // ... - ]); -} -``` - -### Conditionally hiding user menu items - -You can also conditionally hide a user menu item by using the `visible()` or `hidden()` methods, passing in a condition to check. Passing a function will defer condition evaluation until the menu is actually being rendered: - -```php -use App\Models\Payment; -use Filament\Navigation\MenuItem; - -MenuItem::make() - ->label('Payments') - ->visible(fn (): bool => auth()->user()->can('viewAny', Payment::class)) - // or - ->hidden(fn (): bool => ! auth()->user()->can('viewAny', Payment::class)) -``` - -## Disabling breadcrumbs - -The default layout will show breadcrumbs to indicate the location of the current page within the hierarchy of the app. - -You may disable breadcrumbs in your [configuration](configuration): - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->breadcrumbs(false); -} -``` diff --git a/vendor/filament/filament/docs/07-notifications.md b/vendor/filament/filament/docs/07-notifications.md deleted file mode 100644 index 8b327941..00000000 --- a/vendor/filament/filament/docs/07-notifications.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Notifications ---- - -## Overview - -The Panel Builder uses the [Notifications](../notifications/sending-notifications) package to send messages to users. Please read the [documentation](../notifications/sending-notifications) to discover how to send notifications easily. - -If you'd like to receive [database notifications](../notifications/database-notifications), you can enable them in the [configuration](configuration): - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->databaseNotifications(); -} -``` - -You may also control database notification [polling](../notifications/database-notifications#polling-for-new-database-notifications): - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->databaseNotifications() - ->databaseNotificationsPolling('30s'); -} -``` diff --git a/vendor/filament/filament/docs/08-users.md b/vendor/filament/filament/docs/08-users.md deleted file mode 100644 index 77124f6b..00000000 --- a/vendor/filament/filament/docs/08-users.md +++ /dev/null @@ -1,331 +0,0 @@ ---- -title: Users ---- - -## Overview - -By default, all `App\Models\User`s can access Filament locally. To allow them to access Filament in production, you must take a few extra steps to ensure that only the correct users have access to the app. - -## Authorizing access to the panel - -To set up your `App\Models\User` to access Filament in non-local environments, you must implement the `FilamentUser` contract: - -```php -email, '@yourdomain.com') && $this->hasVerifiedEmail(); - } -} -``` - -The `canAccessPanel()` method returns `true` or `false` depending on whether the user is allowed to access the `$panel`. In this example, we check if the user's email ends with `@yourdomain.com` and if they have verified their email address. - -Since you have access to the current `$panel`, you can write conditional checks for separate panels. For example, only restricting access to the admin panel while allowing all users to access the other panels of your app: - -```php -getId() === 'admin') { - return str_ends_with($this->email, '@yourdomain.com') && $this->hasVerifiedEmail(); - } - - return true; - } -} -``` - -## Authorizing access to Resources - -See the [Authorization](resources/getting-started#authorization) section in the Resource documentation for controlling access to Resource pages and their data records. - -## Setting up user avatars - -Out of the box, Filament uses [ui-avatars.com](https://ui-avatars.com) to generate avatars based on a user's name. However, if your user model has an `avatar_url` attribute, that will be used instead. To customize how Filament gets a user's avatar URL, you can implement the `HasAvatar` contract: - -```php -avatar_url; - } -} -``` - -The `getFilamentAvatarUrl()` method is used to retrieve the avatar of the current user. If `null` is returned from this method, Filament will fall back to [ui-avatars.com](https://ui-avatars.com). - -### Using a different avatar provider - -You can easily swap out [ui-avatars.com](https://ui-avatars.com) for a different service, by creating a new avatar provider. - -In this example, we create a new file at `app/Filament/AvatarProviders/BoringAvatarsProvider.php` for [boringavatars.com](https://boringavatars.com). The `get()` method accepts a user model instance and returns an avatar URL for that user: - -```php -trim() - ->explode(' ') - ->map(fn (string $segment): string => filled($segment) ? mb_substr($segment, 0, 1) : '') - ->join(' '); - - return 'https://source.boringavatars.com/beam/120/' . urlencode($name); - } -} -``` - -Now, register this new avatar provider in the [configuration](configuration): - -```php -use App\Filament\AvatarProviders\BoringAvatarsProvider; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->defaultAvatarProvider(BoringAvatarsProvider::class); -} -``` - -## Configuring the user's name attribute - -By default, Filament will use the `name` attribute of the user to display their name in the app. To change this, you can implement the `HasName` contract: - -```php -first_name} {$this->last_name}"; - } -} -``` - -The `getFilamentName()` method is used to retrieve the name of the current user. - -## Authentication features - -You can easily enable authentication features for a panel in the configuration file: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->login() - ->registration() - ->passwordReset() - ->emailVerification() - ->profile(); -} -``` - -### Customizing the authentication features - -If you'd like to replace these pages with your own, you can pass in any Filament page class to these methods. - -Most people will be able to make their desired customizations by extending the base page class from the Filament codebase, overriding methods like `form()`, and then passing the new page class in to the configuration: - -```php -use App\Filament\Pages\Auth\EditProfile; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->profile(EditProfile::class); -} -``` - -In this example, we will customize the profile page. We need to create a new PHP class at `app/Filament/Pages/Auth/EditProfile.php`: - -```php -schema([ - TextInput::make('username') - ->required() - ->maxLength(255), - $this->getNameFormComponent(), - $this->getEmailFormComponent(), - $this->getPasswordFormComponent(), - $this->getPasswordConfirmationFormComponent(), - ]); - } -} -``` - -This class extends the base profile page class from the Filament codebase. Other page classes you could extend include: - -- `Filament\Pages\Auth\Login` -- `Filament\Pages\Auth\Register` -- `Filament\Pages\Auth\EmailVerification\EmailVerificationPrompt` -- `Filament\Pages\Auth\PasswordReset\RequestPasswordReset` -- `Filament\Pages\Auth\PasswordReset\ResetPassword` - -In the `form()` method of the example, we call methods like `getNameFormComponent()` to get the default form components for the page. You can customize these components as required. For all the available customization options, see the base `EditProfile` page class in the Filament codebase - it contains all the methods that you can override to make changes. - -#### Customizing an authentication field without needing to re-define the form - -If you'd like to customize a field in an authentication form without needing to define a new `form()` method, you could extend the specific field method and chain your customizations: - -```php -use Filament\Forms\Components\Component; - -protected function getPasswordFormComponent(): Component -{ - return parent::getPasswordFormComponent() - ->revealable(false); -} -``` - -### Customizing the authentication route slugs - -You can customize the URL slugs used for the authentication routes in the [configuration](configuration): - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->loginRouteSlug('login') - ->registrationRouteSlug('register') - ->passwordResetRoutePrefix('password-reset') - ->passwordResetRequestRouteSlug('request') - ->passwordResetRouteSlug('reset') - ->emailVerificationRoutePrefix('email-verification') - ->emailVerificationPromptRouteSlug('prompt') - ->emailVerificationRouteSlug('verify'); -} -``` - -### Setting the authentication guard - -To set the authentication guard that Filament uses, you can pass in the guard name to the `authGuard()` [configuration](configuration) method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->authGuard('web'); -} -``` - -### Setting the password broker - -To set the password broker that Filament uses, you can pass in the broker name to the `authPasswordBroker()` [configuration](configuration) method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->authPasswordBroker('users'); -} -``` - -### Disabling revealable password inputs - -By default, all password inputs in authentication forms are [`revealable()`](../forms/fields/text-input#revealable-password-inputs). This allows the user can see a plain text version of the password they're typing by clicking a button. To disable this feature, you can pass `false` to the `revealablePasswords()` [configuration](configuration) method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->revealablePasswords(false); -} -``` - -You could also disable this feature on a per-field basis by calling `->revealable(false)` on the field object when [extending the base page class](#customizing-an-authentication-field-without-needing-to-re-define-the-form). - -## Setting up guest access to a panel - -By default, Filament expects to work with authenticated users only. To allow guests to access a panel, you need to avoid using components which expect a signed-in user (such as profiles, avatars), and remove the built-in Authentication middleware: - -- Remove the default `Authenticate::class` from the `authMiddleware()` array in the panel configuration. -- Remove `->login()` and any other [authentication features](#authentication-features) from the panel. -- Remove the default `AccountWidget` from the `widgets()` array, because it reads the current user's data. - -### Authorizing guests in policies - -When present, Filament relies on [Laravel Model Policies](https://laravel.com/docs/authorization#generating-policies) for access control. To give read-access for [guest users in a model policy](https://laravel.com/docs/authorization#guest-users), create the Policy and update the `viewAny()` and `view()` methods, changing the `User $user` param to `?User $user` so that it's optional, and `return true;`. Alternatively, you can remove those methods from the policy entirely. diff --git a/vendor/filament/filament/docs/09-configuration.md b/vendor/filament/filament/docs/09-configuration.md deleted file mode 100644 index 9dfa5234..00000000 --- a/vendor/filament/filament/docs/09-configuration.md +++ /dev/null @@ -1,248 +0,0 @@ ---- -title: Configuration ---- - -## Overview - -By default, the configuration file is located at `app/Providers/Filament/AdminPanelProvider.php`. Keep reading to learn more about [panels](#introducing-panels) and how each has [its own configuration file](#creating-a-new-panel). - -## Introducing panels - -By default, when you install the package, there is one panel that has been set up for you - and it lives on `/admin`. All the [resources](resources/getting-started), [custom pages](pages), and [dashboard widgets](dashboard) you create get registered to this panel. - -However, you can create as many panels as you want, and each can have its own set of resources, pages and widgets. - -For example, you could build a panel where users can log in at `/app` and access their dashboard, and admins can log in at `/admin` and manage the app. The `/app` panel and the `/admin` panel have their own resources, since each group of users has different requirements. Filament allows you to do that by providing you with the ability to create multiple panels. - -### The default admin panel - -When you run `filament:install`, a new file is created in `app/Providers/Filament` - `AdminPanelProvider.php`. This file contains the configuration for the `/admin` panel. - -When this documentation refers to the "configuration", this is the file you need to edit. It allows you to completely customize the app. - -### Creating a new panel - -To create a new panel, you can use the `make:filament-panel` command, passing in the unique name of the new panel: - -```bash -php artisan make:filament-panel app -``` - -This command will create a new panel called "app". A configuration file will be created at `app/Providers/Filament/AppPanelProvider.php`. You can access this panel at `/app`, but you can [customize the path](#changing-the-path) if you don't want that. - -Since this configuration file is also a [Laravel service provider](https://laravel.com/docs/providers), it needs to be registered in `config/app.php`. Filament will attempt to do this for you, but if you get an error while trying to access your panel then this process has probably failed. You can manually register the service provider by adding it to the `providers` array. - -## Changing the path - -In a panel configuration file, you can change the path that the app is accessible at using the `path()` method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->path('app'); -} -``` - -If you want the app to be accessible without any prefix, you can set this to be an empty string: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->path(''); -} -``` - -Make sure your `routes/web.php` file doesn't already define the `''` or `'/'` route, as it will take precedence. - -## Render hooks - -[Render hooks](../support/render-hooks) allow you to render Blade content at various points in the framework views. You can [register global render hooks](../support/render-hooks#registering-render-hooks) in a service provider or middleware, but it also allows you to register render hooks that are specific to a panel. To do that, you can use the `renderHook()` method on the panel configuration object. Here's an example, integrating [`wire-elements/modal`](https://github.com/wire-elements/modal) with Filament: - -```php -use Filament\Panel; -use Illuminate\Support\Facades\Blade; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->renderHook( - 'panels::body.start', - fn (): string => Blade::render('@livewire(\'livewire-ui-modal\')'), - ); -} -``` - -A full list of available render hooks can be found [here](../support/render-hooks#available-render-hooks). - -## Setting a domain - -By default, Filament will respond to requests from all domains. If you'd like to scope it to a specific domain, you can use the `domain()` method, similar to [`Route::domain()` in Laravel](https://laravel.com/docs/routing#route-group-subdomain-routing): - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->domain('admin.example.com'); -} -``` - -## Customizing the maximum content width - -By default, Filament will restrict the width of the content on the page, so it doesn't become too wide on large screens. To change this, you may use the `maxContentWidth()` method. Options correspond to [Tailwind's max-width scale](https://tailwindcss.com/docs/max-width). The options are `ExtraSmall`, `Small`, `Medium`, `Large`, `ExtraLarge`, `TwoExtraLarge`, `ThreeExtraLarge`, `FourExtraLarge`, `FiveExtraLarge`, `SixExtraLarge`, `SevenExtraLarge`, `Full`, `MinContent`, `MaxContent`, `FitContent`, `Prose`, `ScreenSmall`, `ScreenMedium`, `ScreenLarge`, `ScreenExtraLarge` and `ScreenTwoExtraLarge`. The default is `SevenExtraLarge`: - -```php -use Filament\Panel; -use Filament\Support\Enums\MaxWidth; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->maxContentWidth(MaxWidth::Full); -} -``` - -## Lifecycle hooks - -Hooks may be used to execute code during a panel's lifecycle. `bootUsing()` is a hook that gets run on every request that takes place within that panel. If you have multiple panels, only the current panel's `bootUsing()` will be run. The function gets run from middleware, after all service providers have been booted: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->bootUsing(function (Panel $panel) { - // ... - }); -} -``` - -## SPA mode - -SPA mode utilizes [Livewire's `wire:navigate` feature](https://livewire.laravel.com/docs/navigate) to make your server-rendered panel feel like a single-page-application, with less delay between page loads and a loading bar for longer requests. To enable SPA mode on a panel, you can use the `spa()` method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->spa(); -} -``` - -## Unsaved changes alerts - -You may alert users if they attempt to navigate away from a page without saving their changes. This is applied on [Create](resources/creating-records) and [Edit](resources/editing-records) pages of a resource, as well as any open action modals. To enable this feature, you can use the `unsavedChangesAlerts()` method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->unsavedChangesAlerts(); -} -``` - -> Please note: this feature is not compatible with [SPA mode](#spa-mode). - -## Registering assets for a panel - -You can register [assets](../support/assets) that will only be loaded on pages within a specific panel, and not in the rest of the app. To do that, pass an array of assets to the `assets()` method: - -```php -use Filament\Panel; -use Filament\Support\Assets\Css; -use Filament\Support\Assets\Js; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->assets([ - Css::make('custom-stylesheet', resource_path('css/custom.css')), - Js::make('custom-script', resource_path('js/custom.js')), - ]); -} -``` - -## Applying middleware - -You can apply extra middleware to all routes by passing an array of middleware classes to the `middleware()` method in the configuration: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->middleware([ - // ... - ]); -} -``` - -By default, middleware will be run when the page is first loaded, but not on subsequent Livewire AJAX requests. If you want to run middleware on every request, you can make it persistent by passing `true` as the second argument to the `middleware()` method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->middleware([ - // ... - ], isPersistent: true); -} -``` - -### Applying middleware to authenticated routes - -You can apply middleware to all authenticated routes by passing an array of middleware classes to the `authMiddleware()` method in the configuration: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->authMiddleware([ - // ... - ]); -} -``` - -By default, middleware will be run when the page is first loaded, but not on subsequent Livewire AJAX requests. If you want to run middleware on every request, you can make it persistent by passing `true` as the second argument to the `authMiddleware()` method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->authMiddleware([ - // ... - ], isPersistent: true); -} -``` diff --git a/vendor/filament/filament/docs/10-clusters.md b/vendor/filament/filament/docs/10-clusters.md deleted file mode 100644 index cbbb5573..00000000 --- a/vendor/filament/filament/docs/10-clusters.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Clusters ---- - -## Overview - -Clusters are a hierarchical structure in panels that allow you to group [resources](resources) and [custom pages](pages) together. They are useful for organizing your panel into logical sections, and can help reduce the size of your panel's sidebar. - -When using a cluster, a few things happen: - -- A new navigation item is added to the navigation, which is a link to the first resource or page in the cluster. -- The individual navigation items for the resources or pages are no longer visible in the main navigation. -- A new sub-navigation UI is added to each resource or page in the cluster, which contains the navigation items for the resources or pages in the cluster. -- Resources and pages in the cluster get a new URL, prefixed with the name of the cluster. If you are generating URLs to [resources](resources/getting-started#generating-urls-to-resource-pages) and [pages](pages#generating-urls-to-pages) correctly, then this change should be handled for you automatically. -- The cluster's name is in the breadcrumbs of all resources and pages in the cluster. When clicking it, you are taken to the first resource or page in the cluster. - -## Creating a cluster - -Before creating your first cluster, you must tell the panel where cluster classes should be located. Alongside methods like `discoverResources()` and `discoverPages()` in the [configuration](configuration), you can use `discoverClusters()`: - -```php -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources') - ->discoverPages(in: app_path('Filament/Pages'), for: 'App\\Filament\\Pages') - ->discoverClusters(in: app_path('Filament/Clusters'), for: 'App\\Filament\\Clusters'); -} -``` - -Now, you can create a cluster with the `php artisan make:filament-cluster` command: - -```bash -php artisan make:filament-cluster Settings -``` - -This will create a new cluster class in the `app/Filament/Clusters` directory: - -```php -check()) { - $query->where('team_id', auth()->user()->team_id); - // or with a `team` relationship defined: - $query->whereBelongsTo(auth()->user()->team); - } - }); - } -} -``` - -To automatically set the `team_id` on the record when it's created, you can create an [observer](https://laravel.com/docs/eloquent#observers): - -```php -class PostObserver -{ - public function creating(Post $post): void - { - if (auth()->check()) { - $post->team_id = auth()->user()->team_id; - // or with a `team` relationship defined: - $post->team()->associate(auth()->user()->team); - } - } -} -``` - -## Setting up tenancy - -To set up tenancy, you'll need to specify the "tenant" (like team or organization) model in the [configuration](configuration): - -```php -use App\Models\Team; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->tenant(Team::class); -} -``` - -You'll also need to tell Filament which tenants a user belongs to. You can do this by implementing the `HasTenants` interface on the `App\Models\User` model: - -```php -teams; - } - - public function teams(): BelongsToMany - { - return $this->belongsToMany(Team::class); - } - - public function canAccessTenant(Model $tenant): bool - { - return $this->teams->contains($tenant); - } -} -``` - -In this example, users belong to many teams, so there is a `teams()` relationship. The `getTenants()` method returns the teams that the user belongs to. Filament uses this to list the tenants that the user has access to. - -For security, you also need to implement the `canAccessTenant()` method of the `HasTenants` interface to prevent users from accessing the data of other tenants by guessing their tenant ID and putting it into the URL. - -You'll also want users to be able to [register new teams](#adding-a-tenant-registration-page). - -## Adding a tenant registration page - -A registration page will allow users to create a new tenant. - -When visiting your app after logging in, users will be redirected to this page if they don't already have a tenant. - -To set up a registration page, you'll need to create a new page class that extends `Filament\Pages\Tenancy\RegisterTenant`. This is a full-page Livewire component. You can put this anywhere you want, such as `app/Filament/Pages/Tenancy/RegisterTeam.php`: - -```php -namespace App\Filament\Pages\Tenancy; - -use Filament\Forms\Components\TextInput; -use Filament\Forms\Form; -use Filament\Pages\Tenancy\RegisterTenant; -use Illuminate\Database\Eloquent\Model; - -class RegisterTeam extends RegisterTenant -{ - public static function getLabel(): string - { - return 'Register team'; - } - - public function form(Form $form): Form - { - return $form - ->schema([ - TextInput::make('name'), - // ... - ]); - } - - protected function handleRegistration(array $data): Team - { - $team = Team::create($data); - - $team->members()->attach(auth()->user()); - - return $team; - } -} -``` - -You may add any [form components](../forms/getting-started) to the `form()` method, and create the team inside the `handleRegistration()` method. - -Now, we need to tell Filament to use this page. We can do this in the [configuration](configuration): - -```php -use App\Filament\Pages\Tenancy\RegisterTeam; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->tenantRegistration(RegisterTeam::class); -} -``` - -### Customizing the tenant registration page - -You can override any method you want on the base registration page class to make it act as you want. Even the `$view` property can be overridden to use a custom view of your choice. - -## Adding a tenant profile page - -A profile page will allow users to edit information about the tenant. - -To set up a profile page, you'll need to create a new page class that extends `Filament\Pages\Tenancy\EditTenantProfile`. This is a full-page Livewire component. You can put this anywhere you want, such as `app/Filament/Pages/Tenancy/EditTeamProfile.php`: - -```php -namespace App\Filament\Pages\Tenancy; - -use Filament\Forms\Components\TextInput; -use Filament\Forms\Form; -use Filament\Pages\Tenancy\EditTenantProfile; -use Illuminate\Database\Eloquent\Model; - -class EditTeamProfile extends EditTenantProfile -{ - public static function getLabel(): string - { - return 'Team profile'; - } - - public function form(Form $form): Form - { - return $form - ->schema([ - TextInput::make('name'), - // ... - ]); - } -} -``` - -You may add any [form components](../forms/getting-started) to the `form()` method. They will get saved directly to the tenant model. - -Now, we need to tell Filament to use this page. We can do this in the [configuration](configuration): - -```php -use App\Filament\Pages\Tenancy\EditTeamProfile; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->tenantProfile(EditTeamProfile::class); -} -``` - -### Customizing the tenant profile page - -You can override any method you want on the base profile page class to make it act as you want. Even the `$view` property can be overridden to use a custom view of your choice. - -## Accessing the current tenant - -Anywhere in the app, you can access the tenant model for the current request using `Filament::getTenant()`: - -```php -use Filament\Facades\Filament; - -$tenant = Filament::getTenant(); -``` - -## Billing - -### Using Laravel Spark - -Filament provides a billing integration with [Laravel Spark](https://spark.laravel.com). Your users can start subscriptions and manage their billing information. - -To install the integration, first [install Spark](https://spark.laravel.com/docs/installation.html) and configure it for your tenant model. - -Now, you can install the Filament billing provider for Spark using Composer: - -```bash -composer require filament/spark-billing-provider -``` - -In the [configuration](configuration), set Spark as the `tenantBillingProvider()`: - -```php -use Filament\Billing\Providers\SparkBillingProvider; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->tenantBillingProvider(new SparkBillingProvider()); -} -``` - -Now, you're all good to go! Users can manage their billing by clicking a link in the tenant menu. - -### Requiring a subscription - -To require a subscription to use any part of the app, you can use the `requiresTenantSubscription()` configuration method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->requiresTenantSubscription(); -} -``` - -Now, users will be redirected to the billing page if they don't have an active subscription. - -#### Requiring a subscription for specific resources and pages - -Sometimes, you may wish to only require a subscription for certain [resources](resources/getting-started) and [custom pages](pages) in your app. You can do this by returning `true` from the `isTenantSubscriptionRequired()` method on the resource or page class: - -```php -public static function isTenantSubscriptionRequired(Panel $panel): bool -{ - return true; -} -``` - -If you're using the `requiresTenantSubscription()` configuration method, then you can return `false` from this method to allow access to the resource or page as an exception. - -### Writing a custom billing integration - -Billing integrations are quite simple to write. You just need a class that implements the `Filament\Billing\Contracts\Provider` interface. This interface has two methods. - -`getRouteAction()` is used to get the route action that should be run when the user visits the billing page. This could be a callback function, or the name of a controller, or a Livewire component - anything that works when using `Route::get()` in Laravel normally. For example, you could put in a simple redirect to your own billing page using a callback function. - -`getSubscribedMiddleware()` returns the name of a middleware that should be used to check if the tenant has an active subscription. This middleware should redirect the user to the billing page if they don't have an active subscription. - -Here's an example billing provider that uses a callback function for the route action and a middleware for the subscribed middleware: - -```php -use App\Http\Middleware\RedirectIfUserNotSubscribed; -use Filament\Billing\Contracts\Provider; -use Illuminate\Http\RedirectResponse; - -class ExampleBillingProvider implements Provider -{ - public function getRouteAction(): string - { - return function (): RedirectResponse { - return redirect('https://billing.example.com'); - }; - } - - public function getSubscribedMiddleware(): string - { - return RedirectIfUserNotSubscribed::class; - } -} -``` - -### Customizing the billing route slug - -You can customize the URL slug used for the billing route using the `tenantBillingRouteSlug()` method in the [configuration](configuration): - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->tenantBillingRouteSlug('billing'); -} -``` - -## Customizing the tenant menu - -The tenant-switching menu is featured in the admin layout. It's fully customizable. - -To register new items to the tenant menu, you can use the [configuration](configuration): - -```php -use App\Filament\Pages\Settings; -use Filament\Navigation\MenuItem; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->tenantMenuItems([ - MenuItem::make() - ->label('Settings') - ->url(fn (): string => Settings::getUrl()) - ->icon('heroicon-m-cog-8-tooth'), - // ... - ]); -} -``` - -### Customizing the registration link - -To customize the registration link on the tenant menu, register a new item with the `register` array key: - -```php -use Filament\Navigation\MenuItem; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->tenantMenuItems([ - 'register' => MenuItem::make()->label('Register new team'), - // ... - ]); -} -``` - -### Customizing the profile link - -To customize the profile link on the tenant menu, register a new item with the `profile` array key: - -```php -use Filament\Navigation\MenuItem; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->tenantMenuItems([ - 'profile' => MenuItem::make()->label('Edit team profile'), - // ... - ]); -} -``` - -### Customizing the billing link - -To customize the billing link on the tenant menu, register a new item with the `billing` array key: - -```php -use Filament\Navigation\MenuItem; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->tenantMenuItems([ - 'billing' => MenuItem::make()->label('Manage subscription'), - // ... - ]); -} -``` - -### Conditionally hiding tenant menu items - -You can also conditionally hide a tenant menu item by using the `visible()` or `hidden()` methods, passing in a condition to check. Passing a function will defer condition evaluation until the menu is actually being rendered: - -```php -use Filament\Navigation\MenuItem; - -MenuItem::make() - ->label('Settings') - ->visible(fn (): bool => auth()->user()->can('manage-team')) - // or - ->hidden(fn (): bool => ! auth()->user()->can('manage-team')) -``` - -### Hiding the tenant menu - -You can hide the tenant menu by using the `tenantMenu(false)` - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->tenantMenu(false); -} -``` - -However, this is a sign that Filament's tenancy feature is not suitable for your project. If each user only belongs to one tenant, you should stick to [simple one-to-many tenancy](#simple-one-to-many-tenancy). - -## Setting up avatars - -Out of the box, Filament uses [ui-avatars.com](https://ui-avatars.com) to generate avatars based on a user's name. However, if you user model has an `avatar_url` attribute, that will be used instead. To customize how Filament gets a user's avatar URL, you can implement the `HasAvatar` contract: - -```php -avatar_url; - } -} -``` - -The `getFilamentAvatarUrl()` method is used to retrieve the avatar of the current user. If `null` is returned from this method, Filament will fall back to [ui-avatars.com](https://ui-avatars.com). - -You can easily swap out [ui-avatars.com](https://ui-avatars.com) for a different service, by creating a new avatar provider. [You can learn how to do this here.](users#using-a-different-avatar-provider) - -## Configuring the tenant relationships - -When creating and listing records associated with a Tenant, Filament needs access to two Eloquent relationships for each resource - an "ownership" relationship that is defined on the resource model class, and a relationship on the tenant model class. By default, Filament will attempt to guess the names of these relationships based on standard Laravel conventions. For example, if the tenant model is `App\Models\Team`, it will look for a `team()` relationship on the resource model class. And if the resource model class is `App\Models\Post`, it will look for a `posts()` relationship on the tenant model class. - -### Customizing the ownership relationship name - -You can customize the name of the ownership relationship used across all resources at once, using the `ownershipRelationship` argument on the `tenant()` configuration method. In this example, resource model classes have an `owner` relationship defined: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->tenant(Team::class, ownershipRelationship: 'owner'); -} -``` - -Alternatively, you can set the `$tenantOwnershipRelationshipName` static property on the resource class, which can then be used to customize the ownership relationship name that is just used for that resource. In this example, the `Post` model class has an `owner` relationship defined: - -```php -use Filament\Resources\Resource; - -class PostResource extends Resource -{ - protected static ?string $tenantOwnershipRelationshipName = 'owner'; - - // ... -} -``` - -### Customizing the resource relationship name - -You can set the `$tenantRelationshipName` static property on the resource class, which can then be used to customize the relationship name that is used to fetch that resource. In this example, the tenant model class has an `blogPosts` relationship defined: - -```php -use Filament\Resources\Resource; - -class PostResource extends Resource -{ - protected static ?string $tenantRelationshipName = 'blogPosts'; - - // ... -} -``` - -## Configuring the slug attribute - -When using a tenant like a team, you might want to add a slug field to the URL rather than the team's ID. You can do that with the `slugAttribute` argument on the `tenant()` configuration method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->tenant(Team::class, slugAttribute: 'slug'); -} -``` - -## Configuring the name attribute - -By default, Filament will use the `name` attribute of the tenant to display its name in the app. To change this, you can implement the `HasName` contract: - -```php -name} {$this->subscription_plan}"; - } -} -``` - -The `getFilamentName()` method is used to retrieve the name of the current user. - -## Setting the current tenant label - -Inside the tenant switcher, you may wish to add a small label like "Active team" above the name of the current team. You can do this by implementing the `HasCurrentTenantLabel` method on the tenant model: - -```php -latestTeam; - } - - public function latestTeam(): BelongsTo - { - return $this->belongsTo(Team::class, 'latest_team_id'); - } -} -``` - -## Applying middleware to tenant-aware routes - -You can apply extra middleware to all tenant-aware routes by passing an array of middleware classes to the `tenantMiddleware()` method in the [panel configuration file](configuration): - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->tenantMiddleware([ - // ... - ]); -} -``` - -By default, middleware will be run when the page is first loaded, but not on subsequent Livewire AJAX requests. If you want to run middleware on every request, you can make it persistent by passing `true` as the second argument to the `tenantMiddleware()` method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->tenantMiddleware([ - // ... - ], isPersistent: true); -} -``` - -## Adding a tenant route prefix - -By default the URL structure will put the tenant ID or slug immediately after the panel path. If you wish to prefix it with another URL segment, use the `tenantRoutePrefix()` method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->path('admin') - ->tenant(Team::class) - ->tenantRoutePrefix('team'); -} -``` - -Before, the URL structure was `/admin/1` for tenant 1. Now, it is `/admin/team/1`. - -## Disabling tenancy for a resource - -By default, all resources within a panel with tenancy will be scoped to the current tenant. If you have resources that are shared between tenants, you can disable tenancy for them by setting the `$isScopedToTenant` static property to `false` on the resource class: - -```php -protected static bool $isScopedToTenant = false; -``` - -### Disabling tenancy for all resources - -If you wish to opt-in to tenancy for each resource instead of opting-out, you can call `Resource::scopeToTenant(false)` inside a service provider's `boot()` method or a middleware: - -```php -use Filament\Resources\Resource; - -Resource::scopeToTenant(false); -``` - -Now, you can opt-in to tenancy for each resource by setting the `$isScopedToTenant` static property to `true` on a resource class: - -```php -protected static bool $isScopedToTenant = true; -``` - -## Tenancy security - -It's important to understand the security implications of multi-tenancy and how to properly implement it. If implemented partially or incorrectly, data belonging to one tenant may be exposed to another tenant. Filament provides a set of tools to help you implement multi-tenancy in your application, but it is up to you to understand how to use them. Filament does not provide any guarantees about the security of your application. It is your responsibility to ensure that your application is secure. - -Below is a list of features that Filament provides to help you implement multi-tenancy in your application: - -- Automatic scoping of resources to the current tenant. The base Eloquent query that is used to fetch records for a resource is automatically scoped to the current tenant. This query is used to render the resource's list table, and is also used to resolve records from the current URL when editing or viewing a record. This means that if a user attempts to view a record that does not belong to the current tenant, they will receive a 404 error. - -- Automatic association of new resource records to the current tenant. - -And here are the things that Filament does not currently provide: - -- Scoping of relation manager records to the current tenant. When using the relation manager, in the vast majority of cases, the query will not need to be scoped to the current tenant, since it is already scoped to the parent record, which is itself scoped to the current tenant. For example, if a `Team` tenant model had an `Author` resource, and that resource had a `posts` relationship and relation manager set up, and posts only belong to one author, there is no need to scope the query. This is because the user will only be able to see authors that belong to the current team anyway, and thus will only be able to see posts that belong to those authors. You can [scope the Eloquent query](resources/relation-managers#customizing-the-relation-manager-eloquent-query) if you wish. - -- Form component and filter scoping. When using the `Select`, `CheckboxList` or `Repeater` form components, the `SelectFilter`, or any other similar Filament component which is able to automatically fetch "options" or other data from the database (usually using a `relationship()` method), this data is not scoped. The main reason for this is that these features often don't belong to the Filament Panel Builder package, and have no knowledge that they are being used within that context, and that a tenant even exists. And even if they did have access to the tenant, there is nowhere for the tenant relationship configuration to live. To scope these components, you need to pass in a query function that scopes the query to the current tenant. For example, if you were using the `Select` form component to select an `author` from a relationship, you could do this: - -```php -use Filament\Facades\Filament; -use Filament\Forms\Components\Select; -use Illuminate\Database\Eloquent\Builder; - -Select::make('author_id') - ->relationship( - name: 'author', - titleAttribute: 'name', - modifyQueryUsing: fn (Builder $query) => $query->whereBelongsTo(Filament::getTenant())), - ); -``` - -### Using tenant-aware middleware to apply global scopes - -It might be useful to apply global scopes to your Eloquent models while they are being used in your panel. This would allow you to forget about scoping your queries to the current tenant, and instead have the scoping applied automatically. To do this, you can create a new middleware class like `ApplyTenantScopes`: - -```bash -php artisan make:middleware ApplyTenantScopes -``` - -Inside the `handle()` method, you can apply any global scopes that you wish: - -```php -use App\Models\Author; -use Closure; -use Filament\Facades\Filament; -use Illuminate\Database\Eloquent\Builder; -use Illuminate\Http\Request; - -class ApplyTenantScopes -{ - public function handle(Request $request, Closure $next) - { - Author::addGlobalScope( - fn (Builder $query) => $query->whereBelongsTo(Filament::getTenant()), - ); - - return $next($request); - } -} -``` - -You can now [register this middleware](#applying-middleware-to-tenant-aware-routes) for all tenant-aware routes, and ensure that it is used across all Livewire AJAX requests by making it persistent: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->tenantMiddleware([ - ApplyTenantScopes::class, - ], isPersistent: true); -} -``` diff --git a/vendor/filament/filament/docs/12-themes.md b/vendor/filament/filament/docs/12-themes.md deleted file mode 100644 index be847919..00000000 --- a/vendor/filament/filament/docs/12-themes.md +++ /dev/null @@ -1,256 +0,0 @@ ---- -title: Themes ---- - -## Changing the colors - -In the [configuration](configuration), you can easily change the colors that are used. Filament ships with 6 predefined colors that are used everywhere within the framework. They are customizable as follows: - -```php -use Filament\Panel; -use Filament\Support\Colors\Color; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->colors([ - 'danger' => Color::Rose, - 'gray' => Color::Gray, - 'info' => Color::Blue, - 'primary' => Color::Indigo, - 'success' => Color::Emerald, - 'warning' => Color::Orange, - ]); -} -``` - -The `Filament\Support\Colors\Color` class contains color options for all [Tailwind CSS color palettes](https://tailwindcss.com/docs/customizing-colors). - -You can also pass in a function to `register()` which will only get called when the app is getting rendered. This is useful if you are calling `register()` from a service provider, and want to access objects like the currently authenticated user, which are initialized later in middleware. - -Alternatively, you may pass your own palette in as an array of RGB values: - -```php -$panel - ->colors([ - 'primary' => [ - 50 => '238, 242, 255', - 100 => '224, 231, 255', - 200 => '199, 210, 254', - 300 => '165, 180, 252', - 400 => '129, 140, 248', - 500 => '99, 102, 241', - 600 => '79, 70, 229', - 700 => '67, 56, 202', - 800 => '55, 48, 163', - 900 => '49, 46, 129', - 950 => '30, 27, 75', - ], - ]) -``` - -### Generating a color palette - -If you want us to attempt to generate a palette for you based on a singular hex or RGB value, you can pass that in: - -```php -$panel - ->colors([ - 'primary' => '#6366f1', - ]) - -$panel - ->colors([ - 'primary' => 'rgb(99, 102, 241)', - ]) -``` - -## Changing the font - -By default, we use the [Inter](https://fonts.google.com/specimen/Inter) font. You can change this using the `font()` method in the [configuration](configuration) file: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->font('Poppins'); -} -``` - -All [Google Fonts](https://fonts.google.com) are available to use. - -### Changing the font provider - -[Bunny Fonts CDN](https://fonts.bunny.net) is used to serve the fonts. It is GDPR-compliant. If you'd like to use [Google Fonts CDN](https://fonts.google.com) instead, you can do so using the `provider` argument of the `font()` method: - -```php -use Filament\FontProviders\GoogleFontProvider; - -$panel->font('Inter', provider: GoogleFontProvider::class) -``` - -Or if you'd like to serve the fonts from a local stylesheet, you can use the `LocalFontProvider`: - -```php -use Filament\FontProviders\LocalFontProvider; - -$panel->font( - 'Inter', - url: asset('css/fonts.css'), - provider: LocalFontProvider::class, -) -``` - -## Creating a custom theme - -Filament allows you to change the CSS used to render the UI by compiling a custom stylesheet to replace the default one. This custom stylesheet is called a "theme". - -Themes use [Tailwind CSS](https://tailwindcss.com), the Tailwind Forms plugin, the Tailwind Typography plugin, the [PostCSS Nesting plugin](https://www.npmjs.com/package/postcss-nesting), and [Autoprefixer](https://github.com/postcss/autoprefixer). - -To create a custom theme for a panel, you can use the `php artisan make:filament-theme` command: - -```bash -php artisan make:filament-theme -``` - -If you have multiple panels, you can specify the panel you want to create a theme for: - -```bash -php artisan make:filament-theme admin -``` - -By default, this command will use NPM to install dependencies. If you want to use a different package manager, you can use the `--pm` option: - -```bash -php artisan make:filament-theme --pm=bun -```` - -The command will create a CSS file and Tailwind Configuration file in the `/resources/css/filament` directory. You can then customize the theme by editing these files. It will also give you instructions on how to compile the theme and register it in Filament. **Please follow the instructions in the command to complete the setup process:** - -``` -⇂ First, add a new item to the `input` array of `vite.config.js`: `resources/css/filament/admin/theme.css` -⇂ Next, register the theme in the admin panel provider using `->viteTheme('resources/css/filament/admin/theme.css')` -⇂ Finally, run `npm run build` to compile the theme -``` - -Please reference the command to see the exact file names that you need to register, they may not be `admin/theme.css`. - -## Disabling dark mode - -To disable dark mode switching, you can use the [configuration](configuration) file: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->darkMode(false); -} -``` - -## Changing the default theme mode - -By default, Filament uses the user's system theme as the default mode. For example, if the user's computer is in dark mode, Filament will use dark mode by default. The system mode in Filament is reactive if the user changes their computer's mode. If you want to change the default mode to force light or dark mode, you can use the `defaultThemeMode()` method, passing `ThemeMode::Light` or `ThemeMode::Dark`: - -```php -use Filament\Enums\ThemeMode; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->defaultThemeMode(ThemeMode::Light); -} -``` - -## Adding a logo - -By default, Filament uses your app's name to render a simple text-based logo. However, you can easily customize this. - -If you want to simply change the text that is used in the logo, you can use the `brandName()` method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->brandName('Filament Demo'); -} -``` - -To render an image instead, you can pass a URL to the `brandLogo()` method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->brandLogo(asset('images/logo.svg')); -} -``` - -Alternatively, you may directly pass HTML to the `brandLogo()` method to render an inline SVG element for example: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->brandLogo(fn () => view('filament.admin.logo')); -} -``` - -```blade - - - -``` - -If you need a different logo to be used when the application is in dark mode, you can pass it to `darkModeBrandLogo()` in the same way. - -The logo height defaults to a sensible value, but it's impossible to account for all possible aspect ratios. Therefore, you may customize the height of the rendered logo using the `brandLogoHeight()` method: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->brandLogo(fn () => view('filament.admin.logo')) - ->brandLogoHeight('2rem'); -} -``` - - -## Adding a favicon - -To add a favicon, you can use the [configuration](configuration) file, passing the public URL of the favicon: - -```php -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->favicon(asset('images/favicon.png')); -} -``` diff --git a/vendor/filament/filament/docs/13-plugins.md b/vendor/filament/filament/docs/13-plugins.md deleted file mode 100644 index 2449be95..00000000 --- a/vendor/filament/filament/docs/13-plugins.md +++ /dev/null @@ -1,240 +0,0 @@ ---- -title: Plugin development ---- -import LaracastsBanner from "@components/LaracastsBanner.astro" - - - -## Overview - -The basis of Filament plugins are Laravel packages. They are installed into your Filament project via Composer, and follow all the standard techniques, like using service providers to register routes, views, and translations. If you're new to Laravel package development, here are some resources that can help you grasp the core concepts: - -- [The Package Development section of the Laravel docs](https://laravel.com/docs/packages) serves as a great reference guide. -- [Spatie's Package Training course](https://spatie.be/products/laravel-package-training) is a good instructional video series to teach you the process step by step. -- [Spatie's Package Tools](https://github.com/spatie/laravel-package-tools) allows you to simplify your service provider classes using a fluent configuration object. - -Filament plugins build on top of the concepts of Laravel packages and allow you to ship and consume reusable features for any Filament panel. They can be added to each panel one at a time, and are also configurable differently per-panel. - -## Configuring the panel with a plugin class - -A plugin class is used to allow your package to interact with a panel [configuration](configuration) file. It's a simple PHP class that implements the `Plugin` interface. 3 methods are required: - -- The `getId()` method returns the unique identifier of the plugin amongst other plugins. Please ensure that it is specific enough to not clash with other plugins that might be used in the same project. -- The `register()` method allows you to use any [configuration](configuration) option that is available to the panel. This includes registering [resources](resources/getting-started), [custom pages](pages), [themes](themes), [render hooks](configuration#render-hooks) and more. -- The `boot()` method is run only when the panel that the plugin is being registered to is actually in-use. It is executed by a middleware class. - -```php -resources([ - PostResource::class, - CategoryResource::class, - ]) - ->pages([ - Settings::class, - ]); - } - - public function boot(Panel $panel): void - { - // - } -} -``` - -The users of your plugin can add it to a panel by instantiating the plugin class and passing it to the `plugin()` method of the [configuration](configuration): - -```php -use DanHarrin\FilamentBlog\BlogPlugin; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->plugin(new BlogPlugin()); -} -``` - -### Fluently instantiating the plugin class - -You may want to add a `make()` method to your plugin class to provide a fluent interface for your users to instantiate it. In addition, by using the container (`app()`) to instantiate the plugin object, it can be replaced with a different implementation at runtime: - -```php -use Filament\Contracts\Plugin; - -class BlogPlugin implements Plugin -{ - public static function make(): static - { - return app(static::class); - } - - // ... -} -``` - -Now, your users can use the `make()` method: - -```php -use DanHarrin\FilamentBlog\BlogPlugin; -use Filament\Panel; - -public function panel(Panel $panel): Panel -{ - return $panel - // ... - ->plugin(BlogPlugin::make()); -} -``` - -### Configuring plugins per-panel - -You may add other methods to your plugin class, which allow your users to configure it. We suggest that you add both a setter and a getter method for each option you provide. You should use a property to store the preference in the setter and retrieve it again in the getter: - -```php -use DanHarrin\FilamentBlog\Resources\AuthorResource; -use Filament\Contracts\Plugin; -use Filament\Panel; - -class BlogPlugin implements Plugin -{ - protected bool $hasAuthorResource = false; - - public function authorResource(bool $condition = true): static - { - // This is the setter method, where the user's preference is - // stored in a property on the plugin object. - $this->hasAuthorResource = $condition; - - // The plugin object is returned from the setter method to - // allow fluent chaining of configuration options. - return $this; - } - - public function hasAuthorResource(): bool - { - // This is the getter method, where the user's preference - // is retrieved from the plugin property. - return $this->hasAuthorResource; - } - - public function register(Panel $panel): void - { - // Since the `register()` method is executed after the user - // configures the plugin, you can access any of their - // preferences inside it. - if ($this->hasAuthorResource()) { - // Here, we only register the author resource on the - // panel if the user has requested it. - $panel->resources([ - AuthorResource::class, - ]); - } - } - - // ... -} -``` - -Additionally, you can use the unique ID of the plugin to access any of its configuration options from outside the plugin class. To do this, pass the ID to the `filament()` method: - -```php -filament('blog')->hasAuthorResource() -``` - -You may wish to have better type safety and IDE autocompletion when accessing configuration. It's completely up to you how you choose to achieve this, but one idea could be adding a static method to the plugin class to retrieve it: - -```php -use Filament\Contracts\Plugin; - -class BlogPlugin implements Plugin -{ - public static function get(): static - { - return filament(app(static::class)->getId()); - } - - // ... -} -``` - -Now, you can access the plugin configuration using the new static method: - -```php -BlogPlugin::get()->hasAuthorResource() -``` - -## Distributing a panel in a plugin - -It's very easy to distribute an entire panel in a Laravel package. This way, a user can simply install your plugin and have an entirely new part of their app pre-built. - -When [configuring](configuration) a panel, the configuration class extends the `PanelProvider` class, and that is a standard Laravel service provider. You can use it as a service provider in your package: - -```php -id('blog') - ->path('blog') - ->resources([ - // ... - ]) - ->pages([ - // ... - ]) - ->widgets([ - // ... - ]) - ->middleware([ - // ... - ]) - ->authMiddleware([ - // ... - ]); - } -} -``` - -You should then register it as a service provider in the `composer.json` of your package: - -```json -"extra": { - "laravel": { - "providers": [ - "DanHarrin\\FilamentBlog\\BlogPanelProvider" - ] - } -} -``` diff --git a/vendor/filament/filament/docs/14-testing.md b/vendor/filament/filament/docs/14-testing.md deleted file mode 100644 index 16c95f6d..00000000 --- a/vendor/filament/filament/docs/14-testing.md +++ /dev/null @@ -1,319 +0,0 @@ ---- -title: Testing ---- - -## Overview - -All examples in this guide will be written using [Pest](https://pestphp.com). However, you can easily adapt this to a PHPUnit. - -Since all pages in the app are Livewire components, we're just using Livewire testing helpers everywhere. If you've never tested Livewire components before, please read [this guide](https://livewire.laravel.com/docs/testing) from the Livewire docs. - -## Getting started - -Ensure that you are authenticated to access the app in your `TestCase`: - -```php -protected function setUp(): void -{ - parent::setUp(); - - $this->actingAs(User::factory()->create()); -} -``` - -## Resources - -### Pages - -#### List - -##### Routing & render - -To ensure that the List page for the `PostResource` is able to render successfully, generate a page URL, perform a request to this URL and ensure that it is successful: - -```php -it('can render page', function () { - $this->get(PostResource::getUrl('index'))->assertSuccessful(); -}); -``` - -##### Table - -Filament includes a selection of helpers for testing tables. A full guide to testing tables can be found [in the Table Builder documentation](../tables/testing). - -To use a table [testing helper](../tables/testing), make assertions on the resource's List page class, which holds the table: - -```php -use function Pest\Livewire\livewire; - -it('can list posts', function () { - $posts = Post::factory()->count(10)->create(); - - livewire(PostResource\Pages\ListPosts::class) - ->assertCanSeeTableRecords($posts); -}); -``` - -#### Create - -##### Routing & render - -To ensure that the Create page for the `PostResource` is able to render successfully, generate a page URL, perform a request to this URL and ensure that it is successful: - -```php -it('can render page', function () { - $this->get(PostResource::getUrl('create'))->assertSuccessful(); -}); -``` - -##### Creating - -You may check that data is correctly saved into the database by calling `fillForm()` with your form data, and then asserting that the database contains a matching record: - -```php -use function Pest\Livewire\livewire; - -it('can create', function () { - $newData = Post::factory()->make(); - - livewire(PostResource\Pages\CreatePost::class) - ->fillForm([ - 'author_id' => $newData->author->getKey(), - 'content' => $newData->content, - 'tags' => $newData->tags, - 'title' => $newData->title, - ]) - ->call('create') - ->assertHasNoFormErrors(); - - $this->assertDatabaseHas(Post::class, [ - 'author_id' => $newData->author->getKey(), - 'content' => $newData->content, - 'tags' => json_encode($newData->tags), - 'title' => $newData->title, - ]); -}); -``` - -##### Validation - -Use `assertHasFormErrors()` to ensure that data is properly validated in a form: - -```php -use function Pest\Livewire\livewire; - -it('can validate input', function () { - livewire(PostResource\Pages\CreatePost::class) - ->fillForm([ - 'title' => null, - ]) - ->call('create') - ->assertHasFormErrors(['title' => 'required']); -}); -``` - -#### Edit - -##### Routing & render - -To ensure that the Edit page for the `PostResource` is able to render successfully, generate a page URL, perform a request to this URL and ensure that it is successful: - -```php -it('can render page', function () { - $this->get(PostResource::getUrl('edit', [ - 'record' => Post::factory()->create(), - ]))->assertSuccessful(); -}); -``` - -##### Filling existing data - -To check that the form is filled with the correct data from the database, you may `assertFormSet()` that the data in the form matches that of the record: - -```php -use function Pest\Livewire\livewire; - -it('can retrieve data', function () { - $post = Post::factory()->create(); - - livewire(PostResource\Pages\EditPost::class, [ - 'record' => $post->getRouteKey(), - ]) - ->assertFormSet([ - 'author_id' => $post->author->getKey(), - 'content' => $post->content, - 'tags' => $post->tags, - 'title' => $post->title, - ]); -}); -``` - -##### Saving - -You may check that data is correctly saved into the database by calling `fillForm()` with your form data, and then asserting that the database contains a matching record: - -```php -use function Pest\Livewire\livewire; - -it('can save', function () { - $post = Post::factory()->create(); - $newData = Post::factory()->make(); - - livewire(PostResource\Pages\EditPost::class, [ - 'record' => $post->getRouteKey(), - ]) - ->fillForm([ - 'author_id' => $newData->author->getKey(), - 'content' => $newData->content, - 'tags' => $newData->tags, - 'title' => $newData->title, - ]) - ->call('save') - ->assertHasNoFormErrors(); - - expect($post->refresh()) - ->author_id->toBe($newData->author->getKey()) - ->content->toBe($newData->content) - ->tags->toBe($newData->tags) - ->title->toBe($newData->title); -}); -``` - -##### Validation - -Use `assertHasFormErrors()` to ensure that data is properly validated in a form: - -```php -use function Pest\Livewire\livewire; - -it('can validate input', function () { - $post = Post::factory()->create(); - - livewire(PostResource\Pages\EditPost::class, [ - 'record' => $post->getRouteKey(), - ]) - ->fillForm([ - 'title' => null, - ]) - ->call('save') - ->assertHasFormErrors(['title' => 'required']); -}); -``` - -##### Deleting - -You can test the `DeleteAction` using `callAction()`: - -```php -use Filament\Actions\DeleteAction; -use function Pest\Livewire\livewire; - -it('can delete', function () { - $post = Post::factory()->create(); - - livewire(PostResource\Pages\EditPost::class, [ - 'record' => $post->getRouteKey(), - ]) - ->callAction(DeleteAction::class); - - $this->assertModelMissing($post); -}); -``` - -You can ensure that a particular user is not able to see a `DeleteAction` using `assertActionHidden()`: - -```php -use Filament\Actions\DeleteAction; -use function Pest\Livewire\livewire; - -it('can not delete', function () { - $post = Post::factory()->create(); - - livewire(PostResource\Pages\EditPost::class, [ - 'record' => $post->getRouteKey(), - ]) - ->assertActionHidden(DeleteAction::class); -}); -``` - -#### View - -##### Routing & render - -To ensure that the View page for the `PostResource` is able to render successfully, generate a page URL, perform a request to this URL and ensure that it is successful: - -```php -it('can render page', function () { - $this->get(PostResource::getUrl('view', [ - 'record' => Post::factory()->create(), - ]))->assertSuccessful(); -}); -``` - -##### Filling existing data - -To check that the form is filled with the correct data from the database, you may `assertSet()` that the data in the form matches that of the record: - -```php -use function Pest\Livewire\livewire; - -it('can retrieve data', function () { - $post = Post::factory()->create(); - - livewire(PostResource\Pages\ViewPost::class, [ - 'record' => $post->getRouteKey(), - ]) - ->assertFormSet([ - 'author_id' => $post->author->getKey(), - 'content' => $post->content, - 'tags' => $post->tags, - 'title' => $post->title, - ]); -}); -``` - -### Relation managers - -##### Render - -To ensure that a relation manager is able to render successfully, mount the Livewire component: - -```php -use App\Filament\Resources\CategoryResource\Pages\EditCategory; -use function Pest\Livewire\livewire; - -it('can render relation manager', function () { - $category = Category::factory() - ->has(Post::factory()->count(10)) - ->create(); - - livewire(CategoryResource\RelationManagers\PostsRelationManager::class, [ - 'ownerRecord' => $category, - 'pageClass' => EditCategory::class, - ]) - ->assertSuccessful(); -}); -``` - -##### Table - -Filament includes a selection of helpers for testing tables. A full guide to testing tables can be found [in the Table Builder documentation](../tables/testing). - -To use a table [testing helper](../tables/testing), make assertions on the relation manager class, which holds the table: - -```php -use App\Filament\Resources\CategoryResource\Pages\EditCategory; -use function Pest\Livewire\livewire; - -it('can list posts', function () { - $category = Category::factory() - ->has(Post::factory()->count(10)) - ->create(); - - livewire(CategoryResource\RelationManagers\PostsRelationManager::class, [ - 'ownerRecord' => $category, - 'pageClass' => EditCategory::class, - ]) - ->assertCanSeeTableRecords($category->posts); -}); -``` diff --git a/vendor/filament/filament/docs/15-upgrade-guide.md b/vendor/filament/filament/docs/15-upgrade-guide.md deleted file mode 100644 index 4d85c1ea..00000000 --- a/vendor/filament/filament/docs/15-upgrade-guide.md +++ /dev/null @@ -1,220 +0,0 @@ ---- -title: Upgrading from v2.x ---- - -> If you see anything missing from this guide, please do not hesitate to [make a pull request](https://github.com/filamentphp/filament/edit/3.x/packages/panels/docs/14-upgrade-guide.md) to our repository! Any help is appreciated! - -## New requirements - -- Laravel v10.0+ -- Livewire v3.0+ - -Please upgrade Filament before upgrading to Livewire v3. Instructions on how to upgrade Livewire can be found [here](https://livewire.laravel.com/docs/upgrading). - -> **Livewire v3 is recently released!**
-> The Livewire team have done a great job in making it stable, but it was a complete rewrite of Livewire v2. You may encounter issues, so we recommend testing your application thoroughly before using Filament v3 in production. - -## Upgrading automatically - -The easiest way to upgrade your app is to run the automated upgrade script. This script will automatically upgrade your application to the latest version of Filament and make changes to your code, which handles most breaking changes. - -```bash -composer require filament/upgrade:"^3.2" -W --dev - -vendor/bin/filament-v3 -``` - -Make sure to carefully follow the instructions, and review the changes made by the script. You may need to make some manual changes to your code afterwards, but the script should handle most of the repetitive work for you. - -A new `app/Providers/Filament/*PanelProvider.php` file will be created, and the configuration from your old `config/filament.php` file should be copied. Since this is a [Laravel service provider](https://laravel.com/docs/providers), it needs to be registered in `config/app.php`. Filament will attempt to do this for you, but if you get an error while trying to access your panel, then this process has probably failed. You can manually register the service provider by adding it to the `providers` array. - -Finally, you must run `php artisan filament:install` to finalize the Filament v3 installation. This command must be run for all new Filament projects. - -You can now `composer remove filament/upgrade` as you don't need it anymore. - -> Some plugins you're using may not be available in v3 just yet. You could temporarily remove them from your `composer.json` file until they've been upgraded, replace them with a similar plugins that are v3-compatible, wait for the plugins to be upgraded before upgrading your app, or even write PRs to help the authors upgrade them. - -## Upgrading manually - -After upgrading the dependency via Composer, you should execute `php artisan filament:upgrade` in order to clear any Laravel caches and publish the new frontend assets. - -### High-impact changes - -#### Panel provider instead of the config file - -The Filament v2 config file grew pretty big, and now it is incredibly small. Most of the configuration is now done in a service provider, which provides a cleaner API, more type safety, IDE autocomplete support, and [the ability to create multiple panels in your app](configuration#introducing-panels). We call these special configuration service providers **"panel providers"**. - -Before you can create the new panel provider, make sure that you've got Filament v3 installed with Composer. Then, run the following command: - -```bash -php artisan filament:install --panels -``` - -A new `app/Providers/Filament/AdminPanelProvider.php` file will be created, ready for you to transfer over your old configuration from the `config/filament.php` file. Since this is a [Laravel service provider](https://laravel.com/docs/providers), it needs to be registered in `config/app.php`. Filament will attempt to do this for you, but if you get an error while trying to access your panel, then this process has probably failed. You can manually register the service provider by adding it to the `providers` array. - -Most configuration transfer is very self-explanatory, but if you get stuck, please refer to the [configuration documentation](configuration). - -This will especially affect configuration done via the `Filament::serving()` method, which was used for theme customization, navigation and menu registration. Consult the [configuration](configuration), [navigation](navigation) and [themes](themes) documentation sections. - -Finally, you can run the following command to replace the old config file with the shiny new one: - -```bash -php artisan vendor:publish --tag=filament-config --force -``` - -#### `FILAMENT_FILESYSTEM_DRIVER` .env variable - -The `FILAMENT_FILESYSTEM_DRIVER` .env variable has been renamed to `FILAMENT_FILESYSTEM_DISK`. This is to make it more consistent with Laravel, as Laravel v9 introduced this change as well. Please ensure that you update your .env files accordingly, and don't forget production! - -#### Resource and relation manager imports - -Some classes that are imported in resources and relation managers have moved: - -- `Filament\Resources\Form` has moved to `Filament\Forms\Form` -- `Filament\Resources\Table` has moved to `Filament\Tables\Table` - -#### Method signature changes - -User model (with `FilamentUser` interface): - -- `canAccessFilament()` has been renamed to `canAccessPanel()` and has a new `\Filament\Panel $panel` parameter - -Resource classes: - -- `applyGlobalSearchAttributeConstraint()` now has a `string $search` parameter before `$searchAttributes()` instead of `$searchQuery` after -- `getGlobalSearchEloquentQuery()` is public -- `getGlobalSearchResults()`has a `$search` parameter instead of `$searchQuery` -- `getRouteBaseName()` has a new `?string $panel` parameter - -Resource classes and all page classes, including resource pages, custom pages, settings pages, and dashboard pages: - -- `getActiveNavigationIcon()` is public -- `getNavigationBadge()` is public -- `getNavigationBadgeColor()` is public -- `getNavigationGroup()` is public -- `getNavigationIcon()` is public -- `getNavigationLabel()` is public -- `getNavigationSort()` is public -- `getNavigationUrl()` is public -- `shouldRegisterNavigation()` is public - -All page classes, including resource pages, custom pages, settings pages, and custom dashboard pages: - -- `getBreadcrumbs()` is public -- `getFooterWidgetsColumns()` is public -- `getHeader()` is public -- `getHeaderWidgetsColumns()` is public -- `getHeading()` is public -- `getRouteName()` has a new `?string $panel` parameter -- `getSubheading()` is public -- `getTitle()` is public -- `getVisibleFooterWidgets()` is public -- `getVisibleHeaderWidgets()` is public - -List and Manage resource pages: - -- `table()` is public - -Create resource pages: - -- `canCreateAnother()` is public - -Edit and View resource pages: - -- `getFormTabLabel()` is now `getContentTabLabel()` - -Relation managers: - -- `form()` is no longer static -- `getInverseRelationshipName()` return type is now `?string` -- `table()` is no longer static - -Custom dashboard pages: - -- `getDashboard()` is public -- `getWidgets()` is public - -#### Property signature changes - -Resource classes and all page classes, including resource pages, custom pages, settings pages, and dashboard pages: - -- `$middlewares` is now `$routeMiddleware` - -#### Heroicons have been updated to v2 - -The Heroicons library has been updated to v2. This means that any icons you use in your app may have changed names. You can find a list of changes [here](https://github.com/tailwindlabs/heroicons/releases/tag/v2.0.0). - -### Medium-impact changes - -#### Date-time pickers - -The date-time picker form field now uses the browser's native date picker by default. It usually has a better UX than the old date picker, but you may notice features missing, bad browser compatibility, or behavioural bugs. If you want to revert to the old date picker, you can use the `native(false)` method: - -```php -use Filament\Forms\Components\DateTimePicker; - -DateTimePicker::make('published_at') - ->native(false) -``` - -#### Secondary color - -Filament v2 had a `secondary` color for many components which was gray. All references to `secondary` should be replaced with `gray` to preserve the same appearance. This frees `secondary` to be registered to a new custom color of your choice. - -#### `$get` and `$set` closure parameters - -In the Form Builder package, `$get` and `$set` parameters now use a type of either `\Filament\Forms\Get` or `\Filament\Forms\Set` instead of `\Closure`. This allows for better IDE autocomplete support of each function's parameters. - -An easy way to upgrade your code quickly is to find and replace: - -- `Closure $get` to `\Filament\Forms\Get $get` -- `Closure $set` to `\Filament\Forms\Set $set` - -#### Blade icon components have been disabled - -During v2, we noticed performance issues with Blade icon components. We've decided to disable them by default in v3, so we only use the [`@svg()` syntax](https://github.com/blade-ui-kit/blade-icons#directive) for rendering icons. - -A side effect of this change is that all custom icons that you use must now be [registered in a set](https://github.com/blade-ui-kit/blade-icons#defining-sets). We no longer allow arbitrary Blade components to be used as custom icons. - -#### Logo customization - -In v2, you can customize the logo of the admin panel using a `/resources/views/vendor/filament/components/brand.blade.php` file. In v3, this has been moved to the new `brandLogo()` API. You can now [set the brand logo](themes#adding-a-logo) by adding it to your panel configuration. - -#### Plugins - -Filament v3 has a new universal plugin system that breaches the constraints of the admin panel. Learn how to build v3 plugins [here](plugins). - -### Low-impact changes - -#### Default actions and type-specific relation manager classes - -> If you started the Filament project after v2.13, you can skip this section. Since then, new resources and relation managers have been generated with the new syntax. - -Since v2.13, resources and relation managers now define actions within the `table()` method instead of them being assumed by default. - -When using simple resources, remove the `CanCreateRecords`, `CanDeleteRecords`, `CanEditRecords`, and `CanViewRecords` traits from the Manage page. - -We also deprecated type-specific relation manager classes. Any classes extending `BelongsToManyRelationManager`, `HasManyRelationManager`, `HasManyThroughRelationManager`, `MorphManyRelationManager`, or `MorphToManyRelationManager` should now extend `\Filament\Resources\RelationManagers\RelationManager`. You can also remove the `CanAssociateRecords`, `CanAttachRecords`, `CanCreateRecords`, `CanDeleteRecords`, `CanDetachRecords`, `CanDisassociateRecords`, `CanEditRecords`, and `CanViewRecords` traits from relation managers. - -To learn more about v2.13 changes, read our [blog post](https://filamentphp.com/blog/v2130-admin-resources). - -#### Blade components - -Some Blade components have been moved to different namespaces: - -- `` is now `` -- `` is now `` - -However, aliases have been set up so that you don't need to change your code. - -#### Resource pages without a `$resource` property - -Filament v2 allowed for resource pages to be created without a `$resource` property. In v3 you must declare this, else you may end up with the error: - -`Typed static property Filament\Resources\Pages\Page::$resource must not be accessed before initialization` - -You should ensure that the `$resource` property is set on all resource pages: - -```php -protected static string $resource = PostResource::class; -``` diff --git a/vendor/filament/filament/resources/css/index.css b/vendor/filament/filament/resources/css/index.css deleted file mode 100644 index 6e95827c..00000000 --- a/vendor/filament/filament/resources/css/index.css +++ /dev/null @@ -1,14 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -@layer base { - :root.dark { - color-scheme: dark; - } - - /* When scrolling to validation error, do not hide element behind the top bar */ - [data-field-wrapper] { - scroll-margin-top: 8rem; - } -} diff --git a/vendor/filament/filament/resources/css/theme.css b/vendor/filament/filament/resources/css/theme.css deleted file mode 100644 index d9c8fbbe..00000000 --- a/vendor/filament/filament/resources/css/theme.css +++ /dev/null @@ -1 +0,0 @@ -@import 'index.css'; diff --git a/vendor/filament/filament/resources/js/echo.js b/vendor/filament/filament/resources/js/echo.js deleted file mode 100644 index 904b8615..00000000 --- a/vendor/filament/filament/resources/js/echo.js +++ /dev/null @@ -1,5 +0,0 @@ -import Echo from 'laravel-echo' -import Pusher from 'pusher-js/dist/web/pusher' - -window.EchoFactory = Echo -window.Pusher = Pusher diff --git a/vendor/filament/filament/resources/js/index.js b/vendor/filament/filament/resources/js/index.js deleted file mode 100644 index 68ba9458..00000000 --- a/vendor/filament/filament/resources/js/index.js +++ /dev/null @@ -1,80 +0,0 @@ -import Mousetrap from '@danharrin/alpine-mousetrap' - -document.addEventListener('alpine:init', () => { - window.Alpine.plugin(Mousetrap) - - window.Alpine.store('sidebar', { - isOpen: window.Alpine.$persist(true).as('isOpen'), - - collapsedGroups: window.Alpine.$persist(null).as('collapsedGroups'), - - groupIsCollapsed: function (group) { - return this.collapsedGroups.includes(group) - }, - - collapseGroup: function (group) { - if (this.collapsedGroups.includes(group)) { - return - } - - this.collapsedGroups = this.collapsedGroups.concat(group) - }, - - toggleCollapsedGroup: function (group) { - this.collapsedGroups = this.collapsedGroups.includes(group) - ? this.collapsedGroups.filter( - (collapsedGroup) => collapsedGroup !== group, - ) - : this.collapsedGroups.concat(group) - }, - - close: function () { - this.isOpen = false - }, - - open: function () { - this.isOpen = true - }, - }) - - const theme = localStorage.getItem('theme') ?? 'system' - - window.Alpine.store( - 'theme', - theme === 'dark' || - (theme === 'system' && - window.matchMedia('(prefers-color-scheme: dark)').matches) - ? 'dark' - : 'light', - ) - - window.addEventListener('theme-changed', (event) => { - let theme = event.detail - - localStorage.setItem('theme', theme) - - if (theme === 'system') { - theme = window.matchMedia('(prefers-color-scheme: dark)').matches - ? 'dark' - : 'light' - } - - window.Alpine.store('theme', theme) - }) - - window - .matchMedia('(prefers-color-scheme: dark)') - .addEventListener('change', (event) => { - if (localStorage.getItem('theme') === 'system') { - window.Alpine.store('theme', event.matches ? 'dark' : 'light') - } - }) - - window.Alpine.effect(() => { - const theme = window.Alpine.store('theme') - - theme === 'dark' - ? document.documentElement.classList.add('dark') - : document.documentElement.classList.remove('dark') - }) -}) diff --git a/vendor/filament/filament/resources/lang/ar/global-search.php b/vendor/filament/filament/resources/lang/ar/global-search.php deleted file mode 100644 index a4b6e3a2..00000000 --- a/vendor/filament/filament/resources/lang/ar/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'بحث عام', - 'placeholder' => 'بحث', - ], - - 'no_results_message' => 'لم يتم العثور على نتائج عن البحث.', - -]; diff --git a/vendor/filament/filament/resources/lang/ar/layout.php b/vendor/filament/filament/resources/lang/ar/layout.php deleted file mode 100644 index 7ffab122..00000000 --- a/vendor/filament/filament/resources/lang/ar/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'rtl', - - 'actions' => [ - - 'billing' => [ - 'label' => 'إدارة الاشتراكات', - ], - - 'logout' => [ - 'label' => 'تسجيل الخروج', - ], - - 'open_database_notifications' => [ - 'label' => 'عرض التنبيهات', - ], - - 'open_user_menu' => [ - 'label' => 'قائمة المستخدم', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'طيّ القائمة الجانبية', - ], - - 'expand' => [ - 'label' => 'توسيع القائمة الجانبية', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'تفعيل الوضع الليلي', - ], - - 'light' => [ - 'label' => 'تفعيل الوضع النهاري', - ], - - 'system' => [ - 'label' => 'تفعيل سمة النظام', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ar/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/ar/pages/auth/edit-profile.php deleted file mode 100644 index 9a2d7018..00000000 --- a/vendor/filament/filament/resources/lang/ar/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'الملف الشخصي', - - 'form' => [ - - 'email' => [ - 'label' => 'البريد الإلكتروني', - ], - - 'name' => [ - 'label' => 'الاسم', - ], - - 'password' => [ - 'label' => 'كلمة المرور الجديدة', - ], - - 'password_confirmation' => [ - 'label' => 'تأكيد كلمة المرور الجديدة', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'حفظ التغييرات', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'تم الحفظ', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'إلغاء', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ar/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/ar/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 6dc0b300..00000000 --- a/vendor/filament/filament/resources/lang/ar/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'تحقق من عنوان بريدك الإلكتروني', - - 'heading' => 'تحقق من عنوان بريدك الإلكتروني', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'أعد الإرسال', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'لم تستلم البريد الذي قمنا بإرساله؟', - 'notification_sent' => 'لقد أرسلنا بريدًا إلكترونيًا إلى :email يحتوي على تعليمات حول كيفية التحقق من عنوان بريدك الإلكتروني.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'لقد قمنا بإعادة إرسال البريد الإلكتروني.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'لقد قمت بمحاولات إعادة إرسال كثيرة جداً', - 'body' => 'يرجى المحاولة مرة أخرى بعد :seconds ثواني.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ar/pages/auth/login.php b/vendor/filament/filament/resources/lang/ar/pages/auth/login.php deleted file mode 100644 index c3b3b012..00000000 --- a/vendor/filament/filament/resources/lang/ar/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'تسجيل الدخول', - - 'heading' => 'الدخول إلى حسابك', - - 'actions' => [ - - 'register' => [ - 'before' => 'أو', - 'label' => 'إنشاء حساب', - ], - - 'request_password_reset' => [ - 'label' => 'نسيت كلمة المرور؟', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'البريد الإلكتروني', - ], - - 'password' => [ - 'label' => 'كلمة المرور', - ], - - 'remember' => [ - 'label' => 'تذكرني', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'تسجيل الدخول', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'بيانات الاعتماد هذه غير متطابقة مع البيانات المسجلة لدينا.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'لقد قمت بمحاولات تسجيل دخول كثيرة جدًا', - 'body' => 'يرجى المحاولة مرة أخرى بعد :seconds ثواني.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ar/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/ar/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 190b7241..00000000 --- a/vendor/filament/filament/resources/lang/ar/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'استعادة كلمة المرور', - - 'heading' => 'نسيت كلمة المرور؟', - - 'actions' => [ - - 'login' => [ - 'label' => 'العودة لتسجيل الدخول', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'البريد الإلكتروني', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'أرسل البريد الإلكتروني', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'لقد قمت بمحاولات كثيرة جداً', - 'body' => 'يرجى المحاولة مرة أخرى بعد :seconds ثواني.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ar/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/ar/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 4d715b1a..00000000 --- a/vendor/filament/filament/resources/lang/ar/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'إعادة تعيين كلمة المرور', - - 'heading' => 'إعادة تعيين كلمة المرور', - - 'form' => [ - - 'email' => [ - 'label' => 'البريد الإلكتروني', - ], - - 'password' => [ - 'label' => 'كلمة المرور', - 'validation_attribute' => 'كلمة المرور', - ], - - 'password_confirmation' => [ - 'label' => 'تأكيد كلمة المرور', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'إعادة تعيين كلمة المرور', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'لقد قمت بمحاولات كثيرة جداً لإعادة تعيين كلمة المرور', - 'body' => 'يرجى المحاولة مرة أخرى بعد :seconds ثواني.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ar/pages/auth/register.php b/vendor/filament/filament/resources/lang/ar/pages/auth/register.php deleted file mode 100644 index 217f30f1..00000000 --- a/vendor/filament/filament/resources/lang/ar/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'تسجيل', - - 'heading' => 'إنشاء حساب', - - 'actions' => [ - - 'login' => [ - 'before' => 'أو', - 'label' => 'سجل الدخول لحسابك', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'البريد الإلكتروني', - ], - - 'name' => [ - 'label' => 'الاسم', - ], - - 'password' => [ - 'label' => 'كلمة المرور', - 'validation_attribute' => 'كلمة المرور', - ], - - 'password_confirmation' => [ - 'label' => 'تأكيد كلمة المرور', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'إنشاء حساب', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'لقد قمت بمحاولات تسجيل كثيرة جدًا', - 'body' => 'يرجى المحاولة مرة أخرى بعد :seconds ثواني.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ar/pages/dashboard.php b/vendor/filament/filament/resources/lang/ar/pages/dashboard.php deleted file mode 100644 index ccfb6812..00000000 --- a/vendor/filament/filament/resources/lang/ar/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'لوحة التحكم', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'تصفية', - - 'modal' => [ - - 'heading' => 'تصفية', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'تطبيق', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ar/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/ar/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 4a53e9c9..00000000 --- a/vendor/filament/filament/resources/lang/ar/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'حفظ التغييرات', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'تم الحفظ', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ar/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/ar/resources/pages/create-record.php deleted file mode 100644 index a775fee4..00000000 --- a/vendor/filament/filament/resources/lang/ar/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'إضافة :label', - - 'breadcrumb' => 'إضافة', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'إلغاء', - ], - - 'create' => [ - 'label' => 'إضافة', - ], - - 'create_another' => [ - 'label' => 'إضافة وبدء إضافة المزيد', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'تمت الإضافة', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ar/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/ar/resources/pages/edit-record.php deleted file mode 100644 index b8cf65b0..00000000 --- a/vendor/filament/filament/resources/lang/ar/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'تعديل :label', - - 'breadcrumb' => 'تعديل', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'إلغاء', - ], - - 'save' => [ - 'label' => 'حفظ التغييرات', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'تعديل', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'تم الحفظ', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ar/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/ar/resources/pages/list-records.php deleted file mode 100644 index 69ff39b0..00000000 --- a/vendor/filament/filament/resources/lang/ar/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'القائمة', - -]; diff --git a/vendor/filament/filament/resources/lang/ar/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/ar/resources/pages/view-record.php deleted file mode 100644 index 27775509..00000000 --- a/vendor/filament/filament/resources/lang/ar/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'عرض :label', - - 'breadcrumb' => 'عرض', - - 'content' => [ - - 'tab' => [ - 'label' => 'عرض', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ar/widgets/account-widget.php b/vendor/filament/filament/resources/lang/ar/widgets/account-widget.php deleted file mode 100644 index 70c706c0..00000000 --- a/vendor/filament/filament/resources/lang/ar/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'تسجيل الخروج', - ], - - ], - - 'welcome' => 'مرحبا', - -]; diff --git a/vendor/filament/filament/resources/lang/ar/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/ar/widgets/filament-info-widget.php deleted file mode 100644 index 1f78f824..00000000 --- a/vendor/filament/filament/resources/lang/ar/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'الوثائق', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/az/global-search.php b/vendor/filament/filament/resources/lang/az/global-search.php deleted file mode 100644 index 5cdee702..00000000 --- a/vendor/filament/filament/resources/lang/az/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Ümumi axtarış', - 'placeholder' => 'Axtar', - ], - - 'no_results_message' => 'Nəticə tapılmadı.', - -]; diff --git a/vendor/filament/filament/resources/lang/az/layout.php b/vendor/filament/filament/resources/lang/az/layout.php deleted file mode 100644 index 3a4be112..00000000 --- a/vendor/filament/filament/resources/lang/az/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Abunəliyi idarə et', - ], - - 'logout' => [ - 'label' => 'Çıxış', - ], - - 'open_database_notifications' => [ - 'label' => 'Bildirişləri aç', - ], - - 'open_user_menu' => [ - 'label' => 'İstifadəçi menyusu', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Yan menyunu daralt', - ], - - 'expand' => [ - 'label' => 'Yan menyunu genişlət', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Qara tema', - ], - - 'light' => [ - 'label' => 'Açıq tema', - ], - - 'system' => [ - 'label' => 'Sistem defolt', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/az/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/az/pages/auth/edit-profile.php deleted file mode 100644 index 20e30a62..00000000 --- a/vendor/filament/filament/resources/lang/az/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profil', - - 'form' => [ - - 'email' => [ - 'label' => 'E-poçt ünvanı', - ], - - 'name' => [ - 'label' => 'Ad', - ], - - 'password' => [ - 'label' => 'Yeni şifrə', - ], - - 'password_confirmation' => [ - 'label' => 'Yeni şifrəni təsdiqlə', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Dəyişiklikləri Yadda Saxla', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Yadda saxlanıldı', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'İmtina', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/az/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/az/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 5da55c6b..00000000 --- a/vendor/filament/filament/resources/lang/az/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'E-poçt ünvanınızı təsdiqləyin', - - 'heading' => 'E-poçt ünvanınızı təsdiqləyin', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Yenidən Göndər', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Göndərdiyimiz e-poçt gəlmədi?', - 'notification_sent' => ':email ünvanına, daxilində e-poçt ünvanınızı necə təsdiqləyəcəyiniz barədə təlimatlar olan bir e-poçt göndərdik.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'E-poçt yenidən göndərildi.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Bir çox yenidən göndərmə cəhdi', - 'body' => 'Zəhmət olmazsa :seconds saniyə sonra təkrar yoxlayın.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/az/pages/auth/login.php b/vendor/filament/filament/resources/lang/az/pages/auth/login.php deleted file mode 100644 index 9e97fb7a..00000000 --- a/vendor/filament/filament/resources/lang/az/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Giriş Et', - - 'heading' => 'Daxil Ol', - - 'actions' => [ - - 'register' => [ - 'before' => 'və ya', - 'label' => 'hesab yaradın', - ], - - 'request_password_reset' => [ - 'label' => 'Şifrənizi unutmusunuz?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-poçt ünvanı', - ], - - 'password' => [ - 'label' => 'Şifrə', - ], - - 'remember' => [ - 'label' => 'Məni Xatırla', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Giriş Et', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Daxil etdiyiniz məlumatlara uyğun hesab tapılmadı.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Bir çox giriş cəhdi', - 'body' => 'Zəhmət olmazsa :seconds saniyə sonra təkrar yoxlayın.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/az/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/az/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index f664ea0d..00000000 --- a/vendor/filament/filament/resources/lang/az/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Şifrənizi Sıfırlayın', - - 'heading' => 'Şifrənizi unutmusunuz?', - - 'actions' => [ - - 'login' => [ - 'label' => 'girişə geri dön', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-poçt ünvanı', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'E-poçt göndər', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Bir çox istəmə cəhdi', - 'body' => 'Zəhmət olmazsa :seconds saniyə sonra təkrar yoxlayın.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/az/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/az/pages/auth/password-reset/reset-password.php deleted file mode 100644 index fcce79c1..00000000 --- a/vendor/filament/filament/resources/lang/az/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Şifrənizi Sıfırlayın', - - 'heading' => 'Şifrənizi Sıfırlayın', - - 'form' => [ - - 'email' => [ - 'label' => 'E-poçt ünvanı', - ], - - 'password' => [ - 'label' => 'Şifrə', - 'validation_attribute' => 'şifrə', - ], - - 'password_confirmation' => [ - 'label' => 'Şifrəni Təsdiqlə', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Şifrəni Sıfırla', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Bir çox sıfırlama cəhdi', - 'body' => 'Zəhmət olmazsa :seconds saniyə sonra təkrar yoxlayın.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/az/pages/auth/register.php b/vendor/filament/filament/resources/lang/az/pages/auth/register.php deleted file mode 100644 index 8c157784..00000000 --- a/vendor/filament/filament/resources/lang/az/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Qeydiyyatdan keç', - - 'heading' => 'Hesab Yarat', - - 'actions' => [ - - 'login' => [ - 'before' => 'və ya', - 'label' => 'hesabınıza giriş edin', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-poçt ünvanı', - ], - - 'name' => [ - 'label' => 'Ad', - ], - - 'password' => [ - 'label' => 'Şifrə', - 'validation_attribute' => 'şifrə', - ], - - 'password_confirmation' => [ - 'label' => 'Şifreni Təsdiqlə', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Hesab Yarat', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Bir çox hesab yaratma cəhdi', - 'body' => 'Zəhmət olmazsa :seconds saniyə sonra təkrar yoxlayın.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/az/pages/dashboard.php b/vendor/filament/filament/resources/lang/az/pages/dashboard.php deleted file mode 100644 index 565c9834..00000000 --- a/vendor/filament/filament/resources/lang/az/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'İdarəetmə Paneli', - -]; diff --git a/vendor/filament/filament/resources/lang/az/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/az/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 1917dbfa..00000000 --- a/vendor/filament/filament/resources/lang/az/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Dəyişiklikləri Yadda Saxla', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Yadda Saxlanıldı', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/az/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/az/resources/pages/create-record.php deleted file mode 100644 index a21ea58f..00000000 --- a/vendor/filament/filament/resources/lang/az/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - ':label yarat', - - 'breadcrumb' => 'Yarat', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'İmtina', - ], - - 'create' => [ - 'label' => 'Yarat', - ], - - 'create_another' => [ - 'label' => 'Yarat & yenisini yarat', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Yaradıldı', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/az/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/az/resources/pages/edit-record.php deleted file mode 100644 index 395cdf1d..00000000 --- a/vendor/filament/filament/resources/lang/az/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - ':label redaktə et', - - 'breadcrumb' => 'Redaktə Et', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'İmtina', - ], - - 'save' => [ - 'label' => 'Dəyişiklikləri yadda saxla', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Redaktə Et', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Yadda saxlanıldı', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/az/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/az/resources/pages/list-records.php deleted file mode 100644 index c7ba243c..00000000 --- a/vendor/filament/filament/resources/lang/az/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'List', - -]; diff --git a/vendor/filament/filament/resources/lang/az/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/az/resources/pages/view-record.php deleted file mode 100644 index 941d5744..00000000 --- a/vendor/filament/filament/resources/lang/az/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - ':label göstər', - - 'breadcrumb' => 'Göstər', - - 'content' => [ - - 'tab' => [ - 'label' => 'Göstər', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/az/widgets/account-widget.php b/vendor/filament/filament/resources/lang/az/widgets/account-widget.php deleted file mode 100644 index 4c83f5d1..00000000 --- a/vendor/filament/filament/resources/lang/az/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Çıxış', - ], - - ], - - 'welcome' => 'Xoş gəldin', - -]; diff --git a/vendor/filament/filament/resources/lang/az/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/az/widgets/filament-info-widget.php deleted file mode 100644 index fd132ff0..00000000 --- a/vendor/filament/filament/resources/lang/az/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Dokumentasiya', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/bn/global-search.php b/vendor/filament/filament/resources/lang/bn/global-search.php deleted file mode 100644 index fbb52279..00000000 --- a/vendor/filament/filament/resources/lang/bn/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'সব জায়গায় খুঁজুন', - 'placeholder' => 'খুঁজুন', - ], - - 'no_results_message' => 'খুঁজে পাওয়া যায়নি।', - -]; diff --git a/vendor/filament/filament/resources/lang/bn/layout.php b/vendor/filament/filament/resources/lang/bn/layout.php deleted file mode 100644 index 621781f5..00000000 --- a/vendor/filament/filament/resources/lang/bn/layout.php +++ /dev/null @@ -1,35 +0,0 @@ - 'বাম থেকে ডানে', - - 'actions' => [ - - 'logout' => [ - 'label' => 'সাইন আউট', - ], - - 'open_database_notifications' => [ - 'label' => 'বিজ্ঞপ্তি খুলুন', - ], - - 'open_user_menu' => [ - 'label' => 'ব্যবহার সূচী', - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'ডার্ক মোড', - ], - - 'light' => [ - 'label' => 'লাইট মোড', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/bn/pages/auth/login.php b/vendor/filament/filament/resources/lang/bn/pages/auth/login.php deleted file mode 100644 index b0a4ab6c..00000000 --- a/vendor/filament/filament/resources/lang/bn/pages/auth/login.php +++ /dev/null @@ -1,47 +0,0 @@ - 'লগইন', - - 'heading' => 'আপনার অ্যাকাউন্টে সাইন ইন করুন', - - 'form' => [ - - 'email' => [ - 'label' => 'ইমেইল এড্রেস', - ], - - 'password' => [ - 'label' => 'পাসওয়ার্ড', - ], - - 'remember' => [ - 'label' => 'মনে রাখুন', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'সাইন ইন', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'আপনার নথি পাওয়া যায় নি।', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'বহুসংখ্যক চেষ্টা, :seconds সেকেন্ড পরে পুনরায় চেষ্টা করুন।', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/bn/pages/dashboard.php b/vendor/filament/filament/resources/lang/bn/pages/dashboard.php deleted file mode 100644 index dd729b55..00000000 --- a/vendor/filament/filament/resources/lang/bn/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'ড্যাশবোর্ড', - -]; diff --git a/vendor/filament/filament/resources/lang/bn/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/bn/resources/pages/create-record.php deleted file mode 100644 index f546a3d3..00000000 --- a/vendor/filament/filament/resources/lang/bn/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - ':label তৈরী করুন', - - 'breadcrumb' => 'তৈরী করুন', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'বাতিল', - ], - - 'create' => [ - 'label' => 'তৈরী করুন', - ], - - 'create_another' => [ - 'label' => 'তৈরী এবং পুনরায় তৈরী করুন', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'তৈরি হয়েছে', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/bn/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/bn/resources/pages/edit-record.php deleted file mode 100644 index a26add74..00000000 --- a/vendor/filament/filament/resources/lang/bn/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - ':label সম্পাদন', - - 'breadcrumb' => 'সম্পাদন করুন', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'বাতিল', - ], - - 'save' => [ - 'label' => 'সম্পাদন করুন', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'সম্পাদন', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'সম্পাদন করা হয়েছে', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/bn/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/bn/resources/pages/list-records.php deleted file mode 100644 index 42b78221..00000000 --- a/vendor/filament/filament/resources/lang/bn/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'তালিকা', - -]; diff --git a/vendor/filament/filament/resources/lang/bn/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/bn/resources/pages/view-record.php deleted file mode 100644 index 904ec674..00000000 --- a/vendor/filament/filament/resources/lang/bn/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - ':label দেখুন', - - 'breadcrumb' => 'দেখুন', - - 'content' => [ - - 'tab' => [ - 'label' => 'দেখুন', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/bn/widgets/account-widget.php b/vendor/filament/filament/resources/lang/bn/widgets/account-widget.php deleted file mode 100644 index d5080e04..00000000 --- a/vendor/filament/filament/resources/lang/bn/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'সাইন আউট', - ], - - ], - - 'welcome' => 'স্বাগতম', - -]; diff --git a/vendor/filament/filament/resources/lang/bn/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/bn/widgets/filament-info-widget.php deleted file mode 100644 index cce76f8a..00000000 --- a/vendor/filament/filament/resources/lang/bn/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'ব্যবহার গাইড', - ], - - 'open_github' => [ - 'label' => 'গিটহাব', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/bs/global-search.php b/vendor/filament/filament/resources/lang/bs/global-search.php deleted file mode 100644 index 40cddabc..00000000 --- a/vendor/filament/filament/resources/lang/bs/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Globalna pretraga', - 'placeholder' => 'Tražite', - ], - - 'no_results_message' => 'Nisu pronađeni rezultati pretrage.', - -]; diff --git a/vendor/filament/filament/resources/lang/bs/layout.php b/vendor/filament/filament/resources/lang/bs/layout.php deleted file mode 100644 index db57d339..00000000 --- a/vendor/filament/filament/resources/lang/bs/layout.php +++ /dev/null @@ -1,35 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'logout' => [ - 'label' => 'Odjava', - ], - - 'open_database_notifications' => [ - 'label' => 'Otvorite notifikacije', - ], - - 'open_user_menu' => [ - 'label' => 'Korisnički meni', - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Uključite tamni način rada', - ], - - 'light' => [ - 'label' => 'Uključite svjijetli način rada', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/bs/pages/auth/login.php b/vendor/filament/filament/resources/lang/bs/pages/auth/login.php deleted file mode 100644 index cc71496a..00000000 --- a/vendor/filament/filament/resources/lang/bs/pages/auth/login.php +++ /dev/null @@ -1,47 +0,0 @@ - 'Login', - - 'heading' => 'Prijavite se na svoj račun', - - 'form' => [ - - 'email' => [ - 'label' => 'E-mail adresa', - ], - - 'password' => [ - 'label' => 'Šifra', - ], - - 'remember' => [ - 'label' => 'Zapamti me', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Prijavite se', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Vaša kombinacija se ne poklapa sa našom evidencijom.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Previše pokušaja prijave. Pokušajte ponovo za :seconds sekundi.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/bs/pages/dashboard.php b/vendor/filament/filament/resources/lang/bs/pages/dashboard.php deleted file mode 100644 index ca32eec8..00000000 --- a/vendor/filament/filament/resources/lang/bs/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Nadzorna ploča', - -]; diff --git a/vendor/filament/filament/resources/lang/bs/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/bs/resources/pages/create-record.php deleted file mode 100644 index 74349b15..00000000 --- a/vendor/filament/filament/resources/lang/bs/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Napravi :label', - - 'breadcrumb' => 'Napravi', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Prekiniti', - ], - - 'create' => [ - 'label' => 'Napraviti', - ], - - 'create_another' => [ - 'label' => 'Napravi i napravi još jedan', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Uspješno kreirano', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/bs/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/bs/resources/pages/edit-record.php deleted file mode 100644 index 1e42300c..00000000 --- a/vendor/filament/filament/resources/lang/bs/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Uredi :label', - - 'breadcrumb' => 'Uredi', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Prekinit', - ], - - 'save' => [ - 'label' => 'Saćuvaj', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Uredi', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Sačuvano', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/bs/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/bs/resources/pages/list-records.php deleted file mode 100644 index 3af06606..00000000 --- a/vendor/filament/filament/resources/lang/bs/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Lista', - -]; diff --git a/vendor/filament/filament/resources/lang/bs/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/bs/resources/pages/view-record.php deleted file mode 100644 index cea173c4..00000000 --- a/vendor/filament/filament/resources/lang/bs/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Pogled :label', - - 'breadcrumb' => 'Pogled', - - 'content' => [ - - 'tab' => [ - 'label' => 'Pogled', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/bs/widgets/account-widget.php b/vendor/filament/filament/resources/lang/bs/widgets/account-widget.php deleted file mode 100644 index 786391b7..00000000 --- a/vendor/filament/filament/resources/lang/bs/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Odjava', - ], - - ], - - 'welcome' => 'Zdravo', - -]; diff --git a/vendor/filament/filament/resources/lang/bs/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/bs/widgets/filament-info-widget.php deleted file mode 100644 index d770c7e3..00000000 --- a/vendor/filament/filament/resources/lang/bs/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Dokumentacija', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ca/global-search.php b/vendor/filament/filament/resources/lang/ca/global-search.php deleted file mode 100644 index a89008ff..00000000 --- a/vendor/filament/filament/resources/lang/ca/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Cerca global', - 'placeholder' => 'Cerca', - ], - - 'no_results_message' => 'No s\'han trobat resultats.', - -]; diff --git a/vendor/filament/filament/resources/lang/ca/layout.php b/vendor/filament/filament/resources/lang/ca/layout.php deleted file mode 100644 index 03537dd3..00000000 --- a/vendor/filament/filament/resources/lang/ca/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Gestionar subscripció', - ], - - 'logout' => [ - 'label' => 'Tancar la sessió', - ], - - 'open_database_notifications' => [ - 'label' => 'Obrir notificacions', - ], - - 'open_user_menu' => [ - 'label' => 'Menú de l\'usuari', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Replegar barra lateral', - ], - - 'expand' => [ - 'label' => 'Ampliar barra lateral', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Habilitar tema fosc', - ], - - 'light' => [ - 'label' => 'Habilitar tema clar', - ], - - 'system' => [ - 'label' => 'Habilitar tema del sistema', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ca/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/ca/pages/auth/edit-profile.php deleted file mode 100644 index f6942926..00000000 --- a/vendor/filament/filament/resources/lang/ca/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Perfil', - - 'form' => [ - - 'email' => [ - 'label' => 'Adreça de correu electrònic', - ], - - 'name' => [ - 'label' => 'Nom', - ], - - 'password' => [ - 'label' => 'Nova contrasenya', - ], - - 'password_confirmation' => [ - 'label' => 'Confirma la nova contrasenya', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Desar canvis', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Canvis desats', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancel·lar', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ca/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/ca/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 7e9a574d..00000000 --- a/vendor/filament/filament/resources/lang/ca/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Verifica la teva adreça de correu electrònic', - - 'heading' => 'Verifica la teva adreça de correu electrònic', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Reenvia la notificació', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'No has rebut el correu electrònic?', - 'notification_sent' => 'Hem enviat un correu electrònic a :email amb instruccions sobre com verificar la teva adreça de correu electrònic.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Hem reenviat el correu electrònic.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Massa intents de reenviament', - 'body' => 'Si us plau, torna a intentar-ho en :seconds segons.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ca/pages/auth/login.php b/vendor/filament/filament/resources/lang/ca/pages/auth/login.php deleted file mode 100644 index 918fa35a..00000000 --- a/vendor/filament/filament/resources/lang/ca/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Inici de sessió', - - 'heading' => 'Accediu al vostre compte', - - 'actions' => [ - - 'register' => [ - 'before' => 'o', - 'label' => 'obrir un compte', - ], - - 'request_password_reset' => [ - 'label' => 'Heu oblidat la vostra contrasenya?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Adreça de correu electrònic', - ], - - 'password' => [ - 'label' => 'Contrasenya', - ], - - 'remember' => [ - 'label' => 'Recorda\'m', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Accedir', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Aquestes credencials no coincideixen amb els nostres registres', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Massa intents de connexió', - 'body' => 'Si us plau, torneu-ho a provar en :seconds segons.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ca/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/ca/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 31a4a245..00000000 --- a/vendor/filament/filament/resources/lang/ca/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Restableix la teva contrasenya', - - 'heading' => 'Has oblidat la teva contrasenya?', - - 'actions' => [ - - 'login' => [ - 'label' => 'Tornar a l\'inici de sessió', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Adreça de correu electrònic', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Enviar correu electrònic', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Too many requests', - 'body' => 'Please try again in :seconds seconds.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ca/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/ca/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 3173a76e..00000000 --- a/vendor/filament/filament/resources/lang/ca/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Restableix la teva contrasenya', - - 'heading' => 'Restableix la teva contrasenya', - - 'form' => [ - - 'email' => [ - 'label' => 'Adreça de correu electrònic', - ], - - 'password' => [ - 'label' => 'Contrasenya', - 'validation_attribute' => 'contrasenya', - ], - - 'password_confirmation' => [ - 'label' => 'Confirma la contrasenya', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Restableix la contrasenya', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Massa intents de restabliment', - 'body' => 'Si us plau, torna-ho a provar en :seconds segons.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ca/pages/auth/register.php b/vendor/filament/filament/resources/lang/ca/pages/auth/register.php deleted file mode 100644 index fc950eac..00000000 --- a/vendor/filament/filament/resources/lang/ca/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Enregistrar-se', - - 'heading' => 'Obriu un nou compte', - - 'actions' => [ - - 'login' => [ - 'before' => 'o', - 'label' => 'inicia la sessió amb el vostre compte', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Adreça de correu electrònic', - ], - - 'name' => [ - 'label' => 'Nom', - ], - - 'password' => [ - 'label' => 'Contrasenya', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Confirma la contrasenya', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Enregistrar-se', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Massa intents de registre', - 'body' => 'Si us plau, torneu-ho a provar en :seconds segons.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ca/pages/dashboard.php b/vendor/filament/filament/resources/lang/ca/pages/dashboard.php deleted file mode 100644 index d10e8d29..00000000 --- a/vendor/filament/filament/resources/lang/ca/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'Escriptori', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'Filtre', - - 'modal' => [ - - 'heading' => 'Filtre', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'Aplicar', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ca/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/ca/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 0c3db1a9..00000000 --- a/vendor/filament/filament/resources/lang/ca/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Desar canvis', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Canvis desats', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ca/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/ca/resources/pages/create-record.php deleted file mode 100644 index b260e146..00000000 --- a/vendor/filament/filament/resources/lang/ca/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Crear :label', - - 'breadcrumb' => 'Crear', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancel·lar', - ], - - 'create' => [ - 'label' => 'Crear', - ], - - 'create_another' => [ - 'label' => 'Crear i crear un altre', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Creat', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ca/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/ca/resources/pages/edit-record.php deleted file mode 100644 index 9fcc441f..00000000 --- a/vendor/filament/filament/resources/lang/ca/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Editar :label', - - 'breadcrumb' => 'Editar', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancel·lar', - ], - - 'save' => [ - 'label' => 'Desar canvis', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Editar', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Canvis desats', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ca/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/ca/resources/pages/list-records.php deleted file mode 100644 index 0e841ef9..00000000 --- a/vendor/filament/filament/resources/lang/ca/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Llistat', - -]; diff --git a/vendor/filament/filament/resources/lang/ca/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/ca/resources/pages/view-record.php deleted file mode 100644 index c1a1994e..00000000 --- a/vendor/filament/filament/resources/lang/ca/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Veure :label', - - 'breadcrumb' => 'Veure', - - 'content' => [ - - 'tab' => [ - 'label' => 'Veure', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ca/widgets/account-widget.php b/vendor/filament/filament/resources/lang/ca/widgets/account-widget.php deleted file mode 100644 index bf7cdf81..00000000 --- a/vendor/filament/filament/resources/lang/ca/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Tancar la sessió', - ], - - ], - - 'welcome' => 'Benvingut/da', - -]; diff --git a/vendor/filament/filament/resources/lang/ca/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/ca/widgets/filament-info-widget.php deleted file mode 100644 index e71f6297..00000000 --- a/vendor/filament/filament/resources/lang/ca/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Documentació', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ckb/global-search.php b/vendor/filament/filament/resources/lang/ckb/global-search.php deleted file mode 100644 index b69f0f65..00000000 --- a/vendor/filament/filament/resources/lang/ckb/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'گەڕانی گشتی', - 'placeholder' => 'گەڕان', - ], - - 'no_results_message' => 'هیچ ئەنجامێک بۆ گەڕانەکەت نەدۆزرایەوە.', - -]; diff --git a/vendor/filament/filament/resources/lang/ckb/layout.php b/vendor/filament/filament/resources/lang/ckb/layout.php deleted file mode 100644 index 1ba52fa5..00000000 --- a/vendor/filament/filament/resources/lang/ckb/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'rtl', - - 'actions' => [ - - 'billing' => [ - 'label' => 'بەشدارییەکان', - ], - - 'logout' => [ - 'label' => 'چوونەدەرەوە', - ], - - 'open_database_notifications' => [ - 'label' => 'کردنەوەی ئاگانامەکان', - ], - - 'open_user_menu' => [ - 'label' => 'مێنیوی بەکارهێنەر', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'بچووکردنەوەی شریتی گەڕان', - ], - - 'expand' => [ - 'label' => 'فراوانکردنی شریتی گەڕان', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'گۆڕینی ڕوانگە بۆ تاریک', - ], - - 'light' => [ - 'label' => 'گۆڕینی ڕوانگە بۆ ڕووناک', - ], - - 'system' => [ - 'label' => 'داگرساندنی باری سیستەم', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ckb/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/ckb/pages/auth/edit-profile.php deleted file mode 100644 index ce4fa396..00000000 --- a/vendor/filament/filament/resources/lang/ckb/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'پڕۆفایل', - - 'form' => [ - - 'email' => [ - 'label' => 'ئیمەیڵ', - ], - - 'name' => [ - 'label' => 'ناو', - ], - - 'password' => [ - 'label' => 'وشەی نهێنی نوێ', - ], - - 'password_confirmation' => [ - 'label' => 'دڵنیابوونەوەی وشەی نهێنی نوێ', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'نوێکردنەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'نوێکرایەوە', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'گەڕانەوە', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ckb/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/ckb/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index feba9133..00000000 --- a/vendor/filament/filament/resources/lang/ckb/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'چالاککردنی ئیمەیڵ', - - 'heading' => 'چالاککردنی ئیمەیڵ', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'دووبارە چالاککردن بنێرە', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'ئیمەیڵەکەت پێ نەگەیشت بۆ چالاککردن؟', - 'notification_sent' => 'ئیمەیڵێکمان نارد بۆ :email کە ڕێنماییەکەنی تێدایە بۆ چالاککردنی هەژمارەکەت..', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'چالاککردنی ئیمەیڵ دووبارە نێردرا.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'هەوڵی دووبارە ناردنی چالاککردن زۆر نێردرا', - 'body' => 'تکایە هەوڵ بدەرەوە دوای :seconds چرکە.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ckb/pages/auth/login.php b/vendor/filament/filament/resources/lang/ckb/pages/auth/login.php deleted file mode 100644 index 4997ba13..00000000 --- a/vendor/filament/filament/resources/lang/ckb/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'چوونەژوورەوە', - - 'heading' => 'چوونەژوورەوە', - - 'actions' => [ - - 'register' => [ - 'before' => 'یان', - 'label' => 'دروستکردنی هەژماری نوێ', - ], - - 'request_password_reset' => [ - 'label' => 'وشەی نهێنیت لەبیرکردووە؟', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'ئیمەیڵ', - ], - - 'password' => [ - 'label' => 'وشەی نهێنی', - ], - - 'remember' => [ - 'label' => 'لەبیرم مەکە', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'چوونەژوورەوە', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'هیچ هەژمارێک بەو تۆمارە بوونی نییە.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'هەوڵی داواکاری چونەژورەوە زۆر نێردرا', - 'body' => 'تکایە هەوڵ بدەرەوە دوای :seconds چرکە.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ckb/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/ckb/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 1994e7e5..00000000 --- a/vendor/filament/filament/resources/lang/ckb/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'نوێکردنەوەی وشەی نهێنی', - - 'heading' => 'وشەی نهێنیت لەبیر کردووە؟?', - - 'actions' => [ - - 'login' => [ - 'label' => 'گەڕانەوە بۆ چوونەژوورەوە', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'ئیمەیڵ', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'ناردنی ئیمەیڵ', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'داواکاری زۆر نێردرا', - 'body' => 'تکایە هەوڵ بدەرەوە دوای :seconds چرکە.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ckb/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/ckb/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 3cc2b3bb..00000000 --- a/vendor/filament/filament/resources/lang/ckb/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'نوێکردنەوەی وشەی نهێنی', - - 'heading' => 'نوێکردنەوەی وشەی نهێنی', - - 'form' => [ - - 'email' => [ - 'label' => 'ئیمەیڵ', - ], - - 'password' => [ - 'label' => 'وشەی نهێنی', - 'validation_attribute' => 'وشەی نهێنی', - ], - - 'password_confirmation' => [ - 'label' => 'دڵنیابوونەوەی وشەی نهێنی', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'نوێکردنەوەی وشەی نهێنی', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'هەوڵی نوێکردنەوەی وشەی نهێنی زۆر نێردرا', - 'body' => 'تکایە هەوڵ بدەرەوە دوای :seconds چرکە.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ckb/pages/auth/register.php b/vendor/filament/filament/resources/lang/ckb/pages/auth/register.php deleted file mode 100644 index 87f6374e..00000000 --- a/vendor/filament/filament/resources/lang/ckb/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'دروستکردنی هەژمار', - - 'heading' => 'دروستکردنی هەژمار', - - 'actions' => [ - - 'login' => [ - 'before' => 'یان', - 'label' => 'چوونەژوورەوە', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'ئیمەیڵ', - ], - - 'name' => [ - 'label' => 'ناو', - ], - - 'password' => [ - 'label' => 'وشەی نهێنی', - 'validation_attribute' => 'وشەی نهێنی', - ], - - 'password_confirmation' => [ - 'label' => 'دڵنیابوونەوەی وشەی نهێنی', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'دروستکردنی هەژمار', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'هەوڵی دروستکردنی هەژمار زۆر نێردرا', - 'body' => 'تکایە هەوڵ بدەرەوە دوای :seconds چرکە.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ckb/pages/dashboard.php b/vendor/filament/filament/resources/lang/ckb/pages/dashboard.php deleted file mode 100644 index 89dea645..00000000 --- a/vendor/filament/filament/resources/lang/ckb/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'داشبۆرد', - -]; diff --git a/vendor/filament/filament/resources/lang/ckb/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/ckb/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 7348084a..00000000 --- a/vendor/filament/filament/resources/lang/ckb/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'نوێکردنەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'نوێکرایەوە', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ckb/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/ckb/resources/pages/create-record.php deleted file mode 100644 index 43ed6f39..00000000 --- a/vendor/filament/filament/resources/lang/ckb/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'دروستکردنی :label', - - 'breadcrumb' => 'دروستکردن', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'پاشگەزبوونەوە', - ], - - 'create' => [ - 'label' => 'دروستکردن', - ], - - 'create_another' => [ - 'label' => 'دروستکردن و تۆمارێکی تر', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'دروستکرا', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ckb/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/ckb/resources/pages/edit-record.php deleted file mode 100644 index eaf46e52..00000000 --- a/vendor/filament/filament/resources/lang/ckb/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'دەستکاریکردنی :label', - - 'breadcrumb' => 'دەستکاریکردن', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'پاشگەزبوونەوە', - ], - - 'save' => [ - 'label' => 'نوێکردنەوە', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'دەستکاریکردن', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'نوێکرایەوە', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ckb/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/ckb/resources/pages/list-records.php deleted file mode 100644 index 3ecd89c8..00000000 --- a/vendor/filament/filament/resources/lang/ckb/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'تۆمارەکان', - -]; diff --git a/vendor/filament/filament/resources/lang/ckb/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/ckb/resources/pages/view-record.php deleted file mode 100644 index c3dd4f8e..00000000 --- a/vendor/filament/filament/resources/lang/ckb/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'بینینی :label', - - 'breadcrumb' => 'بینین', - - 'content' => [ - - 'tab' => [ - 'label' => 'بینین', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ckb/widgets/account-widget.php b/vendor/filament/filament/resources/lang/ckb/widgets/account-widget.php deleted file mode 100644 index c923c562..00000000 --- a/vendor/filament/filament/resources/lang/ckb/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'چوونەدەرەوە', - ], - - ], - - 'welcome' => 'بەخێربێیت', - -]; diff --git a/vendor/filament/filament/resources/lang/ckb/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/ckb/widgets/filament-info-widget.php deleted file mode 100644 index e5595044..00000000 --- a/vendor/filament/filament/resources/lang/ckb/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Documentation', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/cs/global-search.php b/vendor/filament/filament/resources/lang/cs/global-search.php deleted file mode 100644 index 1dbf6cc1..00000000 --- a/vendor/filament/filament/resources/lang/cs/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Vyhledávání', - 'placeholder' => 'Hledat', - ], - - 'no_results_message' => 'Nenalezeny žádné výsledky.', - -]; diff --git a/vendor/filament/filament/resources/lang/cs/layout.php b/vendor/filament/filament/resources/lang/cs/layout.php deleted file mode 100644 index 63dd1f5c..00000000 --- a/vendor/filament/filament/resources/lang/cs/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Správa předplatného', - ], - - 'logout' => [ - 'label' => 'Odhlásit se', - ], - - 'open_database_notifications' => [ - 'label' => 'Zobrazit notifikace', - ], - - 'open_user_menu' => [ - 'label' => 'Nabídka uživatele', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Skrýt boční panel', - ], - - 'expand' => [ - 'label' => 'Otevřít boční panel', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Zapnout tmavý režim', - ], - - 'light' => [ - 'label' => 'Zapnout světlý režim', - ], - - 'system' => [ - 'label' => 'Použít nastavení systému', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/cs/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/cs/pages/auth/edit-profile.php deleted file mode 100644 index e5c4a3ca..00000000 --- a/vendor/filament/filament/resources/lang/cs/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profil', - - 'form' => [ - - 'email' => [ - 'label' => 'E-mailová adresa', - ], - - 'name' => [ - 'label' => 'Jméno', - ], - - 'password' => [ - 'label' => 'Nové heslo', - ], - - 'password_confirmation' => [ - 'label' => 'Potvrďte nové heslo', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Uložit', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Uloženo', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Zrušit', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/cs/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/cs/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 4a02ae06..00000000 --- a/vendor/filament/filament/resources/lang/cs/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Ověřte svou e-mailovou adresu', - - 'heading' => 'Ověřte svou e-mailovou adresu', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Znovu odeslat ověřovací e-mail', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Neobdrželi jste e-mail, který jsme poslali?', - 'notification_sent' => 'Na vaši e-mailovou adresu :email jsme zaslali zprávu s pokyny pro ověření této adresy.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Ověřovací e-mail byl odeslán', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Příliš mnoho požadavků', - 'body' => 'Zkuste to prosím znovu za :seconds sekund.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/cs/pages/auth/login.php b/vendor/filament/filament/resources/lang/cs/pages/auth/login.php deleted file mode 100644 index d777f762..00000000 --- a/vendor/filament/filament/resources/lang/cs/pages/auth/login.php +++ /dev/null @@ -1,47 +0,0 @@ - 'Přihlášení', - - 'heading' => 'Přihlašte se k Vašemu účtu', - - 'form' => [ - - 'email' => [ - 'label' => 'Emailová adresa', - ], - - 'password' => [ - 'label' => 'Heslo', - ], - - 'remember' => [ - 'label' => 'Zapamatovat si mě', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Přihlásit se', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Chybně zadané přihlašovací údaje.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Příliš mnoho pokusů o přihlášení. Zkuste to znovu za :seconds vteřin.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/cs/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/cs/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index f4a02ed1..00000000 --- a/vendor/filament/filament/resources/lang/cs/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Obnovení hesla', - - 'heading' => 'Zapomněli jste heslo?', - - 'actions' => [ - - 'login' => [ - 'label' => 'zpět na přihlášení', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-mailová adresa', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Odeslat odkaz na obnovení hesla', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Příliš mnoho požadavků', - 'body' => 'Zkuste to prosím znovu za :seconds sekund.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/cs/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/cs/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 7b394dca..00000000 --- a/vendor/filament/filament/resources/lang/cs/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Nastavte si nové heslo', - - 'heading' => 'Nastavte si nové heslo', - - 'form' => [ - - 'email' => [ - 'label' => 'E-mailová adresa', - ], - - 'password' => [ - 'label' => 'Heslo', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Potvrďte heslo', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Nastavit nové heslo', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Příliš mnoho požadavků', - 'body' => 'Zkuste to prosím znovu za :seconds sekund.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/cs/pages/auth/register.php b/vendor/filament/filament/resources/lang/cs/pages/auth/register.php deleted file mode 100644 index 194174d0..00000000 --- a/vendor/filament/filament/resources/lang/cs/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Registrace', - - 'heading' => 'Zaregistrovat se', - - 'actions' => [ - - 'login' => [ - 'before' => 'nebo', - 'label' => 'přihlásit se ke svému účtu', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-mailová adresa', - ], - - 'name' => [ - 'label' => 'Jméno', - ], - - 'password' => [ - 'label' => 'Heslo', - 'validation_attribute' => 'Heslo', - ], - - 'password_confirmation' => [ - 'label' => 'Potvrďte heslo', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Zaregistrovat se', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Příliš mnoho požadavků', - 'body' => 'Zkuste to prosím znovu za :seconds sekund.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/cs/pages/dashboard.php b/vendor/filament/filament/resources/lang/cs/pages/dashboard.php deleted file mode 100644 index 62afc649..00000000 --- a/vendor/filament/filament/resources/lang/cs/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'Nástěnka', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'Filtr', - - 'modal' => [ - - 'heading' => 'Filtr', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'Použít', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/cs/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/cs/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index ba694243..00000000 --- a/vendor/filament/filament/resources/lang/cs/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Uložit', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Uloženo', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/cs/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/cs/resources/pages/create-record.php deleted file mode 100644 index 825de62f..00000000 --- a/vendor/filament/filament/resources/lang/cs/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Vytvořit :label', - - 'breadcrumb' => 'Vytvořit', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Zrušit', - ], - - 'create' => [ - 'label' => 'Vytvořit', - ], - - 'create_another' => [ - 'label' => 'Vytvořit & vytvořit další', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Vytvořit', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/cs/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/cs/resources/pages/edit-record.php deleted file mode 100644 index 8d1848cb..00000000 --- a/vendor/filament/filament/resources/lang/cs/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Upravit :label', - - 'breadcrumb' => 'Upravit', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Zrušit', - ], - - 'save' => [ - 'label' => 'Uložit', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Upravit', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Uloženo', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/cs/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/cs/resources/pages/list-records.php deleted file mode 100644 index b6f381d4..00000000 --- a/vendor/filament/filament/resources/lang/cs/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Přehled', - -]; diff --git a/vendor/filament/filament/resources/lang/cs/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/cs/resources/pages/view-record.php deleted file mode 100644 index 0e9206b6..00000000 --- a/vendor/filament/filament/resources/lang/cs/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Zobrazit :label', - - 'breadcrumb' => 'Zobrazit', - - 'content' => [ - - 'tab' => [ - 'label' => 'Zobrazit', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/cs/widgets/account-widget.php b/vendor/filament/filament/resources/lang/cs/widgets/account-widget.php deleted file mode 100644 index 1116aa8f..00000000 --- a/vendor/filament/filament/resources/lang/cs/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Odhlásit se', - ], - - ], - - 'welcome' => 'Vítejte', - -]; diff --git a/vendor/filament/filament/resources/lang/cs/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/cs/widgets/filament-info-widget.php deleted file mode 100644 index bad7e93e..00000000 --- a/vendor/filament/filament/resources/lang/cs/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Dokumentace', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/da/global-search.php b/vendor/filament/filament/resources/lang/da/global-search.php deleted file mode 100644 index e12d0efe..00000000 --- a/vendor/filament/filament/resources/lang/da/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Global søgning', - 'placeholder' => 'Søg', - ], - - 'no_results_message' => 'Ingen søgeresultater fundet.', - -]; diff --git a/vendor/filament/filament/resources/lang/da/layout.php b/vendor/filament/filament/resources/lang/da/layout.php deleted file mode 100644 index c8dc2fa0..00000000 --- a/vendor/filament/filament/resources/lang/da/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Administrer abonnementer', - ], - - 'logout' => [ - 'label' => 'Log ud', - ], - - 'open_database_notifications' => [ - 'label' => 'Åbn notifikationer', - ], - - 'open_user_menu' => [ - 'label' => 'Brugermenu', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Skjul sidebjælken', - ], - - 'expand' => [ - 'label' => 'Udvid sidebjælken', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Skift til mørk tilstand', - ], - - 'light' => [ - 'label' => 'Skift til lys tilstand', - ], - - 'system' => [ - 'label' => 'Skift til systemtilstand', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/da/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/da/pages/auth/edit-profile.php deleted file mode 100644 index 2c61fb79..00000000 --- a/vendor/filament/filament/resources/lang/da/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profil', - - 'form' => [ - - 'email' => [ - 'label' => 'E-mail', - ], - - 'name' => [ - 'label' => 'Navn', - ], - - 'password' => [ - 'label' => 'Ny adgangskode', - ], - - 'password_confirmation' => [ - 'label' => 'Bekræft ny adgangskode', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Gem ændringer', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Gemt', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Annuller', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/da/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/da/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index abb8b0b5..00000000 --- a/vendor/filament/filament/resources/lang/da/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Bekræft din e-mail', - - 'heading' => 'Bekræft din e-mail', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Gensend', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Har ikke modtaget den e-mail, vi sendte?', - 'notification_sent' => 'Vi har sendt en e-mail til :email med instruktioner om, hvordan du verificerer din e-mail.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Vi har sendt e-mailen igen.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'For mange forsøg på at sende igen', - 'body' => 'Prøv igen om :seconds sekunder.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/da/pages/auth/login.php b/vendor/filament/filament/resources/lang/da/pages/auth/login.php deleted file mode 100644 index 1fb4b276..00000000 --- a/vendor/filament/filament/resources/lang/da/pages/auth/login.php +++ /dev/null @@ -1,60 +0,0 @@ - 'Log ind', - - 'heading' => 'Log ind på din konto', - - 'actions' => [ - - 'register' => [ - 'before' => 'eller', - 'label' => 'Opret en konto', - ], - - 'request_password_reset' => [ - 'label' => 'Glemt din adgangskode?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-mail', - ], - - 'password' => [ - 'label' => 'Adgangskode', - ], - - 'remember' => [ - 'label' => 'Husk mig', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Log ind', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Den adgangskode, du har indtastet, er forkert.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'For mange loginforsøg. Prøv venligst igen om :seconds sekunder.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/da/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/da/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index b17c9fc9..00000000 --- a/vendor/filament/filament/resources/lang/da/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Nulstil din adgangskode', - - 'heading' => 'Glemt din adgangskode?', - - 'actions' => [ - - 'login' => [ - 'label' => 'Tilbage til login', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-mail', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Send e-mail', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'For mange forsøg', - 'body' => 'Prøv igen om :seconds sekunder.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/da/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/da/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 1e0853c5..00000000 --- a/vendor/filament/filament/resources/lang/da/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Nulstil din adgangskode', - - 'heading' => 'Nulstil din adgangskode', - - 'form' => [ - - 'email' => [ - 'label' => 'E-mail', - ], - - 'password' => [ - 'label' => 'Adgangskode', - 'validation_attribute' => 'Adgangskode', - ], - - 'password_confirmation' => [ - 'label' => 'Bekræft adgangskode', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Nulstil adgangskode', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'For mange forsøg på nulstilling', - 'body' => 'Prøv igen om :seconds sekunder.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/da/pages/auth/register.php b/vendor/filament/filament/resources/lang/da/pages/auth/register.php deleted file mode 100644 index d9987efc..00000000 --- a/vendor/filament/filament/resources/lang/da/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Opret dig', - - 'heading' => 'Opret konto', - - 'actions' => [ - - 'login' => [ - 'before' => 'eller', - 'label' => 'Log ind på din konto', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-mail', - ], - - 'name' => [ - 'label' => 'Navn', - ], - - 'password' => [ - 'label' => 'Adgangskode', - 'validation_attribute' => 'adgangskode', - ], - - 'password_confirmation' => [ - 'label' => 'Bekræft adgangskode', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Opret konto', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'For mange forsøg', - 'body' => 'Prøv igen om :seconds sekunder.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/da/pages/dashboard.php b/vendor/filament/filament/resources/lang/da/pages/dashboard.php deleted file mode 100644 index ea1d4fe8..00000000 --- a/vendor/filament/filament/resources/lang/da/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'Dashboard', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'Filtrer', - - 'modal' => [ - - 'heading' => 'Filter', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'Anvend', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/da/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/da/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 73b2d8e8..00000000 --- a/vendor/filament/filament/resources/lang/da/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Gem ændringer', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Gemt', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/da/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/da/resources/pages/create-record.php deleted file mode 100644 index 27fd42e5..00000000 --- a/vendor/filament/filament/resources/lang/da/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Opret :label', - - 'breadcrumb' => 'Opret', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Annuller', - ], - - 'create' => [ - 'label' => 'Opret', - ], - - 'create_another' => [ - 'label' => 'Opret & opret en mere', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Oprettet', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/da/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/da/resources/pages/edit-record.php deleted file mode 100644 index 41799689..00000000 --- a/vendor/filament/filament/resources/lang/da/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Rediger :label', - - 'breadcrumb' => 'Rediger', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Annuller', - ], - - 'save' => [ - 'label' => 'Gem ændringer', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Rediger', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Gemt', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/da/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/da/resources/pages/list-records.php deleted file mode 100644 index 51ebe1a5..00000000 --- a/vendor/filament/filament/resources/lang/da/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Liste', - -]; diff --git a/vendor/filament/filament/resources/lang/da/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/da/resources/pages/view-record.php deleted file mode 100644 index 2b847c49..00000000 --- a/vendor/filament/filament/resources/lang/da/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Vis :label', - - 'breadcrumb' => 'Vis', - - 'content' => [ - - 'tab' => [ - 'label' => 'Vis', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/da/widgets/account-widget.php b/vendor/filament/filament/resources/lang/da/widgets/account-widget.php deleted file mode 100644 index b592a121..00000000 --- a/vendor/filament/filament/resources/lang/da/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Log ud', - ], - - ], - - 'welcome' => 'Velkommen', - -]; diff --git a/vendor/filament/filament/resources/lang/da/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/da/widgets/filament-info-widget.php deleted file mode 100644 index c989f1ac..00000000 --- a/vendor/filament/filament/resources/lang/da/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Dokumentation', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/de/global-search.php b/vendor/filament/filament/resources/lang/de/global-search.php deleted file mode 100644 index 9e535b4f..00000000 --- a/vendor/filament/filament/resources/lang/de/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Globale Suche', - 'placeholder' => 'Suchen', - ], - - 'no_results_message' => 'Keine Ergebnisse gefunden.', - -]; diff --git a/vendor/filament/filament/resources/lang/de/layout.php b/vendor/filament/filament/resources/lang/de/layout.php deleted file mode 100644 index 9d8235c5..00000000 --- a/vendor/filament/filament/resources/lang/de/layout.php +++ /dev/null @@ -1,51 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'logout' => [ - 'label' => 'Abmelden', - ], - - 'open_database_notifications' => [ - 'label' => 'Benachrichtigungen öffnen', - ], - - 'open_user_menu' => [ - 'label' => 'Benutzermenü', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Seitenleiste einklappen', - ], - - 'expand' => [ - 'label' => 'Seitenleiste ausklappen', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Dark Mode einschalten', - ], - - 'light' => [ - 'label' => 'Light Mode einschalten', - ], - - 'system' => [ - 'label' => 'Systemthema benutzen', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/de/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/de/pages/auth/edit-profile.php deleted file mode 100644 index 793d06a1..00000000 --- a/vendor/filament/filament/resources/lang/de/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profil', - - 'form' => [ - - 'email' => [ - 'label' => 'E-Mail-Adresse', - ], - - 'name' => [ - 'label' => 'Name', - ], - - 'password' => [ - 'label' => 'Neues Passwort', - ], - - 'password_confirmation' => [ - 'label' => 'Passwort bestätigen', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Änderung speichern', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Gespeichert', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Abbrechen', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/de/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/de/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 098eecb8..00000000 --- a/vendor/filament/filament/resources/lang/de/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,34 +0,0 @@ - 'E-Mail-Adresse bestätigen', - - 'heading' => 'E-Mail-Adresse bestätigen', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Erneut senden', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Keine E-Mail erhalten?', - 'notification_sent' => 'Wir haben eine E-Mail mit Anweisungen zur Bestätigung des Kontos an :email gesendet.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'E-Mail erneut gesendet.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Zu viele Versuche. Versuchen Sie es bitte in :seconds Sekunden nochmal.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/de/pages/auth/login.php b/vendor/filament/filament/resources/lang/de/pages/auth/login.php deleted file mode 100644 index 99f16ecc..00000000 --- a/vendor/filament/filament/resources/lang/de/pages/auth/login.php +++ /dev/null @@ -1,60 +0,0 @@ - 'Anmelden', - - 'heading' => 'Melden Sie sich an.', - - 'actions' => [ - - 'register' => [ - 'before' => 'oder', - 'label' => 'erstellen Sie ein Konto', - ], - - 'request_password_reset' => [ - 'label' => 'Passwort vergessen?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-Mail-Adresse', - ], - - 'password' => [ - 'label' => 'Passwort', - ], - - 'remember' => [ - 'label' => 'Angemeldet bleiben', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Anmelden', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Diese Kombination aus Zugangsdaten wurde nicht in unserer Datenbank gefunden.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Zu viele Loginversuche. Versuchen Sie es bitte in :seconds Sekunden nochmal.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/de/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/de/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index bb023c34..00000000 --- a/vendor/filament/filament/resources/lang/de/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Passwort zurücksetzen', - - 'heading' => 'Passwort vergessen?', - - 'actions' => [ - - 'login' => [ - 'label' => 'zurück zum Login', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-Mail-Adresse', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'E-Mail zusenden', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Zu viele Versuche. Versuchen Sie es bitte in :seconds Sekunden nochmal.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/de/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/de/pages/auth/password-reset/reset-password.php deleted file mode 100644 index fec4f073..00000000 --- a/vendor/filament/filament/resources/lang/de/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Passwort zurücksetzen', - - 'heading' => 'Passwort zurücksetzen', - - 'form' => [ - - 'email' => [ - 'label' => 'E-Mail-Adresse', - ], - - 'password' => [ - 'label' => 'Passwort', - 'validation_attribute' => 'Passwort', - ], - - 'password_confirmation' => [ - 'label' => 'Passwort bestätigen', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Passwort zurücksetzen', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Zu viele Versuche. Versuchen Sie es bitte in :seconds Sekunden nochmal.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/de/pages/auth/register.php b/vendor/filament/filament/resources/lang/de/pages/auth/register.php deleted file mode 100644 index 48998532..00000000 --- a/vendor/filament/filament/resources/lang/de/pages/auth/register.php +++ /dev/null @@ -1,55 +0,0 @@ - 'Registrieren', - - 'heading' => 'Registrieren', - - 'actions' => [ - - 'login' => [ - 'before' => 'oder', - 'label' => 'mit Konto anmelden', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-Mail-Adresse', - ], - - 'name' => [ - 'label' => 'Name', - ], - - 'password' => [ - 'label' => 'Passwort', - 'validation_attribute' => 'Passwort', - ], - - 'password_confirmation' => [ - 'label' => 'Passwort bestätigen', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Registrieren', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Zu viele Anmeldeversuche. Versuchen Sie es bitte in :seconds Sekunden nochmal.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/de/pages/dashboard.php b/vendor/filament/filament/resources/lang/de/pages/dashboard.php deleted file mode 100644 index 7d0cd2d8..00000000 --- a/vendor/filament/filament/resources/lang/de/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Dashboard', - -]; diff --git a/vendor/filament/filament/resources/lang/de/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/de/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 70e2db76..00000000 --- a/vendor/filament/filament/resources/lang/de/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Speichern', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Gespeichert', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/de/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/de/resources/pages/create-record.php deleted file mode 100644 index b693bcb9..00000000 --- a/vendor/filament/filament/resources/lang/de/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - ':label erstellen', - - 'breadcrumb' => 'Erstellen', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Abbrechen', - ], - - 'create' => [ - 'label' => 'Erstellen', - ], - - 'create_another' => [ - 'label' => 'Erstellen & weiterer Eintrag', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Erstellt', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/de/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/de/resources/pages/edit-record.php deleted file mode 100644 index 018b2f9f..00000000 --- a/vendor/filament/filament/resources/lang/de/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - ':label bearbeiten', - - 'breadcrumb' => 'Bearbeiten', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Abbrechen', - ], - - 'save' => [ - 'label' => 'Speichern', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Bearbeiten', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Gespeichert', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/de/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/de/resources/pages/list-records.php deleted file mode 100644 index 141c2266..00000000 --- a/vendor/filament/filament/resources/lang/de/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Übersicht', - -]; diff --git a/vendor/filament/filament/resources/lang/de/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/de/resources/pages/view-record.php deleted file mode 100644 index 4d38cf8d..00000000 --- a/vendor/filament/filament/resources/lang/de/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - ':label ansehen', - - 'breadcrumb' => 'Ansehen', - - 'content' => [ - - 'tab' => [ - 'label' => 'Ansehen', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/de/widgets/account-widget.php b/vendor/filament/filament/resources/lang/de/widgets/account-widget.php deleted file mode 100644 index aede5e38..00000000 --- a/vendor/filament/filament/resources/lang/de/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Abmelden', - ], - - ], - - 'welcome' => 'Willkommen', - -]; diff --git a/vendor/filament/filament/resources/lang/de/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/de/widgets/filament-info-widget.php deleted file mode 100644 index c989f1ac..00000000 --- a/vendor/filament/filament/resources/lang/de/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Dokumentation', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/el/global-search.php b/vendor/filament/filament/resources/lang/el/global-search.php deleted file mode 100644 index 7bddba8b..00000000 --- a/vendor/filament/filament/resources/lang/el/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Γενική αναζήτηση', - 'placeholder' => 'Αναζήτηση', - ], - - 'no_results_message' => 'Δεν βρέθηκαν αποτελέσματα.', - -]; diff --git a/vendor/filament/filament/resources/lang/el/layout.php b/vendor/filament/filament/resources/lang/el/layout.php deleted file mode 100644 index 4c097491..00000000 --- a/vendor/filament/filament/resources/lang/el/layout.php +++ /dev/null @@ -1,35 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'logout' => [ - 'label' => 'Αποσύνδεση', - ], - - 'open_database_notifications' => [ - 'label' => 'Προβολή ειδοποιήσεων', - ], - - 'open_user_menu' => [ - 'label' => 'Μενού χρήστη', - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Σκοτεινή λειτουργία', - ], - - 'light' => [ - 'label' => 'Φωτεινή λειτουργία', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/el/pages/auth/login.php b/vendor/filament/filament/resources/lang/el/pages/auth/login.php deleted file mode 100644 index 33f77dfe..00000000 --- a/vendor/filament/filament/resources/lang/el/pages/auth/login.php +++ /dev/null @@ -1,47 +0,0 @@ - 'Σύνδεση', - - 'heading' => 'Συνδεθείτε στο λογαριασμό σας', - - 'form' => [ - - 'email' => [ - 'label' => 'Διεύθυνση ηλεκτρονικού ταχυδρομείου', - ], - - 'password' => [ - 'label' => 'Κωδικός πρόσβασης', - ], - - 'remember' => [ - 'label' => 'Θυμήσου με', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Συνδεθείτε', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Τα στοιχεία που δώσατε δεν συνδέονται με λογαριασμό.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Πάρα πολλές προσπάθειες σύνδεσης. Δοκιμάστε ξανά μετά από :seconds δευτερόλεπτα.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/el/pages/dashboard.php b/vendor/filament/filament/resources/lang/el/pages/dashboard.php deleted file mode 100644 index 310aeca1..00000000 --- a/vendor/filament/filament/resources/lang/el/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Πίνακας ελέγχου', - -]; diff --git a/vendor/filament/filament/resources/lang/el/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/el/resources/pages/create-record.php deleted file mode 100644 index 2452cbe1..00000000 --- a/vendor/filament/filament/resources/lang/el/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Δημιουργία :label', - - 'breadcrumb' => 'Δημιούργησε', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Ακύρωση', - ], - - 'create' => [ - 'label' => 'Δημιούργησε', - ], - - 'create_another' => [ - 'label' => 'Δημιούργησε & Δημιούργησε ακόμα ένα', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Δημιουργήθηκε', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/el/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/el/resources/pages/edit-record.php deleted file mode 100644 index 48bddeb6..00000000 --- a/vendor/filament/filament/resources/lang/el/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Επεξεργασία :label', - - 'breadcrumb' => 'Επεξεργασία', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Ακύρωση', - ], - - 'save' => [ - 'label' => 'Αποθήκευση αλλαγών', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Επεξεργασία', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Αποθηκεύτηκε', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/el/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/el/resources/pages/list-records.php deleted file mode 100644 index 85d2dc5b..00000000 --- a/vendor/filament/filament/resources/lang/el/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Λίστα', - -]; diff --git a/vendor/filament/filament/resources/lang/el/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/el/resources/pages/view-record.php deleted file mode 100644 index 184528a7..00000000 --- a/vendor/filament/filament/resources/lang/el/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Προεπισκόπηση :label', - - 'breadcrumb' => 'Προεπισκόπηση', - - 'content' => [ - - 'tab' => [ - 'label' => 'Προεπισκόπηση', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/el/widgets/account-widget.php b/vendor/filament/filament/resources/lang/el/widgets/account-widget.php deleted file mode 100644 index f80ec060..00000000 --- a/vendor/filament/filament/resources/lang/el/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Αποσύνδεση', - ], - - ], - - 'welcome' => 'Καλώς ήρθες', - -]; diff --git a/vendor/filament/filament/resources/lang/el/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/el/widgets/filament-info-widget.php deleted file mode 100644 index 5b5d310c..00000000 --- a/vendor/filament/filament/resources/lang/el/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Οδηγός', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/en/global-search.php b/vendor/filament/filament/resources/lang/en/global-search.php deleted file mode 100644 index b105e0e0..00000000 --- a/vendor/filament/filament/resources/lang/en/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Global search', - 'placeholder' => 'Search', - ], - - 'no_results_message' => 'No search results found.', - -]; diff --git a/vendor/filament/filament/resources/lang/en/layout.php b/vendor/filament/filament/resources/lang/en/layout.php deleted file mode 100644 index 1b494c30..00000000 --- a/vendor/filament/filament/resources/lang/en/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Manage subscription', - ], - - 'logout' => [ - 'label' => 'Sign out', - ], - - 'open_database_notifications' => [ - 'label' => 'Open notifications', - ], - - 'open_user_menu' => [ - 'label' => 'User menu', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Collapse sidebar', - ], - - 'expand' => [ - 'label' => 'Expand sidebar', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Enable dark theme', - ], - - 'light' => [ - 'label' => 'Enable light theme', - ], - - 'system' => [ - 'label' => 'Enable system theme', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/en/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/en/pages/auth/edit-profile.php deleted file mode 100644 index d3176dfd..00000000 --- a/vendor/filament/filament/resources/lang/en/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profile', - - 'form' => [ - - 'email' => [ - 'label' => 'Email address', - ], - - 'name' => [ - 'label' => 'Name', - ], - - 'password' => [ - 'label' => 'New password', - ], - - 'password_confirmation' => [ - 'label' => 'Confirm new password', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Save changes', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Saved', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancel', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/en/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/en/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 3e3f1595..00000000 --- a/vendor/filament/filament/resources/lang/en/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Verify your email address', - - 'heading' => 'Verify your email address', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Resend it', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Not received the email we sent?', - 'notification_sent' => 'We\'ve sent an email to :email containing instructions on how to verify your email address.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'We\'ve resent the email.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Too many resend attempts', - 'body' => 'Please try again in :seconds seconds.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/en/pages/auth/login.php b/vendor/filament/filament/resources/lang/en/pages/auth/login.php deleted file mode 100644 index 0002d557..00000000 --- a/vendor/filament/filament/resources/lang/en/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Login', - - 'heading' => 'Sign in', - - 'actions' => [ - - 'register' => [ - 'before' => 'or', - 'label' => 'sign up for an account', - ], - - 'request_password_reset' => [ - 'label' => 'Forgotten your password?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Email address', - ], - - 'password' => [ - 'label' => 'Password', - ], - - 'remember' => [ - 'label' => 'Remember me', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Sign in', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'These credentials do not match our records.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Too many login attempts', - 'body' => 'Please try again in :seconds seconds.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/en/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/en/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index b696377c..00000000 --- a/vendor/filament/filament/resources/lang/en/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Reset your password', - - 'heading' => 'Forgotten your password?', - - 'actions' => [ - - 'login' => [ - 'label' => 'back to login', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Email address', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Send email', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Too many requests', - 'body' => 'Please try again in :seconds seconds.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/en/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/en/pages/auth/password-reset/reset-password.php deleted file mode 100644 index fc9d18ae..00000000 --- a/vendor/filament/filament/resources/lang/en/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Reset your password', - - 'heading' => 'Reset your password', - - 'form' => [ - - 'email' => [ - 'label' => 'Email address', - ], - - 'password' => [ - 'label' => 'Password', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Confirm password', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Reset password', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Too many reset attempts', - 'body' => 'Please try again in :seconds seconds.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/en/pages/auth/register.php b/vendor/filament/filament/resources/lang/en/pages/auth/register.php deleted file mode 100644 index 54d1bcda..00000000 --- a/vendor/filament/filament/resources/lang/en/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Register', - - 'heading' => 'Sign up', - - 'actions' => [ - - 'login' => [ - 'before' => 'or', - 'label' => 'sign in to your account', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Email address', - ], - - 'name' => [ - 'label' => 'Name', - ], - - 'password' => [ - 'label' => 'Password', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Confirm password', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Sign up', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Too many registration attempts', - 'body' => 'Please try again in :seconds seconds.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/en/pages/dashboard.php b/vendor/filament/filament/resources/lang/en/pages/dashboard.php deleted file mode 100644 index 5701edc6..00000000 --- a/vendor/filament/filament/resources/lang/en/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'Dashboard', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'Filter', - - 'modal' => [ - - 'heading' => 'Filter', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'Apply', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/en/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/en/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index e0021ab7..00000000 --- a/vendor/filament/filament/resources/lang/en/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Save changes', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Saved', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/en/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/en/resources/pages/create-record.php deleted file mode 100644 index 18f265db..00000000 --- a/vendor/filament/filament/resources/lang/en/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Create :label', - - 'breadcrumb' => 'Create', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancel', - ], - - 'create' => [ - 'label' => 'Create', - ], - - 'create_another' => [ - 'label' => 'Create & create another', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Created', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/en/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/en/resources/pages/edit-record.php deleted file mode 100644 index be92178a..00000000 --- a/vendor/filament/filament/resources/lang/en/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Edit :label', - - 'breadcrumb' => 'Edit', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancel', - ], - - 'save' => [ - 'label' => 'Save changes', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Edit', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Saved', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/en/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/en/resources/pages/list-records.php deleted file mode 100644 index c7ba243c..00000000 --- a/vendor/filament/filament/resources/lang/en/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'List', - -]; diff --git a/vendor/filament/filament/resources/lang/en/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/en/resources/pages/view-record.php deleted file mode 100644 index b23e1c39..00000000 --- a/vendor/filament/filament/resources/lang/en/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'View :label', - - 'breadcrumb' => 'View', - - 'content' => [ - - 'tab' => [ - 'label' => 'View', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/en/widgets/account-widget.php b/vendor/filament/filament/resources/lang/en/widgets/account-widget.php deleted file mode 100644 index 6c026375..00000000 --- a/vendor/filament/filament/resources/lang/en/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Sign out', - ], - - ], - - 'welcome' => 'Welcome', - -]; diff --git a/vendor/filament/filament/resources/lang/en/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/en/widgets/filament-info-widget.php deleted file mode 100644 index e5595044..00000000 --- a/vendor/filament/filament/resources/lang/en/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Documentation', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/es/global-search.php b/vendor/filament/filament/resources/lang/es/global-search.php deleted file mode 100644 index 0c6c9c22..00000000 --- a/vendor/filament/filament/resources/lang/es/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Búsqueda global', - 'placeholder' => 'Buscar', - ], - - 'no_results_message' => 'No se han encontrado resultados.', - -]; diff --git a/vendor/filament/filament/resources/lang/es/layout.php b/vendor/filament/filament/resources/lang/es/layout.php deleted file mode 100644 index bd60035f..00000000 --- a/vendor/filament/filament/resources/lang/es/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Administrar suscripción', - ], - - 'logout' => [ - 'label' => 'Salir', - ], - - 'open_database_notifications' => [ - 'label' => 'Abrir notificaciones', - ], - - 'open_user_menu' => [ - 'label' => 'Menú del Usuario', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Contraer barra lateral', - ], - - 'expand' => [ - 'label' => 'Expandir barra lateral', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'A modo oscuro', - ], - - 'light' => [ - 'label' => 'A modo claro', - ], - - 'system' => [ - 'label' => 'A modo del sistema', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/es/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/es/pages/auth/edit-profile.php deleted file mode 100644 index d44a3e5a..00000000 --- a/vendor/filament/filament/resources/lang/es/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Perfil', - - 'form' => [ - - 'email' => [ - 'label' => 'Dirección Email', - ], - - 'name' => [ - 'label' => 'Nombre', - ], - - 'password' => [ - 'label' => 'Nueva contraseña', - ], - - 'password_confirmation' => [ - 'label' => 'Confirmar nueva contraseña', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Guardar cambios', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Cambios guardados', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'regresar', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/es/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/es/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 4767c9b0..00000000 --- a/vendor/filament/filament/resources/lang/es/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Verifique su dirección de correo electrónico', - - 'heading' => 'Verifique su dirección de correo electrónico', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Reenviar', - ], - - ], - - 'messages' => [ - 'notification_not_received' => '¿No ha recibido el correo electrónico que enviamos?', - 'notification_sent' => 'Hemos enviado un correo electrónico a :email con instrucciones sobre cómo verificar su dirección de correo electrónico.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Hemos reenviado el correo electrónico.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Demasiados intentos de reenvío', - 'body' => 'Por favor, inténtelo de nuevo en :seconds segundos.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/es/pages/auth/login.php b/vendor/filament/filament/resources/lang/es/pages/auth/login.php deleted file mode 100644 index 93ca1e75..00000000 --- a/vendor/filament/filament/resources/lang/es/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Acceso', - - 'heading' => 'Entre a su cuenta', - - 'actions' => [ - - 'register' => [ - 'before' => 'o', - 'label' => 'Abrir una cuenta', - ], - - 'request_password_reset' => [ - 'label' => '¿Ha olvidado su contraseña?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Correo electrónico', - ], - - 'password' => [ - 'label' => 'Contraseña', - ], - - 'remember' => [ - 'label' => 'Recordarme', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Entrar', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Estas credenciales no coinciden con nuestros registros.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Demasiados intentos. Intente de nuevo en :seconds segundos.', - 'body' => 'Intente de nuevo en :seconds segundos.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/es/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/es/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 4117b2ae..00000000 --- a/vendor/filament/filament/resources/lang/es/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Restablecer tu contraseña', - - 'heading' => '¿Olvidaste tu contraseña?', - - 'actions' => [ - - 'login' => [ - 'label' => 'Volver al inicio de sesión', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Correo electrónico', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Enviar email', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Demasiadas solicitudes', - 'body' => 'Por favor, inténtelo de nuevo en :seconds segundos.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/es/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/es/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 03b3496f..00000000 --- a/vendor/filament/filament/resources/lang/es/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Restablecer su contraseña', - - 'heading' => 'Restablecer su contraseña', - - 'form' => [ - - 'email' => [ - 'label' => 'Restablecer contraseña', - ], - - 'password' => [ - 'label' => 'Contraseña', - 'validation_attribute' => 'contraseña', - ], - - 'password_confirmation' => [ - 'label' => 'Confirmar contraseña', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Restablecer contraseña', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Demasiados intentos de restablecimiento', - 'body' => 'Por favor, inténtelo de nuevo en :seconds segundos.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/es/pages/auth/register.php b/vendor/filament/filament/resources/lang/es/pages/auth/register.php deleted file mode 100644 index c26daf23..00000000 --- a/vendor/filament/filament/resources/lang/es/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Registrarse', - - 'heading' => 'Crear una cuenta', - - 'actions' => [ - - 'login' => [ - 'before' => 'o', - 'label' => 'iniciar sesión en su cuenta', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Correo electrónico', - ], - - 'name' => [ - 'label' => 'Nombre', - ], - - 'password' => [ - 'label' => 'Contraseña', - 'validation_attribute' => 'contraseña', - ], - - 'password_confirmation' => [ - 'label' => 'Confirmar contraseña', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Registrarse', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Demasiados intentos de registro', - 'body' => 'Por favor, inténtelo de nuevo en :seconds segundos.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/es/pages/dashboard.php b/vendor/filament/filament/resources/lang/es/pages/dashboard.php deleted file mode 100644 index 1a067a73..00000000 --- a/vendor/filament/filament/resources/lang/es/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'Escritorio', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'Filtro', - - 'modal' => [ - - 'heading' => 'Filtro', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'Aplicar', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/es/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/es/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index a2e5404e..00000000 --- a/vendor/filament/filament/resources/lang/es/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Guardar cambios', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Guardados', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/es/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/es/resources/pages/create-record.php deleted file mode 100644 index cd3472d4..00000000 --- a/vendor/filament/filament/resources/lang/es/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Crear :label', - - 'breadcrumb' => 'Crear', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancelar', - ], - - 'create' => [ - 'label' => 'Crear', - ], - - 'create_another' => [ - 'label' => 'Crear y crear otro', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Creado', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/es/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/es/resources/pages/edit-record.php deleted file mode 100644 index 51a9ce2e..00000000 --- a/vendor/filament/filament/resources/lang/es/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Editar :label', - - 'breadcrumb' => 'Editar', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancelar', - ], - - 'save' => [ - 'label' => 'Guardar cambios', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Editar', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Guardado', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/es/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/es/resources/pages/list-records.php deleted file mode 100644 index d5ff3bd9..00000000 --- a/vendor/filament/filament/resources/lang/es/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Listado', - -]; diff --git a/vendor/filament/filament/resources/lang/es/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/es/resources/pages/view-record.php deleted file mode 100644 index 8800c850..00000000 --- a/vendor/filament/filament/resources/lang/es/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Ver :label', - - 'breadcrumb' => 'Ver', - - 'content' => [ - - 'tab' => [ - 'label' => 'Ver', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/es/widgets/account-widget.php b/vendor/filament/filament/resources/lang/es/widgets/account-widget.php deleted file mode 100644 index d8d868dd..00000000 --- a/vendor/filament/filament/resources/lang/es/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Salir', - ], - - ], - - 'welcome' => 'Bienvenida/o', - -]; diff --git a/vendor/filament/filament/resources/lang/es/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/es/widgets/filament-info-widget.php deleted file mode 100644 index 0b7ba01e..00000000 --- a/vendor/filament/filament/resources/lang/es/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Documentación', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fa/global-search.php b/vendor/filament/filament/resources/lang/fa/global-search.php deleted file mode 100644 index d57a4873..00000000 --- a/vendor/filament/filament/resources/lang/fa/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'جستجو در کل سایت', - 'placeholder' => 'جستجو', - ], - - 'no_results_message' => 'نتیجه‌ای برای جستجوی شما یافت نشد.', - -]; diff --git a/vendor/filament/filament/resources/lang/fa/layout.php b/vendor/filament/filament/resources/lang/fa/layout.php deleted file mode 100644 index c7e6c7fd..00000000 --- a/vendor/filament/filament/resources/lang/fa/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'rtl', - - 'actions' => [ - - 'billing' => [ - 'label' => 'مدیریت آبونمان', - ], - - 'logout' => [ - 'label' => 'خروج', - ], - - 'open_database_notifications' => [ - 'label' => 'نمایش اعلانات', - ], - - 'open_user_menu' => [ - 'label' => 'منوی کاربر', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'بستن نوار کناری', - ], - - 'expand' => [ - 'label' => 'باز کردن نوار کناری', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'حالت تیره', - ], - - 'light' => [ - 'label' => 'حالت روشن', - ], - - 'system' => [ - 'label' => 'حالت سیستم', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fa/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/fa/pages/auth/edit-profile.php deleted file mode 100644 index f88ae941..00000000 --- a/vendor/filament/filament/resources/lang/fa/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'پروفایل', - - 'form' => [ - - 'email' => [ - 'label' => 'ایمیل', - ], - - 'name' => [ - 'label' => 'نام', - ], - - 'password' => [ - 'label' => 'رمز عبور جدید', - ], - - 'password_confirmation' => [ - 'label' => 'تایید رمز عبور جدید', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'ذخیره تغییرات', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'ذخیره شد', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'لغو', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fa/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/fa/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index c8c788be..00000000 --- a/vendor/filament/filament/resources/lang/fa/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'تایید آدرس ایمیل', - - 'heading' => 'تایید آدرس ایمیل', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'ارسال مجدد', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'ایمیلی که فرستادیم را دریافت نکردید؟', - 'notification_sent' => 'ما یک ایمیل حاوی دستورات لازم برای بازنشانی رمز عبور به :فرستادیم address.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'ما ایمیل را دوباره فرستادیم.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'شما بیش از حد مجاز درخواست ارسال مجدد ایمیل داشته‌اید.', - 'body' => 'لطفاً :seconds ثانیه دیگر تلاش کنید.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fa/pages/auth/login.php b/vendor/filament/filament/resources/lang/fa/pages/auth/login.php deleted file mode 100644 index d8f98351..00000000 --- a/vendor/filament/filament/resources/lang/fa/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'ورود', - - 'heading' => 'ورود به حساب کاربری', - - 'actions' => [ - - 'register' => [ - 'before' => 'یا', - 'label' => 'ایجاد حساب کاربری', - ], - - 'request_password_reset' => [ - 'label' => 'رمز عبور خود را فراموش کرده‌اید؟', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'آدرس ایمیل', - ], - - 'password' => [ - 'label' => 'رمز عبور', - ], - - 'remember' => [ - 'label' => 'مرا به خاطر بسپار', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'ورود', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'مشخصات واردشده با اطلاعات ما سازگار نیست.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'شما بیش از حد مجاز درخواست ورود داشته‌اید.', - 'body' => 'لطفاً :seconds ثانیه دیگر تلاش کنید.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fa/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/fa/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index aa8decf9..00000000 --- a/vendor/filament/filament/resources/lang/fa/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'بازنشانی رمز عبور', - - 'heading' => 'رمز عبور خود را فراموش کرده‌اید؟', - - 'actions' => [ - - 'login' => [ - 'label' => 'بازگشت به ورود', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'ایمیل', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'ارسال ایمیل', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'شما بیش از حد مجاز درخواست داشته‌اید.', - 'body' => 'لطفاً :seconds ثانیه دیگر تلاش کنید.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fa/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/fa/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 60932aeb..00000000 --- a/vendor/filament/filament/resources/lang/fa/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'بازنشانی رمز عبور', - - 'heading' => 'بازنشانی رمز عبور', - - 'form' => [ - - 'email' => [ - 'label' => 'ایمیل', - ], - - 'password' => [ - 'label' => 'رمر عبور', - 'validation_attribute' => 'رمز عبور', - ], - - 'password_confirmation' => [ - 'label' => 'تایید رمز عبور', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'بازنشانی رمز عبور', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'شما بیش از حد مجاز درخواست بازنشانی رمز عبور داشته‌اید.', - 'body' => 'لطفاً :seconds ثانیه دیگر تلاش کنید.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fa/pages/auth/register.php b/vendor/filament/filament/resources/lang/fa/pages/auth/register.php deleted file mode 100644 index 1693f76a..00000000 --- a/vendor/filament/filament/resources/lang/fa/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'ثبت‌نام', - - 'heading' => 'ثبت‌نام', - - 'actions' => [ - - 'login' => [ - 'before' => 'یا', - 'label' => 'وارد حساب خود شوید.', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'ایمیل', - ], - - 'name' => [ - 'label' => 'نام', - ], - - 'password' => [ - 'label' => 'رمز عبور', - 'validation_attribute' => 'رمز عبور', - ], - - 'password_confirmation' => [ - 'label' => 'تایید رمز عبور', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'ثبت‌نام', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'شما بیش از حد مجاز درخواست ثبت‌نام داشته‌اید.', - 'body' => 'لطفاً :seconds ثانیه دیگر تلاش کنید.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fa/pages/dashboard.php b/vendor/filament/filament/resources/lang/fa/pages/dashboard.php deleted file mode 100644 index 75a0557a..00000000 --- a/vendor/filament/filament/resources/lang/fa/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'داشبورد', - -]; diff --git a/vendor/filament/filament/resources/lang/fa/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/fa/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 9bd652ff..00000000 --- a/vendor/filament/filament/resources/lang/fa/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'ذخیره تغییرات', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'ذخیره شد', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fa/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/fa/resources/pages/create-record.php deleted file mode 100644 index 9ead4de3..00000000 --- a/vendor/filament/filament/resources/lang/fa/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'ایجاد :label', - - 'breadcrumb' => 'ایجاد', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'لغو', - ], - - 'create' => [ - 'label' => 'ایجاد', - ], - - 'create_another' => [ - 'label' => 'ایجاد و ایجاد یکی دیگر', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'ایجاد شد', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fa/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/fa/resources/pages/edit-record.php deleted file mode 100644 index 12a6dea4..00000000 --- a/vendor/filament/filament/resources/lang/fa/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'ویرایش :label', - - 'breadcrumb' => 'ویرایش', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'لغو', - ], - - 'save' => [ - 'label' => 'ذخیره', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'ویرایش', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'ذخیره شد', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fa/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/fa/resources/pages/list-records.php deleted file mode 100644 index b8ec29c3..00000000 --- a/vendor/filament/filament/resources/lang/fa/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'لیست', - -]; diff --git a/vendor/filament/filament/resources/lang/fa/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/fa/resources/pages/view-record.php deleted file mode 100644 index 71aa171e..00000000 --- a/vendor/filament/filament/resources/lang/fa/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'مشاهده :label', - - 'breadcrumb' => 'مشاهده', - - 'content' => [ - - 'tab' => [ - 'label' => 'مشاهده', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fa/widgets/account-widget.php b/vendor/filament/filament/resources/lang/fa/widgets/account-widget.php deleted file mode 100644 index 15acb9ec..00000000 --- a/vendor/filament/filament/resources/lang/fa/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'خروج', - ], - - ], - - 'welcome' => 'خوش آمدید', - -]; diff --git a/vendor/filament/filament/resources/lang/fa/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/fa/widgets/filament-info-widget.php deleted file mode 100644 index ef6a1558..00000000 --- a/vendor/filament/filament/resources/lang/fa/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'مستندات', - ], - - 'open_github' => [ - 'label' => 'گیت‌هاب', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fi/global-search.php b/vendor/filament/filament/resources/lang/fi/global-search.php deleted file mode 100644 index 7dca9975..00000000 --- a/vendor/filament/filament/resources/lang/fi/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Globaali haku', - 'placeholder' => 'Etsi', - ], - - 'no_results_message' => 'Hakutuloksia ei löytynyt.', - -]; diff --git a/vendor/filament/filament/resources/lang/fi/layout.php b/vendor/filament/filament/resources/lang/fi/layout.php deleted file mode 100644 index fbe7ea82..00000000 --- a/vendor/filament/filament/resources/lang/fi/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Hallitse tilausta', - ], - - 'logout' => [ - 'label' => 'Kirjaudu ulos', - ], - - 'open_database_notifications' => [ - 'label' => 'Avaa ilmoitukset', - ], - - 'open_user_menu' => [ - 'label' => 'Käyttäjävalikko', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Sulje sivupalkki', - ], - - 'expand' => [ - 'label' => 'Laajenna sivupalkki', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Tumma tila', - ], - - 'light' => [ - 'label' => 'Vaalea tila', - ], - - 'system' => [ - 'label' => 'Järjestelmän tila', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fi/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/fi/pages/auth/edit-profile.php deleted file mode 100644 index 6ff12130..00000000 --- a/vendor/filament/filament/resources/lang/fi/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profiili', - - 'form' => [ - - 'email' => [ - 'label' => 'Sähköpostiosoite', - ], - - 'name' => [ - 'label' => 'Nimi', - ], - - 'password' => [ - 'label' => 'Uusi salasana', - ], - - 'password_confirmation' => [ - 'label' => 'Vahvista salasana', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Tallenna muutokset', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Tallennettu', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Takaisin', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fi/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/fi/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index d7767777..00000000 --- a/vendor/filament/filament/resources/lang/fi/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Vahvista sähköpostiosoite', - - 'heading' => 'Vahvista sähköpostiosoite', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Lähetä uudelleen ', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Etkö saanut lähettämäämme sähköpostia?', - 'notification_sent' => 'Sähköpostiin :email on lähetetty viesti joka sisältää ohjeet sähköpostiosoitteen vahvistamiseen.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Sähköposti on lähetetty uudelleen.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Liian monta lähetyksen yritystä', - 'body' => 'Yritä uudelleen :seconds sekunnin kuluttua.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fi/pages/auth/login.php b/vendor/filament/filament/resources/lang/fi/pages/auth/login.php deleted file mode 100644 index 1aa0aec7..00000000 --- a/vendor/filament/filament/resources/lang/fi/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Kirjaudu', - - 'heading' => 'Kirjaudu tilillesi', - - 'actions' => [ - - 'register' => [ - 'before' => 'tai', - 'label' => 'luo tili', - ], - - 'request_password_reset' => [ - 'label' => 'Salasana hukassa?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Sähköpostiosoite', - ], - - 'password' => [ - 'label' => 'Salasana', - ], - - 'remember' => [ - 'label' => 'Muista minut', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Kirjaudu', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Kirjautuminen epäonnistui.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Liian monta kirjautumisyritystä', - 'body' => 'Yritä uudelleen :seconds sekunnin kuluttua.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fi/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/fi/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index d6dd28b9..00000000 --- a/vendor/filament/filament/resources/lang/fi/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Salasana hukassa?', - - 'heading' => 'Salasana hukassa?', - - 'actions' => [ - - 'login' => [ - 'label' => 'takaisin kirjautumiseen', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Sähköpostiosoite', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Lähetä sähköposti', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Liian monta pyyntöä', - 'body' => 'Yritä uudelleen :seconds sekunnin kuluttua.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fi/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/fi/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 89af0e6e..00000000 --- a/vendor/filament/filament/resources/lang/fi/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Palauta salasana', - - 'heading' => 'Palauta salasana', - - 'form' => [ - - 'email' => [ - 'label' => 'Sähköpostiosoite', - ], - - 'password' => [ - 'label' => 'Salasana', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Vahvista salasana', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Palauta salasana', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Liian monta palautuksen yritystä', - 'body' => 'Yritä uudelleen :seconds sekunnin kuluttua.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fi/pages/auth/register.php b/vendor/filament/filament/resources/lang/fi/pages/auth/register.php deleted file mode 100644 index e333e737..00000000 --- a/vendor/filament/filament/resources/lang/fi/pages/auth/register.php +++ /dev/null @@ -1,55 +0,0 @@ - 'Rekisteröi', - - 'heading' => 'Luo tili', - - 'actions' => [ - - 'login' => [ - 'before' => 'tai', - 'label' => 'kirjaudu tilillesi', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Sähköpostiosoite', - ], - - 'name' => [ - 'label' => 'Nimi', - ], - - 'password' => [ - 'label' => 'Salasana', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Vahvista salasana', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Luo tili', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Liian monta tilin luomisen yritystä', - 'body' => 'Yritä uudelleen :seconds sekunnin päästä.', - ], - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fi/pages/dashboard.php b/vendor/filament/filament/resources/lang/fi/pages/dashboard.php deleted file mode 100644 index dcc0b801..00000000 --- a/vendor/filament/filament/resources/lang/fi/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'Ohjausnäkymä', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'Suodatin', - - 'modal' => [ - - 'heading' => 'Suodatin', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'Käytä', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fi/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/fi/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 113560c0..00000000 --- a/vendor/filament/filament/resources/lang/fi/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Tallenna muutokset', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Tallennettu', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fi/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/fi/resources/pages/create-record.php deleted file mode 100644 index 57a93622..00000000 --- a/vendor/filament/filament/resources/lang/fi/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Uusi :label', - - 'breadcrumb' => 'Uusi', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Peruuta', - ], - - 'create' => [ - 'label' => 'Luo', - ], - - 'create_another' => [ - 'label' => 'Luo & luo toinen', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Luotu', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fi/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/fi/resources/pages/edit-record.php deleted file mode 100644 index 8e37d290..00000000 --- a/vendor/filament/filament/resources/lang/fi/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Muokkaa :label', - - 'breadcrumb' => 'Muokkaa', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Peruuta', - ], - - 'save' => [ - 'label' => 'Tallenna', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Muokkaa', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Tallennettu', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fi/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/fi/resources/pages/list-records.php deleted file mode 100644 index 3af06606..00000000 --- a/vendor/filament/filament/resources/lang/fi/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Lista', - -]; diff --git a/vendor/filament/filament/resources/lang/fi/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/fi/resources/pages/view-record.php deleted file mode 100644 index 31b1c90f..00000000 --- a/vendor/filament/filament/resources/lang/fi/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Näytä :label', - - 'breadcrumb' => 'Näytä', - - 'content' => [ - - 'tab' => [ - 'label' => 'Näytä', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fi/widgets/account-widget.php b/vendor/filament/filament/resources/lang/fi/widgets/account-widget.php deleted file mode 100644 index b31eba61..00000000 --- a/vendor/filament/filament/resources/lang/fi/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Kirjaudu ulos', - ], - - ], - - 'welcome' => 'Tervetuloa', - -]; diff --git a/vendor/filament/filament/resources/lang/fi/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/fi/widgets/filament-info-widget.php deleted file mode 100644 index 7184efe7..00000000 --- a/vendor/filament/filament/resources/lang/fi/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Ohjeet', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fr/global-search.php b/vendor/filament/filament/resources/lang/fr/global-search.php deleted file mode 100644 index d9dade3e..00000000 --- a/vendor/filament/filament/resources/lang/fr/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Recherche globale', - 'placeholder' => 'Rechercher', - ], - - 'no_results_message' => "Désolé, aucun résultat n'a été trouvé.", - -]; diff --git a/vendor/filament/filament/resources/lang/fr/layout.php b/vendor/filament/filament/resources/lang/fr/layout.php deleted file mode 100644 index dc18be21..00000000 --- a/vendor/filament/filament/resources/lang/fr/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => "Gérer l'abonnement", - ], - - 'logout' => [ - 'label' => 'Déconnexion', - ], - - 'open_database_notifications' => [ - 'label' => 'Ouvrir les notifications', - ], - - 'open_user_menu' => [ - 'label' => 'Menu utilisateur', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Réduire la barre latérale', - ], - - 'expand' => [ - 'label' => 'Agrandir la barre latérale', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Activer le mode sombre', - ], - - 'light' => [ - 'label' => 'Désactiver le mode sombre', - ], - - 'system' => [ - 'label' => 'Activer le thème système', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fr/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/fr/pages/auth/edit-profile.php deleted file mode 100644 index 342847bb..00000000 --- a/vendor/filament/filament/resources/lang/fr/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profil', - - 'form' => [ - - 'email' => [ - 'label' => 'Adresse Email', - ], - - 'name' => [ - 'label' => 'Nom', - ], - - 'password' => [ - 'label' => 'Nouveau mot de passe', - ], - - 'password_confirmation' => [ - 'label' => 'Confirmer le nouveau mot de passe', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Sauvegarder', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Sauvegardé', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'retour', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fr/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/fr/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 9cc4fae1..00000000 --- a/vendor/filament/filament/resources/lang/fr/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Vérifier votre adresse email', - - 'heading' => 'Vérifier votre adresse email', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Renvoyer', - ], - - ], - - 'messages' => [ - 'notification_not_received' => "Vous n'avez pas reçu l'email envoyé ?", - 'notification_sent' => "Nous vous avons envoyé un email à l'adresse :email contenant les informations pour vérifier votre adresse email.", - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Nous avons renvoyé un email', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Trop de tentatives de renvoi', - 'body' => 'Merci de réessayer dans :seconds secondes.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fr/pages/auth/login.php b/vendor/filament/filament/resources/lang/fr/pages/auth/login.php deleted file mode 100644 index 0cac0606..00000000 --- a/vendor/filament/filament/resources/lang/fr/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Connexion', - - 'heading' => 'Connectez-vous à votre compte', - - 'actions' => [ - - 'register' => [ - 'before' => 'ou', - 'label' => 'créer un compte', - ], - - 'request_password_reset' => [ - 'label' => 'Mot de passe oublié ?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Adresse e-mail', - ], - - 'password' => [ - 'label' => 'Mot de passe', - ], - - 'remember' => [ - 'label' => 'Se souvenir de moi', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Connexion', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Ces identifiants ne correspondent pas à nos enregistrements.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Tentatives de connexion trop nombreuses. Veuillez essayer de nouveau dans :seconds secondes.', - 'body' => 'Merci de réessayer dans :seconds secondes.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fr/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/fr/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index a2bfdad6..00000000 --- a/vendor/filament/filament/resources/lang/fr/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Réinitialiser votre mot de passe', - - 'heading' => 'Mot de passe oublié ?', - - 'actions' => [ - - 'login' => [ - 'label' => 'retour à la connexion', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Adresse Email', - ], - - 'actions' => [ - - 'request' => [ - 'label' => "Envoyer l'email", - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Trop de requêtes', - 'body' => 'Merci de réessayer dans :seconds secondes.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fr/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/fr/pages/auth/password-reset/reset-password.php deleted file mode 100644 index fff6e02f..00000000 --- a/vendor/filament/filament/resources/lang/fr/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Réinitialiser votre mot de passe', - - 'heading' => 'Réinitialiser votre mot de passe', - - 'form' => [ - - 'email' => [ - 'label' => 'Adresse Email', - ], - - 'password' => [ - 'label' => 'Mot de passe', - 'validation_attribute' => 'mot de passe', - ], - - 'password_confirmation' => [ - 'label' => 'Confirmer le mot de passe', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Réinitialiser le mot de passe', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Trop de tentatives de réinitialisation', - 'body' => 'Merci de réessayer dans :seconds secondes.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fr/pages/auth/register.php b/vendor/filament/filament/resources/lang/fr/pages/auth/register.php deleted file mode 100644 index 42d199cb..00000000 --- a/vendor/filament/filament/resources/lang/fr/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - "S'inscrire", - - 'heading' => "S'inscrire", - - 'actions' => [ - - 'login' => [ - 'before' => 'ou', - 'label' => 'connectez-vous à votre compte', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Adresse Email', - ], - - 'name' => [ - 'label' => 'Nom', - ], - - 'password' => [ - 'label' => 'Mot de passe', - 'validation_attribute' => 'mot de passe', - ], - - 'password_confirmation' => [ - 'label' => 'Confirmer le mot de passe', - ], - - 'actions' => [ - - 'register' => [ - 'label' => "S'inscrire", - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => "Trop de tentatives d'inscription", - 'body' => 'Merci de réessayer dans :seconds secondes.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fr/pages/dashboard.php b/vendor/filament/filament/resources/lang/fr/pages/dashboard.php deleted file mode 100644 index 2486538f..00000000 --- a/vendor/filament/filament/resources/lang/fr/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'Tableau de bord', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'Filtrer', - - 'modal' => [ - - 'heading' => 'Filtrer', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'Appliquer', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fr/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/fr/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 3b9a002c..00000000 --- a/vendor/filament/filament/resources/lang/fr/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Sauvegarder', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Sauvegardé', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fr/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/fr/resources/pages/create-record.php deleted file mode 100644 index 4e9cebda..00000000 --- a/vendor/filament/filament/resources/lang/fr/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Créer :label', - - 'breadcrumb' => 'Créer', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Annuler', - ], - - 'create' => [ - 'label' => 'Créer', - ], - - 'create_another' => [ - 'label' => 'Créer & Ajouter un autre', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Créé(e)', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fr/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/fr/resources/pages/edit-record.php deleted file mode 100644 index fd4b6a91..00000000 --- a/vendor/filament/filament/resources/lang/fr/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Modifier :label', - - 'breadcrumb' => 'Modifier', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Annuler', - ], - - 'save' => [ - 'label' => 'Sauvegarder', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Modifier', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Sauvegardé', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fr/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/fr/resources/pages/list-records.php deleted file mode 100644 index 51ebe1a5..00000000 --- a/vendor/filament/filament/resources/lang/fr/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Liste', - -]; diff --git a/vendor/filament/filament/resources/lang/fr/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/fr/resources/pages/view-record.php deleted file mode 100644 index 1b055eb3..00000000 --- a/vendor/filament/filament/resources/lang/fr/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Afficher :label', - - 'breadcrumb' => 'Afficher', - - 'content' => [ - - 'tab' => [ - 'label' => 'Afficher', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/fr/widgets/account-widget.php b/vendor/filament/filament/resources/lang/fr/widgets/account-widget.php deleted file mode 100644 index 5d88913a..00000000 --- a/vendor/filament/filament/resources/lang/fr/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Déconnexion', - ], - - ], - - 'welcome' => 'Bonjour', - -]; diff --git a/vendor/filament/filament/resources/lang/fr/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/fr/widgets/filament-info-widget.php deleted file mode 100644 index e5595044..00000000 --- a/vendor/filament/filament/resources/lang/fr/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Documentation', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/he/global-search.php b/vendor/filament/filament/resources/lang/he/global-search.php deleted file mode 100644 index bea0a81d..00000000 --- a/vendor/filament/filament/resources/lang/he/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'חיפוש גלובלי', - 'placeholder' => 'חיפוש', - ], - - 'no_results_message' => 'לא נמצאו תוצאות.', - -]; diff --git a/vendor/filament/filament/resources/lang/he/layout.php b/vendor/filament/filament/resources/lang/he/layout.php deleted file mode 100644 index 7815a850..00000000 --- a/vendor/filament/filament/resources/lang/he/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'rtl', - - 'actions' => [ - - 'billing' => [ - 'label' => 'נהל מנוי', - ], - - 'logout' => [ - 'label' => 'התנתק', - ], - - 'open_database_notifications' => [ - 'label' => 'פתח התראות', - ], - - 'open_user_menu' => [ - 'label' => 'תפריט משתמש', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'כווץ תפריט צד', - ], - - 'expand' => [ - 'label' => 'הרחב תפריט צד', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'הפעל מצב כהה', - ], - - 'light' => [ - 'label' => 'הפעל מצב מואר', - ], - - 'system' => [ - 'label' => 'הפעל ערכת נושא של המערכת', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/he/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/he/pages/auth/edit-profile.php deleted file mode 100644 index e020b202..00000000 --- a/vendor/filament/filament/resources/lang/he/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'פרופיל', - - 'form' => [ - - 'email' => [ - 'label' => 'כתובת דוא"ל', - ], - - 'name' => [ - 'label' => 'שם', - ], - - 'password' => [ - 'label' => 'סיסמה חדשה', - ], - - 'password_confirmation' => [ - 'label' => 'אימות סיסמה חדשה', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'שמור שינויים', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'נשמר', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'חזרה', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/he/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/he/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index afbde547..00000000 --- a/vendor/filament/filament/resources/lang/he/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'אמת את כתובת הדוא"ל שלך', - - 'heading' => 'אמת את כתובת הדוא"ל שלך', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'שלח שוב', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'לא קבלת את הדוא"ל ששלחנו?', - 'notification_sent' => 'שלחנו דואר אלקטרוני ל-:email המכיל הוראות כיצד לאמת את כתובת הדוא"ל שלך.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'שלחנו שוב את הדוא"ל.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'יותר מדי נסיונות של שליחה מחדש', - 'body' => 'אנא נסה שוב בעוד :seconds שניות.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/he/pages/auth/login.php b/vendor/filament/filament/resources/lang/he/pages/auth/login.php deleted file mode 100644 index 25f53a6c..00000000 --- a/vendor/filament/filament/resources/lang/he/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'התחברות', - - 'heading' => 'התחבר לחשבון שלך', - - 'actions' => [ - - 'register' => [ - 'before' => 'או', - 'label' => 'הירשם לחשבון', - ], - - 'request_password_reset' => [ - 'label' => 'שכחת את הסיסמה שלך?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'כתובת דואר אלקטרוני', - ], - - 'password' => [ - 'label' => 'סיסמה', - ], - - 'remember' => [ - 'label' => 'זכור אותי', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'התחבר', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'הפרטים שהזנת שגויים או לא קיימים.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'יותר מידי ניסיונות התחברות. אנא נסה שוב מאוחר יותר.', - 'body' => 'נסה שוב בעוד :seconds שניות.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/he/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/he/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 36676a0d..00000000 --- a/vendor/filament/filament/resources/lang/he/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'אפס את הסיסמה שלך', - - 'heading' => 'שכחת את הסיסמה שלך?', - - 'actions' => [ - - 'login' => [ - 'label' => 'חזרה להתחברות', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'כתובת דוא"ל', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'שלח אימייל', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'יותר מדי בקשות', - 'body' => 'נסה שוב בעוד :seconds שניות', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/he/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/he/pages/auth/password-reset/reset-password.php deleted file mode 100644 index f5fe28fd..00000000 --- a/vendor/filament/filament/resources/lang/he/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'אפס את הסיסמה שלך', - - 'heading' => 'אפס את הסיסמה שלך', - - 'form' => [ - - 'email' => [ - 'label' => 'כתובת דוא"ל', - ], - - 'password' => [ - 'label' => 'סיסמה', - 'validation_attribute' => 'סיסמה', - ], - - 'password_confirmation' => [ - 'label' => 'אימות סיסמה', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'איפוס סיסמה', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'יותר מדי נסיונות לאיפוס', - 'body' => 'נסה שוב בעוד :seconds שניות.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/he/pages/auth/register.php b/vendor/filament/filament/resources/lang/he/pages/auth/register.php deleted file mode 100644 index 1ac94615..00000000 --- a/vendor/filament/filament/resources/lang/he/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'הרשמה', - - 'heading' => 'הירשם', - - 'actions' => [ - - 'login' => [ - 'before' => 'או', - 'label' => 'התחבר לחשבונך', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'כתובת דוא"ל', - ], - - 'name' => [ - 'label' => 'שם', - ], - - 'password' => [ - 'label' => 'סיסמה', - 'validation_attribute' => 'סיסמה', - ], - - 'password_confirmation' => [ - 'label' => 'אמת סיסמה', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'הירשם', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'יותר מדי ניסיונות להרשמה', - 'body' => 'אנא נסה שוב בעוד :seconds שניות.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/he/pages/dashboard.php b/vendor/filament/filament/resources/lang/he/pages/dashboard.php deleted file mode 100644 index 8dd31c04..00000000 --- a/vendor/filament/filament/resources/lang/he/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'פאנל', - -]; diff --git a/vendor/filament/filament/resources/lang/he/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/he/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index bbf87479..00000000 --- a/vendor/filament/filament/resources/lang/he/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'שמור שינויים', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'נשמר', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/he/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/he/resources/pages/create-record.php deleted file mode 100644 index 91e76fc1..00000000 --- a/vendor/filament/filament/resources/lang/he/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'צור :label', - - 'breadcrumb' => 'חדש', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'ביטול', - ], - - 'create' => [ - 'label' => 'יצירה', - ], - - 'create_another' => [ - 'label' => 'צור ואז עוד אחד', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'נוצר', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/he/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/he/resources/pages/edit-record.php deleted file mode 100644 index 53ed8cb3..00000000 --- a/vendor/filament/filament/resources/lang/he/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'ערוך :label', - - 'breadcrumb' => 'עריכה', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'ביטול', - ], - - 'save' => [ - 'label' => 'שמור שינויים', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'עריכה', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'נשמר בהצלחה', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/he/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/he/resources/pages/list-records.php deleted file mode 100644 index c2393311..00000000 --- a/vendor/filament/filament/resources/lang/he/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'רשימה', - -]; diff --git a/vendor/filament/filament/resources/lang/he/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/he/resources/pages/view-record.php deleted file mode 100644 index a914cc1f..00000000 --- a/vendor/filament/filament/resources/lang/he/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'תצוגת :label', - - 'breadcrumb' => 'הצגה', - - 'content' => [ - - 'tab' => [ - 'label' => 'הצגה', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/he/widgets/account-widget.php b/vendor/filament/filament/resources/lang/he/widgets/account-widget.php deleted file mode 100644 index 71c663d4..00000000 --- a/vendor/filament/filament/resources/lang/he/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'התנתק', - ], - - ], - - 'welcome' => 'ברוך הבא', - -]; diff --git a/vendor/filament/filament/resources/lang/he/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/he/widgets/filament-info-widget.php deleted file mode 100644 index a0ccf076..00000000 --- a/vendor/filament/filament/resources/lang/he/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'תיעוד', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hi/global-search.php b/vendor/filament/filament/resources/lang/hi/global-search.php deleted file mode 100644 index cc9422f9..00000000 --- a/vendor/filament/filament/resources/lang/hi/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'वैश्विक खोज', - 'placeholder' => 'खोजें', - ], - - 'no_results_message' => 'कोई खोज परिणाम नहीं मिला।', - -]; diff --git a/vendor/filament/filament/resources/lang/hi/layout.php b/vendor/filament/filament/resources/lang/hi/layout.php deleted file mode 100644 index ff419277..00000000 --- a/vendor/filament/filament/resources/lang/hi/layout.php +++ /dev/null @@ -1,31 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'logout' => [ - 'label' => 'साइन आउट', - ], - - 'open_user_menu' => [ - 'label' => 'उपयोगकर्ता विकल्प सूची', - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'डार्क मोड टॉगल करें', - ], - - 'light' => [ - 'label' => 'लाइट मोड टॉगल करें', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hi/pages/auth/login.php b/vendor/filament/filament/resources/lang/hi/pages/auth/login.php deleted file mode 100644 index f34c4ba5..00000000 --- a/vendor/filament/filament/resources/lang/hi/pages/auth/login.php +++ /dev/null @@ -1,47 +0,0 @@ - 'लॉग इन', - - 'heading' => 'अपने अकाउंट में साइन इन करें', - - 'form' => [ - - 'email' => [ - 'label' => 'ईमेल', - ], - - 'password' => [ - 'label' => 'पासवर्ड', - ], - - 'remember' => [ - 'label' => 'मुझे याद रखना', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'लॉग इन', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'ये प्रमाण हमारे रिकॉर्ड से मेल नहीं खा रहे हैं।', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'बहुत सारे लॉगिन प्रयास। :seconds सेकंड में फिर से कोशिश करें।', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hi/pages/dashboard.php b/vendor/filament/filament/resources/lang/hi/pages/dashboard.php deleted file mode 100644 index 5ac3298d..00000000 --- a/vendor/filament/filament/resources/lang/hi/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'डैशबोर्ड', - -]; diff --git a/vendor/filament/filament/resources/lang/hi/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/hi/resources/pages/create-record.php deleted file mode 100644 index 618311d0..00000000 --- a/vendor/filament/filament/resources/lang/hi/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - ':label बनाएँ', - - 'breadcrumb' => 'बनाएँ', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'रद्द करें', - ], - - 'create' => [ - 'label' => 'बनाएँ', - ], - - 'create_another' => [ - 'label' => 'बनाएँ और एक और बनाएँ', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'बन गया', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hi/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/hi/resources/pages/edit-record.php deleted file mode 100644 index 3d55baad..00000000 --- a/vendor/filament/filament/resources/lang/hi/resources/pages/edit-record.php +++ /dev/null @@ -1,33 +0,0 @@ - ':label संपादित करें', - - 'breadcrumb' => 'संपादन', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'रद्द करें', - ], - - 'save' => [ - 'label' => 'सेव', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'सेव हो गया', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hi/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/hi/resources/pages/list-records.php deleted file mode 100644 index 6de1a4bc..00000000 --- a/vendor/filament/filament/resources/lang/hi/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'सूची', - -]; diff --git a/vendor/filament/filament/resources/lang/hi/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/hi/resources/pages/view-record.php deleted file mode 100644 index d31e7c91..00000000 --- a/vendor/filament/filament/resources/lang/hi/resources/pages/view-record.php +++ /dev/null @@ -1,9 +0,0 @@ - ':label देखें', - - 'breadcrumb' => 'देखें', - -]; diff --git a/vendor/filament/filament/resources/lang/hi/widgets/account-widget.php b/vendor/filament/filament/resources/lang/hi/widgets/account-widget.php deleted file mode 100644 index aa8bd21e..00000000 --- a/vendor/filament/filament/resources/lang/hi/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'साइन आउट', - ], - - ], - - 'welcome' => 'स्वागत', - -]; diff --git a/vendor/filament/filament/resources/lang/hi/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/hi/widgets/filament-info-widget.php deleted file mode 100644 index de9bdf22..00000000 --- a/vendor/filament/filament/resources/lang/hi/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'प्रलेखन', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hr/global-search.php b/vendor/filament/filament/resources/lang/hr/global-search.php deleted file mode 100644 index 9335023c..00000000 --- a/vendor/filament/filament/resources/lang/hr/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Globalno pretraživanje', - 'placeholder' => 'Pretraži', - ], - - 'no_results_message' => 'Nema pronađenih rezultata pretraživanja.', - -]; diff --git a/vendor/filament/filament/resources/lang/hr/layout.php b/vendor/filament/filament/resources/lang/hr/layout.php deleted file mode 100644 index e65a60a1..00000000 --- a/vendor/filament/filament/resources/lang/hr/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Upravljaj pretplatom', - ], - - 'logout' => [ - 'label' => 'Odjava', - ], - - 'open_database_notifications' => [ - 'label' => 'Otvori obavijesti', - ], - - 'open_user_menu' => [ - 'label' => 'Korisnički izbornik', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Skupi bočnu traku', - ], - - 'expand' => [ - 'label' => 'Proširi bočnu traku', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Omogući tamnu temu', - ], - - 'light' => [ - 'label' => 'Omogući svijetlu temu', - ], - - 'system' => [ - 'label' => 'Omogući sistemsku temu', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hr/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/hr/pages/auth/edit-profile.php deleted file mode 100644 index 8f1851a4..00000000 --- a/vendor/filament/filament/resources/lang/hr/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profil', - - 'form' => [ - - 'email' => [ - 'label' => 'Email adresa', - ], - - 'name' => [ - 'label' => 'Ime', - ], - - 'password' => [ - 'label' => 'Nova lozinka', - ], - - 'password_confirmation' => [ - 'label' => 'Potvrdi novu lozinku', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Spremi promjene', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Spremljeno', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Odustani', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hr/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/hr/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index f19e5398..00000000 --- a/vendor/filament/filament/resources/lang/hr/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Potvrdite svoju email adresu', - - 'heading' => 'Potvrdite svoju email adresu', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Ponovo pošalji', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Niste primili email koji smo poslali?', - 'notification_sent' => 'Poslali smo email na :email s uputama o tome kako potvrditi svoju email adresu.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Ponovno smo poslali email.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Previše pokušaja ponovnog slanja', - 'body' => 'Molim pokušajte ponovno za :seconds sekundi.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hr/pages/auth/login.php b/vendor/filament/filament/resources/lang/hr/pages/auth/login.php deleted file mode 100644 index 6c6c8961..00000000 --- a/vendor/filament/filament/resources/lang/hr/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Prijava', - - 'heading' => 'Prijavite se', - - 'actions' => [ - - 'register' => [ - 'before' => 'ili', - 'label' => 'se registrirajte za korisnički račun', - ], - - 'request_password_reset' => [ - 'label' => 'Zaboravili ste lozinku?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Email adresa', - ], - - 'password' => [ - 'label' => 'Lozinka', - ], - - 'remember' => [ - 'label' => 'Zapamti me', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Prijavite se', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Pogrešno korisničko ime ili lozinka', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Previše pokušaja prijave', - 'body' => 'Molim pokušajte ponovno za :seconds sekundi.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hr/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/hr/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 56c7bc2c..00000000 --- a/vendor/filament/filament/resources/lang/hr/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Resetirajte svoju lozinku', - - 'heading' => 'Zaboravili ste lozinku?', - - 'actions' => [ - - 'login' => [ - 'label' => 'natrag na login', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Email adresa', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Pošalji email', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Previše zahtjeva', - 'body' => 'Molim pokušajte ponovno za :seconds sekundi.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hr/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/hr/pages/auth/password-reset/reset-password.php deleted file mode 100644 index c02bf22d..00000000 --- a/vendor/filament/filament/resources/lang/hr/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Resetirajte svoju lozinku', - - 'heading' => 'Resetirajte svoju lozinku', - - 'form' => [ - - 'email' => [ - 'label' => 'Email adresa', - ], - - 'password' => [ - 'label' => 'Lozinka', - 'validation_attribute' => 'lozinka', - ], - - 'password_confirmation' => [ - 'label' => 'Potvrdi lozinku', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Resetiraj lozinku', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Previše pokušaja resetiranja.', - 'body' => 'Molim pokušajte ponovno za :seconds sekundi.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hr/pages/auth/register.php b/vendor/filament/filament/resources/lang/hr/pages/auth/register.php deleted file mode 100644 index 9a1eadef..00000000 --- a/vendor/filament/filament/resources/lang/hr/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Registracija', - - 'heading' => 'Registriraj se', - - 'actions' => [ - - 'login' => [ - 'before' => 'ili', - 'label' => 'se prijavi', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Email adresa', - ], - - 'name' => [ - 'label' => 'Ime', - ], - - 'password' => [ - 'label' => 'Lozinka', - 'validation_attribute' => 'lozinka', - ], - - 'password_confirmation' => [ - 'label' => 'Potvrdi lozinku', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Registriraj se', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Previše pokušaja registracije', - 'body' => 'Molim pokušajte ponovno za :seconds sekundi.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hr/pages/dashboard.php b/vendor/filament/filament/resources/lang/hr/pages/dashboard.php deleted file mode 100644 index ca32eec8..00000000 --- a/vendor/filament/filament/resources/lang/hr/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Nadzorna ploča', - -]; diff --git a/vendor/filament/filament/resources/lang/hr/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/hr/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 3fe4f877..00000000 --- a/vendor/filament/filament/resources/lang/hr/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Spremi promjene', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Spremljeno', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hr/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/hr/resources/pages/create-record.php deleted file mode 100644 index cbbc49d0..00000000 --- a/vendor/filament/filament/resources/lang/hr/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Napravi :label', - - 'breadcrumb' => 'Napravi', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Odustani', - ], - - 'create' => [ - 'label' => 'Napravi', - ], - - 'create_another' => [ - 'label' => 'Napravi i napravi drugi', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Napravljeno', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hr/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/hr/resources/pages/edit-record.php deleted file mode 100644 index 10a6a15e..00000000 --- a/vendor/filament/filament/resources/lang/hr/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Uredi :label', - - 'breadcrumb' => 'Uredi', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Odustani', - ], - - 'save' => [ - 'label' => 'Spremi promjene', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Uredi', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Spremljeno', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hr/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/hr/resources/pages/list-records.php deleted file mode 100644 index 3af06606..00000000 --- a/vendor/filament/filament/resources/lang/hr/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Lista', - -]; diff --git a/vendor/filament/filament/resources/lang/hr/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/hr/resources/pages/view-record.php deleted file mode 100644 index d3644a79..00000000 --- a/vendor/filament/filament/resources/lang/hr/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Pregled :label', - - 'breadcrumb' => 'Pregledaj', - - 'content' => [ - - 'tab' => [ - 'label' => 'Pregled', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hr/widgets/account-widget.php b/vendor/filament/filament/resources/lang/hr/widgets/account-widget.php deleted file mode 100644 index d459dcca..00000000 --- a/vendor/filament/filament/resources/lang/hr/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Odjava', - ], - - ], - - 'welcome' => 'Dobrodošli', - -]; diff --git a/vendor/filament/filament/resources/lang/hr/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/hr/widgets/filament-info-widget.php deleted file mode 100644 index d770c7e3..00000000 --- a/vendor/filament/filament/resources/lang/hr/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Dokumentacija', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hu/global-search.php b/vendor/filament/filament/resources/lang/hu/global-search.php deleted file mode 100644 index c8606931..00000000 --- a/vendor/filament/filament/resources/lang/hu/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Globális keresés', - 'placeholder' => 'Keresés', - ], - - 'no_results_message' => 'Nincs találat', - -]; diff --git a/vendor/filament/filament/resources/lang/hu/layout.php b/vendor/filament/filament/resources/lang/hu/layout.php deleted file mode 100644 index 6426ac7e..00000000 --- a/vendor/filament/filament/resources/lang/hu/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Előfizetések kezelése', - ], - - 'logout' => [ - 'label' => 'Kijelentkezés', - ], - - 'open_database_notifications' => [ - 'label' => 'Értesítések', - ], - - 'open_user_menu' => [ - 'label' => 'Felhasználói menü', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Oldalsáv elrejtése', - ], - - 'expand' => [ - 'label' => 'Oldalsáv megjelenítése', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Sötét mód bekapcsolása', - ], - - 'light' => [ - 'label' => 'Világos mód bekapcsolása', - ], - - 'system' => [ - 'label' => 'Rendszertéma követése', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hu/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/hu/pages/auth/edit-profile.php deleted file mode 100644 index 6dcaa65d..00000000 --- a/vendor/filament/filament/resources/lang/hu/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profil', - - 'form' => [ - - 'email' => [ - 'label' => 'Email cím', - ], - - 'name' => [ - 'label' => 'Név', - ], - - 'password' => [ - 'label' => 'Új jelszó', - ], - - 'password_confirmation' => [ - 'label' => 'Új jelszó megerősítése', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Mentés', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Mentve', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Mégsem', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hu/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/hu/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index be58d064..00000000 --- a/vendor/filament/filament/resources/lang/hu/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Erősítsd meg az email címed', - - 'heading' => 'Erősítsd meg az email címed', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Újraküldés', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Nem kaptad meg az emailt?', - 'notification_sent' => 'Küldtünk egy emailt a(z) :email címre, amely tartalmazza az email címed ellenőrzésére vonatkozó utasításokat.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Újra elküldtük az emailt.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Túl sok újraküldési kísérlet', - 'body' => 'Kérjük, hogy próbáld meg újra :second másodperc múlva.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hu/pages/auth/login.php b/vendor/filament/filament/resources/lang/hu/pages/auth/login.php deleted file mode 100644 index 147d574b..00000000 --- a/vendor/filament/filament/resources/lang/hu/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Bejelentkezés', - - 'heading' => 'Jelentkezz be a fiókodba', - - 'actions' => [ - - 'register' => [ - 'before' => 'vagy', - 'label' => 'regisztrálj egy fiókot', - ], - - 'request_password_reset' => [ - 'label' => 'Elfelejtetted a jelszavad?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Email cím', - ], - - 'password' => [ - 'label' => 'Jelszó', - ], - - 'remember' => [ - 'label' => 'Emlékezz rám', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Bejelentkezés', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Hibás email cím vagy jelszó.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Túl sok bejelentkezési kísérlet', - 'body' => 'Kérjük, próbáld meg újra :second másodperc múlva.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hu/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/hu/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index bb052a2e..00000000 --- a/vendor/filament/filament/resources/lang/hu/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Jelszó visszaállítása', - - 'heading' => 'Elfelejtetted a jelszavad?', - - 'actions' => [ - - 'login' => [ - 'label' => 'vissza a bejelentkezéshez', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Email cím', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Email küldése', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Túl sok próbálkozás', - 'body' => 'Kérjük, próbáld meg újra :second másodperc múlva.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hu/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/hu/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 599c3417..00000000 --- a/vendor/filament/filament/resources/lang/hu/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Jelszó visszaállítás', - - 'heading' => 'Jelszó visszaállítás', - - 'form' => [ - - 'email' => [ - 'label' => 'Email cím', - ], - - 'password' => [ - 'label' => 'Jelszó', - 'validation_attribute' => 'jelszó', - ], - - 'password_confirmation' => [ - 'label' => 'Jelszó megerősítése', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Jelszó visszaállítása', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Túl sok visszaállítási kísérlet', - 'body' => 'Kérjük, próbáld meg újra :second másodperc múlva.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hu/pages/auth/register.php b/vendor/filament/filament/resources/lang/hu/pages/auth/register.php deleted file mode 100644 index 1b574090..00000000 --- a/vendor/filament/filament/resources/lang/hu/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Regisztráció', - - 'heading' => 'Regisztrálj új fiókot', - - 'actions' => [ - - 'login' => [ - 'before' => 'vagy', - 'label' => 'jelentkezz be a fiókodba', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Email cím', - ], - - 'name' => [ - 'label' => 'Név', - ], - - 'password' => [ - 'label' => 'Jelszó', - 'validation_attribute' => 'jelszó', - ], - - 'password_confirmation' => [ - 'label' => 'Jelszó megerősítése', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Regisztrálok', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Túl sok regisztrációs kísérlet', - 'body' => 'Kérjük, próbáld meg újra :second másodperc múlva.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hu/pages/dashboard.php b/vendor/filament/filament/resources/lang/hu/pages/dashboard.php deleted file mode 100644 index ca27bff9..00000000 --- a/vendor/filament/filament/resources/lang/hu/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'Vezérlőpult', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'Szűrés', - - 'modal' => [ - - 'heading' => 'Szűrés', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'Alkalmazás', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hu/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/hu/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 259011e5..00000000 --- a/vendor/filament/filament/resources/lang/hu/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Változtatások mentése', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Mentve', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hu/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/hu/resources/pages/create-record.php deleted file mode 100644 index 486b20ed..00000000 --- a/vendor/filament/filament/resources/lang/hu/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Új :label', - - 'breadcrumb' => 'Létrehozás', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Mégsem', - ], - - 'create' => [ - 'label' => 'Létrehozás', - ], - - 'create_another' => [ - 'label' => 'Mentés és új létrehozása', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Létrehozva', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hu/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/hu/resources/pages/edit-record.php deleted file mode 100644 index 0097444d..00000000 --- a/vendor/filament/filament/resources/lang/hu/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - ':label szerkesztése', - - 'breadcrumb' => 'Szerkesztés', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Mégsem', - ], - - 'save' => [ - 'label' => 'Mentés', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Szerkesztés', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Mentve', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hu/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/hu/resources/pages/list-records.php deleted file mode 100644 index 3af06606..00000000 --- a/vendor/filament/filament/resources/lang/hu/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Lista', - -]; diff --git a/vendor/filament/filament/resources/lang/hu/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/hu/resources/pages/view-record.php deleted file mode 100644 index 950b1996..00000000 --- a/vendor/filament/filament/resources/lang/hu/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - ':label megtekintése', - - 'breadcrumb' => 'Megtekintés', - - 'content' => [ - - 'tab' => [ - 'label' => 'Megtekintés', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hu/widgets/account-widget.php b/vendor/filament/filament/resources/lang/hu/widgets/account-widget.php deleted file mode 100644 index f7a69f6d..00000000 --- a/vendor/filament/filament/resources/lang/hu/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Kijelentkezés', - ], - - ], - - 'welcome' => 'Üdvözlünk', - -]; diff --git a/vendor/filament/filament/resources/lang/hu/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/hu/widgets/filament-info-widget.php deleted file mode 100644 index c91e3590..00000000 --- a/vendor/filament/filament/resources/lang/hu/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Dokumentáció', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hy/global-search.php b/vendor/filament/filament/resources/lang/hy/global-search.php deleted file mode 100644 index 0208714b..00000000 --- a/vendor/filament/filament/resources/lang/hy/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Գլոբալ որոնում', - 'placeholder' => 'Որոնել', - ], - - 'no_results_message' => 'Որոնման արդյունքներ չեն գտնվել։', - -]; diff --git a/vendor/filament/filament/resources/lang/hy/layout.php b/vendor/filament/filament/resources/lang/hy/layout.php deleted file mode 100644 index fcafb172..00000000 --- a/vendor/filament/filament/resources/lang/hy/layout.php +++ /dev/null @@ -1,31 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'logout' => [ - 'label' => 'Դուրս գալ', - ], - - 'open_user_menu' => [ - 'label' => 'Օգտագործողի ընտրացանկ', - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Միացնել մութ ռեժիմը', - ], - - 'light' => [ - 'label' => 'Միացնել լուսային ռեժիմը', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hy/pages/auth/login.php b/vendor/filament/filament/resources/lang/hy/pages/auth/login.php deleted file mode 100644 index 13577342..00000000 --- a/vendor/filament/filament/resources/lang/hy/pages/auth/login.php +++ /dev/null @@ -1,47 +0,0 @@ - 'Մուտք', - - 'heading' => 'Մուտք գործեք ձեր հաշիվ', - - 'form' => [ - - 'email' => [ - 'label' => 'Էլ. հասցե', - ], - - 'password' => [ - 'label' => 'Գաղտնաբառ', - ], - - 'remember' => [ - 'label' => 'Հիշել', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Մուտք գործել', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Այս տվյալները չեն համապատասխանում մեր գրառումներին։', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Չափից շատ մուտք գործելու փորձեր։ Խնդրում ենք նորից փորձեք :seconds վայրկյանից։', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hy/pages/dashboard.php b/vendor/filament/filament/resources/lang/hy/pages/dashboard.php deleted file mode 100644 index d0a44105..00000000 --- a/vendor/filament/filament/resources/lang/hy/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Վահանակ', - -]; diff --git a/vendor/filament/filament/resources/lang/hy/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/hy/resources/pages/create-record.php deleted file mode 100644 index eab80351..00000000 --- a/vendor/filament/filament/resources/lang/hy/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Ստեղծել :label', - - 'breadcrumb' => 'Ստեղծել', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Չեղարկել', - ], - - 'create' => [ - 'label' => 'Ստեղծել', - ], - - 'create_another' => [ - 'label' => 'Ստեղծել և ստեղծել մեկ այլ', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Ստեղծվել է', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hy/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/hy/resources/pages/edit-record.php deleted file mode 100644 index 60295c7c..00000000 --- a/vendor/filament/filament/resources/lang/hy/resources/pages/edit-record.php +++ /dev/null @@ -1,33 +0,0 @@ - 'Խմբագրել :label', - - 'breadcrumb' => 'Խմբագրել', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Չեղարկել', - ], - - 'save' => [ - 'label' => 'Պահպանել', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Պահպանված է', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/hy/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/hy/resources/pages/list-records.php deleted file mode 100644 index 21f2919a..00000000 --- a/vendor/filament/filament/resources/lang/hy/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Ցանկ', - -]; diff --git a/vendor/filament/filament/resources/lang/hy/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/hy/resources/pages/view-record.php deleted file mode 100644 index 80785b17..00000000 --- a/vendor/filament/filament/resources/lang/hy/resources/pages/view-record.php +++ /dev/null @@ -1,9 +0,0 @@ - 'Դիտել :label', - - 'breadcrumb' => 'Դիտել', - -]; diff --git a/vendor/filament/filament/resources/lang/hy/widgets/account-widget.php b/vendor/filament/filament/resources/lang/hy/widgets/account-widget.php deleted file mode 100644 index a4ced00d..00000000 --- a/vendor/filament/filament/resources/lang/hy/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Դուրս գալ', - ], - - ], - - 'welcome' => 'Բարի գալուստ', - -]; diff --git a/vendor/filament/filament/resources/lang/hy/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/hy/widgets/filament-info-widget.php deleted file mode 100644 index b5d6daa9..00000000 --- a/vendor/filament/filament/resources/lang/hy/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Փաստաթղթեր', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/id/global-search.php b/vendor/filament/filament/resources/lang/id/global-search.php deleted file mode 100644 index 0b1a9c10..00000000 --- a/vendor/filament/filament/resources/lang/id/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Pencarian global', - 'placeholder' => 'Cari', - ], - - 'no_results_message' => 'Pencarian tidak ditemukan.', - -]; diff --git a/vendor/filament/filament/resources/lang/id/layout.php b/vendor/filament/filament/resources/lang/id/layout.php deleted file mode 100644 index f9ea0d5c..00000000 --- a/vendor/filament/filament/resources/lang/id/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Kelola langganan', - ], - - 'logout' => [ - 'label' => 'Keluar', - ], - - 'open_database_notifications' => [ - 'label' => 'Buka notifikasi', - ], - - 'open_user_menu' => [ - 'label' => 'Menu pengguna', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Persempit menu', - ], - - 'expand' => [ - 'label' => 'Perluas menu', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Mode Gelap', - ], - - 'light' => [ - 'label' => 'Mode Terang', - ], - - 'system' => [ - 'label' => 'Sesuai tema perangkat', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/id/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/id/pages/auth/edit-profile.php deleted file mode 100644 index ef252132..00000000 --- a/vendor/filament/filament/resources/lang/id/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profil', - - 'form' => [ - - 'email' => [ - 'label' => 'Alamat email', - ], - - 'name' => [ - 'label' => 'Nama', - ], - - 'password' => [ - 'label' => 'Kata sandi baru', - ], - - 'password_confirmation' => [ - 'label' => 'Konfirmasi kata sandi baru', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Simpan', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Disimpan', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'kembali', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/id/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/id/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index e5a05c16..00000000 --- a/vendor/filament/filament/resources/lang/id/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Verifikasi alamat email Anda', - - 'heading' => 'Verifikasi alamat email Anda', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Kirim ulang', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Belum menerima email?', - 'notification_sent' => 'Kami telah mengirimkan email ke :email yang berisikan instruksi cara verifikasi alamat email Anda.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Email telah dikirim ulang.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Terlalu banyak permintaan', - 'body' => 'Silakan coba lagi dalam :seconds detik.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/id/pages/auth/login.php b/vendor/filament/filament/resources/lang/id/pages/auth/login.php deleted file mode 100644 index 094bddc4..00000000 --- a/vendor/filament/filament/resources/lang/id/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Masuk', - - 'heading' => 'Masuk ke akun Anda', - - 'actions' => [ - - 'register' => [ - 'before' => 'atau', - 'label' => 'buat akun baru', - ], - - 'request_password_reset' => [ - 'label' => 'Lupa kata sandi?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Alamat Email', - ], - - 'password' => [ - 'label' => 'Kata sandi', - ], - - 'remember' => [ - 'label' => 'Ingat saya', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Masuk', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Kredensial yang diberikan tidak dapat ditemukan.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Terlalu banyak permintaan', - 'body' => 'Silakan coba lagi dalam :seconds detik.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/id/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/id/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 16dfef0b..00000000 --- a/vendor/filament/filament/resources/lang/id/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Atur ulang kata sandi', - - 'heading' => 'Lupa kata sandi?', - - 'actions' => [ - - 'login' => [ - 'label' => 'kembali ke halaman masuk', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Alamat email', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Kirim email', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Terlalu banyak permintaan', - 'body' => 'Silakan coba lagi dalam :seconds detik.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/id/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/id/pages/auth/password-reset/reset-password.php deleted file mode 100644 index abae5357..00000000 --- a/vendor/filament/filament/resources/lang/id/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Atur ulang kata sandi', - - 'heading' => 'Atur ulang kata sandi', - - 'form' => [ - - 'email' => [ - 'label' => 'Email address', - ], - - 'password' => [ - 'label' => 'Kata sandi baru', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Konfirmasi kata sandi baru', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Atur ulang kata sandi', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Terlalu banyak permintaan', - 'body' => 'Silakan coba lagi dalam :seconds detik.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/id/pages/auth/register.php b/vendor/filament/filament/resources/lang/id/pages/auth/register.php deleted file mode 100644 index fd5fc084..00000000 --- a/vendor/filament/filament/resources/lang/id/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Daftar', - - 'heading' => 'Buat akun', - - 'actions' => [ - - 'login' => [ - 'before' => 'atau', - 'label' => 'masuk ke akun yang sudah ada', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Alamat email', - ], - - 'name' => [ - 'label' => 'Nama', - ], - - 'password' => [ - 'label' => 'Kata sandi', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Konfirmasi kata sandi', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Buat akun', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Terlalu banyak permintaan', - 'body' => 'Silakan coba lagi dalam :seconds detik.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/id/pages/dashboard.php b/vendor/filament/filament/resources/lang/id/pages/dashboard.php deleted file mode 100644 index b4413122..00000000 --- a/vendor/filament/filament/resources/lang/id/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'Dasbor', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'Filter', - - 'modal' => [ - - 'heading' => 'Filter', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'Terapkan', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/id/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/id/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index ec31897e..00000000 --- a/vendor/filament/filament/resources/lang/id/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Simpan', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Disimpan', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/id/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/id/resources/pages/create-record.php deleted file mode 100644 index 9e1d6e58..00000000 --- a/vendor/filament/filament/resources/lang/id/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Buat :label', - - 'breadcrumb' => 'Buat', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Batal', - ], - - 'create' => [ - 'label' => 'Buat', - ], - - 'create_another' => [ - 'label' => 'Buat & buat lainnya', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Data berhasil dibuat', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/id/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/id/resources/pages/edit-record.php deleted file mode 100644 index a04da933..00000000 --- a/vendor/filament/filament/resources/lang/id/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Ubah :label', - - 'breadcrumb' => 'Ubah', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Batal', - ], - - 'save' => [ - 'label' => 'Simpan', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Ubah', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Data berhasil disimpan', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/id/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/id/resources/pages/list-records.php deleted file mode 100644 index 85aa2839..00000000 --- a/vendor/filament/filament/resources/lang/id/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Daftar', - -]; diff --git a/vendor/filament/filament/resources/lang/id/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/id/resources/pages/view-record.php deleted file mode 100644 index 372b7d4a..00000000 --- a/vendor/filament/filament/resources/lang/id/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Lihat :label', - - 'breadcrumb' => 'Lihat', - - 'content' => [ - - 'tab' => [ - 'label' => 'Lihat', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/id/widgets/account-widget.php b/vendor/filament/filament/resources/lang/id/widgets/account-widget.php deleted file mode 100644 index 02dc2d5a..00000000 --- a/vendor/filament/filament/resources/lang/id/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Keluar', - ], - - ], - - 'welcome' => 'Selamat Datang', - -]; diff --git a/vendor/filament/filament/resources/lang/id/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/id/widgets/filament-info-widget.php deleted file mode 100644 index 85d41319..00000000 --- a/vendor/filament/filament/resources/lang/id/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Dokumentasi', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/it/global-search.php b/vendor/filament/filament/resources/lang/it/global-search.php deleted file mode 100644 index 4c17fcfc..00000000 --- a/vendor/filament/filament/resources/lang/it/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Ricerca globale', - 'placeholder' => 'Ricerca', - ], - - 'no_results_message' => 'Nessun risultato trovato per la ricerca.', - -]; diff --git a/vendor/filament/filament/resources/lang/it/layout.php b/vendor/filament/filament/resources/lang/it/layout.php deleted file mode 100644 index 5d64ecaf..00000000 --- a/vendor/filament/filament/resources/lang/it/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Gestisci abbonamento', - ], - - 'logout' => [ - 'label' => 'Disconnetti', - ], - - 'open_database_notifications' => [ - 'label' => 'Apri notifiche', - ], - - 'open_user_menu' => [ - 'label' => 'Menu utente', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Comprimi sidebar', - ], - - 'expand' => [ - 'label' => 'Espandi sidebar', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Attiva tema scuro', - ], - - 'light' => [ - 'label' => 'Attiva tema chiaro', - ], - - 'system' => [ - 'label' => 'Attiva tema di sistema', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/it/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/it/pages/auth/edit-profile.php deleted file mode 100644 index a7183fc1..00000000 --- a/vendor/filament/filament/resources/lang/it/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profilo', - - 'form' => [ - - 'email' => [ - 'label' => 'Email', - ], - - 'name' => [ - 'label' => 'Nome', - ], - - 'password' => [ - 'label' => 'Nuova password', - ], - - 'password_confirmation' => [ - 'label' => 'Conferma nuova password', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Salva modifiche', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Salvato', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'indietro', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/it/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/it/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 218d11bd..00000000 --- a/vendor/filament/filament/resources/lang/it/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Verifica il tuo indirizzo email', - - 'heading' => 'Verifica il tuo indirizzo email', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Invia nuovamente', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Non hai ricevuto la mail?', - 'notification_sent' => 'Abbiamo inviato una mail a :email contenente le istruzioni su come verificare il tuo indirizzo email.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Abbiamo inviato nuovamente la mail.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Troppi tentativi di invio', - 'body' => 'Riprova tra :seconds secondi.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/it/pages/auth/login.php b/vendor/filament/filament/resources/lang/it/pages/auth/login.php deleted file mode 100644 index 2cff3789..00000000 --- a/vendor/filament/filament/resources/lang/it/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Accesso', - - 'heading' => 'Accedi', - - 'actions' => [ - - 'register' => [ - 'before' => 'o', - 'label' => 'crea un account', - ], - - 'request_password_reset' => [ - 'label' => 'Hai smarrito la password?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Email', - ], - - 'password' => [ - 'label' => 'Password', - ], - - 'remember' => [ - 'label' => 'Ricordami', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Accedi', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'I dati di accesso non sono corretti.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Troppi tentativi di accesso', - 'body' => 'Riprova tra :seconds secondi.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/it/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/it/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 0b819a2c..00000000 --- a/vendor/filament/filament/resources/lang/it/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Reimposta la tua password', - - 'heading' => 'Hai smarrito la password?', - - 'actions' => [ - - 'login' => [ - 'label' => 'torna al login', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Email', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Invia email', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Troppe richieste', - 'body' => 'Riprova tra :seconds secondi.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/it/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/it/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 97c383f2..00000000 --- a/vendor/filament/filament/resources/lang/it/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Reimposta la tua password', - - 'heading' => 'Reimposta la tua password', - - 'form' => [ - - 'email' => [ - 'label' => 'Email', - ], - - 'password' => [ - 'label' => 'Password', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Conferma password', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Reimposta password', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Troppi tentativi di reimpostazione', - 'body' => 'Riprova tra :seconds secondi.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/it/pages/auth/register.php b/vendor/filament/filament/resources/lang/it/pages/auth/register.php deleted file mode 100644 index c9530f30..00000000 --- a/vendor/filament/filament/resources/lang/it/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Registrazione', - - 'heading' => 'Registrati', - - 'actions' => [ - - 'login' => [ - 'before' => 'o', - 'label' => 'accedi al tuo account', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Email', - ], - - 'name' => [ - 'label' => 'Nome', - ], - - 'password' => [ - 'label' => 'Password', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Conferma password', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Registrati', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Troppi tentativi di registrazione', - 'body' => 'Riprova tra :seconds secondi.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/it/pages/dashboard.php b/vendor/filament/filament/resources/lang/it/pages/dashboard.php deleted file mode 100644 index ffb63155..00000000 --- a/vendor/filament/filament/resources/lang/it/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'Dashboard', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'Filtro', - - 'modal' => [ - - 'heading' => 'Filtro', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'Applica', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/it/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/it/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 1b2b01b0..00000000 --- a/vendor/filament/filament/resources/lang/it/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Salva modifiche', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Salvato', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/it/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/it/resources/pages/create-record.php deleted file mode 100644 index ac0c1991..00000000 --- a/vendor/filament/filament/resources/lang/it/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Nuovo :label', - - 'breadcrumb' => 'Nuovo', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Annulla', - ], - - 'create' => [ - 'label' => 'Salva', - ], - - 'create_another' => [ - 'label' => 'Salva & nuovo', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Salvato', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/it/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/it/resources/pages/edit-record.php deleted file mode 100644 index 582a6fc7..00000000 --- a/vendor/filament/filament/resources/lang/it/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Modifica :label', - - 'breadcrumb' => 'Modifica', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Annulla', - ], - - 'save' => [ - 'label' => 'Salva', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Modifica', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Salvato', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/it/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/it/resources/pages/list-records.php deleted file mode 100644 index 3af06606..00000000 --- a/vendor/filament/filament/resources/lang/it/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Lista', - -]; diff --git a/vendor/filament/filament/resources/lang/it/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/it/resources/pages/view-record.php deleted file mode 100644 index 3762cb55..00000000 --- a/vendor/filament/filament/resources/lang/it/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Guarda :label', - - 'breadcrumb' => 'Guarda', - - 'content' => [ - - 'tab' => [ - 'label' => 'Guarda', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/it/widgets/account-widget.php b/vendor/filament/filament/resources/lang/it/widgets/account-widget.php deleted file mode 100644 index 2ab5ae34..00000000 --- a/vendor/filament/filament/resources/lang/it/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Disconnetti', - ], - - ], - - 'welcome' => 'Benvenuto', - -]; diff --git a/vendor/filament/filament/resources/lang/it/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/it/widgets/filament-info-widget.php deleted file mode 100644 index 9e48cca2..00000000 --- a/vendor/filament/filament/resources/lang/it/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Documentazione', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ja/global-search.php b/vendor/filament/filament/resources/lang/ja/global-search.php deleted file mode 100644 index 25bb9058..00000000 --- a/vendor/filament/filament/resources/lang/ja/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'グローバル検索', - 'placeholder' => '検索', - ], - - 'no_results_message' => '検索結果が見つかりませんでした。', - -]; diff --git a/vendor/filament/filament/resources/lang/ja/layout.php b/vendor/filament/filament/resources/lang/ja/layout.php deleted file mode 100644 index 041890aa..00000000 --- a/vendor/filament/filament/resources/lang/ja/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'サブスクリプションを管理', - ], - - 'logout' => [ - 'label' => 'ログアウト', - ], - - 'open_database_notifications' => [ - 'label' => 'お知らせを確認', - ], - - 'open_user_menu' => [ - 'label' => 'ユーザーメニュー', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'サイドバーを折り畳む', - ], - - 'expand' => [ - 'label' => 'サイドバーを展開する', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'ダークモードに切り替える', - ], - - 'light' => [ - 'label' => 'ライトモードに切り替える', - ], - - 'system' => [ - 'label' => 'システムテーマを有効にする', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ja/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/ja/pages/auth/edit-profile.php deleted file mode 100644 index e8c1b322..00000000 --- a/vendor/filament/filament/resources/lang/ja/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'プロフィール', - - 'form' => [ - - 'email' => [ - 'label' => 'メールアドレス', - ], - - 'name' => [ - 'label' => '名前', - ], - - 'password' => [ - 'label' => '新しいパスワード', - ], - - 'password_confirmation' => [ - 'label' => '新しいパスワードの確認', - ], - - 'actions' => [ - - 'save' => [ - 'label' => '変更を保存', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => '保存しました', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'キャンセル', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ja/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/ja/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 013db7ab..00000000 --- a/vendor/filament/filament/resources/lang/ja/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'メールアドレスの確認', - - 'heading' => 'メールアドレスの確認', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => '再送する', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'お送りしたメールが届いていませんか?', - 'notification_sent' => 'メールアドレスの確認方法を記載したメールを :email へ送信しました。', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'メールを再送しました。', - ], - - 'notification_resend_throttled' => [ - 'title' => '再送が多すぎます', - 'body' => ':seconds 秒後に再試行してください。', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ja/pages/auth/login.php b/vendor/filament/filament/resources/lang/ja/pages/auth/login.php deleted file mode 100644 index a06dfec7..00000000 --- a/vendor/filament/filament/resources/lang/ja/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'ログイン', - - 'heading' => 'アカウントにログイン', - - 'actions' => [ - - 'register' => [ - 'before' => 'または', - 'label' => 'アカウントを登録', - ], - - 'request_password_reset' => [ - 'label' => 'パスワードをお忘れですか?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'メールアドレス', - ], - - 'password' => [ - 'label' => 'パスワード', - ], - - 'remember' => [ - 'label' => 'ログインしたままにする', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'ログイン', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => '認証に失敗しました。', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'ログインの試行回数が多すぎます', - 'body' => ':seconds 秒後に再試行してください。', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ja/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/ja/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 11f44ad2..00000000 --- a/vendor/filament/filament/resources/lang/ja/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'パスワードリセット', - - 'heading' => 'パスワードをお忘れですか?', - - 'actions' => [ - - 'login' => [ - 'label' => 'ログインへ戻る', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'メールアドレス', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'メールを送信', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'リクエストが多すぎます', - 'body' => ':seconds 秒後に再試行してください。', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ja/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/ja/pages/auth/password-reset/reset-password.php deleted file mode 100644 index fdcf93dc..00000000 --- a/vendor/filament/filament/resources/lang/ja/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'パスワードリセット', - - 'heading' => 'パスワードをリセット', - - 'form' => [ - - 'email' => [ - 'label' => 'メールアドレス', - ], - - 'password' => [ - 'label' => 'パスワード', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'パスワードの確認', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'パスワードをリセット', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'リセットの試行回数が多すぎます', - 'body' => ':seconds 秒後に再試行してください。', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ja/pages/auth/register.php b/vendor/filament/filament/resources/lang/ja/pages/auth/register.php deleted file mode 100644 index 8b1fee74..00000000 --- a/vendor/filament/filament/resources/lang/ja/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'アカウント登録', - - 'heading' => 'アカウントを登録', - - 'actions' => [ - - 'login' => [ - 'before' => 'または', - 'label' => 'アカウントにログイン', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'メールアドレス', - ], - - 'name' => [ - 'label' => '名前', - ], - - 'password' => [ - 'label' => 'パスワード', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'パスワードの確認', - ], - - 'actions' => [ - - 'register' => [ - 'label' => '登録', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => '登録の試行回数が多すぎます', - 'body' => ':seconds 秒後に再試行してください。', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ja/pages/dashboard.php b/vendor/filament/filament/resources/lang/ja/pages/dashboard.php deleted file mode 100644 index 49799310..00000000 --- a/vendor/filament/filament/resources/lang/ja/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'ダッシュボード', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'フィルター', - - 'modal' => [ - - 'heading' => 'フィルター', - - 'actions' => [ - - 'apply' => [ - - 'label' => '適用', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ja/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/ja/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index c5548d5e..00000000 --- a/vendor/filament/filament/resources/lang/ja/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => '変更を保存', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => '保存しました', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ja/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/ja/resources/pages/create-record.php deleted file mode 100644 index 1ba1590a..00000000 --- a/vendor/filament/filament/resources/lang/ja/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - ':label 作成', - - 'breadcrumb' => '作成', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'キャンセル', - ], - - 'create' => [ - 'label' => '作成', - ], - - 'create_another' => [ - 'label' => '保存して、続けて作成', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => '作成しました', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ja/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/ja/resources/pages/edit-record.php deleted file mode 100644 index 5b5e4d01..00000000 --- a/vendor/filament/filament/resources/lang/ja/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - ':label 編集', - - 'breadcrumb' => '編集', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'キャンセル', - ], - - 'save' => [ - 'label' => '保存', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => '編集', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => '保存しました', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ja/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/ja/resources/pages/list-records.php deleted file mode 100644 index 39a7736a..00000000 --- a/vendor/filament/filament/resources/lang/ja/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - '一覧', - -]; diff --git a/vendor/filament/filament/resources/lang/ja/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/ja/resources/pages/view-record.php deleted file mode 100644 index de14c57b..00000000 --- a/vendor/filament/filament/resources/lang/ja/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - ':label 詳細', - - 'breadcrumb' => '詳細', - - 'content' => [ - - 'tab' => [ - 'label' => '詳細', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ja/widgets/account-widget.php b/vendor/filament/filament/resources/lang/ja/widgets/account-widget.php deleted file mode 100644 index c7fbe003..00000000 --- a/vendor/filament/filament/resources/lang/ja/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'ログアウト', - ], - - ], - - 'welcome' => 'ようこそ', - -]; diff --git a/vendor/filament/filament/resources/lang/ja/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/ja/widgets/filament-info-widget.php deleted file mode 100644 index f45d2683..00000000 --- a/vendor/filament/filament/resources/lang/ja/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'ドキュメント', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/km/global-search.php b/vendor/filament/filament/resources/lang/km/global-search.php deleted file mode 100644 index 4b6d22f7..00000000 --- a/vendor/filament/filament/resources/lang/km/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'ការស្វែងរកក្នុងប្រព័ន្ធទូទៅ', - 'placeholder' => 'ស្វែងរក', - ], - - 'no_results_message' => 'រកមិនឃើញលទ្ធផលនៃការស្វែងរកទេ។', - -]; diff --git a/vendor/filament/filament/resources/lang/km/layout.php b/vendor/filament/filament/resources/lang/km/layout.php deleted file mode 100644 index 56971d73..00000000 --- a/vendor/filament/filament/resources/lang/km/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'គ្រប់គ្រងការជាវ', - ], - - 'logout' => [ - 'label' => 'ចាកចេញពីកម្មវិធីប្រព័ន្ធ', - ], - - 'open_database_notifications' => [ - 'label' => 'បើកការជូនដំណឹង', - ], - - 'open_user_menu' => [ - 'label' => 'ម៉ឺនុយអ្នកប្រើ', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'បង្រួមរបារចំហៀង', - ], - - 'expand' => [ - 'label' => 'ពង្រីករបារចំហៀង', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'បើកដំណើរការរចនាបទងងឹត', - ], - - 'light' => [ - 'label' => 'បើករចនាបទពន្លឺ', - ], - - 'system' => [ - 'label' => 'បើករចនាបទប្រព័ន្ធ', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/km/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/km/pages/auth/edit-profile.php deleted file mode 100644 index 2cbdc59a..00000000 --- a/vendor/filament/filament/resources/lang/km/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'ប្រវត្តិរូប', - - 'form' => [ - - 'email' => [ - 'label' => 'អាស័យដ្ធានអ៊ីម៉ែល', - ], - - 'name' => [ - 'label' => 'ឈ្មោះ', - ], - - 'password' => [ - 'label' => 'ពាក្យសម្ងាត់ថ្មី', - ], - - 'password_confirmation' => [ - 'label' => 'បញ្ជាក់ពាក្យសម្ងាត់ថ្មី', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'រក្សាទុកការផ្លាស់ប្តូរ', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'បានរក្សាទុក', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'លុបចោល', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/km/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/km/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 7c72a154..00000000 --- a/vendor/filament/filament/resources/lang/km/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'ផ្ទៀងផ្ទាត់អាសយដ្ឋានអ៊ីមែលរបស់អ្នក', - - 'heading' => 'ផ្ទៀងផ្ទាត់អាសយដ្ឋានអ៊ីមែលរបស់អ្នក', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'ផ្ញើឡើងវិញ', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'មិនបានទទួលអ៊ីមែលដែលយើងផ្ញើទេ?', - 'notification_sent' => 'យើងបានផ្ញើអ៊ីមែលទៅ​​ :email ដែលមានការណែនាំអំពីរបៀបផ្ទៀងផ្ទាត់អាសយដ្ឋានអ៊ីមែលរបស់អ្នក។.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'យើងបានផ្ញើអ៊ីមែលឡើងវិញ។.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'ការព្យាយាមផ្ញើឡើងវិញច្រើនពេក', - 'body' => 'សូមព្យាយាមម្តងទៀតក្នុងរយៈពេល :seconds វិនាទី។.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/km/pages/auth/login.php b/vendor/filament/filament/resources/lang/km/pages/auth/login.php deleted file mode 100644 index ba1c5184..00000000 --- a/vendor/filament/filament/resources/lang/km/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'ចូលក្នូងប្រព័ន្ធ', - - 'heading' => 'ចូលទៅក្នុងគណនីរបស់អ្នក', - - 'actions' => [ - - 'register' => [ - 'before' => '​ឬ', - 'label' => 'ចុះឈ្មោះសម្រាប់គណនី', - ], - - 'request_password_reset' => [ - 'label' => 'ភ្លេចពាក្យសម្ងាត់របស់អ្នក?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'អាស័យ​ដ្ឋាន​អ៊ី​ម៉េ​ល', - ], - - 'password' => [ - 'label' => 'ពាក្យសម្ងាត់', - ], - - 'remember' => [ - 'label' => 'ចងចាំក្នុងប្រព័ន្ធនេះ', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'ចុះឈ្មោះចូល', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'លិខិតសម្គាល់ទាំងនេះមិនត្រូវគ្នានឹងកំណត់ត្រាក្នុងប្រព័ន្ធរបស់យើងទេ។', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'ការព្យាយាមចូលប្រើប្រាស់ច្រើនដងពេក', - 'body' => 'សូមព្យាយាមម្តងទៀតក្នុងរយៈពេល :seconds វិនាទី។.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/km/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/km/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index ce4d08ed..00000000 --- a/vendor/filament/filament/resources/lang/km/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'កំណត់ពាក្យសម្ងាត់របស់អ្នកឡើងវិញ', - - 'heading' => 'ភ្លេចពាក្យសម្ងាត់របស់អ្នក?', - - 'actions' => [ - - 'login' => [ - 'label' => 'ត្រលប់ទៅការចូលប្រើប្រាស់', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'អាស័យដ្ធានអ៊ីម៉ែល', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'ផ្ញើអ៊ីមែល', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'សំណើច្រើនពេក', - 'body' => 'សូមព្យាយាមម្តងទៀតក្នុងរយៈពេល :seconds វិនាទី។.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/km/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/km/pages/auth/password-reset/reset-password.php deleted file mode 100644 index d73bb39d..00000000 --- a/vendor/filament/filament/resources/lang/km/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'កំណត់ពាក្យសម្ងាត់របស់អ្នកឡើងវិញ', - - 'heading' => 'កំណត់ពាក្យសម្ងាត់របស់អ្នកឡើងវិញ', - - 'form' => [ - - 'email' => [ - 'label' => 'អាស័យដ្ធានអ៊ីម៉ែល', - ], - - 'password' => [ - 'label' => 'ពាក្យសម្ងាត់', - 'validation_attribute' => 'ពាក្យសម្ងាត់', - ], - - 'password_confirmation' => [ - 'label' => 'បញ្ជាក់ពាក្យសម្ងាត់', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'កំណត់ពាក្យសម្ងាត់ឡើងវិញ', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'ការព្យាយាមកំណត់ឡើងវិញច្រើនដងពេក', - 'body' => 'សូមព្យាយាមម្តងទៀតក្នុងរយៈពេល :seconds វិនាទី។.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/km/pages/auth/register.php b/vendor/filament/filament/resources/lang/km/pages/auth/register.php deleted file mode 100644 index 0fc777c8..00000000 --- a/vendor/filament/filament/resources/lang/km/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'ចុះឈ្មោះ', - - 'heading' => 'ចុះឈ្មោះ', - - 'actions' => [ - - 'login' => [ - 'before' => '​ឬ', - 'label' => 'ចូលគណនីរបស់អ្នក', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'អាស័យដ្ធានអ៊ីម៉ែល', - ], - - 'name' => [ - 'label' => 'ឈ្មោះ', - ], - - 'password' => [ - 'label' => 'ពាក្យសម្ងាត់', - 'validation_attribute' => 'ពាក្យសម្ងាត់', - ], - - 'password_confirmation' => [ - 'label' => 'បញ្ជាក់ពាក្យសម្ងាត់', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'ចុះឈ្មោះ', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'ការព្យាយាមចុះឈ្មោះច្រើនដងពេក', - 'body' => 'សូមព្យាយាមម្តងទៀតក្នុងរយៈពេល :seconds វិនាទី។.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/km/pages/dashboard.php b/vendor/filament/filament/resources/lang/km/pages/dashboard.php deleted file mode 100644 index f9ddabca..00000000 --- a/vendor/filament/filament/resources/lang/km/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'ផ្ទាំងគ្រប់គ្រងទូទៅ', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'តម្រង', - - 'modal' => [ - - 'heading' => 'តម្រង', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'អនុវត្ត', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/km/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/km/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 7cef8aa7..00000000 --- a/vendor/filament/filament/resources/lang/km/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'រក្សាទុកការផ្លាស់ប្តូរ', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'បានរក្សាទុក', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/km/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/km/resources/pages/create-record.php deleted file mode 100644 index 5514ab11..00000000 --- a/vendor/filament/filament/resources/lang/km/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'បង្កើត :label', - - 'breadcrumb' => 'បង្កើត', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'ចាកចេញ', - ], - - 'create' => [ - 'label' => 'បង្កើត', - ], - - 'create_another' => [ - 'label' => 'បង្កើត & បង្កើតឡើងវិញ', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'បានបង្កើត :label បានជោគជ័យ', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/km/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/km/resources/pages/edit-record.php deleted file mode 100644 index 448f16e9..00000000 --- a/vendor/filament/filament/resources/lang/km/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'កែប្រែ :label', - - 'breadcrumb' => 'កែប្រែ', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'បោះបង់', - ], - - 'save' => [ - 'label' => 'រក្សាទុក', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'កែប្រែ', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'បានរក្សាទុក', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/km/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/km/resources/pages/list-records.php deleted file mode 100644 index b9ae8abe..00000000 --- a/vendor/filament/filament/resources/lang/km/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'បញ្ជី', - -]; diff --git a/vendor/filament/filament/resources/lang/km/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/km/resources/pages/view-record.php deleted file mode 100644 index 23e68561..00000000 --- a/vendor/filament/filament/resources/lang/km/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'ស្លាក​សញ្ញា :label', - - 'breadcrumb' => 'ស្លាក​សញ្ញា', - - 'content' => [ - - 'tab' => [ - 'label' => 'ស្លាក​សញ្ញា', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/km/widgets/account-widget.php b/vendor/filament/filament/resources/lang/km/widgets/account-widget.php deleted file mode 100644 index 70be7bd5..00000000 --- a/vendor/filament/filament/resources/lang/km/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'ចាកចេញពីកម្មវិធីប្រព័ន្ធ', - ], - - ], - - 'welcome' => 'សូមស្វាគមន៍', - -]; diff --git a/vendor/filament/filament/resources/lang/km/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/km/widgets/filament-info-widget.php deleted file mode 100644 index 2e6780a9..00000000 --- a/vendor/filament/filament/resources/lang/km/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'ចូលមើលឯកសារ', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ko/global-search.php b/vendor/filament/filament/resources/lang/ko/global-search.php deleted file mode 100644 index abed9fb4..00000000 --- a/vendor/filament/filament/resources/lang/ko/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => '전체 검색', - 'placeholder' => '검색', - ], - - 'no_results_message' => '검색 결과가 없습니다.', - -]; diff --git a/vendor/filament/filament/resources/lang/ko/layout.php b/vendor/filament/filament/resources/lang/ko/layout.php deleted file mode 100644 index 4a82fc40..00000000 --- a/vendor/filament/filament/resources/lang/ko/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => '구독 관리', - ], - - 'logout' => [ - 'label' => '로그아웃', - ], - - 'open_database_notifications' => [ - 'label' => '알림 열기', - ], - - 'open_user_menu' => [ - 'label' => '사용자 메뉴', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => '사이드바 접기', - ], - - 'expand' => [ - 'label' => '사이드바 펼치기', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => '다크 모드', - ], - - 'light' => [ - 'label' => '라이트 모드', - ], - - 'system' => [ - 'label' => '시스템 테마 사용', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ko/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/ko/pages/auth/edit-profile.php deleted file mode 100644 index 620ee696..00000000 --- a/vendor/filament/filament/resources/lang/ko/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - '프로필', - - 'form' => [ - - 'email' => [ - 'label' => '이메일', - ], - - 'name' => [ - 'label' => '이름', - ], - - 'password' => [ - 'label' => '새 비밀번호', - ], - - 'password_confirmation' => [ - 'label' => '새 비밀번호 확인', - ], - - 'actions' => [ - - 'save' => [ - 'label' => '변경 사항 저장', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => '저장 완료', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => '취소', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ko/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/ko/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 7088f1da..00000000 --- a/vendor/filament/filament/resources/lang/ko/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - '이메일 주소 확인', - - 'heading' => '이메일 주소 확인', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => '재전송', - ], - - ], - - 'messages' => [ - 'notification_not_received' => '이메일을 받지 못하셨나요?', - 'notification_sent' => '이메일 인증에 대한 안내가 포함된 이메일을 :email로 보냈습니다.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => '이메일을 다시 보냈습니다.', - ], - - 'notification_resend_throttled' => [ - 'title' => '너무 많이 시도했습니다', - 'body' => ':seconds 초 후에 다시 시도해 주세요.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ko/pages/auth/login.php b/vendor/filament/filament/resources/lang/ko/pages/auth/login.php deleted file mode 100644 index d0ee441d..00000000 --- a/vendor/filament/filament/resources/lang/ko/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - '로그인', - - 'heading' => '로그인하세요', - - 'actions' => [ - - 'register' => [ - 'before' => '또는', - 'label' => '회원 가입', - ], - - 'request_password_reset' => [ - 'label' => '비밀번호를 잊어버리셨나요?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => '이메일', - ], - - 'password' => [ - 'label' => '비밀번호', - ], - - 'remember' => [ - 'label' => '기억하기', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => '로그인', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => '일치하는 계정이 없습니다.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => '너무 많이 시도했습니다', - 'body' => ':seconds 초 후에 다시 시도해 주세요.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ko/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/ko/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index d97a302f..00000000 --- a/vendor/filament/filament/resources/lang/ko/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - '비밀번호 재설정', - - 'heading' => '비밀번호를 잊어버리셨나요?', - - 'actions' => [ - - 'login' => [ - 'label' => '로그인으로 돌아가기', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => '이메일', - ], - - 'actions' => [ - - 'request' => [ - 'label' => '이메일 전송', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => '너무 많이 시도했습니다', - 'body' => ':seconds 초 후에 다시 시도해 주세요.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ko/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/ko/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 6e34a7d6..00000000 --- a/vendor/filament/filament/resources/lang/ko/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - '비밀번호 재설정', - - 'heading' => '비밀번호 재설정', - - 'form' => [ - - 'email' => [ - 'label' => '이메일', - ], - - 'password' => [ - 'label' => '비밀번호', - 'validation_attribute' => '비밀번호', - ], - - 'password_confirmation' => [ - 'label' => '비밀번호 확인', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => '비밀번호 재설정', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => '너무 많이 시도했습니다', - 'body' => ':seconds 초 후에 다시 시도해 주세요.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ko/pages/auth/register.php b/vendor/filament/filament/resources/lang/ko/pages/auth/register.php deleted file mode 100644 index f6bb169f..00000000 --- a/vendor/filament/filament/resources/lang/ko/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - '회원가입', - - 'heading' => '회원가입', - - 'actions' => [ - - 'login' => [ - 'before' => '또는', - 'label' => '기존 계정으로 로그인', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => '이메일', - ], - - 'name' => [ - 'label' => '이름', - ], - - 'password' => [ - 'label' => '비밀번호', - 'validation_attribute' => '비밀번호', - ], - - 'password_confirmation' => [ - 'label' => '비밀번호 확인', - ], - - 'actions' => [ - - 'register' => [ - 'label' => '회원가입', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => '너무 많이 시도했습니다', - 'body' => ':seconds 초 후에 다시 시도해 주세요.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ko/pages/dashboard.php b/vendor/filament/filament/resources/lang/ko/pages/dashboard.php deleted file mode 100644 index fb9e3339..00000000 --- a/vendor/filament/filament/resources/lang/ko/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - '대시보드', - -]; diff --git a/vendor/filament/filament/resources/lang/ko/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/ko/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 23ab2347..00000000 --- a/vendor/filament/filament/resources/lang/ko/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => '변경 사항 저장', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => '저장 완료', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ko/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/ko/resources/pages/create-record.php deleted file mode 100644 index 130cc38a..00000000 --- a/vendor/filament/filament/resources/lang/ko/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - ':label 만들기', - - 'breadcrumb' => '만들기', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => '취소', - ], - - 'create' => [ - 'label' => '만들기', - ], - - 'create_another' => [ - 'label' => '계속 만들기', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => '생성 완료', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ko/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/ko/resources/pages/edit-record.php deleted file mode 100644 index 60dc615d..00000000 --- a/vendor/filament/filament/resources/lang/ko/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - ':label 수정', - - 'breadcrumb' => '수정', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => '취소', - ], - - 'save' => [ - 'label' => '저장', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => '수정', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => '저장 완료', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ko/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/ko/resources/pages/list-records.php deleted file mode 100644 index bedf2e1e..00000000 --- a/vendor/filament/filament/resources/lang/ko/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - '목록', - -]; diff --git a/vendor/filament/filament/resources/lang/ko/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/ko/resources/pages/view-record.php deleted file mode 100644 index 7c54bdd5..00000000 --- a/vendor/filament/filament/resources/lang/ko/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - ':label 보기', - - 'breadcrumb' => '보기', - - 'content' => [ - - 'tab' => [ - 'label' => '보기', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ko/widgets/account-widget.php b/vendor/filament/filament/resources/lang/ko/widgets/account-widget.php deleted file mode 100644 index 27fef145..00000000 --- a/vendor/filament/filament/resources/lang/ko/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => '로그아웃', - ], - - ], - - 'welcome' => '어서오세요', - -]; diff --git a/vendor/filament/filament/resources/lang/ko/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/ko/widgets/filament-info-widget.php deleted file mode 100644 index 3d522dd7..00000000 --- a/vendor/filament/filament/resources/lang/ko/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => '도큐먼트', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ku/global-search.php b/vendor/filament/filament/resources/lang/ku/global-search.php deleted file mode 100644 index b69f0f65..00000000 --- a/vendor/filament/filament/resources/lang/ku/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'گەڕانی گشتی', - 'placeholder' => 'گەڕان', - ], - - 'no_results_message' => 'هیچ ئەنجامێک بۆ گەڕانەکەت نەدۆزرایەوە.', - -]; diff --git a/vendor/filament/filament/resources/lang/ku/layout.php b/vendor/filament/filament/resources/lang/ku/layout.php deleted file mode 100644 index 1ba52fa5..00000000 --- a/vendor/filament/filament/resources/lang/ku/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'rtl', - - 'actions' => [ - - 'billing' => [ - 'label' => 'بەشدارییەکان', - ], - - 'logout' => [ - 'label' => 'چوونەدەرەوە', - ], - - 'open_database_notifications' => [ - 'label' => 'کردنەوەی ئاگانامەکان', - ], - - 'open_user_menu' => [ - 'label' => 'مێنیوی بەکارهێنەر', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'بچووکردنەوەی شریتی گەڕان', - ], - - 'expand' => [ - 'label' => 'فراوانکردنی شریتی گەڕان', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'گۆڕینی ڕوانگە بۆ تاریک', - ], - - 'light' => [ - 'label' => 'گۆڕینی ڕوانگە بۆ ڕووناک', - ], - - 'system' => [ - 'label' => 'داگرساندنی باری سیستەم', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ku/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/ku/pages/auth/edit-profile.php deleted file mode 100644 index ce4fa396..00000000 --- a/vendor/filament/filament/resources/lang/ku/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'پڕۆفایل', - - 'form' => [ - - 'email' => [ - 'label' => 'ئیمەیڵ', - ], - - 'name' => [ - 'label' => 'ناو', - ], - - 'password' => [ - 'label' => 'وشەی نهێنی نوێ', - ], - - 'password_confirmation' => [ - 'label' => 'دڵنیابوونەوەی وشەی نهێنی نوێ', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'نوێکردنەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'نوێکرایەوە', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'گەڕانەوە', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ku/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/ku/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index feba9133..00000000 --- a/vendor/filament/filament/resources/lang/ku/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'چالاککردنی ئیمەیڵ', - - 'heading' => 'چالاککردنی ئیمەیڵ', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'دووبارە چالاککردن بنێرە', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'ئیمەیڵەکەت پێ نەگەیشت بۆ چالاککردن؟', - 'notification_sent' => 'ئیمەیڵێکمان نارد بۆ :email کە ڕێنماییەکەنی تێدایە بۆ چالاککردنی هەژمارەکەت..', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'چالاککردنی ئیمەیڵ دووبارە نێردرا.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'هەوڵی دووبارە ناردنی چالاککردن زۆر نێردرا', - 'body' => 'تکایە هەوڵ بدەرەوە دوای :seconds چرکە.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ku/pages/auth/login.php b/vendor/filament/filament/resources/lang/ku/pages/auth/login.php deleted file mode 100644 index 4997ba13..00000000 --- a/vendor/filament/filament/resources/lang/ku/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'چوونەژوورەوە', - - 'heading' => 'چوونەژوورەوە', - - 'actions' => [ - - 'register' => [ - 'before' => 'یان', - 'label' => 'دروستکردنی هەژماری نوێ', - ], - - 'request_password_reset' => [ - 'label' => 'وشەی نهێنیت لەبیرکردووە؟', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'ئیمەیڵ', - ], - - 'password' => [ - 'label' => 'وشەی نهێنی', - ], - - 'remember' => [ - 'label' => 'لەبیرم مەکە', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'چوونەژوورەوە', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'هیچ هەژمارێک بەو تۆمارە بوونی نییە.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'هەوڵی داواکاری چونەژورەوە زۆر نێردرا', - 'body' => 'تکایە هەوڵ بدەرەوە دوای :seconds چرکە.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ku/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/ku/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 1994e7e5..00000000 --- a/vendor/filament/filament/resources/lang/ku/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'نوێکردنەوەی وشەی نهێنی', - - 'heading' => 'وشەی نهێنیت لەبیر کردووە؟?', - - 'actions' => [ - - 'login' => [ - 'label' => 'گەڕانەوە بۆ چوونەژوورەوە', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'ئیمەیڵ', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'ناردنی ئیمەیڵ', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'داواکاری زۆر نێردرا', - 'body' => 'تکایە هەوڵ بدەرەوە دوای :seconds چرکە.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ku/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/ku/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 3cc2b3bb..00000000 --- a/vendor/filament/filament/resources/lang/ku/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'نوێکردنەوەی وشەی نهێنی', - - 'heading' => 'نوێکردنەوەی وشەی نهێنی', - - 'form' => [ - - 'email' => [ - 'label' => 'ئیمەیڵ', - ], - - 'password' => [ - 'label' => 'وشەی نهێنی', - 'validation_attribute' => 'وشەی نهێنی', - ], - - 'password_confirmation' => [ - 'label' => 'دڵنیابوونەوەی وشەی نهێنی', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'نوێکردنەوەی وشەی نهێنی', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'هەوڵی نوێکردنەوەی وشەی نهێنی زۆر نێردرا', - 'body' => 'تکایە هەوڵ بدەرەوە دوای :seconds چرکە.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ku/pages/auth/register.php b/vendor/filament/filament/resources/lang/ku/pages/auth/register.php deleted file mode 100644 index 87f6374e..00000000 --- a/vendor/filament/filament/resources/lang/ku/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'دروستکردنی هەژمار', - - 'heading' => 'دروستکردنی هەژمار', - - 'actions' => [ - - 'login' => [ - 'before' => 'یان', - 'label' => 'چوونەژوورەوە', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'ئیمەیڵ', - ], - - 'name' => [ - 'label' => 'ناو', - ], - - 'password' => [ - 'label' => 'وشەی نهێنی', - 'validation_attribute' => 'وشەی نهێنی', - ], - - 'password_confirmation' => [ - 'label' => 'دڵنیابوونەوەی وشەی نهێنی', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'دروستکردنی هەژمار', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'هەوڵی دروستکردنی هەژمار زۆر نێردرا', - 'body' => 'تکایە هەوڵ بدەرەوە دوای :seconds چرکە.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ku/pages/dashboard.php b/vendor/filament/filament/resources/lang/ku/pages/dashboard.php deleted file mode 100644 index 89dea645..00000000 --- a/vendor/filament/filament/resources/lang/ku/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'داشبۆرد', - -]; diff --git a/vendor/filament/filament/resources/lang/ku/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/ku/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 7348084a..00000000 --- a/vendor/filament/filament/resources/lang/ku/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'نوێکردنەوە', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'نوێکرایەوە', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ku/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/ku/resources/pages/create-record.php deleted file mode 100644 index 43ed6f39..00000000 --- a/vendor/filament/filament/resources/lang/ku/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'دروستکردنی :label', - - 'breadcrumb' => 'دروستکردن', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'پاشگەزبوونەوە', - ], - - 'create' => [ - 'label' => 'دروستکردن', - ], - - 'create_another' => [ - 'label' => 'دروستکردن و تۆمارێکی تر', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'دروستکرا', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ku/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/ku/resources/pages/edit-record.php deleted file mode 100644 index eaf46e52..00000000 --- a/vendor/filament/filament/resources/lang/ku/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'دەستکاریکردنی :label', - - 'breadcrumb' => 'دەستکاریکردن', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'پاشگەزبوونەوە', - ], - - 'save' => [ - 'label' => 'نوێکردنەوە', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'دەستکاریکردن', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'نوێکرایەوە', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ku/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/ku/resources/pages/list-records.php deleted file mode 100644 index 3ecd89c8..00000000 --- a/vendor/filament/filament/resources/lang/ku/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'تۆمارەکان', - -]; diff --git a/vendor/filament/filament/resources/lang/ku/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/ku/resources/pages/view-record.php deleted file mode 100644 index c3dd4f8e..00000000 --- a/vendor/filament/filament/resources/lang/ku/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'بینینی :label', - - 'breadcrumb' => 'بینین', - - 'content' => [ - - 'tab' => [ - 'label' => 'بینین', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ku/widgets/account-widget.php b/vendor/filament/filament/resources/lang/ku/widgets/account-widget.php deleted file mode 100644 index c923c562..00000000 --- a/vendor/filament/filament/resources/lang/ku/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'چوونەدەرەوە', - ], - - ], - - 'welcome' => 'بەخێربێیت', - -]; diff --git a/vendor/filament/filament/resources/lang/ku/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/ku/widgets/filament-info-widget.php deleted file mode 100644 index e5595044..00000000 --- a/vendor/filament/filament/resources/lang/ku/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Documentation', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lt/global-search.php b/vendor/filament/filament/resources/lang/lt/global-search.php deleted file mode 100644 index 6caeee91..00000000 --- a/vendor/filament/filament/resources/lang/lt/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Globali paieška', - 'placeholder' => 'Paieška', - ], - - 'no_results_message' => 'Paieškos rezultatų nėra.', - -]; diff --git a/vendor/filament/filament/resources/lang/lt/layout.php b/vendor/filament/filament/resources/lang/lt/layout.php deleted file mode 100644 index 67ce603e..00000000 --- a/vendor/filament/filament/resources/lang/lt/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Tvarkyti prenumeratą', - ], - - 'logout' => [ - 'label' => 'Atsijungti', - ], - - 'open_database_notifications' => [ - 'label' => 'Atidaryti pranešimus', - ], - - 'open_user_menu' => [ - 'label' => 'Vartotojo meniu', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Sutraukti šoninę juostą', - ], - - 'expand' => [ - 'label' => 'Išskleisti šoninę juostą', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Perjungti tamsos režimą', - ], - - 'light' => [ - 'label' => 'Perjungti šviesos režimą', - ], - - 'system' => [ - 'label' => 'Perjungti sistemos režimą', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lt/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/lt/pages/auth/edit-profile.php deleted file mode 100644 index 293f6f38..00000000 --- a/vendor/filament/filament/resources/lang/lt/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profilis', - - 'form' => [ - - 'email' => [ - 'label' => 'El. paštas', - ], - - 'name' => [ - 'label' => 'Vardas', - ], - - 'password' => [ - 'label' => 'Naujas slaptažodis', - ], - - 'password_confirmation' => [ - 'label' => 'Patvirtinkite naują slaptažodį', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Išsaugoti', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Išsaugota', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'atgal', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lt/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/lt/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index bf707619..00000000 --- a/vendor/filament/filament/resources/lang/lt/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Patvirtinkite el. pašto adresą', - - 'heading' => 'Patvirtinkite el. pašto adresą', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Išsiųsti dar kartą', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Negavote el. laiško?', - 'notification_sent' => 'Nusiuntėme instrukcijas į el. paštą :email kaip patvirtinti el. pašto adresą.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Persiuntėme el. laišką dar karta.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Per daug bandymų išsiųsti dar karta', - 'body' => 'Bandykite dar kartą už :seconds sekundžių.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lt/pages/auth/login.php b/vendor/filament/filament/resources/lang/lt/pages/auth/login.php deleted file mode 100644 index b1d98f2a..00000000 --- a/vendor/filament/filament/resources/lang/lt/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Prisijungti', - - 'heading' => 'Prisijunkite prie savo paskyros', - - 'actions' => [ - - 'register' => [ - 'before' => 'arba', - 'label' => 'užsiregistruokite', - ], - - 'request_password_reset' => [ - 'label' => 'Pamiršote slaptažodį?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'El. paštas', - ], - - 'password' => [ - 'label' => 'Slaptažodis', - ], - - 'remember' => [ - 'label' => 'Prisiminti mane', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Prisijungti', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Neteisingi prisijungimo duomenys.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Per daug bandymų prisijungti. Bandykite po :seconds sekundžių.', - 'body' => 'Pabandykite dar katą už :seconds sekundžių.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lt/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/lt/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 3e7f0c0f..00000000 --- a/vendor/filament/filament/resources/lang/lt/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Atkurti slaptažodį', - - 'heading' => 'Pamiršote slaptažodį?', - - 'actions' => [ - - 'login' => [ - 'label' => 'grįžti į prisijungimą', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'El. paštas', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Siųsti', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Per daug bandymų', - 'body' => 'Bandykite dar kartą už :seconds sekundžių.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lt/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/lt/pages/auth/password-reset/reset-password.php deleted file mode 100644 index ea0444f9..00000000 --- a/vendor/filament/filament/resources/lang/lt/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Atstatyti slaptažodį', - - 'heading' => 'Atstatyti slaptažodį', - - 'form' => [ - - 'email' => [ - 'label' => 'El. paštas', - ], - - 'password' => [ - 'label' => 'Slaptažodis', - 'validation_attribute' => 'slaptažodžio', - ], - - 'password_confirmation' => [ - 'label' => 'Patvirtinkite slaptažodį', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Atstatyti slaptažodį', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Per daug bandymų', - 'body' => 'Bandykite dar kartą už :seconds sekundžių.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lt/pages/auth/register.php b/vendor/filament/filament/resources/lang/lt/pages/auth/register.php deleted file mode 100644 index cdc00a58..00000000 --- a/vendor/filament/filament/resources/lang/lt/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Registracija', - - 'heading' => 'Registracija', - - 'actions' => [ - - 'login' => [ - 'before' => 'arba', - 'label' => 'prisijunkite', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'El. paštas', - ], - - 'name' => [ - 'label' => 'Vardas', - ], - - 'password' => [ - 'label' => 'Slaptažodis', - 'validation_attribute' => 'slaptažodžio', - ], - - 'password_confirmation' => [ - 'label' => 'Patvirtinkite slaptažodį', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Registruotis', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Per daug registracijos bandymų', - 'body' => 'Pabandykite dar kartą už :seconds sekundžių.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lt/pages/dashboard.php b/vendor/filament/filament/resources/lang/lt/pages/dashboard.php deleted file mode 100644 index 874f0ebc..00000000 --- a/vendor/filament/filament/resources/lang/lt/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Pagrindinis puslapis', - -]; diff --git a/vendor/filament/filament/resources/lang/lt/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/lt/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 6d25527e..00000000 --- a/vendor/filament/filament/resources/lang/lt/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Išsaugoti', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Išsaugota', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lt/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/lt/resources/pages/create-record.php deleted file mode 100644 index b2100525..00000000 --- a/vendor/filament/filament/resources/lang/lt/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Sukurti :label', - - 'breadcrumb' => 'Sukurti', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Atšaukti', - ], - - 'create' => [ - 'label' => 'Sukurti', - ], - - 'create_another' => [ - 'label' => 'Sukurti ir sukurti kitą', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Sukurta', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lt/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/lt/resources/pages/edit-record.php deleted file mode 100644 index 932d1cee..00000000 --- a/vendor/filament/filament/resources/lang/lt/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Redaguoti :label', - - 'breadcrumb' => 'Redaguoti', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Atšaukti', - ], - - 'save' => [ - 'label' => 'Išsaugoti pakeitimus', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Redaguoti', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Išsaugota', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lt/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/lt/resources/pages/list-records.php deleted file mode 100644 index 038bbd1f..00000000 --- a/vendor/filament/filament/resources/lang/lt/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Sąrašas', - -]; diff --git a/vendor/filament/filament/resources/lang/lt/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/lt/resources/pages/view-record.php deleted file mode 100644 index f5b3037d..00000000 --- a/vendor/filament/filament/resources/lang/lt/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Peržiūrėti :label', - - 'breadcrumb' => 'Peržiūrėti', - - 'content' => [ - - 'tab' => [ - 'label' => 'Peržiūrėti', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lt/widgets/account-widget.php b/vendor/filament/filament/resources/lang/lt/widgets/account-widget.php deleted file mode 100644 index 510f1cb3..00000000 --- a/vendor/filament/filament/resources/lang/lt/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Atsijungti', - ], - - ], - - 'welcome' => 'Sveiki atvykę', - -]; diff --git a/vendor/filament/filament/resources/lang/lt/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/lt/widgets/filament-info-widget.php deleted file mode 100644 index d770c7e3..00000000 --- a/vendor/filament/filament/resources/lang/lt/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Dokumentacija', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lv/global-search.php b/vendor/filament/filament/resources/lang/lv/global-search.php deleted file mode 100644 index 4f5fc54b..00000000 --- a/vendor/filament/filament/resources/lang/lv/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Vispārēja meklēšana', - 'placeholder' => 'Meklēt', - ], - - 'no_results_message' => 'Meklēšanas rezultāti nav atrasti.', - -]; diff --git a/vendor/filament/filament/resources/lang/lv/layout.php b/vendor/filament/filament/resources/lang/lv/layout.php deleted file mode 100644 index 251ef0db..00000000 --- a/vendor/filament/filament/resources/lang/lv/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Pārvaldīt abonementu', - ], - - 'logout' => [ - 'label' => 'Iziet', - ], - - 'open_database_notifications' => [ - 'label' => 'Atvērt paziņojumus', - ], - - 'open_user_menu' => [ - 'label' => 'Lietotāja izvēlne', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Sakļaut sānjoslu', - ], - - 'expand' => [ - 'label' => 'Izvērst sānjoslu', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Pārslēgt uz tumšo režīmu', - ], - - 'light' => [ - 'label' => 'Pārslēgt uz gaišo režīmu', - ], - - 'system' => [ - 'label' => 'Pārslēgt uz sistēmas režīmu', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lv/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/lv/pages/auth/edit-profile.php deleted file mode 100644 index 0501cae1..00000000 --- a/vendor/filament/filament/resources/lang/lv/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profils', - - 'form' => [ - - 'email' => [ - 'label' => 'E-pasta adrese', - ], - - 'name' => [ - 'label' => 'Vārds', - ], - - 'password' => [ - 'label' => 'Jaunā parole', - ], - - 'password_confirmation' => [ - 'label' => 'Jaunās paroles apstiprinājums', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Saglabāt izmaiņas', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Izmaiņas saglabātas', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Atcelt', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lv/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/lv/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 2fdf14d2..00000000 --- a/vendor/filament/filament/resources/lang/lv/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Apstipriniet savu e-pasta adresi', - - 'heading' => 'Apstipriniet savu e-pasta adresi', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Nosūtīt vēlreiz', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Nesaņēmāt mūsu nosūtīto e-pastu?', - 'notification_sent' => 'Uz adresi :email tika nosūtīts e-pasts ar norādēm, kā apstiprināt savu e-pasta adresi.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'E-pasts tika nosūtīts atkārtoti.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Pārāk daudz mēģinājumu', - 'body' => 'Lūdzu, mēģiniet vēlreiz pēc :seconds sekundēm.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lv/pages/auth/login.php b/vendor/filament/filament/resources/lang/lv/pages/auth/login.php deleted file mode 100644 index f833260d..00000000 --- a/vendor/filament/filament/resources/lang/lv/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Pieteikšanās', - - 'heading' => 'Pierakstīties savā kontā', - - 'actions' => [ - - 'register' => [ - 'before' => 'vai', - 'label' => 'reģistrēties', - ], - - 'request_password_reset' => [ - 'label' => 'Aizmirsāt paroli?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-pasta adrese', - ], - - 'password' => [ - 'label' => 'Parole', - ], - - 'remember' => [ - 'label' => 'Atcerēties mani', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Pierakstīties', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Šie akreditācijas dati neatbilst mūsu ierakstiem.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Pārāk daudz pieteikšanās mēģinājumu.', - 'body' => 'Lūdzu, mēģiniet vēlreiz pēc :seconds sekundēm.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lv/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/lv/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index b34fbd8a..00000000 --- a/vendor/filament/filament/resources/lang/lv/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Paroles maiņa', - - 'heading' => 'Aizmirsāt paroli?', - - 'actions' => [ - - 'login' => [ - 'label' => 'atpakaļ uz pieteikšanās lapu', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-pasta adrese', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Sūtīt e-pastu', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Pārāk daudz mēģinājumu', - 'body' => 'Lūdzu, mēģiniet vēlreiz pēc :seconds sekundēm.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lv/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/lv/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 8fb32ae6..00000000 --- a/vendor/filament/filament/resources/lang/lv/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Paroles maiņa', - - 'heading' => 'Mainīt paroli', - - 'form' => [ - - 'email' => [ - 'label' => 'E-pasta adrese', - ], - - 'password' => [ - 'label' => 'Parole', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Paroles apstiprinājums', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Mainīt paroli', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Pārāk daudz mēģinājumu', - 'body' => 'Lūdzu, mēģiniet vēlreiz pēc :seconds sekundēm.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lv/pages/auth/register.php b/vendor/filament/filament/resources/lang/lv/pages/auth/register.php deleted file mode 100644 index e01657f7..00000000 --- a/vendor/filament/filament/resources/lang/lv/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Reģistrācija', - - 'heading' => 'Reģistrēties', - - 'actions' => [ - - 'login' => [ - 'before' => 'vai', - 'label' => 'pierakstīties savā kontā', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-pasta adrese', - ], - - 'name' => [ - 'label' => 'Vārds', - ], - - 'password' => [ - 'label' => 'Parole', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Paroles apstiprinājums', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Reģistrēties', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Pārāk daudz reģistrēšanās mēģinājumu', - 'body' => 'Lūdzu, mēģiniet vēlreiz pēc :seconds sekundēm.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lv/pages/dashboard.php b/vendor/filament/filament/resources/lang/lv/pages/dashboard.php deleted file mode 100644 index cd4be613..00000000 --- a/vendor/filament/filament/resources/lang/lv/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Panelis', - -]; diff --git a/vendor/filament/filament/resources/lang/lv/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/lv/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 0759003c..00000000 --- a/vendor/filament/filament/resources/lang/lv/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Saglabāt izmaiņas', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Izmaiņas saglabātas', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lv/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/lv/resources/pages/create-record.php deleted file mode 100644 index ce12b204..00000000 --- a/vendor/filament/filament/resources/lang/lv/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Jauns :label', - - 'breadcrumb' => 'Jauns', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Atcelt', - ], - - 'create' => [ - 'label' => 'Izveidot', - ], - - 'create_another' => [ - 'label' => 'Izveidot & izveidot citu', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Izveidots', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lv/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/lv/resources/pages/edit-record.php deleted file mode 100644 index da552e94..00000000 --- a/vendor/filament/filament/resources/lang/lv/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Rediģēt :label', - - 'breadcrumb' => 'Rediģēt', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Atcelt', - ], - - 'save' => [ - 'label' => 'Saglabāt izmaiņas', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Rediģēt', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Saglabāts', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lv/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/lv/resources/pages/list-records.php deleted file mode 100644 index c9f4d4a5..00000000 --- a/vendor/filament/filament/resources/lang/lv/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Saraksts', - -]; diff --git a/vendor/filament/filament/resources/lang/lv/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/lv/resources/pages/view-record.php deleted file mode 100644 index 914a8685..00000000 --- a/vendor/filament/filament/resources/lang/lv/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Skatīt :label', - - 'breadcrumb' => 'Skatīt', - - 'content' => [ - - 'tab' => [ - 'label' => 'Skatīt', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/lv/widgets/account-widget.php b/vendor/filament/filament/resources/lang/lv/widgets/account-widget.php deleted file mode 100644 index d4b2c7aa..00000000 --- a/vendor/filament/filament/resources/lang/lv/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Iziet', - ], - - ], - - 'welcome' => 'Laipni lūdzam', - -]; diff --git a/vendor/filament/filament/resources/lang/lv/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/lv/widgets/filament-info-widget.php deleted file mode 100644 index e1e4b5e4..00000000 --- a/vendor/filament/filament/resources/lang/lv/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Dokumentācija', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ms/global-search.php b/vendor/filament/filament/resources/lang/ms/global-search.php deleted file mode 100644 index 8eec2929..00000000 --- a/vendor/filament/filament/resources/lang/ms/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Carian global', - 'placeholder' => 'Carian', - ], - - 'no_results_message' => 'Tiada hasil carian ditemui.', - -]; diff --git a/vendor/filament/filament/resources/lang/ms/layout.php b/vendor/filament/filament/resources/lang/ms/layout.php deleted file mode 100644 index 6a41f64b..00000000 --- a/vendor/filament/filament/resources/lang/ms/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Urus langganan', - ], - - 'logout' => [ - 'label' => 'Log keluar', - ], - - 'open_database_notifications' => [ - 'label' => 'Buka pemberitahuan', - ], - - 'open_user_menu' => [ - 'label' => 'Menu Pengguna', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Runtuhkan bar sisi', - ], - - 'expand' => [ - 'label' => 'Kembangkan bar sisi', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Tukar mod gelap', - ], - - 'light' => [ - 'label' => 'Tukar mod terang', - ], - - 'system' => [ - 'label' => 'Dayakan tema sistem', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ms/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/ms/pages/auth/edit-profile.php deleted file mode 100644 index 111b5182..00000000 --- a/vendor/filament/filament/resources/lang/ms/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profil', - - 'form' => [ - - 'email' => [ - 'label' => 'Alamat emel', - ], - - 'name' => [ - 'label' => 'Nama', - ], - - 'password' => [ - 'label' => 'Kata laluan baru', - ], - - 'password_confirmation' => [ - 'label' => 'Sahkan kata laluan baharu', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Simpan perubahan', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Disimpan', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'ke belakang', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ms/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/ms/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index a909b73b..00000000 --- a/vendor/filament/filament/resources/lang/ms/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Mengesahkan alamat e-mel anda', - - 'heading' => 'Mengesahkan alamat e-mel anda', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Hantar semula', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Tidak menerima e-mel yang kami hantar?', - 'notification_sent' => 'Kami telah menghantar e-mel kepada :email yang mengandungi arahan tentang cara untuk mengesahkan alamat e-mel anda.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Kami telah menghantar e-mel.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Terlalu banyak percubaan menghantar semula', - 'body' => 'Sila cuba lagi dalam :second saat.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ms/pages/auth/login.php b/vendor/filament/filament/resources/lang/ms/pages/auth/login.php deleted file mode 100644 index 6fbdd768..00000000 --- a/vendor/filament/filament/resources/lang/ms/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Log masuk', - - 'heading' => 'Log masuk ke akaun anda', - - 'actions' => [ - - 'register' => [ - 'before' => 'atau', - 'label' => 'mendaftar akaun', - ], - - 'request_password_reset' => [ - 'label' => 'Lupa kata laluan?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Emel', - ], - - 'password' => [ - 'label' => 'Kata laluan', - ], - - 'remember' => [ - 'label' => 'Ingat saya', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Log masuk', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Bukti kelayakan ini tidak sepadan dengan rekod kami.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Terlalu banyak percubaan log masuk. Sila cuba lagi dalam :seconds saat.', - 'body' => 'Sila cuba lagi dalam masa :seconds saat.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ms/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/ms/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index e08ef636..00000000 --- a/vendor/filament/filament/resources/lang/ms/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Menetapkan semula kata laluan anda', - - 'heading' => 'Lupa kata laluan?', - - 'actions' => [ - - 'login' => [ - 'label' => 'kembali untuk log masuk', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Alamat emel', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Hantar emel', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Terlalu banyak permintaan', - 'body' => 'Sila cuba lagi dalam :second saat.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ms/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/ms/pages/auth/password-reset/reset-password.php deleted file mode 100644 index fc9d18ae..00000000 --- a/vendor/filament/filament/resources/lang/ms/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Reset your password', - - 'heading' => 'Reset your password', - - 'form' => [ - - 'email' => [ - 'label' => 'Email address', - ], - - 'password' => [ - 'label' => 'Password', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Confirm password', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Reset password', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Too many reset attempts', - 'body' => 'Please try again in :seconds seconds.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ms/pages/auth/register.php b/vendor/filament/filament/resources/lang/ms/pages/auth/register.php deleted file mode 100644 index 74443147..00000000 --- a/vendor/filament/filament/resources/lang/ms/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Daftar', - - 'heading' => 'Daftar', - - 'actions' => [ - - 'login' => [ - 'before' => 'atau', - 'label' => 'log masuk ke akaun anda', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Alamat emel', - ], - - 'name' => [ - 'label' => 'Nama', - ], - - 'password' => [ - 'label' => 'Kata laluan', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Sahkan kata laluan', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Daftar', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Terlalu banyak percubaan pendaftaran', - 'body' => 'Sila cuba lagi dalam :second saat.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ms/pages/dashboard.php b/vendor/filament/filament/resources/lang/ms/pages/dashboard.php deleted file mode 100644 index 247eadb3..00000000 --- a/vendor/filament/filament/resources/lang/ms/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'Papan pemuka', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'Penapis', - - 'modal' => [ - - 'heading' => 'Penapis', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'Mohon', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ms/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/ms/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 58485157..00000000 --- a/vendor/filament/filament/resources/lang/ms/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Simpan perubahan', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Disimpan', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ms/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/ms/resources/pages/create-record.php deleted file mode 100644 index a9038d37..00000000 --- a/vendor/filament/filament/resources/lang/ms/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Cipta :label', - - 'breadcrumb' => 'Cipta', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Batal', - ], - - 'create' => [ - 'label' => 'Cipta', - ], - - 'create_another' => [ - 'label' => 'Cipta & cipta yang lain', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Diciptakan', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ms/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/ms/resources/pages/edit-record.php deleted file mode 100644 index c281ae6a..00000000 --- a/vendor/filament/filament/resources/lang/ms/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Sunting :label', - - 'breadcrumb' => 'Sunting', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Batal', - ], - - 'save' => [ - 'label' => 'Simpan', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Sunting', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Disimpan', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ms/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/ms/resources/pages/list-records.php deleted file mode 100644 index fd84b575..00000000 --- a/vendor/filament/filament/resources/lang/ms/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Senarai', - -]; diff --git a/vendor/filament/filament/resources/lang/ms/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/ms/resources/pages/view-record.php deleted file mode 100644 index 372b7d4a..00000000 --- a/vendor/filament/filament/resources/lang/ms/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Lihat :label', - - 'breadcrumb' => 'Lihat', - - 'content' => [ - - 'tab' => [ - 'label' => 'Lihat', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ms/widgets/account-widget.php b/vendor/filament/filament/resources/lang/ms/widgets/account-widget.php deleted file mode 100644 index 94b1603c..00000000 --- a/vendor/filament/filament/resources/lang/ms/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Log keluar', - ], - - ], - - 'welcome' => 'Selamat datang', - -]; diff --git a/vendor/filament/filament/resources/lang/ms/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/ms/widgets/filament-info-widget.php deleted file mode 100644 index 85d41319..00000000 --- a/vendor/filament/filament/resources/lang/ms/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Dokumentasi', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/my/global-search.php b/vendor/filament/filament/resources/lang/my/global-search.php deleted file mode 100644 index 58f1784b..00000000 --- a/vendor/filament/filament/resources/lang/my/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'ကမ္ဘာလုံးဆိုင်ရာ ရှာဖွေမှု', - 'placeholder' => 'ရှာမယ်', - ], - - 'no_results_message' => 'ရှာဖွေမှုရလဒ်များ မတွေ့ပါ', - -]; diff --git a/vendor/filament/filament/resources/lang/my/layout.php b/vendor/filament/filament/resources/lang/my/layout.php deleted file mode 100644 index ac9ad75a..00000000 --- a/vendor/filament/filament/resources/lang/my/layout.php +++ /dev/null @@ -1,31 +0,0 @@ - 'ဘယ်မှညာ', - - 'actions' => [ - - 'logout' => [ - 'label' => 'ထွက်မည်', - ], - - 'open_user_menu' => [ - 'label' => 'အသုံးပြုသူမီနူး', - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'အနက်နောက်ခံပုံစံ', - ], - - 'light' => [ - 'label' => 'အဖြူနောက်ခံပုံစံ', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/my/pages/auth/login.php b/vendor/filament/filament/resources/lang/my/pages/auth/login.php deleted file mode 100644 index a87961ea..00000000 --- a/vendor/filament/filament/resources/lang/my/pages/auth/login.php +++ /dev/null @@ -1,47 +0,0 @@ - 'Login', - - 'heading' => 'Sign in to your account', - - 'form' => [ - - 'email' => [ - 'label' => 'မိမိ၏အီးမေးလ်', - ], - - 'password' => [ - 'label' => 'စကားဝှက်', - ], - - 'remember' => [ - 'label' => 'မှတ်ထားပေးပါ', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => '၀င်မည်', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'အကောင့်ဝင်ခြင်းအထောက်အထားများသည် မှတ်တမ်းများနှင့် မကိုက်ညီပါ။', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'အကောင့်ဝင်ရန် ကြိုးစားမှု များလွန်းသည်၊ ကျေးဇူးပြု၍ :seconds စက္ကန့်အကြာတွင် ထပ်စမ်းကြည့်ပါ', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/my/pages/dashboard.php b/vendor/filament/filament/resources/lang/my/pages/dashboard.php deleted file mode 100644 index da1e6530..00000000 --- a/vendor/filament/filament/resources/lang/my/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'ပင်မစာမျက်နှာ', - -]; diff --git a/vendor/filament/filament/resources/lang/my/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/my/resources/pages/create-record.php deleted file mode 100644 index fd605f99..00000000 --- a/vendor/filament/filament/resources/lang/my/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - ':label ဖန်တီးပါ', - - 'breadcrumb' => 'ဖန်တီးပါ', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'မလုပ်တော့ပါ', - ], - - 'create' => [ - 'label' => 'ဖန်တီးပါ', - ], - - 'create_another' => [ - 'label' => 'သိမ်းဆည်းပြီး နောက်တစ်ခုကို ဖန်တီးပါ', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'သိမ်းဆည်းပြီး', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/my/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/my/resources/pages/edit-record.php deleted file mode 100644 index 6e6d8620..00000000 --- a/vendor/filament/filament/resources/lang/my/resources/pages/edit-record.php +++ /dev/null @@ -1,33 +0,0 @@ - ':label ကိုတည်းဖြတ်ပါ', - - 'breadcrumb' => 'တည်းဖြတ်ပါ', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'မလုပ်တော့ပါ', - ], - - 'save' => [ - 'label' => 'မှတ်ပါ', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'သိမ်းဆည်းထားသည်', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/my/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/my/resources/pages/list-records.php deleted file mode 100644 index 87dfba03..00000000 --- a/vendor/filament/filament/resources/lang/my/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'စာရင်း', - -]; diff --git a/vendor/filament/filament/resources/lang/my/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/my/resources/pages/view-record.php deleted file mode 100644 index acd9308b..00000000 --- a/vendor/filament/filament/resources/lang/my/resources/pages/view-record.php +++ /dev/null @@ -1,7 +0,0 @@ - 'စစ်ဆေးပါ', - -]; diff --git a/vendor/filament/filament/resources/lang/my/widgets/account-widget.php b/vendor/filament/filament/resources/lang/my/widgets/account-widget.php deleted file mode 100644 index 9960f6e1..00000000 --- a/vendor/filament/filament/resources/lang/my/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'ထွက်မည်', - ], - - ], - - 'welcome' => 'ကြိုဆိုပါတယ်', - -]; diff --git a/vendor/filament/filament/resources/lang/my/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/my/widgets/filament-info-widget.php deleted file mode 100644 index 7be9f93b..00000000 --- a/vendor/filament/filament/resources/lang/my/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'အညွန်း', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/nl/global-search.php b/vendor/filament/filament/resources/lang/nl/global-search.php deleted file mode 100644 index 07f5c23c..00000000 --- a/vendor/filament/filament/resources/lang/nl/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Globaal zoeken', - 'placeholder' => 'Zoeken', - ], - - 'no_results_message' => 'Geen resultaten gevonden.', - -]; diff --git a/vendor/filament/filament/resources/lang/nl/layout.php b/vendor/filament/filament/resources/lang/nl/layout.php deleted file mode 100644 index 412b8e4a..00000000 --- a/vendor/filament/filament/resources/lang/nl/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Abonnement beheren', - ], - - 'logout' => [ - 'label' => 'Uitloggen', - ], - - 'open_database_notifications' => [ - 'label' => 'Meldingen openen', - ], - - 'open_user_menu' => [ - 'label' => 'Gebruikersmenu', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Zijbalk inklappen', - ], - - 'expand' => [ - 'label' => 'Zijbalk uitklappen', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Donker thema inschakelen', - ], - - 'light' => [ - 'label' => 'Licht thema inschakelen', - ], - - 'system' => [ - 'label' => 'Systeemthema inschakelen', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/nl/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/nl/pages/auth/edit-profile.php deleted file mode 100644 index 8313b85f..00000000 --- a/vendor/filament/filament/resources/lang/nl/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profiel', - - 'form' => [ - - 'email' => [ - 'label' => 'E-mailadres', - ], - - 'name' => [ - 'label' => 'Naam', - ], - - 'password' => [ - 'label' => 'Nieuw wachtwoord', - ], - - 'password_confirmation' => [ - 'label' => 'Bevestig nieuw wachtwoord', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Opslaan', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Opgeslagen', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'terug', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/nl/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/nl/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 37aab9cb..00000000 --- a/vendor/filament/filament/resources/lang/nl/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,36 +0,0 @@ - 'E-mailadres verifiëren', - - 'heading' => 'E-mailadres verifiëren', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Opnieuw verzenden', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Geen e-mail ontvangen?', - 'notification_sent' => 'We hebben een e-mail gestuurd naar :email met instructies om je e-mailadres te verifiëren.', - - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'E-mail opnieuw verzonden.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Te veel verzendpogingen', - 'body' => 'Probeer het opnieuw over :seconds seconden.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/nl/pages/auth/login.php b/vendor/filament/filament/resources/lang/nl/pages/auth/login.php deleted file mode 100644 index e8730837..00000000 --- a/vendor/filament/filament/resources/lang/nl/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Inloggen', - - 'heading' => 'Inloggen op je account', - - 'actions' => [ - - 'register' => [ - 'before' => 'of', - 'label' => 'maak een account aan', - ], - - 'request_password_reset' => [ - 'label' => 'Wachtwoord vergeten?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-mailadres', - ], - - 'password' => [ - 'label' => 'Wachtwoord', - ], - - 'remember' => [ - 'label' => 'Onthoud mij', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Inloggen', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Onjuiste inloggegevens.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Te veel inlogpogingen', - 'body' => 'Probeer het opnieuw over :seconds seconden.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/nl/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/nl/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index e210600f..00000000 --- a/vendor/filament/filament/resources/lang/nl/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Wachtwoord opnieuw instellen', - - 'heading' => 'Wachtwoord vergeten?', - - 'actions' => [ - - 'login' => [ - 'label' => 'terug naar inloggen', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-mailadres', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'E-mail verzenden', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Te veel pogingen', - 'body' => 'Probeer het opnieuw over :seconds seconden.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/nl/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/nl/pages/auth/password-reset/reset-password.php deleted file mode 100644 index baa5ea60..00000000 --- a/vendor/filament/filament/resources/lang/nl/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Wachtwoord opnieuw instellen', - - 'heading' => 'Wachtwoord opnieuw instellen', - - 'form' => [ - - 'email' => [ - 'label' => 'E-mailadres', - ], - - 'password' => [ - 'label' => 'Wachtwoord', - 'validation_attribute' => 'wachtwoord', - ], - - 'password_confirmation' => [ - 'label' => 'Wachtwoord bevestigen', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Wachtwoord opnieuw instellen', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Te veel resetpogingen', - 'body' => 'Probeer het opnieuw over :seconds seconden.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/nl/pages/auth/register.php b/vendor/filament/filament/resources/lang/nl/pages/auth/register.php deleted file mode 100644 index 127e415b..00000000 --- a/vendor/filament/filament/resources/lang/nl/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Registreren', - - 'heading' => 'Registreren', - - 'actions' => [ - - 'login' => [ - 'before' => 'of', - 'label' => 'inloggen op je account', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-mailadres', - ], - - 'name' => [ - 'label' => 'Naam', - ], - - 'password' => [ - 'label' => 'Wachtwoord', - 'validation_attribute' => 'wachtwoord', - ], - - 'password_confirmation' => [ - 'label' => 'Wachtwoord bevestigen', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Registreren', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Te veel registratiepogingen', - 'body' => 'Probeer het opnieuw over :seconds seconden.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/nl/pages/dashboard.php b/vendor/filament/filament/resources/lang/nl/pages/dashboard.php deleted file mode 100644 index 5e97b70f..00000000 --- a/vendor/filament/filament/resources/lang/nl/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'Dashboard', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'Filteren', - - 'modal' => [ - - 'heading' => 'Filteren', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'Toepassen', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/nl/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/nl/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 6c6a5f5a..00000000 --- a/vendor/filament/filament/resources/lang/nl/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Wijzigingen opslaan', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Opgeslagen', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/nl/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/nl/resources/pages/create-record.php deleted file mode 100644 index 6e45d6e7..00000000 --- a/vendor/filament/filament/resources/lang/nl/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - ':Label aanmaken', - - 'breadcrumb' => 'Aanmaken', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Annuleren', - ], - - 'create' => [ - 'label' => 'Aanmaken', - ], - - 'create_another' => [ - 'label' => 'Aanmaken & nieuwe aanmaken', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Aangemaakt', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/nl/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/nl/resources/pages/edit-record.php deleted file mode 100644 index 6f27ba7e..00000000 --- a/vendor/filament/filament/resources/lang/nl/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - ':Label bewerken', - - 'breadcrumb' => 'Bewerken', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Annuleren', - ], - - 'save' => [ - 'label' => 'Wijzigingen opslaan', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Bewerken', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Opgeslagen', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/nl/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/nl/resources/pages/list-records.php deleted file mode 100644 index 6bbcf74e..00000000 --- a/vendor/filament/filament/resources/lang/nl/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Lijst', - -]; diff --git a/vendor/filament/filament/resources/lang/nl/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/nl/resources/pages/view-record.php deleted file mode 100644 index 93fb6f5b..00000000 --- a/vendor/filament/filament/resources/lang/nl/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - ':Label bekijken', - - 'breadcrumb' => 'Bekijken', - - 'content' => [ - - 'tab' => [ - 'label' => 'Bekijken', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/nl/widgets/account-widget.php b/vendor/filament/filament/resources/lang/nl/widgets/account-widget.php deleted file mode 100644 index 4b907505..00000000 --- a/vendor/filament/filament/resources/lang/nl/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Uitloggen', - ], - - ], - - 'welcome' => 'Welkom', - -]; diff --git a/vendor/filament/filament/resources/lang/nl/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/nl/widgets/filament-info-widget.php deleted file mode 100644 index 69e56a58..00000000 --- a/vendor/filament/filament/resources/lang/nl/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Documentatie', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/no/global-search.php b/vendor/filament/filament/resources/lang/no/global-search.php deleted file mode 100644 index eef35358..00000000 --- a/vendor/filament/filament/resources/lang/no/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Globalt søk', - 'placeholder' => 'Søk', - ], - - 'no_results_message' => 'Ingen resultater.', - -]; diff --git a/vendor/filament/filament/resources/lang/no/layout.php b/vendor/filament/filament/resources/lang/no/layout.php deleted file mode 100644 index b08022d7..00000000 --- a/vendor/filament/filament/resources/lang/no/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Håndter abonnementer', - ], - - 'logout' => [ - 'label' => 'Logg ut', - ], - - 'open_database_notifications' => [ - 'label' => 'Åpne varsler', - ], - - 'open_user_menu' => [ - 'label' => 'Brukermeny', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Skjul sidefeltet', - ], - - 'expand' => [ - 'label' => 'Vis sidefeltet', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Aktiver mørkt tema', - ], - - 'light' => [ - 'label' => 'Aktiver lyst tema', - ], - - 'system' => [ - 'label' => 'Aktiver system tema', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/no/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/no/pages/auth/edit-profile.php deleted file mode 100644 index a037faff..00000000 --- a/vendor/filament/filament/resources/lang/no/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profil', - - 'form' => [ - - 'email' => [ - 'label' => 'E-post adresse', - ], - - 'name' => [ - 'label' => 'Navn', - ], - - 'password' => [ - 'label' => 'Nytt passord', - ], - - 'password_confirmation' => [ - 'label' => 'Bekreft nytt passord', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Lagre endringer', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Lagret', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'tilbake', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/no/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/no/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 332d753f..00000000 --- a/vendor/filament/filament/resources/lang/no/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Bekreft din e-post adresse', - - 'heading' => 'Bekreft din e-post adresse', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Send på nytt', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Ikke mottatt e-posten vi sendte?', - 'notification_sent' => 'Vi har sendt e-post til :email med informasjon om hvordan du bekrefter din e-post adresse.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Vi har sendt e-post på nytt.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'For mange forsøk på nye sendinger', - 'body' => 'Vennligst prøv igjen om :seconds sekunder.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/no/pages/auth/login.php b/vendor/filament/filament/resources/lang/no/pages/auth/login.php deleted file mode 100644 index dfd5abe5..00000000 --- a/vendor/filament/filament/resources/lang/no/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Logg inn', - - 'heading' => 'Logg inn på konto', - - 'actions' => [ - - 'register' => [ - 'before' => 'eller', - 'label' => 'opprett ny konto', - ], - - 'request_password_reset' => [ - 'label' => 'Glemt passordet?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-post adresse', - ], - - 'password' => [ - 'label' => 'Passord', - ], - - 'remember' => [ - 'label' => 'Husk meg', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Logg inn', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Påloggingsinformasjonen stemmer ikke med våre data', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'For mange forsøk på innlogging.', - 'body' => 'Vennligst prøv igjen om :seconds sekunder.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/no/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/no/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 1bd5ef89..00000000 --- a/vendor/filament/filament/resources/lang/no/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Tilbakestill ditt passord', - - 'heading' => 'Glemt passord?', - - 'actions' => [ - - 'login' => [ - 'label' => 'tilbake til logg inn', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-post adresse', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Send e-post', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'For mange forsøk', - 'body' => 'Vennligst forsøk igjen om :seconds sekunder.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/no/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/no/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 39f0f600..00000000 --- a/vendor/filament/filament/resources/lang/no/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Tilbakestill passord', - - 'heading' => 'Tilbakestill passord', - - 'form' => [ - - 'email' => [ - 'label' => 'E-post adresse', - ], - - 'password' => [ - 'label' => 'Passord', - 'validation_attribute' => 'passord', - ], - - 'password_confirmation' => [ - 'label' => 'Bekreft passord', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Tilbakestill passord', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'For mange forsøkt på tilbakestilling av passord', - 'body' => 'Vennligst forsøk igjen om :seconds sekunder.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/no/pages/auth/register.php b/vendor/filament/filament/resources/lang/no/pages/auth/register.php deleted file mode 100644 index b6a29481..00000000 --- a/vendor/filament/filament/resources/lang/no/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Registrering', - - 'heading' => 'Registrer', - - 'actions' => [ - - 'login' => [ - 'before' => 'eller', - 'label' => 'logg inn på konto', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-post adresse', - ], - - 'name' => [ - 'label' => 'Navn', - ], - - 'password' => [ - 'label' => 'Passord', - 'validation_attribute' => 'passord', - ], - - 'password_confirmation' => [ - 'label' => 'Bekreft passord', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Registrer', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'For mange forsøk på registrering', - 'body' => 'Vennligst prøv igjen om :seconds sekunder.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/no/pages/dashboard.php b/vendor/filament/filament/resources/lang/no/pages/dashboard.php deleted file mode 100644 index 71d2ef14..00000000 --- a/vendor/filament/filament/resources/lang/no/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Dashbord', - -]; diff --git a/vendor/filament/filament/resources/lang/no/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/no/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index d606ca64..00000000 --- a/vendor/filament/filament/resources/lang/no/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Lagre endringer', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Lagret', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/no/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/no/resources/pages/create-record.php deleted file mode 100644 index 5ccc739a..00000000 --- a/vendor/filament/filament/resources/lang/no/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Opprett :label', - - 'breadcrumb' => 'Opprett', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Avbryt', - ], - - 'create' => [ - 'label' => 'Opprett', - ], - - 'create_another' => [ - 'label' => 'Opprett & opprett en til', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Opprettet', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/no/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/no/resources/pages/edit-record.php deleted file mode 100644 index 41e55ef3..00000000 --- a/vendor/filament/filament/resources/lang/no/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Endre :label', - - 'breadcrumb' => 'Endre', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Avbryt', - ], - - 'save' => [ - 'label' => 'Lagre endringer', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Endre', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Lagret', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/no/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/no/resources/pages/list-records.php deleted file mode 100644 index 51ebe1a5..00000000 --- a/vendor/filament/filament/resources/lang/no/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Liste', - -]; diff --git a/vendor/filament/filament/resources/lang/no/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/no/resources/pages/view-record.php deleted file mode 100644 index 2b847c49..00000000 --- a/vendor/filament/filament/resources/lang/no/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Vis :label', - - 'breadcrumb' => 'Vis', - - 'content' => [ - - 'tab' => [ - 'label' => 'Vis', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/no/widgets/account-widget.php b/vendor/filament/filament/resources/lang/no/widgets/account-widget.php deleted file mode 100644 index 4b53854f..00000000 --- a/vendor/filament/filament/resources/lang/no/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Logg ut', - ], - - ], - - 'welcome' => 'Velkommen', - -]; diff --git a/vendor/filament/filament/resources/lang/no/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/no/widgets/filament-info-widget.php deleted file mode 100644 index ffae5910..00000000 --- a/vendor/filament/filament/resources/lang/no/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Dokumentasjon', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/np/global-search.php b/vendor/filament/filament/resources/lang/np/global-search.php deleted file mode 100644 index c411d1b1..00000000 --- a/vendor/filament/filament/resources/lang/np/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'सम्पूर्ण खोज', - 'placeholder' => 'खोज', - ], - - 'no_results_message' => 'कुनै खोज परिणाम फेला परेन।', - -]; diff --git a/vendor/filament/filament/resources/lang/np/layout.php b/vendor/filament/filament/resources/lang/np/layout.php deleted file mode 100644 index 58409f93..00000000 --- a/vendor/filament/filament/resources/lang/np/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'सदस्यता प्रबन्ध गर्नुहोस्', - ], - - 'logout' => [ - 'label' => 'साइन आउट गर्नुहोस्', - ], - - 'open_database_notifications' => [ - 'label' => 'सूचनाहरू खोल्नुहोस्', - ], - - 'open_user_menu' => [ - 'label' => 'प्रयोगकर्ता मेनु', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'साइडबार संक्षिप्त गर्नुहोस्', - ], - - 'expand' => [ - 'label' => 'साइडबार विस्तार गर्नुहोस्', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'डार्क थेम प्रयोग गर्नुहोस्', - ], - - 'light' => [ - 'label' => 'उज्यालो थेम प्रयोग गर्नुहोस्', - ], - - 'system' => [ - 'label' => 'सिस्टम थेम प्रयोग गर्नुहोस्', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/np/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/np/pages/auth/edit-profile.php deleted file mode 100644 index ac50b73b..00000000 --- a/vendor/filament/filament/resources/lang/np/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'प्रोफाइल', - - 'form' => [ - - 'email' => [ - 'label' => 'इमेल ठेगाना', - ], - - 'name' => [ - 'label' => 'नाम', - ], - - 'password' => [ - 'label' => 'नया पासवर्ड', - ], - - 'password_confirmation' => [ - 'label' => 'नयाँ पासवर्ड पुष्टि गर्नुहोस्', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'परिवर्तनहरू सुरक्षित गर्नुहोस', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'सुरक्षित गरियो', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'पछाडी', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/np/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/np/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index af3e3d74..00000000 --- a/vendor/filament/filament/resources/lang/np/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'आफ्नो इमेल ठेगाना प्रमाणित गर्नुहोस्', - - 'heading' => 'आफ्नो इमेल ठेगाना प्रमाणित गर्नुहोस्', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'यसलाई फेरी पठाउनुहोस्', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'हामीले पठाएको इमेल प्राप्त भएन?', - 'notification_sent' => 'हामीले तपाईको इमेल ठेगाना कसरी प्रमाणित गर्ने भन्ने बारे निर्देशनहरू सहित :email मा इमेल पठाएका छौं।', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'हामीले इमेल पुन पठाएका छौं।', - ], - - 'notification_resend_throttled' => [ - 'title' => 'धेरै धेरै पुन पठाउने प्रयासहरू', - 'body' => 'कृपया :seconds सेकेन्डमा पुन प्रयास गर्नुहोस्।', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/np/pages/auth/login.php b/vendor/filament/filament/resources/lang/np/pages/auth/login.php deleted file mode 100644 index 1550a28e..00000000 --- a/vendor/filament/filament/resources/lang/np/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'लग-इन', - - 'heading' => 'साइन इन गर्नुहोस्', - - 'actions' => [ - - 'register' => [ - 'before' => 'वा', - 'label' => 'खाताको लागि साइन अप गर्नुहोस्', - ], - - 'request_password_reset' => [ - 'label' => 'तपाईँको पासवर्ड बिर्सनुभयो?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'इमेल ठेगाना', - ], - - 'password' => [ - 'label' => 'पासवर्ड', - ], - - 'remember' => [ - 'label' => 'मलाई सम्झनुहोस्', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'साइन इन गर्नुहोस्', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'यी प्रमाणहरू हाम्रा रेकर्डहरूसँग मेल खाँदैनन्।', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'धेरै लगइन प्रयासहरू', - 'body' => 'कृपया :seconds सेकेन्डमा पुन प्रयास गर्नुहोस्।', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/np/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/np/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index ee0ef0d6..00000000 --- a/vendor/filament/filament/resources/lang/np/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'आफ्नो पासवर्ड रिसेट गर्नुहोस्', - - 'heading' => 'तपाईँको पासवर्ड बिर्सनुभयो?', - - 'actions' => [ - - 'login' => [ - 'label' => 'लगइन पृष्ठमा फर्कनुहोस्', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'इमेल ठेगाना', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'इमेल पठाउनुहोस्', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'धेरै अनुरोधहरू', - 'body' => 'कृपया :seconds सेकेन्डमा पुन प्रयास गर्नुहोस्।', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/np/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/np/pages/auth/password-reset/reset-password.php deleted file mode 100644 index b1fafe10..00000000 --- a/vendor/filament/filament/resources/lang/np/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'आफ्नो पासवर्ड रिसेट गर्नुहोस्', - - 'heading' => 'आफ्नो पासवर्ड रिसेट गर्नुहोस्', - - 'form' => [ - - 'email' => [ - 'label' => 'इमेल ठेगाना', - ], - - 'password' => [ - 'label' => 'पासवर्ड', - 'validation_attribute' => 'पासवर्ड', - ], - - 'password_confirmation' => [ - 'label' => 'पासवर्ड सुनिश्चित गर्नुहोस', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'पासवर्ड रिसेट', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'धेरै धेरै रिसेट प्रयासहरू', - 'body' => 'कृपया :seconds सेकेन्डमा पुन प्रयास गर्नुहोस्।', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/np/pages/auth/register.php b/vendor/filament/filament/resources/lang/np/pages/auth/register.php deleted file mode 100644 index c7a544e7..00000000 --- a/vendor/filament/filament/resources/lang/np/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'दर्ता गर्नुहोस्', - - 'heading' => 'साइन अप', - - 'actions' => [ - - 'login' => [ - 'before' => 'वा', - 'label' => 'आफ्नो खातामा साइन इन गर्नुहोस्', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'इमेल ठेगाना', - ], - - 'name' => [ - 'label' => 'नाम', - ], - - 'password' => [ - 'label' => 'पासवर्ड', - 'validation_attribute' => 'पासवर्ड', - ], - - 'password_confirmation' => [ - 'label' => 'पासवर्ड सुनिश्चित गर्नुहोस', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'साइन अप', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'धेरै धेरै दर्ता प्रयासहरू', - 'body' => 'कृपया :seconds सेकेन्डमा पुन प्रयास गर्नुहोस्।', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/np/pages/dashboard.php b/vendor/filament/filament/resources/lang/np/pages/dashboard.php deleted file mode 100644 index a52d0709..00000000 --- a/vendor/filament/filament/resources/lang/np/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'ड्यासबोर्ड', - -]; diff --git a/vendor/filament/filament/resources/lang/np/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/np/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 54205cd3..00000000 --- a/vendor/filament/filament/resources/lang/np/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'परिवर्तनहरू सुरक्षित गर्नुहोस', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'सुरक्षित गरियो', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/np/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/np/resources/pages/create-record.php deleted file mode 100644 index 036c086f..00000000 --- a/vendor/filament/filament/resources/lang/np/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - ':label सिर्जना गर्नुहोस्', - - 'breadcrumb' => 'सिर्जना गर्नुहोस्', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'रद्द गर्नुहोस्', - ], - - 'create' => [ - 'label' => 'सिर्जना गर्नुहोस्', - ], - - 'create_another' => [ - 'label' => 'बनाउनुहोस् र अर्को सिर्जना गर्नुहोस्', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'सिर्जना गरियो', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/np/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/np/resources/pages/edit-record.php deleted file mode 100644 index 8bfb9a13..00000000 --- a/vendor/filament/filament/resources/lang/np/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - ':label सम्पादन गर्नुहोस्', - - 'breadcrumb' => 'सम्पादन गर्नुहोस्', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'रद्द गर्नुहोस्', - ], - - 'save' => [ - 'label' => 'परिवर्तनहरू सुरक्षित गर्नुहोस', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'सम्पादन गर्नुहोस्', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'सुरक्षित गरियो', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/np/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/np/resources/pages/list-records.php deleted file mode 100644 index 6de1a4bc..00000000 --- a/vendor/filament/filament/resources/lang/np/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'सूची', - -]; diff --git a/vendor/filament/filament/resources/lang/np/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/np/resources/pages/view-record.php deleted file mode 100644 index 92ee0a7a..00000000 --- a/vendor/filament/filament/resources/lang/np/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - ':label हेर्नुहोस्', - - 'breadcrumb' => 'हेर्नुहोस्', - - 'content' => [ - - 'tab' => [ - 'label' => 'हेर्नुहोस्', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/np/widgets/account-widget.php b/vendor/filament/filament/resources/lang/np/widgets/account-widget.php deleted file mode 100644 index 1fccb723..00000000 --- a/vendor/filament/filament/resources/lang/np/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'साइन आउट गर्नुहोस्', - ], - - ], - - 'welcome' => 'स्वागतम्', - -]; diff --git a/vendor/filament/filament/resources/lang/np/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/np/widgets/filament-info-widget.php deleted file mode 100644 index 358cdd37..00000000 --- a/vendor/filament/filament/resources/lang/np/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'कागजात', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pl/global-search.php b/vendor/filament/filament/resources/lang/pl/global-search.php deleted file mode 100644 index e8bbb82b..00000000 --- a/vendor/filament/filament/resources/lang/pl/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Wyszukiwanie globalne', - 'placeholder' => 'Szukaj', - ], - - 'no_results_message' => 'Nie znaleziono wyników.', - -]; diff --git a/vendor/filament/filament/resources/lang/pl/layout.php b/vendor/filament/filament/resources/lang/pl/layout.php deleted file mode 100644 index 17a5fd3d..00000000 --- a/vendor/filament/filament/resources/lang/pl/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Zarządzaj subskrypcją', - ], - - 'logout' => [ - 'label' => 'Wyloguj się', - ], - - 'open_database_notifications' => [ - 'label' => 'Otwórz powiadomienia', - ], - - 'open_user_menu' => [ - 'label' => 'Menu użytkownika', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Zwiń pasek boczny', - ], - - 'expand' => [ - 'label' => 'Rozwiń pasek boczny', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Tryb ciemny', - ], - - 'light' => [ - 'label' => 'Tryb jasny', - ], - - 'system' => [ - 'label' => 'Tryb systemowy', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pl/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/pl/pages/auth/edit-profile.php deleted file mode 100644 index 5235d452..00000000 --- a/vendor/filament/filament/resources/lang/pl/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profil', - - 'form' => [ - - 'email' => [ - 'label' => 'Adres e-mail', - ], - - 'name' => [ - 'label' => 'Nazwa', - ], - - 'password' => [ - 'label' => 'Nowe hasło', - ], - - 'password_confirmation' => [ - 'label' => 'Potwierdź nowe hasło', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Zapisz zmiany', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Zapisano', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'wróć', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pl/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/pl/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index c6ae518c..00000000 --- a/vendor/filament/filament/resources/lang/pl/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Zweryfikuj swój adres e-mail', - - 'heading' => 'Weryfikacja adresu e-mail', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Wyślij ponownie', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Nie otrzymałeś wysłanej przez nas wiadomości?', - 'notification_sent' => 'Na adres :email wysłaliśmy instrukcję weryfikacji twojego adresu e-mail.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Wysłaliśmy ponownie wiadomość e-mail.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Zbyt wiele prób ponownej wysyłki wiadomości', - 'body' => 'Spróbuj ponownie za :seconds sekund.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pl/pages/auth/login.php b/vendor/filament/filament/resources/lang/pl/pages/auth/login.php deleted file mode 100644 index 487e62e6..00000000 --- a/vendor/filament/filament/resources/lang/pl/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Logowanie', - - 'heading' => 'Zaloguj się', - - 'actions' => [ - - 'register' => [ - 'before' => 'lub', - 'label' => 'zarejestruj się', - ], - - 'request_password_reset' => [ - 'label' => 'Nie pamiętam hasła', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Adres e-mail', - ], - - 'password' => [ - 'label' => 'Hasło', - ], - - 'remember' => [ - 'label' => 'Zapamiętaj mnie', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Zaloguj się', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Błędny login lub hasło.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Za dużo nieudanych prób logowania', - 'body' => 'Spróbuj ponownie za :seconds sekund.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pl/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/pl/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 929004a8..00000000 --- a/vendor/filament/filament/resources/lang/pl/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Zresetuj hasło', - - 'heading' => 'Zapomniałeś hasła?', - - 'actions' => [ - - 'login' => [ - 'label' => 'wróć do logowania', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Adres e-mail', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Wyślij e-mail', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Zbyt wiele żądań', - 'body' => 'Spróbuj ponownie za :seconds sekund.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pl/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/pl/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 51acede9..00000000 --- a/vendor/filament/filament/resources/lang/pl/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Zresetuj hasło', - - 'heading' => 'Resetowanie hasła', - - 'form' => [ - - 'email' => [ - 'label' => 'Adres e-mail', - ], - - 'password' => [ - 'label' => 'Hasło', - 'validation_attribute' => 'hasło', - ], - - 'password_confirmation' => [ - 'label' => 'Potwierdź hasło', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Zresetuj hasło', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Zbyt wiele prób resetowania', - 'body' => 'Spróbuj ponownie za :seconds sekund.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pl/pages/auth/register.php b/vendor/filament/filament/resources/lang/pl/pages/auth/register.php deleted file mode 100644 index 45ae1d14..00000000 --- a/vendor/filament/filament/resources/lang/pl/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Zarejestruj się', - - 'heading' => 'Rejestracja', - - 'actions' => [ - - 'login' => [ - 'before' => 'lub', - 'label' => 'zaloguj się na swoje konto', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Adres e-mail', - ], - - 'name' => [ - 'label' => 'Nazwa', - ], - - 'password' => [ - 'label' => 'Hasło', - 'validation_attribute' => 'hasło', - ], - - 'password_confirmation' => [ - 'label' => 'Potwierdź hasło', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Zarejestruj się', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Zbyt dużo prób rejestracji', - 'body' => 'Spróbuj ponownie za :seconds sekund.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pl/pages/dashboard.php b/vendor/filament/filament/resources/lang/pl/pages/dashboard.php deleted file mode 100644 index f5118656..00000000 --- a/vendor/filament/filament/resources/lang/pl/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Panel', - -]; diff --git a/vendor/filament/filament/resources/lang/pl/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/pl/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 9b1f6350..00000000 --- a/vendor/filament/filament/resources/lang/pl/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Zapisz zmiany', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Zapisano', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pl/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/pl/resources/pages/create-record.php deleted file mode 100644 index aff9a5a8..00000000 --- a/vendor/filament/filament/resources/lang/pl/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Utwórz :label', - - 'breadcrumb' => 'Utwórz', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Anuluj', - ], - - 'create' => [ - 'label' => 'Utwórz', - ], - - 'create_another' => [ - 'label' => 'Utwórz i utwórz kolejny', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Utworzono', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pl/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/pl/resources/pages/edit-record.php deleted file mode 100644 index 2519b2e7..00000000 --- a/vendor/filament/filament/resources/lang/pl/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Edytuj :label', - - 'breadcrumb' => 'Edytuj', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Anuluj', - ], - - 'save' => [ - 'label' => 'Zapisz', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Edytuj', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Zapisano zmiany', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pl/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/pl/resources/pages/list-records.php deleted file mode 100644 index 3af06606..00000000 --- a/vendor/filament/filament/resources/lang/pl/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Lista', - -]; diff --git a/vendor/filament/filament/resources/lang/pl/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/pl/resources/pages/view-record.php deleted file mode 100644 index 3acbaae8..00000000 --- a/vendor/filament/filament/resources/lang/pl/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Podgląd :label', - - 'breadcrumb' => 'Podgląd', - - 'content' => [ - - 'tab' => [ - 'label' => 'Podgląd', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pl/widgets/account-widget.php b/vendor/filament/filament/resources/lang/pl/widgets/account-widget.php deleted file mode 100644 index b33d786d..00000000 --- a/vendor/filament/filament/resources/lang/pl/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Wyloguj się', - ], - - ], - - 'welcome' => 'Witaj', - -]; diff --git a/vendor/filament/filament/resources/lang/pl/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/pl/widgets/filament-info-widget.php deleted file mode 100644 index cfb9bbd1..00000000 --- a/vendor/filament/filament/resources/lang/pl/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Dokumentacja', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_BR/global-search.php b/vendor/filament/filament/resources/lang/pt_BR/global-search.php deleted file mode 100644 index d2d9da62..00000000 --- a/vendor/filament/filament/resources/lang/pt_BR/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Pesquisa global', - 'placeholder' => 'Pesquisar', - ], - - 'no_results_message' => 'Nenhum resultado encontrado.', - -]; diff --git a/vendor/filament/filament/resources/lang/pt_BR/layout.php b/vendor/filament/filament/resources/lang/pt_BR/layout.php deleted file mode 100644 index 94705ad5..00000000 --- a/vendor/filament/filament/resources/lang/pt_BR/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Gerenciar assinatura', - ], - - 'logout' => [ - 'label' => 'Logout', - ], - - 'open_database_notifications' => [ - 'label' => 'Abrir notificações', - ], - - 'open_user_menu' => [ - 'label' => 'Menu do usuário', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Recolher barra lateral', - ], - - 'expand' => [ - 'label' => 'Expandir barra lateral', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Mudar para tema escuro', - ], - - 'light' => [ - 'label' => 'Mudar para tema claro', - ], - - 'system' => [ - 'label' => 'Mudar para tema do sistema', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_BR/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/pt_BR/pages/auth/edit-profile.php deleted file mode 100644 index bb31dd97..00000000 --- a/vendor/filament/filament/resources/lang/pt_BR/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Perfil', - - 'form' => [ - - 'email' => [ - 'label' => 'E-mail', - ], - - 'name' => [ - 'label' => 'Nome', - ], - - 'password' => [ - 'label' => 'Nova senha', - ], - - 'password_confirmation' => [ - 'label' => 'Confirmar nova senha', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Salvar alterações', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Salvo', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Voltar', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_BR/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/pt_BR/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index f91061f3..00000000 --- a/vendor/filament/filament/resources/lang/pt_BR/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Verifique seu e-mail', - - 'heading' => 'Verifique seu e-mail', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Reenviar', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Não recebeu o e-mail que enviamos?', - 'notification_sent' => 'Enviamos um e-mail para :email contendo instruções sobre como verificar seu e-mail.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Reenviamos o e-mail.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Muitas tentativas de reenvio', - 'body' => 'Por favor tente novamente em :seconds segundos.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_BR/pages/auth/login.php b/vendor/filament/filament/resources/lang/pt_BR/pages/auth/login.php deleted file mode 100644 index f08f96a0..00000000 --- a/vendor/filament/filament/resources/lang/pt_BR/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Login', - - 'heading' => 'Faça login', - - 'actions' => [ - - 'register' => [ - 'before' => 'ou', - 'label' => 'criar uma conta', - ], - - 'request_password_reset' => [ - 'label' => 'Esqueceu sua senha?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-mail', - ], - - 'password' => [ - 'label' => 'Senha', - ], - - 'remember' => [ - 'label' => 'Lembre de mim', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Login', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Essas credenciais não correspondem aos nossos registros.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Muitas tentativas de login', - 'body' => 'Por favor tente novamente em :seconds segundos.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_BR/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/pt_BR/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index cb28a4a5..00000000 --- a/vendor/filament/filament/resources/lang/pt_BR/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Redefina sua senha', - - 'heading' => 'Esqueceu sua senha?', - - 'actions' => [ - - 'login' => [ - 'label' => 'voltar ao login', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-mail', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Enviar email', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Muitas solicitações', - 'body' => 'Por favor tente novamente em :seconds segundos.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_BR/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/pt_BR/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 85136f73..00000000 --- a/vendor/filament/filament/resources/lang/pt_BR/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Redefina sua senha', - - 'heading' => 'Redefina sua senha', - - 'form' => [ - - 'email' => [ - 'label' => 'E-mail', - ], - - 'password' => [ - 'label' => 'Senha', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Confirmar senha', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Redefinir senha', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Muitas tentativas de redefinição', - 'body' => 'Por favor tente novamente em :seconds segundos.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_BR/pages/auth/register.php b/vendor/filament/filament/resources/lang/pt_BR/pages/auth/register.php deleted file mode 100644 index 8dbd513b..00000000 --- a/vendor/filament/filament/resources/lang/pt_BR/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Cadastrar', - - 'heading' => 'Inscrever-se', - - 'actions' => [ - - 'login' => [ - 'before' => 'ou', - 'label' => 'faça login em sua conta', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-mail', - ], - - 'name' => [ - 'label' => 'Nome', - ], - - 'password' => [ - 'label' => 'Senha', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Confirmar senha', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Criar conta', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Muitas tentativas de cadastro', - 'body' => 'Por favor, tente novamente em :seconds segundos.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_BR/pages/dashboard.php b/vendor/filament/filament/resources/lang/pt_BR/pages/dashboard.php deleted file mode 100644 index 0c372d1a..00000000 --- a/vendor/filament/filament/resources/lang/pt_BR/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'Painel de Controle', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'Filtros', - - 'modal' => [ - - 'heading' => 'Filtros', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'Aplicar', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_BR/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/pt_BR/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 1feb69e8..00000000 --- a/vendor/filament/filament/resources/lang/pt_BR/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Salvar alterações', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Salvo', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_BR/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/pt_BR/resources/pages/create-record.php deleted file mode 100644 index 647cffaa..00000000 --- a/vendor/filament/filament/resources/lang/pt_BR/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Criar :label', - - 'breadcrumb' => 'Criar', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancelar', - ], - - 'create' => [ - 'label' => 'Criar', - ], - - 'create_another' => [ - 'label' => 'Salvar e criar outro', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Criado', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_BR/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/pt_BR/resources/pages/edit-record.php deleted file mode 100644 index b666dd86..00000000 --- a/vendor/filament/filament/resources/lang/pt_BR/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Editar :label', - - 'breadcrumb' => 'Editar', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancelar', - ], - - 'save' => [ - 'label' => 'Salvar alterações', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Editar', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Salvo', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_BR/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/pt_BR/resources/pages/list-records.php deleted file mode 100644 index e95007d2..00000000 --- a/vendor/filament/filament/resources/lang/pt_BR/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Listar', - -]; diff --git a/vendor/filament/filament/resources/lang/pt_BR/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/pt_BR/resources/pages/view-record.php deleted file mode 100644 index b8b9eded..00000000 --- a/vendor/filament/filament/resources/lang/pt_BR/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Visualizar :label', - - 'breadcrumb' => 'Visualizar', - - 'content' => [ - - 'tab' => [ - 'label' => 'Visualizar', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_BR/widgets/account-widget.php b/vendor/filament/filament/resources/lang/pt_BR/widgets/account-widget.php deleted file mode 100644 index c6d07d01..00000000 --- a/vendor/filament/filament/resources/lang/pt_BR/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Logout', - ], - - ], - - 'welcome' => 'Bem-vindo', - -]; diff --git a/vendor/filament/filament/resources/lang/pt_BR/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/pt_BR/widgets/filament-info-widget.php deleted file mode 100644 index ea6f414c..00000000 --- a/vendor/filament/filament/resources/lang/pt_BR/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Documentação', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_PT/global-search.php b/vendor/filament/filament/resources/lang/pt_PT/global-search.php deleted file mode 100644 index d2d9da62..00000000 --- a/vendor/filament/filament/resources/lang/pt_PT/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Pesquisa global', - 'placeholder' => 'Pesquisar', - ], - - 'no_results_message' => 'Nenhum resultado encontrado.', - -]; diff --git a/vendor/filament/filament/resources/lang/pt_PT/layout.php b/vendor/filament/filament/resources/lang/pt_PT/layout.php deleted file mode 100644 index b77f09a0..00000000 --- a/vendor/filament/filament/resources/lang/pt_PT/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Gerir assinatura', - ], - - 'logout' => [ - 'label' => 'Terminar Sessão', - ], - - 'open_database_notifications' => [ - 'label' => 'Abrir notificações', - ], - - 'open_user_menu' => [ - 'label' => 'Menu de utilizador', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Recolher barra lateral', - ], - - 'expand' => [ - 'label' => 'Expandir barra lateral', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Activar o modo escuro', - ], - - 'light' => [ - 'label' => 'Activar o modo claro', - ], - - 'system' => [ - 'label' => 'Activar o modo de sistema', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_PT/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/pt_PT/pages/auth/edit-profile.php deleted file mode 100644 index a2de9a6d..00000000 --- a/vendor/filament/filament/resources/lang/pt_PT/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Perfil', - - 'form' => [ - - 'email' => [ - 'label' => 'Endereço de e-mail', - ], - - 'name' => [ - 'label' => 'Nome', - ], - - 'password' => [ - 'label' => 'Nova palavra-passe', - ], - - 'password_confirmation' => [ - 'label' => 'Confirmar nova palavra-passe', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Guardar alterações', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Guardado', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancelar', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_PT/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/pt_PT/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 0fbeca36..00000000 --- a/vendor/filament/filament/resources/lang/pt_PT/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Verifique o seu endereço de e-mail', - - 'heading' => 'Verifique o seu endereço de e-mail', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Reenviar', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Não recebeu o e-mail que enviámos?', - 'notification_sent' => 'Enviámos um e-mail para :email com as instruções sobre como verificar o seu endereço de e-mail.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'E-mail reenviado.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Muitas tentativas de reenvio', - 'body' => 'Por favor, tente novamente em :seconds segundos.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_PT/pages/auth/login.php b/vendor/filament/filament/resources/lang/pt_PT/pages/auth/login.php deleted file mode 100644 index f509e0e2..00000000 --- a/vendor/filament/filament/resources/lang/pt_PT/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Iniciar sessão', - - 'heading' => 'Iniciar sessão', - - 'actions' => [ - - 'register' => [ - 'before' => 'ou', - 'label' => 'criar uma conta', - ], - - 'request_password_reset' => [ - 'label' => 'Esqueceu-se da palavra-passe?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Endereço de e-mail', - ], - - 'password' => [ - 'label' => 'Palavra-passe', - ], - - 'remember' => [ - 'label' => 'Manter sessão', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Iniciar sessão', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'As credênciais não correspondem aos nossos registos.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Muitas tentativas de início de sessão.', - 'body' => 'Por favor, tente novamente em :seconds segundos.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_PT/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/pt_PT/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 9f4c3213..00000000 --- a/vendor/filament/filament/resources/lang/pt_PT/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Redefinir a sua palavra-passe', - - 'heading' => 'Esqueceu-se da palavra-passe?', - - 'actions' => [ - - 'login' => [ - 'label' => 'voltar ao início', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Endereço de e-mail', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Enviar e-mail', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Muitas solicitações', - 'body' => 'Por favor, tente novamente em :seconds segundos.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_PT/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/pt_PT/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 1803fad3..00000000 --- a/vendor/filament/filament/resources/lang/pt_PT/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Redefinir a sua palavra-passe', - - 'heading' => 'Redefinir a sua palavra-passe', - - 'form' => [ - - 'email' => [ - 'label' => 'Endereço de e-mail', - ], - - 'password' => [ - 'label' => 'Palavra-passe', - 'validation_attribute' => 'palavra-passe', - ], - - 'password_confirmation' => [ - 'label' => 'Confirmar palavra-passe', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Redefinir palavra-passe', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Muitas tentativas de redefinição', - 'body' => 'Por favor, tente novamente em :seconds segundos.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_PT/pages/auth/register.php b/vendor/filament/filament/resources/lang/pt_PT/pages/auth/register.php deleted file mode 100644 index de1aebac..00000000 --- a/vendor/filament/filament/resources/lang/pt_PT/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Registar', - - 'heading' => 'Registe-se', - - 'actions' => [ - - 'login' => [ - 'before' => 'ou', - 'label' => 'iniciar sessão na sua conta', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Endereço de e-mail', - ], - - 'name' => [ - 'label' => 'Nome', - ], - - 'password' => [ - 'label' => 'Palavra-passe', - 'validation_attribute' => 'palavra-passe', - ], - - 'password_confirmation' => [ - 'label' => 'Confirmar palavra-passe', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Registar conta', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Muitas tentativas de registo', - 'body' => 'Por favor, tente novamente em :seconds segundos.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_PT/pages/dashboard.php b/vendor/filament/filament/resources/lang/pt_PT/pages/dashboard.php deleted file mode 100644 index 168ce6d4..00000000 --- a/vendor/filament/filament/resources/lang/pt_PT/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'Painel de Controlo', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'Filtro', - - 'modal' => [ - - 'heading' => 'Filtro', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'Aplicar', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_PT/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/pt_PT/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 36829ace..00000000 --- a/vendor/filament/filament/resources/lang/pt_PT/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Guardar alterações', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Guardado', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_PT/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/pt_PT/resources/pages/create-record.php deleted file mode 100644 index 495f426e..00000000 --- a/vendor/filament/filament/resources/lang/pt_PT/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Criar :label', - - 'breadcrumb' => 'Criar', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancelar', - ], - - 'create' => [ - 'label' => 'Criar', - ], - - 'create_another' => [ - 'label' => 'Criar e criar novo', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Criado', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_PT/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/pt_PT/resources/pages/edit-record.php deleted file mode 100644 index af6386c4..00000000 --- a/vendor/filament/filament/resources/lang/pt_PT/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Editar :label', - - 'breadcrumb' => 'Editar', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancelar', - ], - - 'save' => [ - 'label' => 'Guardar alterações', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Editar', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Guardado', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_PT/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/pt_PT/resources/pages/list-records.php deleted file mode 100644 index 1bfaf665..00000000 --- a/vendor/filament/filament/resources/lang/pt_PT/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Listagem', - -]; diff --git a/vendor/filament/filament/resources/lang/pt_PT/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/pt_PT/resources/pages/view-record.php deleted file mode 100644 index b8b9eded..00000000 --- a/vendor/filament/filament/resources/lang/pt_PT/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Visualizar :label', - - 'breadcrumb' => 'Visualizar', - - 'content' => [ - - 'tab' => [ - 'label' => 'Visualizar', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/pt_PT/widgets/account-widget.php b/vendor/filament/filament/resources/lang/pt_PT/widgets/account-widget.php deleted file mode 100644 index 083ec0b6..00000000 --- a/vendor/filament/filament/resources/lang/pt_PT/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Terminar Sessão', - ], - - ], - - 'welcome' => 'Bem-vindo', - -]; diff --git a/vendor/filament/filament/resources/lang/pt_PT/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/pt_PT/widgets/filament-info-widget.php deleted file mode 100644 index ea6f414c..00000000 --- a/vendor/filament/filament/resources/lang/pt_PT/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Documentação', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ro/global-search.php b/vendor/filament/filament/resources/lang/ro/global-search.php deleted file mode 100644 index dffe86b0..00000000 --- a/vendor/filament/filament/resources/lang/ro/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Căutare globală', - 'placeholder' => 'Căutare', - ], - - 'no_results_message' => 'Nu s-au găsit rezultate', - -]; diff --git a/vendor/filament/filament/resources/lang/ro/layout.php b/vendor/filament/filament/resources/lang/ro/layout.php deleted file mode 100644 index e814612f..00000000 --- a/vendor/filament/filament/resources/lang/ro/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Gestionați abonările', - ], - - 'logout' => [ - 'label' => 'Deconectare', - ], - - 'open_database_notifications' => [ - 'label' => 'Deschideți notificările', - ], - - 'open_user_menu' => [ - 'label' => 'Meniul utilizatorului', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Restrânge bara laterală', - ], - - 'expand' => [ - 'label' => 'Extinde bara laterală', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Comutați modul întunecat', - ], - - 'light' => [ - 'label' => 'Comutați modul deschis', - ], - - 'system' => [ - 'label' => 'Activează modul de sistem', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ro/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/ro/pages/auth/edit-profile.php deleted file mode 100644 index 0f94c695..00000000 --- a/vendor/filament/filament/resources/lang/ro/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profil', - - 'form' => [ - - 'email' => [ - 'label' => 'Email', - ], - - 'name' => [ - 'label' => 'Nume', - ], - - 'password' => [ - 'label' => 'Parola noua', - ], - - 'password_confirmation' => [ - 'label' => 'Confirmă parola noua', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Salvează modificările', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Salvat cu succes', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'înapoi', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ro/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/ro/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index aa5c2b37..00000000 --- a/vendor/filament/filament/resources/lang/ro/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Confirmă adresa de email', - - 'heading' => 'Confirmă adresa de email', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Retrimite', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Nu ai primit emailul de verificare?', - 'notification_sent' => 'S-a trimis un email la :email cu instrucțiuni pentru a confirma adresa de email.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Am retrimis emailul.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Prea multe încercări consecutive de retrimitere', - 'body' => 'Încearcă te rog din nou peste :seconds secunde.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ro/pages/auth/login.php b/vendor/filament/filament/resources/lang/ro/pages/auth/login.php deleted file mode 100644 index e259544a..00000000 --- a/vendor/filament/filament/resources/lang/ro/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Autentificare', - - 'heading' => 'Loghează-te în contul tau', - - 'actions' => [ - - 'register' => [ - 'before' => 'sau', - 'label' => 'creează cont', - ], - - 'request_password_reset' => [ - 'label' => 'Ai uitat parola?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Email', - ], - - 'password' => [ - 'label' => 'Parola', - ], - - 'remember' => [ - 'label' => 'Ține-mă minte', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Autentificare', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Emailul sau parola nu sunt corecte', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Te rugăm să aștepți :seconds secunde înainte de a încerca din nou', - 'body' => 'Te rugăm sa reîncerci in :seconds secunde.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ro/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/ro/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 13001190..00000000 --- a/vendor/filament/filament/resources/lang/ro/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Resetează parola', - - 'heading' => 'Ai uitat parola?', - - 'actions' => [ - - 'login' => [ - 'label' => 'înapoi la autentificare', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Email', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Trimite email', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Prea multe încercări consecutive', - 'body' => 'Încearcă te rog din nou peste :seconds secunde.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ro/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/ro/pages/auth/password-reset/reset-password.php deleted file mode 100644 index a5475661..00000000 --- a/vendor/filament/filament/resources/lang/ro/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Resetează parola', - - 'heading' => 'Resetează parola', - - 'form' => [ - - 'email' => [ - 'label' => 'Email', - ], - - 'password' => [ - 'label' => 'Parola', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Confirmă parola', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Resetează parola', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Prea multe încercări consecutive', - 'body' => 'Încearcă te rog din nou peste :seconds secunde.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ro/pages/auth/register.php b/vendor/filament/filament/resources/lang/ro/pages/auth/register.php deleted file mode 100644 index 9353e338..00000000 --- a/vendor/filament/filament/resources/lang/ro/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Înregistrare', - - 'heading' => 'Creează cont', - - 'actions' => [ - - 'login' => [ - 'before' => 'sau', - 'label' => 'loghează-te în contul tau', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Email', - ], - - 'name' => [ - 'label' => 'Nume', - ], - - 'password' => [ - 'label' => 'Parola', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Confirma parola', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Creează cont', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Prea multe încercări consecutive', - 'body' => 'Încearcă te rog din nou peste :seconds secunde.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ro/pages/dashboard.php b/vendor/filament/filament/resources/lang/ro/pages/dashboard.php deleted file mode 100644 index 9f4c2244..00000000 --- a/vendor/filament/filament/resources/lang/ro/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Panoul de control', - -]; diff --git a/vendor/filament/filament/resources/lang/ro/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/ro/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index e253d16c..00000000 --- a/vendor/filament/filament/resources/lang/ro/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Salvează modificările', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Salvat cu succes', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ro/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/ro/resources/pages/create-record.php deleted file mode 100644 index 502302e4..00000000 --- a/vendor/filament/filament/resources/lang/ro/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Creare :label', - - 'breadcrumb' => 'Creare', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Anulare', - ], - - 'create' => [ - 'label' => 'Creare', - ], - - 'create_another' => [ - 'label' => 'Creați și creați altul', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Creat cu succes', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ro/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/ro/resources/pages/edit-record.php deleted file mode 100644 index d110c886..00000000 --- a/vendor/filament/filament/resources/lang/ro/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Editare :label', - - 'breadcrumb' => 'Editare', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Anulare', - ], - - 'save' => [ - 'label' => 'Salvare', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Editare', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Salvat cu succes', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ro/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/ro/resources/pages/list-records.php deleted file mode 100644 index 8e9f61ac..00000000 --- a/vendor/filament/filament/resources/lang/ro/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Listare', - -]; diff --git a/vendor/filament/filament/resources/lang/ro/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/ro/resources/pages/view-record.php deleted file mode 100644 index 5c4e069d..00000000 --- a/vendor/filament/filament/resources/lang/ro/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Vizualizare :label', - - 'breadcrumb' => 'Vizualizare', - - 'content' => [ - - 'tab' => [ - 'label' => 'Vizualizare', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ro/widgets/account-widget.php b/vendor/filament/filament/resources/lang/ro/widgets/account-widget.php deleted file mode 100644 index 97caa505..00000000 --- a/vendor/filament/filament/resources/lang/ro/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Deconectare', - ], - - ], - - 'welcome' => 'Bun venit', - -]; diff --git a/vendor/filament/filament/resources/lang/ro/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/ro/widgets/filament-info-widget.php deleted file mode 100644 index b2a3e448..00000000 --- a/vendor/filament/filament/resources/lang/ro/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Documentație', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ru/global-search.php b/vendor/filament/filament/resources/lang/ru/global-search.php deleted file mode 100644 index 6c9fe0fe..00000000 --- a/vendor/filament/filament/resources/lang/ru/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Глобальный поиск', - 'placeholder' => 'Поиск', - ], - - 'no_results_message' => 'Ничего не найдено.', - -]; diff --git a/vendor/filament/filament/resources/lang/ru/layout.php b/vendor/filament/filament/resources/lang/ru/layout.php deleted file mode 100644 index cecddae7..00000000 --- a/vendor/filament/filament/resources/lang/ru/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Управление подпиской', - ], - - 'logout' => [ - 'label' => 'Выйти', - ], - - 'open_database_notifications' => [ - 'label' => 'Открыть уведомления', - ], - - 'open_user_menu' => [ - 'label' => 'Меню пользователя', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Свернуть боковую панель', - ], - - 'expand' => [ - 'label' => 'Раскрыть боковую панель', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Включить темный режим', - ], - - 'light' => [ - 'label' => 'Включить светлый режим', - ], - - 'system' => [ - 'label' => 'Включить системный режим', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ru/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/ru/pages/auth/edit-profile.php deleted file mode 100644 index a1123d56..00000000 --- a/vendor/filament/filament/resources/lang/ru/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Профиль', - - 'form' => [ - - 'email' => [ - 'label' => 'Адрес электронной почты', - ], - - 'name' => [ - 'label' => 'Имя', - ], - - 'password' => [ - 'label' => 'Новый пароль', - ], - - 'password_confirmation' => [ - 'label' => 'Подтвердите новый пароль', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Сохранить изменения', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Сохранено', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'назад', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ru/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/ru/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 9b006d29..00000000 --- a/vendor/filament/filament/resources/lang/ru/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Подтвердите свой адрес электронной почты', - - 'heading' => 'Подтвердите свой адрес электронной почты', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Отправить еще раз', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Не получили письмо, которое мы отправили?', - 'notification_sent' => 'Мы отправили электронное письмо на адрес :email, содержащее инструкции о том, как подтвердить свой адрес электронной почты.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Мы повторно отправили электронное письмо.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Слишком много попыток повторной отправки', - 'body' => 'Пожалуйста, попробуйте еще раз через :seconds секунд.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ru/pages/auth/login.php b/vendor/filament/filament/resources/lang/ru/pages/auth/login.php deleted file mode 100644 index cec74fcc..00000000 --- a/vendor/filament/filament/resources/lang/ru/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Авторизоваться', - - 'heading' => 'Войдите в свой аккаунт', - - 'actions' => [ - - 'register' => [ - 'before' => 'или', - 'label' => 'зарегистрируйте учетную запись', - ], - - 'request_password_reset' => [ - 'label' => 'Забыли свой пароль?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Адрес электронной почты', - ], - - 'password' => [ - 'label' => 'Пароль', - ], - - 'remember' => [ - 'label' => 'Запомнить меня', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Войти', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Неверное имя пользователя или пароль.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Слишком много попыток входа', - 'body' => 'Пожалуйста, попробуйте еще раз через :seconds секунд.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ru/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/ru/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 6da10f36..00000000 --- a/vendor/filament/filament/resources/lang/ru/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Сбросить пароль', - - 'heading' => 'Забыли свой пароль?', - - 'actions' => [ - - 'login' => [ - 'label' => 'назад на страницу входа', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Адрес электронной почты', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Отправить письмо', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Слишком много попыток', - 'body' => 'Пожалуйста, попробуйте еще раз через :seconds секунд.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ru/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/ru/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 1dd041bf..00000000 --- a/vendor/filament/filament/resources/lang/ru/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Сбросить пароль', - - 'heading' => 'Сбросить пароль', - - 'form' => [ - - 'email' => [ - 'label' => 'Адрес электронной почты', - ], - - 'password' => [ - 'label' => 'Пароль', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Подтвердите пароль', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Сбросить пароль', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Слишком много попыток сброса', - 'body' => 'Пожалуйста, попробуйте еще раз через :seconds секунд.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ru/pages/auth/register.php b/vendor/filament/filament/resources/lang/ru/pages/auth/register.php deleted file mode 100644 index 5bd6e028..00000000 --- a/vendor/filament/filament/resources/lang/ru/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Регистрация', - - 'heading' => 'Регистрация учетной записи', - - 'actions' => [ - - 'login' => [ - 'before' => 'или', - 'label' => 'войти в свой аккаунт', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Адрес электронной почты', - ], - - 'name' => [ - 'label' => 'Имя', - ], - - 'password' => [ - 'label' => 'Пароль', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Подтвердите пароль', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Зарегистрироваться', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Слишком много попыток регистрации', - 'body' => 'Пожалуйста, попробуйте еще раз через :seconds секунд.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ru/pages/dashboard.php b/vendor/filament/filament/resources/lang/ru/pages/dashboard.php deleted file mode 100644 index 10acdc9b..00000000 --- a/vendor/filament/filament/resources/lang/ru/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Инфопанель', - -]; diff --git a/vendor/filament/filament/resources/lang/ru/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/ru/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 1b315206..00000000 --- a/vendor/filament/filament/resources/lang/ru/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Сохранить изменения', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Сохранено', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ru/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/ru/resources/pages/create-record.php deleted file mode 100644 index 4ca2b3df..00000000 --- a/vendor/filament/filament/resources/lang/ru/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Создать :label', - - 'breadcrumb' => 'Создать', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Отмена', - ], - - 'create' => [ - 'label' => 'Создать', - ], - - 'create_another' => [ - 'label' => 'Создать и Создать еще', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Создано', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ru/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/ru/resources/pages/edit-record.php deleted file mode 100644 index 55f07dd5..00000000 --- a/vendor/filament/filament/resources/lang/ru/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Редактирование :label', - - 'breadcrumb' => 'Редактирование', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Отмена', - ], - - 'save' => [ - 'label' => 'Сохранить', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Изменить', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Сохранено', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ru/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/ru/resources/pages/list-records.php deleted file mode 100644 index 7f56a69a..00000000 --- a/vendor/filament/filament/resources/lang/ru/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Список', - -]; diff --git a/vendor/filament/filament/resources/lang/ru/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/ru/resources/pages/view-record.php deleted file mode 100644 index ffbe0233..00000000 --- a/vendor/filament/filament/resources/lang/ru/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Просмотр :label', - - 'breadcrumb' => 'Просмотр', - - 'content' => [ - - 'tab' => [ - 'label' => 'Просмотр', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/ru/widgets/account-widget.php b/vendor/filament/filament/resources/lang/ru/widgets/account-widget.php deleted file mode 100644 index 56191610..00000000 --- a/vendor/filament/filament/resources/lang/ru/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Выход', - ], - - ], - - 'welcome' => 'Добро пожаловать', - -]; diff --git a/vendor/filament/filament/resources/lang/ru/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/ru/widgets/filament-info-widget.php deleted file mode 100644 index 1faf2da1..00000000 --- a/vendor/filament/filament/resources/lang/ru/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Документация', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sk/global-search.php b/vendor/filament/filament/resources/lang/sk/global-search.php deleted file mode 100644 index 9762a0c5..00000000 --- a/vendor/filament/filament/resources/lang/sk/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Vyhľadávanie', - 'placeholder' => 'Hľadať', - ], - - 'no_results_message' => 'Nenašli sa žiadne výsledky.', - -]; diff --git a/vendor/filament/filament/resources/lang/sk/layout.php b/vendor/filament/filament/resources/lang/sk/layout.php deleted file mode 100644 index 14a245a6..00000000 --- a/vendor/filament/filament/resources/lang/sk/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Spravovať predplatné', - ], - - 'logout' => [ - 'label' => 'Odhlásiť sa', - ], - - 'open_database_notifications' => [ - 'label' => 'Zobraziť notifikácie', - ], - - 'open_user_menu' => [ - 'label' => 'Používateľské menu', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Schovať bočný panel', - ], - - 'expand' => [ - 'label' => 'Otvoriť bočný panel', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Zapnúť tmavý režim', - ], - - 'light' => [ - 'label' => 'Zapnúť svetlý režim', - ], - - 'system' => [ - 'label' => 'Zapnúť systémový režim', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sk/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/sk/pages/auth/edit-profile.php deleted file mode 100644 index 83218f8a..00000000 --- a/vendor/filament/filament/resources/lang/sk/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profil', - - 'form' => [ - - 'email' => [ - 'label' => 'Emailová adresa', - ], - - 'name' => [ - 'label' => 'Meno', - ], - - 'password' => [ - 'label' => 'Nové heslo', - ], - - 'password_confirmation' => [ - 'label' => 'Potvrdiť nové heslo', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Uložiť zmeny', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Uložené', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Zrušiť', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sk/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/sk/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 6fe56420..00000000 --- a/vendor/filament/filament/resources/lang/sk/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Potvrďte svoju emailovú adresu', - - 'heading' => 'Potvrďte svoju emailovú adresu', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Odoslať znovu', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Nedostali ste email?', - 'notification_sent' => 'Poslali sme email na adresu :email s inštrukciami na overenie emailovej adresy.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Znovu sme odoslali email.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Príliš veľa pokusov', - 'body' => 'Vyskúšajte to znovu o :seconds sekúnd.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sk/pages/auth/login.php b/vendor/filament/filament/resources/lang/sk/pages/auth/login.php deleted file mode 100644 index f596e95a..00000000 --- a/vendor/filament/filament/resources/lang/sk/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Prihlásenie', - - 'heading' => 'Prihláste sa', - - 'actions' => [ - - 'register' => [ - 'before' => 'or', - 'label' => 'sign up for an account', - ], - - 'request_password_reset' => [ - 'label' => 'Zabudnuté heslo?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Emailová adresa', - ], - - 'password' => [ - 'label' => 'Heslo', - ], - - 'remember' => [ - 'label' => 'Zapamätať si prihlásenie', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Prihlásiť sa', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Zadané údaje sú nesprávne.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Príliš veľa pokusov o prihlásenie', - 'body' => 'Prosím počkajte :seconds sekúnd.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sk/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/sk/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index fa14ca28..00000000 --- a/vendor/filament/filament/resources/lang/sk/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Obnovte svoje heslo', - - 'heading' => 'Zabudli ste svoje heslo?', - - 'actions' => [ - - 'login' => [ - 'label' => 'späť na prihlásenie', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Emailová adresa', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Odoslať email', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Príliš veľa pokusov', - 'body' => 'Prosím skúste to znovu o :seconds sekúnd.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sk/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/sk/pages/auth/password-reset/reset-password.php deleted file mode 100644 index cfce643c..00000000 --- a/vendor/filament/filament/resources/lang/sk/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Obnovte svoje heslo', - - 'heading' => 'Obnovte svoje heslo', - - 'form' => [ - - 'email' => [ - 'label' => 'Emailová adresa', - ], - - 'password' => [ - 'label' => 'Heslo', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Potvrdenie hesla', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Obnoviť heslo', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Príliš veľa pokusov', - 'body' => 'Prosím skúste to znovu o :seconds sekúnd.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sk/pages/auth/register.php b/vendor/filament/filament/resources/lang/sk/pages/auth/register.php deleted file mode 100644 index 63f0127f..00000000 --- a/vendor/filament/filament/resources/lang/sk/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Registrácia', - - 'heading' => 'Registrujte sa', - - 'actions' => [ - - 'login' => [ - 'before' => 'alebo', - 'label' => 'sa prihláste do svojho účtu', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Emailová adresa', - ], - - 'name' => [ - 'label' => 'Meno', - ], - - 'password' => [ - 'label' => 'Heslo', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Potvrdenie hesla', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Prihlásiť sa', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Príliš veľa pokusov o registráciu', - 'body' => 'Prosím vyskúšajte to o :seconds sekúnd.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sk/pages/dashboard.php b/vendor/filament/filament/resources/lang/sk/pages/dashboard.php deleted file mode 100644 index fbb56724..00000000 --- a/vendor/filament/filament/resources/lang/sk/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Nástenka', - -]; diff --git a/vendor/filament/filament/resources/lang/sk/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/sk/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index de618240..00000000 --- a/vendor/filament/filament/resources/lang/sk/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Uložiť zmeny', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Uložené', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sk/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/sk/resources/pages/create-record.php deleted file mode 100644 index 3f6ad544..00000000 --- a/vendor/filament/filament/resources/lang/sk/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Vytvoriť :label', - - 'breadcrumb' => 'Vytvoriť', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Zrušiť', - ], - - 'create' => [ - 'label' => 'Vytvoriť', - ], - - 'create_another' => [ - 'label' => 'Vytvoriť & vytvoriť ďalší', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Vytvoriť', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sk/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/sk/resources/pages/edit-record.php deleted file mode 100644 index 29296ec6..00000000 --- a/vendor/filament/filament/resources/lang/sk/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Upraviť :label', - - 'breadcrumb' => 'Upraviť', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Zrušiť', - ], - - 'save' => [ - 'label' => 'Uložiť', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Upraviť', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Uložené', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sk/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/sk/resources/pages/list-records.php deleted file mode 100644 index 9f779dbd..00000000 --- a/vendor/filament/filament/resources/lang/sk/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Prehľad', - -]; diff --git a/vendor/filament/filament/resources/lang/sk/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/sk/resources/pages/view-record.php deleted file mode 100644 index 7dc7c060..00000000 --- a/vendor/filament/filament/resources/lang/sk/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Zobraziť :label', - - 'breadcrumb' => 'Zobraziť', - - 'content' => [ - - 'tab' => [ - 'label' => 'Zobraziť', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sk/widgets/account-widget.php b/vendor/filament/filament/resources/lang/sk/widgets/account-widget.php deleted file mode 100644 index b8eb34a9..00000000 --- a/vendor/filament/filament/resources/lang/sk/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Odhlásiť sa', - ], - - ], - - 'welcome' => 'Vitajte', - -]; diff --git a/vendor/filament/filament/resources/lang/sk/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/sk/widgets/filament-info-widget.php deleted file mode 100644 index baea6982..00000000 --- a/vendor/filament/filament/resources/lang/sk/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Dokumentácia', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sq/global-search.php b/vendor/filament/filament/resources/lang/sq/global-search.php deleted file mode 100644 index 01c5db1d..00000000 --- a/vendor/filament/filament/resources/lang/sq/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Kërkim global', - 'placeholder' => 'Kërko', - ], - - 'no_results_message' => 'Nuk u gjet asnjë result.', - -]; diff --git a/vendor/filament/filament/resources/lang/sq/layout.php b/vendor/filament/filament/resources/lang/sq/layout.php deleted file mode 100644 index 3878f300..00000000 --- a/vendor/filament/filament/resources/lang/sq/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Menaxho abonimin', - ], - - 'logout' => [ - 'label' => 'Dil', - ], - - 'open_database_notifications' => [ - 'label' => 'Hap njoftimet', - ], - - 'open_user_menu' => [ - 'label' => 'Menuja e përdoruesit', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Mbyll menunë', - ], - - 'expand' => [ - 'label' => 'Hap menunë', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Aktivizo template-in e errët', - ], - - 'light' => [ - 'label' => 'Aktivizo template-in e shndritshëm', - ], - - 'system' => [ - 'label' => 'Aktivizo template-in e sistemit', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sq/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/sq/pages/auth/edit-profile.php deleted file mode 100644 index 5effc080..00000000 --- a/vendor/filament/filament/resources/lang/sq/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profili', - - 'form' => [ - - 'email' => [ - 'label' => 'Emaili', - ], - - 'name' => [ - 'label' => 'Emri', - ], - - 'password' => [ - 'label' => 'Fjalëkalim i ri', - ], - - 'password_confirmation' => [ - 'label' => 'Konfirmo fjalëkalimin e ri', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Ruaj ndryshimet', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'U ruajt', - ], - - ], - - 'actions' => [ - - 'back' => [ - 'label' => 'Mbrapa', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sq/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/sq/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 0733eafe..00000000 --- a/vendor/filament/filament/resources/lang/sq/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Verifikoni adresën tuaj të emailit', - - 'heading' => 'Verifikoni adresën tuaj të emailit', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Ridërgojeni', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Nuk e morët emailin që dërguam?', - 'notification_sent' => 'Ne kemi dërguar një email në :email që përmban udhëzime se si të verifikoni adresën tuaj të emailit.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Ne e kemi ridërguar emailin.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Shumë përpjekje për ridërgim', - 'body' => 'Ju lutemi provoni përsëri në :seconds sekonda.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sq/pages/auth/login.php b/vendor/filament/filament/resources/lang/sq/pages/auth/login.php deleted file mode 100644 index 395e7690..00000000 --- a/vendor/filament/filament/resources/lang/sq/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Hyr', - - 'heading' => 'Hyr', - - 'actions' => [ - - 'register' => [ - 'before' => 'ose', - 'label' => 'rregjistro një llogari të re', - ], - - 'request_password_reset' => [ - 'label' => 'Keni harruar fjalëkalimin?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Email', - ], - - 'password' => [ - 'label' => 'Fjalëkalimin', - ], - - 'remember' => [ - 'label' => 'Mbaj mend fjalëkalimin', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Hyr', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Këto kredenciale nuk përputhen me të dhënat tona.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Shumë përpjekje për hyrje', - 'body' => 'Ju lutemi provoni përsëri në :seconds sekonda.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sq/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/sq/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index ece3ba2c..00000000 --- a/vendor/filament/filament/resources/lang/sq/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Rivendosni fjalëkalimin tuaj', - - 'heading' => 'Keni harruar fjalekalimin tuaj?', - - 'actions' => [ - - 'login' => [ - 'label' => 'kthehu te identifikohesh', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Adresa e emailit', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Dërgoni një email', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Shumë kërkesa', - 'body' => 'Ju lutemi provoni përsëri në :seconds sekonda.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sq/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/sq/pages/auth/password-reset/reset-password.php deleted file mode 100644 index f9e0c1d6..00000000 --- a/vendor/filament/filament/resources/lang/sq/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Rivendosni fjalëkalimin tuaj', - - 'heading' => 'Rivendosni fjalëkalimin tuaj', - - 'form' => [ - - 'email' => [ - 'label' => 'Adresa e emailit', - ], - - 'password' => [ - 'label' => 'Fjalëkalimi', - 'validation_attribute' => 'fjalëkalimi', - ], - - 'password_confirmation' => [ - 'label' => 'Konfirmo fjalëkalimin', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Rivendosni fjalëkalimin', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Shumë përpjekje për rivendosje', - 'body' => 'Ju lutemi provoni përsëri në :seconds sekonda.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sq/pages/auth/register.php b/vendor/filament/filament/resources/lang/sq/pages/auth/register.php deleted file mode 100644 index 7c633787..00000000 --- a/vendor/filament/filament/resources/lang/sq/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Regjistrohu', - - 'heading' => 'Regjistrohu', - - 'actions' => [ - - 'login' => [ - 'before' => 'ose', - 'label' => 'hyni në llogarinë tuaj', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Adresa e emailit', - ], - - 'name' => [ - 'label' => 'Emri', - ], - - 'password' => [ - 'label' => 'Fjalëkalimi', - 'validation_attribute' => 'fjalëkalimi', - ], - - 'password_confirmation' => [ - 'label' => 'Konfirmo fjalëkalimin', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Regjistrohu', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Too many registration attempts', - 'body' => 'Please try again in :seconds seconds.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sq/pages/dashboard.php b/vendor/filament/filament/resources/lang/sq/pages/dashboard.php deleted file mode 100644 index ef79838d..00000000 --- a/vendor/filament/filament/resources/lang/sq/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Faqja Kryesore', - -]; diff --git a/vendor/filament/filament/resources/lang/sq/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/sq/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 0350bcc5..00000000 --- a/vendor/filament/filament/resources/lang/sq/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Ruaj ndryshimet', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Ruaj', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sq/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/sq/resources/pages/create-record.php deleted file mode 100644 index 095e6120..00000000 --- a/vendor/filament/filament/resources/lang/sq/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Krijo :label', - - 'breadcrumb' => 'Krijo', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Anulo', - ], - - 'create' => [ - 'label' => 'Krijo', - ], - - 'create_another' => [ - 'label' => 'Krijo & krijo një tjetër', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'U krijua', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sq/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/sq/resources/pages/edit-record.php deleted file mode 100644 index 3fd46c2c..00000000 --- a/vendor/filament/filament/resources/lang/sq/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Modifiko :label', - - 'breadcrumb' => 'Modifiko', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Anulo', - ], - - 'save' => [ - 'label' => 'Ruaj ndryshimet', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Modifiko', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'U ruajt', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sq/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/sq/resources/pages/list-records.php deleted file mode 100644 index aafc311f..00000000 --- a/vendor/filament/filament/resources/lang/sq/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Listo', - -]; diff --git a/vendor/filament/filament/resources/lang/sq/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/sq/resources/pages/view-record.php deleted file mode 100644 index ed2b8e45..00000000 --- a/vendor/filament/filament/resources/lang/sq/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Pamje :label', - - 'breadcrumb' => 'Pamje', - - 'content' => [ - - 'tab' => [ - 'label' => 'Pamje', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sq/widgets/account-widget.php b/vendor/filament/filament/resources/lang/sq/widgets/account-widget.php deleted file mode 100644 index c7ec310c..00000000 --- a/vendor/filament/filament/resources/lang/sq/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Dil', - ], - - ], - - 'welcome' => 'Mirë se vini', - -]; diff --git a/vendor/filament/filament/resources/lang/sq/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/sq/widgets/filament-info-widget.php deleted file mode 100644 index e5595044..00000000 --- a/vendor/filament/filament/resources/lang/sq/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Documentation', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sv/global-search.php b/vendor/filament/filament/resources/lang/sv/global-search.php deleted file mode 100644 index c6aabbe7..00000000 --- a/vendor/filament/filament/resources/lang/sv/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Global sökning', - 'placeholder' => 'Sök', - ], - - 'no_results_message' => 'Inga sökresultat.', - -]; diff --git a/vendor/filament/filament/resources/lang/sv/layout.php b/vendor/filament/filament/resources/lang/sv/layout.php deleted file mode 100644 index 7e47f5f8..00000000 --- a/vendor/filament/filament/resources/lang/sv/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Hantera prenumeration', - ], - - 'logout' => [ - 'label' => 'Logga ut', - ], - - 'open_database_notifications' => [ - 'label' => 'Öppna notiser', - ], - - 'open_user_menu' => [ - 'label' => 'Användarmeny', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Dölj sidopanel', - ], - - 'expand' => [ - 'label' => 'Visa sidopanel', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Använd mörkt tema', - ], - - 'light' => [ - 'label' => 'Använd ljust tema', - ], - - 'system' => [ - 'label' => 'Följ systemets tema', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sv/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/sv/pages/auth/edit-profile.php deleted file mode 100644 index 1e2f7de2..00000000 --- a/vendor/filament/filament/resources/lang/sv/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profil', - - 'form' => [ - - 'email' => [ - 'label' => 'Mejladress', - ], - - 'name' => [ - 'label' => 'Namn', - ], - - 'password' => [ - 'label' => 'Nytt lösenord', - ], - - 'password_confirmation' => [ - 'label' => 'Bekräfta nytt lösenord', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Spara ändringar', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Sparades', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Avbryt', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sv/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/sv/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 78af79d6..00000000 --- a/vendor/filament/filament/resources/lang/sv/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Verifiera din mejladress', - - 'heading' => 'Verifiera din mejladress', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Skicka igen', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Inte fått mejlmeddelandet vi skickade?', - 'notification_sent' => 'Vi skickade ett meddelande till :email med instruktioner på hur du verifierar din mejladress.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Vi skickade meddelandet igen.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'För många försök att skicka igen', - 'body' => 'Vänligen försök igen om :seconds sekunder.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sv/pages/auth/login.php b/vendor/filament/filament/resources/lang/sv/pages/auth/login.php deleted file mode 100644 index 9ad87414..00000000 --- a/vendor/filament/filament/resources/lang/sv/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Logga in', - - 'heading' => 'Logga in', - - 'actions' => [ - - 'register' => [ - 'before' => 'eller', - 'label' => 'skapa ett konto', - ], - - 'request_password_reset' => [ - 'label' => 'Glömt ditt lösenord?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Mejladress', - ], - - 'password' => [ - 'label' => 'Lösenord', - ], - - 'remember' => [ - 'label' => 'Kom ihåg mig', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Logga in', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Inloggningsuppgifterna matchar inte våra register.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'För många inloggningsförsök', - 'body' => 'Vänligen försök igen om :seconds sekunder.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sv/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/sv/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 0c4b470b..00000000 --- a/vendor/filament/filament/resources/lang/sv/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Återställ ditt lösenord', - - 'heading' => 'Glömt ditt lösenord?', - - 'actions' => [ - - 'login' => [ - 'label' => 'tillbaka till inloggningen', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Mejladress', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Skicka mejlmeddelande', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'För många förfrågningar', - 'body' => 'Vänligen försök igen om :seconds sekunder.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sv/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/sv/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 07e8ae54..00000000 --- a/vendor/filament/filament/resources/lang/sv/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Återställ ditt lösenord', - - 'heading' => 'Återställ ditt lösenord', - - 'form' => [ - - 'email' => [ - 'label' => 'Mejladress', - ], - - 'password' => [ - 'label' => 'Lösenord', - 'validation_attribute' => 'lösenord', - ], - - 'password_confirmation' => [ - 'label' => 'Bekräfta lösenord', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Återställ lösenord', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'För många förfrågningar om återställning', - 'body' => 'Vänligen försök igen om :seconds sekunder.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sv/pages/auth/register.php b/vendor/filament/filament/resources/lang/sv/pages/auth/register.php deleted file mode 100644 index 08215637..00000000 --- a/vendor/filament/filament/resources/lang/sv/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Registrera', - - 'heading' => 'Skapa konto', - - 'actions' => [ - - 'login' => [ - 'before' => 'eller', - 'label' => 'logga in på ditt konto', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Mejladress', - ], - - 'name' => [ - 'label' => 'Namn', - ], - - 'password' => [ - 'label' => 'Lösenord', - 'validation_attribute' => 'lösenord', - ], - - 'password_confirmation' => [ - 'label' => 'Bekräfta lösenord', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Skapa konto', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'För många registreringsförsök', - 'body' => 'Vänligen försök igen om :seconds sekunder.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sv/pages/dashboard.php b/vendor/filament/filament/resources/lang/sv/pages/dashboard.php deleted file mode 100644 index 7d0cd2d8..00000000 --- a/vendor/filament/filament/resources/lang/sv/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Dashboard', - -]; diff --git a/vendor/filament/filament/resources/lang/sv/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/sv/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 888acc56..00000000 --- a/vendor/filament/filament/resources/lang/sv/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Spara ändringar', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Sparades', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sv/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/sv/resources/pages/create-record.php deleted file mode 100644 index af85a569..00000000 --- a/vendor/filament/filament/resources/lang/sv/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Skapa :label', - - 'breadcrumb' => 'Skapa', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Avbryt', - ], - - 'create' => [ - 'label' => 'Skapa', - ], - - 'create_another' => [ - 'label' => 'Skapa & skapa en till', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Skapades', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sv/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/sv/resources/pages/edit-record.php deleted file mode 100644 index e0922406..00000000 --- a/vendor/filament/filament/resources/lang/sv/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Redigera :label', - - 'breadcrumb' => 'Redigera', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Avbryt', - ], - - 'save' => [ - 'label' => 'Spara ändringar', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Redigera', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Sparades', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sv/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/sv/resources/pages/list-records.php deleted file mode 100644 index 3af06606..00000000 --- a/vendor/filament/filament/resources/lang/sv/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Lista', - -]; diff --git a/vendor/filament/filament/resources/lang/sv/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/sv/resources/pages/view-record.php deleted file mode 100644 index 43abbac5..00000000 --- a/vendor/filament/filament/resources/lang/sv/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Visa :label', - - 'breadcrumb' => 'Visa', - - 'content' => [ - - 'tab' => [ - 'label' => 'Visa', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sv/widgets/account-widget.php b/vendor/filament/filament/resources/lang/sv/widgets/account-widget.php deleted file mode 100644 index df81ae94..00000000 --- a/vendor/filament/filament/resources/lang/sv/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Logga ut', - ], - - ], - - 'welcome' => 'Välkommen', - -]; diff --git a/vendor/filament/filament/resources/lang/sv/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/sv/widgets/filament-info-widget.php deleted file mode 100644 index c989f1ac..00000000 --- a/vendor/filament/filament/resources/lang/sv/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Dokumentation', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sw/global-search.php b/vendor/filament/filament/resources/lang/sw/global-search.php deleted file mode 100644 index b8caef7c..00000000 --- a/vendor/filament/filament/resources/lang/sw/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Tafuta kote', - 'placeholder' => 'Tafuta', - ], - - 'no_results_message' => 'Hakuna matokeo ya utafutaji yaliyopatikana.', - -]; diff --git a/vendor/filament/filament/resources/lang/sw/layout.php b/vendor/filament/filament/resources/lang/sw/layout.php deleted file mode 100644 index 17698260..00000000 --- a/vendor/filament/filament/resources/lang/sw/layout.php +++ /dev/null @@ -1,35 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'logout' => [ - 'label' => 'Toka', - ], - - 'open_database_notifications' => [ - 'label' => 'Fungua arifa', - ], - - 'open_user_menu' => [ - 'label' => 'Menyu ya Mtumiaji', - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Geuza hali ya giza', - ], - - 'light' => [ - 'label' => 'Geuza hali ya mwanga', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sw/pages/auth/login.php b/vendor/filament/filament/resources/lang/sw/pages/auth/login.php deleted file mode 100644 index d2186510..00000000 --- a/vendor/filament/filament/resources/lang/sw/pages/auth/login.php +++ /dev/null @@ -1,47 +0,0 @@ - 'Ingia', - - 'heading' => 'Ingia kwenye akaunti yako', - - 'form' => [ - - 'email' => [ - 'label' => 'Barua pepe', - ], - - 'password' => [ - 'label' => 'Nenosiri', - ], - - 'remember' => [ - 'label' => 'Nikumbuke', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Ingia', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Hati hizi hazilingani na rekodi zetu.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Majaribio mengi sana ya kuingia. Tafadhali jaribu tena ndani ya sekunde :seconds.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sw/pages/dashboard.php b/vendor/filament/filament/resources/lang/sw/pages/dashboard.php deleted file mode 100644 index 8ab9266a..00000000 --- a/vendor/filament/filament/resources/lang/sw/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Dashibodi', - -]; diff --git a/vendor/filament/filament/resources/lang/sw/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/sw/resources/pages/create-record.php deleted file mode 100644 index ae8923a4..00000000 --- a/vendor/filament/filament/resources/lang/sw/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Tengeneza :label', - - 'breadcrumb' => 'Tengeneza', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Ghairi', - ], - - 'create' => [ - 'label' => 'Tengeneza', - ], - - 'create_another' => [ - 'label' => 'Tengeneza na tengeneza tena', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Imeundwa', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sw/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/sw/resources/pages/edit-record.php deleted file mode 100644 index 95ab7ff4..00000000 --- a/vendor/filament/filament/resources/lang/sw/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Hariri :label', - - 'breadcrumb' => 'Hariri', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Ghairi', - ], - - 'save' => [ - 'label' => 'Hifadhi mabadiliko', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Hariri', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Imehifadhiwa', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sw/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/sw/resources/pages/list-records.php deleted file mode 100644 index 02c4fae3..00000000 --- a/vendor/filament/filament/resources/lang/sw/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Listi', - -]; diff --git a/vendor/filament/filament/resources/lang/sw/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/sw/resources/pages/view-record.php deleted file mode 100644 index 2eb49ac2..00000000 --- a/vendor/filament/filament/resources/lang/sw/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Angalia :label', - - 'breadcrumb' => 'Angalia', - - 'content' => [ - - 'tab' => [ - 'label' => 'Angalia', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/sw/widgets/account-widget.php b/vendor/filament/filament/resources/lang/sw/widgets/account-widget.php deleted file mode 100644 index d54606dd..00000000 --- a/vendor/filament/filament/resources/lang/sw/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Toka', - ], - - ], - - 'welcome' => 'Karibu', - -]; diff --git a/vendor/filament/filament/resources/lang/sw/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/sw/widgets/filament-info-widget.php deleted file mode 100644 index 91230184..00000000 --- a/vendor/filament/filament/resources/lang/sw/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Nyaraka', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/tr/global-search.php b/vendor/filament/filament/resources/lang/tr/global-search.php deleted file mode 100644 index 7f98a4cc..00000000 --- a/vendor/filament/filament/resources/lang/tr/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Genel arama', - 'placeholder' => 'Ara', - ], - - 'no_results_message' => 'Sonuç bulunamadı.', - -]; diff --git a/vendor/filament/filament/resources/lang/tr/layout.php b/vendor/filament/filament/resources/lang/tr/layout.php deleted file mode 100644 index 61901101..00000000 --- a/vendor/filament/filament/resources/lang/tr/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Aboneliği yönet', - ], - - 'logout' => [ - 'label' => 'Oturumu kapat', - ], - - 'open_database_notifications' => [ - 'label' => 'Bildirimleri aç', - ], - - 'open_user_menu' => [ - 'label' => 'Kullanıcı menüsü', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Kenar çubuğunu daralt', - ], - - 'expand' => [ - 'label' => 'Kenar çubuğunu genişlet', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Koyu tema', - ], - - 'light' => [ - 'label' => 'Açık tema', - ], - - 'system' => [ - 'label' => 'Sistem varsayılanı', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/tr/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/tr/pages/auth/edit-profile.php deleted file mode 100644 index 640704b9..00000000 --- a/vendor/filament/filament/resources/lang/tr/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Profil', - - 'form' => [ - - 'email' => [ - 'label' => 'E-posta adresi', - ], - - 'name' => [ - 'label' => 'Ad', - ], - - 'password' => [ - 'label' => 'Yeni şifre', - ], - - 'password_confirmation' => [ - 'label' => 'Yeni şifreyi onayla', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Değişiklikleri Kaydet', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Kaydedildi', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'İptal', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/tr/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/tr/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 6f37c066..00000000 --- a/vendor/filament/filament/resources/lang/tr/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'E-posta adresinizi doğrulayın', - - 'heading' => 'E-posta adresinizi doğrulayın', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Yeniden Gönder', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Gönderdiğimiz e-postayı almadınız mı?', - 'notification_sent' => ':email adresine, e-posta adresinizi nasıl doğrulayacağınıza ilişkin talimatları içeren bir e-posta gönderdik.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'E-posta yeniden gönderildi.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Çok fazla yeniden gönderme denemesi', - 'body' => 'Lütfen :seconds saniye sonra tekrar deneyin.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/tr/pages/auth/login.php b/vendor/filament/filament/resources/lang/tr/pages/auth/login.php deleted file mode 100644 index 6ac8f5b2..00000000 --- a/vendor/filament/filament/resources/lang/tr/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Giriş Yap', - - 'heading' => 'Oturum Aç', - - 'actions' => [ - - 'register' => [ - 'before' => 'veya', - 'label' => 'bir hesap oluşturun', - ], - - 'request_password_reset' => [ - 'label' => 'Şifrenizi mi unuttunuz?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-posta adresi', - ], - - 'password' => [ - 'label' => 'Şifre', - ], - - 'remember' => [ - 'label' => 'Beni Hatırla', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Giriş Yap', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Bu kimlik bilgileri kayıtlarımızla eşleşmiyor.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Çok fazla giriş denemesi', - 'body' => 'Lütfen :seconds saniye sonra tekrar deneyin.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/tr/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/tr/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 282bbe05..00000000 --- a/vendor/filament/filament/resources/lang/tr/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Şifrenizi Sıfırlayın', - - 'heading' => 'Şifrenizi mi unuttunuz?', - - 'actions' => [ - - 'login' => [ - 'label' => 'girişe geri dön', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-posta adresi', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'E-posta gönder', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Çok fazla istek', - 'body' => 'Lütfen :seconds saniye sonra tekrar deneyin.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/tr/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/tr/pages/auth/password-reset/reset-password.php deleted file mode 100644 index bdd1cbad..00000000 --- a/vendor/filament/filament/resources/lang/tr/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Şifrenizi Sıfırlayın', - - 'heading' => 'Şifrenizi Sıfırlayın', - - 'form' => [ - - 'email' => [ - 'label' => 'E-posta adresi', - ], - - 'password' => [ - 'label' => 'Şifre', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Şifreyi Onayla', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Şifreyi Sıfırla', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Çok fazla sıfırlama denemesi', - 'body' => 'Lütfen :seconds saniye sonra tekrar deneyin.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/tr/pages/auth/register.php b/vendor/filament/filament/resources/lang/tr/pages/auth/register.php deleted file mode 100644 index 905afbf2..00000000 --- a/vendor/filament/filament/resources/lang/tr/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Kayıt Ol', - - 'heading' => 'Üye Ol', - - 'actions' => [ - - 'login' => [ - 'before' => 'veya', - 'label' => 'hesabınıza giriş yapın', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'E-posta adresi', - ], - - 'name' => [ - 'label' => 'Ad', - ], - - 'password' => [ - 'label' => 'Şifre', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Şifreyi Onayla', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Üye Ol', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Çok fazla kayıt denemesi', - 'body' => 'Lütfen :seconds saniye sonra tekrar deneyin.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/tr/pages/dashboard.php b/vendor/filament/filament/resources/lang/tr/pages/dashboard.php deleted file mode 100644 index e5086314..00000000 --- a/vendor/filament/filament/resources/lang/tr/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Genel Bakış', - -]; diff --git a/vendor/filament/filament/resources/lang/tr/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/tr/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index a6462236..00000000 --- a/vendor/filament/filament/resources/lang/tr/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Değişiklikleri Kaydet', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Kaydedildi', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/tr/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/tr/resources/pages/create-record.php deleted file mode 100644 index c8759f01..00000000 --- a/vendor/filament/filament/resources/lang/tr/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - ':label oluştur', - - 'breadcrumb' => 'Oluştur', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'İptal', - ], - - 'create' => [ - 'label' => 'Oluştur', - ], - - 'create_another' => [ - 'label' => 'Oluştur & yeni oluştur', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Oluşturuldu', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/tr/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/tr/resources/pages/edit-record.php deleted file mode 100644 index 6c6a81df..00000000 --- a/vendor/filament/filament/resources/lang/tr/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - ':label düzenle', - - 'breadcrumb' => 'Düzenle', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'İptal', - ], - - 'save' => [ - 'label' => 'Değişiklikleri kaydet', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Düzenle', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Kaydedildi', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/tr/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/tr/resources/pages/list-records.php deleted file mode 100644 index 51ebe1a5..00000000 --- a/vendor/filament/filament/resources/lang/tr/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Liste', - -]; diff --git a/vendor/filament/filament/resources/lang/tr/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/tr/resources/pages/view-record.php deleted file mode 100644 index 7717ff77..00000000 --- a/vendor/filament/filament/resources/lang/tr/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - ':label görüntüle', - - 'breadcrumb' => 'Görüntüle', - - 'content' => [ - - 'tab' => [ - 'label' => 'Görüntüle', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/tr/widgets/account-widget.php b/vendor/filament/filament/resources/lang/tr/widgets/account-widget.php deleted file mode 100644 index 005087f8..00000000 --- a/vendor/filament/filament/resources/lang/tr/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Oturumu kapat', - ], - - ], - - 'welcome' => 'Hoş geldin', - -]; diff --git a/vendor/filament/filament/resources/lang/tr/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/tr/widgets/filament-info-widget.php deleted file mode 100644 index a5d98131..00000000 --- a/vendor/filament/filament/resources/lang/tr/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Dökümantasyon', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uk/global-search.php b/vendor/filament/filament/resources/lang/uk/global-search.php deleted file mode 100644 index 7dd6af4b..00000000 --- a/vendor/filament/filament/resources/lang/uk/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Глобальний пошук', - 'placeholder' => 'Пошук', - ], - - 'no_results_message' => 'Не знайдено жодних результатів пошуку.', - -]; diff --git a/vendor/filament/filament/resources/lang/uk/layout.php b/vendor/filament/filament/resources/lang/uk/layout.php deleted file mode 100644 index 87c69a0c..00000000 --- a/vendor/filament/filament/resources/lang/uk/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Керувати підпискою', - ], - - 'logout' => [ - 'label' => 'Вийти', - ], - - 'open_database_notifications' => [ - 'label' => 'Відкрити сповіщення', - ], - - 'open_user_menu' => [ - 'label' => 'Меню користувача', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Згорнути бокову панель', - ], - - 'expand' => [ - 'label' => 'Розгорнути бокову панель', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Увімкнути темний режим', - ], - - 'light' => [ - 'label' => 'Увімкнути світлий режим', - ], - - 'system' => [ - 'label' => 'Увімнути системний режим', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uk/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/uk/pages/auth/edit-profile.php deleted file mode 100644 index d325aa0f..00000000 --- a/vendor/filament/filament/resources/lang/uk/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Профіль', - - 'form' => [ - - 'email' => [ - 'label' => 'Електронна пошта', - ], - - 'name' => [ - 'label' => 'Ім\'я', - ], - - 'password' => [ - 'label' => 'Новий пароль', - ], - - 'password_confirmation' => [ - 'label' => 'Введіть новий пароль ще раз', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Зберегти зміни', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Збережено', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Відмінити', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uk/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/uk/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 2a4be957..00000000 --- a/vendor/filament/filament/resources/lang/uk/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Підтвердіть електронну пошту', - - 'heading' => 'Підтвердіть електронну пошту', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Надіслати ще раз', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Не отримали нашого листа?', - 'notification_sent' => 'Ми надіслали на пошту :email лист з поясненням, як підтвердити свою електронну пошту.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Ми надіслали вам лист ще раз.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Забагато спроб повторно надіслати лист', - 'body' => 'Будь ласка, спробуйте ще раз через :seconds секунд.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uk/pages/auth/login.php b/vendor/filament/filament/resources/lang/uk/pages/auth/login.php deleted file mode 100644 index 75b16187..00000000 --- a/vendor/filament/filament/resources/lang/uk/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Логін', - - 'heading' => 'Увійдіть у свій акаунт', - - 'actions' => [ - - 'register' => [ - 'before' => 'або', - 'label' => 'зареєструйтеся', - ], - - 'request_password_reset' => [ - 'label' => 'Забули пароль?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Електронна пошта', - ], - - 'password' => [ - 'label' => 'Пароль', - ], - - 'remember' => [ - 'label' => 'Запам’ятай мене', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Увійти', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Ці дані не відповідають нашим записам.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Забагато спроб входу в систему', - 'body' => 'Будь ласка, спробуйте ще раз через :seconds секунд.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uk/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/uk/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 6577e875..00000000 --- a/vendor/filament/filament/resources/lang/uk/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Скинути пароль', - - 'heading' => 'Забули свій пароль?', - - 'actions' => [ - - 'login' => [ - 'label' => 'повернутись до сторінки входу', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Електронна пошта', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Надіслати лист', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Забагато запитів', - 'body' => 'Будь ласка, спробуйте ще раз через :seconds секунд.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uk/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/uk/pages/auth/password-reset/reset-password.php deleted file mode 100644 index de67c101..00000000 --- a/vendor/filament/filament/resources/lang/uk/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ -reset-password.php 'Скинути пароль', - - 'heading' => 'Скинути пароль', - - 'form' => [ - - 'email' => [ - 'label' => 'Електронна пошта', - ], - - 'password' => [ - 'label' => 'Пароль', - 'validation_attribute' => 'пароль', - ], - - 'password_confirmation' => [ - 'label' => 'Введіть пароль ще раз', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Скинути пароль', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Забагато спроб скинути пароль', - 'body' => 'Будь ласка, спробуйте ще раз через :seconds секунд.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uk/pages/auth/register.php b/vendor/filament/filament/resources/lang/uk/pages/auth/register.php deleted file mode 100644 index 176954e8..00000000 --- a/vendor/filament/filament/resources/lang/uk/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Зареєструйтеся', - - 'heading' => 'Зареєструйтеся', - - 'actions' => [ - - 'login' => [ - 'before' => 'або', - 'label' => 'ввійдіть у свій акаунт', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Електронна пошта', - ], - - 'name' => [ - 'label' => 'Ім\'я', - ], - - 'password' => [ - 'label' => 'Пароль', - 'validation_attribute' => 'пароль', - ], - - 'password_confirmation' => [ - 'label' => 'Введіть пароль ще раз', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Зареєструватися', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Забагато спроб зареєструватися', - 'body' => 'Будь ласка, спробуйте ще раз через :seconds секунд.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uk/pages/dashboard.php b/vendor/filament/filament/resources/lang/uk/pages/dashboard.php deleted file mode 100644 index 80864c2a..00000000 --- a/vendor/filament/filament/resources/lang/uk/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Інфопанель', - -]; diff --git a/vendor/filament/filament/resources/lang/uk/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/uk/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 9f1f0332..00000000 --- a/vendor/filament/filament/resources/lang/uk/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Зберегти зміни', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Збережено', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uk/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/uk/resources/pages/create-record.php deleted file mode 100644 index 17f461db..00000000 --- a/vendor/filament/filament/resources/lang/uk/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Створити :label', - - 'breadcrumb' => 'Створити', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Скасувати', - ], - - 'create' => [ - 'label' => 'Створити', - ], - - 'create_another' => [ - 'label' => 'Створити та створити наступне', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Створено', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uk/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/uk/resources/pages/edit-record.php deleted file mode 100644 index 8dac50fb..00000000 --- a/vendor/filament/filament/resources/lang/uk/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Змінити :label', - - 'breadcrumb' => 'Змінити', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Скасувати', - ], - - 'save' => [ - 'label' => 'Зберегти', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Змінити', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Збережено', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uk/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/uk/resources/pages/list-records.php deleted file mode 100644 index e5815490..00000000 --- a/vendor/filament/filament/resources/lang/uk/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Перегляд', - -]; diff --git a/vendor/filament/filament/resources/lang/uk/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/uk/resources/pages/view-record.php deleted file mode 100644 index 25d7cd71..00000000 --- a/vendor/filament/filament/resources/lang/uk/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Перегляд :label', - - 'breadcrumb' => 'Перегляд', - - 'content' => [ - - 'tab' => [ - 'label' => 'Перегляд', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uk/widgets/account-widget.php b/vendor/filament/filament/resources/lang/uk/widgets/account-widget.php deleted file mode 100644 index 3816de59..00000000 --- a/vendor/filament/filament/resources/lang/uk/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Вийти', - ], - - ], - - 'welcome' => 'Вітаємо', - -]; diff --git a/vendor/filament/filament/resources/lang/uk/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/uk/widgets/filament-info-widget.php deleted file mode 100644 index 83d11e7f..00000000 --- a/vendor/filament/filament/resources/lang/uk/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Документація', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uz/global-search.php b/vendor/filament/filament/resources/lang/uz/global-search.php deleted file mode 100644 index 49941abe..00000000 --- a/vendor/filament/filament/resources/lang/uz/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Global qidiruv', - 'placeholder' => 'Qidirish', - ], - - 'no_results_message' => 'Hech narsa topilmadi.', - -]; diff --git a/vendor/filament/filament/resources/lang/uz/layout.php b/vendor/filament/filament/resources/lang/uz/layout.php deleted file mode 100644 index aa6661cd..00000000 --- a/vendor/filament/filament/resources/lang/uz/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Obuna boshqaruvi', - ], - - 'logout' => [ - 'label' => 'Chiqish', - ], - - 'open_database_notifications' => [ - 'label' => 'Bildirishnomalarni ochish', - ], - - 'open_user_menu' => [ - 'label' => 'Foydalanuvchi menyusi', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Yon panelni yig\'ish', - ], - - 'expand' => [ - 'label' => 'Yon panelni yoyish', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'To\'q rejimni ishlatish', - ], - - 'light' => [ - 'label' => 'Yorqin rejimni ishlatish', - ], - - 'system' => [ - 'label' => 'Tizim rejimidan foydalanish', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uz/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/uz/pages/auth/edit-profile.php deleted file mode 100644 index 1e96a261..00000000 --- a/vendor/filament/filament/resources/lang/uz/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Hisob qaydnomasi', - - 'form' => [ - - 'email' => [ - 'label' => 'Elektron pochta manzili', - ], - - 'name' => [ - 'label' => 'Ism', - ], - - 'password' => [ - 'label' => 'Yangi parol', - ], - - 'password_confirmation' => [ - 'label' => 'Yangi parolni tasdiqlang', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'O\'zgarishlarni saqlash', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Saqlandi', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Qaytish', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uz/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/uz/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 0b36baba..00000000 --- a/vendor/filament/filament/resources/lang/uz/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Elektron pochta manzilingizni tasdiqlang', - - 'heading' => 'Hurmatli foydalanuvchi elektron pochta manzilingizni tasdiqlang', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Yana bir bor yuborish', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Biz yuborgan xatni olmadingizmi?', - 'notification_sent' => 'Biz :email manziliga elektron pochta manzilingizni tekshirish bo\'yicha ko\'rsatmalar bilan xat yubordik. Elektron pochtangizni tekshiring', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Biz elektron pochta xabarini qayta yubordik.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Qayta yuborishlar soni juda koʻp', - 'body' => 'Iltimos, :seconds soniyadan keyin qayta urinib ko\'ring.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uz/pages/auth/login.php b/vendor/filament/filament/resources/lang/uz/pages/auth/login.php deleted file mode 100644 index b008bf4f..00000000 --- a/vendor/filament/filament/resources/lang/uz/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Tizimga kirish', - - 'heading' => 'Hisobingizga kiring', - - 'actions' => [ - - 'register' => [ - 'before' => 'yoki', - 'label' => 'hisob qaydnomasini ro\'yxatdan o\'tkazing', - ], - - 'request_password_reset' => [ - 'label' => 'Parolni unutdingizmi?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Elektron pochta manzili', - ], - - 'password' => [ - 'label' => 'Parol', - ], - - 'remember' => [ - 'label' => 'Meni eslab qol', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Hisob qaydnomasiga kirish', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Siz kiritgan foydalanuvchi nomi yoki parol noto\'g\'ri.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Kirish uchun urinishlar soni juda koʻp', - 'body' => 'Iltimos, :seconds soniyadan keyin qayta urinib ko\'ring.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uz/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/uz/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index eb5210f2..00000000 --- a/vendor/filament/filament/resources/lang/uz/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Parolni qayta o\'rnatish', - - 'heading' => 'Parolni unutdingizmi?', - - 'actions' => [ - - 'login' => [ - 'label' => 'Kirish sahifasiga qaytish', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Elektron pochta manzili', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Xabar yuborish', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Urinishlar soni juda ko\'p', - 'body' => 'Iltimos, :seconds soniyadan keyin qayta urinib ko\'ring.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uz/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/uz/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 579092a0..00000000 --- a/vendor/filament/filament/resources/lang/uz/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Parolni qayta o\'rnatish', - - 'heading' => 'Parolni qayta o\'rnatish', - - 'form' => [ - - 'email' => [ - 'label' => 'Elektron pochta manzili', - ], - - 'password' => [ - 'label' => 'Parol', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Parolni tasdiqlash', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Parolni qayta o\'rnatish', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Urinishlar juda ko\'p', - 'body' => 'Iltimos, :seconds soniyadan so\'ng qayta urinib ko\'ring.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uz/pages/auth/register.php b/vendor/filament/filament/resources/lang/uz/pages/auth/register.php deleted file mode 100644 index a14c7d3c..00000000 --- a/vendor/filament/filament/resources/lang/uz/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - 'Ro\'yxatdan o\'tish', - - 'heading' => 'Hisob qaydnomasini ro\'yxatdan o\'tkazing', - - 'actions' => [ - - 'login' => [ - 'before' => 'yoki', - 'label' => 'o\'z hisob qaydnomangiz orqali kiring', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Elektron pochta manzili', - ], - - 'name' => [ - 'label' => 'Ism', - ], - - 'password' => [ - 'label' => 'Parol', - 'validation_attribute' => 'password', - ], - - 'password_confirmation' => [ - 'label' => 'Parolni tasdiqlash', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Roʻyxatdan oʻtish', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Roʻyxatdan oʻtishga urinishlar juda koʻp', - 'body' => 'Iltimos, :seconds soniyadan keyin qayta urinib ko\'ring.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uz/pages/dashboard.php b/vendor/filament/filament/resources/lang/uz/pages/dashboard.php deleted file mode 100644 index c4a4760b..00000000 --- a/vendor/filament/filament/resources/lang/uz/pages/dashboard.php +++ /dev/null @@ -1,33 +0,0 @@ - 'Asosiy panel', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'Filtr', - - 'modal' => [ - - 'heading' => 'Filtr', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'Murojaat qilish', - - ], - - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uz/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/uz/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index bfc2ab3f..00000000 --- a/vendor/filament/filament/resources/lang/uz/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'O\'zgarishlarni saqlash', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Saqlandi', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uz/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/uz/resources/pages/create-record.php deleted file mode 100644 index 31205916..00000000 --- a/vendor/filament/filament/resources/lang/uz/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Yangi :label yaratish', - - 'breadcrumb' => 'Yaratish', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Bekor qilish', - ], - - 'create' => [ - 'label' => 'Yaratish', - ], - - 'create_another' => [ - 'label' => 'Yaratish va yana boshqa yaratish', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Yaratildi', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uz/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/uz/resources/pages/edit-record.php deleted file mode 100644 index 3cfbc0e1..00000000 --- a/vendor/filament/filament/resources/lang/uz/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - ':labelni tahrirlash', - - 'breadcrumb' => 'Tahrirlash', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Bekor qilish', - ], - - 'save' => [ - 'label' => 'Saqlash', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Tahrirlash', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Saqlandi', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uz/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/uz/resources/pages/list-records.php deleted file mode 100644 index af234f31..00000000 --- a/vendor/filament/filament/resources/lang/uz/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Ro\'yxat', - -]; diff --git a/vendor/filament/filament/resources/lang/uz/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/uz/resources/pages/view-record.php deleted file mode 100644 index ce843617..00000000 --- a/vendor/filament/filament/resources/lang/uz/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - ':labelni ko\'rish', - - 'breadcrumb' => 'Ko\'rish', - - 'content' => [ - - 'tab' => [ - 'label' => 'Ko\'rish', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/uz/widgets/account-widget.php b/vendor/filament/filament/resources/lang/uz/widgets/account-widget.php deleted file mode 100644 index c35d38b7..00000000 --- a/vendor/filament/filament/resources/lang/uz/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Chiqish', - ], - - ], - - 'welcome' => 'Hush kelibsiz', - -]; diff --git a/vendor/filament/filament/resources/lang/uz/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/uz/widgets/filament-info-widget.php deleted file mode 100644 index bcedd2d5..00000000 --- a/vendor/filament/filament/resources/lang/uz/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Hujjat', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/vi/global-search.php b/vendor/filament/filament/resources/lang/vi/global-search.php deleted file mode 100644 index 7a5c2e25..00000000 --- a/vendor/filament/filament/resources/lang/vi/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => 'Tìm kiếm toàn hệ thống', - 'placeholder' => 'Tìm kiếm', - ], - - 'no_results_message' => 'Không tìm thấy kết quả nào.', - -]; diff --git a/vendor/filament/filament/resources/lang/vi/layout.php b/vendor/filament/filament/resources/lang/vi/layout.php deleted file mode 100644 index aaef0371..00000000 --- a/vendor/filament/filament/resources/lang/vi/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => 'Quản lý gói đăng ký', - ], - - 'logout' => [ - 'label' => 'Đăng xuất', - ], - - 'open_database_notifications' => [ - 'label' => 'Mở thông báo', - ], - - 'open_user_menu' => [ - 'label' => 'Menu người dùng', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => 'Thu gọn thanh bên', - ], - - 'expand' => [ - 'label' => 'Mở rộng thanh bên', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => 'Bật chế độ tối', - ], - - 'light' => [ - 'label' => 'Bật chế độ sáng', - ], - - 'system' => [ - 'label' => 'Bật chế độ hệ thống', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/vi/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/vi/pages/auth/edit-profile.php deleted file mode 100644 index 8450b199..00000000 --- a/vendor/filament/filament/resources/lang/vi/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - 'Hồ sơ', - - 'form' => [ - - 'email' => [ - 'label' => 'Địa chỉ email', - ], - - 'name' => [ - 'label' => 'Họ tên', - ], - - 'password' => [ - 'label' => 'Mật khẩu mới', - ], - - 'password_confirmation' => [ - 'label' => 'Xác nhận mật khẩu mới', - ], - - 'actions' => [ - - 'save' => [ - 'label' => 'Lưu thay đổi', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Đã lưu', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => 'quay lại', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/vi/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/vi/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index f76c0d50..00000000 --- a/vendor/filament/filament/resources/lang/vi/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - 'Xác minh địa chỉ email', - - 'heading' => 'Xác minh địa chỉ email', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => 'Gửi lại', - ], - - ], - - 'messages' => [ - 'notification_not_received' => 'Chưa nhận được email?', - 'notification_sent' => 'Chúng tôi đã gửi một email đến :email chứa hướng dẫn về cách xác minh địa chỉ email của bạn.', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => 'Chúng tôi đã gửi lại email.', - ], - - 'notification_resend_throttled' => [ - 'title' => 'Quá nhiều lần gửi lại', - 'body' => 'Vui lòng thử lại sau :seconds giây.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/vi/pages/auth/login.php b/vendor/filament/filament/resources/lang/vi/pages/auth/login.php deleted file mode 100644 index fd4e8d87..00000000 --- a/vendor/filament/filament/resources/lang/vi/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - 'Đăng nhập', - - 'heading' => 'Đăng nhập', - - 'actions' => [ - - 'register' => [ - 'before' => 'hoặc', - 'label' => 'đăng ký tài khoản', - ], - - 'request_password_reset' => [ - 'label' => 'Quên mật khẩu?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Địa chỉ email', - ], - - 'password' => [ - 'label' => 'Mật khẩu', - ], - - 'remember' => [ - 'label' => 'Ghi nhớ đăng nhập', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => 'Đăng nhập', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => 'Thông tin đăng nhập không chính xác.', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Quá nhiều lần đăng nhập thất bại', - 'body' => 'Vui lòng thử lại sau :seconds giây.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/vi/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/vi/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index 65594912..00000000 --- a/vendor/filament/filament/resources/lang/vi/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - 'Khôi phục mật khẩu', - - 'heading' => 'Quên mật khẩu?', - - 'actions' => [ - - 'login' => [ - 'label' => 'quay lại đăng nhập', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Địa chỉ email', - ], - - 'actions' => [ - - 'request' => [ - 'label' => 'Gửi email', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Quá nhiều yêu cầu', - 'body' => 'Vui lòng thử lại sau :seconds giây.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/vi/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/vi/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 43846b08..00000000 --- a/vendor/filament/filament/resources/lang/vi/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - 'Đặt lại mật khẩu', - - 'heading' => 'Đặt lại mật khẩu', - - 'form' => [ - - 'email' => [ - 'label' => 'Địa chỉ email', - ], - - 'password' => [ - 'label' => 'Mật khẩu', - 'validation_attribute' => 'mật khẩu', - ], - - 'password_confirmation' => [ - 'label' => 'Xác nhận mật khẩu', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => 'Đặt lại mật khẩu', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Quá nhiều yêu cầu đặt lại mật khẩu', - 'body' => 'Vui lòng thử lại sau :seconds giây.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/vi/pages/auth/register.php b/vendor/filament/filament/resources/lang/vi/pages/auth/register.php deleted file mode 100644 index 25e66e58..00000000 --- a/vendor/filament/filament/resources/lang/vi/pages/auth/register.php +++ /dev/null @@ -1,55 +0,0 @@ - 'Đăng ký', - - 'heading' => 'Đăng ký tài khoản', - - 'actions' => [ - - 'login' => [ - 'before' => 'hoặc', - 'label' => 'đăng nhập tài khoản', - ], - ], - - 'form' => [ - - 'email' => [ - 'label' => 'Địa chỉ email', - ], - - 'name' => [ - 'label' => 'Họ tên', - ], - - 'password' => [ - 'label' => 'Mật khẩu', - 'validation_attribute' => 'mật khẩu', - ], - - 'password_confirmation' => [ - 'label' => 'Xác nhận mật khẩu', - ], - - 'actions' => [ - - 'register' => [ - 'label' => 'Đăng ký', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => 'Quá nhiều lần thử đăng ký.', - 'body' => 'Vui lòng thử lại sau :seconds giây.', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/vi/pages/dashboard.php b/vendor/filament/filament/resources/lang/vi/pages/dashboard.php deleted file mode 100644 index 424fd287..00000000 --- a/vendor/filament/filament/resources/lang/vi/pages/dashboard.php +++ /dev/null @@ -1,32 +0,0 @@ - 'Bảng điều khiển', - - 'actions' => [ - - 'filter' => [ - - 'label' => 'Bộ lọc', - - 'modal' => [ - - 'heading' => 'Bộ lọc', - - 'actions' => [ - - 'apply' => [ - - 'label' => 'Áp dụng', - - ], - - ], - - ], - - ], - - ], -]; diff --git a/vendor/filament/filament/resources/lang/vi/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/vi/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 2f13b100..00000000 --- a/vendor/filament/filament/resources/lang/vi/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => 'Lưu thay đổi', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Đã lưu', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/vi/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/vi/resources/pages/create-record.php deleted file mode 100644 index 04ca2a72..00000000 --- a/vendor/filament/filament/resources/lang/vi/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - 'Tạo :label', - - 'breadcrumb' => 'Tạo', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Quay lại', - ], - - 'create' => [ - 'label' => 'Tạo', - ], - - 'create_another' => [ - 'label' => 'Tạo & tạo thêm', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => 'Đã tạo', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/vi/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/vi/resources/pages/edit-record.php deleted file mode 100644 index 5adaaf3b..00000000 --- a/vendor/filament/filament/resources/lang/vi/resources/pages/edit-record.php +++ /dev/null @@ -1,41 +0,0 @@ - 'Chỉnh sửa :label', - - 'breadcrumb' => 'Chỉnh sửa', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Quay lại', - ], - - 'save' => [ - 'label' => 'Lưu thay đổi', - ], - - ], - - ], - - 'content' => [ - - 'tab' => [ - 'label' => 'Chỉnh sửa', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => 'Đã lưu', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/vi/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/vi/resources/pages/list-records.php deleted file mode 100644 index 3a2c3491..00000000 --- a/vendor/filament/filament/resources/lang/vi/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - 'Danh sách', - -]; diff --git a/vendor/filament/filament/resources/lang/vi/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/vi/resources/pages/view-record.php deleted file mode 100644 index ab616ed0..00000000 --- a/vendor/filament/filament/resources/lang/vi/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Xem :label', - - 'breadcrumb' => 'Xem', - - 'content' => [ - - 'tab' => [ - 'label' => 'Xem', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/vi/widgets/account-widget.php b/vendor/filament/filament/resources/lang/vi/widgets/account-widget.php deleted file mode 100644 index 7a2774ce..00000000 --- a/vendor/filament/filament/resources/lang/vi/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => 'Đăng xuất', - ], - - ], - - 'welcome' => 'Xin chào', - -]; diff --git a/vendor/filament/filament/resources/lang/vi/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/vi/widgets/filament-info-widget.php deleted file mode 100644 index ac6adcb4..00000000 --- a/vendor/filament/filament/resources/lang/vi/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => 'Tài liệu', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/zh_CN/global-search.php b/vendor/filament/filament/resources/lang/zh_CN/global-search.php deleted file mode 100644 index 18668b14..00000000 --- a/vendor/filament/filament/resources/lang/zh_CN/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => '全局搜索', - 'placeholder' => '搜索', - ], - - 'no_results_message' => '未找到搜索结果。', - -]; diff --git a/vendor/filament/filament/resources/lang/zh_CN/layout.php b/vendor/filament/filament/resources/lang/zh_CN/layout.php deleted file mode 100644 index c66d1a43..00000000 --- a/vendor/filament/filament/resources/lang/zh_CN/layout.php +++ /dev/null @@ -1,55 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'billing' => [ - 'label' => '管理订阅', - ], - - 'logout' => [ - 'label' => '退出登录', - ], - - 'open_database_notifications' => [ - 'label' => '打开通知', - ], - - 'open_user_menu' => [ - 'label' => '用户菜单', - ], - - 'sidebar' => [ - - 'collapse' => [ - 'label' => '折叠侧边栏', - ], - - 'expand' => [ - 'label' => '展开侧边栏', - ], - - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => '切换至深色主题', - ], - - 'light' => [ - 'label' => '切换至浅色主题', - ], - - 'system' => [ - 'label' => '按照系统主题切换', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/zh_CN/pages/auth/edit-profile.php b/vendor/filament/filament/resources/lang/zh_CN/pages/auth/edit-profile.php deleted file mode 100644 index 0bf0ea99..00000000 --- a/vendor/filament/filament/resources/lang/zh_CN/pages/auth/edit-profile.php +++ /dev/null @@ -1,51 +0,0 @@ - '个人资料', - - 'form' => [ - - 'email' => [ - 'label' => '邮箱地址', - ], - - 'name' => [ - 'label' => '姓名', - ], - - 'password' => [ - 'label' => '新密码', - ], - - 'password_confirmation' => [ - 'label' => '确认新密码', - ], - - 'actions' => [ - - 'save' => [ - 'label' => '保存', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => '已保存', - ], - - ], - - 'actions' => [ - - 'cancel' => [ - 'label' => '取消', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/zh_CN/pages/auth/email-verification/email-verification-prompt.php b/vendor/filament/filament/resources/lang/zh_CN/pages/auth/email-verification/email-verification-prompt.php deleted file mode 100644 index 3474a548..00000000 --- a/vendor/filament/filament/resources/lang/zh_CN/pages/auth/email-verification/email-verification-prompt.php +++ /dev/null @@ -1,35 +0,0 @@ - '验证邮箱地址', - - 'heading' => '验证邮箱地址', - - 'actions' => [ - - 'resend_notification' => [ - 'label' => '已重新发送', - ], - - ], - - 'messages' => [ - 'notification_not_received' => '没有收到我们的邮件?', - 'notification_sent' => '我们已经向 :email 发送了一封验证邮件。', - ], - - 'notifications' => [ - - 'notification_resent' => [ - 'title' => '我们已经重新发送了邮件。', - ], - - 'notification_resend_throttled' => [ - 'title' => '发送邮件次数过多', - 'body' => '请在 :seconds 秒后重试。', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/zh_CN/pages/auth/login.php b/vendor/filament/filament/resources/lang/zh_CN/pages/auth/login.php deleted file mode 100644 index a64d6076..00000000 --- a/vendor/filament/filament/resources/lang/zh_CN/pages/auth/login.php +++ /dev/null @@ -1,61 +0,0 @@ - '登录', - - 'heading' => '登录', - - 'actions' => [ - - 'register' => [ - 'before' => '或者', - 'label' => '注册账号', - ], - - 'request_password_reset' => [ - 'label' => '忘记了密码?', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => '邮箱地址', - ], - - 'password' => [ - 'label' => '密码', - ], - - 'remember' => [ - 'label' => '保持登录状态', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => '登录', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => '登录信息有误。', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => '尝试登录次数过多', - 'body' => '请在 :seconds 秒后重试。', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/zh_CN/pages/auth/password-reset/request-password-reset.php b/vendor/filament/filament/resources/lang/zh_CN/pages/auth/password-reset/request-password-reset.php deleted file mode 100644 index c3e848cd..00000000 --- a/vendor/filament/filament/resources/lang/zh_CN/pages/auth/password-reset/request-password-reset.php +++ /dev/null @@ -1,42 +0,0 @@ - '重置密码', - - 'heading' => '忘记密码?', - - 'actions' => [ - - 'login' => [ - 'label' => '返回登录页面', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => '邮箱地址', - ], - - 'actions' => [ - - 'request' => [ - 'label' => '发送邮件', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => '尝试次数过多', - 'body' => '请在 :seconds 秒后重试。', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/zh_CN/pages/auth/password-reset/reset-password.php b/vendor/filament/filament/resources/lang/zh_CN/pages/auth/password-reset/reset-password.php deleted file mode 100644 index 3ee4cc11..00000000 --- a/vendor/filament/filament/resources/lang/zh_CN/pages/auth/password-reset/reset-password.php +++ /dev/null @@ -1,43 +0,0 @@ - '重置密码', - - 'heading' => '重置密码', - - 'form' => [ - - 'email' => [ - 'label' => '邮箱地址', - ], - - 'password' => [ - 'label' => '密码', - 'validation_attribute' => '密码', - ], - - 'password_confirmation' => [ - 'label' => '确认密码', - ], - - 'actions' => [ - - 'reset' => [ - 'label' => '重置密码', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => '尝试次数过多', - 'body' => '请在 :seconds 秒后重试。', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/zh_CN/pages/auth/register.php b/vendor/filament/filament/resources/lang/zh_CN/pages/auth/register.php deleted file mode 100644 index aefa138a..00000000 --- a/vendor/filament/filament/resources/lang/zh_CN/pages/auth/register.php +++ /dev/null @@ -1,56 +0,0 @@ - '注册', - - 'heading' => '注册', - - 'actions' => [ - - 'login' => [ - 'before' => '或者', - 'label' => '登录你的账号', - ], - - ], - - 'form' => [ - - 'email' => [ - 'label' => '邮箱地址', - ], - - 'name' => [ - 'label' => '姓名', - ], - - 'password' => [ - 'label' => '密码', - 'validation_attribute' => '密码', - ], - - 'password_confirmation' => [ - 'label' => '确认密码', - ], - - 'actions' => [ - - 'register' => [ - 'label' => '提交注册', - ], - - ], - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => '尝试注册次数过多', - 'body' => '请在 :seconds 秒后重试。', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/zh_CN/pages/dashboard.php b/vendor/filament/filament/resources/lang/zh_CN/pages/dashboard.php deleted file mode 100644 index 0d07e745..00000000 --- a/vendor/filament/filament/resources/lang/zh_CN/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - '仪表板', - -]; diff --git a/vendor/filament/filament/resources/lang/zh_CN/pages/tenancy/edit-tenant-profile.php b/vendor/filament/filament/resources/lang/zh_CN/pages/tenancy/edit-tenant-profile.php deleted file mode 100644 index 427fa064..00000000 --- a/vendor/filament/filament/resources/lang/zh_CN/pages/tenancy/edit-tenant-profile.php +++ /dev/null @@ -1,25 +0,0 @@ - [ - - 'actions' => [ - - 'save' => [ - 'label' => '保存', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => '已保存', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/zh_CN/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/zh_CN/resources/pages/create-record.php deleted file mode 100644 index 318915b8..00000000 --- a/vendor/filament/filament/resources/lang/zh_CN/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - '创建 :label', - - 'breadcrumb' => '创建', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => '取消', - ], - - 'create' => [ - 'label' => '保存', - ], - - 'create_another' => [ - 'label' => '保存并创建另一个', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => '已创建', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/zh_CN/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/zh_CN/resources/pages/edit-record.php deleted file mode 100644 index c5681e0a..00000000 --- a/vendor/filament/filament/resources/lang/zh_CN/resources/pages/edit-record.php +++ /dev/null @@ -1,37 +0,0 @@ - '编辑 :label', - - 'breadcrumb' => '编辑', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => '取消', - ], - - 'save' => [ - 'label' => '保存', - ], - - ], - - 'tab' => [ - 'label' => '编辑', - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => '已保存', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/zh_CN/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/zh_CN/resources/pages/list-records.php deleted file mode 100644 index dc7342ba..00000000 --- a/vendor/filament/filament/resources/lang/zh_CN/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - '列表', - -]; diff --git a/vendor/filament/filament/resources/lang/zh_CN/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/zh_CN/resources/pages/view-record.php deleted file mode 100644 index 2587cfe3..00000000 --- a/vendor/filament/filament/resources/lang/zh_CN/resources/pages/view-record.php +++ /dev/null @@ -1,17 +0,0 @@ - ':label 详情', - - 'breadcrumb' => '详情', - - 'content' => [ - - 'tab' => [ - 'label' => '详情', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/zh_CN/widgets/account-widget.php b/vendor/filament/filament/resources/lang/zh_CN/widgets/account-widget.php deleted file mode 100644 index 0e9d04c0..00000000 --- a/vendor/filament/filament/resources/lang/zh_CN/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => '退出登录', - ], - - ], - - 'welcome' => '欢迎', - -]; diff --git a/vendor/filament/filament/resources/lang/zh_CN/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/zh_CN/widgets/filament-info-widget.php deleted file mode 100644 index 90aa3a07..00000000 --- a/vendor/filament/filament/resources/lang/zh_CN/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => '文档', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/zh_TW/global-search.php b/vendor/filament/filament/resources/lang/zh_TW/global-search.php deleted file mode 100644 index 3bee89d7..00000000 --- a/vendor/filament/filament/resources/lang/zh_TW/global-search.php +++ /dev/null @@ -1,12 +0,0 @@ - [ - 'label' => '全域搜尋', - 'placeholder' => '搜尋', - ], - - 'no_results_message' => '無搜尋結果。', - -]; diff --git a/vendor/filament/filament/resources/lang/zh_TW/layout.php b/vendor/filament/filament/resources/lang/zh_TW/layout.php deleted file mode 100644 index 20d167bb..00000000 --- a/vendor/filament/filament/resources/lang/zh_TW/layout.php +++ /dev/null @@ -1,31 +0,0 @@ - 'ltr', - - 'actions' => [ - - 'logout' => [ - 'label' => '登出', - ], - - 'open_user_menu' => [ - 'label' => '用戶菜單', - ], - - 'theme_switcher' => [ - - 'dark' => [ - 'label' => '切換至暗色模式', - ], - - 'light' => [ - 'label' => '切換至亮色模式', - ], - - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/zh_TW/pages/auth/login.php b/vendor/filament/filament/resources/lang/zh_TW/pages/auth/login.php deleted file mode 100644 index 708ab861..00000000 --- a/vendor/filament/filament/resources/lang/zh_TW/pages/auth/login.php +++ /dev/null @@ -1,47 +0,0 @@ - '登入', - - 'heading' => '登入帳號', - - 'form' => [ - - 'email' => [ - 'label' => 'E-Mail 位址', - ], - - 'password' => [ - 'label' => '密碼', - ], - - 'remember' => [ - 'label' => '記住我', - ], - - 'actions' => [ - - 'authenticate' => [ - 'label' => '登入', - ], - - ], - - ], - - 'messages' => [ - - 'failed' => '所提供的帳號密碼與資料庫中的記錄不相符。', - - ], - - 'notifications' => [ - - 'throttled' => [ - 'title' => '嘗試登入次數過多。請在 :seconds 秒後重試。', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/zh_TW/pages/dashboard.php b/vendor/filament/filament/resources/lang/zh_TW/pages/dashboard.php deleted file mode 100644 index b5e19770..00000000 --- a/vendor/filament/filament/resources/lang/zh_TW/pages/dashboard.php +++ /dev/null @@ -1,7 +0,0 @@ - '主控台', - -]; diff --git a/vendor/filament/filament/resources/lang/zh_TW/resources/pages/create-record.php b/vendor/filament/filament/resources/lang/zh_TW/resources/pages/create-record.php deleted file mode 100644 index 39f034c1..00000000 --- a/vendor/filament/filament/resources/lang/zh_TW/resources/pages/create-record.php +++ /dev/null @@ -1,37 +0,0 @@ - '建立 :label', - - 'breadcrumb' => '建立', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => '取消', - ], - - 'create' => [ - 'label' => '建立', - ], - - 'create_another' => [ - 'label' => '建立後再建立另一個', - ], - - ], - - ], - - 'notifications' => [ - - 'created' => [ - 'title' => '已建立', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/zh_TW/resources/pages/edit-record.php b/vendor/filament/filament/resources/lang/zh_TW/resources/pages/edit-record.php deleted file mode 100644 index 51f04876..00000000 --- a/vendor/filament/filament/resources/lang/zh_TW/resources/pages/edit-record.php +++ /dev/null @@ -1,33 +0,0 @@ - '編輯 :label', - - 'breadcrumb' => '編輯', - - 'form' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => '取消', - ], - - 'save' => [ - 'label' => '保存', - ], - - ], - - ], - - 'notifications' => [ - - 'saved' => [ - 'title' => '已保存', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/lang/zh_TW/resources/pages/list-records.php b/vendor/filament/filament/resources/lang/zh_TW/resources/pages/list-records.php deleted file mode 100644 index 22664ccd..00000000 --- a/vendor/filament/filament/resources/lang/zh_TW/resources/pages/list-records.php +++ /dev/null @@ -1,7 +0,0 @@ - '清單', - -]; diff --git a/vendor/filament/filament/resources/lang/zh_TW/resources/pages/view-record.php b/vendor/filament/filament/resources/lang/zh_TW/resources/pages/view-record.php deleted file mode 100644 index e47f3a9f..00000000 --- a/vendor/filament/filament/resources/lang/zh_TW/resources/pages/view-record.php +++ /dev/null @@ -1,9 +0,0 @@ - '檢視 :label', - - 'breadcrumb' => '檢視', - -]; diff --git a/vendor/filament/filament/resources/lang/zh_TW/widgets/account-widget.php b/vendor/filament/filament/resources/lang/zh_TW/widgets/account-widget.php deleted file mode 100644 index 4fc55fee..00000000 --- a/vendor/filament/filament/resources/lang/zh_TW/widgets/account-widget.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - 'logout' => [ - 'label' => '登出', - ], - - ], - - 'welcome' => '歡迎', - -]; diff --git a/vendor/filament/filament/resources/lang/zh_TW/widgets/filament-info-widget.php b/vendor/filament/filament/resources/lang/zh_TW/widgets/filament-info-widget.php deleted file mode 100644 index ba74da93..00000000 --- a/vendor/filament/filament/resources/lang/zh_TW/widgets/filament-info-widget.php +++ /dev/null @@ -1,17 +0,0 @@ - [ - - 'open_documentation' => [ - 'label' => '說明文件', - ], - - 'open_github' => [ - 'label' => 'GitHub', - ], - - ], - -]; diff --git a/vendor/filament/filament/resources/views/components/avatar/tenant.blade.php b/vendor/filament/filament/resources/views/components/avatar/tenant.blade.php deleted file mode 100644 index 22e8921b..00000000 --- a/vendor/filament/filament/resources/views/components/avatar/tenant.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -@props([ - 'tenant' => filament()->getTenant(), -]) - - diff --git a/vendor/filament/filament/resources/views/components/avatar/user.blade.php b/vendor/filament/filament/resources/views/components/avatar/user.blade.php deleted file mode 100644 index d07e66ea..00000000 --- a/vendor/filament/filament/resources/views/components/avatar/user.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -@props([ - 'user' => filament()->auth()->user(), -]) - - diff --git a/vendor/filament/filament/resources/views/components/form/actions.blade.php b/vendor/filament/filament/resources/views/components/form/actions.blade.php deleted file mode 100644 index d1031c0f..00000000 --- a/vendor/filament/filament/resources/views/components/form/actions.blade.php +++ /dev/null @@ -1,34 +0,0 @@ -@props([ - 'actions', - 'alignment' => null, - 'fullWidth' => false, -]) - -@if (count($actions)) -
areFormActionsSticky()) - x-data="{ - isSticky: false, - - evaluatePageScrollPosition: function () { - this.isSticky = - document.body.scrollHeight >= - window.scrollY + window.innerHeight * 2 - }, - }" - x-init="evaluatePageScrollPosition" - x-on:scroll.window="evaluatePageScrollPosition" - x-bind:class="{ - 'fi-sticky sticky bottom-0 -mx-4 transform bg-white p-4 shadow-lg ring-1 ring-gray-950/5 transition dark:bg-gray-900 dark:ring-white/10 md:bottom-4 md:rounded-xl': - isSticky, - }" - @endif - class="fi-form-actions" - > - -
-@endif diff --git a/vendor/filament/filament/resources/views/components/form/index.blade.php b/vendor/filament/filament/resources/views/components/form/index.blade.php deleted file mode 100644 index e29f48c1..00000000 --- a/vendor/filament/filament/resources/views/components/form/index.blade.php +++ /dev/null @@ -1,9 +0,0 @@ -
class(['fi-form grid gap-y-6']) }} -> - {{ $slot }} -
diff --git a/vendor/filament/filament/resources/views/components/global-search/actions.blade.php b/vendor/filament/filament/resources/views/components/global-search/actions.blade.php deleted file mode 100644 index 7e5f0225..00000000 --- a/vendor/filament/filament/resources/views/components/global-search/actions.blade.php +++ /dev/null @@ -1,13 +0,0 @@ -@props([ - 'actions', -]) - -
class('fi-global-search-result-actions mt-3 flex gap-x-3 px-4 pb-4') }} -> - @foreach ($actions as $action) - @if ($action->isVisible()) - {{ $action }} - @endif - @endforeach -
diff --git a/vendor/filament/filament/resources/views/components/global-search/field.blade.php b/vendor/filament/filament/resources/views/components/global-search/field.blade.php deleted file mode 100644 index dfcfecbb..00000000 --- a/vendor/filament/filament/resources/views/components/global-search/field.blade.php +++ /dev/null @@ -1,38 +0,0 @@ -@php - $keyBindings = filament()->getGlobalSearchKeyBindings(); -@endphp - -
class(['fi-global-search-field']) }} -> - - - - - -
diff --git a/vendor/filament/filament/resources/views/components/global-search/index.blade.php b/vendor/filament/filament/resources/views/components/global-search/index.blade.php deleted file mode 100644 index 1f165b66..00000000 --- a/vendor/filament/filament/resources/views/components/global-search/index.blade.php +++ /dev/null @@ -1,19 +0,0 @@ - diff --git a/vendor/filament/filament/resources/views/components/global-search/no-results-message.blade.php b/vendor/filament/filament/resources/views/components/global-search/no-results-message.blade.php deleted file mode 100644 index e39c9f23..00000000 --- a/vendor/filament/filament/resources/views/components/global-search/no-results-message.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -

class(['fi-global-search-no-results-message px-4 py-4 text-sm text-gray-500 dark:text-gray-400']) }} -> - {{ __('filament-panels::global-search.no_results_message') }} -

diff --git a/vendor/filament/filament/resources/views/components/global-search/result-group.blade.php b/vendor/filament/filament/resources/views/components/global-search/result-group.blade.php deleted file mode 100644 index 703d75bb..00000000 --- a/vendor/filament/filament/resources/views/components/global-search/result-group.blade.php +++ /dev/null @@ -1,29 +0,0 @@ -@props([ - 'label', - 'results', -]) - -
  • class(['fi-global-search-result-group']) }} -> -
    -

    - {{ $label }} -

    -
    - -
      - @foreach ($results as $result) - - @endforeach -
    -
  • diff --git a/vendor/filament/filament/resources/views/components/global-search/result.blade.php b/vendor/filament/filament/resources/views/components/global-search/result.blade.php deleted file mode 100644 index a7088ac0..00000000 --- a/vendor/filament/filament/resources/views/components/global-search/result.blade.php +++ /dev/null @@ -1,39 +0,0 @@ -@props([ - 'actions' => [], - 'details' => [], - 'title', - 'url', -]) - -
  • class(['fi-global-search-result scroll-mt-9 transition duration-75 focus-within:bg-gray-50 hover:bg-gray-50 dark:focus-within:bg-white/5 dark:hover:bg-white/5']) }} -> - $actions, - 'p-4' => ! $actions, - ]) - > -

    - {{ $title }} -

    - - @if ($details) -
    - @foreach ($details as $label => $value) -
    -
    {{ $label }}:
    - -
    {{ $value }}
    -
    - @endforeach -
    - @endif -
    - - @if ($actions) - - @endif -
  • diff --git a/vendor/filament/filament/resources/views/components/global-search/results-container.blade.php b/vendor/filament/filament/resources/views/components/global-search/results-container.blade.php deleted file mode 100644 index 8dbfeaa2..00000000 --- a/vendor/filament/filament/resources/views/components/global-search/results-container.blade.php +++ /dev/null @@ -1,50 +0,0 @@ -@props([ - 'results', -]) - -
    class([ - 'fi-global-search-results-ctn absolute inset-x-4 z-10 mt-2 max-h-96 overflow-auto rounded-lg bg-white shadow-lg ring-1 ring-gray-950/5 transition dark:bg-gray-900 dark:ring-white/10 sm:inset-x-auto sm:end-0 sm:w-screen sm:max-w-sm', - // This zero translation along the z-axis fixes a Safari bug - // where the results container is incorrectly placed in the stacking context - // due to the overflow-x value of clip on the topbar element. - // - // https://github.com/filamentphp/filament/issues/8215 - '[transform:translateZ(0)]', - ]) - }} -> - @if ($results->getCategories()->isEmpty()) - - @else -
      - @foreach ($results->getCategories() as $group => $groupedResults) - - @endforeach -
    - @endif -
    diff --git a/vendor/filament/filament/resources/views/components/header/index.blade.php b/vendor/filament/filament/resources/views/components/header/index.blade.php deleted file mode 100644 index b3888735..00000000 --- a/vendor/filament/filament/resources/views/components/header/index.blade.php +++ /dev/null @@ -1,47 +0,0 @@ -@props([ - 'actions' => [], - 'breadcrumbs' => [], - 'heading', - 'subheading' => null, -]) - -
    class(['fi-header flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between']) }} -> -
    - @if ($breadcrumbs) -
    - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::page.header.actions.before', scopes: $this->getRenderHookScopes()) }} - - @if ($actions) - $breadcrumbs, - ]) - /> - @endif - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::page.header.actions.after', scopes: $this->getRenderHookScopes()) }} -
    diff --git a/vendor/filament/filament/resources/views/components/header/simple.blade.php b/vendor/filament/filament/resources/views/components/header/simple.blade.php deleted file mode 100644 index adf03f6c..00000000 --- a/vendor/filament/filament/resources/views/components/header/simple.blade.php +++ /dev/null @@ -1,27 +0,0 @@ -@props([ - 'heading' => null, - 'logo' => true, - 'subheading' => null, -]) - -
    - @if ($logo) - - @endif - - @if (filled($heading)) -

    - {{ $heading }} -

    - @endif - - @if (filled($subheading)) -

    - {{ $subheading }} -

    - @endif -
    diff --git a/vendor/filament/filament/resources/views/components/layout/base.blade.php b/vendor/filament/filament/resources/views/components/layout/base.blade.php deleted file mode 100644 index 0bd31510..00000000 --- a/vendor/filament/filament/resources/views/components/layout/base.blade.php +++ /dev/null @@ -1,154 +0,0 @@ -@props([ - 'livewire' => null, -]) - - - filament()->hasDarkModeForced(), - ]) -> - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::head.start') }} - - - - - - @if ($favicon = filament()->getFavicon()) - - @endif - - - {{ filled($title = strip_tags(($livewire ?? null)?->getTitle() ?? '')) ? "{$title} - " : null }} - {{ filament()->getBrandName() }} - - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::styles.before') }} - - - - @filamentStyles - - {{ filament()->getTheme()->getHtml() }} - {{ filament()->getFontHtml() }} - - - - @stack('styles') - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::styles.after') }} - - - - @if (! filament()->hasDarkMode()) - - @elseif (filament()->hasDarkModeForced()) - - @else - - @endif - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::head.end') }} - - - merge(($livewire ?? null)?->getExtraBodyAttributes() ?? [], escape: false) - ->class([ - 'fi-body', - 'fi-panel-' . filament()->getId(), - 'min-h-screen bg-gray-50 font-normal text-gray-950 antialiased dark:bg-gray-950 dark:text-white', - ]) }} - > - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::body.start') }} - - {{ $slot }} - - @livewire(Filament\Livewire\Notifications::class) - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::scripts.before') }} - - @filamentScripts(withCore: true) - - @if (config('filament.broadcasting.echo')) - - @endif - - @stack('scripts') - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::scripts.after') }} - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::body.end') }} - - diff --git a/vendor/filament/filament/resources/views/components/layout/index.blade.php b/vendor/filament/filament/resources/views/components/layout/index.blade.php deleted file mode 100644 index 17c6173c..00000000 --- a/vendor/filament/filament/resources/views/components/layout/index.blade.php +++ /dev/null @@ -1,93 +0,0 @@ -@php - use Filament\Support\Enums\MaxWidth; - - $navigation = filament()->getNavigation(); -@endphp - - -
    - @if (filament()->hasNavigation()) -
    - - - @endif - -
    isSidebarCollapsibleOnDesktop()) - x-data="{}" - x-bind:class="{ - 'fi-main-ctn-sidebar-open': $store.sidebar.isOpen, - }" - x-bind:style="'display: flex; opacity:1;'" {{-- Mimics `x-cloak`, as using `x-cloak` causes visual issues with chart widgets --}} - @elseif (filament()->isSidebarFullyCollapsibleOnDesktop()) - x-data="{}" - x-bind:class="{ - 'fi-main-ctn-sidebar-open': $store.sidebar.isOpen, - }" - x-bind:style="'display: flex; opacity:1;'" {{-- Mimics `x-cloak`, as using `x-cloak` causes visual issues with chart widgets --}} - @elseif (! (filament()->isSidebarCollapsibleOnDesktop() || filament()->isSidebarFullyCollapsibleOnDesktop() || filament()->hasTopNavigation() || (! filament()->hasNavigation()))) - x-data="{}" - x-bind:style="'display: flex; opacity:1;'" {{-- Mimics `x-cloak`, as using `x-cloak` causes visual issues with chart widgets --}} - @endif - @class([ - 'fi-main-ctn w-screen flex-1 flex-col', - 'h-full opacity-0 transition-all' => filament()->isSidebarCollapsibleOnDesktop() || filament()->isSidebarFullyCollapsibleOnDesktop(), - 'opacity-0' => ! (filament()->isSidebarCollapsibleOnDesktop() || filament()->isSidebarFullyCollapsibleOnDesktop() || filament()->hasTopNavigation() || (! filament()->hasNavigation())), - 'flex' => filament()->hasTopNavigation() || (! filament()->hasNavigation()), - ]) - > - @if (filament()->hasTopbar()) - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::topbar.before') }} - - - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::topbar.after') }} - @endif - -
    getMaxContentWidth() ?? MaxWidth::SevenExtraLarge)) { - MaxWidth::ExtraSmall, 'xs' => 'max-w-xs', - MaxWidth::Small, 'sm' => 'max-w-sm', - MaxWidth::Medium, 'md' => 'max-w-md', - MaxWidth::Large, 'lg' => 'max-w-lg', - MaxWidth::ExtraLarge, 'xl' => 'max-w-xl', - MaxWidth::TwoExtraLarge, '2xl' => 'max-w-2xl', - MaxWidth::ThreeExtraLarge, '3xl' => 'max-w-3xl', - MaxWidth::FourExtraLarge, '4xl' => 'max-w-4xl', - MaxWidth::FiveExtraLarge, '5xl' => 'max-w-5xl', - MaxWidth::SixExtraLarge, '6xl' => 'max-w-6xl', - MaxWidth::SevenExtraLarge, '7xl' => 'max-w-7xl', - MaxWidth::Full, 'full' => 'max-w-full', - MaxWidth::MinContent, 'min' => 'max-w-min', - MaxWidth::MaxContent, 'max' => 'max-w-max', - MaxWidth::FitContent, 'fit' => 'max-w-fit', - MaxWidth::Prose, 'prose' => 'max-w-prose', - MaxWidth::ScreenSmall, 'screen-sm' => 'max-w-screen-sm', - MaxWidth::ScreenMedium, 'screen-md' => 'max-w-screen-md', - MaxWidth::ScreenLarge, 'screen-lg' => 'max-w-screen-lg', - MaxWidth::ScreenExtraLarge, 'screen-xl' => 'max-w-screen-xl', - MaxWidth::ScreenTwoExtraLarge, 'screen-2xl' => 'max-w-screen-2xl', - default => $maxContentWidth, - }, - ]) - > - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::content.start') }} - - {{ $slot }} - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::content.end') }} -
    - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::footer') }} -
    -
    -
    diff --git a/vendor/filament/filament/resources/views/components/layout/simple.blade.php b/vendor/filament/filament/resources/views/components/layout/simple.blade.php deleted file mode 100644 index 0caa3060..00000000 --- a/vendor/filament/filament/resources/views/components/layout/simple.blade.php +++ /dev/null @@ -1,52 +0,0 @@ -@php - use Filament\Support\Enums\MaxWidth; -@endphp - - - @props([ - 'after' => null, - 'heading' => null, - 'subheading' => null, - ]) - -
    - @if (filament()->auth()->check()) -
    - @if (filament()->hasDatabaseNotifications()) - @livewire(Filament\Livewire\DatabaseNotifications::class, ['lazy' => true]) - @endif - - -
    - @endif - -
    -
    'sm:max-w-xs', - MaxWidth::Small, 'sm' => 'sm:max-w-sm', - MaxWidth::Medium, 'md' => 'sm:max-w-md', - MaxWidth::ExtraLarge, 'xl' => 'sm:max-w-xl', - MaxWidth::TwoExtraLarge, '2xl' => 'sm:max-w-2xl', - MaxWidth::ThreeExtraLarge, '3xl' => 'sm:max-w-3xl', - MaxWidth::FourExtraLarge, '4xl' => 'sm:max-w-4xl', - MaxWidth::FiveExtraLarge, '5xl' => 'sm:max-w-5xl', - MaxWidth::SixExtraLarge, '6xl' => 'sm:max-w-6xl', - MaxWidth::SevenExtraLarge, '7xl' => 'sm:max-w-7xl', - default => 'sm:max-w-lg', - }, - ]) - > - {{ $slot }} -
    -
    - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::footer') }} -
    -
    diff --git a/vendor/filament/filament/resources/views/components/logo.blade.php b/vendor/filament/filament/resources/views/components/logo.blade.php deleted file mode 100644 index 4a4bd0c8..00000000 --- a/vendor/filament/filament/resources/views/components/logo.blade.php +++ /dev/null @@ -1,58 +0,0 @@ -@php - $brandName = filament()->getBrandName(); - $brandLogo = filament()->getBrandLogo(); - $brandLogoHeight = filament()->getBrandLogoHeight() ?? '1.5rem'; - $darkModeBrandLogo = filament()->getDarkModeBrandLogo(); - $hasDarkModeBrandLogo = filled($darkModeBrandLogo); - - $getLogoClasses = fn (bool $isDarkMode): string => \Illuminate\Support\Arr::toCssClasses([ - 'fi-logo', - 'inline-flex' => ! $hasDarkModeBrandLogo, - 'inline-flex dark:hidden' => $hasDarkModeBrandLogo && (! $isDarkMode), - 'hidden dark:inline-flex' => $hasDarkModeBrandLogo && $isDarkMode, - ]); - - $logoStyles = "height: {$brandLogoHeight}"; -@endphp - -@capture($content, $logo, $isDarkMode = false) - @if ($logo instanceof \Illuminate\Contracts\Support\Htmlable) -
    class([$getLogoClasses($isDarkMode)]) - ->style([$logoStyles]) - }} - > - {{ $logo }} -
    - @elseif (filled($logo)) - {{ $brandName }}class([$getLogoClasses($isDarkMode)]) - ->style([$logoStyles]) - }} - /> - @else -
    class([ - $getLogoClasses($isDarkMode), - 'text-xl font-bold leading-5 tracking-tight text-gray-950 dark:text-white', - ]) - }} - > - {{ $brandName }} -
    - @endif -@endcapture - -{{ $content($brandLogo) }} - -@if ($hasDarkModeBrandLogo) - {{ $content($darkModeBrandLogo, isDarkMode: true) }} -@endif diff --git a/vendor/filament/filament/resources/views/components/page/index.blade.php b/vendor/filament/filament/resources/views/components/page/index.blade.php deleted file mode 100644 index a421f747..00000000 --- a/vendor/filament/filament/resources/views/components/page/index.blade.php +++ /dev/null @@ -1,132 +0,0 @@ -@props([ - 'fullHeight' => false, -]) - -@php - use Filament\Pages\SubNavigationPosition; - - $subNavigation = $this->getCachedSubNavigation(); - $subNavigationPosition = $this->getSubNavigationPosition(); - $widgetData = $this->getWidgetData(); -@endphp - -
    class([ - 'fi-page', - 'h-full' => $fullHeight, - ]) - }} -> - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::page.start', scopes: $this->getRenderHookScopes()) }} - -
    $fullHeight, - ]) - > - @if ($header = $this->getHeader()) - {{ $header }} - @elseif ($heading = $this->getHeading()) - - @endif - -
    $subNavigation, - match ($subNavigationPosition) { - SubNavigationPosition::Start, SubNavigationPosition::End => 'md:flex-row', - default => null, - } => $subNavigation, - 'h-full' => $fullHeight, - ]) - > - @if ($subNavigation) - - - @if ($subNavigationPosition === SubNavigationPosition::Start) - - @endif - - @if ($subNavigationPosition === SubNavigationPosition::Top) - - @endif - @endif - -
    $fullHeight, - ]) - > - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::page.header-widgets.before', scopes: $this->getRenderHookScopes()) }} - - @if ($headerWidgets = $this->getVisibleHeaderWidgets()) - - @endif - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::page.header-widgets.after', scopes: $this->getRenderHookScopes()) }} - - {{ $slot }} - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::page.footer-widgets.before', scopes: $this->getRenderHookScopes()) }} - - @if ($footerWidgets = $this->getVisibleFooterWidgets()) - - @endif - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::page.footer-widgets.after', scopes: $this->getRenderHookScopes()) }} -
    - - @if ($subNavigation && $subNavigationPosition === SubNavigationPosition::End) - - @endif -
    - - @if ($footer = $this->getFooter()) - {{ $footer }} - @endif -
    - - @if (! ($this instanceof \Filament\Tables\Contracts\HasTable)) - - @elseif ($this->isTableLoaded() && filled($this->defaultTableAction)) -
    - @endif - - @if (filled($this->defaultAction)) -
    - @endif - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::page.end', scopes: $this->getRenderHookScopes()) }} - - -
    diff --git a/vendor/filament/filament/resources/views/components/page/simple.blade.php b/vendor/filament/filament/resources/views/components/page/simple.blade.php deleted file mode 100644 index 7900a124..00000000 --- a/vendor/filament/filament/resources/views/components/page/simple.blade.php +++ /dev/null @@ -1,20 +0,0 @@ -@props([ - 'heading' => null, - 'subheading' => null, -]) - -
    class(['fi-simple-page']) }}> -
    - - - {{ $slot }} -
    - - @if (! $this instanceof \Filament\Tables\Contracts\HasTable) - - @endif -
    diff --git a/vendor/filament/filament/resources/views/components/page/sub-navigation/select.blade.php b/vendor/filament/filament/resources/views/components/page/sub-navigation/select.blade.php deleted file mode 100644 index 16a3c6bd..00000000 --- a/vendor/filament/filament/resources/views/components/page/sub-navigation/select.blade.php +++ /dev/null @@ -1,43 +0,0 @@ -@props([ - 'navigation', -]) - - - - @foreach ($navigation as $navigationGroup) - @capture($options) - @foreach ($navigationGroup->getItems() as $navigationItem) - @foreach ([$navigationItem, ...$navigationItem->getChildItems()] as $navigationItemChild) - - @endforeach - @endforeach - @endcapture - - @if (filled($navigationGroupLabel = $navigationGroup->getLabel())) - - {{ $options() }} - - @else - {{ $options() }} - @endif - @endforeach - - diff --git a/vendor/filament/filament/resources/views/components/page/sub-navigation/sidebar.blade.php b/vendor/filament/filament/resources/views/components/page/sub-navigation/sidebar.blade.php deleted file mode 100644 index 679c9ec7..00000000 --- a/vendor/filament/filament/resources/views/components/page/sub-navigation/sidebar.blade.php +++ /dev/null @@ -1,20 +0,0 @@ -@props([ - 'navigation', -]) - -
      class(['hidden w-72 flex-col gap-y-7 md:flex']) }} -> - @foreach ($navigation as $navigationGroup) - - @endforeach -
    diff --git a/vendor/filament/filament/resources/views/components/page/sub-navigation/tabs.blade.php b/vendor/filament/filament/resources/views/components/page/sub-navigation/tabs.blade.php deleted file mode 100644 index c2212092..00000000 --- a/vendor/filament/filament/resources/views/components/page/sub-navigation/tabs.blade.php +++ /dev/null @@ -1,63 +0,0 @@ -@props([ - 'navigation', -]) - - - @foreach ($navigation as $navigationGroup) - @if ($navigationGroupLabel = $navigationGroup->getLabel()) - - - - {{ $navigationGroupLabel }} - - - - - @foreach ($navigationGroup->getItems() as $navigationItem) - @php - $icon = $navigationItem->getIcon(); - @endphp - - - {{ $navigationItem->getLabel() }} - - @endforeach - - - @else - @foreach ($navigationGroup->getItems() as $navigationItem) - @php - $icon = $navigationItem->getIcon(); - @endphp - - - {{ $navigationItem->getLabel() }} - - @endforeach - @endif - @endforeach - diff --git a/vendor/filament/filament/resources/views/components/page/unsaved-data-changes-alert.blade.php b/vendor/filament/filament/resources/views/components/page/unsaved-data-changes-alert.blade.php deleted file mode 100644 index d1143607..00000000 --- a/vendor/filament/filament/resources/views/components/page/unsaved-data-changes-alert.blade.php +++ /dev/null @@ -1,23 +0,0 @@ -@php - use Filament\Support\Facades\FilamentView; -@endphp - -@if ($this->hasUnsavedDataChangesAlert() && (! FilamentView::hasSpaMode())) - @script - - @endscript -@endif diff --git a/vendor/filament/filament/resources/views/components/resources/relation-managers.blade.php b/vendor/filament/filament/resources/views/components/resources/relation-managers.blade.php deleted file mode 100644 index db960420..00000000 --- a/vendor/filament/filament/resources/views/components/resources/relation-managers.blade.php +++ /dev/null @@ -1,111 +0,0 @@ -@props([ - 'activeLocale' => null, - 'activeManager', - 'content' => null, - 'contentTabLabel' => null, - 'managers', - 'ownerRecord', - 'pageClass', -]) - -
    - @php - $activeManager = strval($activeManager); - $normalizeRelationManagerClass = function (string | Filament\Resources\RelationManagers\RelationManagerConfiguration $manager): string { - if ($manager instanceof \Filament\Resources\RelationManagers\RelationManagerConfiguration) { - return $manager->relationManager; - } - - return $manager; - }; - @endphp - - @if ((count($managers) > 1) || $content) - - @php - $tabs = $managers; - - if ($content) { - $tabs = array_replace([null => null], $tabs); - } - @endphp - - @foreach ($tabs as $tabKey => $manager) - @php - $tabKey = strval($tabKey); - $isGroup = $manager instanceof \Filament\Resources\RelationManagers\RelationGroup; - - if ($isGroup) { - $manager->ownerRecord($ownerRecord); - $manager->pageClass($pageClass); - } elseif (filled($tabKey)) { - $manager = $normalizeRelationManagerClass($manager); - } - @endphp - - - @if (filled($tabKey)) - {{ $isGroup ? $manager->getLabel() : $manager::getTitle($ownerRecord, $pageClass) }} - @elseif ($content) - {{ $contentTabLabel }} - @endif - - @endforeach - - @endif - - @if (filled($activeManager) && isset($managers[$activeManager])) -
    1) - id="relationManager{{ ucfirst($activeManager) }}" - role="tabpanel" - tabindex="0" - @endif - wire:key="{{ $this->getId() }}.relation-managers.active" - class="flex flex-col gap-y-4" - > - @php - $managerLivewireProperties = ['ownerRecord' => $ownerRecord, 'pageClass' => $pageClass]; - - if (filled($activeLocale)) { - $managerLivewireProperties['activeLocale'] = $activeLocale; - } - @endphp - - @if ($managers[$activeManager] instanceof \Filament\Resources\RelationManagers\RelationGroup) - @foreach ($managers[$activeManager]->ownerRecord($ownerRecord)->pageClass($pageClass)->getManagers() as $groupedManagerKey => $groupedManager) - @php - $normalizedGroupedManagerClass = $normalizeRelationManagerClass($groupedManager); - @endphp - - @livewire( - $normalizedGroupedManagerClass, - [...$managerLivewireProperties, ...(($groupedManager instanceof \Filament\Resources\RelationManagers\RelationManagerConfiguration) ? [...$groupedManager->relationManager::getDefaultProperties(), ...$groupedManager->properties] : $groupedManager::getDefaultProperties())], - key("{$normalizedGroupedManagerClass}-{$groupedManagerKey}"), - ) - @endforeach - @else - @php - $manager = $managers[$activeManager]; - $normalizedManagerClass = $normalizeRelationManagerClass($manager); - @endphp - - @livewire( - $normalizedManagerClass, - [...$managerLivewireProperties, ...(($manager instanceof \Filament\Resources\RelationManagers\RelationManagerConfiguration) ? [...$manager->relationManager::getDefaultProperties(), ...$manager->properties] : $manager::getDefaultProperties())], - key($normalizedManagerClass), - ) - @endif -
    - @elseif ($content) - {{ $content }} - @endif -
    diff --git a/vendor/filament/filament/resources/views/components/resources/tabs.blade.php b/vendor/filament/filament/resources/views/components/resources/tabs.blade.php deleted file mode 100644 index e55e2390..00000000 --- a/vendor/filament/filament/resources/views/components/resources/tabs.blade.php +++ /dev/null @@ -1,31 +0,0 @@ -@if (count($tabs = $this->getCachedTabs())) - @php - $activeTab = strval($this->activeTab); - $renderHookScopes = $this->getRenderHookScopes(); - @endphp - - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::resource.tabs.start', scopes: $renderHookScopes) }} - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::resource.pages.list-records.tabs.start', scopes: $renderHookScopes) }} - - @foreach ($tabs as $tabKey => $tab) - @php - $tabKey = strval($tabKey); - @endphp - - - {{ $tab->getLabel() ?? $this->generateTabLabel($tabKey) }} - - @endforeach - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::resource.tabs.end', scopes: $renderHookScopes) }} - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::resource.pages.list-records.tabs.end', scopes: $renderHookScopes) }} - -@endif diff --git a/vendor/filament/filament/resources/views/components/sidebar/group.blade.php b/vendor/filament/filament/resources/views/components/sidebar/group.blade.php deleted file mode 100644 index 6721aae4..00000000 --- a/vendor/filament/filament/resources/views/components/sidebar/group.blade.php +++ /dev/null @@ -1,90 +0,0 @@ -@props([ - 'collapsible' => true, - 'icon' => null, - 'items' => [], - 'label' => null, - 'sidebarCollapsible' => true, - 'subNavigation' => false, -]) - -
  • class(['fi-sidebar-group flex flex-col gap-y-1']) }} -> - @if ($label) -
    isSidebarCollapsibleOnDesktop()) - x-show="$store.sidebar.isOpen" - x-transition:enter="delay-100 lg:transition" - x-transition:enter-start="opacity-0" - x-transition:enter-end="opacity-100" - @endif - @class([ - 'fi-sidebar-group-button flex items-center gap-x-3 px-2 py-2', - 'cursor-pointer' => $collapsible, - ]) - > - @if ($icon) - - @endif - - - {{ $label }} - - - @if ($collapsible) - - @endif -
    - @endif - -
      isSidebarCollapsibleOnDesktop()) - x-transition:enter="delay-100 lg:transition" - x-transition:enter-start="opacity-0" - x-transition:enter-end="opacity-100" - @endif - x-collapse.duration.200ms - class="fi-sidebar-group-items flex flex-col gap-y-1" - > - @foreach ($items as $item) - - {{ $item->getLabel() }} - - @endforeach -
    -
  • diff --git a/vendor/filament/filament/resources/views/components/sidebar/index.blade.php b/vendor/filament/filament/resources/views/components/sidebar/index.blade.php deleted file mode 100644 index 793c1558..00000000 --- a/vendor/filament/filament/resources/views/components/sidebar/index.blade.php +++ /dev/null @@ -1,175 +0,0 @@ -@props([ - 'navigation', -]) - -@php - $openSidebarClasses = 'fi-sidebar-open w-[--sidebar-width] translate-x-0 shadow-xl ring-1 ring-gray-950/5 dark:ring-white/10 rtl:-translate-x-0'; - $isRtl = __('filament-panels::layout.direction') === 'rtl'; -@endphp - -{{-- format-ignore-start --}} - -{{-- format-ignore-end --}} diff --git a/vendor/filament/filament/resources/views/components/sidebar/item.blade.php b/vendor/filament/filament/resources/views/components/sidebar/item.blade.php deleted file mode 100644 index 263d25c4..00000000 --- a/vendor/filament/filament/resources/views/components/sidebar/item.blade.php +++ /dev/null @@ -1,153 +0,0 @@ -@props([ - 'active' => false, - 'activeChildItems' => false, - 'activeIcon' => null, - 'badge' => null, - 'badgeColor' => null, - 'badgeTooltip' => null, - 'childItems' => [], - 'first' => false, - 'grouped' => false, - 'icon' => null, - 'last' => false, - 'shouldOpenUrlInNewTab' => false, - 'sidebarCollapsible' => true, - 'subGrouped' => false, - 'url', -]) - -@php - $sidebarCollapsible = $sidebarCollapsible && filament()->isSidebarCollapsibleOnDesktop(); -@endphp - -
  • class([ - 'fi-sidebar-item', - // @deprecated `fi-sidebar-item-active` has been replaced by `fi-active`. - 'fi-active fi-sidebar-item-active' => $active, - 'flex flex-col gap-y-1' => $active || $activeChildItems, - ]) - }} -> - $active, - ]) - > - @if (filled($icon) && ((! $subGrouped) || filament()->isSidebarCollapsibleOnDesktop())) - ! $active, - 'text-primary-600 dark:text-primary-400' => $active, - ]) - /> - @endif - - @if ((blank($icon) && $grouped) || $subGrouped) -
    isSidebarCollapsibleOnDesktop()) - x-show="$store.sidebar.isOpen" - @endif - class="fi-sidebar-item-grouped-border relative flex h-6 w-6 items-center justify-center" - > - @if (! $first) -
    - @endif - - @if (! $last) -
    - @endif - -
    ! $active, - 'bg-primary-600 dark:bg-primary-400' => $active, - ]) - >
    -
    - @endif - - ! $active, - 'text-primary-600 dark:text-primary-400' => $active, - ]) - > - {{ $slot }} - - - @if (filled($badge)) - - - {{ $badge }} - - - @endif -
    - - @if (($active || $activeChildItems) && $childItems) -
      - @foreach ($childItems as $childItem) - - {{ $childItem->getLabel() }} - - @endforeach -
    - @endif -
  • diff --git a/vendor/filament/filament/resources/views/components/tenant-menu.blade.php b/vendor/filament/filament/resources/views/components/tenant-menu.blade.php deleted file mode 100644 index 96ed2119..00000000 --- a/vendor/filament/filament/resources/views/components/tenant-menu.blade.php +++ /dev/null @@ -1,161 +0,0 @@ -@php - $currentTenant = filament()->getTenant(); - $currentTenantName = filament()->getTenantName($currentTenant); - $items = filament()->getTenantMenuItems(); - - $billingItem = $items['billing'] ?? null; - $billingItemUrl = $billingItem?->getUrl(); - $isBillingItemVisible = $billingItem?->isVisible() ?? true; - $hasBillingItem = (filament()->hasTenantBilling() || filled($billingItemUrl)) && $isBillingItemVisible; - - $registrationItem = $items['register'] ?? null; - $registrationItemUrl = $registrationItem?->getUrl(); - $isRegistrationItemVisible = $registrationItem?->isVisible() ?? true; - $hasRegistrationItem = ((filament()->hasTenantRegistration() && filament()->getTenantRegistrationPage()::canView()) || filled($registrationItemUrl)) && $isRegistrationItemVisible; - - $profileItem = $items['profile'] ?? null; - $profileItemUrl = $profileItem?->getUrl(); - $isProfileItemVisible = $profileItem?->isVisible() ?? true; - $hasProfileItem = ((filament()->hasTenantProfile() && filament()->getTenantProfilePage()::canView($currentTenant)) || filled($profileItemUrl)) && $isProfileItemVisible; - - $canSwitchTenants = count($tenants = array_filter( - filament()->getUserTenants(filament()->auth()->user()), - fn (\Illuminate\Database\Eloquent\Model $tenant): bool => ! $tenant->is($currentTenant), - )); - - $items = \Illuminate\Support\Arr::except($items, ['billing', 'profile', 'register']); -@endphp - -{{ \Filament\Support\Facades\FilamentView::renderHook('panels::tenant-menu.before') }} - - - - - - - @if ($hasProfileItem || $hasBillingItem) - - @if ($hasProfileItem) - - {{ $profileItem?->getLabel() ?? filament()->getTenantProfilePage()::getLabel() }} - - @endif - - @if ($hasBillingItem) - - {{ $billingItem?->getLabel() ?? __('filament-panels::layout.actions.billing.label') }} - - @endif - - @endif - - @if (count($items)) - - @foreach ($items as $item) - - {{ $item->getLabel() }} - - @endforeach - - @endif - - @if ($canSwitchTenants) - - @foreach ($tenants as $tenant) - - {{ filament()->getTenantName($tenant) }} - - @endforeach - - @endif - - @if ($hasRegistrationItem) - - - {{ $registrationItem?->getLabel() ?? filament()->getTenantRegistrationPage()::getLabel() }} - - - @endif - - -{{ \Filament\Support\Facades\FilamentView::renderHook('panels::tenant-menu.after') }} diff --git a/vendor/filament/filament/resources/views/components/theme-switcher/button.blade.php b/vendor/filament/filament/resources/views/components/theme-switcher/button.blade.php deleted file mode 100644 index 6b9349d9..00000000 --- a/vendor/filament/filament/resources/views/components/theme-switcher/button.blade.php +++ /dev/null @@ -1,30 +0,0 @@ -@props([ - 'icon', - 'theme', -]) - -@php - $label = __("filament-panels::layout.actions.theme_switcher.{$theme}.label"); -@endphp - - diff --git a/vendor/filament/filament/resources/views/components/theme-switcher/index.blade.php b/vendor/filament/filament/resources/views/components/theme-switcher/index.blade.php deleted file mode 100644 index c547c801..00000000 --- a/vendor/filament/filament/resources/views/components/theme-switcher/index.blade.php +++ /dev/null @@ -1,26 +0,0 @@ -
    - - - - - -
    diff --git a/vendor/filament/filament/resources/views/components/topbar/database-notifications-trigger.blade.php b/vendor/filament/filament/resources/views/components/topbar/database-notifications-trigger.blade.php deleted file mode 100644 index 2f4131c3..00000000 --- a/vendor/filament/filament/resources/views/components/topbar/database-notifications-trigger.blade.php +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/vendor/filament/filament/resources/views/components/topbar/index.blade.php b/vendor/filament/filament/resources/views/components/topbar/index.blade.php deleted file mode 100644 index a7b59a57..00000000 --- a/vendor/filament/filament/resources/views/components/topbar/index.blade.php +++ /dev/null @@ -1,148 +0,0 @@ -@props([ - 'navigation', -]) - -
    class([ - 'fi-topbar sticky top-0 z-20 overflow-x-clip', - 'fi-topbar-with-navigation' => filament()->hasTopNavigation(), - ]) - }} -> - -
    diff --git a/vendor/filament/filament/resources/views/components/topbar/item.blade.php b/vendor/filament/filament/resources/views/components/topbar/item.blade.php deleted file mode 100644 index 048ffe3b..00000000 --- a/vendor/filament/filament/resources/views/components/topbar/item.blade.php +++ /dev/null @@ -1,77 +0,0 @@ -@props([ - 'active' => false, - 'activeIcon' => null, - 'badge' => null, - 'badgeColor' => null, - 'badgeTooltip' => null, - 'icon' => null, - 'shouldOpenUrlInNewTab' => false, - 'url' => null, -]) - -@php - $tag = $url ? 'a' : 'button'; -@endphp - -
  • $active, - ]) -> - <{{ $tag }} - @if ($url) - {{ \Filament\Support\generate_href_html($url, $shouldOpenUrlInNewTab) }} - @else - type="button" - @endif - @class([ - 'fi-topbar-item-button flex items-center justify-center gap-x-2 rounded-lg px-3 py-2 outline-none transition duration-75 hover:bg-gray-50 focus-visible:bg-gray-50 dark:hover:bg-white/5 dark:focus-visible:bg-white/5', - 'bg-gray-50 dark:bg-white/5' => $active, - ]) - > - @if ($icon || $activeIcon) - ! $active, - 'text-primary-600 dark:text-primary-400' => $active, - ]) - /> - @endif - - ! $active, - 'text-primary-600 dark:text-primary-400' => $active, - ]) - > - {{ $slot }} - - - @if (filled($badge)) - - {{ $badge }} - - @endif - - @if (! $url) - ! $active, - 'text-primary-600 dark:text-primary-400' => $active, - ]) - /> - @endif - -
  • diff --git a/vendor/filament/filament/resources/views/components/unsaved-action-changes-alert.blade.php b/vendor/filament/filament/resources/views/components/unsaved-action-changes-alert.blade.php deleted file mode 100644 index 5feb2e56..00000000 --- a/vendor/filament/filament/resources/views/components/unsaved-action-changes-alert.blade.php +++ /dev/null @@ -1,31 +0,0 @@ -@if (filament()->hasUnsavedChangesAlerts()) - @script - - @endscript -@endif diff --git a/vendor/filament/filament/resources/views/components/user-menu.blade.php b/vendor/filament/filament/resources/views/components/user-menu.blade.php deleted file mode 100644 index a4a75db1..00000000 --- a/vendor/filament/filament/resources/views/components/user-menu.blade.php +++ /dev/null @@ -1,93 +0,0 @@ -@php - $user = filament()->auth()->user(); - $items = filament()->getUserMenuItems(); - - $profileItem = $items['profile'] ?? $items['account'] ?? null; - $profileItemUrl = $profileItem?->getUrl(); - $profilePage = filament()->getProfilePage(); - $hasProfileItem = filament()->hasProfile() || filled($profileItemUrl); - - $logoutItem = $items['logout'] ?? null; - - $items = \Illuminate\Support\Arr::except($items, ['account', 'logout', 'profile']); -@endphp - -{{ \Filament\Support\Facades\FilamentView::renderHook('panels::user-menu.before') }} - - - - - - - @if ($profileItem?->isVisible() ?? true) - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::user-menu.profile.before') }} - - @if ($hasProfileItem) - - - {{ $profileItem?->getLabel() ?? ($profilePage ? $profilePage::getLabel() : null) ?? filament()->getUserName($user) }} - - - @else - - {{ $profileItem?->getLabel() ?? filament()->getUserName($user) }} - - @endif - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::user-menu.profile.after') }} - @endif - - @if (filament()->hasDarkMode() && (! filament()->hasDarkModeForced())) - - - - @endif - - - @foreach ($items as $key => $item) - - {{ $item->getLabel() }} - - @endforeach - - - {{ $logoutItem?->getLabel() ?? __('filament-panels::layout.actions.logout.label') }} - - - - -{{ \Filament\Support\Facades\FilamentView::renderHook('panels::user-menu.after') }} diff --git a/vendor/filament/filament/resources/views/pages/auth/edit-profile.blade.php b/vendor/filament/filament/resources/views/pages/auth/edit-profile.blade.php deleted file mode 100644 index a60206b6..00000000 --- a/vendor/filament/filament/resources/views/pages/auth/edit-profile.blade.php +++ /dev/null @@ -1,10 +0,0 @@ - - - {{ $this->form }} - - - - diff --git a/vendor/filament/filament/resources/views/pages/auth/email-verification/email-verification-prompt.blade.php b/vendor/filament/filament/resources/views/pages/auth/email-verification/email-verification-prompt.blade.php deleted file mode 100644 index f5d938bb..00000000 --- a/vendor/filament/filament/resources/views/pages/auth/email-verification/email-verification-prompt.blade.php +++ /dev/null @@ -1,15 +0,0 @@ - -

    - {{ - __('filament-panels::pages/auth/email-verification/email-verification-prompt.messages.notification_sent', [ - 'email' => filament()->auth()->user()->getEmailForVerification(), - ]) - }} -

    - -

    - {{ __('filament-panels::pages/auth/email-verification/email-verification-prompt.messages.notification_not_received') }} - - {{ $this->resendNotificationAction }} -

    -
    diff --git a/vendor/filament/filament/resources/views/pages/auth/login.blade.php b/vendor/filament/filament/resources/views/pages/auth/login.blade.php deleted file mode 100644 index 1072cf26..00000000 --- a/vendor/filament/filament/resources/views/pages/auth/login.blade.php +++ /dev/null @@ -1,22 +0,0 @@ - - @if (filament()->hasRegistration()) - - {{ __('filament-panels::pages/auth/login.actions.register.before') }} - - {{ $this->registerAction }} - - @endif - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::auth.login.form.before') }} - - - {{ $this->form }} - - - - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::auth.login.form.after') }} - diff --git a/vendor/filament/filament/resources/views/pages/auth/password-reset/request-password-reset.blade.php b/vendor/filament/filament/resources/views/pages/auth/password-reset/request-password-reset.blade.php deleted file mode 100644 index 4e4d1446..00000000 --- a/vendor/filament/filament/resources/views/pages/auth/password-reset/request-password-reset.blade.php +++ /dev/null @@ -1,20 +0,0 @@ - - @if (filament()->hasLogin()) - - {{ $this->loginAction }} - - @endif - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::auth.password-reset.request.form.before') }} - - - {{ $this->form }} - - - - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::auth.password-reset.request.form.after') }} - diff --git a/vendor/filament/filament/resources/views/pages/auth/password-reset/reset-password.blade.php b/vendor/filament/filament/resources/views/pages/auth/password-reset/reset-password.blade.php deleted file mode 100644 index 0e309df4..00000000 --- a/vendor/filament/filament/resources/views/pages/auth/password-reset/reset-password.blade.php +++ /dev/null @@ -1,14 +0,0 @@ - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::auth.password-reset.reset.form.before') }} - - - {{ $this->form }} - - - - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::auth.password-reset.reset.form.after') }} - diff --git a/vendor/filament/filament/resources/views/pages/auth/register.blade.php b/vendor/filament/filament/resources/views/pages/auth/register.blade.php deleted file mode 100644 index dd78d4de..00000000 --- a/vendor/filament/filament/resources/views/pages/auth/register.blade.php +++ /dev/null @@ -1,22 +0,0 @@ - - @if (filament()->hasLogin()) - - {{ __('filament-panels::pages/auth/register.actions.login.before') }} - - {{ $this->loginAction }} - - @endif - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::auth.register.form.before') }} - - - {{ $this->form }} - - - - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::auth.register.form.after') }} - diff --git a/vendor/filament/filament/resources/views/pages/dashboard.blade.php b/vendor/filament/filament/resources/views/pages/dashboard.blade.php deleted file mode 100644 index 9ef16826..00000000 --- a/vendor/filament/filament/resources/views/pages/dashboard.blade.php +++ /dev/null @@ -1,16 +0,0 @@ - - @if (method_exists($this, 'filtersForm')) - {{ $this->filtersForm }} - @endif - - - diff --git a/vendor/filament/filament/resources/views/pages/tenancy/edit-tenant-profile.blade.php b/vendor/filament/filament/resources/views/pages/tenancy/edit-tenant-profile.blade.php deleted file mode 100644 index 287c7500..00000000 --- a/vendor/filament/filament/resources/views/pages/tenancy/edit-tenant-profile.blade.php +++ /dev/null @@ -1,10 +0,0 @@ - - - {{ $this->form }} - - - - diff --git a/vendor/filament/filament/resources/views/pages/tenancy/register-tenant.blade.php b/vendor/filament/filament/resources/views/pages/tenancy/register-tenant.blade.php deleted file mode 100644 index 31c14f17..00000000 --- a/vendor/filament/filament/resources/views/pages/tenancy/register-tenant.blade.php +++ /dev/null @@ -1,10 +0,0 @@ - - - {{ $this->form }} - - - - diff --git a/vendor/filament/filament/resources/views/resources/pages/create-record.blade.php b/vendor/filament/filament/resources/views/resources/pages/create-record.blade.php deleted file mode 100644 index 7b7fc9c2..00000000 --- a/vendor/filament/filament/resources/views/resources/pages/create-record.blade.php +++ /dev/null @@ -1,20 +0,0 @@ -getResource()::getSlug()), - ]) -> - - {{ $this->form }} - - - - - - diff --git a/vendor/filament/filament/resources/views/resources/pages/edit-record.blade.php b/vendor/filament/filament/resources/views/resources/pages/edit-record.blade.php deleted file mode 100644 index 3a7cf83e..00000000 --- a/vendor/filament/filament/resources/views/resources/pages/edit-record.blade.php +++ /dev/null @@ -1,49 +0,0 @@ -getResource()::getSlug()), - 'fi-resource-record-' . $record->getKey(), - ]) -> - @capture($form) - - {{ $this->form }} - - - - @endcapture - - @php - $relationManagers = $this->getRelationManagers(); - $hasCombinedRelationManagerTabsWithContent = $this->hasCombinedRelationManagerTabsWithContent(); - @endphp - - @if ((! $hasCombinedRelationManagerTabsWithContent) || (! count($relationManagers))) - {{ $form() }} - @endif - - @if (count($relationManagers)) - - @if ($hasCombinedRelationManagerTabsWithContent) - - {{ $form() }} - - @endif - - @endif - - - diff --git a/vendor/filament/filament/resources/views/resources/pages/list-records.blade.php b/vendor/filament/filament/resources/views/resources/pages/list-records.blade.php deleted file mode 100644 index a86ab48d..00000000 --- a/vendor/filament/filament/resources/views/resources/pages/list-records.blade.php +++ /dev/null @@ -1,16 +0,0 @@ -getResource()::getSlug()), - ]) -> -
    - - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::resource.pages.list-records.table.before', scopes: $this->getRenderHookScopes()) }} - - {{ $this->table }} - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::resource.pages.list-records.table.after', scopes: $this->getRenderHookScopes()) }} -
    -
    diff --git a/vendor/filament/filament/resources/views/resources/pages/manage-related-records.blade.php b/vendor/filament/filament/resources/views/resources/pages/manage-related-records.blade.php deleted file mode 100644 index 1dc0f478..00000000 --- a/vendor/filament/filament/resources/views/resources/pages/manage-related-records.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -getResource()::getSlug()), - ]) -> - @if ($this->table->getColumns()) -
    - - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::resource.pages.manage-related-records.table.before', scopes: $this->getRenderHookScopes()) }} - - {{ $this->table }} - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::resource.pages.manage-related-records.table.after', scopes: $this->getRenderHookScopes()) }} -
    - @endif - - @if (count($relationManagers = $this->getRelationManagers())) - - @endif -
    diff --git a/vendor/filament/filament/resources/views/resources/pages/view-record.blade.php b/vendor/filament/filament/resources/views/resources/pages/view-record.blade.php deleted file mode 100644 index dd94de09..00000000 --- a/vendor/filament/filament/resources/views/resources/pages/view-record.blade.php +++ /dev/null @@ -1,45 +0,0 @@ -getResource()::getSlug()), - 'fi-resource-record-' . $record->getKey(), - ]) -> - @php - $relationManagers = $this->getRelationManagers(); - $hasCombinedRelationManagerTabsWithContent = $this->hasCombinedRelationManagerTabsWithContent(); - @endphp - - @if ((! $hasCombinedRelationManagerTabsWithContent) || (! count($relationManagers))) - @if ($this->hasInfolist()) - {{ $this->infolist }} - @else -
    - {{ $this->form }} -
    - @endif - @endif - - @if (count($relationManagers)) - - @if ($hasCombinedRelationManagerTabsWithContent) - - @if ($this->hasInfolist()) - {{ $this->infolist }} - @else - {{ $this->form }} - @endif - - @endif - - @endif -
    diff --git a/vendor/filament/filament/resources/views/resources/relation-manager.blade.php b/vendor/filament/filament/resources/views/resources/relation-manager.blade.php deleted file mode 100644 index b2b4df19..00000000 --- a/vendor/filament/filament/resources/views/resources/relation-manager.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -
    - - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::resource.relation-manager.before', scopes: $this->getRenderHookScopes()) }} - - {{ $this->table }} - - {{ \Filament\Support\Facades\FilamentView::renderHook('panels::resource.relation-manager.after', scopes: $this->getRenderHookScopes()) }} - - -
    diff --git a/vendor/filament/filament/resources/views/widgets/account-widget.blade.php b/vendor/filament/filament/resources/views/widgets/account-widget.blade.php deleted file mode 100644 index 96be48cb..00000000 --- a/vendor/filament/filament/resources/views/widgets/account-widget.blade.php +++ /dev/null @@ -1,42 +0,0 @@ -@php - $user = filament()->auth()->user(); -@endphp - - diff --git a/vendor/filament/filament/resources/views/widgets/filament-info-widget.blade.php b/vendor/filament/filament/resources/views/widgets/filament-info-widget.blade.php deleted file mode 100644 index 747f9f67..00000000 --- a/vendor/filament/filament/resources/views/widgets/filament-info-widget.blade.php +++ /dev/null @@ -1,70 +0,0 @@ - - -
    -
    - - - - - - - -

    - {{ \Composer\InstalledVersions::getPrettyVersion('filament/filament') }} -

    -
    - -
    - - {{ __('filament-panels::widgets/filament-info-widget.actions.open_documentation.label') }} - - - - - - - - - - {{ __('filament-panels::widgets/filament-info-widget.actions.open_github.label') }} - -
    -
    -
    -
    diff --git a/vendor/filament/filament/routes/web.php b/vendor/filament/filament/routes/web.php deleted file mode 100644 index 7297cc3c..00000000 --- a/vendor/filament/filament/routes/web.php +++ /dev/null @@ -1,135 +0,0 @@ -group(function () { - foreach (Filament::getPanels() as $panel) { - /** @var \Filament\Panel $panel */ - $panelId = $panel->getId(); - $hasTenancy = $panel->hasTenancy(); - $tenantRoutePrefix = $panel->getTenantRoutePrefix(); - $tenantSlugAttribute = $panel->getTenantSlugAttribute(); - $domains = $panel->getDomains(); - - foreach ((empty($domains) ? [null] : $domains) as $domain) { - Route::domain($domain) - ->middleware($panel->getMiddleware()) - ->name("{$panelId}.") - ->prefix($panel->getPath()) - ->group(function () use ($panel, $hasTenancy, $tenantRoutePrefix, $tenantSlugAttribute) { - if ($routes = $panel->getRoutes()) { - $routes($panel); - } - - Route::name('auth.')->group(function () use ($panel) { - if ($panel->hasLogin()) { - Route::get($panel->getLoginRouteSlug(), $panel->getLoginRouteAction()) - ->name('login'); - } - - if ($panel->hasPasswordReset()) { - Route::name('password-reset.') - ->prefix($panel->getResetPasswordRoutePrefix()) - ->group(function () use ($panel) { - Route::get($panel->getRequestPasswordResetRouteSlug(), $panel->getRequestPasswordResetRouteAction()) - ->name('request'); - Route::get($panel->getResetPasswordRouteSlug(), $panel->getResetPasswordRouteAction()) - ->middleware(['signed']) - ->name('reset'); - }); - } - - if ($panel->hasRegistration()) { - Route::get($panel->getRegistrationRouteSlug(), $panel->getRegistrationRouteAction()) - ->name('register'); - } - }); - - Route::middleware($panel->getAuthMiddleware()) - ->group(function () use ($panel, $hasTenancy, $tenantRoutePrefix, $tenantSlugAttribute): void { - if ($routes = $panel->getAuthenticatedRoutes()) { - $routes($panel); - } - - if ($hasTenancy) { - Route::get('/', RedirectToTenantController::class)->name('tenant'); - } - - Route::name('auth.') - ->group(function () use ($panel): void { - Route::post('/logout', LogoutController::class)->name('logout'); - - if ($panel->hasProfile()) { - $panel->getProfilePage()::registerRoutes($panel); - } - }); - - if ($panel->hasEmailVerification()) { - Route::name('auth.email-verification.') - ->prefix($panel->getEmailVerificationRoutePrefix()) - ->group(function () use ($panel) { - Route::get($panel->getEmailVerificationPromptRouteSlug(), $panel->getEmailVerificationPromptRouteAction()) - ->name('prompt'); - Route::get($panel->getEmailVerificationRouteSlug('/{id}/{hash}'), EmailVerificationController::class) - ->middleware(['signed', 'throttle:6,1']) - ->name('verify'); - }); - } - - Route::name('tenant.') - ->group(function () use ($panel): void { - if ($panel->hasTenantRegistration()) { - $panel->getTenantRegistrationPage()::registerRoutes($panel); - } - }); - - Route::middleware($hasTenancy ? $panel->getTenantMiddleware() : []) - ->prefix($hasTenancy ? (($tenantRoutePrefix) ? "{$tenantRoutePrefix}/" : '') . ('{tenant' . (($tenantSlugAttribute) ? ":{$tenantSlugAttribute}" : '') . '}') : '') - ->group(function () use ($panel): void { - if ($routes = $panel->getAuthenticatedTenantRoutes()) { - $routes($panel); - } - - Route::get('/', RedirectToHomeController::class)->name('home'); - - Route::name('tenant.')->group(function () use ($panel): void { - if ($panel->hasTenantBilling()) { - Route::get($panel->getTenantBillingRouteSlug(), $panel->getTenantBillingProvider()->getRouteAction()) - ->name('billing'); - } - - if ($panel->hasTenantProfile()) { - $panel->getTenantProfilePage()::registerRoutes($panel); - } - }); - - foreach ($panel->getPages() as $page) { - $page::registerRoutes($panel); - } - - foreach ($panel->getResources() as $resource) { - $resource::registerRoutes($panel); - } - }); - - }); - - if ($hasTenancy) { - Route::middleware($panel->getTenantMiddleware()) - ->prefix((($tenantRoutePrefix) ? "{$tenantRoutePrefix}/" : '') . '{tenant' . (($tenantSlugAttribute) ? ":{$tenantSlugAttribute}" : '') . '}') - ->group(function () use ($panel): void { - if ($routes = $panel->getTenantRoutes()) { - $routes($panel); - } - }); - } - }); - } - } - }); diff --git a/vendor/filament/filament/src/AvatarProviders/Contracts/AvatarProvider.php b/vendor/filament/filament/src/AvatarProviders/Contracts/AvatarProvider.php deleted file mode 100644 index 3ebfc7ac..00000000 --- a/vendor/filament/filament/src/AvatarProviders/Contracts/AvatarProvider.php +++ /dev/null @@ -1,10 +0,0 @@ -trim() - ->explode(' ') - ->map(fn (string $segment): string => filled($segment) ? mb_substr($segment, 0, 1) : '') - ->join(' '); - - $backgroundColor = Rgb::fromString('rgb(' . FilamentColor::getColors()['gray'][950] . ')')->toHex(); - - return 'https://ui-avatars.com/api/?name=' . urlencode($name) . '&color=FFFFFF&background=' . str($backgroundColor)->after('#'); - } -} diff --git a/vendor/filament/filament/src/Billing/Providers/Contracts/Provider.php b/vendor/filament/filament/src/Billing/Providers/Contracts/Provider.php deleted file mode 100644 index e028753d..00000000 --- a/vendor/filament/filament/src/Billing/Providers/Contracts/Provider.php +++ /dev/null @@ -1,15 +0,0 @@ - - */ - public function getRouteAction(): string | Closure | array; - - public function getSubscribedMiddleware(): string; -} diff --git a/vendor/filament/filament/src/Clusters/Cluster.php b/vendor/filament/filament/src/Clusters/Cluster.php deleted file mode 100644 index fc02e004..00000000 --- a/vendor/filament/filament/src/Clusters/Cluster.php +++ /dev/null @@ -1,130 +0,0 @@ - - */ - public static function getClusteredComponents(): array - { - return Filament::getClusteredComponents(static::class); - } - - public static function canAccessClusteredComponents(): bool - { - foreach (static::getClusteredComponents() as $component) { - if ($component::canAccess()) { - return true; - } - } - - return false; - } - - public static function shouldRegisterNavigation(): bool - { - return static::canAccessClusteredComponents(); - } - - public function mount(): void - { - foreach ($this->getCachedSubNavigation() as $navigationGroup) { - foreach ($navigationGroup->getItems() as $navigationItem) { - redirect($navigationItem->getUrl()); - - return; - } - } - } - - public function getSubNavigation(): array - { - return $this->generateNavigationItems(static::getClusteredComponents()); - } - - /** - * @param array $breadcrumbs - * @return array - */ - public static function unshiftClusterBreadcrumbs(array $breadcrumbs): array - { - $clusterBreadcrumb = static::getClusterBreadcrumb(); - - if (Arr::first($breadcrumbs) === $clusterBreadcrumb) { - return $breadcrumbs; - } - - return [ - ...[static::getUrl() => $clusterBreadcrumb], - ...$breadcrumbs, - ]; - } - - public static function getNavigationLabel(): string - { - return static::$navigationLabel ?? static::$title ?? str(class_basename(static::class)) - ->beforeLast('Cluster') - ->kebab() - ->replace('-', ' ') - ->title(); - } - - public static function getClusterBreadcrumb(): ?string - { - return static::$clusterBreadcrumb ?? static::$title ?? str(class_basename(static::class)) - ->beforeLast('Cluster') - ->kebab() - ->replace('-', ' ') - ->title(); - } - - public static function prependClusterSlug(string $slug): string - { - return static::getSlug() . "/{$slug}"; - } - - public static function prependClusterRouteBaseName(string $name): string - { - return (string) str(static::getSlug()) - ->replace('/', '.') - ->append(".{$name}"); - } - - public static function getSlug(): string - { - if (filled(static::$slug)) { - return static::$slug; - } - - return (string) str(class_basename(static::class)) - ->beforeLast('Cluster') - ->kebab() - ->slug(); - } - - public static function getRouteName(?string $panel = null): string - { - $panel = $panel ? Filament::getPanel($panel) : Filament::getCurrentPanel(); - - return $panel->generateRouteName(static::getRelativeRouteName()); - } - - public static function getNavigationItemActiveRoutePattern(): string - { - return static::getRouteName() . '.*'; - } - - public static function registerRoutes(Panel $panel): void - { - static::routes($panel); - } -} diff --git a/vendor/filament/filament/src/Commands/Aliases/MakeClusterCommand.php b/vendor/filament/filament/src/Commands/Aliases/MakeClusterCommand.php deleted file mode 100644 index e417b7a6..00000000 --- a/vendor/filament/filament/src/Commands/Aliases/MakeClusterCommand.php +++ /dev/null @@ -1,12 +0,0 @@ -argument('name') ?? - text( - label: 'What is the cluster name?', - placeholder: 'Settings', - required: true, - ), - ) - ->trim('/') - ->trim('\\') - ->trim(' ') - ->replace('/', '\\'); - $clusterClass = (string) str($cluster)->afterLast('\\'); - $clusterNamespace = str($cluster)->contains('\\') ? - (string) str($cluster)->beforeLast('\\') : - ''; - - $panel = $this->option('panel'); - - if ($panel) { - $panel = Filament::getPanel($panel); - } - - if (! $panel) { - $panels = Filament::getPanels(); - - /** @var Panel $panel */ - $panel = (count($panels) > 1) ? $panels[select( - label: 'Which panel would you like to create this in?', - options: array_map( - fn (Panel $panel): string => $panel->getId(), - $panels, - ), - default: Filament::getDefaultPanel()->getId() - )] : Arr::first($panels); - } - - $clusterDirectories = $panel->getClusterDirectories(); - $clusterNamespaces = $panel->getClusterNamespaces(); - - $namespace = (count($clusterNamespaces) > 1) ? - select( - label: 'Which namespace would you like to create this in?', - options: $clusterNamespaces - ) : - (Arr::first($clusterNamespaces) ?? 'App\\Filament\\Clusters'); - $path = (count($clusterDirectories) > 1) ? - $clusterDirectories[array_search($namespace, $clusterNamespaces)] : - (Arr::first($clusterDirectories) ?? app_path('Filament/Clusters/')); - - $path = (string) str($cluster) - ->prepend('/') - ->prepend($path) - ->replace('\\', '/') - ->replace('//', '/') - ->append('.php'); - - $files = [$path]; - - if (! $this->option('force') && $this->checkForCollision($files)) { - return static::INVALID; - } - - $this->copyStubToApp('Cluster', $path, [ - 'class' => $clusterClass, - 'namespace' => $namespace . ($clusterNamespace !== '' ? "\\{$clusterNamespace}" : ''), - ]); - - $this->components->info("Filament cluster [{$path}] created successfully."); - - if (empty($clusterNamespaces)) { - $this->components->info('Make sure to register the cluster with `discoverClusters()` in the panel service provider.'); - } - - return static::SUCCESS; - } -} diff --git a/vendor/filament/filament/src/Commands/MakePageCommand.php b/vendor/filament/filament/src/Commands/MakePageCommand.php deleted file mode 100644 index 82bdaa7e..00000000 --- a/vendor/filament/filament/src/Commands/MakePageCommand.php +++ /dev/null @@ -1,310 +0,0 @@ -argument('name') ?? - text( - label: 'What is the page name?', - placeholder: 'EditSettings', - required: true, - ), - ) - ->trim('/') - ->trim('\\') - ->trim(' ') - ->replace('/', '\\'); - $pageClass = (string) str($page)->afterLast('\\'); - $pageNamespace = str($page)->contains('\\') ? - (string) str($page)->beforeLast('\\') : - ''; - - $resource = null; - $resourceClass = null; - $resourcePage = null; - - $resourceInput = $this->option('resource') ?? text( - label: 'What is the resource you would like to create this in?', - placeholder: '[Optional] UserResource', - ); - - if (filled($resourceInput)) { - $resource = (string) str($resourceInput) - ->studly() - ->trim('/') - ->trim('\\') - ->trim(' ') - ->replace('/', '\\'); - - if (! str($resource)->endsWith('Resource')) { - $resource .= 'Resource'; - } - - $resourceClass = (string) str($resource) - ->afterLast('\\'); - - $resourcePage = $this->option('type') ?? select( - label: 'Which type of page would you like to create?', - options: [ - 'custom' => 'Custom', - 'ListRecords' => 'List', - 'CreateRecord' => 'Create', - 'EditRecord' => 'Edit', - 'ViewRecord' => 'View', - 'ManageRelatedRecords' => 'Relationship', - 'ManageRecords' => 'Manage', - ], - default: 'custom' - ); - - if ($resourcePage === 'ManageRelatedRecords') { - $relationship = (string) str(text( - label: 'What is the relationship?', - placeholder: 'members', - required: true, - )) - ->trim(' '); - - $recordTitleAttribute = (string) str(text( - label: 'What is the title attribute?', - placeholder: 'name', - required: true, - )) - ->trim(' '); - - $tableHeaderActions = []; - - $tableHeaderActions[] = 'Tables\Actions\CreateAction::make(),'; - - if ($hasAssociateAction = confirm('Is this a one-to-many relationship where the related records can be associated?')) { - $tableHeaderActions[] = 'Tables\Actions\AssociateAction::make(),'; - } elseif ($hasAttachAction = confirm('Is this a many-to-many relationship where the related records can be attached?')) { - $tableHeaderActions[] = 'Tables\Actions\AttachAction::make(),'; - } - - $tableHeaderActions = implode(PHP_EOL, $tableHeaderActions); - - $tableActions = []; - - if (confirm('Would you like an action to open each record in a read-only View modal?')) { - $tableActions[] = 'Tables\Actions\ViewAction::make(),'; - } - - $tableActions[] = 'Tables\Actions\EditAction::make(),'; - - if ($hasAssociateAction) { - $tableActions[] = 'Tables\Actions\DissociateAction::make(),'; - } - - if ($hasAttachAction ?? false) { - $tableActions[] = 'Tables\Actions\DetachAction::make(),'; - } - - $tableActions[] = 'Tables\Actions\DeleteAction::make(),'; - - if ($hasSoftDeletes = confirm('Can the related records be soft deleted?')) { - $tableActions[] = 'Tables\Actions\ForceDeleteAction::make(),'; - $tableActions[] = 'Tables\Actions\RestoreAction::make(),'; - } - - $tableActions = implode(PHP_EOL, $tableActions); - - $tableBulkActions = []; - - if ($hasAssociateAction) { - $tableBulkActions[] = 'Tables\Actions\DissociateBulkAction::make(),'; - } - - if ($hasAttachAction ?? false) { - $tableBulkActions[] = 'Tables\Actions\DetachBulkAction::make(),'; - } - - $tableBulkActions[] = 'Tables\Actions\DeleteBulkAction::make(),'; - - $modifyQueryUsing = ''; - - if ($hasSoftDeletes) { - $modifyQueryUsing .= '->modifyQueryUsing(fn (Builder $query) => $query->withoutGlobalScopes(['; - $modifyQueryUsing .= PHP_EOL . ' SoftDeletingScope::class,'; - $modifyQueryUsing .= PHP_EOL . ']))'; - - $tableBulkActions[] = 'Tables\Actions\RestoreBulkAction::make(),'; - $tableBulkActions[] = 'Tables\Actions\ForceDeleteBulkAction::make(),'; - } - - $tableBulkActions = implode(PHP_EOL, $tableBulkActions); - } - } - - $panel = $this->option('panel'); - - if ($panel) { - $panel = Filament::getPanel($panel); - } - - if (! $panel) { - $panels = Filament::getPanels(); - - /** @var Panel $panel */ - $panel = (count($panels) > 1) ? $panels[select( - label: 'Which panel would you like to create this in?', - options: array_map( - fn (Panel $panel): string => $panel->getId(), - $panels, - ), - default: Filament::getDefaultPanel()->getId() - )] : Arr::first($panels); - } - - if (empty($resource)) { - $pageDirectories = $panel->getPageDirectories(); - $pageNamespaces = $panel->getPageNamespaces(); - - $namespace = (count($pageNamespaces) > 1) ? - select( - label: 'Which namespace would you like to create this in?', - options: $pageNamespaces - ) : - (Arr::first($pageNamespaces) ?? 'App\\Filament\\Pages'); - $path = (count($pageDirectories) > 1) ? - $pageDirectories[array_search($namespace, $pageNamespaces)] : - (Arr::first($pageDirectories) ?? app_path('Filament/Pages/')); - } else { - $resourceDirectories = $panel->getResourceDirectories(); - $resourceNamespaces = $panel->getResourceNamespaces(); - - $resourceNamespace = (count($resourceNamespaces) > 1) ? - select( - label: 'Which namespace would you like to create this in?', - options: $resourceNamespaces - ) : - (Arr::first($resourceNamespaces) ?? 'App\\Filament\\Resources'); - $resourcePath = (count($resourceDirectories) > 1) ? - $resourceDirectories[array_search($resourceNamespace, $resourceNamespaces)] : - (Arr::first($resourceDirectories) ?? app_path('Filament/Resources/')); - } - - $view = str($page) - ->prepend( - (string) str(empty($resource) ? "{$namespace}\\" : "{$resourceNamespace}\\{$resource}\\pages\\") - ->replaceFirst('App\\', '') - ) - ->replace('\\', '/') - ->explode('/') - ->map(fn ($segment) => Str::lower(Str::kebab($segment))) - ->implode('.'); - - $path = (string) str($page) - ->prepend('/') - ->prepend(empty($resource) ? $path : $resourcePath . "\\{$resource}\\Pages\\") - ->replace('\\', '/') - ->replace('//', '/') - ->append('.php'); - - $viewPath = resource_path( - (string) str($view) - ->replace('.', '/') - ->prepend('views/') - ->append('.blade.php'), - ); - - $files = [ - $path, - ...($resourcePage === 'custom' ? [$viewPath] : []), - ]; - - if (! $this->option('force') && $this->checkForCollision($files)) { - return static::INVALID; - } - - $potentialCluster = empty($resource) ? ((string) str($namespace)->beforeLast('\Pages')) : null; - $clusterAssignment = null; - $clusterImport = null; - - if ( - filled($potentialCluster) && - class_exists($potentialCluster) && - is_subclass_of($potentialCluster, Cluster::class) - ) { - $clusterAssignment = $this->indentString(PHP_EOL . PHP_EOL . 'protected static ?string $cluster = ' . class_basename($potentialCluster) . '::class;'); - $clusterImport = "use {$potentialCluster};" . PHP_EOL; - } - - if (empty($resource)) { - $this->copyStubToApp('Page', $path, [ - 'class' => $pageClass, - 'clusterAssignment' => $clusterAssignment, - 'clusterImport' => $clusterImport, - 'namespace' => $namespace . ($pageNamespace !== '' ? "\\{$pageNamespace}" : ''), - 'view' => $view, - ]); - } elseif ($resourcePage === 'ManageRelatedRecords') { - $this->copyStubToApp('ResourceManageRelatedRecordsPage', $path, [ - 'baseResourcePage' => "Filament\\Resources\\Pages\\{$resourcePage}", - 'baseResourcePageClass' => $resourcePage, - 'modifyQueryUsing' => filled($modifyQueryUsing ?? null) ? PHP_EOL . $this->indentString($modifyQueryUsing ?? '', 3) : $modifyQueryUsing ?? '', - 'namespace' => "{$resourceNamespace}\\{$resource}\\Pages" . ($pageNamespace !== '' ? "\\{$pageNamespace}" : ''), - 'recordTitleAttribute' => $recordTitleAttribute ?? null, - 'relationship' => $relationship ?? null, - 'resource' => "{$resourceNamespace}\\{$resource}", - 'resourceClass' => $resourceClass, - 'resourcePageClass' => $pageClass, - 'tableActions' => $this->indentString($tableActions ?? '', 4), - 'tableBulkActions' => $this->indentString($tableBulkActions ?? '', 5), - 'tableFilters' => $this->indentString( - ($hasSoftDeletes ?? false) ? 'Tables\Filters\TrashedFilter::make()' : '//', - 4, - ), - 'tableHeaderActions' => $this->indentString($tableHeaderActions ?? '', 4), - 'title' => Str::headline($relationship ?? ''), - 'view' => $view, - ]); - } else { - $this->copyStubToApp($resourcePage === 'custom' ? 'CustomResourcePage' : 'ResourcePage', $path, [ - 'baseResourcePage' => 'Filament\\Resources\\Pages\\' . ($resourcePage === 'custom' ? 'Page' : $resourcePage), - 'baseResourcePageClass' => $resourcePage === 'custom' ? 'Page' : $resourcePage, - 'namespace' => "{$resourceNamespace}\\{$resource}\\Pages" . ($pageNamespace !== '' ? "\\{$pageNamespace}" : ''), - 'resource' => "{$resourceNamespace}\\{$resource}", - 'resourceClass' => $resourceClass, - 'resourcePageClass' => $pageClass, - 'view' => $view, - ]); - } - - if (empty($resource) || $resourcePage === 'custom') { - $this->copyStubToApp('PageView', $viewPath); - } - - $this->components->info("Filament page [{$path}] created successfully."); - - if ($resource !== null) { - $this->components->info("Make sure to register the page in `{$resourceClass}::getPages()`."); - } - - return static::SUCCESS; - } -} diff --git a/vendor/filament/filament/src/Commands/MakePanelCommand.php b/vendor/filament/filament/src/Commands/MakePanelCommand.php deleted file mode 100644 index 1ce1c5ab..00000000 --- a/vendor/filament/filament/src/Commands/MakePanelCommand.php +++ /dev/null @@ -1,40 +0,0 @@ -generatePanel(id: $this->argument('id'), placeholder: 'app', force: $this->option('force'))) { - return static::FAILURE; - } - - return static::SUCCESS; - } - - /** - * We need to override this method as the panel provider - * stubs are part of the support package, not panels. - */ - protected function getDefaultStubPath(): string - { - $reflectionClass = new ReflectionClass($this); - - return (string) str($reflectionClass->getFileName()) - ->beforeLast('Commands') - ->append('../../support/stubs'); - } -} diff --git a/vendor/filament/filament/src/Commands/MakeRelationManagerCommand.php b/vendor/filament/filament/src/Commands/MakeRelationManagerCommand.php deleted file mode 100644 index 72bab493..00000000 --- a/vendor/filament/filament/src/Commands/MakeRelationManagerCommand.php +++ /dev/null @@ -1,189 +0,0 @@ -argument('resource') ?? text( - label: 'What is the resource you would like to create this in?', - placeholder: 'DepartmentResource', - required: true, - ), - ) - ->studly() - ->trim('/') - ->trim('\\') - ->trim(' ') - ->replace('/', '\\'); - - if (! str($resource)->endsWith('Resource')) { - $resource .= 'Resource'; - } - - $relationship = (string) str($this->argument('relationship') ?? text( - label: 'What is the relationship?', - placeholder: 'members', - required: true, - )) - ->trim(' '); - $managerClass = (string) str($relationship) - ->studly() - ->append('RelationManager'); - - $recordTitleAttribute = (string) str($this->argument('recordTitleAttribute') ?? text( - label: 'What is the title attribute?', - placeholder: 'name', - required: true, - )) - ->trim(' '); - - $panel = $this->option('panel'); - - if ($panel) { - $panel = Filament::getPanel($panel); - } - - if (! $panel) { - $panels = Filament::getPanels(); - - /** @var Panel $panel */ - $panel = (count($panels) > 1) ? $panels[select( - label: 'Which panel would you like to create this in?', - options: array_map( - fn (Panel $panel): string => $panel->getId(), - $panels, - ), - default: Filament::getDefaultPanel()->getId() - )] : Arr::first($panels); - } - - $resourceDirectories = $panel->getResourceDirectories(); - $resourceNamespaces = $panel->getResourceNamespaces(); - - $resourceNamespace = (count($resourceNamespaces) > 1) ? - select( - label: 'Which namespace would you like to create this in?', - options: $resourceNamespaces - ) : - (Arr::first($resourceNamespaces) ?? 'App\\Filament\\Resources'); - $resourcePath = (count($resourceDirectories) > 1) ? - $resourceDirectories[array_search($resourceNamespace, $resourceNamespaces)] : - (Arr::first($resourceDirectories) ?? app_path('Filament/Resources/')); - - $path = (string) str($managerClass) - ->prepend("{$resourcePath}/{$resource}/RelationManagers/") - ->replace('\\', '/') - ->append('.php'); - - if (! $this->option('force') && $this->checkForCollision([ - $path, - ])) { - return static::INVALID; - } - - $tableHeaderActions = []; - - $tableHeaderActions[] = 'Tables\Actions\CreateAction::make(),'; - - if ($this->option('associate')) { - $tableHeaderActions[] = 'Tables\Actions\AssociateAction::make(),'; - } - - if ($this->option('attach')) { - $tableHeaderActions[] = 'Tables\Actions\AttachAction::make(),'; - } - - $tableHeaderActions = implode(PHP_EOL, $tableHeaderActions); - - $tableActions = []; - - if ($this->option('view')) { - $tableActions[] = 'Tables\Actions\ViewAction::make(),'; - } - - $tableActions[] = 'Tables\Actions\EditAction::make(),'; - - if ($this->option('associate')) { - $tableActions[] = 'Tables\Actions\DissociateAction::make(),'; - } - - if ($this->option('attach')) { - $tableActions[] = 'Tables\Actions\DetachAction::make(),'; - } - - $tableActions[] = 'Tables\Actions\DeleteAction::make(),'; - - if ($this->option('soft-deletes')) { - $tableActions[] = 'Tables\Actions\ForceDeleteAction::make(),'; - $tableActions[] = 'Tables\Actions\RestoreAction::make(),'; - } - - $tableActions = implode(PHP_EOL, $tableActions); - - $tableBulkActions = []; - - if ($this->option('associate')) { - $tableBulkActions[] = 'Tables\Actions\DissociateBulkAction::make(),'; - } - - if ($this->option('attach')) { - $tableBulkActions[] = 'Tables\Actions\DetachBulkAction::make(),'; - } - - $tableBulkActions[] = 'Tables\Actions\DeleteBulkAction::make(),'; - - $modifyQueryUsing = ''; - - if ($this->option('soft-deletes')) { - $modifyQueryUsing .= '->modifyQueryUsing(fn (Builder $query) => $query->withoutGlobalScopes(['; - $modifyQueryUsing .= PHP_EOL . ' SoftDeletingScope::class,'; - $modifyQueryUsing .= PHP_EOL . ']))'; - - $tableBulkActions[] = 'Tables\Actions\RestoreBulkAction::make(),'; - $tableBulkActions[] = 'Tables\Actions\ForceDeleteBulkAction::make(),'; - } - - $tableBulkActions = implode(PHP_EOL, $tableBulkActions); - - $this->copyStubToApp('RelationManager', $path, [ - 'modifyQueryUsing' => filled($modifyQueryUsing) ? PHP_EOL . $this->indentString($modifyQueryUsing, 3) : $modifyQueryUsing, - 'namespace' => "{$resourceNamespace}\\{$resource}\\RelationManagers", - 'managerClass' => $managerClass, - 'recordTitleAttribute' => $recordTitleAttribute, - 'relationship' => $relationship, - 'tableActions' => $this->indentString($tableActions, 4), - 'tableBulkActions' => $this->indentString($tableBulkActions, 5), - 'tableFilters' => $this->indentString( - $this->option('soft-deletes') ? 'Tables\Filters\TrashedFilter::make()' : '//', - 4, - ), - 'tableHeaderActions' => $this->indentString($tableHeaderActions, 4), - ]); - - $this->components->info("Filament relation manager [{$path}] created successfully."); - - $this->components->info("Make sure to register the relation in `{$resource}::getRelations()`."); - - return static::SUCCESS; - } -} diff --git a/vendor/filament/filament/src/Commands/MakeResourceCommand.php b/vendor/filament/filament/src/Commands/MakeResourceCommand.php deleted file mode 100644 index 25a5389f..00000000 --- a/vendor/filament/filament/src/Commands/MakeResourceCommand.php +++ /dev/null @@ -1,293 +0,0 @@ -argument('name') ?? text( - label: 'What is the model name?', - placeholder: 'BlogPost', - required: true, - )) - ->studly() - ->beforeLast('Resource') - ->trim('/') - ->trim('\\') - ->trim(' ') - ->studly() - ->replace('/', '\\'); - - if (blank($model)) { - $model = 'Resource'; - } - - $modelClass = (string) str($model)->afterLast('\\'); - $modelSubNamespace = str($model)->contains('\\') ? - (string) str($model)->beforeLast('\\') : - ''; - $modelNamespace = $this->option('model-namespace') ?? 'App\\Models'; - $pluralModelClass = (string) str($modelClass)->pluralStudly(); - $needsAlias = $modelClass === 'Record'; - - $panel = $this->option('panel'); - - if ($panel) { - $panel = Filament::getPanel($panel); - } - - if (! $panel) { - $panels = Filament::getPanels(); - - /** @var Panel $panel */ - $panel = (count($panels) > 1) ? $panels[select( - label: 'Which panel would you like to create this in?', - options: array_map( - fn (Panel $panel): string => $panel->getId(), - $panels, - ), - default: Filament::getDefaultPanel()->getId() - )] : Arr::first($panels); - } - - $resourceDirectories = $panel->getResourceDirectories(); - $resourceNamespaces = $panel->getResourceNamespaces(); - - $namespace = (count($resourceNamespaces) > 1) ? - select( - label: 'Which namespace would you like to create this in?', - options: $resourceNamespaces - ) : - (Arr::first($resourceNamespaces) ?? 'App\\Filament\\Resources'); - $path = (count($resourceDirectories) > 1) ? - $resourceDirectories[array_search($namespace, $resourceNamespaces)] : - (Arr::first($resourceDirectories) ?? app_path('Filament/Resources/')); - - $resource = "{$model}Resource"; - $resourceClass = "{$modelClass}Resource"; - $resourceNamespace = $modelSubNamespace; - $namespace .= $resourceNamespace !== '' ? "\\{$resourceNamespace}" : ''; - $listResourcePageClass = "List{$pluralModelClass}"; - $manageResourcePageClass = "Manage{$pluralModelClass}"; - $createResourcePageClass = "Create{$modelClass}"; - $editResourcePageClass = "Edit{$modelClass}"; - $viewResourcePageClass = "View{$modelClass}"; - - $baseResourcePath = - (string) str($resource) - ->prepend('/') - ->prepend($path) - ->replace('\\', '/') - ->replace('//', '/'); - - $resourcePath = "{$baseResourcePath}.php"; - $resourcePagesDirectory = "{$baseResourcePath}/Pages"; - $listResourcePagePath = "{$resourcePagesDirectory}/{$listResourcePageClass}.php"; - $manageResourcePagePath = "{$resourcePagesDirectory}/{$manageResourcePageClass}.php"; - $createResourcePagePath = "{$resourcePagesDirectory}/{$createResourcePageClass}.php"; - $editResourcePagePath = "{$resourcePagesDirectory}/{$editResourcePageClass}.php"; - $viewResourcePagePath = "{$resourcePagesDirectory}/{$viewResourcePageClass}.php"; - - if (! $this->option('force') && $this->checkForCollision([ - $resourcePath, - $listResourcePagePath, - $manageResourcePagePath, - $createResourcePagePath, - $editResourcePagePath, - $viewResourcePagePath, - ])) { - return static::INVALID; - } - - $pages = ''; - $pages .= '\'index\' => Pages\\' . ($this->option('simple') ? $manageResourcePageClass : $listResourcePageClass) . '::route(\'/\'),'; - - if (! $this->option('simple')) { - $pages .= PHP_EOL . "'create' => Pages\\{$createResourcePageClass}::route('/create'),"; - - if ($this->option('view')) { - $pages .= PHP_EOL . "'view' => Pages\\{$viewResourcePageClass}::route('/{record}'),"; - } - - $pages .= PHP_EOL . "'edit' => Pages\\{$editResourcePageClass}::route('/{record}/edit'),"; - } - - $tableActions = []; - - if ($this->option('view')) { - $tableActions[] = 'Tables\Actions\ViewAction::make(),'; - } - - $tableActions[] = 'Tables\Actions\EditAction::make(),'; - - $relations = ''; - - if ($this->option('simple')) { - $tableActions[] = 'Tables\Actions\DeleteAction::make(),'; - - if ($this->option('soft-deletes')) { - $tableActions[] = 'Tables\Actions\ForceDeleteAction::make(),'; - $tableActions[] = 'Tables\Actions\RestoreAction::make(),'; - } - } else { - $relations .= PHP_EOL . 'public static function getRelations(): array'; - $relations .= PHP_EOL . '{'; - $relations .= PHP_EOL . ' return ['; - $relations .= PHP_EOL . ' //'; - $relations .= PHP_EOL . ' ];'; - $relations .= PHP_EOL . '}' . PHP_EOL; - } - - $tableActions = implode(PHP_EOL, $tableActions); - - $tableBulkActions = []; - - $tableBulkActions[] = 'Tables\Actions\DeleteBulkAction::make(),'; - - $eloquentQuery = ''; - - if ($this->option('soft-deletes')) { - $tableBulkActions[] = 'Tables\Actions\ForceDeleteBulkAction::make(),'; - $tableBulkActions[] = 'Tables\Actions\RestoreBulkAction::make(),'; - - $eloquentQuery .= PHP_EOL . PHP_EOL . 'public static function getEloquentQuery(): Builder'; - $eloquentQuery .= PHP_EOL . '{'; - $eloquentQuery .= PHP_EOL . ' return parent::getEloquentQuery()'; - $eloquentQuery .= PHP_EOL . ' ->withoutGlobalScopes(['; - $eloquentQuery .= PHP_EOL . ' SoftDeletingScope::class,'; - $eloquentQuery .= PHP_EOL . ' ]);'; - $eloquentQuery .= PHP_EOL . '}'; - } - - $tableBulkActions = implode(PHP_EOL, $tableBulkActions); - - $potentialCluster = (string) str($namespace)->beforeLast('\Resources'); - $clusterAssignment = null; - $clusterImport = null; - - if ( - class_exists($potentialCluster) && - is_subclass_of($potentialCluster, Cluster::class) - ) { - $clusterAssignment = $this->indentString(PHP_EOL . PHP_EOL . 'protected static ?string $cluster = ' . class_basename($potentialCluster) . '::class;'); - $clusterImport = "use {$potentialCluster};" . PHP_EOL; - } - - $this->copyStubToApp('Resource', $resourcePath, [ - 'clusterAssignment' => $clusterAssignment, - 'clusterImport' => $clusterImport, - 'eloquentQuery' => $this->indentString($eloquentQuery, 1), - 'formSchema' => $this->indentString($this->option('generate') ? $this->getResourceFormSchema( - $modelNamespace . ($modelSubNamespace !== '' ? "\\{$modelSubNamespace}" : '') . '\\' . $modelClass, - ) : '//', 4), - 'model' => ($model === 'Resource') ? "{$modelNamespace}\\Resource as ResourceModel" : "{$modelNamespace}\\{$model}", - 'modelClass' => ($model === 'Resource') ? 'ResourceModel' : $modelClass, - 'namespace' => $namespace, - 'pages' => $this->indentString($pages, 3), - 'relations' => $this->indentString($relations, 1), - 'resource' => "{$namespace}\\{$resourceClass}", - 'resourceClass' => $resourceClass, - 'tableActions' => $this->indentString($tableActions, 4), - 'tableBulkActions' => $this->indentString($tableBulkActions, 5), - 'tableColumns' => $this->indentString($this->option('generate') ? $this->getResourceTableColumns( - $modelNamespace . ($modelSubNamespace !== '' ? "\\{$modelSubNamespace}" : '') . '\\' . $modelClass, - ) : '//', 4), - 'tableFilters' => $this->indentString( - $this->option('soft-deletes') ? 'Tables\Filters\TrashedFilter::make(),' : '//', - 4, - ), - ]); - - if ($this->option('simple')) { - $this->copyStubToApp('ResourceManagePage', $manageResourcePagePath, [ - 'baseResourcePage' => 'Filament\\Resources\\Pages\\ManageRecords' . ($needsAlias ? ' as BaseManageRecords' : ''), - 'baseResourcePageClass' => $needsAlias ? 'BaseManageRecords' : 'ManageRecords', - 'namespace' => "{$namespace}\\{$resourceClass}\\Pages", - 'resource' => "{$namespace}\\{$resourceClass}", - 'resourceClass' => $resourceClass, - 'resourcePageClass' => $manageResourcePageClass, - ]); - } else { - $this->copyStubToApp('ResourceListPage', $listResourcePagePath, [ - 'baseResourcePage' => 'Filament\\Resources\\Pages\\ListRecords' . ($needsAlias ? ' as BaseListRecords' : ''), - 'baseResourcePageClass' => $needsAlias ? 'BaseListRecords' : 'ListRecords', - 'namespace' => "{$namespace}\\{$resourceClass}\\Pages", - 'resource' => "{$namespace}\\{$resourceClass}", - 'resourceClass' => $resourceClass, - 'resourcePageClass' => $listResourcePageClass, - ]); - - $this->copyStubToApp('ResourcePage', $createResourcePagePath, [ - 'baseResourcePage' => 'Filament\\Resources\\Pages\\CreateRecord' . ($needsAlias ? ' as BaseCreateRecord' : ''), - 'baseResourcePageClass' => $needsAlias ? 'BaseCreateRecord' : 'CreateRecord', - 'namespace' => "{$namespace}\\{$resourceClass}\\Pages", - 'resource' => "{$namespace}\\{$resourceClass}", - 'resourceClass' => $resourceClass, - 'resourcePageClass' => $createResourcePageClass, - ]); - - $editPageActions = []; - - if ($this->option('view')) { - $this->copyStubToApp('ResourceViewPage', $viewResourcePagePath, [ - 'baseResourcePage' => 'Filament\\Resources\\Pages\\ViewRecord' . ($needsAlias ? ' as BaseViewRecord' : ''), - 'baseResourcePageClass' => $needsAlias ? 'BaseViewRecord' : 'ViewRecord', - 'namespace' => "{$namespace}\\{$resourceClass}\\Pages", - 'resource' => "{$namespace}\\{$resourceClass}", - 'resourceClass' => $resourceClass, - 'resourcePageClass' => $viewResourcePageClass, - ]); - - $editPageActions[] = 'Actions\ViewAction::make(),'; - } - - $editPageActions[] = 'Actions\DeleteAction::make(),'; - - if ($this->option('soft-deletes')) { - $editPageActions[] = 'Actions\ForceDeleteAction::make(),'; - $editPageActions[] = 'Actions\RestoreAction::make(),'; - } - - $editPageActions = implode(PHP_EOL, $editPageActions); - - $this->copyStubToApp('ResourceEditPage', $editResourcePagePath, [ - 'baseResourcePage' => 'Filament\\Resources\\Pages\\EditRecord' . ($needsAlias ? ' as BaseEditRecord' : ''), - 'baseResourcePageClass' => $needsAlias ? 'BaseEditRecord' : 'EditRecord', - 'actions' => $this->indentString($editPageActions, 3), - 'namespace' => "{$namespace}\\{$resourceClass}\\Pages", - 'resource' => "{$namespace}\\{$resourceClass}", - 'resourceClass' => $resourceClass, - 'resourcePageClass' => $editResourcePageClass, - ]); - } - - $this->components->info("Filament resource [{$resourcePath}] created successfully."); - - return static::SUCCESS; - } -} diff --git a/vendor/filament/filament/src/Commands/MakeThemeCommand.php b/vendor/filament/filament/src/Commands/MakeThemeCommand.php deleted file mode 100644 index 7d72a342..00000000 --- a/vendor/filament/filament/src/Commands/MakeThemeCommand.php +++ /dev/null @@ -1,123 +0,0 @@ -option('pm') ?? 'npm'; - - exec("{$pm} -v", $pmVersion, $pmVersionExistCode); - - if ($pmVersionExistCode !== 0) { - $this->error('Node.js is not installed. Please install before continuing.'); - - return static::FAILURE; - } - - $this->info("Using {$pm} v{$pmVersion[0]}"); - - $installCommand = match ($pm) { - 'yarn' => 'yarn add', - default => "{$pm} install", - }; - - exec("{$installCommand} tailwindcss @tailwindcss/forms @tailwindcss/typography postcss postcss-nesting autoprefixer --save-dev"); - - $panel = $this->argument('panel'); - - if ($panel) { - $panel = Filament::getPanel($panel); - } - - if (! $panel) { - $panels = Filament::getPanels(); - - /** @var Panel $panel */ - $panel = (count($panels) > 1) ? $panels[select( - label: 'Which panel would you like to create this for?', - options: array_map( - fn (Panel $panel): string => $panel->getId(), - $panels, - ), - default: Filament::getDefaultPanel()->getId(), - )] : Arr::first($panels); - } - - $panelId = $panel->getId(); - - $cssFilePath = resource_path("css/filament/{$panelId}/theme.css"); - $tailwindConfigFilePath = resource_path("css/filament/{$panelId}/tailwind.config.js"); - - if (! $this->option('force') && $this->checkForCollision([ - $cssFilePath, - $tailwindConfigFilePath, - ])) { - return static::INVALID; - } - - $classPathPrefix = (string) str(Arr::first($panel->getPageDirectories())) - ->afterLast('Filament/') - ->beforeLast('Pages'); - - $viewPathPrefix = str($classPathPrefix) - ->explode('/') - ->map(fn ($segment) => Str::lower(Str::kebab($segment))) - ->implode('/'); - - $this->copyStubToApp('ThemeCss', $cssFilePath, [ - 'panel' => $panelId, - ]); - $this->copyStubToApp('ThemeTailwindConfig', $tailwindConfigFilePath, [ - 'classPathPrefix' => $classPathPrefix, - 'viewPathPrefix' => $viewPathPrefix, - ]); - - $this->components->info("Filament theme [resources/css/filament/{$panelId}/theme.css] and [resources/css/filament/{$panelId}/tailwind.config.js] created successfully."); - - if (! file_exists(base_path('vite.config.js'))) { - $this->components->warn('Action is required to complete the theme setup:'); - $this->components->bulletList([ - "It looks like you don't have Vite installed. Please use your asset bundling system of choice to compile `resources/css/filament/{$panelId}/theme.css` into `public/css/filament/{$panelId}/theme.css`.", - "If you're not currently using a bundler, we recommend using Vite. Alternatively, you can use the Tailwind CLI with the following command:", - "npx tailwindcss --input ./resources/css/filament/{$panelId}/theme.css --output ./public/css/filament/{$panelId}/theme.css --config ./resources/css/filament/{$panelId}/tailwind.config.js --minify", - "Make sure to register the theme in the {$panelId} panel provider using `->theme(asset('css/filament/{$panelId}/theme.css'))`", - ]); - - return static::SUCCESS; - } - - $postcssConfigPath = base_path('postcss.config.js'); - - if (! file_exists($postcssConfigPath)) { - $this->copyStubToApp('ThemePostcssConfig', $postcssConfigPath); - - $this->components->info('Filament theme [postcss.config.js] created successfully.'); - } - - $this->components->warn('Action is required to complete the theme setup:'); - $this->components->bulletList([ - "First, add a new item to the `input` array of `vite.config.js`: `resources/css/filament/{$panelId}/theme.css`.", - "Next, register the theme in the {$panelId} panel provider using `->viteTheme('resources/css/filament/{$panelId}/theme.css')`", - "Finally, run `{$pm} run build` to compile the theme.", - ]); - - return static::SUCCESS; - } -} diff --git a/vendor/filament/filament/src/Commands/MakeUserCommand.php b/vendor/filament/filament/src/Commands/MakeUserCommand.php deleted file mode 100644 index ba601c41..00000000 --- a/vendor/filament/filament/src/Commands/MakeUserCommand.php +++ /dev/null @@ -1,103 +0,0 @@ - $this->options['name'] ?? text( - label: 'Name', - required: true, - ), - - 'email' => $this->options['email'] ?? text( - label: 'Email address', - required: true, - validate: fn (string $email): ?string => match (true) { - ! filter_var($email, FILTER_VALIDATE_EMAIL) => 'The email address must be valid.', - static::getUserModel()::where('email', $email)->exists() => 'A user with this email address already exists', - default => null, - }, - ), - - 'password' => Hash::make($this->options['password'] ?? password( - label: 'Password', - required: true, - )), - ]; - } - - protected function createUser(): Authenticatable - { - return static::getUserModel()::create($this->getUserData()); - } - - protected function sendSuccessMessage(Authenticatable $user): void - { - $loginUrl = Filament::getLoginUrl(); - - $this->components->info('Success! ' . ($user->getAttribute('email') ?? $user->getAttribute('username') ?? 'You') . " may now log in at {$loginUrl}"); - } - - protected function getAuthGuard(): Guard - { - return Filament::auth(); - } - - protected function getUserProvider(): UserProvider - { - return $this->getAuthGuard()->getProvider(); - } - - protected function getUserModel(): string - { - /** @var EloquentUserProvider $provider */ - $provider = $this->getUserProvider(); - - return $provider->getModel(); - } - - public function handle(): int - { - $this->options = $this->options(); - - if (! Filament::getCurrentPanel()) { - $this->error('Filament has not been installed yet: php artisan filament:install --panels'); - - return static::INVALID; - } - - $user = $this->createUser(); - $this->sendSuccessMessage($user); - - return static::SUCCESS; - } -} diff --git a/vendor/filament/filament/src/Contracts/Plugin.php b/vendor/filament/filament/src/Contracts/Plugin.php deleted file mode 100644 index e67ed3f9..00000000 --- a/vendor/filament/filament/src/Contracts/Plugin.php +++ /dev/null @@ -1,14 +0,0 @@ -user; - } -} diff --git a/vendor/filament/filament/src/Events/ServingFilament.php b/vendor/filament/filament/src/Events/ServingFilament.php deleted file mode 100644 index e3b24285..00000000 --- a/vendor/filament/filament/src/Events/ServingFilament.php +++ /dev/null @@ -1,10 +0,0 @@ -tenant; - } - - public function getUser(): Model | Authenticatable | HasTenants - { - return $this->user; - } -} diff --git a/vendor/filament/filament/src/Exceptions/NoDefaultPanelSetException.php b/vendor/filament/filament/src/Exceptions/NoDefaultPanelSetException.php deleted file mode 100644 index 70fc9af8..00000000 --- a/vendor/filament/filament/src/Exceptions/NoDefaultPanelSetException.php +++ /dev/null @@ -1,19 +0,0 @@ - buildNavigation() - * @method static string getAuthGuard() - * @method static string | null getAuthPasswordBroker() - * @method static string | Htmlable getBrandName() - * @method static string | Htmlable | null getBrandLogo() - * @method static string | null getBrandLogoHeight() - * @method static array getClusteredComponents(?string $cluster = null) - * @method static string getCollapsedSidebarWidth() - * @method static Panel | null getCurrentPanel() - * @method static string | Htmlable | null getDarkModeBrandLogo() - * @method static string | null getDatabaseNotificationsPollingInterval() - * @method static string getDefaultAvatarProvider() - * @method static Panel getDefaultPanel() - * @method static string | null getEmailVerificationPromptUrl(array $parameters = []) - * @method static string getEmailVerifiedMiddleware() - * @method static string | null getFavicon() - * @method static string getFontFamily() - * @method static Htmlable getFontHtml() - * @method static string getFontProvider() - * @method static string | null getFontUrl() - * @method static array getGlobalSearchKeyBindings() - * @method static GlobalSearchProvider | null getGlobalSearchProvider() - * @method static string | null getHomeUrl() - * @method static string | null getLoginUrl(array $parameters = []) - * @method static string getLogoutUrl(array $parameters = []) - * @method static MaxWidth | string | null getMaxContentWidth() - * @method static string | null getModelResource(string | Model $model) - * @method static string getNameForDefaultAvatar(Model | Authenticatable $user) - * @method static array getNavigation() - * @method static array getNavigationGroups() - * @method static array getNavigationItems() - * @method static array getPages() - * @method static Panel getPanel(?string $id = null) - * @method static array getPanels() - * @method static Plugin getPlugin(string $id) - * @method static string | null getProfileUrl(array $parameters = []) - * @method static string | null getRegistrationUrl(array $parameters = []) - * @method static string | null getRequestPasswordResetUrl(array $parameters = []) - * @method static string getResetPasswordUrl(string $token, CanResetPassword | Model | Authenticatable $user, array $parameters = []) - * @method static array getResources() - * @method static string getSidebarWidth() - * @method static Model | null getTenant() - * @method static string | null getTenantAvatarUrl(Model $tenant) - * @method static BillingProvider | null getTenantBillingProvider() - * @method static string | null getTenantBillingUrl(array $parameters = [], Model | null $tenant = null) - * @method static array getTenantMenuItems() - * @method static string | null getTenantModel() - * @method static string getTenantName(Model $tenant) - * @method static string getTenantOwnershipRelationshipName() - * @method static string | null getTenantProfilePage() - * @method static string | null getTenantRegistrationPage() - * @method static string | null getTenantProfileUrl(array $parameters = []) - * @method static string | null getTenantRegistrationUrl(array $parameters = []) - * @method static Theme getTheme() - * @method static ThemeMode getDefaultThemeMode() - * @method static string | null getUserAvatarUrl(Model | Authenticatable $user) - * @method static Model | null getUserDefaultTenant(HasTenants | Model | Authenticatable $user) - * @method static array getUserMenuItems() - * @method static string getUserName(Model | Authenticatable $user) - * @method static array getUserTenants(HasTenants | Model | Authenticatable $user) - * @method static string | null getUrl(Model | null $tenant = null) - * @method static string getVerifyEmailUrl(MustVerifyEmail | Model | Authenticatable $user, array $parameters = []) - * @method static array getWidgets() - * @method static bool hasBreadcrumbs() - * @method static bool hasCollapsibleNavigationGroups() - * @method static bool hasDarkMode() - * @method static bool hasDarkModeForced() - * @method static bool hasDatabaseNotifications() - * @method static bool hasEmailVerification() - * @method static bool hasLogin() - * @method static bool hasNavigation() - * @method static bool hasPasswordReset() - * @method static bool hasPlugin(string $id) - * @method static bool hasProfile() - * @method static bool hasRegistration() - * @method static bool hasTenancy() - * @method static bool hasTenantBilling() - * @method static bool hasTenantMenu() - * @method static bool hasTenantProfile() - * @method static bool hasTenantRegistration() - * @method static bool hasTopNavigation() - * @method static bool hasUnsavedChangesAlerts() - * @method static bool isServing() - * @method static bool isSidebarCollapsibleOnDesktop() - * @method static bool isSidebarFullyCollapsibleOnDesktop() - * @method static void mountNavigation() - * @method static void serving(Closure $callback) - * @method static void setCurrentPanel(Panel | null $panel = null) - * @method static void setServingStatus(bool $condition = true) - * @method static void setTenant(Model | null $tenant = null, bool $isQuiet = false) - * - * @see FilamentManager - */ -class Filament extends Facade -{ - protected static function getFacadeAccessor(): string - { - return 'filament'; - } - - public static function registerPanel(Panel | Closure $panel): void - { - static::getFacadeApplication()->resolving( - static::getFacadeAccessor(), - fn (FilamentManager $filamentManager) => $filamentManager->registerPanel(value($panel)), - ); - } -} diff --git a/vendor/filament/filament/src/FilamentManager.php b/vendor/filament/filament/src/FilamentManager.php deleted file mode 100644 index c84873bd..00000000 --- a/vendor/filament/filament/src/FilamentManager.php +++ /dev/null @@ -1,853 +0,0 @@ - - */ - protected array $panels = []; - - protected ?Panel $currentPanel = null; - - protected bool $isServing = false; - - protected bool $isCurrentPanelBooted = false; - - protected ?Model $tenant = null; - - public function auth(): Guard - { - return $this->getCurrentPanel()->auth(); - } - - public function bootCurrentPanel(): void - { - if ($this->isCurrentPanelBooted) { - return; - } - - $this->getCurrentPanel()->boot(); - - $this->isCurrentPanelBooted = true; - } - - /** - * @return array - */ - public function buildNavigation(): array - { - return $this->getCurrentPanel()->buildNavigation(); - } - - public function getAuthGuard(): string - { - return $this->getCurrentPanel()->getAuthGuard(); - } - - public function getAuthPasswordBroker(): ?string - { - return $this->getCurrentPanel()->getAuthPasswordBroker(); - } - - public function getBrandName(): string | Htmlable - { - return $this->getCurrentPanel()->getBrandName(); - } - - public function getBrandLogo(): string | Htmlable | null - { - return $this->getCurrentPanel()->getBrandLogo(); - } - - public function getBrandLogoHeight(): ?string - { - return $this->getCurrentPanel()->getBrandLogoHeight(); - } - - public function getCollapsedSidebarWidth(): string - { - return $this->getCurrentPanel()->getCollapsedSidebarWidth(); - } - - public function getCurrentPanel(): ?Panel - { - return $this->currentPanel ?? null; - } - - public function getDarkModeBrandLogo(): string | Htmlable | null - { - return $this->getCurrentPanel()->getDarkModeBrandLogo(); - } - - public function getDatabaseNotificationsPollingInterval(): ?string - { - return $this->getCurrentPanel()->getDatabaseNotificationsPollingInterval(); - } - - public function getDefaultAvatarProvider(): string - { - return $this->getCurrentPanel()->getDefaultAvatarProvider(); - } - - /** - * @throws NoDefaultPanelSetException - */ - public function getDefaultPanel(): Panel - { - return Arr::first( - $this->panels, - fn (Panel $panel): bool => $panel->isDefault(), - fn () => throw NoDefaultPanelSetException::make(), - ); - } - - /** - * @param array $parameters - */ - public function getEmailVerificationPromptUrl(array $parameters = []): ?string - { - return $this->getCurrentPanel()->getEmailVerificationPromptUrl($parameters); - } - - public function getEmailVerifiedMiddleware(): string - { - return $this->getCurrentPanel()->getEmailVerifiedMiddleware(); - } - - public function getFavicon(): ?string - { - return $this->getCurrentPanel()->getFavicon(); - } - - public function getFontFamily(): string - { - return $this->getCurrentPanel()->getFontFamily(); - } - - public function getFontHtml(): Htmlable - { - return $this->getCurrentPanel()->getFontHtml(); - } - - public function getFontProvider(): string - { - return $this->getCurrentPanel()->getFontProvider(); - } - - public function getFontUrl(): ?string - { - return $this->getCurrentPanel()->getFontUrl(); - } - - /** - * @return array - */ - public function getGlobalSearchKeyBindings(): array - { - return $this->getCurrentPanel()->getGlobalSearchKeyBindings(); - } - - public function getGlobalSearchProvider(): ?GlobalSearchProvider - { - return $this->getCurrentPanel()->getGlobalSearchProvider(); - } - - public function getHomeUrl(): ?string - { - return $this->getCurrentPanel()->getHomeUrl() ?? $this->getCurrentPanel()->getUrl(); - } - - public function getId(): ?string - { - return $this->getCurrentPanel()?->getId(); - } - - /** - * @param array $parameters - */ - public function getLoginUrl(array $parameters = []): ?string - { - return $this->getCurrentPanel()->getLoginUrl($parameters); - } - - /** - * @param array $parameters - */ - public function getLogoutUrl(array $parameters = []): string - { - return $this->getCurrentPanel()->getLogoutUrl($parameters); - } - - public function getMaxContentWidth(): MaxWidth | string | null - { - return $this->getCurrentPanel()->getMaxContentWidth(); - } - - public function getModelResource(string | Model $model): ?string - { - return $this->getCurrentPanel()->getModelResource($model); - } - - public function getNameForDefaultAvatar(Model | Authenticatable $record): string - { - if ($this->getTenantModel() === $record::class) { - return $this->getTenantName($record); - } - - return $this->getUserName($record); - } - - /** - * @return array - */ - public function getNavigation(): array - { - return $this->getCurrentPanel()->getNavigation(); - } - - /** - * @return array - */ - public function getNavigationGroups(): array - { - return $this->getCurrentPanel()->getNavigationGroups(); - } - - /** - * @return array - */ - public function getNavigationItems(): array - { - return $this->getCurrentPanel()->getNavigationItems(); - } - - /** - * @return array | class-string> - */ - public function getClusteredComponents(?string $cluster): array - { - return $this->getCurrentPanel()->getClusteredComponents($cluster); - } - - /** - * @return array - */ - public function getPages(): array - { - return $this->getCurrentPanel()->getPages(); - } - - public function getPanel(?string $id = null): Panel - { - return $this->panels[$id] ?? $this->getDefaultPanel(); - } - - /** - * @return array - */ - public function getPanels(): array - { - return $this->panels; - } - - public function getPlugin(string $id): Plugin - { - return $this->getCurrentPanel()->getPlugin($id); - } - - /** - * @param array $parameters - */ - public function getProfileUrl(array $parameters = []): ?string - { - return $this->getCurrentPanel()->getProfileUrl($parameters); - } - - /** - * @param array $parameters - */ - public function getRegistrationUrl(array $parameters = []): ?string - { - return $this->getCurrentPanel()->getRegistrationUrl($parameters); - } - - /** - * @param array $parameters - */ - public function getRequestPasswordResetUrl(array $parameters = []): ?string - { - return $this->getCurrentPanel()->getRequestPasswordResetUrl($parameters); - } - - /** - * @param array $parameters - */ - public function getResetPasswordUrl(string $token, CanResetPassword | Model | Authenticatable $user, array $parameters = []): string - { - return $this->getCurrentPanel()->getResetPasswordUrl($token, $user, $parameters); - } - - /** - * @return array - */ - public function getResources(): array - { - return $this->getCurrentPanel()->getResources(); - } - - public function getSidebarWidth(): string - { - return $this->getCurrentPanel()->getSidebarWidth(); - } - - public function getTenant(): ?Model - { - return $this->tenant; - } - - public function getTenantAvatarUrl(Model $tenant): string - { - $avatar = null; - - if ($tenant instanceof HasAvatar) { - $avatar = $tenant->getFilamentAvatarUrl(); - } - - if ($avatar) { - return $avatar; - } - - return app($this->getDefaultAvatarProvider())->get($tenant); - } - - public function getTenantBillingProvider(): ?Billing\Providers\Contracts\Provider - { - return $this->getCurrentPanel()->getTenantBillingProvider(); - } - - /** - * @param array $parameters - */ - public function getTenantBillingUrl(array $parameters = [], ?Model $tenant = null): ?string - { - return $this->getCurrentPanel()->getTenantBillingUrl($tenant ?? $this->getTenant(), $parameters); - } - - /** - * @return array - */ - public function getTenantMenuItems(): array - { - return $this->getCurrentPanel()->getTenantMenuItems(); - } - - public function getTenantModel(): ?string - { - return $this->getCurrentPanel()->getTenantModel(); - } - - public function getTenantName(Model $tenant): string - { - if ($tenant instanceof HasName) { - return $tenant->getFilamentName(); - } - - return $tenant->getAttributeValue('name'); - } - - public function getTenantOwnershipRelationshipName(): string - { - return $this->getCurrentPanel()->getTenantOwnershipRelationshipName(); - } - - public function getProfilePage(): ?string - { - return $this->getCurrentPanel()->getProfilePage(); - } - - public function getTenantProfilePage(): ?string - { - return $this->getCurrentPanel()->getTenantProfilePage(); - } - - /** - * @param array $parameters - */ - public function getTenantProfileUrl(array $parameters = []): ?string - { - $parameters['tenant'] ??= $this->getTenant(); - - return $this->getCurrentPanel()->getTenantProfileUrl($parameters); - } - - public function getTenantRegistrationPage(): ?string - { - return $this->getCurrentPanel()->getTenantRegistrationPage(); - } - - /** - * @param array $parameters - */ - public function getTenantRegistrationUrl(array $parameters = []): ?string - { - return $this->getCurrentPanel()->getTenantRegistrationUrl($parameters); - } - - public function getTheme(): Theme - { - return $this->getCurrentPanel()->getTheme(); - } - - public function getUserAvatarUrl(Model | Authenticatable $user): string - { - $avatar = null; - - if ($user instanceof HasAvatar) { - $avatar = $user->getFilamentAvatarUrl(); - } else { - $avatar = $user->getAttributeValue('avatar_url'); - } - - if ($avatar) { - return $avatar; - } - - return app($this->getDefaultAvatarProvider())->get($user); - } - - public function getUserDefaultTenant(HasTenants | Model | Authenticatable $user): ?Model - { - $tenant = null; - $panel = $this->getCurrentPanel(); - - if ($user instanceof HasDefaultTenant) { - $tenant = $user->getDefaultTenant($panel); - } - - if (! $tenant) { - $tenant = Arr::first($this->getUserTenants($user)); - } - - return $tenant; - } - - /** - * @return array - */ - public function getUserMenuItems(): array - { - return $this->getCurrentPanel()->getUserMenuItems(); - } - - public function getUserName(Model | Authenticatable $user): string - { - if ($user instanceof HasName) { - return $user->getFilamentName(); - } - - return $user->getAttributeValue('name'); - } - - /** - * @return array - */ - public function getUserTenants(HasTenants | Model | Authenticatable $user): array - { - $tenants = $user->getTenants($this->getCurrentPanel()); - - if ($tenants instanceof Collection) { - $tenants = $tenants->all(); - } - - return $tenants; - } - - public function getUrl(?Model $tenant = null): ?string - { - return $this->getCurrentPanel()->getUrl($tenant); - } - - /** - * @param array $parameters - */ - public function getVerifyEmailUrl(MustVerifyEmail | Model | Authenticatable $user, array $parameters = []): string - { - return $this->getCurrentPanel()->getVerifyEmailUrl($user, $parameters); - } - - /** - * @return array> - */ - public function getWidgets(): array - { - return $this->getCurrentPanel()->getWidgets(); - } - - public function hasBreadcrumbs(): bool - { - return $this->getCurrentPanel()->hasBreadcrumbs(); - } - - public function hasCollapsibleNavigationGroups(): bool - { - return $this->getCurrentPanel()->hasCollapsibleNavigationGroups(); - } - - public function hasDarkMode(): bool - { - return $this->getCurrentPanel()->hasDarkMode(); - } - - public function hasDarkModeForced(): bool - { - return $this->getCurrentPanel()->hasDarkModeForced(); - } - - public function hasDatabaseNotifications(): bool - { - return $this->getCurrentPanel()->hasDatabaseNotifications(); - } - - public function hasEmailVerification(): bool - { - return $this->getCurrentPanel()->hasEmailVerification(); - } - - public function hasLogin(): bool - { - return $this->getCurrentPanel()->hasLogin(); - } - - public function hasNavigation(): bool - { - return $this->getCurrentPanel()->hasNavigation(); - } - - public function hasPasswordReset(): bool - { - return $this->getCurrentPanel()->hasPasswordReset(); - } - - public function hasPlugin(string $id): bool - { - return $this->getCurrentPanel()->hasPlugin($id); - } - - public function hasProfile(): bool - { - return $this->getCurrentPanel()->hasProfile(); - } - - public function hasRegistration(): bool - { - return $this->getCurrentPanel()->hasRegistration(); - } - - public function hasTenantMenu(): bool - { - return $this->getCurrentPanel()->hasTenantMenu(); - } - - public function hasTenancy(): bool - { - return $this->getCurrentPanel()->hasTenancy(); - } - - public function hasTenantBilling(): bool - { - return $this->getCurrentPanel()->hasTenantBilling(); - } - - public function hasTenantProfile(): bool - { - return $this->getCurrentPanel()->hasTenantProfile(); - } - - public function hasTenantRegistration(): bool - { - return $this->getCurrentPanel()->hasTenantRegistration(); - } - - public function hasTopbar(): bool - { - return $this->getCurrentPanel()->hasTopbar(); - } - - public function hasTopNavigation(): bool - { - return $this->getCurrentPanel()->hasTopNavigation(); - } - - public function hasUnsavedChangesAlerts(): bool - { - return $this->getCurrentPanel()->hasUnsavedChangesAlerts(); - } - - public function isGlobalSearchEnabled(): bool - { - if ($this->getGlobalSearchProvider() === null) { - return false; - } - - foreach ($this->getResources() as $resource) { - if ($resource::canGloballySearch()) { - return true; - } - } - - return false; - } - - public function isServing(): bool - { - return $this->isServing; - } - - public function isSidebarCollapsibleOnDesktop(): bool - { - return $this->getCurrentPanel()->isSidebarCollapsibleOnDesktop(); - } - - public function isSidebarFullyCollapsibleOnDesktop(): bool - { - return $this->getCurrentPanel()->isSidebarFullyCollapsibleOnDesktop(); - } - - public function mountNavigation(): void - { - $this->getCurrentPanel()->mountNavigation(); - } - - public function registerPanel(Panel $panel): void - { - $this->panels[$panel->getId()] = $panel; - - $panel->register(); - - if ($panel->isDefault()) { - $this->setCurrentPanel($panel); - } - } - - /** - * @deprecated Use the `\Filament\Support\Facades\FilamentView::renderHook()` method instead. - */ - public function renderHook(string $name): Htmlable - { - return FilamentView::renderHook($name); - } - - public function serving(Closure $callback): void - { - Event::listen(ServingFilament::class, $callback); - } - - public function setCurrentPanel(?Panel $panel): void - { - $this->currentPanel = $panel; - } - - public function setServingStatus(bool $condition = true): void - { - $this->isServing = $condition; - } - - public function setTenant(?Model $tenant, bool $isQuiet = false): void - { - $this->tenant = $tenant; - - if ($tenant && (! $isQuiet)) { - event(new TenantSet($tenant, $this->auth()->user())); - } - } - - /** - * @deprecated Use the `navigationGroups()` method on the panel configuration instead. - * - * @param array $groups - */ - public function registerNavigationGroups(array $groups): void - { - try { - $this->getDefaultPanel()->navigationGroups($groups); - } catch (NoDefaultPanelSetException $exception) { - throw new Exception('Please use the `navigationGroups()` method on the panel configuration to register navigation groups. See the documentation - https://filamentphp.com/docs/panels/navigation#customizing-navigation-groups'); - } - } - - /** - * @deprecated Use the `navigationItems()` method on the panel configuration instead. - * - * @param array $items - */ - public function registerNavigationItems(array $items): void - { - try { - $this->getDefaultPanel()->navigationItems($items); - } catch (NoDefaultPanelSetException $exception) { - throw new Exception('Please use the `navigationItems()` method on the panel configuration to register navigation items. See the documentation - https://filamentphp.com/docs/panels/navigation#registering-custom-navigation-items'); - } - } - - /** - * @deprecated Use the `pages()` method on the panel configuration instead. - * - * @param array $pages - */ - public function registerPages(array $pages): void - { - try { - $this->getDefaultPanel()->pages($pages); - } catch (NoDefaultPanelSetException $exception) { - throw new Exception('Please use the `pages()` method on the panel configuration to register pages.'); - } - } - - /** - * @deprecated Use the `renderHook()` method on the panel configuration instead. - */ - public function registerRenderHook(string $name, Closure $hook): void - { - FilamentView::registerRenderHook($name, $hook); - } - - /** - * @deprecated Use the `resources()` method on the panel configuration instead. - * - * @param array $resources - */ - public function registerResources(array $resources): void - { - try { - $this->getDefaultPanel()->resources($resources); - } catch (NoDefaultPanelSetException $exception) { - throw new Exception('Please use the `resources()` method on the panel configuration to register resources.'); - } - } - - /** - * @deprecated Register scripts using the `FilamentAsset` facade instead. - * - * @param array $scripts - */ - public function registerScripts(array $scripts, bool $shouldBeLoadedBeforeCoreScripts = false): void - { - throw new Exception('Please use the `FilamentAsset` facade to register scripts. See the documentation - https://filamentphp.com/docs/support/assets#registering-javascript-files'); - } - - /** - * @deprecated Register script data using the `FilamentAsset` facade instead. - * - * @param array $data - */ - public function registerScriptData(array $data): void - { - FilamentAsset::registerScriptData($data); - } - - /** - * @deprecated Register styles using the `FilamentAsset` facade instead. - * - * @param array $styles - */ - public function registerStyles(array $styles): void - { - throw new Exception('Please use the `FilamentAsset` facade to register styles. See the documentation - https://filamentphp.com/docs/support/assets#registering-css-files'); - } - - /** - * @deprecated Use the `theme()` method on the panel configuration instead. - */ - public function registerTheme(string | Htmlable | null $theme): void - { - try { - $this->getDefaultPanel()->theme($theme); - } catch (NoDefaultPanelSetException $exception) { - throw new Exception('Please use the `theme()` method on the panel configuration to register themes.'); - } - } - - /** - * @deprecated Use the `viteTheme()` method on the panel configuration instead. - * - * @param string | array $theme - */ - public function registerViteTheme(string | array $theme, ?string $buildDirectory = null): void - { - try { - $this->getDefaultPanel()->viteTheme($theme, $buildDirectory); - } catch (NoDefaultPanelSetException $exception) { - throw new Exception('Please use the `viteTheme()` method on the panel configuration to register themes.'); - } - } - - /** - * @deprecated Use the `userMenuItems()` method on the panel configuration instead. - * - * @param array $items - */ - public function registerUserMenuItems(array $items): void - { - try { - $this->getDefaultPanel()->userMenuItems($items); - } catch (NoDefaultPanelSetException $exception) { - throw new Exception('Please use the `userMenuItems()` method on the panel configuration to register user menu items. See the documentation - https://filamentphp.com/docs/panels/navigation#customizing-the-user-menu'); - } - } - - /** - * @deprecated Use the `widgets()` method on the panel configuration instead. - * - * @param array $widgets - */ - public function registerWidgets(array $widgets): void - { - try { - $this->getDefaultPanel()->widgets($widgets); - } catch (NoDefaultPanelSetException $exception) { - throw new Exception('Please use the `widgets()` method on the panel configuration to register widgets.'); - } - } - - public function getDefaultThemeMode(): ThemeMode - { - return $this->getCurrentPanel()->getDefaultThemeMode(); - } - - public function arePasswordsRevealable(): bool - { - return $this->getCurrentPanel()->arePasswordsRevealable(); - } -} diff --git a/vendor/filament/filament/src/FilamentServiceProvider.php b/vendor/filament/filament/src/FilamentServiceProvider.php deleted file mode 100644 index 2b715700..00000000 --- a/vendor/filament/filament/src/FilamentServiceProvider.php +++ /dev/null @@ -1,125 +0,0 @@ -name('filament-panels') - ->hasCommands($this->getCommands()) - ->hasRoutes('web') - ->hasTranslations() - ->hasViews(); - } - - public function packageRegistered(): void - { - $this->app->scoped('filament', function (): FilamentManager { - return new FilamentManager(); - }); - - $this->app->bind(EmailVerificationResponseContract::class, EmailVerificationResponse::class); - $this->app->bind(LoginResponseContract::class, LoginResponse::class); - $this->app->bind(LogoutResponseContract::class, LogoutResponse::class); - $this->app->bind(PasswordResetResponseContract::class, PasswordResetResponse::class); - $this->app->bind(RegistrationResponseContract::class, RegistrationResponse::class); - - app(Router::class)->aliasMiddleware('panel', SetUpPanel::class); - } - - public function packageBooted(): void - { - Blade::components([ - LegacyComponents\Page::class => 'filament::page', - LegacyComponents\Widget::class => 'filament::widget', - ]); - - FilamentAsset::register([ - Js::make('app', __DIR__ . '/../dist/index.js')->core(), - Js::make('echo', __DIR__ . '/../dist/echo.js')->core(), - Theme::make('app', __DIR__ . '/../dist/theme.css'), - ], 'filament/filament'); - - Livewire::addPersistentMiddleware([ - Authenticate::class, - DisableBladeIconComponents::class, - DispatchServingFilamentEvent::class, - IdentifyTenant::class, - SetUpPanel::class, - ]); - - Filament::serving(function () { - Filament::setServingStatus(); - }); - - if ($this->app->runningInConsole()) { - foreach (app(Filesystem::class)->files(__DIR__ . '/../stubs/') as $file) { - $this->publishes([ - $file->getRealPath() => base_path("stubs/filament/{$file->getFilename()}"), - ], 'filament-stubs'); - } - } - } - - /** - * @return array - */ - protected function getCommands(): array - { - $commands = [ - Commands\MakeClusterCommand::class, - Commands\MakePageCommand::class, - Commands\MakePanelCommand::class, - Commands\MakeRelationManagerCommand::class, - Commands\MakeResourceCommand::class, - Commands\MakeThemeCommand::class, - Commands\MakeUserCommand::class, - ]; - - $aliases = []; - - foreach ($commands as $command) { - $class = 'Filament\\Commands\\Aliases\\' . class_basename($command); - - if (! class_exists($class)) { - continue; - } - - $aliases[] = $class; - } - - return [ - ...$commands, - ...$aliases, - ]; - } -} diff --git a/vendor/filament/filament/src/FontProviders/BunnyFontProvider.php b/vendor/filament/filament/src/FontProviders/BunnyFontProvider.php deleted file mode 100644 index 805a9fc1..00000000 --- a/vendor/filament/filament/src/FontProviders/BunnyFontProvider.php +++ /dev/null @@ -1,20 +0,0 @@ -replace(' ', '-')->lower()->kebab(); - $url ??= "https://fonts.bunny.net/css?family={$family}:400,500,600,700&display=swap"; - - return new HtmlString(" - - - "); - } -} diff --git a/vendor/filament/filament/src/FontProviders/Contracts/FontProvider.php b/vendor/filament/filament/src/FontProviders/Contracts/FontProvider.php deleted file mode 100644 index a103a6d4..00000000 --- a/vendor/filament/filament/src/FontProviders/Contracts/FontProvider.php +++ /dev/null @@ -1,10 +0,0 @@ - - - - "); - } -} diff --git a/vendor/filament/filament/src/FontProviders/LocalFontProvider.php b/vendor/filament/filament/src/FontProviders/LocalFontProvider.php deleted file mode 100644 index e4027609..00000000 --- a/vendor/filament/filament/src/FontProviders/LocalFontProvider.php +++ /dev/null @@ -1,20 +0,0 @@ - - "); - } -} diff --git a/vendor/filament/filament/src/GlobalSearch/Actions/Action.php b/vendor/filament/filament/src/GlobalSearch/Actions/Action.php deleted file mode 100644 index eba7cdeb..00000000 --- a/vendor/filament/filament/src/GlobalSearch/Actions/Action.php +++ /dev/null @@ -1,18 +0,0 @@ -defaultView(static::LINK_VIEW); - - $this->defaultSize(ActionSize::Small); - } -} diff --git a/vendor/filament/filament/src/GlobalSearch/Contracts/GlobalSearchProvider.php b/vendor/filament/filament/src/GlobalSearch/Contracts/GlobalSearchProvider.php deleted file mode 100644 index 0719743c..00000000 --- a/vendor/filament/filament/src/GlobalSearch/Contracts/GlobalSearchProvider.php +++ /dev/null @@ -1,10 +0,0 @@ -count()) { - continue; - } - - $builder->category($resource::getPluralModelLabel(), $resourceResults); - } - - return $builder; - } -} diff --git a/vendor/filament/filament/src/GlobalSearch/GlobalSearchResult.php b/vendor/filament/filament/src/GlobalSearch/GlobalSearchResult.php deleted file mode 100644 index ef63f33c..00000000 --- a/vendor/filament/filament/src/GlobalSearch/GlobalSearchResult.php +++ /dev/null @@ -1,21 +0,0 @@ - $details - * @param array $actions - */ - public function __construct( - readonly public string | Htmlable $title, - readonly public string $url, - readonly public array $details = [], - readonly public array $actions = [], - ) { - } -} diff --git a/vendor/filament/filament/src/GlobalSearch/GlobalSearchResults.php b/vendor/filament/filament/src/GlobalSearch/GlobalSearchResults.php deleted file mode 100644 index e42482c6..00000000 --- a/vendor/filament/filament/src/GlobalSearch/GlobalSearchResults.php +++ /dev/null @@ -1,36 +0,0 @@ -categories = Collection::make(); - } - - public static function make(): static - { - return app(static::class); - } - - /** - * @param array | Arrayable $results - */ - public function category(string $name, array | Arrayable $results = []): static - { - $this->categories[$name] = $results; - - return $this; - } - - public function getCategories(): Collection - { - return $this->categories; - } -} diff --git a/vendor/filament/filament/src/Http/Controllers/Auth/EmailVerificationController.php b/vendor/filament/filament/src/Http/Controllers/Auth/EmailVerificationController.php deleted file mode 100644 index e2eec474..00000000 --- a/vendor/filament/filament/src/Http/Controllers/Auth/EmailVerificationController.php +++ /dev/null @@ -1,16 +0,0 @@ -fulfill(); - - return app(EmailVerificationResponse::class); - } -} diff --git a/vendor/filament/filament/src/Http/Controllers/Auth/LogoutController.php b/vendor/filament/filament/src/Http/Controllers/Auth/LogoutController.php deleted file mode 100644 index eb4afd42..00000000 --- a/vendor/filament/filament/src/Http/Controllers/Auth/LogoutController.php +++ /dev/null @@ -1,19 +0,0 @@ -logout(); - - session()->invalidate(); - session()->regenerateToken(); - - return app(LogoutResponse::class); - } -} diff --git a/vendor/filament/filament/src/Http/Controllers/RedirectToHomeController.php b/vendor/filament/filament/src/Http/Controllers/RedirectToHomeController.php deleted file mode 100644 index afda75d4..00000000 --- a/vendor/filament/filament/src/Http/Controllers/RedirectToHomeController.php +++ /dev/null @@ -1,22 +0,0 @@ -getUrl(Filament::getTenant()); - - if (blank($url)) { - abort(404); - } - - return redirect($url); - } -} diff --git a/vendor/filament/filament/src/Http/Controllers/RedirectToTenantController.php b/vendor/filament/filament/src/Http/Controllers/RedirectToTenantController.php deleted file mode 100644 index 96a0d2b5..00000000 --- a/vendor/filament/filament/src/Http/Controllers/RedirectToTenantController.php +++ /dev/null @@ -1,37 +0,0 @@ -user()); - - if (! $tenant) { - return $this->redirectToTenantRegistration($panel); - } - - $url = $panel->getUrl($tenant); - - if (blank($url)) { - abort(404); - } - - return redirect($url); - } - - protected function redirectToTenantRegistration(Panel $panel): RedirectResponse - { - if (! ($panel->hasTenantRegistration() && filament()->getTenantRegistrationPage()::canView())) { - abort(404); - } - - return redirect($panel->getTenantRegistrationUrl()); - } -} diff --git a/vendor/filament/filament/src/Http/Livewire/Auth/Login.php b/vendor/filament/filament/src/Http/Livewire/Auth/Login.php deleted file mode 100644 index 29c6c9b9..00000000 --- a/vendor/filament/filament/src/Http/Livewire/Auth/Login.php +++ /dev/null @@ -1,10 +0,0 @@ - $guards - */ - protected function authenticate($request, array $guards): void - { - $guard = Filament::auth(); - - if (! $guard->check()) { - $this->unauthenticated($request, $guards); - - return; - } - - $this->auth->shouldUse(Filament::getAuthGuard()); - - /** @var Model $user */ - $user = $guard->user(); - - $panel = Filament::getCurrentPanel(); - - abort_if( - $user instanceof FilamentUser ? - (! $user->canAccessPanel($panel)) : - (config('app.env') !== 'local'), - 403, - ); - } - - protected function redirectTo($request): ?string - { - return Filament::getLoginUrl(); - } -} diff --git a/vendor/filament/filament/src/Http/Middleware/DisableBladeIconComponents.php b/vendor/filament/filament/src/Http/Middleware/DisableBladeIconComponents.php deleted file mode 100644 index 2fa93f0a..00000000 --- a/vendor/filament/filament/src/Http/Middleware/DisableBladeIconComponents.php +++ /dev/null @@ -1,16 +0,0 @@ -set('blade-icons.components.disabled', true); - - return $next($request); - } -} diff --git a/vendor/filament/filament/src/Http/Middleware/DispatchServingFilamentEvent.php b/vendor/filament/filament/src/Http/Middleware/DispatchServingFilamentEvent.php deleted file mode 100644 index 4e5c3d0f..00000000 --- a/vendor/filament/filament/src/Http/Middleware/DispatchServingFilamentEvent.php +++ /dev/null @@ -1,17 +0,0 @@ -hasTenancy()) { - return $next($request); - } - - if (! $request->route()->hasParameter('tenant')) { - return $next($request); - } - - /** @var Model $user */ - $user = $panel->auth()->user(); - - if (! $user instanceof HasTenants) { - abort(404); - } - - $tenant = $panel->getTenant($request->route()->parameter('tenant')); - - if (! $user->canAccessTenant($tenant)) { - abort(404); - } - - Filament::setTenant($tenant); - - return $next($request); - } -} diff --git a/vendor/filament/filament/src/Http/Middleware/SetUpPanel.php b/vendor/filament/filament/src/Http/Middleware/SetUpPanel.php deleted file mode 100644 index 83af4031..00000000 --- a/vendor/filament/filament/src/Http/Middleware/SetUpPanel.php +++ /dev/null @@ -1,21 +0,0 @@ -intended(Filament::getUrl()); - } -} diff --git a/vendor/filament/filament/src/Http/Responses/Auth/LoginResponse.php b/vendor/filament/filament/src/Http/Responses/Auth/LoginResponse.php deleted file mode 100644 index 5fc3d8f6..00000000 --- a/vendor/filament/filament/src/Http/Responses/Auth/LoginResponse.php +++ /dev/null @@ -1,16 +0,0 @@ -intended(Filament::getUrl()); - } -} diff --git a/vendor/filament/filament/src/Http/Responses/Auth/LogoutResponse.php b/vendor/filament/filament/src/Http/Responses/Auth/LogoutResponse.php deleted file mode 100644 index 379199da..00000000 --- a/vendor/filament/filament/src/Http/Responses/Auth/LogoutResponse.php +++ /dev/null @@ -1,17 +0,0 @@ -to( - Filament::hasLogin() ? Filament::getLoginUrl() : Filament::getUrl(), - ); - } -} diff --git a/vendor/filament/filament/src/Http/Responses/Auth/PasswordResetResponse.php b/vendor/filament/filament/src/Http/Responses/Auth/PasswordResetResponse.php deleted file mode 100644 index cbb3e5ac..00000000 --- a/vendor/filament/filament/src/Http/Responses/Auth/PasswordResetResponse.php +++ /dev/null @@ -1,18 +0,0 @@ -to( - Filament::hasLogin() ? Filament::getLoginUrl() : Filament::getUrl(), - ); - } -} diff --git a/vendor/filament/filament/src/Http/Responses/Auth/RegistrationResponse.php b/vendor/filament/filament/src/Http/Responses/Auth/RegistrationResponse.php deleted file mode 100644 index 368da158..00000000 --- a/vendor/filament/filament/src/Http/Responses/Auth/RegistrationResponse.php +++ /dev/null @@ -1,16 +0,0 @@ -intended(Filament::getUrl()); - } -} diff --git a/vendor/filament/filament/src/Livewire/DatabaseNotifications.php b/vendor/filament/filament/src/Livewire/DatabaseNotifications.php deleted file mode 100644 index 8ce0e9d6..00000000 --- a/vendor/filament/filament/src/Livewire/DatabaseNotifications.php +++ /dev/null @@ -1,27 +0,0 @@ -user(); - } - - public function getPollingInterval(): ?string - { - return Filament::getDatabaseNotificationsPollingInterval(); - } - - public function getTrigger(): View - { - return view('filament-panels::components.topbar.database-notifications-trigger'); - } -} diff --git a/vendor/filament/filament/src/Livewire/GlobalSearch.php b/vendor/filament/filament/src/Livewire/GlobalSearch.php deleted file mode 100644 index 83b581ab..00000000 --- a/vendor/filament/filament/src/Livewire/GlobalSearch.php +++ /dev/null @@ -1,39 +0,0 @@ -search); - - if (blank($search)) { - return null; - } - - $results = Filament::getGlobalSearchProvider()->getResults($this->search); - - if ($results === null) { - return $results; - } - - $this->dispatch('open-global-search-results'); - - return $results; - } - - public function render(): View - { - return view('filament-panels::components.global-search.index', [ - 'results' => $this->getResults(), - ]); - } -} diff --git a/vendor/filament/filament/src/Livewire/Notifications.php b/vendor/filament/filament/src/Livewire/Notifications.php deleted file mode 100644 index 35dd82a7..00000000 --- a/vendor/filament/filament/src/Livewire/Notifications.php +++ /dev/null @@ -1,16 +0,0 @@ -user(); - } -} diff --git a/vendor/filament/filament/src/Models/Contracts/FilamentUser.php b/vendor/filament/filament/src/Models/Contracts/FilamentUser.php deleted file mode 100644 index 84a7c398..00000000 --- a/vendor/filament/filament/src/Models/Contracts/FilamentUser.php +++ /dev/null @@ -1,10 +0,0 @@ - | Collection - */ - public function getTenants(Panel $panel): array | Collection; -} diff --git a/vendor/filament/filament/src/Navigation/MenuItem.php b/vendor/filament/filament/src/Navigation/MenuItem.php deleted file mode 100644 index bb16def4..00000000 --- a/vendor/filament/filament/src/Navigation/MenuItem.php +++ /dev/null @@ -1,148 +0,0 @@ -configure(); - - return $static; - } - - /** - * @param string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null $color - */ - public function color(string | array | Closure | null $color): static - { - $this->color = $color; - - return $this; - } - - public function icon(string | Closure | null $icon): static - { - $this->icon = $icon; - - return $this; - } - - public function label(string | Closure | null $label): static - { - $this->label = $label; - - return $this; - } - - public function sort(int | Closure | null $sort): static - { - $this->sort = $sort; - - return $this; - } - - public function url(string | Closure | null $url, bool | Closure $shouldOpenInNewTab = false): static - { - $this->openUrlInNewTab($shouldOpenInNewTab); - $this->url = $url; - - return $this; - } - - public function openUrlInNewTab(bool | Closure $condition = true): static - { - $this->shouldOpenUrlInNewTab = $condition; - - return $this; - } - - public function hidden(bool | Closure $condition = true): static - { - $this->isHidden = $condition; - - return $this; - } - - public function visible(bool | Closure $condition = true): static - { - $this->isVisible = $condition; - - return $this; - } - - public function isVisible(): bool - { - return ! $this->isHidden(); - } - - public function isHidden(): bool - { - if ($this->evaluate($this->isHidden)) { - return true; - } - - return ! $this->evaluate($this->isVisible); - } - - /** - * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | null - */ - public function getColor(): string | array | null - { - return $this->evaluate($this->color); - } - - public function getIcon(): ?string - { - return $this->evaluate($this->icon); - } - - public function getLabel(): ?string - { - return $this->evaluate($this->label); - } - - public function getSort(): int - { - return $this->evaluate($this->sort) ?? -1; - } - - public function getUrl(): ?string - { - return $this->evaluate($this->url); - } - - public function shouldOpenUrlInNewTab(): bool - { - return (bool) $this->evaluate($this->shouldOpenUrlInNewTab); - } -} diff --git a/vendor/filament/filament/src/Navigation/NavigationBuilder.php b/vendor/filament/filament/src/Navigation/NavigationBuilder.php deleted file mode 100644 index 73c1c3b2..00000000 --- a/vendor/filament/filament/src/Navigation/NavigationBuilder.php +++ /dev/null @@ -1,98 +0,0 @@ - */ - protected array $groups = []; - - /** @var array */ - protected array $items = []; - - /** - * @param array $items - */ - public function group(NavigationGroup | string $group, array $items = [], ?bool $collapsible = null): static - { - if ($group instanceof NavigationGroup) { - $this->groups[] = $group; - - return $this; - } - - $this->groups[] = NavigationGroup::make($group) - ->items($items) - ->collapsible($collapsible); - - return $this; - } - - public function item(NavigationItem $item): static - { - $this->items[] = $item; - - return $this; - } - - /** @param array $groups */ - public function groups(array $groups): static - { - $this->groups = [ - ...$this->groups, - ...$groups, - ]; - - return $this; - } - - /** @param array $items */ - public function items(array $items): static - { - $this->items = [ - ...$this->items, - ...$items, - ]; - - return $this; - } - - /** - * @return array - */ - public function getNavigation(): array - { - $items = array_filter( - $this->items, - fn (NavigationItem $item): bool => $item->isVisible(), - ); - - return collect($this->groups) - ->filter(function (NavigationGroup $group): bool { - $visibleGroupItems = array_filter( - $group->getItems(), - fn (NavigationItem $item): bool => $item->isVisible(), - ); - - if (empty($visibleGroupItems)) { - return false; - } - - $group->items($visibleGroupItems); - - return true; - }) - ->when( - count($items), - fn (Collection $groups): Collection => $groups->prepend( - NavigationGroup::make()->items($items), - ), - ) - ->all(); - } -} diff --git a/vendor/filament/filament/src/Navigation/NavigationGroup.php b/vendor/filament/filament/src/Navigation/NavigationGroup.php deleted file mode 100644 index 18765ac6..00000000 --- a/vendor/filament/filament/src/Navigation/NavigationGroup.php +++ /dev/null @@ -1,155 +0,0 @@ - | Arrayable - */ - protected array | Arrayable $items = []; - - protected string | Closure | null $label = null; - - final public function __construct(string | Closure | null $label = null) - { - $this->label($label); - } - - public static function make(string | Closure | null $label = null): static - { - $static = app(static::class, ['label' => $label]); - $static->configure(); - - return $static; - } - - public function collapsed(bool | Closure $condition = true): static - { - $this->isCollapsed = $condition; - - $this->collapsible($condition); - - return $this; - } - - public function collapsible(bool | Closure | null $condition = true): static - { - $this->isCollapsible = $condition; - - return $this; - } - - public function icon(string | Closure | null $icon): static - { - $this->icon = $icon; - - return $this; - } - - /** - * @param array | Arrayable $items - */ - public function items(array | Arrayable $items): static - { - $this->items = $items; - - return $this; - } - - public function label(string | Closure | null $label): static - { - $this->label = $label; - - return $this; - } - - public function getIcon(): ?string - { - $icon = $this->evaluate($this->icon); - - if ($this->hasItemIcons() && filled($icon)) { - throw new Exception("Navigation group [{$this->getLabel()}] has an icon but one or more of its items also have icons. Either the group or its items can have icons, but not both. This is to ensure a proper user experience."); - } - - return $icon; - } - - /** - * @return array | Arrayable - */ - public function getItems(): array | Arrayable - { - return $this->items; - } - - public function getLabel(): ?string - { - return $this->evaluate($this->label); - } - - public function isCollapsed(): bool - { - return (bool) $this->evaluate($this->isCollapsed); - } - - public function isCollapsible(): bool - { - return (bool) ($this->evaluate($this->isCollapsible) ?? filament()->hasCollapsibleNavigationGroups()); - } - - public function isActive(): bool - { - foreach ($this->getItems() as $item) { - if (! $item->isActive()) { - continue; - } - - return true; - } - - return false; - } - - public function hasItemIcons(): bool - { - $hasIconCount = 0; - $hasNoIconCount = 0; - - foreach ($this->getItems() as $item) { - if (! $item instanceof NavigationItem) { - continue; - } - - if (blank($item->getIcon())) { - $hasNoIconCount++; - - continue; - } - - $hasIconCount++; - } - - if (($hasIconCount > 0) && ($hasNoIconCount > 0) && filled($label = $this->getLabel())) { - throw new Exception("Navigation group [{$label}] has items with and without icons. All items must have icons or none of them can have icons. This is to ensure a proper user experience."); - } - - return $hasIconCount > 0; - } -} diff --git a/vendor/filament/filament/src/Navigation/NavigationItem.php b/vendor/filament/filament/src/Navigation/NavigationItem.php deleted file mode 100644 index ec65a5ef..00000000 --- a/vendor/filament/filament/src/Navigation/NavigationItem.php +++ /dev/null @@ -1,274 +0,0 @@ - | Arrayable - */ - protected array | Arrayable $childItems = []; - - final public function __construct(string | Closure | null $label = null) - { - if (filled($label)) { - $this->label($label); - } - } - - public static function make(string | Closure | null $label = null): static - { - $static = app(static::class, ['label' => $label]); - $static->configure(); - - return $static; - } - - /** - * @param string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null $color - */ - public function badge(string | Closure | null $badge, string | array | Closure | null $color = null): static - { - $this->badge = $badge; - $this->badgeColor = $color; - - return $this; - } - - public function group(string | Closure | null $group): static - { - $this->group = $group; - - return $this; - } - - public function parentItem(string | Closure | null $group): static - { - $this->parentItem = $group; - - return $this; - } - - public function icon(string | Closure | null $icon): static - { - $this->icon = $icon; - - return $this; - } - - public function badgeTooltip(string | Closure | null $tooltip): static - { - $this->badgeTooltip = $tooltip; - - return $this; - } - - public function visible(bool | Closure $condition = true): static - { - $this->isVisible = $condition; - - return $this; - } - - public function hidden(bool | Closure $condition = true): static - { - $this->isHidden = $condition; - - return $this; - } - - public function activeIcon(string | Closure | null $activeIcon): static - { - $this->activeIcon = $activeIcon; - - return $this; - } - - public function isActiveWhen(Closure $callback): static - { - $this->isActive = $callback; - - return $this; - } - - public function label(string | Closure $label): static - { - $this->label = $label; - - return $this; - } - - public function openUrlInNewTab(bool | Closure $condition = true): static - { - $this->shouldOpenUrlInNewTab = $condition; - - return $this; - } - - public function sort(int | Closure | null $sort): static - { - $this->sort = $sort; - - return $this; - } - - public function url(string | Closure | null $url, bool | Closure $shouldOpenInNewTab = false): static - { - $this->openUrlInNewTab($shouldOpenInNewTab); - $this->url = $url; - - return $this; - } - - public function getBadge(): ?string - { - return $this->evaluate($this->badge); - } - - /** - * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | null - */ - public function getBadgeColor(): string | array | null - { - return $this->evaluate($this->badgeColor); - } - - public function getBadgeTooltip(): ?string - { - return $this->evaluate($this->badgeTooltip); - } - - public function getGroup(): ?string - { - return $this->evaluate($this->group); - } - - public function getParentItem(): ?string - { - return $this->evaluate($this->parentItem); - } - - public function getIcon(): ?string - { - $icon = $this->evaluate($this->icon); - - if (blank($icon) && $this->getChildItems()) { - throw new Exception("Navigation item [{$this->getLabel()}] has child items but no icon. Parent items must have an icon to ensure a proper user experience."); - } - - return $icon; - } - - public function isVisible(): bool - { - return ! $this->isHidden(); - } - - public function isHidden(): bool - { - if ($this->evaluate($this->isHidden)) { - return true; - } - - return ! $this->evaluate($this->isVisible); - } - - public function getActiveIcon(): ?string - { - return $this->evaluate($this->activeIcon); - } - - public function getLabel(): string - { - return $this->evaluate($this->label); - } - - public function getSort(): int - { - return $this->evaluate($this->sort) ?? -1; - } - - public function getUrl(): ?string - { - return $this->evaluate($this->url); - } - - public function isActive(): bool - { - if ($this->isActive instanceof Closure) { - $this->isActive = ((bool) $this->evaluate($this->isActive)); - } - - return (bool) $this->isActive; - } - - public function isChildItemsActive(): bool - { - foreach ($this->getChildItems() as $childItem) { - if ($childItem->isActive()) { - return true; - } - } - - return false; - } - - public function shouldOpenUrlInNewTab(): bool - { - return (bool) $this->evaluate($this->shouldOpenUrlInNewTab); - } - - /** - * @param array | Arrayable $items - */ - public function childItems(array | Arrayable $items): static - { - $this->childItems = $items; - - return $this; - } - - /** - * @return array | Arrayable - */ - public function getChildItems(): array | Arrayable - { - return $this->childItems; - } -} diff --git a/vendor/filament/filament/src/Navigation/UserMenuItem.php b/vendor/filament/filament/src/Navigation/UserMenuItem.php deleted file mode 100644 index 24cf26a9..00000000 --- a/vendor/filament/filament/src/Navigation/UserMenuItem.php +++ /dev/null @@ -1,10 +0,0 @@ -url; - } -} diff --git a/vendor/filament/filament/src/Notifications/Auth/VerifyEmail.php b/vendor/filament/filament/src/Notifications/Auth/VerifyEmail.php deleted file mode 100644 index bc669de6..00000000 --- a/vendor/filament/filament/src/Notifications/Auth/VerifyEmail.php +++ /dev/null @@ -1,19 +0,0 @@ -url; - } -} diff --git a/vendor/filament/filament/src/Pages/Actions/Action.php b/vendor/filament/filament/src/Pages/Actions/Action.php deleted file mode 100644 index 161b4c6a..00000000 --- a/vendor/filament/filament/src/Pages/Actions/Action.php +++ /dev/null @@ -1,12 +0,0 @@ - | null - */ - public ?array $data = []; - - public static function getLabel(): string - { - return __('filament-panels::pages/auth/edit-profile.label'); - } - - public static function getRelativeRouteName(): string - { - return 'profile'; - } - - public static function isTenantSubscriptionRequired(Panel $panel): bool - { - return false; - } - - public function mount(): void - { - $this->fillForm(); - } - - public function getUser(): Authenticatable & Model - { - $user = Filament::auth()->user(); - - if (! $user instanceof Model) { - throw new Exception('The authenticated user object must be an Eloquent model to allow the profile page to update it.'); - } - - return $user; - } - - protected function fillForm(): void - { - $data = $this->getUser()->attributesToArray(); - - $this->callHook('beforeFill'); - - $data = $this->mutateFormDataBeforeFill($data); - - $this->form->fill($data); - - $this->callHook('afterFill'); - } - - /** - * @param array $data - * @return array - */ - protected function mutateFormDataBeforeFill(array $data): array - { - return $data; - } - - /** - * @param array $data - * @return array - */ - protected function mutateFormDataBeforeSave(array $data): array - { - return $data; - } - - public function save(): void - { - try { - $this->callHook('beforeValidate'); - - $data = $this->form->getState(); - - $this->callHook('afterValidate'); - - $data = $this->mutateFormDataBeforeSave($data); - - $this->callHook('beforeSave'); - - $this->handleRecordUpdate($this->getUser(), $data); - - $this->callHook('afterSave'); - } catch (Halt $exception) { - return; - } - - if (request()->hasSession() && array_key_exists('password', $data)) { - request()->session()->put([ - 'password_hash_' . Filament::getAuthGuard() => $data['password'], - ]); - } - - $this->data['password'] = null; - $this->data['passwordConfirmation'] = null; - - $this->getSavedNotification()?->send(); - - if ($redirectUrl = $this->getRedirectUrl()) { - $this->redirect($redirectUrl, navigate: FilamentView::hasSpaMode() && is_app_url($redirectUrl)); - } - } - - /** - * @param array $data - */ - protected function handleRecordUpdate(Model $record, array $data): Model - { - $record->update($data); - - return $record; - } - - protected function getSavedNotification(): ?Notification - { - $title = $this->getSavedNotificationTitle(); - - if (blank($title)) { - return null; - } - - return Notification::make() - ->success() - ->title($this->getSavedNotificationTitle()); - } - - protected function getSavedNotificationTitle(): ?string - { - return __('filament-panels::pages/auth/edit-profile.notifications.saved.title'); - } - - protected function getRedirectUrl(): ?string - { - return null; - } - - protected function getNameFormComponent(): Component - { - return TextInput::make('name') - ->label(__('filament-panels::pages/auth/edit-profile.form.name.label')) - ->required() - ->maxLength(255) - ->autofocus(); - } - - protected function getEmailFormComponent(): Component - { - return TextInput::make('email') - ->label(__('filament-panels::pages/auth/edit-profile.form.email.label')) - ->email() - ->required() - ->maxLength(255) - ->unique(ignoreRecord: true); - } - - protected function getPasswordFormComponent(): Component - { - return TextInput::make('password') - ->label(__('filament-panels::pages/auth/edit-profile.form.password.label')) - ->password() - ->revealable(filament()->arePasswordsRevealable()) - ->rule(Password::default()) - ->autocomplete('new-password') - ->dehydrated(fn ($state): bool => filled($state)) - ->dehydrateStateUsing(fn ($state): string => Hash::make($state)) - ->live(debounce: 500) - ->same('passwordConfirmation'); - } - - protected function getPasswordConfirmationFormComponent(): Component - { - return TextInput::make('passwordConfirmation') - ->label(__('filament-panels::pages/auth/edit-profile.form.password_confirmation.label')) - ->password() - ->revealable(filament()->arePasswordsRevealable()) - ->required() - ->visible(fn (Get $get): bool => filled($get('password'))) - ->dehydrated(false); - } - - public function form(Form $form): Form - { - return $form; - } - - /** - * @return array - */ - protected function getForms(): array - { - return [ - 'form' => $this->form( - $this->makeForm() - ->schema([ - $this->getNameFormComponent(), - $this->getEmailFormComponent(), - $this->getPasswordFormComponent(), - $this->getPasswordConfirmationFormComponent(), - ]) - ->operation('edit') - ->model($this->getUser()) - ->statePath('data'), - ), - ]; - } - - /** - * @return array - */ - protected function getFormActions(): array - { - return [ - $this->getSaveFormAction(), - $this->getCancelFormAction(), - ]; - } - - protected function getCancelFormAction(): Action - { - return $this->backAction(); - } - - protected function getSaveFormAction(): Action - { - return Action::make('save') - ->label(__('filament-panels::pages/auth/edit-profile.form.actions.save.label')) - ->submit('save') - ->keyBindings(['mod+s']); - } - - protected function hasFullWidthFormActions(): bool - { - return false; - } - - public function getFormActionsAlignment(): string | Alignment - { - return Alignment::Start; - } - - public function getTitle(): string | Htmlable - { - return static::getLabel(); - } - - public static function getSlug(): string - { - return static::$slug ?? 'profile'; - } - - public function hasLogo(): bool - { - return false; - } - - /** - * @deprecated Use `getCancelFormAction()` instead. - */ - public function backAction(): Action - { - return Action::make('back') - ->label(__('filament-panels::pages/auth/edit-profile.actions.cancel.label')) - ->url(filament()->getUrl()) - ->color('gray'); - } -} diff --git a/vendor/filament/filament/src/Pages/Auth/EmailVerification/EmailVerificationPrompt.php b/vendor/filament/filament/src/Pages/Auth/EmailVerification/EmailVerificationPrompt.php deleted file mode 100644 index 34faf10f..00000000 --- a/vendor/filament/filament/src/Pages/Auth/EmailVerification/EmailVerificationPrompt.php +++ /dev/null @@ -1,92 +0,0 @@ -user(); - - if ($user->hasVerifiedEmail()) { - redirect()->intended(Filament::getUrl()); - } - } - - public function resendNotificationAction(): Action - { - return Action::make('resendNotification') - ->link() - ->label(__('filament-panels::pages/auth/email-verification/email-verification-prompt.actions.resend_notification.label') . '.') - ->action(function (): void { - try { - $this->rateLimit(2); - } catch (TooManyRequestsException $exception) { - Notification::make() - ->title(__('filament-panels::pages/auth/email-verification/email-verification-prompt.notifications.notification_resend_throttled.title', [ - 'seconds' => $exception->secondsUntilAvailable, - 'minutes' => ceil($exception->secondsUntilAvailable / 60), - ])) - ->body(array_key_exists('body', __('filament-panels::pages/auth/email-verification/email-verification-prompt.notifications.notification_resend_throttled') ?: []) ? __('filament-panels::pages/auth/email-verification/email-verification-prompt.notifications.notification_resend_throttled.body', [ - 'seconds' => $exception->secondsUntilAvailable, - 'minutes' => ceil($exception->secondsUntilAvailable / 60), - ]) : null) - ->danger() - ->send(); - - return; - } - - $user = Filament::auth()->user(); - - if (! method_exists($user, 'notify')) { - $userClass = $user::class; - - throw new Exception("Model [{$userClass}] does not have a [notify()] method."); - } - - $notification = new VerifyEmail(); - $notification->url = Filament::getVerifyEmailUrl($user); - - $user->notify($notification); - - Notification::make() - ->title(__('filament-panels::pages/auth/email-verification/email-verification-prompt.notifications.notification_resent.title')) - ->success() - ->send(); - }); - } - - public function getTitle(): string | Htmlable - { - return __('filament-panels::pages/auth/email-verification/email-verification-prompt.title'); - } - - public function getHeading(): string | Htmlable - { - return __('filament-panels::pages/auth/email-verification/email-verification-prompt.heading'); - } -} diff --git a/vendor/filament/filament/src/Pages/Auth/Login.php b/vendor/filament/filament/src/Pages/Auth/Login.php deleted file mode 100644 index 256c9d2c..00000000 --- a/vendor/filament/filament/src/Pages/Auth/Login.php +++ /dev/null @@ -1,203 +0,0 @@ - | null - */ - public ?array $data = []; - - public function mount(): void - { - if (Filament::auth()->check()) { - redirect()->intended(Filament::getUrl()); - } - - $this->form->fill(); - } - - public function authenticate(): ?LoginResponse - { - try { - $this->rateLimit(5); - } catch (TooManyRequestsException $exception) { - Notification::make() - ->title(__('filament-panels::pages/auth/login.notifications.throttled.title', [ - 'seconds' => $exception->secondsUntilAvailable, - 'minutes' => ceil($exception->secondsUntilAvailable / 60), - ])) - ->body(array_key_exists('body', __('filament-panels::pages/auth/login.notifications.throttled') ?: []) ? __('filament-panels::pages/auth/login.notifications.throttled.body', [ - 'seconds' => $exception->secondsUntilAvailable, - 'minutes' => ceil($exception->secondsUntilAvailable / 60), - ]) : null) - ->danger() - ->send(); - - return null; - } - - $data = $this->form->getState(); - - if (! Filament::auth()->attempt($this->getCredentialsFromFormData($data), $data['remember'] ?? false)) { - $this->throwFailureValidationException(); - } - - $user = Filament::auth()->user(); - - if ( - ($user instanceof FilamentUser) && - (! $user->canAccessPanel(Filament::getCurrentPanel())) - ) { - Filament::auth()->logout(); - - $this->throwFailureValidationException(); - } - - session()->regenerate(); - - return app(LoginResponse::class); - } - - protected function throwFailureValidationException(): never - { - throw ValidationException::withMessages([ - 'data.email' => __('filament-panels::pages/auth/login.messages.failed'), - ]); - } - - public function form(Form $form): Form - { - return $form; - } - - /** - * @return array - */ - protected function getForms(): array - { - return [ - 'form' => $this->form( - $this->makeForm() - ->schema([ - $this->getEmailFormComponent(), - $this->getPasswordFormComponent(), - $this->getRememberFormComponent(), - ]) - ->statePath('data'), - ), - ]; - } - - protected function getEmailFormComponent(): Component - { - return TextInput::make('email') - ->label(__('filament-panels::pages/auth/login.form.email.label')) - ->email() - ->required() - ->autocomplete() - ->autofocus() - ->extraInputAttributes(['tabindex' => 1]); - } - - protected function getPasswordFormComponent(): Component - { - return TextInput::make('password') - ->label(__('filament-panels::pages/auth/login.form.password.label')) - ->hint(filament()->hasPasswordReset() ? new HtmlString(Blade::render(' {{ __(\'filament-panels::pages/auth/login.actions.request_password_reset.label\') }}')) : null) - ->password() - ->revealable(filament()->arePasswordsRevealable()) - ->autocomplete('current-password') - ->required() - ->extraInputAttributes(['tabindex' => 2]); - } - - protected function getRememberFormComponent(): Component - { - return Checkbox::make('remember') - ->label(__('filament-panels::pages/auth/login.form.remember.label')); - } - - public function registerAction(): Action - { - return Action::make('register') - ->link() - ->label(__('filament-panels::pages/auth/login.actions.register.label')) - ->url(filament()->getRegistrationUrl()); - } - - public function getTitle(): string | Htmlable - { - return __('filament-panels::pages/auth/login.title'); - } - - public function getHeading(): string | Htmlable - { - return __('filament-panels::pages/auth/login.heading'); - } - - /** - * @return array - */ - protected function getFormActions(): array - { - return [ - $this->getAuthenticateFormAction(), - ]; - } - - protected function getAuthenticateFormAction(): Action - { - return Action::make('authenticate') - ->label(__('filament-panels::pages/auth/login.form.actions.authenticate.label')) - ->submit('authenticate'); - } - - protected function hasFullWidthFormActions(): bool - { - return true; - } - - /** - * @param array $data - * @return array - */ - protected function getCredentialsFromFormData(array $data): array - { - return [ - 'email' => $data['email'], - 'password' => $data['password'], - ]; - } -} diff --git a/vendor/filament/filament/src/Pages/Auth/PasswordReset/RequestPasswordReset.php b/vendor/filament/filament/src/Pages/Auth/PasswordReset/RequestPasswordReset.php deleted file mode 100644 index 74d8173d..00000000 --- a/vendor/filament/filament/src/Pages/Auth/PasswordReset/RequestPasswordReset.php +++ /dev/null @@ -1,179 +0,0 @@ - | null - */ - public ?array $data = []; - - public function mount(): void - { - if (Filament::auth()->check()) { - redirect()->intended(Filament::getUrl()); - } - - $this->form->fill(); - } - - public function request(): void - { - try { - $this->rateLimit(2); - } catch (TooManyRequestsException $exception) { - Notification::make() - ->title(__('filament-panels::pages/auth/password-reset/request-password-reset.notifications.throttled.title', [ - 'seconds' => $exception->secondsUntilAvailable, - 'minutes' => ceil($exception->secondsUntilAvailable / 60), - ])) - ->body(array_key_exists('body', __('filament-panels::pages/auth/password-reset/request-password-reset.notifications.throttled') ?: []) ? __('filament-panels::pages/auth/password-reset/request-password-reset.notifications.throttled.body', [ - 'seconds' => $exception->secondsUntilAvailable, - 'minutes' => ceil($exception->secondsUntilAvailable / 60), - ]) : null) - ->danger() - ->send(); - - return; - } - - $data = $this->form->getState(); - - $status = Password::broker(Filament::getAuthPasswordBroker())->sendResetLink( - $data, - function (CanResetPassword $user, string $token): void { - if (! method_exists($user, 'notify')) { - $userClass = $user::class; - - throw new Exception("Model [{$userClass}] does not have a [notify()] method."); - } - - $notification = new ResetPasswordNotification($token); - $notification->url = Filament::getResetPasswordUrl($token, $user); - - $user->notify($notification); - }, - ); - - if ($status !== Password::RESET_LINK_SENT) { - Notification::make() - ->title(__($status)) - ->danger() - ->send(); - - return; - } - - Notification::make() - ->title(__($status)) - ->success() - ->send(); - - $this->form->fill(); - } - - public function form(Form $form): Form - { - return $form; - } - - /** - * @return array - */ - protected function getForms(): array - { - return [ - 'form' => $this->form( - $this->makeForm() - ->schema([ - $this->getEmailFormComponent(), - ]) - ->statePath('data'), - ), - ]; - } - - protected function getEmailFormComponent(): Component - { - return TextInput::make('email') - ->label(__('filament-panels::pages/auth/password-reset/request-password-reset.form.email.label')) - ->email() - ->required() - ->autocomplete() - ->autofocus(); - } - - public function loginAction(): Action - { - return Action::make('login') - ->link() - ->label(__('filament-panels::pages/auth/password-reset/request-password-reset.actions.login.label')) - ->icon(match (__('filament-panels::layout.direction')) { - 'rtl' => FilamentIcon::resolve('panels::pages.password-reset.request-password-reset.actions.login.rtl') ?? 'heroicon-m-arrow-right', - default => FilamentIcon::resolve('panels::pages.password-reset.request-password-reset.actions.login') ?? 'heroicon-m-arrow-left', - }) - ->url(filament()->getLoginUrl()); - } - - public function getTitle(): string | Htmlable - { - return __('filament-panels::pages/auth/password-reset/request-password-reset.title'); - } - - public function getHeading(): string | Htmlable - { - return __('filament-panels::pages/auth/password-reset/request-password-reset.heading'); - } - - /** - * @return array - */ - protected function getFormActions(): array - { - return [ - $this->getRequestFormAction(), - ]; - } - - protected function getRequestFormAction(): Action - { - return Action::make('request') - ->label(__('filament-panels::pages/auth/password-reset/request-password-reset.form.actions.request.label')) - ->submit('request'); - } - - protected function hasFullWidthFormActions(): bool - { - return true; - } -} diff --git a/vendor/filament/filament/src/Pages/Auth/PasswordReset/ResetPassword.php b/vendor/filament/filament/src/Pages/Auth/PasswordReset/ResetPassword.php deleted file mode 100644 index 1712b871..00000000 --- a/vendor/filament/filament/src/Pages/Auth/PasswordReset/ResetPassword.php +++ /dev/null @@ -1,189 +0,0 @@ -check()) { - redirect()->intended(Filament::getUrl()); - } - - $this->token = $token ?? request()->query('token'); - - $this->form->fill([ - 'email' => $email ?? request()->query('email'), - ]); - } - - public function resetPassword(): ?PasswordResetResponse - { - try { - $this->rateLimit(2); - } catch (TooManyRequestsException $exception) { - Notification::make() - ->title(__('filament-panels::pages/auth/password-reset/reset-password.notifications.throttled.title', [ - 'seconds' => $exception->secondsUntilAvailable, - 'minutes' => ceil($exception->secondsUntilAvailable / 60), - ])) - ->body(array_key_exists('body', __('filament-panels::pages/auth/password-reset/reset-password.notifications.throttled') ?: []) ? __('filament-panels::pages/auth/password-reset/reset-password.notifications.throttled.body', [ - 'seconds' => $exception->secondsUntilAvailable, - 'minutes' => ceil($exception->secondsUntilAvailable / 60), - ]) : null) - ->danger() - ->send(); - - return null; - } - - $data = $this->form->getState(); - - $data['email'] = $this->email; - $data['token'] = $this->token; - - $status = Password::broker(Filament::getAuthPasswordBroker())->reset( - $data, - function (CanResetPassword | Model | Authenticatable $user) use ($data) { - $user->forceFill([ - 'password' => Hash::make($data['password']), - 'remember_token' => Str::random(60), - ])->save(); - - event(new PasswordReset($user)); - }, - ); - - if ($status === Password::PASSWORD_RESET) { - Notification::make() - ->title(__($status)) - ->success() - ->send(); - - return app(PasswordResetResponse::class); - } - - Notification::make() - ->title(__($status)) - ->danger() - ->send(); - - return null; - } - - public function form(Form $form): Form - { - return $form - ->schema([ - $this->getEmailFormComponent(), - $this->getPasswordFormComponent(), - $this->getPasswordConfirmationFormComponent(), - ]); - } - - protected function getEmailFormComponent(): Component - { - return TextInput::make('email') - ->label(__('filament-panels::pages/auth/password-reset/reset-password.form.email.label')) - ->disabled() - ->autofocus(); - } - - protected function getPasswordFormComponent(): Component - { - return TextInput::make('password') - ->label(__('filament-panels::pages/auth/password-reset/reset-password.form.password.label')) - ->password() - ->revealable(filament()->arePasswordsRevealable()) - ->required() - ->rule(PasswordRule::default()) - ->same('passwordConfirmation') - ->validationAttribute(__('filament-panels::pages/auth/password-reset/reset-password.form.password.validation_attribute')); - } - - protected function getPasswordConfirmationFormComponent(): Component - { - return TextInput::make('passwordConfirmation') - ->label(__('filament-panels::pages/auth/password-reset/reset-password.form.password_confirmation.label')) - ->password() - ->revealable(filament()->arePasswordsRevealable()) - ->required() - ->dehydrated(false); - } - - public function getTitle(): string | Htmlable - { - return __('filament-panels::pages/auth/password-reset/reset-password.title'); - } - - public function getHeading(): string | Htmlable - { - return __('filament-panels::pages/auth/password-reset/reset-password.heading'); - } - - /** - * @return array - */ - protected function getFormActions(): array - { - return [ - $this->getResetPasswordFormAction(), - ]; - } - - public function getResetPasswordFormAction(): Action - { - return Action::make('resetPassword') - ->label(__('filament-panels::pages/auth/password-reset/reset-password.form.actions.reset.label')) - ->submit('resetPassword'); - } - - protected function hasFullWidthFormActions(): bool - { - return true; - } -} diff --git a/vendor/filament/filament/src/Pages/Auth/Register.php b/vendor/filament/filament/src/Pages/Auth/Register.php deleted file mode 100644 index e7d30b14..00000000 --- a/vendor/filament/filament/src/Pages/Auth/Register.php +++ /dev/null @@ -1,234 +0,0 @@ - | null - */ - public ?array $data = []; - - protected string $userModel; - - public function mount(): void - { - if (Filament::auth()->check()) { - redirect()->intended(Filament::getUrl()); - } - - $this->form->fill(); - } - - public function register(): ?RegistrationResponse - { - try { - $this->rateLimit(2); - } catch (TooManyRequestsException $exception) { - Notification::make() - ->title(__('filament-panels::pages/auth/register.notifications.throttled.title', [ - 'seconds' => $exception->secondsUntilAvailable, - 'minutes' => ceil($exception->secondsUntilAvailable / 60), - ])) - ->body(array_key_exists('body', __('filament-panels::pages/auth/register.notifications.throttled') ?: []) ? __('filament-panels::pages/auth/register.notifications.throttled.body', [ - 'seconds' => $exception->secondsUntilAvailable, - 'minutes' => ceil($exception->secondsUntilAvailable / 60), - ]) : null) - ->danger() - ->send(); - - return null; - } - - $data = $this->form->getState(); - - $user = $this->getUserModel()::create($data); - - event(new Registered($user)); - - $this->sendEmailVerificationNotification($user); - - Filament::auth()->login($user); - - session()->regenerate(); - - return app(RegistrationResponse::class); - } - - protected function sendEmailVerificationNotification(Model $user): void - { - if (! $user instanceof MustVerifyEmail) { - return; - } - - if ($user->hasVerifiedEmail()) { - return; - } - - if (! method_exists($user, 'notify')) { - $userClass = $user::class; - - throw new Exception("Model [{$userClass}] does not have a [notify()] method."); - } - - $notification = new VerifyEmail(); - $notification->url = Filament::getVerifyEmailUrl($user); - - $user->notify($notification); - } - - public function form(Form $form): Form - { - return $form; - } - - /** - * @return array - */ - protected function getForms(): array - { - return [ - 'form' => $this->form( - $this->makeForm() - ->schema([ - $this->getNameFormComponent(), - $this->getEmailFormComponent(), - $this->getPasswordFormComponent(), - $this->getPasswordConfirmationFormComponent(), - ]) - ->statePath('data'), - ), - ]; - } - - protected function getNameFormComponent(): Component - { - return TextInput::make('name') - ->label(__('filament-panels::pages/auth/register.form.name.label')) - ->required() - ->maxLength(255) - ->autofocus(); - } - - protected function getEmailFormComponent(): Component - { - return TextInput::make('email') - ->label(__('filament-panels::pages/auth/register.form.email.label')) - ->email() - ->required() - ->maxLength(255) - ->unique($this->getUserModel()); - } - - protected function getPasswordFormComponent(): Component - { - return TextInput::make('password') - ->label(__('filament-panels::pages/auth/register.form.password.label')) - ->password() - ->revealable(filament()->arePasswordsRevealable()) - ->required() - ->rule(Password::default()) - ->dehydrateStateUsing(fn ($state) => Hash::make($state)) - ->same('passwordConfirmation') - ->validationAttribute(__('filament-panels::pages/auth/register.form.password.validation_attribute')); - } - - protected function getPasswordConfirmationFormComponent(): Component - { - return TextInput::make('passwordConfirmation') - ->label(__('filament-panels::pages/auth/register.form.password_confirmation.label')) - ->password() - ->revealable(filament()->arePasswordsRevealable()) - ->required() - ->dehydrated(false); - } - - public function loginAction(): Action - { - return Action::make('login') - ->link() - ->label(__('filament-panels::pages/auth/register.actions.login.label')) - ->url(filament()->getLoginUrl()); - } - - protected function getUserModel(): string - { - if (isset($this->userModel)) { - return $this->userModel; - } - - /** @var SessionGuard $authGuard */ - $authGuard = Filament::auth(); - - /** @var EloquentUserProvider $provider */ - $provider = $authGuard->getProvider(); - - return $this->userModel = $provider->getModel(); - } - - public function getTitle(): string | Htmlable - { - return __('filament-panels::pages/auth/register.title'); - } - - public function getHeading(): string | Htmlable - { - return __('filament-panels::pages/auth/register.heading'); - } - - /** - * @return array - */ - protected function getFormActions(): array - { - return [ - $this->getRegisterFormAction(), - ]; - } - - public function getRegisterFormAction(): Action - { - return Action::make('register') - ->label(__('filament-panels::pages/auth/register.form.actions.register.label')) - ->submit('register'); - } - - protected function hasFullWidthFormActions(): bool - { - return true; - } -} diff --git a/vendor/filament/filament/src/Pages/BasePage.php b/vendor/filament/filament/src/Pages/BasePage.php deleted file mode 100644 index a79ecac8..00000000 --- a/vendor/filament/filament/src/Pages/BasePage.php +++ /dev/null @@ -1,199 +0,0 @@ - - */ - protected array $extraBodyAttributes = []; - - public static string | Alignment $formActionsAlignment = Alignment::Start; - - public static bool $formActionsAreSticky = false; - - public static bool $hasInlineLabels = false; - - public function render(): View - { - return view(static::$view, $this->getViewData()) - ->layout(static::$layout, [ - 'livewire' => $this, - 'maxContentWidth' => $this->getMaxContentWidth(), - ...$this->getLayoutData(), - ]); - } - - public function getHeading(): string | Htmlable - { - return $this->heading ?? $this->getTitle(); - } - - public function getSubheading(): string | Htmlable | null - { - return $this->subheading; - } - - public function getTitle(): string | Htmlable - { - return static::$title ?? (string) str(class_basename(static::class)) - ->kebab() - ->replace('-', ' ') - ->title(); - } - - public function getMaxContentWidth(): MaxWidth | string | null - { - return $this->maxContentWidth; - } - - /** - * @return array - */ - public function getExtraBodyAttributes(): array - { - return $this->extraBodyAttributes; - } - - /** - * @return array - */ - protected function getLayoutData(): array - { - return []; - } - - /** - * @return array - */ - protected function getViewData(): array - { - return []; - } - - protected function onValidationError(ValidationException $exception): void - { - if (! static::$reportValidationErrorUsing) { - return; - } - - (static::$reportValidationErrorUsing)($exception); - } - - protected function halt(): void - { - throw new Halt(); - } - - protected function callHook(string $hook): void - { - if (! method_exists($this, $hook)) { - return; - } - - $this->{$hook}(); - } - - public static function stickyFormActions(bool $condition = true): void - { - static::$formActionsAreSticky = $condition; - } - - public static function alignFormActionsStart(): void - { - static::$formActionsAlignment = Alignment::Start; - } - - public static function alignFormActionsCenter(): void - { - static::$formActionsAlignment = Alignment::Center; - } - - public static function alignFormActionsEnd(): void - { - static::$formActionsAlignment = Alignment::End; - } - - /** - * @deprecated Use `alignFormActionsStart()` instead - */ - public static function alignFormActionsLeft(): void - { - static::alignFormActionsStart(); - } - - /** - * @deprecated Use `alignFormActionsEnd()` instead - */ - public static function alignFormActionsRight(): void - { - static::alignFormActionsEnd(); - } - - public function getFormActionsAlignment(): string | Alignment - { - return static::$formActionsAlignment; - } - - public function areFormActionsSticky(): bool - { - return static::$formActionsAreSticky; - } - - public function hasInlineLabels(): bool - { - return static::$hasInlineLabels; - } - - public static function formActionsAlignment(string | Alignment $alignment): void - { - static::$formActionsAlignment = $alignment; - } - - public static function inlineLabels(bool $condition = true): void - { - static::$hasInlineLabels = $condition; - } - - /** - * @return array - */ - public function getRenderHookScopes(): array - { - return [static::class]; - } -} diff --git a/vendor/filament/filament/src/Pages/Concerns/CanAuthorizeAccess.php b/vendor/filament/filament/src/Pages/Concerns/CanAuthorizeAccess.php deleted file mode 100644 index 4358763e..00000000 --- a/vendor/filament/filament/src/Pages/Concerns/CanAuthorizeAccess.php +++ /dev/null @@ -1,16 +0,0 @@ - $this->activeTab, - 'paginators' => $this->paginators, - 'tableColumnSearches' => $this->tableColumnSearches, - 'tableFilters' => $this->tableFilters, - 'tableGrouping' => $this->tableGrouping, - 'tableGroupingDirection' => $this->tableGroupingDirection, - 'tableRecordsPerPage' => $this->tableRecordsPerPage, - 'tableSearch' => $this->tableSearch, - 'tableSortColumn' => $this->tableSortColumn, - 'tableSortDirection' => $this->tableSortDirection, - ]; - } -} diff --git a/vendor/filament/filament/src/Pages/Concerns/HasRoutes.php b/vendor/filament/filament/src/Pages/Concerns/HasRoutes.php deleted file mode 100644 index 575da3a2..00000000 --- a/vendor/filament/filament/src/Pages/Concerns/HasRoutes.php +++ /dev/null @@ -1,96 +0,0 @@ - - */ - protected static string | array $routeMiddleware = []; - - /** - * @var string | array - */ - protected static string | array $withoutRouteMiddleware = []; - - public static function registerRoutes(Panel $panel): void - { - static::routes($panel); - } - - public static function routes(Panel $panel): void - { - Route::get(static::getRoutePath(), static::class) - ->middleware(static::getRouteMiddleware($panel)) - ->withoutMiddleware(static::getWithoutRouteMiddleware($panel)) - ->name(static::getRelativeRouteName()); - } - - public static function getRoutePath(): string - { - return '/' . static::getSlug(); - } - - public static function getRelativeRouteName(): string - { - return (string) str(static::getSlug())->replace('/', '.'); - } - - public static function getSlug(): string - { - if (filled(static::$slug)) { - return static::$slug; - } - - return (string) str(class_basename(static::class)) - ->kebab() - ->slug(); - } - - /** - * @return string | array - */ - public static function getRouteMiddleware(Panel $panel): string | array - { - return [ - ...(static::isEmailVerificationRequired($panel) ? [static::getEmailVerifiedMiddleware($panel)] : []), - ...(static::isTenantSubscriptionRequired($panel) ? [static::getTenantSubscribedMiddleware($panel)] : []), - ...Arr::wrap(static::$routeMiddleware), - ]; - } - - /** - * @return string | array - */ - public static function getWithoutRouteMiddleware(Panel $panel): string | array - { - return static::$withoutRouteMiddleware; - } - - public static function getEmailVerifiedMiddleware(Panel $panel): string - { - return $panel->getEmailVerifiedMiddleware(); - } - - public static function isEmailVerificationRequired(Panel $panel): bool - { - return $panel->isEmailVerificationRequired(); - } - - public static function getTenantSubscribedMiddleware(Panel $panel): string - { - return $panel->getTenantBillingProvider()->getSubscribedMiddleware(); - } - - public static function isTenantSubscriptionRequired(Panel $panel): bool - { - return $panel->isTenantSubscriptionRequired(); - } -} diff --git a/vendor/filament/filament/src/Pages/Concerns/HasSubNavigation.php b/vendor/filament/filament/src/Pages/Concerns/HasSubNavigation.php deleted file mode 100644 index b0b88a6c..00000000 --- a/vendor/filament/filament/src/Pages/Concerns/HasSubNavigation.php +++ /dev/null @@ -1,154 +0,0 @@ - - */ - protected array $cachedSubNavigation; - - protected static SubNavigationPosition $subNavigationPosition = SubNavigationPosition::Start; - - /** - * @return array - */ - public function getSubNavigation(): array - { - if (filled($cluster = static::getCluster())) { - return $this->generateNavigationItems($cluster::getClusteredComponents()); - } - - return []; - } - - public function getSubNavigationPosition(): SubNavigationPosition - { - return static::$subNavigationPosition; - } - - /** - * @return array - */ - public function getCachedSubNavigation(): array - { - if (isset($this->cachedSubNavigation)) { - return $this->cachedSubNavigation; - } - - $navigationItems = []; - - $navigationGroups = []; - - foreach ($this->getSubNavigation() as $item) { - if ($item instanceof NavigationGroup) { - $navigationGroups[$item->getLabel()] = $item; - - continue; - } - - $navigationItems[] = $item; - } - - $navigationItems = collect($navigationItems) - ->sortBy(fn (NavigationItem $item): int => $item->getSort()) - ->filter(function (NavigationItem $item) use (&$navigationGroups): bool { - if (! $item->isVisible()) { - return false; - } - - $itemGroup = $item->getGroup(); - - if (array_key_exists($itemGroup, $navigationGroups)) { - $navigationGroups[$itemGroup]->items([ - ...$navigationGroups[$itemGroup]->getItems(), - $item, - ]); - - return false; - } - - if (filled($itemGroup)) { - $navigationGroups[$itemGroup] = NavigationGroup::make() - ->label($itemGroup) - ->items([$item]); - - return false; - } - - return true; - }) - ->all(); - - foreach ($navigationGroups as $navigationGroup) { - $navigationGroup->items( - collect($navigationGroup->getItems()) - ->filter(fn (NavigationItem $item): bool => $item->isVisible()) - ->sortBy(fn (NavigationItem $item): int => $item->getSort()) - ->all(), - ); - } - - return $this->cachedSubNavigation = [ - ...($navigationItems ? [NavigationGroup::make()->items($navigationItems)] : []), - ...$navigationGroups, - ]; - } - - /** - * @param array> $components - * @return array - */ - public function generateNavigationItems(array $components): array - { - $parameters = $this->getSubNavigationParameters(); - - $items = []; - - foreach ($components as $component) { - $isResourcePage = is_subclass_of($component, ResourcePage::class); - - $shouldRegisterNavigation = $isResourcePage ? - $component::shouldRegisterNavigation($parameters) : - $component::shouldRegisterNavigation(); - - if (! $shouldRegisterNavigation) { - continue; - } - - $canAccess = $isResourcePage ? - $component::canAccess($parameters) : - $component::canAccess(); - - if (! $canAccess) { - continue; - } - - $pageItems = $isResourcePage ? - $component::getNavigationItems($parameters) : - $component::getNavigationItems(); - - $items = [ - ...$items, - ...$pageItems, - ]; - } - - return $items; - } - - /** - * @return array - */ - public function getSubNavigationParameters(): array - { - return []; - } -} diff --git a/vendor/filament/filament/src/Pages/Concerns/HasUnsavedDataChangesAlert.php b/vendor/filament/filament/src/Pages/Concerns/HasUnsavedDataChangesAlert.php deleted file mode 100644 index 5c032421..00000000 --- a/vendor/filament/filament/src/Pages/Concerns/HasUnsavedDataChangesAlert.php +++ /dev/null @@ -1,33 +0,0 @@ -rememberData(); - } - - protected function rememberData(): void - { - if (! $this->hasUnsavedDataChangesAlert()) { - return; - } - - $this->savedDataHash = md5((string) str(json_encode($this->data))->replace('\\', '')); - } - - protected function hasUnsavedDataChangesAlert(): bool - { - return $this->hasUnsavedDataChangesAlert ?? Filament::hasUnsavedChangesAlerts(); - } -} diff --git a/vendor/filament/filament/src/Pages/Concerns/InteractsWithFormActions.php b/vendor/filament/filament/src/Pages/Concerns/InteractsWithFormActions.php deleted file mode 100644 index da649a5c..00000000 --- a/vendor/filament/filament/src/Pages/Concerns/InteractsWithFormActions.php +++ /dev/null @@ -1,72 +0,0 @@ - - */ - protected array $cachedFormActions = []; - - public function bootedInteractsWithFormActions(): void - { - $this->cacheFormActions(); - } - - protected function cacheFormActions(): void - { - /** @var array */ - $actions = Action::configureUsing( - Closure::fromCallable([$this, 'configureAction']), - fn (): array => $this->getFormActions(), - ); - - foreach ($actions as $action) { - if ($action instanceof ActionGroup) { - $action->livewire($this); - - /** @var array $flatActions */ - $flatActions = $action->getFlatActions(); - - $this->mergeCachedActions($flatActions); - $this->cachedFormActions[] = $action; - - continue; - } - - if (! $action instanceof Action) { - throw new InvalidArgumentException('Form actions must be an instance of ' . Action::class . ', or ' . ActionGroup::class . '.'); - } - - $this->cacheAction($action); - $this->cachedFormActions[] = $action; - } - } - - /** - * @return array - */ - public function getCachedFormActions(): array - { - return $this->cachedFormActions; - } - - /** - * @return array - */ - public function getFormActions(): array - { - return []; - } - - protected function hasFullWidthFormActions(): bool - { - return false; - } -} diff --git a/vendor/filament/filament/src/Pages/Concerns/InteractsWithHeaderActions.php b/vendor/filament/filament/src/Pages/Concerns/InteractsWithHeaderActions.php deleted file mode 100644 index 017bccca..00000000 --- a/vendor/filament/filament/src/Pages/Concerns/InteractsWithHeaderActions.php +++ /dev/null @@ -1,77 +0,0 @@ - - */ - protected array $cachedHeaderActions = []; - - public function bootedInteractsWithHeaderActions(): void - { - $this->cacheHeaderActions(); - } - - protected function cacheHeaderActions(): void - { - /** @var array */ - $actions = Action::configureUsing( - Closure::fromCallable([$this, 'configureAction']), - fn (): array => $this->getHeaderActions(), - ); - - foreach ($actions as $action) { - if ($action instanceof ActionGroup) { - $action->livewire($this); - - /** @var array $flatActions */ - $flatActions = $action->getFlatActions(); - - $this->mergeCachedActions($flatActions); - $this->cachedHeaderActions[] = $action; - - continue; - } - - if (! $action instanceof Action) { - throw new InvalidArgumentException('Header actions must be an instance of ' . Action::class . ', or ' . ActionGroup::class . '.'); - } - - $this->cacheAction($action); - $this->cachedHeaderActions[] = $action; - } - } - - /** - * @return array - */ - public function getCachedHeaderActions(): array - { - return $this->cachedHeaderActions; - } - - /** - * @return array - */ - protected function getHeaderActions(): array - { - return $this->getActions(); - } - - /** - * @deprecated Register header actions within the `getHeaderActions()` method instead. - * - * @return array - */ - protected function getActions(): array - { - return []; - } -} diff --git a/vendor/filament/filament/src/Pages/Dashboard.php b/vendor/filament/filament/src/Pages/Dashboard.php deleted file mode 100644 index a866ba46..00000000 --- a/vendor/filament/filament/src/Pages/Dashboard.php +++ /dev/null @@ -1,69 +0,0 @@ - | WidgetConfiguration> - */ - public function getWidgets(): array - { - return Filament::getWidgets(); - } - - /** - * @return array | WidgetConfiguration> - */ - public function getVisibleWidgets(): array - { - return $this->filterVisibleWidgets($this->getWidgets()); - } - - /** - * @return int | string | array - */ - public function getColumns(): int | string | array - { - return 2; - } - - public function getTitle(): string | Htmlable - { - return static::$title ?? __('filament-panels::pages/dashboard.title'); - } -} diff --git a/vendor/filament/filament/src/Pages/Dashboard/Actions/FilterAction.php b/vendor/filament/filament/src/Pages/Dashboard/Actions/FilterAction.php deleted file mode 100644 index c7640a25..00000000 --- a/vendor/filament/filament/src/Pages/Dashboard/Actions/FilterAction.php +++ /dev/null @@ -1,54 +0,0 @@ -label(__('filament-panels::pages/dashboard.actions.filter.label')); - - $this->modalHeading(fn (): string => __('filament-panels::pages/dashboard.actions.filter.modal.heading')); - - $this->modalSubmitActionLabel(__('filament-panels::pages/dashboard.actions.filter.modal.actions.apply.label')); - - $this->icon(FilamentIcon::resolve('panels::pages.dashboard.actions.filter') ?? 'heroicon-m-funnel'); - - $this->color('gray'); - - $this->fillForm(function (Component $livewire): ?array { - if (! property_exists($livewire, 'filters')) { - throw new Exception('The [' . $livewire::class . '] page must implement the [' . Dashboard\Concerns\HasFilters::class . '] trait.'); - } - - return $livewire->filters; - }); - - $this->action(function (array $data, Component $livewire) { - if (! property_exists($livewire, 'filters')) { - return; - } - - $livewire->filters = $data; - - $this->success(); - }); - - $this->slideOver(); - - $this->modalWidth('md'); - } -} diff --git a/vendor/filament/filament/src/Pages/Dashboard/Concerns/HasFilters.php b/vendor/filament/filament/src/Pages/Dashboard/Concerns/HasFilters.php deleted file mode 100644 index 7c3997c5..00000000 --- a/vendor/filament/filament/src/Pages/Dashboard/Concerns/HasFilters.php +++ /dev/null @@ -1,90 +0,0 @@ - | null - */ - #[Url] - public ?array $filters = null; - - protected bool $persistsFiltersInSession = true; - - public function mountHasFilters(): void - { - $shouldPersistFiltersInSession = $this->persistsFiltersInSession(); - $filtersSessionKey = $this->getFiltersSessionKey(); - - if (! count($this->filters ?? [])) { - $this->filters = null; - } - - if ( - ($this->filters === null) && - $shouldPersistFiltersInSession && - session()->has($filtersSessionKey) - ) { - $this->filters = session()->get($filtersSessionKey); - } - - // https://github.com/filamentphp/filament/pull/7999 - if ($this->filters) { - $this->normalizeTableFilterValuesFromQueryString($this->filters); - } - - if (method_exists($this, 'getFiltersForm')) { - $this->getFiltersForm()->fill($this->filters); - } - - if ($shouldPersistFiltersInSession) { - session()->put( - $filtersSessionKey, - $this->filters, - ); - } - } - - /** - * @param array $data - */ - protected function normalizeTableFilterValuesFromQueryString(array &$data): void - { - foreach ($data as &$value) { - if (is_array($value)) { - $this->normalizeTableFilterValuesFromQueryString($value); - } elseif ($value === 'null') { - $value = null; - } elseif ($value === 'false') { - $value = false; - } elseif ($value === 'true') { - $value = true; - } - } - } - - public function updatedFilters(): void - { - if ($this->persistsFiltersInSession()) { - session()->put( - $this->getFiltersSessionKey(), - $this->filters, - ); - } - } - - public function getFiltersSessionKey(): string - { - $livewire = class_basename($this::class); - - return "{$livewire}_filters"; - } - - public function persistsFiltersInSession(): bool - { - return $this->persistsFiltersInSession; - } -} diff --git a/vendor/filament/filament/src/Pages/Dashboard/Concerns/HasFiltersAction.php b/vendor/filament/filament/src/Pages/Dashboard/Concerns/HasFiltersAction.php deleted file mode 100644 index 8d990336..00000000 --- a/vendor/filament/filament/src/Pages/Dashboard/Concerns/HasFiltersAction.php +++ /dev/null @@ -1,8 +0,0 @@ - $this->getFiltersForm(), - ]; - } - - public function filtersForm(Form $form): Form - { - return $form; - } - - public function getFiltersForm(): Form - { - if ((! $this->isCachingForms) && $this->hasCachedForm('filtersForm')) { - return $this->getForm('filtersForm'); - } - - return $this->filtersForm($this->makeForm() - ->columns([ - 'md' => 2, - 'xl' => 3, - '2xl' => 4, - ]) - ->statePath('filters') - ->live()); - } -} diff --git a/vendor/filament/filament/src/Pages/Page.php b/vendor/filament/filament/src/Pages/Page.php deleted file mode 100644 index f9cff03a..00000000 --- a/vendor/filament/filament/src/Pages/Page.php +++ /dev/null @@ -1,318 +0,0 @@ - | null */ - protected static ?string $cluster = null; - - protected static bool $isDiscovered = true; - - protected static ?string $navigationGroup = null; - - protected static ?string $navigationBadgeTooltip = null; - - protected static ?string $navigationParentItem = null; - - protected static ?string $navigationIcon = null; - - protected static ?string $activeNavigationIcon = null; - - protected static ?string $navigationLabel = null; - - protected static ?int $navigationSort = null; - - protected static bool $shouldRegisterNavigation = true; - - /** - * @param array $parameters - */ - public static function getUrl(array $parameters = [], bool $isAbsolute = true, ?string $panel = null, ?Model $tenant = null): string - { - if (blank($panel) || Filament::getPanel($panel)->hasTenancy()) { - $parameters['tenant'] ??= ($tenant ?? Filament::getTenant()); - } - - return route(static::getRouteName($panel), $parameters, $isAbsolute); - } - - public static function registerRoutes(Panel $panel): void - { - if (filled(static::getCluster())) { - Route::name(static::prependClusterRouteBaseName('pages.')) - ->prefix(static::prependClusterSlug('')) - ->group(fn () => static::routes($panel)); - - return; - } - - Route::name('pages.')->group(fn () => static::routes($panel)); - } - - public static function registerNavigationItems(): void - { - if (filled(static::getCluster())) { - return; - } - - if (! static::shouldRegisterNavigation()) { - return; - } - - if (! static::canAccess()) { - return; - } - - Filament::getCurrentPanel() - ->navigationItems(static::getNavigationItems()); - } - - /** - * @return array - */ - public static function getNavigationItems(): array - { - return [ - NavigationItem::make(static::getNavigationLabel()) - ->group(static::getNavigationGroup()) - ->parentItem(static::getNavigationParentItem()) - ->icon(static::getNavigationIcon()) - ->activeIcon(static::getActiveNavigationIcon()) - ->isActiveWhen(fn (): bool => request()->routeIs(static::getNavigationItemActiveRoutePattern())) - ->sort(static::getNavigationSort()) - ->badge(static::getNavigationBadge(), color: static::getNavigationBadgeColor()) - ->badgeTooltip(static::getNavigationBadgeTooltip()) - ->url(static::getNavigationUrl()), - ]; - } - - public static function getNavigationItemActiveRoutePattern(): string - { - return static::getRouteName(); - } - - public static function getRouteName(?string $panel = null): string - { - $panel = $panel ? Filament::getPanel($panel) : Filament::getCurrentPanel(); - - $routeName = 'pages.' . static::getRelativeRouteName(); - $routeName = static::prependClusterRouteBaseName($routeName); - - return $panel->generateRouteName($routeName); - } - - /** - * @return array - */ - public function getBreadcrumbs(): array - { - if (filled($cluster = static::getCluster())) { - return $cluster::unshiftClusterBreadcrumbs([]); - } - - return []; - } - - public static function getNavigationGroup(): ?string - { - return static::$navigationGroup; - } - - public static function getNavigationParentItem(): ?string - { - return static::$navigationParentItem; - } - - public static function getActiveNavigationIcon(): ?string - { - return static::$activeNavigationIcon ?? static::getNavigationIcon(); - } - - public static function getNavigationIcon(): ?string - { - return static::$navigationIcon; - } - - public static function getNavigationLabel(): string - { - return static::$navigationLabel ?? static::$title ?? str(class_basename(static::class)) - ->kebab() - ->replace('-', ' ') - ->title(); - } - - public static function getNavigationBadge(): ?string - { - return null; - } - - /** - * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | null - */ - public static function getNavigationBadgeColor(): string | array | null - { - return null; - } - - public static function getNavigationBadgeTooltip(): ?string - { - return static::$navigationBadgeTooltip; - } - - public static function getNavigationSort(): ?int - { - return static::$navigationSort; - } - - public static function getNavigationUrl(): string - { - return static::getUrl(); - } - - public function getFooter(): ?View - { - return null; - } - - public function getHeader(): ?View - { - return null; - } - - /** - * @return array | WidgetConfiguration> - */ - protected function getHeaderWidgets(): array - { - return []; - } - - /** - * @return array | WidgetConfiguration> - */ - public function getVisibleHeaderWidgets(): array - { - return $this->filterVisibleWidgets($this->getHeaderWidgets()); - } - - /** - * @return int | string | array - */ - public function getHeaderWidgetsColumns(): int | string | array - { - return 2; - } - - /** - * @return array | WidgetConfiguration> - */ - protected function getFooterWidgets(): array - { - return []; - } - - /** - * @return array | WidgetConfiguration> - */ - public function getVisibleFooterWidgets(): array - { - return $this->filterVisibleWidgets($this->getFooterWidgets()); - } - - /** - * @param array | WidgetConfiguration> $widgets - * @return array | WidgetConfiguration> - */ - protected function filterVisibleWidgets(array $widgets): array - { - return array_filter($widgets, fn (string | WidgetConfiguration $widget): bool => $this->normalizeWidgetClass($widget)::canView()); - } - - /** - * @param class-string | WidgetConfiguration $widget - * @return class-string - */ - protected function normalizeWidgetClass(string | WidgetConfiguration $widget): string - { - if ($widget instanceof WidgetConfiguration) { - return $widget->widget; - } - - return $widget; - } - - /** - * @return int | string | array - */ - public function getFooterWidgetsColumns(): int | string | array - { - return 2; - } - - /** - * @return array - */ - public function getWidgetData(): array - { - return []; - } - - public static function shouldRegisterNavigation(): bool - { - return static::$shouldRegisterNavigation; - } - - public static function isDiscovered(): bool - { - return static::$isDiscovered; - } - - /** - * @return class-string | null - */ - public static function getCluster(): ?string - { - return static::$cluster; - } - - public static function prependClusterSlug(string $slug): string - { - if (filled($cluster = static::getCluster())) { - return $cluster::prependClusterSlug($slug); - } - - return $slug; - } - - public static function prependClusterRouteBaseName(string $name): string - { - if (filled($cluster = static::getCluster())) { - return $cluster::prependClusterRouteBaseName($name); - } - - return $name; - } - - public static function canAccess(): bool - { - return true; - } -} diff --git a/vendor/filament/filament/src/Pages/SimplePage.php b/vendor/filament/filament/src/Pages/SimplePage.php deleted file mode 100644 index 35ea4891..00000000 --- a/vendor/filament/filament/src/Pages/SimplePage.php +++ /dev/null @@ -1,29 +0,0 @@ - $this->getMaxWidth(), - ]; - } - - public function getMaxWidth(): MaxWidth | string | null - { - return $this->maxWidth; - } - - public function hasLogo(): bool - { - return true; - } -} diff --git a/vendor/filament/filament/src/Pages/SubNavigationPosition.php b/vendor/filament/filament/src/Pages/SubNavigationPosition.php deleted file mode 100644 index 6c2cff48..00000000 --- a/vendor/filament/filament/src/Pages/SubNavigationPosition.php +++ /dev/null @@ -1,12 +0,0 @@ - | null - */ - public ?array $data = []; - - /** - * @var ?Model - */ - #[Locked] - public $tenant = null; - - protected static bool $isDiscovered = false; - - abstract public static function getLabel(): string; - - public static function getRelativeRouteName(): string - { - return 'profile'; - } - - public static function isTenantSubscriptionRequired(Panel $panel): bool - { - return false; - } - - public function mount(): void - { - $this->tenant = Filament::getTenant(); - - abort_unless(static::canView($this->tenant), 404); - - $this->fillForm(); - } - - protected function fillForm(): void - { - $data = $this->tenant->attributesToArray(); - - $this->callHook('beforeFill'); - - $data = $this->mutateFormDataBeforeFill($data); - - $this->form->fill($data); - - $this->callHook('afterFill'); - } - - /** - * @param array $data - * @return array - */ - protected function mutateFormDataBeforeFill(array $data): array - { - return $data; - } - - /** - * @param array $data - * @return array - */ - protected function mutateFormDataBeforeSave(array $data): array - { - return $data; - } - - public function save(): void - { - try { - $this->callHook('beforeValidate'); - - $data = $this->form->getState(); - - $this->callHook('afterValidate'); - - $data = $this->mutateFormDataBeforeSave($data); - - $this->callHook('beforeSave'); - - $this->handleRecordUpdate($this->tenant, $data); - - $this->callHook('afterSave'); - } catch (Halt $exception) { - return; - } - - $this->getSavedNotification()?->send(); - - if ($redirectUrl = $this->getRedirectUrl()) { - $this->redirect($redirectUrl, navigate: FilamentView::hasSpaMode() && is_app_url($redirectUrl)); - } - } - - /** - * @param array $data - */ - protected function handleRecordUpdate(Model $record, array $data): Model - { - $record->update($data); - - return $record; - } - - protected function getSavedNotification(): ?Notification - { - $title = $this->getSavedNotificationTitle(); - - if (blank($title)) { - return null; - } - - return Notification::make() - ->success() - ->title($this->getSavedNotificationTitle()); - } - - protected function getSavedNotificationTitle(): ?string - { - return __('filament-panels::pages/tenancy/edit-tenant-profile.notifications.saved.title'); - } - - protected function getRedirectUrl(): ?string - { - return null; - } - - public function form(Form $form): Form - { - return $form; - } - - /** - * @return array - */ - protected function getForms(): array - { - return [ - 'form' => $this->form( - $this->makeForm() - ->operation('edit') - ->model($this->tenant) - ->statePath('data'), - ), - ]; - } - - /** - * @return array - */ - protected function getFormActions(): array - { - return [ - $this->getSaveFormAction(), - ]; - } - - protected function getSaveFormAction(): Action - { - return Action::make('save') - ->label(__('filament-panels::pages/tenancy/edit-tenant-profile.form.actions.save.label')) - ->submit('save') - ->keyBindings(['mod+s']); - } - - public function getTitle(): string | Htmlable - { - return static::getLabel(); - } - - public static function getSlug(): string - { - return static::$slug ?? 'profile'; - } - - public static function canView(Model $tenant): bool - { - try { - return authorize('update', $tenant)->allowed(); - } catch (AuthorizationException $exception) { - return $exception->toResponse()->allowed(); - } - } -} diff --git a/vendor/filament/filament/src/Pages/Tenancy/RegisterTenant.php b/vendor/filament/filament/src/Pages/Tenancy/RegisterTenant.php deleted file mode 100644 index 185a9d04..00000000 --- a/vendor/filament/filament/src/Pages/Tenancy/RegisterTenant.php +++ /dev/null @@ -1,179 +0,0 @@ - | null - */ - public ?array $data = []; - - public ?Model $tenant = null; - - abstract public static function getLabel(): string; - - public static function getRelativeRouteName(): string - { - return 'registration'; - } - - public static function isTenantSubscriptionRequired(Panel $panel): bool - { - return false; - } - - public function mount(): void - { - abort_unless(static::canView(), 404); - - $this->form->fill(); - } - - /** - * @param array $data - * @return array - */ - protected function mutateFormDataBeforeRegister(array $data): array - { - return $data; - } - - public function register(): void - { - try { - $this->callHook('beforeValidate'); - - $data = $this->form->getState(); - - $this->callHook('afterValidate'); - - $data = $this->mutateFormDataBeforeRegister($data); - - $this->callHook('beforeRegister'); - - $this->tenant = $this->handleRegistration($data); - - $this->form->model($this->tenant)->saveRelationships(); - - $this->callHook('afterRegister'); - } catch (Halt $exception) { - return; - } - - if ($redirectUrl = $this->getRedirectUrl()) { - $this->redirect($redirectUrl, navigate: FilamentView::hasSpaMode() && is_app_url($redirectUrl)); - } - } - - /** - * @param array $data - */ - protected function handleRegistration(array $data): Model - { - return $this->getModel()::create($data); - } - - protected function getRedirectUrl(): ?string - { - return Filament::getUrl($this->tenant); - } - - public function form(Form $form): Form - { - return $form; - } - - /** - * @return array - */ - protected function getForms(): array - { - return [ - 'form' => $this->form( - $this->makeForm() - ->model($this->getModel()) - ->statePath('data'), - ), - ]; - } - - public function getModel(): string - { - return Filament::getTenantModel(); - } - - public function getTitle(): string | Htmlable - { - return static::getLabel(); - } - - public static function getSlug(): string - { - return static::$slug ?? 'new'; - } - - public function hasLogo(): bool - { - return false; - } - - /** - * @return array - */ - protected function getFormActions(): array - { - return [ - $this->getRegisterFormAction(), - ]; - } - - public function getRegisterFormAction(): Action - { - return Action::make('register') - ->label(static::getLabel()) - ->submit('register'); - } - - protected function hasFullWidthFormActions(): bool - { - return true; - } - - public static function canView(): bool - { - try { - return authorize('create', Filament::getTenantModel())->allowed(); - } catch (AuthorizationException $exception) { - return $exception->toResponse()->allowed(); - } - } -} diff --git a/vendor/filament/filament/src/Panel.php b/vendor/filament/filament/src/Panel.php deleted file mode 100644 index 991eb08f..00000000 --- a/vendor/filament/filament/src/Panel.php +++ /dev/null @@ -1,104 +0,0 @@ -configure(); - - return $static; - } - - public function default(bool $condition = true): static - { - $this->isDefault = $condition; - - return $this; - } - - public function register(): void - { - $this->registerLivewireComponents(); - $this->registerLivewirePersistentMiddleware(); - - if (app()->runningInConsole()) { - $this->registerAssets(); - } - } - - public function boot(): void - { - $this->registerAssets(); - - FilamentColor::register($this->getColors()); - - FilamentIcon::register($this->getIcons()); - - FilamentView::spa($this->hasSpaMode()); - - $this->registerRenderHooks(); - - foreach ($this->plugins as $plugin) { - $plugin->boot($this); - } - - if ($callback = $this->bootUsing) { - $callback($this); - } - } - - public function bootUsing(?Closure $callback): static - { - $this->bootUsing = $callback; - - return $this; - } - - public function isDefault(): bool - { - return $this->isDefault; - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasAssets.php b/vendor/filament/filament/src/Panel/Concerns/HasAssets.php deleted file mode 100644 index 0e52d40c..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasAssets.php +++ /dev/null @@ -1,34 +0,0 @@ -> - */ - protected array $assets = []; - - /** - * @param array $assets - */ - public function assets(array $assets, string $package = 'app'): static - { - $this->assets[$package] = [ - ...($this->assets[$package] ?? []), - ...$assets, - ]; - - return $this; - } - - public function registerAssets(): void - { - foreach ($this->assets as $package => $assets) { - FilamentAsset::register($assets, $package); - } - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasAuth.php b/vendor/filament/filament/src/Panel/Concerns/HasAuth.php deleted file mode 100644 index ab90f630..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasAuth.php +++ /dev/null @@ -1,464 +0,0 @@ - | null - */ - protected string | Closure | array | null $emailVerificationRouteAction = null; - - protected string $emailVerificationPromptRouteSlug = 'prompt'; - - protected string $emailVerificationRouteSlug = 'verify'; - - protected string $emailVerificationRoutePrefix = 'email-verification'; - - protected bool $isEmailVerificationRequired = false; - - /** - * @var string | Closure | array | null - */ - protected string | Closure | array | null $loginRouteAction = null; - - protected string $loginRouteSlug = 'login'; - - /** - * @var string | Closure | array | null - */ - protected string | Closure | array | null $registrationRouteAction = null; - - protected string $registrationRouteSlug = 'register'; - - /** - * @var string | Closure | array | null - */ - protected string | Closure | array | null $requestPasswordResetRouteAction = null; - - protected string $requestPasswordResetRouteSlug = 'request'; - - /** - * @var string | Closure | array | null - */ - protected string | Closure | array | null $resetPasswordRouteAction = null; - - protected string $resetPasswordRouteSlug = 'reset'; - - protected string $resetPasswordRoutePrefix = 'password-reset'; - - protected ?string $profilePage = null; - - protected string $authGuard = 'web'; - - protected ?string $authPasswordBroker = null; - - protected bool | Closure $arePasswordsRevealable = true; - - /** - * @param string | Closure | array | null $promptAction - */ - public function emailVerification(string | Closure | array | null $promptAction = EmailVerificationPrompt::class, bool $isRequired = true): static - { - $this->emailVerificationRouteAction = $promptAction; - $this->requiresEmailVerification($isRequired); - - return $this; - } - - public function emailVerificationPromptRouteSlug(string $slug): static - { - $this->emailVerificationPromptRouteSlug = $slug; - - return $this; - } - - public function emailVerificationRouteSlug(string $slug): static - { - $this->emailVerificationRouteSlug = $slug; - - return $this; - } - - public function emailVerificationRoutePrefix(string $prefix): static - { - $this->emailVerificationRoutePrefix = $prefix; - - return $this; - } - - public function emailVerifiedMiddlewareName(string | Closure $name): static - { - $this->emailVerifiedMiddlewareName = $name; - - return $this; - } - - public function requiresEmailVerification(bool $condition = true): static - { - $this->isEmailVerificationRequired = $condition; - - return $this; - } - - /** - * @param string | Closure | array | null $action - */ - public function login(string | Closure | array | null $action = Login::class): static - { - $this->loginRouteAction = $action; - - return $this; - } - - public function loginRouteSlug(string $slug): static - { - $this->loginRouteSlug = $slug; - - return $this; - } - - /** - * @param string | Closure | array | null $requestAction - * @param string | Closure | array | null $resetAction - */ - public function passwordReset(string | Closure | array | null $requestAction = RequestPasswordReset::class, string | Closure | array | null $resetAction = ResetPassword::class): static - { - $this->requestPasswordResetRouteAction = $requestAction; - $this->resetPasswordRouteAction = $resetAction; - - return $this; - } - - public function passwordResetRequestRouteSlug(string $slug): static - { - $this->requestPasswordResetRouteSlug = $slug; - - return $this; - } - - public function passwordResetRouteSlug(string $slug): static - { - $this->resetPasswordRouteSlug = $slug; - - return $this; - } - - public function passwordResetRoutePrefix(string $prefix): static - { - $this->resetPasswordRoutePrefix = $prefix; - - return $this; - } - - /** - * @param string | Closure | array | null $action - */ - public function registration(string | Closure | array | null $action = Register::class): static - { - $this->registrationRouteAction = $action; - - return $this; - } - - public function registrationRouteSlug(string $slug): static - { - $this->registrationRouteSlug = $slug; - - return $this; - } - - public function profile(?string $page = EditProfile::class): static - { - $this->profilePage = $page; - - return $this; - } - - public function auth(): Guard - { - return auth()->guard($this->getAuthGuard()); - } - - public function authGuard(string $guard): static - { - $this->authGuard = $guard; - - return $this; - } - - public function authPasswordBroker(?string $broker = null): static - { - $this->authPasswordBroker = $broker; - - return $this; - } - - public function isEmailVerificationRequired(): bool - { - return $this->isEmailVerificationRequired; - } - - public function hasProfile(): bool - { - return filled($this->getProfilePage()); - } - - public function getProfilePage(): ?string - { - return $this->profilePage; - } - - /** - * @param array $parameters - */ - public function getEmailVerificationPromptUrl(array $parameters = []): ?string - { - if (! $this->hasEmailVerification()) { - return null; - } - - return route($this->getEmailVerificationPromptRouteName(), $parameters); - } - - public function getEmailVerificationPromptRouteName(): string - { - return $this->generateRouteName('auth.email-verification.prompt'); - } - - public function getEmailVerifiedMiddleware(): string - { - return "{$this->getEmailVerifiedMiddlewareName()}:{$this->getEmailVerificationPromptRouteName()}"; - } - - /** - * @param array $parameters - */ - public function getLoginUrl(array $parameters = []): ?string - { - if (! $this->hasLogin()) { - return null; - } - - return $this->route('auth.login', $parameters); - } - - /** - * @param array $parameters - */ - public function getRegistrationUrl(array $parameters = []): ?string - { - if (! $this->hasRegistration()) { - return null; - } - - return $this->route('auth.register', $parameters); - } - - /** - * @param array $parameters - */ - public function getRequestPasswordResetUrl(array $parameters = []): ?string - { - if (! $this->hasPasswordReset()) { - return null; - } - - return $this->route('auth.password-reset.request', $parameters); - } - - /** - * @param array $parameters - */ - public function getVerifyEmailUrl(MustVerifyEmail | Model | Authenticatable $user, array $parameters = []): string - { - return URL::temporarySignedRoute( - $this->generateRouteName('auth.email-verification.verify'), - now()->addMinutes(config('auth.verification.expire', 60)), - [ - 'id' => $user->getKey(), - 'hash' => sha1($user->getEmailForVerification()), - ...$parameters, - ], - ); - } - - /** - * @param array $parameters - */ - public function getResetPasswordUrl(string $token, CanResetPassword | Model | Authenticatable $user, array $parameters = []): string - { - return URL::signedRoute( - $this->generateRouteName('auth.password-reset.reset'), - [ - 'email' => $user->getEmailForPasswordReset(), - 'token' => $token, - ...$parameters, - ], - ); - } - - /** - * @param array $parameters - */ - public function getProfileUrl(array $parameters = []): ?string - { - if (! $this->hasProfile()) { - return null; - } - - return $this->route('auth.profile', $parameters); - } - - /** - * @param array $parameters - */ - public function getLogoutUrl(array $parameters = []): string - { - return $this->route('auth.logout', $parameters); - } - - public function getEmailVerifiedMiddlewareName(): string - { - return $this->evaluate($this->emailVerifiedMiddlewareName); - } - - /** - * @return string | Closure | array | null - */ - public function getEmailVerificationPromptRouteAction(): string | Closure | array | null - { - return $this->emailVerificationRouteAction; - } - - public function getEmailVerificationPromptRouteSlug(): string - { - return Str::start($this->emailVerificationPromptRouteSlug, '/'); - } - - public function getEmailVerificationRouteSlug(string $suffix): string - { - return Str::start($this->emailVerificationRouteSlug, '/') . $suffix; - } - - public function getEmailVerificationRoutePrefix(): string - { - return Str::start($this->emailVerificationRoutePrefix, '/'); - } - - /** - * @return string | Closure | array | null - */ - public function getLoginRouteAction(): string | Closure | array | null - { - return $this->loginRouteAction; - } - - public function getLoginRouteSlug(): string - { - return Str::start($this->loginRouteSlug, '/'); - } - - /** - * @return string | Closure | array | null - */ - public function getRegistrationRouteAction(): string | Closure | array | null - { - return $this->registrationRouteAction; - } - - public function getRegistrationRouteSlug(): string - { - return Str::start($this->registrationRouteSlug, '/'); - } - - /** - * @return string | Closure | array | null - */ - public function getRequestPasswordResetRouteAction(): string | Closure | array | null - { - return $this->requestPasswordResetRouteAction; - } - - public function getRequestPasswordResetRouteSlug(): string - { - return Str::start($this->requestPasswordResetRouteSlug, '/'); - } - - /** - * @return string | Closure | array | null - */ - public function getResetPasswordRouteAction(): string | Closure | array | null - { - return $this->resetPasswordRouteAction; - } - - public function getResetPasswordRouteSlug(): string - { - return Str::start($this->resetPasswordRouteSlug, '/'); - } - - public function getResetPasswordRoutePrefix(): string - { - return Str::start($this->resetPasswordRoutePrefix, '/'); - } - - public function hasEmailVerification(): bool - { - return filled($this->getEmailVerificationPromptRouteAction()); - } - - public function hasLogin(): bool - { - return filled($this->getLoginRouteAction()); - } - - public function hasPasswordReset(): bool - { - return filled($this->getRequestPasswordResetRouteAction()); - } - - public function hasRegistration(): bool - { - return filled($this->getRegistrationRouteAction()); - } - - public function getAuthGuard(): string - { - return $this->authGuard; - } - - public function getAuthPasswordBroker(): ?string - { - return $this->authPasswordBroker; - } - - public function revealablePasswords(bool | Closure $condition = true): static - { - $this->arePasswordsRevealable = $condition; - - return $this; - } - - public function arePasswordsRevealable(): bool - { - return (bool) $this->evaluate($this->arePasswordsRevealable); - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasAvatars.php b/vendor/filament/filament/src/Panel/Concerns/HasAvatars.php deleted file mode 100644 index a85faaf4..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasAvatars.php +++ /dev/null @@ -1,22 +0,0 @@ -defaultAvatarProvider = $provider; - - return $this; - } - - public function getDefaultAvatarProvider(): string - { - return $this->defaultAvatarProvider; - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasBrandLogo.php b/vendor/filament/filament/src/Panel/Concerns/HasBrandLogo.php deleted file mode 100644 index 9ffc463a..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasBrandLogo.php +++ /dev/null @@ -1,52 +0,0 @@ -brandLogo = $logo; - - return $this; - } - - public function brandLogoHeight(string | Closure | null $height): static - { - $this->brandLogoHeight = $height; - - return $this; - } - - public function darkModeBrandLogo(string | Htmlable | Closure | null $logo): static - { - $this->darkModeBrandLogo = $logo; - - return $this; - } - - public function getBrandLogo(): string | Htmlable | null - { - return $this->evaluate($this->brandLogo); - } - - public function getBrandLogoHeight(): ?string - { - return $this->evaluate($this->brandLogoHeight); - } - - public function getDarkModeBrandLogo(): string | Htmlable | null - { - return $this->evaluate($this->darkModeBrandLogo); - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasBrandName.php b/vendor/filament/filament/src/Panel/Concerns/HasBrandName.php deleted file mode 100644 index d7dd1da3..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasBrandName.php +++ /dev/null @@ -1,23 +0,0 @@ -brandName = $name; - - return $this; - } - - public function getBrandName(): string | Htmlable - { - return $this->evaluate($this->brandName) ?? config('app.name'); - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasBreadcrumbs.php b/vendor/filament/filament/src/Panel/Concerns/HasBreadcrumbs.php deleted file mode 100644 index 01594a44..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasBreadcrumbs.php +++ /dev/null @@ -1,20 +0,0 @@ -hasBreadcrumbs = $condition; - - return $this; - } - - public function hasBreadcrumbs(): bool - { - return $this->hasBreadcrumbs; - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasColors.php b/vendor/filament/filament/src/Panel/Concerns/HasColors.php deleted file mode 100644 index 7cc49bfe..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasColors.php +++ /dev/null @@ -1,41 +0,0 @@ - | Closure> - */ - protected array $colors = []; - - /** - * @param array | Closure $colors - */ - public function colors(array | Closure $colors): static - { - $this->colors[] = $colors; - - return $this; - } - - /** - * @return array - */ - public function getColors(): array - { - $colors = []; - - foreach ($this->colors as $set) { - $set = $this->evaluate($set); - - foreach ($set as $name => $color) { - $colors[$name] = $color; - } - } - - return $colors; - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasComponents.php b/vendor/filament/filament/src/Panel/Concerns/HasComponents.php deleted file mode 100644 index 80b15077..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasComponents.php +++ /dev/null @@ -1,564 +0,0 @@ - - */ - protected array $livewireComponents = []; - - /** - * @var array - */ - protected array $pages = []; - - /** - * @var array - */ - protected array $pageDirectories = []; - - /** - * @var array - */ - protected array $pageNamespaces = []; - - /** - * @var array - */ - protected array $clusters = []; - - /** - * @var array - */ - protected array $clusterDirectories = []; - - /** - * @var array - */ - protected array $clusterNamespaces = []; - - /** - * @var array, array> - */ - protected array $clusteredComponents = []; - - /** - * @var array - */ - protected array $resources = []; - - /** - * @var array - */ - protected array $resourceDirectories = []; - - /** - * @var array - */ - protected array $resourceNamespaces = []; - - /** - * @var array> - */ - protected array $widgets = []; - - /** - * @var array - */ - protected array $widgetDirectories = []; - - /** - * @var array - */ - protected array $widgetNamespaces = []; - - protected bool | Closure $hasReadOnlyRelationManagersOnResourceViewPagesByDefault = true; - - /** - * @param array $pages - */ - public function pages(array $pages): static - { - $this->pages = [ - ...$this->pages, - ...$pages, - ]; - - foreach ($pages as $page) { - $this->queueLivewireComponentForRegistration($page); - $this->registerToCluster($page); - } - - return $this; - } - - /** - * @param array $resources - */ - public function resources(array $resources): static - { - $this->resources = [ - ...$this->resources, - ...$resources, - ]; - - foreach ($resources as $resource) { - $this->registerToCluster($resource); - } - - return $this; - } - - public function getModelResource(string | Model $model): ?string - { - if ($model instanceof Model) { - $model = $model::class; - } - - foreach ($this->getResources() as $resource) { - if ($model !== $resource::getModel()) { - continue; - } - - return $resource; - } - - return null; - } - - /** - * @param array | WidgetConfiguration> $widgets - */ - public function widgets(array $widgets): static - { - $this->widgets = [ - ...$this->widgets, - ...$widgets, - ]; - - foreach ($widgets as $widget) { - $this->queueLivewireComponentForRegistration($this->normalizeWidgetClass($widget)); - } - - return $this; - } - - /** - * @param class-string | WidgetConfiguration $widget - * @return class-string - */ - protected function normalizeWidgetClass(string | WidgetConfiguration $widget): string - { - if ($widget instanceof WidgetConfiguration) { - return $widget->widget; - } - - return $widget; - } - - public function discoverPages(string $in, string $for): static - { - $this->pageDirectories[] = $in; - $this->pageNamespaces[] = $for; - - $this->discoverComponents( - Page::class, - $this->pages, - directory: $in, - namespace: $for, - ); - - return $this; - } - - /** - * @return array - */ - public function getPageDirectories(): array - { - return [ - ...array_map(fn (string $fileName): string => ((string) str($fileName)->beforeLast('.php')) . DIRECTORY_SEPARATOR . 'Pages', array_keys($this->clusters)), - ...$this->pageDirectories, - ]; - } - - /** - * @return array - */ - public function getPageNamespaces(): array - { - return [ - ...array_map(fn (string $namespace): string => "{$namespace}\Pages", array_values($this->clusters)), - ...$this->pageNamespaces, - ]; - } - - public function discoverClusters(string $in, string $for): static - { - $this->clusterDirectories[] = $in; - $this->clusterNamespaces[] = $for; - - $this->discoverComponents( - Cluster::class, - $this->clusters, - directory: $in, - namespace: $for, - ); - $this->discoverComponents( - Page::class, - $this->pages, - directory: $in, - namespace: $for, - ); - $this->discoverComponents( - Resource::class, - $this->resources, - directory: $in, - namespace: $for, - ); - - return $this; - } - - /** - * @return array - */ - public function getClusterDirectories(): array - { - return $this->clusterDirectories; - } - - /** - * @return array - */ - public function getClusterNamespaces(): array - { - return $this->clusterNamespaces; - } - - public function discoverResources(string $in, string $for): static - { - $this->resourceDirectories[] = $in; - $this->resourceNamespaces[] = $for; - - $this->discoverComponents( - Resource::class, - $this->resources, - directory: $in, - namespace: $for, - ); - - return $this; - } - - /** - * @return array - */ - public function getResourceDirectories(): array - { - return [ - ...array_map(fn (string $fileName): string => ((string) str($fileName)->beforeLast('.php')) . DIRECTORY_SEPARATOR . 'Resources', array_keys($this->clusters)), - ...$this->resourceDirectories, - ]; - } - - /** - * @return array - */ - public function getResourceNamespaces(): array - { - return [ - ...array_map(fn (string $namespace): string => "{$namespace}\Resources", array_values($this->clusters)), - ...$this->resourceNamespaces, - ]; - } - - public function discoverWidgets(string $in, string $for): static - { - $this->widgetDirectories[] = $in; - $this->widgetNamespaces[] = $for; - - $this->discoverComponents( - Widget::class, - $this->widgets, - directory: $in, - namespace: $for, - ); - - return $this; - } - - /** - * @return array - */ - public function getWidgetDirectories(): array - { - return $this->widgetDirectories; - } - - /** - * @return array - */ - public function getWidgetNamespaces(): array - { - return $this->widgetNamespaces; - } - - public function discoverLivewireComponents(string $in, string $for): static - { - $component = []; - - $this->discoverComponents( - Component::class, - $component, - directory: $in, - namespace: $for, - ); - - return $this; - } - - /** - * @return array - */ - public function getPages(): array - { - return array_unique($this->pages); - } - - /** - * @return array - */ - public function getResources(): array - { - return array_unique($this->resources); - } - - /** - * @return array | WidgetConfiguration> - */ - public function getWidgets(): array - { - return collect($this->widgets) - ->unique() - ->sortBy(fn (string | WidgetConfiguration $widget): int => $this->normalizeWidgetClass($widget)::getSort()) - ->all(); - } - - /** - * @param array> $register - */ - protected function discoverComponents(string $baseClass, array &$register, ?string $directory, ?string $namespace): void - { - if (blank($directory) || blank($namespace)) { - return; - } - - $filesystem = app(Filesystem::class); - - if ((! $filesystem->exists($directory)) && (! str($directory)->contains('*'))) { - return; - } - - $namespace = str($namespace); - - foreach ($filesystem->allFiles($directory) as $file) { - $variableNamespace = $namespace->contains('*') ? str_ireplace( - ['\\' . $namespace->before('*'), $namespace->after('*')], - ['', ''], - str_replace([DIRECTORY_SEPARATOR], ['\\'], (string) str($file->getPath())->after(base_path())), - ) : null; - - if (is_string($variableNamespace)) { - $variableNamespace = (string) str($variableNamespace)->before('\\'); - } - - $class = (string) $namespace - ->append('\\', $file->getRelativePathname()) - ->replace('*', $variableNamespace ?? '') - ->replace([DIRECTORY_SEPARATOR, '.php'], ['\\', '']); - - if (! class_exists($class)) { - continue; - } - - if ((new ReflectionClass($class))->isAbstract()) { - continue; - } - - if (is_subclass_of($class, Component::class)) { - $this->queueLivewireComponentForRegistration($class); - } - - if (! is_subclass_of($class, $baseClass)) { - continue; - } - - if ( - method_exists($class, 'isDiscovered') && - (! $class::isDiscovered()) - ) { - continue; - } - - $register[$file->getRealPath()] = $class; - $this->registerToCluster($class); - } - } - - /** - * @param array> $components - */ - public function livewireComponents(array $components): static - { - foreach ($components as $component) { - $this->queueLivewireComponentForRegistration($component); - } - - return $this; - } - - protected function registerLivewireComponents(): void - { - $this->queueLivewireComponentForRegistration(DatabaseNotifications::class); - $this->queueLivewireComponentForRegistration(EditProfile::class); - $this->queueLivewireComponentForRegistration(GlobalSearch::class); - $this->queueLivewireComponentForRegistration(Notifications::class); - - if ($this->hasEmailVerification() && is_subclass_of($emailVerificationRouteAction = $this->getEmailVerificationPromptRouteAction(), Component::class)) { - $this->queueLivewireComponentForRegistration($emailVerificationRouteAction); - } - - if ($this->hasLogin() && is_subclass_of($loginRouteAction = $this->getLoginRouteAction(), Component::class)) { - $this->queueLivewireComponentForRegistration($loginRouteAction); - } - - if ($this->hasPasswordReset()) { - if (is_subclass_of($requestPasswordResetRouteAction = $this->getRequestPasswordResetRouteAction(), Component::class)) { - $this->queueLivewireComponentForRegistration($requestPasswordResetRouteAction); - } - - if (is_subclass_of($resetPasswordRouteAction = $this->getResetPasswordRouteAction(), Component::class)) { - $this->queueLivewireComponentForRegistration($resetPasswordRouteAction); - } - } - - if ($this->hasRegistration() && is_subclass_of($registrationRouteAction = $this->getRegistrationRouteAction(), Component::class)) { - $this->queueLivewireComponentForRegistration($registrationRouteAction); - } - - foreach ($this->getResources() as $resource) { - foreach ($resource::getPages() as $pageRegistration) { - $this->queueLivewireComponentForRegistration($pageRegistration->getPage()); - } - - foreach ($resource::getRelations() as $relation) { - if ($relation instanceof RelationGroup) { - foreach ($relation->getManagers() as $groupedRelation) { - $this->queueLivewireComponentForRegistration($this->normalizeRelationManagerClass($groupedRelation)); - } - - continue; - } - - $this->queueLivewireComponentForRegistration($this->normalizeRelationManagerClass($relation)); - } - - foreach ($resource::getWidgets() as $widget) { - $this->queueLivewireComponentForRegistration($this->normalizeWidgetClass($widget)); - } - } - - foreach ($this->livewireComponents as $componentName => $componentClass) { - Livewire::component($componentName, $componentClass); - } - - $this->livewireComponents = []; - } - - /** - * @param class-string | RelationManagerConfiguration $manager - * @return class-string - */ - protected function normalizeRelationManagerClass(string | RelationManagerConfiguration $manager): string - { - if ($manager instanceof RelationManagerConfiguration) { - return $manager->relationManager; - } - - return $manager; - } - - protected function registerToCluster(string $component): void - { - if (! method_exists($component, 'getCluster')) { - return; - } - - if (is_subclass_of($component, ResourcePage::class)) { - return; - } - - $cluster = $component::getCluster(); - - if (blank($cluster)) { - return; - } - - $this->clusteredComponents[$cluster][] = $component; - } - - protected function queueLivewireComponentForRegistration(string $component): void - { - $componentName = app(ComponentRegistry::class)->getName($component); - - $this->livewireComponents[$componentName] = $component; - } - - public function readOnlyRelationManagersOnResourceViewPagesByDefault(bool | Closure $condition = true): static - { - $this->hasReadOnlyRelationManagersOnResourceViewPagesByDefault = $condition; - - return $this; - } - - public function hasReadOnlyRelationManagersOnResourceViewPagesByDefault(): bool - { - return (bool) $this->evaluate($this->hasReadOnlyRelationManagersOnResourceViewPagesByDefault); - } - - /** - * @return array | class-string> - */ - public function getClusteredComponents(?string $cluster = null): array - { - if (blank($cluster)) { - return $this->clusteredComponents; - } - - return $this->clusteredComponents[$cluster] ?? []; - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasDarkMode.php b/vendor/filament/filament/src/Panel/Concerns/HasDarkMode.php deleted file mode 100644 index 559a3351..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasDarkMode.php +++ /dev/null @@ -1,28 +0,0 @@ -hasDarkMode = $condition; - $this->hasDarkModeForced = $isForced; - - return $this; - } - - public function hasDarkMode(): bool - { - return $this->hasDarkMode; - } - - public function hasDarkModeForced(): bool - { - return $this->hasDarkModeForced; - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasFavicon.php b/vendor/filament/filament/src/Panel/Concerns/HasFavicon.php deleted file mode 100644 index 8efacabe..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasFavicon.php +++ /dev/null @@ -1,22 +0,0 @@ -favicon = $url; - - return $this; - } - - public function getFavicon(): ?string - { - return $this->evaluate($this->favicon); - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasFont.php b/vendor/filament/filament/src/Panel/Concerns/HasFont.php deleted file mode 100644 index ca13658a..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasFont.php +++ /dev/null @@ -1,50 +0,0 @@ -fontFamily = $family; - $this->fontUrl = $url; - - if (filled($provider)) { - $this->fontProvider = $provider; - } - - return $this; - } - - public function getFontFamily(): string - { - return $this->fontFamily ?? 'Inter'; - } - - public function getFontHtml(): Htmlable - { - return app($this->getFontProvider())->getHtml( - $this->getFontFamily(), - $this->getFontUrl(), - ); - } - - public function getFontProvider(): string - { - return $this->fontProvider; - } - - public function getFontUrl(): ?string - { - return $this->fontUrl; - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasGlobalSearch.php b/vendor/filament/filament/src/Panel/Concerns/HasGlobalSearch.php deleted file mode 100644 index c2cd2b01..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasGlobalSearch.php +++ /dev/null @@ -1,61 +0,0 @@ - - */ - protected array $globalSearchKeyBindings = []; - - protected string | bool $globalSearchProvider = true; - - public function globalSearch(string | bool $provider = true): static - { - if (is_string($provider) && (! in_array(GlobalSearchProvider::class, class_implements($provider)))) { - throw new Exception("Global search provider {$provider} does not implement the " . GlobalSearchProvider::class . ' interface.'); - } - - $this->globalSearchProvider = $provider; - - return $this; - } - - /** - * @param array $keyBindings - */ - public function globalSearchKeyBindings(array $keyBindings): static - { - $this->globalSearchKeyBindings = $keyBindings; - - return $this; - } - - /** - * @return array - */ - public function getGlobalSearchKeyBindings(): array - { - return $this->globalSearchKeyBindings; - } - - public function getGlobalSearchProvider(): ?GlobalSearchProvider - { - $provider = $this->globalSearchProvider; - - if ($provider === false) { - return null; - } - - if ($provider === true) { - $provider = DefaultGlobalSearchProvider::class; - } - - return app($provider); - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasIcons.php b/vendor/filament/filament/src/Panel/Concerns/HasIcons.php deleted file mode 100644 index dc69ded3..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasIcons.php +++ /dev/null @@ -1,32 +0,0 @@ - - */ - protected array $icons = []; - - /** - * @param array $icons - */ - public function icons(array $icons): static - { - $this->icons = [ - ...$this->icons, - ...$icons, - ]; - - return $this; - } - - /** - * @return array - */ - public function getIcons(): array - { - return $this->icons; - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasId.php b/vendor/filament/filament/src/Panel/Concerns/HasId.php deleted file mode 100644 index 43e4cc9a..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasId.php +++ /dev/null @@ -1,20 +0,0 @@ -id = $id; - - return $this; - } - - public function getId(): string - { - return $this->id; - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasMaxContentWidth.php b/vendor/filament/filament/src/Panel/Concerns/HasMaxContentWidth.php deleted file mode 100644 index 1530f77d..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasMaxContentWidth.php +++ /dev/null @@ -1,22 +0,0 @@ -maxContentWidth = $maxContentWidth; - - return $this; - } - - public function getMaxContentWidth(): MaxWidth | string | null - { - return $this->maxContentWidth; - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasMiddleware.php b/vendor/filament/filament/src/Panel/Concerns/HasMiddleware.php deleted file mode 100644 index d8aaab8d..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasMiddleware.php +++ /dev/null @@ -1,130 +0,0 @@ - - */ - protected array $middleware = []; - - /** - * @var array - */ - protected array $authMiddleware = []; - - /** - * @var array - */ - protected array $tenantMiddleware = []; - - /** - * @var array - */ - protected array $livewirePersistentMiddleware = []; - - /** - * @param array $middleware - */ - public function middleware(array $middleware, bool $isPersistent = false): static - { - $this->middleware = [ - ...$this->middleware, - ...$middleware, - ]; - - if ($isPersistent) { - $this->persistentMiddleware($middleware); - } - - return $this; - } - - /** - * @param array $middleware - */ - public function authMiddleware(array $middleware, bool $isPersistent = false): static - { - $this->authMiddleware = [ - ...$this->authMiddleware, - ...$middleware, - ]; - - if ($isPersistent) { - $this->persistentMiddleware($middleware); - } - - return $this; - } - - /** - * @param array $middleware - */ - public function tenantMiddleware(array $middleware, bool $isPersistent = false): static - { - $this->tenantMiddleware = [ - ...$this->tenantMiddleware, - ...$middleware, - ]; - - if ($isPersistent) { - $this->persistentMiddleware($middleware); - } - - return $this; - } - - /** - * @param array $middleware - */ - public function persistentMiddleware(array $middleware): static - { - $this->livewirePersistentMiddleware = [ - ...$this->livewirePersistentMiddleware, - ...$middleware, - ]; - - return $this; - } - - /** - * @return array - */ - public function getMiddleware(): array - { - return [ - "panel:{$this->getId()}", - ...$this->middleware, - ]; - } - - /** - * @return array - */ - public function getAuthMiddleware(): array - { - return $this->authMiddleware; - } - - /** - * @return array - */ - public function getTenantMiddleware(): array - { - return [ - IdentifyTenant::class, - ...$this->tenantMiddleware, - ]; - } - - protected function registerLivewirePersistentMiddleware(): void - { - Livewire::addPersistentMiddleware($this->livewirePersistentMiddleware); - - $this->livewirePersistentMiddleware = []; - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasNavigation.php b/vendor/filament/filament/src/Panel/Concerns/HasNavigation.php deleted file mode 100644 index b2cc7108..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasNavigation.php +++ /dev/null @@ -1,195 +0,0 @@ - - */ - protected array $navigationGroups = []; - - /** - * @var array - */ - protected array $navigationItems = []; - - protected Closure | bool $navigationBuilder = true; - - public function navigation(Closure | bool $builder = true): static - { - $this->navigationBuilder = $builder; - - return $this; - } - - /** - * @return array - */ - public function buildNavigation(): array - { - /** @var \Filament\Navigation\NavigationBuilder $builder */ - $builder = app()->call($this->navigationBuilder); - - return $builder->getNavigation(); - } - - public function mountNavigation(): void - { - foreach ($this->getPages() as $page) { - $page::registerNavigationItems(); - } - - foreach ($this->getResources() as $resource) { - $resource::registerNavigationItems(); - } - - $this->isNavigationMounted = true; - } - - /** - * @param array $groups - */ - public function navigationGroups(array $groups): static - { - $this->navigationGroups = [ - ...$this->navigationGroups, - ...$groups, - ]; - - return $this; - } - - /** - * @param array $items - */ - public function navigationItems(array $items): static - { - $this->navigationItems = [ - ...$this->navigationItems, - ...$items, - ]; - - return $this; - } - - public function hasNavigation(): bool - { - return $this->navigationBuilder !== false; - } - - /** - * @return array - */ - public function getNavigation(): array - { - if ($this->navigationBuilder instanceof Closure) { - return $this->buildNavigation(); - } - - if (! $this->isNavigationMounted) { - $this->mountNavigation(); - } - - $groups = collect($this->getNavigationGroups()); - - return collect($this->getNavigationItems()) - ->filter(fn (NavigationItem $item): bool => $item->isVisible()) - ->sortBy(fn (NavigationItem $item): int => $item->getSort()) - ->groupBy(fn (NavigationItem $item): ?string => $item->getGroup()) - ->map(function (Collection $items, ?string $groupIndex) use ($groups): NavigationGroup { - $parentItems = $items->groupBy(fn (NavigationItem $item): ?string => $item->getParentItem()); - - $items = $parentItems->get('') - ->keyBy(fn (NavigationItem $item): string => $item->getLabel()); - - $parentItems->except([''])->each(function (Collection $parentItemItems, string $parentItemLabel) use ($items) { - if (! $items->has($parentItemLabel)) { - return; - } - - $items->get($parentItemLabel)->childItems($parentItemItems); - }); - - if (blank($groupIndex)) { - return NavigationGroup::make()->items($items); - } - - $registeredGroup = $groups - ->first(function (NavigationGroup | string $registeredGroup, string | int $registeredGroupIndex) use ($groupIndex) { - if ($registeredGroupIndex === $groupIndex) { - return true; - } - - if ($registeredGroup === $groupIndex) { - return true; - } - - if (! $registeredGroup instanceof NavigationGroup) { - return false; - } - - return $registeredGroup->getLabel() === $groupIndex; - }); - - if ($registeredGroup instanceof NavigationGroup) { - return $registeredGroup->items($items); - } - - return NavigationGroup::make($registeredGroup ?? $groupIndex) - ->items($items); - }) - ->sortBy(function (NavigationGroup $group, ?string $groupIndex): int { - if (blank($group->getLabel())) { - return -1; - } - - $registeredGroups = $this->getNavigationGroups(); - - $groupsToSearch = $registeredGroups; - - if (Arr::first($registeredGroups) instanceof NavigationGroup) { - $groupsToSearch = [ - ...array_keys($registeredGroups), - ...array_map(fn (NavigationGroup $registeredGroup): string => $registeredGroup->getLabel(), array_values($registeredGroups)), - ]; - } - - $sort = array_search( - $groupIndex, - $groupsToSearch, - ); - - if ($sort === false) { - return count($registeredGroups); - } - - return $sort; - }) - ->all(); - } - - /** - * @return array - */ - public function getNavigationGroups(): array - { - return $this->navigationGroups; - } - - /** - * @return array - */ - public function getNavigationItems(): array - { - return $this->navigationItems; - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasNotifications.php b/vendor/filament/filament/src/Panel/Concerns/HasNotifications.php deleted file mode 100644 index a8686661..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasNotifications.php +++ /dev/null @@ -1,36 +0,0 @@ -hasDatabaseNotifications = $condition; - - return $this; - } - - public function databaseNotificationsPolling(string | Closure | null $interval): static - { - $this->databaseNotificationsPolling = $interval; - - return $this; - } - - public function hasDatabaseNotifications(): bool - { - return (bool) $this->evaluate($this->hasDatabaseNotifications); - } - - public function getDatabaseNotificationsPollingInterval(): ?string - { - return $this->evaluate($this->databaseNotificationsPolling); - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasPlugins.php b/vendor/filament/filament/src/Panel/Concerns/HasPlugins.php deleted file mode 100644 index 26871b8c..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasPlugins.php +++ /dev/null @@ -1,52 +0,0 @@ - - */ - protected array $plugins = []; - - public function plugin(Plugin $plugin): static - { - $plugin->register($this); - $this->plugins[$plugin->getId()] = $plugin; - - return $this; - } - - /** - * @param array $plugins - */ - public function plugins(array $plugins): static - { - foreach ($plugins as $plugin) { - $this->plugin($plugin); - } - - return $this; - } - - /** - * @return array - */ - public function getPlugins(): array - { - return $this->plugins; - } - - public function getPlugin(string $id): Plugin - { - return $this->getPlugins()[$id] ?? throw new Exception("Plugin [{$id}] is not registered for panel [{$this->getId()}]."); - } - - public function hasPlugin(string $id): bool - { - return array_key_exists($id, $this->getPlugins()); - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasRenderHooks.php b/vendor/filament/filament/src/Panel/Concerns/HasRenderHooks.php deleted file mode 100644 index 0a8a5964..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasRenderHooks.php +++ /dev/null @@ -1,41 +0,0 @@ ->> - */ - protected array $renderHooks = []; - - /** - * @param string | array | null $scopes - */ - public function renderHook(string $name, Closure $hook, string | array | null $scopes = null): static - { - if (! is_array($scopes)) { - $scopes = [$scopes]; - } - - foreach ($scopes as $scopeName) { - $this->renderHooks[$name][$scopeName][] = $hook; - } - - return $this; - } - - protected function registerRenderHooks(): void - { - foreach ($this->renderHooks as $hookName => $scopedHooks) { - foreach ($scopedHooks as $scope => $hooks) { - foreach ($hooks as $hook) { - FilamentView::registerRenderHook($hookName, $hook, $scope); - } - } - } - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasRoutes.php b/vendor/filament/filament/src/Panel/Concerns/HasRoutes.php deleted file mode 100644 index 687f5054..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasRoutes.php +++ /dev/null @@ -1,196 +0,0 @@ - - */ - protected array $domains = []; - - protected string $path = ''; - - public function path(string $path): static - { - $this->path = $path; - - return $this; - } - - public function domain(?string $domain): static - { - $this->domains(filled($domain) ? [$domain] : []); - - return $this; - } - - /** - * @param array $domains - */ - public function domains(array $domains): static - { - $this->domains = $domains; - - return $this; - } - - public function homeUrl(string | Closure | null $url): static - { - $this->homeUrl = $url; - - return $this; - } - - public function routes(?Closure $routes): static - { - $this->routes = $routes; - - return $this; - } - - public function authenticatedRoutes(?Closure $routes): static - { - $this->authenticatedRoutes = $routes; - - return $this; - } - - public function tenantRoutes(?Closure $routes): static - { - $this->tenantRoutes = $routes; - - return $this; - } - - public function authenticatedTenantRoutes(?Closure $routes): static - { - $this->authenticatedTenantRoutes = $routes; - - return $this; - } - - public function route(string $name, mixed $parameters = [], bool $absolute = true): string - { - return route($this->generateRouteName($name), $parameters, $absolute); - } - - public function generateRouteName(string $name): string - { - return "filament.{$this->getId()}.{$name}"; - } - - public function getRoutes(): ?Closure - { - return $this->routes; - } - - public function getAuthenticatedRoutes(): ?Closure - { - return $this->authenticatedRoutes; - } - - public function getTenantRoutes(): ?Closure - { - return $this->tenantRoutes; - } - - public function getAuthenticatedTenantRoutes(): ?Closure - { - return $this->authenticatedTenantRoutes; - } - - public function getHomeUrl(): ?string - { - return $this->evaluate($this->homeUrl); - } - - /** - * @return array - */ - public function getDomains(): array - { - return Arr::wrap($this->domains); - } - - public function getPath(): string - { - return $this->path; - } - - public function getUrl(?Model $tenant = null): ?string - { - if (! $this->auth()->check()) { - return $this->hasLogin() ? $this->getLoginUrl() : url($this->getPath()); - } - - $hasTenancy = $this->hasTenancy(); - - if ((! $tenant) && $hasTenancy) { - $tenant = Filament::getUserDefaultTenant($this->auth()->user()); - } - - if ((! $tenant) && $hasTenancy) { - return ($this->hasTenantRegistration() && filament()->getTenantRegistrationPage()::canView()) ? - $this->getTenantRegistrationUrl() : - null; - } - - if ($tenant) { - $originalTenant = Filament::getTenant(); - Filament::setTenant($tenant, isQuiet: true); - - $isNavigationMountedOriginally = $this->isNavigationMounted; - $originalNavigationItems = $this->navigationItems; - $originalNavigationGroups = $this->navigationGroups; - - $this->isNavigationMounted = false; - $this->navigationItems = []; - $this->navigationGroups = []; - - $navigation = $this->getNavigation(); - } - - $navigation = $this->getNavigation(); - - try { - $firstGroup = Arr::first($navigation); - - if (! $firstGroup) { - return url($this->getPath()); - } - - $firstItem = Arr::first($firstGroup->getItems()); - - if (! $firstItem) { - return url($this->getPath()); - } - - return $firstItem->getUrl(); - } finally { - if ($tenant) { - Filament::setTenant($originalTenant, isQuiet: true); - - $this->isNavigationMounted = $isNavigationMountedOriginally; - $this->navigationItems = $originalNavigationItems; - $this->navigationGroups = $originalNavigationGroups; - } - } - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasSidebar.php b/vendor/filament/filament/src/Panel/Concerns/HasSidebar.php deleted file mode 100644 index 0e0e49f4..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasSidebar.php +++ /dev/null @@ -1,76 +0,0 @@ -isSidebarCollapsibleOnDesktop = $condition; - - return $this; - } - - public function sidebarFullyCollapsibleOnDesktop(bool $condition = true): static - { - $this->isSidebarFullyCollapsibleOnDesktop = $condition; - - return $this; - } - - public function collapsibleNavigationGroups(bool $condition = true): static - { - $this->hasCollapsibleNavigationGroups = $condition; - - return $this; - } - - public function sidebarWidth(string $width): static - { - $this->sidebarWidth = $width; - - return $this; - } - - public function collapsedSidebarWidth(string $width): static - { - $this->collapsedSidebarWidth = $width; - - return $this; - } - - public function getSidebarWidth(): string - { - return $this->sidebarWidth; - } - - public function getCollapsedSidebarWidth(): string - { - return $this->collapsedSidebarWidth; - } - - public function isSidebarCollapsibleOnDesktop(): bool - { - return $this->isSidebarCollapsibleOnDesktop; - } - - public function isSidebarFullyCollapsibleOnDesktop(): bool - { - return $this->isSidebarFullyCollapsibleOnDesktop; - } - - public function hasCollapsibleNavigationGroups(): bool - { - return $this->hasCollapsibleNavigationGroups; - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasSpaMode.php b/vendor/filament/filament/src/Panel/Concerns/HasSpaMode.php deleted file mode 100644 index eda55a0f..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasSpaMode.php +++ /dev/null @@ -1,22 +0,0 @@ -hasSpaMode = $condition; - - return $this; - } - - public function hasSpaMode(): bool - { - return (bool) $this->evaluate($this->hasSpaMode); - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasTenancy.php b/vendor/filament/filament/src/Panel/Concerns/HasTenancy.php deleted file mode 100644 index c099a7e1..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasTenancy.php +++ /dev/null @@ -1,260 +0,0 @@ - - */ - protected array $tenantMenuItems = []; - - protected bool $isTenantSubscriptionRequired = false; - - public function requiresTenantSubscription(bool $condition = true): static - { - $this->isTenantSubscriptionRequired = $condition; - - return $this; - } - - /** - * @param array $items - */ - public function tenantMenuItems(array $items): static - { - $this->tenantMenuItems = [ - ...$this->tenantMenuItems, - ...$items, - ]; - - return $this; - } - - public function tenantMenu(bool | Closure $condition = true): static - { - $this->hasTenantMenu = $condition; - - return $this; - } - - public function tenant(?string $model, ?string $slugAttribute = null, ?string $ownershipRelationship = null): static - { - $this->tenantModel = $model; - $this->tenantSlugAttribute = $slugAttribute; - $this->tenantOwnershipRelationshipName = $ownershipRelationship; - - return $this; - } - - public function tenantRoutePrefix(?string $prefix): static - { - $this->tenantRoutePrefix = $prefix; - - return $this; - } - - public function tenantBillingProvider(?BillingProvider $provider): static - { - $this->tenantBillingProvider = $provider; - - return $this; - } - - public function tenantBillingRouteSlug(string $slug): static - { - $this->tenantBillingRouteSlug = $slug; - - return $this; - } - - public function tenantProfile(?string $page): static - { - $this->tenantProfilePage = $page; - - return $this; - } - - public function tenantRegistration(?string $page): static - { - $this->tenantRegistrationPage = $page; - - return $this; - } - - public function hasTenancy(): bool - { - return filled($this->getTenantModel()); - } - - public function isTenantSubscriptionRequired(): bool - { - return $this->isTenantSubscriptionRequired; - } - - public function hasTenantBilling(): bool - { - return filled($this->getTenantBillingProvider()); - } - - public function hasTenantProfile(): bool - { - return filled($this->getTenantProfilePage()); - } - - public function hasTenantRegistration(): bool - { - return filled($this->getTenantRegistrationPage()); - } - - public function hasTenantRoutePrefix(): bool - { - return filled($this->getTenantRoutePrefix()); - } - - public function getTenantRoutePrefix(): ?string - { - return $this->tenantRoutePrefix; - } - - public function getTenantBillingProvider(): ?BillingProvider - { - return $this->tenantBillingProvider; - } - - public function getTenantBillingRouteSlug(): string - { - return Str::start($this->tenantBillingRouteSlug, '/'); - } - - public function getTenantProfilePage(): ?string - { - return $this->tenantProfilePage; - } - - public function getTenantRegistrationPage(): ?string - { - return $this->tenantRegistrationPage; - } - - public function getTenant(string $key): Model - { - $tenantModel = $this->getTenantModel(); - - $record = app($tenantModel) - ->resolveRouteBinding($key, $this->getTenantSlugAttribute()); - - if ($record === null) { - throw (new ModelNotFoundException())->setModel($tenantModel, [$key]); - } - - return $record; - } - - public function getTenantModel(): ?string - { - return $this->tenantModel; - } - - public function getTenantSlugAttribute(): ?string - { - return $this->tenantSlugAttribute; - } - - /** - * @param array $parameters - */ - public function getTenantBillingUrl(Model $tenant, array $parameters = []): ?string - { - if (! $this->hasTenantBilling()) { - return null; - } - - return $this->route('tenant.billing', [ - 'tenant' => $tenant, - ...$parameters, - ]); - } - - /** - * @param array $parameters - */ - public function getTenantProfileUrl(array $parameters = []): ?string - { - if (! $this->hasTenantProfile()) { - return null; - } - - return $this->route('tenant.profile', $parameters); - } - - /** - * @param array $parameters - */ - public function getTenantRegistrationUrl(array $parameters = []): ?string - { - if (! $this->hasTenantRegistration()) { - return null; - } - - return $this->route('tenant.registration', $parameters); - } - - public function hasTenantMenu(): bool - { - return (bool) $this->evaluate($this->hasTenantMenu); - } - - /** - * @return array - */ - public function getTenantMenuItems(): array - { - return collect($this->tenantMenuItems) - ->filter(function (MenuItem $item, string | int $key): bool { - if (in_array($key, ['billing', 'profile', 'register'])) { - return true; - } - - return $item->isVisible(); - }) - ->sort(fn (MenuItem $item): int => $item->getSort()) - ->all(); - } - - public function getTenantOwnershipRelationshipName(): string - { - if (filled($this->tenantOwnershipRelationshipName)) { - return $this->tenantOwnershipRelationshipName; - } - - return (string) str($this->getTenantModel()) - ->classBasename() - ->camel(); - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasTheme.php b/vendor/filament/filament/src/Panel/Concerns/HasTheme.php deleted file mode 100644 index 581e9e43..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasTheme.php +++ /dev/null @@ -1,81 +0,0 @@ - - */ - protected string | array | null $viteTheme = null; - - protected ?string $viteThemeBuildDirectory = null; - - protected ThemeMode $defaultThemeMode = ThemeMode::System; - - /** - * @param string | array $theme - */ - public function viteTheme(string | array $theme, ?string $buildDirectory = null): static - { - $this->viteTheme = $theme; - $this->viteThemeBuildDirectory = $buildDirectory; - - return $this; - } - - public function theme(string | Htmlable | Theme $theme): static - { - $this->theme = $theme; - - return $this; - } - - public function getTheme(): Theme - { - if (filled($this->viteTheme)) { - $this->theme = app(Vite::class)($this->viteTheme, $this->viteThemeBuildDirectory); - } - - if (blank($this->theme)) { - return $this->getDefaultTheme(); - } - - if ($this->theme instanceof Theme) { - return $this->theme; - } - - if ($this->theme instanceof Htmlable) { - return Theme::make('app')->html($this->theme); - } - - $theme = FilamentAsset::getTheme($this->theme); - - return $theme ?? Theme::make('app', path: $this->theme); - } - - public function getDefaultTheme(): Theme - { - return FilamentAsset::getTheme('app'); - } - - public function defaultThemeMode(ThemeMode $mode): static - { - $this->defaultThemeMode = $mode; - - return $this; - } - - public function getDefaultThemeMode(): ThemeMode - { - return $this->defaultThemeMode; - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasTopNavigation.php b/vendor/filament/filament/src/Panel/Concerns/HasTopNavigation.php deleted file mode 100644 index 36dbe222..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasTopNavigation.php +++ /dev/null @@ -1,20 +0,0 @@ -hasTopNavigation = $condition; - - return $this; - } - - public function hasTopNavigation(): bool - { - return $this->hasTopNavigation; - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasTopbar.php b/vendor/filament/filament/src/Panel/Concerns/HasTopbar.php deleted file mode 100644 index 13cef90c..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasTopbar.php +++ /dev/null @@ -1,20 +0,0 @@ -hasTopbar = $condition; - - return $this; - } - - public function hasTopbar(): bool - { - return $this->hasTopbar; - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasUnsavedChangesAlerts.php b/vendor/filament/filament/src/Panel/Concerns/HasUnsavedChangesAlerts.php deleted file mode 100644 index a5b2ee7c..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasUnsavedChangesAlerts.php +++ /dev/null @@ -1,29 +0,0 @@ -hasUnsavedChangesAlerts = $condition; - - return $this; - } - - public function hasUnsavedChangesAlerts(): bool - { - $hasAlerts = (bool) $this->evaluate($this->hasUnsavedChangesAlerts); - - if ($hasAlerts && $this->hasSpaMode()) { - throw new Exception('Unsaved changes alerts are not supported in SPA mode.'); - } - - return $hasAlerts; - } -} diff --git a/vendor/filament/filament/src/Panel/Concerns/HasUserMenu.php b/vendor/filament/filament/src/Panel/Concerns/HasUserMenu.php deleted file mode 100644 index dcdea22d..00000000 --- a/vendor/filament/filament/src/Panel/Concerns/HasUserMenu.php +++ /dev/null @@ -1,37 +0,0 @@ - - */ - protected array $userMenuItems = []; - - /** - * @param array $items - */ - public function userMenuItems(array $items): static - { - $this->userMenuItems = [ - ...$this->userMenuItems, - ...$items, - ]; - - return $this; - } - - /** - * @return array - */ - public function getUserMenuItems(): array - { - return collect($this->userMenuItems) - ->filter(fn (MenuItem $item): bool => $item->isVisible()) - ->sort(fn (MenuItem $item): int => $item->getSort()) - ->all(); - } -} diff --git a/vendor/filament/filament/src/PanelProvider.php b/vendor/filament/filament/src/PanelProvider.php deleted file mode 100644 index d66ab20a..00000000 --- a/vendor/filament/filament/src/PanelProvider.php +++ /dev/null @@ -1,18 +0,0 @@ - $this->panel(Panel::make()), - ); - } -} diff --git a/vendor/filament/filament/src/Resources/Components/Tab.php b/vendor/filament/filament/src/Resources/Components/Tab.php deleted file mode 100644 index 2523defe..00000000 --- a/vendor/filament/filament/src/Resources/Components/Tab.php +++ /dev/null @@ -1,65 +0,0 @@ -label($label); - } - - public static function make(string | Closure | null $label = null): static - { - $static = app(static::class, ['label' => $label]); - $static->configure(); - - return $static; - } - - public function label(string | Closure | null $label): static - { - $this->label = $label; - - return $this; - } - - public function query(Closure $callback): static - { - $this->modifyQueryUsing($callback); - - return $this; - } - - public function modifyQueryUsing(Closure $callback): static - { - $this->modifyQueryUsing = $callback; - - return $this; - } - - public function getLabel(): ?string - { - return $this->evaluate($this->label); - } - - public function modifyQuery(Builder $query): Builder - { - return $this->evaluate($this->modifyQueryUsing, [ - 'query' => $query, - ]) ?? $query; - } -} diff --git a/vendor/filament/filament/src/Resources/Concerns/HasTabs.php b/vendor/filament/filament/src/Resources/Concerns/HasTabs.php deleted file mode 100644 index c1f6b682..00000000 --- a/vendor/filament/filament/src/Resources/Concerns/HasTabs.php +++ /dev/null @@ -1,73 +0,0 @@ - - */ - protected array $cachedTabs; - - protected function loadDefaultActiveTab(): void - { - if (filled($this->activeTab)) { - return; - } - - $this->activeTab = $this->getDefaultActiveTab(); - } - - /** - * @return array - */ - public function getTabs(): array - { - return []; - } - - /** - * @return array - */ - public function getCachedTabs(): array - { - return $this->cachedTabs ??= $this->getTabs(); - } - - public function getDefaultActiveTab(): string | int | null - { - return array_key_first($this->getCachedTabs()); - } - - public function updatedActiveTab(): void - { - $this->resetPage(); - } - - public function generateTabLabel(string $key): string - { - return (string) str($key) - ->replace(['_', '-'], ' ') - ->ucfirst(); - } - - protected function modifyQueryWithActiveTab(Builder $query): Builder - { - if (blank(filled($this->activeTab))) { - return $query; - } - - $tabs = $this->getCachedTabs(); - - if (! array_key_exists($this->activeTab, $tabs)) { - return $query; - } - - return $tabs[$this->activeTab]->modifyQuery($query); - } -} diff --git a/vendor/filament/filament/src/Resources/Concerns/InteractsWithRelationshipTable.php b/vendor/filament/filament/src/Resources/Concerns/InteractsWithRelationshipTable.php deleted file mode 100644 index 4d117a4f..00000000 --- a/vendor/filament/filament/src/Resources/Concerns/InteractsWithRelationshipTable.php +++ /dev/null @@ -1,111 +0,0 @@ -getOwnerRecord()->{static::getRelationshipName()}(); - } - - public static function getRelationshipName(): string - { - return static::$relationship; - } - - protected function makeTable(): Table - { - return $this->makeBaseTable() - ->relationship(fn (): Relation | Builder => $this->getRelationship()) - ->modifyQueryUsing($this->modifyQueryWithActiveTab(...)) - ->queryStringIdentifier(Str::lcfirst(class_basename(static::class))) - ->recordAction(function (Model $record, Table $table): ?string { - foreach (['view', 'edit'] as $action) { - $action = $table->getAction($action); - - if (! $action) { - continue; - } - - $action->record($record); - - if ($action->isHidden()) { - continue; - } - - if ($action->getUrl()) { - continue; - } - - return $action->getName(); - } - - return null; - }) - ->recordUrl(function (Model $record, Table $table): ?string { - foreach (['view', 'edit'] as $action) { - $action = $table->getAction($action); - - if (! $action) { - continue; - } - - $action->record($record); - - if ($action->isHidden()) { - continue; - } - - $url = $action->getUrl(); - - if (! $url) { - continue; - } - - return $url; - } - - return null; - }) - ->authorizeReorder(fn (): bool => $this->canReorder()); - } -} diff --git a/vendor/filament/filament/src/Resources/Pages/Concerns/CanAuthorizeResourceAccess.php b/vendor/filament/filament/src/Resources/Pages/Concerns/CanAuthorizeResourceAccess.php deleted file mode 100644 index e5c1a4de..00000000 --- a/vendor/filament/filament/src/Resources/Pages/Concerns/CanAuthorizeResourceAccess.php +++ /dev/null @@ -1,16 +0,0 @@ - | RelationGroup | RelationManagerConfiguration> - */ - public function getRelationManagers(): array - { - $managers = $this->getResource()::getRelations(); - - return array_filter( - $managers, - function (string | RelationGroup | RelationManagerConfiguration $manager): bool { - if ($manager instanceof RelationGroup) { - return (bool) count($manager->ownerRecord($this->getRecord())->pageClass(static::class)->getManagers()); - } - - return $this->normalizeRelationManagerClass($manager)::canViewForRecord($this->getRecord(), static::class); - }, - ); - } - - /** - * @param class-string | RelationManagerConfiguration $manager - * @return class-string - */ - protected function normalizeRelationManagerClass(string | RelationManagerConfiguration $manager): string - { - if ($manager instanceof RelationManagerConfiguration) { - return $manager->relationManager; - } - - return $manager; - } - - public function renderingHasRelationManagers(): void - { - $managers = $this->getRelationManagers(); - - if (array_key_exists($this->activeRelationManager, $managers)) { - return; - } - - if ($this->hasCombinedRelationManagerTabsWithContent()) { - return; - } - - $this->activeRelationManager = array_key_first($managers); - } - - public function hasCombinedRelationManagerTabsWithContent(): bool - { - return false; - } - - public function getContentTabLabel(): ?string - { - return null; - } -} diff --git a/vendor/filament/filament/src/Resources/Pages/Concerns/HasWizard.php b/vendor/filament/filament/src/Resources/Pages/Concerns/HasWizard.php deleted file mode 100644 index 52e181f5..00000000 --- a/vendor/filament/filament/src/Resources/Pages/Concerns/HasWizard.php +++ /dev/null @@ -1,47 +0,0 @@ -schema([ - Wizard::make($this->getSteps()) - ->startOnStep($this->getStartStep()) - ->cancelAction($this->getCancelFormAction()) - ->submitAction($this->getSubmitFormAction()) - ->skippable($this->hasSkippableSteps()), - ]) - ->columns(null); - } - - /** - * @return array - */ - public function getFormActions(): array - { - return []; - } - - public function getSteps(): array - { - return []; - } - - protected function hasSkippableSteps(): bool - { - return false; - } -} diff --git a/vendor/filament/filament/src/Resources/Pages/Concerns/InteractsWithRecord.php b/vendor/filament/filament/src/Resources/Pages/Concerns/InteractsWithRecord.php deleted file mode 100644 index c1208a34..00000000 --- a/vendor/filament/filament/src/Resources/Pages/Concerns/InteractsWithRecord.php +++ /dev/null @@ -1,131 +0,0 @@ - $this->getRecord()]), 403); - } - - protected function resolveRecord(int | string $key): Model - { - $record = static::getResource()::resolveRecordRouteBinding($key); - - if ($record === null) { - throw (new ModelNotFoundException())->setModel($this->getModel(), [$key]); - } - - return $record; - } - - public function getRecord(): Model - { - return $this->record; - } - - public function getRecordTitle(): string | Htmlable - { - $resource = static::getResource(); - - if (! $resource::hasRecordTitle()) { - return $resource::getTitleCaseModelLabel(); - } - - return $resource::getRecordTitle($this->getRecord()); - } - - /** - * @return array - */ - public function getBreadcrumbs(): array - { - $resource = static::getResource(); - - $breadcrumbs = [ - $resource::getUrl() => $resource::getBreadcrumb(), - ]; - - $record = $this->getRecord(); - - if ($record->exists && $resource::hasRecordTitle()) { - if ($resource::hasPage('view') && $resource::canView($record)) { - $breadcrumbs[ - $resource::getUrl('view', ['record' => $record]) - ] = $this->getRecordTitle(); - } elseif ($resource::hasPage('edit') && $resource::canEdit($record)) { - $breadcrumbs[ - $resource::getUrl('edit', ['record' => $record]) - ] = $this->getRecordTitle(); - } else { - $breadcrumbs[] = $this->getRecordTitle(); - } - } - - $breadcrumbs[] = $this->getBreadcrumb(); - - if (filled($cluster = static::getCluster())) { - return $cluster::unshiftClusterBreadcrumbs($breadcrumbs); - } - - return $breadcrumbs; - } - - protected function afterActionCalled(): void - { - if ($this->getRecord()->exists) { - return; - } - - // Ensure that Livewire does not attempt to dehydrate - // a record that does not exist. - $this->record = null; - } - - /** - * @return array - */ - public function getSubNavigationParameters(): array - { - return [ - 'record' => $this->getRecord(), - ]; - } - - public function getSubNavigation(): array - { - return static::getResource()::getRecordSubNavigation($this); - } - - /** - * @return array - */ - public function getWidgetData(): array - { - return [ - 'record' => $this->getRecord(), - ]; - } - - protected function getMountedActionFormModel(): Model | string | null - { - return $this->getRecord(); - } - - protected function configureAction(Action $action): void - { - $action - ->record($this->getRecord()) - ->recordTitle($this->getRecordTitle()); - } -} diff --git a/vendor/filament/filament/src/Resources/Pages/CreateRecord.php b/vendor/filament/filament/src/Resources/Pages/CreateRecord.php deleted file mode 100644 index 7c7fa838..00000000 --- a/vendor/filament/filament/src/Resources/Pages/CreateRecord.php +++ /dev/null @@ -1,309 +0,0 @@ - | null - */ - public ?array $data = []; - - public ?string $previousUrl = null; - - protected static bool $canCreateAnother = true; - - public function getBreadcrumb(): string - { - return static::$breadcrumb ?? __('filament-panels::resources/pages/create-record.breadcrumb'); - } - - public function mount(): void - { - $this->authorizeAccess(); - - $this->fillForm(); - - $this->previousUrl = url()->previous(); - } - - protected function authorizeAccess(): void - { - abort_unless(static::getResource()::canCreate(), 403); - } - - protected function fillForm(): void - { - $this->callHook('beforeFill'); - - $this->form->fill(); - - $this->callHook('afterFill'); - } - - public function create(bool $another = false): void - { - $this->authorizeAccess(); - - try { - $this->callHook('beforeValidate'); - - $data = $this->form->getState(); - - $this->callHook('afterValidate'); - - $data = $this->mutateFormDataBeforeCreate($data); - - $this->callHook('beforeCreate'); - - $this->record = $this->handleRecordCreation($data); - - $this->form->model($this->getRecord())->saveRelationships(); - - $this->callHook('afterCreate'); - } catch (Halt $exception) { - return; - } - - $this->rememberData(); - - $this->getCreatedNotification()?->send(); - - if ($another) { - // Ensure that the form record is anonymized so that relationships aren't loaded. - $this->form->model($this->getRecord()::class); - $this->record = null; - - $this->fillForm(); - - return; - } - - $redirectUrl = $this->getRedirectUrl(); - - $this->redirect($redirectUrl, navigate: FilamentView::hasSpaMode() && is_app_url($redirectUrl)); - } - - protected function getCreatedNotification(): ?Notification - { - $title = $this->getCreatedNotificationTitle(); - - if (blank($title)) { - return null; - } - - return Notification::make() - ->success() - ->title($title); - } - - protected function getCreatedNotificationTitle(): ?string - { - return $this->getCreatedNotificationMessage() ?? __('filament-panels::resources/pages/create-record.notifications.created.title'); - } - - /** - * @deprecated Use `getCreatedNotificationTitle()` instead. - */ - protected function getCreatedNotificationMessage(): ?string - { - return null; - } - - public function createAnother(): void - { - $this->create(another: true); - } - - /** - * @param array $data - */ - protected function handleRecordCreation(array $data): Model - { - $record = new ($this->getModel())($data); - - if ( - static::getResource()::isScopedToTenant() && - ($tenant = Filament::getTenant()) - ) { - return $this->associateRecordWithTenant($record, $tenant); - } - - $record->save(); - - return $record; - } - - protected function associateRecordWithTenant(Model $record, Model $tenant): Model - { - $relationship = static::getResource()::getTenantRelationship($tenant); - - if ($relationship instanceof HasManyThrough) { - $record->save(); - - return $record; - } - - return $relationship->save($record); - } - - /** - * @param array $data - * @return array - */ - protected function mutateFormDataBeforeCreate(array $data): array - { - return $data; - } - - /** - * @return array - */ - protected function getFormActions(): array - { - return [ - $this->getCreateFormAction(), - ...(static::canCreateAnother() ? [$this->getCreateAnotherFormAction()] : []), - $this->getCancelFormAction(), - ]; - } - - protected function getCreateFormAction(): Action - { - return Action::make('create') - ->label(__('filament-panels::resources/pages/create-record.form.actions.create.label')) - ->submit('create') - ->keyBindings(['mod+s']); - } - - protected function getSubmitFormAction(): Action - { - return $this->getCreateFormAction(); - } - - protected function getCreateAnotherFormAction(): Action - { - return Action::make('createAnother') - ->label(__('filament-panels::resources/pages/create-record.form.actions.create_another.label')) - ->action('createAnother') - ->keyBindings(['mod+shift+s']) - ->color('gray'); - } - - protected function getCancelFormAction(): Action - { - return Action::make('cancel') - ->label(__('filament-panels::resources/pages/create-record.form.actions.cancel.label')) - ->url($this->previousUrl ?? static::getResource()::getUrl()) - ->color('gray'); - } - - public function getTitle(): string | Htmlable - { - if (filled(static::$title)) { - return static::$title; - } - - return __('filament-panels::resources/pages/create-record.title', [ - 'label' => static::getResource()::getTitleCaseModelLabel(), - ]); - } - - public function form(Form $form): Form - { - return $form; - } - - /** - * @return array - */ - protected function getForms(): array - { - return [ - 'form' => $this->form(static::getResource()::form( - $this->makeForm() - ->operation('create') - ->model($this->getModel()) - ->statePath($this->getFormStatePath()) - ->columns($this->hasInlineLabels() ? 1 : 2) - ->inlineLabel($this->hasInlineLabels()), - )), - ]; - } - - protected function getRedirectUrl(): string - { - $resource = static::getResource(); - - if ($resource::hasPage('view') && $resource::canView($this->getRecord())) { - return $resource::getUrl('view', ['record' => $this->getRecord(), ...$this->getRedirectUrlParameters()]); - } - - if ($resource::hasPage('edit') && $resource::canEdit($this->getRecord())) { - return $resource::getUrl('edit', ['record' => $this->getRecord(), ...$this->getRedirectUrlParameters()]); - } - - return $resource::getUrl('index'); - } - - /** - * @return array - */ - protected function getRedirectUrlParameters(): array - { - return []; - } - - protected function getMountedActionFormModel(): Model | string | null - { - return $this->getModel(); - } - - public static function canCreateAnother(): bool - { - return static::$canCreateAnother; - } - - public static function disableCreateAnother(): void - { - static::$canCreateAnother = false; - } - - public function getFormStatePath(): ?string - { - return 'data'; - } - - public function getRecord(): ?Model - { - return $this->record; - } -} diff --git a/vendor/filament/filament/src/Resources/Pages/CreateRecord/Concerns/HasWizard.php b/vendor/filament/filament/src/Resources/Pages/CreateRecord/Concerns/HasWizard.php deleted file mode 100644 index 653a97ad..00000000 --- a/vendor/filament/filament/src/Resources/Pages/CreateRecord/Concerns/HasWizard.php +++ /dev/null @@ -1,10 +0,0 @@ - | null - */ - public ?array $data = []; - - public ?string $previousUrl = null; - - public static function getNavigationIcon(): ?string - { - return static::$navigationIcon - ?? FilamentIcon::resolve('panels::resources.pages.edit-record.navigation-item') - ?? 'heroicon-o-pencil-square'; - } - - public function getBreadcrumb(): string - { - return static::$breadcrumb ?? __('filament-panels::resources/pages/edit-record.breadcrumb'); - } - - public function getContentTabLabel(): ?string - { - return __('filament-panels::resources/pages/edit-record.content.tab.label'); - } - - public function mount(int | string $record): void - { - $this->record = $this->resolveRecord($record); - - $this->authorizeAccess(); - - $this->fillForm(); - - $this->previousUrl = url()->previous(); - } - - protected function authorizeAccess(): void - { - abort_unless(static::getResource()::canEdit($this->getRecord()), 403); - } - - protected function fillForm(): void - { - $data = $this->getRecord()->attributesToArray(); - - /** @internal Read the DocBlock above the following method. */ - $this->fillFormWithDataAndCallHooks($data); - } - - /** - * @internal Never override or call this method. If you completely override `fillForm()`, copy the contents of this method into your override. - * - * @param array $data - */ - protected function fillFormWithDataAndCallHooks(array $data): void - { - $this->callHook('beforeFill'); - - $data = $this->mutateFormDataBeforeFill($data); - - $this->form->fill($data); - - $this->callHook('afterFill'); - } - - /** - * @param array $attributes - */ - protected function refreshFormData(array $attributes): void - { - $this->data = [ - ...$this->data, - ...Arr::only($this->getRecord()->attributesToArray(), $attributes), - ]; - } - - /** - * @param array $data - * @return array - */ - protected function mutateFormDataBeforeFill(array $data): array - { - return $data; - } - - public function save(bool $shouldRedirect = true): void - { - $this->authorizeAccess(); - - try { - $this->callHook('beforeValidate'); - - $data = $this->form->getState(); - - $this->callHook('afterValidate'); - - $data = $this->mutateFormDataBeforeSave($data); - - $this->callHook('beforeSave'); - - $this->handleRecordUpdate($this->getRecord(), $data); - - $this->callHook('afterSave'); - } catch (Halt $exception) { - return; - } - - $this->rememberData(); - - $this->getSavedNotification()?->send(); - - if ($shouldRedirect && ($redirectUrl = $this->getRedirectUrl())) { - $this->redirect($redirectUrl, navigate: FilamentView::hasSpaMode() && is_app_url($redirectUrl)); - } - } - - protected function getSavedNotification(): ?Notification - { - $title = $this->getSavedNotificationTitle(); - - if (blank($title)) { - return null; - } - - return Notification::make() - ->success() - ->title($this->getSavedNotificationTitle()); - } - - protected function getSavedNotificationTitle(): ?string - { - return $this->getSavedNotificationMessage() ?? __('filament-panels::resources/pages/edit-record.notifications.saved.title'); - } - - /** - * @deprecated Use `getSavedNotificationTitle()` instead. - */ - protected function getSavedNotificationMessage(): ?string - { - return null; - } - - /** - * @param array $data - */ - protected function handleRecordUpdate(Model $record, array $data): Model - { - $record->update($data); - - return $record; - } - - /** - * @param array $data - * @return array - */ - protected function mutateFormDataBeforeSave(array $data): array - { - return $data; - } - - protected function configureAction(Action $action): void - { - $this->configureActionRecord($action); - - match (true) { - $action instanceof DeleteAction => $this->configureDeleteAction($action), - $action instanceof ForceDeleteAction => $this->configureForceDeleteAction($action), - $action instanceof ReplicateAction => $this->configureReplicateAction($action), - $action instanceof RestoreAction => $this->configureRestoreAction($action), - $action instanceof ViewAction => $this->configureViewAction($action), - default => null, - }; - } - - protected function configureViewAction(ViewAction $action): void - { - $resource = static::getResource(); - - $action - ->authorize($resource::canView($this->getRecord())) - ->infolist(fn (Infolist $infolist): Infolist => static::getResource()::infolist($infolist->columns(2))) - ->form(fn (Form $form): Form => static::getResource()::form($form)); - - if ($resource::hasPage('view')) { - $action->url(fn (): string => static::getResource()::getUrl('view', ['record' => $this->getRecord()])); - } - } - - protected function configureForceDeleteAction(ForceDeleteAction $action): void - { - $resource = static::getResource(); - - $action - ->authorize($resource::canForceDelete($this->getRecord())) - ->successRedirectUrl($resource::getUrl('index')); - } - - protected function configureReplicateAction(ReplicateAction $action): void - { - $action - ->authorize(static::getResource()::canReplicate($this->getRecord())); - } - - protected function configureRestoreAction(RestoreAction $action): void - { - $action - ->authorize(static::getResource()::canRestore($this->getRecord())); - } - - protected function configureDeleteAction(DeleteAction $action): void - { - $resource = static::getResource(); - - $action - ->authorize($resource::canDelete($this->getRecord())) - ->successRedirectUrl($resource::getUrl('index')); - } - - public function getTitle(): string | Htmlable - { - if (filled(static::$title)) { - return static::$title; - } - - return __('filament-panels::resources/pages/edit-record.title', [ - 'label' => $this->getRecordTitle(), - ]); - } - - /** - * @return array - */ - protected function getFormActions(): array - { - return [ - $this->getSaveFormAction(), - $this->getCancelFormAction(), - ]; - } - - protected function getSaveFormAction(): Action - { - return Action::make('save') - ->label(__('filament-panels::resources/pages/edit-record.form.actions.save.label')) - ->submit('save') - ->keyBindings(['mod+s']); - } - - protected function getSubmitFormAction(): Action - { - return $this->getSaveFormAction(); - } - - protected function getCancelFormAction(): Action - { - return Action::make('cancel') - ->label(__('filament-panels::resources/pages/edit-record.form.actions.cancel.label')) - ->url($this->previousUrl ?? static::getResource()::getUrl()) - ->color('gray'); - } - - public function form(Form $form): Form - { - return $form; - } - - /** - * @return array - */ - protected function getForms(): array - { - return [ - 'form' => $this->form(static::getResource()::form( - $this->makeForm() - ->operation('edit') - ->model($this->getRecord()) - ->statePath($this->getFormStatePath()) - ->columns($this->hasInlineLabels() ? 1 : 2) - ->inlineLabel($this->hasInlineLabels()), - )), - ]; - } - - public function getFormStatePath(): ?string - { - return 'data'; - } - - protected function getRedirectUrl(): ?string - { - return null; - } - - public static function shouldRegisterNavigation(array $parameters = []): bool - { - return parent::shouldRegisterNavigation($parameters) && static::getResource()::canEdit($parameters['record']); - } -} diff --git a/vendor/filament/filament/src/Resources/Pages/EditRecord/Concerns/HasWizard.php b/vendor/filament/filament/src/Resources/Pages/EditRecord/Concerns/HasWizard.php deleted file mode 100644 index 72ac87bb..00000000 --- a/vendor/filament/filament/src/Resources/Pages/EditRecord/Concerns/HasWizard.php +++ /dev/null @@ -1,10 +0,0 @@ - | null - */ - #[Url] - public ?array $tableFilters = null; - - #[Url] - public ?string $tableGrouping = null; - - #[Url] - public ?string $tableGroupingDirection = null; - - /** - * @var ?string - */ - #[Url] - public $tableSearch = ''; - - #[Url] - public ?string $tableSortColumn = null; - - #[Url] - public ?string $tableSortDirection = null; - - #[Url] - public ?string $activeTab = null; - - public function mount(): void - { - $this->authorizeAccess(); - - $this->loadDefaultActiveTab(); - } - - protected function authorizeAccess(): void - { - } - - public function getBreadcrumb(): ?string - { - return static::$breadcrumb ?? __('filament-panels::resources/pages/list-records.breadcrumb'); - } - - public function table(Table $table): Table - { - return static::getResource()::table($table); - } - - public function getTitle(): string | Htmlable - { - return static::$title ?? static::getResource()::getTitleCasePluralModelLabel(); - } - - protected function configureAction(Action $action): void - { - match (true) { - $action instanceof CreateAction => $this->configureCreateAction($action), - default => null, - }; - } - - public function form(Form $form): Form - { - return static::getResource()::form($form); - } - - public function infolist(Infolist $infolist): Infolist - { - return static::getResource()::infolist($infolist); - } - - protected function configureCreateAction(CreateAction | Tables\Actions\CreateAction $action): void - { - $resource = static::getResource(); - - $action - ->authorize($resource::canCreate()) - ->model($this->getModel()) - ->modelLabel($this->getModelLabel() ?? static::getResource()::getModelLabel()) - ->form(fn (Form $form): Form => $this->form($form->columns(2))); - - if (($action instanceof CreateAction) && static::getResource()::isScopedToTenant()) { - $action->relationship(($tenant = Filament::getTenant()) ? fn (): Relation => static::getResource()::getTenantRelationship($tenant) : null); - } - - if ($resource::hasPage('create')) { - $action->url(fn (): string => $resource::getUrl('create')); - } - } - - protected function configureTableAction(Tables\Actions\Action $action): void - { - match (true) { - $action instanceof Tables\Actions\CreateAction => $this->configureCreateAction($action), - $action instanceof Tables\Actions\DeleteAction => $this->configureDeleteAction($action), - $action instanceof Tables\Actions\EditAction => $this->configureEditAction($action), - $action instanceof Tables\Actions\ForceDeleteAction => $this->configureForceDeleteAction($action), - $action instanceof Tables\Actions\ReplicateAction => $this->configureReplicateAction($action), - $action instanceof Tables\Actions\RestoreAction => $this->configureRestoreAction($action), - $action instanceof Tables\Actions\ViewAction => $this->configureViewAction($action), - default => null, - }; - } - - protected function configureDeleteAction(Tables\Actions\DeleteAction $action): void - { - $action - ->authorize(fn (Model $record): bool => static::getResource()::canDelete($record)); - } - - protected function configureEditAction(Tables\Actions\EditAction $action): void - { - $resource = static::getResource(); - - $action - ->authorize(fn (Model $record): bool => $resource::canEdit($record)) - ->form(fn (Form $form): Form => $this->form($form->columns(2))); - - if ($resource::hasPage('edit')) { - $action->url(fn (Model $record): string => $resource::getUrl('edit', ['record' => $record])); - } - } - - protected function configureForceDeleteAction(Tables\Actions\ForceDeleteAction $action): void - { - $action - ->authorize(fn (Model $record): bool => static::getResource()::canForceDelete($record)); - } - - protected function configureReplicateAction(Tables\Actions\ReplicateAction $action): void - { - $action - ->authorize(fn (Model $record): bool => static::getResource()::canReplicate($record)); - } - - protected function configureRestoreAction(Tables\Actions\RestoreAction $action): void - { - $action - ->authorize(fn (Model $record): bool => static::getResource()::canRestore($record)); - } - - protected function configureViewAction(Tables\Actions\ViewAction $action): void - { - $resource = static::getResource(); - - $action - ->authorize(fn (Model $record): bool => $resource::canView($record)) - ->infolist(fn (Infolist $infolist): Infolist => $this->infolist($infolist->columns(2))) - ->form(fn (Form $form): Form => $this->form($form->columns(2))); - - if ($resource::hasPage('view')) { - $action->url(fn (Model $record): string => $resource::getUrl('view', ['record' => $record])); - } - } - - protected function configureTableBulkAction(BulkAction $action): void - { - match (true) { - $action instanceof Tables\Actions\DeleteBulkAction => $this->configureDeleteBulkAction($action), - $action instanceof Tables\Actions\ForceDeleteBulkAction => $this->configureForceDeleteBulkAction($action), - $action instanceof Tables\Actions\RestoreBulkAction => $this->configureRestoreBulkAction($action), - default => null, - }; - } - - protected function configureDeleteBulkAction(Tables\Actions\DeleteBulkAction $action): void - { - $action - ->authorize(static::getResource()::canDeleteAny()); - } - - protected function configureForceDeleteBulkAction(Tables\Actions\ForceDeleteBulkAction $action): void - { - $action - ->authorize(static::getResource()::canForceDeleteAny()); - } - - protected function configureRestoreBulkAction(Tables\Actions\RestoreBulkAction $action): void - { - $action - ->authorize(static::getResource()::canRestoreAny()); - } - - protected function getMountedActionFormModel(): Model | string | null - { - return $this->getModel(); - } - - /** - * @deprecated Override the `table()` method to configure the table. - */ - public function getModelLabel(): ?string - { - return null; - } - - /** - * @deprecated Override the `table()` method to configure the table. - */ - public function getPluralModelLabel(): ?string - { - return null; - } - - protected function makeTable(): Table - { - return $this->makeBaseTable() - ->query(fn (): Builder => $this->getTableQuery()) - ->modifyQueryUsing($this->modifyQueryWithActiveTab(...)) - ->modelLabel($this->getModelLabel() ?? static::getResource()::getModelLabel()) - ->pluralModelLabel($this->getPluralModelLabel() ?? static::getResource()::getPluralModelLabel()) - ->recordAction(function (Model $record, Table $table): ?string { - foreach (['view', 'edit'] as $action) { - $action = $table->getAction($action); - - if (! $action) { - continue; - } - - $action->record($record); - - if ($action->isHidden()) { - continue; - } - - if ($action->getUrl()) { - continue; - } - - return $action->getName(); - } - - return null; - }) - ->recordTitle(fn (Model $record): string => static::getResource()::getRecordTitle($record)) - ->recordUrl($this->getTableRecordUrlUsing() ?? function (Model $record, Table $table): ?string { - foreach (['view', 'edit'] as $action) { - $action = $table->getAction($action); - - if (! $action) { - continue; - } - - $action->record($record); - - if ($action->isHidden()) { - continue; - } - - $url = $action->getUrl(); - - if (! $url) { - continue; - } - - return $url; - } - - $resource = static::getResource(); - - foreach (['view', 'edit'] as $action) { - if (! $resource::hasPage($action)) { - continue; - } - - if (! $resource::{'can' . ucfirst($action)}($record)) { - continue; - } - - return $resource::getUrl($action, ['record' => $record]); - } - - return null; - }) - ->authorizeReorder(static::getResource()::canReorder()); - } - - /** - * @deprecated Override the `table()` method to configure the table. - */ - protected function getTableQuery(): ?Builder - { - return static::getResource()::getEloquentQuery(); - } - - /** - * @return array - */ - protected function getForms(): array - { - return []; - } - - /** - * @return array - */ - public function getSubNavigation(): array - { - if (filled($cluster = static::getCluster())) { - return $this->generateNavigationItems($cluster::getClusteredComponents()); - } - - return []; - } -} diff --git a/vendor/filament/filament/src/Resources/Pages/ListRecords/Tab.php b/vendor/filament/filament/src/Resources/Pages/ListRecords/Tab.php deleted file mode 100644 index 291a2b92..00000000 --- a/vendor/filament/filament/src/Resources/Pages/ListRecords/Tab.php +++ /dev/null @@ -1,12 +0,0 @@ - | null - */ - #[Url] - public ?array $tableFilters = null; - - #[Url] - public ?string $tableGrouping = null; - - #[Url] - public ?string $tableGroupingDirection = null; - - /** - * @var ?string - */ - #[Url] - public $tableSearch = ''; - - #[Url] - public ?string $tableSortColumn = null; - - #[Url] - public ?string $tableSortDirection = null; - - #[Url] - public ?string $activeTab = null; - - public static function getNavigationIcon(): ?string - { - return static::$navigationIcon - ?? FilamentIcon::resolve('panels::resources.pages.manage-related-records.navigation-item') - ?? 'heroicon-o-rectangle-stack'; - } - - public function mount(int | string $record): void - { - $this->record = $this->resolveRecord($record); - - $this->authorizeAccess(); - - $this->previousUrl = url()->previous(); - - $this->loadDefaultActiveTab(); - } - - protected function authorizeAccess(): void - { - abort_unless(static::canAccess(['record' => $this->getRecord()]), 403); - } - - /** - * @param array $parameters - */ - public static function canAccess(array $parameters = []): bool - { - $record = $parameters['record'] ?? null; - - if (! $record) { - return false; - } - - if (static::shouldSkipAuthorization()) { - return true; - } - - $model = $record->{static::getRelationshipName()}()->getQuery()->getModel()::class; - - try { - return authorize('viewAny', $model, static::shouldCheckPolicyExistence())->allowed(); - } catch (AuthorizationException $exception) { - return $exception->toResponse()->allowed(); - } - } - - public function getBreadcrumb(): string - { - return static::$breadcrumb ?? static::getTitle(); - } - - /** - * @return class-string - */ - public function getPageClass(): string - { - return static::class; - } - - public function getOwnerRecord(): Model - { - return $this->getRecord(); - } - - protected function configureAction(Action $action): void - { - $this->configureActionRecord($action); - } - - protected function configureTableAction(Tables\Actions\Action $action): void - { - match (true) { - $action instanceof Tables\Actions\AssociateAction => $this->configureAssociateAction($action), - $action instanceof Tables\Actions\AttachAction => $this->configureAttachAction($action), - $action instanceof Tables\Actions\CreateAction => $this->configureCreateAction($action), - $action instanceof Tables\Actions\DeleteAction => $this->configureDeleteAction($action), - $action instanceof Tables\Actions\DetachAction => $this->configureDetachAction($action), - $action instanceof Tables\Actions\DissociateAction => $this->configureDissociateAction($action), - $action instanceof Tables\Actions\EditAction => $this->configureEditAction($action), - $action instanceof Tables\Actions\ForceDeleteAction => $this->configureForceDeleteAction($action), - $action instanceof Tables\Actions\ReplicateAction => $this->configureReplicateAction($action), - $action instanceof Tables\Actions\RestoreAction => $this->configureRestoreAction($action), - $action instanceof Tables\Actions\ViewAction => $this->configureViewAction($action), - default => null, - }; - } - - protected function configureAssociateAction(Tables\Actions\AssociateAction $action): void - { - $action - ->authorize(static fn (ManageRelatedRecords $livewire): bool => $livewire->canAssociate()); - } - - protected function configureAttachAction(Tables\Actions\AttachAction $action): void - { - $action - ->authorize(static fn (ManageRelatedRecords $livewire): bool => $livewire->canAttach()); - } - - protected function configureCreateAction(Tables\Actions\CreateAction $action): void - { - $action - ->authorize(static fn (ManageRelatedRecords $livewire): bool => $livewire->canCreate()) - ->form(fn (Form $form): Form => $this->form($form->columns(2))); - } - - protected function configureDeleteAction(Tables\Actions\DeleteAction $action): void - { - $action - ->authorize(static fn (ManageRelatedRecords $livewire, Model $record): bool => $livewire->canDelete($record)); - } - - protected function configureDetachAction(Tables\Actions\DetachAction $action): void - { - $action - ->authorize(static fn (ManageRelatedRecords $livewire, Model $record): bool => $livewire->canDetach($record)); - } - - protected function configureDissociateAction(Tables\Actions\DissociateAction $action): void - { - $action - ->authorize(static fn (ManageRelatedRecords $livewire, Model $record): bool => $livewire->canDissociate($record)); - } - - protected function configureEditAction(Tables\Actions\EditAction $action): void - { - $action - ->authorize(static fn (ManageRelatedRecords $livewire, Model $record): bool => $livewire->canEdit($record)) - ->form(fn (Form $form): Form => $this->form($form->columns(2))); - } - - protected function configureForceDeleteAction(Tables\Actions\ForceDeleteAction $action): void - { - $action - ->authorize(static fn (ManageRelatedRecords $livewire, Model $record): bool => $livewire->canForceDelete($record)); - } - - protected function configureReplicateAction(Tables\Actions\ReplicateAction $action): void - { - $action - ->authorize(static fn (ManageRelatedRecords $livewire, Model $record): bool => $livewire->canReplicate($record)); - } - - protected function configureRestoreAction(Tables\Actions\RestoreAction $action): void - { - $action - ->authorize(static fn (ManageRelatedRecords $livewire, Model $record): bool => $livewire->canRestore($record)); - } - - protected function configureViewAction(Tables\Actions\ViewAction $action): void - { - $action - ->authorize(static fn (ManageRelatedRecords $livewire, Model $record): bool => $livewire->canView($record)) - ->infolist(fn (Infolist $infolist): Infolist => $this->infolist($infolist->columns(2))) - ->form(fn (Form $form): Form => $this->form($form->columns(2))); - } - - protected function configureTableBulkAction(BulkAction $action): void - { - match (true) { - $action instanceof Tables\Actions\DeleteBulkAction => $this->configureDeleteBulkAction($action), - $action instanceof Tables\Actions\DetachBulkAction => $this->configureDetachBulkAction($action), - $action instanceof Tables\Actions\DissociateBulkAction => $this->configureDissociateBulkAction($action), - $action instanceof Tables\Actions\ForceDeleteBulkAction => $this->configureForceDeleteBulkAction($action), - $action instanceof Tables\Actions\RestoreBulkAction => $this->configureRestoreBulkAction($action), - default => null, - }; - } - - protected function configureDeleteBulkAction(Tables\Actions\DeleteBulkAction $action): void - { - $action - ->authorize(static fn (ManageRelatedRecords $livewire): bool => $livewire->canDeleteAny()); - } - - protected function configureDetachBulkAction(Tables\Actions\DetachBulkAction $action): void - { - $action - ->authorize(static fn (ManageRelatedRecords $livewire): bool => $livewire->canDetachAny()); - } - - protected function configureDissociateBulkAction(Tables\Actions\DissociateBulkAction $action): void - { - $action - ->authorize(static fn (ManageRelatedRecords $livewire): bool => $livewire->canDissociateAny()); - } - - protected function configureForceDeleteBulkAction(Tables\Actions\ForceDeleteBulkAction $action): void - { - $action - ->authorize(static fn (ManageRelatedRecords $livewire): bool => $livewire->canForceDeleteAny()); - } - - protected function configureRestoreBulkAction(Tables\Actions\RestoreBulkAction $action): void - { - $action - ->authorize(static fn (ManageRelatedRecords $livewire): bool => $livewire->canRestoreAny()); - } - - protected function can(string $action, ?Model $record = null): bool - { - if (static::shouldSkipAuthorization()) { - return true; - } - - $model = $this->getTable()->getModel(); - - try { - return authorize($action, $record ?? $model, static::shouldCheckPolicyExistence())->allowed(); - } catch (AuthorizationException $exception) { - return $exception->toResponse()->allowed(); - } - } - - public function form(Form $form): Form - { - return $form; - } - - public function infolist(Infolist $infolist): Infolist - { - return $infolist; - } - - protected function canAssociate(): bool - { - return $this->can('associate'); - } - - protected function canAttach(): bool - { - return $this->can('attach'); - } - - protected function canCreate(): bool - { - return $this->can('create'); - } - - protected function canDelete(Model $record): bool - { - return $this->can('delete', $record); - } - - protected function canDeleteAny(): bool - { - return $this->can('deleteAny'); - } - - protected function canDetach(Model $record): bool - { - return $this->can('detach', $record); - } - - protected function canDetachAny(): bool - { - return $this->can('detachAny'); - } - - protected function canDissociate(Model $record): bool - { - return $this->can('dissociate', $record); - } - - protected function canDissociateAny(): bool - { - return $this->can('dissociateAny'); - } - - protected function canEdit(Model $record): bool - { - return $this->can('update', $record); - } - - protected function canForceDelete(Model $record): bool - { - return $this->can('forceDelete', $record); - } - - protected function canForceDeleteAny(): bool - { - return $this->can('forceDeleteAny'); - } - - protected function canReorder(): bool - { - return $this->can('reorder'); - } - - protected function canReplicate(Model $record): bool - { - return $this->can('replicate', $record); - } - - protected function canRestore(Model $record): bool - { - return $this->can('restore', $record); - } - - protected function canRestoreAny(): bool - { - return $this->can('restoreAny'); - } - - protected function canViewAny(): bool - { - return $this->can('viewAny'); - } - - protected function canView(Model $record): bool - { - return $this->can('view', $record); - } - - /** - * @return array | RelationGroup | RelationManagerConfiguration> - */ - public function getRelationManagers(): array - { - return []; - } - - /** - * @return array - */ - protected function getForms(): array - { - return []; - } -} diff --git a/vendor/filament/filament/src/Resources/Pages/Page.php b/vendor/filament/filament/src/Resources/Pages/Page.php deleted file mode 100644 index 592bb413..00000000 --- a/vendor/filament/filament/src/Resources/Pages/Page.php +++ /dev/null @@ -1,191 +0,0 @@ - $urlParameters - */ - public static function getNavigationItems(array $urlParameters = []): array - { - return [ - NavigationItem::make(static::getNavigationLabel()) - ->group(static::getNavigationGroup()) - ->parentItem(static::getNavigationParentItem()) - ->icon(static::getNavigationIcon()) - ->activeIcon(static::getActiveNavigationIcon()) - ->isActiveWhen(fn (): bool => request()->routeIs(static::getRouteName())) - ->sort(static::getNavigationSort()) - ->badge(static::getNavigationBadge(), color: static::getNavigationBadgeColor()) - ->url(static::getNavigationUrl($urlParameters)), - ]; - } - - /** - * @param array $parameters - */ - public static function getNavigationUrl(array $parameters = []): string - { - return static::getUrl($parameters); - } - - /** - * @param array $parameters - */ - public static function getUrl(array $parameters = [], bool $isAbsolute = true, ?string $panel = null, ?Model $tenant = null): string - { - return static::getResource()::getUrl(static::getResourcePageName(), $parameters, $isAbsolute, $panel, $tenant); - } - - public static function getResourcePageName(): string - { - foreach (static::getResource()::getPages() as $pageName => $pageRegistration) { - if ($pageRegistration->getPage() !== static::class) { - continue; - } - - return $pageName; - } - - throw new Exception('Page [' . static::class . '] is not registered to the resource [' . static::getResource() . '].'); - } - - public static function route(string $path): PageRegistration - { - return new PageRegistration( - page: static::class, - route: fn (Panel $panel): Route => RouteFacade::get($path, static::class) - ->middleware(static::getRouteMiddleware($panel)) - ->withoutMiddleware(static::getWithoutRouteMiddleware($panel)), - ); - } - - public static function getEmailVerifiedMiddleware(Panel $panel): string - { - return static::getResource()::getEmailVerifiedMiddleware($panel); - } - - public static function isEmailVerificationRequired(Panel $panel): bool - { - return static::getResource()::isEmailVerificationRequired($panel); - } - - public static function getTenantSubscribedMiddleware(Panel $panel): string - { - return static::getResource()::getTenantSubscribedMiddleware($panel); - } - - public static function isTenantSubscriptionRequired(Panel $panel): bool - { - return static::getResource()::isTenantSubscriptionRequired($panel); - } - - public function getBreadcrumb(): ?string - { - return static::$breadcrumb ?? static::getTitle(); - } - - /** - * @return array - */ - public function getBreadcrumbs(): array - { - $resource = static::getResource(); - - $breadcrumbs = [ - $resource::getUrl() => $resource::getBreadcrumb(), - ...(filled($breadcrumb = $this->getBreadcrumb()) ? [$breadcrumb] : []), - ]; - - if (filled($cluster = static::getCluster())) { - return $cluster::unshiftClusterBreadcrumbs($breadcrumbs); - } - - return $breadcrumbs; - } - - /** - * @param array $parameters - */ - public static function shouldRegisterNavigation(array $parameters = []): bool - { - return parent::shouldRegisterNavigation(); - } - - /** - * @param array $parameters - */ - public static function canAccess(array $parameters = []): bool - { - return parent::canAccess(); - } - - public function getModel(): string - { - return static::getResource()::getModel(); - } - - /** - * @return class-string - */ - public static function getResource(): string - { - return static::$resource; - } - - /** - * @return array - */ - public function getRenderHookScopes(): array - { - return [ - ...parent::getRenderHookScopes(), - static::getResource(), - ]; - } - - public function getSubNavigationPosition(): SubNavigationPosition - { - return static::getResource()::getSubNavigationPosition(); - } - - /** - * @return class-string | null - */ - public static function getCluster(): ?string - { - return static::getResource()::getCluster(); - } - - public function getSubNavigation(): array - { - return []; - } -} diff --git a/vendor/filament/filament/src/Resources/Pages/PageRegistration.php b/vendor/filament/filament/src/Resources/Pages/PageRegistration.php deleted file mode 100644 index 935c9633..00000000 --- a/vendor/filament/filament/src/Resources/Pages/PageRegistration.php +++ /dev/null @@ -1,26 +0,0 @@ -route)($panel); - } - - public function getPage(): string - { - return $this->page; - } -} diff --git a/vendor/filament/filament/src/Resources/Pages/ViewRecord.php b/vendor/filament/filament/src/Resources/Pages/ViewRecord.php deleted file mode 100644 index b086ee74..00000000 --- a/vendor/filament/filament/src/Resources/Pages/ViewRecord.php +++ /dev/null @@ -1,234 +0,0 @@ - | null - */ - public ?array $data = []; - - public static function getNavigationIcon(): ?string - { - return static::$navigationIcon - ?? FilamentIcon::resolve('panels::resources.pages.view-record.navigation-item') - ?? 'heroicon-o-eye'; - } - - public function getBreadcrumb(): string - { - return static::$breadcrumb ?? __('filament-panels::resources/pages/view-record.breadcrumb'); - } - - public function getContentTabLabel(): ?string - { - return __('filament-panels::resources/pages/view-record.content.tab.label'); - } - - public function mount(int | string $record): void - { - $this->record = $this->resolveRecord($record); - - $this->authorizeAccess(); - - if (! $this->hasInfolist()) { - $this->fillForm(); - } - } - - protected function authorizeAccess(): void - { - abort_unless(static::getResource()::canView($this->getRecord()), 403); - } - - protected function hasInfolist(): bool - { - return (bool) count($this->getInfolist('infolist')->getComponents()); - } - - protected function fillForm(): void - { - $data = $this->getRecord()->attributesToArray(); - - /** @internal Read the DocBlock above the following method. */ - $this->fillFormWithDataAndCallHooks($data); - } - - /** - * @internal Never override or call this method. If you completely override `fillForm()`, copy the contents of this method into your override. - * - * @param array $data - */ - protected function fillFormWithDataAndCallHooks(array $data): void - { - $this->callHook('beforeFill'); - - $data = $this->mutateFormDataBeforeFill($data); - - $this->form->fill($data); - - $this->callHook('afterFill'); - } - - /** - * @param array $attributes - */ - protected function refreshFormData(array $attributes): void - { - $this->data = [ - ...$this->data, - ...Arr::only($this->getRecord()->attributesToArray(), $attributes), - ]; - } - - /** - * @param array $data - * @return array - */ - protected function mutateFormDataBeforeFill(array $data): array - { - return $data; - } - - protected function configureAction(Action $action): void - { - $this->configureActionRecord($action); - - match (true) { - $action instanceof DeleteAction => $this->configureDeleteAction($action), - $action instanceof EditAction => $this->configureEditAction($action), - $action instanceof ForceDeleteAction => $this->configureForceDeleteAction($action), - $action instanceof ReplicateAction => $this->configureReplicateAction($action), - $action instanceof RestoreAction => $this->configureRestoreAction($action), - default => null, - }; - } - - protected function configureEditAction(EditAction $action): void - { - $resource = static::getResource(); - - $action - ->authorize($resource::canEdit($this->getRecord())) - ->form(fn (Form $form): Form => static::getResource()::form($form)); - - if ($resource::hasPage('edit')) { - $action->url(fn (): string => static::getResource()::getUrl('edit', ['record' => $this->getRecord()])); - } - } - - protected function configureForceDeleteAction(ForceDeleteAction $action): void - { - $resource = static::getResource(); - - $action - ->authorize($resource::canForceDelete($this->getRecord())) - ->successRedirectUrl($resource::getUrl('index')); - } - - protected function configureReplicateAction(ReplicateAction $action): void - { - $action - ->authorize(static::getResource()::canReplicate($this->getRecord())); - } - - protected function configureRestoreAction(RestoreAction $action): void - { - $action - ->authorize(static::getResource()::canRestore($this->getRecord())); - } - - protected function configureDeleteAction(DeleteAction $action): void - { - $resource = static::getResource(); - - $action - ->authorize($resource::canDelete($this->getRecord())) - ->successRedirectUrl($resource::getUrl('index')); - } - - public function getTitle(): string | Htmlable - { - if (filled(static::$title)) { - return static::$title; - } - - return __('filament-panels::resources/pages/view-record.title', [ - 'label' => $this->getRecordTitle(), - ]); - } - - public function form(Form $form): Form - { - return $form; - } - - /** - * @return array - */ - protected function getForms(): array - { - return [ - 'form' => $this->form(static::getResource()::form( - $this->makeForm() - ->operation('view') - ->disabled() - ->model($this->getRecord()) - ->statePath($this->getFormStatePath()) - ->columns($this->hasInlineLabels() ? 1 : 2) - ->inlineLabel($this->hasInlineLabels()), - )), - ]; - } - - public function getFormStatePath(): ?string - { - return 'data'; - } - - public function infolist(Infolist $infolist): Infolist - { - return static::getResource()::infolist($infolist); - } - - protected function makeInfolist(): Infolist - { - return parent::makeInfolist() - ->record($this->getRecord()) - ->columns($this->hasInlineLabels() ? 1 : 2) - ->inlineLabel($this->hasInlineLabels()); - } - - public static function shouldRegisterNavigation(array $parameters = []): bool - { - return parent::shouldRegisterNavigation($parameters) && static::getResource()::canView($parameters['record']); - } -} diff --git a/vendor/filament/filament/src/Resources/RelationManagers/RelationGroup.php b/vendor/filament/filament/src/Resources/RelationManagers/RelationGroup.php deleted file mode 100644 index b47b0559..00000000 --- a/vendor/filament/filament/src/Resources/RelationManagers/RelationGroup.php +++ /dev/null @@ -1,168 +0,0 @@ - | RelationManagerConfiguration> $managers - */ - public function __construct( - protected string | Closure $label, - protected array | Closure $managers, - ) { - } - - /** - * @param array | RelationManagerConfiguration> $managers - */ - public static function make(string | Closure $label, array | Closure $managers): static - { - $static = app(static::class, ['label' => $label, 'managers' => $managers]); - $static->configure(); - - return $static; - } - - public function ownerRecord(?Model $record): static - { - $this->ownerRecord = $record; - - return $this; - } - - public function pageClass(?string $class): static - { - $this->pageClass = $class; - - return $this; - } - - public function badge(string | Closure | null $badge): static - { - $this->badge = $badge; - - return $this; - } - - public function badgeColor(string | Closure | null $color): static - { - $this->badgeColor = $color; - - return $this; - } - - public function badgeTooltip(string | Closure | null $tooltip): static - { - $this->badgeTooltip = $tooltip; - - return $this; - } - - public function getLabel(): string - { - return $this->evaluate($this->label); - } - - /** - * @return array | RelationManagerConfiguration> - */ - public function getManagers(): array - { - $ownerRecord = $this->getOwnerRecord(); - $pageClass = $this->getPageClass(); - - if (! ($ownerRecord && $pageClass)) { - return $this->managers; - } - - return array_filter( - $this->managers, - fn (string | RelationManagerConfiguration $manager): bool => $this->normalizeRelationManagerClass($manager)::canViewForRecord($ownerRecord, $pageClass), - ); - } - - /** - * @param class-string | RelationManagerConfiguration $manager - * @return class-string - */ - protected function normalizeRelationManagerClass(string | RelationManagerConfiguration $manager): string - { - if ($manager instanceof RelationManagerConfiguration) { - return $manager->relationManager; - } - - return $manager; - } - - public function getBadge(): ?string - { - return $this->evaluate($this->badge); - } - - public function getBadgeColor(): ?string - { - return $this->evaluate($this->badgeColor); - } - - public function getBadgeTooltip(): ?string - { - return $this->evaluate($this->badgeTooltip); - } - - public function getOwnerRecord(): ?Model - { - return $this->ownerRecord; - } - - public function getPageClass(): ?string - { - return $this->pageClass; - } - - /** - * @return array - */ - protected function resolveDefaultClosureDependencyForEvaluationByName(string $parameterName): array - { - return match ($parameterName) { - 'ownerRecord' => [$this->getOwnerRecord()], - 'pageClass' => [$this->getPageClass()], - default => parent::resolveDefaultClosureDependencyForEvaluationByName($parameterName), - }; - } - - /** - * @return array - */ - protected function resolveDefaultClosureDependencyForEvaluationByType(string $parameterType): array - { - $ownerRecord = $this->getOwnerRecord(); - - if (! $ownerRecord) { - return parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType); - } - - return match ($parameterType) { - Model::class, $ownerRecord::class => [$ownerRecord], - default => parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType), - }; - } -} diff --git a/vendor/filament/filament/src/Resources/RelationManagers/RelationManager.php b/vendor/filament/filament/src/Resources/RelationManagers/RelationManager.php deleted file mode 100644 index 8f463aec..00000000 --- a/vendor/filament/filament/src/Resources/RelationManagers/RelationManager.php +++ /dev/null @@ -1,542 +0,0 @@ -loadDefaultActiveTab(); - } - - /** - * @return array - */ - protected function getForms(): array - { - return []; - } - - /** - * @param array $properties - */ - public static function make(array $properties = []): RelationManagerConfiguration - { - return app(RelationManagerConfiguration::class, ['relationManager' => static::class, 'properties' => $properties]); - } - - /** - * @return array - */ - public function getRenderHookScopes(): array - { - return [ - static::class, - $this->getPageClass(), - ]; - } - - public function placeholder(): View - { - return view('filament::components.loading-section'); - } - - public function render(): View - { - return view(static::$view, $this->getViewData()); - } - - /** - * @return array - */ - protected function getViewData(): array - { - return []; - } - - public static function getIcon(Model $ownerRecord, string $pageClass): ?string - { - return static::$icon; - } - - public static function getIconPosition(Model $ownerRecord, string $pageClass): IconPosition - { - return static::$iconPosition; - } - - public static function getBadge(Model $ownerRecord, string $pageClass): ?string - { - return static::$badge; - } - - public static function getBadgeColor(Model $ownerRecord, string $pageClass): ?string - { - return static::$badgeColor; - } - - public static function getBadgeTooltip(Model $ownerRecord, string $pageClass): ?string - { - return static::$badgeTooltip; - } - - public static function getTitle(Model $ownerRecord, string $pageClass): string - { - return static::$title ?? (string) str(static::getRelationshipName()) - ->kebab() - ->replace('-', ' ') - ->headline(); - } - - /** - * @return class-string - */ - public function getPageClass(): string - { - return $this->pageClass; - } - - public function getOwnerRecord(): Model - { - return $this->ownerRecord; - } - - protected function configureTableAction(Tables\Actions\Action $action): void - { - match (true) { - $action instanceof Tables\Actions\AssociateAction => $this->configureAssociateAction($action), - $action instanceof Tables\Actions\AttachAction => $this->configureAttachAction($action), - $action instanceof Tables\Actions\CreateAction => $this->configureCreateAction($action), - $action instanceof Tables\Actions\DeleteAction => $this->configureDeleteAction($action), - $action instanceof Tables\Actions\DetachAction => $this->configureDetachAction($action), - $action instanceof Tables\Actions\DissociateAction => $this->configureDissociateAction($action), - $action instanceof Tables\Actions\EditAction => $this->configureEditAction($action), - $action instanceof Tables\Actions\ForceDeleteAction => $this->configureForceDeleteAction($action), - $action instanceof Tables\Actions\ReplicateAction => $this->configureReplicateAction($action), - $action instanceof Tables\Actions\RestoreAction => $this->configureRestoreAction($action), - $action instanceof Tables\Actions\ViewAction => $this->configureViewAction($action), - default => null, - }; - } - - protected function configureAssociateAction(Tables\Actions\AssociateAction $action): void - { - $action - ->authorize(static fn (RelationManager $livewire): bool => (! $livewire->isReadOnly()) && $livewire->canAssociate()); - } - - protected function configureAttachAction(Tables\Actions\AttachAction $action): void - { - $action - ->authorize(static fn (RelationManager $livewire): bool => (! $livewire->isReadOnly()) && $livewire->canAttach()); - } - - protected function configureCreateAction(Tables\Actions\CreateAction $action): void - { - $action - ->authorize(static fn (RelationManager $livewire): bool => (! $livewire->isReadOnly()) && $livewire->canCreate()) - ->form(fn (Form $form): Form => $this->form($form->columns(2))); - } - - protected function configureDeleteAction(Tables\Actions\DeleteAction $action): void - { - $action - ->authorize(static fn (RelationManager $livewire, Model $record): bool => (! $livewire->isReadOnly()) && $livewire->canDelete($record)); - } - - protected function configureDetachAction(Tables\Actions\DetachAction $action): void - { - $action - ->authorize(static fn (RelationManager $livewire, Model $record): bool => (! $livewire->isReadOnly()) && $livewire->canDetach($record)); - } - - protected function configureDissociateAction(Tables\Actions\DissociateAction $action): void - { - $action - ->authorize(static fn (RelationManager $livewire, Model $record): bool => (! $livewire->isReadOnly()) && $livewire->canDissociate($record)); - } - - protected function configureEditAction(Tables\Actions\EditAction $action): void - { - $action - ->authorize(static fn (RelationManager $livewire, Model $record): bool => (! $livewire->isReadOnly()) && $livewire->canEdit($record)) - ->form(fn (Form $form): Form => $this->form($form->columns(2))); - } - - protected function configureForceDeleteAction(Tables\Actions\ForceDeleteAction $action): void - { - $action - ->authorize(static fn (RelationManager $livewire, Model $record): bool => (! $livewire->isReadOnly()) && $livewire->canForceDelete($record)); - } - - protected function configureReplicateAction(Tables\Actions\ReplicateAction $action): void - { - $action - ->authorize(static fn (RelationManager $livewire, Model $record): bool => (! $livewire->isReadOnly()) && $livewire->canReplicate($record)); - } - - protected function configureRestoreAction(Tables\Actions\RestoreAction $action): void - { - $action - ->authorize(static fn (RelationManager $livewire, Model $record): bool => (! $livewire->isReadOnly()) && $livewire->canRestore($record)); - } - - protected function configureViewAction(Tables\Actions\ViewAction $action): void - { - $action - ->authorize(static fn (RelationManager $livewire, Model $record): bool => $livewire->canView($record)) - ->infolist(fn (Infolist $infolist): Infolist => $this->infolist($infolist->columns(2))) - ->form(fn (Form $form): Form => $this->form($form->columns(2))); - } - - protected function configureTableBulkAction(BulkAction $action): void - { - match (true) { - $action instanceof Tables\Actions\DeleteBulkAction => $this->configureDeleteBulkAction($action), - $action instanceof Tables\Actions\DetachBulkAction => $this->configureDetachBulkAction($action), - $action instanceof Tables\Actions\DissociateBulkAction => $this->configureDissociateBulkAction($action), - $action instanceof Tables\Actions\ForceDeleteBulkAction => $this->configureForceDeleteBulkAction($action), - $action instanceof Tables\Actions\RestoreBulkAction => $this->configureRestoreBulkAction($action), - default => null, - }; - } - - protected function configureDeleteBulkAction(Tables\Actions\DeleteBulkAction $action): void - { - $action - ->authorize(static fn (RelationManager $livewire): bool => (! $livewire->isReadOnly()) && $livewire->canDeleteAny()); - } - - protected function configureDetachBulkAction(Tables\Actions\DetachBulkAction $action): void - { - $action - ->authorize(static fn (RelationManager $livewire): bool => (! $livewire->isReadOnly()) && $livewire->canDetachAny()); - } - - protected function configureDissociateBulkAction(Tables\Actions\DissociateBulkAction $action): void - { - $action - ->authorize(static fn (RelationManager $livewire): bool => (! $livewire->isReadOnly()) && $livewire->canDissociateAny()); - } - - protected function configureForceDeleteBulkAction(Tables\Actions\ForceDeleteBulkAction $action): void - { - $action - ->authorize(static fn (RelationManager $livewire): bool => (! $livewire->isReadOnly()) && $livewire->canForceDeleteAny()); - } - - protected function configureRestoreBulkAction(Tables\Actions\RestoreBulkAction $action): void - { - $action - ->authorize(static fn (RelationManager $livewire): bool => (! $livewire->isReadOnly()) && $livewire->canRestoreAny()); - } - - protected function can(string $action, ?Model $record = null): bool - { - if (static::shouldSkipAuthorization()) { - return true; - } - - $model = $this->getTable()->getModel(); - - try { - return authorize($action, $record ?? $model, static::shouldCheckPolicyExistence())->allowed(); - } catch (AuthorizationException $exception) { - return $exception->toResponse()->allowed(); - } - } - - public function form(Form $form): Form - { - return $form; - } - - public function infolist(Infolist $infolist): Infolist - { - return $infolist; - } - - public function isReadOnly(): bool - { - if (blank($this->getPageClass())) { - return false; - } - - $panel = Filament::getCurrentPanel(); - - if (! $panel) { - return false; - } - - if (! $panel->hasReadOnlyRelationManagersOnResourceViewPagesByDefault()) { - return false; - } - - return is_subclass_of($this->getPageClass(), ViewRecord::class); - } - - protected function canAssociate(): bool - { - return $this->can('associate'); - } - - protected function canAttach(): bool - { - return $this->can('attach'); - } - - protected function canCreate(): bool - { - return $this->can('create'); - } - - protected function canDelete(Model $record): bool - { - return $this->can('delete', $record); - } - - protected function canDeleteAny(): bool - { - return $this->can('deleteAny'); - } - - protected function canDetach(Model $record): bool - { - return $this->can('detach', $record); - } - - protected function canDetachAny(): bool - { - return $this->can('detachAny'); - } - - protected function canDissociate(Model $record): bool - { - return $this->can('dissociate', $record); - } - - protected function canDissociateAny(): bool - { - return $this->can('dissociateAny'); - } - - protected function canEdit(Model $record): bool - { - return $this->can('update', $record); - } - - protected function canForceDelete(Model $record): bool - { - return $this->can('forceDelete', $record); - } - - protected function canForceDeleteAny(): bool - { - return $this->can('forceDeleteAny'); - } - - protected function canReorder(): bool - { - return $this->can('reorder'); - } - - protected function canReplicate(Model $record): bool - { - return $this->can('replicate', $record); - } - - protected function canRestore(Model $record): bool - { - return $this->can('restore', $record); - } - - protected function canRestoreAny(): bool - { - return $this->can('restoreAny'); - } - - protected function canView(Model $record): bool - { - return $this->can('view', $record); - } - - /** - * @deprecated Override the `table()` method to configure the table. - */ - public static function getRecordTitleAttribute(): ?string - { - return static::$recordTitleAttribute; - } - - /** - * @deprecated Override the `table()` method to configure the table. - */ - protected static function getRecordLabel(): ?string - { - return static::$label; - } - - /** - * @deprecated Override the `table()` method to configure the table. - */ - protected static function getModelLabel(): ?string - { - return static::$modelLabel ?? static::getRecordLabel(); - } - - /** - * @deprecated Override the `table()` method to configure the table. - */ - protected static function getPluralRecordLabel(): ?string - { - return static::$pluralLabel; - } - - /** - * @deprecated Override the `table()` method to configure the table. - */ - protected static function getPluralModelLabel(): ?string - { - return static::$pluralModelLabel ?? static::getPluralRecordLabel(); - } - - /** - * @deprecated Override the `table()` method to configure the table. - */ - public function getInverseRelationshipName(): ?string - { - return static::$inverseRelationship; - } - - public static function canViewForRecord(Model $ownerRecord, string $pageClass): bool - { - if (static::shouldSkipAuthorization()) { - return true; - } - - $model = $ownerRecord->{static::getRelationshipName()}()->getQuery()->getModel()::class; - - try { - return authorize('viewAny', $model, static::shouldCheckPolicyExistence())->allowed(); - } catch (AuthorizationException $exception) { - return $exception->toResponse()->allowed(); - } - } - - protected function makeTable(): Table - { - return $this->makeBaseRelationshipTable() - ->query($this->getTableQuery()) - ->inverseRelationship(static::getInverseRelationshipName()) - ->modelLabel(static::getModelLabel()) - ->pluralModelLabel(static::getPluralModelLabel()) - ->recordTitleAttribute(static::getRecordTitleAttribute()) - ->heading($this->getTableHeading() ?? static::getTitle($this->getOwnerRecord(), $this->getPageClass())) - ->when( - $this->getTableRecordUrlUsing(), - fn (Table $table, ?Closure $using) => $table->recordUrl($using), - ); - } - - /** - * @return array - */ - public static function getDefaultProperties(): array - { - $properties = []; - - if (static::isLazy()) { - $properties['lazy'] = true; - } - - return $properties; - } - - public static function isLazy(): bool - { - return static::$isLazy; - } -} diff --git a/vendor/filament/filament/src/Resources/RelationManagers/RelationManagerConfiguration.php b/vendor/filament/filament/src/Resources/RelationManagers/RelationManagerConfiguration.php deleted file mode 100644 index ec7e9047..00000000 --- a/vendor/filament/filament/src/Resources/RelationManagers/RelationManagerConfiguration.php +++ /dev/null @@ -1,16 +0,0 @@ - $relationManager - * @param array $properties - */ - public function __construct( - readonly public string $relationManager, - readonly public array $properties = [], - ) { - } -} diff --git a/vendor/filament/filament/src/Resources/Resource.php b/vendor/filament/filament/src/Resources/Resource.php deleted file mode 100644 index 7b321428..00000000 --- a/vendor/filament/filament/src/Resources/Resource.php +++ /dev/null @@ -1,936 +0,0 @@ - | null */ - protected static ?string $cluster = null; - - protected static bool $isDiscovered = true; - - protected static bool $isGloballySearchable = true; - - /** - * @deprecated Use `$modelLabel` instead. - */ - protected static ?string $label = null; - - protected static ?string $modelLabel = null; - - protected static ?string $model = null; - - protected static ?string $navigationBadgeTooltip = null; - - protected static ?string $navigationGroup = null; - - protected static ?string $navigationParentItem = null; - - protected static ?string $navigationIcon = null; - - protected static ?string $activeNavigationIcon = null; - - protected static ?string $navigationLabel = null; - - protected static ?int $navigationSort = null; - - protected static ?string $recordRouteKeyName = null; - - protected static bool $shouldRegisterNavigation = true; - - /** - * @deprecated Use `$pluralModelLabel` instead. - */ - protected static ?string $pluralLabel = null; - - protected static ?string $pluralModelLabel = null; - - protected static ?string $recordTitleAttribute = null; - - protected static ?string $slug = null; - - protected static bool $isScopedToTenant = true; - - protected static ?string $tenantOwnershipRelationshipName = null; - - protected static ?string $tenantRelationshipName = null; - - /** - * @var string | array - */ - protected static string | array $routeMiddleware = []; - - /** - * @var string | array - */ - protected static string | array $withoutRouteMiddleware = []; - - protected static int $globalSearchResultsLimit = 50; - - protected static bool $shouldCheckPolicyExistence = true; - - protected static bool $shouldSkipAuthorization = false; - - protected static ?bool $isGlobalSearchForcedCaseInsensitive = null; - - protected static SubNavigationPosition $subNavigationPosition = SubNavigationPosition::Start; - - protected static bool $hasTitleCaseModelLabel = true; - - public static function form(Form $form): Form - { - return $form; - } - - public static function infolist(Infolist $infolist): Infolist - { - return $infolist; - } - - public static function canAccess(): bool - { - return static::canViewAny(); - } - - public static function registerNavigationItems(): void - { - if (filled(static::getCluster())) { - return; - } - - if (! static::shouldRegisterNavigation()) { - return; - } - - if (! static::canAccess()) { - return; - } - - Filament::getCurrentPanel() - ->navigationItems(static::getNavigationItems()); - } - - /** - * @return array - */ - public static function getNavigationItems(): array - { - return [ - NavigationItem::make(static::getNavigationLabel()) - ->group(static::getNavigationGroup()) - ->parentItem(static::getNavigationParentItem()) - ->icon(static::getNavigationIcon()) - ->activeIcon(static::getActiveNavigationIcon()) - ->isActiveWhen(fn () => request()->routeIs(static::getRouteBaseName() . '.*')) - ->badge(static::getNavigationBadge(), color: static::getNavigationBadgeColor()) - ->badgeTooltip(static::getNavigationBadgeTooltip()) - ->sort(static::getNavigationSort()) - ->url(static::getNavigationUrl()), - ]; - } - - public static function getSubNavigationPosition(): SubNavigationPosition - { - return static::$subNavigationPosition; - } - - public static function table(Table $table): Table - { - return $table; - } - - public static function resolveRecordRouteBinding(int | string $key): ?Model - { - return app(static::getModel()) - ->resolveRouteBindingQuery(static::getEloquentQuery(), $key, static::getRecordRouteKeyName()) - ->first(); - } - - public static function can(string $action, ?Model $record = null): bool - { - if (static::shouldSkipAuthorization()) { - return true; - } - - $model = static::getModel(); - - try { - return authorize($action, $record ?? $model, static::shouldCheckPolicyExistence())->allowed(); - } catch (AuthorizationException $exception) { - return $exception->toResponse()->allowed(); - } - } - - /** - * @throws AuthorizationException - */ - public static function authorize(string $action, ?Model $record = null): ?Response - { - if (static::shouldSkipAuthorization()) { - return null; - } - - $model = static::getModel(); - - try { - return authorize($action, $record ?? $model, static::shouldCheckPolicyExistence()); - } catch (AuthorizationException $exception) { - return $exception->toResponse(); - } - } - - public static function checkPolicyExistence(bool $condition = true): void - { - static::$shouldCheckPolicyExistence = $condition; - } - - public static function skipAuthorization(bool $condition = true): void - { - static::$shouldSkipAuthorization = $condition; - } - - public static function shouldCheckPolicyExistence(): bool - { - return static::$shouldCheckPolicyExistence; - } - - public static function shouldSkipAuthorization(): bool - { - return static::$shouldSkipAuthorization; - } - - public static function canViewAny(): bool - { - return static::can('viewAny'); - } - - public static function canCreate(): bool - { - return static::can('create'); - } - - public static function canEdit(Model $record): bool - { - return static::can('update', $record); - } - - public static function canDelete(Model $record): bool - { - return static::can('delete', $record); - } - - public static function canDeleteAny(): bool - { - return static::can('deleteAny'); - } - - public static function canForceDelete(Model $record): bool - { - return static::can('forceDelete', $record); - } - - public static function canForceDeleteAny(): bool - { - return static::can('forceDeleteAny'); - } - - public static function canReorder(): bool - { - return static::can('reorder'); - } - - public static function canReplicate(Model $record): bool - { - return static::can('replicate', $record); - } - - public static function canRestore(Model $record): bool - { - return static::can('restore', $record); - } - - public static function canRestoreAny(): bool - { - return static::can('restoreAny'); - } - - public static function canView(Model $record): bool - { - return static::can('view', $record); - } - - public static function authorizeViewAny(): void - { - static::authorize('viewAny'); - } - - public static function authorizeCreate(): void - { - static::authorize('create'); - } - - public static function authorizeEdit(Model $record): void - { - static::authorize('update', $record); - } - - public static function authorizeView(Model $record): void - { - static::authorize('view', $record); - } - - public static function canGloballySearch(): bool - { - return static::$isGloballySearchable && count(static::getGloballySearchableAttributes()) && static::canAccess(); - } - - public static function getBreadcrumb(): string - { - return static::$breadcrumb ?? static::getTitleCasePluralModelLabel(); - } - - public static function getEloquentQuery(): Builder - { - $query = static::getModel()::query(); - - if ( - static::isScopedToTenant() && - ($tenant = Filament::getTenant()) - ) { - static::scopeEloquentQueryToTenant($query, $tenant); - } - - return $query; - } - - public static function scopeEloquentQueryToTenant(Builder $query, ?Model $tenant): Builder - { - $tenant ??= Filament::getTenant(); - - $tenantOwnershipRelationship = static::getTenantOwnershipRelationship($query->getModel()); - $tenantOwnershipRelationshipName = static::getTenantOwnershipRelationshipName(); - - return match (true) { - $tenantOwnershipRelationship instanceof MorphTo => $query->whereMorphedTo( - $tenantOwnershipRelationshipName, - $tenant, - ), - $tenantOwnershipRelationship instanceof BelongsTo => $query->whereBelongsTo( - $tenant, - $tenantOwnershipRelationshipName, - ), - default => $query->whereHas( - $tenantOwnershipRelationshipName, - fn (Builder $query) => $query->whereKey($tenant->getKey()), - ), - }; - } - - /** - * @return array - */ - public static function getGloballySearchableAttributes(): array - { - $titleAttribute = static::getRecordTitleAttribute(); - - if ($titleAttribute === null) { - return []; - } - - return [$titleAttribute]; - } - - /** - * @return array - */ - public static function getGlobalSearchResultActions(Model $record): array - { - return []; - } - - /** - * @return array - */ - public static function getGlobalSearchResultDetails(Model $record): array - { - return []; - } - - public static function getGlobalSearchResultTitle(Model $record): string | Htmlable - { - return static::getRecordTitle($record); - } - - public static function getGlobalSearchResultUrl(Model $record): ?string - { - $canEdit = static::canEdit($record); - - if (static::hasPage('edit') && $canEdit) { - return static::getUrl('edit', ['record' => $record]); - } - - $canView = static::canView($record); - - if (static::hasPage('view') && $canView) { - return static::getUrl('view', ['record' => $record]); - } - - if ($canEdit) { - return static::getUrl(parameters: [ - 'tableAction' => 'edit', - 'tableActionRecord' => $record, - ]); - } - - if ($canView) { - return static::getUrl(parameters: [ - 'tableAction' => 'view', - 'tableActionRecord' => $record, - ]); - } - - return null; - } - - public static function getGlobalSearchResultsLimit(): int - { - return static::$globalSearchResultsLimit; - } - - public static function modifyGlobalSearchQuery(Builder $query, string $search): void - { - } - - public static function getGlobalSearchResults(string $search): Collection - { - $query = static::getGlobalSearchEloquentQuery(); - - static::applyGlobalSearchAttributeConstraints($query, $search); - - static::modifyGlobalSearchQuery($query, $search); - - return $query - ->limit(static::getGlobalSearchResultsLimit()) - ->get() - ->map(function (Model $record): ?GlobalSearchResult { - $url = static::getGlobalSearchResultUrl($record); - - if (blank($url)) { - return null; - } - - return new GlobalSearchResult( - title: static::getGlobalSearchResultTitle($record), - url: $url, - details: static::getGlobalSearchResultDetails($record), - actions: static::getGlobalSearchResultActions($record), - ); - }) - ->filter(); - } - - /** - * @deprecated Use `getModelLabel()` instead. - */ - public static function getLabel(): ?string - { - return static::$label; - } - - public static function getModelLabel(): string - { - return static::$modelLabel ?? static::getLabel() ?? get_model_label(static::getModel()); - } - - public static function getTitleCaseModelLabel(): string - { - if (! static::hasTitleCaseModelLabel()) { - return static::getModelLabel(); - } - - return Str::ucwords(static::getModelLabel()); - } - - public static function getModel(): string - { - return static::$model ?? (string) str(class_basename(static::class)) - ->beforeLast('Resource') - ->prepend('App\\Models\\'); - } - - /** - * @return array - */ - public static function getPages(): array - { - return []; - } - - /** - * @deprecated Use `getPluralModelLabel()` instead. - */ - public static function getPluralLabel(): ?string - { - return static::$pluralLabel; - } - - public static function getPluralModelLabel(): string - { - if (filled($label = static::$pluralModelLabel ?? static::getPluralLabel())) { - return $label; - } - - if (locale_has_pluralization()) { - return Str::plural(static::getModelLabel()); - } - - return static::getModelLabel(); - } - - public static function getTitleCasePluralModelLabel(): string - { - if (! static::hasTitleCaseModelLabel()) { - return static::getPluralModelLabel(); - } - - return Str::ucwords(static::getPluralModelLabel()); - } - - public static function titleCaseModelLabel(bool $condition = true): void - { - static::$hasTitleCaseModelLabel = $condition; - } - - public static function hasTitleCaseModelLabel(): bool - { - return static::$hasTitleCaseModelLabel; - } - - public static function getRecordTitleAttribute(): ?string - { - return static::$recordTitleAttribute; - } - - public static function getRecordTitle(?Model $record): string | Htmlable | null - { - return $record?->getAttribute(static::getRecordTitleAttribute()) ?? static::getModelLabel(); - } - - /** - * @return array | RelationGroup | RelationManagerConfiguration> - */ - public static function getRelations(): array - { - return []; - } - - /** - * @return array> - */ - public static function getWidgets(): array - { - return []; - } - - public static function getRouteBaseName(?string $panel = null): string - { - $panel = $panel ? Filament::getPanel($panel) : Filament::getCurrentPanel(); - - $routeBaseName = (string) str(static::getSlug()) - ->replace('/', '.') - ->prepend('resources.'); - - if (filled($cluster = static::getCluster())) { - $routeBaseName = $cluster::prependClusterRouteBaseName($routeBaseName); - } - - return $panel->generateRouteName($routeBaseName); - } - - public static function getRecordRouteKeyName(): ?string - { - return static::$recordRouteKeyName; - } - - public static function registerRoutes(Panel $panel): void - { - if (filled($cluster = static::getCluster())) { - Route::name($cluster::prependClusterRouteBaseName('resources.')) - ->prefix($cluster::prependClusterSlug('')) - ->group(fn () => static::routes($panel)); - - return; - } - - Route::name('resources.')->group(fn () => static::routes($panel)); - } - - public static function routes(Panel $panel): void - { - $slug = static::getSlug(); - $routeBaseName = (string) str($slug) - ->replace('/', '.') - ->append('.'); - - Route::name($routeBaseName) - ->prefix($slug) - ->middleware(static::getRouteMiddleware($panel)) - ->withoutMiddleware(static::getWithoutRouteMiddleware($panel)) - ->group(function () use ($panel) { - foreach (static::getPages() as $name => $page) { - $page->registerRoute($panel)?->name($name); - } - }); - } - - /** - * @return string | array - */ - public static function getRouteMiddleware(Panel $panel): string | array - { - return static::$routeMiddleware; - } - - /** - * @return string | array - */ - public static function getWithoutRouteMiddleware(Panel $panel): string | array - { - return static::$withoutRouteMiddleware; - } - - public static function getEmailVerifiedMiddleware(Panel $panel): string - { - return $panel->getEmailVerifiedMiddleware(); - } - - public static function isEmailVerificationRequired(Panel $panel): bool - { - return $panel->isEmailVerificationRequired(); - } - - public static function getTenantSubscribedMiddleware(Panel $panel): string - { - return $panel->getTenantBillingProvider()->getSubscribedMiddleware(); - } - - public static function isTenantSubscriptionRequired(Panel $panel): bool - { - return $panel->isTenantSubscriptionRequired(); - } - - public static function getSlug(): string - { - if (filled(static::$slug)) { - return static::$slug; - } - - return str(static::class) - ->whenContains( - '\\Resources\\', - fn (Stringable $slug): Stringable => $slug->afterLast('\\Resources\\'), - fn (Stringable $slug): Stringable => $slug->classBasename(), - ) - ->beforeLast('Resource') - ->plural() - ->explode('\\') - ->map(fn (string $string) => str($string)->kebab()->slug()) - ->implode('/'); - } - - /** - * @param array $parameters - */ - public static function getUrl(string $name = 'index', array $parameters = [], bool $isAbsolute = true, ?string $panel = null, ?Model $tenant = null): string - { - if (blank($panel) || Filament::getPanel($panel)->hasTenancy()) { - $parameters['tenant'] ??= ($tenant ?? Filament::getTenant()); - } - - $routeBaseName = static::getRouteBaseName(panel: $panel); - - return route("{$routeBaseName}.{$name}", $parameters, $isAbsolute); - } - - public static function hasPage(string $page): bool - { - return array_key_exists($page, static::getPages()); - } - - public static function hasRecordTitle(): bool - { - return static::getRecordTitleAttribute() !== null; - } - - public static function isGlobalSearchForcedCaseInsensitive(): ?bool - { - return static::$isGlobalSearchForcedCaseInsensitive; - } - - protected static function applyGlobalSearchAttributeConstraints(Builder $query, string $search): void - { - /** @var Connection $databaseConnection */ - $databaseConnection = $query->getConnection(); - - $search = generate_search_term_expression($search, static::isGlobalSearchForcedCaseInsensitive(), $databaseConnection); - - foreach (explode(' ', $search) as $searchWord) { - $query->where(function (Builder $query) use ($searchWord) { - $isFirst = true; - - foreach (static::getGloballySearchableAttributes() as $attributes) { - static::applyGlobalSearchAttributeConstraint( - query: $query, - search: $searchWord, - searchAttributes: Arr::wrap($attributes), - isFirst: $isFirst, - ); - } - }); - } - } - - /** - * @param array $searchAttributes - */ - protected static function applyGlobalSearchAttributeConstraint(Builder $query, string $search, array $searchAttributes, bool &$isFirst): Builder - { - $model = $query->getModel(); - - $isForcedCaseInsensitive = static::isGlobalSearchForcedCaseInsensitive(); - - /** @var Connection $databaseConnection */ - $databaseConnection = $query->getConnection(); - - foreach ($searchAttributes as $searchAttribute) { - $whereClause = $isFirst ? 'where' : 'orWhere'; - - $query->when( - str($searchAttribute)->contains('.'), - function (Builder $query) use ($databaseConnection, $isForcedCaseInsensitive, $searchAttribute, $search, $whereClause): Builder { - return $query->{"{$whereClause}Relation"}( - (string) str($searchAttribute)->beforeLast('.'), - generate_search_column_expression((string) str($searchAttribute)->afterLast('.'), $isForcedCaseInsensitive, $databaseConnection), - 'like', - "%{$search}%", - ); - }, - fn (Builder $query) => $query->{$whereClause}( - generate_search_column_expression($searchAttribute, $isForcedCaseInsensitive, $databaseConnection), - 'like', - "%{$search}%", - ), - ); - - $isFirst = false; - } - - return $query; - } - - public static function getGlobalSearchEloquentQuery(): Builder - { - return static::getEloquentQuery(); - } - - public static function getNavigationGroup(): ?string - { - return static::$navigationGroup; - } - - public static function getNavigationParentItem(): ?string - { - return static::$navigationParentItem; - } - - public static function navigationGroup(?string $group): void - { - static::$navigationGroup = $group; - } - - public static function navigationParentItem(?string $item): void - { - static::$navigationParentItem = $item; - } - - public static function getNavigationIcon(): ?string - { - return static::$navigationIcon; - } - - public static function navigationIcon(?string $icon): void - { - static::$navigationIcon = $icon; - } - - public static function getActiveNavigationIcon(): ?string - { - return static::$activeNavigationIcon ?? static::getNavigationIcon(); - } - - public static function getNavigationLabel(): string - { - return static::$navigationLabel ?? static::getTitleCasePluralModelLabel(); - } - - public static function getNavigationBadge(): ?string - { - return null; - } - - public static function getNavigationBadgeTooltip(): ?string - { - return static::$navigationBadgeTooltip; - } - - /** - * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | null - */ - public static function getNavigationBadgeColor(): string | array | null - { - return null; - } - - public static function getNavigationSort(): ?int - { - return static::$navigationSort; - } - - public static function navigationLabel(?string $label): void - { - static::$navigationLabel = $label; - } - - public static function navigationSort(?int $sort): void - { - static::$navigationSort = $sort; - } - - public static function getNavigationUrl(): string - { - return static::getUrl(); - } - - public static function shouldRegisterNavigation(): bool - { - return static::$shouldRegisterNavigation; - } - - public static function isDiscovered(): bool - { - return static::$isDiscovered; - } - - public static function scopeToTenant(bool $condition = true): void - { - static::$isScopedToTenant = $condition; - } - - public static function isScopedToTenant(): bool - { - return static::$isScopedToTenant; - } - - public static function getTenantOwnershipRelationshipName(): string - { - return static::$tenantOwnershipRelationshipName ?? Filament::getTenantOwnershipRelationshipName(); - } - - public static function getTenantOwnershipRelationship(Model $record): Relation - { - $relationshipName = static::getTenantOwnershipRelationshipName(); - - if (! $record->isRelation($relationshipName)) { - $resourceClass = static::class; - $recordClass = $record::class; - - throw new Exception("The model [{$recordClass}] does not have a relationship named [{$relationshipName}]. You can change the relationship being used by passing it to the [ownershipRelationship] argument of the [tenant()] method in configuration. You can change the relationship being used per-resource by setting it as the [\$tenantOwnershipRelationshipName] static property on the [{$resourceClass}] resource class."); - } - - return $record->{$relationshipName}(); - } - - public static function getTenantRelationshipName(): string - { - return static::$tenantRelationshipName ?? (string) str(static::getModel()) - ->classBasename() - ->pluralStudly() - ->camel(); - } - - public static function getTenantRelationship(Model $tenant): Relation - { - $relationshipName = static::getTenantRelationshipName(); - - if (! $tenant->isRelation($relationshipName)) { - $resourceClass = static::class; - $tenantClass = $tenant::class; - - throw new Exception("The model [{$tenantClass}] does not have a relationship named [{$relationshipName}]. You can change the relationship being used by setting it as the [\$tenantRelationshipName] static property on the [{$resourceClass}] resource class."); - } - - return $tenant->{$relationshipName}(); - } - - /** - * @return array - */ - public static function getRecordSubNavigation(Page $page): array - { - return []; - } - - /** - * @return class-string | null - */ - public static function getCluster(): ?string - { - return static::$cluster; - } -} diff --git a/vendor/filament/filament/src/View/LegacyComponents/Page.php b/vendor/filament/filament/src/View/LegacyComponents/Page.php deleted file mode 100644 index 7c430dcc..00000000 --- a/vendor/filament/filament/src/View/LegacyComponents/Page.php +++ /dev/null @@ -1,14 +0,0 @@ - | null - */ - #[Reactive] - public ?array $filters = null; -} diff --git a/vendor/filament/filament/src/Widgets/Concerns/InteractsWithPageTable.php b/vendor/filament/filament/src/Widgets/Concerns/InteractsWithPageTable.php deleted file mode 100644 index e4e5f5ef..00000000 --- a/vendor/filament/filament/src/Widgets/Concerns/InteractsWithPageTable.php +++ /dev/null @@ -1,96 +0,0 @@ - */ - #[Reactive] - public $paginators = []; - - /** - * @var array | null> - */ - #[Reactive] - public array $tableColumnSearches = []; - - #[Reactive] - public ?string $tableGrouping = null; - - #[Reactive] - public ?string $tableGroupingDirection = null; - - /** - * @var array | null - */ - #[Reactive] - public ?array $tableFilters = null; - - #[Reactive] - public int | string | null $tableRecordsPerPage = null; - - /** - * @var ?string - */ - #[Reactive] - public $tableSearch = ''; - - #[Reactive] - public ?string $tableSortColumn = null; - - #[Reactive] - public ?string $tableSortDirection = null; - - #[Reactive] - public ?string $activeTab = null; - - protected HasTable $tablePage; - - protected function getTablePage(): string - { - throw new Exception('You must define a `getTablePage()` method on your widget that returns the name of a Livewire component.'); - } - - protected function getTablePageInstance(): HasTable - { - if (isset($this->tablePage)) { - return $this->tablePage; - } - - /** @var HasTable $tableComponent */ - $page = app('livewire')->new($this->getTablePage()); - trigger('mount', $page, [], null, null); - - $page->activeTab = $this->activeTab; - $page->paginators = $this->paginators; - $page->tableColumnSearches = $this->tableColumnSearches; - $page->tableFilters = $this->tableFilters; - $page->tableGrouping = $this->tableGrouping; - $page->tableGroupingDirection = $this->tableGroupingDirection; - $page->tableRecordsPerPage = $this->tableRecordsPerPage; - $page->tableSearch = $this->tableSearch; - $page->tableSortColumn = $this->tableSortColumn; - $page->tableSortDirection = $this->tableSortDirection; - - return $this->tablePage = $page; - } - - protected function getPageTableQuery(): Builder - { - return $this->getTablePageInstance()->getFilteredSortedTableQuery(); - } - - protected function getPageTableRecords(): Collection | Paginator - { - return $this->getTablePageInstance()->getTableRecords(); - } -} diff --git a/vendor/filament/filament/src/Widgets/FilamentInfoWidget.php b/vendor/filament/filament/src/Widgets/FilamentInfoWidget.php deleted file mode 100644 index 2f54db8c..00000000 --- a/vendor/filament/filament/src/Widgets/FilamentInfoWidget.php +++ /dev/null @@ -1,15 +0,0 @@ -getPlugin($plugin); - } - - return $filament; - } -} diff --git a/vendor/filament/filament/src/helpers.php b/vendor/filament/filament/src/helpers.php deleted file mode 100644 index 03266970..00000000 --- a/vendor/filament/filament/src/helpers.php +++ /dev/null @@ -1,49 +0,0 @@ -user(); - - if (! $shouldCheckPolicyExistence) { - return Gate::forUser($user)->authorize($action, $model); - } - - $policy = Gate::getPolicyFor($model); - - if ( - ($policy === null) || - (! method_exists($policy, $action)) - ) { - /** @var bool | Response | null $response */ - $response = invade(Gate::forUser($user))->callBeforeCallbacks( /** @phpstan-ignore-line */ - $user, - $action, - [$model], - ); - - if ($response === false) { - throw new AuthorizationException(); - } - - if (! $response instanceof Response) { - return Response::allow(); - } - - return $response->authorize(); - } - - return Gate::forUser($user)->authorize($action, $model); - } -} diff --git a/vendor/filament/filament/stubs/Cluster.stub b/vendor/filament/filament/stubs/Cluster.stub deleted file mode 100644 index 37a8ea21..00000000 --- a/vendor/filament/filament/stubs/Cluster.stub +++ /dev/null @@ -1,10 +0,0 @@ - - -
    diff --git a/vendor/filament/filament/stubs/RelationManager.stub b/vendor/filament/filament/stubs/RelationManager.stub deleted file mode 100644 index 41e190aa..00000000 --- a/vendor/filament/filament/stubs/RelationManager.stub +++ /dev/null @@ -1,49 +0,0 @@ -schema([ - Forms\Components\TextInput::make('{{ recordTitleAttribute }}') - ->required() - ->maxLength(255), - ]); - } - - public function table(Table $table): Table - { - return $table - ->recordTitleAttribute('{{ recordTitleAttribute }}') - ->columns([ - Tables\Columns\TextColumn::make('{{ recordTitleAttribute }}'), - ]) - ->filters([ -{{ tableFilters }} - ]) - ->headerActions([ -{{ tableHeaderActions }} - ]) - ->actions([ -{{ tableActions }} - ]) - ->bulkActions([ - Tables\Actions\BulkActionGroup::make([ -{{ tableBulkActions }} - ]), - ]){{ modifyQueryUsing }}; - } -} diff --git a/vendor/filament/filament/stubs/Resource.stub b/vendor/filament/filament/stubs/Resource.stub deleted file mode 100644 index 2fce2705..00000000 --- a/vendor/filament/filament/stubs/Resource.stub +++ /dev/null @@ -1,55 +0,0 @@ -schema([ -{{ formSchema }} - ]); - } - - public static function table(Table $table): Table - { - return $table - ->columns([ -{{ tableColumns }} - ]) - ->filters([ -{{ tableFilters }} - ]) - ->actions([ -{{ tableActions }} - ]) - ->bulkActions([ - Tables\Actions\BulkActionGroup::make([ -{{ tableBulkActions }} - ]), - ]); - } -{{ relations }} - public static function getPages(): array - { - return [ -{{ pages }} - ]; - }{{ eloquentQuery }} -} diff --git a/vendor/filament/filament/stubs/ResourceEditPage.stub b/vendor/filament/filament/stubs/ResourceEditPage.stub deleted file mode 100644 index 76b6c008..00000000 --- a/vendor/filament/filament/stubs/ResourceEditPage.stub +++ /dev/null @@ -1,19 +0,0 @@ -schema([ - Forms\Components\TextInput::make('{{ recordTitleAttribute }}') - ->required() - ->maxLength(255), - ]); - } - - public function table(Table $table): Table - { - return $table - ->recordTitleAttribute('{{ recordTitleAttribute }}') - ->columns([ - Tables\Columns\TextColumn::make('{{ recordTitleAttribute }}'), - ]) - ->filters([ -{{ tableFilters }} - ]) - ->headerActions([ -{{ tableHeaderActions }} - ]) - ->actions([ -{{ tableActions }} - ]) - ->bulkActions([ - Tables\Actions\BulkActionGroup::make([ -{{ tableBulkActions }} - ]), - ]){{ modifyQueryUsing }}; - } -} diff --git a/vendor/filament/filament/stubs/ResourcePage.stub b/vendor/filament/filament/stubs/ResourcePage.stub deleted file mode 100644 index 163b4296..00000000 --- a/vendor/filament/filament/stubs/ResourcePage.stub +++ /dev/null @@ -1,12 +0,0 @@ -e>r?r:eMath.round(r*e)/r;var nt={grad:360/400,turn:360,rad:360/(Math.PI*2)},F=e=>G(b(e)),b=e=>(e[0]==="#"&&(e=e.substr(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:1}:{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:1}),it=(e,t="deg")=>Number(e)*(nt[t]||1),lt=e=>{let r=/hsla?\(?\s*(-?\d*\.?\d+)(deg|rad|grad|turn)?[,\s]+(-?\d*\.?\d+)%?[,\s]+(-?\d*\.?\d+)%?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return r?ct({h:it(r[1],r[2]),s:Number(r[3]),l:Number(r[4]),a:r[5]===void 0?1:Number(r[5])/(r[6]?100:1)}):{h:0,s:0,v:0,a:1}},J=lt,ct=({h:e,s:t,l:r,a:o})=>(t*=(r<50?r:100-r)/100,{h:e,s:t>0?2*t/(r+t)*100:0,v:r+t,a:o}),X=e=>pt(A(e)),Y=({h:e,s:t,v:r,a:o})=>{let s=(200-t)*r/100;return{h:n(e),s:n(s>0&&s<200?t*r/100/(s<=100?s:200-s)*100:0),l:n(s/2),a:n(o,2)}};var d=e=>{let{h:t,s:r,l:o}=Y(e);return`hsl(${t}, ${r}%, ${o}%)`},v=e=>{let{h:t,s:r,l:o,a:s}=Y(e);return`hsla(${t}, ${r}%, ${o}%, ${s})`},A=({h:e,s:t,v:r,a:o})=>{e=e/360*6,t=t/100,r=r/100;let s=Math.floor(e),a=r*(1-t),i=r*(1-(e-s)*t),l=r*(1-(1-e+s)*t),N=s%6;return{r:n([r,i,a,a,l,r][N]*255),g:n([l,r,r,i,a,a][N]*255),b:n([a,a,l,r,r,i][N]*255),a:n(o,2)}},B=e=>{let{r:t,g:r,b:o}=A(e);return`rgb(${t}, ${r}, ${o})`},D=e=>{let{r:t,g:r,b:o,a:s}=A(e);return`rgba(${t}, ${r}, ${o}, ${s})`};var L=e=>{let r=/rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return r?G({r:Number(r[1])/(r[2]?100/255:1),g:Number(r[3])/(r[4]?100/255:1),b:Number(r[5])/(r[6]?100/255:1),a:r[7]===void 0?1:Number(r[7])/(r[8]?100:1)}):{h:0,s:0,v:0,a:1}},U=L,q=e=>{let t=e.toString(16);return t.length<2?"0"+t:t},pt=({r:e,g:t,b:r})=>"#"+q(e)+q(t)+q(r),G=({r:e,g:t,b:r,a:o})=>{let s=Math.max(e,t,r),a=s-Math.min(e,t,r),i=a?s===e?(t-r)/a:s===t?2+(r-e)/a:4+(e-t)/a:0;return{h:n(60*(i<0?i+6:i)),s:n(s?a/s*100:0),v:n(s/255*100),a:o}};var O=(e,t)=>{if(e===t)return!0;for(let r in e)if(e[r]!==t[r])return!1;return!0},h=(e,t)=>e.replace(/\s/g,"")===t.replace(/\s/g,""),K=(e,t)=>e.toLowerCase()===t.toLowerCase()?!0:O(b(e),b(t));var Q={},$=e=>{let t=Q[e];return t||(t=document.createElement("template"),t.innerHTML=e,Q[e]=t),t},f=(e,t,r)=>{e.dispatchEvent(new CustomEvent(t,{bubbles:!0,detail:r}))};var m=!1,I=e=>"touches"in e,ut=e=>m&&!I(e)?!1:(m||(m=I(e)),!0),W=(e,t)=>{let r=I(t)?t.touches[0]:t,o=e.el.getBoundingClientRect();f(e.el,"move",e.getMove({x:c((r.pageX-(o.left+window.pageXOffset))/o.width),y:c((r.pageY-(o.top+window.pageYOffset))/o.height)}))},dt=(e,t)=>{let r=t.keyCode;r>40||e.xy&&r<37||r<33||(t.preventDefault(),f(e.el,"move",e.getMove({x:r===39?.01:r===37?-.01:r===34?.05:r===33?-.05:r===35?1:r===36?-1:0,y:r===40?.01:r===38?-.01:0},!0)))},u=class{constructor(t,r,o,s){let a=$(`
    `);t.appendChild(a.content.cloneNode(!0));let i=t.querySelector(`[part=${r}]`);i.addEventListener("mousedown",this),i.addEventListener("touchstart",this),i.addEventListener("keydown",this),this.el=i,this.xy=s,this.nodes=[i.firstChild,i]}set dragging(t){let r=t?document.addEventListener:document.removeEventListener;r(m?"touchmove":"mousemove",this),r(m?"touchend":"mouseup",this)}handleEvent(t){switch(t.type){case"mousedown":case"touchstart":if(t.preventDefault(),!ut(t)||!m&&t.button!=0)return;this.el.focus(),W(this,t),this.dragging=!0;break;case"mousemove":case"touchmove":t.preventDefault(),W(this,t);break;case"mouseup":case"touchend":this.dragging=!1;break;case"keydown":dt(this,t);break}}style(t){t.forEach((r,o)=>{for(let s in r)this.nodes[o].style.setProperty(s,r[s])})}};var S=class extends u{constructor(t){super(t,"hue",'aria-label="Hue" aria-valuemin="0" aria-valuemax="360"',!1)}update({h:t}){this.h=t,this.style([{left:`${t/360*100}%`,color:d({h:t,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuenow",`${n(t)}`)}getMove(t,r){return{h:r?c(this.h+t.x*360,0,360):360*t.x}}};var H=class extends u{constructor(t){super(t,"saturation",'aria-label="Color"',!0)}update(t){this.hsva=t,this.style([{top:`${100-t.v}%`,left:`${t.s}%`,color:d(t)},{"background-color":d({h:t.h,s:100,v:100,a:1})}]),this.el.setAttribute("aria-valuetext",`Saturation ${n(t.s)}%, Brightness ${n(t.v)}%`)}getMove(t,r){return{s:r?c(this.hsva.s+t.x*100,0,100):t.x*100,v:r?c(this.hsva.v-t.y*100,0,100):Math.round(100-t.y*100)}}};var Z=":host{display:flex;flex-direction:column;position:relative;width:200px;height:200px;user-select:none;-webkit-user-select:none;cursor:default}:host([hidden]){display:none!important}[role=slider]{position:relative;touch-action:none;user-select:none;-webkit-user-select:none;outline:0}[role=slider]:last-child{border-radius:0 0 8px 8px}[part$=pointer]{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}[part$=pointer]::after{display:block;content:'';position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;background-color:currentColor}[role=slider]:focus [part$=pointer]{transform:translate(-50%,-50%) scale(1.1)}";var tt="[part=hue]{flex:0 0 24px;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}[part=hue-pointer]{top:50%;z-index:2}";var rt="[part=saturation]{flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,rgba(255,255,255,0));box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part=saturation-pointer]{z-index:3}";var T=Symbol("same"),et=Symbol("color"),ot=Symbol("hsva"),R=Symbol("change"),_=Symbol("update"),st=Symbol("parts"),g=Symbol("css"),x=Symbol("sliders"),p=class extends HTMLElement{static get observedAttributes(){return["color"]}get[g](){return[Z,tt,rt]}get[x](){return[H,S]}get color(){return this[et]}set color(t){if(!this[T](t)){let r=this.colorModel.toHsva(t);this[_](r),this[R](t)}}constructor(){super();let t=$(``),r=this.attachShadow({mode:"open"});r.appendChild(t.content.cloneNode(!0)),r.addEventListener("move",this),this[st]=this[x].map(o=>new o(r))}connectedCallback(){if(this.hasOwnProperty("color")){let t=this.color;delete this.color,this.color=t}else this.color||(this.color=this.colorModel.defaultColor)}attributeChangedCallback(t,r,o){let s=this.colorModel.fromAttr(o);this[T](s)||(this.color=s)}handleEvent(t){let r=this[ot],o={...r,...t.detail};this[_](o);let s;!O(o,r)&&!this[T](s=this.colorModel.fromHsva(o))&&this[R](s)}[T](t){return this.color&&this.colorModel.equal(t,this.color)}[_](t){this[ot]=t,this[st].forEach(r=>r.update(t))}[R](t){this[et]=t,f(this,"color-changed",{value:t})}};var ht={defaultColor:"#000",toHsva:F,fromHsva:X,equal:K,fromAttr:e=>e},y=class extends p{get colorModel(){return ht}};var P=class extends y{};customElements.define("hex-color-picker",P);var mt={defaultColor:"hsl(0, 0%, 0%)",toHsva:J,fromHsva:d,equal:h,fromAttr:e=>e},w=class extends p{get colorModel(){return mt}};var z=class extends w{};customElements.define("hsl-string-color-picker",z);var ft={defaultColor:"rgb(0, 0, 0)",toHsva:U,fromHsva:B,equal:h,fromAttr:e=>e},M=class extends p{get colorModel(){return ft}};var V=class extends M{};customElements.define("rgb-string-color-picker",V);var k=class extends u{constructor(t){super(t,"alpha",'aria-label="Alpha" aria-valuemin="0" aria-valuemax="1"',!1)}update(t){this.hsva=t;let r=v({...t,a:0}),o=v({...t,a:1}),s=t.a*100;this.style([{left:`${s}%`,color:v(t)},{"--gradient":`linear-gradient(90deg, ${r}, ${o}`}]);let a=n(s);this.el.setAttribute("aria-valuenow",`${a}`),this.el.setAttribute("aria-valuetext",`${a}%`)}getMove(t,r){return{a:r?c(this.hsva.a+t.x):t.x}}};var at=`[part=alpha]{flex:0 0 24px}[part=alpha]::after{display:block;content:'';position:absolute;top:0;left:0;right:0;bottom:0;border-radius:inherit;background-image:var(--gradient);box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}[part^=alpha]{background-color:#fff;background-image:url('data:image/svg+xml,')}[part=alpha-pointer]{top:50%}`;var C=class extends p{get[g](){return[...super[g],at]}get[x](){return[...super[x],k]}};var gt={defaultColor:"rgba(0, 0, 0, 1)",toHsva:L,fromHsva:D,equal:h,fromAttr:e=>e},E=class extends C{get colorModel(){return gt}};var j=class extends E{};customElements.define("rgba-string-color-picker",j);function xt({isAutofocused:e,isDisabled:t,isLive:r,isLiveDebounced:o,isLiveOnBlur:s,liveDebounce:a,state:i}){return{state:i,init:function(){this.state===null||this.state===""||this.setState(this.state),e&&this.togglePanelVisibility(this.$refs.input),this.$refs.input.addEventListener("change",l=>{this.setState(l.target.value)}),this.$refs.panel.addEventListener("color-changed",l=>{this.setState(l.detail.value),!(s||!(r||o))&&setTimeout(()=>{this.state===l.detail.value&&this.commitState()},o?a:250)}),(r||o||s)&&new MutationObserver(()=>this.isOpen()?null:this.commitState()).observe(this.$refs.panel,{attributes:!0,childList:!0})},togglePanelVisibility:function(){t||this.$refs.panel.toggle(this.$refs.input)},setState:function(l){this.state=l,this.$refs.input.value=l,this.$refs.panel.color=l},isOpen:function(){return this.$refs.panel.style.display==="block"},commitState:function(){JSON.stringify(this.$wire.__instance.canonical)!==JSON.stringify(this.$wire.__instance.ephemeral)&&this.$wire.$commit()}}}export{xt as default}; diff --git a/vendor/filament/forms/dist/components/date-time-picker.js b/vendor/filament/forms/dist/components/date-time-picker.js deleted file mode 100644 index 23bcb79f..00000000 --- a/vendor/filament/forms/dist/components/date-time-picker.js +++ /dev/null @@ -1 +0,0 @@ -var oi=Object.create;var en=Object.defineProperty;var di=Object.getOwnPropertyDescriptor;var _i=Object.getOwnPropertyNames;var li=Object.getPrototypeOf,fi=Object.prototype.hasOwnProperty;var H=(n,t)=>()=>(t||n((t={exports:{}}).exports,t),t.exports);var mi=(n,t,s,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of _i(t))!fi.call(n,e)&&e!==s&&en(n,e,{get:()=>t[e],enumerable:!(i=di(t,e))||i.enumerable});return n};var le=(n,t,s)=>(s=n!=null?oi(li(n)):{},mi(t||!n||!n.__esModule?en(s,"default",{value:n,enumerable:!0}):s,n));var hn=H((ge,Se)=>{(function(n,t){typeof ge=="object"&&typeof Se<"u"?Se.exports=t():typeof define=="function"&&define.amd?define(t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_plugin_customParseFormat=t()})(ge,function(){"use strict";var n={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"},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,s=/\d\d/,i=/\d\d?/,e=/\d*[^-_:/,()\s\d]+/,a={},u=function(_){return(_=+_)+(_>68?1900:2e3)},r=function(_){return function(h){this[_]=+h}},o=[/[+-]\d\d:?(\d\d)?|Z/,function(_){(this.zone||(this.zone={})).offset=function(h){if(!h||h==="Z")return 0;var D=h.match(/([+-]|\d\d)/g),p=60*D[1]+(+D[2]||0);return p===0?0:D[0]==="+"?-p:p}(_)}],d=function(_){var h=a[_];return h&&(h.indexOf?h:h.s.concat(h.f))},l=function(_,h){var D,p=a.meridiem;if(p){for(var b=1;b<=24;b+=1)if(_.indexOf(p(b,0,h))>-1){D=b>12;break}}else D=_===(h?"pm":"PM");return D},y={A:[e,function(_){this.afternoon=l(_,!1)}],a:[e,function(_){this.afternoon=l(_,!0)}],S:[/\d/,function(_){this.milliseconds=100*+_}],SS:[s,function(_){this.milliseconds=10*+_}],SSS:[/\d{3}/,function(_){this.milliseconds=+_}],s:[i,r("seconds")],ss:[i,r("seconds")],m:[i,r("minutes")],mm:[i,r("minutes")],H:[i,r("hours")],h:[i,r("hours")],HH:[i,r("hours")],hh:[i,r("hours")],D:[i,r("day")],DD:[s,r("day")],Do:[e,function(_){var h=a.ordinal,D=_.match(/\d+/);if(this.day=D[0],h)for(var p=1;p<=31;p+=1)h(p).replace(/\[|\]/g,"")===_&&(this.day=p)}],M:[i,r("month")],MM:[s,r("month")],MMM:[e,function(_){var h=d("months"),D=(d("monthsShort")||h.map(function(p){return p.slice(0,3)})).indexOf(_)+1;if(D<1)throw new Error;this.month=D%12||D}],MMMM:[e,function(_){var h=d("months").indexOf(_)+1;if(h<1)throw new Error;this.month=h%12||h}],Y:[/[+-]?\d+/,r("year")],YY:[s,function(_){this.year=u(_)}],YYYY:[/\d{4}/,r("year")],Z:o,ZZ:o};function f(_){var h,D;h=_,D=a&&a.formats;for(var p=(_=h.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(q,w,k){var U=k&&k.toUpperCase();return w||D[k]||n[k]||D[U].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(Z,L,M){return L||M.slice(1)})})).match(t),b=p.length,T=0;T-1)return new Date((Y==="X"?1e3:1)*m);var v=f(Y)(m),g=v.year,C=v.month,x=v.day,N=v.hours,E=v.minutes,P=v.seconds,ee=v.milliseconds,G=v.zone,X=new Date,V=x||(g||C?1:X.getDate()),F=g||X.getFullYear(),W=0;g&&!C||(W=C>0?C-1:X.getMonth());var Q=N||0,te=E||0,ye=P||0,Ye=ee||0;return G?new Date(Date.UTC(F,W,V,Q,te,ye,Ye+60*G.offset*1e3)):c?new Date(Date.UTC(F,W,V,Q,te,ye,Ye)):new Date(F,W,V,Q,te,ye,Ye)}catch{return new Date("")}}(S,I,$),this.init(),U&&U!==!0&&(this.$L=this.locale(U).$L),k&&S!=this.format(I)&&(this.$d=new Date("")),a={}}else if(I instanceof Array)for(var Z=I.length,L=1;L<=Z;L+=1){O[1]=I[L-1];var M=D.apply(this,O);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}L===Z&&(this.$d=new Date(""))}else b.call(this,T)}}})});var Mn=H((be,ke)=>{(function(n,t){typeof be=="object"&&typeof ke<"u"?ke.exports=t():typeof define=="function"&&define.amd?define(t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_plugin_localeData=t()})(be,function(){"use strict";return function(n,t,s){var i=t.prototype,e=function(d){return d&&(d.indexOf?d:d.s)},a=function(d,l,y,f,_){var h=d.name?d:d.$locale(),D=e(h[l]),p=e(h[y]),b=D||p.map(function(S){return S.slice(0,f)});if(!_)return b;var T=h.weekStart;return b.map(function(S,$){return b[($+(T||0))%7]})},u=function(){return s.Ls[s.locale()]},r=function(d,l){return d.formats[l]||function(y){return y.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(f,_,h){return _||h.slice(1)})}(d.formats[l.toUpperCase()])},o=function(){var d=this;return{months:function(l){return l?l.format("MMMM"):a(d,"months")},monthsShort:function(l){return l?l.format("MMM"):a(d,"monthsShort","months",3)},firstDayOfWeek:function(){return d.$locale().weekStart||0},weekdays:function(l){return l?l.format("dddd"):a(d,"weekdays")},weekdaysMin:function(l){return l?l.format("dd"):a(d,"weekdaysMin","weekdays",2)},weekdaysShort:function(l){return l?l.format("ddd"):a(d,"weekdaysShort","weekdays",3)},longDateFormat:function(l){return r(d.$locale(),l)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};i.localeData=function(){return o.bind(this)()},s.localeData=function(){var d=u();return{firstDayOfWeek:function(){return d.weekStart||0},weekdays:function(){return s.weekdays()},weekdaysShort:function(){return s.weekdaysShort()},weekdaysMin:function(){return s.weekdaysMin()},months:function(){return s.months()},monthsShort:function(){return s.monthsShort()},longDateFormat:function(l){return r(d,l)},meridiem:d.meridiem,ordinal:d.ordinal}},s.months=function(){return a(u(),"months")},s.monthsShort=function(){return a(u(),"monthsShort","months",3)},s.weekdays=function(d){return a(u(),"weekdays",null,null,d)},s.weekdaysShort=function(d){return a(u(),"weekdaysShort","weekdays",3,d)},s.weekdaysMin=function(d){return a(u(),"weekdaysMin","weekdays",2,d)}}})});var yn=H((He,je)=>{(function(n,t){typeof He=="object"&&typeof je<"u"?je.exports=t():typeof define=="function"&&define.amd?define(t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_plugin_timezone=t()})(He,function(){"use strict";var n={year:0,month:1,day:2,hour:3,minute:4,second:5},t={};return function(s,i,e){var a,u=function(l,y,f){f===void 0&&(f={});var _=new Date(l),h=function(D,p){p===void 0&&(p={});var b=p.timeZoneName||"short",T=D+"|"+b,S=t[T];return S||(S=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:D,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:b}),t[T]=S),S}(y,f);return h.formatToParts(_)},r=function(l,y){for(var f=u(l,y),_=[],h=0;h=0&&(_[T]=parseInt(b,10))}var S=_[3],$=S===24?0:S,O=_[0]+"-"+_[1]+"-"+_[2]+" "+$+":"+_[4]+":"+_[5]+":000",I=+l;return(e.utc(O).valueOf()-(I-=I%1e3))/6e4},o=i.prototype;o.tz=function(l,y){l===void 0&&(l=a);var f=this.utcOffset(),_=this.toDate(),h=_.toLocaleString("en-US",{timeZone:l}),D=Math.round((_-new Date(h))/1e3/60),p=e(h,{locale:this.$L}).$set("millisecond",this.$ms).utcOffset(15*-Math.round(_.getTimezoneOffset()/15)-D,!0);if(y){var b=p.utcOffset();p=p.add(f-b,"minute")}return p.$x.$timezone=l,p},o.offsetName=function(l){var y=this.$x.$timezone||e.tz.guess(),f=u(this.valueOf(),y,{timeZoneName:l}).find(function(_){return _.type.toLowerCase()==="timezonename"});return f&&f.value};var d=o.startOf;o.startOf=function(l,y){if(!this.$x||!this.$x.$timezone)return d.call(this,l,y);var f=e(this.format("YYYY-MM-DD HH:mm:ss:SSS"),{locale:this.$L});return d.call(f,l,y).tz(this.$x.$timezone,!0)},e.tz=function(l,y,f){var _=f&&y,h=f||y||a,D=r(+e(),h);if(typeof l!="string")return e(l).tz(h);var p=function($,O,I){var q=$-60*O*1e3,w=r(q,I);if(O===w)return[q,O];var k=r(q-=60*(w-O)*1e3,I);return w===k?[q,w]:[$-60*Math.min(w,k)*1e3,Math.max(w,k)]}(e.utc(l,_).valueOf(),D,h),b=p[0],T=p[1],S=e(b).utcOffset(T);return S.$x.$timezone=h,S},e.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},e.tz.setDefault=function(l){a=l}}})});var Yn=H((Te,we)=>{(function(n,t){typeof Te=="object"&&typeof we<"u"?we.exports=t():typeof define=="function"&&define.amd?define(t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_plugin_utc=t()})(Te,function(){"use strict";var n="minute",t=/[+-]\d\d(?::?\d\d)?/g,s=/([+-]|\d\d)/g;return function(i,e,a){var u=e.prototype;a.utc=function(_){var h={date:_,utc:!0,args:arguments};return new e(h)},u.utc=function(_){var h=a(this.toDate(),{locale:this.$L,utc:!0});return _?h.add(this.utcOffset(),n):h},u.local=function(){return a(this.toDate(),{locale:this.$L,utc:!1})};var r=u.parse;u.parse=function(_){_.utc&&(this.$u=!0),this.$utils().u(_.$offset)||(this.$offset=_.$offset),r.call(this,_)};var o=u.init;u.init=function(){if(this.$u){var _=this.$d;this.$y=_.getUTCFullYear(),this.$M=_.getUTCMonth(),this.$D=_.getUTCDate(),this.$W=_.getUTCDay(),this.$H=_.getUTCHours(),this.$m=_.getUTCMinutes(),this.$s=_.getUTCSeconds(),this.$ms=_.getUTCMilliseconds()}else o.call(this)};var d=u.utcOffset;u.utcOffset=function(_,h){var D=this.$utils().u;if(D(_))return this.$u?0:D(this.$offset)?d.call(this):this.$offset;if(typeof _=="string"&&(_=function(S){S===void 0&&(S="");var $=S.match(t);if(!$)return null;var O=(""+$[0]).match(s)||["-",0,0],I=O[0],q=60*+O[1]+ +O[2];return q===0?0:I==="+"?q:-q}(_),_===null))return this;var p=Math.abs(_)<=16?60*_:_,b=this;if(h)return b.$offset=p,b.$u=_===0,b;if(_!==0){var T=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(b=this.local().add(p+T,n)).$offset=p,b.$x.$localOffset=T}else b=this.utc();return b};var l=u.format;u.format=function(_){var h=_||(this.$u?"YYYY-MM-DDTHH:mm:ss[Z]":"");return l.call(this,h)},u.valueOf=function(){var _=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*_},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var y=u.toDate;u.toDate=function(_){return _==="s"&&this.$offset?a(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate():y.call(this)};var f=u.diff;u.diff=function(_,h,D){if(_&&this.$u===_.$u)return f.call(this,_,h,D);var p=this.local(),b=a(_).local();return f.call(p,b,h,D)}}})});var j=H(($e,Ce)=>{(function(n,t){typeof $e=="object"&&typeof Ce<"u"?Ce.exports=t():typeof define=="function"&&define.amd?define(t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs=t()})($e,function(){"use strict";var n=1e3,t=6e4,s=36e5,i="millisecond",e="second",a="minute",u="hour",r="day",o="week",d="month",l="quarter",y="year",f="date",_="Invalid Date",h=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,D=/\[([^\]]+)]|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,p={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("_"),ordinal:function(L){var M=["th","st","nd","rd"],m=L%100;return"["+L+(M[(m-20)%10]||M[m]||M[0])+"]"}},b=function(L,M,m){var Y=String(L);return!Y||Y.length>=M?L:""+Array(M+1-Y.length).join(m)+L},T={s:b,z:function(L){var M=-L.utcOffset(),m=Math.abs(M),Y=Math.floor(m/60),c=m%60;return(M<=0?"+":"-")+b(Y,2,"0")+":"+b(c,2,"0")},m:function L(M,m){if(M.date()1)return L(g[0])}else{var C=M.name;$[C]=M,c=C}return!Y&&c&&(S=c),c||!Y&&S},w=function(L,M){if(I(L))return L.clone();var m=typeof M=="object"?M:{};return m.date=L,m.args=arguments,new U(m)},k=T;k.l=q,k.i=I,k.w=function(L,M){return w(L,{locale:M.$L,utc:M.$u,x:M.$x,$offset:M.$offset})};var U=function(){function L(m){this.$L=q(m.locale,null,!0),this.parse(m),this.$x=this.$x||m.x||{},this[O]=!0}var M=L.prototype;return M.parse=function(m){this.$d=function(Y){var c=Y.date,v=Y.utc;if(c===null)return new Date(NaN);if(k.u(c))return new Date;if(c instanceof Date)return new Date(c);if(typeof c=="string"&&!/Z$/i.test(c)){var g=c.match(h);if(g){var C=g[2]-1||0,x=(g[7]||"0").substring(0,3);return v?new Date(Date.UTC(g[1],C,g[3]||1,g[4]||0,g[5]||0,g[6]||0,x)):new Date(g[1],C,g[3]||1,g[4]||0,g[5]||0,g[6]||0,x)}}return new Date(c)}(m),this.init()},M.init=function(){var m=this.$d;this.$y=m.getFullYear(),this.$M=m.getMonth(),this.$D=m.getDate(),this.$W=m.getDay(),this.$H=m.getHours(),this.$m=m.getMinutes(),this.$s=m.getSeconds(),this.$ms=m.getMilliseconds()},M.$utils=function(){return k},M.isValid=function(){return this.$d.toString()!==_},M.isSame=function(m,Y){var c=w(m);return this.startOf(Y)<=c&&c<=this.endOf(Y)},M.isAfter=function(m,Y){return w(m){(function(n,t){typeof Oe=="object"&&typeof ze<"u"?ze.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_ar=t(n.dayjs)})(Oe,function(n){"use strict";function t(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}var s=t(n),i="\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("_"),e={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},a={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},u={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:i,monthsShort:i,weekStart:6,meridiem:function(r){return r>12?"\u0645":"\u0635"},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(r){return r.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(o){return a[o]}).replace(/،/g,",")},postformat:function(r){return r.replace(/\d/g,function(o){return e[o]}).replace(/,/g,"\u060C")},ordinal:function(r){return r},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 s.default.locale(u,null,!0),u})});var Dn=H((Ae,Ie)=>{(function(n,t){typeof Ae=="object"&&typeof Ie<"u"?Ie.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_bs=t(n.dayjs)})(Ae,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e},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 s.default.locale(i,null,!0),i})});var Ln=H((xe,qe)=>{(function(n,t){typeof xe=="object"&&typeof qe<"u"?qe.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_ca=t(n.dayjs)})(xe,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return""+e+(e===1||e===3?"r":e===2?"n":e===4?"t":"\xE8")}};return s.default.locale(i,null,!0),i})});var Ne=H((Me,vn)=>{(function(n,t){typeof Me=="object"&&typeof vn<"u"?t(Me,j()):typeof define=="function"&&define.amd?define(["exports","dayjs"],t):t((n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_ku={},n.dayjs)})(Me,function(n,t){"use strict";function s(o){return o&&typeof o=="object"&&"default"in o?o:{default:o}}var i=s(t),e={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},a={"\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"],r={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(o){return o.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(d){return a[d]}).replace(/،/g,",")},postformat:function(o){return o.replace(/\d/g,function(d){return e[d]}).replace(/,/g,"\u060C")},ordinal:function(o){return o},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(o){return o<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"}};i.default.locale(r,null,!0),n.default=r,n.englishToArabicNumbersMap=e,Object.defineProperty(n,"__esModule",{value:!0})})});var gn=H((Ee,Fe)=>{(function(n,t){typeof Ee=="object"&&typeof Fe<"u"?Fe.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_cs=t(n.dayjs)})(Ee,function(n){"use strict";function t(u){return u&&typeof u=="object"&&"default"in u?u:{default:u}}var s=t(n);function i(u){return u>1&&u<5&&~~(u/10)!=1}function e(u,r,o,d){var l=u+" ";switch(o){case"s":return r||d?"p\xE1r sekund":"p\xE1r sekundami";case"m":return r?"minuta":d?"minutu":"minutou";case"mm":return r||d?l+(i(u)?"minuty":"minut"):l+"minutami";case"h":return r?"hodina":d?"hodinu":"hodinou";case"hh":return r||d?l+(i(u)?"hodiny":"hodin"):l+"hodinami";case"d":return r||d?"den":"dnem";case"dd":return r||d?l+(i(u)?"dny":"dn\xED"):l+"dny";case"M":return r||d?"m\u011Bs\xEDc":"m\u011Bs\xEDcem";case"MM":return r||d?l+(i(u)?"m\u011Bs\xEDce":"m\u011Bs\xEDc\u016F"):l+"m\u011Bs\xEDci";case"y":return r||d?"rok":"rokem";case"yy":return r||d?l+(i(u)?"roky":"let"):l+"lety"}}var a={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(u){return u+"."},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:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e}};return s.default.locale(a,null,!0),a})});var Sn=H((Je,Ue)=>{(function(n,t){typeof Je=="object"&&typeof Ue<"u"?Ue.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_cy=t(n.dayjs)})(Je,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"cy",weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),weekStart:1,weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),ordinal:function(e){return e},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:"mewn %s",past:"%s yn \xF4l",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"}};return s.default.locale(i,null,!0),i})});var bn=H((Pe,We)=>{(function(n,t){typeof Pe=="object"&&typeof We<"u"?We.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_da=t(n.dayjs)})(Pe,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e+"."},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 s.default.locale(i,null,!0),i})});var kn=H((Re,Ze)=>{(function(n,t){typeof Re=="object"&&typeof Ze<"u"?Ze.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_de=t(n.dayjs)})(Re,function(n){"use strict";function t(u){return u&&typeof u=="object"&&"default"in u?u:{default:u}}var s=t(n),i={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 e(u,r,o){var d=i[o];return Array.isArray(d)&&(d=d[r?0:1]),d.replace("%d",u)}var a={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(u){return u+"."},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:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e}};return s.default.locale(a,null,!0),a})});var Hn=H((Ve,Ge)=>{(function(n,t){typeof Ve=="object"&&typeof Ge<"u"?Ge.exports=t():typeof define=="function"&&define.amd?define(t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_en=t()})(Ve,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("_"),ordinal:function(n){var t=["th","st","nd","rd"],s=n%100;return"["+n+(t[(s-20)%10]||t[s]||t[0])+"]"}}})});var jn=H((Ke,Be)=>{(function(n,t){typeof Ke=="object"&&typeof Be<"u"?Be.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_es=t(n.dayjs)})(Ke,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e+"\xBA"}};return s.default.locale(i,null,!0),i})});var Tn=H((Xe,Qe)=>{(function(n,t){typeof Xe=="object"&&typeof Qe<"u"?Qe.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_et=t(n.dayjs)})(Xe,function(n){"use strict";function t(a){return a&&typeof a=="object"&&"default"in a?a:{default:a}}var s=t(n);function i(a,u,r,o){var d={s:["m\xF5ne sekundi","m\xF5ni sekund","paar sekundit"],m:["\xFChe minuti","\xFCks minut"],mm:["%d minuti","%d minutit"],h:["\xFChe tunni","tund aega","\xFCks tund"],hh:["%d tunni","%d tundi"],d:["\xFChe p\xE4eva","\xFCks p\xE4ev"],M:["kuu aja","kuu aega","\xFCks kuu"],MM:["%d kuu","%d kuud"],y:["\xFChe aasta","aasta","\xFCks aasta"],yy:["%d aasta","%d aastat"]};return u?(d[r][2]?d[r][2]:d[r][1]).replace("%d",a):(o?d[r][0]:d[r][1]).replace("%d",a)}var e={name:"et",weekdays:"p\xFChap\xE4ev_esmasp\xE4ev_teisip\xE4ev_kolmap\xE4ev_neljap\xE4ev_reede_laup\xE4ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),months:"jaanuar_veebruar_m\xE4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xE4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),ordinal:function(a){return a+"."},weekStart:1,relativeTime:{future:"%s p\xE4rast",past:"%s tagasi",s:i,m:i,mm:i,h:i,hh:i,d:i,dd:"%d p\xE4eva",M:i,MM:i,y:i,yy:i},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 s.default.locale(e,null,!0),e})});var wn=H((et,tt)=>{(function(n,t){typeof et=="object"&&typeof tt<"u"?tt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_fa=t(n.dayjs)})(et,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e},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 s.default.locale(i,null,!0),i})});var $n=H((nt,it)=>{(function(n,t){typeof nt=="object"&&typeof it<"u"?it.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_fi=t(n.dayjs)})(nt,function(n){"use strict";function t(a){return a&&typeof a=="object"&&"default"in a?a:{default:a}}var s=t(n);function i(a,u,r,o){var d={s:"muutama sekunti",m:"minuutti",mm:"%d minuuttia",h:"tunti",hh:"%d tuntia",d:"p\xE4iv\xE4",dd:"%d p\xE4iv\xE4\xE4",M:"kuukausi",MM:"%d kuukautta",y:"vuosi",yy:"%d vuotta",numbers:"nolla_yksi_kaksi_kolme_nelj\xE4_viisi_kuusi_seitsem\xE4n_kahdeksan_yhdeks\xE4n".split("_")},l={s:"muutaman sekunnin",m:"minuutin",mm:"%d minuutin",h:"tunnin",hh:"%d tunnin",d:"p\xE4iv\xE4n",dd:"%d p\xE4iv\xE4n",M:"kuukauden",MM:"%d kuukauden",y:"vuoden",yy:"%d vuoden",numbers:"nollan_yhden_kahden_kolmen_nelj\xE4n_viiden_kuuden_seitsem\xE4n_kahdeksan_yhdeks\xE4n".split("_")},y=o&&!u?l:d,f=y[r];return a<10?f.replace("%d",y.numbers[a]):f.replace("%d",a)}var e={name:"fi",weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xE4kuu_hein\xE4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xE4_hein\xE4_elo_syys_loka_marras_joulu".split("_"),ordinal:function(a){return a+"."},weekStart:1,yearStart:4,relativeTime:{future:"%s p\xE4\xE4st\xE4",past:"%s sitten",s:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM[ta] YYYY",LLL:"D. MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, D. MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"D. MMM YYYY",lll:"D. MMM YYYY, [klo] HH.mm",llll:"ddd, D. MMM YYYY, [klo] HH.mm"}};return s.default.locale(e,null,!0),e})});var Cn=H((st,rt)=>{(function(n,t){typeof st=="object"&&typeof rt<"u"?rt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_fr=t(n.dayjs)})(st,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),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(e){return""+e+(e===1?"er":"")}};return s.default.locale(i,null,!0),i})});var On=H((at,ut)=>{(function(n,t){typeof at=="object"&&typeof ut<"u"?ut.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_hi=t(n.dayjs)})(at,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e},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 s.default.locale(i,null,!0),i})});var zn=H((ot,dt)=>{(function(n,t){typeof ot=="object"&&typeof dt<"u"?dt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_hu=t(n.dayjs)})(ot,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e+"."},weekStart:1,relativeTime:{future:"%s m\xFAlva",past:"%s",s:function(e,a,u,r){return"n\xE9h\xE1ny m\xE1sodperc"+(r||a?"":"e")},m:function(e,a,u,r){return"egy perc"+(r||a?"":"e")},mm:function(e,a,u,r){return e+" perc"+(r||a?"":"e")},h:function(e,a,u,r){return"egy "+(r||a?"\xF3ra":"\xF3r\xE1ja")},hh:function(e,a,u,r){return e+" "+(r||a?"\xF3ra":"\xF3r\xE1ja")},d:function(e,a,u,r){return"egy "+(r||a?"nap":"napja")},dd:function(e,a,u,r){return e+" "+(r||a?"nap":"napja")},M:function(e,a,u,r){return"egy "+(r||a?"h\xF3nap":"h\xF3napja")},MM:function(e,a,u,r){return e+" "+(r||a?"h\xF3nap":"h\xF3napja")},y:function(e,a,u,r){return"egy "+(r||a?"\xE9v":"\xE9ve")},yy:function(e,a,u,r){return e+" "+(r||a?"\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 s.default.locale(i,null,!0),i})});var An=H((_t,lt)=>{(function(n,t){typeof _t=="object"&&typeof lt<"u"?lt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_hy_am=t(n.dayjs)})(_t,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e},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 s.default.locale(i,null,!0),i})});var In=H((ft,mt)=>{(function(n,t){typeof ft=="object"&&typeof mt<"u"?mt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_id=t(n.dayjs)})(ft,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e+"."}};return s.default.locale(i,null,!0),i})});var xn=H((ct,ht)=>{(function(n,t){typeof ct=="object"&&typeof ht<"u"?ht.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_it=t(n.dayjs)})(ct,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e+"\xBA"}};return s.default.locale(i,null,!0),i})});var qn=H((Mt,yt)=>{(function(n,t){typeof Mt=="object"&&typeof yt<"u"?yt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_ja=t(n.dayjs)})(Mt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e+"\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(e){return e<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 s.default.locale(i,null,!0),i})});var Nn=H((Yt,pt)=>{(function(n,t){typeof Yt=="object"&&typeof pt<"u"?pt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_ka=t(n.dayjs)})(Yt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e}};return s.default.locale(i,null,!0),i})});var En=H((Dt,Lt)=>{(function(n,t){typeof Dt=="object"&&typeof Lt<"u"?Lt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_km=t(n.dayjs)})(Dt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"km",weekdays:"\u17A2\u17B6\u1791\u17B7\u178F\u17D2\u1799_\u1785\u17D0\u1793\u17D2\u1791_\u17A2\u1784\u17D2\u1782\u17B6\u179A_\u1796\u17BB\u1792_\u1796\u17D2\u179A\u17A0\u179F\u17D2\u1794\u178F\u17B7\u17CD_\u179F\u17BB\u1780\u17D2\u179A_\u179F\u17C5\u179A\u17CD".split("_"),months:"\u1798\u1780\u179A\u17B6_\u1780\u17BB\u1798\u17D2\u1797\u17C8_\u1798\u17B8\u1793\u17B6_\u1798\u17C1\u179F\u17B6_\u17A7\u179F\u1797\u17B6_\u1798\u17B7\u1790\u17BB\u1793\u17B6_\u1780\u1780\u17D2\u1780\u178A\u17B6_\u179F\u17B8\u17A0\u17B6_\u1780\u1789\u17D2\u1789\u17B6_\u178F\u17BB\u179B\u17B6_\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6_\u1792\u17D2\u1793\u17BC".split("_"),weekStart:1,weekdaysShort:"\u17A2\u17B6_\u1785_\u17A2_\u1796_\u1796\u17D2\u179A_\u179F\u17BB_\u179F".split("_"),monthsShort:"\u1798\u1780\u179A\u17B6_\u1780\u17BB\u1798\u17D2\u1797\u17C8_\u1798\u17B8\u1793\u17B6_\u1798\u17C1\u179F\u17B6_\u17A7\u179F\u1797\u17B6_\u1798\u17B7\u1790\u17BB\u1793\u17B6_\u1780\u1780\u17D2\u1780\u178A\u17B6_\u179F\u17B8\u17A0\u17B6_\u1780\u1789\u17D2\u1789\u17B6_\u178F\u17BB\u179B\u17B6_\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6_\u1792\u17D2\u1793\u17BC".split("_"),weekdaysMin:"\u17A2\u17B6_\u1785_\u17A2_\u1796_\u1796\u17D2\u179A_\u179F\u17BB_\u179F".split("_"),ordinal:function(e){return e},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\u1791\u17C0\u178F",past:"%s\u1798\u17BB\u1793",s:"\u1794\u17C9\u17BB\u1793\u17D2\u1798\u17B6\u1793\u179C\u17B7\u1793\u17B6\u1791\u17B8",m:"\u1798\u17BD\u1799\u1793\u17B6\u1791\u17B8",mm:"%d \u1793\u17B6\u1791\u17B8",h:"\u1798\u17BD\u1799\u1798\u17C9\u17C4\u1784",hh:"%d \u1798\u17C9\u17C4\u1784",d:"\u1798\u17BD\u1799\u1790\u17D2\u1784\u17C3",dd:"%d \u1790\u17D2\u1784\u17C3",M:"\u1798\u17BD\u1799\u1781\u17C2",MM:"%d \u1781\u17C2",y:"\u1798\u17BD\u1799\u1786\u17D2\u1793\u17B6\u17C6",yy:"%d \u1786\u17D2\u1793\u17B6\u17C6"}};return s.default.locale(i,null,!0),i})});var Fn=H((vt,gt)=>{(function(n,t){typeof vt=="object"&&typeof gt<"u"?gt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_lt=t(n.dayjs)})(vt,function(n){"use strict";function t(o){return o&&typeof o=="object"&&"default"in o?o:{default:o}}var s=t(n),i="sausio_vasario_kovo_baland\u017Eio_gegu\u017E\u0117s_bir\u017Eelio_liepos_rugpj\u016B\u010Dio_rugs\u0117jo_spalio_lapkri\u010Dio_gruod\u017Eio".split("_"),e="sausis_vasaris_kovas_balandis_gegu\u017E\u0117_bir\u017Eelis_liepa_rugpj\u016Btis_rugs\u0117jis_spalis_lapkritis_gruodis".split("_"),a=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,u=function(o,d){return a.test(d)?i[o.month()]:e[o.month()]};u.s=e,u.f=i;var r={name:"lt",weekdays:"sekmadienis_pirmadienis_antradienis_tre\u010Diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),weekdaysShort:"sek_pir_ant_tre_ket_pen_\u0161e\u0161".split("_"),weekdaysMin:"s_p_a_t_k_pn_\u0161".split("_"),months:u,monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),ordinal:function(o){return o+"."},weekStart:1,relativeTime:{future:"u\u017E %s",past:"prie\u0161 %s",s:"kelias sekundes",m:"minut\u0119",mm:"%d minutes",h:"valand\u0105",hh:"%d valandas",d:"dien\u0105",dd:"%d dienas",M:"m\u0117nes\u012F",MM:"%d m\u0117nesius",y:"metus",yy:"%d metus"},format:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"}};return s.default.locale(r,null,!0),r})});var Jn=H((St,bt)=>{(function(n,t){typeof St=="object"&&typeof bt<"u"?bt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_lv=t(n.dayjs)})(St,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={name:"lv",weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena".split("_"),months:"janv\u0101ris_febru\u0101ris_marts_apr\u012Blis_maijs_j\u016Bnijs_j\u016Blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),weekStart:1,weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016Bn_j\u016Bl_aug_sep_okt_nov_dec".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},relativeTime:{future:"p\u0113c %s",past:"pirms %s",s:"da\u017E\u0101m sekund\u0113m",m:"min\u016Btes",mm:"%d min\u016Bt\u0113m",h:"stundas",hh:"%d stund\u0101m",d:"dienas",dd:"%d dien\u0101m",M:"m\u0113ne\u0161a",MM:"%d m\u0113ne\u0161iem",y:"gada",yy:"%d gadiem"}};return s.default.locale(i,null,!0),i})});var Un=H((kt,Ht)=>{(function(n,t){typeof kt=="object"&&typeof Ht<"u"?Ht.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_ms=t(n.dayjs)})(kt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e+"."}};return s.default.locale(i,null,!0),i})});var Pn=H((jt,Tt)=>{(function(n,t){typeof jt=="object"&&typeof Tt<"u"?Tt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_my=t(n.dayjs)})(jt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e},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 s.default.locale(i,null,!0),i})});var Wn=H((wt,$t)=>{(function(n,t){typeof wt=="object"&&typeof $t<"u"?$t.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_nl=t(n.dayjs)})(wt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return"["+e+(e===1||e===8||e>=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 s.default.locale(i,null,!0),i})});var Rn=H((Ct,Ot)=>{(function(n,t){typeof Ct=="object"&&typeof Ot<"u"?Ot.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_pl=t(n.dayjs)})(Ct,function(n){"use strict";function t(l){return l&&typeof l=="object"&&"default"in l?l:{default:l}}var s=t(n);function i(l){return l%10<5&&l%10>1&&~~(l/10)%10!=1}function e(l,y,f){var _=l+" ";switch(f){case"m":return y?"minuta":"minut\u0119";case"mm":return _+(i(l)?"minuty":"minut");case"h":return y?"godzina":"godzin\u0119";case"hh":return _+(i(l)?"godziny":"godzin");case"MM":return _+(i(l)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return _+(i(l)?"lata":"lat")}}var a="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015Bnia_pa\u017Adziernika_listopada_grudnia".split("_"),u="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017Adziernik_listopad_grudzie\u0144".split("_"),r=/D MMMM/,o=function(l,y){return r.test(y)?a[l.month()]:u[l.month()]};o.s=u,o.f=a;var d={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:o,monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017A_lis_gru".split("_"),ordinal:function(l){return l+"."},weekStart:1,yearStart:4,relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:e,mm:e,h:e,hh:e,d:"1 dzie\u0144",dd:"%d dni",M:"miesi\u0105c",MM:e,y:"rok",yy:e},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 s.default.locale(d,null,!0),d})});var Zn=H((zt,At)=>{(function(n,t){typeof zt=="object"&&typeof At<"u"?At.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_pt_br=t(n.dayjs)})(zt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e+"\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 s.default.locale(i,null,!0),i})});var Vn=H((It,xt)=>{(function(n,t){typeof It=="object"&&typeof xt<"u"?xt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_pt=t(n.dayjs)})(It,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e+"\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 s.default.locale(i,null,!0),i})});var Gn=H((qt,Nt)=>{(function(n,t){typeof qt=="object"&&typeof Nt<"u"?Nt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_ro=t(n.dayjs)})(qt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e}};return s.default.locale(i,null,!0),i})});var Kn=H((Et,Ft)=>{(function(n,t){typeof Et=="object"&&typeof Ft<"u"?Ft.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_ru=t(n.dayjs)})(Et,function(n){"use strict";function t(f){return f&&typeof f=="object"&&"default"in f?f:{default:f}}var s=t(n),i="\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("_"),e="\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("_"),a="\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("_"),u="\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("_"),r=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function o(f,_,h){var D,p;return h==="m"?_?"\u043C\u0438\u043D\u0443\u0442\u0430":"\u043C\u0438\u043D\u0443\u0442\u0443":f+" "+(D=+f,p={mm:_?"\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"}[h].split("_"),D%10==1&&D%100!=11?p[0]:D%10>=2&&D%10<=4&&(D%100<10||D%100>=20)?p[1]:p[2])}var d=function(f,_){return r.test(_)?i[f.month()]:e[f.month()]};d.s=e,d.f=i;var l=function(f,_){return r.test(_)?a[f.month()]:u[f.month()]};l.s=u,l.f=a;var y={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:d,monthsShort:l,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:o,mm:o,h:"\u0447\u0430\u0441",hh:o,d:"\u0434\u0435\u043D\u044C",dd:o,M:"\u043C\u0435\u0441\u044F\u0446",MM:o,y:"\u0433\u043E\u0434",yy:o},ordinal:function(f){return f},meridiem:function(f){return f<4?"\u043D\u043E\u0447\u0438":f<12?"\u0443\u0442\u0440\u0430":f<17?"\u0434\u043D\u044F":"\u0432\u0435\u0447\u0435\u0440\u0430"}};return s.default.locale(y,null,!0),y})});var Bn=H((Jt,Ut)=>{(function(n,t){typeof Jt=="object"&&typeof Ut<"u"?Ut.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_sv=t(n.dayjs)})(Jt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){var a=e%10;return"["+e+(a===1||a===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 s.default.locale(i,null,!0),i})});var Xn=H((Pt,Wt)=>{(function(n,t){typeof Pt=="object"&&typeof Wt<"u"?Wt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_tr=t(n.dayjs)})(Pt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e+"."}};return s.default.locale(i,null,!0),i})});var Qn=H((Rt,Zt)=>{(function(n,t){typeof Rt=="object"&&typeof Zt<"u"?Zt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_uk=t(n.dayjs)})(Rt,function(n){"use strict";function t(d){return d&&typeof d=="object"&&"default"in d?d:{default:d}}var s=t(n),i="\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("_"),e="\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("_"),a=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function u(d,l,y){var f,_;return y==="m"?l?"\u0445\u0432\u0438\u043B\u0438\u043D\u0430":"\u0445\u0432\u0438\u043B\u0438\u043D\u0443":y==="h"?l?"\u0433\u043E\u0434\u0438\u043D\u0430":"\u0433\u043E\u0434\u0438\u043D\u0443":d+" "+(f=+d,_={ss:l?"\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:l?"\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:l?"\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"}[y].split("_"),f%10==1&&f%100!=11?_[0]:f%10>=2&&f%10<=4&&(f%100<10||f%100>=20)?_[1]:_[2])}var r=function(d,l){return a.test(l)?i[d.month()]:e[d.month()]};r.s=e,r.f=i;var o={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:r,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:u,mm:u,h:u,hh:u,d:"\u0434\u0435\u043D\u044C",dd:u,M:"\u043C\u0456\u0441\u044F\u0446\u044C",MM:u,y:"\u0440\u0456\u043A",yy:u},ordinal:function(d){return d},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 s.default.locale(o,null,!0),o})});var ei=H((Vt,Gt)=>{(function(n,t){typeof Vt=="object"&&typeof Gt<"u"?Gt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_vi=t(n.dayjs)})(Vt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e){return e},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 s.default.locale(i,null,!0),i})});var ti=H((Kt,Bt)=>{(function(n,t){typeof Kt=="object"&&typeof Bt<"u"?Bt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_zh_cn=t(n.dayjs)})(Kt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e,a){return a==="W"?e+"\u5468":e+"\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(e,a){var u=100*e+a;return u<600?"\u51CC\u6668":u<900?"\u65E9\u4E0A":u<1100?"\u4E0A\u5348":u<1300?"\u4E2D\u5348":u<1800?"\u4E0B\u5348":"\u665A\u4E0A"}};return s.default.locale(i,null,!0),i})});var ni=H((Xt,Qt)=>{(function(n,t){typeof Xt=="object"&&typeof Qt<"u"?Qt.exports=t(j()):typeof define=="function"&&define.amd?define(["dayjs"],t):(n=typeof globalThis<"u"?globalThis:n||self).dayjs_locale_zh_tw=t(n.dayjs)})(Xt,function(n){"use strict";function t(e){return e&&typeof e=="object"&&"default"in e?e:{default:e}}var s=t(n),i={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(e,a){return a==="W"?e+"\u9031":e+"\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"},meridiem:function(e,a){var u=100*e+a;return u<600?"\u51CC\u6668":u<900?"\u65E9\u4E0A":u<1100?"\u4E0A\u5348":u<1300?"\u4E2D\u5348":u<1800?"\u4E0B\u5348":"\u665A\u4E0A"}};return s.default.locale(i,null,!0),i})});var tn=60,nn=tn*60,sn=nn*24,ci=sn*7,ae=1e3,fe=tn*ae,pe=nn*ae,rn=sn*ae,an=ci*ae,de="millisecond",ne="second",ie="minute",se="hour",K="day",oe="week",R="month",me="quarter",B="year",re="date",un="YYYY-MM-DDTHH:mm:ssZ",De="Invalid Date",on=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,dn=/\[([^\]]+)]|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;var ln={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("_"),ordinal:function(t){var s=["th","st","nd","rd"],i=t%100;return"["+t+(s[(i-20)%10]||s[i]||s[0])+"]"}};var Le=function(t,s,i){var e=String(t);return!e||e.length>=s?t:""+Array(s+1-e.length).join(i)+t},hi=function(t){var s=-t.utcOffset(),i=Math.abs(s),e=Math.floor(i/60),a=i%60;return(s<=0?"+":"-")+Le(e,2,"0")+":"+Le(a,2,"0")},Mi=function n(t,s){if(t.date()1)return n(u[0])}else{var r=t.name;ue[r]=t,e=r}return!i&&e&&(_e=e),e||!i&&_e},J=function(t,s){if(ve(t))return t.clone();var i=typeof s=="object"?s:{};return i.date=t,i.args=arguments,new he(i)},Di=function(t,s){return J(t,{locale:s.$L,utc:s.$u,x:s.$x,$offset:s.$offset})},z=fn;z.l=ce;z.i=ve;z.w=Di;var Li=function(t){var s=t.date,i=t.utc;if(s===null)return new Date(NaN);if(z.u(s))return new Date;if(s instanceof Date)return new Date(s);if(typeof s=="string"&&!/Z$/i.test(s)){var e=s.match(on);if(e){var a=e[2]-1||0,u=(e[7]||"0").substring(0,3);return i?new Date(Date.UTC(e[1],a,e[3]||1,e[4]||0,e[5]||0,e[6]||0,u)):new Date(e[1],a,e[3]||1,e[4]||0,e[5]||0,e[6]||0,u)}}return new Date(s)},he=function(){function n(s){this.$L=ce(s.locale,null,!0),this.parse(s),this.$x=this.$x||s.x||{},this[mn]=!0}var t=n.prototype;return t.parse=function(i){this.$d=Li(i),this.init()},t.init=function(){var i=this.$d;this.$y=i.getFullYear(),this.$M=i.getMonth(),this.$D=i.getDate(),this.$W=i.getDay(),this.$H=i.getHours(),this.$m=i.getMinutes(),this.$s=i.getSeconds(),this.$ms=i.getMilliseconds()},t.$utils=function(){return z},t.isValid=function(){return this.$d.toString()!==De},t.isSame=function(i,e){var a=J(i);return this.startOf(e)<=a&&a<=this.endOf(e)},t.isAfter=function(i,e){return J(i)this.togglePanelVisibility(this.$refs.button)),this.$watch("focusedMonth",()=>{this.focusedMonth=+this.focusedMonth,this.focusedDate.month()!==this.focusedMonth&&(this.focusedDate=this.focusedDate.month(this.focusedMonth))}),this.$watch("focusedYear",()=>{if(this.focusedYear?.length>4&&(this.focusedYear=this.focusedYear.substring(0,4)),!this.focusedYear||this.focusedYear?.length!==4)return;let o=+this.focusedYear;Number.isInteger(o)||(o=A().tz(u).year(),this.focusedYear=o),this.focusedDate.year()!==o&&(this.focusedDate=this.focusedDate.year(o))}),this.$watch("focusedDate",()=>{let o=this.focusedDate.month(),d=this.focusedDate.year();this.focusedMonth!==o&&(this.focusedMonth=o),this.focusedYear!==d&&(this.focusedYear=d),this.setupDaysGrid()}),this.$watch("hour",()=>{let o=+this.hour;if(Number.isInteger(o)?o>23?this.hour=0:o<0?this.hour=23:this.hour=o:this.hour=0,this.isClearingState)return;let d=this.getSelectedDate()??this.focusedDate;this.setState(d.hour(this.hour??0))}),this.$watch("minute",()=>{let o=+this.minute;if(Number.isInteger(o)?o>59?this.minute=0:o<0?this.minute=59:this.minute=o:this.minute=0,this.isClearingState)return;let d=this.getSelectedDate()??this.focusedDate;this.setState(d.minute(this.minute??0))}),this.$watch("second",()=>{let o=+this.second;if(Number.isInteger(o)?o>59?this.second=0:o<0?this.second=59:this.second=o:this.second=0,this.isClearingState)return;let d=this.getSelectedDate()??this.focusedDate;this.setState(d.second(this.second??0))}),this.$watch("state",()=>{if(this.state===void 0)return;let o=this.getSelectedDate();if(o===null){this.clearState();return}this.getMaxDate()!==null&&o?.isAfter(this.getMaxDate())&&(o=null),this.getMinDate()!==null&&o?.isBefore(this.getMinDate())&&(o=null);let d=o?.hour()??0;this.hour!==d&&(this.hour=d);let l=o?.minute()??0;this.minute!==l&&(this.minute=l);let y=o?.second()??0;this.second!==y&&(this.second=y),this.setDisplayText()})},clearState:function(){this.isClearingState=!0,this.setState(null),this.hour=0,this.minute=0,this.second=0,this.$nextTick(()=>this.isClearingState=!1)},dateIsDisabled:function(r){return!!(this.$refs?.disabledDates&&JSON.parse(this.$refs.disabledDates.value??[]).some(o=>(o=A(o),o.isValid()?o.isSame(r,"day"):!1))||this.getMaxDate()&&r.isAfter(this.getMaxDate(),"day")||this.getMinDate()&&r.isBefore(this.getMinDate(),"day"))},dayIsDisabled:function(r){return this.focusedDate??(this.focusedDate=A().tz(u)),this.dateIsDisabled(this.focusedDate.date(r))},dayIsSelected:function(r){let o=this.getSelectedDate();return o===null?!1:(this.focusedDate??(this.focusedDate=A().tz(u)),o.date()===r&&o.month()===this.focusedDate.month()&&o.year()===this.focusedDate.year())},dayIsToday:function(r){let o=A().tz(u);return this.focusedDate??(this.focusedDate=o),o.date()===r&&o.month()===this.focusedDate.month()&&o.year()===this.focusedDate.year()},focusPreviousDay:function(){this.focusedDate??(this.focusedDate=A().tz(u)),this.focusedDate=this.focusedDate.subtract(1,"day")},focusPreviousWeek:function(){this.focusedDate??(this.focusedDate=A().tz(u)),this.focusedDate=this.focusedDate.subtract(1,"week")},focusNextDay:function(){this.focusedDate??(this.focusedDate=A().tz(u)),this.focusedDate=this.focusedDate.add(1,"day")},focusNextWeek:function(){this.focusedDate??(this.focusedDate=A().tz(u)),this.focusedDate=this.focusedDate.add(1,"week")},getDayLabels:function(){let r=A.weekdaysShort();return t===0?r:[...r.slice(t),...r.slice(0,t)]},getMaxDate:function(){let r=A(this.$refs.maxDate?.value);return r.isValid()?r:null},getMinDate:function(){let r=A(this.$refs.minDate?.value);return r.isValid()?r:null},getSelectedDate:function(){if(this.state===void 0||this.state===null)return null;let r=A(this.state);return r.isValid()?r:null},togglePanelVisibility:function(){this.isOpen()||(this.focusedDate=this.getSelectedDate()??this.getMinDate()??A().tz(u),this.setupDaysGrid()),this.$refs.panel.toggle(this.$refs.button)},selectDate:function(r=null){r&&this.setFocusedDay(r),this.focusedDate??(this.focusedDate=A().tz(u)),this.setState(this.focusedDate),e&&this.togglePanelVisibility()},setDisplayText:function(){this.displayText=this.getSelectedDate()?this.getSelectedDate().format(n):""},setMonths:function(){this.months=A.months()},setDayLabels:function(){this.dayLabels=this.getDayLabels()},setupDaysGrid:function(){this.focusedDate??(this.focusedDate=A().tz(u)),this.emptyDaysInFocusedMonth=Array.from({length:this.focusedDate.date(8-t).day()},(r,o)=>o+1),this.daysInFocusedMonth=Array.from({length:this.focusedDate.daysInMonth()},(r,o)=>o+1)},setFocusedDay:function(r){this.focusedDate=(this.focusedDate??A().tz(u)).date(r)},setState:function(r){if(r===null){this.state=null,this.setDisplayText();return}this.dateIsDisabled(r)||(this.state=r.hour(this.hour??0).minute(this.minute??0).second(this.second??0).format("YYYY-MM-DD HH:mm:ss"),this.setDisplayText())},isOpen:function(){return this.$refs.panel?.style.display==="block"}}}var ii={ar:pn(),bs:Dn(),ca:Ln(),ckb:Ne(),cs:gn(),cy:Sn(),da:bn(),de:kn(),en:Hn(),es:jn(),et:Tn(),fa:wn(),fi:$n(),fr:Cn(),hi:On(),hu:zn(),hy:An(),id:In(),it:xn(),ja:qn(),ka:Nn(),km:En(),ku:Ne(),lt:Fn(),lv:Jn(),ms:Un(),my:Pn(),nl:Wn(),pl:Rn(),pt_BR:Zn(),pt_PT:Vn(),ro:Gn(),ru:Kn(),sv:Bn(),tr:Xn(),uk:Qn(),vi:ei(),zh_CN:ti(),zh_TW:ni()};export{vi as default}; diff --git a/vendor/filament/forms/dist/components/file-upload.js b/vendor/filament/forms/dist/components/file-upload.js deleted file mode 100644 index 83bdae0a..00000000 --- a/vendor/filament/forms/dist/components/file-upload.js +++ /dev/null @@ -1,123 +0,0 @@ -var Bo=Object.defineProperty;var Go=(e,t)=>{for(var i in t)Bo(e,i,{get:t[i],enumerable:!0})};var Ji={};Go(Ji,{FileOrigin:()=>xt,FileStatus:()=>ft,OptionTypes:()=>zi,Status:()=>Zn,create:()=>st,destroy:()=>ct,find:()=>Bi,getOptions:()=>Gi,parse:()=>Ni,registerPlugin:()=>be,setOptions:()=>Mt,supported:()=>Ci});var Vo=e=>e instanceof HTMLElement,Uo=(e,t=[],i=[])=>{let a={...e},n=[],r=[],o=()=>({...a}),l=()=>{let p=[...n];return n.length=0,p},s=()=>{let p=[...r];r.length=0,p.forEach(({type:m,data:g})=>{u(m,g)})},u=(p,m,g)=>{if(g&&!document.hidden){r.push({type:p,data:m});return}f[p]&&f[p](m),n.push({type:p,data:m})},c=(p,...m)=>h[p]?h[p](...m):null,d={getState:o,processActionQueue:l,processDispatchQueue:s,dispatch:u,query:c},h={};t.forEach(p=>{h={...p(a),...h}});let f={};return i.forEach(p=>{f={...p(u,c,a),...f}}),d},ko=(e,t,i)=>{if(typeof i=="function"){e[t]=i;return}Object.defineProperty(e,t,{...i})},ee=(e,t)=>{for(let i in e)e.hasOwnProperty(i)&&t(i,e[i])},Ve=e=>{let t={};return ee(e,i=>{ko(t,i,e[i])}),t},ae=(e,t,i=null)=>{if(i===null)return e.getAttribute(t)||e.hasAttribute(t);e.setAttribute(t,i)},Ho="http://www.w3.org/2000/svg",Wo=["svg","path"],Sa=e=>Wo.includes(e),Jt=(e,t,i={})=>{typeof t=="object"&&(i=t,t=null);let a=Sa(e)?document.createElementNS(Ho,e):document.createElement(e);return t&&(Sa(e)?ae(a,"class",t):a.className=t),ee(i,(n,r)=>{ae(a,n,r)}),a},Yo=e=>(t,i)=>{typeof i<"u"&&e.children[i]?e.insertBefore(t,e.children[i]):e.appendChild(t)},$o=(e,t)=>(i,a)=>(typeof a<"u"?t.splice(a,0,i):t.push(i),i),qo=(e,t)=>i=>(t.splice(t.indexOf(i),1),i.element.parentNode&&e.removeChild(i.element),i),Xo=(()=>typeof window<"u"&&typeof window.document<"u")(),dn=()=>Xo,jo=dn()?Jt("svg"):{},Qo="children"in jo?e=>e.children.length:e=>e.childNodes.length,un=(e,t,i,a)=>{let n=i[0]||e.left,r=i[1]||e.top,o=n+e.width,l=r+e.height*(a[1]||1),s={element:{...e},inner:{left:e.left,top:e.top,right:e.right,bottom:e.bottom},outer:{left:n,top:r,right:o,bottom:l}};return t.filter(u=>!u.isRectIgnored()).map(u=>u.rect).forEach(u=>{wa(s.inner,{...u.inner}),wa(s.outer,{...u.outer})}),va(s.inner),s.outer.bottom+=s.element.marginBottom,s.outer.right+=s.element.marginRight,va(s.outer),s},wa=(e,t)=>{t.top+=e.top,t.right+=e.left,t.bottom+=e.top,t.left+=e.left,t.bottom>e.bottom&&(e.bottom=t.bottom),t.right>e.right&&(e.right=t.right)},va=e=>{e.width=e.right-e.left,e.height=e.bottom-e.top},Ye=e=>typeof e=="number",Zo=(e,t,i,a=.001)=>Math.abs(e-t){let a=null,n=null,r=0,o=!1,u=Ve({interpolate:(c,d)=>{if(o)return;if(!(Ye(a)&&Ye(n))){o=!0,r=0;return}let h=-(n-a)*e;r+=h/i,n+=r,r*=t,Zo(n,a,r)||d?(n=a,r=0,o=!0,u.onupdate(n),u.oncomplete(n)):u.onupdate(n)},target:{set:c=>{if(Ye(c)&&!Ye(n)&&(n=c),a===null&&(a=c,n=c),a=c,n===a||typeof a>"u"){o=!0,r=0,u.onupdate(n),u.oncomplete(n);return}o=!1},get:()=>a},resting:{get:()=>o},onupdate:c=>{},oncomplete:c=>{}});return u};var Jo=e=>e<.5?2*e*e:-1+(4-2*e)*e,el=({duration:e=500,easing:t=Jo,delay:i=0}={})=>{let a=null,n,r,o=!0,l=!1,s=null,c=Ve({interpolate:(d,h)=>{o||s===null||(a===null&&(a=d),!(d-a=e||h?(n=1,r=l?0:1,c.onupdate(r*s),c.oncomplete(r*s),o=!0):(r=n/e,c.onupdate((n>=0?t(l?1-r:r):0)*s))))},target:{get:()=>l?0:s,set:d=>{if(s===null){s=d,c.onupdate(d),c.oncomplete(d);return}do},onupdate:d=>{},oncomplete:d=>{}});return c},Aa={spring:Ko,tween:el},tl=(e,t,i)=>{let a=e[t]&&typeof e[t][i]=="object"?e[t][i]:e[t]||e,n=typeof a=="string"?a:a.type,r=typeof a=="object"?{...a}:{};return Aa[n]?Aa[n](r):null},Vi=(e,t,i,a=!1)=>{t=Array.isArray(t)?t:[t],t.forEach(n=>{e.forEach(r=>{let o=r,l=()=>i[r],s=u=>i[r]=u;typeof r=="object"&&(o=r.key,l=r.getter||l,s=r.setter||s),!(n[o]&&!a)&&(n[o]={get:l,set:s})})})},il=({mixinConfig:e,viewProps:t,viewInternalAPI:i,viewExternalAPI:a})=>{let n={...t},r=[];return ee(e,(o,l)=>{let s=tl(l);if(!s)return;s.onupdate=c=>{t[o]=c},s.target=n[o],Vi([{key:o,setter:c=>{s.target!==c&&(s.target=c)},getter:()=>t[o]}],[i,a],t,!0),r.push(s)}),{write:o=>{let l=document.hidden,s=!0;return r.forEach(u=>{u.resting||(s=!1),u.interpolate(o,l)}),s},destroy:()=>{}}},al=e=>(t,i)=>{e.addEventListener(t,i)},nl=e=>(t,i)=>{e.removeEventListener(t,i)},rl=({mixinConfig:e,viewProps:t,viewInternalAPI:i,viewExternalAPI:a,viewState:n,view:r})=>{let o=[],l=al(r.element),s=nl(r.element);return a.on=(u,c)=>{o.push({type:u,fn:c}),l(u,c)},a.off=(u,c)=>{o.splice(o.findIndex(d=>d.type===u&&d.fn===c),1),s(u,c)},{write:()=>!0,destroy:()=>{o.forEach(u=>{s(u.type,u.fn)})}}},ol=({mixinConfig:e,viewProps:t,viewExternalAPI:i})=>{Vi(e,i,t)},he=e=>e!=null,ll={opacity:1,scaleX:1,scaleY:1,translateX:0,translateY:0,rotateX:0,rotateY:0,rotateZ:0,originX:0,originY:0},sl=({mixinConfig:e,viewProps:t,viewInternalAPI:i,viewExternalAPI:a,view:n})=>{let r={...t},o={};Vi(e,[i,a],t);let l=()=>[t.translateX||0,t.translateY||0],s=()=>[t.scaleX||0,t.scaleY||0],u=()=>n.rect?un(n.rect,n.childViews,l(),s()):null;return i.rect={get:u},a.rect={get:u},e.forEach(c=>{t[c]=typeof r[c]>"u"?ll[c]:r[c]}),{write:()=>{if(cl(o,t))return dl(n.element,t),Object.assign(o,{...t}),!0},destroy:()=>{}}},cl=(e,t)=>{if(Object.keys(e).length!==Object.keys(t).length)return!0;for(let i in t)if(t[i]!==e[i])return!0;return!1},dl=(e,{opacity:t,perspective:i,translateX:a,translateY:n,scaleX:r,scaleY:o,rotateX:l,rotateY:s,rotateZ:u,originX:c,originY:d,width:h,height:f})=>{let p="",m="";(he(c)||he(d))&&(m+=`transform-origin: ${c||0}px ${d||0}px;`),he(i)&&(p+=`perspective(${i}px) `),(he(a)||he(n))&&(p+=`translate3d(${a||0}px, ${n||0}px, 0) `),(he(r)||he(o))&&(p+=`scale3d(${he(r)?r:1}, ${he(o)?o:1}, 1) `),he(u)&&(p+=`rotateZ(${u}rad) `),he(l)&&(p+=`rotateX(${l}rad) `),he(s)&&(p+=`rotateY(${s}rad) `),p.length&&(m+=`transform:${p};`),he(t)&&(m+=`opacity:${t};`,t===0&&(m+="visibility:hidden;"),t<1&&(m+="pointer-events:none;")),he(f)&&(m+=`height:${f}px;`),he(h)&&(m+=`width:${h}px;`);let g=e.elementCurrentStyle||"";(m.length!==g.length||m!==g)&&(e.style.cssText=m,e.elementCurrentStyle=m)},ul={styles:sl,listeners:rl,animations:il,apis:ol},La=(e={},t={},i={})=>(t.layoutCalculated||(e.paddingTop=parseInt(i.paddingTop,10)||0,e.marginTop=parseInt(i.marginTop,10)||0,e.marginRight=parseInt(i.marginRight,10)||0,e.marginBottom=parseInt(i.marginBottom,10)||0,e.marginLeft=parseInt(i.marginLeft,10)||0,t.layoutCalculated=!0),e.left=t.offsetLeft||0,e.top=t.offsetTop||0,e.width=t.offsetWidth||0,e.height=t.offsetHeight||0,e.right=e.left+e.width,e.bottom=e.top+e.height,e.scrollTop=t.scrollTop,e.hidden=t.offsetParent===null,e),ne=({tag:e="div",name:t=null,attributes:i={},read:a=()=>{},write:n=()=>{},create:r=()=>{},destroy:o=()=>{},filterFrameActionsForChild:l=(f,p)=>p,didCreateView:s=()=>{},didWriteView:u=()=>{},ignoreRect:c=!1,ignoreRectUpdate:d=!1,mixins:h=[]}={})=>(f,p={})=>{let m=Jt(e,`filepond--${t}`,i),g=window.getComputedStyle(m,null),b=La(),E=null,T=!1,_=[],y=[],I={},v={},R=[n],S=[a],D=[o],x=()=>m,O=()=>_.concat(),z=()=>I,A=U=>(W,$)=>W(U,$),F=()=>E||(E=un(b,_,[0,0],[1,1]),E),w=()=>g,L=()=>{E=null,_.forEach($=>$._read()),!(d&&b.width&&b.height)&&La(b,m,g);let W={root:j,props:p,rect:b};S.forEach($=>$(W))},C=(U,W,$)=>{let oe=W.length===0;return R.forEach(N=>{N({props:p,root:j,actions:W,timestamp:U,shouldOptimize:$})===!1&&(oe=!1)}),y.forEach(N=>{N.write(U)===!1&&(oe=!1)}),_.filter(N=>!!N.element.parentNode).forEach(N=>{N._write(U,l(N,W),$)||(oe=!1)}),_.forEach((N,B)=>{N.element.parentNode||(j.appendChild(N.element,B),N._read(),N._write(U,l(N,W),$),oe=!1)}),T=oe,u({props:p,root:j,actions:W,timestamp:U}),oe},P=()=>{y.forEach(U=>U.destroy()),D.forEach(U=>{U({root:j,props:p})}),_.forEach(U=>U._destroy())},V={element:{get:x},style:{get:w},childViews:{get:O}},G={...V,rect:{get:F},ref:{get:z},is:U=>t===U,appendChild:Yo(m),createChildView:A(f),linkView:U=>(_.push(U),U),unlinkView:U=>{_.splice(_.indexOf(U),1)},appendChildView:$o(m,_),removeChildView:qo(m,_),registerWriter:U=>R.push(U),registerReader:U=>S.push(U),registerDestroyer:U=>D.push(U),invalidateLayout:()=>m.layoutCalculated=!1,dispatch:f.dispatch,query:f.query},q={element:{get:x},childViews:{get:O},rect:{get:F},resting:{get:()=>T},isRectIgnored:()=>c,_read:L,_write:C,_destroy:P},X={...V,rect:{get:()=>b}};Object.keys(h).sort((U,W)=>U==="styles"?1:W==="styles"?-1:0).forEach(U=>{let W=ul[U]({mixinConfig:h[U],viewProps:p,viewState:v,viewInternalAPI:G,viewExternalAPI:q,view:Ve(X)});W&&y.push(W)});let j=Ve(G);r({root:j,props:p});let de=Qo(m);return _.forEach((U,W)=>{j.appendChild(U.element,de+W)}),s(j),Ve(q)},hl=(e,t,i=60)=>{let a="__framePainter";if(window[a]){window[a].readers.push(e),window[a].writers.push(t);return}window[a]={readers:[e],writers:[t]};let n=window[a],r=1e3/i,o=null,l=null,s=null,u=null,c=()=>{document.hidden?(s=()=>window.setTimeout(()=>d(performance.now()),r),u=()=>window.clearTimeout(l)):(s=()=>window.requestAnimationFrame(d),u=()=>window.cancelAnimationFrame(l))};document.addEventListener("visibilitychange",()=>{u&&u(),c(),d(performance.now())});let d=h=>{l=s(d),o||(o=h);let f=h-o;f<=r||(o=h-f%r,n.readers.forEach(p=>p()),n.writers.forEach(p=>p(h)))};return c(),d(performance.now()),{pause:()=>{u(l)}}},pe=(e,t)=>({root:i,props:a,actions:n=[],timestamp:r,shouldOptimize:o})=>{n.filter(l=>e[l.type]).forEach(l=>e[l.type]({root:i,props:a,action:l.data,timestamp:r,shouldOptimize:o})),t&&t({root:i,props:a,actions:n,timestamp:r,shouldOptimize:o})},Ma=(e,t)=>t.parentNode.insertBefore(e,t),Oa=(e,t)=>t.parentNode.insertBefore(e,t.nextSibling),ai=e=>Array.isArray(e),ze=e=>e==null,fl=e=>e.trim(),ni=e=>""+e,pl=(e,t=",")=>ze(e)?[]:ai(e)?e:ni(e).split(t).map(fl).filter(i=>i.length),hn=e=>typeof e=="boolean",fn=e=>hn(e)?e:e==="true",fe=e=>typeof e=="string",pn=e=>Ye(e)?e:fe(e)?ni(e).replace(/[a-z]+/gi,""):0,Kt=e=>parseInt(pn(e),10),xa=e=>parseFloat(pn(e)),ht=e=>Ye(e)&&isFinite(e)&&Math.floor(e)===e,Da=(e,t=1e3)=>{if(ht(e))return e;let i=ni(e).trim();return/MB$/i.test(i)?(i=i.replace(/MB$i/,"").trim(),Kt(i)*t*t):/KB/i.test(i)?(i=i.replace(/KB$i/,"").trim(),Kt(i)*t):Kt(i)},$e=e=>typeof e=="function",ml=e=>{let t=self,i=e.split("."),a=null;for(;a=i.shift();)if(t=t[a],!t)return null;return t},Pa={process:"POST",patch:"PATCH",revert:"DELETE",fetch:"GET",restore:"GET",load:"GET"},gl=e=>{let t={};return t.url=fe(e)?e:e.url||"",t.timeout=e.timeout?parseInt(e.timeout,10):0,t.headers=e.headers?e.headers:{},ee(Pa,i=>{t[i]=El(i,e[i],Pa[i],t.timeout,t.headers)}),t.process=e.process||fe(e)||e.url?t.process:null,t.remove=e.remove||null,delete t.headers,t},El=(e,t,i,a,n)=>{if(t===null)return null;if(typeof t=="function")return t;let r={url:i==="GET"||i==="PATCH"?`?${e}=`:"",method:i,headers:n,withCredentials:!1,timeout:a,onload:null,ondata:null,onerror:null};if(fe(t))return r.url=t,r;if(Object.assign(r,t),fe(r.headers)){let o=r.headers.split(/:(.+)/);r.headers={header:o[0],value:o[1]}}return r.withCredentials=fn(r.withCredentials),r},Tl=e=>gl(e),Il=e=>e===null,se=e=>typeof e=="object"&&e!==null,bl=e=>se(e)&&fe(e.url)&&se(e.process)&&se(e.revert)&&se(e.restore)&&se(e.fetch),Ai=e=>ai(e)?"array":Il(e)?"null":ht(e)?"int":/^[0-9]+ ?(?:GB|MB|KB)$/gi.test(e)?"bytes":bl(e)?"api":typeof e,_l=e=>e.replace(/{\s*'/g,'{"').replace(/'\s*}/g,'"}').replace(/'\s*:/g,'":').replace(/:\s*'/g,':"').replace(/,\s*'/g,',"').replace(/'\s*,/g,'",'),Rl={array:pl,boolean:fn,int:e=>Ai(e)==="bytes"?Da(e):Kt(e),number:xa,float:xa,bytes:Da,string:e=>$e(e)?e:ni(e),function:e=>ml(e),serverapi:Tl,object:e=>{try{return JSON.parse(_l(e))}catch{return null}}},yl=(e,t)=>Rl[t](e),mn=(e,t,i)=>{if(e===t)return e;let a=Ai(e);if(a!==i){let n=yl(e,i);if(a=Ai(n),n===null)throw`Trying to assign value with incorrect type to "${option}", allowed type: "${i}"`;e=n}return e},Sl=(e,t)=>{let i=e;return{enumerable:!0,get:()=>i,set:a=>{i=mn(a,e,t)}}},wl=e=>{let t={};return ee(e,i=>{let a=e[i];t[i]=Sl(a[0],a[1])}),Ve(t)},vl=e=>({items:[],listUpdateTimeout:null,itemUpdateTimeout:null,processingQueue:[],options:wl(e)}),ri=(e,t="-")=>e.split(/(?=[A-Z])/).map(i=>i.toLowerCase()).join(t),Al=(e,t)=>{let i={};return ee(t,a=>{i[a]={get:()=>e.getState().options[a],set:n=>{e.dispatch(`SET_${ri(a,"_").toUpperCase()}`,{value:n})}}}),i},Ll=e=>(t,i,a)=>{let n={};return ee(e,r=>{let o=ri(r,"_").toUpperCase();n[`SET_${o}`]=l=>{try{a.options[r]=l.value}catch{}t(`DID_SET_${o}`,{value:a.options[r]})}}),n},Ml=e=>t=>{let i={};return ee(e,a=>{i[`GET_${ri(a,"_").toUpperCase()}`]=n=>t.options[a]}),i},ye={API:1,DROP:2,BROWSE:3,PASTE:4,NONE:5},Ui=()=>Math.random().toString(36).substring(2,11),ki=(e,t)=>e.splice(t,1),Ol=(e,t)=>{t?e():document.hidden?Promise.resolve(1).then(e):setTimeout(e,0)},oi=()=>{let e=[],t=(a,n)=>{ki(e,e.findIndex(r=>r.event===a&&(r.cb===n||!n)))},i=(a,n,r)=>{e.filter(o=>o.event===a).map(o=>o.cb).forEach(o=>Ol(()=>o(...n),r))};return{fireSync:(a,...n)=>{i(a,n,!0)},fire:(a,...n)=>{i(a,n,!1)},on:(a,n)=>{e.push({event:a,cb:n})},onOnce:(a,n)=>{e.push({event:a,cb:(...r)=>{t(a,n),n(...r)}})},off:t}},gn=(e,t,i)=>{Object.getOwnPropertyNames(e).filter(a=>!i.includes(a)).forEach(a=>Object.defineProperty(t,a,Object.getOwnPropertyDescriptor(e,a)))},xl=["fire","process","revert","load","on","off","onOnce","retryLoad","extend","archive","archived","release","released","requestProcessing","freeze"],me=e=>{let t={};return gn(e,t,xl),t},Dl=e=>{e.forEach((t,i)=>{t.released&&ki(e,i)})},k={INIT:1,IDLE:2,PROCESSING_QUEUED:9,PROCESSING:3,PROCESSING_COMPLETE:5,PROCESSING_ERROR:6,PROCESSING_REVERT_ERROR:10,LOADING:7,LOAD_ERROR:8},le={INPUT:1,LIMBO:2,LOCAL:3},En=e=>/[^0-9]+/.exec(e),Tn=()=>En(1.1.toLocaleString())[0],Pl=()=>{let e=Tn(),t=1e3.toLocaleString(),i=1e3.toString();return t!==i?En(t)[0]:e==="."?",":"."},M={BOOLEAN:"boolean",INT:"int",NUMBER:"number",STRING:"string",ARRAY:"array",OBJECT:"object",FUNCTION:"function",ACTION:"action",SERVER_API:"serverapi",REGEX:"regex"},Hi=[],Ae=(e,t,i)=>new Promise((a,n)=>{let r=Hi.filter(l=>l.key===e).map(l=>l.cb);if(r.length===0){a(t);return}let o=r.shift();r.reduce((l,s)=>l.then(u=>s(u,i)),o(t,i)).then(l=>a(l)).catch(l=>n(l))}),Ze=(e,t,i)=>Hi.filter(a=>a.key===e).map(a=>a.cb(t,i)),Fl=(e,t)=>Hi.push({key:e,cb:t}),Cl=e=>Object.assign(rt,e),ei=()=>({...rt}),zl=e=>{ee(e,(t,i)=>{rt[t]&&(rt[t][0]=mn(i,rt[t][0],rt[t][1]))})},rt={id:[null,M.STRING],name:["filepond",M.STRING],disabled:[!1,M.BOOLEAN],className:[null,M.STRING],required:[!1,M.BOOLEAN],captureMethod:[null,M.STRING],allowSyncAcceptAttribute:[!0,M.BOOLEAN],allowDrop:[!0,M.BOOLEAN],allowBrowse:[!0,M.BOOLEAN],allowPaste:[!0,M.BOOLEAN],allowMultiple:[!1,M.BOOLEAN],allowReplace:[!0,M.BOOLEAN],allowRevert:[!0,M.BOOLEAN],allowRemove:[!0,M.BOOLEAN],allowProcess:[!0,M.BOOLEAN],allowReorder:[!1,M.BOOLEAN],allowDirectoriesOnly:[!1,M.BOOLEAN],storeAsFile:[!1,M.BOOLEAN],forceRevert:[!1,M.BOOLEAN],maxFiles:[null,M.INT],checkValidity:[!1,M.BOOLEAN],itemInsertLocationFreedom:[!0,M.BOOLEAN],itemInsertLocation:["before",M.STRING],itemInsertInterval:[75,M.INT],dropOnPage:[!1,M.BOOLEAN],dropOnElement:[!0,M.BOOLEAN],dropValidation:[!1,M.BOOLEAN],ignoredFiles:[[".ds_store","thumbs.db","desktop.ini"],M.ARRAY],instantUpload:[!0,M.BOOLEAN],maxParallelUploads:[2,M.INT],allowMinimumUploadDuration:[!0,M.BOOLEAN],chunkUploads:[!1,M.BOOLEAN],chunkForce:[!1,M.BOOLEAN],chunkSize:[5e6,M.INT],chunkRetryDelays:[[500,1e3,3e3],M.ARRAY],server:[null,M.SERVER_API],fileSizeBase:[1e3,M.INT],labelFileSizeBytes:["bytes",M.STRING],labelFileSizeKilobytes:["KB",M.STRING],labelFileSizeMegabytes:["MB",M.STRING],labelFileSizeGigabytes:["GB",M.STRING],labelDecimalSeparator:[Tn(),M.STRING],labelThousandsSeparator:[Pl(),M.STRING],labelIdle:['Drag & Drop your files or Browse',M.STRING],labelInvalidField:["Field contains invalid files",M.STRING],labelFileWaitingForSize:["Waiting for size",M.STRING],labelFileSizeNotAvailable:["Size not available",M.STRING],labelFileCountSingular:["file in list",M.STRING],labelFileCountPlural:["files in list",M.STRING],labelFileLoading:["Loading",M.STRING],labelFileAdded:["Added",M.STRING],labelFileLoadError:["Error during load",M.STRING],labelFileRemoved:["Removed",M.STRING],labelFileRemoveError:["Error during remove",M.STRING],labelFileProcessing:["Uploading",M.STRING],labelFileProcessingComplete:["Upload complete",M.STRING],labelFileProcessingAborted:["Upload cancelled",M.STRING],labelFileProcessingError:["Error during upload",M.STRING],labelFileProcessingRevertError:["Error during revert",M.STRING],labelTapToCancel:["tap to cancel",M.STRING],labelTapToRetry:["tap to retry",M.STRING],labelTapToUndo:["tap to undo",M.STRING],labelButtonRemoveItem:["Remove",M.STRING],labelButtonAbortItemLoad:["Abort",M.STRING],labelButtonRetryItemLoad:["Retry",M.STRING],labelButtonAbortItemProcessing:["Cancel",M.STRING],labelButtonUndoItemProcessing:["Undo",M.STRING],labelButtonRetryItemProcessing:["Retry",M.STRING],labelButtonProcessItem:["Upload",M.STRING],iconRemove:['',M.STRING],iconProcess:['',M.STRING],iconRetry:['',M.STRING],iconUndo:['',M.STRING],iconDone:['',M.STRING],oninit:[null,M.FUNCTION],onwarning:[null,M.FUNCTION],onerror:[null,M.FUNCTION],onactivatefile:[null,M.FUNCTION],oninitfile:[null,M.FUNCTION],onaddfilestart:[null,M.FUNCTION],onaddfileprogress:[null,M.FUNCTION],onaddfile:[null,M.FUNCTION],onprocessfilestart:[null,M.FUNCTION],onprocessfileprogress:[null,M.FUNCTION],onprocessfileabort:[null,M.FUNCTION],onprocessfilerevert:[null,M.FUNCTION],onprocessfile:[null,M.FUNCTION],onprocessfiles:[null,M.FUNCTION],onremovefile:[null,M.FUNCTION],onpreparefile:[null,M.FUNCTION],onupdatefiles:[null,M.FUNCTION],onreorderfiles:[null,M.FUNCTION],beforeDropFile:[null,M.FUNCTION],beforeAddFile:[null,M.FUNCTION],beforeRemoveFile:[null,M.FUNCTION],beforePrepareFile:[null,M.FUNCTION],stylePanelLayout:[null,M.STRING],stylePanelAspectRatio:[null,M.STRING],styleItemPanelAspectRatio:[null,M.STRING],styleButtonRemoveItemPosition:["left",M.STRING],styleButtonProcessItemPosition:["right",M.STRING],styleLoadIndicatorPosition:["right",M.STRING],styleProgressIndicatorPosition:["right",M.STRING],styleButtonRemoveItemAlign:[!1,M.BOOLEAN],files:[[],M.ARRAY],credits:[["https://pqina.nl/","Powered by PQINA"],M.ARRAY]},qe=(e,t)=>ze(t)?e[0]||null:ht(t)?e[t]||null:(typeof t=="object"&&(t=t.id),e.find(i=>i.id===t)||null),In=e=>{if(ze(e))return e;if(/:/.test(e)){let t=e.split(":");return t[1]/t[0]}return parseFloat(e)},Le=e=>e.filter(t=>!t.archived),bn={EMPTY:0,IDLE:1,ERROR:2,BUSY:3,READY:4},$t=null,Nl=()=>{if($t===null)try{let e=new DataTransfer;e.items.add(new File(["hello world"],"This_Works.txt"));let t=document.createElement("input");t.setAttribute("type","file"),t.files=e.files,$t=t.files.length===1}catch{$t=!1}return $t},Bl=[k.LOAD_ERROR,k.PROCESSING_ERROR,k.PROCESSING_REVERT_ERROR],Gl=[k.LOADING,k.PROCESSING,k.PROCESSING_QUEUED,k.INIT],Vl=[k.PROCESSING_COMPLETE],Ul=e=>Bl.includes(e.status),kl=e=>Gl.includes(e.status),Hl=e=>Vl.includes(e.status),Fa=e=>se(e.options.server)&&(se(e.options.server.process)||$e(e.options.server.process)),Wl=e=>({GET_STATUS:()=>{let t=Le(e.items),{EMPTY:i,ERROR:a,BUSY:n,IDLE:r,READY:o}=bn;return t.length===0?i:t.some(Ul)?a:t.some(kl)?n:t.some(Hl)?o:r},GET_ITEM:t=>qe(e.items,t),GET_ACTIVE_ITEM:t=>qe(Le(e.items),t),GET_ACTIVE_ITEMS:()=>Le(e.items),GET_ITEMS:()=>e.items,GET_ITEM_NAME:t=>{let i=qe(e.items,t);return i?i.filename:null},GET_ITEM_SIZE:t=>{let i=qe(e.items,t);return i?i.fileSize:null},GET_STYLES:()=>Object.keys(e.options).filter(t=>/^style/.test(t)).map(t=>({name:t,value:e.options[t]})),GET_PANEL_ASPECT_RATIO:()=>/circle/.test(e.options.stylePanelLayout)?1:In(e.options.stylePanelAspectRatio),GET_ITEM_PANEL_ASPECT_RATIO:()=>e.options.styleItemPanelAspectRatio,GET_ITEMS_BY_STATUS:t=>Le(e.items).filter(i=>i.status===t),GET_TOTAL_ITEMS:()=>Le(e.items).length,SHOULD_UPDATE_FILE_INPUT:()=>e.options.storeAsFile&&Nl()&&!Fa(e),IS_ASYNC:()=>Fa(e),GET_FILE_SIZE_LABELS:t=>({labelBytes:t("GET_LABEL_FILE_SIZE_BYTES")||void 0,labelKilobytes:t("GET_LABEL_FILE_SIZE_KILOBYTES")||void 0,labelMegabytes:t("GET_LABEL_FILE_SIZE_MEGABYTES")||void 0,labelGigabytes:t("GET_LABEL_FILE_SIZE_GIGABYTES")||void 0})}),Yl=e=>{let t=Le(e.items).length;if(!e.options.allowMultiple)return t===0;let i=e.options.maxFiles;return i===null||tMath.max(Math.min(i,e),t),$l=(e,t,i)=>e.splice(t,0,i),ql=(e,t,i)=>ze(t)?null:typeof i>"u"?(e.push(t),t):(i=_n(i,0,e.length),$l(e,i,t),t),Li=e=>/^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*)\s*$/i.test(e),Ot=e=>`${e}`.split("/").pop().split("?").shift(),li=e=>e.split(".").pop(),Xl=e=>{if(typeof e!="string")return"";let t=e.split("/").pop();return/svg/.test(t)?"svg":/zip|compressed/.test(t)?"zip":/plain/.test(t)?"txt":/msword/.test(t)?"doc":/[a-z]+/.test(t)?t==="jpeg"?"jpg":t:""},wt=(e,t="")=>(t+e).slice(-t.length),Rn=(e=new Date)=>`${e.getFullYear()}-${wt(e.getMonth()+1,"00")}-${wt(e.getDate(),"00")}_${wt(e.getHours(),"00")}-${wt(e.getMinutes(),"00")}-${wt(e.getSeconds(),"00")}`,dt=(e,t,i=null,a=null)=>{let n=typeof i=="string"?e.slice(0,e.size,i):e.slice(0,e.size,e.type);return n.lastModifiedDate=new Date,e._relativePath&&(n._relativePath=e._relativePath),fe(t)||(t=Rn()),t&&a===null&&li(t)?n.name=t:(a=a||Xl(n.type),n.name=t+(a?"."+a:"")),n},jl=()=>window.BlobBuilder=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,yn=(e,t)=>{let i=jl();if(i){let a=new i;return a.append(e),a.getBlob(t)}return new Blob([e],{type:t})},Ql=(e,t)=>{let i=new ArrayBuffer(e.length),a=new Uint8Array(i);for(let n=0;n(/^data:(.+);/.exec(e)||[])[1]||null,Zl=e=>e.split(",")[1].replace(/\s/g,""),Kl=e=>atob(Zl(e)),Jl=e=>{let t=Sn(e),i=Kl(e);return Ql(i,t)},es=(e,t,i)=>dt(Jl(e),t,null,i),ts=e=>{if(!/^content-disposition:/i.test(e))return null;let t=e.split(/filename=|filename\*=.+''/).splice(1).map(i=>i.trim().replace(/^["']|[;"']{0,2}$/g,"")).filter(i=>i.length);return t.length?decodeURI(t[t.length-1]):null},is=e=>{if(/content-length:/i.test(e)){let t=e.match(/[0-9]+/)[0];return t?parseInt(t,10):null}return null},as=e=>/x-content-transfer-id:/i.test(e)&&(e.split(":")[1]||"").trim()||null,Wi=e=>{let t={source:null,name:null,size:null},i=e.split(` -`);for(let a of i){let n=ts(a);if(n){t.name=n;continue}let r=is(a);if(r){t.size=r;continue}let o=as(a);if(o){t.source=o;continue}}return t},ns=e=>{let t={source:null,complete:!1,progress:0,size:null,timestamp:null,duration:0,request:null},i=()=>t.progress,a=()=>{t.request&&t.request.abort&&t.request.abort()},n=()=>{let l=t.source;o.fire("init",l),l instanceof File?o.fire("load",l):l instanceof Blob?o.fire("load",dt(l,l.name)):Li(l)?o.fire("load",es(l)):r(l)},r=l=>{if(!e){o.fire("error",{type:"error",body:"Can't load URL",code:400});return}t.timestamp=Date.now(),t.request=e(l,s=>{t.duration=Date.now()-t.timestamp,t.complete=!0,s instanceof Blob&&(s=dt(s,s.name||Ot(l))),o.fire("load",s instanceof Blob?s:s?s.body:null)},s=>{o.fire("error",typeof s=="string"?{type:"error",code:0,body:s}:s)},(s,u,c)=>{if(c&&(t.size=c),t.duration=Date.now()-t.timestamp,!s){t.progress=null;return}t.progress=u/c,o.fire("progress",t.progress)},()=>{o.fire("abort")},s=>{let u=Wi(typeof s=="string"?s:s.headers);o.fire("meta",{size:t.size||u.size,filename:u.name,source:u.source})})},o={...oi(),setSource:l=>t.source=l,getProgress:i,abort:a,load:n};return o},Ca=e=>/GET|HEAD/.test(e),Xe=(e,t,i)=>{let a={onheaders:()=>{},onprogress:()=>{},onload:()=>{},ontimeout:()=>{},onerror:()=>{},onabort:()=>{},abort:()=>{n=!0,o.abort()}},n=!1,r=!1;i={method:"POST",headers:{},withCredentials:!1,...i},t=encodeURI(t),Ca(i.method)&&e&&(t=`${t}${encodeURIComponent(typeof e=="string"?e:JSON.stringify(e))}`);let o=new XMLHttpRequest,l=Ca(i.method)?o:o.upload;return l.onprogress=s=>{n||a.onprogress(s.lengthComputable,s.loaded,s.total)},o.onreadystatechange=()=>{o.readyState<2||o.readyState===4&&o.status===0||r||(r=!0,a.onheaders(o))},o.onload=()=>{o.status>=200&&o.status<300?a.onload(o):a.onerror(o)},o.onerror=()=>a.onerror(o),o.onabort=()=>{n=!0,a.onabort()},o.ontimeout=()=>a.ontimeout(o),o.open(i.method,t,!0),ht(i.timeout)&&(o.timeout=i.timeout),Object.keys(i.headers).forEach(s=>{let u=unescape(encodeURIComponent(i.headers[s]));o.setRequestHeader(s,u)}),i.responseType&&(o.responseType=i.responseType),i.withCredentials&&(o.withCredentials=!0),o.send(e),a},te=(e,t,i,a)=>({type:e,code:t,body:i,headers:a}),je=e=>t=>{e(te("error",0,"Timeout",t.getAllResponseHeaders()))},za=e=>/\?/.test(e),Lt=(...e)=>{let t="";return e.forEach(i=>{t+=za(t)&&za(i)?i.replace(/\?/,"&"):i}),t},_i=(e="",t)=>{if(typeof t=="function")return t;if(!t||!fe(t.url))return null;let i=t.onload||(n=>n),a=t.onerror||(n=>null);return(n,r,o,l,s,u)=>{let c=Xe(n,Lt(e,t.url),{...t,responseType:"blob"});return c.onload=d=>{let h=d.getAllResponseHeaders(),f=Wi(h).name||Ot(n);r(te("load",d.status,t.method==="HEAD"?null:dt(i(d.response),f),h))},c.onerror=d=>{o(te("error",d.status,a(d.response)||d.statusText,d.getAllResponseHeaders()))},c.onheaders=d=>{u(te("headers",d.status,null,d.getAllResponseHeaders()))},c.ontimeout=je(o),c.onprogress=l,c.onabort=s,c}},_e={QUEUED:0,COMPLETE:1,PROCESSING:2,ERROR:3,WAITING:4},rs=(e,t,i,a,n,r,o,l,s,u,c)=>{let d=[],{chunkTransferId:h,chunkServer:f,chunkSize:p,chunkRetryDelays:m}=c,g={serverId:h,aborted:!1},b=t.ondata||(A=>A),E=t.onload||((A,F)=>F==="HEAD"?A.getResponseHeader("Upload-Offset"):A.response),T=t.onerror||(A=>null),_=A=>{let F=new FormData;se(n)&&F.append(i,JSON.stringify(n));let w=typeof t.headers=="function"?t.headers(a,n):{...t.headers,"Upload-Length":a.size},L={...t,headers:w},C=Xe(b(F),Lt(e,t.url),L);C.onload=P=>A(E(P,L.method)),C.onerror=P=>o(te("error",P.status,T(P.response)||P.statusText,P.getAllResponseHeaders())),C.ontimeout=je(o)},y=A=>{let F=Lt(e,f.url,g.serverId),L={headers:typeof t.headers=="function"?t.headers(g.serverId):{...t.headers},method:"HEAD"},C=Xe(null,F,L);C.onload=P=>A(E(P,L.method)),C.onerror=P=>o(te("error",P.status,T(P.response)||P.statusText,P.getAllResponseHeaders())),C.ontimeout=je(o)},I=Math.floor(a.size/p);for(let A=0;A<=I;A++){let F=A*p,w=a.slice(F,F+p,"application/offset+octet-stream");d[A]={index:A,size:w.size,offset:F,data:w,file:a,progress:0,retries:[...m],status:_e.QUEUED,error:null,request:null,timeout:null}}let v=()=>r(g.serverId),R=A=>A.status===_e.QUEUED||A.status===_e.ERROR,S=A=>{if(g.aborted)return;if(A=A||d.find(R),!A){d.every(V=>V.status===_e.COMPLETE)&&v();return}A.status=_e.PROCESSING,A.progress=null;let F=f.ondata||(V=>V),w=f.onerror||(V=>null),L=Lt(e,f.url,g.serverId),C=typeof f.headers=="function"?f.headers(A):{...f.headers,"Content-Type":"application/offset+octet-stream","Upload-Offset":A.offset,"Upload-Length":a.size,"Upload-Name":a.name},P=A.request=Xe(F(A.data),L,{...f,headers:C});P.onload=()=>{A.status=_e.COMPLETE,A.request=null,O()},P.onprogress=(V,G,q)=>{A.progress=V?G:null,x()},P.onerror=V=>{A.status=_e.ERROR,A.request=null,A.error=w(V.response)||V.statusText,D(A)||o(te("error",V.status,w(V.response)||V.statusText,V.getAllResponseHeaders()))},P.ontimeout=V=>{A.status=_e.ERROR,A.request=null,D(A)||je(o)(V)},P.onabort=()=>{A.status=_e.QUEUED,A.request=null,s()}},D=A=>A.retries.length===0?!1:(A.status=_e.WAITING,clearTimeout(A.timeout),A.timeout=setTimeout(()=>{S(A)},A.retries.shift()),!0),x=()=>{let A=d.reduce((w,L)=>w===null||L.progress===null?null:w+L.progress,0);if(A===null)return l(!1,0,0);let F=d.reduce((w,L)=>w+L.size,0);l(!0,A,F)},O=()=>{d.filter(F=>F.status===_e.PROCESSING).length>=1||S()},z=()=>{d.forEach(A=>{clearTimeout(A.timeout),A.request&&A.request.abort()})};return g.serverId?y(A=>{g.aborted||(d.filter(F=>F.offset{F.status=_e.COMPLETE,F.progress=F.size}),O())}):_(A=>{g.aborted||(u(A),g.serverId=A,O())}),{abort:()=>{g.aborted=!0,z()}}},os=(e,t,i,a)=>(n,r,o,l,s,u,c)=>{if(!n)return;let d=a.chunkUploads,h=d&&n.size>a.chunkSize,f=d&&(h||a.chunkForce);if(n instanceof Blob&&f)return rs(e,t,i,n,r,o,l,s,u,c,a);let p=t.ondata||(y=>y),m=t.onload||(y=>y),g=t.onerror||(y=>null),b=typeof t.headers=="function"?t.headers(n,r)||{}:{...t.headers},E={...t,headers:b};var T=new FormData;se(r)&&T.append(i,JSON.stringify(r)),(n instanceof Blob?[{name:null,file:n}]:n).forEach(y=>{T.append(i,y.file,y.name===null?y.file.name:`${y.name}${y.file.name}`)});let _=Xe(p(T),Lt(e,t.url),E);return _.onload=y=>{o(te("load",y.status,m(y.response),y.getAllResponseHeaders()))},_.onerror=y=>{l(te("error",y.status,g(y.response)||y.statusText,y.getAllResponseHeaders()))},_.ontimeout=je(l),_.onprogress=s,_.onabort=u,_},ls=(e="",t,i,a)=>typeof t=="function"?(...n)=>t(i,...n,a):!t||!fe(t.url)?null:os(e,t,i,a),vt=(e="",t)=>{if(typeof t=="function")return t;if(!t||!fe(t.url))return(n,r)=>r();let i=t.onload||(n=>n),a=t.onerror||(n=>null);return(n,r,o)=>{let l=Xe(n,e+t.url,t);return l.onload=s=>{r(te("load",s.status,i(s.response),s.getAllResponseHeaders()))},l.onerror=s=>{o(te("error",s.status,a(s.response)||s.statusText,s.getAllResponseHeaders()))},l.ontimeout=je(o),l}},wn=(e=0,t=1)=>e+Math.random()*(t-e),ss=(e,t=1e3,i=0,a=25,n=250)=>{let r=null,o=Date.now(),l=()=>{let s=Date.now()-o,u=wn(a,n);s+u>t&&(u=s+u-t);let c=s/t;if(c>=1||document.hidden){e(1);return}e(c),r=setTimeout(l,u)};return t>0&&l(),{clear:()=>{clearTimeout(r)}}},cs=(e,t)=>{let i={complete:!1,perceivedProgress:0,perceivedPerformanceUpdater:null,progress:null,timestamp:null,perceivedDuration:0,duration:0,request:null,response:null},{allowMinimumUploadDuration:a}=t,n=(c,d)=>{let h=()=>{i.duration===0||i.progress===null||u.fire("progress",u.getProgress())},f=()=>{i.complete=!0,u.fire("load-perceived",i.response.body)};u.fire("start"),i.timestamp=Date.now(),i.perceivedPerformanceUpdater=ss(p=>{i.perceivedProgress=p,i.perceivedDuration=Date.now()-i.timestamp,h(),i.response&&i.perceivedProgress===1&&!i.complete&&f()},a?wn(750,1500):0),i.request=e(c,d,p=>{i.response=se(p)?p:{type:"load",code:200,body:`${p}`,headers:{}},i.duration=Date.now()-i.timestamp,i.progress=1,u.fire("load",i.response.body),(!a||a&&i.perceivedProgress===1)&&f()},p=>{i.perceivedPerformanceUpdater.clear(),u.fire("error",se(p)?p:{type:"error",code:0,body:`${p}`})},(p,m,g)=>{i.duration=Date.now()-i.timestamp,i.progress=p?m/g:null,h()},()=>{i.perceivedPerformanceUpdater.clear(),u.fire("abort",i.response?i.response.body:null)},p=>{u.fire("transfer",p)})},r=()=>{i.request&&(i.perceivedPerformanceUpdater.clear(),i.request.abort&&i.request.abort(),i.complete=!0)},o=()=>{r(),i.complete=!1,i.perceivedProgress=0,i.progress=0,i.timestamp=null,i.perceivedDuration=0,i.duration=0,i.request=null,i.response=null},l=a?()=>i.progress?Math.min(i.progress,i.perceivedProgress):null:()=>i.progress||null,s=a?()=>Math.min(i.duration,i.perceivedDuration):()=>i.duration,u={...oi(),process:n,abort:r,getProgress:l,getDuration:s,reset:o};return u},vn=e=>e.substring(0,e.lastIndexOf("."))||e,ds=e=>{let t=[e.name,e.size,e.type];return e instanceof Blob||Li(e)?t[0]=e.name||Rn():Li(e)?(t[1]=e.length,t[2]=Sn(e)):fe(e)&&(t[0]=Ot(e),t[1]=0,t[2]="application/octet-stream"),{name:t[0],size:t[1],type:t[2]}},ut=e=>!!(e instanceof File||e instanceof Blob&&e.name),An=e=>{if(!se(e))return e;let t=ai(e)?[]:{};for(let i in e){if(!e.hasOwnProperty(i))continue;let a=e[i];t[i]=a&&se(a)?An(a):a}return t},us=(e=null,t=null,i=null)=>{let a=Ui(),n={archived:!1,frozen:!1,released:!1,source:null,file:i,serverFileReference:t,transferId:null,processingAborted:!1,status:t?k.PROCESSING_COMPLETE:k.INIT,activeLoader:null,activeProcessor:null},r=null,o={},l=R=>n.status=R,s=(R,...S)=>{n.released||n.frozen||I.fire(R,...S)},u=()=>li(n.file.name),c=()=>n.file.type,d=()=>n.file.size,h=()=>n.file,f=(R,S,D)=>{if(n.source=R,I.fireSync("init"),n.file){I.fireSync("load-skip");return}n.file=ds(R),S.on("init",()=>{s("load-init")}),S.on("meta",x=>{n.file.size=x.size,n.file.filename=x.filename,x.source&&(e=le.LIMBO,n.serverFileReference=x.source,n.status=k.PROCESSING_COMPLETE),s("load-meta")}),S.on("progress",x=>{l(k.LOADING),s("load-progress",x)}),S.on("error",x=>{l(k.LOAD_ERROR),s("load-request-error",x)}),S.on("abort",()=>{l(k.INIT),s("load-abort")}),S.on("load",x=>{n.activeLoader=null;let O=A=>{n.file=ut(A)?A:n.file,e===le.LIMBO&&n.serverFileReference?l(k.PROCESSING_COMPLETE):l(k.IDLE),s("load")},z=A=>{n.file=x,s("load-meta"),l(k.LOAD_ERROR),s("load-file-error",A)};if(n.serverFileReference){O(x);return}D(x,O,z)}),S.setSource(R),n.activeLoader=S,S.load()},p=()=>{n.activeLoader&&n.activeLoader.load()},m=()=>{if(n.activeLoader){n.activeLoader.abort();return}l(k.INIT),s("load-abort")},g=(R,S)=>{if(n.processingAborted){n.processingAborted=!1;return}if(l(k.PROCESSING),r=null,!(n.file instanceof Blob)){I.on("load",()=>{g(R,S)});return}R.on("load",O=>{n.transferId=null,n.serverFileReference=O}),R.on("transfer",O=>{n.transferId=O}),R.on("load-perceived",O=>{n.activeProcessor=null,n.transferId=null,n.serverFileReference=O,l(k.PROCESSING_COMPLETE),s("process-complete",O)}),R.on("start",()=>{s("process-start")}),R.on("error",O=>{n.activeProcessor=null,l(k.PROCESSING_ERROR),s("process-error",O)}),R.on("abort",O=>{n.activeProcessor=null,n.serverFileReference=O,l(k.IDLE),s("process-abort"),r&&r()}),R.on("progress",O=>{s("process-progress",O)});let D=O=>{n.archived||R.process(O,{...o})},x=console.error;S(n.file,D,x),n.activeProcessor=R},b=()=>{n.processingAborted=!1,l(k.PROCESSING_QUEUED)},E=()=>new Promise(R=>{if(!n.activeProcessor){n.processingAborted=!0,l(k.IDLE),s("process-abort"),R();return}r=()=>{R()},n.activeProcessor.abort()}),T=(R,S)=>new Promise((D,x)=>{let O=n.serverFileReference!==null?n.serverFileReference:n.transferId;if(O===null){D();return}R(O,()=>{n.serverFileReference=null,n.transferId=null,D()},z=>{if(!S){D();return}l(k.PROCESSING_REVERT_ERROR),s("process-revert-error"),x(z)}),l(k.IDLE),s("process-revert")}),_=(R,S,D)=>{let x=R.split("."),O=x[0],z=x.pop(),A=o;x.forEach(F=>A=A[F]),JSON.stringify(A[z])!==JSON.stringify(S)&&(A[z]=S,s("metadata-update",{key:O,value:o[O],silent:D}))},I={id:{get:()=>a},origin:{get:()=>e,set:R=>e=R},serverId:{get:()=>n.serverFileReference},transferId:{get:()=>n.transferId},status:{get:()=>n.status},filename:{get:()=>n.file.name},filenameWithoutExtension:{get:()=>vn(n.file.name)},fileExtension:{get:u},fileType:{get:c},fileSize:{get:d},file:{get:h},relativePath:{get:()=>n.file._relativePath},source:{get:()=>n.source},getMetadata:R=>An(R?o[R]:o),setMetadata:(R,S,D)=>{if(se(R)){let x=R;return Object.keys(x).forEach(O=>{_(O,x[O],S)}),R}return _(R,S,D),S},extend:(R,S)=>v[R]=S,abortLoad:m,retryLoad:p,requestProcessing:b,abortProcessing:E,load:f,process:g,revert:T,...oi(),freeze:()=>n.frozen=!0,release:()=>n.released=!0,released:{get:()=>n.released},archive:()=>n.archived=!0,archived:{get:()=>n.archived}},v=Ve(I);return v},hs=(e,t)=>ze(t)?0:fe(t)?e.findIndex(i=>i.id===t):-1,Na=(e,t)=>{let i=hs(e,t);if(!(i<0))return e[i]||null},Ba=(e,t,i,a,n,r)=>{let o=Xe(null,e,{method:"GET",responseType:"blob"});return o.onload=l=>{let s=l.getAllResponseHeaders(),u=Wi(s).name||Ot(e);t(te("load",l.status,dt(l.response,u),s))},o.onerror=l=>{i(te("error",l.status,l.statusText,l.getAllResponseHeaders()))},o.onheaders=l=>{r(te("headers",l.status,null,l.getAllResponseHeaders()))},o.ontimeout=je(i),o.onprogress=a,o.onabort=n,o},Ga=e=>(e.indexOf("//")===0&&(e=location.protocol+e),e.toLowerCase().replace("blob:","").replace(/([a-z])?:\/\//,"$1").split("/")[0]),fs=e=>(e.indexOf(":")>-1||e.indexOf("//")>-1)&&Ga(location.href)!==Ga(e),qt=e=>(...t)=>$e(e)?e(...t):e,ps=e=>!ut(e.file),Ri=(e,t)=>{clearTimeout(t.listUpdateTimeout),t.listUpdateTimeout=setTimeout(()=>{e("DID_UPDATE_ITEMS",{items:Le(t.items)})},0)},Va=(e,...t)=>new Promise(i=>{if(!e)return i(!0);let a=e(...t);if(a==null)return i(!0);if(typeof a=="boolean")return i(a);typeof a.then=="function"&&a.then(i)}),yi=(e,t)=>{e.items.sort((i,a)=>t(me(i),me(a)))},Re=(e,t)=>({query:i,success:a=()=>{},failure:n=()=>{},...r}={})=>{let o=qe(e.items,i);if(!o){n({error:te("error",0,"Item not found"),file:null});return}t(o,a,n,r||{})},ms=(e,t,i)=>({ABORT_ALL:()=>{Le(i.items).forEach(a=>{a.freeze(),a.abortLoad(),a.abortProcessing()})},DID_SET_FILES:({value:a=[]})=>{let n=a.map(o=>({source:o.source?o.source:o,options:o.options})),r=Le(i.items);r.forEach(o=>{n.find(l=>l.source===o.source||l.source===o.file)||e("REMOVE_ITEM",{query:o,remove:!1})}),r=Le(i.items),n.forEach((o,l)=>{r.find(s=>s.source===o.source||s.file===o.source)||e("ADD_ITEM",{...o,interactionMethod:ye.NONE,index:l})})},DID_UPDATE_ITEM_METADATA:({id:a,action:n,change:r})=>{r.silent||(clearTimeout(i.itemUpdateTimeout),i.itemUpdateTimeout=setTimeout(()=>{let o=Na(i.items,a);if(!t("IS_ASYNC")){Ae("SHOULD_PREPARE_OUTPUT",!1,{item:o,query:t,action:n,change:r}).then(c=>{let d=t("GET_BEFORE_PREPARE_FILE");d&&(c=d(o,c)),c&&e("REQUEST_PREPARE_OUTPUT",{query:a,item:o,success:h=>{e("DID_PREPARE_OUTPUT",{id:a,file:h})}},!0)});return}o.origin===le.LOCAL&&e("DID_LOAD_ITEM",{id:o.id,error:null,serverFileReference:o.source});let l=()=>{setTimeout(()=>{e("REQUEST_ITEM_PROCESSING",{query:a})},32)},s=c=>{o.revert(vt(i.options.server.url,i.options.server.revert),t("GET_FORCE_REVERT")).then(c?l:()=>{}).catch(()=>{})},u=c=>{o.abortProcessing().then(c?l:()=>{})};if(o.status===k.PROCESSING_COMPLETE)return s(i.options.instantUpload);if(o.status===k.PROCESSING)return u(i.options.instantUpload);i.options.instantUpload&&l()},0))},MOVE_ITEM:({query:a,index:n})=>{let r=qe(i.items,a);if(!r)return;let o=i.items.indexOf(r);n=_n(n,0,i.items.length-1),o!==n&&i.items.splice(n,0,i.items.splice(o,1)[0])},SORT:({compare:a})=>{yi(i,a),e("DID_SORT_ITEMS",{items:t("GET_ACTIVE_ITEMS")})},ADD_ITEMS:({items:a,index:n,interactionMethod:r,success:o=()=>{},failure:l=()=>{}})=>{let s=n;if(n===-1||typeof n>"u"){let f=t("GET_ITEM_INSERT_LOCATION"),p=t("GET_TOTAL_ITEMS");s=f==="before"?0:p}let u=t("GET_IGNORED_FILES"),c=f=>ut(f)?!u.includes(f.name.toLowerCase()):!ze(f),h=a.filter(c).map(f=>new Promise((p,m)=>{e("ADD_ITEM",{interactionMethod:r,source:f.source||f,success:p,failure:m,index:s++,options:f.options||{}})}));Promise.all(h).then(o).catch(l)},ADD_ITEM:({source:a,index:n=-1,interactionMethod:r,success:o=()=>{},failure:l=()=>{},options:s={}})=>{if(ze(a)){l({error:te("error",0,"No source"),file:null});return}if(ut(a)&&i.options.ignoredFiles.includes(a.name.toLowerCase()))return;if(!Yl(i)){if(i.options.allowMultiple||!i.options.allowMultiple&&!i.options.allowReplace){let E=te("warning",0,"Max files");e("DID_THROW_MAX_FILES",{source:a,error:E}),l({error:E,file:null});return}let b=Le(i.items)[0];if(b.status===k.PROCESSING_COMPLETE||b.status===k.PROCESSING_REVERT_ERROR){let E=t("GET_FORCE_REVERT");if(b.revert(vt(i.options.server.url,i.options.server.revert),E).then(()=>{E&&e("ADD_ITEM",{source:a,index:n,interactionMethod:r,success:o,failure:l,options:s})}).catch(()=>{}),E)return}e("REMOVE_ITEM",{query:b.id})}let u=s.type==="local"?le.LOCAL:s.type==="limbo"?le.LIMBO:le.INPUT,c=us(u,u===le.INPUT?null:a,s.file);Object.keys(s.metadata||{}).forEach(b=>{c.setMetadata(b,s.metadata[b])}),Ze("DID_CREATE_ITEM",c,{query:t,dispatch:e});let d=t("GET_ITEM_INSERT_LOCATION");i.options.itemInsertLocationFreedom||(n=d==="before"?-1:i.items.length),ql(i.items,c,n),$e(d)&&a&&yi(i,d);let h=c.id;c.on("init",()=>{e("DID_INIT_ITEM",{id:h})}),c.on("load-init",()=>{e("DID_START_ITEM_LOAD",{id:h})}),c.on("load-meta",()=>{e("DID_UPDATE_ITEM_META",{id:h})}),c.on("load-progress",b=>{e("DID_UPDATE_ITEM_LOAD_PROGRESS",{id:h,progress:b})}),c.on("load-request-error",b=>{let E=qt(i.options.labelFileLoadError)(b);if(b.code>=400&&b.code<500){e("DID_THROW_ITEM_INVALID",{id:h,error:b,status:{main:E,sub:`${b.code} (${b.body})`}}),l({error:b,file:me(c)});return}e("DID_THROW_ITEM_LOAD_ERROR",{id:h,error:b,status:{main:E,sub:i.options.labelTapToRetry}})}),c.on("load-file-error",b=>{e("DID_THROW_ITEM_INVALID",{id:h,error:b.status,status:b.status}),l({error:b.status,file:me(c)})}),c.on("load-abort",()=>{e("REMOVE_ITEM",{query:h})}),c.on("load-skip",()=>{e("COMPLETE_LOAD_ITEM",{query:h,item:c,data:{source:a,success:o}})}),c.on("load",()=>{let b=E=>{if(!E){e("REMOVE_ITEM",{query:h});return}c.on("metadata-update",T=>{e("DID_UPDATE_ITEM_METADATA",{id:h,change:T})}),Ae("SHOULD_PREPARE_OUTPUT",!1,{item:c,query:t}).then(T=>{let _=t("GET_BEFORE_PREPARE_FILE");_&&(T=_(c,T));let y=()=>{e("COMPLETE_LOAD_ITEM",{query:h,item:c,data:{source:a,success:o}}),Ri(e,i)};if(T){e("REQUEST_PREPARE_OUTPUT",{query:h,item:c,success:I=>{e("DID_PREPARE_OUTPUT",{id:h,file:I}),y()}},!0);return}y()})};Ae("DID_LOAD_ITEM",c,{query:t,dispatch:e}).then(()=>{Va(t("GET_BEFORE_ADD_FILE"),me(c)).then(b)}).catch(E=>{if(!E||!E.error||!E.status)return b(!1);e("DID_THROW_ITEM_INVALID",{id:h,error:E.error,status:E.status})})}),c.on("process-start",()=>{e("DID_START_ITEM_PROCESSING",{id:h})}),c.on("process-progress",b=>{e("DID_UPDATE_ITEM_PROCESS_PROGRESS",{id:h,progress:b})}),c.on("process-error",b=>{e("DID_THROW_ITEM_PROCESSING_ERROR",{id:h,error:b,status:{main:qt(i.options.labelFileProcessingError)(b),sub:i.options.labelTapToRetry}})}),c.on("process-revert-error",b=>{e("DID_THROW_ITEM_PROCESSING_REVERT_ERROR",{id:h,error:b,status:{main:qt(i.options.labelFileProcessingRevertError)(b),sub:i.options.labelTapToRetry}})}),c.on("process-complete",b=>{e("DID_COMPLETE_ITEM_PROCESSING",{id:h,error:null,serverFileReference:b}),e("DID_DEFINE_VALUE",{id:h,value:b})}),c.on("process-abort",()=>{e("DID_ABORT_ITEM_PROCESSING",{id:h})}),c.on("process-revert",()=>{e("DID_REVERT_ITEM_PROCESSING",{id:h}),e("DID_DEFINE_VALUE",{id:h,value:null})}),e("DID_ADD_ITEM",{id:h,index:n,interactionMethod:r}),Ri(e,i);let{url:f,load:p,restore:m,fetch:g}=i.options.server||{};c.load(a,ns(u===le.INPUT?fe(a)&&fs(a)&&g?_i(f,g):Ba:u===le.LIMBO?_i(f,m):_i(f,p)),(b,E,T)=>{Ae("LOAD_FILE",b,{query:t}).then(E).catch(T)})},REQUEST_PREPARE_OUTPUT:({item:a,success:n,failure:r=()=>{}})=>{let o={error:te("error",0,"Item not found"),file:null};if(a.archived)return r(o);Ae("PREPARE_OUTPUT",a.file,{query:t,item:a}).then(l=>{Ae("COMPLETE_PREPARE_OUTPUT",l,{query:t,item:a}).then(s=>{if(a.archived)return r(o);n(s)})})},COMPLETE_LOAD_ITEM:({item:a,data:n})=>{let{success:r,source:o}=n,l=t("GET_ITEM_INSERT_LOCATION");if($e(l)&&o&&yi(i,l),e("DID_LOAD_ITEM",{id:a.id,error:null,serverFileReference:a.origin===le.INPUT?null:o}),r(me(a)),a.origin===le.LOCAL){e("DID_LOAD_LOCAL_ITEM",{id:a.id});return}if(a.origin===le.LIMBO){e("DID_COMPLETE_ITEM_PROCESSING",{id:a.id,error:null,serverFileReference:o}),e("DID_DEFINE_VALUE",{id:a.id,value:a.serverId||o});return}t("IS_ASYNC")&&i.options.instantUpload&&e("REQUEST_ITEM_PROCESSING",{query:a.id})},RETRY_ITEM_LOAD:Re(i,a=>{a.retryLoad()}),REQUEST_ITEM_PREPARE:Re(i,(a,n,r)=>{e("REQUEST_PREPARE_OUTPUT",{query:a.id,item:a,success:o=>{e("DID_PREPARE_OUTPUT",{id:a.id,file:o}),n({file:a,output:o})},failure:r},!0)}),REQUEST_ITEM_PROCESSING:Re(i,(a,n,r)=>{if(!(a.status===k.IDLE||a.status===k.PROCESSING_ERROR)){let l=()=>e("REQUEST_ITEM_PROCESSING",{query:a,success:n,failure:r}),s=()=>document.hidden?l():setTimeout(l,32);a.status===k.PROCESSING_COMPLETE||a.status===k.PROCESSING_REVERT_ERROR?a.revert(vt(i.options.server.url,i.options.server.revert),t("GET_FORCE_REVERT")).then(s).catch(()=>{}):a.status===k.PROCESSING&&a.abortProcessing().then(s);return}a.status!==k.PROCESSING_QUEUED&&(a.requestProcessing(),e("DID_REQUEST_ITEM_PROCESSING",{id:a.id}),e("PROCESS_ITEM",{query:a,success:n,failure:r},!0))}),PROCESS_ITEM:Re(i,(a,n,r)=>{let o=t("GET_MAX_PARALLEL_UPLOADS");if(t("GET_ITEMS_BY_STATUS",k.PROCESSING).length===o){i.processingQueue.push({id:a.id,success:n,failure:r});return}if(a.status===k.PROCESSING)return;let s=()=>{let c=i.processingQueue.shift();if(!c)return;let{id:d,success:h,failure:f}=c,p=qe(i.items,d);if(!p||p.archived){s();return}e("PROCESS_ITEM",{query:d,success:h,failure:f},!0)};a.onOnce("process-complete",()=>{n(me(a)),s();let c=i.options.server;if(i.options.instantUpload&&a.origin===le.LOCAL&&$e(c.remove)){let f=()=>{};a.origin=le.LIMBO,i.options.server.remove(a.source,f,f)}t("GET_ITEMS_BY_STATUS",k.PROCESSING_COMPLETE).length===i.items.length&&e("DID_COMPLETE_ITEM_PROCESSING_ALL")}),a.onOnce("process-error",c=>{r({error:c,file:me(a)}),s()});let u=i.options;a.process(cs(ls(u.server.url,u.server.process,u.name,{chunkTransferId:a.transferId,chunkServer:u.server.patch,chunkUploads:u.chunkUploads,chunkForce:u.chunkForce,chunkSize:u.chunkSize,chunkRetryDelays:u.chunkRetryDelays}),{allowMinimumUploadDuration:t("GET_ALLOW_MINIMUM_UPLOAD_DURATION")}),(c,d,h)=>{Ae("PREPARE_OUTPUT",c,{query:t,item:a}).then(f=>{e("DID_PREPARE_OUTPUT",{id:a.id,file:f}),d(f)}).catch(h)})}),RETRY_ITEM_PROCESSING:Re(i,a=>{e("REQUEST_ITEM_PROCESSING",{query:a})}),REQUEST_REMOVE_ITEM:Re(i,a=>{Va(t("GET_BEFORE_REMOVE_FILE"),me(a)).then(n=>{n&&e("REMOVE_ITEM",{query:a})})}),RELEASE_ITEM:Re(i,a=>{a.release()}),REMOVE_ITEM:Re(i,(a,n,r,o)=>{let l=()=>{let u=a.id;Na(i.items,u).archive(),e("DID_REMOVE_ITEM",{error:null,id:u,item:a}),Ri(e,i),n(me(a))},s=i.options.server;a.origin===le.LOCAL&&s&&$e(s.remove)&&o.remove!==!1?(e("DID_START_ITEM_REMOVE",{id:a.id}),s.remove(a.source,()=>l(),u=>{e("DID_THROW_ITEM_REMOVE_ERROR",{id:a.id,error:te("error",0,u,null),status:{main:qt(i.options.labelFileRemoveError)(u),sub:i.options.labelTapToRetry}})})):((o.revert&&a.origin!==le.LOCAL&&a.serverId!==null||i.options.chunkUploads&&a.file.size>i.options.chunkSize||i.options.chunkUploads&&i.options.chunkForce)&&a.revert(vt(i.options.server.url,i.options.server.revert),t("GET_FORCE_REVERT")),l())}),ABORT_ITEM_LOAD:Re(i,a=>{a.abortLoad()}),ABORT_ITEM_PROCESSING:Re(i,a=>{if(a.serverId){e("REVERT_ITEM_PROCESSING",{id:a.id});return}a.abortProcessing().then(()=>{i.options.instantUpload&&e("REMOVE_ITEM",{query:a.id})})}),REQUEST_REVERT_ITEM_PROCESSING:Re(i,a=>{if(!i.options.instantUpload){e("REVERT_ITEM_PROCESSING",{query:a});return}let n=l=>{l&&e("REVERT_ITEM_PROCESSING",{query:a})},r=t("GET_BEFORE_REMOVE_FILE");if(!r)return n(!0);let o=r(me(a));if(o==null)return n(!0);if(typeof o=="boolean")return n(o);typeof o.then=="function"&&o.then(n)}),REVERT_ITEM_PROCESSING:Re(i,a=>{a.revert(vt(i.options.server.url,i.options.server.revert),t("GET_FORCE_REVERT")).then(()=>{(i.options.instantUpload||ps(a))&&e("REMOVE_ITEM",{query:a.id})}).catch(()=>{})}),SET_OPTIONS:({options:a})=>{let n=Object.keys(a),r=gs.filter(l=>n.includes(l));[...r,...Object.keys(a).filter(l=>!r.includes(l))].forEach(l=>{e(`SET_${ri(l,"_").toUpperCase()}`,{value:a[l]})})}}),gs=["server"],Yi=e=>e,Ne=e=>document.createElement(e),ie=(e,t)=>{let i=e.childNodes[0];i?t!==i.nodeValue&&(i.nodeValue=t):(i=document.createTextNode(t),e.appendChild(i))},Ua=(e,t,i,a)=>{let n=(a%360-90)*Math.PI/180;return{x:e+i*Math.cos(n),y:t+i*Math.sin(n)}},Es=(e,t,i,a,n,r)=>{let o=Ua(e,t,i,n),l=Ua(e,t,i,a);return["M",o.x,o.y,"A",i,i,0,r,0,l.x,l.y].join(" ")},Ts=(e,t,i,a,n)=>{let r=1;return n>a&&n-a<=.5&&(r=0),a>n&&a-n>=.5&&(r=0),Es(e,t,i,Math.min(.9999,a)*360,Math.min(.9999,n)*360,r)},Is=({root:e,props:t})=>{t.spin=!1,t.progress=0,t.opacity=0;let i=Jt("svg");e.ref.path=Jt("path",{"stroke-width":2,"stroke-linecap":"round"}),i.appendChild(e.ref.path),e.ref.svg=i,e.appendChild(i)},bs=({root:e,props:t})=>{if(t.opacity===0)return;t.align&&(e.element.dataset.align=t.align);let i=parseInt(ae(e.ref.path,"stroke-width"),10),a=e.rect.element.width*.5,n=0,r=0;t.spin?(n=0,r=.5):(n=0,r=t.progress);let o=Ts(a,a,a-i,n,r);ae(e.ref.path,"d",o),ae(e.ref.path,"stroke-opacity",t.spin||t.progress>0?1:0)},ka=ne({tag:"div",name:"progress-indicator",ignoreRectUpdate:!0,ignoreRect:!0,create:Is,write:bs,mixins:{apis:["progress","spin","align"],styles:["opacity"],animations:{opacity:{type:"tween",duration:500},progress:{type:"spring",stiffness:.95,damping:.65,mass:10}}}}),_s=({root:e,props:t})=>{e.element.innerHTML=(t.icon||"")+`${t.label}`,t.isDisabled=!1},Rs=({root:e,props:t})=>{let{isDisabled:i}=t,a=e.query("GET_DISABLED")||t.opacity===0;a&&!i?(t.isDisabled=!0,ae(e.element,"disabled","disabled")):!a&&i&&(t.isDisabled=!1,e.element.removeAttribute("disabled"))},Ln=ne({tag:"button",attributes:{type:"button"},ignoreRect:!0,ignoreRectUpdate:!0,name:"file-action-button",mixins:{apis:["label"],styles:["translateX","translateY","scaleX","scaleY","opacity"],animations:{scaleX:"spring",scaleY:"spring",translateX:"spring",translateY:"spring",opacity:{type:"tween",duration:250}},listeners:!0},create:_s,write:Rs}),Mn=(e,t=".",i=1e3,a={})=>{let{labelBytes:n="bytes",labelKilobytes:r="KB",labelMegabytes:o="MB",labelGigabytes:l="GB"}=a;e=Math.round(Math.abs(e));let s=i,u=i*i,c=i*i*i;return ee.toFixed(t).split(".").filter(a=>a!=="0").join(i),ys=({root:e,props:t})=>{let i=Ne("span");i.className="filepond--file-info-main",ae(i,"aria-hidden","true"),e.appendChild(i),e.ref.fileName=i;let a=Ne("span");a.className="filepond--file-info-sub",e.appendChild(a),e.ref.fileSize=a,ie(a,e.query("GET_LABEL_FILE_WAITING_FOR_SIZE")),ie(i,Yi(e.query("GET_ITEM_NAME",t.id)))},Mi=({root:e,props:t})=>{ie(e.ref.fileSize,Mn(e.query("GET_ITEM_SIZE",t.id),".",e.query("GET_FILE_SIZE_BASE"),e.query("GET_FILE_SIZE_LABELS",e.query))),ie(e.ref.fileName,Yi(e.query("GET_ITEM_NAME",t.id)))},Wa=({root:e,props:t})=>{if(ht(e.query("GET_ITEM_SIZE",t.id))){Mi({root:e,props:t});return}ie(e.ref.fileSize,e.query("GET_LABEL_FILE_SIZE_NOT_AVAILABLE"))},Ss=ne({name:"file-info",ignoreRect:!0,ignoreRectUpdate:!0,write:pe({DID_LOAD_ITEM:Mi,DID_UPDATE_ITEM_META:Mi,DID_THROW_ITEM_LOAD_ERROR:Wa,DID_THROW_ITEM_INVALID:Wa}),didCreateView:e=>{Ze("CREATE_VIEW",{...e,view:e})},create:ys,mixins:{styles:["translateX","translateY"],animations:{translateX:"spring",translateY:"spring"}}}),On=e=>Math.round(e*100),ws=({root:e})=>{let t=Ne("span");t.className="filepond--file-status-main",e.appendChild(t),e.ref.main=t;let i=Ne("span");i.className="filepond--file-status-sub",e.appendChild(i),e.ref.sub=i,xn({root:e,action:{progress:null}})},xn=({root:e,action:t})=>{let i=t.progress===null?e.query("GET_LABEL_FILE_LOADING"):`${e.query("GET_LABEL_FILE_LOADING")} ${On(t.progress)}%`;ie(e.ref.main,i),ie(e.ref.sub,e.query("GET_LABEL_TAP_TO_CANCEL"))},vs=({root:e,action:t})=>{let i=t.progress===null?e.query("GET_LABEL_FILE_PROCESSING"):`${e.query("GET_LABEL_FILE_PROCESSING")} ${On(t.progress)}%`;ie(e.ref.main,i),ie(e.ref.sub,e.query("GET_LABEL_TAP_TO_CANCEL"))},As=({root:e})=>{ie(e.ref.main,e.query("GET_LABEL_FILE_PROCESSING")),ie(e.ref.sub,e.query("GET_LABEL_TAP_TO_CANCEL"))},Ls=({root:e})=>{ie(e.ref.main,e.query("GET_LABEL_FILE_PROCESSING_ABORTED")),ie(e.ref.sub,e.query("GET_LABEL_TAP_TO_RETRY"))},Ms=({root:e})=>{ie(e.ref.main,e.query("GET_LABEL_FILE_PROCESSING_COMPLETE")),ie(e.ref.sub,e.query("GET_LABEL_TAP_TO_UNDO"))},Ya=({root:e})=>{ie(e.ref.main,""),ie(e.ref.sub,"")},At=({root:e,action:t})=>{ie(e.ref.main,t.status.main),ie(e.ref.sub,t.status.sub)},Os=ne({name:"file-status",ignoreRect:!0,ignoreRectUpdate:!0,write:pe({DID_LOAD_ITEM:Ya,DID_REVERT_ITEM_PROCESSING:Ya,DID_REQUEST_ITEM_PROCESSING:As,DID_ABORT_ITEM_PROCESSING:Ls,DID_COMPLETE_ITEM_PROCESSING:Ms,DID_UPDATE_ITEM_PROCESS_PROGRESS:vs,DID_UPDATE_ITEM_LOAD_PROGRESS:xn,DID_THROW_ITEM_LOAD_ERROR:At,DID_THROW_ITEM_INVALID:At,DID_THROW_ITEM_PROCESSING_ERROR:At,DID_THROW_ITEM_PROCESSING_REVERT_ERROR:At,DID_THROW_ITEM_REMOVE_ERROR:At}),didCreateView:e=>{Ze("CREATE_VIEW",{...e,view:e})},create:ws,mixins:{styles:["translateX","translateY","opacity"],animations:{opacity:{type:"tween",duration:250},translateX:"spring",translateY:"spring"}}}),Oi={AbortItemLoad:{label:"GET_LABEL_BUTTON_ABORT_ITEM_LOAD",action:"ABORT_ITEM_LOAD",className:"filepond--action-abort-item-load",align:"LOAD_INDICATOR_POSITION"},RetryItemLoad:{label:"GET_LABEL_BUTTON_RETRY_ITEM_LOAD",action:"RETRY_ITEM_LOAD",icon:"GET_ICON_RETRY",className:"filepond--action-retry-item-load",align:"BUTTON_PROCESS_ITEM_POSITION"},RemoveItem:{label:"GET_LABEL_BUTTON_REMOVE_ITEM",action:"REQUEST_REMOVE_ITEM",icon:"GET_ICON_REMOVE",className:"filepond--action-remove-item",align:"BUTTON_REMOVE_ITEM_POSITION"},ProcessItem:{label:"GET_LABEL_BUTTON_PROCESS_ITEM",action:"REQUEST_ITEM_PROCESSING",icon:"GET_ICON_PROCESS",className:"filepond--action-process-item",align:"BUTTON_PROCESS_ITEM_POSITION"},AbortItemProcessing:{label:"GET_LABEL_BUTTON_ABORT_ITEM_PROCESSING",action:"ABORT_ITEM_PROCESSING",className:"filepond--action-abort-item-processing",align:"BUTTON_PROCESS_ITEM_POSITION"},RetryItemProcessing:{label:"GET_LABEL_BUTTON_RETRY_ITEM_PROCESSING",action:"RETRY_ITEM_PROCESSING",icon:"GET_ICON_RETRY",className:"filepond--action-retry-item-processing",align:"BUTTON_PROCESS_ITEM_POSITION"},RevertItemProcessing:{label:"GET_LABEL_BUTTON_UNDO_ITEM_PROCESSING",action:"REQUEST_REVERT_ITEM_PROCESSING",icon:"GET_ICON_UNDO",className:"filepond--action-revert-item-processing",align:"BUTTON_PROCESS_ITEM_POSITION"}},xi=[];ee(Oi,e=>{xi.push(e)});var Ie=e=>{if(Di(e)==="right")return 0;let t=e.ref.buttonRemoveItem.rect.element;return t.hidden?null:t.width+t.left},xs=e=>e.ref.buttonAbortItemLoad.rect.element.width,Xt=e=>Math.floor(e.ref.buttonRemoveItem.rect.element.height/4),Ds=e=>Math.floor(e.ref.buttonRemoveItem.rect.element.left/2),Ps=e=>e.query("GET_STYLE_LOAD_INDICATOR_POSITION"),Fs=e=>e.query("GET_STYLE_PROGRESS_INDICATOR_POSITION"),Di=e=>e.query("GET_STYLE_BUTTON_REMOVE_ITEM_POSITION"),Cs={buttonAbortItemLoad:{opacity:0},buttonRetryItemLoad:{opacity:0},buttonRemoveItem:{opacity:0},buttonProcessItem:{opacity:0},buttonAbortItemProcessing:{opacity:0},buttonRetryItemProcessing:{opacity:0},buttonRevertItemProcessing:{opacity:0},loadProgressIndicator:{opacity:0,align:Ps},processProgressIndicator:{opacity:0,align:Fs},processingCompleteIndicator:{opacity:0,scaleX:.75,scaleY:.75},info:{translateX:0,translateY:0,opacity:0},status:{translateX:0,translateY:0,opacity:0}},$a={buttonRemoveItem:{opacity:1},buttonProcessItem:{opacity:1},info:{translateX:Ie},status:{translateX:Ie}},Si={buttonAbortItemProcessing:{opacity:1},processProgressIndicator:{opacity:1},status:{opacity:1}},ot={DID_THROW_ITEM_INVALID:{buttonRemoveItem:{opacity:1},info:{translateX:Ie},status:{translateX:Ie,opacity:1}},DID_START_ITEM_LOAD:{buttonAbortItemLoad:{opacity:1},loadProgressIndicator:{opacity:1},status:{opacity:1}},DID_THROW_ITEM_LOAD_ERROR:{buttonRetryItemLoad:{opacity:1},buttonRemoveItem:{opacity:1},info:{translateX:Ie},status:{opacity:1}},DID_START_ITEM_REMOVE:{processProgressIndicator:{opacity:1,align:Di},info:{translateX:Ie},status:{opacity:0}},DID_THROW_ITEM_REMOVE_ERROR:{processProgressIndicator:{opacity:0,align:Di},buttonRemoveItem:{opacity:1},info:{translateX:Ie},status:{opacity:1,translateX:Ie}},DID_LOAD_ITEM:$a,DID_LOAD_LOCAL_ITEM:{buttonRemoveItem:{opacity:1},info:{translateX:Ie},status:{translateX:Ie}},DID_START_ITEM_PROCESSING:Si,DID_REQUEST_ITEM_PROCESSING:Si,DID_UPDATE_ITEM_PROCESS_PROGRESS:Si,DID_COMPLETE_ITEM_PROCESSING:{buttonRevertItemProcessing:{opacity:1},info:{opacity:1},status:{opacity:1}},DID_THROW_ITEM_PROCESSING_ERROR:{buttonRemoveItem:{opacity:1},buttonRetryItemProcessing:{opacity:1},status:{opacity:1},info:{translateX:Ie}},DID_THROW_ITEM_PROCESSING_REVERT_ERROR:{buttonRevertItemProcessing:{opacity:1},status:{opacity:1},info:{opacity:1}},DID_ABORT_ITEM_PROCESSING:{buttonRemoveItem:{opacity:1},buttonProcessItem:{opacity:1},info:{translateX:Ie},status:{opacity:1}},DID_REVERT_ITEM_PROCESSING:$a},zs=ne({create:({root:e})=>{e.element.innerHTML=e.query("GET_ICON_DONE")},name:"processing-complete-indicator",ignoreRect:!0,mixins:{styles:["scaleX","scaleY","opacity"],animations:{scaleX:"spring",scaleY:"spring",opacity:{type:"tween",duration:250}}}}),Ns=({root:e,props:t})=>{let i=Object.keys(Oi).reduce((p,m)=>(p[m]={...Oi[m]},p),{}),{id:a}=t,n=e.query("GET_ALLOW_REVERT"),r=e.query("GET_ALLOW_REMOVE"),o=e.query("GET_ALLOW_PROCESS"),l=e.query("GET_INSTANT_UPLOAD"),s=e.query("IS_ASYNC"),u=e.query("GET_STYLE_BUTTON_REMOVE_ITEM_ALIGN"),c;s?o&&!n?c=p=>!/RevertItemProcessing/.test(p):!o&&n?c=p=>!/ProcessItem|RetryItemProcessing|AbortItemProcessing/.test(p):!o&&!n&&(c=p=>!/Process/.test(p)):c=p=>!/Process/.test(p);let d=c?xi.filter(c):xi.concat();if(l&&n&&(i.RevertItemProcessing.label="GET_LABEL_BUTTON_REMOVE_ITEM",i.RevertItemProcessing.icon="GET_ICON_REMOVE"),s&&!n){let p=ot.DID_COMPLETE_ITEM_PROCESSING;p.info.translateX=Ds,p.info.translateY=Xt,p.status.translateY=Xt,p.processingCompleteIndicator={opacity:1,scaleX:1,scaleY:1}}if(s&&!o&&(["DID_START_ITEM_PROCESSING","DID_REQUEST_ITEM_PROCESSING","DID_UPDATE_ITEM_PROCESS_PROGRESS","DID_THROW_ITEM_PROCESSING_ERROR"].forEach(p=>{ot[p].status.translateY=Xt}),ot.DID_THROW_ITEM_PROCESSING_ERROR.status.translateX=xs),u&&n){i.RevertItemProcessing.align="BUTTON_REMOVE_ITEM_POSITION";let p=ot.DID_COMPLETE_ITEM_PROCESSING;p.info.translateX=Ie,p.status.translateY=Xt,p.processingCompleteIndicator={opacity:1,scaleX:1,scaleY:1}}r||(i.RemoveItem.disabled=!0),ee(i,(p,m)=>{let g=e.createChildView(Ln,{label:e.query(m.label),icon:e.query(m.icon),opacity:0});d.includes(p)&&e.appendChildView(g),m.disabled&&(g.element.setAttribute("disabled","disabled"),g.element.setAttribute("hidden","hidden")),g.element.dataset.align=e.query(`GET_STYLE_${m.align}`),g.element.classList.add(m.className),g.on("click",b=>{b.stopPropagation(),!m.disabled&&e.dispatch(m.action,{query:a})}),e.ref[`button${p}`]=g}),e.ref.processingCompleteIndicator=e.appendChildView(e.createChildView(zs)),e.ref.processingCompleteIndicator.element.dataset.align=e.query("GET_STYLE_BUTTON_PROCESS_ITEM_POSITION"),e.ref.info=e.appendChildView(e.createChildView(Ss,{id:a})),e.ref.status=e.appendChildView(e.createChildView(Os,{id:a}));let h=e.appendChildView(e.createChildView(ka,{opacity:0,align:e.query("GET_STYLE_LOAD_INDICATOR_POSITION")}));h.element.classList.add("filepond--load-indicator"),e.ref.loadProgressIndicator=h;let f=e.appendChildView(e.createChildView(ka,{opacity:0,align:e.query("GET_STYLE_PROGRESS_INDICATOR_POSITION")}));f.element.classList.add("filepond--process-indicator"),e.ref.processProgressIndicator=f,e.ref.activeStyles=[]},Bs=({root:e,actions:t,props:i})=>{Gs({root:e,actions:t,props:i});let a=t.concat().filter(n=>/^DID_/.test(n.type)).reverse().find(n=>ot[n.type]);if(a){e.ref.activeStyles=[];let n=ot[a.type];ee(Cs,(r,o)=>{let l=e.ref[r];ee(o,(s,u)=>{let c=n[r]&&typeof n[r][s]<"u"?n[r][s]:u;e.ref.activeStyles.push({control:l,key:s,value:c})})})}e.ref.activeStyles.forEach(({control:n,key:r,value:o})=>{n[r]=typeof o=="function"?o(e):o})},Gs=pe({DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING:({root:e,action:t})=>{e.ref.buttonAbortItemProcessing.label=t.value},DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD:({root:e,action:t})=>{e.ref.buttonAbortItemLoad.label=t.value},DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL:({root:e,action:t})=>{e.ref.buttonAbortItemRemoval.label=t.value},DID_REQUEST_ITEM_PROCESSING:({root:e})=>{e.ref.processProgressIndicator.spin=!0,e.ref.processProgressIndicator.progress=0},DID_START_ITEM_LOAD:({root:e})=>{e.ref.loadProgressIndicator.spin=!0,e.ref.loadProgressIndicator.progress=0},DID_START_ITEM_REMOVE:({root:e})=>{e.ref.processProgressIndicator.spin=!0,e.ref.processProgressIndicator.progress=0},DID_UPDATE_ITEM_LOAD_PROGRESS:({root:e,action:t})=>{e.ref.loadProgressIndicator.spin=!1,e.ref.loadProgressIndicator.progress=t.progress},DID_UPDATE_ITEM_PROCESS_PROGRESS:({root:e,action:t})=>{e.ref.processProgressIndicator.spin=!1,e.ref.processProgressIndicator.progress=t.progress}}),Vs=ne({create:Ns,write:Bs,didCreateView:e=>{Ze("CREATE_VIEW",{...e,view:e})},name:"file"}),Us=({root:e,props:t})=>{e.ref.fileName=Ne("legend"),e.appendChild(e.ref.fileName),e.ref.file=e.appendChildView(e.createChildView(Vs,{id:t.id})),e.ref.data=!1},ks=({root:e,props:t})=>{ie(e.ref.fileName,Yi(e.query("GET_ITEM_NAME",t.id)))},Hs=ne({create:Us,ignoreRect:!0,write:pe({DID_LOAD_ITEM:ks}),didCreateView:e=>{Ze("CREATE_VIEW",{...e,view:e})},tag:"fieldset",name:"file-wrapper"}),qa={type:"spring",damping:.6,mass:7},Ws=({root:e,props:t})=>{[{name:"top"},{name:"center",props:{translateY:null,scaleY:null},mixins:{animations:{scaleY:qa},styles:["translateY","scaleY"]}},{name:"bottom",props:{translateY:null},mixins:{animations:{translateY:qa},styles:["translateY"]}}].forEach(i=>{Ys(e,i,t.name)}),e.element.classList.add(`filepond--${t.name}`),e.ref.scalable=null},Ys=(e,t,i)=>{let a=ne({name:`panel-${t.name} filepond--${i}`,mixins:t.mixins,ignoreRectUpdate:!0}),n=e.createChildView(a,t.props);e.ref[t.name]=e.appendChildView(n)},$s=({root:e,props:t})=>{if((e.ref.scalable===null||t.scalable!==e.ref.scalable)&&(e.ref.scalable=hn(t.scalable)?t.scalable:!0,e.element.dataset.scalable=e.ref.scalable),!t.height)return;let i=e.ref.top.rect.element,a=e.ref.bottom.rect.element,n=Math.max(i.height+a.height,t.height);e.ref.center.translateY=i.height,e.ref.center.scaleY=(n-i.height-a.height)/100,e.ref.bottom.translateY=n-a.height},Dn=ne({name:"panel",read:({root:e,props:t})=>t.heightCurrent=e.ref.bottom.translateY,write:$s,create:Ws,ignoreRect:!0,mixins:{apis:["height","heightCurrent","scalable"]}}),qs=e=>{let t=e.map(a=>a.id),i;return{setIndex:a=>{i=a},getIndex:()=>i,getItemIndex:a=>t.indexOf(a.id)}},Xa={type:"spring",stiffness:.75,damping:.45,mass:10},ja="spring",Qa={DID_START_ITEM_LOAD:"busy",DID_UPDATE_ITEM_LOAD_PROGRESS:"loading",DID_THROW_ITEM_INVALID:"load-invalid",DID_THROW_ITEM_LOAD_ERROR:"load-error",DID_LOAD_ITEM:"idle",DID_THROW_ITEM_REMOVE_ERROR:"remove-error",DID_START_ITEM_REMOVE:"busy",DID_START_ITEM_PROCESSING:"busy processing",DID_REQUEST_ITEM_PROCESSING:"busy processing",DID_UPDATE_ITEM_PROCESS_PROGRESS:"processing",DID_COMPLETE_ITEM_PROCESSING:"processing-complete",DID_THROW_ITEM_PROCESSING_ERROR:"processing-error",DID_THROW_ITEM_PROCESSING_REVERT_ERROR:"processing-revert-error",DID_ABORT_ITEM_PROCESSING:"cancelled",DID_REVERT_ITEM_PROCESSING:"idle"},Xs=({root:e,props:t})=>{if(e.ref.handleClick=a=>e.dispatch("DID_ACTIVATE_ITEM",{id:t.id}),e.element.id=`filepond--item-${t.id}`,e.element.addEventListener("click",e.ref.handleClick),e.ref.container=e.appendChildView(e.createChildView(Hs,{id:t.id})),e.ref.panel=e.appendChildView(e.createChildView(Dn,{name:"item-panel"})),e.ref.panel.height=null,t.markedForRemoval=!1,!e.query("GET_ALLOW_REORDER"))return;e.element.dataset.dragState="idle";let i=a=>{if(!a.isPrimary)return;let n=!1,r={x:a.pageX,y:a.pageY};t.dragOrigin={x:e.translateX,y:e.translateY},t.dragCenter={x:a.offsetX,y:a.offsetY};let o=qs(e.query("GET_ACTIVE_ITEMS"));e.dispatch("DID_GRAB_ITEM",{id:t.id,dragState:o});let l=u=>{if(!u.isPrimary)return;u.stopPropagation(),u.preventDefault(),t.dragOffset={x:u.pageX-r.x,y:u.pageY-r.y},t.dragOffset.x*t.dragOffset.x+t.dragOffset.y*t.dragOffset.y>16&&!n&&(n=!0,e.element.removeEventListener("click",e.ref.handleClick)),e.dispatch("DID_DRAG_ITEM",{id:t.id,dragState:o})},s=u=>{u.isPrimary&&(document.removeEventListener("pointermove",l),document.removeEventListener("pointerup",s),t.dragOffset={x:u.pageX-r.x,y:u.pageY-r.y},e.dispatch("DID_DROP_ITEM",{id:t.id,dragState:o}),n&&setTimeout(()=>e.element.addEventListener("click",e.ref.handleClick),0))};document.addEventListener("pointermove",l),document.addEventListener("pointerup",s)};e.element.addEventListener("pointerdown",i)},js=pe({DID_UPDATE_PANEL_HEIGHT:({root:e,action:t})=>{e.height=t.height}}),Qs=pe({DID_GRAB_ITEM:({root:e,props:t})=>{t.dragOrigin={x:e.translateX,y:e.translateY}},DID_DRAG_ITEM:({root:e})=>{e.element.dataset.dragState="drag"},DID_DROP_ITEM:({root:e,props:t})=>{t.dragOffset=null,t.dragOrigin=null,e.element.dataset.dragState="drop"}},({root:e,actions:t,props:i,shouldOptimize:a})=>{e.element.dataset.dragState==="drop"&&e.scaleX<=1&&(e.element.dataset.dragState="idle");let n=t.concat().filter(o=>/^DID_/.test(o.type)).reverse().find(o=>Qa[o.type]);n&&n.type!==i.currentState&&(i.currentState=n.type,e.element.dataset.filepondItemState=Qa[i.currentState]||"");let r=e.query("GET_ITEM_PANEL_ASPECT_RATIO")||e.query("GET_PANEL_ASPECT_RATIO");r?a||(e.height=e.rect.element.width*r):(js({root:e,actions:t,props:i}),!e.height&&e.ref.container.rect.element.height>0&&(e.height=e.ref.container.rect.element.height)),a&&(e.ref.panel.height=null),e.ref.panel.height=e.height}),Zs=ne({create:Xs,write:Qs,destroy:({root:e,props:t})=>{e.element.removeEventListener("click",e.ref.handleClick),e.dispatch("RELEASE_ITEM",{query:t.id})},tag:"li",name:"item",mixins:{apis:["id","interactionMethod","markedForRemoval","spawnDate","dragCenter","dragOrigin","dragOffset"],styles:["translateX","translateY","scaleX","scaleY","opacity","height"],animations:{scaleX:ja,scaleY:ja,translateX:Xa,translateY:Xa,opacity:{type:"tween",duration:150}}}}),$i=(e,t)=>Math.max(1,Math.floor((e+1)/t)),qi=(e,t,i)=>{if(!i)return;let a=e.rect.element.width,n=t.length,r=null;if(n===0||i.topE){if(i.left{ae(e.element,"role","list"),e.ref.lastItemSpanwDate=Date.now()},Js=({root:e,action:t})=>{let{id:i,index:a,interactionMethod:n}=t;e.ref.addIndex=a;let r=Date.now(),o=r,l=1;if(n!==ye.NONE){l=0;let s=e.query("GET_ITEM_INSERT_INTERVAL"),u=r-e.ref.lastItemSpanwDate;o=u{e.dragOffset?(e.translateX=null,e.translateY=null,e.translateX=e.dragOrigin.x+e.dragOffset.x,e.translateY=e.dragOrigin.y+e.dragOffset.y,e.scaleX=1.025,e.scaleY=1.025):(e.translateX=t,e.translateY=i,Date.now()>e.spawnDate&&(e.opacity===0&&ec(e,t,i,a,n),e.scaleX=1,e.scaleY=1,e.opacity=1))},ec=(e,t,i,a,n)=>{e.interactionMethod===ye.NONE?(e.translateX=null,e.translateX=t,e.translateY=null,e.translateY=i):e.interactionMethod===ye.DROP?(e.translateX=null,e.translateX=t-a*20,e.translateY=null,e.translateY=i-n*10,e.scaleX=.8,e.scaleY=.8):e.interactionMethod===ye.BROWSE?(e.translateY=null,e.translateY=i-30):e.interactionMethod===ye.API&&(e.translateX=null,e.translateX=t-30,e.translateY=null)},tc=({root:e,action:t})=>{let{id:i}=t,a=e.childViews.find(n=>n.id===i);a&&(a.scaleX=.9,a.scaleY=.9,a.opacity=0,a.markedForRemoval=!0)},wi=e=>e.rect.element.height+e.rect.element.marginBottom*.5+e.rect.element.marginTop*.5,ic=e=>e.rect.element.width+e.rect.element.marginLeft*.5+e.rect.element.marginRight*.5,ac=({root:e,action:t})=>{let{id:i,dragState:a}=t,n=e.query("GET_ITEM",{id:i}),r=e.childViews.find(g=>g.id===i),o=e.childViews.length,l=a.getItemIndex(n);if(!r)return;let s={x:r.dragOrigin.x+r.dragOffset.x+r.dragCenter.x,y:r.dragOrigin.y+r.dragOffset.y+r.dragCenter.y},u=wi(r),c=ic(r),d=Math.floor(e.rect.outer.width/c);d>o&&(d=o);let h=Math.floor(o/d+1);jt.setHeight=u*h,jt.setWidth=c*d;var f={y:Math.floor(s.y/u),x:Math.floor(s.x/c),getGridIndex:function(){return s.y>jt.getHeight||s.y<0||s.x>jt.getWidth||s.x<0?l:this.y*d+this.x},getColIndex:function(){let b=e.query("GET_ACTIVE_ITEMS"),E=e.childViews.filter(x=>x.rect.element.height),T=b.map(x=>E.find(O=>O.id===x.id)),_=T.findIndex(x=>x===r),y=wi(r),I=T.length,v=I,R=0,S=0,D=0;for(let x=0;xx){if(s.y1?f.getGridIndex():f.getColIndex();e.dispatch("MOVE_ITEM",{query:r,index:p});let m=a.getIndex();if(m===void 0||m!==p){if(a.setIndex(p),m===void 0)return;e.dispatch("DID_REORDER_ITEMS",{items:e.query("GET_ACTIVE_ITEMS"),origin:l,target:p})}},nc=pe({DID_ADD_ITEM:Js,DID_REMOVE_ITEM:tc,DID_DRAG_ITEM:ac}),rc=({root:e,props:t,actions:i,shouldOptimize:a})=>{nc({root:e,props:t,actions:i});let{dragCoordinates:n}=t,r=e.rect.element.width,o=e.childViews.filter(T=>T.rect.element.height),l=e.query("GET_ACTIVE_ITEMS").map(T=>o.find(_=>_.id===T.id)).filter(T=>T),s=n?qi(e,l,n):null,u=e.ref.addIndex||null;e.ref.addIndex=null;let c=0,d=0,h=0;if(l.length===0)return;let f=l[0].rect.element,p=f.marginTop+f.marginBottom,m=f.marginLeft+f.marginRight,g=f.width+m,b=f.height+p,E=$i(r,g);if(E===1){let T=0,_=0;l.forEach((y,I)=>{if(s){let S=I-s;S===-2?_=-p*.25:S===-1?_=-p*.75:S===0?_=p*.75:S===1?_=p*.25:_=0}a&&(y.translateX=null,y.translateY=null),y.markedForRemoval||Za(y,0,T+_);let R=(y.rect.element.height+p)*(y.markedForRemoval?y.opacity:1);T+=R})}else{let T=0,_=0;l.forEach((y,I)=>{I===s&&(c=1),I===u&&(h+=1),y.markedForRemoval&&y.opacity<.5&&(d-=1);let v=I+h+c+d,R=v%E,S=Math.floor(v/E),D=R*g,x=S*b,O=Math.sign(D-T),z=Math.sign(x-_);T=D,_=x,!y.markedForRemoval&&(a&&(y.translateX=null,y.translateY=null),Za(y,D,x,O,z))})}},oc=(e,t)=>t.filter(i=>i.data&&i.data.id?e.id===i.data.id:!0),lc=ne({create:Ks,write:rc,tag:"ul",name:"list",didWriteView:({root:e})=>{e.childViews.filter(t=>t.markedForRemoval&&t.opacity===0&&t.resting).forEach(t=>{t._destroy(),e.removeChildView(t)})},filterFrameActionsForChild:oc,mixins:{apis:["dragCoordinates"]}}),sc=({root:e,props:t})=>{e.ref.list=e.appendChildView(e.createChildView(lc)),t.dragCoordinates=null,t.overflowing=!1},cc=({root:e,props:t,action:i})=>{e.query("GET_ITEM_INSERT_LOCATION_FREEDOM")&&(t.dragCoordinates={left:i.position.scopeLeft-e.ref.list.rect.element.left,top:i.position.scopeTop-(e.rect.outer.top+e.rect.element.marginTop+e.rect.element.scrollTop)})},dc=({props:e})=>{e.dragCoordinates=null},uc=pe({DID_DRAG:cc,DID_END_DRAG:dc}),hc=({root:e,props:t,actions:i})=>{if(uc({root:e,props:t,actions:i}),e.ref.list.dragCoordinates=t.dragCoordinates,t.overflowing&&!t.overflow&&(t.overflowing=!1,e.element.dataset.state="",e.height=null),t.overflow){let a=Math.round(t.overflow);a!==e.height&&(t.overflowing=!0,e.element.dataset.state="overflow",e.height=a)}},fc=ne({create:sc,write:hc,name:"list-scroller",mixins:{apis:["overflow","dragCoordinates"],styles:["height","translateY"],animations:{translateY:"spring"}}}),Me=(e,t,i,a="")=>{i?ae(e,t,a):e.removeAttribute(t)},pc=e=>{if(!(!e||e.value==="")){try{e.value=""}catch{}if(e.value){let t=Ne("form"),i=e.parentNode,a=e.nextSibling;t.appendChild(e),t.reset(),a?i.insertBefore(e,a):i.appendChild(e)}}},mc=({root:e,props:t})=>{e.element.id=`filepond--browser-${t.id}`,ae(e.element,"name",e.query("GET_NAME")),ae(e.element,"aria-controls",`filepond--assistant-${t.id}`),ae(e.element,"aria-labelledby",`filepond--drop-label-${t.id}`),Pn({root:e,action:{value:e.query("GET_ACCEPTED_FILE_TYPES")}}),Fn({root:e,action:{value:e.query("GET_ALLOW_MULTIPLE")}}),Cn({root:e,action:{value:e.query("GET_ALLOW_DIRECTORIES_ONLY")}}),Pi({root:e}),zn({root:e,action:{value:e.query("GET_REQUIRED")}}),Nn({root:e,action:{value:e.query("GET_CAPTURE_METHOD")}}),e.ref.handleChange=i=>{if(!e.element.value)return;let a=Array.from(e.element.files).map(n=>(n._relativePath=n.webkitRelativePath,n));setTimeout(()=>{t.onload(a),pc(e.element)},250)},e.element.addEventListener("change",e.ref.handleChange)},Pn=({root:e,action:t})=>{e.query("GET_ALLOW_SYNC_ACCEPT_ATTRIBUTE")&&Me(e.element,"accept",!!t.value,t.value?t.value.join(","):"")},Fn=({root:e,action:t})=>{Me(e.element,"multiple",t.value)},Cn=({root:e,action:t})=>{Me(e.element,"webkitdirectory",t.value)},Pi=({root:e})=>{let t=e.query("GET_DISABLED"),i=e.query("GET_ALLOW_BROWSE"),a=t||!i;Me(e.element,"disabled",a)},zn=({root:e,action:t})=>{t.value?e.query("GET_TOTAL_ITEMS")===0&&Me(e.element,"required",!0):Me(e.element,"required",!1)},Nn=({root:e,action:t})=>{Me(e.element,"capture",!!t.value,t.value===!0?"":t.value)},Ka=({root:e})=>{let{element:t}=e;e.query("GET_TOTAL_ITEMS")>0?(Me(t,"required",!1),Me(t,"name",!1)):(Me(t,"name",!0,e.query("GET_NAME")),e.query("GET_CHECK_VALIDITY")&&t.setCustomValidity(""),e.query("GET_REQUIRED")&&Me(t,"required",!0))},gc=({root:e})=>{e.query("GET_CHECK_VALIDITY")&&e.element.setCustomValidity(e.query("GET_LABEL_INVALID_FIELD"))},Ec=ne({tag:"input",name:"browser",ignoreRect:!0,ignoreRectUpdate:!0,attributes:{type:"file"},create:mc,destroy:({root:e})=>{e.element.removeEventListener("change",e.ref.handleChange)},write:pe({DID_LOAD_ITEM:Ka,DID_REMOVE_ITEM:Ka,DID_THROW_ITEM_INVALID:gc,DID_SET_DISABLED:Pi,DID_SET_ALLOW_BROWSE:Pi,DID_SET_ALLOW_DIRECTORIES_ONLY:Cn,DID_SET_ALLOW_MULTIPLE:Fn,DID_SET_ACCEPTED_FILE_TYPES:Pn,DID_SET_CAPTURE_METHOD:Nn,DID_SET_REQUIRED:zn})}),Ja={ENTER:13,SPACE:32},Tc=({root:e,props:t})=>{let i=Ne("label");ae(i,"for",`filepond--browser-${t.id}`),ae(i,"id",`filepond--drop-label-${t.id}`),ae(i,"aria-hidden","true"),e.ref.handleKeyDown=a=>{(a.keyCode===Ja.ENTER||a.keyCode===Ja.SPACE)&&(a.preventDefault(),e.ref.label.click())},e.ref.handleClick=a=>{a.target===i||i.contains(a.target)||e.ref.label.click()},i.addEventListener("keydown",e.ref.handleKeyDown),e.element.addEventListener("click",e.ref.handleClick),Bn(i,t.caption),e.appendChild(i),e.ref.label=i},Bn=(e,t)=>{e.innerHTML=t;let i=e.querySelector(".filepond--label-action");return i&&ae(i,"tabindex","0"),t},Ic=ne({name:"drop-label",ignoreRect:!0,create:Tc,destroy:({root:e})=>{e.ref.label.addEventListener("keydown",e.ref.handleKeyDown),e.element.removeEventListener("click",e.ref.handleClick)},write:pe({DID_SET_LABEL_IDLE:({root:e,action:t})=>{Bn(e.ref.label,t.value)}}),mixins:{styles:["opacity","translateX","translateY"],animations:{opacity:{type:"tween",duration:150},translateX:"spring",translateY:"spring"}}}),bc=ne({name:"drip-blob",ignoreRect:!0,mixins:{styles:["translateX","translateY","scaleX","scaleY","opacity"],animations:{scaleX:"spring",scaleY:"spring",translateX:"spring",translateY:"spring",opacity:{type:"tween",duration:250}}}}),_c=({root:e})=>{let t=e.rect.element.width*.5,i=e.rect.element.height*.5;e.ref.blob=e.appendChildView(e.createChildView(bc,{opacity:0,scaleX:2.5,scaleY:2.5,translateX:t,translateY:i}))},Rc=({root:e,action:t})=>{if(!e.ref.blob){_c({root:e});return}e.ref.blob.translateX=t.position.scopeLeft,e.ref.blob.translateY=t.position.scopeTop,e.ref.blob.scaleX=1,e.ref.blob.scaleY=1,e.ref.blob.opacity=1},yc=({root:e})=>{e.ref.blob&&(e.ref.blob.opacity=0)},Sc=({root:e})=>{e.ref.blob&&(e.ref.blob.scaleX=2.5,e.ref.blob.scaleY=2.5,e.ref.blob.opacity=0)},wc=({root:e,props:t,actions:i})=>{vc({root:e,props:t,actions:i});let{blob:a}=e.ref;i.length===0&&a&&a.opacity===0&&(e.removeChildView(a),e.ref.blob=null)},vc=pe({DID_DRAG:Rc,DID_DROP:Sc,DID_END_DRAG:yc}),Ac=ne({ignoreRect:!0,ignoreRectUpdate:!0,name:"drip",write:wc}),Gn=(e,t)=>{try{let i=new DataTransfer;t.forEach(a=>{a instanceof File?i.items.add(a):i.items.add(new File([a],a.name,{type:a.type}))}),e.files=i.files}catch{return!1}return!0},Lc=({root:e})=>e.ref.fields={},si=(e,t)=>e.ref.fields[t],Xi=e=>{e.query("GET_ACTIVE_ITEMS").forEach(t=>{e.ref.fields[t.id]&&e.element.appendChild(e.ref.fields[t.id])})},en=({root:e})=>Xi(e),Mc=({root:e,action:t})=>{let n=!(e.query("GET_ITEM",t.id).origin===le.LOCAL)&&e.query("SHOULD_UPDATE_FILE_INPUT"),r=Ne("input");r.type=n?"file":"hidden",r.name=e.query("GET_NAME"),r.disabled=e.query("GET_DISABLED"),e.ref.fields[t.id]=r,Xi(e)},Oc=({root:e,action:t})=>{let i=si(e,t.id);if(!i||(t.serverFileReference!==null&&(i.value=t.serverFileReference),!e.query("SHOULD_UPDATE_FILE_INPUT")))return;let a=e.query("GET_ITEM",t.id);Gn(i,[a.file])},xc=({root:e,action:t})=>{e.query("SHOULD_UPDATE_FILE_INPUT")&&setTimeout(()=>{let i=si(e,t.id);i&&Gn(i,[t.file])},0)},Dc=({root:e})=>{e.element.disabled=e.query("GET_DISABLED")},Pc=({root:e,action:t})=>{let i=si(e,t.id);i&&(i.parentNode&&i.parentNode.removeChild(i),delete e.ref.fields[t.id])},Fc=({root:e,action:t})=>{let i=si(e,t.id);i&&(t.value===null?i.removeAttribute("value"):i.type!="file"&&(i.value=t.value),Xi(e))},Cc=pe({DID_SET_DISABLED:Dc,DID_ADD_ITEM:Mc,DID_LOAD_ITEM:Oc,DID_REMOVE_ITEM:Pc,DID_DEFINE_VALUE:Fc,DID_PREPARE_OUTPUT:xc,DID_REORDER_ITEMS:en,DID_SORT_ITEMS:en}),zc=ne({tag:"fieldset",name:"data",create:Lc,write:Cc,ignoreRect:!0}),Nc=e=>"getRootNode"in e?e.getRootNode():document,Bc=["jpg","jpeg","png","gif","bmp","webp","svg","tiff"],Gc=["css","csv","html","txt"],Vc={zip:"zip|compressed",epub:"application/epub+zip"},Vn=(e="")=>(e=e.toLowerCase(),Bc.includes(e)?"image/"+(e==="jpg"?"jpeg":e==="svg"?"svg+xml":e):Gc.includes(e)?"text/"+e:Vc[e]||""),ji=e=>new Promise((t,i)=>{let a=Xc(e);if(a.length&&!Uc(e))return t(a);kc(e).then(t)}),Uc=e=>e.files?e.files.length>0:!1,kc=e=>new Promise((t,i)=>{let a=(e.items?Array.from(e.items):[]).filter(n=>Hc(n)).map(n=>Wc(n));if(!a.length){t(e.files?Array.from(e.files):[]);return}Promise.all(a).then(n=>{let r=[];n.forEach(o=>{r.push.apply(r,o)}),t(r.filter(o=>o).map(o=>(o._relativePath||(o._relativePath=o.webkitRelativePath),o)))}).catch(console.error)}),Hc=e=>{if(Un(e)){let t=Qi(e);if(t)return t.isFile||t.isDirectory}return e.kind==="file"},Wc=e=>new Promise((t,i)=>{if(qc(e)){Yc(Qi(e)).then(t).catch(i);return}t([e.getAsFile()])}),Yc=e=>new Promise((t,i)=>{let a=[],n=0,r=0,o=()=>{r===0&&n===0&&t(a)},l=s=>{n++;let u=s.createReader(),c=()=>{u.readEntries(d=>{if(d.length===0){n--,o();return}d.forEach(h=>{h.isDirectory?l(h):(r++,h.file(f=>{let p=$c(f);h.fullPath&&(p._relativePath=h.fullPath),a.push(p),r--,o()}))}),c()},i)};c()};l(e)}),$c=e=>{if(e.type.length)return e;let t=e.lastModifiedDate,i=e.name,a=Vn(li(e.name));return a.length&&(e=e.slice(0,e.size,a),e.name=i,e.lastModifiedDate=t),e},qc=e=>Un(e)&&(Qi(e)||{}).isDirectory,Un=e=>"webkitGetAsEntry"in e,Qi=e=>e.webkitGetAsEntry(),Xc=e=>{let t=[];try{if(t=Qc(e),t.length)return t;t=jc(e)}catch{}return t},jc=e=>{let t=e.getData("url");return typeof t=="string"&&t.length?[t]:[]},Qc=e=>{let t=e.getData("text/html");if(typeof t=="string"&&t.length){let i=t.match(/src\s*=\s*"(.+?)"/);if(i)return[i[1]]}return[]},ti=[],Qe=e=>({pageLeft:e.pageX,pageTop:e.pageY,scopeLeft:e.offsetX||e.layerX,scopeTop:e.offsetY||e.layerY}),Zc=(e,t,i)=>{let a=Kc(t),n={element:e,filterElement:i,state:null,ondrop:()=>{},onenter:()=>{},ondrag:()=>{},onexit:()=>{},onload:()=>{},allowdrop:()=>{}};return n.destroy=a.addListener(n),n},Kc=e=>{let t=ti.find(a=>a.element===e);if(t)return t;let i=Jc(e);return ti.push(i),i},Jc=e=>{let t=[],i={dragenter:td,dragover:id,dragleave:nd,drop:ad},a={};ee(i,(r,o)=>{a[r]=o(e,t),e.addEventListener(r,a[r],!1)});let n={element:e,addListener:r=>(t.push(r),()=>{t.splice(t.indexOf(r),1),t.length===0&&(ti.splice(ti.indexOf(n),1),ee(i,o=>{e.removeEventListener(o,a[o],!1)}))})};return n},ed=(e,t)=>("elementFromPoint"in e||(e=document),e.elementFromPoint(t.x,t.y)),Zi=(e,t)=>{let i=Nc(t),a=ed(i,{x:e.pageX-window.pageXOffset,y:e.pageY-window.pageYOffset});return a===t||t.contains(a)},kn=null,Qt=(e,t)=>{try{e.dropEffect=t}catch{}},td=(e,t)=>i=>{i.preventDefault(),kn=i.target,t.forEach(a=>{let{element:n,onenter:r}=a;Zi(i,n)&&(a.state="enter",r(Qe(i)))})},id=(e,t)=>i=>{i.preventDefault();let a=i.dataTransfer;ji(a).then(n=>{let r=!1;t.some(o=>{let{filterElement:l,element:s,onenter:u,onexit:c,ondrag:d,allowdrop:h}=o;Qt(a,"copy");let f=h(n);if(!f){Qt(a,"none");return}if(Zi(i,s)){if(r=!0,o.state===null){o.state="enter",u(Qe(i));return}if(o.state="over",l&&!f){Qt(a,"none");return}d(Qe(i))}else l&&!r&&Qt(a,"none"),o.state&&(o.state=null,c(Qe(i)))})})},ad=(e,t)=>i=>{i.preventDefault();let a=i.dataTransfer;ji(a).then(n=>{t.forEach(r=>{let{filterElement:o,element:l,ondrop:s,onexit:u,allowdrop:c}=r;if(r.state=null,!(o&&!Zi(i,l))){if(!c(n))return u(Qe(i));s(Qe(i),n)}})})},nd=(e,t)=>i=>{kn===i.target&&t.forEach(a=>{let{onexit:n}=a;a.state=null,n(Qe(i))})},rd=(e,t,i)=>{e.classList.add("filepond--hopper");let{catchesDropsOnPage:a,requiresDropOnElement:n,filterItems:r=c=>c}=i,o=Zc(e,a?document.documentElement:e,n),l="",s="";o.allowdrop=c=>t(r(c)),o.ondrop=(c,d)=>{let h=r(d);if(!t(h)){u.ondragend(c);return}s="drag-drop",u.onload(h,c)},o.ondrag=c=>{u.ondrag(c)},o.onenter=c=>{s="drag-over",u.ondragstart(c)},o.onexit=c=>{s="drag-exit",u.ondragend(c)};let u={updateHopperState:()=>{l!==s&&(e.dataset.hopperState=s,l=s)},onload:()=>{},ondragstart:()=>{},ondrag:()=>{},ondragend:()=>{},destroy:()=>{o.destroy()}};return u},Fi=!1,lt=[],Hn=e=>{let t=document.activeElement;if(t&&/textarea|input/i.test(t.nodeName)){let i=!1,a=t;for(;a!==document.body;){if(a.classList.contains("filepond--root")){i=!0;break}a=a.parentNode}if(!i)return}ji(e.clipboardData).then(i=>{i.length&<.forEach(a=>a(i))})},od=e=>{lt.includes(e)||(lt.push(e),!Fi&&(Fi=!0,document.addEventListener("paste",Hn)))},ld=e=>{ki(lt,lt.indexOf(e)),lt.length===0&&(document.removeEventListener("paste",Hn),Fi=!1)},sd=()=>{let e=i=>{t.onload(i)},t={destroy:()=>{ld(e)},onload:()=>{}};return od(e),t},cd=({root:e,props:t})=>{e.element.id=`filepond--assistant-${t.id}`,ae(e.element,"role","status"),ae(e.element,"aria-live","polite"),ae(e.element,"aria-relevant","additions")},tn=null,an=null,vi=[],ci=(e,t)=>{e.element.textContent=t},dd=e=>{e.element.textContent=""},Wn=(e,t,i)=>{let a=e.query("GET_TOTAL_ITEMS");ci(e,`${i} ${t}, ${a} ${a===1?e.query("GET_LABEL_FILE_COUNT_SINGULAR"):e.query("GET_LABEL_FILE_COUNT_PLURAL")}`),clearTimeout(an),an=setTimeout(()=>{dd(e)},1500)},Yn=e=>e.element.parentNode.contains(document.activeElement),ud=({root:e,action:t})=>{if(!Yn(e))return;e.element.textContent="";let i=e.query("GET_ITEM",t.id);vi.push(i.filename),clearTimeout(tn),tn=setTimeout(()=>{Wn(e,vi.join(", "),e.query("GET_LABEL_FILE_ADDED")),vi.length=0},750)},hd=({root:e,action:t})=>{if(!Yn(e))return;let i=t.item;Wn(e,i.filename,e.query("GET_LABEL_FILE_REMOVED"))},fd=({root:e,action:t})=>{let a=e.query("GET_ITEM",t.id).filename,n=e.query("GET_LABEL_FILE_PROCESSING_COMPLETE");ci(e,`${a} ${n}`)},nn=({root:e,action:t})=>{let a=e.query("GET_ITEM",t.id).filename,n=e.query("GET_LABEL_FILE_PROCESSING_ABORTED");ci(e,`${a} ${n}`)},Zt=({root:e,action:t})=>{let a=e.query("GET_ITEM",t.id).filename;ci(e,`${t.status.main} ${a} ${t.status.sub}`)},pd=ne({create:cd,ignoreRect:!0,ignoreRectUpdate:!0,write:pe({DID_LOAD_ITEM:ud,DID_REMOVE_ITEM:hd,DID_COMPLETE_ITEM_PROCESSING:fd,DID_ABORT_ITEM_PROCESSING:nn,DID_REVERT_ITEM_PROCESSING:nn,DID_THROW_ITEM_REMOVE_ERROR:Zt,DID_THROW_ITEM_LOAD_ERROR:Zt,DID_THROW_ITEM_INVALID:Zt,DID_THROW_ITEM_PROCESSING_ERROR:Zt}),tag:"span",name:"assistant"}),$n=(e,t="-")=>e.replace(new RegExp(`${t}.`,"g"),i=>i.charAt(1).toUpperCase()),qn=(e,t=16,i=!0)=>{let a=Date.now(),n=null;return(...r)=>{clearTimeout(n);let o=Date.now()-a,l=()=>{a=Date.now(),e(...r)};oe.preventDefault(),gd=({root:e,props:t})=>{let i=e.query("GET_ID");i&&(e.element.id=i);let a=e.query("GET_CLASS_NAME");a&&a.split(" ").filter(s=>s.length).forEach(s=>{e.element.classList.add(s)}),e.ref.label=e.appendChildView(e.createChildView(Ic,{...t,translateY:null,caption:e.query("GET_LABEL_IDLE")})),e.ref.list=e.appendChildView(e.createChildView(fc,{translateY:null})),e.ref.panel=e.appendChildView(e.createChildView(Dn,{name:"panel-root"})),e.ref.assistant=e.appendChildView(e.createChildView(pd,{...t})),e.ref.data=e.appendChildView(e.createChildView(zc,{...t})),e.ref.measure=Ne("div"),e.ref.measure.style.height="100%",e.element.appendChild(e.ref.measure),e.ref.bounds=null,e.query("GET_STYLES").filter(s=>!ze(s.value)).map(({name:s,value:u})=>{e.element.dataset[s]=u}),e.ref.widthPrevious=null,e.ref.widthUpdated=qn(()=>{e.ref.updateHistory=[],e.dispatch("DID_RESIZE_ROOT")},250),e.ref.previousAspectRatio=null,e.ref.updateHistory=[];let n=window.matchMedia("(pointer: fine) and (hover: hover)").matches,r="PointerEvent"in window;e.query("GET_ALLOW_REORDER")&&r&&!n&&(e.element.addEventListener("touchmove",ii,{passive:!1}),e.element.addEventListener("gesturestart",ii));let o=e.query("GET_CREDITS");if(o.length===2){let s=document.createElement("a");s.className="filepond--credits",s.setAttribute("aria-hidden","true"),s.href=o[0],s.tabindex=-1,s.target="_blank",s.rel="noopener noreferrer",s.textContent=o[1],e.element.appendChild(s),e.ref.credits=s}},Ed=({root:e,props:t,actions:i})=>{if(Rd({root:e,props:t,actions:i}),i.filter(I=>/^DID_SET_STYLE_/.test(I.type)).filter(I=>!ze(I.data.value)).map(({type:I,data:v})=>{let R=$n(I.substring(8).toLowerCase(),"_");e.element.dataset[R]=v.value,e.invalidateLayout()}),e.rect.element.hidden)return;e.rect.element.width!==e.ref.widthPrevious&&(e.ref.widthPrevious=e.rect.element.width,e.ref.widthUpdated());let a=e.ref.bounds;a||(a=e.ref.bounds=bd(e),e.element.removeChild(e.ref.measure),e.ref.measure=null);let{hopper:n,label:r,list:o,panel:l}=e.ref;n&&n.updateHopperState();let s=e.query("GET_PANEL_ASPECT_RATIO"),u=e.query("GET_ALLOW_MULTIPLE"),c=e.query("GET_TOTAL_ITEMS"),d=u?e.query("GET_MAX_FILES")||md:1,h=c===d,f=i.find(I=>I.type==="DID_ADD_ITEM");if(h&&f){let I=f.data.interactionMethod;r.opacity=0,u?r.translateY=-40:I===ye.API?r.translateX=40:I===ye.BROWSE?r.translateY=40:r.translateY=30}else h||(r.opacity=1,r.translateX=0,r.translateY=0);let p=Td(e),m=Id(e),g=r.rect.element.height,b=!u||h?0:g,E=h?o.rect.element.marginTop:0,T=c===0?0:o.rect.element.marginBottom,_=b+E+m.visual+T,y=b+E+m.bounds+T;if(o.translateY=Math.max(0,b-o.rect.element.marginTop)-p.top,s){let I=e.rect.element.width,v=I*s;s!==e.ref.previousAspectRatio&&(e.ref.previousAspectRatio=s,e.ref.updateHistory=[]);let R=e.ref.updateHistory;R.push(I);let S=2;if(R.length>S*2){let x=R.length,O=x-10,z=0;for(let A=x;A>=O;A--)if(R[A]===R[A-2]&&z++,z>=S)return}l.scalable=!1,l.height=v;let D=v-b-(T-p.bottom)-(h?E:0);m.visual>D?o.overflow=D:o.overflow=null,e.height=v}else if(a.fixedHeight){l.scalable=!1;let I=a.fixedHeight-b-(T-p.bottom)-(h?E:0);m.visual>I?o.overflow=I:o.overflow=null}else if(a.cappedHeight){let I=_>=a.cappedHeight,v=Math.min(a.cappedHeight,_);l.scalable=!0,l.height=I?v:v-p.top-p.bottom;let R=v-b-(T-p.bottom)-(h?E:0);_>a.cappedHeight&&m.visual>R?o.overflow=R:o.overflow=null,e.height=Math.min(a.cappedHeight,y-p.top-p.bottom)}else{let I=c>0?p.top+p.bottom:0;l.scalable=!0,l.height=Math.max(g,_-I),e.height=Math.max(g,y-I)}e.ref.credits&&l.heightCurrent&&(e.ref.credits.style.transform=`translateY(${l.heightCurrent}px)`)},Td=e=>{let t=e.ref.list.childViews[0].childViews[0];return t?{top:t.rect.element.marginTop,bottom:t.rect.element.marginBottom}:{top:0,bottom:0}},Id=e=>{let t=0,i=0,a=e.ref.list,n=a.childViews[0],r=n.childViews.filter(E=>E.rect.element.height),o=e.query("GET_ACTIVE_ITEMS").map(E=>r.find(T=>T.id===E.id)).filter(E=>E);if(o.length===0)return{visual:t,bounds:i};let l=n.rect.element.width,s=qi(n,o,a.dragCoordinates),u=o[0].rect.element,c=u.marginTop+u.marginBottom,d=u.marginLeft+u.marginRight,h=u.width+d,f=u.height+c,p=typeof s<"u"&&s>=0?1:0,m=o.find(E=>E.markedForRemoval&&E.opacity<.45)?-1:0,g=o.length+p+m,b=$i(l,h);return b===1?o.forEach(E=>{let T=E.rect.element.height+c;i+=T,t+=T*E.opacity}):(i=Math.ceil(g/b)*f,t=i),{visual:t,bounds:i}},bd=e=>{let t=e.ref.measureHeight||null;return{cappedHeight:parseInt(e.style.maxHeight,10)||null,fixedHeight:t===0?null:t}},Ki=(e,t)=>{let i=e.query("GET_ALLOW_REPLACE"),a=e.query("GET_ALLOW_MULTIPLE"),n=e.query("GET_TOTAL_ITEMS"),r=e.query("GET_MAX_FILES"),o=t.length;return!a&&o>1?(e.dispatch("DID_THROW_MAX_FILES",{source:t,error:te("warning",0,"Max files")}),!0):(r=a?r:1,!a&&i?!1:ht(r)&&n+o>r?(e.dispatch("DID_THROW_MAX_FILES",{source:t,error:te("warning",0,"Max files")}),!0):!1)},_d=(e,t,i)=>{let a=e.childViews[0];return qi(a,t,{left:i.scopeLeft-a.rect.element.left,top:i.scopeTop-(e.rect.outer.top+e.rect.element.marginTop+e.rect.element.scrollTop)})},rn=e=>{let t=e.query("GET_ALLOW_DROP"),i=e.query("GET_DISABLED"),a=t&&!i;if(a&&!e.ref.hopper){let n=rd(e.element,r=>{let o=e.query("GET_BEFORE_DROP_FILE")||(()=>!0);return e.query("GET_DROP_VALIDATION")?r.every(s=>Ze("ALLOW_HOPPER_ITEM",s,{query:e.query}).every(u=>u===!0)&&o(s)):!0},{filterItems:r=>{let o=e.query("GET_IGNORED_FILES");return r.filter(l=>ut(l)?!o.includes(l.name.toLowerCase()):!0)},catchesDropsOnPage:e.query("GET_DROP_ON_PAGE"),requiresDropOnElement:e.query("GET_DROP_ON_ELEMENT")});n.onload=(r,o)=>{let s=e.ref.list.childViews[0].childViews.filter(c=>c.rect.element.height),u=e.query("GET_ACTIVE_ITEMS").map(c=>s.find(d=>d.id===c.id)).filter(c=>c);Ae("ADD_ITEMS",r,{dispatch:e.dispatch}).then(c=>{if(Ki(e,c))return!1;e.dispatch("ADD_ITEMS",{items:c,index:_d(e.ref.list,u,o),interactionMethod:ye.DROP})}),e.dispatch("DID_DROP",{position:o}),e.dispatch("DID_END_DRAG",{position:o})},n.ondragstart=r=>{e.dispatch("DID_START_DRAG",{position:r})},n.ondrag=qn(r=>{e.dispatch("DID_DRAG",{position:r})}),n.ondragend=r=>{e.dispatch("DID_END_DRAG",{position:r})},e.ref.hopper=n,e.ref.drip=e.appendChildView(e.createChildView(Ac))}else!a&&e.ref.hopper&&(e.ref.hopper.destroy(),e.ref.hopper=null,e.removeChildView(e.ref.drip))},on=(e,t)=>{let i=e.query("GET_ALLOW_BROWSE"),a=e.query("GET_DISABLED"),n=i&&!a;n&&!e.ref.browser?e.ref.browser=e.appendChildView(e.createChildView(Ec,{...t,onload:r=>{Ae("ADD_ITEMS",r,{dispatch:e.dispatch}).then(o=>{if(Ki(e,o))return!1;e.dispatch("ADD_ITEMS",{items:o,index:-1,interactionMethod:ye.BROWSE})})}}),0):!n&&e.ref.browser&&(e.removeChildView(e.ref.browser),e.ref.browser=null)},ln=e=>{let t=e.query("GET_ALLOW_PASTE"),i=e.query("GET_DISABLED"),a=t&&!i;a&&!e.ref.paster?(e.ref.paster=sd(),e.ref.paster.onload=n=>{Ae("ADD_ITEMS",n,{dispatch:e.dispatch}).then(r=>{if(Ki(e,r))return!1;e.dispatch("ADD_ITEMS",{items:r,index:-1,interactionMethod:ye.PASTE})})}):!a&&e.ref.paster&&(e.ref.paster.destroy(),e.ref.paster=null)},Rd=pe({DID_SET_ALLOW_BROWSE:({root:e,props:t})=>{on(e,t)},DID_SET_ALLOW_DROP:({root:e})=>{rn(e)},DID_SET_ALLOW_PASTE:({root:e})=>{ln(e)},DID_SET_DISABLED:({root:e,props:t})=>{rn(e),ln(e),on(e,t),e.query("GET_DISABLED")?e.element.dataset.disabled="disabled":e.element.removeAttribute("data-disabled")}}),yd=ne({name:"root",read:({root:e})=>{e.ref.measure&&(e.ref.measureHeight=e.ref.measure.offsetHeight)},create:gd,write:Ed,destroy:({root:e})=>{e.ref.paster&&e.ref.paster.destroy(),e.ref.hopper&&e.ref.hopper.destroy(),e.element.removeEventListener("touchmove",ii),e.element.removeEventListener("gesturestart",ii)},mixins:{styles:["height"]}}),Sd=(e={})=>{let t=null,i=ei(),a=Uo(vl(i),[Wl,Ml(i)],[ms,Ll(i)]);a.dispatch("SET_OPTIONS",{options:e});let n=()=>{document.hidden||a.dispatch("KICK")};document.addEventListener("visibilitychange",n);let r=null,o=!1,l=!1,s=null,u=null,c=()=>{o||(o=!0),clearTimeout(r),r=setTimeout(()=>{o=!1,s=null,u=null,l&&(l=!1,a.dispatch("DID_STOP_RESIZE"))},500)};window.addEventListener("resize",c);let d=yd(a,{id:Ui()}),h=!1,f=!1,p={_read:()=>{o&&(u=window.innerWidth,s||(s=u),!l&&u!==s&&(a.dispatch("DID_START_RESIZE"),l=!0)),f&&h&&(h=d.element.offsetParent===null),!h&&(d._read(),f=d.rect.element.hidden)},_write:w=>{let L=a.processActionQueue().filter(C=>!/^SET_/.test(C.type));h&&!L.length||(E(L),h=d._write(w,L,l),Dl(a.query("GET_ITEMS")),h&&a.processDispatchQueue())}},m=w=>L=>{let C={type:w};if(!L)return C;if(L.hasOwnProperty("error")&&(C.error=L.error?{...L.error}:null),L.status&&(C.status={...L.status}),L.file&&(C.output=L.file),L.source)C.file=L.source;else if(L.item||L.id){let P=L.item?L.item:a.query("GET_ITEM",L.id);C.file=P?me(P):null}return L.items&&(C.items=L.items.map(me)),/progress/.test(w)&&(C.progress=L.progress),L.hasOwnProperty("origin")&&L.hasOwnProperty("target")&&(C.origin=L.origin,C.target=L.target),C},g={DID_DESTROY:m("destroy"),DID_INIT:m("init"),DID_THROW_MAX_FILES:m("warning"),DID_INIT_ITEM:m("initfile"),DID_START_ITEM_LOAD:m("addfilestart"),DID_UPDATE_ITEM_LOAD_PROGRESS:m("addfileprogress"),DID_LOAD_ITEM:m("addfile"),DID_THROW_ITEM_INVALID:[m("error"),m("addfile")],DID_THROW_ITEM_LOAD_ERROR:[m("error"),m("addfile")],DID_THROW_ITEM_REMOVE_ERROR:[m("error"),m("removefile")],DID_PREPARE_OUTPUT:m("preparefile"),DID_START_ITEM_PROCESSING:m("processfilestart"),DID_UPDATE_ITEM_PROCESS_PROGRESS:m("processfileprogress"),DID_ABORT_ITEM_PROCESSING:m("processfileabort"),DID_COMPLETE_ITEM_PROCESSING:m("processfile"),DID_COMPLETE_ITEM_PROCESSING_ALL:m("processfiles"),DID_REVERT_ITEM_PROCESSING:m("processfilerevert"),DID_THROW_ITEM_PROCESSING_ERROR:[m("error"),m("processfile")],DID_REMOVE_ITEM:m("removefile"),DID_UPDATE_ITEMS:m("updatefiles"),DID_ACTIVATE_ITEM:m("activatefile"),DID_REORDER_ITEMS:m("reorderfiles")},b=w=>{let L={pond:F,...w};delete L.type,d.element.dispatchEvent(new CustomEvent(`FilePond:${w.type}`,{detail:L,bubbles:!0,cancelable:!0,composed:!0}));let C=[];w.hasOwnProperty("error")&&C.push(w.error),w.hasOwnProperty("file")&&C.push(w.file);let P=["type","error","file"];Object.keys(w).filter(G=>!P.includes(G)).forEach(G=>C.push(w[G])),F.fire(w.type,...C);let V=a.query(`GET_ON${w.type.toUpperCase()}`);V&&V(...C)},E=w=>{w.length&&w.filter(L=>g[L.type]).forEach(L=>{let C=g[L.type];(Array.isArray(C)?C:[C]).forEach(P=>{L.type==="DID_INIT_ITEM"?b(P(L.data)):setTimeout(()=>{b(P(L.data))},0)})})},T=w=>a.dispatch("SET_OPTIONS",{options:w}),_=w=>a.query("GET_ACTIVE_ITEM",w),y=w=>new Promise((L,C)=>{a.dispatch("REQUEST_ITEM_PREPARE",{query:w,success:P=>{L(P)},failure:P=>{C(P)}})}),I=(w,L={})=>new Promise((C,P)=>{S([{source:w,options:L}],{index:L.index}).then(V=>C(V&&V[0])).catch(P)}),v=w=>w.file&&w.id,R=(w,L)=>(typeof w=="object"&&!v(w)&&!L&&(L=w,w=void 0),a.dispatch("REMOVE_ITEM",{...L,query:w}),a.query("GET_ACTIVE_ITEM",w)===null),S=(...w)=>new Promise((L,C)=>{let P=[],V={};if(ai(w[0]))P.push.apply(P,w[0]),Object.assign(V,w[1]||{});else{let G=w[w.length-1];typeof G=="object"&&!(G instanceof Blob)&&Object.assign(V,w.pop()),P.push(...w)}a.dispatch("ADD_ITEMS",{items:P,index:V.index,interactionMethod:ye.API,success:L,failure:C})}),D=()=>a.query("GET_ACTIVE_ITEMS"),x=w=>new Promise((L,C)=>{a.dispatch("REQUEST_ITEM_PROCESSING",{query:w,success:P=>{L(P)},failure:P=>{C(P)}})}),O=(...w)=>{let L=Array.isArray(w[0])?w[0]:w,C=L.length?L:D();return Promise.all(C.map(y))},z=(...w)=>{let L=Array.isArray(w[0])?w[0]:w;if(!L.length){let C=D().filter(P=>!(P.status===k.IDLE&&P.origin===le.LOCAL)&&P.status!==k.PROCESSING&&P.status!==k.PROCESSING_COMPLETE&&P.status!==k.PROCESSING_REVERT_ERROR);return Promise.all(C.map(x))}return Promise.all(L.map(x))},A=(...w)=>{let L=Array.isArray(w[0])?w[0]:w,C;typeof L[L.length-1]=="object"?C=L.pop():Array.isArray(w[0])&&(C=w[1]);let P=D();return L.length?L.map(G=>Ye(G)?P[G]?P[G].id:null:G).filter(G=>G).map(G=>R(G,C)):Promise.all(P.map(G=>R(G,C)))},F={...oi(),...p,...Al(a,i),setOptions:T,addFile:I,addFiles:S,getFile:_,processFile:x,prepareFile:y,removeFile:R,moveFile:(w,L)=>a.dispatch("MOVE_ITEM",{query:w,index:L}),getFiles:D,processFiles:z,removeFiles:A,prepareFiles:O,sort:w=>a.dispatch("SORT",{compare:w}),browse:()=>{var w=d.element.querySelector("input[type=file]");w&&w.click()},destroy:()=>{F.fire("destroy",d.element),a.dispatch("ABORT_ALL"),d._destroy(),window.removeEventListener("resize",c),document.removeEventListener("visibilitychange",n),a.dispatch("DID_DESTROY")},insertBefore:w=>Ma(d.element,w),insertAfter:w=>Oa(d.element,w),appendTo:w=>w.appendChild(d.element),replaceElement:w=>{Ma(d.element,w),w.parentNode.removeChild(w),t=w},restoreElement:()=>{t&&(Oa(t,d.element),d.element.parentNode.removeChild(d.element),t=null)},isAttachedTo:w=>d.element===w||t===w,element:{get:()=>d.element},status:{get:()=>a.query("GET_STATUS")}};return a.dispatch("DID_INIT"),Ve(F)},Xn=(e={})=>{let t={};return ee(ei(),(a,n)=>{t[a]=n[0]}),Sd({...t,...e})},wd=e=>e.charAt(0).toLowerCase()+e.slice(1),vd=e=>$n(e.replace(/^data-/,"")),jn=(e,t)=>{ee(t,(i,a)=>{ee(e,(n,r)=>{let o=new RegExp(i);if(!o.test(n)||(delete e[n],a===!1))return;if(fe(a)){e[a]=r;return}let s=a.group;se(a)&&!e[s]&&(e[s]={}),e[s][wd(n.replace(o,""))]=r}),a.mapping&&jn(e[a.group],a.mapping)})},Ad=(e,t={})=>{let i=[];ee(e.attributes,n=>{i.push(e.attributes[n])});let a=i.filter(n=>n.name).reduce((n,r)=>{let o=ae(e,r.name);return n[vd(r.name)]=o===r.name?!0:o,n},{});return jn(a,t),a},Ld=(e,t={})=>{let i={"^class$":"className","^multiple$":"allowMultiple","^capture$":"captureMethod","^webkitdirectory$":"allowDirectoriesOnly","^server":{group:"server",mapping:{"^process":{group:"process"},"^revert":{group:"revert"},"^fetch":{group:"fetch"},"^restore":{group:"restore"},"^load":{group:"load"}}},"^type$":!1,"^files$":!1};Ze("SET_ATTRIBUTE_TO_OPTION_MAP",i);let a={...t},n=Ad(e.nodeName==="FIELDSET"?e.querySelector("input[type=file]"):e,i);Object.keys(n).forEach(o=>{se(n[o])?(se(a[o])||(a[o]={}),Object.assign(a[o],n[o])):a[o]=n[o]}),a.files=(t.files||[]).concat(Array.from(e.querySelectorAll("input:not([type=file])")).map(o=>({source:o.value,options:{type:o.dataset.type}})));let r=Xn(a);return e.files&&Array.from(e.files).forEach(o=>{r.addFile(o)}),r.replaceElement(e),r},Md=(...e)=>Vo(e[0])?Ld(...e):Xn(...e),Od=["fire","_read","_write"],sn=e=>{let t={};return gn(e,t,Od),t},xd=(e,t)=>e.replace(/(?:{([a-zA-Z]+)})/g,(i,a)=>t[a]),Dd=e=>{let t=new Blob(["(",e.toString(),")()"],{type:"application/javascript"}),i=URL.createObjectURL(t),a=new Worker(i);return{transfer:(n,r)=>{},post:(n,r,o)=>{let l=Ui();a.onmessage=s=>{s.data.id===l&&r(s.data.message)},a.postMessage({id:l,message:n},o)},terminate:()=>{a.terminate(),URL.revokeObjectURL(i)}}},Pd=e=>new Promise((t,i)=>{let a=new Image;a.onload=()=>{t(a)},a.onerror=n=>{i(n)},a.src=e}),Qn=(e,t)=>{let i=e.slice(0,e.size,e.type);return i.lastModifiedDate=e.lastModifiedDate,i.name=t,i},Fd=e=>Qn(e,e.name),cn=[],Cd=e=>{if(cn.includes(e))return;cn.push(e);let t=e({addFilter:Fl,utils:{Type:M,forin:ee,isString:fe,isFile:ut,toNaturalFileSize:Mn,replaceInString:xd,getExtensionFromFilename:li,getFilenameWithoutExtension:vn,guesstimateMimeType:Vn,getFileFromBlob:dt,getFilenameFromURL:Ot,createRoute:pe,createWorker:Dd,createView:ne,createItemAPI:me,loadImage:Pd,copyFile:Fd,renameFile:Qn,createBlob:yn,applyFilterChain:Ae,text:ie,getNumericAspectRatioFromString:In},views:{fileActionButton:Ln}});Cl(t.options)},zd=()=>Object.prototype.toString.call(window.operamini)==="[object OperaMini]",Nd=()=>"Promise"in window,Bd=()=>"slice"in Blob.prototype,Gd=()=>"URL"in window&&"createObjectURL"in window.URL,Vd=()=>"visibilityState"in document,Ud=()=>"performance"in window,kd=()=>"supports"in(window.CSS||{}),Hd=()=>/MSIE|Trident/.test(window.navigator.userAgent),Ci=(()=>{let e=dn()&&!zd()&&Vd()&&Nd()&&Bd()&&Gd()&&Ud()&&(kd()||Hd());return()=>e})(),Ge={apps:[]},Wd="filepond",Ke=()=>{},Zn={},ft={},xt={},zi={},st=Ke,ct=Ke,Ni=Ke,Bi=Ke,be=Ke,Gi=Ke,Mt=Ke;if(Ci()){hl(()=>{Ge.apps.forEach(i=>i._read())},i=>{Ge.apps.forEach(a=>a._write(i))});let e=()=>{document.dispatchEvent(new CustomEvent("FilePond:loaded",{detail:{supported:Ci,create:st,destroy:ct,parse:Ni,find:Bi,registerPlugin:be,setOptions:Mt}})),document.removeEventListener("DOMContentLoaded",e)};document.readyState!=="loading"?setTimeout(()=>e(),0):document.addEventListener("DOMContentLoaded",e);let t=()=>ee(ei(),(i,a)=>{zi[i]=a[1]});Zn={...bn},xt={...le},ft={...k},zi={},t(),st=(...i)=>{let a=Md(...i);return a.on("destroy",ct),Ge.apps.push(a),sn(a)},ct=i=>{let a=Ge.apps.findIndex(n=>n.isAttachedTo(i));return a>=0?(Ge.apps.splice(a,1)[0].restoreElement(),!0):!1},Ni=i=>Array.from(i.querySelectorAll(`.${Wd}`)).filter(r=>!Ge.apps.find(o=>o.isAttachedTo(r))).map(r=>st(r)),Bi=i=>{let a=Ge.apps.find(n=>n.isAttachedTo(i));return a?sn(a):null},be=(...i)=>{i.forEach(Cd),t()},Gi=()=>{let i={};return ee(ei(),(a,n)=>{i[a]=n[0]}),i},Mt=i=>(se(i)&&(Ge.apps.forEach(a=>{a.setOptions(i)}),zl(i)),Gi())}function Kn(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),i.push.apply(i,a)}return i}function pr(e){for(var t=1;te.length)&&(t=e.length);for(var i=0,a=new Array(t);i
    ',su=Number.isNaN||De.isNaN;function Y(e){return typeof e=="number"&&!su(e)}var ur=function(t){return t>0&&t<1/0};function ea(e){return typeof e>"u"}function tt(e){return ia(e)==="object"&&e!==null}var cu=Object.prototype.hasOwnProperty;function mt(e){if(!tt(e))return!1;try{var t=e.constructor,i=t.prototype;return t&&i&&cu.call(i,"isPrototypeOf")}catch{return!1}}function ge(e){return typeof e=="function"}var du=Array.prototype.slice;function Sr(e){return Array.from?Array.from(e):du.call(e)}function re(e,t){return e&&ge(t)&&(Array.isArray(e)||Y(e.length)?Sr(e).forEach(function(i,a){t.call(e,i,a,e)}):tt(e)&&Object.keys(e).forEach(function(i){t.call(e,e[i],i,e)})),e}var K=Object.assign||function(t){for(var i=arguments.length,a=new Array(i>1?i-1:0),n=1;n0&&a.forEach(function(r){tt(r)&&Object.keys(r).forEach(function(o){t[o]=r[o]})}),t},uu=/\.\d*(?:0|9){12}\d*$/;function Et(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return uu.test(e)?Math.round(e*t)/t:e}var hu=/^width|height|left|top|marginLeft|marginTop$/;function ke(e,t){var i=e.style;re(t,function(a,n){hu.test(n)&&Y(a)&&(a="".concat(a,"px")),i[n]=a})}function fu(e,t){return e.classList?e.classList.contains(t):e.className.indexOf(t)>-1}function ce(e,t){if(t){if(Y(e.length)){re(e,function(a){ce(a,t)});return}if(e.classList){e.classList.add(t);return}var i=e.className.trim();i?i.indexOf(t)<0&&(e.className="".concat(i," ").concat(t)):e.className=t}}function xe(e,t){if(t){if(Y(e.length)){re(e,function(i){xe(i,t)});return}if(e.classList){e.classList.remove(t);return}e.className.indexOf(t)>=0&&(e.className=e.className.replace(t,""))}}function gt(e,t,i){if(t){if(Y(e.length)){re(e,function(a){gt(a,t,i)});return}i?ce(e,t):xe(e,t)}}var pu=/([a-z\d])([A-Z])/g;function ga(e){return e.replace(pu,"$1-$2").toLowerCase()}function ua(e,t){return tt(e[t])?e[t]:e.dataset?e.dataset[t]:e.getAttribute("data-".concat(ga(t)))}function Bt(e,t,i){tt(i)?e[t]=i:e.dataset?e.dataset[t]=i:e.setAttribute("data-".concat(ga(t)),i)}function mu(e,t){if(tt(e[t]))try{delete e[t]}catch{e[t]=void 0}else if(e.dataset)try{delete e.dataset[t]}catch{e.dataset[t]=void 0}else e.removeAttribute("data-".concat(ga(t)))}var wr=/\s\s*/,vr=function(){var e=!1;if(fi){var t=!1,i=function(){},a=Object.defineProperty({},"once",{get:function(){return e=!0,t},set:function(r){t=r}});De.addEventListener("test",i,a),De.removeEventListener("test",i,a)}return e}();function Oe(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},n=i;t.trim().split(wr).forEach(function(r){if(!vr){var o=e.listeners;o&&o[r]&&o[r][i]&&(n=o[r][i],delete o[r][i],Object.keys(o[r]).length===0&&delete o[r],Object.keys(o).length===0&&delete e.listeners)}e.removeEventListener(r,n,a)})}function Se(e,t,i){var a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{},n=i;t.trim().split(wr).forEach(function(r){if(a.once&&!vr){var o=e.listeners,l=o===void 0?{}:o;n=function(){delete l[r][i],e.removeEventListener(r,n,a);for(var u=arguments.length,c=new Array(u),d=0;dMath.abs(i)&&(i=h)})}),i}function ui(e,t){var i=e.pageX,a=e.pageY,n={endX:i,endY:a};return t?n:pr({startX:i,startY:a},n)}function Tu(e){var t=0,i=0,a=0;return re(e,function(n){var r=n.startX,o=n.startY;t+=r,i+=o,a+=1}),t/=a,i/=a,{pageX:t,pageY:i}}function He(e){var t=e.aspectRatio,i=e.height,a=e.width,n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"contain",r=ur(a),o=ur(i);if(r&&o){var l=i*t;n==="contain"&&l>a||n==="cover"&&l90?{width:s,height:l}:{width:l,height:s}}function bu(e,t,i,a){var n=t.aspectRatio,r=t.naturalWidth,o=t.naturalHeight,l=t.rotate,s=l===void 0?0:l,u=t.scaleX,c=u===void 0?1:u,d=t.scaleY,h=d===void 0?1:d,f=i.aspectRatio,p=i.naturalWidth,m=i.naturalHeight,g=a.fillColor,b=g===void 0?"transparent":g,E=a.imageSmoothingEnabled,T=E===void 0?!0:E,_=a.imageSmoothingQuality,y=_===void 0?"low":_,I=a.maxWidth,v=I===void 0?1/0:I,R=a.maxHeight,S=R===void 0?1/0:R,D=a.minWidth,x=D===void 0?0:D,O=a.minHeight,z=O===void 0?0:O,A=document.createElement("canvas"),F=A.getContext("2d"),w=He({aspectRatio:f,width:v,height:S}),L=He({aspectRatio:f,width:x,height:z},"cover"),C=Math.min(w.width,Math.max(L.width,p)),P=Math.min(w.height,Math.max(L.height,m)),V=He({aspectRatio:n,width:v,height:S}),G=He({aspectRatio:n,width:x,height:z},"cover"),q=Math.min(V.width,Math.max(G.width,r)),X=Math.min(V.height,Math.max(G.height,o)),j=[-q/2,-X/2,q,X];return A.width=Et(C),A.height=Et(P),F.fillStyle=b,F.fillRect(0,0,C,P),F.save(),F.translate(C/2,P/2),F.rotate(s*Math.PI/180),F.scale(c,h),F.imageSmoothingEnabled=T,F.imageSmoothingQuality=y,F.drawImage.apply(F,[e].concat(mr(j.map(function(de){return Math.floor(Et(de))})))),F.restore(),A}var Lr=String.fromCharCode;function _u(e,t,i){var a="";i+=t;for(var n=t;n0;)i.push(Lr.apply(null,Sr(n.subarray(0,a)))),n=n.subarray(a);return"data:".concat(t,";base64,").concat(btoa(i.join("")))}function wu(e){var t=new DataView(e),i;try{var a,n,r;if(t.getUint8(0)===255&&t.getUint8(1)===216)for(var o=t.byteLength,l=2;l+1=8&&(r=u+d)}}}if(r){var h=t.getUint16(r,a),f,p;for(p=0;p=0?r:Rr),height:Math.max(a.offsetHeight,o>=0?o:yr)};this.containerData=l,ke(n,{width:l.width,height:l.height}),ce(t,Ee),xe(n,Ee)},initCanvas:function(){var t=this.containerData,i=this.imageData,a=this.options.viewMode,n=Math.abs(i.rotate)%180===90,r=n?i.naturalHeight:i.naturalWidth,o=n?i.naturalWidth:i.naturalHeight,l=r/o,s=t.width,u=t.height;t.height*l>t.width?a===3?s=t.height*l:u=t.width/l:a===3?u=t.width/l:s=t.height*l;var c={aspectRatio:l,naturalWidth:r,naturalHeight:o,width:s,height:u};this.canvasData=c,this.limited=a===1||a===2,this.limitCanvas(!0,!0),c.width=Math.min(Math.max(c.width,c.minWidth),c.maxWidth),c.height=Math.min(Math.max(c.height,c.minHeight),c.maxHeight),c.left=(t.width-c.width)/2,c.top=(t.height-c.height)/2,c.oldLeft=c.left,c.oldTop=c.top,this.initialCanvasData=K({},c)},limitCanvas:function(t,i){var a=this.options,n=this.containerData,r=this.canvasData,o=this.cropBoxData,l=a.viewMode,s=r.aspectRatio,u=this.cropped&&o;if(t){var c=Number(a.minCanvasWidth)||0,d=Number(a.minCanvasHeight)||0;l>1?(c=Math.max(c,n.width),d=Math.max(d,n.height),l===3&&(d*s>c?c=d*s:d=c/s)):l>0&&(c?c=Math.max(c,u?o.width:0):d?d=Math.max(d,u?o.height:0):u&&(c=o.width,d=o.height,d*s>c?c=d*s:d=c/s));var h=He({aspectRatio:s,width:c,height:d});c=h.width,d=h.height,r.minWidth=c,r.minHeight=d,r.maxWidth=1/0,r.maxHeight=1/0}if(i)if(l>(u?0:1)){var f=n.width-r.width,p=n.height-r.height;r.minLeft=Math.min(0,f),r.minTop=Math.min(0,p),r.maxLeft=Math.max(0,f),r.maxTop=Math.max(0,p),u&&this.limited&&(r.minLeft=Math.min(o.left,o.left+(o.width-r.width)),r.minTop=Math.min(o.top,o.top+(o.height-r.height)),r.maxLeft=o.left,r.maxTop=o.top,l===2&&(r.width>=n.width&&(r.minLeft=Math.min(0,f),r.maxLeft=Math.max(0,f)),r.height>=n.height&&(r.minTop=Math.min(0,p),r.maxTop=Math.max(0,p))))}else r.minLeft=-r.width,r.minTop=-r.height,r.maxLeft=n.width,r.maxTop=n.height},renderCanvas:function(t,i){var a=this.canvasData,n=this.imageData;if(i){var r=Iu({width:n.naturalWidth*Math.abs(n.scaleX||1),height:n.naturalHeight*Math.abs(n.scaleY||1),degree:n.rotate||0}),o=r.width,l=r.height,s=a.width*(o/a.naturalWidth),u=a.height*(l/a.naturalHeight);a.left-=(s-a.width)/2,a.top-=(u-a.height)/2,a.width=s,a.height=u,a.aspectRatio=o/l,a.naturalWidth=o,a.naturalHeight=l,this.limitCanvas(!0,!1)}(a.width>a.maxWidth||a.widtha.maxHeight||a.heighti.width?r.height=r.width/a:r.width=r.height*a),this.cropBoxData=r,this.limitCropBox(!0,!0),r.width=Math.min(Math.max(r.width,r.minWidth),r.maxWidth),r.height=Math.min(Math.max(r.height,r.minHeight),r.maxHeight),r.width=Math.max(r.minWidth,r.width*n),r.height=Math.max(r.minHeight,r.height*n),r.left=i.left+(i.width-r.width)/2,r.top=i.top+(i.height-r.height)/2,r.oldLeft=r.left,r.oldTop=r.top,this.initialCropBoxData=K({},r)},limitCropBox:function(t,i){var a=this.options,n=this.containerData,r=this.canvasData,o=this.cropBoxData,l=this.limited,s=a.aspectRatio;if(t){var u=Number(a.minCropBoxWidth)||0,c=Number(a.minCropBoxHeight)||0,d=l?Math.min(n.width,r.width,r.width+r.left,n.width-r.left):n.width,h=l?Math.min(n.height,r.height,r.height+r.top,n.height-r.top):n.height;u=Math.min(u,n.width),c=Math.min(c,n.height),s&&(u&&c?c*s>u?c=u/s:u=c*s:u?c=u/s:c&&(u=c*s),h*s>d?h=d/s:d=h*s),o.minWidth=Math.min(u,d),o.minHeight=Math.min(c,h),o.maxWidth=d,o.maxHeight=h}i&&(l?(o.minLeft=Math.max(0,r.left),o.minTop=Math.max(0,r.top),o.maxLeft=Math.min(n.width,r.left+r.width)-o.width,o.maxTop=Math.min(n.height,r.top+r.height)-o.height):(o.minLeft=0,o.minTop=0,o.maxLeft=n.width-o.width,o.maxTop=n.height-o.height))},renderCropBox:function(){var t=this.options,i=this.containerData,a=this.cropBoxData;(a.width>a.maxWidth||a.widtha.maxHeight||a.height=i.width&&a.height>=i.height?Tr:pa),ke(this.cropBox,K({width:a.width,height:a.height},zt({translateX:a.left,translateY:a.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),Tt(this.element,oa,this.getData())}},Lu={initPreview:function(){var t=this.element,i=this.crossOrigin,a=this.options.preview,n=i?this.crossOriginUrl:this.url,r=t.alt||"The image to preview",o=document.createElement("img");if(i&&(o.crossOrigin=i),o.src=n,o.alt=r,this.viewBox.appendChild(o),this.viewBoxImage=o,!!a){var l=a;typeof a=="string"?l=t.ownerDocument.querySelectorAll(a):a.querySelector&&(l=[a]),this.previews=l,re(l,function(s){var u=document.createElement("img");Bt(s,di,{width:s.offsetWidth,height:s.offsetHeight,html:s.innerHTML}),i&&(u.crossOrigin=i),u.src=n,u.alt=r,u.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',s.innerHTML="",s.appendChild(u)})}},resetPreview:function(){re(this.previews,function(t){var i=ua(t,di);ke(t,{width:i.width,height:i.height}),t.innerHTML=i.html,mu(t,di)})},preview:function(){var t=this.imageData,i=this.canvasData,a=this.cropBoxData,n=a.width,r=a.height,o=t.width,l=t.height,s=a.left-i.left-t.left,u=a.top-i.top-t.top;!this.cropped||this.disabled||(ke(this.viewBoxImage,K({width:o,height:l},zt(K({translateX:-s,translateY:-u},t)))),re(this.previews,function(c){var d=ua(c,di),h=d.width,f=d.height,p=h,m=f,g=1;n&&(g=h/n,m=r*g),r&&m>f&&(g=f/r,p=n*g,m=f),ke(c,{width:p,height:m}),ke(c.getElementsByTagName("img")[0],K({width:o*g,height:l*g},zt(K({translateX:-s*g,translateY:-u*g},t))))}))}},Mu={bind:function(){var t=this.element,i=this.options,a=this.cropper;ge(i.cropstart)&&Se(t,ca,i.cropstart),ge(i.cropmove)&&Se(t,sa,i.cropmove),ge(i.cropend)&&Se(t,la,i.cropend),ge(i.crop)&&Se(t,oa,i.crop),ge(i.zoom)&&Se(t,da,i.zoom),Se(a,ar,this.onCropStart=this.cropStart.bind(this)),i.zoomable&&i.zoomOnWheel&&Se(a,sr,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),i.toggleDragModeOnDblclick&&Se(a,ir,this.onDblclick=this.dblclick.bind(this)),Se(t.ownerDocument,nr,this.onCropMove=this.cropMove.bind(this)),Se(t.ownerDocument,rr,this.onCropEnd=this.cropEnd.bind(this)),i.responsive&&Se(window,lr,this.onResize=this.resize.bind(this))},unbind:function(){var t=this.element,i=this.options,a=this.cropper;ge(i.cropstart)&&Oe(t,ca,i.cropstart),ge(i.cropmove)&&Oe(t,sa,i.cropmove),ge(i.cropend)&&Oe(t,la,i.cropend),ge(i.crop)&&Oe(t,oa,i.crop),ge(i.zoom)&&Oe(t,da,i.zoom),Oe(a,ar,this.onCropStart),i.zoomable&&i.zoomOnWheel&&Oe(a,sr,this.onWheel,{passive:!1,capture:!0}),i.toggleDragModeOnDblclick&&Oe(a,ir,this.onDblclick),Oe(t.ownerDocument,nr,this.onCropMove),Oe(t.ownerDocument,rr,this.onCropEnd),i.responsive&&Oe(window,lr,this.onResize)}},Ou={resize:function(){if(!this.disabled){var t=this.options,i=this.container,a=this.containerData,n=i.offsetWidth/a.width,r=i.offsetHeight/a.height,o=Math.abs(n-1)>Math.abs(r-1)?n:r;if(o!==1){var l,s;t.restore&&(l=this.getCanvasData(),s=this.getCropBoxData()),this.render(),t.restore&&(this.setCanvasData(re(l,function(u,c){l[c]=u*o})),this.setCropBoxData(re(s,function(u,c){s[c]=u*o})))}}},dblclick:function(){this.disabled||this.options.dragMode===_r||this.setDragMode(fu(this.dragBox,na)?br:ma)},wheel:function(t){var i=this,a=Number(this.options.wheelZoomRatio)||.1,n=1;this.disabled||(t.preventDefault(),!this.wheeling&&(this.wheeling=!0,setTimeout(function(){i.wheeling=!1},50),t.deltaY?n=t.deltaY>0?1:-1:t.wheelDelta?n=-t.wheelDelta/120:t.detail&&(n=t.detail>0?1:-1),this.zoom(-n*a,t)))},cropStart:function(t){var i=t.buttons,a=t.button;if(!(this.disabled||(t.type==="mousedown"||t.type==="pointerdown"&&t.pointerType==="mouse")&&(Y(i)&&i!==1||Y(a)&&a!==0||t.ctrlKey))){var n=this.options,r=this.pointers,o;t.changedTouches?re(t.changedTouches,function(l){r[l.identifier]=ui(l)}):r[t.pointerId||0]=ui(t),Object.keys(r).length>1&&n.zoomable&&n.zoomOnTouch?o=Ir:o=ua(t.target,Nt),au.test(o)&&Tt(this.element,ca,{originalEvent:t,action:o})!==!1&&(t.preventDefault(),this.action=o,this.cropping=!1,o===Er&&(this.cropping=!0,ce(this.dragBox,hi)))}},cropMove:function(t){var i=this.action;if(!(this.disabled||!i)){var a=this.pointers;t.preventDefault(),Tt(this.element,sa,{originalEvent:t,action:i})!==!1&&(t.changedTouches?re(t.changedTouches,function(n){K(a[n.identifier]||{},ui(n,!0))}):K(a[t.pointerId||0]||{},ui(t,!0)),this.change(t))}},cropEnd:function(t){if(!this.disabled){var i=this.action,a=this.pointers;t.changedTouches?re(t.changedTouches,function(n){delete a[n.identifier]}):delete a[t.pointerId||0],i&&(t.preventDefault(),Object.keys(a).length||(this.action=""),this.cropping&&(this.cropping=!1,gt(this.dragBox,hi,this.cropped&&this.options.modal)),Tt(this.element,la,{originalEvent:t,action:i}))}}},xu={change:function(t){var i=this.options,a=this.canvasData,n=this.containerData,r=this.cropBoxData,o=this.pointers,l=this.action,s=i.aspectRatio,u=r.left,c=r.top,d=r.width,h=r.height,f=u+d,p=c+h,m=0,g=0,b=n.width,E=n.height,T=!0,_;!s&&t.shiftKey&&(s=d&&h?d/h:1),this.limited&&(m=r.minLeft,g=r.minTop,b=m+Math.min(n.width,a.width,a.left+a.width),E=g+Math.min(n.height,a.height,a.top+a.height));var y=o[Object.keys(o)[0]],I={x:y.endX-y.startX,y:y.endY-y.startY},v=function(S){switch(S){case Je:f+I.x>b&&(I.x=b-f);break;case et:u+I.xE&&(I.y=E-p);break}};switch(l){case pa:u+=I.x,c+=I.y;break;case Je:if(I.x>=0&&(f>=b||s&&(c<=g||p>=E))){T=!1;break}v(Je),d+=I.x,d<0&&(l=et,d=-d,u-=d),s&&(h=d/s,c+=(r.height-h)/2);break;case Ue:if(I.y<=0&&(c<=g||s&&(u<=m||f>=b))){T=!1;break}v(Ue),h-=I.y,c+=I.y,h<0&&(l=pt,h=-h,c-=h),s&&(d=h*s,u+=(r.width-d)/2);break;case et:if(I.x<=0&&(u<=m||s&&(c<=g||p>=E))){T=!1;break}v(et),d-=I.x,u+=I.x,d<0&&(l=Je,d=-d,u-=d),s&&(h=d/s,c+=(r.height-h)/2);break;case pt:if(I.y>=0&&(p>=E||s&&(u<=m||f>=b))){T=!1;break}v(pt),h+=I.y,h<0&&(l=Ue,h=-h,c-=h),s&&(d=h*s,u+=(r.width-d)/2);break;case Dt:if(s){if(I.y<=0&&(c<=g||f>=b)){T=!1;break}v(Ue),h-=I.y,c+=I.y,d=h*s}else v(Ue),v(Je),I.x>=0?fg&&(h-=I.y,c+=I.y):(h-=I.y,c+=I.y);d<0&&h<0?(l=Ct,h=-h,d=-d,c-=h,u-=d):d<0?(l=Pt,d=-d,u-=d):h<0&&(l=Ft,h=-h,c-=h);break;case Pt:if(s){if(I.y<=0&&(c<=g||u<=m)){T=!1;break}v(Ue),h-=I.y,c+=I.y,d=h*s,u+=r.width-d}else v(Ue),v(et),I.x<=0?u>m?(d-=I.x,u+=I.x):I.y<=0&&c<=g&&(T=!1):(d-=I.x,u+=I.x),I.y<=0?c>g&&(h-=I.y,c+=I.y):(h-=I.y,c+=I.y);d<0&&h<0?(l=Ft,h=-h,d=-d,c-=h,u-=d):d<0?(l=Dt,d=-d,u-=d):h<0&&(l=Ct,h=-h,c-=h);break;case Ct:if(s){if(I.x<=0&&(u<=m||p>=E)){T=!1;break}v(et),d-=I.x,u+=I.x,h=d/s}else v(pt),v(et),I.x<=0?u>m?(d-=I.x,u+=I.x):I.y>=0&&p>=E&&(T=!1):(d-=I.x,u+=I.x),I.y>=0?p=0&&(f>=b||p>=E)){T=!1;break}v(Je),d+=I.x,h=d/s}else v(pt),v(Je),I.x>=0?f=0&&p>=E&&(T=!1):d+=I.x,I.y>=0?p0?l=I.y>0?Ft:Dt:I.x<0&&(u-=d,l=I.y>0?Ct:Pt),I.y<0&&(c-=h),this.cropped||(xe(this.cropBox,Ee),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0));break}T&&(r.width=d,r.height=h,r.left=u,r.top=c,this.action=l,this.renderCropBox()),re(o,function(R){R.startX=R.endX,R.startY=R.endY})}},Du={crop:function(){return this.ready&&!this.cropped&&!this.disabled&&(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&ce(this.dragBox,hi),xe(this.cropBox,Ee),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=K({},this.initialImageData),this.canvasData=K({},this.initialCanvasData),this.cropBoxData=K({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(K(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),xe(this.dragBox,hi),ce(this.cropBox,Ee)),this},replace:function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return!this.disabled&&t&&(this.isImg&&(this.element.src=t),i?(this.url=t,this.image.src=t,this.ready&&(this.viewBoxImage.src=t,re(this.previews,function(a){a.getElementsByTagName("img")[0].src=t}))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(t))),this},enable:function(){return this.ready&&this.disabled&&(this.disabled=!1,xe(this.cropper,er)),this},disable:function(){return this.ready&&!this.disabled&&(this.disabled=!0,ce(this.cropper,er)),this},destroy:function(){var t=this.element;return t[Z]?(t[Z]=void 0,this.isImg&&this.replaced&&(t.src=this.originalUrl),this.uncreate(),this):this},move:function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,a=this.canvasData,n=a.left,r=a.top;return this.moveTo(ea(t)?t:n+Number(t),ea(i)?i:r+Number(i))},moveTo:function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,a=this.canvasData,n=!1;return t=Number(t),i=Number(i),this.ready&&!this.disabled&&this.options.movable&&(Y(t)&&(a.left=t,n=!0),Y(i)&&(a.top=i,n=!0),n&&this.renderCanvas(!0)),this},zoom:function(t,i){var a=this.canvasData;return t=Number(t),t<0?t=1/(1-t):t=1+t,this.zoomTo(a.width*t/a.naturalWidth,null,i)},zoomTo:function(t,i,a){var n=this.options,r=this.canvasData,o=r.width,l=r.height,s=r.naturalWidth,u=r.naturalHeight;if(t=Number(t),t>=0&&this.ready&&!this.disabled&&n.zoomable){var c=s*t,d=u*t;if(Tt(this.element,da,{ratio:t,oldRatio:o/s,originalEvent:a})===!1)return this;if(a){var h=this.pointers,f=Ar(this.cropper),p=h&&Object.keys(h).length?Tu(h):{pageX:a.pageX,pageY:a.pageY};r.left-=(c-o)*((p.pageX-f.left-r.left)/o),r.top-=(d-l)*((p.pageY-f.top-r.top)/l)}else mt(i)&&Y(i.x)&&Y(i.y)?(r.left-=(c-o)*((i.x-r.left)/o),r.top-=(d-l)*((i.y-r.top)/l)):(r.left-=(c-o)/2,r.top-=(d-l)/2);r.width=c,r.height=d,this.renderCanvas(!0)}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t))},rotateTo:function(t){return t=Number(t),Y(t)&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=t%360,this.renderCanvas(!0,!0)),this},scaleX:function(t){var i=this.imageData.scaleY;return this.scale(t,Y(i)?i:1)},scaleY:function(t){var i=this.imageData.scaleX;return this.scale(Y(i)?i:1,t)},scale:function(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:t,a=this.imageData,n=!1;return t=Number(t),i=Number(i),this.ready&&!this.disabled&&this.options.scalable&&(Y(t)&&(a.scaleX=t,n=!0),Y(i)&&(a.scaleY=i,n=!0),n&&this.renderCanvas(!0,!0)),this},getData:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,i=this.options,a=this.imageData,n=this.canvasData,r=this.cropBoxData,o;if(this.ready&&this.cropped){o={x:r.left-n.left,y:r.top-n.top,width:r.width,height:r.height};var l=a.width/a.naturalWidth;if(re(o,function(c,d){o[d]=c/l}),t){var s=Math.round(o.y+o.height),u=Math.round(o.x+o.width);o.x=Math.round(o.x),o.y=Math.round(o.y),o.width=u-o.x,o.height=s-o.y}}else o={x:0,y:0,width:0,height:0};return i.rotatable&&(o.rotate=a.rotate||0),i.scalable&&(o.scaleX=a.scaleX||1,o.scaleY=a.scaleY||1),o},setData:function(t){var i=this.options,a=this.imageData,n=this.canvasData,r={};if(this.ready&&!this.disabled&&mt(t)){var o=!1;i.rotatable&&Y(t.rotate)&&t.rotate!==a.rotate&&(a.rotate=t.rotate,o=!0),i.scalable&&(Y(t.scaleX)&&t.scaleX!==a.scaleX&&(a.scaleX=t.scaleX,o=!0),Y(t.scaleY)&&t.scaleY!==a.scaleY&&(a.scaleY=t.scaleY,o=!0)),o&&this.renderCanvas(!0,!0);var l=a.width/a.naturalWidth;Y(t.x)&&(r.left=t.x*l+n.left),Y(t.y)&&(r.top=t.y*l+n.top),Y(t.width)&&(r.width=t.width*l),Y(t.height)&&(r.height=t.height*l),this.setCropBoxData(r)}return this},getContainerData:function(){return this.ready?K({},this.containerData):{}},getImageData:function(){return this.sized?K({},this.imageData):{}},getCanvasData:function(){var t=this.canvasData,i={};return this.ready&&re(["left","top","width","height","naturalWidth","naturalHeight"],function(a){i[a]=t[a]}),i},setCanvasData:function(t){var i=this.canvasData,a=i.aspectRatio;return this.ready&&!this.disabled&&mt(t)&&(Y(t.left)&&(i.left=t.left),Y(t.top)&&(i.top=t.top),Y(t.width)?(i.width=t.width,i.height=t.width/a):Y(t.height)&&(i.height=t.height,i.width=t.height*a),this.renderCanvas(!0)),this},getCropBoxData:function(){var t=this.cropBoxData,i;return this.ready&&this.cropped&&(i={left:t.left,top:t.top,width:t.width,height:t.height}),i||{}},setCropBoxData:function(t){var i=this.cropBoxData,a=this.options.aspectRatio,n,r;return this.ready&&this.cropped&&!this.disabled&&mt(t)&&(Y(t.left)&&(i.left=t.left),Y(t.top)&&(i.top=t.top),Y(t.width)&&t.width!==i.width&&(n=!0,i.width=t.width),Y(t.height)&&t.height!==i.height&&(r=!0,i.height=t.height),a&&(n?i.height=i.width/a:r&&(i.width=i.height*a)),this.renderCropBox()),this},getCroppedCanvas:function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var i=this.canvasData,a=bu(this.image,this.imageData,i,t);if(!this.cropped)return a;var n=this.getData(t.rounded),r=n.x,o=n.y,l=n.width,s=n.height,u=a.width/Math.floor(i.naturalWidth);u!==1&&(r*=u,o*=u,l*=u,s*=u);var c=l/s,d=He({aspectRatio:c,width:t.maxWidth||1/0,height:t.maxHeight||1/0}),h=He({aspectRatio:c,width:t.minWidth||0,height:t.minHeight||0},"cover"),f=He({aspectRatio:c,width:t.width||(u!==1?a.width:l),height:t.height||(u!==1?a.height:s)}),p=f.width,m=f.height;p=Math.min(d.width,Math.max(h.width,p)),m=Math.min(d.height,Math.max(h.height,m));var g=document.createElement("canvas"),b=g.getContext("2d");g.width=Et(p),g.height=Et(m),b.fillStyle=t.fillColor||"transparent",b.fillRect(0,0,p,m);var E=t.imageSmoothingEnabled,T=E===void 0?!0:E,_=t.imageSmoothingQuality;b.imageSmoothingEnabled=T,_&&(b.imageSmoothingQuality=_);var y=a.width,I=a.height,v=r,R=o,S,D,x,O,z,A;v<=-l||v>y?(v=0,S=0,x=0,z=0):v<=0?(x=-v,v=0,S=Math.min(y,l+v),z=S):v<=y&&(x=0,S=Math.min(l,y-v),z=S),S<=0||R<=-s||R>I?(R=0,D=0,O=0,A=0):R<=0?(O=-R,R=0,D=Math.min(I,s+R),A=D):R<=I&&(O=0,D=Math.min(s,I-R),A=D);var F=[v,R,S,D];if(z>0&&A>0){var w=p/l;F.push(x*w,O*w,z*w,A*w)}return b.drawImage.apply(b,[a].concat(mr(F.map(function(L){return Math.floor(Et(L))})))),g},setAspectRatio:function(t){var i=this.options;return!this.disabled&&!ea(t)&&(i.aspectRatio=Math.max(0,t)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(t){var i=this.options,a=this.dragBox,n=this.face;if(this.ready&&!this.disabled){var r=t===ma,o=i.movable&&t===br;t=r||o?t:_r,i.dragMode=t,Bt(a,Nt,t),gt(a,na,r),gt(a,ra,o),i.cropBoxMovable||(Bt(n,Nt,t),gt(n,na,r),gt(n,ra,o))}return this}},Pu=De.Cropper,Ea=function(){function e(t){var i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(Yd(this,e),!t||!ou.test(t.tagName))throw new Error("The first argument is required and must be an or element.");this.element=t,this.options=K({},dr,mt(i)&&i),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return $d(e,[{key:"init",value:function(){var i=this.element,a=i.tagName.toLowerCase(),n;if(!i[Z]){if(i[Z]=this,a==="img"){if(this.isImg=!0,n=i.getAttribute("src")||"",this.originalUrl=n,!n)return;n=i.src}else a==="canvas"&&window.HTMLCanvasElement&&(n=i.toDataURL());this.load(n)}}},{key:"load",value:function(i){var a=this;if(i){this.url=i,this.imageData={};var n=this.element,r=this.options;if(!r.rotatable&&!r.scalable&&(r.checkOrientation=!1),!r.checkOrientation||!window.ArrayBuffer){this.clone();return}if(nu.test(i)){ru.test(i)?this.read(yu(i)):this.clone();return}var o=new XMLHttpRequest,l=this.clone.bind(this);this.reloading=!0,this.xhr=o,o.onabort=l,o.onerror=l,o.ontimeout=l,o.onprogress=function(){o.getResponseHeader("content-type")!==cr&&o.abort()},o.onload=function(){a.read(o.response)},o.onloadend=function(){a.reloading=!1,a.xhr=null},r.checkCrossOrigin&&hr(i)&&n.crossOrigin&&(i=fr(i)),o.open("GET",i,!0),o.responseType="arraybuffer",o.withCredentials=n.crossOrigin==="use-credentials",o.send()}}},{key:"read",value:function(i){var a=this.options,n=this.imageData,r=wu(i),o=0,l=1,s=1;if(r>1){this.url=Su(i,cr);var u=vu(r);o=u.rotate,l=u.scaleX,s=u.scaleY}a.rotatable&&(n.rotate=o),a.scalable&&(n.scaleX=l,n.scaleY=s),this.clone()}},{key:"clone",value:function(){var i=this.element,a=this.url,n=i.crossOrigin,r=a;this.options.checkCrossOrigin&&hr(a)&&(n||(n="anonymous"),r=fr(a)),this.crossOrigin=n,this.crossOriginUrl=r;var o=document.createElement("img");n&&(o.crossOrigin=n),o.src=r||a,o.alt=i.alt||"The image to crop",this.image=o,o.onload=this.start.bind(this),o.onerror=this.stop.bind(this),ce(o,tr),i.parentNode.insertBefore(o,i.nextSibling)}},{key:"start",value:function(){var i=this,a=this.image;a.onload=null,a.onerror=null,this.sizing=!0;var n=De.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(De.navigator.userAgent),r=function(u,c){K(i.imageData,{naturalWidth:u,naturalHeight:c,aspectRatio:u/c}),i.initialImageData=K({},i.imageData),i.sizing=!1,i.sized=!0,i.build()};if(a.naturalWidth&&!n){r(a.naturalWidth,a.naturalHeight);return}var o=document.createElement("img"),l=document.body||document.documentElement;this.sizingImage=o,o.onload=function(){r(o.width,o.height),n||l.removeChild(o)},o.src=a.src,n||(o.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",l.appendChild(o))}},{key:"stop",value:function(){var i=this.image;i.onload=null,i.onerror=null,i.parentNode.removeChild(i),this.image=null}},{key:"build",value:function(){if(!(!this.sized||this.ready)){var i=this.element,a=this.options,n=this.image,r=i.parentNode,o=document.createElement("div");o.innerHTML=lu;var l=o.querySelector(".".concat(Z,"-container")),s=l.querySelector(".".concat(Z,"-canvas")),u=l.querySelector(".".concat(Z,"-drag-box")),c=l.querySelector(".".concat(Z,"-crop-box")),d=c.querySelector(".".concat(Z,"-face"));this.container=r,this.cropper=l,this.canvas=s,this.dragBox=u,this.cropBox=c,this.viewBox=l.querySelector(".".concat(Z,"-view-box")),this.face=d,s.appendChild(n),ce(i,Ee),r.insertBefore(l,i.nextSibling),xe(n,tr),this.initPreview(),this.bind(),a.initialAspectRatio=Math.max(0,a.initialAspectRatio)||NaN,a.aspectRatio=Math.max(0,a.aspectRatio)||NaN,a.viewMode=Math.max(0,Math.min(3,Math.round(a.viewMode)))||0,ce(c,Ee),a.guides||ce(c.getElementsByClassName("".concat(Z,"-dashed")),Ee),a.center||ce(c.getElementsByClassName("".concat(Z,"-center")),Ee),a.background&&ce(l,"".concat(Z,"-bg")),a.highlight||ce(d,Jd),a.cropBoxMovable&&(ce(d,ra),Bt(d,Nt,pa)),a.cropBoxResizable||(ce(c.getElementsByClassName("".concat(Z,"-line")),Ee),ce(c.getElementsByClassName("".concat(Z,"-point")),Ee)),this.render(),this.ready=!0,this.setDragMode(a.dragMode),a.autoCrop&&this.crop(),this.setData(a.data),ge(a.ready)&&Se(i,or,a.ready,{once:!0}),Tt(i,or)}}},{key:"unbuild",value:function(){if(this.ready){this.ready=!1,this.unbind(),this.resetPreview();var i=this.cropper.parentNode;i&&i.removeChild(this.cropper),xe(this.element,Ee)}}},{key:"uncreate",value:function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()}}],[{key:"noConflict",value:function(){return window.Cropper=Pu,e}},{key:"setDefaults",value:function(i){K(dr,mt(i)&&i)}}]),e}();K(Ea.prototype,Au,Lu,Mu,Ou,xu,Du);var Mr=({addFilter:e,utils:t})=>{let{Type:i,replaceInString:a,toNaturalFileSize:n}=t;return e("ALLOW_HOPPER_ITEM",(r,{query:o})=>{if(!o("GET_ALLOW_FILE_SIZE_VALIDATION"))return!0;let l=o("GET_MAX_FILE_SIZE");if(l!==null&&r.size>l)return!1;let s=o("GET_MIN_FILE_SIZE");return!(s!==null&&r.sizenew Promise((l,s)=>{if(!o("GET_ALLOW_FILE_SIZE_VALIDATION"))return l(r);let u=o("GET_FILE_VALIDATE_SIZE_FILTER");if(u&&!u(r))return l(r);let c=o("GET_MAX_FILE_SIZE");if(c!==null&&r.size>c){s({status:{main:o("GET_LABEL_MAX_FILE_SIZE_EXCEEDED"),sub:a(o("GET_LABEL_MAX_FILE_SIZE"),{filesize:n(c,".",o("GET_FILE_SIZE_BASE"),o("GET_FILE_SIZE_LABELS",o))})}});return}let d=o("GET_MIN_FILE_SIZE");if(d!==null&&r.sizep+m.fileSize,0)>h){s({status:{main:o("GET_LABEL_MAX_TOTAL_FILE_SIZE_EXCEEDED"),sub:a(o("GET_LABEL_MAX_TOTAL_FILE_SIZE"),{filesize:n(h,".",o("GET_FILE_SIZE_BASE"),o("GET_FILE_SIZE_LABELS",o))})}});return}l(r)})),{options:{allowFileSizeValidation:[!0,i.BOOLEAN],maxFileSize:[null,i.INT],minFileSize:[null,i.INT],maxTotalFileSize:[null,i.INT],fileValidateSizeFilter:[null,i.FUNCTION],labelMinFileSizeExceeded:["File is too small",i.STRING],labelMinFileSize:["Minimum file size is {filesize}",i.STRING],labelMaxFileSizeExceeded:["File is too large",i.STRING],labelMaxFileSize:["Maximum file size is {filesize}",i.STRING],labelMaxTotalFileSizeExceeded:["Maximum total size exceeded",i.STRING],labelMaxTotalFileSize:["Maximum total file size is {filesize}",i.STRING]}}},Fu=typeof window<"u"&&typeof window.document<"u";Fu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Mr}));var Or=Mr;var xr=({addFilter:e,utils:t})=>{let{Type:i,isString:a,replaceInString:n,guesstimateMimeType:r,getExtensionFromFilename:o,getFilenameFromURL:l}=t,s=(f,p)=>{let m=(/^[^/]+/.exec(f)||[]).pop(),g=p.slice(0,-2);return m===g},u=(f,p)=>f.some(m=>/\*$/.test(m)?s(p,m):m===p),c=f=>{let p="";if(a(f)){let m=l(f),g=o(m);g&&(p=r(g))}else p=f.type;return p},d=(f,p,m)=>{if(p.length===0)return!0;let g=c(f);return m?new Promise((b,E)=>{m(f,g).then(T=>{u(p,T)?b():E()}).catch(E)}):u(p,g)},h=f=>p=>f[p]===null?!1:f[p]||p;return e("SET_ATTRIBUTE_TO_OPTION_MAP",f=>Object.assign(f,{accept:"acceptedFileTypes"})),e("ALLOW_HOPPER_ITEM",(f,{query:p})=>p("GET_ALLOW_FILE_TYPE_VALIDATION")?d(f,p("GET_ACCEPTED_FILE_TYPES")):!0),e("LOAD_FILE",(f,{query:p})=>new Promise((m,g)=>{if(!p("GET_ALLOW_FILE_TYPE_VALIDATION")){m(f);return}let b=p("GET_ACCEPTED_FILE_TYPES"),E=p("GET_FILE_VALIDATE_TYPE_DETECT_TYPE"),T=d(f,b,E),_=()=>{let y=b.map(h(p("GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES_MAP"))).filter(v=>v!==!1),I=y.filter(function(v,R){return y.indexOf(v)===R});g({status:{main:p("GET_LABEL_FILE_TYPE_NOT_ALLOWED"),sub:n(p("GET_FILE_VALIDATE_TYPE_LABEL_EXPECTED_TYPES"),{allTypes:I.join(", "),allButLastType:I.slice(0,-1).join(", "),lastType:I[y.length-1]})}})};if(typeof T=="boolean")return T?m(f):_();T.then(()=>{m(f)}).catch(_)})),{options:{allowFileTypeValidation:[!0,i.BOOLEAN],acceptedFileTypes:[[],i.ARRAY],labelFileTypeNotAllowed:["File is of invalid type",i.STRING],fileValidateTypeLabelExpectedTypes:["Expects {allButLastType} or {lastType}",i.STRING],fileValidateTypeLabelExpectedTypesMap:[{},i.OBJECT],fileValidateTypeDetectType:[null,i.FUNCTION]}}},Cu=typeof window<"u"&&typeof window.document<"u";Cu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:xr}));var Dr=xr;var Pr=e=>/^image/.test(e.type),Fr=({addFilter:e,utils:t})=>{let{Type:i,isFile:a,getNumericAspectRatioFromString:n}=t,r=(u,c)=>!(!Pr(u.file)||!c("GET_ALLOW_IMAGE_CROP")),o=u=>typeof u=="object",l=u=>typeof u=="number",s=(u,c)=>u.setMetadata("crop",Object.assign({},u.getMetadata("crop"),c));return e("DID_CREATE_ITEM",(u,{query:c})=>{u.extend("setImageCrop",d=>{if(!(!r(u,c)||!o(center)))return u.setMetadata("crop",d),d}),u.extend("setImageCropCenter",d=>{if(!(!r(u,c)||!o(d)))return s(u,{center:d})}),u.extend("setImageCropZoom",d=>{if(!(!r(u,c)||!l(d)))return s(u,{zoom:Math.max(1,d)})}),u.extend("setImageCropRotation",d=>{if(!(!r(u,c)||!l(d)))return s(u,{rotation:d})}),u.extend("setImageCropFlip",d=>{if(!(!r(u,c)||!o(d)))return s(u,{flip:d})}),u.extend("setImageCropAspectRatio",d=>{if(!r(u,c)||typeof d>"u")return;let h=u.getMetadata("crop"),f=n(d),p={center:{x:.5,y:.5},flip:h?Object.assign({},h.flip):{horizontal:!1,vertical:!1},rotation:0,zoom:1,aspectRatio:f};return u.setMetadata("crop",p),p})}),e("DID_LOAD_ITEM",(u,{query:c})=>new Promise((d,h)=>{let f=u.file;if(!a(f)||!Pr(f)||!c("GET_ALLOW_IMAGE_CROP")||u.getMetadata("crop"))return d(u);let m=c("GET_IMAGE_CROP_ASPECT_RATIO");u.setMetadata("crop",{center:{x:.5,y:.5},flip:{horizontal:!1,vertical:!1},rotation:0,zoom:1,aspectRatio:m?n(m):null}),d(u)})),{options:{allowImageCrop:[!0,i.BOOLEAN],imageCropAspectRatio:[null,i.STRING]}}},zu=typeof window<"u"&&typeof window.document<"u";zu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Fr}));var Cr=Fr;var Ta=e=>/^image/.test(e.type),zr=e=>{let{addFilter:t,utils:i,views:a}=e,{Type:n,createRoute:r,createItemAPI:o=c=>c}=i,{fileActionButton:l}=a;t("SHOULD_REMOVE_ON_REVERT",(c,{item:d,query:h})=>new Promise(f=>{let{file:p}=d,m=h("GET_ALLOW_IMAGE_EDIT")&&h("GET_IMAGE_EDIT_ALLOW_EDIT")&&Ta(p);f(!m)})),t("DID_LOAD_ITEM",(c,{query:d,dispatch:h})=>new Promise((f,p)=>{if(c.origin>1){f(c);return}let{file:m}=c;if(!d("GET_ALLOW_IMAGE_EDIT")||!d("GET_IMAGE_EDIT_INSTANT_EDIT")){f(c);return}if(!Ta(m)){f(c);return}let g=(E,T,_)=>y=>{s.shift(),y?T(E):_(E),h("KICK"),b()},b=()=>{if(!s.length)return;let{item:E,resolve:T,reject:_}=s[0];h("EDIT_ITEM",{id:E.id,handleEditorResponse:g(E,T,_)})};u({item:c,resolve:f,reject:p}),s.length===1&&b()})),t("DID_CREATE_ITEM",(c,{query:d,dispatch:h})=>{c.extend("edit",()=>{h("EDIT_ITEM",{id:c.id})})});let s=[],u=c=>(s.push(c),c);return t("CREATE_VIEW",c=>{let{is:d,view:h,query:f}=c;if(!f("GET_ALLOW_IMAGE_EDIT"))return;let p=f("GET_ALLOW_IMAGE_PREVIEW");if(!(d("file-info")&&!p||d("file")&&p))return;let g=f("GET_IMAGE_EDIT_EDITOR");if(!g)return;g.filepondCallbackBridge||(g.outputData=!0,g.outputFile=!1,g.filepondCallbackBridge={onconfirm:g.onconfirm||(()=>{}),oncancel:g.oncancel||(()=>{})});let b=({root:_,props:y,action:I})=>{let{id:v}=y,{handleEditorResponse:R}=I;g.cropAspectRatio=_.query("GET_IMAGE_CROP_ASPECT_RATIO")||g.cropAspectRatio,g.outputCanvasBackgroundColor=_.query("GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR")||g.outputCanvasBackgroundColor;let S=_.query("GET_ITEM",v);if(!S)return;let D=S.file,x=S.getMetadata("crop"),O={center:{x:.5,y:.5},flip:{horizontal:!1,vertical:!1},zoom:1,rotation:0,aspectRatio:null},z=S.getMetadata("resize"),A=S.getMetadata("filter")||null,F=S.getMetadata("filters")||null,w=S.getMetadata("colors")||null,L=S.getMetadata("markup")||null,C={crop:x||O,size:z?{upscale:z.upscale,mode:z.mode,width:z.size.width,height:z.size.height}:null,filter:F?F.id||F.matrix:_.query("GET_ALLOW_IMAGE_FILTER")&&_.query("GET_IMAGE_FILTER_COLOR_MATRIX")&&!w?A:null,color:w,markup:L};g.onconfirm=({data:P})=>{let{crop:V,size:G,filter:q,color:X,colorMatrix:j,markup:de}=P,U={};if(V&&(U.crop=V),G){let W=(S.getMetadata("resize")||{}).size,$={width:G.width,height:G.height};!($.width&&$.height)&&W&&($.width=W.width,$.height=W.height),($.width||$.height)&&(U.resize={upscale:G.upscale,mode:G.mode,size:$})}de&&(U.markup=de),U.colors=X,U.filters=q,U.filter=j,S.setMetadata(U),g.filepondCallbackBridge.onconfirm(P,o(S)),R&&(g.onclose=()=>{R(!0),g.onclose=null})},g.oncancel=()=>{g.filepondCallbackBridge.oncancel(o(S)),R&&(g.onclose=()=>{R(!1),g.onclose=null})},g.open(D,C)},E=({root:_,props:y})=>{if(!f("GET_IMAGE_EDIT_ALLOW_EDIT"))return;let{id:I}=y,v=f("GET_ITEM",I);if(!v)return;let R=v.file;if(Ta(R))if(_.ref.handleEdit=S=>{S.stopPropagation(),_.dispatch("EDIT_ITEM",{id:I})},p){let S=h.createChildView(l,{label:"edit",icon:f("GET_IMAGE_EDIT_ICON_EDIT"),opacity:0});S.element.classList.add("filepond--action-edit-item"),S.element.dataset.align=f("GET_STYLE_IMAGE_EDIT_BUTTON_EDIT_ITEM_POSITION"),S.on("click",_.ref.handleEdit),_.ref.buttonEditItem=h.appendChildView(S)}else{let S=h.element.querySelector(".filepond--file-info-main"),D=document.createElement("button");D.className="filepond--action-edit-item-alt",D.innerHTML=f("GET_IMAGE_EDIT_ICON_EDIT")+"edit",D.addEventListener("click",_.ref.handleEdit),S.appendChild(D),_.ref.editButton=D}};h.registerDestroyer(({root:_})=>{_.ref.buttonEditItem&&_.ref.buttonEditItem.off("click",_.ref.handleEdit),_.ref.editButton&&_.ref.editButton.removeEventListener("click",_.ref.handleEdit)});let T={EDIT_ITEM:b,DID_LOAD_ITEM:E};if(p){let _=({root:y})=>{y.ref.buttonEditItem&&(y.ref.buttonEditItem.opacity=1)};T.DID_IMAGE_PREVIEW_SHOW=_}h.registerWriter(r(T))}),{options:{allowImageEdit:[!0,n.BOOLEAN],styleImageEditButtonEditItemPosition:["bottom center",n.STRING],imageEditInstantEdit:[!1,n.BOOLEAN],imageEditAllowEdit:[!0,n.BOOLEAN],imageEditIconEdit:['',n.STRING],imageEditEditor:[null,n.OBJECT]}}},Nu=typeof window<"u"&&typeof window.document<"u";Nu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:zr}));var Nr=zr;var Bu=e=>/^image\/jpeg/.test(e.type),it={JPEG:65496,APP1:65505,EXIF:1165519206,TIFF:18761,Orientation:274,Unknown:65280},at=(e,t,i=!1)=>e.getUint16(t,i),Br=(e,t,i=!1)=>e.getUint32(t,i),Gu=e=>new Promise((t,i)=>{let a=new FileReader;a.onload=function(n){let r=new DataView(n.target.result);if(at(r,0)!==it.JPEG){t(-1);return}let o=r.byteLength,l=2;for(;ltypeof window<"u"&&typeof window.document<"u")(),Uu=()=>Vu,ku="data:image/jpg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QA6RXhpZgAATU0AKgAAAAgAAwESAAMAAAABAAYAAAEoAAMAAAABAAIAAAITAAMAAAABAAEAAAAAAAD/2wBDAP//////////////////////////////////////////////////////////////////////////////////////wAALCAABAAIBASIA/8QAJgABAAAAAAAAAAAAAAAAAAAAAxABAAAAAAAAAAAAAAAAAAAAAP/aAAgBAQAAPwBH/9k=",Gr,pi=Uu()?new Image:{};pi.onload=()=>Gr=pi.naturalWidth>pi.naturalHeight;pi.src=ku;var Hu=()=>Gr,Vr=({addFilter:e,utils:t})=>{let{Type:i,isFile:a}=t;return e("DID_LOAD_ITEM",(n,{query:r})=>new Promise((o,l)=>{let s=n.file;if(!a(s)||!Bu(s)||!r("GET_ALLOW_IMAGE_EXIF_ORIENTATION")||!Hu())return o(n);Gu(s).then(u=>{n.setMetadata("exif",{orientation:u}),o(n)})})),{options:{allowImageExifOrientation:[!0,i.BOOLEAN]}}},Wu=typeof window<"u"&&typeof window.document<"u";Wu&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Vr}));var Ur=Vr;var Yu=e=>/^image/.test(e.type),kr=(e,t)=>Vt(e.x*t,e.y*t),Hr=(e,t)=>Vt(e.x+t.x,e.y+t.y),$u=e=>{let t=Math.sqrt(e.x*e.x+e.y*e.y);return t===0?{x:0,y:0}:Vt(e.x/t,e.y/t)},mi=(e,t,i)=>{let a=Math.cos(t),n=Math.sin(t),r=Vt(e.x-i.x,e.y-i.y);return Vt(i.x+a*r.x-n*r.y,i.y+n*r.x+a*r.y)},Vt=(e=0,t=0)=>({x:e,y:t}),Te=(e,t,i=1,a)=>{if(typeof e=="string")return parseFloat(e)*i;if(typeof e=="number")return e*(a?t[a]:Math.min(t.width,t.height))},qu=(e,t,i)=>{let a=e.borderStyle||e.lineStyle||"solid",n=e.backgroundColor||e.fontColor||"transparent",r=e.borderColor||e.lineColor||"transparent",o=Te(e.borderWidth||e.lineWidth,t,i),l=e.lineCap||"round",s=e.lineJoin||"round",u=typeof a=="string"?"":a.map(d=>Te(d,t,i)).join(","),c=e.opacity||1;return{"stroke-linecap":l,"stroke-linejoin":s,"stroke-width":o||0,"stroke-dasharray":u,stroke:r,fill:n,opacity:c}},we=e=>e!=null,Xu=(e,t,i=1)=>{let a=Te(e.x,t,i,"width")||Te(e.left,t,i,"width"),n=Te(e.y,t,i,"height")||Te(e.top,t,i,"height"),r=Te(e.width,t,i,"width"),o=Te(e.height,t,i,"height"),l=Te(e.right,t,i,"width"),s=Te(e.bottom,t,i,"height");return we(n)||(we(o)&&we(s)?n=t.height-o-s:n=s),we(a)||(we(r)&&we(l)?a=t.width-r-l:a=l),we(r)||(we(a)&&we(l)?r=t.width-a-l:r=0),we(o)||(we(n)&&we(s)?o=t.height-n-s:o=0),{x:a||0,y:n||0,width:r||0,height:o||0}},ju=e=>e.map((t,i)=>`${i===0?"M":"L"} ${t.x} ${t.y}`).join(" "),Fe=(e,t)=>Object.keys(t).forEach(i=>e.setAttribute(i,t[i])),Qu="http://www.w3.org/2000/svg",It=(e,t)=>{let i=document.createElementNS(Qu,e);return t&&Fe(i,t),i},Zu=e=>Fe(e,{...e.rect,...e.styles}),Ku=e=>{let t=e.rect.x+e.rect.width*.5,i=e.rect.y+e.rect.height*.5,a=e.rect.width*.5,n=e.rect.height*.5;return Fe(e,{cx:t,cy:i,rx:a,ry:n,...e.styles})},Ju={contain:"xMidYMid meet",cover:"xMidYMid slice"},eh=(e,t)=>{Fe(e,{...e.rect,...e.styles,preserveAspectRatio:Ju[t.fit]||"none"})},th={left:"start",center:"middle",right:"end"},ih=(e,t,i,a)=>{let n=Te(t.fontSize,i,a),r=t.fontFamily||"sans-serif",o=t.fontWeight||"normal",l=th[t.textAlign]||"start";Fe(e,{...e.rect,...e.styles,"stroke-width":0,"font-weight":o,"font-size":n,"font-family":r,"text-anchor":l}),e.text!==t.text&&(e.text=t.text,e.textContent=t.text.length?t.text:" ")},ah=(e,t,i,a)=>{Fe(e,{...e.rect,...e.styles,fill:"none"});let n=e.childNodes[0],r=e.childNodes[1],o=e.childNodes[2],l=e.rect,s={x:e.rect.x+e.rect.width,y:e.rect.y+e.rect.height};if(Fe(n,{x1:l.x,y1:l.y,x2:s.x,y2:s.y}),!t.lineDecoration)return;r.style.display="none",o.style.display="none";let u=$u({x:s.x-l.x,y:s.y-l.y}),c=Te(.05,i,a);if(t.lineDecoration.indexOf("arrow-begin")!==-1){let d=kr(u,c),h=Hr(l,d),f=mi(l,2,h),p=mi(l,-2,h);Fe(r,{style:"display:block;",d:`M${f.x},${f.y} L${l.x},${l.y} L${p.x},${p.y}`})}if(t.lineDecoration.indexOf("arrow-end")!==-1){let d=kr(u,-c),h=Hr(s,d),f=mi(s,2,h),p=mi(s,-2,h);Fe(o,{style:"display:block;",d:`M${f.x},${f.y} L${s.x},${s.y} L${p.x},${p.y}`})}},nh=(e,t,i,a)=>{Fe(e,{...e.styles,fill:"none",d:ju(t.points.map(n=>({x:Te(n.x,i,a,"width"),y:Te(n.y,i,a,"height")})))})},gi=e=>t=>It(e,{id:t.id}),rh=e=>{let t=It("image",{id:e.id,"stroke-linecap":"round","stroke-linejoin":"round",opacity:"0"});return t.onload=()=>{t.setAttribute("opacity",e.opacity||1)},t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",e.src),t},oh=e=>{let t=It("g",{id:e.id,"stroke-linecap":"round","stroke-linejoin":"round"}),i=It("line");t.appendChild(i);let a=It("path");t.appendChild(a);let n=It("path");return t.appendChild(n),t},lh={image:rh,rect:gi("rect"),ellipse:gi("ellipse"),text:gi("text"),path:gi("path"),line:oh},sh={rect:Zu,ellipse:Ku,image:eh,text:ih,path:nh,line:ah},ch=(e,t)=>lh[e](t),dh=(e,t,i,a,n)=>{t!=="path"&&(e.rect=Xu(i,a,n)),e.styles=qu(i,a,n),sh[t](e,i,a,n)},uh=["x","y","left","top","right","bottom","width","height"],hh=e=>typeof e=="string"&&/%/.test(e)?parseFloat(e)/100:e,fh=e=>{let[t,i]=e,a=i.points?{}:uh.reduce((n,r)=>(n[r]=hh(i[r]),n),{});return[t,{zIndex:0,...i,...a}]},ph=(e,t)=>e[1].zIndex>t[1].zIndex?1:e[1].zIndexe.utils.createView({name:"image-preview-markup",tag:"svg",ignoreRect:!0,mixins:{apis:["width","height","crop","markup","resize","dirty"]},write:({root:t,props:i})=>{if(!i.dirty)return;let{crop:a,resize:n,markup:r}=i,o=i.width,l=i.height,s=a.width,u=a.height;if(n){let{size:f}=n,p=f&&f.width,m=f&&f.height,g=n.mode,b=n.upscale;p&&!m&&(m=p),m&&!p&&(p=m);let E=s{let[p,m]=f,g=ch(p,m);dh(g,p,m,c,d),t.element.appendChild(g)})}}),Gt=(e,t)=>({x:e,y:t}),gh=(e,t)=>e.x*t.x+e.y*t.y,Wr=(e,t)=>Gt(e.x-t.x,e.y-t.y),Eh=(e,t)=>gh(Wr(e,t),Wr(e,t)),Yr=(e,t)=>Math.sqrt(Eh(e,t)),$r=(e,t)=>{let i=e,a=1.5707963267948966,n=t,r=1.5707963267948966-t,o=Math.sin(a),l=Math.sin(n),s=Math.sin(r),u=Math.cos(r),c=i/o,d=c*l,h=c*s;return Gt(u*d,u*h)},Th=(e,t)=>{let i=e.width,a=e.height,n=$r(i,t),r=$r(a,t),o=Gt(e.x+Math.abs(n.x),e.y-Math.abs(n.y)),l=Gt(e.x+e.width+Math.abs(r.y),e.y+Math.abs(r.x)),s=Gt(e.x-Math.abs(r.y),e.y+e.height-Math.abs(r.x));return{width:Yr(o,l),height:Yr(o,s)}},Ih=(e,t,i=1)=>{let a=e.height/e.width,n=1,r=t,o=1,l=a;l>r&&(l=r,o=l/a);let s=Math.max(n/o,r/l),u=e.width/(i*s*o),c=u*t;return{width:u,height:c}},Xr=(e,t,i,a)=>{let n=a.x>.5?1-a.x:a.x,r=a.y>.5?1-a.y:a.y,o=n*2*e.width,l=r*2*e.height,s=Th(t,i);return Math.max(s.width/o,s.height/l)},jr=(e,t)=>{let i=e.width,a=i*t;a>e.height&&(a=e.height,i=a/t);let n=(e.width-i)*.5,r=(e.height-a)*.5;return{x:n,y:r,width:i,height:a}},bh=(e,t={})=>{let{zoom:i,rotation:a,center:n,aspectRatio:r}=t;r||(r=e.height/e.width);let o=Ih(e,r,i),l={x:o.width*.5,y:o.height*.5},s={x:0,y:0,width:o.width,height:o.height,center:l},u=typeof t.scaleToFit>"u"||t.scaleToFit,c=Xr(e,jr(s,r),a,u?n:{x:.5,y:.5}),d=i*c;return{widthFloat:o.width/d,heightFloat:o.height/d,width:Math.round(o.width/d),height:Math.round(o.height/d)}},Pe={type:"spring",stiffness:.5,damping:.45,mass:10},_h=e=>e.utils.createView({name:"image-bitmap",ignoreRect:!0,mixins:{styles:["scaleX","scaleY"]},create:({root:t,props:i})=>{t.appendChild(i.image)}}),Rh=e=>e.utils.createView({name:"image-canvas-wrapper",tag:"div",ignoreRect:!0,mixins:{apis:["crop","width","height"],styles:["originX","originY","translateX","translateY","scaleX","scaleY","rotateZ"],animations:{originX:Pe,originY:Pe,scaleX:Pe,scaleY:Pe,translateX:Pe,translateY:Pe,rotateZ:Pe}},create:({root:t,props:i})=>{i.width=i.image.width,i.height=i.image.height,t.ref.bitmap=t.appendChildView(t.createChildView(_h(e),{image:i.image}))},write:({root:t,props:i})=>{let{flip:a}=i.crop,{bitmap:n}=t.ref;n.scaleX=a.horizontal?-1:1,n.scaleY=a.vertical?-1:1}}),yh=e=>e.utils.createView({name:"image-clip",tag:"div",ignoreRect:!0,mixins:{apis:["crop","markup","resize","width","height","dirty","background"],styles:["width","height","opacity"],animations:{opacity:{type:"tween",duration:250}}},didWriteView:function({root:t,props:i}){i.background&&(t.element.style.backgroundColor=i.background)},create:({root:t,props:i})=>{t.ref.image=t.appendChildView(t.createChildView(Rh(e),Object.assign({},i))),t.ref.createMarkup=()=>{t.ref.markup||(t.ref.markup=t.appendChildView(t.createChildView(mh(e),Object.assign({},i))))},t.ref.destroyMarkup=()=>{t.ref.markup&&(t.removeChildView(t.ref.markup),t.ref.markup=null)};let a=t.query("GET_IMAGE_PREVIEW_TRANSPARENCY_INDICATOR");a!==null&&(a==="grid"?t.element.dataset.transparencyIndicator=a:t.element.dataset.transparencyIndicator="color")},write:({root:t,props:i,shouldOptimize:a})=>{let{crop:n,markup:r,resize:o,dirty:l,width:s,height:u}=i;t.ref.image.crop=n;let c={x:0,y:0,width:s,height:u,center:{x:s*.5,y:u*.5}},d={width:t.ref.image.width,height:t.ref.image.height},h={x:n.center.x*d.width,y:n.center.y*d.height},f={x:c.center.x-d.width*n.center.x,y:c.center.y-d.height*n.center.y},p=Math.PI*2+n.rotation%(Math.PI*2),m=n.aspectRatio||d.height/d.width,g=typeof n.scaleToFit>"u"||n.scaleToFit,b=Xr(d,jr(c,m),p,g?n.center:{x:.5,y:.5}),E=n.zoom*b;r&&r.length?(t.ref.createMarkup(),t.ref.markup.width=s,t.ref.markup.height=u,t.ref.markup.resize=o,t.ref.markup.dirty=l,t.ref.markup.markup=r,t.ref.markup.crop=bh(d,n)):t.ref.markup&&t.ref.destroyMarkup();let T=t.ref.image;if(a){T.originX=null,T.originY=null,T.translateX=null,T.translateY=null,T.rotateZ=null,T.scaleX=null,T.scaleY=null;return}T.originX=h.x,T.originY=h.y,T.translateX=f.x,T.translateY=f.y,T.rotateZ=p,T.scaleX=E,T.scaleY=E}}),Sh=e=>e.utils.createView({name:"image-preview",tag:"div",ignoreRect:!0,mixins:{apis:["image","crop","markup","resize","dirty","background"],styles:["translateY","scaleX","scaleY","opacity"],animations:{scaleX:Pe,scaleY:Pe,translateY:Pe,opacity:{type:"tween",duration:400}}},create:({root:t,props:i})=>{t.ref.clip=t.appendChildView(t.createChildView(yh(e),{id:i.id,image:i.image,crop:i.crop,markup:i.markup,resize:i.resize,dirty:i.dirty,background:i.background}))},write:({root:t,props:i,shouldOptimize:a})=>{let{clip:n}=t.ref,{image:r,crop:o,markup:l,resize:s,dirty:u}=i;if(n.crop=o,n.markup=l,n.resize=s,n.dirty=u,n.opacity=a?0:1,a||t.rect.element.hidden)return;let c=r.height/r.width,d=o.aspectRatio||c,h=t.rect.inner.width,f=t.rect.inner.height,p=t.query("GET_IMAGE_PREVIEW_HEIGHT"),m=t.query("GET_IMAGE_PREVIEW_MIN_HEIGHT"),g=t.query("GET_IMAGE_PREVIEW_MAX_HEIGHT"),b=t.query("GET_PANEL_ASPECT_RATIO"),E=t.query("GET_ALLOW_MULTIPLE");b&&!E&&(p=h*b,d=b);let T=p!==null?p:Math.max(m,Math.min(h*d,g)),_=T/d;_>h&&(_=h,T=_*d),T>f&&(T=f,_=f/d),n.width=_,n.height=T}}),wh=` - - - - - - - - - - - - - - - - - -`,qr=0,vh=e=>e.utils.createView({name:"image-preview-overlay",tag:"div",ignoreRect:!0,create:({root:t,props:i})=>{let a=wh;if(document.querySelector("base")){let n=new URL(window.location.href.replace(window.location.hash,"")).href;a=a.replace(/url\(\#/g,"url("+n+"#")}qr++,t.element.classList.add(`filepond--image-preview-overlay-${i.status}`),t.element.innerHTML=a.replace(/__UID__/g,qr)},mixins:{styles:["opacity"],animations:{opacity:{type:"spring",mass:25}}}}),Ah=function(){self.onmessage=e=>{createImageBitmap(e.data.message.file).then(t=>{self.postMessage({id:e.data.id,message:t},[t])})}},Lh=function(){self.onmessage=e=>{let t=e.data.message.imageData,i=e.data.message.colorMatrix,a=t.data,n=a.length,r=i[0],o=i[1],l=i[2],s=i[3],u=i[4],c=i[5],d=i[6],h=i[7],f=i[8],p=i[9],m=i[10],g=i[11],b=i[12],E=i[13],T=i[14],_=i[15],y=i[16],I=i[17],v=i[18],R=i[19],S=0,D=0,x=0,O=0,z=0;for(;S{let i=new Image;i.onload=()=>{let a=i.naturalWidth,n=i.naturalHeight;i=null,t(a,n)},i.src=e},Oh={1:()=>[1,0,0,1,0,0],2:e=>[-1,0,0,1,e,0],3:(e,t)=>[-1,0,0,-1,e,t],4:(e,t)=>[1,0,0,-1,0,t],5:()=>[0,1,1,0,0,0],6:(e,t)=>[0,1,-1,0,t,0],7:(e,t)=>[0,-1,-1,0,t,e],8:e=>[0,-1,1,0,0,e]},xh=(e,t,i,a)=>{a!==-1&&e.transform.apply(e,Oh[a](t,i))},Dh=(e,t,i,a)=>{t=Math.round(t),i=Math.round(i);let n=document.createElement("canvas");n.width=t,n.height=i;let r=n.getContext("2d");return a>=5&&a<=8&&([t,i]=[i,t]),xh(r,t,i,a),r.drawImage(e,0,0,t,i),n},Qr=e=>/^image/.test(e.type)&&!/svg/.test(e.type),Ph=10,Fh=10,Ch=e=>{let t=Math.min(Ph/e.width,Fh/e.height),i=document.createElement("canvas"),a=i.getContext("2d"),n=i.width=Math.ceil(e.width*t),r=i.height=Math.ceil(e.height*t);a.drawImage(e,0,0,n,r);let o=null;try{o=a.getImageData(0,0,n,r).data}catch{return null}let l=o.length,s=0,u=0,c=0,d=0;for(;dMath.floor(Math.sqrt(e/(t/4))),zh=(e,t)=>(t=t||document.createElement("canvas"),t.width=e.width,t.height=e.height,t.getContext("2d").drawImage(e,0,0),t),Nh=e=>{let t;try{t=new ImageData(e.width,e.height)}catch{t=document.createElement("canvas").getContext("2d").createImageData(e.width,e.height)}return t.data.set(new Uint8ClampedArray(e.data)),t},Bh=e=>new Promise((t,i)=>{let a=new Image;a.crossOrigin="Anonymous",a.onload=()=>{t(a)},a.onerror=n=>{i(n)},a.src=e}),Gh=e=>{let t=vh(e),i=Sh(e),{createWorker:a}=e.utils,n=(E,T,_)=>new Promise(y=>{E.ref.imageData||(E.ref.imageData=_.getContext("2d").getImageData(0,0,_.width,_.height));let I=Nh(E.ref.imageData);if(!T||T.length!==20)return _.getContext("2d").putImageData(I,0,0),y();let v=a(Lh);v.post({imageData:I,colorMatrix:T},R=>{_.getContext("2d").putImageData(R,0,0),v.terminate(),y()},[I.data.buffer])}),r=(E,T)=>{E.removeChildView(T),T.image.width=1,T.image.height=1,T._destroy()},o=({root:E})=>{let T=E.ref.images.shift();return T.opacity=0,T.translateY=-15,E.ref.imageViewBin.push(T),T},l=({root:E,props:T,image:_})=>{let y=T.id,I=E.query("GET_ITEM",{id:y});if(!I)return;let v=I.getMetadata("crop")||{center:{x:.5,y:.5},flip:{horizontal:!1,vertical:!1},zoom:1,rotation:0,aspectRatio:null},R=E.query("GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR"),S,D,x=!1;E.query("GET_IMAGE_PREVIEW_MARKUP_SHOW")&&(S=I.getMetadata("markup")||[],D=I.getMetadata("resize"),x=!0);let O=E.appendChildView(E.createChildView(i,{id:y,image:_,crop:v,resize:D,markup:S,dirty:x,background:R,opacity:0,scaleX:1.15,scaleY:1.15,translateY:15}),E.childViews.length);E.ref.images.push(O),O.opacity=1,O.scaleX=1,O.scaleY=1,O.translateY=0,setTimeout(()=>{E.dispatch("DID_IMAGE_PREVIEW_SHOW",{id:y})},250)},s=({root:E,props:T})=>{let _=E.query("GET_ITEM",{id:T.id});if(!_)return;let y=E.ref.images[E.ref.images.length-1];y.crop=_.getMetadata("crop"),y.background=E.query("GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR"),E.query("GET_IMAGE_PREVIEW_MARKUP_SHOW")&&(y.dirty=!0,y.resize=_.getMetadata("resize"),y.markup=_.getMetadata("markup"))},u=({root:E,props:T,action:_})=>{if(!/crop|filter|markup|resize/.test(_.change.key)||!E.ref.images.length)return;let y=E.query("GET_ITEM",{id:T.id});if(y){if(/filter/.test(_.change.key)){let I=E.ref.images[E.ref.images.length-1];n(E,_.change.value,I.image);return}if(/crop|markup|resize/.test(_.change.key)){let I=y.getMetadata("crop"),v=E.ref.images[E.ref.images.length-1];if(I&&I.aspectRatio&&v.crop&&v.crop.aspectRatio&&Math.abs(I.aspectRatio-v.crop.aspectRatio)>1e-5){let R=o({root:E});l({root:E,props:T,image:zh(R.image)})}else s({root:E,props:T})}}},c=E=>{let _=window.navigator.userAgent.match(/Firefox\/([0-9]+)\./),y=_?parseInt(_[1]):null;return y!==null&&y<=58?!1:"createImageBitmap"in window&&Qr(E)},d=({root:E,props:T})=>{let{id:_}=T,y=E.query("GET_ITEM",_);if(!y)return;let I=URL.createObjectURL(y.file);Mh(I,(v,R)=>{E.dispatch("DID_IMAGE_PREVIEW_CALCULATE_SIZE",{id:_,width:v,height:R})})},h=({root:E,props:T})=>{let{id:_}=T,y=E.query("GET_ITEM",_);if(!y)return;let I=URL.createObjectURL(y.file),v=()=>{Bh(I).then(R)},R=S=>{URL.revokeObjectURL(I);let x=(y.getMetadata("exif")||{}).orientation||-1,{width:O,height:z}=S;if(!O||!z)return;x>=5&&x<=8&&([O,z]=[z,O]);let A=Math.max(1,window.devicePixelRatio*.75),w=E.query("GET_IMAGE_PREVIEW_ZOOM_FACTOR")*A,L=z/O,C=E.rect.element.width,P=E.rect.element.height,V=C,G=V*L;L>1?(V=Math.min(O,C*w),G=V*L):(G=Math.min(z,P*w),V=G/L);let q=Dh(S,V,G,x),X=()=>{let de=E.query("GET_IMAGE_PREVIEW_CALCULATE_AVERAGE_IMAGE_COLOR")?Ch(data):null;y.setMetadata("color",de,!0),"close"in S&&S.close(),E.ref.overlayShadow.opacity=1,l({root:E,props:T,image:q})},j=y.getMetadata("filter");j?n(E,j,q).then(X):X()};if(c(y.file)){let S=a(Ah);S.post({file:y.file},D=>{if(S.terminate(),!D){v();return}R(D)})}else v()},f=({root:E})=>{let T=E.ref.images[E.ref.images.length-1];T.translateY=0,T.scaleX=1,T.scaleY=1,T.opacity=1},p=({root:E})=>{E.ref.overlayShadow.opacity=1,E.ref.overlayError.opacity=0,E.ref.overlaySuccess.opacity=0},m=({root:E})=>{E.ref.overlayShadow.opacity=.25,E.ref.overlayError.opacity=1},g=({root:E})=>{E.ref.overlayShadow.opacity=.25,E.ref.overlaySuccess.opacity=1},b=({root:E})=>{E.ref.images=[],E.ref.imageData=null,E.ref.imageViewBin=[],E.ref.overlayShadow=E.appendChildView(E.createChildView(t,{opacity:0,status:"idle"})),E.ref.overlaySuccess=E.appendChildView(E.createChildView(t,{opacity:0,status:"success"})),E.ref.overlayError=E.appendChildView(E.createChildView(t,{opacity:0,status:"failure"}))};return e.utils.createView({name:"image-preview-wrapper",create:b,styles:["height"],apis:["height"],destroy:({root:E})=>{E.ref.images.forEach(T=>{T.image.width=1,T.image.height=1})},didWriteView:({root:E})=>{E.ref.images.forEach(T=>{T.dirty=!1})},write:e.utils.createRoute({DID_IMAGE_PREVIEW_DRAW:f,DID_IMAGE_PREVIEW_CONTAINER_CREATE:d,DID_FINISH_CALCULATE_PREVIEWSIZE:h,DID_UPDATE_ITEM_METADATA:u,DID_THROW_ITEM_LOAD_ERROR:m,DID_THROW_ITEM_PROCESSING_ERROR:m,DID_THROW_ITEM_INVALID:m,DID_COMPLETE_ITEM_PROCESSING:g,DID_START_ITEM_PROCESSING:p,DID_REVERT_ITEM_PROCESSING:p},({root:E})=>{let T=E.ref.imageViewBin.filter(_=>_.opacity===0);E.ref.imageViewBin=E.ref.imageViewBin.filter(_=>_.opacity>0),T.forEach(_=>r(E,_)),T.length=0})})},Zr=e=>{let{addFilter:t,utils:i}=e,{Type:a,createRoute:n,isFile:r}=i,o=Gh(e);return t("CREATE_VIEW",l=>{let{is:s,view:u,query:c}=l;if(!s("file")||!c("GET_ALLOW_IMAGE_PREVIEW"))return;let d=({root:g,props:b})=>{let{id:E}=b,T=c("GET_ITEM",E);if(!T||!r(T.file)||T.archived)return;let _=T.file;if(!Yu(_)||!c("GET_IMAGE_PREVIEW_FILTER_ITEM")(T))return;let y="createImageBitmap"in(window||{}),I=c("GET_IMAGE_PREVIEW_MAX_FILE_SIZE");if(!y&&I&&_.size>I)return;g.ref.imagePreview=u.appendChildView(u.createChildView(o,{id:E}));let v=g.query("GET_IMAGE_PREVIEW_HEIGHT");v&&g.dispatch("DID_UPDATE_PANEL_HEIGHT",{id:T.id,height:v});let R=!y&&_.size>c("GET_IMAGE_PREVIEW_MAX_INSTANT_PREVIEW_FILE_SIZE");g.dispatch("DID_IMAGE_PREVIEW_CONTAINER_CREATE",{id:E},R)},h=(g,b)=>{if(!g.ref.imagePreview)return;let{id:E}=b,T=g.query("GET_ITEM",{id:E});if(!T)return;let _=g.query("GET_PANEL_ASPECT_RATIO"),y=g.query("GET_ITEM_PANEL_ASPECT_RATIO"),I=g.query("GET_IMAGE_PREVIEW_HEIGHT");if(_||y||I)return;let{imageWidth:v,imageHeight:R}=g.ref;if(!v||!R)return;let S=g.query("GET_IMAGE_PREVIEW_MIN_HEIGHT"),D=g.query("GET_IMAGE_PREVIEW_MAX_HEIGHT"),O=(T.getMetadata("exif")||{}).orientation||-1;if(O>=5&&O<=8&&([v,R]=[R,v]),!Qr(T.file)||g.query("GET_IMAGE_PREVIEW_UPSCALE")){let C=2048/v;v*=C,R*=C}let z=R/v,A=(T.getMetadata("crop")||{}).aspectRatio||z,F=Math.max(S,Math.min(R,D)),w=g.rect.element.width,L=Math.min(w*A,F);g.dispatch("DID_UPDATE_PANEL_HEIGHT",{id:T.id,height:L})},f=({root:g})=>{g.ref.shouldRescale=!0},p=({root:g,action:b})=>{b.change.key==="crop"&&(g.ref.shouldRescale=!0)},m=({root:g,action:b})=>{g.ref.imageWidth=b.width,g.ref.imageHeight=b.height,g.ref.shouldRescale=!0,g.ref.shouldDrawPreview=!0,g.dispatch("KICK")};u.registerWriter(n({DID_RESIZE_ROOT:f,DID_STOP_RESIZE:f,DID_LOAD_ITEM:d,DID_IMAGE_PREVIEW_CALCULATE_SIZE:m,DID_UPDATE_ITEM_METADATA:p},({root:g,props:b})=>{g.ref.imagePreview&&(g.rect.element.hidden||(g.ref.shouldRescale&&(h(g,b),g.ref.shouldRescale=!1),g.ref.shouldDrawPreview&&(requestAnimationFrame(()=>{requestAnimationFrame(()=>{g.dispatch("DID_FINISH_CALCULATE_PREVIEWSIZE",{id:b.id})})}),g.ref.shouldDrawPreview=!1)))}))}),{options:{allowImagePreview:[!0,a.BOOLEAN],imagePreviewFilterItem:[()=>!0,a.FUNCTION],imagePreviewHeight:[null,a.INT],imagePreviewMinHeight:[44,a.INT],imagePreviewMaxHeight:[256,a.INT],imagePreviewMaxFileSize:[null,a.INT],imagePreviewZoomFactor:[2,a.INT],imagePreviewUpscale:[!1,a.BOOLEAN],imagePreviewMaxInstantPreviewFileSize:[1e6,a.INT],imagePreviewTransparencyIndicator:[null,a.STRING],imagePreviewCalculateAverageImageColor:[!1,a.BOOLEAN],imagePreviewMarkupShow:[!0,a.BOOLEAN],imagePreviewMarkupFilter:[()=>!0,a.FUNCTION]}}},Vh=typeof window<"u"&&typeof window.document<"u";Vh&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Zr}));var Kr=Zr;var Uh=e=>/^image/.test(e.type),kh=(e,t)=>{let i=new Image;i.onload=()=>{let a=i.naturalWidth,n=i.naturalHeight;i=null,t({width:a,height:n})},i.onerror=()=>t(null),i.src=e},Jr=({addFilter:e,utils:t})=>{let{Type:i}=t;return e("DID_LOAD_ITEM",(a,{query:n})=>new Promise((r,o)=>{let l=a.file;if(!Uh(l)||!n("GET_ALLOW_IMAGE_RESIZE"))return r(a);let s=n("GET_IMAGE_RESIZE_MODE"),u=n("GET_IMAGE_RESIZE_TARGET_WIDTH"),c=n("GET_IMAGE_RESIZE_TARGET_HEIGHT"),d=n("GET_IMAGE_RESIZE_UPSCALE");if(u===null&&c===null)return r(a);let h=u===null?c:u,f=c===null?h:c,p=URL.createObjectURL(l);kh(p,m=>{if(URL.revokeObjectURL(p),!m)return r(a);let{width:g,height:b}=m,E=(a.getMetadata("exif")||{}).orientation||-1;if(E>=5&&E<=8&&([g,b]=[b,g]),g===h&&b===f)return r(a);if(!d){if(s==="cover"){if(g<=h||b<=f)return r(a)}else if(g<=h&&b<=h)return r(a)}a.setMetadata("resize",{mode:s,upscale:d,size:{width:h,height:f}}),r(a)})})),{options:{allowImageResize:[!0,i.BOOLEAN],imageResizeMode:["cover",i.STRING],imageResizeUpscale:[!0,i.BOOLEAN],imageResizeTargetWidth:[null,i.INT],imageResizeTargetHeight:[null,i.INT]}}},Hh=typeof window<"u"&&typeof window.document<"u";Hh&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:Jr}));var eo=Jr;var Wh=e=>/^image/.test(e.type),Yh=e=>e.substr(0,e.lastIndexOf("."))||e,$h={jpeg:"jpg","svg+xml":"svg"},qh=(e,t)=>{let i=Yh(e),a=t.split("/")[1],n=$h[a]||a;return`${i}.${n}`},Xh=e=>/jpeg|png|svg\+xml/.test(e)?e:"image/jpeg",jh=e=>/^image/.test(e.type),Qh={1:()=>[1,0,0,1,0,0],2:e=>[-1,0,0,1,e,0],3:(e,t)=>[-1,0,0,-1,e,t],4:(e,t)=>[1,0,0,-1,0,t],5:()=>[0,1,1,0,0,0],6:(e,t)=>[0,1,-1,0,t,0],7:(e,t)=>[0,-1,-1,0,t,e],8:e=>[0,-1,1,0,0,e]},Zh=(e,t,i)=>(i===-1&&(i=1),Qh[i](e,t)),Ut=(e,t)=>({x:e,y:t}),Kh=(e,t)=>e.x*t.x+e.y*t.y,to=(e,t)=>Ut(e.x-t.x,e.y-t.y),Jh=(e,t)=>Kh(to(e,t),to(e,t)),io=(e,t)=>Math.sqrt(Jh(e,t)),ao=(e,t)=>{let i=e,a=1.5707963267948966,n=t,r=1.5707963267948966-t,o=Math.sin(a),l=Math.sin(n),s=Math.sin(r),u=Math.cos(r),c=i/o,d=c*l,h=c*s;return Ut(u*d,u*h)},ef=(e,t)=>{let i=e.width,a=e.height,n=ao(i,t),r=ao(a,t),o=Ut(e.x+Math.abs(n.x),e.y-Math.abs(n.y)),l=Ut(e.x+e.width+Math.abs(r.y),e.y+Math.abs(r.x)),s=Ut(e.x-Math.abs(r.y),e.y+e.height-Math.abs(r.x));return{width:io(o,l),height:io(o,s)}},oo=(e,t,i=0,a={x:.5,y:.5})=>{let n=a.x>.5?1-a.x:a.x,r=a.y>.5?1-a.y:a.y,o=n*2*e.width,l=r*2*e.height,s=ef(t,i);return Math.max(s.width/o,s.height/l)},lo=(e,t)=>{let i=e.width,a=i*t;a>e.height&&(a=e.height,i=a/t);let n=(e.width-i)*.5,r=(e.height-a)*.5;return{x:n,y:r,width:i,height:a}},no=(e,t,i=1)=>{let a=e.height/e.width,n=1,r=t,o=1,l=a;l>r&&(l=r,o=l/a);let s=Math.max(n/o,r/l),u=e.width/(i*s*o),c=u*t;return{width:u,height:c}},so=e=>{e.width=1,e.height=1,e.getContext("2d").clearRect(0,0,1,1)},ro=e=>e&&(e.horizontal||e.vertical),tf=(e,t,i)=>{if(t<=1&&!ro(i))return e.width=e.naturalWidth,e.height=e.naturalHeight,e;let a=document.createElement("canvas"),n=e.naturalWidth,r=e.naturalHeight,o=t>=5&&t<=8;o?(a.width=r,a.height=n):(a.width=n,a.height=r);let l=a.getContext("2d");if(t&&l.transform.apply(l,Zh(n,r,t)),ro(i)){let s=[1,0,0,1,0,0];(!o&&i.horizontal||o&i.vertical)&&(s[0]=-1,s[4]=n),(!o&&i.vertical||o&&i.horizontal)&&(s[3]=-1,s[5]=r),l.transform(...s)}return l.drawImage(e,0,0,n,r),a},af=(e,t,i={},a={})=>{let{canvasMemoryLimit:n,background:r=null}=a,o=i.zoom||1,l=tf(e,t,i.flip),s={width:l.width,height:l.height},u=i.aspectRatio||s.height/s.width,c=no(s,u,o);if(n){let T=c.width*c.height;if(T>n){let _=Math.sqrt(n)/Math.sqrt(T);s.width=Math.floor(s.width*_),s.height=Math.floor(s.height*_),c=no(s,u,o)}}let d=document.createElement("canvas"),h={x:c.width*.5,y:c.height*.5},f={x:0,y:0,width:c.width,height:c.height,center:h},p=typeof i.scaleToFit>"u"||i.scaleToFit,m=o*oo(s,lo(f,u),i.rotation,p?i.center:{x:.5,y:.5});d.width=Math.round(c.width/m),d.height=Math.round(c.height/m),h.x/=m,h.y/=m;let g={x:h.x-s.width*(i.center?i.center.x:.5),y:h.y-s.height*(i.center?i.center.y:.5)},b=d.getContext("2d");r&&(b.fillStyle=r,b.fillRect(0,0,d.width,d.height)),b.translate(h.x,h.y),b.rotate(i.rotation||0),b.drawImage(l,g.x-h.x,g.y-h.y,s.width,s.height);let E=b.getImageData(0,0,d.width,d.height);return so(d),E},nf=(()=>typeof window<"u"&&typeof window.document<"u")();nf&&(HTMLCanvasElement.prototype.toBlob||Object.defineProperty(HTMLCanvasElement.prototype,"toBlob",{value:function(e,t,i){var a=this.toDataURL(t,i).split(",")[1];setTimeout(function(){for(var n=atob(a),r=n.length,o=new Uint8Array(r),l=0;lnew Promise(a=>{let n=i?i(e):e;Promise.resolve(n).then(r=>{r.toBlob(a,t.type,t.quality)})}),Ti=(e,t)=>kt(e.x*t,e.y*t),Ii=(e,t)=>kt(e.x+t.x,e.y+t.y),co=e=>{let t=Math.sqrt(e.x*e.x+e.y*e.y);return t===0?{x:0,y:0}:kt(e.x/t,e.y/t)},We=(e,t,i)=>{let a=Math.cos(t),n=Math.sin(t),r=kt(e.x-i.x,e.y-i.y);return kt(i.x+a*r.x-n*r.y,i.y+n*r.x+a*r.y)},kt=(e=0,t=0)=>({x:e,y:t}),ue=(e,t,i=1,a)=>{if(typeof e=="string")return parseFloat(e)*i;if(typeof e=="number")return e*(a?t[a]:Math.min(t.width,t.height))},nt=(e,t,i)=>{let a=e.borderStyle||e.lineStyle||"solid",n=e.backgroundColor||e.fontColor||"transparent",r=e.borderColor||e.lineColor||"transparent",o=ue(e.borderWidth||e.lineWidth,t,i),l=e.lineCap||"round",s=e.lineJoin||"round",u=typeof a=="string"?"":a.map(d=>ue(d,t,i)).join(","),c=e.opacity||1;return{"stroke-linecap":l,"stroke-linejoin":s,"stroke-width":o||0,"stroke-dasharray":u,stroke:r,fill:n,opacity:c}},ve=e=>e!=null,_t=(e,t,i=1)=>{let a=ue(e.x,t,i,"width")||ue(e.left,t,i,"width"),n=ue(e.y,t,i,"height")||ue(e.top,t,i,"height"),r=ue(e.width,t,i,"width"),o=ue(e.height,t,i,"height"),l=ue(e.right,t,i,"width"),s=ue(e.bottom,t,i,"height");return ve(n)||(ve(o)&&ve(s)?n=t.height-o-s:n=s),ve(a)||(ve(r)&&ve(l)?a=t.width-r-l:a=l),ve(r)||(ve(a)&&ve(l)?r=t.width-a-l:r=0),ve(o)||(ve(n)&&ve(s)?o=t.height-n-s:o=0),{x:a||0,y:n||0,width:r||0,height:o||0}},of=e=>e.map((t,i)=>`${i===0?"M":"L"} ${t.x} ${t.y}`).join(" "),Ce=(e,t)=>Object.keys(t).forEach(i=>e.setAttribute(i,t[i])),lf="http://www.w3.org/2000/svg",bt=(e,t)=>{let i=document.createElementNS(lf,e);return t&&Ce(i,t),i},sf=e=>Ce(e,{...e.rect,...e.styles}),cf=e=>{let t=e.rect.x+e.rect.width*.5,i=e.rect.y+e.rect.height*.5,a=e.rect.width*.5,n=e.rect.height*.5;return Ce(e,{cx:t,cy:i,rx:a,ry:n,...e.styles})},df={contain:"xMidYMid meet",cover:"xMidYMid slice"},uf=(e,t)=>{Ce(e,{...e.rect,...e.styles,preserveAspectRatio:df[t.fit]||"none"})},hf={left:"start",center:"middle",right:"end"},ff=(e,t,i,a)=>{let n=ue(t.fontSize,i,a),r=t.fontFamily||"sans-serif",o=t.fontWeight||"normal",l=hf[t.textAlign]||"start";Ce(e,{...e.rect,...e.styles,"stroke-width":0,"font-weight":o,"font-size":n,"font-family":r,"text-anchor":l}),e.text!==t.text&&(e.text=t.text,e.textContent=t.text.length?t.text:" ")},pf=(e,t,i,a)=>{Ce(e,{...e.rect,...e.styles,fill:"none"});let n=e.childNodes[0],r=e.childNodes[1],o=e.childNodes[2],l=e.rect,s={x:e.rect.x+e.rect.width,y:e.rect.y+e.rect.height};if(Ce(n,{x1:l.x,y1:l.y,x2:s.x,y2:s.y}),!t.lineDecoration)return;r.style.display="none",o.style.display="none";let u=co({x:s.x-l.x,y:s.y-l.y}),c=ue(.05,i,a);if(t.lineDecoration.indexOf("arrow-begin")!==-1){let d=Ti(u,c),h=Ii(l,d),f=We(l,2,h),p=We(l,-2,h);Ce(r,{style:"display:block;",d:`M${f.x},${f.y} L${l.x},${l.y} L${p.x},${p.y}`})}if(t.lineDecoration.indexOf("arrow-end")!==-1){let d=Ti(u,-c),h=Ii(s,d),f=We(s,2,h),p=We(s,-2,h);Ce(o,{style:"display:block;",d:`M${f.x},${f.y} L${s.x},${s.y} L${p.x},${p.y}`})}},mf=(e,t,i,a)=>{Ce(e,{...e.styles,fill:"none",d:of(t.points.map(n=>({x:ue(n.x,i,a,"width"),y:ue(n.y,i,a,"height")})))})},Ei=e=>t=>bt(e,{id:t.id}),gf=e=>{let t=bt("image",{id:e.id,"stroke-linecap":"round","stroke-linejoin":"round",opacity:"0"});return t.onload=()=>{t.setAttribute("opacity",e.opacity||1)},t.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",e.src),t},Ef=e=>{let t=bt("g",{id:e.id,"stroke-linecap":"round","stroke-linejoin":"round"}),i=bt("line");t.appendChild(i);let a=bt("path");t.appendChild(a);let n=bt("path");return t.appendChild(n),t},Tf={image:gf,rect:Ei("rect"),ellipse:Ei("ellipse"),text:Ei("text"),path:Ei("path"),line:Ef},If={rect:sf,ellipse:cf,image:uf,text:ff,path:mf,line:pf},bf=(e,t)=>Tf[e](t),_f=(e,t,i,a,n)=>{t!=="path"&&(e.rect=_t(i,a,n)),e.styles=nt(i,a,n),If[t](e,i,a,n)},uo=(e,t)=>e[1].zIndex>t[1].zIndex?1:e[1].zIndexnew Promise(n=>{let{background:r=null}=a,o=new FileReader;o.onloadend=()=>{let l=o.result,s=document.createElement("div");s.style.cssText="position:absolute;pointer-events:none;width:0;height:0;visibility:hidden;",s.innerHTML=l;let u=s.querySelector("svg");document.body.appendChild(s);let c=u.getBBox();s.parentNode.removeChild(s);let d=s.querySelector("title"),h=u.getAttribute("viewBox")||"",f=u.getAttribute("width")||"",p=u.getAttribute("height")||"",m=parseFloat(f)||null,g=parseFloat(p)||null,b=(f.match(/[a-z]+/)||[])[0]||"",E=(p.match(/[a-z]+/)||[])[0]||"",T=h.split(" ").map(parseFloat),_=T.length?{x:T[0],y:T[1],width:T[2],height:T[3]}:c,y=m??_.width,I=g??_.height;u.style.overflow="visible",u.setAttribute("width",y),u.setAttribute("height",I);let v="";if(i&&i.length){let j={width:y,height:I};v=i.sort(uo).reduce((de,U)=>{let W=bf(U[0],U[1]);return _f(W,U[0],U[1],j),W.removeAttribute("id"),W.getAttribute("opacity")===1&&W.removeAttribute("opacity"),de+` -`+W.outerHTML+` -`},""),v=` - -${v.replace(/ /g," ")} - -`}let R=t.aspectRatio||I/y,S=y,D=S*R,x=typeof t.scaleToFit>"u"||t.scaleToFit,O=t.center?t.center.x:.5,z=t.center?t.center.y:.5,A=oo({width:y,height:I},lo({width:S,height:D},R),t.rotation,x?{x:O,y:z}:{x:.5,y:.5}),F=t.zoom*A,w=t.rotation*(180/Math.PI),L={x:S*.5,y:D*.5},C={x:L.x-y*O,y:L.y-I*z},P=[`rotate(${w} ${L.x} ${L.y})`,`translate(${L.x} ${L.y})`,`scale(${F})`,`translate(${-L.x} ${-L.y})`,`translate(${C.x} ${C.y})`],V=t.flip&&t.flip.horizontal,G=t.flip&&t.flip.vertical,q=[`scale(${V?-1:1} ${G?-1:1})`,`translate(${V?-y:0} ${G?-I:0})`],X=` - - -${d?d.textContent:""} - - -${u.outerHTML}${v} - - -`;n(X)},o.readAsText(e)}),yf=e=>{let t;try{t=new ImageData(e.width,e.height)}catch{t=document.createElement("canvas").getContext("2d").createImageData(e.width,e.height)}return t.data.set(e.data),t},Sf=()=>{let e={resize:c,filter:u},t=(d,h)=>(d.forEach(f=>{h=e[f.type](h,f.data)}),h),i=(d,h)=>{let f=d.transforms,p=null;if(f.forEach(m=>{m.type==="filter"&&(p=m)}),p){let m=null;f.forEach(g=>{g.type==="resize"&&(m=g)}),m&&(m.data.matrix=p.data,f=f.filter(g=>g.type!=="filter"))}h(t(f,d.imageData))};self.onmessage=d=>{i(d.data.message,h=>{self.postMessage({id:d.data.id,message:h},[h.data.buffer])})};let a=1,n=1,r=1;function o(d,h,f){let p=h[d]/255,m=h[d+1]/255,g=h[d+2]/255,b=h[d+3]/255,E=p*f[0]+m*f[1]+g*f[2]+b*f[3]+f[4],T=p*f[5]+m*f[6]+g*f[7]+b*f[8]+f[9],_=p*f[10]+m*f[11]+g*f[12]+b*f[13]+f[14],y=p*f[15]+m*f[16]+g*f[17]+b*f[18]+f[19],I=Math.max(0,E*y)+a*(1-y),v=Math.max(0,T*y)+n*(1-y),R=Math.max(0,_*y)+r*(1-y);h[d]=Math.max(0,Math.min(1,I))*255,h[d+1]=Math.max(0,Math.min(1,v))*255,h[d+2]=Math.max(0,Math.min(1,R))*255}let l=self.JSON.stringify([1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0]);function s(d){return self.JSON.stringify(d||[])===l}function u(d,h){if(!h||s(h))return d;let f=d.data,p=f.length,m=h[0],g=h[1],b=h[2],E=h[3],T=h[4],_=h[5],y=h[6],I=h[7],v=h[8],R=h[9],S=h[10],D=h[11],x=h[12],O=h[13],z=h[14],A=h[15],F=h[16],w=h[17],L=h[18],C=h[19],P=0,V=0,G=0,q=0,X=0,j=0,de=0,U=0,W=0,$=0,oe=0,N=0;for(;P1&&p===!1)return u(d,b);m=d.width*A,g=d.height*A}let E=d.width,T=d.height,_=Math.round(m),y=Math.round(g),I=d.data,v=new Uint8ClampedArray(_*y*4),R=E/_,S=T/y,D=Math.ceil(R*.5),x=Math.ceil(S*.5);for(let O=0;O=-1&&oe<=1&&(F=2*oe*oe*oe-3*oe*oe+1,F>0)){$=4*(W+X*E);let N=I[$+3];G+=F*N,L+=F,N<255&&(F=F*N/250),C+=F*I[$],P+=F*I[$+1],V+=F*I[$+2],w+=F}}}v[A]=C/w,v[A+1]=P/w,v[A+2]=V/w,v[A+3]=G/L,b&&o(A,v,b)}return{data:v,width:_,height:y}}},wf=(e,t)=>{if(e.getUint32(t+4,!1)!==1165519206)return;t+=4;let i=e.getUint16(t+=6,!1)===18761;t+=e.getUint32(t+4,i);let a=e.getUint16(t,i);t+=2;for(let n=0;n{let t=new DataView(e);if(t.getUint16(0)!==65496)return null;let i=2,a,n,r=!1;for(;i=65504&&a<=65519||a===65534)||(r||(r=wf(t,i,n)),i+n>t.byteLength)));)i+=n;return e.slice(0,i)},Af=e=>new Promise(t=>{let i=new FileReader;i.onload=()=>t(vf(i.result)||null),i.readAsArrayBuffer(e.slice(0,256*1024))}),Lf=()=>window.BlobBuilder=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,Mf=(e,t)=>{let i=Lf();if(i){let a=new i;return a.append(e),a.getBlob(t)}return new Blob([e],{type:t})},Of=()=>Math.random().toString(36).substr(2,9),xf=e=>{let t=new Blob(["(",e.toString(),")()"],{type:"application/javascript"}),i=URL.createObjectURL(t),a=new Worker(i),n=[];return{transfer:()=>{},post:(r,o,l)=>{let s=Of();n[s]=o,a.onmessage=u=>{let c=n[u.data.id];c&&(c(u.data.message),delete n[u.data.id])},a.postMessage({id:s,message:r},l)},terminate:()=>{a.terminate(),URL.revokeObjectURL(i)}}},Df=e=>new Promise((t,i)=>{let a=new Image;a.onload=()=>{t(a)},a.onerror=n=>{i(n)},a.src=e}),Pf=e=>e.reduce((t,i)=>t.then(a=>i().then(Array.prototype.concat.bind(a))),Promise.resolve([])),Ff=(e,t)=>new Promise(i=>{let a={width:e.width,height:e.height},n=e.getContext("2d"),r=t.sort(uo).map(o=>()=>new Promise(l=>{Uf[o[0]](n,a,o[1],l)&&l()}));Pf(r).then(()=>i(e))}),Rt=(e,t)=>{e.beginPath(),e.lineCap=t["stroke-linecap"],e.lineJoin=t["stroke-linejoin"],e.lineWidth=t["stroke-width"],t["stroke-dasharray"].length&&e.setLineDash(t["stroke-dasharray"].split(",")),e.fillStyle=t.fill,e.strokeStyle=t.stroke,e.globalAlpha=t.opacity||1},yt=e=>{e.fill(),e.stroke(),e.globalAlpha=1},Cf=(e,t,i)=>{let a=_t(i,t),n=nt(i,t);return Rt(e,n),e.rect(a.x,a.y,a.width,a.height),yt(e,n),!0},zf=(e,t,i)=>{let a=_t(i,t),n=nt(i,t);Rt(e,n);let r=a.x,o=a.y,l=a.width,s=a.height,u=.5522848,c=l/2*u,d=s/2*u,h=r+l,f=o+s,p=r+l/2,m=o+s/2;return e.moveTo(r,m),e.bezierCurveTo(r,m-d,p-c,o,p,o),e.bezierCurveTo(p+c,o,h,m-d,h,m),e.bezierCurveTo(h,m+d,p+c,f,p,f),e.bezierCurveTo(p-c,f,r,m+d,r,m),yt(e,n),!0},Nf=(e,t,i,a)=>{let n=_t(i,t),r=nt(i,t);Rt(e,r);let o=new Image;new URL(i.src,window.location.href).origin!==window.location.origin&&(o.crossOrigin=""),o.onload=()=>{if(i.fit==="cover"){let s=n.width/n.height,u=s>1?o.width:o.height*s,c=s>1?o.width/s:o.height,d=o.width*.5-u*.5,h=o.height*.5-c*.5;e.drawImage(o,d,h,u,c,n.x,n.y,n.width,n.height)}else if(i.fit==="contain"){let s=Math.min(n.width/o.width,n.height/o.height),u=s*o.width,c=s*o.height,d=n.x+n.width*.5-u*.5,h=n.y+n.height*.5-c*.5;e.drawImage(o,0,0,o.width,o.height,d,h,u,c)}else e.drawImage(o,0,0,o.width,o.height,n.x,n.y,n.width,n.height);yt(e,r),a()},o.src=i.src},Bf=(e,t,i)=>{let a=_t(i,t),n=nt(i,t);Rt(e,n);let r=ue(i.fontSize,t),o=i.fontFamily||"sans-serif",l=i.fontWeight||"normal",s=i.textAlign||"left";return e.font=`${l} ${r}px ${o}`,e.textAlign=s,e.fillText(i.text,a.x,a.y),yt(e,n),!0},Gf=(e,t,i)=>{let a=nt(i,t);Rt(e,a),e.beginPath();let n=i.points.map(o=>({x:ue(o.x,t,1,"width"),y:ue(o.y,t,1,"height")}));e.moveTo(n[0].x,n[0].y);let r=n.length;for(let o=1;o{let a=_t(i,t),n=nt(i,t);Rt(e,n),e.beginPath();let r={x:a.x,y:a.y},o={x:a.x+a.width,y:a.y+a.height};e.moveTo(r.x,r.y),e.lineTo(o.x,o.y);let l=co({x:o.x-r.x,y:o.y-r.y}),s=.04*Math.min(t.width,t.height);if(i.lineDecoration.indexOf("arrow-begin")!==-1){let u=Ti(l,s),c=Ii(r,u),d=We(r,2,c),h=We(r,-2,c);e.moveTo(d.x,d.y),e.lineTo(r.x,r.y),e.lineTo(h.x,h.y)}if(i.lineDecoration.indexOf("arrow-end")!==-1){let u=Ti(l,-s),c=Ii(o,u),d=We(o,2,c),h=We(o,-2,c);e.moveTo(d.x,d.y),e.lineTo(o.x,o.y),e.lineTo(h.x,h.y)}return yt(e,n),!0},Uf={rect:Cf,ellipse:zf,image:Nf,text:Bf,line:Vf,path:Gf},kf=e=>{let t=document.createElement("canvas");return t.width=e.width,t.height=e.height,t.getContext("2d").putImageData(e,0,0),t},Hf=(e,t,i={})=>new Promise((a,n)=>{if(!e||!jh(e))return n({status:"not an image file",file:e});let{stripImageHead:r,beforeCreateBlob:o,afterCreateBlob:l,canvasMemoryLimit:s}=i,{crop:u,size:c,filter:d,markup:h,output:f}=t,p=t.image&&t.image.orientation?Math.max(1,Math.min(8,t.image.orientation)):null,m=f&&f.quality,g=m===null?null:m/100,b=f&&f.type||null,E=f&&f.background||null,T=[];c&&(typeof c.width=="number"||typeof c.height=="number")&&T.push({type:"resize",data:c}),d&&d.length===20&&T.push({type:"filter",data:d});let _=v=>{let R=l?l(v):v;Promise.resolve(R).then(a)},y=(v,R)=>{let S=kf(v),D=h.length?Ff(S,h):S;Promise.resolve(D).then(x=>{rf(x,R,o).then(O=>{if(so(x),r)return _(O);Af(e).then(z=>{z!==null&&(O=new Blob([z,O.slice(20)],{type:O.type})),_(O)})}).catch(n)})};if(/svg/.test(e.type)&&b===null)return Rf(e,u,h,{background:E}).then(v=>{a(Mf(v,"image/svg+xml"))});let I=URL.createObjectURL(e);Df(I).then(v=>{URL.revokeObjectURL(I);let R=af(v,p,u,{canvasMemoryLimit:s,background:E}),S={quality:g,type:b||e.type};if(!T.length)return y(R,S);let D=xf(Sf);D.post({transforms:T,imageData:R},x=>{y(yf(x),S),D.terminate()},[R.data.buffer])}).catch(n)}),Wf=["x","y","left","top","right","bottom","width","height"],Yf=e=>typeof e=="string"&&/%/.test(e)?parseFloat(e)/100:e,$f=e=>{let[t,i]=e,a=i.points?{}:Wf.reduce((n,r)=>(n[r]=Yf(i[r]),n),{});return[t,{zIndex:0,...i,...a}]},qf=e=>new Promise((t,i)=>{let a=new Image;a.src=URL.createObjectURL(e);let n=()=>{let o=a.naturalWidth,l=a.naturalHeight;o&&l&&(URL.revokeObjectURL(a.src),clearInterval(r),t({width:o,height:l}))};a.onerror=o=>{URL.revokeObjectURL(a.src),clearInterval(r),i(o)};let r=setInterval(n,1);n()});typeof window<"u"&&typeof window.document<"u"&&(HTMLCanvasElement.prototype.toBlob||Object.defineProperty(HTMLCanvasElement.prototype,"toBlob",{value:function(e,t,i){let a=this;setTimeout(()=>{let n=a.toDataURL(t,i).split(",")[1],r=atob(n),o=r.length,l=new Uint8Array(o);for(;o--;)l[o]=r.charCodeAt(o);e(new Blob([l],{type:t||"image/png"}))})}}));var ba=typeof window<"u"&&typeof window.document<"u",Xf=ba&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,ho=({addFilter:e,utils:t})=>{let{Type:i,forin:a,getFileFromBlob:n,isFile:r}=t,o=["crop","resize","filter","markup","output"],l=c=>(d,h,f)=>d(h,c?c(f):f),s=c=>c.aspectRatio===null&&c.rotation===0&&c.zoom===1&&c.center&&c.center.x===.5&&c.center.y===.5&&c.flip&&c.flip.horizontal===!1&&c.flip.vertical===!1;e("SHOULD_PREPARE_OUTPUT",(c,{query:d})=>new Promise(h=>{h(!d("IS_ASYNC"))}));let u=(c,d,h)=>new Promise(f=>{if(!c("GET_ALLOW_IMAGE_TRANSFORM")||h.archived||!r(d)||!Wh(d))return f(!1);qf(d).then(()=>{let p=c("GET_IMAGE_TRANSFORM_IMAGE_FILTER");if(p){let m=p(d);if(m==null)return handleRevert(!0);if(typeof m=="boolean")return f(m);if(typeof m.then=="function")return m.then(f)}f(!0)}).catch(p=>{f(!1)})});return e("DID_CREATE_ITEM",(c,{query:d,dispatch:h})=>{d("GET_ALLOW_IMAGE_TRANSFORM")&&c.extend("requestPrepare",()=>new Promise((f,p)=>{h("REQUEST_PREPARE_OUTPUT",{query:c.id,item:c,success:f,failure:p},!0)}))}),e("PREPARE_OUTPUT",(c,{query:d,item:h})=>new Promise(f=>{u(d,c,h).then(p=>{if(!p)return f(c);let m=[];d("GET_IMAGE_TRANSFORM_VARIANTS_INCLUDE_ORIGINAL")&&m.push(()=>new Promise(R=>{R({name:d("GET_IMAGE_TRANSFORM_VARIANTS_ORIGINAL_NAME"),file:c})})),d("GET_IMAGE_TRANSFORM_VARIANTS_INCLUDE_DEFAULT")&&m.push((R,S,D)=>new Promise(x=>{R(S,D).then(O=>x({name:d("GET_IMAGE_TRANSFORM_VARIANTS_DEFAULT_NAME"),file:O}))}));let g=d("GET_IMAGE_TRANSFORM_VARIANTS")||{};a(g,(R,S)=>{let D=l(S);m.push((x,O,z)=>new Promise(A=>{D(x,O,z).then(F=>A({name:R,file:F}))}))});let b=d("GET_IMAGE_TRANSFORM_OUTPUT_QUALITY"),E=d("GET_IMAGE_TRANSFORM_OUTPUT_QUALITY_MODE"),T=b===null?null:b/100,_=d("GET_IMAGE_TRANSFORM_OUTPUT_MIME_TYPE"),y=d("GET_IMAGE_TRANSFORM_CLIENT_TRANSFORMS")||o;h.setMetadata("output",{type:_,quality:T,client:y},!0);let I=(R,S)=>new Promise((D,x)=>{let O={...S};Object.keys(O).filter(G=>G!=="exif").forEach(G=>{y.indexOf(G)===-1&&delete O[G]});let{resize:z,exif:A,output:F,crop:w,filter:L,markup:C}=O,P={image:{orientation:A?A.orientation:null},output:F&&(F.type||typeof F.quality=="number"||F.background)?{type:F.type,quality:typeof F.quality=="number"?F.quality*100:null,background:F.background||d("GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR")||null}:void 0,size:z&&(z.size.width||z.size.height)?{mode:z.mode,upscale:z.upscale,...z.size}:void 0,crop:w&&!s(w)?{...w}:void 0,markup:C&&C.length?C.map($f):[],filter:L};if(P.output){let G=F.type?F.type!==R.type:!1,q=/\/jpe?g$/.test(R.type),X=F.quality!==null?q&&E==="always":!1;if(!!!(P.size||P.crop||P.filter||G||X))return D(R)}let V={beforeCreateBlob:d("GET_IMAGE_TRANSFORM_BEFORE_CREATE_BLOB"),afterCreateBlob:d("GET_IMAGE_TRANSFORM_AFTER_CREATE_BLOB"),canvasMemoryLimit:d("GET_IMAGE_TRANSFORM_CANVAS_MEMORY_LIMIT"),stripImageHead:d("GET_IMAGE_TRANSFORM_OUTPUT_STRIP_IMAGE_HEAD")};Hf(R,P,V).then(G=>{let q=n(G,qh(R.name,Xh(G.type)));D(q)}).catch(x)}),v=m.map(R=>R(I,c,h.getMetadata()));Promise.all(v).then(R=>{f(R.length===1&&R[0].name===null?R[0].file:R)})})})),{options:{allowImageTransform:[!0,i.BOOLEAN],imageTransformImageFilter:[null,i.FUNCTION],imageTransformOutputMimeType:[null,i.STRING],imageTransformOutputQuality:[null,i.INT],imageTransformOutputStripImageHead:[!0,i.BOOLEAN],imageTransformClientTransforms:[null,i.ARRAY],imageTransformOutputQualityMode:["always",i.STRING],imageTransformVariants:[null,i.OBJECT],imageTransformVariantsIncludeDefault:[!0,i.BOOLEAN],imageTransformVariantsDefaultName:[null,i.STRING],imageTransformVariantsIncludeOriginal:[!1,i.BOOLEAN],imageTransformVariantsOriginalName:["original_",i.STRING],imageTransformBeforeCreateBlob:[null,i.FUNCTION],imageTransformAfterCreateBlob:[null,i.FUNCTION],imageTransformCanvasMemoryLimit:[ba&&Xf?4096*4096:null,i.INT],imageTransformCanvasBackgroundColor:[null,i.STRING]}}};ba&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:ho}));var fo=ho;var _a=e=>/^video/.test(e.type),Ht=e=>/^audio/.test(e.type),Ra=class{constructor(t,i){this.mediaEl=t,this.audioElems=i,this.onplayhead=!1,this.duration=0,this.timelineWidth=this.audioElems.timeline.offsetWidth-this.audioElems.playhead.offsetWidth,this.moveplayheadFn=this.moveplayhead.bind(this),this.registerListeners()}registerListeners(){this.mediaEl.addEventListener("timeupdate",this.timeUpdate.bind(this),!1),this.mediaEl.addEventListener("canplaythrough",()=>this.duration=this.mediaEl.duration,!1),this.audioElems.timeline.addEventListener("click",this.timelineClicked.bind(this),!1),this.audioElems.button.addEventListener("click",this.play.bind(this)),this.audioElems.playhead.addEventListener("mousedown",this.mouseDown.bind(this),!1),window.addEventListener("mouseup",this.mouseUp.bind(this),!1)}play(){this.mediaEl.paused?this.mediaEl.play():this.mediaEl.pause(),this.audioElems.button.classList.toggle("play"),this.audioElems.button.classList.toggle("pause")}timeUpdate(){let t=this.mediaEl.currentTime/this.duration*100;this.audioElems.playhead.style.marginLeft=t+"%",this.mediaEl.currentTime===this.duration&&(this.audioElems.button.classList.toggle("play"),this.audioElems.button.classList.toggle("pause"))}moveplayhead(t){let i=t.clientX-this.getPosition(this.audioElems.timeline);i>=0&&i<=this.timelineWidth&&(this.audioElems.playhead.style.marginLeft=i+"px"),i<0&&(this.audioElems.playhead.style.marginLeft="0px"),i>this.timelineWidth&&(this.audioElems.playhead.style.marginLeft=this.timelineWidth-4+"px")}timelineClicked(t){this.moveplayhead(t),this.mediaEl.currentTime=this.duration*this.clickPercent(t)}mouseDown(){this.onplayhead=!0,window.addEventListener("mousemove",this.moveplayheadFn,!0),this.mediaEl.removeEventListener("timeupdate",this.timeUpdate.bind(this),!1)}mouseUp(t){window.removeEventListener("mousemove",this.moveplayheadFn,!0),this.onplayhead==!0&&(this.moveplayhead(t),this.mediaEl.currentTime=this.duration*this.clickPercent(t),this.mediaEl.addEventListener("timeupdate",this.timeUpdate.bind(this),!1)),this.onplayhead=!1}clickPercent(t){return(t.clientX-this.getPosition(this.audioElems.timeline))/this.timelineWidth}getPosition(t){return t.getBoundingClientRect().left}},jf=e=>e.utils.createView({name:"media-preview",tag:"div",ignoreRect:!0,create:({root:t,props:i})=>{let{id:a}=i,n=t.query("GET_ITEM",{id:i.id}),r=Ht(n.file)?"audio":"video";if(t.ref.media=document.createElement(r),t.ref.media.setAttribute("controls",!0),t.element.appendChild(t.ref.media),Ht(n.file)){let o=document.createDocumentFragment();t.ref.audio=[],t.ref.audio.container=document.createElement("div"),t.ref.audio.button=document.createElement("span"),t.ref.audio.timeline=document.createElement("div"),t.ref.audio.playhead=document.createElement("div"),t.ref.audio.container.className="audioplayer",t.ref.audio.button.className="playpausebtn play",t.ref.audio.timeline.className="timeline",t.ref.audio.playhead.className="playhead",t.ref.audio.timeline.appendChild(t.ref.audio.playhead),t.ref.audio.container.appendChild(t.ref.audio.button),t.ref.audio.container.appendChild(t.ref.audio.timeline),o.appendChild(t.ref.audio.container),t.element.appendChild(o)}},write:e.utils.createRoute({DID_MEDIA_PREVIEW_LOAD:({root:t,props:i})=>{let{id:a}=i,n=t.query("GET_ITEM",{id:i.id});if(!n)return;let r=window.URL||window.webkitURL,o=new Blob([n.file],{type:n.file.type});t.ref.media.type=n.file.type,t.ref.media.src=n.file.mock&&n.file.url||r.createObjectURL(o),Ht(n.file)&&new Ra(t.ref.media,t.ref.audio),t.ref.media.addEventListener("loadeddata",()=>{let l=75;if(_a(n.file)){let s=t.ref.media.offsetWidth,u=t.ref.media.videoWidth/s;l=t.ref.media.videoHeight/u}t.dispatch("DID_UPDATE_PANEL_HEIGHT",{id:i.id,height:l})},!1)}})}),Qf=e=>{let t=({root:a,props:n})=>{let{id:r}=n;a.query("GET_ITEM",r)&&a.dispatch("DID_MEDIA_PREVIEW_LOAD",{id:r})},i=({root:a,props:n})=>{let r=jf(e);a.ref.media=a.appendChildView(a.createChildView(r,{id:n.id}))};return e.utils.createView({name:"media-preview-wrapper",create:i,write:e.utils.createRoute({DID_MEDIA_PREVIEW_CONTAINER_CREATE:t})})},ya=e=>{let{addFilter:t,utils:i}=e,{Type:a,createRoute:n}=i,r=Qf(e);return t("CREATE_VIEW",o=>{let{is:l,view:s,query:u}=o;if(!l("file"))return;let c=({root:d,props:h})=>{let{id:f}=h,p=u("GET_ITEM",f),m=u("GET_ALLOW_VIDEO_PREVIEW"),g=u("GET_ALLOW_AUDIO_PREVIEW");!p||p.archived||(!_a(p.file)||!m)&&(!Ht(p.file)||!g)||(d.ref.mediaPreview=s.appendChildView(s.createChildView(r,{id:f})),d.dispatch("DID_MEDIA_PREVIEW_CONTAINER_CREATE",{id:f}))};s.registerWriter(n({DID_LOAD_ITEM:c},({root:d,props:h})=>{let{id:f}=h,p=u("GET_ITEM",f),m=d.query("GET_ALLOW_VIDEO_PREVIEW"),g=d.query("GET_ALLOW_AUDIO_PREVIEW");!p||(!_a(p.file)||!m)&&(!Ht(p.file)||!g)||d.rect.element.hidden}))}),{options:{allowVideoPreview:[!0,a.BOOLEAN],allowAudioPreview:[!0,a.BOOLEAN]}}},Zf=typeof window<"u"&&typeof window.document<"u";Zf&&document.dispatchEvent(new CustomEvent("FilePond:pluginloaded",{detail:ya}));var po={labelIdle:'\u0627\u0633\u062D\u0628 \u0648 \u0627\u062F\u0631\u062C \u0645\u0644\u0641\u0627\u062A\u0643 \u0623\u0648 \u062A\u0635\u0641\u062D ',labelInvalidField:"\u0627\u0644\u062D\u0642\u0644 \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0645\u0644\u0641\u0627\u062A \u063A\u064A\u0631 \u0635\u0627\u0644\u062D\u0629",labelFileWaitingForSize:"\u0628\u0627\u0646\u062A\u0638\u0627\u0631 \u0627\u0644\u062D\u062C\u0645",labelFileSizeNotAvailable:"\u0627\u0644\u062D\u062C\u0645 \u063A\u064A\u0631 \u0645\u062A\u0627\u062D",labelFileLoading:"\u0628\u0627\u0644\u0625\u0646\u062A\u0638\u0627\u0631",labelFileLoadError:"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u062A\u062D\u0645\u064A\u0644",labelFileProcessing:"\u064A\u062A\u0645 \u0627\u0644\u0631\u0641\u0639",labelFileProcessingComplete:"\u062A\u0645 \u0627\u0644\u0631\u0641\u0639",labelFileProcessingAborted:"\u062A\u0645 \u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u0631\u0641\u0639",labelFileProcessingError:"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u0631\u0641\u0639",labelFileProcessingRevertError:"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u062A\u0631\u0627\u062C\u0639",labelFileRemoveError:"\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0627\u0644\u062D\u0630\u0641",labelTapToCancel:"\u0627\u0646\u0642\u0631 \u0644\u0644\u0625\u0644\u063A\u0627\u0621",labelTapToRetry:"\u0627\u0646\u0642\u0631 \u0644\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629",labelTapToUndo:"\u0627\u0646\u0642\u0631 \u0644\u0644\u062A\u0631\u0627\u062C\u0639",labelButtonRemoveItem:"\u0645\u0633\u062D",labelButtonAbortItemLoad:"\u0625\u0644\u063A\u0627\u0621",labelButtonRetryItemLoad:"\u0625\u0639\u0627\u062F\u0629",labelButtonAbortItemProcessing:"\u0625\u0644\u063A\u0627\u0621",labelButtonUndoItemProcessing:"\u062A\u0631\u0627\u062C\u0639",labelButtonRetryItemProcessing:"\u0625\u0639\u0627\u062F\u0629",labelButtonProcessItem:"\u0631\u0641\u0639",labelMaxFileSizeExceeded:"\u0627\u0644\u0645\u0644\u0641 \u0643\u0628\u064A\u0631 \u062C\u062F\u0627",labelMaxFileSize:"\u062D\u062C\u0645 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0623\u0642\u0635\u0649: {filesize}",labelMaxTotalFileSizeExceeded:"\u062A\u0645 \u062A\u062C\u0627\u0648\u0632 \u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0644\u062D\u062C\u0645 \u0627\u0644\u0625\u062C\u0645\u0627\u0644\u064A",labelMaxTotalFileSize:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u062D\u062C\u0645 \u0627\u0644\u0645\u0644\u0641: {filesize}",labelFileTypeNotAllowed:"\u0645\u0644\u0641 \u0645\u0646 \u0646\u0648\u0639 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D",fileValidateTypeLabelExpectedTypes:"\u062A\u062A\u0648\u0642\u0639 {allButLastType} \u0645\u0646 {lastType}",imageValidateSizeLabelFormatError:"\u0646\u0648\u0639 \u0627\u0644\u0635\u0648\u0631\u0629 \u063A\u064A\u0631 \u0645\u062F\u0639\u0648\u0645",imageValidateSizeLabelImageSizeTooSmall:"\u0627\u0644\u0635\u0648\u0631\u0629 \u0635\u063A\u064A\u0631 \u062C\u062F\u0627",imageValidateSizeLabelImageSizeTooBig:"\u0627\u0644\u0635\u0648\u0631\u0629 \u0643\u0628\u064A\u0631\u0629 \u062C\u062F\u0627",imageValidateSizeLabelExpectedMinSize:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u062F\u0646\u0649 \u0644\u0644\u0623\u0628\u0639\u0627\u062F \u0647\u0648: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0644\u0623\u0628\u0639\u0627\u062F \u0647\u0648: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u0627\u0644\u062F\u0642\u0629 \u0636\u0639\u064A\u0641\u0629 \u062C\u062F\u0627",imageValidateSizeLabelImageResolutionTooHigh:"\u0627\u0644\u062F\u0642\u0629 \u0645\u0631\u062A\u0641\u0639\u0629 \u062C\u062F\u0627",imageValidateSizeLabelExpectedMinResolution:"\u0623\u0642\u0644 \u062F\u0642\u0629: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u0623\u0642\u0635\u0649 \u062F\u0642\u0629: {maxResolution}"};var mo={labelIdle:'P\u0159et\xE1hn\u011Bte soubor sem (drag&drop) nebo Vyhledat ',labelInvalidField:"Pole obsahuje chybn\xE9 soubory",labelFileWaitingForSize:"Zji\u0161\u0165uje se velikost",labelFileSizeNotAvailable:"Velikost nen\xED zn\xE1m\xE1",labelFileLoading:"P\u0159en\xE1\u0161\xED se",labelFileLoadError:"Chyba p\u0159i p\u0159enosu",labelFileProcessing:"Prob\xEDh\xE1 upload",labelFileProcessingComplete:"Upload dokon\u010Den",labelFileProcessingAborted:"Upload stornov\xE1n",labelFileProcessingError:"Chyba p\u0159i uploadu",labelFileProcessingRevertError:"Chyba p\u0159i obnov\u011B",labelFileRemoveError:"Chyba p\u0159i odstran\u011Bn\xED",labelTapToCancel:"klepn\u011Bte pro storno",labelTapToRetry:"klepn\u011Bte pro opakov\xE1n\xED",labelTapToUndo:"klepn\u011Bte pro vr\xE1cen\xED",labelButtonRemoveItem:"Odstranit",labelButtonAbortItemLoad:"Storno",labelButtonRetryItemLoad:"Opakovat",labelButtonAbortItemProcessing:"Zp\u011Bt",labelButtonUndoItemProcessing:"Vr\xE1tit",labelButtonRetryItemProcessing:"Opakovat",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"Soubor je p\u0159\xEDli\u0161 velk\xFD",labelMaxFileSize:"Nejv\u011Bt\u0161\xED velikost souboru je {filesize}",labelMaxTotalFileSizeExceeded:"P\u0159ekro\u010Dena maxim\xE1ln\xED celkov\xE1 velikost souboru",labelMaxTotalFileSize:"Maxim\xE1ln\xED celkov\xE1 velikost souboru je {filesize}",labelFileTypeNotAllowed:"Soubor je nespr\xE1vn\xE9ho typu",fileValidateTypeLabelExpectedTypes:"O\u010Dek\xE1v\xE1 se {allButLastType} nebo {lastType}",imageValidateSizeLabelFormatError:"Obr\xE1zek tohoto typu nen\xED podporov\xE1n",imageValidateSizeLabelImageSizeTooSmall:"Obr\xE1zek je p\u0159\xEDli\u0161 mal\xFD",imageValidateSizeLabelImageSizeTooBig:"Obr\xE1zek je p\u0159\xEDli\u0161 velk\xFD",imageValidateSizeLabelExpectedMinSize:"Minim\xE1ln\xED rozm\u011Br je {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maxim\xE1ln\xED rozm\u011Br je {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Rozli\u0161en\xED je p\u0159\xEDli\u0161 mal\xE9",imageValidateSizeLabelImageResolutionTooHigh:"Rozli\u0161en\xED je p\u0159\xEDli\u0161 velk\xE9",imageValidateSizeLabelExpectedMinResolution:"Minim\xE1ln\xED rozli\u0161en\xED je {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maxim\xE1ln\xED rozli\u0161en\xED je {maxResolution}"};var go={labelIdle:'Tr\xE6k & slip filer eller Gennemse ',labelInvalidField:"Felt indeholder ugyldige filer",labelFileWaitingForSize:"Venter p\xE5 st\xF8rrelse",labelFileSizeNotAvailable:"St\xF8rrelse ikke tilg\xE6ngelig",labelFileLoading:"Loader",labelFileLoadError:"Load fejlede",labelFileProcessing:"Uploader",labelFileProcessingComplete:"Upload f\xE6rdig",labelFileProcessingAborted:"Upload annulleret",labelFileProcessingError:"Upload fejlede",labelFileProcessingRevertError:"Fortryd fejlede",labelFileRemoveError:"Fjern fejlede",labelTapToCancel:"tryk for at annullere",labelTapToRetry:"tryk for at pr\xF8ve igen",labelTapToUndo:"tryk for at fortryde",labelButtonRemoveItem:"Fjern",labelButtonAbortItemLoad:"Annuller",labelButtonRetryItemLoad:"Fors\xF8g igen",labelButtonAbortItemProcessing:"Annuller",labelButtonUndoItemProcessing:"Fortryd",labelButtonRetryItemProcessing:"Pr\xF8v igen",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"Filen er for stor",labelMaxFileSize:"Maksimal filst\xF8rrelse er {filesize}",labelMaxTotalFileSizeExceeded:"Maksimal totalst\xF8rrelse overskredet",labelMaxTotalFileSize:"Maksimal total filst\xF8rrelse er {filesize}",labelFileTypeNotAllowed:"Ugyldig filtype",fileValidateTypeLabelExpectedTypes:"Forventer {allButLastType} eller {lastType}",imageValidateSizeLabelFormatError:"Ugyldigt format",imageValidateSizeLabelImageSizeTooSmall:"Billedet er for lille",imageValidateSizeLabelImageSizeTooBig:"Billedet er for stort",imageValidateSizeLabelExpectedMinSize:"Minimum st\xF8rrelse er {minBredde} \xD7 {minH\xF8jde}",imageValidateSizeLabelExpectedMaxSize:"Maksimal st\xF8rrelse er {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"For lav opl\xF8sning",imageValidateSizeLabelImageResolutionTooHigh:"For h\xF8j opl\xF8sning",imageValidateSizeLabelExpectedMinResolution:"Minimum opl\xF8sning er {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maksimal opl\xF8sning er {maxResolution}"};var Eo={labelIdle:'Dateien ablegen oder ausw\xE4hlen ',labelInvalidField:"Feld beinhaltet ung\xFCltige Dateien",labelFileWaitingForSize:"Dateigr\xF6\xDFe berechnen",labelFileSizeNotAvailable:"Dateigr\xF6\xDFe nicht verf\xFCgbar",labelFileLoading:"Laden",labelFileLoadError:"Fehler beim Laden",labelFileProcessing:"Upload l\xE4uft",labelFileProcessingComplete:"Upload abgeschlossen",labelFileProcessingAborted:"Upload abgebrochen",labelFileProcessingError:"Fehler beim Upload",labelFileProcessingRevertError:"Fehler beim Wiederherstellen",labelFileRemoveError:"Fehler beim L\xF6schen",labelTapToCancel:"abbrechen",labelTapToRetry:"erneut versuchen",labelTapToUndo:"r\xFCckg\xE4ngig",labelButtonRemoveItem:"Entfernen",labelButtonAbortItemLoad:"Verwerfen",labelButtonRetryItemLoad:"Erneut versuchen",labelButtonAbortItemProcessing:"Abbrechen",labelButtonUndoItemProcessing:"R\xFCckg\xE4ngig",labelButtonRetryItemProcessing:"Erneut versuchen",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"Datei ist zu gro\xDF",labelMaxFileSize:"Maximale Dateigr\xF6\xDFe: {filesize}",labelMaxTotalFileSizeExceeded:"Maximale gesamte Dateigr\xF6\xDFe \xFCberschritten",labelMaxTotalFileSize:"Maximale gesamte Dateigr\xF6\xDFe: {filesize}",labelFileTypeNotAllowed:"Dateityp ung\xFCltig",fileValidateTypeLabelExpectedTypes:"Erwartet {allButLastType} oder {lastType}",imageValidateSizeLabelFormatError:"Bildtyp nicht unterst\xFCtzt",imageValidateSizeLabelImageSizeTooSmall:"Bild ist zu klein",imageValidateSizeLabelImageSizeTooBig:"Bild ist zu gro\xDF",imageValidateSizeLabelExpectedMinSize:"Mindestgr\xF6\xDFe: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximale Gr\xF6\xDFe: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Aufl\xF6sung ist zu niedrig",imageValidateSizeLabelImageResolutionTooHigh:"Aufl\xF6sung ist zu hoch",imageValidateSizeLabelExpectedMinResolution:"Mindestaufl\xF6sung: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maximale Aufl\xF6sung: {maxResolution}"};var To={labelIdle:'Drag & Drop your files or Browse ',labelInvalidField:"Field contains invalid files",labelFileWaitingForSize:"Waiting for size",labelFileSizeNotAvailable:"Size not available",labelFileLoading:"Loading",labelFileLoadError:"Error during load",labelFileProcessing:"Uploading",labelFileProcessingComplete:"Upload complete",labelFileProcessingAborted:"Upload cancelled",labelFileProcessingError:"Error during upload",labelFileProcessingRevertError:"Error during revert",labelFileRemoveError:"Error during remove",labelTapToCancel:"tap to cancel",labelTapToRetry:"tap to retry",labelTapToUndo:"tap to undo",labelButtonRemoveItem:"Remove",labelButtonAbortItemLoad:"Abort",labelButtonRetryItemLoad:"Retry",labelButtonAbortItemProcessing:"Cancel",labelButtonUndoItemProcessing:"Undo",labelButtonRetryItemProcessing:"Retry",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"File is too large",labelMaxFileSize:"Maximum file size is {filesize}",labelMaxTotalFileSizeExceeded:"Maximum total size exceeded",labelMaxTotalFileSize:"Maximum total file size is {filesize}",labelFileTypeNotAllowed:"File of invalid type",fileValidateTypeLabelExpectedTypes:"Expects {allButLastType} or {lastType}",imageValidateSizeLabelFormatError:"Image type not supported",imageValidateSizeLabelImageSizeTooSmall:"Image is too small",imageValidateSizeLabelImageSizeTooBig:"Image is too big",imageValidateSizeLabelExpectedMinSize:"Minimum size is {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximum size is {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resolution is too low",imageValidateSizeLabelImageResolutionTooHigh:"Resolution is too high",imageValidateSizeLabelExpectedMinResolution:"Minimum resolution is {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maximum resolution is {maxResolution}"};var Io={labelIdle:'Arrastra y suelta tus archivos o Examinar ',labelInvalidField:"El campo contiene archivos inv\xE1lidos",labelFileWaitingForSize:"Esperando tama\xF1o",labelFileSizeNotAvailable:"Tama\xF1o no disponible",labelFileLoading:"Cargando",labelFileLoadError:"Error durante la carga",labelFileProcessing:"Cargando",labelFileProcessingComplete:"Carga completa",labelFileProcessingAborted:"Carga cancelada",labelFileProcessingError:"Error durante la carga",labelFileProcessingRevertError:"Error durante la reversi\xF3n",labelFileRemoveError:"Error durante la eliminaci\xF3n",labelTapToCancel:"toca para cancelar",labelTapToRetry:"tocar para volver a intentar",labelTapToUndo:"tocar para deshacer",labelButtonRemoveItem:"Eliminar",labelButtonAbortItemLoad:"Abortar",labelButtonRetryItemLoad:"Reintentar",labelButtonAbortItemProcessing:"Cancelar",labelButtonUndoItemProcessing:"Deshacer",labelButtonRetryItemProcessing:"Reintentar",labelButtonProcessItem:"Cargar",labelMaxFileSizeExceeded:"El archivo es demasiado grande",labelMaxFileSize:"El tama\xF1o m\xE1ximo del archivo es {filesize}",labelMaxTotalFileSizeExceeded:"Tama\xF1o total m\xE1ximo excedido",labelMaxTotalFileSize:"El tama\xF1o total m\xE1ximo del archivo es {filesize}",labelFileTypeNotAllowed:"Archivo de tipo no v\xE1lido",fileValidateTypeLabelExpectedTypes:"Espera {allButLastType} o {lastType}",imageValidateSizeLabelFormatError:"Tipo de imagen no compatible",imageValidateSizeLabelImageSizeTooSmall:"La imagen es demasiado peque\xF1a",imageValidateSizeLabelImageSizeTooBig:"La imagen es demasiado grande",imageValidateSizeLabelExpectedMinSize:"El tama\xF1o m\xEDnimo es {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"El tama\xF1o m\xE1ximo es {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"La resoluci\xF3n es demasiado baja",imageValidateSizeLabelImageResolutionTooHigh:"La resoluci\xF3n es demasiado alta",imageValidateSizeLabelExpectedMinResolution:"La resoluci\xF3n m\xEDnima es {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"La resoluci\xF3n m\xE1xima es {maxResolution}"};var bo={labelIdle:'\u0641\u0627\u06CC\u0644 \u0631\u0627 \u0627\u06CC\u0646\u062C\u0627 \u0628\u06A9\u0634\u06CC\u062F \u0648 \u0631\u0647\u0627 \u06A9\u0646\u06CC\u062F\u060C \u06CC\u0627 \u062C\u0633\u062A\u062C\u0648 \u06A9\u0646\u06CC\u062F ',labelInvalidField:"\u0641\u06CC\u0644\u062F \u062F\u0627\u0631\u0627\u06CC \u0641\u0627\u06CC\u0644 \u0647\u0627\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",labelFileWaitingForSize:"Waiting for size",labelFileSizeNotAvailable:"\u062D\u062C\u0645 \u0641\u0627\u06CC\u0644 \u0645\u062C\u0627\u0632 \u0646\u06CC\u0633\u062A",labelFileLoading:"\u062F\u0631\u062D\u0627\u0644 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC",labelFileLoadError:"\u062E\u0637\u0627 \u062F\u0631 \u0632\u0645\u0627\u0646 \u0627\u062C\u0631\u0627",labelFileProcessing:"\u062F\u0631\u062D\u0627\u0644 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC",labelFileProcessingComplete:"\u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC \u06A9\u0627\u0645\u0644 \u0634\u062F",labelFileProcessingAborted:"\u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC \u0644\u063A\u0648 \u0634\u062F",labelFileProcessingError:"\u062E\u0637\u0627 \u062F\u0631 \u0632\u0645\u0627\u0646 \u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC",labelFileProcessingRevertError:"\u062E\u0637\u0627 \u062F\u0631 \u0632\u0645\u0627\u0646 \u062D\u0630\u0641",labelFileRemoveError:"\u062E\u0637\u0627 \u062F\u0631 \u0632\u0645\u0627\u0646 \u062D\u0630\u0641",labelTapToCancel:"\u0628\u0631\u0627\u06CC \u0644\u063A\u0648 \u0636\u0631\u0628\u0647 \u0628\u0632\u0646\u06CC\u062F",labelTapToRetry:"\u0628\u0631\u0627\u06CC \u062A\u06A9\u0631\u0627\u0631 \u06A9\u0644\u06CC\u06A9 \u06A9\u0646\u06CC\u062F",labelTapToUndo:"\u0628\u0631\u0627\u06CC \u0628\u0631\u06AF\u0634\u062A \u06A9\u0644\u06CC\u06A9 \u06A9\u0646\u06CC\u062F",labelButtonRemoveItem:"\u062D\u0630\u0641",labelButtonAbortItemLoad:"\u0644\u063A\u0648",labelButtonRetryItemLoad:"\u062A\u06A9\u0631\u0627\u0631",labelButtonAbortItemProcessing:"\u0644\u063A\u0648",labelButtonUndoItemProcessing:"\u0628\u0631\u06AF\u0634\u062A",labelButtonRetryItemProcessing:"\u062A\u06A9\u0631\u0627\u0631",labelButtonProcessItem:"\u0628\u0627\u0631\u06AF\u0630\u0627\u0631\u06CC",labelMaxFileSizeExceeded:"\u0641\u0627\u06CC\u0644 \u0628\u0633\u06CC\u0627\u0631 \u062D\u062C\u06CC\u0645 \u0627\u0633\u062A",labelMaxFileSize:"\u062D\u062F\u0627\u06A9\u062B\u0631 \u0645\u062C\u0627\u0632 \u0641\u0627\u06CC\u0644 {filesize} \u0627\u0633\u062A",labelMaxTotalFileSizeExceeded:"\u0627\u0632 \u062D\u062F\u0627\u06A9\u062B\u0631 \u062D\u062C\u0645 \u0641\u0627\u06CC\u0644 \u0628\u06CC\u0634\u062A\u0631 \u0634\u062F",labelMaxTotalFileSize:"\u062D\u062F\u0627\u06A9\u062B\u0631 \u062D\u062C\u0645 \u0641\u0627\u06CC\u0644 {filesize} \u0627\u0633\u062A",labelFileTypeNotAllowed:"\u0646\u0648\u0639 \u0641\u0627\u06CC\u0644 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",fileValidateTypeLabelExpectedTypes:"\u062F\u0631 \u0627\u0646\u062A\u0638\u0627\u0631 {allButLastType} \u06CC\u0627 {lastType}",imageValidateSizeLabelFormatError:"\u0641\u0631\u0645\u062A \u062A\u0635\u0648\u06CC\u0631 \u067E\u0634\u062A\u06CC\u0628\u0627\u0646\u06CC \u0646\u0645\u06CC \u0634\u0648\u062F",imageValidateSizeLabelImageSizeTooSmall:"\u062A\u0635\u0648\u06CC\u0631 \u0628\u0633\u06CC\u0627\u0631 \u06A9\u0648\u0686\u06A9 \u0627\u0633\u062A",imageValidateSizeLabelImageSizeTooBig:"\u062A\u0635\u0648\u06CC\u0631 \u0628\u0633\u06CC\u0627\u0631 \u0628\u0632\u0631\u06AF \u0627\u0633\u062A",imageValidateSizeLabelExpectedMinSize:"\u062D\u062F\u0627\u0642\u0644 \u0627\u0646\u062F\u0627\u0632\u0647 {minWidth} \xD7 {minHeight} \u0627\u0633\u062A",imageValidateSizeLabelExpectedMaxSize:"\u062D\u062F\u0627\u06A9\u062B\u0631 \u0627\u0646\u062F\u0627\u0632\u0647 {maxWidth} \xD7 {maxHeight} \u0627\u0633\u062A",imageValidateSizeLabelImageResolutionTooLow:"\u0648\u0636\u0648\u062D \u062A\u0635\u0648\u06CC\u0631 \u0628\u0633\u06CC\u0627\u0631 \u06A9\u0645 \u0627\u0633\u062A",imageValidateSizeLabelImageResolutionTooHigh:"\u0648\u0636\u0648\u0639 \u062A\u0635\u0648\u06CC\u0631 \u0628\u0633\u06CC\u0627\u0631 \u0632\u06CC\u0627\u062F \u0627\u0633\u062A",imageValidateSizeLabelExpectedMinResolution:"\u062D\u062F\u0627\u0642\u0644 \u0648\u0636\u0648\u062D \u062A\u0635\u0648\u06CC\u0631 {minResolution} \u0627\u0633\u062A",imageValidateSizeLabelExpectedMaxResolution:"\u062D\u062F\u0627\u06A9\u062B\u0631 \u0648\u0636\u0648\u062D \u062A\u0635\u0648\u06CC\u0631 {maxResolution} \u0627\u0633\u062A"};var _o={labelIdle:'Ved\xE4 ja pudota tiedostoja tai Selaa ',labelInvalidField:"Kent\xE4ss\xE4 on virheellisi\xE4 tiedostoja",labelFileWaitingForSize:"Odotetaan kokoa",labelFileSizeNotAvailable:"Kokoa ei saatavilla",labelFileLoading:"Ladataan",labelFileLoadError:"Virhe latauksessa",labelFileProcessing:"L\xE4hetet\xE4\xE4n",labelFileProcessingComplete:"L\xE4hetys valmis",labelFileProcessingAborted:"L\xE4hetys peruttu",labelFileProcessingError:"Virhe l\xE4hetyksess\xE4",labelFileProcessingRevertError:"Virhe palautuksessa",labelFileRemoveError:"Virhe poistamisessa",labelTapToCancel:"peruuta napauttamalla",labelTapToRetry:"yrit\xE4 uudelleen napauttamalla",labelTapToUndo:"kumoa napauttamalla",labelButtonRemoveItem:"Poista",labelButtonAbortItemLoad:"Keskeyt\xE4",labelButtonRetryItemLoad:"Yrit\xE4 uudelleen",labelButtonAbortItemProcessing:"Peruuta",labelButtonUndoItemProcessing:"Kumoa",labelButtonRetryItemProcessing:"Yrit\xE4 uudelleen",labelButtonProcessItem:"L\xE4het\xE4",labelMaxFileSizeExceeded:"Tiedoston koko on liian suuri",labelMaxFileSize:"Tiedoston maksimikoko on {filesize}",labelMaxTotalFileSizeExceeded:"Tiedostojen yhdistetty maksimikoko ylitetty",labelMaxTotalFileSize:"Tiedostojen yhdistetty maksimikoko on {filesize}",labelFileTypeNotAllowed:"Tiedostotyyppi\xE4 ei sallita",fileValidateTypeLabelExpectedTypes:"Sallitaan {allButLastType} tai {lastType}",imageValidateSizeLabelFormatError:"Kuvatyyppi\xE4 ei tueta",imageValidateSizeLabelImageSizeTooSmall:"Kuva on liian pieni",imageValidateSizeLabelImageSizeTooBig:"Kuva on liian suuri",imageValidateSizeLabelExpectedMinSize:"Minimikoko on {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maksimikoko on {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resoluutio on liian pieni",imageValidateSizeLabelImageResolutionTooHigh:"Resoluutio on liian suuri",imageValidateSizeLabelExpectedMinResolution:"Minimiresoluutio on {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maksimiresoluutio on {maxResolution}"};var Ro={labelIdle:'Faites glisser vos fichiers ou Parcourir ',labelInvalidField:"Le champ contient des fichiers invalides",labelFileWaitingForSize:"En attente de taille",labelFileSizeNotAvailable:"Taille non disponible",labelFileLoading:"Chargement",labelFileLoadError:"Erreur durant le chargement",labelFileProcessing:"Traitement",labelFileProcessingComplete:"Traitement effectu\xE9",labelFileProcessingAborted:"Traitement interrompu",labelFileProcessingError:"Erreur durant le traitement",labelFileProcessingRevertError:"Erreur durant la restauration",labelFileRemoveError:"Erreur durant la suppression",labelTapToCancel:"appuyer pour annuler",labelTapToRetry:"appuyer pour r\xE9essayer",labelTapToUndo:"appuyer pour revenir en arri\xE8re",labelButtonRemoveItem:"Retirer",labelButtonAbortItemLoad:"Annuler",labelButtonRetryItemLoad:"Recommencer",labelButtonAbortItemProcessing:"Annuler",labelButtonUndoItemProcessing:"Revenir en arri\xE8re",labelButtonRetryItemProcessing:"Recommencer",labelButtonProcessItem:"Transf\xE9rer",labelMaxFileSizeExceeded:"Le fichier est trop volumineux",labelMaxFileSize:"La taille maximale de fichier est {filesize}",labelMaxTotalFileSizeExceeded:"Taille totale maximale d\xE9pass\xE9e",labelMaxTotalFileSize:"La taille totale maximale des fichiers est {filesize}",labelFileTypeNotAllowed:"Fichier non valide",fileValidateTypeLabelExpectedTypes:"Attendu {allButLastType} ou {lastType}",imageValidateSizeLabelFormatError:"Type d'image non pris en charge",imageValidateSizeLabelImageSizeTooSmall:"L'image est trop petite",imageValidateSizeLabelImageSizeTooBig:"L'image est trop grande",imageValidateSizeLabelExpectedMinSize:"La taille minimale est {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"La taille maximale est {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"La r\xE9solution est trop faible",imageValidateSizeLabelImageResolutionTooHigh:"La r\xE9solution est trop \xE9lev\xE9e",imageValidateSizeLabelExpectedMinResolution:"La r\xE9solution minimale est {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"La r\xE9solution maximale est {maxResolution}"};var yo={labelIdle:'Mozgasd ide a f\xE1jlt a felt\xF6lt\xE9shez, vagy tall\xF3z\xE1s ',labelInvalidField:"A mez\u0151 \xE9rv\xE9nytelen f\xE1jlokat tartalmaz",labelFileWaitingForSize:"F\xE1ljm\xE9ret kisz\xE1mol\xE1sa",labelFileSizeNotAvailable:"A f\xE1jlm\xE9ret nem el\xE9rhet\u0151",labelFileLoading:"T\xF6lt\xE9s",labelFileLoadError:"Hiba a bet\xF6lt\xE9s sor\xE1n",labelFileProcessing:"Felt\xF6lt\xE9s",labelFileProcessingComplete:"Sikeres felt\xF6lt\xE9s",labelFileProcessingAborted:"A felt\xF6lt\xE9s megszak\xEDtva",labelFileProcessingError:"Hiba t\xF6rt\xE9nt a felt\xF6lt\xE9s sor\xE1n",labelFileProcessingRevertError:"Hiba a vissza\xE1ll\xEDt\xE1s sor\xE1n",labelFileRemoveError:"Hiba t\xF6rt\xE9nt az elt\xE1vol\xEDt\xE1s sor\xE1n",labelTapToCancel:"koppints a t\xF6rl\xE9shez",labelTapToRetry:"koppints az \xFAjrakezd\xE9shez",labelTapToUndo:"koppints a visszavon\xE1shoz",labelButtonRemoveItem:"Elt\xE1vol\xEDt\xE1s",labelButtonAbortItemLoad:"Megszak\xEDt\xE1s",labelButtonRetryItemLoad:"\xDAjrapr\xF3b\xE1lkoz\xE1s",labelButtonAbortItemProcessing:"Megszak\xEDt\xE1s",labelButtonUndoItemProcessing:"Visszavon\xE1s",labelButtonRetryItemProcessing:"\xDAjrapr\xF3b\xE1lkoz\xE1s",labelButtonProcessItem:"Felt\xF6lt\xE9s",labelMaxFileSizeExceeded:"A f\xE1jl t\xFAll\xE9pte a maxim\xE1lis m\xE9retet",labelMaxFileSize:"Maxim\xE1lis f\xE1jlm\xE9ret: {filesize}",labelMaxTotalFileSizeExceeded:"T\xFAll\xE9pte a maxim\xE1lis teljes m\xE9retet",labelMaxTotalFileSize:"A maxim\xE1is teljes f\xE1jlm\xE9ret: {filesize}",labelFileTypeNotAllowed:"\xC9rv\xE9nytelen t\xEDpus\xFA f\xE1jl",fileValidateTypeLabelExpectedTypes:"Enged\xE9lyezett t\xEDpusok {allButLastType} vagy {lastType}",imageValidateSizeLabelFormatError:"A k\xE9pt\xEDpus nem t\xE1mogatott",imageValidateSizeLabelImageSizeTooSmall:"A k\xE9p t\xFAl kicsi",imageValidateSizeLabelImageSizeTooBig:"A k\xE9p t\xFAl nagy",imageValidateSizeLabelExpectedMinSize:"Minimum m\xE9ret: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximum m\xE9ret: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"A felbont\xE1s t\xFAl alacsony",imageValidateSizeLabelImageResolutionTooHigh:"A felbont\xE1s t\xFAl magas",imageValidateSizeLabelExpectedMinResolution:"Minim\xE1is felbont\xE1s: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maxim\xE1lis felbont\xE1s: {maxResolution}"};var So={labelIdle:'Seret & Jatuhkan berkas Anda atau Jelajahi',labelInvalidField:"Isian berisi berkas yang tidak valid",labelFileWaitingForSize:"Menunggu ukuran berkas",labelFileSizeNotAvailable:"Ukuran berkas tidak tersedia",labelFileLoading:"Memuat",labelFileLoadError:"Kesalahan saat memuat",labelFileProcessing:"Mengunggah",labelFileProcessingComplete:"Pengunggahan selesai",labelFileProcessingAborted:"Pengunggahan dibatalkan",labelFileProcessingError:"Kesalahan saat pengunggahan",labelFileProcessingRevertError:"Kesalahan saat pemulihan",labelFileRemoveError:"Kesalahan saat penghapusan",labelTapToCancel:"ketuk untuk membatalkan",labelTapToRetry:"ketuk untuk mencoba lagi",labelTapToUndo:"ketuk untuk mengurungkan",labelButtonRemoveItem:"Hapus",labelButtonAbortItemLoad:"Batalkan",labelButtonRetryItemLoad:"Coba Kembali",labelButtonAbortItemProcessing:"Batalkan",labelButtonUndoItemProcessing:"Urungkan",labelButtonRetryItemProcessing:"Coba Kembali",labelButtonProcessItem:"Unggah",labelMaxFileSizeExceeded:"Berkas terlalu besar",labelMaxFileSize:"Ukuran berkas maksimum adalah {filesize}",labelMaxTotalFileSizeExceeded:"Jumlah berkas maksimum terlampaui",labelMaxTotalFileSize:"Jumlah berkas maksimum adalah {filesize}",labelFileTypeNotAllowed:"Jenis berkas tidak valid",fileValidateTypeLabelExpectedTypes:"Mengharapkan {allButLastType} atau {lastType}",imageValidateSizeLabelFormatError:"Jenis citra tidak didukung",imageValidateSizeLabelImageSizeTooSmall:"Citra terlalu kecil",imageValidateSizeLabelImageSizeTooBig:"Citra terlalu besar",imageValidateSizeLabelExpectedMinSize:"Ukuran minimum adalah {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Ukuran maksimum adalah {minWidth} \xD7 {minHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resolusi terlalu rendah",imageValidateSizeLabelImageResolutionTooHigh:"Resolusi terlalu tinggi",imageValidateSizeLabelExpectedMinResolution:"Resolusi minimum adalah {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Resolusi maksimum adalah {maxResolution}"};var wo={labelIdle:'Trascina e rilascia i tuoi file oppure Carica ',labelInvalidField:"Il campo contiene dei file non validi",labelFileWaitingForSize:"Aspettando le dimensioni",labelFileSizeNotAvailable:"Dimensioni non disponibili",labelFileLoading:"Caricamento",labelFileLoadError:"Errore durante il caricamento",labelFileProcessing:"Caricamento",labelFileProcessingComplete:"Caricamento completato",labelFileProcessingAborted:"Caricamento cancellato",labelFileProcessingError:"Errore durante il caricamento",labelFileProcessingRevertError:"Errore durante il ripristino",labelFileRemoveError:"Errore durante l'eliminazione",labelTapToCancel:"tocca per cancellare",labelTapToRetry:"tocca per riprovare",labelTapToUndo:"tocca per ripristinare",labelButtonRemoveItem:"Elimina",labelButtonAbortItemLoad:"Cancella",labelButtonRetryItemLoad:"Ritenta",labelButtonAbortItemProcessing:"Camcella",labelButtonUndoItemProcessing:"Indietro",labelButtonRetryItemProcessing:"Ritenta",labelButtonProcessItem:"Carica",labelMaxFileSizeExceeded:"Il peso del file \xE8 eccessivo",labelMaxFileSize:"Il peso massimo del file \xE8 {filesize}",labelMaxTotalFileSizeExceeded:"Dimensione totale massima superata",labelMaxTotalFileSize:"La dimensione massima totale del file \xE8 {filesize}",labelFileTypeNotAllowed:"File non supportato",fileValidateTypeLabelExpectedTypes:"Aspetta {allButLastType} o {lastType}",imageValidateSizeLabelFormatError:"Tipo di immagine non compatibile",imageValidateSizeLabelImageSizeTooSmall:"L'immagine \xE8 troppo piccola",imageValidateSizeLabelImageSizeTooBig:"L'immagine \xE8 troppo grande",imageValidateSizeLabelExpectedMinSize:"La dimensione minima \xE8 {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"La dimensione massima \xE8 {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"La risoluzione \xE8 troppo bassa",imageValidateSizeLabelImageResolutionTooHigh:"La risoluzione \xE8 troppo alta",imageValidateSizeLabelExpectedMinResolution:"La risoluzione minima \xE8 {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"La risoluzione massima \xE8 {maxResolution}"};var vo={labelIdle:'Drag & Drop je bestanden of Bladeren ',labelInvalidField:"Veld bevat ongeldige bestanden",labelFileWaitingForSize:"Wachten op grootte",labelFileSizeNotAvailable:"Grootte niet beschikbaar",labelFileLoading:"Laden",labelFileLoadError:"Fout tijdens laden",labelFileProcessing:"Uploaden",labelFileProcessingComplete:"Upload afgerond",labelFileProcessingAborted:"Upload geannuleerd",labelFileProcessingError:"Fout tijdens upload",labelFileProcessingRevertError:"Fout bij herstellen",labelFileRemoveError:"Fout bij verwijderen",labelTapToCancel:"tik om te annuleren",labelTapToRetry:"tik om opnieuw te proberen",labelTapToUndo:"tik om ongedaan te maken",labelButtonRemoveItem:"Verwijderen",labelButtonAbortItemLoad:"Afbreken",labelButtonRetryItemLoad:"Opnieuw proberen",labelButtonAbortItemProcessing:"Annuleren",labelButtonUndoItemProcessing:"Ongedaan maken",labelButtonRetryItemProcessing:"Opnieuw proberen",labelButtonProcessItem:"Upload",labelMaxFileSizeExceeded:"Bestand is te groot",labelMaxFileSize:"Maximale bestandsgrootte is {filesize}",labelMaxTotalFileSizeExceeded:"Maximale totale grootte overschreden",labelMaxTotalFileSize:"Maximale totale bestandsgrootte is {filesize}",labelFileTypeNotAllowed:"Ongeldig bestandstype",fileValidateTypeLabelExpectedTypes:"Verwacht {allButLastType} of {lastType}",imageValidateSizeLabelFormatError:"Afbeeldingstype niet ondersteund",imageValidateSizeLabelImageSizeTooSmall:"Afbeelding is te klein",imageValidateSizeLabelImageSizeTooBig:"Afbeelding is te groot",imageValidateSizeLabelExpectedMinSize:"Minimale afmeting is {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximale afmeting is {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resolutie is te laag",imageValidateSizeLabelImageResolutionTooHigh:"Resolution is too high",imageValidateSizeLabelExpectedMinResolution:"Minimale resolutie is {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maximale resolutie is {maxResolution}"};var Ao={labelIdle:'Dra og slipp filene dine, eller Bla gjennom... ',labelInvalidField:"Feltet inneholder ugyldige filer",labelFileWaitingForSize:"Venter p\xE5 st\xF8rrelse",labelFileSizeNotAvailable:"St\xF8rrelse ikke tilgjengelig",labelFileLoading:"Laster",labelFileLoadError:"Feil under lasting",labelFileProcessing:"Laster opp",labelFileProcessingComplete:"Opplasting ferdig",labelFileProcessingAborted:"Opplasting avbrutt",labelFileProcessingError:"Feil under opplasting",labelFileProcessingRevertError:"Feil under reversering",labelFileRemoveError:"Feil under flytting",labelTapToCancel:"klikk for \xE5 avbryte",labelTapToRetry:"klikk for \xE5 pr\xF8ve p\xE5 nytt",labelTapToUndo:"klikk for \xE5 angre",labelButtonRemoveItem:"Fjern",labelButtonAbortItemLoad:"Avbryt",labelButtonRetryItemLoad:"Pr\xF8v p\xE5 nytt",labelButtonAbortItemProcessing:"Avbryt",labelButtonUndoItemProcessing:"Angre",labelButtonRetryItemProcessing:"Pr\xF8v p\xE5 nytt",labelButtonProcessItem:"Last opp",labelMaxFileSizeExceeded:"Filen er for stor",labelMaxFileSize:"Maksimal filst\xF8rrelse er {filesize}",labelMaxTotalFileSizeExceeded:"Maksimal total st\xF8rrelse oversteget",labelMaxTotalFileSize:"Maksimal total st\xF8rrelse er {filesize}",labelFileTypeNotAllowed:"Ugyldig filtype",fileValidateTypeLabelExpectedTypes:"Forventer {allButLastType} eller {lastType}",imageValidateSizeLabelFormatError:"Bildeformat ikke st\xF8ttet",imageValidateSizeLabelImageSizeTooSmall:"Bildet er for lite",imageValidateSizeLabelImageSizeTooBig:"Bildet er for stort",imageValidateSizeLabelExpectedMinSize:"Minimumsst\xF8rrelse er {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maksimumsst\xF8rrelse er {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Oppl\xF8sningen er for lav",imageValidateSizeLabelImageResolutionTooHigh:"Oppl\xF8sningen er for h\xF8y",imageValidateSizeLabelExpectedMinResolution:"Minimum oppl\xF8sning er {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maksimal oppl\xF8sning er {maxResolution}"};var Lo={labelIdle:'Przeci\u0105gnij i upu\u015B\u0107 lub wybierz pliki',labelInvalidField:"Nieprawid\u0142owe pliki",labelFileWaitingForSize:"Pobieranie rozmiaru",labelFileSizeNotAvailable:"Nieznany rozmiar",labelFileLoading:"Wczytywanie",labelFileLoadError:"B\u0142\u0105d wczytywania",labelFileProcessing:"Przesy\u0142anie",labelFileProcessingComplete:"Przes\u0142ano",labelFileProcessingAborted:"Przerwano",labelFileProcessingError:"Przesy\u0142anie nie powiod\u0142o si\u0119",labelFileProcessingRevertError:"Co\u015B posz\u0142o nie tak",labelFileRemoveError:"Nieudane usuni\u0119cie",labelTapToCancel:"Anuluj",labelTapToRetry:"Pon\xF3w",labelTapToUndo:"Cofnij",labelButtonRemoveItem:"Usu\u0144",labelButtonAbortItemLoad:"Przerwij",labelButtonRetryItemLoad:"Pon\xF3w",labelButtonAbortItemProcessing:"Anuluj",labelButtonUndoItemProcessing:"Cofnij",labelButtonRetryItemProcessing:"Pon\xF3w",labelButtonProcessItem:"Prze\u015Blij",labelMaxFileSizeExceeded:"Plik jest zbyt du\u017Cy",labelMaxFileSize:"Dopuszczalna wielko\u015B\u0107 pliku to {filesize}",labelMaxTotalFileSizeExceeded:"Przekroczono \u0142\u0105czny rozmiar plik\xF3w",labelMaxTotalFileSize:"\u0141\u0105czny rozmiar plik\xF3w nie mo\u017Ce przekroczy\u0107 {filesize}",labelFileTypeNotAllowed:"Niedozwolony rodzaj pliku",fileValidateTypeLabelExpectedTypes:"Oczekiwano {allButLastType} lub {lastType}",imageValidateSizeLabelFormatError:"Nieobs\u0142ugiwany format obrazu",imageValidateSizeLabelImageSizeTooSmall:"Obraz jest zbyt ma\u0142y",imageValidateSizeLabelImageSizeTooBig:"Obraz jest zbyt du\u017Cy",imageValidateSizeLabelExpectedMinSize:"Minimalne wymiary obrazu to {minWidth}\xD7{minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maksymalna wymiary obrazu to {maxWidth}\xD7{maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Rozdzielczo\u015B\u0107 jest zbyt niska",imageValidateSizeLabelImageResolutionTooHigh:"Rozdzielczo\u015B\u0107 jest zbyt wysoka",imageValidateSizeLabelExpectedMinResolution:"Minimalna rozdzielczo\u015B\u0107 to {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maksymalna rozdzielczo\u015B\u0107 to {maxResolution}"};var bi={labelIdle:'Arraste e solte os arquivos ou Clique aqui ',labelInvalidField:"Arquivos inv\xE1lidos",labelFileWaitingForSize:"Calculando o tamanho do arquivo",labelFileSizeNotAvailable:"Tamanho do arquivo indispon\xEDvel",labelFileLoading:"Carregando",labelFileLoadError:"Erro durante o carregamento",labelFileProcessing:"Enviando",labelFileProcessingComplete:"Envio finalizado",labelFileProcessingAborted:"Envio cancelado",labelFileProcessingError:"Erro durante o envio",labelFileProcessingRevertError:"Erro ao reverter o envio",labelFileRemoveError:"Erro ao remover o arquivo",labelTapToCancel:"clique para cancelar",labelTapToRetry:"clique para reenviar",labelTapToUndo:"clique para desfazer",labelButtonRemoveItem:"Remover",labelButtonAbortItemLoad:"Abortar",labelButtonRetryItemLoad:"Reenviar",labelButtonAbortItemProcessing:"Cancelar",labelButtonUndoItemProcessing:"Desfazer",labelButtonRetryItemProcessing:"Reenviar",labelButtonProcessItem:"Enviar",labelMaxFileSizeExceeded:"Arquivo \xE9 muito grande",labelMaxFileSize:"O tamanho m\xE1ximo permitido: {filesize}",labelMaxTotalFileSizeExceeded:"Tamanho total dos arquivos excedido",labelMaxTotalFileSize:"Tamanho total permitido: {filesize}",labelFileTypeNotAllowed:"Tipo de arquivo inv\xE1lido",fileValidateTypeLabelExpectedTypes:"Tipos de arquivo suportados s\xE3o {allButLastType} ou {lastType}",imageValidateSizeLabelFormatError:"Tipo de imagem inv\xE1lida",imageValidateSizeLabelImageSizeTooSmall:"Imagem muito pequena",imageValidateSizeLabelImageSizeTooBig:"Imagem muito grande",imageValidateSizeLabelExpectedMinSize:"Tamanho m\xEDnimo permitida: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Tamanho m\xE1ximo permitido: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Resolu\xE7\xE3o muito baixa",imageValidateSizeLabelImageResolutionTooHigh:"Resolu\xE7\xE3o muito alta",imageValidateSizeLabelExpectedMinResolution:"Resolu\xE7\xE3o m\xEDnima permitida: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Resolu\xE7\xE3o m\xE1xima permitida: {maxResolution}"};var Mo={labelIdle:'Trage \u0219i plaseaz\u0103 fi\u0219iere sau Caut\u0103-le ',labelInvalidField:"C\xE2mpul con\u021Bine fi\u0219iere care nu sunt valide",labelFileWaitingForSize:"\xCEn a\u0219teptarea dimensiunii",labelFileSizeNotAvailable:"Dimensiunea nu este diponibil\u0103",labelFileLoading:"Se \xEEncarc\u0103",labelFileLoadError:"Eroare la \xEEnc\u0103rcare",labelFileProcessing:"Se \xEEncarc\u0103",labelFileProcessingComplete:"\xCEnc\u0103rcare finalizat\u0103",labelFileProcessingAborted:"\xCEnc\u0103rcare anulat\u0103",labelFileProcessingError:"Eroare la \xEEnc\u0103rcare",labelFileProcessingRevertError:"Eroare la anulare",labelFileRemoveError:"Eroare la \u015Ftergere",labelTapToCancel:"apas\u0103 pentru a anula",labelTapToRetry:"apas\u0103 pentru a re\xEEncerca",labelTapToUndo:"apas\u0103 pentru a anula",labelButtonRemoveItem:"\u015Eterge",labelButtonAbortItemLoad:"Anuleaz\u0103",labelButtonRetryItemLoad:"Re\xEEncearc\u0103",labelButtonAbortItemProcessing:"Anuleaz\u0103",labelButtonUndoItemProcessing:"Anuleaz\u0103",labelButtonRetryItemProcessing:"Re\xEEncearc\u0103",labelButtonProcessItem:"\xCEncarc\u0103",labelMaxFileSizeExceeded:"Fi\u0219ierul este prea mare",labelMaxFileSize:"Dimensiunea maxim\u0103 a unui fi\u0219ier este de {filesize}",labelMaxTotalFileSizeExceeded:"Dimensiunea total\u0103 maxim\u0103 a fost dep\u0103\u0219it\u0103",labelMaxTotalFileSize:"Dimensiunea total\u0103 maxim\u0103 a fi\u0219ierelor este de {filesize}",labelFileTypeNotAllowed:"Tipul fi\u0219ierului nu este valid",fileValidateTypeLabelExpectedTypes:"Se a\u0219teapt\u0103 {allButLastType} sau {lastType}",imageValidateSizeLabelFormatError:"Formatul imaginii nu este acceptat",imageValidateSizeLabelImageSizeTooSmall:"Imaginea este prea mic\u0103",imageValidateSizeLabelImageSizeTooBig:"Imaginea este prea mare",imageValidateSizeLabelExpectedMinSize:"M\u0103rimea minim\u0103 este de {maxWidth} x {maxHeight}",imageValidateSizeLabelExpectedMaxSize:"M\u0103rimea maxim\u0103 este de {maxWidth} x {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Rezolu\u021Bia este prea mic\u0103",imageValidateSizeLabelImageResolutionTooHigh:"Rezolu\u021Bia este prea mare",imageValidateSizeLabelExpectedMinResolution:"Rezolu\u021Bia minim\u0103 este de {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Rezolu\u021Bia maxim\u0103 este de {maxResolution}"};var Oo={labelIdle:'\u041F\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u0435 \u0444\u0430\u0439\u043B\u044B \u0438\u043B\u0438 \u0432\u044B\u0431\u0435\u0440\u0438\u0442\u0435 ',labelInvalidField:"\u041F\u043E\u043B\u0435 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u044B\u0435 \u0444\u0430\u0439\u043B\u044B",labelFileWaitingForSize:"\u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u0440\u0430\u0437\u043C\u0435\u0440",labelFileSizeNotAvailable:"\u0420\u0430\u0437\u043C\u0435\u0440 \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F",labelFileLoading:"\u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435",labelFileLoadError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u043E\u0436\u0438\u0434\u0430\u043D\u0438\u0438",labelFileProcessing:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430",labelFileProcessingComplete:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430",labelFileProcessingAborted:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u043E\u0442\u043C\u0435\u043D\u0435\u043D\u0430",labelFileProcessingError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0435",labelFileProcessingRevertError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0432\u043E\u0437\u0432\u0440\u0430\u0442\u0435",labelFileRemoveError:"\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u0438",labelTapToCancel:"\u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u0434\u043B\u044F \u043E\u0442\u043C\u0435\u043D\u044B",labelTapToRetry:"\u043D\u0430\u0436\u043C\u0438\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C \u043F\u043E\u043F\u044B\u0442\u043A\u0443",labelTapToUndo:"\u043D\u0430\u0436\u043C\u0438\u0442\u0435 \u0434\u043B\u044F \u043E\u0442\u043C\u0435\u043D\u044B \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F",labelButtonRemoveItem:"\u0423\u0434\u0430\u043B\u0438\u0442\u044C",labelButtonAbortItemLoad:"\u041F\u0440\u0435\u043A\u0440\u0430\u0449\u0435\u043D\u043E",labelButtonRetryItemLoad:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443",labelButtonAbortItemProcessing:"\u041E\u0442\u043C\u0435\u043D\u0430",labelButtonUndoItemProcessing:"\u041E\u0442\u043C\u0435\u043D\u0430 \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F",labelButtonRetryItemProcessing:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443",labelButtonProcessItem:"\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430",labelMaxFileSizeExceeded:"\u0424\u0430\u0439\u043B \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0439",labelMaxFileSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430: {filesize}",labelMaxTotalFileSizeExceeded:"\u041F\u0440\u0435\u0432\u044B\u0448\u0435\u043D \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440",labelMaxTotalFileSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440 \u0444\u0430\u0439\u043B\u0430: {filesize}",labelFileTypeNotAllowed:"\u0424\u0430\u0439\u043B \u043D\u0435\u0432\u0435\u0440\u043D\u043E\u0433\u043E \u0442\u0438\u043F\u0430",fileValidateTypeLabelExpectedTypes:"\u041E\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044F {allButLastType} \u0438\u043B\u0438 {lastType}",imageValidateSizeLabelFormatError:"\u0422\u0438\u043F \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u044F \u043D\u0435 \u043F\u043E\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044F",imageValidateSizeLabelImageSizeTooSmall:"\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435",imageValidateSizeLabelImageSizeTooBig:"\u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435",imageValidateSizeLabelExpectedMinSize:"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u044B\u0439 \u0440\u0430\u0437\u043C\u0435\u0440: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u043D\u0438\u0437\u043A\u043E\u0435",imageValidateSizeLabelImageResolutionTooHigh:"\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u0441\u043B\u0438\u0448\u043A\u043E\u043C \u0432\u044B\u0441\u043E\u043A\u043E\u0435",imageValidateSizeLabelExpectedMinResolution:"\u041C\u0438\u043D\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u0435: {maxResolution}"};var xo={labelIdle:'Drag och sl\xE4pp dina filer eller Bl\xE4ddra ',labelInvalidField:"F\xE4ltet inneh\xE5ller felaktiga filer",labelFileWaitingForSize:"V\xE4ntar p\xE5 storlek",labelFileSizeNotAvailable:"Storleken finns inte tillg\xE4nglig",labelFileLoading:"Laddar",labelFileLoadError:"Fel under laddning",labelFileProcessing:"Laddar upp",labelFileProcessingComplete:"Uppladdning klar",labelFileProcessingAborted:"Uppladdning avbruten",labelFileProcessingError:"Fel under uppladdning",labelFileProcessingRevertError:"Fel under \xE5terst\xE4llning",labelFileRemoveError:"Fel under borttagning",labelTapToCancel:"tryck f\xF6r att avbryta",labelTapToRetry:"tryck f\xF6r att f\xF6rs\xF6ka igen",labelTapToUndo:"tryck f\xF6r att \xE5ngra",labelButtonRemoveItem:"Tabort",labelButtonAbortItemLoad:"Avbryt",labelButtonRetryItemLoad:"F\xF6rs\xF6k igen",labelButtonAbortItemProcessing:"Avbryt",labelButtonUndoItemProcessing:"\xC5ngra",labelButtonRetryItemProcessing:"F\xF6rs\xF6k igen",labelButtonProcessItem:"Ladda upp",labelMaxFileSizeExceeded:"Filen \xE4r f\xF6r stor",labelMaxFileSize:"St\xF6rsta till\xE5tna filstorlek \xE4r {filesize}",labelMaxTotalFileSizeExceeded:"Maximal uppladdningsstorlek uppn\xE5d",labelMaxTotalFileSize:"Maximal uppladdningsstorlek \xE4r {filesize}",labelFileTypeNotAllowed:"Felaktig filtyp",fileValidateTypeLabelExpectedTypes:"Godk\xE4nda filtyper {allButLastType} eller {lastType}",imageValidateSizeLabelFormatError:"Bildtypen saknar st\xF6d",imageValidateSizeLabelImageSizeTooSmall:"Bilden \xE4r f\xF6r liten",imageValidateSizeLabelImageSizeTooBig:"Bilden \xE4r f\xF6r stor",imageValidateSizeLabelExpectedMinSize:"Minimal storlek \xE4r {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximal storlek \xE4r {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"Uppl\xF6sningen \xE4r f\xF6r l\xE5g",imageValidateSizeLabelImageResolutionTooHigh:"Uppl\xF6sningen \xE4r f\xF6r h\xF6g",imageValidateSizeLabelExpectedMinResolution:"Minsta till\xE5tna uppl\xF6sning \xE4r {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"H\xF6gsta till\xE5tna uppl\xF6sning \xE4r {maxResolution}"};var Do={labelIdle:'Dosyan\u0131z\u0131 S\xFCr\xFCkleyin & B\u0131rak\u0131n ya da Se\xE7in ',labelInvalidField:"Alan ge\xE7ersiz dosyalar i\xE7eriyor",labelFileWaitingForSize:"Boyut hesaplan\u0131yor",labelFileSizeNotAvailable:"Boyut mevcut de\u011Fil",labelFileLoading:"Y\xFCkleniyor",labelFileLoadError:"Y\xFCkleme s\u0131ras\u0131nda hata olu\u015Ftu",labelFileProcessing:"Y\xFCkleniyor",labelFileProcessingComplete:"Y\xFCkleme tamamland\u0131",labelFileProcessingAborted:"Y\xFCkleme iptal edildi",labelFileProcessingError:"Y\xFCklerken hata olu\u015Ftu",labelFileProcessingRevertError:"Geri \xE7ekerken hata olu\u015Ftu",labelFileRemoveError:"Kald\u0131r\u0131rken hata olu\u015Ftu",labelTapToCancel:"\u0130ptal etmek i\xE7in t\u0131klay\u0131n",labelTapToRetry:"Tekrar denemek i\xE7in t\u0131klay\u0131n",labelTapToUndo:"Geri almak i\xE7in t\u0131klay\u0131n",labelButtonRemoveItem:"Kald\u0131r",labelButtonAbortItemLoad:"\u0130ptal Et",labelButtonRetryItemLoad:"Tekrar dene",labelButtonAbortItemProcessing:"\u0130ptal et",labelButtonUndoItemProcessing:"Geri Al",labelButtonRetryItemProcessing:"Tekrar dene",labelButtonProcessItem:"Y\xFCkle",labelMaxFileSizeExceeded:"Dosya \xE7ok b\xFCy\xFCk",labelMaxFileSize:"En fazla dosya boyutu: {filesize}",labelMaxTotalFileSizeExceeded:"Maximum boyut a\u015F\u0131ld\u0131",labelMaxTotalFileSize:"Maximum dosya boyutu :{filesize}",labelFileTypeNotAllowed:"Ge\xE7ersiz dosya tipi",fileValidateTypeLabelExpectedTypes:"\u015Eu {allButLastType} ya da \u015Fu dosya olmas\u0131 gerekir: {lastType}",imageValidateSizeLabelFormatError:"Resim tipi desteklenmiyor",imageValidateSizeLabelImageSizeTooSmall:"Resim \xE7ok k\xFC\xE7\xFCk",imageValidateSizeLabelImageSizeTooBig:"Resim \xE7ok b\xFCy\xFCk",imageValidateSizeLabelExpectedMinSize:"Minimum boyut {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"Maximum boyut {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\xC7\xF6z\xFCn\xFCrl\xFCk \xE7ok d\xFC\u015F\xFCk",imageValidateSizeLabelImageResolutionTooHigh:"\xC7\xF6z\xFCn\xFCrl\xFCk \xE7ok y\xFCksek",imageValidateSizeLabelExpectedMinResolution:"Minimum \xE7\xF6z\xFCn\xFCrl\xFCk {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"Maximum \xE7\xF6z\xFCn\xFCrl\xFCk {maxResolution}"};var Po={labelIdle:'\u041F\u0435\u0440\u0435\u0442\u044F\u0433\u043D\u0456\u0442\u044C \u0444\u0430\u0439\u043B\u0438 \u0430\u0431\u043E \u0432\u0438\u0431\u0435\u0440\u0456\u0442\u044C ',labelInvalidField:"\u041F\u043E\u043B\u0435 \u043C\u0456\u0441\u0442\u0438\u0442\u044C \u043D\u0435\u0434\u043E\u043F\u0443\u0441\u0442\u0438\u043C\u0456 \u0444\u0430\u0439\u043B\u0438",labelFileWaitingForSize:"\u0412\u043A\u0430\u0436\u0456\u0442\u044C \u0440\u043E\u0437\u043C\u0456\u0440",labelFileSizeNotAvailable:"\u0420\u043E\u0437\u043C\u0456\u0440 \u043D\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0438\u0439",labelFileLoading:"\u041E\u0447\u0456\u043A\u0443\u0432\u0430\u043D\u043D\u044F",labelFileLoadError:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0440\u0438 \u043E\u0447\u0456\u043A\u0443\u0432\u0430\u043D\u043D\u0456",labelFileProcessing:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F",labelFileProcessingComplete:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E",labelFileProcessingAborted:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F \u0441\u043A\u0430\u0441\u043E\u0432\u0430\u043D\u043E",labelFileProcessingError:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0440\u0438 \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u0456",labelFileProcessingRevertError:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0440\u0438 \u0432\u0456\u0434\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u0456",labelFileRemoveError:"\u041F\u043E\u043C\u0438\u043B\u043A\u0430 \u043F\u0440\u0438 \u0432\u0438\u0434\u0430\u043B\u0435\u043D\u043D\u0456",labelTapToCancel:"\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438",labelTapToRetry:"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438 \u0441\u043F\u0440\u043E\u0431\u0443",labelTapToUndo:"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C, \u0449\u043E\u0431 \u0432\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438 \u043E\u0441\u0442\u0430\u043D\u043D\u044E \u0434\u0456\u044E",labelButtonRemoveItem:"\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438",labelButtonAbortItemLoad:"\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438",labelButtonRetryItemLoad:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438 \u0441\u043F\u0440\u043E\u0431\u0443",labelButtonAbortItemProcessing:"\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438",labelButtonUndoItemProcessing:"\u0412\u0456\u0434\u043C\u0456\u043D\u0438\u0442\u0438 \u043E\u0441\u0442\u0430\u043D\u043D\u044E \u0434\u0456\u044E",labelButtonRetryItemProcessing:"\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438 \u0441\u043F\u0440\u043E\u0431\u0443",labelButtonProcessItem:"\u0417\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0435\u043D\u043D\u044F",labelMaxFileSizeExceeded:"\u0424\u0430\u0439\u043B \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0438\u0439",labelMaxFileSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440 \u0444\u0430\u0439\u043B\u0443: {filesize}",labelMaxTotalFileSizeExceeded:"\u041F\u0435\u0440\u0435\u0432\u0438\u0449\u0435\u043D\u043E \u043C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0437\u0430\u0433\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440",labelMaxTotalFileSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0437\u0430\u0433\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440: {filesize}",labelFileTypeNotAllowed:"\u0424\u043E\u0440\u043C\u0430\u0442 \u0444\u0430\u0439\u043B\u0443 \u043D\u0435 \u043F\u0456\u0434\u0442\u0440\u0438\u043C\u0443\u0454\u0442\u044C\u0441\u044F",fileValidateTypeLabelExpectedTypes:"\u041E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F {allButLastType} \u0430\u0431\u043E {lastType}",imageValidateSizeLabelFormatError:"\u0424\u043E\u0440\u043C\u0430\u0442 \u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u043D\u0435 \u043F\u0456\u0434\u0442\u0440\u0438\u043C\u0443\u0454\u0442\u044C\u0441\u044F",imageValidateSizeLabelImageSizeTooSmall:"\u0417\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0435",imageValidateSizeLabelImageSizeTooBig:"\u0417\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435",imageValidateSizeLabelExpectedMinSize:"\u041C\u0456\u043D\u0456\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0438\u0439 \u0440\u043E\u0437\u043C\u0456\u0440: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u0420\u043E\u0437\u043C\u0456\u0440\u0438 \u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0456",imageValidateSizeLabelImageResolutionTooHigh:"\u0420\u043E\u0437\u043C\u0456\u0440\u0438 \u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u043D\u044F \u0437\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0456",imageValidateSizeLabelExpectedMinResolution:"\u041C\u0456\u043D\u0456\u043C\u0430\u043B\u044C\u043D\u0456 \u0440\u043E\u0437\u043C\u0456\u0440\u0438: {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u0456 \u0440\u043E\u0437\u043C\u0456\u0440\u0438: {maxResolution}"};var Fo={labelIdle:'K\xE9o th\u1EA3 t\u1EC7p c\u1EE7a b\u1EA1n ho\u1EB7c T\xECm ki\u1EBFm ',labelInvalidField:"Tr\u01B0\u1EDDng ch\u1EE9a c\xE1c t\u1EC7p kh\xF4ng h\u1EE3p l\u1EC7",labelFileWaitingForSize:"\u0110ang ch\u1EDD k\xEDch th\u01B0\u1EDBc",labelFileSizeNotAvailable:"K\xEDch th\u01B0\u1EDBc kh\xF4ng c\xF3 s\u1EB5n",labelFileLoading:"\u0110ang t\u1EA3i",labelFileLoadError:"L\u1ED7i khi t\u1EA3i",labelFileProcessing:"\u0110ang t\u1EA3i l\xEAn",labelFileProcessingComplete:"T\u1EA3i l\xEAn th\xE0nh c\xF4ng",labelFileProcessingAborted:"\u0110\xE3 hu\u1EF7 t\u1EA3i l\xEAn",labelFileProcessingError:"L\u1ED7i khi t\u1EA3i l\xEAn",labelFileProcessingRevertError:"L\u1ED7i khi ho\xE0n nguy\xEAn",labelFileRemoveError:"L\u1ED7i khi x\xF3a",labelTapToCancel:"nh\u1EA5n \u0111\u1EC3 h\u1EE7y",labelTapToRetry:"nh\u1EA5n \u0111\u1EC3 th\u1EED l\u1EA1i",labelTapToUndo:"nh\u1EA5n \u0111\u1EC3 ho\xE0n t\xE1c",labelButtonRemoveItem:"Xo\xE1",labelButtonAbortItemLoad:"Hu\u1EF7 b\u1ECF",labelButtonRetryItemLoad:"Th\u1EED l\u1EA1i",labelButtonAbortItemProcessing:"H\u1EE7y b\u1ECF",labelButtonUndoItemProcessing:"Ho\xE0n t\xE1c",labelButtonRetryItemProcessing:"Th\u1EED l\u1EA1i",labelButtonProcessItem:"T\u1EA3i l\xEAn",labelMaxFileSizeExceeded:"T\u1EADp tin qu\xE1 l\u1EDBn",labelMaxFileSize:"K\xEDch th\u01B0\u1EDBc t\u1EC7p t\u1ED1i \u0111a l\xE0 {filesize}",labelMaxTotalFileSizeExceeded:"\u0110\xE3 v\u01B0\u1EE3t qu\xE1 t\u1ED5ng k\xEDch th\u01B0\u1EDBc t\u1ED1i \u0111a",labelMaxTotalFileSize:"T\u1ED5ng k\xEDch th\u01B0\u1EDBc t\u1EC7p t\u1ED1i \u0111a l\xE0 {filesize}",labelFileTypeNotAllowed:"T\u1EC7p thu\u1ED9c lo\u1EA1i kh\xF4ng h\u1EE3p l\u1EC7",fileValidateTypeLabelExpectedTypes:"Ki\u1EC3u t\u1EC7p h\u1EE3p l\u1EC7 l\xE0 {allButLastType} ho\u1EB7c {lastType}",imageValidateSizeLabelFormatError:"Lo\u1EA1i h\xECnh \u1EA3nh kh\xF4ng \u0111\u01B0\u1EE3c h\u1ED7 tr\u1EE3",imageValidateSizeLabelImageSizeTooSmall:"H\xECnh \u1EA3nh qu\xE1 nh\u1ECF",imageValidateSizeLabelImageSizeTooBig:"H\xECnh \u1EA3nh qu\xE1 l\u1EDBn",imageValidateSizeLabelExpectedMinSize:"K\xEDch th\u01B0\u1EDBc t\u1ED1i thi\u1EC3u l\xE0 {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"K\xEDch th\u01B0\u1EDBc t\u1ED1i \u0111a l\xE0 {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u0110\u1ED9 ph\xE2n gi\u1EA3i qu\xE1 th\u1EA5p",imageValidateSizeLabelImageResolutionTooHigh:"\u0110\u1ED9 ph\xE2n gi\u1EA3i qu\xE1 cao",imageValidateSizeLabelExpectedMinResolution:"\u0110\u1ED9 ph\xE2n gi\u1EA3i t\u1ED1i thi\u1EC3u l\xE0 {minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u0110\u1ED9 ph\xE2n gi\u1EA3i t\u1ED1i \u0111a l\xE0 {maxResolution}"};var Co={labelIdle:'\u62D6\u653E\u6587\u4EF6\uFF0C\u6216\u8005 \u6D4F\u89C8 ',labelInvalidField:"\u5B57\u6BB5\u5305\u542B\u65E0\u6548\u6587\u4EF6",labelFileWaitingForSize:"\u8BA1\u7B97\u6587\u4EF6\u5927\u5C0F",labelFileSizeNotAvailable:"\u6587\u4EF6\u5927\u5C0F\u4E0D\u53EF\u7528",labelFileLoading:"\u52A0\u8F7D",labelFileLoadError:"\u52A0\u8F7D\u9519\u8BEF",labelFileProcessing:"\u4E0A\u4F20",labelFileProcessingComplete:"\u5DF2\u4E0A\u4F20",labelFileProcessingAborted:"\u4E0A\u4F20\u5DF2\u53D6\u6D88",labelFileProcessingError:"\u4E0A\u4F20\u51FA\u9519",labelFileProcessingRevertError:"\u8FD8\u539F\u51FA\u9519",labelFileRemoveError:"\u5220\u9664\u51FA\u9519",labelTapToCancel:"\u70B9\u51FB\u53D6\u6D88",labelTapToRetry:"\u70B9\u51FB\u91CD\u8BD5",labelTapToUndo:"\u70B9\u51FB\u64A4\u6D88",labelButtonRemoveItem:"\u5220\u9664",labelButtonAbortItemLoad:"\u4E2D\u6B62",labelButtonRetryItemLoad:"\u91CD\u8BD5",labelButtonAbortItemProcessing:"\u53D6\u6D88",labelButtonUndoItemProcessing:"\u64A4\u6D88",labelButtonRetryItemProcessing:"\u91CD\u8BD5",labelButtonProcessItem:"\u4E0A\u4F20",labelMaxFileSizeExceeded:"\u6587\u4EF6\u592A\u5927",labelMaxFileSize:"\u6700\u5927\u503C: {filesize}",labelMaxTotalFileSizeExceeded:"\u8D85\u8FC7\u6700\u5927\u6587\u4EF6\u5927\u5C0F",labelMaxTotalFileSize:"\u6700\u5927\u6587\u4EF6\u5927\u5C0F\uFF1A{filesize}",labelFileTypeNotAllowed:"\u6587\u4EF6\u7C7B\u578B\u65E0\u6548",fileValidateTypeLabelExpectedTypes:"\u5E94\u4E3A {allButLastType} \u6216 {lastType}",imageValidateSizeLabelFormatError:"\u4E0D\u652F\u6301\u56FE\u50CF\u7C7B\u578B",imageValidateSizeLabelImageSizeTooSmall:"\u56FE\u50CF\u592A\u5C0F",imageValidateSizeLabelImageSizeTooBig:"\u56FE\u50CF\u592A\u5927",imageValidateSizeLabelExpectedMinSize:"\u6700\u5C0F\u503C: {minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u6700\u5927\u503C: {maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u5206\u8FA8\u7387\u592A\u4F4E",imageValidateSizeLabelImageResolutionTooHigh:"\u5206\u8FA8\u7387\u592A\u9AD8",imageValidateSizeLabelExpectedMinResolution:"\u6700\u5C0F\u5206\u8FA8\u7387\uFF1A{minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u6700\u5927\u5206\u8FA8\u7387\uFF1A{maxResolution}"};var zo={labelIdle:'\u62D6\u653E\u6A94\u6848\uFF0C\u6216\u8005 \u700F\u89BD ',labelInvalidField:"\u4E0D\u652F\u63F4\u6B64\u6A94\u6848",labelFileWaitingForSize:"\u6B63\u5728\u8A08\u7B97\u6A94\u6848\u5927\u5C0F",labelFileSizeNotAvailable:"\u6A94\u6848\u5927\u5C0F\u4E0D\u7B26",labelFileLoading:"\u8B80\u53D6\u4E2D",labelFileLoadError:"\u8B80\u53D6\u932F\u8AA4",labelFileProcessing:"\u4E0A\u50B3",labelFileProcessingComplete:"\u5DF2\u4E0A\u50B3",labelFileProcessingAborted:"\u4E0A\u50B3\u5DF2\u53D6\u6D88",labelFileProcessingError:"\u4E0A\u50B3\u767C\u751F\u932F\u8AA4",labelFileProcessingRevertError:"\u9084\u539F\u932F\u8AA4",labelFileRemoveError:"\u522A\u9664\u932F\u8AA4",labelTapToCancel:"\u9EDE\u64CA\u53D6\u6D88",labelTapToRetry:"\u9EDE\u64CA\u91CD\u8A66",labelTapToUndo:"\u9EDE\u64CA\u9084\u539F",labelButtonRemoveItem:"\u522A\u9664",labelButtonAbortItemLoad:"\u505C\u6B62",labelButtonRetryItemLoad:"\u91CD\u8A66",labelButtonAbortItemProcessing:"\u53D6\u6D88",labelButtonUndoItemProcessing:"\u53D6\u6D88",labelButtonRetryItemProcessing:"\u91CD\u8A66",labelButtonProcessItem:"\u4E0A\u50B3",labelMaxFileSizeExceeded:"\u6A94\u6848\u904E\u5927",labelMaxFileSize:"\u6700\u5927\u503C\uFF1A{filesize}",labelMaxTotalFileSizeExceeded:"\u8D85\u904E\u6700\u5927\u53EF\u4E0A\u50B3\u5927\u5C0F",labelMaxTotalFileSize:"\u6700\u5927\u53EF\u4E0A\u50B3\u5927\u5C0F\uFF1A{filesize}",labelFileTypeNotAllowed:"\u4E0D\u652F\u63F4\u6B64\u985E\u578B\u6A94\u6848",fileValidateTypeLabelExpectedTypes:"\u61C9\u70BA {allButLastType} \u6216 {lastType}",imageValidateSizeLabelFormatError:"\u4E0D\u652F\u6301\u6B64\u985E\u5716\u7247\u985E\u578B",imageValidateSizeLabelImageSizeTooSmall:"\u5716\u7247\u904E\u5C0F",imageValidateSizeLabelImageSizeTooBig:"\u5716\u7247\u904E\u5927",imageValidateSizeLabelExpectedMinSize:"\u6700\u5C0F\u5C3A\u5BF8\uFF1A{minWidth} \xD7 {minHeight}",imageValidateSizeLabelExpectedMaxSize:"\u6700\u5927\u5C3A\u5BF8\uFF1A{maxWidth} \xD7 {maxHeight}",imageValidateSizeLabelImageResolutionTooLow:"\u89E3\u6790\u5EA6\u904E\u4F4E",imageValidateSizeLabelImageResolutionTooHigh:"\u89E3\u6790\u5EA6\u904E\u9AD8",imageValidateSizeLabelExpectedMinResolution:"\u6700\u4F4E\u89E3\u6790\u5EA6\uFF1A{minResolution}",imageValidateSizeLabelExpectedMaxResolution:"\u6700\u9AD8\u89E3\u6790\u5EA6\uFF1A{maxResolution}"};be(Or);be(Dr);be(Cr);be(Nr);be(Ur);be(Kr);be(eo);be(fo);be(ya);window.FilePond=Ji;function Kf({acceptedFileTypes:e,imageEditorEmptyFillColor:t,imageEditorMode:i,imageEditorViewportHeight:a,imageEditorViewportWidth:n,deleteUploadedFileUsing:r,isDeletable:o,isDisabled:l,getUploadedFilesUsing:s,imageCropAspectRatio:u,imagePreviewHeight:c,imageResizeMode:d,imageResizeTargetHeight:h,imageResizeTargetWidth:f,imageResizeUpscale:p,isAvatar:m,hasImageEditor:g,hasCircleCropper:b,canEditSvgs:E,isSvgEditingConfirmed:T,confirmSvgEditingMessage:_,disabledSvgEditingMessage:y,isDownloadable:I,isMultiple:v,isOpenable:R,isPreviewable:S,isReorderable:D,loadingIndicatorPosition:x,locale:O,maxFiles:z,maxSize:A,minSize:F,panelAspectRatio:w,panelLayout:L,placeholder:C,removeUploadedFileButtonPosition:P,removeUploadedFileUsing:V,reorderUploadedFilesUsing:G,shouldAppendFiles:q,shouldOrientImageFromExif:X,shouldTransformImage:j,state:de,uploadButtonPosition:U,uploadingMessage:W,uploadProgressIndicatorPosition:$,uploadUsing:oe}){return{fileKeyIndex:{},pond:null,shouldUpdateState:!0,state:de,lastState:null,uploadedFileIndex:{},isEditorOpen:!1,editingFile:{},currentRatio:"",editor:{},init:async function(){Mt(No[O]??No.en),this.pond=st(this.$refs.input,{acceptedFileTypes:e,allowImageExifOrientation:X,allowPaste:!1,allowRemove:o,allowReorder:D,allowImagePreview:S,allowVideoPreview:S,allowAudioPreview:S,allowImageTransform:j,credits:!1,files:await this.getFiles(),imageCropAspectRatio:u,imagePreviewHeight:c,imageResizeTargetHeight:h,imageResizeTargetWidth:f,imageResizeMode:d,imageResizeUpscale:p,itemInsertLocation:q?"after":"before",...C&&{labelIdle:C},maxFiles:z,maxFileSize:A,minFileSize:F,styleButtonProcessItemPosition:U,styleButtonRemoveItemPosition:P,styleLoadIndicatorPosition:x,stylePanelAspectRatio:w,stylePanelLayout:L,styleProgressIndicatorPosition:$,server:{load:async(B,H)=>{let J=await(await fetch(B,{cache:"no-store"})).blob();H(J)},process:(B,H,Q,J,St,Be)=>{this.shouldUpdateState=!1;let Wt=([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,Yt=>(Yt^crypto.getRandomValues(new Uint8Array(1))[0]&15>>Yt/4).toString(16));oe(Wt,H,Yt=>{this.shouldUpdateState=!0,J(Yt)},St,Be)},remove:async(B,H)=>{let Q=this.uploadedFileIndex[B]??null;Q&&(await r(Q),H())},revert:async(B,H)=>{await V(B),H()}},allowImageEdit:g,imageEditEditor:{open:B=>this.loadEditor(B),onconfirm:()=>{},oncancel:()=>this.closeEditor(),onclose:()=>this.closeEditor()}}),this.$watch("state",async()=>{if(this.pond&&this.shouldUpdateState&&this.state!==void 0){if(this.state!==null&&Object.values(this.state).filter(B=>B.startsWith("livewire-file:")).length){this.lastState=null;return}JSON.stringify(this.state)!==this.lastState&&(this.lastState=JSON.stringify(this.state),this.pond.files=await this.getFiles())}}),this.pond.on("reorderfiles",async B=>{let H=B.map(Q=>Q.source instanceof File?Q.serverId:this.uploadedFileIndex[Q.source]??null).filter(Q=>Q);await G(q?H:H.reverse())}),this.pond.on("initfile",async B=>{I&&(m||this.insertDownloadLink(B))}),this.pond.on("initfile",async B=>{R&&(m||this.insertOpenLink(B))}),this.pond.on("addfilestart",async B=>{B.status===ft.PROCESSING_QUEUED&&this.dispatchFormEvent("form-processing-started",{message:W})});let N=async()=>{this.pond.getFiles().filter(B=>B.status===ft.PROCESSING||B.status===ft.PROCESSING_QUEUED).length||this.dispatchFormEvent("form-processing-finished")};this.pond.on("processfile",N),this.pond.on("processfileabort",N),this.pond.on("processfilerevert",N)},destroy:function(){this.destroyEditor(),ct(this.$refs.input),this.pond=null},dispatchFormEvent:function(N,B={}){this.$el.closest("form")?.dispatchEvent(new CustomEvent(N,{composed:!0,cancelable:!0,detail:B}))},getUploadedFiles:async function(){let N=await s();this.fileKeyIndex=N??{},this.uploadedFileIndex=Object.entries(this.fileKeyIndex).filter(([B,H])=>H?.url).reduce((B,[H,Q])=>(B[Q.url]=H,B),{})},getFiles:async function(){await this.getUploadedFiles();let N=[];for(let B of Object.values(this.fileKeyIndex))B&&N.push({source:B.url,options:{type:"local",...!B.type||/^image/.test(B.type)?{}:{file:{name:B.name,size:B.size,type:B.type}}}});return q?N:N.reverse()},insertDownloadLink:function(N){if(N.origin!==xt.LOCAL)return;let B=this.getDownloadLink(N);B&&document.getElementById(`filepond--item-${N.id}`).querySelector(".filepond--file-info-main").prepend(B)},insertOpenLink:function(N){if(N.origin!==xt.LOCAL)return;let B=this.getOpenLink(N);B&&document.getElementById(`filepond--item-${N.id}`).querySelector(".filepond--file-info-main").prepend(B)},getDownloadLink:function(N){let B=N.source;if(!B)return;let H=document.createElement("a");return H.className="filepond--download-icon",H.href=B,H.download=N.file.name,H},getOpenLink:function(N){let B=N.source;if(!B)return;let H=document.createElement("a");return H.className="filepond--open-icon",H.href=B,H.target="_blank",H},initEditor:function(){l||g&&(this.editor=new Ea(this.$refs.editor,{aspectRatio:n/a,autoCropArea:1,center:!0,crop:N=>{this.$refs.xPositionInput.value=Math.round(N.detail.x),this.$refs.yPositionInput.value=Math.round(N.detail.y),this.$refs.heightInput.value=Math.round(N.detail.height),this.$refs.widthInput.value=Math.round(N.detail.width),this.$refs.rotationInput.value=N.detail.rotate},cropBoxResizable:!0,guides:!0,highlight:!0,responsive:!0,toggleDragModeOnDblclick:!0,viewMode:i,wheelZoomRatio:.02}))},closeEditor:function(){this.editingFile={},this.isEditorOpen=!1,this.destroyEditor()},fixImageDimensions:function(N,B){if(N.type!=="image/svg+xml")return B(N);let H=new FileReader;H.onload=Q=>{let J=new DOMParser().parseFromString(Q.target.result,"image/svg+xml")?.querySelector("svg");if(!J)return B(N);let St=["viewBox","ViewBox","viewbox"].find(Wt=>J.hasAttribute(Wt));if(!St)return B(N);let Be=J.getAttribute(St).split(" ");return!Be||Be.length!==4?B(N):(J.setAttribute("width",parseFloat(Be[2])+"pt"),J.setAttribute("height",parseFloat(Be[3])+"pt"),B(new File([new Blob([new XMLSerializer().serializeToString(J)],{type:"image/svg+xml"})],N.name,{type:"image/svg+xml",_relativePath:""})))},H.readAsText(N)},loadEditor:function(N){if(l||!g||!N)return;let B=N.type==="image/svg+xml";if(!E&&B){alert(y);return}T&&B&&!confirm(_)||this.fixImageDimensions(N,H=>{this.editingFile=H,this.initEditor();let Q=new FileReader;Q.onload=J=>{this.isEditorOpen=!0,setTimeout(()=>this.editor.replace(J.target.result),200)},Q.readAsDataURL(N)})},getRoundedCanvas:function(N){let B=N.width,H=N.height,Q=document.createElement("canvas");Q.width=B,Q.height=H;let J=Q.getContext("2d");return J.imageSmoothingEnabled=!0,J.drawImage(N,0,0,B,H),J.globalCompositeOperation="destination-in",J.beginPath(),J.ellipse(B/2,H/2,B/2,H/2,0,0,2*Math.PI),J.fill(),Q},saveEditor:function(){if(l||!g)return;let N=this.editor.getCroppedCanvas({fillColor:t??"transparent",height:h,imageSmoothingEnabled:!0,imageSmoothingQuality:"high",width:f});b&&(N=this.getRoundedCanvas(N)),N.toBlob(B=>{v&&this.pond.removeFile(this.pond.getFiles().find(H=>H.filename===this.editingFile.name)?.id,{revert:!0}),this.$nextTick(()=>{this.shouldUpdateState=!1;let H=this.editingFile.name.slice(0,this.editingFile.name.lastIndexOf(".")),Q=this.editingFile.name.split(".").pop();Q==="svg"&&(Q="png");let J=/-v(\d+)/;J.test(H)?H=H.replace(J,(St,Be)=>`-v${Number(Be)+1}`):H+="-v1",this.pond.addFile(new File([B],`${H}.${Q}`,{type:this.editingFile.type==="image/svg+xml"||b?"image/png":this.editingFile.type,lastModified:new Date().getTime()})).then(()=>{this.closeEditor()}).catch(()=>{this.closeEditor()})})},b?"image/png":this.editingFile.type)},destroyEditor:function(){this.editor&&typeof this.editor.destroy=="function"&&this.editor.destroy(),this.editor=null}}}var No={ar:po,cs:mo,da:go,de:Eo,en:To,es:Io,fa:bo,fi:_o,fr:Ro,hu:yo,id:So,it:wo,nl:vo,no:Ao,pl:Lo,pt_BR:bi,pt_PT:bi,ro:Mo,ru:Oo,sv:xo,tr:Do,uk:Po,vi:Fo,zh_CN:Co,zh_TW:zo};export{Kf as default}; -/*! Bundled license information: - -filepond/dist/filepond.esm.js: - (*! - * FilePond 4.30.6 - * Licensed under MIT, https://opensource.org/licenses/MIT/ - * Please visit https://pqina.nl/filepond/ for details. - *) - -cropperjs/dist/cropper.esm.js: - (*! - * Cropper.js v1.6.1 - * https://fengyuanchen.github.io/cropperjs - * - * Copyright 2015-present Chen Fengyuan - * Released under the MIT license - * - * Date: 2023-09-17T03:44:19.860Z - *) - -filepond-plugin-file-validate-size/dist/filepond-plugin-file-validate-size.esm.js: - (*! - * FilePondPluginFileValidateSize 2.2.8 - * Licensed under MIT, https://opensource.org/licenses/MIT/ - * Please visit https://pqina.nl/filepond/ for details. - *) - -filepond-plugin-file-validate-type/dist/filepond-plugin-file-validate-type.esm.js: - (*! - * FilePondPluginFileValidateType 1.2.8 - * Licensed under MIT, https://opensource.org/licenses/MIT/ - * Please visit https://pqina.nl/filepond/ for details. - *) - -filepond-plugin-image-crop/dist/filepond-plugin-image-crop.esm.js: - (*! - * FilePondPluginImageCrop 2.0.6 - * Licensed under MIT, https://opensource.org/licenses/MIT/ - * Please visit https://pqina.nl/filepond/ for details. - *) - -filepond-plugin-image-edit/dist/filepond-plugin-image-edit.esm.js: - (*! - * FilePondPluginImageEdit 1.6.3 - * Licensed under MIT, https://opensource.org/licenses/MIT/ - * Please visit https://pqina.nl/filepond/ for details. - *) - -filepond-plugin-image-exif-orientation/dist/filepond-plugin-image-exif-orientation.esm.js: - (*! - * FilePondPluginImageExifOrientation 1.0.11 - * Licensed under MIT, https://opensource.org/licenses/MIT/ - * Please visit https://pqina.nl/filepond/ for details. - *) - -filepond-plugin-image-preview/dist/filepond-plugin-image-preview.esm.js: - (*! - * FilePondPluginImagePreview 4.6.12 - * Licensed under MIT, https://opensource.org/licenses/MIT/ - * Please visit https://pqina.nl/filepond/ for details. - *) - -filepond-plugin-image-resize/dist/filepond-plugin-image-resize.esm.js: - (*! - * FilePondPluginImageResize 2.0.10 - * Licensed under MIT, https://opensource.org/licenses/MIT/ - * Please visit https://pqina.nl/filepond/ for details. - *) - -filepond-plugin-image-transform/dist/filepond-plugin-image-transform.esm.js: - (*! - * FilePondPluginImageTransform 3.8.7 - * Licensed under MIT, https://opensource.org/licenses/MIT/ - * Please visit https://pqina.nl/filepond/ for details. - *) - -filepond-plugin-media-preview/dist/filepond-plugin-media-preview.esm.js: - (*! - * FilePondPluginMediaPreview 1.0.11 - * Licensed under MIT, https://opensource.org/licenses/MIT/ - * Please visit undefined for details. - *) -*/ diff --git a/vendor/filament/forms/dist/components/key-value.js b/vendor/filament/forms/dist/components/key-value.js deleted file mode 100644 index 3450bdff..00000000 --- a/vendor/filament/forms/dist/components/key-value.js +++ /dev/null @@ -1 +0,0 @@ -function r({state:i}){return{state:i,rows:[],shouldUpdateRows:!0,init:function(){this.updateRows(),this.rows.length<=0?this.rows.push({key:"",value:""}):this.updateState(),this.$watch("state",(t,e)=>{let s=o=>o===null?0:Array.isArray(o)?o.length:typeof o!="object"?0:Object.keys(o).length;s(t)===0&&s(e)===0||this.updateRows()})},addRow:function(){this.rows.push({key:"",value:""}),this.updateState()},deleteRow:function(t){this.rows.splice(t,1),this.rows.length<=0&&this.addRow(),this.updateState()},reorderRows:function(t){let e=Alpine.raw(this.rows),s=e.splice(t.oldIndex,1)[0];e.splice(t.newIndex,0,s),this.rows=e,this.updateState()},updateRows:function(){if(!this.shouldUpdateRows){this.shouldUpdateRows=!0;return}let t=[];for(let[e,s]of Object.entries(this.state??{}))t.push({key:e,value:s});this.rows=t},updateState:function(){let t={};this.rows.forEach(e=>{e.key===""||e.key===null||(t[e.key]=e.value)}),this.shouldUpdateRows=!1,this.state=t}}}export{r as default}; diff --git a/vendor/filament/forms/dist/components/markdown-editor.js b/vendor/filament/forms/dist/components/markdown-editor.js deleted file mode 100644 index 99ce94ab..00000000 --- a/vendor/filament/forms/dist/components/markdown-editor.js +++ /dev/null @@ -1,51 +0,0 @@ -var ss=Object.defineProperty;var Sd=Object.getOwnPropertyDescriptor;var Td=Object.getOwnPropertyNames;var Ld=Object.prototype.hasOwnProperty;var Cd=(o,p)=>()=>(o&&(p=o(o=0)),p);var Ke=(o,p)=>()=>(p||o((p={exports:{}}).exports,p),p.exports);var Ed=(o,p,v,C)=>{if(p&&typeof p=="object"||typeof p=="function")for(let b of Td(p))!Ld.call(o,b)&&b!==v&&ss(o,b,{get:()=>p[b],enumerable:!(C=Sd(p,b))||C.enumerable});return o};var zd=o=>Ed(ss({},"__esModule",{value:!0}),o);var We=Ke((Yo,Qo)=>{(function(o,p){typeof Yo=="object"&&typeof Qo<"u"?Qo.exports=p():typeof define=="function"&&define.amd?define(p):(o=o||self,o.CodeMirror=p())})(Yo,function(){"use strict";var o=navigator.userAgent,p=navigator.platform,v=/gecko\/\d/i.test(o),C=/MSIE \d/.test(o),b=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(o),k=/Edge\/(\d+)/.exec(o),s=C||b||k,g=s&&(C?document.documentMode||6:+(k||b)[1]),h=!k&&/WebKit\//.test(o),S=h&&/Qt\/\d+\.\d+/.test(o),w=!k&&/Chrome\/(\d+)/.exec(o),c=w&&+w[1],d=/Opera\//.test(o),T=/Apple Computer/.test(navigator.vendor),E=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(o),z=/PhantomJS/.test(o),y=T&&(/Mobile\/\w+/.test(o)||navigator.maxTouchPoints>2),R=/Android/.test(o),M=y||R||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(o),H=y||/Mac/.test(p),Z=/\bCrOS\b/.test(o),ee=/win/i.test(p),re=d&&o.match(/Version\/(\d*\.\d*)/);re&&(re=Number(re[1])),re&&re>=15&&(d=!1,h=!0);var N=H&&(S||d&&(re==null||re<12.11)),F=v||s&&g>=9;function D(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var Q=function(e,t){var n=e.className,r=D(t).exec(n);if(r){var i=n.slice(r.index+r[0].length);e.className=n.slice(0,r.index)+(i?r[1]+i:"")}};function j(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function V(e,t){return j(e).appendChild(t)}function x(e,t,n,r){var i=document.createElement(e);if(n&&(i.className=n),r&&(i.style.cssText=r),typeof t=="string")i.appendChild(document.createTextNode(t));else if(t)for(var a=0;a=t)return l+(t-a);l+=u-a,l+=n-l%n,a=u+1}}var qe=function(){this.id=null,this.f=null,this.time=0,this.handler=Ee(this.onTimeout,this)};qe.prototype.onTimeout=function(e){e.id=0,e.time<=+new Date?e.f():setTimeout(e.handler,e.time-+new Date)},qe.prototype.set=function(e,t){this.f=t;var n=+new Date+e;(!this.id||n=t)return r+Math.min(l,t-i);if(i+=a-r,i+=n-i%n,r=a+1,i>=t)return r}}var U=[""];function G(e){for(;U.length<=e;)U.push(ce(U)+" ");return U[e]}function ce(e){return e[e.length-1]}function Be(e,t){for(var n=[],r=0;r"\x80"&&(e.toUpperCase()!=e.toLowerCase()||Ue.test(e))}function Me(e,t){return t?t.source.indexOf("\\w")>-1&&we(e)?!0:t.test(e):we(e)}function Le(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var $=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function W(e){return e.charCodeAt(0)>=768&&$.test(e)}function se(e,t,n){for(;(n<0?t>0:tn?-1:1;;){if(t==n)return t;var i=(t+n)/2,a=r<0?Math.ceil(i):Math.floor(i);if(a==t)return e(a)?t:n;e(a)?n=a:t=a+r}}function nt(e,t,n,r){if(!e)return r(t,n,"ltr",0);for(var i=!1,a=0;at||t==n&&l.to==t)&&(r(Math.max(l.from,t),Math.min(l.to,n),l.level==1?"rtl":"ltr",a),i=!0)}i||r(t,n,"ltr")}var dt=null;function Pt(e,t,n){var r;dt=null;for(var i=0;it)return i;a.to==t&&(a.from!=a.to&&n=="before"?r=i:dt=i),a.from==t&&(a.from!=a.to&&n!="before"?r=i:dt=i)}return r??dt}var It=function(){var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";function n(m){return m<=247?e.charAt(m):1424<=m&&m<=1524?"R":1536<=m&&m<=1785?t.charAt(m-1536):1774<=m&&m<=2220?"r":8192<=m&&m<=8203?"w":m==8204?"b":"L"}var r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,i=/[stwN]/,a=/[LRr]/,l=/[Lb1n]/,u=/[1n]/;function f(m,A,P){this.level=m,this.from=A,this.to=P}return function(m,A){var P=A=="ltr"?"L":"R";if(m.length==0||A=="ltr"&&!r.test(m))return!1;for(var J=m.length,Y=[],ie=0;ie-1&&(r[t]=i.slice(0,a).concat(i.slice(a+1)))}}}function it(e,t){var n=nr(e,t);if(n.length)for(var r=Array.prototype.slice.call(arguments,2),i=0;i0}function Wt(e){e.prototype.on=function(t,n){Fe(this,t,n)},e.prototype.off=function(t,n){_t(this,t,n)}}function kt(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function Hr(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function Ct(e){return e.defaultPrevented!=null?e.defaultPrevented:e.returnValue==!1}function dr(e){kt(e),Hr(e)}function yn(e){return e.target||e.srcElement}function Ut(e){var t=e.which;return t==null&&(e.button&1?t=1:e.button&2?t=3:e.button&4&&(t=2)),H&&e.ctrlKey&&t==1&&(t=3),t}var eo=function(){if(s&&g<9)return!1;var e=x("div");return"draggable"in e||"dragDrop"in e}(),Br;function ei(e){if(Br==null){var t=x("span","\u200B");V(e,x("span",[t,document.createTextNode("x")])),e.firstChild.offsetHeight!=0&&(Br=t.offsetWidth<=1&&t.offsetHeight>2&&!(s&&g<8))}var n=Br?x("span","\u200B"):x("span","\xA0",null,"display: inline-block; width: 1px; margin-right: -1px");return n.setAttribute("cm-text",""),n}var xn;function pr(e){if(xn!=null)return xn;var t=V(e,document.createTextNode("A\u062EA")),n=X(t,0,1).getBoundingClientRect(),r=X(t,1,2).getBoundingClientRect();return j(e),!n||n.left==n.right?!1:xn=r.right-n.right<3}var Bt=` - -b`.split(/\n/).length!=3?function(e){for(var t=0,n=[],r=e.length;t<=r;){var i=e.indexOf(` -`,t);i==-1&&(i=e.length);var a=e.slice(t,e.charAt(i-1)=="\r"?i-1:i),l=a.indexOf("\r");l!=-1?(n.push(a.slice(0,l)),t+=l+1):(n.push(a),t=i+1)}return n}:function(e){return e.split(/\r\n?|\n/)},hr=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch{return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch{}return!t||t.parentElement()!=e?!1:t.compareEndPoints("StartToEnd",t)!=0},ti=function(){var e=x("div");return"oncopy"in e?!0:(e.setAttribute("oncopy","return;"),typeof e.oncopy=="function")}(),$t=null;function to(e){if($t!=null)return $t;var t=V(e,x("span","x")),n=t.getBoundingClientRect(),r=X(t,0,1).getBoundingClientRect();return $t=Math.abs(n.left-r.left)>1}var Wr={},Kt={};function Gt(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),Wr[e]=t}function Cr(e,t){Kt[e]=t}function Ur(e){if(typeof e=="string"&&Kt.hasOwnProperty(e))e=Kt[e];else if(e&&typeof e.name=="string"&&Kt.hasOwnProperty(e.name)){var t=Kt[e.name];typeof t=="string"&&(t={name:t}),e=oe(t,e),e.name=t.name}else{if(typeof e=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return Ur("application/xml");if(typeof e=="string"&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return Ur("application/json")}return typeof e=="string"?{name:e}:e||{name:"null"}}function $r(e,t){t=Ur(t);var n=Wr[t.name];if(!n)return $r(e,"text/plain");var r=n(e,t);if(gr.hasOwnProperty(t.name)){var i=gr[t.name];for(var a in i)i.hasOwnProperty(a)&&(r.hasOwnProperty(a)&&(r["_"+a]=r[a]),r[a]=i[a])}if(r.name=t.name,t.helperType&&(r.helperType=t.helperType),t.modeProps)for(var l in t.modeProps)r[l]=t.modeProps[l];return r}var gr={};function Kr(e,t){var n=gr.hasOwnProperty(e)?gr[e]:gr[e]={};ge(t,n)}function Vt(e,t){if(t===!0)return t;if(e.copyState)return e.copyState(t);var n={};for(var r in t){var i=t[r];i instanceof Array&&(i=i.concat([])),n[r]=i}return n}function _n(e,t){for(var n;e.innerMode&&(n=e.innerMode(t),!(!n||n.mode==e));)t=n.state,e=n.mode;return n||{mode:e,state:t}}function Gr(e,t,n){return e.startState?e.startState(t,n):!0}var at=function(e,t,n){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=n};at.prototype.eol=function(){return this.pos>=this.string.length},at.prototype.sol=function(){return this.pos==this.lineStart},at.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},at.prototype.next=function(){if(this.post},at.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},at.prototype.skipToEnd=function(){this.pos=this.string.length},at.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},at.prototype.backUp=function(e){this.pos-=e},at.prototype.column=function(){return this.lastColumnPos0?null:(a&&t!==!1&&(this.pos+=a[0].length),a)}},at.prototype.current=function(){return this.string.slice(this.start,this.pos)},at.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},at.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},at.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};function Ae(e,t){if(t-=e.first,t<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var n=e;!n.lines;)for(var r=0;;++r){var i=n.children[r],a=i.chunkSize();if(t=e.first&&tn?ne(n,Ae(e,n).text.length):Sc(t,Ae(e,t.line).text.length)}function Sc(e,t){var n=e.ch;return n==null||n>t?ne(e.line,t):n<0?ne(e.line,0):e}function ca(e,t){for(var n=[],r=0;rthis.maxLookAhead&&(this.maxLookAhead=e),t},Jt.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},Jt.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},Jt.fromSaved=function(e,t,n){return t instanceof ri?new Jt(e,Vt(e.mode,t.state),n,t.lookAhead):new Jt(e,Vt(e.mode,t),n)},Jt.prototype.save=function(e){var t=e!==!1?Vt(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new ri(t,this.maxLookAhead):t};function fa(e,t,n,r){var i=[e.state.modeGen],a={};va(e,t.text,e.doc.mode,n,function(m,A){return i.push(m,A)},a,r);for(var l=n.state,u=function(m){n.baseTokens=i;var A=e.state.overlays[m],P=1,J=0;n.state=!0,va(e,t.text,A.mode,n,function(Y,ie){for(var ue=P;JY&&i.splice(P,1,Y,i[P+1],me),P+=2,J=Math.min(Y,me)}if(ie)if(A.opaque)i.splice(ue,P-ue,Y,"overlay "+ie),P=ue+2;else for(;uee.options.maxHighlightLength&&Vt(e.doc.mode,r.state),a=fa(e,t,r);i&&(r.state=i),t.stateAfter=r.save(!i),t.styles=a.styles,a.classes?t.styleClasses=a.classes:t.styleClasses&&(t.styleClasses=null),n===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function wn(e,t,n){var r=e.doc,i=e.display;if(!r.mode.startState)return new Jt(r,!0,t);var a=Tc(e,t,n),l=a>r.first&&Ae(r,a-1).stateAfter,u=l?Jt.fromSaved(r,l,a):new Jt(r,Gr(r.mode),a);return r.iter(a,t,function(f){ro(e,f.text,u);var m=u.line;f.stateAfter=m==t-1||m%5==0||m>=i.viewFrom&&mt.start)return a}throw new Error("Mode "+e.name+" failed to advance stream.")}var ha=function(e,t,n){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=n};function ga(e,t,n,r){var i=e.doc,a=i.mode,l;t=Re(i,t);var u=Ae(i,t.line),f=wn(e,t.line,n),m=new at(u.text,e.options.tabSize,f),A;for(r&&(A=[]);(r||m.pose.options.maxHighlightLength?(u=!1,l&&ro(e,t,r,A.pos),A.pos=t.length,P=null):P=ma(no(n,A,r.state,J),a),J){var Y=J[0].name;Y&&(P="m-"+(P?Y+" "+P:Y))}if(!u||m!=P){for(;fl;--u){if(u<=a.first)return a.first;var f=Ae(a,u-1),m=f.stateAfter;if(m&&(!n||u+(m instanceof ri?m.lookAhead:0)<=a.modeFrontier))return u;var A=Oe(f.text,null,e.options.tabSize);(i==null||r>A)&&(i=u-1,r=A)}return i}function Lc(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontiern;r--){var i=Ae(e,r).stateAfter;if(i&&(!(i instanceof ri)||r+i.lookAhead=t:a.to>t);(r||(r=[])).push(new ni(l,a.from,f?null:a.to))}}return r}function Dc(e,t,n){var r;if(e)for(var i=0;i=t:a.to>t);if(u||a.from==t&&l.type=="bookmark"&&(!n||a.marker.insertLeft)){var f=a.from==null||(l.inclusiveLeft?a.from<=t:a.from0&&u)for(var Ce=0;Ce0)){var A=[f,1],P=ye(m.from,u.from),J=ye(m.to,u.to);(P<0||!l.inclusiveLeft&&!P)&&A.push({from:m.from,to:u.from}),(J>0||!l.inclusiveRight&&!J)&&A.push({from:u.to,to:m.to}),i.splice.apply(i,A),f+=A.length-3}}return i}function xa(e){var t=e.markedSpans;if(t){for(var n=0;nt)&&(!r||oo(r,a.marker)<0)&&(r=a.marker)}return r}function Sa(e,t,n,r,i){var a=Ae(e,t),l=or&&a.markedSpans;if(l)for(var u=0;u=0&&P<=0||A<=0&&P>=0)&&(A<=0&&(f.marker.inclusiveRight&&i.inclusiveLeft?ye(m.to,n)>=0:ye(m.to,n)>0)||A>=0&&(f.marker.inclusiveRight&&i.inclusiveLeft?ye(m.from,r)<=0:ye(m.from,r)<0)))return!0}}}function Zt(e){for(var t;t=wa(e);)e=t.find(-1,!0).line;return e}function Fc(e){for(var t;t=ai(e);)e=t.find(1,!0).line;return e}function Nc(e){for(var t,n;t=ai(e);)e=t.find(1,!0).line,(n||(n=[])).push(e);return n}function ao(e,t){var n=Ae(e,t),r=Zt(n);return n==r?t:_(r)}function Ta(e,t){if(t>e.lastLine())return t;var n=Ae(e,t),r;if(!mr(e,n))return t;for(;r=ai(n);)n=r.find(1,!0).line;return _(n)+1}function mr(e,t){var n=or&&t.markedSpans;if(n){for(var r=void 0,i=0;it.maxLineLength&&(t.maxLineLength=i,t.maxLine=r)})}var Xr=function(e,t,n){this.text=e,_a(this,t),this.height=n?n(this):1};Xr.prototype.lineNo=function(){return _(this)},Wt(Xr);function Oc(e,t,n,r){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),e.order!=null&&(e.order=null),xa(e),_a(e,n);var i=r?r(e):1;i!=e.height&&jt(e,i)}function Pc(e){e.parent=null,xa(e)}var jc={},Rc={};function La(e,t){if(!e||/^\s*$/.test(e))return null;var n=t.addModeClass?Rc:jc;return n[e]||(n[e]=e.replace(/\S+/g,"cm-$&"))}function Ca(e,t){var n=K("span",null,null,h?"padding-right: .1px":null),r={pre:K("pre",[n],"CodeMirror-line"),content:n,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var a=i?t.rest[i-1]:t.line,l=void 0;r.pos=0,r.addToken=Bc,pr(e.display.measure)&&(l=Pe(a,e.doc.direction))&&(r.addToken=Uc(r.addToken,l)),r.map=[];var u=t!=e.display.externalMeasured&&_(a);$c(a,r,da(e,a,u)),a.styleClasses&&(a.styleClasses.bgClass&&(r.bgClass=xe(a.styleClasses.bgClass,r.bgClass||"")),a.styleClasses.textClass&&(r.textClass=xe(a.styleClasses.textClass,r.textClass||""))),r.map.length==0&&r.map.push(0,0,r.content.appendChild(ei(e.display.measure))),i==0?(t.measure.map=r.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(r.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(h){var f=r.content.lastChild;(/\bcm-tab\b/.test(f.className)||f.querySelector&&f.querySelector(".cm-tab"))&&(r.content.className="cm-tab-wrap-hack")}return it(e,"renderLine",e,t.line,r.pre),r.pre.className&&(r.textClass=xe(r.pre.className,r.textClass||"")),r}function Hc(e){var t=x("span","\u2022","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function Bc(e,t,n,r,i,a,l){if(t){var u=e.splitSpaces?Wc(t,e.trailingSpace):t,f=e.cm.state.specialChars,m=!1,A;if(!f.test(t))e.col+=t.length,A=document.createTextNode(u),e.map.push(e.pos,e.pos+t.length,A),s&&g<9&&(m=!0),e.pos+=t.length;else{A=document.createDocumentFragment();for(var P=0;;){f.lastIndex=P;var J=f.exec(t),Y=J?J.index-P:t.length-P;if(Y){var ie=document.createTextNode(u.slice(P,P+Y));s&&g<9?A.appendChild(x("span",[ie])):A.appendChild(ie),e.map.push(e.pos,e.pos+Y,ie),e.col+=Y,e.pos+=Y}if(!J)break;P+=Y+1;var ue=void 0;if(J[0]==" "){var me=e.cm.options.tabSize,ve=me-e.col%me;ue=A.appendChild(x("span",G(ve),"cm-tab")),ue.setAttribute("role","presentation"),ue.setAttribute("cm-text"," "),e.col+=ve}else J[0]=="\r"||J[0]==` -`?(ue=A.appendChild(x("span",J[0]=="\r"?"\u240D":"\u2424","cm-invalidchar")),ue.setAttribute("cm-text",J[0]),e.col+=1):(ue=e.cm.options.specialCharPlaceholder(J[0]),ue.setAttribute("cm-text",J[0]),s&&g<9?A.appendChild(x("span",[ue])):A.appendChild(ue),e.col+=1);e.map.push(e.pos,e.pos+1,ue),e.pos++}}if(e.trailingSpace=u.charCodeAt(t.length-1)==32,n||r||i||m||a||l){var _e=n||"";r&&(_e+=r),i&&(_e+=i);var be=x("span",[A],_e,a);if(l)for(var Ce in l)l.hasOwnProperty(Ce)&&Ce!="style"&&Ce!="class"&&be.setAttribute(Ce,l[Ce]);return e.content.appendChild(be)}e.content.appendChild(A)}}function Wc(e,t){if(e.length>1&&!/ /.test(e))return e;for(var n=t,r="",i=0;im&&P.from<=m));J++);if(P.to>=A)return e(n,r,i,a,l,u,f);e(n,r.slice(0,P.to-m),i,a,null,u,f),a=null,r=r.slice(P.to-m),m=P.to}}}function Ea(e,t,n,r){var i=!r&&n.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!r&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",n.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function $c(e,t,n){var r=e.markedSpans,i=e.text,a=0;if(!r){for(var l=1;lf||$e.collapsed&&Ie.to==f&&Ie.from==f)){if(Ie.to!=null&&Ie.to!=f&&Y>Ie.to&&(Y=Ie.to,ue=""),$e.className&&(ie+=" "+$e.className),$e.css&&(J=(J?J+";":"")+$e.css),$e.startStyle&&Ie.from==f&&(me+=" "+$e.startStyle),$e.endStyle&&Ie.to==Y&&(Ce||(Ce=[])).push($e.endStyle,Ie.to),$e.title&&((_e||(_e={})).title=$e.title),$e.attributes)for(var Ve in $e.attributes)(_e||(_e={}))[Ve]=$e.attributes[Ve];$e.collapsed&&(!ve||oo(ve.marker,$e)<0)&&(ve=Ie)}else Ie.from>f&&Y>Ie.from&&(Y=Ie.from)}if(Ce)for(var vt=0;vt=u)break;for(var Ot=Math.min(u,Y);;){if(A){var At=f+A.length;if(!ve){var ut=At>Ot?A.slice(0,Ot-f):A;t.addToken(t,ut,P?P+ie:ie,me,f+ut.length==Y?ue:"",J,_e)}if(At>=Ot){A=A.slice(Ot-f),f=Ot;break}f=At,me=""}A=i.slice(a,a=n[m++]),P=La(n[m++],t.cm.options)}}}function za(e,t,n){this.line=t,this.rest=Nc(t),this.size=this.rest?_(ce(this.rest))-n+1:1,this.node=this.text=null,this.hidden=mr(e,t)}function si(e,t,n){for(var r=[],i,a=t;a2&&a.push((f.bottom+m.top)/2-n.top)}}a.push(n.bottom-n.top)}}function Na(e,t,n){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};if(e.rest){for(var r=0;rn)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}}function rf(e,t){t=Zt(t);var n=_(t),r=e.display.externalMeasured=new za(e.doc,t,n);r.lineN=n;var i=r.built=Ca(e,r);return r.text=i.pre,V(e.display.lineMeasure,i.pre),r}function Oa(e,t,n,r){return tr(e,Qr(e,t),n,r)}function po(e,t){if(t>=e.display.viewFrom&&t=n.lineN&&tt)&&(a=f-u,i=a-1,t>=f&&(l="right")),i!=null){if(r=e[m+2],u==f&&n==(r.insertLeft?"left":"right")&&(l=n),n=="left"&&i==0)for(;m&&e[m-2]==e[m-3]&&e[m-1].insertLeft;)r=e[(m-=3)+2],l="left";if(n=="right"&&i==f-u)for(;m=0&&(n=e[i]).left==n.right;i--);return n}function of(e,t,n,r){var i=ja(t.map,n,r),a=i.node,l=i.start,u=i.end,f=i.collapse,m;if(a.nodeType==3){for(var A=0;A<4;A++){for(;l&&W(t.line.text.charAt(i.coverStart+l));)--l;for(;i.coverStart+u0&&(f=r="right");var P;e.options.lineWrapping&&(P=a.getClientRects()).length>1?m=P[r=="right"?P.length-1:0]:m=a.getBoundingClientRect()}if(s&&g<9&&!l&&(!m||!m.left&&!m.right)){var J=a.parentNode.getClientRects()[0];J?m={left:J.left,right:J.left+Jr(e.display),top:J.top,bottom:J.bottom}:m=Pa}for(var Y=m.top-t.rect.top,ie=m.bottom-t.rect.top,ue=(Y+ie)/2,me=t.view.measure.heights,ve=0;ve=r.text.length?(f=r.text.length,m="before"):f<=0&&(f=0,m="after"),!u)return l(m=="before"?f-1:f,m=="before");function A(ie,ue,me){var ve=u[ue],_e=ve.level==1;return l(me?ie-1:ie,_e!=me)}var P=Pt(u,f,m),J=dt,Y=A(f,P,m=="before");return J!=null&&(Y.other=A(f,J,m!="before")),Y}function $a(e,t){var n=0;t=Re(e.doc,t),e.options.lineWrapping||(n=Jr(e.display)*t.ch);var r=Ae(e.doc,t.line),i=ar(r)+ui(e.display);return{left:n,right:n,top:i,bottom:i+r.height}}function go(e,t,n,r,i){var a=ne(e,t,n);return a.xRel=i,r&&(a.outside=r),a}function mo(e,t,n){var r=e.doc;if(n+=e.display.viewOffset,n<0)return go(r.first,0,null,-1,-1);var i=O(r,n),a=r.first+r.size-1;if(i>a)return go(r.first+r.size-1,Ae(r,a).text.length,null,1,1);t<0&&(t=0);for(var l=Ae(r,i);;){var u=lf(e,l,i,t,n),f=Ic(l,u.ch+(u.xRel>0||u.outside>0?1:0));if(!f)return u;var m=f.find(1);if(m.line==i)return m;l=Ae(r,i=m.line)}}function Ka(e,t,n,r){r-=ho(t);var i=t.text.length,a=De(function(l){return tr(e,n,l-1).bottom<=r},i,0);return i=De(function(l){return tr(e,n,l).top>r},a,i),{begin:a,end:i}}function Ga(e,t,n,r){n||(n=Qr(e,t));var i=ci(e,t,tr(e,n,r),"line").top;return Ka(e,t,n,i)}function vo(e,t,n,r){return e.bottom<=n?!1:e.top>n?!0:(r?e.left:e.right)>t}function lf(e,t,n,r,i){i-=ar(t);var a=Qr(e,t),l=ho(t),u=0,f=t.text.length,m=!0,A=Pe(t,e.doc.direction);if(A){var P=(e.options.lineWrapping?uf:sf)(e,t,n,a,A,r,i);m=P.level!=1,u=m?P.from:P.to-1,f=m?P.to:P.from-1}var J=null,Y=null,ie=De(function(Ne){var Ie=tr(e,a,Ne);return Ie.top+=l,Ie.bottom+=l,vo(Ie,r,i,!1)?(Ie.top<=i&&Ie.left<=r&&(J=Ne,Y=Ie),!0):!1},u,f),ue,me,ve=!1;if(Y){var _e=r-Y.left=Ce.bottom?1:0}return ie=se(t.text,ie,1),go(n,ie,me,ve,r-ue)}function sf(e,t,n,r,i,a,l){var u=De(function(P){var J=i[P],Y=J.level!=1;return vo(Xt(e,ne(n,Y?J.to:J.from,Y?"before":"after"),"line",t,r),a,l,!0)},0,i.length-1),f=i[u];if(u>0){var m=f.level!=1,A=Xt(e,ne(n,m?f.from:f.to,m?"after":"before"),"line",t,r);vo(A,a,l,!0)&&A.top>l&&(f=i[u-1])}return f}function uf(e,t,n,r,i,a,l){var u=Ka(e,t,r,l),f=u.begin,m=u.end;/\s/.test(t.text.charAt(m-1))&&m--;for(var A=null,P=null,J=0;J=m||Y.to<=f)){var ie=Y.level!=1,ue=tr(e,r,ie?Math.min(m,Y.to)-1:Math.max(f,Y.from)).right,me=ueme)&&(A=Y,P=me)}}return A||(A=i[i.length-1]),A.fromm&&(A={from:A.from,to:m,level:A.level}),A}var zr;function Vr(e){if(e.cachedTextHeight!=null)return e.cachedTextHeight;if(zr==null){zr=x("pre",null,"CodeMirror-line-like");for(var t=0;t<49;++t)zr.appendChild(document.createTextNode("x")),zr.appendChild(x("br"));zr.appendChild(document.createTextNode("x"))}V(e.measure,zr);var n=zr.offsetHeight/50;return n>3&&(e.cachedTextHeight=n),j(e.measure),n||1}function Jr(e){if(e.cachedCharWidth!=null)return e.cachedCharWidth;var t=x("span","xxxxxxxxxx"),n=x("pre",[t],"CodeMirror-line-like");V(e.measure,n);var r=t.getBoundingClientRect(),i=(r.right-r.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function bo(e){for(var t=e.display,n={},r={},i=t.gutters.clientLeft,a=t.gutters.firstChild,l=0;a;a=a.nextSibling,++l){var u=e.display.gutterSpecs[l].className;n[u]=a.offsetLeft+a.clientLeft+i,r[u]=a.clientWidth}return{fixedPos:yo(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function yo(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function Za(e){var t=Vr(e.display),n=e.options.lineWrapping,r=n&&Math.max(5,e.display.scroller.clientWidth/Jr(e.display)-3);return function(i){if(mr(e.doc,i))return 0;var a=0;if(i.widgets)for(var l=0;l0&&(m=Ae(e.doc,f.line).text).length==f.ch){var A=Oe(m,m.length,e.options.tabSize)-m.length;f=ne(f.line,Math.max(0,Math.round((a-Fa(e.display).left)/Jr(e.display))-A))}return f}function Ar(e,t){if(t>=e.display.viewTo||(t-=e.display.viewFrom,t<0))return null;for(var n=e.display.view,r=0;rt)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)or&&ao(e.doc,t)i.viewFrom?br(e):(i.viewFrom+=r,i.viewTo+=r);else if(t<=i.viewFrom&&n>=i.viewTo)br(e);else if(t<=i.viewFrom){var a=di(e,n,n+r,1);a?(i.view=i.view.slice(a.index),i.viewFrom=a.lineN,i.viewTo+=r):br(e)}else if(n>=i.viewTo){var l=di(e,t,t,-1);l?(i.view=i.view.slice(0,l.index),i.viewTo=l.lineN):br(e)}else{var u=di(e,t,t,-1),f=di(e,n,n+r,1);u&&f?(i.view=i.view.slice(0,u.index).concat(si(e,u.lineN,f.lineN)).concat(i.view.slice(f.index)),i.viewTo+=r):br(e)}var m=i.externalMeasured;m&&(n=i.lineN&&t=r.viewTo)){var a=r.view[Ar(e,t)];if(a.node!=null){var l=a.changes||(a.changes=[]);Se(l,n)==-1&&l.push(n)}}}function br(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function di(e,t,n,r){var i=Ar(e,t),a,l=e.display.view;if(!or||n==e.doc.first+e.doc.size)return{index:i,lineN:n};for(var u=e.display.viewFrom,f=0;f0){if(i==l.length-1)return null;a=u+l[i].size-t,i++}else a=u-t;t+=a,n+=a}for(;ao(e.doc,n)!=n;){if(i==(r<0?0:l.length-1))return null;n+=r*l[i-(r<0?1:0)].size,i+=r}return{index:i,lineN:n}}function cf(e,t,n){var r=e.display,i=r.view;i.length==0||t>=r.viewTo||n<=r.viewFrom?(r.view=si(e,t,n),r.viewFrom=t):(r.viewFrom>t?r.view=si(e,t,r.viewFrom).concat(r.view):r.viewFromn&&(r.view=r.view.slice(0,Ar(e,n)))),r.viewTo=n}function Xa(e){for(var t=e.display.view,n=0,r=0;r=e.display.viewTo||f.to().line0?l:e.defaultCharWidth())+"px"}if(r.other){var u=n.appendChild(x("div","\xA0","CodeMirror-cursor CodeMirror-secondarycursor"));u.style.display="",u.style.left=r.other.left+"px",u.style.top=r.other.top+"px",u.style.height=(r.other.bottom-r.other.top)*.85+"px"}}function pi(e,t){return e.top-t.top||e.left-t.left}function ff(e,t,n){var r=e.display,i=e.doc,a=document.createDocumentFragment(),l=Fa(e.display),u=l.left,f=Math.max(r.sizerWidth,Er(e)-r.sizer.offsetLeft)-l.right,m=i.direction=="ltr";function A(be,Ce,Ne,Ie){Ce<0&&(Ce=0),Ce=Math.round(Ce),Ie=Math.round(Ie),a.appendChild(x("div",null,"CodeMirror-selected","position: absolute; left: "+be+`px; - top: `+Ce+"px; width: "+(Ne??f-be)+`px; - height: `+(Ie-Ce)+"px"))}function P(be,Ce,Ne){var Ie=Ae(i,be),$e=Ie.text.length,Ve,vt;function rt(ut,Dt){return fi(e,ne(be,ut),"div",Ie,Dt)}function Ot(ut,Dt,yt){var ft=Ga(e,Ie,null,ut),ct=Dt=="ltr"==(yt=="after")?"left":"right",lt=yt=="after"?ft.begin:ft.end-(/\s/.test(Ie.text.charAt(ft.end-1))?2:1);return rt(lt,ct)[ct]}var At=Pe(Ie,i.direction);return nt(At,Ce||0,Ne??$e,function(ut,Dt,yt,ft){var ct=yt=="ltr",lt=rt(ut,ct?"left":"right"),qt=rt(Dt-1,ct?"right":"left"),pn=Ce==null&&ut==0,Sr=Ne==null&&Dt==$e,St=ft==0,rr=!At||ft==At.length-1;if(qt.top-lt.top<=3){var bt=(m?pn:Sr)&&St,Zo=(m?Sr:pn)&&rr,cr=bt?u:(ct?lt:qt).left,Nr=Zo?f:(ct?qt:lt).right;A(cr,lt.top,Nr-cr,lt.bottom)}else{var Or,Lt,hn,Xo;ct?(Or=m&&pn&&St?u:lt.left,Lt=m?f:Ot(ut,yt,"before"),hn=m?u:Ot(Dt,yt,"after"),Xo=m&&Sr&&rr?f:qt.right):(Or=m?Ot(ut,yt,"before"):u,Lt=!m&&pn&&St?f:lt.right,hn=!m&&Sr&&rr?u:qt.left,Xo=m?Ot(Dt,yt,"after"):f),A(Or,lt.top,Lt-Or,lt.bottom),lt.bottom0?t.blinker=setInterval(function(){e.hasFocus()||en(e),t.cursorDiv.style.visibility=(n=!n)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function Qa(e){e.hasFocus()||(e.display.input.focus(),e.state.focused||So(e))}function wo(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,e.state.focused&&en(e))},100)}function So(e,t){e.state.delayingBlurEvent&&!e.state.draggingText&&(e.state.delayingBlurEvent=!1),e.options.readOnly!="nocursor"&&(e.state.focused||(it(e,"focus",e,t),e.state.focused=!0,le(e.display.wrapper,"CodeMirror-focused"),!e.curOp&&e.display.selForContextMenu!=e.doc.sel&&(e.display.input.reset(),h&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),ko(e))}function en(e,t){e.state.delayingBlurEvent||(e.state.focused&&(it(e,"blur",e,t),e.state.focused=!1,Q(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function hi(e){for(var t=e.display,n=t.lineDiv.offsetTop,r=Math.max(0,t.scroller.getBoundingClientRect().top),i=t.lineDiv.getBoundingClientRect().top,a=0,l=0;l.005||Y<-.005)&&(ie.display.sizerWidth){var ue=Math.ceil(A/Jr(e.display));ue>e.display.maxLineLength&&(e.display.maxLineLength=ue,e.display.maxLine=u.line,e.display.maxLineChanged=!0)}}}Math.abs(a)>2&&(t.scroller.scrollTop+=a)}function Va(e){if(e.widgets)for(var t=0;t=l&&(a=O(t,ar(Ae(t,f))-e.wrapper.clientHeight),l=f)}return{from:a,to:Math.max(l,a+1)}}function df(e,t){if(!ot(e,"scrollCursorIntoView")){var n=e.display,r=n.sizer.getBoundingClientRect(),i=null,a=n.wrapper.ownerDocument;if(t.top+r.top<0?i=!0:t.bottom+r.top>(a.defaultView.innerHeight||a.documentElement.clientHeight)&&(i=!1),i!=null&&!z){var l=x("div","\u200B",null,`position: absolute; - top: `+(t.top-n.viewOffset-ui(e.display))+`px; - height: `+(t.bottom-t.top+er(e)+n.barHeight)+`px; - left: `+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(l),l.scrollIntoView(i),e.display.lineSpace.removeChild(l)}}}function pf(e,t,n,r){r==null&&(r=0);var i;!e.options.lineWrapping&&t==n&&(n=t.sticky=="before"?ne(t.line,t.ch+1,"before"):t,t=t.ch?ne(t.line,t.sticky=="before"?t.ch-1:t.ch,"after"):t);for(var a=0;a<5;a++){var l=!1,u=Xt(e,t),f=!n||n==t?u:Xt(e,n);i={left:Math.min(u.left,f.left),top:Math.min(u.top,f.top)-r,right:Math.max(u.left,f.left),bottom:Math.max(u.bottom,f.bottom)+r};var m=To(e,i),A=e.doc.scrollTop,P=e.doc.scrollLeft;if(m.scrollTop!=null&&(An(e,m.scrollTop),Math.abs(e.doc.scrollTop-A)>1&&(l=!0)),m.scrollLeft!=null&&(Dr(e,m.scrollLeft),Math.abs(e.doc.scrollLeft-P)>1&&(l=!0)),!l)break}return i}function hf(e,t){var n=To(e,t);n.scrollTop!=null&&An(e,n.scrollTop),n.scrollLeft!=null&&Dr(e,n.scrollLeft)}function To(e,t){var n=e.display,r=Vr(e.display);t.top<0&&(t.top=0);var i=e.curOp&&e.curOp.scrollTop!=null?e.curOp.scrollTop:n.scroller.scrollTop,a=fo(e),l={};t.bottom-t.top>a&&(t.bottom=t.top+a);var u=e.doc.height+co(n),f=t.topu-r;if(t.topi+a){var A=Math.min(t.top,(m?u:t.bottom)-a);A!=i&&(l.scrollTop=A)}var P=e.options.fixedGutter?0:n.gutters.offsetWidth,J=e.curOp&&e.curOp.scrollLeft!=null?e.curOp.scrollLeft:n.scroller.scrollLeft-P,Y=Er(e)-n.gutters.offsetWidth,ie=t.right-t.left>Y;return ie&&(t.right=t.left+Y),t.left<10?l.scrollLeft=0:t.leftY+J-3&&(l.scrollLeft=t.right+(ie?0:10)-Y),l}function Lo(e,t){t!=null&&(mi(e),e.curOp.scrollTop=(e.curOp.scrollTop==null?e.doc.scrollTop:e.curOp.scrollTop)+t)}function tn(e){mi(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function Mn(e,t,n){(t!=null||n!=null)&&mi(e),t!=null&&(e.curOp.scrollLeft=t),n!=null&&(e.curOp.scrollTop=n)}function gf(e,t){mi(e),e.curOp.scrollToPos=t}function mi(e){var t=e.curOp.scrollToPos;if(t){e.curOp.scrollToPos=null;var n=$a(e,t.from),r=$a(e,t.to);Ja(e,n,r,t.margin)}}function Ja(e,t,n,r){var i=To(e,{left:Math.min(t.left,n.left),top:Math.min(t.top,n.top)-r,right:Math.max(t.right,n.right),bottom:Math.max(t.bottom,n.bottom)+r});Mn(e,i.scrollLeft,i.scrollTop)}function An(e,t){Math.abs(e.doc.scrollTop-t)<2||(v||Eo(e,{top:t}),el(e,t,!0),v&&Eo(e),In(e,100))}function el(e,t,n){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),!(e.display.scroller.scrollTop==t&&!n)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function Dr(e,t,n,r){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),!((n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!r)&&(e.doc.scrollLeft=t,ol(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function Dn(e){var t=e.display,n=t.gutters.offsetWidth,r=Math.round(e.doc.height+co(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+er(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:n}}var qr=function(e,t,n){this.cm=n;var r=this.vert=x("div",[x("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=x("div",[x("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");r.tabIndex=i.tabIndex=-1,e(r),e(i),Fe(r,"scroll",function(){r.clientHeight&&t(r.scrollTop,"vertical")}),Fe(i,"scroll",function(){i.clientWidth&&t(i.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,s&&g<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};qr.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,n=e.scrollHeight>e.clientHeight+1,r=e.nativeBarWidth;if(n){this.vert.style.display="block",this.vert.style.bottom=t?r+"px":"0";var i=e.viewHeight-(t?r:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=n?r+"px":"0",this.horiz.style.left=e.barLeft+"px";var a=e.viewWidth-e.barLeft-(n?r:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+a)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(r==0&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?r:0,bottom:t?r:0}},qr.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},qr.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},qr.prototype.zeroWidthHack=function(){var e=H&&!E?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.visibility=this.vert.style.visibility="hidden",this.disableHoriz=new qe,this.disableVert=new qe},qr.prototype.enableZeroWidthBar=function(e,t,n){e.style.visibility="";function r(){var i=e.getBoundingClientRect(),a=n=="vert"?document.elementFromPoint(i.right-1,(i.top+i.bottom)/2):document.elementFromPoint((i.right+i.left)/2,i.bottom-1);a!=e?e.style.visibility="hidden":t.set(1e3,r)}t.set(1e3,r)},qr.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var qn=function(){};qn.prototype.update=function(){return{bottom:0,right:0}},qn.prototype.setScrollLeft=function(){},qn.prototype.setScrollTop=function(){},qn.prototype.clear=function(){};function rn(e,t){t||(t=Dn(e));var n=e.display.barWidth,r=e.display.barHeight;tl(e,t);for(var i=0;i<4&&n!=e.display.barWidth||r!=e.display.barHeight;i++)n!=e.display.barWidth&&e.options.lineWrapping&&hi(e),tl(e,Dn(e)),n=e.display.barWidth,r=e.display.barHeight}function tl(e,t){var n=e.display,r=n.scrollbars.update(t);n.sizer.style.paddingRight=(n.barWidth=r.right)+"px",n.sizer.style.paddingBottom=(n.barHeight=r.bottom)+"px",n.heightForcer.style.borderBottom=r.bottom+"px solid transparent",r.right&&r.bottom?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=r.bottom+"px",n.scrollbarFiller.style.width=r.right+"px"):n.scrollbarFiller.style.display="",r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=r.bottom+"px",n.gutterFiller.style.width=t.gutterWidth+"px"):n.gutterFiller.style.display=""}var rl={native:qr,null:qn};function nl(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&Q(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new rl[e.options.scrollbarStyle](function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),Fe(t,"mousedown",function(){e.state.focused&&setTimeout(function(){return e.display.input.focus()},0)}),t.setAttribute("cm-not-content","true")},function(t,n){n=="horizontal"?Dr(e,t):An(e,t)},e),e.display.scrollbars.addClass&&le(e.display.wrapper,e.display.scrollbars.addClass)}var mf=0;function Ir(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++mf,markArrays:null},Kc(e.curOp)}function Fr(e){var t=e.curOp;t&&Zc(t,function(n){for(var r=0;r=n.viewTo)||n.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new vi(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function yf(e){e.updatedDisplay=e.mustUpdate&&Co(e.cm,e.update)}function xf(e){var t=e.cm,n=t.display;e.updatedDisplay&&hi(t),e.barMeasure=Dn(t),n.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Oa(t,n.maxLine,n.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+e.adjustWidthTo+er(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+e.adjustWidthTo-Er(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=n.input.prepareSelection())}function _f(e){var t=e.cm;e.adjustWidthTo!=null&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft=e.display.viewTo)){var n=+new Date+e.options.workTime,r=wn(e,t.highlightFrontier),i=[];t.iter(r.line,Math.min(t.first+t.size,e.display.viewTo+500),function(a){if(r.line>=e.display.viewFrom){var l=a.styles,u=a.text.length>e.options.maxHighlightLength?Vt(t.mode,r.state):null,f=fa(e,a,r,!0);u&&(r.state=u),a.styles=f.styles;var m=a.styleClasses,A=f.classes;A?a.styleClasses=A:m&&(a.styleClasses=null);for(var P=!l||l.length!=a.styles.length||m!=A&&(!m||!A||m.bgClass!=A.bgClass||m.textClass!=A.textClass),J=0;!P&&Jn)return In(e,e.options.workDelay),!0}),t.highlightFrontier=r.line,t.modeFrontier=Math.max(t.modeFrontier,r.line),i.length&&Nt(e,function(){for(var a=0;a=n.viewFrom&&t.visible.to<=n.viewTo&&(n.updateLineNumbers==null||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&Xa(e)==0)return!1;al(e)&&(br(e),t.dims=bo(e));var i=r.first+r.size,a=Math.max(t.visible.from-e.options.viewportMargin,r.first),l=Math.min(i,t.visible.to+e.options.viewportMargin);n.viewFroml&&n.viewTo-l<20&&(l=Math.min(i,n.viewTo)),or&&(a=ao(e.doc,a),l=Ta(e.doc,l));var u=a!=n.viewFrom||l!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth;cf(e,a,l),n.viewOffset=ar(Ae(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+"px";var f=Xa(e);if(!u&&f==0&&!t.force&&n.renderedView==n.view&&(n.updateLineNumbers==null||n.updateLineNumbers>=n.viewTo))return!1;var m=Tf(e);return f>4&&(n.lineDiv.style.display="none"),Cf(e,n.updateLineNumbers,t.dims),f>4&&(n.lineDiv.style.display=""),n.renderedView=n.view,Lf(m),j(n.cursorDiv),j(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,u&&(n.lastWrapHeight=t.wrapperHeight,n.lastWrapWidth=t.wrapperWidth,In(e,400)),n.updateLineNumbers=null,!0}function il(e,t){for(var n=t.viewport,r=!0;;r=!1){if(!r||!e.options.lineWrapping||t.oldDisplayWidth==Er(e)){if(n&&n.top!=null&&(n={top:Math.min(e.doc.height+co(e.display)-fo(e),n.top)}),t.visible=gi(e.display,e.doc,n),t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break}else r&&(t.visible=gi(e.display,e.doc,n));if(!Co(e,t))break;hi(e);var i=Dn(e);zn(e),rn(e,i),Mo(e,i),t.force=!1}t.signal(e,"update",e),(e.display.viewFrom!=e.display.reportedViewFrom||e.display.viewTo!=e.display.reportedViewTo)&&(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function Eo(e,t){var n=new vi(e,t);if(Co(e,n)){hi(e),il(e,n);var r=Dn(e);zn(e),rn(e,r),Mo(e,r),n.finish()}}function Cf(e,t,n){var r=e.display,i=e.options.lineNumbers,a=r.lineDiv,l=a.firstChild;function u(ie){var ue=ie.nextSibling;return h&&H&&e.display.currentWheelTarget==ie?ie.style.display="none":ie.parentNode.removeChild(ie),ue}for(var f=r.view,m=r.viewFrom,A=0;A-1&&(Y=!1),Ma(e,P,m,n)),Y&&(j(P.lineNumber),P.lineNumber.appendChild(document.createTextNode(he(e.options,m)))),l=P.node.nextSibling}m+=P.size}for(;l;)l=u(l)}function zo(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"px",ht(e,"gutterChanged",e)}function Mo(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+er(e)+"px"}function ol(e){var t=e.display,n=t.view;if(!(!t.alignWidgets&&(!t.gutters.firstChild||!e.options.fixedGutter))){for(var r=yo(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,a=r+"px",l=0;l=105&&(i.wrapper.style.clipPath="inset(0px)"),i.wrapper.setAttribute("translate","no"),s&&g<8&&(i.gutters.style.zIndex=-1,i.scroller.style.paddingRight=0),!h&&!(v&&M)&&(i.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(i.wrapper):e(i.wrapper)),i.viewFrom=i.viewTo=t.first,i.reportedViewFrom=i.reportedViewTo=t.first,i.view=[],i.renderedView=null,i.externalMeasured=null,i.viewOffset=0,i.lastWrapHeight=i.lastWrapWidth=0,i.updateLineNumbers=null,i.nativeBarWidth=i.barHeight=i.barWidth=0,i.scrollbarsClipped=!1,i.lineNumWidth=i.lineNumInnerWidth=i.lineNumChars=null,i.alignWidgets=!1,i.cachedCharWidth=i.cachedTextHeight=i.cachedPaddingH=null,i.maxLine=null,i.maxLineLength=0,i.maxLineChanged=!1,i.wheelDX=i.wheelDY=i.wheelStartX=i.wheelStartY=null,i.shift=!1,i.selForContextMenu=null,i.activeTouch=null,i.gutterSpecs=Ao(r.gutters,r.lineNumbers),ll(i),n.init(i)}var bi=0,sr=null;s?sr=-.53:v?sr=15:w?sr=-.7:T&&(sr=-1/3);function sl(e){var t=e.wheelDeltaX,n=e.wheelDeltaY;return t==null&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),n==null&&e.detail&&e.axis==e.VERTICAL_AXIS?n=e.detail:n==null&&(n=e.wheelDelta),{x:t,y:n}}function zf(e){var t=sl(e);return t.x*=sr,t.y*=sr,t}function ul(e,t){w&&c==102&&(e.display.chromeScrollHack==null?e.display.sizer.style.pointerEvents="none":clearTimeout(e.display.chromeScrollHack),e.display.chromeScrollHack=setTimeout(function(){e.display.chromeScrollHack=null,e.display.sizer.style.pointerEvents=""},100));var n=sl(t),r=n.x,i=n.y,a=sr;t.deltaMode===0&&(r=t.deltaX,i=t.deltaY,a=1);var l=e.display,u=l.scroller,f=u.scrollWidth>u.clientWidth,m=u.scrollHeight>u.clientHeight;if(r&&f||i&&m){if(i&&H&&h){e:for(var A=t.target,P=l.view;A!=u;A=A.parentNode)for(var J=0;J=0&&ye(e,r.to())<=0)return n}return-1};var Ye=function(e,t){this.anchor=e,this.head=t};Ye.prototype.from=function(){return Zr(this.anchor,this.head)},Ye.prototype.to=function(){return Et(this.anchor,this.head)},Ye.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch};function Yt(e,t,n){var r=e&&e.options.selectionsMayTouch,i=t[n];t.sort(function(J,Y){return ye(J.from(),Y.from())}),n=Se(t,i);for(var a=1;a0:f>=0){var m=Zr(u.from(),l.from()),A=Et(u.to(),l.to()),P=u.empty()?l.from()==l.head:u.from()==u.head;a<=n&&--n,t.splice(--a,2,new Ye(P?A:m,P?m:A))}}return new Rt(t,n)}function yr(e,t){return new Rt([new Ye(e,t||e)],0)}function xr(e){return e.text?ne(e.from.line+e.text.length-1,ce(e.text).length+(e.text.length==1?e.from.ch:0)):e.to}function cl(e,t){if(ye(e,t.from)<0)return e;if(ye(e,t.to)<=0)return xr(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=xr(t).ch-t.to.ch),ne(n,r)}function Do(e,t){for(var n=[],r=0;r1&&e.remove(u.line+1,ie-1),e.insert(u.line+1,ve)}ht(e,"change",e,t)}function _r(e,t,n){function r(i,a,l){if(i.linked)for(var u=0;u1&&!e.done[e.done.length-2].ranges)return e.done.pop(),ce(e.done)}function ml(e,t,n,r){var i=e.history;i.undone.length=0;var a=+new Date,l,u;if((i.lastOp==r||i.lastOrigin==t.origin&&t.origin&&(t.origin.charAt(0)=="+"&&i.lastModTime>a-(e.cm?e.cm.options.historyEventDelay:500)||t.origin.charAt(0)=="*"))&&(l=Df(i,i.lastOp==r)))u=ce(l.changes),ye(t.from,t.to)==0&&ye(t.from,u.to)==0?u.to=xr(t):l.changes.push(Fo(e,t));else{var f=ce(i.done);for((!f||!f.ranges)&&xi(e.sel,i.done),l={changes:[Fo(e,t)],generation:i.generation},i.done.push(l);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(n),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=a,i.lastOp=i.lastSelOp=r,i.lastOrigin=i.lastSelOrigin=t.origin,u||it(e,"historyAdded")}function qf(e,t,n,r){var i=t.charAt(0);return i=="*"||i=="+"&&n.ranges.length==r.ranges.length&&n.somethingSelected()==r.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}function If(e,t,n,r){var i=e.history,a=r&&r.origin;n==i.lastSelOp||a&&i.lastSelOrigin==a&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==a||qf(e,a,ce(i.done),t))?i.done[i.done.length-1]=t:xi(t,i.done),i.lastSelTime=+new Date,i.lastSelOrigin=a,i.lastSelOp=n,r&&r.clearRedo!==!1&&gl(i.undone)}function xi(e,t){var n=ce(t);n&&n.ranges&&n.equals(e)||t.push(e)}function vl(e,t,n,r){var i=t["spans_"+e.id],a=0;e.iter(Math.max(e.first,n),Math.min(e.first+e.size,r),function(l){l.markedSpans&&((i||(i=t["spans_"+e.id]={}))[a]=l.markedSpans),++a})}function Ff(e){if(!e)return null;for(var t,n=0;n-1&&(ce(u)[P]=m[P],delete m[P])}}return r}function No(e,t,n,r){if(r){var i=e.anchor;if(n){var a=ye(t,i)<0;a!=ye(n,i)<0?(i=t,t=n):a!=ye(t,n)<0&&(t=n)}return new Ye(i,t)}else return new Ye(n||t,t)}function _i(e,t,n,r,i){i==null&&(i=e.cm&&(e.cm.display.shift||e.extend)),wt(e,new Rt([No(e.sel.primary(),t,n,i)],0),r)}function yl(e,t,n){for(var r=[],i=e.cm&&(e.cm.display.shift||e.extend),a=0;a=t.ch:u.to>t.ch))){if(i&&(it(f,"beforeCursorEnter"),f.explicitlyCleared))if(a.markedSpans){--l;continue}else break;if(!f.atomic)continue;if(n){var P=f.find(r<0?1:-1),J=void 0;if((r<0?A:m)&&(P=Tl(e,P,-r,P&&P.line==t.line?a:null)),P&&P.line==t.line&&(J=ye(P,n))&&(r<0?J<0:J>0))return on(e,P,t,r,i)}var Y=f.find(r<0?-1:1);return(r<0?m:A)&&(Y=Tl(e,Y,r,Y.line==t.line?a:null)),Y?on(e,Y,t,r,i):null}}return t}function wi(e,t,n,r,i){var a=r||1,l=on(e,t,n,a,i)||!i&&on(e,t,n,a,!0)||on(e,t,n,-a,i)||!i&&on(e,t,n,-a,!0);return l||(e.cantEdit=!0,ne(e.first,0))}function Tl(e,t,n,r){return n<0&&t.ch==0?t.line>e.first?Re(e,ne(t.line-1)):null:n>0&&t.ch==(r||Ae(e,t.line)).text.length?t.line=0;--i)El(e,{from:r[i].from,to:r[i].to,text:i?[""]:t.text,origin:t.origin});else El(e,t)}}function El(e,t){if(!(t.text.length==1&&t.text[0]==""&&ye(t.from,t.to)==0)){var n=Do(e,t);ml(e,t,n,e.cm?e.cm.curOp.id:NaN),On(e,t,n,io(e,t));var r=[];_r(e,function(i,a){!a&&Se(r,i.history)==-1&&(Dl(i.history,t),r.push(i.history)),On(i,t,null,io(i,t))})}}function Si(e,t,n){var r=e.cm&&e.cm.state.suppressEdits;if(!(r&&!n)){for(var i=e.history,a,l=e.sel,u=t=="undo"?i.done:i.undone,f=t=="undo"?i.undone:i.done,m=0;m=0;--Y){var ie=J(Y);if(ie)return ie.v}}}}function zl(e,t){if(t!=0&&(e.first+=t,e.sel=new Rt(Be(e.sel.ranges,function(i){return new Ye(ne(i.anchor.line+t,i.anchor.ch),ne(i.head.line+t,i.head.ch))}),e.sel.primIndex),e.cm)){zt(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,r=n.viewFrom;re.lastLine())){if(t.from.linea&&(t={from:t.from,to:ne(a,Ae(e,a).text.length),text:[t.text[0]],origin:t.origin}),t.removed=ir(e,t.from,t.to),n||(n=Do(e,t)),e.cm?Pf(e.cm,t,r):Io(e,t,r),ki(e,n,ke),e.cantEdit&&wi(e,ne(e.firstLine(),0))&&(e.cantEdit=!1)}}function Pf(e,t,n){var r=e.doc,i=e.display,a=t.from,l=t.to,u=!1,f=a.line;e.options.lineWrapping||(f=_(Zt(Ae(r,a.line))),r.iter(f,l.line+1,function(Y){if(Y==i.maxLine)return u=!0,!0})),r.sel.contains(t.from,t.to)>-1&&Ht(e),Io(r,t,n,Za(e)),e.options.lineWrapping||(r.iter(f,a.line+t.text.length,function(Y){var ie=li(Y);ie>i.maxLineLength&&(i.maxLine=Y,i.maxLineLength=ie,i.maxLineChanged=!0,u=!1)}),u&&(e.curOp.updateMaxLine=!0)),Lc(r,a.line),In(e,400);var m=t.text.length-(l.line-a.line)-1;t.full?zt(e):a.line==l.line&&t.text.length==1&&!dl(e.doc,t)?vr(e,a.line,"text"):zt(e,a.line,l.line+1,m);var A=Ft(e,"changes"),P=Ft(e,"change");if(P||A){var J={from:a,to:l,text:t.text,removed:t.removed,origin:t.origin};P&&ht(e,"change",e,J),A&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(J)}e.display.selForContextMenu=null}function ln(e,t,n,r,i){var a;r||(r=n),ye(r,n)<0&&(a=[r,n],n=a[0],r=a[1]),typeof t=="string"&&(t=e.splitLines(t)),an(e,{from:n,to:r,text:t,origin:i})}function Ml(e,t,n,r){n1||!(this.children[0]instanceof jn))){var u=[];this.collapse(u),this.children=[new jn(u)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t50){for(var l=i.lines.length%25+25,u=l;u10);e.parent.maybeSpill()}},iterN:function(e,t,n){for(var r=0;re.display.maxLineLength&&(e.display.maxLine=m,e.display.maxLineLength=A,e.display.maxLineChanged=!0)}r!=null&&e&&this.collapsed&&zt(e,r,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&wl(e.doc)),e&&ht(e,"markerCleared",e,this,r,i),t&&Fr(e),this.parent&&this.parent.clear()}},kr.prototype.find=function(e,t){e==null&&this.type=="bookmark"&&(e=1);for(var n,r,i=0;i0||l==0&&a.clearWhenEmpty!==!1)return a;if(a.replacedWith&&(a.collapsed=!0,a.widgetNode=K("span",[a.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||a.widgetNode.setAttribute("cm-ignore-events","true"),r.insertLeft&&(a.widgetNode.insertLeft=!0)),a.collapsed){if(Sa(e,t.line,t,n,a)||t.line!=n.line&&Sa(e,n.line,t,n,a))throw new Error("Inserting collapsed marker partially overlapping an existing one");Ec()}a.addToHistory&&ml(e,{from:t,to:n,origin:"markText"},e.sel,NaN);var u=t.line,f=e.cm,m;if(e.iter(u,n.line+1,function(P){f&&a.collapsed&&!f.options.lineWrapping&&Zt(P)==f.display.maxLine&&(m=!0),a.collapsed&&u!=t.line&&jt(P,0),Mc(P,new ni(a,u==t.line?t.ch:null,u==n.line?n.ch:null),e.cm&&e.cm.curOp),++u}),a.collapsed&&e.iter(t.line,n.line+1,function(P){mr(e,P)&&jt(P,0)}),a.clearOnEnter&&Fe(a,"beforeCursorEnter",function(){return a.clear()}),a.readOnly&&(Cc(),(e.history.done.length||e.history.undone.length)&&e.clearHistory()),a.collapsed&&(a.id=++Il,a.atomic=!0),f){if(m&&(f.curOp.updateMaxLine=!0),a.collapsed)zt(f,t.line,n.line+1);else if(a.className||a.startStyle||a.endStyle||a.css||a.attributes||a.title)for(var A=t.line;A<=n.line;A++)vr(f,A,"text");a.atomic&&wl(f.doc),ht(f,"markerAdded",f,a)}return a}var Bn=function(e,t){this.markers=e,this.primary=t;for(var n=0;n=0;f--)an(this,r[f]);u?_l(this,u):this.cm&&tn(this.cm)}),undo:mt(function(){Si(this,"undo")}),redo:mt(function(){Si(this,"redo")}),undoSelection:mt(function(){Si(this,"undo",!0)}),redoSelection:mt(function(){Si(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,n=0,r=0;r=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,n){e=Re(this,e),t=Re(this,t);var r=[],i=e.line;return this.iter(e.line,t.line+1,function(a){var l=a.markedSpans;if(l)for(var u=0;u=f.to||f.from==null&&i!=e.line||f.from!=null&&i==t.line&&f.from>=t.ch)&&(!n||n(f.marker))&&r.push(f.marker.parent||f.marker)}++i}),r},getAllMarks:function(){var e=[];return this.iter(function(t){var n=t.markedSpans;if(n)for(var r=0;re)return t=e,!0;e-=a,++n}),Re(this,ne(n,t))},indexFromPos:function(e){e=Re(this,e);var t=e.ch;if(e.linet&&(t=e.from),e.to!=null&&e.to-1){t.state.draggingText(e),setTimeout(function(){return t.display.input.focus()},20);return}try{var A=e.dataTransfer.getData("Text");if(A){var P;if(t.state.draggingText&&!t.state.draggingText.copy&&(P=t.listSelections()),ki(t.doc,yr(n,n)),P)for(var J=0;J=0;u--)ln(e.doc,"",r[u].from,r[u].to,"+delete");tn(e)})}function Po(e,t,n){var r=se(e.text,t+n,n);return r<0||r>e.text.length?null:r}function jo(e,t,n){var r=Po(e,t.ch,n);return r==null?null:new ne(t.line,r,n<0?"after":"before")}function Ro(e,t,n,r,i){if(e){t.doc.direction=="rtl"&&(i=-i);var a=Pe(n,t.doc.direction);if(a){var l=i<0?ce(a):a[0],u=i<0==(l.level==1),f=u?"after":"before",m;if(l.level>0||t.doc.direction=="rtl"){var A=Qr(t,n);m=i<0?n.text.length-1:0;var P=tr(t,A,m).top;m=De(function(J){return tr(t,A,J).top==P},i<0==(l.level==1)?l.from:l.to-1,m),f=="before"&&(m=Po(n,m,1))}else m=i<0?l.to:l.from;return new ne(r,m,f)}}return new ne(r,i<0?n.text.length:0,i<0?"before":"after")}function Vf(e,t,n,r){var i=Pe(t,e.doc.direction);if(!i)return jo(t,n,r);n.ch>=t.text.length?(n.ch=t.text.length,n.sticky="before"):n.ch<=0&&(n.ch=0,n.sticky="after");var a=Pt(i,n.ch,n.sticky),l=i[a];if(e.doc.direction=="ltr"&&l.level%2==0&&(r>0?l.to>n.ch:l.from=l.from&&J>=A.begin)){var Y=P?"before":"after";return new ne(n.line,J,Y)}}var ie=function(ve,_e,be){for(var Ce=function(Ve,vt){return vt?new ne(n.line,u(Ve,1),"before"):new ne(n.line,Ve,"after")};ve>=0&&ve0==(Ne.level!=1),$e=Ie?be.begin:u(be.end,-1);if(Ne.from<=$e&&$e0?A.end:u(A.begin,-1);return me!=null&&!(r>0&&me==t.text.length)&&(ue=ie(r>0?0:i.length-1,r,m(me)),ue)?ue:null}var $n={selectAll:Ll,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),ke)},killLine:function(e){return cn(e,function(t){if(t.empty()){var n=Ae(e.doc,t.head.line).text.length;return t.head.ch==n&&t.head.line0)i=new ne(i.line,i.ch+1),e.replaceRange(a.charAt(i.ch-1)+a.charAt(i.ch-2),ne(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var l=Ae(e.doc,i.line-1).text;l&&(i=new ne(i.line,1),e.replaceRange(a.charAt(0)+e.doc.lineSeparator()+l.charAt(l.length-1),ne(i.line-1,l.length-1),i,"+transpose"))}}n.push(new Ye(i,i))}e.setSelections(n)})},newlineAndIndent:function(e){return Nt(e,function(){for(var t=e.listSelections(),n=t.length-1;n>=0;n--)e.replaceRange(e.doc.lineSeparator(),t[n].anchor,t[n].head,"+input");t=e.listSelections();for(var r=0;re&&ye(t,this.pos)==0&&n==this.button};var Gn,Zn;function od(e,t){var n=+new Date;return Zn&&Zn.compare(n,e,t)?(Gn=Zn=null,"triple"):Gn&&Gn.compare(n,e,t)?(Zn=new Bo(n,e,t),Gn=null,"double"):(Gn=new Bo(n,e,t),Zn=null,"single")}function Yl(e){var t=this,n=t.display;if(!(ot(t,e)||n.activeTouch&&n.input.supportsTouch())){if(n.input.ensurePolled(),n.shift=e.shiftKey,lr(n,e)){h||(n.scroller.draggable=!1,setTimeout(function(){return n.scroller.draggable=!0},100));return}if(!Wo(t,e)){var r=Mr(t,e),i=Ut(e),a=r?od(r,i):"single";pe(t).focus(),i==1&&t.state.selectingText&&t.state.selectingText(e),!(r&&ad(t,i,r,a,e))&&(i==1?r?sd(t,r,a,e):yn(e)==n.scroller&&kt(e):i==2?(r&&_i(t.doc,r),setTimeout(function(){return n.input.focus()},20)):i==3&&(F?t.display.input.onContextMenu(e):wo(t)))}}}function ad(e,t,n,r,i){var a="Click";return r=="double"?a="Double"+a:r=="triple"&&(a="Triple"+a),a=(t==1?"Left":t==2?"Middle":"Right")+a,Kn(e,Hl(a,i),i,function(l){if(typeof l=="string"&&(l=$n[l]),!l)return!1;var u=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),u=l(e,n)!=Ze}finally{e.state.suppressEdits=!1}return u})}function ld(e,t,n){var r=e.getOption("configureMouse"),i=r?r(e,t,n):{};if(i.unit==null){var a=Z?n.shiftKey&&n.metaKey:n.altKey;i.unit=a?"rectangle":t=="single"?"char":t=="double"?"word":"line"}return(i.extend==null||e.doc.extend)&&(i.extend=e.doc.extend||n.shiftKey),i.addNew==null&&(i.addNew=H?n.metaKey:n.ctrlKey),i.moveOnDrag==null&&(i.moveOnDrag=!(H?n.altKey:n.ctrlKey)),i}function sd(e,t,n,r){s?setTimeout(Ee(Qa,e),0):e.curOp.focus=B(de(e));var i=ld(e,n,r),a=e.doc.sel,l;e.options.dragDrop&&eo&&!e.isReadOnly()&&n=="single"&&(l=a.contains(t))>-1&&(ye((l=a.ranges[l]).from(),t)<0||t.xRel>0)&&(ye(l.to(),t)>0||t.xRel<0)?ud(e,r,t,i):cd(e,r,t,i)}function ud(e,t,n,r){var i=e.display,a=!1,l=gt(e,function(m){h&&(i.scroller.draggable=!1),e.state.draggingText=!1,e.state.delayingBlurEvent&&(e.hasFocus()?e.state.delayingBlurEvent=!1:wo(e)),_t(i.wrapper.ownerDocument,"mouseup",l),_t(i.wrapper.ownerDocument,"mousemove",u),_t(i.scroller,"dragstart",f),_t(i.scroller,"drop",l),a||(kt(m),r.addNew||_i(e.doc,n,null,null,r.extend),h&&!T||s&&g==9?setTimeout(function(){i.wrapper.ownerDocument.body.focus({preventScroll:!0}),i.input.focus()},20):i.input.focus())}),u=function(m){a=a||Math.abs(t.clientX-m.clientX)+Math.abs(t.clientY-m.clientY)>=10},f=function(){return a=!0};h&&(i.scroller.draggable=!0),e.state.draggingText=l,l.copy=!r.moveOnDrag,Fe(i.wrapper.ownerDocument,"mouseup",l),Fe(i.wrapper.ownerDocument,"mousemove",u),Fe(i.scroller,"dragstart",f),Fe(i.scroller,"drop",l),e.state.delayingBlurEvent=!0,setTimeout(function(){return i.input.focus()},20),i.scroller.dragDrop&&i.scroller.dragDrop()}function Ql(e,t,n){if(n=="char")return new Ye(t,t);if(n=="word")return e.findWordAt(t);if(n=="line")return new Ye(ne(t.line,0),Re(e.doc,ne(t.line+1,0)));var r=n(e,t);return new Ye(r.from,r.to)}function cd(e,t,n,r){s&&wo(e);var i=e.display,a=e.doc;kt(t);var l,u,f=a.sel,m=f.ranges;if(r.addNew&&!r.extend?(u=a.sel.contains(n),u>-1?l=m[u]:l=new Ye(n,n)):(l=a.sel.primary(),u=a.sel.primIndex),r.unit=="rectangle")r.addNew||(l=new Ye(n,n)),n=Mr(e,t,!0,!0),u=-1;else{var A=Ql(e,n,r.unit);r.extend?l=No(l,A.anchor,A.head,r.extend):l=A}r.addNew?u==-1?(u=m.length,wt(a,Yt(e,m.concat([l]),u),{scroll:!1,origin:"*mouse"})):m.length>1&&m[u].empty()&&r.unit=="char"&&!r.extend?(wt(a,Yt(e,m.slice(0,u).concat(m.slice(u+1)),0),{scroll:!1,origin:"*mouse"}),f=a.sel):Oo(a,u,l,Je):(u=0,wt(a,new Rt([l],0),Je),f=a.sel);var P=n;function J(be){if(ye(P,be)!=0)if(P=be,r.unit=="rectangle"){for(var Ce=[],Ne=e.options.tabSize,Ie=Oe(Ae(a,n.line).text,n.ch,Ne),$e=Oe(Ae(a,be.line).text,be.ch,Ne),Ve=Math.min(Ie,$e),vt=Math.max(Ie,$e),rt=Math.min(n.line,be.line),Ot=Math.min(e.lastLine(),Math.max(n.line,be.line));rt<=Ot;rt++){var At=Ae(a,rt).text,ut=Ge(At,Ve,Ne);Ve==vt?Ce.push(new Ye(ne(rt,ut),ne(rt,ut))):At.length>ut&&Ce.push(new Ye(ne(rt,ut),ne(rt,Ge(At,vt,Ne))))}Ce.length||Ce.push(new Ye(n,n)),wt(a,Yt(e,f.ranges.slice(0,u).concat(Ce),u),{origin:"*mouse",scroll:!1}),e.scrollIntoView(be)}else{var Dt=l,yt=Ql(e,be,r.unit),ft=Dt.anchor,ct;ye(yt.anchor,ft)>0?(ct=yt.head,ft=Zr(Dt.from(),yt.anchor)):(ct=yt.anchor,ft=Et(Dt.to(),yt.head));var lt=f.ranges.slice(0);lt[u]=fd(e,new Ye(Re(a,ft),ct)),wt(a,Yt(e,lt,u),Je)}}var Y=i.wrapper.getBoundingClientRect(),ie=0;function ue(be){var Ce=++ie,Ne=Mr(e,be,!0,r.unit=="rectangle");if(Ne)if(ye(Ne,P)!=0){e.curOp.focus=B(de(e)),J(Ne);var Ie=gi(i,a);(Ne.line>=Ie.to||Ne.lineY.bottom?20:0;$e&&setTimeout(gt(e,function(){ie==Ce&&(i.scroller.scrollTop+=$e,ue(be))}),50)}}function me(be){e.state.selectingText=!1,ie=1/0,be&&(kt(be),i.input.focus()),_t(i.wrapper.ownerDocument,"mousemove",ve),_t(i.wrapper.ownerDocument,"mouseup",_e),a.history.lastSelOrigin=null}var ve=gt(e,function(be){be.buttons===0||!Ut(be)?me(be):ue(be)}),_e=gt(e,me);e.state.selectingText=_e,Fe(i.wrapper.ownerDocument,"mousemove",ve),Fe(i.wrapper.ownerDocument,"mouseup",_e)}function fd(e,t){var n=t.anchor,r=t.head,i=Ae(e.doc,n.line);if(ye(n,r)==0&&n.sticky==r.sticky)return t;var a=Pe(i);if(!a)return t;var l=Pt(a,n.ch,n.sticky),u=a[l];if(u.from!=n.ch&&u.to!=n.ch)return t;var f=l+(u.from==n.ch==(u.level!=1)?0:1);if(f==0||f==a.length)return t;var m;if(r.line!=n.line)m=(r.line-n.line)*(e.doc.direction=="ltr"?1:-1)>0;else{var A=Pt(a,r.ch,r.sticky),P=A-l||(r.ch-n.ch)*(u.level==1?-1:1);A==f-1||A==f?m=P<0:m=P>0}var J=a[f+(m?-1:0)],Y=m==(J.level==1),ie=Y?J.from:J.to,ue=Y?"after":"before";return n.ch==ie&&n.sticky==ue?t:new Ye(new ne(n.line,ie,ue),r)}function Vl(e,t,n,r){var i,a;if(t.touches)i=t.touches[0].clientX,a=t.touches[0].clientY;else try{i=t.clientX,a=t.clientY}catch{return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&kt(t);var l=e.display,u=l.lineDiv.getBoundingClientRect();if(a>u.bottom||!Ft(e,n))return Ct(t);a-=u.top-l.viewOffset;for(var f=0;f=i){var A=O(e.doc,a),P=e.display.gutterSpecs[f];return it(e,n,e,A,P.className,t),Ct(t)}}}function Wo(e,t){return Vl(e,t,"gutterClick",!0)}function Jl(e,t){lr(e.display,t)||dd(e,t)||ot(e,t,"contextmenu")||F||e.display.input.onContextMenu(t)}function dd(e,t){return Ft(e,"gutterContextMenu")?Vl(e,t,"gutterContextMenu",!1):!1}function es(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),En(e)}var fn={toString:function(){return"CodeMirror.Init"}},ts={},Ei={};function pd(e){var t=e.optionHandlers;function n(r,i,a,l){e.defaults[r]=i,a&&(t[r]=l?function(u,f,m){m!=fn&&a(u,f,m)}:a)}e.defineOption=n,e.Init=fn,n("value","",function(r,i){return r.setValue(i)},!0),n("mode",null,function(r,i){r.doc.modeOption=i,qo(r)},!0),n("indentUnit",2,qo,!0),n("indentWithTabs",!1),n("smartIndent",!0),n("tabSize",4,function(r){Nn(r),En(r),zt(r)},!0),n("lineSeparator",null,function(r,i){if(r.doc.lineSep=i,!!i){var a=[],l=r.doc.first;r.doc.iter(function(f){for(var m=0;;){var A=f.text.indexOf(i,m);if(A==-1)break;m=A+i.length,a.push(ne(l,A))}l++});for(var u=a.length-1;u>=0;u--)ln(r.doc,i,a[u],ne(a[u].line,a[u].ch+i.length))}}),n("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\u202d\u202e\u2066\u2067\u2069\ufeff\ufff9-\ufffc]/g,function(r,i,a){r.state.specialChars=new RegExp(i.source+(i.test(" ")?"":"| "),"g"),a!=fn&&r.refresh()}),n("specialCharPlaceholder",Hc,function(r){return r.refresh()},!0),n("electricChars",!0),n("inputStyle",M?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),n("spellcheck",!1,function(r,i){return r.getInputField().spellcheck=i},!0),n("autocorrect",!1,function(r,i){return r.getInputField().autocorrect=i},!0),n("autocapitalize",!1,function(r,i){return r.getInputField().autocapitalize=i},!0),n("rtlMoveVisually",!ee),n("wholeLineUpdateBefore",!0),n("theme","default",function(r){es(r),Fn(r)},!0),n("keyMap","default",function(r,i,a){var l=Li(i),u=a!=fn&&Li(a);u&&u.detach&&u.detach(r,l),l.attach&&l.attach(r,u||null)}),n("extraKeys",null),n("configureMouse",null),n("lineWrapping",!1,gd,!0),n("gutters",[],function(r,i){r.display.gutterSpecs=Ao(i,r.options.lineNumbers),Fn(r)},!0),n("fixedGutter",!0,function(r,i){r.display.gutters.style.left=i?yo(r.display)+"px":"0",r.refresh()},!0),n("coverGutterNextToScrollbar",!1,function(r){return rn(r)},!0),n("scrollbarStyle","native",function(r){nl(r),rn(r),r.display.scrollbars.setScrollTop(r.doc.scrollTop),r.display.scrollbars.setScrollLeft(r.doc.scrollLeft)},!0),n("lineNumbers",!1,function(r,i){r.display.gutterSpecs=Ao(r.options.gutters,i),Fn(r)},!0),n("firstLineNumber",1,Fn,!0),n("lineNumberFormatter",function(r){return r},Fn,!0),n("showCursorWhenSelecting",!1,zn,!0),n("resetSelectionOnContextMenu",!0),n("lineWiseCopyCut",!0),n("pasteLinesPerSelection",!0),n("selectionsMayTouch",!1),n("readOnly",!1,function(r,i){i=="nocursor"&&(en(r),r.display.input.blur()),r.display.input.readOnlyChanged(i)}),n("screenReaderLabel",null,function(r,i){i=i===""?null:i,r.display.input.screenReaderLabelChanged(i)}),n("disableInput",!1,function(r,i){i||r.display.input.reset()},!0),n("dragDrop",!0,hd),n("allowDropFileTypes",null),n("cursorBlinkRate",530),n("cursorScrollMargin",0),n("cursorHeight",1,zn,!0),n("singleCursorHeightPerLine",!0,zn,!0),n("workTime",100),n("workDelay",100),n("flattenSpans",!0,Nn,!0),n("addModeClass",!1,Nn,!0),n("pollInterval",100),n("undoDepth",200,function(r,i){return r.doc.history.undoDepth=i}),n("historyEventDelay",1250),n("viewportMargin",10,function(r){return r.refresh()},!0),n("maxHighlightLength",1e4,Nn,!0),n("moveInputWithCursor",!0,function(r,i){i||r.display.input.resetPosition()}),n("tabindex",null,function(r,i){return r.display.input.getField().tabIndex=i||""}),n("autofocus",null),n("direction","ltr",function(r,i){return r.doc.setDirection(i)},!0),n("phrases",null)}function hd(e,t,n){var r=n&&n!=fn;if(!t!=!r){var i=e.display.dragFunctions,a=t?Fe:_t;a(e.display.scroller,"dragstart",i.start),a(e.display.scroller,"dragenter",i.enter),a(e.display.scroller,"dragover",i.over),a(e.display.scroller,"dragleave",i.leave),a(e.display.scroller,"drop",i.drop)}}function gd(e){e.options.lineWrapping?(le(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(Q(e.display.wrapper,"CodeMirror-wrap"),so(e)),xo(e),zt(e),En(e),setTimeout(function(){return rn(e)},100)}function tt(e,t){var n=this;if(!(this instanceof tt))return new tt(e,t);this.options=t=t?ge(t):{},ge(ts,t,!1);var r=t.value;typeof r=="string"?r=new Mt(r,t.mode,null,t.lineSeparator,t.direction):t.mode&&(r.modeOption=t.mode),this.doc=r;var i=new tt.inputStyles[t.inputStyle](this),a=this.display=new Ef(e,r,i,t);a.wrapper.CodeMirror=this,es(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),nl(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new qe,keySeq:null,specialChars:null},t.autofocus&&!M&&a.input.focus(),s&&g<11&&setTimeout(function(){return n.display.input.reset(!0)},20),md(this),Gf(),Ir(this),this.curOp.forceUpdate=!0,pl(this,r),t.autofocus&&!M||this.hasFocus()?setTimeout(function(){n.hasFocus()&&!n.state.focused&&So(n)},20):en(this);for(var l in Ei)Ei.hasOwnProperty(l)&&Ei[l](this,t[l],fn);al(this),t.finishInit&&t.finishInit(this);for(var u=0;u20*20}Fe(t.scroller,"touchstart",function(f){if(!ot(e,f)&&!a(f)&&!Wo(e,f)){t.input.ensurePolled(),clearTimeout(n);var m=+new Date;t.activeTouch={start:m,moved:!1,prev:m-r.end<=300?r:null},f.touches.length==1&&(t.activeTouch.left=f.touches[0].pageX,t.activeTouch.top=f.touches[0].pageY)}}),Fe(t.scroller,"touchmove",function(){t.activeTouch&&(t.activeTouch.moved=!0)}),Fe(t.scroller,"touchend",function(f){var m=t.activeTouch;if(m&&!lr(t,f)&&m.left!=null&&!m.moved&&new Date-m.start<300){var A=e.coordsChar(t.activeTouch,"page"),P;!m.prev||l(m,m.prev)?P=new Ye(A,A):!m.prev.prev||l(m,m.prev.prev)?P=e.findWordAt(A):P=new Ye(ne(A.line,0),Re(e.doc,ne(A.line+1,0))),e.setSelection(P.anchor,P.head),e.focus(),kt(f)}i()}),Fe(t.scroller,"touchcancel",i),Fe(t.scroller,"scroll",function(){t.scroller.clientHeight&&(An(e,t.scroller.scrollTop),Dr(e,t.scroller.scrollLeft,!0),it(e,"scroll",e))}),Fe(t.scroller,"mousewheel",function(f){return ul(e,f)}),Fe(t.scroller,"DOMMouseScroll",function(f){return ul(e,f)}),Fe(t.wrapper,"scroll",function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0}),t.dragFunctions={enter:function(f){ot(e,f)||dr(f)},over:function(f){ot(e,f)||(Kf(e,f),dr(f))},start:function(f){return $f(e,f)},drop:gt(e,Uf),leave:function(f){ot(e,f)||Ol(e)}};var u=t.input.getField();Fe(u,"keyup",function(f){return Zl.call(e,f)}),Fe(u,"keydown",gt(e,Gl)),Fe(u,"keypress",gt(e,Xl)),Fe(u,"focus",function(f){return So(e,f)}),Fe(u,"blur",function(f){return en(e,f)})}var Uo=[];tt.defineInitHook=function(e){return Uo.push(e)};function Xn(e,t,n,r){var i=e.doc,a;n==null&&(n="add"),n=="smart"&&(i.mode.indent?a=wn(e,t).state:n="prev");var l=e.options.tabSize,u=Ae(i,t),f=Oe(u.text,null,l);u.stateAfter&&(u.stateAfter=null);var m=u.text.match(/^\s*/)[0],A;if(!r&&!/\S/.test(u.text))A=0,n="not";else if(n=="smart"&&(A=i.mode.indent(a,u.text.slice(m.length),u.text),A==Ze||A>150)){if(!r)return;n="prev"}n=="prev"?t>i.first?A=Oe(Ae(i,t-1).text,null,l):A=0:n=="add"?A=f+e.options.indentUnit:n=="subtract"?A=f-e.options.indentUnit:typeof n=="number"&&(A=f+n),A=Math.max(0,A);var P="",J=0;if(e.options.indentWithTabs)for(var Y=Math.floor(A/l);Y;--Y)J+=l,P+=" ";if(Jl,f=Bt(t),m=null;if(u&&r.ranges.length>1)if(Qt&&Qt.text.join(` -`)==t){if(r.ranges.length%Qt.text.length==0){m=[];for(var A=0;A=0;J--){var Y=r.ranges[J],ie=Y.from(),ue=Y.to();Y.empty()&&(n&&n>0?ie=ne(ie.line,ie.ch-n):e.state.overwrite&&!u?ue=ne(ue.line,Math.min(Ae(a,ue.line).text.length,ue.ch+ce(f).length)):u&&Qt&&Qt.lineWise&&Qt.text.join(` -`)==f.join(` -`)&&(ie=ue=ne(ie.line,0)));var me={from:ie,to:ue,text:m?m[J%m.length]:f,origin:i||(u?"paste":e.state.cutIncoming>l?"cut":"+input")};an(e.doc,me),ht(e,"inputRead",e,me)}t&&!u&&ns(e,t),tn(e),e.curOp.updateInput<2&&(e.curOp.updateInput=P),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function rs(e,t){var n=e.clipboardData&&e.clipboardData.getData("Text");if(n)return e.preventDefault(),!t.isReadOnly()&&!t.options.disableInput&&t.hasFocus()&&Nt(t,function(){return $o(t,n,0,null,"paste")}),!0}function ns(e,t){if(!(!e.options.electricChars||!e.options.smartIndent))for(var n=e.doc.sel,r=n.ranges.length-1;r>=0;r--){var i=n.ranges[r];if(!(i.head.ch>100||r&&n.ranges[r-1].head.line==i.head.line)){var a=e.getModeAt(i.head),l=!1;if(a.electricChars){for(var u=0;u-1){l=Xn(e,i.head.line,"smart");break}}else a.electricInput&&a.electricInput.test(Ae(e.doc,i.head.line).text.slice(0,i.head.ch))&&(l=Xn(e,i.head.line,"smart"));l&&ht(e,"electricInput",e,i.head.line)}}}function is(e){for(var t=[],n=[],r=0;ra&&(Xn(this,u.head.line,r,!0),a=u.head.line,l==this.doc.sel.primIndex&&tn(this));else{var f=u.from(),m=u.to(),A=Math.max(a,f.line);a=Math.min(this.lastLine(),m.line-(m.ch?0:1))+1;for(var P=A;P0&&Oo(this.doc,l,new Ye(f,J[l].to()),ke)}}}),getTokenAt:function(r,i){return ga(this,r,i)},getLineTokens:function(r,i){return ga(this,ne(r),i,!0)},getTokenTypeAt:function(r){r=Re(this.doc,r);var i=da(this,Ae(this.doc,r.line)),a=0,l=(i.length-1)/2,u=r.ch,f;if(u==0)f=i[2];else for(;;){var m=a+l>>1;if((m?i[m*2-1]:0)>=u)l=m;else if(i[m*2+1]f&&(r=f,l=!0),u=Ae(this.doc,r)}else u=r;return ci(this,u,{top:0,left:0},i||"page",a||l).top+(l?this.doc.height-ar(u):0)},defaultTextHeight:function(){return Vr(this.display)},defaultCharWidth:function(){return Jr(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(r,i,a,l,u){var f=this.display;r=Xt(this,Re(this.doc,r));var m=r.bottom,A=r.left;if(i.style.position="absolute",i.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(i),f.sizer.appendChild(i),l=="over")m=r.top;else if(l=="above"||l=="near"){var P=Math.max(f.wrapper.clientHeight,this.doc.height),J=Math.max(f.sizer.clientWidth,f.lineSpace.clientWidth);(l=="above"||r.bottom+i.offsetHeight>P)&&r.top>i.offsetHeight?m=r.top-i.offsetHeight:r.bottom+i.offsetHeight<=P&&(m=r.bottom),A+i.offsetWidth>J&&(A=J-i.offsetWidth)}i.style.top=m+"px",i.style.left=i.style.right="",u=="right"?(A=f.sizer.clientWidth-i.offsetWidth,i.style.right="0px"):(u=="left"?A=0:u=="middle"&&(A=(f.sizer.clientWidth-i.offsetWidth)/2),i.style.left=A+"px"),a&&hf(this,{left:A,top:m,right:A+i.offsetWidth,bottom:m+i.offsetHeight})},triggerOnKeyDown:Tt(Gl),triggerOnKeyPress:Tt(Xl),triggerOnKeyUp:Zl,triggerOnMouseDown:Tt(Yl),execCommand:function(r){if($n.hasOwnProperty(r))return $n[r].call(null,this)},triggerElectric:Tt(function(r){ns(this,r)}),findPosH:function(r,i,a,l){var u=1;i<0&&(u=-1,i=-i);for(var f=Re(this.doc,r),m=0;m0&&A(a.charAt(l-1));)--l;for(;u.5||this.options.lineWrapping)&&xo(this),it(this,"refresh",this)}),swapDoc:Tt(function(r){var i=this.doc;return i.cm=null,this.state.selectingText&&this.state.selectingText(),pl(this,r),En(this),this.display.input.reset(),Mn(this,r.scrollLeft,r.scrollTop),this.curOp.forceScroll=!0,ht(this,"swapDoc",this,i),i}),phrase:function(r){var i=this.options.phrases;return i&&Object.prototype.hasOwnProperty.call(i,r)?i[r]:r},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Wt(e),e.registerHelper=function(r,i,a){n.hasOwnProperty(r)||(n[r]=e[r]={_global:[]}),n[r][i]=a},e.registerGlobalHelper=function(r,i,a,l){e.registerHelper(r,i,l),n[r]._global.push({pred:a,val:l})}}function Go(e,t,n,r,i){var a=t,l=n,u=Ae(e,t.line),f=i&&e.direction=="rtl"?-n:n;function m(){var _e=t.line+f;return _e=e.first+e.size?!1:(t=new ne(_e,t.ch,t.sticky),u=Ae(e,_e))}function A(_e){var be;if(r=="codepoint"){var Ce=u.text.charCodeAt(t.ch+(n>0?0:-1));if(isNaN(Ce))be=null;else{var Ne=n>0?Ce>=55296&&Ce<56320:Ce>=56320&&Ce<57343;be=new ne(t.line,Math.max(0,Math.min(u.text.length,t.ch+n*(Ne?2:1))),-n)}}else i?be=Vf(e.cm,u,t,n):be=jo(u,t,n);if(be==null)if(!_e&&m())t=Ro(i,e.cm,u,t.line,f);else return!1;else t=be;return!0}if(r=="char"||r=="codepoint")A();else if(r=="column")A(!0);else if(r=="word"||r=="group")for(var P=null,J=r=="group",Y=e.cm&&e.cm.getHelper(t,"wordChars"),ie=!0;!(n<0&&!A(!ie));ie=!1){var ue=u.text.charAt(t.ch)||` -`,me=Me(ue,Y)?"w":J&&ue==` -`?"n":!J||/\s/.test(ue)?null:"p";if(J&&!ie&&!me&&(me="s"),P&&P!=me){n<0&&(n=1,A(),t.sticky="after");break}if(me&&(P=me),n>0&&!A(!ie))break}var ve=wi(e,t,a,l,!0);return Xe(a,ve)&&(ve.hitSide=!0),ve}function as(e,t,n,r){var i=e.doc,a=t.left,l;if(r=="page"){var u=Math.min(e.display.wrapper.clientHeight,pe(e).innerHeight||i(e).documentElement.clientHeight),f=Math.max(u-.5*Vr(e.display),3);l=(n>0?t.bottom:t.top)+n*f}else r=="line"&&(l=n>0?t.bottom+3:t.top-3);for(var m;m=mo(e,a,l),!!m.outside;){if(n<0?l<=0:l>=i.height){m.hitSide=!0;break}l+=n*5}return m}var Qe=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new qe,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};Qe.prototype.init=function(e){var t=this,n=this,r=n.cm,i=n.div=e.lineDiv;i.contentEditable=!0,Ko(i,r.options.spellcheck,r.options.autocorrect,r.options.autocapitalize);function a(u){for(var f=u.target;f;f=f.parentNode){if(f==i)return!0;if(/\bCodeMirror-(?:line)?widget\b/.test(f.className))break}return!1}Fe(i,"paste",function(u){!a(u)||ot(r,u)||rs(u,r)||g<=11&&setTimeout(gt(r,function(){return t.updateFromDOM()}),20)}),Fe(i,"compositionstart",function(u){t.composing={data:u.data,done:!1}}),Fe(i,"compositionupdate",function(u){t.composing||(t.composing={data:u.data,done:!1})}),Fe(i,"compositionend",function(u){t.composing&&(u.data!=t.composing.data&&t.readFromDOMSoon(),t.composing.done=!0)}),Fe(i,"touchstart",function(){return n.forceCompositionEnd()}),Fe(i,"input",function(){t.composing||t.readFromDOMSoon()});function l(u){if(!(!a(u)||ot(r,u))){if(r.somethingSelected())zi({lineWise:!1,text:r.getSelections()}),u.type=="cut"&&r.replaceSelection("",null,"cut");else if(r.options.lineWiseCopyCut){var f=is(r);zi({lineWise:!0,text:f.text}),u.type=="cut"&&r.operation(function(){r.setSelections(f.ranges,0,ke),r.replaceSelection("",null,"cut")})}else return;if(u.clipboardData){u.clipboardData.clearData();var m=Qt.text.join(` -`);if(u.clipboardData.setData("Text",m),u.clipboardData.getData("Text")==m){u.preventDefault();return}}var A=os(),P=A.firstChild;Ko(P),r.display.lineSpace.insertBefore(A,r.display.lineSpace.firstChild),P.value=Qt.text.join(` -`);var J=B(ze(i));q(P),setTimeout(function(){r.display.lineSpace.removeChild(A),J.focus(),J==i&&n.showPrimarySelection()},50)}}Fe(i,"copy",l),Fe(i,"cut",l)},Qe.prototype.screenReaderLabelChanged=function(e){e?this.div.setAttribute("aria-label",e):this.div.removeAttribute("aria-label")},Qe.prototype.prepareSelection=function(){var e=Ya(this.cm,!1);return e.focus=B(ze(this.div))==this.div,e},Qe.prototype.showSelection=function(e,t){!e||!this.cm.display.view.length||((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},Qe.prototype.getSelection=function(){return this.cm.display.wrapper.ownerDocument.getSelection()},Qe.prototype.showPrimarySelection=function(){var e=this.getSelection(),t=this.cm,n=t.doc.sel.primary(),r=n.from(),i=n.to();if(t.display.viewTo==t.display.viewFrom||r.line>=t.display.viewTo||i.line=t.display.viewFrom&&ls(t,r)||{node:u[0].measure.map[2],offset:0},m=i.linee.firstLine()&&(r=ne(r.line-1,Ae(e.doc,r.line-1).length)),i.ch==Ae(e.doc,i.line).text.length&&i.linet.viewTo-1)return!1;var a,l,u;r.line==t.viewFrom||(a=Ar(e,r.line))==0?(l=_(t.view[0].line),u=t.view[0].node):(l=_(t.view[a].line),u=t.view[a-1].node.nextSibling);var f=Ar(e,i.line),m,A;if(f==t.view.length-1?(m=t.viewTo-1,A=t.lineDiv.lastChild):(m=_(t.view[f+1].line)-1,A=t.view[f+1].node.previousSibling),!u)return!1;for(var P=e.doc.splitLines(yd(e,u,A,l,m)),J=ir(e.doc,ne(l,0),ne(m,Ae(e.doc,m).text.length));P.length>1&&J.length>1;)if(ce(P)==ce(J))P.pop(),J.pop(),m--;else if(P[0]==J[0])P.shift(),J.shift(),l++;else break;for(var Y=0,ie=0,ue=P[0],me=J[0],ve=Math.min(ue.length,me.length);Yr.ch&&_e.charCodeAt(_e.length-ie-1)==be.charCodeAt(be.length-ie-1);)Y--,ie++;P[P.length-1]=_e.slice(0,_e.length-ie).replace(/^\u200b+/,""),P[0]=P[0].slice(Y).replace(/\u200b+$/,"");var Ne=ne(l,Y),Ie=ne(m,J.length?ce(J).length-ie:0);if(P.length>1||P[0]||ye(Ne,Ie))return ln(e.doc,P,Ne,Ie,"+input"),!0},Qe.prototype.ensurePolled=function(){this.forceCompositionEnd()},Qe.prototype.reset=function(){this.forceCompositionEnd()},Qe.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Qe.prototype.readFromDOMSoon=function(){var e=this;this.readDOMTimeout==null&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing)if(e.composing.done)e.composing=null;else return;e.updateFromDOM()},80))},Qe.prototype.updateFromDOM=function(){var e=this;(this.cm.isReadOnly()||!this.pollContent())&&Nt(this.cm,function(){return zt(e.cm)})},Qe.prototype.setUneditable=function(e){e.contentEditable="false"},Qe.prototype.onKeyPress=function(e){e.charCode==0||this.composing||(e.preventDefault(),this.cm.isReadOnly()||gt(this.cm,$o)(this.cm,String.fromCharCode(e.charCode==null?e.keyCode:e.charCode),0))},Qe.prototype.readOnlyChanged=function(e){this.div.contentEditable=String(e!="nocursor")},Qe.prototype.onContextMenu=function(){},Qe.prototype.resetPosition=function(){},Qe.prototype.needsContentAttribute=!0;function ls(e,t){var n=po(e,t.line);if(!n||n.hidden)return null;var r=Ae(e.doc,t.line),i=Na(n,r,t.line),a=Pe(r,e.doc.direction),l="left";if(a){var u=Pt(a,t.ch);l=u%2?"right":"left"}var f=ja(i.map,t.ch,l);return f.offset=f.collapse=="right"?f.end:f.start,f}function bd(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}function dn(e,t){return t&&(e.bad=!0),e}function yd(e,t,n,r,i){var a="",l=!1,u=e.doc.lineSeparator(),f=!1;function m(Y){return function(ie){return ie.id==Y}}function A(){l&&(a+=u,f&&(a+=u),l=f=!1)}function P(Y){Y&&(A(),a+=Y)}function J(Y){if(Y.nodeType==1){var ie=Y.getAttribute("cm-text");if(ie){P(ie);return}var ue=Y.getAttribute("cm-marker"),me;if(ue){var ve=e.findMarks(ne(r,0),ne(i+1,0),m(+ue));ve.length&&(me=ve[0].find(0))&&P(ir(e.doc,me.from,me.to).join(u));return}if(Y.getAttribute("contenteditable")=="false")return;var _e=/^(pre|div|p|li|table|br)$/i.test(Y.nodeName);if(!/^br$/i.test(Y.nodeName)&&Y.textContent.length==0)return;_e&&A();for(var be=0;be=9&&t.hasSelection&&(t.hasSelection=null),n.poll()}),Fe(i,"paste",function(l){ot(r,l)||rs(l,r)||(r.state.pasteIncoming=+new Date,n.fastPoll())});function a(l){if(!ot(r,l)){if(r.somethingSelected())zi({lineWise:!1,text:r.getSelections()});else if(r.options.lineWiseCopyCut){var u=is(r);zi({lineWise:!0,text:u.text}),l.type=="cut"?r.setSelections(u.ranges,null,ke):(n.prevInput="",i.value=u.text.join(` -`),q(i))}else return;l.type=="cut"&&(r.state.cutIncoming=+new Date)}}Fe(i,"cut",a),Fe(i,"copy",a),Fe(e.scroller,"paste",function(l){if(!(lr(e,l)||ot(r,l))){if(!i.dispatchEvent){r.state.pasteIncoming=+new Date,n.focus();return}var u=new Event("paste");u.clipboardData=l.clipboardData,i.dispatchEvent(u)}}),Fe(e.lineSpace,"selectstart",function(l){lr(e,l)||kt(l)}),Fe(i,"compositionstart",function(){var l=r.getCursor("from");n.composing&&n.composing.range.clear(),n.composing={start:l,range:r.markText(l,r.getCursor("to"),{className:"CodeMirror-composing"})}}),Fe(i,"compositionend",function(){n.composing&&(n.poll(),n.composing.range.clear(),n.composing=null)})},st.prototype.createField=function(e){this.wrapper=os(),this.textarea=this.wrapper.firstChild;var t=this.cm.options;Ko(this.textarea,t.spellcheck,t.autocorrect,t.autocapitalize)},st.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute("aria-label",e):this.textarea.removeAttribute("aria-label")},st.prototype.prepareSelection=function(){var e=this.cm,t=e.display,n=e.doc,r=Ya(e);if(e.options.moveInputWithCursor){var i=Xt(e,n.sel.primary().head,"div"),a=t.wrapper.getBoundingClientRect(),l=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+l.top-a.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+l.left-a.left))}return r},st.prototype.showSelection=function(e){var t=this.cm,n=t.display;V(n.cursorDiv,e.cursors),V(n.selectionDiv,e.selection),e.teTop!=null&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},st.prototype.reset=function(e){if(!(this.contextMenuPending||this.composing&&e)){var t=this.cm;if(this.resetting=!0,t.somethingSelected()){this.prevInput="";var n=t.getSelection();this.textarea.value=n,t.state.focused&&q(this.textarea),s&&g>=9&&(this.hasSelection=n)}else e||(this.prevInput=this.textarea.value="",s&&g>=9&&(this.hasSelection=null));this.resetting=!1}},st.prototype.getField=function(){return this.textarea},st.prototype.supportsTouch=function(){return!1},st.prototype.focus=function(){if(this.cm.options.readOnly!="nocursor"&&(!M||B(ze(this.textarea))!=this.textarea))try{this.textarea.focus()}catch{}},st.prototype.blur=function(){this.textarea.blur()},st.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},st.prototype.receivedFocus=function(){this.slowPoll()},st.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},st.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0;function n(){var r=t.poll();!r&&!e?(e=!0,t.polling.set(60,n)):(t.pollingFast=!1,t.slowPoll())}t.polling.set(20,n)},st.prototype.poll=function(){var e=this,t=this.cm,n=this.textarea,r=this.prevInput;if(this.contextMenuPending||this.resetting||!t.state.focused||hr(n)&&!r&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=n.value;if(i==r&&!t.somethingSelected())return!1;if(s&&g>=9&&this.hasSelection===i||H&&/[\uf700-\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var a=i.charCodeAt(0);if(a==8203&&!r&&(r="\u200B"),a==8666)return this.reset(),this.cm.execCommand("undo")}for(var l=0,u=Math.min(r.length,i.length);l1e3||i.indexOf(` -`)>-1?n.value=e.prevInput="":e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},st.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},st.prototype.onKeyPress=function(){s&&g>=9&&(this.hasSelection=null),this.fastPoll()},st.prototype.onContextMenu=function(e){var t=this,n=t.cm,r=n.display,i=t.textarea;t.contextMenuPending&&t.contextMenuPending();var a=Mr(n,e),l=r.scroller.scrollTop;if(!a||d)return;var u=n.options.resetSelectionOnContextMenu;u&&n.doc.sel.contains(a)==-1&>(n,wt)(n.doc,yr(a),ke);var f=i.style.cssText,m=t.wrapper.style.cssText,A=t.wrapper.offsetParent.getBoundingClientRect();t.wrapper.style.cssText="position: static",i.style.cssText=`position: absolute; width: 30px; height: 30px; - top: `+(e.clientY-A.top-5)+"px; left: "+(e.clientX-A.left-5)+`px; - z-index: 1000; background: `+(s?"rgba(255, 255, 255, .05)":"transparent")+`; - outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);`;var P;h&&(P=i.ownerDocument.defaultView.scrollY),r.input.focus(),h&&i.ownerDocument.defaultView.scrollTo(null,P),r.input.reset(),n.somethingSelected()||(i.value=t.prevInput=" "),t.contextMenuPending=Y,r.selForContextMenu=n.doc.sel,clearTimeout(r.detectingSelectAll);function J(){if(i.selectionStart!=null){var ue=n.somethingSelected(),me="\u200B"+(ue?i.value:"");i.value="\u21DA",i.value=me,t.prevInput=ue?"":"\u200B",i.selectionStart=1,i.selectionEnd=me.length,r.selForContextMenu=n.doc.sel}}function Y(){if(t.contextMenuPending==Y&&(t.contextMenuPending=!1,t.wrapper.style.cssText=m,i.style.cssText=f,s&&g<9&&r.scrollbars.setScrollTop(r.scroller.scrollTop=l),i.selectionStart!=null)){(!s||s&&g<9)&&J();var ue=0,me=function(){r.selForContextMenu==n.doc.sel&&i.selectionStart==0&&i.selectionEnd>0&&t.prevInput=="\u200B"?gt(n,Ll)(n):ue++<10?r.detectingSelectAll=setTimeout(me,500):(r.selForContextMenu=null,r.input.reset())};r.detectingSelectAll=setTimeout(me,200)}}if(s&&g>=9&&J(),F){dr(e);var ie=function(){_t(window,"mouseup",ie),setTimeout(Y,20)};Fe(window,"mouseup",ie)}else setTimeout(Y,50)},st.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled=e=="nocursor",this.textarea.readOnly=!!e},st.prototype.setUneditable=function(){},st.prototype.needsContentAttribute=!1;function _d(e,t){if(t=t?ge(t):{},t.value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),t.autofocus==null){var n=B(ze(e));t.autofocus=n==e||e.getAttribute("autofocus")!=null&&n==document.body}function r(){e.value=u.getValue()}var i;if(e.form&&(Fe(e.form,"submit",r),!t.leaveSubmitMethodAlone)){var a=e.form;i=a.submit;try{var l=a.submit=function(){r(),a.submit=i,a.submit(),a.submit=l}}catch{}}t.finishInit=function(f){f.save=r,f.getTextArea=function(){return e},f.toTextArea=function(){f.toTextArea=isNaN,r(),e.parentNode.removeChild(f.getWrapperElement()),e.style.display="",e.form&&(_t(e.form,"submit",r),!t.leaveSubmitMethodAlone&&typeof e.form.submit=="function"&&(e.form.submit=i))}},e.style.display="none";var u=tt(function(f){return e.parentNode.insertBefore(f,e.nextSibling)},t);return u}function kd(e){e.off=_t,e.on=Fe,e.wheelEventPixels=zf,e.Doc=Mt,e.splitLines=Bt,e.countColumn=Oe,e.findColumn=Ge,e.isWordChar=we,e.Pass=Ze,e.signal=it,e.Line=Xr,e.changeEnd=xr,e.scrollbarModel=rl,e.Pos=ne,e.cmpPos=ye,e.modes=Wr,e.mimeModes=Kt,e.resolveMode=Ur,e.getMode=$r,e.modeExtensions=gr,e.extendMode=Kr,e.copyState=Vt,e.startState=Gr,e.innerMode=_n,e.commands=$n,e.keyMap=ur,e.keyName=Bl,e.isModifierKey=Rl,e.lookupKey=un,e.normalizeKeyMap=Qf,e.StringStream=at,e.SharedTextMarker=Bn,e.TextMarker=kr,e.LineWidget=Hn,e.e_preventDefault=kt,e.e_stopPropagation=Hr,e.e_stop=dr,e.addClass=le,e.contains=I,e.rmClass=Q,e.keyNames=wr}pd(tt),vd(tt);var wd="iter insert remove copy getEditor constructor".split(" ");for(var Ai in Mt.prototype)Mt.prototype.hasOwnProperty(Ai)&&Se(wd,Ai)<0&&(tt.prototype[Ai]=function(e){return function(){return e.apply(this.doc,arguments)}}(Mt.prototype[Ai]));return Wt(Mt),tt.inputStyles={textarea:st,contenteditable:Qe},tt.defineMode=function(e){!tt.defaults.mode&&e!="null"&&(tt.defaults.mode=e),Gt.apply(this,arguments)},tt.defineMIME=Cr,tt.defineMode("null",function(){return{token:function(e){return e.skipToEnd()}}}),tt.defineMIME("text/plain","null"),tt.defineExtension=function(e,t){tt.prototype[e]=t},tt.defineDocExtension=function(e,t){Mt.prototype[e]=t},tt.fromTextArea=_d,kd(tt),tt.version="5.65.16",tt})});var Yn=Ke((us,cs)=>{(function(o){typeof us=="object"&&typeof cs=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.overlayMode=function(p,v,C){return{startState:function(){return{base:o.startState(p),overlay:o.startState(v),basePos:0,baseCur:null,overlayPos:0,overlayCur:null,streamSeen:null}},copyState:function(b){return{base:o.copyState(p,b.base),overlay:o.copyState(v,b.overlay),basePos:b.basePos,baseCur:null,overlayPos:b.overlayPos,overlayCur:null}},token:function(b,k){return(b!=k.streamSeen||Math.min(k.basePos,k.overlayPos){(function(o){typeof fs=="object"&&typeof ds=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";var p=/^(\s*)(>[> ]*|[*+-] \[[x ]\]\s|[*+-]\s|(\d+)([.)]))(\s*)/,v=/^(\s*)(>[> ]*|[*+-] \[[x ]\]|[*+-]|(\d+)[.)])(\s*)$/,C=/[*+-]\s/;o.commands.newlineAndIndentContinueMarkdownList=function(k){if(k.getOption("disableInput"))return o.Pass;for(var s=k.listSelections(),g=[],h=0;h\s*$/.test(E),M=!/>\s*$/.test(E);(R||M)&&k.replaceRange("",{line:S.line,ch:0},{line:S.line,ch:S.ch+1}),g[h]=` -`}else{var H=z[1],Z=z[5],ee=!(C.test(z[2])||z[2].indexOf(">")>=0),re=ee?parseInt(z[3],10)+1+z[4]:z[2].replace("x"," ");g[h]=` -`+H+re+Z,ee&&b(k,S)}}k.replaceSelections(g)};function b(k,s){var g=s.line,h=0,S=0,w=p.exec(k.getLine(g)),c=w[1];do{h+=1;var d=g+h,T=k.getLine(d),E=p.exec(T);if(E){var z=E[1],y=parseInt(w[3],10)+h-S,R=parseInt(E[3],10),M=R;if(c===z&&!isNaN(R))y===R&&(M=R+1),y>R&&(M=y+1),k.replaceRange(T.replace(p,z+M+E[4]+E[5]),{line:d,ch:0},{line:d,ch:T.length});else{if(c.length>z.length||c.length{(function(o){typeof hs=="object"&&typeof gs=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){o.defineOption("placeholder","",function(g,h,S){var w=S&&S!=o.Init;if(h&&!w)g.on("blur",b),g.on("change",k),g.on("swapDoc",k),o.on(g.getInputField(),"compositionupdate",g.state.placeholderCompose=function(){C(g)}),k(g);else if(!h&&w){g.off("blur",b),g.off("change",k),g.off("swapDoc",k),o.off(g.getInputField(),"compositionupdate",g.state.placeholderCompose),p(g);var c=g.getWrapperElement();c.className=c.className.replace(" CodeMirror-empty","")}h&&!g.hasFocus()&&b(g)});function p(g){g.state.placeholder&&(g.state.placeholder.parentNode.removeChild(g.state.placeholder),g.state.placeholder=null)}function v(g){p(g);var h=g.state.placeholder=document.createElement("pre");h.style.cssText="height: 0; overflow: visible",h.style.direction=g.getOption("direction"),h.className="CodeMirror-placeholder CodeMirror-line-like";var S=g.getOption("placeholder");typeof S=="string"&&(S=document.createTextNode(S)),h.appendChild(S),g.display.lineSpace.insertBefore(h,g.display.lineSpace.firstChild)}function C(g){setTimeout(function(){var h=!1;if(g.lineCount()==1){var S=g.getInputField();h=S.nodeName=="TEXTAREA"?!g.getLine(0).length:!/[^\u200b]/.test(S.querySelector(".CodeMirror-line").textContent)}h?v(g):p(g)},20)}function b(g){s(g)&&v(g)}function k(g){var h=g.getWrapperElement(),S=s(g);h.className=h.className.replace(" CodeMirror-empty","")+(S?" CodeMirror-empty":""),S?v(g):p(g)}function s(g){return g.lineCount()===1&&g.getLine(0)===""}})});var ys=Ke((vs,bs)=>{(function(o){typeof vs=="object"&&typeof bs=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineOption("styleSelectedText",!1,function(w,c,d){var T=d&&d!=o.Init;c&&!T?(w.state.markedSelection=[],w.state.markedSelectionStyle=typeof c=="string"?c:"CodeMirror-selectedtext",h(w),w.on("cursorActivity",p),w.on("change",v)):!c&&T&&(w.off("cursorActivity",p),w.off("change",v),g(w),w.state.markedSelection=w.state.markedSelectionStyle=null)});function p(w){w.state.markedSelection&&w.operation(function(){S(w)})}function v(w){w.state.markedSelection&&w.state.markedSelection.length&&w.operation(function(){g(w)})}var C=8,b=o.Pos,k=o.cmpPos;function s(w,c,d,T){if(k(c,d)!=0)for(var E=w.state.markedSelection,z=w.state.markedSelectionStyle,y=c.line;;){var R=y==c.line?c:b(y,0),M=y+C,H=M>=d.line,Z=H?d:b(M,0),ee=w.markText(R,Z,{className:z});if(T==null?E.push(ee):E.splice(T++,0,ee),H)break;y=M}}function g(w){for(var c=w.state.markedSelection,d=0;d1)return h(w);var c=w.getCursor("start"),d=w.getCursor("end"),T=w.state.markedSelection;if(!T.length)return s(w,c,d);var E=T[0].find(),z=T[T.length-1].find();if(!E||!z||d.line-c.line<=C||k(c,z.to)>=0||k(d,E.from)<=0)return h(w);for(;k(c,E.from)>0;)T.shift().clear(),E=T[0].find();for(k(c,E.from)<0&&(E.to.line-c.line0&&(d.line-z.from.line{(function(o){typeof xs=="object"&&typeof _s=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";var p=o.Pos;function v(y){var R=y.flags;return R??(y.ignoreCase?"i":"")+(y.global?"g":"")+(y.multiline?"m":"")}function C(y,R){for(var M=v(y),H=M,Z=0;Zre);N++){var F=y.getLine(ee++);H=H==null?F:H+` -`+F}Z=Z*2,R.lastIndex=M.ch;var D=R.exec(H);if(D){var Q=H.slice(0,D.index).split(` -`),j=D[0].split(` -`),V=M.line+Q.length-1,x=Q[Q.length-1].length;return{from:p(V,x),to:p(V+j.length-1,j.length==1?x+j[0].length:j[j.length-1].length),match:D}}}}function g(y,R,M){for(var H,Z=0;Z<=y.length;){R.lastIndex=Z;var ee=R.exec(y);if(!ee)break;var re=ee.index+ee[0].length;if(re>y.length-M)break;(!H||re>H.index+H[0].length)&&(H=ee),Z=ee.index+1}return H}function h(y,R,M){R=C(R,"g");for(var H=M.line,Z=M.ch,ee=y.firstLine();H>=ee;H--,Z=-1){var re=y.getLine(H),N=g(re,R,Z<0?0:re.length-Z);if(N)return{from:p(H,N.index),to:p(H,N.index+N[0].length),match:N}}}function S(y,R,M){if(!b(R))return h(y,R,M);R=C(R,"gm");for(var H,Z=1,ee=y.getLine(M.line).length-M.ch,re=M.line,N=y.firstLine();re>=N;){for(var F=0;F=N;F++){var D=y.getLine(re--);H=H==null?D:D+` -`+H}Z*=2;var Q=g(H,R,ee);if(Q){var j=H.slice(0,Q.index).split(` -`),V=Q[0].split(` -`),x=re+j.length,K=j[j.length-1].length;return{from:p(x,K),to:p(x+V.length-1,V.length==1?K+V[0].length:V[V.length-1].length),match:Q}}}}var w,c;String.prototype.normalize?(w=function(y){return y.normalize("NFD").toLowerCase()},c=function(y){return y.normalize("NFD")}):(w=function(y){return y.toLowerCase()},c=function(y){return y});function d(y,R,M,H){if(y.length==R.length)return M;for(var Z=0,ee=M+Math.max(0,y.length-R.length);;){if(Z==ee)return Z;var re=Z+ee>>1,N=H(y.slice(0,re)).length;if(N==M)return re;N>M?ee=re:Z=re+1}}function T(y,R,M,H){if(!R.length)return null;var Z=H?w:c,ee=Z(R).split(/\r|\n\r?/);e:for(var re=M.line,N=M.ch,F=y.lastLine()+1-ee.length;re<=F;re++,N=0){var D=y.getLine(re).slice(N),Q=Z(D);if(ee.length==1){var j=Q.indexOf(ee[0]);if(j==-1)continue e;var M=d(D,Q,j,Z)+N;return{from:p(re,d(D,Q,j,Z)+N),to:p(re,d(D,Q,j+ee[0].length,Z)+N)}}else{var V=Q.length-ee[0].length;if(Q.slice(V)!=ee[0])continue e;for(var x=1;x=F;re--,N=-1){var D=y.getLine(re);N>-1&&(D=D.slice(0,N));var Q=Z(D);if(ee.length==1){var j=Q.lastIndexOf(ee[0]);if(j==-1)continue e;return{from:p(re,d(D,Q,j,Z)),to:p(re,d(D,Q,j+ee[0].length,Z))}}else{var V=ee[ee.length-1];if(Q.slice(0,V.length)!=V)continue e;for(var x=1,M=re-ee.length+1;x(this.doc.getLine(R.line)||"").length&&(R.ch=0,R.line++)),o.cmpPos(R,this.doc.clipPos(R))!=0))return this.atOccurrence=!1;var M=this.matches(y,R);if(this.afterEmptyMatch=M&&o.cmpPos(M.from,M.to)==0,M)return this.pos=M,this.atOccurrence=!0,this.pos.match||!0;var H=p(y?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:H,to:H},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(y,R){if(this.atOccurrence){var M=o.splitLines(y);this.doc.replaceRange(M,this.pos.from,this.pos.to,R),this.pos.to=p(this.pos.from.line+M.length-1,M[M.length-1].length+(M.length==1?this.pos.from.ch:0))}}},o.defineExtension("getSearchCursor",function(y,R,M){return new z(this.doc,y,R,M)}),o.defineDocExtension("getSearchCursor",function(y,R,M){return new z(this,y,R,M)}),o.defineExtension("selectMatches",function(y,R){for(var M=[],H=this.getSearchCursor(y,this.getCursor("from"),R);H.findNext()&&!(o.cmpPos(H.to(),this.getCursor("to"))>0);)M.push({anchor:H.from(),head:H.to()});M.length&&this.setSelections(M,0)})})});var Vo=Ke((ws,Ss)=>{(function(o){typeof ws=="object"&&typeof Ss=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";function p(I,B,le,xe,q,L){this.indented=I,this.column=B,this.type=le,this.info=xe,this.align=q,this.prev=L}function v(I,B,le,xe){var q=I.indented;return I.context&&I.context.type=="statement"&&le!="statement"&&(q=I.context.indented),I.context=new p(q,B,le,xe,null,I.context)}function C(I){var B=I.context.type;return(B==")"||B=="]"||B=="}")&&(I.indented=I.context.indented),I.context=I.context.prev}function b(I,B,le){if(B.prevToken=="variable"||B.prevToken=="type"||/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(I.string.slice(0,le))||B.typeAtEndOfLine&&I.column()==I.indentation())return!0}function k(I){for(;;){if(!I||I.type=="top")return!0;if(I.type=="}"&&I.prev.info!="namespace")return!1;I=I.prev}}o.defineMode("clike",function(I,B){var le=I.indentUnit,xe=B.statementIndentUnit||le,q=B.dontAlignCalls,L=B.keywords||{},de=B.types||{},ze=B.builtin||{},pe=B.blockKeywords||{},Ee=B.defKeywords||{},ge=B.atoms||{},Oe=B.hooks||{},qe=B.multiLineStrings,Se=B.indentStatements!==!1,je=B.indentSwitch!==!1,Ze=B.namespaceSeparator,ke=B.isPunctuationChar||/[\[\]{}\(\),;\:\.]/,Je=B.numberStart||/[\d\.]/,He=B.number||/^(?:0x[a-f\d]+|0b[01]+|(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?)(u|ll?|l|f)?/i,Ge=B.isOperatorChar||/[+\-*&%=<>!?|\/]/,U=B.isIdentifierChar||/[\w\$_\xa1-\uffff]/,G=B.isReservedIdentifier||!1,ce,Be;function te(we,Me){var Le=we.next();if(Oe[Le]){var $=Oe[Le](we,Me);if($!==!1)return $}if(Le=='"'||Le=="'")return Me.tokenize=fe(Le),Me.tokenize(we,Me);if(Je.test(Le)){if(we.backUp(1),we.match(He))return"number";we.next()}if(ke.test(Le))return ce=Le,null;if(Le=="/"){if(we.eat("*"))return Me.tokenize=oe,oe(we,Me);if(we.eat("/"))return we.skipToEnd(),"comment"}if(Ge.test(Le)){for(;!we.match(/^\/[\/*]/,!1)&&we.eat(Ge););return"operator"}if(we.eatWhile(U),Ze)for(;we.match(Ze);)we.eatWhile(U);var W=we.current();return g(L,W)?(g(pe,W)&&(ce="newstatement"),g(Ee,W)&&(Be=!0),"keyword"):g(de,W)?"type":g(ze,W)||G&&G(W)?(g(pe,W)&&(ce="newstatement"),"builtin"):g(ge,W)?"atom":"variable"}function fe(we){return function(Me,Le){for(var $=!1,W,se=!1;(W=Me.next())!=null;){if(W==we&&!$){se=!0;break}$=!$&&W=="\\"}return(se||!($||qe))&&(Le.tokenize=null),"string"}}function oe(we,Me){for(var Le=!1,$;$=we.next();){if($=="/"&&Le){Me.tokenize=null;break}Le=$=="*"}return"comment"}function Ue(we,Me){B.typeFirstDefinitions&&we.eol()&&k(Me.context)&&(Me.typeAtEndOfLine=b(we,Me,we.pos))}return{startState:function(we){return{tokenize:null,context:new p((we||0)-le,0,"top",null,!1),indented:0,startOfLine:!0,prevToken:null}},token:function(we,Me){var Le=Me.context;if(we.sol()&&(Le.align==null&&(Le.align=!1),Me.indented=we.indentation(),Me.startOfLine=!0),we.eatSpace())return Ue(we,Me),null;ce=Be=null;var $=(Me.tokenize||te)(we,Me);if($=="comment"||$=="meta")return $;if(Le.align==null&&(Le.align=!0),ce==";"||ce==":"||ce==","&&we.match(/^\s*(?:\/\/.*)?$/,!1))for(;Me.context.type=="statement";)C(Me);else if(ce=="{")v(Me,we.column(),"}");else if(ce=="[")v(Me,we.column(),"]");else if(ce=="(")v(Me,we.column(),")");else if(ce=="}"){for(;Le.type=="statement";)Le=C(Me);for(Le.type=="}"&&(Le=C(Me));Le.type=="statement";)Le=C(Me)}else ce==Le.type?C(Me):Se&&((Le.type=="}"||Le.type=="top")&&ce!=";"||Le.type=="statement"&&ce=="newstatement")&&v(Me,we.column(),"statement",we.current());if($=="variable"&&(Me.prevToken=="def"||B.typeFirstDefinitions&&b(we,Me,we.start)&&k(Me.context)&&we.match(/^\s*\(/,!1))&&($="def"),Oe.token){var W=Oe.token(we,Me,$);W!==void 0&&($=W)}return $=="def"&&B.styleDefs===!1&&($="variable"),Me.startOfLine=!1,Me.prevToken=Be?"def":$||ce,Ue(we,Me),$},indent:function(we,Me){if(we.tokenize!=te&&we.tokenize!=null||we.typeAtEndOfLine&&k(we.context))return o.Pass;var Le=we.context,$=Me&&Me.charAt(0),W=$==Le.type;if(Le.type=="statement"&&$=="}"&&(Le=Le.prev),B.dontIndentStatements)for(;Le.type=="statement"&&B.dontIndentStatements.test(Le.info);)Le=Le.prev;if(Oe.indent){var se=Oe.indent(we,Le,Me,le);if(typeof se=="number")return se}var De=Le.prev&&Le.prev.info=="switch";if(B.allmanIndentation&&/[{(]/.test($)){for(;Le.type!="top"&&Le.type!="}";)Le=Le.prev;return Le.indented}return Le.type=="statement"?Le.indented+($=="{"?0:xe):Le.align&&(!q||Le.type!=")")?Le.column+(W?0:1):Le.type==")"&&!W?Le.indented+xe:Le.indented+(W?0:le)+(!W&&De&&!/^(?:case|default)\b/.test(Me)?le:0)},electricInput:je?/^\s*(?:case .*?:|default:|\{\}?|\})$/:/^\s*[{}]$/,blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:"//",fold:"brace"}});function s(I){for(var B={},le=I.split(" "),xe=0;xe!?|\/#:@]/,hooks:{"@":function(I){return I.eatWhile(/[\w\$_]/),"meta"},'"':function(I,B){return I.match('""')?(B.tokenize=j,B.tokenize(I,B)):!1},"'":function(I){return I.match(/^(\\[^'\s]+|[^\\'])'/)?"string-2":(I.eatWhile(/[\w\$_\xa1-\uffff]/),"atom")},"=":function(I,B){var le=B.context;return le.type=="}"&&le.align&&I.eat(">")?(B.context=new p(le.indented,le.column,le.type,le.info,null,le.prev),"operator"):!1},"/":function(I,B){return I.eat("*")?(B.tokenize=V(1),B.tokenize(I,B)):!1}},modeProps:{closeBrackets:{pairs:'()[]{}""',triples:'"'}}});function x(I){return function(B,le){for(var xe=!1,q,L=!1;!B.eol();){if(!I&&!xe&&B.match('"')){L=!0;break}if(I&&B.match('"""')){L=!0;break}q=B.next(),!xe&&q=="$"&&B.match("{")&&B.skipTo("}"),xe=!xe&&q=="\\"&&!I}return(L||!I)&&(le.tokenize=null),"string"}}Q("text/x-kotlin",{name:"clike",keywords:s("package as typealias class interface this super val operator var fun for is in This throw return annotation break continue object if else while do try when !in !is as? file import where by get set abstract enum open inner override private public internal protected catch finally out final vararg reified dynamic companion constructor init sealed field property receiver param sparam lateinit data inline noinline tailrec external annotation crossinline const operator infix suspend actual expect setparam value"),types:s("Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void Annotation Any BooleanArray ByteArray Char CharArray DeprecationLevel DoubleArray Enum FloatArray Function Int IntArray Lazy LazyThreadSafetyMode LongArray Nothing ShortArray Unit"),intendSwitch:!1,indentStatements:!1,multiLineStrings:!0,number:/^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+(\.\d+)?|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i,blockKeywords:s("catch class do else finally for if where try while enum"),defKeywords:s("class val var object interface fun"),atoms:s("true false null this"),hooks:{"@":function(I){return I.eatWhile(/[\w\$_]/),"meta"},"*":function(I,B){return B.prevToken=="."?"variable":"operator"},'"':function(I,B){return B.tokenize=x(I.match('""')),B.tokenize(I,B)},"/":function(I,B){return I.eat("*")?(B.tokenize=V(1),B.tokenize(I,B)):!1},indent:function(I,B,le,xe){var q=le&&le.charAt(0);if((I.prevToken=="}"||I.prevToken==")")&&le=="")return I.indented;if(I.prevToken=="operator"&&le!="}"&&I.context.type!="}"||I.prevToken=="variable"&&q=="."||(I.prevToken=="}"||I.prevToken==")")&&q==".")return xe*2+B.indented;if(B.align&&B.type=="}")return B.indented+(I.context.type==(le||"").charAt(0)?0:xe)}},modeProps:{closeBrackets:{triples:'"'}}}),Q(["x-shader/x-vertex","x-shader/x-fragment"],{name:"clike",keywords:s("sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const attribute uniform varying break continue discard return for while do if else struct in out inout"),types:s("float int bool void vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3 mat4"),blockKeywords:s("for while do if else struct"),builtin:s("radians degrees sin cos tan asin acos atan pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max clamp mix step smoothstep length distance dot cross normalize ftransform faceforward reflect refract matrixCompMult lessThan lessThanEqual greaterThan greaterThanEqual equal notEqual any all not texture1D texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx dFdy fwidth noise1 noise2 noise3 noise4"),atoms:s("true false gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse gl_TextureMatrixTranspose gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixInverseTranspose gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits gl_MaxDrawBuffers"),indentSwitch:!1,hooks:{"#":M},modeProps:{fold:["brace","include"]}}),Q("text/x-nesc",{name:"clike",keywords:s(h+" as atomic async call command component components configuration event generic implementation includes interface module new norace nx_struct nx_union post provides signal task uses abstract extends"),types:E,blockKeywords:s(y),atoms:s("null true false"),hooks:{"#":M},modeProps:{fold:["brace","include"]}}),Q("text/x-objectivec",{name:"clike",keywords:s(h+" "+w),types:z,builtin:s(c),blockKeywords:s(y+" @synthesize @try @catch @finally @autoreleasepool @synchronized"),defKeywords:s(R+" @interface @implementation @protocol @class"),dontIndentStatements:/^@.*$/,typeFirstDefinitions:!0,atoms:s("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:Z,hooks:{"#":M,"*":H},modeProps:{fold:["brace","include"]}}),Q("text/x-objectivec++",{name:"clike",keywords:s(h+" "+w+" "+S),types:z,builtin:s(c),blockKeywords:s(y+" @synthesize @try @catch @finally @autoreleasepool @synchronized class try catch"),defKeywords:s(R+" @interface @implementation @protocol @class class namespace"),dontIndentStatements:/^@.*$|^template$/,typeFirstDefinitions:!0,atoms:s("YES NO NULL Nil nil true false nullptr"),isReservedIdentifier:Z,hooks:{"#":M,"*":H,u:re,U:re,L:re,R:re,0:ee,1:ee,2:ee,3:ee,4:ee,5:ee,6:ee,7:ee,8:ee,9:ee,token:function(I,B,le){if(le=="variable"&&I.peek()=="("&&(B.prevToken==";"||B.prevToken==null||B.prevToken=="}")&&N(I.current()))return"def"}},namespaceSeparator:"::",modeProps:{fold:["brace","include"]}}),Q("text/x-squirrel",{name:"clike",keywords:s("base break clone continue const default delete enum extends function in class foreach local resume return this throw typeof yield constructor instanceof static"),types:E,blockKeywords:s("case catch class else for foreach if switch try while"),defKeywords:s("function local class"),typeFirstDefinitions:!0,atoms:s("true false null"),hooks:{"#":M},modeProps:{fold:["brace","include"]}});var K=null;function X(I){return function(B,le){for(var xe=!1,q,L=!1;!B.eol();){if(!xe&&B.match('"')&&(I=="single"||B.match('""'))){L=!0;break}if(!xe&&B.match("``")){K=X(I),L=!0;break}q=B.next(),xe=I=="single"&&!xe&&q=="\\"}return L&&(le.tokenize=null),"string"}}Q("text/x-ceylon",{name:"clike",keywords:s("abstracts alias assembly assert assign break case catch class continue dynamic else exists extends finally for function given if import in interface is let module new nonempty object of out outer package return satisfies super switch then this throw try value void while"),types:function(I){var B=I.charAt(0);return B===B.toUpperCase()&&B!==B.toLowerCase()},blockKeywords:s("case catch class dynamic else finally for function if interface module new object switch try while"),defKeywords:s("class dynamic function interface module object package value"),builtin:s("abstract actual aliased annotation by default deprecated doc final formal late license native optional sealed see serializable shared suppressWarnings tagged throws variable"),isPunctuationChar:/[\[\]{}\(\),;\:\.`]/,isOperatorChar:/[+\-*&%=<>!?|^~:\/]/,numberStart:/[\d#$]/,number:/^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,multiLineStrings:!0,typeFirstDefinitions:!0,atoms:s("true false null larger smaller equal empty finished"),indentSwitch:!1,styleDefs:!1,hooks:{"@":function(I){return I.eatWhile(/[\w\$_]/),"meta"},'"':function(I,B){return B.tokenize=X(I.match('""')?"triple":"single"),B.tokenize(I,B)},"`":function(I,B){return!K||!I.match("`")?!1:(B.tokenize=K,K=null,B.tokenize(I,B))},"'":function(I){return I.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},token:function(I,B,le){if((le=="variable"||le=="type")&&B.prevToken==".")return"variable-2"}},modeProps:{fold:["brace","import"],closeBrackets:{triples:'"'}}})})});var Cs=Ke((Ts,Ls)=>{(function(o){typeof Ts=="object"&&typeof Ls=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("cmake",function(){var p=/({)?[a-zA-Z0-9_]+(})?/;function v(b,k){for(var s,g,h=!1;!b.eol()&&(s=b.next())!=k.pending;){if(s==="$"&&g!="\\"&&k.pending=='"'){h=!0;break}g=s}return h&&b.backUp(1),s==k.pending?k.continueString=!1:k.continueString=!0,"string"}function C(b,k){var s=b.next();return s==="$"?b.match(p)?"variable-2":"variable":k.continueString?(b.backUp(1),v(b,k)):b.match(/(\s+)?\w+\(/)||b.match(/(\s+)?\w+\ \(/)?(b.backUp(1),"def"):s=="#"?(b.skipToEnd(),"comment"):s=="'"||s=='"'?(k.pending=s,v(b,k)):s=="("||s==")"?"bracket":s.match(/[0-9]/)?"number":(b.eatWhile(/[\w-]/),null)}return{startState:function(){var b={};return b.inDefinition=!1,b.inInclude=!1,b.continueString=!1,b.pending=!1,b},token:function(b,k){return b.eatSpace()?null:C(b,k)}}}),o.defineMIME("text/x-cmake","cmake")})});var gn=Ke((Es,zs)=>{(function(o){typeof Es=="object"&&typeof zs=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("css",function(F,D){var Q=D.inline;D.propertyKeywords||(D=o.resolveMode("text/css"));var j=F.indentUnit,V=D.tokenHooks,x=D.documentTypes||{},K=D.mediaTypes||{},X=D.mediaFeatures||{},I=D.mediaValueKeywords||{},B=D.propertyKeywords||{},le=D.nonStandardPropertyKeywords||{},xe=D.fontProperties||{},q=D.counterDescriptors||{},L=D.colorKeywords||{},de=D.valueKeywords||{},ze=D.allowNested,pe=D.lineComment,Ee=D.supportsAtComponent===!0,ge=F.highlightNonStandardPropertyKeywords!==!1,Oe,qe;function Se(te,fe){return Oe=fe,te}function je(te,fe){var oe=te.next();if(V[oe]){var Ue=V[oe](te,fe);if(Ue!==!1)return Ue}if(oe=="@")return te.eatWhile(/[\w\\\-]/),Se("def",te.current());if(oe=="="||(oe=="~"||oe=="|")&&te.eat("="))return Se(null,"compare");if(oe=='"'||oe=="'")return fe.tokenize=Ze(oe),fe.tokenize(te,fe);if(oe=="#")return te.eatWhile(/[\w\\\-]/),Se("atom","hash");if(oe=="!")return te.match(/^\s*\w*/),Se("keyword","important");if(/\d/.test(oe)||oe=="."&&te.eat(/\d/))return te.eatWhile(/[\w.%]/),Se("number","unit");if(oe==="-"){if(/[\d.]/.test(te.peek()))return te.eatWhile(/[\w.%]/),Se("number","unit");if(te.match(/^-[\w\\\-]*/))return te.eatWhile(/[\w\\\-]/),te.match(/^\s*:/,!1)?Se("variable-2","variable-definition"):Se("variable-2","variable");if(te.match(/^\w+-/))return Se("meta","meta")}else return/[,+>*\/]/.test(oe)?Se(null,"select-op"):oe=="."&&te.match(/^-?[_a-z][_a-z0-9-]*/i)?Se("qualifier","qualifier"):/[:;{}\[\]\(\)]/.test(oe)?Se(null,oe):te.match(/^[\w-.]+(?=\()/)?(/^(url(-prefix)?|domain|regexp)$/i.test(te.current())&&(fe.tokenize=ke),Se("variable callee","variable")):/[\w\\\-]/.test(oe)?(te.eatWhile(/[\w\\\-]/),Se("property","word")):Se(null,null)}function Ze(te){return function(fe,oe){for(var Ue=!1,we;(we=fe.next())!=null;){if(we==te&&!Ue){te==")"&&fe.backUp(1);break}Ue=!Ue&&we=="\\"}return(we==te||!Ue&&te!=")")&&(oe.tokenize=null),Se("string","string")}}function ke(te,fe){return te.next(),te.match(/^\s*[\"\')]/,!1)?fe.tokenize=null:fe.tokenize=Ze(")"),Se(null,"(")}function Je(te,fe,oe){this.type=te,this.indent=fe,this.prev=oe}function He(te,fe,oe,Ue){return te.context=new Je(oe,fe.indentation()+(Ue===!1?0:j),te.context),oe}function Ge(te){return te.context.prev&&(te.context=te.context.prev),te.context.type}function U(te,fe,oe){return Be[oe.context.type](te,fe,oe)}function G(te,fe,oe,Ue){for(var we=Ue||1;we>0;we--)oe.context=oe.context.prev;return U(te,fe,oe)}function ce(te){var fe=te.current().toLowerCase();de.hasOwnProperty(fe)?qe="atom":L.hasOwnProperty(fe)?qe="keyword":qe="variable"}var Be={};return Be.top=function(te,fe,oe){if(te=="{")return He(oe,fe,"block");if(te=="}"&&oe.context.prev)return Ge(oe);if(Ee&&/@component/i.test(te))return He(oe,fe,"atComponentBlock");if(/^@(-moz-)?document$/i.test(te))return He(oe,fe,"documentTypes");if(/^@(media|supports|(-moz-)?document|import)$/i.test(te))return He(oe,fe,"atBlock");if(/^@(font-face|counter-style)/i.test(te))return oe.stateArg=te,"restricted_atBlock_before";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/i.test(te))return"keyframes";if(te&&te.charAt(0)=="@")return He(oe,fe,"at");if(te=="hash")qe="builtin";else if(te=="word")qe="tag";else{if(te=="variable-definition")return"maybeprop";if(te=="interpolation")return He(oe,fe,"interpolation");if(te==":")return"pseudo";if(ze&&te=="(")return He(oe,fe,"parens")}return oe.context.type},Be.block=function(te,fe,oe){if(te=="word"){var Ue=fe.current().toLowerCase();return B.hasOwnProperty(Ue)?(qe="property","maybeprop"):le.hasOwnProperty(Ue)?(qe=ge?"string-2":"property","maybeprop"):ze?(qe=fe.match(/^\s*:(?:\s|$)/,!1)?"property":"tag","block"):(qe+=" error","maybeprop")}else return te=="meta"?"block":!ze&&(te=="hash"||te=="qualifier")?(qe="error","block"):Be.top(te,fe,oe)},Be.maybeprop=function(te,fe,oe){return te==":"?He(oe,fe,"prop"):U(te,fe,oe)},Be.prop=function(te,fe,oe){if(te==";")return Ge(oe);if(te=="{"&&ze)return He(oe,fe,"propBlock");if(te=="}"||te=="{")return G(te,fe,oe);if(te=="(")return He(oe,fe,"parens");if(te=="hash"&&!/^#([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/.test(fe.current()))qe+=" error";else if(te=="word")ce(fe);else if(te=="interpolation")return He(oe,fe,"interpolation");return"prop"},Be.propBlock=function(te,fe,oe){return te=="}"?Ge(oe):te=="word"?(qe="property","maybeprop"):oe.context.type},Be.parens=function(te,fe,oe){return te=="{"||te=="}"?G(te,fe,oe):te==")"?Ge(oe):te=="("?He(oe,fe,"parens"):te=="interpolation"?He(oe,fe,"interpolation"):(te=="word"&&ce(fe),"parens")},Be.pseudo=function(te,fe,oe){return te=="meta"?"pseudo":te=="word"?(qe="variable-3",oe.context.type):U(te,fe,oe)},Be.documentTypes=function(te,fe,oe){return te=="word"&&x.hasOwnProperty(fe.current())?(qe="tag",oe.context.type):Be.atBlock(te,fe,oe)},Be.atBlock=function(te,fe,oe){if(te=="(")return He(oe,fe,"atBlock_parens");if(te=="}"||te==";")return G(te,fe,oe);if(te=="{")return Ge(oe)&&He(oe,fe,ze?"block":"top");if(te=="interpolation")return He(oe,fe,"interpolation");if(te=="word"){var Ue=fe.current().toLowerCase();Ue=="only"||Ue=="not"||Ue=="and"||Ue=="or"?qe="keyword":K.hasOwnProperty(Ue)?qe="attribute":X.hasOwnProperty(Ue)?qe="property":I.hasOwnProperty(Ue)?qe="keyword":B.hasOwnProperty(Ue)?qe="property":le.hasOwnProperty(Ue)?qe=ge?"string-2":"property":de.hasOwnProperty(Ue)?qe="atom":L.hasOwnProperty(Ue)?qe="keyword":qe="error"}return oe.context.type},Be.atComponentBlock=function(te,fe,oe){return te=="}"?G(te,fe,oe):te=="{"?Ge(oe)&&He(oe,fe,ze?"block":"top",!1):(te=="word"&&(qe="error"),oe.context.type)},Be.atBlock_parens=function(te,fe,oe){return te==")"?Ge(oe):te=="{"||te=="}"?G(te,fe,oe,2):Be.atBlock(te,fe,oe)},Be.restricted_atBlock_before=function(te,fe,oe){return te=="{"?He(oe,fe,"restricted_atBlock"):te=="word"&&oe.stateArg=="@counter-style"?(qe="variable","restricted_atBlock_before"):U(te,fe,oe)},Be.restricted_atBlock=function(te,fe,oe){return te=="}"?(oe.stateArg=null,Ge(oe)):te=="word"?(oe.stateArg=="@font-face"&&!xe.hasOwnProperty(fe.current().toLowerCase())||oe.stateArg=="@counter-style"&&!q.hasOwnProperty(fe.current().toLowerCase())?qe="error":qe="property","maybeprop"):"restricted_atBlock"},Be.keyframes=function(te,fe,oe){return te=="word"?(qe="variable","keyframes"):te=="{"?He(oe,fe,"top"):U(te,fe,oe)},Be.at=function(te,fe,oe){return te==";"?Ge(oe):te=="{"||te=="}"?G(te,fe,oe):(te=="word"?qe="tag":te=="hash"&&(qe="builtin"),"at")},Be.interpolation=function(te,fe,oe){return te=="}"?Ge(oe):te=="{"||te==";"?G(te,fe,oe):(te=="word"?qe="variable":te!="variable"&&te!="("&&te!=")"&&(qe="error"),"interpolation")},{startState:function(te){return{tokenize:null,state:Q?"block":"top",stateArg:null,context:new Je(Q?"block":"top",te||0,null)}},token:function(te,fe){if(!fe.tokenize&&te.eatSpace())return null;var oe=(fe.tokenize||je)(te,fe);return oe&&typeof oe=="object"&&(Oe=oe[1],oe=oe[0]),qe=oe,Oe!="comment"&&(fe.state=Be[fe.state](Oe,te,fe)),qe},indent:function(te,fe){var oe=te.context,Ue=fe&&fe.charAt(0),we=oe.indent;return oe.type=="prop"&&(Ue=="}"||Ue==")")&&(oe=oe.prev),oe.prev&&(Ue=="}"&&(oe.type=="block"||oe.type=="top"||oe.type=="interpolation"||oe.type=="restricted_atBlock")?(oe=oe.prev,we=oe.indent):(Ue==")"&&(oe.type=="parens"||oe.type=="atBlock_parens")||Ue=="{"&&(oe.type=="at"||oe.type=="atBlock"))&&(we=Math.max(0,oe.indent-j))),we},electricChars:"}",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:pe,fold:"brace"}});function p(F){for(var D={},Q=0;Q{(function(o){typeof Ms=="object"&&typeof As=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("diff",function(){var p={"+":"positive","-":"negative","@":"meta"};return{token:function(v){var C=v.string.search(/[\t ]+?$/);if(!v.sol()||C===0)return v.skipToEnd(),("error "+(p[v.string.charAt(0)]||"")).replace(/ $/,"");var b=p[v.peek()]||v.skipToEnd();return C===-1?v.skipToEnd():v.pos=C,b}}}),o.defineMIME("text/x-diff","diff")})});var mn=Ke((qs,Is)=>{(function(o){typeof qs=="object"&&typeof Is=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";var p={autoSelfClosers:{area:!0,base:!0,br:!0,col:!0,command:!0,embed:!0,frame:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0,menuitem:!0},implicitlyClosed:{dd:!0,li:!0,optgroup:!0,option:!0,p:!0,rp:!0,rt:!0,tbody:!0,td:!0,tfoot:!0,th:!0,tr:!0},contextGrabbers:{dd:{dd:!0,dt:!0},dt:{dd:!0,dt:!0},li:{li:!0},option:{option:!0,optgroup:!0},optgroup:{optgroup:!0},p:{address:!0,article:!0,aside:!0,blockquote:!0,dir:!0,div:!0,dl:!0,fieldset:!0,footer:!0,form:!0,h1:!0,h2:!0,h3:!0,h4:!0,h5:!0,h6:!0,header:!0,hgroup:!0,hr:!0,menu:!0,nav:!0,ol:!0,p:!0,pre:!0,section:!0,table:!0,ul:!0},rp:{rp:!0,rt:!0},rt:{rp:!0,rt:!0},tbody:{tbody:!0,tfoot:!0},td:{td:!0,th:!0},tfoot:{tbody:!0},th:{td:!0,th:!0},thead:{tbody:!0,tfoot:!0},tr:{tr:!0}},doNotIndent:{pre:!0},allowUnquoted:!0,allowMissing:!0,caseFold:!0},v={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!1,allowMissing:!1,allowMissingTagName:!1,caseFold:!1};o.defineMode("xml",function(C,b){var k=C.indentUnit,s={},g=b.htmlMode?p:v;for(var h in g)s[h]=g[h];for(var h in b)s[h]=b[h];var S,w;function c(x,K){function X(le){return K.tokenize=le,le(x,K)}var I=x.next();if(I=="<")return x.eat("!")?x.eat("[")?x.match("CDATA[")?X(E("atom","]]>")):null:x.match("--")?X(E("comment","-->")):x.match("DOCTYPE",!0,!0)?(x.eatWhile(/[\w\._\-]/),X(z(1))):null:x.eat("?")?(x.eatWhile(/[\w\._\-]/),K.tokenize=E("meta","?>"),"meta"):(S=x.eat("/")?"closeTag":"openTag",K.tokenize=d,"tag bracket");if(I=="&"){var B;return x.eat("#")?x.eat("x")?B=x.eatWhile(/[a-fA-F\d]/)&&x.eat(";"):B=x.eatWhile(/[\d]/)&&x.eat(";"):B=x.eatWhile(/[\w\.\-:]/)&&x.eat(";"),B?"atom":"error"}else return x.eatWhile(/[^&<]/),null}c.isInText=!0;function d(x,K){var X=x.next();if(X==">"||X=="/"&&x.eat(">"))return K.tokenize=c,S=X==">"?"endTag":"selfcloseTag","tag bracket";if(X=="=")return S="equals",null;if(X=="<"){K.tokenize=c,K.state=Z,K.tagName=K.tagStart=null;var I=K.tokenize(x,K);return I?I+" tag error":"tag error"}else return/[\'\"]/.test(X)?(K.tokenize=T(X),K.stringStartCol=x.column(),K.tokenize(x,K)):(x.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function T(x){var K=function(X,I){for(;!X.eol();)if(X.next()==x){I.tokenize=d;break}return"string"};return K.isInAttribute=!0,K}function E(x,K){return function(X,I){for(;!X.eol();){if(X.match(K)){I.tokenize=c;break}X.next()}return x}}function z(x){return function(K,X){for(var I;(I=K.next())!=null;){if(I=="<")return X.tokenize=z(x+1),X.tokenize(K,X);if(I==">")if(x==1){X.tokenize=c;break}else return X.tokenize=z(x-1),X.tokenize(K,X)}return"meta"}}function y(x){return x&&x.toLowerCase()}function R(x,K,X){this.prev=x.context,this.tagName=K||"",this.indent=x.indented,this.startOfLine=X,(s.doNotIndent.hasOwnProperty(K)||x.context&&x.context.noIndent)&&(this.noIndent=!0)}function M(x){x.context&&(x.context=x.context.prev)}function H(x,K){for(var X;;){if(!x.context||(X=x.context.tagName,!s.contextGrabbers.hasOwnProperty(y(X))||!s.contextGrabbers[y(X)].hasOwnProperty(y(K))))return;M(x)}}function Z(x,K,X){return x=="openTag"?(X.tagStart=K.column(),ee):x=="closeTag"?re:Z}function ee(x,K,X){return x=="word"?(X.tagName=K.current(),w="tag",D):s.allowMissingTagName&&x=="endTag"?(w="tag bracket",D(x,K,X)):(w="error",ee)}function re(x,K,X){if(x=="word"){var I=K.current();return X.context&&X.context.tagName!=I&&s.implicitlyClosed.hasOwnProperty(y(X.context.tagName))&&M(X),X.context&&X.context.tagName==I||s.matchClosing===!1?(w="tag",N):(w="tag error",F)}else return s.allowMissingTagName&&x=="endTag"?(w="tag bracket",N(x,K,X)):(w="error",F)}function N(x,K,X){return x!="endTag"?(w="error",N):(M(X),Z)}function F(x,K,X){return w="error",N(x,K,X)}function D(x,K,X){if(x=="word")return w="attribute",Q;if(x=="endTag"||x=="selfcloseTag"){var I=X.tagName,B=X.tagStart;return X.tagName=X.tagStart=null,x=="selfcloseTag"||s.autoSelfClosers.hasOwnProperty(y(I))?H(X,I):(H(X,I),X.context=new R(X,I,B==X.indented)),Z}return w="error",D}function Q(x,K,X){return x=="equals"?j:(s.allowMissing||(w="error"),D(x,K,X))}function j(x,K,X){return x=="string"?V:x=="word"&&s.allowUnquoted?(w="string",D):(w="error",D(x,K,X))}function V(x,K,X){return x=="string"?V:D(x,K,X)}return{startState:function(x){var K={tokenize:c,state:Z,indented:x||0,tagName:null,tagStart:null,context:null};return x!=null&&(K.baseIndent=x),K},token:function(x,K){if(!K.tagName&&x.sol()&&(K.indented=x.indentation()),x.eatSpace())return null;S=null;var X=K.tokenize(x,K);return(X||S)&&X!="comment"&&(w=null,K.state=K.state(S||X,x,K),w&&(X=w=="error"?X+" error":w)),X},indent:function(x,K,X){var I=x.context;if(x.tokenize.isInAttribute)return x.tagStart==x.indented?x.stringStartCol+1:x.indented+k;if(I&&I.noIndent)return o.Pass;if(x.tokenize!=d&&x.tokenize!=c)return X?X.match(/^(\s*)/)[0].length:0;if(x.tagName)return s.multilineTagIndentPastTag!==!1?x.tagStart+x.tagName.length+2:x.tagStart+k*(s.multilineTagIndentFactor||1);if(s.alignCDATA&&/$/,blockCommentStart:"",configuration:s.htmlMode?"html":"xml",helperType:s.htmlMode?"html":"xml",skipAttribute:function(x){x.state==j&&(x.state=D)},xmlCurrentTag:function(x){return x.tagName?{name:x.tagName,close:x.type=="closeTag"}:null},xmlCurrentContext:function(x){for(var K=[],X=x.context;X;X=X.prev)K.push(X.tagName);return K.reverse()}}}),o.defineMIME("text/xml","xml"),o.defineMIME("application/xml","xml"),o.mimeModes.hasOwnProperty("text/html")||o.defineMIME("text/html",{name:"xml",htmlMode:!0})})});var vn=Ke((Fs,Ns)=>{(function(o){typeof Fs=="object"&&typeof Ns=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("javascript",function(p,v){var C=p.indentUnit,b=v.statementIndent,k=v.jsonld,s=v.json||k,g=v.trackScope!==!1,h=v.typescript,S=v.wordCharacters||/[\w$\xa1-\uffff]/,w=function(){function _(pt){return{type:pt,style:"keyword"}}var O=_("keyword a"),ae=_("keyword b"),he=_("keyword c"),ne=_("keyword d"),ye=_("operator"),Xe={type:"atom",style:"atom"};return{if:_("if"),while:O,with:O,else:ae,do:ae,try:ae,finally:ae,return:ne,break:ne,continue:ne,new:_("new"),delete:he,void:he,throw:he,debugger:_("debugger"),var:_("var"),const:_("var"),let:_("var"),function:_("function"),catch:_("catch"),for:_("for"),switch:_("switch"),case:_("case"),default:_("default"),in:ye,typeof:ye,instanceof:ye,true:Xe,false:Xe,null:Xe,undefined:Xe,NaN:Xe,Infinity:Xe,this:_("this"),class:_("class"),super:_("atom"),yield:he,export:_("export"),import:_("import"),extends:he,await:he}}(),c=/[+\-*&%=<>!?|~^@]/,d=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function T(_){for(var O=!1,ae,he=!1;(ae=_.next())!=null;){if(!O){if(ae=="/"&&!he)return;ae=="["?he=!0:he&&ae=="]"&&(he=!1)}O=!O&&ae=="\\"}}var E,z;function y(_,O,ae){return E=_,z=ae,O}function R(_,O){var ae=_.next();if(ae=='"'||ae=="'")return O.tokenize=M(ae),O.tokenize(_,O);if(ae=="."&&_.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return y("number","number");if(ae=="."&&_.match(".."))return y("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(ae))return y(ae);if(ae=="="&&_.eat(">"))return y("=>","operator");if(ae=="0"&&_.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return y("number","number");if(/\d/.test(ae))return _.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),y("number","number");if(ae=="/")return _.eat("*")?(O.tokenize=H,H(_,O)):_.eat("/")?(_.skipToEnd(),y("comment","comment")):jt(_,O,1)?(T(_),_.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),y("regexp","string-2")):(_.eat("="),y("operator","operator",_.current()));if(ae=="`")return O.tokenize=Z,Z(_,O);if(ae=="#"&&_.peek()=="!")return _.skipToEnd(),y("meta","meta");if(ae=="#"&&_.eatWhile(S))return y("variable","property");if(ae=="<"&&_.match("!--")||ae=="-"&&_.match("->")&&!/\S/.test(_.string.slice(0,_.start)))return _.skipToEnd(),y("comment","comment");if(c.test(ae))return(ae!=">"||!O.lexical||O.lexical.type!=">")&&(_.eat("=")?(ae=="!"||ae=="=")&&_.eat("="):/[<>*+\-|&?]/.test(ae)&&(_.eat(ae),ae==">"&&_.eat(ae))),ae=="?"&&_.eat(".")?y("."):y("operator","operator",_.current());if(S.test(ae)){_.eatWhile(S);var he=_.current();if(O.lastType!="."){if(w.propertyIsEnumerable(he)){var ne=w[he];return y(ne.type,ne.style,he)}if(he=="async"&&_.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return y("async","keyword",he)}return y("variable","variable",he)}}function M(_){return function(O,ae){var he=!1,ne;if(k&&O.peek()=="@"&&O.match(d))return ae.tokenize=R,y("jsonld-keyword","meta");for(;(ne=O.next())!=null&&!(ne==_&&!he);)he=!he&&ne=="\\";return he||(ae.tokenize=R),y("string","string")}}function H(_,O){for(var ae=!1,he;he=_.next();){if(he=="/"&&ae){O.tokenize=R;break}ae=he=="*"}return y("comment","comment")}function Z(_,O){for(var ae=!1,he;(he=_.next())!=null;){if(!ae&&(he=="`"||he=="$"&&_.eat("{"))){O.tokenize=R;break}ae=!ae&&he=="\\"}return y("quasi","string-2",_.current())}var ee="([{}])";function re(_,O){O.fatArrowAt&&(O.fatArrowAt=null);var ae=_.string.indexOf("=>",_.start);if(!(ae<0)){if(h){var he=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(_.string.slice(_.start,ae));he&&(ae=he.index)}for(var ne=0,ye=!1,Xe=ae-1;Xe>=0;--Xe){var pt=_.string.charAt(Xe),Et=ee.indexOf(pt);if(Et>=0&&Et<3){if(!ne){++Xe;break}if(--ne==0){pt=="("&&(ye=!0);break}}else if(Et>=3&&Et<6)++ne;else if(S.test(pt))ye=!0;else if(/["'\/`]/.test(pt))for(;;--Xe){if(Xe==0)return;var Zr=_.string.charAt(Xe-1);if(Zr==pt&&_.string.charAt(Xe-2)!="\\"){Xe--;break}}else if(ye&&!ne){++Xe;break}}ye&&!ne&&(O.fatArrowAt=Xe)}}var N={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function F(_,O,ae,he,ne,ye){this.indented=_,this.column=O,this.type=ae,this.prev=ne,this.info=ye,he!=null&&(this.align=he)}function D(_,O){if(!g)return!1;for(var ae=_.localVars;ae;ae=ae.next)if(ae.name==O)return!0;for(var he=_.context;he;he=he.prev)for(var ae=he.vars;ae;ae=ae.next)if(ae.name==O)return!0}function Q(_,O,ae,he,ne){var ye=_.cc;for(j.state=_,j.stream=ne,j.marked=null,j.cc=ye,j.style=O,_.lexical.hasOwnProperty("align")||(_.lexical.align=!0);;){var Xe=ye.length?ye.pop():s?Se:Oe;if(Xe(ae,he)){for(;ye.length&&ye[ye.length-1].lex;)ye.pop()();return j.marked?j.marked:ae=="variable"&&D(_,he)?"variable-2":O}}}var j={state:null,column:null,marked:null,cc:null};function V(){for(var _=arguments.length-1;_>=0;_--)j.cc.push(arguments[_])}function x(){return V.apply(null,arguments),!0}function K(_,O){for(var ae=O;ae;ae=ae.next)if(ae.name==_)return!0;return!1}function X(_){var O=j.state;if(j.marked="def",!!g){if(O.context){if(O.lexical.info=="var"&&O.context&&O.context.block){var ae=I(_,O.context);if(ae!=null){O.context=ae;return}}else if(!K(_,O.localVars)){O.localVars=new xe(_,O.localVars);return}}v.globalVars&&!K(_,O.globalVars)&&(O.globalVars=new xe(_,O.globalVars))}}function I(_,O){if(O)if(O.block){var ae=I(_,O.prev);return ae?ae==O.prev?O:new le(ae,O.vars,!0):null}else return K(_,O.vars)?O:new le(O.prev,new xe(_,O.vars),!1);else return null}function B(_){return _=="public"||_=="private"||_=="protected"||_=="abstract"||_=="readonly"}function le(_,O,ae){this.prev=_,this.vars=O,this.block=ae}function xe(_,O){this.name=_,this.next=O}var q=new xe("this",new xe("arguments",null));function L(){j.state.context=new le(j.state.context,j.state.localVars,!1),j.state.localVars=q}function de(){j.state.context=new le(j.state.context,j.state.localVars,!0),j.state.localVars=null}L.lex=de.lex=!0;function ze(){j.state.localVars=j.state.context.vars,j.state.context=j.state.context.prev}ze.lex=!0;function pe(_,O){var ae=function(){var he=j.state,ne=he.indented;if(he.lexical.type=="stat")ne=he.lexical.indented;else for(var ye=he.lexical;ye&&ye.type==")"&&ye.align;ye=ye.prev)ne=ye.indented;he.lexical=new F(ne,j.stream.column(),_,null,he.lexical,O)};return ae.lex=!0,ae}function Ee(){var _=j.state;_.lexical.prev&&(_.lexical.type==")"&&(_.indented=_.lexical.indented),_.lexical=_.lexical.prev)}Ee.lex=!0;function ge(_){function O(ae){return ae==_?x():_==";"||ae=="}"||ae==")"||ae=="]"?V():x(O)}return O}function Oe(_,O){return _=="var"?x(pe("vardef",O),Hr,ge(";"),Ee):_=="keyword a"?x(pe("form"),Ze,Oe,Ee):_=="keyword b"?x(pe("form"),Oe,Ee):_=="keyword d"?j.stream.match(/^\s*$/,!1)?x():x(pe("stat"),Je,ge(";"),Ee):_=="debugger"?x(ge(";")):_=="{"?x(pe("}"),de,De,Ee,ze):_==";"?x():_=="if"?(j.state.lexical.info=="else"&&j.state.cc[j.state.cc.length-1]==Ee&&j.state.cc.pop()(),x(pe("form"),Ze,Oe,Ee,Br)):_=="function"?x(Bt):_=="for"?x(pe("form"),de,ei,Oe,ze,Ee):_=="class"||h&&O=="interface"?(j.marked="keyword",x(pe("form",_=="class"?_:O),Wr,Ee)):_=="variable"?h&&O=="declare"?(j.marked="keyword",x(Oe)):h&&(O=="module"||O=="enum"||O=="type")&&j.stream.match(/^\s*\w/,!1)?(j.marked="keyword",O=="enum"?x(Ae):O=="type"?x(ti,ge("operator"),Pe,ge(";")):x(pe("form"),Ct,ge("{"),pe("}"),De,Ee,Ee)):h&&O=="namespace"?(j.marked="keyword",x(pe("form"),Se,Oe,Ee)):h&&O=="abstract"?(j.marked="keyword",x(Oe)):x(pe("stat"),Ue):_=="switch"?x(pe("form"),Ze,ge("{"),pe("}","switch"),de,De,Ee,Ee,ze):_=="case"?x(Se,ge(":")):_=="default"?x(ge(":")):_=="catch"?x(pe("form"),L,qe,Oe,Ee,ze):_=="export"?x(pe("stat"),Ur,Ee):_=="import"?x(pe("stat"),gr,Ee):_=="async"?x(Oe):O=="@"?x(Se,Oe):V(pe("stat"),Se,ge(";"),Ee)}function qe(_){if(_=="(")return x($t,ge(")"))}function Se(_,O){return ke(_,O,!1)}function je(_,O){return ke(_,O,!0)}function Ze(_){return _!="("?V():x(pe(")"),Je,ge(")"),Ee)}function ke(_,O,ae){if(j.state.fatArrowAt==j.stream.start){var he=ae?Be:ce;if(_=="(")return x(L,pe(")"),W($t,")"),Ee,ge("=>"),he,ze);if(_=="variable")return V(L,Ct,ge("=>"),he,ze)}var ne=ae?Ge:He;return N.hasOwnProperty(_)?x(ne):_=="function"?x(Bt,ne):_=="class"||h&&O=="interface"?(j.marked="keyword",x(pe("form"),to,Ee)):_=="keyword c"||_=="async"?x(ae?je:Se):_=="("?x(pe(")"),Je,ge(")"),Ee,ne):_=="operator"||_=="spread"?x(ae?je:Se):_=="["?x(pe("]"),at,Ee,ne):_=="{"?se(Me,"}",null,ne):_=="quasi"?V(U,ne):_=="new"?x(te(ae)):x()}function Je(_){return _.match(/[;\}\)\],]/)?V():V(Se)}function He(_,O){return _==","?x(Je):Ge(_,O,!1)}function Ge(_,O,ae){var he=ae==!1?He:Ge,ne=ae==!1?Se:je;if(_=="=>")return x(L,ae?Be:ce,ze);if(_=="operator")return/\+\+|--/.test(O)||h&&O=="!"?x(he):h&&O=="<"&&j.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?x(pe(">"),W(Pe,">"),Ee,he):O=="?"?x(Se,ge(":"),ne):x(ne);if(_=="quasi")return V(U,he);if(_!=";"){if(_=="(")return se(je,")","call",he);if(_==".")return x(we,he);if(_=="[")return x(pe("]"),Je,ge("]"),Ee,he);if(h&&O=="as")return j.marked="keyword",x(Pe,he);if(_=="regexp")return j.state.lastType=j.marked="operator",j.stream.backUp(j.stream.pos-j.stream.start-1),x(ne)}}function U(_,O){return _!="quasi"?V():O.slice(O.length-2)!="${"?x(U):x(Je,G)}function G(_){if(_=="}")return j.marked="string-2",j.state.tokenize=Z,x(U)}function ce(_){return re(j.stream,j.state),V(_=="{"?Oe:Se)}function Be(_){return re(j.stream,j.state),V(_=="{"?Oe:je)}function te(_){return function(O){return O=="."?x(_?oe:fe):O=="variable"&&h?x(Ft,_?Ge:He):V(_?je:Se)}}function fe(_,O){if(O=="target")return j.marked="keyword",x(He)}function oe(_,O){if(O=="target")return j.marked="keyword",x(Ge)}function Ue(_){return _==":"?x(Ee,Oe):V(He,ge(";"),Ee)}function we(_){if(_=="variable")return j.marked="property",x()}function Me(_,O){if(_=="async")return j.marked="property",x(Me);if(_=="variable"||j.style=="keyword"){if(j.marked="property",O=="get"||O=="set")return x(Le);var ae;return h&&j.state.fatArrowAt==j.stream.start&&(ae=j.stream.match(/^\s*:\s*/,!1))&&(j.state.fatArrowAt=j.stream.pos+ae[0].length),x($)}else{if(_=="number"||_=="string")return j.marked=k?"property":j.style+" property",x($);if(_=="jsonld-keyword")return x($);if(h&&B(O))return j.marked="keyword",x(Me);if(_=="[")return x(Se,nt,ge("]"),$);if(_=="spread")return x(je,$);if(O=="*")return j.marked="keyword",x(Me);if(_==":")return V($)}}function Le(_){return _!="variable"?V($):(j.marked="property",x(Bt))}function $(_){if(_==":")return x(je);if(_=="(")return V(Bt)}function W(_,O,ae){function he(ne,ye){if(ae?ae.indexOf(ne)>-1:ne==","){var Xe=j.state.lexical;return Xe.info=="call"&&(Xe.pos=(Xe.pos||0)+1),x(function(pt,Et){return pt==O||Et==O?V():V(_)},he)}return ne==O||ye==O?x():ae&&ae.indexOf(";")>-1?V(_):x(ge(O))}return function(ne,ye){return ne==O||ye==O?x():V(_,he)}}function se(_,O,ae){for(var he=3;he"),Pe);if(_=="quasi")return V(_t,Ht)}function xt(_){if(_=="=>")return x(Pe)}function Fe(_){return _.match(/[\}\)\]]/)?x():_==","||_==";"?x(Fe):V(nr,Fe)}function nr(_,O){if(_=="variable"||j.style=="keyword")return j.marked="property",x(nr);if(O=="?"||_=="number"||_=="string")return x(nr);if(_==":")return x(Pe);if(_=="[")return x(ge("variable"),dt,ge("]"),nr);if(_=="(")return V(hr,nr);if(!_.match(/[;\}\)\],]/))return x()}function _t(_,O){return _!="quasi"?V():O.slice(O.length-2)!="${"?x(_t):x(Pe,it)}function it(_){if(_=="}")return j.marked="string-2",j.state.tokenize=Z,x(_t)}function ot(_,O){return _=="variable"&&j.stream.match(/^\s*[?:]/,!1)||O=="?"?x(ot):_==":"?x(Pe):_=="spread"?x(ot):V(Pe)}function Ht(_,O){if(O=="<")return x(pe(">"),W(Pe,">"),Ee,Ht);if(O=="|"||_=="."||O=="&")return x(Pe);if(_=="[")return x(Pe,ge("]"),Ht);if(O=="extends"||O=="implements")return j.marked="keyword",x(Pe);if(O=="?")return x(Pe,ge(":"),Pe)}function Ft(_,O){if(O=="<")return x(pe(">"),W(Pe,">"),Ee,Ht)}function Wt(){return V(Pe,kt)}function kt(_,O){if(O=="=")return x(Pe)}function Hr(_,O){return O=="enum"?(j.marked="keyword",x(Ae)):V(Ct,nt,Ut,eo)}function Ct(_,O){if(h&&B(O))return j.marked="keyword",x(Ct);if(_=="variable")return X(O),x();if(_=="spread")return x(Ct);if(_=="[")return se(yn,"]");if(_=="{")return se(dr,"}")}function dr(_,O){return _=="variable"&&!j.stream.match(/^\s*:/,!1)?(X(O),x(Ut)):(_=="variable"&&(j.marked="property"),_=="spread"?x(Ct):_=="}"?V():_=="["?x(Se,ge("]"),ge(":"),dr):x(ge(":"),Ct,Ut))}function yn(){return V(Ct,Ut)}function Ut(_,O){if(O=="=")return x(je)}function eo(_){if(_==",")return x(Hr)}function Br(_,O){if(_=="keyword b"&&O=="else")return x(pe("form","else"),Oe,Ee)}function ei(_,O){if(O=="await")return x(ei);if(_=="(")return x(pe(")"),xn,Ee)}function xn(_){return _=="var"?x(Hr,pr):_=="variable"?x(pr):V(pr)}function pr(_,O){return _==")"?x():_==";"?x(pr):O=="in"||O=="of"?(j.marked="keyword",x(Se,pr)):V(Se,pr)}function Bt(_,O){if(O=="*")return j.marked="keyword",x(Bt);if(_=="variable")return X(O),x(Bt);if(_=="(")return x(L,pe(")"),W($t,")"),Ee,Pt,Oe,ze);if(h&&O=="<")return x(pe(">"),W(Wt,">"),Ee,Bt)}function hr(_,O){if(O=="*")return j.marked="keyword",x(hr);if(_=="variable")return X(O),x(hr);if(_=="(")return x(L,pe(")"),W($t,")"),Ee,Pt,ze);if(h&&O=="<")return x(pe(">"),W(Wt,">"),Ee,hr)}function ti(_,O){if(_=="keyword"||_=="variable")return j.marked="type",x(ti);if(O=="<")return x(pe(">"),W(Wt,">"),Ee)}function $t(_,O){return O=="@"&&x(Se,$t),_=="spread"?x($t):h&&B(O)?(j.marked="keyword",x($t)):h&&_=="this"?x(nt,Ut):V(Ct,nt,Ut)}function to(_,O){return _=="variable"?Wr(_,O):Kt(_,O)}function Wr(_,O){if(_=="variable")return X(O),x(Kt)}function Kt(_,O){if(O=="<")return x(pe(">"),W(Wt,">"),Ee,Kt);if(O=="extends"||O=="implements"||h&&_==",")return O=="implements"&&(j.marked="keyword"),x(h?Pe:Se,Kt);if(_=="{")return x(pe("}"),Gt,Ee)}function Gt(_,O){if(_=="async"||_=="variable"&&(O=="static"||O=="get"||O=="set"||h&&B(O))&&j.stream.match(/^\s+#?[\w$\xa1-\uffff]/,!1))return j.marked="keyword",x(Gt);if(_=="variable"||j.style=="keyword")return j.marked="property",x(Cr,Gt);if(_=="number"||_=="string")return x(Cr,Gt);if(_=="[")return x(Se,nt,ge("]"),Cr,Gt);if(O=="*")return j.marked="keyword",x(Gt);if(h&&_=="(")return V(hr,Gt);if(_==";"||_==",")return x(Gt);if(_=="}")return x();if(O=="@")return x(Se,Gt)}function Cr(_,O){if(O=="!"||O=="?")return x(Cr);if(_==":")return x(Pe,Ut);if(O=="=")return x(je);var ae=j.state.lexical.prev,he=ae&&ae.info=="interface";return V(he?hr:Bt)}function Ur(_,O){return O=="*"?(j.marked="keyword",x(Gr,ge(";"))):O=="default"?(j.marked="keyword",x(Se,ge(";"))):_=="{"?x(W($r,"}"),Gr,ge(";")):V(Oe)}function $r(_,O){if(O=="as")return j.marked="keyword",x(ge("variable"));if(_=="variable")return V(je,$r)}function gr(_){return _=="string"?x():_=="("?V(Se):_=="."?V(He):V(Kr,Vt,Gr)}function Kr(_,O){return _=="{"?se(Kr,"}"):(_=="variable"&&X(O),O=="*"&&(j.marked="keyword"),x(_n))}function Vt(_){if(_==",")return x(Kr,Vt)}function _n(_,O){if(O=="as")return j.marked="keyword",x(Kr)}function Gr(_,O){if(O=="from")return j.marked="keyword",x(Se)}function at(_){return _=="]"?x():V(W(je,"]"))}function Ae(){return V(pe("form"),Ct,ge("{"),pe("}"),W(ir,"}"),Ee,Ee)}function ir(){return V(Ct,Ut)}function kn(_,O){return _.lastType=="operator"||_.lastType==","||c.test(O.charAt(0))||/[,.]/.test(O.charAt(0))}function jt(_,O,ae){return O.tokenize==R&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(O.lastType)||O.lastType=="quasi"&&/\{\s*$/.test(_.string.slice(0,_.pos-(ae||0)))}return{startState:function(_){var O={tokenize:R,lastType:"sof",cc:[],lexical:new F((_||0)-C,0,"block",!1),localVars:v.localVars,context:v.localVars&&new le(null,null,!1),indented:_||0};return v.globalVars&&typeof v.globalVars=="object"&&(O.globalVars=v.globalVars),O},token:function(_,O){if(_.sol()&&(O.lexical.hasOwnProperty("align")||(O.lexical.align=!1),O.indented=_.indentation(),re(_,O)),O.tokenize!=H&&_.eatSpace())return null;var ae=O.tokenize(_,O);return E=="comment"?ae:(O.lastType=E=="operator"&&(z=="++"||z=="--")?"incdec":E,Q(O,ae,E,z,_))},indent:function(_,O){if(_.tokenize==H||_.tokenize==Z)return o.Pass;if(_.tokenize!=R)return 0;var ae=O&&O.charAt(0),he=_.lexical,ne;if(!/^\s*else\b/.test(O))for(var ye=_.cc.length-1;ye>=0;--ye){var Xe=_.cc[ye];if(Xe==Ee)he=he.prev;else if(Xe!=Br&&Xe!=ze)break}for(;(he.type=="stat"||he.type=="form")&&(ae=="}"||(ne=_.cc[_.cc.length-1])&&(ne==He||ne==Ge)&&!/^[,\.=+\-*:?[\(]/.test(O));)he=he.prev;b&&he.type==")"&&he.prev.type=="stat"&&(he=he.prev);var pt=he.type,Et=ae==pt;return pt=="vardef"?he.indented+(_.lastType=="operator"||_.lastType==","?he.info.length+1:0):pt=="form"&&ae=="{"?he.indented:pt=="form"?he.indented+C:pt=="stat"?he.indented+(kn(_,O)?b||C:0):he.info=="switch"&&!Et&&v.doubleIndentSwitch!=!1?he.indented+(/^(?:case|default)\b/.test(O)?C:2*C):he.align?he.column+(Et?0:1):he.indented+(Et?0:C)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:s?null:"/*",blockCommentEnd:s?null:"*/",blockCommentContinue:s?null:" * ",lineComment:s?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:s?"json":"javascript",jsonldMode:k,jsonMode:s,expressionAllowed:jt,skipExpression:function(_){Q(_,"atom","atom","true",new o.StringStream("",2,null))}}}),o.registerHelper("wordChars","javascript",/[\w$]/),o.defineMIME("text/javascript","javascript"),o.defineMIME("text/ecmascript","javascript"),o.defineMIME("application/javascript","javascript"),o.defineMIME("application/x-javascript","javascript"),o.defineMIME("application/ecmascript","javascript"),o.defineMIME("application/json",{name:"javascript",json:!0}),o.defineMIME("application/x-json",{name:"javascript",json:!0}),o.defineMIME("application/manifest+json",{name:"javascript",json:!0}),o.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),o.defineMIME("text/typescript",{name:"javascript",typescript:!0}),o.defineMIME("application/typescript",{name:"javascript",typescript:!0})})});var Qn=Ke((Os,Ps)=>{(function(o){typeof Os=="object"&&typeof Ps=="object"?o(We(),mn(),vn(),gn()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../xml/xml","../javascript/javascript","../css/css"],o):o(CodeMirror)})(function(o){"use strict";var p={script:[["lang",/(javascript|babel)/i,"javascript"],["type",/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i,"javascript"],["type",/./,"text/plain"],[null,null,"javascript"]],style:[["lang",/^css$/i,"css"],["type",/^(text\/)?(x-)?(stylesheet|css)$/i,"css"],["type",/./,"text/plain"],[null,null,"css"]]};function v(S,w,c){var d=S.current(),T=d.search(w);return T>-1?S.backUp(d.length-T):d.match(/<\/?$/)&&(S.backUp(d.length),S.match(w,!1)||S.match(d)),c}var C={};function b(S){var w=C[S];return w||(C[S]=new RegExp("\\s+"+S+`\\s*=\\s*('|")?([^'"]+)('|")?\\s*`))}function k(S,w){var c=S.match(b(w));return c?/^\s*(.*?)\s*$/.exec(c[2])[1]:""}function s(S,w){return new RegExp((w?"^":"")+"","i")}function g(S,w){for(var c in S)for(var d=w[c]||(w[c]=[]),T=S[c],E=T.length-1;E>=0;E--)d.unshift(T[E])}function h(S,w){for(var c=0;c=0;z--)d.script.unshift(["type",E[z].matches,E[z].mode]);function y(R,M){var H=c.token(R,M.htmlState),Z=/\btag\b/.test(H),ee;if(Z&&!/[<>\s\/]/.test(R.current())&&(ee=M.htmlState.tagName&&M.htmlState.tagName.toLowerCase())&&d.hasOwnProperty(ee))M.inTag=ee+" ";else if(M.inTag&&Z&&/>$/.test(R.current())){var re=/^([\S]+) (.*)/.exec(M.inTag);M.inTag=null;var N=R.current()==">"&&h(d[re[1]],re[2]),F=o.getMode(S,N),D=s(re[1],!0),Q=s(re[1],!1);M.token=function(j,V){return j.match(D,!1)?(V.token=y,V.localState=V.localMode=null,null):v(j,Q,V.localMode.token(j,V.localState))},M.localMode=F,M.localState=o.startState(F,c.indent(M.htmlState,"",""))}else M.inTag&&(M.inTag+=R.current(),R.eol()&&(M.inTag+=" "));return H}return{startState:function(){var R=o.startState(c);return{token:y,inTag:null,localMode:null,localState:null,htmlState:R}},copyState:function(R){var M;return R.localState&&(M=o.copyState(R.localMode,R.localState)),{token:R.token,inTag:R.inTag,localMode:R.localMode,localState:M,htmlState:o.copyState(c,R.htmlState)}},token:function(R,M){return M.token(R,M)},indent:function(R,M,H){return!R.localMode||/^\s*<\//.test(M)?c.indent(R.htmlState,M,H):R.localMode.indent?R.localMode.indent(R.localState,M,H):o.Pass},innerMode:function(R){return{state:R.localState||R.htmlState,mode:R.localMode||c}}}},"xml","javascript","css"),o.defineMIME("text/html","htmlmixed")})});var Hs=Ke((js,Rs)=>{(function(o){typeof js=="object"&&typeof Rs=="object"?o(We(),Qn(),Yn()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../htmlmixed/htmlmixed","../../addon/mode/overlay"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("django:inner",function(){var p=["block","endblock","for","endfor","true","false","filter","endfilter","loop","none","self","super","if","elif","endif","as","else","import","with","endwith","without","context","ifequal","endifequal","ifnotequal","endifnotequal","extends","include","load","comment","endcomment","empty","url","static","trans","blocktrans","endblocktrans","now","regroup","lorem","ifchanged","endifchanged","firstof","debug","cycle","csrf_token","autoescape","endautoescape","spaceless","endspaceless","ssi","templatetag","verbatim","endverbatim","widthratio"],v=["add","addslashes","capfirst","center","cut","date","default","default_if_none","dictsort","dictsortreversed","divisibleby","escape","escapejs","filesizeformat","first","floatformat","force_escape","get_digit","iriencode","join","last","length","length_is","linebreaks","linebreaksbr","linenumbers","ljust","lower","make_list","phone2numeric","pluralize","pprint","random","removetags","rjust","safe","safeseq","slice","slugify","stringformat","striptags","time","timesince","timeuntil","title","truncatechars","truncatechars_html","truncatewords","truncatewords_html","unordered_list","upper","urlencode","urlize","urlizetrunc","wordcount","wordwrap","yesno"],C=["==","!=","<",">","<=",">="],b=["in","not","or","and"];p=new RegExp("^\\b("+p.join("|")+")\\b"),v=new RegExp("^\\b("+v.join("|")+")\\b"),C=new RegExp("^\\b("+C.join("|")+")\\b"),b=new RegExp("^\\b("+b.join("|")+")\\b");function k(c,d){if(c.match("{{"))return d.tokenize=g,"tag";if(c.match("{%"))return d.tokenize=h,"tag";if(c.match("{#"))return d.tokenize=S,"comment";for(;c.next()!=null&&!c.match(/\{[{%#]/,!1););return null}function s(c,d){return function(T,E){if(!E.escapeNext&&T.eat(c))E.tokenize=d;else{E.escapeNext&&(E.escapeNext=!1);var z=T.next();z=="\\"&&(E.escapeNext=!0)}return"string"}}function g(c,d){if(d.waitDot){if(d.waitDot=!1,c.peek()!=".")return"null";if(c.match(/\.\W+/))return"error";if(c.eat("."))return d.waitProperty=!0,"null";throw Error("Unexpected error while waiting for property.")}if(d.waitPipe){if(d.waitPipe=!1,c.peek()!="|")return"null";if(c.match(/\.\W+/))return"error";if(c.eat("|"))return d.waitFilter=!0,"null";throw Error("Unexpected error while waiting for filter.")}return d.waitProperty&&(d.waitProperty=!1,c.match(/\b(\w+)\b/))?(d.waitDot=!0,d.waitPipe=!0,"property"):d.waitFilter&&(d.waitFilter=!1,c.match(v))?"variable-2":c.eatSpace()?(d.waitProperty=!1,"null"):c.match(/\b\d+(\.\d+)?\b/)?"number":c.match("'")?(d.tokenize=s("'",d.tokenize),"string"):c.match('"')?(d.tokenize=s('"',d.tokenize),"string"):c.match(/\b(\w+)\b/)&&!d.foundVariable?(d.waitDot=!0,d.waitPipe=!0,"variable"):c.match("}}")?(d.waitProperty=null,d.waitFilter=null,d.waitDot=null,d.waitPipe=null,d.tokenize=k,"tag"):(c.next(),"null")}function h(c,d){if(d.waitDot){if(d.waitDot=!1,c.peek()!=".")return"null";if(c.match(/\.\W+/))return"error";if(c.eat("."))return d.waitProperty=!0,"null";throw Error("Unexpected error while waiting for property.")}if(d.waitPipe){if(d.waitPipe=!1,c.peek()!="|")return"null";if(c.match(/\.\W+/))return"error";if(c.eat("|"))return d.waitFilter=!0,"null";throw Error("Unexpected error while waiting for filter.")}if(d.waitProperty&&(d.waitProperty=!1,c.match(/\b(\w+)\b/)))return d.waitDot=!0,d.waitPipe=!0,"property";if(d.waitFilter&&(d.waitFilter=!1,c.match(v)))return"variable-2";if(c.eatSpace())return d.waitProperty=!1,"null";if(c.match(/\b\d+(\.\d+)?\b/))return"number";if(c.match("'"))return d.tokenize=s("'",d.tokenize),"string";if(c.match('"'))return d.tokenize=s('"',d.tokenize),"string";if(c.match(C))return"operator";if(c.match(b))return"keyword";var T=c.match(p);return T?(T[0]=="comment"&&(d.blockCommentTag=!0),"keyword"):c.match(/\b(\w+)\b/)?(d.waitDot=!0,d.waitPipe=!0,"variable"):c.match("%}")?(d.waitProperty=null,d.waitFilter=null,d.waitDot=null,d.waitPipe=null,d.blockCommentTag?(d.blockCommentTag=!1,d.tokenize=w):d.tokenize=k,"tag"):(c.next(),"null")}function S(c,d){return c.match(/^.*?#\}/)?d.tokenize=k:c.skipToEnd(),"comment"}function w(c,d){return c.match(/\{%\s*endcomment\s*%\}/,!1)?(d.tokenize=h,c.match("{%"),"tag"):(c.next(),"comment")}return{startState:function(){return{tokenize:k}},token:function(c,d){return d.tokenize(c,d)},blockCommentStart:"{% comment %}",blockCommentEnd:"{% endcomment %}"}}),o.defineMode("django",function(p){var v=o.getMode(p,"text/html"),C=o.getMode(p,"django:inner");return o.overlayMode(v,C)}),o.defineMIME("text/x-django","django")})});var Di=Ke((Bs,Ws)=>{(function(o){typeof Bs=="object"&&typeof Ws=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineSimpleMode=function(w,c){o.defineMode(w,function(d){return o.simpleMode(d,c)})},o.simpleMode=function(w,c){p(c,"start");var d={},T=c.meta||{},E=!1;for(var z in c)if(z!=T&&c.hasOwnProperty(z))for(var y=d[z]=[],R=c[z],M=0;M2&&H.token&&typeof H.token!="string"){for(var re=2;re-1)return o.Pass;var z=d.indent.length-1,y=w[d.state];e:for(;;){for(var R=0;R{(function(o){typeof Us=="object"&&typeof $s=="object"?o(We(),Di()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../../addon/mode/simple"],o):o(CodeMirror)})(function(o){"use strict";var p="from",v=new RegExp("^(\\s*)\\b("+p+")\\b","i"),C=["run","cmd","entrypoint","shell"],b=new RegExp("^(\\s*)("+C.join("|")+")(\\s+\\[)","i"),k="expose",s=new RegExp("^(\\s*)("+k+")(\\s+)","i"),g=["arg","from","maintainer","label","env","add","copy","volume","user","workdir","onbuild","stopsignal","healthcheck","shell"],h=[p,k].concat(C).concat(g),S="("+h.join("|")+")",w=new RegExp("^(\\s*)"+S+"(\\s*)(#.*)?$","i"),c=new RegExp("^(\\s*)"+S+"(\\s+)","i");o.defineSimpleMode("dockerfile",{start:[{regex:/^\s*#.*$/,sol:!0,token:"comment"},{regex:v,token:[null,"keyword"],sol:!0,next:"from"},{regex:w,token:[null,"keyword",null,"error"],sol:!0},{regex:b,token:[null,"keyword",null],sol:!0,next:"array"},{regex:s,token:[null,"keyword",null],sol:!0,next:"expose"},{regex:c,token:[null,"keyword",null],sol:!0,next:"arguments"},{regex:/./,token:null}],from:[{regex:/\s*$/,token:null,next:"start"},{regex:/(\s*)(#.*)$/,token:[null,"error"],next:"start"},{regex:/(\s*\S+\s+)(as)/i,token:[null,"keyword"],next:"start"},{token:null,next:"start"}],single:[{regex:/(?:[^\\']|\\.)/,token:"string"},{regex:/'/,token:"string",pop:!0}],double:[{regex:/(?:[^\\"]|\\.)/,token:"string"},{regex:/"/,token:"string",pop:!0}],array:[{regex:/\]/,token:null,next:"start"},{regex:/"(?:[^\\"]|\\.)*"?/,token:"string"}],expose:[{regex:/\d+$/,token:"number",next:"start"},{regex:/[^\d]+$/,token:null,next:"start"},{regex:/\d+/,token:"number"},{regex:/[^\d]+/,token:null},{token:null,next:"start"}],arguments:[{regex:/^\s*#.*$/,sol:!0,token:"comment"},{regex:/"(?:[^\\"]|\\.)*"?$/,token:"string",next:"start"},{regex:/"/,token:"string",push:"double"},{regex:/'(?:[^\\']|\\.)*'?$/,token:"string",next:"start"},{regex:/'/,token:"string",push:"single"},{regex:/[^#"']+[\\`]$/,token:null},{regex:/[^#"']+$/,token:null,next:"start"},{regex:/[^#"']+/,token:null},{token:null,next:"start"}],meta:{lineComment:"#"}}),o.defineMIME("text/x-dockerfile","dockerfile")})});var Xs=Ke((Gs,Zs)=>{(function(o){typeof Gs=="object"&&typeof Zs=="object"?o(We()):typeof define=="function"&&define.amd?define(["../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.modeInfo=[{name:"APL",mime:"text/apl",mode:"apl",ext:["dyalog","apl"]},{name:"PGP",mimes:["application/pgp","application/pgp-encrypted","application/pgp-keys","application/pgp-signature"],mode:"asciiarmor",ext:["asc","pgp","sig"]},{name:"ASN.1",mime:"text/x-ttcn-asn",mode:"asn.1",ext:["asn","asn1"]},{name:"Asterisk",mime:"text/x-asterisk",mode:"asterisk",file:/^extensions\.conf$/i},{name:"Brainfuck",mime:"text/x-brainfuck",mode:"brainfuck",ext:["b","bf"]},{name:"C",mime:"text/x-csrc",mode:"clike",ext:["c","h","ino"]},{name:"C++",mime:"text/x-c++src",mode:"clike",ext:["cpp","c++","cc","cxx","hpp","h++","hh","hxx"],alias:["cpp"]},{name:"Cobol",mime:"text/x-cobol",mode:"cobol",ext:["cob","cpy","cbl"]},{name:"C#",mime:"text/x-csharp",mode:"clike",ext:["cs"],alias:["csharp","cs"]},{name:"Clojure",mime:"text/x-clojure",mode:"clojure",ext:["clj","cljc","cljx"]},{name:"ClojureScript",mime:"text/x-clojurescript",mode:"clojure",ext:["cljs"]},{name:"Closure Stylesheets (GSS)",mime:"text/x-gss",mode:"css",ext:["gss"]},{name:"CMake",mime:"text/x-cmake",mode:"cmake",ext:["cmake","cmake.in"],file:/^CMakeLists\.txt$/},{name:"CoffeeScript",mimes:["application/vnd.coffeescript","text/coffeescript","text/x-coffeescript"],mode:"coffeescript",ext:["coffee"],alias:["coffee","coffee-script"]},{name:"Common Lisp",mime:"text/x-common-lisp",mode:"commonlisp",ext:["cl","lisp","el"],alias:["lisp"]},{name:"Cypher",mime:"application/x-cypher-query",mode:"cypher",ext:["cyp","cypher"]},{name:"Cython",mime:"text/x-cython",mode:"python",ext:["pyx","pxd","pxi"]},{name:"Crystal",mime:"text/x-crystal",mode:"crystal",ext:["cr"]},{name:"CSS",mime:"text/css",mode:"css",ext:["css"]},{name:"CQL",mime:"text/x-cassandra",mode:"sql",ext:["cql"]},{name:"D",mime:"text/x-d",mode:"d",ext:["d"]},{name:"Dart",mimes:["application/dart","text/x-dart"],mode:"dart",ext:["dart"]},{name:"diff",mime:"text/x-diff",mode:"diff",ext:["diff","patch"]},{name:"Django",mime:"text/x-django",mode:"django"},{name:"Dockerfile",mime:"text/x-dockerfile",mode:"dockerfile",file:/^Dockerfile$/},{name:"DTD",mime:"application/xml-dtd",mode:"dtd",ext:["dtd"]},{name:"Dylan",mime:"text/x-dylan",mode:"dylan",ext:["dylan","dyl","intr"]},{name:"EBNF",mime:"text/x-ebnf",mode:"ebnf"},{name:"ECL",mime:"text/x-ecl",mode:"ecl",ext:["ecl"]},{name:"edn",mime:"application/edn",mode:"clojure",ext:["edn"]},{name:"Eiffel",mime:"text/x-eiffel",mode:"eiffel",ext:["e"]},{name:"Elm",mime:"text/x-elm",mode:"elm",ext:["elm"]},{name:"Embedded JavaScript",mime:"application/x-ejs",mode:"htmlembedded",ext:["ejs"]},{name:"Embedded Ruby",mime:"application/x-erb",mode:"htmlembedded",ext:["erb"]},{name:"Erlang",mime:"text/x-erlang",mode:"erlang",ext:["erl"]},{name:"Esper",mime:"text/x-esper",mode:"sql"},{name:"Factor",mime:"text/x-factor",mode:"factor",ext:["factor"]},{name:"FCL",mime:"text/x-fcl",mode:"fcl"},{name:"Forth",mime:"text/x-forth",mode:"forth",ext:["forth","fth","4th"]},{name:"Fortran",mime:"text/x-fortran",mode:"fortran",ext:["f","for","f77","f90","f95"]},{name:"F#",mime:"text/x-fsharp",mode:"mllike",ext:["fs"],alias:["fsharp"]},{name:"Gas",mime:"text/x-gas",mode:"gas",ext:["s"]},{name:"Gherkin",mime:"text/x-feature",mode:"gherkin",ext:["feature"]},{name:"GitHub Flavored Markdown",mime:"text/x-gfm",mode:"gfm",file:/^(readme|contributing|history)\.md$/i},{name:"Go",mime:"text/x-go",mode:"go",ext:["go"]},{name:"Groovy",mime:"text/x-groovy",mode:"groovy",ext:["groovy","gradle"],file:/^Jenkinsfile$/},{name:"HAML",mime:"text/x-haml",mode:"haml",ext:["haml"]},{name:"Haskell",mime:"text/x-haskell",mode:"haskell",ext:["hs"]},{name:"Haskell (Literate)",mime:"text/x-literate-haskell",mode:"haskell-literate",ext:["lhs"]},{name:"Haxe",mime:"text/x-haxe",mode:"haxe",ext:["hx"]},{name:"HXML",mime:"text/x-hxml",mode:"haxe",ext:["hxml"]},{name:"ASP.NET",mime:"application/x-aspx",mode:"htmlembedded",ext:["aspx"],alias:["asp","aspx"]},{name:"HTML",mime:"text/html",mode:"htmlmixed",ext:["html","htm","handlebars","hbs"],alias:["xhtml"]},{name:"HTTP",mime:"message/http",mode:"http"},{name:"IDL",mime:"text/x-idl",mode:"idl",ext:["pro"]},{name:"Pug",mime:"text/x-pug",mode:"pug",ext:["jade","pug"],alias:["jade"]},{name:"Java",mime:"text/x-java",mode:"clike",ext:["java"]},{name:"Java Server Pages",mime:"application/x-jsp",mode:"htmlembedded",ext:["jsp"],alias:["jsp"]},{name:"JavaScript",mimes:["text/javascript","text/ecmascript","application/javascript","application/x-javascript","application/ecmascript"],mode:"javascript",ext:["js"],alias:["ecmascript","js","node"]},{name:"JSON",mimes:["application/json","application/x-json"],mode:"javascript",ext:["json","map"],alias:["json5"]},{name:"JSON-LD",mime:"application/ld+json",mode:"javascript",ext:["jsonld"],alias:["jsonld"]},{name:"JSX",mime:"text/jsx",mode:"jsx",ext:["jsx"]},{name:"Jinja2",mime:"text/jinja2",mode:"jinja2",ext:["j2","jinja","jinja2"]},{name:"Julia",mime:"text/x-julia",mode:"julia",ext:["jl"],alias:["jl"]},{name:"Kotlin",mime:"text/x-kotlin",mode:"clike",ext:["kt"]},{name:"LESS",mime:"text/x-less",mode:"css",ext:["less"]},{name:"LiveScript",mime:"text/x-livescript",mode:"livescript",ext:["ls"],alias:["ls"]},{name:"Lua",mime:"text/x-lua",mode:"lua",ext:["lua"]},{name:"Markdown",mime:"text/x-markdown",mode:"markdown",ext:["markdown","md","mkd"]},{name:"mIRC",mime:"text/mirc",mode:"mirc"},{name:"MariaDB SQL",mime:"text/x-mariadb",mode:"sql"},{name:"Mathematica",mime:"text/x-mathematica",mode:"mathematica",ext:["m","nb","wl","wls"]},{name:"Modelica",mime:"text/x-modelica",mode:"modelica",ext:["mo"]},{name:"MUMPS",mime:"text/x-mumps",mode:"mumps",ext:["mps"]},{name:"MS SQL",mime:"text/x-mssql",mode:"sql"},{name:"mbox",mime:"application/mbox",mode:"mbox",ext:["mbox"]},{name:"MySQL",mime:"text/x-mysql",mode:"sql"},{name:"Nginx",mime:"text/x-nginx-conf",mode:"nginx",file:/nginx.*\.conf$/i},{name:"NSIS",mime:"text/x-nsis",mode:"nsis",ext:["nsh","nsi"]},{name:"NTriples",mimes:["application/n-triples","application/n-quads","text/n-triples"],mode:"ntriples",ext:["nt","nq"]},{name:"Objective-C",mime:"text/x-objectivec",mode:"clike",ext:["m"],alias:["objective-c","objc"]},{name:"Objective-C++",mime:"text/x-objectivec++",mode:"clike",ext:["mm"],alias:["objective-c++","objc++"]},{name:"OCaml",mime:"text/x-ocaml",mode:"mllike",ext:["ml","mli","mll","mly"]},{name:"Octave",mime:"text/x-octave",mode:"octave",ext:["m"]},{name:"Oz",mime:"text/x-oz",mode:"oz",ext:["oz"]},{name:"Pascal",mime:"text/x-pascal",mode:"pascal",ext:["p","pas"]},{name:"PEG.js",mime:"null",mode:"pegjs",ext:["jsonld"]},{name:"Perl",mime:"text/x-perl",mode:"perl",ext:["pl","pm"]},{name:"PHP",mimes:["text/x-php","application/x-httpd-php","application/x-httpd-php-open"],mode:"php",ext:["php","php3","php4","php5","php7","phtml"]},{name:"Pig",mime:"text/x-pig",mode:"pig",ext:["pig"]},{name:"Plain Text",mime:"text/plain",mode:"null",ext:["txt","text","conf","def","list","log"]},{name:"PLSQL",mime:"text/x-plsql",mode:"sql",ext:["pls"]},{name:"PostgreSQL",mime:"text/x-pgsql",mode:"sql"},{name:"PowerShell",mime:"application/x-powershell",mode:"powershell",ext:["ps1","psd1","psm1"]},{name:"Properties files",mime:"text/x-properties",mode:"properties",ext:["properties","ini","in"],alias:["ini","properties"]},{name:"ProtoBuf",mime:"text/x-protobuf",mode:"protobuf",ext:["proto"]},{name:"Python",mime:"text/x-python",mode:"python",ext:["BUILD","bzl","py","pyw"],file:/^(BUCK|BUILD)$/},{name:"Puppet",mime:"text/x-puppet",mode:"puppet",ext:["pp"]},{name:"Q",mime:"text/x-q",mode:"q",ext:["q"]},{name:"R",mime:"text/x-rsrc",mode:"r",ext:["r","R"],alias:["rscript"]},{name:"reStructuredText",mime:"text/x-rst",mode:"rst",ext:["rst"],alias:["rst"]},{name:"RPM Changes",mime:"text/x-rpm-changes",mode:"rpm"},{name:"RPM Spec",mime:"text/x-rpm-spec",mode:"rpm",ext:["spec"]},{name:"Ruby",mime:"text/x-ruby",mode:"ruby",ext:["rb"],alias:["jruby","macruby","rake","rb","rbx"]},{name:"Rust",mime:"text/x-rustsrc",mode:"rust",ext:["rs"]},{name:"SAS",mime:"text/x-sas",mode:"sas",ext:["sas"]},{name:"Sass",mime:"text/x-sass",mode:"sass",ext:["sass"]},{name:"Scala",mime:"text/x-scala",mode:"clike",ext:["scala"]},{name:"Scheme",mime:"text/x-scheme",mode:"scheme",ext:["scm","ss"]},{name:"SCSS",mime:"text/x-scss",mode:"css",ext:["scss"]},{name:"Shell",mimes:["text/x-sh","application/x-sh"],mode:"shell",ext:["sh","ksh","bash"],alias:["bash","sh","zsh"],file:/^PKGBUILD$/},{name:"Sieve",mime:"application/sieve",mode:"sieve",ext:["siv","sieve"]},{name:"Slim",mimes:["text/x-slim","application/x-slim"],mode:"slim",ext:["slim"]},{name:"Smalltalk",mime:"text/x-stsrc",mode:"smalltalk",ext:["st"]},{name:"Smarty",mime:"text/x-smarty",mode:"smarty",ext:["tpl"]},{name:"Solr",mime:"text/x-solr",mode:"solr"},{name:"SML",mime:"text/x-sml",mode:"mllike",ext:["sml","sig","fun","smackspec"]},{name:"Soy",mime:"text/x-soy",mode:"soy",ext:["soy"],alias:["closure template"]},{name:"SPARQL",mime:"application/sparql-query",mode:"sparql",ext:["rq","sparql"],alias:["sparul"]},{name:"Spreadsheet",mime:"text/x-spreadsheet",mode:"spreadsheet",alias:["excel","formula"]},{name:"SQL",mime:"text/x-sql",mode:"sql",ext:["sql"]},{name:"SQLite",mime:"text/x-sqlite",mode:"sql"},{name:"Squirrel",mime:"text/x-squirrel",mode:"clike",ext:["nut"]},{name:"Stylus",mime:"text/x-styl",mode:"stylus",ext:["styl"]},{name:"Swift",mime:"text/x-swift",mode:"swift",ext:["swift"]},{name:"sTeX",mime:"text/x-stex",mode:"stex"},{name:"LaTeX",mime:"text/x-latex",mode:"stex",ext:["text","ltx","tex"],alias:["tex"]},{name:"SystemVerilog",mime:"text/x-systemverilog",mode:"verilog",ext:["v","sv","svh"]},{name:"Tcl",mime:"text/x-tcl",mode:"tcl",ext:["tcl"]},{name:"Textile",mime:"text/x-textile",mode:"textile",ext:["textile"]},{name:"TiddlyWiki",mime:"text/x-tiddlywiki",mode:"tiddlywiki"},{name:"Tiki wiki",mime:"text/tiki",mode:"tiki"},{name:"TOML",mime:"text/x-toml",mode:"toml",ext:["toml"]},{name:"Tornado",mime:"text/x-tornado",mode:"tornado"},{name:"troff",mime:"text/troff",mode:"troff",ext:["1","2","3","4","5","6","7","8","9"]},{name:"TTCN",mime:"text/x-ttcn",mode:"ttcn",ext:["ttcn","ttcn3","ttcnpp"]},{name:"TTCN_CFG",mime:"text/x-ttcn-cfg",mode:"ttcn-cfg",ext:["cfg"]},{name:"Turtle",mime:"text/turtle",mode:"turtle",ext:["ttl"]},{name:"TypeScript",mime:"application/typescript",mode:"javascript",ext:["ts"],alias:["ts"]},{name:"TypeScript-JSX",mime:"text/typescript-jsx",mode:"jsx",ext:["tsx"],alias:["tsx"]},{name:"Twig",mime:"text/x-twig",mode:"twig"},{name:"Web IDL",mime:"text/x-webidl",mode:"webidl",ext:["webidl"]},{name:"VB.NET",mime:"text/x-vb",mode:"vb",ext:["vb"]},{name:"VBScript",mime:"text/vbscript",mode:"vbscript",ext:["vbs"]},{name:"Velocity",mime:"text/velocity",mode:"velocity",ext:["vtl"]},{name:"Verilog",mime:"text/x-verilog",mode:"verilog",ext:["v"]},{name:"VHDL",mime:"text/x-vhdl",mode:"vhdl",ext:["vhd","vhdl"]},{name:"Vue.js Component",mimes:["script/x-vue","text/x-vue"],mode:"vue",ext:["vue"]},{name:"XML",mimes:["application/xml","text/xml"],mode:"xml",ext:["xml","xsl","xsd","svg"],alias:["rss","wsdl","xsd"]},{name:"XQuery",mime:"application/xquery",mode:"xquery",ext:["xy","xquery"]},{name:"Yacas",mime:"text/x-yacas",mode:"yacas",ext:["ys"]},{name:"YAML",mimes:["text/x-yaml","text/yaml"],mode:"yaml",ext:["yaml","yml"],alias:["yml"]},{name:"Z80",mime:"text/x-z80",mode:"z80",ext:["z80"]},{name:"mscgen",mime:"text/x-mscgen",mode:"mscgen",ext:["mscgen","mscin","msc"]},{name:"xu",mime:"text/x-xu",mode:"mscgen",ext:["xu"]},{name:"msgenny",mime:"text/x-msgenny",mode:"mscgen",ext:["msgenny"]},{name:"WebAssembly",mime:"text/webassembly",mode:"wast",ext:["wat","wast"]}];for(var p=0;p-1&&C.substring(s+1,C.length);if(g)return o.findModeByExtension(g)},o.findModeByName=function(C){C=C.toLowerCase();for(var b=0;b{(function(o){typeof Ys=="object"&&typeof Qs=="object"?o(We(),mn(),Xs()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../xml/xml","../meta"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("markdown",function(p,v){var C=o.getMode(p,"text/html"),b=C.name=="null";function k(q){if(o.findModeByName){var L=o.findModeByName(q);L&&(q=L.mime||L.mimes[0])}var de=o.getMode(p,q);return de.name=="null"?null:de}v.highlightFormatting===void 0&&(v.highlightFormatting=!1),v.maxBlockquoteDepth===void 0&&(v.maxBlockquoteDepth=0),v.taskLists===void 0&&(v.taskLists=!1),v.strikethrough===void 0&&(v.strikethrough=!1),v.emoji===void 0&&(v.emoji=!1),v.fencedCodeBlockHighlighting===void 0&&(v.fencedCodeBlockHighlighting=!0),v.fencedCodeBlockDefaultMode===void 0&&(v.fencedCodeBlockDefaultMode="text/plain"),v.xml===void 0&&(v.xml=!0),v.tokenTypeOverrides===void 0&&(v.tokenTypeOverrides={});var s={header:"header",code:"comment",quote:"quote",list1:"variable-2",list2:"variable-3",list3:"keyword",hr:"hr",image:"image",imageAltText:"image-alt-text",imageMarker:"image-marker",formatting:"formatting",linkInline:"link",linkEmail:"link",linkText:"link",linkHref:"string",em:"em",strong:"strong",strikethrough:"strikethrough",emoji:"builtin"};for(var g in s)s.hasOwnProperty(g)&&v.tokenTypeOverrides[g]&&(s[g]=v.tokenTypeOverrides[g]);var h=/^([*\-_])(?:\s*\1){2,}\s*$/,S=/^(?:[*\-+]|^[0-9]+([.)]))\s+/,w=/^\[(x| )\](?=\s)/i,c=v.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,d=/^ {0,3}(?:\={1,}|-{2,})\s*$/,T=/^[^#!\[\]*_\\<>` "'(~:]+/,E=/^(~~~+|```+)[ \t]*([\w\/+#-]*)[^\n`]*$/,z=/^\s*\[[^\]]+?\]:.*$/,y=/[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/,R=" ";function M(q,L,de){return L.f=L.inline=de,de(q,L)}function H(q,L,de){return L.f=L.block=de,de(q,L)}function Z(q){return!q||!/\S/.test(q.string)}function ee(q){if(q.linkTitle=!1,q.linkHref=!1,q.linkText=!1,q.em=!1,q.strong=!1,q.strikethrough=!1,q.quote=0,q.indentedCode=!1,q.f==N){var L=b;if(!L){var de=o.innerMode(C,q.htmlState);L=de.mode.name=="xml"&&de.state.tagStart===null&&!de.state.context&&de.state.tokenize.isInText}L&&(q.f=j,q.block=re,q.htmlState=null)}return q.trailingSpace=0,q.trailingSpaceNewLine=!1,q.prevLine=q.thisLine,q.thisLine={stream:null},null}function re(q,L){var de=q.column()===L.indentation,ze=Z(L.prevLine.stream),pe=L.indentedCode,Ee=L.prevLine.hr,ge=L.list!==!1,Oe=(L.listStack[L.listStack.length-1]||0)+3;L.indentedCode=!1;var qe=L.indentation;if(L.indentationDiff===null&&(L.indentationDiff=L.indentation,ge)){for(L.list=null;qe=4&&(pe||L.prevLine.fencedCodeEnd||L.prevLine.header||ze))return q.skipToEnd(),L.indentedCode=!0,s.code;if(q.eatSpace())return null;if(de&&L.indentation<=Oe&&(Ze=q.match(c))&&Ze[1].length<=6)return L.quote=0,L.header=Ze[1].length,L.thisLine.header=!0,v.highlightFormatting&&(L.formatting="header"),L.f=L.inline,D(L);if(L.indentation<=Oe&&q.eat(">"))return L.quote=de?1:L.quote+1,v.highlightFormatting&&(L.formatting="quote"),q.eatSpace(),D(L);if(!je&&!L.setext&&de&&L.indentation<=Oe&&(Ze=q.match(S))){var ke=Ze[1]?"ol":"ul";return L.indentation=qe+q.current().length,L.list=!0,L.quote=0,L.listStack.push(L.indentation),L.em=!1,L.strong=!1,L.code=!1,L.strikethrough=!1,v.taskLists&&q.match(w,!1)&&(L.taskList=!0),L.f=L.inline,v.highlightFormatting&&(L.formatting=["list","list-"+ke]),D(L)}else{if(de&&L.indentation<=Oe&&(Ze=q.match(E,!0)))return L.quote=0,L.fencedEndRE=new RegExp(Ze[1]+"+ *$"),L.localMode=v.fencedCodeBlockHighlighting&&k(Ze[2]||v.fencedCodeBlockDefaultMode),L.localMode&&(L.localState=o.startState(L.localMode)),L.f=L.block=F,v.highlightFormatting&&(L.formatting="code-block"),L.code=-1,D(L);if(L.setext||(!Se||!ge)&&!L.quote&&L.list===!1&&!L.code&&!je&&!z.test(q.string)&&(Ze=q.lookAhead(1))&&(Ze=Ze.match(d)))return L.setext?(L.header=L.setext,L.setext=0,q.skipToEnd(),v.highlightFormatting&&(L.formatting="header")):(L.header=Ze[0].charAt(0)=="="?1:2,L.setext=L.header),L.thisLine.header=!0,L.f=L.inline,D(L);if(je)return q.skipToEnd(),L.hr=!0,L.thisLine.hr=!0,s.hr;if(q.peek()==="[")return M(q,L,I)}return M(q,L,L.inline)}function N(q,L){var de=C.token(q,L.htmlState);if(!b){var ze=o.innerMode(C,L.htmlState);(ze.mode.name=="xml"&&ze.state.tagStart===null&&!ze.state.context&&ze.state.tokenize.isInText||L.md_inside&&q.current().indexOf(">")>-1)&&(L.f=j,L.block=re,L.htmlState=null)}return de}function F(q,L){var de=L.listStack[L.listStack.length-1]||0,ze=L.indentation=q.quote?L.push(s.formatting+"-"+q.formatting[de]+"-"+q.quote):L.push("error"))}if(q.taskOpen)return L.push("meta"),L.length?L.join(" "):null;if(q.taskClosed)return L.push("property"),L.length?L.join(" "):null;if(q.linkHref?L.push(s.linkHref,"url"):(q.strong&&L.push(s.strong),q.em&&L.push(s.em),q.strikethrough&&L.push(s.strikethrough),q.emoji&&L.push(s.emoji),q.linkText&&L.push(s.linkText),q.code&&L.push(s.code),q.image&&L.push(s.image),q.imageAltText&&L.push(s.imageAltText,"link"),q.imageMarker&&L.push(s.imageMarker)),q.header&&L.push(s.header,s.header+"-"+q.header),q.quote&&(L.push(s.quote),!v.maxBlockquoteDepth||v.maxBlockquoteDepth>=q.quote?L.push(s.quote+"-"+q.quote):L.push(s.quote+"-"+v.maxBlockquoteDepth)),q.list!==!1){var ze=(q.listStack.length-1)%3;ze?ze===1?L.push(s.list2):L.push(s.list3):L.push(s.list1)}return q.trailingSpaceNewLine?L.push("trailing-space-new-line"):q.trailingSpace&&L.push("trailing-space-"+(q.trailingSpace%2?"a":"b")),L.length?L.join(" "):null}function Q(q,L){if(q.match(T,!0))return D(L)}function j(q,L){var de=L.text(q,L);if(typeof de<"u")return de;if(L.list)return L.list=null,D(L);if(L.taskList){var ze=q.match(w,!0)[1]===" ";return ze?L.taskOpen=!0:L.taskClosed=!0,v.highlightFormatting&&(L.formatting="task"),L.taskList=!1,D(L)}if(L.taskOpen=!1,L.taskClosed=!1,L.header&&q.match(/^#+$/,!0))return v.highlightFormatting&&(L.formatting="header"),D(L);var pe=q.next();if(L.linkTitle){L.linkTitle=!1;var Ee=pe;pe==="("&&(Ee=")"),Ee=(Ee+"").replace(/([.?*+^\[\]\\(){}|-])/g,"\\$1");var ge="^\\s*(?:[^"+Ee+"\\\\]+|\\\\\\\\|\\\\.)"+Ee;if(q.match(new RegExp(ge),!0))return s.linkHref}if(pe==="`"){var Oe=L.formatting;v.highlightFormatting&&(L.formatting="code"),q.eatWhile("`");var qe=q.current().length;if(L.code==0&&(!L.quote||qe==1))return L.code=qe,D(L);if(qe==L.code){var Se=D(L);return L.code=0,Se}else return L.formatting=Oe,D(L)}else if(L.code)return D(L);if(pe==="\\"&&(q.next(),v.highlightFormatting)){var je=D(L),Ze=s.formatting+"-escape";return je?je+" "+Ze:Ze}if(pe==="!"&&q.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return L.imageMarker=!0,L.image=!0,v.highlightFormatting&&(L.formatting="image"),D(L);if(pe==="["&&L.imageMarker&&q.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/,!1))return L.imageMarker=!1,L.imageAltText=!0,v.highlightFormatting&&(L.formatting="image"),D(L);if(pe==="]"&&L.imageAltText){v.highlightFormatting&&(L.formatting="image");var je=D(L);return L.imageAltText=!1,L.image=!1,L.inline=L.f=x,je}if(pe==="["&&!L.image)return L.linkText&&q.match(/^.*?\]/)||(L.linkText=!0,v.highlightFormatting&&(L.formatting="link")),D(L);if(pe==="]"&&L.linkText){v.highlightFormatting&&(L.formatting="link");var je=D(L);return L.linkText=!1,L.inline=L.f=q.match(/\(.*?\)| ?\[.*?\]/,!1)?x:j,je}if(pe==="<"&&q.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1)){L.f=L.inline=V,v.highlightFormatting&&(L.formatting="link");var je=D(L);return je?je+=" ":je="",je+s.linkInline}if(pe==="<"&&q.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1)){L.f=L.inline=V,v.highlightFormatting&&(L.formatting="link");var je=D(L);return je?je+=" ":je="",je+s.linkEmail}if(v.xml&&pe==="<"&&q.match(/^(!--|\?|!\[CDATA\[|[a-z][a-z0-9-]*(?:\s+[a-z_:.\-]+(?:\s*=\s*[^>]+)?)*\s*(?:>|$))/i,!1)){var ke=q.string.indexOf(">",q.pos);if(ke!=-1){var Je=q.string.substring(q.start,ke);/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(Je)&&(L.md_inside=!0)}return q.backUp(1),L.htmlState=o.startState(C),H(q,L,N)}if(v.xml&&pe==="<"&&q.match(/^\/\w*?>/))return L.md_inside=!1,"tag";if(pe==="*"||pe==="_"){for(var He=1,Ge=q.pos==1?" ":q.string.charAt(q.pos-2);He<3&&q.eat(pe);)He++;var U=q.peek()||" ",G=!/\s/.test(U)&&(!y.test(U)||/\s/.test(Ge)||y.test(Ge)),ce=!/\s/.test(Ge)&&(!y.test(Ge)||/\s/.test(U)||y.test(U)),Be=null,te=null;if(He%2&&(!L.em&&G&&(pe==="*"||!ce||y.test(Ge))?Be=!0:L.em==pe&&ce&&(pe==="*"||!G||y.test(U))&&(Be=!1)),He>1&&(!L.strong&&G&&(pe==="*"||!ce||y.test(Ge))?te=!0:L.strong==pe&&ce&&(pe==="*"||!G||y.test(U))&&(te=!1)),te!=null||Be!=null){v.highlightFormatting&&(L.formatting=Be==null?"strong":te==null?"em":"strong em"),Be===!0&&(L.em=pe),te===!0&&(L.strong=pe);var Se=D(L);return Be===!1&&(L.em=!1),te===!1&&(L.strong=!1),Se}}else if(pe===" "&&(q.eat("*")||q.eat("_"))){if(q.peek()===" ")return D(L);q.backUp(1)}if(v.strikethrough){if(pe==="~"&&q.eatWhile(pe)){if(L.strikethrough){v.highlightFormatting&&(L.formatting="strikethrough");var Se=D(L);return L.strikethrough=!1,Se}else if(q.match(/^[^\s]/,!1))return L.strikethrough=!0,v.highlightFormatting&&(L.formatting="strikethrough"),D(L)}else if(pe===" "&&q.match("~~",!0)){if(q.peek()===" ")return D(L);q.backUp(2)}}if(v.emoji&&pe===":"&&q.match(/^(?:[a-z_\d+][a-z_\d+-]*|\-[a-z_\d+][a-z_\d+-]*):/)){L.emoji=!0,v.highlightFormatting&&(L.formatting="emoji");var fe=D(L);return L.emoji=!1,fe}return pe===" "&&(q.match(/^ +$/,!1)?L.trailingSpace++:L.trailingSpace&&(L.trailingSpaceNewLine=!0)),D(L)}function V(q,L){var de=q.next();if(de===">"){L.f=L.inline=j,v.highlightFormatting&&(L.formatting="link");var ze=D(L);return ze?ze+=" ":ze="",ze+s.linkInline}return q.match(/^[^>]+/,!0),s.linkInline}function x(q,L){if(q.eatSpace())return null;var de=q.next();return de==="("||de==="["?(L.f=L.inline=X(de==="("?")":"]"),v.highlightFormatting&&(L.formatting="link-string"),L.linkHref=!0,D(L)):"error"}var K={")":/^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/,"]":/^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\]]|\\.)*\])*?(?=\])/};function X(q){return function(L,de){var ze=L.next();if(ze===q){de.f=de.inline=j,v.highlightFormatting&&(de.formatting="link-string");var pe=D(de);return de.linkHref=!1,pe}return L.match(K[q]),de.linkHref=!0,D(de)}}function I(q,L){return q.match(/^([^\]\\]|\\.)*\]:/,!1)?(L.f=B,q.next(),v.highlightFormatting&&(L.formatting="link"),L.linkText=!0,D(L)):M(q,L,j)}function B(q,L){if(q.match("]:",!0)){L.f=L.inline=le,v.highlightFormatting&&(L.formatting="link");var de=D(L);return L.linkText=!1,de}return q.match(/^([^\]\\]|\\.)+/,!0),s.linkText}function le(q,L){return q.eatSpace()?null:(q.match(/^[^\s]+/,!0),q.peek()===void 0?L.linkTitle=!0:q.match(/^(?:\s+(?:"(?:[^"\\]|\\.)+"|'(?:[^'\\]|\\.)+'|\((?:[^)\\]|\\.)+\)))?/,!0),L.f=L.inline=j,s.linkHref+" url")}var xe={startState:function(){return{f:re,prevLine:{stream:null},thisLine:{stream:null},block:re,htmlState:null,indentation:0,inline:j,text:Q,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,setext:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,emoji:!1,fencedEndRE:null}},copyState:function(q){return{f:q.f,prevLine:q.prevLine,thisLine:q.thisLine,block:q.block,htmlState:q.htmlState&&o.copyState(C,q.htmlState),indentation:q.indentation,localMode:q.localMode,localState:q.localMode?o.copyState(q.localMode,q.localState):null,inline:q.inline,text:q.text,formatting:!1,linkText:q.linkText,linkTitle:q.linkTitle,linkHref:q.linkHref,code:q.code,em:q.em,strong:q.strong,strikethrough:q.strikethrough,emoji:q.emoji,header:q.header,setext:q.setext,hr:q.hr,taskList:q.taskList,list:q.list,listStack:q.listStack.slice(0),quote:q.quote,indentedCode:q.indentedCode,trailingSpace:q.trailingSpace,trailingSpaceNewLine:q.trailingSpaceNewLine,md_inside:q.md_inside,fencedEndRE:q.fencedEndRE}},token:function(q,L){if(L.formatting=!1,q!=L.thisLine.stream){if(L.header=0,L.hr=!1,q.match(/^\s*$/,!0))return ee(L),null;if(L.prevLine=L.thisLine,L.thisLine={stream:q},L.taskList=!1,L.trailingSpace=0,L.trailingSpaceNewLine=!1,!L.localState&&(L.f=L.block,L.f!=N)){var de=q.match(/^\s*/,!0)[0].replace(/\t/g,R).length;if(L.indentation=de,L.indentationDiff=null,de>0)return null}}return L.f(q,L)},innerMode:function(q){return q.block==N?{state:q.htmlState,mode:C}:q.localState?{state:q.localState,mode:q.localMode}:{state:q,mode:xe}},indent:function(q,L,de){return q.block==N&&C.indent?C.indent(q.htmlState,L,de):q.localState&&q.localMode.indent?q.localMode.indent(q.localState,L,de):o.Pass},blankLine:ee,getType:D,blockCommentStart:"",closeBrackets:"()[]{}''\"\"``",fold:"markdown"};return xe},"xml"),o.defineMIME("text/markdown","markdown"),o.defineMIME("text/x-markdown","markdown")})});var eu=Ke((Vs,Js)=>{(function(o){typeof Vs=="object"&&typeof Js=="object"?o(We(),Jo(),Yn()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../markdown/markdown","../../addon/mode/overlay"],o):o(CodeMirror)})(function(o){"use strict";var p=/^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\.beep|\.lwz|\.xpc|\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\.beeps?|xmpp|xri|ymsgr|z39\.50[rs]?):(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i;o.defineMode("gfm",function(v,C){var b=0;function k(S){return S.code=!1,null}var s={startState:function(){return{code:!1,codeBlock:!1,ateSpace:!1}},copyState:function(S){return{code:S.code,codeBlock:S.codeBlock,ateSpace:S.ateSpace}},token:function(S,w){if(w.combineTokens=null,w.codeBlock)return S.match(/^```+/)?(w.codeBlock=!1,null):(S.skipToEnd(),null);if(S.sol()&&(w.code=!1),S.sol()&&S.match(/^```+/))return S.skipToEnd(),w.codeBlock=!0,null;if(S.peek()==="`"){S.next();var c=S.pos;S.eatWhile("`");var d=1+S.pos-c;return w.code?d===b&&(w.code=!1):(b=d,w.code=!0),null}else if(w.code)return S.next(),null;if(S.eatSpace())return w.ateSpace=!0,null;if((S.sol()||w.ateSpace)&&(w.ateSpace=!1,C.gitHubSpice!==!1)){if(S.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?=.{0,6}\d)(?:[a-f0-9]{7,40}\b)/))return w.combineTokens=!0,"link";if(S.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/))return w.combineTokens=!0,"link"}return S.match(p)&&S.string.slice(S.start-2,S.start)!="]("&&(S.start==0||/\W/.test(S.string.charAt(S.start-1)))?(w.combineTokens=!0,"link"):(S.next(),null)},blankLine:k},g={taskLists:!0,strikethrough:!0,emoji:!0};for(var h in C)g[h]=C[h];return g.name="markdown",o.overlayMode(o.getMode(v,g),s)},"markdown"),o.defineMIME("text/x-gfm","gfm")})});var nu=Ke((tu,ru)=>{(function(o){typeof tu=="object"&&typeof ru=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("go",function(p){var v=p.indentUnit,C={break:!0,case:!0,chan:!0,const:!0,continue:!0,default:!0,defer:!0,else:!0,fallthrough:!0,for:!0,func:!0,go:!0,goto:!0,if:!0,import:!0,interface:!0,map:!0,package:!0,range:!0,return:!0,select:!0,struct:!0,switch:!0,type:!0,var:!0,bool:!0,byte:!0,complex64:!0,complex128:!0,float32:!0,float64:!0,int8:!0,int16:!0,int32:!0,int64:!0,string:!0,uint8:!0,uint16:!0,uint32:!0,uint64:!0,int:!0,uint:!0,uintptr:!0,error:!0,rune:!0,any:!0,comparable:!0},b={true:!0,false:!0,iota:!0,nil:!0,append:!0,cap:!0,close:!0,complex:!0,copy:!0,delete:!0,imag:!0,len:!0,make:!0,new:!0,panic:!0,print:!0,println:!0,real:!0,recover:!0},k=/[+\-*&^%:=<>!|\/]/,s;function g(T,E){var z=T.next();if(z=='"'||z=="'"||z=="`")return E.tokenize=h(z),E.tokenize(T,E);if(/[\d\.]/.test(z))return z=="."?T.match(/^[0-9_]+([eE][\-+]?[0-9_]+)?/):z=="0"?T.match(/^[xX][0-9a-fA-F_]+/)||T.match(/^[0-7_]+/):T.match(/^[0-9_]*\.?[0-9_]*([eE][\-+]?[0-9_]+)?/),"number";if(/[\[\]{}\(\),;\:\.]/.test(z))return s=z,null;if(z=="/"){if(T.eat("*"))return E.tokenize=S,S(T,E);if(T.eat("/"))return T.skipToEnd(),"comment"}if(k.test(z))return T.eatWhile(k),"operator";T.eatWhile(/[\w\$_\xa1-\uffff]/);var y=T.current();return C.propertyIsEnumerable(y)?((y=="case"||y=="default")&&(s="case"),"keyword"):b.propertyIsEnumerable(y)?"atom":"variable"}function h(T){return function(E,z){for(var y=!1,R,M=!1;(R=E.next())!=null;){if(R==T&&!y){M=!0;break}y=!y&&T!="`"&&R=="\\"}return(M||!(y||T=="`"))&&(z.tokenize=g),"string"}}function S(T,E){for(var z=!1,y;y=T.next();){if(y=="/"&&z){E.tokenize=g;break}z=y=="*"}return"comment"}function w(T,E,z,y,R){this.indented=T,this.column=E,this.type=z,this.align=y,this.prev=R}function c(T,E,z){return T.context=new w(T.indented,E,z,null,T.context)}function d(T){if(T.context.prev){var E=T.context.type;return(E==")"||E=="]"||E=="}")&&(T.indented=T.context.indented),T.context=T.context.prev}}return{startState:function(T){return{tokenize:null,context:new w((T||0)-v,0,"top",!1),indented:0,startOfLine:!0}},token:function(T,E){var z=E.context;if(T.sol()&&(z.align==null&&(z.align=!1),E.indented=T.indentation(),E.startOfLine=!0,z.type=="case"&&(z.type="}")),T.eatSpace())return null;s=null;var y=(E.tokenize||g)(T,E);return y=="comment"||(z.align==null&&(z.align=!0),s=="{"?c(E,T.column(),"}"):s=="["?c(E,T.column(),"]"):s=="("?c(E,T.column(),")"):s=="case"?z.type="case":(s=="}"&&z.type=="}"||s==z.type)&&d(E),E.startOfLine=!1),y},indent:function(T,E){if(T.tokenize!=g&&T.tokenize!=null)return o.Pass;var z=T.context,y=E&&E.charAt(0);if(z.type=="case"&&/^(?:case|default)\b/.test(E))return T.context.type="}",z.indented;var R=y==z.type;return z.align?z.column+(R?0:1):z.indented+(R?0:v)},electricChars:"{}):",closeBrackets:"()[]{}''\"\"``",fold:"brace",blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//"}}),o.defineMIME("text/x-go","go")})});var au=Ke((iu,ou)=>{(function(o){typeof iu=="object"&&typeof ou=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("http",function(){function p(S,w){return S.skipToEnd(),w.cur=g,"error"}function v(S,w){return S.match(/^HTTP\/\d\.\d/)?(w.cur=C,"keyword"):S.match(/^[A-Z]+/)&&/[ \t]/.test(S.peek())?(w.cur=k,"keyword"):p(S,w)}function C(S,w){var c=S.match(/^\d+/);if(!c)return p(S,w);w.cur=b;var d=Number(c[0]);return d>=100&&d<200?"positive informational":d>=200&&d<300?"positive success":d>=300&&d<400?"positive redirect":d>=400&&d<500?"negative client-error":d>=500&&d<600?"negative server-error":"error"}function b(S,w){return S.skipToEnd(),w.cur=g,null}function k(S,w){return S.eatWhile(/\S/),w.cur=s,"string-2"}function s(S,w){return S.match(/^HTTP\/\d\.\d$/)?(w.cur=g,"keyword"):p(S,w)}function g(S){return S.sol()&&!S.eat(/[ \t]/)?S.match(/^.*?:/)?"atom":(S.skipToEnd(),"error"):(S.skipToEnd(),"string")}function h(S){return S.skipToEnd(),null}return{token:function(S,w){var c=w.cur;return c!=g&&c!=h&&S.eatSpace()?null:c(S,w)},blankLine:function(S){S.cur=h},startState:function(){return{cur:v}}}}),o.defineMIME("message/http","http")})});var uu=Ke((lu,su)=>{(function(o){typeof lu=="object"&&typeof su=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("jinja2",function(){var p=["and","as","block","endblock","by","cycle","debug","else","elif","extends","filter","endfilter","firstof","do","for","endfor","if","endif","ifchanged","endifchanged","ifequal","endifequal","ifnotequal","set","raw","endraw","endifnotequal","in","include","load","not","now","or","parsed","regroup","reversed","spaceless","call","endcall","macro","endmacro","endspaceless","ssi","templatetag","openblock","closeblock","openvariable","closevariable","without","context","openbrace","closebrace","opencomment","closecomment","widthratio","url","with","endwith","get_current_language","trans","endtrans","noop","blocktrans","endblocktrans","get_available_languages","get_current_language_bidi","pluralize","autoescape","endautoescape"],v=/^[+\-*&%=<>!?|~^]/,C=/^[:\[\(\{]/,b=["true","false"],k=/^(\d[+\-\*\/])?\d+(\.\d+)?/;p=new RegExp("(("+p.join(")|(")+"))\\b"),b=new RegExp("(("+b.join(")|(")+"))\\b");function s(g,h){var S=g.peek();if(h.incomment)return g.skipTo("#}")?(g.eatWhile(/\#|}/),h.incomment=!1):g.skipToEnd(),"comment";if(h.intag){if(h.operator){if(h.operator=!1,g.match(b))return"atom";if(g.match(k))return"number"}if(h.sign){if(h.sign=!1,g.match(b))return"atom";if(g.match(k))return"number"}if(h.instring)return S==h.instring&&(h.instring=!1),g.next(),"string";if(S=="'"||S=='"')return h.instring=S,g.next(),"string";if(h.inbraces>0&&S==")")g.next(),h.inbraces--;else if(S=="(")g.next(),h.inbraces++;else if(h.inbrackets>0&&S=="]")g.next(),h.inbrackets--;else if(S=="[")g.next(),h.inbrackets++;else{if(!h.lineTag&&(g.match(h.intag+"}")||g.eat("-")&&g.match(h.intag+"}")))return h.intag=!1,"tag";if(g.match(v))return h.operator=!0,"operator";if(g.match(C))h.sign=!0;else{if(g.column()==1&&h.lineTag&&g.match(p))return"keyword";if(g.eat(" ")||g.sol()){if(g.match(p))return"keyword";if(g.match(b))return"atom";if(g.match(k))return"number";g.sol()&&g.next()}else g.next()}}return"variable"}else if(g.eat("{")){if(g.eat("#"))return h.incomment=!0,g.skipTo("#}")?(g.eatWhile(/\#|}/),h.incomment=!1):g.skipToEnd(),"comment";if(S=g.eat(/\{|%/))return h.intag=S,h.inbraces=0,h.inbrackets=0,S=="{"&&(h.intag="}"),g.eat("-"),"tag"}else if(g.eat("#")){if(g.peek()=="#")return g.skipToEnd(),"comment";if(!g.eol())return h.intag=!0,h.lineTag=!0,h.inbraces=0,h.inbrackets=0,"tag"}g.next()}return{startState:function(){return{tokenize:s,inbrackets:0,inbraces:0}},token:function(g,h){var S=h.tokenize(g,h);return g.eol()&&h.lineTag&&!h.instring&&h.inbraces==0&&h.inbrackets==0&&(h.intag=!1,h.lineTag=!1),S},blockCommentStart:"{#",blockCommentEnd:"#}",lineComment:"##"}}),o.defineMIME("text/jinja2","jinja2")})});var du=Ke((cu,fu)=>{(function(o){typeof cu=="object"&&typeof fu=="object"?o(We(),mn(),vn()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../xml/xml","../javascript/javascript"],o):o(CodeMirror)})(function(o){"use strict";function p(C,b,k,s){this.state=C,this.mode=b,this.depth=k,this.prev=s}function v(C){return new p(o.copyState(C.mode,C.state),C.mode,C.depth,C.prev&&v(C.prev))}o.defineMode("jsx",function(C,b){var k=o.getMode(C,{name:"xml",allowMissing:!0,multilineTagIndentPastTag:!1,allowMissingTagName:!0}),s=o.getMode(C,b&&b.base||"javascript");function g(c){var d=c.tagName;c.tagName=null;var T=k.indent(c,"","");return c.tagName=d,T}function h(c,d){return d.context.mode==k?S(c,d,d.context):w(c,d,d.context)}function S(c,d,T){if(T.depth==2)return c.match(/^.*?\*\//)?T.depth=1:c.skipToEnd(),"comment";if(c.peek()=="{"){k.skipAttribute(T.state);var E=g(T.state),z=T.state.context;if(z&&c.match(/^[^>]*>\s*$/,!1)){for(;z.prev&&!z.startOfLine;)z=z.prev;z.startOfLine?E-=C.indentUnit:T.prev.state.lexical&&(E=T.prev.state.lexical.indented)}else T.depth==1&&(E+=C.indentUnit);return d.context=new p(o.startState(s,E),s,0,d.context),null}if(T.depth==1){if(c.peek()=="<")return k.skipAttribute(T.state),d.context=new p(o.startState(k,g(T.state)),k,0,d.context),null;if(c.match("//"))return c.skipToEnd(),"comment";if(c.match("/*"))return T.depth=2,h(c,d)}var y=k.token(c,T.state),R=c.current(),M;return/\btag\b/.test(y)?/>$/.test(R)?T.state.context?T.depth=0:d.context=d.context.prev:/^-1&&c.backUp(R.length-M),y}function w(c,d,T){if(c.peek()=="<"&&!c.match(/^<([^<>]|<[^>]*>)+,\s*>/,!1)&&s.expressionAllowed(c,T.state))return d.context=new p(o.startState(k,s.indent(T.state,"","")),k,0,d.context),s.skipExpression(T.state),null;var E=s.token(c,T.state);if(!E&&T.depth!=null){var z=c.current();z=="{"?T.depth++:z=="}"&&--T.depth==0&&(d.context=d.context.prev)}return E}return{startState:function(){return{context:new p(o.startState(s),s)}},copyState:function(c){return{context:v(c.context)}},token:h,indent:function(c,d,T){return c.context.mode.indent(c.context.state,d,T)},innerMode:function(c){return c.context}}},"xml","javascript"),o.defineMIME("text/jsx","jsx"),o.defineMIME("text/typescript-jsx",{name:"jsx",base:{name:"javascript",typescript:!0}})})});var gu=Ke((pu,hu)=>{(function(o){typeof pu=="object"&&typeof hu=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("nginx",function(p){function v(T){for(var E={},z=T.split(" "),y=0;y*\/]/.test(y)?h(null,"select-op"):/[;{}:\[\]]/.test(y)?h(null,y):(T.eatWhile(/[\w\\\-]/),h("variable","variable"))}function w(T,E){for(var z=!1,y;(y=T.next())!=null;){if(z&&y=="/"){E.tokenize=S;break}z=y=="*"}return h("comment","comment")}function c(T,E){for(var z=0,y;(y=T.next())!=null;){if(z>=2&&y==">"){E.tokenize=S;break}z=y=="-"?z+1:0}return h("comment","comment")}function d(T){return function(E,z){for(var y=!1,R;(R=E.next())!=null&&!(R==T&&!y);)y=!y&&R=="\\";return y||(z.tokenize=S),h("string","string")}}return{startState:function(T){return{tokenize:S,baseIndent:T||0,stack:[]}},token:function(T,E){if(T.eatSpace())return null;g=null;var z=E.tokenize(T,E),y=E.stack[E.stack.length-1];return g=="hash"&&y=="rule"?z="atom":z=="variable"&&(y=="rule"?z="number":(!y||y=="@media{")&&(z="tag")),y=="rule"&&/^[\{\};]$/.test(g)&&E.stack.pop(),g=="{"?y=="@media"?E.stack[E.stack.length-1]="@media{":E.stack.push("{"):g=="}"?E.stack.pop():g=="@media"?E.stack.push("@media"):y=="{"&&g!="comment"&&E.stack.push("rule"),z},indent:function(T,E){var z=T.stack.length;return/^\}/.test(E)&&(z-=T.stack[T.stack.length-1]=="rule"?2:1),T.baseIndent+z*s},electricChars:"}"}}),o.defineMIME("text/x-nginx-conf","nginx")})});var bu=Ke((mu,vu)=>{(function(o){typeof mu=="object"&&typeof vu=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("pascal",function(){function p(S){for(var w={},c=S.split(" "),d=0;d!?|\/]/;function k(S,w){var c=S.next();if(c=="#"&&w.startOfLine)return S.skipToEnd(),"meta";if(c=='"'||c=="'")return w.tokenize=s(c),w.tokenize(S,w);if(c=="("&&S.eat("*"))return w.tokenize=g,g(S,w);if(c=="{")return w.tokenize=h,h(S,w);if(/[\[\]\(\),;\:\.]/.test(c))return null;if(/\d/.test(c))return S.eatWhile(/[\w\.]/),"number";if(c=="/"&&S.eat("/"))return S.skipToEnd(),"comment";if(b.test(c))return S.eatWhile(b),"operator";S.eatWhile(/[\w\$_]/);var d=S.current();return v.propertyIsEnumerable(d)?"keyword":C.propertyIsEnumerable(d)?"atom":"variable"}function s(S){return function(w,c){for(var d=!1,T,E=!1;(T=w.next())!=null;){if(T==S&&!d){E=!0;break}d=!d&&T=="\\"}return(E||!d)&&(c.tokenize=null),"string"}}function g(S,w){for(var c=!1,d;d=S.next();){if(d==")"&&c){w.tokenize=null;break}c=d=="*"}return"comment"}function h(S,w){for(var c;c=S.next();)if(c=="}"){w.tokenize=null;break}return"comment"}return{startState:function(){return{tokenize:null}},token:function(S,w){if(S.eatSpace())return null;var c=(w.tokenize||k)(S,w);return c=="comment"||c=="meta",c},electricChars:"{}"}}),o.defineMIME("text/x-pascal","pascal")})});var _u=Ke((yu,xu)=>{(function(o){typeof yu=="object"&&typeof xu=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("perl",function(){var k={"->":4,"++":4,"--":4,"**":4,"=~":4,"!~":4,"*":4,"/":4,"%":4,x:4,"+":4,"-":4,".":4,"<<":4,">>":4,"<":4,">":4,"<=":4,">=":4,lt:4,gt:4,le:4,ge:4,"==":4,"!=":4,"<=>":4,eq:4,ne:4,cmp:4,"~~":4,"&":4,"|":4,"^":4,"&&":4,"||":4,"//":4,"..":4,"...":4,"?":4,":":4,"=":4,"+=":4,"-=":4,"*=":4,",":4,"=>":4,"::":4,not:4,and:4,or:4,xor:4,BEGIN:[5,1],END:[5,1],PRINT:[5,1],PRINTF:[5,1],GETC:[5,1],READ:[5,1],READLINE:[5,1],DESTROY:[5,1],TIE:[5,1],TIEHANDLE:[5,1],UNTIE:[5,1],STDIN:5,STDIN_TOP:5,STDOUT:5,STDOUT_TOP:5,STDERR:5,STDERR_TOP:5,$ARG:5,$_:5,"@ARG":5,"@_":5,$LIST_SEPARATOR:5,'$"':5,$PROCESS_ID:5,$PID:5,$$:5,$REAL_GROUP_ID:5,$GID:5,"$(":5,$EFFECTIVE_GROUP_ID:5,$EGID:5,"$)":5,$PROGRAM_NAME:5,$0:5,$SUBSCRIPT_SEPARATOR:5,$SUBSEP:5,"$;":5,$REAL_USER_ID:5,$UID:5,"$<":5,$EFFECTIVE_USER_ID:5,$EUID:5,"$>":5,$a:5,$b:5,$COMPILING:5,"$^C":5,$DEBUGGING:5,"$^D":5,"${^ENCODING}":5,$ENV:5,"%ENV":5,$SYSTEM_FD_MAX:5,"$^F":5,"@F":5,"${^GLOBAL_PHASE}":5,"$^H":5,"%^H":5,"@INC":5,"%INC":5,$INPLACE_EDIT:5,"$^I":5,"$^M":5,$OSNAME:5,"$^O":5,"${^OPEN}":5,$PERLDB:5,"$^P":5,$SIG:5,"%SIG":5,$BASETIME:5,"$^T":5,"${^TAINT}":5,"${^UNICODE}":5,"${^UTF8CACHE}":5,"${^UTF8LOCALE}":5,$PERL_VERSION:5,"$^V":5,"${^WIN32_SLOPPY_STAT}":5,$EXECUTABLE_NAME:5,"$^X":5,$1:5,$MATCH:5,"$&":5,"${^MATCH}":5,$PREMATCH:5,"$`":5,"${^PREMATCH}":5,$POSTMATCH:5,"$'":5,"${^POSTMATCH}":5,$LAST_PAREN_MATCH:5,"$+":5,$LAST_SUBMATCH_RESULT:5,"$^N":5,"@LAST_MATCH_END":5,"@+":5,"%LAST_PAREN_MATCH":5,"%+":5,"@LAST_MATCH_START":5,"@-":5,"%LAST_MATCH_START":5,"%-":5,$LAST_REGEXP_CODE_RESULT:5,"$^R":5,"${^RE_DEBUG_FLAGS}":5,"${^RE_TRIE_MAXBUF}":5,$ARGV:5,"@ARGV":5,ARGV:5,ARGVOUT:5,$OUTPUT_FIELD_SEPARATOR:5,$OFS:5,"$,":5,$INPUT_LINE_NUMBER:5,$NR:5,"$.":5,$INPUT_RECORD_SEPARATOR:5,$RS:5,"$/":5,$OUTPUT_RECORD_SEPARATOR:5,$ORS:5,"$\\":5,$OUTPUT_AUTOFLUSH:5,"$|":5,$ACCUMULATOR:5,"$^A":5,$FORMAT_FORMFEED:5,"$^L":5,$FORMAT_PAGE_NUMBER:5,"$%":5,$FORMAT_LINES_LEFT:5,"$-":5,$FORMAT_LINE_BREAK_CHARACTERS:5,"$:":5,$FORMAT_LINES_PER_PAGE:5,"$=":5,$FORMAT_TOP_NAME:5,"$^":5,$FORMAT_NAME:5,"$~":5,"${^CHILD_ERROR_NATIVE}":5,$EXTENDED_OS_ERROR:5,"$^E":5,$EXCEPTIONS_BEING_CAUGHT:5,"$^S":5,$WARNING:5,"$^W":5,"${^WARNING_BITS}":5,$OS_ERROR:5,$ERRNO:5,"$!":5,"%OS_ERROR":5,"%ERRNO":5,"%!":5,$CHILD_ERROR:5,"$?":5,$EVAL_ERROR:5,"$@":5,$OFMT:5,"$#":5,"$*":5,$ARRAY_BASE:5,"$[":5,$OLD_PERL_VERSION:5,"$]":5,if:[1,1],elsif:[1,1],else:[1,1],while:[1,1],unless:[1,1],for:[1,1],foreach:[1,1],abs:1,accept:1,alarm:1,atan2:1,bind:1,binmode:1,bless:1,bootstrap:1,break:1,caller:1,chdir:1,chmod:1,chomp:1,chop:1,chown:1,chr:1,chroot:1,close:1,closedir:1,connect:1,continue:[1,1],cos:1,crypt:1,dbmclose:1,dbmopen:1,default:1,defined:1,delete:1,die:1,do:1,dump:1,each:1,endgrent:1,endhostent:1,endnetent:1,endprotoent:1,endpwent:1,endservent:1,eof:1,eval:1,exec:1,exists:1,exit:1,exp:1,fcntl:1,fileno:1,flock:1,fork:1,format:1,formline:1,getc:1,getgrent:1,getgrgid:1,getgrnam:1,gethostbyaddr:1,gethostbyname:1,gethostent:1,getlogin:1,getnetbyaddr:1,getnetbyname:1,getnetent:1,getpeername:1,getpgrp:1,getppid:1,getpriority:1,getprotobyname:1,getprotobynumber:1,getprotoent:1,getpwent:1,getpwnam:1,getpwuid:1,getservbyname:1,getservbyport:1,getservent:1,getsockname:1,getsockopt:1,given:1,glob:1,gmtime:1,goto:1,grep:1,hex:1,import:1,index:1,int:1,ioctl:1,join:1,keys:1,kill:1,last:1,lc:1,lcfirst:1,length:1,link:1,listen:1,local:2,localtime:1,lock:1,log:1,lstat:1,m:null,map:1,mkdir:1,msgctl:1,msgget:1,msgrcv:1,msgsnd:1,my:2,new:1,next:1,no:1,oct:1,open:1,opendir:1,ord:1,our:2,pack:1,package:1,pipe:1,pop:1,pos:1,print:1,printf:1,prototype:1,push:1,q:null,qq:null,qr:null,quotemeta:null,qw:null,qx:null,rand:1,read:1,readdir:1,readline:1,readlink:1,readpipe:1,recv:1,redo:1,ref:1,rename:1,require:1,reset:1,return:1,reverse:1,rewinddir:1,rindex:1,rmdir:1,s:null,say:1,scalar:1,seek:1,seekdir:1,select:1,semctl:1,semget:1,semop:1,send:1,setgrent:1,sethostent:1,setnetent:1,setpgrp:1,setpriority:1,setprotoent:1,setpwent:1,setservent:1,setsockopt:1,shift:1,shmctl:1,shmget:1,shmread:1,shmwrite:1,shutdown:1,sin:1,sleep:1,socket:1,socketpair:1,sort:1,splice:1,split:1,sprintf:1,sqrt:1,srand:1,stat:1,state:1,study:1,sub:1,substr:1,symlink:1,syscall:1,sysopen:1,sysread:1,sysseek:1,system:1,syswrite:1,tell:1,telldir:1,tie:1,tied:1,time:1,times:1,tr:null,truncate:1,uc:1,ucfirst:1,umask:1,undef:1,unlink:1,unpack:1,unshift:1,untie:1,use:1,utime:1,values:1,vec:1,wait:1,waitpid:1,wantarray:1,warn:1,when:1,write:1,y:null},s="string-2",g=/[goseximacplud]/;function h(c,d,T,E,z){return d.chain=null,d.style=null,d.tail=null,d.tokenize=function(y,R){for(var M=!1,H,Z=0;H=y.next();){if(H===T[Z]&&!M)return T[++Z]!==void 0?(R.chain=T[Z],R.style=E,R.tail=z):z&&y.eatWhile(z),R.tokenize=w,E;M=!M&&H=="\\"}return E},d.tokenize(c,d)}function S(c,d,T){return d.tokenize=function(E,z){return E.string==T&&(z.tokenize=w),E.skipToEnd(),"string"},d.tokenize(c,d)}function w(c,d){if(c.eatSpace())return null;if(d.chain)return h(c,d,d.chain,d.style,d.tail);if(c.match(/^(\-?((\d[\d_]*)?\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F_]+|0b[01_]+|\d[\d_]*(e[+-]?\d+)?)/))return"number";if(c.match(/^<<(?=[_a-zA-Z])/))return c.eatWhile(/\w/),S(c,d,c.current().substr(2));if(c.sol()&&c.match(/^\=item(?!\w)/))return S(c,d,"=cut");var T=c.next();if(T=='"'||T=="'"){if(v(c,3)=="<<"+T){var E=c.pos;c.eatWhile(/\w/);var z=c.current().substr(1);if(z&&c.eat(T))return S(c,d,z);c.pos=E}return h(c,d,[T],"string")}if(T=="q"){var y=p(c,-2);if(!(y&&/\w/.test(y))){if(y=p(c,0),y=="x"){if(y=p(c,1),y=="(")return b(c,2),h(c,d,[")"],s,g);if(y=="[")return b(c,2),h(c,d,["]"],s,g);if(y=="{")return b(c,2),h(c,d,["}"],s,g);if(y=="<")return b(c,2),h(c,d,[">"],s,g);if(/[\^'"!~\/]/.test(y))return b(c,1),h(c,d,[c.eat(y)],s,g)}else if(y=="q"){if(y=p(c,1),y=="(")return b(c,2),h(c,d,[")"],"string");if(y=="[")return b(c,2),h(c,d,["]"],"string");if(y=="{")return b(c,2),h(c,d,["}"],"string");if(y=="<")return b(c,2),h(c,d,[">"],"string");if(/[\^'"!~\/]/.test(y))return b(c,1),h(c,d,[c.eat(y)],"string")}else if(y=="w"){if(y=p(c,1),y=="(")return b(c,2),h(c,d,[")"],"bracket");if(y=="[")return b(c,2),h(c,d,["]"],"bracket");if(y=="{")return b(c,2),h(c,d,["}"],"bracket");if(y=="<")return b(c,2),h(c,d,[">"],"bracket");if(/[\^'"!~\/]/.test(y))return b(c,1),h(c,d,[c.eat(y)],"bracket")}else if(y=="r"){if(y=p(c,1),y=="(")return b(c,2),h(c,d,[")"],s,g);if(y=="[")return b(c,2),h(c,d,["]"],s,g);if(y=="{")return b(c,2),h(c,d,["}"],s,g);if(y=="<")return b(c,2),h(c,d,[">"],s,g);if(/[\^'"!~\/]/.test(y))return b(c,1),h(c,d,[c.eat(y)],s,g)}else if(/[\^'"!~\/(\[{<]/.test(y)){if(y=="(")return b(c,1),h(c,d,[")"],"string");if(y=="[")return b(c,1),h(c,d,["]"],"string");if(y=="{")return b(c,1),h(c,d,["}"],"string");if(y=="<")return b(c,1),h(c,d,[">"],"string");if(/[\^'"!~\/]/.test(y))return h(c,d,[c.eat(y)],"string")}}}if(T=="m"){var y=p(c,-2);if(!(y&&/\w/.test(y))&&(y=c.eat(/[(\[{<\^'"!~\/]/),y)){if(/[\^'"!~\/]/.test(y))return h(c,d,[y],s,g);if(y=="(")return h(c,d,[")"],s,g);if(y=="[")return h(c,d,["]"],s,g);if(y=="{")return h(c,d,["}"],s,g);if(y=="<")return h(c,d,[">"],s,g)}}if(T=="s"){var y=/[\/>\]})\w]/.test(p(c,-2));if(!y&&(y=c.eat(/[(\[{<\^'"!~\/]/),y))return y=="["?h(c,d,["]","]"],s,g):y=="{"?h(c,d,["}","}"],s,g):y=="<"?h(c,d,[">",">"],s,g):y=="("?h(c,d,[")",")"],s,g):h(c,d,[y,y],s,g)}if(T=="y"){var y=/[\/>\]})\w]/.test(p(c,-2));if(!y&&(y=c.eat(/[(\[{<\^'"!~\/]/),y))return y=="["?h(c,d,["]","]"],s,g):y=="{"?h(c,d,["}","}"],s,g):y=="<"?h(c,d,[">",">"],s,g):y=="("?h(c,d,[")",")"],s,g):h(c,d,[y,y],s,g)}if(T=="t"){var y=/[\/>\]})\w]/.test(p(c,-2));if(!y&&(y=c.eat("r"),y&&(y=c.eat(/[(\[{<\^'"!~\/]/),y)))return y=="["?h(c,d,["]","]"],s,g):y=="{"?h(c,d,["}","}"],s,g):y=="<"?h(c,d,[">",">"],s,g):y=="("?h(c,d,[")",")"],s,g):h(c,d,[y,y],s,g)}if(T=="`")return h(c,d,[T],"variable-2");if(T=="/")return/~\s*$/.test(v(c))?h(c,d,[T],s,g):"operator";if(T=="$"){var E=c.pos;if(c.eatWhile(/\d/)||c.eat("{")&&c.eatWhile(/\d/)&&c.eat("}"))return"variable-2";c.pos=E}if(/[$@%]/.test(T)){var E=c.pos;if(c.eat("^")&&c.eat(/[A-Z]/)||!/[@$%&]/.test(p(c,-2))&&c.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){var y=c.current();if(k[y])return"variable-2"}c.pos=E}if(/[$@%&]/.test(T)&&(c.eatWhile(/[\w$]/)||c.eat("{")&&c.eatWhile(/[\w$]/)&&c.eat("}"))){var y=c.current();return k[y]?"variable-2":"variable"}if(T=="#"&&p(c,-2)!="$")return c.skipToEnd(),"comment";if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(T)){var E=c.pos;if(c.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/),k[c.current()])return"operator";c.pos=E}if(T=="_"&&c.pos==1){if(C(c,6)=="_END__")return h(c,d,["\0"],"comment");if(C(c,7)=="_DATA__")return h(c,d,["\0"],"variable-2");if(C(c,7)=="_C__")return h(c,d,["\0"],"string")}if(/\w/.test(T)){var E=c.pos;if(p(c,-2)=="{"&&(p(c,0)=="}"||c.eatWhile(/\w/)&&p(c,0)=="}"))return"string";c.pos=E}if(/[A-Z]/.test(T)){var R=p(c,-2),E=c.pos;if(c.eatWhile(/[A-Z_]/),/[\da-z]/.test(p(c,0)))c.pos=E;else{var y=k[c.current()];return y?(y[1]&&(y=y[0]),R!=":"?y==1?"keyword":y==2?"def":y==3?"atom":y==4?"operator":y==5?"variable-2":"meta":"meta"):"meta"}}if(/[a-zA-Z_]/.test(T)){var R=p(c,-2);c.eatWhile(/\w/);var y=k[c.current()];return y?(y[1]&&(y=y[0]),R!=":"?y==1?"keyword":y==2?"def":y==3?"atom":y==4?"operator":y==5?"variable-2":"meta":"meta"):"meta"}return null}return{startState:function(){return{tokenize:w,chain:null,style:null,tail:null}},token:function(c,d){return(d.tokenize||w)(c,d)},lineComment:"#"}}),o.registerHelper("wordChars","perl",/[\w$]/),o.defineMIME("text/x-perl","perl");function p(k,s){return k.string.charAt(k.pos+(s||0))}function v(k,s){if(s){var g=k.pos-s;return k.string.substr(g>=0?g:0,s)}else return k.string.substr(0,k.pos-1)}function C(k,s){var g=k.string.length,h=g-k.pos+1;return k.string.substr(k.pos,s&&s=(h=k.string.length-1)?k.pos=h:k.pos=g}})});var Su=Ke((ku,wu)=>{(function(o){typeof ku=="object"&&typeof wu=="object"?o(We(),Qn(),Vo()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../htmlmixed/htmlmixed","../clike/clike"],o):o(CodeMirror)})(function(o){"use strict";function p(S){for(var w={},c=S.split(" "),d=0;d\w/,!1)&&(w.tokenize=v([[["->",null]],[[/[\w]+/,"variable"]]],c,d)),"variable-2";for(var T=!1;!S.eol()&&(T||d===!1||!S.match("{$",!1)&&!S.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*|\$\{)/,!1));){if(!T&&S.match(c)){w.tokenize=null,w.tokStack.pop(),w.tokStack.pop();break}T=S.next()=="\\"&&!T}return"string"}var k="abstract and array as break case catch class clone const continue declare default do else elseif enddeclare endfor endforeach endif endswitch endwhile enum extends final for foreach function global goto if implements interface instanceof namespace new or private protected public static switch throw trait try use var while xor die echo empty exit eval include include_once isset list require require_once return print unset __halt_compiler self static parent yield insteadof finally readonly match",s="true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__",g="func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage memory_get_peak_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents file_put_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists array_intersect_key array_combine array_column pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once json_decode json_encode json_last_error json_last_error_msg curl_close curl_copy_handle curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt curl_share_close curl_share_init curl_share_setopt curl_strerror curl_unescape curl_version mysqli_affected_rows mysqli_autocommit mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset mysqli_set_local_infile_default mysqli_set_local_infile_handler mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count";o.registerHelper("hintWords","php",[k,s,g].join(" ").split(" ")),o.registerHelper("wordChars","php",/[\w$]/);var h={name:"clike",helperType:"php",keywords:p(k),blockKeywords:p("catch do else elseif for foreach if switch try while finally"),defKeywords:p("class enum function interface namespace trait"),atoms:p(s),builtin:p(g),multiLineStrings:!0,hooks:{$:function(S){return S.eatWhile(/[\w\$_]/),"variable-2"},"<":function(S,w){var c;if(c=S.match(/^<<\s*/)){var d=S.eat(/['"]/);S.eatWhile(/[\w\.]/);var T=S.current().slice(c[0].length+(d?2:1));if(d&&S.eat(d),T)return(w.tokStack||(w.tokStack=[])).push(T,0),w.tokenize=C(T,d!="'"),"string"}return!1},"#":function(S){for(;!S.eol()&&!S.match("?>",!1);)S.next();return"comment"},"/":function(S){if(S.eat("/")){for(;!S.eol()&&!S.match("?>",!1);)S.next();return"comment"}return!1},'"':function(S,w){return(w.tokStack||(w.tokStack=[])).push('"',0),w.tokenize=C('"'),"string"},"{":function(S,w){return w.tokStack&&w.tokStack.length&&w.tokStack[w.tokStack.length-1]++,!1},"}":function(S,w){return w.tokStack&&w.tokStack.length>0&&!--w.tokStack[w.tokStack.length-1]&&(w.tokenize=C(w.tokStack[w.tokStack.length-2])),!1}}};o.defineMode("php",function(S,w){var c=o.getMode(S,w&&w.htmlMode||"text/html"),d=o.getMode(S,h);function T(E,z){var y=z.curMode==d;if(E.sol()&&z.pending&&z.pending!='"'&&z.pending!="'"&&(z.pending=null),y)return y&&z.php.tokenize==null&&E.match("?>")?(z.curMode=c,z.curState=z.html,z.php.context.prev||(z.php=null),"meta"):d.token(E,z.curState);if(E.match(/^<\?\w*/))return z.curMode=d,z.php||(z.php=o.startState(d,c.indent(z.html,"",""))),z.curState=z.php,"meta";if(z.pending=='"'||z.pending=="'"){for(;!E.eol()&&E.next()!=z.pending;);var R="string"}else if(z.pending&&E.pos/.test(M)?z.pending=Z[0]:z.pending={end:E.pos,style:R},E.backUp(M.length-H)),R}return{startState:function(){var E=o.startState(c),z=w.startOpen?o.startState(d):null;return{html:E,php:z,curMode:w.startOpen?d:c,curState:w.startOpen?z:E,pending:null}},copyState:function(E){var z=E.html,y=o.copyState(c,z),R=E.php,M=R&&o.copyState(d,R),H;return E.curMode==c?H=y:H=M,{html:y,php:M,curMode:E.curMode,curState:H,pending:E.pending}},token:T,indent:function(E,z,y){return E.curMode!=d&&/^\s*<\//.test(z)||E.curMode==d&&/^\?>/.test(z)?c.indent(E.html,z,y):E.curMode.indent(E.curState,z,y)},blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//",innerMode:function(E){return{state:E.curState,mode:E.curMode}}}},"htmlmixed","clike"),o.defineMIME("application/x-httpd-php","php"),o.defineMIME("application/x-httpd-php-open",{name:"php",startOpen:!0}),o.defineMIME("text/x-php",h)})});var Cu=Ke((Tu,Lu)=>{(function(o){typeof Tu=="object"&&typeof Lu=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";function p(s){return new RegExp("^(("+s.join(")|(")+"))\\b","i")}var v=["package","message","import","syntax","required","optional","repeated","reserved","default","extensions","packed","bool","bytes","double","enum","float","string","int32","int64","uint32","uint64","sint32","sint64","fixed32","fixed64","sfixed32","sfixed64","option","service","rpc","returns"],C=p(v);o.registerHelper("hintWords","protobuf",v);var b=new RegExp("^[_A-Za-z\xA1-\uFFFF][_A-Za-z0-9\xA1-\uFFFF]*");function k(s){return s.eatSpace()?null:s.match("//")?(s.skipToEnd(),"comment"):s.match(/^[0-9\.+-]/,!1)&&(s.match(/^[+-]?0x[0-9a-fA-F]+/)||s.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/)||s.match(/^[+-]?\d+([EeDd][+-]?\d+)?/))?"number":s.match(/^"([^"]|(""))*"/)||s.match(/^'([^']|(''))*'/)?"string":s.match(C)?"keyword":s.match(b)?"variable":(s.next(),null)}o.defineMode("protobuf",function(){return{token:k,fold:"brace"}}),o.defineMIME("text/x-protobuf","protobuf")})});var Mu=Ke((Eu,zu)=>{(function(o){typeof Eu=="object"&&typeof zu=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";function p(g){return new RegExp("^(("+g.join(")|(")+"))\\b")}var v=p(["and","or","not","is"]),C=["as","assert","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","lambda","pass","raise","return","try","while","with","yield","in","False","True"],b=["abs","all","any","bin","bool","bytearray","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip","__import__","NotImplemented","Ellipsis","__debug__"];o.registerHelper("hintWords","python",C.concat(b).concat(["exec","print"]));function k(g){return g.scopes[g.scopes.length-1]}o.defineMode("python",function(g,h){for(var S="error",w=h.delimiters||h.singleDelimiters||/^[\(\)\[\]\{\}@,:`=;\.\\]/,c=[h.singleOperators,h.doubleOperators,h.doubleDelimiters,h.tripleDelimiters,h.operators||/^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@]|\.\.\.)/],d=0;dB?D(X):le0&&j(K,X)&&(xe+=" "+S),xe}}return re(K,X)}function re(K,X,I){if(K.eatSpace())return null;if(!I&&K.match(/^#.*/))return"comment";if(K.match(/^[0-9\.]/,!1)){var B=!1;if(K.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i)&&(B=!0),K.match(/^[\d_]+\.\d*/)&&(B=!0),K.match(/^\.\d+/)&&(B=!0),B)return K.eat(/J/i),"number";var le=!1;if(K.match(/^0x[0-9a-f_]+/i)&&(le=!0),K.match(/^0b[01_]+/i)&&(le=!0),K.match(/^0o[0-7_]+/i)&&(le=!0),K.match(/^[1-9][\d_]*(e[\+\-]?[\d_]+)?/)&&(K.eat(/J/i),le=!0),K.match(/^0(?![\dx])/i)&&(le=!0),le)return K.eat(/L/i),"number"}if(K.match(M)){var xe=K.current().toLowerCase().indexOf("f")!==-1;return xe?(X.tokenize=N(K.current(),X.tokenize),X.tokenize(K,X)):(X.tokenize=F(K.current(),X.tokenize),X.tokenize(K,X))}for(var q=0;q=0;)K=K.substr(1);var I=K.length==1,B="string";function le(q){return function(L,de){var ze=re(L,de,!0);return ze=="punctuation"&&(L.current()=="{"?de.tokenize=le(q+1):L.current()=="}"&&(q>1?de.tokenize=le(q-1):de.tokenize=xe)),ze}}function xe(q,L){for(;!q.eol();)if(q.eatWhile(/[^'"\{\}\\]/),q.eat("\\")){if(q.next(),I&&q.eol())return B}else{if(q.match(K))return L.tokenize=X,B;if(q.match("{{"))return B;if(q.match("{",!1))return L.tokenize=le(0),q.current()?B:L.tokenize(q,L);if(q.match("}}"))return B;if(q.match("}"))return S;q.eat(/['"]/)}if(I){if(h.singleLineStringErrors)return S;L.tokenize=X}return B}return xe.isString=!0,xe}function F(K,X){for(;"rubf".indexOf(K.charAt(0).toLowerCase())>=0;)K=K.substr(1);var I=K.length==1,B="string";function le(xe,q){for(;!xe.eol();)if(xe.eatWhile(/[^'"\\]/),xe.eat("\\")){if(xe.next(),I&&xe.eol())return B}else{if(xe.match(K))return q.tokenize=X,B;xe.eat(/['"]/)}if(I){if(h.singleLineStringErrors)return S;q.tokenize=X}return B}return le.isString=!0,le}function D(K){for(;k(K).type!="py";)K.scopes.pop();K.scopes.push({offset:k(K).offset+g.indentUnit,type:"py",align:null})}function Q(K,X,I){var B=K.match(/^[\s\[\{\(]*(?:#|$)/,!1)?null:K.column()+1;X.scopes.push({offset:X.indent+T,type:I,align:B})}function j(K,X){for(var I=K.indentation();X.scopes.length>1&&k(X).offset>I;){if(k(X).type!="py")return!0;X.scopes.pop()}return k(X).offset!=I}function V(K,X){K.sol()&&(X.beginningOfLine=!0,X.dedent=!1);var I=X.tokenize(K,X),B=K.current();if(X.beginningOfLine&&B=="@")return K.match(R,!1)?"meta":y?"operator":S;if(/\S/.test(B)&&(X.beginningOfLine=!1),(I=="variable"||I=="builtin")&&X.lastToken=="meta"&&(I="meta"),(B=="pass"||B=="return")&&(X.dedent=!0),B=="lambda"&&(X.lambda=!0),B==":"&&!X.lambda&&k(X).type=="py"&&K.match(/^\s*(?:#|$)/,!1)&&D(X),B.length==1&&!/string|comment/.test(I)){var le="[({".indexOf(B);if(le!=-1&&Q(K,X,"])}".slice(le,le+1)),le="])}".indexOf(B),le!=-1)if(k(X).type==B)X.indent=X.scopes.pop().offset-T;else return S}return X.dedent&&K.eol()&&k(X).type=="py"&&X.scopes.length>1&&X.scopes.pop(),I}var x={startState:function(K){return{tokenize:ee,scopes:[{offset:K||0,type:"py",align:null}],indent:K||0,lastToken:null,lambda:!1,dedent:0}},token:function(K,X){var I=X.errorToken;I&&(X.errorToken=!1);var B=V(K,X);return B&&B!="comment"&&(X.lastToken=B=="keyword"||B=="punctuation"?K.current():B),B=="punctuation"&&(B=null),K.eol()&&X.lambda&&(X.lambda=!1),I?B+" "+S:B},indent:function(K,X){if(K.tokenize!=ee)return K.tokenize.isString?o.Pass:0;var I=k(K),B=I.type==X.charAt(0)||I.type=="py"&&!K.dedent&&/^(else:|elif |except |finally:)/.test(X);return I.align!=null?I.align-(B?1:0):I.offset-(B?T:0)},electricInput:/^\s*([\}\]\)]|else:|elif |except |finally:)$/,closeBrackets:{triples:`'"`},lineComment:"#",fold:"indent"};return x}),o.defineMIME("text/x-python","python");var s=function(g){return g.split(" ")};o.defineMIME("text/x-cython",{name:"python",extra_keywords:s("by cdef cimport cpdef ctypedef enum except extern gil include nogil property public readonly struct union DEF IF ELIF ELSE")})})});var qu=Ke((Au,Du)=>{(function(o){typeof Au=="object"&&typeof Du=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";function p(h){for(var S={},w=0,c=h.length;w]/)?(M.eat(/[\<\>]/),"atom"):M.eat(/[\+\-\*\/\&\|\:\!]/)?"atom":M.eat(/[a-zA-Z$@_\xa1-\uffff]/)?(M.eatWhile(/[\w$\xa1-\uffff]/),M.eat(/[\?\!\=]/),"atom"):"operator";if(Z=="@"&&M.match(/^@?[a-zA-Z_\xa1-\uffff]/))return M.eat("@"),M.eatWhile(/[\w\xa1-\uffff]/),"variable-2";if(Z=="$")return M.eat(/[a-zA-Z_]/)?M.eatWhile(/[\w]/):M.eat(/\d/)?M.eat(/\d/):M.next(),"variable-3";if(/[a-zA-Z_\xa1-\uffff]/.test(Z))return M.eatWhile(/[\w\xa1-\uffff]/),M.eat(/[\?\!]/),M.eat(":")?"atom":"ident";if(Z=="|"&&(H.varList||H.lastTok=="{"||H.lastTok=="do"))return S="|",null;if(/[\(\)\[\]{}\\;]/.test(Z))return S=Z,null;if(Z=="-"&&M.eat(">"))return"arrow";if(/[=+\-\/*:\.^%<>~|]/.test(Z)){var D=M.eatWhile(/[=+\-\/*:\.^%<>~|]/);return Z=="."&&!D&&(S="."),"operator"}else return null}}}function d(M){for(var H=M.pos,Z=0,ee,re=!1,N=!1;(ee=M.next())!=null;)if(N)N=!1;else{if("[{(".indexOf(ee)>-1)Z++;else if("]})".indexOf(ee)>-1){if(Z--,Z<0)break}else if(ee=="/"&&Z==0){re=!0;break}N=ee=="\\"}return M.backUp(M.pos-H),re}function T(M){return M||(M=1),function(H,Z){if(H.peek()=="}"){if(M==1)return Z.tokenize.pop(),Z.tokenize[Z.tokenize.length-1](H,Z);Z.tokenize[Z.tokenize.length-1]=T(M-1)}else H.peek()=="{"&&(Z.tokenize[Z.tokenize.length-1]=T(M+1));return c(H,Z)}}function E(){var M=!1;return function(H,Z){return M?(Z.tokenize.pop(),Z.tokenize[Z.tokenize.length-1](H,Z)):(M=!0,c(H,Z))}}function z(M,H,Z,ee){return function(re,N){var F=!1,D;for(N.context.type==="read-quoted-paused"&&(N.context=N.context.prev,re.eat("}"));(D=re.next())!=null;){if(D==M&&(ee||!F)){N.tokenize.pop();break}if(Z&&D=="#"&&!F){if(re.eat("{")){M=="}"&&(N.context={prev:N.context,type:"read-quoted-paused"}),N.tokenize.push(T());break}else if(/[@\$]/.test(re.peek())){N.tokenize.push(E());break}}F=!F&&D=="\\"}return H}}function y(M,H){return function(Z,ee){return H&&Z.eatSpace(),Z.match(M)?ee.tokenize.pop():Z.skipToEnd(),"string"}}function R(M,H){return M.sol()&&M.match("=end")&&M.eol()&&H.tokenize.pop(),M.skipToEnd(),"comment"}return{startState:function(){return{tokenize:[c],indented:0,context:{type:"top",indented:-h.indentUnit},continuedLine:!1,lastTok:null,varList:!1}},token:function(M,H){S=null,M.sol()&&(H.indented=M.indentation());var Z=H.tokenize[H.tokenize.length-1](M,H),ee,re=S;if(Z=="ident"){var N=M.current();Z=H.lastTok=="."?"property":C.propertyIsEnumerable(M.current())?"keyword":/^[A-Z]/.test(N)?"tag":H.lastTok=="def"||H.lastTok=="class"||H.varList?"def":"variable",Z=="keyword"&&(re=N,b.propertyIsEnumerable(N)?ee="indent":k.propertyIsEnumerable(N)?ee="dedent":((N=="if"||N=="unless")&&M.column()==M.indentation()||N=="do"&&H.context.indented{(function(o){typeof Iu=="object"&&typeof Fu=="object"?o(We(),Di()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../../addon/mode/simple"],o):o(CodeMirror)})(function(o){"use strict";o.defineSimpleMode("rust",{start:[{regex:/b?"/,token:"string",next:"string"},{regex:/b?r"/,token:"string",next:"string_raw"},{regex:/b?r#+"/,token:"string",next:"string_raw_hash"},{regex:/'(?:[^'\\]|\\(?:[nrt0'"]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\}))'/,token:"string-2"},{regex:/b'(?:[^']|\\(?:['\\nrt0]|x[\da-fA-F]{2}))'/,token:"string-2"},{regex:/(?:(?:[0-9][0-9_]*)(?:(?:[Ee][+-]?[0-9_]+)|\.[0-9_]+(?:[Ee][+-]?[0-9_]+)?)(?:f32|f64)?)|(?:0(?:b[01_]+|(?:o[0-7_]+)|(?:x[0-9a-fA-F_]+))|(?:[0-9][0-9_]*))(?:u8|u16|u32|u64|i8|i16|i32|i64|isize|usize)?/,token:"number"},{regex:/(let(?:\s+mut)?|fn|enum|mod|struct|type|union)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/,token:["keyword",null,"def"]},{regex:/(?:abstract|alignof|as|async|await|box|break|continue|const|crate|do|dyn|else|enum|extern|fn|for|final|if|impl|in|loop|macro|match|mod|move|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,token:"keyword"},{regex:/\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|f16|f32|f64|i8|i16|i32|i64|str|Option)\b/,token:"atom"},{regex:/\b(?:true|false|Some|None|Ok|Err)\b/,token:"builtin"},{regex:/\b(fn)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/,token:["keyword",null,"def"]},{regex:/#!?\[.*\]/,token:"meta"},{regex:/\/\/.*/,token:"comment"},{regex:/\/\*/,token:"comment",next:"comment"},{regex:/[-+\/*=<>!]+/,token:"operator"},{regex:/[a-zA-Z_]\w*!/,token:"variable-3"},{regex:/[a-zA-Z_]\w*/,token:"variable"},{regex:/[\{\[\(]/,indent:!0},{regex:/[\}\]\)]/,dedent:!0}],string:[{regex:/"/,token:"string",next:"start"},{regex:/(?:[^\\"]|\\(?:.|$))*/,token:"string"}],string_raw:[{regex:/"/,token:"string",next:"start"},{regex:/[^"]*/,token:"string"}],string_raw_hash:[{regex:/"#+/,token:"string",next:"start"},{regex:/(?:[^"]|"(?!#))*/,token:"string"}],comment:[{regex:/.*?\*\//,token:"comment",next:"start"},{regex:/.*/,token:"comment"}],meta:{dontIndentStates:["comment"],electricInput:/^\s*\}$/,blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//",fold:"brace"}}),o.defineMIME("text/x-rustsrc","rust"),o.defineMIME("text/rust","rust")})});var ea=Ke((Ou,Pu)=>{(function(o){typeof Ou=="object"&&typeof Pu=="object"?o(We(),gn()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../css/css"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("sass",function(p){var v=o.mimeModes["text/css"],C=v.propertyKeywords||{},b=v.colorKeywords||{},k=v.valueKeywords||{},s=v.fontProperties||{};function g(N){return new RegExp("^"+N.join("|"))}var h=["true","false","null","auto"],S=new RegExp("^"+h.join("|")),w=["\\(","\\)","=",">","<","==",">=","<=","\\+","-","\\!=","/","\\*","%","and","or","not",";","\\{","\\}",":"],c=g(w),d=/^::?[a-zA-Z_][\w\-]*/,T;function E(N){return!N.peek()||N.match(/\s+$/,!1)}function z(N,F){var D=N.peek();return D===")"?(N.next(),F.tokenizer=ee,"operator"):D==="("?(N.next(),N.eatSpace(),"operator"):D==="'"||D==='"'?(F.tokenizer=R(N.next()),"string"):(F.tokenizer=R(")",!1),"string")}function y(N,F){return function(D,Q){return D.sol()&&D.indentation()<=N?(Q.tokenizer=ee,ee(D,Q)):(F&&D.skipTo("*/")?(D.next(),D.next(),Q.tokenizer=ee):D.skipToEnd(),"comment")}}function R(N,F){F==null&&(F=!0);function D(Q,j){var V=Q.next(),x=Q.peek(),K=Q.string.charAt(Q.pos-2),X=V!=="\\"&&x===N||V===N&&K!=="\\";return X?(V!==N&&F&&Q.next(),E(Q)&&(j.cursorHalf=0),j.tokenizer=ee,"string"):V==="#"&&x==="{"?(j.tokenizer=M(D),Q.next(),"operator"):"string"}return D}function M(N){return function(F,D){return F.peek()==="}"?(F.next(),D.tokenizer=N,"operator"):ee(F,D)}}function H(N){if(N.indentCount==0){N.indentCount++;var F=N.scopes[0].offset,D=F+p.indentUnit;N.scopes.unshift({offset:D})}}function Z(N){N.scopes.length!=1&&N.scopes.shift()}function ee(N,F){var D=N.peek();if(N.match("/*"))return F.tokenizer=y(N.indentation(),!0),F.tokenizer(N,F);if(N.match("//"))return F.tokenizer=y(N.indentation(),!1),F.tokenizer(N,F);if(N.match("#{"))return F.tokenizer=M(ee),"operator";if(D==='"'||D==="'")return N.next(),F.tokenizer=R(D),"string";if(F.cursorHalf){if(D==="#"&&(N.next(),N.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/))||N.match(/^-?[0-9\.]+/))return E(N)&&(F.cursorHalf=0),"number";if(N.match(/^(px|em|in)\b/))return E(N)&&(F.cursorHalf=0),"unit";if(N.match(S))return E(N)&&(F.cursorHalf=0),"keyword";if(N.match(/^url/)&&N.peek()==="(")return F.tokenizer=z,E(N)&&(F.cursorHalf=0),"atom";if(D==="$")return N.next(),N.eatWhile(/[\w-]/),E(N)&&(F.cursorHalf=0),"variable-2";if(D==="!")return N.next(),F.cursorHalf=0,N.match(/^[\w]+/)?"keyword":"operator";if(N.match(c))return E(N)&&(F.cursorHalf=0),"operator";if(N.eatWhile(/[\w-]/))return E(N)&&(F.cursorHalf=0),T=N.current().toLowerCase(),k.hasOwnProperty(T)?"atom":b.hasOwnProperty(T)?"keyword":C.hasOwnProperty(T)?(F.prevProp=N.current().toLowerCase(),"property"):"tag";if(E(N))return F.cursorHalf=0,null}else{if(D==="-"&&N.match(/^-\w+-/))return"meta";if(D==="."){if(N.next(),N.match(/^[\w-]+/))return H(F),"qualifier";if(N.peek()==="#")return H(F),"tag"}if(D==="#"){if(N.next(),N.match(/^[\w-]+/))return H(F),"builtin";if(N.peek()==="#")return H(F),"tag"}if(D==="$")return N.next(),N.eatWhile(/[\w-]/),"variable-2";if(N.match(/^-?[0-9\.]+/))return"number";if(N.match(/^(px|em|in)\b/))return"unit";if(N.match(S))return"keyword";if(N.match(/^url/)&&N.peek()==="(")return F.tokenizer=z,"atom";if(D==="="&&N.match(/^=[\w-]+/))return H(F),"meta";if(D==="+"&&N.match(/^\+[\w-]+/))return"variable-3";if(D==="@"&&N.match("@extend")&&(N.match(/\s*[\w]/)||Z(F)),N.match(/^@(else if|if|media|else|for|each|while|mixin|function)/))return H(F),"def";if(D==="@")return N.next(),N.eatWhile(/[\w-]/),"def";if(N.eatWhile(/[\w-]/))if(N.match(/ *: *[\w-\+\$#!\("']/,!1)){T=N.current().toLowerCase();var Q=F.prevProp+"-"+T;return C.hasOwnProperty(Q)?"property":C.hasOwnProperty(T)?(F.prevProp=T,"property"):s.hasOwnProperty(T)?"property":"tag"}else return N.match(/ *:/,!1)?(H(F),F.cursorHalf=1,F.prevProp=N.current().toLowerCase(),"property"):(N.match(/ *,/,!1)||H(F),"tag");if(D===":")return N.match(d)?"variable-3":(N.next(),F.cursorHalf=1,"operator")}return N.match(c)?"operator":(N.next(),null)}function re(N,F){N.sol()&&(F.indentCount=0);var D=F.tokenizer(N,F),Q=N.current();if((Q==="@return"||Q==="}")&&Z(F),D!==null){for(var j=N.pos-Q.length,V=j+p.indentUnit*F.indentCount,x=[],K=0;K{(function(o){typeof ju=="object"&&typeof Ru=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("shell",function(){var p={};function v(d,T){for(var E=0;E1&&d.eat("$");var E=d.next();return/['"({]/.test(E)?(T.tokens[0]=g(E,E=="("?"quote":E=="{"?"def":"string"),c(d,T)):(/\d/.test(E)||d.eatWhile(/\w/),T.tokens.shift(),"def")};function w(d){return function(T,E){return T.sol()&&T.string==d&&E.tokens.shift(),T.skipToEnd(),"string-2"}}function c(d,T){return(T.tokens[0]||s)(d,T)}return{startState:function(){return{tokens:[]}},token:function(d,T){return c(d,T)},closeBrackets:"()[]{}''\"\"``",lineComment:"#",fold:"brace"}}),o.defineMIME("text/x-sh","shell"),o.defineMIME("application/x-sh","shell")})});var Uu=Ke((Bu,Wu)=>{(function(o){typeof Bu=="object"&&typeof Wu=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("sql",function(h,S){var w=S.client||{},c=S.atoms||{false:!0,true:!0,null:!0},d=S.builtin||s(g),T=S.keywords||s(k),E=S.operatorChars||/^[*+\-%<>!=&|~^\/]/,z=S.support||{},y=S.hooks||{},R=S.dateSQL||{date:!0,time:!0,timestamp:!0},M=S.backslashStringEscapes!==!1,H=S.brackets||/^[\{}\(\)\[\]]/,Z=S.punctuation||/^[;.,:]/;function ee(Q,j){var V=Q.next();if(y[V]){var x=y[V](Q,j);if(x!==!1)return x}if(z.hexNumber&&(V=="0"&&Q.match(/^[xX][0-9a-fA-F]+/)||(V=="x"||V=="X")&&Q.match(/^'[0-9a-fA-F]*'/)))return"number";if(z.binaryNumber&&((V=="b"||V=="B")&&Q.match(/^'[01]*'/)||V=="0"&&Q.match(/^b[01]+/)))return"number";if(V.charCodeAt(0)>47&&V.charCodeAt(0)<58)return Q.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/),z.decimallessFloat&&Q.match(/^\.(?!\.)/),"number";if(V=="?"&&(Q.eatSpace()||Q.eol()||Q.eat(";")))return"variable-3";if(V=="'"||V=='"'&&z.doubleQuote)return j.tokenize=re(V),j.tokenize(Q,j);if((z.nCharCast&&(V=="n"||V=="N")||z.charsetCast&&V=="_"&&Q.match(/[a-z][a-z0-9]*/i))&&(Q.peek()=="'"||Q.peek()=='"'))return"keyword";if(z.escapeConstant&&(V=="e"||V=="E")&&(Q.peek()=="'"||Q.peek()=='"'&&z.doubleQuote))return j.tokenize=function(X,I){return(I.tokenize=re(X.next(),!0))(X,I)},"keyword";if(z.commentSlashSlash&&V=="/"&&Q.eat("/"))return Q.skipToEnd(),"comment";if(z.commentHash&&V=="#"||V=="-"&&Q.eat("-")&&(!z.commentSpaceRequired||Q.eat(" ")))return Q.skipToEnd(),"comment";if(V=="/"&&Q.eat("*"))return j.tokenize=N(1),j.tokenize(Q,j);if(V=="."){if(z.zerolessFloat&&Q.match(/^(?:\d+(?:e[+-]?\d+)?)/i))return"number";if(Q.match(/^\.+/))return null;if(Q.match(/^[\w\d_$#]+/))return"variable-2"}else{if(E.test(V))return Q.eatWhile(E),"operator";if(H.test(V))return"bracket";if(Z.test(V))return Q.eatWhile(Z),"punctuation";if(V=="{"&&(Q.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/)||Q.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/)))return"number";Q.eatWhile(/^[_\w\d]/);var K=Q.current().toLowerCase();return R.hasOwnProperty(K)&&(Q.match(/^( )+'[^']*'/)||Q.match(/^( )+"[^"]*"/))?"number":c.hasOwnProperty(K)?"atom":d.hasOwnProperty(K)?"type":T.hasOwnProperty(K)?"keyword":w.hasOwnProperty(K)?"builtin":null}}function re(Q,j){return function(V,x){for(var K=!1,X;(X=V.next())!=null;){if(X==Q&&!K){x.tokenize=ee;break}K=(M||j)&&!K&&X=="\\"}return"string"}}function N(Q){return function(j,V){var x=j.match(/^.*?(\/\*|\*\/)/);return x?x[1]=="/*"?V.tokenize=N(Q+1):Q>1?V.tokenize=N(Q-1):V.tokenize=ee:j.skipToEnd(),"comment"}}function F(Q,j,V){j.context={prev:j.context,indent:Q.indentation(),col:Q.column(),type:V}}function D(Q){Q.indent=Q.context.indent,Q.context=Q.context.prev}return{startState:function(){return{tokenize:ee,context:null}},token:function(Q,j){if(Q.sol()&&j.context&&j.context.align==null&&(j.context.align=!1),j.tokenize==ee&&Q.eatSpace())return null;var V=j.tokenize(Q,j);if(V=="comment")return V;j.context&&j.context.align==null&&(j.context.align=!0);var x=Q.current();return x=="("?F(Q,j,")"):x=="["?F(Q,j,"]"):j.context&&j.context.type==x&&D(j),V},indent:function(Q,j){var V=Q.context;if(!V)return o.Pass;var x=j.charAt(0)==V.type;return V.align?V.col+(x?0:1):V.indent+(x?0:h.indentUnit)},blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:z.commentSlashSlash?"//":z.commentHash?"#":"--",closeBrackets:"()[]{}''\"\"``",config:S}});function p(h){for(var S;(S=h.next())!=null;)if(S=="`"&&!h.eat("`"))return"variable-2";return h.backUp(h.current().length-1),h.eatWhile(/\w/)?"variable-2":null}function v(h){for(var S;(S=h.next())!=null;)if(S=='"'&&!h.eat('"'))return"variable-2";return h.backUp(h.current().length-1),h.eatWhile(/\w/)?"variable-2":null}function C(h){return h.eat("@")&&(h.match("session."),h.match("local."),h.match("global.")),h.eat("'")?(h.match(/^.*'/),"variable-2"):h.eat('"')?(h.match(/^.*"/),"variable-2"):h.eat("`")?(h.match(/^.*`/),"variable-2"):h.match(/^[0-9a-zA-Z$\.\_]+/)?"variable-2":null}function b(h){return h.eat("N")?"atom":h.match(/^[a-zA-Z.#!?]/)?"variable-2":null}var k="alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit ";function s(h){for(var S={},w=h.split(" "),c=0;c!=^\&|\/]/,brackets:/^[\{}\(\)]/,punctuation:/^[;.,:/]/,backslashStringEscapes:!1,dateSQL:s("date datetimeoffset datetime2 smalldatetime datetime time"),hooks:{"@":C}}),o.defineMIME("text/x-mysql",{name:"sql",client:s("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:s(k+"accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:s("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:s("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:s("date time timestamp"),support:s("decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":C,"`":p,"\\":b}}),o.defineMIME("text/x-mariadb",{name:"sql",client:s("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:s(k+"accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group group_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:s("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:s("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:s("date time timestamp"),support:s("decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":C,"`":p,"\\":b}}),o.defineMIME("text/x-sqlite",{name:"sql",client:s("auth backup bail binary changes check clone databases dbinfo dump echo eqp exit explain fullschema headers help import imposter indexes iotrace limit lint load log mode nullvalue once open output print prompt quit read restore save scanstats schema separator session shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width"),keywords:s(k+"abort action add after all analyze attach autoincrement before begin cascade case cast check collate column commit conflict constraint cross current_date current_time current_timestamp database default deferrable deferred detach each else end escape except exclusive exists explain fail for foreign full glob if ignore immediate index indexed initially inner instead intersect isnull key left limit match natural no notnull null of offset outer plan pragma primary query raise recursive references regexp reindex release rename replace restrict right rollback row savepoint temp temporary then to transaction trigger unique using vacuum view virtual when with without"),builtin:s("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text clob bigint int int2 int8 integer float double char varchar date datetime year unsigned signed numeric real"),atoms:s("null current_date current_time current_timestamp"),operatorChars:/^[*+\-%<>!=&|/~]/,dateSQL:s("date time timestamp datetime"),support:s("decimallessFloat zerolessFloat"),identifierQuote:'"',hooks:{"@":C,":":C,"?":C,$:C,'"':v,"`":p}}),o.defineMIME("text/x-cassandra",{name:"sql",client:{},keywords:s("add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime"),builtin:s("ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint"),atoms:s("false true infinity NaN"),operatorChars:/^[<>=]/,dateSQL:{},support:s("commentSlashSlash decimallessFloat"),hooks:{}}),o.defineMIME("text/x-plsql",{name:"sql",client:s("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"),keywords:s("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"),builtin:s("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"),operatorChars:/^[*\/+\-%<>!=~]/,dateSQL:s("date time timestamp"),support:s("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber")}),o.defineMIME("text/x-hive",{name:"sql",keywords:s("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with admin authorization char compact compactions conf cube current current_date current_timestamp day decimal defined dependency directories elem_type exchange file following for grouping hour ignore inner interval jar less logical macro minute month more none noscan over owner partialscan preceding pretty principals protection reload rewrite role roles rollup rows second server sets skewed transactions truncate unbounded unset uri user values window year"),builtin:s("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype key_type utctimestamp value_type varchar"),atoms:s("false true null unknown"),operatorChars:/^[*+\-%<>!=]/,dateSQL:s("date timestamp"),support:s("doubleQuote binaryNumber hexNumber")}),o.defineMIME("text/x-pgsql",{name:"sql",client:s("source"),keywords:s(k+"a abort abs absent absolute access according action ada add admin after aggregate alias all allocate also alter always analyse analyze and any are array array_agg array_max_cardinality as asc asensitive assert assertion assignment asymmetric at atomic attach attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli between bigint binary bit bit_length blob blocked bom boolean both breadth by c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain char char_length character character_length character_set_catalog character_set_name character_set_schema characteristics characters check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column column_name columns command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constant constraint constraint_catalog constraint_name constraint_schema constraints constructor contains content continue control conversion convert copy corr corresponding cost count covar_pop covar_samp create cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datatype date datetime_interval_code datetime_interval_precision day db deallocate debug dec decimal declare default defaults deferrable deferred defined definer degree delete delimiter delimiters dense_rank depends depth deref derived desc describe descriptor detach detail deterministic diagnostics dictionary disable discard disconnect dispatch distinct dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain double drop dump dynamic dynamic_function dynamic_function_code each element else elseif elsif empty enable encoding encrypted end end_frame end_partition endexec enforced enum equals errcode error escape event every except exception exclude excluding exclusive exec execute exists exit exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreach foreign fortran forward found frame_row free freeze from fs full function functions fusion g general generated get global go goto grant granted greatest group grouping groups handler having header hex hierarchy hint hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import in include including increment indent index indexes indicator info inherit inherits initially inline inner inout input insensitive insert instance instantiable instead int integer integrity intersect intersection interval into invoker is isnull isolation join k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like like_regex limit link listen ln load local localtime localtimestamp location locator lock locked log logged loop lower m map mapping match matched materialized max max_cardinality maxvalue member merge message message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized not nothing notice notify notnull nowait nth_value ntile null nullable nullif nulls number numeric object occurrences_regex octet_length octets of off offset oids old on only open operator option options or order ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parallel parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password path percent percent_rank percentile_cont percentile_disc perform period permission pg_context pg_datatype_name pg_exception_context pg_exception_detail pg_exception_hint placing plans pli policy portion position position_regex power precedes preceding precision prepare prepared preserve primary print_strict_params prior privileges procedural procedure procedures program public publication query quote raise range rank read reads real reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result result_oid return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns reverse revoke right role rollback rollup routine routine_catalog routine_name routine_schema routines row row_count row_number rows rowtype rule savepoint scale schema schema_name schemas scope scope_catalog scope_name scope_schema scroll search second section security select selective self sensitive sequence sequences serializable server server_name session session_user set setof sets share show similar simple size skip slice smallint snapshot some source space specific specific_name specifictype sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable stacked standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset subscription substring substring_regex succeeds sum symmetric sysid system system_time system_user t table table_name tables tablesample tablespace temp template temporary text then ties time timestamp timezone_hour timezone_minute to token top_level_count trailing transaction transaction_active transactions_committed transactions_rolled_back transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted union unique unknown unlink unlisten unlogged unnamed unnest until untyped update upper uri usage use_column use_variable user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of values var_pop var_samp varbinary varchar variable_conflict variadic varying verbose version versioning view views volatile warning when whenever where while whitespace width_bucket window with within without work wrapper write xml xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes zone"),builtin:s("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time zone timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:s("false true null unknown"),operatorChars:/^[*\/+\-%<>!=&|^\/#@?~]/,backslashStringEscapes:!1,dateSQL:s("date time timestamp"),support:s("decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast escapeConstant")}),o.defineMIME("text/x-gql",{name:"sql",keywords:s("ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where"),atoms:s("false true"),builtin:s("blob datetime first key __key__ string integer double boolean null"),operatorChars:/^[*+\-%<>!=]/}),o.defineMIME("text/x-gpsql",{name:"sql",client:s("source"),keywords:s("abort absolute access action active add admin after aggregate all also alter always analyse analyze and any array as asc assertion assignment asymmetric at authorization backward before begin between bigint binary bit boolean both by cache called cascade cascaded case cast chain char character characteristics check checkpoint class close cluster coalesce codegen collate column comment commit committed concurrency concurrently configuration connection constraint constraints contains content continue conversion copy cost cpu_rate_limit create createdb createexttable createrole createuser cross csv cube current current_catalog current_date current_role current_schema current_time current_timestamp current_user cursor cycle data database day deallocate dec decimal declare decode default defaults deferrable deferred definer delete delimiter delimiters deny desc dictionary disable discard distinct distributed do document domain double drop dxl each else enable encoding encrypted end enum errors escape every except exchange exclude excluding exclusive execute exists explain extension external extract false family fetch fields filespace fill filter first float following for force foreign format forward freeze from full function global grant granted greatest group group_id grouping handler hash having header hold host hour identity if ignore ilike immediate immutable implicit in including inclusive increment index indexes inherit inherits initially inline inner inout input insensitive insert instead int integer intersect interval into invoker is isnull isolation join key language large last leading least left level like limit list listen load local localtime localtimestamp location lock log login mapping master match maxvalue median merge minute minvalue missing mode modifies modify month move name names national natural nchar new newline next no nocreatedb nocreateexttable nocreaterole nocreateuser noinherit nologin none noovercommit nosuperuser not nothing notify notnull nowait null nullif nulls numeric object of off offset oids old on only operator option options or order ordered others out outer over overcommit overlaps overlay owned owner parser partial partition partitions passing password percent percentile_cont percentile_disc placing plans position preceding precision prepare prepared preserve primary prior privileges procedural procedure protocol queue quote randomly range read readable reads real reassign recheck recursive ref references reindex reject relative release rename repeatable replace replica reset resource restart restrict returning returns revoke right role rollback rollup rootpartition row rows rule savepoint scatter schema scroll search second security segment select sequence serializable session session_user set setof sets share show similar simple smallint some split sql stable standalone start statement statistics stdin stdout storage strict strip subpartition subpartitions substring superuser symmetric sysid system table tablespace temp template temporary text then threshold ties time timestamp to trailing transaction treat trigger trim true truncate trusted type unbounded uncommitted unencrypted union unique unknown unlisten until update user using vacuum valid validation validator value values varchar variadic varying verbose version view volatile web when where whitespace window with within without work writable write xml xmlattributes xmlconcat xmlelement xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes zone"),builtin:s("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:s("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:s("date time timestamp"),support:s("decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast")}),o.defineMIME("text/x-sparksql",{name:"sql",keywords:s("add after all alter analyze and anti archive array as asc at between bucket buckets by cache cascade case cast change clear cluster clustered codegen collection column columns comment commit compact compactions compute concatenate cost create cross cube current current_date current_timestamp database databases data dbproperties defined delete delimited deny desc describe dfs directories distinct distribute drop else end escaped except exchange exists explain export extended external false fields fileformat first following for format formatted from full function functions global grant group grouping having if ignore import in index indexes inner inpath inputformat insert intersect interval into is items join keys last lateral lazy left like limit lines list load local location lock locks logical macro map minus msck natural no not null nulls of on optimize option options or order out outer outputformat over overwrite partition partitioned partitions percent preceding principals purge range recordreader recordwriter recover reduce refresh regexp rename repair replace reset restrict revoke right rlike role roles rollback rollup row rows schema schemas select semi separated serde serdeproperties set sets show skewed sort sorted start statistics stored stratify struct table tables tablesample tblproperties temp temporary terminated then to touch transaction transactions transform true truncate unarchive unbounded uncache union unlock unset use using values view when where window with"),builtin:s("abs acos acosh add_months aggregate and any approx_count_distinct approx_percentile array array_contains array_distinct array_except array_intersect array_join array_max array_min array_position array_remove array_repeat array_sort array_union arrays_overlap arrays_zip ascii asin asinh assert_true atan atan2 atanh avg base64 between bigint bin binary bit_and bit_count bit_get bit_length bit_or bit_xor bool_and bool_or boolean bround btrim cardinality case cast cbrt ceil ceiling char char_length character_length chr coalesce collect_list collect_set concat concat_ws conv corr cos cosh cot count count_if count_min_sketch covar_pop covar_samp crc32 cume_dist current_catalog current_database current_date current_timestamp current_timezone current_user date date_add date_format date_from_unix_date date_part date_sub date_trunc datediff day dayofmonth dayofweek dayofyear decimal decode degrees delimited dense_rank div double e element_at elt encode every exists exp explode explode_outer expm1 extract factorial filter find_in_set first first_value flatten float floor forall format_number format_string from_csv from_json from_unixtime from_utc_timestamp get_json_object getbit greatest grouping grouping_id hash hex hour hypot if ifnull in initcap inline inline_outer input_file_block_length input_file_block_start input_file_name inputformat instr int isnan isnotnull isnull java_method json_array_length json_object_keys json_tuple kurtosis lag last last_day last_value lcase lead least left length levenshtein like ln locate log log10 log1p log2 lower lpad ltrim make_date make_dt_interval make_interval make_timestamp make_ym_interval map map_concat map_entries map_filter map_from_arrays map_from_entries map_keys map_values map_zip_with max max_by md5 mean min min_by minute mod monotonically_increasing_id month months_between named_struct nanvl negative next_day not now nth_value ntile nullif nvl nvl2 octet_length or outputformat overlay parse_url percent_rank percentile percentile_approx pi pmod posexplode posexplode_outer position positive pow power printf quarter radians raise_error rand randn random rank rcfile reflect regexp regexp_extract regexp_extract_all regexp_like regexp_replace repeat replace reverse right rint rlike round row_number rpad rtrim schema_of_csv schema_of_json second sentences sequence sequencefile serde session_window sha sha1 sha2 shiftleft shiftright shiftrightunsigned shuffle sign signum sin sinh size skewness slice smallint some sort_array soundex space spark_partition_id split sqrt stack std stddev stddev_pop stddev_samp str_to_map string struct substr substring substring_index sum tan tanh textfile timestamp timestamp_micros timestamp_millis timestamp_seconds tinyint to_csv to_date to_json to_timestamp to_unix_timestamp to_utc_timestamp transform transform_keys transform_values translate trim trunc try_add try_divide typeof ucase unbase64 unhex uniontype unix_date unix_micros unix_millis unix_seconds unix_timestamp upper uuid var_pop var_samp variance version weekday weekofyear when width_bucket window xpath xpath_boolean xpath_double xpath_float xpath_int xpath_long xpath_number xpath_short xpath_string xxhash64 year zip_with"),atoms:s("false true null"),operatorChars:/^[*\/+\-%<>!=~&|^]/,dateSQL:s("date time timestamp"),support:s("doubleQuote zerolessFloat")}),o.defineMIME("text/x-esper",{name:"sql",client:s("source"),keywords:s("alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit after all and as at asc avedev avg between by case cast coalesce count create current_timestamp day days delete define desc distinct else end escape events every exists false first from full group having hour hours in inner insert instanceof into irstream is istream join last lastweekday left limit like max match_recognize matches median measures metadatasql min minute minutes msec millisecond milliseconds not null offset on or order outer output partition pattern prev prior regexp retain-union retain-intersection right rstream sec second seconds select set some snapshot sql stddev sum then true unidirectional until update variable weekday when where window"),builtin:{},atoms:s("false true null"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:s("time"),support:s("decimallessFloat zerolessFloat binaryNumber hexNumber")}),o.defineMIME("text/x-trino",{name:"sql",keywords:s("abs absent acos add admin after all all_match alter analyze and any any_match approx_distinct approx_most_frequent approx_percentile approx_set arbitrary array_agg array_distinct array_except array_intersect array_join array_max array_min array_position array_remove array_sort array_union arrays_overlap as asc asin at at_timezone atan atan2 authorization avg bar bernoulli beta_cdf between bing_tile bing_tile_at bing_tile_coordinates bing_tile_polygon bing_tile_quadkey bing_tile_zoom_level bing_tiles_around bit_count bitwise_and bitwise_and_agg bitwise_left_shift bitwise_not bitwise_or bitwise_or_agg bitwise_right_shift bitwise_right_shift_arithmetic bitwise_xor bool_and bool_or both by call cardinality cascade case cast catalogs cbrt ceil ceiling char2hexint checksum chr classify coalesce codepoint column columns combinations comment commit committed concat concat_ws conditional constraint contains contains_sequence convex_hull_agg copartition corr cos cosh cosine_similarity count count_if covar_pop covar_samp crc32 create cross cube cume_dist current current_catalog current_date current_groups current_path current_role current_schema current_time current_timestamp current_timezone current_user data date_add date_diff date_format date_parse date_trunc day day_of_month day_of_week day_of_year deallocate default define definer degrees delete dense_rank deny desc describe descriptor distinct distributed dow doy drop e element_at else empty empty_approx_set encoding end error escape evaluate_classifier_predictions every except excluding execute exists exp explain extract false features fetch filter final first first_value flatten floor following for format format_datetime format_number from from_base from_base32 from_base64 from_base64url from_big_endian_32 from_big_endian_64 from_encoded_polyline from_geojson_geometry from_hex from_ieee754_32 from_ieee754_64 from_iso8601_date from_iso8601_timestamp from_iso8601_timestamp_nanos from_unixtime from_unixtime_nanos from_utf8 full functions geometric_mean geometry_from_hadoop_shape geometry_invalid_reason geometry_nearest_points geometry_to_bing_tiles geometry_union geometry_union_agg grant granted grants graphviz great_circle_distance greatest group grouping groups hamming_distance hash_counts having histogram hmac_md5 hmac_sha1 hmac_sha256 hmac_sha512 hour human_readable_seconds if ignore in including index infinity initial inner input insert intersect intersection_cardinality into inverse_beta_cdf inverse_normal_cdf invoker io is is_finite is_infinite is_json_scalar is_nan isolation jaccard_index join json_array json_array_contains json_array_get json_array_length json_exists json_extract json_extract_scalar json_format json_object json_parse json_query json_size json_value keep key keys kurtosis lag last last_day_of_month last_value lateral lead leading learn_classifier learn_libsvm_classifier learn_libsvm_regressor learn_regressor least left length level levenshtein_distance like limit line_interpolate_point line_interpolate_points line_locate_point listagg ln local localtime localtimestamp log log10 log2 logical lower lpad ltrim luhn_check make_set_digest map_agg map_concat map_entries map_filter map_from_entries map_keys map_union map_values map_zip_with match match_recognize matched matches materialized max max_by md5 measures merge merge_set_digest millisecond min min_by minute mod month multimap_agg multimap_from_entries murmur3 nan natural next nfc nfd nfkc nfkd ngrams no none none_match normal_cdf normalize not now nth_value ntile null nullif nulls numeric_histogram object objectid_timestamp of offset omit on one only option or order ordinality outer output over overflow parse_data_size parse_datetime parse_duration partition partitions passing past path pattern per percent_rank permute pi position pow power preceding prepare privileges properties prune qdigest_agg quarter quotes radians rand random range rank read recursive reduce reduce_agg refresh regexp_count regexp_extract regexp_extract_all regexp_like regexp_position regexp_replace regexp_split regr_intercept regr_slope regress rename render repeat repeatable replace reset respect restrict returning reverse revoke rgb right role roles rollback rollup round row_number rows rpad rtrim running scalar schema schemas second security seek select sequence serializable session set sets sha1 sha256 sha512 show shuffle sign simplify_geometry sin skewness skip slice some soundex spatial_partitioning spatial_partitions split split_part split_to_map split_to_multimap spooky_hash_v2_32 spooky_hash_v2_64 sqrt st_area st_asbinary st_astext st_boundary st_buffer st_centroid st_contains st_convexhull st_coorddim st_crosses st_difference st_dimension st_disjoint st_distance st_endpoint st_envelope st_envelopeaspts st_equals st_exteriorring st_geometries st_geometryfromtext st_geometryn st_geometrytype st_geomfrombinary st_interiorringn st_interiorrings st_intersection st_intersects st_isclosed st_isempty st_isring st_issimple st_isvalid st_length st_linefromtext st_linestring st_multipoint st_numgeometries st_numinteriorring st_numpoints st_overlaps st_point st_pointn st_points st_polygon st_relate st_startpoint st_symdifference st_touches st_union st_within st_x st_xmax st_xmin st_y st_ymax st_ymin start starts_with stats stddev stddev_pop stddev_samp string strpos subset substr substring sum system table tables tablesample tan tanh tdigest_agg text then ties timestamp_objectid timezone_hour timezone_minute to to_base to_base32 to_base64 to_base64url to_big_endian_32 to_big_endian_64 to_char to_date to_encoded_polyline to_geojson_geometry to_geometry to_hex to_ieee754_32 to_ieee754_64 to_iso8601 to_milliseconds to_spherical_geography to_timestamp to_unixtime to_utf8 trailing transaction transform transform_keys transform_values translate trim trim_array true truncate try try_cast type typeof uescape unbounded uncommitted unconditional union unique unknown unmatched unnest update upper url_decode url_encode url_extract_fragment url_extract_host url_extract_parameter url_extract_path url_extract_port url_extract_protocol url_extract_query use user using utf16 utf32 utf8 validate value value_at_quantile values values_at_quantiles var_pop var_samp variance verbose version view week week_of_year when where width_bucket wilson_interval_lower wilson_interval_upper window with with_timezone within without word_stem work wrapper write xxhash64 year year_of_week yow zip zip_with"),builtin:s("array bigint bingtile boolean char codepoints color date decimal double function geometry hyperloglog int integer interval ipaddress joniregexp json json2016 jsonpath kdbtree likepattern map model objectid p4hyperloglog precision qdigest re2jregexp real regressor row setdigest smallint sphericalgeography tdigest time timestamp tinyint uuid varbinary varchar zone"),atoms:s("false true null unknown"),operatorChars:/^[[\]|<>=!\-+*/%]/,dateSQL:s("date time timestamp zone"),support:s("decimallessFloat zerolessFloat hexNumber")})})});var ta=Ke(($u,Ku)=>{(function(o){typeof $u=="object"&&typeof Ku=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("stylus",function(M){for(var H=M.indentUnit,Z="",ee=y(p),re=/^(a|b|i|s|col|em)$/i,N=y(k),F=y(s),D=y(S),Q=y(h),j=y(v),V=z(v),x=y(b),K=y(C),X=y(g),I=/^\s*([.]{2,3}|&&|\|\||\*\*|[?!=:]?=|[-+*\/%<>]=?|\?:|\~)/,B=z(w),le=y(c),xe=new RegExp(/^\-(moz|ms|o|webkit)-/i),q=y(d),L="",de={},ze,pe,Ee,ge;Z.length|~|\/)?\s*[\w-]*([a-z0-9-]|\*|\/\*)(\(|,)?)/),W.context.line.firstWord=L?L[0].replace(/^\s*/,""):"",W.context.line.indent=$.indentation(),ze=$.peek(),$.match("//"))return $.skipToEnd(),["comment","comment"];if($.match("/*"))return W.tokenize=qe,qe($,W);if(ze=='"'||ze=="'")return $.next(),W.tokenize=Se(ze),W.tokenize($,W);if(ze=="@")return $.next(),$.eatWhile(/[\w\\-]/),["def",$.current()];if(ze=="#"){if($.next(),$.match(/^[0-9a-f]{3}([0-9a-f]([0-9a-f]{2}){0,2})?\b(?!-)/i))return["atom","atom"];if($.match(/^[a-z][\w-]*/i))return["builtin","hash"]}return $.match(xe)?["meta","vendor-prefixes"]:$.match(/^-?[0-9]?\.?[0-9]/)?($.eatWhile(/[a-z%]/i),["number","unit"]):ze=="!"?($.next(),[$.match(/^(important|optional)/i)?"keyword":"operator","important"]):ze=="."&&$.match(/^\.[a-z][\w-]*/i)?["qualifier","qualifier"]:$.match(V)?($.peek()=="("&&(W.tokenize=je),["property","word"]):$.match(/^[a-z][\w-]*\(/i)?($.backUp(1),["keyword","mixin"]):$.match(/^(\+|-)[a-z][\w-]*\(/i)?($.backUp(1),["keyword","block-mixin"]):$.string.match(/^\s*&/)&&$.match(/^[-_]+[a-z][\w-]*/)?["qualifier","qualifier"]:$.match(/^(\/|&)(-|_|:|\.|#|[a-z])/)?($.backUp(1),["variable-3","reference"]):$.match(/^&{1}\s*$/)?["variable-3","reference"]:$.match(B)?["operator","operator"]:$.match(/^\$?[-_]*[a-z0-9]+[\w-]*/i)?$.match(/^(\.|\[)[\w-\'\"\]]+/i,!1)&&!U($.current())?($.match("."),["variable-2","variable-name"]):["variable-2","word"]:$.match(I)?["operator",$.current()]:/[:;,{}\[\]\(\)]/.test(ze)?($.next(),[null,ze]):($.next(),[null,null])}function qe($,W){for(var se=!1,De;(De=$.next())!=null;){if(se&&De=="/"){W.tokenize=null;break}se=De=="*"}return["comment","comment"]}function Se($){return function(W,se){for(var De=!1,nt;(nt=W.next())!=null;){if(nt==$&&!De){$==")"&&W.backUp(1);break}De=!De&&nt=="\\"}return(nt==$||!De&&$!=")")&&(se.tokenize=null),["string","string"]}}function je($,W){return $.next(),$.match(/\s*[\"\')]/,!1)?W.tokenize=null:W.tokenize=Se(")"),[null,"("]}function Ze($,W,se,De){this.type=$,this.indent=W,this.prev=se,this.line=De||{firstWord:"",indent:0}}function ke($,W,se,De){return De=De>=0?De:H,$.context=new Ze(se,W.indentation()+De,$.context),se}function Je($,W){var se=$.context.indent-H;return W=W||!1,$.context=$.context.prev,W&&($.context.indent=se),$.context.type}function He($,W,se){return de[se.context.type]($,W,se)}function Ge($,W,se,De){for(var nt=De||1;nt>0;nt--)se.context=se.context.prev;return He($,W,se)}function U($){return $.toLowerCase()in ee}function G($){return $=$.toLowerCase(),$ in N||$ in X}function ce($){return $.toLowerCase()in le}function Be($){return $.toLowerCase().match(xe)}function te($){var W=$.toLowerCase(),se="variable-2";return U($)?se="tag":ce($)?se="block-keyword":G($)?se="property":W in D||W in q?se="atom":W=="return"||W in Q?se="keyword":$.match(/^[A-Z]/)&&(se="string"),se}function fe($,W){return Me(W)&&($=="{"||$=="]"||$=="hash"||$=="qualifier")||$=="block-mixin"}function oe($,W){return $=="{"&&W.match(/^\s*\$?[\w-]+/i,!1)}function Ue($,W){return $==":"&&W.match(/^[a-z-]+/,!1)}function we($){return $.sol()||$.string.match(new RegExp("^\\s*"+R($.current())))}function Me($){return $.eol()||$.match(/^\s*$/,!1)}function Le($){var W=/^\s*[-_]*[a-z0-9]+[\w-]*/i,se=typeof $=="string"?$.match(W):$.string.match(W);return se?se[0].replace(/^\s*/,""):""}return de.block=function($,W,se){if($=="comment"&&we(W)||$==","&&Me(W)||$=="mixin")return ke(se,W,"block",0);if(oe($,W))return ke(se,W,"interpolation");if(Me(W)&&$=="]"&&!/^\s*(\.|#|:|\[|\*|&)/.test(W.string)&&!U(Le(W)))return ke(se,W,"block",0);if(fe($,W))return ke(se,W,"block");if($=="}"&&Me(W))return ke(se,W,"block",0);if($=="variable-name")return W.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/)||ce(Le(W))?ke(se,W,"variableName"):ke(se,W,"variableName",0);if($=="=")return!Me(W)&&!ce(Le(W))?ke(se,W,"block",0):ke(se,W,"block");if($=="*"&&(Me(W)||W.match(/\s*(,|\.|#|\[|:|{)/,!1)))return ge="tag",ke(se,W,"block");if(Ue($,W))return ke(se,W,"pseudo");if(/@(font-face|media|supports|(-moz-)?document)/.test($))return ke(se,W,Me(W)?"block":"atBlock");if(/@(-(moz|ms|o|webkit)-)?keyframes$/.test($))return ke(se,W,"keyframes");if(/@extends?/.test($))return ke(se,W,"extend",0);if($&&$.charAt(0)=="@")return W.indentation()>0&&G(W.current().slice(1))?(ge="variable-2","block"):/(@import|@require|@charset)/.test($)?ke(se,W,"block",0):ke(se,W,"block");if($=="reference"&&Me(W))return ke(se,W,"block");if($=="(")return ke(se,W,"parens");if($=="vendor-prefixes")return ke(se,W,"vendorPrefixes");if($=="word"){var De=W.current();if(ge=te(De),ge=="property")return we(W)?ke(se,W,"block",0):(ge="atom","block");if(ge=="tag"){if(/embed|menu|pre|progress|sub|table/.test(De)&&G(Le(W))||W.string.match(new RegExp("\\[\\s*"+De+"|"+De+"\\s*\\]")))return ge="atom","block";if(re.test(De)&&(we(W)&&W.string.match(/=/)||!we(W)&&!W.string.match(/^(\s*\.|#|\&|\[|\/|>|\*)/)&&!U(Le(W))))return ge="variable-2",ce(Le(W))?"block":ke(se,W,"block",0);if(Me(W))return ke(se,W,"block")}if(ge=="block-keyword")return ge="keyword",W.current(/(if|unless)/)&&!we(W)?"block":ke(se,W,"block");if(De=="return")return ke(se,W,"block",0);if(ge=="variable-2"&&W.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/))return ke(se,W,"block")}return se.context.type},de.parens=function($,W,se){if($=="(")return ke(se,W,"parens");if($==")")return se.context.prev.type=="parens"?Je(se):W.string.match(/^[a-z][\w-]*\(/i)&&Me(W)||ce(Le(W))||/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(Le(W))||!W.string.match(/^-?[a-z][\w-\.\[\]\'\"]*\s*=/)&&U(Le(W))?ke(se,W,"block"):W.string.match(/^[\$-]?[a-z][\w-\.\[\]\'\"]*\s*=/)||W.string.match(/^\s*(\(|\)|[0-9])/)||W.string.match(/^\s+[a-z][\w-]*\(/i)||W.string.match(/^\s+[\$-]?[a-z]/i)?ke(se,W,"block",0):Me(W)?ke(se,W,"block"):ke(se,W,"block",0);if($&&$.charAt(0)=="@"&&G(W.current().slice(1))&&(ge="variable-2"),$=="word"){var De=W.current();ge=te(De),ge=="tag"&&re.test(De)&&(ge="variable-2"),(ge=="property"||De=="to")&&(ge="atom")}return $=="variable-name"?ke(se,W,"variableName"):Ue($,W)?ke(se,W,"pseudo"):se.context.type},de.vendorPrefixes=function($,W,se){return $=="word"?(ge="property",ke(se,W,"block",0)):Je(se)},de.pseudo=function($,W,se){return G(Le(W.string))?Ge($,W,se):(W.match(/^[a-z-]+/),ge="variable-3",Me(W)?ke(se,W,"block"):Je(se))},de.atBlock=function($,W,se){if($=="(")return ke(se,W,"atBlock_parens");if(fe($,W))return ke(se,W,"block");if(oe($,W))return ke(se,W,"interpolation");if($=="word"){var De=W.current().toLowerCase();if(/^(only|not|and|or)$/.test(De)?ge="keyword":j.hasOwnProperty(De)?ge="tag":K.hasOwnProperty(De)?ge="attribute":x.hasOwnProperty(De)?ge="property":F.hasOwnProperty(De)?ge="string-2":ge=te(W.current()),ge=="tag"&&Me(W))return ke(se,W,"block")}return $=="operator"&&/^(not|and|or)$/.test(W.current())&&(ge="keyword"),se.context.type},de.atBlock_parens=function($,W,se){if($=="{"||$=="}")return se.context.type;if($==")")return Me(W)?ke(se,W,"block"):ke(se,W,"atBlock");if($=="word"){var De=W.current().toLowerCase();return ge=te(De),/^(max|min)/.test(De)&&(ge="property"),ge=="tag"&&(re.test(De)?ge="variable-2":ge="atom"),se.context.type}return de.atBlock($,W,se)},de.keyframes=function($,W,se){return W.indentation()=="0"&&($=="}"&&we(W)||$=="]"||$=="hash"||$=="qualifier"||U(W.current()))?Ge($,W,se):$=="{"?ke(se,W,"keyframes"):$=="}"?we(W)?Je(se,!0):ke(se,W,"keyframes"):$=="unit"&&/^[0-9]+\%$/.test(W.current())?ke(se,W,"keyframes"):$=="word"&&(ge=te(W.current()),ge=="block-keyword")?(ge="keyword",ke(se,W,"keyframes")):/@(font-face|media|supports|(-moz-)?document)/.test($)?ke(se,W,Me(W)?"block":"atBlock"):$=="mixin"?ke(se,W,"block",0):se.context.type},de.interpolation=function($,W,se){return $=="{"&&Je(se)&&ke(se,W,"block"),$=="}"?W.string.match(/^\s*(\.|#|:|\[|\*|&|>|~|\+|\/)/i)||W.string.match(/^\s*[a-z]/i)&&U(Le(W))?ke(se,W,"block"):!W.string.match(/^(\{|\s*\&)/)||W.match(/\s*[\w-]/,!1)?ke(se,W,"block",0):ke(se,W,"block"):$=="variable-name"?ke(se,W,"variableName",0):($=="word"&&(ge=te(W.current()),ge=="tag"&&(ge="atom")),se.context.type)},de.extend=function($,W,se){return $=="["||$=="="?"extend":$=="]"?Je(se):$=="word"?(ge=te(W.current()),"extend"):Je(se)},de.variableName=function($,W,se){return $=="string"||$=="["||$=="]"||W.current().match(/^(\.|\$)/)?(W.current().match(/^\.[\w-]+/i)&&(ge="variable-2"),"variableName"):Ge($,W,se)},{startState:function($){return{tokenize:null,state:"block",context:new Ze("block",$||0,null)}},token:function($,W){return!W.tokenize&&$.eatSpace()?null:(pe=(W.tokenize||Oe)($,W),pe&&typeof pe=="object"&&(Ee=pe[1],pe=pe[0]),ge=pe,W.state=de[W.state](Ee,$,W),ge)},indent:function($,W,se){var De=$.context,nt=W&&W.charAt(0),dt=De.indent,Pt=Le(W),It=se.match(/^\s*/)[0].replace(/\t/g,Z).length,Pe=$.context.prev?$.context.prev.line.firstWord:"",xt=$.context.prev?$.context.prev.line.indent:It;return De.prev&&(nt=="}"&&(De.type=="block"||De.type=="atBlock"||De.type=="keyframes")||nt==")"&&(De.type=="parens"||De.type=="atBlock_parens")||nt=="{"&&De.type=="at")?dt=De.indent-H:/(\})/.test(nt)||(/@|\$|\d/.test(nt)||/^\{/.test(W)||/^\s*\/(\/|\*)/.test(W)||/^\s*\/\*/.test(Pe)||/^\s*[\w-\.\[\]\'\"]+\s*(\?|:|\+)?=/i.test(W)||/^(\+|-)?[a-z][\w-]*\(/i.test(W)||/^return/.test(W)||ce(Pt)?dt=It:/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(nt)||U(Pt)?/\,\s*$/.test(Pe)?dt=xt:/^\s+/.test(se)&&(/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(Pe)||U(Pe))?dt=It<=xt?xt:xt+H:dt=It:!/,\s*$/.test(se)&&(Be(Pt)||G(Pt))&&(ce(Pe)?dt=It<=xt?xt:xt+H:/^\{/.test(Pe)?dt=It<=xt?It:xt+H:Be(Pe)||G(Pe)?dt=It>=xt?xt:It:/^(\.|#|:|\[|\*|&|@|\+|\-|>|~|\/)/.test(Pe)||/=\s*$/.test(Pe)||U(Pe)||/^\$[\w-\.\[\]\'\"]/.test(Pe)?dt=xt+H:dt=It)),dt},electricChars:"}",blockCommentStart:"/*",blockCommentEnd:"*/",blockCommentContinue:" * ",lineComment:"//",fold:"indent"}});var p=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","bgsound","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","nobr","noframes","noscript","object","ol","optgroup","option","output","p","param","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","track","u","ul","var","video"],v=["domain","regexp","url-prefix","url"],C=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],b=["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid","dynamic-range","video-dynamic-range"],k=["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-weight","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-position","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marker-offset","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-overflow","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode","font-smoothing","osx-font-smoothing"],s=["scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-3d-light-color","scrollbar-track-color","shape-inside","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","zoom"],g=["font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"],h=["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"],S=["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","avoid","avoid-column","avoid-page","avoid-region","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","column","compact","condensed","conic-gradient","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","dashed","decimal","decimal-leading-zero","default","default-button","destination-atop","destination-in","destination-out","destination-over","devanagari","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","flex","footnotes","forwards","from","geometricPrecision","georgian","graytext","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hebrew","help","hidden","hide","high","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","malayalam","match","matrix","matrix3d","media-play-button","media-slider","media-sliderthumb","media-volume-slider","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeating-conic-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row-resize","rtl","run-in","running","s-resize","sans-serif","scale","scale3d","scaleX","scaleY","scaleZ","scroll","scrollbar","scroll-position","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","solid","somali","source-atop","source-in","source-out","source-over","space","spell-out","square","square-button","standard","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize","symbolic","symbols","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","x-large","x-small","xor","xx-large","xx-small","bicubic","optimizespeed","grayscale","row","row-reverse","wrap","wrap-reverse","column-reverse","flex-start","flex-end","space-between","space-around","unset"],w=["in","and","or","not","is not","is a","is","isnt","defined","if unless"],c=["for","if","else","unless","from","to"],d=["null","true","false","href","title","type","not-allowed","readonly","disabled"],T=["@font-face","@keyframes","@media","@viewport","@page","@host","@supports","@block","@css"],E=p.concat(v,C,b,k,s,h,S,g,w,c,d,T);function z(M){return M=M.sort(function(H,Z){return Z>H}),new RegExp("^(("+M.join(")|(")+"))\\b")}function y(M){for(var H={},Z=0;Z{(function(o){typeof Gu=="object"&&typeof Zu=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";function p(N){for(var F={},D=0;D~^?!",g=":;,.(){}[]",h=/^\-?0b[01][01_]*/,S=/^\-?0o[0-7][0-7_]*/,w=/^\-?0x[\dA-Fa-f][\dA-Fa-f_]*(?:(?:\.[\dA-Fa-f][\dA-Fa-f_]*)?[Pp]\-?\d[\d_]*)?/,c=/^\-?\d[\d_]*(?:\.\d[\d_]*)?(?:[Ee]\-?\d[\d_]*)?/,d=/^\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1/,T=/^\.(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/,E=/^\#[A-Za-z]+/,z=/^@(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/;function y(N,F,D){if(N.sol()&&(F.indented=N.indentation()),N.eatSpace())return null;var Q=N.peek();if(Q=="/"){if(N.match("//"))return N.skipToEnd(),"comment";if(N.match("/*"))return F.tokenize.push(H),H(N,F)}if(N.match(E))return"builtin";if(N.match(z))return"attribute";if(N.match(h)||N.match(S)||N.match(w)||N.match(c))return"number";if(N.match(T))return"property";if(s.indexOf(Q)>-1)return N.next(),"operator";if(g.indexOf(Q)>-1)return N.next(),N.match(".."),"punctuation";var j;if(j=N.match(/("""|"|')/)){var V=M.bind(null,j[0]);return F.tokenize.push(V),V(N,F)}if(N.match(d)){var x=N.current();return k.hasOwnProperty(x)?"variable-2":b.hasOwnProperty(x)?"atom":v.hasOwnProperty(x)?(C.hasOwnProperty(x)&&(F.prev="define"),"keyword"):D=="define"?"def":"variable"}return N.next(),null}function R(){var N=0;return function(F,D,Q){var j=y(F,D,Q);if(j=="punctuation"){if(F.current()=="(")++N;else if(F.current()==")"){if(N==0)return F.backUp(1),D.tokenize.pop(),D.tokenize[D.tokenize.length-1](F,D);--N}}return j}}function M(N,F,D){for(var Q=N.length==1,j,V=!1;j=F.peek();)if(V){if(F.next(),j=="(")return D.tokenize.push(R()),"string";V=!1}else{if(F.match(N))return D.tokenize.pop(),"string";F.next(),V=j=="\\"}return Q&&D.tokenize.pop(),"string"}function H(N,F){for(var D;D=N.next();)if(D==="/"&&N.eat("*"))F.tokenize.push(H);else if(D==="*"&&N.eat("/")){F.tokenize.pop();break}return"comment"}function Z(N,F,D){this.prev=N,this.align=F,this.indented=D}function ee(N,F){var D=F.match(/^\s*($|\/[\/\*])/,!1)?null:F.column()+1;N.context=new Z(N.context,D,N.indented)}function re(N){N.context&&(N.indented=N.context.indented,N.context=N.context.prev)}o.defineMode("swift",function(N){return{startState:function(){return{prev:null,context:null,indented:0,tokenize:[]}},token:function(F,D){var Q=D.prev;D.prev=null;var j=D.tokenize[D.tokenize.length-1]||y,V=j(F,D,Q);if(!V||V=="comment"?D.prev=Q:D.prev||(D.prev=V),V=="punctuation"){var x=/[\(\[\{]|([\]\)\}])/.exec(F.current());x&&(x[1]?re:ee)(D,F)}return V},indent:function(F,D){var Q=F.context;if(!Q)return 0;var j=/^[\]\}\)]/.test(D);return Q.align!=null?Q.align-(j?1:0):Q.indented+(j?0:N.indentUnit)},electricInput:/^\s*[\)\}\]]$/,lineComment:"//",blockCommentStart:"/*",blockCommentEnd:"*/",fold:"brace",closeBrackets:"()[]{}''\"\"``"}}),o.defineMIME("text/x-swift","swift")})});var Vu=Ke((Yu,Qu)=>{(function(o){typeof Yu=="object"&&typeof Qu=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("coffeescript",function(p,v){var C="error";function b(F){return new RegExp("^(("+F.join(")|(")+"))\\b")}var k=/^(?:->|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\|=?|\^=?|\~|!|\?|(or|and|\|\||&&|\?)=)/,s=/^(?:[()\[\]{},:`=;]|\.\.?\.?)/,g=/^[_A-Za-z$][_A-Za-z$0-9]*/,h=/^@[_A-Za-z$][_A-Za-z$0-9]*/,S=b(["and","or","not","is","isnt","in","instanceof","typeof"]),w=["for","while","loop","if","unless","else","switch","try","catch","finally","class"],c=["break","by","continue","debugger","delete","do","in","of","new","return","then","this","@","throw","when","until","extends"],d=b(w.concat(c));w=b(w);var T=/^('{3}|\"{3}|['\"])/,E=/^(\/{3}|\/)/,z=["Infinity","NaN","undefined","null","true","false","on","off","yes","no"],y=b(z);function R(F,D){if(F.sol()){D.scope.align===null&&(D.scope.align=!1);var Q=D.scope.offset;if(F.eatSpace()){var j=F.indentation();return j>Q&&D.scope.type=="coffee"?"indent":j0&&ee(F,D)}if(F.eatSpace())return null;var V=F.peek();if(F.match("####"))return F.skipToEnd(),"comment";if(F.match("###"))return D.tokenize=H,D.tokenize(F,D);if(V==="#")return F.skipToEnd(),"comment";if(F.match(/^-?[0-9\.]/,!1)){var x=!1;if(F.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)&&(x=!0),F.match(/^-?\d+\.\d*/)&&(x=!0),F.match(/^-?\.\d+/)&&(x=!0),x)return F.peek()=="."&&F.backUp(1),"number";var K=!1;if(F.match(/^-?0x[0-9a-f]+/i)&&(K=!0),F.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)&&(K=!0),F.match(/^-?0(?![\dx])/i)&&(K=!0),K)return"number"}if(F.match(T))return D.tokenize=M(F.current(),!1,"string"),D.tokenize(F,D);if(F.match(E)){if(F.current()!="/"||F.match(/^.*\//,!1))return D.tokenize=M(F.current(),!0,"string-2"),D.tokenize(F,D);F.backUp(1)}return F.match(k)||F.match(S)?"operator":F.match(s)?"punctuation":F.match(y)?"atom":F.match(h)||D.prop&&F.match(g)?"property":F.match(d)?"keyword":F.match(g)?"variable":(F.next(),C)}function M(F,D,Q){return function(j,V){for(;!j.eol();)if(j.eatWhile(/[^'"\/\\]/),j.eat("\\")){if(j.next(),D&&j.eol())return Q}else{if(j.match(F))return V.tokenize=R,Q;j.eat(/['"\/]/)}return D&&(v.singleLineStringErrors?Q=C:V.tokenize=R),Q}}function H(F,D){for(;!F.eol();){if(F.eatWhile(/[^#]/),F.match("###")){D.tokenize=R;break}F.eatWhile("#")}return"comment"}function Z(F,D,Q){Q=Q||"coffee";for(var j=0,V=!1,x=null,K=D.scope;K;K=K.prev)if(K.type==="coffee"||K.type=="}"){j=K.offset+p.indentUnit;break}Q!=="coffee"?(V=null,x=F.column()+F.current().length):D.scope.align&&(D.scope.align=!1),D.scope={offset:j,type:Q,prev:D.scope,align:V,alignOffset:x}}function ee(F,D){if(D.scope.prev)if(D.scope.type==="coffee"){for(var Q=F.indentation(),j=!1,V=D.scope;V;V=V.prev)if(Q===V.offset){j=!0;break}if(!j)return!0;for(;D.scope.prev&&D.scope.offset!==Q;)D.scope=D.scope.prev;return!1}else return D.scope=D.scope.prev,!1}function re(F,D){var Q=D.tokenize(F,D),j=F.current();j==="return"&&(D.dedent=!0),((j==="->"||j==="=>")&&F.eol()||Q==="indent")&&Z(F,D);var V="[({".indexOf(j);if(V!==-1&&Z(F,D,"])}".slice(V,V+1)),w.exec(j)&&Z(F,D),j=="then"&&ee(F,D),Q==="dedent"&&ee(F,D))return C;if(V="])}".indexOf(j),V!==-1){for(;D.scope.type=="coffee"&&D.scope.prev;)D.scope=D.scope.prev;D.scope.type==j&&(D.scope=D.scope.prev)}return D.dedent&&F.eol()&&(D.scope.type=="coffee"&&D.scope.prev&&(D.scope=D.scope.prev),D.dedent=!1),Q}var N={startState:function(F){return{tokenize:R,scope:{offset:F||0,type:"coffee",prev:null,align:!1},prop:!1,dedent:0}},token:function(F,D){var Q=D.scope.align===null&&D.scope;Q&&F.sol()&&(Q.align=!1);var j=re(F,D);return j&&j!="comment"&&(Q&&(Q.align=!0),D.prop=j=="punctuation"&&F.current()=="."),j},indent:function(F,D){if(F.tokenize!=R)return 0;var Q=F.scope,j=D&&"])}".indexOf(D.charAt(0))>-1;if(j)for(;Q.type=="coffee"&&Q.prev;)Q=Q.prev;var V=j&&Q.type===D.charAt(0);return Q.align?Q.alignOffset-(V?1:0):(V?Q.prev:Q).offset},lineComment:"#",fold:"indent"};return N}),o.defineMIME("application/vnd.coffeescript","coffeescript"),o.defineMIME("text/x-coffeescript","coffeescript"),o.defineMIME("text/coffeescript","coffeescript")})});var tc=Ke((Ju,ec)=>{(function(o){typeof Ju=="object"&&typeof ec=="object"?o(We(),vn(),gn(),Qn()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../javascript/javascript","../css/css","../htmlmixed/htmlmixed"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("pug",function(p){var v="keyword",C="meta",b="builtin",k="qualifier",s={"{":"}","(":")","[":"]"},g=o.getMode(p,"javascript");function h(){this.javaScriptLine=!1,this.javaScriptLineExcludesColon=!1,this.javaScriptArguments=!1,this.javaScriptArgumentsDepth=0,this.isInterpolating=!1,this.interpolationNesting=0,this.jsState=o.startState(g),this.restOfLine="",this.isIncludeFiltered=!1,this.isEach=!1,this.lastTag="",this.scriptType="",this.isAttrs=!1,this.attrsNest=[],this.inAttributeName=!0,this.attributeIsType=!1,this.attrValue="",this.indentOf=1/0,this.indentToken="",this.innerMode=null,this.innerState=null,this.innerModeForLine=!1}h.prototype.copy=function(){var U=new h;return U.javaScriptLine=this.javaScriptLine,U.javaScriptLineExcludesColon=this.javaScriptLineExcludesColon,U.javaScriptArguments=this.javaScriptArguments,U.javaScriptArgumentsDepth=this.javaScriptArgumentsDepth,U.isInterpolating=this.isInterpolating,U.interpolationNesting=this.interpolationNesting,U.jsState=o.copyState(g,this.jsState),U.innerMode=this.innerMode,this.innerMode&&this.innerState&&(U.innerState=o.copyState(this.innerMode,this.innerState)),U.restOfLine=this.restOfLine,U.isIncludeFiltered=this.isIncludeFiltered,U.isEach=this.isEach,U.lastTag=this.lastTag,U.scriptType=this.scriptType,U.isAttrs=this.isAttrs,U.attrsNest=this.attrsNest.slice(),U.inAttributeName=this.inAttributeName,U.attributeIsType=this.attributeIsType,U.attrValue=this.attrValue,U.indentOf=this.indentOf,U.indentToken=this.indentToken,U.innerModeForLine=this.innerModeForLine,U};function S(U,G){if(U.sol()&&(G.javaScriptLine=!1,G.javaScriptLineExcludesColon=!1),G.javaScriptLine){if(G.javaScriptLineExcludesColon&&U.peek()===":"){G.javaScriptLine=!1,G.javaScriptLineExcludesColon=!1;return}var ce=g.token(U,G.jsState);return U.eol()&&(G.javaScriptLine=!1),ce||!0}}function w(U,G){if(G.javaScriptArguments){if(G.javaScriptArgumentsDepth===0&&U.peek()!=="("){G.javaScriptArguments=!1;return}if(U.peek()==="("?G.javaScriptArgumentsDepth++:U.peek()===")"&&G.javaScriptArgumentsDepth--,G.javaScriptArgumentsDepth===0){G.javaScriptArguments=!1;return}var ce=g.token(U,G.jsState);return ce||!0}}function c(U){if(U.match(/^yield\b/))return"keyword"}function d(U){if(U.match(/^(?:doctype) *([^\n]+)?/))return C}function T(U,G){if(U.match("#{"))return G.isInterpolating=!0,G.interpolationNesting=0,"punctuation"}function E(U,G){if(G.isInterpolating){if(U.peek()==="}"){if(G.interpolationNesting--,G.interpolationNesting<0)return U.next(),G.isInterpolating=!1,"punctuation"}else U.peek()==="{"&&G.interpolationNesting++;return g.token(U,G.jsState)||!0}}function z(U,G){if(U.match(/^case\b/))return G.javaScriptLine=!0,v}function y(U,G){if(U.match(/^when\b/))return G.javaScriptLine=!0,G.javaScriptLineExcludesColon=!0,v}function R(U){if(U.match(/^default\b/))return v}function M(U,G){if(U.match(/^extends?\b/))return G.restOfLine="string",v}function H(U,G){if(U.match(/^append\b/))return G.restOfLine="variable",v}function Z(U,G){if(U.match(/^prepend\b/))return G.restOfLine="variable",v}function ee(U,G){if(U.match(/^block\b *(?:(prepend|append)\b)?/))return G.restOfLine="variable",v}function re(U,G){if(U.match(/^include\b/))return G.restOfLine="string",v}function N(U,G){if(U.match(/^include:([a-zA-Z0-9\-]+)/,!1)&&U.match("include"))return G.isIncludeFiltered=!0,v}function F(U,G){if(G.isIncludeFiltered){var ce=B(U,G);return G.isIncludeFiltered=!1,G.restOfLine="string",ce}}function D(U,G){if(U.match(/^mixin\b/))return G.javaScriptLine=!0,v}function Q(U,G){if(U.match(/^\+([-\w]+)/))return U.match(/^\( *[-\w]+ *=/,!1)||(G.javaScriptArguments=!0,G.javaScriptArgumentsDepth=0),"variable";if(U.match("+#{",!1))return U.next(),G.mixinCallAfter=!0,T(U,G)}function j(U,G){if(G.mixinCallAfter)return G.mixinCallAfter=!1,U.match(/^\( *[-\w]+ *=/,!1)||(G.javaScriptArguments=!0,G.javaScriptArgumentsDepth=0),!0}function V(U,G){if(U.match(/^(if|unless|else if|else)\b/))return G.javaScriptLine=!0,v}function x(U,G){if(U.match(/^(- *)?(each|for)\b/))return G.isEach=!0,v}function K(U,G){if(G.isEach){if(U.match(/^ in\b/))return G.javaScriptLine=!0,G.isEach=!1,v;if(U.sol()||U.eol())G.isEach=!1;else if(U.next()){for(;!U.match(/^ in\b/,!1)&&U.next(););return"variable"}}}function X(U,G){if(U.match(/^while\b/))return G.javaScriptLine=!0,v}function I(U,G){var ce;if(ce=U.match(/^(\w(?:[-:\w]*\w)?)\/?/))return G.lastTag=ce[1].toLowerCase(),G.lastTag==="script"&&(G.scriptType="application/javascript"),"tag"}function B(U,G){if(U.match(/^:([\w\-]+)/)){var ce;return p&&p.innerModes&&(ce=p.innerModes(U.current().substring(1))),ce||(ce=U.current().substring(1)),typeof ce=="string"&&(ce=o.getMode(p,ce)),je(U,G,ce),"atom"}}function le(U,G){if(U.match(/^(!?=|-)/))return G.javaScriptLine=!0,"punctuation"}function xe(U){if(U.match(/^#([\w-]+)/))return b}function q(U){if(U.match(/^\.([\w-]+)/))return k}function L(U,G){if(U.peek()=="(")return U.next(),G.isAttrs=!0,G.attrsNest=[],G.inAttributeName=!0,G.attrValue="",G.attributeIsType=!1,"punctuation"}function de(U,G){if(G.isAttrs){if(s[U.peek()]&&G.attrsNest.push(s[U.peek()]),G.attrsNest[G.attrsNest.length-1]===U.peek())G.attrsNest.pop();else if(U.eat(")"))return G.isAttrs=!1,"punctuation";if(G.inAttributeName&&U.match(/^[^=,\)!]+/))return(U.peek()==="="||U.peek()==="!")&&(G.inAttributeName=!1,G.jsState=o.startState(g),G.lastTag==="script"&&U.current().trim().toLowerCase()==="type"?G.attributeIsType=!0:G.attributeIsType=!1),"attribute";var ce=g.token(U,G.jsState);if(G.attributeIsType&&ce==="string"&&(G.scriptType=U.current().toString()),G.attrsNest.length===0&&(ce==="string"||ce==="variable"||ce==="keyword"))try{return Function("","var x "+G.attrValue.replace(/,\s*$/,"").replace(/^!/,"")),G.inAttributeName=!0,G.attrValue="",U.backUp(U.current().length),de(U,G)}catch{}return G.attrValue+=U.current(),ce||!0}}function ze(U,G){if(U.match(/^&attributes\b/))return G.javaScriptArguments=!0,G.javaScriptArgumentsDepth=0,"keyword"}function pe(U){if(U.sol()&&U.eatSpace())return"indent"}function Ee(U,G){if(U.match(/^ *\/\/(-)?([^\n]*)/))return G.indentOf=U.indentation(),G.indentToken="comment","comment"}function ge(U){if(U.match(/^: */))return"colon"}function Oe(U,G){if(U.match(/^(?:\| ?| )([^\n]+)/))return"string";if(U.match(/^(<[^\n]*)/,!1))return je(U,G,"htmlmixed"),G.innerModeForLine=!0,Ze(U,G,!0)}function qe(U,G){if(U.eat(".")){var ce=null;return G.lastTag==="script"&&G.scriptType.toLowerCase().indexOf("javascript")!=-1?ce=G.scriptType.toLowerCase().replace(/"|'/g,""):G.lastTag==="style"&&(ce="css"),je(U,G,ce),"dot"}}function Se(U){return U.next(),null}function je(U,G,ce){ce=o.mimeModes[ce]||ce,ce=p.innerModes&&p.innerModes(ce)||ce,ce=o.mimeModes[ce]||ce,ce=o.getMode(p,ce),G.indentOf=U.indentation(),ce&&ce.name!=="null"?G.innerMode=ce:G.indentToken="string"}function Ze(U,G,ce){if(U.indentation()>G.indentOf||G.innerModeForLine&&!U.sol()||ce)return G.innerMode?(G.innerState||(G.innerState=G.innerMode.startState?o.startState(G.innerMode,U.indentation()):{}),U.hideFirstChars(G.indentOf+2,function(){return G.innerMode.token(U,G.innerState)||!0})):(U.skipToEnd(),G.indentToken);U.sol()&&(G.indentOf=1/0,G.indentToken=null,G.innerMode=null,G.innerState=null)}function ke(U,G){if(U.sol()&&(G.restOfLine=""),G.restOfLine){U.skipToEnd();var ce=G.restOfLine;return G.restOfLine="",ce}}function Je(){return new h}function He(U){return U.copy()}function Ge(U,G){var ce=Ze(U,G)||ke(U,G)||E(U,G)||F(U,G)||K(U,G)||de(U,G)||S(U,G)||w(U,G)||j(U,G)||c(U)||d(U)||T(U,G)||z(U,G)||y(U,G)||R(U)||M(U,G)||H(U,G)||Z(U,G)||ee(U,G)||re(U,G)||N(U,G)||D(U,G)||Q(U,G)||V(U,G)||x(U,G)||X(U,G)||I(U,G)||B(U,G)||le(U,G)||xe(U)||q(U)||L(U,G)||ze(U,G)||pe(U)||Oe(U,G)||Ee(U,G)||ge(U)||qe(U,G)||Se(U);return ce===!0?null:ce}return{startState:Je,copyState:He,token:Ge}},"javascript","css","htmlmixed"),o.defineMIME("text/x-pug","pug"),o.defineMIME("text/x-jade","pug")})});var ic=Ke((rc,nc)=>{(function(o){typeof rc=="object"&&typeof nc=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.multiplexingMode=function(p){var v=Array.prototype.slice.call(arguments,1);function C(b,k,s,g){if(typeof k=="string"){var h=b.indexOf(k,s);return g&&h>-1?h+k.length:h}var S=k.exec(s?b.slice(s):b);return S?S.index+s+(g?S[0].length:0):-1}return{startState:function(){return{outer:o.startState(p),innerActive:null,inner:null,startingInner:!1}},copyState:function(b){return{outer:o.copyState(p,b.outer),innerActive:b.innerActive,inner:b.innerActive&&o.copyState(b.innerActive.mode,b.inner),startingInner:b.startingInner}},token:function(b,k){if(k.innerActive){var E=k.innerActive,g=b.string;if(!E.close&&b.sol())return k.innerActive=k.inner=null,this.token(b,k);var w=E.close&&!k.startingInner?C(g,E.close,b.pos,E.parseDelimiters):-1;if(w==b.pos&&!E.parseDelimiters)return b.match(E.close),k.innerActive=k.inner=null,E.delimStyle&&E.delimStyle+" "+E.delimStyle+"-close";w>-1&&(b.string=g.slice(0,w));var z=E.mode.token(b,k.inner);return w>-1?b.string=g:b.pos>b.start&&(k.startingInner=!1),w==b.pos&&E.parseDelimiters&&(k.innerActive=k.inner=null),E.innerStyle&&(z?z=z+" "+E.innerStyle:z=E.innerStyle),z}else{for(var s=1/0,g=b.string,h=0;h{(function(o){typeof oc=="object"&&typeof ac=="object"?o(We(),Di(),ic()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../../addon/mode/simple","../../addon/mode/multiplex"],o):o(CodeMirror)})(function(o){"use strict";o.defineSimpleMode("handlebars-tags",{start:[{regex:/\{\{\{/,push:"handlebars_raw",token:"tag"},{regex:/\{\{!--/,push:"dash_comment",token:"comment"},{regex:/\{\{!/,push:"comment",token:"comment"},{regex:/\{\{/,push:"handlebars",token:"tag"}],handlebars_raw:[{regex:/\}\}\}/,pop:!0,token:"tag"}],handlebars:[{regex:/\}\}/,pop:!0,token:"tag"},{regex:/"(?:[^\\"]|\\.)*"?/,token:"string"},{regex:/'(?:[^\\']|\\.)*'?/,token:"string"},{regex:/>|[#\/]([A-Za-z_]\w*)/,token:"keyword"},{regex:/(?:else|this)\b/,token:"keyword"},{regex:/\d+/i,token:"number"},{regex:/=|~|@|true|false/,token:"atom"},{regex:/(?:\.\.\/)*(?:[A-Za-z_][\w\.]*)+/,token:"variable-2"}],dash_comment:[{regex:/--\}\}/,pop:!0,token:"comment"},{regex:/./,token:"comment"}],comment:[{regex:/\}\}/,pop:!0,token:"comment"},{regex:/./,token:"comment"}],meta:{blockCommentStart:"{{--",blockCommentEnd:"--}}"}}),o.defineMode("handlebars",function(p,v){var C=o.getMode(p,"handlebars-tags");return!v||!v.base?C:o.multiplexingMode(o.getMode(p,v.base),{open:"{{",close:/\}\}\}?/,mode:C,parseDelimiters:!0})}),o.defineMIME("text/x-handlebars-template","handlebars")})});var cc=Ke((sc,uc)=>{(function(o){"use strict";typeof sc=="object"&&typeof uc=="object"?o(We(),Yn(),mn(),vn(),Vu(),gn(),ea(),ta(),tc(),lc()):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../../addon/mode/overlay","../xml/xml","../javascript/javascript","../coffeescript/coffeescript","../css/css","../sass/sass","../stylus/stylus","../pug/pug","../handlebars/handlebars"],o):o(CodeMirror)})(function(o){var p={script:[["lang",/coffee(script)?/,"coffeescript"],["type",/^(?:text|application)\/(?:x-)?coffee(?:script)?$/,"coffeescript"],["lang",/^babel$/,"javascript"],["type",/^text\/babel$/,"javascript"],["type",/^text\/ecmascript-\d+$/,"javascript"]],style:[["lang",/^stylus$/i,"stylus"],["lang",/^sass$/i,"sass"],["lang",/^less$/i,"text/x-less"],["lang",/^scss$/i,"text/x-scss"],["type",/^(text\/)?(x-)?styl(us)?$/i,"stylus"],["type",/^text\/sass/i,"sass"],["type",/^(text\/)?(x-)?scss$/i,"text/x-scss"],["type",/^(text\/)?(x-)?less$/i,"text/x-less"]],template:[["lang",/^vue-template$/i,"vue"],["lang",/^pug$/i,"pug"],["lang",/^handlebars$/i,"handlebars"],["type",/^(text\/)?(x-)?pug$/i,"pug"],["type",/^text\/x-handlebars-template$/i,"handlebars"],[null,null,"vue-template"]]};o.defineMode("vue-template",function(v,C){var b={token:function(k){if(k.match(/^\{\{.*?\}\}/))return"meta mustache";for(;k.next()&&!k.match("{{",!1););return null}};return o.overlayMode(o.getMode(v,C.backdrop||"text/html"),b)}),o.defineMode("vue",function(v){return o.getMode(v,{name:"htmlmixed",tags:p})},"htmlmixed","xml","javascript","coffeescript","css","sass","stylus","pug","handlebars"),o.defineMIME("script/x-vue","vue"),o.defineMIME("text/x-vue","vue")})});var pc=Ke((fc,dc)=>{(function(o){typeof fc=="object"&&typeof dc=="object"?o(We()):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],o):o(CodeMirror)})(function(o){"use strict";o.defineMode("yaml",function(){var p=["true","false","on","off","yes","no"],v=new RegExp("\\b(("+p.join(")|(")+"))$","i");return{token:function(C,b){var k=C.peek(),s=b.escaped;if(b.escaped=!1,k=="#"&&(C.pos==0||/\s/.test(C.string.charAt(C.pos-1))))return C.skipToEnd(),"comment";if(C.match(/^('([^']|\\.)*'?|"([^"]|\\.)*"?)/))return"string";if(b.literal&&C.indentation()>b.keyCol)return C.skipToEnd(),"string";if(b.literal&&(b.literal=!1),C.sol()){if(b.keyCol=0,b.pair=!1,b.pairStart=!1,C.match("---")||C.match("..."))return"def";if(C.match(/\s*-\s+/))return"meta"}if(C.match(/^(\{|\}|\[|\])/))return k=="{"?b.inlinePairs++:k=="}"?b.inlinePairs--:k=="["?b.inlineList++:b.inlineList--,"meta";if(b.inlineList>0&&!s&&k==",")return C.next(),"meta";if(b.inlinePairs>0&&!s&&k==",")return b.keyCol=0,b.pair=!1,b.pairStart=!1,C.next(),"meta";if(b.pairStart){if(C.match(/^\s*(\||\>)\s*/))return b.literal=!0,"meta";if(C.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i))return"variable-2";if(b.inlinePairs==0&&C.match(/^\s*-?[0-9\.\,]+\s?$/)||b.inlinePairs>0&&C.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/))return"number";if(C.match(v))return"keyword"}return!b.pair&&C.match(/^\s*(?:[,\[\]{}&*!|>'"%@`][^\s'":]|[^\s,\[\]{}#&*!|>'"%@`])[^#:]*(?=:($|\s))/)?(b.pair=!0,b.keyCol=C.indentation(),"atom"):b.pair&&C.match(/^:\s*/)?(b.pairStart=!0,"meta"):(b.pairStart=!1,b.escaped=k=="\\",C.next(),null)},startState:function(){return{pair:!1,pairStart:!1,keyCol:0,inlinePairs:0,inlineList:0,literal:!1,escaped:!1}},lineComment:"#",fold:"indent"}}),o.defineMIME("text/x-yaml","yaml"),o.defineMIME("text/yaml","yaml")})});var $d={};function qd(o){for(var p;(p=Md.exec(o))!==null;){var v=p[0];if(v.indexOf("target=")===-1){var C=v.replace(/>$/,' target="_blank">');o=o.replace(v,C)}}return o}function Id(o){for(var p=new DOMParser,v=p.parseFromString(o,"text/html"),C=v.getElementsByTagName("li"),b=0;b0){for(var d=document.createElement("i"),T=0;T=0&&(w=s.getLineHandle(d),!v(w));d--);var R=s.getTokenAt({line:d,ch:1}),M=C(R).fencedChars,H,Z,ee,re;v(s.getLineHandle(g.line))?(H="",Z=g.line):v(s.getLineHandle(g.line-1))?(H="",Z=g.line-1):(H=M+` -`,Z=g.line),v(s.getLineHandle(h.line))?(ee="",re=h.line,h.ch===0&&(re+=1)):h.ch!==0&&v(s.getLineHandle(h.line+1))?(ee="",re=h.line+1):(ee=M+` -`,re=h.line+1),h.ch===0&&(re-=1),s.operation(function(){s.replaceRange(ee,{line:re,ch:0},{line:re+(ee?0:1),ch:0}),s.replaceRange(H,{line:Z,ch:0},{line:Z+(H?0:1),ch:0})}),s.setSelection({line:Z+(H?1:0),ch:0},{line:re+(H?1:-1),ch:0}),s.focus()}else{var N=g.line;if(v(s.getLineHandle(g.line))&&(b(s,g.line+1)==="fenced"?(d=g.line,N=g.line+1):(T=g.line,N=g.line-1)),d===void 0)for(d=N;d>=0&&(w=s.getLineHandle(d),!v(w));d--);if(T===void 0)for(E=s.lineCount(),T=N;T=0;d--)if(w=s.getLineHandle(d),!w.text.match(/^\s*$/)&&b(s,d,w)!=="indented"){d+=1;break}for(E=s.lineCount(),T=g.line;T\s+/,"unordered-list":C,"ordered-list":C},S=function(E,z){var y={quote:">","unordered-list":v,"ordered-list":"%%i."};return y[E].replace("%%i",z)},w=function(E,z){var y={quote:">","unordered-list":"\\"+v,"ordered-list":"\\d+."},R=new RegExp(y[E]);return z&&R.test(z)},c=function(E,z,y){var R=C.exec(z),M=S(E,d);return R!==null?(w(E,R[2])&&(M=""),z=R[1]+M+R[3]+z.replace(b,"").replace(h[E],"$1")):y==!1&&(z=M+" "+z),z},d=1,T=s.line;T<=g.line;T++)(function(E){var z=o.getLine(E);k[p]?z=z.replace(h[p],"$1"):(p=="unordered-list"&&(z=c("ordered-list",z,!0)),z=c(p,z,!1),d+=1),o.replaceRange(z,{line:E,ch:0},{line:E,ch:99999999999999})})(T);o.focus()}}function xc(o,p,v,C){if(!(!o.codemirror||o.isPreviewActive())){var b=o.codemirror,k=Tr(b),s=k[p];if(!s){Rr(b,s,v,C);return}var g=b.getCursor("start"),h=b.getCursor("end"),S=b.getLine(g.line),w=S.slice(0,g.ch),c=S.slice(g.ch);p=="link"?w=w.replace(/(.*)[^!]\[/,"$1"):p=="image"&&(w=w.replace(/(.*)!\[$/,"$1")),c=c.replace(/]\(.*?\)/,""),b.replaceRange(w+c,{line:g.line,ch:0},{line:g.line,ch:99999999999999}),g.ch-=v[0].length,g!==h&&(h.ch-=v[0].length),b.setSelection(g,h),b.focus()}}function sa(o,p,v,C){if(!(!o.codemirror||o.isPreviewActive())){C=typeof C>"u"?v:C;var b=o.codemirror,k=Tr(b),s,g=v,h=C,S=b.getCursor("start"),w=b.getCursor("end");k[p]?(s=b.getLine(S.line),g=s.slice(0,S.ch),h=s.slice(S.ch),p=="bold"?(g=g.replace(/(\*\*|__)(?![\s\S]*(\*\*|__))/,""),h=h.replace(/(\*\*|__)/,"")):p=="italic"?(g=g.replace(/(\*|_)(?![\s\S]*(\*|_))/,""),h=h.replace(/(\*|_)/,"")):p=="strikethrough"&&(g=g.replace(/(\*\*|~~)(?![\s\S]*(\*\*|~~))/,""),h=h.replace(/(\*\*|~~)/,"")),b.replaceRange(g+h,{line:S.line,ch:0},{line:S.line,ch:99999999999999}),p=="bold"||p=="strikethrough"?(S.ch-=2,S!==w&&(w.ch-=2)):p=="italic"&&(S.ch-=1,S!==w&&(w.ch-=1))):(s=b.getSelection(),p=="bold"?(s=s.split("**").join(""),s=s.split("__").join("")):p=="italic"?(s=s.split("*").join(""),s=s.split("_").join("")):p=="strikethrough"&&(s=s.split("~~").join("")),b.replaceSelection(g+s+h),S.ch+=v.length,w.ch=S.ch+s.length),b.setSelection(S,w),b.focus()}}function Pd(o){if(!o.getWrapperElement().lastChild.classList.contains("editor-preview-active"))for(var p=o.getCursor("start"),v=o.getCursor("end"),C,b=p.line;b<=v.line;b++)C=o.getLine(b),C=C.replace(/^[ ]*([# ]+|\*|-|[> ]+|[0-9]+(.|\)))[ ]*/,""),o.replaceRange(C,{line:b,ch:0},{line:b,ch:99999999999999})}function Ii(o,p){if(Math.abs(o)<1024)return""+o+p[0];var v=0;do o/=1024,++v;while(Math.abs(o)>=1024&&v=19968?C+=v[b].length:C+=1;return C}function Te(o){o=o||{},o.parent=this;var p=!0;if(o.autoDownloadFontAwesome===!1&&(p=!1),o.autoDownloadFontAwesome!==!0)for(var v=document.styleSheets,C=0;C-1&&(p=!1);if(p){var b=document.createElement("link");b.rel="stylesheet",b.href="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css",document.getElementsByTagName("head")[0].appendChild(b)}if(o.element)this.element=o.element;else if(o.element===null){console.log("EasyMDE: Error. No element was found.");return}if(o.toolbar===void 0){o.toolbar=[];for(var k in Pr)Object.prototype.hasOwnProperty.call(Pr,k)&&(k.indexOf("separator-")!=-1&&o.toolbar.push("|"),(Pr[k].default===!0||o.showIcons&&o.showIcons.constructor===Array&&o.showIcons.indexOf(k)!=-1)&&o.toolbar.push(k))}if(Object.prototype.hasOwnProperty.call(o,"previewClass")||(o.previewClass="editor-preview"),Object.prototype.hasOwnProperty.call(o,"status")||(o.status=["autosave","lines","words","cursor"],o.uploadImage&&o.status.unshift("upload-image")),o.previewRender||(o.previewRender=function(g){return this.parent.markdown(g)}),o.parsingConfig=fr({highlightFormatting:!0},o.parsingConfig||{}),o.insertTexts=fr({},jd,o.insertTexts||{}),o.promptTexts=fr({},Rd,o.promptTexts||{}),o.blockStyles=fr({},Bd,o.blockStyles||{}),o.autosave!=null&&(o.autosave.timeFormat=fr({},Hd,o.autosave.timeFormat||{})),o.iconClassMap=fr({},et,o.iconClassMap||{}),o.shortcuts=fr({},Ad,o.shortcuts||{}),o.maxHeight=o.maxHeight||void 0,o.direction=o.direction||"ltr",typeof o.maxHeight<"u"?o.minHeight=o.maxHeight:o.minHeight=o.minHeight||"300px",o.errorCallback=o.errorCallback||function(g){alert(g)},o.uploadImage=o.uploadImage||!1,o.imageMaxSize=o.imageMaxSize||2097152,o.imageAccept=o.imageAccept||"image/png, image/jpeg, image/gif, image/avif",o.imageTexts=fr({},Wd,o.imageTexts||{}),o.errorMessages=fr({},Ud,o.errorMessages||{}),o.imagePathAbsolute=o.imagePathAbsolute||!1,o.imageCSRFName=o.imageCSRFName||"csrfmiddlewaretoken",o.imageCSRFHeader=o.imageCSRFHeader||!1,o.autosave!=null&&o.autosave.unique_id!=null&&o.autosave.unique_id!=""&&(o.autosave.uniqueId=o.autosave.unique_id),o.overlayMode&&o.overlayMode.combine===void 0&&(o.overlayMode.combine=!0),this.options=o,this.render(),o.initialValue&&(!this.options.autosave||this.options.autosave.foundSavedValue!==!0)&&this.value(o.initialValue),o.uploadImage){var s=this;this.codemirror.on("dragenter",function(g,h){s.updateStatusBar("upload-image",s.options.imageTexts.sbOnDragEnter),h.stopPropagation(),h.preventDefault()}),this.codemirror.on("dragend",function(g,h){s.updateStatusBar("upload-image",s.options.imageTexts.sbInit),h.stopPropagation(),h.preventDefault()}),this.codemirror.on("dragleave",function(g,h){s.updateStatusBar("upload-image",s.options.imageTexts.sbInit),h.stopPropagation(),h.preventDefault()}),this.codemirror.on("dragover",function(g,h){s.updateStatusBar("upload-image",s.options.imageTexts.sbOnDragEnter),h.stopPropagation(),h.preventDefault()}),this.codemirror.on("drop",function(g,h){h.stopPropagation(),h.preventDefault(),o.imageUploadFunction?s.uploadImagesUsingCustomFunction(o.imageUploadFunction,h.dataTransfer.files):s.uploadImages(h.dataTransfer.files)}),this.codemirror.on("paste",function(g,h){o.imageUploadFunction?s.uploadImagesUsingCustomFunction(o.imageUploadFunction,h.clipboardData.files):s.uploadImages(h.clipboardData.files)})}}function kc(){if(typeof localStorage=="object")try{localStorage.setItem("smde_localStorage",1),localStorage.removeItem("smde_localStorage")}catch{return!1}else return!1;return!0}var mc,Md,Vn,Ad,Dd,ra,hc,et,Pr,jd,Rd,Hd,Bd,Wd,Ud,wc=Cd(()=>{mc=/Mac/.test(navigator.platform),Md=new RegExp(/()+?/g),Vn={toggleBold:Fi,toggleItalic:Ni,drawLink:Gi,toggleHeadingSmaller:Jn,toggleHeadingBigger:Ri,drawImage:Zi,toggleBlockquote:ji,toggleOrderedList:$i,toggleUnorderedList:Ui,toggleCodeBlock:Pi,togglePreview:Ji,toggleStrikethrough:Oi,toggleHeading1:Hi,toggleHeading2:Bi,toggleHeading3:Wi,toggleHeading4:na,toggleHeading5:ia,toggleHeading6:oa,cleanBlock:Ki,drawTable:Xi,drawHorizontalRule:Yi,undo:Qi,redo:Vi,toggleSideBySide:bn,toggleFullScreen:jr},Ad={toggleBold:"Cmd-B",toggleItalic:"Cmd-I",drawLink:"Cmd-K",toggleHeadingSmaller:"Cmd-H",toggleHeadingBigger:"Shift-Cmd-H",toggleHeading1:"Ctrl+Alt+1",toggleHeading2:"Ctrl+Alt+2",toggleHeading3:"Ctrl+Alt+3",toggleHeading4:"Ctrl+Alt+4",toggleHeading5:"Ctrl+Alt+5",toggleHeading6:"Ctrl+Alt+6",cleanBlock:"Cmd-E",drawImage:"Cmd-Alt-I",toggleBlockquote:"Cmd-'",toggleOrderedList:"Cmd-Alt-L",toggleUnorderedList:"Cmd-L",toggleCodeBlock:"Cmd-Alt-C",togglePreview:"Cmd-P",toggleSideBySide:"F9",toggleFullScreen:"F11"},Dd=function(o){for(var p in Vn)if(Vn[p]===o)return p;return null},ra=function(){var o=!1;return function(p){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(p)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(p.substr(0,4)))&&(o=!0)}(navigator.userAgent||navigator.vendor||window.opera),o};hc="";et={bold:"fa fa-bold",italic:"fa fa-italic",strikethrough:"fa fa-strikethrough",heading:"fa fa-header fa-heading","heading-smaller":"fa fa-header fa-heading header-smaller","heading-bigger":"fa fa-header fa-heading header-bigger","heading-1":"fa fa-header fa-heading header-1","heading-2":"fa fa-header fa-heading header-2","heading-3":"fa fa-header fa-heading header-3",code:"fa fa-code",quote:"fa fa-quote-left","ordered-list":"fa fa-list-ol","unordered-list":"fa fa-list-ul","clean-block":"fa fa-eraser",link:"fa fa-link",image:"fa fa-image","upload-image":"fa fa-image",table:"fa fa-table","horizontal-rule":"fa fa-minus",preview:"fa fa-eye","side-by-side":"fa fa-columns",fullscreen:"fa fa-arrows-alt",guide:"fa fa-question-circle",undo:"fa fa-undo",redo:"fa fa-repeat fa-redo"},Pr={bold:{name:"bold",action:Fi,className:et.bold,title:"Bold",default:!0},italic:{name:"italic",action:Ni,className:et.italic,title:"Italic",default:!0},strikethrough:{name:"strikethrough",action:Oi,className:et.strikethrough,title:"Strikethrough"},heading:{name:"heading",action:Jn,className:et.heading,title:"Heading",default:!0},"heading-smaller":{name:"heading-smaller",action:Jn,className:et["heading-smaller"],title:"Smaller Heading"},"heading-bigger":{name:"heading-bigger",action:Ri,className:et["heading-bigger"],title:"Bigger Heading"},"heading-1":{name:"heading-1",action:Hi,className:et["heading-1"],title:"Big Heading"},"heading-2":{name:"heading-2",action:Bi,className:et["heading-2"],title:"Medium Heading"},"heading-3":{name:"heading-3",action:Wi,className:et["heading-3"],title:"Small Heading"},"separator-1":{name:"separator-1"},code:{name:"code",action:Pi,className:et.code,title:"Code"},quote:{name:"quote",action:ji,className:et.quote,title:"Quote",default:!0},"unordered-list":{name:"unordered-list",action:Ui,className:et["unordered-list"],title:"Generic List",default:!0},"ordered-list":{name:"ordered-list",action:$i,className:et["ordered-list"],title:"Numbered List",default:!0},"clean-block":{name:"clean-block",action:Ki,className:et["clean-block"],title:"Clean block"},"separator-2":{name:"separator-2"},link:{name:"link",action:Gi,className:et.link,title:"Create Link",default:!0},image:{name:"image",action:Zi,className:et.image,title:"Insert Image",default:!0},"upload-image":{name:"upload-image",action:aa,className:et["upload-image"],title:"Import an image"},table:{name:"table",action:Xi,className:et.table,title:"Insert Table"},"horizontal-rule":{name:"horizontal-rule",action:Yi,className:et["horizontal-rule"],title:"Insert Horizontal Line"},"separator-3":{name:"separator-3"},preview:{name:"preview",action:Ji,className:et.preview,noDisable:!0,title:"Toggle Preview",default:!0},"side-by-side":{name:"side-by-side",action:bn,className:et["side-by-side"],noDisable:!0,noMobile:!0,title:"Toggle Side by Side",default:!0},fullscreen:{name:"fullscreen",action:jr,className:et.fullscreen,noDisable:!0,noMobile:!0,title:"Toggle Fullscreen",default:!0},"separator-4":{name:"separator-4"},guide:{name:"guide",action:"https://www.markdownguide.org/basic-syntax/",className:et.guide,noDisable:!0,title:"Markdown Guide",default:!0},"separator-5":{name:"separator-5"},undo:{name:"undo",action:Qi,className:et.undo,noDisable:!0,title:"Undo"},redo:{name:"redo",action:Vi,className:et.redo,noDisable:!0,title:"Redo"}},jd={link:["[","](#url#)"],image:["![","](#url#)"],uploadedImage:["![](#url#)",""],table:["",` - -| Column 1 | Column 2 | Column 3 | -| -------- | -------- | -------- | -| Text | Text | Text | - -`],horizontalRule:["",` - ------ - -`]},Rd={link:"URL for the link:",image:"URL of the image:"},Hd={locale:"en-US",format:{hour:"2-digit",minute:"2-digit"}},Bd={bold:"**",code:"```",italic:"*"},Wd={sbInit:"Attach files by drag and dropping or pasting from clipboard.",sbOnDragEnter:"Drop image to upload it.",sbOnDrop:"Uploading image #images_names#...",sbProgress:"Uploading #file_name#: #progress#%",sbOnUploaded:"Uploaded #image_name#",sizeUnits:" B, KB, MB"},Ud={noFileGiven:"You must select a file.",typeNotAllowed:"This image type is not allowed.",fileTooLarge:`Image #image_name# is too big (#image_size#). -Maximum file size is #image_max_size#.`,importError:"Something went wrong when uploading the image #image_name#."};Te.prototype.uploadImages=function(o,p,v){if(o.length!==0){for(var C=[],b=0;b=2){var H=M[1];if(p.imagesPreviewHandler){var Z=p.imagesPreviewHandler(M[1]);typeof Z=="string"&&(H=Z)}if(window.EMDEimagesCache[H])T(R,window.EMDEimagesCache[H]);else{var ee=document.createElement("img");ee.onload=function(){window.EMDEimagesCache[H]={naturalWidth:ee.naturalWidth,naturalHeight:ee.naturalHeight,url:H},T(R,window.EMDEimagesCache[H])},ee.src=H}}}})}this.codemirror.on("update",function(){E()}),this.gui.sideBySide=this.createSideBySide(),this._rendered=this.element,(p.autofocus===!0||o.autofocus)&&this.codemirror.focus();var z=this.codemirror;setTimeout(function(){z.refresh()}.bind(z),0)};Te.prototype.cleanup=function(){document.removeEventListener("keydown",this.documentOnKeyDown)};Te.prototype.autosave=function(){if(kc()){var o=this;if(this.options.autosave.uniqueId==null||this.options.autosave.uniqueId==""){console.log("EasyMDE: You must set a uniqueId to use the autosave feature");return}this.options.autosave.binded!==!0&&(o.element.form!=null&&o.element.form!=null&&o.element.form.addEventListener("submit",function(){clearTimeout(o.autosaveTimeoutId),o.autosaveTimeoutId=void 0,localStorage.removeItem("smde_"+o.options.autosave.uniqueId)}),this.options.autosave.binded=!0),this.options.autosave.loaded!==!0&&(typeof localStorage.getItem("smde_"+this.options.autosave.uniqueId)=="string"&&localStorage.getItem("smde_"+this.options.autosave.uniqueId)!=""&&(this.codemirror.setValue(localStorage.getItem("smde_"+this.options.autosave.uniqueId)),this.options.autosave.foundSavedValue=!0),this.options.autosave.loaded=!0);var p=o.value();p!==""?localStorage.setItem("smde_"+this.options.autosave.uniqueId,p):localStorage.removeItem("smde_"+this.options.autosave.uniqueId);var v=document.getElementById("autosaved");if(v!=null&&v!=null&&v!=""){var C=new Date,b=new Intl.DateTimeFormat([this.options.autosave.timeFormat.locale,"en-US"],this.options.autosave.timeFormat.format).format(C),k=this.options.autosave.text==null?"Autosaved: ":this.options.autosave.text;v.innerHTML=k+b}}else console.log("EasyMDE: localStorage not available, cannot autosave")};Te.prototype.clearAutosavedValue=function(){if(kc()){if(this.options.autosave==null||this.options.autosave.uniqueId==null||this.options.autosave.uniqueId==""){console.log("EasyMDE: You must set a uniqueId to clear the autosave value");return}localStorage.removeItem("smde_"+this.options.autosave.uniqueId)}else console.log("EasyMDE: localStorage not available, cannot autosave")};Te.prototype.openBrowseFileWindow=function(o,p){var v=this,C=this.gui.toolbar.getElementsByClassName("imageInput")[0];C.click();function b(k){v.options.imageUploadFunction?v.uploadImagesUsingCustomFunction(v.options.imageUploadFunction,k.target.files):v.uploadImages(k.target.files,o,p),C.removeEventListener("change",b)}C.addEventListener("change",b)};Te.prototype.uploadImage=function(o,p,v){var C=this;p=p||function(S){yc(C,S)};function b(h){C.updateStatusBar("upload-image",h),setTimeout(function(){C.updateStatusBar("upload-image",C.options.imageTexts.sbInit)},1e4),v&&typeof v=="function"&&v(h),C.options.errorCallback(h)}function k(h){var S=C.options.imageTexts.sizeUnits.split(",");return h.replace("#image_name#",o.name).replace("#image_size#",Ii(o.size,S)).replace("#image_max_size#",Ii(C.options.imageMaxSize,S))}if(o.size>this.options.imageMaxSize){b(k(this.options.errorMessages.fileTooLarge));return}var s=new FormData;s.append("image",o),C.options.imageCSRFToken&&!C.options.imageCSRFHeader&&s.append(C.options.imageCSRFName,C.options.imageCSRFToken);var g=new XMLHttpRequest;g.upload.onprogress=function(h){if(h.lengthComputable){var S=""+Math.round(h.loaded*100/h.total);C.updateStatusBar("upload-image",C.options.imageTexts.sbProgress.replace("#file_name#",o.name).replace("#progress#",S))}},g.open("POST",this.options.imageUploadEndpoint),C.options.imageCSRFToken&&C.options.imageCSRFHeader&&g.setRequestHeader(C.options.imageCSRFName,C.options.imageCSRFToken),g.onload=function(){try{var h=JSON.parse(this.responseText)}catch{console.error("EasyMDE: The server did not return a valid json."),b(k(C.options.errorMessages.importError));return}this.status===200&&h&&!h.error&&h.data&&h.data.filePath?p((C.options.imagePathAbsolute?"":window.location.origin+"/")+h.data.filePath):h.error&&h.error in C.options.errorMessages?b(k(C.options.errorMessages[h.error])):h.error?b(k(h.error)):(console.error("EasyMDE: Received an unexpected response after uploading the image."+this.status+" ("+this.statusText+")"),b(k(C.options.errorMessages.importError)))},g.onerror=function(h){console.error("EasyMDE: An unexpected error occurred when trying to upload the image."+h.target.status+" ("+h.target.statusText+")"),b(C.options.errorMessages.importError)},g.send(s)};Te.prototype.uploadImageUsingCustomFunction=function(o,p){var v=this;function C(s){yc(v,s)}function b(s){var g=k(s);v.updateStatusBar("upload-image",g),setTimeout(function(){v.updateStatusBar("upload-image",v.options.imageTexts.sbInit)},1e4),v.options.errorCallback(g)}function k(s){var g=v.options.imageTexts.sizeUnits.split(",");return s.replace("#image_name#",p.name).replace("#image_size#",Ii(p.size,g)).replace("#image_max_size#",Ii(v.options.imageMaxSize,g))}o.apply(this,[p,C,b])};Te.prototype.setPreviewMaxHeight=function(){var o=this.codemirror,p=o.getWrapperElement(),v=p.nextSibling,C=parseInt(window.getComputedStyle(p).paddingTop),b=parseInt(window.getComputedStyle(p).borderTopWidth),k=parseInt(this.options.maxHeight),s=k+C*2+b*2,g=s.toString()+"px";v.style.height=g};Te.prototype.createSideBySide=function(){var o=this.codemirror,p=o.getWrapperElement(),v=p.nextSibling;if(!v||!v.classList.contains("editor-preview-side")){if(v=document.createElement("div"),v.className="editor-preview-side",this.options.previewClass)if(Array.isArray(this.options.previewClass))for(var C=0;C{try{let w=S[S.length-1];if(w.origin==="+input"){let c="(https://)",d=w.text[w.text.length-1];if(d.endsWith(c)&&d!=="[]"+c){let T=w.from,E=w.to,y=w.text.length>1?0:T.ch;setTimeout(()=>{h.setSelection({line:E.line,ch:y+d.lastIndexOf("(")+1},{line:E.line,ch:y+d.lastIndexOf(")")})},25)}}}catch{}}),this.editor.codemirror.on("change",Alpine.debounce(()=>{this.editor&&(this.state=this.editor.value(),o&&this.$wire.call("$refresh"))},v??300)),p&&this.editor.codemirror.on("blur",()=>this.$wire.call("$refresh")),this.$watch("state",()=>{this.editor&&(this.editor.codemirror.hasFocus()||Alpine.raw(this.editor).value(this.state??""))})},destroy:function(){this.editor.cleanup(),this.editor=null},getToolbar:function(){let h=[];return s.includes("bold")&&h.push({name:"bold",action:EasyMDE.toggleBold,title:k.toolbar_buttons?.bold}),s.includes("italic")&&h.push({name:"italic",action:EasyMDE.toggleItalic,title:k.toolbar_buttons?.italic}),s.includes("strike")&&h.push({name:"strikethrough",action:EasyMDE.toggleStrikethrough,title:k.toolbar_buttons?.strike}),s.includes("link")&&h.push({name:"link",action:EasyMDE.drawLink,title:k.toolbar_buttons?.link}),["bold","italic","strike","link"].some(S=>s.includes(S))&&["heading"].some(S=>s.includes(S))&&h.push("|"),s.includes("heading")&&h.push({name:"heading",action:EasyMDE.toggleHeadingSmaller,title:k.toolbar_buttons?.heading}),["heading"].some(S=>s.includes(S))&&["blockquote","codeBlock","bulletList","orderedList"].some(S=>s.includes(S))&&h.push("|"),s.includes("blockquote")&&h.push({name:"quote",action:EasyMDE.toggleBlockquote,title:k.toolbar_buttons?.blockquote}),s.includes("codeBlock")&&h.push({name:"code",action:EasyMDE.toggleCodeBlock,title:k.toolbar_buttons?.code_block}),s.includes("bulletList")&&h.push({name:"unordered-list",action:EasyMDE.toggleUnorderedList,title:k.toolbar_buttons?.bullet_list}),s.includes("orderedList")&&h.push({name:"ordered-list",action:EasyMDE.toggleOrderedList,title:k.toolbar_buttons?.ordered_list}),["blockquote","codeBlock","bulletList","orderedList"].some(S=>s.includes(S))&&["table","attachFiles"].some(S=>s.includes(S))&&h.push("|"),s.includes("table")&&h.push({name:"table",action:EasyMDE.drawTable,title:k.toolbar_buttons?.table}),s.includes("attachFiles")&&h.push({name:"upload-image",action:EasyMDE.drawUploadedImage,title:k.toolbar_buttons?.attach_files}),["table","attachFiles"].some(S=>s.includes(S))&&["undo","redo"].some(S=>s.includes(S))&&h.push("|"),s.includes("undo")&&h.push({name:"undo",action:EasyMDE.undo,title:k.toolbar_buttons?.undo}),s.includes("redo")&&h.push({name:"redo",action:EasyMDE.redo,title:k.toolbar_buttons?.redo}),h}}}export{Kd as default}; diff --git a/vendor/filament/forms/dist/components/rich-editor.js b/vendor/filament/forms/dist/components/rich-editor.js deleted file mode 100644 index ae241fea..00000000 --- a/vendor/filament/forms/dist/components/rich-editor.js +++ /dev/null @@ -1,143 +0,0 @@ -var et=Object.create;var Z=Object.defineProperty;var nt=Object.getOwnPropertyDescriptor;var it=Object.getOwnPropertyNames;var rt=Object.getPrototypeOf,ot=Object.prototype.hasOwnProperty;var st=(I,g)=>()=>(g||I((g={exports:{}}).exports,g),g.exports);var at=(I,g,x,b)=>{if(g&&typeof g=="object"||typeof g=="function")for(let y of it(g))!ot.call(I,y)&&y!==x&&Z(I,y,{get:()=>g[y],enumerable:!(b=nt(g,y))||b.enumerable});return I};var ut=(I,g,x)=>(x=I!=null?et(rt(I)):{},at(g||!I||!I.__esModule?Z(x,"default",{value:I,enumerable:!0}):x,I));var Q=st((q,V)=>{(function(){}).call(q),function(){var I;window.Set==null&&(window.Set=I=function(){function g(){this.clear()}return g.prototype.clear=function(){return this.values=[]},g.prototype.has=function(x){return this.values.indexOf(x)!==-1},g.prototype.add=function(x){return this.has(x)||this.values.push(x),this},g.prototype.delete=function(x){var b;return(b=this.values.indexOf(x))===-1?!1:(this.values.splice(b,1),!0)},g.prototype.forEach=function(){var x;return(x=this.values).forEach.apply(x,arguments)},g}())}.call(q),function(I){function g(){}function x(n,p){return function(){n.apply(p,arguments)}}function b(n){if(typeof this!="object")throw new TypeError("Promises must be constructed via new");if(typeof n!="function")throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],d(n,this)}function y(n,p){for(;n._state===3;)n=n._value;return n._state===0?void n._deferreds.push(p):(n._handled=!0,void u(function(){var c=n._state===1?p.onFulfilled:p.onRejected;if(c===null)return void(n._state===1?h:o)(p.promise,n._value);var v;try{v=c(n._value)}catch(t){return void o(p.promise,t)}h(p.promise,v)}))}function h(n,p){try{if(p===n)throw new TypeError("A promise cannot be resolved with itself.");if(p&&(typeof p=="object"||typeof p=="function")){var c=p.then;if(p instanceof b)return n._state=3,n._value=p,void e(n);if(typeof c=="function")return void d(x(c,p),n)}n._state=1,n._value=p,e(n)}catch(v){o(n,v)}}function o(n,p){n._state=2,n._value=p,e(n)}function e(n){n._state===2&&n._deferreds.length===0&&setTimeout(function(){n._handled||s(n._value)},1);for(var p=0,c=n._deferreds.length;c>p;p++)y(n,n._deferreds[p]);n._deferreds=null}function a(n,p,c){this.onFulfilled=typeof n=="function"?n:null,this.onRejected=typeof p=="function"?p:null,this.promise=c}function d(n,p){var c=!1;try{n(function(v){c||(c=!0,h(p,v))},function(v){c||(c=!0,o(p,v))})}catch(v){if(c)return;c=!0,o(p,v)}}var i=setTimeout,u=typeof setImmediate=="function"&&setImmediate||function(n){i(n,1)},s=function(n){typeof console<"u"&&console&&console.warn("Possible Unhandled Promise Rejection:",n)};b.prototype.catch=function(n){return this.then(null,n)},b.prototype.then=function(n,p){var c=new b(g);return y(this,new a(n,p,c)),c},b.all=function(n){var p=Array.prototype.slice.call(n);return new b(function(c,v){function t(A,f){try{if(f&&(typeof f=="object"||typeof f=="function")){var m=f.then;if(typeof m=="function")return void m.call(f,function(C){t(A,C)},v)}p[A]=f,--r===0&&c(p)}catch(C){v(C)}}if(p.length===0)return c([]);for(var r=p.length,l=0;lv;v++)n[v].then(p,c)})},b._setImmediateFn=function(n){u=n},b._setUnhandledRejectionFn=function(n){s=n},typeof V<"u"&&V.exports?V.exports=b:I.Promise||(I.Promise=b)}(q),function(){var I=typeof window.customElements=="object",g=typeof document.registerElement=="function",x=I||g;x||(typeof WeakMap>"u"&&function(){var b=Object.defineProperty,y=Date.now()%1e9,h=function(){this.name="__st"+(1e9*Math.random()>>>0)+(y+++"__")};h.prototype={set:function(o,e){var a=o[this.name];return a&&a[0]===o?a[1]=e:b(o,this.name,{value:[o,e],writable:!0}),this},get:function(o){var e;return(e=o[this.name])&&e[0]===o?e[1]:void 0},delete:function(o){var e=o[this.name];return e&&e[0]===o?(e[0]=e[1]=void 0,!0):!1},has:function(o){var e=o[this.name];return e?e[0]===o:!1}},window.WeakMap=h}(),function(b){function y(D){C.push(D),m||(m=!0,r(o))}function h(D){return window.ShadowDOMPolyfill&&window.ShadowDOMPolyfill.wrapIfNeeded(D)||D}function o(){m=!1;var D=C;C=[],D.sort(function(E,w){return E.uid_-w.uid_});var R=!1;D.forEach(function(E){var w=E.takeRecords();e(E),w.length&&(E.callback_(w,E),R=!0)}),R&&o()}function e(D){D.nodes_.forEach(function(R){var E=l.get(R);E&&E.forEach(function(w){w.observer===D&&w.removeTransientObservers()})})}function a(D,R){for(var E=D;E;E=E.parentNode){var w=l.get(E);if(w)for(var k=0;k0){var w=R[E-1],k=v(w,D);if(k)return void(R[E-1]=k)}else y(this.observer);R[E]=D},addListeners:function(){this.addListeners_(this.target)},addListeners_:function(D){var R=this.options;R.attributes&&D.addEventListener("DOMAttrModified",this,!0),R.characterData&&D.addEventListener("DOMCharacterDataModified",this,!0),R.childList&&D.addEventListener("DOMNodeInserted",this,!0),(R.childList||R.subtree)&&D.addEventListener("DOMNodeRemoved",this,!0)},removeListeners:function(){this.removeListeners_(this.target)},removeListeners_:function(D){var R=this.options;R.attributes&&D.removeEventListener("DOMAttrModified",this,!0),R.characterData&&D.removeEventListener("DOMCharacterDataModified",this,!0),R.childList&&D.removeEventListener("DOMNodeInserted",this,!0),(R.childList||R.subtree)&&D.removeEventListener("DOMNodeRemoved",this,!0)},addTransientObserver:function(D){if(D!==this.target){this.addListeners_(D),this.transientObservedNodes.push(D);var R=l.get(D);R||l.set(D,R=[]),R.push(this)}},removeTransientObservers:function(){var D=this.transientObservedNodes;this.transientObservedNodes=[],D.forEach(function(R){this.removeListeners_(R);for(var E=l.get(R),w=0;w=0)){s.push(i);for(var n,p=i.querySelectorAll("link[rel="+d+"]"),c=0,v=p.length;v>c&&(n=p[c]);c++)n.import&&a(n.import,u,s);u(i)}}var d=window.HTMLImports?window.HTMLImports.IMPORT_LINK_TYPE:"none";b.forDocumentTree=e,b.forSubtree=y}),window.CustomElements.addModule(function(b){function y(E,w){return h(E,w)||o(E,w)}function h(E,w){return b.upgrade(E,w)?!0:void(w&&d(E))}function o(E,w){m(E,function(k){return h(k,w)?!0:void 0})}function e(E){O.push(E),L||(L=!0,setTimeout(a))}function a(){L=!1;for(var E,w=O,k=0,T=w.length;T>k&&(E=w[k]);k++)E();O=[]}function d(E){S?e(function(){i(E)}):i(E)}function i(E){E.__upgraded__&&!E.__attached&&(E.__attached=!0,E.attachedCallback&&E.attachedCallback())}function u(E){s(E),m(E,function(w){s(w)})}function s(E){S?e(function(){n(E)}):n(E)}function n(E){E.__upgraded__&&E.__attached&&(E.__attached=!1,E.detachedCallback&&E.detachedCallback())}function p(E){for(var w=E,k=window.wrap(document);w;){if(w==k)return!0;w=w.parentNode||w.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&w.host}}function c(E){if(E.shadowRoot&&!E.shadowRoot.__watched){f.dom&&console.log("watching shadow-root for: ",E.localName);for(var w=E.shadowRoot;w;)r(w),w=w.olderShadowRoot}}function v(E,w){if(f.dom){var k=w[0];if(k&&k.type==="childList"&&k.addedNodes&&k.addedNodes){for(var T=k.addedNodes[0];T&&T!==document&&!T.host;)T=T.parentNode;var N=T&&(T.URL||T._URL||T.host&&T.host.localName)||"";N=N.split("/?").shift().split("/").pop()}console.group("mutations (%d) [%s]",w.length,N||"")}var P=p(E);w.forEach(function(_){_.type==="childList"&&(D(_.addedNodes,function(F){F.localName&&y(F,P)}),D(_.removedNodes,function(F){F.localName&&u(F)}))}),f.dom&&console.groupEnd()}function t(E){for(E=window.wrap(E),E||(E=window.wrap(document));E.parentNode;)E=E.parentNode;var w=E.__observer;w&&(v(E,w.takeRecords()),a())}function r(E){if(!E.__observer){var w=new MutationObserver(v.bind(this,E));w.observe(E,{childList:!0,subtree:!0}),E.__observer=w}}function l(E){E=window.wrap(E),f.dom&&console.group("upgradeDocument: ",E.baseURI.split("/").pop());var w=E===window.wrap(document);y(E,w),r(E),f.dom&&console.groupEnd()}function A(E){C(E,l)}var f=b.flags,m=b.forSubtree,C=b.forDocumentTree,S=window.MutationObserver._isPolyfilled&&f["throttle-attached"];b.hasPolyfillMutations=S,b.hasThrottledAttached=S;var L=!1,O=[],D=Array.prototype.forEach.call.bind(Array.prototype.forEach),R=Element.prototype.createShadowRoot;R&&(Element.prototype.createShadowRoot=function(){var E=R.call(this);return window.CustomElements.watchShadow(this),E}),b.watchShadow=c,b.upgradeDocumentTree=A,b.upgradeDocument=l,b.upgradeSubtree=o,b.upgradeAll=y,b.attached=d,b.takeRecords=t}),window.CustomElements.addModule(function(b){function y(i,u){if(i.localName==="template"&&window.HTMLTemplateElement&&HTMLTemplateElement.decorate&&HTMLTemplateElement.decorate(i),!i.__upgraded__&&i.nodeType===Node.ELEMENT_NODE){var s=i.getAttribute("is"),n=b.getRegisteredDefinition(i.localName)||b.getRegisteredDefinition(s);if(n&&(s&&n.tag==i.localName||!s&&!n.extends))return h(i,n,u)}}function h(i,u,s){return d.upgrade&&console.group("upgrade:",i.localName),u.is&&i.setAttribute("is",u.is),o(i,u),i.__upgraded__=!0,a(i),s&&b.attached(i),b.upgradeSubtree(i,s),d.upgrade&&console.groupEnd(),i}function o(i,u){Object.__proto__||e(i,u.prototype,u.native),i.__proto__=u.prototype}function e(i,u,s){for(var n={},p=u;p!==s&&p!==HTMLElement.prototype;){for(var c,v=Object.getOwnPropertyNames(p),t=0;c=v[t];t++)n[c]||(Object.defineProperty(i,c,Object.getOwnPropertyDescriptor(p,c)),n[c]=1);p=Object.getPrototypeOf(p)}}function a(i){i.createdCallback&&i.createdCallback()}var d=b.flags;b.upgrade=y,b.upgradeWithDefinition=h,b.implementPrototype=o}),window.CustomElements.addModule(function(b){function y(E,w){var k=w||{};if(!E)throw new Error("document.registerElement: first argument `name` must not be empty");if(E.indexOf("-")<0)throw new Error("document.registerElement: first argument ('name') must contain a dash ('-'). Argument provided was '"+String(E)+"'.");if(e(E))throw new Error("Failed to execute 'registerElement' on 'Document': Registration failed for type '"+String(E)+"'. The type name is invalid.");if(s(E))throw new Error("DuplicateDefinitionError: a type with name '"+String(E)+"' is already registered");return k.prototype||(k.prototype=Object.create(HTMLElement.prototype)),k.__name=E.toLowerCase(),k.extends&&(k.extends=k.extends.toLowerCase()),k.lifecycle=k.lifecycle||{},k.ancestry=a(k.extends),d(k),i(k),h(k.prototype),n(k.__name,k),k.ctor=p(k),k.ctor.prototype=k.prototype,k.prototype.constructor=k.ctor,b.ready&&l(document),k.ctor}function h(E){if(!E.setAttribute._polyfilled){var w=E.setAttribute;E.setAttribute=function(T,N){o.call(this,T,N,w)};var k=E.removeAttribute;E.removeAttribute=function(T){o.call(this,T,null,k)},E.setAttribute._polyfilled=!0}}function o(E,w,k){E=E.toLowerCase();var T=this.getAttribute(E);k.apply(this,arguments);var N=this.getAttribute(E);this.attributeChangedCallback&&N!==T&&this.attributeChangedCallback(E,T,N)}function e(E){for(var w=0;w=0&&m(T,HTMLElement),T)}function t(E,w){var k=E[w];E[w]=function(){var T=k.apply(this,arguments);return A(T),T}}var r,l=(b.isIE,b.upgradeDocumentTree),A=b.upgradeAll,f=b.upgradeWithDefinition,m=b.implementPrototype,C=b.useNative,S=["annotation-xml","color-profile","font-face","font-face-src","font-face-uri","font-face-format","font-face-name","missing-glyph"],L={},O="http://www.w3.org/1999/xhtml",D=document.createElement.bind(document),R=document.createElementNS.bind(document);r=Object.__proto__||C?function(E,w){return E instanceof w}:function(E,w){if(E instanceof w)return!0;for(var k=E;k;){if(k===w.prototype)return!0;k=k.__proto__}return!1},t(Node.prototype,"cloneNode"),t(document,"importNode"),document.registerElement=y,document.createElement=v,document.createElementNS=c,b.registry=L,b.instanceof=r,b.reservedTagList=S,b.getRegisteredDefinition=s,document.register=document.registerElement}),function(b){function y(){a(window.wrap(document)),window.CustomElements.ready=!0;var u=window.requestAnimationFrame||function(s){setTimeout(s,16)};u(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:!0}))})})}var h=b.useNative,o=b.initializeModules;if(b.isIE,h){var e=function(){};b.watchShadow=e,b.upgrade=e,b.upgradeAll=e,b.upgradeDocumentTree=e,b.upgradeSubtree=e,b.takeRecords=e,b.instanceof=function(u,s){return u instanceof s}}else o();var a=b.upgradeDocumentTree,d=b.upgradeDocument;if(window.wrap||(window.ShadowDOMPolyfill?(window.wrap=window.ShadowDOMPolyfill.wrapIfNeeded,window.unwrap=window.ShadowDOMPolyfill.unwrapIfNeeded):window.wrap=window.unwrap=function(u){return u}),window.HTMLImports&&(window.HTMLImports.__importsParsingHook=function(u){u.import&&d(wrap(u.import))}),document.readyState==="complete"||b.flags.eager)y();else if(document.readyState!=="interactive"||window.attachEvent||window.HTMLImports&&!window.HTMLImports.ready){var i=window.HTMLImports&&!window.HTMLImports.ready?"HTMLImportsLoaded":"DOMContentLoaded";window.addEventListener(i,y)}else y()}(window.CustomElements))}.call(q),function(){}.call(q),function(){var I=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 x,b,y,h;if(typeof InputEvent>"u")return!1;for(h=["data","getTargetRanges","inputType"],x=0,b=h.length;b>x;x++)if(y=h[x],!(y in InputEvent.prototype))return!1;return!0}()},config:{}}}).call(this)}).call(I);var g=I.Trix;(function(){(function(){g.BasicObject=function(){function x(){}var b,y,h;return x.proxyMethod=function(o){var e,a,d,i,u;return d=y(o),e=d.name,i=d.toMethod,u=d.toProperty,a=d.optional,this.prototype[e]=function(){var s,n;return s=i!=null?a?typeof this[i]=="function"?this[i]():void 0:this[i]():u!=null?this[u]:void 0,a?(n=s?.[e],n!=null?b.call(n,s,arguments):void 0):(n=s[e],b.call(n,s,arguments))}},y=function(o){var e,a;if(!(a=o.match(h)))throw new Error("can't parse @proxyMethod expression: "+o);return e={name:a[4]},a[2]!=null?e.toMethod=a[1]:e.toProperty=a[1],a[3]!=null&&(e.optional=!0),e},b=Function.prototype.apply,h=/^(.+?)(\(\))?(\?)?\.(.+?)$/,x}()}).call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.Object=function(y){function h(){this.id=++o}var o;return x(h,y),o=0,h.fromJSONString=function(e){return this.fromJSON(JSON.parse(e))},h.prototype.hasSameConstructorAs=function(e){return this.constructor===e?.constructor},h.prototype.isEqualTo=function(e){return this===e},h.prototype.inspect=function(){var e,a,d;return e=function(){var i,u,s;u=(i=this.contentsForInspection())!=null?i:{},s=[];for(a in u)d=u[a],s.push(a+"="+d);return s}.call(this),"#<"+this.constructor.name+":"+this.id+(e.length?" "+e.join(", "):"")+">"},h.prototype.contentsForInspection=function(){},h.prototype.toJSONString=function(){return JSON.stringify(this)},h.prototype.toUTF16String=function(){return g.UTF16String.box(this)},h.prototype.getCacheKey=function(){return this.id.toString()},h}(g.BasicObject)}.call(this),function(){g.extend=function(x){var b,y;for(b in x)y=x[b],this[b]=y;return this}}.call(this),function(){g.extend({defer:function(x){return setTimeout(x,1)}})}.call(this),function(){var x,b;g.extend({normalizeSpaces:function(y){return y.replace(RegExp(""+g.ZERO_WIDTH_SPACE,"g"),"").replace(RegExp(""+g.NON_BREAKING_SPACE,"g")," ")},normalizeNewlines:function(y){return y.replace(/\r\n/g,` -`)},breakableWhitespacePattern:RegExp("[^\\S"+g.NON_BREAKING_SPACE+"]"),squishBreakableWhitespace:function(y){return y.replace(RegExp(""+g.breakableWhitespacePattern.source,"g")," ").replace(/\ {2,}/g," ")},summarizeStringChange:function(y,h){var o,e,a,d;return y=g.UTF16String.box(y),h=g.UTF16String.box(h),h.lengtho&&y.charAt(o).isEqualTo(h.charAt(o));)o++;for(;e>o+1&&y.charAt(e-1).isEqualTo(h.charAt(a-1));)e--,a--;return{utf16String:y.slice(o,e),offset:o}}}.call(this),function(){g.extend({copyObject:function(x){var b,y,h;x==null&&(x={}),y={};for(b in x)h=x[b],y[b]=h;return y},objectsAreEqual:function(x,b){var y,h;if(x==null&&(x={}),b==null&&(b={}),Object.keys(x).length!==Object.keys(b).length)return!1;for(y in x)if(h=x[y],h!==b[y])return!1;return!0}})}.call(this),function(){var x=[].slice;g.extend({arraysAreEqual:function(b,y){var h,o,e,a;if(b==null&&(b=[]),y==null&&(y=[]),b.length!==y.length)return!1;for(o=h=0,e=b.length;e>h;o=++h)if(a=b[o],a!==y[o])return!1;return!0},arrayStartsWith:function(b,y){return b==null&&(b=[]),y==null&&(y=[]),g.arraysAreEqual(b.slice(0,y.length),y)},spliceArray:function(){var b,y,h;return y=arguments[0],b=2<=arguments.length?x.call(arguments,1):[],h=y.slice(0),h.splice.apply(h,b),h},summarizeArrayChange:function(b,y){var h,o,e,a,d,i,u,s,n,p,c;for(b==null&&(b=[]),y==null&&(y=[]),h=[],p=[],e=new Set,a=0,u=b.length;u>a;a++)c=b[a],e.add(c);for(o=new Set,d=0,s=y.length;s>d;d++)c=y[d],o.add(c),e.has(c)||h.push(c);for(i=0,n=b.length;n>i;i++)c=b[i],o.has(c)||p.push(c);return{added:h,removed:p}}})}.call(this),function(){var x,b,y,h;x=null,b=null,h=null,y=null,g.extend({getAllAttributeNames:function(){return x??(x=g.getTextAttributeNames().concat(g.getBlockAttributeNames()))},getBlockConfig:function(o){return g.config.blockAttributes[o]},getBlockAttributeNames:function(){return b??(b=Object.keys(g.config.blockAttributes))},getTextConfig:function(o){return g.config.textAttributes[o]},getTextAttributeNames:function(){return h??(h=Object.keys(g.config.textAttributes))},getListAttributeNames:function(){var o,e;return y??(y=function(){var a,d;a=g.config.blockAttributes,d=[];for(o in a)e=a[o].listAttribute,e!=null&&d.push(e);return d}())}})}.call(this),function(){var x,b,y,h,o,e=[].indexOf||function(a){for(var d=0,i=this.length;i>d;d++)if(d in this&&this[d]===a)return d;return-1};x=document.documentElement,b=(y=(h=(o=x.matchesSelector)!=null?o:x.webkitMatchesSelector)!=null?h:x.msMatchesSelector)!=null?y:x.mozMatchesSelector,g.extend({handleEvent:function(a,d){var i,u,s,n,p,c,v,t,r,l,A,f;return t=d??{},c=t.onElement,p=t.matchingSelector,f=t.withCallback,n=t.inPhase,v=t.preventDefault,l=t.times,u=c??x,r=p,i=f,A=n==="capturing",s=function(m){var C;return l!=null&&--l===0&&s.destroy(),C=g.findClosestElementFromNode(m.target,{matchingSelector:r}),C!=null&&(f?.call(C,m,C),v)?m.preventDefault():void 0},s.destroy=function(){return u.removeEventListener(a,s,A)},u.addEventListener(a,s,A),s},handleEventOnce:function(a,d){return d==null&&(d={}),d.times=1,g.handleEvent(a,d)},triggerEvent:function(a,d){var i,u,s,n,p,c,v;return v=d??{},c=v.onElement,u=v.bubbles,s=v.cancelable,i=v.attributes,n=c??x,u=u!==!1,s=s!==!1,p=document.createEvent("Events"),p.initEvent(a,u,s),i!=null&&g.extend.call(p,i),n.dispatchEvent(p)},elementMatchesSelector:function(a,d){return a?.nodeType===1?b.call(a,d):void 0},findClosestElementFromNode:function(a,d){var i,u,s;for(u=d??{},i=u.matchingSelector,s=u.untilNode;a!=null&&a.nodeType!==Node.ELEMENT_NODE;)a=a.parentNode;if(a!=null){if(i==null)return a;if(a.closest&&s==null)return a.closest(i);for(;a&&a!==s;){if(g.elementMatchesSelector(a,i))return a;a=a.parentNode}}},findInnerElement:function(a){for(;a?.firstElementChild;)a=a.firstElementChild;return a},innerElementIsActive:function(a){return document.activeElement!==a&&g.elementContainsNode(a,document.activeElement)},elementContainsNode:function(a,d){if(a&&d)for(;d;){if(d===a)return!0;d=d.parentNode}},findNodeFromContainerAndOffset:function(a,d){var i;if(a)return a.nodeType===Node.TEXT_NODE?a:d===0?(i=a.firstChild)!=null?i:a:a.childNodes.item(d-1)},findElementFromContainerAndOffset:function(a,d){var i;return i=g.findNodeFromContainerAndOffset(a,d),g.findClosestElementFromNode(i)},findChildIndexOfNode:function(a){var d;if(a?.parentNode){for(d=0;a=a.previousSibling;)d++;return d}},removeNode:function(a){var d;return a!=null&&(d=a.parentNode)!=null?d.removeChild(a):void 0},walkTree:function(a,d){var i,u,s,n,p;return s=d??{},u=s.onlyNodesOfType,n=s.usingFilter,i=s.expandEntityReferences,p=function(){switch(u){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(a,p,n??null,i===!0)},tagName:function(a){var d;return a!=null&&(d=a.tagName)!=null?d.toLowerCase():void 0},makeElement:function(a,d){var i,u,s,n,p,c,v,t,r,l,A,f,m,C;if(d==null&&(d={}),typeof a=="object"?(d=a,a=d.tagName):d={attributes:d},s=document.createElement(a),d.editable!=null&&(d.attributes==null&&(d.attributes={}),d.attributes.contenteditable=d.editable),d.attributes){r=d.attributes;for(c in r)C=r[c],s.setAttribute(c,C)}if(d.style){l=d.style;for(c in l)C=l[c],s.style[c]=C}if(d.data){A=d.data;for(c in A)C=A[c],s.dataset[c]=C}if(d.className)for(f=d.className.split(" "),n=0,v=f.length;v>n;n++)u=f[n],s.classList.add(u);if(d.textContent&&(s.textContent=d.textContent),d.childNodes)for(m=[].concat(d.childNodes),p=0,t=m.length;t>p;p++)i=m[p],s.appendChild(i);return s},getBlockTagNames:function(){var a,d;return g.blockTagNames!=null?g.blockTagNames:g.blockTagNames=function(){var i,u;i=g.config.blockAttributes,u=[];for(a in i)d=i[a].tagName,d&&u.push(d);return u}()},nodeIsBlockContainer:function(a){return g.nodeIsBlockStartComment(a?.firstChild)},nodeProbablyIsBlockContainer:function(a){var d,i;return d=g.tagName(a),e.call(g.getBlockTagNames(),d)>=0&&(i=g.tagName(a.firstChild),e.call(g.getBlockTagNames(),i)<0)},nodeIsBlockStart:function(a,d){var i;return i=(d??{strict:!0}).strict,i?g.nodeIsBlockStartComment(a):g.nodeIsBlockStartComment(a)||!g.nodeIsBlockStartComment(a.firstChild)&&g.nodeProbablyIsBlockContainer(a)},nodeIsBlockStartComment:function(a){return g.nodeIsCommentNode(a)&&a?.data==="block"},nodeIsCommentNode:function(a){return a?.nodeType===Node.COMMENT_NODE},nodeIsCursorTarget:function(a,d){var i;return i=(d??{}).name,a?g.nodeIsTextNode(a)?a.data===g.ZERO_WIDTH_SPACE?i?a.parentNode.dataset.trixCursorTarget===i:!0:void 0:g.nodeIsCursorTarget(a.firstChild):void 0},nodeIsAttachmentElement:function(a){return g.elementMatchesSelector(a,g.AttachmentView.attachmentSelector)},nodeIsEmptyTextNode:function(a){return g.nodeIsTextNode(a)&&a?.data===""},nodeIsTextNode:function(a){return a?.nodeType===Node.TEXT_NODE}})}.call(this),function(){var x,b,y,h,o;x=g.copyObject,h=g.objectsAreEqual,g.extend({normalizeRange:y=function(e){var a;if(e!=null)return Array.isArray(e)||(e=[e,e]),[b(e[0]),b((a=e[1])!=null?a:e[0])]},rangeIsCollapsed:function(e){var a,d,i;if(e!=null)return d=y(e),i=d[0],a=d[1],o(i,a)},rangesAreEqual:function(e,a){var d,i,u,s,n,p;if(e!=null&&a!=null)return u=y(e),i=u[0],d=u[1],s=y(a),p=s[0],n=s[1],o(i,p)&&o(d,n)}}),b=function(e){return typeof e=="number"?e:x(e)},o=function(e,a){return typeof e=="number"?e===a:h(e,a)}}.call(this),function(){var x,b,y,h,o,e,a;g.registerElement=function(d,i){var u,s;return i==null&&(i={}),d=d.toLowerCase(),i=a(i),s=e(i),(u=s.defaultCSS)&&(delete s.defaultCSS,h(u,d)),o(d,s)},h=function(d,i){var u;return u=y(i),u.textContent=d.replace(/%t/g,i)},y=function(d){var i,u;return i=document.createElement("style"),i.setAttribute("type","text/css"),i.setAttribute("data-tag-name",d.toLowerCase()),(u=x())&&i.setAttribute("nonce",u),document.head.insertBefore(i,document.head.firstChild),i},x=function(){var d;return(d=b("trix-csp-nonce")||b("csp-nonce"))?d.getAttribute("content"):void 0},b=function(d){return document.head.querySelector("meta[name="+d+"]")},e=function(d){var i,u,s;u={};for(i in d)s=d[i],u[i]=typeof s=="function"?{value:s}:s;return u},a=function(){var d;return d=function(i){var u,s,n,p,c;for(u={},c=["initialize","connect","disconnect"],s=0,p=c.length;p>s;s++)n=c[s],u[n]=i[n],delete i[n];return u},window.customElements?function(i){var u,s,n,p,c;return c=d(i),n=c.initialize,u=c.connect,s=c.disconnect,n&&(p=u,u=function(){return this.initialized||(this.initialized=!0,n.call(this)),p?.call(this)}),u&&(i.connectedCallback=u),s&&(i.disconnectedCallback=s),i}:function(i){var u,s,n,p;return p=d(i),n=p.initialize,u=p.connect,s=p.disconnect,n&&(i.createdCallback=n),u&&(i.attachedCallback=u),s&&(i.detachedCallback=s),i}}(),o=function(){return window.customElements?function(d,i){var u;return u=function(){return typeof Reflect=="object"?Reflect.construct(HTMLElement,[],u):HTMLElement.apply(this)},Object.setPrototypeOf(u.prototype,HTMLElement.prototype),Object.setPrototypeOf(u,HTMLElement),Object.defineProperties(u.prototype,i),window.customElements.define(d,u),u}:function(d,i){var u,s;return s=Object.create(HTMLElement.prototype,i),u=document.registerElement(d,{prototype:s}),Object.defineProperty(s,"constructor",{value:u}),u}}()}.call(this),function(){var x,b;g.extend({getDOMSelection:function(){var y;return y=window.getSelection(),y.rangeCount>0?y:void 0},getDOMRange:function(){var y,h;return(y=(h=g.getDOMSelection())!=null?h.getRangeAt(0):void 0)&&!x(y)?y:void 0},setDOMRange:function(y){var h;return h=window.getSelection(),h.removeAllRanges(),h.addRange(y),g.selectionChangeObserver.update()}}),x=function(y){return b(y.startContainer)||b(y.endContainer)},b=function(y){return!Object.getPrototypeOf(y)}}.call(this),function(){var x;x={"application/x-trix-feature-detection":"test"},g.extend({dataTransferIsPlainText:function(b){var y,h,o;return o=b.getData("text/plain"),h=b.getData("text/html"),o&&h?(y=new DOMParser().parseFromString(h,"text/html").body,y.textContent===o?!y.querySelector("*"):void 0):o?.length},dataTransferIsWritable:function(b){var y,h;if(b?.setData!=null){for(y in x)if(h=x[y],!function(){try{return b.setData(y,h),b.getData(y)===h}catch{}}())return;return!0}},keyEventIsKeyboardCommand:function(){return/Mac|^iP/.test(navigator.platform)?function(b){return b.metaKey}:function(b){return b.ctrlKey}}()})}.call(this),function(){g.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 x,b,y,h;return b=g.makeElement("input",{dir:"auto",name:"x",dirName:"x.dir"}),x=g.makeElement("form"),x.appendChild(b),y=function(){try{return new FormData(x).has(b.dirName)}catch{}}(),h=function(){try{return b.matches(":dir(ltr),:dir(rtl)")}catch{}}(),y?function(o){return b.value=o,new FormData(x).get(b.dirName)}:h?function(o){return b.value=o,b.matches(":dir(rtl)")?"rtl":"ltr"}:function(o){var e;return e=o.trim().charAt(0),g.RTL_PATTERN.test(e)?"rtl":"ltr"}}()})}.call(this),function(){}.call(this),function(){var x,b=function(h,o){function e(){this.constructor=h}for(var a in o)y.call(o,a)&&(h[a]=o[a]);return e.prototype=o.prototype,h.prototype=new e,h.__super__=o.prototype,h},y={}.hasOwnProperty;x=g.arraysAreEqual,g.Hash=function(h){function o(s){s==null&&(s={}),this.values=a(s),o.__super__.constructor.apply(this,arguments)}var e,a,d,i,u;return b(o,h),o.fromCommonAttributesOfObjects=function(s){var n,p,c,v,t,r;if(s==null&&(s=[]),!s.length)return new this;for(n=e(s[0]),c=n.getKeys(),r=s.slice(1),p=0,v=r.length;v>p;p++)t=r[p],c=n.getKeysCommonToHash(e(t)),n=n.slice(c);return n},o.box=function(s){return e(s)},o.prototype.add=function(s,n){return this.merge(i(s,n))},o.prototype.remove=function(s){return new g.Hash(a(this.values,s))},o.prototype.get=function(s){return this.values[s]},o.prototype.has=function(s){return s in this.values},o.prototype.merge=function(s){return new g.Hash(d(this.values,u(s)))},o.prototype.slice=function(s){var n,p,c,v;for(v={},n=0,c=s.length;c>n;n++)p=s[n],this.has(p)&&(v[p]=this.values[p]);return new g.Hash(v)},o.prototype.getKeys=function(){return Object.keys(this.values)},o.prototype.getKeysCommonToHash=function(s){var n,p,c,v,t;for(s=e(s),v=this.getKeys(),t=[],n=0,c=v.length;c>n;n++)p=v[n],this.values[p]===s.values[p]&&t.push(p);return t},o.prototype.isEqualTo=function(s){return x(this.toArray(),e(s).toArray())},o.prototype.isEmpty=function(){return this.getKeys().length===0},o.prototype.toArray=function(){var s,n,p;return(this.array!=null?this.array:this.array=function(){var c;n=[],c=this.values;for(s in c)p=c[s],n.push(s,p);return n}.call(this)).slice(0)},o.prototype.toObject=function(){return a(this.values)},o.prototype.toJSON=function(){return this.toObject()},o.prototype.contentsForInspection=function(){return{values:JSON.stringify(this.values)}},i=function(s,n){var p;return p={},p[s]=n,p},d=function(s,n){var p,c,v;c=a(s);for(p in n)v=n[p],c[p]=v;return c},a=function(s,n){var p,c,v,t,r;for(t={},r=Object.keys(s).sort(),p=0,v=r.length;v>p;p++)c=r[p],c!==n&&(t[c]=s[c]);return t},e=function(s){return s instanceof g.Hash?s:new g.Hash(s)},u=function(s){return s instanceof g.Hash?s.values:s},o}(g.Object)}.call(this),function(){g.ObjectGroup=function(){function x(b,y){var h,o;this.objects=b??[],o=y.depth,h=y.asTree,h&&(this.depth=o,this.objects=this.constructor.groupObjects(this.objects,{asTree:h,depth:this.depth+1}))}return x.groupObjects=function(b,y){var h,o,e,a,d,i,u,s,n;for(b==null&&(b=[]),n=y??{},e=n.depth,h=n.asTree,h&&e==null&&(e=0),s=[],d=0,i=b.length;i>d;d++){if(u=b[d],a){if(typeof u.canBeGrouped=="function"&&u.canBeGrouped(e)&&(typeof(o=a[a.length-1]).canBeGroupedWith=="function"&&o.canBeGroupedWith(u,e))){a.push(u);continue}s.push(new this(a,{depth:e,asTree:h})),a=null}typeof u.canBeGrouped=="function"&&u.canBeGrouped(e)?a=[u]:s.push(u)}return a&&s.push(new this(a,{depth:e,asTree:h})),s},x.prototype.getObjects=function(){return this.objects},x.prototype.getDepth=function(){return this.depth},x.prototype.getCacheKey=function(){var b,y,h,o,e;for(y=["objectGroup"],e=this.getObjects(),b=0,h=e.length;h>b;b++)o=e[b],y.push(o.getCacheKey());return y.join("/")},x}()}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.ObjectMap=function(y){function h(o){var e,a,d,i,u;for(o==null&&(o=[]),this.objects={},d=0,i=o.length;i>d;d++)u=o[d],a=JSON.stringify(u),(e=this.objects)[a]==null&&(e[a]=u)}return x(h,y),h.prototype.find=function(o){var e;return e=JSON.stringify(o),this.objects[e]},h}(g.BasicObject)}.call(this),function(){g.ElementStore=function(){function x(y){this.reset(y)}var b;return x.prototype.add=function(y){var h;return h=b(y),this.elements[h]=y},x.prototype.remove=function(y){var h,o;return h=b(y),(o=this.elements[h])?(delete this.elements[h],o):void 0},x.prototype.reset=function(y){var h,o,e;for(y==null&&(y=[]),this.elements={},o=0,e=y.length;e>o;o++)h=y[o],this.add(h);return y},b=function(y){return y.dataset.trixStoreKey},x}()}.call(this),function(){}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.Operation=function(y){function h(){return h.__super__.constructor.apply(this,arguments)}return x(h,y),h.prototype.isPerforming=function(){return this.performing===!0},h.prototype.hasPerformed=function(){return this.performed===!0},h.prototype.hasSucceeded=function(){return this.performed&&this.succeeded},h.prototype.hasFailed=function(){return this.performed&&!this.succeeded},h.prototype.getPromise=function(){return this.promise!=null?this.promise:this.promise=new Promise(function(o){return function(e,a){return o.performing=!0,o.perform(function(d,i){return o.succeeded=d,o.performing=!1,o.performed=!0,o.succeeded?e(i):a(i)})}}(this))},h.prototype.perform=function(o){return o(!1)},h.prototype.release=function(){var o;return(o=this.promise)!=null&&typeof o.cancel=="function"&&o.cancel(),this.promise=null,this.performing=null,this.performed=null,this.succeeded=null},h.proxyMethod("getPromise().then"),h.proxyMethod("getPromise().catch"),h}(g.BasicObject)}.call(this),function(){var x,b,y,h,o,e=function(d,i){function u(){this.constructor=d}for(var s in i)a.call(i,s)&&(d[s]=i[s]);return u.prototype=i.prototype,d.prototype=new u,d.__super__=i.prototype,d},a={}.hasOwnProperty;g.UTF16String=function(d){function i(u,s){this.ucs2String=u,this.codepoints=s,this.length=this.codepoints.length,this.ucs2Length=this.ucs2String.length}return e(i,d),i.box=function(u){return u==null&&(u=""),u instanceof this?u:this.fromUCS2String(u?.toString())},i.fromUCS2String=function(u){return new this(u,h(u))},i.fromCodepoints=function(u){return new this(o(u),u)},i.prototype.offsetToUCS2Offset=function(u){return o(this.codepoints.slice(0,Math.max(0,u))).length},i.prototype.offsetFromUCS2Offset=function(u){return h(this.ucs2String.slice(0,Math.max(0,u))).length},i.prototype.slice=function(){var u;return this.constructor.fromCodepoints((u=this.codepoints).slice.apply(u,arguments))},i.prototype.charAt=function(u){return this.slice(u,u+1)},i.prototype.isEqualTo=function(u){return this.constructor.box(u).ucs2String===this.ucs2String},i.prototype.toJSON=function(){return this.ucs2String},i.prototype.getCacheKey=function(){return this.ucs2String},i.prototype.toString=function(){return this.ucs2String},i}(g.BasicObject),x=(typeof Array.from=="function"?Array.from("\u{1F47C}").length:void 0)===1,b=(typeof" ".codePointAt=="function"?" ".codePointAt(0):void 0)!=null,y=(typeof String.fromCodePoint=="function"?String.fromCodePoint(32,128124):void 0)===" \u{1F47C}",h=x&&b?function(d){return Array.from(d).map(function(i){return i.codePointAt(0)})}:function(d){var i,u,s,n,p;for(n=[],i=0,s=d.length;s>i;)p=d.charCodeAt(i++),p>=55296&&56319>=p&&s>i&&(u=d.charCodeAt(i++),(64512&u)===56320?p=((1023&p)<<10)+(1023&u)+65536:i--),n.push(p);return n},o=y?function(d){return String.fromCodePoint.apply(String,d)}:function(d){var i,u,s;return i=function(){var n,p,c;for(c=[],n=0,p=d.length;p>n;n++)s=d[n],u="",s>65535&&(s-=65536,u+=String.fromCharCode(s>>>10&1023|55296),s=56320|1023&s),c.push(u+String.fromCharCode(s));return c}(),i.join("")}}.call(this),function(){}.call(this),function(){}.call(this),function(){g.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(){g.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 x;g.config.blockAttributes=x={default:{tagName:"div",parse:!1},quote:{tagName:"blockquote",nestable:!0},heading1:{tagName:"h1",terminal:!0,breakOnReturn:!0,group:!1},code:{tagName:"pre",terminal:!0,text:{plaintext:!0}},bulletList:{tagName:"ul",parse:!1},bullet:{tagName:"li",listAttribute:"bulletList",group:!1,nestable:!0,test:function(b){return g.tagName(b.parentNode)===x[this.listAttribute].tagName}},numberList:{tagName:"ol",parse:!1},number:{tagName:"li",listAttribute:"numberList",group:!1,nestable:!0,test:function(b){return g.tagName(b.parentNode)===x[this.listAttribute].tagName}},attachmentGallery:{tagName:"div",exclusive:!0,terminal:!0,parse:!1,group:!1}}}.call(this),function(){var x,b;x=g.config.lang,b=[x.bytes,x.KB,x.MB,x.GB,x.TB,x.PB],g.config.fileSize={prefix:"IEC",precision:2,formatter:function(y){var h,o,e,a,d;switch(y){case 0:return"0 "+x.bytes;case 1:return"1 "+x.byte;default:return h=function(){switch(this.prefix){case"SI":return 1e3;case"IEC":return 1024}}.call(this),o=Math.floor(Math.log(y)/Math.log(h)),e=y/Math.pow(h,o),a=e.toFixed(this.precision),d=a.replace(/0*$/,"").replace(/\.$/,""),d+" "+b[o]}}}}.call(this),function(){g.config.textAttributes={bold:{tagName:"strong",inheritable:!0,parser:function(x){var b;return b=window.getComputedStyle(x),b.fontWeight==="bold"||b.fontWeight>=600}},italic:{tagName:"em",inheritable:!0,parser:function(x){var b;return b=window.getComputedStyle(x),b.fontStyle==="italic"}},href:{groupTagName:"a",parser:function(x){var b,y,h;return b=g.AttachmentView.attachmentSelector,h="a:not("+b+")",(y=g.findClosestElementFromNode(x,{matchingSelector:h}))?y.getAttribute("href"):void 0}},strike:{tagName:"del",inheritable:!0},frozen:{style:{backgroundColor:"highlight"}}}}.call(this),function(){var x,b,y,h,o;o="[data-trix-serialize=false]",h=["contenteditable","data-trix-id","data-trix-store-key","data-trix-mutable","data-trix-placeholder","tabindex"],b="data-trix-serialized-attributes",y="["+b+"]",x=new RegExp("","g"),g.extend({serializers:{"application/json":function(e){var a;if(e instanceof g.Document)a=e;else{if(!(e instanceof HTMLElement))throw new Error("unserializable object");a=g.Document.fromHTML(e.innerHTML)}return a.toSerializableDocument().toJSONString()},"text/html":function(e){var a,d,i,u,s,n,p,c,v,t,r,l,A,f,m,C,S;if(e instanceof g.Document)u=g.DocumentView.render(e);else{if(!(e instanceof HTMLElement))throw new Error("unserializable object");u=e.cloneNode(!0)}for(f=u.querySelectorAll(o),s=0,v=f.length;v>s;s++)i=f[s],g.removeNode(i);for(n=0,t=h.length;t>n;n++)for(a=h[n],m=u.querySelectorAll("["+a+"]"),p=0,r=m.length;r>p;p++)i=m[p],i.removeAttribute(a);for(C=u.querySelectorAll(y),c=0,l=C.length;l>c;c++){i=C[c];try{d=JSON.parse(i.getAttribute(b)),i.removeAttribute(b);for(A in d)S=d[A],i.setAttribute(A,S)}catch{}}return u.innerHTML.replace(x,"")}},deserializers:{"application/json":function(e){return g.Document.fromJSONString(e)},"text/html":function(e){return g.Document.fromHTML(e)}},serializeToContentType:function(e,a){var d;if(d=g.serializers[a])return d(e);throw new Error("unknown content type: "+a)},deserializeFromContentType:function(e,a){var d;if(d=g.deserializers[a])return d(e);throw new Error("unknown content type: "+a)}})}.call(this),function(){var x;x=g.config.lang,g.config.toolbar={getDefaultHTML:function(){return`
    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    `}}}.call(this),function(){g.config.undoInterval=5e3}.call(this),function(){g.config.attachments={preview:{presentation:"gallery",caption:{name:!0,size:!0}},file:{caption:{size:!0}}}}.call(this),function(){g.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(){g.config.input={level2Enabled:!0,getLevel:function(){return this.level2Enabled&&g.browser.supportsInputEvents?2:0},pickFiles:function(x){var b;return b=g.makeElement("input",{type:"file",multiple:!0,hidden:!0,id:this.fileInputId}),b.addEventListener("change",function(){return x(b.files),g.removeNode(b)}),g.removeNode(document.getElementById(this.fileInputId)),document.body.appendChild(b),b.click()},fileInputId:"trix-file-input-"+Date.now().toString(16)}}.call(this),function(){}.call(this),function(){g.registerElement("trix-toolbar",{defaultCSS:`%t { - display: block; -} - -%t { - white-space: nowrap; -} - -%t [data-trix-dialog] { - display: none; -} - -%t [data-trix-dialog][data-trix-active] { - display: block; -} - -%t [data-trix-dialog] [data-trix-validate]:invalid { - background-color: #ffdddd; -}`,initialize:function(){return this.innerHTML===""?this.innerHTML=g.config.toolbar.getDefaultHTML():void 0}})}.call(this),function(){var x=function(h,o){function e(){this.constructor=h}for(var a in o)b.call(o,a)&&(h[a]=o[a]);return e.prototype=o.prototype,h.prototype=new e,h.__super__=o.prototype,h},b={}.hasOwnProperty,y=[].indexOf||function(h){for(var o=0,e=this.length;e>o;o++)if(o in this&&this[o]===h)return o;return-1};g.ObjectView=function(h){function o(e,a){this.object=e,this.options=a??{},this.childViews=[],this.rootView=this}return x(o,h),o.prototype.getNodes=function(){var e,a,d,i,u;for(this.nodes==null&&(this.nodes=this.createNodes()),i=this.nodes,u=[],e=0,a=i.length;a>e;e++)d=i[e],u.push(d.cloneNode(!0));return u},o.prototype.invalidate=function(){var e;return this.nodes=null,this.childViews=[],(e=this.parentView)!=null?e.invalidate():void 0},o.prototype.invalidateViewForObject=function(e){var a;return(a=this.findViewForObject(e))!=null?a.invalidate():void 0},o.prototype.findOrCreateCachedChildView=function(e,a){var d;return(d=this.getCachedViewForObject(a))?this.recordChildView(d):(d=this.createChildView.apply(this,arguments),this.cacheViewForObject(d,a)),d},o.prototype.createChildView=function(e,a,d){var i;return d==null&&(d={}),a instanceof g.ObjectGroup&&(d.viewClass=e,e=g.ObjectGroupView),i=new e(a,d),this.recordChildView(i)},o.prototype.recordChildView=function(e){return e.parentView=this,e.rootView=this.rootView,this.childViews.push(e),e},o.prototype.getAllChildViews=function(){var e,a,d,i,u;for(u=[],i=this.childViews,a=0,d=i.length;d>a;a++)e=i[a],u.push(e),u=u.concat(e.getAllChildViews());return u},o.prototype.findElement=function(){return this.findElementForObject(this.object)},o.prototype.findElementForObject=function(e){var a;return(a=e?.id)?this.rootView.element.querySelector("[data-trix-id='"+a+"']"):void 0},o.prototype.findViewForObject=function(e){var a,d,i,u;for(i=this.getAllChildViews(),a=0,d=i.length;d>a;a++)if(u=i[a],u.object===e)return u},o.prototype.getViewCache=function(){return this.rootView!==this?this.rootView.getViewCache():this.isViewCachingEnabled()?this.viewCache!=null?this.viewCache:this.viewCache={}:void 0},o.prototype.isViewCachingEnabled=function(){return this.shouldCacheViews!==!1},o.prototype.enableViewCaching=function(){return this.shouldCacheViews=!0},o.prototype.disableViewCaching=function(){return this.shouldCacheViews=!1},o.prototype.getCachedViewForObject=function(e){var a;return(a=this.getViewCache())!=null?a[e.getCacheKey()]:void 0},o.prototype.cacheViewForObject=function(e,a){var d;return(d=this.getViewCache())!=null?d[a.getCacheKey()]=e:void 0},o.prototype.garbageCollectCachedViews=function(){var e,a,d,i,u,s;if(e=this.getViewCache()){s=this.getAllChildViews().concat(this),d=function(){var n,p,c;for(c=[],n=0,p=s.length;p>n;n++)u=s[n],c.push(u.object.getCacheKey());return c}(),i=[];for(a in e)y.call(d,a)<0&&i.push(delete e[a]);return i}},o}(g.BasicObject)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.ObjectGroupView=function(y){function h(){h.__super__.constructor.apply(this,arguments),this.objectGroup=this.object,this.viewClass=this.options.viewClass,delete this.options.viewClass}return x(h,y),h.prototype.getChildViews=function(){var o,e,a,d;if(!this.childViews.length)for(d=this.objectGroup.getObjects(),o=0,e=d.length;e>o;o++)a=d[o],this.findOrCreateCachedChildView(this.viewClass,a,this.options);return this.childViews},h.prototype.createNodes=function(){var o,e,a,d,i,u,s,n,p;for(o=this.createContainerElement(),s=this.getChildViews(),e=0,d=s.length;d>e;e++)for(p=s[e],n=p.getNodes(),a=0,i=n.length;i>a;a++)u=n[a],o.appendChild(u);return[o]},h.prototype.createContainerElement=function(o){return o==null&&(o=this.objectGroup.getDepth()),this.getChildViews()[0].createContainerElement(o)},h}(g.ObjectView)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.Controller=function(y){function h(){return h.__super__.constructor.apply(this,arguments)}return x(h,y),h}(g.BasicObject)}.call(this),function(){var x,b,y,h,o,e,a=function(s,n){return function(){return s.apply(n,arguments)}},d=function(s,n){function p(){this.constructor=s}for(var c in n)i.call(n,c)&&(s[c]=n[c]);return p.prototype=n.prototype,s.prototype=new p,s.__super__=n.prototype,s},i={}.hasOwnProperty,u=[].indexOf||function(s){for(var n=0,p=this.length;p>n;n++)if(n in this&&this[n]===s)return n;return-1};x=g.findClosestElementFromNode,y=g.nodeIsEmptyTextNode,b=g.nodeIsBlockStartComment,h=g.normalizeSpaces,o=g.summarizeStringChange,e=g.tagName,g.MutationObserver=function(s){function n(r){this.element=r,this.didMutate=a(this.didMutate,this),this.observer=new window.MutationObserver(this.didMutate),this.start()}var p,c,v,t;return d(n,s),c="data-trix-mutable",v="["+c+"]",t={attributes:!0,childList:!0,characterData:!0,characterDataOldValue:!0,subtree:!0},n.prototype.start=function(){return this.reset(),this.observer.observe(this.element,t)},n.prototype.stop=function(){return this.observer.disconnect()},n.prototype.didMutate=function(r){var l,A;return(l=this.mutations).push.apply(l,this.findSignificantMutations(r)),this.mutations.length?((A=this.delegate)!=null&&typeof A.elementDidMutate=="function"&&A.elementDidMutate(this.getMutationSummary()),this.reset()):void 0},n.prototype.reset=function(){return this.mutations=[]},n.prototype.findSignificantMutations=function(r){var l,A,f,m;for(m=[],l=0,A=r.length;A>l;l++)f=r[l],this.mutationIsSignificant(f)&&m.push(f);return m},n.prototype.mutationIsSignificant=function(r){var l,A,f,m;if(this.nodeIsMutable(r.target))return!1;for(m=this.nodesModifiedByMutation(r),l=0,A=m.length;A>l;l++)if(f=m[l],this.nodeIsSignificant(f))return!0;return!1},n.prototype.nodeIsSignificant=function(r){return r!==this.element&&!this.nodeIsMutable(r)&&!y(r)},n.prototype.nodeIsMutable=function(r){return x(r,{matchingSelector:v})},n.prototype.nodesModifiedByMutation=function(r){var l;switch(l=[],r.type){case"attributes":r.attributeName!==c&&l.push(r.target);break;case"characterData":l.push(r.target.parentNode),l.push(r.target);break;case"childList":l.push.apply(l,r.addedNodes),l.push.apply(l,r.removedNodes)}return l},n.prototype.getMutationSummary=function(){return this.getTextMutationSummary()},n.prototype.getTextMutationSummary=function(){var r,l,A,f,m,C,S,L,O,D,R;for(L=this.getTextChangesFromCharacterData(),A=L.additions,m=L.deletions,R=this.getTextChangesFromChildList(),O=R.additions,C=0,S=O.length;S>C;C++)l=O[C],u.call(A,l)<0&&A.push(l);return m.push.apply(m,R.deletions),D={},(r=A.join(""))&&(D.textAdded=r),(f=m.join(""))&&(D.textDeleted=f),D},n.prototype.getMutationsByType=function(r){var l,A,f,m,C;for(m=this.mutations,C=[],l=0,A=m.length;A>l;l++)f=m[l],f.type===r&&C.push(f);return C},n.prototype.getTextChangesFromChildList=function(){var r,l,A,f,m,C,S,L,O,D,R;for(r=[],S=[],C=this.getMutationsByType("childList"),l=0,f=C.length;f>l;l++)m=C[l],r.push.apply(r,m.addedNodes),S.push.apply(S,m.removedNodes);return L=r.length===0&&S.length===1&&b(S[0]),L?(D=[],R=[` -`]):(D=p(r),R=p(S)),{additions:function(){var E,w,k;for(k=[],A=E=0,w=D.length;w>E;A=++E)O=D[A],O!==R[A]&&k.push(h(O));return k}(),deletions:function(){var E,w,k;for(k=[],A=E=0,w=R.length;w>E;A=++E)O=R[A],O!==D[A]&&k.push(h(O));return k}()}},n.prototype.getTextChangesFromCharacterData=function(){var r,l,A,f,m,C,S,L;return l=this.getMutationsByType("characterData"),l.length&&(L=l[0],A=l[l.length-1],m=h(L.oldValue),f=h(A.target.data),C=o(m,f),r=C.added,S=C.removed),{additions:r?[r]:[],deletions:S?[S]:[]}},p=function(r){var l,A,f,m;for(r==null&&(r=[]),m=[],l=0,A=r.length;A>l;l++)switch(f=r[l],f.nodeType){case Node.TEXT_NODE:m.push(f.data);break;case Node.ELEMENT_NODE:e(f)==="br"?m.push(` -`):m.push.apply(m,p(f.childNodes))}return m},n}(g.BasicObject)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.FileVerificationOperation=function(y){function h(o){this.file=o}return x(h,y),h.prototype.perform=function(o){var e;return e=new FileReader,e.onerror=function(){return o(!1)},e.onload=function(a){return function(){e.onerror=null;try{e.abort()}catch{}return o(!0,a.file)}}(this),e.readAsArrayBuffer(this.file)},h}(g.Operation)}.call(this),function(){var x,b,y=function(o,e){function a(){this.constructor=o}for(var d in e)h.call(e,d)&&(o[d]=e[d]);return a.prototype=e.prototype,o.prototype=new a,o.__super__=e.prototype,o},h={}.hasOwnProperty;x=g.handleEvent,b=g.innerElementIsActive,g.InputController=function(o){function e(a){var d;this.element=a,this.mutationObserver=new g.MutationObserver(this.element),this.mutationObserver.delegate=this;for(d in this.events)x(d,{onElement:this.element,withCallback:this.handlerFor(d)})}return y(e,o),e.prototype.events={},e.prototype.elementDidMutate=function(){},e.prototype.editorWillSyncDocumentView=function(){return this.mutationObserver.stop()},e.prototype.editorDidSyncDocumentView=function(){return this.mutationObserver.start()},e.prototype.requestRender=function(){var a;return(a=this.delegate)!=null&&typeof a.inputControllerDidRequestRender=="function"?a.inputControllerDidRequestRender():void 0},e.prototype.requestReparse=function(){var a;return(a=this.delegate)!=null&&typeof a.inputControllerDidRequestReparse=="function"&&a.inputControllerDidRequestReparse(),this.requestRender()},e.prototype.attachFiles=function(a){var d,i;return i=function(){var u,s,n;for(n=[],u=0,s=a.length;s>u;u++)d=a[u],n.push(new g.FileVerificationOperation(d));return n}(),Promise.all(i).then(function(u){return function(s){return u.handleInput(function(){var n,p;return(n=this.delegate)!=null&&n.inputControllerWillAttachFiles(),(p=this.responder)!=null&&p.insertFiles(s),this.requestRender()})}}(this))},e.prototype.handlerFor=function(a){return function(d){return function(i){return i.defaultPrevented?void 0:d.handleInput(function(){return b(this.element)?void 0:(this.eventName=a,this.events[a].call(this,i))})}}(this)},e.prototype.handleInput=function(a){var d,i;try{return(d=this.delegate)!=null&&d.inputControllerWillHandleInput(),a.call(this)}finally{(i=this.delegate)!=null&&i.inputControllerDidHandleInput()}},e.prototype.createLinkHTML=function(a,d){var i;return i=document.createElement("a"),i.href=a,i.textContent=d??a,i.outerHTML},e}(g.BasicObject)}.call(this),function(){var x,b,y,h,o,e,a,d,i,u,s,n,p,c=function(r,l){function A(){this.constructor=r}for(var f in l)v.call(l,f)&&(r[f]=l[f]);return A.prototype=l.prototype,r.prototype=new A,r.__super__=l.prototype,r},v={}.hasOwnProperty,t=[].indexOf||function(r){for(var l=0,A=this.length;A>l;l++)if(l in this&&this[l]===r)return l;return-1};i=g.makeElement,u=g.objectsAreEqual,p=g.tagName,b=g.browser,a=g.keyEventIsKeyboardCommand,h=g.dataTransferIsWritable,y=g.dataTransferIsPlainText,d=g.config.keyNames,g.Level0InputController=function(r){function l(){l.__super__.constructor.apply(this,arguments),this.resetInputSummary()}var A;return c(l,r),A=0,l.prototype.setInputSummary=function(f){var m,C;f==null&&(f={}),this.inputSummary.eventName=this.eventName;for(m in f)C=f[m],this.inputSummary[m]=C;return this.inputSummary},l.prototype.resetInputSummary=function(){return this.inputSummary={}},l.prototype.reset=function(){return this.resetInputSummary(),g.selectionChangeObserver.reset()},l.prototype.elementDidMutate=function(f){var m;return this.isComposing()?(m=this.delegate)!=null&&typeof m.inputControllerDidAllowUnhandledInput=="function"?m.inputControllerDidAllowUnhandledInput():void 0:this.handleInput(function(){return this.mutationIsSignificant(f)&&(this.mutationIsExpected(f)?this.requestRender():this.requestReparse()),this.reset()})},l.prototype.mutationIsExpected=function(f){var m,C,S,L,O,D,R,E,w,k;return R=f.textAdded,E=f.textDeleted,this.inputSummary.preferDocument?!0:(m=R!=null?R===this.inputSummary.textAdded:!this.inputSummary.textAdded,C=E!=null?this.inputSummary.didDelete:!this.inputSummary.didDelete,w=(R===` -`||R===` -`)&&!m,k=E===` -`&&!C,D=w&&!k||k&&!w,D&&(L=this.getSelectedRange())&&(S=w?R.replace(/\n$/,"").length||-1:R?.length||1,(O=this.responder)!=null?O.positionIsBlockBreak(L[1]+S):void 0)?!0:m&&C)},l.prototype.mutationIsSignificant=function(f){var m,C,S;return S=Object.keys(f).length>0,m=((C=this.compositionInput)!=null?C.getEndData():void 0)==="",S||!m},l.prototype.events={keydown:function(f){var m,C,S,L,O,D,R,E,w;if(this.isComposing()||this.resetInputSummary(),this.inputSummary.didInput=!0,L=d[f.keyCode]){for(C=this.keys,E=["ctrl","alt","shift","meta"],S=0,D=E.length;D>S;S++)R=E[S],f[R+"Key"]&&(R==="ctrl"&&(R="control"),C=C?.[R]);C?.[L]!=null&&(this.setInputSummary({keyName:L}),g.selectionChangeObserver.reset(),C[L].call(this,f))}return a(f)&&(m=String.fromCharCode(f.keyCode).toLowerCase())&&(O=function(){var k,T,N,P;for(N=["alt","shift"],P=[],k=0,T=N.length;T>k;k++)R=N[k],f[R+"Key"]&&P.push(R);return P}(),O.push(m),(w=this.delegate)!=null?w.inputControllerDidReceiveKeyboardCommand(O):void 0)?f.preventDefault():void 0},keypress:function(f){var m,C,S;if(this.inputSummary.eventName==null&&!f.metaKey&&(!f.ctrlKey||f.altKey))return(S=n(f))?((m=this.delegate)!=null&&m.inputControllerWillPerformTyping(),(C=this.responder)!=null&&C.insertString(S),this.setInputSummary({textAdded:S,didDelete:this.selectionIsExpanded()})):void 0},textInput:function(f){var m,C,S,L;return m=f.data,L=this.inputSummary.textAdded,L&&L!==m&&L.toUpperCase()===m?(C=this.getSelectedRange(),this.setSelectedRange([C[0],C[1]+L.length]),(S=this.responder)!=null&&S.insertString(m),this.setInputSummary({textAdded:m}),this.setSelectedRange(C)):void 0},dragenter:function(f){return f.preventDefault()},dragstart:function(f){var m,C;return C=f.target,this.serializeSelectionToDataTransfer(f.dataTransfer),this.draggedRange=this.getSelectedRange(),(m=this.delegate)!=null&&typeof m.inputControllerDidStartDrag=="function"?m.inputControllerDidStartDrag():void 0},dragover:function(f){var m,C;return!this.draggedRange&&!this.canAcceptDataTransfer(f.dataTransfer)||(f.preventDefault(),m={x:f.clientX,y:f.clientY},u(m,this.draggingPoint))?void 0:(this.draggingPoint=m,(C=this.delegate)!=null&&typeof C.inputControllerDidReceiveDragOverPoint=="function"?C.inputControllerDidReceiveDragOverPoint(this.draggingPoint):void 0)},dragend:function(){var f;return(f=this.delegate)!=null&&typeof f.inputControllerDidCancelDrag=="function"&&f.inputControllerDidCancelDrag(),this.draggedRange=null,this.draggingPoint=null},drop:function(f){var m,C,S,L,O,D,R,E,w;return f.preventDefault(),S=(O=f.dataTransfer)!=null?O.files:void 0,L={x:f.clientX,y:f.clientY},(D=this.responder)!=null&&D.setLocationRangeFromPointRange(L),S?.length?this.attachFiles(S):this.draggedRange?((R=this.delegate)!=null&&R.inputControllerWillMoveText(),(E=this.responder)!=null&&E.moveTextFromRange(this.draggedRange),this.draggedRange=null,this.requestRender()):(C=f.dataTransfer.getData("application/x-trix-document"))&&(m=g.Document.fromJSONString(C),(w=this.responder)!=null&&w.insertDocument(m),this.requestRender()),this.draggedRange=null,this.draggingPoint=null},cut:function(f){var m,C;return(m=this.responder)!=null&&m.selectionIsExpanded()&&(this.serializeSelectionToDataTransfer(f.clipboardData)&&f.preventDefault(),(C=this.delegate)!=null&&C.inputControllerWillCutText(),this.deleteInDirection("backward"),f.defaultPrevented)?this.requestRender():void 0},copy:function(f){var m;return(m=this.responder)!=null&&m.selectionIsExpanded()&&this.serializeSelectionToDataTransfer(f.clipboardData)?f.preventDefault():void 0},paste:function(f){var m,C,S,L,O,D,R,E,w,k,T,N,P,_,F,B,M,U,H,z,j,G,K;return m=(E=f.clipboardData)!=null?E:f.testClipboardData,R={clipboard:m},m==null||s(f)?void this.getPastedHTMLUsingHiddenElement(function(J){return function(tt){var $,X,Y;return R.type="text/html",R.html=tt,($=J.delegate)!=null&&$.inputControllerWillPaste(R),(X=J.responder)!=null&&X.insertHTML(R.html),J.requestRender(),(Y=J.delegate)!=null?Y.inputControllerDidPaste(R):void 0}}(this)):((L=m.getData("URL"))?(R.type="text/html",K=(D=m.getData("public.url-name"))?g.squishBreakableWhitespace(D).trim():L,R.html=this.createLinkHTML(L,K),(w=this.delegate)!=null&&w.inputControllerWillPaste(R),this.setInputSummary({textAdded:K,didDelete:this.selectionIsExpanded()}),(F=this.responder)!=null&&F.insertHTML(R.html),this.requestRender(),(B=this.delegate)!=null&&B.inputControllerDidPaste(R)):y(m)?(R.type="text/plain",R.string=m.getData("text/plain"),(M=this.delegate)!=null&&M.inputControllerWillPaste(R),this.setInputSummary({textAdded:R.string,didDelete:this.selectionIsExpanded()}),(U=this.responder)!=null&&U.insertString(R.string),this.requestRender(),(H=this.delegate)!=null&&H.inputControllerDidPaste(R)):(O=m.getData("text/html"))?(R.type="text/html",R.html=O,(z=this.delegate)!=null&&z.inputControllerWillPaste(R),(j=this.responder)!=null&&j.insertHTML(R.html),this.requestRender(),(G=this.delegate)!=null&&G.inputControllerDidPaste(R)):t.call(m.types,"Files")>=0&&(S=(k=m.items)!=null&&(T=k[0])!=null&&typeof T.getAsFile=="function"?T.getAsFile():void 0)&&(!S.name&&(C=o(S))&&(S.name="pasted-file-"+ ++A+"."+C),R.type="File",R.file=S,(N=this.delegate)!=null&&N.inputControllerWillAttachFiles(),(P=this.responder)!=null&&P.insertFile(R.file),this.requestRender(),(_=this.delegate)!=null&&_.inputControllerDidPaste(R)),f.preventDefault())},compositionstart:function(f){return this.getCompositionInput().start(f.data)},compositionupdate:function(f){return this.getCompositionInput().update(f.data)},compositionend:function(f){return this.getCompositionInput().end(f.data)},beforeinput:function(){return this.inputSummary.didInput=!0},input:function(f){return this.inputSummary.didInput=!0,f.stopPropagation()}},l.prototype.keys={backspace:function(f){var m;return(m=this.delegate)!=null&&m.inputControllerWillPerformTyping(),this.deleteInDirection("backward",f)},delete:function(f){var m;return(m=this.delegate)!=null&&m.inputControllerWillPerformTyping(),this.deleteInDirection("forward",f)},return:function(){var f,m;return this.setInputSummary({preferDocument:!0}),(f=this.delegate)!=null&&f.inputControllerWillPerformTyping(),(m=this.responder)!=null?m.insertLineBreak():void 0},tab:function(f){var m,C;return(m=this.responder)!=null&&m.canIncreaseNestingLevel()?((C=this.responder)!=null&&C.increaseNestingLevel(),this.requestRender(),f.preventDefault()):void 0},left:function(f){var m;return this.selectionIsInCursorTarget()?(f.preventDefault(),(m=this.responder)!=null?m.moveCursorInDirection("backward"):void 0):void 0},right:function(f){var m;return this.selectionIsInCursorTarget()?(f.preventDefault(),(m=this.responder)!=null?m.moveCursorInDirection("forward"):void 0):void 0},control:{d:function(f){var m;return(m=this.delegate)!=null&&m.inputControllerWillPerformTyping(),this.deleteInDirection("forward",f)},h:function(f){var m;return(m=this.delegate)!=null&&m.inputControllerWillPerformTyping(),this.deleteInDirection("backward",f)},o:function(f){var m,C;return f.preventDefault(),(m=this.delegate)!=null&&m.inputControllerWillPerformTyping(),(C=this.responder)!=null&&C.insertString(` -`,{updatePosition:!1}),this.requestRender()}},shift:{return:function(f){var m,C;return(m=this.delegate)!=null&&m.inputControllerWillPerformTyping(),(C=this.responder)!=null&&C.insertString(` -`),this.requestRender(),f.preventDefault()},tab:function(f){var m,C;return(m=this.responder)!=null&&m.canDecreaseNestingLevel()?((C=this.responder)!=null&&C.decreaseNestingLevel(),this.requestRender(),f.preventDefault()):void 0},left:function(f){return this.selectionIsInCursorTarget()?(f.preventDefault(),this.expandSelectionInDirection("backward")):void 0},right:function(f){return this.selectionIsInCursorTarget()?(f.preventDefault(),this.expandSelectionInDirection("forward")):void 0}},alt:{backspace:function(){var f;return this.setInputSummary({preferDocument:!1}),(f=this.delegate)!=null?f.inputControllerWillPerformTyping():void 0}},meta:{backspace:function(){var f;return this.setInputSummary({preferDocument:!1}),(f=this.delegate)!=null?f.inputControllerWillPerformTyping():void 0}}},l.prototype.getCompositionInput=function(){return this.isComposing()?this.compositionInput:this.compositionInput=new x(this)},l.prototype.isComposing=function(){return this.compositionInput!=null&&!this.compositionInput.isEnded()},l.prototype.deleteInDirection=function(f,m){var C;return((C=this.responder)!=null?C.deleteInDirection(f):void 0)!==!1?this.setInputSummary({didDelete:!0}):m?(m.preventDefault(),this.requestRender()):void 0},l.prototype.serializeSelectionToDataTransfer=function(f){var m,C;if(h(f))return m=(C=this.responder)!=null?C.getSelectedDocument().toSerializableDocument():void 0,f.setData("application/x-trix-document",JSON.stringify(m)),f.setData("text/html",g.DocumentView.render(m).innerHTML),f.setData("text/plain",m.toString().replace(/\n$/,"")),!0},l.prototype.canAcceptDataTransfer=function(f){var m,C,S,L,O,D;for(D={},L=(S=f?.types)!=null?S:[],m=0,C=L.length;C>m;m++)O=L[m],D[O]=!0;return D.Files||D["application/x-trix-document"]||D["text/html"]||D["text/plain"]},l.prototype.getPastedHTMLUsingHiddenElement=function(f){var m,C,S;return C=this.getSelectedRange(),S={position:"absolute",left:window.pageXOffset+"px",top:window.pageYOffset+"px",opacity:0},m=i({style:S,tagName:"div",editable:!0}),document.body.appendChild(m),m.focus(),requestAnimationFrame(function(L){return function(){var O;return O=m.innerHTML,g.removeNode(m),L.setSelectedRange(C),f(O)}}(this))},l.proxyMethod("responder?.getSelectedRange"),l.proxyMethod("responder?.setSelectedRange"),l.proxyMethod("responder?.expandSelectionInDirection"),l.proxyMethod("responder?.selectionIsInCursorTarget"),l.proxyMethod("responder?.selectionIsExpanded"),l}(g.InputController),o=function(r){var l,A;return(l=r.type)!=null&&(A=l.match(/\/(\w+)$/))!=null?A[1]:void 0},e=(typeof" ".codePointAt=="function"?" ".codePointAt(0):void 0)!=null,n=function(r){var l;return r.key&&e&&r.key.codePointAt(0)===r.keyCode?r.key:(r.which===null?l=r.keyCode:r.which!==0&&r.charCode!==0&&(l=r.charCode),l!=null&&d[l]!=="escape"?g.UTF16String.fromCodepoints([l]).toString():void 0)},s=function(r){var l,A,f,m,C,S,L,O,D,R;if(O=r.clipboardData){if(t.call(O.types,"text/html")>=0){for(D=O.types,f=0,S=D.length;S>f;f++)if(R=D[f],l=/^CorePasteboardFlavorType/.test(R),A=/^dyn\./.test(R)&&O.getData(R),L=l||A)return!0;return!1}return m=t.call(O.types,"com.apple.webarchive")>=0,C=t.call(O.types,"com.apple.flat-rtfd")>=0,m||C}},x=function(r){function l(A){var f;this.inputController=A,f=this.inputController,this.responder=f.responder,this.delegate=f.delegate,this.inputSummary=f.inputSummary,this.data={}}return c(l,r),l.prototype.start=function(A){var f,m;return this.data.start=A,this.isSignificant()?(this.inputSummary.eventName==="keypress"&&this.inputSummary.textAdded&&(f=this.responder)!=null&&f.deleteInDirection("left"),this.selectionIsExpanded()||(this.insertPlaceholder(),this.requestRender()),this.range=(m=this.responder)!=null?m.getSelectedRange():void 0):void 0},l.prototype.update=function(A){var f;return this.data.update=A,this.isSignificant()&&(f=this.selectPlaceholder())?(this.forgetPlaceholder(),this.range=f):void 0},l.prototype.end=function(A){var f,m,C,S;return this.data.end=A,this.isSignificant()?(this.forgetPlaceholder(),this.canApplyToDocument()?(this.setInputSummary({preferDocument:!0,didInput:!1}),(f=this.delegate)!=null&&f.inputControllerWillPerformTyping(),(m=this.responder)!=null&&m.setSelectedRange(this.range),(C=this.responder)!=null&&C.insertString(this.data.end),(S=this.responder)!=null?S.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()},l.prototype.getEndData=function(){return this.data.end},l.prototype.isEnded=function(){return this.getEndData()!=null},l.prototype.isSignificant=function(){return b.composesExistingText?this.inputSummary.didInput:!0},l.prototype.canApplyToDocument=function(){var A,f;return((A=this.data.start)!=null?A.length:void 0)===0&&((f=this.data.end)!=null?f.length:void 0)>0&&this.range!=null},l.proxyMethod("inputController.setInputSummary"),l.proxyMethod("inputController.requestRender"),l.proxyMethod("inputController.requestReparse"),l.proxyMethod("responder?.selectionIsExpanded"),l.proxyMethod("responder?.insertPlaceholder"),l.proxyMethod("responder?.selectPlaceholder"),l.proxyMethod("responder?.forgetPlaceholder"),l}(g.BasicObject)}.call(this),function(){var x,b,y,h=function(d,i){return function(){return d.apply(i,arguments)}},o=function(d,i){function u(){this.constructor=d}for(var s in i)e.call(i,s)&&(d[s]=i[s]);return u.prototype=i.prototype,d.prototype=new u,d.__super__=i.prototype,d},e={}.hasOwnProperty,a=[].indexOf||function(d){for(var i=0,u=this.length;u>i;i++)if(i in this&&this[i]===d)return i;return-1};x=g.dataTransferIsPlainText,b=g.keyEventIsKeyboardCommand,y=g.objectsAreEqual,g.Level2InputController=function(d){function i(){return this.render=h(this.render,this),i.__super__.constructor.apply(this,arguments)}var u,s,n,p,c,v;return o(i,d),i.prototype.elementDidMutate=function(){var t;return this.scheduledRender?this.composing&&(t=this.delegate)!=null&&typeof t.inputControllerDidAllowUnhandledInput=="function"?t.inputControllerDidAllowUnhandledInput():void 0:this.reparse()},i.prototype.scheduleRender=function(){return this.scheduledRender!=null?this.scheduledRender:this.scheduledRender=requestAnimationFrame(this.render)},i.prototype.render=function(){var t;return cancelAnimationFrame(this.scheduledRender),this.scheduledRender=null,this.composing||(t=this.delegate)!=null&&t.render(),typeof this.afterRender=="function"&&this.afterRender(),this.afterRender=null},i.prototype.reparse=function(){var t;return(t=this.delegate)!=null?t.reparse():void 0},i.prototype.events={keydown:function(t){var r,l,A,f;if(b(t)){if(r=s(t),(f=this.delegate)!=null?f.inputControllerDidReceiveKeyboardCommand(r):void 0)return t.preventDefault()}else if(A=t.key,t.altKey&&(A+="+Alt"),t.shiftKey&&(A+="+Shift"),l=this.keys[A])return this.withEvent(t,l)},paste:function(t){var r,l,A,f,m,C,S,L,O;return n(t)?(t.preventDefault(),this.attachFiles(t.clipboardData.files)):p(t)?(t.preventDefault(),l={type:"text/plain",string:t.clipboardData.getData("text/plain")},(A=this.delegate)!=null&&A.inputControllerWillPaste(l),(f=this.responder)!=null&&f.insertString(l.string),this.render(),(m=this.delegate)!=null?m.inputControllerDidPaste(l):void 0):(r=(C=t.clipboardData)!=null?C.getData("URL"):void 0)?(t.preventDefault(),l={type:"text/html",html:this.createLinkHTML(r)},(S=this.delegate)!=null&&S.inputControllerWillPaste(l),(L=this.responder)!=null&&L.insertHTML(l.html),this.render(),(O=this.delegate)!=null?O.inputControllerDidPaste(l):void 0):void 0},beforeinput:function(t){var r;return(r=this.inputTypes[t.inputType])?(this.withEvent(t,r),this.scheduleRender()):void 0},input:function(){return g.selectionChangeObserver.reset()},dragstart:function(t){var r,l;return(r=this.responder)!=null&&r.selectionContainsAttachments()?(t.dataTransfer.setData("application/x-trix-dragging",!0),this.dragging={range:(l=this.responder)!=null?l.getSelectedRange():void 0,point:c(t)}):void 0},dragenter:function(t){return u(t)?t.preventDefault():void 0},dragover:function(t){var r,l;if(this.dragging){if(t.preventDefault(),r=c(t),!y(r,this.dragging.point))return this.dragging.point=r,(l=this.responder)!=null?l.setLocationRangeFromPointRange(r):void 0}else if(u(t))return t.preventDefault()},drop:function(t){var r,l,A,f;return this.dragging?(t.preventDefault(),(l=this.delegate)!=null&&l.inputControllerWillMoveText(),(A=this.responder)!=null&&A.moveTextFromRange(this.dragging.range),this.dragging=null,this.scheduleRender()):u(t)?(t.preventDefault(),r=c(t),(f=this.responder)!=null&&f.setLocationRangeFromPointRange(r),this.attachFiles(t.dataTransfer.files)):void 0},dragend:function(){var t;return this.dragging?((t=this.responder)!=null&&t.setSelectedRange(this.dragging.range),this.dragging=null):void 0},compositionend:function(){return this.composing?(this.composing=!1,this.scheduleRender()):void 0}},i.prototype.keys={ArrowLeft:function(){var t,r;return(t=this.responder)!=null&&t.shouldManageMovingCursorInDirection("backward")?(this.event.preventDefault(),(r=this.responder)!=null?r.moveCursorInDirection("backward"):void 0):void 0},ArrowRight:function(){var t,r;return(t=this.responder)!=null&&t.shouldManageMovingCursorInDirection("forward")?(this.event.preventDefault(),(r=this.responder)!=null?r.moveCursorInDirection("forward"):void 0):void 0},Backspace:function(){var t,r,l;return(t=this.responder)!=null&&t.shouldManageDeletingInDirection("backward")?(this.event.preventDefault(),(r=this.delegate)!=null&&r.inputControllerWillPerformTyping(),(l=this.responder)!=null&&l.deleteInDirection("backward"),this.render()):void 0},Tab:function(){var t,r;return(t=this.responder)!=null&&t.canIncreaseNestingLevel()?(this.event.preventDefault(),(r=this.responder)!=null&&r.increaseNestingLevel(),this.render()):void 0},"Tab+Shift":function(){var t,r;return(t=this.responder)!=null&&t.canDecreaseNestingLevel()?(this.event.preventDefault(),(r=this.responder)!=null&&r.decreaseNestingLevel(),this.render()):void 0}},i.prototype.inputTypes={deleteByComposition:function(){return this.deleteInDirection("backward",{recordUndoEntry:!1})},deleteByCut:function(){return this.deleteInDirection("backward")},deleteByDrag:function(){return this.event.preventDefault(),this.withTargetDOMRange(function(){var t;return this.deleteByDragRange=(t=this.responder)!=null?t.getSelectedRange():void 0})},deleteCompositionText:function(){return this.deleteInDirection("backward",{recordUndoEntry:!1})},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 t;return(t=this.responder)!=null&&t.canIncreaseNestingLevel()?this.withTargetDOMRange(function(){var r;return(r=this.responder)!=null?r.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 t;return(t=this.responder)!=null&&t.canDecreaseNestingLevel()?this.withTargetDOMRange(function(){var r;return(r=this.responder)!=null?r.decreaseNestingLevel():void 0}):void 0},formatRemove:function(){return this.withTargetDOMRange(function(){var t,r,l,A;A=[];for(t in(r=this.responder)!=null?r.getCurrentAttributes():void 0)A.push((l=this.responder)!=null?l.removeCurrentAttribute(t):void 0);return A})},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 t;return(t=this.delegate)!=null?t.inputControllerWillPerformRedo():void 0},historyUndo:function(){var t;return(t=this.delegate)!=null?t.inputControllerWillPerformUndo():void 0},insertCompositionText:function(){return this.composing=!0,this.insertString(this.event.data)},insertFromComposition:function(){return this.composing=!1,this.insertString(this.event.data)},insertFromDrop:function(){var t,r;return(t=this.deleteByDragRange)?(this.deleteByDragRange=null,(r=this.delegate)!=null&&r.inputControllerWillMoveText(),this.withTargetDOMRange(function(){var l;return(l=this.responder)!=null?l.moveTextFromRange(t):void 0})):void 0},insertFromPaste:function(){var t,r,l,A,f,m,C,S,L,O,D;return t=this.event.dataTransfer,f={dataTransfer:t},(r=t.getData("URL"))?(this.event.preventDefault(),f.type="text/html",D=(A=t.getData("public.url-name"))?g.squishBreakableWhitespace(A).trim():r,f.html=this.createLinkHTML(r,D),(m=this.delegate)!=null&&m.inputControllerWillPaste(f),this.withTargetDOMRange(function(){var R;return(R=this.responder)!=null?R.insertHTML(f.html):void 0}),this.afterRender=function(R){return function(){var E;return(E=R.delegate)!=null?E.inputControllerDidPaste(f):void 0}}(this)):x(t)?(f.type="text/plain",f.string=t.getData("text/plain"),(C=this.delegate)!=null&&C.inputControllerWillPaste(f),this.withTargetDOMRange(function(){var R;return(R=this.responder)!=null?R.insertString(f.string):void 0}),this.afterRender=function(R){return function(){var E;return(E=R.delegate)!=null?E.inputControllerDidPaste(f):void 0}}(this)):(l=t.getData("text/html"))?(this.event.preventDefault(),f.type="text/html",f.html=l,(S=this.delegate)!=null&&S.inputControllerWillPaste(f),this.withTargetDOMRange(function(){var R;return(R=this.responder)!=null?R.insertHTML(f.html):void 0}),this.afterRender=function(R){return function(){var E;return(E=R.delegate)!=null?E.inputControllerDidPaste(f):void 0}}(this)):(L=t.files)!=null&&L.length?(f.type="File",f.file=t.files[0],(O=this.delegate)!=null&&O.inputControllerWillPaste(f),this.withTargetDOMRange(function(){var R;return(R=this.responder)!=null?R.insertFile(f.file):void 0}),this.afterRender=function(R){return function(){var E;return(E=R.delegate)!=null?E.inputControllerDidPaste(f):void 0}}(this)):void 0},insertFromYank:function(){return this.insertString(this.event.data)},insertLineBreak:function(){return this.insertString(` -`)},insertLink:function(){return this.activateAttributeIfSupported("href",this.event.data)},insertOrderedList:function(){return this.toggleAttributeIfSupported("number")},insertParagraph:function(){var t;return(t=this.delegate)!=null&&t.inputControllerWillPerformTyping(),this.withTargetDOMRange(function(){var r;return(r=this.responder)!=null?r.insertLineBreak():void 0})},insertReplacementText:function(){return this.insertString(this.event.dataTransfer.getData("text/plain"),{updatePosition:!1})},insertText:function(){var t,r;return this.insertString((t=this.event.data)!=null?t:(r=this.event.dataTransfer)!=null?r.getData("text/plain"):void 0)},insertTranspose:function(){return this.insertString(this.event.data)},insertUnorderedList:function(){return this.toggleAttributeIfSupported("bullet")}},i.prototype.insertString=function(t,r){var l;return t==null&&(t=""),(l=this.delegate)!=null&&l.inputControllerWillPerformTyping(),this.withTargetDOMRange(function(){var A;return(A=this.responder)!=null?A.insertString(t,r):void 0})},i.prototype.toggleAttributeIfSupported=function(t){var r;return a.call(g.getAllAttributeNames(),t)>=0?((r=this.delegate)!=null&&r.inputControllerWillPerformFormatting(t),this.withTargetDOMRange(function(){var l;return(l=this.responder)!=null?l.toggleCurrentAttribute(t):void 0})):void 0},i.prototype.activateAttributeIfSupported=function(t,r){var l;return a.call(g.getAllAttributeNames(),t)>=0?((l=this.delegate)!=null&&l.inputControllerWillPerformFormatting(t),this.withTargetDOMRange(function(){var A;return(A=this.responder)!=null?A.setCurrentAttribute(t,r):void 0})):void 0},i.prototype.deleteInDirection=function(t,r){var l,A,f,m;return f=(r??{recordUndoEntry:!0}).recordUndoEntry,f&&(m=this.delegate)!=null&&m.inputControllerWillPerformTyping(),A=function(C){return function(){var S;return(S=C.responder)!=null?S.deleteInDirection(t):void 0}}(this),(l=this.getTargetDOMRange({minLength:2}))?this.withTargetDOMRange(l,A):A()},i.prototype.withTargetDOMRange=function(t,r){var l;return typeof t=="function"&&(r=t,t=this.getTargetDOMRange()),t?(l=this.responder)!=null?l.withTargetDOMRange(t,r.bind(this)):void 0:(g.selectionChangeObserver.reset(),r.call(this))},i.prototype.getTargetDOMRange=function(t){var r,l,A,f;return A=(t??{minLength:0}).minLength,(f=typeof(r=this.event).getTargetRanges=="function"?r.getTargetRanges():void 0)&&f.length&&(l=v(f[0]),A===0||l.toString().length>=A)?l:void 0},v=function(t){var r;return r=document.createRange(),r.setStart(t.startContainer,t.startOffset),r.setEnd(t.endContainer,t.endOffset),r},i.prototype.withEvent=function(t,r){var l;this.event=t;try{l=r.call(this)}finally{this.event=null}return l},u=function(t){var r,l;return a.call((r=(l=t.dataTransfer)!=null?l.types:void 0)!=null?r:[],"Files")>=0},n=function(t){var r;return(r=t.clipboardData)?a.call(r.types,"Files")>=0&&r.types.length===1&&r.files.length>=1:void 0},p=function(t){var r;return(r=t.clipboardData)?a.call(r.types,"text/plain")>=0&&r.types.length===1:void 0},s=function(t){var r;return r=[],t.altKey&&r.push("alt"),t.shiftKey&&r.push("shift"),r.push(t.key),r},c=function(t){return{x:t.clientX,y:t.clientY}},i}(g.InputController)}.call(this),function(){var x,b,y,h,o,e,a,d,i=function(n,p){return function(){return n.apply(p,arguments)}},u=function(n,p){function c(){this.constructor=n}for(var v in p)s.call(p,v)&&(n[v]=p[v]);return c.prototype=p.prototype,n.prototype=new c,n.__super__=p.prototype,n},s={}.hasOwnProperty;b=g.defer,y=g.handleEvent,e=g.makeElement,d=g.tagName,a=g.config,o=a.lang,x=a.css,h=a.keyNames,g.AttachmentEditorController=function(n){function p(v,t,r,l){this.attachmentPiece=v,this.element=t,this.container=r,this.options=l??{},this.didBlurCaption=i(this.didBlurCaption,this),this.didChangeCaption=i(this.didChangeCaption,this),this.didInputCaption=i(this.didInputCaption,this),this.didKeyDownCaption=i(this.didKeyDownCaption,this),this.didClickActionButton=i(this.didClickActionButton,this),this.didClickToolbar=i(this.didClickToolbar,this),this.attachment=this.attachmentPiece.attachment,d(this.element)==="a"&&(this.element=this.element.firstChild),this.install()}var c;return u(p,n),c=function(v){return function(){var t;return t=v.apply(this,arguments),t.do(),this.undos==null&&(this.undos=[]),this.undos.push(t.undo)}},p.prototype.install=function(){return this.makeElementMutable(),this.addToolbar(),this.attachment.isPreviewable()?this.installCaptionEditor():void 0},p.prototype.uninstall=function(){var v,t;for(this.savePendingCaption();t=this.undos.pop();)t();return(v=this.delegate)!=null?v.didUninstallAttachmentEditor(this):void 0},p.prototype.savePendingCaption=function(){var v,t,r;return this.pendingCaption!=null?(v=this.pendingCaption,this.pendingCaption=null,v?(t=this.delegate)!=null&&typeof t.attachmentEditorDidRequestUpdatingAttributesForAttachment=="function"?t.attachmentEditorDidRequestUpdatingAttributesForAttachment({caption:v},this.attachment):void 0:(r=this.delegate)!=null&&typeof r.attachmentEditorDidRequestRemovingAttributeForAttachment=="function"?r.attachmentEditorDidRequestRemovingAttributeForAttachment("caption",this.attachment):void 0):void 0},p.prototype.makeElementMutable=c(function(){return{do:function(v){return function(){return v.element.dataset.trixMutable=!0}}(this),undo:function(v){return function(){return delete v.element.dataset.trixMutable}}(this)}}),p.prototype.addToolbar=c(function(){var v;return v=e({tagName:"div",className:x.attachmentToolbar,data:{trixMutable:!0},childNodes:e({tagName:"div",className:"trix-button-row",childNodes:e({tagName:"span",className:"trix-button-group trix-button-group--actions",childNodes:e({tagName:"button",className:"trix-button trix-button--remove",textContent:o.remove,attributes:{title:o.remove},data:{trixAction:"remove"}})})})}),this.attachment.isPreviewable()&&v.appendChild(e({tagName:"div",className:x.attachmentMetadataContainer,childNodes:e({tagName:"span",className:x.attachmentMetadata,childNodes:[e({tagName:"span",className:x.attachmentName,textContent:this.attachment.getFilename(),attributes:{title:this.attachment.getFilename()}}),e({tagName:"span",className:x.attachmentSize,textContent:this.attachment.getFormattedFilesize()})]})})),y("click",{onElement:v,withCallback:this.didClickToolbar}),y("click",{onElement:v,matchingSelector:"[data-trix-action]",withCallback:this.didClickActionButton}),{do:function(t){return function(){return t.element.appendChild(v)}}(this),undo:function(){return function(){return g.removeNode(v)}}(this)}}),p.prototype.installCaptionEditor=c(function(){var v,t,r,l,A;return l=e({tagName:"textarea",className:x.attachmentCaptionEditor,attributes:{placeholder:o.captionPlaceholder},data:{trixMutable:!0}}),l.value=this.attachmentPiece.getCaption(),A=l.cloneNode(),A.classList.add("trix-autoresize-clone"),A.tabIndex=-1,v=function(){return A.value=l.value,l.style.height=A.scrollHeight+"px"},y("input",{onElement:l,withCallback:v}),y("input",{onElement:l,withCallback:this.didInputCaption}),y("keydown",{onElement:l,withCallback:this.didKeyDownCaption}),y("change",{onElement:l,withCallback:this.didChangeCaption}),y("blur",{onElement:l,withCallback:this.didBlurCaption}),r=this.element.querySelector("figcaption"),t=r.cloneNode(),{do:function(f){return function(){return r.style.display="none",t.appendChild(l),t.appendChild(A),t.classList.add(x.attachmentCaption+"--editing"),r.parentElement.insertBefore(t,r),v(),f.options.editCaption?b(function(){return l.focus()}):void 0}}(this),undo:function(){return g.removeNode(t),r.style.display=null}}}),p.prototype.didClickToolbar=function(v){return v.preventDefault(),v.stopPropagation()},p.prototype.didClickActionButton=function(v){var t,r;switch(t=v.target.getAttribute("data-trix-action")){case"remove":return(r=this.delegate)!=null?r.attachmentEditorDidRequestRemovalOfAttachment(this.attachment):void 0}},p.prototype.didKeyDownCaption=function(v){var t;return h[v.keyCode]==="return"?(v.preventDefault(),this.savePendingCaption(),(t=this.delegate)!=null&&typeof t.attachmentEditorDidRequestDeselectingAttachment=="function"?t.attachmentEditorDidRequestDeselectingAttachment(this.attachment):void 0):void 0},p.prototype.didInputCaption=function(v){return this.pendingCaption=v.target.value.replace(/\s/g," ").trim()},p.prototype.didChangeCaption=function(){return this.savePendingCaption()},p.prototype.didBlurCaption=function(){return this.savePendingCaption()},p}(g.BasicObject)}.call(this),function(){var x,b,y,h=function(e,a){function d(){this.constructor=e}for(var i in a)o.call(a,i)&&(e[i]=a[i]);return d.prototype=a.prototype,e.prototype=new d,e.__super__=a.prototype,e},o={}.hasOwnProperty;y=g.makeElement,x=g.config.css,g.AttachmentView=function(e){function a(){a.__super__.constructor.apply(this,arguments),this.attachment=this.object,this.attachment.uploadProgressDelegate=this,this.attachmentPiece=this.options.piece}var d;return h(a,e),a.attachmentSelector="[data-trix-attachment]",a.prototype.createContentNodes=function(){return[]},a.prototype.createNodes=function(){var i,u,s,n,p,c,v;if(i=n=y({tagName:"figure",className:this.getClassName(),data:this.getData(),editable:!1}),(u=this.getHref())&&(n=y({tagName:"a",editable:!1,attributes:{href:u,tabindex:-1}}),i.appendChild(n)),this.attachment.hasContent())n.innerHTML=this.attachment.getContent();else for(v=this.createContentNodes(),s=0,p=v.length;p>s;s++)c=v[s],n.appendChild(c);return n.appendChild(this.createCaptionElement()),this.attachment.isPending()&&(this.progressElement=y({tagName:"progress",attributes:{class:x.attachmentProgress,value:this.attachment.getUploadProgress(),max:100},data:{trixMutable:!0,trixStoreKey:["progressElement",this.attachment.id].join("/")}}),i.appendChild(this.progressElement)),[d("left"),i,d("right")]},a.prototype.createCaptionElement=function(){var i,u,s,n,p,c,v;return s=y({tagName:"figcaption",className:x.attachmentCaption}),(i=this.attachmentPiece.getCaption())?(s.classList.add(x.attachmentCaption+"--edited"),s.textContent=i):(u=this.getCaptionConfig(),u.name&&(n=this.attachment.getFilename()),u.size&&(c=this.attachment.getFormattedFilesize()),n&&(p=y({tagName:"span",className:x.attachmentName,textContent:n}),s.appendChild(p)),c&&(n&&s.appendChild(document.createTextNode(" ")),v=y({tagName:"span",className:x.attachmentSize,textContent:c}),s.appendChild(v))),s},a.prototype.getClassName=function(){var i,u;return u=[x.attachment,x.attachment+"--"+this.attachment.getType()],(i=this.attachment.getExtension())&&u.push(x.attachment+"--"+i),u.join(" ")},a.prototype.getData=function(){var i,u;return u={trixAttachment:JSON.stringify(this.attachment),trixContentType:this.attachment.getContentType(),trixId:this.attachment.id},i=this.attachmentPiece.attributes,i.isEmpty()||(u.trixAttributes=JSON.stringify(i)),this.attachment.isPending()&&(u.trixSerialize=!1),u},a.prototype.getHref=function(){return b(this.attachment.getContent(),"a")?void 0:this.attachment.getHref()},a.prototype.getCaptionConfig=function(){var i,u,s;return s=this.attachment.getType(),i=g.copyObject((u=g.config.attachments[s])!=null?u.caption:void 0),s==="file"&&(i.name=!0),i},a.prototype.findProgressElement=function(){var i;return(i=this.findElement())!=null?i.querySelector("progress"):void 0},d=function(i){return y({tagName:"span",textContent:g.ZERO_WIDTH_SPACE,data:{trixCursorTarget:i,trixSerialize:!1}})},a.prototype.attachmentDidChangeUploadProgress=function(){var i,u;return u=this.attachment.getUploadProgress(),(i=this.findProgressElement())!=null?i.value=u:void 0},a}(g.ObjectView),b=function(e,a){var d;return d=y("div"),d.innerHTML=e??"",d.querySelector(a)}}.call(this),function(){var x,b=function(h,o){function e(){this.constructor=h}for(var a in o)y.call(o,a)&&(h[a]=o[a]);return e.prototype=o.prototype,h.prototype=new e,h.__super__=o.prototype,h},y={}.hasOwnProperty;x=g.makeElement,g.PreviewableAttachmentView=function(h){function o(){o.__super__.constructor.apply(this,arguments),this.attachment.previewDelegate=this}return b(o,h),o.prototype.createContentNodes=function(){return this.image=x({tagName:"img",attributes:{src:""},data:{trixMutable:!0}}),this.refresh(this.image),[this.image]},o.prototype.createCaptionElement=function(){var e;return e=o.__super__.createCaptionElement.apply(this,arguments),e.textContent||e.setAttribute("data-trix-placeholder",g.config.lang.captionPlaceholder),e},o.prototype.refresh=function(e){var a;return e==null&&(e=(a=this.findElement())!=null?a.querySelector("img"):void 0),e?this.updateAttributesForImage(e):void 0},o.prototype.updateAttributesForImage=function(e){var a,d,i,u,s,n;return s=this.attachment.getURL(),d=this.attachment.getPreviewURL(),e.src=d||s,d===s?e.removeAttribute("data-trix-serialized-attributes"):(i=JSON.stringify({src:s}),e.setAttribute("data-trix-serialized-attributes",i)),n=this.attachment.getWidth(),a=this.attachment.getHeight(),n!=null&&(e.width=n),a!=null&&(e.height=a),u=["imageElement",this.attachment.id,e.src,e.width,e.height].join("/"),e.dataset.trixStoreKey=u},o.prototype.attachmentDidChangeAttributes=function(){return this.refresh(this.image),this.refresh()},o}(g.AttachmentView)}.call(this),function(){var x,b,y,h=function(e,a){function d(){this.constructor=e}for(var i in a)o.call(a,i)&&(e[i]=a[i]);return d.prototype=a.prototype,e.prototype=new d,e.__super__=a.prototype,e},o={}.hasOwnProperty;y=g.makeElement,x=g.findInnerElement,b=g.getTextConfig,g.PieceView=function(e){function a(){var i;a.__super__.constructor.apply(this,arguments),this.piece=this.object,this.attributes=this.piece.getAttributes(),i=this.options,this.textConfig=i.textConfig,this.context=i.context,this.piece.attachment?this.attachment=this.piece.attachment:this.string=this.piece.toString()}var d;return h(a,e),a.prototype.createNodes=function(){var i,u,s,n,p,c;if(c=this.attachment?this.createAttachmentNodes():this.createStringNodes(),i=this.createElement()){for(s=x(i),u=0,n=c.length;n>u;u++)p=c[u],s.appendChild(p);c=[i]}return c},a.prototype.createAttachmentNodes=function(){var i,u;return i=this.attachment.isPreviewable()?g.PreviewableAttachmentView:g.AttachmentView,u=this.createChildView(i,this.piece.attachment,{piece:this.piece}),u.getNodes()},a.prototype.createStringNodes=function(){var i,u,s,n,p,c,v,t,r,l;if((t=this.textConfig)!=null&&t.plaintext)return[document.createTextNode(this.string)];for(v=[],r=this.string.split(` -`),s=u=0,n=r.length;n>u;s=++u)l=r[s],s>0&&(i=y("br"),v.push(i)),(p=l.length)&&(c=document.createTextNode(this.preserveSpaces(l)),v.push(c));return v},a.prototype.createElement=function(){var i,u,s,n,p,c,v,t,r;t={},c=this.attributes;for(n in c)if(r=c[n],(i=b(n))&&(i.tagName&&(p=y(i.tagName),s?(s.appendChild(p),s=p):u=s=p),i.styleProperty&&(t[i.styleProperty]=r),i.style)){v=i.style;for(n in v)r=v[n],t[n]=r}if(Object.keys(t).length){u==null&&(u=y("span"));for(n in t)r=t[n],u.style[n]=r}return u},a.prototype.createContainerElement=function(){var i,u,s,n,p;n=this.attributes;for(s in n)if(p=n[s],(u=b(s))&&u.groupTagName)return i={},i[s]=p,y(u.groupTagName,i)},d=g.NON_BREAKING_SPACE,a.prototype.preserveSpaces=function(i){return this.context.isLast&&(i=i.replace(/\ $/,d)),i=i.replace(/(\S)\ {3}(\S)/g,"$1 "+d+" $2").replace(/\ {2}/g,d+" ").replace(/\ {2}/g," "+d),(this.context.isFirst||this.context.followsWhitespace)&&(i=i.replace(/^\ /,d)),i},a}(g.ObjectView)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.TextView=function(y){function h(){h.__super__.constructor.apply(this,arguments),this.text=this.object,this.textConfig=this.options.textConfig}var o;return x(h,y),h.prototype.createNodes=function(){var e,a,d,i,u,s,n,p,c,v;for(s=[],p=g.ObjectGroup.groupObjects(this.getPieces()),i=p.length-1,d=a=0,u=p.length;u>a;d=++a)n=p[d],e={},d===0&&(e.isFirst=!0),d===i&&(e.isLast=!0),o(c)&&(e.followsWhitespace=!0),v=this.findOrCreateCachedChildView(g.PieceView,n,{textConfig:this.textConfig,context:e}),s.push.apply(s,v.getNodes()),c=n;return s},h.prototype.getPieces=function(){var e,a,d,i,u;for(i=this.text.getPieces(),u=[],e=0,a=i.length;a>e;e++)d=i[e],d.hasAttribute("blockBreak")||u.push(d);return u},o=function(e){return/\s$/.test(e?.toString())},h}(g.ObjectView)}.call(this),function(){var x,b,y,h=function(e,a){function d(){this.constructor=e}for(var i in a)o.call(a,i)&&(e[i]=a[i]);return d.prototype=a.prototype,e.prototype=new d,e.__super__=a.prototype,e},o={}.hasOwnProperty;y=g.makeElement,b=g.getBlockConfig,x=g.config.css,g.BlockView=function(e){function a(){a.__super__.constructor.apply(this,arguments),this.block=this.object,this.attributes=this.block.getAttributes()}return h(a,e),a.prototype.createNodes=function(){var d,i,u,s,n,p,c,v,t,r,l;if(i=document.createComment("block"),c=[i],this.block.isEmpty()?c.push(y("br")):(r=(v=b(this.block.getLastAttribute()))!=null?v.text:void 0,l=this.findOrCreateCachedChildView(g.TextView,this.block.text,{textConfig:r}),c.push.apply(c,l.getNodes()),this.shouldAddExtraNewlineElement()&&c.push(y("br"))),this.attributes.length)return c;for(t=g.config.blockAttributes.default.tagName,this.block.isRTL()&&(d={dir:"rtl"}),u=y({tagName:t,attributes:d}),s=0,n=c.length;n>s;s++)p=c[s],u.appendChild(p);return[u]},a.prototype.createContainerElement=function(d){var i,u,s,n,p;return i=this.attributes[d],p=b(i).tagName,d===0&&this.block.isRTL()&&(u={dir:"rtl"}),i==="attachmentGallery"&&(n=this.block.getBlockBreakPosition(),s=x.attachmentGallery+" "+x.attachmentGallery+"--"+n),y({tagName:p,className:s,attributes:u})},a.prototype.shouldAddExtraNewlineElement=function(){return/\n\n$/.test(this.block.toString())},a}(g.ObjectView)}.call(this),function(){var x,b,y=function(o,e){function a(){this.constructor=o}for(var d in e)h.call(e,d)&&(o[d]=e[d]);return a.prototype=e.prototype,o.prototype=new a,o.__super__=e.prototype,o},h={}.hasOwnProperty;x=g.defer,b=g.makeElement,g.DocumentView=function(o){function e(){e.__super__.constructor.apply(this,arguments),this.element=this.options.element,this.elementStore=new g.ElementStore,this.setDocument(this.object)}var a,d,i;return y(e,o),e.render=function(u){var s,n;return s=b("div"),n=new this(u,{element:s}),n.render(),n.sync(),s},e.prototype.setDocument=function(u){return u.isEqualTo(this.document)?void 0:this.document=this.object=u},e.prototype.render=function(){var u,s,n,p,c,v,t;if(this.childViews=[],this.shadowElement=b("div"),!this.document.isEmpty()){for(c=g.ObjectGroup.groupObjects(this.document.getBlocks(),{asTree:!0}),v=[],u=0,s=c.length;s>u;u++)p=c[u],t=this.findOrCreateCachedChildView(g.BlockView,p),v.push(function(){var r,l,A,f;for(A=t.getNodes(),f=[],r=0,l=A.length;l>r;r++)n=A[r],f.push(this.shadowElement.appendChild(n));return f}.call(this));return v}},e.prototype.isSynced=function(){return a(this.shadowElement,this.element)},e.prototype.sync=function(){var u;for(u=this.createDocumentFragmentForSync();this.element.lastChild;)this.element.removeChild(this.element.lastChild);return this.element.appendChild(u),this.didSync()},e.prototype.didSync=function(){return this.elementStore.reset(d(this.element)),x(function(u){return function(){return u.garbageCollectCachedViews()}}(this))},e.prototype.createDocumentFragmentForSync=function(){var u,s,n,p,c,v,t,r,l,A;for(s=document.createDocumentFragment(),r=this.shadowElement.childNodes,n=0,c=r.length;c>n;n++)t=r[n],s.appendChild(t.cloneNode(!0));for(l=d(s),p=0,v=l.length;v>p;p++)u=l[p],(A=this.elementStore.remove(u))&&u.parentNode.replaceChild(A,u);return s},d=function(u){return u.querySelectorAll("[data-trix-store-key]")},a=function(u,s){return i(u.innerHTML)===i(s.innerHTML)},i=function(u){return u.replace(/ /g," ")},e}(g.ObjectView)}.call(this),function(){var x,b,y,h,o,e=function(i,u){return function(){return i.apply(u,arguments)}},a=function(i,u){function s(){this.constructor=i}for(var n in u)d.call(u,n)&&(i[n]=u[n]);return s.prototype=u.prototype,i.prototype=new s,i.__super__=u.prototype,i},d={}.hasOwnProperty;y=g.findClosestElementFromNode,h=g.handleEvent,o=g.innerElementIsActive,b=g.defer,x=g.AttachmentView.attachmentSelector,g.CompositionController=function(i){function u(s,n){this.element=s,this.composition=n,this.didClickAttachment=e(this.didClickAttachment,this),this.didBlur=e(this.didBlur,this),this.didFocus=e(this.didFocus,this),this.documentView=new g.DocumentView(this.composition.document,{element:this.element}),h("focus",{onElement:this.element,withCallback:this.didFocus}),h("blur",{onElement:this.element,withCallback:this.didBlur}),h("click",{onElement:this.element,matchingSelector:"a[contenteditable=false]",preventDefault:!0}),h("mousedown",{onElement:this.element,matchingSelector:x,withCallback:this.didClickAttachment}),h("click",{onElement:this.element,matchingSelector:"a"+x,preventDefault:!0})}return a(u,i),u.prototype.didFocus=function(){var s,n,p;return s=function(c){return function(){var v;return c.focused?void 0:(c.focused=!0,(v=c.delegate)!=null&&typeof v.compositionControllerDidFocus=="function"?v.compositionControllerDidFocus():void 0)}}(this),(n=(p=this.blurPromise)!=null?p.then(s):void 0)!=null?n:s()},u.prototype.didBlur=function(){return this.blurPromise=new Promise(function(s){return function(n){return b(function(){var p;return o(s.element)||(s.focused=null,(p=s.delegate)!=null&&typeof p.compositionControllerDidBlur=="function"&&p.compositionControllerDidBlur()),s.blurPromise=null,n()})}}(this))},u.prototype.didClickAttachment=function(s,n){var p,c,v;return p=this.findAttachmentForElement(n),c=y(s.target,{matchingSelector:"figcaption"})!=null,(v=this.delegate)!=null&&typeof v.compositionControllerDidSelectAttachment=="function"?v.compositionControllerDidSelectAttachment(p,{editCaption:c}):void 0},u.prototype.getSerializableElement=function(){return this.isEditingAttachment()?this.documentView.shadowElement:this.element},u.prototype.render=function(){var s,n,p;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()&&((s=this.delegate)!=null&&typeof s.compositionControllerWillSyncDocumentView=="function"&&s.compositionControllerWillSyncDocumentView(),this.documentView.sync(),(n=this.delegate)!=null&&typeof n.compositionControllerDidSyncDocumentView=="function"&&n.compositionControllerDidSyncDocumentView()),(p=this.delegate)!=null&&typeof p.compositionControllerDidRender=="function"?p.compositionControllerDidRender():void 0},u.prototype.rerenderViewForObject=function(s){return this.invalidateViewForObject(s),this.render()},u.prototype.invalidateViewForObject=function(s){return this.documentView.invalidateViewForObject(s)},u.prototype.isViewCachingEnabled=function(){return this.documentView.isViewCachingEnabled()},u.prototype.enableViewCaching=function(){return this.documentView.enableViewCaching()},u.prototype.disableViewCaching=function(){return this.documentView.disableViewCaching()},u.prototype.refreshViewCache=function(){return this.documentView.garbageCollectCachedViews()},u.prototype.isEditingAttachment=function(){return this.attachmentEditor!=null},u.prototype.installAttachmentEditorForAttachment=function(s,n){var p,c,v;if(((v=this.attachmentEditor)!=null?v.attachment:void 0)!==s&&(c=this.documentView.findElementForObject(s)))return this.uninstallAttachmentEditor(),p=this.composition.document.getAttachmentPieceForAttachment(s),this.attachmentEditor=new g.AttachmentEditorController(p,c,this.element,n),this.attachmentEditor.delegate=this},u.prototype.uninstallAttachmentEditor=function(){var s;return(s=this.attachmentEditor)!=null?s.uninstall():void 0},u.prototype.didUninstallAttachmentEditor=function(){return this.attachmentEditor=null,this.render()},u.prototype.attachmentEditorDidRequestUpdatingAttributesForAttachment=function(s,n){var p;return(p=this.delegate)!=null&&typeof p.compositionControllerWillUpdateAttachment=="function"&&p.compositionControllerWillUpdateAttachment(n),this.composition.updateAttributesForAttachment(s,n)},u.prototype.attachmentEditorDidRequestRemovingAttributeForAttachment=function(s,n){var p;return(p=this.delegate)!=null&&typeof p.compositionControllerWillUpdateAttachment=="function"&&p.compositionControllerWillUpdateAttachment(n),this.composition.removeAttributeForAttachment(s,n)},u.prototype.attachmentEditorDidRequestRemovalOfAttachment=function(s){var n;return(n=this.delegate)!=null&&typeof n.compositionControllerDidRequestRemovalOfAttachment=="function"?n.compositionControllerDidRequestRemovalOfAttachment(s):void 0},u.prototype.attachmentEditorDidRequestDeselectingAttachment=function(s){var n;return(n=this.delegate)!=null&&typeof n.compositionControllerDidRequestDeselectingAttachment=="function"?n.compositionControllerDidRequestDeselectingAttachment(s):void 0},u.prototype.canSyncDocumentView=function(){return!this.isEditingAttachment()},u.prototype.findAttachmentForElement=function(s){return this.composition.document.getAttachmentById(parseInt(s.dataset.trixId,10))},u}(g.BasicObject)}.call(this),function(){var x,b,y,h=function(a,d){return function(){return a.apply(d,arguments)}},o=function(a,d){function i(){this.constructor=a}for(var u in d)e.call(d,u)&&(a[u]=d[u]);return i.prototype=d.prototype,a.prototype=new i,a.__super__=d.prototype,a},e={}.hasOwnProperty;b=g.handleEvent,y=g.triggerEvent,x=g.findClosestElementFromNode,g.ToolbarController=function(a){function d(f){this.element=f,this.didKeyDownDialogInput=h(this.didKeyDownDialogInput,this),this.didClickDialogButton=h(this.didClickDialogButton,this),this.didClickAttributeButton=h(this.didClickAttributeButton,this),this.didClickActionButton=h(this.didClickActionButton,this),this.attributes={},this.actions={},this.resetDialogInputs(),b("mousedown",{onElement:this.element,matchingSelector:i,withCallback:this.didClickActionButton}),b("mousedown",{onElement:this.element,matchingSelector:s,withCallback:this.didClickAttributeButton}),b("click",{onElement:this.element,matchingSelector:A,preventDefault:!0}),b("click",{onElement:this.element,matchingSelector:n,withCallback:this.didClickDialogButton}),b("keydown",{onElement:this.element,matchingSelector:p,withCallback:this.didKeyDownDialogInput})}var i,u,s,n,p,c,v,t,r,l,A;return o(d,a),s="[data-trix-attribute]",i="[data-trix-action]",A=s+", "+i,c="[data-trix-dialog]",u=c+"[data-trix-active]",n=c+" [data-trix-method]",p=c+" [data-trix-input]",d.prototype.didClickActionButton=function(f,m){var C,S,L;return(S=this.delegate)!=null&&S.toolbarDidClickButton(),f.preventDefault(),C=v(m),this.getDialog(C)?this.toggleDialog(C):(L=this.delegate)!=null?L.toolbarDidInvokeAction(C):void 0},d.prototype.didClickAttributeButton=function(f,m){var C,S,L;return(S=this.delegate)!=null&&S.toolbarDidClickButton(),f.preventDefault(),C=t(m),this.getDialog(C)?this.toggleDialog(C):(L=this.delegate)!=null&&L.toolbarDidToggleAttribute(C),this.refreshAttributeButtons()},d.prototype.didClickDialogButton=function(f,m){var C,S;return C=x(m,{matchingSelector:c}),S=m.getAttribute("data-trix-method"),this[S].call(this,C)},d.prototype.didKeyDownDialogInput=function(f,m){var C,S;return f.keyCode===13&&(f.preventDefault(),C=m.getAttribute("name"),S=this.getDialog(C),this.setAttribute(S)),f.keyCode===27?(f.preventDefault(),this.hideDialog()):void 0},d.prototype.updateActions=function(f){return this.actions=f,this.refreshActionButtons()},d.prototype.refreshActionButtons=function(){return this.eachActionButton(function(f){return function(m,C){return m.disabled=f.actions[C]===!1}}(this))},d.prototype.eachActionButton=function(f){var m,C,S,L,O;for(L=this.element.querySelectorAll(i),O=[],C=0,S=L.length;S>C;C++)m=L[C],O.push(f(m,v(m)));return O},d.prototype.updateAttributes=function(f){return this.attributes=f,this.refreshAttributeButtons()},d.prototype.refreshAttributeButtons=function(){return this.eachAttributeButton(function(f){return function(m,C){return m.disabled=f.attributes[C]===!1,f.attributes[C]||f.dialogIsVisible(C)?(m.setAttribute("data-trix-active",""),m.classList.add("trix-active")):(m.removeAttribute("data-trix-active"),m.classList.remove("trix-active"))}}(this))},d.prototype.eachAttributeButton=function(f){var m,C,S,L,O;for(L=this.element.querySelectorAll(s),O=[],C=0,S=L.length;S>C;C++)m=L[C],O.push(f(m,t(m)));return O},d.prototype.applyKeyboardCommand=function(f){var m,C,S,L,O,D,R;for(O=JSON.stringify(f.sort()),R=this.element.querySelectorAll("[data-trix-key]"),L=0,D=R.length;D>L;L++)if(m=R[L],S=m.getAttribute("data-trix-key").split("+"),C=JSON.stringify(S.sort()),C===O)return y("mousedown",{onElement:m}),!0;return!1},d.prototype.dialogIsVisible=function(f){var m;return(m=this.getDialog(f))?m.hasAttribute("data-trix-active"):void 0},d.prototype.toggleDialog=function(f){return this.dialogIsVisible(f)?this.hideDialog():this.showDialog(f)},d.prototype.showDialog=function(f){var m,C,S,L,O,D,R,E,w,k;for(this.hideDialog(),(R=this.delegate)!=null&&R.toolbarWillShowDialog(),S=this.getDialog(f),S.setAttribute("data-trix-active",""),S.classList.add("trix-active"),E=S.querySelectorAll("input[disabled]"),L=0,D=E.length;D>L;L++)C=E[L],C.removeAttribute("disabled");return(m=t(S))&&(O=l(S,f))&&(O.value=(w=this.attributes[m])!=null?w:"",O.select()),(k=this.delegate)!=null?k.toolbarDidShowDialog(f):void 0},d.prototype.setAttribute=function(f){var m,C,S;return m=t(f),C=l(f,m),C.willValidate&&!C.checkValidity()?(C.setAttribute("data-trix-validate",""),C.classList.add("trix-validate"),C.focus()):((S=this.delegate)!=null&&S.toolbarDidUpdateAttribute(m,C.value),this.hideDialog())},d.prototype.removeAttribute=function(f){var m,C;return m=t(f),(C=this.delegate)!=null&&C.toolbarDidRemoveAttribute(m),this.hideDialog()},d.prototype.hideDialog=function(){var f,m;return(f=this.element.querySelector(u))?(f.removeAttribute("data-trix-active"),f.classList.remove("trix-active"),this.resetDialogInputs(),(m=this.delegate)!=null?m.toolbarDidHideDialog(r(f)):void 0):void 0},d.prototype.resetDialogInputs=function(){var f,m,C,S,L;for(S=this.element.querySelectorAll(p),L=[],f=0,C=S.length;C>f;f++)m=S[f],m.setAttribute("disabled","disabled"),m.removeAttribute("data-trix-validate"),L.push(m.classList.remove("trix-validate"));return L},d.prototype.getDialog=function(f){return this.element.querySelector("[data-trix-dialog="+f+"]")},l=function(f,m){return m==null&&(m=t(f)),f.querySelector("[data-trix-input][name='"+m+"']")},v=function(f){return f.getAttribute("data-trix-action")},t=function(f){var m;return(m=f.getAttribute("data-trix-attribute"))!=null?m:f.getAttribute("data-trix-dialog-attribute")},r=function(f){return f.getAttribute("data-trix-dialog")},d}(g.BasicObject)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.ImagePreloadOperation=function(y){function h(o){this.url=o}return x(h,y),h.prototype.perform=function(o){var e;return e=new Image,e.onload=function(a){return function(){return e.width=a.width=e.naturalWidth,e.height=a.height=e.naturalHeight,o(!0,e)}}(this),e.onerror=function(){return o(!1)},e.src=this.url},h}(g.Operation)}.call(this),function(){var x=function(h,o){return function(){return h.apply(o,arguments)}},b=function(h,o){function e(){this.constructor=h}for(var a in o)y.call(o,a)&&(h[a]=o[a]);return e.prototype=o.prototype,h.prototype=new e,h.__super__=o.prototype,h},y={}.hasOwnProperty;g.Attachment=function(h){function o(e){e==null&&(e={}),this.releaseFile=x(this.releaseFile,this),o.__super__.constructor.apply(this,arguments),this.attributes=g.Hash.box(e),this.didChangeAttributes()}return b(o,h),o.previewablePattern=/^image(\/(gif|png|jpe?g)|$)/,o.attachmentForFile=function(e){var a,d;return d=this.attributesForFile(e),a=new this(d),a.setFile(e),a},o.attributesForFile=function(e){return new g.Hash({filename:e.name,filesize:e.size,contentType:e.type})},o.fromJSON=function(e){return new this(e)},o.prototype.getAttribute=function(e){return this.attributes.get(e)},o.prototype.hasAttribute=function(e){return this.attributes.has(e)},o.prototype.getAttributes=function(){return this.attributes.toObject()},o.prototype.setAttributes=function(e){var a,d,i;return e==null&&(e={}),a=this.attributes.merge(e),this.attributes.isEqualTo(a)?void 0:(this.attributes=a,this.didChangeAttributes(),(d=this.previewDelegate)!=null&&typeof d.attachmentDidChangeAttributes=="function"&&d.attachmentDidChangeAttributes(this),(i=this.delegate)!=null&&typeof i.attachmentDidChangeAttributes=="function"?i.attachmentDidChangeAttributes(this):void 0)},o.prototype.didChangeAttributes=function(){return this.isPreviewable()?this.preloadURL():void 0},o.prototype.isPending=function(){return this.file!=null&&!(this.getURL()||this.getHref())},o.prototype.isPreviewable=function(){return this.attributes.has("previewable")?this.attributes.get("previewable"):this.constructor.previewablePattern.test(this.getContentType())},o.prototype.getType=function(){return this.hasContent()?"content":this.isPreviewable()?"preview":"file"},o.prototype.getURL=function(){return this.attributes.get("url")},o.prototype.getHref=function(){return this.attributes.get("href")},o.prototype.getFilename=function(){var e;return(e=this.attributes.get("filename"))!=null?e:""},o.prototype.getFilesize=function(){return this.attributes.get("filesize")},o.prototype.getFormattedFilesize=function(){var e;return e=this.attributes.get("filesize"),typeof e=="number"?g.config.fileSize.formatter(e):""},o.prototype.getExtension=function(){var e;return(e=this.getFilename().match(/\.(\w+)$/))!=null?e[1].toLowerCase():void 0},o.prototype.getContentType=function(){return this.attributes.get("contentType")},o.prototype.hasContent=function(){return this.attributes.has("content")},o.prototype.getContent=function(){return this.attributes.get("content")},o.prototype.getWidth=function(){return this.attributes.get("width")},o.prototype.getHeight=function(){return this.attributes.get("height")},o.prototype.getFile=function(){return this.file},o.prototype.setFile=function(e){return this.file=e,this.isPreviewable()?this.preloadFile():void 0},o.prototype.releaseFile=function(){return this.releasePreloadedFile(),this.file=null},o.prototype.getUploadProgress=function(){var e;return(e=this.uploadProgress)!=null?e:0},o.prototype.setUploadProgress=function(e){var a;return this.uploadProgress!==e?(this.uploadProgress=e,(a=this.uploadProgressDelegate)!=null&&typeof a.attachmentDidChangeUploadProgress=="function"?a.attachmentDidChangeUploadProgress(this):void 0):void 0},o.prototype.toJSON=function(){return this.getAttributes()},o.prototype.getCacheKey=function(){return[o.__super__.getCacheKey.apply(this,arguments),this.attributes.getCacheKey(),this.getPreviewURL()].join("/")},o.prototype.getPreviewURL=function(){return this.previewURL||this.preloadingURL},o.prototype.setPreviewURL=function(e){var a,d;return e!==this.getPreviewURL()?(this.previewURL=e,(a=this.previewDelegate)!=null&&typeof a.attachmentDidChangeAttributes=="function"&&a.attachmentDidChangeAttributes(this),(d=this.delegate)!=null&&typeof d.attachmentDidChangePreviewURL=="function"?d.attachmentDidChangePreviewURL(this):void 0):void 0},o.prototype.preloadURL=function(){return this.preload(this.getURL(),this.releaseFile)},o.prototype.preloadFile=function(){return this.file?(this.fileObjectURL=URL.createObjectURL(this.file),this.preload(this.fileObjectURL)):void 0},o.prototype.releasePreloadedFile=function(){return this.fileObjectURL?(URL.revokeObjectURL(this.fileObjectURL),this.fileObjectURL=null):void 0},o.prototype.preload=function(e,a){var d;return e&&e!==this.getPreviewURL()?(this.preloadingURL=e,d=new g.ImagePreloadOperation(e),d.then(function(i){return function(u){var s,n;return n=u.width,s=u.height,i.getWidth()&&i.getHeight()||i.setAttributes({width:n,height:s}),i.preloadingURL=null,i.setPreviewURL(e),typeof a=="function"?a():void 0}}(this)).catch(function(i){return function(){return i.preloadingURL=null,typeof a=="function"?a():void 0}}(this))):void 0},o}(g.Object)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.Piece=function(y){function h(o,e){e==null&&(e={}),h.__super__.constructor.apply(this,arguments),this.attributes=g.Hash.box(e)}return x(h,y),h.types={},h.registerType=function(o,e){return e.type=o,this.types[o]=e},h.fromJSON=function(o){var e;return(e=this.types[o.type])?e.fromJSON(o):void 0},h.prototype.copyWithAttributes=function(o){return new this.constructor(this.getValue(),o)},h.prototype.copyWithAdditionalAttributes=function(o){return this.copyWithAttributes(this.attributes.merge(o))},h.prototype.copyWithoutAttribute=function(o){return this.copyWithAttributes(this.attributes.remove(o))},h.prototype.copy=function(){return this.copyWithAttributes(this.attributes)},h.prototype.getAttribute=function(o){return this.attributes.get(o)},h.prototype.getAttributesHash=function(){return this.attributes},h.prototype.getAttributes=function(){return this.attributes.toObject()},h.prototype.getCommonAttributes=function(){var o,e,a;return(a=pieceList.getPieceAtIndex(0))?(o=a.attributes,e=o.getKeys(),pieceList.eachPiece(function(d){return e=o.getKeysCommonToHash(d.attributes),o=o.slice(e)}),o.toObject()):{}},h.prototype.hasAttribute=function(o){return this.attributes.has(o)},h.prototype.hasSameStringValueAsPiece=function(o){return o!=null&&this.toString()===o.toString()},h.prototype.hasSameAttributesAsPiece=function(o){return o!=null&&(this.attributes===o.attributes||this.attributes.isEqualTo(o.attributes))},h.prototype.isBlockBreak=function(){return!1},h.prototype.isEqualTo=function(o){return h.__super__.isEqualTo.apply(this,arguments)||this.hasSameConstructorAs(o)&&this.hasSameStringValueAsPiece(o)&&this.hasSameAttributesAsPiece(o)},h.prototype.isEmpty=function(){return this.length===0},h.prototype.isSerializable=function(){return!0},h.prototype.toJSON=function(){return{type:this.constructor.type,attributes:this.getAttributes()}},h.prototype.contentsForInspection=function(){return{type:this.constructor.type,attributes:this.attributes.inspect()}},h.prototype.canBeGrouped=function(){return this.hasAttribute("href")},h.prototype.canBeGroupedWith=function(o){return this.getAttribute("href")===o.getAttribute("href")},h.prototype.getLength=function(){return this.length},h.prototype.canBeConsolidatedWith=function(){return!1},h}(g.Object)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.Piece.registerType("attachment",g.AttachmentPiece=function(y){function h(o){this.attachment=o,h.__super__.constructor.apply(this,arguments),this.length=1,this.ensureAttachmentExclusivelyHasAttribute("href"),this.attachment.hasContent()||this.removeProhibitedAttributes()}return x(h,y),h.fromJSON=function(o){return new this(g.Attachment.fromJSON(o.attachment),o.attributes)},h.permittedAttributes=["caption","presentation"],h.prototype.ensureAttachmentExclusivelyHasAttribute=function(o){return this.hasAttribute(o)?(this.attachment.hasAttribute(o)||this.attachment.setAttributes(this.attributes.slice(o)),this.attributes=this.attributes.remove(o)):void 0},h.prototype.removeProhibitedAttributes=function(){var o;return o=this.attributes.slice(this.constructor.permittedAttributes),o.isEqualTo(this.attributes)?void 0:this.attributes=o},h.prototype.getValue=function(){return this.attachment},h.prototype.isSerializable=function(){return!this.attachment.isPending()},h.prototype.getCaption=function(){var o;return(o=this.attributes.get("caption"))!=null?o:""},h.prototype.isEqualTo=function(o){var e;return h.__super__.isEqualTo.apply(this,arguments)&&this.attachment.id===(o!=null&&(e=o.attachment)!=null?e.id:void 0)},h.prototype.toString=function(){return g.OBJECT_REPLACEMENT_CHARACTER},h.prototype.toJSON=function(){var o;return o=h.__super__.toJSON.apply(this,arguments),o.attachment=this.attachment,o},h.prototype.getCacheKey=function(){return[h.__super__.getCacheKey.apply(this,arguments),this.attachment.getCacheKey()].join("/")},h.prototype.toConsole=function(){return JSON.stringify(this.toString())},h}(g.Piece))}.call(this),function(){var x,b=function(h,o){function e(){this.constructor=h}for(var a in o)y.call(o,a)&&(h[a]=o[a]);return e.prototype=o.prototype,h.prototype=new e,h.__super__=o.prototype,h},y={}.hasOwnProperty;x=g.normalizeNewlines,g.Piece.registerType("string",g.StringPiece=function(h){function o(e){o.__super__.constructor.apply(this,arguments),this.string=x(e),this.length=this.string.length}return b(o,h),o.fromJSON=function(e){return new this(e.string,e.attributes)},o.prototype.getValue=function(){return this.string},o.prototype.toString=function(){return this.string.toString()},o.prototype.isBlockBreak=function(){return this.toString()===` -`&&this.getAttribute("blockBreak")===!0},o.prototype.toJSON=function(){var e;return e=o.__super__.toJSON.apply(this,arguments),e.string=this.string,e},o.prototype.canBeConsolidatedWith=function(e){return e!=null&&this.hasSameConstructorAs(e)&&this.hasSameAttributesAsPiece(e)},o.prototype.consolidateWith=function(e){return new this.constructor(this.toString()+e.toString(),this.attributes)},o.prototype.splitAtOffset=function(e){var a,d;return e===0?(a=null,d=this):e===this.length?(a=this,d=null):(a=new this.constructor(this.string.slice(0,e),this.attributes),d=new this.constructor(this.string.slice(e),this.attributes)),[a,d]},o.prototype.toConsole=function(){var e;return e=this.string,e.length>15&&(e=e.slice(0,14)+"\u2026"),JSON.stringify(e.toString())},o}(g.Piece))}.call(this),function(){var x,b=function(o,e){function a(){this.constructor=o}for(var d in e)y.call(e,d)&&(o[d]=e[d]);return a.prototype=e.prototype,o.prototype=new a,o.__super__=e.prototype,o},y={}.hasOwnProperty,h=[].slice;x=g.spliceArray,g.SplittableList=function(o){function e(u){u==null&&(u=[]),e.__super__.constructor.apply(this,arguments),this.objects=u.slice(0),this.length=this.objects.length}var a,d,i;return b(e,o),e.box=function(u){return u instanceof this?u:new this(u)},e.prototype.indexOf=function(u){return this.objects.indexOf(u)},e.prototype.splice=function(){var u;return u=1<=arguments.length?h.call(arguments,0):[],new this.constructor(x.apply(null,[this.objects].concat(h.call(u))))},e.prototype.eachObject=function(u){var s,n,p,c,v,t;for(v=this.objects,t=[],n=s=0,p=v.length;p>s;n=++s)c=v[n],t.push(u(c,n));return t},e.prototype.insertObjectAtIndex=function(u,s){return this.splice(s,0,u)},e.prototype.insertSplittableListAtIndex=function(u,s){return this.splice.apply(this,[s,0].concat(h.call(u.objects)))},e.prototype.insertSplittableListAtPosition=function(u,s){var n,p,c;return c=this.splitObjectAtPosition(s),p=c[0],n=c[1],new this.constructor(p).insertSplittableListAtIndex(u,n)},e.prototype.editObjectAtIndex=function(u,s){return this.replaceObjectAtIndex(s(this.objects[u]),u)},e.prototype.replaceObjectAtIndex=function(u,s){return this.splice(s,1,u)},e.prototype.removeObjectAtIndex=function(u){return this.splice(u,1)},e.prototype.getObjectAtIndex=function(u){return this.objects[u]},e.prototype.getSplittableListInRange=function(u){var s,n,p,c;return p=this.splitObjectsAtRange(u),n=p[0],s=p[1],c=p[2],new this.constructor(n.slice(s,c+1))},e.prototype.selectSplittableList=function(u){var s,n;return n=function(){var p,c,v,t;for(v=this.objects,t=[],p=0,c=v.length;c>p;p++)s=v[p],u(s)&&t.push(s);return t}.call(this),new this.constructor(n)},e.prototype.removeObjectsInRange=function(u){var s,n,p,c;return p=this.splitObjectsAtRange(u),n=p[0],s=p[1],c=p[2],new this.constructor(n).splice(s,c-s+1)},e.prototype.transformObjectsInRange=function(u,s){var n,p,c,v,t,r,l;return t=this.splitObjectsAtRange(u),v=t[0],p=t[1],r=t[2],l=function(){var A,f,m;for(m=[],n=A=0,f=v.length;f>A;n=++A)c=v[n],m.push(n>=p&&r>=n?s(c):c);return m}(),new this.constructor(l)},e.prototype.splitObjectsAtRange=function(u){var s,n,p,c,v,t;return c=this.splitObjectAtPosition(i(u)),n=c[0],s=c[1],p=c[2],v=new this.constructor(n).splitObjectAtPosition(a(u)+p),n=v[0],t=v[1],[n,s,t-1]},e.prototype.getObjectAtPosition=function(u){var s,n,p;return p=this.findIndexAndOffsetAtPosition(u),s=p.index,n=p.offset,this.objects[s]},e.prototype.splitObjectAtPosition=function(u){var s,n,p,c,v,t,r,l,A,f;return t=this.findIndexAndOffsetAtPosition(u),s=t.index,v=t.offset,c=this.objects.slice(0),s!=null?v===0?(A=s,f=0):(p=this.getObjectAtIndex(s),r=p.splitAtOffset(v),n=r[0],l=r[1],c.splice(s,1,n,l),A=s+1,f=n.getLength()-v):(A=c.length,f=0),[c,A,f]},e.prototype.consolidate=function(){var u,s,n,p,c,v;for(p=[],c=this.objects[0],v=this.objects.slice(1),u=0,s=v.length;s>u;u++)n=v[u],typeof c.canBeConsolidatedWith=="function"&&c.canBeConsolidatedWith(n)?c=c.consolidateWith(n):(p.push(c),c=n);return c!=null&&p.push(c),new this.constructor(p)},e.prototype.consolidateFromIndexToIndex=function(u,s){var n,p,c;return p=this.objects.slice(0),c=p.slice(u,s+1),n=new this.constructor(c).consolidate().toArray(),this.splice.apply(this,[u,c.length].concat(h.call(n)))},e.prototype.findIndexAndOffsetAtPosition=function(u){var s,n,p,c,v,t,r;for(s=0,r=this.objects,p=n=0,c=r.length;c>n;p=++n){if(t=r[p],v=s+t.getLength(),u>=s&&v>u)return{index:p,offset:u-s};s=v}return{index:null,offset:null}},e.prototype.findPositionAtIndexAndOffset=function(u,s){var n,p,c,v,t,r;for(t=0,r=this.objects,n=p=0,c=r.length;c>p;n=++p)if(v=r[n],u>n)t+=v.getLength();else if(n===u){t+=s;break}return t},e.prototype.getEndPosition=function(){var u,s;return this.endPosition!=null?this.endPosition:this.endPosition=function(){var n,p,c;for(s=0,c=this.objects,n=0,p=c.length;p>n;n++)u=c[n],s+=u.getLength();return s}.call(this)},e.prototype.toString=function(){return this.objects.join("")},e.prototype.toArray=function(){return this.objects.slice(0)},e.prototype.toJSON=function(){return this.toArray()},e.prototype.isEqualTo=function(u){return e.__super__.isEqualTo.apply(this,arguments)||d(this.objects,u?.objects)},d=function(u,s){var n,p,c,v,t;if(s==null&&(s=[]),u.length!==s.length)return!1;for(t=!0,p=n=0,c=u.length;c>n;p=++n)v=u[p],t&&!v.isEqualTo(s[p])&&(t=!1);return t},e.prototype.contentsForInspection=function(){var u;return{objects:"["+function(){var s,n,p,c;for(p=this.objects,c=[],s=0,n=p.length;n>s;s++)u=p[s],c.push(u.inspect());return c}.call(this).join(", ")+"]"}},i=function(u){return u[0]},a=function(u){return u[1]},e}(g.Object)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.Text=function(y){function h(o){var e;o==null&&(o=[]),h.__super__.constructor.apply(this,arguments),this.pieceList=new g.SplittableList(function(){var a,d,i;for(i=[],a=0,d=o.length;d>a;a++)e=o[a],e.isEmpty()||i.push(e);return i}())}return x(h,y),h.textForAttachmentWithAttributes=function(o,e){var a;return a=new g.AttachmentPiece(o,e),new this([a])},h.textForStringWithAttributes=function(o,e){var a;return a=new g.StringPiece(o,e),new this([a])},h.fromJSON=function(o){var e,a;return a=function(){var d,i,u;for(u=[],d=0,i=o.length;i>d;d++)e=o[d],u.push(g.Piece.fromJSON(e));return u}(),new this(a)},h.prototype.copy=function(){return this.copyWithPieceList(this.pieceList)},h.prototype.copyWithPieceList=function(o){return new this.constructor(o.consolidate().toArray())},h.prototype.copyUsingObjectMap=function(o){var e,a;return a=function(){var d,i,u,s,n;for(u=this.getPieces(),n=[],d=0,i=u.length;i>d;d++)e=u[d],n.push((s=o.find(e))!=null?s:e);return n}.call(this),new this.constructor(a)},h.prototype.appendText=function(o){return this.insertTextAtPosition(o,this.getLength())},h.prototype.insertTextAtPosition=function(o,e){return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(o.pieceList,e))},h.prototype.removeTextAtRange=function(o){return this.copyWithPieceList(this.pieceList.removeObjectsInRange(o))},h.prototype.replaceTextAtRange=function(o,e){return this.removeTextAtRange(e).insertTextAtPosition(o,e[0])},h.prototype.moveTextFromRangeToPosition=function(o,e){var a,d;if(!(o[0]<=e&&e<=o[1]))return d=this.getTextAtRange(o),a=d.getLength(),o[0]a;a++)e=i[a],u.push(e.getAttributes());return u}.call(this),g.Hash.fromCommonAttributesOfObjects(o).toObject()},h.prototype.getCommonAttributesAtRange=function(o){var e;return(e=this.getTextAtRange(o).getCommonAttributes())!=null?e:{}},h.prototype.getExpandedRangeForAttributeAtOffset=function(o,e){var a,d,i;for(a=i=e,d=this.getLength();a>0&&this.getCommonAttributesAtRange([a-1,i])[o];)a--;for(;d>i&&this.getCommonAttributesAtRange([e,i+1])[o];)i++;return[a,i]},h.prototype.getTextAtRange=function(o){return this.copyWithPieceList(this.pieceList.getSplittableListInRange(o))},h.prototype.getStringAtRange=function(o){return this.pieceList.getSplittableListInRange(o).toString()},h.prototype.getStringAtPosition=function(o){return this.getStringAtRange([o,o+1])},h.prototype.startsWithString=function(o){return this.getStringAtRange([0,o.length])===o},h.prototype.endsWithString=function(o){var e;return e=this.getLength(),this.getStringAtRange([e-o.length,e])===o},h.prototype.getAttachmentPieces=function(){var o,e,a,d,i;for(d=this.pieceList.toArray(),i=[],o=0,e=d.length;e>o;o++)a=d[o],a.attachment!=null&&i.push(a);return i},h.prototype.getAttachments=function(){var o,e,a,d,i;for(d=this.getAttachmentPieces(),i=[],o=0,e=d.length;e>o;o++)a=d[o],i.push(a.attachment);return i},h.prototype.getAttachmentAndPositionById=function(o){var e,a,d,i,u,s;for(i=0,u=this.pieceList.toArray(),e=0,a=u.length;a>e;e++){if(d=u[e],((s=d.attachment)!=null?s.id:void 0)===o)return{attachment:d.attachment,position:i};i+=d.length}return{attachment:null,position:null}},h.prototype.getAttachmentById=function(o){var e,a,d;return d=this.getAttachmentAndPositionById(o),e=d.attachment,a=d.position,e},h.prototype.getRangeOfAttachment=function(o){var e,a;return a=this.getAttachmentAndPositionById(o.id),o=a.attachment,e=a.position,o!=null?[e,e+1]:void 0},h.prototype.updateAttributesForAttachment=function(o,e){var a;return(a=this.getRangeOfAttachment(e))?this.addAttributesAtRange(o,a):this},h.prototype.getLength=function(){return this.pieceList.getEndPosition()},h.prototype.isEmpty=function(){return this.getLength()===0},h.prototype.isEqualTo=function(o){var e;return h.__super__.isEqualTo.apply(this,arguments)||(o!=null&&(e=o.pieceList)!=null?e.isEqualTo(this.pieceList):void 0)},h.prototype.isBlockBreak=function(){return this.getLength()===1&&this.pieceList.getObjectAtIndex(0).isBlockBreak()},h.prototype.eachPiece=function(o){return this.pieceList.eachObject(o)},h.prototype.getPieces=function(){return this.pieceList.toArray()},h.prototype.getPieceAtPosition=function(o){return this.pieceList.getObjectAtPosition(o)},h.prototype.contentsForInspection=function(){return{pieceList:this.pieceList.inspect()}},h.prototype.toSerializableText=function(){var o;return o=this.pieceList.selectSplittableList(function(e){return e.isSerializable()}),this.copyWithPieceList(o)},h.prototype.toString=function(){return this.pieceList.toString()},h.prototype.toJSON=function(){return this.pieceList.toJSON()},h.prototype.toConsole=function(){var o;return JSON.stringify(function(){var e,a,d,i;for(d=this.pieceList.toArray(),i=[],e=0,a=d.length;a>e;e++)o=d[e],i.push(JSON.parse(o.toConsole()));return i}.call(this))},h.prototype.getDirection=function(){return g.getDirection(this.toString())},h.prototype.isRTL=function(){return this.getDirection()==="rtl"},h}(g.Object)}.call(this),function(){var x,b,y,h,o,e=function(u,s){function n(){this.constructor=u}for(var p in s)a.call(s,p)&&(u[p]=s[p]);return n.prototype=s.prototype,u.prototype=new n,u.__super__=s.prototype,u},a={}.hasOwnProperty,d=[].indexOf||function(u){for(var s=0,n=this.length;n>s;s++)if(s in this&&this[s]===u)return s;return-1},i=[].slice;x=g.arraysAreEqual,o=g.spliceArray,y=g.getBlockConfig,b=g.getBlockAttributeNames,h=g.getListAttributeNames,g.Block=function(u){function s(m,C){m==null&&(m=new g.Text),C==null&&(C=[]),s.__super__.constructor.apply(this,arguments),this.text=p(m),this.attributes=C}var n,p,c,v,t,r,l,A,f;return e(s,u),s.fromJSON=function(m){var C;return C=g.Text.fromJSON(m.text),new this(C,m.attributes)},s.prototype.isEmpty=function(){return this.text.isBlockBreak()},s.prototype.isEqualTo=function(m){return s.__super__.isEqualTo.apply(this,arguments)||this.text.isEqualTo(m?.text)&&x(this.attributes,m?.attributes)},s.prototype.copyWithText=function(m){return new this.constructor(m,this.attributes)},s.prototype.copyWithoutText=function(){return this.copyWithText(null)},s.prototype.copyWithAttributes=function(m){return new this.constructor(this.text,m)},s.prototype.copyWithoutAttributes=function(){return this.copyWithAttributes(null)},s.prototype.copyUsingObjectMap=function(m){var C;return this.copyWithText((C=m.find(this.text))?C:this.text.copyUsingObjectMap(m))},s.prototype.addAttribute=function(m){var C;return C=this.attributes.concat(v(m)),this.copyWithAttributes(C)},s.prototype.removeAttribute=function(m){var C,S;return S=y(m).listAttribute,C=r(r(this.attributes,m),S),this.copyWithAttributes(C)},s.prototype.removeLastAttribute=function(){return this.removeAttribute(this.getLastAttribute())},s.prototype.getLastAttribute=function(){return t(this.attributes)},s.prototype.getAttributes=function(){return this.attributes.slice(0)},s.prototype.getAttributeLevel=function(){return this.attributes.length},s.prototype.getAttributeAtLevel=function(m){return this.attributes[m-1]},s.prototype.hasAttribute=function(m){return d.call(this.attributes,m)>=0},s.prototype.hasAttributes=function(){return this.getAttributeLevel()>0},s.prototype.getLastNestableAttribute=function(){return t(this.getNestableAttributes())},s.prototype.getNestableAttributes=function(){var m,C,S,L,O;for(L=this.attributes,O=[],C=0,S=L.length;S>C;C++)m=L[C],y(m).nestable&&O.push(m);return O},s.prototype.getNestingLevel=function(){return this.getNestableAttributes().length},s.prototype.decreaseNestingLevel=function(){var m;return(m=this.getLastNestableAttribute())?this.removeAttribute(m):this},s.prototype.increaseNestingLevel=function(){var m,C,S;return(m=this.getLastNestableAttribute())?(S=this.attributes.lastIndexOf(m),C=o.apply(null,[this.attributes,S+1,0].concat(i.call(v(m)))),this.copyWithAttributes(C)):this},s.prototype.getListItemAttributes=function(){var m,C,S,L,O;for(L=this.attributes,O=[],C=0,S=L.length;S>C;C++)m=L[C],y(m).listAttribute&&O.push(m);return O},s.prototype.isListItem=function(){var m;return(m=y(this.getLastAttribute()))!=null?m.listAttribute:void 0},s.prototype.isTerminalBlock=function(){var m;return(m=y(this.getLastAttribute()))!=null?m.terminal:void 0},s.prototype.breaksOnReturn=function(){var m;return(m=y(this.getLastAttribute()))!=null?m.breakOnReturn:void 0},s.prototype.findLineBreakInDirectionFromPosition=function(m,C){var S,L;return L=this.toString(),S=function(){switch(m){case"forward":return L.indexOf(` -`,C);case"backward":return L.slice(0,C).lastIndexOf(` -`)}}(),S!==-1?S:void 0},s.prototype.contentsForInspection=function(){return{text:this.text.inspect(),attributes:this.attributes}},s.prototype.toString=function(){return this.text.toString()},s.prototype.toJSON=function(){return{text:this.text,attributes:this.attributes}},s.prototype.getDirection=function(){return this.text.getDirection()},s.prototype.isRTL=function(){return this.text.isRTL()},s.prototype.getLength=function(){return this.text.getLength()},s.prototype.canBeConsolidatedWith=function(m){return!this.hasAttributes()&&!m.hasAttributes()&&this.getDirection()===m.getDirection()},s.prototype.consolidateWith=function(m){var C,S;return C=g.Text.textForStringWithAttributes(` -`),S=this.getTextWithoutBlockBreak().appendText(C),this.copyWithText(S.appendText(m.text))},s.prototype.splitAtOffset=function(m){var C,S;return m===0?(C=null,S=this):m===this.getLength()?(C=this,S=null):(C=this.copyWithText(this.text.getTextAtRange([0,m])),S=this.copyWithText(this.text.getTextAtRange([m,this.getLength()]))),[C,S]},s.prototype.getBlockBreakPosition=function(){return this.text.getLength()-1},s.prototype.getTextWithoutBlockBreak=function(){return l(this.text)?this.text.getTextAtRange([0,this.getBlockBreakPosition()]):this.text.copy()},s.prototype.canBeGrouped=function(m){return this.attributes[m]},s.prototype.canBeGroupedWith=function(m,C){var S,L,O,D;return O=m.getAttributes(),L=O[C],S=this.attributes[C],!(S!==L||y(S).group===!1&&(D=O[C+1],d.call(h(),D)<0)||this.getDirection()!==m.getDirection()&&!m.isEmpty())},p=function(m){return m=f(m),m=n(m)},f=function(m){var C,S,L,O,D,R;return O=!1,R=m.getPieces(),S=2<=R.length?i.call(R,0,C=R.length-1):(C=0,[]),L=R[C++],L==null?m:(S=function(){var E,w,k;for(k=[],E=0,w=S.length;w>E;E++)D=S[E],D.isBlockBreak()?(O=!0,k.push(A(D))):k.push(D);return k}(),O?new g.Text(i.call(S).concat([L])):m)},c=g.Text.textForStringWithAttributes(` -`,{blockBreak:!0}),n=function(m){return l(m)?m:m.appendText(c)},l=function(m){var C,S;return S=m.getLength(),S===0?!1:(C=m.getTextAtRange([S-1,S]),C.isBlockBreak())},A=function(m){return m.copyWithoutAttribute("blockBreak")},v=function(m){var C;return C=y(m).listAttribute,C!=null?[C,m]:[m]},t=function(m){return m.slice(-1)[0]},r=function(m,C){var S;return S=m.lastIndexOf(C),S===-1?m:o(m,S,1)},s}(g.Object)}.call(this),function(){var x,b,y,h=function(d,i){function u(){this.constructor=d}for(var s in i)o.call(i,s)&&(d[s]=i[s]);return u.prototype=i.prototype,d.prototype=new u,d.__super__=i.prototype,d},o={}.hasOwnProperty,e=[].indexOf||function(d){for(var i=0,u=this.length;u>i;i++)if(i in this&&this[i]===d)return i;return-1},a=[].slice;b=g.tagName,y=g.walkTree,x=g.nodeIsAttachmentElement,g.HTMLSanitizer=function(d){function i(c,v){var t;t=v??{},this.allowedAttributes=t.allowedAttributes,this.forbiddenProtocols=t.forbiddenProtocols,this.forbiddenElements=t.forbiddenElements,this.allowedAttributes==null&&(this.allowedAttributes=u),this.forbiddenProtocols==null&&(this.forbiddenProtocols=n),this.forbiddenElements==null&&(this.forbiddenElements=s),this.body=p(c)}var u,s,n,p;return h(i,d),u="style href src width height class".split(" "),n="javascript:".split(" "),s="script iframe".split(" "),i.sanitize=function(c,v){var t;return t=new this(c,v),t.sanitize(),t},i.prototype.sanitize=function(){return this.sanitizeElements(),this.normalizeListElementNesting()},i.prototype.getHTML=function(){return this.body.innerHTML},i.prototype.getBody=function(){return this.body},i.prototype.sanitizeElements=function(){var c,v,t,r,l;for(l=y(this.body),r=[];l.nextNode();)switch(t=l.currentNode,t.nodeType){case Node.ELEMENT_NODE:this.elementIsRemovable(t)?r.push(t):this.sanitizeElement(t);break;case Node.COMMENT_NODE:r.push(t)}for(c=0,v=r.length;v>c;c++)t=r[c],g.removeNode(t);return this.body},i.prototype.sanitizeElement=function(c){var v,t,r,l,A;for(c.hasAttribute("href")&&(l=c.protocol,e.call(this.forbiddenProtocols,l)>=0&&c.removeAttribute("href")),A=a.call(c.attributes),v=0,t=A.length;t>v;v++)r=A[v].name,e.call(this.allowedAttributes,r)>=0||r.indexOf("data-trix")===0||c.removeAttribute(r);return c},i.prototype.normalizeListElementNesting=function(){var c,v,t,r,l;for(l=a.call(this.body.querySelectorAll("ul,ol")),c=0,v=l.length;v>c;c++)t=l[c],(r=t.previousElementSibling)&&b(r)==="li"&&r.appendChild(t);return this.body},i.prototype.elementIsRemovable=function(c){return c?.nodeType===Node.ELEMENT_NODE?this.elementIsForbidden(c)||this.elementIsntSerializable(c):void 0},i.prototype.elementIsForbidden=function(c){var v;return v=b(c),e.call(this.forbiddenElements,v)>=0},i.prototype.elementIsntSerializable=function(c){return c.getAttribute("data-trix-serialize")==="false"&&!x(c)},p=function(c){var v,t,r,l,A;for(c==null&&(c=""),c=c.replace(/<\/html[^>]*>[^]*$/i,""),v=document.implementation.createHTMLDocument(""),v.documentElement.innerHTML=c,A=v.head.querySelectorAll("style"),r=0,l=A.length;l>r;r++)t=A[r],v.body.appendChild(t);return v.body},i}(g.BasicObject)}.call(this),function(){var x,b,y,h,o,e,a,d,i,u,s,n=function(v,t){function r(){this.constructor=v}for(var l in t)p.call(t,l)&&(v[l]=t[l]);return r.prototype=t.prototype,v.prototype=new r,v.__super__=t.prototype,v},p={}.hasOwnProperty,c=[].indexOf||function(v){for(var t=0,r=this.length;r>t;t++)if(t in this&&this[t]===v)return t;return-1};x=g.arraysAreEqual,e=g.makeElement,u=g.tagName,o=g.getBlockTagNames,s=g.walkTree,h=g.findClosestElementFromNode,y=g.elementContainsNode,a=g.nodeIsAttachmentElement,d=g.normalizeSpaces,b=g.breakableWhitespacePattern,i=g.squishBreakableWhitespace,g.HTMLParser=function(v){function t(w,k){this.html=w,this.referenceElement=(k??{}).referenceElement,this.blocks=[],this.blockElements=[],this.processedElements=[]}var r,l,A,f,m,C,S,L,O,D,R,E;return n(t,v),t.parse=function(w,k){var T;return T=new this(w,k),T.parse(),T},t.prototype.getDocument=function(){return g.Document.fromJSON(this.blocks)},t.prototype.parse=function(){var w,k;try{for(this.createHiddenContainer(),w=g.HTMLSanitizer.sanitize(this.html).getHTML(),this.containerElement.innerHTML=w,k=s(this.containerElement,{usingFilter:S});k.nextNode();)this.processNode(k.currentNode);return this.translateBlockElementMarginsToNewlines()}finally{this.removeHiddenContainer()}},t.prototype.createHiddenContainer=function(){return this.referenceElement?(this.containerElement=this.referenceElement.cloneNode(!1),this.containerElement.removeAttribute("id"),this.containerElement.setAttribute("data-trix-internal",""),this.containerElement.style.display="none",this.referenceElement.parentNode.insertBefore(this.containerElement,this.referenceElement.nextSibling)):(this.containerElement=e({tagName:"div",style:{display:"none"}}),document.body.appendChild(this.containerElement))},t.prototype.removeHiddenContainer=function(){return g.removeNode(this.containerElement)},S=function(w){return u(w)==="style"?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},t.prototype.processNode=function(w){switch(w.nodeType){case Node.TEXT_NODE:if(!this.isInsignificantTextNode(w))return this.appendBlockForTextNode(w),this.processTextNode(w);break;case Node.ELEMENT_NODE:return this.appendBlockForElement(w),this.processElement(w)}},t.prototype.appendBlockForTextNode=function(w){var k,T,N;return T=w.parentNode,T===this.currentBlockElement&&this.isBlockElement(w.previousSibling)?this.appendStringWithAttributes(` -`):T!==this.containerElement&&!this.isBlockElement(T)||(k=this.getBlockAttributes(T),x(k,(N=this.currentBlock)!=null?N.attributes:void 0))?void 0:(this.currentBlock=this.appendBlockForAttributesWithElement(k,T),this.currentBlockElement=T)},t.prototype.appendBlockForElement=function(w){var k,T,N,P;if(N=this.isBlockElement(w),T=y(this.currentBlockElement,w),N&&!this.isBlockElement(w.firstChild)){if((!this.isInsignificantTextNode(w.firstChild)||!this.isBlockElement(w.firstElementChild))&&(k=this.getBlockAttributes(w),w.firstChild))return T&&x(k,this.currentBlock.attributes)?this.appendStringWithAttributes(` -`):(this.currentBlock=this.appendBlockForAttributesWithElement(k,w),this.currentBlockElement=w)}else if(this.currentBlockElement&&!T&&!N)return(P=this.findParentBlockElement(w))?this.appendBlockForElement(P):(this.currentBlock=this.appendEmptyBlock(),this.currentBlockElement=null)},t.prototype.findParentBlockElement=function(w){var k;for(k=w.parentElement;k&&k!==this.containerElement;){if(this.isBlockElement(k)&&c.call(this.blockElements,k)>=0)return k;k=k.parentElement}return null},t.prototype.processTextNode=function(w){var k,T;return T=w.data,l(w.parentNode)||(T=i(T),R((k=w.previousSibling)!=null?k.textContent:void 0)&&(T=m(T))),this.appendStringWithAttributes(T,this.getTextAttributes(w.parentNode))},t.prototype.processElement=function(w){var k,T,N,P,_;if(a(w))return k=L(w,"attachment"),Object.keys(k).length&&(P=this.getTextAttributes(w),this.appendAttachmentWithAttributes(k,P),w.innerHTML=""),this.processedElements.push(w);switch(u(w)){case"br":return this.isExtraBR(w)||this.isBlockElement(w.nextSibling)||this.appendStringWithAttributes(` -`,this.getTextAttributes(w)),this.processedElements.push(w);case"img":k={url:w.getAttribute("src"),contentType:"image"},N=f(w);for(T in N)_=N[T],k[T]=_;return this.appendAttachmentWithAttributes(k,this.getTextAttributes(w)),this.processedElements.push(w);case"tr":if(w.parentNode.firstChild!==w)return this.appendStringWithAttributes(` -`);break;case"td":if(w.parentNode.firstChild!==w)return this.appendStringWithAttributes(" | ")}},t.prototype.appendBlockForAttributesWithElement=function(w,k){var T;return this.blockElements.push(k),T=r(w),this.blocks.push(T),T},t.prototype.appendEmptyBlock=function(){return this.appendBlockForAttributesWithElement([],null)},t.prototype.appendStringWithAttributes=function(w,k){return this.appendPiece(D(w,k))},t.prototype.appendAttachmentWithAttributes=function(w,k){return this.appendPiece(O(w,k))},t.prototype.appendPiece=function(w){return this.blocks.length===0&&this.appendEmptyBlock(),this.blocks[this.blocks.length-1].text.push(w)},t.prototype.appendStringToTextAtIndex=function(w,k){var T,N;return N=this.blocks[k].text,T=N[N.length-1],T?.type==="string"?T.string+=w:N.push(D(w))},t.prototype.prependStringToTextAtIndex=function(w,k){var T,N;return N=this.blocks[k].text,T=N[0],T?.type==="string"?T.string=w+T.string:N.unshift(D(w))},D=function(w,k){var T;return k==null&&(k={}),T="string",w=d(w),{string:w,attributes:k,type:T}},O=function(w,k){var T;return k==null&&(k={}),T="attachment",{attachment:w,attributes:k,type:T}},r=function(w){var k;return w==null&&(w={}),k=[],{text:k,attributes:w}},t.prototype.getTextAttributes=function(w){var k,T,N,P,_,F,B,M,U,H,z,j;N={},U=g.config.textAttributes;for(k in U)if(_=U[k],_.tagName&&h(w,{matchingSelector:_.tagName,untilNode:this.containerElement}))N[k]=!0;else if(_.parser){if(j=_.parser(w)){for(T=!1,H=this.findBlockElementAncestors(w),F=0,M=H.length;M>F;F++)if(P=H[F],_.parser(P)===j){T=!0;break}T||(N[k]=j)}}else _.styleProperty&&(j=w.style[_.styleProperty])&&(N[k]=j);if(a(w)){z=L(w,"attributes");for(B in z)j=z[B],N[B]=j}return N},t.prototype.getBlockAttributes=function(w){var k,T,N,P;for(T=[];w&&w!==this.containerElement;){P=g.config.blockAttributes;for(k in P)N=P[k],N.parse!==!1&&u(w)===N.tagName&&(typeof N.test=="function"&&N.test(w)||!N.test)&&(T.push(k),N.listAttribute&&T.push(N.listAttribute));w=w.parentNode}return T.reverse()},t.prototype.findBlockElementAncestors=function(w){var k,T;for(k=[];w&&w!==this.containerElement;)T=u(w),c.call(o(),T)>=0&&k.push(w),w=w.parentNode;return k},L=function(w,k){try{return JSON.parse(w.getAttribute("data-trix-"+k))}catch{return{}}},f=function(w){var k,T,N;return N=w.getAttribute("width"),T=w.getAttribute("height"),k={},N&&(k.width=parseInt(N,10)),T&&(k.height=parseInt(T,10)),k},t.prototype.isBlockElement=function(w){var k;if(w?.nodeType===Node.ELEMENT_NODE&&!a(w)&&!h(w,{matchingSelector:"td",untilNode:this.containerElement}))return k=u(w),c.call(o(),k)>=0||window.getComputedStyle(w).display==="block"},t.prototype.isInsignificantTextNode=function(w){var k,T,N;if(w?.nodeType===Node.TEXT_NODE&&E(w.data)&&(T=w.parentNode,N=w.previousSibling,k=w.nextSibling,(!C(T.previousSibling)||this.isBlockElement(T.previousSibling))&&!l(T)))return!N||this.isBlockElement(N)||!k||this.isBlockElement(k)},t.prototype.isExtraBR=function(w){return u(w)==="br"&&this.isBlockElement(w.parentNode)&&w.parentNode.lastChild===w},l=function(w){var k;return k=window.getComputedStyle(w).whiteSpace,k==="pre"||k==="pre-wrap"||k==="pre-line"},C=function(w){return w&&!R(w.textContent)},t.prototype.translateBlockElementMarginsToNewlines=function(){var w,k,T,N,P,_,F,B;for(k=this.getMarginOfDefaultBlockElement(),F=this.blocks,B=[],N=T=0,P=F.length;P>T;N=++T)w=F[N],(_=this.getMarginOfBlockElementAtIndex(N))&&(_.top>2*k.top&&this.prependStringToTextAtIndex(` -`,N),B.push(_.bottom>2*k.bottom?this.appendStringToTextAtIndex(` -`,N):void 0));return B},t.prototype.getMarginOfBlockElementAtIndex=function(w){var k,T;return!(k=this.blockElements[w])||!k.textContent||(T=u(k),c.call(o(),T)>=0||c.call(this.processedElements,k)>=0)?void 0:A(k)},t.prototype.getMarginOfDefaultBlockElement=function(){var w;return w=e(g.config.blockAttributes.default.tagName),this.containerElement.appendChild(w),A(w)},A=function(w){var k;return k=window.getComputedStyle(w),k.display==="block"?{top:parseInt(k.marginTop),bottom:parseInt(k.marginBottom)}:void 0},m=function(w){return w.replace(RegExp("^"+b.source+"+"),"")},E=function(w){return RegExp("^"+b.source+"*$").test(w)},R=function(w){return/\s$/.test(w)},t}(g.BasicObject)}.call(this),function(){var x,b,y,h,o=function(i,u){function s(){this.constructor=i}for(var n in u)e.call(u,n)&&(i[n]=u[n]);return s.prototype=u.prototype,i.prototype=new s,i.__super__=u.prototype,i},e={}.hasOwnProperty,a=[].slice,d=[].indexOf||function(i){for(var u=0,s=this.length;s>u;u++)if(u in this&&this[u]===i)return u;return-1};x=g.arraysAreEqual,y=g.normalizeRange,h=g.rangeIsCollapsed,b=g.getBlockConfig,g.Document=function(i){function u(n){n==null&&(n=[]),u.__super__.constructor.apply(this,arguments),n.length===0&&(n=[new g.Block]),this.blockList=g.SplittableList.box(n)}var s;return o(u,i),u.fromJSON=function(n){var p,c;return c=function(){var v,t,r;for(r=[],v=0,t=n.length;t>v;v++)p=n[v],r.push(g.Block.fromJSON(p));return r}(),new this(c)},u.fromHTML=function(n,p){return g.HTMLParser.parse(n,p).getDocument()},u.fromString=function(n,p){var c;return c=g.Text.textForStringWithAttributes(n,p),new this([new g.Block(c)])},u.prototype.isEmpty=function(){var n;return this.blockList.length===1&&(n=this.getBlockAtIndex(0),n.isEmpty()&&!n.hasAttributes())},u.prototype.copy=function(n){var p;return n==null&&(n={}),p=n.consolidateBlocks?this.blockList.consolidate().toArray():this.blockList.toArray(),new this.constructor(p)},u.prototype.copyUsingObjectsFromDocument=function(n){var p;return p=new g.ObjectMap(n.getObjects()),this.copyUsingObjectMap(p)},u.prototype.copyUsingObjectMap=function(n){var p,c,v;return c=function(){var t,r,l,A;for(l=this.getBlocks(),A=[],t=0,r=l.length;r>t;t++)p=l[t],A.push((v=n.find(p))?v:p.copyUsingObjectMap(n));return A}.call(this),new this.constructor(c)},u.prototype.copyWithBaseBlockAttributes=function(n){var p,c,v;return n==null&&(n=[]),v=function(){var t,r,l,A;for(l=this.getBlocks(),A=[],t=0,r=l.length;r>t;t++)c=l[t],p=n.concat(c.getAttributes()),A.push(c.copyWithAttributes(p));return A}.call(this),new this.constructor(v)},u.prototype.replaceBlock=function(n,p){var c;return c=this.blockList.indexOf(n),c===-1?this:new this.constructor(this.blockList.replaceObjectAtIndex(p,c))},u.prototype.insertDocumentAtRange=function(n,p){var c,v,t,r,l,A,f;return v=n.blockList,l=(p=y(p))[0],A=this.locationFromPosition(l),t=A.index,r=A.offset,f=this,c=this.getBlockAtPosition(l),h(p)&&c.isEmpty()&&!c.hasAttributes()?f=new this.constructor(f.blockList.removeObjectAtIndex(t)):c.getBlockBreakPosition()===r&&l++,f=f.removeTextAtRange(p),new this.constructor(f.blockList.insertSplittableListAtPosition(v,l))},u.prototype.mergeDocumentAtRange=function(n,p){var c,v,t,r,l,A,f,m,C,S,L,O;return L=(p=y(p))[0],S=this.locationFromPosition(L),v=this.getBlockAtIndex(S.index).getAttributes(),c=n.getBaseBlockAttributes(),O=v.slice(-c.length),x(c,O)?(f=v.slice(0,-c.length),A=n.copyWithBaseBlockAttributes(f)):A=n.copy({consolidateBlocks:!0}).copyWithBaseBlockAttributes(v),t=A.getBlockCount(),r=A.getBlockAtIndex(0),x(v,r.getAttributes())?(l=r.getTextWithoutBlockBreak(),C=this.insertTextAtRange(l,p),t>1&&(A=new this.constructor(A.getBlocks().slice(1)),m=L+l.getLength(),C=C.insertDocumentAtRange(A,m))):C=this.insertDocumentAtRange(A,p),C},u.prototype.insertTextAtRange=function(n,p){var c,v,t,r,l;return l=(p=y(p))[0],r=this.locationFromPosition(l),v=r.index,t=r.offset,c=this.removeTextAtRange(p),new this.constructor(c.blockList.editObjectAtIndex(v,function(A){return A.copyWithText(A.text.insertTextAtPosition(n,t))}))},u.prototype.removeTextAtRange=function(n){var p,c,v,t,r,l,A,f,m,C,S,L,O,D,R,E,w,k,T,N,P;return C=n=y(n),f=C[0],k=C[1],h(n)?this:(S=this.locationRangeFromRange(n),l=S[0],E=S[1],r=l.index,A=l.offset,t=this.getBlockAtIndex(r),R=E.index,w=E.offset,D=this.getBlockAtIndex(R),L=k-f===1&&t.getBlockBreakPosition()===A&&D.getBlockBreakPosition()!==w&&D.text.getStringAtPosition(w)===` -`,L?v=this.blockList.editObjectAtIndex(R,function(_){return _.copyWithText(_.text.removeTextAtRange([w,w+1]))}):(m=t.text.getTextAtRange([0,A]),T=D.text.getTextAtRange([w,D.getLength()]),N=m.appendText(T),O=r!==R&&A===0,P=O&&t.getAttributeLevel()>=D.getAttributeLevel(),c=P?D.copyWithText(N):t.copyWithText(N),p=R+1-r,v=this.blockList.splice(r,p,c)),new this.constructor(v))},u.prototype.moveTextFromRangeToPosition=function(n,p){var c,v,t,r,l,A,f,m,C,S;return A=n=y(n),C=A[0],t=A[1],p>=C&&t>=p?this:(v=this.getDocumentAtRange(n),m=this.removeTextAtRange(n),l=p>C,l&&(p-=v.getLength()),f=v.getBlocks(),r=f[0],c=2<=f.length?a.call(f,1):[],c.length===0?(S=r.getTextWithoutBlockBreak(),l&&(p+=1)):S=r.text,m=m.insertTextAtRange(S,p),c.length===0?m:(v=new this.constructor(c),p+=S.getLength(),m.insertDocumentAtRange(v,p)))},u.prototype.addAttributeAtRange=function(n,p,c){var v;return v=this.blockList,this.eachBlockAtRange(c,function(t,r,l){return v=v.editObjectAtIndex(l,function(){return b(n)?t.addAttribute(n,p):r[0]===r[1]?t:t.copyWithText(t.text.addAttributeAtRange(n,p,r))})}),new this.constructor(v)},u.prototype.addAttribute=function(n,p){var c;return c=this.blockList,this.eachBlock(function(v,t){return c=c.editObjectAtIndex(t,function(){return v.addAttribute(n,p)})}),new this.constructor(c)},u.prototype.removeAttributeAtRange=function(n,p){var c;return c=this.blockList,this.eachBlockAtRange(p,function(v,t,r){return b(n)?c=c.editObjectAtIndex(r,function(){return v.removeAttribute(n)}):t[0]!==t[1]?c=c.editObjectAtIndex(r,function(){return v.copyWithText(v.text.removeAttributeAtRange(n,t))}):void 0}),new this.constructor(c)},u.prototype.updateAttributesForAttachment=function(n,p){var c,v,t,r;return t=(v=this.getRangeOfAttachment(p))[0],c=this.locationFromPosition(t).index,r=this.getTextAtIndex(c),new this.constructor(this.blockList.editObjectAtIndex(c,function(l){return l.copyWithText(r.updateAttributesForAttachment(n,p))}))},u.prototype.removeAttributeForAttachment=function(n,p){var c;return c=this.getRangeOfAttachment(p),this.removeAttributeAtRange(n,c)},u.prototype.insertBlockBreakAtRange=function(n){var p,c,v,t;return t=(n=y(n))[0],v=this.locationFromPosition(t).offset,c=this.removeTextAtRange(n),v===0&&(p=[new g.Block]),new this.constructor(c.blockList.insertSplittableListAtPosition(new g.SplittableList(p),t))},u.prototype.applyBlockAttributeAtRange=function(n,p,c){var v,t,r,l;return r=this.expandRangeToLineBreaksAndSplitBlocks(c),t=r.document,c=r.range,v=b(n),v.listAttribute?(t=t.removeLastListAttributeAtRange(c,{exceptAttributeName:n}),l=t.convertLineBreaksToBlockBreaksInRange(c),t=l.document,c=l.range):t=v.exclusive?t.removeBlockAttributesAtRange(c):v.terminal?t.removeLastTerminalAttributeAtRange(c):t.consolidateBlocksAtRange(c),t.addAttributeAtRange(n,p,c)},u.prototype.removeLastListAttributeAtRange=function(n,p){var c;return p==null&&(p={}),c=this.blockList,this.eachBlockAtRange(n,function(v,t,r){var l;if((l=v.getLastAttribute())&&b(l).listAttribute&&l!==p.exceptAttributeName)return c=c.editObjectAtIndex(r,function(){return v.removeAttribute(l)})}),new this.constructor(c)},u.prototype.removeLastTerminalAttributeAtRange=function(n){var p;return p=this.blockList,this.eachBlockAtRange(n,function(c,v,t){var r;if((r=c.getLastAttribute())&&b(r).terminal)return p=p.editObjectAtIndex(t,function(){return c.removeAttribute(r)})}),new this.constructor(p)},u.prototype.removeBlockAttributesAtRange=function(n){var p;return p=this.blockList,this.eachBlockAtRange(n,function(c,v,t){return c.hasAttributes()?p=p.editObjectAtIndex(t,function(){return c.copyWithoutAttributes()}):void 0}),new this.constructor(p)},u.prototype.expandRangeToLineBreaksAndSplitBlocks=function(n){var p,c,v,t,r,l,A,f,m;return l=n=y(n),m=l[0],t=l[1],f=this.locationFromPosition(m),v=this.locationFromPosition(t),p=this,A=p.getBlockAtIndex(f.index),(f.offset=A.findLineBreakInDirectionFromPosition("backward",f.offset))!=null&&(r=p.positionFromLocation(f),p=p.insertBlockBreakAtRange([r,r+1]),v.index+=1,v.offset-=p.getBlockAtIndex(f.index).getLength(),f.index+=1),f.offset=0,v.offset===0&&v.index>f.index?(v.index-=1,v.offset=p.getBlockAtIndex(v.index).getBlockBreakPosition()):(c=p.getBlockAtIndex(v.index),c.text.getStringAtRange([v.offset-1,v.offset])===` -`?v.offset-=1:v.offset=c.findLineBreakInDirectionFromPosition("forward",v.offset),v.offset!==c.getBlockBreakPosition()&&(r=p.positionFromLocation(v),p=p.insertBlockBreakAtRange([r,r+1]))),m=p.positionFromLocation(f),t=p.positionFromLocation(v),n=y([m,t]),{document:p,range:n}},u.prototype.convertLineBreaksToBlockBreaksInRange=function(n){var p,c,v;return c=(n=y(n))[0],v=this.getStringAtRange(n).slice(0,-1),p=this,v.replace(/.*?\n/g,function(t){return c+=t.length,p=p.insertBlockBreakAtRange([c-1,c])}),{document:p,range:n}},u.prototype.consolidateBlocksAtRange=function(n){var p,c,v,t,r;return v=n=y(n),r=v[0],c=v[1],t=this.locationFromPosition(r).index,p=this.locationFromPosition(c).index,new this.constructor(this.blockList.consolidateFromIndexToIndex(t,p))},u.prototype.getDocumentAtRange=function(n){var p;return n=y(n),p=this.blockList.getSplittableListInRange(n).toArray(),new this.constructor(p)},u.prototype.getStringAtRange=function(n){var p,c,v;return v=n=y(n),c=v[v.length-1],c!==this.getLength()&&(p=-1),this.getDocumentAtRange(n).toString().slice(0,p)},u.prototype.getBlockAtIndex=function(n){return this.blockList.getObjectAtIndex(n)},u.prototype.getBlockAtPosition=function(n){var p;return p=this.locationFromPosition(n).index,this.getBlockAtIndex(p)},u.prototype.getTextAtIndex=function(n){var p;return(p=this.getBlockAtIndex(n))!=null?p.text:void 0},u.prototype.getTextAtPosition=function(n){var p;return p=this.locationFromPosition(n).index,this.getTextAtIndex(p)},u.prototype.getPieceAtPosition=function(n){var p,c,v;return v=this.locationFromPosition(n),p=v.index,c=v.offset,this.getTextAtIndex(p).getPieceAtPosition(c)},u.prototype.getCharacterAtPosition=function(n){var p,c,v;return v=this.locationFromPosition(n),p=v.index,c=v.offset,this.getTextAtIndex(p).getStringAtRange([c,c+1])},u.prototype.getLength=function(){return this.blockList.getEndPosition()},u.prototype.getBlocks=function(){return this.blockList.toArray()},u.prototype.getBlockCount=function(){return this.blockList.length},u.prototype.getEditCount=function(){return this.editCount},u.prototype.eachBlock=function(n){return this.blockList.eachObject(n)},u.prototype.eachBlockAtRange=function(n,p){var c,v,t,r,l,A,f,m,C,S,L,O;if(A=n=y(n),L=A[0],t=A[1],S=this.locationFromPosition(L),v=this.locationFromPosition(t),S.index===v.index)return c=this.getBlockAtIndex(S.index),O=[S.offset,v.offset],p(c,O,S.index);for(C=[],l=r=f=S.index,m=v.index;m>=f?m>=r:r>=m;l=m>=f?++r:--r)(c=this.getBlockAtIndex(l))?(O=function(){switch(l){case S.index:return[S.offset,c.text.getLength()];case v.index:return[0,v.offset];default:return[0,c.text.getLength()]}}(),C.push(p(c,O,l))):C.push(void 0);return C},u.prototype.getCommonAttributesAtRange=function(n){var p,c,v;return c=(n=y(n))[0],h(n)?this.getCommonAttributesAtPosition(c):(v=[],p=[],this.eachBlockAtRange(n,function(t,r){return r[0]!==r[1]?(v.push(t.text.getCommonAttributesAtRange(r)),p.push(s(t))):void 0}),g.Hash.fromCommonAttributesOfObjects(v).merge(g.Hash.fromCommonAttributesOfObjects(p)).toObject())},u.prototype.getCommonAttributesAtPosition=function(n){var p,c,v,t,r,l,A,f,m,C;if(m=this.locationFromPosition(n),r=m.index,f=m.offset,v=this.getBlockAtIndex(r),!v)return{};t=s(v),p=v.text.getAttributesAtPosition(f),c=v.text.getAttributesAtPosition(f-1),l=function(){var S,L;S=g.config.textAttributes,L=[];for(A in S)C=S[A],C.inheritable&&L.push(A);return L}();for(A in c)C=c[A],(C===p[A]||d.call(l,A)>=0)&&(t[A]=C);return t},u.prototype.getRangeOfCommonAttributeAtPosition=function(n,p){var c,v,t,r,l,A,f,m,C;return l=this.locationFromPosition(p),t=l.index,r=l.offset,C=this.getTextAtIndex(t),A=C.getExpandedRangeForAttributeAtOffset(n,r),m=A[0],v=A[1],f=this.positionFromLocation({index:t,offset:m}),c=this.positionFromLocation({index:t,offset:v}),y([f,c])},u.prototype.getBaseBlockAttributes=function(){var n,p,c,v,t,r,l;for(n=this.getBlockAtIndex(0).getAttributes(),c=v=1,l=this.getBlockCount();l>=1?l>v:v>l;c=l>=1?++v:--v)p=this.getBlockAtIndex(c).getAttributes(),r=Math.min(n.length,p.length),n=function(){var A,f,m;for(m=[],t=A=0,f=r;(f>=0?f>A:A>f)&&p[t]===n[t];t=f>=0?++A:--A)m.push(p[t]);return m}();return n},s=function(n){var p,c;return c={},(p=n.getLastAttribute())&&(c[p]=!0),c},u.prototype.getAttachmentById=function(n){var p,c,v,t;for(t=this.getAttachments(),c=0,v=t.length;v>c;c++)if(p=t[c],p.id===n)return p},u.prototype.getAttachmentPieces=function(){var n;return n=[],this.blockList.eachObject(function(p){var c;return c=p.text,n=n.concat(c.getAttachmentPieces())}),n},u.prototype.getAttachments=function(){var n,p,c,v,t;for(v=this.getAttachmentPieces(),t=[],n=0,p=v.length;p>n;n++)c=v[n],t.push(c.attachment);return t},u.prototype.getRangeOfAttachment=function(n){var p,c,v,t,r,l,A;for(t=0,r=this.blockList.toArray(),c=p=0,v=r.length;v>p;c=++p){if(l=r[c].text,A=l.getRangeOfAttachment(n))return y([t+A[0],t+A[1]]);t+=l.getLength()}},u.prototype.getLocationRangeOfAttachment=function(n){var p;return p=this.getRangeOfAttachment(n),this.locationRangeFromRange(p)},u.prototype.getAttachmentPieceForAttachment=function(n){var p,c,v,t;for(t=this.getAttachmentPieces(),p=0,c=t.length;c>p;p++)if(v=t[p],v.attachment===n)return v},u.prototype.findRangesForBlockAttribute=function(n){var p,c,v,t,r,l,A;for(r=0,l=[],A=this.getBlocks(),c=0,v=A.length;v>c;c++)p=A[c],t=p.getLength(),p.hasAttribute(n)&&l.push([r,r+t]),r+=t;return l},u.prototype.findRangesForTextAttribute=function(n,p){var c,v,t,r,l,A,f,m,C,S;for(S=(p??{}).withValue,A=0,f=[],m=[],r=function(L){return S!=null?L.getAttribute(n)===S:L.hasAttribute(n)},C=this.getPieces(),c=0,v=C.length;v>c;c++)l=C[c],t=l.getLength(),r(l)&&(f[1]===A?f[1]=A+t:m.push(f=[A,A+t])),A+=t;return m},u.prototype.locationFromPosition=function(n){var p,c;return c=this.blockList.findIndexAndOffsetAtPosition(Math.max(0,n)),c.index!=null?c:(p=this.getBlocks(),{index:p.length-1,offset:p[p.length-1].getLength()})},u.prototype.positionFromLocation=function(n){return this.blockList.findPositionAtIndexAndOffset(n.index,n.offset)},u.prototype.locationRangeFromPosition=function(n){return y(this.locationFromPosition(n))},u.prototype.locationRangeFromRange=function(n){var p,c,v,t;if(n=y(n))return t=n[0],c=n[1],v=this.locationFromPosition(t),p=this.locationFromPosition(c),y([v,p])},u.prototype.rangeFromLocationRange=function(n){var p,c;return n=y(n),p=this.positionFromLocation(n[0]),h(n)||(c=this.positionFromLocation(n[1])),y([p,c])},u.prototype.isEqualTo=function(n){return this.blockList.isEqualTo(n?.blockList)},u.prototype.getTexts=function(){var n,p,c,v,t;for(v=this.getBlocks(),t=[],p=0,c=v.length;c>p;p++)n=v[p],t.push(n.text);return t},u.prototype.getPieces=function(){var n,p,c,v,t;for(c=[],v=this.getTexts(),n=0,p=v.length;p>n;n++)t=v[n],c.push.apply(c,t.getPieces());return c},u.prototype.getObjects=function(){return this.getBlocks().concat(this.getTexts()).concat(this.getPieces())},u.prototype.toSerializableDocument=function(){var n;return n=[],this.blockList.eachObject(function(p){return n.push(p.copyWithText(p.text.toSerializableText()))}),new this.constructor(n)},u.prototype.toString=function(){return this.blockList.toString()},u.prototype.toJSON=function(){return this.blockList.toJSON()},u.prototype.toConsole=function(){var n;return JSON.stringify(function(){var p,c,v,t;for(v=this.blockList.toArray(),t=[],p=0,c=v.length;c>p;p++)n=v[p],t.push(JSON.parse(n.text.toConsole()));return t}.call(this))},u}(g.Object)}.call(this),function(){g.LineBreakInsertion=function(){function x(b){var y;this.composition=b,this.document=this.composition.document,y=this.composition.getSelectedRange(),this.startPosition=y[0],this.endPosition=y[1],this.startLocation=this.document.locationFromPosition(this.startPosition),this.endLocation=this.document.locationFromPosition(this.endPosition),this.block=this.document.getBlockAtIndex(this.endLocation.index),this.breaksOnReturn=this.block.breaksOnReturn(),this.previousCharacter=this.block.text.getStringAtPosition(this.endLocation.offset-1),this.nextCharacter=this.block.text.getStringAtPosition(this.endLocation.offset)}return x.prototype.shouldInsertBlockBreak=function(){return this.block.hasAttributes()&&this.block.isListItem()&&!this.block.isEmpty()?this.startLocation.offset!==0:this.breaksOnReturn&&this.nextCharacter!==` -`},x.prototype.shouldBreakFormattedBlock=function(){return this.block.hasAttributes()&&!this.block.isListItem()&&(this.breaksOnReturn&&this.nextCharacter===` -`||this.previousCharacter===` -`)},x.prototype.shouldDecreaseListLevel=function(){return this.block.hasAttributes()&&this.block.isListItem()&&this.block.isEmpty()},x.prototype.shouldPrependListItem=function(){return this.block.isListItem()&&this.startLocation.offset===0&&!this.block.isEmpty()},x.prototype.shouldRemoveLastBlockAttribute=function(){return this.block.hasAttributes()&&!this.block.isListItem()&&this.block.isEmpty()},x}()}.call(this),function(){var x,b,y,h,o,e,a,d,i,u,s=function(p,c){function v(){this.constructor=p}for(var t in c)n.call(c,t)&&(p[t]=c[t]);return v.prototype=c.prototype,p.prototype=new v,p.__super__=c.prototype,p},n={}.hasOwnProperty;e=g.normalizeRange,i=g.rangesAreEqual,d=g.rangeIsCollapsed,a=g.objectsAreEqual,x=g.arrayStartsWith,u=g.summarizeArrayChange,y=g.getAllAttributeNames,h=g.getBlockConfig,o=g.getTextConfig,b=g.extend,g.Composition=function(p){function c(){this.document=new g.Document,this.attachments=[],this.currentAttributes={},this.revision=0}var v;return s(c,p),c.prototype.setDocument=function(t){var r;return t.isEqualTo(this.document)?void 0:(this.document=t,this.refreshAttachments(),this.revision++,(r=this.delegate)!=null&&typeof r.compositionDidChangeDocument=="function"?r.compositionDidChangeDocument(t):void 0)},c.prototype.getSnapshot=function(){return{document:this.document,selectedRange:this.getSelectedRange()}},c.prototype.loadSnapshot=function(t){var r,l,A,f;return r=t.document,f=t.selectedRange,(l=this.delegate)!=null&&typeof l.compositionWillLoadSnapshot=="function"&&l.compositionWillLoadSnapshot(),this.setDocument(r??new g.Document),this.setSelection(f??[0,0]),(A=this.delegate)!=null&&typeof A.compositionDidLoadSnapshot=="function"?A.compositionDidLoadSnapshot():void 0},c.prototype.insertText=function(t,r){var l,A,f,m;return m=(r??{updatePosition:!0}).updatePosition,A=this.getSelectedRange(),this.setDocument(this.document.insertTextAtRange(t,A)),f=A[0],l=f+t.getLength(),m&&this.setSelection(l),this.notifyDelegateOfInsertionAtRange([f,l])},c.prototype.insertBlock=function(t){var r;return t==null&&(t=new g.Block),r=new g.Document([t]),this.insertDocument(r)},c.prototype.insertDocument=function(t){var r,l,A;return t==null&&(t=new g.Document),l=this.getSelectedRange(),this.setDocument(this.document.insertDocumentAtRange(t,l)),A=l[0],r=A+t.getLength(),this.setSelection(r),this.notifyDelegateOfInsertionAtRange([A,r])},c.prototype.insertString=function(t,r){var l,A;return l=this.getCurrentTextAttributes(),A=g.Text.textForStringWithAttributes(t,l),this.insertText(A,r)},c.prototype.insertBlockBreak=function(){var t,r,l;return r=this.getSelectedRange(),this.setDocument(this.document.insertBlockBreakAtRange(r)),l=r[0],t=l+1,this.setSelection(t),this.notifyDelegateOfInsertionAtRange([l,t])},c.prototype.insertLineBreak=function(){var t,r;return r=new g.LineBreakInsertion(this),r.shouldDecreaseListLevel()?(this.decreaseListLevel(),this.setSelection(r.startPosition)):r.shouldPrependListItem()?(t=new g.Document([r.block.copyWithoutText()]),this.insertDocument(t)):r.shouldInsertBlockBreak()?this.insertBlockBreak():r.shouldRemoveLastBlockAttribute()?this.removeLastBlockAttribute():r.shouldBreakFormattedBlock()?this.breakFormattedBlock(r):this.insertString(` -`)},c.prototype.insertHTML=function(t){var r,l,A,f;return r=g.Document.fromHTML(t),A=this.getSelectedRange(),this.setDocument(this.document.mergeDocumentAtRange(r,A)),f=A[0],l=f+r.getLength()-1,this.setSelection(l),this.notifyDelegateOfInsertionAtRange([f,l])},c.prototype.replaceHTML=function(t){var r,l,A;return r=g.Document.fromHTML(t).copyUsingObjectsFromDocument(this.document),l=this.getLocationRange({strict:!1}),A=this.document.rangeFromLocationRange(l),this.setDocument(r),this.setSelection(A)},c.prototype.insertFile=function(t){return this.insertFiles([t])},c.prototype.insertFiles=function(t){var r,l,A,f,m,C;for(l=[],f=0,m=t.length;m>f;f++)A=t[f],(C=this.delegate)!=null&&C.compositionShouldAcceptFile(A)&&(r=g.Attachment.attachmentForFile(A),l.push(r));return this.insertAttachments(l)},c.prototype.insertAttachment=function(t){return this.insertAttachments([t])},c.prototype.insertAttachments=function(t){var r,l,A,f,m,C,S,L,O;for(L=new g.Text,f=0,m=t.length;m>f;f++)r=t[f],O=r.getType(),C=(S=g.config.attachments[O])!=null?S.presentation:void 0,A=this.getCurrentTextAttributes(),C&&(A.presentation=C),l=g.Text.textForAttachmentWithAttributes(r,A),L=L.appendText(l);return this.insertText(L)},c.prototype.shouldManageDeletingInDirection=function(t){var r;if(r=this.getLocationRange(),d(r)){if(t==="backward"&&r[0].offset===0||this.shouldManageMovingCursorInDirection(t))return!0}else if(r[0].index!==r[1].index)return!0;return!1},c.prototype.deleteInDirection=function(t,r){var l,A,f,m,C,S,L,O;return m=(r??{}).length,C=this.getLocationRange(),S=this.getSelectedRange(),L=d(S),L?f=t==="backward"&&C[0].offset===0:O=C[0].index!==C[1].index,f&&this.canDecreaseBlockAttributeLevel()&&(A=this.getBlock(),A.isListItem()?this.decreaseListLevel():this.decreaseBlockAttributeLevel(),this.setSelection(S[0]),A.isEmpty())?!1:(L&&(S=this.getExpandedRangeInDirection(t,{length:m}),t==="backward"&&(l=this.getAttachmentAtRange(S))),l?(this.editAttachment(l),!1):(this.setDocument(this.document.removeTextAtRange(S)),this.setSelection(S[0]),f||O?!1:void 0))},c.prototype.moveTextFromRange=function(t){var r;return r=this.getSelectedRange()[0],this.setDocument(this.document.moveTextFromRangeToPosition(t,r)),this.setSelection(r)},c.prototype.removeAttachment=function(t){var r;return(r=this.document.getRangeOfAttachment(t))?(this.stopEditingAttachment(),this.setDocument(this.document.removeTextAtRange(r)),this.setSelection(r[0])):void 0},c.prototype.removeLastBlockAttribute=function(){var t,r,l,A;return l=this.getSelectedRange(),A=l[0],r=l[1],t=this.document.getBlockAtPosition(r),this.removeCurrentAttribute(t.getLastAttribute()),this.setSelection(A)},v=" ",c.prototype.insertPlaceholder=function(){return this.placeholderPosition=this.getPosition(),this.insertString(v)},c.prototype.selectPlaceholder=function(){return this.placeholderPosition!=null?(this.setSelectedRange([this.placeholderPosition,this.placeholderPosition+v.length]),this.getSelectedRange()):void 0},c.prototype.forgetPlaceholder=function(){return this.placeholderPosition=null},c.prototype.hasCurrentAttribute=function(t){var r;return r=this.currentAttributes[t],r!=null&&r!==!1},c.prototype.toggleCurrentAttribute=function(t){var r;return(r=!this.currentAttributes[t])?this.setCurrentAttribute(t,r):this.removeCurrentAttribute(t)},c.prototype.canSetCurrentAttribute=function(t){return h(t)?this.canSetCurrentBlockAttribute(t):this.canSetCurrentTextAttribute(t)},c.prototype.canSetCurrentTextAttribute=function(){var t,r,l,A,f;if(r=this.getSelectedDocument()){for(f=r.getAttachments(),l=0,A=f.length;A>l;l++)if(t=f[l],!t.hasContent())return!1;return!0}},c.prototype.canSetCurrentBlockAttribute=function(){var t;if(t=this.getBlock())return!t.isTerminalBlock()},c.prototype.setCurrentAttribute=function(t,r){return h(t)?this.setBlockAttribute(t,r):(this.setTextAttribute(t,r),this.currentAttributes[t]=r,this.notifyDelegateOfCurrentAttributesChange())},c.prototype.setTextAttribute=function(t,r){var l,A,f,m;if(A=this.getSelectedRange())return f=A[0],l=A[1],f!==l?this.setDocument(this.document.addAttributeAtRange(t,r,A)):t==="href"?(m=g.Text.textForStringWithAttributes(r,{href:r}),this.insertText(m)):void 0},c.prototype.setBlockAttribute=function(t,r){var l,A;if(A=this.getSelectedRange())return this.canSetCurrentAttribute(t)?(l=this.getBlock(),this.setDocument(this.document.applyBlockAttributeAtRange(t,r,A)),this.setSelection(A)):void 0},c.prototype.removeCurrentAttribute=function(t){return h(t)?(this.removeBlockAttribute(t),this.updateCurrentAttributes()):(this.removeTextAttribute(t),delete this.currentAttributes[t],this.notifyDelegateOfCurrentAttributesChange())},c.prototype.removeTextAttribute=function(t){var r;if(r=this.getSelectedRange())return this.setDocument(this.document.removeAttributeAtRange(t,r))},c.prototype.removeBlockAttribute=function(t){var r;if(r=this.getSelectedRange())return this.setDocument(this.document.removeAttributeAtRange(t,r))},c.prototype.canDecreaseNestingLevel=function(){var t;return((t=this.getBlock())!=null?t.getNestingLevel():void 0)>0},c.prototype.canIncreaseNestingLevel=function(){var t,r,l;if(t=this.getBlock())return(l=h(t.getLastNestableAttribute()))!=null&&l.listAttribute?(r=this.getPreviousBlock())?x(r.getListItemAttributes(),t.getListItemAttributes()):void 0:t.getNestingLevel()>0},c.prototype.decreaseNestingLevel=function(){var t;if(t=this.getBlock())return this.setDocument(this.document.replaceBlock(t,t.decreaseNestingLevel()))},c.prototype.increaseNestingLevel=function(){var t;if(t=this.getBlock())return this.setDocument(this.document.replaceBlock(t,t.increaseNestingLevel()))},c.prototype.canDecreaseBlockAttributeLevel=function(){var t;return((t=this.getBlock())!=null?t.getAttributeLevel():void 0)>0},c.prototype.decreaseBlockAttributeLevel=function(){var t,r;return(t=(r=this.getBlock())!=null?r.getLastAttribute():void 0)?this.removeCurrentAttribute(t):void 0},c.prototype.decreaseListLevel=function(){var t,r,l,A,f,m;for(m=this.getSelectedRange()[0],f=this.document.locationFromPosition(m).index,l=f,t=this.getBlock().getAttributeLevel();(r=this.document.getBlockAtIndex(l+1))&&r.isListItem()&&r.getAttributeLevel()>t;)l++;return m=this.document.positionFromLocation({index:f,offset:0}),A=this.document.positionFromLocation({index:l,offset:0}),this.setDocument(this.document.removeLastListAttributeAtRange([m,A]))},c.prototype.updateCurrentAttributes=function(){var t,r,l,A,f,m;if(m=this.getSelectedRange({ignoreLock:!0})){for(r=this.document.getCommonAttributesAtRange(m),f=y(),l=0,A=f.length;A>l;l++)t=f[l],r[t]||this.canSetCurrentAttribute(t)||(r[t]=!1);if(!a(r,this.currentAttributes))return this.currentAttributes=r,this.notifyDelegateOfCurrentAttributesChange()}},c.prototype.getCurrentAttributes=function(){return b.call({},this.currentAttributes)},c.prototype.getCurrentTextAttributes=function(){var t,r,l,A;t={},l=this.currentAttributes;for(r in l)A=l[r],A!==!1&&o(r)&&(t[r]=A);return t},c.prototype.freezeSelection=function(){return this.setCurrentAttribute("frozen",!0)},c.prototype.thawSelection=function(){return this.removeCurrentAttribute("frozen")},c.prototype.hasFrozenSelection=function(){return this.hasCurrentAttribute("frozen")},c.proxyMethod("getSelectionManager().getPointRange"),c.proxyMethod("getSelectionManager().setLocationRangeFromPointRange"),c.proxyMethod("getSelectionManager().createLocationRangeFromDOMRange"),c.proxyMethod("getSelectionManager().locationIsCursorTarget"),c.proxyMethod("getSelectionManager().selectionIsExpanded"),c.proxyMethod("delegate?.getSelectionManager"),c.prototype.setSelection=function(t){var r,l;return r=this.document.locationRangeFromRange(t),(l=this.delegate)!=null?l.compositionDidRequestChangingSelectionToLocationRange(r):void 0},c.prototype.getSelectedRange=function(){var t;return(t=this.getLocationRange())?this.document.rangeFromLocationRange(t):void 0},c.prototype.setSelectedRange=function(t){var r;return r=this.document.locationRangeFromRange(t),this.getSelectionManager().setLocationRange(r)},c.prototype.getPosition=function(){var t;return(t=this.getLocationRange())?this.document.positionFromLocation(t[0]):void 0},c.prototype.getLocationRange=function(t){var r,l;return(r=(l=this.targetLocationRange)!=null?l:this.getSelectionManager().getLocationRange(t))!=null?r:e({index:0,offset:0})},c.prototype.withTargetLocationRange=function(t,r){var l;this.targetLocationRange=t;try{l=r()}finally{this.targetLocationRange=null}return l},c.prototype.withTargetRange=function(t,r){var l;return l=this.document.locationRangeFromRange(t),this.withTargetLocationRange(l,r)},c.prototype.withTargetDOMRange=function(t,r){var l;return l=this.createLocationRangeFromDOMRange(t,{strict:!1}),this.withTargetLocationRange(l,r)},c.prototype.getExpandedRangeInDirection=function(t,r){var l,A,f,m;return A=(r??{}).length,f=this.getSelectedRange(),m=f[0],l=f[1],t==="backward"?A?m-=A:m=this.translateUTF16PositionFromOffset(m,-1):A?l+=A:l=this.translateUTF16PositionFromOffset(l,1),e([m,l])},c.prototype.shouldManageMovingCursorInDirection=function(t){var r;return this.editingAttachment?!0:(r=this.getExpandedRangeInDirection(t),this.getAttachmentAtRange(r)!=null)},c.prototype.moveCursorInDirection=function(t){var r,l,A,f;return this.editingAttachment?A=this.document.getRangeOfAttachment(this.editingAttachment):(f=this.getSelectedRange(),A=this.getExpandedRangeInDirection(t),l=!i(f,A)),this.setSelectedRange(t==="backward"?A[0]:A[1]),l&&(r=this.getAttachmentAtRange(A))?this.editAttachment(r):void 0},c.prototype.expandSelectionInDirection=function(t,r){var l,A;return l=(r??{}).length,A=this.getExpandedRangeInDirection(t,{length:l}),this.setSelectedRange(A)},c.prototype.expandSelectionForEditing=function(){return this.hasCurrentAttribute("href")?this.expandSelectionAroundCommonAttribute("href"):void 0},c.prototype.expandSelectionAroundCommonAttribute=function(t){var r,l;return r=this.getPosition(),l=this.document.getRangeOfCommonAttributeAtPosition(t,r),this.setSelectedRange(l)},c.prototype.selectionContainsAttachments=function(){var t;return((t=this.getSelectedAttachments())!=null?t.length:void 0)>0},c.prototype.selectionIsInCursorTarget=function(){return this.editingAttachment||this.positionIsCursorTarget(this.getPosition())},c.prototype.positionIsCursorTarget=function(t){var r;return(r=this.document.locationFromPosition(t))?this.locationIsCursorTarget(r):void 0},c.prototype.positionIsBlockBreak=function(t){var r;return(r=this.document.getPieceAtPosition(t))!=null?r.isBlockBreak():void 0},c.prototype.getSelectedDocument=function(){var t;return(t=this.getSelectedRange())?this.document.getDocumentAtRange(t):void 0},c.prototype.getSelectedAttachments=function(){var t;return(t=this.getSelectedDocument())!=null?t.getAttachments():void 0},c.prototype.getAttachments=function(){return this.attachments.slice(0)},c.prototype.refreshAttachments=function(){var t,r,l,A,f,m,C,S,L,O,D,R;for(l=this.document.getAttachments(),S=u(this.attachments,l),t=S.added,D=S.removed,this.attachments=l,A=0,m=D.length;m>A;A++)r=D[A],r.delegate=null,(L=this.delegate)!=null&&typeof L.compositionDidRemoveAttachment=="function"&&L.compositionDidRemoveAttachment(r);for(R=[],f=0,C=t.length;C>f;f++)r=t[f],r.delegate=this,R.push((O=this.delegate)!=null&&typeof O.compositionDidAddAttachment=="function"?O.compositionDidAddAttachment(r):void 0);return R},c.prototype.attachmentDidChangeAttributes=function(t){var r;return this.revision++,(r=this.delegate)!=null&&typeof r.compositionDidEditAttachment=="function"?r.compositionDidEditAttachment(t):void 0},c.prototype.attachmentDidChangePreviewURL=function(t){var r;return this.revision++,(r=this.delegate)!=null&&typeof r.compositionDidChangeAttachmentPreviewURL=="function"?r.compositionDidChangeAttachmentPreviewURL(t):void 0},c.prototype.editAttachment=function(t,r){var l;if(t!==this.editingAttachment)return this.stopEditingAttachment(),this.editingAttachment=t,(l=this.delegate)!=null&&typeof l.compositionDidStartEditingAttachment=="function"?l.compositionDidStartEditingAttachment(this.editingAttachment,r):void 0},c.prototype.stopEditingAttachment=function(){var t;if(this.editingAttachment)return(t=this.delegate)!=null&&typeof t.compositionDidStopEditingAttachment=="function"&&t.compositionDidStopEditingAttachment(this.editingAttachment),this.editingAttachment=null},c.prototype.updateAttributesForAttachment=function(t,r){return this.setDocument(this.document.updateAttributesForAttachment(t,r))},c.prototype.removeAttributeForAttachment=function(t,r){return this.setDocument(this.document.removeAttributeForAttachment(t,r))},c.prototype.breakFormattedBlock=function(t){var r,l,A,f,m;return l=t.document,r=t.block,f=t.startPosition,m=[f-1,f],r.getBlockBreakPosition()===t.startLocation.offset?(r.breaksOnReturn()&&t.nextCharacter===` -`?f+=1:l=l.removeTextAtRange(m),m=[f,f]):t.nextCharacter===` -`?t.previousCharacter===` -`?m=[f-1,f+1]:(m=[f,f+1],f+=1):t.startLocation.offset-1!==0&&(f+=1),A=new g.Document([r.removeLastAttribute().copyWithoutText()]),this.setDocument(l.insertDocumentAtRange(A,m)),this.setSelection(f)},c.prototype.getPreviousBlock=function(){var t,r;return(r=this.getLocationRange())&&(t=r[0].index,t>0)?this.document.getBlockAtIndex(t-1):void 0},c.prototype.getBlock=function(){var t;return(t=this.getLocationRange())?this.document.getBlockAtIndex(t[0].index):void 0},c.prototype.getAttachmentAtRange=function(t){var r;return r=this.document.getDocumentAtRange(t),r.toString()===g.OBJECT_REPLACEMENT_CHARACTER+` -`?r.getAttachments()[0]:void 0},c.prototype.notifyDelegateOfCurrentAttributesChange=function(){var t;return(t=this.delegate)!=null&&typeof t.compositionDidChangeCurrentAttributes=="function"?t.compositionDidChangeCurrentAttributes(this.currentAttributes):void 0},c.prototype.notifyDelegateOfInsertionAtRange=function(t){var r;return(r=this.delegate)!=null&&typeof r.compositionDidPerformInsertionAtRange=="function"?r.compositionDidPerformInsertionAtRange(t):void 0},c.prototype.translateUTF16PositionFromOffset=function(t,r){var l,A;return A=this.document.toUTF16String(),l=A.offsetFromUCS2Offset(t),A.offsetToUCS2Offset(l+r)},c}(g.BasicObject)}.call(this),function(){var x=function(y,h){function o(){this.constructor=y}for(var e in h)b.call(h,e)&&(y[e]=h[e]);return o.prototype=h.prototype,y.prototype=new o,y.__super__=h.prototype,y},b={}.hasOwnProperty;g.UndoManager=function(y){function h(e){this.composition=e,this.undoEntries=[],this.redoEntries=[]}var o;return x(h,y),h.prototype.recordUndoEntry=function(e,a){var d,i,u,s,n;return s=a??{},i=s.context,d=s.consolidatable,u=this.undoEntries.slice(-1)[0],d&&o(u,e,i)?void 0:(n=this.createEntry({description:e,context:i}),this.undoEntries.push(n),this.redoEntries=[])},h.prototype.undo=function(){var e,a;return(a=this.undoEntries.pop())?(e=this.createEntry(a),this.redoEntries.push(e),this.composition.loadSnapshot(a.snapshot)):void 0},h.prototype.redo=function(){var e,a;return(e=this.redoEntries.pop())?(a=this.createEntry(e),this.undoEntries.push(a),this.composition.loadSnapshot(e.snapshot)):void 0},h.prototype.canUndo=function(){return this.undoEntries.length>0},h.prototype.canRedo=function(){return this.redoEntries.length>0},h.prototype.createEntry=function(e){var a,d,i;return i=e??{},d=i.description,a=i.context,{description:d?.toString(),context:JSON.stringify(a),snapshot:this.composition.getSnapshot()}},o=function(e,a,d){return e?.description===a?.toString()&&e?.context===JSON.stringify(d)},h}(g.BasicObject)}.call(this),function(){var x;g.attachmentGalleryFilter=function(b){var y;return y=new x(b),y.perform(),y.getSnapshot()},x=function(){function b(e){this.document=e.document,this.selectedRange=e.selectedRange}var y,h,o;return y="attachmentGallery",h="presentation",o="gallery",b.prototype.perform=function(){return this.removeBlockAttribute(),this.applyBlockAttribute()},b.prototype.getSnapshot=function(){return{document:this.document,selectedRange:this.selectedRange}},b.prototype.removeBlockAttribute=function(){var e,a,d,i,u;for(i=this.findRangesOfBlocks(),u=[],e=0,a=i.length;a>e;e++)d=i[e],u.push(this.document=this.document.removeAttributeAtRange(y,d));return u},b.prototype.applyBlockAttribute=function(){var e,a,d,i,u,s;for(d=0,u=this.findRangesOfPieces(),s=[],e=0,a=u.length;a>e;e++)i=u[e],i[1]-i[0]>1&&(i[0]+=d,i[1]+=d,this.document.getCharacterAtPosition(i[1])!==` -`&&(this.document=this.document.insertBlockBreakAtRange(i[1]),i[1]a;a++)e=o[a],this.manageAttachment(e)}return x(h,y),h.prototype.getAttachments=function(){var o,e,a,d;a=this.managedAttachments,d=[];for(e in a)o=a[e],d.push(o);return d},h.prototype.manageAttachment=function(o){var e,a;return(e=this.managedAttachments)[a=o.id]!=null?e[a]:e[a]=new g.ManagedAttachment(this,o)},h.prototype.attachmentIsManaged=function(o){return o.id in this.managedAttachments},h.prototype.requestRemovalOfAttachment=function(o){var e;return this.attachmentIsManaged(o)&&(e=this.delegate)!=null&&typeof e.attachmentManagerDidRequestRemovalOfAttachment=="function"?e.attachmentManagerDidRequestRemovalOfAttachment(o):void 0},h.prototype.unmanageAttachment=function(o){var e;return e=this.managedAttachments[o.id],delete this.managedAttachments[o.id],e},h}(g.BasicObject)}.call(this),function(){var x,b,y,h,o,e,a,d,i,u,s;x=g.elementContainsNode,b=g.findChildIndexOfNode,o=g.nodeIsBlockStart,e=g.nodeIsBlockStartComment,h=g.nodeIsBlockContainer,a=g.nodeIsCursorTarget,d=g.nodeIsEmptyTextNode,i=g.nodeIsTextNode,y=g.nodeIsAttachmentElement,u=g.tagName,s=g.walkTree,g.LocationMapper=function(){function n(r){this.element=r}var p,c,v,t;return n.prototype.findLocationFromContainerAndOffset=function(r,l,A){var f,m,C,S,L,O,D;for(O=(A??{strict:!0}).strict,m=0,C=!1,S={index:0,offset:0},(f=this.findAttachmentElementParentForNode(r))&&(r=f.parentNode,l=b(f)),D=s(this.element,{usingFilter:v});D.nextNode();){if(L=D.currentNode,L===r&&i(r)){a(L)||(S.offset+=l);break}if(L.parentNode===r){if(m++===l)break}else if(!x(r,L)&&m>0)break;o(L,{strict:O})?(C&&S.index++,S.offset=0,C=!0):S.offset+=c(L)}return S},n.prototype.findContainerAndOffsetFromLocation=function(r){var l,A,f,m,C;if(r.index===0&&r.offset===0){for(l=this.element,m=0;l.firstChild;)if(l=l.firstChild,h(l)){m=1;break}return[l,m]}if(C=this.findNodeAndOffsetFromLocation(r),A=C[0],f=C[1],A){if(i(A))c(A)===0?(l=A.parentNode.parentNode,m=b(A.parentNode),a(A,{name:"right"})&&m++):(l=A,m=r.offset-f);else{if(l=A.parentNode,!o(A.previousSibling)&&!h(l))for(;A===l.lastChild&&(A=l,l=l.parentNode,!h(l)););m=b(A),r.offset!==0&&m++}return[l,m]}},n.prototype.findNodeAndOffsetFromLocation=function(r){var l,A,f,m,C,S,L,O;for(L=0,O=this.getSignificantNodesForIndex(r.index),A=0,f=O.length;f>A;A++){if(l=O[A],m=c(l),r.offset<=L+m)if(i(l)){if(C=l,S=L,r.offset===S&&a(C))break}else C||(C=l,S=L);if(L+=m,L>r.offset)break}return[C,S]},n.prototype.findAttachmentElementParentForNode=function(r){for(;r&&r!==this.element;){if(y(r))return r;r=r.parentNode}},n.prototype.getSignificantNodesForIndex=function(r){var l,A,f,m,C;for(f=[],C=s(this.element,{usingFilter:p}),m=!1;C.nextNode();)if(A=C.currentNode,e(A)){if(typeof l<"u"&&l!==null?l++:l=0,l===r)m=!0;else if(m)break}else m&&f.push(A);return f},c=function(r){var l;return r.nodeType===Node.TEXT_NODE?a(r)?0:(l=r.textContent,l.length):u(r)==="br"||y(r)?1:0},p=function(r){return t(r)===NodeFilter.FILTER_ACCEPT?v(r):NodeFilter.FILTER_REJECT},t=function(r){return d(r)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},v=function(r){return y(r.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},n}()}.call(this),function(){var x,b,y=[].slice;x=g.getDOMRange,b=g.setDOMRange,g.PointMapper=function(){function h(){}return h.prototype.createDOMRangeFromPoint=function(o){var e,a,d,i,u,s,n,p;if(n=o.x,p=o.y,document.caretPositionFromPoint)return u=document.caretPositionFromPoint(n,p),d=u.offsetNode,a=u.offset,e=document.createRange(),e.setStart(d,a),e;if(document.caretRangeFromPoint)return document.caretRangeFromPoint(n,p);if(document.body.createTextRange){i=x();try{s=document.body.createTextRange(),s.moveToPoint(n,p),s.select()}catch{}return e=x(),b(i),e}},h.prototype.getClientRectsForDOMRange=function(o){var e,a,d;return a=y.call(o.getClientRects()),d=a[0],e=a[a.length-1],[d,e]},h}()}.call(this),function(){var x,b=function(e,a){return function(){return e.apply(a,arguments)}},y=function(e,a){function d(){this.constructor=e}for(var i in a)h.call(a,i)&&(e[i]=a[i]);return d.prototype=a.prototype,e.prototype=new d,e.__super__=a.prototype,e},h={}.hasOwnProperty,o=[].indexOf||function(e){for(var a=0,d=this.length;d>a;a++)if(a in this&&this[a]===e)return a;return-1};x=g.getDOMRange,g.SelectionChangeObserver=function(e){function a(){this.run=b(this.run,this),this.update=b(this.update,this),this.selectionManagers=[]}var d;return y(a,e),a.prototype.start=function(){return this.started?void 0:(this.started=!0,"onselectionchange"in document?document.addEventListener("selectionchange",this.update,!0):this.run())},a.prototype.stop=function(){return this.started?(this.started=!1,document.removeEventListener("selectionchange",this.update,!0)):void 0},a.prototype.registerSelectionManager=function(i){return o.call(this.selectionManagers,i)<0?(this.selectionManagers.push(i),this.start()):void 0},a.prototype.unregisterSelectionManager=function(i){var u;return this.selectionManagers=function(){var s,n,p,c;for(p=this.selectionManagers,c=[],s=0,n=p.length;n>s;s++)u=p[s],u!==i&&c.push(u);return c}.call(this),this.selectionManagers.length===0?this.stop():void 0},a.prototype.notifySelectionManagersOfSelectionChange=function(){var i,u,s,n,p;for(s=this.selectionManagers,n=[],i=0,u=s.length;u>i;i++)p=s[i],n.push(p.selectionDidChange());return n},a.prototype.update=function(){var i;return i=x(),d(i,this.domRange)?void 0:(this.domRange=i,this.notifySelectionManagersOfSelectionChange())},a.prototype.reset=function(){return this.domRange=null,this.update()},a.prototype.run=function(){return this.started?(this.update(),requestAnimationFrame(this.run)):void 0},d=function(i,u){return i?.startContainer===u?.startContainer&&i?.startOffset===u?.startOffset&&i?.endContainer===u?.endContainer&&i?.endOffset===u?.endOffset},a}(g.BasicObject),g.selectionChangeObserver==null&&(g.selectionChangeObserver=new g.SelectionChangeObserver)}.call(this),function(){var x,b,y,h,o,e,a,d,i,u,s=function(c,v){return function(){return c.apply(v,arguments)}},n=function(c,v){function t(){this.constructor=c}for(var r in v)p.call(v,r)&&(c[r]=v[r]);return t.prototype=v.prototype,c.prototype=new t,c.__super__=v.prototype,c},p={}.hasOwnProperty;y=g.getDOMSelection,b=g.getDOMRange,u=g.setDOMRange,x=g.elementContainsNode,e=g.nodeIsCursorTarget,o=g.innerElementIsActive,h=g.handleEvent,a=g.normalizeRange,d=g.rangeIsCollapsed,i=g.rangesAreEqual,g.SelectionManager=function(c){function v(t){this.element=t,this.selectionDidChange=s(this.selectionDidChange,this),this.didMouseDown=s(this.didMouseDown,this),this.locationMapper=new g.LocationMapper(this.element),this.pointMapper=new g.PointMapper,this.lockCount=0,h("mousedown",{onElement:this.element,withCallback:this.didMouseDown})}return n(v,c),v.prototype.getLocationRange=function(t){var r,l;return t==null&&(t={}),r=t.strict===!1?this.createLocationRangeFromDOMRange(b(),{strict:!1}):t.ignoreLock?this.currentLocationRange:(l=this.lockedLocationRange)!=null?l:this.currentLocationRange},v.prototype.setLocationRange=function(t){var r;if(!this.lockedLocationRange)return t=a(t),(r=this.createDOMRangeFromLocationRange(t))?(u(r),this.updateCurrentLocationRange(t)):void 0},v.prototype.setLocationRangeFromPointRange=function(t){var r,l;return t=a(t),l=this.getLocationAtPoint(t[0]),r=this.getLocationAtPoint(t[1]),this.setLocationRange([l,r])},v.prototype.getClientRectAtLocationRange=function(t){var r;return(r=this.createDOMRangeFromLocationRange(t))?this.getClientRectsForDOMRange(r)[1]:void 0},v.prototype.locationIsCursorTarget=function(t){var r,l,A;return A=this.findNodeAndOffsetFromLocation(t),r=A[0],l=A[1],e(r)},v.prototype.lock=function(){return this.lockCount++===0?(this.updateCurrentLocationRange(),this.lockedLocationRange=this.getLocationRange()):void 0},v.prototype.unlock=function(){var t;return--this.lockCount===0&&(t=this.lockedLocationRange,this.lockedLocationRange=null,t!=null)?this.setLocationRange(t):void 0},v.prototype.clearSelection=function(){var t;return(t=y())!=null?t.removeAllRanges():void 0},v.prototype.selectionIsCollapsed=function(){var t;return((t=b())!=null?t.collapsed:void 0)===!0},v.prototype.selectionIsExpanded=function(){return!this.selectionIsCollapsed()},v.prototype.createLocationRangeFromDOMRange=function(t,r){var l,A;if(t!=null&&this.domRangeWithinElement(t)&&(A=this.findLocationFromContainerAndOffset(t.startContainer,t.startOffset,r)))return t.collapsed||(l=this.findLocationFromContainerAndOffset(t.endContainer,t.endOffset,r)),a([A,l])},v.proxyMethod("locationMapper.findLocationFromContainerAndOffset"),v.proxyMethod("locationMapper.findContainerAndOffsetFromLocation"),v.proxyMethod("locationMapper.findNodeAndOffsetFromLocation"),v.proxyMethod("pointMapper.createDOMRangeFromPoint"),v.proxyMethod("pointMapper.getClientRectsForDOMRange"),v.prototype.didMouseDown=function(){return this.pauseTemporarily()},v.prototype.pauseTemporarily=function(){var t,r,l,A;return this.paused=!0,r=function(f){return function(){var m,C,S;for(f.paused=!1,clearTimeout(A),C=0,S=l.length;S>C;C++)m=l[C],m.destroy();return x(document,f.element)?f.selectionDidChange():void 0}}(this),A=setTimeout(r,200),l=function(){var f,m,C,S;for(C=["mousemove","keydown"],S=[],f=0,m=C.length;m>f;f++)t=C[f],S.push(h(t,{onElement:document,withCallback:r}));return S}()},v.prototype.selectionDidChange=function(){return this.paused||o(this.element)?void 0:this.updateCurrentLocationRange()},v.prototype.updateCurrentLocationRange=function(t){var r;return(t??(t=this.createLocationRangeFromDOMRange(b())))&&!i(t,this.currentLocationRange)?(this.currentLocationRange=t,(r=this.delegate)!=null&&typeof r.locationRangeDidChange=="function"?r.locationRangeDidChange(this.currentLocationRange.slice(0)):void 0):void 0},v.prototype.createDOMRangeFromLocationRange=function(t){var r,l,A,f;return A=this.findContainerAndOffsetFromLocation(t[0]),l=d(t)?A:(f=this.findContainerAndOffsetFromLocation(t[1]))!=null?f:A,A!=null&&l!=null?(r=document.createRange(),r.setStart.apply(r,A),r.setEnd.apply(r,l),r):void 0},v.prototype.getLocationAtPoint=function(t){var r,l;return(r=this.createDOMRangeFromPoint(t))&&(l=this.createLocationRangeFromDOMRange(r))!=null?l[0]:void 0},v.prototype.domRangeWithinElement=function(t){return t.collapsed?x(this.element,t.startContainer):x(this.element,t.startContainer)&&x(this.element,t.endContainer)},v}(g.BasicObject)}.call(this),function(){var x,b,y,h,o=function(d,i){function u(){this.constructor=d}for(var s in i)e.call(i,s)&&(d[s]=i[s]);return u.prototype=i.prototype,d.prototype=new u,d.__super__=i.prototype,d},e={}.hasOwnProperty,a=[].slice;y=g.rangeIsCollapsed,h=g.rangesAreEqual,b=g.objectsAreEqual,x=g.getBlockConfig,g.EditorController=function(d){function i(s){var n,p;this.editorElement=s.editorElement,n=s.document,p=s.html,this.selectionManager=new g.SelectionManager(this.editorElement),this.selectionManager.delegate=this,this.composition=new g.Composition,this.composition.delegate=this,this.attachmentManager=new g.AttachmentManager(this.composition.getAttachments()),this.attachmentManager.delegate=this,this.inputController=new g["Level"+g.config.input.getLevel()+"InputController"](this.editorElement),this.inputController.delegate=this,this.inputController.responder=this.composition,this.compositionController=new g.CompositionController(this.editorElement,this.composition),this.compositionController.delegate=this,this.toolbarController=new g.ToolbarController(this.editorElement.toolbarElement),this.toolbarController.delegate=this,this.editor=new g.Editor(this.composition,this.selectionManager,this.editorElement),n!=null?this.editor.loadDocument(n):this.editor.loadHTML(p)}var u;return o(i,d),i.prototype.registerSelectionManager=function(){return g.selectionChangeObserver.registerSelectionManager(this.selectionManager)},i.prototype.unregisterSelectionManager=function(){return g.selectionChangeObserver.unregisterSelectionManager(this.selectionManager)},i.prototype.render=function(){return this.compositionController.render()},i.prototype.reparse=function(){return this.composition.replaceHTML(this.editorElement.innerHTML)},i.prototype.compositionDidChangeDocument=function(){return this.notifyEditorElement("document-change"),this.handlingInput?void 0:this.render()},i.prototype.compositionDidChangeCurrentAttributes=function(s){return this.currentAttributes=s,this.toolbarController.updateAttributes(this.currentAttributes),this.updateCurrentActions(),this.notifyEditorElement("attributes-change",{attributes:this.currentAttributes})},i.prototype.compositionDidPerformInsertionAtRange=function(s){return this.pasting?this.pastedRange=s:void 0},i.prototype.compositionShouldAcceptFile=function(s){return this.notifyEditorElement("file-accept",{file:s})},i.prototype.compositionDidAddAttachment=function(s){var n;return n=this.attachmentManager.manageAttachment(s),this.notifyEditorElement("attachment-add",{attachment:n})},i.prototype.compositionDidEditAttachment=function(s){var n;return this.compositionController.rerenderViewForObject(s),n=this.attachmentManager.manageAttachment(s),this.notifyEditorElement("attachment-edit",{attachment:n}),this.notifyEditorElement("change")},i.prototype.compositionDidChangeAttachmentPreviewURL=function(s){return this.compositionController.invalidateViewForObject(s),this.notifyEditorElement("change")},i.prototype.compositionDidRemoveAttachment=function(s){var n;return n=this.attachmentManager.unmanageAttachment(s),this.notifyEditorElement("attachment-remove",{attachment:n})},i.prototype.compositionDidStartEditingAttachment=function(s,n){return this.attachmentLocationRange=this.composition.document.getLocationRangeOfAttachment(s),this.compositionController.installAttachmentEditorForAttachment(s,n),this.selectionManager.setLocationRange(this.attachmentLocationRange)},i.prototype.compositionDidStopEditingAttachment=function(){return this.compositionController.uninstallAttachmentEditor(),this.attachmentLocationRange=null},i.prototype.compositionDidRequestChangingSelectionToLocationRange=function(s){return!this.loadingSnapshot||this.isFocused()?(this.requestedLocationRange=s,this.compositionRevisionWhenLocationRangeRequested=this.composition.revision,this.handlingInput?void 0:this.render()):void 0},i.prototype.compositionWillLoadSnapshot=function(){return this.loadingSnapshot=!0},i.prototype.compositionDidLoadSnapshot=function(){return this.compositionController.refreshViewCache(),this.render(),this.loadingSnapshot=!1},i.prototype.getSelectionManager=function(){return this.selectionManager},i.proxyMethod("getSelectionManager().setLocationRange"),i.proxyMethod("getSelectionManager().getLocationRange"),i.prototype.attachmentManagerDidRequestRemovalOfAttachment=function(s){return this.removeAttachment(s)},i.prototype.compositionControllerWillSyncDocumentView=function(){return this.inputController.editorWillSyncDocumentView(),this.selectionManager.lock(),this.selectionManager.clearSelection()},i.prototype.compositionControllerDidSyncDocumentView=function(){return this.inputController.editorDidSyncDocumentView(),this.selectionManager.unlock(),this.updateCurrentActions(),this.notifyEditorElement("sync")},i.prototype.compositionControllerDidRender=function(){return this.requestedLocationRange!=null&&(this.compositionRevisionWhenLocationRangeRequested===this.composition.revision&&this.selectionManager.setLocationRange(this.requestedLocationRange),this.requestedLocationRange=null,this.compositionRevisionWhenLocationRangeRequested=null),this.renderedCompositionRevision!==this.composition.revision&&(this.runEditorFilters(),this.composition.updateCurrentAttributes(),this.notifyEditorElement("render")),this.renderedCompositionRevision=this.composition.revision},i.prototype.compositionControllerDidFocus=function(){return this.isFocusedInvisibly()&&this.setLocationRange({index:0,offset:0}),this.toolbarController.hideDialog(),this.notifyEditorElement("focus")},i.prototype.compositionControllerDidBlur=function(){return this.notifyEditorElement("blur")},i.prototype.compositionControllerDidSelectAttachment=function(s,n){return this.toolbarController.hideDialog(),this.composition.editAttachment(s,n)},i.prototype.compositionControllerDidRequestDeselectingAttachment=function(s){var n,p;return n=(p=this.attachmentLocationRange)!=null?p:this.composition.document.getLocationRangeOfAttachment(s),this.selectionManager.setLocationRange(n[1])},i.prototype.compositionControllerWillUpdateAttachment=function(s){return this.editor.recordUndoEntry("Edit Attachment",{context:s.id,consolidatable:!0})},i.prototype.compositionControllerDidRequestRemovalOfAttachment=function(s){return this.removeAttachment(s)},i.prototype.inputControllerWillHandleInput=function(){return this.handlingInput=!0,this.requestedRender=!1},i.prototype.inputControllerDidRequestRender=function(){return this.requestedRender=!0},i.prototype.inputControllerDidHandleInput=function(){return this.handlingInput=!1,this.requestedRender?(this.requestedRender=!1,this.render()):void 0},i.prototype.inputControllerDidAllowUnhandledInput=function(){return this.notifyEditorElement("change")},i.prototype.inputControllerDidRequestReparse=function(){return this.reparse()},i.prototype.inputControllerWillPerformTyping=function(){return this.recordTypingUndoEntry()},i.prototype.inputControllerWillPerformFormatting=function(s){return this.recordFormattingUndoEntry(s)},i.prototype.inputControllerWillCutText=function(){return this.editor.recordUndoEntry("Cut")},i.prototype.inputControllerWillPaste=function(s){return this.editor.recordUndoEntry("Paste"),this.pasting=!0,this.notifyEditorElement("before-paste",{paste:s})},i.prototype.inputControllerDidPaste=function(s){return s.range=this.pastedRange,this.pastedRange=null,this.pasting=null,this.notifyEditorElement("paste",{paste:s})},i.prototype.inputControllerWillMoveText=function(){return this.editor.recordUndoEntry("Move")},i.prototype.inputControllerWillAttachFiles=function(){return this.editor.recordUndoEntry("Drop Files")},i.prototype.inputControllerWillPerformUndo=function(){return this.editor.undo()},i.prototype.inputControllerWillPerformRedo=function(){return this.editor.redo()},i.prototype.inputControllerDidReceiveKeyboardCommand=function(s){return this.toolbarController.applyKeyboardCommand(s)},i.prototype.inputControllerDidStartDrag=function(){return this.locationRangeBeforeDrag=this.selectionManager.getLocationRange()},i.prototype.inputControllerDidReceiveDragOverPoint=function(s){return this.selectionManager.setLocationRangeFromPointRange(s)},i.prototype.inputControllerDidCancelDrag=function(){return this.selectionManager.setLocationRange(this.locationRangeBeforeDrag),this.locationRangeBeforeDrag=null},i.prototype.locationRangeDidChange=function(s){return this.composition.updateCurrentAttributes(),this.updateCurrentActions(),this.attachmentLocationRange&&!h(this.attachmentLocationRange,s)&&this.composition.stopEditingAttachment(),this.notifyEditorElement("selection-change")},i.prototype.toolbarDidClickButton=function(){return this.getLocationRange()?void 0:this.setLocationRange({index:0,offset:0})},i.prototype.toolbarDidInvokeAction=function(s){return this.invokeAction(s)},i.prototype.toolbarDidToggleAttribute=function(s){return this.recordFormattingUndoEntry(s),this.composition.toggleCurrentAttribute(s),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},i.prototype.toolbarDidUpdateAttribute=function(s,n){return this.recordFormattingUndoEntry(s),this.composition.setCurrentAttribute(s,n),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},i.prototype.toolbarDidRemoveAttribute=function(s){return this.recordFormattingUndoEntry(s),this.composition.removeCurrentAttribute(s),this.render(),this.selectionFrozen?void 0:this.editorElement.focus()},i.prototype.toolbarWillShowDialog=function(){return this.composition.expandSelectionForEditing(),this.freezeSelection()},i.prototype.toolbarDidShowDialog=function(s){return this.notifyEditorElement("toolbar-dialog-show",{dialogName:s})},i.prototype.toolbarDidHideDialog=function(s){return this.thawSelection(),this.editorElement.focus(),this.notifyEditorElement("toolbar-dialog-hide",{dialogName:s})},i.prototype.freezeSelection=function(){return this.selectionFrozen?void 0:(this.selectionManager.lock(),this.composition.freezeSelection(),this.selectionFrozen=!0,this.render())},i.prototype.thawSelection=function(){return this.selectionFrozen?(this.composition.thawSelection(),this.selectionManager.unlock(),this.selectionFrozen=!1,this.render()):void 0},i.prototype.actions={undo:{test:function(){return this.editor.canUndo()},perform:function(){return this.editor.undo()}},redo:{test:function(){return this.editor.canRedo()},perform:function(){return this.editor.redo()}},link:{test:function(){return this.editor.canActivateAttribute("href")}},increaseNestingLevel:{test:function(){return this.editor.canIncreaseNestingLevel()},perform:function(){return this.editor.increaseNestingLevel()&&this.render()}},decreaseNestingLevel:{test:function(){return this.editor.canDecreaseNestingLevel()},perform:function(){return this.editor.decreaseNestingLevel()&&this.render()}},attachFiles:{test:function(){return!0},perform:function(){return g.config.input.pickFiles(this.editor.insertFiles)}}},i.prototype.canInvokeAction=function(s){var n,p;return this.actionIsExternal(s)?!0:!!((n=this.actions[s])!=null&&(p=n.test)!=null&&p.call(this))},i.prototype.invokeAction=function(s){var n,p;return this.actionIsExternal(s)?this.notifyEditorElement("action-invoke",{actionName:s}):(n=this.actions[s])!=null&&(p=n.perform)!=null?p.call(this):void 0},i.prototype.actionIsExternal=function(s){return/^x-./.test(s)},i.prototype.getCurrentActions=function(){var s,n;n={};for(s in this.actions)n[s]=this.canInvokeAction(s);return n},i.prototype.updateCurrentActions=function(){var s;return s=this.getCurrentActions(),b(s,this.currentActions)?void 0:(this.currentActions=s,this.toolbarController.updateActions(this.currentActions),this.notifyEditorElement("actions-change",{actions:this.currentActions}))},i.prototype.runEditorFilters=function(){var s,n,p,c,v,t,r,l;for(l=this.composition.getSnapshot(),v=this.editor.filters,p=0,c=v.length;c>p;p++)n=v[p],s=l.document,r=l.selectedRange,l=(t=n.call(this.editor,l))!=null?t:{},l.document==null&&(l.document=s),l.selectedRange==null&&(l.selectedRange=r);return u(l,this.composition.getSnapshot())?void 0:this.composition.loadSnapshot(l)},u=function(s,n){return h(s.selectedRange,n.selectedRange)&&s.document.isEqualTo(n.document)},i.prototype.updateInputElement=function(){var s,n;return s=this.compositionController.getSerializableElement(),n=g.serializeToContentType(s,"text/html"),this.editorElement.setInputElementValue(n)},i.prototype.notifyEditorElement=function(s,n){switch(s){case"document-change":this.documentChangedSinceLastRender=!0;break;case"render":this.documentChangedSinceLastRender&&(this.documentChangedSinceLastRender=!1,this.notifyEditorElement("change"));break;case"change":case"attachment-add":case"attachment-edit":case"attachment-remove":this.updateInputElement()}return this.editorElement.notify(s,n)},i.prototype.removeAttachment=function(s){return this.editor.recordUndoEntry("Delete Attachment"),this.composition.removeAttachment(s),this.render()},i.prototype.recordFormattingUndoEntry=function(s){var n,p;return n=x(s),p=this.selectionManager.getLocationRange(),n||!y(p)?this.editor.recordUndoEntry("Formatting",{context:this.getUndoContext(),consolidatable:!0}):void 0},i.prototype.recordTypingUndoEntry=function(){return this.editor.recordUndoEntry("Typing",{context:this.getUndoContext(this.currentAttributes),consolidatable:!0})},i.prototype.getUndoContext=function(){var s;return s=1<=arguments.length?a.call(arguments,0):[],[this.getLocationContext(),this.getTimeContext()].concat(a.call(s))},i.prototype.getLocationContext=function(){var s;return s=this.selectionManager.getLocationRange(),y(s)?s[0].index:s},i.prototype.getTimeContext=function(){return g.config.undoInterval>0?Math.floor(new Date().getTime()/g.config.undoInterval):0},i.prototype.isFocused=function(){var s;return this.editorElement===((s=this.editorElement.ownerDocument)!=null?s.activeElement:void 0)},i.prototype.isFocusedInvisibly=function(){return this.isFocused()&&!this.getLocationRange()},i}(g.Controller)}.call(this),function(){var x,b,y,h,o,e,a,d=[].indexOf||function(i){for(var u=0,s=this.length;s>u;u++)if(u in this&&this[u]===i)return u;return-1};b=g.browser,e=g.makeElement,a=g.triggerEvent,h=g.handleEvent,o=g.handleEventOnce,y=g.findClosestElementFromNode,x=g.AttachmentView.attachmentSelector,g.registerElement("trix-editor",function(){var i,u,s,n,p,c,v,t,r;return v=0,u=function(l){return!document.querySelector(":focus")&&l.hasAttribute("autofocus")&&document.querySelector("[autofocus]")===l?l.focus():void 0},t=function(l){return l.hasAttribute("contenteditable")?void 0:(l.setAttribute("contenteditable",""),o("focus",{onElement:l,withCallback:function(){return s(l)}}))},s=function(l){return p(l),r(l)},p=function(l){return typeof document.queryCommandSupported=="function"&&document.queryCommandSupported("enableObjectResizing")?(document.execCommand("enableObjectResizing",!1,!1),h("mscontrolselect",{onElement:l,preventDefault:!0})):void 0},r=function(){var l;return typeof document.queryCommandSupported=="function"&&document.queryCommandSupported("DefaultParagraphSeparator")&&(l=g.config.blockAttributes.default.tagName,l==="div"||l==="p")?document.execCommand("DefaultParagraphSeparator",!1,l):void 0},i=function(l){return l.hasAttribute("role")?void 0:l.setAttribute("role","textbox")},c=function(l){var A;if(!l.hasAttribute("aria-label")&&!l.hasAttribute("aria-labelledby"))return(A=function(){var f,m,C;return C=function(){var S,L,O,D;for(O=l.labels,D=[],S=0,L=O.length;L>S;S++)f=O[S],f.contains(l)||D.push(f.textContent);return D}(),(m=C.join(" "))?l.setAttribute("aria-label",m):l.removeAttribute("aria-label")})(),h("focus",{onElement:l,withCallback:A})},n=function(){return b.forcesObjectResizing?{display:"inline",width:"auto"}:{display:"inline-block",width:"1px"}}(),{defaultCSS:`%t { - display: block; -} - -%t:empty:not(:focus)::before { - content: attr(placeholder); - color: graytext; - cursor: text; - pointer-events: none; -} - -%t a[contenteditable=false] { - cursor: text; -} - -%t img { - max-width: 100%; - height: auto; -} - -%t `+x+` figcaption textarea { - resize: none; -} - -%t `+x+` figcaption textarea.trix-autoresize-clone { - position: absolute; - left: -9999px; - max-height: 0px; -} - -%t `+x+` figcaption[data-trix-placeholder]:empty::before { - content: attr(data-trix-placeholder); - color: graytext; -} - -%t [data-trix-cursor-target] { - display: `+n.display+` !important; - width: `+n.width+` !important; - padding: 0 !important; - margin: 0 !important; - border: none !important; -} - -%t [data-trix-cursor-target=left] { - vertical-align: top !important; - margin-left: -1px !important; -} - -%t [data-trix-cursor-target=right] { - vertical-align: bottom !important; - margin-right: -1px !important; -}`,trixId:{get:function(){return this.hasAttribute("trix-id")?this.getAttribute("trix-id"):(this.setAttribute("trix-id",++v),this.trixId)}},labels:{get:function(){var l,A,f;return A=[],this.id&&this.ownerDocument&&A.push.apply(A,this.ownerDocument.querySelectorAll("label[for='"+this.id+"']")),(l=y(this,{matchingSelector:"label"}))&&((f=l.control)===this||f===null)&&A.push(l),A}},toolbarElement:{get:function(){var l,A,f;return this.hasAttribute("toolbar")?(A=this.ownerDocument)!=null?A.getElementById(this.getAttribute("toolbar")):void 0:this.parentNode?(f="trix-toolbar-"+this.trixId,this.setAttribute("toolbar",f),l=e("trix-toolbar",{id:f}),this.parentNode.insertBefore(l,this),l):void 0}},inputElement:{get:function(){var l,A,f;return this.hasAttribute("input")?(f=this.ownerDocument)!=null?f.getElementById(this.getAttribute("input")):void 0:this.parentNode?(A="trix-input-"+this.trixId,this.setAttribute("input",A),l=e("input",{type:"hidden",id:A}),this.parentNode.insertBefore(l,this.nextElementSibling),l):void 0}},editor:{get:function(){var l;return(l=this.editorController)!=null?l.editor:void 0}},name:{get:function(){var l;return(l=this.inputElement)!=null?l.name:void 0}},value:{get:function(){var l;return(l=this.inputElement)!=null?l.value:void 0},set:function(l){var A;return this.defaultValue=l,(A=this.editor)!=null?A.loadHTML(this.defaultValue):void 0}},notify:function(l,A){return this.editorController?a("trix-"+l,{onElement:this,attributes:A}):void 0},setInputElementValue:function(l){var A;return(A=this.inputElement)!=null?A.value=l:void 0},initialize:function(){return this.hasAttribute("data-trix-internal")?void 0:(t(this),i(this),c(this))},connect:function(){return this.hasAttribute("data-trix-internal")?void 0:(this.editorController||(a("trix-before-initialize",{onElement:this}),this.editorController=new g.EditorController({editorElement:this,html:this.defaultValue=this.value}),requestAnimationFrame(function(l){return function(){return a("trix-initialize",{onElement:l})}}(this))),this.editorController.registerSelectionManager(),this.registerResetListener(),this.registerClickListener(),u(this))},disconnect:function(){var l;return(l=this.editorController)!=null&&l.unregisterSelectionManager(),this.unregisterResetListener(),this.unregisterClickListener()},registerResetListener:function(){return this.resetListener=this.resetBubbled.bind(this),window.addEventListener("reset",this.resetListener,!1)},unregisterResetListener:function(){return window.removeEventListener("reset",this.resetListener,!1)},registerClickListener:function(){return this.clickListener=this.clickBubbled.bind(this),window.addEventListener("click",this.clickListener,!1)},unregisterClickListener:function(){return window.removeEventListener("click",this.clickListener,!1)},resetBubbled:function(l){var A;if(!l.defaultPrevented&&l.target===((A=this.inputElement)!=null?A.form:void 0))return this.reset()},clickBubbled:function(l){var A;if(!(l.defaultPrevented||this.contains(l.target)||!(A=y(l.target,{matchingSelector:"label"}))||d.call(this.labels,A)<0))return this.focus()},reset:function(){return this.value=this.defaultValue}}}())}.call(this),function(){}.call(this)}).call(this),typeof V=="object"&&V.exports?V.exports=g:typeof define=="function"&&define.amd&&define(g)}.call(q)});var W=ut(Q(),1);W.default.config.blockAttributes.default.tagName="p";W.default.config.blockAttributes.default.breakOnReturn=!0;W.default.config.blockAttributes.heading={tagName:"h2",terminal:!0,breakOnReturn:!0,group:!1};W.default.config.blockAttributes.subHeading={tagName:"h3",terminal:!0,breakOnReturn:!0,group:!1};W.default.config.textAttributes.underline={style:{textDecoration:"underline"},inheritable:!0,parser:I=>window.getComputedStyle(I).textDecoration.includes("underline")};W.default.Block.prototype.breaksOnReturn=function(){let I=this.getLastAttribute();return W.default.getBlockConfig(I||"default")?.breakOnReturn??!1};W.default.LineBreakInsertion.prototype.shouldInsertBlockBreak=function(){return this.block.hasAttributes()&&this.block.isListItem()&&!this.block.isEmpty()?this.startLocation.offset>0:this.shouldBreakFormattedBlock()?!1:this.breaksOnReturn};function ct({state:I}){return{state:I,init:function(){this.$refs.trix?.editor?.loadHTML(this.state),this.$watch("state",()=>{document.activeElement!==this.$refs.trix&&this.$refs.trix?.editor?.loadHTML(this.state)})}}}export{ct as default}; diff --git a/vendor/filament/forms/dist/components/select.js b/vendor/filament/forms/dist/components/select.js deleted file mode 100644 index 195088d4..00000000 --- a/vendor/filament/forms/dist/components/select.js +++ /dev/null @@ -1,6 +0,0 @@ -var lt=Object.create;var Ge=Object.defineProperty;var ct=Object.getOwnPropertyDescriptor;var ut=Object.getOwnPropertyNames;var ht=Object.getPrototypeOf,dt=Object.prototype.hasOwnProperty;var ft=(se,ie)=>()=>(ie||se((ie={exports:{}}).exports,ie),ie.exports);var pt=(se,ie,X,me)=>{if(ie&&typeof ie=="object"||typeof ie=="function")for(let j of ut(ie))!dt.call(se,j)&&j!==X&&Ge(se,j,{get:()=>ie[j],enumerable:!(me=ct(ie,j))||me.enumerable});return se};var mt=(se,ie,X)=>(X=se!=null?lt(ht(se)):{},pt(ie||!se||!se.__esModule?Ge(X,"default",{value:se,enumerable:!0}):X,se));var $e=ft((Ae,Ye)=>{(function(ie,X){typeof Ae=="object"&&typeof Ye=="object"?Ye.exports=X():typeof define=="function"&&define.amd?define([],X):typeof Ae=="object"?Ae.Choices=X():ie.Choices=X()})(window,function(){return function(){"use strict";var se={282:function(j,i,b){Object.defineProperty(i,"__esModule",{value:!0}),i.clearChoices=i.activateChoices=i.filterChoices=i.addChoice=void 0;var _=b(883),h=function(c){var l=c.value,O=c.label,L=c.id,y=c.groupId,D=c.disabled,k=c.elementId,Q=c.customProperties,Z=c.placeholder,ne=c.keyCode;return{type:_.ACTION_TYPES.ADD_CHOICE,value:l,label:O,id:L,groupId:y,disabled:D,elementId:k,customProperties:Q,placeholder:Z,keyCode:ne}};i.addChoice=h;var d=function(c){return{type:_.ACTION_TYPES.FILTER_CHOICES,results:c}};i.filterChoices=d;var a=function(c){return c===void 0&&(c=!0),{type:_.ACTION_TYPES.ACTIVATE_CHOICES,active:c}};i.activateChoices=a;var r=function(){return{type:_.ACTION_TYPES.CLEAR_CHOICES}};i.clearChoices=r},783:function(j,i,b){Object.defineProperty(i,"__esModule",{value:!0}),i.addGroup=void 0;var _=b(883),h=function(d){var a=d.value,r=d.id,c=d.active,l=d.disabled;return{type:_.ACTION_TYPES.ADD_GROUP,value:a,id:r,active:c,disabled:l}};i.addGroup=h},464:function(j,i,b){Object.defineProperty(i,"__esModule",{value:!0}),i.highlightItem=i.removeItem=i.addItem=void 0;var _=b(883),h=function(r){var c=r.value,l=r.label,O=r.id,L=r.choiceId,y=r.groupId,D=r.customProperties,k=r.placeholder,Q=r.keyCode;return{type:_.ACTION_TYPES.ADD_ITEM,value:c,label:l,id:O,choiceId:L,groupId:y,customProperties:D,placeholder:k,keyCode:Q}};i.addItem=h;var d=function(r,c){return{type:_.ACTION_TYPES.REMOVE_ITEM,id:r,choiceId:c}};i.removeItem=d;var a=function(r,c){return{type:_.ACTION_TYPES.HIGHLIGHT_ITEM,id:r,highlighted:c}};i.highlightItem=a},137:function(j,i,b){Object.defineProperty(i,"__esModule",{value:!0}),i.setIsLoading=i.resetTo=i.clearAll=void 0;var _=b(883),h=function(){return{type:_.ACTION_TYPES.CLEAR_ALL}};i.clearAll=h;var d=function(r){return{type:_.ACTION_TYPES.RESET_TO,state:r}};i.resetTo=d;var a=function(r){return{type:_.ACTION_TYPES.SET_IS_LOADING,isLoading:r}};i.setIsLoading=a},373:function(j,i,b){var _=this&&this.__spreadArray||function(g,e,t){if(t||arguments.length===2)for(var n=0,s=e.length,v;n=0?this._store.getGroupById(v):null;return this._store.dispatch((0,l.highlightItem)(n,!0)),t&&this.passedElement.triggerEvent(y.EVENTS.highlightItem,{id:n,value:M,label:f,groupValue:u&&u.value?u.value:null}),this},g.prototype.unhighlightItem=function(e){if(!e||!e.id)return this;var t=e.id,n=e.groupId,s=n===void 0?-1:n,v=e.value,P=v===void 0?"":v,M=e.label,K=M===void 0?"":M,f=s>=0?this._store.getGroupById(s):null;return this._store.dispatch((0,l.highlightItem)(t,!1)),this.passedElement.triggerEvent(y.EVENTS.highlightItem,{id:t,value:P,label:K,groupValue:f&&f.value?f.value:null}),this},g.prototype.highlightAll=function(){var e=this;return this._store.items.forEach(function(t){return e.highlightItem(t)}),this},g.prototype.unhighlightAll=function(){var e=this;return this._store.items.forEach(function(t){return e.unhighlightItem(t)}),this},g.prototype.removeActiveItemsByValue=function(e){var t=this;return this._store.activeItems.filter(function(n){return n.value===e}).forEach(function(n){return t._removeItem(n)}),this},g.prototype.removeActiveItems=function(e){var t=this;return this._store.activeItems.filter(function(n){var s=n.id;return s!==e}).forEach(function(n){return t._removeItem(n)}),this},g.prototype.removeHighlightedItems=function(e){var t=this;return e===void 0&&(e=!1),this._store.highlightedActiveItems.forEach(function(n){t._removeItem(n),e&&t._triggerChange(n.value)}),this},g.prototype.showDropdown=function(e){var t=this;return this.dropdown.isActive?this:(requestAnimationFrame(function(){t.dropdown.show(),t.containerOuter.open(t.dropdown.distanceFromTopWindow),!e&&t._canSearch&&t.input.focus(),t.passedElement.triggerEvent(y.EVENTS.showDropdown,{})}),this)},g.prototype.hideDropdown=function(e){var t=this;return this.dropdown.isActive?(requestAnimationFrame(function(){t.dropdown.hide(),t.containerOuter.close(),!e&&t._canSearch&&(t.input.removeActiveDescendant(),t.input.blur()),t.passedElement.triggerEvent(y.EVENTS.hideDropdown,{})}),this):this},g.prototype.getValue=function(e){e===void 0&&(e=!1);var t=this._store.activeItems.reduce(function(n,s){var v=e?s.value:s;return n.push(v),n},[]);return this._isSelectOneElement?t[0]:t},g.prototype.setValue=function(e){var t=this;return this.initialised?(e.forEach(function(n){return t._setChoiceOrItem(n)}),this):this},g.prototype.setChoiceByValue=function(e){var t=this;if(!this.initialised||this._isTextElement)return this;var n=Array.isArray(e)?e:[e];return n.forEach(function(s){return t._findAndSelectChoiceByValue(s)}),this},g.prototype.setChoices=function(e,t,n,s){var v=this;if(e===void 0&&(e=[]),t===void 0&&(t="value"),n===void 0&&(n="label"),s===void 0&&(s=!1),!this.initialised)throw new ReferenceError("setChoices was called on a non-initialized instance of Choices");if(!this._isSelectElement)throw new TypeError("setChoices can't be used with INPUT based Choices");if(typeof t!="string"||!t)throw new TypeError("value parameter must be a name of 'value' field in passed objects");if(s&&this.clearChoices(),typeof e=="function"){var P=e(this);if(typeof Promise=="function"&&P instanceof Promise)return new Promise(function(M){return requestAnimationFrame(M)}).then(function(){return v._handleLoadingState(!0)}).then(function(){return P}).then(function(M){return v.setChoices(M,t,n,s)}).catch(function(M){v.config.silent||console.error(M)}).then(function(){return v._handleLoadingState(!1)}).then(function(){return v});if(!Array.isArray(P))throw new TypeError(".setChoices first argument function must return either array of choices or Promise, got: ".concat(typeof P));return this.setChoices(P,t,n,!1)}if(!Array.isArray(e))throw new TypeError(".setChoices must be called either with array of choices with a function resulting into Promise of array of choices");return this.containerOuter.removeLoadingState(),this._startLoading(),e.forEach(function(M){if(M.choices)v._addGroup({id:M.id?parseInt("".concat(M.id),10):null,group:M,valueKey:t,labelKey:n});else{var K=M;v._addChoice({value:K[t],label:K[n],isSelected:!!K.selected,isDisabled:!!K.disabled,placeholder:!!K.placeholder,customProperties:K.customProperties})}}),this._stopLoading(),this},g.prototype.clearChoices=function(){return this._store.dispatch((0,r.clearChoices)()),this},g.prototype.clearStore=function(){return this._store.dispatch((0,O.clearAll)()),this},g.prototype.clearInput=function(){var e=!this._isSelectOneElement;return this.input.clear(e),!this._isTextElement&&this._canSearch&&(this._isSearching=!1,this._store.dispatch((0,r.activateChoices)(!0))),this},g.prototype._render=function(){if(!this._store.isLoading()){this._currentState=this._store.state;var e=this._currentState.choices!==this._prevState.choices||this._currentState.groups!==this._prevState.groups||this._currentState.items!==this._prevState.items,t=this._isSelectElement,n=this._currentState.items!==this._prevState.items;e&&(t&&this._renderChoices(),n&&this._renderItems(),this._prevState=this._currentState)}},g.prototype._renderChoices=function(){var e=this,t=this._store,n=t.activeGroups,s=t.activeChoices,v=document.createDocumentFragment();if(this.choiceList.clear(),this.config.resetScrollPosition&&requestAnimationFrame(function(){return e.choiceList.scrollToTop()}),n.length>=1&&!this._isSearching){var P=s.filter(function(C){return C.placeholder===!0&&C.groupId===-1});P.length>=1&&(v=this._createChoicesFragment(P,v)),v=this._createGroupsFragment(n,s,v)}else s.length>=1&&(v=this._createChoicesFragment(s,v));if(v.childNodes&&v.childNodes.length>0){var M=this._store.activeItems,K=this._canAddItem(M,this.input.value);if(K.response)this.choiceList.append(v),this._highlightChoice();else{var f=this._getTemplate("notice",K.notice);this.choiceList.append(f)}}else{var u=void 0,f=void 0;this._isSearching?(f=typeof this.config.noResultsText=="function"?this.config.noResultsText():this.config.noResultsText,u=this._getTemplate("notice",f,"no-results")):(f=typeof this.config.noChoicesText=="function"?this.config.noChoicesText():this.config.noChoicesText,u=this._getTemplate("notice",f,"no-choices")),this.choiceList.append(u)}},g.prototype._renderItems=function(){var e=this._store.activeItems||[];this.itemList.clear();var t=this._createItemsFragment(e);t.childNodes&&this.itemList.append(t)},g.prototype._createGroupsFragment=function(e,t,n){var s=this;n===void 0&&(n=document.createDocumentFragment());var v=function(P){return t.filter(function(M){return s._isSelectOneElement?M.groupId===P.id:M.groupId===P.id&&(s.config.renderSelectedChoices==="always"||!M.selected)})};return this.config.shouldSort&&e.sort(this.config.sorter),e.forEach(function(P){var M=v(P);if(M.length>=1){var K=s._getTemplate("choiceGroup",P);n.appendChild(K),s._createChoicesFragment(M,n,!0)}}),n},g.prototype._createChoicesFragment=function(e,t,n){var s=this;t===void 0&&(t=document.createDocumentFragment()),n===void 0&&(n=!1);var v=this.config,P=v.renderSelectedChoices,M=v.searchResultLimit,K=v.renderChoiceLimit,f=this._isSearching?k.sortByScore:this.config.sorter,u=function(z){var ee=P==="auto"?s._isSelectOneElement||!z.selected:!0;if(ee){var ae=s._getTemplate("choice",z,s.config.itemSelectText);t.appendChild(ae)}},C=e;P==="auto"&&!this._isSelectOneElement&&(C=e.filter(function(z){return!z.selected}));var Y=C.reduce(function(z,ee){return ee.placeholder?z.placeholderChoices.push(ee):z.normalChoices.push(ee),z},{placeholderChoices:[],normalChoices:[]}),V=Y.placeholderChoices,U=Y.normalChoices;(this.config.shouldSort||this._isSearching)&&U.sort(f);var $=C.length,W=this._isSelectOneElement?_(_([],V,!0),U,!0):U;this._isSearching?$=M:K&&K>0&&!n&&($=K);for(var J=0;J<$;J+=1)W[J]&&u(W[J]);return t},g.prototype._createItemsFragment=function(e,t){var n=this;t===void 0&&(t=document.createDocumentFragment());var s=this.config,v=s.shouldSortItems,P=s.sorter,M=s.removeItemButton;v&&!this._isSelectOneElement&&e.sort(P),this._isTextElement?this.passedElement.value=e.map(function(f){var u=f.value;return u}).join(this.config.delimiter):this.passedElement.options=e;var K=function(f){var u=n._getTemplate("item",f,M);t.appendChild(u)};return e.forEach(K),t},g.prototype._triggerChange=function(e){e!=null&&this.passedElement.triggerEvent(y.EVENTS.change,{value:e})},g.prototype._selectPlaceholderChoice=function(e){this._addItem({value:e.value,label:e.label,choiceId:e.id,groupId:e.groupId,placeholder:e.placeholder}),this._triggerChange(e.value)},g.prototype._handleButtonAction=function(e,t){if(!(!e||!t||!this.config.removeItems||!this.config.removeItemButton)){var n=t.parentNode&&t.parentNode.dataset.id,s=n&&e.find(function(v){return v.id===parseInt(n,10)});s&&(this._removeItem(s),this._triggerChange(s.value),this._isSelectOneElement&&this._store.placeholderChoice&&this._selectPlaceholderChoice(this._store.placeholderChoice))}},g.prototype._handleItemAction=function(e,t,n){var s=this;if(n===void 0&&(n=!1),!(!e||!t||!this.config.removeItems||this._isSelectOneElement)){var v=t.dataset.id;e.forEach(function(P){P.id===parseInt("".concat(v),10)&&!P.highlighted?s.highlightItem(P):!n&&P.highlighted&&s.unhighlightItem(P)}),this.input.focus()}},g.prototype._handleChoiceAction=function(e,t){if(!(!e||!t)){var n=t.dataset.id,s=n&&this._store.getChoiceById(n);if(s){var v=e[0]&&e[0].keyCode?e[0].keyCode:void 0,P=this.dropdown.isActive;if(s.keyCode=v,this.passedElement.triggerEvent(y.EVENTS.choice,{choice:s}),!s.selected&&!s.disabled){var M=this._canAddItem(e,s.value);M.response&&(this._addItem({value:s.value,label:s.label,choiceId:s.id,groupId:s.groupId,customProperties:s.customProperties,placeholder:s.placeholder,keyCode:s.keyCode}),this._triggerChange(s.value))}this.clearInput(),P&&this._isSelectOneElement&&(this.hideDropdown(!0),this.containerOuter.focus())}}},g.prototype._handleBackspace=function(e){if(!(!this.config.removeItems||!e)){var t=e[e.length-1],n=e.some(function(s){return s.highlighted});this.config.editItems&&!n&&t?(this.input.value=t.value,this.input.setWidth(),this._removeItem(t),this._triggerChange(t.value)):(n||this.highlightItem(t,!1),this.removeHighlightedItems(!0))}},g.prototype._startLoading=function(){this._store.dispatch((0,O.setIsLoading)(!0))},g.prototype._stopLoading=function(){this._store.dispatch((0,O.setIsLoading)(!1))},g.prototype._handleLoadingState=function(e){e===void 0&&(e=!0);var t=this.itemList.getChild(".".concat(this.config.classNames.placeholder));e?(this.disable(),this.containerOuter.addLoadingState(),this._isSelectOneElement?t?t.innerHTML=this.config.loadingText:(t=this._getTemplate("placeholder",this.config.loadingText),t&&this.itemList.append(t)):this.input.placeholder=this.config.loadingText):(this.enable(),this.containerOuter.removeLoadingState(),this._isSelectOneElement?t&&(t.innerHTML=this._placeholderValue||""):this.input.placeholder=this._placeholderValue||"")},g.prototype._handleSearch=function(e){if(this.input.isFocussed){var t=this._store.choices,n=this.config,s=n.searchFloor,v=n.searchChoices,P=t.some(function(K){return!K.active});if(e!==null&&typeof e<"u"&&e.length>=s){var M=v?this._searchChoices(e):0;this.passedElement.triggerEvent(y.EVENTS.search,{value:e,resultCount:M})}else P&&(this._isSearching=!1,this._store.dispatch((0,r.activateChoices)(!0)))}},g.prototype._canAddItem=function(e,t){var n=!0,s=typeof this.config.addItemText=="function"?this.config.addItemText(t):this.config.addItemText;if(!this._isSelectOneElement){var v=(0,k.existsInArray)(e,t);this.config.maxItemCount>0&&this.config.maxItemCount<=e.length&&(n=!1,s=typeof this.config.maxItemText=="function"?this.config.maxItemText(this.config.maxItemCount):this.config.maxItemText),!this.config.duplicateItemsAllowed&&v&&n&&(n=!1,s=typeof this.config.uniqueItemText=="function"?this.config.uniqueItemText(t):this.config.uniqueItemText),this._isTextElement&&this.config.addItems&&n&&typeof this.config.addItemFilter=="function"&&!this.config.addItemFilter(t)&&(n=!1,s=typeof this.config.customAddItemText=="function"?this.config.customAddItemText(t):this.config.customAddItemText)}return{response:n,notice:s}},g.prototype._searchChoices=function(e){var t=typeof e=="string"?e.trim():e,n=typeof this._currentValue=="string"?this._currentValue.trim():this._currentValue;if(t.length<1&&t==="".concat(n," "))return 0;var s=this._store.searchableChoices,v=t,P=Object.assign(this.config.fuseOptions,{keys:_([],this.config.searchFields,!0),includeMatches:!0}),M=new a.default(s,P),K=M.search(v);return this._currentValue=t,this._highlightPosition=0,this._isSearching=!0,this._store.dispatch((0,r.filterChoices)(K)),K.length},g.prototype._addEventListeners=function(){var e=document.documentElement;e.addEventListener("touchend",this._onTouchEnd,!0),this.containerOuter.element.addEventListener("keydown",this._onKeyDown,!0),this.containerOuter.element.addEventListener("mousedown",this._onMouseDown,!0),e.addEventListener("click",this._onClick,{passive:!0}),e.addEventListener("touchmove",this._onTouchMove,{passive:!0}),this.dropdown.element.addEventListener("mouseover",this._onMouseOver,{passive:!0}),this._isSelectOneElement&&(this.containerOuter.element.addEventListener("focus",this._onFocus,{passive:!0}),this.containerOuter.element.addEventListener("blur",this._onBlur,{passive:!0})),this.input.element.addEventListener("keyup",this._onKeyUp,{passive:!0}),this.input.element.addEventListener("focus",this._onFocus,{passive:!0}),this.input.element.addEventListener("blur",this._onBlur,{passive:!0}),this.input.element.form&&this.input.element.form.addEventListener("reset",this._onFormReset,{passive:!0}),this.input.addEventListeners()},g.prototype._removeEventListeners=function(){var e=document.documentElement;e.removeEventListener("touchend",this._onTouchEnd,!0),this.containerOuter.element.removeEventListener("keydown",this._onKeyDown,!0),this.containerOuter.element.removeEventListener("mousedown",this._onMouseDown,!0),e.removeEventListener("click",this._onClick),e.removeEventListener("touchmove",this._onTouchMove),this.dropdown.element.removeEventListener("mouseover",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.removeEventListener("focus",this._onFocus),this.containerOuter.element.removeEventListener("blur",this._onBlur)),this.input.element.removeEventListener("keyup",this._onKeyUp),this.input.element.removeEventListener("focus",this._onFocus),this.input.element.removeEventListener("blur",this._onBlur),this.input.element.form&&this.input.element.form.removeEventListener("reset",this._onFormReset),this.input.removeEventListeners()},g.prototype._onKeyDown=function(e){var t=e.keyCode,n=this._store.activeItems,s=this.input.isFocussed,v=this.dropdown.isActive,P=this.itemList.hasChildren(),M=String.fromCharCode(t),K=/[^\x00-\x1F]/.test(M),f=y.KEY_CODES.BACK_KEY,u=y.KEY_CODES.DELETE_KEY,C=y.KEY_CODES.ENTER_KEY,Y=y.KEY_CODES.A_KEY,V=y.KEY_CODES.ESC_KEY,U=y.KEY_CODES.UP_KEY,$=y.KEY_CODES.DOWN_KEY,W=y.KEY_CODES.PAGE_UP_KEY,J=y.KEY_CODES.PAGE_DOWN_KEY;switch(!this._isTextElement&&!v&&K&&(this.showDropdown(),this.input.isFocussed||(this.input.value+=e.key.toLowerCase())),t){case Y:return this._onSelectKey(e,P);case C:return this._onEnterKey(e,n,v);case V:return this._onEscapeKey(v);case U:case W:case $:case J:return this._onDirectionKey(e,v);case u:case f:return this._onDeleteKey(e,n,s);default:}},g.prototype._onKeyUp=function(e){var t=e.target,n=e.keyCode,s=this.input.value,v=this._store.activeItems,P=this._canAddItem(v,s),M=y.KEY_CODES.BACK_KEY,K=y.KEY_CODES.DELETE_KEY;if(this._isTextElement){var f=P.notice&&s;if(f){var u=this._getTemplate("notice",P.notice);this.dropdown.element.innerHTML=u.outerHTML,this.showDropdown(!0)}else this.hideDropdown(!0)}else{var C=n===M||n===K,Y=C&&t&&!t.value,V=!this._isTextElement&&this._isSearching,U=this._canSearch&&P.response;Y&&V?(this._isSearching=!1,this._store.dispatch((0,r.activateChoices)(!0))):U&&this._handleSearch(this.input.rawValue)}this._canSearch=this.config.searchEnabled},g.prototype._onSelectKey=function(e,t){var n=e.ctrlKey,s=e.metaKey,v=n||s;if(v&&t){this._canSearch=!1;var P=this.config.removeItems&&!this.input.value&&this.input.element===document.activeElement;P&&this.highlightAll()}},g.prototype._onEnterKey=function(e,t,n){var s=e.target,v=y.KEY_CODES.ENTER_KEY,P=s&&s.hasAttribute("data-button");if(this._isTextElement&&s&&s.value){var M=this.input.value,K=this._canAddItem(t,M);K.response&&(this.hideDropdown(!0),this._addItem({value:M}),this._triggerChange(M),this.clearInput())}if(P&&(this._handleButtonAction(t,s),e.preventDefault()),n){var f=this.dropdown.getChild(".".concat(this.config.classNames.highlightedState));f&&(t[0]&&(t[0].keyCode=v),this._handleChoiceAction(t,f)),e.preventDefault()}else this._isSelectOneElement&&(this.showDropdown(),e.preventDefault())},g.prototype._onEscapeKey=function(e){e&&(this.hideDropdown(!0),this.containerOuter.focus())},g.prototype._onDirectionKey=function(e,t){var n=e.keyCode,s=e.metaKey,v=y.KEY_CODES.DOWN_KEY,P=y.KEY_CODES.PAGE_UP_KEY,M=y.KEY_CODES.PAGE_DOWN_KEY;if(t||this._isSelectOneElement){this.showDropdown(),this._canSearch=!1;var K=n===v||n===M?1:-1,f=s||n===M||n===P,u="[data-choice-selectable]",C=void 0;if(f)K>0?C=this.dropdown.element.querySelector("".concat(u,":last-of-type")):C=this.dropdown.element.querySelector(u);else{var Y=this.dropdown.element.querySelector(".".concat(this.config.classNames.highlightedState));Y?C=(0,k.getAdjacentEl)(Y,u,K):C=this.dropdown.element.querySelector(u)}C&&((0,k.isScrolledIntoView)(C,this.choiceList.element,K)||this.choiceList.scrollToChildElement(C,K),this._highlightChoice(C)),e.preventDefault()}},g.prototype._onDeleteKey=function(e,t,n){var s=e.target;!this._isSelectOneElement&&!s.value&&n&&(this._handleBackspace(t),e.preventDefault())},g.prototype._onTouchMove=function(){this._wasTap&&(this._wasTap=!1)},g.prototype._onTouchEnd=function(e){var t=(e||e.touches[0]).target,n=this._wasTap&&this.containerOuter.element.contains(t);if(n){var s=t===this.containerOuter.element||t===this.containerInner.element;s&&(this._isTextElement?this.input.focus():this._isSelectMultipleElement&&this.showDropdown()),e.stopPropagation()}this._wasTap=!0},g.prototype._onMouseDown=function(e){var t=e.target;if(t instanceof HTMLElement){if(E&&this.choiceList.element.contains(t)){var n=this.choiceList.element.firstElementChild,s=this._direction==="ltr"?e.offsetX>=n.offsetWidth:e.offsetX0;s&&this.unhighlightAll(),this.containerOuter.removeFocusState(),this.hideDropdown(!0)}},g.prototype._onFocus=function(e){var t,n=this,s=e.target,v=s&&this.containerOuter.element.contains(s);if(v){var P=(t={},t[y.TEXT_TYPE]=function(){s===n.input.element&&n.containerOuter.addFocusState()},t[y.SELECT_ONE_TYPE]=function(){n.containerOuter.addFocusState(),s===n.input.element&&n.showDropdown(!0)},t[y.SELECT_MULTIPLE_TYPE]=function(){s===n.input.element&&(n.showDropdown(!0),n.containerOuter.addFocusState())},t);P[this.passedElement.element.type]()}},g.prototype._onBlur=function(e){var t,n=this,s=e.target,v=s&&this.containerOuter.element.contains(s);if(v&&!this._isScrollingOnIe){var P=this._store.activeItems,M=P.some(function(f){return f.highlighted}),K=(t={},t[y.TEXT_TYPE]=function(){s===n.input.element&&(n.containerOuter.removeFocusState(),M&&n.unhighlightAll(),n.hideDropdown(!0))},t[y.SELECT_ONE_TYPE]=function(){n.containerOuter.removeFocusState(),(s===n.input.element||s===n.containerOuter.element&&!n._canSearch)&&n.hideDropdown(!0)},t[y.SELECT_MULTIPLE_TYPE]=function(){s===n.input.element&&(n.containerOuter.removeFocusState(),n.hideDropdown(!0),M&&n.unhighlightAll())},t);K[this.passedElement.element.type]()}else this._isScrollingOnIe=!1,this.input.element.focus()},g.prototype._onFormReset=function(){this._store.dispatch((0,O.resetTo)(this._initialState))},g.prototype._highlightChoice=function(e){var t=this;e===void 0&&(e=null);var n=Array.from(this.dropdown.element.querySelectorAll("[data-choice-selectable]"));if(n.length){var s=e,v=Array.from(this.dropdown.element.querySelectorAll(".".concat(this.config.classNames.highlightedState)));v.forEach(function(P){P.classList.remove(t.config.classNames.highlightedState),P.setAttribute("aria-selected","false")}),s?this._highlightPosition=n.indexOf(s):(n.length>this._highlightPosition?s=n[this._highlightPosition]:s=n[n.length-1],s||(s=n[0])),s.classList.add(this.config.classNames.highlightedState),s.setAttribute("aria-selected","true"),this.passedElement.triggerEvent(y.EVENTS.highlightChoice,{el:s}),this.dropdown.isActive&&(this.input.setActiveDescendant(s.id),this.containerOuter.setActiveDescendant(s.id))}},g.prototype._addItem=function(e){var t=e.value,n=e.label,s=n===void 0?null:n,v=e.choiceId,P=v===void 0?-1:v,M=e.groupId,K=M===void 0?-1:M,f=e.customProperties,u=f===void 0?{}:f,C=e.placeholder,Y=C===void 0?!1:C,V=e.keyCode,U=V===void 0?-1:V,$=typeof t=="string"?t.trim():t,W=this._store.items,J=s||$,z=P||-1,ee=K>=0?this._store.getGroupById(K):null,ae=W?W.length+1:1;this.config.prependValue&&($=this.config.prependValue+$.toString()),this.config.appendValue&&($+=this.config.appendValue.toString()),this._store.dispatch((0,l.addItem)({value:$,label:J,id:ae,choiceId:z,groupId:K,customProperties:u,placeholder:Y,keyCode:U})),this._isSelectOneElement&&this.removeActiveItems(ae),this.passedElement.triggerEvent(y.EVENTS.addItem,{id:ae,value:$,label:J,customProperties:u,groupValue:ee&&ee.value?ee.value:null,keyCode:U})},g.prototype._removeItem=function(e){var t=e.id,n=e.value,s=e.label,v=e.customProperties,P=e.choiceId,M=e.groupId,K=M&&M>=0?this._store.getGroupById(M):null;!t||!P||(this._store.dispatch((0,l.removeItem)(t,P)),this.passedElement.triggerEvent(y.EVENTS.removeItem,{id:t,value:n,label:s,customProperties:v,groupValue:K&&K.value?K.value:null}))},g.prototype._addChoice=function(e){var t=e.value,n=e.label,s=n===void 0?null:n,v=e.isSelected,P=v===void 0?!1:v,M=e.isDisabled,K=M===void 0?!1:M,f=e.groupId,u=f===void 0?-1:f,C=e.customProperties,Y=C===void 0?{}:C,V=e.placeholder,U=V===void 0?!1:V,$=e.keyCode,W=$===void 0?-1:$;if(!(typeof t>"u"||t===null)){var J=this._store.choices,z=s||t,ee=J?J.length+1:1,ae="".concat(this._baseId,"-").concat(this._idNames.itemChoice,"-").concat(ee);this._store.dispatch((0,r.addChoice)({id:ee,groupId:u,elementId:ae,value:t,label:z,disabled:K,customProperties:Y,placeholder:U,keyCode:W})),P&&this._addItem({value:t,label:z,choiceId:ee,customProperties:Y,placeholder:U,keyCode:W})}},g.prototype._addGroup=function(e){var t=this,n=e.group,s=e.id,v=e.valueKey,P=v===void 0?"value":v,M=e.labelKey,K=M===void 0?"label":M,f=(0,k.isType)("Object",n)?n.choices:Array.from(n.getElementsByTagName("OPTION")),u=s||Math.floor(new Date().valueOf()*Math.random()),C=n.disabled?n.disabled:!1;if(f){this._store.dispatch((0,c.addGroup)({value:n.label,id:u,active:!0,disabled:C}));var Y=function(V){var U=V.disabled||V.parentNode&&V.parentNode.disabled;t._addChoice({value:V[P],label:(0,k.isType)("Object",V)?V[K]:V.innerHTML,isSelected:V.selected,isDisabled:U,groupId:u,customProperties:V.customProperties,placeholder:V.placeholder})};f.forEach(Y)}else this._store.dispatch((0,c.addGroup)({value:n.label,id:n.id,active:!1,disabled:n.disabled}))},g.prototype._getTemplate=function(e){for(var t,n=[],s=1;s0?this.element.scrollTop+y-O:a.offsetTop;requestAnimationFrame(function(){c._animateScroll(D,r)})}},d.prototype._scrollDown=function(a,r,c){var l=(c-a)/r,O=l>1?l:1;this.element.scrollTop=a+O},d.prototype._scrollUp=function(a,r,c){var l=(a-c)/r,O=l>1?l:1;this.element.scrollTop=a-O},d.prototype._animateScroll=function(a,r){var c=this,l=_.SCROLLING_SPEED,O=this.element.scrollTop,L=!1;r>0?(this._scrollDown(O,l,a),Oa&&(L=!0)),L&&requestAnimationFrame(function(){c._animateScroll(a,r)})},d}();i.default=h},730:function(j,i,b){Object.defineProperty(i,"__esModule",{value:!0});var _=b(799),h=function(){function d(a){var r=a.element,c=a.classNames;if(this.element=r,this.classNames=c,!(r instanceof HTMLInputElement)&&!(r instanceof HTMLSelectElement))throw new TypeError("Invalid element passed");this.isDisabled=!1}return Object.defineProperty(d.prototype,"isActive",{get:function(){return this.element.dataset.choice==="active"},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,"dir",{get:function(){return this.element.dir},enumerable:!1,configurable:!0}),Object.defineProperty(d.prototype,"value",{get:function(){return this.element.value},set:function(a){this.element.value=a},enumerable:!1,configurable:!0}),d.prototype.conceal=function(){this.element.classList.add(this.classNames.input),this.element.hidden=!0,this.element.tabIndex=-1;var a=this.element.getAttribute("style");a&&this.element.setAttribute("data-choice-orig-style",a),this.element.setAttribute("data-choice","active")},d.prototype.reveal=function(){this.element.classList.remove(this.classNames.input),this.element.hidden=!1,this.element.removeAttribute("tabindex");var a=this.element.getAttribute("data-choice-orig-style");a?(this.element.removeAttribute("data-choice-orig-style"),this.element.setAttribute("style",a)):this.element.removeAttribute("style"),this.element.removeAttribute("data-choice"),this.element.value=this.element.value},d.prototype.enable=function(){this.element.removeAttribute("disabled"),this.element.disabled=!1,this.isDisabled=!1},d.prototype.disable=function(){this.element.setAttribute("disabled",""),this.element.disabled=!0,this.isDisabled=!0},d.prototype.triggerEvent=function(a,r){(0,_.dispatchEvent)(this.element,a,r)},d}();i.default=h},541:function(j,i,b){var _=this&&this.__extends||function(){var r=function(c,l){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(O,L){O.__proto__=L}||function(O,L){for(var y in L)Object.prototype.hasOwnProperty.call(L,y)&&(O[y]=L[y])},r(c,l)};return function(c,l){if(typeof l!="function"&&l!==null)throw new TypeError("Class extends value "+String(l)+" is not a constructor or null");r(c,l);function O(){this.constructor=c}c.prototype=l===null?Object.create(l):(O.prototype=l.prototype,new O)}}(),h=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(i,"__esModule",{value:!0});var d=h(b(730)),a=function(r){_(c,r);function c(l){var O=l.element,L=l.classNames,y=l.delimiter,D=r.call(this,{element:O,classNames:L})||this;return D.delimiter=y,D}return Object.defineProperty(c.prototype,"value",{get:function(){return this.element.value},set:function(l){this.element.setAttribute("value",l),this.element.value=l},enumerable:!1,configurable:!0}),c}(d.default);i.default=a},982:function(j,i,b){var _=this&&this.__extends||function(){var r=function(c,l){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(O,L){O.__proto__=L}||function(O,L){for(var y in L)Object.prototype.hasOwnProperty.call(L,y)&&(O[y]=L[y])},r(c,l)};return function(c,l){if(typeof l!="function"&&l!==null)throw new TypeError("Class extends value "+String(l)+" is not a constructor or null");r(c,l);function O(){this.constructor=c}c.prototype=l===null?Object.create(l):(O.prototype=l.prototype,new O)}}(),h=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(i,"__esModule",{value:!0});var d=h(b(730)),a=function(r){_(c,r);function c(l){var O=l.element,L=l.classNames,y=l.template,D=r.call(this,{element:O,classNames:L})||this;return D.template=y,D}return Object.defineProperty(c.prototype,"placeholderOption",{get:function(){return this.element.querySelector('option[value=""]')||this.element.querySelector("option[placeholder]")},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"optionGroups",{get:function(){return Array.from(this.element.getElementsByTagName("OPTGROUP"))},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"options",{get:function(){return Array.from(this.element.options)},set:function(l){var O=this,L=document.createDocumentFragment(),y=function(D){var k=O.template(D);L.appendChild(k)};l.forEach(function(D){return y(D)}),this.appendDocFragment(L)},enumerable:!1,configurable:!0}),c.prototype.appendDocFragment=function(l){this.element.innerHTML="",this.element.appendChild(l)},c}(d.default);i.default=a},883:function(j,i){Object.defineProperty(i,"__esModule",{value:!0}),i.SCROLLING_SPEED=i.SELECT_MULTIPLE_TYPE=i.SELECT_ONE_TYPE=i.TEXT_TYPE=i.KEY_CODES=i.ACTION_TYPES=i.EVENTS=void 0,i.EVENTS={showDropdown:"showDropdown",hideDropdown:"hideDropdown",change:"change",choice:"choice",search:"search",addItem:"addItem",removeItem:"removeItem",highlightItem:"highlightItem",highlightChoice:"highlightChoice",unhighlightItem:"unhighlightItem"},i.ACTION_TYPES={ADD_CHOICE:"ADD_CHOICE",FILTER_CHOICES:"FILTER_CHOICES",ACTIVATE_CHOICES:"ACTIVATE_CHOICES",CLEAR_CHOICES:"CLEAR_CHOICES",ADD_GROUP:"ADD_GROUP",ADD_ITEM:"ADD_ITEM",REMOVE_ITEM:"REMOVE_ITEM",HIGHLIGHT_ITEM:"HIGHLIGHT_ITEM",CLEAR_ALL:"CLEAR_ALL",RESET_TO:"RESET_TO",SET_IS_LOADING:"SET_IS_LOADING"},i.KEY_CODES={BACK_KEY:46,DELETE_KEY:8,ENTER_KEY:13,A_KEY:65,ESC_KEY:27,UP_KEY:38,DOWN_KEY:40,PAGE_UP_KEY:33,PAGE_DOWN_KEY:34},i.TEXT_TYPE="text",i.SELECT_ONE_TYPE="select-one",i.SELECT_MULTIPLE_TYPE="select-multiple",i.SCROLLING_SPEED=4},789:function(j,i,b){Object.defineProperty(i,"__esModule",{value:!0}),i.DEFAULT_CONFIG=i.DEFAULT_CLASSNAMES=void 0;var _=b(799);i.DEFAULT_CLASSNAMES={containerOuter:"choices",containerInner:"choices__inner",input:"choices__input",inputCloned:"choices__input--cloned",list:"choices__list",listItems:"choices__list--multiple",listSingle:"choices__list--single",listDropdown:"choices__list--dropdown",item:"choices__item",itemSelectable:"choices__item--selectable",itemDisabled:"choices__item--disabled",itemChoice:"choices__item--choice",placeholder:"choices__placeholder",group:"choices__group",groupHeading:"choices__heading",button:"choices__button",activeState:"is-active",focusState:"is-focused",openState:"is-open",disabledState:"is-disabled",highlightedState:"is-highlighted",selectedState:"is-selected",flippedState:"is-flipped",loadingState:"is-loading",noResults:"has-no-results",noChoices:"has-no-choices"},i.DEFAULT_CONFIG={items:[],choices:[],silent:!1,renderChoiceLimit:-1,maxItemCount:-1,addItems:!0,addItemFilter:null,removeItems:!0,removeItemButton:!1,editItems:!1,allowHTML:!0,duplicateItemsAllowed:!0,delimiter:",",paste:!0,searchEnabled:!0,searchChoices:!0,searchFloor:1,searchResultLimit:4,searchFields:["label","value"],position:"auto",resetScrollPosition:!0,shouldSort:!0,shouldSortItems:!1,sorter:_.sortByAlpha,placeholder:!0,placeholderValue:null,searchPlaceholderValue:null,prependValue:null,appendValue:null,renderSelectedChoices:"auto",loadingText:"Loading...",noResultsText:"No results found",noChoicesText:"No choices to choose from",itemSelectText:"Press to select",uniqueItemText:"Only unique values can be added",customAddItemText:"Only values matching specific conditions can be added",addItemText:function(h){return'Press Enter to add "'.concat((0,_.sanitise)(h),'"')},maxItemText:function(h){return"Only ".concat(h," values can be added")},valueComparer:function(h,d){return h===d},fuseOptions:{includeScore:!0},labelId:"",callbackOnInit:null,callbackOnCreateTemplates:null,classNames:i.DEFAULT_CLASSNAMES}},18:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},978:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},948:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},359:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},285:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},533:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},187:function(j,i,b){var _=this&&this.__createBinding||(Object.create?function(d,a,r,c){c===void 0&&(c=r);var l=Object.getOwnPropertyDescriptor(a,r);(!l||("get"in l?!a.__esModule:l.writable||l.configurable))&&(l={enumerable:!0,get:function(){return a[r]}}),Object.defineProperty(d,c,l)}:function(d,a,r,c){c===void 0&&(c=r),d[c]=a[r]}),h=this&&this.__exportStar||function(d,a){for(var r in d)r!=="default"&&!Object.prototype.hasOwnProperty.call(a,r)&&_(a,d,r)};Object.defineProperty(i,"__esModule",{value:!0}),h(b(18),i),h(b(978),i),h(b(948),i),h(b(359),i),h(b(285),i),h(b(533),i),h(b(287),i),h(b(132),i),h(b(837),i),h(b(598),i),h(b(369),i),h(b(37),i),h(b(47),i),h(b(923),i),h(b(876),i)},287:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},132:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},837:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},598:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},37:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},369:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},47:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},923:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},876:function(j,i){Object.defineProperty(i,"__esModule",{value:!0})},799:function(j,i){Object.defineProperty(i,"__esModule",{value:!0}),i.parseCustomProperties=i.diff=i.cloneObject=i.existsInArray=i.dispatchEvent=i.sortByScore=i.sortByAlpha=i.strToEl=i.sanitise=i.isScrolledIntoView=i.getAdjacentEl=i.wrap=i.isType=i.getType=i.generateId=i.generateChars=i.getRandomNumber=void 0;var b=function(E,w){return Math.floor(Math.random()*(w-E)+E)};i.getRandomNumber=b;var _=function(E){return Array.from({length:E},function(){return(0,i.getRandomNumber)(0,36).toString(36)}).join("")};i.generateChars=_;var h=function(E,w){var N=E.id||E.name&&"".concat(E.name,"-").concat((0,i.generateChars)(2))||(0,i.generateChars)(4);return N=N.replace(/(:|\.|\[|\]|,)/g,""),N="".concat(w,"-").concat(N),N};i.generateId=h;var d=function(E){return Object.prototype.toString.call(E).slice(8,-1)};i.getType=d;var a=function(E,w){return w!=null&&(0,i.getType)(w)===E};i.isType=a;var r=function(E,w){return w===void 0&&(w=document.createElement("div")),E.parentNode&&(E.nextSibling?E.parentNode.insertBefore(w,E.nextSibling):E.parentNode.appendChild(w)),w.appendChild(E)};i.wrap=r;var c=function(E,w,N){N===void 0&&(N=1);for(var g="".concat(N>0?"next":"previous","ElementSibling"),e=E[g];e;){if(e.matches(w))return e;e=e[g]}return e};i.getAdjacentEl=c;var l=function(E,w,N){if(N===void 0&&(N=1),!E)return!1;var g;return N>0?g=w.scrollTop+w.offsetHeight>=E.offsetTop+E.offsetHeight:g=E.offsetTop>=w.scrollTop,g};i.isScrolledIntoView=l;var O=function(E){return typeof E!="string"?E:E.replace(/&/g,"&").replace(/>/g,">").replace(/-1?h.map(function(y){var D=y;return D.id===parseInt("".concat(c.choiceId),10)&&(D.selected=!0),D}):h}case"REMOVE_ITEM":{var l=d;return l.choiceId&&l.choiceId>-1?h.map(function(y){var D=y;return D.id===parseInt("".concat(l.choiceId),10)&&(D.selected=!1),D}):h}case"FILTER_CHOICES":{var O=d;return h.map(function(y){var D=y;return D.active=O.results.some(function(k){var Q=k.item,Z=k.score;return Q.id===D.id?(D.score=Z,!0):!1}),D})}case"ACTIVATE_CHOICES":{var L=d;return h.map(function(y){var D=y;return D.active=L.active,D})}case"CLEAR_CHOICES":return i.defaultState;default:return h}}i.default=_},871:function(j,i){var b=this&&this.__spreadArray||function(h,d,a){if(a||arguments.length===2)for(var r=0,c=d.length,l;r0?"treeitem":"option"),Object.assign(t.dataset,{choice:"",id:Q,value:Z,selectText:d}),N?(t.classList.add(D),t.dataset.choiceDisabled="",t.setAttribute("aria-disabled","true")):(t.classList.add(L),t.dataset.choiceSelectable=""),t},input:function(_,h){var d=_.classNames,a=d.input,r=d.inputCloned,c=Object.assign(document.createElement("input"),{type:"search",name:"search_terms",className:"".concat(a," ").concat(r),autocomplete:"off",autocapitalize:"off",spellcheck:!1});return c.setAttribute("role","textbox"),c.setAttribute("aria-autocomplete","list"),c.setAttribute("aria-label",h),c},dropdown:function(_){var h=_.classNames,d=h.list,a=h.listDropdown,r=document.createElement("div");return r.classList.add(d,a),r.setAttribute("aria-expanded","false"),r},notice:function(_,h,d){var a,r=_.allowHTML,c=_.classNames,l=c.item,O=c.itemChoice,L=c.noResults,y=c.noChoices;d===void 0&&(d="");var D=[l,O];return d==="no-choices"?D.push(y):d==="no-results"&&D.push(L),Object.assign(document.createElement("div"),(a={},a[r?"innerHTML":"innerText"]=h,a.className=D.join(" "),a))},option:function(_){var h=_.label,d=_.value,a=_.customProperties,r=_.active,c=_.disabled,l=new Option(h,d,!1,r);return a&&(l.dataset.customProperties="".concat(a)),l.disabled=!!c,l}};i.default=b},996:function(j){var i=function(w){return b(w)&&!_(w)};function b(E){return!!E&&typeof E=="object"}function _(E){var w=Object.prototype.toString.call(E);return w==="[object RegExp]"||w==="[object Date]"||a(E)}var h=typeof Symbol=="function"&&Symbol.for,d=h?Symbol.for("react.element"):60103;function a(E){return E.$$typeof===d}function r(E){return Array.isArray(E)?[]:{}}function c(E,w){return w.clone!==!1&&w.isMergeableObject(E)?Z(r(E),E,w):E}function l(E,w,N){return E.concat(w).map(function(g){return c(g,N)})}function O(E,w){if(!w.customMerge)return Z;var N=w.customMerge(E);return typeof N=="function"?N:Z}function L(E){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(E).filter(function(w){return E.propertyIsEnumerable(w)}):[]}function y(E){return Object.keys(E).concat(L(E))}function D(E,w){try{return w in E}catch{return!1}}function k(E,w){return D(E,w)&&!(Object.hasOwnProperty.call(E,w)&&Object.propertyIsEnumerable.call(E,w))}function Q(E,w,N){var g={};return N.isMergeableObject(E)&&y(E).forEach(function(e){g[e]=c(E[e],N)}),y(w).forEach(function(e){k(E,e)||(D(E,e)&&N.isMergeableObject(w[e])?g[e]=O(e,N)(E[e],w[e],N):g[e]=c(w[e],N))}),g}function Z(E,w,N){N=N||{},N.arrayMerge=N.arrayMerge||l,N.isMergeableObject=N.isMergeableObject||i,N.cloneUnlessOtherwiseSpecified=c;var g=Array.isArray(w),e=Array.isArray(E),t=g===e;return t?g?N.arrayMerge(E,w,N):Q(E,w,N):c(w,N)}Z.all=function(w,N){if(!Array.isArray(w))throw new Error("first argument should be an array");return w.reduce(function(g,e){return Z(g,e,N)},{})};var ne=Z;j.exports=ne},221:function(j,i,b){b.r(i),b.d(i,{default:function(){return Se}});function _(p){return Array.isArray?Array.isArray(p):k(p)==="[object Array]"}let h=1/0;function d(p){if(typeof p=="string")return p;let o=p+"";return o=="0"&&1/p==-h?"-0":o}function a(p){return p==null?"":d(p)}function r(p){return typeof p=="string"}function c(p){return typeof p=="number"}function l(p){return p===!0||p===!1||L(p)&&k(p)=="[object Boolean]"}function O(p){return typeof p=="object"}function L(p){return O(p)&&p!==null}function y(p){return p!=null}function D(p){return!p.trim().length}function k(p){return p==null?p===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(p)}let Q="Extended search is not available",Z="Incorrect 'index' type",ne=p=>`Invalid value for key ${p}`,E=p=>`Pattern length exceeds max of ${p}.`,w=p=>`Missing ${p} property in key`,N=p=>`Property 'weight' in key '${p}' must be a positive integer`,g=Object.prototype.hasOwnProperty;class e{constructor(o){this._keys=[],this._keyMap={};let m=0;o.forEach(S=>{let I=t(S);m+=I.weight,this._keys.push(I),this._keyMap[I.id]=I,m+=I.weight}),this._keys.forEach(S=>{S.weight/=m})}get(o){return this._keyMap[o]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function t(p){let o=null,m=null,S=null,I=1,T=null;if(r(p)||_(p))S=p,o=n(p),m=s(p);else{if(!g.call(p,"name"))throw new Error(w("name"));let A=p.name;if(S=A,g.call(p,"weight")&&(I=p.weight,I<=0))throw new Error(N(A));o=n(A),m=s(A),T=p.getFn}return{path:o,id:m,weight:I,src:S,getFn:T}}function n(p){return _(p)?p:p.split(".")}function s(p){return _(p)?p.join("."):p}function v(p,o){let m=[],S=!1,I=(T,A,R)=>{if(y(T))if(!A[R])m.push(T);else{let F=A[R],H=T[F];if(!y(H))return;if(R===A.length-1&&(r(H)||c(H)||l(H)))m.push(a(H));else if(_(H)){S=!0;for(let B=0,x=H.length;Bp.score===o.score?p.idx{this._keysMap[m.id]=S})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,r(this.docs[0])?this.docs.forEach((o,m)=>{this._addString(o,m)}):this.docs.forEach((o,m)=>{this._addObject(o,m)}),this.norm.clear())}add(o){let m=this.size();r(o)?this._addString(o,m):this._addObject(o,m)}removeAt(o){this.records.splice(o,1);for(let m=o,S=this.size();m{let A=I.getFn?I.getFn(o):this.getFn(o,I.path);if(y(A)){if(_(A)){let R=[],F=[{nestedArrIndex:-1,value:A}];for(;F.length;){let{nestedArrIndex:H,value:B}=F.pop();if(y(B))if(r(B)&&!D(B)){let x={v:B,i:H,n:this.norm.get(B)};R.push(x)}else _(B)&&B.forEach((x,G)=>{F.push({nestedArrIndex:G,value:x})})}S.$[T]=R}else if(r(A)&&!D(A)){let R={v:A,n:this.norm.get(A)};S.$[T]=R}}}),this.records.push(S)}toJSON(){return{keys:this.keys,records:this.records}}}function U(p,o,{getFn:m=u.getFn,fieldNormWeight:S=u.fieldNormWeight}={}){let I=new V({getFn:m,fieldNormWeight:S});return I.setKeys(p.map(t)),I.setSources(o),I.create(),I}function $(p,{getFn:o=u.getFn,fieldNormWeight:m=u.fieldNormWeight}={}){let{keys:S,records:I}=p,T=new V({getFn:o,fieldNormWeight:m});return T.setKeys(S),T.setIndexRecords(I),T}function W(p,{errors:o=0,currentLocation:m=0,expectedLocation:S=0,distance:I=u.distance,ignoreLocation:T=u.ignoreLocation}={}){let A=o/p.length;if(T)return A;let R=Math.abs(S-m);return I?A+R/I:R?1:A}function J(p=[],o=u.minMatchCharLength){let m=[],S=-1,I=-1,T=0;for(let A=p.length;T=o&&m.push([S,I]),S=-1)}return p[T-1]&&T-S>=o&&m.push([S,T-1]),m}let z=32;function ee(p,o,m,{location:S=u.location,distance:I=u.distance,threshold:T=u.threshold,findAllMatches:A=u.findAllMatches,minMatchCharLength:R=u.minMatchCharLength,includeMatches:F=u.includeMatches,ignoreLocation:H=u.ignoreLocation}={}){if(o.length>z)throw new Error(E(z));let B=o.length,x=p.length,G=Math.max(0,Math.min(S,x)),q=T,re=G,ue=R>1||F,Ee=ue?Array(x):[],ve;for(;(ve=p.indexOf(o,re))>-1;){let he=W(o,{currentLocation:ve,expectedLocation:G,distance:I,ignoreLocation:H});if(q=Math.min(he,q),re=ve+B,ue){let ge=0;for(;ge=Ue;fe-=1){let Le=fe-1,We=m[p.charAt(Le)];if(ue&&(Ee[Le]=+!!We),Oe[fe]=(Oe[fe+1]<<1|1)&We,he&&(Oe[fe]|=(Ie[fe+1]|Ie[fe])<<1|1|Ie[fe+1]),Oe[fe]&at&&(be=W(o,{errors:he,currentLocation:Le,expectedLocation:G,distance:I,ignoreLocation:H}),be<=q)){if(q=be,re=Le,re<=G)break;Ue=Math.max(1,2*G-re)}}if(W(o,{errors:he+1,currentLocation:G,expectedLocation:G,distance:I,ignoreLocation:H})>q)break;Ie=Oe}let Ke={isMatch:re>=0,score:Math.max(.001,be)};if(ue){let he=J(Ee,R);he.length?F&&(Ke.indices=he):Ke.isMatch=!1}return Ke}function ae(p){let o={};for(let m=0,S=p.length;m{this.chunks.push({pattern:G,alphabet:ae(G),startIndex:q})},x=this.pattern.length;if(x>z){let G=0,q=x%z,re=x-q;for(;G{let{isMatch:ve,score:Ie,indices:be}=ee(o,re,ue,{location:I+Ee,distance:T,threshold:A,findAllMatches:R,minMatchCharLength:F,includeMatches:S,ignoreLocation:H});ve&&(G=!0),x+=Ie,ve&&be&&(B=[...B,...be])});let q={isMatch:G,score:G?x/this.chunks.length:1};return G&&S&&(q.indices=B),q}}class le{constructor(o){this.pattern=o}static isMultiMatch(o){return _e(o,this.multiRegex)}static isSingleMatch(o){return _e(o,this.singleRegex)}search(){}}function _e(p,o){let m=p.match(o);return m?m[1]:null}class te extends le{constructor(o){super(o)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(o){let m=o===this.pattern;return{isMatch:m,score:m?0:1,indices:[0,this.pattern.length-1]}}}class de extends le{constructor(o){super(o)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(o){let S=o.indexOf(this.pattern)===-1;return{isMatch:S,score:S?0:1,indices:[0,o.length-1]}}}class pe extends le{constructor(o){super(o)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(o){let m=o.startsWith(this.pattern);return{isMatch:m,score:m?0:1,indices:[0,this.pattern.length-1]}}}class oe extends le{constructor(o){super(o)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(o){let m=!o.startsWith(this.pattern);return{isMatch:m,score:m?0:1,indices:[0,o.length-1]}}}class Te extends le{constructor(o){super(o)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(o){let m=o.endsWith(this.pattern);return{isMatch:m,score:m?0:1,indices:[o.length-this.pattern.length,o.length-1]}}}class Pe extends le{constructor(o){super(o)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(o){let m=!o.endsWith(this.pattern);return{isMatch:m,score:m?0:1,indices:[0,o.length-1]}}}class He extends le{constructor(o,{location:m=u.location,threshold:S=u.threshold,distance:I=u.distance,includeMatches:T=u.includeMatches,findAllMatches:A=u.findAllMatches,minMatchCharLength:R=u.minMatchCharLength,isCaseSensitive:F=u.isCaseSensitive,ignoreLocation:H=u.ignoreLocation}={}){super(o),this._bitapSearch=new ce(o,{location:m,threshold:S,distance:I,includeMatches:T,findAllMatches:A,minMatchCharLength:R,isCaseSensitive:F,ignoreLocation:H})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(o){return this._bitapSearch.searchIn(o)}}class Be extends le{constructor(o){super(o)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(o){let m=0,S,I=[],T=this.pattern.length;for(;(S=o.indexOf(this.pattern,m))>-1;)m=S+T,I.push([S,m-1]);let A=!!I.length;return{isMatch:A,score:A?0:1,indices:I}}}let Me=[te,Be,pe,oe,Pe,Te,de,He],Ve=Me.length,Xe=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,Je="|";function Qe(p,o={}){return p.split(Je).map(m=>{let S=m.trim().split(Xe).filter(T=>T&&!!T.trim()),I=[];for(let T=0,A=S.length;T!!(p[Ce.AND]||p[Ce.OR]),tt=p=>!!p[je.PATH],it=p=>!_(p)&&O(p)&&!Re(p),ke=p=>({[Ce.AND]:Object.keys(p).map(o=>({[o]:p[o]}))});function xe(p,o,{auto:m=!0}={}){let S=I=>{let T=Object.keys(I),A=tt(I);if(!A&&T.length>1&&!Re(I))return S(ke(I));if(it(I)){let F=A?I[je.PATH]:T[0],H=A?I[je.PATTERN]:I[F];if(!r(H))throw new Error(ne(F));let B={keyId:s(F),pattern:H};return m&&(B.searcher=Ne(H,o)),B}let R={children:[],operator:T[0]};return T.forEach(F=>{let H=I[F];_(H)&&H.forEach(B=>{R.children.push(S(B))})}),R};return Re(p)||(p=ke(p)),S(p)}function nt(p,{ignoreFieldNorm:o=u.ignoreFieldNorm}){p.forEach(m=>{let S=1;m.matches.forEach(({key:I,norm:T,score:A})=>{let R=I?I.weight:null;S*=Math.pow(A===0&&R?Number.EPSILON:A,(R||1)*(o?1:T))}),m.score=S})}function rt(p,o){let m=p.matches;o.matches=[],y(m)&&m.forEach(S=>{if(!y(S.indices)||!S.indices.length)return;let{indices:I,value:T}=S,A={indices:I,value:T};S.key&&(A.key=S.key.src),S.idx>-1&&(A.refIndex=S.idx),o.matches.push(A)})}function st(p,o){o.score=p.score}function ot(p,o,{includeMatches:m=u.includeMatches,includeScore:S=u.includeScore}={}){let I=[];return m&&I.push(rt),S&&I.push(st),p.map(T=>{let{idx:A}=T,R={item:o[A],refIndex:A};return I.length&&I.forEach(F=>{F(T,R)}),R})}class Se{constructor(o,m={},S){this.options={...u,...m},this.options.useExtendedSearch,this._keyStore=new e(this.options.keys),this.setCollection(o,S)}setCollection(o,m){if(this._docs=o,m&&!(m instanceof V))throw new Error(Z);this._myIndex=m||U(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(o){y(o)&&(this._docs.push(o),this._myIndex.add(o))}remove(o=()=>!1){let m=[];for(let S=0,I=this._docs.length;S-1&&(F=F.slice(0,m)),ot(F,this._docs,{includeMatches:S,includeScore:I})}_searchStringList(o){let m=Ne(o,this.options),{records:S}=this._myIndex,I=[];return S.forEach(({v:T,i:A,n:R})=>{if(!y(T))return;let{isMatch:F,score:H,indices:B}=m.searchIn(T);F&&I.push({item:T,idx:A,matches:[{score:H,value:T,norm:R,indices:B}]})}),I}_searchLogical(o){let m=xe(o,this.options),S=(R,F,H)=>{if(!R.children){let{keyId:x,searcher:G}=R,q=this._findMatches({key:this._keyStore.get(x),value:this._myIndex.getValueForItemAtKeyId(F,x),searcher:G});return q&&q.length?[{idx:H,item:F,matches:q}]:[]}let B=[];for(let x=0,G=R.children.length;x{if(y(R)){let H=S(m,R,F);H.length&&(T[F]||(T[F]={idx:F,item:R,matches:[]},A.push(T[F])),H.forEach(({matches:B})=>{T[F].matches.push(...B)}))}}),A}_searchObjectList(o){let m=Ne(o,this.options),{keys:S,records:I}=this._myIndex,T=[];return I.forEach(({$:A,i:R})=>{if(!y(A))return;let F=[];S.forEach((H,B)=>{F.push(...this._findMatches({key:H,value:A[B],searcher:m}))}),F.length&&T.push({idx:R,item:A,matches:F})}),T}_findMatches({key:o,value:m,searcher:S}){if(!y(m))return[];let I=[];if(_(m))m.forEach(({v:T,i:A,n:R})=>{if(!y(T))return;let{isMatch:F,score:H,indices:B}=S.searchIn(T);F&&I.push({score:H,key:o,value:T,idx:A,norm:R,indices:B})});else{let{v:T,n:A}=m,{isMatch:R,score:F,indices:H}=S.searchIn(T);R&&I.push({score:F,key:o,value:T,norm:A,indices:H})}return I}}Se.version="6.6.2",Se.createIndex=U,Se.parseIndex=$,Se.config=u,Se.parseQuery=xe,et(qe)},791:function(j,i,b){b.r(i),b.d(i,{__DO_NOT_USE__ActionTypes:function(){return y},applyMiddleware:function(){return M},bindActionCreators:function(){return v},combineReducers:function(){return n},compose:function(){return P},createStore:function(){return w},legacy_createStore:function(){return N}});function _(f){"@babel/helpers - typeof";return _=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(u){return typeof u}:function(u){return u&&typeof Symbol=="function"&&u.constructor===Symbol&&u!==Symbol.prototype?"symbol":typeof u},_(f)}function h(f,u){if(_(f)!=="object"||f===null)return f;var C=f[Symbol.toPrimitive];if(C!==void 0){var Y=C.call(f,u||"default");if(_(Y)!=="object")return Y;throw new TypeError("@@toPrimitive must return a primitive value.")}return(u==="string"?String:Number)(f)}function d(f){var u=h(f,"string");return _(u)==="symbol"?u:String(u)}function a(f,u,C){return u=d(u),u in f?Object.defineProperty(f,u,{value:C,enumerable:!0,configurable:!0,writable:!0}):f[u]=C,f}function r(f,u){var C=Object.keys(f);if(Object.getOwnPropertySymbols){var Y=Object.getOwnPropertySymbols(f);u&&(Y=Y.filter(function(V){return Object.getOwnPropertyDescriptor(f,V).enumerable})),C.push.apply(C,Y)}return C}function c(f){for(var u=1;u"u"&&(C=u,u=void 0),typeof C<"u"){if(typeof C!="function")throw new Error(l(1));return C(w)(f,u)}if(typeof f!="function")throw new Error(l(2));var V=f,U=u,$=[],W=$,J=!1;function z(){W===$&&(W=$.slice())}function ee(){if(J)throw new Error(l(3));return U}function ae(te){if(typeof te!="function")throw new Error(l(4));if(J)throw new Error(l(5));var de=!0;return z(),W.push(te),function(){if(de){if(J)throw new Error(l(6));de=!1,z();var oe=W.indexOf(te);W.splice(oe,1),$=null}}}function ce(te){if(!D(te))throw new Error(l(7));if(typeof te.type>"u")throw new Error(l(8));if(J)throw new Error(l(9));try{J=!0,U=V(U,te)}finally{J=!1}for(var de=$=W,pe=0;pe0)return"Unexpected "+($.length>1?"keys":"key")+" "+('"'+$.join('", "')+'" found in '+U+". ")+"Expected to find one of the known reducer keys instead: "+('"'+V.join('", "')+'". Unexpected keys will be ignored.')}function t(f){Object.keys(f).forEach(function(u){var C=f[u],Y=C(void 0,{type:y.INIT});if(typeof Y>"u")throw new Error(l(12));if(typeof C(void 0,{type:y.PROBE_UNKNOWN_ACTION()})>"u")throw new Error(l(13))})}function n(f){for(var u=Object.keys(f),C={},Y=0;Y"u"){var Te=ee&&ee.type;throw new Error(l(14))}le[te]=oe,ce=ce||oe!==pe}return ce=ce||U.length!==Object.keys(z).length,ce?le:z}}function s(f,u){return function(){return u(f.apply(this,arguments))}}function v(f,u){if(typeof f=="function")return s(f,u);if(typeof f!="object"||f===null)throw new Error(l(16));var C={};for(var Y in f){var V=f[Y];typeof V=="function"&&(C[Y]=s(V,u))}return C}function P(){for(var f=arguments.length,u=new Array(f),C=0;Cwindow.pluralize(O,e,{count:e}),noChoicesText:E,noResultsText:L,placeholderValue:k,position:Q??"auto",removeItemButton:se,renderChoiceLimit:D,searchEnabled:h,searchFields:w??["label"],searchPlaceholderValue:E,searchResultLimit:D,shouldSort:!1,searchFloor:a?0:1}),await this.refreshChoices({withInitialOptions:!0}),[null,void 0,""].includes(this.state)||this.select.setChoiceByValue(this.formatState(this.state)),this.refreshPlaceholder(),b&&this.select.showDropdown(),this.$refs.input.addEventListener("change",()=>{this.refreshPlaceholder(),!this.isStateBeingUpdated&&(this.isStateBeingUpdated=!0,this.state=this.select.getValue(!0)??null,this.$nextTick(()=>this.isStateBeingUpdated=!1))}),d&&this.$refs.input.addEventListener("showDropdown",async()=>{this.select.clearChoices(),await this.select.setChoices([{label:c,value:"",disabled:!0}]),await this.refreshChoices()}),a&&(this.$refs.input.addEventListener("search",async e=>{let t=e.detail.value?.trim();this.isSearching=!0,this.select.clearChoices(),await this.select.setChoices([{label:[null,void 0,""].includes(t)?c:ne,value:"",disabled:!0}])}),this.$refs.input.addEventListener("search",Alpine.debounce(async e=>{await this.refreshChoices({search:e.detail.value?.trim()}),this.isSearching=!1},Z))),_||window.addEventListener("filament-forms::select.refreshSelectedOptionLabel",async e=>{e.detail.livewireId===r&&e.detail.statePath===g&&await this.refreshChoices({withInitialOptions:!d})}),this.$watch("state",async()=>{this.select&&(this.refreshPlaceholder(),!this.isStateBeingUpdated&&await this.refreshChoices({withInitialOptions:!d}))})},destroy:function(){this.select.destroy(),this.select=null},refreshChoices:async function(e={}){let t=await this.getChoices(e);this.select&&(this.select.clearStore(),this.refreshPlaceholder(),this.setChoices(t),[null,void 0,""].includes(this.state)||this.select.setChoiceByValue(this.formatState(this.state)))},setChoices:function(e){this.select.setChoices(e,"value","label",!0)},getChoices:async function(e={}){let t=await this.getExistingOptions(e);return t.concat(await this.getMissingOptions(t))},getExistingOptions:async function({search:e,withInitialOptions:t}){if(t)return y;let n=[];return e!==""&&e!==null&&e!==void 0?n=await i(e):n=await j(),n.map(s=>s.choices?(s.choices=s.choices.map(v=>(v.selected=Array.isArray(this.state)?this.state.includes(v.value):this.state===v.value,v)),s):(s.selected=Array.isArray(this.state)?this.state.includes(s.value):this.state===s.value,s))},refreshPlaceholder:function(){_||(this.select._renderItems(),[null,void 0,""].includes(this.state)&&(this.$el.querySelector(".choices__list--single").innerHTML=`
    ${k??""}
    `))},formatState:function(e){return _?(e??[]).map(t=>t?.toString()):e?.toString()},getMissingOptions:async function(e){let t=this.formatState(this.state);if([null,void 0,"",[],{}].includes(t))return{};let n=new Set;return e.forEach(s=>{if(s.choices){s.choices.forEach(v=>n.add(v.value));return}n.add(s.value)}),_?t.every(s=>n.has(s))?{}:(await me()).filter(s=>!n.has(s.value)).map(s=>(s.selected=!0,s)):n.has(t)?n:[{label:await X(),value:t,selected:!0}]}}}export{vt as default}; -/*! Bundled license information: - -choices.js/public/assets/scripts/choices.js: - (*! choices.js v10.2.0 | © 2022 Josh Johnson | https://github.com/jshjohnson/Choices#readme *) -*/ diff --git a/vendor/filament/forms/dist/components/tags-input.js b/vendor/filament/forms/dist/components/tags-input.js deleted file mode 100644 index c19c04a1..00000000 --- a/vendor/filament/forms/dist/components/tags-input.js +++ /dev/null @@ -1 +0,0 @@ -function i({state:a,splitKeys:n}){return{newTag:"",state:a,createTag:function(){if(this.newTag=this.newTag.trim(),this.newTag!==""){if(this.state.includes(this.newTag)){this.newTag="";return}this.state.push(this.newTag),this.newTag=""}},deleteTag:function(t){this.state=this.state.filter(e=>e!==t)},reorderTags:function(t){let e=this.state.splice(t.oldIndex,1)[0];this.state.splice(t.newIndex,0,e),this.state=[...this.state]},input:{["x-on:blur"]:"createTag()",["x-model"]:"newTag",["x-on:keydown"](t){["Enter",...n].includes(t.key)&&(t.preventDefault(),t.stopPropagation(),this.createTag())},["x-on:paste"](){this.$nextTick(()=>{if(n.length===0){this.createTag();return}let t=n.map(e=>e.replace(/[/\-\\^$*+?.()|[\]{}]/g,"\\$&")).join("|");this.newTag.split(new RegExp(t,"g")).forEach(e=>{this.newTag=e,this.createTag()})})}}}}export{i as default}; diff --git a/vendor/filament/forms/dist/components/textarea.js b/vendor/filament/forms/dist/components/textarea.js deleted file mode 100644 index e93fa52c..00000000 --- a/vendor/filament/forms/dist/components/textarea.js +++ /dev/null @@ -1 +0,0 @@ -function t({initialHeight:e}){return{init:function(){this.render()},render:function(){this.$el.scrollHeight>0&&(this.$el.style.height=e+"rem",this.$el.style.height=this.$el.scrollHeight+"px")}}}export{t as default}; diff --git a/vendor/filament/forms/dist/index.css b/vendor/filament/forms/dist/index.css deleted file mode 100644 index a9458cb7..00000000 --- a/vendor/filament/forms/dist/index.css +++ /dev/null @@ -1,49 +0,0 @@ -input::-webkit-datetime-edit{display:block;padding:0}.cropper-container{direction:ltr;font-size:0;line-height:0;position:relative;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{inset:0;position:absolute}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:#3399ffbf;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:" ";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:" ";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.filepond--assistant{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--browser.filepond--browser{font-size:0;left:1em;margin:0;opacity:0;padding:0;position:absolute;top:1.75em;width:calc(100% - 2em)}.filepond--data{border:none;contain:strict;height:0;margin:0;padding:0;visibility:hidden;width:0}.filepond--data,.filepond--drip{pointer-events:none;position:absolute}.filepond--drip{background:rgba(0,0,0,.01);border-radius:.5em;inset:0;opacity:.1;overflow:hidden}.filepond--drip-blob{background:#292625;border-radius:50%;height:8em;margin-left:-4em;margin-top:-4em;transform-origin:center center;width:8em}.filepond--drip-blob,.filepond--drop-label{left:0;position:absolute;top:0;will-change:transform,opacity}.filepond--drop-label{align-items:center;color:#4f4f4f;display:flex;height:0;justify-content:center;margin:0;right:0;-webkit-user-select:none;-moz-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;line-height:1.5;text-align:center}.filepond--label-action{-webkit-text-decoration-skip:ink;cursor:pointer;text-decoration:underline;text-decoration-color:#a7a4a4;text-decoration-skip-ink:auto}.filepond--root[data-disabled] .filepond--drop-label label{opacity:.5}.filepond--file-action-button.filepond--file-action-button{border:none;font-family:inherit;font-size:1em;height:1.625em;line-height:inherit;margin:0;outline:none;padding:0;width:1.625em;will-change:transform,opacity}.filepond--file-action-button.filepond--file-action-button span{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--file-action-button.filepond--file-action-button svg{height:100%;width:100%}.filepond--file-action-button.filepond--file-action-button:after{content:"";inset:-.75em;position:absolute}.filepond--file-action-button{background-color:#00000080;background-image:none;border-radius:50%;box-shadow:0 0 #fff0;color:#fff;cursor:auto;transition:box-shadow .25s ease-in}.filepond--file-action-button:focus,.filepond--file-action-button:hover{box-shadow:0 0 0 .125em #ffffffe6}.filepond--file-action-button[disabled]{background-color:#00000040;color:#ffffff80}.filepond--file-action-button[hidden]{display:none}.filepond--file-info{align-items:flex-start;display:flex;flex:1;flex-direction:column;margin:0 .5em 0 0;min-width:0;pointer-events:none;position:static;-webkit-user-select:none;-moz-user-select:none;user-select:none;will-change:transform,opacity}.filepond--file-info *{margin:0}.filepond--file-info .filepond--file-info-main{font-size:.75em;line-height:1.2;overflow:hidden;text-overflow:ellipsis;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{align-items:flex-end;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;margin:0;min-width:2.25em;pointer-events:none;position:static;text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none;will-change:transform,opacity}.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;height:100%;margin:0;min-width:0;padding:0}.filepond--file-wrapper.filepond--file-wrapper>legend{clip:rect(1px,1px,1px,1px);border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.filepond--file{align-items:flex-start;border-radius:.5em;color:#fff;display:flex;height:100%;padding:.5625em;position:static}.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;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{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{animation:shake .65s linear both}[data-filepond-item-state*=busy] .filepond--progress-indicator svg{animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes shake{10%,90%{transform:translate(-.0625em)}20%,80%{transform:translate(.125em)}30%,50%,70%{transform:translate(-.25em)}40%,60%{transform:translate(.25em)}}@keyframes fall{0%{animation-timing-function:ease-out;opacity:0;transform:scale(.5)}70%{animation-timing-function:ease-in-out;opacity:1;transform:scale(1.1)}to{animation-timing-function:ease-out;transform:scale(1)}}.filepond--hopper[data-hopper-state=drag-over]>*{pointer-events:none}.filepond--hopper[data-hopper-state=drag-over]:after{content:"";inset:0;position:absolute;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{left:0;margin:.25em;padding:0;position:absolute;right:0;top:0;will-change:transform,opacity;z-index:1}.filepond--item>.filepond--panel{z-index:-1}.filepond--item>.filepond--panel .filepond--panel-bottom{box-shadow:0 .0625em .125em -.0625em #00000040}.filepond--item>.filepond--file-wrapper,.filepond--item>.filepond--panel{transition:opacity .15s ease-out}.filepond--item[data-drag-state]{cursor:grab}.filepond--item[data-drag-state]>.filepond--panel{box-shadow:0 0 0 transparent;transition:box-shadow .125s ease-in-out}.filepond--item[data-drag-state=drag]{cursor:grabbing}.filepond--item[data-drag-state=drag]>.filepond--panel{box-shadow:0 .125em .3125em #00000053}.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{left:0;margin:0;position:absolute;right:0;top:0;will-change:transform}.filepond--list-scroller[data-state=overflow] .filepond--list{bottom:0;right:0}.filepond--list-scroller[data-state=overflow]{-webkit-overflow-scrolling:touch;-webkit-mask:linear-gradient(180deg,#000 calc(100% - .5em),transparent);mask:linear-gradient(180deg,#000 calc(100% - .5em),transparent);overflow-x:hidden;overflow-y:scroll}.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-clip:content-box;background-color:#0000004d;border:.3125em solid transparent;border-radius:99999px}.filepond--list.filepond--list{list-style-type:none;margin:0;padding:0;position:absolute;top:0;will-change:transform}.filepond--list{left:.75em;right:.75em}.filepond--root[data-style-panel-layout~=integrated]{height:100%;margin:0;max-width:none;width:100%}.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{align-items:center;bottom:0;display:flex;height:auto;justify-content: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{height:100%;margin-bottom:0;margin-top:0;overflow:hidden}.filepond--root[data-style-panel-layout~=compact] .filepond--list,.filepond--root[data-style-panel-layout~=integrated] .filepond--list{height:100%;left:0;right:0}.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--file-info,.filepond--root[data-style-panel-layout~=circle] .filepond--file-status,.filepond--root[data-style-panel-layout~=circle]>.filepond--panel>*{display:none}@media not all and (-webkit-min-device-pixel-ratio:0),not all and (min-resolution:.001dpcm){@supports (-webkit-appearance:none) and (stroke-color:transparent){.filepond--root[data-style-panel-layout~=circle]{will-change:transform}}}.filepond--panel-root{background-color:#f1f0ef;border-radius:.5em}.filepond--panel{height:100%!important;left:0;margin:0;pointer-events:none;position:absolute;right:0;top:0}.filepond-panel:not([data-scalable=false]){height:auto!important}.filepond--panel[data-scalable=false]>div{display:none}.filepond--panel[data-scalable=true]{background-color:transparent!important;border:none!important;transform-style:preserve-3d}.filepond--panel-bottom,.filepond--panel-center,.filepond--panel-top{left:0;margin:0;padding:0;position:absolute;right:0;top:0}.filepond--panel-bottom,.filepond--panel-top{height:.5em}.filepond--panel-top{border-bottom:none!important;border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.filepond--panel-top:after{background-color:inherit;bottom:-1px;content:"";height:2px;left:0;position:absolute;right:0}.filepond--panel-bottom,.filepond--panel-center{backface-visibility:hidden;transform:translate3d(0,.5em,0);transform-origin:left top;will-change:transform}.filepond--panel-bottom{border-top:none!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.filepond--panel-bottom:before{background-color:inherit;content:"";height:2px;left:0;position:absolute;right:0;top:-1px}.filepond--panel-center{border-bottom:none!important;border-radius:0!important;border-top:none!important;height:100px!important}.filepond--panel-center:not([style]){visibility:hidden}.filepond--progress-indicator{color:#fff;height:1.25em;margin:0;pointer-events:none;position:static;width:1.25em;will-change:transform,opacity}.filepond--progress-indicator svg{height:100%;transform-box:fill-box;vertical-align:top;width:100%}.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;contain:layout style size;direction:ltr;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:1rem;font-weight:450;line-height:normal;margin-bottom:1em;position:relative;text-align:left;text-rendering:optimizeLegibility}.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-bottom:1em;margin-top:1em}.filepond--root .filepond--credits{bottom:-14px;color:inherit;font-size:11px;line-height:.85;opacity:.175;position:absolute;right:0;text-decoration:none;z-index:3}.filepond--root .filepond--credits[style]{bottom:auto;margin-top:14px;top:0}.filepond--action-edit-item.filepond--action-edit-item{height:2em;padding:.1875em;width:2em}.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{background:transparent;border:none;color:inherit;font-family:inherit;line-height:inherit;margin:0 0 0 .25em;outline:none;padding:0;pointer-events:all;position:absolute}.filepond--action-edit-item-alt svg{height:1.3125em;width:1.3125em}.filepond--action-edit-item-alt span{font-size:0;opacity:0}.filepond--root[data-style-panel-layout~=circle] .filepond--action-edit-item{opacity:1!important;visibility:visible!important}.filepond--image-preview-markup{left:0;position:absolute;top:0}.filepond--image-preview-wrapper{z-index:2}.filepond--image-preview-overlay{display:block;left:0;margin:0;max-height:7rem;min-height:5rem;opacity:0;pointer-events:none;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%;z-index:2}.filepond--image-preview-overlay svg{color:inherit;height:auto;max-height:inherit;width:100%}.filepond--image-preview-overlay-idle{color:#282828d9;mix-blend-mode:multiply}.filepond--image-preview-overlay-success{color:#369763;mix-blend-mode:normal}.filepond--image-preview-overlay-failure{color:#c44e47;mix-blend-mode:normal}@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{background:rgba(0,0,0,.01);border-radius:.45em;height:100%;left:0;margin:0;overflow:hidden;position:absolute;right:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.filepond--image-preview{align-items:center;background:#222;display:flex;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%;will-change:transform,opacity;z-index:1}.filepond--image-clip{margin:0 auto;overflow:hidden;position:relative}.filepond--image-clip[data-transparency-indicator=grid] canvas,.filepond--image-clip[data-transparency-indicator=grid] img{background-color:#fff;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' fill='%23eee'%3E%3Cpath d='M0 0h50v50H0M50 50h50v50H50'/%3E%3C/svg%3E");background-size:1.25em 1.25em}.filepond--image-bitmap,.filepond--image-vector{left:0;position:absolute;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{align-items:center;display:flex;height:100%;justify-content: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{bottom:0;top:auto;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:.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:.5125em}.filepond--root[data-style-panel-layout~=circle] .filepond--progress-indicator[data-align*=bottom][data-align*=center]{margin-bottom:.1875em;margin-left:.1875em;margin-top:0}.filepond--media-preview audio{display:none}.filepond--media-preview .audioplayer{margin:2.3em auto auto;width:calc(100% - 1.4em)}.filepond--media-preview .playpausebtn{background-position:50%;background-repeat:no-repeat;border:none;border-radius:25px;cursor:pointer;float:left;height:25px;margin-right:.3em;margin-top:.3em;outline:none;width:25px}.filepond--media-preview .playpausebtn:hover{background-color:#00000080}.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{background:hsla(0,0%,100%,.3);border-radius:15px;float:left;height:3px;margin-top:1em;width:calc(100% - 2.5em)}.filepond--media-preview .playhead{background:#fff;border-radius:50%;height:13px;margin-top:-5px;width:13px}.filepond--media-preview-wrapper{background:rgba(0,0,0,.01);border-radius:.45em;height:100%;left:0;margin:0;overflow:hidden;pointer-events:auto;position:absolute;right:0;top:0}.filepond--media-preview-wrapper:before{background:linear-gradient(180deg,#000 0,transparent);content:" ";filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#000000",endColorstr="#00000000",GradientType=0);height:2em;position:absolute;width:100%;z-index:3}.filepond--media-preview{display:block;height:100%;position:relative;transform-origin:center center;width:100%;will-change:transform,opacity;z-index:1}.filepond--media-preview audio,.filepond--media-preview video{width:100%;will-change:transform}.filepond--root{--tw-bg-opacity:1;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.1);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);margin-bottom:0}:is(.dark .filepond--root){--tw-ring-color:hsla(0,0%,100%,.2);background-color:hsla(0,0%,100%,.05)}.filepond--root[data-disabled=disabled]{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(.dark .filepond--root[data-disabled=disabled]){--tw-ring-color:hsla(0,0%,100%,.1);background-color:transparent}.filepond--panel-root{background-color:transparent}.filepond--drop-label label{--tw-text-opacity:1;color:rgba(var(--gray-600),var(--tw-text-opacity));font-size:.875rem;line-height:1.25rem;padding:.75rem!important}:is(.dark .filepond--drop-label label){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.filepond--label-action{--tw-text-opacity:1;color:rgba(var(--primary-600),var(--tw-text-opacity));font-weight:500;text-decoration-line:none;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.filepond--label-action:hover{--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}:is(.dark .filepond--label-action){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .filepond--label-action:hover){--tw-text-opacity:1;color:rgba(var(--primary-500),var(--tw-text-opacity))}.filepond--drip-blob{--tw-bg-opacity:1;background-color:rgba(var(--gray-400),var(--tw-bg-opacity))}:is(.dark .filepond--drip-blob){--tw-bg-opacity:1;background-color:rgba(var(--gray-500),var(--tw-bg-opacity))}.filepond--root[data-style-panel-layout=grid] .filepond--item{display:inline;width:calc(50% - .5rem)}@media (min-width:1024px){.filepond--root[data-style-panel-layout=grid] .filepond--item{width:calc(33.33% - .5rem)}}.filepond--download-icon{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:inline-block;height:1rem;margin-inline-end:.25rem;pointer-events:auto;vertical-align:bottom;width:1rem}.filepond--download-icon:hover{background-color:hsla(0,0%,100%,.7)}.filepond--download-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWRvd25sb2FkIj48cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNE03IDEwbDUgNSA1LTVNMTIgMTVWMyIvPjwvc3ZnPg==);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWRvd25sb2FkIj48cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNE03IDEwbDUgNSA1LTVNMTIgMTVWMyIvPjwvc3ZnPg==);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}.filepond--open-icon{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));display:inline-block;height:1rem;margin-inline-end:.25rem;pointer-events:auto;vertical-align:bottom;width:1rem}.filepond--open-icon:hover{background-color:hsla(0,0%,100%,.7)}.filepond--open-icon{-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMnYtNE0xNCA0aDZtMCAwdjZtMC02TDEwIDE0Ii8+PC9zdmc+);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJoLTYgdy02IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiPjxwYXRoIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTTEwIDZINmEyIDIgMCAwIDAtMiAydjEwYTIgMiAwIDAgMCAyIDJoMTBhMiAyIDAgMCAwIDItMnYtNE0xNCA0aDZtMCAwdjZtMC02TDEwIDE0Ii8+PC9zdmc+);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}.filepond--file-action-button.filepond--action-edit-item{background-color:rgba(0,0,0,.5)}.cropper-drag-box.cropper-crop.cropper-modal{background-color:rgba(var(--gray-100),.5);opacity:1}:is(.dark .cropper-drag-box.cropper-crop.cropper-modal){background-color:rgba(var(--gray-900),.8)}.fi-fo-file-upload-circle-cropper .cropper-face,.fi-fo-file-upload-circle-cropper .cropper-view-box{border-radius:50%}.CodeMirror{color:#000;direction:ltr;font-family:monospace;height:300px}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{background-color:#f7f7f7;border-right:1px solid #ddd;white-space:nowrap}.CodeMirror-linenumber{color:#999;min-width:20px;padding:0 3px 0 5px;text-align:right;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{background:#7e7;border:0!important;width:auto}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:0 0}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:0 0}.cm-fat-cursor{caret-color:transparent}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{inset:-50px 0 0;overflow:hidden;position:absolute}.CodeMirror-ruler{border-left:1px solid #ccc;bottom:0;position:absolute;top:0}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{background:#fff;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%;margin-bottom:-50px;margin-right:-50px;outline:0;overflow:scroll!important;padding-bottom:50px;position:relative;z-index:0}.CodeMirror-sizer{border-right:50px solid transparent;position:relative}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{display:none;outline:0;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{bottom:0;right:0}.CodeMirror-gutter-filler{bottom:0;left:0}.CodeMirror-gutters{left:0;min-height:100%;position:absolute;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-50px;vertical-align:top;white-space:normal}.CodeMirror-gutter-wrapper{background:0 0!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{bottom:0;position:absolute;top:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{word-wrap:normal;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-variant-ligatures:contextual;line-height:inherit;margin:0;overflow:visible;position:relative;white-space:pre;z-index:2}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{inset:0;position:absolute;z-index:0}.CodeMirror-linewidget{padding:.1px;position:relative;z-index:2}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{pointer-events:none;position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:0 0}.EasyMDEContainer{display:block}.CodeMirror-rtl pre{direction:rtl}.EasyMDEContainer.sided--no-fullscreen{display:flex;flex-direction:row;flex-wrap:wrap}.EasyMDEContainer .CodeMirror{word-wrap:break-word;border:1px solid #ced4da;border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-sizing:border-box;font:inherit;height:auto;padding:10px;z-index:0}.EasyMDEContainer .CodeMirror-scroll{cursor:text}.EasyMDEContainer .CodeMirror-fullscreen{background:#fff;border-bottom-right-radius:0!important;border-right:none!important;height:auto;inset:50px 0 0;position:fixed!important;z-index:8}.EasyMDEContainer .CodeMirror-sided{width:50%!important}.EasyMDEContainer.sided--no-fullscreen .CodeMirror-sided{border-bottom-right-radius:0;border-right:none!important;flex:1 1 auto;position:relative}.EasyMDEContainer .CodeMirror-placeholder{opacity:.5}.EasyMDEContainer .CodeMirror-focused .CodeMirror-selected{background:#d9d9d9}.editor-toolbar{border-left:1px solid #ced4da;border-right:1px solid #ced4da;border-top:1px solid #ced4da;border-top-left-radius:4px;border-top-right-radius:4px;padding:9px 10px;position:relative;-webkit-user-select:none;-moz-user-select:none;-o-user-select:none;user-select:none}.editor-toolbar.fullscreen{background:#fff;border:0;box-sizing:border-box;height:50px;left:0;opacity:1;padding-bottom:10px;padding-top:10px;position:fixed;top:0;width:100%;z-index:9}.editor-toolbar.fullscreen:before{background:linear-gradient(90deg,#fff 0,hsla(0,0%,100%,0));height:50px;left:0;margin:0;padding:0;position:fixed;top:0;width:20px}.editor-toolbar.fullscreen:after{background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:50px;margin:0;padding:0;position:fixed;right:0;top:0;width:20px}.EasyMDEContainer.sided--no-fullscreen .editor-toolbar{width:100%}.editor-toolbar .easymde-dropdown,.editor-toolbar button{background:0 0;border:1px solid transparent;border-radius:3px;cursor:pointer;display:inline-block;height:30px;margin:0;padding:0;text-align:center;text-decoration:none!important}.editor-toolbar button{font-weight:700;min-width:30px;padding:0 6px;white-space:nowrap}.editor-toolbar button.active,.editor-toolbar button:hover{background:#fcfcfc;border-color:#95a5a6}.editor-toolbar i.separator{border-left:1px solid #d9d9d9;border-right:1px solid #fff;color:transparent;display:inline-block;margin:0 6px;text-indent:-10px;width:0}.editor-toolbar button:after{font-family:Arial,Helvetica Neue,Helvetica,sans-serif;font-size:65%;position:relative;top:2px;vertical-align:text-bottom}.editor-toolbar button.heading-1:after{content:"1"}.editor-toolbar button.heading-2:after{content:"2"}.editor-toolbar button.heading-3:after{content:"3"}.editor-toolbar button.heading-bigger:after{content:"\25b2"}.editor-toolbar button.heading-smaller:after{content:"\25bc"}.editor-toolbar.disabled-for-preview button:not(.no-disable){opacity:.6;pointer-events:none}@media only screen and (max-width:700px){.editor-toolbar i.no-mobile{display:none}}.editor-statusbar{color:#959694;font-size:12px;padding:8px 10px;text-align:right}.EasyMDEContainer.sided--no-fullscreen .editor-statusbar{width:100%}.editor-statusbar span{display:inline-block;margin-left:1em;min-width:4em}.editor-statusbar .lines:before{content:"lines: "}.editor-statusbar .words:before{content:"words: "}.editor-statusbar .characters:before{content:"characters: "}.editor-preview-full{height:100%;left:0;position:absolute;top:0;width:100%;z-index:7}.editor-preview-full,.editor-preview-side{box-sizing:border-box;display:none;overflow:auto}.editor-preview-side{word-wrap:break-word;border:1px solid #ddd;bottom:0;position:fixed;right:0;top:50px;width:50%;z-index:9}.editor-preview-active-side{display:block}.EasyMDEContainer.sided--no-fullscreen .editor-preview-active-side{flex:1 1 auto;height:auto;position:static}.editor-preview-active{display:block}.editor-preview{background:#fafafa;padding:10px}.editor-preview>p{margin-top:0}.editor-preview pre{background:#eee;margin-bottom:10px}.editor-preview table td,.editor-preview table th{border:1px solid #ddd;padding:5px}.cm-s-easymde .cm-tag{color:#63a35c}.cm-s-easymde .cm-attribute{color:#795da3}.cm-s-easymde .cm-string{color:#183691}.cm-s-easymde .cm-header-1{font-size:calc(1.375rem + 1.5vw)}.cm-s-easymde .cm-header-2{font-size:calc(1.325rem + .9vw)}.cm-s-easymde .cm-header-3{font-size:calc(1.3rem + .6vw)}.cm-s-easymde .cm-header-4{font-size:calc(1.275rem + .3vw)}.cm-s-easymde .cm-header-5{font-size:1.25rem}.cm-s-easymde .cm-header-6{font-size:1rem}.cm-s-easymde .cm-header-1,.cm-s-easymde .cm-header-2,.cm-s-easymde .cm-header-3,.cm-s-easymde .cm-header-4,.cm-s-easymde .cm-header-5,.cm-s-easymde .cm-header-6{line-height:1.2;margin-bottom:.5rem}.cm-s-easymde .cm-comment{background:rgba(0,0,0,.05);border-radius:2px}.cm-s-easymde .cm-link{color:#7f8c8d}.cm-s-easymde .cm-url{color:#aab2b3}.cm-s-easymde .cm-quote{color:#7f8c8d;font-style:italic}.editor-toolbar .easymde-dropdown{border:1px solid #fff;border-radius:0;position:relative}.editor-toolbar .easymde-dropdown,.editor-toolbar .easymde-dropdown:hover{background:linear-gradient(to bottom right,#fff,#fff 84%,#333 0,#333)}.easymde-dropdown-content{background-color:#f9f9f9;box-shadow:0 8px 16px #0003;display:block;padding:8px;position:absolute;top:30px;visibility:hidden;z-index:2}.easymde-dropdown:active .easymde-dropdown-content,.easymde-dropdown:focus .easymde-dropdown-content,.easymde-dropdown:focus-within .easymde-dropdown-content{visibility:visible}.easymde-dropdown-content button{display:block}span[data-img-src]:after{background-image:var(--bg-image);background-repeat:no-repeat;background-size:contain;content:"";display:block;height:0;max-height:100%;max-width:100%;padding-top:var(--height);width:var(--width)}.CodeMirror .cm-spell-error:not(.cm-url):not(.cm-comment):not(.cm-tag):not(.cm-word){background:rgba(255,0,0,.15)}:root{--color-cm-red:#991b1b;--color-cm-orange:#9a3412;--color-cm-amber:#92400e;--color-cm-yellow:#854d0e;--color-cm-lime:#3f6212;--color-cm-green:#166534;--color-cm-emerald:#065f46;--color-cm-teal:#115e59;--color-cm-cyan:#155e75;--color-cm-sky:#075985;--color-cm-blue:#1e40af;--color-cm-indigo:#3730a3;--color-cm-violet:#5b21b6;--color-cm-purple:#6b21a8;--color-cm-fuchsia:#86198f;--color-cm-pink:#9d174d;--color-cm-rose:#9f1239;--color-cm-gray:#18181b;--color-cm-gray-muted:#71717a;--color-cm-gray-background:#e4e4e7}.dark{--color-cm-red:#f87171;--color-cm-orange:#fb923c;--color-cm-amber:#fbbf24;--color-cm-yellow:#facc15;--color-cm-lime:#a3e635;--color-cm-green:#4ade80;--color-cm-emerald:#4ade80;--color-cm-teal:#2dd4bf;--color-cm-cyan:#22d3ee;--color-cm-sky:#38bdf8;--color-cm-blue:#60a5fa;--color-cm-indigo:#818cf8;--color-cm-violet:#a78bfa;--color-cm-purple:#c084fc;--color-cm-fuchsia:#e879f9;--color-cm-pink:#f472b6;--color-cm-rose:#fb7185;--color-cm-gray:#fafafa;--color-cm-gray-muted:#a1a1aa;--color-cm-gray-background:#52525b}.cm-s-easymde .cm-comment{background-color:transparent;color:var(--color-cm-gray-muted)}.EasyMDEContainer .CodeMirror-cursor{border-color:currentColor}.dark .EasyMDEContainer .cm-s-easymde span.CodeMirror-selectedtext{filter:invert(100%)}.EasyMDEContainer .cm-s-easymde .cm-keyword{color:var(--color-cm-violet)}.EasyMDEContainer .cm-s-easymde .cm-atom{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-number{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-def{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-variable{color:var(--color-cm-yellow)}.EasyMDEContainer .cm-s-easymde .cm-variable-2{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-variable-3{color:var(--color-cm-emerald)}.EasyMDEContainer .cm-s-easymde .cm-operator,.EasyMDEContainer .cm-s-easymde .cm-property{color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-string,.EasyMDEContainer .cm-s-easymde .cm-string-2{color:var(--color-cm-rose)}.EasyMDEContainer .cm-s-easymde .cm-meta{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-error{color:var(--color-cm-red)}.EasyMDEContainer .cm-s-easymde .cm-qualifier{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-builtin{color:var(--color-cm-violet)}.EasyMDEContainer .cm-s-easymde .cm-bracket{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-tag{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-attribute{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-hr{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-formatting-quote{color:var(--color-cm-sky)}.EasyMDEContainer .cm-s-easymde .cm-formatting-quote+.cm-quote{color:var(--color-cm-gray-muted)}.EasyMDEContainer .cm-s-easymde .cm-formatting-list,.EasyMDEContainer .cm-s-easymde .cm-formatting-list+.cm-variable-2,.EasyMDEContainer .cm-s-easymde .cm-tab+.cm-variable-2{color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-link{color:var(--color-cm-blue)}.EasyMDEContainer .cm-s-easymde .cm-tag{color:var(--color-cm-red)}.EasyMDEContainer .cm-s-easymde .cm-attribute{color:var(--color-cm-amber)}.EasyMDEContainer .cm-s-easymde .cm-attribute+.cm-string{color:var(--color-cm-green)}.EasyMDEContainer .cm-s-easymde .cm-formatting-code+.cm-comment:not(.cm-formatting-code){background-color:var(--color-cm-gray-background);color:var(--color-cm-gray)}.EasyMDEContainer .cm-s-easymde .cm-header-1{font-size:1.875rem;line-height:2.25rem}.EasyMDEContainer .cm-s-easymde .cm-header-2{font-size:1.5rem;line-height:2rem}.EasyMDEContainer .cm-s-easymde .cm-header-3{font-size:1.25rem;line-height:1.75rem}.EasyMDEContainer .cm-s-easymde .cm-header-4{font-size:1.125rem;line-height:1.75rem}.EasyMDEContainer .cm-s-easymde .cm-header-5{font-size:1rem;line-height:1.5rem}.EasyMDEContainer .cm-s-easymde .cm-header-6{font-size:.875rem;line-height:1.25rem}.EasyMDEContainer .cm-s-easymde .cm-comment{background-image:none}.EasyMDEContainer .CodeMirror,.EasyMDEContainer .cm-s-easymde .cm-formatting-code-block,.EasyMDEContainer .cm-s-easymde .cm-tab+.cm-comment{background-color:transparent;color:inherit}.EasyMDEContainer .CodeMirror{border-style:none;padding:.375rem .75rem}.EasyMDEContainer .CodeMirror-scroll{height:auto}.EasyMDEContainer .editor-toolbar{--tw-border-opacity:1;border-color:rgba(var(--gray-200),var(--tw-border-opacity));border-radius:0;border-width:0 0 1px;-moz-column-gap:.25rem;column-gap:.25rem;display:flex;overflow-x:auto;padding:.5rem .625rem}:is(.dark .EasyMDEContainer .editor-toolbar){border-color:hsla(0,0%,100%,.1)}.EasyMDEContainer .editor-toolbar button{border-radius:.5rem;border-style:none;cursor:pointer;display:grid;height:2rem;padding:0;place-content:center;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:2rem}.EasyMDEContainer .editor-toolbar button:hover{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:focus-visible{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(.dark .EasyMDEContainer .editor-toolbar button:hover){background-color:hsla(0,0%,100%,.05)}:is(.dark .EasyMDEContainer .editor-toolbar button:focus-visible){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button.active{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(.dark .EasyMDEContainer .editor-toolbar button.active){background-color:hsla(0,0%,100%,.05)}.EasyMDEContainer .editor-toolbar button:before{--tw-bg-opacity:1;background-color:rgba(var(--gray-700),var(--tw-bg-opacity));display:block;height:1rem;width:1rem}:is(.dark .EasyMDEContainer .editor-toolbar button):before{--tw-bg-opacity:1;background-color:rgba(var(--gray-300),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar button:before{content:"";-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.EasyMDEContainer .editor-toolbar button.active:before{--tw-bg-opacity:1;background-color:rgba(var(--primary-600),var(--tw-bg-opacity))}:is(.dark .EasyMDEContainer .editor-toolbar button.active):before{--tw-bg-opacity:1;background-color:rgba(var(--primary-400),var(--tw-bg-opacity))}.EasyMDEContainer .editor-toolbar .separator{border-style:none;margin:0!important;width:.25rem}.EasyMDEContainer .editor-toolbar .bold:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M321.1 242.4c19-22.3 30.9-50.8 30.9-82.4 0-70.59-57.42-128-128-128l-192 .01c-17.67 0-32 14.31-32 32s14.33 32 32 32h16v320H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h224c70.58 0 128-57.41 128-128 0-46.71-25.4-87.21-62.9-109.61zM112 96.01h112c35.3 0 64 28.72 64 64s-28.7 64-64 64H112v-128zM256 416H112V288h144c35.3 0 64 28.71 64 63.1S291.3 416 256 416z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M321.1 242.4c19-22.3 30.9-50.8 30.9-82.4 0-70.59-57.42-128-128-128l-192 .01c-17.67 0-32 14.31-32 32s14.33 32 32 32h16v320H32c-17.67 0-32 14.31-32 32s14.33 32 32 32h224c70.58 0 128-57.41 128-128 0-46.71-25.4-87.21-62.9-109.61zM112 96.01h112c35.3 0 64 28.72 64 64s-28.7 64-64 64H112v-128zM256 416H112V288h144c35.3 0 64 28.71 64 63.1S291.3 416 256 416z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .italic:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M384 64.01c0 17.69-14.31 32-32 32h-58.67l-133.3 320H224c17.69 0 32 14.31 32 32s-14.31 32-32 32H32c-17.69 0-32-14.31-32-32s14.31-32 32-32h58.67l133.3-320H160c-17.69 0-32-14.31-32-32s14.31-32 32-32h192c17.7 0 32 14.32 32 32z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d='M384 64.01c0 17.69-14.31 32-32 32h-58.67l-133.3 320H224c17.69 0 32 14.31 32 32s-14.31 32-32 32H32c-17.69 0-32-14.31-32-32s14.31-32 32-32h58.67l133.3-320H160c-17.69 0-32-14.31-32-32s14.31-32 32-32h192c17.7 0 32 14.32 32 32z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .strikethrough:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M332.2 319.9c17.22 12.17 22.33 26.51 18.61 48.21-3.031 17.59-10.88 29.34-24.72 36.99-35.44 19.75-108.5 11.96-186-19.68-16.34-6.686-35.03 1.156-41.72 17.53s1.188 35.05 17.53 41.71c31.75 12.93 95.69 35.37 157.6 35.37 29.62 0 58.81-5.156 83.72-18.96 30.81-17.09 50.44-45.46 56.72-82.11 3.998-23.27 2.168-42.58-3.488-59.05H332.2zm155.8-80-176.5-.03c-15.85-5.614-31.83-10.34-46.7-14.62-85.47-24.62-110.9-39.05-103.7-81.33 2.5-14.53 10.16-25.96 22.72-34.03 20.47-13.15 64.06-23.84 155.4.343 17.09 4.53 34.59-5.654 39.13-22.74 4.531-17.09-5.656-34.59-22.75-39.12-91.31-24.18-160.7-21.62-206.3 7.654C121.8 73.72 103.6 101.1 98.09 133.1c-8.83 51.4 9.81 84.2 39.11 106.8H24c-13.25 0-24 10.75-24 23.1 0 13.25 10.75 23.1 24 23.1h464c13.25 0 24-10.75 24-23.1 0-12.3-10.7-23.1-24-23.1z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M332.2 319.9c17.22 12.17 22.33 26.51 18.61 48.21-3.031 17.59-10.88 29.34-24.72 36.99-35.44 19.75-108.5 11.96-186-19.68-16.34-6.686-35.03 1.156-41.72 17.53s1.188 35.05 17.53 41.71c31.75 12.93 95.69 35.37 157.6 35.37 29.62 0 58.81-5.156 83.72-18.96 30.81-17.09 50.44-45.46 56.72-82.11 3.998-23.27 2.168-42.58-3.488-59.05H332.2zm155.8-80-176.5-.03c-15.85-5.614-31.83-10.34-46.7-14.62-85.47-24.62-110.9-39.05-103.7-81.33 2.5-14.53 10.16-25.96 22.72-34.03 20.47-13.15 64.06-23.84 155.4.343 17.09 4.53 34.59-5.654 39.13-22.74 4.531-17.09-5.656-34.59-22.75-39.12-91.31-24.18-160.7-21.62-206.3 7.654C121.8 73.72 103.6 101.1 98.09 133.1c-8.83 51.4 9.81 84.2 39.11 106.8H24c-13.25 0-24 10.75-24 23.1 0 13.25 10.75 23.1 24 23.1h464c13.25 0 24-10.75 24-23.1 0-12.3-10.7-23.1-24-23.1z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .link:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M598.6 41.41C570.1 13.8 534.8 0 498.6 0s-72.36 13.8-99.96 41.41l-43.36 43.36c15.11 8.012 29.47 17.58 41.91 30.02 3.146 3.146 5.898 6.518 8.742 9.838l37.96-37.96C458.5 72.05 477.1 64 498.6 64c20.67 0 40.1 8.047 54.71 22.66 14.61 14.61 22.66 34.04 22.66 54.71s-8.049 40.1-22.66 54.71l-133.3 133.3C405.5 343.1 386 352 365.4 352s-40.1-8.048-54.71-22.66C296 314.7 287.1 295.3 287.1 274.6s8.047-40.1 22.66-54.71l4.44-3.49c-2.1-3.9-4.3-7.9-7.5-11.1-8.6-8.6-19.9-13.3-32.1-13.3-11.93 0-23.1 4.664-31.61 12.97-30.71 53.96-23.63 123.6 22.39 169.6C293 402.2 329.2 416 365.4 416c36.18 0 72.36-13.8 99.96-41.41L598.6 241.3c28.45-28.45 42.24-66.01 41.37-103.3-.87-35.9-14.57-69.84-41.37-96.59zM234 387.4l-37.9 37.9C181.5 439.1 162 448 141.4 448c-20.67 0-40.1-8.047-54.71-22.66-14.61-14.61-22.66-34.04-22.66-54.71s8.049-40.1 22.66-54.71l133.3-133.3C234.5 168 253.1 160 274.6 160s40.1 8.048 54.71 22.66c14.62 14.61 22.66 34.04 22.66 54.71s-8.047 40.1-22.66 54.71l-3.51 3.52c2.094 3.939 4.219 7.895 7.465 11.15C341.9 315.3 353.3 320 365.4 320c11.93 0 23.1-4.664 31.61-12.97 30.71-53.96 23.63-123.6-22.39-169.6C346.1 109.8 310.8 96 274.6 96c-36.2 0-72.3 13.8-99.9 41.4L41.41 270.7C13.81 298.3 0 334.48 0 370.66c0 36.18 13.8 72.36 41.41 99.97C69.01 498.2 105.2 512 141.4 512c36.18 0 72.36-13.8 99.96-41.41l43.36-43.36c-15.11-8.012-29.47-17.58-41.91-30.02-3.21-3.11-5.91-6.51-8.81-9.81z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M598.6 41.41C570.1 13.8 534.8 0 498.6 0s-72.36 13.8-99.96 41.41l-43.36 43.36c15.11 8.012 29.47 17.58 41.91 30.02 3.146 3.146 5.898 6.518 8.742 9.838l37.96-37.96C458.5 72.05 477.1 64 498.6 64c20.67 0 40.1 8.047 54.71 22.66 14.61 14.61 22.66 34.04 22.66 54.71s-8.049 40.1-22.66 54.71l-133.3 133.3C405.5 343.1 386 352 365.4 352s-40.1-8.048-54.71-22.66C296 314.7 287.1 295.3 287.1 274.6s8.047-40.1 22.66-54.71l4.44-3.49c-2.1-3.9-4.3-7.9-7.5-11.1-8.6-8.6-19.9-13.3-32.1-13.3-11.93 0-23.1 4.664-31.61 12.97-30.71 53.96-23.63 123.6 22.39 169.6C293 402.2 329.2 416 365.4 416c36.18 0 72.36-13.8 99.96-41.41L598.6 241.3c28.45-28.45 42.24-66.01 41.37-103.3-.87-35.9-14.57-69.84-41.37-96.59zM234 387.4l-37.9 37.9C181.5 439.1 162 448 141.4 448c-20.67 0-40.1-8.047-54.71-22.66-14.61-14.61-22.66-34.04-22.66-54.71s8.049-40.1 22.66-54.71l133.3-133.3C234.5 168 253.1 160 274.6 160s40.1 8.048 54.71 22.66c14.62 14.61 22.66 34.04 22.66 54.71s-8.047 40.1-22.66 54.71l-3.51 3.52c2.094 3.939 4.219 7.895 7.465 11.15C341.9 315.3 353.3 320 365.4 320c11.93 0 23.1-4.664 31.61-12.97 30.71-53.96 23.63-123.6-22.39-169.6C346.1 109.8 310.8 96 274.6 96c-36.2 0-72.3 13.8-99.9 41.4L41.41 270.7C13.81 298.3 0 334.48 0 370.66c0 36.18 13.8 72.36 41.41 99.97C69.01 498.2 105.2 512 141.4 512c36.18 0 72.36-13.8 99.96-41.41l43.36-43.36c-15.11-8.012-29.47-17.58-41.91-30.02-3.21-3.11-5.91-6.51-8.81-9.81z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .heading:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M0 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v112h224V96h-16c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v320h16c17.7 0 32 14.3 32 32s-14.3 32-32 32h-96c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112v144h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V96H32C14.3 96 0 81.7 0 64z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M0 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v112h224V96h-16c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32h-16v320h16c17.7 0 32 14.3 32 32s-14.3 32-32 32h-96c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112v144h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V96H32C14.3 96 0 81.7 0 64z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .quote:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M96 224c-11.28 0-21.95 2.3-32 5.9V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.3-32-32-32C57.42 96 0 153.4 0 224v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96zm256 0c-11.28 0-21.95 2.305-32 5.879V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.33-32-32-32c-70.58 0-128 57.42-128 128v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M96 224c-11.28 0-21.95 2.3-32 5.9V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.3-32-32-32C57.42 96 0 153.4 0 224v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96zm256 0c-11.28 0-21.95 2.305-32 5.879V224c0-35.3 28.7-64 64-64 17.67 0 32-14.33 32-32s-14.33-32-32-32c-70.58 0-128 57.42-128 128v96c0 53.02 42.98 96 96 96s96-42.98 96-96-43-96-96-96z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .code:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M416 31.94C416 21.75 408.1 0 384.1 0c-13.98 0-26.87 9.072-30.89 23.18l-128 448a31.933 31.933 0 0 0-1.241 8.801C223.1 490.3 232 512 256 512c13.92 0 26.73-9.157 30.75-23.22l128-448c.85-2.97 1.25-5.93 1.25-8.84zM176 143.1c0-18.28-14.95-32-32-32-8.188 0-16.38 3.125-22.62 9.376l-112 112C3.125 239.6 0 247.8 0 255.1s3.125 17.3 9.375 23.5l112 112c6.225 6.3 14.425 8.5 22.625 8.5 17.05 0 32-13.73 32-32 0-8.188-3.125-16.38-9.375-22.63L77.25 255.1l89.38-89.38c6.27-5.42 9.37-13.52 9.37-22.62zm464 112c0-8.188-3.125-16.38-9.375-22.63l-112-112C512.4 115.1 504.2 111.1 496 111.1c-17.05 0-32 13.73-32 32 0 8.188 3.125 16.38 9.375 22.63l89.38 89.38-89.38 89.38C467.1 351.6 464 359.8 464 367.1c0 18.28 14.95 32 32 32 8.188 0 16.38-3.125 22.62-9.376l112-112C636.9 272.4 640 264.2 640 255.1z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M416 31.94C416 21.75 408.1 0 384.1 0c-13.98 0-26.87 9.072-30.89 23.18l-128 448a31.933 31.933 0 0 0-1.241 8.801C223.1 490.3 232 512 256 512c13.92 0 26.73-9.157 30.75-23.22l128-448c.85-2.97 1.25-5.93 1.25-8.84zM176 143.1c0-18.28-14.95-32-32-32-8.188 0-16.38 3.125-22.62 9.376l-112 112C3.125 239.6 0 247.8 0 255.1s3.125 17.3 9.375 23.5l112 112c6.225 6.3 14.425 8.5 22.625 8.5 17.05 0 32-13.73 32-32 0-8.188-3.125-16.38-9.375-22.63L77.25 255.1l89.38-89.38c6.27-5.42 9.37-13.52 9.37-22.62zm464 112c0-8.188-3.125-16.38-9.375-22.63l-112-112C512.4 115.1 504.2 111.1 496 111.1c-17.05 0-32 13.73-32 32 0 8.188 3.125 16.38 9.375 22.63l89.38 89.38-89.38 89.38C467.1 351.6 464 359.8 464 367.1c0 18.28 14.95 32 32 32 8.188 0 16.38-3.125 22.62-9.376l112-112C636.9 272.4 640 264.2 640 255.1z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .unordered-list:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M16 96c0-26.51 21.49-48 48-48s48 21.49 48 48c0 26.5-21.49 48-48 48s-48-21.5-48-48zm464-32c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zM16 416c0-26.5 21.49-48 48-48s48 21.5 48 48-21.49 48-48 48-48-21.5-48-48zm96-160c0 26.5-21.49 48-48 48s-48-21.5-48-48 21.49-48 48-48 48 21.5 48 48z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M16 96c0-26.51 21.49-48 48-48s48 21.49 48 48c0 26.5-21.49 48-48 48s-48-21.5-48-48zm464-32c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32h288zM16 416c0-26.5 21.49-48 48-48s48 21.5 48 48-21.49 48-48 48-48-21.5-48-48zm96-160c0 26.5-21.49 48-48 48s-48-21.5-48-48 21.49-48 48-48 48 21.5 48 48z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .ordered-list:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M55.1 56.04c0-13.26 11.64-24 24-24h32c14.2 0 24 10.74 24 24V176h16c14.2 0 24 10.8 24 24 0 13.3-9.8 24-24 24h-80c-12.36 0-24-10.7-24-24 0-13.2 11.64-24 24-24h16V80.04h-8c-12.36 0-24-10.75-24-24zm63.6 285.16c-6.6-7.4-18.3-6.9-24.05 1.2l-11.12 15.5c-7.7 10.8-22.69 13.3-33.48 5.6-10.79-7.7-13.28-22.7-5.58-33.4l11.12-15.6c23.74-33.3 72.31-35.7 99.21-4.9 21.3 23.5 20.8 60.9-1.1 84.7L118.8 432H152c13.3 0 24 10.7 24 24s-10.7 24-24 24H64c-9.53 0-18.16-5.6-21.98-14.4-3.83-8.7-2.12-18.9 4.34-25.9l72.04-78c5.3-5.8 5.4-14.6.3-20.5zM512 64c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M55.1 56.04c0-13.26 11.64-24 24-24h32c14.2 0 24 10.74 24 24V176h16c14.2 0 24 10.8 24 24 0 13.3-9.8 24-24 24h-80c-12.36 0-24-10.7-24-24 0-13.2 11.64-24 24-24h16V80.04h-8c-12.36 0-24-10.75-24-24zm63.6 285.16c-6.6-7.4-18.3-6.9-24.05 1.2l-11.12 15.5c-7.7 10.8-22.69 13.3-33.48 5.6-10.79-7.7-13.28-22.7-5.58-33.4l11.12-15.6c23.74-33.3 72.31-35.7 99.21-4.9 21.3 23.5 20.8 60.9-1.1 84.7L118.8 432H152c13.3 0 24 10.7 24 24s-10.7 24-24 24H64c-9.53 0-18.16-5.6-21.98-14.4-3.83-8.7-2.12-18.9 4.34-25.9l72.04-78c5.3-5.8 5.4-14.6.3-20.5zM512 64c17.7 0 32 14.33 32 32 0 17.7-14.3 32-32 32H256c-17.7 0-32-14.3-32-32 0-17.67 14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256zm0 160c17.7 0 32 14.3 32 32s-14.3 32-32 32H256c-17.7 0-32-14.3-32-32s14.3-32 32-32h256z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .table:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1792 1792'%3E%3Cpath d='M576 1376v-192q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V800q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zM576 608V416q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768V416q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V416q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47H224q-66 0-113-47t-47-113V288q0-66 47-113t113-47h1344q66 0 113 47t47 113z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1792 1792'%3E%3Cpath d='M576 1376v-192q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V800q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zM576 608V416q0-14-9-23t-23-9H224q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384v-192q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm-512-768V416q0-14-9-23t-23-9H736q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm512 384V800q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm0-384V416q0-14-9-23t-23-9h-320q-14 0-23 9t-9 23v192q0 14 9 23t23 9h320q14 0 23-9t9-23zm128-320v1088q0 66-47 113t-113 47H224q-66 0-113-47t-47-113V288q0-66 47-113t113-47h1344q66 0 113 47t47 113z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .upload-image:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M447.1 32h-484C28.64 32-.01 60.65-.01 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96c.01-35.35-27.79-64-63.99-64zm-336 64c26.51 0 48 21.49 48 48s-20.6 48-48 48-48-21.49-48-48 22.38-48 48-48zm335 311.6c-2.8 5.2-8.2 8.4-14.1 8.4H82.01a15.993 15.993 0 0 1-14.26-8.75 16 16 0 0 1 1.334-16.68l70-96C142.1 290.4 146.9 288 152 288s9.916 2.441 12.93 6.574l32.46 44.51 93.3-139.1C293.7 194.7 298.7 192 304 192s10.35 2.672 13.31 7.125l128 192c3.29 4.875 3.59 11.175.79 16.475z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M447.1 32h-484C28.64 32-.01 60.65-.01 96v320c0 35.35 28.65 64 63.1 64h384c35.35 0 64-28.65 64-64V96c.01-35.35-27.79-64-63.99-64zm-336 64c26.51 0 48 21.49 48 48s-20.6 48-48 48-48-21.49-48-48 22.38-48 48-48zm335 311.6c-2.8 5.2-8.2 8.4-14.1 8.4H82.01a15.993 15.993 0 0 1-14.26-8.75 16 16 0 0 1 1.334-16.68l70-96C142.1 290.4 146.9 288 152 288s9.916 2.441 12.93 6.574l32.46 44.51 93.3-139.1C293.7 194.7 298.7 192 304 192s10.35 2.672 13.31 7.125l128 192c3.29 4.875 3.59 11.175.79 16.475z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .undo:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M480 256c0 123.4-100.5 223.9-223.9 223.9-48.84 0-95.17-15.58-134.2-44.86-14.12-10.59-16.97-30.66-6.375-44.81 10.59-14.12 30.62-16.94 44.81-6.375 27.84 20.91 61 31.94 95.88 31.94C344.3 415.8 416 344.1 416 256S344.31 96.2 256.2 96.2c-37.46 0-73.09 13.49-101.3 36.64l45.12 45.14c17.01 17.02 4.955 46.1-19.1 46.1H35.17C24.58 224.1 16 215.5 16 204.9V59.04C16 35 45.07 22.96 62.07 39.97l47.6 47.63C149.9 52.71 201.5 32.11 256.1 32.11 379.5 32.11 480 132.6 480 256z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M480 256c0 123.4-100.5 223.9-223.9 223.9-48.84 0-95.17-15.58-134.2-44.86-14.12-10.59-16.97-30.66-6.375-44.81 10.59-14.12 30.62-16.94 44.81-6.375 27.84 20.91 61 31.94 95.88 31.94C344.3 415.8 416 344.1 416 256S344.31 96.2 256.2 96.2c-37.46 0-73.09 13.49-101.3 36.64l45.12 45.14c17.01 17.02 4.955 46.1-19.1 46.1H35.17C24.58 224.1 16 215.5 16 204.9V59.04C16 35 45.07 22.96 62.07 39.97l47.6 47.63C149.9 52.71 201.5 32.11 256.1 32.11 379.5 32.11 480 132.6 480 256z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-toolbar .redo:before{-webkit-mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M468.9 32.11c13.87 0 27.18 10.77 27.18 27.04v145.9c0 10.59-8.584 19.17-19.17 19.17h-145.7c-16.28 0-27.06-13.32-27.06-27.2 0-6.634 2.461-13.4 7.96-18.9l45.12-45.14c-28.22-23.14-63.85-36.64-101.3-36.64-88.09 0-159.8 71.69-159.8 159.8S167.8 415.9 255.9 415.9c73.14 0 89.44-38.31 115.1-38.31 18.48 0 31.97 15.04 31.97 31.96 0 35.04-81.59 70.41-147 70.41-123.4 0-223.9-100.5-223.9-223.9S132.6 32.44 256 32.44c54.6 0 106.2 20.39 146.4 55.26L450 40.07c5.5-5.5 12.3-7.96 18.9-7.96z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M468.9 32.11c13.87 0 27.18 10.77 27.18 27.04v145.9c0 10.59-8.584 19.17-19.17 19.17h-145.7c-16.28 0-27.06-13.32-27.06-27.2 0-6.634 2.461-13.4 7.96-18.9l45.12-45.14c-28.22-23.14-63.85-36.64-101.3-36.64-88.09 0-159.8 71.69-159.8 159.8S167.8 415.9 255.9 415.9c73.14 0 89.44-38.31 115.1-38.31 18.48 0 31.97 15.04 31.97 31.96 0 35.04-81.59 70.41-147 70.41-123.4 0-223.9-100.5-223.9-223.9S132.6 32.44 256 32.44c54.6 0 106.2 20.39 146.4 55.26L450 40.07c5.5-5.5 12.3-7.96 18.9-7.96z'/%3E%3C/svg%3E")}.EasyMDEContainer .editor-statusbar{display:none}.fi-fo-rich-editor trix-toolbar .trix-dialogs{position:relative}.fi-fo-rich-editor trix-toolbar .trix-dialog{--tw-bg-opacity:1;--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background-color:rgba(var(--gray-50),var(--tw-bg-opacity));border-radius:.5rem;bottom:auto;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);left:0;padding:.5rem;position:absolute;right:0;top:1rem}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog){--tw-bg-opacity:1;background-color:rgba(var(--gray-800),var(--tw-bg-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields{display:flex;flex-direction:column;gap:.5rem;width:100%}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group{display:flex;gap:.5rem}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.1);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.375rem;border-style:none;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--gray-950),var(--tw-text-opacity));display:block;font-size:.875rem;line-height:1.25rem;outline:2px solid transparent;outline-offset:2px;padding-bottom:.375rem;padding-inline-end:.75rem;padding-top:.375rem;padding-inline-start:.75rem;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input){--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-color:hsla(0,0%,100%,.2);background-color:rgba(var(--gray-700),var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input:focus-within){--tw-ring-opacity:1;--tw-ring-color:rgba(var(--primary-600),var(--tw-ring-opacity))}@media (min-width:640px){.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input{font-size:.875rem;line-height:1.5rem}}.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group .trix-button{--tw-bg-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-200),var(--tw-ring-opacity));background-color:rgba(var(--gray-50),var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);font-size:.75rem;line-height:1rem;padding:.125rem .5rem}:is(.dark .fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group .trix-button){--tw-bg-opacity:1;--tw-ring-opacity:1;--tw-ring-color:rgba(var(--gray-600),var(--tw-ring-opacity));background-color:rgba(var(--gray-700),var(--tw-bg-opacity))}.fi-fo-rich-editor trix-editor:empty:before{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}:is(.dark .fi-fo-rich-editor trix-editor:empty):before{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.fi-fo-rich-editor trix-editor:empty:before{content:attr(placeholder)}.fi-fo-rich-editor trix-editor.prose :where(ol):not(:where([class~=not-prose] *)),.fi-fo-rich-editor trix-editor.prose :where(ul):not(:where([class~=not-prose] *)){padding-inline-end:0!important;padding-inline-start:1.625em!important}.fi-fo-rich-editor trix-editor.prose :where(ul>li):not(:where([class~=not-prose] *)){padding-inline-end:0!important;padding-inline-start:.375em!important}select:not(.choices){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")}[dir=rtl] select{background-position:left .5rem center!important}.choices{outline:2px solid transparent;outline-offset:2px;position:relative}.choices [hidden]{display:none!important}.choices[data-type*=select-one] .has-no-choices{display:none}.choices[data-type*=select-one] .choices__input{display:block;margin:0;width:100%}.choices__inner{background-repeat:no-repeat;outline:2px solid transparent;outline-offset:2px;padding-bottom:.375rem;padding-inline-end:2rem;padding-top:.375rem;padding-inline-start:.75rem}@media (min-width:640px){.choices__inner{font-size:.875rem;line-height:1.5rem}}.choices__inner{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 .5rem center;background-size:1.5em 1.5em}.choices.is-disabled .choices__inner{cursor:default}[dir=rtl] .choices__inner{background-position:left .5rem center}.choices__list--single{display:inline-block}.choices__list--single .choices__item{--tw-text-opacity:1;color:rgba(var(--gray-950),var(--tw-text-opacity))}:is(.dark .choices__list--single .choices__item){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices.is-disabled .choices__list--single .choices__item{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices.is-disabled .choices__list--single .choices__item){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__list--multiple{display:flex;flex-wrap:wrap;gap:.375rem}.choices__list--multiple:not(:empty){margin-bottom:.25rem;margin-left:-.25rem;margin-right:-.25rem;padding-bottom:.125rem;padding-top:.125rem}.choices__list--multiple .choices__item{--tw-bg-opacity:1;--tw-text-opacity:1;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-inset:inset;--tw-ring-color:rgba(var(--primary-600),0.1);align-items:center;background-color:rgba(var(--primary-50),var(--tw-bg-opacity));border-radius:.375rem;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);color:rgba(var(--primary-600),var(--tw-text-opacity));display:inline-flex;font-size:.75rem;font-weight:500;gap:.25rem;line-height:1rem;padding:.25rem .5rem;word-break:break-all}:is(.dark .choices__list--multiple .choices__item){--tw-text-opacity:1;--tw-ring-color:rgba(var(--primary-400),0.3);background-color:rgba(var(--primary-400),.1);color:rgba(var(--primary-400),var(--tw-text-opacity))}.choices__list--dropdown,.choices__list[aria-expanded]{--tw-bg-opacity:1;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);--tw-ring-color:rgba(var(--gray-950),0.05);background-color:rgb(255 255 255/var(--tw-bg-opacity));border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);display:none;font-size:.875rem;line-height:1.25rem;margin-top:.5rem;overflow:hidden;overflow-wrap:break-word;position:absolute;top:100%;width:100%;will-change:visibility;z-index:10}:is(.dark .choices__list--dropdown),:is(.dark .choices__list[aria-expanded]){--tw-bg-opacity:1;--tw-ring-color:hsla(0,0%,100%,.1);background-color:rgba(var(--gray-900),var(--tw-bg-opacity))}.is-active.choices__list--dropdown,.is-active.choices__list[aria-expanded]{display:block;padding:.25rem}.choices__list--dropdown .choices__list,.choices__list[aria-expanded] .choices__list{max-height:15rem;overflow:auto;will-change:scroll-position}.choices__item--choice{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity));padding:.5rem;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}:is(.dark .choices__item--choice){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__item--choice.choices__item--selectable{--tw-text-opacity:1;border-radius:.375rem;color:rgba(var(--gray-950),var(--tw-text-opacity))}:is(.dark .choices__item--choice.choices__item--selectable){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.choices__list--dropdown .choices__item--selectable.is-highlighted,.choices__list[aria-expanded] .choices__item--selectable.is-highlighted{--tw-bg-opacity:1;background-color:rgba(var(--gray-50),var(--tw-bg-opacity))}:is(.dark .choices__list--dropdown .choices__item--selectable.is-highlighted),:is(.dark .choices__list[aria-expanded] .choices__item--selectable.is-highlighted){background-color:hsla(0,0%,100%,.05)}.choices__item{cursor:default}.choices__item--disabled{pointer-events:none}.choices__item--disabled:disabled{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices__item--disabled:disabled){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices.is-disabled .choices__placeholder.choices__item,.choices__placeholder.choices__item{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity));cursor:default}:is(.dark .choices.is-disabled .choices__placeholder.choices__item),:is(.dark .choices__placeholder.choices__item){--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}.choices__button{background-color:transparent;background-position:50%;background-repeat:no-repeat;border-width:0;outline:2px solid transparent;outline-offset:2px;text-indent:-9999px}.choices[data-type*=select-one] .choices__button{height:1rem;inset-inline-end:0;margin-inline-end:2.25rem;opacity:.5;padding:0;position:absolute;transition-duration:75ms;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);width:1rem}:is(.dark .choices[data-type*=select-one] .choices__button){opacity:.4}.choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=);background-size:.7142em .7142em;top:calc(50% - .5714em)}.dark .choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.choices[data-type*=select-multiple] .choices__button{height:1rem;opacity:.5;width:1rem}:is(.dark .choices[data-type*=select-multiple] .choices__button){opacity:.4}.choices[data-type*=select-multiple] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=);background-size:.7142em .7142em}.dark .choices[data-type*=select-multiple] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJtMi41OTIuMDQ0IDE4LjM2NCAxOC4zNjQtMi41NDggMi41NDhMLjA0NCAyLjU5MnoiLz48cGF0aCBkPSJNMCAxOC4zNjQgMTguMzY0IDBsMi41NDggMi41NDhMMi41NDggMjAuOTEyeiIvPjwvZz48L3N2Zz4=)}.choices[data-type*=select-multiple] .choices__button:focus-visible,.choices[data-type*=select-multiple] .choices__button:hover,.choices[data-type*=select-one] .choices__button:focus-visible,.choices[data-type*=select-one] .choices__button:hover{opacity:.7}:is(.dark .choices[data-type*=select-multiple] .choices__button:focus-visible),:is(.dark .choices[data-type*=select-multiple] .choices__button:hover),:is(.dark .choices[data-type*=select-one] .choices__button:focus-visible),:is(.dark .choices[data-type*=select-one] .choices__button:hover){opacity:.6}.choices.is-disabled .choices__button,.choices[data-type*=select-one] .choices__item[data-value=""] .choices__button{display:none}.choices__input{--tw-text-opacity:1;background-color:transparent!important;border-style:none;color:rgba(var(--gray-950),var(--tw-text-opacity));font-size:1rem!important;line-height:1.5rem!important;padding:0!important;transition-duration:75ms;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.choices__input::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__input::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.choices__input:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)!important;--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)!important;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)!important}.choices__input:disabled{--tw-text-opacity:1;-webkit-text-fill-color:rgba(var(--gray-500),1);color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices__input){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .choices__input)::-moz-placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices__input)::placeholder{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity))}:is(.dark .choices__input:disabled){--tw-text-opacity:1;-webkit-text-fill-color:rgba(var(--gray-400),1);color:rgba(var(--gray-400),var(--tw-text-opacity))}@media (min-width:640px){.choices__input{font-size:.875rem!important;line-height:1.5rem}}.choices__list--dropdown .choices__input{padding:.5rem!important}.choices__input::-webkit-search-cancel-button,.choices__input::-webkit-search-decoration,.choices__input::-webkit-search-results-button,.choices__input::-webkit-search-results-decoration{display:none}.choices__input::-ms-clear,.choices__input::-ms-reveal{display:none;height:0;width:0}.choices__group{--tw-text-opacity:1;color:rgba(var(--gray-500),var(--tw-text-opacity));padding:1rem .5rem .5rem}.choices__group:first-child{padding-top:.5rem}:is(.dark .choices__group){--tw-text-opacity:1;color:rgba(var(--gray-400),var(--tw-text-opacity))}.webkit-calendar-picker-indicator\:opacity-0::-webkit-calendar-picker-indicator{opacity:0}/*! Bundled license information: - -cropperjs/dist/cropper.min.css: - (*! - * Cropper.js v1.6.1 - * https://fengyuanchen.github.io/cropperjs - * - * Copyright 2015-present Chen Fengyuan - * Released under the MIT license - * - * Date: 2023-09-17T03:44:17.565Z - *) - -filepond/dist/filepond.min.css: - (*! - * FilePond 4.30.6 - * Licensed under MIT, https://opensource.org/licenses/MIT/ - * Please visit https://pqina.nl/filepond/ for details. - *) - -filepond-plugin-image-edit/dist/filepond-plugin-image-edit.css: - (*! - * FilePondPluginImageEdit 1.6.3 - * Licensed under MIT, https://opensource.org/licenses/MIT/ - * Please visit https://pqina.nl/filepond/ for details. - *) - -filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css: - (*! - * FilePondPluginImagePreview 4.6.12 - * Licensed under MIT, https://opensource.org/licenses/MIT/ - * Please visit https://pqina.nl/filepond/ for details. - *) - -filepond-plugin-media-preview/dist/filepond-plugin-media-preview.css: - (*! - * FilePondPluginmediaPreview 1.0.11 - * Licensed under MIT, https://opensource.org/licenses/MIT/ - * Please visit undefined for details. - *) - -easymde/dist/easymde.min.css: - (** - * easymde v2.18.0 - * Copyright Jeroen Akkerman - * @link https://github.com/ionaru/easy-markdown-editor - * @license MIT - *) -*/ \ No newline at end of file diff --git a/vendor/filament/forms/dist/index.js b/vendor/filament/forms/dist/index.js deleted file mode 100644 index 8a04fd2e..00000000 --- a/vendor/filament/forms/dist/index.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{})(); diff --git a/vendor/filament/forms/docs/01-installation.md b/vendor/filament/forms/docs/01-installation.md deleted file mode 100644 index 0bc1264a..00000000 --- a/vendor/filament/forms/docs/01-installation.md +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: Installation ---- - -**The Form Builder package is pre-installed with the [Panel Builder](/docs/panels).** This guide is for using the Form Builder in a custom TALL Stack application (Tailwind, Alpine, Livewire, Laravel). - -## Requirements - -Filament requires the following to run: - -- PHP 8.1+ -- Laravel v10.0+ -- Livewire v3.0+ - -> **Livewire v3 is recently released!**
    -> The Livewire team have done a great job in making it stable, but it was a complete rewrite of Livewire v2. You may encounter issues, so we recommend testing your application thoroughly before using Filament v3 in production. - -## Installation - -Require the Form Builder package using Composer: - -```bash -composer require filament/forms:"^3.2" -W -``` - -## New Laravel projects - -To quickly get started with Filament in a new Laravel project, run the following commands to install [Livewire](https://livewire.laravel.com), [Alpine.js](https://alpinejs.dev), and [Tailwind CSS](https://tailwindcss.com): - -> Since these commands will overwrite existing files in your application, only run this in a new Laravel project! - -```bash -php artisan filament:install --scaffold --forms - -npm install - -npm run dev -``` - -## Existing Laravel projects - -Run the following command to install the Form Builder assets: - -```bash -php artisan filament:install --forms -``` - -### Installing Tailwind CSS - -Run the following command to install Tailwind CSS with the Tailwind Forms and Typography plugins: - -```bash -npm install tailwindcss @tailwindcss/forms @tailwindcss/typography postcss postcss-nesting autoprefixer --save-dev -``` - -Create a new `tailwind.config.js` file and add the Filament `preset` *(includes the Filament color scheme and the required Tailwind plugins)*: - -```js -import preset from './vendor/filament/support/tailwind.config.preset' - -export default { - presets: [preset], - content: [ - './app/Filament/**/*.php', - './resources/views/filament/**/*.blade.php', - './vendor/filament/**/*.blade.php', - ], -} -``` - -### Configuring styles - -Add Tailwind's CSS layers to your `resources/css/app.css`: - -```css -@tailwind base; -@tailwind components; -@tailwind utilities; -``` - -Create a `postcss.config.js` file in the root of your project and register Tailwind CSS, PostCSS Nesting and Autoprefixer as plugins: - -```js -export default { - plugins: { - 'tailwindcss/nesting': 'postcss-nesting', - tailwindcss: {}, - autoprefixer: {}, - }, -} -``` - -### Automatically refreshing the browser -You may also want to update your `vite.config.js` file to refresh the page automatically when Livewire components are updated: - -```js -import { defineConfig } from 'vite' -import laravel, { refreshPaths } from 'laravel-vite-plugin' - -export default defineConfig({ - plugins: [ - laravel({ - input: ['resources/css/app.css', 'resources/js/app.js'], - refresh: [ - ...refreshPaths, - 'app/Livewire/**', - ], - }), - ], -}) -``` - -### Compiling assets - -Compile your new CSS and Javascript assets using `npm run dev`. - -### Configuring your layout - -Create a new `resources/views/components/layouts/app.blade.php` layout file for Livewire components: - -```blade - - - - - - - - - - {{ config('app.name') }} - - - - @filamentStyles - @vite('resources/css/app.css') - - - - {{ $slot }} - - @filamentScripts - @vite('resources/js/app.js') - - -``` - -## Publishing configuration - -You can publish the package configuration using the following command (optional): - -```bash -php artisan vendor:publish --tag=filament-config -``` - -## Upgrading - -> Upgrading from Filament v2? Please review the [upgrade guide](upgrade-guide). - -Filament automatically upgrades to the latest non-breaking version when you run `composer update`. After any updates, all Laravel caches need to be cleared, and frontend assets need to be republished. You can do this all at once using the `filament:upgrade` command, which should have been added to your `composer.json` file when you ran `filament:install` the first time: - -```json -"post-autoload-dump": [ - // ... - "@php artisan filament:upgrade" -], -``` - -Please note that `filament:upgrade` does not actually handle the update process, as Composer does that already. If you're upgrading manually without a `post-autoload-dump` hook, you can run the command yourself: - -```bash -composer update - -php artisan filament:upgrade -``` diff --git a/vendor/filament/forms/docs/02-getting-started.md b/vendor/filament/forms/docs/02-getting-started.md deleted file mode 100644 index 6ab8fd91..00000000 --- a/vendor/filament/forms/docs/02-getting-started.md +++ /dev/null @@ -1,213 +0,0 @@ ---- -title: Getting started ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -Filament's form package allows you to easily build dynamic forms in your app. You can use it to [add a form to any Livewire component](adding-a-form-to-a-livewire-component). Additionally, it's used within other Filament packages to render forms within [app resources](../panels/resources/getting-started), [action modals](../actions/modals), [table filters](../tables/filters/getting-started), and more. Learning how to build forms is essential to learning how to use these Filament packages. - -This guide will walk you through the basics of building forms with Filament's form package. If you're planning to add a new form to your own Livewire component, you should [do that first](adding-a-form-to-a-livewire-component) and then come back. If you're adding a form to an [app resource](../panels/resources/getting-started), or another Filament package, you're ready to go! - -## Form schemas - -All Filament forms have a "schema". This is an array, which contains [fields](fields/getting-started#available-fields) and [layout components](layout/getting-started#available-layout-components). - -Fields are the inputs that your user will fill their data into. For example, HTML's `` or `` or `` or ` - - - -
    - -
    -``` - -When the user types into the input field, the `$name` property is updated in the Livewire component class. When the user submits the form, the `$name` property is sent to the server, where it can be saved. - -This is the basis of how fields work in Filament. Each field is assigned to a public property in the Livewire component class, which is where the state of the field is stored. We call the name of this property the "state path" of the field. You can access the state path of a field using the `$getStatePath()` function in the field's view: - -```blade - - - - -
    - -
    -``` - -If your component heavily relies on third party libraries, we advise that you asynchronously load the Alpine.js component using the Filament asset system. This ensures that the Alpine.js component is only loaded when it's needed, and not on every page load. To find out how to do this, check out our [Assets documentation](../../support/assets#asynchronous-alpinejs-components). - -## Rendering the field wrapper - -Filament includes a "field wrapper" component, which is able to render the field's label, validation errors, and any other text surrounding the field. You may render the field wrapper like this in the view: - -```blade - - - -``` - -It's encouraged to use the field wrapper component whenever appropriate, as it will ensure that the field's design is consistent with the rest of the form. - -## Accessing the Eloquent record - -Inside your view, you may access the Eloquent record using the `$getRecord()` function: - -```blade -
    - {{ $getRecord()->name }} -
    -``` - -## Obeying state binding modifiers - -When you bind a field to a state path, you may use the `defer` modifier to ensure that the state is only sent to the server when the user submits the form, or whenever the next Livewire request is made. This is the default behaviour. - -However, you may use the [`live()`](../advanced#the-basics-of-reactivity) on a field to ensure that the state is sent to the server immediately when the user interacts with the field. This allows for lots of advanced use cases as explained in the [advanced](../advanced) section of the documentation. - -Filament provides a `$applyStateBindingModifiers()` function that you may use in your view to apply any state binding modifiers to a `wire:model` or `$wire.$entangle()` binding: - -```blade - - - - -
    - -
    -``` diff --git a/vendor/filament/forms/docs/04-layout/01-getting-started.md b/vendor/filament/forms/docs/04-layout/01-getting-started.md deleted file mode 100644 index c0e591b6..00000000 --- a/vendor/filament/forms/docs/04-layout/01-getting-started.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Getting started ---- -import LaracastsBanner from "@components/LaracastsBanner.astro" - -## Overview - - - -Filament forms are not limited to just displaying fields. You can also use "layout components" to organize them into an infinitely nestable structure. - -Layout component classes can be found in the `Filament\Forms\Components` namespace. They reside within the schema of your form, alongside any [fields](fields/getting-started). - -Components may be created using the static `make()` method. Usually, you will then define the child component `schema()` to display inside: - -```php -use Filament\Forms\Components\Grid; - -Grid::make(2) - ->schema([ - // ... - ]) -``` - -## Available layout components - -Filament ships with some layout components, suitable for arranging your form fields depending on your needs: - -- [Grid](grid) -- [Fieldset](fieldset) -- [Tabs](tabs) -- [Wizard](wizard) -- [Section](section) -- [Split](split) -- [Placeholder](placeholder) - -You may also [create your own custom layout components](custom) to organize fields however you wish. - -## Setting an ID - -You may define an ID for the component using the `id()` method: - -```php -use Filament\Forms\Components\Section; - -Section::make() - ->id('main-section') -``` - -## Adding extra HTML attributes - -You can pass extra HTML attributes to the component, which will be merged onto the outer DOM element. Pass an array of attributes to the `extraAttributes()` method, where the key is the attribute name and the value is the attribute value: - -```php -use Filament\Forms\Components\Group; - -Section::make() - ->extraAttributes(['class' => 'custom-section-style']) -``` - -Classes will be merged with the default classes, and any other attributes will override the default attributes. - -## Global settings - -If you wish to change the default behaviour of a component globally, then you can call the static `configureUsing()` method inside a service provider's `boot()` method, to which you pass a Closure to modify the component using. For example, if you wish to make all section components have [2 columns](grid) by default, you can do it like so: - -```php -use Filament\Forms\Components\Section; - -Section::configureUsing(function (Section $section): void { - $section - ->columns(2); -}); -``` - -Of course, you are still able to overwrite this on each field individually: - -```php -use Filament\Forms\Components\Section; - -Section::make() - ->columns(1) -``` diff --git a/vendor/filament/forms/docs/04-layout/02-grid.md b/vendor/filament/forms/docs/04-layout/02-grid.md deleted file mode 100644 index 556c4996..00000000 --- a/vendor/filament/forms/docs/04-layout/02-grid.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: Grid ---- - -## Overview - -Filament's grid system allows you to create responsive, multi-column layouts using any layout component. - -## Responsively setting the number of grid columns - -All layout components have a `columns()` method that you can use in a couple of different ways: - -- You can pass an integer like `columns(2)`. This integer is the number of columns used on the `lg` breakpoint and higher. All smaller devices will have just 1 column. -- You can pass an array, where the key is the breakpoint and the value is the number of columns. For example, `columns(['md' => 2, 'xl' => 4])` will create a 2 column layout on medium devices, and a 4 column layout on extra large devices. The default breakpoint for smaller devices uses 1 column, unless you use a `default` array key. - -Breakpoints (`sm`, `md`, `lg`, `xl`, `2xl`) are defined by Tailwind, and can be found in the [Tailwind documentation](https://tailwindcss.com/docs/responsive-design#overview). - -## Controlling how many columns a component should span - -In addition to specifying how many columns a layout component should have, you may also specify how many columns a component should fill within the parent grid, using the `columnSpan()` method. This method accepts an integer or an array of breakpoints and column spans: - -- `columnSpan(2)` will make the component fill up to 2 columns on all breakpoints. -- `columnSpan(['md' => 2, 'xl' => 4])` will make the component fill up to 2 columns on medium devices, and up to 4 columns on extra large devices. The default breakpoint for smaller devices uses 1 column, unless you use a `default` array key. -- `columnSpan('full')` or `columnSpanFull()` or `columnSpan(['default' => 'full'])` will make the component fill the full width of the parent grid, regardless of how many columns it has. - -## An example of a responsive grid layout - -In this example, we have a form with a [section](section) layout component. Since all layout components support the `columns()` method, we can use it to create a responsive grid layout within the section itself. - -We pass an array to `columns()` as we want to specify different numbers of columns for different breakpoints. On devices smaller than the `sm` [Tailwind breakpoint](https://tailwindcss.com/docs/responsive-design#overview), we want to have 1 column, which is default. On devices larger than the `sm` breakpoint, we want to have 3 columns. On devices larger than the `xl` breakpoint, we want to have 6 columns. On devices larger than the `2xl` breakpoint, we want to have 8 columns. - -Inside the section, we have a [text input](../fields/text-input). Since text inputs are form components and all form components have a `columnSpan()` method, we can use it to specify how many columns the text input should fill. On devices smaller than the `sm` breakpoint, we want the text input to fill 1 column, which is default. On devices larger than the `sm` breakpoint, we want the text input to fill 2 columns. On devices larger than the `xl` breakpoint, we want the text input to fill 3 columns. On devices larger than the `2xl` breakpoint, we want the text input to fill 4 columns. - -```php -use Filament\Forms\Components\Section; -use Filament\Forms\Components\TextInput; - -Section::make() - ->columns([ - 'sm' => 3, - 'xl' => 6, - '2xl' => 8, - ]) - ->schema([ - TextInput::make('name') - ->columnSpan([ - 'sm' => 2, - 'xl' => 3, - '2xl' => 4, - ]), - // ... - ]) -``` - -## Grid component - -All layout components support the `columns()` method, but you also have access to an additional `Grid` component. If you feel that your form schema would benefit from an explicit grid syntax with no extra styling, it may be useful to you. Instead of using the `columns()` method, you can pass your column configuration directly to `Grid::make()`: - -```php -use Filament\Forms\Components\Grid; - -Grid::make([ - 'default' => 1, - 'sm' => 2, - 'md' => 3, - 'lg' => 4, - 'xl' => 6, - '2xl' => 8, -]) - ->schema([ - // ... - ]) -``` - -## Setting the starting column of a component in a grid - -If you want to start a component in a grid at a specific column, you can use the `columnStart()` method. This method accepts an integer, or an array of breakpoints and which column the component should start at: - -- `columnStart(2)` will make the component start at column 2 on all breakpoints. -- `columnStart(['md' => 2, 'xl' => 4])` will make the component start at column 2 on medium devices, and at column 4 on extra large devices. The default breakpoint for smaller devices uses 1 column, unless you use a `default` array key. - -```php -use Filament\Forms\Components\Section; - -Section::make() - ->columns([ - 'sm' => 3, - 'xl' => 6, - '2xl' => 8, - ]) - ->schema([ - TextInput::make('name') - ->columnStart([ - 'sm' => 2, - 'xl' => 3, - '2xl' => 4, - ]), - // ... - ]) -``` - -In this example, the grid has 3 columns on small devices, 6 columns on extra large devices, and 8 columns on extra extra large devices. The text input will start at column 2 on small devices, column 3 on extra large devices, and column 4 on extra extra large devices. This is essentially producing a layout whereby the text input always starts halfway through the grid, regardless of how many columns the grid has. diff --git a/vendor/filament/forms/docs/04-layout/03-fieldset.md b/vendor/filament/forms/docs/04-layout/03-fieldset.md deleted file mode 100644 index da7e4888..00000000 --- a/vendor/filament/forms/docs/04-layout/03-fieldset.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Fieldset ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -You may want to group fields into a Fieldset. Each fieldset has a label, a border, and a two-column grid by default: - -```php -use Filament\Forms\Components\Fieldset; - -Fieldset::make('Label') - ->schema([ - // ... - ]) -``` - - - -## Using grid columns within a fieldset - -You may use the `columns()` method to customize the [grid](grid) within the fieldset: - -```php -use Filament\Forms\Components\Fieldset; - -Fieldset::make('Label') - ->schema([ - // ... - ]) - ->columns(3) -``` diff --git a/vendor/filament/forms/docs/04-layout/04-tabs.md b/vendor/filament/forms/docs/04-layout/04-tabs.md deleted file mode 100644 index 17a782cc..00000000 --- a/vendor/filament/forms/docs/04-layout/04-tabs.md +++ /dev/null @@ -1,241 +0,0 @@ ---- -title: Tabs ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -Some forms can be long and complex. You may want to use tabs to reduce the number of components that are visible at once: - -```php -use Filament\Forms\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Tab 1') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 2') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 3') - ->schema([ - // ... - ]), - ]) -``` - - - -## Setting the default active tab - -The first tab will be open by default. You can change the default open tab using the `activeTab()` method: - -```php -use Filament\Forms\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Tab 1') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 2') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 3') - ->schema([ - // ... - ]), - ]) - ->activeTab(2) -``` - -## Setting a tab icon - -Tabs may have an [icon](https://blade-ui-kit.com/blade-icons?set=1#search), which you can set using the `icon()` method: - -```php -use Filament\Forms\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Notifications') - ->icon('heroicon-m-bell') - ->schema([ - // ... - ]), - // ... - ]) -``` - - - -### Setting the tab icon position - -The icon of the tab may be positioned before or after the label using the `iconPosition()` method: - -```php -use Filament\Forms\Components\Tabs; -use Filament\Support\Enums\IconPosition; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Notifications') - ->icon('heroicon-m-bell') - ->iconPosition(IconPosition::After) - ->schema([ - // ... - ]), - // ... - ]) -``` - - - -## Setting a tab badge - -Tabs may have a badge, which you can set using the `badge()` method: - -```php -use Filament\Forms\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Notifications') - ->badge(5) - ->schema([ - // ... - ]), - // ... - ]) -``` - - - -If you'd like to change the color for a badge, you can use the `badgeColor()` method: - -```php -use Filament\Forms\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Notifications') - ->badge(5) - ->badgeColor('success') - ->schema([ - // ... - ]), - // ... - ]) -``` - -## Using grid columns within a tab - -You may use the `columns()` method to customize the [grid](grid) within the tab: - -```php -use Filament\Forms\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Tab 1') - ->schema([ - // ... - ]) - ->columns(3), - // ... - ]) -``` - -## Removing the styled container - -By default, tabs and their content are wrapped in a container styled as a card. You may remove the styled container using `contained()`: - -```php -use Filament\Forms\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Tab 1') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 2') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 3') - ->schema([ - // ... - ]), - ]) - ->contained(false) -``` - -## Persisting the current tab - -By default, the current tab is not persisted in the browser's local storage. You can change this behavior using the `persistTab()` method. You must also pass in a unique `id()` for the tabs component, to distinguish it from all other sets of tabs in the app. This ID will be used as the key in the local storage to store the current tab: - -```php -use Filament\Forms\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - // ... - ]) - ->persistTab() - ->id('order-tabs') -``` - -### Persisting the current tab in the URL's query string - -By default, the current tab is not persisted in the URL's query string. You can change this behavior using the `persistTabInQueryString()` method: - -```php -use Filament\Forms\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Tab 1') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 2') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 3') - ->schema([ - // ... - ]), - ]) - ->persistTabInQueryString() -``` - -By default, the current tab is persisted in the URL's query string using the `tab` key. You can change this key by passing it to the `persistTabInQueryString()` method: - -```php -use Filament\Forms\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Tab 1') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 2') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 3') - ->schema([ - // ... - ]), - ]) - ->persistTabInQueryString('settings-tab') -``` - diff --git a/vendor/filament/forms/docs/04-layout/05-wizard.md b/vendor/filament/forms/docs/04-layout/05-wizard.md deleted file mode 100644 index 006c9d7a..00000000 --- a/vendor/filament/forms/docs/04-layout/05-wizard.md +++ /dev/null @@ -1,204 +0,0 @@ ---- -title: Wizard ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -Similar to [tabs](tabs), you may want to use a multistep form wizard to reduce the number of components that are visible at once. These are especially useful if your form has a definite chronological order, in which you want each step to be validated as the user progresses. - -```php -use Filament\Forms\Components\Wizard; - -Wizard::make([ - Wizard\Step::make('Order') - ->schema([ - // ... - ]), - Wizard\Step::make('Delivery') - ->schema([ - // ... - ]), - Wizard\Step::make('Billing') - ->schema([ - // ... - ]), -]) -``` - - - -> We have different setup instructions if you're looking to add a wizard to the creation process inside a [panel resource](../../panels/resources/creating-records#using-a-wizard) or an [action modal](../../actions/modals#using-a-wizard-as-a-modal-form). Following that documentation will ensure that the ability to submit the form is only available on the last step of the wizard. - -## Rendering a submit button on the last step - -You may use the `submitAction()` method to render submit button HTML or a view at the end of the wizard, on the last step. This provides a clearer UX than displaying a submit button below the wizard at all times: - -```php -use Filament\Forms\Components\Wizard; -use Illuminate\Support\HtmlString; - -Wizard::make([ - // ... -])->submitAction(view('order-form.submit-button')) - -Wizard::make([ - // ... -])->submitAction(new HtmlString('')) -``` - -Alternatively, you can use the built-in Filament button Blade component: - -```php -use Filament\Forms\Components\Wizard; -use Illuminate\Support\Facades\Blade; -use Illuminate\Support\HtmlString; - -Wizard::make([ - // ... -])->submitAction(new HtmlString(Blade::render(<< - Submit - -BLADE))) -``` - -You could use this component in a separate Blade view if you want. - -## Setting up step icons - -Steps may also have an [icon](https://blade-ui-kit.com/blade-icons?set=1#search), set using the `icon()` method: - -```php -use Filament\Forms\Components\Wizard; - -Wizard\Step::make('Order') - ->icon('heroicon-m-shopping-bag') - ->schema([ - // ... - ]), -``` - - - -## Adding descriptions to steps - -You may add a short description after the title of each step using the `description()` method: - -```php -use Filament\Forms\Components\Wizard; - -Wizard\Step::make('Order') - ->description('Review your basket') - ->schema([ - // ... - ]), -``` - - - -## Setting the default active step - -You may use the `startOnStep()` method to load a specific step in the wizard: - -```php -use Filament\Forms\Components\Wizard; - -Wizard::make([ - // ... -])->startOnStep(2) -``` - -## Allowing steps to be skipped - -If you'd like to allow free navigation, so all steps are skippable, use the `skippable()` method: - -```php -use Filament\Forms\Components\Wizard; - -Wizard::make([ - // ... -])->skippable() -``` - -## Persisting the current step in the URL's query string - -By default, the current step is not persisted in the URL's query string. You can change this behavior using the `persistStepInQueryString()` method: - -```php -use Filament\Forms\Components\Wizard; - -Wizard::make([ - // ... -])->persistStepInQueryString() -``` - -By default, the current step is persisted in the URL's query string using the `step` key. You can change this key by passing it to the `persistStepInQueryString()` method: - -```php -use Filament\Forms\Components\Wizard; - -Wizard::make([ - // ... -])->persistStepInQueryString('wizard-step') -``` - -## Step lifecycle hooks - -You may use the `afterValidation()` and `beforeValidation()` methods to run code before and after validation occurs on the step: - -```php -use Filament\Forms\Components\Wizard; - -Wizard\Step::make('Order') - ->afterValidation(function () { - // ... - }) - ->beforeValidation(function () { - // ... - }) - ->schema([ - // ... - ]), -``` - -## Using grid columns within a step - -You may use the `columns()` method to customize the [grid](grid) within the step: - -```php -use Filament\Forms\Components\Wizard; - -Wizard::make([ - Wizard\Step::make('Order') - ->columns(2) - ->schema([ - // ... - ]), - // ... -]) -``` - -## Customizing the wizard action objects - -This component uses action objects for easy customization of buttons within it. You can customize these buttons by passing a function to an action registration method. The function has access to the `$action` object, which you can use to [customize it](../../actions/trigger-button). The following methods are available to customize the actions: - -- `nextAction()` -- `previousAction()` - -Here is an example of how you might customize an action: - -```php -use Filament\Forms\Components\Actions\Action; -use Filament\Forms\Components\Wizard; - -Wizard::make([ - // ... -]) - ->nextAction( - fn (Action $action) => $action->label('Next step'), - ) -``` diff --git a/vendor/filament/forms/docs/04-layout/06-section.md b/vendor/filament/forms/docs/04-layout/06-section.md deleted file mode 100644 index 6e4e009b..00000000 --- a/vendor/filament/forms/docs/04-layout/06-section.md +++ /dev/null @@ -1,196 +0,0 @@ ---- -title: Section ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -You may want to separate your fields into sections, each with a heading and description. To do this, you can use a section component: - -```php -use Filament\Forms\Components\Section; - -Section::make('Rate limiting') - ->description('Prevent abuse by limiting the number of requests per period') - ->schema([ - // ... - ]) -``` - - - -You can also use a section without a header, which just wraps the components in a simple card: - -```php -use Filament\Forms\Components\Section; - -Section::make() - ->schema([ - // ... - ]) -``` - - - -## Adding actions to the section's header - -You may add [actions](../actions) to the section's header using the `headerActions()` method: - -```php -use Filament\Forms\Components\Actions\Action; -use Filament\Forms\Components\Section; - -Section::make('Rate limiting') - ->headerActions([ - Action::make('test') - ->action(function () { - // ... - }), - ]) - ->schema([ - // ... - ]) -``` - - - -If your section does not have a heading, Filament has no way of locating the action inside it. In this case, you must pass a unique `id()` to the section: - -```php -use Filament\Forms\Components\Section; - -Section::make() - ->id('rateLimitingSection') - ->headerActions([ - // ... - ]) - ->schema([ - // ... - ]) -``` - -## Adding an icon to the section's header - -You may add an [icon](https://blade-ui-kit.com/blade-icons?set=1#search) to the section's header using the `icon()` method: - -```php -use Filament\Forms\Components\Section; - -Section::make('Cart') - ->description('The items you have selected for purchase') - ->icon('heroicon-m-shopping-bag') - ->schema([ - // ... - ]) -``` - - - -## Positioning the heading and description aside - -You may use the `aside()` to align heading & description on the left, and the form components inside a card on the right: - -```php -use Filament\Forms\Components\Section; - -Section::make('Rate limiting') - ->description('Prevent abuse by limiting the number of requests per period') - ->aside() - ->schema([ - // ... - ]) -``` - - - -## Collapsing sections - -Sections may be `collapsible()` to optionally hide content in long forms: - -```php -use Filament\Forms\Components\Section; - -Section::make('Cart') - ->description('The items you have selected for purchase') - ->schema([ - // ... - ]) - ->collapsible() -``` - -Your sections may be `collapsed()` by default: - -```php -use Filament\Forms\Components\Section; - -Section::make('Cart') - ->description('The items you have selected for purchase') - ->schema([ - // ... - ]) - ->collapsed() -``` - - - -### Persisting collapsed sections - -You can persist whether a section is collapsed in local storage using the `persistCollapsed()` method, so it will remain collapsed when the user refreshes the page: - -```php -use Filament\Infolists\Components\Section; - -Section::make('Cart') - ->description('The items you have selected for purchase') - ->schema([ - // ... - ]) - ->collapsible() - ->persistCollapsed() -``` - -To persist the collapse state, the local storage needs a unique ID to store the state. This ID is generated based on the heading of the section. If your section does not have a heading, or if you have multiple sections with the same heading that you do not want to collapse together, you can manually specify the `id()` of that section to prevent an ID conflict: - -```php -use Filament\Infolists\Components\Section; - -Section::make('Cart') - ->description('The items you have selected for purchase') - ->schema([ - // ... - ]) - ->collapsible() - ->persistCollapsed() - ->id('order-cart') -``` - -## Compact section styling - -When nesting sections, you can use a more compact styling: - -```php -use Filament\Forms\Components\Section; - -Section::make('Rate limiting') - ->description('Prevent abuse by limiting the number of requests per period') - ->schema([ - // ... - ]) - ->compact() -``` - - - -## Using grid columns within a section - -You may use the `columns()` method to easily create a [grid](grid) within the section: - -```php -use Filament\Forms\Components\Section; - -Section::make('Heading') - ->schema([ - // ... - ]) - ->columns(2) -``` diff --git a/vendor/filament/forms/docs/04-layout/07-split.md b/vendor/filament/forms/docs/04-layout/07-split.md deleted file mode 100644 index 7c95d1c7..00000000 --- a/vendor/filament/forms/docs/04-layout/07-split.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Split ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -The `Split` component allows you to define layouts with flexible widths, using flexbox. - -```php -use Filament\Forms\Components\Section; -use Filament\Forms\Components\Split; -use Filament\Forms\Components\Textarea; -use Filament\Forms\Components\TextInput; -use Filament\Forms\Components\Toggle; - -Split::make([ - Section::make([ - TextInput::make('title'), - Textarea::make('content'), - ]), - Section::make([ - Toggle::make('is_published'), - Toggle::make('is_featured'), - ])->grow(false), -])->from('md') -``` - -In this example, the first section will `grow()` to consume available horizontal space, without affecting the amount of space needed to render the second section. This creates a sidebar effect. - -The `from()` method is used to control the [Tailwind breakpoint](https://tailwindcss.com/docs/responsive-design#overview) (`sm`, `md`, `lg`, `xl`, `2xl`) at which the split layout should be used. In this example, the split layout will be used on medium devices and larger. On smaller devices, the sections will stack on top of each other. - - diff --git a/vendor/filament/forms/docs/04-layout/08-custom.md b/vendor/filament/forms/docs/04-layout/08-custom.md deleted file mode 100644 index 5161b590..00000000 --- a/vendor/filament/forms/docs/04-layout/08-custom.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Custom layouts ---- -import LaracastsBanner from "@components/LaracastsBanner.astro" - - - -## View components - -Aside from [building custom layout components](#custom-layout-classes), you may create "view" components which allow you to create custom layouts without extra PHP classes. - -```php -use Filament\Forms\Components\View; - -View::make('filament.forms.components.wizard') -``` - -This assumes that you have a `resources/views/filament/forms/components/wizard.blade.php` file. - -## Custom layout classes - -You may create your own custom component classes and views, which you can reuse across your project, and even release as a plugin to the community. - -> If you're just creating a simple custom component to use once, you could instead use a [view component](#view) to render any custom Blade file. - -To create a custom column class and view, you may use the following command: - -```bash -php artisan make:form-layout Wizard -``` - -This will create the following layout component class: - -```php -use Filament\Forms\Components\Component; - -class Wizard extends Component -{ - protected string $view = 'filament.forms.components.wizard'; - - public static function make(): static - { - return app(static::class); - } -} -``` - -It will also create a view file at `resources/views/filament/forms/components/wizard.blade.php`. - -## Rendering the component's schema - -Inside your view, you may render the component's `schema()` using the `$getChildComponentContainer()` function: - -```blade -
    - {{ $getChildComponentContainer() }} -
    -``` - -## Accessing the Eloquent record - -Inside your view, you may access the Eloquent record using the `$getRecord()` function: - -```blade -
    - {{ $getRecord()->name }} -
    -``` diff --git a/vendor/filament/forms/docs/04-layout/08-placeholder.md b/vendor/filament/forms/docs/04-layout/08-placeholder.md deleted file mode 100644 index ba62ad96..00000000 --- a/vendor/filament/forms/docs/04-layout/08-placeholder.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Placeholder ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -Placeholders can be used to render text-only "fields" within your forms. Each placeholder has `content()`, which cannot be changed by the user. - -```php -use App\Models\Post; -use Filament\Forms\Components\Placeholder; - -Placeholder::make('created') - ->content(fn (Post $record): string => $record->created_at->toFormattedDateString()) -``` - - - -> **Important:** All form fields require a unique name. That also applies to Placeholders! - -## Rendering HTML inside the placeholder - -You may even render custom HTML within placeholder content: - -```php -use Filament\Forms\Components\Placeholder; -use Illuminate\Support\HtmlString; - -Placeholder::make('documentation') - ->content(new HtmlString('filamentphp.com')) -``` - -## Dynamically generating placeholder content - -By passing a closure to the `content()` method, you may dynamically generate placeholder content. You have access to any closure parameter explained in the [advanced closure customization](../advanced#closure-customization) documentation: - -```php -use Filament\Forms\Components\Placeholder; -use Filament\Forms\Get; - -Placeholder::make('total') - ->content(function (Get $get): string { - return '€' . number_format($get('cost') * $get('quantity'), 2); - }) -``` diff --git a/vendor/filament/forms/docs/05-validation.md b/vendor/filament/forms/docs/05-validation.md deleted file mode 100644 index 5c41a4e8..00000000 --- a/vendor/filament/forms/docs/05-validation.md +++ /dev/null @@ -1,587 +0,0 @@ ---- -title: Validation ---- - -## Overview - -Validation rules may be added to any [field](fields/getting-started). - -In Laravel, validation rules are usually defined in arrays like `['required', 'max:255']` or a combined string like `required|max:255`. This is fine if you're exclusively working in the backend with simple form requests. But Filament is also able to give your users frontend validation, so they can fix their mistakes before any backend requests are made. - -Filament includes several [dedicated validation methods](#available-rules), but you can also use any [other Laravel validation rules](#other-rules), including [custom validation rules](#custom-rules). - -> Beware that some validations rely on the field name and therefore won't work when passed via `->rule()`/`->rules()`. Use the dedicated validation methods whenever you can. - -## Available rules - -### Active URL - -The field must have a valid A or AAAA record according to the `dns_get_record()` PHP function. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-active-url) - -```php -Field::make('name')->activeUrl() -``` - -### After (date) - -The field value must be a value after a given date. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-after) - -```php -Field::make('start_date')->after('tomorrow') -``` - -Alternatively, you may pass the name of another field to compare against: - -```php -Field::make('start_date') -Field::make('end_date')->after('start_date') -``` - -### After or equal to (date) - -The field value must be a date after or equal to the given date. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-after-or-equal) - -```php -Field::make('start_date')->afterOrEqual('tomorrow') -``` - -Alternatively, you may pass the name of another field to compare against: - -```php -Field::make('start_date') -Field::make('end_date')->afterOrEqual('start_date') -``` - -### Alpha - -The field must be entirely alphabetic characters. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-alpha) - -```php -Field::make('name')->alpha() -``` - -### Alpha Dash - -The field may have alphanumeric characters, as well as dashes and underscores. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-alpha-dash) - -```php -Field::make('name')->alphaDash() -``` - -### Alpha Numeric - -The field must be entirely alphanumeric characters. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-alpha-num) - -```php -Field::make('name')->alphaNum() -``` - -### ASCII - -The field must be entirely 7-bit ASCII characters. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-ascii) - -```php -Field::make('name')->ascii() -``` - -### Before (date) - -The field value must be a date before a given date. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-before) - -```php -Field::make('start_date')->before('first day of next month') -``` - -Alternatively, you may pass the name of another field to compare against: - -```php -Field::make('start_date')->before('end_date') -Field::make('end_date') -``` - -### Before or equal to (date) - -The field value must be a date before or equal to the given date. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-before-or-equal) - -```php -Field::make('start_date')->beforeOrEqual('end of this month') -``` - -Alternatively, you may pass the name of another field to compare against: - -```php -Field::make('start_date')->beforeOrEqual('end_date') -Field::make('end_date') -``` - -### Confirmed - -The field must have a matching field of `{field}_confirmation`. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-confirmed) - -```php -Field::make('password')->confirmed() -Field::make('password_confirmation') -``` - -### Different - -The field value must be different to another. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-different) - -```php -Field::make('backup_email')->different('email') -``` - -### Doesnt Start With - -The field must not start with one of the given values. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-doesnt-start-with) - -```php -Field::make('name')->doesntStartWith(['admin']) -``` - -### Doesnt End With - -The field must not end with one of the given values. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-doesnt-end-with) - -```php -Field::make('name')->doesntEndWith(['admin']) -``` - -### Ends With - -The field must end with one of the given values. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-ends-with) - -```php -Field::make('name')->endsWith(['bot']) -``` - -### Enum - -The field must contain a valid enum value. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-enum) - -```php -Field::make('status')->enum(MyStatus::class) -``` - -### Exists - -The field value must exist in the database. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-exists) - -```php -Field::make('invitation')->exists() -``` - -By default, the form's model will be searched, [if it is registered](adding-a-form-to-a-livewire-component#setting-a-form-model). You may specify a custom table name or model to search: - -```php -use App\Models\Invitation; - -Field::make('invitation')->exists(table: Invitation::class) -``` - -By default, the field name will be used as the column to search. You may specify a custom column to search: - -```php -Field::make('invitation')->exists(column: 'id') -``` - -You can further customize the rule by passing a [closure](advanced#closure-customization) to the `callback` parameter: - -```php -use Illuminate\Validation\Rules\Exists; - -Field::make('invitation') - ->exists(modifyRuleUsing: function (Exists $rule) { - return $rule->where('is_active', 1); - }) -``` - -### Filled - -The field must not be empty when it is present. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-filled) - -```php -Field::make('name')->filled() -``` - -### Greater than - -The field value must be greater than another. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-gt) - -```php -Field::make('newNumber')->gt('oldNumber') -``` - -### Greater than or equal to - -The field value must be greater than or equal to another. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-gte) - -```php -Field::make('newNumber')->gte('oldNumber') -``` - -### Hex color - -The field value must be a valid color in hexadecimal format. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-hex-color) - -```php -Field::make('color')->hexColor() -``` - -### In -The field must be included in the given list of values. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-in) - -```php -Field::make('status')->in(['pending', 'completed']) -``` - -### Ip Address - -The field must be an IP address. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-ip) - -```php -Field::make('ip_address')->ip() -Field::make('ip_address')->ipv4() -Field::make('ip_address')->ipv6() -``` - -### JSON - -The field must be a valid JSON string. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-json) - -```php -Field::make('ip_address')->json() -``` - -### Less than - -The field value must be less than another. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-lt) - -```php -Field::make('newNumber')->lt('oldNumber') -``` - -### Less than or equal to - -The field value must be less than or equal to another. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-lte) - -```php -Field::make('newNumber')->lte('oldNumber') -``` - -### Mac Address - -The field must be a MAC address. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-mac) - -```php -Field::make('mac_address')->macAddress() -``` - -### Multiple Of - -The field must be a multiple of value. [See the Laravel documentation.](https://laravel.com/docs/validation#multiple-of) - -```php -Field::make('number')->multipleOf(2) -``` - -### Not In - -The field must not be included in the given list of values. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-not-in) - -```php -Field::make('status')->notIn(['cancelled', 'rejected']) -``` - -### Not Regex - -The field must not match the given regular expression. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-not-regex) - -```php -Field::make('email')->notRegex('/^.+$/i') -``` - -### Nullable - -The field value can be empty. This rule is applied by default if the `required` rule is not present. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-nullable) - -```php -Field::make('name')->nullable() -``` - -### Prohibited - -The field value must be empty. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-prohibited) - -```php -Field::make('name')->prohibited() -``` - -### Prohibited If - -The field must be empty *only if* the other specified field has any of the given values. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-prohibited-if) - -```php -Field::make('name')->prohibitedIf('field', 'value') -``` - -### Prohibited Unless - -The field must be empty *unless* the other specified field has any of the given values. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-prohibited-unless) - -```php -Field::make('name')->prohibitedUnless('field', 'value') -``` - -### Prohibits - -If the field is not empty, all other specified fields must be empty. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-prohibits) - -```php -Field::make('name')->prohibits('field') - -Field::make('name')->prohibits(['field', 'another_field']) -``` - -### Required - -The field value must not be empty. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-required) - -```php -Field::make('name')->required() -``` - -### Required If - -The field value must not be empty _only if_ the other specified field has any of the given values. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-required-if) - -```php -Field::make('name')->requiredIf('field', 'value') -``` - -### Required Unless - -The field value must not be empty _unless_ the other specified field has any of the given values. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-required-unless) - -```php -Field::make('name')->requiredUnless('field', 'value') -``` - -### Required With - -The field value must not be empty _only if_ any of the other specified fields are not empty. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-required-with) - -```php -Field::make('name')->requiredWith('field,another_field') -``` - -### Required With All - -The field value must not be empty _only if_ all the other specified fields are not empty. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-required-with-all) - -```php -Field::make('name')->requiredWithAll('field,another_field') -``` - -### Required Without - -The field value must not be empty _only when_ any of the other specified fields are empty. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-required-without) - -```php -Field::make('name')->requiredWithout('field,another_field') -``` - -### Required Without All - -The field value must not be empty _only when_ all the other specified fields are empty. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-required-without-all) - -```php -Field::make('name')->requiredWithoutAll('field,another_field') -``` - -### Regex - -The field must match the given regular expression. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-regex) - -```php -Field::make('email')->regex('/^.+@.+$/i') -``` - -### Same - -The field value must be the same as another. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-same) - -```php -Field::make('password')->same('passwordConfirmation') -``` - -### Starts With - -The field must start with one of the given values. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-starts-with) - -```php -Field::make('name')->startsWith(['a']) -``` - -### String - -The field must be a string. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-string) -```php -Field::make('name')->string() -``` - -### Unique - -The field value must not exist in the database. [See the Laravel documentation.](https://laravel.com/docs/validation#rule-unique) - -```php -Field::make('email')->unique() -``` - -By default, the form's model will be searched, [if it is registered](adding-a-form-to-a-livewire-component#setting-a-form-model). You may specify a custom table name or model to search: - -```php -use App\Models\User; - -Field::make('email')->unique(table: User::class) -``` - -By default, the field name will be used as the column to search. You may specify a custom column to search: - -```php -Field::make('email')->unique(column: 'email_address') -``` - -Sometimes, you may wish to ignore a given model during unique validation. For example, consider an "update profile" form that includes the user's name, email address, and location. You will probably want to verify that the email address is unique. However, if the user only changes the name field and not the email field, you do not want a validation error to be thrown because the user is already the owner of the email address in question. - -```php -Field::make('email')->unique(ignorable: $ignoredUser) -``` - -If you're using the [Panel Builder](../panels), you can easily ignore the current record by using `ignoreRecord` instead: - -```php -Field::make('email')->unique(ignoreRecord: true) -``` - -You can further customize the rule by passing a [closure](advanced#closure-customization) to the `modifyRuleUsing` parameter: - -```php -use Illuminate\Validation\Rules\Unique; - -Field::make('email') - ->unique(modifyRuleUsing: function (Unique $rule) { - return $rule->where('is_active', 1); - }) -``` - -### UUID - -The field must be a valid RFC 4122 (version 1, 3, 4, or 5) universally unique identifier (UUID). [See the Laravel documentation.](https://laravel.com/docs/validation#rule-uuid) - -```php -Field::make('identifer')->uuid() -``` - -## Other rules - -You may add other validation rules to any field using the `rules()` method: - -```php -TextInput::make('slug')->rules(['alpha_dash']) -``` - -A full list of validation rules may be found in the [Laravel documentation](https://laravel.com/docs/validation#available-validation-rules). - -## Custom rules - -You may use any custom validation rules as you would do in [Laravel](https://laravel.com/docs/validation#custom-validation-rules): - -```php -TextInput::make('slug')->rules([new Uppercase()]) -``` - -You may also use [closure rules](https://laravel.com/docs/validation#using-closures): - -```php -TextInput::make('slug')->rules([ - function () { - return function (string $attribute, $value, Closure $fail) { - if ($value === 'foo') { - $fail('The :attribute is invalid.'); - } - }; - }, -]) -``` - -You may [inject utilities](advanced#form-component-utility-injection) like [`$get`](advanced#injecting-the-state-of-another-field) into your custom rules, for example if you need to reference other field values in your form: - -```php -use Closure; -use Filament\Forms\Get; - -TextInput::make('slug')->rules([ - fn (Get $get): Closure => function (string $attribute, $value, Closure $fail) use ($get) { - if ($get('other_field') === 'foo' && $value !== 'bar') { - $fail("The {$attribute} is invalid."); - } - }, -]) -``` - -## Customizing validation attributes - -When fields fail validation, their label is used in the error message. To customize the label used in field error messages, use the `validationAttribute()` method: - -```php -use Filament\Forms\Components\TextInput; - -TextInput::make('name')->validationAttribute('full name') -``` - -## Validation messages - -By default Laravel's validation error message is used. To customize the error messages, use the `validationMessages()` method: - -```php -use Filament\Forms\Components\TextInput; - -TextInput::make('email') - ->unique(// ...) - ->validationMessages([ - 'unique' => 'The :attribute has already been registered.', - ]) -``` - -## Sending validation notifications - -If you want to send a notification when validation error occurs, you may do so by using the `onValidationError()` method on your Livewire component: - -```php -use Filament\Notifications\Notification; -use Illuminate\Validation\ValidationException; - -protected function onValidationError(ValidationException $exception): void -{ - Notification::make() - ->title($exception->getMessage()) - ->danger() - ->send(); -} -``` - -Alternatively, if you are using the Panel Builder and want this behavior on all the pages, add this inside the `boot()` method of your `AppServiceProvider`: - -```php -use Filament\Notifications\Notification; -use Filament\Pages\Page; -use Illuminate\Validation\ValidationException; - -Page::$reportValidationErrorUsing = function (ValidationException $exception) { - Notification::make() - ->title($exception->getMessage()) - ->danger() - ->send(); -}; -``` diff --git a/vendor/filament/forms/docs/06-actions.md b/vendor/filament/forms/docs/06-actions.md deleted file mode 100644 index a5f998f9..00000000 --- a/vendor/filament/forms/docs/06-actions.md +++ /dev/null @@ -1,243 +0,0 @@ ---- -title: Actions ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -Filament's forms can use [Actions](../actions). They are buttons that can be added to any form component. For instance, you may want an action to call an API endpoint to generate content with AI, or to create a new option for a select dropdown. Also, you can [render anonymous sets of actions](#adding-anonymous-actions-to-a-form-without-attaching-them-to-a-component) on their own which are not attached to a particular form component. - -## Defining a form component action - -Action objects inside a form component are instances of `Filament/Forms/Components/Actions/Action`. You must pass a unique name to the action's `make()` method, which is used to identify it amongst others internally within Filament. You can [customize the trigger button](../actions/trigger-button) of an action, and even [open a modal](../actions/modals) with little effort: - -```php -use App\Actions\ResetStars; -use Filament\Forms\Components\Actions\Action; - -Action::make('resetStars') - ->icon('heroicon-m-x-mark') - ->color('danger') - ->requiresConfirmation() - ->action(function (ResetStars $resetStars) { - $resetStars(); - }) -``` - -### Adding an affix action to a field - -Certain fields support "affix actions", which are buttons that can be placed before or after its input area. The following fields support affix actions: - -- [Text input](fields/text-input) -- [Select](fields/select) -- [Date-time picker](fields/date-time-picker) -- [Color picker](fields/color-picker) - -To define an affix action, you can pass it to either `prefixAction()` or `suffixAction()`: - -```php -use Filament\Forms\Components\Actions\Action; -use Filament\Forms\Components\TextInput; -use Filament\Forms\Set; - -TextInput::make('cost') - ->prefix('€') - ->suffixAction( - Action::make('copyCostToPrice') - ->icon('heroicon-m-clipboard') - ->requiresConfirmation() - ->action(function (Set $set, $state) { - $set('price', $state); - }) - ) -``` - - - -Notice `$set` and `$state` injected into the `action()` function in this example. This is [form component action utility injection](#form-component-action-utility-injection). - -#### Passing multiple affix actions to a field - -You may pass multiple affix actions to a field by passing them in an array to either `prefixActions()` or `suffixActions()`. Either method can be used, or both at once, Filament will render all the registered actions in order: - -```php -use Filament\Forms\Components\Actions\Action; -use Filament\Forms\Components\TextInput; - -TextInput::make('cost') - ->prefix('€') - ->prefixActions([ - Action::make('...'), - Action::make('...'), - Action::make('...'), - ]) - ->suffixActions([ - Action::make('...'), - Action::make('...'), - ]) -``` - -### Adding a hint action to a field - -All fields support "hint actions", which are rendered aside the field's [hint](fields/getting-started#adding-a-hint-next-to-the-label). To add a hint action to a field, you may pass it to `hintAction()`: - -```php -use Filament\Forms\Components\Actions\Action; -use Filament\Forms\Components\TextInput; -use Filament\Forms\Set; - -TextInput::make('cost') - ->prefix('€') - ->hintAction( - Action::make('copyCostToPrice') - ->icon('heroicon-m-clipboard') - ->requiresConfirmation() - ->action(function (Set $set, $state) { - $set('price', $state); - }) - ) -``` - -Notice `$set` and `$state` injected into the `action()` function in this example. This is [form component action utility injection](#form-component-action-utility-injection). - - - -#### Passing multiple hint actions to a field - -You may pass multiple hint actions to a field by passing them in an array to `hintActions()`. Filament will render all the registered actions in order: - -```php -use Filament\Forms\Components\Actions\Action; -use Filament\Forms\Components\TextInput; - -TextInput::make('cost') - ->prefix('€') - ->hintActions([ - Action::make('...'), - Action::make('...'), - Action::make('...'), - ]) -``` - -### Adding an action to a custom form component - -If you wish to render an action within a custom form component, `ViewField` object, or `View` component object, you may do so using the `registerActions()` method: - -```php -use Filament\Forms\Components\Actions\Action; -use Filament\Forms\Components\ViewField; -use Filament\Forms\Set; - -ViewField::make('rating') - ->view('filament.forms.components.range-slider') - ->registerActions([ - Action::make('setMaximum') - ->icon('heroicon-m-star') - ->action(function (Set $set) { - $set('rating', 5); - }), - ]) -``` - -Notice `$set` injected into the `action()` function in this example. This is [form component action utility injection](#form-component-action-utility-injection). - -Now, to render the action in the view of the custom component, you need to call `$getAction()`, passing the name of the action you registered: - -```blade -
    - - - {{ $getAction('setMaximum') }} -
    -``` - -### Adding "anonymous" actions to a form without attaching them to a component - -You may use an `Actions` component to render a set of actions anywhere in the form, avoiding the need to register them to any particular component: - -```php -use App\Actions\Star; -use App\Actions\ResetStars; -use Filament\Forms\Components\Actions; -use Filament\Forms\Components\Actions\Action; - -Actions::make([ - Action::make('star') - ->icon('heroicon-m-star') - ->requiresConfirmation() - ->action(function (Star $star) { - $star(); - }), - Action::make('resetStars') - ->icon('heroicon-m-x-mark') - ->color('danger') - ->requiresConfirmation() - ->action(function (ResetStars $resetStars) { - $resetStars(); - }), -]), -``` - - - -#### Making the independent form actions consume the full width of the form - -You can stretch the independent form actions to consume the full width of the form using `fullWidth()`: - -```php -use Filament\Forms\Components\Actions; - -Actions::make([ - // ... -])->fullWidth(), -``` - - - -#### Controlling the horizontal alignment of independent form actions - -Independent form actions are aligned to the start of the component by default. You may change this by passing `Alignment::Center` or `Alignment::End` to `alignment()`: - -```php -use Filament\Forms\Components\Actions; -use Filament\Support\Enums\Alignment; - -Actions::make([ - // ... -])->alignment(Alignment::Center), -``` - - - -#### Controlling the vertical alignment of independent form actions - -Independent form actions are vertically aligned to the start of the component by default. You may change this by passing `Alignment::Center` or `Alignment::End` to `verticalAlignment()`: - -```php -use Filament\Forms\Components\Actions; -use Filament\Support\Enums\VerticalAlignment; - -Actions::make([ - // ... -])->verticalAlignment(VerticalAlignment::End), -``` - - - -## Form component action utility injection - -If an action is attached to a form component, the `action()` function is able to [inject utilities](advanced#form-component-utility-injection) directly from that form component. For instance, you can inject [`$set`](advanced#injecting-a-function-to-set-the-state-of-another-field) and [`$state`](advanced#injecting-the-current-state-of-a-field): - -```php -use Filament\Forms\Components\Actions\Action; -use Filament\Forms\Set; - -Action::make('copyCostToPrice') - ->icon('heroicon-m-clipboard') - ->requiresConfirmation() - ->action(function (Set $set, $state) { - $set('price', $state); - }) -``` - -Form component actions also have access to [all utilities that apply to actions](../actions/advanced#action-utility-injection) in general. diff --git a/vendor/filament/forms/docs/07-advanced.md b/vendor/filament/forms/docs/07-advanced.md deleted file mode 100644 index 6053e069..00000000 --- a/vendor/filament/forms/docs/07-advanced.md +++ /dev/null @@ -1,688 +0,0 @@ ---- -title: Advanced forms ---- - -## Overview - -Filament Form Builder is designed to be flexible and customizable. Many existing form builders allow users to define a form schema, but don't provide a great interface for defining inter-field interactions, or custom logic. Since all Filament forms are built on top of [Livewire](https://livewire.laravel.com), the form can adapt dynamically to user input, even after it has been initially rendered. Developers can use [parameter injection](#form-component-utility-injection) to access many utilities in real time and build dynamic forms based on user input. The [lifecycle](#field-lifecycle) of fields is open to extension using hook functions to define custom functionality for each field. This allows developers to build complex forms with ease. - -## The basics of reactivity - -[Livewire](https://livewire.laravel.com) is a tool that allows Blade-rendered HTML to dynamically re-render without requiring a full page reload. Filament forms are built on top of Livewire, so they are able to re-render dynamically, allowing their layout to adapt after they are initially rendered. - -By default, when a user uses a field, the form will not re-render. Since rendering requires a round-trip to the server, this is a performance optimization. However, if you wish to re-render the form after the user has interacted with a field, you can use the `live()` method: - -```php -use Filament\Forms\Components\Select; - -Select::make('status') - ->options([ - 'draft' => 'Draft', - 'reviewing' => 'Reviewing', - 'published' => 'Published', - ]) - ->live() -``` - -In this example, when the user changes the value of the `status` field, the form will re-render. This allows you to then make changes to fields in the form based on the new value of the `status` field. Also, you can [hook in to the field's lifecycle](#field-updates) to perform custom logic when the field is updated. - -### Reactive fields on blur - -By default, when a field is set to `live()`, the form will re-render every time the field is interacted with. However, this may not be appropriate for some fields like the text input, since making network requests while the user is still typing results in suboptimal performance. You may wish to re-render the form only after the user has finished using the field, when it becomes out of focus. You can do this using the `live(onBlur: true)` method: - -```php -use Filament\Forms\Components\TextInput; - -TextInput::make('username') - ->live(onBlur: true) -``` - -### Debouncing reactive fields - -You may wish to find a middle ground between `live()` and `live(onBlur: true)`, using "debouncing". Debouncing will prevent a network request from being sent until a user has finished typing for a certain period of time. You can do this using the `live(debounce: 500)` method: - -```php -use Filament\Forms\Components\TextInput; - -TextInput::make('username') - ->live(debounce: 500) // Wait 500ms before re-rendering the form. -``` - -In this example, `500` is the number of milliseconds to wait before sending a network request. You can customize this number to whatever you want, or even use a string like `'1s'`. - -## Form component utility injection - -The vast majority of methods used to configure [fields](fields/getting-started) and [layout components](layout/getting-started) accept functions as parameters instead of hardcoded values: - -```php -use App\Models\User; -use Filament\Forms\Components\DatePicker; -use Filament\Forms\Components\Select; -use Filament\Forms\Components\TextInput; - -DatePicker::make('date_of_birth') - ->displayFormat(function () { - if (auth()->user()->country_id === 'us') { - return 'm/d/Y' - } else { - return 'd/m/Y' - } - }) - -Select::make('user_id') - ->options(function () { - return User::all()->pluck('name', 'id'); - }) - -TextInput::make('middle_name') - ->required(fn (): bool => auth()->user()->hasMiddleName()) -``` - -This alone unlocks many customization possibilities. - -The package is also able to inject many utilities to use inside these functions, as parameters. All customization methods that accept functions as arguments can inject utilities. - -These injected utilities require specific parameter names to be used. Otherwise, Filament doesn't know what to inject. - -### Injecting the current state of a field - -If you wish to access the current state (value) of the field, define a `$state` parameter: - -```php -function ($state) { - // ... -} -``` - -### Injecting the current form component instance - -If you wish to access the current component instance, define a `$component` parameter: - -```php -use Filament\Forms\Components\Component; - -function (Component $component) { - // ... -} -``` - -### Injecting the current Livewire component instance - -If you wish to access the current Livewire component instance, define a `$livewire` parameter: - -```php -use Livewire\Component as Livewire; - -function (Livewire $livewire) { - // ... -} -``` - -### Injecting the current form record - -If your form is associated with an Eloquent model instance, define a `$record` parameter: - -```php -use Illuminate\Database\Eloquent\Model; - -function (?Model $record) { - // ... -} -``` - -### Injecting the state of another field - -You may also retrieve the state (value) of another field from within a callback, using a `$get` parameter: - -```php -use Filament\Forms\Get; - -function (Get $get) { - $email = $get('email'); // Store the value of the `email` field in the `$email` variable. - //... -} -``` - -### Injecting a function to set the state of another field - -In a similar way to `$get`, you may also set the value of another field from within a callback, using a `$set` parameter: - -```php -use Filament\Forms\Set; - -function (Set $set) { - $set('title', 'Blog Post'); // Set the `title` field to `Blog Post`. - //... -} -``` - -When this function is run, the state of the `title` field will be updated, and the form will re-render with the new title. This is useful inside the [`afterStateUpdated`](#field-updates) method. - -### Injecting the current form operation - -If you're writing a form for a panel resource or relation manager, and you wish to check if a form is `create`, `edit` or `view`, use the `$operation` parameter: - -```php -function (string $operation) { - // ... -} -``` - -> Outside the panel, you can set a form's operation by using the `operation()` method on the form definition. - -### Injecting multiple utilities - -The parameters are injected dynamically using reflection, so you are able to combine multiple parameters in any order: - -```php -use Filament\Forms\Get; -use Filament\Forms\Set; -use Livewire\Component as Livewire; - -function (Livewire $livewire, Get $get, Set $set) { - // ... -} -``` - -### Injecting dependencies from Laravel's container - -You may inject anything from Laravel's container like normal, alongside utilities: - -```php -use Filament\Forms\Set; -use Illuminate\Http\Request; - -function (Request $request, Set $set) { - // ... -} -``` - -## Field lifecycle - -Each field in a form has a lifecycle, which is the process it goes through when the form is loaded, when it is interacted with by the user, and when it is submitted. You may customize what happens at each stage of this lifecycle using a function that gets run at that stage. - -### Field hydration - -Hydration is the process that fills fields with data. It runs when you call the form's `fill()` method. You may customize what happens after a field is hydrated using the `afterStateHydrated()` method. - -In this example, the `name` field will always be hydrated with the correctly capitalized name: - -```php -use Closure; -use Filament\Forms\Components\TextInput; - -TextInput::make('name') - ->required() - ->afterStateHydrated(function (TextInput $component, string $state) { - $component->state(ucwords($state)); - }) -``` - -As a shortcut for formatting the field's state like this when it is hydrated, you can use the `formatStateUsing()` method: - -```php -use Closure; -use Filament\Forms\Components\TextInput; - -TextInput::make('name') - ->formatStateUsing(fn (string $state): string => ucwords($state)) -``` - -### Field updates - -You may use the `afterStateUpdated()` method to customize what happens after a field is updated by the user. Only changes from the user on the frontend will trigger this function, not manual changes to the state from `$set()` or another PHP function. - -Inside this function, you can also inject the `$old` value of the field before it was updated, using the `$old` parameter: - -```php -use Filament\Forms\Components\TextInput; - -TextInput::make('name') - ->afterStateUpdated(function (?string $state, ?string $old) { - // ... - }) -``` - -For an example of how to use this method, learn how to [automatically generate a slug from a title](#generating-a-slug-from-a-title). - -### Field dehydration - -Dehydration is the process that gets data from the fields in your forms, and transforms it. It runs when you call the form's `getState()` method. - -You may customize how the state is transformed when it is dehydrated using the `dehydrateStateUsing()` function. In this example, the `name` field will always be dehydrated with the correctly capitalized name: - -```php -use Filament\Forms\Components\TextInput; - -TextInput::make('name') - ->required() - ->dehydrateStateUsing(fn (string $state): string => ucwords($state)) -``` - -#### Preventing a field from being dehydrated - -You may also prevent a field from being dehydrated altogether using `dehydrated(false)`. In this example, the field will not be present in the array returned from `getState()`: - -```php -use Filament\Forms\Components\TextInput; - -TextInput::make('password_confirmation') - ->password() - ->dehydrated(false) -``` - -If your form auto-saves data to the database, like in a [resource](../panels/resources/getting-started) or [table action](../tables/actions), this is useful to prevent a field from being saved to the database if it is purely used for presentational purposes. - -## Reactive forms cookbook - -This section contains a collection of recipes for common tasks you may need to perform when building an advanced form. - -### Conditionally hiding a field - -To conditionally hide or show a field, you can pass a function to the `hidden()` method, and return `true` or `false` depending on whether you want the field to be hidden or not. The function can [inject utilities](#form-component-utility-injection) as parameters, so you can do things like check the value of another field: - -```php -use Filament\Forms\Get; -use Filament\Forms\Components\Checkbox; -use Filament\Forms\Components\TextInput; - -Checkbox::make('is_company') - ->live() - -TextInput::make('company_name') - ->hidden(fn (Get $get): bool => ! $get('is_company')) -``` - -In this example, the `is_company` checkbox is [`live()`](#the-basics-of-reactivity). This allows the form to rerender when the value of the `is_company` field changes. You can access the value of that field from within the `hidden()` function using the [`$get()` utility](#injecting-the-current-state-of-a-field). The value of the field is inverted using `!` so that the `company_name` field is hidden when the `is_company` field is `false`. - -Alternatively, you can use the `visible()` method to show a field conditionally. It does the exact inverse of `hidden()`, and could be used if you prefer the clarity of the code when written this way: - -```php -use Filament\Forms\Get; -use Filament\Forms\Components\Checkbox; -use Filament\Forms\Components\TextInput; - -Checkbox::make('is_company') - ->live() - -TextInput::make('company_name') - ->visible(fn (Get $get): bool => $get('is_company')) -``` - -### Conditionally making a field required - -To conditionally make a field required, you can pass a function to the `required()` method, and return `true` or `false` depending on whether you want the field to be required or not. The function can [inject utilities](#form-component-utility-injection) as parameters, so you can do things like check the value of another field: - -```php -use Filament\Forms\Get; -use Filament\Forms\Components\TextInput; - -TextInput::make('company_name') - ->live(onBlur: true) - -TextInput::make('vat_number') - ->required(fn (Get $get): bool => filled($get('company_name'))) -``` - -In this example, the `company_name` field is [`live(onBlur: true)`](#reactive-fields-on-blur). This allows the form to rerender after the value of the `company_name` field changes and the user clicks away. You can access the value of that field from within the `required()` function using the [`$get()` utility](#injecting-the-current-state-of-a-field). The value of the field is checked using `filled()` so that the `vat_number` field is required when the `company_name` field is not `null` or an empty string. The result is that the `vat_number` field is only required when the `company_name` field is filled in. - -Using a function is able to make any other [validation rule](validation) dynamic in a similar way. - -### Generating a slug from a title - -To generate a slug from a title while the user is typing, you can use the [`afterStateUpdated()` method](#field-updates) on the title field to [`$set()`](#injecting-a-function-to-set-the-state-of-another-field) the value of the slug field: - -```php -use Filament\Forms\Components\TextInput; -use Filament\Forms\Set; -use Illuminate\Support\Str; - -TextInput::make('title') - ->live() - ->afterStateUpdated(fn (Set $set, ?string $state) => $set('slug', Str::slug($state))) - -TextInput::make('slug') -``` - -In this example, the `title` field is [`live()`](#the-basics-of-reactivity). This allows the form to rerender when the value of the `title` field changes. The `afterStateUpdated()` method is used to run a function after the state of the `title` field is updated. The function injects the [`$set()` utility](#injecting-a-function-to-set-the-state-of-another-field) and the new state of the `title` field. The `Str::slug()` utility method is part of Laravel and is used to generate a slug from a string. The `slug` field is then updated using the `$set()` function. - -One thing to note is that the user may customize the slug manually, and we don't want to overwrite their changes if the title changes. To prevent this, we can use the old version of the title to work out if the user has modified it themselves. To access the old version of the title, you can inject `$old`, and to get the current value of the slug before it gets changed, we can use the [`$get()` utility](#injecting-the-state-of-another-field): - -```php -use Filament\Forms\Components\TextInput; -use Filament\Forms\Get; -use Filament\Forms\Set; -use Illuminate\Support\Str; - -TextInput::make('title') - ->live() - ->afterStateUpdated(function (Get $get, Set $set, ?string $old, ?string $state) { - if (($get('slug') ?? '') !== Str::slug($old)) { - return; - } - - $set('slug', Str::slug($state)); - }) - -TextInput::make('slug') -``` - -### Dependant select options - -To dynamically update the options of a [select field](fields/select) based on the value of another field, you can pass a function to the `options()` method of the select field. The function can [inject utilities](#form-component-utility-injection) as parameters, so you can do things like check the value of another field using the [`$get()` utility](#injecting-the-current-state-of-a-field): - -```php -use Filament\Forms\Get; -use Filament\Forms\Components\Select; - -Select::make('category') - ->options([ - 'web' => 'Web development', - 'mobile' => 'Mobile development', - 'design' => 'Design', - ]) - ->live() - -Select::make('sub_category') - ->options(fn (Get $get): array => match ($get('category')) { - 'web' => [ - 'frontend_web' => 'Frontend development', - 'backend_web' => 'Backend development', - ], - 'mobile' => [ - 'ios_mobile' => 'iOS development', - 'android_mobile' => 'Android development', - ], - 'design' => [ - 'app_design' => 'Panel design', - 'marketing_website_design' => 'Marketing website design', - ], - default => [], - }) -``` - -In this example, the `category` field is [`live()`](#the-basics-of-reactivity). This allows the form to rerender when the value of the `category` field changes. You can access the value of that field from within the `options()` function using the [`$get()` utility](#injecting-the-current-state-of-a-field). The value of the field is used to determine which options should be available in the `sub_category` field. The `match ()` statement in PHP is used to return an array of options based on the value of the `category` field. The result is that the `sub_category` field will only show options relevant to the selected `category` field. - -You could adapt this example to use options loaded from an Eloquent model or other data source, by querying within the function: - -```php -use Filament\Forms\Get; -use Filament\Forms\Components\Select; -use Illuminate\Support\Collection; - -Select::make('category') - ->options(Category::query()->pluck('name', 'id')) - ->live() - -Select::make('sub_category') - ->options(fn (Get $get): Collection => SubCategory::query() - ->where('category', $get('category')) - ->pluck('name', 'id')) -``` - -### Dynamic fields based on a select option - -You may wish to render a different set of fields based on the value of a field, like a select. To do this, you can pass a function to the `schema()` method of any [layout component](layout/getting-started), which checks the value of the field and returns a different schema based on that value. Also, you will need a way to initialise the new fields in the dynamic schema when they are first loaded. - -```php -use Filament\Forms\Components\FileUpload; -use Filament\Forms\Components\Grid; -use Filament\Forms\Components\Select; -use Filament\Forms\Components\TextInput; -use Filament\Forms\Get; - -Select::make('type') - ->options([ - 'employee' => 'Employee', - 'freelancer' => 'Freelancer', - ]) - ->live() - ->afterStateUpdated(fn (Select $component) => $component - ->getContainer() - ->getComponent('dynamicTypeFields') - ->getChildComponentContainer() - ->fill()) - -Grid::make(2) - ->schema(fn (Get $get): array => match ($get('type')) { - 'employee' => [ - TextInput::make('employee_number') - ->required(), - FileUpload::make('badge') - ->image() - ->required(), - ], - 'freelancer' => [ - TextInput::make('hourly_rate') - ->numeric() - ->required() - ->prefix('€'), - FileUpload::make('contract') - ->required(), - ], - default => [], - }) - ->key('dynamicTypeFields') -``` - -In this example, the `type` field is [`live()`](#the-basics-of-reactivity). This allows the form to rerender when the value of the `type` field changes. The `afterStateUpdated()` method is used to run a function after the state of the `type` field is updated. In this case, we [inject the current select field instance](#injecting-the-current-form-component-instance), which we can then use to get the form "container" instance that holds both the select and the grid components. With this container, we can target the grid component using a unique key (`dynamicTypeFields`) that we have assigned to it. With that grid component instance, we can call `fill()`, just as we do on a normal form to initialise it. The `schema()` method of the grid component is then used to return a different schema based on the value of the `type` field. This is done by using the [`$get()` utility](#injecting-the-current-state-of-a-field), and returning a different schema array dynamically. - -### Auto-hashing password field - -You have a password field: - -```php -use Filament\Forms\Components\TextInput; - -TextInput::make('password') - ->password() -``` - -And you can use a [dehydration function](#field-dehydration) to hash the password when the form is submitted: - -```php -use Filament\Forms\Components\TextInput; -use Illuminate\Support\Facades\Hash; - -TextInput::make('password') - ->password() - ->dehydrateStateUsing(fn (string $state): string => Hash::make($state)) -``` - -But if your form is used to change an existing password, you don't want to overwrite the existing password if the field is empty. You can [prevent the field from being dehydrated](#preventing-a-field-from-being-dehydrated) if the field is null or an empty string (using the `filled()` helper): - -```php -use Filament\Forms\Components\TextInput; -use Illuminate\Support\Facades\Hash; - -TextInput::make('password') - ->password() - ->dehydrateStateUsing(fn (string $state): string => Hash::make($state)) - ->dehydrated(fn (?string $state): bool => filled($state)) -``` - -However, you want to require the password to be filled when the user is being created, by [injecting the `$operation` utility](#injecting-the-current-form-operation), and then [conditionally making the field required](#conditionally-making-a-field-required): - -```php -use Filament\Forms\Components\TextInput; -use Illuminate\Support\Facades\Hash; - -TextInput::make('password') - ->password() - ->dehydrateStateUsing(fn (string $state): string => Hash::make($state)) - ->dehydrated(fn (?string $state): bool => filled($state)) - ->required(fn (string $operation): bool => $operation === 'create') -``` - -## Saving data to relationships - -> If you're building a form inside your Livewire component, make sure you have set up the [form's model](adding-a-form-to-a-livewire-component#setting-a-form-model). Otherwise, Filament doesn't know which model to use to retrieve the relationship from. - -As well as being able to give structure to fields, [layout components](layout/getting-started) are also able to "teleport" their nested fields into a relationship. Filament will handle loading data from a `HasOne`, `BelongsTo` or `MorphOne` Eloquent relationship, and then it will save the data back to the same relationship. To set this behaviour up, you can use the `relationship()` method on any layout component: - -```php -use Filament\Forms\Components\Fieldset; -use Filament\Forms\Components\FileUpload; -use Filament\Forms\Components\Textarea; -use Filament\Forms\Components\TextInput; - -Fieldset::make('Metadata') - ->relationship('metadata') - ->schema([ - TextInput::make('title'), - Textarea::make('description'), - FileUpload::make('image'), - ]) -``` - -In this example, the `title`, `description` and `image` are automatically loaded from the `metadata` relationship, and saved again when the form is submitted. If the `metadata` record does not exist, it is automatically created. - -This functionality is not just limited to fieldsets - you can use it with any layout component. For example, you could use a `Group` component which has no styling associated with it: - -```php -use Filament\Forms\Components\Group; -use Filament\Forms\Components\TextInput; - -Group::make() - ->relationship('customer') - ->schema([ - TextInput::make('name') - ->label('Customer') - ->required(), - TextInput::make('email') - ->label('Email address') - ->email() - ->required(), - ]) -``` - -### Saving data to a `BelongsTo` relationship - -Please note that if you are saving the data to a `BelongsTo` relationship, then the foreign key column in your database must be `nullable()`. This is because Filament saves the form first, before saving the relationship. Since the form is saved first, the foreign ID does not exist yet, so it must be nullable. Immediately after the form is saved, Filament saves the relationship, which will then fill in the foreign ID and save it again. - -It is worth noting that if you have an observer on your form model, then you may need to adapt it to ensure that it does not depend on the relationship existing when it it created. For example, if you have an observer that sends an email to a related record when a form is created, you may need to switch to using a different hook that runs after the relationship is attached, like `updated()`. - -### Conditionally saving data to a relationship - -Sometimes, saving the related record may be optional. If the user fills out the customer fields, then the customer will be created / updated. Otherwise, the customer will not be created, or will be deleted if it already exists. To do this, you can pass a `condition` function as an argument to `relationship()`, which can use the `$state` of the related form to determine whether the relationship should be saved or not: - -```php -use Filament\Forms\Components\Group; -use Filament\Forms\Components\TextInput; - -Group::make() - ->relationship( - 'customer', - condition: fn (?array $state): bool => filled($state['name']), - ) - ->schema([ - TextInput::make('name') - ->label('Customer'), - TextInput::make('email') - ->label('Email address') - ->email() - ->requiredWith('name'), - ]) -``` - -In this example, the customer's name is not `required()`, and the email address is only required when the `name` is filled. The `condition` function is used to check whether the `name` field is filled, and if it is, then the customer will be created / updated. Otherwise, the customer will not be created, or will be deleted if it already exists. - -## Inserting Livewire components into a form - -You may insert a Livewire component directly into a form: - -```php -use Filament\Forms\Components\Livewire; -use App\Livewire\Foo; - -Livewire::make(Foo::class) -``` - -If you are rendering multiple of the same Livewire component, please make sure to pass a unique `key()` to each: - -```php -use Filament\Forms\Components\Livewire; -use App\Livewire\Foo; - -Livewire::make(Foo::class) - ->key('foo-first') - -Livewire::make(Foo::class) - ->key('foo-second') - -Livewire::make(Foo::class) - ->key('foo-third') -``` - -### Passing parameters to a Livewire component - -You can pass an array of parameters to a Livewire component: - -```php -use Filament\Forms\Components\Livewire; -use App\Livewire\Foo; - -Livewire::make(Foo::class, ['bar' => 'baz']) -``` - -Now, those parameters will be passed to the Livewire component's `mount()` method: - -```php -class Foo extends Component -{ - public function mount(string $bar): void - { - // ... - } -} -``` - -Alternatively, they will be available as public properties on the Livewire component: - -```php -class Foo extends Component -{ - public string $bar; -} -``` - -#### Accessing the current record in the Livewire component - -You can access the current record in the Livewire component using the `$record` parameter in the `mount()` method, or the `$record` property: - -```php -use Illuminate\Database\Eloquent\Model; - -class Foo extends Component -{ - public function mount(?Model $record = null): void - { - // ... - } - - // or - - public ?Model $record = null; -} -``` - -Please be aware that when the record has not yet been created, it will be `null`. If you'd like to hide the Livewire component when the record is `null`, you can use the `hidden()` method: - -```php -use Filament\Forms\Components\Livewire; -use Illuminate\Database\Eloquent\Model; - -Livewire::make(Foo::class) - ->hidden(fn (?Model $record): bool => $record === null) -``` - -### Lazy loading a Livewire component - -You may allow the component to [lazily load](https://livewire.laravel.com/docs/lazy#rendering-placeholder-html) using the `lazy()` method: - -```php -use Filament\Forms\Components\Livewire; -use App\Livewire\Foo; - -Livewire::make(Foo::class)->lazy() -``` diff --git a/vendor/filament/forms/docs/08-adding-a-form-to-a-livewire-component.md b/vendor/filament/forms/docs/08-adding-a-form-to-a-livewire-component.md deleted file mode 100644 index e819e152..00000000 --- a/vendor/filament/forms/docs/08-adding-a-form-to-a-livewire-component.md +++ /dev/null @@ -1,333 +0,0 @@ ---- -title: Adding a form to a Livewire component ---- - -## Setting up the Livewire component - -First, generate a new Livewire component: - -```bash -php artisan make:livewire CreatePost -``` - -Then, render your Livewire component on the page: - -```blade -@livewire('create-post') -``` - -Alternatively, you can use a full-page Livewire component: - -```php -use App\Livewire\CreatePost; -use Illuminate\Support\Facades\Route; - -Route::get('posts/create', CreatePost::class); -``` - -## Adding the form - -There are 5 main tasks when adding a form to a Livewire component class. Each one is essential: - -1) Implement the `HasForms` interface and use the `InteractsWithForms` trait. -2) Define a public Livewire property to store your form's data. In our example, we'll call this `$data`, but you can call it whatever you want. -3) Add a `form()` method, which is where you configure the form. [Add the form's schema](getting-started#form-schemas), and tell Filament to store the form data in the `$data` property (using `statePath('data')`). -4) Initialize the form with `$this->form->fill()` in `mount()`. This is imperative for every form that you build, even if it doesn't have any initial data. -5) Define a method to handle the form submission. In our example, we'll call this `create()`, but you can call it whatever you want. Inside that method, you can validate and get the form's data using `$this->form->getState()`. It's important that you use this method instead of accessing the `$this->data` property directly, because the form's data needs to be validated and transformed into a useful format before being returned. - -```php -form->fill(); - } - - public function form(Form $form): Form - { - return $form - ->schema([ - TextInput::make('title') - ->required(), - MarkdownEditor::make('content'), - // ... - ]) - ->statePath('data'); - } - - public function create(): void - { - dd($this->form->getState()); - } - - public function render(): View - { - return view('livewire.create-post'); - } -} -``` - -Finally, in your Livewire component's view, render the form: - -```blade -
    -
    - {{ $this->form }} - - -
    - - -
    -``` - -> `` is used to render form component [action modals](actions). The code can be put anywhere outside the `
    ` element, as long as it's within the Livewire component. - -Visit your Livewire component in the browser, and you should see the form components from `schema()`: - -Submit the form with data, and you'll see the form's data dumped to the screen. You can save the data to a model instead of dumping it: - -```php -use App\Models\Post; - -public function create(): void -{ - Post::create($this->form->getState()); -} -``` - -## Initializing the form with data - -To fill the form with data, just pass that data to the `$this->form->fill()` method. For example, if you're editing an existing post, you might do something like this: - -```php -use App\Models\Post; - -public function mount(Post $post): void -{ - $this->form->fill($post->toArray()); -} -``` - -It's important that you use the `$this->form->fill()` method instead of assigning the data directly to the `$this->data` property. This is because the post's data needs to be internally transformed into a useful format before being stored. - -## Setting a form model - -Giving the `$form` access to a model is useful for a few reasons: - -- It allows fields within that form to load information from that model. For example, select fields can [load their options from the database](fields/select#integrating-with-an-eloquent-relationship) automatically. -- The form can load and save the model's relationship data automatically. For example, you have an Edit Post form, with a [Repeater](fields/repeater#integrating-with-an-eloquent-relationship) which manages comments associated with that post. Filament will automatically load the comments for that post when you call `$this->form->fill([...])`, and save them back to the relationship when you call `$this->form->getState()`. -- Validation rules like `exists()` and `unique()` can automatically retrieve the database table name from the model. - -It is advised to always pass the model to the form when there is one. As explained, it unlocks many new powers of the Filament Form Builder. - -To pass the model to the form, use the `$form->model()` method: - -```php -use App\Models\Post; -use Filament\Forms\Form; - -public Post $post; - -public function form(Form $form): Form -{ - return $form - ->schema([ - // ... - ]) - ->statePath('data') - ->model($this->post); -} -``` - -### Passing the form model after the form has been submitted - -In some cases, the form's model is not available until the form has been submitted. For example, in a Create Post form, the post does not exist until the form has been submitted. Therefore, you can't pass it in to `$form->model()`. However, you can pass a model class instead: - -```php -use App\Models\Post; -use Filament\Forms\Form; - -public function form(Form $form): Form -{ - return $form - ->schema([ - // ... - ]) - ->statePath('data') - ->model(Post::class); -} -``` - -On its own, this isn't as powerful as passing a model instance. For example, relationships won't be saved to the post after it is created. To do that, you'll need to pass the post to the form after it has been created, and call `saveRelationships()` to save the relationships to it: - -```php -use App\Models\Post; - -public function create(): void -{ - $post = Post::create($this->form->getState()); - - // Save the relationships from the form to the post after it is created. - $this->form->model($post)->saveRelationships(); -} -``` - -## Saving form data to individual properties - -In all of our previous examples, we've been saving the form's data to the public `$data` property on the Livewire component. However, you can save the data to individual properties instead. For example, if you have a form with a `title` field, you can save the form's data to the `$title` property instead. To do this, don't pass a `statePath()` to the form at all. Ensure that all of your fields have their own **public** properties on the class. - -```php -use Filament\Forms\Components\TextInput; -use Filament\Forms\Components\MarkdownEditor; -use Filament\Forms\Form; - -public ?string $title = null; - -public ?string $content = null; - -public function form(Form $form): Form -{ - return $form - ->schema([ - TextInput::make('title') - ->required(), - MarkdownEditor::make('content'), - // ... - ]); -} -``` - -## Using multiple forms - -By default, the `InteractsWithForms` trait only handles one form per Livewire component - `form()`. To add more forms to the Livewire component, you can define them in the `getForms()` method, and return an array containing the name of each form: - -```php -protected function getForms(): array -{ - return [ - 'editPostForm', - 'createCommentForm', - ]; -} -``` - -Each of these forms can now be defined within the Livewire component, using a method with the same name: - -```php -use Filament\Forms\Components\TextInput; -use Filament\Forms\Components\MarkdownEditor; -use Filament\Forms\Form; - -public function editPostForm(Form $form): Form -{ - return $form - ->schema([ - TextInput::make('title') - ->required(), - MarkdownEditor::make('content'), - // ... - ]) - ->statePath('postData') - ->model($this->post); -} - -public function createCommentForm(Form $form): Form -{ - return $form - ->schema([ - TextInput::make('name') - ->required(), - TextInput::make('email') - ->email() - ->required(), - MarkdownEditor::make('content') - ->required(), - // ... - ]) - ->statePath('commentData') - ->model(Comment::class); -} -``` - -Now, each form is addressable by its name instead of `form`. For example, to fill the post form, you can use `$this->editPostForm->fill([...])`, or to get the data from the comment form you can use `$this->createCommentForm->getState()`. - -You'll notice that each form has its own unique `statePath()`. Each form will write its state to a different array on your Livewire component, so it's important to define these: - -```php -public ?array $postData = []; -public ?array $commentData = []; -``` - -## Resetting a form's data - -You can reset a form back to its default data at any time by calling `$this->form->fill()`. For example, you may wish to clear the contents of a form every time it's submitted: - -```php -use App\Models\Comment; - -public function createComment(): void -{ - Comment::create($this->form->getState()); - - // Reinitialize the form to clear its data. - $this->form->fill(); -} -``` - -## Generating form Livewire components with the CLI - -It's advised that you learn how to set up a Livewire component with the Form Builder manually, but once you are confident, you can use the CLI to generate a form for you. - -```bash -php artisan make:livewire-form RegistrationForm -``` - -This will generate a new `app/Livewire/RegistrationForm.php` component, which you can customize. - -### Generating a form for an Eloquent model - -Filament is also able to generate forms for a specific Eloquent model. These are more powerful, as they will automatically save the data in the form for you, and [ensure the form fields are properly configured](#setting-a-form-model) to access that model. - -When generating a form with the `make:livewire-form` command, it will ask for the name of the model: - -```bash -php artisan make:livewire-form Products/CreateProduct -``` - -#### Generating an edit form for an Eloquent record - -By default, passing a model to the `make:livewire-form` command will result in a form that creates a new record in your database. If you pass the `--edit` flag to the command, it will generate an edit form for a specific record. This will automatically fill the form with the data from the record, and save the data back to the model when the form is submitted. - -```bash -php artisan make:livewire-form Products/EditProduct --edit -``` - -### Automatically generating form schemas - -Filament is also able to guess which form fields you want in the schema, based on the model's database columns. You can use the `--generate` flag when generating your form: - -```bash -php artisan make:livewire-form Products/CreateProduct --generate -``` - -> If your table contains ENUM columns, the `doctrine/dbal` package we use is unable to scan your table and will crash. Hence, Filament is unable to generate the schema for your table if it contains an ENUM column. Read more about this issue [here](https://github.com/doctrine/dbal/issues/3819#issuecomment-573419808). diff --git a/vendor/filament/forms/docs/09-testing.md b/vendor/filament/forms/docs/09-testing.md deleted file mode 100644 index fd880ab5..00000000 --- a/vendor/filament/forms/docs/09-testing.md +++ /dev/null @@ -1,435 +0,0 @@ ---- -title: Testing ---- - -## Overview - -All examples in this guide will be written using [Pest](https://pestphp.com). However, you can easily adapt this to PHPUnit. - -Since the Form Builder works on Livewire components, you can use the [Livewire testing helpers](https://livewire.laravel.com/docs/testing). However, we have custom testing helpers that you can use with forms: - -## Filling a form - -To fill a form with data, pass the data to `fillForm()`: - -```php -use function Pest\Livewire\livewire; - -livewire(CreatePost::class) - ->fillForm([ - 'title' => fake()->sentence(), - // ... - ]); -``` - -> If you have multiple forms on a Livewire component, you can specify which form you want to fill using `fillForm([...], 'createPostForm')`. - -To check that a form has data, use `assertFormSet()`: - -```php -use Illuminate\Support\Str; -use function Pest\Livewire\livewire; - -it('can automatically generate a slug from the title', function () { - $title = fake()->sentence(); - - livewire(CreatePost::class) - ->fillForm([ - 'title' => $title, - ]) - ->assertFormSet([ - 'slug' => Str::slug($title), - ]); -}); -``` - -> If you have multiple forms on a Livewire component, you can specify which form you want to check using `assertFormSet([...], 'createPostForm')`. - -## Validation - -Use `assertHasFormErrors()` to ensure that data is properly validated in a form: - -```php -use function Pest\Livewire\livewire; - -it('can validate input', function () { - livewire(CreatePost::class) - ->fillForm([ - 'title' => null, - ]) - ->call('save') - ->assertHasFormErrors(['title' => 'required']); -}); -``` - -And `assertHasNoFormErrors()` to ensure there are no validation errors: - -```php -use function Pest\Livewire\livewire; - -livewire(CreatePost::class) - ->fillForm([ - 'title' => fake()->sentence(), - // ... - ]) - ->call('save') - ->assertHasNoFormErrors(); -``` - -> If you have multiple forms on a Livewire component, you can pass the name of a specific form as the second parameter like `assertHasFormErrors(['title' => 'required'], 'createPostForm')` or `assertHasNoFormErrors([], 'createPostForm')`. - -## Form existence - -To check that a Livewire component has a form, use `assertFormExists()`: - -```php -use function Pest\Livewire\livewire; - -it('has a form', function () { - livewire(CreatePost::class) - ->assertFormExists(); -}); -``` - -> If you have multiple forms on a Livewire component, you can pass the name of a specific form like `assertFormExists('createPostForm')`. - -## Fields - -To ensure that a form has a given field, pass the field name to `assertFormFieldExists()`: - -```php -use function Pest\Livewire\livewire; - -it('has a title field', function () { - livewire(CreatePost::class) - ->assertFormFieldExists('title'); -}); -``` - -You may pass a function as an additional argument in order to assert that a field passes a given "truth test". This is useful for asserting that a field has a specific configuration: - -```php -use function Pest\Livewire\livewire; - -it('has a title field', function () { - livewire(CreatePost::class) - ->assertFormFieldExists('title', function (TextInput $field): bool { - return $field->isDisabled(); - }); -}); -``` - -> If you have multiple forms on a Livewire component, you can specify which form you want to check for the existence of the field like `assertFormFieldExists('title', 'createPostForm')`. - -### Hidden fields - -To ensure that a field is visible, pass the name to `assertFormFieldIsVisible()`: - -```php -use function Pest\Livewire\livewire; - -test('title is visible', function () { - livewire(CreatePost::class) - ->assertFormFieldIsVisible('title'); -}); -``` - -Or to ensure that a field is hidden you can pass the name to `assertFormFieldIsHidden()`: - -```php -use function Pest\Livewire\livewire; - -test('title is hidden', function () { - livewire(CreatePost::class) - ->assertFormFieldIsHidden('title'); -}); -``` - -> For both `assertFormFieldIsHidden()` and `assertFormFieldIsVisible()` you can pass the name of a specific form the field belongs to as the second argument like `assertFormFieldIsHidden('title', 'createPostForm')`. - -### Disabled fields - -To ensure that a field is enabled, pass the name to `assertFormFieldIsEnabled()`: - -```php -use function Pest\Livewire\livewire; - -test('title is enabled', function () { - livewire(CreatePost::class) - ->assertFormFieldIsEnabled('title'); -}); -``` - -Or to ensure that a field is disabled you can pass the name to `assertFormFieldIsDisabled()`: - -```php -use function Pest\Livewire\livewire; - -test('title is disabled', function () { - livewire(CreatePost::class) - ->assertFormFieldIsDisabled('title'); -}); -``` - -> For both `assertFormFieldIsEnabled()` and `assertFormFieldIsDisabled()` you can pass the name of a specific form the field belongs to as the second argument like `assertFormFieldIsEnabled('title', 'createPostForm')`. - -## Actions - -You can call an action by passing its form component name, and then the name of the action to `callFormComponentAction()`: - -```php -use function Pest\Livewire\livewire; - -it('can send invoices', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->callFormComponentAction('customer_id', 'send'); - - expect($invoice->refresh()) - ->isSent()->toBeTrue(); -}); -``` - -To pass an array of data into an action, use the `data` parameter: - -```php -use function Pest\Livewire\livewire; - -it('can send invoices', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->callFormComponentAction('customer_id', 'send', data: [ - 'email' => $email = fake()->email(), - ]) - ->assertHasNoFormComponentActionErrors(); - - expect($invoice->refresh()) - ->isSent()->toBeTrue() - ->recipient_email->toBe($email); -}); -``` - -If you ever need to only set an action's data without immediately calling it, you can use `setFormComponentActionData()`: - -```php -use function Pest\Livewire\livewire; - -it('can send invoices', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->mountFormComponentAction('customer_id', 'send') - ->setFormComponentActionData('customer_id', 'send', data: [ - 'email' => $email = fake()->email(), - ]) -}); -``` - -### Execution - -To check if an action has been halted, you can use `assertFormComponentActionHalted()`: - -```php -use function Pest\Livewire\livewire; - -it('stops sending if invoice has no email address', function () { - $invoice = Invoice::factory(['email' => null])->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->callFormComponentAction('customer_id', 'send') - ->assertFormComponentActionHalted('customer_id', 'send'); -}); -``` - -### Errors - -`assertHasNoFormComponentActionErrors()` is used to assert that no validation errors occurred when submitting the action form. - -To check if a validation error has occurred with the data, use `assertHasFormComponentActionErrors()`, similar to `assertHasErrors()` in Livewire: - -```php -use function Pest\Livewire\livewire; - -it('can validate invoice recipient email', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->callFormComponentAction('customer_id', 'send', data: [ - 'email' => Str::random(), - ]) - ->assertHasFormComponentActionErrors(['email' => ['email']]); -}); -``` - -To check if an action is pre-filled with data, you can use the `assertFormComponentActionDataSet()` method: - -```php -use function Pest\Livewire\livewire; - -it('can send invoices to the primary contact by default', function () { - $invoice = Invoice::factory()->create(); - $recipientEmail = $invoice->company->primaryContact->email; - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->mountFormComponentAction('customer_id', 'send') - ->assertFormComponentActionDataSet([ - 'email' => $recipientEmail, - ]) - ->callMountedFormComponentAction() - ->assertHasNoFormComponentActionErrors(); - - expect($invoice->refresh()) - ->isSent()->toBeTrue() - ->recipient_email->toBe($recipientEmail); -}); -``` - -### Action state - -To ensure that an action exists or doesn't in a form, you can use the `assertFormComponentActionExists()` or `assertFormComponentActionDoesNotExist()` method: - -```php -use function Pest\Livewire\livewire; - -it('can send but not unsend invoices', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertFormComponentActionExists('customer_id', 'send') - ->assertFormComponentActionDoesNotExist('customer_id', 'unsend'); -}); -``` - -To ensure an action is hidden or visible for a user, you can use the `assertFormComponentActionHidden()` or `assertFormComponentActionVisible()` methods: - -```php -use function Pest\Livewire\livewire; - -it('can only print customers', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertFormComponentActionHidden('customer_id', 'send') - ->assertFormComponentActionVisible('customer_id', 'print'); -}); -``` - -To ensure an action is enabled or disabled for a user, you can use the `assertFormComponentActionEnabled()` or `assertFormComponentActionDisabled()` methods: - -```php -use function Pest\Livewire\livewire; - -it('can only print a customer for a sent invoice', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertFormComponentActionDisabled('customer_id', 'send') - ->assertFormComponentActionEnabled('customer_id', 'print'); -}); -``` - -To check if an action is hidden to a user, you can use the `assertFormComponentActionHidden()` method: - -```php -use function Pest\Livewire\livewire; - -it('can not send invoices', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertFormComponentActionHidden('customer_id', 'send'); -}); -``` - -### Button appearance - -To ensure an action has the correct label, you can use `assertFormComponentActionHasLabel()` and `assertFormComponentActionDoesNotHaveLabel()`: - -```php -use function Pest\Livewire\livewire; - -it('send action has correct label', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertFormComponentActionHasLabel('customer_id', 'send', 'Email Invoice') - ->assertFormComponentActionDoesNotHaveLabel('customer_id', 'send', 'Send'); -}); -``` - -To ensure an action's button is showing the correct icon, you can use `assertFormComponentActionHasIcon()` or `assertFormComponentActionDoesNotHaveIcon()`: - -```php -use function Pest\Livewire\livewire; - -it('when enabled the send button has correct icon', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertFormComponentActionEnabled('customer_id', 'send') - ->assertFormComponentActionHasIcon('customer_id', 'send', 'envelope-open') - ->assertFormComponentActionDoesNotHaveIcon('customer_id', 'send', 'envelope'); -}); -``` - -To ensure that an action's button is displaying the right color, you can use `assertFormComponentActionHasColor()` or `assertFormComponentActionDoesNotHaveColor()`: - -```php -use function Pest\Livewire\livewire; - -it('actions display proper colors', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertFormComponentActionHasColor('customer_id', 'delete', 'danger') - ->assertFormComponentActionDoesNotHaveColor('customer_id', 'print', 'danger'); -}); -``` - -### URL - -To ensure an action has the correct URL, you can use `assertFormComponentActionHasUrl()`, `assertFormComponentActionDoesNotHaveUrl()`, `assertFormComponentActionShouldOpenUrlInNewTab()`, and `assertFormComponentActionShouldNotOpenUrlInNewTab()`: - -```php -use function Pest\Livewire\livewire; - -it('links to the correct Filament sites', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertFormComponentActionHasUrl('customer_id', 'filament', 'https://filamentphp.com/') - ->assertFormComponentActionDoesNotHaveUrl('customer_id', 'filament', 'https://github.com/filamentphp/filament') - ->assertFormComponentActionShouldOpenUrlInNewTab('customer_id', 'filament') - ->assertFormComponentActionShouldNotOpenUrlInNewTab('customer_id', 'github'); -}); -``` diff --git a/vendor/filament/forms/docs/10-upgrade-guide.md b/vendor/filament/forms/docs/10-upgrade-guide.md deleted file mode 100644 index 1d319b82..00000000 --- a/vendor/filament/forms/docs/10-upgrade-guide.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Upgrading from v2.x ---- - -> If you see anything missing from this guide, please do not hesitate to [make a pull request](https://github.com/filamentphp/filament/edit/3.x/packages/forms/docs/10-upgrade-guide.md) to our repository! Any help is appreciated! - -## New requirements - -- Laravel v10.0+ -- Livewire v3.0+ - -Please upgrade Filament before upgrading to Livewire v3. Instructions on how to upgrade Livewire can be found [here](https://livewire.laravel.com/docs/upgrading). - -> **Livewire v3 is recently released!**
    -> The Livewire team have done a great job in making it stable, but it was a complete rewrite of Livewire v2. You may encounter issues, so we recommend testing your application thoroughly before using Filament v3 in production. - -## Upgrading automatically - -The easiest way to upgrade your app is to run the automated upgrade script. This script will automatically upgrade your application to the latest version of Filament, and make changes to your code which handle most breaking changes. - -```bash -composer require filament/upgrade:"^3.2" -W --dev -vendor/bin/filament-v3 -``` - -Make sure to carefully follow the instructions, and review the changes made by the script. You may need to make some manual changes to your code afterwards, but the script should handle most of the repetitive work for you. - -Finally, you must run `php artisan filament:install` to finalize the Filament v3 installation. This command must be run for all new Filament projects. - -You can now `composer remove filament/upgrade` as you don't need it anymore. - -> Some plugins you're using may not be available in v3 just yet. You could temporarily remove them from your `composer.json` file until they've been upgraded, replace them with a similar plugins that are v3-compatible, wait for the plugins to be upgraded before upgrading your app, or even write PRs to help the authors upgrade them. - -## Upgrading manually - -After upgrading the dependency via Composer, you should execute `php artisan filament:upgrade` in order to clear any Laravel caches and publish the new frontend assets. - -### High-impact changes - -#### Config file renamed and combined with other Filament packages - -Only one config file is now used for all Filament packages. Most configuration has been moved into other parts of the codebase, and little remains. You should use the v3 documentation as a reference when replace the configuration options you did modify. To publish the new configuration file and remove the old one, run: - -```bash -php artisan vendor:publish --tag=filament-config --force -rm config/forms.php -``` - -#### `FORMS_FILESYSTEM_DRIVER` .env variable - -The `FORMS_FILESYSTEM_DRIVER` .env variable has been renamed to `FILAMENT_FILESYSTEM_DISK`. This is to make it more consistent with Laravel, as Laravel v9 introduced this change as well. Please ensure that you update your .env files accordingly, and don't forget production! - -#### New `@filamentScripts` and `@filamentStyles` Blade directives - -The `@filamentScripts` and `@filamentStyles` Blade directives must be added to your Blade layout file/s. Since Livewire v3 no longer uses similar directives, you can replace `@livewireScripts` with `@filamentScripts` and `@livewireStyles` with `@filamentStyles`. - -#### CSS file removed - -The CSS file for form components, `module.esm.css`, has been removed. Check `resources/css/app.css`. That CSS is now automatically loaded by `@filamentStyles`. - -#### JavaScript files removed - -You no longer need to import the `FormsAlpinePlugin` in your JavaScript files. Alpine plugins are now automatically loaded by `@filamentScripts`. - -#### Heroicons have been updated to v2 - -The Heroicons library has been updated to v2. This means that any icons you use in your app may have changed names. You can find a list of changes [here](https://github.com/tailwindlabs/heroicons/releases/tag/v2.0.0). - -### Medium-impact changes - -#### Date-time pickers - -The date-time picker form field now uses the browser's native date picker by default. It usually has a better UX than the old date picker, but you may notice features missing, bad browser compatibility, or behavioural bugs. If you want to revert to the old date picker, you can use the `native(false)` method: - -```php -use Filament\Forms\Components\DateTimePicker; - -DateTimePicker::make('published_at') - ->native(false) -``` - -#### Secondary color - -Filament v2 had a `secondary` color for many components which was gray. All references to `secondary` should be replaced with `gray` to preserve the same appearance. This frees `secondary` to be registered to a new custom color of your choice. - -#### `$get` and `$set` closure parameters - -`$get` and `$set` parameters now use a type of either `\Filament\Forms\Get` or `\Filament\Forms\Set` instead of `\Closure`. This allows for better IDE autocomplete support of each function's parameters. - -An easy way to upgrade your code quickly is to find and replace: - -- `Closure $get` to `\Filament\Forms\Get $get` -- `Closure $set` to `\Filament\Forms\Set $set` - -#### `TextInput` masks now use Alpine.js' masking package - -Filament v2 had a fluent mask object syntax for managing input masks. In v3, you can use Alpine.js's masking syntax instead. Please see the [input masking documentation](fields/text-input#input-masking) for more information. - -### Low-impact changes - -#### Rule modification callback parameter renamed - -The parameter for modifying rule objects has been renamed to `modifyRuleUsing()`, affecting: - -- `exists()` -- `unique()` diff --git a/vendor/filament/forms/resources/css/components/date-time-picker.css b/vendor/filament/forms/resources/css/components/date-time-picker.css deleted file mode 100644 index bafe7c8c..00000000 --- a/vendor/filament/forms/resources/css/components/date-time-picker.css +++ /dev/null @@ -1,7 +0,0 @@ -/* Prevent excessive date input height in WebKit */ -/* https://github.com/twbs/bootstrap/issues/34433 */ - -input::-webkit-datetime-edit { - display: block; - padding: 0; -} diff --git a/vendor/filament/forms/resources/css/components/file-upload.css b/vendor/filament/forms/resources/css/components/file-upload.css deleted file mode 100644 index 7327eef9..00000000 --- a/vendor/filament/forms/resources/css/components/file-upload.css +++ /dev/null @@ -1,73 +0,0 @@ -@import 'cropperjs/dist/cropper.min.css'; -@import 'filepond/dist/filepond.min.css'; -@import 'filepond-plugin-image-edit/dist/filepond-plugin-image-edit.css'; -@import 'filepond-plugin-image-preview/dist/filepond-plugin-image-preview.css'; -@import 'filepond-plugin-media-preview/dist/filepond-plugin-media-preview.css'; - -.filepond--root { - @apply mb-0 rounded-lg bg-white shadow-sm ring-1 ring-gray-950/10 dark:bg-white/5 dark:ring-white/20; -} - -.filepond--root[data-disabled='disabled'] { - @apply bg-gray-50 dark:bg-transparent dark:ring-white/10; -} - -.filepond--panel-root { - @apply bg-transparent; -} - -.filepond--drop-label label { - @apply !p-3 text-sm text-gray-600 dark:text-gray-400; -} - -.filepond--label-action { - @apply font-medium text-primary-600 no-underline transition duration-75 hover:text-primary-500 dark:text-white dark:hover:text-primary-500; -} - -.filepond--drip-blob { - @apply bg-gray-400 dark:bg-gray-500; -} - -.filepond--root[data-style-panel-layout='grid'] .filepond--item { - @apply inline; - width: calc(50% - 0.5rem); -} - -@media screen(lg) { - .filepond--root[data-style-panel-layout='grid'] .filepond--item { - width: calc(33.33% - 0.5rem); - } -} - -.filepond--download-icon { - @apply pointer-events-auto me-1 inline-block h-4 w-4 bg-white align-bottom 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 pointer-events-auto me-1 inline-block h-4 w-4 bg-white align-bottom 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%; -} - -.filepond--file-action-button.filepond--action-edit-item { - @apply bg-black/50; -} - -.cropper-drag-box.cropper-crop.cropper-modal { - @apply bg-gray-100/50 opacity-100 dark:bg-gray-900/80; -} - -.fi-fo-file-upload-circle-cropper .cropper-view-box, -.fi-fo-file-upload-circle-cropper .cropper-face { - border-radius: 50%; -} diff --git a/vendor/filament/forms/resources/css/components/markdown-editor.css b/vendor/filament/forms/resources/css/components/markdown-editor.css deleted file mode 100644 index 3b8c1764..00000000 --- a/vendor/filament/forms/resources/css/components/markdown-editor.css +++ /dev/null @@ -1,298 +0,0 @@ -@import 'easymde/dist/easymde.min.css'; - -:root { - --color-cm-red: #991b1b; - --color-cm-orange: #9a3412; - --color-cm-amber: #92400e; - --color-cm-yellow: #854d0e; - --color-cm-lime: #3f6212; - --color-cm-green: #166534; - --color-cm-emerald: #065f46; - --color-cm-teal: #115e59; - --color-cm-cyan: #155e75; - --color-cm-sky: #075985; - --color-cm-blue: #1e40af; - --color-cm-indigo: #3730a3; - --color-cm-violet: #5b21b6; - --color-cm-purple: #6b21a8; - --color-cm-fuchsia: #86198f; - --color-cm-pink: #9d174d; - --color-cm-rose: #9f1239; - --color-cm-gray: #18181b; - --color-cm-gray-muted: #71717a; - --color-cm-gray-background: #e4e4e7; -} - -.dark { - --color-cm-red: #f87171; - --color-cm-orange: #fb923c; - --color-cm-amber: #fbbf24; - --color-cm-yellow: #facc15; - --color-cm-lime: #a3e635; - --color-cm-green: #4ade80; - --color-cm-emerald: #4ade80; - --color-cm-teal: #2dd4bf; - --color-cm-cyan: #22d3ee; - --color-cm-sky: #38bdf8; - --color-cm-blue: #60a5fa; - --color-cm-indigo: #818cf8; - --color-cm-violet: #a78bfa; - --color-cm-purple: #c084fc; - --color-cm-fuchsia: #e879f9; - --color-cm-pink: #f472b6; - --color-cm-rose: #fb7185; - --color-cm-gray: #fafafa; - --color-cm-gray-muted: #a1a1aa; - --color-cm-gray-background: #52525b; -} - -.cm-s-easymde .cm-comment { - background-color: transparent; - color: var(--color-cm-gray-muted); -} - -.EasyMDEContainer .CodeMirror-cursor { - border-color: currentColor; -} - -.dark .EasyMDEContainer .cm-s-easymde span.CodeMirror-selectedtext { - filter: invert(100%); -} - -.EasyMDEContainer .cm-s-easymde .cm-keyword { - color: var(--color-cm-violet); -} - -.EasyMDEContainer .cm-s-easymde .cm-atom { - color: var(--color-cm-blue); -} - -.EasyMDEContainer .cm-s-easymde .cm-number { - color: var(--color-cm-green); -} - -.EasyMDEContainer .cm-s-easymde .cm-def { - color: var(--color-cm-blue); -} - -.EasyMDEContainer .cm-s-easymde .cm-variable { - color: var(--color-cm-yellow); -} - -.EasyMDEContainer .cm-s-easymde .cm-variable-2 { - color: var(--color-cm-blue); -} - -.EasyMDEContainer .cm-s-easymde .cm-variable-3 { - color: var(--color-cm-emerald); -} - -.EasyMDEContainer .cm-s-easymde .cm-property { - color: var(--color-cm-gray); -} - -.EasyMDEContainer .cm-s-easymde .cm-operator { - color: var(--color-cm-gray); -} - -.EasyMDEContainer .cm-s-easymde .cm-string { - color: var(--color-cm-rose); -} - -.EasyMDEContainer .cm-s-easymde .cm-string-2 { - color: var(--color-cm-rose); -} - -.EasyMDEContainer .cm-s-easymde .cm-meta { - color: var(--color-cm-gray-muted); -} - -.EasyMDEContainer .cm-s-easymde .cm-error { - color: var(--color-cm-red); -} - -.EasyMDEContainer .cm-s-easymde .cm-qualifier { - color: var(--color-cm-gray-muted); -} - -.EasyMDEContainer .cm-s-easymde .cm-builtin { - color: var(--color-cm-violet); -} - -.EasyMDEContainer .cm-s-easymde .cm-bracket { - color: var(--color-cm-gray-muted); -} - -.EasyMDEContainer .cm-s-easymde .cm-tag { - color: var(--color-cm-green); -} - -.EasyMDEContainer .cm-s-easymde .cm-attribute { - color: var(--color-cm-blue); -} - -.EasyMDEContainer .cm-s-easymde .cm-hr { - color: var(--color-cm-gray-muted); -} - -.EasyMDEContainer .cm-s-easymde .cm-formatting-quote { - color: var(--color-cm-sky); -} - -.EasyMDEContainer .cm-s-easymde .cm-formatting-quote + .cm-quote { - color: var(--color-cm-gray-muted); -} - -.EasyMDEContainer .cm-s-easymde .cm-formatting-list, -.EasyMDEContainer .cm-s-easymde .cm-formatting-list + .cm-variable-2, -.EasyMDEContainer .cm-s-easymde .cm-tab + .cm-variable-2 { - color: var(--color-cm-gray); -} - -.EasyMDEContainer .cm-s-easymde .cm-link { - color: var(--color-cm-blue); -} - -.EasyMDEContainer .cm-s-easymde .cm-tag { - color: var(--color-cm-red); -} - -.EasyMDEContainer .cm-s-easymde .cm-attribute { - color: var(--color-cm-amber); -} - -.EasyMDEContainer .cm-s-easymde .cm-attribute + .cm-string { - color: var(--color-cm-green); -} - -.EasyMDEContainer - .cm-s-easymde - .cm-formatting-code - + .cm-comment:not(.cm-formatting-code) { - background-color: var(--color-cm-gray-background); - color: var(--color-cm-gray); -} - -.EasyMDEContainer .cm-s-easymde .cm-header-1 { - @apply text-3xl; -} - -.EasyMDEContainer .cm-s-easymde .cm-header-2 { - @apply text-2xl; -} - -.EasyMDEContainer .cm-s-easymde .cm-header-3 { - @apply text-xl; -} - -.EasyMDEContainer .cm-s-easymde .cm-header-4 { - @apply text-lg; -} - -.EasyMDEContainer .cm-s-easymde .cm-header-5 { - @apply text-base; -} - -.EasyMDEContainer .cm-s-easymde .cm-header-6 { - @apply text-sm; -} - -.EasyMDEContainer .cm-s-easymde .cm-comment { - @apply bg-none; -} - -.EasyMDEContainer .cm-s-easymde .cm-formatting-code-block, -.EasyMDEContainer .cm-s-easymde .cm-tab + .cm-comment { - @apply bg-transparent text-inherit; -} - -.EasyMDEContainer .CodeMirror { - @apply border-none bg-transparent px-3 py-1.5 text-inherit; -} - -.EasyMDEContainer .CodeMirror-scroll { - @apply h-auto; -} - -.EasyMDEContainer .editor-toolbar { - @apply flex gap-x-1 overflow-x-auto rounded-none border-0 border-b border-gray-200 px-2.5 py-2 dark:border-white/10; -} - -.EasyMDEContainer .editor-toolbar button { - @apply grid h-8 w-8 cursor-pointer place-content-center rounded-lg border-none p-0 transition duration-75 hover:bg-gray-50 focus-visible:bg-gray-50 dark:hover:bg-white/5 dark:focus-visible:bg-white/5; -} - -.EasyMDEContainer .editor-toolbar button.active { - @apply bg-gray-50 dark:bg-white/5; -} - -.EasyMDEContainer .editor-toolbar button::before { - @apply block h-4 w-4 bg-gray-700 dark:bg-gray-300; - content: ''; - mask-position: center; - mask-repeat: no-repeat; -} - -.EasyMDEContainer .editor-toolbar button.active::before { - @apply bg-primary-600 dark:bg-primary-400; -} - -.EasyMDEContainer .editor-toolbar .separator { - @apply !m-0 w-1 border-none; -} - -.EasyMDEContainer .editor-toolbar .bold::before { - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d%3D%22M321.1%20242.4C340.1%20220.1%20352%20191.6%20352%20160c0-70.59-57.42-128-128-128L32%2032.01c-17.67%200-32%2014.31-32%2032s14.33%2032%2032%2032h16v320H32c-17.67%200-32%2014.31-32%2032s14.33%2032%2032%2032h224c70.58%200%20128-57.41%20128-128C384%20305.3%20358.6%20264.8%20321.1%20242.4zM112%2096.01H224c35.3%200%2064%2028.72%2064%2064s-28.7%2064-64%2064H112V96.01zM256%20416H112v-128H256c35.3%200%2064%2028.71%2064%2063.1S291.3%20416%20256%20416z%22/%3E%3C/svg%3E"); -} - -.EasyMDEContainer .editor-toolbar .italic::before { - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3Cpath d%3D%22M384%2064.01c0%2017.69-14.31%2032-32%2032h-58.67l-133.3%20320H224c17.69%200%2032%2014.31%2032%2032s-14.31%2032-32%2032H32c-17.69%200-32-14.31-32-32s14.31-32%2032-32h58.67l133.3-320H160c-17.69%200-32-14.31-32-32s14.31-32%2032-32h192C369.7%2032.01%20384%2046.33%20384%2064.01z%22/%3E%3C/svg%3E"); -} - -.EasyMDEContainer .editor-toolbar .strikethrough::before { - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d%3D%22M332.2%20319.9c17.22%2012.17%2022.33%2026.51%2018.61%2048.21c-3.031%2017.59-10.88%2029.34-24.72%2036.99c-35.44%2019.75-108.5%2011.96-186-19.68c-16.34-6.686-35.03%201.156-41.72%2017.53s1.188%2035.05%2017.53%2041.71c31.75%2012.93%2095.69%2035.37%20157.6%2035.37c29.62%200%2058.81-5.156%2083.72-18.96c30.81-17.09%2050.44-45.46%2056.72-82.11c3.998-23.27%202.168-42.58-3.488-59.05H332.2zM488%20239.9l-176.5-.0309c-15.85-5.613-31.83-10.34-46.7-14.62c-85.47-24.62-110.9-39.05-103.7-81.33c2.5-14.53%2010.16-25.96%2022.72-34.03c20.47-13.15%2064.06-23.84%20155.4%20.3438c17.09%204.531%2034.59-5.654%2039.13-22.74c4.531-17.09-5.656-34.59-22.75-39.12c-91.31-24.18-160.7-21.62-206.3%207.654C121.8%2073.72%20103.6%20101.1%2098.09%20133.1C89.26%20184.5%20107.9%20217.3%20137.2%20239.9L24%20239.9c-13.25%200-24%2010.75-24%2023.1c0%2013.25%2010.75%2023.1%2024%2023.1h464c13.25%200%2024-10.75%2024-23.1C512%20250.7%20501.3%20239.9%20488%20239.9z%22/%3E%3C/svg%3E"); -} - -.EasyMDEContainer .editor-toolbar .link::before { - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d%3D%22M598.6%2041.41C570.1%2013.8%20534.8%200%20498.6%200s-72.36%2013.8-99.96%2041.41l-43.36%2043.36c15.11%208.012%2029.47%2017.58%2041.91%2030.02c3.146%203.146%205.898%206.518%208.742%209.838l37.96-37.96C458.5%2072.05%20477.1%2064%20498.6%2064c20.67%200%2040.1%208.047%2054.71%2022.66c14.61%2014.61%2022.66%2034.04%2022.66%2054.71s-8.049%2040.1-22.66%2054.71l-133.3%20133.3C405.5%20343.1%20386%20352%20365.4%20352s-40.1-8.048-54.71-22.66C296%20314.7%20287.1%20295.3%20287.1%20274.6s8.047-40.1%2022.66-54.71L314.2%20216.4C312.1%20212.5%20309.9%20208.5%20306.7%20205.3C298.1%20196.7%20286.8%20192%20274.6%20192c-11.93%200-23.1%204.664-31.61%2012.97c-30.71%2053.96-23.63%20123.6%2022.39%20169.6C293%20402.2%20329.2%20416%20365.4%20416c36.18%200%2072.36-13.8%2099.96-41.41L598.6%20241.3c28.45-28.45%2042.24-66.01%2041.37-103.3C639.1%20102.1%20625.4%2068.16%20598.6%2041.41zM234%20387.4L196.1%20425.3C181.5%20439.1%20162%20448%20141.4%20448c-20.67%200-40.1-8.047-54.71-22.66c-14.61-14.61-22.66-34.04-22.66-54.71s8.049-40.1%2022.66-54.71l133.3-133.3C234.5%20168%20253.1%20160%20274.6%20160s40.1%208.048%2054.71%2022.66c14.62%2014.61%2022.66%2034.04%2022.66%2054.71s-8.047%2040.1-22.66%2054.71L325.8%20295.6c2.094%203.939%204.219%207.895%207.465%2011.15C341.9%20315.3%20353.3%20320%20365.4%20320c11.93%200%2023.1-4.664%2031.61-12.97c30.71-53.96%2023.63-123.6-22.39-169.6C346.1%20109.8%20310.8%2096%20274.6%2096C238.4%2096%20202.3%20109.8%20174.7%20137.4L41.41%20270.7c-27.6%2027.6-41.41%2063.78-41.41%2099.96c-.0001%2036.18%2013.8%2072.36%2041.41%2099.97C69.01%20498.2%20105.2%20512%20141.4%20512c36.18%200%2072.36-13.8%2099.96-41.41l43.36-43.36c-15.11-8.012-29.47-17.58-41.91-30.02C239.6%20394.1%20236.9%20390.7%20234%20387.4z%22/%3E%3C/svg%3E"); -} - -.EasyMDEContainer .editor-toolbar .heading::before { - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d='M0 64C0 46.3 14.3 32 32 32H80h48c17.7 0 32 14.3 32 32s-14.3 32-32 32H112V208H336V96H320c-17.7 0-32-14.3-32-32s14.3-32 32-32h48 48c17.7 0 32 14.3 32 32s-14.3 32-32 32H400V240 416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H368 320c-17.7 0-32-14.3-32-32s14.3-32 32-32h16V272H112V416h16c17.7 0 32 14.3 32 32s-14.3 32-32 32H80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V240 96H32C14.3 96 0 81.7 0 64z'/%3E%3C/svg%3E"); -} - -.EasyMDEContainer .editor-toolbar .quote::before { - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3Cpath d%3D%22M96%20224C84.72%20224%2074.05%20226.3%2064%20229.9V224c0-35.3%2028.7-64%2064-64c17.67%200%2032-14.33%2032-32S145.7%2096%20128%2096C57.42%2096%200%20153.4%200%20224v96c0%2053.02%2042.98%2096%2096%2096s96-42.98%2096-96S149%20224%2096%20224zM352%20224c-11.28%200-21.95%202.305-32%205.879V224c0-35.3%2028.7-64%2064-64c17.67%200%2032-14.33%2032-32s-14.33-32-32-32c-70.58%200-128%2057.42-128%20128v96c0%2053.02%2042.98%2096%2096%2096s96-42.98%2096-96S405%20224%20352%20224z%22/%3E%3C/svg%3E"); -} - -.EasyMDEContainer .editor-toolbar .code::before { - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d%3D%22M416%2031.94C416%2021.75%20408.1%200%20384.1%200c-13.98%200-26.87%209.072-30.89%2023.18l-128%20448c-.8404%202.935-1.241%205.892-1.241%208.801C223.1%20490.3%20232%20512%20256%20512c13.92%200%2026.73-9.157%2030.75-23.22l128-448C415.6%2037.81%20416%2034.85%20416%2031.94zM176%20143.1c0-18.28-14.95-32-32-32c-8.188%200-16.38%203.125-22.62%209.376l-112%20112C3.125%20239.6%200%20247.8%200%20255.1S3.125%20272.4%209.375%20278.6l112%20112C127.6%20396.9%20135.8%20399.1%20144%20399.1c17.05%200%2032-13.73%2032-32c0-8.188-3.125-16.38-9.375-22.63L77.25%20255.1l89.38-89.38C172.9%20160.3%20176%20152.2%20176%20143.1zM640%20255.1c0-8.188-3.125-16.38-9.375-22.63l-112-112C512.4%20115.1%20504.2%20111.1%20496%20111.1c-17.05%200-32%2013.73-32%2032c0%208.188%203.125%2016.38%209.375%2022.63l89.38%2089.38l-89.38%2089.38C467.1%20351.6%20464%20359.8%20464%20367.1c0%2018.28%2014.95%2032%2032%2032c8.188%200%2016.38-3.125%2022.62-9.376l112-112C636.9%20272.4%20640%20264.2%20640%20255.1z%22/%3E%3C/svg%3E"); -} - -.EasyMDEContainer .editor-toolbar .unordered-list::before { - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d%3D%22M16%2096C16%2069.49%2037.49%2048%2064%2048C90.51%2048%20112%2069.49%20112%2096C112%20122.5%2090.51%20144%2064%20144C37.49%20144%2016%20122.5%2016%2096zM480%2064C497.7%2064%20512%2078.33%20512%2096C512%20113.7%20497.7%20128%20480%20128H192C174.3%20128%20160%20113.7%20160%2096C160%2078.33%20174.3%2064%20192%2064H480zM480%20224C497.7%20224%20512%20238.3%20512%20256C512%20273.7%20497.7%20288%20480%20288H192C174.3%20288%20160%20273.7%20160%20256C160%20238.3%20174.3%20224%20192%20224H480zM480%20384C497.7%20384%20512%20398.3%20512%20416C512%20433.7%20497.7%20448%20480%20448H192C174.3%20448%20160%20433.7%20160%20416C160%20398.3%20174.3%20384%20192%20384H480zM16%20416C16%20389.5%2037.49%20368%2064%20368C90.51%20368%20112%20389.5%20112%20416C112%20442.5%2090.51%20464%2064%20464C37.49%20464%2016%20442.5%2016%20416zM112%20256C112%20282.5%2090.51%20304%2064%20304C37.49%20304%2016%20282.5%2016%20256C16%20229.5%2037.49%20208%2064%20208C90.51%20208%20112%20229.5%20112%20256z%22/%3E%3C/svg%3E"); -} - -.EasyMDEContainer .editor-toolbar .ordered-list::before { - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d%3D%22M55.1%2056.04C55.1%2042.78%2066.74%2032.04%2079.1%2032.04H111.1C125.3%2032.04%20135.1%2042.78%20135.1%2056.04V176H151.1C165.3%20176%20175.1%20186.8%20175.1%20200C175.1%20213.3%20165.3%20224%20151.1%20224H71.1C58.74%20224%2047.1%20213.3%2047.1%20200C47.1%20186.8%2058.74%20176%2071.1%20176H87.1V80.04H79.1C66.74%2080.04%2055.1%2069.29%2055.1%2056.04V56.04zM118.7%20341.2C112.1%20333.8%20100.4%20334.3%2094.65%20342.4L83.53%20357.9C75.83%20368.7%2060.84%20371.2%2050.05%20363.5C39.26%20355.8%2036.77%20340.8%2044.47%20330.1L55.59%20314.5C79.33%20281.2%20127.9%20278.8%20154.8%20309.6C176.1%20333.1%20175.6%20370.5%20153.7%20394.3L118.8%20432H152C165.3%20432%20176%20442.7%20176%20456C176%20469.3%20165.3%20480%20152%20480H64C54.47%20480%2045.84%20474.4%2042.02%20465.6C38.19%20456.9%2039.9%20446.7%2046.36%20439.7L118.4%20361.7C123.7%20355.9%20123.8%20347.1%20118.7%20341.2L118.7%20341.2zM512%2064C529.7%2064%20544%2078.33%20544%2096C544%20113.7%20529.7%20128%20512%20128H256C238.3%20128%20224%20113.7%20224%2096C224%2078.33%20238.3%2064%20256%2064H512zM512%20224C529.7%20224%20544%20238.3%20544%20256C544%20273.7%20529.7%20288%20512%20288H256C238.3%20288%20224%20273.7%20224%20256C224%20238.3%20238.3%20224%20256%20224H512zM512%20384C529.7%20384%20544%20398.3%20544%20416C544%20433.7%20529.7%20448%20512%20448H256C238.3%20448%20224%20433.7%20224%20416C224%20398.3%20238.3%20384%20256%20384H512z%22/%3E%3C/svg%3E"); -} - -.EasyMDEContainer .editor-toolbar .table::before { - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1792 1792'%3E%3Cpath d%3D%22M576%201376v-192q0-14-9-23t-23-9h-320q-14%200-23%209t-9%2023v192q0%2014%209%2023t23%209h320q14%200%2023-9t9-23zm0-384v-192q0-14-9-23t-23-9h-320q-14%200-23%209t-9%2023v192q0%2014%209%2023t23%209h320q14%200%2023-9t9-23zm512%20384v-192q0-14-9-23t-23-9h-320q-14%200-23%209t-9%2023v192q0%2014%209%2023t23%209h320q14%200%2023-9t9-23zm-512-768v-192q0-14-9-23t-23-9h-320q-14%200-23%209t-9%2023v192q0%2014%209%2023t23%209h320q14%200%2023-9t9-23zm512%20384v-192q0-14-9-23t-23-9h-320q-14%200-23%209t-9%2023v192q0%2014%209%2023t23%209h320q14%200%2023-9t9-23zm512%20384v-192q0-14-9-23t-23-9h-320q-14%200-23%209t-9%2023v192q0%2014%209%2023t23%209h320q14%200%2023-9t9-23zm-512-768v-192q0-14-9-23t-23-9h-320q-14%200-23%209t-9%2023v192q0%2014%209%2023t23%209h320q14%200%2023-9t9-23zm512%20384v-192q0-14-9-23t-23-9h-320q-14%200-23%209t-9%2023v192q0%2014%209%2023t23%209h320q14%200%2023-9t9-23zm0-384v-192q0-14-9-23t-23-9h-320q-14%200-23%209t-9%2023v192q0%2014%209%2023t23%209h320q14%200%2023-9t9-23zm128-320v1088q0%2066-47%20113t-113%2047h-1344q-66%200-113-47t-47-113v-1088q0-66%2047-113t113-47h1344q66%200%20113%2047t47%20113z%22/%3E%3C/svg%3E"); -} - -.EasyMDEContainer .editor-toolbar .upload-image::before { - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d%3D%22M447.1%2032h-484C28.64%2032-.0091%2060.65-.0091%2096v320c0%2035.35%2028.65%2064%2063.1%2064h384c35.35%200%2064-28.65%2064-64V96C511.1%2060.65%20483.3%2032%20447.1%2032zM111.1%2096c26.51%200%2048%2021.49%2048%2048S138.5%20192%20111.1%20192s-48-21.49-48-48S85.48%2096%20111.1%2096zM446.1%20407.6C443.3%20412.8%20437.9%20416%20432%20416H82.01c-6.021%200-11.53-3.379-14.26-8.75c-2.73-5.367-2.215-11.81%201.334-16.68l70-96C142.1%20290.4%20146.9%20288%20152%20288s9.916%202.441%2012.93%206.574l32.46%2044.51l93.3-139.1C293.7%20194.7%20298.7%20192%20304%20192s10.35%202.672%2013.31%207.125l128%20192C448.6%20396%20448.9%20402.3%20446.1%20407.6z%22/%3E%3C/svg%3E"); -} - -.EasyMDEContainer .editor-toolbar .undo::before { - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d%3D%22M480%20256c0%20123.4-100.5%20223.9-223.9%20223.9c-48.84%200-95.17-15.58-134.2-44.86c-14.12-10.59-16.97-30.66-6.375-44.81c10.59-14.12%2030.62-16.94%2044.81-6.375c27.84%2020.91%2061%2031.94%2095.88%2031.94C344.3%20415.8%20416%20344.1%20416%20256s-71.69-159.8-159.8-159.8c-37.46%200-73.09%2013.49-101.3%2036.64l45.12%2045.14c17.01%2017.02%204.955%2046.1-19.1%2046.1H35.17C24.58%20224.1%2016%20215.5%2016%20204.9V59.04c0-24.04%2029.07-36.08%2046.07-19.07l47.6%2047.63C149.9%2052.71%20201.5%2032.11%20256.1%2032.11C379.5%2032.11%20480%20132.6%20480%20256z%22/%3E%3C/svg%3E"); -} - -.EasyMDEContainer .editor-toolbar .redo::before { - mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d%3D%22M468.9%2032.11c13.87%200%2027.18%2010.77%2027.18%2027.04v145.9c0%2010.59-8.584%2019.17-19.17%2019.17h-145.7c-16.28%200-27.06-13.32-27.06-27.2c0-6.634%202.461-13.4%207.96-18.9l45.12-45.14c-28.22-23.14-63.85-36.64-101.3-36.64c-88.09%200-159.8%2071.69-159.8%20159.8S167.8%20415.9%20255.9%20415.9c73.14%200%2089.44-38.31%20115.1-38.31c18.48%200%2031.97%2015.04%2031.97%2031.96c0%2035.04-81.59%2070.41-147%2070.41c-123.4%200-223.9-100.5-223.9-223.9S132.6%2032.44%20256%2032.44c54.6%200%20106.2%2020.39%20146.4%2055.26l47.6-47.63C455.5%2034.57%20462.3%2032.11%20468.9%2032.11z%22/%3E%3C/svg%3E"); -} - -.EasyMDEContainer .editor-statusbar { - @apply hidden; -} diff --git a/vendor/filament/forms/resources/css/components/rich-editor.css b/vendor/filament/forms/resources/css/components/rich-editor.css deleted file mode 100644 index 9e76d4c3..00000000 --- a/vendor/filament/forms/resources/css/components/rich-editor.css +++ /dev/null @@ -1,52 +0,0 @@ -.fi-fo-rich-editor trix-toolbar .trix-dialogs { - position: relative; -} - -.fi-fo-rich-editor trix-toolbar .trix-dialog { - @apply absolute inset-x-0 bottom-auto top-4 rounded-lg bg-gray-50 p-2 shadow-md dark:bg-gray-800; -} - -.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields { - @apply flex w-full flex-col gap-2; -} - -.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-button-group { - @apply flex gap-2; -} - -.fi-fo-rich-editor trix-toolbar .trix-dialog__link-fields .trix-input { - @apply block w-full rounded-md border-none bg-white py-1.5 pe-3 ps-3 text-sm text-gray-950 outline-none ring-1 ring-gray-950/10 transition duration-75 placeholder:text-gray-400 focus-within:ring-primary-600 dark:bg-gray-700 dark:text-white dark:ring-white/20 dark:placeholder:text-gray-500 dark:focus-within:ring-primary-600 sm:text-sm sm:leading-6; -} - -.fi-fo-rich-editor - trix-toolbar - .trix-dialog__link-fields - .trix-button-group - .trix-button { - @apply rounded-md bg-gray-50 px-2 py-0.5 text-xs ring-1 ring-gray-200 dark:bg-gray-700 dark:ring-gray-600; -} - -.fi-fo-rich-editor trix-editor:empty::before { - @apply text-gray-400 dark:text-gray-500; - content: attr(placeholder); -} - -/* Add RTL support */ -/* https://github.com/tailwindlabs/tailwindcss-typography/pull/306 */ - -.fi-fo-rich-editor - trix-editor.prose - :where(ul):not(:where([class~='not-prose'] *)), -.fi-fo-rich-editor - trix-editor.prose - :where(ol):not(:where([class~='not-prose'] *)) { - padding-inline-start: 1.625em !important; - padding-inline-end: 0 !important; -} - -.fi-fo-rich-editor - trix-editor.prose - :where(ul > li):not(:where([class~='not-prose'] *)) { - padding-inline-start: 0.375em !important; - padding-inline-end: 0 !important; -} diff --git a/vendor/filament/forms/resources/css/components/select.css b/vendor/filament/forms/resources/css/components/select.css deleted file mode 100644 index d043065b..00000000 --- a/vendor/filament/forms/resources/css/components/select.css +++ /dev/null @@ -1,171 +0,0 @@ -select:not(.choices) { - 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"); -} - -[dir='rtl'] select { - background-position: left 0.5rem center !important; -} - -.choices { - @apply relative outline-none; -} - -.choices [hidden] { - @apply !hidden; -} - -.choices[data-type*='select-one'] .has-no-choices { - @apply hidden; -} - -.choices[data-type*='select-one'] .choices__input { - @apply m-0 block w-full; -} - -.choices__inner { - @apply bg-no-repeat py-1.5 pe-8 ps-3 outline-none sm:text-sm sm:leading-6; - 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; -} - -.choices.is-disabled .choices__inner { - @apply cursor-default; -} - -[dir='rtl'] .choices__inner { - background-position: left 0.5rem center; -} - -.choices__list--single { - @apply inline-block; -} - -.choices__list--single .choices__item { - @apply text-gray-950 dark:text-white; -} - -.choices.is-disabled .choices__list--single .choices__item { - @apply text-gray-500 dark:text-gray-400; -} - -.choices__list--multiple { - @apply flex flex-wrap gap-1.5; -} - -.choices__list--multiple:not(:empty) { - @apply -mx-1 mb-1 py-0.5; -} - -.choices__list--multiple .choices__item { - @apply inline-flex items-center gap-1 break-all rounded-md bg-primary-50 px-2 py-1 text-xs font-medium text-primary-600 ring-1 ring-inset ring-primary-600/10 dark:bg-primary-400/10 dark:text-primary-400 dark:ring-primary-400/30; -} - -.choices__list--dropdown, -.choices__list[aria-expanded] { - @apply absolute top-full z-10 mt-2 hidden w-full overflow-hidden break-words rounded-lg bg-white text-sm shadow-lg ring-1 ring-gray-950/5 will-change-[visibility] dark:bg-gray-900 dark:ring-white/10; -} - -.is-active.choices__list--dropdown, -.is-active.choices__list[aria-expanded] { - @apply block p-1; -} - -.choices__list--dropdown .choices__list, -.choices__list[aria-expanded] .choices__list { - @apply max-h-60 overflow-auto will-change-scroll; -} - -.choices__item--choice { - @apply p-2 text-gray-500 transition-colors duration-75 dark:text-gray-400; -} - -.choices__item--choice.choices__item--selectable { - @apply rounded-md text-gray-950 dark:text-white; -} - -.choices__list--dropdown .choices__item--selectable.is-highlighted, -.choices__list[aria-expanded] .choices__item--selectable.is-highlighted { - @apply bg-gray-50 dark:bg-white/5; -} - -.choices__item { - @apply cursor-default; -} - -.choices__item--disabled { - @apply pointer-events-none disabled:text-gray-500 dark:disabled:text-gray-400; -} - -.choices__placeholder.choices__item, -.choices.is-disabled .choices__placeholder.choices__item { - @apply cursor-default text-gray-400 dark:text-gray-500; -} - -.choices__button { - @apply border-0 bg-transparent bg-center bg-no-repeat indent-[-9999px] outline-none; -} - -.choices[data-type*='select-one'] .choices__button { - @apply absolute end-0 me-9 h-4 w-4 p-0 opacity-50 transition-opacity duration-75 dark:opacity-40; - background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg=='); - background-size: 0.7142em 0.7142em; - top: calc(50% - 0.5714em); -} - -.dark .choices[data-type*='select-one'] .choices__button { - background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg=='); -} - -.choices[data-type*='select-multiple'] .choices__button { - @apply h-4 w-4 opacity-50 dark:opacity-40; - background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg=='); - background-size: 0.7142em 0.7142em; -} - -.dark .choices[data-type*='select-multiple'] .choices__button { - background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg=='); -} - -.choices[data-type*='select-one'] .choices__button:hover, -.choices[data-type*='select-one'] .choices__button:focus-visible, -.choices[data-type*='select-multiple'] .choices__button:hover, -.choices[data-type*='select-multiple'] .choices__button:focus-visible { - @apply opacity-70 dark:opacity-60; -} - -.choices[data-type*='select-one'] - .choices__item[data-value=''] - .choices__button { - @apply hidden; -} - -.choices.is-disabled .choices__button { - @apply hidden; -} - -/* !important is used to override default Tailwind input styling */ - -.choices__input { - @apply border-none !bg-transparent !p-0 !text-base text-gray-950 transition duration-75 placeholder:text-gray-400 focus-visible:!ring-0 disabled:text-gray-500 disabled:[-webkit-text-fill-color:theme(colors.gray[500])] dark:text-white dark:placeholder:text-gray-500 dark:disabled:text-gray-400 dark:disabled:[-webkit-text-fill-color:theme(colors.gray[400])] sm:!text-sm sm:leading-6; -} - -.choices__list--dropdown .choices__input { - @apply !px-2 !py-2; -} - -.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 h-0 w-0; -} - -.choices__group { - @apply px-2 pb-2 pt-4 text-gray-500 first:pt-2 dark:text-gray-400; -} diff --git a/vendor/filament/forms/resources/css/components/tags-input.css b/vendor/filament/forms/resources/css/components/tags-input.css deleted file mode 100644 index ea396c47..00000000 --- a/vendor/filament/forms/resources/css/components/tags-input.css +++ /dev/null @@ -1,3 +0,0 @@ -.webkit-calendar-picker-indicator\:opacity-0::-webkit-calendar-picker-indicator { - @apply opacity-0; -} diff --git a/vendor/filament/forms/resources/js/components/color-picker.js b/vendor/filament/forms/resources/js/components/color-picker.js deleted file mode 100644 index 1f1eb371..00000000 --- a/vendor/filament/forms/resources/js/components/color-picker.js +++ /dev/null @@ -1,90 +0,0 @@ -import 'vanilla-colorful/hex-color-picker.js' -import 'vanilla-colorful/hsl-string-color-picker.js' -import 'vanilla-colorful/rgb-string-color-picker.js' -import 'vanilla-colorful/rgba-string-color-picker.js' - -export default function colorPickerFormComponent({ - isAutofocused, - isDisabled, - isLive, - isLiveDebounced, - isLiveOnBlur, - liveDebounce, - state, -}) { - return { - state, - - init: function () { - if (!(this.state === null || this.state === '')) { - this.setState(this.state) - } - - if (isAutofocused) { - this.togglePanelVisibility(this.$refs.input) - } - - this.$refs.input.addEventListener('change', (event) => { - this.setState(event.target.value) - }) - - this.$refs.panel.addEventListener('color-changed', (event) => { - this.setState(event.detail.value) - - if (isLiveOnBlur || !(isLive || isLiveDebounced)) { - return - } - - setTimeout( - () => { - if (this.state !== event.detail.value) { - return - } - - this.commitState() - }, - isLiveDebounced ? liveDebounce : 250, - ) - }) - - if (isLive || isLiveDebounced || isLiveOnBlur) { - new MutationObserver(() => - this.isOpen() ? null : this.commitState(), - ).observe(this.$refs.panel, { - attributes: true, - childList: true, - }) - } - }, - - togglePanelVisibility: function () { - if (isDisabled) { - return - } - - this.$refs.panel.toggle(this.$refs.input) - }, - - setState: function (value) { - this.state = value - - this.$refs.input.value = value - this.$refs.panel.color = value - }, - - isOpen: function () { - return this.$refs.panel.style.display === 'block' - }, - - commitState: function () { - if ( - JSON.stringify(this.$wire.__instance.canonical) === - JSON.stringify(this.$wire.__instance.ephemeral) - ) { - return - } - - this.$wire.$commit() - }, - } -} diff --git a/vendor/filament/forms/resources/js/components/date-time-picker.js b/vendor/filament/forms/resources/js/components/date-time-picker.js deleted file mode 100644 index cfc86615..00000000 --- a/vendor/filament/forms/resources/js/components/date-time-picker.js +++ /dev/null @@ -1,515 +0,0 @@ -import dayjs from 'dayjs/esm' -import customParseFormat from 'dayjs/plugin/customParseFormat' -import localeData from 'dayjs/plugin/localeData' -import timezone from 'dayjs/plugin/timezone' -import utc from 'dayjs/plugin/utc' - -dayjs.extend(customParseFormat) -dayjs.extend(localeData) -dayjs.extend(timezone) -dayjs.extend(utc) - -window.dayjs = dayjs - -export default function dateTimePickerFormComponent({ - displayFormat, - firstDayOfWeek, - isAutofocused, - locale, - shouldCloseOnDateSelection, - state, -}) { - const timezone = dayjs.tz.guess() - - return { - daysInFocusedMonth: [], - - displayText: '', - - emptyDaysInFocusedMonth: [], - - focusedDate: null, - - focusedMonth: null, - - focusedYear: null, - - hour: null, - - isClearingState: false, - - minute: null, - - second: null, - - state, - - dayLabels: [], - - months: [], - - init: function () { - dayjs.locale(locales[locale] ?? locales['en']) - - this.focusedDate = dayjs().tz(timezone) - - let date = - this.getSelectedDate() ?? - dayjs().tz(timezone).hour(0).minute(0).second(0) - - if (this.getMaxDate() !== null && date.isAfter(this.getMaxDate())) { - date = null - } else if ( - this.getMinDate() !== null && - date.isBefore(this.getMinDate()) - ) { - date = null - } - - this.hour = date?.hour() ?? 0 - this.minute = date?.minute() ?? 0 - this.second = date?.second() ?? 0 - - this.setDisplayText() - this.setMonths() - this.setDayLabels() - - if (isAutofocused) { - this.$nextTick(() => - this.togglePanelVisibility(this.$refs.button), - ) - } - - this.$watch('focusedMonth', () => { - this.focusedMonth = +this.focusedMonth - - if (this.focusedDate.month() === this.focusedMonth) { - return - } - - this.focusedDate = this.focusedDate.month(this.focusedMonth) - }) - - this.$watch('focusedYear', () => { - if (this.focusedYear?.length > 4) { - this.focusedYear = this.focusedYear.substring(0, 4) - } - - if (!this.focusedYear || this.focusedYear?.length !== 4) { - return - } - - let year = +this.focusedYear - - if (!Number.isInteger(year)) { - year = dayjs().tz(timezone).year() - - this.focusedYear = year - } - - if (this.focusedDate.year() === year) { - return - } - - this.focusedDate = this.focusedDate.year(year) - }) - - this.$watch('focusedDate', () => { - let month = this.focusedDate.month() - let year = this.focusedDate.year() - - if (this.focusedMonth !== month) { - this.focusedMonth = month - } - - if (this.focusedYear !== year) { - this.focusedYear = year - } - - this.setupDaysGrid() - }) - - this.$watch('hour', () => { - let hour = +this.hour - - if (!Number.isInteger(hour)) { - this.hour = 0 - } else if (hour > 23) { - this.hour = 0 - } else if (hour < 0) { - this.hour = 23 - } else { - this.hour = hour - } - - if (this.isClearingState) { - return - } - - let date = this.getSelectedDate() ?? this.focusedDate - - this.setState(date.hour(this.hour ?? 0)) - }) - - this.$watch('minute', () => { - let minute = +this.minute - - if (!Number.isInteger(minute)) { - this.minute = 0 - } else if (minute > 59) { - this.minute = 0 - } else if (minute < 0) { - this.minute = 59 - } else { - this.minute = minute - } - - if (this.isClearingState) { - return - } - - let date = this.getSelectedDate() ?? this.focusedDate - - this.setState(date.minute(this.minute ?? 0)) - }) - - this.$watch('second', () => { - let second = +this.second - - if (!Number.isInteger(second)) { - this.second = 0 - } else if (second > 59) { - this.second = 0 - } else if (second < 0) { - this.second = 59 - } else { - this.second = second - } - - if (this.isClearingState) { - return - } - - let date = this.getSelectedDate() ?? this.focusedDate - - this.setState(date.second(this.second ?? 0)) - }) - - this.$watch('state', () => { - if (this.state === undefined) { - return - } - - let date = this.getSelectedDate() - - if (date === null) { - this.clearState() - - return - } - - if ( - this.getMaxDate() !== null && - date?.isAfter(this.getMaxDate()) - ) { - date = null - } - if ( - this.getMinDate() !== null && - date?.isBefore(this.getMinDate()) - ) { - date = null - } - - const newHour = date?.hour() ?? 0 - if (this.hour !== newHour) { - this.hour = newHour - } - - const newMinute = date?.minute() ?? 0 - if (this.minute !== newMinute) { - this.minute = newMinute - } - - const newSecond = date?.second() ?? 0 - if (this.second !== newSecond) { - this.second = newSecond - } - - this.setDisplayText() - }) - }, - - clearState: function () { - this.isClearingState = true - - this.setState(null) - - this.hour = 0 - this.minute = 0 - this.second = 0 - - this.$nextTick(() => (this.isClearingState = false)) - }, - - dateIsDisabled: function (date) { - if ( - this.$refs?.disabledDates && - JSON.parse(this.$refs.disabledDates.value ?? []).some( - (disabledDate) => { - disabledDate = dayjs(disabledDate) - - if (!disabledDate.isValid()) { - return false - } - - return disabledDate.isSame(date, 'day') - }, - ) - ) { - return true - } - - if (this.getMaxDate() && date.isAfter(this.getMaxDate(), 'day')) { - return true - } - if (this.getMinDate() && date.isBefore(this.getMinDate(), 'day')) { - return true - } - - return false - }, - - dayIsDisabled: function (day) { - this.focusedDate ??= dayjs().tz(timezone) - - return this.dateIsDisabled(this.focusedDate.date(day)) - }, - - dayIsSelected: function (day) { - let selectedDate = this.getSelectedDate() - - if (selectedDate === null) { - return false - } - - this.focusedDate ??= dayjs().tz(timezone) - - return ( - selectedDate.date() === day && - selectedDate.month() === this.focusedDate.month() && - selectedDate.year() === this.focusedDate.year() - ) - }, - - dayIsToday: function (day) { - let date = dayjs().tz(timezone) - this.focusedDate ??= date - - return ( - date.date() === day && - date.month() === this.focusedDate.month() && - date.year() === this.focusedDate.year() - ) - }, - - focusPreviousDay: function () { - this.focusedDate ??= dayjs().tz(timezone) - - this.focusedDate = this.focusedDate.subtract(1, 'day') - }, - - focusPreviousWeek: function () { - this.focusedDate ??= dayjs().tz(timezone) - - this.focusedDate = this.focusedDate.subtract(1, 'week') - }, - - focusNextDay: function () { - this.focusedDate ??= dayjs().tz(timezone) - - this.focusedDate = this.focusedDate.add(1, 'day') - }, - - focusNextWeek: function () { - this.focusedDate ??= dayjs().tz(timezone) - - this.focusedDate = this.focusedDate.add(1, 'week') - }, - - getDayLabels: function () { - const labels = dayjs.weekdaysShort() - - if (firstDayOfWeek === 0) { - return labels - } - - return [ - ...labels.slice(firstDayOfWeek), - ...labels.slice(0, firstDayOfWeek), - ] - }, - - getMaxDate: function () { - let date = dayjs(this.$refs.maxDate?.value) - - return date.isValid() ? date : null - }, - - getMinDate: function () { - let date = dayjs(this.$refs.minDate?.value) - - return date.isValid() ? date : null - }, - - getSelectedDate: function () { - if (this.state === undefined) { - return null - } - - if (this.state === null) { - return null - } - - let date = dayjs(this.state) - - if (!date.isValid()) { - return null - } - - return date - }, - - togglePanelVisibility: function () { - if (!this.isOpen()) { - this.focusedDate = - this.getSelectedDate() ?? - this.getMinDate() ?? - dayjs().tz(timezone) - - this.setupDaysGrid() - } - - this.$refs.panel.toggle(this.$refs.button) - }, - - selectDate: function (day = null) { - if (day) { - this.setFocusedDay(day) - } - - this.focusedDate ??= dayjs().tz(timezone) - - this.setState(this.focusedDate) - - if (shouldCloseOnDateSelection) { - this.togglePanelVisibility() - } - }, - - setDisplayText: function () { - this.displayText = this.getSelectedDate() - ? this.getSelectedDate().format(displayFormat) - : '' - }, - - setMonths: function () { - this.months = dayjs.months() - }, - - setDayLabels: function () { - this.dayLabels = this.getDayLabels() - }, - - setupDaysGrid: function () { - this.focusedDate ??= dayjs().tz(timezone) - - this.emptyDaysInFocusedMonth = Array.from( - { - length: this.focusedDate.date(8 - firstDayOfWeek).day(), - }, - (_, i) => i + 1, - ) - - this.daysInFocusedMonth = Array.from( - { - length: this.focusedDate.daysInMonth(), - }, - (_, i) => i + 1, - ) - }, - - setFocusedDay: function (day) { - this.focusedDate = (this.focusedDate ?? dayjs().tz(timezone)).date( - day, - ) - }, - - setState: function (date) { - if (date === null) { - this.state = null - this.setDisplayText() - - return - } - - if (this.dateIsDisabled(date)) { - return - } - - this.state = date - .hour(this.hour ?? 0) - .minute(this.minute ?? 0) - .second(this.second ?? 0) - .format('YYYY-MM-DD HH:mm:ss') - - this.setDisplayText() - }, - - isOpen: function () { - return this.$refs.panel?.style.display === 'block' - }, - } -} - -const locales = { - ar: require('dayjs/locale/ar'), - bs: require('dayjs/locale/bs'), - ca: require('dayjs/locale/ca'), - ckb: require('dayjs/locale/ku'), - cs: require('dayjs/locale/cs'), - cy: require('dayjs/locale/cy'), - da: require('dayjs/locale/da'), - de: require('dayjs/locale/de'), - en: require('dayjs/locale/en'), - es: require('dayjs/locale/es'), - et: require('dayjs/locale/et'), - fa: require('dayjs/locale/fa'), - fi: require('dayjs/locale/fi'), - fr: require('dayjs/locale/fr'), - hi: require('dayjs/locale/hi'), - hu: require('dayjs/locale/hu'), - hy: require('dayjs/locale/hy-am'), - id: require('dayjs/locale/id'), - it: require('dayjs/locale/it'), - ja: require('dayjs/locale/ja'), - ka: require('dayjs/locale/ka'), - km: require('dayjs/locale/km'), - ku: require('dayjs/locale/ku'), - lt: require('dayjs/locale/lt'), - lv: require('dayjs/locale/lv'), - ms: require('dayjs/locale/ms'), - my: require('dayjs/locale/my'), - nl: require('dayjs/locale/nl'), - pl: require('dayjs/locale/pl'), - pt_BR: require('dayjs/locale/pt-br'), - pt_PT: require('dayjs/locale/pt'), - ro: require('dayjs/locale/ro'), - ru: require('dayjs/locale/ru'), - sv: require('dayjs/locale/sv'), - tr: require('dayjs/locale/tr'), - uk: require('dayjs/locale/uk'), - vi: require('dayjs/locale/vi'), - zh_CN: require('dayjs/locale/zh-cn'), - zh_TW: require('dayjs/locale/zh-tw'), -} diff --git a/vendor/filament/forms/resources/js/components/file-upload.js b/vendor/filament/forms/resources/js/components/file-upload.js deleted file mode 100644 index 8a4ec0bf..00000000 --- a/vendor/filament/forms/resources/js/components/file-upload.js +++ /dev/null @@ -1,765 +0,0 @@ -import * as FilePond from 'filepond' -import Cropper from 'cropperjs' -import FilePondPluginFileValidateSize from 'filepond-plugin-file-validate-size' -import FilePondPluginFileValidateType from 'filepond-plugin-file-validate-type' -import FilePondPluginImageCrop from 'filepond-plugin-image-crop' -import FilePondPluginImageEdit from 'filepond-plugin-image-edit' -import FilePondPluginImageExifOrientation from 'filepond-plugin-image-exif-orientation' -import FilePondPluginImagePreview from 'filepond-plugin-image-preview' -import FilePondPluginImageResize from 'filepond-plugin-image-resize' -import FilePondPluginImageTransform from 'filepond-plugin-image-transform' -import FilePondPluginMediaPreview from 'filepond-plugin-media-preview' - -FilePond.registerPlugin(FilePondPluginFileValidateSize) -FilePond.registerPlugin(FilePondPluginFileValidateType) -FilePond.registerPlugin(FilePondPluginImageCrop) -FilePond.registerPlugin(FilePondPluginImageEdit) -FilePond.registerPlugin(FilePondPluginImageExifOrientation) -FilePond.registerPlugin(FilePondPluginImagePreview) -FilePond.registerPlugin(FilePondPluginImageResize) -FilePond.registerPlugin(FilePondPluginImageTransform) -FilePond.registerPlugin(FilePondPluginMediaPreview) - -window.FilePond = FilePond - -export default function fileUploadFormComponent({ - acceptedFileTypes, - imageEditorEmptyFillColor, - imageEditorMode, - imageEditorViewportHeight, - imageEditorViewportWidth, - deleteUploadedFileUsing, - isDeletable, - isDisabled, - getUploadedFilesUsing, - imageCropAspectRatio, - imagePreviewHeight, - imageResizeMode, - imageResizeTargetHeight, - imageResizeTargetWidth, - imageResizeUpscale, - isAvatar, - hasImageEditor, - hasCircleCropper, - canEditSvgs, - isSvgEditingConfirmed, - confirmSvgEditingMessage, - disabledSvgEditingMessage, - isDownloadable, - isMultiple, - isOpenable, - isPreviewable, - isReorderable, - loadingIndicatorPosition, - locale, - maxFiles, - maxSize, - minSize, - panelAspectRatio, - panelLayout, - placeholder, - removeUploadedFileButtonPosition, - removeUploadedFileUsing, - reorderUploadedFilesUsing, - shouldAppendFiles, - shouldOrientImageFromExif, - shouldTransformImage, - state, - uploadButtonPosition, - uploadingMessage, - uploadProgressIndicatorPosition, - uploadUsing, -}) { - return { - fileKeyIndex: {}, - - pond: null, - - shouldUpdateState: true, - - state, - - lastState: null, - - uploadedFileIndex: {}, - - isEditorOpen: false, - - editingFile: {}, - - currentRatio: '', - - editor: {}, - - init: async function () { - FilePond.setOptions(locales[locale] ?? locales['en']) - - this.pond = FilePond.create(this.$refs.input, { - acceptedFileTypes, - allowImageExifOrientation: shouldOrientImageFromExif, - allowPaste: false, - allowRemove: isDeletable, - allowReorder: isReorderable, - allowImagePreview: isPreviewable, - allowVideoPreview: isPreviewable, - allowAudioPreview: isPreviewable, - allowImageTransform: shouldTransformImage, - credits: false, - files: await this.getFiles(), - imageCropAspectRatio, - imagePreviewHeight, - imageResizeTargetHeight, - imageResizeTargetWidth, - imageResizeMode, - imageResizeUpscale, - itemInsertLocation: shouldAppendFiles ? 'after' : 'before', - ...(placeholder && { labelIdle: placeholder }), - maxFiles, - maxFileSize: maxSize, - minFileSize: minSize, - styleButtonProcessItemPosition: uploadButtonPosition, - styleButtonRemoveItemPosition: removeUploadedFileButtonPosition, - styleLoadIndicatorPosition: loadingIndicatorPosition, - stylePanelAspectRatio: panelAspectRatio, - stylePanelLayout: panelLayout, - styleProgressIndicatorPosition: uploadProgressIndicatorPosition, - server: { - load: async (source, load) => { - let response = await fetch(source, { - cache: 'no-store', - }) - let blob = await response.blob() - - load(blob) - }, - process: ( - fieldName, - file, - metadata, - load, - error, - progress, - ) => { - this.shouldUpdateState = false - - let fileKey = ( - [1e7] + - -1e3 + - -4e3 + - -8e3 + - -1e11 - ).replace(/[018]/g, (c) => - ( - c ^ - (crypto.getRandomValues(new Uint8Array(1))[0] & - (15 >> (c / 4))) - ).toString(16), - ) - - uploadUsing( - fileKey, - file, - (fileKey) => { - this.shouldUpdateState = true - - load(fileKey) - }, - error, - progress, - ) - }, - remove: async (source, load) => { - let fileKey = this.uploadedFileIndex[source] ?? null - - if (!fileKey) { - return - } - - await deleteUploadedFileUsing(fileKey) - - load() - }, - revert: async (uniqueFileId, load) => { - await removeUploadedFileUsing(uniqueFileId) - - load() - }, - }, - allowImageEdit: hasImageEditor, - imageEditEditor: { - open: (file) => this.loadEditor(file), - onconfirm: () => {}, - oncancel: () => this.closeEditor(), - onclose: () => this.closeEditor(), - }, - }) - - this.$watch('state', async () => { - if (!this.pond) { - return - } - - if (!this.shouldUpdateState) { - return - } - - if (this.state === undefined) { - return - } - - // We don't want to overwrite the files that are already in the input, if they haven't been saved yet. - if ( - this.state !== null && - Object.values(this.state).filter((file) => - file.startsWith('livewire-file:'), - ).length - ) { - this.lastState = null - - return - } - - // Don't do anything if the state hasn't changed - if (JSON.stringify(this.state) === this.lastState) { - return - } - - this.lastState = JSON.stringify(this.state) - - this.pond.files = await this.getFiles() - }) - - this.pond.on('reorderfiles', async (files) => { - const orderedFileKeys = files - .map((file) => - file.source instanceof File - ? file.serverId - : this.uploadedFileIndex[file.source] ?? null, - ) // file.serverId is null for a file that is not yet uploaded - .filter((fileKey) => fileKey) - - await reorderUploadedFilesUsing( - shouldAppendFiles - ? orderedFileKeys - : orderedFileKeys.reverse(), - ) - }) - - this.pond.on('initfile', async (fileItem) => { - if (!isDownloadable) { - return - } - - if (isAvatar) { - return - } - - this.insertDownloadLink(fileItem) - }) - - this.pond.on('initfile', async (fileItem) => { - if (!isOpenable) { - return - } - - if (isAvatar) { - return - } - - this.insertOpenLink(fileItem) - }) - - this.pond.on('addfilestart', async (file) => { - if (file.status !== FilePond.FileStatus.PROCESSING_QUEUED) { - return - } - - this.dispatchFormEvent('form-processing-started', { - message: uploadingMessage, - }) - }) - - const handleFileProcessing = async () => { - if ( - this.pond - .getFiles() - .filter( - (file) => - file.status === - FilePond.FileStatus.PROCESSING || - file.status === - FilePond.FileStatus.PROCESSING_QUEUED, - ).length - ) { - return - } - - this.dispatchFormEvent('form-processing-finished') - } - - this.pond.on('processfile', handleFileProcessing) - - this.pond.on('processfileabort', handleFileProcessing) - - this.pond.on('processfilerevert', handleFileProcessing) - }, - - destroy: function () { - this.destroyEditor() - - FilePond.destroy(this.$refs.input) - this.pond = null - }, - - dispatchFormEvent: function (name, detail = {}) { - this.$el.closest('form')?.dispatchEvent( - new CustomEvent(name, { - composed: true, - cancelable: true, - detail, - }), - ) - }, - - getUploadedFiles: async function () { - const uploadedFiles = await getUploadedFilesUsing() - - this.fileKeyIndex = uploadedFiles ?? {} - - this.uploadedFileIndex = Object.entries(this.fileKeyIndex) - .filter(([key, value]) => value?.url) - .reduce((obj, [key, value]) => { - obj[value.url] = key - - return obj - }, {}) - }, - - getFiles: async function () { - await this.getUploadedFiles() - - let files = [] - - for (const uploadedFile of Object.values(this.fileKeyIndex)) { - if (!uploadedFile) { - continue - } - - files.push({ - source: uploadedFile.url, - options: { - type: 'local', - ...(!uploadedFile.type || - /^image/.test(uploadedFile.type) - ? {} - : { - file: { - name: uploadedFile.name, - size: uploadedFile.size, - type: uploadedFile.type, - }, - }), - }, - }) - } - - return shouldAppendFiles ? files : files.reverse() - }, - - insertDownloadLink: function (file) { - if (file.origin !== FilePond.FileOrigin.LOCAL) { - return - } - - const anchor = this.getDownloadLink(file) - - if (!anchor) { - return - } - - document - .getElementById(`filepond--item-${file.id}`) - .querySelector('.filepond--file-info-main') - .prepend(anchor) - }, - - insertOpenLink: function (file) { - if (file.origin !== FilePond.FileOrigin.LOCAL) { - return - } - - const anchor = this.getOpenLink(file) - - if (!anchor) { - return - } - - document - .getElementById(`filepond--item-${file.id}`) - .querySelector('.filepond--file-info-main') - .prepend(anchor) - }, - - getDownloadLink: function (file) { - let fileSource = file.source - - if (!fileSource) { - return - } - - const anchor = document.createElement('a') - anchor.className = 'filepond--download-icon' - anchor.href = fileSource - anchor.download = file.file.name - - return anchor - }, - - getOpenLink: function (file) { - let fileSource = file.source - - if (!fileSource) { - return - } - - const anchor = document.createElement('a') - anchor.className = 'filepond--open-icon' - anchor.href = fileSource - anchor.target = '_blank' - - return anchor - }, - - initEditor: function () { - if (isDisabled) { - return - } - - if (!hasImageEditor) { - return - } - - this.editor = new Cropper(this.$refs.editor, { - aspectRatio: - imageEditorViewportWidth / imageEditorViewportHeight, - autoCropArea: 1, - center: true, - crop: (event) => { - this.$refs.xPositionInput.value = Math.round(event.detail.x) - this.$refs.yPositionInput.value = Math.round(event.detail.y) - this.$refs.heightInput.value = Math.round( - event.detail.height, - ) - this.$refs.widthInput.value = Math.round(event.detail.width) - this.$refs.rotationInput.value = event.detail.rotate - }, - cropBoxResizable: true, - guides: true, - highlight: true, - responsive: true, - toggleDragModeOnDblclick: true, - viewMode: imageEditorMode, - wheelZoomRatio: 0.02, - }) - }, - - closeEditor: function () { - this.editingFile = {} - - this.isEditorOpen = false - - this.destroyEditor() - }, - - fixImageDimensions: function (file, callback) { - if (file.type !== 'image/svg+xml') { - return callback(file) - } - - const svgReader = new FileReader() - - svgReader.onload = (event) => { - const svgElement = new DOMParser() - .parseFromString(event.target.result, 'image/svg+xml') - ?.querySelector('svg') - - if (!svgElement) { - return callback(file) - } - - const viewBoxAttribute = ['viewBox', 'ViewBox', 'viewbox'].find( - (attribute) => svgElement.hasAttribute(attribute), - ) - - if (!viewBoxAttribute) { - return callback(file) - } - - const viewBox = svgElement - .getAttribute(viewBoxAttribute) - .split(' ') - - if (!viewBox || viewBox.length !== 4) { - return callback(file) - } - - svgElement.setAttribute('width', parseFloat(viewBox[2]) + 'pt') - svgElement.setAttribute('height', parseFloat(viewBox[3]) + 'pt') - - return callback( - new File( - [ - new Blob( - [ - new XMLSerializer().serializeToString( - svgElement, - ), - ], - { type: 'image/svg+xml' }, - ), - ], - file.name, - { - type: 'image/svg+xml', - _relativePath: '', - }, - ), - ) - } - - svgReader.readAsText(file) - }, - - loadEditor: function (file) { - if (isDisabled) { - return - } - - if (!hasImageEditor) { - return - } - - if (!file) { - return - } - - const isFileSvg = file.type === 'image/svg+xml' - - if (!canEditSvgs && isFileSvg) { - alert(disabledSvgEditingMessage) - - return - } - - if ( - isSvgEditingConfirmed && - isFileSvg && - !confirm(confirmSvgEditingMessage) - ) { - return - } - - this.fixImageDimensions(file, (editingFile) => { - this.editingFile = editingFile - - this.initEditor() - - const reader = new FileReader() - - reader.onload = (event) => { - this.isEditorOpen = true - - setTimeout( - () => this.editor.replace(event.target.result), - 200, - ) - } - - reader.readAsDataURL(file) - }) - }, - - getRoundedCanvas: function (sourceCanvas) { - let width = sourceCanvas.width - let height = sourceCanvas.height - - let canvas = document.createElement('canvas') - canvas.width = width - canvas.height = height - - let context = canvas.getContext('2d') - context.imageSmoothingEnabled = true - context.drawImage(sourceCanvas, 0, 0, width, height) - context.globalCompositeOperation = 'destination-in' - context.beginPath() - context.ellipse( - width / 2, - height / 2, - width / 2, - height / 2, - 0, - 0, - 2 * Math.PI, - ) - context.fill() - - return canvas - }, - - saveEditor: function () { - if (isDisabled) { - return - } - - if (!hasImageEditor) { - return - } - - let croppedCanvas = this.editor.getCroppedCanvas({ - fillColor: imageEditorEmptyFillColor ?? 'transparent', - height: imageResizeTargetHeight, - imageSmoothingEnabled: true, - imageSmoothingQuality: 'high', - width: imageResizeTargetWidth, - }) - - if (hasCircleCropper) { - croppedCanvas = this.getRoundedCanvas(croppedCanvas) - } - - croppedCanvas.toBlob( - (croppedImage) => { - if (isMultiple) { - this.pond.removeFile( - this.pond - .getFiles() - .find( - (uploadedFile) => - uploadedFile.filename === - this.editingFile.name, - )?.id, - { revert: true }, - ) - } - - this.$nextTick(() => { - this.shouldUpdateState = false - - let editingFileName = this.editingFile.name.slice( - 0, - this.editingFile.name.lastIndexOf('.'), - ) - let editingFileExtension = this.editingFile.name - .split('.') - .pop() - - if (editingFileExtension === 'svg') { - editingFileExtension = 'png' - } - - const fileNameVersionRegex = /-v(\d+)/ - - if (fileNameVersionRegex.test(editingFileName)) { - editingFileName = editingFileName.replace( - fileNameVersionRegex, - (match, number) => { - const newNumber = Number(number) + 1 - - return `-v${newNumber}` - }, - ) - } else { - editingFileName += '-v1' - } - - this.pond - .addFile( - new File( - [croppedImage], - `${editingFileName}.${editingFileExtension}`, - { - type: - this.editingFile.type === - 'image/svg+xml' || - hasCircleCropper - ? 'image/png' - : this.editingFile.type, - lastModified: new Date().getTime(), - }, - ), - ) - .then(() => { - this.closeEditor() - }) - .catch(() => { - this.closeEditor() - }) - }) - }, - hasCircleCropper ? 'image/png' : this.editingFile.type, - ) - }, - - destroyEditor: function () { - if (this.editor && typeof this.editor.destroy === 'function') { - this.editor.destroy() - } - - this.editor = null - }, - } -} - -import ar from 'filepond/locale/ar-ar' -import cs from 'filepond/locale/cs-cz' -import da from 'filepond/locale/da-dk' -import de from 'filepond/locale/de-de' -import en from 'filepond/locale/en-en' -import es from 'filepond/locale/es-es' -import fa from 'filepond/locale/fa_ir' -import fi from 'filepond/locale/fi-fi' -import fr from 'filepond/locale/fr-fr' -import hu from 'filepond/locale/hu-hu' -import id from 'filepond/locale/id-id' -import it from 'filepond/locale/it-it' -import nl from 'filepond/locale/nl-nl' -import no from 'filepond/locale/no_nb' -import pl from 'filepond/locale/pl-pl' -import pt_BR from 'filepond/locale/pt-br' -import pt_PT from 'filepond/locale/pt-br' -import ro from 'filepond/locale/ro-ro' -import ru from 'filepond/locale/ru-ru' -import sv from 'filepond/locale/sv_se' -import tr from 'filepond/locale/tr-tr' -import uk from 'filepond/locale/uk-ua' -import vi from 'filepond/locale/vi-vi' -import zh_CN from 'filepond/locale/zh-cn' -import zh_TW from 'filepond/locale/zh-tw' - -const locales = { - ar, - cs, - da, - de, - en, - es, - fa, - fi, - fr, - hu, - id, - it, - nl, - no, - pl, - pt_BR, - pt_PT, - ro, - ru, - sv, - tr, - uk, - vi, - zh_CN, - zh_TW, -} diff --git a/vendor/filament/forms/resources/js/components/key-value.js b/vendor/filament/forms/resources/js/components/key-value.js deleted file mode 100644 index d6a2fc5f..00000000 --- a/vendor/filament/forms/resources/js/components/key-value.js +++ /dev/null @@ -1,110 +0,0 @@ -export default function keyValueFormComponent({ state }) { - return { - state, - - rows: [], - - shouldUpdateRows: true, - - init: function () { - this.updateRows() - - if (this.rows.length <= 0) { - this.rows.push({ key: '', value: '' }) - } else { - this.updateState() - } - - this.$watch('state', (state, oldState) => { - const getLength = (value) => { - if (value === null) { - return 0 - } - - if (Array.isArray(value)) { - return value.length - } - - if (typeof value !== 'object') { - return 0 - } - - return Object.keys(value).length - } - - if (getLength(state) === 0 && getLength(oldState) === 0) { - return - } - - this.updateRows() - }) - }, - - addRow: function () { - this.rows.push({ key: '', value: '' }) - - this.updateState() - }, - - deleteRow: function (index) { - this.rows.splice(index, 1) - - if (this.rows.length <= 0) { - this.addRow() - } - - this.updateState() - }, - - reorderRows: function (event) { - const rows = Alpine.raw(this.rows) - - const reorderedRow = rows.splice(event.oldIndex, 1)[0] - rows.splice(event.newIndex, 0, reorderedRow) - - this.rows = rows - - this.updateState() - }, - - updateRows: function () { - if (!this.shouldUpdateRows) { - this.shouldUpdateRows = true - - return - } - - let rows = [] - - for (let [key, value] of Object.entries(this.state ?? {})) { - rows.push({ - key, - value, - }) - } - - this.rows = rows - }, - - updateState: function () { - let state = {} - - this.rows.forEach((row) => { - if (row.key === '' || row.key === null) { - return - } - - state[row.key] = row.value - }) - - // This is a hack to prevent the component from updating rows again - // after a state update, which would otherwise be done by the `state` - // watcher. If rows are updated again, duplicate keys are removed. - // - // https://github.com/filamentphp/filament/issues/1107 - this.shouldUpdateRows = false - - this.state = state - }, - } -} diff --git a/vendor/filament/forms/resources/js/components/markdown-editor.js b/vendor/filament/forms/resources/js/components/markdown-editor.js deleted file mode 100644 index 8f59b80a..00000000 --- a/vendor/filament/forms/resources/js/components/markdown-editor.js +++ /dev/null @@ -1,366 +0,0 @@ -window.CodeMirror = require('codemirror/lib/codemirror') - -require('codemirror') -require('codemirror/addon/mode/overlay') -require('codemirror/addon/edit/continuelist') -require('codemirror/addon/display/placeholder') -require('codemirror/addon/selection/mark-selection') -require('codemirror/addon/search/searchcursor') -require('codemirror/mode/clike/clike') -require('codemirror/mode/cmake/cmake') -require('codemirror/mode/css/css') -require('codemirror/mode/diff/diff') -require('codemirror/mode/django/django') -require('codemirror/mode/dockerfile/dockerfile') -require('codemirror/mode/gfm/gfm') -require('codemirror/mode/go/go') -require('codemirror/mode/htmlmixed/htmlmixed') -require('codemirror/mode/http/http') -require('codemirror/mode/javascript/javascript') -require('codemirror/mode/jinja2/jinja2') -require('codemirror/mode/jsx/jsx') -require('codemirror/mode/markdown/markdown') -require('codemirror/mode/nginx/nginx') -require('codemirror/mode/pascal/pascal') -require('codemirror/mode/perl/perl') -require('codemirror/mode/php/php') -require('codemirror/mode/protobuf/protobuf') -require('codemirror/mode/python/python') -require('codemirror/mode/ruby/ruby') -require('codemirror/mode/rust/rust') -require('codemirror/mode/sass/sass') -require('codemirror/mode/shell/shell') -require('codemirror/mode/sql/sql') -require('codemirror/mode/stylus/stylus') -require('codemirror/mode/swift/swift') -require('codemirror/mode/vue/vue') -require('codemirror/mode/xml/xml') -require('codemirror/mode/yaml/yaml') - -require('./markdown-editor/EasyMDE') - -CodeMirror.commands.tabAndIndentMarkdownList = function (codemirror) { - var ranges = codemirror.listSelections() - var pos = ranges[0].head - var eolState = codemirror.getStateAfter(pos.line) - var inList = eolState.list !== false - - if (inList) { - codemirror.execCommand('indentMore') - return - } - - if (codemirror.options.indentWithTabs) { - codemirror.execCommand('insertTab') - - return - } - - var spaces = Array(codemirror.options.tabSize + 1).join(' ') - codemirror.replaceSelection(spaces) -} - -CodeMirror.commands.shiftTabAndUnindentMarkdownList = function (codemirror) { - var ranges = codemirror.listSelections() - var pos = ranges[0].head - var eolState = codemirror.getStateAfter(pos.line) - var inList = eolState.list !== false - - if (inList) { - codemirror.execCommand('indentLess') - - return - } - - if (codemirror.options.indentWithTabs) { - codemirror.execCommand('insertTab') - - return - } - - var spaces = Array(codemirror.options.tabSize + 1).join(' ') - codemirror.replaceSelection(spaces) -} - -export default function markdownEditorFormComponent({ - isLiveDebounced, - isLiveOnBlur, - liveDebounce, - placeholder, - state, - translations, - toolbarButtons, - uploadFileAttachmentUsing, -}) { - return { - editor: null, - - state, - - init: async function () { - if (this.$root._editor) { - this.$root._editor.toTextArea() - this.$root._editor = null - } - - this.$root._editor = this.editor = new EasyMDE({ - autoDownloadFontAwesome: false, - autoRefresh: true, - autoSave: false, - element: this.$refs.editor, - imageAccept: 'image/png, image/jpeg, image/gif, image/avif', - imageUploadFunction: uploadFileAttachmentUsing, - initialValue: this.state ?? '', - minHeight: '11.25rem', - placeholder, - previewImagesInEditor: true, - spellChecker: false, - status: [ - { - className: 'upload-image', - defaultValue: '', - }, - ], - toolbar: this.getToolbar(), - uploadImage: true, - }) - - this.editor.codemirror.setOption( - 'direction', - document.documentElement?.dir ?? 'ltr', - ) - - // When creating a link, highlight the URL instead of the label: - this.editor.codemirror.on('changes', (instance, changes) => { - try { - const lastChange = changes[changes.length - 1] - - if (lastChange.origin === '+input') { - const urlPlaceholder = '(https://)' - const urlLineText = - lastChange.text[lastChange.text.length - 1] - - if ( - urlLineText.endsWith(urlPlaceholder) && - urlLineText !== '[]' + urlPlaceholder - ) { - const from = lastChange.from - const to = lastChange.to - const isSelectionMultiline = - lastChange.text.length > 1 - const baseIndex = isSelectionMultiline ? 0 : from.ch - - setTimeout(() => { - instance.setSelection( - { - line: to.line, - ch: - baseIndex + - urlLineText.lastIndexOf('(') + - 1, - }, - { - line: to.line, - ch: - baseIndex + - urlLineText.lastIndexOf(')'), - }, - ) - }, 25) - } - } - } catch (error) { - // Revert to original behaviour. - } - }) - - this.editor.codemirror.on( - 'change', - Alpine.debounce(() => { - if (!this.editor) { - return - } - - this.state = this.editor.value() - - if (isLiveDebounced) { - this.$wire.call('$refresh') - } - }, liveDebounce ?? 300), - ) - - if (isLiveOnBlur) { - this.editor.codemirror.on('blur', () => - this.$wire.call('$refresh'), - ) - } - - this.$watch('state', () => { - if (!this.editor) { - return - } - - if (this.editor.codemirror.hasFocus()) { - return - } - - Alpine.raw(this.editor).value(this.state ?? '') - }) - }, - - destroy: function () { - this.editor.cleanup() - this.editor = null - }, - - getToolbar: function () { - let toolbar = [] - - if (toolbarButtons.includes('bold')) { - toolbar.push({ - name: 'bold', - action: EasyMDE.toggleBold, - title: translations.toolbar_buttons?.bold, - }) - } - - if (toolbarButtons.includes('italic')) { - toolbar.push({ - name: 'italic', - action: EasyMDE.toggleItalic, - title: translations.toolbar_buttons?.italic, - }) - } - - if (toolbarButtons.includes('strike')) { - toolbar.push({ - name: 'strikethrough', - action: EasyMDE.toggleStrikethrough, - title: translations.toolbar_buttons?.strike, - }) - } - - if (toolbarButtons.includes('link')) { - toolbar.push({ - name: 'link', - action: EasyMDE.drawLink, - title: translations.toolbar_buttons?.link, - }) - } - - if ( - ['bold', 'italic', 'strike', 'link'].some((button) => - toolbarButtons.includes(button), - ) && - ['heading'].some((button) => toolbarButtons.includes(button)) - ) { - toolbar.push('|') - } - - if (toolbarButtons.includes('heading')) { - toolbar.push({ - name: 'heading', - action: EasyMDE.toggleHeadingSmaller, - title: translations.toolbar_buttons?.heading, - }) - } - - if ( - ['heading'].some((button) => toolbarButtons.includes(button)) && - ['blockquote', 'codeBlock', 'bulletList', 'orderedList'].some( - (button) => toolbarButtons.includes(button), - ) - ) { - toolbar.push('|') - } - - if (toolbarButtons.includes('blockquote')) { - toolbar.push({ - name: 'quote', - action: EasyMDE.toggleBlockquote, - title: translations.toolbar_buttons?.blockquote, - }) - } - - if (toolbarButtons.includes('codeBlock')) { - toolbar.push({ - name: 'code', - action: EasyMDE.toggleCodeBlock, - title: translations.toolbar_buttons?.code_block, - }) - } - - if (toolbarButtons.includes('bulletList')) { - toolbar.push({ - name: 'unordered-list', - action: EasyMDE.toggleUnorderedList, - title: translations.toolbar_buttons?.bullet_list, - }) - } - - if (toolbarButtons.includes('orderedList')) { - toolbar.push({ - name: 'ordered-list', - action: EasyMDE.toggleOrderedList, - title: translations.toolbar_buttons?.ordered_list, - }) - } - - if ( - ['blockquote', 'codeBlock', 'bulletList', 'orderedList'].some( - (button) => toolbarButtons.includes(button), - ) && - ['table', 'attachFiles'].some((button) => - toolbarButtons.includes(button), - ) - ) { - toolbar.push('|') - } - - if (toolbarButtons.includes('table')) { - toolbar.push({ - name: 'table', - action: EasyMDE.drawTable, - title: translations.toolbar_buttons?.table, - }) - } - - if (toolbarButtons.includes('attachFiles')) { - toolbar.push({ - name: 'upload-image', - action: EasyMDE.drawUploadedImage, - title: translations.toolbar_buttons?.attach_files, - }) - } - - if ( - ['table', 'attachFiles'].some((button) => - toolbarButtons.includes(button), - ) && - ['undo', 'redo'].some((button) => - toolbarButtons.includes(button), - ) - ) { - toolbar.push('|') - } - - if (toolbarButtons.includes('undo')) { - toolbar.push({ - name: 'undo', - action: EasyMDE.undo, - title: translations.toolbar_buttons?.undo, - }) - } - - if (toolbarButtons.includes('redo')) { - toolbar.push({ - name: 'redo', - action: EasyMDE.redo, - title: translations.toolbar_buttons?.redo, - }) - } - - return toolbar - }, - } -} diff --git a/vendor/filament/forms/resources/js/components/markdown-editor/EasyMDE.js b/vendor/filament/forms/resources/js/components/markdown-editor/EasyMDE.js deleted file mode 100644 index e221b280..00000000 --- a/vendor/filament/forms/resources/js/components/markdown-editor/EasyMDE.js +++ /dev/null @@ -1,3467 +0,0 @@ -/** - * Source: https://github.com/Ionaru/easy-markdown-editor/blob/master/src/js/easymde.js - * Changes: - * - Removal of line 1 to 15, awaiting https://github.com/Ionaru/easy-markdown-editor/pull/263 - */ - -// Some variables -var isMac = /Mac/.test(navigator.platform) -var anchorToExternalRegex = new RegExp(/()+?/g) - -// Mapping of actions that can be bound to keyboard shortcuts or toolbar buttons -var bindings = { - toggleBold: toggleBold, - toggleItalic: toggleItalic, - drawLink: drawLink, - toggleHeadingSmaller: toggleHeadingSmaller, - toggleHeadingBigger: toggleHeadingBigger, - drawImage: drawImage, - toggleBlockquote: toggleBlockquote, - toggleOrderedList: toggleOrderedList, - toggleUnorderedList: toggleUnorderedList, - toggleCodeBlock: toggleCodeBlock, - togglePreview: togglePreview, - toggleStrikethrough: toggleStrikethrough, - toggleHeading1: toggleHeading1, - toggleHeading2: toggleHeading2, - toggleHeading3: toggleHeading3, - toggleHeading4: toggleHeading4, - toggleHeading5: toggleHeading5, - toggleHeading6: toggleHeading6, - cleanBlock: cleanBlock, - drawTable: drawTable, - drawHorizontalRule: drawHorizontalRule, - undo: undo, - redo: redo, - toggleSideBySide: toggleSideBySide, - toggleFullScreen: toggleFullScreen, -} - -var shortcuts = { - toggleBold: 'Cmd-B', - toggleItalic: 'Cmd-I', - drawLink: 'Cmd-K', - toggleHeadingSmaller: 'Cmd-H', - toggleHeadingBigger: 'Shift-Cmd-H', - toggleHeading1: 'Ctrl+Alt+1', - toggleHeading2: 'Ctrl+Alt+2', - toggleHeading3: 'Ctrl+Alt+3', - toggleHeading4: 'Ctrl+Alt+4', - toggleHeading5: 'Ctrl+Alt+5', - toggleHeading6: 'Ctrl+Alt+6', - cleanBlock: 'Cmd-E', - drawImage: 'Cmd-Alt-I', - toggleBlockquote: "Cmd-'", - toggleOrderedList: 'Cmd-Alt-L', - toggleUnorderedList: 'Cmd-L', - toggleCodeBlock: 'Cmd-Alt-C', - togglePreview: 'Cmd-P', - toggleSideBySide: 'F9', - toggleFullScreen: 'F11', -} - -var getBindingName = function (f) { - for (var key in bindings) { - if (bindings[key] === f) { - return key - } - } - return null -} - -var isMobile = function () { - var check = false - ;(function (a) { - if ( - /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test( - a, - ) || - /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test( - a.substr(0, 4), - ) - ) - check = true - })(navigator.userAgent || navigator.vendor || window.opera) - return check -} - -/** - * Modify HTML to add 'target="_blank"' to links so they open in new tabs by default. - * @param {string} htmlText - HTML to be modified. - * @return {string} The modified HTML text. - */ -function addAnchorTargetBlank(htmlText) { - var match - while ((match = anchorToExternalRegex.exec(htmlText)) !== null) { - // With only one capture group in the RegExp, we can safely take the first index from the match. - var linkString = match[0] - - if (linkString.indexOf('target=') === -1) { - var fixedLinkString = linkString.replace(/>$/, ' target="_blank">') - htmlText = htmlText.replace(linkString, fixedLinkString) - } - } - return htmlText -} - -/** - * Modify HTML to remove the list-style when rendering checkboxes. - * @param {string} htmlText - HTML to be modified. - * @return {string} The modified HTML text. - */ -function removeListStyleWhenCheckbox(htmlText) { - var parser = new DOMParser() - var htmlDoc = parser.parseFromString(htmlText, 'text/html') - var listItems = htmlDoc.getElementsByTagName('li') - - for (var i = 0; i < listItems.length; i++) { - var listItem = listItems[i] - - for (var j = 0; j < listItem.children.length; j++) { - var listItemChild = listItem.children[j] - - if ( - listItemChild instanceof HTMLInputElement && - listItemChild.type === 'checkbox' - ) { - // From Github: margin: 0 .2em .25em -1.6em; - listItem.style.marginLeft = '-1.5em' - listItem.style.listStyleType = 'none' - } - } - } - - return htmlDoc.documentElement.innerHTML -} - -/** - * Fix shortcut. Mac use Command, others use Ctrl. - */ -function fixShortcut(name) { - if (isMac) { - name = name.replace('Ctrl', 'Cmd') - } else { - name = name.replace('Cmd', 'Ctrl') - } - return name -} - -/** - * Create dropdown block - */ -function createToolbarDropdown(options, enableTooltips, shortcuts, parent) { - var el = createToolbarButton( - options, - false, - enableTooltips, - shortcuts, - 'button', - parent, - ) - el.classList.add('easymde-dropdown') - - el.onclick = function () { - el.focus() - } - - var content = document.createElement('div') - content.className = 'easymde-dropdown-content' - for ( - var childrenIndex = 0; - childrenIndex < options.children.length; - childrenIndex++ - ) { - var child = options.children[childrenIndex] - var childElement - - if (typeof child === 'string' && child in toolbarBuiltInButtons) { - childElement = createToolbarButton( - toolbarBuiltInButtons[child], - true, - enableTooltips, - shortcuts, - 'button', - parent, - ) - } else { - childElement = createToolbarButton( - child, - true, - enableTooltips, - shortcuts, - 'button', - parent, - ) - } - - childElement.addEventListener( - 'click', - function (e) { - e.stopPropagation() - }, - false, - ) - content.appendChild(childElement) - } - el.appendChild(content) - return el -} - -/** - * Create button element for toolbar. - */ -function createToolbarButton( - options, - enableActions, - enableTooltips, - shortcuts, - markup, - parent, -) { - options = options || {} - var el = document.createElement(markup) - - // Add 'custom' attributes as early as possible, so that 'official' attributes will never be overwritten. - if (options.attributes) { - for (var attribute in options.attributes) { - if ( - Object.prototype.hasOwnProperty.call( - options.attributes, - attribute, - ) - ) { - el.setAttribute(attribute, options.attributes[attribute]) - } - } - } - - el.className = options.name - el.setAttribute('type', markup) - enableTooltips = enableTooltips == undefined ? true : enableTooltips - - if (options.text) { - el.innerText = options.text - } - - // Properly handle custom shortcuts - if (options.name && options.name in shortcuts) { - bindings[options.name] = options.action - } - - if (options.title && enableTooltips) { - el.title = createTooltip(options.title, options.action, shortcuts) - - if (isMac) { - el.title = el.title.replace('Ctrl', '⌘') - el.title = el.title.replace('Alt', '⌥') - } - } - - if (options.title) { - el.setAttribute('aria-label', options.title) - } - - if (options.noDisable) { - el.classList.add('no-disable') - } - - if (options.noMobile) { - el.classList.add('no-mobile') - } - - // Prevent errors if there is no class name in custom options - var classNameParts = [] - if (typeof options.className !== 'undefined') { - classNameParts = options.className.split(' ') - } - - // Provide backwards compatibility with simple-markdown-editor by adding custom classes to the button. - var iconClasses = [] - for ( - var classNameIndex = 0; - classNameIndex < classNameParts.length; - classNameIndex++ - ) { - var classNamePart = classNameParts[classNameIndex] - // Split icon classes from the button. - // Regex will detect "fa", "fas", "fa-something" and "fa-some-icon-1", but not "fanfare". - if (classNamePart.match(/^fa([srlb]|(-[\w-]*)|$)/)) { - iconClasses.push(classNamePart) - } else { - el.classList.add(classNamePart) - } - } - - el.tabIndex = -1 - - if (iconClasses.length > 0) { - // Create icon element and append as a child to the button - var icon = document.createElement('i') - for ( - var iconClassIndex = 0; - iconClassIndex < iconClasses.length; - iconClassIndex++ - ) { - var iconClass = iconClasses[iconClassIndex] - icon.classList.add(iconClass) - } - el.appendChild(icon) - } - - // If there is a custom icon markup set, use that - if (typeof options.icon !== 'undefined') { - el.innerHTML = options.icon - } - - if (options.action && enableActions) { - if (typeof options.action === 'function') { - el.onclick = function (e) { - e.preventDefault() - options.action(parent) - } - } else if (typeof options.action === 'string') { - el.onclick = function (e) { - e.preventDefault() - window.open(options.action, '_blank') - } - } - } - - return el -} - -function createSep() { - var el = document.createElement('i') - el.className = 'separator' - el.innerHTML = '|' - return el -} - -function createTooltip(title, action, shortcuts) { - var actionName - var tooltip = title - - if (action) { - actionName = getBindingName(action) - if (shortcuts[actionName]) { - tooltip += ' (' + fixShortcut(shortcuts[actionName]) + ')' - } - } - - return tooltip -} - -/** - * The state of CodeMirror at the given position. - */ -function getState(cm, pos) { - pos = pos || cm.getCursor('start') - var stat = cm.getTokenAt(pos) - if (!stat.type) return {} - - var types = stat.type.split(' ') - - var ret = {}, - data, - text - for (var i = 0; i < types.length; i++) { - data = types[i] - if (data === 'strong') { - ret.bold = true - } else if (data === 'variable-2') { - text = cm.getLine(pos.line) - if (/^\s*\d+\.\s/.test(text)) { - ret['ordered-list'] = true - } else { - ret['unordered-list'] = true - } - } else if (data === 'atom') { - ret.quote = true - } else if (data === 'em') { - ret.italic = true - } else if (data === 'quote') { - ret.quote = true - } else if (data === 'strikethrough') { - ret.strikethrough = true - } else if (data === 'comment') { - ret.code = true - } else if (data === 'link' && !ret.image) { - ret.link = true - } else if (data === 'image') { - ret.image = true - } else if (data.match(/^header(-[1-6])?$/)) { - ret[data.replace('header', 'heading')] = true - } - } - return ret -} - -// Saved overflow setting -var saved_overflow = '' - -/** - * Toggle full screen of the editor. - * @param {EasyMDE} editor - */ -function toggleFullScreen(editor) { - // Set fullscreen - var cm = editor.codemirror - cm.setOption('fullScreen', !cm.getOption('fullScreen')) - - // Prevent scrolling on body during fullscreen active - if (cm.getOption('fullScreen')) { - saved_overflow = document.body.style.overflow - document.body.style.overflow = 'hidden' - } else { - document.body.style.overflow = saved_overflow - } - - var wrapper = cm.getWrapperElement() - var sidebyside = wrapper.nextSibling - - if (sidebyside.classList.contains('editor-preview-active-side')) { - if (editor.options.sideBySideFullscreen === false) { - // if side-by-side not-fullscreen ok, apply classes as needed - var easyMDEContainer = wrapper.parentNode - if (cm.getOption('fullScreen')) { - easyMDEContainer.classList.remove('sided--no-fullscreen') - } else { - easyMDEContainer.classList.add('sided--no-fullscreen') - } - } else { - toggleSideBySide(editor) - } - } - - if (editor.options.onToggleFullScreen) { - editor.options.onToggleFullScreen(cm.getOption('fullScreen') || false) - } - - // Remove or set maxHeight - if (typeof editor.options.maxHeight !== 'undefined') { - if (cm.getOption('fullScreen')) { - cm.getScrollerElement().style.removeProperty('height') - sidebyside.style.removeProperty('height') - } else { - cm.getScrollerElement().style.height = editor.options.maxHeight - editor.setPreviewMaxHeight() - } - } - - // Update toolbar class - editor.toolbar_div.classList.toggle('fullscreen') - - // Update toolbar button - if (editor.toolbarElements && editor.toolbarElements.fullscreen) { - var toolbarButton = editor.toolbarElements.fullscreen - toolbarButton.classList.toggle('active') - } -} - -/** - * Action for toggling bold. - * @param {EasyMDE} editor - */ -function toggleBold(editor) { - _toggleBlock(editor, 'bold', editor.options.blockStyles.bold) -} - -/** - * Action for toggling italic. - * @param {EasyMDE} editor - */ -function toggleItalic(editor) { - _toggleBlock(editor, 'italic', editor.options.blockStyles.italic) -} - -/** - * Action for toggling strikethrough. - * @param {EasyMDE} editor - */ -function toggleStrikethrough(editor) { - _toggleBlock(editor, 'strikethrough', '~~') -} - -/** - * Action for toggling code block. - * @param {EasyMDE} editor - */ -function toggleCodeBlock(editor) { - var fenceCharsToInsert = editor.options.blockStyles.code - - function fencing_line(line) { - /* return true, if this is a ``` or ~~~ line */ - if (typeof line !== 'object') { - throw ( - "fencing_line() takes a 'line' object (not a line number, or line text). Got: " + - typeof line + - ': ' + - line - ) - } - return ( - line.styles && - line.styles[2] && - line.styles[2].indexOf('formatting-code-block') !== -1 - ) - } - - function token_state(token) { - // base goes an extra level deep when mode backdrops are used, e.g. spellchecker on - return token.state.base.base || token.state.base - } - - function code_type(cm, line_num, line, firstTok, lastTok) { - /* - * Return "single", "indented", "fenced" or false - * - * cm and line_num are required. Others are optional for efficiency - * To check in the middle of a line, pass in firstTok yourself. - */ - line = line || cm.getLineHandle(line_num) - firstTok = - firstTok || - cm.getTokenAt({ - line: line_num, - ch: 1, - }) - lastTok = - lastTok || - (!!line.text && - cm.getTokenAt({ - line: line_num, - ch: line.text.length - 1, - })) - var types = firstTok.type ? firstTok.type.split(' ') : [] - if (lastTok && token_state(lastTok).indentedCode) { - // have to check last char, since first chars of first line aren"t marked as indented - return 'indented' - } else if (types.indexOf('comment') === -1) { - // has to be after "indented" check, since first chars of first indented line aren"t marked as such - return false - } else if ( - token_state(firstTok).fencedChars || - token_state(lastTok).fencedChars || - fencing_line(line) - ) { - return 'fenced' - } else { - return 'single' - } - } - - function insertFencingAtSelection( - cm, - cur_start, - cur_end, - fenceCharsToInsert, - ) { - var start_line_sel = cur_start.line + 1, - end_line_sel = cur_end.line + 1, - sel_multi = cur_start.line !== cur_end.line, - repl_start = fenceCharsToInsert + '\n', - repl_end = '\n' + fenceCharsToInsert - if (sel_multi) { - end_line_sel++ - } - // handle last char including \n or not - if (sel_multi && cur_end.ch === 0) { - repl_end = fenceCharsToInsert + '\n' - end_line_sel-- - } - _replaceSelection(cm, false, [repl_start, repl_end]) - cm.setSelection( - { - line: start_line_sel, - ch: 0, - }, - { - line: end_line_sel, - ch: 0, - }, - ) - } - - var cm = editor.codemirror, - cur_start = cm.getCursor('start'), - cur_end = cm.getCursor('end'), - tok = cm.getTokenAt({ - line: cur_start.line, - ch: cur_start.ch || 1, - }), // avoid ch 0 which is a cursor pos but not token - line = cm.getLineHandle(cur_start.line), - is_code = code_type(cm, cur_start.line, line, tok) - var block_start, block_end, lineCount - - if (is_code === 'single') { - // similar to some EasyMDE _toggleBlock logic - var start = line.text.slice(0, cur_start.ch).replace('`', ''), - end = line.text.slice(cur_start.ch).replace('`', '') - cm.replaceRange( - start + end, - { - line: cur_start.line, - ch: 0, - }, - { - line: cur_start.line, - ch: 99999999999999, - }, - ) - cur_start.ch-- - if (cur_start !== cur_end) { - cur_end.ch-- - } - cm.setSelection(cur_start, cur_end) - cm.focus() - } else if (is_code === 'fenced') { - if (cur_start.line !== cur_end.line || cur_start.ch !== cur_end.ch) { - // use selection - - // find the fenced line so we know what type it is (tilde, backticks, number of them) - for ( - block_start = cur_start.line; - block_start >= 0; - block_start-- - ) { - line = cm.getLineHandle(block_start) - if (fencing_line(line)) { - break - } - } - var fencedTok = cm.getTokenAt({ - line: block_start, - ch: 1, - }) - var fence_chars = token_state(fencedTok).fencedChars - var start_text, start_line - var end_text, end_line - // check for selection going up against fenced lines, in which case we don't want to add more fencing - if (fencing_line(cm.getLineHandle(cur_start.line))) { - start_text = '' - start_line = cur_start.line - } else if (fencing_line(cm.getLineHandle(cur_start.line - 1))) { - start_text = '' - start_line = cur_start.line - 1 - } else { - start_text = fence_chars + '\n' - start_line = cur_start.line - } - if (fencing_line(cm.getLineHandle(cur_end.line))) { - end_text = '' - end_line = cur_end.line - if (cur_end.ch === 0) { - end_line += 1 - } - } else if ( - cur_end.ch !== 0 && - fencing_line(cm.getLineHandle(cur_end.line + 1)) - ) { - end_text = '' - end_line = cur_end.line + 1 - } else { - end_text = fence_chars + '\n' - end_line = cur_end.line + 1 - } - if (cur_end.ch === 0) { - // full last line selected, putting cursor at beginning of next - end_line -= 1 - } - cm.operation(function () { - // end line first, so that line numbers don't change - cm.replaceRange( - end_text, - { - line: end_line, - ch: 0, - }, - { - line: end_line + (end_text ? 0 : 1), - ch: 0, - }, - ) - cm.replaceRange( - start_text, - { - line: start_line, - ch: 0, - }, - { - line: start_line + (start_text ? 0 : 1), - ch: 0, - }, - ) - }) - cm.setSelection( - { - line: start_line + (start_text ? 1 : 0), - ch: 0, - }, - { - line: end_line + (start_text ? 1 : -1), - ch: 0, - }, - ) - cm.focus() - } else { - // no selection, search for ends of this fenced block - var search_from = cur_start.line - if (fencing_line(cm.getLineHandle(cur_start.line))) { - // gets a little tricky if cursor is right on a fenced line - if (code_type(cm, cur_start.line + 1) === 'fenced') { - block_start = cur_start.line - search_from = cur_start.line + 1 // for searching for "end" - } else { - block_end = cur_start.line - search_from = cur_start.line - 1 // for searching for "start" - } - } - if (block_start === undefined) { - for ( - block_start = search_from; - block_start >= 0; - block_start-- - ) { - line = cm.getLineHandle(block_start) - if (fencing_line(line)) { - break - } - } - } - if (block_end === undefined) { - lineCount = cm.lineCount() - for ( - block_end = search_from; - block_end < lineCount; - block_end++ - ) { - line = cm.getLineHandle(block_end) - if (fencing_line(line)) { - break - } - } - } - cm.operation(function () { - cm.replaceRange( - '', - { - line: block_start, - ch: 0, - }, - { - line: block_start + 1, - ch: 0, - }, - ) - cm.replaceRange( - '', - { - line: block_end - 1, - ch: 0, - }, - { - line: block_end, - ch: 0, - }, - ) - }) - cm.focus() - } - } else if (is_code === 'indented') { - if (cur_start.line !== cur_end.line || cur_start.ch !== cur_end.ch) { - // use selection - block_start = cur_start.line - block_end = cur_end.line - if (cur_end.ch === 0) { - block_end-- - } - } else { - // no selection, search for ends of this indented block - for ( - block_start = cur_start.line; - block_start >= 0; - block_start-- - ) { - line = cm.getLineHandle(block_start) - if (line.text.match(/^\s*$/)) { - // empty or all whitespace - keep going - continue - } else { - if (code_type(cm, block_start, line) !== 'indented') { - block_start += 1 - break - } - } - } - lineCount = cm.lineCount() - for ( - block_end = cur_start.line; - block_end < lineCount; - block_end++ - ) { - line = cm.getLineHandle(block_end) - if (line.text.match(/^\s*$/)) { - // empty or all whitespace - keep going - continue - } else { - if (code_type(cm, block_end, line) !== 'indented') { - block_end -= 1 - break - } - } - } - } - // if we are going to un-indent based on a selected set of lines, and the next line is indented too, we need to - // insert a blank line so that the next line(s) continue to be indented code - var next_line = cm.getLineHandle(block_end + 1), - next_line_last_tok = - next_line && - cm.getTokenAt({ - line: block_end + 1, - ch: next_line.text.length - 1, - }), - next_line_indented = - next_line_last_tok && - token_state(next_line_last_tok).indentedCode - if (next_line_indented) { - cm.replaceRange('\n', { - line: block_end + 1, - ch: 0, - }) - } - - for (var i = block_start; i <= block_end; i++) { - cm.indentLine(i, 'subtract') // TODO: this doesn't get tracked in the history, so can't be undone :( - } - cm.focus() - } else { - // insert code formatting - var no_sel_and_starting_of_line = - cur_start.line === cur_end.line && - cur_start.ch === cur_end.ch && - cur_start.ch === 0 - var sel_multi = cur_start.line !== cur_end.line - if (no_sel_and_starting_of_line || sel_multi) { - insertFencingAtSelection(cm, cur_start, cur_end, fenceCharsToInsert) - } else { - _replaceSelection(cm, false, ['`', '`']) - } - } -} - -/** - * Action for toggling blockquote. - */ -function toggleBlockquote(editor) { - _toggleLine(editor.codemirror, 'quote') -} - -/** - * Action for toggling heading size: normal -> h1 -> h2 -> h3 -> h4 -> h5 -> h6 -> normal - */ -function toggleHeadingSmaller(editor) { - _toggleHeading(editor.codemirror, 'smaller') -} - -/** - * Action for toggling heading size: normal -> h6 -> h5 -> h4 -> h3 -> h2 -> h1 -> normal - */ -function toggleHeadingBigger(editor) { - _toggleHeading(editor.codemirror, 'bigger') -} - -/** - * Action for toggling heading size 1 - */ -function toggleHeading1(editor) { - _toggleHeading(editor.codemirror, undefined, 1) -} - -/** - * Action for toggling heading size 2 - */ -function toggleHeading2(editor) { - _toggleHeading(editor.codemirror, undefined, 2) -} - -/** - * Action for toggling heading size 3 - */ -function toggleHeading3(editor) { - _toggleHeading(editor.codemirror, undefined, 3) -} - -/** - * Action for toggling heading size 4 - */ -function toggleHeading4(editor) { - _toggleHeading(editor.codemirror, undefined, 4) -} - -/** - * Action for toggling heading size 5 - */ -function toggleHeading5(editor) { - _toggleHeading(editor.codemirror, undefined, 5) -} - -/** - * Action for toggling heading size 6 - */ -function toggleHeading6(editor) { - _toggleHeading(editor.codemirror, undefined, 6) -} - -/** - * Action for toggling ul. - */ -function toggleUnorderedList(editor) { - var cm = editor.codemirror - - var listStyle = '*' // Default - if (['-', '+', '*'].includes(editor.options.unorderedListStyle)) { - listStyle = editor.options.unorderedListStyle - } - - _toggleLine(cm, 'unordered-list', listStyle) -} - -/** - * Action for toggling ol. - */ -function toggleOrderedList(editor) { - _toggleLine(editor.codemirror, 'ordered-list') -} - -/** - * Action for clean block (remove headline, list, blockquote code, markers) - */ -function cleanBlock(editor) { - _cleanBlock(editor.codemirror) -} - -/** - * Action for drawing a link. - * @param {EasyMDE} editor - */ -function drawLink(editor) { - var options = editor.options - var url = 'https://' - if (options.promptURLs) { - var result = prompt(options.promptTexts.link, url) - if (!result) { - return false - } - url = escapePromptURL(result) - } - _toggleLink(editor, 'link', options.insertTexts.link, url) -} - -/** - * Action for drawing an img. - * @param {EasyMDE} editor - */ -function drawImage(editor) { - var options = editor.options - var url = 'https://' - if (options.promptURLs) { - var result = prompt(options.promptTexts.image, url) - if (!result) { - return false - } - url = escapePromptURL(result) - } - _toggleLink(editor, 'image', options.insertTexts.image, url) -} - -/** - * Encode and escape URLs to prevent breaking up rendered Markdown links. - * @param {string} url The url of the link or image - */ -function escapePromptURL(url) { - return encodeURI(url).replace(/([\\()])/g, '\\$1') -} - -/** - * Action for opening the browse-file window to upload an image to a server. - * @param {EasyMDE} editor The EasyMDE object - */ -function drawUploadedImage(editor) { - // TODO: Draw the image template with a fake url? ie: '![](importing foo.png...)' - editor.openBrowseFileWindow() -} - -/** - * Action executed after an image have been successfully imported on the server. - * @param {EasyMDE} editor The EasyMDE object - * @param {string} url The url of the uploaded image - */ -function afterImageUploaded(editor, url) { - var cm = editor.codemirror - var stat = getState(cm) - var options = editor.options - var imageName = url.substr(url.lastIndexOf('/') + 1) - var ext = imageName - .substring(imageName.lastIndexOf('.') + 1) - .replace(/\?.*$/, '') - .toLowerCase() - - // Check if media is an image - if ( - ['png', 'jpg', 'jpeg', 'gif', 'svg', 'apng', 'avif', 'webp'].includes( - ext, - ) - ) { - _replaceSelection( - cm, - stat.image, - options.insertTexts.uploadedImage, - url, - ) - } else { - var text_link = options.insertTexts.link - text_link[0] = '[' + imageName - _replaceSelection(cm, stat.link, text_link, url) - } - - // show uploaded image filename for 1000ms - editor.updateStatusBar( - 'upload-image', - editor.options.imageTexts.sbOnUploaded.replace( - '#image_name#', - imageName, - ), - ) - setTimeout(function () { - editor.updateStatusBar('upload-image', editor.options.imageTexts.sbInit) - }, 1000) -} - -/** - * Action for drawing a table. - * @param {EasyMDE} editor - */ -function drawTable(editor) { - var cm = editor.codemirror - var stat = getState(cm) - var options = editor.options - _replaceSelection(cm, stat.table, options.insertTexts.table) -} - -/** - * Action for drawing a horizontal rule. - * @param {EasyMDE} editor - */ -function drawHorizontalRule(editor) { - var cm = editor.codemirror - var stat = getState(cm) - var options = editor.options - _replaceSelection(cm, stat.image, options.insertTexts.horizontalRule) -} - -/** - * Undo action. - * @param {EasyMDE} editor - */ -function undo(editor) { - var cm = editor.codemirror - cm.undo() - cm.focus() -} - -/** - * Redo action. - * @param {EasyMDE} editor - */ -function redo(editor) { - var cm = editor.codemirror - cm.redo() - cm.focus() -} - -/** - * Toggle side by side preview - * @param {EasyMDE} editor - */ -function toggleSideBySide(editor) { - var cm = editor.codemirror - var wrapper = cm.getWrapperElement() - var preview = wrapper.nextSibling - var toolbarButton = - editor.toolbarElements && editor.toolbarElements['side-by-side'] - var useSideBySideListener = false - - var easyMDEContainer = wrapper.parentNode - - if (preview.classList.contains('editor-preview-active-side')) { - if (editor.options.sideBySideFullscreen === false) { - // if side-by-side not-fullscreen ok, remove classes when hiding side - easyMDEContainer.classList.remove('sided--no-fullscreen') - } - preview.classList.remove('editor-preview-active-side') - if (toolbarButton) toolbarButton.classList.remove('active') - wrapper.classList.remove('CodeMirror-sided') - } else { - // When the preview button is clicked for the first time, - // give some time for the transition from editor.css to fire and the view to slide from right to left, - // instead of just appearing. - setTimeout(function () { - if (!cm.getOption('fullScreen')) { - if (editor.options.sideBySideFullscreen === false) { - // if side-by-side not-fullscreen ok, add classes when not fullscreen and showing side - easyMDEContainer.classList.add('sided--no-fullscreen') - } else { - toggleFullScreen(editor) - } - } - preview.classList.add('editor-preview-active-side') - }, 1) - if (toolbarButton) toolbarButton.classList.add('active') - wrapper.classList.add('CodeMirror-sided') - useSideBySideListener = true - } - - // Hide normal preview if active - var previewNormal = wrapper.lastChild - if (previewNormal.classList.contains('editor-preview-active')) { - previewNormal.classList.remove('editor-preview-active') - var toolbar = editor.toolbarElements.preview - var toolbar_div = editor.toolbar_div - toolbar.classList.remove('active') - toolbar_div.classList.remove('disabled-for-preview') - } - - var sideBySideRenderingFunction = function () { - var newValue = editor.options.previewRender(editor.value(), preview) - if (newValue != null) { - preview.innerHTML = newValue - } - } - - if (!cm.sideBySideRenderingFunction) { - cm.sideBySideRenderingFunction = sideBySideRenderingFunction - } - - if (useSideBySideListener) { - var newValue = editor.options.previewRender(editor.value(), preview) - if (newValue != null) { - preview.innerHTML = newValue - } - cm.on('update', cm.sideBySideRenderingFunction) - } else { - cm.off('update', cm.sideBySideRenderingFunction) - } - - // Refresh to fix selection being off (#309) - cm.refresh() -} - -/** - * Preview action. - * @param {EasyMDE} editor - */ -function togglePreview(editor) { - var cm = editor.codemirror - var wrapper = cm.getWrapperElement() - var toolbar_div = editor.toolbar_div - var toolbar = editor.options.toolbar - ? editor.toolbarElements.preview - : false - var preview = wrapper.lastChild - - // Turn off side by side if needed - var sidebyside = cm.getWrapperElement().nextSibling - if (sidebyside.classList.contains('editor-preview-active-side')) - toggleSideBySide(editor) - - if (!preview || !preview.classList.contains('editor-preview-full')) { - preview = document.createElement('div') - preview.className = 'editor-preview-full' - - if (editor.options.previewClass) { - if (Array.isArray(editor.options.previewClass)) { - for (var i = 0; i < editor.options.previewClass.length; i++) { - preview.classList.add(editor.options.previewClass[i]) - } - } else if (typeof editor.options.previewClass === 'string') { - preview.classList.add(editor.options.previewClass) - } - } - - wrapper.appendChild(preview) - } - - if (preview.classList.contains('editor-preview-active')) { - preview.classList.remove('editor-preview-active') - if (toolbar) { - toolbar.classList.remove('active') - toolbar_div.classList.remove('disabled-for-preview') - } - } else { - // When the preview button is clicked for the first time, - // give some time for the transition from editor.css to fire and the view to slide from right to left, - // instead of just appearing. - setTimeout(function () { - preview.classList.add('editor-preview-active') - }, 1) - if (toolbar) { - toolbar.classList.add('active') - toolbar_div.classList.add('disabled-for-preview') - } - } - - var preview_result = editor.options.previewRender(editor.value(), preview) - if (preview_result !== null) { - preview.innerHTML = preview_result - } -} - -function _replaceSelection(cm, active, startEnd, url) { - if ( - cm - .getWrapperElement() - .lastChild.classList.contains('editor-preview-active') - ) - return - - var text - var start = startEnd[0] - var end = startEnd[1] - var startPoint = {}, - endPoint = {} - Object.assign(startPoint, cm.getCursor('start')) - Object.assign(endPoint, cm.getCursor('end')) - if (url) { - start = start.replace('#url#', url) // url is in start for upload-image - end = end.replace('#url#', url) - } - if (active) { - text = cm.getLine(startPoint.line) - start = text.slice(0, startPoint.ch) - end = text.slice(startPoint.ch) - cm.replaceRange(start + end, { - line: startPoint.line, - ch: 0, - }) - } else { - text = cm.getSelection() - cm.replaceSelection(start + text + end) - - startPoint.ch += start.length - if (startPoint !== endPoint) { - endPoint.ch += start.length - } - } - cm.setSelection(startPoint, endPoint) - cm.focus() -} - -function _toggleHeading(cm, direction, size) { - if ( - cm - .getWrapperElement() - .lastChild.classList.contains('editor-preview-active') - ) - return - - var startPoint = cm.getCursor('start') - var endPoint = cm.getCursor('end') - for (var i = startPoint.line; i <= endPoint.line; i++) { - ;(function (i) { - var text = cm.getLine(i) - var currHeadingLevel = text.search(/[^#]/) - - if (direction !== undefined) { - if (currHeadingLevel <= 0) { - if (direction == 'bigger') { - text = '###### ' + text - } else { - text = '# ' + text - } - } else if (currHeadingLevel == 6 && direction == 'smaller') { - text = text.substr(7) - } else if (currHeadingLevel == 1 && direction == 'bigger') { - text = text.substr(2) - } else { - if (direction == 'bigger') { - text = text.substr(1) - } else { - text = '#' + text - } - } - } else { - if (currHeadingLevel <= 0) { - text = '#'.repeat(size) + ' ' + text - } else if (currHeadingLevel == size) { - text = text.substr(currHeadingLevel + 1) - } else { - text = - '#'.repeat(size) + - ' ' + - text.substr(currHeadingLevel + 1) - } - } - - cm.replaceRange( - text, - { - line: i, - ch: 0, - }, - { - line: i, - ch: 99999999999999, - }, - ) - })(i) - } - cm.focus() -} - -function _toggleLine(cm, name, liststyle) { - if ( - cm - .getWrapperElement() - .lastChild.classList.contains('editor-preview-active') - ) - return - - var listRegexp = /^(\s*)(\*|-|\+|\d*\.)(\s+)/ - var whitespacesRegexp = /^\s*/ - - var stat = getState(cm) - var startPoint = cm.getCursor('start') - var endPoint = cm.getCursor('end') - var repl = { - quote: /^(\s*)>\s+/, - 'unordered-list': listRegexp, - 'ordered-list': listRegexp, - } - - var _getChar = function (name, i) { - var map = { - quote: '>', - 'unordered-list': liststyle, - 'ordered-list': '%%i.', - } - - return map[name].replace('%%i', i) - } - - var _checkChar = function (name, char) { - var map = { - quote: '>', - 'unordered-list': '\\' + liststyle, - 'ordered-list': '\\d+.', - } - var rt = new RegExp(map[name]) - - return char && rt.test(char) - } - - var _toggle = function (name, text, untoggleOnly) { - var arr = listRegexp.exec(text) - var char = _getChar(name, line) - if (arr !== null) { - if (_checkChar(name, arr[2])) { - char = '' - } - text = - arr[1] + - char + - arr[3] + - text.replace(whitespacesRegexp, '').replace(repl[name], '$1') - } else if (untoggleOnly == false) { - text = char + ' ' + text - } - return text - } - - var line = 1 - for (var i = startPoint.line; i <= endPoint.line; i++) { - ;(function (i) { - var text = cm.getLine(i) - if (stat[name]) { - text = text.replace(repl[name], '$1') - } else { - // If we're toggling unordered-list formatting, check if the current line - // is part of an ordered-list, and if so, untoggle that first. - // Workaround for https://github.com/Ionaru/easy-markdown-editor/issues/92 - if (name == 'unordered-list') { - text = _toggle('ordered-list', text, true) - } - text = _toggle(name, text, false) - line += 1 - } - cm.replaceRange( - text, - { - line: i, - ch: 0, - }, - { - line: i, - ch: 99999999999999, - }, - ) - })(i) - } - cm.focus() -} - -/** - * @param {EasyMDE} editor - * @param {'link' | 'image'} type - * @param {string} startEnd - * @param {string} url - */ -function _toggleLink(editor, type, startEnd, url) { - if (!editor.codemirror || editor.isPreviewActive()) { - return - } - - var cm = editor.codemirror - var stat = getState(cm) - var active = stat[type] - if (!active) { - _replaceSelection(cm, active, startEnd, url) - return - } - - var startPoint = cm.getCursor('start') - var endPoint = cm.getCursor('end') - var text = cm.getLine(startPoint.line) - var start = text.slice(0, startPoint.ch) - var end = text.slice(startPoint.ch) - - if (type == 'link') { - start = start.replace(/(.*)[^!]\[/, '$1') - } else if (type == 'image') { - start = start.replace(/(.*)!\[$/, '$1') - } - end = end.replace(/]\(.*?\)/, '') - - cm.replaceRange( - start + end, - { - line: startPoint.line, - ch: 0, - }, - { - line: startPoint.line, - ch: 99999999999999, - }, - ) - - startPoint.ch -= startEnd[0].length - if (startPoint !== endPoint) { - endPoint.ch -= startEnd[0].length - } - cm.setSelection(startPoint, endPoint) - cm.focus() -} - -/** - * @param {EasyMDE} editor - */ -function _toggleBlock(editor, type, start_chars, end_chars) { - if (!editor.codemirror || editor.isPreviewActive()) { - return - } - - end_chars = typeof end_chars === 'undefined' ? start_chars : end_chars - var cm = editor.codemirror - var stat = getState(cm) - - var text - var start = start_chars - var end = end_chars - - var startPoint = cm.getCursor('start') - var endPoint = cm.getCursor('end') - - if (stat[type]) { - text = cm.getLine(startPoint.line) - start = text.slice(0, startPoint.ch) - end = text.slice(startPoint.ch) - if (type == 'bold') { - start = start.replace(/(\*\*|__)(?![\s\S]*(\*\*|__))/, '') - end = end.replace(/(\*\*|__)/, '') - } else if (type == 'italic') { - start = start.replace(/(\*|_)(?![\s\S]*(\*|_))/, '') - end = end.replace(/(\*|_)/, '') - } else if (type == 'strikethrough') { - start = start.replace(/(\*\*|~~)(?![\s\S]*(\*\*|~~))/, '') - end = end.replace(/(\*\*|~~)/, '') - } - cm.replaceRange( - start + end, - { - line: startPoint.line, - ch: 0, - }, - { - line: startPoint.line, - ch: 99999999999999, - }, - ) - - if (type == 'bold' || type == 'strikethrough') { - startPoint.ch -= 2 - if (startPoint !== endPoint) { - endPoint.ch -= 2 - } - } else if (type == 'italic') { - startPoint.ch -= 1 - if (startPoint !== endPoint) { - endPoint.ch -= 1 - } - } - } else { - text = cm.getSelection() - if (type == 'bold') { - text = text.split('**').join('') - text = text.split('__').join('') - } else if (type == 'italic') { - text = text.split('*').join('') - text = text.split('_').join('') - } else if (type == 'strikethrough') { - text = text.split('~~').join('') - } - cm.replaceSelection(start + text + end) - - startPoint.ch += start_chars.length - endPoint.ch = startPoint.ch + text.length - } - - cm.setSelection(startPoint, endPoint) - cm.focus() -} - -function _cleanBlock(cm) { - if ( - cm - .getWrapperElement() - .lastChild.classList.contains('editor-preview-active') - ) - return - - var startPoint = cm.getCursor('start') - var endPoint = cm.getCursor('end') - var text - - for (var line = startPoint.line; line <= endPoint.line; line++) { - text = cm.getLine(line) - text = text.replace(/^[ ]*([# ]+|\*|-|[> ]+|[0-9]+(.|\)))[ ]*/, '') - - cm.replaceRange( - text, - { - line: line, - ch: 0, - }, - { - line: line, - ch: 99999999999999, - }, - ) - } -} - -/** - * Convert a number of bytes to a human-readable file size. If you desire - * to add a space between the value and the unit, you need to add this space - * to the given units. - * @param bytes {number} A number of bytes, as integer. Ex: 421137 - * @param units {number[]} An array of human-readable units, ie. [' B', ' K', ' MB'] - * @returns string A human-readable file size. Ex: '412 KB' - */ -function humanFileSize(bytes, units) { - if (Math.abs(bytes) < 1024) { - return '' + bytes + units[0] - } - var u = 0 - do { - bytes /= 1024 - ++u - } while (Math.abs(bytes) >= 1024 && u < units.length) - return '' + bytes.toFixed(1) + units[u] -} - -// Merge the properties of one object into another. -function _mergeProperties(target, source) { - for (var property in source) { - if (Object.prototype.hasOwnProperty.call(source, property)) { - if (source[property] instanceof Array) { - target[property] = source[property].concat( - target[property] instanceof Array ? target[property] : [], - ) - } else if ( - source[property] !== null && - typeof source[property] === 'object' && - source[property].constructor === Object - ) { - target[property] = _mergeProperties( - target[property] || {}, - source[property], - ) - } else { - target[property] = source[property] - } - } - } - - return target -} - -// Merge an arbitrary number of objects into one. -function extend(target) { - for (var i = 1; i < arguments.length; i++) { - target = _mergeProperties(target, arguments[i]) - } - - return target -} - -/* The right word count in respect for CJK. */ -function wordCount(data) { - var pattern = - /[a-zA-Z0-9_\u00A0-\u02AF\u0392-\u03c9\u0410-\u04F9]+|[\u4E00-\u9FFF\u3400-\u4dbf\uf900-\ufaff\u3040-\u309f\uac00-\ud7af]+/g - var m = data.match(pattern) - var count = 0 - if (m === null) return count - for (var i = 0; i < m.length; i++) { - if (m[i].charCodeAt(0) >= 0x4e00) { - count += m[i].length - } else { - count += 1 - } - } - return count -} - -var iconClassMap = { - bold: 'fa fa-bold', - italic: 'fa fa-italic', - strikethrough: 'fa fa-strikethrough', - heading: 'fa fa-header fa-heading', - 'heading-smaller': 'fa fa-header fa-heading header-smaller', - 'heading-bigger': 'fa fa-header fa-heading header-bigger', - 'heading-1': 'fa fa-header fa-heading header-1', - 'heading-2': 'fa fa-header fa-heading header-2', - 'heading-3': 'fa fa-header fa-heading header-3', - code: 'fa fa-code', - quote: 'fa fa-quote-left', - 'ordered-list': 'fa fa-list-ol', - 'unordered-list': 'fa fa-list-ul', - 'clean-block': 'fa fa-eraser', - link: 'fa fa-link', - image: 'fa fa-image', - 'upload-image': 'fa fa-image', - table: 'fa fa-table', - 'horizontal-rule': 'fa fa-minus', - preview: 'fa fa-eye', - 'side-by-side': 'fa fa-columns', - fullscreen: 'fa fa-arrows-alt', - guide: 'fa fa-question-circle', - undo: 'fa fa-undo', - redo: 'fa fa-repeat fa-redo', -} - -var toolbarBuiltInButtons = { - bold: { - name: 'bold', - action: toggleBold, - className: iconClassMap['bold'], - title: 'Bold', - default: true, - }, - italic: { - name: 'italic', - action: toggleItalic, - className: iconClassMap['italic'], - title: 'Italic', - default: true, - }, - strikethrough: { - name: 'strikethrough', - action: toggleStrikethrough, - className: iconClassMap['strikethrough'], - title: 'Strikethrough', - }, - heading: { - name: 'heading', - action: toggleHeadingSmaller, - className: iconClassMap['heading'], - title: 'Heading', - default: true, - }, - 'heading-smaller': { - name: 'heading-smaller', - action: toggleHeadingSmaller, - className: iconClassMap['heading-smaller'], - title: 'Smaller Heading', - }, - 'heading-bigger': { - name: 'heading-bigger', - action: toggleHeadingBigger, - className: iconClassMap['heading-bigger'], - title: 'Bigger Heading', - }, - 'heading-1': { - name: 'heading-1', - action: toggleHeading1, - className: iconClassMap['heading-1'], - title: 'Big Heading', - }, - 'heading-2': { - name: 'heading-2', - action: toggleHeading2, - className: iconClassMap['heading-2'], - title: 'Medium Heading', - }, - 'heading-3': { - name: 'heading-3', - action: toggleHeading3, - className: iconClassMap['heading-3'], - title: 'Small Heading', - }, - 'separator-1': { - name: 'separator-1', - }, - code: { - name: 'code', - action: toggleCodeBlock, - className: iconClassMap['code'], - title: 'Code', - }, - quote: { - name: 'quote', - action: toggleBlockquote, - className: iconClassMap['quote'], - title: 'Quote', - default: true, - }, - 'unordered-list': { - name: 'unordered-list', - action: toggleUnorderedList, - className: iconClassMap['unordered-list'], - title: 'Generic List', - default: true, - }, - 'ordered-list': { - name: 'ordered-list', - action: toggleOrderedList, - className: iconClassMap['ordered-list'], - title: 'Numbered List', - default: true, - }, - 'clean-block': { - name: 'clean-block', - action: cleanBlock, - className: iconClassMap['clean-block'], - title: 'Clean block', - }, - 'separator-2': { - name: 'separator-2', - }, - link: { - name: 'link', - action: drawLink, - className: iconClassMap['link'], - title: 'Create Link', - default: true, - }, - image: { - name: 'image', - action: drawImage, - className: iconClassMap['image'], - title: 'Insert Image', - default: true, - }, - 'upload-image': { - name: 'upload-image', - action: drawUploadedImage, - className: iconClassMap['upload-image'], - title: 'Import an image', - }, - table: { - name: 'table', - action: drawTable, - className: iconClassMap['table'], - title: 'Insert Table', - }, - 'horizontal-rule': { - name: 'horizontal-rule', - action: drawHorizontalRule, - className: iconClassMap['horizontal-rule'], - title: 'Insert Horizontal Line', - }, - 'separator-3': { - name: 'separator-3', - }, - preview: { - name: 'preview', - action: togglePreview, - className: iconClassMap['preview'], - noDisable: true, - title: 'Toggle Preview', - default: true, - }, - 'side-by-side': { - name: 'side-by-side', - action: toggleSideBySide, - className: iconClassMap['side-by-side'], - noDisable: true, - noMobile: true, - title: 'Toggle Side by Side', - default: true, - }, - fullscreen: { - name: 'fullscreen', - action: toggleFullScreen, - className: iconClassMap['fullscreen'], - noDisable: true, - noMobile: true, - title: 'Toggle Fullscreen', - default: true, - }, - 'separator-4': { - name: 'separator-4', - }, - guide: { - name: 'guide', - action: 'https://www.markdownguide.org/basic-syntax/', - className: iconClassMap['guide'], - noDisable: true, - title: 'Markdown Guide', - default: true, - }, - 'separator-5': { - name: 'separator-5', - }, - undo: { - name: 'undo', - action: undo, - className: iconClassMap['undo'], - noDisable: true, - title: 'Undo', - }, - redo: { - name: 'redo', - action: redo, - className: iconClassMap['redo'], - noDisable: true, - title: 'Redo', - }, -} - -var insertTexts = { - link: ['[', '](#url#)'], - image: ['![', '](#url#)'], - uploadedImage: ['![](#url#)', ''], - // uploadedImage: ['![](#url#)\n', ''], // TODO: New line insertion doesn't work here. - table: [ - '', - '\n\n| Column 1 | Column 2 | Column 3 |\n| -------- | -------- | -------- |\n| Text | Text | Text |\n\n', - ], - horizontalRule: ['', '\n\n-----\n\n'], -} - -var promptTexts = { - link: 'URL for the link:', - image: 'URL of the image:', -} - -var timeFormat = { - locale: 'en-US', - format: { - hour: '2-digit', - minute: '2-digit', - }, -} - -var blockStyles = { - bold: '**', - code: '```', - italic: '*', -} - -/** - * Texts displayed to the user (mainly on the status bar) for the import image - * feature. Can be used for customization or internationalization. - */ -var imageTexts = { - sbInit: 'Attach files by drag and dropping or pasting from clipboard.', - sbOnDragEnter: 'Drop image to upload it.', - sbOnDrop: 'Uploading image #images_names#...', - sbProgress: 'Uploading #file_name#: #progress#%', - sbOnUploaded: 'Uploaded #image_name#', - sizeUnits: ' B, KB, MB', -} - -/** - * Errors displayed to the user, using the `errorCallback` option. Can be used for - * customization or internationalization. - */ -var errorMessages = { - noFileGiven: 'You must select a file.', - typeNotAllowed: 'This image type is not allowed.', - fileTooLarge: - 'Image #image_name# is too big (#image_size#).\n' + - 'Maximum file size is #image_max_size#.', - importError: 'Something went wrong when uploading the image #image_name#.', -} - -/** - * Interface of EasyMDE. - */ -function EasyMDE(options) { - // Handle options parameter - options = options || {} - - // Used later to refer to it"s parent - options.parent = this - - // Check if Font Awesome needs to be auto downloaded - var autoDownloadFA = true - - if (options.autoDownloadFontAwesome === false) { - autoDownloadFA = false - } - - if (options.autoDownloadFontAwesome !== true) { - var styleSheets = document.styleSheets - for (var i = 0; i < styleSheets.length; i++) { - if (!styleSheets[i].href) continue - - if ( - styleSheets[i].href.indexOf( - '//maxcdn.bootstrapcdn.com/font-awesome/', - ) > -1 - ) { - autoDownloadFA = false - } - } - } - - if (autoDownloadFA) { - var link = document.createElement('link') - link.rel = 'stylesheet' - link.href = - 'https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css' - document.getElementsByTagName('head')[0].appendChild(link) - } - - // Find the textarea to use - if (options.element) { - this.element = options.element - } else if (options.element === null) { - // This means that the element option was specified, but no element was found - console.log('EasyMDE: Error. No element was found.') - return - } - - // Handle toolbar - if (options.toolbar === undefined) { - // Initialize - options.toolbar = [] - - // Loop over the built in buttons, to get the preferred order - for (var key in toolbarBuiltInButtons) { - if ( - Object.prototype.hasOwnProperty.call(toolbarBuiltInButtons, key) - ) { - if (key.indexOf('separator-') != -1) { - options.toolbar.push('|') - } - - if ( - toolbarBuiltInButtons[key].default === true || - (options.showIcons && - options.showIcons.constructor === Array && - options.showIcons.indexOf(key) != -1) - ) { - options.toolbar.push(key) - } - } - } - } - - // Editor preview styling class. - if (!Object.prototype.hasOwnProperty.call(options, 'previewClass')) { - options.previewClass = 'editor-preview' - } - - // Handle status bar - if (!Object.prototype.hasOwnProperty.call(options, 'status')) { - options.status = ['autosave', 'lines', 'words', 'cursor'] - - if (options.uploadImage) { - options.status.unshift('upload-image') - } - } - - // Add default preview rendering function - if (!options.previewRender) { - options.previewRender = function (plainText) { - // Note: "this" refers to the options object - return this.parent.markdown(plainText) - } - } - - // Set default options for parsing config - options.parsingConfig = extend( - { - highlightFormatting: true, // needed for toggleCodeBlock to detect types of code - }, - options.parsingConfig || {}, - ) - - // Merging the insertTexts, with the given options - options.insertTexts = extend({}, insertTexts, options.insertTexts || {}) - - // Merging the promptTexts, with the given options - options.promptTexts = extend({}, promptTexts, options.promptTexts || {}) - - // Merging the blockStyles, with the given options - options.blockStyles = extend({}, blockStyles, options.blockStyles || {}) - - if (options.autosave != undefined) { - // Merging the Autosave timeFormat, with the given options - options.autosave.timeFormat = extend( - {}, - timeFormat, - options.autosave.timeFormat || {}, - ) - } - - options.iconClassMap = extend({}, iconClassMap, options.iconClassMap || {}) - - // Merging the shortcuts, with the given options - options.shortcuts = extend({}, shortcuts, options.shortcuts || {}) - - options.maxHeight = options.maxHeight || undefined - - options.direction = options.direction || 'ltr' - - if (typeof options.maxHeight !== 'undefined') { - // Min and max height are equal if maxHeight is set - options.minHeight = options.maxHeight - } else { - options.minHeight = options.minHeight || '300px' - } - - options.errorCallback = - options.errorCallback || - function (errorMessage) { - alert(errorMessage) - } - - // Import-image default configuration - options.uploadImage = options.uploadImage || false - options.imageMaxSize = options.imageMaxSize || 2097152 // 1024 * 1024 * 2 - options.imageAccept = - options.imageAccept || 'image/png, image/jpeg, image/gif, image/avif' - options.imageTexts = extend({}, imageTexts, options.imageTexts || {}) - options.errorMessages = extend( - {}, - errorMessages, - options.errorMessages || {}, - ) - options.imagePathAbsolute = options.imagePathAbsolute || false - options.imageCSRFName = options.imageCSRFName || 'csrfmiddlewaretoken' - options.imageCSRFHeader = options.imageCSRFHeader || false - - // Change unique_id to uniqueId for backwards compatibility - if ( - options.autosave != undefined && - options.autosave.unique_id != undefined && - options.autosave.unique_id != '' - ) - options.autosave.uniqueId = options.autosave.unique_id - - // If overlay mode is specified and combine is not provided, default it to true - if (options.overlayMode && options.overlayMode.combine === undefined) { - options.overlayMode.combine = true - } - - // Update this options - this.options = options - - // Auto render - this.render() - - // The codemirror component is only available after rendering - // so, the setter for the initialValue can only run after - // the element has been rendered - if ( - options.initialValue && - (!this.options.autosave || - this.options.autosave.foundSavedValue !== true) - ) { - this.value(options.initialValue) - } - - if (options.uploadImage) { - var self = this - - this.codemirror.on('dragenter', function (cm, event) { - self.updateStatusBar( - 'upload-image', - self.options.imageTexts.sbOnDragEnter, - ) - event.stopPropagation() - event.preventDefault() - }) - this.codemirror.on('dragend', function (cm, event) { - self.updateStatusBar('upload-image', self.options.imageTexts.sbInit) - event.stopPropagation() - event.preventDefault() - }) - this.codemirror.on('dragleave', function (cm, event) { - self.updateStatusBar('upload-image', self.options.imageTexts.sbInit) - event.stopPropagation() - event.preventDefault() - }) - - this.codemirror.on('dragover', function (cm, event) { - self.updateStatusBar( - 'upload-image', - self.options.imageTexts.sbOnDragEnter, - ) - event.stopPropagation() - event.preventDefault() - }) - - this.codemirror.on('drop', function (cm, event) { - event.stopPropagation() - event.preventDefault() - if (options.imageUploadFunction) { - self.uploadImagesUsingCustomFunction( - options.imageUploadFunction, - event.dataTransfer.files, - ) - } else { - self.uploadImages(event.dataTransfer.files) - } - }) - - this.codemirror.on('paste', function (cm, event) { - if (options.imageUploadFunction) { - self.uploadImagesUsingCustomFunction( - options.imageUploadFunction, - event.clipboardData.files, - ) - } else { - self.uploadImages(event.clipboardData.files) - } - }) - } -} - -/** - * Upload asynchronously a list of images to a server. - * - * Can be triggered by: - * - drag&drop; - * - copy-paste; - * - the browse-file window (opened when the user clicks on the *upload-image* icon). - * @param {FileList} files The files to upload the the server. - * @param [onSuccess] {function} see EasyMDE.prototype.uploadImage - * @param [onError] {function} see EasyMDE.prototype.uploadImage - */ -EasyMDE.prototype.uploadImages = function (files, onSuccess, onError) { - if (files.length === 0) { - return - } - var names = [] - for (var i = 0; i < files.length; i++) { - names.push(files[i].name) - this.uploadImage(files[i], onSuccess, onError) - } - this.updateStatusBar( - 'upload-image', - this.options.imageTexts.sbOnDrop.replace( - '#images_names#', - names.join(', '), - ), - ) -} - -/** - * Upload asynchronously a list of images to a server. - * - * Can be triggered by: - * - drag&drop; - * - copy-paste; - * - the browse-file window (opened when the user clicks on the *upload-image* icon). - * @param imageUploadFunction {Function} The custom function to upload the image passed in options. - * @param {FileList} files The files to upload the the server. - */ -EasyMDE.prototype.uploadImagesUsingCustomFunction = function ( - imageUploadFunction, - files, -) { - if (files.length === 0) { - return - } - var names = [] - for (var i = 0; i < files.length; i++) { - names.push(files[i].name) - this.uploadImageUsingCustomFunction(imageUploadFunction, files[i]) - } - this.updateStatusBar( - 'upload-image', - this.options.imageTexts.sbOnDrop.replace( - '#images_names#', - names.join(', '), - ), - ) -} - -/** - * Update an item in the status bar. - * @param itemName {string} The name of the item to update (ie. 'upload-image', 'autosave', etc.). - * @param content {string} the new content of the item to write in the status bar. - */ -EasyMDE.prototype.updateStatusBar = function (itemName, content) { - if (!this.gui.statusbar) { - return - } - - var matchingClasses = this.gui.statusbar.getElementsByClassName(itemName) - if (matchingClasses.length === 1) { - this.gui.statusbar.getElementsByClassName(itemName)[0].textContent = - content - } else if (matchingClasses.length === 0) { - console.log('EasyMDE: status bar item ' + itemName + ' was not found.') - } else { - console.log( - 'EasyMDE: Several status bar items named ' + - itemName + - ' was found.', - ) - } -} - -/** - * Default markdown render. - */ -EasyMDE.prototype.markdown = function (text) { - if (marked) { - // Initialize - var markedOptions - if ( - this.options && - this.options.renderingConfig && - this.options.renderingConfig.markedOptions - ) { - markedOptions = this.options.renderingConfig.markedOptions - } else { - markedOptions = {} - } - - // Update options - if ( - this.options && - this.options.renderingConfig && - this.options.renderingConfig.singleLineBreaks === false - ) { - markedOptions.breaks = false - } else { - markedOptions.breaks = true - } - - if ( - this.options && - this.options.renderingConfig && - this.options.renderingConfig.codeSyntaxHighlighting === true - ) { - /* Get HLJS from config or window */ - var hljs = this.options.renderingConfig.hljs || window.hljs - - /* Check if HLJS loaded */ - if (hljs) { - markedOptions.highlight = function (code, language) { - if (language && hljs.getLanguage(language)) { - return hljs.highlight(language, code).value - } else { - return hljs.highlightAuto(code).value - } - } - } - } - - // Set options - marked.setOptions(markedOptions) - - // Convert the markdown to HTML - var htmlText = marked.parse(text) - - // Sanitize HTML - if ( - this.options.renderingConfig && - typeof this.options.renderingConfig.sanitizerFunction === 'function' - ) { - htmlText = this.options.renderingConfig.sanitizerFunction.call( - this, - htmlText, - ) - } - - // Edit the HTML anchors to add 'target="_blank"' by default. - htmlText = addAnchorTargetBlank(htmlText) - - // Remove list-style when rendering checkboxes - htmlText = removeListStyleWhenCheckbox(htmlText) - - return htmlText - } -} - -/** - * Render editor to the given element. - */ -EasyMDE.prototype.render = function (el) { - if (!el) { - el = this.element || document.getElementsByTagName('textarea')[0] - } - - if (this._rendered && this._rendered === el) { - // Already rendered. - return - } - - this.element = el - var options = this.options - - var self = this - var keyMaps = {} - - for (var key in options.shortcuts) { - // null stands for "do not bind this command" - if (options.shortcuts[key] !== null && bindings[key] !== null) { - ;(function (key) { - keyMaps[fixShortcut(options.shortcuts[key])] = function () { - var action = bindings[key] - if (typeof action === 'function') { - action(self) - } else if (typeof action === 'string') { - window.open(action, '_blank') - } - } - })(key) - } - } - - keyMaps['Enter'] = 'newlineAndIndentContinueMarkdownList' - keyMaps['Tab'] = 'tabAndIndentMarkdownList' - keyMaps['Shift-Tab'] = 'shiftTabAndUnindentMarkdownList' - keyMaps['Esc'] = function (cm) { - if (cm.getOption('fullScreen')) toggleFullScreen(self) - } - - this.documentOnKeyDown = function (e) { - e = e || window.event - - if (e.keyCode == 27) { - if (self.codemirror.getOption('fullScreen')) toggleFullScreen(self) - } - } - document.addEventListener('keydown', this.documentOnKeyDown, false) - - var mode, backdrop - - // CodeMirror overlay mode - if (options.overlayMode) { - CodeMirror.defineMode('overlay-mode', function (config) { - return CodeMirror.overlayMode( - CodeMirror.getMode( - config, - options.spellChecker !== false ? 'spell-checker' : 'gfm', - ), - options.overlayMode.mode, - options.overlayMode.combine, - ) - }) - - mode = 'overlay-mode' - backdrop = options.parsingConfig - backdrop.gitHubSpice = false - } else { - mode = options.parsingConfig - mode.name = 'gfm' - mode.gitHubSpice = false - } - if (options.spellChecker !== false) { - mode = 'spell-checker' - backdrop = options.parsingConfig - backdrop.name = 'gfm' - backdrop.gitHubSpice = false - - if (typeof options.spellChecker === 'function') { - options.spellChecker({ - codeMirrorInstance: CodeMirror, - }) - } else { - CodeMirrorSpellChecker({ - codeMirrorInstance: CodeMirror, - }) - } - } - - // eslint-disable-next-line no-unused-vars - function configureMouse(cm, repeat, event) { - return { - addNew: false, - } - } - - CodeMirror.getMode('php').mime = 'text/x-php' - - this.codemirror = CodeMirror.fromTextArea(el, { - mode: mode, - backdrop: backdrop, - theme: options.theme != undefined ? options.theme : 'easymde', - tabSize: options.tabSize != undefined ? options.tabSize : 2, - indentUnit: options.tabSize != undefined ? options.tabSize : 2, - indentWithTabs: options.indentWithTabs === false ? false : true, - lineNumbers: options.lineNumbers === true ? true : false, - autofocus: options.autofocus === true ? true : false, - extraKeys: keyMaps, - direction: options.direction, - lineWrapping: options.lineWrapping === false ? false : true, - allowDropFileTypes: ['text/plain'], - placeholder: - options.placeholder || el.getAttribute('placeholder') || '', - styleSelectedText: - options.styleSelectedText != undefined - ? options.styleSelectedText - : !isMobile(), - scrollbarStyle: - options.scrollbarStyle != undefined - ? options.scrollbarStyle - : 'native', - configureMouse: configureMouse, - inputStyle: - options.inputStyle != undefined - ? options.inputStyle - : isMobile() - ? 'contenteditable' - : 'textarea', - spellcheck: - options.nativeSpellcheck != undefined - ? options.nativeSpellcheck - : true, - autoRefresh: - options.autoRefresh != undefined ? options.autoRefresh : false, - }) - - this.codemirror.getScrollerElement().style.minHeight = options.minHeight - - if (typeof options.maxHeight !== 'undefined') { - this.codemirror.getScrollerElement().style.height = options.maxHeight - } - - if (options.forceSync === true) { - var cm = this.codemirror - cm.on('change', function () { - cm.save() - }) - } - - this.gui = {} - - // Wrap Codemirror with container before create toolbar, etc, - // to use with sideBySideFullscreen option. - var easyMDEContainer = document.createElement('div') - easyMDEContainer.classList.add('EasyMDEContainer') - easyMDEContainer.setAttribute('role', 'application') - var cmWrapper = this.codemirror.getWrapperElement() - cmWrapper.parentNode.insertBefore(easyMDEContainer, cmWrapper) - easyMDEContainer.appendChild(cmWrapper) - - if (options.toolbar !== false) { - this.gui.toolbar = this.createToolbar() - } - if (options.status !== false) { - this.gui.statusbar = this.createStatusbar() - } - if (options.autosave != undefined && options.autosave.enabled === true) { - this.autosave() // use to load localstorage content - this.codemirror.on('change', function () { - clearTimeout(self._autosave_timeout) - self._autosave_timeout = setTimeout( - function () { - self.autosave() - }, - self.options.autosave.submit_delay || - self.options.autosave.delay || - 1000, - ) - }) - } - - function calcHeight(naturalWidth, naturalHeight) { - var height - var viewportWidth = window - .getComputedStyle(document.querySelector('.CodeMirror-sizer')) - .width.replace('px', '') - if (naturalWidth < viewportWidth) { - height = naturalHeight + 'px' - } else { - height = (naturalHeight / naturalWidth) * 100 + '%' - } - return height - } - - var _vm = this - - function assignImageBlockAttributes(parentEl, img) { - parentEl.setAttribute('data-img-src', img.url) - parentEl.setAttribute( - 'style', - '--bg-image:url(' + - img.url + - ');--width:' + - img.naturalWidth + - 'px;--height:' + - calcHeight(img.naturalWidth, img.naturalHeight), - ) - _vm.codemirror.setSize() - } - - function handleImages() { - if (!options.previewImagesInEditor) { - return - } - - easyMDEContainer - .querySelectorAll('.cm-image-marker') - .forEach(function (e) { - var parentEl = e.parentElement - if (!parentEl.innerText.match(/^!\[.*?\]\(.*\)/g)) { - // if img pasted on the same line with other text, don't preview, preview only images on separate line - return - } - if (!parentEl.hasAttribute('data-img-src')) { - var srcAttr = parentEl.innerText.match('\\((.*)\\)') // might require better parsing according to markdown spec - if (!window.EMDEimagesCache) { - window.EMDEimagesCache = {} - } - - if (srcAttr && srcAttr.length >= 2) { - var keySrc = srcAttr[1] - - if (options.imagesPreviewHandler) { - var newSrc = options.imagesPreviewHandler( - srcAttr[1], - ) - // defensive check making sure the handler provided by the user returns a string - if (typeof newSrc === 'string') { - keySrc = newSrc - } - } - - if (!window.EMDEimagesCache[keySrc]) { - var img = document.createElement('img') - img.onload = function () { - window.EMDEimagesCache[keySrc] = { - naturalWidth: img.naturalWidth, - naturalHeight: img.naturalHeight, - url: keySrc, - } - assignImageBlockAttributes( - parentEl, - window.EMDEimagesCache[keySrc], - ) - } - img.src = keySrc - } else { - assignImageBlockAttributes( - parentEl, - window.EMDEimagesCache[keySrc], - ) - } - } - } - }) - } - - this.codemirror.on('update', function () { - handleImages() - }) - - this.gui.sideBySide = this.createSideBySide() - this._rendered = this.element - - if (options.autofocus === true || el.autofocus) { - this.codemirror.focus() - } - - // Fixes CodeMirror bug (#344) - var temp_cm = this.codemirror - setTimeout( - function () { - temp_cm.refresh() - }.bind(temp_cm), - 0, - ) -} - -EasyMDE.prototype.cleanup = function () { - document.removeEventListener('keydown', this.documentOnKeyDown) -} - -// Safari, in Private Browsing Mode, looks like it supports localStorage but all calls to setItem throw QuotaExceededError. We're going to detect this and set a variable accordingly. -function isLocalStorageAvailable() { - if (typeof localStorage === 'object') { - try { - localStorage.setItem('smde_localStorage', 1) - localStorage.removeItem('smde_localStorage') - } catch (e) { - return false - } - } else { - return false - } - - return true -} - -EasyMDE.prototype.autosave = function () { - if (isLocalStorageAvailable()) { - var easyMDE = this - - if ( - this.options.autosave.uniqueId == undefined || - this.options.autosave.uniqueId == '' - ) { - console.log( - 'EasyMDE: You must set a uniqueId to use the autosave feature', - ) - return - } - - if (this.options.autosave.binded !== true) { - if ( - easyMDE.element.form != null && - easyMDE.element.form != undefined - ) { - easyMDE.element.form.addEventListener('submit', function () { - clearTimeout(easyMDE.autosaveTimeoutId) - easyMDE.autosaveTimeoutId = undefined - - localStorage.removeItem( - 'smde_' + easyMDE.options.autosave.uniqueId, - ) - }) - } - - this.options.autosave.binded = true - } - - if (this.options.autosave.loaded !== true) { - if ( - typeof localStorage.getItem( - 'smde_' + this.options.autosave.uniqueId, - ) == 'string' && - localStorage.getItem( - 'smde_' + this.options.autosave.uniqueId, - ) != '' - ) { - this.codemirror.setValue( - localStorage.getItem( - 'smde_' + this.options.autosave.uniqueId, - ), - ) - this.options.autosave.foundSavedValue = true - } - - this.options.autosave.loaded = true - } - - var value = easyMDE.value() - if (value !== '') { - localStorage.setItem( - 'smde_' + this.options.autosave.uniqueId, - value, - ) - } else { - localStorage.removeItem('smde_' + this.options.autosave.uniqueId) - } - - var el = document.getElementById('autosaved') - if (el != null && el != undefined && el != '') { - var d = new Date() - var dd = new Intl.DateTimeFormat( - [this.options.autosave.timeFormat.locale, 'en-US'], - this.options.autosave.timeFormat.format, - ).format(d) - var save = - this.options.autosave.text == undefined - ? 'Autosaved: ' - : this.options.autosave.text - - el.innerHTML = save + dd - } - } else { - console.log('EasyMDE: localStorage not available, cannot autosave') - } -} - -EasyMDE.prototype.clearAutosavedValue = function () { - if (isLocalStorageAvailable()) { - if ( - this.options.autosave == undefined || - this.options.autosave.uniqueId == undefined || - this.options.autosave.uniqueId == '' - ) { - console.log( - 'EasyMDE: You must set a uniqueId to clear the autosave value', - ) - return - } - - localStorage.removeItem('smde_' + this.options.autosave.uniqueId) - } else { - console.log('EasyMDE: localStorage not available, cannot autosave') - } -} - -/** - * Open the browse-file window to upload an image to a server. - * @param [onSuccess] {function} see EasyMDE.prototype.uploadImage - * @param [onError] {function} see EasyMDE.prototype.uploadImage - */ -EasyMDE.prototype.openBrowseFileWindow = function (onSuccess, onError) { - var self = this - var imageInput = this.gui.toolbar.getElementsByClassName('imageInput')[0] - imageInput.click() //dispatchEvent(new MouseEvent('click')); // replaced with click() for IE11 compatibility. - function onChange(event) { - if (self.options.imageUploadFunction) { - self.uploadImagesUsingCustomFunction( - self.options.imageUploadFunction, - event.target.files, - ) - } else { - self.uploadImages(event.target.files, onSuccess, onError) - } - imageInput.removeEventListener('change', onChange) - } - - imageInput.addEventListener('change', onChange) -} - -/** - * Upload an image to the server. - * - * @param file {File} The image to upload, as a HTML5 File object (https://developer.mozilla.org/en-US/docs/Web/API/File) - * @param [onSuccess] {function} A callback function to execute after the image has been successfully uploaded, with one parameter: - * - url (string): The URL of the uploaded image. - * @param [onError] {function} A callback function to execute when the image upload fails, with one parameter: - * - error (string): the detailed error to display to the user (based on messages from options.errorMessages). - */ -EasyMDE.prototype.uploadImage = function (file, onSuccess, onError) { - var self = this - onSuccess = - onSuccess || - function onSuccess(imageUrl) { - afterImageUploaded(self, imageUrl) - } - - function onErrorSup(errorMessage) { - // show error on status bar and reset after 10000ms - self.updateStatusBar('upload-image', errorMessage) - - setTimeout(function () { - self.updateStatusBar('upload-image', self.options.imageTexts.sbInit) - }, 10000) - - // run custom error handler - if (onError && typeof onError === 'function') { - onError(errorMessage) - } - // run error handler from options, this alerts the message. - self.options.errorCallback(errorMessage) - } - - function fillErrorMessage(errorMessage) { - var units = self.options.imageTexts.sizeUnits.split(',') - return errorMessage - .replace('#image_name#', file.name) - .replace('#image_size#', humanFileSize(file.size, units)) - .replace( - '#image_max_size#', - humanFileSize(self.options.imageMaxSize, units), - ) - } - - if (file.size > this.options.imageMaxSize) { - onErrorSup(fillErrorMessage(this.options.errorMessages.fileTooLarge)) - return - } - - var formData = new FormData() - formData.append('image', file) - - // insert CSRF body token if provided in config. - if (self.options.imageCSRFToken && !self.options.imageCSRFHeader) { - formData.append(self.options.imageCSRFName, self.options.imageCSRFToken) - } - - var request = new XMLHttpRequest() - request.upload.onprogress = function (event) { - if (event.lengthComputable) { - var progress = '' + Math.round((event.loaded * 100) / event.total) - self.updateStatusBar( - 'upload-image', - self.options.imageTexts.sbProgress - .replace('#file_name#', file.name) - .replace('#progress#', progress), - ) - } - } - request.open('POST', this.options.imageUploadEndpoint) - - // insert CSRF header token if provided in config. - if (self.options.imageCSRFToken && self.options.imageCSRFHeader) { - request.setRequestHeader( - self.options.imageCSRFName, - self.options.imageCSRFToken, - ) - } - - request.onload = function () { - try { - var response = JSON.parse(this.responseText) - } catch (error) { - console.error('EasyMDE: The server did not return a valid json.') - onErrorSup(fillErrorMessage(self.options.errorMessages.importError)) - return - } - if ( - this.status === 200 && - response && - !response.error && - response.data && - response.data.filePath - ) { - onSuccess( - (self.options.imagePathAbsolute - ? '' - : window.location.origin + '/') + response.data.filePath, - ) - } else { - if ( - response.error && - response.error in self.options.errorMessages - ) { - // preformatted error message - onErrorSup( - fillErrorMessage( - self.options.errorMessages[response.error], - ), - ) - } else if (response.error) { - // server side generated error message - onErrorSup(fillErrorMessage(response.error)) - } else { - //unknown error - console.error( - 'EasyMDE: Received an unexpected response after uploading the image.' + - this.status + - ' (' + - this.statusText + - ')', - ) - onErrorSup( - fillErrorMessage(self.options.errorMessages.importError), - ) - } - } - } - - request.onerror = function (event) { - console.error( - 'EasyMDE: An unexpected error occurred when trying to upload the image.' + - event.target.status + - ' (' + - event.target.statusText + - ')', - ) - onErrorSup(self.options.errorMessages.importError) - } - - request.send(formData) -} - -/** - * Upload an image to the server using a custom upload function. - * - * @param imageUploadFunction {Function} The custom function to upload the image passed in options - * @param file {File} The image to upload, as a HTML5 File object (https://developer.mozilla.org/en-US/docs/Web/API/File). - */ -EasyMDE.prototype.uploadImageUsingCustomFunction = function ( - imageUploadFunction, - file, -) { - var self = this - - function onSuccess(imageUrl) { - afterImageUploaded(self, imageUrl) - } - - function onError(errorMessage) { - var filledErrorMessage = fillErrorMessage(errorMessage) - // show error on status bar and reset after 10000ms - self.updateStatusBar('upload-image', filledErrorMessage) - - setTimeout(function () { - self.updateStatusBar('upload-image', self.options.imageTexts.sbInit) - }, 10000) - - // run error handler from options, this alerts the message. - self.options.errorCallback(filledErrorMessage) - } - - function fillErrorMessage(errorMessage) { - var units = self.options.imageTexts.sizeUnits.split(',') - return errorMessage - .replace('#image_name#', file.name) - .replace('#image_size#', humanFileSize(file.size, units)) - .replace( - '#image_max_size#', - humanFileSize(self.options.imageMaxSize, units), - ) - } - - imageUploadFunction.apply(this, [file, onSuccess, onError]) -} - -EasyMDE.prototype.setPreviewMaxHeight = function () { - var cm = this.codemirror - var wrapper = cm.getWrapperElement() - var preview = wrapper.nextSibling - - // Calc preview max height - var paddingTop = parseInt(window.getComputedStyle(wrapper).paddingTop) - var borderTopWidth = parseInt( - window.getComputedStyle(wrapper).borderTopWidth, - ) - var optionsMaxHeight = parseInt(this.options.maxHeight) - var wrapperMaxHeight = - optionsMaxHeight + paddingTop * 2 + borderTopWidth * 2 - var previewMaxHeight = wrapperMaxHeight.toString() + 'px' - - preview.style.height = previewMaxHeight -} - -EasyMDE.prototype.createSideBySide = function () { - var cm = this.codemirror - var wrapper = cm.getWrapperElement() - var preview = wrapper.nextSibling - - if (!preview || !preview.classList.contains('editor-preview-side')) { - preview = document.createElement('div') - preview.className = 'editor-preview-side' - - if (this.options.previewClass) { - if (Array.isArray(this.options.previewClass)) { - for (var i = 0; i < this.options.previewClass.length; i++) { - preview.classList.add(this.options.previewClass[i]) - } - } else if (typeof this.options.previewClass === 'string') { - preview.classList.add(this.options.previewClass) - } - } - - wrapper.parentNode.insertBefore(preview, wrapper.nextSibling) - } - - if (typeof this.options.maxHeight !== 'undefined') { - this.setPreviewMaxHeight() - } - - if (this.options.syncSideBySidePreviewScroll === false) return preview - // Syncs scroll editor -> preview - var cScroll = false - var pScroll = false - cm.on('scroll', function (v) { - if (cScroll) { - cScroll = false - return - } - pScroll = true - var height = v.getScrollInfo().height - v.getScrollInfo().clientHeight - var ratio = parseFloat(v.getScrollInfo().top) / height - var move = (preview.scrollHeight - preview.clientHeight) * ratio - preview.scrollTop = move - }) - - // Syncs scroll preview -> editor - preview.onscroll = function () { - if (pScroll) { - pScroll = false - return - } - cScroll = true - var height = preview.scrollHeight - preview.clientHeight - var ratio = parseFloat(preview.scrollTop) / height - var move = - (cm.getScrollInfo().height - cm.getScrollInfo().clientHeight) * - ratio - cm.scrollTo(0, move) - } - return preview -} - -EasyMDE.prototype.createToolbar = function (items) { - items = items || this.options.toolbar - - if (!items || items.length === 0) { - return - } - var i - for (i = 0; i < items.length; i++) { - if (toolbarBuiltInButtons[items[i]] != undefined) { - items[i] = toolbarBuiltInButtons[items[i]] - } - } - - var bar = document.createElement('div') - bar.className = 'editor-toolbar' - bar.setAttribute('role', 'toolbar') - - var self = this - - var toolbarData = {} - self.toolbar = items - - for (i = 0; i < items.length; i++) { - if (items[i].name == 'guide' && self.options.toolbarGuideIcon === false) - continue - - if ( - self.options.hideIcons && - self.options.hideIcons.indexOf(items[i].name) != -1 - ) - continue - - // Fullscreen does not work well on mobile devices (even tablets) - // In the future, hopefully this can be resolved - if ( - (items[i].name == 'fullscreen' || - items[i].name == 'side-by-side') && - isMobile() - ) - continue - - // Don't include trailing separators - if (items[i] === '|') { - var nonSeparatorIconsFollow = false - - for (var x = i + 1; x < items.length; x++) { - if ( - items[x] !== '|' && - (!self.options.hideIcons || - self.options.hideIcons.indexOf(items[x].name) == -1) - ) { - nonSeparatorIconsFollow = true - } - } - - if (!nonSeparatorIconsFollow) continue - } - - // Create the icon and append to the toolbar - ;(function (item) { - var el - if (item === '|') { - el = createSep() - } else if (item.children) { - el = createToolbarDropdown( - item, - self.options.toolbarTips, - self.options.shortcuts, - self, - ) - } else { - el = createToolbarButton( - item, - true, - self.options.toolbarTips, - self.options.shortcuts, - 'button', - self, - ) - } - - toolbarData[item.name || item] = el - bar.appendChild(el) - - // Create the input element (ie. ), used among - // with the 'import-image' icon to open the browse-file window. - if (item.name === 'upload-image') { - var imageInput = document.createElement('input') - imageInput.className = 'imageInput' - imageInput.type = 'file' - imageInput.multiple = true - imageInput.name = 'image' - imageInput.accept = self.options.imageAccept - imageInput.style.display = 'none' - imageInput.style.opacity = 0 - bar.appendChild(imageInput) - } - })(items[i]) - } - - self.toolbar_div = bar - self.toolbarElements = toolbarData - - var cm = this.codemirror - cm.on('cursorActivity', function () { - var stat = getState(cm) - - for (var key in toolbarData) { - ;(function (key) { - var el = toolbarData[key] - if (stat[key]) { - el.classList.add('active') - } else if (key != 'fullscreen' && key != 'side-by-side') { - el.classList.remove('active') - } - })(key) - } - }) - - var cmWrapper = cm.getWrapperElement() - cmWrapper.parentNode.insertBefore(bar, cmWrapper) - return bar -} - -EasyMDE.prototype.createStatusbar = function (status) { - // Initialize - status = status || this.options.status - var options = this.options - var cm = this.codemirror - - // Make sure the status variable is valid - if (!status || status.length === 0) { - return - } - - // Set up the built-in items - var items = [] - var i, onUpdate, onActivity, defaultValue - - for (i = 0; i < status.length; i++) { - // Reset some values - onUpdate = undefined - onActivity = undefined - defaultValue = undefined - - // Handle if custom or not - if (typeof status[i] === 'object') { - items.push({ - className: status[i].className, - defaultValue: status[i].defaultValue, - onUpdate: status[i].onUpdate, - onActivity: status[i].onActivity, - }) - } else { - var name = status[i] - - if (name === 'words') { - defaultValue = function (el) { - el.innerHTML = wordCount(cm.getValue()) - } - onUpdate = function (el) { - el.innerHTML = wordCount(cm.getValue()) - } - } else if (name === 'lines') { - defaultValue = function (el) { - el.innerHTML = cm.lineCount() - } - onUpdate = function (el) { - el.innerHTML = cm.lineCount() - } - } else if (name === 'cursor') { - defaultValue = function (el) { - el.innerHTML = '1:1' - } - onActivity = function (el) { - var pos = cm.getCursor() - var posLine = pos.line + 1 - var posColumn = pos.ch + 1 - el.innerHTML = posLine + ':' + posColumn - } - } else if (name === 'autosave') { - defaultValue = function (el) { - if ( - options.autosave != undefined && - options.autosave.enabled === true - ) { - el.setAttribute('id', 'autosaved') - } - } - } else if (name === 'upload-image') { - defaultValue = function (el) { - el.innerHTML = options.imageTexts.sbInit - } - } - - items.push({ - className: name, - defaultValue: defaultValue, - onUpdate: onUpdate, - onActivity: onActivity, - }) - } - } - - // Create element for the status bar - var bar = document.createElement('div') - bar.className = 'editor-statusbar' - - // Create a new span for each item - for (i = 0; i < items.length; i++) { - // Store in temporary variable - var item = items[i] - - // Create span element - var el = document.createElement('span') - el.className = item.className - - // Ensure the defaultValue is a function - if (typeof item.defaultValue === 'function') { - item.defaultValue(el) - } - - // Ensure the onUpdate is a function - if (typeof item.onUpdate === 'function') { - // Create a closure around the span of the current action, then execute the onUpdate handler - this.codemirror.on( - 'update', - (function (el, item) { - return function () { - item.onUpdate(el) - } - })(el, item), - ) - } - if (typeof item.onActivity === 'function') { - // Create a closure around the span of the current action, then execute the onActivity handler - this.codemirror.on( - 'cursorActivity', - (function (el, item) { - return function () { - item.onActivity(el) - } - })(el, item), - ) - } - - // Append the item to the status bar - bar.appendChild(el) - } - - // Insert the status bar into the DOM - var cmWrapper = this.codemirror.getWrapperElement() - cmWrapper.parentNode.insertBefore(bar, cmWrapper.nextSibling) - return bar -} - -/** - * Get or set the text content. - */ -EasyMDE.prototype.value = function (val) { - var cm = this.codemirror - if (val === undefined) { - return cm.getValue() - } else { - cm.getDoc().setValue(val) - if (this.isPreviewActive()) { - var wrapper = cm.getWrapperElement() - var preview = wrapper.lastChild - var preview_result = this.options.previewRender(val, preview) - if (preview_result !== null) { - preview.innerHTML = preview_result - } - } - return this - } -} - -/** - * Bind static methods for exports. - */ -EasyMDE.toggleBold = toggleBold -EasyMDE.toggleItalic = toggleItalic -EasyMDE.toggleStrikethrough = toggleStrikethrough -EasyMDE.toggleBlockquote = toggleBlockquote -EasyMDE.toggleHeadingSmaller = toggleHeadingSmaller -EasyMDE.toggleHeadingBigger = toggleHeadingBigger -EasyMDE.toggleHeading1 = toggleHeading1 -EasyMDE.toggleHeading2 = toggleHeading2 -EasyMDE.toggleHeading3 = toggleHeading3 -EasyMDE.toggleHeading4 = toggleHeading4 -EasyMDE.toggleHeading5 = toggleHeading5 -EasyMDE.toggleHeading6 = toggleHeading6 -EasyMDE.toggleCodeBlock = toggleCodeBlock -EasyMDE.toggleUnorderedList = toggleUnorderedList -EasyMDE.toggleOrderedList = toggleOrderedList -EasyMDE.cleanBlock = cleanBlock -EasyMDE.drawLink = drawLink -EasyMDE.drawImage = drawImage -EasyMDE.drawUploadedImage = drawUploadedImage -EasyMDE.drawTable = drawTable -EasyMDE.drawHorizontalRule = drawHorizontalRule -EasyMDE.undo = undo -EasyMDE.redo = redo -EasyMDE.togglePreview = togglePreview -EasyMDE.toggleSideBySide = toggleSideBySide -EasyMDE.toggleFullScreen = toggleFullScreen - -/** - * Bind instance methods for exports. - */ -EasyMDE.prototype.toggleBold = function () { - toggleBold(this) -} -EasyMDE.prototype.toggleItalic = function () { - toggleItalic(this) -} -EasyMDE.prototype.toggleStrikethrough = function () { - toggleStrikethrough(this) -} -EasyMDE.prototype.toggleBlockquote = function () { - toggleBlockquote(this) -} -EasyMDE.prototype.toggleHeadingSmaller = function () { - toggleHeadingSmaller(this) -} -EasyMDE.prototype.toggleHeadingBigger = function () { - toggleHeadingBigger(this) -} -EasyMDE.prototype.toggleHeading1 = function () { - toggleHeading1(this) -} -EasyMDE.prototype.toggleHeading2 = function () { - toggleHeading2(this) -} -EasyMDE.prototype.toggleHeading3 = function () { - toggleHeading3(this) -} -EasyMDE.prototype.toggleHeading4 = function () { - toggleHeading4(this) -} -EasyMDE.prototype.toggleHeading5 = function () { - toggleHeading5(this) -} -EasyMDE.prototype.toggleHeading6 = function () { - toggleHeading6(this) -} -EasyMDE.prototype.toggleCodeBlock = function () { - toggleCodeBlock(this) -} -EasyMDE.prototype.toggleUnorderedList = function () { - toggleUnorderedList(this) -} -EasyMDE.prototype.toggleOrderedList = function () { - toggleOrderedList(this) -} -EasyMDE.prototype.cleanBlock = function () { - cleanBlock(this) -} -EasyMDE.prototype.drawLink = function () { - drawLink(this) -} -EasyMDE.prototype.drawImage = function () { - drawImage(this) -} -EasyMDE.prototype.drawUploadedImage = function () { - drawUploadedImage(this) -} -EasyMDE.prototype.drawTable = function () { - drawTable(this) -} -EasyMDE.prototype.drawHorizontalRule = function () { - drawHorizontalRule(this) -} -EasyMDE.prototype.undo = function () { - undo(this) -} -EasyMDE.prototype.redo = function () { - redo(this) -} -EasyMDE.prototype.togglePreview = function () { - togglePreview(this) -} -EasyMDE.prototype.toggleSideBySide = function () { - toggleSideBySide(this) -} -EasyMDE.prototype.toggleFullScreen = function () { - toggleFullScreen(this) -} - -EasyMDE.prototype.isPreviewActive = function () { - var cm = this.codemirror - var wrapper = cm.getWrapperElement() - var preview = wrapper.lastChild - - return preview.classList.contains('editor-preview-active') -} - -EasyMDE.prototype.isSideBySideActive = function () { - var cm = this.codemirror - var wrapper = cm.getWrapperElement() - var preview = wrapper.nextSibling - - return preview.classList.contains('editor-preview-active-side') -} - -EasyMDE.prototype.isFullscreenActive = function () { - var cm = this.codemirror - - return cm.getOption('fullScreen') -} - -EasyMDE.prototype.getState = function () { - var cm = this.codemirror - - return getState(cm) -} - -EasyMDE.prototype.toTextArea = function () { - var cm = this.codemirror - var wrapper = cm.getWrapperElement() - var easyMDEContainer = wrapper.parentNode - - if (easyMDEContainer) { - if (this.gui.toolbar) { - easyMDEContainer.removeChild(this.gui.toolbar) - } - if (this.gui.statusbar) { - easyMDEContainer.removeChild(this.gui.statusbar) - } - if (this.gui.sideBySide) { - easyMDEContainer.removeChild(this.gui.sideBySide) - } - } - - // Unwrap easyMDEcontainer before codemirror toTextArea() call - easyMDEContainer.parentNode.insertBefore(wrapper, easyMDEContainer) - easyMDEContainer.remove() - - cm.toTextArea() - - if (this.autosaveTimeoutId) { - clearTimeout(this.autosaveTimeoutId) - this.autosaveTimeoutId = undefined - this.clearAutosavedValue() - } -} - -window.EasyMDE = EasyMDE diff --git a/vendor/filament/forms/resources/js/components/rich-editor.js b/vendor/filament/forms/resources/js/components/rich-editor.js deleted file mode 100644 index a482872f..00000000 --- a/vendor/filament/forms/resources/js/components/rich-editor.js +++ /dev/null @@ -1,68 +0,0 @@ -import Trix from 'trix/dist/trix' - -Trix.config.blockAttributes.default.tagName = 'p' - -Trix.config.blockAttributes.default.breakOnReturn = true - -Trix.config.blockAttributes.heading = { - tagName: 'h2', - terminal: true, - breakOnReturn: true, - group: false, -} - -Trix.config.blockAttributes.subHeading = { - tagName: 'h3', - terminal: true, - breakOnReturn: true, - group: false, -} - -Trix.config.textAttributes.underline = { - style: { textDecoration: 'underline' }, - inheritable: true, - parser: (element) => { - const style = window.getComputedStyle(element) - - return style.textDecoration.includes('underline') - }, -} - -Trix.Block.prototype.breaksOnReturn = function () { - const lastAttribute = this.getLastAttribute() - const blockConfig = Trix.getBlockConfig( - lastAttribute ? lastAttribute : 'default', - ) - - return blockConfig?.breakOnReturn ?? false -} - -Trix.LineBreakInsertion.prototype.shouldInsertBlockBreak = function () { - if ( - this.block.hasAttributes() && - this.block.isListItem() && - !this.block.isEmpty() - ) { - return this.startLocation.offset > 0 - } else { - return !this.shouldBreakFormattedBlock() ? this.breaksOnReturn : false - } -} - -export default function richEditorFormComponent({ state }) { - return { - state, - - init: function () { - this.$refs.trix?.editor?.loadHTML(this.state) - - this.$watch('state', () => { - if (document.activeElement === this.$refs.trix) { - return - } - - this.$refs.trix?.editor?.loadHTML(this.state) - }) - }, - } -} diff --git a/vendor/filament/forms/resources/js/components/select.js b/vendor/filament/forms/resources/js/components/select.js deleted file mode 100644 index f5760c42..00000000 --- a/vendor/filament/forms/resources/js/components/select.js +++ /dev/null @@ -1,314 +0,0 @@ -import Choices from 'choices.js' - -export default function selectFormComponent({ - canSelectPlaceholder, - isHtmlAllowed, - getOptionLabelUsing, - getOptionLabelsUsing, - getOptionsUsing, - getSearchResultsUsing, - isAutofocused, - isMultiple, - isSearchable, - hasDynamicOptions, - hasDynamicSearchResults, - livewireId, - loadingMessage, - maxItems, - maxItemsMessage, - noSearchResultsMessage, - options, - optionsLimit, - placeholder, - position, - searchDebounce, - searchingMessage, - searchPrompt, - searchableOptionFields, - state, - statePath, -}) { - return { - isSearching: false, - - select: null, - - selectedOptions: [], - - isStateBeingUpdated: false, - - state, - - init: async function () { - this.select = new Choices(this.$refs.input, { - allowHTML: isHtmlAllowed, - duplicateItemsAllowed: false, - itemSelectText: '', - loadingText: loadingMessage, - maxItemCount: maxItems ?? -1, - maxItemText: (maxItemCount) => - window.pluralize(maxItemsMessage, maxItemCount, { - count: maxItemCount, - }), - noChoicesText: searchPrompt, - noResultsText: noSearchResultsMessage, - placeholderValue: placeholder, - position: position ?? 'auto', - removeItemButton: canSelectPlaceholder, - renderChoiceLimit: optionsLimit, - searchEnabled: isSearchable, - searchFields: searchableOptionFields ?? ['label'], - searchPlaceholderValue: searchPrompt, - searchResultLimit: optionsLimit, - shouldSort: false, - searchFloor: hasDynamicSearchResults ? 0 : 1, - }) - - await this.refreshChoices({ withInitialOptions: true }) - - if (![null, undefined, ''].includes(this.state)) { - this.select.setChoiceByValue(this.formatState(this.state)) - } - - this.refreshPlaceholder() - - if (isAutofocused) { - this.select.showDropdown() - } - - this.$refs.input.addEventListener('change', () => { - this.refreshPlaceholder() - - if (this.isStateBeingUpdated) { - return - } - - this.isStateBeingUpdated = true - this.state = this.select.getValue(true) ?? null - this.$nextTick(() => (this.isStateBeingUpdated = false)) - }) - - if (hasDynamicOptions) { - this.$refs.input.addEventListener('showDropdown', async () => { - this.select.clearChoices() - await this.select.setChoices([ - { - label: loadingMessage, - value: '', - disabled: true, - }, - ]) - - await this.refreshChoices() - }) - } - - if (hasDynamicSearchResults) { - this.$refs.input.addEventListener('search', async (event) => { - let search = event.detail.value?.trim() - - this.isSearching = true - - this.select.clearChoices() - await this.select.setChoices([ - { - label: [null, undefined, ''].includes(search) - ? loadingMessage - : searchingMessage, - value: '', - disabled: true, - }, - ]) - }) - - this.$refs.input.addEventListener( - 'search', - Alpine.debounce(async (event) => { - await this.refreshChoices({ - search: event.detail.value?.trim(), - }) - - this.isSearching = false - }, searchDebounce), - ) - } - - if (!isMultiple) { - window.addEventListener( - 'filament-forms::select.refreshSelectedOptionLabel', - async (event) => { - if (event.detail.livewireId !== livewireId) { - return - } - - if (event.detail.statePath !== statePath) { - return - } - - await this.refreshChoices({ - withInitialOptions: !hasDynamicOptions, - }) - }, - ) - } - - this.$watch('state', async () => { - if (!this.select) { - return - } - - this.refreshPlaceholder() - - if (this.isStateBeingUpdated) { - return - } - - await this.refreshChoices({ - withInitialOptions: !hasDynamicOptions, - }) - }) - }, - - destroy: function () { - this.select.destroy() - this.select = null - }, - - refreshChoices: async function (config = {}) { - const choices = await this.getChoices(config) - - if (!this.select) { - return - } - - this.select.clearStore() - - this.refreshPlaceholder() - - this.setChoices(choices) - - if (![null, undefined, ''].includes(this.state)) { - this.select.setChoiceByValue(this.formatState(this.state)) - } - }, - - setChoices: function (choices) { - this.select.setChoices(choices, 'value', 'label', true) - }, - - getChoices: async function (config = {}) { - const existingOptions = await this.getExistingOptions(config) - - return existingOptions.concat( - await this.getMissingOptions(existingOptions), - ) - }, - - getExistingOptions: async function ({ search, withInitialOptions }) { - if (withInitialOptions) { - return options - } - - let results = [] - - if (search !== '' && search !== null && search !== undefined) { - results = await getSearchResultsUsing(search) - } else { - results = await getOptionsUsing() - } - - return results.map((result) => { - if (result.choices) { - result.choices = result.choices.map((groupedOption) => { - groupedOption.selected = Array.isArray(this.state) - ? this.state.includes(groupedOption.value) - : this.state === groupedOption.value - - return groupedOption - }) - - return result - } - - result.selected = Array.isArray(this.state) - ? this.state.includes(result.value) - : this.state === result.value - - return result - }) - }, - - refreshPlaceholder: function () { - if (isMultiple) { - return - } - - this.select._renderItems() - - if (![null, undefined, ''].includes(this.state)) { - return - } - - this.$el.querySelector('.choices__list--single').innerHTML = - `
    ${ - placeholder ?? '' - }
    ` - }, - - formatState: function (state) { - if (isMultiple) { - return (state ?? []).map((item) => item?.toString()) - } - - return state?.toString() - }, - - getMissingOptions: async function (existingOptions) { - let state = this.formatState(this.state) - - if ([null, undefined, '', [], {}].includes(state)) { - return {} - } - - const existingOptionValues = new Set() - - existingOptions.forEach((existingOption) => { - if (existingOption.choices) { - existingOption.choices.forEach((groupedExistingOption) => - existingOptionValues.add(groupedExistingOption.value), - ) - - return - } - - existingOptionValues.add(existingOption.value) - }) - - if (isMultiple) { - if (state.every((value) => existingOptionValues.has(value))) { - return {} - } - - return (await getOptionLabelsUsing()) - .filter((option) => !existingOptionValues.has(option.value)) - .map((option) => { - option.selected = true - - return option - }) - } - - if (existingOptionValues.has(state)) { - return existingOptionValues - } - - return [ - { - label: await getOptionLabelUsing(), - value: state, - selected: true, - }, - ] - }, - } -} diff --git a/vendor/filament/forms/resources/js/components/tags-input.js b/vendor/filament/forms/resources/js/components/tags-input.js deleted file mode 100644 index 21a4812a..00000000 --- a/vendor/filament/forms/resources/js/components/tags-input.js +++ /dev/null @@ -1,72 +0,0 @@ -export default function tagsInputFormComponent({ state, splitKeys }) { - return { - newTag: '', - - state, - - createTag: function () { - this.newTag = this.newTag.trim() - - if (this.newTag === '') { - return - } - - if (this.state.includes(this.newTag)) { - this.newTag = '' - - return - } - - this.state.push(this.newTag) - - this.newTag = '' - }, - - deleteTag: function (tagToDelete) { - this.state = this.state.filter((tag) => tag !== tagToDelete) - }, - - reorderTags: function (event) { - const reordered = this.state.splice(event.oldIndex, 1)[0] - this.state.splice(event.newIndex, 0, reordered) - - this.state = [...this.state] - }, - - input: { - ['x-on:blur']: 'createTag()', - ['x-model']: 'newTag', - ['x-on:keydown'](event) { - if (['Enter', ...splitKeys].includes(event.key)) { - event.preventDefault() - event.stopPropagation() - - this.createTag() - } - }, - ['x-on:paste']() { - this.$nextTick(() => { - if (splitKeys.length === 0) { - this.createTag() - - return - } - - const pattern = splitKeys - .map((key) => - key.replace(/[/\-\\^$*+?.()|[\]{}]/g, '\\$&'), - ) - .join('|') - - this.newTag - .split(new RegExp(pattern, 'g')) - .forEach((tag) => { - this.newTag = tag - - this.createTag() - }) - }) - }, - }, - } -} diff --git a/vendor/filament/forms/resources/js/components/textarea.js b/vendor/filament/forms/resources/js/components/textarea.js deleted file mode 100644 index e8d38fa6..00000000 --- a/vendor/filament/forms/resources/js/components/textarea.js +++ /dev/null @@ -1,14 +0,0 @@ -export default function textareaFormComponent({ initialHeight }) { - return { - init: function () { - this.render() - }, - - render: function () { - if (this.$el.scrollHeight > 0) { - this.$el.style.height = initialHeight + 'rem' - this.$el.style.height = this.$el.scrollHeight + 'px' - } - }, - } -} diff --git a/vendor/filament/forms/resources/js/index.js b/vendor/filament/forms/resources/js/index.js deleted file mode 100644 index feafed91..00000000 --- a/vendor/filament/forms/resources/js/index.js +++ /dev/null @@ -1,6 +0,0 @@ -import '../css/components/date-time-picker.css' -import '../css/components/file-upload.css' -import '../css/components/markdown-editor.css' -import '../css/components/rich-editor.css' -import '../css/components/select.css' -import '../css/components/tags-input.css' diff --git a/vendor/filament/forms/resources/lang/ar/components.php b/vendor/filament/forms/resources/lang/ar/components.php deleted file mode 100644 index 21ab4b1f..00000000 --- a/vendor/filament/forms/resources/lang/ar/components.php +++ /dev/null @@ -1,438 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'نسخ', - ], - - 'add' => [ - 'label' => 'إضافة إلى :label', - ], - - 'add_between' => [ - 'label' => 'إدراج بين الوحدات', - ], - - 'delete' => [ - 'label' => 'حذف', - ], - - 'reorder' => [ - 'label' => 'نقل', - ], - - 'move_down' => [ - 'label' => 'تحريك لأسفل', - ], - - 'move_up' => [ - 'label' => 'تحريك لأعلى', - ], - - 'collapse' => [ - 'label' => 'طيّ', - ], - - 'expand' => [ - 'label' => 'توسيع', - ], - - 'collapse_all' => [ - 'label' => 'طيّ الكل', - ], - - 'expand_all' => [ - 'label' => 'توسيع الكل', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'إلغاء تحديد الكل', - ], - - 'select_all' => [ - 'label' => 'تحديد الكل', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'إلغاء', - ], - - 'drag_crop' => [ - 'label' => 'وضع السحب "قص"', - ], - - 'drag_move' => [ - 'label' => 'وضع السحب "تحريك"', - ], - - 'flip_horizontal' => [ - 'label' => 'قلب الصورة أفقياً', - ], - - 'flip_vertical' => [ - 'label' => 'قلب الصورة عمودياً', - ], - - 'move_down' => [ - 'label' => 'تحريك الصورة لأسفل', - ], - - 'move_left' => [ - 'label' => 'تحريك الصورة لليسار', - ], - - 'move_right' => [ - 'label' => 'تحريك الصورة لليمين', - ], - - 'move_up' => [ - 'label' => 'تحريك الصورة لأعلى', - ], - - 'reset' => [ - 'label' => 'استعادة', - ], - - 'rotate_left' => [ - 'label' => 'تدوير الصورة لليسار', - ], - - 'rotate_right' => [ - 'label' => 'تدوير الصورة لليمين', - ], - - 'set_aspect_ratio' => [ - 'label' => 'تعيين نسبة العرض للإرتفاع إلى :ratio', - ], - - 'save' => [ - 'label' => 'حفظ', - ], - - 'zoom_100' => [ - 'label' => 'تحجيم الصورة إلى 100%', - ], - - 'zoom_in' => [ - 'label' => 'تكبير', - ], - - 'zoom_out' => [ - 'label' => 'تصغير', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'الارتفاع', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'الدوران', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => 'العرض', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'نسبة الأبعاد', - - 'no_fixed' => [ - 'label' => 'حر', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'لا يوصى بتحرير ملفات SVG لأنه قد يؤدي إلى فقدان الجودة عند تغيير الحجم.\n هل أنت متأكد من رغبتك في المتابعة؟', - 'disabled' => 'تم تعطيل تحرير ملفات SVG لأنه قد يؤدي إلى فقدان الجودة عند تغيير الحجم.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'إضافة صف', - ], - - 'delete' => [ - 'label' => 'حذف صف', - ], - - 'reorder' => [ - 'label' => 'إعادة ترتيب الصف', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'المفتاح', - ], - - 'value' => [ - 'label' => 'القيمة', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'إرفاق ملفات', - 'blockquote' => 'اقتباس', - 'bold' => 'عريض', - 'bullet_list' => 'قائمة نقطية', - 'code_block' => 'نص برمجي', - 'heading' => 'العناوين', - 'italic' => 'مائل', - 'link' => 'رابط تشعبي', - 'ordered_list' => 'قائمة رقمية', - 'redo' => 'إعادة', - 'strike' => 'يتوسطه خط', - 'table' => 'جدول', - 'undo' => 'تراجع', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'نعم', - 'false' => 'لا', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'إضافة إلى :label', - ], - - 'add_between' => [ - 'label' => 'إدراج بين', - ], - - 'delete' => [ - 'label' => 'حذف', - ], - - 'clone' => [ - 'label' => 'نسخ', - ], - - 'reorder' => [ - 'label' => 'نقل', - ], - - 'move_down' => [ - 'label' => 'تحريك لأسفل', - ], - - 'move_up' => [ - 'label' => 'تحريك لأعلى', - ], - - 'collapse' => [ - 'label' => 'طيّ', - ], - - 'expand' => [ - 'label' => 'توسيع', - ], - - 'collapse_all' => [ - 'label' => 'طيّ الكل', - ], - - 'expand_all' => [ - 'label' => 'توسيع الكل', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'ربط', - 'unlink' => 'فصل', - ], - - 'label' => 'عنوان url', - - 'placeholder' => 'أدخل عنوان url', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'إرفاق ملفات', - 'blockquote' => 'إقتباس', - 'bold' => 'عريض', - 'bullet_list' => 'قائمة نقطية', - 'code_block' => 'نص برمجي', - 'h1' => 'عنوان', - 'h2' => 'عنوان رئيسي', - 'h3' => 'عنوان فرعي', - 'italic' => 'مائل', - 'link' => 'رابط تشعبي', - 'ordered_list' => 'قائمة رقمية', - 'redo' => 'إعادة', - 'strike' => 'خط في المنتصف', - 'underline' => 'خط اسفل النص', - 'undo' => 'تراجع', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'إضافة', - - 'actions' => [ - - 'create' => [ - 'label' => 'إضافة', - ], - - 'create_another' => [ - 'label' => 'إضافة وبدء إضافة المزيد', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'تحرير', - - 'actions' => [ - - 'save' => [ - 'label' => 'حفظ', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'نعم', - 'false' => 'لا', - ], - - 'loading_message' => 'تحميل...', - - 'max_items_message' => 'يمكنك اختيار :count فقط.', - - 'no_search_results_message' => 'لا توجد خيارات تطابق بحثك.', - - 'placeholder' => 'اختر', - - 'searching_message' => 'جاري البحث...', - - 'search_prompt' => 'ابدأ بالكتابة للبحث...', - - ], - - 'tags_input' => [ - 'placeholder' => 'كلمة مفتاحية جديدة', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'الخطوة السابقة', - ], - - 'next_step' => [ - 'label' => 'الخطوة التالية', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/ar/validation.php b/vendor/filament/forms/resources/lang/ar/validation.php deleted file mode 100644 index 8a0c0196..00000000 --- a/vendor/filament/forms/resources/lang/ar/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'يجب تحديد حقل :attribute واحد على الأقل.', - 'only_one_must_be_selected' => 'يجب تحديد حقل :attribute واحد فقط.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/az/components.php b/vendor/filament/forms/resources/lang/az/components.php deleted file mode 100644 index bc32750b..00000000 --- a/vendor/filament/forms/resources/lang/az/components.php +++ /dev/null @@ -1,416 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Klonla', - ], - - 'add' => [ - 'label' => ':label əlavə et', - ], - - 'add_between' => [ - 'label' => 'Bloklar arasına əlavə et', - ], - - 'delete' => [ - 'label' => 'Sil', - ], - - 'reorder' => [ - 'label' => 'Sırala', - ], - - 'move_down' => [ - 'label' => 'Aşağı hərəkət etdir', - ], - - 'move_up' => [ - 'label' => 'Yuxarı hərəkət etdir', - ], - - 'collapse' => [ - 'label' => 'Kiçilt', - ], - - 'expand' => [ - 'label' => 'Genişlət', - ], - - 'collapse_all' => [ - 'label' => 'Hamısını kiçilt', - ], - - 'expand_all' => [ - 'label' => 'Hamısını genişlət', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Heçbirini seçmə', - ], - - 'select_all' => [ - 'label' => 'Hamısını seç', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'İmtina', - ], - - 'drag_crop' => [ - 'label' => 'Kəsmə moduna sürüşdürün', - ], - - 'drag_move' => [ - 'label' => 'Daşıma moduna sürüşdürün', - ], - - 'flip_horizontal' => [ - 'label' => 'Şəkili üfüqi çevir', - ], - - 'flip_vertical' => [ - 'label' => 'Şəkili şaquli çevir', - ], - - 'move_down' => [ - 'label' => 'Şəkili aşağı hərəkət etdir', - ], - - 'move_left' => [ - 'label' => 'Şəkili sola hərəkət etdir', - ], - - 'move_right' => [ - 'label' => 'Şəkili sağa hərəkət etdir', - ], - - 'move_up' => [ - 'label' => 'Şəkili yuxarı hərəkət etdir', - ], - - 'reset' => [ - 'label' => 'Sıfırla', - ], - - 'rotate_left' => [ - 'label' => 'Şəkili sola çevir', - ], - - 'rotate_right' => [ - 'label' => 'Şəkili sağa çevir', - ], - - 'set_aspect_ratio' => [ - 'label' => 'En uzun nisbətini :ratio et', - ], - - 'save' => [ - 'label' => 'Yadda saxla', - ], - - 'zoom_100' => [ - 'label' => 'Şəkili %100 yaxınlaşdır', - ], - - 'zoom_in' => [ - 'label' => 'Yaxınlaşdır', - ], - - 'zoom_out' => [ - 'label' => 'Uzaqlaşdır', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Yüksəklik', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Çevirmə', - 'unit' => '°', - ], - - 'width' => [ - 'label' => 'Genişlik', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'En uzun nisbətləri', - - 'no_fixed' => [ - 'label' => 'Sərbəst', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Sətir əlavə et', - ], - - 'delete' => [ - 'label' => 'Sətir sil', - ], - - 'reorder' => [ - 'label' => 'Sətir sırala', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Açar', - ], - - 'value' => [ - 'label' => 'Dəyər', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Fayl əlavə et', - 'blockquote' => 'Sitat', - 'bold' => 'Qalın', - 'bullet_list' => 'List', - 'code_block' => 'Kod bloku', - 'heading' => 'Başlıq', - 'italic' => 'Əyik', - 'link' => 'Keçid', - 'ordered_list' => 'Nömrəli list', - 'redo' => 'Təkrarla', - 'strike' => 'Üstü xətli', - 'table' => 'Cədvəl', - 'undo' => 'Geri al', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => ':label\'e əlavə et', - ], - - 'delete' => [ - 'label' => 'Sil', - ], - - 'clone' => [ - 'label' => 'Klonla', - ], - - 'reorder' => [ - 'label' => 'Sırala', - ], - - 'move_down' => [ - 'label' => 'Aşağı hərəkət etdir', - ], - - 'move_up' => [ - 'label' => 'Yuxarı hərəkət etdir', - ], - - 'collapse' => [ - 'label' => 'Kiçilt', - ], - - 'expand' => [ - 'label' => 'Genişlət', - ], - - 'collapse_all' => [ - 'label' => 'Hamısını kiçilt', - ], - - 'expand_all' => [ - 'label' => 'Hamısını genişlət', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Keçid', - 'unlink' => 'Keçidi yığışdır', - ], - - 'label' => 'URL', - - 'placeholder' => 'Bir URL daxil edin', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Fayl əlavə et', - 'blockquote' => 'Sitat', - 'bold' => 'Qalın', - 'bullet_list' => 'Sırasız list', - 'code_block' => 'Kod bloku', - 'h1' => 'Başlıq', - 'h2' => 'Başlıq 2', - 'h3' => 'Alt başlıq', - 'italic' => 'Əyik', - 'link' => 'Keçid', - 'ordered_list' => 'Sıralı list', - 'redo' => 'Təkrarla', - 'strike' => 'Üstü xətli', - 'underline' => 'Altı xətli', - 'undo' => 'Geri al', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Yarat', - - 'actions' => [ - - 'create' => [ - 'label' => 'Yarat', - ], - - 'create_another' => [ - 'label' => 'Yarat & başqasını yarat', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Redaktə et', - - 'actions' => [ - - 'save' => [ - 'label' => 'Yadda saxla', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Hə', - 'false' => 'Yox', - ], - - 'loading_message' => 'Yüklənir...', - - 'max_items_message' => 'Sadəcə :count seçiləbilər.', - - 'no_search_results_message' => 'Axtarışa uyğun seçim yoxdur.', - - 'placeholder' => 'Bir seçim seçin', - - 'searching_message' => 'Axtarılır...', - - 'search_prompt' => 'Axtarmaq üçün yazmağa başlayın...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Yeni etiket', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Geri', - ], - - 'next_step' => [ - 'label' => 'İrəli', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/bn/components.php b/vendor/filament/forms/resources/lang/bn/components.php deleted file mode 100644 index 231e36bf..00000000 --- a/vendor/filament/forms/resources/lang/bn/components.php +++ /dev/null @@ -1,271 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'অনুলিপি করুন', - ], - - 'add' => [ - 'label' => ':label এ যোগ করুন', - ], - - 'add_between' => [ - 'label' => 'প্রবেশ করান', - ], - - 'delete' => [ - 'label' => 'মুছে ফেলুন', - ], - - 'reorder' => [ - 'label' => 'সরান', - ], - - 'move_down' => [ - 'label' => 'নিচে সরান', - ], - - 'move_up' => [ - 'label' => 'উপরে সরান', - ], - - 'collapse' => [ - 'label' => 'ছোট করুন', - ], - - 'expand' => [ - 'label' => 'বড় করুন', - ], - - 'collapse_all' => [ - 'label' => 'সব ছোট করুন', - ], - - 'expand_all' => [ - 'label' => 'সব বড় করুন', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'select_all' => [ - 'label' => 'সব নির্বাচিত করুন', - ], - - 'deselect_all' => [ - 'label' => 'সব অনির্বাচিত করুন', - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'সারি যোগ করুন', - ], - - 'delete' => [ - 'label' => 'সারি মুছে ফেলুন', - ], - - 'reorder' => [ - 'label' => 'সারি পুনর্বিন্যাস করুন', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'চাবি', - ], - - 'value' => [ - 'label' => 'মান', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'নথি যোগ করুন', - 'bold' => 'বোল্ড', - 'bullet_list' => 'বুলেট তালিকা', - 'code_block' => 'কোড ব্লক', - 'edit' => 'সম্পাদন', - 'italic' => 'তির্যক', - 'link' => 'লিংক', - 'ordered_list' => 'সংখ্যাযুক্ত তালিকা', - 'preview' => 'পূর্বরূপ', - 'strike' => 'স্ট্রাইকথ্রু', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => ':label এ যোগ করুন', - ], - - 'delete' => [ - 'label' => 'মুছে ফেলুন', - ], - - 'clone' => [ - 'label' => 'অনুলিপি করুন', - ], - - 'reorder' => [ - 'label' => 'সরান', - ], - - 'move_down' => [ - 'label' => 'নিচে সরান', - ], - - 'move_up' => [ - 'label' => 'উপরে সরান', - ], - - 'collapse' => [ - 'label' => 'ছোট করুন', - ], - - 'expand' => [ - 'label' => 'বড় করুন', - ], - - 'collapse_all' => [ - 'label' => 'সব ছোট করুন', - ], - - 'expand_all' => [ - 'label' => 'সব বড় করুন', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'লিংক', - 'unlink' => 'আনলিংক', - ], - - 'label' => 'ইউআরএল', - - 'placeholder' => 'ইউআরএল দিন', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'নথি যোগ করুন', - 'blockquote' => 'ব্লককোট', - 'bold' => 'বোল্ড', - 'bullet_list' => 'বুলেট তালিকা', - 'code_block' => 'কোড ব্লক', - 'h1' => 'শিরোনাম', - 'h2' => 'শিরোনাম', - 'h3' => 'উপশিরোনাম', - 'italic' => 'তির্যক', - 'link' => 'লিংক', - 'ordered_list' => 'সংখ্যাযুক্ত তালিকা', - 'redo' => 'পরবর্তী', - 'strike' => 'স্ট্রাইকথ্রু', - 'undo' => 'পূর্বাবস্থা', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'তৈরী করুন', - - 'actions' => [ - - 'create' => [ - 'label' => 'তৈরী করুন', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'হ্যাঁ', - 'false' => 'না', - ], - - 'loading_message' => 'লোড হচ্ছে...', - - 'max_items_message' => 'মাত্র :count টা নির্বাচন করা যাবে।', - - 'no_search_results_message' => 'খুঁজে পাওয়া যায় নি।', - - 'placeholder' => 'নির্বাচন করুন', - - 'searching_message' => 'খুঁজুন...', - - 'search_prompt' => 'লিখুন...', - - ], - - 'tags_input' => [ - 'placeholder' => 'নতুন ট্যাগ', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'পেছনে', - ], - - 'next_step' => [ - 'label' => 'পরবর্তী', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/bs/components.php b/vendor/filament/forms/resources/lang/bs/components.php deleted file mode 100644 index ac5b22b0..00000000 --- a/vendor/filament/forms/resources/lang/bs/components.php +++ /dev/null @@ -1,271 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Kloniraj', - ], - - 'add' => [ - 'label' => 'Dodaj :label', - ], - - 'add_between' => [ - 'label' => 'Ubaci', - ], - - 'delete' => [ - 'label' => 'Izbriši', - ], - - 'reorder' => [ - 'label' => 'Pomjeri', - ], - - 'move_down' => [ - 'label' => 'Dolje', - ], - - 'move_up' => [ - 'label' => 'Gore', - ], - - 'collapse' => [ - 'label' => 'Sažimanje', - ], - - 'expand' => [ - 'label' => 'Proširivanje', - ], - - 'collapse_all' => [ - 'label' => 'Sažmi sve', - ], - - 'expand_all' => [ - 'label' => 'Proširi sve', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Odznači sve', - ], - - 'select_all' => [ - 'label' => 'Označi sve', - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Dodaj red', - ], - - 'delete' => [ - 'label' => 'Izbriši red', - ], - - 'reorder' => [ - 'label' => 'Preuredi red', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Ključ', - ], - - 'value' => [ - 'label' => 'Vrijednost', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Priloži fajlove', - 'bold' => 'Bold', - 'bullet_list' => 'Bullet list', - 'code_block' => 'Blok koda', - 'edit' => 'Uredi', - 'italic' => 'Kurziv', - 'link' => 'Link', - 'ordered_list' => 'Numerisana lista', - 'preview' => 'Prethodan pregled', - 'strike' => 'Precrtano', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Dodaj :label', - ], - - 'delete' => [ - 'label' => 'Izbriši', - ], - - 'clone' => [ - 'label' => 'Kloniraj', - ], - - 'reorder' => [ - 'label' => 'Pomjeriti', - ], - - 'move_down' => [ - 'label' => 'Dolje', - ], - - 'move_up' => [ - 'label' => 'Gore', - ], - - 'collapse' => [ - 'label' => 'Sažimanje', - ], - - 'expand' => [ - 'label' => 'Proširivanje', - ], - - 'collapse_all' => [ - 'label' => 'Sažmi sve', - ], - - 'expand_all' => [ - 'label' => 'Proširi sve', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Link', - 'unlink' => 'Otkačite link', - ], - - 'label' => 'URL', - - 'placeholder' => 'Unesite URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Priloži fajlove', - 'blockquote' => 'Blok citat', - 'bold' => 'Bold', - 'bullet_list' => 'Bullet list', - 'code_block' => 'Blok koda', - 'h1' => 'Titula', - 'h2' => 'Naslov', - 'h3' => 'Podnaslov', - 'italic' => 'Kurziv', - 'link' => 'Link', - 'ordered_list' => 'Numerisana lista', - 'redo' => 'Ponovo uradite', - 'strike' => 'Precrtano', - 'undo' => 'Poništi', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Napravi', - - 'actions' => [ - - 'create' => [ - 'label' => 'Napravi', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Da', - 'false' => 'Ne', - ], - - 'loading_message' => 'Učitavanje ...', - - 'max_items_message' => 'Mogu se odabrati samo :count.', - - 'no_search_results_message' => 'Nijedna opcija ne odgovara vašoj pretrazi.', - - 'placeholder' => 'Izaberi opciju', - - 'searching_message' => 'Traženje ...', - - 'search_prompt' => 'Počni da kucate da biste pretraživali ...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Nova oznaka', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Nazad', - ], - - 'next_step' => [ - 'label' => 'Dalje', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/ca/components.php b/vendor/filament/forms/resources/lang/ca/components.php deleted file mode 100644 index 9fb37162..00000000 --- a/vendor/filament/forms/resources/lang/ca/components.php +++ /dev/null @@ -1,463 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Clonar', - ], - - 'add' => [ - 'label' => 'Afegir a :label', - ], - - 'add_between' => [ - 'label' => 'Inserir entre blocs', - ], - - 'delete' => [ - 'label' => 'Esborrar', - ], - - 'reorder' => [ - 'label' => 'Moure', - ], - - 'move_down' => [ - 'label' => 'Moure cap avall', - ], - - 'move_up' => [ - 'label' => 'Moure cap amunt', - ], - - 'collapse' => [ - 'label' => 'Replegar', - ], - - 'expand' => [ - 'label' => 'Ampliar', - ], - - 'collapse_all' => [ - 'label' => 'Replegar tots', - ], - - 'expand_all' => [ - 'label' => 'Ampliar tots', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Desseleccionar tots', - ], - - 'select_all' => [ - 'label' => 'Seleccionar tots', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancel·lar', - ], - - 'drag_crop' => [ - 'label' => `Mode d'arrossegament "retallar"`, - ], - - 'drag_move' => [ - 'label' => `Mode d'arrossegament "moure"`, - ], - - 'flip_horizontal' => [ - 'label' => 'Girar imatge horitzontalment', - ], - - 'flip_vertical' => [ - 'label' => 'Girar imatge verticalment', - ], - - 'move_down' => [ - 'label' => 'Mou la imatge cap avall', - ], - - 'move_left' => [ - 'label' => 'Mou la imatge cap a l\'esquerra', - ], - - 'move_right' => [ - 'label' => 'Mou la imatge cap a la dreta', - ], - - 'move_up' => [ - 'label' => 'Mou la imatge cap amunt', - ], - - 'reset' => [ - 'label' => 'Restablir', - ], - - 'rotate_left' => [ - 'label' => 'Rota la imatge cap a l\'esquerra', - ], - - 'rotate_right' => [ - 'label' => 'Rota la imatge cap a la dreta', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Estableix la relació d\'aspecte a :ratio', - ], - - 'save' => [ - 'label' => 'Desar', - ], - - 'zoom_100' => [ - 'label' => 'Amplia la imatge a 100%', - ], - - 'zoom_in' => [ - 'label' => 'Ampliar el zoom', - ], - - 'zoom_out' => [ - 'label' => 'Reduir el zoom', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Altura', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rotació', - 'unit' => 'graus', - ], - - 'width' => [ - 'label' => 'Amplada', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Relacions d\'aspecte', - - 'no_fixed' => [ - 'label' => 'Lliure', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'No es recomana editar fitxers SVG ja que pot provocar una pèrdua de qualitat en escalar-los.\n Esteu segur que voleu continuar?', - 'disabled' => 'L\'edició de fitxers SVG està desactivada ja que pot provocar una pèrdua de qualitat en escalar-los.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Afegir fila', - ], - - 'delete' => [ - 'label' => 'Esborrar fila', - ], - - 'reorder' => [ - 'label' => 'Reordenar fila', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Clau', - ], - - 'value' => [ - 'label' => 'Valor', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Adjuntar fitxers', - 'blockquote' => 'Cita de bloc', - 'bold' => 'Negreta', - 'bullet_list' => 'Llista de vinyetes', - 'code_block' => 'Bloc de codi', - 'heading' => 'Encapçalament', - 'italic' => 'Cursiva', - 'link' => 'Enllaç', - 'ordered_list' => 'Llista numerada', - 'redo' => 'Refer', - 'strike' => 'Ratllat', - 'table' => 'Taula', - 'undo' => 'Desfer', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'Sí', - 'false' => 'No', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Afegir a :label', - ], - - 'add_between' => [ - 'label' => 'Inserir entre', - ], - - 'delete' => [ - 'label' => 'Esborrar', - ], - - 'clone' => [ - 'label' => 'Clonar', - ], - - 'reorder' => [ - 'label' => 'Moure', - ], - - 'move_down' => [ - 'label' => 'Moure cap avall', - ], - - 'move_up' => [ - 'label' => 'Moure cap amunt', - ], - - 'collapse' => [ - 'label' => 'Replegar', - ], - - 'expand' => [ - 'label' => 'Ampliar', - ], - - 'collapse_all' => [ - 'label' => 'Replegar tots', - ], - - 'expand_all' => [ - 'label' => 'Ampliar tots', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Enllaç', - 'unlink' => 'Elimina l\'enllaç', - ], - - 'label' => 'URL', - - 'placeholder' => 'Escriu una adreça URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Adjuntar fitxers', - 'blockquote' => 'Bloc de cita', - 'bold' => 'Negreta', - 'bullet_list' => 'Llista de vinyetes', - 'code_block' => 'Bloc de codi', - 'h1' => 'Títol', - 'h2' => 'Capçalera', - 'h3' => 'Subtítol', - 'italic' => 'Cursiva', - 'link' => 'Enllaç', - 'ordered_list' => 'Llista numerada', - 'redo' => 'Refer', - 'strike' => 'Ratllat', - 'underline' => 'Subratllat', - 'undo' => 'Desfer', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Nou', - - 'actions' => [ - - 'create' => [ - 'label' => 'Crear', - ], - - 'create_another' => [ - 'label' => 'Crear i crear-ne un altre', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Editar', - - 'actions' => [ - - 'save' => [ - 'label' => 'Desar', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Sí', - 'false' => 'No', - ], - - 'loading_message' => 'Carregant...', - - 'max_items_message' => 'Només :count poden ser seleccionats.', - - 'no_search_results_message' => 'No s\'ha trobat cap opció que coincideixi amb la vostra cerca.', - - 'placeholder' => 'Trieu una opció', - - 'searching_message' => 'Cercant...', - - 'search_prompt' => 'Comenceu a escriure per cercar...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Nova etiqueta', - ], - - 'text_input' => [ - - 'actions' => [ - - 'hide_password' => [ - 'label' => 'Ocultar contrasenya', - ], - - 'show_password' => [ - 'label' => 'Mostrar contrasenya', - ], - - ], - - ], - - 'toggle_buttons' => [ - - 'boolean' => [ - 'true' => 'Sí', - 'false' => 'No', - ], - - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Enrere', - ], - - 'next_step' => [ - 'label' => 'Endavant', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/ca/validation.php b/vendor/filament/forms/resources/lang/ca/validation.php deleted file mode 100644 index df1e90e2..00000000 --- a/vendor/filament/forms/resources/lang/ca/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'S\'ha de seleccionar almenys un camp :attribute.', - 'only_one_must_be_selected' => 'S\'ha de seleccionar només un camp :attribute.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/ckb/components.php b/vendor/filament/forms/resources/lang/ckb/components.php deleted file mode 100644 index 6125abd7..00000000 --- a/vendor/filament/forms/resources/lang/ckb/components.php +++ /dev/null @@ -1,416 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'پۆشتەکردن', - ], - - 'add' => [ - 'label' => 'زیادکردن بۆ :label', - ], - - 'add_between' => [ - 'label' => 'داخڵکردن لە نێوان هێڵ', - ], - - 'delete' => [ - 'label' => 'سڕینەوە', - ], - - 'reorder' => [ - 'label' => 'جوڵاندن', - ], - - 'move_down' => [ - 'label' => 'جوڵاندن بۆ خوارەوە', - ], - - 'move_up' => [ - 'label' => 'جوڵاندن بۆ سەرەوە', - ], - - 'collapse' => [ - 'label' => 'بچووکردنەوە', - ], - - 'expand' => [ - 'label' => 'فراوانکردن', - ], - - 'collapse_all' => [ - 'label' => 'بچووکردنەوەی هەموو', - ], - - 'expand_all' => [ - 'label' => 'فراوانکردنی هەموو', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'لابردنی هەموو دیاریکراوەکان', - ], - - 'select_all' => [ - 'label' => 'دیاریکردنی هەموو', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'پاشگەزبوونەوە', - ], - - 'drag_crop' => [ - 'label' => 'جۆری ڕاکێشان "بڕین"', - ], - - 'drag_move' => [ - 'label' => 'جۆری ڕاکێشان "جوڵاندن"', - ], - - 'flip_horizontal' => [ - 'label' => 'وەرگێڕانی وێنە بە ئاسۆی', - ], - - 'flip_vertical' => [ - 'label' => 'وەرگێڕانی وێنە بە ستونی', - ], - - 'move_down' => [ - 'label' => 'جوڵاندنی وێنە بۆ خوارەوە', - ], - - 'move_left' => [ - 'label' => 'جوڵاندنی وێنە بۆ چەپ', - ], - - 'move_right' => [ - 'label' => 'جوڵاندنی وێنە بۆ ڕاست', - ], - - 'move_up' => [ - 'label' => 'جوڵاندنی وێنە بۆ سەرەوە', - ], - - 'reset' => [ - 'label' => 'دۆخی سەرەتا', - ], - - 'rotate_left' => [ - 'label' => 'سوڕانەوەی وێنە بۆ چەپ', - ], - - 'rotate_right' => [ - 'label' => 'سوڕانەوەی وێنە بۆ ڕاست', - ], - - 'set_aspect_ratio' => [ - 'label' => 'دانانی تێکڕای لاکان بۆ :ratio', - ], - - 'save' => [ - 'label' => 'نوێکردنەوە', - ], - - 'zoom_100' => [ - 'label' => 'نزیکردنەوەی وێنە بۆ ١٠٠%', - ], - - 'zoom_in' => [ - 'label' => 'نزیککردنەوە', - ], - - 'zoom_out' => [ - 'label' => 'دوورخستنەوە', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'بەرزی', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'سوڕانەوە', - 'unit' => 'پلە', - ], - - 'width' => [ - 'label' => 'پانی', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'تێکڕای لاکان', - - 'no_fixed' => [ - 'label' => 'سەربەخۆ', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'زیادکردنی ڕیز', - ], - - 'delete' => [ - 'label' => 'سڕینەوەی ڕیز', - ], - - 'reorder' => [ - 'label' => 'ڕێکخستنی ڕیز', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'کلیل', - ], - - 'value' => [ - 'label' => 'نرخ', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'لکاندنی فایل', - 'blockquote' => 'هێڵی وتە', - 'bold' => 'تۆخ کردن', - 'bullet_list' => 'لیستی خاڵ', - 'code_block' => 'هێڵی کۆد', - 'heading' => 'ناونیشان', - 'italic' => 'لارکردن', - 'link' => 'بەستەر', - 'ordered_list' => 'لیستی ژمارە', - 'redo' => 'دووبارەکردن', - 'strike' => 'هێڵ بەسەرهێنان', - 'table' => 'خشتە', - 'undo' => 'گەڕانەوە', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'زیادکردن بۆ :label', - ], - - 'delete' => [ - 'label' => 'سڕینەوە', - ], - - 'clone' => [ - 'label' => 'پۆشتەکردن', - ], - - 'reorder' => [ - 'label' => 'جوڵاندن', - ], - - 'move_down' => [ - 'label' => 'جوڵاندن بۆ خوارەوە', - ], - - 'move_up' => [ - 'label' => 'جوڵاندن بۆ سەرەوە', - ], - - 'collapse' => [ - 'label' => 'بچووکردنەوە', - ], - - 'expand' => [ - 'label' => 'فراوانکردن', - ], - - 'collapse_all' => [ - 'label' => 'بچووکردنەوەی هەموو', - ], - - 'expand_all' => [ - 'label' => 'فراوانکردنی هەموو', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'بەستەر', - 'unlink' => 'لابردنی بەستەر', - ], - - 'label' => 'بەستەر', - - 'placeholder' => 'بەستەر داخڵ بکە', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'لکاندنی فایل', - 'blockquote' => 'هێڵی وتە', - 'bold' => 'تۆخ کردن', - 'bullet_list' => 'لیستی خاڵ', - 'code_block' => 'هێڵی کۆد', - 'h1' => 'ناونیشان', - 'h2' => 'ناونیشانی دووەم', - 'h3' => 'ناونیشانی سێیەم', - 'italic' => 'لارکردن', - 'link' => 'بەستەر', - 'ordered_list' => 'لیستی ژمارە', - 'redo' => 'دووبارەکردن', - 'strike' => 'هێڵ بەسەرهێنان', - 'underline' => 'هێڵ بەژێرهێنان', - 'undo' => 'گەڕانەوە', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'دروستکردن', - - 'actions' => [ - - 'create' => [ - 'label' => 'دروستکردن', - ], - - 'create_another' => [ - 'label' => 'دروستکردن و تۆمارێکی تر', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'دەسکاریکردن', - - 'actions' => [ - - 'save' => [ - 'label' => 'نوێکردنەوە', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'بەڵێ', - 'false' => 'نەخێر', - ], - - 'loading_message' => 'چاوەروان بە...', - - 'max_items_message' => 'تەنها :count دەتواندرێت دیاری بکرێت.', - - 'no_search_results_message' => 'هیچ هەڵبژاردەیەک بۆ گەڕانەکەت نەدۆزرایەوە.', - - 'placeholder' => 'هەڵبژاردەیەک دیاری بکە', - - 'searching_message' => 'گەڕان...', - - 'search_prompt' => 'دەستبکە بە نوسین بۆ گەڕان...', - - ], - - 'tags_input' => [ - 'placeholder' => 'تاگی نوێ', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'پێشوو', - ], - - 'next_step' => [ - 'label' => 'دواتر', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/cs/components.php b/vendor/filament/forms/resources/lang/cs/components.php deleted file mode 100644 index 28b20f9b..00000000 --- a/vendor/filament/forms/resources/lang/cs/components.php +++ /dev/null @@ -1,438 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Klonovat', - ], - - 'add' => [ - 'label' => 'Přidat k :label', - ], - - 'add_between' => [ - 'label' => 'Vložit', - ], - - 'delete' => [ - 'label' => 'Smazat', - ], - - 'reorder' => [ - 'label' => 'Přesunout', - ], - - 'move_down' => [ - 'label' => 'Posunout dolů', - ], - - 'move_up' => [ - 'label' => 'Posunout nahoru', - ], - - 'collapse' => [ - 'label' => 'Skrýt', - ], - - 'expand' => [ - 'label' => 'Zobrazit', - ], - - 'collapse_all' => [ - 'label' => 'Skrýt vše', - ], - - 'expand_all' => [ - 'label' => 'Zobrazit vše', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Odznačit vše', - ], - - 'select_all' => [ - 'label' => 'Vybrat vše', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Zrušit', - ], - - 'drag_crop' => [ - 'label' => 'Táhněte pro oříznutí', - ], - - 'drag_move' => [ - 'label' => 'Táhněte pro přesun', - ], - - 'flip_horizontal' => [ - 'label' => 'Překlopit obrázek horizontálně', - ], - - 'flip_vertical' => [ - 'label' => 'Překlopit obrázek vertikálně', - ], - - 'move_down' => [ - 'label' => 'Posunout obrázek dolů', - ], - - 'move_left' => [ - 'label' => 'Posunout obrázek doleva', - ], - - 'move_right' => [ - 'label' => 'Posunout obrázek doprava', - ], - - 'move_up' => [ - 'label' => 'Posunout obrázek nahoru', - ], - - 'reset' => [ - 'label' => 'Reset', - ], - - 'rotate_left' => [ - 'label' => 'Otočit obrázek doleva', - ], - - 'rotate_right' => [ - 'label' => 'Otočit obrázek doprava', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Nastavit poměr stran na :ratio', - ], - - 'save' => [ - 'label' => 'Uložit', - ], - - 'zoom_100' => [ - 'label' => 'Zvětšit obrázek na 100 %', - ], - - 'zoom_in' => [ - 'label' => 'Přiblížit', - ], - - 'zoom_out' => [ - 'label' => 'Oddálit', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Výška', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rotace', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => 'Šířka', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Poměr stran', - - 'no_fixed' => [ - 'label' => 'Vlastní', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'Editace SVG souborů není doporučena, protože může dojít ke ztrátě kvality při škálování.\n Opravdu chcete pokračovat?', - 'disabled' => 'Úprava souborů SVG je zakázána, protože může vést ke ztrátě kvality při škálování.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Přidat řádek', - ], - - 'delete' => [ - 'label' => 'Smazat řádek', - ], - - 'reorder' => [ - 'label' => 'Přesunout řádek', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Klíč', - ], - - 'value' => [ - 'label' => 'Hodnota', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Přidat soubory', - 'blockquote' => 'Bloková citace', - 'bold' => 'Tučně', - 'bullet_list' => 'Seznam s odrážkami', - 'code_block' => 'Blok kódu', - 'heading' => 'Nadpis', - 'italic' => 'Kurzíva', - 'link' => 'Odkaz', - 'ordered_list' => 'Číslovaný seznam', - 'redo' => 'Vpřed', - 'strike' => 'Přeškrtnutí', - 'table' => 'Tabulka', - 'undo' => 'Zpět', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'Ano', - 'false' => 'Ne', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Přidat k :label', - ], - - 'add_between' => [ - 'label' => 'Vložit mezi', - ], - - 'delete' => [ - 'label' => 'Smazat', - ], - - 'clone' => [ - 'label' => 'Klonovat', - ], - - 'reorder' => [ - 'label' => 'Přesunout', - ], - - 'move_down' => [ - 'label' => 'Posunout dolů', - ], - - 'move_up' => [ - 'label' => 'Posunout nahoru', - ], - - 'collapse' => [ - 'label' => 'Skrýt', - ], - - 'expand' => [ - 'label' => 'Zobrazit', - ], - - 'collapse_all' => [ - 'label' => 'Skrýt vše', - ], - - 'expand_all' => [ - 'label' => 'Zobrazit vše', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Přidat odkaz', - 'unlink' => 'Odebrat odkaz', - ], - - 'label' => 'URL', - - 'placeholder' => 'Vložte URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Přidat soubory', - 'blockquote' => 'Bloková citace', - 'bold' => 'Tučně', - 'bullet_list' => 'Seznam s odrážkami', - 'code_block' => 'Blok kódu', - 'h1' => 'Nadpis 1', - 'h2' => 'Nadpis 2', - 'h3' => 'Nadpis 3', - 'italic' => 'Kurzíva', - 'link' => 'Odkaz', - 'ordered_list' => 'Číslovaný seznam', - 'redo' => 'Vpřed', - 'strike' => 'Přeškrtnutí', - 'underline' => 'Podtržení', - 'undo' => 'Zpět', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Vytvořit', - - 'actions' => [ - - 'create' => [ - 'label' => 'Vytvořit', - ], - - 'create_another' => [ - 'label' => 'Vytvořit a přidat další', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Upravit', - - 'actions' => [ - - 'save' => [ - 'label' => 'Uložit', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Ano', - 'false' => 'Ne', - ], - - 'loading_message' => 'Načítání...', - - 'max_items_message' => 'Lze vybrat pouze 1 položka.|Lze vybrat pouze :count položky.|Lze vybrat pouze :count položek.', - - 'no_search_results_message' => 'Vašemu hledání neodpovídají žádné výsledky.', - - 'placeholder' => 'Zvolte některou z možností', - - 'searching_message' => 'Hledání...', - - 'search_prompt' => 'Zadejte hledaný výraz...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Nový štítek', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Zpět', - ], - - 'next_step' => [ - 'label' => 'Další', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/cs/validation.php b/vendor/filament/forms/resources/lang/cs/validation.php deleted file mode 100644 index efe4aa8f..00000000 --- a/vendor/filament/forms/resources/lang/cs/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'Musí být vybráno alespoň jedno pole :attribute.', - 'only_one_must_be_selected' => 'Musí být vybráno pouze jedno pole :attribute.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/cy/components.php b/vendor/filament/forms/resources/lang/cy/components.php deleted file mode 100644 index c695e84e..00000000 --- a/vendor/filament/forms/resources/lang/cy/components.php +++ /dev/null @@ -1,271 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Clôn', - ], - - 'add' => [ - 'label' => 'Ychwanegu at :label', - ], - - 'add_between' => [ - 'label' => 'Mewnosod', - ], - - 'delete' => [ - 'label' => 'Dileu', - ], - - 'reorder' => [ - 'label' => 'Symud', - ], - - 'move_down' => [ - 'label' => 'Symud i lawr', - ], - - 'move_up' => [ - 'label' => 'Symud i fyny', - ], - - 'collapse' => [ - 'label' => 'Cwympo', - ], - - 'expand' => [ - 'label' => 'Ymledu', - ], - - 'collapse_all' => [ - 'label' => 'Cwympo popeth', - ], - - 'expand_all' => [ - 'label' => 'Ymledu popeth', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Dad ddewis popeth', - ], - - 'select_all' => [ - 'label' => 'Dewis popeth', - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Ychwanegu rhes', - ], - - 'delete' => [ - 'label' => 'Dileu rhes', - ], - - 'reorder' => [ - 'label' => 'Rhes recordiwr', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Allwedd', - ], - - 'value' => [ - 'label' => 'Gwerth', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Atodi ffeiliau', - 'bold' => 'Trwm', - 'bullet_list' => 'Rhestr bwled', - 'code_block' => 'Bloc côd', - 'edit' => 'Golygu', - 'italic' => 'Italig', - 'link' => 'Dolen', - 'ordered_list' => 'Rhestr wedi i rhifo', - 'preview' => 'Rhagolwg', - 'strike' => 'Llinell drwodd', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Ychwanegu at :label', - ], - - 'delete' => [ - 'label' => 'Dileu', - ], - - 'clone' => [ - 'label' => 'Clôn', - ], - - 'reorder' => [ - 'label' => 'Symud', - ], - - 'move_down' => [ - 'label' => 'Symud i lawr', - ], - - 'move_up' => [ - 'label' => 'Symud i fyny', - ], - - 'collapse' => [ - 'label' => 'Cwympo', - ], - - 'expand' => [ - 'label' => 'Ymledu', - ], - - 'collapse_all' => [ - 'label' => 'Cwympo popeth', - ], - - 'expand_all' => [ - 'label' => 'Ymledu popeth', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Dolen', - 'unlink' => 'Datgysylltu', - ], - - 'label' => 'URL', - - 'placeholder' => 'Rhowch URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Atodi ffeiliau', - 'blockquote' => 'Dyfynnod Bloc', - 'bold' => 'Trwm', - 'bullet_list' => 'Rhestr bwled', - 'code_block' => 'Bloc côd', - 'h1' => 'Teitl', - 'h2' => 'Pennawd', - 'h3' => 'Is-bennawd', - 'italic' => 'Italig', - 'link' => 'Dolen', - 'ordered_list' => 'Rhestr wedi`i rhifo', - 'redo' => 'Ail-wneud', - 'strike' => 'Llinell drwodd', - 'undo' => 'Dadwneud', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Creu', - - 'actions' => [ - - 'create' => [ - 'label' => 'Creu', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Ie', - 'false' => 'Na', - ], - - 'loading_message' => 'Llwytho...', - - 'max_items_message' => 'Gall dim on :count gael eu dewis.', - - 'no_search_results_message' => 'Nid oes unrhyw opsiynau yn cyfateb i`ch chwiliad.', - - 'placeholder' => 'Dewis opsiwn', - - 'searching_message' => 'Chwilio...', - - 'search_prompt' => 'Dechrau teipio i chwilio...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Tag newydd', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Yn ôl', - ], - - 'next_step' => [ - 'label' => 'Nesaf', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/da/components.php b/vendor/filament/forms/resources/lang/da/components.php deleted file mode 100644 index 72630726..00000000 --- a/vendor/filament/forms/resources/lang/da/components.php +++ /dev/null @@ -1,462 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Klon', - ], - - 'add' => [ - 'label' => 'Tilføj til :label', - ], - - 'add_between' => [ - 'label' => 'Indsæt mellem blokke', - ], - - 'delete' => [ - 'label' => 'Slet', - ], - - 'reorder' => [ - 'label' => 'Flyt', - ], - - 'move_down' => [ - 'label' => 'Flyt ned', - ], - - 'move_up' => [ - 'label' => 'Flyt op', - ], - - 'collapse' => [ - 'label' => 'Skjul', - ], - - 'expand' => [ - 'label' => 'Udvid', - ], - - 'collapse_all' => [ - 'label' => 'Skjul alle', - ], - - 'expand_all' => [ - 'label' => 'Udvid alle', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Fravælg alle', - ], - - 'select_all' => [ - 'label' => 'Vælg alle', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Annuller', - ], - - 'drag_crop' => [ - 'label' => 'Træktilstand "beskæring"', - ], - - 'drag_move' => [ - 'label' => 'Træk-tilstand "flyt"', - ], - - 'flip_horizontal' => [ - 'label' => 'Vend billedet horisontalt', - ], - - 'flip_vertical' => [ - 'label' => 'Vend billedet vertikalt', - ], - - 'move_down' => [ - 'label' => 'Flyt billedet ned', - ], - - 'move_left' => [ - 'label' => 'Flyt billedet til venstre', - ], - - 'move_right' => [ - 'label' => 'Flyt billedet til højre', - ], - - 'move_up' => [ - 'label' => 'Flyt billedet op', - ], - - 'reset' => [ - 'label' => 'Nulstil', - ], - - 'rotate_left' => [ - 'label' => 'Roter billedet til venstre', - ], - - 'rotate_right' => [ - 'label' => 'Roter billedet til højre', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Indstil billedformat til :ratio', - ], - - 'save' => [ - 'label' => 'Gem', - ], - - 'zoom_100' => [ - 'label' => 'Zoom billedet til 100%', - ], - - 'zoom_in' => [ - 'label' => 'Zoom ind', - ], - - 'zoom_out' => [ - 'label' => 'Zoom ud', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Højde', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rotation', - 'unit' => 'grader', - ], - - 'width' => [ - 'label' => 'Bredde', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Størrelsesforhold', - - 'no_fixed' => [ - 'label' => 'Frit', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'Redigering af SVG filer anbefales ikke, da det kan resultere i kvalitetstab ved skalering.\n Er du sikker på, at du vil fortsætte?', - 'disabled' => 'Redigering af SVG filer er deaktiveret, da det kan resultere i kvalitetstab ved skalering.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Tilføj række', - ], - - 'delete' => [ - 'label' => 'Slet række', - ], - - 'reorder' => [ - 'label' => 'Omorganiser række', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Nøgle', - ], - - 'value' => [ - 'label' => 'Værdi', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Vedhæft filer', - 'blockquote' => 'Citere', - 'bold' => 'Fed', - 'bullet_list' => 'Punkter', - 'code_block' => 'Kode', - 'heading' => 'Overskrift', - 'italic' => 'Kursiv', - 'link' => 'Link', - 'ordered_list' => 'Nummereret liste', - 'redo' => 'Gentag', - 'strike' => 'Gennemstregning', - 'table' => 'tabel', - 'undo' => 'Fortryd', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'Ja', - 'false' => 'Nej', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Tilføj til :label', - ], - - 'add_between' => [ - 'label' => 'Indsæt mellem', - ], - - 'delete' => [ - 'label' => 'Slet', - ], - - 'clone' => [ - 'label' => 'Klon', - ], - - 'reorder' => [ - 'label' => 'Flyt', - ], - - 'move_down' => [ - 'label' => 'Flyt ned', - ], - - 'move_up' => [ - 'label' => 'Flyt op', - ], - - 'collapse' => [ - 'label' => 'Skjul', - ], - - 'expand' => [ - 'label' => 'Udvid', - ], - - 'collapse_all' => [ - 'label' => 'Skjul alle', - ], - - 'expand_all' => [ - 'label' => 'Udvid alle', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Link', - 'unlink' => 'Fjern link', - ], - - 'label' => 'URL', - - 'placeholder' => 'Indtast en URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Vedhæft filer', - 'blockquote' => 'Citere', - 'bold' => 'Fed', - 'bullet_list' => 'Punkter', - 'code_block' => 'Kode', - 'h1' => 'Titel', - 'h2' => 'Overskrift', - 'h3' => 'Underoverskrift', - 'italic' => 'Kursiv', - 'link' => 'Link', - 'ordered_list' => 'Tal', - 'redo' => 'Gentag', - 'strike' => 'Gennemstreget', - 'undo' => 'Fortryd', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Opret', - - 'actions' => [ - - 'create' => [ - 'label' => 'Opret', - ], - - 'create_another' => [ - 'label' => 'Opret & opret en mere', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Rediger', - - 'actions' => [ - - 'save' => [ - 'label' => 'Gem', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Ja', - 'false' => 'Nej', - ], - - 'loading_message' => 'Indlæser...', - - 'max_items_message' => 'Kun :count kan vælges.', - - 'no_search_results_message' => 'Ingen muligheder der matcher din søgning.', - - 'placeholder' => 'Vælg en indstilling', - - 'searching_message' => 'Søger...', - - 'search_prompt' => 'Begynd at skrive for at søge ...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Ny mærkat', - ], - - 'text_input' => [ - - 'actions' => [ - - 'hide_password' => [ - 'label' => 'Skjul adgangskode', - ], - - 'show_password' => [ - 'label' => 'Vis adgangskode', - ], - - ], - - ], - - 'toggle_buttons' => [ - - 'boolean' => [ - 'true' => 'Ja', - 'false' => 'Nej', - ], - - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Tilbage', - ], - - 'next_step' => [ - 'label' => 'Næste', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/da/validation.php b/vendor/filament/forms/resources/lang/da/validation.php deleted file mode 100644 index 14dae730..00000000 --- a/vendor/filament/forms/resources/lang/da/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'Mindst ét :attribute felt skal være valgt.', - 'only_one_must_be_selected' => 'Der må kun vælges ét :attribute felt.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/de/components.php b/vendor/filament/forms/resources/lang/de/components.php deleted file mode 100644 index 9a087536..00000000 --- a/vendor/filament/forms/resources/lang/de/components.php +++ /dev/null @@ -1,271 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Kopieren', - ], - - 'add' => [ - 'label' => 'Hinzufügen', - ], - - 'add_between' => [ - 'label' => 'Einfügen', - ], - - 'delete' => [ - 'label' => 'Löschen', - ], - - 'reorder' => [ - 'label' => 'Verschieben', - ], - - 'move_down' => [ - 'label' => 'Nach unten verschieben', - ], - - 'move_up' => [ - 'label' => 'Nach oben verschieben', - ], - - 'collapse' => [ - 'label' => 'Einklappen', - ], - - 'expand' => [ - 'label' => 'Ausklappen', - ], - - 'collapse_all' => [ - 'label' => 'Alle einklappen', - ], - - 'expand_all' => [ - 'label' => 'Alle ausklappen', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Alle deselektieren', - ], - - 'select_all' => [ - 'label' => 'Alle selektieren', - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Zeile hinzufügen', - ], - - 'delete' => [ - 'label' => 'Zeile löschen', - ], - - 'reorder' => [ - 'label' => 'Zeile neu sortieren', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Schlüssel', - ], - - 'value' => [ - 'label' => 'Wert', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Dateien hinzufügen', - 'bold' => 'Fett', - 'bullet_list' => 'Liste', - 'code_block' => 'Code Block', - 'edit' => 'Bearbeiten', - 'italic' => 'Kursiv', - 'link' => 'Link', - 'ordered_list' => 'Nummerierte Liste', - 'preview' => 'Vorschau', - 'strike' => 'Durchgestrichen', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Hinzufügen', - ], - - 'delete' => [ - 'label' => 'Löschen', - ], - - 'clone' => [ - 'label' => 'Kopieren', - ], - - 'reorder' => [ - 'label' => 'Verschieben', - ], - - 'move_down' => [ - 'label' => 'Runter verschieben', - ], - - 'move_up' => [ - 'label' => 'Hoch verschieben', - ], - - 'collapse' => [ - 'label' => 'Einklappen', - ], - - 'expand' => [ - 'label' => 'Ausklappen', - ], - - 'collapse_all' => [ - 'label' => 'Alle einklappen', - ], - - 'expand_all' => [ - 'label' => 'Alle ausklappen', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Verlinken', - 'unlink' => 'Verlinkung aufheben', - ], - - 'label' => 'URL', - - 'placeholder' => 'URL eingeben', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Dateien anhängen', - 'blockquote' => 'Zitat', - 'bold' => 'Fett', - 'bullet_list' => 'Aufzählung', - 'code_block' => 'Code Block', - 'h1' => 'Titel', - 'h2' => 'Überschrift', - 'h3' => 'Unterüberschrift', - 'italic' => 'Kursiv', - 'link' => 'Link', - 'ordered_list' => 'Nummerierte Aufzählung', - 'redo' => 'Wiederholen', - 'strike' => 'Durchgestrichen', - 'undo' => 'Rückgängig', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Erstellen', - - 'actions' => [ - - 'create' => [ - 'label' => 'Erstellen', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Ja', - 'false' => 'Nein', - ], - - 'loading_message' => 'Lädt...', - - 'max_items_message' => 'Es können nur :count ausgewählt werden.', - - 'no_search_results_message' => 'Die Suche ergab keine Treffer.', - - 'placeholder' => 'Wählen Sie eine Option', - - 'searching_message' => 'Sucht...', - - 'search_prompt' => 'Beginnen Sie mit der Eingabe, um zu suchen...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Neues Etikett', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Zurück', - ], - - 'next_step' => [ - 'label' => 'Weiter', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/en/components.php b/vendor/filament/forms/resources/lang/en/components.php deleted file mode 100644 index 55b3376a..00000000 --- a/vendor/filament/forms/resources/lang/en/components.php +++ /dev/null @@ -1,463 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Clone', - ], - - 'add' => [ - 'label' => 'Add to :label', - ], - - 'add_between' => [ - 'label' => 'Insert between blocks', - ], - - 'delete' => [ - 'label' => 'Delete', - ], - - 'reorder' => [ - 'label' => 'Move', - ], - - 'move_down' => [ - 'label' => 'Move down', - ], - - 'move_up' => [ - 'label' => 'Move up', - ], - - 'collapse' => [ - 'label' => 'Collapse', - ], - - 'expand' => [ - 'label' => 'Expand', - ], - - 'collapse_all' => [ - 'label' => 'Collapse all', - ], - - 'expand_all' => [ - 'label' => 'Expand all', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Deselect all', - ], - - 'select_all' => [ - 'label' => 'Select all', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancel', - ], - - 'drag_crop' => [ - 'label' => 'Drag mode "crop"', - ], - - 'drag_move' => [ - 'label' => 'Drag mode "move"', - ], - - 'flip_horizontal' => [ - 'label' => 'Flip image horizontally', - ], - - 'flip_vertical' => [ - 'label' => 'Flip image vertically', - ], - - 'move_down' => [ - 'label' => 'Move image down', - ], - - 'move_left' => [ - 'label' => 'Move image to left', - ], - - 'move_right' => [ - 'label' => 'Move image to right', - ], - - 'move_up' => [ - 'label' => 'Move image up', - ], - - 'reset' => [ - 'label' => 'Reset', - ], - - 'rotate_left' => [ - 'label' => 'Rotate image to left', - ], - - 'rotate_right' => [ - 'label' => 'Rotate image to right', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Set aspect ratio to :ratio', - ], - - 'save' => [ - 'label' => 'Save', - ], - - 'zoom_100' => [ - 'label' => 'Zoom image to 100%', - ], - - 'zoom_in' => [ - 'label' => 'Zoom in', - ], - - 'zoom_out' => [ - 'label' => 'Zoom out', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Height', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rotation', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => 'Width', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Aspect ratios', - - 'no_fixed' => [ - 'label' => 'Free', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'Editing SVG files is not recommended as it can result in quality loss when scaling.\n Are you sure you want to continue?', - 'disabled' => 'Editing SVG files is disabled as it can result in quality loss when scaling.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Add row', - ], - - 'delete' => [ - 'label' => 'Delete row', - ], - - 'reorder' => [ - 'label' => 'Reorder row', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Key', - ], - - 'value' => [ - 'label' => 'Value', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Attach files', - 'blockquote' => 'Blockquote', - 'bold' => 'Bold', - 'bullet_list' => 'Bullet list', - 'code_block' => 'Code block', - 'heading' => 'Heading', - 'italic' => 'Italic', - 'link' => 'Link', - 'ordered_list' => 'Numbered list', - 'redo' => 'Redo', - 'strike' => 'Strikethrough', - 'table' => 'Table', - 'undo' => 'Undo', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'Yes', - 'false' => 'No', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Add to :label', - ], - - 'add_between' => [ - 'label' => 'Insert between', - ], - - 'delete' => [ - 'label' => 'Delete', - ], - - 'clone' => [ - 'label' => 'Clone', - ], - - 'reorder' => [ - 'label' => 'Move', - ], - - 'move_down' => [ - 'label' => 'Move down', - ], - - 'move_up' => [ - 'label' => 'Move up', - ], - - 'collapse' => [ - 'label' => 'Collapse', - ], - - 'expand' => [ - 'label' => 'Expand', - ], - - 'collapse_all' => [ - 'label' => 'Collapse all', - ], - - 'expand_all' => [ - 'label' => 'Expand all', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Link', - 'unlink' => 'Unlink', - ], - - 'label' => 'URL', - - 'placeholder' => 'Enter a URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Attach files', - 'blockquote' => 'Blockquote', - 'bold' => 'Bold', - 'bullet_list' => 'Bullet list', - 'code_block' => 'Code block', - 'h1' => 'Title', - 'h2' => 'Heading', - 'h3' => 'Subheading', - 'italic' => 'Italic', - 'link' => 'Link', - 'ordered_list' => 'Numbered list', - 'redo' => 'Redo', - 'strike' => 'Strikethrough', - 'underline' => 'Underline', - 'undo' => 'Undo', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Create', - - 'actions' => [ - - 'create' => [ - 'label' => 'Create', - ], - - 'create_another' => [ - 'label' => 'Create & create another', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Edit', - - 'actions' => [ - - 'save' => [ - 'label' => 'Save', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Yes', - 'false' => 'No', - ], - - 'loading_message' => 'Loading...', - - 'max_items_message' => 'Only :count can be selected.', - - 'no_search_results_message' => 'No options match your search.', - - 'placeholder' => 'Select an option', - - 'searching_message' => 'Searching...', - - 'search_prompt' => 'Start typing to search...', - - ], - - 'tags_input' => [ - 'placeholder' => 'New tag', - ], - - 'text_input' => [ - - 'actions' => [ - - 'hide_password' => [ - 'label' => 'Hide password', - ], - - 'show_password' => [ - 'label' => 'Show password', - ], - - ], - - ], - - 'toggle_buttons' => [ - - 'boolean' => [ - 'true' => 'Yes', - 'false' => 'No', - ], - - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Back', - ], - - 'next_step' => [ - 'label' => 'Next', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/en/validation.php b/vendor/filament/forms/resources/lang/en/validation.php deleted file mode 100644 index a855767e..00000000 --- a/vendor/filament/forms/resources/lang/en/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'At least one :attribute field must be selected.', - 'only_one_must_be_selected' => 'Only one :attribute field must be selected.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/es/components.php b/vendor/filament/forms/resources/lang/es/components.php deleted file mode 100644 index ff9a7eaf..00000000 --- a/vendor/filament/forms/resources/lang/es/components.php +++ /dev/null @@ -1,463 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Clonar', - ], - - 'add' => [ - 'label' => 'Añadir a :label', - ], - - 'add_between' => [ - 'label' => 'Insertar', - ], - - 'delete' => [ - 'label' => 'Borrar', - ], - - 'reorder' => [ - 'label' => 'Mover', - ], - - 'move_down' => [ - 'label' => 'Bajar', - ], - - 'move_up' => [ - 'label' => 'Subir', - ], - - 'collapse' => [ - 'label' => 'Contraer', - ], - - 'expand' => [ - 'label' => 'Expandir', - ], - - 'collapse_all' => [ - 'label' => 'Contraer todo', - ], - - 'expand_all' => [ - 'label' => 'Expandir todo', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Deseleccionar todos', - ], - - 'select_all' => [ - 'label' => 'Seleccionar todos', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancelar', - ], - - 'drag_crop' => [ - 'label' => 'Modo de arrastre "recortar"', - ], - - 'drag_move' => [ - 'label' => 'Modo de arrastre "mover"', - ], - - 'flip_horizontal' => [ - 'label' => 'Voltear imagen horizontalmente', - ], - - 'flip_vertical' => [ - 'label' => 'Voltear imagen verticalmente', - ], - - 'move_down' => [ - 'label' => 'Mover imagen hacia abajo', - ], - - 'move_left' => [ - 'label' => 'Mover imagen a la izquierda', - ], - - 'move_right' => [ - 'label' => 'Mover imagen a la derecha', - ], - - 'move_up' => [ - 'label' => 'Mover imagen hacia arriba', - ], - - 'reset' => [ - 'label' => 'Reiniciar', - ], - - 'rotate_left' => [ - 'label' => 'Girar imagen a la izquierda', - ], - - 'rotate_right' => [ - 'label' => 'Girar imagen a la derecha', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Establecer relación de aspecto a :ratio', - ], - - 'save' => [ - 'label' => 'Guardar', - ], - - 'zoom_100' => [ - 'label' => 'Ampliar imagen al 100%', - ], - - 'zoom_in' => [ - 'label' => 'Acercarse', - ], - - 'zoom_out' => [ - 'label' => 'Alejarse', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Altura', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rotación', - 'unit' => 'grados', - ], - - 'width' => [ - 'label' => 'Ancho', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Relaciones de aspecto', - - 'no_fixed' => [ - 'label' => 'Libre', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'No se recomienda editar archivos SVG ya que puede provocar una pérdida de calidad al escalar.\n ¿Está seguro de que desea continuar?', - 'disabled' => 'La edición de archivos SVG está deshabilitada ya que puede provocar una pérdida de calidad al escalar.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Añadir fila', - ], - - 'delete' => [ - 'label' => 'Eliminar fila', - ], - - 'reorder' => [ - 'label' => 'Reordenar fila', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Clave', - ], - - 'value' => [ - 'label' => 'Valor', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Adjuntar archivos', - 'blockquote' => 'Cita', - 'bold' => 'Negrita', - 'bullet_list' => 'Viñetas', - 'code_block' => 'Bloque de código', - 'heading' => 'Encabezado', - 'italic' => 'Cursiva', - 'link' => 'Enlace', - 'ordered_list' => 'Lista numerada', - 'strike' => 'Tachado', - 'redo' => 'Rehacer', - 'table' => 'Tabla', - 'undo' => 'Deshacer', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'Sí', - 'false' => 'No', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Añadir a :label', - ], - - 'add_between' => [ - 'label' => 'Insertar entre', - ], - - 'delete' => [ - 'label' => 'Borrar', - ], - - 'reorder' => [ - 'label' => 'Mover', - ], - - 'clone' => [ - 'label' => 'Clonar', - ], - - 'move_down' => [ - 'label' => 'Bajar', - ], - - 'move_up' => [ - 'label' => 'Subir', - ], - - 'collapse' => [ - 'label' => 'Contraer', - ], - - 'expand' => [ - 'label' => 'Expandir', - ], - - 'collapse_all' => [ - 'label' => 'Contraer todo', - ], - - 'expand_all' => [ - 'label' => 'Expandir todo', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Enlace', - 'unlink' => 'Quitar enlace', - ], - - 'label' => 'URL', - - 'placeholder' => 'Teclee un enlace URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Adjuntar archivos', - 'blockquote' => 'Cita', - 'bold' => 'Negrita', - 'bullet_list' => 'Viñetas', - 'code_block' => 'Bloque de código', - 'h1' => 'Título', - 'h2' => 'Encabezado', - 'h3' => 'Subencabezado', - 'italic' => 'Cursiva', - 'link' => 'Enlace', - 'ordered_list' => 'Lista numerada', - 'redo' => 'Rehacer', - 'strike' => 'Tachar', - 'underline' => 'Subrayar', - 'undo' => 'Deshacer', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Nuevo', - - 'actions' => [ - - 'create' => [ - 'label' => 'Crear', - ], - - 'create_another' => [ - 'label' => 'Crear y crear otro', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Editar', - - 'actions' => [ - - 'save' => [ - 'label' => 'Guardar', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Sí', - 'false' => 'No', - ], - - 'loading_message' => 'Cargando...', - - 'max_items_message' => 'Solo :count pueden ser seleccionados.', - - 'no_search_results_message' => 'No se encontraron coincidencias con su búsqueda.', - - 'placeholder' => 'Seleccione una opción', - - 'searching_message' => 'Buscando...', - - 'search_prompt' => 'Teclee para buscar...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Nueva etiqueta', - ], - - 'text_input' => [ - - 'actions' => [ - - 'hide_password' => [ - 'label' => 'Ocultar contraseña', - ], - - 'show_password' => [ - 'label' => 'Mostrar contraseña', - ], - - ], - - ], - - 'toggle_buttons' => [ - - 'boolean' => [ - 'true' => 'Sí', - 'false' => 'No', - ], - - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Anterior', - ], - - 'next_step' => [ - 'label' => 'Siguiente', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/es/validation.php b/vendor/filament/forms/resources/lang/es/validation.php deleted file mode 100644 index 5fbe6aa3..00000000 --- a/vendor/filament/forms/resources/lang/es/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'Se debe seleccionar al menos un campo :attribute.', - 'only_one_must_be_selected' => 'Se debe seleccionar solamente un campo :attribute.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/eu/components.php b/vendor/filament/forms/resources/lang/eu/components.php deleted file mode 100644 index ae9a4527..00000000 --- a/vendor/filament/forms/resources/lang/eu/components.php +++ /dev/null @@ -1,293 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Klonatu', - ], - - 'add' => [ - 'label' => 'Gehitu :label', - ], - - 'add_between' => [ - 'label' => 'Txertatu', - ], - - 'delete' => [ - 'label' => 'Ezabatu', - ], - - 'reorder' => [ - 'label' => 'Mugitu', - ], - - 'move_down' => [ - 'label' => 'Jaitsi', - ], - - 'move_up' => [ - 'label' => 'Igo', - ], - - 'collapse' => [ - 'label' => 'Kontrairatu', - ], - - 'expand' => [ - 'label' => 'Zabaldu', - ], - - 'collapse_all' => [ - 'label' => 'Kontrairatu dena', - ], - - 'expand_all' => [ - 'label' => 'Zabaldu dena', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Deselektatu guztia', - ], - - 'select_all' => [ - 'label' => 'Aukeratu guztia', - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Gehitu errenkada', - ], - - 'delete' => [ - 'label' => 'Ezabatu errenkada', - ], - - 'reorder' => [ - 'label' => 'Birordenatu errenkada', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Giltza', - ], - - 'value' => [ - 'label' => 'Balioa', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Erantsi agiriak', - 'blockquote' => 'Aipuak', - 'bold' => 'Lodia', - 'bullet_list' => 'Buletinak', - 'code_block' => 'Kode-blokea', - 'heading' => 'Goiburua', - 'edit' => 'Idatzi', - 'italic' => 'Etzana', - 'link' => 'Esteka', - 'ordered_list' => 'Zerrenda zenbakiduna', - 'preview' => 'Aurreikuspena', - 'strike' => 'Marratua', - 'redo' => 'Berregin', - 'table' => 'Taula', - 'undo' => 'Desegin', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Gehitu :label', - ], - - 'delete' => [ - 'label' => 'Ezabatu', - ], - - 'reorder' => [ - 'label' => 'Mugitu', - ], - - 'clone' => [ - 'label' => 'Klonatu', - ], - - 'move_down' => [ - 'label' => 'Jaitsi', - ], - - 'move_up' => [ - 'label' => 'Igo', - ], - - 'collapse' => [ - 'label' => 'Kontrairatu', - ], - - 'expand' => [ - 'label' => 'Zabaldu', - ], - - 'collapse_all' => [ - 'label' => 'Kontrairatu dena', - ], - - 'expand_all' => [ - 'label' => 'Zabaldu dena', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Esteka', - 'unlink' => 'Kendu esteka', - ], - - 'label' => 'URL', - - 'placeholder' => 'Idatzi URL estekatzeko', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Erantsi agiriak', - 'blockquote' => 'Aipuak', - 'bold' => 'Lodia', - 'bullet_list' => 'Buletinak', - 'code_block' => 'Kode-blokea', - 'h1' => 'Izenburua', - 'h2' => 'Goiburua', - 'h3' => 'Azpigoiburua', - 'italic' => 'Etzana', - 'link' => 'Esteka', - 'ordered_list' => 'Zerrenda zenbakiduna', - 'redo' => 'Berregin', - 'strike' => 'Marratua', - 'underline' => 'Azpimarratua', - 'undo' => 'Desegin', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Berria', - - 'actions' => [ - - 'create' => [ - 'label' => 'Sortu', - ], - 'create_another' => [ - 'label' => 'Sortu eta beste bat', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Editatu', - - 'actions' => [ - - 'save' => [ - 'label' => 'Gorde', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Bai', - 'false' => 'Ez', - ], - - 'loading_message' => 'Kargatzen...', - 'max_items_message' => 'Soilik :count hauta daiteke.', - 'no_search_results_message' => 'Ez da bat datorren bilaketarekin.', - 'placeholder' => 'Aukeratu aukera bat', - 'searching_message' => 'Bilatzen...', - - 'search_prompt' => 'Idatzi bilatzeko...', - ], - - 'tags_input' => [ - 'placeholder' => 'Etiketa berria', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Aurrekoa', - ], - - 'next_step' => [ - 'label' => 'Hurrengoa', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/fa/components.php b/vendor/filament/forms/resources/lang/fa/components.php deleted file mode 100644 index adb52cc3..00000000 --- a/vendor/filament/forms/resources/lang/fa/components.php +++ /dev/null @@ -1,416 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'همسان‌سازی', - ], - - 'add' => [ - 'label' => 'افزودن به :label', - ], - - 'add_between' => [ - 'label' => 'قراردادن', - ], - - 'delete' => [ - 'label' => 'حذف', - ], - - 'reorder' => [ - 'label' => 'جابه‌جایی', - ], - - 'move_down' => [ - 'label' => 'پایین آوردن', - ], - - 'move_up' => [ - 'label' => 'بالا بردن', - ], - - 'collapse' => [ - 'label' => 'جمع کردن', - ], - - 'expand' => [ - 'label' => 'باز کردن', - ], - - 'collapse_all' => [ - 'label' => 'جمع کردن همه', - ], - - 'expand_all' => [ - 'label' => 'باز کردن همه', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'لغو انتخاب همه', - ], - - 'select_all' => [ - 'label' => 'انتخاب همه', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'لغو', - ], - - 'drag_crop' => [ - 'label' => 'حالت کشیدن «برش»', - ], - - 'drag_move' => [ - 'label' => 'حالت کشیدن «حرکت»', - ], - - 'flip_horizontal' => [ - 'label' => 'برگردان افقی عکس', - ], - - 'flip_vertical' => [ - 'label' => 'برگردان عمودی عکس', - ], - - 'move_down' => [ - 'label' => 'به پایین بردن عکس', - ], - - 'move_left' => [ - 'label' => 'به چپ بردن عکس', - ], - - 'move_right' => [ - 'label' => 'به راست بردن عکس', - ], - - 'move_up' => [ - 'label' => 'به بالا بردن عکس', - ], - - 'reset' => [ - 'label' => 'بازنشانی', - ], - - 'rotate_left' => [ - 'label' => 'چرخاندن عکس به چپ', - ], - - 'rotate_right' => [ - 'label' => 'چرخاندن عکس به راست', - ], - - 'set_aspect_ratio' => [ - 'label' => 'تنظیم نسبت ابعاد به :ratio', - ], - - 'save' => [ - 'label' => 'ذخیره', - ], - - 'zoom_100' => [ - 'label' => 'بزرگنمایی عکس به 100%', - ], - - 'zoom_in' => [ - 'label' => 'بزرگنمایی', - ], - - 'zoom_out' => [ - 'label' => 'دورنمایی', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'ارتفاع', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'چرخش', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => 'عرض', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'نسبت ابعاد', - - 'no_fixed' => [ - 'label' => 'آزاد', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'افزودن ردیف', - ], - - 'delete' => [ - 'label' => 'حذف ردیف', - ], - - 'reorder' => [ - 'label' => 'بازچینش ردیف', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'کلید', - ], - - 'value' => [ - 'label' => 'مقدار', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'پیوستن فایل ها', - 'blockquote' => 'نقل قول', - 'bold' => 'پررنگ', - 'bullet_list' => 'لیست نامرتب', - 'code_block' => 'بلاک کد', - 'heading' => 'عنوان', - 'italic' => 'مورب', - 'link' => 'لینک', - 'ordered_list' => 'لیست مرتب', - 'redo' => 'اَزنو', - 'strike' => 'خط زده', - 'table' => 'جدول', - 'undo' => 'واگرد', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'افزودن به :label', - ], - - 'delete' => [ - 'label' => 'حذف', - ], - - 'clone' => [ - 'label' => 'همسان‌سازی', - ], - - 'reorder' => [ - 'label' => 'جابه‌جایی', - ], - - 'move_down' => [ - 'label' => 'پایین آوردن', - ], - - 'move_up' => [ - 'label' => 'بالا بردن', - ], - - 'collapse' => [ - 'label' => 'جمع کردن', - ], - - 'expand' => [ - 'label' => 'باز کردن', - ], - - 'collapse_all' => [ - 'label' => 'جمع کردن همه', - ], - - 'expand_all' => [ - 'label' => 'باز کردن همه', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'لینک', - 'unlink' => 'لغو لینک', - ], - - 'label' => 'آدرس اینترنتی', - - 'placeholder' => 'یک آدرس اینترنتی وارد کنید', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'پیوستن فایل ها', - 'blockquote' => 'نقل قول', - 'bold' => 'پررنگ', - 'bullet_list' => 'لیست نامرتب', - 'code_block' => 'بلوک کد', - 'h1' => 'عنوان اصلی', - 'h2' => 'عنوان فرعی', - 'h3' => 'زیرعنوان', - 'italic' => 'مورب', - 'link' => 'لینک', - 'ordered_list' => 'لیست مرتب', - 'redo' => 'جلو', - 'strike' => 'خط زده', - 'underline' => 'زیرخط', - 'undo' => 'عقب', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'ایجاد', - - 'actions' => [ - - 'create' => [ - 'label' => 'ایجاد', - ], - - 'create_another' => [ - 'label' => 'ایجاد و ایجاد یکی دیگر', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'ویرایش', - - 'actions' => [ - - 'save' => [ - 'label' => 'ذخیره', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'بله', - 'false' => 'خیر', - ], - - 'loading_message' => 'درحال بارگذاری...', - - 'max_items_message' => 'تنها :count مورد می‌تواند انتخاب شود.', - - 'no_search_results_message' => 'هیچ گزینه‌ای با جستجوی شما مطابقت ندارد.', - - 'placeholder' => 'یک گزینه را انتخاب کنید', - - 'searching_message' => 'درحال جستجو...', - - 'search_prompt' => 'برای جستجو تایپ کنید...', - - ], - - 'tags_input' => [ - 'placeholder' => 'تگ جدید', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'قبلی', - ], - - 'next_step' => [ - 'label' => 'بعدی', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/fi/components.php b/vendor/filament/forms/resources/lang/fi/components.php deleted file mode 100644 index dcdc2e55..00000000 --- a/vendor/filament/forms/resources/lang/fi/components.php +++ /dev/null @@ -1,463 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Kloonaa', - ], - - 'add' => [ - 'label' => 'Lisää :label', - ], - - 'add_between' => [ - 'label' => 'Sijoita', - ], - - 'delete' => [ - 'label' => 'Poista', - ], - - 'reorder' => [ - 'label' => 'Siirrä', - ], - - 'move_down' => [ - 'label' => 'Siirrä alas', - ], - - 'move_up' => [ - 'label' => 'Siirrä ylös', - ], - - 'collapse' => [ - 'label' => 'Sulje', - ], - - 'expand' => [ - 'label' => 'Avaa', - ], - - 'collapse_all' => [ - 'label' => 'Sulje kaikki', - ], - - 'expand_all' => [ - 'label' => 'Avaa kaikki', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Poista valinta kaikista', - ], - - 'select_all' => [ - 'label' => 'Valitse kaikki', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Peruuta', - ], - - 'drag_crop' => [ - 'label' => 'Siirtotila "rajaus"', - ], - - 'drag_move' => [ - 'label' => 'Siirtotila "siirrä"', - ], - - 'flip_horizontal' => [ - 'label' => 'Käännä kuva vaakasuunnassa', - ], - - 'flip_vertical' => [ - 'label' => 'Käännä kuva pystysuunnassa', - ], - - 'move_down' => [ - 'label' => 'Siirrä kuvaa alas', - ], - - 'move_left' => [ - 'label' => 'Siirrä kuvaa vasemmalle ', - ], - - 'move_right' => [ - 'label' => 'Siirrä kuvaa oikealle', - ], - - 'move_up' => [ - 'label' => 'Siirrä kuvaa ylös', - ], - - 'reset' => [ - 'label' => 'Palauta', - ], - - 'rotate_left' => [ - 'label' => 'Käännä kuvaa vasemmalle', - ], - - 'rotate_right' => [ - 'label' => 'Käännä kuvaa oikealle', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Aseta kuvasuhteeksi :ratio', - ], - - 'save' => [ - 'label' => 'Tallenna', - ], - - 'zoom_100' => [ - 'label' => 'Oikea koko', - ], - - 'zoom_in' => [ - 'label' => 'Lähennä', - ], - - 'zoom_out' => [ - 'label' => 'Loitonna', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Korkeus', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Kierre', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => 'Leveys', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Kuvasuhde', - - 'no_fixed' => [ - 'label' => 'Vapaa', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'SVG-tiedostojen muokkausta ei suositella, koska laatu voi heikentyä kokoa muuttaessa.\n Oletko varma että haluat jatkaa?', - 'disabled' => 'SVG-tiedostojen muokkaus on poissa käytöstä koska se voi johtaa laadun heikkenemiseen.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Lisää rivi', - ], - - 'delete' => [ - 'label' => 'Poista rivi', - ], - - 'reorder' => [ - 'label' => 'Järjestele rivi', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Avain', - ], - - 'value' => [ - 'label' => 'Arvo', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Liitä tiedostoja', - 'blockquote' => 'Lainaus', - 'bold' => 'Lihavointi', - 'bullet_list' => 'Lista', - 'code_block' => 'Koodialue', - 'heading' => 'Otsikko', - 'italic' => 'Kursivoitu', - 'link' => 'Linkki', - 'ordered_list' => 'Luettelo', - 'redo' => 'Toista', - 'strike' => 'Yliviivaus', - 'table' => 'Taulukko', - 'undo' => 'Peruuta', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'Kyllä', - 'false' => 'Ei', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Lisää :label', - ], - - 'add_between' => [ - 'label' => 'Lisää väliin', - ], - - 'delete' => [ - 'label' => 'Poista', - ], - - 'clone' => [ - 'label' => 'Kloonaa', - ], - - 'reorder' => [ - 'label' => 'Siirrä', - ], - - 'move_down' => [ - 'label' => 'Siirrä alas', - ], - - 'move_up' => [ - 'label' => 'Siirrä ylös', - ], - - 'collapse' => [ - 'label' => 'Sulje', - ], - - 'expand' => [ - 'label' => 'Avaa', - ], - - 'collapse_all' => [ - 'label' => 'Sulje kaikki', - ], - - 'expand_all' => [ - 'label' => 'Avaa kaikki', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Linkitä', - 'unlink' => 'Poista linkki', - ], - - 'label' => 'URL', - - 'placeholder' => 'Lisää osoite', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Liitä tiedostoja', - 'blockquote' => 'Lainaus', - 'bold' => 'Lihavointi', - 'bullet_list' => 'Lista', - 'code_block' => 'Koodialue', - 'h1' => 'Pääotsikko', - 'h2' => 'Otsikko', - 'h3' => 'Aliotsikko', - 'italic' => 'Kursivoitu', - 'link' => 'Linkki', - 'ordered_list' => 'Luettelo', - 'redo' => 'Toista', - 'strike' => 'Yliviivaus', - 'underline' => 'Alleviivaus', - 'undo' => 'Peruuta', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Uusi', - - 'actions' => [ - - 'create' => [ - 'label' => 'Uusi', - ], - - 'create_another' => [ - 'label' => 'Luo & luo toinen', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Muokkaa', - - 'actions' => [ - - 'save' => [ - 'label' => 'Tallenna', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Kyllä', - 'false' => 'Ei', - ], - - 'loading_message' => 'Ladataan...', - - 'max_items_message' => 'Vain :count voi valita.', - - 'no_search_results_message' => 'Haku ei löytänyt tuloksia.', - - 'placeholder' => 'Valitse vaihtoehto', - - 'searching_message' => 'Haetaan...', - - 'search_prompt' => 'Kirjoita hakeaksesi...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Uusi tunniste', - ], - - 'text_input' => [ - - 'actions' => [ - - 'hide_password' => [ - 'label' => 'Piilota salasana', - ], - - 'show_password' => [ - 'label' => 'Näytä salasana', - ], - - ], - - ], - - 'toggle_buttons' => [ - - 'boolean' => [ - 'true' => 'Kyllä', - 'false' => 'Ei', - ], - - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Edellinen', - ], - - 'next_step' => [ - 'label' => 'Seuraava', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/fi/validation.php b/vendor/filament/forms/resources/lang/fi/validation.php deleted file mode 100644 index 1d9e631f..00000000 --- a/vendor/filament/forms/resources/lang/fi/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'Vähintään yksi :attribute kenttä tulee olla valittuna.', - 'only_one_must_be_selected' => 'Vain yksi :attribute kenttä tulee olla valittuna.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/fr/components.php b/vendor/filament/forms/resources/lang/fr/components.php deleted file mode 100644 index e50fe606..00000000 --- a/vendor/filament/forms/resources/lang/fr/components.php +++ /dev/null @@ -1,438 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Cloner', - ], - - 'add' => [ - 'label' => 'Ajouter à :label', - ], - - 'add_between' => [ - 'label' => 'Ajouter entre', - ], - - 'delete' => [ - 'label' => 'Supprimer', - ], - - 'reorder' => [ - 'label' => 'Déplacer', - ], - - 'move_down' => [ - 'label' => 'Déplacer vers le bas', - ], - - 'move_up' => [ - 'label' => 'Déplacer vers le haut', - ], - - 'collapse' => [ - 'label' => 'Plier', - ], - - 'expand' => [ - 'label' => 'Déplier', - ], - - 'collapse_all' => [ - 'label' => 'Tout plier', - ], - - 'expand_all' => [ - 'label' => 'Tout déplier', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Désélectionner tout', - ], - - 'select_all' => [ - 'label' => 'Sélectionner tout', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Annuler', - ], - - 'drag_crop' => [ - 'label' => 'Mode glisser "recadrer"', - ], - - 'drag_move' => [ - 'label' => 'Mode glisser "déplacer"', - ], - - 'flip_horizontal' => [ - 'label' => "Retourner l'image horizontalement", - ], - - 'flip_vertical' => [ - 'label' => "Retourner l'image verticalement", - ], - - 'move_down' => [ - 'label' => "Déplacer l'image vers le bas", - ], - - 'move_left' => [ - 'label' => "Déplacer l'image vers la gauche", - ], - - 'move_right' => [ - 'label' => "Déplacer l'image vers la droite", - ], - - 'move_up' => [ - 'label' => "Déplacer l'image vers le haut", - ], - - 'reset' => [ - 'label' => 'Réinitialiser', - ], - - 'rotate_left' => [ - 'label' => "Faire pivoter l'image vers la gauche", - ], - - 'rotate_right' => [ - 'label' => "Faire pivoter l'image vers la droite", - ], - - 'set_aspect_ratio' => [ - 'label' => 'Régler les proportions sur :ratio', - ], - - 'save' => [ - 'label' => 'Sauvegarder', - ], - - 'zoom_100' => [ - 'label' => "Agrandir l'image à 100%", - ], - - 'zoom_in' => [ - 'label' => 'Zoomer', - ], - - 'zoom_out' => [ - 'label' => 'Dézoomer', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Hauteur', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rotation', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => 'Largeur', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Proportions', - - 'no_fixed' => [ - 'label' => 'Libre', - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'La modification des fichiers SVG n\'est pas recommandée car elle peut entraîner une perte de qualité lors de la mise à l\'échelle.\n Êtes-vous sûr de vouloir continuer ?', - 'disabled' => 'La modification des fichiers SVG est désactivée car elle peut entraîner une perte de qualité lors de la mise à l\'échelle.', - ], - - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Ajouter une ligne', - ], - - 'delete' => [ - 'label' => 'Supprimer une ligne', - ], - - 'reorder' => [ - 'label' => 'Réorganiser une ligne', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Clé', - ], - - 'value' => [ - 'label' => 'Valeur', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Joindre des fichiers', - 'blockquote' => 'Citation', - 'bold' => 'Gras', - 'bullet_list' => 'Liste à puces', - 'code_block' => 'Bloc de code', - 'heading' => 'Titre', - 'italic' => 'Italique', - 'link' => 'Lien', - 'ordered_list' => 'Liste numérotée', - 'redo' => 'Refaire', - 'strike' => 'Barré', - 'table' => 'Table', - 'undo' => 'Annuler', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'Oui', - 'false' => 'Non', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Ajouter à :label', - ], - - 'add_between' => [ - 'label' => 'Insérer entre', - ], - - 'delete' => [ - 'label' => 'Supprimer', - ], - - 'clone' => [ - 'label' => 'Cloner', - ], - - 'reorder' => [ - 'label' => 'Déplacer', - ], - - 'move_down' => [ - 'label' => 'Déplacer vers le bas', - ], - - 'move_up' => [ - 'label' => 'Déplacer vers le haut', - ], - - 'collapse' => [ - 'label' => 'Plier', - ], - - 'expand' => [ - 'label' => 'Déplier', - ], - - 'collapse_all' => [ - 'label' => 'Tout plier', - ], - - 'expand_all' => [ - 'label' => 'Tout déplier', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Lien', - 'unlink' => 'Dissocier', - ], - - 'label' => 'URL', - - 'placeholder' => 'Entrez une URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Joindre fichiers', - 'blockquote' => 'Citation', - 'bold' => 'Gras', - 'bullet_list' => 'Liste à puces', - 'code_block' => 'Code', - 'h1' => 'Titre', - 'h2' => 'Titre', - 'h3' => 'Sous-titre', - 'italic' => 'Italique', - 'link' => 'Lien', - 'ordered_list' => 'Liste numérotée', - 'redo' => 'Refaire', - 'strike' => 'Barré', - 'underline' => 'Souligné', - 'undo' => 'Annuler', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Créer', - - 'actions' => [ - - 'create' => [ - 'label' => 'Créer', - ], - - 'create_another' => [ - 'label' => 'Créer & Ajouter un autre', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Modifier', - - 'actions' => [ - - 'save' => [ - 'label' => 'Sauvegarder', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Oui', - 'false' => 'Non', - ], - - 'loading_message' => 'En chargement...', - - 'max_items_message' => 'Uniquement :count peuvent être sélectionnés.', - - 'no_search_results_message' => 'Aucune option ne correspond à votre recherche.', - - 'placeholder' => 'Sélectionnez une option', - - 'searching_message' => 'En recherche...', - - 'search_prompt' => 'Commencez à taper pour rechercher...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Nouveau tag', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Précédent', - ], - - 'next_step' => [ - 'label' => 'Suivant', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/fr/validation.php b/vendor/filament/forms/resources/lang/fr/validation.php deleted file mode 100644 index 4a60d857..00000000 --- a/vendor/filament/forms/resources/lang/fr/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'Au moins un champ :attribute doit être sélectionné.', - 'only_one_must_be_selected' => 'Seulement un champ :attribute doit être sélectionné.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/he/components.php b/vendor/filament/forms/resources/lang/he/components.php deleted file mode 100644 index 17808bec..00000000 --- a/vendor/filament/forms/resources/lang/he/components.php +++ /dev/null @@ -1,412 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'שכפל', - ], - - 'add' => [ - 'label' => 'הוסף ל :label', - ], - - 'add_between' => [ - 'label' => 'הכנס בין הבלוקים', - ], - - 'delete' => [ - 'label' => 'מחק', - ], - - 'reorder' => [ - 'label' => 'העבר', - ], - - 'move_down' => [ - 'label' => 'הזז מטה', - ], - - 'move_up' => [ - 'label' => 'הזז מעלה', - ], - - 'collapse' => [ - 'label' => 'צמצם', - ], - - 'expand' => [ - 'label' => 'הרחב', - ], - - 'collapse_all' => [ - 'label' => 'צמצם הכל', - ], - - 'expand_all' => [ - 'label' => 'הרחב הכל', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'בטל בחירה בהכל', - ], - - 'select_all' => [ - 'label' => 'בחר הכל', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'ביטול', - ], - - 'drag_crop' => [ - 'label' => 'מצב גרירה "חיתוך"', - ], - - 'drag_move' => [ - 'label' => 'מצב גרירה "הזזה"', - ], - - 'flip_horizontal' => [ - 'label' => 'היפוך אופקי של התמונה', - ], - - 'flip_vertical' => [ - 'label' => 'היפוך אנכי של התמונה', - ], - - 'move_down' => [ - 'label' => 'הזזת התמונה למטה', - ], - - 'move_left' => [ - 'label' => 'הזזת התמונה לשמאל', - ], - - 'move_right' => [ - 'label' => 'הזזת התמונה לימין', - ], - - 'move_up' => [ - 'label' => 'הזזת התמונה למעלה', - ], - - 'reset' => [ - 'label' => 'איפוס', - ], - - 'rotate_left' => [ - 'label' => 'סיבוב התמונה שמאלה', - ], - - 'rotate_right' => [ - 'label' => 'סיבוב התמונה ימינה', - ], - - 'set_aspect_ratio' => [ - 'label' => 'הגדר יחס צדדי לתמונה :ratio', - ], - - 'save' => [ - 'label' => 'שמור', - ], - - 'zoom_100' => [ - 'label' => 'התמונה עם זום 100%', - ], - - 'zoom_in' => [ - 'label' => 'התקרב', - ], - - 'zoom_out' => [ - 'label' => 'התרחק', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'גובה', - 'unit' => 'פיקסלים', - ], - - 'rotation' => [ - 'label' => 'סיבוב', - 'unit' => 'מעלות', - ], - - 'width' => [ - 'label' => 'רוחב', - 'unit' => 'פיקסלים', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'פיקסלים', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'פיקסלים', - ], - ], - 'aspect_ratios' => [ - - 'label' => 'יחסי ציר', - - 'no_fixed' => [ - 'label' => 'חופשי', - ], - - ], - - ], - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'הוסף שורה', - ], - - 'delete' => [ - 'label' => 'מחק שורה', - ], - - 'reorder' => [ - 'label' => 'סדר רשומה מחדש', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'שדה', - ], - - 'value' => [ - 'label' => 'ערך', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'הוסף קבצים', - 'blockquote' => 'בלוק ציטוט', - 'bold' => 'מודגש', - 'bullet_list' => 'רשימת נקודות', - 'code_block' => 'בלוק קוד', - 'heading' => 'כותרת', - 'italic' => 'נטוי', - 'link' => 'קישור', - 'ordered_list' => 'רשימה ממוספרת', - 'strike' => 'כתיב מחדל', - 'redo' => 'שחזור', - 'table' => 'טבלה', - 'undo' => 'ביטול שחזור', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'הוסף ל :label', - ], - - 'delete' => [ - 'label' => 'מחק', - ], - - 'clone' => [ - 'label' => 'שכפל', - ], - - 'reorder' => [ - 'label' => 'העבר', - ], - - 'move_down' => [ - 'label' => 'הזז מטה', - ], - - 'move_up' => [ - 'label' => 'הזז מעלה', - ], - - 'collapse' => [ - 'label' => 'צמצם', - ], - - 'expand' => [ - 'label' => 'הרחב', - ], - - 'collapse_all' => [ - 'label' => 'צמצם הכל', - ], - - 'expand_all' => [ - 'label' => 'הרחב הכל', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'קישור', - 'unlink' => 'בטל קישור', - ], - - 'label' => 'כתובת', - - 'placeholder' => 'הכנס כתובת', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'הוסף קבצים', - 'blockquote' => 'בלוק ציטוט', - 'bold' => 'מודגש', - 'bullet_list' => 'רשימת נקודות', - 'code_block' => 'בלוק קוד', - 'h1' => 'כותרת 1', - 'h2' => 'כותרת 2', - 'h3' => 'כותרת 3', - 'italic' => 'נטוי', - 'link' => 'קישור', - 'ordered_list' => 'רשימה ממוספרת', - 'redo' => 'חזור על', - 'strike' => 'כתיב מחדל', - 'underline' => 'קו תחתון', - 'undo' => 'בטל', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'יצירה', - - 'actions' => [ - - 'create' => [ - 'label' => 'צור', - ], - 'create_another' => [ - 'label' => 'צור וצור עוד אחת', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'עריכה', - - 'actions' => [ - - 'save' => [ - 'label' => 'שמור', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'כן', - 'false' => 'לא', - ], - - 'loading_message' => 'טוען...', - - 'max_items_message' => 'ניתן לבחור רק :count', - - 'no_search_results_message' => 'לא נמצאו תוצאות.', - - 'placeholder' => 'בחר', - - 'searching_message' => 'מחפש...', - - 'search_prompt' => 'התחל להקליד על מנת לחפש...', - - ], - - 'tags_input' => [ - 'placeholder' => 'תגית חדשה', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'הקודם', - ], - - 'next_step' => [ - 'label' => 'הבא', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/hi/components.php b/vendor/filament/forms/resources/lang/hi/components.php deleted file mode 100644 index 6a88920d..00000000 --- a/vendor/filament/forms/resources/lang/hi/components.php +++ /dev/null @@ -1,150 +0,0 @@ - [ - - 'actions' => [ - - 'add' => [ - 'label' => ':label में जोड़ें', - ], - - 'add_between' => [ - 'label' => 'के बीच जोड़ें', - ], - - 'delete' => [ - 'label' => 'हटाएँ', - ], - - 'move_down' => [ - 'label' => 'नीचे करे', - ], - - 'move_up' => [ - 'label' => 'ऊपर करे', - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'पंक्ति जोड़ें', - ], - - 'delete' => [ - 'label' => 'पंक्ति हटाएँ', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'कुंजी', - ], - - 'value' => [ - 'label' => 'मान', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'फ़ाइलें जोड़ें', - 'bold' => 'स्पष्ट', - 'bullet_list' => 'बुलॅट सूची', - 'code_block' => 'कोड ब्लॉक', - 'edit' => 'संपादन करे', - 'italic' => 'तिरछा', - 'link' => 'लिंक', - 'ordered_list' => 'अंकीय सूची', - 'preview' => 'पूर्वावलोकन', - 'strike' => 'शद्ब कांटे', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => ':label में जोड़ें', - ], - - 'delete' => [ - 'label' => 'हटाएँ', - ], - - 'move_down' => [ - 'label' => 'नीचे करे', - ], - - 'move_up' => [ - 'label' => 'ऊपर करे', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'लिंक', - 'unlink' => 'अनलिंक', - ], - - 'label' => 'यूआरएल', - - 'placeholder' => 'यूआरएल(URL) डाले', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'फ़ाइलें जोड़ें', - 'blockquote' => 'ब्लॉककोट', - 'bold' => 'स्पष्ट', - 'bullet_list' => 'बुलॅट सूची', - 'code_block' => 'कोड ब्लॉक', - 'h1' => 'शीर्षक', - 'h2' => 'शीर्षक', - 'h3' => 'उपशीर्षक', - 'italic' => 'तिरछा', - 'link' => 'लिंक', - 'ordered_list' => 'अंकीय सूची', - 'redo' => 'दोहराएँ', - 'strike' => 'शद्ब कांटे', - 'undo' => 'पूर्ववत्', - ], - - ], - - 'select' => [ - 'no_search_results_message' => 'आपकी खोज से मेल खाने वाला कोई विकल्प नहीं मिला', - 'placeholder' => 'किसी विकल्प का चयन करें', - 'search_prompt' => 'खोज करने के लिए लिखना प्रारंभ करें...', - ], - - 'tags_input' => [ - 'placeholder' => 'नया टैग', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/hr/components.php b/vendor/filament/forms/resources/lang/hr/components.php deleted file mode 100644 index 226a154a..00000000 --- a/vendor/filament/forms/resources/lang/hr/components.php +++ /dev/null @@ -1,416 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Kloniraj', - ], - - 'add' => [ - 'label' => 'Dodaj na :label', - ], - - 'add_between' => [ - 'label' => 'Umetni između blokova', - ], - - 'delete' => [ - 'label' => 'Obriši', - ], - - 'reorder' => [ - 'label' => 'Pomakni', - ], - - 'move_down' => [ - 'label' => 'Pomakni dolje', - ], - - 'move_up' => [ - 'label' => 'Pomakni gore', - ], - - 'collapse' => [ - 'label' => 'Skupi', - ], - - 'expand' => [ - 'label' => 'Proširi', - ], - - 'collapse_all' => [ - 'label' => 'Skupi sve', - ], - - 'expand_all' => [ - 'label' => 'Proširi sve', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Odznači sve', - ], - - 'select_all' => [ - 'label' => 'Označi sve', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Odustani', - ], - - 'drag_crop' => [ - 'label' => 'Povlačenje za obrezivanje', - ], - - 'drag_move' => [ - 'label' => 'Povlačenje za pomicanje', - ], - - 'flip_horizontal' => [ - 'label' => 'Obrni sliku horizontalno', - ], - - 'flip_vertical' => [ - 'label' => 'Obrni sliku vertikalno', - ], - - 'move_down' => [ - 'label' => 'Pomakni sliku dolje', - ], - - 'move_left' => [ - 'label' => 'Pomakni sliku lijevo', - ], - - 'move_right' => [ - 'label' => 'Pomakni sliku desno', - ], - - 'move_up' => [ - 'label' => 'Pomakni sliku gore', - ], - - 'reset' => [ - 'label' => 'Poništi', - ], - - 'rotate_left' => [ - 'label' => 'Rotiraj sliku ulijevo', - ], - - 'rotate_right' => [ - 'label' => 'Rotiraj sliku udesno', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Postavi omjer širine i visine na :ratio', - ], - - 'save' => [ - 'label' => 'Spremi', - ], - - 'zoom_100' => [ - 'label' => 'Zumiraj sliku na 100%', - ], - - 'zoom_in' => [ - 'label' => 'Povećaj', - ], - - 'zoom_out' => [ - 'label' => 'Smanji', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Visina', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rotacija', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => 'Širina', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Omjeri širine i visine', - - 'no_fixed' => [ - 'label' => 'Slobodno', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Dodaj red', - ], - - 'delete' => [ - 'label' => 'Obriši red', - ], - - 'reorder' => [ - 'label' => 'Promijeni redoslijed reda', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Ključ', - ], - - 'value' => [ - 'label' => 'Vrijednost', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Dodaj datoteke', - 'blockquote' => 'Blockquote', - 'bold' => 'Podebljano', - 'bullet_list' => 'Lista', - 'code_block' => 'Blok koda', - 'heading' => 'Zaglavlje', - 'italic' => 'Kurziv', - 'link' => 'Poveznica', - 'ordered_list' => 'Numerirana lista', - 'redo' => 'Ponovi', - 'strike' => 'Precrtano', - 'table' => 'Tablica', - 'undo' => 'Poništi', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Dodaj na :label', - ], - - 'delete' => [ - 'label' => 'Obriši', - ], - - 'clone' => [ - 'label' => 'Kloniraj', - ], - - 'reorder' => [ - 'label' => 'Pomakni', - ], - - 'move_down' => [ - 'label' => 'Pomakni dolje', - ], - - 'move_up' => [ - 'label' => 'Pomakni gore', - ], - - 'collapse' => [ - 'label' => 'Skupi', - ], - - 'expand' => [ - 'label' => 'Proširi', - ], - - 'collapse_all' => [ - 'label' => 'Skupi sve', - ], - - 'expand_all' => [ - 'label' => 'Proširi sve', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Poveznica', - 'unlink' => 'Ukloni poveznicu', - ], - - 'label' => 'URL', - - 'placeholder' => 'Unesi URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Dodaj datoteke', - 'blockquote' => 'Blockquote', - 'bold' => 'Podebljano', - 'bullet_list' => 'Lista', - 'code_block' => 'Blok koda', - 'h1' => 'Naslov', - 'h2' => 'Zaglavlje', - 'h3' => 'Podnaslov', - 'italic' => 'Kurziv', - 'link' => 'Poveznica', - 'ordered_list' => 'Numerirana lista', - 'redo' => 'Ponovi', - 'strike' => 'Precrtano', - 'underline' => 'Podcrtano', - 'undo' => 'Poništi', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Napravi', - - 'actions' => [ - - 'create' => [ - 'label' => 'Napravi', - ], - - 'create_another' => [ - 'label' => 'Napravi i napravi drugi', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Uredi', - - 'actions' => [ - - 'save' => [ - 'label' => 'Spremi', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Da', - 'false' => 'Ne', - ], - - 'loading_message' => 'Učitavanje...', - - 'max_items_message' => 'Samo :count može biti odabrano.', - - 'no_search_results_message' => 'Nema opcija koje odgovaraju vašem pretraživanju.', - - 'placeholder' => 'Odaberi opciju', - - 'searching_message' => 'Pretraživanje...', - - 'search_prompt' => 'Počnite tipkati za pretragu...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Novi tag', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Natrag', - ], - - 'next_step' => [ - 'label' => 'Naprijed', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/hu/components.php b/vendor/filament/forms/resources/lang/hu/components.php deleted file mode 100644 index 29934049..00000000 --- a/vendor/filament/forms/resources/lang/hu/components.php +++ /dev/null @@ -1,438 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Duplikálás', - ], - - 'add' => [ - 'label' => 'Új :label', - ], - - 'add_between' => [ - 'label' => 'Beillesztés blokkok közé', - ], - - 'delete' => [ - 'label' => 'Törlés', - ], - - 'reorder' => [ - 'label' => 'Mozgatás', - ], - - 'move_down' => [ - 'label' => 'Mozgatás lefelé', - ], - - 'move_up' => [ - 'label' => 'Mozgatás felfelé', - ], - - 'collapse' => [ - 'label' => 'Becsukás', - ], - - 'expand' => [ - 'label' => 'Kibontás', - ], - - 'collapse_all' => [ - 'label' => 'Összes becsukása', - ], - - 'expand_all' => [ - 'label' => 'Összes kibontása', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Kijelölés megszüntetése', - ], - - 'select_all' => [ - 'label' => 'Összes kijelölése', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Mégsem', - ], - - 'drag_crop' => [ - 'label' => 'Méretrevágási mód', - ], - - 'drag_move' => [ - 'label' => 'Mozgatási mód', - ], - - 'flip_horizontal' => [ - 'label' => 'Kép vízszintes tükrözése', - ], - - 'flip_vertical' => [ - 'label' => 'Kép függőleges tükrözése', - ], - - 'move_down' => [ - 'label' => 'Lefele mozgatás', - ], - - 'move_left' => [ - 'label' => 'Balra mozgatás', - ], - - 'move_right' => [ - 'label' => 'Jobbra mozgatás', - ], - - 'move_up' => [ - 'label' => 'Felfele mozgatás', - ], - - 'reset' => [ - 'label' => 'Visszaállítás', - ], - - 'rotate_left' => [ - 'label' => 'Kép elforgatása balra', - ], - - 'rotate_right' => [ - 'label' => 'Kép elforgatása jobbra', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Képarány beállítása :ratio értékre', - ], - - 'save' => [ - 'label' => 'Mentés', - ], - - 'zoom_100' => [ - 'label' => 'Kép nagyítása 100%-ra', - ], - - 'zoom_in' => [ - 'label' => 'Nagyítás', - ], - - 'zoom_out' => [ - 'label' => 'Kicsinyítés', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Magasság', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Elforgatás', - 'unit' => 'fok', - ], - - 'width' => [ - 'label' => 'Szélesség', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Képarányok', - - 'no_fixed' => [ - 'label' => 'Egyéni', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'Az SVG fájlok szerkesztése nem ajánlott, mivel minőségromláshoz vezethet az átméretezés során.\n Biztosan szeretnéd folytatni?', - 'disabled' => 'Az SVG fájlok szerkesztése nem engedélyezett, mivel minőségromláshoz vezethet az átméretezés során.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Sor hozzáadása', - ], - - 'delete' => [ - 'label' => 'Sor törlése', - ], - - 'reorder' => [ - 'label' => 'Sor mozgatása', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Kulcs', - ], - - 'value' => [ - 'label' => 'Érték', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Fájlok csatolása', - 'blockquote' => 'Idézet', - 'bold' => 'Félkövér', - 'bullet_list' => 'Felsorolás', - 'code_block' => 'Kódblokk', - 'heading' => 'Címsor', - 'italic' => 'Dőlt', - 'link' => 'Hivatkozás', - 'ordered_list' => 'Számozott lista', - 'redo' => 'Visszaállítás', - 'strike' => 'Áthúzott', - 'table' => 'Táblázat', - 'undo' => 'Visszavonás', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'Igen', - 'false' => 'Nem', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Új :label', - ], - - 'add_between' => [ - 'label' => 'Beillesztés blokkok közé', - ], - - 'delete' => [ - 'label' => 'Törlés', - ], - - 'clone' => [ - 'label' => 'Duplikálás', - ], - - 'reorder' => [ - 'label' => 'Mozgatás', - ], - - 'move_down' => [ - 'label' => 'Mozgatás lefelé', - ], - - 'move_up' => [ - 'label' => 'Mozgatás felfelé', - ], - - 'collapse' => [ - 'label' => 'Becsukás', - ], - - 'expand' => [ - 'label' => 'Kibontás', - ], - - 'collapse_all' => [ - 'label' => 'Összes becsukása', - ], - - 'expand_all' => [ - 'label' => 'Összes kibontása', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Hivatkozás', - 'unlink' => 'Hivatkozás törlése', - ], - - 'label' => 'URL', - - 'placeholder' => 'URL cím', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Fájlok csatolása', - 'blockquote' => 'Idézet', - 'bold' => 'Félkövér', - 'bullet_list' => 'Felsorolás', - 'code_block' => 'Kódblokk', - 'h1' => 'Címsor 1', - 'h2' => 'Címsor 2', - 'h3' => 'Címsor 3', - 'italic' => 'Dőlt', - 'link' => 'Hivatkozás', - 'ordered_list' => 'Számozott lista', - 'redo' => 'Visszaállítás', - 'strike' => 'Áthúzott', - 'underline' => 'Alázhúzott', - 'undo' => 'Visszavonás', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Új elem hozzáadása', - - 'actions' => [ - - 'create' => [ - 'label' => 'Hozzáadás', - ], - - 'create_another' => [ - 'label' => 'Mentés és új hozzáadása', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Szerkesztés', - - 'actions' => [ - - 'save' => [ - 'label' => 'Mentés', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Igen', - 'false' => 'Nem', - ], - - 'loading_message' => 'Kérlek várj...', - - 'max_items_message' => 'Csak :count elem választható ki.', - - 'no_search_results_message' => 'Nincs találat', - - 'placeholder' => 'Válassz ki egy elemet', - - 'searching_message' => 'Keresés...', - - 'search_prompt' => 'Kezdj el írni a kereséshez...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Címke hozzáadása', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Előző lépés', - ], - - 'next_step' => [ - 'label' => 'Következő lépés', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/hu/validation.php b/vendor/filament/forms/resources/lang/hu/validation.php deleted file mode 100644 index 9b55d8f1..00000000 --- a/vendor/filament/forms/resources/lang/hu/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'Legalább egy :attribute mezőt ki kell választani.', - 'only_one_must_be_selected' => 'Csak egy :attribute mezőt választhatsz ki.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/hy/components.php b/vendor/filament/forms/resources/lang/hy/components.php deleted file mode 100644 index 80176beb..00000000 --- a/vendor/filament/forms/resources/lang/hy/components.php +++ /dev/null @@ -1,229 +0,0 @@ - [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Ավելացնել :label', - ], - - 'delete' => [ - 'label' => 'Ջնջել', - ], - - 'move_down' => [ - 'label' => 'Իջեցնել', - ], - - 'move_up' => [ - 'label' => 'Բարձրացնել', - ], - - 'collapse' => [ - 'label' => 'Ծալել', - ], - - 'expand' => [ - 'label' => 'Ընդարձակել', - ], - - 'collapse_all' => [ - 'label' => 'Ծալել բոլորը', - ], - - 'expand_all' => [ - 'label' => 'Ընդարձակել բոլորը', - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Ավելացնել տող', - ], - - 'delete' => [ - 'label' => 'Ջնջել տողը', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Բանալի', - ], - - 'value' => [ - 'label' => 'Արժեք', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Կցել ֆայլեր', - 'bold' => 'Bold', - 'bullet_list' => 'Bullet list', - 'code_block' => 'Կոդի բլոկ', - 'edit' => 'Խմբագրել', - 'italic' => 'Շեղագիր', - 'link' => 'Հղում', - 'ordered_list' => 'Համարակալված ցուցակ', - 'preview' => 'Նախադիտում', - 'strike' => 'Strikethrough', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Ավելացնել :label', - ], - - 'delete' => [ - 'label' => 'Ջնջել', - ], - - 'move_down' => [ - 'label' => 'Իջեցնել', - ], - - 'move_up' => [ - 'label' => 'Բարձրացնել', - ], - - 'collapse' => [ - 'label' => 'Ծալել', - ], - - 'expand' => [ - 'label' => 'Ընդարձակել', - ], - - 'collapse_all' => [ - 'label' => 'Ծալել բոլորը', - ], - - 'expand_all' => [ - 'label' => 'Ընդարձակել բոլորը', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Հղում', - 'unlink' => 'Չեղարկել հղումը', - ], - - 'label' => 'URL', - - 'placeholder' => 'Մուտքագրեք URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Կցել ֆայլեր', - 'blockquote' => 'Արգելափակման մեջբերում', - 'bold' => 'Bold', - 'bullet_list' => 'Bullet list', - 'code_block' => 'Կոդի բլոկ', - 'h1' => 'Անվանում', - 'h2' => 'Վերնագիր', - 'h3' => 'Ենթավերնագիր', - 'italic' => 'Շեղագիր', - 'link' => 'Հղում', - 'ordered_list' => 'Համարակալված ցուցակ', - 'redo' => 'Կրկնել', - 'strike' => 'Strikethrough', - 'undo' => 'Չեղարկել', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Ստեղծել', - - 'actions' => [ - - 'create' => [ - 'label' => 'Ստեղծել', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Այո', - 'false' => 'Ոչ', - ], - - 'loading_message' => 'Բեռնվում է...', - - 'no_search_results_message' => 'Ոչ մի տարբերակ չի համապատասխանում ձեր որոնմանը։', - - 'placeholder' => 'Ընտրեք տարբերակ', - - 'searching_message' => 'Որոնում...', - - 'search_prompt' => 'Սկսեք մուտքագրել որոնման համար...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Նոր հատկորոշում', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Ետ', - ], - - 'next_step' => [ - 'label' => 'Հաջորդը', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/id/components.php b/vendor/filament/forms/resources/lang/id/components.php deleted file mode 100644 index 0fdc4cc7..00000000 --- a/vendor/filament/forms/resources/lang/id/components.php +++ /dev/null @@ -1,463 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Duplikat', - ], - - 'add' => [ - 'label' => 'Tambahkan :label', - ], - - 'add_between' => [ - 'label' => 'Sisipkan', - ], - - 'delete' => [ - 'label' => 'Hapus', - ], - - 'reorder' => [ - 'label' => 'Pindahkan', - ], - - 'move_down' => [ - 'label' => 'Turunkan', - ], - - 'move_up' => [ - 'label' => 'Naikkan', - ], - - 'collapse' => [ - 'label' => 'Sembunyikan', - ], - - 'expand' => [ - 'label' => 'Tampilkan', - ], - - 'collapse_all' => [ - 'label' => 'Sembunyikan semua', - ], - - 'expand_all' => [ - 'label' => 'Tampilkan semua', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Batalkan semua pilihan', - ], - - 'select_all' => [ - 'label' => 'Pilih semua', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Batal', - ], - - 'drag_crop' => [ - 'label' => 'Mode "potong"', - ], - - 'drag_move' => [ - 'label' => 'Mode "geser"', - ], - - 'flip_horizontal' => [ - 'label' => 'Balik gambar secara horizontal', - ], - - 'flip_vertical' => [ - 'label' => 'Balik gambar vertical', - ], - - 'move_down' => [ - 'label' => 'Geser gambar ke bawah', - ], - - 'move_left' => [ - 'label' => 'Geser gambar ke kiri', - ], - - 'move_right' => [ - 'label' => 'Geser gambar ke kanan', - ], - - 'move_up' => [ - 'label' => 'Geser gambar ke atas', - ], - - 'reset' => [ - 'label' => 'Kembalikan', - ], - - 'rotate_left' => [ - 'label' => 'Putar gambar ke kiri', - ], - - 'rotate_right' => [ - 'label' => 'Putar gambar ke kanan', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Tentukan aspek rasio ke :ratio', - ], - - 'save' => [ - 'label' => 'Simpan', - ], - - 'zoom_100' => [ - 'label' => 'Perbesar ke 100%', - ], - - 'zoom_in' => [ - 'label' => 'Perbesar', - ], - - 'zoom_out' => [ - 'label' => 'Perkecil', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Tinggi', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Putar', - 'unit' => 'derajat', - ], - - 'width' => [ - 'label' => 'Lebar', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Aspek rasio', - - 'no_fixed' => [ - 'label' => 'Bebas', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'Mengedit file SVG tidak disarankan karena dapat mengakibatkan penurunan kualitas saat melakukan penskalaan.\n Apakah Anda yakin ingin melanjutkan?', - 'disabled' => 'Pengeditan file SVG dinonaktifkan karena dapat mengakibatkan penurunan kualitas saat melakukan penskalaan.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Tambahkan baris', - ], - - 'delete' => [ - 'label' => 'Hapus baris', - ], - - 'reorder' => [ - 'label' => 'Ubah urutan baris', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Kunci', - ], - - 'value' => [ - 'label' => 'Nilai', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Lampirkan berkas', - 'blockquote' => 'Kutipan', - 'bold' => 'Tebal', - 'bullet_list' => 'Daftar', - 'code_block' => 'Kode', - 'heading' => 'Judul', - 'italic' => 'Miring', - 'link' => 'Tautan', - 'ordered_list' => 'Daftar berurut', - 'redo' => 'Kembalikan', - 'strike' => 'Coret', - 'table' => 'Table', - 'undo' => 'Batalkan', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'Ya', - 'false' => 'Tidak', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Tambahkan :label', - ], - - 'add_between' => [ - 'label' => 'Sisipkan', - ], - - 'delete' => [ - 'label' => 'Hapus', - ], - - 'clone' => [ - 'label' => 'Duplikat', - ], - - 'reorder' => [ - 'label' => 'Pindahkan', - ], - - 'move_down' => [ - 'label' => 'Turunkan', - ], - - 'move_up' => [ - 'label' => 'Naikkan', - ], - - 'collapse' => [ - 'label' => 'Sembunyikan', - ], - - 'expand' => [ - 'label' => 'Tampilkan', - ], - - 'collapse_all' => [ - 'label' => 'Sembunyikan semua', - ], - - 'expand_all' => [ - 'label' => 'Tampilkan semua', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Buat tautan', - 'unlink' => 'Batalkan tautan', - ], - - 'label' => 'Tautan', - - 'placeholder' => 'Masukkan tautan', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Lampirkan berkas', - 'blockquote' => 'Kutipan', - 'bold' => 'Tebal', - 'bullet_list' => 'Daftar', - 'code_block' => 'Kode', - 'h1' => 'Judul', - 'h2' => 'Sub judul', - 'h3' => 'Anak judul', - 'italic' => 'Miring', - 'link' => 'Tautan', - 'ordered_list' => 'Daftar berurut', - 'redo' => 'Kembalikan', - 'strike' => 'Coret', - 'underline' => 'Garis bawah', - 'undo' => 'Batalkan', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Buat', - - 'actions' => [ - - 'create' => [ - 'label' => 'Buat', - ], - - 'create_another' => [ - 'label' => 'Buat & buat lainnya', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Ubah', - - 'actions' => [ - - 'save' => [ - 'label' => 'Simpan', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Ya', - 'false' => 'Tidak', - ], - - 'loading_message' => 'Memuat...', - - 'max_items_message' => 'Hanya :count yang dapat dipilih.', - - 'no_search_results_message' => 'Tidak ada hasil yang sesuai dengan pencarian Anda.', - - 'placeholder' => 'Pilih salah satu opsi', - - 'searching_message' => 'Sedang mencari...', - - 'search_prompt' => 'Ketik untuk mencari...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Tag baru', - ], - - 'text_input' => [ - - 'actions' => [ - - 'hide_password' => [ - 'label' => 'Sembunyikan password', - ], - - 'show_password' => [ - 'label' => 'Tampilkan password', - ], - - ], - - ], - - 'toggle_buttons' => [ - - 'boolean' => [ - 'true' => 'Ya', - 'false' => 'Tidak', - ], - - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Sebelumnya', - ], - - 'next_step' => [ - 'label' => 'Selanjutnya', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/id/validation.php b/vendor/filament/forms/resources/lang/id/validation.php deleted file mode 100644 index 5a6fa637..00000000 --- a/vendor/filament/forms/resources/lang/id/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'Pilih setidaknya 1 field :attribute.', - 'only_one_must_be_selected' => 'Hanya satu field :attribute yang perlu dipilih.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/it/components.php b/vendor/filament/forms/resources/lang/it/components.php deleted file mode 100644 index f4f6546d..00000000 --- a/vendor/filament/forms/resources/lang/it/components.php +++ /dev/null @@ -1,439 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Clona', - ], - - 'add' => [ - 'label' => 'Aggiungi a :label', - ], - - 'add_between' => [ - 'label' => 'Inserisci tra i blocchi', - ], - - 'delete' => [ - 'label' => 'Elimina', - ], - - 'reorder' => [ - 'label' => 'Sposta', - ], - - 'move_down' => [ - 'label' => 'Sposta in basso', - ], - - 'move_up' => [ - 'label' => 'Sposta in alto', - ], - - 'collapse' => [ - 'label' => 'Comprimi', - ], - - 'expand' => [ - 'label' => 'Espandi', - ], - - 'collapse_all' => [ - 'label' => 'Comprimi tutti', - ], - - 'expand_all' => [ - 'label' => 'Espandi tutti', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Deseleziona tutti', - ], - - 'select_all' => [ - 'label' => 'Seleziona tutti', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Annulla', - ], - - 'drag_crop' => [ - 'label' => 'Modalità trascinamento "ritaglio"', - ], - - 'drag_move' => [ - 'label' => 'Modalità trascinamento "sposta"', - ], - - 'flip_horizontal' => [ - 'label' => 'Capovolgi immagine orizzontalmente', - ], - - 'flip_vertical' => [ - 'label' => 'Capovolgi immagine verticalmente', - ], - - 'move_down' => [ - 'label' => 'Sposta immagine in basso', - ], - - 'move_left' => [ - 'label' => 'Sposta immagine a sinistra', - ], - - 'move_right' => [ - 'label' => 'Sposta immagine a destra', - ], - - 'move_up' => [ - 'label' => 'Sposta immagine in alto', - ], - - 'reset' => [ - 'label' => 'Reimposta', - ], - - 'rotate_left' => [ - 'label' => 'Ruota immagine a sinistra', - ], - - 'rotate_right' => [ - 'label' => 'Ruota immagine a destra', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Imposta rapporto a :ratio', - ], - - 'save' => [ - 'label' => 'Salva', - ], - - 'zoom_100' => [ - 'label' => 'Zoom immagine al 100%', - ], - - 'zoom_in' => [ - 'label' => 'Zoom avanti', - ], - - 'zoom_out' => [ - 'label' => 'Zoom indietro', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Altezza', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rotazione', - 'unit' => 'gradi', - ], - - 'width' => [ - 'label' => 'Larghezza', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Rapporti', - - 'no_fixed' => [ - 'label' => 'Libero', - - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'La modifica dei file SVG non è consigliata in quanto può comportare una perdita di qualità durante il ridimensionamento.\n Sei sicuro di voler continuare?', - 'disabled' => 'La modifica dei file SVG è disabilitata in quanto può comportare una perdita di qualità durante il ridimensionamento.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Aggiungi riga', - ], - - 'delete' => [ - 'label' => 'Elimina riga', - ], - - 'reorder' => [ - 'label' => 'Riordina riga', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Chiave', - ], - - 'value' => [ - 'label' => 'Valore', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Allega file', - 'blockquote' => 'Citazione', - 'bold' => 'Grassetto', - 'bullet_list' => 'Elenco puntato', - 'code_block' => 'Blocco di codice', - 'heading' => 'Intestazione', - 'italic' => 'Corsivo', - 'link' => 'Link', - 'ordered_list' => 'Elenco numerato', - 'redo' => 'Ripristina', - 'strike' => 'Barrato', - 'table' => 'Tabella', - 'undo' => 'Annulla', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'Si', - 'false' => 'No', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Aggiungi a :label', - ], - - 'add_between' => [ - 'label' => 'Inserisci tra', - ], - - 'delete' => [ - 'label' => 'Elimina', - ], - - 'clone' => [ - 'label' => 'Clona', - ], - - 'reorder' => [ - 'label' => 'Sposta', - ], - - 'move_down' => [ - 'label' => 'Sposta in basso', - ], - - 'move_up' => [ - 'label' => 'Sposta in alto', - ], - - 'collapse' => [ - 'label' => 'Comprimi', - ], - - 'expand' => [ - 'label' => 'Espandi', - ], - - 'collapse_all' => [ - 'label' => 'Comprimi tutti', - ], - - 'expand_all' => [ - 'label' => 'Espandi tutti', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Collega', - 'unlink' => 'Scollega', - ], - - 'label' => 'URL', - - 'placeholder' => 'Inserisci un URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Allega file', - 'blockquote' => 'Citazione', - 'bold' => 'Grassetto', - 'bullet_list' => 'Elenco puntato', - 'code_block' => 'Blocco di codice', - 'h1' => 'Titolo', - 'h2' => 'Intestazione', - 'h3' => 'Sottotitolo', - 'italic' => 'Corsivo', - 'link' => 'Link', - 'ordered_list' => 'Elenco numerato', - 'redo' => 'Ripristina', - 'strike' => 'Barrato', - 'underline' => 'Sottolineato', - 'undo' => 'Annulla', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Crea', - - 'actions' => [ - - 'create' => [ - 'label' => 'Crea', - ], - - 'create_another' => [ - 'label' => 'Crea & creane un altro', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Modifica', - - 'actions' => [ - - 'save' => [ - 'label' => 'Salva', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Si', - 'false' => 'No', - ], - - 'loading_message' => 'Caricamento...', - - 'max_items_message' => 'Solo :count possono essere selezionati.', - - 'no_search_results_message' => 'Nessuna opzione corrisponde alla tua ricerca.', - - 'placeholder' => "Seleziona un'opzione", - - 'searching_message' => 'Ricerca...', - - 'search_prompt' => 'Digita per cercare...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Nuovo tag', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Precedente', - ], - - 'next_step' => [ - 'label' => 'Successivo', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/it/validation.php b/vendor/filament/forms/resources/lang/it/validation.php deleted file mode 100644 index e43d6987..00000000 --- a/vendor/filament/forms/resources/lang/it/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'È necessario selezionare almeno un campo :attribute.', - 'only_one_must_be_selected' => 'È necessario selezionare un solo campo :attribute.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/ja/components.php b/vendor/filament/forms/resources/lang/ja/components.php deleted file mode 100644 index adddb2a0..00000000 --- a/vendor/filament/forms/resources/lang/ja/components.php +++ /dev/null @@ -1,438 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => '複製', - ], - - 'add' => [ - 'label' => ':labelを追加', - ], - - 'add_between' => [ - 'label' => 'ブロックの間に追加', - ], - - 'delete' => [ - 'label' => '削除', - ], - - 'reorder' => [ - 'label' => '移動', - ], - - 'move_down' => [ - 'label' => '下に移動', - ], - - 'move_up' => [ - 'label' => '上に移動', - ], - - 'collapse' => [ - 'label' => '折り畳む', - ], - - 'expand' => [ - 'label' => '展開', - ], - - 'collapse_all' => [ - 'label' => 'すべて折り畳む', - ], - - 'expand_all' => [ - 'label' => 'すべて展開', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'すべて解除', - ], - - 'select_all' => [ - 'label' => 'すべて選択', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'キャンセル', - ], - - 'drag_crop' => [ - 'label' => 'ドラッグモード "クロップ"', - ], - - 'drag_move' => [ - 'label' => 'ドラッグモード "移動"', - ], - - 'flip_horizontal' => [ - 'label' => '水平フリップ', - ], - - 'flip_vertical' => [ - 'label' => '垂直フリップ', - ], - - 'move_down' => [ - 'label' => '下に移動', - ], - - 'move_left' => [ - 'label' => '左に移動', - ], - - 'move_right' => [ - 'label' => '右に移動', - ], - - 'move_up' => [ - 'label' => '上に移動', - ], - - 'reset' => [ - 'label' => 'リセット', - ], - - 'rotate_left' => [ - 'label' => '左回転', - ], - - 'rotate_right' => [ - 'label' => '右回転', - ], - - 'set_aspect_ratio' => [ - 'label' => 'アスペクト比を:ratioにセット', - ], - - 'save' => [ - 'label' => '保存', - ], - - 'zoom_100' => [ - 'label' => '100%にズーム', - ], - - 'zoom_in' => [ - 'label' => 'ズームイン', - ], - - 'zoom_out' => [ - 'label' => 'ズームアウト', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => '高さ', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => '回転', - 'unit' => '度', - ], - - 'width' => [ - 'label' => '幅', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'アスペクト比', - - 'no_fixed' => [ - 'label' => 'フリー', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'SVGファイルの編集は拡大縮小する際に品質の低下を引き起こす可能性があるため、お勧めしません。\n 続行しますか?', - 'disabled' => '拡大縮小する際に品質が低下する可能性があるためSVGファイルの編集は無効になっています', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => '行を追加', - ], - - 'delete' => [ - 'label' => '行を削除', - ], - - 'reorder' => [ - 'label' => '行の並べ替え', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'キー', - ], - - 'value' => [ - 'label' => '値', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'ファイルを添付', - 'blockquote' => 'ブロック引用', - 'bold' => '太字', - 'bullet_list' => '箇条書き', - 'code_block' => 'コードブロック', - 'heading' => '見出し', - 'italic' => 'イタリック', - 'link' => 'リンク', - 'ordered_list' => '番号付きリスト', - 'redo' => 'やり直し', - 'strike' => '打ち消し線', - 'table' => '表', - 'undo' => '元に戻す', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'はい', - 'false' => 'いいえ', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => ':labelへ追加', - ], - - 'add_between' => [ - 'label' => '間に挿入', - ], - - 'delete' => [ - 'label' => '削除', - ], - - 'clone' => [ - 'label' => '複製', - ], - - 'reorder' => [ - 'label' => '移動', - ], - - 'move_down' => [ - 'label' => '下に移動', - ], - - 'move_up' => [ - 'label' => '上に移動', - ], - - 'collapse' => [ - 'label' => '折り畳む', - ], - - 'expand' => [ - 'label' => '展開', - ], - - 'collapse_all' => [ - 'label' => 'すべて折り畳む', - ], - - 'expand_all' => [ - 'label' => 'すべて展開', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'リンク追加', - 'unlink' => 'リンク解除', - ], - - 'label' => 'URL', - - 'placeholder' => 'URLを入力', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'ファイルを添付', - 'blockquote' => 'ブロック引用', - 'bold' => '太字', - 'bullet_list' => '箇条書き', - 'code_block' => 'コードブロック', - 'h1' => 'タイトル', - 'h2' => '見出し', - 'h3' => '小見出し', - 'italic' => 'イタリック', - 'link' => 'リンク', - 'ordered_list' => '番号付きリスト', - 'redo' => 'やり直し', - 'strike' => '打ち消し線', - 'underline' => '下線', - 'undo' => '元に戻す', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => '作成', - - 'actions' => [ - - 'create' => [ - 'label' => '作成', - ], - - 'create_another' => [ - 'label' => '保存して、続けて作成', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => '編集', - - 'actions' => [ - - 'save' => [ - 'label' => '保存', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'はい', - 'false' => 'いいえ', - ], - - 'loading_message' => '読み込み中...', - - 'max_items_message' => ':count個のみ選択されてます', - - 'no_search_results_message' => '検索結果はありませんでした', - - 'placeholder' => 'オプションを選択', - - 'searching_message' => '検索中...', - - 'search_prompt' => '検索キーワードを入力...', - - ], - - 'tags_input' => [ - 'placeholder' => '新規タグ', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => '前へ', - ], - - 'next_step' => [ - 'label' => '次へ', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/ja/validation.php b/vendor/filament/forms/resources/lang/ja/validation.php deleted file mode 100644 index 9507d021..00000000 --- a/vendor/filament/forms/resources/lang/ja/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => '少なくとも1つ以上:attributeを選択してください', - 'only_one_must_be_selected' => '1つだけ:attributeを選択してください', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/ka/components.php b/vendor/filament/forms/resources/lang/ka/components.php deleted file mode 100644 index bf48b502..00000000 --- a/vendor/filament/forms/resources/lang/ka/components.php +++ /dev/null @@ -1,53 +0,0 @@ - [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'დამატება', - 'unlink' => 'გაუქმება', - ], - - 'label' => 'ლინკი', - - 'placeholder' => 'ჩაწერეთ URL მისამართი', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'ფაილების დამატება', - 'blockquote' => 'ციტატა', - 'bold' => 'მსხვილი', - 'bullet_list' => 'სია', - 'code_block' => 'კოდი', - 'h1' => 'სათაური', - 'h2' => 'სათაური', - 'h3' => 'ქვესათაური', - 'italic' => 'დახრილი', - 'link' => 'ლინკი', - 'ordered_list' => 'რიცხვები', - 'redo' => 'Redo', - 'strike' => 'ხაზგადასმული', - 'undo' => 'Undo', - ], - - ], - - 'select' => [ - 'no_search_results_message' => 'ამ პარამეტრებით არცერთი ჩანაწერი არ მოიძებნა.', - 'placeholder' => 'აირჩიეთ ჩანაწერი', - 'search_prompt' => 'ძიება...', - ], - - 'tags_input' => [ - 'placeholder' => 'ახალი ტეგი', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/km/components.php b/vendor/filament/forms/resources/lang/km/components.php deleted file mode 100644 index f253a29c..00000000 --- a/vendor/filament/forms/resources/lang/km/components.php +++ /dev/null @@ -1,463 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'ក្លូន', - ], - - 'add' => [ - 'label' => 'បន្ថែម​លើ :label', - ], - - 'add_between' => [ - 'label' => 'បញ្ចូលរវាងប្លុក', - ], - - 'delete' => [ - 'label' => 'លុប', - ], - - 'reorder' => [ - 'label' => 'ផ្លាស់ទី', - ], - - 'move_down' => [ - 'label' => 'ទៅ​ក្រោម', - ], - - 'move_up' => [ - 'label' => 'ផ្លាស់ទីឡើងលើ', - ], - - 'collapse' => [ - 'label' => 'ដួលរលំ', - ], - - 'expand' => [ - 'label' => 'ពង្រីក', - ], - - 'collapse_all' => [ - 'label' => 'ដួលរលំទាំងអស់។', - ], - - 'expand_all' => [ - 'label' => 'ពង្រីកទាំងអស់។', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'ដកការជ្រើសរើសទាំងអស់', - ], - - 'select_all' => [ - 'label' => 'ជ្រើសរើសទាំងអស់', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'លុបចោល', - ], - - 'drag_crop' => [ - 'label' => 'របៀបអូសដោយ "ច្រឹប"', - ], - - 'drag_move' => [ - 'label' => 'របៀបអូសដោយ "ផ្លាស់ទី"', - ], - - 'flip_horizontal' => [ - 'label' => 'ត្រឡប់​រូបភាពតាមជួរដេក', - ], - - 'flip_vertical' => [ - 'label' => 'ត្រឡប់​រូបភាពតាមជួរឈរ', - ], - - 'move_down' => [ - 'label' => 'រំកិលរូបភាពចុះក្រោម', - ], - - 'move_left' => [ - 'label' => 'រំកិលរូបភាពទៅឆ្វេង', - ], - - 'move_right' => [ - 'label' => 'រំកិលរូបភាពទៅស្តាំ', - ], - - 'move_up' => [ - 'label' => 'រំកិលរូបភាពទៅលើ', - ], - - 'reset' => [ - 'label' => 'កំណត់ឡើងវិញ', - ], - - 'rotate_left' => [ - 'label' => 'បង្វិលរូបភាពទៅឆ្វេង', - ], - - 'rotate_right' => [ - 'label' => 'បង្វិលរូបភាពទៅស្តាំ', - ], - - 'set_aspect_ratio' => [ - 'label' => 'កំណត់សមាមាត្រទំហំទៅ :ratio', - ], - - 'save' => [ - 'label' => 'រក្សាទុក', - ], - - 'zoom_100' => [ - 'label' => 'ប្តូរទំហំរូបភាពទៅ១០០%', - ], - - 'zoom_in' => [ - 'label' => 'ពង្រីក', - ], - - 'zoom_out' => [ - 'label' => 'បង្រួម', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'កំពស់', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'ការបង្វិល', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => 'ទទឹង', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'សមាមាត្រទំហំ', - - 'no_fixed' => [ - 'label' => 'មិនកំណត់', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'ការកែសម្រួលឯកសារ SVG មិនត្រូវបានណែនាំទេ ព្រោះវាអាចបណ្តាលឱ្យបាត់បង់គុណភាពនៅពេលធ្វើមាត្រដ្ឋាន។\n តើអ្នកប្រាកដថាចង់បន្តទេ?', - 'disabled' => 'ការកែសម្រួលឯកសារ SVG ត្រូវបានបិទព្រោះវាអាចបណ្តាលឱ្យបាត់បង់គុណភាពនៅពេលធ្វើមាត្រដ្ឋាន។', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'បន្ថែមជួរ', - ], - - 'delete' => [ - 'label' => 'លុបជួរ', - ], - - 'reorder' => [ - 'label' => 'តម្រៀបជួរម្តងទៀត', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'គន្លឺះ', - ], - - 'value' => [ - 'label' => 'តម្លៃ', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'ភ្ជាប់ឯកសារ', - 'blockquote' => 'ប្លុកសម្រង់', - 'bold' => 'ដិត', - 'bullet_list' => 'បញ្ជីគ្រាប់', - 'code_block' => 'ប្លុកកូដ', - 'heading' => 'Heading', - 'italic' => 'ទ្រេត', - 'link' => 'តំណភ្ជាប់', - 'ordered_list' => 'បញ្ជីលេខ', - 'redo' => 'ធ្វើឡើងវិញ', - 'strike' => 'ការវាយឆ្មក់', - 'table' => 'តុ', - 'undo' => 'មិនធ្វើវិញ', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'បាទ', - 'false' => 'ទេ', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'បន្ថែម​លើ :label', - ], - - 'add_between' => [ - 'label' => 'បញ្ចូលរវាង', - ], - - 'delete' => [ - 'label' => 'លុប', - ], - - 'clone' => [ - 'label' => 'ក្លូន', - ], - - 'reorder' => [ - 'label' => 'ផ្លាស់ទី', - ], - - 'move_down' => [ - 'label' => 'ទៅ​ក្រោម', - ], - - 'move_up' => [ - 'label' => 'ផ្លាស់ទីឡើងលើ', - ], - - 'collapse' => [ - 'label' => 'ដួលរលំ', - ], - - 'expand' => [ - 'label' => 'ពង្រីក', - ], - - 'collapse_all' => [ - 'label' => 'ដួលរលំទាំងអស់។', - ], - - 'expand_all' => [ - 'label' => 'ពង្រីកទាំងអស់។', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'តំណភ្ជាប់', - 'unlink' => 'ផ្ដាច់', - ], - - 'label' => 'URL', - - 'placeholder' => 'បញ្ចូល URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'ភ្ជាប់ឯកសារ', - 'blockquote' => 'ប្លុកសម្រង់', - 'bold' => 'ដិត', - 'bullet_list' => 'បញ្ជីគ្រាប់', - 'code_block' => 'ប្លុកកូដ', - 'h1' => 'ចំណងជើង', - 'h2' => 'ក្បាល', - 'h3' => 'ចំណងជើងរង', - 'italic' => 'ទ្រេត', - 'link' => 'តំណភ្ជាប់', - 'ordered_list' => 'បញ្ជីលេខ', - 'redo' => 'ធ្វើឡើងវិញ', - 'strike' => 'ការវាយឆ្មក់', - 'underline' => 'គូសបន្ទាត់ពីក្រោម', - 'undo' => 'មិនធ្វើវិញ', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'បង្កើត', - - 'actions' => [ - - 'create' => [ - 'label' => 'បង្កើត', - ], - - 'create_another' => [ - 'label' => 'បង្កើត & បង្កើតឡើងវិញ', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'កែសម្រួល', - - 'actions' => [ - - 'save' => [ - 'label' => 'រក្សាទុក', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'បាទ', - 'false' => 'ទេ', - ], - - 'loading_message' => 'កំពុងផ្ទុក...', - - 'max_items_message' => 'តែប៉ុណ្ណោះ :count អាចត្រូវបានជ្រើសរើស.', - - 'no_search_results_message' => 'មិនមានជម្រើសត្រូវជាមួយការស្វែងរក.', - - 'placeholder' => 'ជ្រើសរើសជម្រើស', - - 'searching_message' => 'ស្វែងរក...', - - 'search_prompt' => 'ចាប់ផ្តើមសសេរដើម្បីស្វែងរក...', - - ], - - 'tags_input' => [ - 'placeholder' => 'ស្លាកថ្មី។', - ], - - 'text_input' => [ - - 'actions' => [ - - 'hide_password' => [ - 'label' => 'លាក់ពាក្យសម្ងាត់', - ], - - 'show_password' => [ - 'label' => 'បង្ហាញពាក្យសម្ងាត់', - ], - - ], - - ], - - 'toggle_buttons' => [ - - 'boolean' => [ - 'true' => 'បាទ', - 'false' => 'ទេ', - ], - - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'ត្រឡប់មកវិញ', - ], - - 'next_step' => [ - 'label' => 'បន្ទាប់', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/km/validation.php b/vendor/filament/forms/resources/lang/km/validation.php deleted file mode 100644 index 6f918154..00000000 --- a/vendor/filament/forms/resources/lang/km/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'យ៉ាងហោចណាស់​មួយ :attribute ត្រូវតែត្រូវបានជ្រើសរើស។', - 'only_one_must_be_selected' => 'តែមួយគត់ :attribute ត្រូវតែត្រូវបានជ្រើសរើស។', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/ko/components.php b/vendor/filament/forms/resources/lang/ko/components.php deleted file mode 100644 index 11f6e0d7..00000000 --- a/vendor/filament/forms/resources/lang/ko/components.php +++ /dev/null @@ -1,420 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => '복제', - ], - - 'add' => [ - 'label' => ':label 추가', - ], - - 'add_between' => [ - 'label' => '블록 사이에 삽입', - ], - - 'delete' => [ - 'label' => '삭제', - ], - - 'reorder' => [ - 'label' => '이동', - ], - - 'move_down' => [ - 'label' => '아래로 이동', - ], - - 'move_up' => [ - 'label' => '위로 이동', - ], - - 'collapse' => [ - 'label' => '접기', - ], - - 'expand' => [ - 'label' => '펼치기', - ], - - 'collapse_all' => [ - 'label' => '모두 접기', - ], - - 'expand_all' => [ - 'label' => '모두 펼치기', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => '모두 선택 해제', - ], - - 'select_all' => [ - 'label' => '모두 선택', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => '취소', - ], - - 'drag_crop' => [ - 'label' => '자르기 모드', - ], - - 'drag_move' => [ - 'label' => '이동 모드', - ], - - 'flip_horizontal' => [ - 'label' => '가로로 뒤집기', - ], - - 'flip_vertical' => [ - 'label' => '세로로 뒤집기', - ], - - 'move_down' => [ - 'label' => '이미지를 아래로 이동', - ], - - 'move_left' => [ - 'label' => '이미지를 왼쪽으로 이동', - ], - - 'move_right' => [ - 'label' => '이미지를 오른쪽으로 이동', - ], - - 'move_up' => [ - 'label' => '이미지를 위로 이동', - ], - - 'reset' => [ - 'label' => '초기화', - ], - - 'rotate_left' => [ - 'label' => '왼쪽으로 회전', - ], - - 'rotate_right' => [ - 'label' => '오른쪽으로 회전', - ], - - 'set_aspect_ratio' => [ - 'label' => '화면비를 :ratio 로 설정', - ], - - 'save' => [ - 'label' => '저장', - ], - - 'zoom_100' => [ - 'label' => '이미지 100%로 확대', - ], - - 'zoom_in' => [ - 'label' => '확대', - ], - - 'zoom_out' => [ - 'label' => '축소', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => '세로', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => '회전', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => '가로', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => '화면비', - - 'no_fixed' => [ - 'label' => '자유', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => '행 추가', - ], - - 'delete' => [ - 'label' => '행 삭제', - ], - - 'reorder' => [ - 'label' => '행 재정렬', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => '키', - ], - - 'value' => [ - 'label' => '값', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => '파일 첨부', - 'blockquote' => '인용구', - 'bold' => '굵게', - 'bullet_list' => '순서가 없는 목록', - 'code_block' => '코드 블록', - 'heading' => '제목', - 'italic' => '기울임체', - 'link' => '링크', - 'ordered_list' => '번호 목록', - 'redo' => '다시 실행', - 'strike' => '취소선', - 'table' => '테이블', - 'undo' => '실행 취소', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => ':label 추가', - ], - - 'add_between' => [ - 'label' => '사이에 삽입', - ], - - 'delete' => [ - 'label' => '삭제', - ], - - 'clone' => [ - 'label' => '복제', - ], - - 'reorder' => [ - 'label' => '이동', - ], - - 'move_down' => [ - 'label' => '아래로 이동', - ], - - 'move_up' => [ - 'label' => '위로 이동', - ], - - 'collapse' => [ - 'label' => '접기', - ], - - 'expand' => [ - 'label' => '펼치기', - ], - - 'collapse_all' => [ - 'label' => '모두 접기', - ], - - 'expand_all' => [ - 'label' => '모두 펼치기', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => '링크', - 'unlink' => '링크 해제', - ], - - 'label' => 'URL', - - 'placeholder' => 'URL을 입력하세요', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => '파일 첨부', - 'blockquote' => '인용구', - 'bold' => '굵게', - 'bullet_list' => '순서가 없는 목록', - 'code_block' => '코드 블록', - 'h1' => '큰 제목', - 'h2' => '중간 제목', - 'h3' => '작은 제목', - 'italic' => '기울임체', - 'link' => '링크', - 'ordered_list' => '번호 목록', - 'redo' => '다시 실행', - 'strike' => '취소선', - 'underline' => '밑줄', - 'undo' => '실행 취소', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => '만들기', - - 'actions' => [ - - 'create' => [ - 'label' => '만들기', - ], - - 'create_another' => [ - 'label' => '계속 만들기', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => '수정', - - 'actions' => [ - - 'save' => [ - 'label' => '저장', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => '예', - 'false' => '아니오', - ], - - 'loading_message' => '로드 중...', - - 'max_items_message' => ':count개 까지 선택할 수 있습니다.', - - 'no_search_results_message' => '검색과 일치하는 옵션이 없습니다.', - - 'placeholder' => '옵션 선택', - - 'searching_message' => '검색 중...', - - 'search_prompt' => '이곳에 입력하여 검색 시작', - - ], - - 'tags_input' => [ - 'placeholder' => '새 태그', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => '이전', - ], - - 'next_step' => [ - 'label' => '다음', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/ku/components.php b/vendor/filament/forms/resources/lang/ku/components.php deleted file mode 100644 index 6125abd7..00000000 --- a/vendor/filament/forms/resources/lang/ku/components.php +++ /dev/null @@ -1,416 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'پۆشتەکردن', - ], - - 'add' => [ - 'label' => 'زیادکردن بۆ :label', - ], - - 'add_between' => [ - 'label' => 'داخڵکردن لە نێوان هێڵ', - ], - - 'delete' => [ - 'label' => 'سڕینەوە', - ], - - 'reorder' => [ - 'label' => 'جوڵاندن', - ], - - 'move_down' => [ - 'label' => 'جوڵاندن بۆ خوارەوە', - ], - - 'move_up' => [ - 'label' => 'جوڵاندن بۆ سەرەوە', - ], - - 'collapse' => [ - 'label' => 'بچووکردنەوە', - ], - - 'expand' => [ - 'label' => 'فراوانکردن', - ], - - 'collapse_all' => [ - 'label' => 'بچووکردنەوەی هەموو', - ], - - 'expand_all' => [ - 'label' => 'فراوانکردنی هەموو', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'لابردنی هەموو دیاریکراوەکان', - ], - - 'select_all' => [ - 'label' => 'دیاریکردنی هەموو', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'پاشگەزبوونەوە', - ], - - 'drag_crop' => [ - 'label' => 'جۆری ڕاکێشان "بڕین"', - ], - - 'drag_move' => [ - 'label' => 'جۆری ڕاکێشان "جوڵاندن"', - ], - - 'flip_horizontal' => [ - 'label' => 'وەرگێڕانی وێنە بە ئاسۆی', - ], - - 'flip_vertical' => [ - 'label' => 'وەرگێڕانی وێنە بە ستونی', - ], - - 'move_down' => [ - 'label' => 'جوڵاندنی وێنە بۆ خوارەوە', - ], - - 'move_left' => [ - 'label' => 'جوڵاندنی وێنە بۆ چەپ', - ], - - 'move_right' => [ - 'label' => 'جوڵاندنی وێنە بۆ ڕاست', - ], - - 'move_up' => [ - 'label' => 'جوڵاندنی وێنە بۆ سەرەوە', - ], - - 'reset' => [ - 'label' => 'دۆخی سەرەتا', - ], - - 'rotate_left' => [ - 'label' => 'سوڕانەوەی وێنە بۆ چەپ', - ], - - 'rotate_right' => [ - 'label' => 'سوڕانەوەی وێنە بۆ ڕاست', - ], - - 'set_aspect_ratio' => [ - 'label' => 'دانانی تێکڕای لاکان بۆ :ratio', - ], - - 'save' => [ - 'label' => 'نوێکردنەوە', - ], - - 'zoom_100' => [ - 'label' => 'نزیکردنەوەی وێنە بۆ ١٠٠%', - ], - - 'zoom_in' => [ - 'label' => 'نزیککردنەوە', - ], - - 'zoom_out' => [ - 'label' => 'دوورخستنەوە', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'بەرزی', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'سوڕانەوە', - 'unit' => 'پلە', - ], - - 'width' => [ - 'label' => 'پانی', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'تێکڕای لاکان', - - 'no_fixed' => [ - 'label' => 'سەربەخۆ', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'زیادکردنی ڕیز', - ], - - 'delete' => [ - 'label' => 'سڕینەوەی ڕیز', - ], - - 'reorder' => [ - 'label' => 'ڕێکخستنی ڕیز', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'کلیل', - ], - - 'value' => [ - 'label' => 'نرخ', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'لکاندنی فایل', - 'blockquote' => 'هێڵی وتە', - 'bold' => 'تۆخ کردن', - 'bullet_list' => 'لیستی خاڵ', - 'code_block' => 'هێڵی کۆد', - 'heading' => 'ناونیشان', - 'italic' => 'لارکردن', - 'link' => 'بەستەر', - 'ordered_list' => 'لیستی ژمارە', - 'redo' => 'دووبارەکردن', - 'strike' => 'هێڵ بەسەرهێنان', - 'table' => 'خشتە', - 'undo' => 'گەڕانەوە', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'زیادکردن بۆ :label', - ], - - 'delete' => [ - 'label' => 'سڕینەوە', - ], - - 'clone' => [ - 'label' => 'پۆشتەکردن', - ], - - 'reorder' => [ - 'label' => 'جوڵاندن', - ], - - 'move_down' => [ - 'label' => 'جوڵاندن بۆ خوارەوە', - ], - - 'move_up' => [ - 'label' => 'جوڵاندن بۆ سەرەوە', - ], - - 'collapse' => [ - 'label' => 'بچووکردنەوە', - ], - - 'expand' => [ - 'label' => 'فراوانکردن', - ], - - 'collapse_all' => [ - 'label' => 'بچووکردنەوەی هەموو', - ], - - 'expand_all' => [ - 'label' => 'فراوانکردنی هەموو', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'بەستەر', - 'unlink' => 'لابردنی بەستەر', - ], - - 'label' => 'بەستەر', - - 'placeholder' => 'بەستەر داخڵ بکە', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'لکاندنی فایل', - 'blockquote' => 'هێڵی وتە', - 'bold' => 'تۆخ کردن', - 'bullet_list' => 'لیستی خاڵ', - 'code_block' => 'هێڵی کۆد', - 'h1' => 'ناونیشان', - 'h2' => 'ناونیشانی دووەم', - 'h3' => 'ناونیشانی سێیەم', - 'italic' => 'لارکردن', - 'link' => 'بەستەر', - 'ordered_list' => 'لیستی ژمارە', - 'redo' => 'دووبارەکردن', - 'strike' => 'هێڵ بەسەرهێنان', - 'underline' => 'هێڵ بەژێرهێنان', - 'undo' => 'گەڕانەوە', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'دروستکردن', - - 'actions' => [ - - 'create' => [ - 'label' => 'دروستکردن', - ], - - 'create_another' => [ - 'label' => 'دروستکردن و تۆمارێکی تر', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'دەسکاریکردن', - - 'actions' => [ - - 'save' => [ - 'label' => 'نوێکردنەوە', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'بەڵێ', - 'false' => 'نەخێر', - ], - - 'loading_message' => 'چاوەروان بە...', - - 'max_items_message' => 'تەنها :count دەتواندرێت دیاری بکرێت.', - - 'no_search_results_message' => 'هیچ هەڵبژاردەیەک بۆ گەڕانەکەت نەدۆزرایەوە.', - - 'placeholder' => 'هەڵبژاردەیەک دیاری بکە', - - 'searching_message' => 'گەڕان...', - - 'search_prompt' => 'دەستبکە بە نوسین بۆ گەڕان...', - - ], - - 'tags_input' => [ - 'placeholder' => 'تاگی نوێ', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'پێشوو', - ], - - 'next_step' => [ - 'label' => 'دواتر', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/lt/components.php b/vendor/filament/forms/resources/lang/lt/components.php deleted file mode 100644 index da0b8044..00000000 --- a/vendor/filament/forms/resources/lang/lt/components.php +++ /dev/null @@ -1,416 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Klonuoti', - ], - - 'add' => [ - 'label' => 'Pridėti prie :label', - ], - - 'add_between' => [ - 'label' => 'Pridėti tarp blokų', - ], - - 'delete' => [ - 'label' => 'Ištrinti', - ], - - 'reorder' => [ - 'label' => 'Pastumti', - ], - - 'move_down' => [ - 'label' => 'Žemyn', - ], - - 'move_up' => [ - 'label' => 'Aukštyn', - ], - - 'collapse' => [ - 'label' => 'Suskleisti', - ], - - 'expand' => [ - 'label' => 'Išskleisti', - ], - - 'collapse_all' => [ - 'label' => 'Suskleisti viską', - ], - - 'expand_all' => [ - 'label' => 'Išskleisti viską', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Atžymėti viską', - ], - - 'select_all' => [ - 'label' => 'Pasirinkti viską', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Atšaukti', - ], - - 'drag_crop' => [ - 'label' => 'Apkirpti velkant', - ], - - 'drag_move' => [ - 'label' => 'Perkelti velkant', - ], - - 'flip_horizontal' => [ - 'label' => 'Apversti nuotrauką horizontaliai', - ], - - 'flip_vertical' => [ - 'label' => 'Apversti nuotrauką vertikaliai', - ], - - 'move_down' => [ - 'label' => 'Perkelti vaizdą žemyn', - ], - - 'move_left' => [ - 'label' => 'Perkelti vaizdą į kairę', - ], - - 'move_right' => [ - 'label' => 'Perkelti vaizdą į dešinę', - ], - - 'move_up' => [ - 'label' => 'Perkelti vaizdą aukštyn', - ], - - 'reset' => [ - 'label' => 'Atstatyti', - ], - - 'rotate_left' => [ - 'label' => 'Pasukti nuotrauką į kairę', - ], - - 'rotate_right' => [ - 'label' => 'Pasukti nuotrauka į dešinę', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Nustatyti kraštinių santikį į :ratio', - ], - - 'save' => [ - 'label' => 'Išsaugoti', - ], - - 'zoom_100' => [ - 'label' => 'Priartinti nuotrauką iki 100%', - ], - - 'zoom_in' => [ - 'label' => 'Priartinti', - ], - - 'zoom_out' => [ - 'label' => 'Atitraukti', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Aukštis', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rotacija', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => 'Plotis', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Kraštinių santykiai', - - 'no_fixed' => [ - 'label' => 'Laisvas', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Pridėti eilutę', - ], - - 'delete' => [ - 'label' => 'Ištrinti eilutę', - ], - - 'reorder' => [ - 'label' => 'Pastumti', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Raktas', - ], - - 'value' => [ - 'label' => 'Reikšmė', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Pridėti failus', - 'blockquote' => 'Citatos blokas', - 'bold' => 'Paryškinta', - 'bullet_list' => 'Ženklų sąrašas', - 'code_block' => 'Kodo blokas', - 'heading' => 'Antraštė', - 'italic' => 'Kursyvu', - 'link' => 'Nuoroda', - 'ordered_list' => 'Sunumeruotas sąrašas', - 'redo' => 'Perdaryti', - 'strike' => 'Perbraukti', - 'table' => 'Lentelė', - 'undo' => 'Anuliuoti', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Pridėti prie :label', - ], - - 'delete' => [ - 'label' => 'Ištrinti', - ], - - 'clone' => [ - 'label' => 'Klonuoti', - ], - - 'reorder' => [ - 'label' => 'Pastumti', - ], - - 'move_down' => [ - 'label' => 'Žemyn', - ], - - 'move_up' => [ - 'label' => 'Aukštyn', - ], - - 'collapse' => [ - 'label' => 'Suskleisti', - ], - - 'expand' => [ - 'label' => 'Išskleisti', - ], - - 'collapse_all' => [ - 'label' => 'Suskleisti viską', - ], - - 'expand_all' => [ - 'label' => 'Išskleisti viską', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Pridėti saitą', - 'unlink' => 'Pašalinti saitą', - ], - - 'label' => 'Svetainės adresas', - - 'placeholder' => 'Įveskite svetainės adresą', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Pridėti failus', - 'blockquote' => 'Citatos blokas', - 'bold' => 'Paryškinta', - 'bullet_list' => 'Ženklų sąrašas', - 'code_block' => 'Kodo blokas', - 'h1' => 'Pavadinimas', - 'h2' => 'Antraštė', - 'h3' => 'Paantraštė', - 'italic' => 'Kursyvas', - 'link' => 'Nuoroda', - 'ordered_list' => 'Sunumeruotas sąrašas', - 'redo' => 'Perdaryti', - 'strike' => 'Perbraukta', - 'underline' => 'Pabraukta', - 'undo' => 'Anuliuoti', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Sukurti', - - 'actions' => [ - - 'create' => [ - 'label' => 'Sukurti', - ], - - 'create_another' => [ - 'label' => 'Sukurti ir sukurti kitą', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Redaguoti', - - 'actions' => [ - - 'save' => [ - 'label' => 'Išsaugoti', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Taip', - 'false' => 'Ne', - ], - - 'loading_message' => 'Kraunasi...', - - 'max_items_message' => 'Pažymėti gali būti tik :count .', - - 'no_search_results_message' => 'Nėra paieškos rezultatų.', - - 'placeholder' => 'Pasirinkite', - - 'searching_message' => 'Ieškoma...', - - 'search_prompt' => 'Pradėkite rašykite paieškai...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Nauja žyma', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Atgal', - ], - - 'next_step' => [ - 'label' => 'Pirmyn', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/lv/components.php b/vendor/filament/forms/resources/lang/lv/components.php deleted file mode 100644 index 4e436043..00000000 --- a/vendor/filament/forms/resources/lang/lv/components.php +++ /dev/null @@ -1,429 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Klonēt', - ], - - 'add' => [ - 'label' => 'Izveidot :label', - ], - - 'add_between' => [ - 'label' => 'Ievietot', - ], - - 'delete' => [ - 'label' => 'Dzēst', - ], - - 'reorder' => [ - 'label' => 'Pārkārtot', - ], - - 'move_down' => [ - 'label' => 'Pārvietot uz leju', - ], - - 'move_up' => [ - 'label' => 'Pārvietot uz augšu', - ], - - 'collapse' => [ - 'label' => 'Sakļaut', - ], - - 'expand' => [ - 'label' => 'Izplest', - ], - - 'collapse_all' => [ - 'label' => 'Sakļaut visus', - ], - - 'expand_all' => [ - 'label' => 'Izplest visus', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Noņemt atlasi visiem', - ], - - 'select_all' => [ - 'label' => 'Atlasīt visus', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Atcelt', - ], - - 'drag_crop' => [ - 'label' => 'Režīms "kadrēšana"', - ], - - 'drag_move' => [ - 'label' => 'Režīms "pārvietošana"', - ], - - 'flip_horizontal' => [ - 'label' => 'Attēlot horizontāli', - ], - - 'flip_vertical' => [ - 'label' => 'Attēlot vertikāli', - ], - - 'move_down' => [ - 'label' => 'Pārvietot uz leju', - ], - - 'move_left' => [ - 'label' => 'Pārvietot pa kreisi', - ], - - 'move_right' => [ - 'label' => 'Pārvietot pa labi', - ], - - 'move_up' => [ - 'label' => 'Pārvietot uz augšu', - ], - - 'reset' => [ - 'label' => 'Atiestatīt', - ], - - 'rotate_left' => [ - 'label' => 'Pagriezt pa kreisi', - ], - - 'rotate_right' => [ - 'label' => 'Pagriezt pa labi', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Iestatīt malu attiecību :ratio', - ], - - 'save' => [ - 'label' => 'Saglabāt', - ], - - 'zoom_100' => [ - 'label' => 'Pietuvināt līdz 100%', - ], - - 'zoom_in' => [ - 'label' => 'Pietuvināt', - ], - - 'zoom_out' => [ - 'label' => 'Attālināt', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Augstums', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rotācija', - 'unit' => 'grādi', - ], - - 'width' => [ - 'label' => 'Platums', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Malu attiecība', - - 'no_fixed' => [ - 'label' => 'Brīva', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'SVG failu rediģēšana nav ieteicama, jo mērogošanas laikā var tikt zaudēta kvalitāte.\n Vai tiešām vēlaties turpināt?', - 'disabled' => 'SVG failu rediģēšana ir atspējota, jo mērogošanas laikā var tikt zaudēta kvalitāte.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Pievienot rindu', - ], - - 'delete' => [ - 'label' => 'Dzēst rindu', - ], - - 'reorder' => [ - 'label' => 'Pārkārtot rindu', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Atslēga', - ], - - 'value' => [ - 'label' => 'Vērtība', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Pievienot failus', - 'blockquote' => 'Citāts', - 'bold' => 'Treknraksts', - 'bullet_list' => 'Nekārtots saraksts', - 'code_block' => 'Koda bloks', - 'heading' => 'Virsraksts', - 'italic' => 'Slīpraksts', - 'link' => 'Saite', - 'ordered_list' => 'Numurēts saraksts', - 'redo' => 'Atcelt atsaukšanu', - 'strike' => 'Pārsvītrojums', - 'table' => 'Tabula', - 'undo' => 'Atsaukt', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Pievienot :label', - ], - - 'add_between' => [ - 'label' => 'Pievienot starp', - ], - - 'delete' => [ - 'label' => 'Dzēst', - ], - - 'clone' => [ - 'label' => 'Klonēt', - ], - - 'reorder' => [ - 'label' => 'Pārvietot', - ], - - 'move_down' => [ - 'label' => 'Pārvietot uz leju', - ], - - 'move_up' => [ - 'label' => 'Pārvietot uz augšu', - ], - - 'collapse' => [ - 'label' => 'Sakļaut', - ], - - 'expand' => [ - 'label' => 'Izplest', - ], - - 'collapse_all' => [ - 'label' => 'Sakļaut visus', - ], - - 'expand_all' => [ - 'label' => 'Izplest visus', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Saistīt', - 'unlink' => 'Noņemt saiti', - ], - - 'label' => 'Saite', - - 'placeholder' => 'Ievadīt saiti', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Pievienot failus', - 'blockquote' => 'Citāts', - 'bold' => 'Treknraksts', - 'bullet_list' => 'Nekārtots saraksts', - 'code_block' => 'Koda bloks', - 'h1' => 'Virsraksts', - 'h2' => 'Mazāks virsraksts', - 'h3' => 'Pakārtotā iedaļa', - 'italic' => 'Slīpraksts', - 'link' => 'Saite', - 'ordered_list' => 'Numurēts saraksts', - 'redo' => 'Atcelt atsaukšanu', - 'strike' => 'Pārsvītrojums', - 'underline' => 'Pasvītrojums', - 'undo' => 'Atsaukt', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Izveidot', - - 'actions' => [ - - 'create' => [ - 'label' => 'Izveidot', - ], - - 'create_another' => [ - 'label' => 'Izveidot vēl vienu', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Rediģēt', - - 'actions' => [ - - 'save' => [ - 'label' => 'Saglabāt', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Jā', - 'false' => 'Nē', - ], - - 'loading_message' => 'Ielādē...', - - 'max_items_message' => 'Tikai :count var atzīmēt.', - - 'no_search_results_message' => 'Jūsu meklēšanai neatbilst neviena opcija.', - - 'placeholder' => 'Atlasiet opciju', - - 'searching_message' => 'Meklē...', - - 'search_prompt' => 'Sāciet rakstīt, lai meklētu...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Izveidot birku', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Iepriekšējais', - ], - - 'next_step' => [ - 'label' => 'Nākamais', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/mn/components.php b/vendor/filament/forms/resources/lang/mn/components.php deleted file mode 100644 index 214360a1..00000000 --- a/vendor/filament/forms/resources/lang/mn/components.php +++ /dev/null @@ -1,271 +0,0 @@ - [ - - 'actions' => [ - - 'clone_item' => [ - 'label' => 'Хуулбарлах', - ], - - 'create_item' => [ - 'label' => 'Нэмэх :label', - ], - - 'create_item_between' => [ - 'label' => 'Оруулах', - ], - - 'delete_item' => [ - 'label' => 'Устгах', - ], - - 'move_item' => [ - 'label' => 'Зөөх', - ], - - 'move_item_down' => [ - 'label' => 'Доош зөөх', - ], - - 'move_item_up' => [ - 'label' => 'Дээш зөөх', - ], - - 'collapse_item' => [ - 'label' => 'Хаах', - ], - - 'expand_item' => [ - 'label' => 'Нээх', - ], - - 'collapse_all' => [ - 'label' => 'Бүгдийг хаах', - ], - - 'expand_all' => [ - 'label' => 'Бүгдийг нээх', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Бүгдийг эс сонгох', - ], - - 'select_all' => [ - 'label' => 'Бүгдийг сонгох', - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Шинэ мөр', - ], - - 'delete' => [ - 'label' => 'Мөр устгах', - ], - - 'reorder' => [ - 'label' => 'Мөрийг эрэмбэлэх', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Түлхүүр үг', - ], - - 'value' => [ - 'label' => 'Утга', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Файл хавсаргах', - 'bold' => 'Bold', - 'bullet_list' => 'Bullet list', - 'code_block' => 'Code block', - 'edit' => 'Edit', - 'italic' => 'Italic', - 'link' => 'Link', - 'ordered_list' => 'Numbered list', - 'preview' => 'Урьдчилж харах', - 'strike' => 'Strikethrough', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'create_item' => [ - 'label' => 'Нэмэх :label', - ], - - 'delete_item' => [ - 'label' => 'Устгах', - ], - - 'clone_item' => [ - 'label' => 'Хуулбарлах', - ], - - 'move_item' => [ - 'label' => 'Зөөх', - ], - - 'move_item_down' => [ - 'label' => 'Доош зөөх', - ], - - 'move_item_up' => [ - 'label' => 'Дээш зөөх', - ], - - 'collapse_item' => [ - 'label' => 'Хаах', - ], - - 'expand_item' => [ - 'label' => 'Нээх', - ], - - 'collapse_all' => [ - 'label' => 'Бүгдийг хаах', - ], - - 'expand_all' => [ - 'label' => 'Бүгдийг нээх', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Линк', - 'unlink' => 'Unlink', - ], - - 'label' => 'URL', - - 'placeholder' => 'URL оруулах', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Файл хавсаргах', - 'blockquote' => 'Blockquote', - 'bold' => 'Bold', - 'bullet_list' => 'Bullet list', - 'code_block' => 'Code block', - 'h1' => 'Title', - 'h2' => 'Heading', - 'h3' => 'Subheading', - 'italic' => 'Italic', - 'link' => 'Линк', - 'ordered_list' => 'Numbered list', - 'redo' => 'Дахин хий', - 'strike' => 'Strikethrough', - 'undo' => 'Буцаа', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Үүсгэх', - - 'actions' => [ - - 'create' => [ - 'label' => 'Үүсгэх', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Тийм', - 'false' => 'Үгүй', - ], - - 'loading_message' => 'Ачааллаж байна...', - - 'max_items_message' => 'Зөвхөн :count - г сонгоно.', - - 'no_search_results_message' => 'Таны хайлтанд тохирох утга олдсонгүй.', - - 'placeholder' => 'Сонгох', - - 'searching_message' => 'Хайх...', - - 'search_prompt' => 'Бичиж байна...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Шинэ таг', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Буцах', - ], - - 'next_step' => [ - 'label' => 'Дараах', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/ms/components.php b/vendor/filament/forms/resources/lang/ms/components.php deleted file mode 100644 index 3fb354ef..00000000 --- a/vendor/filament/forms/resources/lang/ms/components.php +++ /dev/null @@ -1,438 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Klon', - ], - - 'add' => [ - 'label' => 'Tambah ke :label', - ], - - 'add_between' => [ - 'label' => 'Masukkan', - ], - - 'delete' => [ - 'label' => 'Padam', - ], - - 'reorder' => [ - 'label' => 'Pindah', - ], - - 'move_down' => [ - 'label' => 'Pindah ke bawah', - ], - - 'move_up' => [ - 'label' => 'Pindah ke atas', - ], - - 'collapse' => [ - 'label' => 'Tutup', - ], - - 'expand' => [ - 'label' => 'Buka', - ], - - 'collapse_all' => [ - 'label' => 'Tutup semua', - ], - - 'expand_all' => [ - 'label' => 'Buka semua', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Nyahpilih semua', - ], - - 'select_all' => [ - 'label' => 'Pilih semua', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Batal', - ], - - 'drag_crop' => [ - 'label' => 'Mod seret "crop"', - ], - - 'drag_move' => [ - 'label' => 'Mod seret "move"', - ], - - 'flip_horizontal' => [ - 'label' => 'Balikkan imej mendatar', - ], - - 'flip_vertical' => [ - 'label' => 'Balikkan imej menegak', - ], - - 'move_down' => [ - 'label' => 'Gerakkan imej ke bawah', - ], - - 'move_left' => [ - 'label' => 'Alihkan imej ke kiri', - ], - - 'move_right' => [ - 'label' => 'Alihkan imej ke kanan', - ], - - 'move_up' => [ - 'label' => 'Alihkan imej ke atas', - ], - - 'reset' => [ - 'label' => 'Tetapkan semula', - ], - - 'rotate_left' => [ - 'label' => 'Putar imej ke kiri', - ], - - 'rotate_right' => [ - 'label' => 'Putar imej ke kanan', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Tetapkan nisbah bidang kepada :ratio', - ], - - 'save' => [ - 'label' => 'Simpan', - ], - - 'zoom_100' => [ - 'label' => 'Zum imej kepada 100%', - ], - - 'zoom_in' => [ - 'label' => 'Zum masuk', - ], - - 'zoom_out' => [ - 'label' => 'Zum keluar', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Ketinggian', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Putaran', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => 'Lebar', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Nisbah aspek', - - 'no_fixed' => [ - 'label' => 'Bebas', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'Mengedit fail SVG tidak disyorkan kerana ia boleh mengakibatkan kehilangan kualiti semasa penskalaan.\n Adakah anda pasti mahu meneruskan?', - 'disabled' => 'Mengedit fail SVG dilumpuhkan kerana ia boleh menyebabkan kehilangan kualiti apabila penskalaan.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Tambah Baris', - ], - - 'delete' => [ - 'label' => 'Padam Baris', - ], - - 'reorder' => [ - 'label' => 'Susun Baris', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Kunci', - ], - - 'value' => [ - 'label' => 'Nilai', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Lampirkan fail', - 'blockquote' => 'Blok petikan', - 'bold' => 'Bold', - 'bullet_list' => 'Bullet list', - 'code_block' => 'Blok kod', - 'heading' => 'Tajuk', - 'italic' => 'Italic', - 'link' => 'Pautan', - 'ordered_list' => 'Senarai bernombor', - 'redo' => 'Buat semula', - 'strike' => 'Strikethrough', - 'table' => 'Jadual', - 'undo' => 'Buat asal', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'Ya', - 'false' => 'Tidak', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Tambah ke :label', - ], - - 'add_between' => [ - 'label' => 'Masukkan antara', - ], - - 'delete' => [ - 'label' => 'Padam', - ], - - 'clone' => [ - 'label' => 'Klon', - ], - - 'reorder' => [ - 'label' => 'Pindah', - ], - - 'move_down' => [ - 'label' => 'Pindah ke atas', - ], - - 'move_up' => [ - 'label' => 'Pindah ke bawah', - ], - - 'collapse' => [ - 'label' => 'Tutup', - ], - - 'expand' => [ - 'label' => 'Buka', - ], - - 'collapse_all' => [ - 'label' => 'Tutup semua', - ], - - 'expand_all' => [ - 'label' => 'Buka semua', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Pautkan', - 'unlink' => 'Nyahpaut', - ], - - 'label' => 'URL', - - 'placeholder' => 'Masukkan URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Lampirkan fail', - 'blockquote' => 'Blockquote', - 'bold' => 'Bold', - 'bullet_list' => 'Bullet list', - 'code_block' => 'Blok kod', - 'h1' => 'Title', - 'h2' => 'Heading', - 'h3' => 'Subheading', - 'italic' => 'Italic', - 'link' => 'Pautan', - 'ordered_list' => 'Senarai bernombor', - 'redo' => 'Buat semula', - 'strike' => 'Strikethrough', - 'underline' => 'Garis bawah', - 'undo' => 'Buat asal', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Cipta', - - 'actions' => [ - - 'create' => [ - 'label' => 'Cipta', - ], - - 'create_another' => [ - 'label' => 'Cipta dan cipta yang lain', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Sunting', - - 'actions' => [ - - 'save' => [ - 'label' => 'Simpan', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Ya', - 'false' => 'Tidak', - ], - - 'loading_message' => 'Memuatkan...', - - 'max_items_message' => 'Hanya :count boleh dipilih.', - - 'no_search_results_message' => 'Tiada pilihan yang sepadan dengan carian anda.', - - 'placeholder' => 'Pilih satu pilihan', - - 'searching_message' => 'Mencari...', - - 'search_prompt' => 'Mula menaip untuk mencari...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Tag baru', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Sebelum', - ], - - 'next_step' => [ - 'label' => 'Seterus', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/ms/validation.php b/vendor/filament/forms/resources/lang/ms/validation.php deleted file mode 100644 index 04c7d2b6..00000000 --- a/vendor/filament/forms/resources/lang/ms/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'Sekurang-kurangnya satu medan :attribute mesti dipilih.', - 'only_one_must_be_selected' => 'Hanya satu medan :attribute mesti dipilih.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/my/components.php b/vendor/filament/forms/resources/lang/my/components.php deleted file mode 100644 index 0d8f0407..00000000 --- a/vendor/filament/forms/resources/lang/my/components.php +++ /dev/null @@ -1,154 +0,0 @@ - [ - - 'actions' => [ - - 'add' => [ - 'label' => 'ထည့်သွင်း :label', - ], - - 'add_between' => [ - 'label' => 'ထည့်သွင်းပါ', - ], - - 'delete' => [ - 'label' => 'ဖျက်ပါ', - ], - - 'reorder' => [ - 'label' => 'ရွှေ့ပါ', - ], - - 'move_down' => [ - 'label' => 'အောက်သို့ရွှေ့ပါ', - ], - - 'move_up' => [ - 'label' => 'အပေါ်ကိုရွှေ့ပါ', - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'လိုင်းထည့်ပါ', - ], - - 'delete' => [ - 'label' => 'ဖျက်ပါ', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Key', - ], - - 'value' => [ - 'label' => 'Value', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'ဖိုင်ဖျားကိုပူးတွဲရန်', - 'bold' => 'စာလုံးထူ', - 'bullet_list' => 'ကျည်ဖူးပုံ စာရင်း', - 'code_block' => 'Code block', - 'edit' => 'တည်းဖြတ်ပါ', - 'italic' => 'စာလုံးစောင်း', - 'link' => 'လင့်ကို ထည့်သွင်းရန်', - 'ordered_list' => 'နံပါတ်တပ် စာရင်း', - 'preview' => 'စမ်းကြည့်သည်', - 'strike' => 'စာသားဗဟိုလိုင်း', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'ထည့်သွင်း :label', - ], - - 'delete' => [ - 'label' => 'ဖျက်ပါ', - ], - - 'move_down' => [ - 'label' => 'အောက်သို့ရွှေ့ပါ', - ], - - 'move_up' => [ - 'label' => 'အပေါ်ကိုရွှေ့ပါ', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'ချိတ်ပါ', - 'unlink' => 'မချိတ်ပါ', - ], - - 'label' => 'URL', - - 'placeholder' => 'URL ထည့်ပါ', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'ဖိုင်ဖျားကိုပူးတွဲရန်', - 'blockquote' => 'Blockquote', - 'bold' => 'စာလုံးထူ', - 'bullet_list' => 'ကျည်ဖူးပုံ စာရင်း', - 'code_block' => 'Code block', - 'h1' => 'Title', - 'h2' => 'Heading', - 'h3' => 'Subheading', - 'italic' => 'စာလုံးစောင်း', - 'link' => 'လင့်ကို ထည့်သွင်းရန်', - 'ordered_list' => 'နံပါတ်တပ် စာရင်း', - 'redo' => 'ပြန်လုပ်ရန်', - 'strike' => 'စာသားဗဟိုလိုင်း', - 'undo' => 'တစ်ဆင့်နောက်ပြန်ရန်', - ], - - ], - - 'select' => [ - 'no_search_results_message' => 'သင့်ရှာဖွေမှုနှင့် ကိုက်ညီသော ရွေးချယ်ခွင့်မရှိပါ', - 'placeholder' => 'ကျေးဇူးပြုပြီး ရွေးချယ်ပါ', - 'search_prompt' => 'စာရိုက်ပြီး ရှာပါ...', - ], - - 'tags_input' => [ - 'placeholder' => 'tag အသစ်', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/nl/components.php b/vendor/filament/forms/resources/lang/nl/components.php deleted file mode 100644 index 6797ba59..00000000 --- a/vendor/filament/forms/resources/lang/nl/components.php +++ /dev/null @@ -1,463 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Klonen', - ], - - 'add' => [ - 'label' => 'Toevoegen aan :label', - ], - - 'add_between' => [ - 'label' => 'Invoegen', - ], - - 'delete' => [ - 'label' => 'Verwijderen', - ], - - 'reorder' => [ - 'label' => 'Verplaatsen', - ], - - 'move_down' => [ - 'label' => 'Omlaag verplaatsen', - ], - - 'move_up' => [ - 'label' => 'Omhoog verplaatsen', - ], - - 'collapse' => [ - 'label' => 'Inklappen', - ], - - 'expand' => [ - 'label' => 'Uitklappen', - ], - - 'collapse_all' => [ - 'label' => 'Alles inklappen', - ], - - 'expand_all' => [ - 'label' => 'Alles uitklappen', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Alles deselecteren', - ], - - 'select_all' => [ - 'label' => 'Alles selecteren', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Annuleren', - ], - - 'drag_crop' => [ - 'label' => 'Sleepmodus "bijsnijden"', - ], - - 'drag_move' => [ - 'label' => 'Sleepmodus "verplaatsen"', - ], - - 'flip_horizontal' => [ - 'label' => 'Afbeelding horizontaal spiegelen', - ], - - 'flip_vertical' => [ - 'label' => 'Afbeelding verticaal spiegelen', - ], - - 'move_down' => [ - 'label' => 'Afbeelding naar beneden verplaatsen', - ], - - 'move_left' => [ - 'label' => 'Afbeelding naar links verplaatsen', - ], - - 'move_right' => [ - 'label' => 'Afbeelding naar rechts verplaatsen', - ], - - 'move_up' => [ - 'label' => 'Afbeelding naar boven verplaatsen', - ], - - 'reset' => [ - 'label' => 'Resetten', - ], - - 'rotate_left' => [ - 'label' => 'Afbeelding naar links draaien', - ], - - 'rotate_right' => [ - 'label' => 'Afbeelding naar rechts draaien', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Beeldverhouding instellen op :ratio', - ], - - 'save' => [ - 'label' => 'Opslaan', - ], - - 'zoom_100' => [ - 'label' => 'Afbeelding uitzoomen naar 100%', - ], - - 'zoom_in' => [ - 'label' => 'Inzoomen', - ], - - 'zoom_out' => [ - 'label' => 'Uitzoomen', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Hoogte', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rotatie', - 'unit' => 'gr', - ], - - 'width' => [ - 'label' => 'Breedte', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Beeldverhoudingen', - - 'no_fixed' => [ - 'label' => 'Geen', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'Het bewerken van SVG-bestanden wordt niet aanbevolen, omdat dit kan leiden tot kwaliteitsverlies bij het schalen.\n Weet je zeker dat je door wilt gaan?', - 'disabled' => 'Het bewerken van SVG-bestanden is uitgeschakeld omdat dit kan leiden tot kwaliteitsverlies bij het schalen.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Rij toevoegen', - ], - - 'delete' => [ - 'label' => 'Rij verwijderen', - ], - - 'reorder' => [ - 'label' => 'Rij herordenen', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Sleutel', - ], - - 'value' => [ - 'label' => 'Waarde', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Bestanden bijvoegen', - 'blockquote' => 'Blokcitaat', - 'bold' => 'Vet', - 'bullet_list' => 'Ongeordende lijst', - 'code_block' => 'Codeblok', - 'heading' => 'Kop', - 'italic' => 'Cursief', - 'link' => 'Link', - 'ordered_list' => 'Genummerde lijst', - 'redo' => 'Opnieuw', - 'strike' => 'Doorhalen', - 'table' => 'Tabel', - 'undo' => 'Herstellen', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'Ja', - 'false' => 'Nee', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Toevoegen aan :label', - ], - - 'add_between' => [ - 'label' => 'Invoegen', - ], - - 'delete' => [ - 'label' => 'Verwijderen', - ], - - 'clone' => [ - 'label' => 'Klonen', - ], - - 'reorder' => [ - 'label' => 'Verplaatsen', - ], - - 'move_down' => [ - 'label' => 'Omlaag verplaatsen', - ], - - 'move_up' => [ - 'label' => 'Omhoog verplaatsen', - ], - - 'collapse' => [ - 'label' => 'Inklappen', - ], - - 'expand' => [ - 'label' => 'Uitklappen', - ], - - 'collapse_all' => [ - 'label' => 'Alles inklappen', - ], - - 'expand_all' => [ - 'label' => 'Alles uitklappen', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Link', - 'unlink' => 'Unlink', - ], - - 'label' => 'URL', - - 'placeholder' => 'Voer een URL in', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Bestanden bijvoegen', - 'blockquote' => 'Quote', - 'bold' => 'Vet', - 'bullet_list' => 'Ongeordende lijst', - 'code_block' => 'Codeblok', - 'h1' => 'Titel', - 'h2' => 'Kop', - 'h3' => 'Tussenkop', - 'italic' => 'Cursief', - 'link' => 'Link', - 'ordered_list' => 'Genummerde lijst', - 'redo' => 'Opnieuw uitvoeren', - 'strike' => 'Doorhalen', - 'underline' => 'Onderstrepen', - 'undo' => 'Ongedaan maken', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Aanmaken', - - 'actions' => [ - - 'create' => [ - 'label' => 'Aanmaken', - ], - - 'create_another' => [ - 'label' => 'Aanmaken & nieuwe aanmaken', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Bewerken', - - 'actions' => [ - - 'save' => [ - 'label' => 'Opslaan', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Ja', - 'false' => 'Nee', - ], - - 'loading_message' => 'Laden...', - - 'max_items_message' => 'Er kunnen maar :count geselecteerd worden.', - - 'no_search_results_message' => 'Er zijn geen resultaten voor je zoekopdracht.', - - 'placeholder' => 'Selecteer een optie', - - 'searching_message' => 'Zoeken...', - - 'search_prompt' => 'Start met typen om te zoeken...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Nieuwe tag', - ], - - 'text_input' => [ - - 'actions' => [ - - 'hide_password' => [ - 'label' => 'Wachtwoord verbergen', - ], - - 'show_password' => [ - 'label' => 'Wachtwoord tonen', - ], - - ], - - ], - - 'toggle_buttons' => [ - - 'boolean' => [ - 'true' => 'Ja', - 'false' => 'Nee', - ], - - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Vorige', - ], - - 'next_step' => [ - 'label' => 'Volgende', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/nl/validation.php b/vendor/filament/forms/resources/lang/nl/validation.php deleted file mode 100644 index 82a6a2ff..00000000 --- a/vendor/filament/forms/resources/lang/nl/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'Minstens één :attribute veld moet worden geselecteerd.', - 'only_one_must_be_selected' => 'Slechts één :attribute veld mag worden geselecteerd.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/no/components.php b/vendor/filament/forms/resources/lang/no/components.php deleted file mode 100644 index c5b0bfd9..00000000 --- a/vendor/filament/forms/resources/lang/no/components.php +++ /dev/null @@ -1,416 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Klon', - ], - - 'add' => [ - 'label' => 'Legge til i :label', - ], - - 'add_between' => [ - 'label' => 'Sett inn mellom', - ], - - 'delete' => [ - 'label' => 'Slett', - ], - - 'reorder' => [ - 'label' => 'Flytt', - ], - - 'move_down' => [ - 'label' => 'Flytt ned', - ], - - 'move_up' => [ - 'label' => 'Flytt opp', - ], - - 'collapse' => [ - 'label' => 'Kollaps', - ], - - 'expand' => [ - 'label' => 'Utvid', - ], - - 'collapse_all' => [ - 'label' => 'Kollaps alle', - ], - - 'expand_all' => [ - 'label' => 'Utvid alle', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Avvelg alle', - ], - - 'select_all' => [ - 'label' => 'Velg alle', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Avbryt', - ], - - 'drag_crop' => [ - 'label' => 'Dra-modus "beskjær"', - ], - - 'drag_move' => [ - 'label' => 'Dra-modus "flytt"', - ], - - 'flip_horizontal' => [ - 'label' => 'Vend bildet horisontalt', - ], - - 'flip_vertical' => [ - 'label' => 'Vend bildet vertikalt', - ], - - 'move_down' => [ - 'label' => 'Flytt bildet ned', - ], - - 'move_left' => [ - 'label' => 'Flytt vildet til venstre', - ], - - 'move_right' => [ - 'label' => 'Flytt bildet til høyre', - ], - - 'move_up' => [ - 'label' => 'Flytt bildet opp', - ], - - 'reset' => [ - 'label' => 'Nullstill', - ], - - 'rotate_left' => [ - 'label' => 'Roter bildet til venstre', - ], - - 'rotate_right' => [ - 'label' => 'Roter bildet til høyre', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Sett sideforhold til :ratio', - ], - - 'save' => [ - 'label' => 'Lagre', - ], - - 'zoom_100' => [ - 'label' => 'Zoom bildet til 100%', - ], - - 'zoom_in' => [ - 'label' => 'Zoom inn', - ], - - 'zoom_out' => [ - 'label' => 'Zoom ut', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Høyde', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rotasjon', - 'unit' => 'grader', - ], - - 'width' => [ - 'label' => 'Bredde', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Sideforhold', - - 'no_fixed' => [ - 'label' => 'Fri', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Legg til rad', - ], - - 'delete' => [ - 'label' => 'Slett rad', - ], - - 'reorder' => [ - 'label' => 'Omorganiser rad', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Nøkkel', - ], - - 'value' => [ - 'label' => 'Verdi', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Legg til filer', - 'blockquote' => 'Sitat', - 'bold' => 'Fet', - 'bullet_list' => 'Punktliste', - 'code_block' => 'Kode', - 'heading' => 'Tittel', - 'italic' => 'Kursiv', - 'link' => 'Lenke', - 'ordered_list' => 'Nummerert liste', - 'redo' => 'Gjør om', - 'strike' => 'Gjennomstrekning', - 'table' => 'Tabell', - 'undo' => 'Angre', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Legg til i :label', - ], - - 'delete' => [ - 'label' => 'Slett', - ], - - 'clone' => [ - 'label' => 'Klon', - ], - - 'reorder' => [ - 'label' => 'Flytt', - ], - - 'move_down' => [ - 'label' => 'Flytt ned', - ], - - 'move_up' => [ - 'label' => 'Flytt opp', - ], - - 'collapse' => [ - 'label' => 'Kollaps', - ], - - 'expand' => [ - 'label' => 'Utvid', - ], - - 'collapse_all' => [ - 'label' => 'Kollaps alle', - ], - - 'expand_all' => [ - 'label' => 'Utvid alle', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Lenke', - 'unlink' => 'Fjern lenke', - ], - - 'label' => 'URL', - - 'placeholder' => 'Skriv inn URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Legg til filer', - 'blockquote' => 'Sitat', - 'bold' => 'Fet', - 'bullet_list' => 'Punktliste', - 'code_block' => 'Kode', - 'h1' => 'Tittel', - 'h2' => 'Overskrift', - 'h3' => 'Undertittel', - 'italic' => 'Kursiv', - 'link' => 'Lenke', - 'ordered_list' => 'Nummerert liste', - 'redo' => 'Gjør om', - 'strike' => 'Gjennomstrekning', - 'underline' => 'Understrekning', - 'undo' => 'Angre', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Opprett', - - 'actions' => [ - - 'create' => [ - 'label' => 'Opprett', - ], - - 'create_another' => [ - 'label' => 'Opprett & opprett en til', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Endre', - - 'actions' => [ - - 'save' => [ - 'label' => 'Lagre', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Ja', - 'false' => 'Nei', - ], - - 'loading_message' => 'Laster...', - - 'max_items_message' => 'Bare :count kan velges.', - - 'no_search_results_message' => 'No alternativer matcher ditt søk.', - - 'placeholder' => 'Velg et alternativ', - - 'searching_message' => 'Søker...', - - 'search_prompt' => 'Skriv for å søke...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Ny emneknagg', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Tilbake', - ], - - 'next_step' => [ - 'label' => 'Neste', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/np/components.php b/vendor/filament/forms/resources/lang/np/components.php deleted file mode 100644 index 3465668c..00000000 --- a/vendor/filament/forms/resources/lang/np/components.php +++ /dev/null @@ -1,416 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'क्लोन गर्नुहोस्', - ], - - 'add' => [ - 'label' => ':label मा थप्नुहोस्', - ], - - 'add_between' => [ - 'label' => 'ब्लकहरू बीच सम्मिलित गर्नुहोस्', - ], - - 'delete' => [ - 'label' => 'मेटाउनुहोस्', - ], - - 'reorder' => [ - 'label' => 'सार्नुहोस्', - ], - - 'move_down' => [ - 'label' => 'तल सार्नुहोस्', - ], - - 'move_up' => [ - 'label' => 'माथि सार्नुहोस्', - ], - - 'collapse' => [ - 'label' => 'संक्षिप्त गर्नुहोस्', - ], - - 'expand' => [ - 'label' => 'विस्तार गर्नुहोस्', - ], - - 'collapse_all' => [ - 'label' => 'सबै संक्षिप्त गर्नुहोस्', - ], - - 'expand_all' => [ - 'label' => 'सबै विस्तार गर्नुहोस्', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'सबै अचयन गर्नुहोस्', - ], - - 'select_all' => [ - 'label' => 'सबै चयन गर्नुहोस्', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'रद्द गर्नुहोस्', - ], - - 'drag_crop' => [ - 'label' => 'तान्ने मोड "क्रप"', - ], - - 'drag_move' => [ - 'label' => 'तान्ने मोड "मुभ"', - ], - - 'flip_horizontal' => [ - 'label' => 'फोटो तेर्सो रूपमा फ्लिप गर्नुहोस्', - ], - - 'flip_vertical' => [ - 'label' => 'फोटो ठाडो रूपमा फ्लिप गर्नुहोस्', - ], - - 'move_down' => [ - 'label' => 'फोटो तल सार्नुहोस्', - ], - - 'move_left' => [ - 'label' => 'फोटोलाई बाँया सार्नुहोस्', - ], - - 'move_right' => [ - 'label' => 'फोटोलाई दायाँ सार्नुहोस्', - ], - - 'move_up' => [ - 'label' => 'फोटो माथि सार्नुहोस्', - ], - - 'reset' => [ - 'label' => 'रिसेट गर्नुहोस्', - ], - - 'rotate_left' => [ - 'label' => 'फोटो बायाँ घुमाउनुहोस्', - ], - - 'rotate_right' => [ - 'label' => 'फोटो दायाँ घुमाउनुहोस्', - ], - - 'set_aspect_ratio' => [ - 'label' => 'पक्ष अनुपात :ratio सेट गर्नुहोस्', - ], - - 'save' => [ - 'label' => 'सुरक्षित गर्नुहोस', - ], - - 'zoom_100' => [ - 'label' => 'फोटोलाई 100% मा जुम गर्नुहोस्', - ], - - 'zoom_in' => [ - 'label' => 'जुम इन गर्नुहोस्', - ], - - 'zoom_out' => [ - 'label' => 'जुम आउट गर्नुहोस्', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'उचाइ', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'परिक्रमा', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => 'चौडाइ', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'पक्ष अनुपात', - - 'no_fixed' => [ - 'label' => 'फ्री', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'पङ्क्ति थप्नुहोस्', - ], - - 'delete' => [ - 'label' => 'पङ्क्ति मेटाउनुहोस्', - ], - - 'reorder' => [ - 'label' => 'पङ्क्ति पुन क्रमबद्ध गर्नुहोस्', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Key', - ], - - 'value' => [ - 'label' => 'Value', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'फाइलहरू संलग्न गर्नुहोस्', - 'blockquote' => 'ब्लककोट', - 'bold' => 'बोल्ड', - 'bullet_list' => 'बुलेट सूची', - 'code_block' => 'कोड ब्लक', - 'heading' => 'हेडिङ', - 'italic' => 'इटालिक', - 'link' => 'लिङ्क', - 'ordered_list' => 'अंकित सूची', - 'redo' => 'पुन गर्नुहोस्', - 'strike' => 'स्ट्राइकथ्रु', - 'table' => 'तालिका', - 'undo' => 'पूर्ववत गर्नुहोस्', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => ':label मा थप्नुहोस्', - ], - - 'delete' => [ - 'label' => 'मेटाउनुहोस्', - ], - - 'clone' => [ - 'label' => 'क्लोन', - ], - - 'reorder' => [ - 'label' => 'मुभ', - ], - - 'move_down' => [ - 'label' => 'तल सार्नुहोस्', - ], - - 'move_up' => [ - 'label' => 'माथि सार्नुहोस्', - ], - - 'collapse' => [ - 'label' => 'संक्षिप्त गर्नुहोस्', - ], - - 'expand' => [ - 'label' => 'विस्तार गर्नुहोस्', - ], - - 'collapse_all' => [ - 'label' => 'सबै संक्षिप्त गर्नुहोस्', - ], - - 'expand_all' => [ - 'label' => 'सबै विस्तार गर्नुहोस्', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'लिङ्क गर्नुहोस्', - 'unlink' => 'अनलिंक गर्नुहोस्', - ], - - 'label' => 'URL', - - 'placeholder' => 'URL इनपुट गर्नुहोस्', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'फाइलहरू संलग्न गर्नुहोस्', - 'blockquote' => 'ब्लककोट', - 'bold' => 'बोल्ड', - 'bullet_list' => 'बुलेट सूची', - 'code_block' => 'कोड ब्लक', - 'h1' => 'शीर्षक', - 'h2' => 'हेडिङ', - 'h3' => 'उपशीर्षक', - 'italic' => 'इटालिक', - 'link' => 'लिङ्क', - 'ordered_list' => 'अंकित सूची', - 'redo' => 'पुन गर्नुहोस्', - 'strike' => 'स्ट्राइकथ्रु', - 'underline' => 'अन्डरलाइन', - 'undo' => 'पूर्ववत गर्नुहोस्', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'सिर्जना गर्नुहोस्', - - 'actions' => [ - - 'create' => [ - 'label' => 'सिर्जना गर्नुहोस्', - ], - - 'create_another' => [ - 'label' => 'बनाउनुहोस् र अर्को सिर्जना गर्नुहोस्', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'सम्पादन गर्नुहोस्', - - 'actions' => [ - - 'save' => [ - 'label' => 'सुरक्षित गर्नुहोस', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'हो', - 'false' => 'होईन', - ], - - 'loading_message' => 'लोड गर्दै...', - - 'max_items_message' => ':count वस्तुहरू मात्र चयन गर्न सकिन्छ।', - - 'no_search_results_message' => 'कुनै पनि विकल्प तपाईंको खोजसँग मेल खाँदैन।', - - 'placeholder' => 'एक विकल्प चयन गर्नुहोस्', - - 'searching_message' => 'खोज्दै...', - - 'search_prompt' => 'खोज्न टाइप गर्न सुरु गर्नुहोस्...', - - ], - - 'tags_input' => [ - 'placeholder' => 'नयाँ ट्याग', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'पछाडि', - ], - - 'next_step' => [ - 'label' => 'अर्को', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/pl/components.php b/vendor/filament/forms/resources/lang/pl/components.php deleted file mode 100644 index b9fdbd4a..00000000 --- a/vendor/filament/forms/resources/lang/pl/components.php +++ /dev/null @@ -1,416 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Duplikuj', - ], - - 'add' => [ - 'label' => 'Dodaj do :label', - ], - - 'add_between' => [ - 'label' => 'Wstaw', - ], - - 'delete' => [ - 'label' => 'Usuń', - ], - - 'reorder' => [ - 'label' => 'Przesuń', - ], - - 'move_down' => [ - 'label' => 'Przesuń w dół', - ], - - 'move_up' => [ - 'label' => 'Przesuń w górę', - ], - - 'collapse' => [ - 'label' => 'Zwiń', - ], - - 'expand' => [ - 'label' => 'Rozwiń', - ], - - 'collapse_all' => [ - 'label' => 'Zwiń wszystko', - ], - - 'expand_all' => [ - 'label' => 'Rozwiń wszystko', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Odznacz wszystkie', - ], - - 'select_all' => [ - 'label' => 'Zaznacz wszystkie', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Anuluj', - ], - - 'drag_crop' => [ - 'label' => 'Tryb przeciągania "przytnij"', - ], - - 'drag_move' => [ - 'label' => 'Tryb przeciągania "przenieś"', - ], - - 'flip_horizontal' => [ - 'label' => 'Odwróć obraz poziomo', - ], - - 'flip_vertical' => [ - 'label' => 'Odwróć obraz pionowp', - ], - - 'move_down' => [ - 'label' => 'Przenieś obraz w dół', - ], - - 'move_left' => [ - 'label' => 'Przenieś obraz w lewo', - ], - - 'move_right' => [ - 'label' => 'Przenieś obraz w prawo', - ], - - 'move_up' => [ - 'label' => 'Przenieś obraz w górę', - ], - - 'reset' => [ - 'label' => 'Zresetuj', - ], - - 'rotate_left' => [ - 'label' => 'Obróć obraz w lewo', - ], - - 'rotate_right' => [ - 'label' => 'Obróć obraz w prawo', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Zmień proporcje na :ratio', - ], - - 'save' => [ - 'label' => 'Zapisz', - ], - - 'zoom_100' => [ - 'label' => 'Przybliż obraz do 100%', - ], - - 'zoom_in' => [ - 'label' => 'Przybliż', - ], - - 'zoom_out' => [ - 'label' => 'Oddal', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Wysokość', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Obrót', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => 'Szerokość', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Proporcje', - - 'no_fixed' => [ - 'label' => 'Dowolnie', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Dodaj wiersz', - ], - - 'delete' => [ - 'label' => 'Usuń wiersz', - ], - - 'reorder' => [ - 'label' => 'Przenieś wiersz', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Klucz', - ], - - 'value' => [ - 'label' => 'Wartość', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Dołącz pliki', - 'blockquote' => 'Cytat blokowy', - 'bold' => 'Pogrubienie', - 'bullet_list' => 'Lista punktowana', - 'code_block' => 'Blok kodu', - 'heading' => 'Nagłówek', - 'italic' => 'Kursywa', - 'link' => 'Adres', - 'ordered_list' => 'Lista numerowana', - 'redo' => 'Ponów', - 'strike' => 'Przekreślenie', - 'table' => 'Tabela', - 'undo' => 'Cofnij', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Dodaj do :label', - ], - - 'delete' => [ - 'label' => 'Usuń', - ], - - 'clone' => [ - 'label' => 'Duplikuj', - ], - - 'reorder' => [ - 'label' => 'Przesuń', - ], - - 'move_down' => [ - 'label' => 'Przesuń w dół', - ], - - 'move_up' => [ - 'label' => 'Przesuń w górę', - ], - - 'collapse' => [ - 'label' => 'Zwiń', - ], - - 'expand' => [ - 'label' => 'Rozwiń', - ], - - 'collapse_all' => [ - 'label' => 'Zwiń wszystko', - ], - - 'expand_all' => [ - 'label' => 'Rozwiń wszystko', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Linkuj', - 'unlink' => 'Usuń link', - ], - - 'label' => 'URL', - - 'placeholder' => 'Wprowadź URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Dołącz pliki', - 'blockquote' => 'Cytat', - 'bold' => 'Pogrubienie', - 'bullet_list' => 'Lista punktowana', - 'code_block' => 'Blok kodu', - 'h1' => 'Tytuł', - 'h2' => 'Nagłówek', - 'h3' => 'Podtytuł', - 'italic' => 'Kursywa', - 'link' => 'Adres', - 'ordered_list' => 'Lista numerowana', - 'redo' => 'Ponów', - 'strike' => 'Przekreślenie', - 'underline' => 'Podkreślenie', - 'undo' => 'Cofnij', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Utwórz', - - 'actions' => [ - - 'create' => [ - 'label' => 'Utwórz', - ], - - 'create_another' => [ - 'label' => 'Utwórz i utwórz kolejny', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Edytuj', - - 'actions' => [ - - 'save' => [ - 'label' => 'Zapisz', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Tak', - 'false' => 'Nie', - ], - - 'loading_message' => 'Wczytywanie...', - - 'max_items_message' => 'Można wybrać tylko :count elementów.', - - 'no_search_results_message' => 'Żadne wyniki nie pasują do Twojego wyszukiwania.', - - 'placeholder' => 'Wybierz z listy', - - 'searching_message' => 'Szukanie...', - - 'search_prompt' => 'Zacznij pisać aby wyszukać...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Nowy tag', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Poprzedni', - ], - - 'next_step' => [ - 'label' => 'Następny', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/pt_BR/components.php b/vendor/filament/forms/resources/lang/pt_BR/components.php deleted file mode 100644 index 0533d94c..00000000 --- a/vendor/filament/forms/resources/lang/pt_BR/components.php +++ /dev/null @@ -1,463 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Clonar', - ], - - 'add' => [ - 'label' => 'Adicionar em :label', - ], - - 'add_between' => [ - 'label' => 'Inserir', - ], - - 'delete' => [ - 'label' => 'Excluir', - ], - - 'reorder' => [ - 'label' => 'Mover', - ], - - 'move_down' => [ - 'label' => 'Mover para baixo', - ], - - 'move_up' => [ - 'label' => 'Mover para cima', - ], - - 'collapse' => [ - 'label' => 'Recolher', - ], - - 'expand' => [ - 'label' => 'Expandir', - ], - - 'collapse_all' => [ - 'label' => 'Recolher todos', - ], - - 'expand_all' => [ - 'label' => 'Expandir todos', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Desmarcar todos', - ], - - 'select_all' => [ - 'label' => 'Marcar todos', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancelar', - ], - - 'drag_crop' => [ - 'label' => 'Modo de arrastar "cortar"', - ], - - 'drag_move' => [ - 'label' => 'Modo de arrastar "mover"', - ], - - 'flip_horizontal' => [ - 'label' => 'Inverter imagem horizontalmente', - ], - - 'flip_vertical' => [ - 'label' => 'Inverter imagem verticalmente', - ], - - 'move_down' => [ - 'label' => 'Mover imagem para baixo', - ], - - 'move_left' => [ - 'label' => 'Mover imagem para esquerda', - ], - - 'move_right' => [ - 'label' => 'Mover imagem para direita', - ], - - 'move_up' => [ - 'label' => 'Mover imagem para cima', - ], - - 'reset' => [ - 'label' => 'Limpar', - ], - - 'rotate_left' => [ - 'label' => 'Rotacionar imagem para esquerda', - ], - - 'rotate_right' => [ - 'label' => 'Rotacionar imagem para direita', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Definir proporção para :ratio', - ], - - 'save' => [ - 'label' => 'Salvar', - ], - - 'zoom_100' => [ - 'label' => 'Ampliar imagem para 100%', - ], - - 'zoom_in' => [ - 'label' => 'Mais zoom', - ], - - 'zoom_out' => [ - 'label' => 'Menos zoom', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Altura', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rotação', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => 'Largura', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Proporções', - - 'no_fixed' => [ - 'label' => 'Livre', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'Não é recomendado editar arquivos SVG, pois pode resultar em perda de qualidade ao dimensionar.\n Você tem certeza de que deseja continuar?', - 'disabled' => 'A edição de arquivos SVG está desativada, pois pode resultar em perda de qualidade ao dimensionar.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Adicionar linha', - ], - - 'delete' => [ - 'label' => 'Excluir linha', - ], - - 'reorder' => [ - 'label' => 'Reordenar linha', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Chave', - ], - - 'value' => [ - 'label' => 'Valor', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Anexar arquivos', - 'blockquote' => 'Bloco de citação', - 'bold' => 'Negrito', - 'bullet_list' => 'Lista com marcadores', - 'code_block' => 'Bloco de código', - 'heading' => 'Título', - 'italic' => 'Itálico', - 'link' => 'Link', - 'ordered_list' => 'Lista ordenada', - 'redo' => 'Refazer', - 'strike' => 'Tachado', - 'table' => 'Tabela', - 'undo' => 'Desfazer', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'Sim', - 'false' => 'Não', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Adicionar em :label', - ], - - 'add_between' => [ - 'label' => 'Inserir', - ], - - 'delete' => [ - 'label' => 'Excluir', - ], - - 'clone' => [ - 'label' => 'Clonar', - ], - - 'reorder' => [ - 'label' => 'Mover', - ], - - 'move_down' => [ - 'label' => 'Mover para baixo', - ], - - 'move_up' => [ - 'label' => 'Mover para cima', - ], - - 'collapse' => [ - 'label' => 'Recolher', - ], - - 'expand' => [ - 'label' => 'Expandir', - ], - - 'collapse_all' => [ - 'label' => 'Recolher todos', - ], - - 'expand_all' => [ - 'label' => 'Expandir todos', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Link', - 'unlink' => 'Remover link', - ], - - 'label' => 'URL', - - 'placeholder' => 'Digite uma URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Anexar arquivos', - 'blockquote' => 'Bloco de citação', - 'bold' => 'Negrito', - 'bullet_list' => 'Lista com marcadores', - 'code_block' => 'Bloco de código', - 'h1' => 'Título', - 'h2' => 'Cabeçalho', - 'h3' => 'Subtítulo', - 'italic' => 'Itálico', - 'link' => 'Link', - 'ordered_list' => 'Lista ordenada', - 'redo' => 'Refazer', - 'strike' => 'Tachado', - 'underline' => 'Sublinhado', - 'undo' => 'Desfazer', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Criar', - - 'actions' => [ - - 'create' => [ - 'label' => 'Criar', - ], - - 'create_another' => [ - 'label' => 'Salvar e criar outro', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Editar', - - 'actions' => [ - - 'save' => [ - 'label' => 'Salvar', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Sim', - 'false' => 'Não', - ], - - 'loading_message' => 'Carregando...', - - 'max_items_message' => 'Apenas :count item pode ser selecionado.|Apenas :count itens podem ser selecionados.', - - 'no_search_results_message' => 'Nenhuma opção corresponde à sua pesquisa.', - - 'placeholder' => 'Selecione uma opção', - - 'searching_message' => 'Pesquisando...', - - 'search_prompt' => 'Comece a digitar para pesquisar...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Nova tag', - ], - - 'text_input' => [ - - 'actions' => [ - - 'hide_password' => [ - 'label' => 'Esconder senha', - ], - - 'show_password' => [ - 'label' => 'Mostrar senha', - ], - - ], - - ], - - 'toggle_buttons' => [ - - 'boolean' => [ - 'true' => 'Sim', - 'false' => 'Não', - ], - - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Voltar', - ], - - 'next_step' => [ - 'label' => 'Próximo', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/pt_BR/validation.php b/vendor/filament/forms/resources/lang/pt_BR/validation.php deleted file mode 100644 index f63ede7f..00000000 --- a/vendor/filament/forms/resources/lang/pt_BR/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'Pelo menos um campo :attribute deve ser selecionado.', - 'only_one_must_be_selected' => 'Apenas um campo :attribute deve ser selecionado.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/pt_PT/components.php b/vendor/filament/forms/resources/lang/pt_PT/components.php deleted file mode 100644 index 1c8daf41..00000000 --- a/vendor/filament/forms/resources/lang/pt_PT/components.php +++ /dev/null @@ -1,463 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Clonar', - ], - - 'add' => [ - 'label' => 'Adicionar a :label', - ], - - 'add_between' => [ - 'label' => 'Adicionar entre blocos', - ], - - 'delete' => [ - 'label' => 'Eliminar', - ], - - 'reorder' => [ - 'label' => 'Mover', - ], - - 'move_down' => [ - 'label' => 'Mover para baixo', - ], - - 'move_up' => [ - 'label' => 'Mover para cima', - ], - - 'collapse' => [ - 'label' => 'Recolher', - ], - - 'expand' => [ - 'label' => 'Expandir', - ], - - 'collapse_all' => [ - 'label' => 'Recolher todos', - ], - - 'expand_all' => [ - 'label' => 'Expandir todos', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Desmarcar todos', - ], - - 'select_all' => [ - 'label' => 'Marcar todos', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Cancelar', - ], - - 'drag_crop' => [ - 'label' => 'Modo de arrastar "cortar"', - ], - - 'drag_move' => [ - 'label' => 'Modo de arrastar "mover"', - ], - - 'flip_horizontal' => [ - 'label' => 'Inverter imagem horizontalmente', - ], - - 'flip_vertical' => [ - 'label' => 'Inverter imagem verticalmente', - ], - - 'move_down' => [ - 'label' => 'Mover imagem para baixo', - ], - - 'move_left' => [ - 'label' => 'Mover imagem para a esquerda', - ], - - 'move_right' => [ - 'label' => 'Mover imagem para a direita', - ], - - 'move_up' => [ - 'label' => 'Mover imagem para cima', - ], - - 'reset' => [ - 'label' => 'Repôr', - ], - - 'rotate_left' => [ - 'label' => 'Rodar imagem para a esquerda', - ], - - 'rotate_right' => [ - 'label' => 'Rodar imagem para a direita', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Definir proporção para :ratio', - ], - - 'save' => [ - 'label' => 'Guardar', - ], - - 'zoom_100' => [ - 'label' => 'Ampliar imagem para 100%', - ], - - 'zoom_in' => [ - 'label' => 'Mais zoom', - ], - - 'zoom_out' => [ - 'label' => 'Menos zoom', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Altura', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rotação', - 'unit' => 'graus', - ], - - 'width' => [ - 'label' => 'Largura', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Proporções', - - 'no_fixed' => [ - 'label' => 'Livre', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'Não é recomendado editar ficheiros SVG, pois pode resultar em perda de qualidade ao redimensionar.\n Tem a certeza de que deseja prosseguir?', - 'disabled' => 'A edição de ficheiros SVG está desativada, pois pode resultar em perda de qualidade ao redimensionar.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Adicionar linha', - ], - - 'delete' => [ - 'label' => 'Eliminar linha', - ], - - 'reorder' => [ - 'label' => 'Reordenar linha', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Chave', - ], - - 'value' => [ - 'label' => 'Valor', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Anexar ficheiros', - 'blockquote' => 'Bloco de citação', - 'bold' => 'Negrito', - 'bullet_list' => 'Lista', - 'code_block' => 'Bloco de código', - 'heading' => 'Cabeçalho', - 'italic' => 'Itálico', - 'link' => 'Hiperligação', - 'ordered_list' => 'Lista numerada', - 'redo' => 'Refazer', - 'strike' => 'Rasurado', - 'table' => 'Tabela', - 'undo' => 'Desfazer', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'Sim', - 'false' => 'Não', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Adicionar a :label', - ], - - 'add_between' => [ - 'label' => 'Adicionar entre', - ], - - 'delete' => [ - 'label' => 'Eliminar', - ], - - 'clone' => [ - 'label' => 'Clonar', - ], - - 'reorder' => [ - 'label' => 'Mover', - ], - - 'move_down' => [ - 'label' => 'Mover para baixo', - ], - - 'move_up' => [ - 'label' => 'Mover para cima', - ], - - 'collapse' => [ - 'label' => 'Recolher', - ], - - 'expand' => [ - 'label' => 'Expandir', - ], - - 'collapse_all' => [ - 'label' => 'Recolher todos', - ], - - 'expand_all' => [ - 'label' => 'Expandir todos', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Ligação', - 'unlink' => 'Remover ligação', - ], - - 'label' => 'URL', - - 'placeholder' => 'Indique uma URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Anexar ficheiros', - 'blockquote' => 'Bloco de citação', - 'bold' => 'Negrito', - 'bullet_list' => 'Lista', - 'code_block' => 'Bloco de código', - 'h1' => 'Título', - 'h2' => 'Cabeçalho', - 'h3' => 'Subtítulo', - 'italic' => 'Itálico', - 'link' => 'Hiperligação', - 'ordered_list' => 'Lista numerada', - 'redo' => 'Refazer', - 'strike' => 'Rasurado', - 'underline' => 'Sublinhado', - 'undo' => 'Desfazer', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Criar', - - 'actions' => [ - - 'create' => [ - 'label' => 'Criar', - ], - - 'create_another' => [ - 'label' => 'Criar e criar outro', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Editar', - - 'actions' => [ - - 'save' => [ - 'label' => 'Guardar', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Sim', - 'false' => 'Não', - ], - - 'loading_message' => 'A carregar...', - - 'max_items_message' => 'Apenas :count item pode ser seleccionado.|Apenas :count itens podem ser seleccionados.', - - 'no_search_results_message' => 'Nenhuma opção corresponde à sua pesquisa.', - - 'placeholder' => 'Seleccione uma opção', - - 'searching_message' => 'A pesquisar...', - - 'search_prompt' => 'Comece a escrever para pesquisar...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Nova etiqueta', - ], - - 'text_input' => [ - - 'actions' => [ - - 'hide_password' => [ - 'label' => 'Esconder palavra-passe', - ], - - 'show_password' => [ - 'label' => 'Mostrar palavra-passe', - ], - - ], - - ], - - 'toggle_buttons' => [ - - 'boolean' => [ - 'true' => 'Sim', - 'false' => 'Não', - ], - - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Voltar', - ], - - 'next_step' => [ - 'label' => 'Próximo', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/pt_PT/validation.php b/vendor/filament/forms/resources/lang/pt_PT/validation.php deleted file mode 100644 index 2331c35c..00000000 --- a/vendor/filament/forms/resources/lang/pt_PT/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'Deve ser seleccionado, no mínimo, um campo :attribute.', - 'only_one_must_be_selected' => 'Apenas um campo :attribute deve ser seleccionado.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/ro/components.php b/vendor/filament/forms/resources/lang/ro/components.php deleted file mode 100644 index 4e50f8c6..00000000 --- a/vendor/filament/forms/resources/lang/ro/components.php +++ /dev/null @@ -1,462 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Clonează', - ], - - 'add' => [ - 'label' => 'Adăugare la :label', - ], - - 'add_between' => [ - 'label' => 'Inserează', - ], - - 'delete' => [ - 'label' => 'Ștergere', - ], - - 'reorder' => [ - 'label' => 'Mutare', - ], - - 'move_down' => [ - 'label' => 'Mutare în jos', - ], - - 'move_up' => [ - 'label' => 'Mutare în sus', - ], - - 'collapse' => [ - 'label' => 'Comprimare', - ], - - 'expand' => [ - 'label' => 'Expandare', - ], - - 'collapse_all' => [ - 'label' => 'Comprimare toate', - ], - - 'expand_all' => [ - 'label' => 'Expandare toate', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Deselectează toate', - ], - - 'select_all' => [ - 'label' => 'Selectează toate', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Anulare', - ], - - 'drag_crop' => [ - 'label' => 'Mod de glisare "crop"', - ], - - 'drag_move' => [ - 'label' => 'Mod de glisare "move"', - ], - - 'flip_horizontal' => [ - 'label' => 'Întoarce imaginea pe orizontală', - ], - - 'flip_vertical' => [ - 'label' => 'Întoarce imaginea pe verticală', - ], - - 'move_down' => [ - 'label' => 'Mută imaginea mai jos', - ], - - 'move_left' => [ - 'label' => 'Mută imaginea in stânga', - ], - - 'move_right' => [ - 'label' => 'Mută imaginea in dreapta', - ], - - 'move_up' => [ - 'label' => 'Mută imaginea mai sus', - ], - - 'reset' => [ - 'label' => 'Reset', - ], - - 'rotate_left' => [ - 'label' => 'Rotește imaginea spre stânga', - ], - - 'rotate_right' => [ - 'label' => 'Rotește imaginea spre dreapta', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Setează raportul de aspect la :ratio', - ], - - 'save' => [ - 'label' => 'Salvare', - ], - - 'zoom_100' => [ - 'label' => 'Mărește imaginea la 100%', - ], - - 'zoom_in' => [ - 'label' => 'Mărește', - ], - - 'zoom_out' => [ - 'label' => 'Micșorează', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Înălțime', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rotire', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => 'Lățime', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Rapoarte de aspect', - - 'no_fixed' => [ - 'label' => 'Liber', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'Modificarea fișierelor de tip SVG nu este recomandată deoarece poate cauza în pierderea calității în procesul de schimbare a dimensiunii.\n Sunteți sigur că doriți să continuați?', - 'disabled' => 'Editarea fișierelor de tip SVG este dezactivată deoarece poate cauza în pierderea calității în procesul de schimbare a dimensiunii.', - ], - - ], - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Adăugare linie', - ], - - 'delete' => [ - 'label' => 'Ștergere linie', - ], - - 'reorder' => [ - 'label' => 'Reordonare rând', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Cheie', - ], - - 'value' => [ - 'label' => 'Valoare', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Atașare fișiere', - 'blockquote' => 'Citat', - 'bold' => 'Îngroșat', - 'bullet_list' => 'Listă cu puncte', - 'code_block' => 'Bloc de cod', - 'heading' => 'Titlu', - 'italic' => 'Cursiv', - 'link' => 'Link', - 'ordered_list' => 'Listă ordonată', - 'redo' => 'Refă', - 'strike' => 'Tăiat', - 'table' => 'Tabel', - 'undo' => 'Anulează', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'Da', - 'false' => 'Nu', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Adăugare la :label', - ], - - 'add_between' => [ - 'label' => 'Inserează', - ], - - 'delete' => [ - 'label' => 'Ștergere', - ], - - 'clone' => [ - 'label' => 'Clonează', - ], - - 'reorder' => [ - 'label' => 'Mutare', - ], - - 'move_down' => [ - 'label' => 'Mutare în jos', - ], - - 'move_up' => [ - 'label' => 'Mutare în sus', - ], - - 'collapse' => [ - 'label' => 'Comprimare', - ], - - 'expand' => [ - 'label' => 'Expandare', - ], - - 'collapse_all' => [ - 'label' => 'Comprimare toate', - ], - - 'expand_all' => [ - 'label' => 'Expandare toate', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Link', - 'unlink' => 'Unlink', - ], - - 'label' => 'URL', - - 'placeholder' => 'Introduceți URL-ul', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Atașare fișiere', - 'blockquote' => 'Citat', - 'bold' => 'Îngroșat', - 'bullet_list' => 'Listă cu puncte', - 'code_block' => 'Bloc de cod', - 'h1' => 'Titlu 1', - 'h2' => 'Titlu 2', - 'h3' => 'Titlu 3', - 'italic' => 'Cursiv', - 'link' => 'Link', - 'ordered_list' => 'Listă ordonată', - 'redo' => 'Refă', - 'strike' => 'Tăiat', - 'underline' => 'Subliniat', - 'undo' => 'Anulează', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Adăugare opțiune', - - 'actions' => [ - - 'create' => [ - 'label' => 'Adăugare', - ], - - 'create_another' => [ - 'label' => 'Creați și creați altul', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Editare', - - 'actions' => [ - - 'save' => [ - 'label' => 'Salvare', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Da', - 'false' => 'Nu', - ], - - 'loading_message' => 'Se încarcă...', - - 'max_items_message' => 'Doar :count elemente pot fi selectate.', - - 'no_search_results_message' => 'Nu s-a găsit nimic.', - - 'placeholder' => 'Selectați o opțiune', - - 'searching_message' => 'Căutare...', - - 'search_prompt' => 'Începeți să tastați pentru a căuta', - - ], - - 'tags_input' => [ - 'placeholder' => 'Adăugați tag-uri', - ], - - 'text_input' => [ - - 'actions' => [ - - 'hide_password' => [ - 'label' => 'Ascunde parola', - ], - - 'show_password' => [ - 'label' => 'Afișează parola', - ], - - ], - - ], - - 'toggle_buttons' => [ - - 'boolean' => [ - 'true' => 'Da', - 'false' => 'Nu', - ], - - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Pasul anterior', - ], - - 'next_step' => [ - 'label' => 'Pasul următor', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/ro/validation.php b/vendor/filament/forms/resources/lang/ro/validation.php deleted file mode 100644 index 844eefff..00000000 --- a/vendor/filament/forms/resources/lang/ro/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'Trebuie selectat cel puțin un element :attribute.', - 'only_one_must_be_selected' => 'Trebuie selectat doar un element :attribute.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/ru/components.php b/vendor/filament/forms/resources/lang/ru/components.php deleted file mode 100644 index 8ecebd99..00000000 --- a/vendor/filament/forms/resources/lang/ru/components.php +++ /dev/null @@ -1,426 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Дублировать', - ], - - 'add' => [ - 'label' => 'Добавить к :label', - ], - - 'add_between' => [ - 'label' => 'Вставить между', - ], - - 'delete' => [ - 'label' => 'Удалить', - ], - - 'reorder' => [ - 'label' => 'Переместить', - ], - - 'move_down' => [ - 'label' => 'Переместить вниз', - ], - - 'move_up' => [ - 'label' => 'Переместить вверх', - ], - - 'collapse' => [ - 'label' => 'Свернуть', - ], - - 'expand' => [ - 'label' => 'Развернуть', - ], - - 'collapse_all' => [ - 'label' => 'Свернуть все', - ], - - 'expand_all' => [ - 'label' => 'Развернуть все', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Снять выделение', - ], - - 'select_all' => [ - 'label' => 'Выделить все', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Отмена', - ], - - 'drag_crop' => [ - 'label' => 'Режим "кадрирование"', - ], - - 'drag_move' => [ - 'label' => 'Режим "перемещение"', - ], - - 'flip_horizontal' => [ - 'label' => 'Отразить по горизонтали', - ], - - 'flip_vertical' => [ - 'label' => 'Отразить по вертикали', - ], - - 'move_down' => [ - 'label' => 'Переместить вниз', - ], - - 'move_left' => [ - 'label' => 'Переместить влево', - ], - - 'move_right' => [ - 'label' => 'Переместить вправо', - ], - - 'move_up' => [ - 'label' => 'Переместить вверх', - ], - - 'reset' => [ - 'label' => 'Сбросить', - ], - - 'rotate_left' => [ - 'label' => 'Повернуть влево', - ], - - 'rotate_right' => [ - 'label' => 'Повернуть вправо', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Соотношение сторон :ratio', - ], - - 'save' => [ - 'label' => 'Сохранить', - ], - - 'zoom_100' => [ - 'label' => 'Увеличить до 100%', - ], - - 'zoom_in' => [ - 'label' => 'Увеличить', - ], - - 'zoom_out' => [ - 'label' => 'Уменьшить', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Высота', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Вращение', - 'unit' => 'град', - ], - - 'width' => [ - 'label' => 'Ширина', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Соотношения сторон', - - 'no_fixed' => [ - 'label' => 'Свободное', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'Не рекомендуется редактировать SVG-файлы, поскольку при масштабировании может быть потеряно качество.\n Уверены, что хотите продолжить?', - 'disabled' => 'Редактирование SVG-файлов заблокировано, поскольку при масштабировании может быть потеряно качество.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Добавить строку', - ], - - 'delete' => [ - 'label' => 'Удалить строку', - ], - 'reorder' => [ - 'label' => 'Переместить строку', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Ключ', - ], - - 'value' => [ - 'label' => 'Значение', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Прикрепить файлы', - 'blockquote' => 'Цитата', - 'bold' => 'Жирный', - 'bullet_list' => 'Маркировочный список', - 'code_block' => 'Код', - 'heading' => 'Заголовок', - 'italic' => 'Курсив', - 'link' => 'Ссылка', - 'ordered_list' => 'Нумерованный список', - 'redo' => 'Вернуть', - 'strike' => 'Зачеркнутый', - 'table' => 'Таблица', - 'undo' => 'Отменить', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Добавить к :label', - ], - - 'add_between' => [ - 'label' => 'Добавить между', - ], - - 'delete' => [ - 'label' => 'Удалить', - ], - - 'clone' => [ - 'label' => 'Дублировать', - ], - - 'reorder' => [ - 'label' => 'Переместить', - ], - - 'move_down' => [ - 'label' => 'Переместить вниз', - ], - - 'move_up' => [ - 'label' => 'Переместить вверх', - ], - - 'collapse' => [ - 'label' => 'Свернуть', - ], - - 'expand' => [ - 'label' => 'Развернуть', - ], - - 'collapse_all' => [ - 'label' => 'Свернуть все', - ], - - 'expand_all' => [ - 'label' => 'Развернуть все', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Ссылка', - 'unlink' => 'Убрать ссылку', - ], - - 'label' => 'URL', - - 'placeholder' => 'Введите URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Прикрепить файлы', - 'blockquote' => 'Цитата', - 'bold' => 'Жирный', - 'bullet_list' => 'Маркировочный список', - 'code_block' => 'Код', - 'h1' => 'Название', - 'h2' => 'Заголовок', - 'h3' => 'Подзаголовок', - 'italic' => 'Курсив', - 'link' => 'Ссылка', - 'ordered_list' => 'Нумерованный список', - 'redo' => 'Повторить', - 'strike' => 'Зачеркнутый', - 'underline' => 'Подчеркнутый', - 'undo' => 'Отменить', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Создать', - - 'actions' => [ - - 'create' => [ - 'label' => 'Создать', - ], - 'create_another' => [ - 'label' => 'Создать еще один', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Изменить', - - 'actions' => [ - - 'save' => [ - 'label' => 'Сохранить', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Да', - 'false' => 'Нет', - ], - - 'loading_message' => 'Загрузка...', - - 'max_items_message' => 'Только :count можно выбрать.', - - 'no_search_results_message' => 'Нет вариантов, соответствующих вашему запросу.', - - 'placeholder' => 'Выбрать вариант', - - 'searching_message' => 'Поиск...', - - 'search_prompt' => 'Введите текст для поиска...', - ], - - 'tags_input' => [ - 'placeholder' => 'Новый тег', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Назад', - ], - - 'next_step' => [ - 'label' => 'Далее', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/sk/components.php b/vendor/filament/forms/resources/lang/sk/components.php deleted file mode 100644 index 613d23c3..00000000 --- a/vendor/filament/forms/resources/lang/sk/components.php +++ /dev/null @@ -1,429 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Duplikovať', - ], - - 'add' => [ - 'label' => 'Pridať do :label', - ], - - 'add_between' => [ - 'label' => 'Pridať medzi bloky', - ], - - 'delete' => [ - 'label' => 'Odstrániť', - ], - - 'reorder' => [ - 'label' => 'Presunúť', - ], - - 'move_down' => [ - 'label' => 'Presunúť dole', - ], - - 'move_up' => [ - 'label' => 'Presunúť hore', - ], - - 'collapse' => [ - 'label' => 'Zabaliť', - ], - - 'expand' => [ - 'label' => 'Rozbaliť', - ], - - 'collapse_all' => [ - 'label' => 'Zbaliť všetko', - ], - - 'expand_all' => [ - 'label' => 'Rozbaliť všetko', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Odznačiť všetko', - ], - - 'select_all' => [ - 'label' => 'Označiť všetko', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Zrušiť', - ], - - 'drag_crop' => [ - 'label' => 'Ťahaním orezať (crop)', - ], - - 'drag_move' => [ - 'label' => 'Ťahaním posunúť (move)', - ], - - 'flip_horizontal' => [ - 'label' => 'Prevrátiť obrázok vodorovne', - ], - - 'flip_vertical' => [ - 'label' => 'Otočiť obrázok vertikálne', - ], - - 'move_down' => [ - 'label' => 'Presunúť obrázok dole', - ], - - 'move_left' => [ - 'label' => 'Presunúť obrázok doľava', - ], - - 'move_right' => [ - 'label' => 'Presunúť obrázok doprava', - ], - - 'move_up' => [ - 'label' => 'Presunúť obrázok hore', - ], - - 'reset' => [ - 'label' => 'Resetovať', - ], - - 'rotate_left' => [ - 'label' => 'Otočiť obrázok doľava', - ], - - 'rotate_right' => [ - 'label' => 'Otočiť obrázok doprava', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Nastaviť pomer strán na :ratio', - ], - - 'save' => [ - 'label' => 'Uložiť', - ], - - 'zoom_100' => [ - 'label' => 'Priblížiť obrázok na 100%', - ], - - 'zoom_in' => [ - 'label' => 'Priblížiť', - ], - - 'zoom_out' => [ - 'label' => 'Oddiaľiť', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Výška', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rotácia', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => 'Šírka', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Pomery strán', - - 'no_fixed' => [ - 'label' => 'Voľne', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'Úprava SVG obrázkov nie je odporúčaná, pretože zmena veľkosti môže znížiť kvalitu.\n Naozaj chcete pokračovať?', - 'disabled' => 'Úprava SVG obrázkov nie je dostupná, pretože zmena veľkosti môže znížiť kvalitu.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Pridať riadok', - ], - - 'delete' => [ - 'label' => 'Odstrániť riadok', - ], - - 'reorder' => [ - 'label' => 'Presunúť riadok', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Kľúč', - ], - - 'value' => [ - 'label' => 'Hodnota', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Pripojiť súbory', - 'blockquote' => 'Citát', - 'bold' => 'Tučné písmo', - 'bullet_list' => 'Odrážkový zoznam', - 'code_block' => 'Blok kódu', - 'heading' => 'Nadpis', - 'italic' => 'Kurzíva', - 'link' => 'Odkaz', - 'ordered_list' => 'Číslovaný zoznam', - 'redo' => 'Prerobenie', - 'strike' => 'Prečiarknutie', - 'table' => 'Tabuľka', - 'undo' => 'Späť', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Pridať do :label', - ], - - 'add_between' => [ - 'label' => 'Vložiť medzi', - ], - - 'delete' => [ - 'label' => 'Odstrániť', - ], - - 'clone' => [ - 'label' => 'Duplikovať', - ], - - 'reorder' => [ - 'label' => 'Presunúť', - ], - - 'move_down' => [ - 'label' => 'Presunúť dole', - ], - - 'move_up' => [ - 'label' => 'Presunúť hore', - ], - - 'collapse' => [ - 'label' => 'Zabaliť', - ], - - 'expand' => [ - 'label' => 'Rozbaliť', - ], - - 'collapse_all' => [ - 'label' => 'Zabaliť všetko', - ], - - 'expand_all' => [ - 'label' => 'Rozbaliť všetko', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Pridať odkaz', - 'unlink' => 'Zrušiť odkaz', - ], - - 'label' => 'URL adresa', - - 'placeholder' => 'Zdajte adresu URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Pripojiť súbory', - 'blockquote' => 'Citát', - 'bold' => 'Tučné písmo', - 'bullet_list' => 'Odrážkový zoznam', - 'code_block' => 'Blok kódu', - 'h1' => 'Názov', - 'h2' => 'Nadpis', - 'h3' => 'Podnadpis', - 'italic' => 'Kurzíva', - 'link' => 'Odkaz', - 'ordered_list' => 'Číslovaný zoznam', - 'redo' => 'Prerobiť', - 'strike' => 'Prečiarknutie', - 'underline' => 'Podčiarknutie', - 'undo' => 'Späť', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Vytvoriť', - - 'actions' => [ - - 'create' => [ - 'label' => 'Vytvoriť', - ], - - 'create_another' => [ - 'label' => 'Vytvoriť & vytvoriť ďalšie', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Upraviť', - - 'actions' => [ - - 'save' => [ - 'label' => 'Uložiť', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Áno', - 'false' => 'Nie', - ], - - 'loading_message' => 'Načítam...', - - 'max_items_message' => 'Maximálny počet pre výber je: :count.', - - 'no_search_results_message' => 'Žiadne možnosti neodpovedajú vášmu hľadaniu.', - - 'placeholder' => 'Vyberte možnosť', - - 'searching_message' => 'Hľadám...', - - 'search_prompt' => 'Začnite písať...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Nová značka', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Spať', - ], - - 'next_step' => [ - 'label' => 'Ďalej', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/sq/components.php b/vendor/filament/forms/resources/lang/sq/components.php deleted file mode 100644 index 3f176e6b..00000000 --- a/vendor/filament/forms/resources/lang/sq/components.php +++ /dev/null @@ -1,416 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Kopjo', - ], - - 'add' => [ - 'label' => 'Shto në :label', - ], - - 'add_between' => [ - 'label' => 'Shto midis blloqeve', - ], - - 'delete' => [ - 'label' => 'Fshi', - ], - - 'reorder' => [ - 'label' => 'Zhvendos', - ], - - 'move_down' => [ - 'label' => 'Zhvendos poshtë', - ], - - 'move_up' => [ - 'label' => 'Zhvendos sipër', - ], - - 'collapse' => [ - 'label' => 'Mbyll', - ], - - 'expand' => [ - 'label' => 'Hap', - ], - - 'collapse_all' => [ - 'label' => 'Mbyll të gjitha', - ], - - 'expand_all' => [ - 'label' => 'Hap të gjitha', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Çzgjidh të gjitha', - ], - - 'select_all' => [ - 'label' => 'Zgjidh të gjitha', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Anulo', - ], - - 'drag_crop' => [ - 'label' => 'Modaliteti i tërheqjes "prerje"', - ], - - 'drag_move' => [ - 'label' => 'Modaliteti i tërheqjes "zhvendos"', - ], - - 'flip_horizontal' => [ - 'label' => 'Kthejeni imazhin horizontal', - ], - - 'flip_vertical' => [ - 'label' => 'Kthejeni imazhin vertikal', - ], - - 'move_down' => [ - 'label' => 'Zhvendos imazhin poshtë', - ], - - 'move_left' => [ - 'label' => 'Zhvendos imazhin majtas', - ], - - 'move_right' => [ - 'label' => 'Zhvendos imazhin djathtas', - ], - - 'move_up' => [ - 'label' => 'Zhvendos imazhin sipër', - ], - - 'reset' => [ - 'label' => 'Rivendos', - ], - - 'rotate_left' => [ - 'label' => 'Rrotulloni imazhin në të majtë', - ], - - 'rotate_right' => [ - 'label' => 'Rrotulloni imazhin në të djathtë', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Cakto raportin e pamjes në :ratio', - ], - - 'save' => [ - 'label' => 'Ruaj', - ], - - 'zoom_100' => [ - 'label' => 'Zmadhoni imazhin në 100%', - ], - - 'zoom_in' => [ - 'label' => 'Zmadhoni', - ], - - 'zoom_out' => [ - 'label' => 'Zvogëloni', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Lartësia', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rrotullimi', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => 'Gjerësia', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Raportet e aspektit', - - 'no_fixed' => [ - 'label' => 'i lirë', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Shto rresht', - ], - - 'delete' => [ - 'label' => 'Fshi rresht', - ], - - 'reorder' => [ - 'label' => 'Renditni përsëri rreshtin', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Çelësi', - ], - - 'value' => [ - 'label' => 'Vlera', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Bashkangjit skedarët', - 'blockquote' => 'Blockquote', - 'bold' => 'i theksuar', - 'bullet_list' => 'Lista me pika', - 'code_block' => 'Blloku i kodit', - 'heading' => 'Titull', - 'italic' => 'I pjerrët', - 'link' => 'Link', - 'ordered_list' => 'Lista e numëruar', - 'redo' => 'Ribëj', - 'strike' => 'I mesvijëzuar', - 'table' => 'Tabela', - 'undo' => 'Zhbëj', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Shto në :label', - ], - - 'delete' => [ - 'label' => 'Fshi', - ], - - 'clone' => [ - 'label' => 'Kopjo', - ], - - 'reorder' => [ - 'label' => 'Zhvendos', - ], - - 'move_down' => [ - 'label' => 'Zhvendos poshtë', - ], - - 'move_up' => [ - 'label' => 'Zhvendos sipër', - ], - - 'collapse' => [ - 'label' => 'Mbyll', - ], - - 'expand' => [ - 'label' => 'Hap', - ], - - 'collapse_all' => [ - 'label' => 'Mbyll të gjitha', - ], - - 'expand_all' => [ - 'label' => 'Hap të gjitha', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Link', - 'unlink' => 'Unlink', - ], - - 'label' => 'URL', - - 'placeholder' => 'Fut një URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Bashkangjit skedarët', - 'blockquote' => 'Blockquote', - 'bold' => 'I theksuar', - 'bullet_list' => 'Lista me pika', - 'code_block' => 'Blloku i kodit', - 'h1' => 'Kryetitull', - 'h2' => 'Titull', - 'h3' => 'Nëntitull', - 'italic' => 'I pjerrët', - 'link' => 'Link', - 'ordered_list' => 'Lista e numëruar', - 'redo' => 'Ribëj', - 'strike' => 'I mesvijëzuar', - 'underline' => 'I nënvizuar', - 'undo' => 'Ribëj', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Krijo', - - 'actions' => [ - - 'create' => [ - 'label' => 'Krijo', - ], - - 'create_another' => [ - 'label' => 'Krijoni dhe krijoni një tjetër', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Modifiko', - - 'actions' => [ - - 'save' => [ - 'label' => 'Ruaj', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Po', - 'false' => 'Jo', - ], - - 'loading_message' => 'Po ngarkohet...', - - 'max_items_message' => 'Mund të zgjidhet vetëm :count.', - - 'no_search_results_message' => 'Asnjë opsion nuk përputhet me kërkimin tuaj.', - - 'placeholder' => 'Zgjidhni një opsion', - - 'searching_message' => 'Duke kërkuar...', - - 'search_prompt' => 'Filloni të shkruani për të kërkuar...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Tag i ri', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Pas', - ], - - 'next_step' => [ - 'label' => 'Para', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/sv/components.php b/vendor/filament/forms/resources/lang/sv/components.php deleted file mode 100644 index 4c58ccf3..00000000 --- a/vendor/filament/forms/resources/lang/sv/components.php +++ /dev/null @@ -1,429 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Klona', - ], - - 'add' => [ - 'label' => 'Lägg till i :label', - ], - - 'add_between' => [ - 'label' => 'Infoga mellan block', - ], - - 'delete' => [ - 'label' => 'Radera', - ], - - 'reorder' => [ - 'label' => 'Flytta', - ], - - 'move_down' => [ - 'label' => 'Flytta ner', - ], - - 'move_up' => [ - 'label' => 'Flytta upp', - ], - - 'collapse' => [ - 'label' => 'Komprimera', - ], - - 'expand' => [ - 'label' => 'Expandera', - ], - - 'collapse_all' => [ - 'label' => 'Komprimera alla', - ], - - 'expand_all' => [ - 'label' => 'Expandera alla', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Avmarkera alla', - ], - - 'select_all' => [ - 'label' => 'Markera alla', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Avbryt', - ], - - 'drag_crop' => [ - 'label' => 'Dragläge "beskär"', - ], - - 'drag_move' => [ - 'label' => 'Dragläge "flytta"', - ], - - 'flip_horizontal' => [ - 'label' => 'Vänd bilden horisontellt', - ], - - 'flip_vertical' => [ - 'label' => 'Vänd bilden vertikalt', - ], - - 'move_down' => [ - 'label' => 'Flytta bilden nedåt', - ], - - 'move_left' => [ - 'label' => 'Flytta bilden åt vänster', - ], - - 'move_right' => [ - 'label' => 'Flytta bilden åt höger', - ], - - 'move_up' => [ - 'label' => 'Flytta bilden uppåt', - ], - - 'reset' => [ - 'label' => 'Återställ', - ], - - 'rotate_left' => [ - 'label' => 'Rotera bilden åt vänster', - ], - - 'rotate_right' => [ - 'label' => 'Rotera bilden åt höger', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Ändra bildformat till :ratio', - ], - - 'save' => [ - 'label' => 'Spara', - ], - - 'zoom_100' => [ - 'label' => 'Zooma bilden till 100%', - ], - - 'zoom_in' => [ - 'label' => 'Zooma in', - ], - - 'zoom_out' => [ - 'label' => 'Zooma ut', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Höjd', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Rotation', - 'unit' => 'grad', - ], - - 'width' => [ - 'label' => 'Bredd', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Bildformat', - - 'no_fixed' => [ - 'label' => 'Fritt', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'Redigering av SVG-filer rekommenderas inte eftersom det tar bort bildens förmåga att skala utan kvalitetsförlust.\n Är du säker på att du vill fortsätta?', - 'disabled' => 'Redigering av SVG-filer är inaktiverat eftersom det tar bort bildens förmåga att skala utan kvalitetsförlust.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Lägg till rad', - ], - - 'delete' => [ - 'label' => 'Ta bort rad', - ], - - 'reorder' => [ - 'label' => 'Ändra ordning på rad', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Namn', - ], - - 'value' => [ - 'label' => 'Värde', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Lägg till filer', - 'blockquote' => 'Citat', - 'bold' => 'Fet', - 'bullet_list' => 'Punktlista', - 'code_block' => 'Kod', - 'heading' => 'Rubrik', - 'italic' => 'Kursiv', - 'link' => 'Länk', - 'ordered_list' => 'Nummerlista', - 'redo' => 'Gör om', - 'strike' => 'Genomstruken', - 'table' => 'Tabell', - 'undo' => 'Ångra', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Lägg till i :label', - ], - - 'add_between' => [ - 'label' => 'Infoga mellan', - ], - - 'delete' => [ - 'label' => 'Radera', - ], - - 'clone' => [ - 'label' => 'Klona', - ], - - 'reorder' => [ - 'label' => 'Flytta', - ], - - 'move_down' => [ - 'label' => 'Flytta ner', - ], - - 'move_up' => [ - 'label' => 'Flytta upp', - ], - - 'collapse' => [ - 'label' => 'Komprimera', - ], - - 'expand' => [ - 'label' => 'Expandera', - ], - - 'collapse_all' => [ - 'label' => 'Komprimera alla', - ], - - 'expand_all' => [ - 'label' => 'Expandera alla', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Länka', - 'unlink' => 'Ta bort länk', - ], - - 'label' => 'URL', - - 'placeholder' => 'Ange en URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Lägg till filer', - 'blockquote' => 'Citat', - 'bold' => 'Fet', - 'bullet_list' => 'Punktlista', - 'code_block' => 'Kod', - 'h1' => 'Titel', - 'h2' => 'Rubrik', - 'h3' => 'Underrubrik', - 'italic' => 'Kursiv', - 'link' => 'Länk', - 'ordered_list' => 'Nummerlista', - 'redo' => 'Gör om', - 'strike' => 'Genomstruken', - 'underline' => 'Understruken', - 'undo' => 'Ångra', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Skapa', - - 'actions' => [ - - 'create' => [ - 'label' => 'Skapa', - ], - - 'create_another' => [ - 'label' => 'Skapa & skapa en till', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Redigera', - - 'actions' => [ - - 'save' => [ - 'label' => 'Spara', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Ja', - 'false' => 'Nej', - ], - - 'loading_message' => 'Laddar...', - - 'max_items_message' => 'Kan endast välja :count st.', - - 'no_search_results_message' => 'Inga alternativ matchar din sökning.', - - 'placeholder' => 'Välj ett alternativ', - - 'searching_message' => 'Söker...', - - 'search_prompt' => 'Börja skriva för att söka...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Ny tagg', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Föregående', - ], - - 'next_step' => [ - 'label' => 'Nästa', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/sw/components.php b/vendor/filament/forms/resources/lang/sw/components.php deleted file mode 100644 index 14073162..00000000 --- a/vendor/filament/forms/resources/lang/sw/components.php +++ /dev/null @@ -1,255 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Iga', - ], - - 'add' => [ - 'label' => 'Ongeza kwenye :label', - ], - - 'add_between' => [ - 'label' => 'Ingiza', - ], - - 'delete' => [ - 'label' => 'Futa', - ], - - 'reorder' => [ - 'label' => 'Hamisha', - ], - - 'move_down' => [ - 'label' => 'Sogeza chini', - ], - - 'move_up' => [ - 'label' => 'Sogeza juu', - ], - - 'collapse' => [ - 'label' => 'Kunja', - ], - - 'expand' => [ - 'label' => 'Kunjua', - ], - - 'collapse_all' => [ - 'label' => 'Kunja zote', - ], - - 'expand_all' => [ - 'label' => 'Kunjua zote', - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Ongeza safu', - ], - - 'delete' => [ - 'label' => 'Futa safu', - ], - - 'reorder' => [ - 'label' => 'Pangilia safu', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Ufunguo', - ], - - 'value' => [ - 'label' => 'Thamani', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Ambatisha faili', - 'bold' => 'Nzito', - 'bullet_list' => 'Orodha ya vitone', - 'code_block' => 'Kizuizi cha msimbo', - 'edit' => 'Hariri', - 'italic' => 'Italiki', - 'link' => 'Kiungo', - 'ordered_list' => 'Orodha yenye nambari', - 'preview' => 'Onyesha awali', - 'strike' => 'Piga kupitia', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Ongeza kwenye :label', - ], - - 'delete' => [ - 'label' => 'Futa', - ], - - 'clone' => [ - 'label' => 'Iga', - ], - - 'reorder' => [ - 'label' => 'Hamisha', - ], - - 'move_down' => [ - 'label' => 'Sogeza chini', - ], - - 'move_up' => [ - 'label' => 'Sogeza juu', - ], - - 'collapse' => [ - 'label' => 'Kunja', - ], - - 'expand' => [ - 'label' => 'Kunjua', - ], - - 'collapse_all' => [ - 'label' => 'Kunja zote', - ], - - 'expand_all' => [ - 'label' => 'Kunjua zote', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Unganisha', - 'unlink' => 'Tenganisha', - ], - - 'label' => 'URL', - - 'placeholder' => 'Ingiza URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Ambatisha faili', - 'blockquote' => 'Nukuu ya kuzuia', - 'bold' => 'Nzito', - 'bullet_list' => 'Orodha ya vitone', - 'code_block' => 'Kizuizi cha msimbo', - 'h1' => 'Kichwa', - 'h2' => 'Kichwa', - 'h3' => 'Kichwa kidogo', - 'italic' => 'Italiki', - 'link' => 'Link', - 'ordered_list' => 'Orodha yenye nambari', - 'redo' => 'Rudia', - 'strike' => 'Piga kupitia', - 'undo' => 'Tendua', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Tengeneza', - - 'actions' => [ - - 'create' => [ - 'label' => 'Tengeneza', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Ndio', - 'false' => 'Hapana', - ], - - 'loading_message' => 'Inapakia...', - - 'max_items_message' => 'Ni :count pekee ndiyo inaweza kuchaguliwa.', - - 'no_search_results_message' => 'Hakuna chaguzi zinazolingana na utafutaji wako.', - - 'placeholder' => 'Chagua chaguo', - - 'searching_message' => 'Inatafuta...', - - 'search_prompt' => 'Anza kuandika ili kufafuta...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Lebo mpya', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Nyuma', - ], - - 'next_step' => [ - 'label' => 'Mbele', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/tr/components.php b/vendor/filament/forms/resources/lang/tr/components.php deleted file mode 100644 index 3dbc94a1..00000000 --- a/vendor/filament/forms/resources/lang/tr/components.php +++ /dev/null @@ -1,416 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Klonla', - ], - - 'add' => [ - 'label' => ':label ekle', - ], - - 'add_between' => [ - 'label' => 'Bloklar arasına ekle', - ], - - 'delete' => [ - 'label' => 'Sil', - ], - - 'reorder' => [ - 'label' => 'Taşı', - ], - - 'move_down' => [ - 'label' => 'Aşağı taşı', - ], - - 'move_up' => [ - 'label' => 'Yukarı taşı', - ], - - 'collapse' => [ - 'label' => 'Küçült', - ], - - 'expand' => [ - 'label' => 'Genişlet', - ], - - 'collapse_all' => [ - 'label' => 'Tümünü küçült', - ], - - 'expand_all' => [ - 'label' => 'Tümünü genişlet', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Tümünü seçmeyi kaldır', - ], - - 'select_all' => [ - 'label' => 'Tümünü seç', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'İptal', - ], - - 'drag_crop' => [ - 'label' => 'Kırpma moduna sürükleyin', - ], - - 'drag_move' => [ - 'label' => 'Taşıma moduna sürükleyin', - ], - - 'flip_horizontal' => [ - 'label' => 'Görüntüyü yatay çevir', - ], - - 'flip_vertical' => [ - 'label' => 'Görüntüyü dikey çevir', - ], - - 'move_down' => [ - 'label' => 'Görüntüyü aşağı taşı', - ], - - 'move_left' => [ - 'label' => 'Görüntüyü sola taşı', - ], - - 'move_right' => [ - 'label' => 'Görüntüyü sağa taşı', - ], - - 'move_up' => [ - 'label' => 'Görüntüyü yukarı taşı', - ], - - 'reset' => [ - 'label' => 'Sıfırla', - ], - - 'rotate_left' => [ - 'label' => 'Görüntüyü sola döndür', - ], - - 'rotate_right' => [ - 'label' => 'Görüntüyü sağa döndür', - ], - - 'set_aspect_ratio' => [ - 'label' => 'En boy oranını :ratio olarak ayarla', - ], - - 'save' => [ - 'label' => 'Kaydet', - ], - - 'zoom_100' => [ - 'label' => 'Görüntüyü %100 yakınlaştır', - ], - - 'zoom_in' => [ - 'label' => 'Yakınlaştır', - ], - - 'zoom_out' => [ - 'label' => 'Uzaklaştır', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Yükseklik', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Döndürme', - 'unit' => '°', - ], - - 'width' => [ - 'label' => 'Genişlik', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'En boy oranları', - - 'no_fixed' => [ - 'label' => 'Serbest', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Satır ekle', - ], - - 'delete' => [ - 'label' => 'Satır sil', - ], - - 'reorder' => [ - 'label' => 'Satır sırala', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Anahtar', - ], - - 'value' => [ - 'label' => 'Değer', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Dosya ekle', - 'blockquote' => 'Alıntı', - 'bold' => 'Kalın', - 'bullet_list' => 'Liste', - 'code_block' => 'Kod bloğu', - 'heading' => 'Başlık', - 'italic' => 'Eğik', - 'link' => 'Bağlantı', - 'ordered_list' => 'Numaralı liste', - 'redo' => 'Yinele', - 'strike' => 'Üstü çizili', - 'table' => 'Tablo', - 'undo' => 'Geri al', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => ':label\'e ekle', - ], - - 'delete' => [ - 'label' => 'Sil', - ], - - 'clone' => [ - 'label' => 'Klonla', - ], - - 'reorder' => [ - 'label' => 'Taşı', - ], - - 'move_down' => [ - 'label' => 'Aşağı taşı', - ], - - 'move_up' => [ - 'label' => 'Yukarı taşı', - ], - - 'collapse' => [ - 'label' => 'Küçült', - ], - - 'expand' => [ - 'label' => 'Genişlet', - ], - - 'collapse_all' => [ - 'label' => 'Tümünü küçült', - ], - - 'expand_all' => [ - 'label' => 'Tümünü genişlet', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Bağlantı', - 'unlink' => 'Bağlantıyı kaldır', - ], - - 'label' => 'URL', - - 'placeholder' => 'Bir URL girin', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Dosya ekle', - 'blockquote' => 'Alıntı', - 'bold' => 'Kalın', - 'bullet_list' => 'Sırasız liste', - 'code_block' => 'Kod bloğu', - 'h1' => 'Başlık', - 'h2' => 'Başlık 2', - 'h3' => 'Alt başlık', - 'italic' => 'Eğik', - 'link' => 'Bağlantı', - 'ordered_list' => 'Sıralı liste', - 'redo' => 'Yinele', - 'strike' => 'Üstü çizili', - 'underline' => 'Altı çizili', - 'undo' => 'Geri al', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Oluştur', - - 'actions' => [ - - 'create' => [ - 'label' => 'Oluştur', - ], - - 'create_another' => [ - 'label' => 'Oluştur & başka bir tane oluştur', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Düzenle', - - 'actions' => [ - - 'save' => [ - 'label' => 'Kaydet', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Evet', - 'false' => 'Hayır', - ], - - 'loading_message' => 'Yükleniyor...', - - 'max_items_message' => 'Sadece :count seçilebilir.', - - 'no_search_results_message' => 'Arama kriterlerinize uyan seçenek yok.', - - 'placeholder' => 'Bir seçenek seçin', - - 'searching_message' => 'Aranıyor...', - - 'search_prompt' => 'Aramak için yazmaya başlayın...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Yeni etiket', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Geri', - ], - - 'next_step' => [ - 'label' => 'İleri', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/uk/components.php b/vendor/filament/forms/resources/lang/uk/components.php deleted file mode 100644 index 7decce45..00000000 --- a/vendor/filament/forms/resources/lang/uk/components.php +++ /dev/null @@ -1,426 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Дублювати', - ], - - 'add' => [ - 'label' => 'Додати до :label', - ], - - 'add_between' => [ - 'label' => 'Вставити між', - ], - - 'delete' => [ - 'label' => 'Видалити', - ], - - 'reorder' => [ - 'label' => 'Перемістити', - ], - - 'move_down' => [ - 'label' => 'Перемістити вниз', - ], - - 'move_up' => [ - 'label' => 'Перемістити вгору', - ], - - 'collapse' => [ - 'label' => 'Згорнути', - ], - - 'expand' => [ - 'label' => 'Розгорнути', - ], - - 'collapse_all' => [ - 'label' => 'Згорнути все', - ], - - 'expand_all' => [ - 'label' => 'Розгорнути все', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Зняти виділення', - ], - - 'select_all' => [ - 'label' => 'Виділити все', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Скасувати', - ], - - 'drag_crop' => [ - 'label' => 'Режим "кадрування"', - ], - - 'drag_move' => [ - 'label' => 'Режим "переміщення"', - ], - - 'flip_horizontal' => [ - 'label' => 'Відобразити по горизонталі', - ], - - 'flip_vertical' => [ - 'label' => 'Відобразити по вертикалі', - ], - - 'move_down' => [ - 'label' => 'Перемістити вниз', - ], - - 'move_left' => [ - 'label' => 'Перемістити вліво', - ], - - 'move_right' => [ - 'label' => 'Перемістити вправо', - ], - - 'move_up' => [ - 'label' => 'Перемістити у верх', - ], - - 'reset' => [ - 'label' => 'Скинути', - ], - - 'rotate_left' => [ - 'label' => 'Повернути вліво', - ], - - 'rotate_right' => [ - 'label' => 'Повернути вправо', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Відношення сторін :ratio', - ], - - 'save' => [ - 'label' => 'Зберегти', - ], - - 'zoom_100' => [ - 'label' => 'Збільшити до 100%', - ], - - 'zoom_in' => [ - 'label' => 'Збільшити', - ], - - 'zoom_out' => [ - 'label' => 'Зменшити', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Висота', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Обертання', - 'unit' => 'град', - ], - - 'width' => [ - 'label' => 'Ширина', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Відношення сторін', - - 'no_fixed' => [ - 'label' => 'Вільне', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'Не рекомендується редагувати SVG-файли, оскільки під час масштабування може погіршитися якість.\n Ви впевнені, що хочере продовжити?', - 'disabled' => 'Редагування SVG-файлів заблоковано, оскільки під час масштабування може погіршитися якість.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Додати рядок', - ], - - 'delete' => [ - 'label' => 'Видалити рядок', - ], - 'reorder' => [ - 'label' => 'Перемістити рядок', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Ключ', - ], - - 'value' => [ - 'label' => 'Значення', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Прикріпити файли', - 'blockquote' => 'Цитата', - 'bold' => 'Жирний', - 'bullet_list' => 'Маркувальний список', - 'code_block' => 'Код', - 'heading' => 'Заголовок', - 'italic' => 'Курсив', - 'link' => 'Посилання', - 'ordered_list' => 'Нумерований список', - 'redo' => 'Повернути', - 'strike' => 'Закреслений', - 'table' => 'Таблиця', - 'undo' => 'Скасувати', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Додати до :label', - ], - - 'add_between' => [ - 'label' => 'Додати між', - ], - - 'delete' => [ - 'label' => 'Видалити', - ], - - 'clone' => [ - 'label' => 'Дублювати', - ], - - 'reorder' => [ - 'label' => 'Перемістити', - ], - - 'move_down' => [ - 'label' => 'Перемістити вниз', - ], - - 'move_up' => [ - 'label' => 'Перемістити у верх', - ], - - 'collapse' => [ - 'label' => 'Згорнути', - ], - - 'expand' => [ - 'label' => 'Розгорнути', - ], - - 'collapse_all' => [ - 'label' => 'Згорнути все', - ], - - 'expand_all' => [ - 'label' => 'Розгорнути все', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Посилання', - 'unlink' => 'Прибрати посилання', - ], - - 'label' => 'URL', - - 'placeholder' => 'Введіть URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Прикріпити файли', - 'blockquote' => 'Цитата', - 'bold' => 'Жирний', - 'bullet_list' => 'Маркований список', - 'code_block' => 'Код', - 'h1' => 'Назва', - 'h2' => 'Заголовок', - 'h3' => 'Підзаголовок', - 'italic' => 'Курсив', - 'link' => 'Посилання', - 'ordered_list' => 'Нумерований список', - 'redo' => 'Повторити', - 'strike' => 'Закреслений', - 'underline' => 'Підкреслений', - 'undo' => 'Скасувати', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Створити', - - 'actions' => [ - - 'create' => [ - 'label' => 'Створити', - ], - 'create_another' => [ - 'label' => 'Створити ще один', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Змінити', - - 'actions' => [ - - 'save' => [ - 'label' => 'Зберегти', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Так', - 'false' => 'Ні', - ], - - 'loading_message' => 'Завантаження...', - - 'max_items_message' => 'Тільки :count можна вибрати.', - - 'no_search_results_message' => 'Немає варіантів, які відповідають вашому запиту.', - - 'placeholder' => 'Обрати варіант', - - 'searching_message' => 'Пошук...', - - 'search_prompt' => 'Введіть текст для пошуку...', - ], - - 'tags_input' => [ - 'placeholder' => 'Новий тег', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Назад', - ], - - 'next_step' => [ - 'label' => 'Далі', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/uz/components.php b/vendor/filament/forms/resources/lang/uz/components.php deleted file mode 100644 index 0f8e2b97..00000000 --- a/vendor/filament/forms/resources/lang/uz/components.php +++ /dev/null @@ -1,425 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Nusxalash', - ], - - 'add' => [ - 'label' => ':labelga qo\'shish', - ], - - 'add_between' => [ - 'label' => 'Orasiga kiritish', - ], - - 'delete' => [ - 'label' => 'O\'chirish', - ], - - 'reorder' => [ - 'label' => 'Ko\'chirish', - ], - - 'move_down' => [ - 'label' => 'Pastga ko\'chirish', - ], - - 'move_up' => [ - 'label' => 'Yuqoriga ko\'chirish', - ], - - 'collapse' => [ - 'label' => 'Yig\'ish', - ], - - 'expand' => [ - 'label' => 'Yoyish', - ], - - 'collapse_all' => [ - 'label' => 'Barchasini yig\'ish', - ], - - 'expand_all' => [ - 'label' => 'Barchasini yoyish', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Barchasini tanlamaslik', - ], - - 'select_all' => [ - 'label' => 'Barchasini belgilash', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Bekor qilish', - ], - - 'drag_crop' => [ - 'label' => 'Kesish rejimi', - ], - - 'drag_move' => [ - 'label' => 'Ko\'chirish rejimi', - ], - - 'flip_horizontal' => [ - 'label' => 'Gorizontal ravishda aylantirish', - ], - - 'flip_vertical' => [ - 'label' => 'Vertikal ravishda aylantirish', - ], - - 'move_down' => [ - 'label' => 'Pastga ko\'chirish', - ], - - 'move_left' => [ - 'label' => 'Chapga ko\'chirish', - ], - - 'move_right' => [ - 'label' => 'O\'ngga ko\'chirish', - ], - - 'move_up' => [ - 'label' => 'Yuqoriga ko\'chirish', - ], - - 'reset' => [ - 'label' => 'Qayta o\'rnatish', - ], - - 'rotate_left' => [ - 'label' => 'Chapga burish', - ], - - 'rotate_right' => [ - 'label' => 'O\'ngga burish', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Aspekt nisbati :ratio', - ], - - 'save' => [ - 'label' => 'Saqlash', - ], - - 'zoom_100' => [ - 'label' => '100% gacha oshirish', - ], - - 'zoom_in' => [ - 'label' => 'Kattalashtirish', - ], - - 'zoom_out' => [ - 'label' => 'Kichiklashtirish', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Balandlik', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Aylanish', - 'unit' => 'gradus', - ], - - 'width' => [ - 'label' => 'Kenglik', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Aspekt nisbatlari', - - 'no_fixed' => [ - 'label' => 'Erkin', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'SVG fayllarni tahrirlash tavsiya etilmaydi, chunki masshtab o‘tkazishda sifat yo‘qolishi mumkin.\n Davom etishni xohlaysizmi?', - 'disabled' => 'SVG fayllarini tahrirlash bloklangan, chunki masshtab oʻlchashda sifat yoʻqolishi mumkin.', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Qator qo\'shish', - ], - - 'delete' => [ - 'label' => 'Qatorni o\'chirish', - ], - 'reorder' => [ - 'label' => 'Qatorni ko\'chirish', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Kalit so\'z', - ], - - 'value' => [ - 'label' => 'Qiymat', - ], - - ], - - ], - - 'markdown_editor' => [ - 'toolbar_buttons' => [ - 'attach_files' => 'Fayl biriktirish', - 'blockquote' => 'Iqtibos', - 'bold' => 'Qalin', - 'bullet_list' => 'Nuqtalangan ro\'yxat', - 'code_block' => 'Kod', - 'heading' => 'Sarlavha', - 'italic' => 'Burilgan', - 'link' => 'Havola', - 'ordered_list' => 'Raqamli ro\'yxat', - 'redo' => 'Qaytarish', - 'strike' => 'Chizilgan', - 'table' => 'Jadval', - 'undo' => 'Bekor qilish', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => ':label qo\'shish', - ], - - 'add_between' => [ - 'label' => 'Orasiga qo\'shish', - ], - - 'delete' => [ - 'label' => 'O\'chirish', - ], - - 'clone' => [ - 'label' => 'Nusxalash (klonlash)', - ], - - 'reorder' => [ - 'label' => 'Ko\'chirish', - ], - - 'move_down' => [ - 'label' => 'Pastga ko\'chirish', - ], - - 'move_up' => [ - 'label' => 'Yuqoriga ko\'chirish', - ], - - 'collapse' => [ - 'label' => 'Yig\'ish', - ], - - 'expand' => [ - 'label' => 'Yoyish', - ], - - 'collapse_all' => [ - 'label' => 'Barchasini yig\'ish', - ], - - 'expand_all' => [ - 'label' => 'Barchasini yoyish', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Havola', - 'unlink' => 'Havolani o\'chirish', - ], - - 'label' => 'URL', - - 'placeholder' => 'URLni kiritish', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Fayl biriktirish', - 'blockquote' => 'Iqtibos', - 'bold' => 'Qalin', - 'bullet_list' => 'Nuqtalangan ro\'yxat', - 'code_block' => 'Kod', - 'h1' => 'Nomi', - 'h2' => 'Sarlavha', - 'h3' => 'Subtitr', - 'italic' => 'Burilgan', - 'link' => 'Havola', - 'ordered_list' => 'Raqamli ro\'yxat', - 'redo' => 'Qaytarish', - 'strike' => 'Chizilgan', - 'underline' => 'Pastki chiziq', - 'undo' => 'Bekor qilish', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Yaratish', - - 'actions' => [ - - 'create' => [ - 'label' => 'Yaratish', - ], - 'create_another' => [ - 'label' => 'Yana boshqa yaratish', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Tahrirlash', - - 'actions' => [ - - 'save' => [ - 'label' => 'Saqlash', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Xa', - 'false' => 'Yoq', - ], - - 'loading_message' => 'Yuklanmoqda...', - - 'max_items_message' => 'Faqat :countta tanlash mumkin.', - - 'no_search_results_message' => 'So\'rovingizga mos keladigan natijalar yo\'q.', - - 'placeholder' => 'Variant tanlash', - - 'searching_message' => 'Qidirilmoqda...', - - 'search_prompt' => 'Qidiruv uchun matn kiriting...', - ], - - 'tags_input' => [ - 'placeholder' => 'Yangi teg', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Orqaga', - ], - - 'next_step' => [ - 'label' => 'Keyingi', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/uz/validation.php b/vendor/filament/forms/resources/lang/uz/validation.php deleted file mode 100644 index b625faa5..00000000 --- a/vendor/filament/forms/resources/lang/uz/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'Kamida bitta :attribute maydoni tanlanishi kerak.', - 'only_one_must_be_selected' => 'Faqat bitta :attribute maydonini tanlash kerak.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/vi/components.php b/vendor/filament/forms/resources/lang/vi/components.php deleted file mode 100644 index b6fa1900..00000000 --- a/vendor/filament/forms/resources/lang/vi/components.php +++ /dev/null @@ -1,438 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => 'Sao chép', - ], - - 'add' => [ - 'label' => 'Thêm vào :label', - ], - - 'add_between' => [ - 'label' => 'Chèn vào giữa các khối', - ], - - 'delete' => [ - 'label' => 'Xóa', - ], - - 'reorder' => [ - 'label' => 'Di chuyển', - ], - - 'move_down' => [ - 'label' => 'Di chuyển xuống', - ], - - 'move_up' => [ - 'label' => 'Di chuyển lên', - ], - - 'collapse' => [ - 'label' => 'Thu gọn', - ], - - 'expand' => [ - 'label' => 'Mở rộng', - ], - - 'collapse_all' => [ - 'label' => 'Thu gọn tất cả', - ], - - 'expand_all' => [ - 'label' => 'Mở rộng tất cả', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => 'Bỏ chọn tất cả', - ], - - 'select_all' => [ - 'label' => 'Chọn tất cả', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => 'Huỷ bỏ', - ], - - 'drag_crop' => [ - 'label' => 'Chế độ kéo "cắt"', - ], - - 'drag_move' => [ - 'label' => 'Chế độ kéo "di chuyển"', - ], - - 'flip_horizontal' => [ - 'label' => 'Lật ảnh theo chiều ngang', - ], - - 'flip_vertical' => [ - 'label' => 'Lật ảnh theo chiều dọc', - ], - - 'move_down' => [ - 'label' => 'Di chuyển hình ảnh xuống', - ], - - 'move_left' => [ - 'label' => 'Di chuyển hình ảnh sang trái', - ], - - 'move_right' => [ - 'label' => 'Di chuyển hình ảnh sang phải', - ], - - 'move_up' => [ - 'label' => 'Di chuyển hình ảnh lên trên', - ], - - 'reset' => [ - 'label' => 'Đặt lại', - ], - - 'rotate_left' => [ - 'label' => 'Xoay hình ảnh sang trái', - ], - - 'rotate_right' => [ - 'label' => 'Xoay hình ảnh sang phải', - ], - - 'set_aspect_ratio' => [ - 'label' => 'Đặt tỷ lệ khung hình thành :ratio', - ], - - 'save' => [ - 'label' => 'Lưu', - ], - - 'zoom_100' => [ - 'label' => 'Phóng to hình ảnh lên 100%', - ], - - 'zoom_in' => [ - 'label' => 'Phóng to', - ], - - 'zoom_out' => [ - 'label' => 'Thu nhỏ', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => 'Chiều cao', - 'unit' => 'px', - ], - - 'rotation' => [ - 'label' => 'Độ xoay', - 'unit' => 'deg', - ], - - 'width' => [ - 'label' => 'Chiều rộng', - 'unit' => 'px', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => 'px', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => 'px', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => 'Tỷ lệ khung hình', - - 'no_fixed' => [ - 'label' => 'Tự do', - ], - - ], - - 'svg' => [ - - 'messages' => [ - 'confirmation' => 'Việc chỉnh sửa các tập tin SVG không được khuyến nghị vì có thể dẫn đến mất chất lượng khi thay đổi tỷ lệ.\n Bạn có chắc chắn muốn tiếp tục không?', - 'disabled' => 'Việc chỉnh sửa các tập tin SVG bị vô hiệu hóa vì có thể dẫn đến mất chất lượng khi thay đổi tỷ lệ..', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Thêm dòng', - ], - - 'delete' => [ - 'label' => 'Xóa dòng', - ], - - 'reorder' => [ - 'label' => 'Sắp xếp dòng', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => 'Khóa', - ], - - 'value' => [ - 'label' => 'Giá trị', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => 'Đính kèm tệp', - 'blockquote' => 'Trích dẫn', - 'bold' => 'In đậm', - 'bullet_list' => 'Danh sách đánh dấu', - 'code_block' => 'Khối mã', - 'heading' => 'Tiêu đề', - 'italic' => 'In nghiêng', - 'link' => 'Liên kết', - 'ordered_list' => 'Danh sách đánh số', - 'redo' => 'Làm lại', - 'strike' => 'Gạch ngang', - 'table' => 'Bảng', - 'undo' => 'Hoàn tác', - ], - - ], - - 'radio' => [ - - 'boolean' => [ - 'true' => 'Có', - 'false' => 'Không', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => 'Thêm vào :label', - ], - - 'add_between' => [ - 'label' => 'Chèn vào giữa', - ], - - 'delete' => [ - 'label' => 'Xóa', - ], - - 'clone' => [ - 'label' => 'Sao chép', - ], - - 'reorder' => [ - 'label' => 'Di chuyển', - ], - - 'move_down' => [ - 'label' => 'Di chuyển xuống', - ], - - 'move_up' => [ - 'label' => 'Di chuyển lên', - ], - - 'collapse' => [ - 'label' => 'Thu gọn', - ], - - 'expand' => [ - 'label' => 'Mở rộng', - ], - - 'collapse_all' => [ - 'label' => 'Thu gọn tất cả', - ], - - 'expand_all' => [ - 'label' => 'Mở rộng tất cả', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => 'Liên kết', - 'unlink' => 'Bỏ liên kết', - ], - - 'label' => 'URL', - - 'placeholder' => 'Nhập URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => 'Đính kèm tệp', - 'blockquote' => 'Trích dẫn', - 'bold' => 'In đậm', - 'bullet_list' => 'Danh sách đánh dấu', - 'code_block' => 'Khối mã', - 'h1' => 'Tiêu đề chính', - 'h2' => 'Tiêu đề', - 'h3' => 'Tiêu đề phụ', - 'italic' => 'In nghiêng', - 'link' => 'Liên kết', - 'ordered_list' => 'Danh sách đánh số', - 'redo' => 'Làm lại', - 'strike' => 'Gạch ngang', - 'underline' => 'Gạch chân', - 'undo' => 'Hoàn tác', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => 'Tạo', - - 'actions' => [ - - 'create' => [ - 'label' => 'Tạo', - ], - - 'create_another' => [ - 'label' => 'Tạo & tạo thêm', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => 'Chỉnh sửa', - - 'actions' => [ - - 'save' => [ - 'label' => 'Lưu lại', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => 'Có', - 'false' => 'Không', - ], - - 'loading_message' => 'Đang tải...', - - 'max_items_message' => 'Chỉ có thể chọn :count mục.', - - 'no_search_results_message' => 'Không có kết quả tìm kiếm phù hợp.', - - 'placeholder' => 'Chọn một tuỳ chọn', - - 'searching_message' => 'Đang tìm kiếm...', - - 'search_prompt' => 'Bắt đầu gõ để tìm kiếm...', - - ], - - 'tags_input' => [ - 'placeholder' => 'Thêm thẻ mới', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => 'Quay lại', - ], - - 'next_step' => [ - 'label' => 'Tiếp theo', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/vi/validation.php b/vendor/filament/forms/resources/lang/vi/validation.php deleted file mode 100644 index dd787b00..00000000 --- a/vendor/filament/forms/resources/lang/vi/validation.php +++ /dev/null @@ -1,10 +0,0 @@ - [ - 'must_be_selected' => 'Ít nhất một trường :attribute phải được chọn.', - 'only_one_must_be_selected' => 'Chỉ có một trường :attribute được chọn.', - ], - -]; diff --git a/vendor/filament/forms/resources/lang/zh_CN/components.php b/vendor/filament/forms/resources/lang/zh_CN/components.php deleted file mode 100644 index 8f0fcc71..00000000 --- a/vendor/filament/forms/resources/lang/zh_CN/components.php +++ /dev/null @@ -1,416 +0,0 @@ - [ - - 'actions' => [ - - 'clone' => [ - 'label' => '克隆', - ], - - 'add' => [ - 'label' => '添加 :label', - ], - - 'add_between' => [ - 'label' => '在块之间插入', - ], - - 'delete' => [ - 'label' => '删除', - ], - - 'reorder' => [ - 'label' => '移动', - ], - - 'move_down' => [ - 'label' => '下移', - ], - - 'move_up' => [ - 'label' => '上移', - ], - - 'collapse' => [ - 'label' => '收起', - ], - - 'expand' => [ - 'label' => '展开', - ], - - 'collapse_all' => [ - 'label' => '全部收起', - ], - - 'expand_all' => [ - 'label' => '全部展开', - ], - - ], - - ], - - 'checkbox_list' => [ - - 'actions' => [ - - 'deselect_all' => [ - 'label' => '取消全选', - ], - - 'select_all' => [ - 'label' => '全选', - ], - - ], - - ], - - 'file_upload' => [ - - 'editor' => [ - - 'actions' => [ - - 'cancel' => [ - 'label' => '取消', - ], - - 'drag_crop' => [ - 'label' => '拖动模式“裁剪”', - ], - - 'drag_move' => [ - 'label' => '拖动模式“移动”', - ], - - 'flip_horizontal' => [ - 'label' => '水平翻转图像', - ], - - 'flip_vertical' => [ - 'label' => '垂直翻转图像', - ], - - 'move_down' => [ - 'label' => '向下移动图像', - ], - - 'move_left' => [ - 'label' => '将图像移动到左侧', - ], - - 'move_right' => [ - 'label' => '将图像移动到右侧', - ], - - 'move_up' => [ - 'label' => '向上移动图像', - ], - - 'reset' => [ - 'label' => '重置', - ], - - 'rotate_left' => [ - 'label' => '将图像向左旋转', - ], - - 'rotate_right' => [ - 'label' => '将图像向右旋转', - ], - - 'set_aspect_ratio' => [ - 'label' => '将纵横比设置为 :ratio', - ], - - 'save' => [ - 'label' => '保存', - ], - - 'zoom_100' => [ - 'label' => '将图像缩放到100%', - ], - - 'zoom_in' => [ - 'label' => '放大', - ], - - 'zoom_out' => [ - 'label' => '缩小', - ], - - ], - - 'fields' => [ - - 'height' => [ - 'label' => '高度', - 'unit' => '像素', - ], - - 'rotation' => [ - 'label' => '旋转', - 'unit' => '度', - ], - - 'width' => [ - 'label' => '宽度', - 'unit' => '像素', - ], - - 'x_position' => [ - 'label' => 'X', - 'unit' => '像素', - ], - - 'y_position' => [ - 'label' => 'Y', - 'unit' => '像素', - ], - - ], - - 'aspect_ratios' => [ - - 'label' => '纵横比', - - 'no_fixed' => [ - 'label' => '自由', - ], - - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => '添加行', - ], - - 'delete' => [ - 'label' => '删除行', - ], - - 'reorder' => [ - 'label' => '重新排序行', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => '键名', - ], - - 'value' => [ - 'label' => '值', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => '附件', - 'blockquote' => '引用', - 'bold' => '加粗', - 'bullet_list' => '普通列表', - 'code_block' => '代码', - 'heading' => '标题', - 'italic' => '斜体', - 'link' => '链接', - 'ordered_list' => '数字列表', - 'redo' => '重做', - 'strike' => '删除线', - 'table' => '表格', - 'undo' => '撤销', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => '添加 :label', - ], - - 'delete' => [ - 'label' => '删除', - ], - - 'clone' => [ - 'label' => '克隆', - ], - - 'reorder' => [ - 'label' => '移动', - ], - - 'move_down' => [ - 'label' => '下移', - ], - - 'move_up' => [ - 'label' => '上移', - ], - - 'collapse' => [ - 'label' => '收起', - ], - - 'expand' => [ - 'label' => '展开', - ], - - 'collapse_all' => [ - 'label' => '全部收起', - ], - - 'expand_all' => [ - 'label' => '全部展开', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => '链接', - 'unlink' => '取消链接', - ], - - 'label' => 'URL', - - 'placeholder' => '输入URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => '附件', - 'blockquote' => '引用', - 'bold' => '加粗', - 'bullet_list' => '普通列表', - 'code_block' => '代码', - 'h1' => '标题', - 'h2' => '标题', - 'h3' => '副标题', - 'italic' => '斜体', - 'link' => '链接', - 'ordered_list' => '数字列表', - 'redo' => '重做', - 'strike' => '删除线', - 'underline' => '下划线', - 'undo' => '撤销', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => '创建', - - 'actions' => [ - - 'create' => [ - 'label' => '创建', - ], - - 'create_another' => [ - 'label' => '创建并继续创建', - ], - - ], - - ], - - ], - - 'edit_option' => [ - - 'modal' => [ - - 'heading' => '编辑', - - 'actions' => [ - - 'save' => [ - 'label' => '保存', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => '是', - 'false' => '否', - ], - - 'loading_message' => '加载中...', - - 'max_items_message' => '只能选择 :count 个。', - - 'no_search_results_message' => '没有选项匹配您的搜索', - - 'placeholder' => '选择选项', - - 'searching_message' => '搜索中...', - - 'search_prompt' => '输入内容以搜索...', - - ], - - 'tags_input' => [ - 'placeholder' => '新标签', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => '上一步', - ], - - 'next_step' => [ - 'label' => '下一步', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/lang/zh_TW/components.php b/vendor/filament/forms/resources/lang/zh_TW/components.php deleted file mode 100644 index 626e6195..00000000 --- a/vendor/filament/forms/resources/lang/zh_TW/components.php +++ /dev/null @@ -1,229 +0,0 @@ - [ - - 'actions' => [ - - 'add' => [ - 'label' => '加至 :label', - ], - - 'delete' => [ - 'label' => '刪除', - ], - - 'move_down' => [ - 'label' => '上移', - ], - - 'move_up' => [ - 'label' => '下移', - ], - - 'collapse' => [ - 'label' => '收起', - ], - - 'expand' => [ - 'label' => '展開項目', - ], - - 'collapse_all' => [ - 'label' => '收起全部', - ], - - 'expand_all' => [ - 'label' => '展開全部', - ], - - ], - - ], - - 'key_value' => [ - - 'actions' => [ - - 'add' => [ - 'label' => '新增橫列', - ], - - 'delete' => [ - 'label' => '刪除橫列', - ], - - ], - - 'fields' => [ - - 'key' => [ - 'label' => '索引鍵', - ], - - 'value' => [ - 'label' => '值', - ], - - ], - - ], - - 'markdown_editor' => [ - - 'toolbar_buttons' => [ - 'attach_files' => '附加檔案', - 'bold' => '粗體', - 'bullet_list' => '無序清單', - 'code_block' => '程式碼區塊', - 'edit' => '編輯', - 'italic' => '斜體', - 'link' => '連結', - 'ordered_list' => '有序清單', - 'preview' => '預覽', - 'strike' => '刪除線', - ], - - ], - - 'repeater' => [ - - 'actions' => [ - - 'add' => [ - 'label' => '加至 :label', - ], - - 'delete' => [ - 'label' => '刪除', - ], - - 'move_down' => [ - 'label' => '下移', - ], - - 'move_up' => [ - 'label' => '上移', - ], - - 'collapse' => [ - 'label' => '收起', - ], - - 'expand' => [ - 'label' => '展開', - ], - - 'collapse_all' => [ - 'label' => '收起全部', - ], - - 'expand_all' => [ - 'label' => '展開全部', - ], - - ], - - ], - - 'rich_editor' => [ - - 'dialogs' => [ - - 'link' => [ - - 'actions' => [ - 'link' => '連結', - 'unlink' => '取消連結', - ], - - 'label' => 'URL', - - 'placeholder' => '輸入 URL', - - ], - - ], - - 'toolbar_buttons' => [ - 'attach_files' => '附加檔案', - 'blockquote' => '引用區塊', - 'bold' => '粗體', - 'bullet_list' => '有序清單', - 'code_block' => '程式碼區塊', - 'h1' => '大標題', - 'h2' => '小標題', - 'h3' => '附標題', - 'italic' => '斜體', - 'link' => '連結', - 'ordered_list' => '有序清單', - 'redo' => '取消復原', - 'strike' => '刪除線', - 'undo' => '復原', - ], - - ], - - 'select' => [ - - 'actions' => [ - - 'create_option' => [ - - 'modal' => [ - - 'heading' => '建立', - - 'actions' => [ - - 'create' => [ - 'label' => '建立', - ], - - ], - - ], - - ], - - ], - - 'boolean' => [ - 'true' => '是', - 'false' => '否', - ], - - 'loading_message' => '載入中...', - - 'no_search_results_message' => '未有符合該選項的搜尋結果。', - - 'placeholder' => '選擇選項', - - 'searching_message' => '搜尋中...', - - 'search_prompt' => '輸入以搜尋...', - - ], - - 'tags_input' => [ - 'placeholder' => '新增標籤', - ], - - 'wizard' => [ - - 'actions' => [ - - 'previous_step' => [ - 'label' => '返回', - ], - - 'next_step' => [ - 'label' => '繼續', - ], - - ], - - ], - -]; diff --git a/vendor/filament/forms/resources/views/component-container.blade.php b/vendor/filament/forms/resources/views/component-container.blade.php deleted file mode 100644 index 7bb845cb..00000000 --- a/vendor/filament/forms/resources/views/component-container.blade.php +++ /dev/null @@ -1,104 +0,0 @@ -@php - use Filament\Support\Enums\MaxWidth; - use Illuminate\Support\Js; - - $isRoot = $isRoot(); -@endphp - - - @foreach ($getComponents(withHidden: true) as $formComponent) - @php - /** - * Instead of only rendering the hidden components, we should - * render the `
    ` wrappers for all fields, regardless of - * if they are hidden or not. This is to solve Livewire DOM - * diffing issues. - * - * Additionally, any `
    ` elements that wrap hidden - * components need to have `class="hidden"`, so that they - * don't consume grid space. - */ - $isHidden = $formComponent->isHidden(); - @endphp - - getMaxWidth()) { - MaxWidth::ExtraSmall, 'xs' => 'max-w-xs', - MaxWidth::Small, 'sm' => 'max-w-sm', - MaxWidth::Medium, 'md' => 'max-w-md', - MaxWidth::Large, 'lg' => 'max-w-lg', - MaxWidth::ExtraLarge, 'xl' => 'max-w-xl', - MaxWidth::TwoExtraLarge, '2xl' => 'max-w-2xl', - MaxWidth::ThreeExtraLarge, '3xl' => 'max-w-3xl', - MaxWidth::FourExtraLarge, '4xl' => 'max-w-4xl', - MaxWidth::FiveExtraLarge, '5xl' => 'max-w-5xl', - MaxWidth::SixExtraLarge, '6xl' => 'max-w-6xl', - MaxWidth::SevenExtraLarge, '7xl' => 'max-w-7xl', - default => $maxWidth, - }, - ]) - > - @if (! $isHidden) - {{ $formComponent }} - @endif - - @endforeach - diff --git a/vendor/filament/forms/resources/views/components/actions.blade.php b/vendor/filament/forms/resources/views/components/actions.blade.php deleted file mode 100644 index a33f78c7..00000000 --- a/vendor/filament/forms/resources/views/components/actions.blade.php +++ /dev/null @@ -1,34 +0,0 @@ -@php - use Filament\Support\Enums\VerticalAlignment; - - $verticalAlignment = $getVerticalAlignment(); - - if (! $verticalAlignment instanceof VerticalAlignment) { - $verticalAlignment = filled($verticalAlignment) ? (VerticalAlignment::tryFrom($verticalAlignment) ?? $verticalAlignment) : null; - } -@endphp - -
    merge([ - 'id' => $getId(), - ], escape: false) - ->merge($getExtraAttributes(), escape: false) - ->class([ - 'fi-fo-actions flex h-full flex-col', - match ($verticalAlignment) { - VerticalAlignment::Start => 'justify-start', - VerticalAlignment::Center => 'justify-center', - VerticalAlignment::End => 'justify-end', - default => $verticalAlignment, - }, - ]) - }} -> - -
    diff --git a/vendor/filament/forms/resources/views/components/actions/action-container.blade.php b/vendor/filament/forms/resources/views/components/actions/action-container.blade.php deleted file mode 100644 index be177689..00000000 --- a/vendor/filament/forms/resources/views/components/actions/action-container.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -@foreach ($getActions() as $action) - @if ($action->isVisible()) - {{ $action }} - @endif -@endforeach diff --git a/vendor/filament/forms/resources/views/components/builder.blade.php b/vendor/filament/forms/resources/views/components/builder.blade.php deleted file mode 100644 index c8de15aa..00000000 --- a/vendor/filament/forms/resources/views/components/builder.blade.php +++ /dev/null @@ -1,250 +0,0 @@ -@php - use Filament\Forms\Components\Actions\Action; - - $containers = $getChildComponentContainers(); - $blockPickerBlocks = $getBlockPickerBlocks(); - $blockPickerColumns = $getBlockPickerColumns(); - $blockPickerWidth = $getBlockPickerWidth(); - - $addAction = $getAction($getAddActionName()); - $addBetweenAction = $getAction($getAddBetweenActionName()); - $cloneAction = $getAction($getCloneActionName()); - $collapseAllAction = $getAction($getCollapseAllActionName()); - $expandAllAction = $getAction($getExpandAllActionName()); - $deleteAction = $getAction($getDeleteActionName()); - $moveDownAction = $getAction($getMoveDownActionName()); - $moveUpAction = $getAction($getMoveUpActionName()); - $reorderAction = $getAction($getReorderActionName()); - $extraItemActions = $getExtraItemActions(); - - $isAddable = $isAddable(); - $isCloneable = $isCloneable(); - $isCollapsible = $isCollapsible(); - $isDeletable = $isDeletable(); - $isReorderableWithButtons = $isReorderableWithButtons(); - $isReorderableWithDragAndDrop = $isReorderableWithDragAndDrop(); - - $statePath = $getStatePath(); -@endphp - - -
    merge($getExtraAttributes(), escape: false) - ->class(['fi-fo-builder grid gap-y-4']) - }} - > - @if ($isCollapsible && ($collapseAllAction->isVisible() || $expandAllAction->isVisible())) -
    count($containers) < 2, - ]) - > - @if ($collapseAllAction->isVisible()) - - {{ $collapseAllAction }} - - @endif - - @if ($expandAllAction->isVisible()) - - {{ $expandAllAction }} - - @endif -
    - @endif - - @if (count($containers)) -
      - @php - $hasBlockLabels = $hasBlockLabels(); - $hasBlockNumbers = $hasBlockNumbers(); - @endphp - - @foreach ($containers as $uuid => $item) - @php - $visibleExtraItemActions = array_filter( - $extraItemActions, - fn (Action $action): bool => $action(['item' => $uuid])->isVisible(), - ); - @endphp - -
    • - @if ($isReorderableWithDragAndDrop || $isReorderableWithButtons || $hasBlockLabels || $isCloneable || $isDeletable || $isCollapsible || count($visibleExtraItemActions)) -
      - @if ($isReorderableWithDragAndDrop || $isReorderableWithButtons) -
        - @if ($isReorderableWithDragAndDrop) -
      • - {{ $reorderAction }} -
      • - @endif - - @if ($isReorderableWithButtons) -
      • - {{ $moveUpAction(['item' => $uuid])->disabled($loop->first) }} -
      • - -
      • - {{ $moveDownAction(['item' => $uuid])->disabled($loop->last) }} -
      • - @endif -
      - @endif - - @if ($hasBlockLabels) -

      $isBlockLabelTruncated(), - 'cursor-pointer select-none' => $isCollapsible, - ]) - > - {{ $item->getParentComponent()->getLabel($item->getRawState(), $uuid) }} - - @if ($hasBlockNumbers) - {{ $loop->iteration }} - @endif -

      - @endif - - @if ($isCloneable || $isDeletable || $isCollapsible || count($visibleExtraItemActions)) -
        - @foreach ($visibleExtraItemActions as $extraItemAction) -
      • - {{ $extraItemAction(['item' => $uuid]) }} -
      • - @endforeach - - @if ($isCloneable) -
      • - {{ $cloneAction(['item' => $uuid]) }} -
      • - @endif - - @if ($isDeletable) -
      • - {{ $deleteAction(['item' => $uuid]) }} -
      • - @endif - - @if ($isCollapsible) -
      • -
        - {{ $getAction('collapse') }} -
        - -
        - {{ $getAction('expand') }} -
        -
      • - @endif -
      - @endif -
      - @endif - -
      - {{ $item }} -
      -
    • - - @if (! $loop->last) - @if ($isAddable && $addBetweenAction->isVisible()) - - @elseif (filled($labelBetweenItems = $getLabelBetweenItems())) -
    • - - {{ $labelBetweenItems }} - -
    • - @endif - @endif - @endforeach -
    - @endif - - @if ($isAddable) - - - {{ $addAction }} - - - @endif -
    -
    diff --git a/vendor/filament/forms/resources/views/components/builder/block-picker.blade.php b/vendor/filament/forms/resources/views/components/builder/block-picker.blade.php deleted file mode 100644 index a1a5c04d..00000000 --- a/vendor/filament/forms/resources/views/components/builder/block-picker.blade.php +++ /dev/null @@ -1,52 +0,0 @@ -@props([ - 'action', - 'afterItem' => null, - 'blocks', - 'columns' => null, - 'statePath', - 'trigger', - 'width' => null, -]) - -class(['fi-fo-builder-block-picker']) }} -> - - {{ $trigger }} - - - - - @foreach ($blocks as $block) - @php - $wireClickActionArguments = ['block' => $block->getName()]; - - if ($afterItem) { - $wireClickActionArguments['afterItem'] = $afterItem; - } - - $wireClickActionArguments = \Illuminate\Support\Js::from($wireClickActionArguments); - - $wireClickAction = "mountFormComponentAction('{$statePath}', '{$action->getName()}', {$wireClickActionArguments})"; - @endphp - - - {{ $block->getLabel() }} - - @endforeach - - - diff --git a/vendor/filament/forms/resources/views/components/checkbox-list.blade.php b/vendor/filament/forms/resources/views/components/checkbox-list.blade.php deleted file mode 100644 index ea85c1c1..00000000 --- a/vendor/filament/forms/resources/views/components/checkbox-list.blade.php +++ /dev/null @@ -1,231 +0,0 @@ -@php - $gridDirection = $getGridDirection() ?? 'column'; - $isBulkToggleable = $isBulkToggleable(); - $isDisabled = $isDisabled(); - $isSearchable = $isSearchable(); - $statePath = $getStatePath(); -@endphp - - -
    - @if (! $isDisabled) - @if ($isSearchable) - - - - @endif - - @if ($isBulkToggleable && count($getOptions())) -
    - - {{ $getAction('selectAll') }} - - - - {{ $getAction('deselectAll') }} - -
    - @endif - @endif - - - @forelse ($getOptions() as $value => $label) -
    $gridDirection === 'column', - ]) - > - -
    - @empty -
    - @endforelse -
    - - @if ($isSearchable) -
    - {{ $getNoSearchResultsMessage() }} -
    - @endif -
    -
    diff --git a/vendor/filament/forms/resources/views/components/checkbox.blade.php b/vendor/filament/forms/resources/views/components/checkbox.blade.php deleted file mode 100644 index b1bb283b..00000000 --- a/vendor/filament/forms/resources/views/components/checkbox.blade.php +++ /dev/null @@ -1,36 +0,0 @@ -@php - $statePath = $getStatePath(); -@endphp - - - @capture($content) - - @endcapture - - @if ($isInline()) - - {{ $content() }} - - @else - {{ $content() }} - @endif - diff --git a/vendor/filament/forms/resources/views/components/color-picker.blade.php b/vendor/filament/forms/resources/views/components/color-picker.blade.php deleted file mode 100644 index 5a85b42e..00000000 --- a/vendor/filament/forms/resources/views/components/color-picker.blade.php +++ /dev/null @@ -1,118 +0,0 @@ -@php - use Filament\Support\Facades\FilamentView; - - $isDisabled = $isDisabled(); - $isLive = $isLive(); - $isLiveOnBlur = $isLiveOnBlur(); - $isLiveDebounced = $isLiveDebounced(); - $isPrefixInline = $isPrefixInline(); - $isSuffixInline = $isSuffixInline(); - $liveDebounce = $getLiveDebounce(); - $prefixActions = $getPrefixActions(); - $prefixIcon = $getPrefixIcon(); - $prefixLabel = $getPrefixLabel(); - $suffixActions = $getSuffixActions(); - $suffixIcon = $getSuffixIcon(); - $suffixLabel = $getSuffixLabel(); - $statePath = $getStatePath(); -@endphp - - - -
    class(['flex']) }} - > - - -
    -
    -
    - - -
    -
    -
    diff --git a/vendor/filament/forms/resources/views/components/date-time-picker.blade.php b/vendor/filament/forms/resources/views/components/date-time-picker.blade.php deleted file mode 100644 index 872e61c4..00000000 --- a/vendor/filament/forms/resources/views/components/date-time-picker.blade.php +++ /dev/null @@ -1,296 +0,0 @@ -@php - use Filament\Support\Facades\FilamentView; - - $datalistOptions = $getDatalistOptions(); - $extraAlpineAttributes = $getExtraAlpineAttributes(); - $id = $getId(); - $isDisabled = $isDisabled(); - $isPrefixInline = $isPrefixInline(); - $isSuffixInline = $isSuffixInline(); - $prefixActions = $getPrefixActions(); - $prefixIcon = $getPrefixIcon(); - $prefixLabel = $getPrefixLabel(); - $suffixActions = $getSuffixActions(); - $suffixIcon = $getSuffixIcon(); - $suffixLabel = $getSuffixLabel(); - $statePath = $getStatePath(); -@endphp - - - - @if ($isNative()) - - @else -
    merge($getExtraAttributes(), escape: false) - ->merge($getExtraAlpineAttributes(), escape: false) - ->class(['fi-fo-date-time-picker']) - }} - > - - - - - - - - -
    -
    - @if ($hasDate()) -
    - - - -
    - -
    - -
    - -
    - - - -
    - @endif - - @if ($hasTime()) -
    - - - - : - - - - - @if ($hasSeconds()) - - : - - - - @endif -
    - @endif -
    -
    -
    - @endif -
    - - @if ($datalistOptions) - - @foreach ($datalistOptions as $option) - - @endif -
    diff --git a/vendor/filament/forms/resources/views/components/field-wrapper/error-message.blade.php b/vendor/filament/forms/resources/views/components/field-wrapper/error-message.blade.php deleted file mode 100644 index c751c3f5..00000000 --- a/vendor/filament/forms/resources/views/components/field-wrapper/error-message.blade.php +++ /dev/null @@ -1,10 +0,0 @@ -

    class([ - 'fi-fo-field-wrp-error-message text-sm text-danger-600 dark:text-danger-400', - ]) - }} -> - {{ $slot }} -

    diff --git a/vendor/filament/forms/resources/views/components/field-wrapper/helper-text.blade.php b/vendor/filament/forms/resources/views/components/field-wrapper/helper-text.blade.php deleted file mode 100644 index 74e9e18a..00000000 --- a/vendor/filament/forms/resources/views/components/field-wrapper/helper-text.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -
    class(['fi-fo-field-wrp-helper-text text-sm text-gray-500']) }} -> - {{ $slot }} -
    diff --git a/vendor/filament/forms/resources/views/components/field-wrapper/hint.blade.php b/vendor/filament/forms/resources/views/components/field-wrapper/hint.blade.php deleted file mode 100644 index 092db5be..00000000 --- a/vendor/filament/forms/resources/views/components/field-wrapper/hint.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@props([ - 'actions' => [], - 'color' => 'gray', - 'icon' => null, - 'tooltip' => null, -]) - -
    class([ - 'fi-fo-field-wrp-hint flex items-center gap-x-3 text-sm', - ]) - }} -> - @if (! \Filament\Support\is_slot_empty($slot)) - 'fi-color-gray text-gray-500', - default => 'fi-color-custom text-custom-600 dark:text-custom-400', - }, - ]) - @style([ - \Filament\Support\get_color_css_variables( - $color, - shades: [400, 600], - alias: 'forms::components.field-wrapper.hint.label', - ), - ]) - > - {{ $slot }} - - @endif - - @if ($icon) - 'text-gray-400 dark:text-gray-500', - default => 'text-custom-500 dark:text-custom-400', - }, - ]) - @style([ - \Filament\Support\get_color_css_variables( - $color, - shades: [400, 500], - alias: 'forms::components.field-wrapper.hint.icon', - ), - ]) - /> - @endif - - @if (count($actions)) -
    - @foreach ($actions as $action) - {{ $action }} - @endforeach -
    - @endif -
    diff --git a/vendor/filament/forms/resources/views/components/field-wrapper/index.blade.php b/vendor/filament/forms/resources/views/components/field-wrapper/index.blade.php deleted file mode 100644 index b4b5aa55..00000000 --- a/vendor/filament/forms/resources/views/components/field-wrapper/index.blade.php +++ /dev/null @@ -1,129 +0,0 @@ -@php - use Filament\Support\Enums\VerticalAlignment; -@endphp - -@props([ - 'field' => null, - 'hasInlineLabel' => null, - 'hasNestedRecursiveValidationRules' => null, - 'helperText' => null, - 'hint' => null, - 'hintActions' => null, - 'hintColor' => null, - 'hintIcon' => null, - 'hintIconTooltip' => null, - 'id' => null, - 'inlineLabelVerticalAlignment' => VerticalAlignment::Start, - 'isDisabled' => null, - 'label' => null, - 'labelPrefix' => null, - 'labelSrOnly' => null, - 'labelSuffix' => null, - 'required' => null, - 'statePath' => null, -]) - -@php - if ($field) { - $hasInlineLabel ??= $field->hasInlineLabel(); - $hasNestedRecursiveValidationRules ??= $field instanceof \Filament\Forms\Components\Contracts\HasNestedRecursiveValidationRules; - $helperText ??= $field->getHelperText(); - $hint ??= $field->getHint(); - $hintActions ??= $field->getHintActions(); - $hintColor ??= $field->getHintColor(); - $hintIcon ??= $field->getHintIcon(); - $hintIconTooltip ??= $field->getHintIconTooltip(); - $id ??= $field->getId(); - $isDisabled ??= $field->isDisabled(); - $label ??= $field->getLabel(); - $labelSrOnly ??= $field->isLabelHidden(); - $required ??= $field->isMarkedAsRequired(); - $statePath ??= $field->getStatePath(); - } - - $hintActions = array_filter( - $hintActions ?? [], - fn (\Filament\Forms\Components\Actions\Action $hintAction): bool => $hintAction->isVisible(), - ); - - $hasError = filled($statePath) && ($errors->has($statePath) || ($hasNestedRecursiveValidationRules && $errors->has("{$statePath}.*"))); -@endphp - -
    class(['fi-fo-field-wrp']) }}> - @if ($label && $labelSrOnly) - - @endif - -
    $hasInlineLabel, - match ($inlineLabelVerticalAlignment) { - VerticalAlignment::Start => 'sm:items-start', - VerticalAlignment::Center => 'sm:items-center', - VerticalAlignment::End => 'sm:items-end', - } => $hasInlineLabel, - ]) - > - @if (($label && (! $labelSrOnly)) || $labelPrefix || $labelSuffix || filled($hint) || $hintIcon || count($hintActions)) -
    attributes->get('class') : null, - ]) - > - @if ($label && (! $labelSrOnly)) - - {{ $label }} - - @elseif ($labelPrefix) - {{ $labelPrefix }} - @elseif ($labelSuffix) - {{ $labelSuffix }} - @endif - - @if (filled($hint) || $hintIcon || count($hintActions)) - - {{ $hint }} - - @endif -
    - @endif - - @if ((! \Filament\Support\is_slot_empty($slot)) || $hasError || filled($helperText)) -
    $hasInlineLabel, - ]) - > - {{ $slot }} - - @if ($hasError) - - {{ $errors->has($statePath) ? $errors->first($statePath) : ($hasNestedRecursiveValidationRules ? $errors->first("{$statePath}.*") : null) }} - - @endif - - @if (filled($helperText)) - - {{ $helperText }} - - @endif -
    - @endif -
    -
    diff --git a/vendor/filament/forms/resources/views/components/field-wrapper/label.blade.php b/vendor/filament/forms/resources/views/components/field-wrapper/label.blade.php deleted file mode 100644 index a30cbb26..00000000 --- a/vendor/filament/forms/resources/views/components/field-wrapper/label.blade.php +++ /dev/null @@ -1,20 +0,0 @@ -@props([ - 'disabled' => false, - 'prefix' => null, - 'required' => false, - 'suffix' => null, -]) - - diff --git a/vendor/filament/forms/resources/views/components/fieldset.blade.php b/vendor/filament/forms/resources/views/components/fieldset.blade.php deleted file mode 100644 index 4142ae1c..00000000 --- a/vendor/filament/forms/resources/views/components/fieldset.blade.php +++ /dev/null @@ -1,13 +0,0 @@ - - {{ $getChildComponentContainer() }} - diff --git a/vendor/filament/forms/resources/views/components/file-upload.blade.php b/vendor/filament/forms/resources/views/components/file-upload.blade.php deleted file mode 100644 index ec8e7895..00000000 --- a/vendor/filament/forms/resources/views/components/file-upload.blade.php +++ /dev/null @@ -1,329 +0,0 @@ -@php - use Filament\Support\Enums\Alignment; - use Filament\Support\Facades\FilamentView; - - $imageCropAspectRatio = $getImageCropAspectRatio(); - $imageResizeTargetHeight = $getImageResizeTargetHeight(); - $imageResizeTargetWidth = $getImageResizeTargetWidth(); - $isAvatar = $isAvatar(); - $statePath = $getStatePath(); - $isDisabled = $isDisabled(); - $hasImageEditor = $hasImageEditor(); - $hasCircleCropper = $hasCircleCropper(); - - $alignment = $getAlignment() ?? Alignment::Start; - - if (! $alignment instanceof Alignment) { - $alignment = filled($alignment) ? (Alignment::tryFrom($alignment) ?? $alignment) : null; - } -@endphp - - -
    { - return await $wire.removeFormUploadedFile(@js($statePath), fileKey) - }, - removeUploadedFileButtonPosition: @js($getRemoveUploadedFileButtonPosition()), - reorderUploadedFilesUsing: async (files) => { - return await $wire.reorderFormUploadedFiles(@js($statePath), files) - }, - shouldAppendFiles: @js($shouldAppendFiles()), - shouldOrientImageFromExif: @js($shouldOrientImagesFromExif()), - shouldTransformImage: @js($imageCropAspectRatio || $imageResizeTargetHeight || $imageResizeTargetWidth), - state: $wire.{{ $applyStateBindingModifiers("\$entangle('{$statePath}')") }}, - uploadButtonPosition: @js($getUploadButtonPosition()), - uploadingMessage: @js($getUploadingMessage()), - uploadProgressIndicatorPosition: @js($getUploadProgressIndicatorPosition()), - uploadUsing: (fileKey, file, success, error, progress) => { - $wire.upload( - `{{ $statePath }}.${fileKey}`, - file, - () => { - success(fileKey) - }, - error, - (progressEvent) => { - progress(true, progressEvent.detail.progress, 100) - }, - ) - }, - })" - wire:ignore - x-ignore - {{ - $attributes - ->merge([ - 'id' => $getId(), - ], escape: false) - ->merge($getExtraAttributes(), escape: false) - ->merge($getExtraAlpineAttributes(), escape: false) - ->class([ - 'fi-fo-file-upload flex [&_.filepond--root]:font-sans', - match ($alignment) { - Alignment::Start => 'justify-start', - Alignment::Center => 'justify-center', - Alignment::End => 'justify-end', - Alignment::Left => 'justify-left', - Alignment::Right => 'justify-right', - Alignment::Between, Alignment::Justify => 'justify-between', - default => $alignment, - }, - ]) - }} - > -
    $isAvatar, - 'w-full' => ! $isAvatar, - ]) - > - merge([ - 'disabled' => $isDisabled, - 'multiple' => $isMultiple(), - 'type' => 'file', - ], escape: false) - }} - /> -
    - - @if ($hasImageEditor && (! $isDisabled)) -
    $hasCircleCropper, - ]) - > - - -
    -
    -
    -
    - -
    -
    - -
    -
    -
    -
    -
    -
    - @foreach ([ - [ - 'label' => __('filament-forms::components.file_upload.editor.fields.x_position.label'), - 'ref' => 'xPositionInput', - 'unit' => __('filament-forms::components.file_upload.editor.fields.x_position.unit'), - 'alpineSaveHandler' => 'editor.setData({...editor.getData(true), x: +$el.value})', - ], - [ - 'label' => __('filament-forms::components.file_upload.editor.fields.y_position.label'), - 'ref' => 'yPositionInput', - 'unit' => __('filament-forms::components.file_upload.editor.fields.y_position.unit'), - 'alpineSaveHandler' => 'editor.setData({...editor.getData(true), y: +$el.value})', - ], - [ - 'label' => __('filament-forms::components.file_upload.editor.fields.width.label'), - 'ref' => 'widthInput', - 'unit' => __('filament-forms::components.file_upload.editor.fields.width.unit'), - 'alpineSaveHandler' => 'editor.setData({...editor.getData(true), width: +$el.value})', - ], - [ - 'label' => __('filament-forms::components.file_upload.editor.fields.height.label'), - 'ref' => 'heightInput', - 'unit' => __('filament-forms::components.file_upload.editor.fields.height.unit'), - 'alpineSaveHandler' => 'editor.setData({...editor.getData(true), height: +$el.value})', - ], - [ - 'label' => __('filament-forms::components.file_upload.editor.fields.rotation.label'), - 'ref' => 'rotationInput', - 'unit' => __('filament-forms::components.file_upload.editor.fields.rotation.unit'), - 'alpineSaveHandler' => 'editor.rotateTo(+$el.value)', - ], - ] as $input) - - @endforeach -
    - -
    - @foreach ($getImageEditorActions(iconSizeClasses: 'h-5 w-5 mx-auto') as $groupedActions) - - @foreach ($groupedActions as $action) - - {{ $action['label'] }} - - @endforeach - - @endforeach -
    - - @if (count($aspectRatios = $getImageEditorAspectRatiosForJs())) -
    -
    - {{ __('filament-forms::components.file_upload.editor.aspect_ratios.label') }} -
    - - @foreach (collect($aspectRatios)->chunk(5) as $ratiosChunk) - - @foreach ($ratiosChunk as $label => $ratio) - - {{ $label }} - - @endforeach - - @endforeach -
    - @endif -
    -
    - -
    - - {{ __('filament-forms::components.file_upload.editor.actions.cancel.label') }} - - - - {{ __('filament-forms::components.file_upload.editor.actions.reset.label') }} - - - - {{ __('filament-forms::components.file_upload.editor.actions.save.label') }} - -
    -
    -
    -
    -
    -
    -
    - @endif -
    -
    diff --git a/vendor/filament/forms/resources/views/components/grid.blade.php b/vendor/filament/forms/resources/views/components/grid.blade.php deleted file mode 100644 index 66ecf4bd..00000000 --- a/vendor/filament/forms/resources/views/components/grid.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -
    merge([ - 'id' => $getId(), - ], escape: false) - ->merge($getExtraAttributes(), escape: false) - }} -> - {{ $getChildComponentContainer() }} -
    diff --git a/vendor/filament/forms/resources/views/components/group.blade.php b/vendor/filament/forms/resources/views/components/group.blade.php deleted file mode 100644 index 66ecf4bd..00000000 --- a/vendor/filament/forms/resources/views/components/group.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -
    merge([ - 'id' => $getId(), - ], escape: false) - ->merge($getExtraAttributes(), escape: false) - }} -> - {{ $getChildComponentContainer() }} -
    diff --git a/vendor/filament/forms/resources/views/components/hidden.blade.php b/vendor/filament/forms/resources/views/components/hidden.blade.php deleted file mode 100644 index 00d8b968..00000000 --- a/vendor/filament/forms/resources/views/components/hidden.blade.php +++ /dev/null @@ -1,12 +0,0 @@ -merge([ - 'id' => $getId(), - 'type' => 'hidden', - $applyStateBindingModifiers('wire:model') => $getStatePath(), - ], escape: false) - ->merge($getExtraAttributes(), escape: false) - ->class(['fi-fo-hidden']) - }} -/> diff --git a/vendor/filament/forms/resources/views/components/key-value.blade.php b/vendor/filament/forms/resources/views/components/key-value.blade.php deleted file mode 100644 index 8d9be39f..00000000 --- a/vendor/filament/forms/resources/views/components/key-value.blade.php +++ /dev/null @@ -1,171 +0,0 @@ -@php - use Filament\Support\Facades\FilamentView; - - $debounce = $getLiveDebounce(); - $hasInlineLabel = $hasInlineLabel(); - $isAddable = $isAddable(); - $isDeletable = $isDeletable(); - $isDisabled = $isDisabled(); - $isReorderable = $isReorderable(); - $statePath = $getStatePath(); -@endphp - - - $hasInlineLabel, - ]) - > - {{ $getLabel() }} - - - -
    merge($getExtraAlpineAttributes(), escape: false) - ->class(['divide-y divide-gray-200 dark:divide-white/10']) - }} - > - - - - @if ($isReorderable && (! $isDisabled)) - - @endif - - - - - - @if ($isDeletable && (! $isDisabled)) - - @endif - - - - - - -
    - {{ $getKeyLabel() }} - - {{ $getValueLabel() }} -
    - - @if ($isAddable && (! $isDisabled)) -
    - - {{ $getAction('add') }} - -
    - @endif -
    -
    -
    diff --git a/vendor/filament/forms/resources/views/components/livewire.blade.php b/vendor/filament/forms/resources/views/components/livewire.blade.php deleted file mode 100644 index 48d4dc93..00000000 --- a/vendor/filament/forms/resources/views/components/livewire.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -
    - @if (filled($key = $getKey())) - @livewire($getComponent(), $getComponentProperties(), key($key)) - @else - @livewire($getComponent(), $getComponentProperties()) - @endif -
    diff --git a/vendor/filament/forms/resources/views/components/markdown-editor.blade.php b/vendor/filament/forms/resources/views/components/markdown-editor.blade.php deleted file mode 100644 index f2cbe887..00000000 --- a/vendor/filament/forms/resources/views/components/markdown-editor.blade.php +++ /dev/null @@ -1,55 +0,0 @@ -@php - use Filament\Support\Facades\FilamentView; - - $statePath = $getStatePath(); -@endphp - - - @if ($isDisabled()) -
    - {!! str($getState())->markdown()->sanitizeHtml() !!} -
    - @else - -
    { - $wire.upload(`componentFileAttachments.{{ $statePath }}`, file, () => { - $wire - .getFormComponentFileAttachmentUrl('{{ $statePath }}') - .then((url) => { - if (! url) { - return onError() - } - - onSuccess(url) - }) - }) - }, - })" - x-ignore - wire:ignore - {{ $getExtraAlpineAttributeBag() }} - > - -
    -
    - @endif -
    diff --git a/vendor/filament/forms/resources/views/components/placeholder.blade.php b/vendor/filament/forms/resources/views/components/placeholder.blade.php deleted file mode 100644 index 9951f336..00000000 --- a/vendor/filament/forms/resources/views/components/placeholder.blade.php +++ /dev/null @@ -1,24 +0,0 @@ - -
    merge($getExtraAttributes(), escape: false) - ->class(['fi-fo-placeholder text-sm leading-6']) - }} - > - {{ $getContent() }} -
    -
    diff --git a/vendor/filament/forms/resources/views/components/radio.blade.php b/vendor/filament/forms/resources/views/components/radio.blade.php deleted file mode 100644 index 59245037..00000000 --- a/vendor/filament/forms/resources/views/components/radio.blade.php +++ /dev/null @@ -1,67 +0,0 @@ -@php - $gridDirection = $getGridDirection() ?? 'column'; - $id = $getId(); - $isDisabled = $isDisabled(); - $isInline = $isInline(); - $statePath = $getStatePath(); -@endphp - - - - @foreach ($getOptions() as $value => $label) -
    (! $isInline) && ($gridDirection === 'column'), - ]) - > - -
    - @endforeach -
    -
    diff --git a/vendor/filament/forms/resources/views/components/repeater/index.blade.php b/vendor/filament/forms/resources/views/components/repeater/index.blade.php deleted file mode 100644 index 9f189ff2..00000000 --- a/vendor/filament/forms/resources/views/components/repeater/index.blade.php +++ /dev/null @@ -1,227 +0,0 @@ -@php - use Filament\Forms\Components\Actions\Action; - - $containers = $getChildComponentContainers(); - - $addAction = $getAction($getAddActionName()); - $addBetweenAction = $getAction($getAddBetweenActionName()); - $cloneAction = $getAction($getCloneActionName()); - $collapseAllAction = $getAction($getCollapseAllActionName()); - $expandAllAction = $getAction($getExpandAllActionName()); - $deleteAction = $getAction($getDeleteActionName()); - $moveDownAction = $getAction($getMoveDownActionName()); - $moveUpAction = $getAction($getMoveUpActionName()); - $reorderAction = $getAction($getReorderActionName()); - $extraItemActions = $getExtraItemActions(); - - $isAddable = $isAddable(); - $isCloneable = $isCloneable(); - $isCollapsible = $isCollapsible(); - $isDeletable = $isDeletable(); - $isReorderableWithButtons = $isReorderableWithButtons(); - $isReorderableWithDragAndDrop = $isReorderableWithDragAndDrop(); - - $statePath = $getStatePath(); -@endphp - - -
    merge($getExtraAttributes(), escape: false) - ->class(['fi-fo-repeater grid gap-y-4']) - }} - > - @if ($isCollapsible && ($collapseAllAction->isVisible() || $expandAllAction->isVisible())) -
    count($containers) < 2, - ]) - > - @if ($collapseAllAction->isVisible()) - - {{ $collapseAllAction }} - - @endif - - @if ($expandAllAction->isVisible()) - - {{ $expandAllAction }} - - @endif -
    - @endif - - @if (count($containers)) -
      - - @foreach ($containers as $uuid => $item) - @php - $itemLabel = $getItemLabel($uuid); - $visibleExtraItemActions = array_filter( - $extraItemActions, - fn (Action $action): bool => $action(['item' => $uuid])->isVisible(), - ); - @endphp - -
    • - @if ($isReorderableWithDragAndDrop || $isReorderableWithButtons || filled($itemLabel) || $isCloneable || $isDeletable || $isCollapsible || count($visibleExtraItemActions)) -
      - @if ($isReorderableWithDragAndDrop || $isReorderableWithButtons) -
        - @if ($isReorderableWithDragAndDrop) -
      • - {{ $reorderAction }} -
      • - @endif - - @if ($isReorderableWithButtons) -
      • - {{ $moveUpAction(['item' => $uuid])->disabled($loop->first) }} -
      • - -
      • - {{ $moveDownAction(['item' => $uuid])->disabled($loop->last) }} -
      • - @endif -
      - @endif - - @if (filled($itemLabel)) -

      $isItemLabelTruncated(), - 'cursor-pointer select-none' => $isCollapsible, - ]) - > - {{ $itemLabel }} -

      - @endif - - @if ($isCloneable || $isDeletable || $isCollapsible || count($visibleExtraItemActions)) -
        - @foreach ($visibleExtraItemActions as $extraItemAction) -
      • - {{ $extraItemAction(['item' => $uuid]) }} -
      • - @endforeach - - @if ($isCloneable) -
      • - {{ $cloneAction(['item' => $uuid]) }} -
      • - @endif - - @if ($isDeletable) -
      • - {{ $deleteAction(['item' => $uuid]) }} -
      • - @endif - - @if ($isCollapsible) -
      • -
        - {{ $getAction('collapse') }} -
        - -
        - {{ $getAction('expand') }} -
        -
      • - @endif -
      - @endif -
      - @endif - -
      - {{ $item }} -
      -
    • - - @if (! $loop->last) - @if ($isAddable && $addBetweenAction->isVisible()) -
    • -
      - {{ $addBetweenAction(['afterItem' => $uuid]) }} -
      -
    • - @elseif (filled($labelBetweenItems = $getLabelBetweenItems())) -
    • - - {{ $labelBetweenItems }} - -
    • - @endif - @endif - @endforeach -
      -
    - @endif - - @if ($isAddable) -
    - {{ $addAction }} -
    - @endif -
    -
    diff --git a/vendor/filament/forms/resources/views/components/repeater/simple.blade.php b/vendor/filament/forms/resources/views/components/repeater/simple.blade.php deleted file mode 100644 index e99824bd..00000000 --- a/vendor/filament/forms/resources/views/components/repeater/simple.blade.php +++ /dev/null @@ -1,100 +0,0 @@ -@php - $containers = $getChildComponentContainers(); - - $addAction = $getAction($getAddActionName()); - $cloneAction = $getAction($getCloneActionName()); - $deleteAction = $getAction($getDeleteActionName()); - $moveDownAction = $getAction($getMoveDownActionName()); - $moveUpAction = $getAction($getMoveUpActionName()); - $reorderAction = $getAction($getReorderActionName()); - - $isAddable = $isAddable(); - $isCloneable = $isCloneable(); - $isDeletable = $isDeletable(); - $isReorderableWithButtons = $isReorderableWithButtons(); - $isReorderableWithDragAndDrop = $isReorderableWithDragAndDrop(); - - $statePath = $getStatePath(); -@endphp - - -
    merge($getExtraAttributes(), escape: false) - ->class(['fi-fo-simple-repeater grid gap-y-4']) - }} - > - @if (count($containers)) -
      - - @foreach ($containers as $uuid => $item) -
    • -
      - {{ $item }} -
      - - @if ($isReorderableWithDragAndDrop || $isReorderableWithButtons || $isCloneable || $isDeletable) -
        - @if ($isReorderableWithDragAndDrop) -
      • - {{ $reorderAction }} -
      • - @endif - - @if ($isReorderableWithButtons) -
      • - {{ $moveUpAction(['item' => $uuid])->disabled($loop->first) }} -
      • - -
      • - {{ $moveDownAction(['item' => $uuid])->disabled($loop->last) }} -
      • - @endif - - @if ($isCloneable) -
      • - {{ $cloneAction(['item' => $uuid]) }} -
      • - @endif - - @if ($isDeletable) -
      • - {{ $deleteAction(['item' => $uuid]) }} -
      • - @endif -
      - @endif -
    • - @endforeach -
      -
    - @endif - - @if ($isAddable) -
    - {{ $addAction }} -
    - @endif -
    -
    diff --git a/vendor/filament/forms/resources/views/components/rich-editor.blade.php b/vendor/filament/forms/resources/views/components/rich-editor.blade.php deleted file mode 100644 index 055d3ef1..00000000 --- a/vendor/filament/forms/resources/views/components/rich-editor.blade.php +++ /dev/null @@ -1,489 +0,0 @@ -@php - use Filament\Support\Facades\FilamentView; - - $id = $getId(); - $statePath = $getStatePath(); -@endphp - - - @if ($isDisabled()) -
    - @else - -
    - - - ! count($getToolbarButtons()), - ]) - > -
    - @if ($hasToolbarButton(['bold', 'italic', 'underline', 'strike', 'link'])) - - @if ($hasToolbarButton('bold')) - - - - @endif - - @if ($hasToolbarButton('italic')) - - - - @endif - - @if ($hasToolbarButton('underline')) - - - - @endif - - @if ($hasToolbarButton('strike')) - - - - @endif - - @if ($hasToolbarButton('link')) - - - - @endif - - @endif - - @if ($hasToolbarButton(['h1', 'h2', 'h3'])) - - @if ($hasToolbarButton('h1')) - - {{ __('filament-forms::components.rich_editor.toolbar_buttons.h1') }} - - @endif - - @if ($hasToolbarButton('h2')) - - {{ __('filament-forms::components.rich_editor.toolbar_buttons.h2') }} - - @endif - - @if ($hasToolbarButton('h3')) - - {{ __('filament-forms::components.rich_editor.toolbar_buttons.h3') }} - - @endif - - @endif - - @if ($hasToolbarButton(['blockquote', 'codeBlock', 'bulletList', 'orderedList'])) - - @if ($hasToolbarButton('blockquote')) - - - - @endif - - @if ($hasToolbarButton('codeBlock')) - - - - @endif - - @if ($hasToolbarButton('bulletList')) - - - - @endif - - @if ($hasToolbarButton('orderedList')) - - - - @endif - - @endif - - @if ($hasToolbarButton('attachFiles')) - - - - - - @endif - - @if ($hasToolbarButton(['undo', 'redo'])) - - @if ($hasToolbarButton('undo')) - - - - @endif - - @if ($hasToolbarButton('redo')) - - - - @endif - - @endif -
    - -
    - -
    -
    - - class([ - 'prose min-h-[theme(spacing.48)] max-w-none !border-none px-3 py-1.5 text-base text-gray-950 dark:prose-invert focus-visible:outline-none dark:text-white sm:text-sm sm:leading-6', - ]) - }} - > -
    -
    - @endif -
    diff --git a/vendor/filament/forms/resources/views/components/rich-editor/toolbar/button.blade.php b/vendor/filament/forms/resources/views/components/rich-editor/toolbar/button.blade.php deleted file mode 100644 index 70306357..00000000 --- a/vendor/filament/forms/resources/views/components/rich-editor/toolbar/button.blade.php +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/vendor/filament/forms/resources/views/components/rich-editor/toolbar/group.blade.php b/vendor/filament/forms/resources/views/components/rich-editor/toolbar/group.blade.php deleted file mode 100644 index dbbd28d5..00000000 --- a/vendor/filament/forms/resources/views/components/rich-editor/toolbar/group.blade.php +++ /dev/null @@ -1,3 +0,0 @@ -
    class(['flex gap-x-1']) }}> - {{ $slot }} -
    diff --git a/vendor/filament/forms/resources/views/components/section.blade.php b/vendor/filament/forms/resources/views/components/section.blade.php deleted file mode 100644 index da87a986..00000000 --- a/vendor/filament/forms/resources/views/components/section.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@php - $isAside = $isAside(); -@endphp - - - {{ $getChildComponentContainer() }} - diff --git a/vendor/filament/forms/resources/views/components/select.blade.php b/vendor/filament/forms/resources/views/components/select.blade.php deleted file mode 100644 index 0bb586e3..00000000 --- a/vendor/filament/forms/resources/views/components/select.blade.php +++ /dev/null @@ -1,165 +0,0 @@ -@php - use Filament\Support\Facades\FilamentView; - - $canSelectPlaceholder = $canSelectPlaceholder(); - $isDisabled = $isDisabled(); - $isPrefixInline = $isPrefixInline(); - $isSuffixInline = $isSuffixInline(); - $prefixActions = $getPrefixActions(); - $prefixIcon = $getPrefixIcon(); - $prefixLabel = $getPrefixLabel(); - $suffixActions = $getSuffixActions(); - $suffixIcon = $getSuffixIcon(); - $suffixLabel = $getSuffixLabel(); - $statePath = $getStatePath(); -@endphp - - - - @if ((! ($isSearchable() || $isMultiple()) && $isNative())) - - @php - $isHtmlAllowed = $isHtmlAllowed(); - @endphp - - @if ($canSelectPlaceholder) - - @endif - - @foreach ($getOptions() as $value => $label) - @if (is_array($label)) - - @foreach ($label as $groupedValue => $groupedLabel) - - @endforeach - - @else - - @endif - @endforeach - - @else -
    merge($getExtraAttributes(), escape: false) - ->merge($getExtraAlpineAttributes(), escape: false) - ->class([ - '[&_.choices\_\_inner]:ps-0' => $isPrefixInline && (count($prefixActions) || $prefixIcon || filled($prefixLabel)), - ]) - }} - > - -
    - @endif -
    -
    diff --git a/vendor/filament/forms/resources/views/components/split.blade.php b/vendor/filament/forms/resources/views/components/split.blade.php deleted file mode 100644 index 21057b1a..00000000 --- a/vendor/filament/forms/resources/views/components/split.blade.php +++ /dev/null @@ -1,63 +0,0 @@ -@php - use Filament\Support\Enums\VerticalAlignment; - - $verticalAlignment = $getVerticalAlignment(); - - if (! $verticalAlignment instanceof VerticalAlignment) { - $verticalAlignment = filled($verticalAlignment) ? (VerticalAlignment::tryFrom($verticalAlignment) ?? $verticalAlignment) : null; - } -@endphp - -
    merge($getExtraAttributes(), escape: false) - ->class([ - 'flex gap-6', - match ($getFromBreakpoint()) { - 'sm' => 'flex-col sm:flex-row ' . match ($verticalAlignment) { - VerticalAlignment::Center => 'sm:items-center', - VerticalAlignment::End => 'sm:items-end', - default => 'sm:items-start', - }, - 'md' => 'flex-col md:flex-row ' . match ($verticalAlignment) { - VerticalAlignment::Center => 'md:items-center', - VerticalAlignment::End => 'md:items-end', - default => 'md:items-start', - }, - 'lg' => 'flex-col lg:flex-row ' . match ($verticalAlignment) { - VerticalAlignment::Center => 'lg:items-center', - VerticalAlignment::End => 'lg:items-end', - default => 'lg:items-start', - }, - 'xl' => 'flex-col xl:flex-row ' . match ($verticalAlignment) { - VerticalAlignment::Center => 'xl:items-center', - VerticalAlignment::End => 'xl:items-end', - default => 'xl:items-start', - }, - '2xl' => 'flex-col 2xl:flex-row ' . match ($verticalAlignment) { - VerticalAlignment::Center => '2xl:items-center', - VerticalAlignment::End => '2xl:items-end', - default => '2xl:items-start', - }, - default => match ($verticalAlignment) { - VerticalAlignment::Center => 'items-center', - VerticalAlignment::End => 'items-end', - default => 'items-start', - }, - }, - ]) - }} -> - @foreach ($getChildComponentContainers() as $container) - @foreach ($container->getComponents() as $component) -
    $component->canGrow(), - ]) - > - {{ $component }} -
    - @endforeach - @endforeach -
    diff --git a/vendor/filament/forms/resources/views/components/tabs.blade.php b/vendor/filament/forms/resources/views/components/tabs.blade.php deleted file mode 100644 index 12ba576a..00000000 --- a/vendor/filament/forms/resources/views/components/tabs.blade.php +++ /dev/null @@ -1,105 +0,0 @@ -@php - use Filament\Forms\Components\Tabs\Tab; - - $isContained = $isContained(); -@endphp - -
    merge([ - 'id' => $getId(), - 'wire:key' => "{$this->getId()}.{$getStatePath()}." . \Filament\Forms\Components\Tabs::class . '.container', - ], escape: false) - ->merge($getExtraAttributes(), escape: false) - ->merge($getExtraAlpineAttributes(), escape: false) - ->class([ - 'fi-fo-tabs flex flex-col', - 'fi-contained rounded-xl bg-white shadow-sm ring-1 ring-gray-950/5 dark:bg-gray-900 dark:ring-white/10' => $isContained, - ]) - }} -> - - - - @foreach ($getChildComponentContainer()->getComponents() as $tab) - @php - $tabId = $tab->getId(); - @endphp - - - {{ $tab->getLabel() }} - - @endforeach - - - @foreach ($getChildComponentContainer()->getComponents() as $tab) - {{ $tab }} - @endforeach -
    diff --git a/vendor/filament/forms/resources/views/components/tabs/tab.blade.php b/vendor/filament/forms/resources/views/components/tabs/tab.blade.php deleted file mode 100644 index 8816b078..00000000 --- a/vendor/filament/forms/resources/views/components/tabs/tab.blade.php +++ /dev/null @@ -1,34 +0,0 @@ -@php - $id = $getId(); - $isContained = $getContainer()->getParentComponent()->isContained(); - - $activeTabClasses = \Illuminate\Support\Arr::toCssClasses([ - 'fi-active', - 'p-6' => $isContained, - 'mt-6' => ! $isContained, - ]); - - $inactiveTabClasses = 'invisible h-0 overflow-y-hidden p-0'; -@endphp - -
    merge([ - 'aria-labelledby' => $id, - 'id' => $id, - 'role' => 'tabpanel', - 'tabindex' => '0', - 'wire:key' => "{$this->getId()}.{$getStatePath()}." . \Filament\Forms\Components\Tab::class . ".tabs.{$id}", - ], escape: false) - ->merge($getExtraAttributes(), escape: false) - ->class(['fi-fo-tabs-tab outline-none']) - }} -> - {{ $getChildComponentContainer() }} -
    diff --git a/vendor/filament/forms/resources/views/components/tags-input.blade.php b/vendor/filament/forms/resources/views/components/tags-input.blade.php deleted file mode 100644 index 72aa2078..00000000 --- a/vendor/filament/forms/resources/views/components/tags-input.blade.php +++ /dev/null @@ -1,124 +0,0 @@ -@php - use Filament\Support\Facades\FilamentView; - - $color = $getColor() ?? 'primary'; - $hasInlineLabel = $hasInlineLabel(); - $id = $getId(); - $isDisabled = $isDisabled(); - $isReorderable = $isReorderable(); - $statePath = $getStatePath(); -@endphp - - - $hasInlineLabel, - ]) - > - {{ $getLabel() }} - - - -
    - - - - @foreach ($getSuggestions() as $suggestion) - - @endforeach - - -
    $isDisabled, - ]) - > -
    - -
    -
    -
    -
    -
    diff --git a/vendor/filament/forms/resources/views/components/text-input.blade.php b/vendor/filament/forms/resources/views/components/text-input.blade.php deleted file mode 100644 index 60d150c8..00000000 --- a/vendor/filament/forms/resources/views/components/text-input.blade.php +++ /dev/null @@ -1,104 +0,0 @@ -@php - use Filament\Forms\Components\TextInput\Actions\HidePasswordAction; - use Filament\Forms\Components\TextInput\Actions\ShowPasswordAction; - - $datalistOptions = $getDatalistOptions(); - $extraAlpineAttributes = $getExtraAlpineAttributes(); - $id = $getId(); - $isConcealed = $isConcealed(); - $isDisabled = $isDisabled(); - $isPasswordRevealable = $isPasswordRevealable(); - $isPrefixInline = $isPrefixInline(); - $isSuffixInline = $isSuffixInline(); - $mask = $getMask(); - $prefixActions = $getPrefixActions(); - $prefixIcon = $getPrefixIcon(); - $prefixLabel = $getPrefixLabel(); - $suffixActions = $getSuffixActions(); - $suffixIcon = $getSuffixIcon(); - $suffixLabel = $getSuffixLabel(); - $statePath = $getStatePath(); - - if ($isPasswordRevealable) { - $xData = '{ isPasswordRevealed: false }'; - } elseif (count($extraAlpineAttributes) || filled($mask)) { - $xData = '{}'; - } else { - $xData = null; - } - - if ($isPasswordRevealable) { - $type = null; - } elseif (filled($mask)) { - $type = 'text'; - } else { - $type = $getType(); - } -@endphp - - - - - - - @if ($datalistOptions) - - @foreach ($datalistOptions as $option) - - @endif - diff --git a/vendor/filament/forms/resources/views/components/textarea.blade.php b/vendor/filament/forms/resources/views/components/textarea.blade.php deleted file mode 100644 index bb6a4d49..00000000 --- a/vendor/filament/forms/resources/views/components/textarea.blade.php +++ /dev/null @@ -1,77 +0,0 @@ -@php - use Filament\Support\Facades\FilamentView; - - $hasInlineLabel = $hasInlineLabel(); - $isConcealed = $isConcealed(); - $isDisabled = $isDisabled(); - $rows = $getRows(); - $shouldAutosize = $shouldAutosize(); - $statePath = $getStatePath(); - - $initialHeight = (($rows ?? 2) * 1.5) + 0.75; -@endphp - - - $hasInlineLabel, - ]) - > - {{ $getLabel() }} - - - - - - diff --git a/vendor/filament/forms/resources/views/components/toggle-buttons/grouped.blade.php b/vendor/filament/forms/resources/views/components/toggle-buttons/grouped.blade.php deleted file mode 100644 index fa191d33..00000000 --- a/vendor/filament/forms/resources/views/components/toggle-buttons/grouped.blade.php +++ /dev/null @@ -1,61 +0,0 @@ -@php - $hasInlineLabel = $hasInlineLabel(); - $id = $getId(); - $isDisabled = $isDisabled(); - $isMultiple = $isMultiple(); - $statePath = $getStatePath(); -@endphp - - - $hasInlineLabel, - ]) - > - {{ $getLabel() }} - - - - @foreach ($getOptions() as $value => $label) - @php - $inputId = "{$id}-{$value}"; - $shouldOptionBeDisabled = $isDisabled || $isOptionDisabled($value, $label); - @endphp - - class(['peer pointer-events-none absolute opacity-0']) }} - /> - - - {{ $label }} - - @endforeach - - diff --git a/vendor/filament/forms/resources/views/components/toggle-buttons/index.blade.php b/vendor/filament/forms/resources/views/components/toggle-buttons/index.blade.php deleted file mode 100644 index e324355f..00000000 --- a/vendor/filament/forms/resources/views/components/toggle-buttons/index.blade.php +++ /dev/null @@ -1,80 +0,0 @@ -@php - $gridDirection = $getGridDirection() ?? 'column'; - $hasInlineLabel = $hasInlineLabel(); - $id = $getId(); - $isDisabled = $isDisabled(); - $isInline = $isInline(); - $isMultiple = $isMultiple(); - $statePath = $getStatePath(); -@endphp - - - $hasInlineLabel, - ]) - > - {{ $getLabel() }} - - - - @foreach ($getOptions() as $value => $label) - @php - $inputId = "{$id}-{$value}"; - $shouldOptionBeDisabled = $isDisabled || $isOptionDisabled($value, $label); - @endphp - -
    (! $isInline) && ($gridDirection === 'column'), - ]) - > - class(['peer pointer-events-none absolute opacity-0']) }} - /> - - - {{ $label }} - -
    - @endforeach -
    -
    diff --git a/vendor/filament/forms/resources/views/components/toggle.blade.php b/vendor/filament/forms/resources/views/components/toggle.blade.php deleted file mode 100644 index 607fa22b..00000000 --- a/vendor/filament/forms/resources/views/components/toggle.blade.php +++ /dev/null @@ -1,130 +0,0 @@ -@php - $offColor = $getOffColor() ?? 'gray'; - $onColor = $getOnColor() ?? 'primary'; - $statePath = $getStatePath(); -@endphp - - - @capture($content) - - @endcapture - - @if ($isInline()) - - {{ $content() }} - - @else - {{ $content() }} - @endif - diff --git a/vendor/filament/forms/resources/views/components/wizard.blade.php b/vendor/filament/forms/resources/views/components/wizard.blade.php deleted file mode 100644 index aaf4ad0c..00000000 --- a/vendor/filament/forms/resources/views/components/wizard.blade.php +++ /dev/null @@ -1,277 +0,0 @@ -@php - $isContained = $isContained(); - $statePath = $getStatePath(); -@endphp - -
    merge([ - 'id' => $getId(), - ], escape: false) - ->merge($getExtraAttributes(), escape: false) - ->merge($getExtraAlpineAttributes(), escape: false) - ->class([ - 'fi-fo-wizard', - 'fi-contained rounded-xl bg-white shadow-sm ring-1 ring-gray-950/5 dark:bg-gray-900 dark:ring-white/10' => $isContained, - ]) - }} -> - - -
      $isContained, - 'rounded-xl bg-white shadow-sm ring-1 ring-gray-950/5 dark:bg-gray-900 dark:ring-white/10' => ! $isContained, - ]) - > - @foreach ($getChildComponentContainer()->getComponents() as $step) -
    1. - - - @if (! $loop->last) - - @endif -
    2. - @endforeach -
    - - @foreach ($getChildComponentContainer()->getComponents() as $step) - {{ $step }} - @endforeach - -
    $isContained, - 'mt-6' => ! $isContained, - ]) - > - - {{ $getAction('previous') }} - - - - {{ $getCancelAction() }} - - - - {{ $getAction('next') }} - - - - {{ $getSubmitAction() }} - -
    -
    diff --git a/vendor/filament/forms/resources/views/components/wizard/step.blade.php b/vendor/filament/forms/resources/views/components/wizard/step.blade.php deleted file mode 100644 index 599b4867..00000000 --- a/vendor/filament/forms/resources/views/components/wizard/step.blade.php +++ /dev/null @@ -1,40 +0,0 @@ -@php - $id = $getId(); - $isContained = $getContainer()->getParentComponent()->isContained(); - - $activeStepClasses = \Illuminate\Support\Arr::toCssClasses([ - 'fi-active', - 'p-6' => $isContained, - 'mt-6' => ! $isContained, - ]); - - $inactiveStepClasses = 'invisible h-0 overflow-y-hidden p-0'; -@endphp - -
    merge([ - 'aria-labelledby' => $id, - 'id' => $id, - 'role' => 'tabpanel', - 'tabindex' => '0', - ], escape: false) - ->merge($getExtraAttributes(), escape: false) - ->class(['fi-fo-wizard-step outline-none']) - }} -> - {{ $getChildComponentContainer() }} -
    diff --git a/vendor/filament/forms/src/Commands/Aliases/MakeFieldCommand.php b/vendor/filament/forms/src/Commands/Aliases/MakeFieldCommand.php deleted file mode 100644 index 75e57cfe..00000000 --- a/vendor/filament/forms/src/Commands/Aliases/MakeFieldCommand.php +++ /dev/null @@ -1,12 +0,0 @@ -getModel($model); - - if (blank($model)) { - return '//'; - } - - $table = $this->getModelTable($model); - - if (blank($table)) { - return '//'; - } - - $components = []; - - foreach ($table->getColumns() as $column) { - if ($column->getAutoincrement()) { - continue; - } - - $columnName = $column->getName(); - - if (str($columnName)->is([ - app($model)->getKeyName(), - 'created_at', - 'deleted_at', - 'updated_at', - '*_token', - ])) { - continue; - } - - $componentData = []; - - $componentData['type'] = match (true) { - $column->getType()::class === Types\BooleanType::class => Forms\Components\Toggle::class, - in_array($column->getType()::class, [Types\DateImmutableType::class, Types\DateType::class]) => Forms\Components\DatePicker::class, - in_array($column->getType()::class, [Types\DateTimeImmutableType::class, Types\DateTimeType::class, Types\DateTimeTzImmutableType::class, Types\DateTimeTzType::class]) => Forms\Components\DateTimePicker::class, - $column->getType()::class === Types\TextType::class => Forms\Components\Textarea::class, - $columnName === 'image', str($columnName)->startsWith('image_'), str($columnName)->contains('_image_'), str($columnName)->endsWith('_image') => Forms\Components\FileUpload::class, - default => Forms\Components\TextInput::class, - }; - - if (str($columnName)->endsWith('_id')) { - $guessedRelationshipName = $this->guessBelongsToRelationshipName($column, $model); - - if (filled($guessedRelationshipName)) { - $guessedRelationshipTitleColumnName = $this->guessBelongsToRelationshipTitleColumnName($column, app($model)->{$guessedRelationshipName}()->getModel()::class); - - $componentData['type'] = Forms\Components\Select::class; - $componentData['relationship'] = [$guessedRelationshipName, $guessedRelationshipTitleColumnName]; - } - } - - if (in_array($columnName, [ - 'id', - 'sku', - 'uuid', - ])) { - $componentData['label'] = [Str::upper($columnName)]; - } - - if ($componentData['type'] === Forms\Components\TextInput::class) { - if (str($columnName)->contains(['email'])) { - $componentData['email'] = []; - } - - if (str($columnName)->contains(['password'])) { - $componentData['password'] = []; - } - - if (str($columnName)->contains(['phone', 'tel'])) { - $componentData['tel'] = []; - } - } - - if ($componentData['type'] === Forms\Components\FileUpload::class) { - $componentData['image'] = []; - } - - if ($column->getNotnull()) { - $componentData['required'] = []; - } - - if (in_array($column->getType()::class, [ - Types\BigIntType::class, - Types\DecimalType::class, - Types\FloatType::class, - Types\IntegerType::class, - Types\SmallIntType::class, - ])) { - if ($componentData['type'] === Forms\Components\TextInput::class) { - $componentData['numeric'] = []; - } - - if (filled($column->getDefault())) { - $componentData['default'] = [$column->getDefault()]; - } - - if (in_array($columnName, [ - 'cost', - 'money', - 'price', - ])) { - $componentData['prefix'] = ['$']; - } - } elseif (in_array($componentData['type'], [ - Forms\Components\TextInput::class, - Forms\Components\Textarea::class, - ]) && ($length = $column->getLength())) { - $componentData['maxLength'] = [$length]; - - if (filled($column->getDefault())) { - $componentData['default'] = [$column->getDefault()]; - } - } - - if ($componentData['type'] === Forms\Components\Textarea::class) { - $componentData['columnSpanFull'] = []; - } - - $components[$columnName] = $componentData; - } - - $output = count($components) ? '' : '//'; - - foreach ($components as $componentName => $componentData) { - // Constructor - $output .= (string) str($componentData['type'])->after('Filament\\'); - $output .= '::make(\''; - $output .= $componentName; - $output .= '\')'; - - unset($componentData['type']); - - // Configuration - foreach ($componentData as $methodName => $parameters) { - $output .= PHP_EOL; - $output .= ' ->'; - $output .= $methodName; - $output .= '('; - $output .= collect($parameters) - ->map(function (mixed $parameterValue, int | string $parameterName): string { - $parameterValue = match (true) { - /** @phpstan-ignore-next-line */ - is_bool($parameterValue) => $parameterValue ? 'true' : 'false', - is_null($parameterValue) => 'null', - is_numeric($parameterValue) => $parameterValue, - default => "'{$parameterValue}'", - }; - - if (is_numeric($parameterName)) { - return $parameterValue; - } - - return "{$parameterName}: {$parameterValue}"; - }) - ->implode(', '); - $output .= ')'; - } - - // Termination - $output .= ','; - - if (! (array_key_last($components) === $componentName)) { - $output .= PHP_EOL; - } - } - - return $output; - } -} diff --git a/vendor/filament/forms/src/Commands/MakeFieldCommand.php b/vendor/filament/forms/src/Commands/MakeFieldCommand.php deleted file mode 100644 index 95d3412e..00000000 --- a/vendor/filament/forms/src/Commands/MakeFieldCommand.php +++ /dev/null @@ -1,74 +0,0 @@ -argument('name') ?? text( - label: 'What is the field name?', - placeholder: 'RangeSlider', - required: true, - )) - ->trim('/') - ->trim('\\') - ->trim(' ') - ->replace('/', '\\'); - $fieldClass = (string) str($field)->afterLast('\\'); - $fieldNamespace = str($field)->contains('\\') ? - (string) str($field)->beforeLast('\\') : - ''; - - $view = str($field) - ->prepend('forms\\components\\') - ->explode('\\') - ->map(static fn ($segment) => Str::kebab($segment)) - ->implode('.'); - - $path = app_path( - (string) str($field) - ->prepend('Forms\\Components\\') - ->replace('\\', '/') - ->append('.php'), - ); - $viewPath = resource_path( - (string) str($view) - ->replace('.', '/') - ->prepend('views/') - ->append('.blade.php'), - ); - - if (! $this->option('force') && $this->checkForCollision([ - $path, - ])) { - return static::INVALID; - } - - $this->copyStubToApp('Field', $path, [ - 'class' => $fieldClass, - 'namespace' => 'App\\Forms\\Components' . ($fieldNamespace !== '' ? "\\{$fieldNamespace}" : ''), - 'view' => $view, - ]); - - if (! $this->fileExists($viewPath)) { - $this->copyStubToApp('FieldView', $viewPath); - } - - $this->components->info("Filament form field [{$path}] created successfully."); - - return static::SUCCESS; - } -} diff --git a/vendor/filament/forms/src/Commands/MakeFormCommand.php b/vendor/filament/forms/src/Commands/MakeFormCommand.php deleted file mode 100644 index 00cbeefc..00000000 --- a/vendor/filament/forms/src/Commands/MakeFormCommand.php +++ /dev/null @@ -1,108 +0,0 @@ -argument('name') ?? text( - label: 'What is the form name?', - placeholder: 'Products/CreateProduct', - required: true, - )) - ->trim('/') - ->trim('\\') - ->trim(' ') - ->replace('/', '\\'); - $componentClass = (string) str($component)->afterLast('\\'); - $componentNamespace = str($component)->contains('\\') ? - (string) str($component)->beforeLast('\\') : - ''; - - $view = str($component) - ->replace('\\', '/') - ->prepend('Livewire/') - ->explode('/') - ->map(fn ($segment) => Str::lower(Str::kebab($segment))) - ->implode('.'); - - $model = (string) str($this->argument('model') ?? - text( - label: 'What is the model name?', - placeholder: 'Product', - required: $this->option('edit') - ))->replace('/', '\\'); - $modelClass = (string) str($model)->afterLast('\\'); - - if ($this->option('edit')) { - $isEditForm = true; - } elseif (filled($model)) { - $isEditForm = select( - label: 'Which namespace would you like to create this in?', - options: [ - 'Create', - 'Edit', - ] - ) === 'Edit'; - } else { - $isEditForm = false; - } - - $path = (string) str($component) - ->prepend('/') - ->prepend(app_path('Livewire/')) - ->replace('\\', '/') - ->replace('//', '/') - ->append('.php'); - - $viewPath = resource_path( - (string) str($view) - ->replace('.', '/') - ->prepend('views/') - ->append('.blade.php'), - ); - - if (! $this->option('force') && $this->checkForCollision([$path, $viewPath])) { - return static::INVALID; - } - - $this->copyStubToApp(filled($model) ? ($isEditForm ? 'EditForm' : 'CreateForm') : 'Form', $path, [ - 'class' => $componentClass, - 'model' => $model, - 'modelClass' => $modelClass, - 'namespace' => 'App\\Livewire' . ($componentNamespace !== '' ? "\\{$componentNamespace}" : ''), - 'schema' => $this->indentString((filled($model) && $this->option('generate')) ? $this->getResourceFormSchema( - 'App\\Models\\' . $model, - ) : '//', 4), - 'view' => $view, - ]); - - $this->copyStubToApp('FormView', $viewPath, [ - 'submitAction' => filled($model) ? ($isEditForm ? 'save' : 'create') : 'submit', - ]); - - $this->components->info("Filament form [{$path}] created successfully."); - - return static::SUCCESS; - } -} diff --git a/vendor/filament/forms/src/Commands/MakeLayoutComponentCommand.php b/vendor/filament/forms/src/Commands/MakeLayoutComponentCommand.php deleted file mode 100644 index 8a79a5a5..00000000 --- a/vendor/filament/forms/src/Commands/MakeLayoutComponentCommand.php +++ /dev/null @@ -1,74 +0,0 @@ -argument('name') ?? text( - label: 'What is the layout name?', - placeholder: 'Wizard', - required: true, - )) - ->trim('/') - ->trim('\\') - ->trim(' ') - ->replace('/', '\\'); - $componentClass = (string) str($component)->afterLast('\\'); - $componentNamespace = str($component)->contains('\\') ? - (string) str($component)->beforeLast('\\') : - ''; - - $view = str($component) - ->prepend('forms\\components\\') - ->explode('\\') - ->map(fn ($segment) => Str::kebab($segment)) - ->implode('.'); - - $path = app_path( - (string) str($component) - ->prepend('Forms\\Components\\') - ->replace('\\', '/') - ->append('.php'), - ); - $viewPath = resource_path( - (string) str($view) - ->replace('.', '/') - ->prepend('views/') - ->append('.blade.php'), - ); - - if (! $this->option('force') && $this->checkForCollision([ - $path, - ])) { - return static::INVALID; - } - - $this->copyStubToApp('LayoutComponent', $path, [ - 'class' => $componentClass, - 'namespace' => 'App\\Forms\\Components' . ($componentNamespace !== '' ? "\\{$componentNamespace}" : ''), - 'view' => $view, - ]); - - if (! $this->fileExists($viewPath)) { - $this->copyStubToApp('LayoutComponentView', $viewPath); - } - - $this->components->info("Filament form layout component [{$path}] created successfully."); - - return static::SUCCESS; - } -} diff --git a/vendor/filament/forms/src/ComponentContainer.php b/vendor/filament/forms/src/ComponentContainer.php deleted file mode 100644 index c0507739..00000000 --- a/vendor/filament/forms/src/ComponentContainer.php +++ /dev/null @@ -1,80 +0,0 @@ -livewire($livewire); - } - - public static function make(HasForms $livewire): static - { - $static = app(static::class, ['livewire' => $livewire]); - $static->configure(); - - return $static; - } - - /** - * @return array - */ - protected function resolveDefaultClosureDependencyForEvaluationByName(string $parameterName): array - { - return match ($parameterName) { - 'livewire' => [$this->getLivewire()], - 'model' => [$this->getModel()], - 'record' => [$this->getRecord()], - default => parent::resolveDefaultClosureDependencyForEvaluationByName($parameterName), - }; - } - - /** - * @return array - */ - protected function resolveDefaultClosureDependencyForEvaluationByType(string $parameterType): array - { - $record = $this->getRecord(); - - if (! $record) { - return parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType); - } - - return match ($parameterType) { - Model::class, $record::class => [$record], - default => parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType), - }; - } -} diff --git a/vendor/filament/forms/src/Components/Actions.php b/vendor/filament/forms/src/Components/Actions.php deleted file mode 100644 index 5a89ce49..00000000 --- a/vendor/filament/forms/src/Components/Actions.php +++ /dev/null @@ -1,62 +0,0 @@ - $actions - */ - final public function __construct(array $actions) - { - $this->actions($actions); - } - - /** - * @param array $actions - */ - public static function make(array $actions): static - { - $static = app(static::class, ['actions' => $actions]); - $static->configure(); - - return $static; - } - - /** - * @param array $actions - */ - public function actions(array $actions): static - { - $this->childComponents(array_map( - fn (Action $action): Component => $action->toFormComponent(), - $actions, - )); - - return $this; - } - - public function fullWidth(bool | Closure $isFullWidth = true): static - { - $this->isFullWidth = $isFullWidth; - - return $this; - } - - public function isFullWidth(): bool - { - return (bool) $this->evaluate($this->isFullWidth); - } -} diff --git a/vendor/filament/forms/src/Components/Actions/Action.php b/vendor/filament/forms/src/Components/Actions/Action.php deleted file mode 100644 index ce484703..00000000 --- a/vendor/filament/forms/src/Components/Actions/Action.php +++ /dev/null @@ -1,101 +0,0 @@ -isLivewireClickHandlerEnabled()) { - return null; - } - - if (is_string($this->action)) { - return $this->action; - } - - if ($event = $this->getLivewireEventClickHandler()) { - return $event; - } - - $argumentsParameter = ''; - - if (count($arguments = $this->getArguments())) { - $argumentsParameter .= ', '; - $argumentsParameter .= Js::from($arguments); - $argumentsParameter .= ''; - } - - $componentKey = $this->getComponent()->getKey(); - - if (blank($componentKey)) { - $componentClass = $this->getComponent()::class; - - throw new Exception("The form component [{$componentClass}] must have a [key()] set in order to use actions. This [key()] must be a unique identifier for the component."); - } - - return "mountFormComponentAction('{$componentKey}', '{$this->getName()}'{$argumentsParameter})"; - } - - public function toFormComponent(): ActionContainer - { - $component = ActionContainer::make($this); - - $this->component($component); - - return $component; - } - - /** - * @return array - */ - protected function resolveDefaultClosureDependencyForEvaluationByName(string $parameterName): array - { - return match ($parameterName) { - 'component' => [$this->getComponent()], - 'context', 'operation' => [$this->getComponent()->getContainer()->getOperation()], - 'get' => [$this->getComponent()->getGetCallback()], - 'model' => [$this->getComponent()->getModel()], - 'record' => [$this->getComponent()->getRecord()], - 'set' => [$this->getComponent()->getSetCallback()], - 'state' => [$this->getComponent()->getState()], - default => parent::resolveDefaultClosureDependencyForEvaluationByName($parameterName), - }; - } - - /** - * @return array - */ - protected function resolveDefaultClosureDependencyForEvaluationByType(string $parameterType): array - { - $record = $this->getComponent()->getRecord(); - - if (! $record) { - return parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType); - } - - return match ($parameterType) { - Model::class, $record::class => [$record], - default => parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType), - }; - } - - public function getInfolistName(): string - { - return 'mountedFormComponentActionInfolist'; - } -} diff --git a/vendor/filament/forms/src/Components/Actions/ActionContainer.php b/vendor/filament/forms/src/Components/Actions/ActionContainer.php deleted file mode 100644 index fd261aab..00000000 --- a/vendor/filament/forms/src/Components/Actions/ActionContainer.php +++ /dev/null @@ -1,36 +0,0 @@ -action = $action; - $this->registerActions([$action]); - } - - public static function make(Action $action): static - { - $static = app(static::class, ['action' => $action]); - $static->configure(); - - return $static; - } - - public function getKey(): string - { - return parent::getKey() ?? "{$this->getStatePath()}.{$this->action->getName()}Action"; - } - - public function isHidden(): bool - { - return $this->action->isHidden(); - } -} diff --git a/vendor/filament/forms/src/Components/Actions/Concerns/BelongsToComponent.php b/vendor/filament/forms/src/Components/Actions/Concerns/BelongsToComponent.php deleted file mode 100644 index 38ba97aa..00000000 --- a/vendor/filament/forms/src/Components/Actions/Concerns/BelongsToComponent.php +++ /dev/null @@ -1,28 +0,0 @@ -component = $component; - - return $this; - } - - public function getComponent(): Component - { - return $this->component; - } - - public function getLivewire(): HasForms - { - return $this->getComponent()->getLivewire(); - } -} diff --git a/vendor/filament/forms/src/Components/BaseFileUpload.php b/vendor/filament/forms/src/Components/BaseFileUpload.php deleted file mode 100644 index a06d626b..00000000 --- a/vendor/filament/forms/src/Components/BaseFileUpload.php +++ /dev/null @@ -1,864 +0,0 @@ - | Arrayable | Closure | null - */ - protected array | Arrayable | Closure | null $acceptedFileTypes = null; - - protected bool | Closure $isDeletable = true; - - protected bool | Closure $isDownloadable = false; - - protected bool | Closure $isOpenable = false; - - protected bool | Closure $isPreviewable = true; - - protected bool | Closure $isReorderable = false; - - protected string | Closure | null $directory = null; - - protected string | Closure | null $diskName = null; - - protected bool | Closure $isMultiple = false; - - protected int | Closure | null $maxSize = null; - - protected int | Closure | null $minSize = null; - - protected int | Closure | null $maxFiles = null; - - protected int | Closure | null $minFiles = null; - - protected bool | Closure $shouldPreserveFilenames = false; - - protected bool | Closure $shouldMoveFiles = false; - - protected bool | Closure $shouldStoreFiles = true; - - protected bool | Closure $shouldFetchFileInformation = true; - - protected string | Closure | null $fileNamesStatePath = null; - - protected string | Closure $visibility = 'public'; - - protected ?Closure $deleteUploadedFileUsing = null; - - protected ?Closure $getUploadedFileNameForStorageUsing = null; - - protected ?Closure $getUploadedFileUsing = null; - - protected ?Closure $reorderUploadedFilesUsing = null; - - protected ?Closure $saveUploadedFileUsing = null; - - protected function setUp(): void - { - parent::setUp(); - - $this->afterStateHydrated(static function (BaseFileUpload $component, string | array | null $state): void { - if (blank($state)) { - $component->state([]); - - return; - } - - $shouldFetchFileInformation = $component->shouldFetchFileInformation(); - - $files = collect(Arr::wrap($state)) - ->filter(static function (string $file) use ($component, $shouldFetchFileInformation): bool { - if (blank($file)) { - return false; - } - - if (! $shouldFetchFileInformation) { - return true; - } - - try { - return $component->getDisk()->exists($file); - } catch (UnableToCheckFileExistence $exception) { - return false; - } - }) - ->mapWithKeys(static fn (string $file): array => [((string) Str::uuid()) => $file]) - ->all(); - - $component->state($files); - }); - - $this->afterStateUpdated(static function (BaseFileUpload $component, $state) { - if ($state instanceof TemporaryUploadedFile) { - return; - } - - if (blank($state)) { - return; - } - - if (is_array($state)) { - return; - } - - $component->state([(string) Str::uuid() => $state]); - }); - - $this->beforeStateDehydrated(static function (BaseFileUpload $component): void { - $component->saveUploadedFiles(); - }); - - $this->dehydrateStateUsing(static function (BaseFileUpload $component, ?array $state): string | array | null | TemporaryUploadedFile { - $files = array_values($state ?? []); - - if ($component->isMultiple()) { - return $files; - } - - return $files[0] ?? null; - }); - - $this->getUploadedFileUsing(static function (BaseFileUpload $component, string $file, string | array | null $storedFileNames): ?array { - /** @var FilesystemAdapter $storage */ - $storage = $component->getDisk(); - - $shouldFetchFileInformation = $component->shouldFetchFileInformation(); - - if ($shouldFetchFileInformation) { - try { - if (! $storage->exists($file)) { - return null; - } - } catch (UnableToCheckFileExistence $exception) { - return null; - } - } - - $url = null; - - if ($component->getVisibility() === 'private') { - try { - $url = $storage->temporaryUrl( - $file, - now()->addMinutes(5), - ); - } catch (Throwable $exception) { - // This driver does not support creating temporary URLs. - } - } - - $url ??= $storage->url($file); - - return [ - 'name' => ($component->isMultiple() ? ($storedFileNames[$file] ?? null) : $storedFileNames) ?? basename($file), - 'size' => $shouldFetchFileInformation ? $storage->size($file) : 0, - 'type' => $shouldFetchFileInformation ? $storage->mimeType($file) : null, - 'url' => $url, - ]; - }); - - $this->getUploadedFileNameForStorageUsing(static function (BaseFileUpload $component, TemporaryUploadedFile $file) { - return $component->shouldPreserveFilenames() ? $file->getClientOriginalName() : (Str::ulid() . '.' . $file->getClientOriginalExtension()); - }); - - $this->saveUploadedFileUsing(static function (BaseFileUpload $component, TemporaryUploadedFile $file): ?string { - try { - if (! $file->exists()) { - return null; - } - } catch (UnableToCheckFileExistence $exception) { - return null; - } - - if ( - $component->shouldMoveFiles() && - ($component->getDiskName() == (fn (): string => $this->disk)->call($file)) - ) { - $newPath = trim($component->getDirectory() . '/' . $component->getUploadedFileNameForStorage($file), '/'); - - $component->getDisk()->move((fn (): string => $this->path)->call($file), $newPath); - - return $newPath; - } - - $storeMethod = $component->getVisibility() === 'public' ? 'storePubliclyAs' : 'storeAs'; - - return $file->{$storeMethod}( - $component->getDirectory(), - $component->getUploadedFileNameForStorage($file), - $component->getDiskName(), - ); - }); - } - - protected function callAfterStateUpdatedHook(Closure $hook): void - { - $state = $this->getState(); - - $this->evaluate($hook, [ - 'state' => $this->isMultiple() ? $state : Arr::first($state ?? []), - 'old' => $this->isMultiple() ? $this->getOldState() : Arr::first($this->getOldState() ?? []), - ]); - } - - /** - * @param array | Arrayable | Closure $types - */ - public function acceptedFileTypes(array | Arrayable | Closure $types): static - { - $this->acceptedFileTypes = $types; - - $this->rule(static function (BaseFileUpload $component) { - $types = implode(',', ($component->getAcceptedFileTypes() ?? [])); - - return "mimetypes:{$types}"; - }); - - return $this; - } - - public function deletable(bool | Closure $condition = true): static - { - $this->isDeletable = $condition; - - return $this; - } - - public function directory(string | Closure | null $directory): static - { - $this->directory = $directory; - - return $this; - } - - public function disk(string | Closure | null $name): static - { - $this->diskName = $name; - - return $this; - } - - public function downloadable(bool | Closure $condition = true): static - { - $this->isDownloadable = $condition; - - return $this; - } - - public function openable(bool | Closure $condition = true): static - { - $this->isOpenable = $condition; - - return $this; - } - - public function reorderable(bool | Closure $condition = true): static - { - $this->isReorderable = $condition; - - return $this; - } - - public function previewable(bool | Closure $condition = true): static - { - $this->isPreviewable = $condition; - - return $this; - } - - /** - * @deprecated Use `downloadable()` instead. - */ - public function enableDownload(bool | Closure $condition = true): static - { - $this->downloadable($condition); - - return $this; - } - - /** - * @deprecated Use `openable()` instead. - */ - public function enableOpen(bool | Closure $condition = true): static - { - $this->openable($condition); - - return $this; - } - - /** - * @deprecated Use `reorderable()` instead. - */ - public function enableReordering(bool | Closure $condition = true): static - { - $this->reorderable($condition); - - return $this; - } - - /** - * @deprecated Use `previewable()` instead. - */ - public function disablePreview(bool | Closure $condition = true): static - { - $this->previewable(fn (BaseFileUpload $component): bool => ! $component->evaluate($condition)); - - return $this; - } - - public function storeFileNamesIn(string | Closure | null $statePath): static - { - $this->fileNamesStatePath = $statePath; - - return $this; - } - - public function preserveFilenames(bool | Closure $condition = true): static - { - $this->shouldPreserveFilenames = $condition; - - return $this; - } - - public function moveFiles(bool | Closure $condition = true): static - { - $this->shouldMoveFiles = $condition; - - return $this; - } - - /** - * @deprecated Use `moveFiles()` instead. - */ - public function moveFile(bool | Closure $condition = true): static - { - $this->moveFiles($condition); - - return $this; - } - - public function fetchFileInformation(bool | Closure $condition = true): static - { - $this->shouldFetchFileInformation = $condition; - - return $this; - } - - public function maxSize(int | Closure | null $size): static - { - $this->maxSize = $size; - - $this->rule(static function (BaseFileUpload $component): string { - $size = $component->getMaxSize(); - - return "max:{$size}"; - }); - - return $this; - } - - public function minSize(int | Closure | null $size): static - { - $this->minSize = $size; - - $this->rule(static function (BaseFileUpload $component): string { - $size = $component->getMinSize(); - - return "min:{$size}"; - }); - - return $this; - } - - public function maxFiles(int | Closure | null $count): static - { - $this->maxFiles = $count; - - return $this; - } - - public function minFiles(int | Closure | null $count): static - { - $this->minFiles = $count; - - return $this; - } - - public function multiple(bool | Closure $condition = true): static - { - $this->isMultiple = $condition; - - return $this; - } - - public function storeFiles(bool | Closure $condition = true): static - { - $this->shouldStoreFiles = $condition; - - return $this; - } - - /** - * @deprecated Use `storeFiles()` instead. - */ - public function storeFile(bool | Closure $condition = true): static - { - $this->storeFiles($condition); - - return $this; - } - - public function visibility(string | Closure | null $visibility): static - { - $this->visibility = $visibility; - - return $this; - } - - public function deleteUploadedFileUsing(?Closure $callback): static - { - $this->deleteUploadedFileUsing = $callback; - - return $this; - } - - public function getUploadedFileUsing(?Closure $callback): static - { - $this->getUploadedFileUsing = $callback; - - return $this; - } - - public function reorderUploadedFilesUsing(?Closure $callback): static - { - $this->reorderUploadedFilesUsing = $callback; - - return $this; - } - - public function saveUploadedFileUsing(?Closure $callback): static - { - $this->saveUploadedFileUsing = $callback; - - return $this; - } - - public function isDeletable(): bool - { - return (bool) $this->evaluate($this->isDeletable); - } - - public function isDownloadable(): bool - { - return (bool) $this->evaluate($this->isDownloadable); - } - - public function isOpenable(): bool - { - return (bool) $this->evaluate($this->isOpenable); - } - - public function isPreviewable(): bool - { - return (bool) $this->evaluate($this->isPreviewable); - } - - public function isReorderable(): bool - { - return (bool) $this->evaluate($this->isReorderable); - } - - /** - * @return array | null - */ - public function getAcceptedFileTypes(): ?array - { - $types = $this->evaluate($this->acceptedFileTypes); - - if ($types instanceof Arrayable) { - $types = $types->toArray(); - } - - return $types; - } - - public function getDirectory(): ?string - { - return $this->evaluate($this->directory); - } - - public function getDisk(): Filesystem - { - return Storage::disk($this->getDiskName()); - } - - public function getDiskName(): string - { - return $this->evaluate($this->diskName) ?? config('filament.default_filesystem_disk'); - } - - public function getMaxFiles(): ?int - { - return $this->evaluate($this->maxFiles); - } - - public function getMinFiles(): ?int - { - return $this->evaluate($this->minFiles); - } - - public function getMaxSize(): ?int - { - return $this->evaluate($this->maxSize); - } - - public function getMinSize(): ?int - { - return $this->evaluate($this->minSize); - } - - public function getVisibility(): string - { - return $this->evaluate($this->visibility); - } - - public function shouldPreserveFilenames(): bool - { - return (bool) $this->evaluate($this->shouldPreserveFilenames); - } - - public function shouldMoveFiles(): bool - { - return (bool) $this->evaluate($this->shouldMoveFiles); - } - - public function shouldFetchFileInformation(): bool - { - return (bool) $this->evaluate($this->shouldFetchFileInformation); - } - - public function shouldStoreFiles(): bool - { - return (bool) $this->evaluate($this->shouldStoreFiles); - } - - public function getFileNamesStatePath(): ?string - { - if (! $this->fileNamesStatePath) { - return null; - } - - return $this->generateRelativeStatePath($this->fileNamesStatePath); - } - - /** - * @return array - */ - public function getValidationRules(): array - { - $rules = [ - $this->getRequiredValidationRule(), - 'array', - ]; - - if (filled($count = $this->getMaxFiles())) { - $rules[] = "max:{$count}"; - } - - if (filled($count = $this->getMinFiles())) { - $rules[] = "min:{$count}"; - } - - $rules[] = function (string $attribute, array $value, Closure $fail): void { - $files = array_filter($value, fn (TemporaryUploadedFile | string $file): bool => $file instanceof TemporaryUploadedFile); - - $name = $this->getName(); - - $validator = Validator::make( - [$name => $files], - ["{$name}.*" => ['file', ...parent::getValidationRules()]], - [], - ["{$name}.*" => $this->getValidationAttribute()], - ); - - if (! $validator->fails()) { - return; - } - - $fail($validator->errors()->first()); - }; - - return $rules; - } - - public function deleteUploadedFile(string $fileKey): static - { - $file = $this->removeUploadedFile($fileKey); - - if (blank($file)) { - return $this; - } - - $callback = $this->deleteUploadedFileUsing; - - if (! $callback) { - return $this; - } - - $this->evaluate($callback, [ - 'file' => $file, - ]); - - return $this; - } - - public function removeUploadedFile(string $fileKey): string | TemporaryUploadedFile | null - { - $files = $this->getState(); - $file = $files[$fileKey] ?? null; - - if (! $file) { - return null; - } - - if (is_string($file)) { - $this->removeStoredFileName($file); - } elseif ($file instanceof TemporaryUploadedFile) { - $file->delete(); - } - - unset($files[$fileKey]); - - $this->state($files); - - return $file; - } - - public function removeStoredFileName(string $file): void - { - $statePath = $this->fileNamesStatePath; - - if (blank($statePath)) { - return; - } - - $this->evaluate(function (BaseFileUpload $component, Get $get, Set $set) use ($file, $statePath) { - if (! $component->isMultiple()) { - $set($statePath, null); - - return; - } - - $fileNames = $get($statePath) ?? []; - - if (array_key_exists($file, $fileNames)) { - unset($fileNames[$file]); - } - - $set($statePath, $fileNames); - }); - } - - /** - * @param array $fileKeys - */ - public function reorderUploadedFiles(array $fileKeys): void - { - if (! $this->isReorderable) { - return; - } - - $fileKeys = array_flip($fileKeys); - - $state = collect($this->getState()) - ->sortBy(static fn ($file, $fileKey) => $fileKeys[$fileKey] ?? null) // $fileKey may not be present in $fileKeys if it was added to the state during the reorder call - ->all(); - - $this->state($state); - } - - /** - * @return array | null - */ - public function getUploadedFiles(): ?array - { - $urls = []; - - foreach ($this->getState() ?? [] as $fileKey => $file) { - if ($file instanceof TemporaryUploadedFile) { - $urls[$fileKey] = null; - - continue; - } - - $callback = $this->getUploadedFileUsing; - - if (! $callback) { - return [$fileKey => null]; - } - - $urls[$fileKey] = $this->evaluate($callback, [ - 'file' => $file, - 'storedFileNames' => $this->getStoredFileNames(), - ]) ?: null; - } - - return $urls; - } - - public function saveUploadedFiles(): void - { - if (blank($this->getState())) { - $this->state([]); - - return; - } - - if (! $this->shouldStoreFiles()) { - return; - } - - $state = array_filter(array_map(function (TemporaryUploadedFile | string $file) { - if (! $file instanceof TemporaryUploadedFile) { - return $file; - } - - $callback = $this->saveUploadedFileUsing; - - if (! $callback) { - $file->delete(); - - return $file; - } - - $storedFile = $this->evaluate($callback, [ - 'file' => $file, - ]); - - if ($storedFile === null) { - return null; - } - - $this->storeFileName($storedFile, $file->getClientOriginalName()); - - $file->delete(); - - return $storedFile; - }, Arr::wrap($this->getState()))); - - if ($this->isReorderable && ($callback = $this->reorderUploadedFilesUsing)) { - $state = $this->evaluate($callback, [ - 'state' => $state, - ]); - } - - $this->state($state); - } - - public function storeFileName(string $file, string $fileName): void - { - $statePath = $this->fileNamesStatePath; - - if (blank($statePath)) { - return; - } - - $this->evaluate(function (BaseFileUpload $component, Get $get, Set $set) use ($file, $fileName, $statePath) { - if (! $component->isMultiple()) { - $set($statePath, $fileName); - - return; - } - - $fileNames = $get($statePath) ?? []; - $fileNames[$file] = $fileName; - - $set($statePath, $fileNames); - }); - } - - /** - * @return string | array | null - */ - public function getStoredFileNames(): string | array | null - { - $state = null; - $statePath = $this->fileNamesStatePath; - - if (filled($statePath)) { - $state = $this->evaluate(fn (Get $get) => $get($statePath)); - } - - if (blank($state) && $this->isMultiple()) { - return []; - } - - return $state; - } - - public function isMultiple(): bool - { - return (bool) $this->evaluate($this->isMultiple); - } - - public function getUploadedFileNameForStorageUsing(Closure $callback): static - { - $this->getUploadedFileNameForStorageUsing = $callback; - - return $this; - } - - public function getUploadedFileNameForStorage(TemporaryUploadedFile $file): string - { - return $this->evaluate($this->getUploadedFileNameForStorageUsing, [ - 'file' => $file, - ]); - } - - /** - * @return array - */ - public function getStateToDehydrate(): array - { - $state = parent::getStateToDehydrate(); - - if ($fileNamesStatePath = $this->getFileNamesStatePath()) { - $state = [ - ...$state, - $fileNamesStatePath => $this->getStoredFileNames(), - ]; - } - - return $state; - } - - /** - * @param array> $rules - */ - public function dehydrateValidationRules(array &$rules): void - { - parent::dehydrateValidationRules($rules); - - if ($fileNamesStatePath = $this->getFileNamesStatePath()) { - $rules[$fileNamesStatePath] = ['nullable']; - } - } -} diff --git a/vendor/filament/forms/src/Components/BelongsToManyCheckboxList.php b/vendor/filament/forms/src/Components/BelongsToManyCheckboxList.php deleted file mode 100644 index 63bccca9..00000000 --- a/vendor/filament/forms/src/Components/BelongsToManyCheckboxList.php +++ /dev/null @@ -1,10 +0,0 @@ - | null - */ - protected ?array $blockPickerColumns = []; - - protected MaxWidth | string | Closure | null $blockPickerWidth = null; - - protected function setUp(): void - { - parent::setUp(); - - $this->default([]); - - $this->afterStateHydrated(static function (Builder $component, ?array $state): void { - $items = []; - - foreach ($state ?? [] as $itemData) { - $items[$component->generateUuid()] = $itemData; - } - - $component->state($items); - }); - - $this->registerActions([ - fn (Builder $component): Action => $component->getAddAction(), - fn (Builder $component): Action => $component->getAddBetweenAction(), - fn (Builder $component): Action => $component->getCloneAction(), - fn (Builder $component): Action => $component->getCollapseAction(), - fn (Builder $component): Action => $component->getCollapseAllAction(), - fn (Builder $component): Action => $component->getDeleteAction(), - fn (Builder $component): Action => $component->getExpandAction(), - fn (Builder $component): Action => $component->getExpandAllAction(), - fn (Builder $component): Action => $component->getMoveDownAction(), - fn (Builder $component): Action => $component->getMoveUpAction(), - fn (Builder $component): Action => $component->getReorderAction(), - ]); - - $this->mutateDehydratedStateUsing(static function (?array $state): array { - return array_values($state ?? []); - }); - } - - /** - * @param array | Closure $blocks - */ - public function blocks(array | Closure $blocks): static - { - $this->childComponents($blocks); - - return $this; - } - - public function getAddAction(): Action - { - $action = Action::make($this->getAddActionName()) - ->label(fn (Builder $component) => $component->getAddActionLabel()) - ->color('gray') - ->action(function (array $arguments, Builder $component): void { - $newUuid = $component->generateUuid(); - - $items = $component->getState(); - $items[$newUuid] = [ - 'type' => $arguments['block'], - 'data' => [], - ]; - - $component->state($items); - - $component->getChildComponentContainer($newUuid)->fill(); - - $component->collapsed(false, shouldMakeComponentCollapsible: false); - - $component->callAfterStateUpdated(); - }) - ->livewireClickHandlerEnabled(false) - ->button() - ->size(ActionSize::Small) - ->visible(fn (Builder $component): bool => $component->isAddable()); - - if ($this->modifyAddActionUsing) { - $action = $this->evaluate($this->modifyAddActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function addAction(?Closure $callback): static - { - $this->modifyAddActionUsing = $callback; - - return $this; - } - - public function getAddActionName(): string - { - return 'add'; - } - - public function getAddBetweenAction(): Action - { - $action = Action::make($this->getAddBetweenActionName()) - ->label(fn (Builder $component) => $component->getAddBetweenActionLabel()) - ->color('gray') - ->action(function (array $arguments, Builder $component): void { - $newUuid = $component->generateUuid(); - - $items = []; - - foreach ($component->getState() ?? [] as $uuid => $item) { - $items[$uuid] = $item; - - if ($uuid === $arguments['afterItem']) { - $items[$newUuid] = [ - 'type' => $arguments['block'], - 'data' => [], - ]; - } - } - - $component->state($items); - - $component->getChildComponentContainer($newUuid)->fill(); - - $component->collapsed(false, shouldMakeComponentCollapsible: false); - - $component->callAfterStateUpdated(); - }) - ->livewireClickHandlerEnabled(false) - ->button() - ->size(ActionSize::Small) - ->visible(fn (Builder $component): bool => $component->isAddable()); - - if ($this->modifyAddBetweenActionUsing) { - $action = $this->evaluate($this->modifyAddBetweenActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function addBetweenAction(?Closure $callback): static - { - $this->modifyAddBetweenActionUsing = $callback; - - return $this; - } - - public function getAddBetweenActionName(): string - { - return 'addBetween'; - } - - public function getCloneAction(): Action - { - $action = Action::make($this->getCloneActionName()) - ->label(__('filament-forms::components.builder.actions.clone.label')) - ->icon(FilamentIcon::resolve('forms::components.builder.actions.clone') ?? 'heroicon-m-square-2-stack') - ->color('gray') - ->action(function (array $arguments, Builder $component): void { - $newUuid = $component->generateUuid(); - - $items = $component->getState(); - $items[$newUuid] = $items[$arguments['item']]; - - $component->state($items); - - $component->collapsed(false, shouldMakeComponentCollapsible: false); - - $component->callAfterStateUpdated(); - }) - ->iconButton() - ->size(ActionSize::Small) - ->visible(fn (Builder $component): bool => $component->isCloneable()); - - if ($this->modifyCloneActionUsing) { - $action = $this->evaluate($this->modifyCloneActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function cloneAction(?Closure $callback): static - { - $this->modifyCloneActionUsing = $callback; - - return $this; - } - - public function getCloneActionName(): string - { - return 'clone'; - } - - public function getDeleteAction(): Action - { - $action = Action::make($this->getDeleteActionName()) - ->label(__('filament-forms::components.builder.actions.delete.label')) - ->icon(FilamentIcon::resolve('forms::components.builder.actions.delete') ?? 'heroicon-m-trash') - ->color('danger') - ->action(function (array $arguments, Builder $component): void { - $items = $component->getState(); - unset($items[$arguments['item']]); - - $component->state($items); - - $component->callAfterStateUpdated(); - }) - ->iconButton() - ->size(ActionSize::Small) - ->visible(fn (Builder $component): bool => $component->isDeletable()); - - if ($this->modifyDeleteActionUsing) { - $action = $this->evaluate($this->modifyDeleteActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function deleteAction(?Closure $callback): static - { - $this->modifyDeleteActionUsing = $callback; - - return $this; - } - - public function getDeleteActionName(): string - { - return 'delete'; - } - - public function getMoveDownAction(): Action - { - $action = Action::make($this->getMoveDownActionName()) - ->label(__('filament-forms::components.builder.actions.move_down.label')) - ->icon(FilamentIcon::resolve('forms::components.builder.actions.move-down') ?? 'heroicon-m-arrow-down') - ->color('gray') - ->action(function (array $arguments, Builder $component): void { - $items = array_move_after($component->getState(), $arguments['item']); - - $component->state($items); - - $component->callAfterStateUpdated(); - }) - ->iconButton() - ->size(ActionSize::Small) - ->visible(fn (Builder $component): bool => $component->isReorderable()); - - if ($this->modifyMoveDownActionUsing) { - $action = $this->evaluate($this->modifyMoveDownActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function moveDownAction(?Closure $callback): static - { - $this->modifyMoveDownActionUsing = $callback; - - return $this; - } - - public function getMoveDownActionName(): string - { - return 'moveDown'; - } - - public function getMoveUpAction(): Action - { - $action = Action::make($this->getMoveUpActionName()) - ->label(__('filament-forms::components.builder.actions.move_up.label')) - ->icon(FilamentIcon::resolve('forms::components.builder.actions.move-up') ?? 'heroicon-m-arrow-up') - ->color('gray') - ->action(function (array $arguments, Builder $component): void { - $items = array_move_before($component->getState(), $arguments['item']); - - $component->state($items); - - $component->callAfterStateUpdated(); - }) - ->iconButton() - ->size(ActionSize::Small) - ->visible(fn (Builder $component): bool => $component->isReorderable()); - - if ($this->modifyMoveUpActionUsing) { - $action = $this->evaluate($this->modifyMoveUpActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function moveUpAction(?Closure $callback): static - { - $this->modifyMoveUpActionUsing = $callback; - - return $this; - } - - public function labelBetweenItems(string | Closure | null $label): static - { - $this->labelBetweenItems = $label; - - return $this; - } - - public function getMoveUpActionName(): string - { - return 'moveUp'; - } - - public function getReorderAction(): Action - { - $action = Action::make($this->getReorderActionName()) - ->label(__('filament-forms::components.builder.actions.reorder.label')) - ->icon(FilamentIcon::resolve('forms::components.builder.actions.reorder') ?? 'heroicon-m-arrows-up-down') - ->color('gray') - ->action(function (array $arguments, Builder $component): void { - $items = [ - ...array_flip($arguments['items']), - ...$component->getState(), - ]; - - $component->state($items); - - $component->callAfterStateUpdated(); - }) - ->livewireClickHandlerEnabled(false) - ->iconButton() - ->size(ActionSize::Small) - ->visible(fn (Builder $component): bool => $component->isReorderableWithDragAndDrop()); - - if ($this->modifyReorderActionUsing) { - $action = $this->evaluate($this->modifyReorderActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function reorderAction(?Closure $callback): static - { - $this->modifyReorderActionUsing = $callback; - - return $this; - } - - public function getReorderActionName(): string - { - return 'reorder'; - } - - public function getCollapseAction(): Action - { - $action = Action::make($this->getCollapseActionName()) - ->label(__('filament-forms::components.builder.actions.collapse.label')) - ->icon(FilamentIcon::resolve('forms::components.builder.actions.collapse') ?? 'heroicon-m-chevron-up') - ->color('gray') - ->livewireClickHandlerEnabled(false) - ->iconButton() - ->size(ActionSize::Small); - - if ($this->modifyCollapseActionUsing) { - $action = $this->evaluate($this->modifyCollapseActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function collapseAction(?Closure $callback): static - { - $this->modifyCollapseActionUsing = $callback; - - return $this; - } - - public function getCollapseActionName(): string - { - return 'collapse'; - } - - public function getExpandAction(): Action - { - $action = Action::make($this->getExpandActionName()) - ->label(__('filament-forms::components.builder.actions.expand.label')) - ->icon(FilamentIcon::resolve('forms::components.builder.actions.expand') ?? 'heroicon-m-chevron-down') - ->color('gray') - ->livewireClickHandlerEnabled(false) - ->iconButton() - ->size(ActionSize::Small); - - if ($this->modifyExpandActionUsing) { - $action = $this->evaluate($this->modifyExpandActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function expandAction(?Closure $callback): static - { - $this->modifyExpandActionUsing = $callback; - - return $this; - } - - public function getExpandActionName(): string - { - return 'expand'; - } - - public function getCollapseAllAction(): Action - { - $action = Action::make($this->getCollapseAllActionName()) - ->label(__('filament-forms::components.builder.actions.collapse_all.label')) - ->color('gray') - ->livewireClickHandlerEnabled(false) - ->link() - ->size(ActionSize::Small); - - if ($this->modifyCollapseAllActionUsing) { - $action = $this->evaluate($this->modifyCollapseAllActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function collapseAllAction(?Closure $callback): static - { - $this->modifyCollapseAllActionUsing = $callback; - - return $this; - } - - public function getCollapseAllActionName(): string - { - return 'collapseAll'; - } - - public function getExpandAllAction(): Action - { - $action = Action::make($this->getExpandAllActionName()) - ->label(__('filament-forms::components.builder.actions.expand_all.label')) - ->color('gray') - ->livewireClickHandlerEnabled(false) - ->link() - ->size(ActionSize::Small); - - if ($this->modifyExpandAllActionUsing) { - $action = $this->evaluate($this->modifyExpandAllActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function expandAllAction(?Closure $callback): static - { - $this->modifyExpandAllActionUsing = $callback; - - return $this; - } - - public function getExpandAllActionName(): string - { - return 'expandAll'; - } - - public function truncateBlockLabel(bool | Closure $condition = true): static - { - $this->isBlockLabelTruncated = $condition; - - return $this; - } - - public function addBetweenActionLabel(string | Closure | null $label): static - { - $this->addBetweenActionLabel = $label; - - return $this; - } - - /** - * @deprecated Use `addBetweenActionLabel()` instead. - */ - public function createItemBetweenButtonLabel(string | Closure | null $label): static - { - $this->addBetweenActionLabel($label); - - return $this; - } - - public function addActionLabel(string | Closure | null $label): static - { - $this->addActionLabel = $label; - - return $this; - } - - /** - * @deprecated Use `addActionLabel()` instead. - */ - public function createItemButtonLabel(string | Closure | null $label): static - { - $this->addActionLabel($label); - - return $this; - } - - public function addable(bool | Closure $condition = true): static - { - $this->isAddable = $condition; - - return $this; - } - - public function deletable(bool | Closure $condition = true): static - { - $this->isDeletable = $condition; - - return $this; - } - - public function reorderable(bool | Closure $condition = true): static - { - $this->isReorderable = $condition; - - return $this; - } - - /** - * @deprecated Use `addable()` instead. - */ - public function disableItemCreation(bool | Closure $condition = true): static - { - $this->addable(fn (Builder $component): bool => ! $this->evaluate($condition)); - - return $this; - } - - /** - * @deprecated Use `deletable()` instead. - */ - public function disableItemDeletion(bool | Closure $condition = true): static - { - $this->deletable(fn (Builder $component): bool => ! $this->evaluate($condition)); - - return $this; - } - - /** - * @deprecated Use `reorderable()` instead. - */ - public function disableItemMovement(bool | Closure $condition = true): static - { - $this->reorderable(fn (Builder $component): bool => ! $this->evaluate($condition)); - - return $this; - } - - /** - * @deprecated No longer part of the design system. - */ - public function inset(bool | Closure $condition = true): static - { - return $this; - } - - public function reorderableWithDragAndDrop(bool | Closure $condition = true): static - { - $this->isReorderableWithDragAndDrop = $condition; - - return $this; - } - - public function reorderableWithButtons(bool | Closure $condition = true): static - { - $this->isReorderableWithButtons = $condition; - - return $this; - } - - /** - * @deprecated Use `blockLabels()` instead. - */ - public function showBlockLabels(bool | Closure $condition = true): static - { - $this->withBlockLabels($condition); - - return $this; - } - - /** - * @deprecated Use `blockLabels()` instead. - */ - public function withBlockLabels(bool | Closure $condition = true): static - { - $this->blockLabels($condition); - - return $this; - } - - /** - * @deprecated Use `blockNumbers()` instead. - */ - public function withBlockNumbers(bool | Closure $condition = true): static - { - $this->blockNumbers($condition); - - return $this; - } - - public function blockLabels(bool | Closure $condition = true): static - { - $this->hasBlockLabels = $condition; - - return $this; - } - - public function blockNumbers(bool | Closure $condition = true): static - { - $this->hasBlockNumbers = $condition; - - return $this; - } - - public function getBlock(string $name): ?Block - { - return Arr::first( - $this->getBlocks(), - fn (Block $block): bool => $block->getName() === $name, - ); - } - - /** - * @return array - */ - public function getBlocks(): array - { - /** @var array $blocks */ - $blocks = $this->getChildComponentContainer()->getComponents(); - - return $blocks; - } - - public function getChildComponentContainers(bool $withHidden = false): array - { - if ((! $withHidden) && $this->isHidden()) { - return []; - } - - return collect($this->getState()) - ->filter(fn (array $itemData): bool => filled($itemData['type'] ?? null) && $this->hasBlock($itemData['type'])) - ->map( - fn (array $itemData, $itemIndex): ComponentContainer => $this - ->getBlock($itemData['type']) - ->getChildComponentContainer() - ->statePath("{$itemIndex}.data") - ->inlineLabel(false) - ->getClone(), - ) - ->all(); - } - - public function getAddBetweenActionLabel(): string - { - return $this->evaluate($this->addBetweenActionLabel) ?? __('filament-forms::components.builder.actions.add_between.label'); - } - - public function getAddActionLabel(): string - { - return $this->evaluate($this->addActionLabel) ?? __('filament-forms::components.builder.actions.add.label', [ - 'label' => Str::lcfirst($this->getLabel()), - ]); - } - - public function hasBlock(string $name): bool - { - return (bool) $this->getBlock($name); - } - - public function isReorderable(): bool - { - if ($this->isDisabled()) { - return false; - } - - return (bool) $this->evaluate($this->isReorderable); - } - - public function isReorderableWithDragAndDrop(): bool - { - return $this->evaluate($this->isReorderableWithDragAndDrop) && $this->isReorderable(); - } - - public function isReorderableWithButtons(): bool - { - return $this->evaluate($this->isReorderableWithButtons) && $this->isReorderable(); - } - - public function isAddable(): bool - { - if ($this->isDisabled()) { - return false; - } - - if (filled($this->getMaxItems()) && ($this->getMaxItems() <= $this->getItemsCount())) { - return false; - } - - return (bool) $this->evaluate($this->isAddable); - } - - public function isDeletable(): bool - { - if ($this->isDisabled()) { - return false; - } - - return (bool) $this->evaluate($this->isDeletable); - } - - public function hasBlockLabels(): bool - { - return (bool) $this->evaluate($this->hasBlockLabels); - } - - public function hasBlockNumbers(): bool - { - return (bool) $this->evaluate($this->hasBlockNumbers); - } - - public function canConcealComponents(): bool - { - return $this->isCollapsible(); - } - - public function getLabelBetweenItems(): ?string - { - return $this->evaluate($this->labelBetweenItems); - } - - public function isBlockLabelTruncated(): bool - { - return (bool) $this->evaluate($this->isBlockLabelTruncated); - } - - /** - * @return array - */ - public function getBlockPickerBlocks(): array - { - $state = $this->getState(); - - /** @var array $blocks */ - $blocks = array_filter($this->getBlocks(), function (Block $block) use ($state): bool { - /** @var Block $block */ - $maxItems = $block->getMaxItems(); - - if ($maxItems === null) { - return true; - } - - $count = count(array_filter($state, function (array $item) use ($block): bool { - return $item['type'] === $block->getName(); - })); - - return $count < $maxItems; - }); - - return $blocks; - } - - /** - * @param array | int | string | null $columns - */ - public function blockPickerColumns(array | int | string | null $columns = 2): static - { - if (! is_array($columns)) { - $columns = [ - 'lg' => $columns, - ]; - } - - $this->blockPickerColumns = [ - ...($this->blockPickerColumns ?? []), - ...$columns, - ]; - - return $this; - } - - /** - * @return array | int | string | null - */ - public function getBlockPickerColumns(?string $breakpoint = null): array | int | string | null - { - $columns = $this->blockPickerColumns ?? [ - 'default' => 1, - 'sm' => null, - 'md' => null, - 'lg' => null, - 'xl' => null, - '2xl' => null, - ]; - - if ($breakpoint !== null) { - return $columns[$breakpoint] ?? null; - } - - return $columns; - } - - public function blockPickerWidth(MaxWidth | string | Closure | null $width): static - { - $this->blockPickerWidth = $width; - - return $this; - } - - public function getBlockPickerWidth(): MaxWidth | string | null - { - $width = $this->evaluate($this->blockPickerWidth); - - if (filled($width)) { - return $width; - } - - $columns = $this->getBlockPickerColumns(); - - if (empty($columns)) { - return null; - } - - return match (max($columns)) { - 2 => 'md', - 3 => '2xl', - 4 => '4xl', - 5 => '6xl', - 6 => '7xl', - default => null, - }; - } - - /** - * @return array - */ - public function getItemState(string $uuid): array - { - return $this->getChildComponentContainer($uuid)->getState(shouldCallHooksBefore: false); - } - - /** - * @return array - */ - public function getRawItemState(string $uuid): array - { - return $this->getChildComponentContainer($uuid)->getRawState(); - } -} diff --git a/vendor/filament/forms/src/Components/Builder/Block.php b/vendor/filament/forms/src/Components/Builder/Block.php deleted file mode 100644 index 3a5af3ae..00000000 --- a/vendor/filament/forms/src/Components/Builder/Block.php +++ /dev/null @@ -1,67 +0,0 @@ -name($name); - } - - public static function make(string $name): static - { - $static = app(static::class, ['name' => $name]); - $static->configure(); - - return $static; - } - - public function icon(string | Closure | null $icon): static - { - $this->icon = $icon; - - return $this; - } - - public function getIcon(): ?string - { - return $this->evaluate($this->icon); - } - - public function maxItems(int | Closure | null $maxItems): static - { - $this->maxItems = $maxItems; - - return $this; - } - - public function getMaxItems(): ?int - { - return $this->evaluate($this->maxItems); - } - - /** - * @param array | null $state - */ - public function getLabel(?array $state = null, ?string $uuid = null): string | Htmlable - { - return $this->evaluate( - $this->label, - ['state' => $state, 'uuid' => $uuid], - ) ?? $this->getDefaultLabel(); - } -} diff --git a/vendor/filament/forms/src/Components/Card.php b/vendor/filament/forms/src/Components/Card.php deleted file mode 100644 index 71d2d82c..00000000 --- a/vendor/filament/forms/src/Components/Card.php +++ /dev/null @@ -1,10 +0,0 @@ -default(false); - - $this->afterStateHydrated(static function (Checkbox $component, $state): void { - $component->state((bool) $state); - }); - - $this->rule('boolean'); - } -} diff --git a/vendor/filament/forms/src/Components/CheckboxList.php b/vendor/filament/forms/src/Components/CheckboxList.php deleted file mode 100644 index 28db14e1..00000000 --- a/vendor/filament/forms/src/Components/CheckboxList.php +++ /dev/null @@ -1,269 +0,0 @@ -default([]); - - $this->afterStateHydrated(static function (CheckboxList $component, $state) { - if (is_array($state)) { - return; - } - - $component->state([]); - }); - - $this->searchDebounce(0); - - $this->registerActions([ - fn (CheckboxList $component): Action => $component->getSelectAllAction(), - fn (CheckboxList $component): Action => $component->getDeselectAllAction(), - ]); - } - - public function getSelectAllAction(): Action - { - $action = Action::make($this->getSelectAllActionName()) - ->label(__('filament-forms::components.checkbox_list.actions.select_all.label')) - ->livewireClickHandlerEnabled(false) - ->link() - ->size(ActionSize::Small); - - if ($this->modifySelectAllActionUsing) { - $action = $this->evaluate($this->modifySelectAllActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function selectAllAction(?Closure $callback): static - { - $this->modifySelectAllActionUsing = $callback; - - return $this; - } - - public function getSelectAllActionName(): string - { - return 'selectAll'; - } - - public function getDeselectAllAction(): Action - { - $action = Action::make($this->getDeselectAllActionName()) - ->label(__('filament-forms::components.checkbox_list.actions.deselect_all.label')) - ->livewireClickHandlerEnabled(false) - ->link() - ->size(ActionSize::Small); - - if ($this->modifyDeselectAllActionUsing) { - $action = $this->evaluate($this->modifyDeselectAllActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function deselectAllAction(?Closure $callback): static - { - $this->modifyDeselectAllActionUsing = $callback; - - return $this; - } - - public function getDeselectAllActionName(): string - { - return 'deselectAll'; - } - - public function relationship(string | Closure | null $name = null, string | Closure | null $titleAttribute = null, ?Closure $modifyQueryUsing = null): static - { - $this->relationship = $name ?? $this->getName(); - $this->relationshipTitleAttribute = $titleAttribute; - - $this->options(static function (CheckboxList $component) use ($modifyQueryUsing): array { - $relationship = Relation::noConstraints(fn () => $component->getRelationship()); - - $relationshipQuery = app(RelationshipJoiner::class)->prepareQueryForNoConstraints($relationship); - - if ($modifyQueryUsing) { - $relationshipQuery = $component->evaluate($modifyQueryUsing, [ - 'query' => $relationshipQuery, - ]) ?? $relationshipQuery; - } - - if ($component->hasOptionLabelFromRecordUsingCallback()) { - return $relationshipQuery - ->get() - ->mapWithKeys(static fn (Model $record) => [ - $record->{Str::afterLast($relationship->getQualifiedRelatedKeyName(), '.')} => $component->getOptionLabelFromRecord($record), - ]) - ->toArray(); - } - - $relationshipTitleAttribute = $component->getRelationshipTitleAttribute(); - - if (empty($relationshipQuery->getQuery()->orders)) { - $relationshipQuery->orderBy($relationshipQuery->qualifyColumn($relationshipTitleAttribute)); - } - - if (str_contains($relationshipTitleAttribute, '->')) { - if (! str_contains($relationshipTitleAttribute, ' as ')) { - $relationshipTitleAttribute .= " as {$relationshipTitleAttribute}"; - } - } else { - $relationshipTitleAttribute = $relationshipQuery->qualifyColumn($relationshipTitleAttribute); - } - - return $relationshipQuery - ->pluck($relationshipTitleAttribute, $relationship->getQualifiedRelatedKeyName()) - ->toArray(); - }); - - $this->loadStateFromRelationshipsUsing(static function (CheckboxList $component, ?array $state): void { - $relationship = $component->getRelationship(); - - /** @var Collection $relatedModels */ - $relatedModels = $relationship->getResults(); - - $component->state( - // Cast the related keys to a string, otherwise Livewire does not - // know how to handle deselection. - // - // https://github.com/filamentphp/filament/issues/1111 - $relatedModels - ->pluck($relationship->getRelatedKeyName()) - ->map(static fn ($key): string => strval($key)) - ->toArray(), - ); - }); - - $this->saveRelationshipsUsing(static function (CheckboxList $component, ?array $state) { - $component->getRelationship()->sync($state ?? []); - }); - - $this->dehydrated(false); - - return $this; - } - - public function bulkToggleable(bool | Closure $condition = true): static - { - $this->isBulkToggleable = $condition; - - return $this; - } - - public function getOptionLabelFromRecordUsing(?Closure $callback): static - { - $this->getOptionLabelFromRecordUsing = $callback; - - return $this; - } - - public function hasOptionLabelFromRecordUsingCallback(): bool - { - return $this->getOptionLabelFromRecordUsing !== null; - } - - public function getOptionLabelFromRecord(Model $record): string - { - return $this->evaluate( - $this->getOptionLabelFromRecordUsing, - namedInjections: [ - 'record' => $record, - ], - typedInjections: [ - Model::class => $record, - $record::class => $record, - ], - ); - } - - public function getRelationshipTitleAttribute(): ?string - { - return $this->evaluate($this->relationshipTitleAttribute); - } - - public function getLabel(): string | Htmlable | null - { - if ($this->label === null && $this->getRelationship()) { - $label = (string) str($this->getRelationshipName()) - ->before('.') - ->kebab() - ->replace(['-', '_'], ' ') - ->ucfirst(); - - return ($this->shouldTranslateLabel) ? __($label) : $label; - } - - return parent::getLabel(); - } - - public function getRelationship(): ?BelongsToMany - { - $name = $this->getRelationshipName(); - - if (blank($name)) { - return null; - } - - return $this->getModelInstance()->{$name}(); - } - - public function getRelationshipName(): ?string - { - return $this->evaluate($this->relationship); - } - - public function isBulkToggleable(): bool - { - return (bool) $this->evaluate($this->isBulkToggleable); - } -} diff --git a/vendor/filament/forms/src/Components/ColorPicker.php b/vendor/filament/forms/src/Components/ColorPicker.php deleted file mode 100644 index 89438a6c..00000000 --- a/vendor/filament/forms/src/Components/ColorPicker.php +++ /dev/null @@ -1,61 +0,0 @@ -format = $format; - - return $this; - } - - public function hex(): static - { - $this->format('hex'); - - return $this; - } - - public function hsl(): static - { - $this->format('hsl'); - - return $this; - } - - public function rgb(): static - { - $this->format('rgb'); - - return $this; - } - - public function rgba(): static - { - $this->format('rgba'); - - return $this; - } - - public function getFormat(): string - { - return $this->evaluate($this->format); - } -} diff --git a/vendor/filament/forms/src/Components/Component.php b/vendor/filament/forms/src/Components/Component.php deleted file mode 100644 index 4d98f8b5..00000000 --- a/vendor/filament/forms/src/Components/Component.php +++ /dev/null @@ -1,73 +0,0 @@ - - */ - protected function resolveDefaultClosureDependencyForEvaluationByName(string $parameterName): array - { - return match ($parameterName) { - 'context', 'operation' => [$this->getContainer()->getOperation()], - 'get' => [$this->getGetCallback()], - 'livewire' => [$this->getLivewire()], - 'model' => [$this->getModel()], - 'record' => [$this->getRecord()], - 'set' => [$this->getSetCallback()], - 'state' => [$this->getState()], - default => parent::resolveDefaultClosureDependencyForEvaluationByName($parameterName), - }; - } - - /** - * @return array - */ - protected function resolveDefaultClosureDependencyForEvaluationByType(string $parameterType): array - { - $record = $this->getRecord(); - - if (! $record) { - return parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType); - } - - return match ($parameterType) { - Model::class, $record::class => [$record], - default => parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType), - }; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/BelongsToContainer.php b/vendor/filament/forms/src/Components/Concerns/BelongsToContainer.php deleted file mode 100644 index 47d612ea..00000000 --- a/vendor/filament/forms/src/Components/Concerns/BelongsToContainer.php +++ /dev/null @@ -1,28 +0,0 @@ -container = $container; - - return $this; - } - - public function getContainer(): ComponentContainer - { - return $this->container; - } - - public function getLivewire(): HasForms - { - return $this->getContainer()->getLivewire(); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/BelongsToModel.php b/vendor/filament/forms/src/Components/Concerns/BelongsToModel.php deleted file mode 100644 index 813d8e65..00000000 --- a/vendor/filament/forms/src/Components/Concerns/BelongsToModel.php +++ /dev/null @@ -1,189 +0,0 @@ -model = $model; - - return $this; - } - - public function saveRelationships(): void - { - $callback = $this->saveRelationshipsUsing; - - if (! $callback) { - return; - } - - if (! ($this->getRecord()?->exists)) { - return; - } - - if ((! $this->shouldSaveRelationshipsWhenDisabled()) && $this->isDisabled()) { - return; - } - - if ((! $this->shouldSaveRelationshipsWhenHidden()) && $this->isHidden()) { - return; - } - - $this->evaluate($callback); - } - - public function saveRelationshipsBeforeChildren(): void - { - $callback = $this->saveRelationshipsBeforeChildrenUsing; - - if (! $callback) { - return; - } - - if (! ($this->getRecord()?->exists)) { - return; - } - - if ((! $this->shouldSaveRelationshipsWhenDisabled()) && $this->isDisabled()) { - return; - } - - if ((! $this->shouldSaveRelationshipsWhenHidden()) && $this->isHidden()) { - return; - } - - $this->evaluate($callback); - } - - public function loadStateFromRelationships(bool $andHydrate = false): void - { - $callback = $this->loadStateFromRelationshipsUsing; - - if (! $callback) { - return; - } - - if (! $this->getRecord()?->exists) { - return; - } - - $this->evaluate($callback); - - if ($andHydrate) { - $this->callAfterStateHydrated(); - - foreach ($this->getChildComponentContainers() as $container) { - $container->callAfterStateHydrated(); - } - - $this->fillStateWithNull(); - } - } - - public function saveRelationshipsUsing(?Closure $callback): static - { - $this->saveRelationshipsUsing = $callback; - - return $this; - } - - public function saveRelationshipsBeforeChildrenUsing(?Closure $callback): static - { - $this->saveRelationshipsBeforeChildrenUsing = $callback; - - return $this; - } - - public function saveRelationshipsWhenDisabled(bool | Closure $condition = true): static - { - $this->shouldSaveRelationshipsWhenDisabled = $condition; - - return $this; - } - - public function shouldSaveRelationshipsWhenDisabled(): bool - { - return (bool) $this->evaluate($this->shouldSaveRelationshipsWhenDisabled); - } - - public function saveRelationshipsWhenHidden(bool | Closure $condition = true): static - { - $this->shouldSaveRelationshipsWhenHidden = $condition; - - return $this; - } - - public function shouldSaveRelationshipsWhenHidden(): bool - { - return (bool) $this->evaluate($this->shouldSaveRelationshipsWhenHidden); - } - - public function loadStateFromRelationshipsUsing(?Closure $callback): static - { - $this->loadStateFromRelationshipsUsing = $callback; - - return $this; - } - - public function getModel(): ?string - { - $model = $this->evaluate($this->model); - - if ($model instanceof Model) { - return $model::class; - } - - if (filled($model)) { - return $model; - } - - return $this->getContainer()->getModel(); - } - - public function getRecord(): ?Model - { - $model = $this->evaluate($this->model); - - if ($model instanceof Model) { - return $model; - } - - if (is_string($model)) { - return null; - } - - return $this->getContainer()->getRecord(); - } - - public function getModelInstance(): ?Model - { - $model = $this->evaluate($this->model); - - if ($model === null) { - return $this->getContainer()->getModelInstance(); - } - - if ($model instanceof Model) { - return $model; - } - - return app($model); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanAllowHtml.php b/vendor/filament/forms/src/Components/Concerns/CanAllowHtml.php deleted file mode 100644 index 04c3855b..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanAllowHtml.php +++ /dev/null @@ -1,22 +0,0 @@ -isHtmlAllowed = $condition; - - return $this; - } - - public function isHtmlAllowed(): bool - { - return (bool) $this->evaluate($this->isHtmlAllowed); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBeAccepted.php b/vendor/filament/forms/src/Components/Concerns/CanBeAccepted.php deleted file mode 100644 index 348639af..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBeAccepted.php +++ /dev/null @@ -1,22 +0,0 @@ -rule('accepted', $condition); - - return $this; - } - - public function declined(bool | Closure $condition = true): static - { - $this->rule('declined', $condition); - - return $this; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBeAutocapitalized.php b/vendor/filament/forms/src/Components/Concerns/CanBeAutocapitalized.php deleted file mode 100644 index bbe47030..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBeAutocapitalized.php +++ /dev/null @@ -1,39 +0,0 @@ -autocapitalize = $autocapitalize; - - return $this; - } - - /** - * @deprecated Use `autocapitalize()` instead. - */ - public function disableAutocapitalize(bool | Closure $condition = true): static - { - $this->autocapitalize(static function (Field $component) use ($condition): ?bool { - return $component->evaluate($condition) ? false : null; - }); - - return $this; - } - - public function getAutocapitalize(): ?string - { - return match ($autocapitalize = $this->evaluate($this->autocapitalize)) { - true => 'on', - false => 'off', - default => $autocapitalize, - }; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBeAutocompleted.php b/vendor/filament/forms/src/Components/Concerns/CanBeAutocompleted.php deleted file mode 100644 index 9c1eff71..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBeAutocompleted.php +++ /dev/null @@ -1,39 +0,0 @@ -autocomplete = $autocomplete; - - return $this; - } - - /** - * @deprecated Use `autocomplete()` instead. - */ - public function disableAutocomplete(bool | Closure $condition = true): static - { - $this->autocomplete(static function (Field $component) use ($condition): ?bool { - return $component->evaluate($condition) ? false : null; - }); - - return $this; - } - - public function getAutocomplete(): ?string - { - return match ($autocomplete = $this->evaluate($this->autocomplete)) { - true => 'on', - false => 'off', - default => $autocomplete, - }; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBeAutofocused.php b/vendor/filament/forms/src/Components/Concerns/CanBeAutofocused.php deleted file mode 100644 index 64f05d61..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBeAutofocused.php +++ /dev/null @@ -1,22 +0,0 @@ -isAutofocused = $condition; - - return $this; - } - - public function isAutofocused(): bool - { - return (bool) $this->evaluate($this->isAutofocused); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBeCloned.php b/vendor/filament/forms/src/Components/Concerns/CanBeCloned.php deleted file mode 100644 index 9bfacaa7..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBeCloned.php +++ /dev/null @@ -1,26 +0,0 @@ -isCloneable = $condition; - - return $this; - } - - public function isCloneable(): bool - { - if ($this->isDisabled()) { - return false; - } - - return (bool) $this->evaluate($this->isCloneable); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBeCollapsed.php b/vendor/filament/forms/src/Components/Concerns/CanBeCollapsed.php deleted file mode 100644 index 55ada2f6..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBeCollapsed.php +++ /dev/null @@ -1,55 +0,0 @@ -isCollapsed = $condition; - - if ($shouldMakeComponentCollapsible && ($this->isCollapsible === null)) { - $this->collapsible(); - } - - return $this; - } - - public function isCollapsed(?ComponentContainer $item = null): bool - { - return (bool) $this->evaluate($this->isCollapsed, ['item' => $item]); - } - - public function collapsible(bool | Closure | null $condition = true): static - { - $this->isCollapsible = $condition; - - return $this; - } - - public function isCollapsible(): bool - { - return (bool) ($this->evaluate($this->isCollapsible) ?? false); - } - - public function persistCollapsed(bool | Closure $condition = true): static - { - $this->shouldPersistCollapsed = $condition; - - return $this; - } - - public function shouldPersistCollapsed(): bool - { - return (bool) $this->evaluate($this->shouldPersistCollapsed); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBeCompacted.php b/vendor/filament/forms/src/Components/Concerns/CanBeCompacted.php deleted file mode 100644 index 88c237ca..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBeCompacted.php +++ /dev/null @@ -1,22 +0,0 @@ -isCompact = $condition; - - return $this; - } - - public function isCompact(): bool - { - return (bool) $this->evaluate($this->isCompact); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBeConcealed.php b/vendor/filament/forms/src/Components/Concerns/CanBeConcealed.php deleted file mode 100644 index 3cf8b8b7..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBeConcealed.php +++ /dev/null @@ -1,35 +0,0 @@ -cachedConcealingComponent)) { - return $this->cachedConcealingComponent ?: null; - } - - $parentComponent = $this->getContainer()->getParentComponent(); - - if (! $parentComponent) { - $this->cachedConcealingComponent = false; - } elseif ($parentComponent instanceof CanConcealComponents && $parentComponent->canConcealComponents()) { - $this->cachedConcealingComponent = $parentComponent; - } else { - $this->cachedConcealingComponent = $parentComponent->getConcealingComponent(); - } - - return $this->cachedConcealingComponent ?: null; - } - - public function isConcealed(): bool - { - return (bool) $this->getConcealingComponent(); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBeDisabled.php b/vendor/filament/forms/src/Components/Concerns/CanBeDisabled.php deleted file mode 100644 index 7f307729..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBeDisabled.php +++ /dev/null @@ -1,49 +0,0 @@ -isDisabled = $condition; - $this->dehydrated(fn (Component $component): bool => ! $component->evaluate($condition)); - - return $this; - } - - /** - * @param string | array $operations - */ - public function disabledOn(string | array $operations): static - { - $this->disabled(static function (HasForms $livewire, string $operation) use ($operations): bool { - foreach (Arr::wrap($operations) as $disabledOperation) { - if ($disabledOperation === $operation || $livewire instanceof $disabledOperation) { - return true; - } - } - - return false; - }); - - return $this; - } - - public function isDisabled(): bool - { - return $this->evaluate($this->isDisabled) || $this->getContainer()->isDisabled(); - } - - public function isEnabled(): bool - { - return ! $this->isDisabled(); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBeHidden.php b/vendor/filament/forms/src/Components/Concerns/CanBeHidden.php deleted file mode 100644 index d199a594..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBeHidden.php +++ /dev/null @@ -1,135 +0,0 @@ -isHidden = $condition; - - return $this; - } - - /** - * @param string | array $operations - */ - public function hiddenOn(string | array $operations): static - { - $this->hidden(static function (HasForms $livewire, string $operation) use ($operations): bool { - foreach (Arr::wrap($operations) as $hiddenOperation) { - if ($hiddenOperation === $operation || $livewire instanceof $hiddenOperation) { - return true; - } - } - - return false; - }); - - return $this; - } - - public function hiddenWhenAllChildComponentsHidden(): static - { - $this->hidden(static function (Component $component): bool { - foreach ($component->getChildComponentContainers() as $childComponentContainer) { - foreach ($childComponentContainer->getComponents(withHidden: false) as $childComponent) { - return false; - } - } - - return true; - }); - - return $this; - } - - /** - * @param string | array $paths - */ - public function whenTruthy(string | array $paths): static - { - $paths = Arr::wrap($paths); - - $this->hidden(static function (Get $get) use ($paths): bool { - foreach ($paths as $path) { - if (! $get($path)) { - return true; - } - } - - return false; - }); - - return $this; - } - - /** - * @param string | array $paths - */ - public function whenFalsy(string | array $paths): static - { - $paths = Arr::wrap($paths); - - $this->hidden(static function (Get $get) use ($paths): bool { - foreach ($paths as $path) { - if ((bool) $get($path)) { - return true; - } - } - - return false; - }); - - return $this; - } - - public function visible(bool | Closure $condition = true): static - { - $this->isVisible = $condition; - - return $this; - } - - /** - * @param string | array $operations - */ - public function visibleOn(string | array $operations): static - { - $this->visible(static function (string $operation, HasForms $livewire) use ($operations): bool { - foreach (Arr::wrap($operations) as $visibleOperation) { - if ($visibleOperation === $operation || $livewire instanceof $visibleOperation) { - return true; - } - } - - return false; - }); - - return $this; - } - - public function isHidden(): bool - { - if ($this->evaluate($this->isHidden)) { - return true; - } - - return ! $this->evaluate($this->isVisible); - } - - public function isVisible(): bool - { - return ! $this->isHidden(); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBeInline.php b/vendor/filament/forms/src/Components/Concerns/CanBeInline.php deleted file mode 100644 index 2816faa1..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBeInline.php +++ /dev/null @@ -1,26 +0,0 @@ -isInline = $condition; - - return $this; - } - - public function isInline(): bool - { - if ($this->hasInlineLabel()) { - return false; - } - - return (bool) $this->evaluate($this->isInline); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBeLengthConstrained.php b/vendor/filament/forms/src/Components/Concerns/CanBeLengthConstrained.php deleted file mode 100644 index 0e63c539..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBeLengthConstrained.php +++ /dev/null @@ -1,84 +0,0 @@ -length = $length; - $this->maxLength = $length; - $this->minLength = $length; - - $this->rule(static function (Contracts\CanBeLengthConstrained $component): string { - $length = $component->getLength(); - - if ($component instanceof CanHaveNumericState && $component->isNumeric()) { - return "digits:{$length}"; - } - - return "size:{$length}"; - }, static fn (Contracts\CanBeLengthConstrained $component): bool => filled($component->getLength())); - - return $this; - } - - public function maxLength(int | Closure $length): static - { - $this->maxLength = $length; - - $this->rule(static function (Contracts\CanBeLengthConstrained $component): string { - $length = $component->getMaxLength(); - - if ($component instanceof Contracts\CanHaveNumericState && $component->isNumeric()) { - return "max_digits:{$length}"; - } - - return "max:{$length}"; - }, static fn (Contracts\CanBeLengthConstrained $component): bool => filled($component->getMaxLength())); - - return $this; - } - - public function minLength(int | Closure $length): static - { - $this->minLength = $length; - - $this->rule(static function (Contracts\CanBeLengthConstrained $component): string { - $length = $component->getMinLength(); - - if ($component instanceof Contracts\CanHaveNumericState && $component->isNumeric()) { - return "min_digits:{$length}"; - } - - return "min:{$length}"; - }, static fn (Contracts\CanBeLengthConstrained $component): bool => filled($component->getMinLength())); - - return $this; - } - - public function getLength(): ?int - { - return $this->evaluate($this->length); - } - - public function getMaxLength(): ?int - { - return $this->evaluate($this->maxLength); - } - - public function getMinLength(): ?int - { - return $this->evaluate($this->minLength); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBeMarkedAsRequired.php b/vendor/filament/forms/src/Components/Concerns/CanBeMarkedAsRequired.php deleted file mode 100644 index 52e9a5bb..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBeMarkedAsRequired.php +++ /dev/null @@ -1,22 +0,0 @@ -isMarkedAsRequired = $condition; - - return $this; - } - - public function isMarkedAsRequired(): bool - { - return $this->evaluate($this->isMarkedAsRequired) ?? $this->isRequired(); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBePreloaded.php b/vendor/filament/forms/src/Components/Concerns/CanBePreloaded.php deleted file mode 100644 index a99941e6..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBePreloaded.php +++ /dev/null @@ -1,22 +0,0 @@ -isPreloaded = $condition; - - return $this; - } - - public function isPreloaded(): bool - { - return (bool) $this->evaluate($this->isPreloaded); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBeReadOnly.php b/vendor/filament/forms/src/Components/Concerns/CanBeReadOnly.php deleted file mode 100644 index dc3ce52b..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBeReadOnly.php +++ /dev/null @@ -1,42 +0,0 @@ -isReadOnly = $condition; - - return $this; - } - - /** - * @param string | array $operations - */ - public function readOnlyOn(string | array $operations): static - { - $this->readOnly(static function (HasForms $livewire, string $operation) use ($operations): bool { - foreach (Arr::wrap($operations) as $readOnlyOperation) { - if ($readOnlyOperation === $operation || $livewire instanceof $readOnlyOperation) { - return true; - } - } - - return false; - }); - - return $this; - } - - public function isReadOnly(): bool - { - return (bool) $this->evaluate($this->isReadOnly); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBeRepeated.php b/vendor/filament/forms/src/Components/Concerns/CanBeRepeated.php deleted file mode 100644 index 6fa589da..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBeRepeated.php +++ /dev/null @@ -1,29 +0,0 @@ -cachedParentRepeater)) { - return $this->cachedParentRepeater ?: null; - } - - $parentComponent = $this->getContainer()->getParentComponent(); - - if (! $parentComponent) { - $this->cachedParentRepeater = false; - } elseif ($parentComponent instanceof Repeater) { - $this->cachedParentRepeater = $parentComponent; - } else { - $this->cachedParentRepeater = $parentComponent->getParentRepeater(); - } - - return $this->cachedParentRepeater ?: null; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBeSearchable.php b/vendor/filament/forms/src/Components/Concerns/CanBeSearchable.php deleted file mode 100644 index 3ca4a4d4..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBeSearchable.php +++ /dev/null @@ -1,118 +0,0 @@ -isSearchable = $condition; - - return $this; - } - - public function noSearchResultsMessage(string | Htmlable | Closure | null $message): static - { - $this->noSearchResultsMessage = $message; - - return $this; - } - - public function searchDebounce(int | Closure $debounce): static - { - $this->searchDebounce = $debounce; - - return $this; - } - - public function searchingMessage(string | Closure | null $message): static - { - $this->searchingMessage = $message; - - return $this; - } - - public function searchPrompt(string | Htmlable | Closure | null $message): static - { - $this->searchPrompt = $message; - - return $this; - } - - public function searchLabels(bool | Closure | null $condition = true): static - { - $this->shouldSearchLabels = $condition; - - return $this; - } - - public function searchValues(bool | Closure | null $condition = true): static - { - $this->shouldSearchValues = $condition; - - return $this; - } - - public function getNoSearchResultsMessage(): string | Htmlable - { - return $this->evaluate($this->noSearchResultsMessage) ?? __('filament-forms::components.select.no_search_results_message'); - } - - public function getSearchPrompt(): string | Htmlable - { - return $this->evaluate($this->searchPrompt) ?? __('filament-forms::components.select.search_prompt'); - } - - public function shouldSearchLabels(): bool - { - return (bool) $this->evaluate($this->shouldSearchLabels); - } - - public function shouldSearchValues(): bool - { - return (bool) $this->evaluate($this->shouldSearchValues); - } - - /** - * @return array - */ - public function getSearchableOptionFields(): array - { - return [ - ...($this->shouldSearchLabels() ? ['label'] : []), - ...($this->shouldSearchValues() ? ['value'] : []), - ]; - } - - public function getSearchDebounce(): int - { - return $this->evaluate($this->searchDebounce); - } - - public function getSearchingMessage(): string - { - return $this->evaluate($this->searchingMessage) ?? __('filament-forms::components.select.searching_message'); - } - - public function isSearchable(): bool - { - return (bool) $this->evaluate($this->isSearchable); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanBeValidated.php b/vendor/filament/forms/src/Components/Concerns/CanBeValidated.php deleted file mode 100644 index 0379e554..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanBeValidated.php +++ /dev/null @@ -1,811 +0,0 @@ - - */ - protected array $rules = []; - - /** - * @var array - */ - protected array $validationMessages = []; - - protected string | Closure | null $validationAttribute = null; - - public function activeUrl(bool | Closure $condition = true): static - { - $this->rule('active_url', $condition); - - return $this; - } - - public function alpha(bool | Closure $condition = true): static - { - $this->rule('alpha', $condition); - - return $this; - } - - public function alphaDash(bool | Closure $condition = true): static - { - $this->rule('alpha_dash', $condition); - - return $this; - } - - public function alphaNum(bool | Closure $condition = true): static - { - $this->rule('alpha_num', $condition); - - return $this; - } - - public function ascii(bool | Closure $condition = true): static - { - $this->rule('ascii', $condition); - - return $this; - } - - public function confirmed(bool | Closure $condition = true): static - { - $this->rule('confirmed', $condition); - - return $this; - } - - /** - * @param array | Arrayable | string | Closure $values - */ - public function doesntStartWith(array | Arrayable | string | Closure $values, bool | Closure $condition = true): static - { - $this->rule(static function (Field $component) use ($values) { - $values = $component->evaluate($values); - - if ($values instanceof Arrayable) { - $values = $values->toArray(); - } - - if (is_array($values)) { - $values = implode(',', $values); - } - - return 'doesnt_start_with:' . $values; - }, $condition); - - return $this; - } - - /** - * @param array | Arrayable | string | Closure $values - */ - public function doesntEndWith(array | Arrayable | string | Closure $values, bool | Closure $condition = true): static - { - $this->rule(static function (Field $component) use ($values) { - $values = $component->evaluate($values); - - if ($values instanceof Arrayable) { - $values = $values->toArray(); - } - - if (is_array($values)) { - $values = implode(',', $values); - } - - return 'doesnt_end_with:' . $values; - }, $condition); - - return $this; - } - - /** - * @param array | Arrayable | string | Closure $values - */ - public function endsWith(array | Arrayable | string | Closure $values, bool | Closure $condition = true): static - { - $this->rule(static function (Field $component) use ($values) { - $values = $component->evaluate($values); - - if ($values instanceof Arrayable) { - $values = $values->toArray(); - } - - if (is_array($values)) { - $values = implode(',', $values); - } - - return 'ends_with:' . $values; - }, $condition); - - return $this; - } - - public function enum(string | Closure $enum): static - { - $this->rule(static function (Field $component) use ($enum) { - $enum = $component->evaluate($enum); - - return new Enum($enum); - }, static fn (Field $component): bool => filled($component->evaluate($enum))); - - return $this; - } - - public function exists(string | Closure | null $table = null, string | Closure | null $column = null, ?Closure $modifyRuleUsing = null): static - { - $this->rule(static function (Field $component, ?string $model) use ($column, $modifyRuleUsing, $table) { - $table = $component->evaluate($table) ?? $model; - $column = $component->evaluate($column) ?? $component->getName(); - - $rule = Rule::exists($table, $column); - - if ($modifyRuleUsing) { - $rule = $component->evaluate($modifyRuleUsing, [ - 'rule' => $rule, - ]) ?? $rule; - } - - return $rule; - }, static fn (Field $component, ?string $model): bool => (bool) ($component->evaluate($table) ?? $model)); - - return $this; - } - - public function filled(bool | Closure $condition = true): static - { - $this->rule('filled', $condition); - - return $this; - } - - public function hexColor(bool | Closure $condition = true): static - { - $this->rule('hex_color', $condition); - - return $this; - } - - /** - * @param array | Arrayable | string | Closure $values - */ - public function in(array | Arrayable | string | Closure $values, bool | Closure $condition = true): static - { - $this->rule(static function (Field $component) use ($values) { - $values = $component->evaluate($values); - - if ($values instanceof Arrayable) { - $values = $values->toArray(); - } - - if (is_string($values)) { - $values = array_map('trim', explode(',', $values)); - } - - return Rule::in($values); - }, $condition); - - return $this; - } - - public function ip(bool | Closure $condition = true): static - { - $this->rule('ip', $condition); - - return $this; - } - - public function ipv4(bool | Closure $condition = true): static - { - $this->rule('ipv4', $condition); - - return $this; - } - - public function ipv6(bool | Closure $condition = true): static - { - $this->rule('ipv6', $condition); - - return $this; - } - - public function json(bool | Closure $condition = true): static - { - $this->rule('json', $condition); - - return $this; - } - - public function macAddress(bool | Closure $condition = true): static - { - $this->rule('mac_address', $condition); - - return $this; - } - - public function multipleOf(int | Closure $value): static - { - $this->rule(static function (Field $component) use ($value) { - return 'multiple_of:' . $component->evaluate($value); - }, static fn (Field $component): bool => filled($component->evaluate($value))); - - return $this; - } - - /** - * @param array | Arrayable | string | Closure $values - */ - public function notIn(array | Arrayable | string | Closure $values, bool | Closure $condition = true): static - { - $this->rule(static function (Field $component) use ($values) { - $values = $component->evaluate($values); - - if ($values instanceof Arrayable) { - $values = $values->toArray(); - } - - if (is_string($values)) { - $values = array_map('trim', explode(',', $values)); - } - - return Rule::notIn($values); - }, $condition); - - return $this; - } - - public function notRegex(string | Closure | null $pattern): static - { - $this->rule(static function (Field $component) use ($pattern) { - return 'not_regex:' . $component->evaluate($pattern); - }, static fn (Field $component): bool => filled($component->evaluate($pattern))); - - return $this; - } - - public function nullable(bool | Closure $condition = true): static - { - $this->required(static function (Field $component) use ($condition): bool { - return ! $component->evaluate($condition); - }); - - return $this; - } - - public function prohibited(bool | Closure $condition = true): static - { - $this->rule('prohibited', $condition); - - return $this; - } - - public function prohibitedIf(string | Closure $statePath, mixed $stateValues, bool $isStatePathAbsolute = false): static - { - return $this->multiFieldValueComparisonRule('prohibited_if', $statePath, $stateValues, $isStatePathAbsolute); - } - - public function prohibitedUnless(string | Closure $statePath, mixed $stateValues, bool $isStatePathAbsolute = false): static - { - return $this->multiFieldValueComparisonRule('prohibited_unless', $statePath, $stateValues, $isStatePathAbsolute); - } - - /** - * @param array | string | Closure $statePaths - */ - public function prohibits(array | string | Closure $statePaths, bool $isStatePathAbsolute = false): static - { - return $this->multiFieldComparisonRule('prohibits', $statePaths, $isStatePathAbsolute); - } - - public function required(bool | Closure $condition = true): static - { - $this->isRequired = $condition; - - return $this; - } - - public function requiredIf(string | Closure $statePath, mixed $stateValues, bool $isStatePathAbsolute = false): static - { - return $this->multiFieldValueComparisonRule('required_if', $statePath, $stateValues, $isStatePathAbsolute); - } - - public function requiredUnless(string | Closure $statePath, mixed $stateValues, bool $isStatePathAbsolute = false): static - { - return $this->multiFieldValueComparisonRule('required_unless', $statePath, $stateValues, $isStatePathAbsolute); - } - - /** - * @param string | array | Closure $statePaths - */ - public function requiredWith(string | array | Closure $statePaths, bool $isStatePathAbsolute = false): static - { - return $this->multiFieldComparisonRule('required_with', $statePaths, $isStatePathAbsolute); - } - - /** - * @param string | array | Closure $statePaths - */ - public function requiredWithAll(string | array | Closure $statePaths, bool $isStatePathAbsolute = false): static - { - return $this->multiFieldComparisonRule('required_with_all', $statePaths, $isStatePathAbsolute); - } - - /** - * @param string | array | Closure $statePaths - */ - public function requiredWithout(string | array | Closure $statePaths, bool $isStatePathAbsolute = false): static - { - return $this->multiFieldComparisonRule('required_without', $statePaths, $isStatePathAbsolute); - } - - /** - * @param string | array | Closure $statePaths - */ - public function requiredWithoutAll(string | array | Closure $statePaths, bool $isStatePathAbsolute = false): static - { - return $this->multiFieldComparisonRule('required_without_all', $statePaths, $isStatePathAbsolute); - } - - public function regex(string | Closure | null $pattern): static - { - $this->regexPattern = $pattern; - - return $this; - } - - /** - * @param array | Arrayable | string | Closure $values - */ - public function startsWith(array | Arrayable | string | Closure $values, bool | Closure $condition = true): static - { - $this->rule(static function (Field $component) use ($values) { - $values = $component->evaluate($values); - - if ($values instanceof Arrayable) { - $values = $values->toArray(); - } - - if (is_array($values)) { - $values = implode(',', $values); - } - - return 'starts_with:' . $values; - }, $condition); - - return $this; - } - - public function string(bool | Closure $condition = true): static - { - $this->rule('string', $condition); - - return $this; - } - - public function uuid(bool | Closure $condition = true): static - { - $this->rule('uuid', $condition); - - return $this; - } - - public function rule(mixed $rule, bool | Closure $condition = true): static - { - $this->rules = [ - ...$this->rules, - [$rule, $condition], - ]; - - return $this; - } - - /** - * @param string | array $rules - */ - public function rules(string | array $rules, bool | Closure $condition = true): static - { - if (is_string($rules)) { - $rules = explode('|', $rules); - } - - $this->rules = [ - ...$this->rules, - ...array_map(static fn (string | object $rule): array => [$rule, $condition], $rules), - ]; - - return $this; - } - - public function after(string | Closure $date, bool $isStatePathAbsolute = false): static - { - return $this->dateComparisonRule('after', $date, $isStatePathAbsolute); - } - - public function afterOrEqual(string | Closure $date, bool $isStatePathAbsolute = false): static - { - return $this->dateComparisonRule('after_or_equal', $date, $isStatePathAbsolute); - } - - public function before(string | Closure $date, bool $isStatePathAbsolute = false): static - { - return $this->dateComparisonRule('before', $date, $isStatePathAbsolute); - } - - public function beforeOrEqual(string | Closure $date, bool $isStatePathAbsolute = false): static - { - return $this->dateComparisonRule('before_or_equal', $date, $isStatePathAbsolute); - } - - public function different(string | Closure $statePath, bool $isStatePathAbsolute = false): static - { - return $this->fieldComparisonRule('different', $statePath, $isStatePathAbsolute); - } - - public function gt(string | Closure $statePath, bool $isStatePathAbsolute = false): static - { - return $this->fieldComparisonRule('gt', $statePath, $isStatePathAbsolute); - } - - public function gte(string | Closure $statePath, bool $isStatePathAbsolute = false): static - { - return $this->fieldComparisonRule('gte', $statePath, $isStatePathAbsolute); - } - - public function lt(string | Closure $statePath, bool $isStatePathAbsolute = false): static - { - return $this->fieldComparisonRule('lt', $statePath, $isStatePathAbsolute); - } - - public function lte(string | Closure $statePath, bool $isStatePathAbsolute = false): static - { - return $this->fieldComparisonRule('lte', $statePath, $isStatePathAbsolute); - } - - public function same(string | Closure $statePath, bool $isStatePathAbsolute = false): static - { - return $this->fieldComparisonRule('same', $statePath, $isStatePathAbsolute); - } - - public function unique(string | Closure | null $table = null, string | Closure | null $column = null, Model | Closure | null $ignorable = null, bool $ignoreRecord = false, ?Closure $modifyRuleUsing = null): static - { - $this->rule(static function (Field $component, ?string $model) use ($column, $ignorable, $ignoreRecord, $modifyRuleUsing, $table) { - $table = $component->evaluate($table) ?? $model; - $column = $component->evaluate($column) ?? $component->getName(); - $ignorable = ($ignoreRecord && ! $ignorable) ? - $component->getRecord() : - $component->evaluate($ignorable); - - $rule = Rule::unique($table, $column) - ->when( - $ignorable, - fn (Unique $rule) => $rule->ignore( - $ignorable->getOriginal($ignorable->getKeyName()), - $ignorable->getQualifiedKeyName(), - ), - ); - - if ($modifyRuleUsing) { - $rule = $component->evaluate($modifyRuleUsing, [ - 'rule' => $rule, - ]) ?? $rule; - } - - return $rule; - }, fn (Field $component, ?string $model): bool => (bool) ($component->evaluate($table) ?? $model)); - - return $this; - } - - public function distinct(): static - { - $this->rule(static function (Field $component, mixed $state) { - return function (string $attribute, mixed $value, Closure $fail) use ($component, $state) { - if (blank($state)) { - return; - } - - $repeater = $component->getParentRepeater(); - - if (! $repeater) { - return; - } - - $repeaterStatePath = $repeater->getStatePath(); - - $componentItemStatePath = (string) str($component->getStatePath()) - ->after("{$repeaterStatePath}.") - ->after('.'); - - $repeaterItemKey = (string) str($component->getStatePath()) - ->after("{$repeaterStatePath}.") - ->beforeLast(".{$componentItemStatePath}"); - - $repeaterSiblingState = Arr::except($repeater->getState(), [$repeaterItemKey]); - - if (empty($repeaterSiblingState)) { - return; - } - - $validationMessages = $component->getValidationMessages(); - - if (is_bool($state)) { - $isSiblingItemSelected = collect($repeaterSiblingState) - ->pluck($componentItemStatePath) - ->contains(true); - - if ($state && $isSiblingItemSelected) { - $fail(__($validationMessages['distinct.only_one_must_be_selected'] ?? 'filament-forms::validation.distinct.only_one_must_be_selected', ['attribute' => $component->getValidationAttribute()])); - - return; - } - - if ($state || $isSiblingItemSelected) { - return; - } - - $fail(__($validationMessages['distinct.must_be_selected'] ?? 'filament-forms::validation.distinct.must_be_selected', ['attribute' => $component->getValidationAttribute()])); - - return; - } - - if (is_array($state)) { - $hasSiblingStateIntersections = collect($repeaterSiblingState) - ->filter(fn (array $item): bool => filled(array_intersect(data_get($item, $componentItemStatePath, []), $state))) - ->isNotEmpty(); - - if (! $hasSiblingStateIntersections) { - return; - } - - $fail(__($validationMessages['distinct'] ?? 'validation.distinct', ['attribute' => $component->getValidationAttribute()])); - - return; - } - - $hasDuplicateSiblingState = collect($repeaterSiblingState) - ->pluck($componentItemStatePath) - ->contains($state); - - if (! $hasDuplicateSiblingState) { - return; - } - - $fail(__($validationMessages['distinct'] ?? 'validation.distinct', ['attribute' => $component->getValidationAttribute()])); - }; - }); - - return $this; - } - - public function validationAttribute(string | Closure | null $label): static - { - $this->validationAttribute = $label; - - return $this; - } - - /** - * @param array $messages - */ - public function validationMessages(array $messages): static - { - $this->validationMessages = $messages; - - return $this; - } - - public function getRegexPattern(): ?string - { - return $this->evaluate($this->regexPattern); - } - - public function getRequiredValidationRule(): string - { - return $this->isRequired() ? 'required' : 'nullable'; - } - - public function getValidationAttribute(): string - { - return $this->evaluate($this->validationAttribute) ?? Str::lcfirst($this->getLabel()); - } - - /** - * @return array - */ - public function getValidationMessages(): array - { - $messages = []; - - foreach ($this->validationMessages as $rule => $message) { - $messages[$rule] = $this->evaluate($message); - } - - return array_filter($messages); - } - - /** - * @return array - */ - public function getValidationRules(): array - { - $rules = [ - $this->getRequiredValidationRule(), - ]; - - if (filled($regexPattern = $this->getRegexPattern())) { - $rules[] = "regex:{$regexPattern}"; - } - - foreach ($this->rules as [$rule, $condition]) { - if (is_numeric($rule)) { - $rules[] = $this->evaluate($condition); - } elseif ($this->evaluate($condition)) { - $rules[] = $this->evaluate($rule); - } - } - - return $rules; - } - - /** - * @param array> $messages - */ - public function dehydrateValidationMessages(array &$messages): void - { - $statePath = $this->getStatePath(); - - if (count($componentMessages = $this->getValidationMessages())) { - foreach ($componentMessages as $rule => $message) { - $messages["{$statePath}.{$rule}"] = $message; - } - } - } - - /** - * @param array> $rules - */ - public function dehydrateValidationRules(array &$rules): void - { - $statePath = $this->getStatePath(); - - if (count($componentRules = $this->getValidationRules())) { - $rules[$statePath] = $componentRules; - } - - if (! $this instanceof HasNestedRecursiveValidationRules) { - return; - } - - $nestedRecursiveValidationRules = $this->getNestedRecursiveValidationRules(); - - if (! count($nestedRecursiveValidationRules)) { - return; - } - - $rules["{$statePath}.*"] = $nestedRecursiveValidationRules; - } - - public function dehydrateValidationAttributes(array &$attributes): void - { - $attributes[$this->getStatePath()] = $this->getValidationAttribute(); - } - - public function isRequired(): bool - { - return (bool) $this->evaluate($this->isRequired); - } - - public function dateComparisonRule(string $rule, string | Closure $date, bool $isStatePathAbsolute = false): static - { - $this->rule(static function (Field $component) use ($date, $isStatePathAbsolute, $rule): string { - $date = $component->evaluate($date); - - if (! (strtotime($date) || $isStatePathAbsolute)) { - $containerStatePath = $component->getContainer()->getStatePath(); - - if ($containerStatePath) { - $date = "{$containerStatePath}.{$date}"; - } - } - - return "{$rule}:{$date}"; - }, fn (Field $component): bool => (bool) $component->evaluate($date)); - - return $this; - } - - public function fieldComparisonRule(string $rule, string | Closure $statePath, bool $isStatePathAbsolute = false): static - { - $this->rule(static function (Field $component) use ($isStatePathAbsolute, $rule, $statePath): string { - $statePath = $component->evaluate($statePath); - - if (! $isStatePathAbsolute) { - $containerStatePath = $component->getContainer()->getStatePath(); - - if ($containerStatePath) { - $statePath = "{$containerStatePath}.{$statePath}"; - } - } - - return "{$rule}:{$statePath}"; - }, fn (Field $component): bool => (bool) $component->evaluate($statePath)); - - return $this; - } - - /** - * @param array | string | Closure $statePaths - */ - public function multiFieldComparisonRule(string $rule, array | string | Closure $statePaths, bool $isStatePathAbsolute = false): static - { - $this->rule(static function (Field $component) use ($isStatePathAbsolute, $rule, $statePaths): string { - $statePaths = $component->evaluate($statePaths); - - if (! $isStatePathAbsolute) { - if (is_string($statePaths)) { - $statePaths = explode(',', $statePaths); - } - - $containerStatePath = $component->getContainer()->getStatePath(); - - if ($containerStatePath) { - $statePaths = array_map(function ($statePath) use ($containerStatePath) { - $statePath = trim($statePath); - - return "{$containerStatePath}.{$statePath}"; - }, $statePaths); - } - } - - if (is_array($statePaths)) { - $statePaths = implode(',', $statePaths); - } - - return "{$rule}:{$statePaths}"; - }, fn (Field $component): bool => (bool) $component->evaluate($statePaths)); - - return $this; - } - - public function multiFieldValueComparisonRule(string $rule, string | Closure $statePath, mixed $stateValues, bool $isStatePathAbsolute = false): static - { - $this->rule(static function (Field $component) use ($isStatePathAbsolute, $rule, $statePath, $stateValues): string { - $statePath = $component->evaluate($statePath); - $stateValues = $component->evaluate($stateValues); - - if (! $isStatePathAbsolute) { - $containerStatePath = $component->getContainer()->getStatePath(); - - if ($containerStatePath) { - $statePath = "{$containerStatePath}.{$statePath}"; - } - } - - if (is_array($stateValues)) { - $stateValues = implode(',', $stateValues); - } - - return "{$rule}:{$statePath},{$stateValues}"; - }, fn (Field $component): bool => (bool) $component->evaluate($statePath)); - - return $this; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanDisableOptions.php b/vendor/filament/forms/src/Components/Concerns/CanDisableOptions.php deleted file mode 100644 index 11f54e44..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanDisableOptions.php +++ /dev/null @@ -1,49 +0,0 @@ -isOptionDisabled = $callback; - - return $this; - } - - /** - * @return array - */ - public function getEnabledOptions(): array - { - return array_filter( - $this->getOptions(), - fn ($label, $value) => ! $this->isOptionDisabled($value, $label), - ARRAY_FILTER_USE_BOTH, - ); - } - - /** - * @param array-key $value - */ - public function isOptionDisabled($value, string $label): bool - { - if ($this->isOptionDisabled === null) { - return false; - } - - return (bool) $this->evaluate($this->isOptionDisabled, [ - 'label' => $label, - 'value' => $value, - ]); - } - - public function hasDynamicDisabledOptions(): bool - { - return $this->isOptionDisabled instanceof Closure; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanDisableOptionsWhenSelectedInSiblingRepeaterItems.php b/vendor/filament/forms/src/Components/Concerns/CanDisableOptionsWhenSelectedInSiblingRepeaterItems.php deleted file mode 100644 index 79bc5b08..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanDisableOptionsWhenSelectedInSiblingRepeaterItems.php +++ /dev/null @@ -1,37 +0,0 @@ -distinct(); - $this->live(); - - $this->disableOptionWhen(static function (Component & CanDisableOptions $component, string $value, mixed $state) { - $repeater = $component->getParentRepeater(); - - if (! $repeater) { - return false; - } - - return collect($repeater->getState()) - ->pluck( - (string) str($component->getStatePath()) - ->after("{$repeater->getStatePath()}.") - ->after('.'), - ) - ->flatten() - ->diff(Arr::wrap($state)) - ->filter(fn (mixed $siblingItemState): bool => filled($siblingItemState)) - ->contains($value); - }); - - return $this; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanFixIndistinctState.php b/vendor/filament/forms/src/Components/Concerns/CanFixIndistinctState.php deleted file mode 100644 index af6b7ecb..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanFixIndistinctState.php +++ /dev/null @@ -1,84 +0,0 @@ -distinct(); - $this->live(); - - $this->afterStateUpdated(static function (Component $component, mixed $state, Set $set) { - if (blank($state)) { - return; - } - - $repeater = $component->getParentRepeater(); - - if (! $repeater) { - return; - } - - $repeaterStatePath = $repeater->getStatePath(); - - $componentItemStatePath = (string) str($component->getStatePath()) - ->after("{$repeaterStatePath}.") - ->after('.'); - - $repeaterItemKey = (string) str($component->getStatePath()) - ->after("{$repeaterStatePath}.") - ->beforeLast(".{$componentItemStatePath}"); - - $repeaterSiblingState = Arr::except($repeater->getState(), [$repeaterItemKey]); - - if (empty($repeaterSiblingState)) { - return; - } - - if (is_array($state)) { - collect($repeaterSiblingState) - ->filter(fn (array $itemState): bool => filled(array_intersect(data_get($itemState, $componentItemStatePath, []), $state))) - ->map(fn (array $itemState): array => collect(data_get($itemState, $componentItemStatePath) ?? []) - ->diff($state) - ->values() - ->all()) - ->each(fn (array $newSiblingItemState, string $itemKey) => $set( - path: "{$repeaterStatePath}.{$itemKey}.{$componentItemStatePath}", - state: $newSiblingItemState, - isAbsolute: true, - )); - - return; - } - - collect($repeaterSiblingState) - ->map(fn (array $itemState): mixed => data_get($itemState, $componentItemStatePath)) - ->filter(function (mixed $siblingItemComponentState) use ($state): bool { - if ($siblingItemComponentState === false) { - return false; - } - - if (blank($siblingItemComponentState)) { - return false; - } - - return $siblingItemComponentState === $state; - }) - ->each(fn (mixed $siblingItemComponentState, string $itemKey) => $set( - path: "{$repeaterStatePath}.{$itemKey}.{$componentItemStatePath}", - state: match ($siblingItemComponentState) { - true => false, - default => null, - }, - isAbsolute: true, - )); - }); - - return $this; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanGenerateUuids.php b/vendor/filament/forms/src/Components/Concerns/CanGenerateUuids.php deleted file mode 100644 index c8393f10..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanGenerateUuids.php +++ /dev/null @@ -1,27 +0,0 @@ -generateUuidUsing = $callback; - - return $this; - } - - public function generateUuid(): string - { - if ($this->generateUuidUsing) { - return $this->evaluate($this->generateUuidUsing); - } - - return (string) Str::uuid(); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanLimitItemsLength.php b/vendor/filament/forms/src/Components/Concerns/CanLimitItemsLength.php deleted file mode 100644 index 3e9f9932..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanLimitItemsLength.php +++ /dev/null @@ -1,60 +0,0 @@ -maxItems = $count; - - $this->rule('array'); - $this->rule(static function (Component $component): string { - /** @var static $component */ - $count = $component->getMaxItems(); - - return "max:{$count}"; - }); - - return $this; - } - - public function minItems(int | Closure | null $count): static - { - $this->minItems = $count; - - $this->rule('array'); - $this->rule(static function (Component $component): string { - /** @var static $component */ - $count = $component->getMinItems(); - - return "min:{$count}"; - }); - - return $this; - } - - public function getMaxItems(): ?int - { - return $this->evaluate($this->maxItems); - } - - public function getMinItems(): ?int - { - return $this->evaluate($this->minItems); - } - - public function getItemsCount(): int - { - $state = $this->getState(); - - return is_array($state) ? count($state) : 0; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanSelectPlaceholder.php b/vendor/filament/forms/src/Components/Concerns/CanSelectPlaceholder.php deleted file mode 100644 index 0f174539..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanSelectPlaceholder.php +++ /dev/null @@ -1,32 +0,0 @@ -canSelectPlaceholder = $condition; - - return $this; - } - - /** - * @deprecated Use `selectablePlaceholder()` instead. - */ - public function disablePlaceholderSelection(bool | Closure $condition = true): static - { - $this->selectablePlaceholder(fn (): bool => ! $this->evaluate($condition)); - - return $this; - } - - public function canSelectPlaceholder(): bool - { - return (bool) $this->evaluate($this->canSelectPlaceholder); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/CanSpanColumns.php b/vendor/filament/forms/src/Components/Concerns/CanSpanColumns.php deleted file mode 100644 index 15287db2..00000000 --- a/vendor/filament/forms/src/Components/Concerns/CanSpanColumns.php +++ /dev/null @@ -1,111 +0,0 @@ - - */ - protected array $columnSpan = [ - 'default' => 1, - 'sm' => null, - 'md' => null, - 'lg' => null, - 'xl' => null, - '2xl' => null, - ]; - - /** - * @var array - */ - protected array $columnStart = [ - 'default' => null, - 'sm' => null, - 'md' => null, - 'lg' => null, - 'xl' => null, - '2xl' => null, - ]; - - /** - * @param array | int | string | Closure | null $span - */ - public function columnSpan(array | int | string | Closure | null $span): static - { - if (! is_array($span)) { - $span = [ - 'default' => $span, - ]; - } - - $this->columnSpan = [ - ...$this->columnSpan, - ...$span, - ]; - - return $this; - } - - public function columnSpanFull(): static - { - $this->columnSpan('full'); - - return $this; - } - - /** - * @param array | int | string | Closure | null $start - */ - public function columnStart(array | int | string | Closure | null $start): static - { - if (! is_array($start)) { - $start = [ - 'default' => $start, - ]; - } - - $this->columnStart = [ - ...$this->columnStart, - ...$start, - ]; - - return $this; - } - - /** - * @return array | int | string | null - */ - public function getColumnSpan(int | string | null $breakpoint = null): array | int | string | null - { - $span = $this->columnSpan; - - if ($breakpoint !== null) { - return $this->evaluate($span[$breakpoint] ?? null); - } - - return array_map( - fn (array | int | string | Closure | null $value): array | int | string | null => $this->evaluate($value), - $span, - ); - } - - /** - * @return array | int | string | null - */ - public function getColumnStart(int | string | null $breakpoint = null): array | int | string | null - { - $start = $this->columnStart; - - if ($breakpoint !== null) { - return $this->evaluate($start[$breakpoint] ?? null); - } - - return array_map( - fn (array | int | string | Closure | null $value): array | int | string | null => $this->evaluate($value), - $start, - ); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/Cloneable.php b/vendor/filament/forms/src/Components/Concerns/Cloneable.php deleted file mode 100644 index bf382b53..00000000 --- a/vendor/filament/forms/src/Components/Concerns/Cloneable.php +++ /dev/null @@ -1,29 +0,0 @@ -childComponents)) { - $this->childComponents = array_map( - fn (Component $component): Component => $component->getClone(), - $this->childComponents, - ); - } - - return $this; - } - - public function getClone(): static - { - $clone = clone $this; - $clone->flushCachedAbsoluteStatePath(); - $clone->cloneChildComponents(); - - return $clone; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/EntanglesStateWithSingularRelationship.php b/vendor/filament/forms/src/Components/Concerns/EntanglesStateWithSingularRelationship.php deleted file mode 100644 index 9b9f71d6..00000000 --- a/vendor/filament/forms/src/Components/Concerns/EntanglesStateWithSingularRelationship.php +++ /dev/null @@ -1,285 +0,0 @@ -relationship = $name; - $this->statePath($name); - - $this->loadStateFromRelationshipsUsing(static function (Component | CanEntangleWithSingularRelationships $component) { - $component->clearCachedExistingRecord(); - - $component->fillFromRelationship(); - }); - - $this->saveRelationshipsBeforeChildrenUsing(static function (Component | CanEntangleWithSingularRelationships $component, HasForms $livewire) use ($condition): void { - $record = $component->getCachedExistingRecord(); - - if (! $component->evaluate($condition)) { - $record?->delete(); - - return; - } - - if ($record) { - return; - } - - $relationship = $component->getRelationship(); - - if ($relationship instanceof BelongsTo) { - return; - } - - $data = $component->getChildComponentContainer()->getState(shouldCallHooksBefore: false); - $data = $component->mutateRelationshipDataBeforeCreate($data); - - $relatedModel = $component->getRelatedModel(); - - $translatableContentDriver = $livewire->makeFilamentTranslatableContentDriver(); - - if ($translatableContentDriver) { - $record = $translatableContentDriver->makeRecord($relatedModel, $data); - } else { - $record = new $relatedModel(); - $record->fill($data); - } - - $relationship->save($record); - - $component->cachedExistingRecord($record); - }); - - $this->saveRelationshipsUsing(static function (Component | CanEntangleWithSingularRelationships $component, HasForms $livewire) use ($condition): void { - if (! $component->evaluate($condition)) { - return; - } - - $data = $component->getChildComponentContainer()->getState(shouldCallHooksBefore: false); - - $record = $component->getCachedExistingRecord(); - - $translatableContentDriver = $livewire->makeFilamentTranslatableContentDriver(); - - if ($record) { - $data = $component->mutateRelationshipDataBeforeSave($data); - - $translatableContentDriver ? - $translatableContentDriver->updateRecord($record, $data) : - $record->fill($data)->save(); - - return; - } - - $relationship = $component->getRelationship(); - - if (! ($relationship instanceof BelongsTo)) { - return; - } - - $data = $component->mutateRelationshipDataBeforeCreate($data); - - $relatedModel = $component->getRelatedModel(); - - if ($translatableContentDriver) { - $record = $translatableContentDriver->makeRecord($relatedModel, $data); - } else { - $record = new $relatedModel(); - $record->fill($data); - } - - $record->save(); - - $relationship->associate($record); - $relationship->getParent()->save(); - - $component->cachedExistingRecord($record); - }); - - $this->dehydrated(false); - - return $this; - } - - public function fillFromRelationship(): void - { - $record = $this->getCachedExistingRecord(); - - if (! $record) { - $this->getChildComponentContainer()->fill(andCallHydrationHooks: false, andFillStateWithNull: false); - - return; - } - - $data = $this->mutateRelationshipDataBeforeFill( - $this->getStateFromRelatedRecord($record), - ); - - $this->getChildComponentContainer()->fill($data, andCallHydrationHooks: false, andFillStateWithNull: false); - } - - /** - * @return array - */ - protected function getStateFromRelatedRecord(Model $record): array - { - if ($translatableContentDriver = $this->getLivewire()->makeFilamentTranslatableContentDriver()) { - return $translatableContentDriver->getRecordAttributesToArray($record); - } - - return $record->attributesToArray(); - } - - /** - * @param array-key $key - */ - public function getChildComponentContainer($key = null): ComponentContainer - { - $container = parent::getChildComponentContainer($key); - - $relationship = $this->getRelationship(); - - if (! $relationship) { - return $container; - } - - return $container->model($this->getCachedExistingRecord() ?? $this->getRelatedModel()); - } - - public function getRelationship(): BelongsTo | HasOne | MorphOne | null - { - $name = $this->getRelationshipName(); - - if (blank($name)) { - return null; - } - - return $this->getModelInstance()->{$name}(); - } - - public function getRelationshipName(): ?string - { - return $this->relationship; - } - - public function getRelatedModel(): ?string - { - return $this->getRelationship()?->getModel()::class; - } - - public function cachedExistingRecord(?Model $record): static - { - $this->cachedExistingRecord = $record; - - return $this; - } - - public function getCachedExistingRecord(): ?Model - { - if ($this->cachedExistingRecord) { - return $this->cachedExistingRecord; - } - - $record = $this->getRelationship()?->getResults(); - - if (! $record?->exists) { - return null; - } - - return $this->cachedExistingRecord = $record; - } - - public function clearCachedExistingRecord(): void - { - $this->cachedExistingRecord = null; - } - - public function mutateRelationshipDataBeforeCreateUsing(?Closure $callback): static - { - $this->mutateRelationshipDataBeforeCreateUsing = $callback; - - return $this; - } - - /** - * @param array $data - * @return array - */ - public function mutateRelationshipDataBeforeCreate(array $data): array - { - if ($this->mutateRelationshipDataBeforeCreateUsing instanceof Closure) { - $data = $this->evaluate($this->mutateRelationshipDataBeforeCreateUsing, [ - 'data' => $data, - ]); - } - - return $data; - } - - public function mutateRelationshipDataBeforeSaveUsing(?Closure $callback): static - { - $this->mutateRelationshipDataBeforeSaveUsing = $callback; - - return $this; - } - - /** - * @param array $data - * @return array - */ - public function mutateRelationshipDataBeforeFill(array $data): array - { - if ($this->mutateRelationshipDataBeforeFillUsing instanceof Closure) { - $data = $this->evaluate($this->mutateRelationshipDataBeforeFillUsing, [ - 'data' => $data, - ]); - } - - return $data; - } - - public function mutateRelationshipDataBeforeFillUsing(?Closure $callback): static - { - $this->mutateRelationshipDataBeforeFillUsing = $callback; - - return $this; - } - - /** - * @param array $data - * @return array - */ - public function mutateRelationshipDataBeforeSave(array $data): array - { - if ($this->mutateRelationshipDataBeforeSaveUsing instanceof Closure) { - $data = $this->evaluate($this->mutateRelationshipDataBeforeSaveUsing, [ - 'data' => $data, - ]); - } - - return $data; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasActions.php b/vendor/filament/forms/src/Components/Concerns/HasActions.php deleted file mode 100644 index 12f5b14a..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasActions.php +++ /dev/null @@ -1,120 +0,0 @@ - | null - */ - protected ?array $cachedActions = null; - - /** - * @var array - */ - protected array $actions = []; - - protected Model | string | null $actionFormModel = null; - - /** - * @param array $actions - */ - public function registerActions(array $actions): static - { - $this->actions = [ - ...$this->actions, - ...$actions, - ]; - - return $this; - } - - public function getAction(string $name): ?Action - { - return $this->getActions()[$name] ?? null; - } - - /** - * @return array - */ - public function getActions(): array - { - return $this->cachedActions ??= $this->cacheActions(); - } - - /** - * @return array - */ - public function cacheActions(): array - { - $this->cachedActions = []; - - if ($this instanceof HasAffixActions) { - $this->cachedActions = [ - ...$this->cachedActions, - ...$this->getPrefixActions(), - ...$this->getSuffixActions(), - ]; - } - - if ($this instanceof HasExtraItemActions) { - $this->cachedActions = [ - ...$this->cachedActions, - ...$this->getExtraItemActions(), - ]; - } - - if ($this instanceof HasHeaderActions) { - $this->cachedActions = [ - ...$this->cachedActions, - ...$this->getHeaderActions(), - ]; - } - - if ($this instanceof HasHintActions) { - $this->cachedActions = [ - ...$this->cachedActions, - ...$this->getHintActions(), - ]; - } - - foreach ($this->actions as $registeredAction) { - foreach (Arr::wrap($this->evaluate($registeredAction)) as $action) { - $this->cachedActions[$action->getName()] = $this->prepareAction($action); - } - } - - return $this->cachedActions; - } - - public function prepareAction(Action $action): Action - { - return $action->component($this); - } - - public function actionFormModel(Model | string | null $model): static - { - $this->actionFormModel = $model; - - return $this; - } - - public function getActionFormModel(): Model | string | null - { - return $this->actionFormModel ?? $this->getRecord() ?? $this->getModel(); - } - - public function hasAction(string $name): bool - { - return array_key_exists($name, $this->getActions()); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasAffixes.php b/vendor/filament/forms/src/Components/Concerns/HasAffixes.php deleted file mode 100644 index 8758faea..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasAffixes.php +++ /dev/null @@ -1,269 +0,0 @@ - | null - */ - protected ?array $cachedSuffixActions = null; - - /** - * @var array - */ - protected array $suffixActions = []; - - protected string | Htmlable | Closure | null $suffixLabel = null; - - /** - * @var array | null - */ - protected ?array $cachedPrefixActions = null; - - /** - * @var array - */ - protected array $prefixActions = []; - - protected string | Htmlable | Closure | null $prefixLabel = null; - - protected string | Closure | null $prefixIcon = null; - - /** - * @var string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null - */ - protected string | array | Closure | null $prefixIconColor = null; - - protected string | Closure | null $suffixIcon = null; - - /** - * @var string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null - */ - protected string | array | Closure | null $suffixIconColor = null; - - protected bool | Closure $isPrefixInline = false; - - protected bool | Closure $isSuffixInline = false; - - public function prefix(string | Htmlable | Closure | null $label, bool | Closure $isInline = false): static - { - $this->prefixLabel = $label; - $this->inlinePrefix($isInline); - - return $this; - } - - public function postfix(string | Htmlable | Closure | null $label, bool | Closure $isInline = false): static - { - return $this->suffix($label, $isInline); - } - - public function prefixAction(Action | Closure $action, bool | Closure $isInline = false): static - { - $this->prefixActions([$action], $isInline); - - return $this; - } - - /** - * @param array $actions - */ - public function prefixActions(array $actions, bool | Closure $isInline = false): static - { - $this->prefixActions = [ - ...$this->prefixActions, - ...$actions, - ]; - $this->inlinePrefix($isInline); - - return $this; - } - - public function suffixAction(Action | Closure $action, bool | Closure $isInline = false): static - { - $this->suffixActions([$action], $isInline); - - return $this; - } - - /** - * @param array $actions - */ - public function suffixActions(array $actions, bool | Closure $isInline = false): static - { - $this->suffixActions = [ - ...$this->suffixActions, - ...$actions, - ]; - $this->inlineSuffix($isInline); - - return $this; - } - - public function suffix(string | Htmlable | Closure | null $label, bool | Closure $isInline = false): static - { - $this->suffixLabel = $label; - $this->inlineSuffix($isInline); - - return $this; - } - - public function inlinePrefix(bool | Closure $isInline = true): static - { - $this->isPrefixInline = $isInline; - - return $this; - } - - public function inlineSuffix(bool | Closure $isInline = true): static - { - $this->isSuffixInline = $isInline; - - return $this; - } - - public function prefixIcon(string | Closure | null $icon, bool | Closure $isInline = false): static - { - $this->prefixIcon = $icon; - $this->inlinePrefix($isInline); - - return $this; - } - - /** - * @param string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null $color - */ - public function prefixIconColor(string | array | Closure | null $color = null): static - { - $this->prefixIconColor = $color; - - return $this; - } - - public function suffixIcon(string | Closure | null $icon, bool | Closure $isInline = false): static - { - $this->suffixIcon = $icon; - $this->inlineSuffix($isInline); - - return $this; - } - - /** - * @param string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null $color - */ - public function suffixIconColor(string | array | Closure | null $color = null): static - { - $this->suffixIconColor = $color; - - return $this; - } - - /** - * @return array - */ - public function getPrefixActions(): array - { - return $this->cachedPrefixActions ?? $this->cachePrefixActions(); - } - - /** - * @return array - */ - public function cachePrefixActions(): array - { - $this->cachedPrefixActions = []; - - foreach ($this->prefixActions as $prefixAction) { - foreach (Arr::wrap($this->evaluate($prefixAction)) as $action) { - $this->cachedPrefixActions[$action->getName()] = $this->prepareAction( - $action - ->defaultSize(ActionSize::Small) - ->defaultView(Action::ICON_BUTTON_VIEW), - ); - } - } - - return $this->cachedPrefixActions; - } - - /** - * @return array - */ - public function getSuffixActions(): array - { - return $this->cachedSuffixActions ?? $this->cacheSuffixActions(); - } - - /** - * @return array - */ - public function cacheSuffixActions(): array - { - $this->cachedSuffixActions = []; - - foreach ($this->suffixActions as $suffixAction) { - foreach (Arr::wrap($this->evaluate($suffixAction)) as $action) { - $this->cachedSuffixActions[$action->getName()] = $this->prepareAction( - $action - ->defaultSize(ActionSize::Small) - ->defaultView(Action::ICON_BUTTON_VIEW), - ); - } - } - - return $this->cachedSuffixActions; - } - - public function getPrefixLabel(): string | Htmlable | null - { - return $this->evaluate($this->prefixLabel); - } - - public function getSuffixLabel(): string | Htmlable | null - { - return $this->evaluate($this->suffixLabel); - } - - public function getPrefixIcon(): ?string - { - return $this->evaluate($this->prefixIcon); - } - - public function getSuffixIcon(): ?string - { - return $this->evaluate($this->suffixIcon); - } - - /** - * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | null - */ - public function getPrefixIconColor(): string | array | null - { - return $this->evaluate($this->prefixIconColor); - } - - /** - * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | null - */ - public function getSuffixIconColor(): string | array | null - { - return $this->evaluate($this->suffixIconColor); - } - - public function isPrefixInline(): bool - { - return (bool) $this->evaluate($this->isPrefixInline); - } - - public function isSuffixInline(): bool - { - return (bool) $this->evaluate($this->isSuffixInline); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasChildComponents.php b/vendor/filament/forms/src/Components/Concerns/HasChildComponents.php deleted file mode 100644 index 3cfe3aec..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasChildComponents.php +++ /dev/null @@ -1,82 +0,0 @@ - | Closure - */ - protected array | Closure $childComponents = []; - - /** - * @param array | Closure $components - */ - public function childComponents(array | Closure $components): static - { - $this->childComponents = $components; - - return $this; - } - - /** - * @param array | Closure $components - */ - public function schema(array | Closure $components): static - { - $this->childComponents($components); - - return $this; - } - - /** - * @return array - */ - public function getChildComponents(): array - { - return $this->evaluate($this->childComponents); - } - - /** - * @param array-key $key - */ - public function getChildComponentContainer($key = null): ComponentContainer - { - if (filled($key) && array_key_exists($key, $containers = $this->getChildComponentContainers())) { - return $containers[$key]; - } - - return ComponentContainer::make($this->getLivewire()) - ->parentComponent($this) - ->components($this->getChildComponents()); - } - - /** - * @return array - */ - public function getChildComponentContainers(bool $withHidden = false): array - { - if (! $this->hasChildComponentContainer($withHidden)) { - return []; - } - - return [$this->getChildComponentContainer()]; - } - - public function hasChildComponentContainer(bool $withHidden = false): bool - { - if ((! $withHidden) && $this->isHidden()) { - return false; - } - - if ($this->getChildComponents() === []) { - return false; - } - - return true; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasColors.php b/vendor/filament/forms/src/Components/Concerns/HasColors.php deleted file mode 100644 index 7a3d8757..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasColors.php +++ /dev/null @@ -1,60 +0,0 @@ - | Arrayable | Closure | null - */ - protected array | Arrayable | Closure | null $colors = null; - - /** - * @param array | Arrayable | Closure | null $colors - */ - public function colors(array | Arrayable | Closure | null $colors): static - { - $this->colors = $colors; - - return $this; - } - - /** - * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | null - */ - public function getColor(mixed $value): string | array | null - { - return $this->getColors()[$value] ?? null; - } - - /** - * @return array - */ - public function getColors(): array - { - $colors = $this->evaluate($this->colors); - - if ($colors instanceof Arrayable) { - $colors = $colors->toArray(); - } - - if ( - is_string($this->options) && - enum_exists($enum = $this->options) && - is_a($enum, ColorInterface::class, allow_string: true) - ) { - return array_reduce($enum::cases(), function (array $carry, ColorInterface & UnitEnum $case): array { - $carry[$case?->value ?? $case->name] = $case->getColor(); - - return $carry; - }, []); - } - - return $colors ?? []; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasContainerGridLayout.php b/vendor/filament/forms/src/Components/Concerns/HasContainerGridLayout.php deleted file mode 100644 index 19d8ecf9..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasContainerGridLayout.php +++ /dev/null @@ -1,51 +0,0 @@ - | null - */ - protected ?array $gridColumns = null; - - /** - * @param array | int | string | null $columns - */ - public function grid(array | int | string | null $columns = 2): static - { - if (! is_array($columns)) { - $columns = [ - 'lg' => $columns, - ]; - } - - $this->gridColumns = [ - ...($this->gridColumns ?? []), - ...$columns, - ]; - - return $this; - } - - /** - * @return array | int | string | null - */ - public function getGridColumns(?string $breakpoint = null): array | int | string | null - { - $columns = $this->gridColumns ?? [ - 'default' => 1, - 'sm' => null, - 'md' => null, - 'lg' => null, - 'xl' => null, - '2xl' => null, - ]; - - if ($breakpoint !== null) { - return $columns[$breakpoint] ?? null; - } - - return $columns; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasDatalistOptions.php b/vendor/filament/forms/src/Components/Concerns/HasDatalistOptions.php deleted file mode 100644 index eeec6e27..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasDatalistOptions.php +++ /dev/null @@ -1,38 +0,0 @@ - | Arrayable | Closure | null - */ - protected array | Arrayable | Closure | null $datalistOptions = null; - - /** - * @param array | Arrayable | Closure | null $options - */ - public function datalist(array | Arrayable | Closure | null $options): static - { - $this->datalistOptions = $options; - - return $this; - } - - /** - * @return array | null - */ - public function getDatalistOptions(): ?array - { - $options = $this->evaluate($this->datalistOptions); - - if ($options instanceof Arrayable) { - $options = $options->toArray(); - } - - return $options; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasDescriptions.php b/vendor/filament/forms/src/Components/Concerns/HasDescriptions.php deleted file mode 100644 index b5a06d69..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasDescriptions.php +++ /dev/null @@ -1,72 +0,0 @@ - | Arrayable | Closure - */ - protected array | Arrayable | Closure $descriptions = []; - - /** - * @param array | Arrayable | Closure $descriptions - */ - public function descriptions(array | Arrayable | Closure $descriptions): static - { - $this->descriptions = $descriptions; - - return $this; - } - - /** - * @param array-key $value - */ - public function hasDescription($value): bool - { - return array_key_exists($value, $this->getDescriptions()); - } - - /** - * @param array-key $value - */ - public function getDescription($value): string | Htmlable | null - { - return $this->getDescriptions()[$value] ?? null; - } - - /** - * @return array - */ - public function getDescriptions(): array - { - $descriptions = $this->evaluate($this->descriptions); - - if ($descriptions instanceof Arrayable) { - $descriptions = $descriptions->toArray(); - } - - if ( - empty($descriptions) && - is_string($this->options) && - enum_exists($this->options) && - is_a($this->options, HasDescription::class, allow_string: true) - ) { - $descriptions = array_reduce($this->options::cases(), function (array $carry, HasDescription & UnitEnum $case): array { - if (filled($description = $case->getDescription())) { - $carry[$case?->value ?? $case->name] = $description; - } - - return $carry; - }, []); - } - - return $descriptions; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasExtraAlpineAttributes.php b/vendor/filament/forms/src/Components/Concerns/HasExtraAlpineAttributes.php deleted file mode 100644 index d14dc3ee..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasExtraAlpineAttributes.php +++ /dev/null @@ -1,14 +0,0 @@ - | Closure> - */ - protected array $extraInputAttributes = []; - - /** - * @param array | Closure $attributes - */ - public function extraInputAttributes(array | Closure $attributes, bool $merge = false): static - { - if ($merge) { - $this->extraInputAttributes[] = $attributes; - } else { - $this->extraInputAttributes = [$attributes]; - } - - return $this; - } - - /** - * @return array - */ - public function getExtraInputAttributes(): array - { - $temporaryAttributeBag = new ComponentAttributeBag(); - - foreach ($this->extraInputAttributes as $extraInputAttributes) { - $temporaryAttributeBag = $temporaryAttributeBag->merge($this->evaluate($extraInputAttributes)); - } - - return $temporaryAttributeBag->getAttributes(); - } - - public function getExtraInputAttributeBag(): ComponentAttributeBag - { - return new ComponentAttributeBag($this->getExtraInputAttributes()); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasExtraItemActions.php b/vendor/filament/forms/src/Components/Concerns/HasExtraItemActions.php deleted file mode 100644 index f53d8af6..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasExtraItemActions.php +++ /dev/null @@ -1,63 +0,0 @@ - - */ - protected array $extraItemActions = []; - - /** - * @var array | null - */ - protected ?array $cachedExtraItemActions = null; - - /** - * @param array $actions - */ - public function extraItemActions(array $actions): static - { - $this->extraItemActions = [ - ...$this->extraItemActions, - ...$actions, - ]; - - return $this; - } - - /** - * @return array - */ - public function getExtraItemActions(): array - { - return $this->cachedExtraItemActions ?? $this->cacheExtraItemActions(); - } - - /** - * @return array - */ - public function cacheExtraItemActions(): array - { - $this->cachedExtraItemActions = []; - - foreach ($this->extraItemActions as $extraItemAction) { - foreach (Arr::wrap($this->evaluate($extraItemAction)) as $action) { - $this->cachedExtraItemActions[$action->getName()] = $this->prepareAction( - $action - ->defaultColor('gray') - ->defaultSize(ActionSize::Small) - ->defaultView(Action::ICON_BUTTON_VIEW), - ); - } - } - - return $this->cachedExtraItemActions; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasFieldWrapper.php b/vendor/filament/forms/src/Components/Concerns/HasFieldWrapper.php deleted file mode 100644 index fac003a4..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasFieldWrapper.php +++ /dev/null @@ -1,29 +0,0 @@ -fieldWrapperView = $view; - - return $this; - } - - public function getFieldWrapperView(): string - { - return $this->getCustomFieldWrapperView() ?? - $this->getContainer()->getCustomFieldWrapperView() ?? - 'filament-forms::field-wrapper'; - } - - public function getCustomFieldWrapperView(): ?string - { - return $this->evaluate($this->fieldWrapperView); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasFileAttachments.php b/vendor/filament/forms/src/Components/Concerns/HasFileAttachments.php deleted file mode 100644 index 2464256f..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasFileAttachments.php +++ /dev/null @@ -1,133 +0,0 @@ -fileAttachmentsDirectory = $directory; - - return $this; - } - - public function fileAttachmentsDisk(string | Closure | null $name): static - { - $this->fileAttachmentsDiskName = $name; - - return $this; - } - - public function saveUploadedFileAttachment(TemporaryUploadedFile $attachment): ?string - { - if ($callback = $this->saveUploadedFileAttachmentsUsing) { - $file = $this->evaluate($callback, [ - 'file' => $attachment, - ]); - } else { - $file = $this->handleFileAttachmentUpload($attachment); - } - - if ($callback = $this->getUploadedAttachmentUrlUsing) { - return $this->evaluate($callback, [ - 'file' => $file, - ]); - } - - return $this->handleUploadedAttachmentUrlRetrieval($file); - } - - public function fileAttachmentsVisibility(string | Closure $visibility): static - { - $this->fileAttachmentsVisibility = $visibility; - - return $this; - } - - public function getUploadedAttachmentUrlUsing(?Closure $callback): static - { - $this->getUploadedAttachmentUrlUsing = $callback; - - return $this; - } - - public function saveUploadedFileAttachmentsUsing(?Closure $callback): static - { - $this->saveUploadedFileAttachmentsUsing = $callback; - - return $this; - } - - public function getFileAttachmentsDirectory(): ?string - { - return $this->evaluate($this->fileAttachmentsDirectory); - } - - public function getFileAttachmentsDisk(): Filesystem - { - return Storage::disk($this->getFileAttachmentsDiskName()); - } - - public function getFileAttachmentsDiskName(): string - { - return $this->evaluate($this->fileAttachmentsDiskName) ?? config('filament.default_filesystem_disk'); - } - - public function getFileAttachmentsVisibility(): string - { - return $this->evaluate($this->fileAttachmentsVisibility); - } - - protected function handleFileAttachmentUpload(SplFileInfo $file): mixed - { - $storeMethod = $this->getFileAttachmentsVisibility() === 'public' ? 'storePublicly' : 'store'; - - return $file->{$storeMethod}($this->getFileAttachmentsDirectory(), $this->getFileAttachmentsDiskName()); - } - - protected function handleUploadedAttachmentUrlRetrieval(mixed $file): ?string - { - /** @var FilesystemAdapter $storage */ - $storage = $this->getFileAttachmentsDisk(); - - try { - if (! $storage->exists($file)) { - return null; - } - } catch (UnableToCheckFileExistence $exception) { - return null; - } - - if ($storage->getVisibility($file) === 'private') { - try { - return $storage->temporaryUrl( - $file, - now()->addMinutes(5), - ); - } catch (Throwable $exception) { - // This driver does not support creating temporary URLs. - } - } - - return $storage->url($file); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasGridDirection.php b/vendor/filament/forms/src/Components/Concerns/HasGridDirection.php deleted file mode 100644 index 4f0bb9b4..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasGridDirection.php +++ /dev/null @@ -1,22 +0,0 @@ -gridDirection = $gridDirection; - - return $this; - } - - public function getGridDirection(): ?string - { - return $this->evaluate($this->gridDirection); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasHeaderActions.php b/vendor/filament/forms/src/Components/Concerns/HasHeaderActions.php deleted file mode 100644 index 34aa0b27..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasHeaderActions.php +++ /dev/null @@ -1,57 +0,0 @@ - | null - */ - protected ?array $cachedHeaderActions = null; - - /** - * @var array - */ - protected array $headerActions = []; - - /** - * @param array $actions - */ - public function headerActions(array $actions): static - { - $this->headerActions = [ - ...$this->headerActions, - ...$actions, - ]; - - return $this; - } - - /** - * @return array - */ - public function getHeaderActions(): array - { - return $this->cachedHeaderActions ?? $this->cacheHeaderActions(); - } - - /** - * @return array - */ - public function cacheHeaderActions(): array - { - $this->cachedHeaderActions = []; - - foreach ($this->headerActions as $headerAction) { - foreach (Arr::wrap($this->evaluate($headerAction)) as $action) { - $this->cachedHeaderActions[$action->getName()] = $this->prepareAction($action); - } - } - - return $this->cachedHeaderActions; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasHelperText.php b/vendor/filament/forms/src/Components/Concerns/HasHelperText.php deleted file mode 100644 index eda4d2f3..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasHelperText.php +++ /dev/null @@ -1,23 +0,0 @@ -helperText = $text; - - return $this; - } - - public function getHelperText(): string | Htmlable | null - { - return $this->evaluate($this->helperText); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasHint.php b/vendor/filament/forms/src/Components/Concerns/HasHint.php deleted file mode 100644 index 94174763..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasHint.php +++ /dev/null @@ -1,136 +0,0 @@ - | null - */ - protected ?array $cachedHintActions = null; - - /** - * @var array - */ - protected array $hintActions = []; - - /** - * @var string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null - */ - protected string | array | Closure | null $hintColor = null; - - protected string | Closure | null $hintIcon = null; - - protected string | Closure | null $hintIconTooltip = null; - - public function hint(string | Htmlable | Closure | null $hint): static - { - $this->hint = $hint; - - return $this; - } - - /** - * @param string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null $color - */ - public function hintColor(string | array | Closure | null $color): static - { - $this->hintColor = $color; - - return $this; - } - - public function hintIcon(string | Closure | null $icon, string | Closure | null $tooltip = null): static - { - $this->hintIcon = $icon; - $this->hintIconTooltip($tooltip); - - return $this; - } - - public function hintIconTooltip(string | Closure | null $tooltip): static - { - $this->hintIconTooltip = $tooltip; - - return $this; - } - - public function hintAction(Action | Closure $action): static - { - $this->hintActions([$action]); - - return $this; - } - - /** - * @param array $actions - */ - public function hintActions(array $actions): static - { - $this->hintActions = [ - ...$this->hintActions, - ...$actions, - ]; - - return $this; - } - - public function getHint(): string | Htmlable | null - { - return $this->evaluate($this->hint); - } - - /** - * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | null - */ - public function getHintColor(): string | array | null - { - return $this->evaluate($this->hintColor); - } - - public function getHintIcon(): ?string - { - return $this->evaluate($this->hintIcon); - } - - public function getHintIconTooltip(): ?string - { - return $this->evaluate($this->hintIconTooltip); - } - - /** - * @return array - */ - public function getHintActions(): array - { - return $this->cachedHintActions ?? $this->cacheHintActions(); - } - - /** - * @return array - */ - public function cacheHintActions(): array - { - $this->cachedHintActions = []; - - foreach ($this->hintActions as $hintAction) { - foreach (Arr::wrap($this->evaluate($hintAction)) as $action) { - $this->cachedHintActions[$action->getName()] = $this->prepareAction( - $action - ->defaultSize(ActionSize::Small) - ->defaultView(Action::LINK_VIEW), - ); - } - } - - return $this->cachedHintActions; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasIcons.php b/vendor/filament/forms/src/Components/Concerns/HasIcons.php deleted file mode 100644 index 89688967..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasIcons.php +++ /dev/null @@ -1,58 +0,0 @@ - | Arrayable | Closure | null - */ - protected array | Arrayable | Closure | null $icons = null; - - /** - * @param array | Arrayable | Closure | null $icons - */ - public function icons(array | Arrayable | Closure | null $icons): static - { - $this->icons = $icons; - - return $this; - } - - public function getIcon(mixed $value): string | Htmlable | null - { - return $this->getIcons()[$value] ?? null; - } - - /** - * @return array - */ - public function getIcons(): array - { - $icons = $this->evaluate($this->icons); - - if ($icons instanceof Arrayable) { - $icons = $icons->toArray(); - } - - if ( - is_string($this->options) && - enum_exists($enum = $this->options) && - is_a($enum, IconInterface::class, allow_string: true) - ) { - return array_reduce($enum::cases(), function (array $carry, IconInterface & UnitEnum $case): array { - $carry[$case?->value ?? $case->name] = $case->getIcon(); - - return $carry; - }, []); - } - - return $icons ?? []; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasId.php b/vendor/filament/forms/src/Components/Concerns/HasId.php deleted file mode 100644 index 6524cf0a..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasId.php +++ /dev/null @@ -1,22 +0,0 @@ -id = $id; - - return $this; - } - - public function getId(): ?string - { - return $this->evaluate($this->id); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasInlineLabel.php b/vendor/filament/forms/src/Components/Concerns/HasInlineLabel.php deleted file mode 100644 index ab3bb8f6..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasInlineLabel.php +++ /dev/null @@ -1,22 +0,0 @@ -hasInlineLabel = $condition; - - return $this; - } - - public function hasInlineLabel(): ?bool - { - return $this->evaluate($this->hasInlineLabel) ?? $this->getContainer()->hasInlineLabel(); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasInputMode.php b/vendor/filament/forms/src/Components/Concerns/HasInputMode.php deleted file mode 100644 index b510998b..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasInputMode.php +++ /dev/null @@ -1,22 +0,0 @@ -inputMode = $mode; - - return $this; - } - - public function getInputMode(): ?string - { - return $this->evaluate($this->inputMode); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasKey.php b/vendor/filament/forms/src/Components/Concerns/HasKey.php deleted file mode 100644 index e1692bf2..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasKey.php +++ /dev/null @@ -1,22 +0,0 @@ -key = $key; - - return $this; - } - - public function getKey(): ?string - { - return $this->evaluate($this->key); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasLabel.php b/vendor/filament/forms/src/Components/Concerns/HasLabel.php deleted file mode 100644 index e9f2bbc5..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasLabel.php +++ /dev/null @@ -1,60 +0,0 @@ -hiddenLabel($condition); - - return $this; - } - - public function hiddenLabel(bool | Closure $condition = true): static - { - $this->isLabelHidden = $condition; - - return $this; - } - - public function label(string | Htmlable | Closure | null $label): static - { - $this->label = $label; - - return $this; - } - - public function translateLabel(bool $shouldTranslateLabel = true): static - { - $this->shouldTranslateLabel = $shouldTranslateLabel; - - return $this; - } - - public function getLabel(): string | Htmlable | null - { - $label = $this->evaluate($this->label); - - return (is_string($label) && $this->shouldTranslateLabel) ? - __($label) : - $label; - } - - public function isLabelHidden(): bool - { - return (bool) $this->evaluate($this->isLabelHidden); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasLoadingMessage.php b/vendor/filament/forms/src/Components/Concerns/HasLoadingMessage.php deleted file mode 100644 index 8194fead..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasLoadingMessage.php +++ /dev/null @@ -1,22 +0,0 @@ -loadingMessage = $message; - - return $this; - } - - public function getLoadingMessage(): string - { - return $this->evaluate($this->loadingMessage) ?? __('filament-forms::components.select.loading_message'); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasMaxWidth.php b/vendor/filament/forms/src/Components/Concerns/HasMaxWidth.php deleted file mode 100644 index 8154608c..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasMaxWidth.php +++ /dev/null @@ -1,23 +0,0 @@ -maxWidth = $width; - - return $this; - } - - public function getMaxWidth(): MaxWidth | string | null - { - return $this->evaluate($this->maxWidth); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasMeta.php b/vendor/filament/forms/src/Components/Concerns/HasMeta.php deleted file mode 100644 index 5a3e3d3c..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasMeta.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - protected array $meta = []; - - public function meta(string $key, mixed $value): static - { - $this->meta[$key] = $value; - - return $this; - } - - /** - * @param string | array | null $keys - */ - public function getMeta(string | array | null $keys = null): mixed - { - if (is_array($keys)) { - return Arr::only($this->meta, $keys); - } - - if (is_string($keys)) { - return Arr::get($this->meta, $keys); - } - - return $this->meta; - } - - /** - * @param string | array $keys - */ - public function hasMeta(string | array $keys): bool - { - return Arr::has($this->meta, $keys); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasName.php b/vendor/filament/forms/src/Components/Concerns/HasName.php deleted file mode 100644 index 5b730941..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasName.php +++ /dev/null @@ -1,35 +0,0 @@ -name = $name; - - return $this; - } - - public function getName(): string - { - return $this->name; - } - - public function getLabel(): string | Htmlable | null - { - $label = parent::getLabel() ?? (string) str($this->getName()) - ->afterLast('.') - ->kebab() - ->replace(['-', '_'], ' ') - ->ucfirst(); - - return (is_string($label) && $this->shouldTranslateLabel) ? - __($label) : - $label; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasNestedRecursiveValidationRules.php b/vendor/filament/forms/src/Components/Concerns/HasNestedRecursiveValidationRules.php deleted file mode 100644 index a7f29f30..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasNestedRecursiveValidationRules.php +++ /dev/null @@ -1,48 +0,0 @@ - - */ - protected array $nestedRecursiveValidationRules = []; - - /** - * @param string | array $rules - */ - public function nestedRecursiveRules(string | array $rules, bool | Closure $condition = true): static - { - if (is_string($rules)) { - $rules = explode('|', $rules); - } - - $this->nestedRecursiveValidationRules = [ - ...$this->nestedRecursiveValidationRules, - ...array_map(static fn (string | object $rule): array => [$rule, $condition], $rules), - ]; - - return $this; - } - - /** - * @return array - */ - public function getNestedRecursiveValidationRules(): array - { - $rules = []; - - foreach ($this->nestedRecursiveValidationRules as [$rule, $condition]) { - if (is_numeric($rule)) { - $rules[] = $this->evaluate($condition); - } elseif ($this->evaluate($condition)) { - $rules[] = $this->evaluate($rule); - } - } - - return $rules; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasOptions.php b/vendor/filament/forms/src/Components/Concerns/HasOptions.php deleted file mode 100644 index b1a48dff..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasOptions.php +++ /dev/null @@ -1,64 +0,0 @@ -> | Arrayable | string | Closure | null - */ - protected array | Arrayable | string | Closure | null $options = null; - - /** - * @param array> | Arrayable | string | Closure | null $options - */ - public function options(array | Arrayable | string | Closure | null $options): static - { - $this->options = $options; - - return $this; - } - - /** - * @return array> - */ - public function getOptions(): array - { - $options = $this->evaluate($this->options) ?? []; - - if ( - is_string($options) && - enum_exists($enum = $options) - ) { - if (is_a($enum, LabelInterface::class, allow_string: true)) { - return array_reduce($enum::cases(), function (array $carry, LabelInterface & UnitEnum $case): array { - $carry[$case?->value ?? $case->name] = $case->getLabel() ?? $case->name; - - return $carry; - }, []); - } - - return array_reduce($enum::cases(), function (array $carry, UnitEnum $case): array { - $carry[$case?->value ?? $case->name] = $case->name; - - return $carry; - }, []); - } - - if ($options instanceof Arrayable) { - $options = $options->toArray(); - } - - return $options; - } - - public function hasDynamicOptions(): bool - { - return $this->options instanceof Closure; - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasPlaceholder.php b/vendor/filament/forms/src/Components/Concerns/HasPlaceholder.php deleted file mode 100644 index 052c0d52..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasPlaceholder.php +++ /dev/null @@ -1,22 +0,0 @@ -placeholder = $placeholder; - - return $this; - } - - public function getPlaceholder(): ?string - { - return $this->evaluate($this->placeholder); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasState.php b/vendor/filament/forms/src/Components/Concerns/HasState.php deleted file mode 100644 index 83d36e5d..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasState.php +++ /dev/null @@ -1,494 +0,0 @@ - - */ - protected array $afterStateUpdated = []; - - protected ?Closure $beforeStateDehydrated = null; - - protected mixed $defaultState = null; - - protected ?Closure $dehydrateStateUsing = null; - - protected ?Closure $mutateDehydratedStateUsing = null; - - protected ?Closure $mutateStateForValidationUsing = null; - - protected bool $hasDefaultState = false; - - protected bool | Closure $isDehydrated = true; - - protected ?string $statePath = null; - - protected string $cachedAbsoluteStatePath; - - /** - * @var string | array | Closure | null - */ - protected string | array | Closure | null $stripCharacters = null; - - /** - * @var array - */ - protected array $cachedStripCharacters; - - public function afterStateHydrated(?Closure $callback): static - { - $this->afterStateHydrated = $callback; - - return $this; - } - - public function clearAfterStateUpdatedHooks(): static - { - $this->afterStateUpdated = []; - - return $this; - } - - public function afterStateUpdated(?Closure $callback): static - { - $this->afterStateUpdated[] = $callback; - - return $this; - } - - public function beforeStateDehydrated(?Closure $callback): static - { - $this->beforeStateDehydrated = $callback; - - return $this; - } - - public function callAfterStateHydrated(): static - { - if ($callback = $this->afterStateHydrated) { - $this->evaluate($callback); - } - - return $this; - } - - public function callAfterStateUpdated(): static - { - foreach ($this->afterStateUpdated as $callback) { - $runId = spl_object_id($callback) . md5(json_encode($this->getState())); - - if (store($this)->has('executedAfterStateUpdatedCallbacks', iKey: $runId)) { - continue; - } - - $this->callAfterStateUpdatedHook($callback); - - store($this)->push('executedAfterStateUpdatedCallbacks', value: $runId, iKey: $runId); - } - - return $this; - } - - protected function callAfterStateUpdatedHook(Closure $hook): void - { - $this->evaluate($hook, [ - 'old' => $this->getOldState(), - ]); - } - - public function callBeforeStateDehydrated(): static - { - if ($callback = $this->beforeStateDehydrated) { - $this->evaluate($callback); - } - - return $this; - } - - public function default(mixed $state): static - { - $this->defaultState = $state; - $this->hasDefaultState = true; - - return $this; - } - - public function dehydrated(bool | Closure $condition = true): static - { - $this->isDehydrated = $condition; - - return $this; - } - - public function formatStateUsing(?Closure $callback): static - { - $this->afterStateHydrated(fn (Component $component) => $component->state($component->evaluate($callback))); - - return $this; - } - - /** - * @return array - */ - public function getStateToDehydrate(): array - { - if ($callback = $this->dehydrateStateUsing) { - return [$this->getStatePath() => $this->evaluate($callback)]; - } - - return [$this->getStatePath() => $this->getState()]; - } - - /** - * @param array $state - */ - public function dehydrateState(array &$state, bool $isDehydrated = true): void - { - if (! ($isDehydrated && $this->isDehydrated())) { - if ($this->hasStatePath()) { - Arr::forget($state, $this->getStatePath()); - - return; - } - - // If the component is not dehydrated, but it has child components, - // we need to dehydrate the child component containers while - // informing them that they are not dehydrated, so that their - // child components get removed from the state. - foreach ($this->getChildComponentContainers() as $container) { - $container->dehydrateState($state, isDehydrated: false); - } - - return; - } - - if ($this->getStatePath(isAbsolute: false)) { - foreach ($this->getStateToDehydrate() as $key => $value) { - Arr::set($state, $key, $value); - } - } - - foreach ($this->getChildComponentContainers() as $container) { - if ($container->isHidden()) { - continue; - } - - $container->dehydrateState($state, $isDehydrated); - } - } - - public function dehydrateStateUsing(?Closure $callback): static - { - $this->dehydrateStateUsing = $callback; - - return $this; - } - - /** - * @param array | null $hydratedDefaultState - */ - public function hydrateState(?array &$hydratedDefaultState, bool $andCallHydrationHooks = true): void - { - $this->hydrateDefaultState($hydratedDefaultState); - - foreach ($this->getChildComponentContainers(withHidden: true) as $container) { - $container->hydrateState($hydratedDefaultState, $andCallHydrationHooks); - } - - if ($andCallHydrationHooks) { - $this->callAfterStateHydrated(); - } - } - - public function fill(): void - { - $defaults = []; - - $this->hydrateDefaultState($defaults); - } - - /** - * @param array | null $hydratedDefaultState - */ - public function hydrateDefaultState(?array &$hydratedDefaultState): void - { - if ($hydratedDefaultState === null) { - $this->loadStateFromRelationships(); - - $state = $this->getState(); - - // Hydrate all arrayable state objects as arrays by converting - // them to collections, then using `toArray()`. - if (is_array($state) || $state instanceof Arrayable) { - $this->state(collect($state)->toArray()); - } - - return; - } - - $statePath = $this->getStatePath(); - - if (Arr::has($hydratedDefaultState, $statePath)) { - return; - } - - if (! $this->hasDefaultState()) { - $this->state(null); - - return; - } - - $defaultState = $this->getDefaultState(); - - $this->state($defaultState); - - Arr::set($hydratedDefaultState, $statePath, $defaultState); - } - - public function fillStateWithNull(): void - { - if (! Arr::has((array) $this->getLivewire(), $this->getStatePath())) { - $this->state(null); - } - - foreach ($this->getChildComponentContainers(withHidden: true) as $container) { - $container->fillStateWithNull(); - } - } - - public function mutateDehydratedState(mixed $state): mixed - { - $state = $this->stripCharactersFromState($state); - - if (! $this->mutateDehydratedStateUsing) { - return $state; - } - - return $this->evaluate( - $this->mutateDehydratedStateUsing, - ['state' => $state], - ); - } - - public function mutateStateForValidation(mixed $state): mixed - { - $state = $this->stripCharactersFromState($state); - - if (! $this->mutateStateForValidationUsing) { - return $state; - } - - return $this->evaluate( - $this->mutateStateForValidationUsing, - ['state' => $state], - ); - } - - protected function stripCharactersFromState(mixed $state): mixed - { - if (! is_string($state)) { - return $state; - } - - $stripCharacters = $this->getStripCharacters(); - - if (empty($stripCharacters)) { - return $state; - } - - return str_replace($stripCharacters, '', $state); - } - - public function mutatesDehydratedState(): bool - { - return ($this->mutateDehydratedStateUsing instanceof Closure) || $this->hasStripCharacters(); - } - - public function mutatesStateForValidation(): bool - { - return ($this->mutateStateForValidationUsing instanceof Closure) || $this->hasStripCharacters(); - } - - public function hasStripCharacters(): bool - { - return filled($this->getStripCharacters()); - } - - public function mutateDehydratedStateUsing(?Closure $callback): static - { - $this->mutateDehydratedStateUsing = $callback; - - return $this; - } - - public function mutateStateForValidationUsing(?Closure $callback): static - { - $this->mutateStateForValidationUsing = $callback; - - return $this; - } - - public function state(mixed $state): static - { - $livewire = $this->getLivewire(); - - data_set($livewire, $this->getStatePath(), $this->evaluate($state)); - - return $this; - } - - public function statePath(?string $path): static - { - $this->statePath = $path; - - return $this; - } - - public function getDefaultState(): mixed - { - return $this->evaluate($this->defaultState); - } - - public function getState(): mixed - { - $state = data_get($this->getLivewire(), $this->getStatePath()); - - if (is_array($state)) { - return $state; - } - - if (blank($state)) { - return null; - } - - return $state; - } - - public function getOldState(): mixed - { - if (! Livewire::isLivewireRequest()) { - return null; - } - - $state = $this->getLivewire()->getOldFormState($this->getStatePath()); - - if (blank($state)) { - return null; - } - - return $state; - } - - public function getStatePath(bool $isAbsolute = true): string - { - if (! $isAbsolute) { - return $this->statePath ?? ''; - } - - if (isset($this->cachedAbsoluteStatePath)) { - return $this->cachedAbsoluteStatePath; - } - - $pathComponents = []; - - if ($containerStatePath = $this->getContainer()->getStatePath()) { - $pathComponents[] = $containerStatePath; - } - - if ($this->hasStatePath()) { - $pathComponents[] = $this->statePath; - } - - return $this->cachedAbsoluteStatePath = implode('.', $pathComponents); - } - - public function hasStatePath(): bool - { - return filled($this->statePath); - } - - protected function hasDefaultState(): bool - { - return $this->hasDefaultState; - } - - public function isDehydrated(): bool - { - return (bool) $this->evaluate($this->isDehydrated); - } - - public function getGetCallback(): Get - { - return new Get($this); - } - - public function getSetCallback(): Set - { - return new Set($this); - } - - public function generateRelativeStatePath(string | Component $path, bool $isAbsolute = false): string - { - if ($path instanceof Component) { - return $path->getStatePath(); - } - - if ($isAbsolute) { - return $path; - } - - $containerPath = $this->getContainer()->getStatePath(); - - while (str($path)->startsWith('../')) { - $containerPath = Str::contains($containerPath, '.') ? - (string) str($containerPath)->beforeLast('.') : - null; - - $path = (string) str($path)->after('../'); - } - - if (blank($containerPath)) { - return $path; - } - - return "{$containerPath}.{$path}"; - } - - protected function flushCachedAbsoluteStatePath(): void - { - unset($this->cachedAbsoluteStatePath); - } - - /** - * @param string | array | Closure | null $characters - */ - public function stripCharacters(string | array | Closure | null $characters): static - { - $this->stripCharacters = $characters; - - return $this; - } - - /** - * @return array - */ - public function getStripCharacters(): array - { - return $this->cachedStripCharacters ??= Arr::wrap($this->evaluate($this->stripCharacters)); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasStep.php b/vendor/filament/forms/src/Components/Concerns/HasStep.php deleted file mode 100644 index 551f104c..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasStep.php +++ /dev/null @@ -1,22 +0,0 @@ -step = $interval; - - return $this; - } - - public function getStep(): int | float | string | null - { - return $this->evaluate($this->step); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasToggleColors.php b/vendor/filament/forms/src/Components/Concerns/HasToggleColors.php deleted file mode 100644 index 57cb6222..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasToggleColors.php +++ /dev/null @@ -1,54 +0,0 @@ -offColor = $color; - - return $this; - } - - /** - * @param string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null $color - */ - public function onColor(string | array | Closure | null $color): static - { - $this->onColor = $color; - - return $this; - } - - /** - * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | null - */ - public function getOffColor(): string | array | null - { - return $this->evaluate($this->offColor); - } - - /** - * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | null - */ - public function getOnColor(): string | array | null - { - return $this->evaluate($this->onColor); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasToggleIcons.php b/vendor/filament/forms/src/Components/Concerns/HasToggleIcons.php deleted file mode 100644 index 65dae0e9..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasToggleIcons.php +++ /dev/null @@ -1,46 +0,0 @@ -offIcon = $icon; - - return $this; - } - - public function onIcon(string | Closure | null $icon): static - { - $this->onIcon = $icon; - - return $this; - } - - public function getOffIcon(): ?string - { - return $this->evaluate($this->offIcon); - } - - public function getOnIcon(): ?string - { - return $this->evaluate($this->onIcon); - } - - public function hasOffIcon(): bool - { - return (bool) $this->getOffIcon(); - } - - public function hasOnIcon(): bool - { - return (bool) $this->getOnIcon(); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/HasUploadingMessage.php b/vendor/filament/forms/src/Components/Concerns/HasUploadingMessage.php deleted file mode 100644 index c7c19941..00000000 --- a/vendor/filament/forms/src/Components/Concerns/HasUploadingMessage.php +++ /dev/null @@ -1,22 +0,0 @@ -uploadingMessage = $message; - - return $this; - } - - public function getUploadingMessage(): string - { - return $this->evaluate($this->uploadingMessage) ?? __('filament::components/button.messages.uploading_file'); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/InteractsWithToolbarButtons.php b/vendor/filament/forms/src/Components/Concerns/InteractsWithToolbarButtons.php deleted file mode 100644 index 3d38ce62..00000000 --- a/vendor/filament/forms/src/Components/Concerns/InteractsWithToolbarButtons.php +++ /dev/null @@ -1,75 +0,0 @@ -toolbarButtons = []; - } - - return $this; - } - - /** - * @param array $buttonsToDisable - */ - public function disableToolbarButtons(array $buttonsToDisable = []): static - { - $this->toolbarButtons = array_values(array_filter( - $this->getToolbarButtons(), - static fn ($button) => ! in_array($button, $buttonsToDisable), - )); - - return $this; - } - - /** - * @param array $buttonsToEnable - */ - public function enableToolbarButtons(array $buttonsToEnable = []): static - { - $this->toolbarButtons = [ - ...$this->getToolbarButtons(), - ...$buttonsToEnable, - ]; - - return $this; - } - - /** - * @param array | Closure $buttons - */ - public function toolbarButtons(array | Closure $buttons = []): static - { - $this->toolbarButtons = $buttons; - - return $this; - } - - /** - * @return array - */ - public function getToolbarButtons(): array - { - return $this->evaluate($this->toolbarButtons); - } - - /** - * @param string | array $button - */ - public function hasToolbarButton(string | array $button): bool - { - if (is_array($button)) { - $buttons = $button; - - return (bool) count(array_intersect($buttons, $this->getToolbarButtons())); - } - - return in_array($button, $this->getToolbarButtons()); - } -} diff --git a/vendor/filament/forms/src/Components/Concerns/ListensToEvents.php b/vendor/filament/forms/src/Components/Concerns/ListensToEvents.php deleted file mode 100644 index 1357f8a3..00000000 --- a/vendor/filament/forms/src/Components/Concerns/ListensToEvents.php +++ /dev/null @@ -1,51 +0,0 @@ -> - */ - protected array $listeners = []; - - public function dispatchEvent(string $event, mixed ...$parameters): static - { - foreach ($this->getListeners($event) as $callback) { - $callback($this, ...$parameters); - } - - return $this; - } - - /** - * @param array> $listeners - */ - public function registerListeners(array $listeners): static - { - foreach ($listeners as $event => $callbacks) { - $this->listeners[$event] = [ - ...$this->getListeners($event), - ...$callbacks, - ]; - } - - return $this; - } - - /** - * @return array | Closure> - */ - public function getListeners(?string $event = null): array - { - $listeners = $this->listeners; - - if ($event) { - return $listeners[$event] ?? []; - } - - return $listeners; - } -} diff --git a/vendor/filament/forms/src/Components/Contracts/CanBeLengthConstrained.php b/vendor/filament/forms/src/Components/Contracts/CanBeLengthConstrained.php deleted file mode 100644 index ea61e22f..00000000 --- a/vendor/filament/forms/src/Components/Contracts/CanBeLengthConstrained.php +++ /dev/null @@ -1,12 +0,0 @@ - $data - * @return array - */ - public function mutateRelationshipDataBeforeFill(array $data): array; - - /** - * @param array $data - * @return array - */ - public function mutateRelationshipDataBeforeCreate(array $data): array; - - /** - * @param array $data - * @return array - */ - public function mutateRelationshipDataBeforeSave(array $data): array; -} diff --git a/vendor/filament/forms/src/Components/Contracts/CanHaveNumericState.php b/vendor/filament/forms/src/Components/Contracts/CanHaveNumericState.php deleted file mode 100644 index 9e22165c..00000000 --- a/vendor/filament/forms/src/Components/Contracts/CanHaveNumericState.php +++ /dev/null @@ -1,8 +0,0 @@ - - */ - public function getPrefixActions(): array; - - /** - * @return array - */ - public function getSuffixActions(): array; -} diff --git a/vendor/filament/forms/src/Components/Contracts/HasExtraItemActions.php b/vendor/filament/forms/src/Components/Contracts/HasExtraItemActions.php deleted file mode 100644 index c73feed5..00000000 --- a/vendor/filament/forms/src/Components/Contracts/HasExtraItemActions.php +++ /dev/null @@ -1,13 +0,0 @@ - - */ - public function getExtraItemActions(): array; -} diff --git a/vendor/filament/forms/src/Components/Contracts/HasFileAttachments.php b/vendor/filament/forms/src/Components/Contracts/HasFileAttachments.php deleted file mode 100644 index 71261f9e..00000000 --- a/vendor/filament/forms/src/Components/Contracts/HasFileAttachments.php +++ /dev/null @@ -1,10 +0,0 @@ - - */ - public function getHeaderActions(): array; -} diff --git a/vendor/filament/forms/src/Components/Contracts/HasHintActions.php b/vendor/filament/forms/src/Components/Contracts/HasHintActions.php deleted file mode 100644 index fc194699..00000000 --- a/vendor/filament/forms/src/Components/Contracts/HasHintActions.php +++ /dev/null @@ -1,13 +0,0 @@ - - */ - public function getHintActions(): array; -} diff --git a/vendor/filament/forms/src/Components/Contracts/HasNestedRecursiveValidationRules.php b/vendor/filament/forms/src/Components/Contracts/HasNestedRecursiveValidationRules.php deleted file mode 100644 index f34a94b0..00000000 --- a/vendor/filament/forms/src/Components/Contracts/HasNestedRecursiveValidationRules.php +++ /dev/null @@ -1,11 +0,0 @@ - - */ - public function getNestedRecursiveValidationRules(): array; -} diff --git a/vendor/filament/forms/src/Components/Contracts/HasValidationRules.php b/vendor/filament/forms/src/Components/Contracts/HasValidationRules.php deleted file mode 100644 index 6312b521..00000000 --- a/vendor/filament/forms/src/Components/Contracts/HasValidationRules.php +++ /dev/null @@ -1,21 +0,0 @@ - $attributes - */ - public function dehydrateValidationAttributes(array &$attributes): void; - - /** - * @param array> $messages - */ - public function dehydrateValidationMessages(array &$messages): void; - - /** - * @param array> $rules - */ - public function dehydrateValidationRules(array &$rules): void; -} diff --git a/vendor/filament/forms/src/Components/DatePicker.php b/vendor/filament/forms/src/Components/DatePicker.php deleted file mode 100644 index 6850b123..00000000 --- a/vendor/filament/forms/src/Components/DatePicker.php +++ /dev/null @@ -1,11 +0,0 @@ - | Closure> - */ - protected array $extraTriggerAttributes = []; - - protected ?int $firstDayOfWeek = null; - - protected string | Closure | null $format = null; - - protected bool | Closure $isNative = true; - - protected bool | Closure $hasDate = true; - - protected bool | Closure $hasSeconds = true; - - protected bool | Closure $hasTime = true; - - protected bool | Closure $shouldCloseOnDateSelection = false; - - protected CarbonInterface | string | Closure | null $maxDate = null; - - protected CarbonInterface | string | Closure | null $minDate = null; - - protected string | Closure | null $timezone = null; - - /** - * @var array | Closure - */ - protected array | Closure $disabledDates = []; - - public static string $defaultDateDisplayFormat = 'M j, Y'; - - public static string $defaultDateTimeDisplayFormat = 'M j, Y H:i'; - - public static string $defaultDateTimeWithSecondsDisplayFormat = 'M j, Y H:i:s'; - - public static string $defaultTimeDisplayFormat = 'H:i'; - - public static string $defaultTimeWithSecondsDisplayFormat = 'H:i:s'; - - protected int | Closure | null $hoursStep = null; - - protected int | Closure | null $minutesStep = null; - - protected int | Closure | null $secondsStep = null; - - protected function setUp(): void - { - parent::setUp(); - - $this->afterStateHydrated(static function (DateTimePicker $component, $state): void { - if (blank($state)) { - return; - } - - if (! $state instanceof CarbonInterface) { - try { - $state = Carbon::createFromFormat($component->getFormat(), $state, config('app.timezone')); - } catch (InvalidFormatException $exception) { - try { - $state = Carbon::parse($state, config('app.timezone')); - } catch (InvalidFormatException $exception) { - $component->state(null); - - return; - } - } - } - - $state = $state->setTimezone($component->getTimezone()); - - if (! $component->isNative()) { - $component->state((string) $state); - - return; - } - - if (! $component->hasTime()) { - $component->state($state->toDateString()); - - return; - } - - $precision = $component->hasSeconds() ? 'second' : 'minute'; - - if (! $component->hasDate()) { - $component->state($state->toTimeString($precision)); - - return; - } - - $component->state($state->toDateTimeString($precision)); - }); - - $this->dehydrateStateUsing(static function (DateTimePicker $component, $state) { - if (blank($state)) { - return null; - } - - if (! $state instanceof CarbonInterface) { - $state = Carbon::parse($state); - } - - $state->shiftTimezone($component->getTimezone()); - $state->setTimezone(config('app.timezone')); - - return $state->format($component->getFormat()); - }); - - $this->rule( - 'date', - static fn (DateTimePicker $component): bool => $component->hasDate(), - ); - } - - public function displayFormat(string | Closure | null $format): static - { - $this->displayFormat = $format; - - return $this; - } - - /** - * @param array | Closure $attributes - */ - public function extraTriggerAttributes(array | Closure $attributes, bool $merge = false): static - { - if ($merge) { - $this->extraAttributes[] = $attributes; - } else { - $this->extraAttributes = [$attributes]; - } - - return $this; - } - - public function firstDayOfWeek(?int $day): static - { - if ($day < 0 || $day > 7) { - $day = null; - } - - $this->firstDayOfWeek = $day; - - return $this; - } - - public function format(string | Closure | null $format): static - { - $this->format = $format; - - return $this; - } - - /** - * @deprecated Use `suffixIcon('heroicon-m-calendar')` instead. - */ - public function icon(string | bool | null $icon = null): static - { - if ($icon === false) { - return $this; - } - - return $this->suffixIcon($icon ?? 'heroicon-m-calendar', isInline: true); - } - - public function maxDate(CarbonInterface | string | Closure | null $date): static - { - $this->maxDate = $date; - - $this->rule(static function (DateTimePicker $component) { - return "before_or_equal:{$component->getMaxDate()}"; - }, static fn (DateTimePicker $component): bool => (bool) $component->getMaxDate()); - - return $this; - } - - public function minDate(CarbonInterface | string | Closure | null $date): static - { - $this->minDate = $date; - - $this->rule(static function (DateTimePicker $component) { - return "after_or_equal:{$component->getMinDate()}"; - }, static fn (DateTimePicker $component): bool => (bool) $component->getMinDate()); - - return $this; - } - - /** - * @param array | Closure $dates - */ - public function disabledDates(array | Closure $dates): static - { - $this->disabledDates = $dates; - - return $this; - } - - public function resetFirstDayOfWeek(): static - { - $this->firstDayOfWeek(null); - - return $this; - } - - public function hoursStep(int | Closure | null $hoursStep): static - { - $this->hoursStep = $hoursStep; - - return $this; - } - - public function minutesStep(int | Closure | null $minutesStep): static - { - $this->minutesStep = $minutesStep; - - return $this; - } - - public function secondsStep(int | Closure | null $secondsStep): static - { - $this->secondsStep = $secondsStep; - - return $this; - } - - public function timezone(string | Closure | null $timezone): static - { - $this->timezone = $timezone; - - return $this; - } - - public function weekStartsOnMonday(): static - { - $this->firstDayOfWeek(1); - - return $this; - } - - public function weekStartsOnSunday(): static - { - $this->firstDayOfWeek(7); - - return $this; - } - - public function native(bool | Closure $condition = true): static - { - $this->isNative = $condition; - - return $this; - } - - public function date(bool | Closure $condition = true): static - { - $this->hasDate = $condition; - - return $this; - } - - public function seconds(bool | Closure $condition = true): static - { - $this->hasSeconds = $condition; - - return $this; - } - - public function time(bool | Closure $condition = true): static - { - $this->hasTime = $condition; - - return $this; - } - - /** - * @deprecated Use `date()` instead. - */ - public function withoutDate(bool | Closure $condition = true): static - { - $this->date(fn (DateTimePicker $component): bool => ! $component->evaluate($condition)); - - return $this; - } - - /** - * @deprecated Use `seconds()` instead. - */ - public function withoutSeconds(bool | Closure $condition = true): static - { - $this->seconds(fn (DateTimePicker $component): bool => ! $component->evaluate($condition)); - - return $this; - } - - /** - * @deprecated Use `time()` instead. - */ - public function withoutTime(bool | Closure $condition = true): static - { - $this->time(fn (DateTimePicker $component): bool => ! $component->evaluate($condition)); - - return $this; - } - - public function closeOnDateSelection(bool | Closure $condition = true): static - { - $this->shouldCloseOnDateSelection = $condition; - - return $this; - } - - public function getDisplayFormat(): string - { - $format = $this->evaluate($this->displayFormat); - - if ($format) { - return $format; - } - - if (! $this->hasTime()) { - return static::$defaultDateDisplayFormat; - } - - if (! $this->hasDate()) { - return $this->hasSeconds() ? - static::$defaultTimeWithSecondsDisplayFormat : - static::$defaultTimeDisplayFormat; - } - - return $this->hasSeconds() ? - static::$defaultDateTimeWithSecondsDisplayFormat : - static::$defaultDateTimeDisplayFormat; - } - - /** - * @return array - */ - public function getExtraTriggerAttributes(): array - { - $temporaryAttributeBag = new ComponentAttributeBag(); - - foreach ($this->extraTriggerAttributes as $extraTriggerAttributes) { - $temporaryAttributeBag = $temporaryAttributeBag->merge($this->evaluate($extraTriggerAttributes)); - } - - return $temporaryAttributeBag->getAttributes(); - } - - public function getExtraTriggerAttributeBag(): ComponentAttributeBag - { - return new ComponentAttributeBag($this->getExtraTriggerAttributes()); - } - - public function getFirstDayOfWeek(): int - { - return $this->firstDayOfWeek ?? 1; - } - - public function getFormat(): string - { - $format = $this->evaluate($this->format); - - if ($format) { - return $format; - } - - $format = $this->hasDate() ? 'Y-m-d' : ''; - - if (! $this->hasTime()) { - return $format; - } - - $format = $format ? "{$format} H:i" : 'H:i'; - - if (! $this->hasSeconds()) { - return $format; - } - - return "{$format}:s"; - } - - public function getMaxDate(): ?string - { - return $this->evaluate($this->maxDate); - } - - public function getMinDate(): ?string - { - return $this->evaluate($this->minDate); - } - - /** - * @return array - */ - public function getDisabledDates(): array - { - return $this->evaluate($this->disabledDates); - } - - public function getTimezone(): string - { - return $this->evaluate($this->timezone) ?? config('app.timezone'); - } - - public function hasDate(): bool - { - return (bool) $this->evaluate($this->hasDate); - } - - public function hasSeconds(): bool - { - return (bool) $this->evaluate($this->hasSeconds); - } - - public function hasTime(): bool - { - return (bool) $this->evaluate($this->hasTime); - } - - public function getHoursStep(): int - { - return $this->evaluate($this->hoursStep) ?? 1; - } - - public function getMinutesStep(): int - { - return $this->evaluate($this->minutesStep) ?? 1; - } - - public function getSecondsStep(): int - { - return $this->evaluate($this->secondsStep) ?? 1; - } - - public function shouldCloseOnDateSelection(): bool - { - return (bool) $this->evaluate($this->shouldCloseOnDateSelection); - } - - public function isNative(): bool - { - return (bool) $this->evaluate($this->isNative); - } - - public function getStep(): int | float | string | null - { - $step = $this->evaluate($this->step); - - if (filled($step)) { - return $step; - } - - if (! $this->hasTime()) { - return null; - } - - $secondsStep = $this->getSecondsStep(); - - if ($secondsStep > 1) { - return $secondsStep; - } - - $minutesStep = $this->getMinutesStep(); - - if ($minutesStep > 1) { - return $minutesStep * 60; - } - - $hoursStep = $this->getHoursStep(); - - if ($hoursStep > 1) { - return $hoursStep * 3600; - } - - if (! $this->hasSeconds()) { - return null; - } - - return 1; - } - - public function getType(): string - { - if (! $this->hasDate()) { - return 'time'; - } - - if (! $this->hasTime()) { - return 'date'; - } - - return 'datetime-local'; - } -} diff --git a/vendor/filament/forms/src/Components/Field.php b/vendor/filament/forms/src/Components/Field.php deleted file mode 100644 index 96616547..00000000 --- a/vendor/filament/forms/src/Components/Field.php +++ /dev/null @@ -1,39 +0,0 @@ -name($name); - $this->statePath($name); - } - - public static function make(string $name): static - { - $static = app(static::class, ['name' => $name]); - $static->configure(); - - return $static; - } - - public function getId(): string - { - return parent::getId() ?? $this->getStatePath(); - } - - public function getKey(): string - { - return parent::getKey() ?? $this->getStatePath(); - } -} diff --git a/vendor/filament/forms/src/Components/Fieldset.php b/vendor/filament/forms/src/Components/Fieldset.php deleted file mode 100644 index 65d07284..00000000 --- a/vendor/filament/forms/src/Components/Fieldset.php +++ /dev/null @@ -1,39 +0,0 @@ -label($label); - } - - public static function make(string | Htmlable | Closure | null $label = null): static - { - $static = app(static::class, ['label' => $label]); - $static->configure(); - - return $static; - } - - protected function setUp(): void - { - parent::setUp(); - - $this->columnSpan('full'); - - $this->columns(2); - } -} diff --git a/vendor/filament/forms/src/Components/FileUpload.php b/vendor/filament/forms/src/Components/FileUpload.php deleted file mode 100644 index e1d3d8db..00000000 --- a/vendor/filament/forms/src/Components/FileUpload.php +++ /dev/null @@ -1,562 +0,0 @@ - | Closure - */ - protected array | Closure $imageEditorAspectRatios = []; - - public function appendFiles(bool | Closure $condition = true): static - { - $this->shouldAppendFiles = $condition; - - return $this; - } - - public function avatar(): static - { - $this->isAvatar = true; - - $this->image(); - $this->imageResizeMode('cover'); - $this->imageResizeUpscale(false); - $this->imageCropAspectRatio('1:1'); - $this->imageResizeTargetHeight('500'); - $this->imageResizeTargetWidth('500'); - $this->loadingIndicatorPosition('center bottom'); - $this->panelLayout('compact circle'); - $this->removeUploadedFileButtonPosition(fn (FileUpload $component) => $component->hasImageEditor() ? 'left bottom' : 'center bottom'); - $this->uploadButtonPosition(fn (FileUpload $component) => $component->hasImageEditor() ? 'right bottom' : 'center bottom'); - $this->uploadProgressIndicatorPosition(fn (FileUpload $component) => $component->hasImageEditor() ? 'right bottom' : 'center bottom'); - - return $this; - } - - /** - * @deprecated Use `placeholder()` instead. - */ - public function idleLabel(string | Closure | null $label): static - { - $this->placeholder($label); - - return $this; - } - - public function image(): static - { - $this->acceptedFileTypes([ - 'image/*', - ]); - - return $this; - } - - public function imageCropAspectRatio(string | Closure | null $ratio): static - { - $this->imageCropAspectRatio = $ratio; - - return $this; - } - - public function imagePreviewHeight(string | Closure | null $height): static - { - $this->imagePreviewHeight = $height; - - return $this; - } - - public function imageResizeTargetHeight(string | Closure | null $height): static - { - $this->imageResizeTargetHeight = $height; - - return $this; - } - - public function imageResizeTargetWidth(string | Closure | null $width): static - { - $this->imageResizeTargetWidth = $width; - - return $this; - } - - public function imageResizeMode(string | Closure | null $mode): static - { - $this->imageResizeMode = $mode; - - return $this; - } - - public function imageResizeUpscale(bool | Closure $condition = true): static - { - $this->imageResizeUpscale = $condition; - - return $this; - } - - public function loadingIndicatorPosition(string | Closure | null $position): static - { - $this->loadingIndicatorPosition = $position; - - return $this; - } - - public function orientImagesFromExif(bool | Closure $condition = true): static - { - $this->shouldOrientImagesFromExif = $condition; - - return $this; - } - - /** - * @deprecated Use `orientImagesFromExif()` instead. - */ - public function orientImageFromExif(bool | Closure $condition = true): static - { - $this->orientImagesFromExif($condition); - - return $this; - } - - public function panelAspectRatio(string | Closure | null $ratio): static - { - $this->panelAspectRatio = $ratio; - - return $this; - } - - public function panelLayout(string | Closure | null $layout): static - { - $this->panelLayout = $layout; - - return $this; - } - - public function removeUploadedFileButtonPosition(string | Closure | null $position): static - { - $this->removeUploadedFileButtonPosition = $position; - - return $this; - } - - public function uploadButtonPosition(string | Closure | null $position): static - { - $this->uploadButtonPosition = $position; - - return $this; - } - - public function uploadProgressIndicatorPosition(string | Closure | null $position): static - { - $this->uploadProgressIndicatorPosition = $position; - - return $this; - } - - public function getImageCropAspectRatio(): ?string - { - return $this->evaluate($this->imageCropAspectRatio); - } - - public function getImagePreviewHeight(): ?string - { - return $this->evaluate($this->imagePreviewHeight); - } - - public function getImageResizeTargetHeight(): ?string - { - return $this->evaluate($this->imageResizeTargetHeight); - } - - public function getImageResizeTargetWidth(): ?string - { - return $this->evaluate($this->imageResizeTargetWidth); - } - - public function getImageResizeMode(): ?string - { - return $this->evaluate($this->imageResizeMode); - } - - public function getImageResizeUpscale(): bool - { - return (bool) $this->evaluate($this->imageResizeUpscale); - } - - public function getLoadingIndicatorPosition(): string - { - return $this->evaluate($this->loadingIndicatorPosition); - } - - public function getPanelAspectRatio(): ?string - { - return $this->evaluate($this->panelAspectRatio); - } - - public function getPanelLayout(): ?string - { - return $this->evaluate($this->panelLayout); - } - - public function getRemoveUploadedFileButtonPosition(): string - { - return $this->evaluate($this->removeUploadedFileButtonPosition); - } - - public function getUploadButtonPosition(): string - { - return $this->evaluate($this->uploadButtonPosition); - } - - public function getUploadProgressIndicatorPosition(): string - { - return $this->evaluate($this->uploadProgressIndicatorPosition); - } - - public function isAvatar(): bool - { - return (bool) $this->evaluate($this->isAvatar); - } - - public function shouldAppendFiles(): bool - { - return (bool) $this->evaluate($this->shouldAppendFiles); - } - - public function shouldOrientImagesFromExif(): bool - { - return (bool) $this->evaluate($this->shouldOrientImagesFromExif); - } - - public function imageEditor(bool | Closure $condition = true): static - { - $this->hasImageEditor = $condition; - - return $this; - } - - public function circleCropper(bool | Closure $condition = true): static - { - $this->hasCircleCropper = $condition; - - return $this; - } - - public function editableSvgs(bool | Closure $condition = true): static - { - $this->canEditSvgs = $condition; - - return $this; - } - - public function confirmSvgEditing(bool | Closure $condition = true): static - { - $this->isSvgEditingConfirmed = $condition; - - return $this; - } - - public function imageEditorViewportWidth(int | Closure | null $width): static - { - $this->imageEditorViewportWidth = $width; - - return $this; - } - - public function imageEditorViewportHeight(int | Closure | null $height): static - { - $this->imageEditorViewportHeight = $height; - - return $this; - } - - public function imageEditorMode(int $mode): static - { - if (! in_array($mode, [1, 2, 3])) { - throw new Exception("The file upload editor mode must be either 1, 2 or 3. [{$mode}] given, which is unsupported. See https://github.com/fengyuanchen/cropperjs#viewmode for more information on the available modes. Mode 0 is not supported, as it does not allow configuration via manual inputs."); - } - - $this->imageEditorMode = $mode; - - return $this; - } - - public function imageEditorEmptyFillColor(string | Closure | null $color): static - { - $this->imageEditorEmptyFillColor = $color; - - return $this; - } - - /** - * @param array | Closure $ratios - */ - public function imageEditorAspectRatios(array | Closure $ratios): static - { - $this->imageEditorAspectRatios = $ratios; - - return $this; - } - - public function getImageEditorViewportHeight(): ?int - { - if (($targetHeight = (int) $this->getImageResizeTargetHeight()) > 1) { - return (int) round($targetHeight * $this->getParentTargetSizes($targetHeight), precision: 0); - } - - if (filled($ratio = $this->getImageCropAspectRatio())) { - [$numerator, $denominator] = explode(':', $ratio); - - return (int) $denominator; - } - - return $this->evaluate($this->imageEditorViewportHeight); - } - - public function getImageEditorViewportWidth(): ?int - { - if (($targetWidth = (int) $this->getImageResizeTargetWidth()) > 1) { - return (int) round($targetWidth * $this->getParentTargetSizes($targetWidth), precision: 0); - } - - if (filled($ratio = $this->getImageCropAspectRatio())) { - [$numerator, $denominator] = explode(':', $ratio); - - return (int) $numerator; - } - - return $this->evaluate($this->imageEditorViewportWidth); - } - - protected function getParentTargetSizes(int $withOrHeight): float - { - return $withOrHeight > 1 ? 360 / (int) $this->getImageResizeTargetWidth() : 1; - } - - public function getImageEditorMode(): int - { - return $this->imageEditorMode; - } - - public function getImageEditorEmptyFillColor(): ?string - { - return $this->evaluate($this->imageEditorEmptyFillColor); - } - - public function hasImageEditor(): bool - { - return (bool) $this->evaluate($this->hasImageEditor); - } - - public function hasCircleCropper(): bool - { - return (bool) $this->evaluate($this->hasCircleCropper); - } - - public function canEditSvgs(): bool - { - return (bool) $this->evaluate($this->canEditSvgs); - } - - public function isSvgEditingConfirmed(): bool - { - return (bool) $this->evaluate($this->isSvgEditingConfirmed); - } - - /** - * @return array - */ - public function getImageEditorAspectRatiosForJs(): array - { - return collect($this->evaluate($this->imageEditorAspectRatios) ?? []) - ->when( - filled($imageCropAspectRatio = $this->getImageCropAspectRatio()), - fn (Collection $ratios): Collection => $ratios->push($imageCropAspectRatio), - ) - ->unique() - ->mapWithKeys(fn (?string $ratio): array => [ - $ratio ?? __('filament-forms::components.file_upload.editor.aspect_ratios.no_fixed.label') => $this->normalizeImageCroppingRatioForJs($ratio), - ]) - ->filter(fn (float | string | false $ratio): bool => $ratio !== false) - ->when( - fn (Collection $ratios): bool => $ratios->count() < 2, - fn (Collection $ratios): Collection => $ratios->take(0), - ) - ->all(); - } - - protected function normalizeImageCroppingRatioForJs(?string $ratio): float | string | false - { - if ($ratio === null) { - return 'NaN'; - } - - $ratioParts = explode(':', $ratio); - - if (count($ratioParts) !== 2) { - return false; - } - - [$numerator, $denominator] = $ratioParts; - - if (! $denominator) { - return false; - } - - if (! is_numeric($numerator)) { - return false; - } - - if (! is_numeric($denominator)) { - return false; - } - - return $numerator / $denominator; - } - - /** - * @return array>> - */ - public function getImageEditorActions(string $iconSizeClasses): array - { - return [ - 'zoom' => [ - [ - 'label' => __('filament-forms::components.file_upload.editor.actions.drag_move.label'), - 'iconHtml' => ($icon = FilamentIcon::resolve('forms::components.file-upload.editor.actions.drag-move')) ? svg($icon, $iconSizeClasses)->toHtml() : new HtmlString(''), - 'alpineClickHandler' => "editor.setDragMode('move')", - ], - [ - 'label' => __('filament-forms::components.file_upload.editor.actions.drag_crop.label'), - 'iconHtml' => ($icon = FilamentIcon::resolve('forms::components.file-upload.editor.actions.drag-crop')) ? svg($icon, $iconSizeClasses)->toHtml() : new HtmlString(''), - 'alpineClickHandler' => "editor.setDragMode('crop')", - ], - [ - 'label' => __('filament-forms::components.file_upload.editor.actions.zoom_in.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.zoom-in') ?? 'heroicon-m-magnifying-glass-plus', $iconSizeClasses)->toHtml(), - 'alpineClickHandler' => 'editor.zoom(0.1)', - ], - [ - 'label' => __('filament-forms::components.file_upload.editor.actions.zoom_out.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.zoom-out') ?? 'heroicon-m-magnifying-glass-minus', $iconSizeClasses)->toHtml(), - 'alpineClickHandler' => 'editor.zoom(-0.1)', - ], - [ - 'label' => __('filament-forms::components.file_upload.editor.actions.zoom_100.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.zoom-100') ?? 'heroicon-m-arrows-pointing-out', $iconSizeClasses)->toHtml(), - 'alpineClickHandler' => 'editor.zoomTo(1)', - ], - ], - 'move' => [ - [ - 'label' => __('filament-forms::components.file_upload.editor.actions.move_left.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.move-left') ?? 'heroicon-m-arrow-left-circle', $iconSizeClasses)->toHtml(), - 'alpineClickHandler' => 'editor.move(-10, 0)', - ], - [ - 'label' => __('filament-forms::components.file_upload.editor.actions.move_right.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.move-right') ?? 'heroicon-m-arrow-right-circle', $iconSizeClasses)->toHtml(), - 'alpineClickHandler' => 'editor.move(10, 0)', - ], - [ - 'label' => __('filament-forms::components.file_upload.editor.actions.move_up.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.move-up') ?? 'heroicon-m-arrow-up-circle', $iconSizeClasses)->toHtml(), - 'alpineClickHandler' => 'editor.move(0, -10)', - ], - [ - 'label' => __('filament-forms::components.file_upload.editor.actions.move_down.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.move-down') ?? 'heroicon-m-arrow-down-circle', $iconSizeClasses)->toHtml(), - 'alpineClickHandler' => 'editor.move(0, 10)', - ], - ], - 'transform' => [ - [ - 'label' => __('filament-forms::components.file_upload.editor.actions.rotate_left.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.rotate-left') ?? 'heroicon-m-arrow-uturn-left', $iconSizeClasses)->toHtml(), - 'alpineClickHandler' => 'editor.rotate(-90)', - ], - [ - 'label' => __('filament-forms::components.file_upload.editor.actions.rotate_right.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.rotate-right') ?? 'heroicon-m-arrow-uturn-right', $iconSizeClasses)->toHtml(), - 'alpineClickHandler' => 'editor.rotate(90)', - ], - [ - 'label' => __('filament-forms::components.file_upload.editor.actions.flip_horizontal.label'), - 'iconHtml' => ($icon = FilamentIcon::resolve('forms::components.file-upload.editor.actions.flip-horizontal')) ? svg($icon, $iconSizeClasses)->toHtml() : new HtmlString(''), - 'alpineClickHandler' => 'editor.scaleX(-editor.getData().scaleX || -1)', - ], - [ - 'label' => __('filament-forms::components.file_upload.editor.actions.flip_vertical.label'), - 'iconHtml' => ($icon = FilamentIcon::resolve('forms::components.file-upload.editor.actions.flip-vertical')) ? svg($icon, $iconSizeClasses)->toHtml() : new HtmlString(''), - 'alpineClickHandler' => 'editor.scaleY(-editor.getData().scaleY || -1)', - ], - ], - ]; - } -} diff --git a/vendor/filament/forms/src/Components/Grid.php b/vendor/filament/forms/src/Components/Grid.php deleted file mode 100644 index 1a3ae529..00000000 --- a/vendor/filament/forms/src/Components/Grid.php +++ /dev/null @@ -1,41 +0,0 @@ - | int | string | null $columns - */ - final public function __construct(array | int | string | null $columns) - { - $this->columns($columns); - } - - /** - * @param array | int | string | null $columns - */ - public static function make(array | int | string | null $columns = 2): static - { - $static = app(static::class, ['columns' => $columns]); - $static->configure(); - - return $static; - } - - protected function setUp(): void - { - parent::setUp(); - - $this->columnSpan('full'); - } -} diff --git a/vendor/filament/forms/src/Components/Group.php b/vendor/filament/forms/src/Components/Group.php deleted file mode 100644 index f2dc101c..00000000 --- a/vendor/filament/forms/src/Components/Group.php +++ /dev/null @@ -1,35 +0,0 @@ - | Closure $schema - */ - final public function __construct(array | Closure $schema = []) - { - $this->schema($schema); - } - - /** - * @param array | Closure $schema - */ - public static function make(array | Closure $schema = []): static - { - $static = app(static::class, ['schema' => $schema]); - $static->configure(); - - return $static; - } -} diff --git a/vendor/filament/forms/src/Components/HasManyRepeater.php b/vendor/filament/forms/src/Components/HasManyRepeater.php deleted file mode 100644 index 2c7ba61b..00000000 --- a/vendor/filament/forms/src/Components/HasManyRepeater.php +++ /dev/null @@ -1,10 +0,0 @@ -columnSpan('hidden'); - } -} diff --git a/vendor/filament/forms/src/Components/KeyValue.php b/vendor/filament/forms/src/Components/KeyValue.php deleted file mode 100644 index ae067226..00000000 --- a/vendor/filament/forms/src/Components/KeyValue.php +++ /dev/null @@ -1,379 +0,0 @@ -default([]); - - $this->dehydrateStateUsing(static function (?array $state) { - return collect($state ?? []) - ->filter(static fn (?string $value, ?string $key): bool => filled($key)) - ->map(static fn (?string $value): ?string => filled($value) ? $value : null) - ->all(); - }); - - $this->registerActions([ - fn (KeyValue $component): Action => $component->getAddAction(), - fn (KeyValue $component): Action => $component->getDeleteAction(), - fn (KeyValue $component): Action => $component->getReorderAction(), - ]); - } - - public function getAddAction(): Action - { - $action = Action::make($this->getAddActionName()) - ->label(fn (KeyValue $component) => $component->getAddActionLabel()) - ->color('gray') - ->livewireClickHandlerEnabled(false) - ->link() - ->visible(fn (): bool => $this->isAddable()); - - if ($this->modifyAddActionUsing) { - $action = $this->evaluate($this->modifyAddActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function addAction(?Closure $callback): static - { - $this->modifyAddActionUsing = $callback; - - return $this; - } - - public function getAddActionName(): string - { - return 'add'; - } - - public function getDeleteAction(): Action - { - $action = Action::make($this->getDeleteActionName()) - ->label(__('filament-forms::components.key_value.actions.delete.label')) - ->icon(FilamentIcon::resolve('forms::components.key-value.actions.delete') ?? 'heroicon-m-trash') - ->color('danger') - ->livewireClickHandlerEnabled(false) - ->iconButton() - ->size(ActionSize::Small) - ->visible(fn (): bool => $this->isDeletable()); - - if ($this->modifyDeleteActionUsing) { - $action = $this->evaluate($this->modifyDeleteActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function deleteAction(?Closure $callback): static - { - $this->modifyDeleteActionUsing = $callback; - - return $this; - } - - public function getDeleteActionName(): string - { - return 'delete'; - } - - public function getReorderAction(): Action - { - $action = Action::make($this->getReorderActionName()) - ->label(__('filament-forms::components.key_value.actions.reorder.label')) - ->icon(FilamentIcon::resolve('forms::components.key-value.actions.reorder') ?? 'heroicon-m-arrows-up-down') - ->color('gray') - ->livewireClickHandlerEnabled(false) - ->iconButton() - ->size(ActionSize::Small) - ->visible(fn (): bool => $this->isReorderable()); - - if ($this->modifyReorderActionUsing) { - $action = $this->evaluate($this->modifyReorderActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function reorderAction(?Closure $callback): static - { - $this->modifyReorderActionUsing = $callback; - - return $this; - } - - public function getReorderActionName(): string - { - return 'reorder'; - } - - public function addActionLabel(string | Closure | null $label): static - { - $this->addActionLabel = $label; - - return $this; - } - - public function deleteActionLabel(string | Closure | null $label): static - { - $this->deleteActionLabel = $label; - - return $this; - } - - public function reorderActionLabel(string | Closure | null $label): static - { - $this->reorderActionLabel = $label; - - return $this; - } - - /** - * @deprecated Use `addActionLabel()` instead. - */ - public function addButtonLabel(string | Closure | null $label): static - { - $this->addActionLabel($label); - - return $this; - } - - /** - * @deprecated Use `deleteActionLabel()` instead. - */ - public function deleteButtonLabel(string | Closure | null $label): static - { - $this->deleteActionLabel($label); - - return $this; - } - - /** - * @deprecated Use `reorderActionLabel()` instead. - */ - public function reorderButtonLabel(string | Closure | null $label): static - { - $this->reorderActionLabel($label); - - return $this; - } - - public function addable(bool | Closure $condition = true): static - { - $this->isAddable = $condition; - - return $this; - } - - public function deletable(bool | Closure $condition = true): static - { - $this->isDeletable = $condition; - - return $this; - } - - public function editableKeys(bool | Closure $condition = true): static - { - $this->canEditKeys = $condition; - - return $this; - } - - public function editableValues(bool | Closure $condition = true): static - { - $this->canEditValues = $condition; - - return $this; - } - - /** - * @deprecated Use `addable()` instead. - */ - public function disableAddingRows(bool | Closure $condition = true): static - { - $this->addable(fn (KeyValue $component): bool => ! $component->evaluate($condition)); - - return $this; - } - - /** - * @deprecated Use `deletable()` instead. - */ - public function disableDeletingRows(bool | Closure $condition = true): static - { - $this->deletable(fn (KeyValue $component): bool => ! $component->evaluate($condition)); - - return $this; - } - - /** - * @deprecated Use `editableKeys()` instead. - */ - public function disableEditingKeys(bool | Closure $condition = true): static - { - $this->editableKeys(fn (KeyValue $component): bool => ! $component->evaluate($condition)); - - return $this; - } - - /** - * @deprecated Use `editableValues()` instead. - */ - public function disableEditingValues(bool | Closure $condition = true): static - { - $this->editableValues(fn (KeyValue $component): bool => ! $component->evaluate($condition)); - - return $this; - } - - public function keyLabel(string | Closure | null $label): static - { - $this->keyLabel = $label; - - return $this; - } - - public function valueLabel(string | Closure | null $label): static - { - $this->valueLabel = $label; - - return $this; - } - - public function keyPlaceholder(string | Closure | null $placeholder): static - { - $this->keyPlaceholder = $placeholder; - - return $this; - } - - public function valuePlaceholder(string | Closure | null $placeholder): static - { - $this->valuePlaceholder = $placeholder; - - return $this; - } - - public function reorderable(bool | Closure $condition = true): static - { - $this->isReorderable = $condition; - - return $this; - } - - public function isAddable(): bool - { - return (bool) $this->evaluate($this->isAddable); - } - - public function isDeletable(): bool - { - return (bool) $this->evaluate($this->isDeletable); - } - - public function canEditKeys(): bool - { - return (bool) $this->evaluate($this->canEditKeys); - } - - public function canEditValues(): bool - { - return (bool) $this->evaluate($this->canEditValues); - } - - public function getAddActionLabel(): string - { - return $this->evaluate($this->addActionLabel) ?? __('filament-forms::components.key_value.actions.add.label'); - } - - public function getDeleteActionLabel(): string - { - return $this->evaluate($this->deleteActionLabel) ?? __('filament-forms::components.key_value.actions.delete.label'); - } - - public function getReorderActionLabel(): string - { - return $this->evaluate($this->reorderActionLabel) ?? __('filament-forms::components.key_value.actions.reorder.label'); - } - - public function getKeyLabel(): string - { - return $this->evaluate($this->keyLabel) ?? __('filament-forms::components.key_value.fields.key.label'); - } - - public function getValueLabel(): string - { - return $this->evaluate($this->valueLabel) ?? __('filament-forms::components.key_value.fields.value.label'); - } - - public function getKeyPlaceholder(): ?string - { - return $this->evaluate($this->keyPlaceholder); - } - - public function getValuePlaceholder(): ?string - { - return $this->evaluate($this->valuePlaceholder); - } - - public function isReorderable(): bool - { - return (bool) $this->evaluate($this->isReorderable); - } -} diff --git a/vendor/filament/forms/src/Components/Livewire.php b/vendor/filament/forms/src/Components/Livewire.php deleted file mode 100644 index d1920119..00000000 --- a/vendor/filament/forms/src/Components/Livewire.php +++ /dev/null @@ -1,106 +0,0 @@ - | Closure - */ - protected array | Closure $data = []; - - protected string | Closure $component; - - /** - * @param array | Closure $data - */ - final public function __construct(string | Closure $component, array | Closure $data = []) - { - $this->component($component); - $this->data($data); - } - - /** - * @param array | Closure $data - */ - public static function make(string | Closure $component, array | Closure $data = []): static - { - $static = app(static::class, [ - 'component' => $component, - 'data' => $data, - ]); - $static->configure(); - - return $static; - } - - public function component(string | Closure $component): static - { - $this->component = $component; - - return $this; - } - - public function getComponent(): string - { - return $this->evaluate($this->component); - } - - public function lazy(bool | Closure $condition = true): static - { - $this->isLazy = $condition; - - return $this; - } - - public function isLazy(): bool - { - return (bool) $this->evaluate($this->isLazy); - } - - /** - * @param array | Closure $data - */ - public function data(array | Closure $data): static - { - $this->data = $data; - - return $this; - } - - /** - * @return array - */ - public function getData(): array - { - return $this->evaluate($this->data); - } - - /** - * @return array - */ - public function getComponentProperties(): array - { - $properties = [ - 'record' => $this->getRecord(), - ]; - - if ($this->isLazy()) { - $properties['lazy'] = true; - } - - return [ - ...$properties, - ...$this->getData(), - ]; - } -} diff --git a/vendor/filament/forms/src/Components/MarkdownEditor.php b/vendor/filament/forms/src/Components/MarkdownEditor.php deleted file mode 100644 index c2746d2f..00000000 --- a/vendor/filament/forms/src/Components/MarkdownEditor.php +++ /dev/null @@ -1,39 +0,0 @@ - - */ - protected array | Closure $toolbarButtons = [ - 'attachFiles', - 'blockquote', - 'bold', - 'bulletList', - 'codeBlock', - 'heading', - 'italic', - 'link', - 'orderedList', - 'redo', - 'strike', - 'table', - 'undo', - ]; -} diff --git a/vendor/filament/forms/src/Components/MorphManyRepeater.php b/vendor/filament/forms/src/Components/MorphManyRepeater.php deleted file mode 100644 index 50322254..00000000 --- a/vendor/filament/forms/src/Components/MorphManyRepeater.php +++ /dev/null @@ -1,10 +0,0 @@ - | Closure - */ - protected array | Closure $types = []; - - final public function __construct(string $name) - { - $this->name($name); - } - - public static function make(string $name): static - { - $static = app(static::class, ['name' => $name]); - $static->configure(); - - return $static; - } - - /** - * @return array - */ - public function getChildComponents(): array - { - $relationship = $this->getRelationship(); - $typeColumn = $relationship->getMorphType(); - $keyColumn = $relationship->getForeignKeyName(); - - $types = $this->getTypes(); - $isRequired = $this->isRequired(); - - /** @var ?Type $selectedType */ - $selectedType = $types[$this->evaluate(fn (Get $get): ?string => $get($typeColumn))] ?? null; - - return [ - Select::make($typeColumn) - ->label($this->getLabel()) - ->hiddenLabel() - ->options(array_map( - fn (Type $type): string => $type->getLabel(), - $types, - )) - ->required($isRequired) - ->live() - ->afterStateUpdated(function (Set $set) use ($keyColumn) { - $set($keyColumn, null); - $this->callAfterStateUpdated(); - }), - Select::make($keyColumn) - ->label($selectedType?->getLabel()) - ->hiddenLabel() - ->options($selectedType?->getOptionsUsing) - ->getSearchResultsUsing($selectedType?->getSearchResultsUsing) - ->getOptionLabelUsing($selectedType?->getOptionLabelUsing) - ->required($isRequired) - ->hidden(! $selectedType) - ->searchable($this->isSearchable()) - ->searchDebounce($this->getSearchDebounce()) - ->searchPrompt($this->getSearchPrompt()) - ->searchingMessage($this->getSearchingMessage()) - ->noSearchResultsMessage($this->getNoSearchResultsMessage()) - ->loadingMessage($this->getLoadingMessage()) - ->allowHtml($this->isHtmlAllowed()) - ->optionsLimit($this->getOptionsLimit()) - ->preload($this->isPreloaded()) - ->when( - $this->isLive(), - fn (Select $component) => $component->live(onBlur: $this->isLiveOnBlur()), - ) - ->afterStateUpdated(function () { - $this->callAfterStateUpdated(); - }), - ]; - } - - public function optionsLimit(int | Closure $limit): static - { - $this->optionsLimit = $limit; - - return $this; - } - - public function required(bool | Closure $condition = true): static - { - $this->isRequired = $condition; - - return $this; - } - - /** - * @param array | Closure $types - */ - public function types(array | Closure $types): static - { - $this->types = $types; - - return $this; - } - - public function getRelationship(): MorphTo - { - return $this->getModelInstance()->{$this->getName()}(); - } - - /** - * @return array - */ - public function getTypes(): array - { - $types = []; - - foreach ($this->evaluate($this->types) as $type) { - $types[$type->getAlias()] = $type; - } - - return $types; - } - - public function isRequired(): bool - { - return (bool) $this->evaluate($this->isRequired); - } - - public function getOptionsLimit(): int - { - return $this->evaluate($this->optionsLimit); - } -} diff --git a/vendor/filament/forms/src/Components/MorphToSelect/Type.php b/vendor/filament/forms/src/Components/MorphToSelect/Type.php deleted file mode 100644 index 5ef6150f..00000000 --- a/vendor/filament/forms/src/Components/MorphToSelect/Type.php +++ /dev/null @@ -1,316 +0,0 @@ - | null - */ - protected ?array $searchColumns = null; - - protected ?string $titleAttribute = null; - - protected ?Closure $getOptionLabelFromRecordUsing = null; - - protected int $optionsLimit = 50; - - protected string $model; - - protected ?bool $isSearchForcedCaseInsensitive = null; - - final public function __construct(string $model) - { - $this->model($model); - - $this->setUp(); - } - - public static function make(string $model): static - { - return app(static::class, ['model' => $model]); - } - - protected function setUp(): void - { - $this->getSearchResultsUsing(function (Select $component, ?string $search): array { - $query = $this->getModel()::query(); - - if ($this->modifyOptionsQueryUsing) { - $query = $component->evaluate($this->modifyOptionsQueryUsing, [ - 'query' => $query, - ]) ?? $query; - } - - /** @var Connection $databaseConnection */ - $databaseConnection = $query->getConnection(); - - $isForcedCaseInsensitive = $this->isSearchForcedCaseInsensitive(); - - $isFirst = true; - - $search = generate_search_term_expression($search, $isForcedCaseInsensitive, $databaseConnection); - - $query->where(function (Builder $query) use ($isFirst, $isForcedCaseInsensitive, $databaseConnection, $search): Builder { - foreach ($this->getSearchColumns() as $searchColumn) { - $whereClause = $isFirst ? 'where' : 'orWhere'; - - $query->{$whereClause}( - generate_search_column_expression($searchColumn, $isForcedCaseInsensitive, $databaseConnection), - 'like', - "%{$search}%", - ); - - $isFirst = false; - } - - return $query; - }); - - $baseQuery = $query->getQuery(); - - if (isset($baseQuery->limit)) { - $component->optionsLimit($baseQuery->limit); - } else { - $query->limit($component->getOptionsLimit()); - } - - $keyName = $query->getModel()->getKeyName(); - - if ($this->hasOptionLabelFromRecordUsingCallback()) { - return $query - ->get() - ->mapWithKeys(fn (Model $record) => [ - $record->{$keyName} => $this->getOptionLabelFromRecord($record), - ]) - ->toArray(); - } - - $titleAttribute = $this->getTitleAttribute(); - - if (empty($query->getQuery()->orders)) { - $query->orderBy($titleAttribute); - } - - return $query - ->pluck($titleAttribute, $keyName) - ->toArray(); - }); - - $this->getOptionsUsing(function (Select $component): ?array { - if (($component->isSearchable()) && ! $component->isPreloaded()) { - return null; - } - - $query = $this->getModel()::query(); - - if ($this->modifyOptionsQueryUsing) { - $query = $component->evaluate($this->modifyOptionsQueryUsing, [ - 'query' => $query, - ]) ?? $query; - } - - $keyName = $query->getModel()->getKeyName(); - - if ($this->hasOptionLabelFromRecordUsingCallback()) { - return $query - ->get() - ->mapWithKeys(fn (Model $record) => [ - $record->{$keyName} => $this->getOptionLabelFromRecord($record), - ]) - ->toArray(); - } - - $titleAttribute = $this->getTitleAttribute(); - - if (empty($query->getQuery()->orders)) { - $query->orderBy($titleAttribute); - } - - return $query - ->pluck($titleAttribute, $keyName) - ->toArray(); - }); - - $this->getOptionLabelUsing(function (Select $component, $value) { - $query = $this->getModel()::query(); - - $query->where($query->getModel()->getKeyName(), $value); - - if ($this->modifyOptionsQueryUsing) { - $query = $component->evaluate($this->modifyOptionsQueryUsing, [ - 'query' => $query, - ]) ?? $query; - } - - $record = $query->first(); - - if (! $record) { - return null; - } - - if ($this->hasOptionLabelFromRecordUsingCallback()) { - return $this->getOptionLabelFromRecord($record); - } - - return $record->getAttributeValue($this->getTitleAttribute()); - }); - } - - public function model(string $model): static - { - $this->model = $model; - - return $this; - } - - public function label(?string $label): static - { - $this->label = $label; - - return $this; - } - - public function titleAttribute(?string $name): static - { - $this->titleAttribute = $name; - - return $this; - } - - /** - * @deprecated Use `titleAttribute()` instead. - */ - public function titleColumnName(?string $name): static - { - $this->titleAttribute($name); - - return $this; - } - - /** - * @param array | null $columns - */ - public function searchColumns(?array $columns): static - { - $this->searchColumns = $columns; - - return $this; - } - - public function modifyOptionsQueryUsing(?Closure $callback): static - { - $this->modifyOptionsQueryUsing = $callback; - - return $this; - } - - public function getOptionsUsing(Closure $callback): static - { - $this->getOptionsUsing = $callback; - - return $this; - } - - public function getSearchResultsUsing(Closure $callback): static - { - $this->getSearchResultsUsing = $callback; - - return $this; - } - - public function getOptionLabelUsing(Closure $callback): static - { - $this->getOptionLabelUsing = $callback; - - return $this; - } - - public function getOptionLabelFromRecordUsing(?Closure $callback): static - { - $this->getOptionLabelFromRecordUsing = $callback; - - return $this; - } - - public function getOptionLabelFromRecord(Model $record): string - { - return ($this->getOptionLabelFromRecordUsing)($record); - } - - public function hasOptionLabelFromRecordUsingCallback(): bool - { - return $this->getOptionLabelFromRecordUsing !== null; - } - - public function getModel(): string - { - return $this->model; - } - - public function getLabel(): string - { - return $this->label ?? Str::ucfirst(get_model_label($this->getModel())); - } - - public function getAlias(): string - { - return app($this->getModel())->getMorphClass(); - } - - /** - * @return array - */ - public function getSearchColumns(): ?array - { - return $this->searchColumns ?? [$this->getTitleAttribute()]; - } - - public function getTitleAttribute(): string - { - if (blank($this->titleAttribute)) { - throw new Exception("MorphToSelect type [{$this->getModel()}] must have a [titleAttribute()] set."); - } - - return $this->titleAttribute; - } - - public function getOptionsLimit(): int - { - return $this->optionsLimit; - } - - public function forceSearchCaseInsensitive(?bool $condition = true): static - { - $this->isSearchForcedCaseInsensitive = $condition; - - return $this; - } - - public function isSearchForcedCaseInsensitive(): ?bool - { - return $this->isSearchForcedCaseInsensitive; - } -} diff --git a/vendor/filament/forms/src/Components/MultiSelect.php b/vendor/filament/forms/src/Components/MultiSelect.php deleted file mode 100644 index 32599985..00000000 --- a/vendor/filament/forms/src/Components/MultiSelect.php +++ /dev/null @@ -1,14 +0,0 @@ -name($name); - $this->statePath($name); - } - - public static function make(string $name): static - { - $static = app(static::class, ['name' => $name]); - $static->configure(); - - return $static; - } - - protected function setUp(): void - { - parent::setUp(); - - $this->dehydrated(false); - } - - public function content(mixed $content): static - { - $this->content = $content; - - return $this; - } - - public function getId(): string - { - return parent::getId() ?? $this->getStatePath(); - } - - public function getContent(): mixed - { - return $this->evaluate($this->content); - } -} diff --git a/vendor/filament/forms/src/Components/Radio.php b/vendor/filament/forms/src/Components/Radio.php deleted file mode 100644 index ea5a98cd..00000000 --- a/vendor/filament/forms/src/Components/Radio.php +++ /dev/null @@ -1,62 +0,0 @@ -options([ - 1 => $trueLabel ?? __('filament-forms::components.radio.boolean.true'), - 0 => $falseLabel ?? __('filament-forms::components.radio.boolean.false'), - ]); - - return $this; - } - - public function inline(bool | Closure $condition = true): static - { - $this->isInline = $condition; - $this->inlineLabel(fn (Radio $component): ?bool => $component->evaluate($condition) ? true : null); - - return $this; - } - - public function isInline(): bool - { - return (bool) $this->evaluate($this->isInline); - } - - public function getDefaultState(): mixed - { - $state = parent::getDefaultState(); - - if (is_bool($state)) { - return $state ? 1 : 0; - } - - return $state; - } -} diff --git a/vendor/filament/forms/src/Components/RelationshipRepeater.php b/vendor/filament/forms/src/Components/RelationshipRepeater.php deleted file mode 100644 index 9ebd01cd..00000000 --- a/vendor/filament/forms/src/Components/RelationshipRepeater.php +++ /dev/null @@ -1,16 +0,0 @@ -relationship(); - } -} diff --git a/vendor/filament/forms/src/Components/Repeater.php b/vendor/filament/forms/src/Components/Repeater.php deleted file mode 100644 index 7bd52fe9..00000000 --- a/vendor/filament/forms/src/Components/Repeater.php +++ /dev/null @@ -1,1237 +0,0 @@ - | null - */ - protected ?array $hydratedDefaultState = null; - - protected bool $shouldMergeHydratedDefaultStateWithChildComponentContainerStateAfterStateHydrated = true; - - protected string | Closure | null $labelBetweenItems = null; - - protected bool | Closure $isItemLabelTruncated = true; - - protected function setUp(): void - { - parent::setUp(); - - $this->defaultItems(1); - - $this->afterStateHydrated(static function (Repeater $component, ?array $state): void { - if ( - is_array($component->hydratedDefaultState) && - $component->shouldMergeHydratedDefaultStateWithChildComponentContainerStateAfterStateHydrated - ) { - $component->mergeHydratedDefaultStateWithChildComponentContainerState(); - } - - if (is_array($component->hydratedDefaultState)) { - return; - } - - $items = []; - - $simpleField = $component->getSimpleField(); - - foreach ($state ?? [] as $itemData) { - $items[$component->generateUuid()] = $simpleField ? - [$simpleField->getName() => $itemData] : - $itemData; - } - - $component->state($items); - }); - - $this->registerActions([ - fn (Repeater $component): Action => $component->getAddAction(), - fn (Repeater $component): Action => $component->getAddBetweenAction(), - fn (Repeater $component): Action => $component->getCloneAction(), - fn (Repeater $component): Action => $component->getCollapseAction(), - fn (Repeater $component): Action => $component->getCollapseAllAction(), - fn (Repeater $component): Action => $component->getDeleteAction(), - fn (Repeater $component): Action => $component->getExpandAction(), - fn (Repeater $component): Action => $component->getExpandAllAction(), - fn (Repeater $component): Action => $component->getMoveDownAction(), - fn (Repeater $component): Action => $component->getMoveUpAction(), - fn (Repeater $component): Action => $component->getReorderAction(), - ]); - - $this->mutateDehydratedStateUsing(static function (Repeater $component, ?array $state): array { - if ($simpleField = $component->getSimpleField()) { - return collect($state ?? []) - ->values() - ->pluck($simpleField->getName()) - ->all(); - } - - return array_values($state ?? []); - }); - } - - public function getAddAction(): Action - { - $action = Action::make($this->getAddActionName()) - ->label(fn (Repeater $component) => $component->getAddActionLabel()) - ->color('gray') - ->action(function (Repeater $component): void { - $newUuid = $component->generateUuid(); - - $items = $component->getState(); - $items[$newUuid] = []; - - $component->state($items); - - $component->getChildComponentContainer($newUuid)->fill(); - - $component->collapsed(false, shouldMakeComponentCollapsible: false); - - $component->callAfterStateUpdated(); - }) - ->button() - ->size(ActionSize::Small) - ->visible(fn (Repeater $component): bool => $component->isAddable()); - - if ($this->modifyAddActionUsing) { - $action = $this->evaluate($this->modifyAddActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function addAction(?Closure $callback): static - { - $this->modifyAddActionUsing = $callback; - - return $this; - } - - public function getAddActionName(): string - { - return 'add'; - } - - public function getAddBetweenAction(): Action - { - $action = Action::make($this->getAddBetweenActionName()) - ->label(fn (Repeater $component) => $component->getAddBetweenActionLabel()) - ->color('gray') - ->action(function (array $arguments, Repeater $component): void { - $newUuid = $component->generateUuid(); - - $items = []; - - foreach ($component->getState() ?? [] as $uuid => $item) { - $items[$uuid] = $item; - - if ($uuid === $arguments['afterItem']) { - $items[$newUuid] = []; - } - } - - $component->state($items); - - $component->getChildComponentContainer($newUuid)->fill(); - - $component->collapsed(false, shouldMakeComponentCollapsible: false); - - $component->callAfterStateUpdated(); - }) - ->button() - ->size(ActionSize::Small) - ->visible(false); - - if ($this->modifyAddBetweenActionUsing) { - $action = $this->evaluate($this->modifyAddBetweenActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function addBetweenAction(?Closure $callback): static - { - $this->modifyAddBetweenActionUsing = $callback; - - return $this; - } - - public function getAddBetweenActionName(): string - { - return 'addBetween'; - } - - public function addBetweenActionLabel(string | Closure | null $label): static - { - $this->addBetweenActionLabel = $label; - - return $this; - } - - public function getAddBetweenActionLabel(): string - { - return $this->evaluate($this->addBetweenActionLabel) ?? __('filament-forms::components.repeater.actions.add_between.label'); - } - - public function getCloneAction(): Action - { - $action = Action::make($this->getCloneActionName()) - ->label(__('filament-forms::components.repeater.actions.clone.label')) - ->icon(FilamentIcon::resolve('forms::components.repeater.actions.clone') ?? 'heroicon-m-square-2-stack') - ->color('gray') - ->action(function (array $arguments, Repeater $component): void { - $newUuid = $component->generateUuid(); - - $items = $component->getState(); - $items[$newUuid] = $items[$arguments['item']]; - - $component->state($items); - - $component->collapsed(false, shouldMakeComponentCollapsible: false); - - $component->callAfterStateUpdated(); - }) - ->iconButton() - ->size(ActionSize::Small) - ->visible(fn (Repeater $component): bool => $component->isCloneable()); - - if ($this->modifyCloneActionUsing) { - $action = $this->evaluate($this->modifyCloneActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function cloneAction(?Closure $callback): static - { - $this->modifyCloneActionUsing = $callback; - - return $this; - } - - public function getCloneActionName(): string - { - return 'clone'; - } - - public function getDeleteAction(): Action - { - $action = Action::make($this->getDeleteActionName()) - ->label(__('filament-forms::components.repeater.actions.delete.label')) - ->icon(FilamentIcon::resolve('forms::components.repeater.actions.delete') ?? 'heroicon-m-trash') - ->color('danger') - ->action(function (array $arguments, Repeater $component): void { - $items = $component->getState(); - unset($items[$arguments['item']]); - - $component->state($items); - - $component->callAfterStateUpdated(); - }) - ->iconButton() - ->size(ActionSize::Small) - ->visible(fn (Repeater $component): bool => $component->isDeletable()); - - if ($this->modifyDeleteActionUsing) { - $action = $this->evaluate($this->modifyDeleteActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function deleteAction(?Closure $callback): static - { - $this->modifyDeleteActionUsing = $callback; - - return $this; - } - - public function getDeleteActionName(): string - { - return 'delete'; - } - - public function getMoveDownAction(): Action - { - $action = Action::make($this->getMoveDownActionName()) - ->label(__('filament-forms::components.repeater.actions.move_down.label')) - ->icon(FilamentIcon::resolve('forms::components.repeater.actions.move-down') ?? 'heroicon-m-arrow-down') - ->color('gray') - ->action(function (array $arguments, Repeater $component): void { - $items = array_move_after($component->getState(), $arguments['item']); - - $component->state($items); - - $component->callAfterStateUpdated(); - }) - ->iconButton() - ->size(ActionSize::Small) - ->visible(fn (Repeater $component): bool => $component->isReorderable()); - - if ($this->modifyMoveDownActionUsing) { - $action = $this->evaluate($this->modifyMoveDownActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function moveDownAction(?Closure $callback): static - { - $this->modifyMoveDownActionUsing = $callback; - - return $this; - } - - public function getMoveDownActionName(): string - { - return 'moveDown'; - } - - public function getMoveUpAction(): Action - { - $action = Action::make($this->getMoveUpActionName()) - ->label(__('filament-forms::components.repeater.actions.move_up.label')) - ->icon(FilamentIcon::resolve('forms::components.repeater.actions.move-up') ?? 'heroicon-m-arrow-up') - ->color('gray') - ->action(function (array $arguments, Repeater $component): void { - $items = array_move_before($component->getState(), $arguments['item']); - - $component->state($items); - - $component->callAfterStateUpdated(); - }) - ->iconButton() - ->size(ActionSize::Small) - ->visible(fn (Repeater $component): bool => $component->isReorderable()); - - if ($this->modifyMoveUpActionUsing) { - $action = $this->evaluate($this->modifyMoveUpActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function moveUpAction(?Closure $callback): static - { - $this->modifyMoveUpActionUsing = $callback; - - return $this; - } - - public function getMoveUpActionName(): string - { - return 'moveUp'; - } - - public function getReorderAction(): Action - { - $action = Action::make($this->getReorderActionName()) - ->label(__('filament-forms::components.repeater.actions.reorder.label')) - ->icon(FilamentIcon::resolve('forms::components.repeater.actions.reorder') ?? 'heroicon-m-arrows-up-down') - ->color('gray') - ->action(function (array $arguments, Repeater $component): void { - $items = [ - ...array_flip($arguments['items']), - ...$component->getState(), - ]; - - $component->state($items); - - $component->callAfterStateUpdated(); - }) - ->livewireClickHandlerEnabled(false) - ->iconButton() - ->size(ActionSize::Small) - ->visible(fn (Repeater $component): bool => $component->isReorderableWithDragAndDrop()); - - if ($this->modifyReorderActionUsing) { - $action = $this->evaluate($this->modifyReorderActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function reorderAction(?Closure $callback): static - { - $this->modifyReorderActionUsing = $callback; - - return $this; - } - - public function getReorderActionName(): string - { - return 'reorder'; - } - - public function getCollapseAction(): Action - { - $action = Action::make($this->getCollapseActionName()) - ->label(__('filament-forms::components.repeater.actions.collapse.label')) - ->icon(FilamentIcon::resolve('forms::components.repeater.actions.collapse') ?? 'heroicon-m-chevron-up') - ->color('gray') - ->livewireClickHandlerEnabled(false) - ->iconButton() - ->size(ActionSize::Small); - - if ($this->modifyCollapseActionUsing) { - $action = $this->evaluate($this->modifyCollapseActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function collapseAction(?Closure $callback): static - { - $this->modifyCollapseActionUsing = $callback; - - return $this; - } - - public function getCollapseActionName(): string - { - return 'collapse'; - } - - public function getExpandAction(): Action - { - $action = Action::make($this->getExpandActionName()) - ->label(__('filament-forms::components.repeater.actions.expand.label')) - ->icon(FilamentIcon::resolve('forms::components.repeater.actions.expand') ?? 'heroicon-m-chevron-down') - ->color('gray') - ->livewireClickHandlerEnabled(false) - ->iconButton() - ->size(ActionSize::Small); - - if ($this->modifyExpandActionUsing) { - $action = $this->evaluate($this->modifyExpandActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function expandAction(?Closure $callback): static - { - $this->modifyExpandActionUsing = $callback; - - return $this; - } - - public function getExpandActionName(): string - { - return 'expand'; - } - - public function getCollapseAllAction(): Action - { - $action = Action::make($this->getCollapseAllActionName()) - ->label(__('filament-forms::components.repeater.actions.collapse_all.label')) - ->color('gray') - ->livewireClickHandlerEnabled(false) - ->link() - ->size(ActionSize::Small); - - if ($this->modifyCollapseAllActionUsing) { - $action = $this->evaluate($this->modifyCollapseAllActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function collapseAllAction(?Closure $callback): static - { - $this->modifyCollapseAllActionUsing = $callback; - - return $this; - } - - public function getCollapseAllActionName(): string - { - return 'collapseAll'; - } - - public function getExpandAllAction(): Action - { - $action = Action::make($this->getExpandAllActionName()) - ->label(__('filament-forms::components.repeater.actions.expand_all.label')) - ->color('gray') - ->livewireClickHandlerEnabled(false) - ->link() - ->size(ActionSize::Small); - - if ($this->modifyExpandAllActionUsing) { - $action = $this->evaluate($this->modifyExpandAllActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function expandAllAction(?Closure $callback): static - { - $this->modifyExpandAllActionUsing = $callback; - - return $this; - } - - public function getExpandAllActionName(): string - { - return 'expandAll'; - } - - public function addActionLabel(string | Closure | null $label): static - { - $this->addActionLabel = $label; - - return $this; - } - - /** - * @deprecated Use `addActionLabel()` instead. - */ - public function createItemButtonLabel(string | Closure | null $label): static - { - $this->addActionLabel($label); - - return $this; - } - - public function labelBetweenItems(string | Closure | null $label): static - { - $this->labelBetweenItems = $label; - - return $this; - } - - public function truncateItemLabel(bool | Closure $condition = true): static - { - $this->isItemLabelTruncated = $condition; - - return $this; - } - - public function defaultItems(int | Closure $count): static - { - $this->default(static function (Repeater $component) use ($count): array { - $count = $component->evaluate($count); - - if (! $count) { - return []; - } - - return array_fill(0, $count, $component->isSimple() ? null : []); - }); - - $this->shouldMergeHydratedDefaultStateWithChildComponentContainerStateAfterStateHydrated = false; - - return $this; - } - - public function default(mixed $state): static - { - parent::default(function (Repeater $component) use ($state) { - $state = $component->evaluate($state); - - $simpleField = $component->getSimpleField(); - - $items = []; - - foreach ($state ?? [] as $itemData) { - $items[$component->generateUuid()] = $simpleField ? - [$simpleField->getName() => $itemData] : - $itemData; - } - - $component->hydratedDefaultState = $items; - - return $items; - }); - - $this->shouldMergeHydratedDefaultStateWithChildComponentContainerStateAfterStateHydrated = true; - - return $this; - } - - public function addable(bool | Closure $condition = true): static - { - $this->isAddable = $condition; - - return $this; - } - - public function deletable(bool | Closure $condition = true): static - { - $this->isDeletable = $condition; - - return $this; - } - - public function reorderable(bool | Closure $condition = true): static - { - $this->isReorderable = $condition; - - return $this; - } - - /** - * @deprecated Use `addable()` instead. - */ - public function disableItemCreation(bool | Closure $condition = true): static - { - $this->addable(fn (Repeater $component): bool => ! $this->evaluate($condition)); - - return $this; - } - - /** - * @deprecated Use `deletable()` instead. - */ - public function disableItemDeletion(bool | Closure $condition = true): static - { - $this->deletable(fn (Repeater $component): bool => ! $this->evaluate($condition)); - - return $this; - } - - /** - * @deprecated Use `reorderable()` instead. - */ - public function disableItemMovement(bool | Closure $condition = true): static - { - $this->reorderable(fn (Repeater $component): bool => ! $this->evaluate($condition)); - - return $this; - } - - public function reorderableWithDragAndDrop(bool | Closure $condition = true): static - { - $this->isReorderableWithDragAndDrop = $condition; - - return $this; - } - - public function reorderableWithButtons(bool | Closure $condition = true): static - { - $this->isReorderableWithButtons = $condition; - - return $this; - } - - /** - * @deprecated No longer part of the design system. - */ - public function inset(bool | Closure $condition = true): static - { - return $this; - } - - public function getChildComponents(): array - { - if ($simpleField = $this->getSimpleField()) { - return [$simpleField]; - } - - return parent::getChildComponents(); - } - - /** - * @return array - */ - public function getChildComponentContainers(bool $withHidden = false): array - { - if ((! $withHidden) && $this->isHidden()) { - return []; - } - - $relationship = $this->getRelationship(); - - $records = $relationship ? $this->getCachedExistingRecords() : null; - - $containers = []; - - foreach ($this->getState() ?? [] as $itemKey => $itemData) { - $containers[$itemKey] = $this - ->getChildComponentContainer() - ->statePath($itemKey) - ->model($relationship ? $records[$itemKey] ?? $this->getRelatedModel() : null) - ->inlineLabel(false) - ->getClone(); - } - - return $containers; - } - - public function getAddActionLabel(): string - { - return $this->evaluate($this->addActionLabel) ?? __('filament-forms::components.repeater.actions.add.label', [ - 'label' => Str::lcfirst($this->getLabel()), - ]); - } - - public function isReorderable(): bool - { - if ($this->isDisabled()) { - return false; - } - - return (bool) $this->evaluate($this->isReorderable); - } - - public function isReorderableWithDragAndDrop(): bool - { - return $this->evaluate($this->isReorderableWithDragAndDrop) && $this->isReorderable(); - } - - public function isReorderableWithButtons(): bool - { - return $this->evaluate($this->isReorderableWithButtons) && $this->isReorderable(); - } - - public function isAddable(): bool - { - if ($this->isDisabled()) { - return false; - } - - if (filled($this->getMaxItems()) && ($this->getMaxItems() <= $this->getItemsCount())) { - return false; - } - - return (bool) $this->evaluate($this->isAddable); - } - - public function isDeletable(): bool - { - if ($this->isDisabled()) { - return false; - } - - return (bool) $this->evaluate($this->isDeletable); - } - - public function orderColumn(string | Closure | null $column = 'sort'): static - { - $this->orderColumn = $column; - $this->reorderable($column); - - return $this; - } - - /** - * @deprecated Use `orderColumn()` instead. - */ - public function orderable(string | Closure | null $column = 'sort'): static - { - $this->orderColumn($column); - - return $this; - } - - public function relationship(string | Closure | null $name = null, ?Closure $modifyQueryUsing = null): static - { - $this->relationship = $name ?? $this->getName(); - $this->modifyRelationshipQueryUsing = $modifyQueryUsing; - - $this->afterStateHydrated(function (Repeater $component) { - if (! is_array($component->hydratedDefaultState)) { - return; - } - - $component->mergeHydratedDefaultStateWithChildComponentContainerState(); - }); - - $this->loadStateFromRelationshipsUsing(static function (Repeater $component) { - $component->clearCachedExistingRecords(); - - $component->fillFromRelationship(); - }); - - $this->saveRelationshipsUsing(static function (Repeater $component, HasForms $livewire, ?array $state) { - if (! is_array($state)) { - $state = []; - } - - $relationship = $component->getRelationship(); - - $existingRecords = $component->getCachedExistingRecords(); - - $recordsToDelete = []; - - foreach ($existingRecords->pluck($relationship->getRelated()->getKeyName()) as $keyToCheckForDeletion) { - if (array_key_exists("record-{$keyToCheckForDeletion}", $state)) { - continue; - } - - $recordsToDelete[] = $keyToCheckForDeletion; - } - - $relationship - ->whereKey($recordsToDelete) - ->get() - ->each(static fn (Model $record) => $record->delete()); - - $childComponentContainers = $component->getChildComponentContainers(); - - $itemOrder = 1; - $orderColumn = $component->getOrderColumn(); - - $translatableContentDriver = $livewire->makeFilamentTranslatableContentDriver(); - - foreach ($childComponentContainers as $itemKey => $item) { - $itemData = $item->getState(shouldCallHooksBefore: false); - - if ($orderColumn) { - $itemData[$orderColumn] = $itemOrder; - - $itemOrder++; - } - - if ($record = ($existingRecords[$itemKey] ?? null)) { - $itemData = $component->mutateRelationshipDataBeforeSave($itemData, record: $record); - - if ($itemData === null) { - continue; - } - - $translatableContentDriver ? - $translatableContentDriver->updateRecord($record, $itemData) : - $record->fill($itemData)->save(); - - continue; - } - - $relatedModel = $component->getRelatedModel(); - - $itemData = $component->mutateRelationshipDataBeforeCreate($itemData); - - if ($itemData === null) { - continue; - } - - if ($translatableContentDriver) { - $record = $translatableContentDriver->makeRecord($relatedModel, $itemData); - } else { - $record = new $relatedModel(); - $record->fill($itemData); - } - - $record = $relationship->save($record); - $item->model($record)->saveRelationships(); - } - }); - - $this->dehydrated(false); - - $this->disableItemMovement(); - - return $this; - } - - /** - * After hydrating the state of child component containers, the default state - * of fields inside the repeater can be lost, if it was defined on the repeater - * itself. This method merges the hydrated default state with the state of the - * child component containers, so that the default state of the fields inside - * the repeater is preserved. - */ - protected function mergeHydratedDefaultStateWithChildComponentContainerState(): void - { - $state = $this->getState(); - $items = $this->hydratedDefaultState; - - foreach ($items as $itemKey => $itemData) { - $items[$itemKey] = [ - ...$state[$itemKey] ?? [], - ...$itemData, - ]; - } - - $this->state($items); - } - - public function itemLabel(string | Closure | null $label): static - { - $this->itemLabel = $label; - - return $this; - } - - public function fillFromRelationship(): void - { - $this->state( - $this->getStateFromRelatedRecords($this->getCachedExistingRecords()), - ); - } - - /** - * @return array> - */ - protected function getStateFromRelatedRecords(Collection $records): array - { - if (! $records->count()) { - return []; - } - - $translatableContentDriver = $this->getLivewire()->makeFilamentTranslatableContentDriver(); - - return $records - ->map(function (Model $record) use ($translatableContentDriver): array { - $data = $translatableContentDriver ? - $translatableContentDriver->getRecordAttributesToArray($record) : - $record->attributesToArray(); - - return $this->mutateRelationshipDataBeforeFill($data); - }) - ->toArray(); - } - - public function getLabel(): string | Htmlable | null - { - if ($this->label === null && $this->hasRelationship()) { - $label = (string) str($this->getRelationshipName()) - ->before('.') - ->kebab() - ->replace(['-', '_'], ' ') - ->ucfirst(); - - return ($this->shouldTranslateLabel) ? __($label) : $label; - } - - return parent::getLabel(); - } - - public function getOrderColumn(): ?string - { - return $this->evaluate($this->orderColumn); - } - - public function getRelationship(): HasOneOrMany | BelongsToMany | null - { - if (! $this->hasRelationship()) { - return null; - } - - return $this->getModelInstance()->{$this->getRelationshipName()}(); - } - - public function getRelationshipName(): ?string - { - return $this->evaluate($this->relationship); - } - - public function getCachedExistingRecords(): Collection - { - if ($this->cachedExistingRecords) { - return $this->cachedExistingRecords; - } - - $relationship = $this->getRelationship(); - $relatedKeyName = $relationship->getRelated()->getKeyName(); - - $relationshipName = $this->getRelationshipName(); - $orderColumn = $this->getOrderColumn(); - - if ( - $this->getModelInstance()->relationLoaded($relationshipName) && - (! $this->modifyRelationshipQueryUsing) - - ) { - return $this->cachedExistingRecords = $this->getRecord()->getRelationValue($relationshipName) - ->when(filled($orderColumn), fn (Collection $records) => $records->sortBy($orderColumn)) - ->mapWithKeys( - fn (Model $item): array => ["record-{$item[$relatedKeyName]}" => $item], - ); - } - - $relationshipQuery = $relationship->getQuery(); - - if ($relationship instanceof BelongsToMany) { - $relationshipQuery->select([ - $relationship->getTable() . '.*', - $relationshipQuery->getModel()->getTable() . '.*', - ]); - } - - if ($this->modifyRelationshipQueryUsing) { - $relationshipQuery = $this->evaluate($this->modifyRelationshipQueryUsing, [ - 'query' => $relationshipQuery, - ]) ?? $relationshipQuery; - } - - if (filled($orderColumn)) { - $relationshipQuery->orderBy($orderColumn); - } - - return $this->cachedExistingRecords = $relationshipQuery->get()->mapWithKeys( - fn (Model $item): array => ["record-{$item[$relatedKeyName]}" => $item], - ); - } - - public function getItemLabel(string $uuid): string | Htmlable | null - { - $container = $this->getChildComponentContainer($uuid); - - return $this->evaluate($this->itemLabel, [ - 'container' => $container, - 'state' => $container->getRawState(), - 'uuid' => $uuid, - ]); - } - - public function hasItemLabels(): bool - { - return $this->itemLabel !== null; - } - - public function simple(Field | Closure | null $field): static - { - $this->simpleField = $field; - - return $this; - } - - public function isSimple(): bool - { - return $this->simpleField !== null; - } - - public function getSimpleField(): ?Field - { - return $this->evaluate($this->simpleField)?->hiddenLabel(); - } - - public function clearCachedExistingRecords(): void - { - $this->cachedExistingRecords = null; - } - - public function getRelatedModel(): string - { - return $this->getRelationship()->getModel()::class; - } - - public function hasRelationship(): bool - { - return filled($this->getRelationshipName()); - } - - public function mutateRelationshipDataBeforeCreateUsing(?Closure $callback): static - { - $this->mutateRelationshipDataBeforeCreateUsing = $callback; - - return $this; - } - - /** - * @param array> $data - * @return array> | null - */ - public function mutateRelationshipDataBeforeCreate(array $data): ?array - { - if ($this->mutateRelationshipDataBeforeCreateUsing instanceof Closure) { - $data = $this->evaluate($this->mutateRelationshipDataBeforeCreateUsing, [ - 'data' => $data, - ]); - } - - return $data; - } - - public function mutateRelationshipDataBeforeSaveUsing(?Closure $callback): static - { - $this->mutateRelationshipDataBeforeSaveUsing = $callback; - - return $this; - } - - /** - * @param array> $data - * @return array> - */ - public function mutateRelationshipDataBeforeFill(array $data): array - { - if ($this->mutateRelationshipDataBeforeFillUsing instanceof Closure) { - $data = $this->evaluate($this->mutateRelationshipDataBeforeFillUsing, [ - 'data' => $data, - ]); - } - - return $data; - } - - public function mutateRelationshipDataBeforeFillUsing(?Closure $callback): static - { - $this->mutateRelationshipDataBeforeFillUsing = $callback; - - return $this; - } - - /** - * @param array> $data - * @return array> | null - */ - public function mutateRelationshipDataBeforeSave(array $data, Model $record): ?array - { - if ($this->mutateRelationshipDataBeforeSaveUsing instanceof Closure) { - $data = $this->evaluate( - $this->mutateRelationshipDataBeforeSaveUsing, - namedInjections: [ - 'data' => $data, - 'record' => $record, - ], - typedInjections: [ - Model::class => $record, - $record::class => $record, - ], - ); - } - - return $data; - } - - public function canConcealComponents(): bool - { - return $this->isCollapsible(); - } - - /** - * @return view-string - */ - public function getDefaultView(): string - { - if ($this->isSimple()) { - return 'filament-forms::components.repeater.simple'; - } - - return 'filament-forms::components.repeater.index'; - } - - public function getLabelBetweenItems(): ?string - { - return $this->evaluate($this->labelBetweenItems); - } - - public function isItemLabelTruncated(): bool - { - return (bool) $this->evaluate($this->isItemLabelTruncated); - } - - /** - * @return array - */ - public function getItemState(string $uuid): array - { - return $this->getChildComponentContainer($uuid)->getState(shouldCallHooksBefore: false); - } - - /** - * @return array - */ - public function getRawItemState(string $uuid): array - { - return $this->getChildComponentContainer($uuid)->getRawState(); - } -} diff --git a/vendor/filament/forms/src/Components/RichEditor.php b/vendor/filament/forms/src/Components/RichEditor.php deleted file mode 100644 index 70af8988..00000000 --- a/vendor/filament/forms/src/Components/RichEditor.php +++ /dev/null @@ -1,41 +0,0 @@ - - */ - protected array | Closure $toolbarButtons = [ - 'attachFiles', - 'blockquote', - 'bold', - 'bulletList', - 'codeBlock', - 'h2', - 'h3', - 'italic', - 'link', - 'orderedList', - 'redo', - 'strike', - 'underline', - 'undo', - ]; -} diff --git a/vendor/filament/forms/src/Components/Section.php b/vendor/filament/forms/src/Components/Section.php deleted file mode 100644 index 601acd36..00000000 --- a/vendor/filament/forms/src/Components/Section.php +++ /dev/null @@ -1,120 +0,0 @@ - | Htmlable | Closure | null $heading - */ - final public function __construct(string | array | Htmlable | Closure | null $heading = null) - { - is_array($heading) - ? $this->childComponents($heading) - : $this->heading($heading); - } - - /** - * @param string | array | Htmlable | Closure | null $heading - */ - public static function make(string | array | Htmlable | Closure | null $heading = null): static - { - $static = app(static::class, ['heading' => $heading]); - $static->configure(); - - return $static; - } - - protected function setUp(): void - { - parent::setUp(); - - $this->columnSpan('full'); - } - - public function aside(bool | Closure | null $condition = true): static - { - $this->isAside = $condition; - - return $this; - } - - public function getId(): ?string - { - $id = parent::getId(); - - if (filled($id)) { - return $id; - } - - $heading = $this->getHeading(); - - if (blank($heading)) { - return null; - } - - $id = Str::slug($heading); - - if ($statePath = $this->getStatePath()) { - $id = "{$statePath}.{$id}"; - } - - return $id; - } - - public function getKey(): ?string - { - return parent::getKey() ?? ($this->getActions() ? $this->getId() : null); - } - - public function canConcealComponents(): bool - { - return $this->isCollapsible(); - } - - public function isAside(): bool - { - return (bool) ($this->evaluate($this->isAside) ?? false); - } - - public function formBefore(bool | Closure $condition = true): static - { - $this->isFormBefore = $condition; - - return $this; - } - - public function isFormBefore(): bool - { - return (bool) $this->evaluate($this->isFormBefore); - } -} diff --git a/vendor/filament/forms/src/Components/Select.php b/vendor/filament/forms/src/Components/Select.php deleted file mode 100644 index d6e1d035..00000000 --- a/vendor/filament/forms/src/Components/Select.php +++ /dev/null @@ -1,1214 +0,0 @@ - | Closure | null - */ - protected array | Closure | null $createOptionActionForm = null; - - protected ?Closure $createOptionUsing = null; - - protected string | Closure | null $createOptionModalHeading = null; - - protected string | Closure | null $editOptionModalHeading = null; - - protected ?Closure $modifyCreateOptionActionUsing = null; - - protected ?Closure $modifyManageOptionActionsUsing = null; - - /** - * @var array | Closure | null - */ - protected array | Closure | null $editOptionActionForm = null; - - protected ?Closure $fillEditOptionActionFormUsing = null; - - protected ?Closure $updateOptionUsing = null; - - protected ?Closure $modifyEditOptionActionUsing = null; - - protected ?Model $cachedSelectedRecord = null; - - protected bool | Closure $isMultiple = false; - - protected bool | Closure $isNative = true; - - protected ?Closure $getOptionLabelUsing = null; - - protected ?Closure $getOptionLabelsUsing = null; - - protected ?Closure $getSearchResultsUsing = null; - - protected ?Closure $getSelectedRecordUsing = null; - - protected ?Closure $transformOptionsForJsUsing = null; - - /** - * @var array | null - */ - protected ?array $searchColumns = null; - - protected string | Closure | null $maxItemsMessage = null; - - protected string | Closure | null $relationshipTitleAttribute = null; - - protected string | Closure | null $position = null; - - protected ?Closure $getOptionLabelFromRecordUsing = null; - - protected string | Closure | null $relationship = null; - - protected int | Closure $optionsLimit = 50; - - protected bool | Closure | null $isSearchForcedCaseInsensitive = null; - - protected function setUp(): void - { - parent::setUp(); - - $this->default(static fn (Select $component): ?array => $component->isMultiple() ? [] : null); - - $this->afterStateHydrated(static function (Select $component, $state): void { - if (! $component->isMultiple()) { - return; - } - - if (is_array($state)) { - return; - } - - $component->state([]); - }); - - $this->getOptionLabelUsing(static function (Select $component, $value): ?string { - $options = $component->getOptions(); - - foreach ($options as $groupedOptions) { - if (! is_array($groupedOptions)) { - continue; - } - - if (! array_key_exists($value, $groupedOptions)) { - continue; - } - - return $groupedOptions[$value]; - } - - if (! array_key_exists($value, $options)) { - return $value; - } - - return $options[$value]; - }); - - $this->getOptionLabelsUsing(static function (Select $component, array $values): array { - $options = $component->getOptions(); - - $labels = []; - - foreach ($values as $value) { - foreach ($options as $groupedOptions) { - if (! is_array($groupedOptions)) { - continue; - } - - if (! array_key_exists($value, $groupedOptions)) { - continue; - } - - $labels[$value] = $groupedOptions[$value]; - - continue 2; - } - - $labels[$value] = $options[$value] ?? $value; - } - - return $labels; - }); - - $this->transformOptionsForJsUsing(static function (Select $component, array $options): array { - return collect($options) - ->map(fn ($label, $value): array => is_array($label) - ? ['label' => $value, 'choices' => $component->transformOptionsForJs($label)] - : ['label' => $label, 'value' => strval($value), 'disabled' => $component->isOptionDisabled($value, $label)]) - ->values() - ->all(); - }); - - $this->placeholder(static fn (Select $component): ?string => $component->isDisabled() ? null : __('filament-forms::components.select.placeholder')); - - $this->suffixActions([ - static fn (Select $component): ?Action => $component->getCreateOptionAction(), - static fn (Select $component): ?Action => $component->getEditOptionAction(), - ]); - } - - public function boolean(?string $trueLabel = null, ?string $falseLabel = null, ?string $placeholder = null): static - { - $this->options([ - 1 => $trueLabel ?? __('filament-forms::components.select.boolean.true'), - 0 => $falseLabel ?? __('filament-forms::components.select.boolean.false'), - ]); - - $this->placeholder($placeholder ?? '-'); - - return $this; - } - - public function createOptionAction(?Closure $callback): static - { - $this->modifyCreateOptionActionUsing = $callback; - - return $this; - } - - public function manageOptionActions(?Closure $callback): static - { - $this->modifyManageOptionActionsUsing = $callback; - - return $this; - } - - /** - * @param array | Closure | null $schema - */ - public function manageOptionForm(array | Closure | null $schema): static - { - $this->createOptionForm($schema); - $this->editOptionForm($schema); - - return $this; - } - - /** - * @param array | Closure | null $schema - */ - public function createOptionForm(array | Closure | null $schema): static - { - $this->createOptionActionForm = $schema; - - return $this; - } - - public function createOptionUsing(Closure $callback): static - { - $this->createOptionUsing = $callback; - - return $this; - } - - public function getCreateOptionUsing(): ?Closure - { - return $this->createOptionUsing; - } - - public function getCreateOptionActionName(): string - { - return 'createOption'; - } - - public function getCreateOptionAction(): ?Action - { - if ($this->isDisabled()) { - return null; - } - - if (! $this->hasCreateOptionActionFormSchema()) { - return null; - } - - $action = Action::make($this->getCreateOptionActionName()) - ->form(function (Select $component, Form $form): array | Form | null { - return $component->getCreateOptionActionForm($form->model( - $component->getRelationship() ? $component->getRelationship()->getModel()::class : null, - )); - }) - ->action(static function (Action $action, array $arguments, Select $component, array $data, ComponentContainer $form) { - if (! $component->getCreateOptionUsing()) { - throw new Exception("Select field [{$component->getStatePath()}] must have a [createOptionUsing()] closure set."); - } - - $createdOptionKey = $component->evaluate($component->getCreateOptionUsing(), [ - 'data' => $data, - 'form' => $form, - ]); - - $state = $component->isMultiple() - ? [ - ...$component->getState(), - $createdOptionKey, - ] - : $createdOptionKey; - - $component->state($state); - $component->callAfterStateUpdated(); - - if (! ($arguments['another'] ?? false)) { - return; - } - - $action->callAfter(); - - $form->fill(); - - $action->halt(); - }) - ->color('gray') - ->icon(FilamentIcon::resolve('forms::components.select.actions.create-option') ?? 'heroicon-m-plus') - ->iconButton() - ->modalHeading($this->getCreateOptionModalHeading() ?? __('filament-forms::components.select.actions.create_option.modal.heading')) - ->modalSubmitActionLabel(__('filament-forms::components.select.actions.create_option.modal.actions.create.label')) - ->extraModalFooterActions(fn (Action $action, Select $component): array => $component->isMultiple() ? [ - $action->makeModalSubmitAction('createAnother', arguments: ['another' => true]) - ->label(__('filament-forms::components.select.actions.create_option.modal.actions.create_another.label')), - ] : []); - - if ($this->modifyManageOptionActionsUsing) { - $action = $this->evaluate($this->modifyManageOptionActionsUsing, [ - 'action' => $action, - ]) ?? $action; - } - - if ($this->modifyCreateOptionActionUsing) { - $action = $this->evaluate($this->modifyCreateOptionActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function createOptionModalHeading(string | Closure | null $heading): static - { - $this->createOptionModalHeading = $heading; - - return $this; - } - - public function editOptionModalHeading(string | Closure | null $heading): static - { - $this->editOptionModalHeading = $heading; - - return $this; - } - - public function editOptionAction(?Closure $callback): static - { - $this->modifyEditOptionActionUsing = $callback; - - return $this; - } - - /** - * @return array | Form | null - */ - public function getCreateOptionActionForm(Form $form): array | Form | null - { - return $this->evaluate($this->createOptionActionForm, ['form' => $form]); - } - - public function hasCreateOptionActionFormSchema(): bool - { - return (bool) $this->createOptionActionForm; - } - - /** - * @return array | Form | null - */ - public function getEditOptionActionForm(Form $form): array | Form | null - { - return $this->evaluate($this->editOptionActionForm, ['form' => $form]); - } - - public function hasEditOptionActionFormSchema(): bool - { - return (bool) $this->editOptionActionForm; - } - - /** - * @param array | Closure | null $schema - */ - public function editOptionForm(array | Closure | null $schema): static - { - $this->editOptionActionForm = $schema; - $this->live(); - - return $this; - } - - public function updateOptionUsing(Closure $callback): static - { - $this->updateOptionUsing = $callback; - - return $this; - } - - public function getUpdateOptionUsing(): ?Closure - { - return $this->updateOptionUsing; - } - - public function getEditOptionActionName(): string - { - return 'editOption'; - } - - public function getEditOptionAction(): ?Action - { - if ($this->isDisabled()) { - return null; - } - - if ($this->isMultiple()) { - return null; - } - - if (blank($this->getState())) { - return null; - } - - if (! $this->hasEditOptionActionFormSchema()) { - return null; - } - - $action = Action::make($this->getEditOptionActionName()) - ->form(function (Select $component, Form $form): array | Form | null { - return $component->getEditOptionActionForm( - $form->model($component->getSelectedRecord()), - ); - }) - ->fillForm($this->getEditOptionActionFormData()) - ->action(static function (Action $action, array $arguments, Select $component, array $data, ComponentContainer $form) { - $statePath = $component->getStatePath(); - - if (! $component->getUpdateOptionUsing()) { - throw new Exception("Select field [{$statePath}] must have a [updateOptionUsing()] closure set."); - } - - $component->evaluate($component->getUpdateOptionUsing(), [ - 'data' => $data, - 'form' => $form, - ]); - - /** @var LivewireComponent $livewire */ - $livewire = $component->getLivewire(); - $livewire->dispatch('filament-forms::select.refreshSelectedOptionLabel', livewireId: $livewire->getId(), statePath: $statePath); - }) - ->color('gray') - ->icon(FilamentIcon::resolve('forms::components.select.actions.edit-option') ?? 'heroicon-m-pencil-square') - ->iconButton() - ->modalHeading($this->getEditOptionModalHeading() ?? __('filament-forms::components.select.actions.edit_option.modal.heading')) - ->modalSubmitActionLabel(__('filament-forms::components.select.actions.edit_option.modal.actions.save.label')); - - if ($this->modifyManageOptionActionsUsing) { - $action = $this->evaluate($this->modifyManageOptionActionsUsing, [ - 'action' => $action, - ]) ?? $action; - } - - if ($this->modifyEditOptionActionUsing) { - $action = $this->evaluate($this->modifyEditOptionActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - /** - * @return array - */ - public function getEditOptionActionFormData(): array - { - return $this->evaluate($this->fillEditOptionActionFormUsing); - } - - public function fillEditOptionActionFormUsing(?Closure $callback): static - { - $this->fillEditOptionActionFormUsing = $callback; - - return $this; - } - - public function getCreateOptionModalHeading(): ?string - { - return $this->evaluate($this->createOptionModalHeading); - } - - public function getEditOptionModalHeading(): ?string - { - return $this->evaluate($this->editOptionModalHeading); - } - - public function getOptionLabelUsing(?Closure $callback): static - { - $this->getOptionLabelUsing = $callback; - - return $this; - } - - public function getSelectedRecordUsing(?Closure $callback): static - { - $this->getSelectedRecordUsing = $callback; - - return $this; - } - - public function getOptionLabelsUsing(?Closure $callback): static - { - $this->getOptionLabelsUsing = $callback; - - return $this; - } - - public function getSearchResultsUsing(?Closure $callback): static - { - $this->getSearchResultsUsing = $callback; - - return $this; - } - - public function transformOptionsForJsUsing(?Closure $callback): static - { - $this->transformOptionsForJsUsing = $callback; - - return $this; - } - - /** - * @param bool | array | Closure $condition - */ - public function searchable(bool | array | Closure $condition = true): static - { - if (is_array($condition)) { - $this->isSearchable = true; - $this->searchColumns = $condition; - } else { - $this->isSearchable = $condition; - $this->searchColumns = null; - } - - return $this; - } - - public function multiple(bool | Closure $condition = true): static - { - $this->isMultiple = $condition; - - return $this; - } - - public function native(bool | Closure $condition = true): static - { - $this->isNative = $condition; - - return $this; - } - - public function position(string | Closure | null $position): static - { - $this->position = $position; - - return $this; - } - - public function maxItemsMessage(string | Closure | null $message): static - { - $this->maxItemsMessage = $message; - - return $this; - } - - public function optionsLimit(int | Closure $limit): static - { - $this->optionsLimit = $limit; - - return $this; - } - - public function getPosition(): ?string - { - return $this->evaluate($this->position); - } - - public function getOptionLabel(): ?string - { - return $this->evaluate($this->getOptionLabelUsing, [ - 'value' => fn (): mixed => $this->getState(), - ]); - } - - /** - * @return array - */ - public function getOptionLabels(): array - { - $labels = $this->evaluate($this->getOptionLabelsUsing, [ - 'values' => fn (): array => $this->getState(), - ]); - - if ($labels instanceof Arrayable) { - $labels = $labels->toArray(); - } - - return $labels; - } - - /** - * @return array - */ - public function getSearchColumns(): ?array - { - $columns = $this->searchColumns; - - if ($this->hasRelationship() && (filled($relationshipTitleAttribute = $this->getRelationshipTitleAttribute()))) { - $columns ??= [$relationshipTitleAttribute]; - } - - return $columns; - } - - /** - * @return array - */ - public function getSearchResults(string $search): array - { - if (! $this->getSearchResultsUsing) { - return []; - } - - $results = $this->evaluate($this->getSearchResultsUsing, [ - 'query' => $search, - 'search' => $search, - 'searchQuery' => $search, - ]); - - if ($results instanceof Arrayable) { - $results = $results->toArray(); - } - - return $results; - } - - /** - * @return array - */ - public function getSearchResultsForJs(string $search): array - { - return $this->transformOptionsForJs($this->getSearchResults($search)); - } - - /** - * @return array - */ - public function getOptionsForJs(): array - { - return $this->transformOptionsForJs($this->getOptions()); - } - - /** - * @return array - */ - public function getOptionLabelsForJs(): array - { - return $this->transformOptionsForJs($this->getOptionLabels()); - } - - /** - * @param array> $options - * @return array> - */ - protected function transformOptionsForJs(array $options): array - { - if (empty($options)) { - return []; - } - - $transformedOptions = $this->evaluate($this->transformOptionsForJsUsing, [ - 'options' => $options, - ]); - - if ($transformedOptions instanceof Arrayable) { - return $transformedOptions->toArray(); - } - - return $transformedOptions; - } - - public function isMultiple(): bool - { - return (bool) $this->evaluate($this->isMultiple); - } - - public function isNative(): bool - { - return (bool) $this->evaluate($this->isNative); - } - - public function isSearchable(): bool - { - return $this->evaluate($this->isSearchable) || $this->isMultiple(); - } - - public function relationship(string | Closure | null $name = null, string | Closure | null $titleAttribute = null, ?Closure $modifyQueryUsing = null, bool $ignoreRecord = false): static - { - $this->relationship = $name ?? $this->getName(); - $this->relationshipTitleAttribute = $titleAttribute; - - $this->getSearchResultsUsing(static function (Select $component, ?string $search) use ($modifyQueryUsing, $ignoreRecord): array { - $relationship = Relation::noConstraints(fn () => $component->getRelationship()); - - $relationshipQuery = app(RelationshipJoiner::class)->prepareQueryForNoConstraints($relationship); - - if ($ignoreRecord && ($record = $component->getRecord())) { - $relationshipQuery->where($record->getQualifiedKeyName(), '!=', $record->getKey()); - } - - if ($modifyQueryUsing) { - $relationshipQuery = $component->evaluate($modifyQueryUsing, [ - 'query' => $relationshipQuery, - ]) ?? $relationshipQuery; - } - - $component->applySearchConstraint( - $relationshipQuery, - generate_search_term_expression($search, $component->isSearchForcedCaseInsensitive(), $relationshipQuery->getConnection()), - ); - - $baseRelationshipQuery = $relationshipQuery->getQuery(); - - if (isset($baseRelationshipQuery->limit)) { - $component->optionsLimit($baseRelationshipQuery->limit); - } else { - $relationshipQuery->limit($component->getOptionsLimit()); - } - - $qualifiedRelatedKeyName = $component->getQualifiedRelatedKeyNameForRelationship($relationship); - - if ($component->hasOptionLabelFromRecordUsingCallback()) { - return $relationshipQuery - ->get() - ->mapWithKeys(static fn (Model $record) => [ - $record->{Str::afterLast($qualifiedRelatedKeyName, '.')} => $component->getOptionLabelFromRecord($record), - ]) - ->toArray(); - } - - $relationshipTitleAttribute = $component->getRelationshipTitleAttribute(); - - if (empty($relationshipQuery->getQuery()->orders)) { - $relationshipQuery->orderBy($relationshipQuery->qualifyColumn($relationshipTitleAttribute)); - } - - if (str_contains($relationshipTitleAttribute, '->')) { - if (! str_contains($relationshipTitleAttribute, ' as ')) { - $relationshipTitleAttribute .= " as {$relationshipTitleAttribute}"; - } - } else { - $relationshipTitleAttribute = $relationshipQuery->qualifyColumn($relationshipTitleAttribute); - } - - return $relationshipQuery - ->pluck($relationshipTitleAttribute, $qualifiedRelatedKeyName) - ->toArray(); - }); - - $this->options(static function (Select $component) use ($modifyQueryUsing, $ignoreRecord): ?array { - if (($component->isSearchable()) && ! $component->isPreloaded()) { - return null; - } - - $relationship = Relation::noConstraints(fn () => $component->getRelationship()); - - $relationshipQuery = app(RelationshipJoiner::class)->prepareQueryForNoConstraints($relationship); - - if ($ignoreRecord && ($record = $component->getRecord())) { - $relationshipQuery->where($record->getQualifiedKeyName(), '!=', $record->getKey()); - } - - if ($modifyQueryUsing) { - $relationshipQuery = $component->evaluate($modifyQueryUsing, [ - 'query' => $relationshipQuery, - ]) ?? $relationshipQuery; - } - - $qualifiedRelatedKeyName = $component->getQualifiedRelatedKeyNameForRelationship($relationship); - - if ($component->hasOptionLabelFromRecordUsingCallback()) { - return $relationshipQuery - ->get() - ->mapWithKeys(static fn (Model $record) => [ - $record->{Str::afterLast($qualifiedRelatedKeyName, '.')} => $component->getOptionLabelFromRecord($record), - ]) - ->toArray(); - } - - $relationshipTitleAttribute = $component->getRelationshipTitleAttribute(); - - if (empty($relationshipQuery->getQuery()->orders)) { - $relationshipQuery->orderBy($relationshipQuery->qualifyColumn($relationshipTitleAttribute)); - } - - if (str_contains($relationshipTitleAttribute, '->')) { - if (! str_contains($relationshipTitleAttribute, ' as ')) { - $relationshipTitleAttribute .= " as {$relationshipTitleAttribute}"; - } - } else { - $relationshipTitleAttribute = $relationshipQuery->qualifyColumn($relationshipTitleAttribute); - } - - return $relationshipQuery - ->pluck($relationshipTitleAttribute, $qualifiedRelatedKeyName) - ->toArray(); - }); - - $this->loadStateFromRelationshipsUsing(static function (Select $component, $state): void { - if (filled($state)) { - return; - } - - $relationship = $component->getRelationship(); - - if ($relationship instanceof BelongsToMany) { - /** @var Collection $relatedModels */ - $relatedModels = $relationship->getResults(); - - $component->state( - // Cast the related keys to a string, otherwise JavaScript does not - // know how to handle deselection. - // - // https://github.com/filamentphp/filament/issues/1111 - $relatedModels - ->pluck($relationship->getRelatedKeyName()) - ->map(static fn ($key): string => strval($key)) - ->toArray(), - ); - - return; - } - - if ( - ($relationship instanceof HasOneThrough) || - ($relationship instanceof \Znck\Eloquent\Relations\BelongsToThrough) - ) { - $relatedModel = $relationship->getResults(); - - $component->state( - $relatedModel->getAttribute( - $relationship->getRelated()->getKeyName(), - ), - ); - - return; - } - - /** @var BelongsTo $relationship */ - $relatedModel = $relationship->getResults(); - - if (! $relatedModel) { - return; - } - - $component->state( - $relatedModel->getAttribute( - $relationship->getOwnerKeyName(), - ), - ); - }); - - $this->getOptionLabelUsing(static function (Select $component) { - $record = $component->getSelectedRecord(); - - if (! $record) { - return null; - } - - if ($component->hasOptionLabelFromRecordUsingCallback()) { - return $component->getOptionLabelFromRecord($record); - } - - return $record->getAttributeValue($component->getRelationshipTitleAttribute()); - }); - - $this->getSelectedRecordUsing(static function (Select $component, $state) use ($modifyQueryUsing): ?Model { - $relationship = Relation::noConstraints(fn () => $component->getRelationship()); - - $relationshipQuery = app(RelationshipJoiner::class)->prepareQueryForNoConstraints($relationship); - - $relationshipQuery->where($component->getQualifiedRelatedKeyNameForRelationship($relationship), $state); - - if ($modifyQueryUsing) { - $relationshipQuery = $component->evaluate($modifyQueryUsing, [ - 'query' => $relationshipQuery, - ]) ?? $relationshipQuery; - } - - return $relationshipQuery->first(); - }); - - $this->getOptionLabelsUsing(static function (Select $component, array $values) use ($modifyQueryUsing): array { - $relationship = Relation::noConstraints(fn () => $component->getRelationship()); - - $relationshipQuery = app(RelationshipJoiner::class)->prepareQueryForNoConstraints($relationship); - - $qualifiedRelatedKeyName = $component->getQualifiedRelatedKeyNameForRelationship($relationship); - - $relationshipQuery->whereIn($qualifiedRelatedKeyName, $values); - - if ($modifyQueryUsing) { - $relationshipQuery = $component->evaluate($modifyQueryUsing, [ - 'query' => $relationshipQuery, - ]) ?? $relationshipQuery; - } - - if ($component->hasOptionLabelFromRecordUsingCallback()) { - return $relationshipQuery - ->get() - ->mapWithKeys(static fn (Model $record) => [ - $record->{Str::afterLast($qualifiedRelatedKeyName, '.')} => $component->getOptionLabelFromRecord($record), - ]) - ->toArray(); - } - - $relationshipTitleAttribute = $component->getRelationshipTitleAttribute(); - - if (str_contains($relationshipTitleAttribute, '->')) { - if (! str_contains($relationshipTitleAttribute, ' as ')) { - $relationshipTitleAttribute .= " as {$relationshipTitleAttribute}"; - } - } else { - $relationshipTitleAttribute = $relationshipQuery->qualifyColumn($relationshipTitleAttribute); - } - - return $relationshipQuery - ->pluck($relationshipTitleAttribute, $qualifiedRelatedKeyName) - ->toArray(); - }); - - $this->rule( - static function (Select $component): Exists { - $relationship = $component->getRelationship(); - - return Rule::exists( - $relationship->getModel()::class, - $component->getQualifiedRelatedKeyNameForRelationship($relationship), - ); - }, - static function (Select $component): bool { - $relationship = $component->getRelationship(); - - if (! ( - $relationship instanceof BelongsTo || - $relationship instanceof \Znck\Eloquent\Relations\BelongsToThrough - )) { - return false; - } - - return ! $component->isMultiple(); - }, - ); - - $this->saveRelationshipsUsing(static function (Select $component, Model $record, $state) { - $relationship = $component->getRelationship(); - - if (! $relationship instanceof BelongsToMany) { - $relationship->associate($state); - - return; - } - - $relationship->sync($state ?? []); - }); - - $this->createOptionUsing(static function (Select $component, array $data, Form $form) { - $record = $component->getRelationship()->getRelated(); - $record->fill($data); - $record->save(); - - $form->model($record)->saveRelationships(); - - return $record->getKey(); - }); - - $this->fillEditOptionActionFormUsing(static function (Select $component): ?array { - return $component->getSelectedRecord()?->attributesToArray(); - }); - - $this->updateOptionUsing(static function (array $data, Form $form) { - $form->getRecord()?->update($data); - }); - - $this->dehydrated(fn (Select $component): bool => ! $component->isMultiple()); - - return $this; - } - - protected function applySearchConstraint(Builder $query, string $search): Builder - { - /** @var Connection $databaseConnection */ - $databaseConnection = $query->getConnection(); - - $isForcedCaseInsensitive = $this->isSearchForcedCaseInsensitive(); - - $query->where(function (Builder $query) use ($databaseConnection, $isForcedCaseInsensitive, $search): Builder { - $isFirst = true; - - foreach ($this->getSearchColumns() as $searchColumn) { - $whereClause = $isFirst ? 'where' : 'orWhere'; - - $query->{$whereClause}( - generate_search_column_expression($searchColumn, $isForcedCaseInsensitive, $databaseConnection), - 'like', - "%{$search}%", - ); - - $isFirst = false; - } - - return $query; - }); - - return $query; - } - - public function getOptionLabelFromRecordUsing(?Closure $callback): static - { - $this->getOptionLabelFromRecordUsing = $callback; - - return $this; - } - - public function hasOptionLabelFromRecordUsingCallback(): bool - { - return $this->getOptionLabelFromRecordUsing !== null; - } - - public function getOptionLabelFromRecord(Model $record): string - { - return $this->evaluate( - $this->getOptionLabelFromRecordUsing, - namedInjections: [ - 'record' => $record, - ], - typedInjections: [ - Model::class => $record, - $record::class => $record, - ], - ); - } - - public function getRelationshipTitleAttribute(): ?string - { - return $this->evaluate($this->relationshipTitleAttribute); - } - - public function getLabel(): string | Htmlable | null - { - if ($this->label === null && $this->hasRelationship()) { - $label = (string) str($this->getRelationshipName()) - ->before('.') - ->kebab() - ->replace(['-', '_'], ' ') - ->ucfirst(); - - return ($this->shouldTranslateLabel) ? __($label) : $label; - } - - return parent::getLabel(); - } - - public function getRelationship(): BelongsTo | BelongsToMany | HasOneOrMany | HasOneThrough | \Znck\Eloquent\Relations\BelongsToThrough | null - { - if (blank($this->getRelationshipName())) { - return null; - } - - $record = $this->getModelInstance(); - - $relationship = null; - - foreach (explode('.', $this->getRelationshipName()) as $nestedRelationshipName) { - if (! $record->isRelation($nestedRelationshipName)) { - $relationship = null; - - break; - } - - $relationship = $record->{$nestedRelationshipName}(); - $record = $relationship->getRelated(); - } - - return $relationship; - } - - public function getRelationshipName(): ?string - { - return $this->evaluate($this->relationship); - } - - public function getSelectedRecord(): ?Model - { - if ($this->cachedSelectedRecord) { - return $this->cachedSelectedRecord; - } - - if (blank($this->getState())) { - return null; - } - - return $this->cachedSelectedRecord = $this->evaluate($this->getSelectedRecordUsing); - } - - public function hasRelationship(): bool - { - return filled($this->getRelationshipName()); - } - - public function hasDynamicOptions(): bool - { - if ($this->hasDynamicDisabledOptions()) { - return true; - } - - if ($this->hasRelationship()) { - return $this->isPreloaded(); - } - - return $this->options instanceof Closure; - } - - public function hasDynamicSearchResults(): bool - { - if ($this->hasRelationship() && empty($this->searchColumns)) { - return ! $this->isPreloaded(); - } - - return $this->getSearchResultsUsing instanceof Closure; - } - - public function getActionFormModel(): Model | string | null - { - if ($this->hasRelationship()) { - return $this->getRelationship()->getModel()::class; - } - - return parent::getActionFormModel(); - } - - public function getOptionsLimit(): int - { - return $this->evaluate($this->optionsLimit); - } - - public function getMaxItemsMessage(): string - { - $maxItems = $this->getMaxItems(); - - return $this->evaluate($this->maxItemsMessage) ?? trans_choice('filament-forms::components.select.max_items_message', $maxItems, [ - ':count' => $maxItems, - ]); - } - - public function forceSearchCaseInsensitive(bool | Closure | null $condition = true): static - { - $this->isSearchForcedCaseInsensitive = $condition; - - return $this; - } - - public function isSearchForcedCaseInsensitive(): ?bool - { - return $this->evaluate($this->isSearchForcedCaseInsensitive); - } - - public function hydrateDefaultState(?array &$hydratedDefaultState): void - { - parent::hydrateDefaultState($hydratedDefaultState); - - if (is_bool($state = $this->getState())) { - $state = $state ? 1 : 0; - - $this->state($state); - - if (is_array($hydratedDefaultState)) { - Arr::set($hydratedDefaultState, $this->getStatePath(), $state); - } - } - } - - protected function getQualifiedRelatedKeyNameForRelationship(Relation $relationship): string - { - if ($relationship instanceof BelongsToMany) { - return $relationship->getQualifiedRelatedKeyName(); - } - - if ($relationship instanceof HasOneThrough) { - return $relationship->getQualifiedForeignKeyName(); - } - - if ( - ($relationship instanceof HasOneOrMany) || - ($relationship instanceof \Znck\Eloquent\Relations\BelongsToThrough) - ) { - return $relationship->getRelated()->getQualifiedKeyName(); - } - - /** @var BelongsTo $relationship */ - - return $relationship->getQualifiedOwnerKeyName(); - } -} diff --git a/vendor/filament/forms/src/Components/Split.php b/vendor/filament/forms/src/Components/Split.php deleted file mode 100644 index a55170cd..00000000 --- a/vendor/filament/forms/src/Components/Split.php +++ /dev/null @@ -1,38 +0,0 @@ - | Closure $schema - */ - final public function __construct(array | Closure $schema) - { - $this->schema($schema); - } - - /** - * @param array | Closure $schema - */ - public static function make(array | Closure $schema): static - { - $static = app(static::class, ['schema' => $schema]); - $static->configure(); - - return $static; - } -} diff --git a/vendor/filament/forms/src/Components/Tabs.php b/vendor/filament/forms/src/Components/Tabs.php deleted file mode 100644 index 80a7e2be..00000000 --- a/vendor/filament/forms/src/Components/Tabs.php +++ /dev/null @@ -1,87 +0,0 @@ -label($label); - } - - public static function make(?string $label = null): static - { - $static = app(static::class, ['label' => $label]); - $static->configure(); - - return $static; - } - - /** - * @param array | Closure $tabs - */ - public function tabs(array | Closure $tabs): static - { - $this->childComponents($tabs); - - return $this; - } - - public function activeTab(int | Closure $activeTab): static - { - $this->activeTab = $activeTab; - - return $this; - } - - public function persistTabInQueryString(string | Closure | null $key = 'tab'): static - { - $this->tabQueryStringKey = $key; - - return $this; - } - - public function getActiveTab(): int - { - if ($this->isTabPersistedInQueryString()) { - $queryStringTab = request()->query($this->getTabQueryStringKey()); - - foreach ($this->getChildComponentContainer()->getComponents() as $index => $tab) { - if ($tab->getId() !== $queryStringTab) { - continue; - } - - return $index + 1; - } - } - - return $this->evaluate($this->activeTab); - } - - public function getTabQueryStringKey(): ?string - { - return $this->evaluate($this->tabQueryStringKey); - } - - public function isTabPersistedInQueryString(): bool - { - return filled($this->getTabQueryStringKey()); - } -} diff --git a/vendor/filament/forms/src/Components/Tabs/Tab.php b/vendor/filament/forms/src/Components/Tabs/Tab.php deleted file mode 100644 index 30ff33ef..00000000 --- a/vendor/filament/forms/src/Components/Tabs/Tab.php +++ /dev/null @@ -1,52 +0,0 @@ -label($label); - $this->id(Str::slug($label)); - } - - public static function make(string $label): static - { - $static = app(static::class, ['label' => $label]); - $static->configure(); - - return $static; - } - - public function getId(): string - { - return $this->getContainer()->getParentComponent()->getId() . '-' . parent::getId() . '-tab'; - } - - /** - * @return array - */ - public function getColumnsConfig(): array - { - return $this->columns ?? $this->getContainer()->getColumnsConfig(); - } - - public function canConcealComponents(): bool - { - return true; - } -} diff --git a/vendor/filament/forms/src/Components/TagsInput.php b/vendor/filament/forms/src/Components/TagsInput.php deleted file mode 100644 index 9b9b0276..00000000 --- a/vendor/filament/forms/src/Components/TagsInput.php +++ /dev/null @@ -1,171 +0,0 @@ - | Closure - */ - protected array | Closure $splitKeys = []; - - /** - * @var array | Arrayable | Closure | null - */ - protected array | Arrayable | Closure | null $suggestions = null; - - protected string | Closure | null $tagPrefix = null; - - protected string | Closure | null $tagSuffix = null; - - protected function setUp(): void - { - parent::setUp(); - - $this->default([]); - - $this->afterStateHydrated(static function (TagsInput $component, $state): void { - if (is_array($state)) { - return; - } - - if (! ($separator = $component->getSeparator())) { - $component->state([]); - - return; - } - - $state = explode($separator, $state ?? ''); - - if (count($state) === 1 && blank($state[0])) { - $state = []; - } - - $component->state($state); - }); - - $this->dehydrateStateUsing(static function (TagsInput $component, $state) { - if ($separator = $component->getSeparator()) { - return implode($separator, $state); - } - - return $state; - }); - - $this->placeholder(__('filament-forms::components.tags_input.placeholder')); - - $this->reorderAnimationDuration(100); - } - - public function tagPrefix(string | Closure | null $prefix): static - { - $this->tagPrefix = $prefix; - - return $this; - } - - public function tagSuffix(string | Closure | null $suffix): static - { - $this->tagSuffix = $suffix; - - return $this; - } - - public function reorderable(bool | Closure $condition = true): static - { - $this->isReorderable = $condition; - - return $this; - } - - public function separator(string | Closure | null $separator = ','): static - { - $this->separator = $separator; - - return $this; - } - - /** - * @param array | Closure $keys - */ - public function splitKeys(array | Closure $keys): static - { - $this->splitKeys = $keys; - - return $this; - } - - /** - * @param array | Arrayable | Closure $suggestions - */ - public function suggestions(array | Arrayable | Closure $suggestions): static - { - $this->suggestions = $suggestions; - - return $this; - } - - public function getTagPrefix(): ?string - { - return $this->evaluate($this->tagPrefix); - } - - public function getTagSuffix(): ?string - { - return $this->evaluate($this->tagSuffix); - } - - public function getSeparator(): ?string - { - return $this->evaluate($this->separator); - } - - /** - * @return array - */ - public function getSplitKeys(): array - { - return $this->evaluate($this->splitKeys) ?? []; - } - - /** - * @return array - */ - public function getSuggestions(): array - { - $suggestions = $this->evaluate($this->suggestions ?? []); - - if ($suggestions instanceof Arrayable) { - $suggestions = $suggestions->toArray(); - } - - return $suggestions; - } - - public function isReorderable(): bool - { - return (bool) $this->evaluate($this->isReorderable); - } -} diff --git a/vendor/filament/forms/src/Components/TextInput.php b/vendor/filament/forms/src/Components/TextInput.php deleted file mode 100644 index 8741e940..00000000 --- a/vendor/filament/forms/src/Components/TextInput.php +++ /dev/null @@ -1,262 +0,0 @@ -rule('current_password', $condition); - - return $this; - } - - public function email(bool | Closure $condition = true): static - { - $this->isEmail = $condition; - - $this->rule('email', $condition); - - return $this; - } - - public function integer(bool | Closure $condition = true): static - { - $this->numeric($condition); - $this->inputMode(static fn (): ?string => $condition ? 'numeric' : null); - $this->step(static fn (): ?int => $condition ? 1 : null); - $this->rule('integer', $condition); - - return $this; - } - - public function mask(string | RawJs | Closure | null $mask): static - { - $this->mask = $mask; - - return $this; - } - - /** - * @param scalar | Closure | null $value - */ - public function maxValue($value): static - { - $this->maxValue = $value; - - $this->rule(static function (TextInput $component): string { - $value = $component->getMaxValue(); - - return "max:{$value}"; - }, static fn (TextInput $component): bool => filled($component->getMaxValue())); - - return $this; - } - - /** - * @param scalar | Closure | null $value - */ - public function minValue($value): static - { - $this->minValue = $value; - - $this->rule(static function (TextInput $component): string { - $value = $component->getMinValue(); - - return "min:{$value}"; - }, static fn (TextInput $component): bool => filled($component->getMinValue())); - - return $this; - } - - public function numeric(bool | Closure $condition = true): static - { - $this->isNumeric = $condition; - - $this->inputMode(static fn (): ?string => $condition ? 'decimal' : null); - $this->rule('numeric', $condition); - $this->step(static fn (): ?string => $condition ? 'any' : null); - - return $this; - } - - public function password(bool | Closure $condition = true): static - { - $this->isPassword = $condition; - - return $this; - } - - public function revealable(bool | Closure $condition = true): static - { - $this->isRevealable = $condition; - $this->suffixActions([ - TextInput\Actions\ShowPasswordAction::make()->visible($condition), - TextInput\Actions\HidePasswordAction::make()->visible($condition), - ]); - - return $this; - } - - public function isPasswordRevealable(): bool - { - if (! $this->evaluate($this->isRevealable)) { - return false; - } - - return $this->isPassword() ?: throw new Exception("The text input [{$this->getStatePath()}] is not a [password()], so it cannot be [revealable()]."); - } - - public function tel(bool | Closure $condition = true): static - { - $this->isTel = $condition; - - $this->regex(static fn (TextInput $component) => $component->evaluate($condition) ? $component->getTelRegex() : null); - - return $this; - } - - public function telRegex(string | Closure | null $regex): static - { - $this->telRegex = $regex; - - return $this; - } - - public function type(string | Closure | null $type): static - { - $this->type = $type; - - return $this; - } - - public function url(bool | Closure $condition = true): static - { - $this->isUrl = $condition; - - $this->rule('url', $condition); - - return $this; - } - - public function getMask(): string | RawJs | null - { - return $this->evaluate($this->mask); - } - - /** - * @return scalar | null - */ - public function getMaxValue() - { - return $this->evaluate($this->maxValue); - } - - /** - * @return scalar | null - */ - public function getMinValue() - { - return $this->evaluate($this->minValue); - } - - public function getType(): string - { - if ($type = $this->evaluate($this->type)) { - return $type; - } elseif ($this->isEmail()) { - return 'email'; - } elseif ($this->isNumeric()) { - return 'number'; - } elseif ($this->isPassword()) { - return 'password'; - } elseif ($this->isTel()) { - return 'tel'; - } elseif ($this->isUrl()) { - return 'url'; - } - - return 'text'; - } - - public function getTelRegex(): string - { - return $this->evaluate($this->telRegex) ?? '/^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\.\/0-9]*$/'; - } - - public function isEmail(): bool - { - return (bool) $this->evaluate($this->isEmail); - } - - public function isNumeric(): bool - { - return (bool) $this->evaluate($this->isNumeric); - } - - public function isPassword(): bool - { - return (bool) $this->evaluate($this->isPassword); - } - - public function isTel(): bool - { - return (bool) $this->evaluate($this->isTel); - } - - public function isUrl(): bool - { - return (bool) $this->evaluate($this->isUrl); - } -} diff --git a/vendor/filament/forms/src/Components/TextInput/Actions/HidePasswordAction.php b/vendor/filament/forms/src/Components/TextInput/Actions/HidePasswordAction.php deleted file mode 100644 index a8785399..00000000 --- a/vendor/filament/forms/src/Components/TextInput/Actions/HidePasswordAction.php +++ /dev/null @@ -1,32 +0,0 @@ -label(__('filament-forms::components.text_input.actions.hide_password.label')); - - $this->icon(FilamentIcon::resolve('forms::components.text-input.actions.hide-password') ?? 'heroicon-m-eye-slash'); - - $this->color('gray'); - - $this->extraAttributes([ - 'x-cloak' => true, - 'x-show' => 'isPasswordRevealed', - ]); - - $this->alpineClickHandler('isPasswordRevealed = false'); - } -} diff --git a/vendor/filament/forms/src/Components/TextInput/Actions/ShowPasswordAction.php b/vendor/filament/forms/src/Components/TextInput/Actions/ShowPasswordAction.php deleted file mode 100644 index 28533fda..00000000 --- a/vendor/filament/forms/src/Components/TextInput/Actions/ShowPasswordAction.php +++ /dev/null @@ -1,31 +0,0 @@ -label(__('filament-forms::components.text_input.actions.show_password.label')); - - $this->icon(FilamentIcon::resolve('forms::components.text-input.actions.show-password') ?? 'heroicon-m-eye'); - - $this->color('gray'); - - $this->extraAttributes([ - 'x-show' => '! isPasswordRevealed', - ]); - - $this->alpineClickHandler('isPasswordRevealed = true'); - } -} diff --git a/vendor/filament/forms/src/Components/Textarea.php b/vendor/filament/forms/src/Components/Textarea.php deleted file mode 100644 index bc4cf6f0..00000000 --- a/vendor/filament/forms/src/Components/Textarea.php +++ /dev/null @@ -1,63 +0,0 @@ -shouldAutosize = $condition; - - return $this; - } - - public function cols(int | Closure | null $cols): static - { - $this->cols = $cols; - - return $this; - } - - public function rows(int | Closure | null $rows): static - { - $this->rows = $rows; - - return $this; - } - - public function getCols(): ?int - { - return $this->evaluate($this->cols); - } - - public function getRows(): ?int - { - return $this->evaluate($this->rows); - } - - public function shouldAutosize(): bool - { - return (bool) $this->evaluate($this->shouldAutosize); - } -} diff --git a/vendor/filament/forms/src/Components/TimePicker.php b/vendor/filament/forms/src/Components/TimePicker.php deleted file mode 100644 index edf96aee..00000000 --- a/vendor/filament/forms/src/Components/TimePicker.php +++ /dev/null @@ -1,11 +0,0 @@ -default(false); - - $this->afterStateHydrated(static function (Toggle $component, $state): void { - $component->state((bool) $state); - }); - - $this->rule('boolean'); - } -} diff --git a/vendor/filament/forms/src/Components/ToggleButtons.php b/vendor/filament/forms/src/Components/ToggleButtons.php deleted file mode 100644 index 8f12723a..00000000 --- a/vendor/filament/forms/src/Components/ToggleButtons.php +++ /dev/null @@ -1,96 +0,0 @@ -default(fn (ToggleButtons $component): mixed => $component->isMultiple() ? [] : null); - } - - public function grouped(): static - { - return $this->view(static::GROUPED_VIEW); - } - - public function boolean(?string $trueLabel = null, ?string $falseLabel = null): static - { - $this->options([ - 1 => $trueLabel ?? __('filament-forms::components.toggle_buttons.boolean.true'), - 0 => $falseLabel ?? __('filament-forms::components.toggle_buttons.boolean.false'), - ]); - - $this->colors([ - 1 => 'success', - 0 => 'danger', - ]); - - $this->icons([ - 1 => FilamentIcon::resolve('forms::components.toggle-buttons.boolean.true') ?? 'heroicon-m-check', - 0 => FilamentIcon::resolve('forms::components.toggle-buttons.boolean.false') ?? 'heroicon-m-x-mark', - ]); - - return $this; - } - - public function inline(bool | Closure $condition = true): static - { - $this->isInline = $condition; - - return $this; - } - - public function isInline(): bool - { - return (bool) $this->evaluate($this->isInline); - } - - public function multiple(bool | Closure $condition = true): static - { - $this->isMultiple = $condition; - - return $this; - } - - public function isMultiple(): bool - { - return (bool) $this->evaluate($this->isMultiple); - } - - public function getDefaultState(): mixed - { - $state = parent::getDefaultState(); - - if (is_bool($state)) { - return $state ? 1 : 0; - } - - return $state; - } -} diff --git a/vendor/filament/forms/src/Components/View.php b/vendor/filament/forms/src/Components/View.php deleted file mode 100644 index 8fa262bb..00000000 --- a/vendor/filament/forms/src/Components/View.php +++ /dev/null @@ -1,25 +0,0 @@ -view($view); - } - - /** - * @param view-string $view - */ - public static function make(string $view): static - { - $static = app(static::class, ['view' => $view]); - $static->configure(); - - return $static; - } -} diff --git a/vendor/filament/forms/src/Components/ViewField.php b/vendor/filament/forms/src/Components/ViewField.php deleted file mode 100644 index 03bc7e43..00000000 --- a/vendor/filament/forms/src/Components/ViewField.php +++ /dev/null @@ -1,7 +0,0 @@ - | Closure $steps - */ - final public function __construct(array | Closure $steps = []) - { - $this->steps($steps); - } - - /** - * @param array | Closure $steps - */ - public static function make(array | Closure $steps = []): static - { - $static = app(static::class, ['steps' => $steps]); - $static->configure(); - - return $static; - } - - protected function setUp(): void - { - parent::setUp(); - - $this->registerActions([ - fn (Wizard $component): Action => $component->getNextAction(), - fn (Wizard $component): Action => $component->getPreviousAction(), - ]); - - $this->registerListeners([ - 'wizard::nextStep' => [ - function (Wizard $component, string $statePath, int $currentStepIndex): void { - if ($statePath !== $component->getStatePath()) { - return; - } - - if (! $component->isSkippable()) { - /** @var Step $currentStep */ - $currentStep = array_values( - $component - ->getChildComponentContainer() - ->getComponents() - )[$currentStepIndex]; - - $currentStep->callBeforeValidation(); - $currentStep->getChildComponentContainer()->validate(); - $currentStep->callAfterValidation(); - } - - /** @var LivewireComponent $livewire */ - $livewire = $component->getLivewire(); - $livewire->dispatch('next-wizard-step', statePath: $statePath); - }, - ], - ]); - } - - public function getNextAction(): Action - { - $action = Action::make($this->getNextActionName()) - ->label(__('filament-forms::components.wizard.actions.next_step.label')) - ->iconPosition(IconPosition::After) - ->livewireClickHandlerEnabled(false) - ->livewireTarget('dispatchFormEvent') - ->button(); - - if ($this->modifyNextActionUsing) { - $action = $this->evaluate($this->modifyNextActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function nextAction(?Closure $callback): static - { - $this->modifyNextActionUsing = $callback; - - return $this; - } - - public function getNextActionName(): string - { - return 'next'; - } - - public function getPreviousAction(): Action - { - $action = Action::make($this->getPreviousActionName()) - ->label(__('filament-forms::components.wizard.actions.previous_step.label')) - ->color('gray') - ->livewireClickHandlerEnabled(false) - ->button(); - - if ($this->modifyPreviousActionUsing) { - $action = $this->evaluate($this->modifyPreviousActionUsing, [ - 'action' => $action, - ]) ?? $action; - } - - return $action; - } - - public function previousAction(?Closure $callback): static - { - $this->modifyPreviousActionUsing = $callback; - - return $this; - } - - public function getPreviousActionName(): string - { - return 'previous'; - } - - /** - * @param array | Closure $steps - */ - public function steps(array | Closure $steps): static - { - $this->childComponents($steps); - - return $this; - } - - public function startOnStep(int | Closure $startStep): static - { - $this->startStep = $startStep; - - return $this; - } - - public function cancelAction(string | Htmlable | null $action): static - { - $this->cancelAction = $action; - - return $this; - } - - public function submitAction(string | Htmlable | null $action): static - { - $this->submitAction = $action; - - return $this; - } - - public function skippable(bool | Closure $condition = true): static - { - $this->skippable = $condition; - - return $this; - } - - public function persistStepInQueryString(string | Closure | null $key = 'step'): static - { - $this->stepQueryStringKey = $key; - - return $this; - } - - public function getCancelAction(): string | Htmlable | null - { - return $this->cancelAction; - } - - public function getSubmitAction(): string | Htmlable | null - { - return $this->submitAction; - } - - public function getStartStep(): int - { - if ($this->isStepPersistedInQueryString()) { - $queryStringStep = request()->query($this->getStepQueryStringKey()); - - foreach ($this->getChildComponents() as $index => $step) { - if ($step->getId() !== $queryStringStep) { - continue; - } - - return $index + 1; - } - } - - return $this->evaluate($this->startStep); - } - - public function getStepQueryStringKey(): ?string - { - return $this->evaluate($this->stepQueryStringKey); - } - - public function isSkippable(): bool - { - return (bool) $this->evaluate($this->skippable); - } - - public function isStepPersistedInQueryString(): bool - { - return filled($this->getStepQueryStringKey()); - } -} diff --git a/vendor/filament/forms/src/Components/Wizard/Step.php b/vendor/filament/forms/src/Components/Wizard/Step.php deleted file mode 100644 index 7bfc0b52..00000000 --- a/vendor/filament/forms/src/Components/Wizard/Step.php +++ /dev/null @@ -1,109 +0,0 @@ -label($label); - $this->id(Str::slug($label)); - } - - public static function make(string $label): static - { - $static = app(static::class, ['label' => $label]); - $static->configure(); - - return $static; - } - - public function afterValidation(?Closure $callback): static - { - $this->afterValidation = $callback; - - return $this; - } - - /** - * @deprecated Use `afterValidation()` instead. - */ - public function afterValidated(?Closure $callback): static - { - $this->afterValidation($callback); - - return $this; - } - - public function beforeValidation(?Closure $callback): static - { - $this->beforeValidation = $callback; - - return $this; - } - - public function description(string | Closure | null $description): static - { - $this->description = $description; - - return $this; - } - - public function icon(string | Closure | null $icon): static - { - $this->icon = $icon; - - return $this; - } - - public function callAfterValidation(): void - { - $this->evaluate($this->afterValidation); - } - - public function callBeforeValidation(): void - { - $this->evaluate($this->beforeValidation); - } - - public function getDescription(): ?string - { - return $this->evaluate($this->description); - } - - public function getIcon(): ?string - { - return $this->evaluate($this->icon); - } - - /** - * @return array - */ - public function getColumnsConfig(): array - { - return $this->columns ?? $this->getContainer()->getColumnsConfig(); - } - - public function canConcealComponents(): bool - { - return true; - } -} diff --git a/vendor/filament/forms/src/Concerns/BelongsToLivewire.php b/vendor/filament/forms/src/Concerns/BelongsToLivewire.php deleted file mode 100644 index 25254634..00000000 --- a/vendor/filament/forms/src/Concerns/BelongsToLivewire.php +++ /dev/null @@ -1,22 +0,0 @@ -livewire = $livewire; - - return $this; - } - - public function getLivewire(): HasForms - { - return $this->livewire; - } -} diff --git a/vendor/filament/forms/src/Concerns/BelongsToModel.php b/vendor/filament/forms/src/Concerns/BelongsToModel.php deleted file mode 100644 index 3a049f0e..00000000 --- a/vendor/filament/forms/src/Concerns/BelongsToModel.php +++ /dev/null @@ -1,92 +0,0 @@ -model = $model; - - return $this; - } - - public function saveRelationships(): void - { - foreach ($this->getComponents(withHidden: true) as $component) { - $component->saveRelationshipsBeforeChildren(); - - $shouldSaveRelationshipsWhenDisabled = $component->shouldSaveRelationshipsWhenDisabled(); - - foreach ($component->getChildComponentContainers(withHidden: $component->shouldSaveRelationshipsWhenHidden()) as $container) { - if ((! $shouldSaveRelationshipsWhenDisabled) && $container->isDisabled()) { - continue; - } - - $container->saveRelationships(); - } - - $component->saveRelationships(); - } - } - - public function loadStateFromRelationships(bool $andHydrate = false): void - { - foreach ($this->getComponents(withHidden: true) as $component) { - $component->loadStateFromRelationships($andHydrate); - - foreach ($component->getChildComponentContainers(withHidden: true) as $container) { - $container->loadStateFromRelationships($andHydrate); - } - } - } - - public function getModel(): ?string - { - $model = $this->model; - - if ($model instanceof Model) { - return $model::class; - } - - if (filled($model)) { - return $model; - } - - return $this->getParentComponent()?->getModel(); - } - - public function getRecord(): ?Model - { - $model = $this->model; - - if ($model instanceof Model) { - return $model; - } - - if (is_string($model)) { - return null; - } - - return $this->getParentComponent()?->getRecord(); - } - - public function getModelInstance(): ?Model - { - $model = $this->model; - - if ($model === null) { - return $this->getParentComponent()?->getModelInstance(); - } - - if ($model instanceof Model) { - return $model; - } - - return app($model); - } -} diff --git a/vendor/filament/forms/src/Concerns/BelongsToParentComponent.php b/vendor/filament/forms/src/Concerns/BelongsToParentComponent.php deleted file mode 100644 index ac06ea80..00000000 --- a/vendor/filament/forms/src/Concerns/BelongsToParentComponent.php +++ /dev/null @@ -1,27 +0,0 @@ -parentComponent = $component; - - return $this; - } - - public function getParentComponent(): ?Component - { - return $this->parentComponent; - } - - public function isRoot(): bool - { - return $this->parentComponent === null; - } -} diff --git a/vendor/filament/forms/src/Concerns/CanBeDisabled.php b/vendor/filament/forms/src/Concerns/CanBeDisabled.php deleted file mode 100644 index ecad5439..00000000 --- a/vendor/filament/forms/src/Concerns/CanBeDisabled.php +++ /dev/null @@ -1,27 +0,0 @@ -isDisabled = $condition; - - return $this; - } - - public function isDisabled(): bool - { - return $this->evaluate($this->isDisabled) || $this->getParentComponent()?->isDisabled(); - } - - public function isEnabled(): bool - { - return ! $this->isDisabled(); - } -} diff --git a/vendor/filament/forms/src/Concerns/CanBeHidden.php b/vendor/filament/forms/src/Concerns/CanBeHidden.php deleted file mode 100644 index 802272a3..00000000 --- a/vendor/filament/forms/src/Concerns/CanBeHidden.php +++ /dev/null @@ -1,16 +0,0 @@ -getParentComponent()?->isHidden(); - } - - public function isVisible(): bool - { - return ! $this->isHidden(); - } -} diff --git a/vendor/filament/forms/src/Concerns/CanBeValidated.php b/vendor/filament/forms/src/Concerns/CanBeValidated.php deleted file mode 100644 index cea68f3e..00000000 --- a/vendor/filament/forms/src/Concerns/CanBeValidated.php +++ /dev/null @@ -1,107 +0,0 @@ - - */ - public function getValidationAttributes(): array - { - $attributes = []; - - foreach ($this->getComponents() as $component) { - if ($component instanceof Components\Contracts\HasValidationRules) { - $component->dehydrateValidationAttributes($attributes); - } - - foreach ($component->getChildComponentContainers() as $container) { - if ($container->isHidden()) { - continue; - } - - $attributes = [ - ...$attributes, - ...$container->getValidationAttributes(), - ]; - } - } - - return $attributes; - } - - /** - * @return array - */ - public function getValidationMessages(): array - { - $messages = []; - - foreach ($this->getComponents() as $component) { - if ($component instanceof Components\Contracts\HasValidationRules) { - $component->dehydrateValidationMessages($messages); - } - - foreach ($component->getChildComponentContainers() as $container) { - if ($container->isHidden()) { - continue; - } - - $messages = [ - ...$messages, - ...$container->getValidationMessages(), - ]; - } - } - - return $messages; - } - - /** - * @return array> - */ - public function getValidationRules(): array - { - $rules = []; - - foreach ($this->getComponents() as $component) { - if ($component instanceof Components\Contracts\HasValidationRules) { - $component->dehydrateValidationRules($rules); - } - - foreach ($component->getChildComponentContainers() as $container) { - if ($container->isHidden()) { - continue; - } - - $rules = [ - ...$rules, - ...$container->getValidationRules(), - ]; - } - } - - return $rules; - } - - /** - * @return array - */ - public function validate(): array - { - if (! count($this->getComponents())) { - return []; - } - - $rules = $this->getValidationRules(); - - if (! count($rules)) { - return []; - } - - return $this->getLivewire()->validate($rules, $this->getValidationMessages(), $this->getValidationAttributes()); - } -} diff --git a/vendor/filament/forms/src/Concerns/Cloneable.php b/vendor/filament/forms/src/Concerns/Cloneable.php deleted file mode 100644 index a1dacf55..00000000 --- a/vendor/filament/forms/src/Concerns/Cloneable.php +++ /dev/null @@ -1,31 +0,0 @@ -components)) { - $this->components = array_map( - fn (Component $component): Component => $component - ->container($this) - ->getClone(), - $this->components, - ); - } - - return $this; - } - - public function getClone(): static - { - $clone = clone $this; - $clone->flushCachedAbsoluteStatePath(); - $clone->cloneComponents(); - - return $clone; - } -} diff --git a/vendor/filament/forms/src/Concerns/HasColumns.php b/vendor/filament/forms/src/Concerns/HasColumns.php deleted file mode 100644 index d5105329..00000000 --- a/vendor/filament/forms/src/Concerns/HasColumns.php +++ /dev/null @@ -1,65 +0,0 @@ - | null - */ - protected ?array $columns = null; - - /** - * @param array | int | string | null $columns - */ - public function columns(array | int | string | null $columns = 2): static - { - if (! is_array($columns)) { - $columns = [ - 'lg' => $columns, - ]; - } - - $this->columns = [ - ...($this->columns ?? []), - ...$columns, - ]; - - return $this; - } - - /** - * @return array | int | string | null - */ - public function getColumns(?string $breakpoint = null): array | int | string | null - { - $columns = $this->getColumnsConfig(); - - if ($breakpoint !== null) { - return $columns[$breakpoint] ?? null; - } - - return $columns; - } - - /** - * @return array - */ - public function getColumnsConfig(): array - { - if ($this instanceof ComponentContainer && $this->getParentComponent()) { - return $this->getParentComponent()->getColumnsConfig(); - } - - return $this->columns ?? [ - 'default' => 1, - 'sm' => null, - 'md' => null, - 'lg' => null, - 'xl' => null, - '2xl' => null, - ]; - } -} diff --git a/vendor/filament/forms/src/Concerns/HasComponents.php b/vendor/filament/forms/src/Concerns/HasComponents.php deleted file mode 100644 index 2c2c435a..00000000 --- a/vendor/filament/forms/src/Concerns/HasComponents.php +++ /dev/null @@ -1,117 +0,0 @@ - | Closure - */ - protected array | Closure $components = []; - - /** - * @param array | Closure $components - */ - public function components(array | Closure $components): static - { - $this->components = $components; - - return $this; - } - - /** - * @param array | Closure $components - */ - public function schema(array | Closure $components): static - { - $this->components($components); - - return $this; - } - - public function getComponent(string | Closure $findComponentUsing, bool $withHidden = false): ?Component - { - if (is_string($findComponentUsing)) { - $findComponentUsing = static function (Component $component) use ($findComponentUsing): bool { - $key = $component->getKey(); - - if ($key === null) { - return false; - } - - return $key === $findComponentUsing; - }; - } - - return collect($this->getFlatComponents($withHidden))->first($findComponentUsing); - } - - /** - * @return array - */ - public function getFlatComponents(bool $withHidden = false): array - { - return array_reduce( - $this->getComponents($withHidden), - function (array $carry, Component $component) use ($withHidden): array { - $carry[] = $component; - - foreach ($component->getChildComponentContainers($withHidden) as $childComponentContainer) { - $carry = [ - ...$carry, - ...$childComponentContainer->getFlatComponents($withHidden), - ]; - } - - return $carry; - }, - initial: [], - ); - } - - /** - * @return array - */ - public function getFlatFields(bool $withHidden = false, bool $withAbsolutePathKeys = false): array - { - $statePath = $this->getStatePath(); - - return collect($this->getFlatComponents($withHidden)) - ->whereInstanceOf(Field::class) - ->mapWithKeys(static function (Field $field) use ($statePath, $withAbsolutePathKeys): array { - $fieldStatePath = $field->getStatePath(); - - if ((! $withAbsolutePathKeys) && filled($statePath)) { - $fieldStatePath = (string) str($fieldStatePath)->after("{$statePath}."); - } - - return [$fieldStatePath => $field]; - }) - ->all(); - } - - /** - * @return array - */ - public function getComponents(bool $withHidden = false): array - { - $components = array_map(function (Component $component): Component { - $component->container($this); - - return $component; - }, $this->evaluate($this->components)); - - if ($withHidden) { - return $components; - } - - return array_filter( - $components, - fn (Component $component) => $component->isVisible(), - ); - } -} diff --git a/vendor/filament/forms/src/Concerns/HasFieldWrapper.php b/vendor/filament/forms/src/Concerns/HasFieldWrapper.php deleted file mode 100644 index a0d2a2b0..00000000 --- a/vendor/filament/forms/src/Concerns/HasFieldWrapper.php +++ /dev/null @@ -1,23 +0,0 @@ -fieldWrapperView = $view; - - return $this; - } - - public function getCustomFieldWrapperView(): ?string - { - return $this->evaluate($this->fieldWrapperView) ?? - $this->getParentComponent()?->getCustomFieldWrapperView(); - } -} diff --git a/vendor/filament/forms/src/Concerns/HasFormComponentActions.php b/vendor/filament/forms/src/Concerns/HasFormComponentActions.php deleted file mode 100644 index 32f7aa95..00000000 --- a/vendor/filament/forms/src/Concerns/HasFormComponentActions.php +++ /dev/null @@ -1,315 +0,0 @@ - | null - */ - public ?array $mountedFormComponentActions = []; - - /** - * @var array> | null - */ - public ?array $mountedFormComponentActionsArguments = []; - - /** - * @var array> | null - */ - public ?array $mountedFormComponentActionsData = []; - - /** - * @var array | null - */ - public ?array $mountedFormComponentActionsComponents = []; - - /** - * @param array $arguments - */ - public function callMountedFormComponentAction(array $arguments = []): mixed - { - $action = $this->getMountedFormComponentAction(); - - if (! $action) { - return null; - } - - if ($action->isDisabled()) { - return null; - } - - $action->mergeArguments($arguments); - - $form = $this->getMountedFormComponentActionForm(); - - $result = null; - - try { - if ($this->mountedFormComponentActionHasForm()) { - $action->callBeforeFormValidated(); - - $action->formData($form->getState()); - - $action->callAfterFormValidated(); - } - - $action->callBefore(); - - $result = $action->call([ - 'form' => $form, - ]); - - $result = $action->callAfter() ?? $result; - } catch (Halt $exception) { - return null; - } catch (Cancel $exception) { - } catch (ValidationException $exception) { - if (! $this->mountedFormComponentActionShouldOpenModal()) { - $action->resetArguments(); - $action->resetFormData(); - - $this->unmountFormComponentAction(); - } - - throw $exception; - } - - if (store($this)->has('redirect')) { - return $result; - } - - $action->resetArguments(); - $action->resetFormData(); - - $this->unmountFormComponentAction(); - - return $result; - } - - /** - * @param array $arguments - */ - public function mountFormComponentAction(string $component, string $name, array $arguments = []): mixed - { - $this->mountedFormComponentActions[] = $name; - $this->mountedFormComponentActionsArguments[] = $arguments; - $this->mountedFormComponentActionsComponents[] = $component; - $this->mountedFormComponentActionsData[] = []; - - $action = $this->getMountedFormComponentAction(); - - if (! $action) { - $this->unmountFormComponentAction(); - - return null; - } - - if ($action->isDisabled()) { - $this->unmountFormComponentAction(); - - return null; - } - - $this->cacheMountedFormComponentActionForm(); - - try { - $hasForm = $this->mountedFormComponentActionHasForm(); - - if ($hasForm) { - $action->callBeforeFormFilled(); - } - - $action->mount([ - 'form' => $this->getMountedFormComponentActionForm(), - ]); - - if ($hasForm) { - $action->callAfterFormFilled(); - } - } catch (Halt $exception) { - return null; - } catch (Cancel $exception) { - $this->unmountFormComponentAction(shouldCancelParentActions: false); - - return null; - } - - if (! $this->mountedFormComponentActionShouldOpenModal()) { - return $this->callMountedFormComponentAction(); - } - - $this->resetErrorBag(); - - $this->openFormComponentActionModal(); - - return null; - } - - protected function cacheMountedFormComponentActionForm(): void - { - $this->cacheForm( - 'mountedFormComponentActionForm' . array_key_last($this->mountedFormComponentActions), - fn () => $this->getMountedFormComponentActionForm(), - ); - } - - public function mountedFormComponentActionShouldOpenModal(): bool - { - $action = $this->getMountedFormComponentAction(); - - if ($action->isModalHidden()) { - return false; - } - - return $action->hasCustomModalHeading() || - $action->hasModalDescription() || - $action->hasModalContent() || - $action->hasModalContentFooter() || - $action->getInfolist() || - $this->mountedFormComponentActionHasForm(); - } - - public function mountedFormComponentActionHasForm(): bool - { - return (bool) count($this->getMountedFormComponentActionForm()?->getComponents() ?? []); - } - - public function getMountedFormComponentAction(?int $actionNestingIndex = null): ?Action - { - $actionNestingIndex ??= array_key_last($this->mountedFormComponentActions); - $actionName = $this->mountedFormComponentActions[$actionNestingIndex] ?? null; - - if (blank($actionName)) { - return null; - } - - return $this->getMountedFormComponentActionComponent($actionNestingIndex) - ?->getAction($actionName) - ?->arguments($this->mountedFormComponentActionsArguments[$actionNestingIndex] ?? []); - } - - protected function getMountedFormComponentActionForm(?int $actionNestingIndex = null): ?Form - { - $actionNestingIndex ??= array_key_last($this->mountedFormComponentActions); - - $action = $this->getMountedFormComponentAction($actionNestingIndex); - - if (! ($action instanceof Action)) { - return null; - } - - if ((! $this->isCachingForms) && $this->hasCachedForm("mountedFormComponentActionForm{$actionNestingIndex}")) { - return $this->getForm("mountedFormComponentActionForm{$actionNestingIndex}"); - } - - return $action->getForm( - $this->makeForm() - ->model($this->getMountedFormComponentActionComponent($actionNestingIndex)->getActionFormModel()) - ->statePath('mountedFormComponentActionsData.' . $actionNestingIndex) - ->operation(implode('.', array_slice($this->mountedFormComponentActions, 0, $actionNestingIndex + 1))), - ); - } - - public function getMountedFormComponentActionComponent(?int $actionNestingIndex = null): ?Component - { - $actionNestingIndex ??= array_key_last($this->mountedFormComponentActions); - $componentKey = $this->mountedFormComponentActionsComponents[$actionNestingIndex] ?? null; - - if (blank($componentKey)) { - return null; - } - - foreach ($this->getCachedForms() as $form) { - $component = $form->getComponent($componentKey); - - if (! $component) { - continue; - } - - return $component; - } - - return null; - } - - protected function resetMountedFormComponentActionProperties(): void - { - $this->mountedFormComponentActions = []; - $this->mountedFormComponentActionsArguments = []; - $this->mountedFormComponentActionsComponents = []; - $this->mountedFormComponentActionsData = []; - } - - protected function popMountedFormComponentAction(): ?string - { - try { - return array_pop($this->mountedFormComponentActions); - } finally { - array_pop($this->mountedFormComponentActionsArguments); - array_pop($this->mountedFormComponentActionsComponents); - array_pop($this->mountedFormComponentActionsData); - } - } - - public function unmountFormComponentAction(bool $shouldCancelParentActions = true): void - { - $action = $this->getMountedFormComponentAction(); - - if (! ($shouldCancelParentActions && $action)) { - $this->popMountedFormComponentAction(); - } elseif ($action->shouldCancelAllParentActions()) { - $this->resetMountedFormComponentActionProperties(); - } else { - $parentActionToCancelTo = $action->getParentActionToCancelTo(); - - while (true) { - $recentlyClosedParentAction = $this->popMountedFormComponentAction(); - - if ( - blank($parentActionToCancelTo) || - ($recentlyClosedParentAction === $parentActionToCancelTo) - ) { - break; - } - } - } - - if (! count($this->mountedFormComponentActions)) { - $this->closeFormComponentActionModal(); - - return; - } - - $this->resetErrorBag(); - - $this->openFormComponentActionModal(); - } - - protected function closeFormComponentActionModal(): void - { - $this->dispatch('close-modal', id: "{$this->getId()}-form-component-action"); - - $this->dispatch('closed-form-component-action-modal', id: $this->getId()); - } - - protected function openFormComponentActionModal(): void - { - $this->dispatch('open-modal', id: "{$this->getId()}-form-component-action"); - - $this->dispatch('opened-form-component-action-modal', id: $this->getId()); - } -} diff --git a/vendor/filament/forms/src/Concerns/HasInlineLabels.php b/vendor/filament/forms/src/Concerns/HasInlineLabels.php deleted file mode 100644 index 36ead011..00000000 --- a/vendor/filament/forms/src/Concerns/HasInlineLabels.php +++ /dev/null @@ -1,22 +0,0 @@ -hasInlineLabels = $condition; - - return $this; - } - - public function hasInlineLabel(): ?bool - { - return $this->evaluate($this->hasInlineLabels) ?? $this->getParentComponent()?->hasInlineLabel(); - } -} diff --git a/vendor/filament/forms/src/Concerns/HasOperation.php b/vendor/filament/forms/src/Concerns/HasOperation.php deleted file mode 100644 index 395e27d3..00000000 --- a/vendor/filament/forms/src/Concerns/HasOperation.php +++ /dev/null @@ -1,38 +0,0 @@ -operation = $operation; - - return $this; - } - - /** - * @deprecated Use `operation()` instead. - */ - public function context(?string $context): static - { - $this->operation($context); - - return $this; - } - - public function getOperation(): string - { - if (filled($this->operation)) { - return $this->operation; - } - - if ($this->getParentComponent()) { - return $this->getParentComponent()->getContainer()->getOperation(); - } - - return $this->getLivewire()::class; - } -} diff --git a/vendor/filament/forms/src/Concerns/HasState.php b/vendor/filament/forms/src/Concerns/HasState.php deleted file mode 100644 index e7a09b9e..00000000 --- a/vendor/filament/forms/src/Concerns/HasState.php +++ /dev/null @@ -1,292 +0,0 @@ -getComponents(withHidden: true) as $component) { - $component->callAfterStateHydrated(); - - foreach ($component->getChildComponentContainers(withHidden: true) as $container) { - $container->callAfterStateHydrated(); - } - } - } - - public function callAfterStateUpdated(string $path): bool - { - foreach ($this->getComponents(withHidden: true) as $component) { - if ($component->getStatePath() === $path) { - $component->callAfterStateUpdated(); - - return true; - } - - if (str($path)->startsWith("{$component->getStatePath()}.")) { - $component->callAfterStateUpdated(); - } - - foreach ($component->getChildComponentContainers() as $container) { - if ($container->callAfterStateUpdated($path)) { - return true; - } - } - } - - return false; - } - - public function callBeforeStateDehydrated(): void - { - foreach ($this->getComponents(withHidden: true) as $component) { - if ($component->isHidden()) { - continue; - } - - $component->callBeforeStateDehydrated(); - - foreach ($component->getChildComponentContainers() as $container) { - if ($container->isHidden()) { - continue; - } - - $container->callBeforeStateDehydrated(); - } - } - } - - /** - * @param array $state - * @return array - */ - public function dehydrateState(array &$state = [], bool $isDehydrated = true): array - { - foreach ($this->getComponents() as $component) { - if ($component->isHidden()) { - continue; - } - - $component->dehydrateState($state, $isDehydrated); - } - - return $state; - } - - /** - * @param array $state - * @return array - */ - public function mutateDehydratedState(array &$state = []): array - { - foreach ($this->getComponents() as $component) { - if ($component->isHidden()) { - continue; - } - - if (! $component->isDehydrated()) { - continue; - } - - foreach ($component->getChildComponentContainers() as $container) { - if ($container->isHidden()) { - continue; - } - - $container->mutateDehydratedState($state); - } - - if ($component->getStatePath(isAbsolute: false)) { - if (! $component->mutatesDehydratedState()) { - continue; - } - - $componentStatePath = $component->getStatePath(); - - data_set( - $state, - $componentStatePath, - $component->mutateDehydratedState( - data_get($state, $componentStatePath), - ), - ); - } - } - - return $state; - } - - /** - * @param array $state - * @return array - */ - public function mutateStateForValidation(array &$state = []): array - { - foreach ($this->getComponents() as $component) { - if ($component->isHidden()) { - continue; - } - - foreach ($component->getChildComponentContainers() as $container) { - if ($container->isHidden()) { - continue; - } - - $container->mutateStateForValidation($state); - } - - if ($component->getStatePath(isAbsolute: false)) { - if (! $component->mutatesStateForValidation()) { - continue; - } - - $componentStatePath = $component->getStatePath(); - - data_set( - $state, - $componentStatePath, - $component->mutateStateForValidation( - data_get($state, $componentStatePath), - ), - ); - } - } - - return $state; - } - - /** - * @param array | null $state - */ - public function fill(?array $state = null, bool $andCallHydrationHooks = true, bool $andFillStateWithNull = true): static - { - $hydratedDefaultState = null; - - if ($state === null) { - $hydratedDefaultState = []; - } else { - $livewire = $this->getLivewire(); - - if ($statePath = $this->getStatePath()) { - data_set($livewire, $statePath, $state); - } else { - foreach ($state as $key => $value) { - data_set($livewire, $key, $value); - } - } - } - - $this->hydrateState($hydratedDefaultState, $andCallHydrationHooks); - - if ($andFillStateWithNull) { - $this->fillStateWithNull(); - } - - return $this; - } - - /** - * @param array | null $hydratedDefaultState - */ - public function hydrateState(?array &$hydratedDefaultState, bool $andCallHydrationHooks = true): void - { - foreach ($this->getComponents(withHidden: true) as $component) { - $component->hydrateState($hydratedDefaultState, $andCallHydrationHooks); - } - } - - public function fillStateWithNull(): void - { - foreach ($this->getComponents(withHidden: true) as $component) { - $component->fillStateWithNull(); - } - } - - public function statePath(?string $path): static - { - $this->statePath = $path; - - return $this; - } - - /** - * @return array - */ - public function getState(bool $shouldCallHooksBefore = true): array - { - $state = $this->validate(); - - if ($shouldCallHooksBefore) { - $this->callBeforeStateDehydrated(); - $this->saveRelationships(); - $this->loadStateFromRelationships(andHydrate: true); - } - - $this->dehydrateState($state); - $this->mutateDehydratedState($state); - - if ($statePath = $this->getStatePath()) { - return data_get($state, $statePath) ?? []; - } - - return $state; - } - - /** - * @return array | Arrayable - */ - public function getRawState(): array | Arrayable - { - return data_get($this->getLivewire(), $this->getStatePath()) ?? []; - } - - /** - * @param array $keys - * @return array - */ - public function getStateOnly(array $keys): array - { - return Arr::only($this->getState(), $keys); - } - - /** - * @param array $keys - * @return array - */ - public function getStateExcept(array $keys): array - { - return Arr::except($this->getState(), $keys); - } - - public function getStatePath(bool $isAbsolute = true): string - { - if (isset($this->cachedAbsoluteStatePath)) { - return $this->cachedAbsoluteStatePath; - } - - $pathComponents = []; - - if ($isAbsolute && $parentComponentStatePath = $this->getParentComponent()?->getStatePath()) { - $pathComponents[] = $parentComponentStatePath; - } - - if (($statePath = $this->statePath) !== null) { - $pathComponents[] = $statePath; - } - - return $this->cachedAbsoluteStatePath = implode('.', $pathComponents); - } - - protected function flushCachedAbsoluteStatePath(): void - { - unset($this->cachedAbsoluteStatePath); - } -} diff --git a/vendor/filament/forms/src/Concerns/HasStateBindingModifiers.php b/vendor/filament/forms/src/Concerns/HasStateBindingModifiers.php deleted file mode 100644 index e3a66c45..00000000 --- a/vendor/filament/forms/src/Concerns/HasStateBindingModifiers.php +++ /dev/null @@ -1,226 +0,0 @@ - | null - */ - protected ?array $stateBindingModifiers = null; - - protected int | string | null $liveDebounce = null; - - protected ?bool $isLive = null; - - protected bool $isLiveOnBlur = false; - - public function live(bool $onBlur = false, int | string | null $debounce = null, ?bool $condition = true): static - { - $this->isLive = $condition; - $this->isLiveOnBlur = $onBlur; - $this->liveDebounce = $debounce; - - return $this; - } - - public function reactive(): static - { - $this->live(); - - return $this; - } - - public function lazy(): static - { - $this->live(onBlur: true); - - return $this; - } - - public function debounce(int | string | null $delay = 500): static - { - $this->live(debounce: $delay); - - return $this; - } - - /** - * @param array | null $modifiers - */ - public function stateBindingModifiers(?array $modifiers): static - { - $this->stateBindingModifiers = $modifiers; - - return $this; - } - - public function applyStateBindingModifiers(string $expression, bool $isOptimisticallyLive = true): string - { - $entangled = str($expression)->is('$entangle(*)'); - - $modifiers = $this->getStateBindingModifiers(withBlur: ! $entangled, withDebounce: ! $entangled, isOptimisticallyLive: $isOptimisticallyLive); - - if ($entangled) { - return (string) str($expression)->replaceLast( - ')', - in_array('live', $modifiers) ? ', true)' : ', false)', - ); - } - - return implode('.', [ - $expression, - ...$modifiers, - ]); - } - - /** - * @return array - */ - public function getStateBindingModifiers(bool $withBlur = true, bool $withDebounce = true, bool $isOptimisticallyLive = true): array - { - if ($this->stateBindingModifiers !== null) { - return $this->stateBindingModifiers; - } - - if ($this->isLive === false) { - return []; - } - - if ($this->isLiveOnBlur) { - if (! $withBlur) { - return $isOptimisticallyLive ? ['live'] : []; - } - - return ['blur']; - } - - if (filled($this->liveDebounce)) { - if (! $withDebounce) { - return $isOptimisticallyLive ? ['live'] : []; - } - - return ['live', 'debounce', $this->liveDebounce]; - } - - if ($this->isLive) { - return ['live']; - } - - if ($this instanceof Component) { - return $this->getContainer()->getStateBindingModifiers($withBlur, $withDebounce, $isOptimisticallyLive); - } - - if ($this->getParentComponent()) { - return $this->getParentComponent()->getStateBindingModifiers($withBlur, $withDebounce, $isOptimisticallyLive); - } - - return []; - } - - public function isLive(): bool - { - if ($this->isLive !== null) { - return $this->isLive; - } - - if ($this instanceof Component) { - return $this->getContainer()->isLive(); - } - - if ($this->getParentComponent()) { - return $this->getParentComponent()->isLive(); - } - - return false; - } - - public function isLiveOnBlur(): bool - { - if ($this->isLive !== null) { - return $this->isLiveOnBlur; - } - - if ($this instanceof Component) { - return $this->getContainer()->isLiveOnBlur(); - } - - if ($this->getParentComponent()) { - return $this->getParentComponent()->isLiveOnBlur(); - } - - return false; - } - - public function isLazy(): bool - { - return $this->isLiveOnBlur(); - } - - public function isLiveDebounced(): bool - { - if ($this->isLiveOnBlur) { - return false; - } - - if (filled($this->liveDebounce)) { - return true; - } - - if ($this instanceof Component) { - return $this->getContainer()->isLiveDebounced(); - } - - if ($this->getParentComponent()) { - return $this->getParentComponent()->isLiveDebounced(); - } - - return false; - } - - public function getLiveDebounce(): int | string | null - { - if ($this->isLiveOnBlur) { - return null; - } - - if (filled($this->liveDebounce)) { - return $this->liveDebounce; - } - - if ($this instanceof Component) { - return $this->getContainer()->getLiveDebounce(); - } - - if ($this->getParentComponent()) { - return $this->getParentComponent()->getLiveDebounce(); - } - - return null; - } - - public function getNormalizedLiveDebounce(): ?int - { - $debounce = $this->getLiveDebounce(); - - if (! $debounce) { - return null; - } - - if (is_numeric($debounce)) { - return (int) $debounce; - } - - if (str($debounce)->endsWith('ms')) { - return (int) (string) str($debounce)->beforeLast('ms'); - } - - if (str($debounce)->endsWith('s')) { - return ((int) (string) str($debounce)->beforeLast('s')) * 1000; - } - - return preg_replace('/[^0-9]/', '', $debounce) ?: 0; - } -} diff --git a/vendor/filament/forms/src/Concerns/InteractsWithForms.php b/vendor/filament/forms/src/Concerns/InteractsWithForms.php deleted file mode 100644 index 900ea561..00000000 --- a/vendor/filament/forms/src/Concerns/InteractsWithForms.php +++ /dev/null @@ -1,464 +0,0 @@ - - */ - public array $componentFileAttachments = []; - - /** - * @var array - */ - protected ?array $cachedForms = null; - - protected bool $hasCachedForms = false; - - protected bool $isCachingForms = false; - - protected bool $hasFormsModalRendered = false; - - /** - * @var array - */ - protected array $oldFormState = []; - - public function dispatchFormEvent(mixed ...$args): void - { - foreach ($this->getCachedForms() as $form) { - $form->dispatchEvent(...$args); - } - } - - public function getFormComponentFileAttachment(string $statePath): ?TemporaryUploadedFile - { - return data_get($this->componentFileAttachments, $statePath); - } - - #[Renderless] - public function getFormComponentFileAttachmentUrl(string $statePath): ?string - { - foreach ($this->getCachedForms() as $form) { - if ($url = $form->getComponentFileAttachmentUrl($statePath)) { - return $url; - } - } - - return null; - } - - /** - * @return array - */ - #[Renderless] - public function getFormSelectOptionLabels(string $statePath): array - { - foreach ($this->getCachedForms() as $form) { - if ($labels = $form->getSelectOptionLabels($statePath)) { - return $labels; - } - } - - return []; - } - - #[Renderless] - public function getFormSelectOptionLabel(string $statePath): ?string - { - foreach ($this->getCachedForms() as $form) { - if ($label = $form->getSelectOptionLabel($statePath)) { - return $label; - } - } - - return null; - } - - /** - * @return array - */ - #[Renderless] - public function getFormSelectOptions(string $statePath): array - { - foreach ($this->getCachedForms() as $form) { - if ($results = $form->getSelectOptions($statePath)) { - return $results; - } - } - - return []; - } - - /** - * @return array - */ - #[Renderless] - public function getFormSelectSearchResults(string $statePath, string $search): array - { - foreach ($this->getCachedForms() as $form) { - if ($results = $form->getSelectSearchResults($statePath, $search)) { - return $results; - } - } - - return []; - } - - public function deleteUploadedFile(string $statePath, string $fileKey): void - { - foreach ($this->getCachedForms() as $form) { - $form->deleteUploadedFile($statePath, $fileKey); - } - } - - /** - * @return array | null - */ - #[Renderless] - public function getFormUploadedFiles(string $statePath): ?array - { - foreach ($this->getCachedForms() as $form) { - if ($files = $form->getUploadedFiles($statePath)) { - return $files; - } - } - - return null; - } - - public function removeFormUploadedFile(string $statePath, string $fileKey): void - { - foreach ($this->getCachedForms() as $form) { - $form->removeUploadedFile($statePath, $fileKey); - } - } - - public function reorderFormUploadedFiles(string $statePath, array $fileKeys): void - { - foreach ($this->getCachedForms() as $form) { - $form->reorderUploadedFiles($statePath, $fileKeys); - } - } - - /** - * @param array> | null $rules - * @param array $messages - * @param array $attributes - * @return array - */ - public function validate($rules = null, $messages = [], $attributes = []): array - { - try { - return parent::validate($rules, $messages, $attributes); - } catch (ValidationException $exception) { - $this->onValidationError($exception); - - $this->dispatch('form-validation-error', livewireId: $this->getId()); - - throw $exception; - } - } - - /** - * @param string $field - * @param array> $rules - * @param array $messages - * @param array $attributes - * @param array $dataOverrides - * @return array - */ - public function validateOnly($field, $rules = null, $messages = [], $attributes = [], $dataOverrides = []) - { - try { - return parent::validateOnly($field, $rules, $messages, $attributes, $dataOverrides); - } catch (ValidationException $exception) { - $this->onValidationError($exception); - - $this->dispatch('form-validation-error', livewireId: $this->getId()); - - throw $exception; - } - } - - protected function onValidationError(ValidationException $exception): void - { - } - - /** - * @param array $attributes - * @return array - */ - protected function prepareForValidation($attributes): array - { - foreach ($this->getCachedForms() as $form) { - $attributes = $form->mutateStateForValidation($attributes); - } - - return $attributes; - } - - /** - * @return class-string | null - */ - public function getFilamentTranslatableContentDriver(): ?string - { - return null; - } - - public function makeFilamentTranslatableContentDriver(): ?TranslatableContentDriver - { - $driver = $this->getFilamentTranslatableContentDriver(); - - if (! $driver) { - return null; - } - - return app($driver, ['activeLocale' => $this->getActiveFormsLocale() ?? app()->getLocale()]); - } - - public function getActiveFormsLocale(): ?string - { - return null; - } - - public function updatingInteractsWithForms(string $statePath): void - { - $statePath = (string) str($statePath)->before('.'); - - $this->oldFormState[$statePath] = data_get($this, $statePath); - } - - public function getOldFormState(string $statePath): mixed - { - return data_get($this->oldFormState, $statePath); - } - - public function updatedInteractsWithForms(string $statePath): void - { - foreach ($this->getCachedForms() as $form) { - $form->callAfterStateUpdated($statePath); - } - } - - protected function cacheForm(string $name, Form | Closure | null $form): ?Form - { - $this->isCachingForms = true; - - $form = value($form); - - if ($form) { - $this->cachedForms[$name] = $form; - } else { - unset($this->cachedForms[$name]); - } - - $this->isCachingForms = false; - - return $form; - } - - /** - * @return array - */ - protected function cacheForms(): array - { - $this->isCachingForms = true; - - $this->cachedForms = collect($this->getForms()) - ->merge($this->getTraitForms()) - ->mapWithKeys(function (Form | string | null $form, string | int $formName): array { - if ($form === null) { - return ['' => null]; - } - - if (is_string($formName)) { - return [$formName => $form]; - } - - if (! method_exists($this, $form)) { - $livewireClass = $this::class; - - throw new Exception("Form configuration method [{$form}()] is missing from Livewire component [{$livewireClass}]."); - } - - return [$form => $this->{$form}($this->makeForm())]; - }) - ->forget('') - ->all(); - - $this->isCachingForms = false; - - $this->hasCachedForms = true; - - foreach ($this->mountedFormComponentActions as $actionNestingIndex => $actionName) { - $this->cacheForm( - "mountedFormComponentActionForm{$actionNestingIndex}", - $this->getMountedFormComponentActionForm($actionNestingIndex), - ); - } - - return $this->cachedForms; - } - - /** - * @return array - */ - public function getTraitForms(): array - { - $forms = []; - - foreach (class_uses_recursive($class = static::class) as $trait) { - if (method_exists($class, $method = 'get' . class_basename($trait) . 'Forms')) { - $forms = [ - ...$forms, - ...$this->{$method}(), - ]; - } - } - - return $forms; - } - - protected function hasCachedForm(string $name): bool - { - return array_key_exists($name, $this->getCachedForms()); - } - - public function getForm(string $name): ?Form - { - return $this->getCachedForms()[$name] ?? null; - } - - /** - * @return array - */ - public function getCachedForms(): array - { - if (! $this->hasCachedForms) { - return $this->cacheForms(); - } - - return $this->cachedForms; - } - - /** - * @return array - */ - protected function getForms(): array - { - return [ - 'form', - ]; - } - - public function form(Form $form): Form - { - return $form - ->schema($this->getFormSchema()) - ->model($this->getFormModel()) - ->statePath($this->getFormStatePath()) - ->operation($this->getFormContext()); - } - - /** - * @deprecated Override the `form()` method to configure the default form. - */ - protected function getFormModel(): Model | string | null - { - return null; - } - - /** - * @deprecated Override the `form()` method to configure the default form. - * - * @return array - */ - protected function getFormSchema(): array - { - return []; - } - - /** - * @deprecated Override the `form()` method to configure the default form. - */ - protected function getFormContext(): ?string - { - return null; - } - - /** - * @deprecated Override the `form()` method to configure the default form. - */ - protected function getFormStatePath(): ?string - { - return null; - } - - /** - * @return array> - */ - public function getRules(): array - { - $rules = parent::getRules(); - - foreach ($this->getCachedForms() as $form) { - $rules = [ - ...$rules, - ...$form->getValidationRules(), - ]; - } - - return $rules; - } - - /** - * @return array - */ - protected function getValidationAttributes(): array - { - $attributes = parent::getValidationAttributes(); - - foreach ($this->getCachedForms() as $form) { - $attributes = [ - ...$attributes, - ...$form->getValidationAttributes(), - ]; - } - - return $attributes; - } - - protected function makeForm(): Form - { - return Form::make($this); - } - - public function isCachingForms(): bool - { - return $this->isCachingForms; - } - - public function mountedFormComponentActionInfolist(): Infolist - { - return $this->getMountedFormComponentAction()->getInfolist(); - } -} diff --git a/vendor/filament/forms/src/Concerns/ListensToEvents.php b/vendor/filament/forms/src/Concerns/ListensToEvents.php deleted file mode 100644 index 8e8aadd3..00000000 --- a/vendor/filament/forms/src/Concerns/ListensToEvents.php +++ /dev/null @@ -1,23 +0,0 @@ -getComponents() as $component) { - $component->dispatchEvent($event, ...$parameters); - - foreach ($component->getChildComponentContainers() as $container) { - if ($container->isHidden()) { - continue; - } - - $container->dispatchEvent($event, ...$parameters); - } - } - - return $this; - } -} diff --git a/vendor/filament/forms/src/Concerns/SupportsComponentFileAttachments.php b/vendor/filament/forms/src/Concerns/SupportsComponentFileAttachments.php deleted file mode 100644 index 506d6cd5..00000000 --- a/vendor/filament/forms/src/Concerns/SupportsComponentFileAttachments.php +++ /dev/null @@ -1,36 +0,0 @@ -getComponents() as $component) { - if ($component instanceof HasFileAttachments && $component instanceof Field && $component->getStatePath() === $statePath) { - $attachment = $this->getLivewire()->getFormComponentFileAttachment($statePath); - - if (! $attachment) { - return null; - } - - return $component->saveUploadedFileAttachment($attachment); - } - - foreach ($component->getChildComponentContainers() as $container) { - if ($container->isHidden()) { - continue; - } - - if ($url = $container->getComponentFileAttachmentUrl($statePath)) { - return $url; - } - } - } - - return null; - } -} diff --git a/vendor/filament/forms/src/Concerns/SupportsFileUploadFields.php b/vendor/filament/forms/src/Concerns/SupportsFileUploadFields.php deleted file mode 100644 index b618aa1d..00000000 --- a/vendor/filament/forms/src/Concerns/SupportsFileUploadFields.php +++ /dev/null @@ -1,104 +0,0 @@ -getComponents() as $component) { - if ($component instanceof BaseFileUpload && $component->getStatePath() === $statePath) { - $component->deleteUploadedFile($fileKey); - - return true; - } - - foreach ($component->getChildComponentContainers() as $container) { - if ($container->isHidden()) { - continue; - } - - if ($container->deleteUploadedFile($statePath, $fileKey)) { - return true; - } - } - } - - return false; - } - - /** - * @return array | null - */ - public function getUploadedFiles(string $statePath): ?array - { - foreach ($this->getComponents() as $component) { - if ($component instanceof BaseFileUpload && $component->getStatePath() === $statePath) { - return $component->getUploadedFiles(); - } - - foreach ($component->getChildComponentContainers() as $container) { - if ($container->isHidden()) { - continue; - } - - if ($files = $container->getUploadedFiles($statePath)) { - return $files; - } - } - } - - return null; - } - - public function removeUploadedFile(string $statePath, string $fileKey): bool - { - foreach ($this->getComponents() as $component) { - if ($component instanceof BaseFileUpload && $component->getStatePath() === $statePath) { - $component->removeUploadedFile($fileKey); - - return true; - } - - foreach ($component->getChildComponentContainers() as $container) { - if ($container->isHidden()) { - continue; - } - - if ($container->removeUploadedFile($statePath, $fileKey)) { - return true; - } - } - } - - return false; - } - - /** - * @param array $fileKeys - */ - public function reorderUploadedFiles(string $statePath, array $fileKeys): bool - { - foreach ($this->getComponents() as $component) { - if ($component instanceof BaseFileUpload && $component->getStatePath() === $statePath) { - $component->reorderUploadedFiles($fileKeys); - - return true; - } - - foreach ($component->getChildComponentContainers() as $container) { - if ($container->isHidden()) { - continue; - } - - if ($container->reorderUploadedFiles($statePath, $fileKeys)) { - return true; - } - } - } - - return false; - } -} diff --git a/vendor/filament/forms/src/Concerns/SupportsSelectFields.php b/vendor/filament/forms/src/Concerns/SupportsSelectFields.php deleted file mode 100644 index 97f5d5ab..00000000 --- a/vendor/filament/forms/src/Concerns/SupportsSelectFields.php +++ /dev/null @@ -1,101 +0,0 @@ -getComponents() as $component) { - if ($component instanceof Select && $component->getStatePath() === $statePath) { - return $component->getOptionLabel(); - } - - foreach ($component->getChildComponentContainers() as $container) { - if ($container->isHidden()) { - continue; - } - - if ($results = $container->getSelectOptionLabel($statePath)) { - return $results; - } - } - } - - return null; - } - - /** - * @return array - */ - public function getSelectOptionLabels(string $statePath): array - { - foreach ($this->getComponents() as $component) { - if ($component instanceof Select && $component->getStatePath() === $statePath) { - return $component->getOptionLabelsForJs(); - } - - foreach ($component->getChildComponentContainers() as $container) { - if ($container->isHidden()) { - continue; - } - - if ($results = $container->getSelectOptionLabels($statePath)) { - return $results; - } - } - } - - return []; - } - - /** - * @return array - */ - public function getSelectOptions(string $statePath): array - { - foreach ($this->getComponents() as $component) { - if ($component instanceof Select && $component->getStatePath() === $statePath) { - return $component->getOptionsForJs(); - } - - foreach ($component->getChildComponentContainers() as $container) { - if ($container->isHidden()) { - continue; - } - - if ($results = $container->getSelectOptions($statePath)) { - return $results; - } - } - } - - return []; - } - - /** - * @return array - */ - public function getSelectSearchResults(string $statePath, string $search): array - { - foreach ($this->getComponents() as $component) { - if ($component instanceof Select && $component->getStatePath() === $statePath) { - return $component->getSearchResultsForJs($search); - } - - foreach ($component->getChildComponentContainers() as $container) { - if ($container->isHidden()) { - continue; - } - - if ($results = $container->getSelectSearchResults($statePath, $search)) { - return $results; - } - } - } - - return []; - } -} diff --git a/vendor/filament/forms/src/Contracts/HasForms.php b/vendor/filament/forms/src/Contracts/HasForms.php deleted file mode 100644 index 0419cf15..00000000 --- a/vendor/filament/forms/src/Contracts/HasForms.php +++ /dev/null @@ -1,63 +0,0 @@ - - */ - public function getFormSelectOptionLabels(string $statePath): array; - - public function getFormSelectOptionLabel(string $statePath): ?string; - - /** - * @return array - */ - public function getFormSelectOptions(string $statePath): array; - - /** - * @return array - */ - public function getFormSelectSearchResults(string $statePath, string $search): array; - - /** - * @return array | null - */ - public function getFormUploadedFiles(string $statePath): ?array; - - public function getOldFormState(string $statePath): mixed; - - public function isCachingForms(): bool; - - public function removeFormUploadedFile(string $statePath, string $fileKey): void; - - /** - * @param array $fileKeys - */ - public function reorderFormUploadedFiles(string $statePath, array $fileKeys): void; - - /** - * @param array> | null $rules - * @param array $messages - * @param array $attributes - * @return array - */ - public function validate($rules = null, $messages = [], $attributes = []); -} diff --git a/vendor/filament/forms/src/Form.php b/vendor/filament/forms/src/Form.php deleted file mode 100644 index 7d7ca11e..00000000 --- a/vendor/filament/forms/src/Form.php +++ /dev/null @@ -1,7 +0,0 @@ -name('filament-forms') - ->hasCommands($this->getCommands()) - ->hasTranslations() - ->hasViews(); - } - - public function packageBooted(): void - { - FilamentAsset::register([ - AlpineComponent::make('color-picker', __DIR__ . '/../dist/components/color-picker.js'), - AlpineComponent::make('date-time-picker', __DIR__ . '/../dist/components/date-time-picker.js'), - AlpineComponent::make('file-upload', __DIR__ . '/../dist/components/file-upload.js'), - AlpineComponent::make('key-value', __DIR__ . '/../dist/components/key-value.js'), - AlpineComponent::make('markdown-editor', __DIR__ . '/../dist/components/markdown-editor.js'), - AlpineComponent::make('rich-editor', __DIR__ . '/../dist/components/rich-editor.js'), - AlpineComponent::make('select', __DIR__ . '/../dist/components/select.js'), - AlpineComponent::make('tags-input', __DIR__ . '/../dist/components/tags-input.js'), - AlpineComponent::make('textarea', __DIR__ . '/../dist/components/textarea.js'), - Css::make('forms', __DIR__ . '/../dist/index.css'), - ], 'filament/forms'); - - if ($this->app->runningInConsole()) { - foreach (app(Filesystem::class)->files(__DIR__ . '/../stubs/') as $file) { - $this->publishes([ - $file->getRealPath() => base_path("stubs/filament/{$file->getFilename()}"), - ], 'filament-stubs'); - } - } - - Testable::mixin(new TestsForms()); - Testable::mixin(new TestsComponentActions()); - } - - /** - * @return array - */ - protected function getCommands(): array - { - $commands = [ - Commands\MakeFieldCommand::class, - Commands\MakeFormCommand::class, - Commands\MakeLayoutComponentCommand::class, - ]; - - $aliases = []; - - foreach ($commands as $command) { - $class = 'Filament\\Forms\\Commands\\Aliases\\' . class_basename($command); - - if (! class_exists($class)) { - continue; - } - - $aliases[] = $class; - } - - return [ - ...$commands, - ...$aliases, - ]; - } -} diff --git a/vendor/filament/forms/src/Get.php b/vendor/filament/forms/src/Get.php deleted file mode 100644 index d0ad769b..00000000 --- a/vendor/filament/forms/src/Get.php +++ /dev/null @@ -1,23 +0,0 @@ -component->getLivewire(); - - return data_get( - $livewire, - $this->component->generateRelativeStatePath($path, $isAbsolute) - ); - } -} diff --git a/vendor/filament/forms/src/Set.php b/vendor/filament/forms/src/Set.php deleted file mode 100644 index f9d4ac64..00000000 --- a/vendor/filament/forms/src/Set.php +++ /dev/null @@ -1,26 +0,0 @@ -component->getLivewire(); - - data_set( - $livewire, - $this->component->generateRelativeStatePath($path, $isAbsolute), - $this->component->evaluate($state), - ); - - return $state; - } -} diff --git a/vendor/filament/forms/src/Testing/TestsComponentActions.php b/vendor/filament/forms/src/Testing/TestsComponentActions.php deleted file mode 100644 index d144803c..00000000 --- a/vendor/filament/forms/src/Testing/TestsComponentActions.php +++ /dev/null @@ -1,595 +0,0 @@ -parseNestedFormComponentActionComponentAndName($component, $name, $formName); - - foreach ($name as $actionNestingIndex => $actionName) { - $this->call( - 'mountFormComponentAction', - $component[$actionNestingIndex], - $actionName, - $arguments, - ); - } - - if (store($this->instance())->has('redirect')) { - return $this; - } - - if (! count($this->instance()->mountedFormComponentActions)) { - $this->assertNotDispatched('open-modal'); - - return $this; - } - - $this->assertSet('mountedFormComponentActionsComponents', $component); - $this->assertSet('mountedFormComponentActions', $name); - - $this->assertDispatched('open-modal', id: "{$this->instance()->getId()}-form-component-action"); - - return $this; - }; - } - - public function unmountFormComponentAction(): Closure - { - return function (): static { - $this->call('unmountFormComponentAction'); - - return $this; - }; - } - - public function setFormComponentActionData(): Closure - { - return function (array $data): static { - foreach (Arr::dot($data, prepend: 'mountedFormComponentActionsData.' . array_key_last($this->instance()->mountedFormComponentActionsData) . '.') as $key => $value) { - $this->set($key, $value); - } - - return $this; - }; - } - - public function assertFormComponentActionDataSet(): Closure - { - return function (array $data): static { - foreach (Arr::dot($data, prepend: 'mountedFormComponentActionsData.' . array_key_last($this->instance()->mountedFormComponentActionsData) . '.') as $key => $value) { - $this->assertSet($key, $value); - } - - return $this; - }; - } - - public function callFormComponentAction(): Closure - { - return function (string | array $component, string | array $name, array $data = [], array $arguments = [], string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormComponentActionVisible($component, $name, $arguments, $formName); - - /** @phpstan-ignore-next-line */ - $this->mountFormComponentAction($component, $name, $arguments, $formName); - - if (! $this->instance()->getMountedFormComponentAction()) { - return $this; - } - - /** @phpstan-ignore-next-line */ - $this->setFormComponentActionData($data); - - /** @phpstan-ignore-next-line */ - $this->callMountedFormComponentAction($arguments); - - return $this; - }; - } - - public function callMountedFormComponentAction(): Closure - { - return function (array $arguments = []): static { - $action = $this->instance()->getMountedFormComponentAction(); - - if (! $action) { - return $this; - } - - $this->call('callMountedFormComponentAction', $arguments); - - if (store($this->instance())->has('redirect')) { - return $this; - } - - if (! count($this->instance()->mountedFormComponentActions)) { - $this->assertDispatched('close-modal', id: "{$this->instance()->getId()}-form-component-action"); - } - - return $this; - }; - } - - public function assertFormComponentActionExists(): Closure - { - return function (string | array $component, string | array $name, string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedFormComponentActionComponentAndName($component, $name, $formName); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertInstanceOf( - Action::class, - $action, - message: "Failed asserting that a form component action with name [{$prettyName}] is registered to [{$component->getKey()}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertFormComponentActionDoesNotExist(): Closure - { - return function (string | array $component, string | array $name, string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedFormComponentActionComponentAndName($component, $name, $formName); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertNull( - $action, - message: "Failed asserting that a form component action with name [{$prettyName}] is not registered to [{$component->getKey()}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertFormComponentActionVisible(): Closure - { - return function (string | array $component, string | array $name, array $arguments = [], string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormComponentActionExists($component, $name, $formName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedFormComponentActionComponentAndName($component, $name, $formName, $arguments); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertFalse( - $action->isHidden(), - message: "Failed asserting that a form component action with name [{$prettyName}], registered to [{$component->getKey()}], is visible on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertFormComponentActionHidden(): Closure - { - return function (string | array $component, string | array $name, array $arguments = [], string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormComponentActionExists($component, $name, $formName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedFormComponentActionComponentAndName($component, $name, $formName, $arguments); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertTrue( - $action->isHidden(), - message: "Failed asserting that a form component action with name [{$prettyName}], registered to [{$component->getKey()}], is hidden on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertFormComponentActionEnabled(): Closure - { - return function (string | array $component, string | array $name, array $arguments = [], string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormComponentActionExists($component, $name, $formName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedFormComponentActionComponentAndName($component, $name, $formName, $arguments); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertFalse( - $action->isDisabled(), - message: "Failed asserting that a form component action with name [{$prettyName}], registered to [{$component->getKey()}], is enabled on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertFormComponentActionDisabled(): Closure - { - return function (string | array $component, string | array $name, array $arguments = [], string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormComponentActionExists($component, $name, $formName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedFormComponentActionComponentAndName($component, $name, $formName, $arguments); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertFalse( - $action->isEnabled(), - message: "Failed asserting that a form component action with name [{$prettyName}], registered to [{$component->getKey()}], is disabled on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertFormComponentActionHasIcon(): Closure - { - return function (string | array $component, string | array $name, string $icon, array $arguments = [], string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormComponentActionExists($component, $name, $formName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedFormComponentActionComponentAndName($component, $name, $formName, $arguments); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertTrue( - $action->getIcon() === $icon, - message: "Failed asserting that a form component action with name [{$prettyName}], registered to [{$component->getKey()}], has icon [{$icon}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertFormComponentActionDoesNotHaveIcon(): Closure - { - return function (string | array $component, string | array $name, string $icon, array $arguments = [], string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormComponentActionExists($component, $name, $formName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedFormComponentActionComponentAndName($component, $name, $formName, $arguments); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertFalse( - $action->getIcon() === $icon, - message: "Failed asserting that a form component action with name [{$prettyName}], registered to [{$component->getKey()}], does not have icon [{$icon}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertFormComponentActionHasLabel(): Closure - { - return function (string | array $component, string | array $name, string $label, array $arguments = [], string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormComponentActionExists($component, $name, $formName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedFormComponentActionComponentAndName($component, $name, $formName, $arguments); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertTrue( - $action->getLabel() === $label, - message: "Failed asserting that a form component action with name [{$prettyName}], registered to [{$component->getKey()}], has label [{$label}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertFormComponentActionDoesNotHaveLabel(): Closure - { - return function (string | array $component, string | array $name, string $label, array $arguments = [], string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormComponentActionExists($component, $name, $formName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedFormComponentActionComponentAndName($component, $name, $formName, $arguments); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertFalse( - $action->getLabel() === $label, - message: "Failed asserting that a form component action with name [{$prettyName}], registered to [{$component->getKey()}], does not have label [{$label}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertFormComponentActionHasColor(): Closure - { - return function (string | array $component, string | array $name, string | array $color, array $arguments = [], string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormComponentActionExists($component, $name, $formName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedFormComponentActionComponentAndName($component, $name, $formName, $arguments); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - $colorName = is_string($color) ? $color : 'custom'; - - Assert::assertTrue( - $action->getColor() === $color, - message: "Failed asserting that a form component action with name [{$prettyName}], registered to [{$component->getKey()}], has [{$colorName}] color on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertFormComponentActionDoesNotHaveColor(): Closure - { - return function (string | array $component, string | array $name, string | array $color, array $arguments = [], string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormComponentActionExists($component, $name, $formName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedFormComponentActionComponentAndName($component, $name, $formName, $arguments); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - $colorName = is_string($color) ? $color : 'custom'; - - Assert::assertFalse( - $action->getColor() === $color, - message: "Failed asserting that a form component action with name [{$prettyName}], registered to [{$component->getKey()}], does not have [{$colorName}] color on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertFormComponentActionHasUrl(): Closure - { - return function (string | array $component, string | array $name, string $url, array $arguments = [], string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormComponentActionExists($component, $name, $formName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedFormComponentActionComponentAndName($component, $name, $formName, $arguments); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertTrue( - $action->getUrl() === $url, - message: "Failed asserting that a form component action with name [{$prettyName}], registered to [{$component->getKey()}], has URL [{$url}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertFormComponentActionDoesNotHaveUrl(): Closure - { - return function (string | array $component, string | array $name, string $url, array $arguments = [], string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormComponentActionExists($component, $name, $formName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedFormComponentActionComponentAndName($component, $name, $formName, $arguments); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertFalse( - $action->getUrl() === $url, - message: "Failed asserting that a form component action with name [{$prettyName}], registered to [{$component->getKey()}], does not have URL [{$url}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertFormComponentActionShouldOpenUrlInNewTab(): Closure - { - return function (string | array $component, string | array $name, array $arguments = [], string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormComponentActionExists($component, $name, $formName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedFormComponentActionComponentAndName($component, $name, $formName, $arguments); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertTrue( - $action->shouldOpenUrlInNewTab(), - message: "Failed asserting that a form component action with name [{$prettyName}], registered to [{$component->getKey()}], should open url in new tab on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertFormComponentActionShouldNotOpenUrlInNewTab(): Closure - { - return function (string | array $component, string | array $name, array $arguments = [], string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormComponentActionExists($component, $name, $formName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedFormComponentActionComponentAndName($component, $name, $formName, $arguments); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertFalse( - $action->shouldOpenUrlInNewTab(), - message: "Failed asserting that a form component action with name [{$prettyName}], registered to [{$component->getKey()}], should not open url in new tab on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertFormComponentActionMounted(): Closure - { - return function (string | array $component, string | array $name, string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormComponentActionExists($component, $name, $formName); - - /** @phpstan-ignore-next-line */ - [$component, $name] = $this->parseNestedFormComponentActionComponentAndName($component, $name, $formName); - - $this->assertSet('mountedFormComponentActions', $name); - - return $this; - }; - } - - public function assertFormComponentActionNotMounted(): Closure - { - return function (string | array $component, string | array $name, string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormComponentActionExists($component, $name, $formName); - - /** @phpstan-ignore-next-line */ - [$component, $name] = $this->parseNestedFormComponentActionComponentAndName($component, $name, $formName); - - $this->assertNotSet('mountedFormComponentActions', $name); - - return $this; - }; - } - - public function assertFormComponentActionHalted(): Closure - { - return $this->assertFormComponentActionMounted(); - } - - public function assertHasFormComponentActionErrors(): Closure - { - return function (array $keys = []): static { - $this->assertHasErrors( - collect($keys) - ->mapWithKeys(function ($value, $key): array { - if (is_int($key)) { - return [$key => 'mountedFormComponentActionsData.' . array_key_last($this->instance()->mountedFormComponentActionsData) . '.' . $value]; - } - - return ['mountedFormComponentActionsData.' . array_key_last($this->instance()->mountedFormComponentActionsData) . '.' . $key => $value]; - }) - ->all(), - ); - - return $this; - }; - } - - public function assertHasNoFormComponentActionErrors(): Closure - { - return function (array $keys = []): static { - $this->assertHasNoErrors( - collect($keys) - ->mapWithKeys(function ($value, $key): array { - if (is_int($key)) { - return [$key => 'mountedFormComponentActionsData.' . array_key_last($this->instance()->mountedFormComponentActionsData) . '.' . $value]; - } - - return ['mountedFormComponentActionsData.' . array_key_last($this->instance()->mountedFormComponentActionsData) . '.' . $key => $value]; - }) - ->all(), - ); - - return $this; - }; - } - - public function getNestedFormComponentActionComponentAndName(): Closure - { - return function (string | array $component, string | array $name, string $formName = 'form', array $arguments = []): array { - $isSingular = ! is_array($component); - - /** @phpstan-ignore-next-line */ - [$component, $name] = $this->parseNestedFormComponentActionComponentAndName($component, $name, $formName); - - foreach ($component as $componentNestingIndex => $componentKey) { - foreach ($this->instance()->getCachedForms() as $form) { - $formComponent = $form->getComponent($componentKey); - - if (! $formComponent) { - continue; - } - - break; - } - - $action = ($formComponent ?? null)?->getAction($name[$componentNestingIndex]); - $action?->arguments($isSingular ? $arguments : $arguments[$componentNestingIndex] ?? []); - } - - return [$formComponent ?? null, $action ?? null]; - }; - } - - public function parseNestedFormComponentActionComponentAndName(): Closure - { - return function (string | array $component, string | array $name, string $formName = 'form'): array { - $this->assertFormExists($formName); - - $component = Arr::wrap($component); - - $livewire = $this->instance(); - - /** @var ComponentContainer $form */ - $form = $livewire->{$formName}; - - $components = []; - - foreach ($component as $componentIndex => $componentKey) { - if ($componentIndex) { - $components[] = 'mountedFormComponentActionData.' . ($componentIndex - 1) . ".{$componentKey}"; - - continue; - } - - $components[] = "{$form->getStatePath()}.{$componentKey}"; - } - - return [$components, $this->parseNestedActionName($name)]; - }; - } -} diff --git a/vendor/filament/forms/src/Testing/TestsForms.php b/vendor/filament/forms/src/Testing/TestsForms.php deleted file mode 100644 index 78d66ba3..00000000 --- a/vendor/filament/forms/src/Testing/TestsForms.php +++ /dev/null @@ -1,299 +0,0 @@ -assertFormExists($formName); - - $livewire = $this->instance(); - - /** @var ComponentContainer $form */ - $form = $livewire->{$formName}; - - $formStatePath = $form->getStatePath(); - - foreach (Arr::dot($state, prepend: filled($formStatePath) ? "{$formStatePath}." : '') as $key => $value) { - $this->set($key, $value); - } - - return $this; - }; - } - - public function assertFormSet(): Closure - { - return function (array $state, string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormExists($formName); - - $livewire = $this->instance(); - - /** @var ComponentContainer $form */ - $form = $livewire->{$formName}; - - $formStatePath = $form->getStatePath(); - - foreach (Arr::dot($state, prepend: filled($formStatePath) ? "{$formStatePath}." : '') as $key => $value) { - $this->assertSet($key, $value); - } - - return $this; - }; - } - - public function assertHasFormErrors(): Closure - { - return function (array $keys = [], string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormExists($formName); - - $livewire = $this->instance(); - - /** @var ComponentContainer $form */ - $form = $livewire->{$formName}; - - $formStatePath = $form->getStatePath(); - - $this->assertHasErrors( - collect($keys) - ->mapWithKeys(function ($value, $key) use ($formStatePath): array { - if (is_int($key)) { - return [$key => (filled($formStatePath) ? "{$formStatePath}.{$value}" : $value)]; - } - - return [(filled($formStatePath) ? "{$formStatePath}.{$key}" : $key) => $value]; - }) - ->all(), - ); - - return $this; - }; - } - - public function assertHasNoFormErrors(): Closure - { - return function (array $keys = [], string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormExists($formName); - - $livewire = $this->instance(); - - /** @var ComponentContainer $form */ - $form = $livewire->{$formName}; - - $formStatePath = $form->getStatePath(); - - $this->assertHasNoErrors( - collect($keys) - ->mapWithKeys(function ($value, $key) use ($formStatePath): array { - if (is_int($key)) { - return [$key => (filled($formStatePath) ? "{$formStatePath}.{$value}" : $value)]; - } - - return [(filled($formStatePath) ? "{$formStatePath}.{$key}" : $key) => $value]; - }) - ->all(), - ); - - return $this; - }; - } - - public function assertFormExists(): Closure - { - return function (string $name = 'form'): static { - /** @var ComponentContainer $form */ - $form = $this->instance()->{$name}; - - $livewireClass = $this->instance()::class; - - Assert::assertInstanceOf( - ComponentContainer::class, - $form, - "Failed asserting that a form with the name [{$name}] exists on the [{$livewireClass}] component." - ); - - return $this; - }; - } - - public function assertFormFieldExists(): Closure - { - return function (string $fieldName, string | Closure $formName = 'form', ?Closure $checkFieldUsing = null): static { - if ($formName instanceof Closure) { - $checkFieldUsing = $formName; - $formName = 'form'; - } - - /** @phpstan-ignore-next-line */ - $this->assertFormExists($formName); - - /** @var ComponentContainer $form */ - $form = $this->instance()->{$formName}; - - /** @var ?Field $field */ - $field = $form->getFlatFields(withHidden: true)[$fieldName] ?? null; - - $livewireClass = $this->instance()::class; - - Assert::assertInstanceOf( - Field::class, - $field, - "Failed asserting that a field with the name [{$fieldName}] exists on the form with the name [{$formName}] on the [{$livewireClass}] component." - ); - - if ($checkFieldUsing) { - Assert::assertTrue( - $checkFieldUsing($field), - "Failed asserting that a field with the name [{$fieldName}] and provided configuration exists on the form with the name [{$formName}] on the [{$livewireClass}] component." - ); - } - - return $this; - }; - } - - public function assertFormFieldIsDisabled(): Closure - { - return function (string $fieldName, string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormFieldExists($fieldName, $formName); - - /** @var ComponentContainer $form */ - $form = $this->instance()->{$formName}; - - /** @var Field $field */ - $field = $form->getFlatFields(withHidden: true)[$fieldName]; - - $livewireClass = $this->instance()::class; - - /** @phpstan-ignore-next-line */ - $this->assertFormFieldExists($fieldName, $formName, function (Field $field) use ($fieldName, $formName, $livewireClass): bool { - Assert::assertTrue( - $field->isDisabled(), - "Failed asserting that a field with the name [{$fieldName}] is disabled on the form named [{$formName}] on the [{$livewireClass}] component." - ); - - return true; - }); - - return $this; - }; - } - - public function assertFormFieldIsEnabled(): Closure - { - return function (string $fieldName, string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormFieldExists($fieldName, $formName); - - /** @var ComponentContainer $form */ - $form = $this->instance()->{$formName}; - - /** @var Field $field */ - $field = $form->getFlatFields(withHidden: true)[$fieldName]; - - $livewireClass = $this->instance()::class; - - /** @phpstan-ignore-next-line */ - $this->assertFormFieldExists($fieldName, $formName, function (Field $field) use ($fieldName, $formName, $livewireClass): bool { - Assert::assertFalse( - $field->isDisabled(), - "Failed asserting that a field with the name [{$fieldName}] is enabled on the form named [{$formName}] on the [{$livewireClass}] component." - ); - - return true; - }); - - return $this; - }; - } - - public function assertFormFieldIsReadOnly(): Closure - { - return function (string $fieldName, string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormFieldExists($fieldName, $formName); - - /** @var ComponentContainer $form */ - $form = $this->instance()->{$formName}; - - /** @var TextInput $field */ - $field = $form->getFlatFields(withHidden: true)[$fieldName]; - - $livewireClass = $this->instance()::class; - - Assert::assertTrue( - $field->isReadOnly(), - "Failed asserting that a field with the name [{$fieldName}] is read-only on the form named [{$formName}] on the [{$livewireClass}] component." - ); - - return $this; - }; - } - - public function assertFormFieldIsHidden(): Closure - { - return function (string $fieldName, string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormFieldExists($fieldName, $formName); - - /** @var ComponentContainer $form */ - $form = $this->instance()->{$formName}; - - $fields = $form->getFlatFields(withHidden: false); - - $livewireClass = $this->instance()::class; - - Assert::assertArrayNotHasKey( - $fieldName, - $fields, - "Failed asserting that a field with the name [{$fieldName}] is hidden on the form named [{$formName}] on the [{$livewireClass}] component." - ); - - return $this; - }; - } - - public function assertFormFieldIsVisible(): Closure - { - return function (string $fieldName, string $formName = 'form'): static { - /** @phpstan-ignore-next-line */ - $this->assertFormFieldExists($fieldName, $formName); - - /** @var ComponentContainer $form */ - $form = $this->instance()->{$formName}; - - $fields = $form->getFlatFields(withHidden: false); - - $livewireClass = $this->instance()::class; - - Assert::assertArrayHasKey( - $fieldName, - $fields, - "Failed asserting that a field with the name [{$fieldName}] is visible on the form named [{$formName}] on the [{$livewireClass}] component." - ); - - return $this; - }; - } -} diff --git a/vendor/filament/forms/src/helpers.php b/vendor/filament/forms/src/helpers.php deleted file mode 100644 index 2446e230..00000000 --- a/vendor/filament/forms/src/helpers.php +++ /dev/null @@ -1,63 +0,0 @@ - $array - * @param scalar $keyToMoveAfter - * @return array - */ - function array_move_after(array $array, $keyToMoveAfter): array - { - $keys = array_keys($array); - - $indexToMoveAfter = array_search($keyToMoveAfter, $keys); - $keyToMoveBefore = $keys[$indexToMoveAfter + 1] ?? null; - - if (blank($keyToMoveBefore)) { - return $array; - } - - $keys[$indexToMoveAfter + 1] = $keyToMoveAfter; - $keys[$indexToMoveAfter] = $keyToMoveBefore; - - $newArray = []; - - foreach ($keys as $key) { - $newArray[$key] = $array[$key]; - } - - return $newArray; - } -} - -if (! function_exists('Filament\Forms\array_move_before')) { - /** - * @param array $array - * @param array-key $keyToMoveBefore - * @return array - */ - function array_move_before(array $array, $keyToMoveBefore): array - { - $keys = array_keys($array); - - $indexToMoveBefore = array_search($keyToMoveBefore, $keys); - $keyToMoveAfter = $keys[$indexToMoveBefore - 1] ?? null; - - if (blank($keyToMoveAfter)) { - return $array; - } - - $keys[$indexToMoveBefore - 1] = $keyToMoveBefore; - $keys[$indexToMoveBefore] = $keyToMoveAfter; - - $newArray = []; - - foreach ($keys as $key) { - $newArray[$key] = $array[$key]; - } - - return $newArray; - } -} diff --git a/vendor/filament/forms/stubs/CreateForm.stub b/vendor/filament/forms/stubs/CreateForm.stub deleted file mode 100644 index d820e486..00000000 --- a/vendor/filament/forms/stubs/CreateForm.stub +++ /dev/null @@ -1,47 +0,0 @@ -form->fill(); - } - - public function form(Form $form): Form - { - return $form - ->schema([ -{{ schema }} - ]) - ->statePath('data') - ->model({{ modelClass }}::class); - } - - public function create(): void - { - $data = $this->form->getState(); - - $record = {{ modelClass }}::create($data); - - $this->form->model($record)->saveRelationships(); - } - - public function render(): View - { - return view('{{ view }}'); - } -} \ No newline at end of file diff --git a/vendor/filament/forms/stubs/EditForm.stub b/vendor/filament/forms/stubs/EditForm.stub deleted file mode 100644 index 609f673b..00000000 --- a/vendor/filament/forms/stubs/EditForm.stub +++ /dev/null @@ -1,47 +0,0 @@ -form->fill($this->record->attributesToArray()); - } - - public function form(Form $form): Form - { - return $form - ->schema([ -{{ schema }} - ]) - ->statePath('data') - ->model($this->record); - } - - public function save(): void - { - $data = $this->form->getState(); - - $this->record->update($data); - } - - public function render(): View - { - return view('{{ view }}'); - } -} diff --git a/vendor/filament/forms/stubs/Field.stub b/vendor/filament/forms/stubs/Field.stub deleted file mode 100644 index 521e95cd..00000000 --- a/vendor/filament/forms/stubs/Field.stub +++ /dev/null @@ -1,10 +0,0 @@ - -
    - -
    - diff --git a/vendor/filament/forms/stubs/Form.stub b/vendor/filament/forms/stubs/Form.stub deleted file mode 100644 index da9ec0e2..00000000 --- a/vendor/filament/forms/stubs/Form.stub +++ /dev/null @@ -1,43 +0,0 @@ -form->fill(); - } - - public function form(Form $form): Form - { - return $form - ->schema([ - // - ]) - ->statePath('data'); - } - - public function submit(): void - { - $data = $this->form->getState(); - - // - } - - public function render(): View - { - return view('{{ view }}'); - } -} \ No newline at end of file diff --git a/vendor/filament/forms/stubs/FormView.stub b/vendor/filament/forms/stubs/FormView.stub deleted file mode 100644 index bdddb320..00000000 --- a/vendor/filament/forms/stubs/FormView.stub +++ /dev/null @@ -1,11 +0,0 @@ -
    - - {{ $this->form }} - - - - - -
    diff --git a/vendor/filament/forms/stubs/LayoutComponent.stub b/vendor/filament/forms/stubs/LayoutComponent.stub deleted file mode 100644 index 9e4940cc..00000000 --- a/vendor/filament/forms/stubs/LayoutComponent.stub +++ /dev/null @@ -1,15 +0,0 @@ - - {{ $getChildComponentContainer() }} -
    diff --git a/vendor/filament/infolists/.stubs.php b/vendor/filament/infolists/.stubs.php deleted file mode 100644 index 0addfd83..00000000 --- a/vendor/filament/infolists/.stubs.php +++ /dev/null @@ -1,65 +0,0 @@ - **Livewire v3 is recently released!**
    -> The Livewire team have done a great job in making it stable, but it was a complete rewrite of Livewire v2. You may encounter issues, so we recommend testing your application thoroughly before using Filament v3 in production. - -## Installation - -Require the Infolist Builder package using Composer: - -```bash -composer require filament/infolists:"^3.2" -W -``` - -## New Laravel projects - -To quickly get started with Filament in a new Laravel project, run the following commands to install [Livewire](https://livewire.laravel.com), [Alpine.js](https://alpinejs.dev), and [Tailwind CSS](https://tailwindcss.com): - -> Since these commands will overwrite existing files in your application, only run this in a new Laravel project! - -```bash -php artisan filament:install --scaffold --infolists - -npm install - -npm run dev -``` - -## Existing Laravel projects - -Run the following command to install the Infolist Builder package assets: - -```bash -php artisan filament:install --infolists -``` - -### Installing Tailwind CSS - -Run the following command to install Tailwind CSS with the Tailwind Forms and Typography plugins: - -```bash -npm install tailwindcss @tailwindcss/forms @tailwindcss/typography postcss postcss-nesting autoprefixer --save-dev -``` - -Create a new `tailwind.config.js` file and add the Filament `preset` *(includes the Filament color scheme and the required Tailwind plugins)*: - -```js -import preset from './vendor/filament/support/tailwind.config.preset' - -export default { - presets: [preset], - content: [ - './app/Filament/**/*.php', - './resources/views/filament/**/*.blade.php', - './vendor/filament/**/*.blade.php', - ], -} -``` - -### Configuring styles - -Add Tailwind's CSS layers to your `resources/css/app.css`: - -```css -@tailwind base; -@tailwind components; -@tailwind utilities; -``` - -Create a `postcss.config.js` file in the root of your project and register Tailwind CSS, PostCSS Nesting and Autoprefixer as plugins: - -```js -export default { - plugins: { - 'tailwindcss/nesting': 'postcss-nesting', - tailwindcss: {}, - autoprefixer: {}, - }, -} -``` - -### Automatically refreshing the browser -You may also want to update your `vite.config.js` file to refresh the page automatically when Livewire components are updated: - -```js -import { defineConfig } from 'vite' -import laravel, { refreshPaths } from 'laravel-vite-plugin' - -export default defineConfig({ - plugins: [ - laravel({ - input: ['resources/css/app.css', 'resources/js/app.js'], - refresh: [ - ...refreshPaths, - 'app/Livewire/**', - ], - }), - ], -}) -``` - -### Compiling assets - -Compile your new CSS and Javascript assets using `npm run dev`. - -### Configuring your layout - -Create a new `resources/views/components/layouts/app.blade.php` layout file for Livewire components: - -```blade - - - - - - - - - - {{ config('app.name') }} - - - - @filamentStyles - @vite('resources/css/app.css') - - - - {{ $slot }} - - @filamentScripts - @vite('resources/js/app.js') - - -``` - -## Publishing configuration - -You can publish the package configuration using the following command (optional): - -```bash -php artisan vendor:publish --tag=filament-config -``` - -## Upgrading - -Filament automatically upgrades to the latest non-breaking version when you run `composer update`. After any updates, all Laravel caches need to be cleared, and frontend assets need to be republished. You can do this all at once using the `filament:upgrade` command, which should have been added to your `composer.json` file when you ran `filament:install` the first time: - -```json -"post-autoload-dump": [ - // ... - "@php artisan filament:upgrade" -], -``` - -Please note that `filament:upgrade` does not actually handle the update process, as Composer does that already. If you're upgrading manually without a `post-autoload-dump` hook, you can run the command yourself: - -```bash -composer update - -php artisan filament:upgrade -``` diff --git a/vendor/filament/infolists/docs/02-getting-started.md b/vendor/filament/infolists/docs/02-getting-started.md deleted file mode 100644 index 33cf76e5..00000000 --- a/vendor/filament/infolists/docs/02-getting-started.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Getting started ---- - -## Overview - -Filament's infolist package allows you to [render a read-only list of data about a particular entity](adding-an-infolist-to-a-livewire-component). It's also used within other Filament packages, such as the [Panel Builder](../panels) for displaying [app resources](../panels/resources/getting-started) and [relation managers](../panels/resources/relation-managers), as well as for [action modals](../actions). Learning the features of the Infolist Builder will be incredibly time-saving when both building your own custom Livewire applications and using Filament's other packages. - -This guide will walk you through the basics of building infolists with Filament's infolist package. If you're planning to add a new infolist to your own Livewire component, you should [do that first](adding-an-infolist-to-a-livewire-component) and then come back. If you're adding an infolist to an [app resource](../panels/resources/getting-started), or another Filament package, you're ready to go! - -## Defining entries - -The first step to building an infolist is to define the entries that will be displayed in the list. You can do this by calling the `schema()` method on an `Infolist` object. This method accepts an array of entry objects. - -```php -use Filament\Infolists\Components\TextEntry; - -$infolist - ->schema([ - TextEntry::make('title'), - TextEntry::make('slug'), - TextEntry::make('content'), - ]); -``` - -Each entry is a piece of information that should be displayed in the infolist. The `TextEntry` is used for displaying text, but there are [other entry types available](entries/getting-started#available-entries). - -Infolists within the Panel Builder and other packages usually have 2 columns by default. For custom infolists, you can use the `columns()` method to achieve the same effect: - -```php -$infolist - ->schema([ - // ... - ]) - ->columns(2); -``` - -Now, the `content` entry will only consume half of the available width. We can use the `columnSpan()` method to make it span the full width: - -```php -use Filament\Infolists\Components\TextEntry; - -[ - TextEntry::make('title'), - TextEntry::make('slug') - TextEntry::make('content') - ->columnSpan(2), // or `columnSpan('full')`, -] -``` - -You can learn more about columns and spans in the [layout documentation](layout/grid). You can even make them responsive! - -## Using layout components - -The Infolist Builder allows you to use [layout components](layout/getting-started#available-layout-components) inside the schema array to control how entries are displayed. `Section` is a layout component, and it allows you to add a heading and description to a set of entries. It can also allow entries inside it to collapse, which saves space in long infolists. - -```php -use Filament\Infolists\Components\Section; -use Filament\Infolists\Components\TextEntry; - -[ - TextEntry::make('title'), - TextEntry::make('slug'), - TextEntry::make('content') - ->columnSpan(2) - ->markdown(), - Section::make('Media') - ->description('Images used in the page layout.') - ->schema([ - // ... - ]), -] -``` - -In this example, you can see how the `Section` component has its own `schema()` method. You can use this to nest other entries and layout components inside: - -```php -use Filament\Infolists\Components\ImageEntry; -use Filament\Infolists\Components\Section; -use Filament\Infolists\Components\TextEntry; - -Section::make('Media') - ->description('Images used in the page layout.') - ->schema([ - ImageEntry::make('hero_image'), - TextEntry::make('alt_text'), - ]) -``` - -This section now contains an [`ImageEntry`](entries/image) and a [`TextEntry`](entries/text). You can learn more about those entries and their functionalities on the respective docs pages. - -## Next steps with the infolists package - -Now you've finished reading this guide, where to next? Here are some suggestions: - -- [Explore the available entries to display data in your infolist.](entries/getting-started#available-entries) -- [Discover how to build complex, responsive layouts without touching CSS.](layout/getting-started) diff --git a/vendor/filament/infolists/docs/03-entries/01-getting-started.md b/vendor/filament/infolists/docs/03-entries/01-getting-started.md deleted file mode 100644 index 912253d2..00000000 --- a/vendor/filament/infolists/docs/03-entries/01-getting-started.md +++ /dev/null @@ -1,305 +0,0 @@ ---- -title: Getting started ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -Entry classes can be found in the `Filament\Infolists\Components` namespace. You can put them inside the `$infolist->schema()` method: - -```php -use Filament\Infolists\Infolist; - -public function infolist(Infolist $infolist): Infolist -{ - return $infolist - ->schema([ - // ... - ]); -} -``` - -Entries may be created using the static `make()` method, passing its unique name. You may use "dot notation" to access entries within relationships. - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('title') - -TextEntry::make('author.name') -``` - - - -## Available entries - -- [Text entry](text) -- [Icon entry](icon) -- [Image entry](image) -- [Color entry](color) -- [Key-value entry](key-value) -- [Repeatable entry](repeatable) - -You may also [create your own custom entries](custom) to display data however you wish. - -## Setting a label - -By default, the label of the entry, which is displayed in the header of the infolist, is generated from the name of the entry. You may customize this using the `label()` method: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('title') - ->label('Post title') -``` - -Optionally, you can have the label automatically translated [using Laravel's localization features](https://laravel.com/docs/localization) with the `translateLabel()` method: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('title') - ->translateLabel() // Equivalent to `label(__('Title'))` -``` - -## Entry URLs - -When an entry is clicked, you may open a URL. - -### Opening URLs - -To open a URL, you may use the `url()` method, passing a callback or static URL to open. Callbacks accept a `$record` parameter which you may use to customize the URL: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('title') - ->url(fn (Post $record): string => route('posts.edit', ['post' => $record])) -``` - -You may also choose to open the URL in a new tab: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('title') - ->url(fn (Post $record): string => route('posts.edit', ['post' => $record])) - ->openUrlInNewTab() -``` - -## Setting a default value - -To set a default value for entries with an empty state, you may use the `default()` method. This method will treat the default state as if it were real, so entries like [image](image) or [color](color) will display the default image or color. - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('title') - ->default('Untitled') -``` - -## Adding placeholder text if an entry is empty - -Sometimes you may want to display placeholder text for entries with an empty state, which is styled as a lighter gray text. This differs from the [default value](#setting-a-default-value), as the placeholder is always text and not treated as if it were real state. - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('title') - ->placeholder('Untitled') -``` - - - -## Adding helper text below the entry - -Sometimes, you may wish to provide extra information for the user of the infolist. For this purpose, you may add helper text below the entry. - -The `helperText()` method is used to add helper text: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('name') - ->helperText('Your full name here, including any middle names.') -``` - -This method accepts a plain text string, or an instance of `Illuminate\Support\HtmlString` or `Illuminate\Contracts\Support\Htmlable`. This allows you to render HTML, or even markdown, in the helper text: - -```php -use Filament\Infolists\Components\TextEntry; -use Illuminate\Support\HtmlString; - -TextEntry::make('name') - ->helperText(new HtmlString('Your full name here, including any middle names.')) - -TextEntry::make('name') - ->helperText(str('Your **full name** here, including any middle names.')->inlineMarkdown()->toHtmlString()) - -TextEntry::make('name') - ->helperText(view('name-helper-text')) -``` - - - -## Adding a hint next to the label - -As well as [helper text](#adding-helper-text-below-the-entry) below the entry, you may also add a "hint" next to the label of the entry. This is useful for displaying additional information about the entry, such as a link to a help page. - -The `hint()` method is used to add a hint: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('apiKey') - ->label('API key') - ->hint('Documentation? What documentation?!') -``` - -This method accepts a plain text string, or an instance of `Illuminate\Support\HtmlString` or `Illuminate\Contracts\Support\Htmlable`. This allows you to render HTML, or even markdown, in the helper text: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('apiKey') - ->label('API key') - ->hint(new HtmlString('Documentation')) - -TextEntry::make('apiKey') - ->label('API key') - ->hint(str('[Documentation](/documentation)')->inlineMarkdown()->toHtmlString()) - -TextEntry::make('apiKey') - ->label('API key') - ->hint(view('api-key-hint')) -``` - - - -### Changing the text color of the hint - -You can change the text color of the hint. By default, it's gray, but you may use `danger`, `info`, `primary`, `success` and `warning`: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('apiKey') - ->label('API key') - ->hint(str('[Documentation](/documentation)')->inlineMarkdown()->toHtmlString()) - ->hintColor('primary') -``` - - - -### Adding an icon aside the hint - -Hints may also have an [icon](https://blade-ui-kit.com/blade-icons?set=1#search) rendered next to them: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('apiKey') - ->label('API key') - ->hint(str('[Documentation](/documentation)')->inlineMarkdown()->toHtmlString()) - ->hintIcon('heroicon-m-question-mark-circle') -``` - - - -#### Adding a tooltip to a hint icon - -Additionally, you can add a tooltip to display when you hover over the hint icon, using the `tooltip` parameter of `hintIcon()`: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('apiKey') - ->label('API key') - ->hint(str('[Documentation](/documentation)')->inlineMarkdown()->toHtmlString()) - ->hintIcon('heroicon-m-question-mark-circle', tooltip: 'Read it!') -``` - -## Hiding entries - -To hide an entry conditionally, you may use the `hidden()` and `visible()` methods, whichever you prefer: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('role') - ->hidden(! auth()->user()->isAdmin()) -// or -TextEntry::make('role') - ->visible(auth()->user()->isAdmin()) -``` - -## Calculated state - -Sometimes you need to calculate the state of an entry, instead of directly reading it from a database entry. - -By passing a callback function to the `state()` method, you can customize the returned state for that entry: - -```php -Infolists\Components\TextEntry::make('amount_including_vat') - ->state(function (Model $record): float { - return $record->amount * (1 + $record->vat_rate); - }) -``` - -## Tooltips - -You may specify a tooltip to display when you hover over an entry: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('title') - ->tooltip('Shown at the top of the page') -``` - - - -This method also accepts a closure that can access the current infolist record: - -```php -use Filament\Infolists\Components\TextEntry; -use Illuminate\Database\Eloquent\Model; - -TextEntry::make('title') - ->tooltip(fn (Model $record): string => "By {$record->author->name}") -``` - -## Custom attributes - -The HTML of entries can be customized, by passing an array of `extraAttributes()`: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('slug') - ->extraAttributes(['class' => 'bg-gray-200']) -``` - -These get merged onto the outer `
    ` element of each entry in that entry. - -## Global settings - -If you wish to change the default behaviour of all entries globally, then you can call the static `configureUsing()` method inside a service provider's `boot()` method, to which you pass a Closure to modify the entries using. For example, if you wish to make all `TextEntry` components [`words(10)`](text#limiting-word-count), you can do it like so: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::configureUsing(function (TextEntry $entry): void { - $entry - ->words(10); -}); -``` - -Of course, you are still able to overwrite this on each entry individually: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('name') - ->words(null) -``` diff --git a/vendor/filament/infolists/docs/03-entries/02-text.md b/vendor/filament/infolists/docs/03-entries/02-text.md deleted file mode 100644 index e1cb0d15..00000000 --- a/vendor/filament/infolists/docs/03-entries/02-text.md +++ /dev/null @@ -1,347 +0,0 @@ ---- -title: Text entry ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -Text entries display simple text: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('title') -``` - - - -## Displaying as a "badge" - -By default, text is quite plain and has no background color. You can make it appear as a "badge" instead using the `badge()` method. A great use case for this is with statuses, where may want to display a badge with a [color](#customizing-the-color) that matches the status: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('status') - ->badge() - ->color(fn (string $state): string => match ($state) { - 'draft' => 'gray', - 'reviewing' => 'warning', - 'published' => 'success', - 'rejected' => 'danger', - }) -``` - - - -You may add other things to the badge, like an [icon](#adding-an-icon). - -## Date formatting - -You may use the `date()` and `dateTime()` methods to format the entry's state using [PHP date formatting tokens](https://www.php.net/manual/en/datetime.format.php): - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('created_at') - ->dateTime() -``` - -You may use the `since()` method to format the entry's state using [Carbon's `diffForHumans()`](https://carbon.nesbot.com/docs/#api-humandiff): - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('created_at') - ->since() -``` - -## Number formatting - -The `numeric()` method allows you to format an entry as a number, using PHP's `number_format()`: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('stock') - ->numeric( - decimalPlaces: 0, - decimalSeparator: '.', - thousandsSeparator: ',', - ) -``` - -## Currency formatting - -The `money()` method allows you to easily format monetary values, in any currency: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('price') - ->money('EUR') -``` - -There is also a `divideBy` argument for `money()` that allows you to divide the original value by a number before formatting it. This could be useful if your database stores the price in cents, for example: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('price') - ->money('EUR', divideBy: 100) -``` - -## Limiting text length - -You may `limit()` the length of the entry's value: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('description') - ->limit(50) -``` - -You may also reuse the value that is being passed to `limit()`: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('description') - ->limit(50) - ->tooltip(function (TextEntry $component): ?string { - $state = $component->getState(); - - if (strlen($state) <= $component->getCharacterLimit()) { - return null; - } - - // Only render the tooltip if the entry contents exceeds the length limit. - return $state; - }) -``` - -## Limiting word count - -You may limit the number of `words()` displayed in the entry: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('description') - ->words(10) -``` - -## Listing multiple values - -By default, if there are multiple values inside your text entry, they will be comma-separated. You may use the `listWithLineBreaks()` method to display them on new lines instead: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('authors.name') - ->listWithLineBreaks() -``` - - - -### Adding bullet points to the list - -You may add a bullet point to each list item using the `bulleted()` method: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('authors.name') - ->listWithLineBreaks() - ->bulleted() -``` - - - -### Limiting the number of values in the list - -You can limit the number of values in the list using the `limitList()` method: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('authors.name') - ->listWithLineBreaks() - ->limitList(3) -``` - -#### Expanding the limited list - -You can allow the limited items to be expanded and collapsed, using the `expandableLimitedList()` method: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('authors.name') - ->listWithLineBreaks() - ->limitList(3) - ->expandableLimitedList() -``` - -Please note that this is only a feature for `listWithLineBreaks()` or `bulleted()`, where each item is on its own line. - -### Using a list separator - -If you want to "explode" a text string from your model into multiple list items, you can do so with the `separator()` method. This is useful for displaying comma-separated tags [as badges](#displaying-as-a-badge), for example: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('tags') - ->badge() - ->separator(',') -``` - -## Rendering HTML - -If your entry value is HTML, you may render it using `html()`: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('description') - ->html() -``` - -### Rendering Markdown as HTML - -If your entry value is Markdown, you may render it using `markdown()`: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('description') - ->markdown() -``` - -## Custom formatting - -You may instead pass a custom formatting callback to `formatStateUsing()`, which accepts the `$state` of the entry, and optionally its `$record`: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('status') - ->formatStateUsing(fn (string $state): string => __("statuses.{$state}")) -``` - -## Customizing the color - -You may set a color for the text, either `danger`, `gray`, `info`, `primary`, `success` or `warning`: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('status') - ->color('primary') -``` - - - -## Adding an icon - -Text entries may also have an [icon](https://blade-ui-kit.com/blade-icons?set=1#search): - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('email') - ->icon('heroicon-m-envelope') -``` - - - -You may set the position of an icon using `iconPosition()`: - -```php -use Filament\Infolists\Components\TextEntry; -use Filament\Support\Enums\IconPosition; - -TextEntry::make('email') - ->icon('heroicon-m-envelope') - ->iconPosition(IconPosition::After) // `IconPosition::Before` or `IconPosition::After` -``` - - - -The icon color defaults to the text color, but you may customize the icon color separately using `iconColor()`: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('email') - ->icon('heroicon-m-envelope') - ->iconColor('primary') -``` - - - -## Customizing the text size - -Text columns have small font size by default, but you may change this to `TextEntrySize::ExtraSmall`, `TextEntrySize::Medium`, or `TextEntrySize::Large`. - -For instance, you may make the text larger using `size(TextEntrySize::Large)`: - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('title') - ->size(TextEntry\TextEntrySize::Large) -``` - - - -## Customizing the font weight - -Text entries have regular font weight by default, but you may change this to any of the following options: `FontWeight::Thin`, `FontWeight::ExtraLight`, `FontWeight::Light`, `FontWeight::Medium`, `FontWeight::SemiBold`, `FontWeight::Bold`, `FontWeight::ExtraBold` or `FontWeight::Black`. - -For instance, you may make the font bold using `weight(FontWeight::Bold)`: - -```php -use Filament\Infolists\Components\TextEntry; -use Filament\Support\Enums\FontWeight; - -TextEntry::make('title') - ->weight(FontWeight::Bold) -``` - - - -## Customizing the font family - -You can change the text font family to any of the following options: `FontFamily::Sans`, `FontFamily::Serif` or `FontFamily::Mono`. - -For instance, you may make the font monospaced using `fontFamily(FontFamily::Mono)`: - -```php -use Filament\Support\Enums\FontFamily; -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('apiKey') - ->label('API key') - ->fontFamily(FontFamily::Mono) -``` - - - -## Allowing the text to be copied to the clipboard - -You may make the text copyable, such that clicking on the entry copies the text to the clipboard, and optionally specify a custom confirmation message and duration in milliseconds. This feature only works when SSL is enabled for the app. - -```php -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('apiKey') - ->label('API key') - ->copyable() - ->copyMessage('Copied!') - ->copyMessageDuration(1500) -``` - - diff --git a/vendor/filament/infolists/docs/03-entries/03-icon.md b/vendor/filament/infolists/docs/03-entries/03-icon.md deleted file mode 100644 index a62fddef..00000000 --- a/vendor/filament/infolists/docs/03-entries/03-icon.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Icon entry ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -Icon entries render an [icon](https://blade-ui-kit.com/blade-icons?set=1#search) representing their contents: - -```php -use Filament\Infolists\Components\IconEntry; - -IconEntry::make('status') - ->icon(fn (string $state): string => match ($state) { - 'draft' => 'heroicon-o-pencil', - 'reviewing' => 'heroicon-o-clock', - 'published' => 'heroicon-o-check-circle', - }) -``` - -In the function, `$state` is the value of the entry, and `$record` can be used to access the underlying Eloquent record. - - - -## Customizing the color - -Icon entries may also have a set of icon colors, using the same syntax. They may be either `danger`, `gray`, `info`, `primary`, `success` or `warning`: - -```php -use Filament\Infolists\Components\IconEntry; - -IconEntry::make('status') - ->color(fn (string $state): string => match ($state) { - 'draft' => 'info', - 'reviewing' => 'warning', - 'published' => 'success', - default => 'gray', - }) -``` - -In the function, `$state` is the value of the entry, and `$record` can be used to access the underlying Eloquent record. - - - -## Customizing the size - -The default icon size is `IconEntrySize::Large`, but you may customize the size to be either `IconEntrySize::ExtraSmall`, `IconEntrySize::Small`, `IconEntrySize::Medium`, `IconEntrySize::ExtraLarge` or `IconEntrySize::TwoExtraLarge`: - -```php -use Filament\Infolists\Components\IconEntry; - -IconEntry::make('status') - ->size(IconEntry\IconEntrySize::Medium) -``` - - - -## Handling booleans - -Icon entries can display a check or cross icon based on the contents of the database entry, either true or false, using the `boolean()` method: - -```php -use Filament\Infolists\Components\IconEntry; - -IconEntry::make('is_featured') - ->boolean() -``` - -> If this column in the model class is already cast as a `bool` or `boolean`, Filament is able to detect this, and you do not need to use `boolean()` manually. - - - -### Customizing the boolean icons - -You may customize the icon representing each state. Icons are the name of a Blade component present. By default, [Heroicons](https://heroicons.com) are installed: - -```php -use Filament\Infolists\Components\IconEntry; - -IconEntry::make('is_featured') - ->boolean() - ->trueIcon('heroicon-o-check-badge') - ->falseIcon('heroicon-o-x-mark') -``` - - - -### Customizing the boolean colors - -You may customize the icon color representing each state. These may be either `danger`, `gray`, `info`, `primary`, `success` or `warning`: - -```php -use Filament\Infolists\Components\IconEntry; - -IconEntry::make('is_featured') - ->boolean() - ->trueColor('info') - ->falseColor('warning') -``` - - diff --git a/vendor/filament/infolists/docs/03-entries/04-image.md b/vendor/filament/infolists/docs/03-entries/04-image.md deleted file mode 100644 index 5cf18fa8..00000000 --- a/vendor/filament/infolists/docs/03-entries/04-image.md +++ /dev/null @@ -1,229 +0,0 @@ ---- -title: Image entry ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -Images can be easily displayed within your infolist: - -```php -use Filament\Infolists\Components\ImageEntry; - -ImageEntry::make('header_image') -``` - -The entry must contain the path to the image, relative to the root directory of its storage disk, or an absolute URL to it. - - - -## Managing the image disk - -By default, the `public` disk will be used to retrieve images. You may pass a custom disk name to the `disk()` method: - -```php -use Filament\Infolists\Components\ImageEntry; - -ImageEntry::make('header_image') - ->disk('s3') -``` - -## Private images - -Filament can generate temporary URLs to render private images, you may set the `visibility()` to `private`: - -```php -use Filament\Infolists\Components\ImageEntry; - -ImageEntry::make('header_image') - ->visibility('private') -``` - -## Customizing the size - -You may customize the image size by passing a `width()` and `height()`, or both with `size()`: - -```php -use Filament\Infolists\Components\ImageEntry; - -ImageEntry::make('header_image') - ->width(200) - -ImageEntry::make('header_image') - ->height(50) - -ImageEntry::make('author.avatar') - ->size(40) -``` - -## Square image - -You may display the image using a 1:1 aspect ratio: - -```php -use Filament\Infolists\Components\ImageEntry; - -ImageEntry::make('author.avatar') - ->height(40) - ->square() -``` - - - -## Circular image - -You may make the image fully rounded, which is useful for rendering avatars: - -```php -use Filament\Infolists\Components\ImageEntry; - -ImageEntry::make('author.avatar') - ->height(40) - ->circular() -``` - - - -## Adding a default image URL - -You can display a placeholder image if one doesn't exist yet, by passing a URL to the `defaultImageUrl()` method: - -```php -use Filament\Infolists\Components\ImageEntry; - -ImageEntry::make('avatar') - ->defaultImageUrl(url('/images/placeholder.png')) -``` - -## Stacking images - -You may display multiple images as a stack of overlapping images by using `stacked()`: - -```php -use Filament\Infolists\Components\ImageEntry; - -ImageEntry::make('colleagues.avatar') - ->height(40) - ->circular() - ->stacked() -``` - - - -### Customizing the stacked ring width - -The default ring width is `3`, but you may customize it to be from `0` to `8`: - -```php -use Filament\Infolists\Components\ImageEntry; - -ImageEntry::make('colleagues.avatar') - ->height(40) - ->circular() - ->stacked() - ->ring(5) -``` - -### Customizing the stacked overlap - -The default overlap is `4`, but you may customize it to be from `0` to `8`: - -```php -use Filament\Infolists\Components\ImageEntry; - -ImageEntry::make('colleagues.avatar') - ->height(40) - ->circular() - ->stacked() - ->overlap(2) -``` - -## Setting a limit - -You may limit the maximum number of images you want to display by passing `limit()`: - -```php -use Filament\Infolists\Components\ImageEntry; - -ImageEntry::make('colleagues.avatar') - ->height(40) - ->circular() - ->stacked() - ->limit(3) -``` - - - -### Showing the remaining images count - -When you set a limit you may also display the count of remaining images by passing `limitedRemainingText()`. - -```php -use Filament\Infolists\Components\ImageEntry; - -ImageEntry::make('colleagues.avatar') - ->height(40) - ->circular() - ->stacked() - ->limit(3) - ->limitedRemainingText() -``` - - - -#### Showing the limited remaining text separately - -By default, `limitedRemainingText()` will display the count of remaining images as a number stacked on the other images. If you prefer to show the count as a number after the images, you may use the `isSeparate: true` parameter: - -```php -use Filament\Infolists\Components\ImageEntry; - -ImageEntry::make('colleagues.avatar') - ->height(40) - ->circular() - ->stacked() - ->limit(3) - ->limitedRemainingText(isSeparate: true) -``` - - - -#### Customizing the limited remaining text size - -By default, the size of the remaining text is `sm`. You can customize this to be `xs`, `md` or `lg` using the `size` parameter: - -```php -use Filament\Infolists\Components\ImageEntry; - -ImageEntry::make('colleagues.avatar') - ->height(40) - ->circular() - ->stacked() - ->limit(3) - ->limitedRemainingText(size: 'lg') -``` - -## Custom attributes - -You may customize the extra HTML attributes of the image using `extraImgAttributes()`: - -```php -use Filament\Infolists\Components\ImageEntry; - -ImageEntry::make('logo') - ->extraImgAttributes([ - 'alt' => 'Logo', - 'loading' => 'lazy', - ]), -``` - -## Prevent file existence checks - -When the infolist is loaded, it will automatically detect whether the images exist. This is all done on the backend. When using remote storage with many images, this can be time-consuming. You can use the `checkFileExistence(false)` method to disable this feature: - -```php -use Filament\Infolists\Components\ImageEntry; - -ImageEntry::make('attachment') - ->checkFileExistence(false) -``` diff --git a/vendor/filament/infolists/docs/03-entries/05-color.md b/vendor/filament/infolists/docs/03-entries/05-color.md deleted file mode 100644 index 5016d8b9..00000000 --- a/vendor/filament/infolists/docs/03-entries/05-color.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Color entry ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -The color entry allows you to show the color preview from a CSS color definition, typically entered using the color picker field, in one of the supported formats (HEX, HSL, RGB, RGBA). - -```php -use Filament\Infolists\Components\ColorEntry; - -ColorEntry::make('color') -``` - - - -## Allowing the color to be copied to the clipboard - -You may make the color copyable, such that clicking on the preview copies the CSS value to the clipboard, and optionally specify a custom confirmation message and duration in milliseconds. This feature only works when SSL is enabled for the app. - -```php -use Filament\Infolists\Components\ColorEntry; - -ColorEntry::make('color') - ->copyable() - ->copyMessage('Copied!') - ->copyMessageDuration(1500) -``` - - diff --git a/vendor/filament/infolists/docs/03-entries/06-key-value.md b/vendor/filament/infolists/docs/03-entries/06-key-value.md deleted file mode 100644 index ec4b7bab..00000000 --- a/vendor/filament/infolists/docs/03-entries/06-key-value.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Key-value entry ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -The key-value entry allows you to render key-value pairs of data, from a one-dimensional JSON object / PHP array. - -```php -use Filament\Infolists\Components\KeyValueEntry; - -KeyValueEntry::make('meta') -``` - - - -If you're saving the data in Eloquent, you should be sure to add an `array` [cast](https://laravel.com/docs/eloquent-mutators#array-and-json-casting) to the model property: - -```php -use Illuminate\Database\Eloquent\Model; - -class Post extends Model -{ - protected $casts = [ - 'meta' => 'array', - ]; - - // ... -} -``` - -## Customizing the key column's label - -You may customize the label for the key column using the `keyLabel()` method: - -```php -use Filament\Infolists\Components\KeyValueEntry; - -KeyValueEntry::make('meta') - ->keyLabel('Property name') -``` - -## Customizing the value column's label - -You may customize the label for the value column using the `valueLabel()` method: - -```php -use Filament\Infolists\Components\KeyValueEntry; - -KeyValueEntry::make('meta') - ->valueLabel('Property value') -``` diff --git a/vendor/filament/infolists/docs/03-entries/07-repeatable.md b/vendor/filament/infolists/docs/03-entries/07-repeatable.md deleted file mode 100644 index 693e426d..00000000 --- a/vendor/filament/infolists/docs/03-entries/07-repeatable.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Repeatable entry ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -The repeatable entry allows you to repeat a set of entries and layout components for items in an array or relationship. - -```php -use Filament\Infolists\Components\RepeatableEntry; -use Filament\Infolists\Components\TextEntry; - -RepeatableEntry::make('comments') - ->schema([ - TextEntry::make('author.name'), - TextEntry::make('title'), - TextEntry::make('content') - ->columnSpan(2), - ]) - ->columns(2) -``` - -As you can see, the repeatable entry has an embedded `schema()` which gets repeated for each item. - - - -## Grid layout - -You may organize repeatable items into columns by using the `grid()` method: - -```php -use Filament\Infolists\Components\RepeatableEntry; - -RepeatableEntry::make('comments') - ->schema([ - // ... - ]) - ->grid(2) -``` - -This method accepts the same options as the `columns()` method of the [grid](../layout/grid). This allows you to responsively customize the number of grid columns at various breakpoints. - - - -## Removing the styled container - -By default, each item in a repeatable entry is wrapped in a container styled as a card. You may remove the styled container using `contained()`: - -```php -use Filament\Infolists\Components\RepeatableEntry; - -RepeatableEntry::make('comments') - ->schema([ - // ... - ]) - ->contained(false) -``` diff --git a/vendor/filament/infolists/docs/03-entries/08-custom.md b/vendor/filament/infolists/docs/03-entries/08-custom.md deleted file mode 100644 index b0ffea98..00000000 --- a/vendor/filament/infolists/docs/03-entries/08-custom.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Custom entries ---- -import LaracastsBanner from "@components/LaracastsBanner.astro" - - - -## View entries - -You may render a custom view for an entry using the `view()` method: - -```php -use Filament\Infolists\Components\ViewEntry; - -ViewEntry::make('status') - ->view('filament.infolists.entries.status-switcher') -``` - -This assumes that you have a `resources/views/filament/infolists/entries/status-switcher.blade.php` file. - -## Custom classes - -You may create your own custom entry classes and entry views, which you can reuse across your project, and even release as a plugin to the community. - -> If you're just creating a simple custom entry to use once, you could instead use a [view entry](#view-entries) to render any custom Blade file. - -To create a custom entry class and view, you may use the following command: - -```bash -php artisan make:infolist-entry StatusSwitcher -``` - -This will create the following entry class: - -```php -use Filament\Infolists\Components\Entry; - -class StatusSwitcher extends Entry -{ - protected string $view = 'filament.infolists.entries.status-switcher'; -} -``` - -It will also create a view file at `resources/views/filament/infolists/entries/status-switcher.blade.php`. - -## Accessing the state - -Inside your view, you may retrieve the state of the entry using the `$getState()` function: - -```blade -
    - {{ $getState() }} -
    -``` - -## Accessing the Eloquent record - -Inside your view, you may access the Eloquent record using the `$getRecord()` function: - -```blade -
    - {{ $getRecord()->name }} -
    -``` diff --git a/vendor/filament/infolists/docs/04-layout/01-getting-started.md b/vendor/filament/infolists/docs/04-layout/01-getting-started.md deleted file mode 100644 index 51277636..00000000 --- a/vendor/filament/infolists/docs/04-layout/01-getting-started.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Getting started ---- - -## Overview - -Infolists are not limited to just displaying entries. You can also use "layout components" to organize them into an infinitely nestable structure. - -Layout component classes can be found in the `Filament\Infolists\Components` namespace. They reside within the schema of your infolist, alongside any [entries](entries/getting-started). - -Components may be created using the static `make()` method. Usually, you will then define the child component `schema()` to display inside: - -```php -use Filament\Infolists\Components\Grid; - -Grid::make(2) - ->schema([ - // ... - ]) -``` - -## Available layout components - -Filament ships with some layout components, suitable for arranging your form fields depending on your needs: - -- [Grid](grid) -- [Fieldset](fieldset) -- [Tabs](tabs) -- [Section](section) -- [Split](split) - -You may also [create your own custom layout components](custom) to organize fields in whatever way you wish. - -## Setting an ID - -You may define an ID for the component using the `id()` method: - -```php -use Filament\Infolists\Components\Section; - -Section::make() - ->id('main-section') -``` - -## Adding extra HTML attributes - -You can pass extra HTML attributes to the component, which will be merged onto the outer DOM element. Pass an array of attributes to the `extraAttributes()` method, where the key is the attribute name and the value is the attribute value: - -```php -use Filament\Infolists\Components\Group; - -Section::make() - ->extraAttributes(['class' => 'custom-section-style']) -``` - -Classes will be merged with the default classes, and any other attributes will override the default attributes. - -## Global settings - -If you wish to change the default behaviour of a component globally, then you can call the static `configureUsing()` method inside a service provider's `boot()` method, to which you pass a Closure to modify the component using. For example, if you wish to make all section components have [2 columns](grid) by default, you can do it like so: - -```php -use Filament\Infolists\Components\Section; - -Section::configureUsing(function (Section $section): void { - $section - ->columns(2); -}); -``` - -Of course, you are still able to overwrite this on each field individually: - -```php -use Filament\Infolists\Components\Section; - -Section::make() - ->columns(1) -``` diff --git a/vendor/filament/infolists/docs/04-layout/02-grid.md b/vendor/filament/infolists/docs/04-layout/02-grid.md deleted file mode 100644 index 462e7f82..00000000 --- a/vendor/filament/infolists/docs/04-layout/02-grid.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Grid ---- - -## Overview - -Filament's grid system allows you to create responsive, multi-column layouts using any layout component. - -## Responsively setting the number of grid columns - -All layout components have a `columns()` method that you can use in a couple of different ways: - -- You can pass an integer like `columns(2)`. This integer is the number of columns used on the `lg` breakpoint and higher. All smaller devices will have just 1 column. -- You can pass an array, where the key is the breakpoint and the value is the number of columns. For example, `columns(['md' => 2, 'xl' => 4])` will create a 2 column layout on medium devices, and a 4 column layout on extra large devices. The default breakpoint for smaller devices uses 1 column, unless you use a `default` array key. - -Breakpoints (`sm`, `md`, `lg`, `xl`, `2xl`) are defined by Tailwind, and can be found in the [Tailwind documentation](https://tailwindcss.com/docs/responsive-design#overview). - -## Controlling how many columns a component should span - -In addition to specifying how many columns a layout component should have, you may also specify how many columns a component should fill within the parent grid, using the `columnSpan()` method. This method accepts an integer or an array of breakpoints and column spans: - -- `columnSpan(2)` will make the component fill up to 2 columns on all breakpoints. -- `columnSpan(['md' => 2, 'xl' => 4])` will make the component fill up to 2 columns on medium devices, and up to 4 columns on extra large devices. The default breakpoint for smaller devices uses 1 column, unless you use a `default` array key. -- `columnSpan('full')` or `columnSpanFull()` or `columnSpan(['default' => 'full'])` will make the component fill the full width of the parent grid, regardless of how many columns it has. - -## An example of a responsive grid layout - -In this example, we have an infolist with a [section](section) layout component. Since all layout components support the `columns()` method, we can use it to create a responsive grid layout within the section itself. - -We pass an array to `columns()` as we want to specify different numbers of columns for different breakpoints. On devices smaller than the `sm` [Tailwind breakpoint](https://tailwindcss.com/docs/responsive-design#overview), we want to have 1 column, which is default. On devices larger than the `sm` breakpoint, we want to have 3 columns. On devices larger than the `xl` breakpoint, we want to have 6 columns. On devices larger than the `2xl` breakpoint, we want to have 8 columns. - -Inside the section, we have a [text entry](../entries/text). Since text entries are infolist components and all form components have a `columnSpan()` method, we can use it to specify how many columns the text entry should fill. On devices smaller than the `sm` breakpoint, we want the text entry to fill 1 column, which is default. On devices larger than the `sm` breakpoint, we want the text entry to fill 2 columns. On devices larger than the `xl` breakpoint, we want the text entry to fill 3 columns. On devices larger than the `2xl` breakpoint, we want the text entry to fill 4 columns. - -```php -use Filament\Infolists\Components\Section; -use Filament\Infolists\Components\TextEntry; - -Section::make() - ->columns([ - 'sm' => 3, - 'xl' => 6, - '2xl' => 8, - ]) - ->schema([ - TextEntry::make('name') - ->columnSpan([ - 'sm' => 2, - 'xl' => 3, - '2xl' => 4, - ]), - // ... - ]) -``` - -## Grid component - -All layout components support the `columns()` method, but you also have access to an additional `Grid` component. If you feel that your form schema would benefit from an explicit grid syntax with no extra styling, it may be useful to you. Instead of using the `columns()` method, you can pass your column configuration directly to `Grid::make()`: - -```php -use Filament\Infolists\Components\Grid; - -Grid::make([ - 'default' => 1, - 'sm' => 2, - 'md' => 3, - 'lg' => 4, - 'xl' => 6, - '2xl' => 8, -]) - ->schema([ - // ... - ]) -``` - -## Setting the starting column of a component in a grid - -If you want to start a component in a grid at a specific column, you can use the `columnStart()` method. This method accepts an integer, or an array of breakpoints and which column the component should start at: - -- `columnStart(2)` will make the component start at column 2 on all breakpoints. -- `columnStart(['md' => 2, 'xl' => 4])` will make the component start at column 2 on medium devices, and at column 4 on extra large devices. The default breakpoint for smaller devices uses 1 column, unless you use a `default` array key. - -```php -use Filament\Infolists\Components\Section; -use Filament\Infolists\Components\TextEntry; - -Section::make() - ->columns([ - 'sm' => 3, - 'xl' => 6, - '2xl' => 8, - ]) - ->schema([ - TextEntry::make('name') - ->columnStart([ - 'sm' => 2, - 'xl' => 3, - '2xl' => 4, - ]), - // ... - ]) -``` - -In this example, the grid has 3 columns on small devices, 6 columns on extra large devices, and 8 columns on extra extra large devices. The text entry will start at column 2 on small devices, column 3 on extra large devices, and column 4 on extra extra large devices. This is essentially producing a layout whereby the text entry always starts halfway through the grid, regardless of how many columns the grid has. diff --git a/vendor/filament/infolists/docs/04-layout/03-fieldset.md b/vendor/filament/infolists/docs/04-layout/03-fieldset.md deleted file mode 100644 index 4a10d098..00000000 --- a/vendor/filament/infolists/docs/04-layout/03-fieldset.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Fieldset ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -You may want to group entries into a Fieldset. Each fieldset has a label, a border, and a two-column grid by default: - -```php -use Filament\Infolists\Components\Fieldset; - -Fieldset::make('Label') - ->schema([ - // ... - ]) -``` - - - -## Using grid columns within a fieldset - -You may use the `columns()` method to customize the [grid](grid) within the fieldset: - -```php -use Filament\Infolists\Components\Fieldset; - -Fieldset::make('Label') - ->schema([ - // ... - ]) - ->columns(3) -``` diff --git a/vendor/filament/infolists/docs/04-layout/04-tabs.md b/vendor/filament/infolists/docs/04-layout/04-tabs.md deleted file mode 100644 index 84e8eabd..00000000 --- a/vendor/filament/infolists/docs/04-layout/04-tabs.md +++ /dev/null @@ -1,240 +0,0 @@ ---- -title: Tabs ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -Some infolists can be long and complex. You may want to use tabs to reduce the number of components that are visible at once: - -```php -use Filament\Infolists\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Tab 1') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 2') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 3') - ->schema([ - // ... - ]), - ]) -``` - - - -## Setting the default active tab - -The first tab will be open by default. You can change the default open tab using the `activeTab()` method: - -```php -use Filament\Infolists\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Tab 1') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 2') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 3') - ->schema([ - // ... - ]), - ]) - ->activeTab(2) -``` - -## Setting a tab icon - -Tabs may have an [icon](https://blade-ui-kit.com/blade-icons?set=1#search), which you can set using the `icon()` method: - -```php -use Filament\Infolists\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Notifications') - ->icon('heroicon-m-bell') - ->schema([ - // ... - ]), - // ... - ]) -``` - - - -### Setting the tab icon position - -The icon of the tab may be positioned before or after the label using the `iconPosition()` method: - -```php -use Filament\Infolists\Components\Tabs; -use Filament\Support\Enums\IconPosition; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Notifications') - ->icon('heroicon-m-bell') - ->iconPosition(IconPosition::After) - ->schema([ - // ... - ]), - // ... - ]) -``` - - - -## Setting a tab badge - -Tabs may have a badge, which you can set using the `badge()` method: - -```php -use Filament\Infolists\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Notifications') - ->badge(5) - ->schema([ - // ... - ]), - // ... - ]) -``` - - - -If you'd like to change the color for a badge, you can use the `badgeColor()` method: - -```php -use Filament\Infolists\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Notifications') - ->badge(5) - ->badgeColor('success') - ->schema([ - // ... - ]), - // ... - ]) -``` - -## Using grid columns within a tab - -You may use the `columns()` method to customize the [grid](grid) within the tab: - -```php -use Filament\Infolists\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Tab 1') - ->schema([ - // ... - ]) - ->columns(3), - // ... - ]) -``` - -## Removing the styled container - -By default, tabs and their content are wrapped in a container styled as a card. You may remove the styled container using `contained()`: - -```php -use Filament\Infolists\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Tab 1') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 2') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 3') - ->schema([ - // ... - ]), - ]) - ->contained(false) -``` - -## Persisting the current tab - -By default, the current tab is not persisted in the browser's local storage. You can change this behavior using the `persistTab()` method. You must also pass in a unique `id()` for the tabs component, to distinguish it from all other sets of tabs in the app. This ID will be used as the key in the local storage to store the current tab: - -```php -use Filament\Infolists\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - // ... - ]) - ->persistTab() - ->id('order-tabs') -``` - -### Persisting the current tab in the URL's query string - -By default, the current tab is not persisted in the URL's query string. You can change this behavior using the `persistTabInQueryString()` method: - -```php -use Filament\Infolists\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Tab 1') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 2') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 3') - ->schema([ - // ... - ]), - ]) - ->persistTabInQueryString() -``` - -By default, the current tab is persisted in the URL's query string using the `tab` key. You can change this key by passing it to the `persistTabInQueryString()` method: - -```php -use Filament\Infolists\Components\Tabs; - -Tabs::make('Tabs') - ->tabs([ - Tabs\Tab::make('Tab 1') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 2') - ->schema([ - // ... - ]), - Tabs\Tab::make('Tab 3') - ->schema([ - // ... - ]), - ]) - ->persistTabInQueryString('settings-tab') -``` diff --git a/vendor/filament/infolists/docs/04-layout/05-section.md b/vendor/filament/infolists/docs/04-layout/05-section.md deleted file mode 100644 index 628b48d0..00000000 --- a/vendor/filament/infolists/docs/04-layout/05-section.md +++ /dev/null @@ -1,196 +0,0 @@ ---- -title: Section ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -You may want to separate your entries into sections, each with a heading and description. To do this, you can use a section component: - -```php -use Filament\Infolists\Components\Section; - -Section::make('Rate limiting') - ->description('Prevent abuse by limiting the number of requests per period') - ->schema([ - // ... - ]) -``` - - - -You can also use a section without a header, which just wraps the components in a simple card: - -```php -use Filament\Infolists\Components\Section; - -Section::make() - ->schema([ - // ... - ]) -``` - - - -## Adding actions to the section's header - -You may add [actions](../actions) to the section's header using the `headerActions()` method: - -```php -use Filament\Infolists\Components\Actions\Action; -use Filament\Infolists\Components\Section; - -Section::make('Rate limiting') - ->headerActions([ - Action::make('edit') - ->action(function () { - // ... - }), - ]) - ->schema([ - // ... - ]) -``` - - - -If your section does not have a heading, Filament has no way of locating the action inside it. In this case, you must pass a unique `id()` to the section: - -```php -use Filament\Infolists\Components\Section; - -Section::make() - ->id('rateLimitingSection') - ->headerActions([ - // ... - ]) - ->schema([ - // ... - ]) -``` - -## Adding an icon to the section's header - -You may add an icon to the section's header using the `icon()` method: - -```php -use Filament\Infolists\Components\Section; - -Section::make('Cart') - ->description('The items you have selected for purchase') - ->icon('heroicon-m-shopping-bag') - ->schema([ - // ... - ]) -``` - - - -## Positioning the heading and description aside - -You may use the `aside()` method to align the heading and description on the left, and the infolist components inside a card on the right: - -```php -use Filament\Infolists\Components\Section; - -Section::make('Rate limiting') - ->description('Prevent abuse by limiting the number of requests per period') - ->aside() - ->schema([ - // ... - ]) -``` - - - -## Collapsing sections - -Sections may be `collapsible()` to optionally hide content in long infolists: - -```php -use Filament\Infolists\Components\Section; - -Section::make('Cart') - ->description('The items you have selected for purchase') - ->schema([ - // ... - ]) - ->collapsible() -``` - -Your sections may be `collapsed()` by default: - -```php -use Filament\Infolists\Components\Section; - -Section::make('Cart') - ->description('The items you have selected for purchase') - ->schema([ - // ... - ]) - ->collapsed() -``` - - - -### Persisting collapsed sections - -You can persist whether a section is collapsed in local storage using the `persistCollapsed()` method, so it will remain collapsed when the user refreshes the page: - -```php -use Filament\Infolists\Components\Section; - -Section::make('Cart') - ->description('The items you have selected for purchase') - ->schema([ - // ... - ]) - ->collapsible() - ->persistCollapsed() -``` - -To persist the collapse state, the local storage needs a unique ID to store the state. This ID is generated based on the heading of the section. If your section does not have a heading, or if you have multiple sections with the same heading that you do not want to collapse together, you can manually specify the `id()` of that section to prevent an ID conflict: - -```php -use Filament\Infolists\Components\Section; - -Section::make('Cart') - ->description('The items you have selected for purchase') - ->schema([ - // ... - ]) - ->collapsible() - ->persistCollapsed() - ->id('order-cart') -``` - -## Compact section styling - -When nesting sections, you can use a more compact styling: - -```php -use Filament\Infolists\Components\Section; - -Section::make('Rate limiting') - ->description('Prevent abuse by limiting the number of requests per period') - ->schema([ - // ... - ]) - ->compact() -``` - - - -## Using grid columns within a section - -You may use the `columns()` method to easily create a [grid](grid) within the section: - -```php -use Filament\Infolists\Components\Section; - -Section::make('Heading') - ->schema([ - // ... - ]) - ->columns(2) -``` diff --git a/vendor/filament/infolists/docs/04-layout/06-split.md b/vendor/filament/infolists/docs/04-layout/06-split.md deleted file mode 100644 index 9cd5e115..00000000 --- a/vendor/filament/infolists/docs/04-layout/06-split.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Split ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -The `Split` component allows you to define layouts with flexible widths, using flexbox. - -```php -use Filament\Infolists\Components\Section; -use Filament\Infolists\Components\Split; -use Filament\Infolists\Components\TextEntry; -use Filament\Support\Enums\FontWeight; - -Split::make([ - Section::make([ - TextEntry::make('title') - ->weight(FontWeight::Bold), - TextEntry::make('content') - ->markdown() - ->prose(), - ]), - Section::make([ - TextEntry::make('created_at') - ->dateTime(), - TextEntry::make('published_at') - ->dateTime(), - ])->grow(false), -])->from('md') -``` - -In this example, the first section will `grow()` to consume available horizontal space, without affecting the amount of space needed to render the second section. This creates a sidebar effect. - -The `from()` method is used to control the [Tailwind breakpoint](https://tailwindcss.com/docs/responsive-design#overview) (`sm`, `md`, `lg`, `xl`, `2xl`) at which the split layout should be used. In this example, the split layout will be used on medium devices and larger. On smaller devices, the sections will stack on top of each other. - - diff --git a/vendor/filament/infolists/docs/04-layout/07-custom.md b/vendor/filament/infolists/docs/04-layout/07-custom.md deleted file mode 100644 index 2bc440d5..00000000 --- a/vendor/filament/infolists/docs/04-layout/07-custom.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Custom layouts ---- -import LaracastsBanner from "@components/LaracastsBanner.astro" - - - -## View components - -Aside from [building custom layout components](#custom-layout-classes), you may create "view" components which allow you to create custom layouts without extra PHP classes. - -```php -use Filament\Infolists\Components\View; - -View::make('filament.infolists.components.box') -``` - -This assumes that you have a `resources/views/filament/infolists/components/box.blade.php` file. - -## Custom layout classes - -You may create your own custom component classes and views, which you can reuse across your project, and even release as a plugin to the community. - -> If you're just creating a simple custom component to use once, you could instead use a [view component](#view) to render any custom Blade file. - -To create a custom column class and view, you may use the following command: - -```bash -php artisan make:infolist-layout Box -``` - -This will create the following layout component class: - -```php -use Filament\Infolists\Components\Component; - -class Box extends Component -{ - protected string $view = 'filament.infolists.components.box'; - - public static function make(): static - { - return app(static::class); - } -} -``` - -It will also create a view file at `resources/views/filament/infolists/components/box.blade.php`. - -## Rendering the component's schema - -Inside your view, you may render the component's `schema()` using the `$getChildComponentContainer()` function: - -```blade -
    - {{ $getChildComponentContainer() }} -
    -``` - -## Accessing the Eloquent record - -Inside your view, you may access the Eloquent record using the `$getRecord()` function: - -```blade -
    - {{ $getRecord()->name }} -
    -``` diff --git a/vendor/filament/infolists/docs/05-actions.md b/vendor/filament/infolists/docs/05-actions.md deleted file mode 100644 index 8572abcb..00000000 --- a/vendor/filament/infolists/docs/05-actions.md +++ /dev/null @@ -1,224 +0,0 @@ ---- -title: Actions ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -Filament's infolists can use [Actions](../actions). They are buttons that can be added to any infolist component. Also, you can [render anonymous sets of actions](#adding-anonymous-actions-to-an-infolist-without-attaching-them-to-a-component) on their own, that are not attached to a particular infolist component. - -## Defining a infolist component action - -Action objects inside an infolist component are instances of `Filament/Infolists/Components/Actions/Action`. You must pass a unique name to the action's `make()` method, which is used to identify it amongst others internally within Filament. You can [customize the trigger button](../actions/trigger-button) of an action, and even [open a modal](../actions/modals) with little effort: - -```php -use App\Actions\ResetStars; -use Filament\Infolists\Components\Actions\Action; - -Action::make('resetStars') - ->icon('heroicon-m-x-mark') - ->color('danger') - ->requiresConfirmation() - ->action(function (ResetStars $resetStars) { - $resetStars(); - }) -``` - -### Adding an affix action to a entry - -Certain entries support "affix actions", which are buttons that can be placed before or after its content. The following entries support affix actions: - -- [Text entry](entries/text-entry) - -To define an affix action, you can pass it to either `prefixAction()` or `suffixAction()`: - -```php -use App\Models\Product; -use Filament\Infolists\Components\Actions\Action; -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('cost') - ->prefix('€') - ->suffixAction( - Action::make('copyCostToPrice') - ->icon('heroicon-m-clipboard') - ->requiresConfirmation() - ->action(function (Product $record) { - $record->price = $record->cost; - $record->save(); - }) - ) -``` - - - -#### Passing multiple affix actions to a entry - -You may pass multiple affix actions to an entry by passing them in an array to either `prefixActions()` or `suffixActions()`. Either method can be used, or both at once, Filament will render all the registered actions in order: - -```php -use Filament\Infolists\Components\Actions\Action; -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('cost') - ->prefix('€') - ->prefixActions([ - Action::make('...'), - Action::make('...'), - Action::make('...'), - ]) - ->suffixActions([ - Action::make('...'), - Action::make('...'), - ]) -``` - -### Adding a hint action to an entry - -All entries support "hint actions", which are rendered aside the entry's [hint](entries/getting-started#adding-a-hint-next-to-the-label). To add a hint action to a entry, you may pass it to `hintAction()`: - -```php -use App\Models\Product; -use Filament\Infolists\Components\Actions\Action; -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('cost') - ->prefix('€') - ->hintAction( - Action::make('copyCostToPrice') - ->icon('heroicon-m-clipboard') - ->requiresConfirmation() - ->action(function (Product $record) { - $record->price = $record->cost; - $record->save(); - }) - ) -``` - - - -#### Passing multiple hint actions to a entry - -You may pass multiple hint actions to a entry by passing them in an array to `hintActions()`. Filament will render all the registered actions in order: - -```php -use Filament\Infolists\Components\Actions\Action; -use Filament\Infolists\Components\TextEntry; - -TextEntry::make('cost') - ->prefix('€') - ->hintActions([ - Action::make('...'), - Action::make('...'), - Action::make('...'), - ]) -``` - -### Adding an action to a custom infolist component - -If you wish to render an action within a custom infolist component, `ViewEntry` object, or `View` component object, you may do so using the `registerActions()` method: - -```php -use App\Models\Post; -use Filament\Forms\Components\TextInput; -use Filament\Infolists\Components\Actions\Action; -use Filament\Infolists\Components\ViewEntry; -use Filament\Infolists\Set; - -ViewEntry::make('status') - ->view('filament.infolists.entries.status-switcher') - ->registerActions([ - Action::make('createStatus') - ->form([ - TextInput::make('name') - ->required(), - ]) - ->icon('heroicon-m-plus') - ->action(function (array $data, Post $record) { - $record->status()->create($data); - }), - ]) -``` - -Now, to render the action in the view of the custom component, you need to call `$getAction()`, passing the name of the action you registered: - -```blade -
    - - - {{ $getAction('createStatus') }} -
    -``` - -### Adding "anonymous" actions to an infolist without attaching them to a component - -You may use an `Actions` component to render a set of actions anywhere in the form, avoiding the need to register them to any particular component: - -```php -use App\Actions\Star; -use App\Actions\ResetStars; -use Filament\Infolists\Components\Actions; -use Filament\Infolists\Components\Actions\Action; - -Actions::make([ - Action::make('star') - ->icon('heroicon-m-star') - ->requiresConfirmation() - ->action(function (Star $star) { - $star(); - }), - Action::make('resetStars') - ->icon('heroicon-m-x-mark') - ->color('danger') - ->requiresConfirmation() - ->action(function (ResetStars $resetStars) { - $resetStars(); - }), -]), -``` - - - -#### Making the independent infolist actions consume the full width of the infolist - -You can stretch the independent infolist actions to consume the full width of the infolist using `fullWidth()`: - -```php -use Filament\Infolists\Components\Actions; - -Actions::make([ - // ... -])->fullWidth(), -``` - - - -#### Controlling the horizontal alignment of independent infolist actions - -Independent infolist actions are aligned to the start of the component by default. You may change this by passing `Alignment::Center` or `Alignment::End` to `alignment()`: - -```php -use Filament\Infolists\Components\Actions; -use Filament\Support\Enums\Alignment; - -Actions::make([ - // ... -])->alignment(Alignment::Center), -``` - - - -#### Controlling the vertical alignment of independent infolist actions - -Independent infolist actions are vertically aligned to the start of the component by default. You may change this by passing `Alignment::Center` or `Alignment::End` to `verticalAlignment()`: - -```php -use Filament\Infolists\Components\Actions; -use Filament\Support\Enums\VerticalAlignment; - -Actions::make([ - // ... -])->verticalAlignment(VerticalAlignment::End), -``` - - diff --git a/vendor/filament/infolists/docs/06-advanced.md b/vendor/filament/infolists/docs/06-advanced.md deleted file mode 100644 index c21effc9..00000000 --- a/vendor/filament/infolists/docs/06-advanced.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: Advanced infolists ---- - -## Inserting Livewire components into an infolist - -You may insert a Livewire component directly into an infolist: - -```php -use Filament\Infolists\Components\Livewire; -use App\Livewire\Foo; - -Livewire::make(Foo::class) -``` - -If you are rendering multiple of the same Livewire component, please make sure to pass a unique `key()` to each: - -```php -use Filament\Infolists\Components\Livewire; -use App\Livewire\Foo; - -Livewire::make(Foo::class) - ->key('foo-first') - -Livewire::make(Foo::class) - ->key('foo-second') - -Livewire::make(Foo::class) - ->key('foo-third') -``` - -### Passing parameters to a Livewire component - -You can pass an array of parameters to a Livewire component: - -```php -use Filament\Infolists\Components\Livewire; -use App\Livewire\Foo; - -Livewire::make(Foo::class, ['bar' => 'baz']) -``` - -Now, those parameters will be passed to the Livewire component's `mount()` method: - -```php -class Foo extends Component -{ - public function mount(string $bar): void - { - // ... - } -} -``` - -Alternatively, they will be available as public properties on the Livewire component: - -```php -class Foo extends Component -{ - public string $bar; -} -``` - -#### Accessing the current record in the Livewire component - -You can access the current record in the Livewire component using the `$record` parameter in the `mount()` method, or the `$record` property: - -```php -use Illuminate\Database\Eloquent\Model; - -class Foo extends Component -{ - public function mount(Model $record): void - { - // ... - } - - // or - - public Model $record; -} -``` - -### Lazy loading a Livewire component - -You may allow the component to [lazily load](https://livewire.laravel.com/docs/lazy#rendering-placeholder-html) using the `lazy()` method: - -```php -use Filament\Infolists\Components\Livewire; -use App\Livewire\Foo; - -Livewire::make(Foo::class)->lazy() -``` diff --git a/vendor/filament/infolists/docs/07-adding-an-infolist-to-a-livewire-component.md b/vendor/filament/infolists/docs/07-adding-an-infolist-to-a-livewire-component.md deleted file mode 100644 index a597dab0..00000000 --- a/vendor/filament/infolists/docs/07-adding-an-infolist-to-a-livewire-component.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Adding an infolist to a Livewire component ---- - -## Setting up the Livewire component - -First, generate a new Livewire component: - -```bash -php artisan make:livewire ViewProduct -``` - -Then, render your Livewire component on the page: - -```blade -@livewire('view-product') -``` - -Alternatively, you can use a full-page Livewire component: - -```php -use App\Livewire\ViewProduct; -use Illuminate\Support\Facades\Route; - -Route::get('products/{product}', ViewProduct::class); -``` - -You must use the `InteractsWithInfolists` and `InteractsWithForms` traits, and implement the `HasInfolists` and `HasForms` interfaces on your Livewire component class: - -```php -use Filament\Forms\Concerns\InteractsWithForms; -use Filament\Forms\Contracts\HasForms; -use Filament\Infolists\Concerns\InteractsWithInfolists; -use Filament\Infolists\Contracts\HasInfolists; -use Livewire\Component; - -class ViewProduct extends Component implements HasForms, HasInfolists -{ - use InteractsWithInfolists; - use InteractsWithForms; - - // ... -} -``` - -## Adding the infolist - -Next, add a method to the Livewire component which accepts an `$infolist` object, modifies it, and returns it: - -```php -use Filament\Infolists\Infolist; - -public function productInfolist(Infolist $infolist): Infolist -{ - return $infolist - ->record($this->product) - ->schema([ - // ... - ]); -} -``` - -Finally, render the infolist in the Livewire component's view: - -```blade -{{ $this->productInfolist }} -``` - -## Passing data to the infolist - -You can pass data to the infolist in two ways: - -Either pass an Eloquent model instance to the `record()` method of the infolist, to automatically map all the model attributes and relationships to the entries in the infolist's schema: - -```php -use Filament\Infolists\Components\TextEntry; -use Filament\Infolists\Infolist; - -public function productInfolist(Infolist $infolist): Infolist -{ - return $infolist - ->record($this->product) - ->schema([ - TextEntry::make('name'), - TextEntry::make('category.name'), - // ... - ]); -} -``` - -Alternatively, you can pass an array of data to the `state()` method of the infolist, to manually map the data to the entries in the infolist's schema: - -```php -use Filament\Infolists\Components\TextEntry; -use Filament\Infolists\Infolist; - -public function productInfolist(Infolist $infolist): Infolist -{ - return $infolist - ->state([ - 'name' => 'MacBook Pro', - 'category' => [ - 'name' => 'Laptops', - ], - // ... - ]) - ->schema([ - TextEntry::make('name'), - TextEntry::make('category.name'), - // ... - ]); -} -``` diff --git a/vendor/filament/infolists/docs/08-testing.md b/vendor/filament/infolists/docs/08-testing.md deleted file mode 100644 index 8197d166..00000000 --- a/vendor/filament/infolists/docs/08-testing.md +++ /dev/null @@ -1,270 +0,0 @@ ---- -title: Testing ---- - -## Overview - -All examples in this guide will be written using [Pest](https://pestphp.com). However, you can easily adapt this to PHPUnit. - -Since the Infolist Builder works on Livewire components, you can use the [Livewire testing helpers](https://livewire.laravel.com/docs/testing). However, we have custom testing helpers that you can use with infolists: - -## Actions - -You can call an action by passing its infolist component key, and then the name of the action to `callInfolistAction()`: - -```php -use function Pest\Livewire\livewire; - -it('can send invoices', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->callInfolistAction('customer', 'send', infolistName: 'infolist'); - - expect($invoice->refresh()) - ->isSent()->toBeTrue(); -}); -``` - -To pass an array of data into an action, use the `data` parameter: - -```php -use function Pest\Livewire\livewire; - -it('can send invoices', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->callInfolistAction('customer', 'send', data: [ - 'email' => $email = fake()->email(), - ]) - ->assertHasNoInfolistActionErrors(); - - expect($invoice->refresh()) - ->isSent()->toBeTrue() - ->recipient_email->toBe($email); -}); -``` - -If you ever need to only set an action's data without immediately calling it, you can use `setInfolistActionData()`: - -```php -use function Pest\Livewire\livewire; - -it('can send invoices', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->mountInfolistAction('customer', 'send') - ->setInfolistActionData('customer', 'send', data: [ - 'email' => $email = fake()->email(), - ]) -}); -``` - -### Execution - -To check if an action has been halted, you can use `assertInfolistActionHalted()`: - -```php -use function Pest\Livewire\livewire; - -it('stops sending if invoice has no email address', function () { - $invoice = Invoice::factory(['email' => null])->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->callInfolistAction('customer', 'send') - ->assertInfolistActionHalted('customer', 'send'); -}); -``` - -### Errors - -`assertHasNoInfolistActionErrors()` is used to assert that no validation errors occurred when submitting the action form. - -To check if a validation error has occurred with the data, use `assertHasInfolistActionErrors()`, similar to `assertHasErrors()` in Livewire: - -```php -use function Pest\Livewire\livewire; - -it('can validate invoice recipient email', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->callInfolistAction('customer', 'send', data: [ - 'email' => Str::random(), - ]) - ->assertHasInfolistActionErrors(['email' => ['email']]); -}); -``` - -To check if an action is pre-filled with data, you can use the `assertInfolistActionDataSet()` method: - -```php -use function Pest\Livewire\livewire; - -it('can send invoices to the primary contact by default', function () { - $invoice = Invoice::factory()->create(); - $recipientEmail = $invoice->company->primaryContact->email; - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->mountInfolistAction('customer', 'send') - ->assertInfolistActionDataSet([ - 'email' => $recipientEmail, - ]) - ->callMountedInfolistAction() - ->assertHasNoInfolistActionErrors(); - - expect($invoice->refresh()) - ->isSent()->toBeTrue() - ->recipient_email->toBe($recipientEmail); -}); -``` - -### Action state - -To ensure that an action exists or doesn't in an infolist, you can use the `assertInfolistActionExists()` or `assertInfolistActionDoesNotExist()` method: - -```php -use function Pest\Livewire\livewire; - -it('can send but not unsend invoices', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertInfolistActionExists('customer', 'send') - ->assertInfolistActionDoesNotExist('customer', 'unsend'); -}); -``` - -To ensure an action is hidden or visible for a user, you can use the `assertInfolistActionHidden()` or `assertInfolistActionVisible()` methods: - -```php -use function Pest\Livewire\livewire; - -it('can only print customers', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertInfolistActionHidden('customer', 'send') - ->assertInfolistActionVisible('customer', 'print'); -}); -``` - -To ensure an action is enabled or disabled for a user, you can use the `assertInfolistActionEnabled()` or `assertInfolistActionDisabled()` methods: - -```php -use function Pest\Livewire\livewire; - -it('can only print a customer for a sent invoice', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertInfolistActionDisabled('customer', 'send') - ->assertInfolistActionEnabled('customer', 'print'); -}); -``` - -To check if an action is hidden to a user, you can use the `assertInfolistActionHidden()` method: - -```php -use function Pest\Livewire\livewire; - -it('can not send invoices', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertInfolistActionHidden('customer', 'send'); -}); -``` - -### Button appearance - -To ensure an action has the correct label, you can use `assertInfolistActionHasLabel()` and `assertInfolistActionDoesNotHaveLabel()`: - -```php -use function Pest\Livewire\livewire; - -it('send action has correct label', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertInfolistActionHasLabel('customer', 'send', 'Email Invoice') - ->assertInfolistActionDoesNotHaveLabel('customer', 'send', 'Send'); -}); -``` - -To ensure an action's button is showing the correct icon, you can use `assertInfolistActionHasIcon()` or `assertInfolistActionDoesNotHaveIcon()`: - -```php -use function Pest\Livewire\livewire; - -it('when enabled the send button has correct icon', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertInfolistActionEnabled('customer', 'send') - ->assertInfolistActionHasIcon('customer', 'send', 'envelope-open') - ->assertInfolistActionDoesNotHaveIcon('customer', 'send', 'envelope'); -}); -``` - -To ensure that an action's button is displaying the right color, you can use `assertInfolistActionHasColor()` or `assertInfolistActionDoesNotHaveColor()`: - -```php -use function Pest\Livewire\livewire; - -it('actions display proper colors', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertInfolistActionHasColor('customer', 'delete', 'danger') - ->assertInfolistActionDoesNotHaveColor('customer', 'print', 'danger'); -}); -``` - -### URL - -To ensure an action has the correct URL, you can use `assertInfolistActionHasUrl()`, `assertInfolistActionDoesNotHaveUrl()`, `assertInfolistActionShouldOpenUrlInNewTab()`, and `assertInfolistActionShouldNotOpenUrlInNewTab()`: - -```php -use function Pest\Livewire\livewire; - -it('links to the correct Filament sites', function () { - $invoice = Invoice::factory()->create(); - - livewire(EditInvoice::class, [ - 'invoice' => $invoice, - ]) - ->assertInfolistActionHasUrl('customer', 'filament', 'https://filamentphp.com/') - ->assertInfolistActionDoesNotHaveUrl('customer', 'filament', 'https://github.com/filamentphp/filament') - ->assertInfolistActionShouldOpenUrlInNewTab('customer', 'filament') - ->assertInfolistActionShouldNotOpenUrlInNewTab('customer', 'github'); -}); -``` diff --git a/vendor/filament/infolists/resources/lang/ar/components.php b/vendor/filament/infolists/resources/lang/ar/components.php deleted file mode 100644 index 056ab35c..00000000 --- a/vendor/filament/infolists/resources/lang/ar/components.php +++ /dev/null @@ -1,20 +0,0 @@ - [ - - 'text' => [ - - 'actions' => [ - 'collapse_list' => 'عرض :count أقل', - 'expand_list' => 'عرض :count أكثر', - ], - - 'more_list_items' => 'و :count إضافية', - - ], - - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/az/components.php b/vendor/filament/infolists/resources/lang/az/components.php deleted file mode 100644 index 2923c268..00000000 --- a/vendor/filament/infolists/resources/lang/az/components.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'more_list_items' => 'və :count daha', - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/ca/components.php b/vendor/filament/infolists/resources/lang/ca/components.php deleted file mode 100644 index 7291c341..00000000 --- a/vendor/filament/infolists/resources/lang/ca/components.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - - 'text' => [ - - 'actions' => [ - 'collapse_list' => 'Mostrar :count menys', - 'expand_list' => 'Mostrar :count més', - ], - - 'more_list_items' => 'i :count més', - - ], - - 'key_value' => [ - - 'columns' => [ - - 'key' => [ - 'label' => 'Clau', - ], - - 'value' => [ - 'label' => 'Valor', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/ckb/components.php b/vendor/filament/infolists/resources/lang/ckb/components.php deleted file mode 100644 index 22c85a59..00000000 --- a/vendor/filament/infolists/resources/lang/ckb/components.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'more_list_items' => 'وە :count ی زیاتر', - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/da/components.php b/vendor/filament/infolists/resources/lang/da/components.php deleted file mode 100644 index 74d8f6ab..00000000 --- a/vendor/filament/infolists/resources/lang/da/components.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - - 'text' => [ - - 'actions' => [ - 'collapse_list' => 'Vis :count mindre', - 'expand_list' => 'Vis :count flere', - ], - - 'more_list_items' => 'og :count flere', - - ], - - 'key_value' => [ - - 'columns' => [ - - 'key' => [ - 'label' => 'Nøgle', - ], - - 'value' => [ - 'label' => 'Værdi', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/de/components.php b/vendor/filament/infolists/resources/lang/de/components.php deleted file mode 100644 index 04c8aa50..00000000 --- a/vendor/filament/infolists/resources/lang/de/components.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'more_list_items' => 'und :count weitere', - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/en/components.php b/vendor/filament/infolists/resources/lang/en/components.php deleted file mode 100644 index c82a640b..00000000 --- a/vendor/filament/infolists/resources/lang/en/components.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - - 'text' => [ - - 'actions' => [ - 'collapse_list' => 'Show :count less', - 'expand_list' => 'Show :count more', - ], - - 'more_list_items' => 'and :count more', - - ], - - 'key_value' => [ - - 'columns' => [ - - 'key' => [ - 'label' => 'Key', - ], - - 'value' => [ - 'label' => 'Value', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/es/components.php b/vendor/filament/infolists/resources/lang/es/components.php deleted file mode 100644 index 132cd2d3..00000000 --- a/vendor/filament/infolists/resources/lang/es/components.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - - 'text' => [ - - 'actions' => [ - 'collapse_list' => 'Mostrar :count menos', - 'expand_list' => 'Mostrar :count más', - ], - - 'more_list_items' => 'y :count más', - - ], - - 'key_value' => [ - - 'columns' => [ - - 'key' => [ - 'label' => 'Clave', - ], - - 'value' => [ - 'label' => 'Valor', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/fa/components.php b/vendor/filament/infolists/resources/lang/fa/components.php deleted file mode 100644 index ebcb3ad2..00000000 --- a/vendor/filament/infolists/resources/lang/fa/components.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'more_list_items' => 'و :count عدد دیگر', - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/fi/components.php b/vendor/filament/infolists/resources/lang/fi/components.php deleted file mode 100644 index e226ca86..00000000 --- a/vendor/filament/infolists/resources/lang/fi/components.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - - 'text' => [ - - 'actions' => [ - 'collapse_list' => 'Näytä :count vähemmän', - 'expand_list' => 'Näytä :count lisää', - ], - - 'more_list_items' => 'ja :count lisää', - - ], - - 'key_value' => [ - - 'columns' => [ - - 'key' => [ - 'label' => 'Avain', - ], - - 'value' => [ - 'label' => 'Arvo', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/fr/components.php b/vendor/filament/infolists/resources/lang/fr/components.php deleted file mode 100644 index d1171234..00000000 --- a/vendor/filament/infolists/resources/lang/fr/components.php +++ /dev/null @@ -1,20 +0,0 @@ - [ - - 'text' => [ - - 'actions' => [ - 'collapse_list' => 'Afficher :count de moins', - 'expand_list' => 'Afficher :count de plus', - ], - - 'more_list_items' => 'et :count de plus', - - ], - - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/hr/components.php b/vendor/filament/infolists/resources/lang/hr/components.php deleted file mode 100644 index 100618d8..00000000 --- a/vendor/filament/infolists/resources/lang/hr/components.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'more_list_items' => 'i :count još', - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/hu/components.php b/vendor/filament/infolists/resources/lang/hu/components.php deleted file mode 100644 index 07967b8d..00000000 --- a/vendor/filament/infolists/resources/lang/hu/components.php +++ /dev/null @@ -1,20 +0,0 @@ - [ - - 'text' => [ - - 'actions' => [ - 'collapse_list' => ':count elemmel kevesebb mutatása', - 'expand_list' => ':count elemmel több mutatása', - ], - - 'more_list_items' => ':count és több', - - ], - - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/ja/components.php b/vendor/filament/infolists/resources/lang/ja/components.php deleted file mode 100644 index 335dc5e4..00000000 --- a/vendor/filament/infolists/resources/lang/ja/components.php +++ /dev/null @@ -1,20 +0,0 @@ - [ - - 'text' => [ - - 'actions' => [ - 'collapse_list' => ':count件非表示', - 'expand_list' => ':count件表示', - ], - - 'more_list_items' => 'あと:count件あります', - - ], - - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/km/components.php b/vendor/filament/infolists/resources/lang/km/components.php deleted file mode 100644 index 5ab4b388..00000000 --- a/vendor/filament/infolists/resources/lang/km/components.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - - 'text' => [ - - 'actions' => [ - 'collapse_list' => 'បង្ហាញ :count តិច', - 'expand_list' => 'បង្ហាញ :count ច្រើនទៀត', - ], - - 'more_list_items' => 'និង :count ច្រើនទៀត', - - ], - - 'key_value' => [ - - 'columns' => [ - - 'key' => [ - 'label' => 'សោ', - ], - - 'value' => [ - 'label' => 'តម្លៃ', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/ko/components.php b/vendor/filament/infolists/resources/lang/ko/components.php deleted file mode 100644 index e79a58ac..00000000 --- a/vendor/filament/infolists/resources/lang/ko/components.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'more_list_items' => ':count 항목이 더 있습니다', - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/ku/components.php b/vendor/filament/infolists/resources/lang/ku/components.php deleted file mode 100644 index 22c85a59..00000000 --- a/vendor/filament/infolists/resources/lang/ku/components.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'more_list_items' => 'وە :count ی زیاتر', - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/lt/components.php b/vendor/filament/infolists/resources/lang/lt/components.php deleted file mode 100644 index a36b4a64..00000000 --- a/vendor/filament/infolists/resources/lang/lt/components.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'more_list_items' => 'ir dar :count', - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/nl/components.php b/vendor/filament/infolists/resources/lang/nl/components.php deleted file mode 100644 index 68a87821..00000000 --- a/vendor/filament/infolists/resources/lang/nl/components.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - - 'text' => [ - - 'actions' => [ - 'collapse_list' => ':count minder tonen', - 'expand_list' => ':count meer tonen', - ], - - 'more_list_items' => 'en :count meer', - - ], - - 'key_value' => [ - - 'columns' => [ - - 'key' => [ - 'label' => 'Sleutel', - ], - - 'value' => [ - 'label' => 'Waarde', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/no/components.php b/vendor/filament/infolists/resources/lang/no/components.php deleted file mode 100644 index 45346427..00000000 --- a/vendor/filament/infolists/resources/lang/no/components.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'more_list_items' => 'og :count flere', - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/np/components.php b/vendor/filament/infolists/resources/lang/np/components.php deleted file mode 100644 index f1ea15ba..00000000 --- a/vendor/filament/infolists/resources/lang/np/components.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'more_list_items' => 'र :count थप वस्तुहरू छन्', - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/pt_BR/components.php b/vendor/filament/infolists/resources/lang/pt_BR/components.php deleted file mode 100644 index b3b11781..00000000 --- a/vendor/filament/infolists/resources/lang/pt_BR/components.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'more_list_items' => 'e :count mais', - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/pt_PT/components.php b/vendor/filament/infolists/resources/lang/pt_PT/components.php deleted file mode 100644 index ef5f4e59..00000000 --- a/vendor/filament/infolists/resources/lang/pt_PT/components.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - - 'text' => [ - - 'actions' => [ - 'collapse_list' => 'Mostrar menos :count', - 'expand_list' => 'Mostrar mais :count', - ], - - 'more_list_items' => 'e mais :count', - - ], - - 'key_value' => [ - - 'columns' => [ - - 'key' => [ - 'label' => 'Chave', - ], - - 'value' => [ - 'label' => 'Valor', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/ru/components.php b/vendor/filament/infolists/resources/lang/ru/components.php deleted file mode 100644 index b0175988..00000000 --- a/vendor/filament/infolists/resources/lang/ru/components.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'more_list_items' => 'and :count more', - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/sk/components.php b/vendor/filament/infolists/resources/lang/sk/components.php deleted file mode 100644 index 70cb8f03..00000000 --- a/vendor/filament/infolists/resources/lang/sk/components.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'more_list_items' => 'a ďalšich :count', - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/sv/components.php b/vendor/filament/infolists/resources/lang/sv/components.php deleted file mode 100644 index 721a39b4..00000000 --- a/vendor/filament/infolists/resources/lang/sv/components.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'more_list_items' => 'och :count till', - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/tr/components.php b/vendor/filament/infolists/resources/lang/tr/components.php deleted file mode 100644 index da31ce66..00000000 --- a/vendor/filament/infolists/resources/lang/tr/components.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'more_list_items' => 've :count daha', - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/uk/components.php b/vendor/filament/infolists/resources/lang/uk/components.php deleted file mode 100644 index 04ce80a2..00000000 --- a/vendor/filament/infolists/resources/lang/uk/components.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'more_list_items' => 'і :count ще', - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/uz/components.php b/vendor/filament/infolists/resources/lang/uz/components.php deleted file mode 100644 index d7505bdd..00000000 --- a/vendor/filament/infolists/resources/lang/uz/components.php +++ /dev/null @@ -1,36 +0,0 @@ - [ - - 'text' => [ - - 'actions' => [ - 'collapse_list' => ':countta kam ko\'rsatish', - 'expand_list' => 'Yana :counttasini k\'rsatish', - ], - - 'more_list_items' => 'va yana :countta', - - ], - - 'key_value' => [ - - 'columns' => [ - - 'key' => [ - 'label' => 'Kalit so\'zi', - ], - - 'value' => [ - 'label' => 'Qiymati', - ], - - ], - - ], - - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/vi/components.php b/vendor/filament/infolists/resources/lang/vi/components.php deleted file mode 100644 index 0b09b6d1..00000000 --- a/vendor/filament/infolists/resources/lang/vi/components.php +++ /dev/null @@ -1,20 +0,0 @@ - [ - - 'text' => [ - - 'actions' => [ - 'collapse_list' => 'Hiển thị :count ít hơn', - 'expand_list' => 'Hiển thị :count thêm', - ], - - 'more_list_items' => 'và :count thêm', - - ], - - ], - -]; diff --git a/vendor/filament/infolists/resources/lang/zh_CN/components.php b/vendor/filament/infolists/resources/lang/zh_CN/components.php deleted file mode 100644 index 75237cb4..00000000 --- a/vendor/filament/infolists/resources/lang/zh_CN/components.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'more_list_items' => '还有 :count 条记录', - ], - -]; diff --git a/vendor/filament/infolists/resources/views/component-container.blade.php b/vendor/filament/infolists/resources/views/component-container.blade.php deleted file mode 100644 index 1a729b71..00000000 --- a/vendor/filament/infolists/resources/views/component-container.blade.php +++ /dev/null @@ -1,53 +0,0 @@ -@php - use Filament\Support\Enums\MaxWidth; -@endphp - -
    - - @foreach ($getComponents() as $infolistComponent) - getMaxWidth()) { - MaxWidth::ExtraSmall, 'xs' => 'max-w-xs', - MaxWidth::Small, 'sm' => 'max-w-sm', - MaxWidth::Medium, 'md' => 'max-w-md', - MaxWidth::Large, 'lg' => 'max-w-lg', - MaxWidth::ExtraLarge, 'xl' => 'max-w-xl', - MaxWidth::TwoExtraLarge, '2xl' => 'max-w-2xl', - MaxWidth::ThreeExtraLarge, '3xl' => 'max-w-3xl', - MaxWidth::FourExtraLarge, '4xl' => 'max-w-4xl', - MaxWidth::FiveExtraLarge, '5xl' => 'max-w-5xl', - MaxWidth::SixExtraLarge, '6xl' => 'max-w-6xl', - MaxWidth::SevenExtraLarge, '7xl' => 'max-w-7xl', - default => $maxWidth, - }, - ]) - > - {{ $infolistComponent }} - - @endforeach - -
    diff --git a/vendor/filament/infolists/resources/views/components/actions.blade.php b/vendor/filament/infolists/resources/views/components/actions.blade.php deleted file mode 100644 index 2daa9960..00000000 --- a/vendor/filament/infolists/resources/views/components/actions.blade.php +++ /dev/null @@ -1,34 +0,0 @@ -@php - use Filament\Support\Enums\VerticalAlignment; - - $verticalAlignment = $getVerticalAlignment(); - - if (! $verticalAlignment instanceof VerticalAlignment) { - $verticalAlignment = filled($verticalAlignment) ? (VerticalAlignment::tryFrom($verticalAlignment) ?? $verticalAlignment) : null; - } -@endphp - -
    merge([ - 'id' => $getId(), - ], escape: false) - ->merge($getExtraAttributes(), escape: false) - ->class([ - 'fi-in-actions flex h-full flex-col', - match ($verticalAlignment) { - VerticalAlignment::Start => 'justify-start', - VerticalAlignment::Center => 'justify-center', - VerticalAlignment::End => 'justify-end', - default => $verticalAlignment, - }, - ]) - }} -> - -
    diff --git a/vendor/filament/infolists/resources/views/components/actions/action-container.blade.php b/vendor/filament/infolists/resources/views/components/actions/action-container.blade.php deleted file mode 100644 index be177689..00000000 --- a/vendor/filament/infolists/resources/views/components/actions/action-container.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -@foreach ($getActions() as $action) - @if ($action->isVisible()) - {{ $action }} - @endif -@endforeach diff --git a/vendor/filament/infolists/resources/views/components/affixes.blade.php b/vendor/filament/infolists/resources/views/components/affixes.blade.php deleted file mode 100644 index b9d2ac7b..00000000 --- a/vendor/filament/infolists/resources/views/components/affixes.blade.php +++ /dev/null @@ -1,52 +0,0 @@ -@props([ - 'prefixActions' => [], - 'suffixActions' => [], -]) - -@php - $prefixActions = array_filter( - $prefixActions, - fn (\Filament\Infolists\Components\Actions\Action $prefixAction): bool => $prefixAction->isVisible(), - ); - - $suffixActions = array_filter( - $suffixActions, - fn (\Filament\Infolists\Components\Actions\Action $suffixAction): bool => $suffixAction->isVisible(), - ); - - $affixActionsClasses = 'flex items-center gap-3 self-stretch'; -@endphp - -
    class(['fi-in-affixes flex']) }} -> - @if (count($prefixActions)) -
    - @foreach ($prefixActions as $prefixAction) - {{ $prefixAction }} - @endforeach -
    - @endif - -
    - {{ $slot }} -
    - - @if (count($suffixActions)) -
    - @foreach ($suffixActions as $suffixAction) - {{ $suffixAction }} - @endforeach -
    - @endif -
    diff --git a/vendor/filament/infolists/resources/views/components/color-entry.blade.php b/vendor/filament/infolists/resources/views/components/color-entry.blade.php deleted file mode 100644 index 726ef140..00000000 --- a/vendor/filament/infolists/resources/views/components/color-entry.blade.php +++ /dev/null @@ -1,46 +0,0 @@ - -
    merge($getExtraAttributes(), escape: false) - ->class([ - 'fi-in-color flex flex-wrap gap-1.5', - ]) - }} - > - @if (count($arrayState = \Illuminate\Support\Arr::wrap($getState()))) - @foreach ($arrayState as $state) - @php - $itemIsCopyable = $isCopyable($state); - $copyableState = $getCopyableState($state) ?? $state; - $copyMessage = $getCopyMessage($state); - $copyMessageDuration = $getCopyMessageDuration($state); - @endphp - -
    $itemIsCopyable, - ]) - @style([ - "background-color: {$state}" => $state, - ]) - >
    - @endforeach - @elseif (($placeholder = $getPlaceholder()) !== null) - - {{ $placeholder }} - - @endif -
    -
    diff --git a/vendor/filament/infolists/resources/views/components/entries/placeholder.blade.php b/vendor/filament/infolists/resources/views/components/entries/placeholder.blade.php deleted file mode 100644 index 74fe53c7..00000000 --- a/vendor/filament/infolists/resources/views/components/entries/placeholder.blade.php +++ /dev/null @@ -1,3 +0,0 @@ -
    - {{ $slot }} -
    diff --git a/vendor/filament/infolists/resources/views/components/entry-wrapper/helper-text.blade.php b/vendor/filament/infolists/resources/views/components/entry-wrapper/helper-text.blade.php deleted file mode 100644 index 39495a52..00000000 --- a/vendor/filament/infolists/resources/views/components/entry-wrapper/helper-text.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -
    class(['fi-in-entry-wrp-helper-text text-sm text-gray-500']) }} -> - {{ $slot }} -
    diff --git a/vendor/filament/infolists/resources/views/components/entry-wrapper/hint.blade.php b/vendor/filament/infolists/resources/views/components/entry-wrapper/hint.blade.php deleted file mode 100644 index e70842aa..00000000 --- a/vendor/filament/infolists/resources/views/components/entry-wrapper/hint.blade.php +++ /dev/null @@ -1,65 +0,0 @@ -@props([ - 'actions' => [], - 'color' => 'gray', - 'icon' => null, - 'tooltip' => null, -]) - -
    class([ - 'fi-in-entry-wrp-hint flex items-center gap-x-3 text-sm', - ]) - }} -> - @if (! \Filament\Support\is_slot_empty($slot)) - 'fi-color-gray text-gray-500', - default => 'fi-color-custom text-custom-600 dark:text-custom-400', - }, - ]) - @style([ - \Filament\Support\get_color_css_variables( - $color, - shades: [400, 600], - alias: 'infolists::components.entry-wrapper.hint.label', - ), - ]) - > - {{ $slot }} - - @endif - - @if ($icon) - 'text-gray-400 dark:text-gray-500', - default => 'text-custom-500 dark:text-custom-400', - }, - ]) - @style([ - \Filament\Support\get_color_css_variables( - $color, - shades: [400, 500], - alias: 'infolists::components.entry-wrapper.hint.icon', - ), - ]) - /> - @endif - - @if (count($actions)) -
    - @foreach ($actions as $action) - {{ $action }} - @endforeach -
    - @endif -
    diff --git a/vendor/filament/infolists/resources/views/components/entry-wrapper/index.blade.php b/vendor/filament/infolists/resources/views/components/entry-wrapper/index.blade.php deleted file mode 100644 index ca87fc41..00000000 --- a/vendor/filament/infolists/resources/views/components/entry-wrapper/index.blade.php +++ /dev/null @@ -1,155 +0,0 @@ -@props([ - 'action' => null, - 'alignment' => null, - 'entry' => null, - 'hasInlineLabel' => null, - 'helperText' => null, - 'hint' => null, - 'hintActions' => null, - 'hintColor' => null, - 'hintIcon' => null, - 'hintIconTooltip' => null, - 'id' => null, - 'label' => null, - 'labelPrefix' => null, - 'labelSrOnly' => null, - 'labelSuffix' => null, - 'shouldOpenUrlInNewTab' => null, - 'statePath' => null, - 'tooltip' => null, - 'url' => null, -]) - -@php - use Filament\Support\Enums\Alignment; - - if ($entry) { - $action ??= $entry->getAction(); - $alignment ??= $entry->getAlignment(); - $hasInlineLabel ??= $entry->hasInlineLabel(); - $helperText ??= $entry->getHelperText(); - $hint ??= $entry->getHint(); - $hintActions ??= $entry->getHintActions(); - $hintColor ??= $entry->getHintColor(); - $hintIcon ??= $entry->getHintIcon(); - $hintIconTooltip ??= $entry->getHintIconTooltip(); - $id ??= $entry->getId(); - $label ??= $entry->getLabel(); - $labelSrOnly ??= $entry->isLabelHidden(); - $shouldOpenUrlInNewTab ??= $entry->shouldOpenUrlInNewTab(); - $statePath ??= $entry->getStatePath(); - $tooltip ??= $entry->getTooltip(); - $url ??= $entry->getUrl(); - } - - if (! $alignment instanceof Alignment) { - $alignment = filled($alignment) ? (Alignment::tryFrom($alignment) ?? $alignment) : null; - } - - $hintActions = array_filter( - $hintActions ?? [], - fn (\Filament\Infolists\Components\Actions\Action $hintAction): bool => $hintAction->isVisible(), - ); -@endphp - -
    class(['fi-in-entry-wrp']) }}> - @if ($label && $labelSrOnly) -
    - {{ $label }} -
    - @endif - -
    $hasInlineLabel, - ]) - > - @if (($label && (! $labelSrOnly)) || $labelPrefix || $labelSuffix || filled($hint) || $hintIcon) -
    - @if ($label && (! $labelSrOnly)) - - {{ $label }} - - @elseif ($labelPrefix) - {{ $labelPrefix }} - @elseif ($labelSuffix) - {{ $labelSuffix }} - @endif - - @if (filled($hint) || $hintIcon || count($hintActions)) - - {{ $hint }} - - @endif -
    - @endif - -
    $hasInlineLabel, - ]) - > -
    'text-start', - Alignment::Center => 'text-center', - Alignment::End => 'text-end', - Alignment::Justify, Alignment::Between => 'text-justify', - Alignment::Left => 'text-left', - Alignment::Right => 'text-right', - default => $alignment, - }, - ]) - > - @if ($url) - - {{ $slot }} - - @elseif ($action) - @php - $wireClickAction = $action->getLivewireClickHandler(); - @endphp - - - @else - {{ $slot }} - @endif -
    - - @if (filled($helperText)) - - {{ $helperText }} - - @endif -
    -
    -
    diff --git a/vendor/filament/infolists/resources/views/components/entry-wrapper/label.blade.php b/vendor/filament/infolists/resources/views/components/entry-wrapper/label.blade.php deleted file mode 100644 index 795de4eb..00000000 --- a/vendor/filament/infolists/resources/views/components/entry-wrapper/label.blade.php +++ /dev/null @@ -1,16 +0,0 @@ -@props([ - 'prefix' => null, - 'suffix' => null, -]) - -
    class(['fi-in-entry-wrp-label inline-flex items-center gap-x-3']) }} -> - {{ $prefix }} - - - {{ $slot }} - - - {{ $suffix }} -
    diff --git a/vendor/filament/infolists/resources/views/components/fieldset.blade.php b/vendor/filament/infolists/resources/views/components/fieldset.blade.php deleted file mode 100644 index 4142ae1c..00000000 --- a/vendor/filament/infolists/resources/views/components/fieldset.blade.php +++ /dev/null @@ -1,13 +0,0 @@ - - {{ $getChildComponentContainer() }} - diff --git a/vendor/filament/infolists/resources/views/components/grid.blade.php b/vendor/filament/infolists/resources/views/components/grid.blade.php deleted file mode 100644 index 66ecf4bd..00000000 --- a/vendor/filament/infolists/resources/views/components/grid.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -
    merge([ - 'id' => $getId(), - ], escape: false) - ->merge($getExtraAttributes(), escape: false) - }} -> - {{ $getChildComponentContainer() }} -
    diff --git a/vendor/filament/infolists/resources/views/components/group.blade.php b/vendor/filament/infolists/resources/views/components/group.blade.php deleted file mode 100644 index 66ecf4bd..00000000 --- a/vendor/filament/infolists/resources/views/components/group.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -
    merge([ - 'id' => $getId(), - ], escape: false) - ->merge($getExtraAttributes(), escape: false) - }} -> - {{ $getChildComponentContainer() }} -
    diff --git a/vendor/filament/infolists/resources/views/components/icon-entry.blade.php b/vendor/filament/infolists/resources/views/components/icon-entry.blade.php deleted file mode 100644 index f5a06a6c..00000000 --- a/vendor/filament/infolists/resources/views/components/icon-entry.blade.php +++ /dev/null @@ -1,57 +0,0 @@ -@php - use Filament\Infolists\Components\IconEntry\IconEntrySize; -@endphp - - -
    merge($getExtraAttributes(), escape: false) - ->class([ - 'fi-in-icon flex flex-wrap gap-1.5', - ]) - }} - > - @if (count($arrayState = \Illuminate\Support\Arr::wrap($getState()))) - @foreach ($arrayState as $state) - @if ($icon = $getIcon($state)) - @php - $color = $getColor($state) ?? 'gray'; - $size = $getSize($state) ?? IconEntrySize::Large; - @endphp - - 'fi-in-icon-item-size-xs h-3 w-3', - IconEntrySize::Small, 'sm' => 'fi-in-icon-item-size-sm h-4 w-4', - IconEntrySize::Medium, 'md' => 'fi-in-icon-item-size-md h-5 w-5', - IconEntrySize::Large, 'lg' => 'fi-in-icon-item-size-lg h-6 w-6', - IconEntrySize::ExtraLarge, 'xl' => 'fi-in-icon-item-size-xl h-7 w-7', - IconEntrySize::TwoExtraLarge, IconEntrySize::ExtraExtraLarge, '2xl' => 'fi-in-icon-item-size-2xl h-8 w-8', - default => $size, - }, - match ($color) { - 'gray' => 'fi-color-gray text-gray-400 dark:text-gray-500', - default => 'fi-color-custom text-custom-500 dark:text-custom-400', - }, - ]) - @style([ - \Filament\Support\get_color_css_variables( - $color, - shades: [400, 500], - alias: 'infolists::components.icon-entry.item', - ) => $color !== 'gray', - ]) - /> - @endif - @endforeach - @elseif (($placeholder = $getPlaceholder()) !== null) - - {{ $placeholder }} - - @endif -
    -
    diff --git a/vendor/filament/infolists/resources/views/components/image-entry.blade.php b/vendor/filament/infolists/resources/views/components/image-entry.blade.php deleted file mode 100644 index cb9ffd5d..00000000 --- a/vendor/filament/infolists/resources/views/components/image-entry.blade.php +++ /dev/null @@ -1,129 +0,0 @@ - - @php - $limit = $getLimit(); - $state = \Illuminate\Support\Arr::wrap($getState()); - $limitedState = array_slice($state, 0, $limit); - $isCircular = $isCircular(); - $isSquare = $isSquare(); - $isStacked = $isStacked(); - $overlap = $isStacked ? ($getOverlap() ?? 2) : null; - $ring = $isStacked ? ($getRing() ?? 2) : null; - $height = $getHeight() ?? ($isStacked ? '2.5rem' : '8rem'); - $width = $getWidth() ?? (($isCircular || $isSquare) ? $height : null); - - $defaultImageUrl = $getDefaultImageUrl(); - - if ((! count($limitedState)) && filled($defaultImageUrl)) { - $limitedState = [null]; - } - - $ringClasses = \Illuminate\Support\Arr::toCssClasses([ - 'ring-white dark:ring-gray-900', - match ($ring) { - 0 => null, - 1 => 'ring-1', - 2 => 'ring-2', - 3 => 'ring', - 4 => 'ring-4', - default => $ring, - }, - ]); - - $hasLimitedRemainingText = $hasLimitedRemainingText(); - $isLimitedRemainingTextSeparate = $isLimitedRemainingTextSeparate(); - - $limitedRemainingTextSizeClasses = match ($getLimitedRemainingTextSize()) { - 'xs' => 'text-xs', - 'sm', null => 'text-sm', - 'base', 'md' => 'text-base', - 'lg' => 'text-lg', - default => $size, - }; - @endphp - -
    merge($getExtraAttributes(), escape: false) - ->class([ - 'fi-in-image flex items-center gap-x-2.5', - ]) - }} - > - @if (count($limitedState)) -
    null, - 1 => '-space-x-1', - 2 => '-space-x-2', - 3 => '-space-x-3', - 4 => '-space-x-4', - 5 => '-space-x-5', - 6 => '-space-x-6', - 7 => '-space-x-7', - 8 => '-space-x-8', - default => 'gap-1.5', - }, - ]) - > - @foreach ($limitedState as $stateItem) - class([ - 'max-w-none object-cover object-center', - 'rounded-full' => $isCircular, - $ringClasses, - ]) - ->style([ - "height: {$height}" => $height, - "width: {$width}" => $width, - ]) - }} - /> - @endforeach - - @if ($hasLimitedRemainingText && ($loop->iteration < count($limitedState)) && (! $isLimitedRemainingTextSeparate) && $isCircular) -
    $isCircular, - $limitedRemainingTextSizeClasses, - $ringClasses, - ]) - @style([ - "height: {$height}" => $height, - "width: {$width}" => $width, - ]) - > - - +{{ count($state) - count($limitedState) }} - -
    - @endif -
    - - @if ($hasLimitedRemainingText && ($loop->iteration < count($limitedState)) && ($isLimitedRemainingTextSeparate || (! $isCircular))) -
    - +{{ count($state) - count($limitedState) }} -
    - @endif - @elseif (($placeholder = $getPlaceholder()) !== null) - - {{ $placeholder }} - - @endif -
    -
    diff --git a/vendor/filament/infolists/resources/views/components/key-value-entry.blade.php b/vendor/filament/infolists/resources/views/components/key-value-entry.blade.php deleted file mode 100644 index 03922cde..00000000 --- a/vendor/filament/infolists/resources/views/components/key-value-entry.blade.php +++ /dev/null @@ -1,49 +0,0 @@ - -
    merge($getExtraAttributes(), escape: false) - ->class(['fi-in-key-value w-full rounded-lg bg-white shadow-sm ring-1 ring-gray-950/5 dark:bg-white/5 dark:ring-white/10']) - }} - > - - - - - - - - - - - @foreach ($getState() as $key => $value) - - - - - - @endforeach - -
    - {{ $getKeyLabel() }} - - {{ $getValueLabel() }} -
    - {{ $key }} - - {{ $value }} -
    -
    -
    diff --git a/vendor/filament/infolists/resources/views/components/livewire.blade.php b/vendor/filament/infolists/resources/views/components/livewire.blade.php deleted file mode 100644 index 48d4dc93..00000000 --- a/vendor/filament/infolists/resources/views/components/livewire.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -
    - @if (filled($key = $getKey())) - @livewire($getComponent(), $getComponentProperties(), key($key)) - @else - @livewire($getComponent(), $getComponentProperties()) - @endif -
    diff --git a/vendor/filament/infolists/resources/views/components/repeatable-entry.blade.php b/vendor/filament/infolists/resources/views/components/repeatable-entry.blade.php deleted file mode 100644 index c1e955ce..00000000 --- a/vendor/filament/infolists/resources/views/components/repeatable-entry.blade.php +++ /dev/null @@ -1,48 +0,0 @@ -@php - $isContained = $isContained(); -@endphp - - -
    merge([ - 'id' => $getId(), - ], escape: false) - ->merge($getExtraAttributes(), escape: false) - ->class([ - 'fi-in-repeatable', - 'fi-contained' => $isContained, - ]) - }} - > - @if (count($childComponentContainers = $getChildComponentContainers())) -
      - - @foreach ($childComponentContainers as $container) -
    • $isContained, - ]) - > - {{ $container }} -
    • - @endforeach -
      -
    - @elseif (($placeholder = $getPlaceholder()) !== null) - - {{ $placeholder }} - - @endif -
    -
    diff --git a/vendor/filament/infolists/resources/views/components/section.blade.php b/vendor/filament/infolists/resources/views/components/section.blade.php deleted file mode 100644 index e9083b75..00000000 --- a/vendor/filament/infolists/resources/views/components/section.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@php - $isAside = $isAside(); -@endphp - - - {{ $getChildComponentContainer() }} - diff --git a/vendor/filament/infolists/resources/views/components/split.blade.php b/vendor/filament/infolists/resources/views/components/split.blade.php deleted file mode 100644 index 21057b1a..00000000 --- a/vendor/filament/infolists/resources/views/components/split.blade.php +++ /dev/null @@ -1,63 +0,0 @@ -@php - use Filament\Support\Enums\VerticalAlignment; - - $verticalAlignment = $getVerticalAlignment(); - - if (! $verticalAlignment instanceof VerticalAlignment) { - $verticalAlignment = filled($verticalAlignment) ? (VerticalAlignment::tryFrom($verticalAlignment) ?? $verticalAlignment) : null; - } -@endphp - -
    merge($getExtraAttributes(), escape: false) - ->class([ - 'flex gap-6', - match ($getFromBreakpoint()) { - 'sm' => 'flex-col sm:flex-row ' . match ($verticalAlignment) { - VerticalAlignment::Center => 'sm:items-center', - VerticalAlignment::End => 'sm:items-end', - default => 'sm:items-start', - }, - 'md' => 'flex-col md:flex-row ' . match ($verticalAlignment) { - VerticalAlignment::Center => 'md:items-center', - VerticalAlignment::End => 'md:items-end', - default => 'md:items-start', - }, - 'lg' => 'flex-col lg:flex-row ' . match ($verticalAlignment) { - VerticalAlignment::Center => 'lg:items-center', - VerticalAlignment::End => 'lg:items-end', - default => 'lg:items-start', - }, - 'xl' => 'flex-col xl:flex-row ' . match ($verticalAlignment) { - VerticalAlignment::Center => 'xl:items-center', - VerticalAlignment::End => 'xl:items-end', - default => 'xl:items-start', - }, - '2xl' => 'flex-col 2xl:flex-row ' . match ($verticalAlignment) { - VerticalAlignment::Center => '2xl:items-center', - VerticalAlignment::End => '2xl:items-end', - default => '2xl:items-start', - }, - default => match ($verticalAlignment) { - VerticalAlignment::Center => 'items-center', - VerticalAlignment::End => 'items-end', - default => 'items-start', - }, - }, - ]) - }} -> - @foreach ($getChildComponentContainers() as $container) - @foreach ($container->getComponents() as $component) -
    $component->canGrow(), - ]) - > - {{ $component }} -
    - @endforeach - @endforeach -
    diff --git a/vendor/filament/infolists/resources/views/components/tabs.blade.php b/vendor/filament/infolists/resources/views/components/tabs.blade.php deleted file mode 100644 index 3e768054..00000000 --- a/vendor/filament/infolists/resources/views/components/tabs.blade.php +++ /dev/null @@ -1,103 +0,0 @@ -@php - use Filament\Infolists\Components\Tabs\Tab; - - $isContained = $isContained(); -@endphp - -
    merge([ - 'id' => $getId(), - ], escape: false) - ->merge($getExtraAttributes(), escape: false) - ->merge($getExtraAlpineAttributes(), escape: false) - ->class([ - 'fi-in-tabs flex flex-col', - 'fi-contained rounded-xl bg-white shadow-sm ring-1 ring-gray-950/5 dark:bg-gray-900 dark:ring-white/10' => $isContained, - ]) - }} -> - - - - @foreach ($getChildComponentContainer()->getComponents() as $tab) - @php - $tabId = $tab->getId(); - @endphp - - - {{ $tab->getLabel() }} - - @endforeach - - - @foreach ($getChildComponentContainer()->getComponents() as $tab) - {{ $tab }} - @endforeach -
    diff --git a/vendor/filament/infolists/resources/views/components/tabs/tab.blade.php b/vendor/filament/infolists/resources/views/components/tabs/tab.blade.php deleted file mode 100644 index 4fe481dd..00000000 --- a/vendor/filament/infolists/resources/views/components/tabs/tab.blade.php +++ /dev/null @@ -1,29 +0,0 @@ -@php - $id = $getId(); - $isContained = $getContainer()->getParentComponent()->isContained(); - - $activeTabClasses = \Illuminate\Support\Arr::toCssClasses([ - 'fi-active', - 'p-6' => $isContained, - 'mt-6' => ! $isContained, - ]); - - $inactiveTabClasses = 'invisible h-0 overflow-y-hidden p-0'; -@endphp - -
    merge([ - 'aria-labelledby' => $id, - 'id' => $id, - 'role' => 'tabpanel', - 'tabindex' => '0', - ], escape: false) - ->merge($getExtraAttributes(), escape: false) - ->class(['fi-in-tabs-tab outline-none']) - }} -> - {{ $getChildComponentContainer() }} -
    diff --git a/vendor/filament/infolists/resources/views/components/text-entry.blade.php b/vendor/filament/infolists/resources/views/components/text-entry.blade.php deleted file mode 100644 index 322b269d..00000000 --- a/vendor/filament/infolists/resources/views/components/text-entry.blade.php +++ /dev/null @@ -1,295 +0,0 @@ -@php - use Filament\Infolists\Components\TextEntry\TextEntrySize; - use Filament\Support\Enums\Alignment; - use Filament\Support\Enums\FontFamily; - use Filament\Support\Enums\FontWeight; - use Filament\Support\Enums\IconPosition; -@endphp - - - @php - $alignment = $getAlignment(); - $isBadge = $isBadge(); - $isBulleted = $isBulleted(); - $iconPosition = $getIconPosition(); - $isListWithLineBreaks = $isListWithLineBreaks(); - $isLimitedListExpandable = $isLimitedListExpandable(); - $isProse = $isProse(); - $isMarkdown = $isMarkdown(); - $url = $getUrl(); - - if (! $alignment instanceof Alignment) { - $alignment = filled($alignment) ? (Alignment::tryFrom($alignment) ?? $alignment) : null; - } - - $arrayState = $getState(); - - if ($arrayState instanceof \Illuminate\Support\Collection) { - $arrayState = $arrayState->all(); - } - - $listLimit = 1; - - if (is_array($arrayState)) { - if ($listLimit = $getListLimit()) { - $limitedArrayStateCount = (count($arrayState) > $listLimit) ? (count($arrayState) - $listLimit) : 0; - - if (! $isListWithLineBreaks) { - $arrayState = array_slice($arrayState, 0, $listLimit); - } - } - - $listLimit ??= count($arrayState); - - if ((! $isListWithLineBreaks) && (! $isBadge)) { - $arrayState = implode( - ', ', - array_map( - fn ($value) => $value instanceof \Filament\Support\Contracts\HasLabel ? $value->getLabel() : $value, - $arrayState, - ), - ); - } - } - - $arrayState = \Illuminate\Support\Arr::wrap($arrayState); - @endphp - -
    merge($getExtraAttributes(), escape: false) - ->class(['fi-in-text w-full']) - }} - > - @if ($arrayState) - - <{{ $isListWithLineBreaks ? 'ul' : 'div' }} - @class([ - 'flex' => ! $isBulleted, - 'flex-col' => (! $isBulleted) && $isListWithLineBreaks, - 'list-inside list-disc' => $isBulleted, - 'gap-1.5' => $isBadge, - 'flex-wrap' => $isBadge && (! $isListWithLineBreaks), - match ($alignment) { - Alignment::Start => 'text-start', - Alignment::Center => 'text-center', - Alignment::End => 'text-end', - Alignment::Left => 'text-left', - Alignment::Right => 'text-right', - Alignment::Justify, Alignment::Between => 'text-justify', - default => $alignment, - }, - match ($alignment) { - Alignment::Start, Alignment::Left => 'justify-start', - Alignment::Center => 'justify-center', - Alignment::End, Alignment::Right => 'justify-end', - Alignment::Between, Alignment::Justify => 'justify-between', - default => null, - } => $isBulleted || (! $isListWithLineBreaks), - match ($alignment) { - Alignment::Start, Alignment::Left => 'items-start', - Alignment::Center => 'items-center', - Alignment::End, Alignment::Right => 'items-end', - Alignment::Between, Alignment::Justify => 'items-stretch', - default => null, - } => $isListWithLineBreaks && (! $isBulleted), - ]) - @if ($isListWithLineBreaks && $isLimitedListExpandable) - x-data="{ isLimited: true }" - @endif - > - @foreach ($arrayState as $state) - @if (filled($formattedState = $formatState($state)) && - (! ($isListWithLineBreaks && (! $isLimitedListExpandable) && ($loop->iteration > $listLimit)))) - @php - $color = $getColor($state); - $copyableState = $getCopyableState($state) ?? $state; - $copyMessage = $getCopyMessage($state); - $copyMessageDuration = $getCopyMessageDuration($state); - $fontFamily = $getFontFamily($state); - $icon = $getIcon($state); - $iconColor = $getIconColor($state); - $itemIsCopyable = $isCopyable($state); - $size = $getSize($state); - $weight = $getWeight($state); - - $proseClasses = \Illuminate\Support\Arr::toCssClasses([ - 'prose max-w-none dark:prose-invert [&>*:first-child]:mt-0 [&>*:last-child]:mb-0', - 'pt-2' => ! $isLabelHidden(), - match ($size) { - TextEntrySize::ExtraSmall, 'xs' => 'prose-xs', - TextEntrySize::Small, 'sm', null => 'prose-sm', - TextEntrySize::Medium, 'base', 'md' => 'prose-base', - TextEntrySize::Large, 'lg' => 'prose-lg', - default => $size, - }, - ]); - - $iconClasses = \Illuminate\Support\Arr::toCssClasses([ - 'fi-in-text-item-icon h-5 w-5 shrink-0', - match ($iconColor) { - 'gray', null => 'text-gray-400 dark:text-gray-500', - default => 'text-custom-500', - }, - ]); - - $iconStyles = \Illuminate\Support\Arr::toCssStyles([ - \Filament\Support\get_color_css_variables( - $iconColor, - shades: [500], - alias: 'infolists::components.text-entry.item.icon', - ) => $iconColor !== 'gray', - ]); - @endphp - - <{{ $isListWithLineBreaks ? 'li' : 'div' }} - @if ($itemIsCopyable) - x-on:click=" - window.navigator.clipboard.writeText(@js($copyableState)) - $tooltip(@js($copyMessage), { - theme: $store.theme, - timeout: @js($copyMessageDuration), - }) - " - @endif - @if ($isListWithLineBreaks && ($loop->iteration > $listLimit)) - x-cloak - x-show="! isLimited" - x-transition - @endif - @class([ - 'flex' => ! $isBulleted, - 'max-w-max' => ! ($isBulleted || $isBadge), - 'w-max' => $isBadge, - 'cursor-pointer' => $itemIsCopyable, - ]) - > - @if ($isBadge) - - {{ $formattedState }} - - @else -
    $url, - match ($color) { - null => null, - 'gray' => 'fi-color-gray', - default => 'fi-color-custom', - }, - ]) - > - @if ($icon && in_array($iconPosition, [IconPosition::Before, 'before'])) - - @endif - -
    $url, - $proseClasses => $isProse || $isMarkdown, - match ($size) { - TextEntrySize::ExtraSmall, 'xs' => 'text-xs', - TextEntrySize::Small, 'sm', null => 'text-sm leading-6', - TextEntrySize::Medium, 'base', 'md' => 'text-base', - TextEntrySize::Large, 'lg' => 'text-lg', - default => $size, - }, - match ($color) { - null => 'text-gray-950 dark:text-white', - 'gray' => 'text-gray-500 dark:text-gray-400', - default => 'text-custom-600 dark:text-custom-400', - }, - match ($weight) { - FontWeight::Thin, 'thin' => 'font-thin', - FontWeight::ExtraLight, 'extralight' => 'font-extralight', - FontWeight::Light, 'light' => 'font-light', - FontWeight::Medium, 'medium' => 'font-medium', - FontWeight::SemiBold, 'semibold' => 'font-semibold', - FontWeight::Bold, 'bold' => 'font-bold', - FontWeight::ExtraBold, 'extrabold' => 'font-extrabold', - FontWeight::Black, 'black' => 'font-black', - default => $weight, - }, - match ($fontFamily) { - FontFamily::Sans, 'sans' => 'font-sans', - FontFamily::Serif, 'serif' => 'font-serif', - FontFamily::Mono, 'mono' => 'font-mono', - default => $fontFamily, - }, - ]) - @style([ - \Filament\Support\get_color_css_variables( - $color, - shades: [400, 600], - alias: 'infolists::components.text-entry.item.label', - ) => ! in_array($color, [null, 'gray']), - ]) - > - {{ $formattedState }} -
    - - @if ($icon && in_array($iconPosition, [IconPosition::After, 'after'])) - - @endif -
    - @endif - - @endif - @endforeach - - @if ($limitedArrayStateCount ?? 0) - <{{ $isListWithLineBreaks ? 'li' : 'div' }}> - @if ($isLimitedListExpandable) - - {{ trans_choice('filament-infolists::components.entries.text.actions.expand_list', $limitedArrayStateCount) }} - - - - {{ trans_choice('filament-infolists::components.entries.text.actions.collapse_list', $limitedArrayStateCount) }} - - @else - - {{ trans_choice('filament-infolists::components.entries.text.more_list_items', $limitedArrayStateCount) }} - - @endif - - @endif - -
    - @elseif (($placeholder = $getPlaceholder()) !== null) - - {{ $placeholder }} - - @endif -
    -
    diff --git a/vendor/filament/infolists/src/Commands/Aliases/MakeEntryCommand.php b/vendor/filament/infolists/src/Commands/Aliases/MakeEntryCommand.php deleted file mode 100644 index c788ac50..00000000 --- a/vendor/filament/infolists/src/Commands/Aliases/MakeEntryCommand.php +++ /dev/null @@ -1,12 +0,0 @@ -argument('name') ?? text( - label: 'What is the entry name?', - placeholder: 'StatusSwitcher', - required: true, - )) - ->trim('/') - ->trim('\\') - ->trim(' ') - ->replace('/', '\\'); - $entryClass = (string) str($entry)->afterLast('\\'); - $entryNamespace = str($entry)->contains('\\') ? - (string) str($entry)->beforeLast('\\') : - ''; - - $view = str($entry) - ->prepend('infolists\\components\\') - ->explode('\\') - ->map(fn ($segment) => Str::kebab($segment)) - ->implode('.'); - - $path = app_path( - (string) str($entry) - ->prepend('Infolists\\Components\\') - ->replace('\\', '/') - ->append('.php'), - ); - $viewPath = resource_path( - (string) str($view) - ->replace('.', '/') - ->prepend('views/') - ->append('.blade.php'), - ); - - if (! $this->option('force') && $this->checkForCollision([ - $path, - ])) { - return static::INVALID; - } - - $this->copyStubToApp('Entry', $path, [ - 'class' => $entryClass, - 'namespace' => 'App\\Infolists\\Components' . ($entryNamespace !== '' ? "\\{$entryNamespace}" : ''), - 'view' => $view, - ]); - - if (! $this->fileExists($viewPath)) { - $this->copyStubToApp('EntryView', $viewPath); - } - - $this->components->info("Filament infolist entry [{$path}] created successfully."); - - return static::SUCCESS; - } -} diff --git a/vendor/filament/infolists/src/Commands/MakeLayoutComponentCommand.php b/vendor/filament/infolists/src/Commands/MakeLayoutComponentCommand.php deleted file mode 100644 index 11c1b474..00000000 --- a/vendor/filament/infolists/src/Commands/MakeLayoutComponentCommand.php +++ /dev/null @@ -1,74 +0,0 @@ -argument('name') ?? text( - label: 'What is the layout name?', - placeholder: 'Wizard', - required: true, - )) - ->trim('/') - ->trim('\\') - ->trim(' ') - ->replace('/', '\\'); - $componentClass = (string) str($component)->afterLast('\\'); - $componentNamespace = str($component)->contains('\\') ? - (string) str($component)->beforeLast('\\') : - ''; - - $view = str($component) - ->prepend('infolists\\components\\') - ->explode('\\') - ->map(fn ($segment) => Str::kebab($segment)) - ->implode('.'); - - $path = app_path( - (string) str($component) - ->prepend('Infolists\\Components\\') - ->replace('\\', '/') - ->append('.php'), - ); - $viewPath = resource_path( - (string) str($view) - ->replace('.', '/') - ->prepend('views/') - ->append('.blade.php'), - ); - - if (! $this->option('force') && $this->checkForCollision([ - $path, - ])) { - return static::INVALID; - } - - $this->copyStubToApp('LayoutComponent', $path, [ - 'class' => $componentClass, - 'namespace' => 'App\\Infolists\\Components' . ($componentNamespace !== '' ? "\\{$componentNamespace}" : ''), - 'view' => $view, - ]); - - if (! $this->fileExists($viewPath)) { - $this->copyStubToApp('LayoutComponentView', $viewPath); - } - - $this->components->info("Filament infolist layout component [{$path}] created successfully."); - - return static::SUCCESS; - } -} diff --git a/vendor/filament/infolists/src/ComponentContainer.php b/vendor/filament/infolists/src/ComponentContainer.php deleted file mode 100644 index 1e4931b1..00000000 --- a/vendor/filament/infolists/src/ComponentContainer.php +++ /dev/null @@ -1,69 +0,0 @@ -livewire($livewire); - } - - public static function make(?Component $livewire = null): static - { - $static = app(static::class, ['livewire' => $livewire]); - $static->configure(); - - return $static; - } - - /** - * @return array - */ - protected function resolveDefaultClosureDependencyForEvaluationByName(string $parameterName): array - { - return match ($parameterName) { - 'record' => [$this->getRecord()], - default => parent::resolveDefaultClosureDependencyForEvaluationByName($parameterName), - }; - } - - /** - * @return array - */ - protected function resolveDefaultClosureDependencyForEvaluationByType(string $parameterType): array - { - $record = $this->getRecord(); - - if (! $record) { - return parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType); - } - - return match ($parameterType) { - Model::class, $record::class => [$record], - default => parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType), - }; - } -} diff --git a/vendor/filament/infolists/src/Components/Actions.php b/vendor/filament/infolists/src/Components/Actions.php deleted file mode 100644 index 1f08f11a..00000000 --- a/vendor/filament/infolists/src/Components/Actions.php +++ /dev/null @@ -1,62 +0,0 @@ - $actions - */ - final public function __construct(array $actions) - { - $this->actions($actions); - } - - /** - * @param array $actions - */ - public static function make(array $actions): static - { - $static = app(static::class, ['actions' => $actions]); - $static->configure(); - - return $static; - } - - /** - * @param array $actions - */ - public function actions(array $actions): static - { - $this->childComponents(array_map( - fn (Action $action): Component => $action->toInfolistComponent(), - $actions, - )); - - return $this; - } - - public function fullWidth(bool | Closure $isFullWidth = true): static - { - $this->isFullWidth = $isFullWidth; - - return $this; - } - - public function isFullWidth(): bool - { - return (bool) $this->evaluate($this->isFullWidth); - } -} diff --git a/vendor/filament/infolists/src/Components/Actions/Action.php b/vendor/filament/infolists/src/Components/Actions/Action.php deleted file mode 100644 index fd42127b..00000000 --- a/vendor/filament/infolists/src/Components/Actions/Action.php +++ /dev/null @@ -1,100 +0,0 @@ -isLivewireClickHandlerEnabled()) { - return null; - } - - if (is_string($this->action)) { - return $this->action; - } - - if ($event = $this->getLivewireEventClickHandler()) { - return $event; - } - - $component = $this->getComponent(); - - if (! $component) { - return "mountInfolistAction('{$this->getName()}')"; - } - - $componentKey = $component->getKey(); - - if (blank($componentKey)) { - $componentClass = $this->getComponent()::class; - - throw new Exception("The infolist component [{$componentClass}] must have a [key()] set in order to use actions. This [key()] must be a unique identifier for the component."); - } - - return "mountInfolistAction('{$this->getName()}', '{$componentKey}', '{$component->getInfolist()->getName()}')"; - } - - public function toInfolistComponent(): ActionContainer - { - return ActionContainer::make($this); - } - - /** - * @return array - */ - protected function resolveDefaultClosureDependencyForEvaluationByName(string $parameterName): array - { - return match ($parameterName) { - 'component', 'infolistComponent' => [$this->getComponent()], - 'record' => [$this->getComponent()->getRecord()], - 'infolist' => [$this->getInfolist()], - default => parent::resolveDefaultClosureDependencyForEvaluationByName($parameterName), - }; - } - - /** - * @return array - */ - protected function resolveDefaultClosureDependencyForEvaluationByType(string $parameterType): array - { - $record = $this->getRecord(); - - if (! $record) { - return parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType); - } - - return match ($parameterType) { - Model::class, $record::class => [$record], - default => parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType), - }; - } - - public function prepareModalAction(StaticAction $action): StaticAction - { - $action = parent::prepareModalAction($action); - - if (! $action instanceof Action) { - return $action; - } - - return $action->component($this->getComponent()); - } - - public function getInfolistName(): string - { - return 'mountedInfolistActionsInfolist'; - } -} diff --git a/vendor/filament/infolists/src/Components/Actions/ActionContainer.php b/vendor/filament/infolists/src/Components/Actions/ActionContainer.php deleted file mode 100644 index be7be4a5..00000000 --- a/vendor/filament/infolists/src/Components/Actions/ActionContainer.php +++ /dev/null @@ -1,33 +0,0 @@ -action($action); - } - - public static function make(Action $action): static - { - $static = app(static::class, ['action' => $action]); - $static->configure(); - - return $static; - } - - public function getKey(): string - { - return parent::getKey() ?? "{$this->getStatePath()}.{$this->getAction()->getName()}Action"; - } - - public function isHidden(): bool - { - return $this->getAction()->isHidden(); - } -} diff --git a/vendor/filament/infolists/src/Components/Actions/Concerns/BelongsToInfolist.php b/vendor/filament/infolists/src/Components/Actions/Concerns/BelongsToInfolist.php deleted file mode 100644 index 17c905c0..00000000 --- a/vendor/filament/infolists/src/Components/Actions/Concerns/BelongsToInfolist.php +++ /dev/null @@ -1,41 +0,0 @@ -component = $component; - - return $this; - } - - public function getComponent(): ?Component - { - return $this->component; - } - - public function getLivewire(): LivewireComponent - { - $livewire = $this->getComponent()->getInfolist()->getLivewire(); - - if (! $livewire) { - throw new Exception('An infolist tried to mount an action but was not mounted to Livewire.'); - } - - return $livewire; - } - - public function getRecord(): ?Model - { - return $this->getComponent()->getInfolist()->getRecord(); - } -} diff --git a/vendor/filament/infolists/src/Components/Card.php b/vendor/filament/infolists/src/Components/Card.php deleted file mode 100644 index 48ab6248..00000000 --- a/vendor/filament/infolists/src/Components/Card.php +++ /dev/null @@ -1,10 +0,0 @@ - - */ - protected function resolveDefaultClosureDependencyForEvaluationByName(string $parameterName): array - { - return match ($parameterName) { - 'record' => [$this->getRecord()], - 'state' => [$this->getState()], - default => parent::resolveDefaultClosureDependencyForEvaluationByName($parameterName), - }; - } - - /** - * @return array - */ - protected function resolveDefaultClosureDependencyForEvaluationByType(string $parameterType): array - { - $record = $this->getRecord(); - - if (! $record) { - return parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType); - } - - return match ($parameterType) { - Model::class, $record::class => [$record], - default => parent::resolveDefaultClosureDependencyForEvaluationByType($parameterType), - }; - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/BelongsToContainer.php b/vendor/filament/infolists/src/Components/Concerns/BelongsToContainer.php deleted file mode 100644 index c9ef7799..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/BelongsToContainer.php +++ /dev/null @@ -1,34 +0,0 @@ -container = $container; - - return $this; - } - - public function getContainer(): ComponentContainer - { - return $this->container; - } - - public function getInfolist(): Infolist - { - return $this->getContainer()->getInfolist(); - } - - public function getLivewire(): ?Component - { - return $this->getContainer()->getLivewire(); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/CanBeCollapsed.php b/vendor/filament/infolists/src/Components/Concerns/CanBeCollapsed.php deleted file mode 100644 index e3189fe4..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/CanBeCollapsed.php +++ /dev/null @@ -1,54 +0,0 @@ -isCollapsed = $condition; - - if ($shouldMakeComponentCollapsible && ($this->isCollapsible === null)) { - $this->collapsible(); - } - - return $this; - } - - public function isCollapsed(): bool - { - return (bool) $this->evaluate($this->isCollapsed); - } - - public function collapsible(bool | Closure | null $condition = true): static - { - $this->isCollapsible = $condition; - - return $this; - } - - public function isCollapsible(): bool - { - return (bool) $this->evaluate($this->isCollapsible); - } - - public function persistCollapsed(bool | Closure $condition = true): static - { - $this->shouldPersistCollapsed = $condition; - - return $this; - } - - public function shouldPersistCollapsed(): bool - { - return (bool) $this->evaluate($this->shouldPersistCollapsed); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/CanBeCompacted.php b/vendor/filament/infolists/src/Components/Concerns/CanBeCompacted.php deleted file mode 100644 index 0279d932..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/CanBeCompacted.php +++ /dev/null @@ -1,22 +0,0 @@ -isCompact = $condition; - - return $this; - } - - public function isCompact(): bool - { - return (bool) $this->evaluate($this->isCompact); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/CanBeHidden.php b/vendor/filament/infolists/src/Components/Concerns/CanBeHidden.php deleted file mode 100644 index 402e14f0..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/CanBeHidden.php +++ /dev/null @@ -1,56 +0,0 @@ -isHidden = $condition; - - return $this; - } - - public function hiddenWhenAllChildComponentsHidden(): static - { - $this->hidden(static function (Component $component): bool { - foreach ($component->getChildComponentContainers() as $childComponentContainer) { - foreach ($childComponentContainer->getComponents(withHidden: false) as $childComponent) { - return false; - } - } - - return true; - }); - - return $this; - } - - public function visible(bool | Closure $condition = true): static - { - $this->isVisible = $condition; - - return $this; - } - - public function isHidden(): bool - { - if ($this->evaluate($this->isHidden)) { - return true; - } - - return ! $this->evaluate($this->isVisible); - } - - public function isVisible(): bool - { - return ! $this->isHidden(); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/CanFormatState.php b/vendor/filament/infolists/src/Components/Concerns/CanFormatState.php deleted file mode 100644 index c0e5ffbe..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/CanFormatState.php +++ /dev/null @@ -1,341 +0,0 @@ -isMarkdown = $condition; - - return $this; - } - - public function date(?string $format = null, ?string $timezone = null): static - { - $this->isDate = true; - - $format ??= Infolist::$defaultDateDisplayFormat; - - $this->formatStateUsing(static function (TextEntry $component, $state) use ($format, $timezone): ?string { - if (blank($state)) { - return null; - } - - return Carbon::parse($state) - ->setTimezone($timezone ?? $component->getTimezone()) - ->translatedFormat($format); - }); - - return $this; - } - - public function dateTime(?string $format = null, ?string $timezone = null): static - { - $this->isDateTime = true; - - $format ??= Infolist::$defaultDateTimeDisplayFormat; - - $this->date($format, $timezone); - - return $this; - } - - public function since(?string $timezone = null): static - { - $this->isDateTime = true; - - $this->formatStateUsing(static function (TextEntry $component, $state) use ($timezone): ?string { - if (blank($state)) { - return null; - } - - return Carbon::parse($state) - ->setTimezone($timezone ?? $component->getTimezone()) - ->diffForHumans(); - }); - - return $this; - } - - public function money(string | Closure | null $currency = null, int $divideBy = 0): static - { - $this->isMoney = true; - - $this->formatStateUsing(static function (TextEntry $component, $state) use ($currency, $divideBy): ?string { - if (blank($state)) { - return null; - } - - $currency = $component->evaluate($currency) ?? Infolist::$defaultCurrency; - - return format_money($state, $currency, $divideBy); - }); - - return $this; - } - - public function numeric(int | Closure | null $decimalPlaces = null, string | Closure | null $decimalSeparator = '.', string | Closure | null $thousandsSeparator = ','): static - { - $this->isNumeric = true; - - $this->formatStateUsing(static function (TextEntry $component, $state) use ($decimalPlaces, $decimalSeparator, $thousandsSeparator): ?string { - if (blank($state)) { - return null; - } - - if (! is_numeric($state)) { - return $state; - } - - if ($decimalPlaces === null) { - return format_number($state); - } - - return number_format( - $state, - $component->evaluate($decimalPlaces), - $component->evaluate($decimalSeparator), - $component->evaluate($thousandsSeparator), - ); - }); - - return $this; - } - - public function time(?string $format = null, ?string $timezone = null): static - { - $this->isTime = true; - - $format ??= Infolist::$defaultTimeDisplayFormat; - - $this->date($format, $timezone); - - return $this; - } - - public function timezone(string | Closure | null $timezone): static - { - $this->timezone = $timezone; - - return $this; - } - - public function limit(int | Closure | null $length = 100, string | Closure | null $end = '...'): static - { - $this->characterLimit = $length; - $this->characterLimitEnd = $end; - - return $this; - } - - public function words(int | Closure | null $words = 100, string | Closure | null $end = '...'): static - { - $this->wordLimit = $words; - $this->wordLimitEnd = $end; - - return $this; - } - - public function prefix(string | Htmlable | Closure | null $prefix): static - { - $this->prefix = $prefix; - - return $this; - } - - public function suffix(string | Htmlable | Closure | null $suffix): static - { - $this->suffix = $suffix; - - return $this; - } - - public function html(bool | Closure $condition = true): static - { - $this->isHtml = $condition; - - return $this; - } - - public function formatStateUsing(?Closure $callback): static - { - $this->formatStateUsing = $callback; - - return $this; - } - - public function formatState(mixed $state): mixed - { - $isHtml = $this->isHtml(); - - $state = $this->evaluate($this->formatStateUsing ?? $state, [ - 'state' => $state, - ]); - - if ($state instanceof Htmlable) { - $isHtml = true; - $state = $state->toHtml(); - } - - if ($state instanceof LabelInterface) { - $state = $state->getLabel(); - } - - if ($characterLimit = $this->getCharacterLimit()) { - $state = Str::limit($state, $characterLimit, $this->getCharacterLimitEnd()); - } - - if ($wordLimit = $this->getWordLimit()) { - $state = Str::words($state, $wordLimit, $this->getWordLimitEnd()); - } - - if ($isHtml && $this->isMarkdown()) { - $state = Str::markdown($state); - } - - $prefix = $this->getPrefix(); - $suffix = $this->getSuffix(); - - if ( - (($prefix instanceof Htmlable) || ($suffix instanceof Htmlable)) && - (! $isHtml) - ) { - $isHtml = true; - $state = e($state); - } - - if (filled($prefix)) { - if ($prefix instanceof Htmlable) { - $prefix = $prefix->toHtml(); - } - - $state = $prefix . $state; - } - - if (filled($suffix)) { - if ($suffix instanceof Htmlable) { - $suffix = $suffix->toHtml(); - } - - $state = $state . $suffix; - } - - if ($isHtml) { - return str($state)->sanitizeHtml()->toHtmlString(); - } - - return $state; - } - - public function getCharacterLimit(): ?int - { - return $this->evaluate($this->characterLimit); - } - - public function getCharacterLimitEnd(): ?string - { - return $this->evaluate($this->characterLimitEnd); - } - - public function getWordLimit(): ?int - { - return $this->evaluate($this->wordLimit); - } - - public function getWordLimitEnd(): ?string - { - return $this->evaluate($this->wordLimitEnd); - } - - public function getTimezone(): string - { - return $this->evaluate($this->timezone) ?? config('app.timezone'); - } - - public function isHtml(): bool - { - return $this->evaluate($this->isHtml) || $this->isMarkdown() || $this->isProse(); - } - - public function getPrefix(): string | Htmlable | null - { - return $this->evaluate($this->prefix); - } - - public function getSuffix(): string | Htmlable | null - { - return $this->evaluate($this->suffix); - } - - public function isMarkdown(): bool - { - return (bool) $this->evaluate($this->isMarkdown); - } - - public function isDate(): bool - { - return $this->isDate; - } - - public function isDateTime(): bool - { - return $this->isDateTime; - } - - public function isMoney(): bool - { - return $this->isMoney; - } - - public function isNumeric(): bool - { - return $this->isNumeric; - } - - public function isTime(): bool - { - return $this->isTime; - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/CanGetStateFromRelationships.php b/vendor/filament/infolists/src/Components/Concerns/CanGetStateFromRelationships.php deleted file mode 100644 index 60bb2b46..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/CanGetStateFromRelationships.php +++ /dev/null @@ -1,113 +0,0 @@ -getRelationship($record) !== null; - } - - public function getRelationship(Model $record, ?string $statePath = null): ?Relation - { - if (blank($statePath) && (! str($this->getStatePath())->contains('.'))) { - return null; - } - - $relationship = null; - - foreach (explode('.', $statePath ?? $this->getRelationshipName()) as $nestedRelationshipName) { - if (! $record->isRelation($nestedRelationshipName)) { - $relationship = null; - - break; - } - - $relationship = $record->{$nestedRelationshipName}(); - $record = $relationship->getRelated(); - } - - return $relationship; - } - - /** - * @param array | null $relationships - * @return array - */ - public function getRelationshipResults(Model $record, ?array $relationships = null): array - { - $results = []; - - $relationships ??= explode('.', $this->getRelationshipName()); - - while (count($relationships)) { - $currentRelationshipName = array_shift($relationships); - - $currentRelationshipValue = $record->getRelationValue($currentRelationshipName); - - if ($currentRelationshipValue instanceof Collection) { - if (! count($relationships)) { - $results = [ - ...$results, - ...$currentRelationshipValue->all(), - ]; - - continue; - } - - foreach ($currentRelationshipValue as $valueRecord) { - $results = [ - ...$results, - ...$this->getRelationshipResults( - $valueRecord, - $relationships, - ), - ]; - } - - break; - } - - if (! $currentRelationshipValue instanceof Model) { - break; - } - - if (! count($relationships)) { - $results[] = $currentRelationshipValue; - - break; - } - - $record = $currentRelationshipValue; - } - - return $results; - } - - public function getRelationshipAttribute(?string $statePath = null): string - { - $statePath ??= $this->getStatePath(); - - if (! str($statePath)->contains('.')) { - return $statePath; - } - - return (string) str($statePath)->afterLast('.'); - } - - public function getRelationshipName(?string $statePath = null): ?string - { - $statePath ??= $this->getStatePath(); - - if (! str($statePath)->contains('.')) { - return null; - } - - return (string) str($statePath)->beforeLast('.'); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/CanOpenUrl.php b/vendor/filament/infolists/src/Components/Concerns/CanOpenUrl.php deleted file mode 100644 index a4eb3cd9..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/CanOpenUrl.php +++ /dev/null @@ -1,37 +0,0 @@ -shouldOpenUrlInNewTab = $condition; - - return $this; - } - - public function url(string | Closure | null $url, bool | Closure $shouldOpenInNewTab = false): static - { - $this->openUrlInNewTab($shouldOpenInNewTab); - $this->url = $url; - - return $this; - } - - public function getUrl(): ?string - { - return $this->evaluate($this->url); - } - - public function shouldOpenUrlInNewTab(): bool - { - return (bool) $this->evaluate($this->shouldOpenUrlInNewTab); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/CanSpanColumns.php b/vendor/filament/infolists/src/Components/Concerns/CanSpanColumns.php deleted file mode 100644 index 7fb64841..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/CanSpanColumns.php +++ /dev/null @@ -1,111 +0,0 @@ - - */ - protected array $columnSpan = [ - 'default' => 1, - 'sm' => null, - 'md' => null, - 'lg' => null, - 'xl' => null, - '2xl' => null, - ]; - - /** - * @var array - */ - protected array $columnStart = [ - 'default' => null, - 'sm' => null, - 'md' => null, - 'lg' => null, - 'xl' => null, - '2xl' => null, - ]; - - /** - * @param array | int | string | Closure | null $span - */ - public function columnSpan(array | int | string | Closure | null $span): static - { - if (! is_array($span)) { - $span = [ - 'default' => $span, - ]; - } - - $this->columnSpan = [ - ...$this->columnSpan, - ...$span, - ]; - - return $this; - } - - public function columnSpanFull(): static - { - $this->columnSpan('full'); - - return $this; - } - - /** - * @param array | int | string | Closure | null $start - */ - public function columnStart(array | int | string | Closure | null $start): static - { - if (! is_array($start)) { - $start = [ - 'default' => $start, - ]; - } - - $this->columnStart = [ - ...$this->columnStart, - ...$start, - ]; - - return $this; - } - - /** - * @return array | int | string | null - */ - public function getColumnSpan(int | string | null $breakpoint = null): array | int | string | null - { - $span = $this->columnSpan; - - if ($breakpoint !== null) { - return $this->evaluate($span[$breakpoint] ?? null); - } - - return array_map( - fn (array | int | string | Closure | null $value): array | int | string | null => $this->evaluate($value), - $span, - ); - } - - /** - * @return array | int | string | null - */ - public function getColumnStart(int | string | null $breakpoint = null): array | int | string | null - { - $start = $this->columnStart; - - if ($breakpoint !== null) { - return $this->evaluate($start[$breakpoint] ?? null); - } - - return array_map( - fn (array | int | string | Closure | null $value): array | int | string | null => $this->evaluate($value), - $start, - ); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/Cloneable.php b/vendor/filament/infolists/src/Components/Concerns/Cloneable.php deleted file mode 100644 index b874223d..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/Cloneable.php +++ /dev/null @@ -1,29 +0,0 @@ -childComponents)) { - $this->childComponents = array_map( - fn (Component $component): Component => $component->getClone(), - $this->childComponents, - ); - } - - return $this; - } - - public function getClone(): static - { - $clone = clone $this; - $clone->flushCachedAbsoluteStatePath(); - $clone->cloneChildComponents(); - - return $clone; - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/EntanglesStateWithSingularRelationship.php b/vendor/filament/infolists/src/Components/Concerns/EntanglesStateWithSingularRelationship.php deleted file mode 100644 index 5366b4cf..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/EntanglesStateWithSingularRelationship.php +++ /dev/null @@ -1,13 +0,0 @@ -statePath($name); - - return $this; - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasActions.php b/vendor/filament/infolists/src/Components/Concerns/HasActions.php deleted file mode 100644 index 31ecc192..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasActions.php +++ /dev/null @@ -1,145 +0,0 @@ - | null - */ - protected ?array $cachedActions = null; - - /** - * @var array - */ - protected array $actions = []; - - protected ?Action $action = null; - - public function action(?Action $action): static - { - $this->action = $action; - - if ($action) { - $this->registerActions([$action]); - } - - return $this; - } - - /** - * @param array $actions - */ - public function registerActions(array $actions): static - { - $this->actions = [ - ...$this->actions, - ...$actions, - ]; - - return $this; - } - - /** - * @param string | array | null $name - */ - public function getAction(string | array | null $name = null): ?Action - { - $actions = $this->cacheActions(); - - if ($name === null) { - return $this->action; - } - - if (is_string($name) && str($name)->contains('.')) { - $name = explode('.', $name); - } - - if (is_array($name)) { - $firstName = array_shift($name); - $modalActionNames = $name; - - $name = $firstName; - } - - $action = $actions[$name] ?? null; - - if (! $action) { - return null; - } - - foreach ($modalActionNames ?? [] as $modalActionName) { - $action = $action->getMountableModalAction($modalActionName); - - if (! $action) { - return null; - } - - $name = $modalActionName; - } - - if (! $action instanceof Action) { - return null; - } - - return $action; - } - - /** - * @return array - */ - public function getActions(): array - { - return $this->cachedActions ??= $this->cacheActions(); - } - - /** - * @return array - */ - public function cacheActions(): array - { - $this->cachedActions = []; - - if ($this instanceof HasAffixActions) { - $this->cachedActions = [ - ...$this->cachedActions, - ...$this->getPrefixActions(), - ...$this->getSuffixActions(), - ]; - } - - if ($this instanceof HasHeaderActions) { - $this->cachedActions = [ - ...$this->cachedActions, - ...$this->getHeaderActions(), - ]; - } - - if ($this instanceof HasHintActions) { - $this->cachedActions = [ - ...$this->cachedActions, - ...$this->getHintActions(), - ]; - } - - foreach ($this->actions as $registeredAction) { - foreach (Arr::wrap($this->evaluate($registeredAction)) as $action) { - $this->cachedActions[$action->getName()] = $this->prepareAction($action); - } - } - - return $this->cachedActions; - } - - public function prepareAction(Action $action): Action - { - return $action->component($this); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasAffixes.php b/vendor/filament/infolists/src/Components/Concerns/HasAffixes.php deleted file mode 100644 index 39ab9203..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasAffixes.php +++ /dev/null @@ -1,127 +0,0 @@ - | null - */ - protected ?array $cachedSuffixActions = null; - - /** - * @var array - */ - protected array $suffixActions = []; - - /** - * @var array | null - */ - protected ?array $cachedPrefixActions = null; - - /** - * @var array - */ - protected array $prefixActions = []; - - public function prefixAction(Action | Closure $action): static - { - $this->prefixActions([$action]); - - return $this; - } - - /** - * @param array $actions - */ - public function prefixActions(array $actions): static - { - $this->prefixActions = [ - ...$this->prefixActions, - ...$actions, - ]; - - return $this; - } - - public function suffixAction(Action | Closure $action): static - { - $this->suffixActions([$action]); - - return $this; - } - - /** - * @param array $actions - */ - public function suffixActions(array $actions): static - { - $this->suffixActions = [ - ...$this->suffixActions, - ...$actions, - ]; - - return $this; - } - - /** - * @return array - */ - public function getPrefixActions(): array - { - return $this->cachedPrefixActions ?? $this->cachePrefixActions(); - } - - /** - * @return array - */ - public function cachePrefixActions(): array - { - $this->cachedPrefixActions = []; - - foreach ($this->prefixActions as $prefixAction) { - foreach (Arr::wrap($this->evaluate($prefixAction)) as $action) { - $this->cachedPrefixActions[$action->getName()] = $this->prepareAction( - $action - ->defaultSize(ActionSize::Small) - ->defaultView(Action::ICON_BUTTON_VIEW), - ); - } - } - - return $this->cachedPrefixActions; - } - - /** - * @return array - */ - public function getSuffixActions(): array - { - return $this->cachedSuffixActions ?? $this->cacheSuffixActions(); - } - - /** - * @return array - */ - public function cacheSuffixActions(): array - { - $this->cachedSuffixActions = []; - - foreach ($this->suffixActions as $suffixAction) { - foreach (Arr::wrap($this->evaluate($suffixAction)) as $action) { - $this->cachedSuffixActions[$action->getName()] = $this->prepareAction( - $action - ->defaultSize(ActionSize::Small) - ->defaultView(Action::ICON_BUTTON_VIEW), - ); - } - } - - return $this->cachedSuffixActions; - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasChildComponents.php b/vendor/filament/infolists/src/Components/Concerns/HasChildComponents.php deleted file mode 100644 index b80e822f..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasChildComponents.php +++ /dev/null @@ -1,82 +0,0 @@ - | Closure - */ - protected array | Closure $childComponents = []; - - /** - * @param array | Closure $components - */ - public function childComponents(array | Closure $components): static - { - $this->childComponents = $components; - - return $this; - } - - /** - * @param array | Closure $components - */ - public function schema(array | Closure $components): static - { - $this->childComponents($components); - - return $this; - } - - /** - * @return array - */ - public function getChildComponents(): array - { - return $this->evaluate($this->childComponents); - } - - /** - * @param array-key $key - */ - public function getChildComponentContainer($key = null): ComponentContainer - { - if (filled($key)) { - return $this->getChildComponentContainers()[$key]; - } - - return ComponentContainer::make($this->getLivewire()) - ->parentComponent($this) - ->components($this->getChildComponents()); - } - - /** - * @return array - */ - public function getChildComponentContainers(bool $withHidden = false): array - { - if (! $this->hasChildComponentContainer($withHidden)) { - return []; - } - - return [$this->getChildComponentContainer()]; - } - - public function hasChildComponentContainer(bool $withHidden = false): bool - { - if ((! $withHidden) && $this->isHidden()) { - return false; - } - - if ($this->getChildComponents() === []) { - return false; - } - - return true; - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasColor.php b/vendor/filament/infolists/src/Components/Concerns/HasColor.php deleted file mode 100644 index 0fe7a329..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasColor.php +++ /dev/null @@ -1,75 +0,0 @@ -color = $color; - - return $this; - } - - /** - * @param array | Closure $colors - */ - public function colors(array | Closure $colors): static - { - $this->color(function (Component $component, $state) use ($colors) { - $colors = $component->evaluate($colors); - - $color = null; - - foreach ($colors as $conditionalColor => $condition) { - if (is_numeric($conditionalColor)) { - $color = $condition; - } elseif ($condition instanceof Closure && $component->evaluate($condition)) { - $color = $conditionalColor; - } elseif ($condition === $state) { - $color = $conditionalColor; - } - } - - return $color; - }); - - return $this; - } - - /** - * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | null - */ - public function getColor(mixed $state): string | array | null - { - $color = $this->evaluate($this->color, [ - 'state' => $state, - ]); - - if ($color === false) { - return null; - } - - if (filled($color)) { - return $color; - } - - if (! $state instanceof ColorInterface) { - return null; - } - - return $state->getColor(); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasContainerGridLayout.php b/vendor/filament/infolists/src/Components/Concerns/HasContainerGridLayout.php deleted file mode 100644 index e54500d2..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasContainerGridLayout.php +++ /dev/null @@ -1,51 +0,0 @@ - | null - */ - protected ?array $gridColumns = null; - - /** - * @param array | int | null $columns - */ - public function grid(array | int | null $columns = 2): static - { - if (! is_array($columns)) { - $columns = [ - 'lg' => $columns, - ]; - } - - $this->gridColumns = [ - ...($this->gridColumns ?? []), - ...$columns, - ]; - - return $this; - } - - /** - * @return array | int | null - */ - public function getGridColumns(?string $breakpoint = null): array | int | null - { - $columns = $this->gridColumns ?? [ - 'default' => 1, - 'sm' => null, - 'md' => null, - 'lg' => null, - 'xl' => null, - '2xl' => null, - ]; - - if ($breakpoint !== null) { - return $columns[$breakpoint] ?? null; - } - - return $columns; - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasEntryWrapper.php b/vendor/filament/infolists/src/Components/Concerns/HasEntryWrapper.php deleted file mode 100644 index 6bc775a5..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasEntryWrapper.php +++ /dev/null @@ -1,29 +0,0 @@ -entryWrapperView = $view; - - return $this; - } - - public function getEntryWrapperView(): string - { - return $this->getCustomEntryWrapperView() ?? - $this->getContainer()->getCustomEntryWrapperView() ?? - 'filament-infolists::entry-wrapper'; - } - - public function getCustomEntryWrapperView(): ?string - { - return $this->evaluate($this->entryWrapperView); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasFontFamily.php b/vendor/filament/infolists/src/Components/Concerns/HasFontFamily.php deleted file mode 100644 index 5439115d..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasFontFamily.php +++ /dev/null @@ -1,25 +0,0 @@ -fontFamily = $family; - - return $this; - } - - public function getFontFamily(mixed $state): FontFamily | string | null - { - return $this->evaluate($this->fontFamily, [ - 'state' => $state, - ]); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasHeaderActions.php b/vendor/filament/infolists/src/Components/Concerns/HasHeaderActions.php deleted file mode 100644 index 3a34ac0d..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasHeaderActions.php +++ /dev/null @@ -1,57 +0,0 @@ - | null - */ - protected ?array $cachedHeaderActions = null; - - /** - * @var array - */ - protected array $headerActions = []; - - /** - * @param array $actions - */ - public function headerActions(array $actions): static - { - $this->headerActions = [ - ...$this->headerActions, - ...$actions, - ]; - - return $this; - } - - /** - * @return array - */ - public function getHeaderActions(): array - { - return $this->cachedHeaderActions ?? $this->cacheHeaderActions(); - } - - /** - * @return array - */ - public function cacheHeaderActions(): array - { - $this->cachedHeaderActions = []; - - foreach ($this->headerActions as $headerAction) { - foreach (Arr::wrap($this->evaluate($headerAction)) as $action) { - $this->cachedHeaderActions[$action->getName()] = $this->prepareAction($action); - } - } - - return $this->cachedHeaderActions; - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasHelperText.php b/vendor/filament/infolists/src/Components/Concerns/HasHelperText.php deleted file mode 100644 index 184b7013..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasHelperText.php +++ /dev/null @@ -1,23 +0,0 @@ -helperText = $text; - - return $this; - } - - public function getHelperText(): string | Htmlable | null - { - return $this->evaluate($this->helperText); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasHint.php b/vendor/filament/infolists/src/Components/Concerns/HasHint.php deleted file mode 100644 index 40bdb518..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasHint.php +++ /dev/null @@ -1,136 +0,0 @@ - | null - */ - protected ?array $cachedHintActions = null; - - /** - * @var array - */ - protected array $hintActions = []; - - /** - * @var string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null - */ - protected string | array | Closure | null $hintColor = null; - - protected string | Closure | null $hintIcon = null; - - protected string | Closure | null $hintIconTooltip = null; - - public function hint(string | Htmlable | Closure | null $hint): static - { - $this->hint = $hint; - - return $this; - } - - /** - * @param string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null $color - */ - public function hintColor(string | array | Closure | null $color): static - { - $this->hintColor = $color; - - return $this; - } - - public function hintIcon(string | Closure | null $icon, string | Closure | null $tooltip = null): static - { - $this->hintIcon = $icon; - $this->hintIconTooltip($tooltip); - - return $this; - } - - public function hintIconTooltip(string | Closure | null $tooltip): static - { - $this->hintIconTooltip = $tooltip; - - return $this; - } - - public function hintAction(Action | Closure $action): static - { - $this->hintActions([$action]); - - return $this; - } - - /** - * @param array $actions - */ - public function hintActions(array $actions): static - { - $this->hintActions = [ - ...$this->hintActions, - ...$actions, - ]; - - return $this; - } - - public function getHint(): string | Htmlable | null - { - return $this->evaluate($this->hint); - } - - /** - * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | null - */ - public function getHintColor(): string | array | null - { - return $this->evaluate($this->hintColor); - } - - public function getHintIcon(): ?string - { - return $this->evaluate($this->hintIcon); - } - - public function getHintIconTooltip(): ?string - { - return $this->evaluate($this->hintIconTooltip); - } - - /** - * @return array - */ - public function getHintActions(): array - { - return $this->cachedHintActions ?? $this->cacheHintActions(); - } - - /** - * @return array - */ - public function cacheHintActions(): array - { - $this->cachedHintActions = []; - - foreach ($this->hintActions as $hintAction) { - foreach (Arr::wrap($this->evaluate($hintAction)) as $action) { - $this->cachedHintActions[$action->getName()] = $this->prepareAction( - $action - ->defaultSize(ActionSize::Small) - ->defaultView(Action::LINK_VIEW), - ); - } - } - - return $this->cachedHintActions; - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasIcon.php b/vendor/filament/infolists/src/Components/Concerns/HasIcon.php deleted file mode 100644 index 06e6ed7b..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasIcon.php +++ /dev/null @@ -1,81 +0,0 @@ -icon = $icon; - - return $this; - } - - /** - * @param array | Closure $icons - */ - public function icons(array | Closure $icons): static - { - $this->icon(function (Component $component, $state) use ($icons) { - $icons = $component->evaluate($icons); - - $icon = null; - - foreach ($icons as $conditionalIcon => $condition) { - if (is_numeric($conditionalIcon)) { - $icon = $condition; - } elseif ($condition instanceof Closure && $component->evaluate($condition)) { - $icon = $conditionalIcon; - } elseif ($condition === $state) { - $icon = $conditionalIcon; - } - } - - return $icon; - }); - - return $this; - } - - public function iconPosition(IconPosition | string | Closure | null $iconPosition): static - { - $this->iconPosition = $iconPosition; - - return $this; - } - - public function getIcon(mixed $state): ?string - { - $icon = $this->evaluate($this->icon, [ - 'state' => $state, - ]); - - if ($icon === false) { - return null; - } - - if (filled($icon)) { - return $icon; - } - - if (! $state instanceof IconInterface) { - return null; - } - - return $state->getIcon(); - } - - public function getIconPosition(): IconPosition | string - { - return $this->evaluate($this->iconPosition) ?? IconPosition::Before; - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasIconColor.php b/vendor/filament/infolists/src/Components/Concerns/HasIconColor.php deleted file mode 100644 index 4effff31..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasIconColor.php +++ /dev/null @@ -1,33 +0,0 @@ -iconColor = $color; - - return $this; - } - - /** - * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | null - */ - public function getIconColor(mixed $state): string | array | null - { - return $this->evaluate($this->iconColor, [ - 'state' => $state, - ]); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasId.php b/vendor/filament/infolists/src/Components/Concerns/HasId.php deleted file mode 100644 index d7bb4f1b..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasId.php +++ /dev/null @@ -1,22 +0,0 @@ -id = $id; - - return $this; - } - - public function getId(): ?string - { - return $this->evaluate($this->id); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasInlineLabel.php b/vendor/filament/infolists/src/Components/Concerns/HasInlineLabel.php deleted file mode 100644 index d6ebc9f7..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasInlineLabel.php +++ /dev/null @@ -1,22 +0,0 @@ -hasInlineLabel = $condition; - - return $this; - } - - public function hasInlineLabel(): ?bool - { - return $this->evaluate($this->hasInlineLabel) ?? $this->getContainer()->hasInlineLabel(); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasKey.php b/vendor/filament/infolists/src/Components/Concerns/HasKey.php deleted file mode 100644 index c7ebe0af..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasKey.php +++ /dev/null @@ -1,22 +0,0 @@ -key = $key; - - return $this; - } - - public function getKey(): ?string - { - return $this->evaluate($this->key); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasLabel.php b/vendor/filament/infolists/src/Components/Concerns/HasLabel.php deleted file mode 100644 index f0db618b..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasLabel.php +++ /dev/null @@ -1,50 +0,0 @@ -isLabelHidden = $condition; - - return $this; - } - - public function label(string | Htmlable | Closure | null $label): static - { - $this->label = $label; - - return $this; - } - - public function translateLabel(bool $shouldTranslateLabel = true): static - { - $this->shouldTranslateLabel = $shouldTranslateLabel; - - return $this; - } - - public function getLabel(): string | Htmlable | null - { - $label = $this->evaluate($this->label); - - return (is_string($label) && $this->shouldTranslateLabel) ? - __($label) : - $label; - } - - public function isLabelHidden(): bool - { - return (bool) $this->evaluate($this->isLabelHidden); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasMaxWidth.php b/vendor/filament/infolists/src/Components/Concerns/HasMaxWidth.php deleted file mode 100644 index 04396bf0..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasMaxWidth.php +++ /dev/null @@ -1,23 +0,0 @@ -maxWidth = $width; - - return $this; - } - - public function getMaxWidth(): MaxWidth | string | null - { - return $this->evaluate($this->maxWidth); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasMeta.php b/vendor/filament/infolists/src/Components/Concerns/HasMeta.php deleted file mode 100644 index bd44ec00..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasMeta.php +++ /dev/null @@ -1,44 +0,0 @@ - - */ - protected array $meta = []; - - public function meta(string $key, mixed $value): static - { - $this->meta[$key] = $value; - - return $this; - } - - /** - * @param string | array | null $keys - */ - public function getMeta(string | array | null $keys = null): mixed - { - if (is_array($keys)) { - return Arr::only($this->meta, $keys); - } - - if (is_string($keys)) { - return Arr::get($this->meta, $keys); - } - - return $this->meta; - } - - /** - * @param string | array $keys - */ - public function hasMeta(string | array $keys): bool - { - return Arr::has($this->meta, $keys); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasName.php b/vendor/filament/infolists/src/Components/Concerns/HasName.php deleted file mode 100644 index 8c9d1ead..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasName.php +++ /dev/null @@ -1,20 +0,0 @@ -name = $name; - - return $this; - } - - public function getName(): string - { - return $this->name; - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasState.php b/vendor/filament/infolists/src/Components/Concerns/HasState.php deleted file mode 100644 index 6ac848b7..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasState.php +++ /dev/null @@ -1,174 +0,0 @@ -getStateUsing = $callback; - - return $this; - } - - public function state(mixed $state): static - { - $this->getStateUsing($state); - - return $this; - } - - public function default(mixed $state): static - { - $this->defaultState = $state; - - return $this; - } - - public function distinctList(bool | Closure $condition = true): static - { - $this->isDistinctList = $condition; - - return $this; - } - - public function isDistinctList(): bool - { - return (bool) $this->evaluate($this->isDistinctList); - } - - public function getDefaultState(): mixed - { - return $this->evaluate($this->defaultState); - } - - public function getState(): mixed - { - if ($this->getStateUsing !== null) { - $state = $this->evaluate($this->getStateUsing); - } else { - $containerState = $this->getContainer()->getState(); - - $state = $containerState instanceof Model ? - $this->getStateFromRecord($containerState) : - data_get($containerState, $this->getStatePath()); - } - - if (is_string($state) && ($separator = $this->getSeparator())) { - $state = explode($separator, $state); - $state = (count($state) === 1 && blank($state[0])) ? - [] : - $state; - } - - if (blank($state)) { - $state = $this->getDefaultState(); - } - - return $state; - } - - public function separator(string | Closure | null $separator = ','): static - { - $this->separator = $separator; - - return $this; - } - - public function statePath(?string $path): static - { - $this->statePath = $path; - - return $this; - } - - public function getSeparator(): ?string - { - return $this->evaluate($this->separator); - } - - public function getRecord(): ?Model - { - return $this->getContainer()->getRecord(); - } - - public function hasStatePath(): bool - { - return filled($this->statePath); - } - - public function getStatePath(bool $isAbsolute = true): string - { - if (isset($this->cachedAbsoluteStatePath)) { - return $this->cachedAbsoluteStatePath; - } - - $pathComponents = []; - - if ($isAbsolute && ($containerStatePath = $this->getContainer()->getStatePath())) { - $pathComponents[] = $containerStatePath; - } - - if ($this->hasStatePath()) { - $pathComponents[] = $this->statePath; - } - - return $this->cachedAbsoluteStatePath = implode('.', $pathComponents); - } - - public function getStateFromRecord(Model $record): mixed - { - $state = data_get($record, $this->getStatePath()); - - if ($state !== null) { - return $state; - } - - if (! $this->hasRelationship($record)) { - return null; - } - - $relationship = $this->getRelationship($record); - - if (! $relationship) { - return null; - } - - $relationshipAttribute = $this->getRelationshipAttribute(); - - $state = collect($this->getRelationshipResults($record)) - ->filter(fn (Model $record): bool => array_key_exists($relationshipAttribute, $record->attributesToArray())) - ->pluck($relationshipAttribute) - ->when($this->isDistinctList(), fn (Collection $state) => $state->unique()) - ->values(); - - if (! $state->count()) { - return null; - } - - return $state->all(); - } - - protected function flushCachedAbsoluteStatePath(): void - { - unset($this->cachedAbsoluteStatePath); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasTooltip.php b/vendor/filament/infolists/src/Components/Concerns/HasTooltip.php deleted file mode 100644 index c5167336..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasTooltip.php +++ /dev/null @@ -1,22 +0,0 @@ -tooltip = $tooltip; - - return $this; - } - - public function getTooltip(): ?string - { - return $this->evaluate($this->tooltip); - } -} diff --git a/vendor/filament/infolists/src/Components/Concerns/HasWeight.php b/vendor/filament/infolists/src/Components/Concerns/HasWeight.php deleted file mode 100644 index 4f0fa2be..00000000 --- a/vendor/filament/infolists/src/Components/Concerns/HasWeight.php +++ /dev/null @@ -1,25 +0,0 @@ -weight = $weight; - - return $this; - } - - public function getWeight(mixed $state): FontWeight | string | null - { - return $this->evaluate($this->weight, [ - 'state' => $state, - ]); - } -} diff --git a/vendor/filament/infolists/src/Components/Contracts/HasAffixActions.php b/vendor/filament/infolists/src/Components/Contracts/HasAffixActions.php deleted file mode 100644 index ea52bef5..00000000 --- a/vendor/filament/infolists/src/Components/Contracts/HasAffixActions.php +++ /dev/null @@ -1,18 +0,0 @@ - - */ - public function getPrefixActions(): array; - - /** - * @return array - */ - public function getSuffixActions(): array; -} diff --git a/vendor/filament/infolists/src/Components/Contracts/HasHeaderActions.php b/vendor/filament/infolists/src/Components/Contracts/HasHeaderActions.php deleted file mode 100644 index 0cf1601f..00000000 --- a/vendor/filament/infolists/src/Components/Contracts/HasHeaderActions.php +++ /dev/null @@ -1,13 +0,0 @@ - - */ - public function getHeaderActions(): array; -} diff --git a/vendor/filament/infolists/src/Components/Contracts/HasHintActions.php b/vendor/filament/infolists/src/Components/Contracts/HasHintActions.php deleted file mode 100644 index 7824742f..00000000 --- a/vendor/filament/infolists/src/Components/Contracts/HasHintActions.php +++ /dev/null @@ -1,13 +0,0 @@ - - */ - public function getHintActions(): array; -} diff --git a/vendor/filament/infolists/src/Components/Entry.php b/vendor/filament/infolists/src/Components/Entry.php deleted file mode 100644 index f5268899..00000000 --- a/vendor/filament/infolists/src/Components/Entry.php +++ /dev/null @@ -1,58 +0,0 @@ -name($name); - $this->statePath($name); - } - - public static function make(string $name): static - { - $static = app(static::class, ['name' => $name]); - $static->configure(); - - return $static; - } - - public function getId(): string - { - return parent::getId() ?? $this->getStatePath(); - } - - public function getLabel(): string | Htmlable | null - { - $label = parent::getLabel() ?? (string) str($this->getName()) - ->before('.') - ->kebab() - ->replace(['-', '_'], ' ') - ->ucfirst(); - - return (is_string($label) && $this->shouldTranslateLabel) ? - __($label) : - $label; - } - - public function getKey(): string - { - return parent::getKey() ?? $this->getStatePath(); - } -} diff --git a/vendor/filament/infolists/src/Components/Fieldset.php b/vendor/filament/infolists/src/Components/Fieldset.php deleted file mode 100644 index 8c0846d5..00000000 --- a/vendor/filament/infolists/src/Components/Fieldset.php +++ /dev/null @@ -1,35 +0,0 @@ -label($label); - } - - public static function make(string $label): static - { - $static = app(static::class, ['label' => $label]); - $static->configure(); - - return $static; - } - - protected function setUp(): void - { - parent::setUp(); - - $this->columnSpan('full'); - - $this->columns(2); - } -} diff --git a/vendor/filament/infolists/src/Components/Grid.php b/vendor/filament/infolists/src/Components/Grid.php deleted file mode 100644 index f495f95a..00000000 --- a/vendor/filament/infolists/src/Components/Grid.php +++ /dev/null @@ -1,39 +0,0 @@ - | int | null $columns - */ - final public function __construct(array | int | null $columns) - { - $this->columns($columns); - } - - /** - * @param array | int | null $columns - */ - public static function make(array | int | null $columns = 2): static - { - $static = app(static::class, ['columns' => $columns]); - $static->configure(); - - return $static; - } - - protected function setUp(): void - { - parent::setUp(); - - $this->columnSpan('full'); - } -} diff --git a/vendor/filament/infolists/src/Components/Group.php b/vendor/filament/infolists/src/Components/Group.php deleted file mode 100644 index 2858793a..00000000 --- a/vendor/filament/infolists/src/Components/Group.php +++ /dev/null @@ -1,34 +0,0 @@ - | Closure $schema - */ - final public function __construct(array | Closure $schema = []) - { - $this->schema($schema); - } - - /** - * @param array | Closure $schema - */ - public static function make(array | Closure $schema = []): static - { - $static = app(static::class, ['schema' => $schema]); - $static->configure(); - - return $static; - } -} diff --git a/vendor/filament/infolists/src/Components/IconEntry.php b/vendor/filament/infolists/src/Components/IconEntry.php deleted file mode 100644 index 6f7c3cf5..00000000 --- a/vendor/filament/infolists/src/Components/IconEntry.php +++ /dev/null @@ -1,197 +0,0 @@ -isBoolean = $condition; - - return $this; - } - - /** - * @param string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null $color - */ - public function false(string | Closure | null $icon = null, string | array | Closure | null $color = null): static - { - $this->falseIcon($icon); - $this->falseColor($color); - - return $this; - } - - /** - * @param string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null $color - */ - public function falseColor(string | array | Closure | null $color): static - { - $this->boolean(); - $this->falseColor = $color; - - return $this; - } - - public function falseIcon(string | Closure | null $icon): static - { - $this->boolean(); - $this->falseIcon = $icon; - - return $this; - } - - /** - * @param string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null $color - */ - public function true(string | Closure | null $icon = null, string | array | Closure | null $color = null): static - { - $this->trueIcon($icon); - $this->trueColor($color); - - return $this; - } - - /** - * @param string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | Closure | null $color - */ - public function trueColor(string | array | Closure | null $color): static - { - $this->boolean(); - $this->trueColor = $color; - - return $this; - } - - public function trueIcon(string | Closure | null $icon): static - { - $this->boolean(); - $this->trueIcon = $icon; - - return $this; - } - - public function size(IconEntrySize | string | Closure | null $size): static - { - $this->size = $size; - - return $this; - } - - public function getSize(mixed $state): IconEntrySize | string | null - { - return $this->evaluate($this->size, [ - 'state' => $state, - ]); - } - - public function getIcon(mixed $state): ?string - { - if (filled($icon = $this->getBaseIcon($state))) { - return $icon; - } - - if (! $this->isBoolean()) { - return null; - } - - if ($state === null) { - return null; - } - - return $state ? $this->getTrueIcon() : $this->getFalseIcon(); - } - - /** - * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} | null - */ - public function getColor(mixed $state): string | array | null - { - if (filled($color = $this->getBaseColor($state))) { - return $color; - } - - if (! $this->isBoolean()) { - return null; - } - - if ($state === null) { - return null; - } - - return $state ? $this->getTrueColor() : $this->getFalseColor(); - } - - /** - * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} - */ - public function getFalseColor(): string | array - { - return $this->evaluate($this->falseColor) ?? 'danger'; - } - - public function getFalseIcon(): string - { - return $this->evaluate($this->falseIcon) - ?? FilamentIcon::resolve('infolists::components.icon-entry.false') - ?? 'heroicon-o-x-circle'; - } - - /** - * @return string | array{50: string, 100: string, 200: string, 300: string, 400: string, 500: string, 600: string, 700: string, 800: string, 900: string, 950: string} - */ - public function getTrueColor(): string | array - { - return $this->evaluate($this->trueColor) ?? 'success'; - } - - public function getTrueIcon(): string - { - return $this->evaluate($this->trueIcon) - ?? FilamentIcon::resolve('infolists::components.icon-entry.true') - ?? 'heroicon-o-check-circle'; - } - - public function isBoolean(): bool - { - if (blank($this->isBoolean)) { - $this->isBoolean = $this->getRecord()?->hasCast($this->getName(), ['bool', 'boolean']); - } - - return (bool) $this->evaluate($this->isBoolean); - } -} diff --git a/vendor/filament/infolists/src/Components/IconEntry/IconEntrySize.php b/vendor/filament/infolists/src/Components/IconEntry/IconEntrySize.php deleted file mode 100644 index d866f644..00000000 --- a/vendor/filament/infolists/src/Components/IconEntry/IconEntrySize.php +++ /dev/null @@ -1,23 +0,0 @@ - | Closure - */ - protected array | Closure $extraImgAttributes = []; - - protected string | Closure | null $defaultImageUrl = null; - - protected bool | Closure $isStacked = false; - - protected int | Closure | null $overlap = null; - - protected int | Closure | null $ring = null; - - protected int | Closure | null $limit = null; - - protected bool | Closure $hasLimitedRemainingText = false; - - protected bool | Closure $isLimitedRemainingTextSeparate = false; - - protected string | Closure | null $limitedRemainingTextSize = null; - - protected bool | Closure $shouldCheckFileExistence = true; - - public function disk(string | Closure | null $disk): static - { - $this->disk = $disk; - - return $this; - } - - public function height(int | string | Closure | null $height): static - { - $this->height = $height; - - return $this; - } - - public function circular(bool | Closure $condition = true): static - { - $this->isCircular = $condition; - - return $this; - } - - public function square(bool | Closure $condition = true): static - { - $this->isSquare = $condition; - - return $this; - } - - public function size(int | string | Closure $size): static - { - $this->width($size); - $this->height($size); - - return $this; - } - - public function visibility(string | Closure $visibility): static - { - $this->visibility = $visibility; - - return $this; - } - - public function width(int | string | Closure | null $width): static - { - $this->width = $width; - - return $this; - } - - public function getDisk(): Filesystem - { - return Storage::disk($this->getDiskName()); - } - - public function getDiskName(): string - { - return $this->evaluate($this->disk) ?? config('filament.default_filesystem_disk'); - } - - public function getHeight(): ?string - { - $height = $this->evaluate($this->height); - - if ($height === null) { - return null; - } - - if (is_int($height)) { - return "{$height}px"; - } - - return $height; - } - - public function defaultImageUrl(string | Closure | null $url): static - { - $this->defaultImageUrl = $url; - - return $this; - } - - public function getImageUrl(?string $state = null): ?string - { - if ((filter_var($state, FILTER_VALIDATE_URL) !== false) || str($state)->startsWith('data:')) { - return $state; - } - - /** @var FilesystemAdapter $storage */ - $storage = $this->getDisk(); - - if ($this->shouldCheckFileExistence()) { - try { - if (! $storage->exists($state)) { - return null; - } - } catch (UnableToCheckFileExistence $exception) { - return null; - } - } - - if ($this->getVisibility() === 'private') { - try { - return $storage->temporaryUrl( - $state, - now()->addMinutes(5), - ); - } catch (Throwable $exception) { - // This driver does not support creating temporary URLs. - } - } - - return $storage->url($state); - } - - public function getDefaultImageUrl(): ?string - { - return $this->evaluate($this->defaultImageUrl); - } - - public function getVisibility(): string - { - return $this->evaluate($this->visibility); - } - - public function getWidth(): ?string - { - $width = $this->evaluate($this->width); - - if ($width === null) { - return null; - } - - if (is_int($width)) { - return "{$width}px"; - } - - return $width; - } - - public function isCircular(): bool - { - return (bool) $this->evaluate($this->isCircular); - } - - public function isSquare(): bool - { - return (bool) $this->evaluate($this->isSquare); - } - - /** - * @param array | Closure $attributes - */ - public function extraImgAttributes(array | Closure $attributes): static - { - $this->extraImgAttributes = $attributes; - - return $this; - } - - /** - * @return array - */ - public function getExtraImgAttributes(): array - { - return $this->evaluate($this->extraImgAttributes); - } - - public function getExtraImgAttributeBag(): ComponentAttributeBag - { - return new ComponentAttributeBag($this->getExtraImgAttributes()); - } - - public function stacked(bool | Closure $condition = true): static - { - $this->isStacked = $condition; - - return $this; - } - - public function isStacked(): bool - { - return (bool) $this->evaluate($this->isStacked); - } - - public function overlap(int | Closure | null $overlap): static - { - $this->overlap = $overlap; - - return $this; - } - - public function getOverlap(): ?int - { - return $this->evaluate($this->overlap); - } - - public function ring(string | Closure | null $ring): static - { - $this->ring = $ring; - - return $this; - } - - public function getRing(): ?int - { - return $this->evaluate($this->ring); - } - - public function limit(int | Closure | null $limit = 3): static - { - $this->limit = $limit; - - return $this; - } - - public function getLimit(): ?int - { - return $this->evaluate($this->limit); - } - - public function limitedRemainingText(bool | Closure $condition = true, bool | Closure $isSeparate = false, string | Closure | null $size = null): static - { - $this->hasLimitedRemainingText = $condition; - $this->limitedRemainingTextSeparate($isSeparate); - $this->limitedRemainingTextSize($size); - - return $this; - } - - public function limitedRemainingTextSeparate(bool | Closure $condition = true): static - { - $this->isLimitedRemainingTextSeparate = $condition; - - return $this; - } - - public function hasLimitedRemainingText(): bool - { - return (bool) $this->evaluate($this->hasLimitedRemainingText); - } - - public function isLimitedRemainingTextSeparate(): bool - { - return (bool) $this->evaluate($this->isLimitedRemainingTextSeparate); - } - - public function limitedRemainingTextSize(string | Closure | null $size): static - { - $this->limitedRemainingTextSize = $size; - - return $this; - } - - public function getLimitedRemainingTextSize(): ?string - { - return $this->evaluate($this->limitedRemainingTextSize); - } - - public function checkFileExistence(bool | Closure $condition = true): static - { - $this->shouldCheckFileExistence = $condition; - - return $this; - } - - public function shouldCheckFileExistence(): bool - { - return (bool) $this->evaluate($this->shouldCheckFileExistence); - } -} diff --git a/vendor/filament/infolists/src/Components/KeyValueEntry.php b/vendor/filament/infolists/src/Components/KeyValueEntry.php deleted file mode 100644 index d5b5e4dc..00000000 --- a/vendor/filament/infolists/src/Components/KeyValueEntry.php +++ /dev/null @@ -1,41 +0,0 @@ -keyLabel = $label; - - return $this; - } - - public function valueLabel(string | Closure | null $label): static - { - $this->valueLabel = $label; - - return $this; - } - - public function getKeyLabel(): string - { - return $this->evaluate($this->keyLabel) ?? __('filament-infolists::components.entries.key_value.columns.key.label'); - } - - public function getValueLabel(): string - { - return $this->evaluate($this->valueLabel) ?? __('filament-infolists::components.entries.key_value.columns.value.label'); - } -} diff --git a/vendor/filament/infolists/src/Components/Livewire.php b/vendor/filament/infolists/src/Components/Livewire.php deleted file mode 100644 index 9d54a096..00000000 --- a/vendor/filament/infolists/src/Components/Livewire.php +++ /dev/null @@ -1,106 +0,0 @@ - | Closure - */ - protected array | Closure $data = []; - - protected string | Closure $component; - - /** - * @param array | Closure $data - */ - final public function __construct(string | Closure $component, array | Closure $data = []) - { - $this->component($component); - $this->data($data); - } - - /** - * @param array | Closure $data - */ - public static function make(string | Closure $component, array | Closure $data = []): static - { - $static = app(static::class, [ - 'component' => $component, - 'data' => $data, - ]); - $static->configure(); - - return $static; - } - - public function component(string | Closure $component): static - { - $this->component = $component; - - return $this; - } - - public function getComponent(): string - { - return $this->evaluate($this->component); - } - - public function lazy(bool | Closure $condition = true): static - { - $this->isLazy = $condition; - - return $this; - } - - public function isLazy(): bool - { - return (bool) $this->evaluate($this->isLazy); - } - - /** - * @param array | Closure $data - */ - public function data(array | Closure $data): static - { - $this->data = $data; - - return $this; - } - - /** - * @return array - */ - public function getData(): array - { - return $this->evaluate($this->data); - } - - /** - * @return array - */ - public function getComponentProperties(): array - { - $properties = [ - 'record' => $this->getRecord(), - ]; - - if ($this->isLazy()) { - $properties['lazy'] = true; - } - - return [ - ...$properties, - ...$this->getData(), - ]; - } -} diff --git a/vendor/filament/infolists/src/Components/RepeatableEntry.php b/vendor/filament/infolists/src/Components/RepeatableEntry.php deleted file mode 100644 index 4a059280..00000000 --- a/vendor/filament/infolists/src/Components/RepeatableEntry.php +++ /dev/null @@ -1,46 +0,0 @@ - - */ - public function getChildComponentContainers(bool $withHidden = false): array - { - if ((! $withHidden) && $this->isHidden()) { - return []; - } - - $containers = []; - - foreach ($this->getState() ?? [] as $itemKey => $itemData) { - $container = $this - ->getChildComponentContainer() - ->getClone() - ->statePath($itemKey) - ->inlineLabel(false); - - if ($itemData instanceof Model) { - $container->record($itemData); - } - - $containers[$itemKey] = $container; - } - - return $containers; - } -} diff --git a/vendor/filament/infolists/src/Components/Section.php b/vendor/filament/infolists/src/Components/Section.php deleted file mode 100644 index 67e7b3eb..00000000 --- a/vendor/filament/infolists/src/Components/Section.php +++ /dev/null @@ -1,115 +0,0 @@ - | Htmlable | Closure | null $heading - */ - final public function __construct(string | array | Htmlable | Closure | null $heading = null) - { - is_array($heading) - ? $this->childComponents($heading) - : $this->heading($heading); - } - - /** - * @param string | array | Htmlable | Closure | null $heading - */ - public static function make(string | array | Htmlable | Closure | null $heading = null): static - { - $static = app(static::class, ['heading' => $heading]); - $static->configure(); - - return $static; - } - - protected function setUp(): void - { - parent::setUp(); - - $this->columnSpan('full'); - } - - public function aside(bool | Closure | null $condition = true): static - { - $this->isAside = $condition; - - return $this; - } - - public function getId(): ?string - { - $id = parent::getId(); - - if (filled($id)) { - return $id; - } - - $heading = $this->getHeading(); - - if (blank($heading)) { - return null; - } - - $id = Str::slug($heading); - - if ($statePath = $this->getStatePath()) { - $id = "{$statePath}.{$id}"; - } - - return $id; - } - - public function getKey(): ?string - { - return parent::getKey() ?? ($this->getActions() ? $this->getId() : null); - } - - public function isAside(): bool - { - return (bool) ($this->evaluate($this->isAside) ?? false); - } - - public function contentBefore(bool | Closure $condition = true): static - { - $this->isContentBefore = $condition; - - return $this; - } - - public function isContentBefore(): bool - { - return (bool) $this->evaluate($this->isContentBefore); - } -} diff --git a/vendor/filament/infolists/src/Components/Split.php b/vendor/filament/infolists/src/Components/Split.php deleted file mode 100644 index ebd44736..00000000 --- a/vendor/filament/infolists/src/Components/Split.php +++ /dev/null @@ -1,37 +0,0 @@ - | Closure $schema - */ - final public function __construct(array | Closure $schema) - { - $this->schema($schema); - } - - /** - * @param array | Closure $schema - */ - public static function make(array | Closure $schema): static - { - $static = app(static::class, ['schema' => $schema]); - $static->configure(); - - return $static; - } -} diff --git a/vendor/filament/infolists/src/Components/Tabs.php b/vendor/filament/infolists/src/Components/Tabs.php deleted file mode 100644 index eef2abdc..00000000 --- a/vendor/filament/infolists/src/Components/Tabs.php +++ /dev/null @@ -1,87 +0,0 @@ -label($label); - } - - public static function make(?string $label = null): static - { - $static = app(static::class, ['label' => $label]); - $static->configure(); - - return $static; - } - - /** - * @param array | Closure $tabs - */ - public function tabs(array | Closure $tabs): static - { - $this->childComponents($tabs); - - return $this; - } - - public function activeTab(int | Closure $activeTab): static - { - $this->activeTab = $activeTab; - - return $this; - } - - public function getActiveTab(): int - { - if ($this->isTabPersistedInQueryString()) { - $queryStringTab = request()->query($this->getTabQueryStringKey()); - - foreach ($this->getChildComponentContainer()->getComponents() as $index => $tab) { - if ($tab->getId() !== $queryStringTab) { - continue; - } - - return $index + 1; - } - } - - return $this->evaluate($this->activeTab); - } - - public function getTabQueryStringKey(): ?string - { - return $this->evaluate($this->tabQueryStringKey); - } - - public function isTabPersistedInQueryString(): bool - { - return filled($this->getTabQueryStringKey()); - } - - public function persistTabInQueryString(string | Closure | null $key = 'tab'): static - { - $this->tabQueryStringKey = $key; - - return $this; - } -} diff --git a/vendor/filament/infolists/src/Components/Tabs/Tab.php b/vendor/filament/infolists/src/Components/Tabs/Tab.php deleted file mode 100644 index 351ef77f..00000000 --- a/vendor/filament/infolists/src/Components/Tabs/Tab.php +++ /dev/null @@ -1,46 +0,0 @@ -label($label); - $this->id(Str::slug($label)); - } - - public static function make(string $label): static - { - $static = app(static::class, ['label' => $label]); - $static->configure(); - - return $static; - } - - public function getId(): string - { - return $this->getContainer()->getParentComponent()->getId() . '-' . parent::getId() . '-tab'; - } - - /** - * @return array - */ - public function getColumnsConfig(): array - { - return $this->columns ?? $this->getContainer()->getColumnsConfig(); - } -} diff --git a/vendor/filament/infolists/src/Components/TextEntry.php b/vendor/filament/infolists/src/Components/TextEntry.php deleted file mode 100644 index d9091abf..00000000 --- a/vendor/filament/infolists/src/Components/TextEntry.php +++ /dev/null @@ -1,125 +0,0 @@ -isBadge = $condition; - - return $this; - } - - public function bulleted(bool | Closure $condition = true): static - { - $this->isBulleted = $condition; - - return $this; - } - - public function listWithLineBreaks(bool | Closure $condition = true): static - { - $this->isListWithLineBreaks = $condition; - - return $this; - } - - public function limitList(int | Closure | null $limit = 3): static - { - $this->listLimit = $limit; - - return $this; - } - - public function prose(bool | Closure $condition = true): static - { - $this->isProse = $condition; - - return $this; - } - - public function size(TextEntrySize | string | Closure | null $size): static - { - $this->size = $size; - - return $this; - } - - public function getSize(mixed $state): TextEntrySize | string | null - { - return $this->evaluate($this->size, [ - 'state' => $state, - ]); - } - - public function isBadge(): bool - { - return (bool) $this->evaluate($this->isBadge); - } - - public function isBulleted(): bool - { - return (bool) $this->evaluate($this->isBulleted); - } - - public function isProse(): bool - { - return (bool) $this->evaluate($this->isProse); - } - - public function isListWithLineBreaks(): bool - { - return $this->evaluate($this->isListWithLineBreaks) || $this->isBulleted(); - } - - public function getListLimit(): ?int - { - return $this->evaluate($this->listLimit); - } - - public function expandableLimitedList(bool | Closure $condition = true): static - { - $this->isLimitedListExpandable = $condition; - - return $this; - } - - public function isLimitedListExpandable(): bool - { - return (bool) $this->evaluate($this->isLimitedListExpandable); - } -} diff --git a/vendor/filament/infolists/src/Components/TextEntry/TextEntrySize.php b/vendor/filament/infolists/src/Components/TextEntry/TextEntrySize.php deleted file mode 100644 index 8bc4ae1e..00000000 --- a/vendor/filament/infolists/src/Components/TextEntry/TextEntrySize.php +++ /dev/null @@ -1,14 +0,0 @@ -view($view); - } - - /** - * @param view-string $view - */ - public static function make(string $view): static - { - $static = app(static::class, ['view' => $view]); - $static->configure(); - - return $static; - } -} diff --git a/vendor/filament/infolists/src/Components/ViewEntry.php b/vendor/filament/infolists/src/Components/ViewEntry.php deleted file mode 100644 index 1b3dc6f0..00000000 --- a/vendor/filament/infolists/src/Components/ViewEntry.php +++ /dev/null @@ -1,7 +0,0 @@ -livewire = $livewire; - - return $this; - } - - public function getLivewire(): ?Component - { - return $this->livewire; - } -} diff --git a/vendor/filament/infolists/src/Concerns/BelongsToParentComponent.php b/vendor/filament/infolists/src/Concerns/BelongsToParentComponent.php deleted file mode 100644 index d374b72b..00000000 --- a/vendor/filament/infolists/src/Concerns/BelongsToParentComponent.php +++ /dev/null @@ -1,39 +0,0 @@ -parentComponent = $component; - - return $this; - } - - public function getParentComponent(): ?Component - { - return $this->parentComponent; - } - - public function getInfolist(): Infolist - { - if ($this instanceof Infolist) { - return $this; - } - - $parentComponent = $this->getParentComponent(); - - if (! $parentComponent) { - throw new Exception('Tried to access a non-existent root infolist of a component.'); - } - - return $parentComponent->getInfolist(); - } -} diff --git a/vendor/filament/infolists/src/Concerns/CanBeHidden.php b/vendor/filament/infolists/src/Concerns/CanBeHidden.php deleted file mode 100644 index fc0d103f..00000000 --- a/vendor/filament/infolists/src/Concerns/CanBeHidden.php +++ /dev/null @@ -1,16 +0,0 @@ -getParentComponent()?->isHidden(); - } - - public function isVisible(): bool - { - return ! $this->isHidden(); - } -} diff --git a/vendor/filament/infolists/src/Concerns/Cloneable.php b/vendor/filament/infolists/src/Concerns/Cloneable.php deleted file mode 100644 index 3c6b69d8..00000000 --- a/vendor/filament/infolists/src/Concerns/Cloneable.php +++ /dev/null @@ -1,26 +0,0 @@ -getComponents(withHidden: true) as $component) { - $components[] = $component->getClone(); - } - - return $this->components($components); - } - - public function getClone(): static - { - $clone = clone $this; - $clone->flushCachedAbsoluteStatePath(); - $clone->cloneComponents(); - - return $clone; - } -} diff --git a/vendor/filament/infolists/src/Concerns/HasColumns.php b/vendor/filament/infolists/src/Concerns/HasColumns.php deleted file mode 100644 index 4c29adbe..00000000 --- a/vendor/filament/infolists/src/Concerns/HasColumns.php +++ /dev/null @@ -1,65 +0,0 @@ - | null - */ - protected ?array $columns = null; - - /** - * @param array | int | null $columns - */ - public function columns(array | int | null $columns = 2): static - { - if (! is_array($columns)) { - $columns = [ - 'lg' => $columns, - ]; - } - - $this->columns = [ - ...($this->columns ?? []), - ...$columns, - ]; - - return $this; - } - - /** - * @return array | int | null - */ - public function getColumns(?string $breakpoint = null): array | int | null - { - $columns = $this->getColumnsConfig(); - - if ($breakpoint !== null) { - return $columns[$breakpoint] ?? null; - } - - return $columns; - } - - /** - * @return array - */ - public function getColumnsConfig(): array - { - if ($this instanceof ComponentContainer && $this->getParentComponent()) { - return $this->getParentComponent()->getColumnsConfig(); - } - - return $this->columns ?? [ - 'default' => 1, - 'sm' => null, - 'md' => null, - 'lg' => null, - 'xl' => null, - '2xl' => null, - ]; - } -} diff --git a/vendor/filament/infolists/src/Concerns/HasComponents.php b/vendor/filament/infolists/src/Concerns/HasComponents.php deleted file mode 100644 index cff5f476..00000000 --- a/vendor/filament/infolists/src/Concerns/HasComponents.php +++ /dev/null @@ -1,95 +0,0 @@ - | Closure - */ - protected array | Closure $components = []; - - /** - * @param array | Closure $components - */ - public function components(array | Closure $components): static - { - $this->components = $components; - - return $this; - } - - /** - * @param array | Closure $components - */ - public function schema(array | Closure $components): static - { - $this->components($components); - - return $this; - } - - /** - * @return array - */ - public function getComponents(bool $withHidden = false): array - { - $components = array_map(function (Component $component): Component { - $component->container($this); - - return $component; - }, $this->evaluate($this->components)); - - if ($withHidden) { - return $components; - } - - return array_filter( - $components, - fn (Component $component) => $component->isVisible(), - ); - } - - public function getComponent(string | Closure $callback, bool $withHidden = false): ?Component - { - if (is_string($callback)) { - $callback = static function (Component $component) use ($callback): bool { - $key = $component->getKey(); - - if ($key === null) { - return false; - } - - return $key === $callback; - }; - } - - return collect($this->getFlatComponents($withHidden))->first($callback); - } - - /** - * @return array - */ - public function getFlatComponents(bool $withHidden = false): array - { - return array_reduce( - $this->getComponents($withHidden), - function (array $carry, Component $component) use ($withHidden): array { - $carry[] = $component; - - foreach ($component->getChildComponentContainers($withHidden) as $childComponentContainer) { - $carry = [ - ...$carry, - ...$childComponentContainer->getFlatComponents($withHidden), - ]; - } - - return $carry; - }, - initial: [], - ); - } -} diff --git a/vendor/filament/infolists/src/Concerns/HasEntryWrapper.php b/vendor/filament/infolists/src/Concerns/HasEntryWrapper.php deleted file mode 100644 index a9e2e202..00000000 --- a/vendor/filament/infolists/src/Concerns/HasEntryWrapper.php +++ /dev/null @@ -1,23 +0,0 @@ -entryWrapperView = $view; - - return $this; - } - - public function getCustomEntryWrapperView(): ?string - { - return $this->evaluate($this->entryWrapperView) ?? - $this->getParentComponent()?->getCustomEntryWrapperView(); - } -} diff --git a/vendor/filament/infolists/src/Concerns/HasInlineLabels.php b/vendor/filament/infolists/src/Concerns/HasInlineLabels.php deleted file mode 100644 index 4e7f766d..00000000 --- a/vendor/filament/infolists/src/Concerns/HasInlineLabels.php +++ /dev/null @@ -1,22 +0,0 @@ -hasInlineLabels = $condition; - - return $this; - } - - public function hasInlineLabel(): ?bool - { - return $this->evaluate($this->hasInlineLabels) ?? $this->getParentComponent()?->hasInlineLabel(); - } -} diff --git a/vendor/filament/infolists/src/Concerns/HasState.php b/vendor/filament/infolists/src/Concerns/HasState.php deleted file mode 100644 index b2678010..00000000 --- a/vendor/filament/infolists/src/Concerns/HasState.php +++ /dev/null @@ -1,97 +0,0 @@ - | null - */ - protected ?array $state = null; - - protected string $cachedAbsoluteStatePath; - - /** - * @param array | null $state - */ - public function state(?array $state): static - { - $this->state = $state; - - return $this; - } - - public function statePath(?string $path): static - { - $this->statePath = $path; - - return $this; - } - - public function record(?Model $record): static - { - $this->record = $record; - - return $this; - } - - public function getStatePath(bool $isAbsolute = true): string - { - if (isset($this->cachedAbsoluteStatePath)) { - return $this->cachedAbsoluteStatePath; - } - - $pathComponents = []; - - if ($isAbsolute && $parentComponentStatePath = $this->getParentComponent()?->getStatePath()) { - $pathComponents[] = $parentComponentStatePath; - } - - if (($statePath = $this->statePath) !== null) { - $pathComponents[] = $statePath; - } - - return $this->cachedAbsoluteStatePath = implode('.', $pathComponents); - } - - /** - * @return Model | array - */ - public function getState(): Model | array - { - $state = $this->state ?? $this->getParentComponent()?->getContainer()->getState(); - - if ($state !== null) { - return $state; - } - - $record = $this->getRecord(); - - if (! $record) { - throw new Exception('Infolist has no [record()] or [state()] set.'); - } - - return $record; - } - - public function getRecord(): ?Model - { - if ($this->record instanceof Model) { - return $this->record; - } - - return $this->getParentComponent()?->getRecord(); - } - - protected function flushCachedAbsoluteStatePath(): void - { - unset($this->cachedAbsoluteStatePath); - } -} diff --git a/vendor/filament/infolists/src/Concerns/InteractsWithInfolists.php b/vendor/filament/infolists/src/Concerns/InteractsWithInfolists.php deleted file mode 100644 index 2ffe64f7..00000000 --- a/vendor/filament/infolists/src/Concerns/InteractsWithInfolists.php +++ /dev/null @@ -1,346 +0,0 @@ - - */ - protected array $cachedInfolists = []; - - /** - * @var array | null - */ - public ?array $mountedInfolistActions = []; - - /** - * @var array> | null - */ - public ?array $mountedInfolistActionsData = []; - - public ?string $mountedInfolistActionsComponent = null; - - public ?string $mountedInfolistActionsInfolist = null; - - public function getInfolist(string $name): ?Infolist - { - $infolist = $this->getCachedInfolists()[$name] ?? null; - - if ($infolist) { - return $infolist; - } - - if (! method_exists($this, $name)) { - return null; - } - - $infolist = $this->{$name}($this->makeInfolist()); - - if (! ($infolist instanceof Infolist)) { - return null; - } - - return $this->cacheInfolist($name, $infolist); - } - - public function cacheInfolist(string $name, Infolist $infolist): Infolist - { - $infolist->name($name); - - return $this->cachedInfolists[$name] = $infolist; - } - - /** - * @return array - */ - public function getCachedInfolists(): array - { - return $this->cachedInfolists; - } - - protected function hasCachedInfolist(string $name): bool - { - return array_key_exists($name, $this->getCachedInfolists()); - } - - /** - * @param array $arguments - */ - public function callMountedInfolistAction(array $arguments = []): mixed - { - $action = $this->getMountedInfolistAction(); - - if (! $action) { - return null; - } - - if ($action->isDisabled()) { - return null; - } - - $action->mergeArguments($arguments); - - $form = $this->getMountedInfolistActionForm(); - - $result = null; - - try { - if ($this->mountedInfolistActionHasForm()) { - $action->callBeforeFormValidated(); - - $action->formData($form->getState()); - - $action->callAfterFormValidated(); - } - - $action->callBefore(); - - $result = $action->call([ - 'form' => $form, - ]); - - $result = $action->callAfter() ?? $result; - } catch (Halt $exception) { - return null; - } catch (Cancel $exception) { - } catch (ValidationException $exception) { - if (! $this->mountedInfolistActionShouldOpenModal()) { - $action->resetArguments(); - $action->resetFormData(); - - $this->unmountInfolistAction(); - } - - throw $exception; - } - - if (store($this)->has('redirect')) { - return $result; - } - - $action->resetArguments(); - $action->resetFormData(); - - $this->unmountInfolistAction(); - - return $result; - } - - public function mountInfolistAction(string $name, ?string $component = null, ?string $infolist = null): mixed - { - $this->mountedInfolistActions[] = $name; - $this->mountedInfolistActionsData[] = []; - - if (blank($this->mountedInfolistActionsComponent) && filled($component)) { - $this->mountedInfolistActionsComponent = $component; - } - - if (blank($this->mountedInfolistActionsInfolist) && filled($infolist)) { - $this->mountedInfolistActionsInfolist = $infolist; - } - - $action = $this->getMountedInfolistAction(); - - if (! $action) { - $this->unmountInfolistAction(); - - return null; - } - - if ($action->isDisabled()) { - $this->unmountInfolistAction(); - - return null; - } - - $this->cacheForm( - 'mountedInfolistActionForm', - fn () => $this->getMountedInfolistActionForm(), - ); - - try { - $hasForm = $this->mountedInfolistActionHasForm(); - - if ($hasForm) { - $action->callBeforeFormFilled(); - } - - $action->mount([ - 'form' => $this->getMountedInfolistActionForm(), - ]); - - if ($hasForm) { - $action->callAfterFormFilled(); - } - } catch (Halt $exception) { - return null; - } catch (Cancel $exception) { - $this->unmountInfolistAction(shouldCancelParentActions: false); - - return null; - } - - if (! $this->mountedInfolistActionShouldOpenModal()) { - return $this->callMountedInfolistAction(); - } - - $this->resetErrorBag(); - - $this->openInfolistActionModal(); - - return null; - } - - protected function openInfolistActionModal(): void - { - if ( - ($this instanceof HasActions && count($this->mountedActions)) || - ($this instanceof HasForms && count($this->mountedFormComponentActions)) || - /** @phpstan-ignore-next-line */ - ($this instanceof HasTable && (count($this->mountedTableActions) || filled($this->mountedTableBulkAction))) - ) { - throw new Exception('Currently, infolist actions cannot open modals while they are nested within other action modals.'); - } - - $this->dispatch('open-modal', id: "{$this->getId()}-infolist-action"); - } - - public function mountedInfolistActionShouldOpenModal(): bool - { - $action = $this->getMountedInfolistAction(); - - if ($action->isModalHidden()) { - return false; - } - - return $action->hasCustomModalHeading() || - $action->hasModalDescription() || - $action->hasModalContent() || - $action->hasModalContentFooter() || - $action->getInfolist() || - $this->mountedInfolistActionHasForm(); - } - - public function mountedInfolistActionHasForm(): bool - { - return (bool) count($this->getMountedInfolistActionForm()?->getComponents() ?? []); - } - - public function getMountedInfolistAction(): ?Action - { - if (! count($this->mountedInfolistActions ?? [])) { - return null; - } - - return $this->getMountedInfolistActionComponent()?->getAction($this->mountedInfolistActions); - } - - public function getMountedInfolistActionComponent(): ?Component - { - $infolist = $this->getInfolist($this->mountedInfolistActionsInfolist); - - if (! $infolist) { - return null; - } - - return $infolist->getComponent($this->mountedInfolistActionsComponent); - } - - public function getMountedInfolistActionForm(): ?Form - { - $action = $this->getMountedInfolistAction(); - - if (! $action) { - return null; - } - - if ((! $this->isCachingForms) && $this->hasCachedForm('mountedInfolistActionForm')) { - return $this->getForm('mountedInfolistActionForm'); - } - - return $action->getForm( - $this->makeForm() - ->model($action->getRecord()) - ->statePath('mountedInfolistActionsData.' . array_key_last($this->mountedInfolistActionsData)) - ->operation(implode('.', $this->mountedInfolistActions)), - ); - } - - public function unmountInfolistAction(bool $shouldCancelParentActions = true): void - { - $action = $this->getMountedInfolistAction(); - - if (! ($shouldCancelParentActions && $action)) { - array_pop($this->mountedInfolistActions); - array_pop($this->mountedInfolistActionsData); - } elseif ($action->shouldCancelAllParentActions()) { - $this->mountedInfolistActions = []; - $this->mountedInfolistActionsData = []; - } else { - $parentActionToCancelTo = $action->getParentActionToCancelTo(); - - while (true) { - $recentlyClosedParentAction = array_pop($this->mountedInfolistActions); - array_pop($this->mountedInfolistActionsData); - - if ( - blank($parentActionToCancelTo) || - ($recentlyClosedParentAction === $parentActionToCancelTo) - ) { - break; - } - } - } - - if (! count($this->mountedInfolistActions)) { - $this->mountedInfolistActionsComponent = null; - $this->mountedInfolistActionsInfolist = null; - - $this->dispatch('close-modal', id: "{$this->getId()}-infolist-action"); - - return; - } - - $this->cacheForm( - 'mountedInfolistActionForm', - fn () => $this->getMountedInfolistActionForm(), - ); - - $this->resetErrorBag(); - - $this->openInfolistActionModal(); - } - - protected function makeInfolist(): Infolist - { - return Infolist::make($this); - } - - /** - * @return array - */ - protected function getInteractsWithInfolistsForms(): array - { - return [ - 'mountedInfolistActionForm' => $this->getMountedInfolistActionForm(), - ]; - } -} diff --git a/vendor/filament/infolists/src/Contracts/HasInfolists.php b/vendor/filament/infolists/src/Contracts/HasInfolists.php deleted file mode 100644 index 432e4940..00000000 --- a/vendor/filament/infolists/src/Contracts/HasInfolists.php +++ /dev/null @@ -1,10 +0,0 @@ -name = $name; - - return $this; - } - - public function getName(): string - { - return $this->name; - } -} diff --git a/vendor/filament/infolists/src/InfolistsServiceProvider.php b/vendor/filament/infolists/src/InfolistsServiceProvider.php deleted file mode 100644 index 117ea8de..00000000 --- a/vendor/filament/infolists/src/InfolistsServiceProvider.php +++ /dev/null @@ -1,53 +0,0 @@ -name('filament-infolists') - ->hasCommands($this->getCommands()) - ->hasTranslations() - ->hasViews(); - } - - public function packageBooted(): void - { - Testable::mixin(new TestsActions()); - } - - /** - * @return array - */ - protected function getCommands(): array - { - $commands = [ - Commands\MakeEntryCommand::class, - Commands\MakeLayoutComponentCommand::class, - ]; - - $aliases = []; - - foreach ($commands as $command) { - $class = 'Filament\\Infolists\\Commands\\Aliases\\' . class_basename($command); - - if (! class_exists($class)) { - continue; - } - - $aliases[] = $class; - } - - return [ - ...$commands, - ...$aliases, - ]; - } -} diff --git a/vendor/filament/infolists/src/Testing/TestsActions.php b/vendor/filament/infolists/src/Testing/TestsActions.php deleted file mode 100644 index 65fedc55..00000000 --- a/vendor/filament/infolists/src/Testing/TestsActions.php +++ /dev/null @@ -1,547 +0,0 @@ -parseNestedActionName($name); - - foreach ($name as $actionNestingIndex => $actionName) { - $this->call( - 'mountInfolistAction', - $actionName, - $actionNestingIndex ? null : $component, - $actionNestingIndex ? null : $infolistName, - ); - } - - if (store($this->instance())->has('redirect')) { - return $this; - } - - if (! count($this->instance()->mountedInfolistActions)) { - $this->assertNotDispatched('open-modal'); - - return $this; - } - - $this->assertSet('mountedInfolistActionsComponent', $component); - $this->assertSet('mountedInfolistActions', $name); - - $this->assertDispatched('open-modal', id: "{$this->instance()->getId()}-infolist-action"); - - return $this; - }; - } - - public function unmountInfolistAction(): Closure - { - return function (): static { - $this->call('unmountInfolistAction'); - - return $this; - }; - } - - public function setInfolistActionData(): Closure - { - return function (array $data): static { - foreach (Arr::dot($data, prepend: 'mountedInfolistActionsData.' . array_key_last($this->instance()->mountedInfolistActionsData) . '.') as $key => $value) { - $this->set($key, $value); - } - - return $this; - }; - } - - public function assertInfolistActionDataSet(): Closure - { - return function (array $data): static { - foreach (Arr::dot($data, prepend: 'mountedInfolistActionsData.' . array_key_last($this->instance()->mountedInfolistActionsData) . '.') as $key => $value) { - $this->assertSet($key, $value); - } - - return $this; - }; - } - - public function callInfolistAction(): Closure - { - return function (string $component, string | array $name, array $data = [], array $arguments = [], string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - $this->assertInfolistActionVisible($component, $name, $infolistName); - - /** @phpstan-ignore-next-line */ - $this->mountInfolistAction($component, $name, $infolistName); - - if (! $this->instance()->getMountedInfolistAction()) { - return $this; - } - - /** @phpstan-ignore-next-line */ - $this->setInfolistActionData($data); - - /** @phpstan-ignore-next-line */ - $this->callMountedInfolistAction($arguments); - - return $this; - }; - } - - public function callMountedInfolistAction(): Closure - { - return function (array $arguments = []): static { - $action = $this->instance()->getMountedInfolistAction(); - - if (! $action) { - return $this; - } - - $this->call('callMountedInfolistAction', $arguments); - - if (store($this->instance())->has('redirect')) { - return $this; - } - - if (! count($this->instance()->mountedInfolistActions)) { - $this->assertDispatched('close-modal', id: "{$this->instance()->getId()}-infolist-action"); - } - - return $this; - }; - } - - public function assertInfolistActionExists(): Closure - { - return function (string $component, string | array $name, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedInfolistActionComponentAndName($component, $name, $infolistName); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertInstanceOf( - Action::class, - $action, - message: "Failed asserting that a infolist action with name [{$prettyName}] is registered to [{$component->getKey()}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertInfolistActionDoesNotExist(): Closure - { - return function (string $component, string | array $name, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedInfolistActionComponentAndName($component, $name, $infolistName); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertNull( - $action, - message: "Failed asserting that a infolist action with name [{$prettyName}] is not registered to [{$component->getKey()}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertInfolistActionVisible(): Closure - { - return function (string $component, string | array $name, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - $this->assertInfolistActionExists($component, $name, $infolistName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedInfolistActionComponentAndName($component, $name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertFalse( - $action->isHidden(), - message: "Failed asserting that a infolist action with name [{$prettyName}], registered to [{$component->getKey()}], is visible on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertInfolistActionHidden(): Closure - { - return function (string $component, string | array $name, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - $this->assertInfolistActionExists($component, $name, $infolistName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedInfolistActionComponentAndName($component, $name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertTrue( - $action->isHidden(), - message: "Failed asserting that a infolist action with name [{$prettyName}], registered to [{$component->getKey()}], is hidden on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertInfolistActionEnabled(): Closure - { - return function (string $component, string | array $name, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - $this->assertInfolistActionExists($component, $name, $infolistName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedInfolistActionComponentAndName($component, $name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertFalse( - $action->isDisabled(), - message: "Failed asserting that a infolist action with name [{$prettyName}], registered to [{$component->getKey()}], is enabled on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertInfolistActionDisabled(): Closure - { - return function (string $component, string | array $name, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - $this->assertInfolistActionExists($component, $name, $infolistName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedInfolistActionComponentAndName($component, $name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertFalse( - $action->isEnabled(), - message: "Failed asserting that a infolist action with name [{$prettyName}], registered to [{$component->getKey()}], is disabled on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertInfolistActionHasIcon(): Closure - { - return function (string $component, string | array $name, string $icon, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - $this->assertInfolistActionExists($component, $name, $infolistName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedInfolistActionComponentAndName($component, $name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertTrue( - $action->getIcon() === $icon, - message: "Failed asserting that a infolist action with name [{$prettyName}], registered to [{$component->getKey()}], has icon [{$icon}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertInfolistActionDoesNotHaveIcon(): Closure - { - return function (string $component, string | array $name, string $icon, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - $this->assertInfolistActionExists($component, $name, $infolistName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedInfolistActionComponentAndName($component, $name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertFalse( - $action->getIcon() === $icon, - message: "Failed asserting that a infolist action with name [{$prettyName}], registered to [{$component->getKey()}], does not have icon [{$icon}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertInfolistActionHasLabel(): Closure - { - return function (string $component, string | array $name, string $label, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - $this->assertInfolistActionExists($component, $name, $infolistName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedInfolistActionComponentAndName($component, $name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertTrue( - $action->getLabel() === $label, - message: "Failed asserting that a infolist action with name [{$prettyName}], registered to [{$component->getKey()}], has label [{$label}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertInfolistActionDoesNotHaveLabel(): Closure - { - return function (string $component, string | array $name, string $label, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - $this->assertInfolistActionExists($component, $name, $infolistName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedInfolistActionComponentAndName($component, $name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertFalse( - $action->getLabel() === $label, - message: "Failed asserting that a infolist action with name [{$prettyName}], registered to [{$component->getKey()}], does not have label [{$label}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertInfolistActionHasColor(): Closure - { - return function (string $component, string | array $name, string | array $color, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - $this->assertInfolistActionExists($component, $name, $infolistName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedInfolistActionComponentAndName($component, $name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - $colorName = is_string($color) ? $color : 'custom'; - - Assert::assertTrue( - $action->getColor() === $color, - message: "Failed asserting that a infolist action with name [{$prettyName}], registered to [{$component->getKey()}], has [{$colorName}] color on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertInfolistActionDoesNotHaveColor(): Closure - { - return function (string $component, string | array $name, string | array $color, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - $this->assertInfolistActionExists($component, $name, $infolistName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedInfolistActionComponentAndName($component, $name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - $colorName = is_string($color) ? $color : 'custom'; - - Assert::assertFalse( - $action->getColor() === $color, - message: "Failed asserting that a infolist action with name [{$prettyName}], registered to [{$component->getKey()}], does not have [{$colorName}] color on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertInfolistActionHasUrl(): Closure - { - return function (string $component, string | array $name, string $url, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - $this->assertInfolistActionExists($component, $name, $infolistName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedInfolistActionComponentAndName($component, $name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertTrue( - $action->getUrl() === $url, - message: "Failed asserting that a infolist action with name [{$prettyName}], registered to [{$component->getKey()}], has URL [{$url}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertInfolistActionDoesNotHaveUrl(): Closure - { - return function (string $component, string | array $name, string $url, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - $this->assertInfolistActionExists($component, $name, $infolistName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedInfolistActionComponentAndName($component, $name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertFalse( - $action->getUrl() === $url, - message: "Failed asserting that a infolist action with name [{$prettyName}], registered to [{$component->getKey()}], does not have URL [{$url}] on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertInfolistActionShouldOpenUrlInNewTab(): Closure - { - return function (string $component, string | array $name, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - $this->assertInfolistActionExists($component, $name, $infolistName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedInfolistActionComponentAndName($component, $name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertTrue( - $action->shouldOpenUrlInNewTab(), - message: "Failed asserting that a infolist action with name [{$prettyName}], registered to [{$component->getKey()}], should open url in new tab on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertInfolistActionShouldNotOpenUrlInNewTab(): Closure - { - return function (string $component, string | array $name, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - $this->assertInfolistActionExists($component, $name, $infolistName); - - /** @phpstan-ignore-next-line */ - [$component, $action] = $this->getNestedInfolistActionComponentAndName($component, $name); - - $livewireClass = $this->instance()::class; - $prettyName = implode(' > ', Arr::wrap($name)); - - Assert::assertFalse( - $action->shouldOpenUrlInNewTab(), - message: "Failed asserting that a infolist action with name [{$prettyName}], registered to [{$component->getKey()}], should not open url in new tab on the [{$livewireClass}] component.", - ); - - return $this; - }; - } - - public function assertInfolistActionMounted(): Closure - { - return function (string $component, string | array $name, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - $this->assertInfolistActionExists($component, $name, $infolistName); - - $name = $this->parseNestedActionName($name); - - $this->assertSet('mountedInfolistActions', $name); - - return $this; - }; - } - - public function assertInfolistActionNotMounted(): Closure - { - return function (string $component, string | array $name, string $infolistName = 'infolist'): static { - /** @phpstan-ignore-next-line */ - $this->assertInfolistActionExists($component, $name, $infolistName); - - $name = $this->parseNestedActionName($name); - - $this->assertNotSet('mountedInfolistActions', $name); - - return $this; - }; - } - - public function assertInfolistActionHalted(): Closure - { - return $this->assertInfolistActionMounted(); - } - - public function assertHasInfolistActionErrors(): Closure - { - return function (array $keys = []): static { - $this->assertHasErrors( - collect($keys) - ->mapWithKeys(function ($value, $key): array { - if (is_int($key)) { - return [$key => 'mountedInfolistActionsData.' . array_key_last($this->instance()->mountedInfolistActionsData) . '.' . $value]; - } - - return ['mountedInfolistActionsData.' . array_key_last($this->instance()->mountedInfolistActionsData) . '.' . $key => $value]; - }) - ->all(), - ); - - return $this; - }; - } - - public function assertHasNoInfolistActionErrors(): Closure - { - return function (array $keys = []): static { - $this->assertHasNoErrors( - collect($keys) - ->mapWithKeys(function ($value, $key): array { - if (is_int($key)) { - return [$key => 'mountedInfolistActionsData.' . array_key_last($this->instance()->mountedInfolistActionsData) . '.' . $value]; - } - - return ['mountedInfolistActionsData.' . array_key_last($this->instance()->mountedInfolistActionsData) . '.' . $key => $value]; - }) - ->all(), - ); - - return $this; - }; - } - - public function getNestedInfolistActionComponentAndName(): Closure - { - return function (string $component, string | array $name, string $infolistName = 'infolist'): array { - $name = $this->parseNestedActionName($name); - - $component = $this->instance()->getInfolist($infolistName)?->getComponent($component); - - return [$component, $component?->getAction($name)]; - }; - } -} diff --git a/vendor/filament/infolists/stubs/Entry.stub b/vendor/filament/infolists/stubs/Entry.stub deleted file mode 100644 index 1a449dd1..00000000 --- a/vendor/filament/infolists/stubs/Entry.stub +++ /dev/null @@ -1,10 +0,0 @@ - -
    - {{ $getState() }} -
    - diff --git a/vendor/filament/infolists/stubs/LayoutComponent.stub b/vendor/filament/infolists/stubs/LayoutComponent.stub deleted file mode 100644 index 8b2e8e6f..00000000 --- a/vendor/filament/infolists/stubs/LayoutComponent.stub +++ /dev/null @@ -1,15 +0,0 @@ - - {{ $getChildComponentContainer() }} -
    diff --git a/vendor/filament/notifications/.stubs.php b/vendor/filament/notifications/.stubs.php deleted file mode 100644 index 0db2e97f..00000000 --- a/vendor/filament/notifications/.stubs.php +++ /dev/null @@ -1,13 +0,0 @@ -{var O=Object.create;var $=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var H=Object.getPrototypeOf,W=Object.prototype.hasOwnProperty;var d=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports);var j=(i,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Y(t))!W.call(i,n)&&n!==e&&$(i,n,{get:()=>t[n],enumerable:!(s=V(t,n))||s.enumerable});return i};var J=(i,t,e)=>(e=i!=null?O(H(i)):{},j(t||!i||!i.__esModule?$(e,"default",{value:i,enumerable:!0}):e,i));var S=d((ut,_)=>{var v,g=typeof global<"u"&&(global.crypto||global.msCrypto);g&&g.getRandomValues&&(y=new Uint8Array(16),v=function(){return g.getRandomValues(y),y});var y;v||(T=new Array(16),v=function(){for(var i=0,t;i<16;i++)i&3||(t=Math.random()*4294967296),T[i]=t>>>((i&3)<<3)&255;return T});var T;_.exports=v});var C=d((ct,U)=>{var P=[];for(f=0;f<256;++f)P[f]=(f+256).toString(16).substr(1);var f;function K(i,t){var e=t||0,s=P;return s[i[e++]]+s[i[e++]]+s[i[e++]]+s[i[e++]]+"-"+s[i[e++]]+s[i[e++]]+"-"+s[i[e++]]+s[i[e++]]+"-"+s[i[e++]]+s[i[e++]]+"-"+s[i[e++]]+s[i[e++]]+s[i[e++]]+s[i[e++]]+s[i[e++]]+s[i[e++]]}U.exports=K});var R=d((lt,F)=>{var Q=S(),X=C(),a=Q(),Z=[a[0]|1,a[1],a[2],a[3],a[4],a[5]],b=(a[6]<<8|a[7])&16383,D=0,A=0;function tt(i,t,e){var s=t&&e||0,n=t||[];i=i||{};var r=i.clockseq!==void 0?i.clockseq:b,o=i.msecs!==void 0?i.msecs:new Date().getTime(),h=i.nsecs!==void 0?i.nsecs:A+1,l=o-D+(h-A)/1e4;if(l<0&&i.clockseq===void 0&&(r=r+1&16383),(l<0||o>D)&&i.nsecs===void 0&&(h=0),h>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");D=o,A=h,b=r,o+=122192928e5;var c=((o&268435455)*1e4+h)%4294967296;n[s++]=c>>>24&255,n[s++]=c>>>16&255,n[s++]=c>>>8&255,n[s++]=c&255;var u=o/4294967296*1e4&268435455;n[s++]=u>>>8&255,n[s++]=u&255,n[s++]=u>>>24&15|16,n[s++]=u>>>16&255,n[s++]=r>>>8|128,n[s++]=r&255;for(var N=i.node||Z,m=0;m<6;++m)n[s+m]=N[m];return t||X(n)}F.exports=tt});var I=d((dt,G)=>{var it=S(),et=C();function st(i,t,e){var s=t&&e||0;typeof i=="string"&&(t=i=="binary"?new Array(16):null,i=null),i=i||{};var n=i.random||(i.rng||it)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t)for(var r=0;r<16;++r)t[s+r]=n[r];return t||et(n)}G.exports=st});var B=d((ft,z)=>{var nt=R(),M=I(),E=M;E.v1=nt;E.v4=M;z.exports=E});function k(i,t=()=>{}){let e=!1;return function(){e?t.apply(this,arguments):(e=!0,i.apply(this,arguments))}}var q=i=>{i.data("notificationComponent",({notification:t})=>({isShown:!1,computedStyle:null,transitionDuration:null,transitionEasing:null,init:function(){this.computedStyle=window.getComputedStyle(this.$el),this.transitionDuration=parseFloat(this.computedStyle.transitionDuration)*1e3,this.transitionEasing=this.computedStyle.transitionTimingFunction,this.configureTransitions(),this.configureAnimations(),t.duration&&t.duration!=="persistent"&&setTimeout(()=>this.close(),t.duration),this.isShown=!0},configureTransitions:function(){let e=this.computedStyle.display,s=()=>{i.mutateDom(()=>{this.$el.style.setProperty("display",e),this.$el.style.setProperty("visibility","visible")}),this.$el._x_isShown=!0},n=()=>{i.mutateDom(()=>{this.$el._x_isShown?this.$el.style.setProperty("visibility","hidden"):this.$el.style.setProperty("display","none")})},r=k(o=>o?s():n(),o=>{this.$el._x_toggleAndCascadeWithTransitions(this.$el,o,s,n)});i.effect(()=>r(this.isShown))},configureAnimations:function(){let e;Livewire.hook("commit",({component:s,commit:n,succeed:r,fail:o,respond:h})=>{if(!s.snapshot.data.isFilamentNotificationsComponent)return;let l=()=>this.$el.getBoundingClientRect().top,c=l();h(()=>{e=()=>{this.isShown&&this.$el.animate([{transform:`translateY(${c-l()}px)`},{transform:"translateY(0px)"}],{duration:this.transitionDuration,easing:this.transitionEasing})},this.$el.getAnimations().forEach(u=>u.finish())}),r(({snapshot:u,effect:N})=>{e()})})},close:function(){this.isShown=!1,setTimeout(()=>window.dispatchEvent(new CustomEvent("notificationClosed",{detail:{id:t.id}})),this.transitionDuration)},markAsRead:function(){window.dispatchEvent(new CustomEvent("markedNotificationAsRead",{detail:{id:t.id}}))},markAsUnread:function(){window.dispatchEvent(new CustomEvent("markedNotificationAsUnread",{detail:{id:t.id}}))}}))};var L=J(B(),1),p=class{constructor(){return this.id((0,L.v4)()),this}id(t){return this.id=t,this}title(t){return this.title=t,this}body(t){return this.body=t,this}actions(t){return this.actions=t,this}status(t){return this.status=t,this}color(t){return this.color=t,this}icon(t){return this.icon=t,this}iconColor(t){return this.iconColor=t,this}duration(t){return this.duration=t,this}seconds(t){return this.duration(t*1e3),this}persistent(){return this.duration("persistent"),this}danger(){return this.status("danger"),this}info(){return this.status("info"),this}success(){return this.status("success"),this}warning(){return this.status("warning"),this}view(t){return this.view=t,this}viewData(t){return this.viewData=t,this}send(){return window.dispatchEvent(new CustomEvent("notificationSent",{detail:{notification:this}})),this}},w=class{constructor(t){return this.name(t),this}name(t){return this.name=t,this}color(t){return this.color=t,this}dispatch(t,e){return this.event(t),this.eventData(e),this}dispatchSelf(t,e){return this.dispatch(t,e),this.dispatchDirection="self",this}dispatchTo(t,e,s){return this.dispatch(e,s),this.dispatchDirection="to",this.dispatchToComponent=t,this}emit(t,e){return this.dispatch(t,e),this}emitSelf(t,e){return this.dispatchSelf(t,e),this}emitTo(t,e,s){return this.dispatchTo(t,e,s),this}dispatchDirection(t){return this.dispatchDirection=t,this}dispatchToComponent(t){return this.dispatchToComponent=t,this}event(t){return this.event=t,this}eventData(t){return this.eventData=t,this}extraAttributes(t){return this.extraAttributes=t,this}icon(t){return this.icon=t,this}iconPosition(t){return this.iconPosition=t,this}outlined(t=!0){return this.isOutlined=t,this}disabled(t=!0){return this.isDisabled=t,this}label(t){return this.label=t,this}close(t=!0){return this.shouldClose=t,this}openUrlInNewTab(t=!0){return this.shouldOpenUrlInNewTab=t,this}size(t){return this.size=t,this}url(t){return this.url=t,this}view(t){return this.view=t,this}button(){return this.view("filament-notifications::actions.button-action"),this}grouped(){return this.view("filament-notifications::actions.grouped-action"),this}link(){return this.view("filament-notifications::actions.link-action"),this}},x=class{constructor(t){return this.actions(t),this}actions(t){return this.actions=t.map(e=>e.grouped()),this}color(t){return this.color=t,this}icon(t){return this.icon=t,this}iconPosition(t){return this.iconPosition=t,this}label(t){return this.label=t,this}tooltip(t){return this.tooltip=t,this}};window.FilamentNotificationAction=w;window.FilamentNotificationActionGroup=x;window.FilamentNotification=p;document.addEventListener("alpine:init",()=>{window.Alpine.plugin(q)});})(); diff --git a/vendor/filament/notifications/docs/01-installation.md b/vendor/filament/notifications/docs/01-installation.md deleted file mode 100644 index cb040424..00000000 --- a/vendor/filament/notifications/docs/01-installation.md +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: Installation ---- - -**The Notifications package is pre-installed with the [Panel Builder](/docs/panels).** This guide is for using the Notifications package in a custom TALL Stack application (Tailwind, Alpine, Livewire, Laravel). - -## Requirements - -Filament requires the following to run: - -- PHP 8.1+ -- Laravel v10.0+ -- Livewire v3.0+ - -> **Livewire v3 is recently released!**
    -> The Livewire team have done a great job in making it stable, but it was a complete rewrite of Livewire v2. You may encounter issues, so we recommend testing your application thoroughly before using Filament v3 in production. - -Require the Notifications package using Composer: - -```bash -composer require filament/notifications:"^3.2" -W -``` - -## New Laravel projects - -To quickly get started with Filament in a new Laravel project, run the following commands to install [Livewire](https://livewire.laravel.com), [Alpine.js](https://alpinejs.dev), and [Tailwind CSS](https://tailwindcss.com): - -> Since these commands will overwrite existing files in your application, only run this in a new Laravel project! - -```bash -php artisan filament:install --scaffold --notifications - -npm install - -npm run dev -``` - -## Existing Laravel projects - -Run the following command to install the Notifications package assets: - -```bash -php artisan filament:install --notifications -``` - -### Installing Tailwind CSS - -Run the following command to install Tailwind CSS with the Tailwind Forms and Typography plugins: - -```bash -npm install tailwindcss @tailwindcss/forms @tailwindcss/typography postcss postcss-nesting autoprefixer --save-dev -``` - -Create a new `tailwind.config.js` file and add the Filament `preset` *(includes the Filament color scheme and the required Tailwind plugins)*: - -```js -import preset from './vendor/filament/support/tailwind.config.preset' - -export default { - presets: [preset], - content: [ - './app/Filament/**/*.php', - './resources/views/filament/**/*.blade.php', - './vendor/filament/**/*.blade.php', - ], -} -``` - -### Configuring styles - -Add Tailwind's CSS layers to your `resources/css/app.css`: - -```css -@tailwind base; -@tailwind components; -@tailwind utilities; -``` - -Create a `postcss.config.js` file in the root of your project and register Tailwind CSS, PostCSS Nesting and Autoprefixer as plugins: - -```js -export default { - plugins: { - 'tailwindcss/nesting': 'postcss-nesting', - tailwindcss: {}, - autoprefixer: {}, - }, -} -``` - -### Automatically refreshing the browser -You may also want to update your `vite.config.js` file to refresh the page automatically when Livewire components are updated: - -```js -import { defineConfig } from 'vite' -import laravel, { refreshPaths } from 'laravel-vite-plugin' - -export default defineConfig({ - plugins: [ - laravel({ - input: ['resources/css/app.css', 'resources/js/app.js'], - refresh: [ - ...refreshPaths, - 'app/Livewire/**', - ], - }), - ], -}) -``` - -### Compiling assets - -Compile your new CSS and Javascript assets using `npm run dev`. - -### Configuring your layout - -Create a new `resources/views/components/layouts/app.blade.php` layout file for Livewire components: - -```blade - - - - - - - - - - {{ config('app.name') }} - - - - @filamentStyles - @vite('resources/css/app.css') - - - - {{ $slot }} - - @livewire('notifications') - - @filamentScripts - @vite('resources/js/app.js') - - -``` - -## Publishing configuration - -You can publish the package configuration using the following command (optional): - -```bash -php artisan vendor:publish --tag=filament-config -``` - -## Upgrading - -> Upgrading from Filament v2? Please review the [upgrade guide](upgrade-guide). - -Filament automatically upgrades to the latest non-breaking version when you run `composer update`. After any updates, all Laravel caches need to be cleared, and frontend assets need to be republished. You can do this all at once using the `filament:upgrade` command, which should have been added to your `composer.json` file when you ran `filament:install` the first time: - -```json -"post-autoload-dump": [ - // ... - "@php artisan filament:upgrade" -], -``` - -Please note that `filament:upgrade` does not actually handle the update process, as Composer does that already. If you're upgrading manually without a `post-autoload-dump` hook, you can run the command yourself: - -```bash -composer update - -php artisan filament:upgrade -``` diff --git a/vendor/filament/notifications/docs/02-sending-notifications.md b/vendor/filament/notifications/docs/02-sending-notifications.md deleted file mode 100644 index 2da4ab0e..00000000 --- a/vendor/filament/notifications/docs/02-sending-notifications.md +++ /dev/null @@ -1,423 +0,0 @@ ---- -title: Sending notifications ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -> To start, make sure the package is [installed](installation) - `@livewire('notifications')` should be in your Blade layout somewhere. - -Notifications are sent using a `Notification` object that's constructed through a fluent API. Calling the `send()` method on the `Notification` object will dispatch the notification and display it in your application. As the session is used to flash notifications, they can be sent from anywhere in your code, including JavaScript, not just Livewire components. - -```php -title('Saved successfully') - ->success() - ->send(); - } -} -``` - - - -## Setting a title - -The main message of the notification is shown in the title. You can set the title as follows: - -```php -use Filament\Notifications\Notification; - -Notification::make() - ->title('Saved successfully') - ->send(); -``` - -Or with JavaScript: - -```js -new FilamentNotification() - .title('Saved successfully') - .send() -``` - -## Setting an icon - -Optionally, a notification can have an [icon](https://blade-ui-kit.com/blade-icons?set=1#search) that's displayed in front of its content. You may also set a color for the icon, which is gray by default: - -```php -use Filament\Notifications\Notification; - -Notification::make() - ->title('Saved successfully') - ->icon('heroicon-o-document-text') - ->iconColor('success') - ->send(); -``` - -Or with JavaScript: - -```js -new FilamentNotification() - .title('Saved successfully') - .icon('heroicon-o-document-text') - .iconColor('success') - .send() -``` - - - -Notifications often have a status like `success`, `warning`, `danger` or `info`. Instead of manually setting the corresponding icons and colors, there's a `status()` method which you can pass the status. You may also use the dedicated `success()`, `warning()`, `danger()` and `info()` methods instead. So, cleaning up the above example would look like this: - -```php -use Filament\Notifications\Notification; - -Notification::make() - ->title('Saved successfully') - ->success() - ->send(); -``` - -Or with JavaScript: - -```js -new FilamentNotification() - .title('Saved successfully') - .success() - .send() -``` - - - -## Setting a background color - -Notifications have no background color by default. You may want to provide additional context to your notification by setting a color as follows: - -```php -use Filament\Notifications\Notification; - -Notification::make() - ->title('Saved successfully') - ->color('success') // [tl! focus] - ->send(); -``` - -Or with JavaScript: - -```js -new FilamentNotification() - .title('Saved successfully') - .color('success') // [tl! focus] - .send() -``` - - - -## Setting a duration - -By default, notifications are shown for 6 seconds before they're automatically closed. You may specify a custom duration value in milliseconds as follows: - -```php -use Filament\Notifications\Notification; - -Notification::make() - ->title('Saved successfully') - ->success() - ->duration(5000) - ->send(); -``` - -Or with JavaScript: - -```js -new FilamentNotification() - .title('Saved successfully') - .success() - .duration(5000) - .send() -``` - -If you prefer setting a duration in seconds instead of milliseconds, you can do so: - -```php -use Filament\Notifications\Notification; - -Notification::make() - ->title('Saved successfully') - ->success() - ->seconds(5) - ->send(); -``` - -Or with JavaScript: - -```js -new FilamentNotification() - .title('Saved successfully') - .success() - .seconds(5) - .send() -``` - -You might want some notifications to not automatically close and require the user to close them manually. This can be achieved by making the notification persistent: - -```php -use Filament\Notifications\Notification; - -Notification::make() - ->title('Saved successfully') - ->success() - ->persistent() - ->send(); -``` - -Or with JavaScript: - -```js -new FilamentNotification() - .title('Saved successfully') - .success() - .persistent() - .send() -``` - -## Setting body text - -Additional notification text can be shown in the `body()`: - -```php -use Filament\Notifications\Notification; - -Notification::make() - ->title('Saved successfully') - ->success() - ->body('Changes to the post have been saved.') - ->send(); -``` - -Or with JavaScript: - -```js -new FilamentNotification() - .title('Saved successfully') - .success() - .body('Changes to the post have been saved.') - .send() -``` - - - -## Adding actions to notifications - -Notifications support [Actions](../actions/trigger-button), which are buttons that render below the content of the notification. They can open a URL or dispatch a Livewire event. Actions can be defined as follows: - -```php -use Filament\Notifications\Actions\Action; -use Filament\Notifications\Notification; - -Notification::make() - ->title('Saved successfully') - ->success() - ->body('Changes to the post have been saved.') - ->actions([ - Action::make('view') - ->button(), - Action::make('undo') - ->color('gray'), - ]) - ->send(); -``` - -Or with JavaScript: - -```js -new FilamentNotification() - .title('Saved successfully') - .success() - .body('Changes to the post have been saved.') - .actions([ - new FilamentNotificationAction('view') - .button(), - new FilamentNotificationAction('undo') - .color('gray'), - ]) - .send() -``` - - - -You can learn more about how to style action buttons [here](../actions/trigger-button). - -### Opening URLs from notification actions - -You can open a URL, optionally in a new tab, when clicking on an action: - -```php -use Filament\Notifications\Actions\Action; -use Filament\Notifications\Notification; - -Notification::make() - ->title('Saved successfully') - ->success() - ->body('Changes to the post have been saved.') - ->actions([ - Action::make('view') - ->button() - ->url(route('posts.show', $post), shouldOpenInNewTab: true) - Action::make('undo') - ->color('gray'), - ]) - ->send(); -``` - -Or with JavaScript: - -```js -new FilamentNotification() - .title('Saved successfully') - .success() - .body('Changes to the post have been saved.') - .actions([ - new FilamentNotificationAction('view') - .button() - .url('/view') - .openUrlInNewTab(), - new FilamentNotificationAction('undo') - .color('gray'), - ]) - .send() -``` - -### Dispatching Livewire events from notification actions - -Sometimes you want to execute additional code when a notification action is clicked. This can be achieved by setting a Livewire event which should be dispatched on clicking the action. You may optionally pass an array of data, which will be available as parameters in the event listener on your Livewire component: - -```php -use Filament\Notifications\Actions\Action; -use Filament\Notifications\Notification; - -Notification::make() - ->title('Saved successfully') - ->success() - ->body('Changes to the post have been saved.') - ->actions([ - Action::make('view') - ->button() - ->url(route('posts.show', $post), shouldOpenInNewTab: true), - Action::make('undo') - ->color('gray') - ->dispatch('undoEditingPost', [$post->id]), - ]) - ->send(); -``` - -You can also `dispatchSelf` and `dispatchTo`: - -```php -Action::make('undo') - ->color('gray') - ->dispatchSelf('undoEditingPost', [$post->id]) - -Action::make('undo') - ->color('gray') - ->dispatchTo('another_component', 'undoEditingPost', [$post->id]) -``` - -Or with JavaScript: - -```js -new FilamentNotification() - .title('Saved successfully') - .success() - .body('Changes to the post have been saved.') - .actions([ - new FilamentNotificationAction('view') - .button() - .url('/view') - .openUrlInNewTab(), - new FilamentNotificationAction('undo') - .color('gray') - .dispatch('undoEditingPost'), - ]) - .send() -``` - -Similarly, `dispatchSelf` and `dispatchTo` are also available: - -```js -new FilamentNotificationAction('undo') - .color('gray') - .dispatchSelf('undoEditingPost') - -new FilamentNotificationAction('undo') - .color('gray') - .dispatchTo('another_component', 'undoEditingPost') -``` - -### Closing notifications from actions - -After opening a URL or dispatching an event from your action, you may want to close the notification right away: - -```php -use Filament\Notifications\Actions\Action; -use Filament\Notifications\Notification; - -Notification::make() - ->title('Saved successfully') - ->success() - ->body('Changes to the post have been saved.') - ->actions([ - Action::make('view') - ->button() - ->url(route('posts.show', $post), shouldOpenInNewTab: true), - Action::make('undo') - ->color('gray') - ->dispatch('undoEditingPost', [$post->id]) - ->close(), - ]) - ->send(); -``` - -Or with JavaScript: - -```js -new FilamentNotification() - .title('Saved successfully') - .success() - .body('Changes to the post have been saved.') - .actions([ - new FilamentNotificationAction('view') - .button() - .url('/view') - .openUrlInNewTab(), - new FilamentNotificationAction('undo') - .color('gray') - .dispatch('undoEditingPost') - .close(), - ]) - .send() -``` - -## Using the JavaScript objects - -The JavaScript objects (`FilamentNotification` and `FilamentNotificationAction`) are assigned to `window.FilamentNotification` and `window.FilamentNotificationAction`, so they are available in on-page scripts. - -You may also import them in a bundled JavaScript file: - -```js -import { Notification, NotificationAction } from '../../vendor/filament/notifications/dist/index.js' - -// ... -``` diff --git a/vendor/filament/notifications/docs/03-database-notifications.md b/vendor/filament/notifications/docs/03-database-notifications.md deleted file mode 100644 index 74dca7f3..00000000 --- a/vendor/filament/notifications/docs/03-database-notifications.md +++ /dev/null @@ -1,185 +0,0 @@ ---- -title: Database notifications ---- -import AutoScreenshot from "@components/AutoScreenshot.astro" - -## Overview - -Before we start, make sure that the [Laravel notifications table](https://laravel.com/docs/notifications#database-prerequisites) is added to your database: - -```bash -php artisan notifications:table -``` - -> If you're using PostgreSQL, make sure that the `data` column in the migration is using `json()`: `$table->json('data')`. - -> If you're using UUIDs for your `User` model, make sure that your `notifiable` column is using `uuidMorphs()`: `$table->uuidMorphs('notifiable')`. - -To add database notifications to your app, you must add a new Livewire component to your Blade layout: - -```blade -@livewire('database-notifications') -``` - - - -Database notifications will be rendered within a modal. To open this modal, you must have a "trigger" button in your view. Create a new trigger button component in your app, for instance at `/resources/views/notifications/database-notifications-trigger.blade.php`: - -```blade - -``` - -`$unreadNotificationsCount` is a variable automatically passed to this view, which provides it with a real-time count of unread notifications the user has. - -In the service provider, point to this new trigger view: - -```php -use Filament\Notifications\Livewire\DatabaseNotifications; - -DatabaseNotifications::trigger('filament-notifications.database-notifications-trigger'); -``` - -Now, click on the trigger button that is rendered in your view. A modal should appear containing your database notifications when clicked! - -## Sending database notifications - -There are several ways to send database notifications, depending on which one suits you best. - -You may use our fluent API: - -```php -use Filament\Notifications\Notification; - -$recipient = auth()->user(); - -Notification::make() - ->title('Saved successfully') - ->sendToDatabase($recipient); -``` - -Or, use the `notify()` method: - -```php -use Filament\Notifications\Notification; - -$recipient = auth()->user(); - -$recipient->notify( - Notification::make() - ->title('Saved successfully') - ->toDatabase(), -); -``` - -Alternatively, use a traditional [Laravel notification class](https://laravel.com/docs/notifications#generating-notifications) by returning the notification from the `toDatabase()` method: - -```php -use App\Models\User; -use Filament\Notifications\Notification; - -public function toDatabase(User $notifiable): array -{ - return Notification::make() - ->title('Saved successfully') - ->getDatabaseMessage(); -} -``` - -## Receiving database notifications - -Without any setup, new database notifications will only be received when the page is first loaded. - -### Polling for new database notifications - -Polling is the practice of periodically making a request to the server to check for new notifications. This is a good approach as the setup is simple, but some may say that it is not a scalable solution as it increases server load. - -By default, Livewire polls for new notifications every 30 seconds: - -```php -use Filament\Notifications\Livewire\DatabaseNotifications; - -DatabaseNotifications::databaseNotifications(); -DatabaseNotifications::databaseNotificationsPollingInterval('30s'); -``` - -You may completely disable polling if you wish: - -```php -use Filament\Notifications\Livewire\DatabaseNotifications; - -DatabaseNotifications::databaseNotifications(); -DatabaseNotifications::databaseNotificationsPollingInterval(null); -``` - -### Using Echo to receive new database notifications with websockets - -Alternatively, the package has a native integration with [Laravel Echo](https://laravel.com/docs/broadcasting#client-side-installation). Make sure Echo is installed, as well as a [server-side websockets integration](https://laravel.com/docs/broadcasting#server-side-installation) like Pusher. - -Once websockets are set up, after sending a database notification you may dispatch a `DatabaseNotificationsSent` event, which will immediately fetch new notifications for that user: - -```php -use Filament\Notifications\Events\DatabaseNotificationsSent; -use Filament\Notifications\Notification; - -$recipient = auth()->user(); - -Notification::make() - ->title('Saved successfully') - ->sendToDatabase($recipient); - -event(new DatabaseNotificationsSent($recipient)); -``` - -## Marking database notifications as read - -There is a button at the top of the modal to mark all notifications as read at once. You may also add [Actions](sending-notifications#adding-actions-to-notifications) to notifications, which you can use to mark individual notifications as read. To do this, use the `markAsRead()` method on the action: - -```php -use Filament\Notifications\Actions\Action; -use Filament\Notifications\Notification; - -Notification::make() - ->title('Saved successfully') - ->success() - ->body('Changes to the post have been saved.') - ->actions([ - Action::make('view') - ->button() - ->markAsRead(), - ]) - ->send(); -``` - -Alternatively, you may use the `markAsUnread()` method to mark a notification as unread: - -```php -use Filament\Notifications\Actions\Action; -use Filament\Notifications\Notification; - -Notification::make() - ->title('Saved successfully') - ->success() - ->body('Changes to the post have been saved.') - ->actions([ - Action::make('markAsUnread') - ->button() - ->markAsUnread(), - ]) - ->send(); -``` - -## Opening the database notifications modal - -Instead of rendering the trigger button as described above, you can always open the database notifications modal from anywhere by dispatching an `open-modal` browser event: - -```blade - -``` diff --git a/vendor/filament/notifications/docs/04-broadcast-notifications.md b/vendor/filament/notifications/docs/04-broadcast-notifications.md deleted file mode 100644 index 527d9b77..00000000 --- a/vendor/filament/notifications/docs/04-broadcast-notifications.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Broadcast notifications ---- - -## Overview - -> To start, make sure the package is [installed](installation) - `@livewire('notifications')` should be in your Blade layout somewhere. - -By default, Filament will send flash notifications via the Laravel session. However, you may wish that your notifications are "broadcast" to a user in real-time, instead. This could be used to send a temporary success notification from a queued job after it has finished processing. - -We have a native integration with [Laravel Echo](https://laravel.com/docs/broadcasting#client-side-installation). Make sure Echo is installed, as well as a [server-side websockets integration](https://laravel.com/docs/broadcasting#server-side-installation) like Pusher. - -## Sending broadcast notifications - -There are several ways to send broadcast notifications, depending on which one suits you best. - -You may use our fluent API: - -```php -use Filament\Notifications\Notification; - -$recipient = auth()->user(); - -Notification::make() - ->title('Saved successfully') - ->broadcast($recipient); -``` - -Or, use the `notify()` method: - -```php -use Filament\Notifications\Notification; - -$recipient = auth()->user(); - -$recipient->notify( - Notification::make() - ->title('Saved successfully') - ->toBroadcast(), -) -``` - -Alternatively, use a traditional [Laravel notification class](https://laravel.com/docs/notifications#generating-notifications) by returning the notification from the `toBroadcast()` method: - -```php -use App\Models\User; -use Filament\Notifications\Notification; -use Illuminate\Notifications\Messages\BroadcastMessage; - -public function toBroadcast(User $notifiable): BroadcastMessage -{ - return Notification::make() - ->title('Saved successfully') - ->getBroadcastMessage(); -} -``` diff --git a/vendor/filament/notifications/docs/05-customizing-notifications.md b/vendor/filament/notifications/docs/05-customizing-notifications.md deleted file mode 100644 index b3e0bcaa..00000000 --- a/vendor/filament/notifications/docs/05-customizing-notifications.md +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: Customizing notifications ---- - -## Overview - -Notifications come fully styled out of the box. However, if you want to apply your own styling or use a custom view to render notifications, there are multiple options. - -## Styling notifications - -Notifications have dedicated CSS classes you can hook into to apply your own styling. Open the inspector in your browser to find out which classes you need to target. - -## Positioning notifications - -You can configure the alignment of the notifications in a service provider or middleware, by calling `Notifications::alignment()` and `Notifications::verticalAlignment()`. You can pass `Alignment::Start`, `Alignment::Center`, `Alignment::End`, `VerticalAlignment::Start`, `VerticalAlignment::Center` or `VerticalAlignment::End`: - -```php -use Filament\Notifications\Livewire\Notifications; -use Filament\Support\Enums\Alignment; -use Filament\Support\Enums\VerticalAlignment; - -Notifications::alignment(Alignment::Start); -Notifications::verticalAlignment(VerticalAlignment::End); -``` - -## Using a custom notification view - -If your desired customization can't be achieved using the CSS classes above, you can create a custom view to render the notification. To configure the notification view, call the static `configureUsing()` method inside a service provider's `boot()` method and specify the view to use: - -```php -use Filament\Notifications\Notification; - -Notification::configureUsing(function (Notification $notification): void { - $notification->view('filament-notifications.notification'); -}); -``` - -Next, create the view, in this example `resources/views/notifications/notification.blade.php`. The view should use the package's base notification component for the notification functionality and pass the available `$notification` variable through the `notification` attribute. This is the bare minimum required to create your own notification view: - -```blade - - {{-- Notification content --}} - -``` - -Getters for all notification properties will be available in the view. So, a custom notification view might look like this: - -```blade - -

    - {{ $getTitle() }} -

    - -

    - {{ $getDate() }} -

    - -

    - {{ $getBody() }} -

    - - - Close - -
    -``` - -## Using a custom notification object - -Maybe your notifications require additional functionality that's not defined in the package's `Notification` class. Then you can create your own `Notification` class, which extends the package's `Notification` class. For example, your notification design might need a size property. - -Your custom `Notification` class in `app/Notifications/Notification.php` might contain: - -```php - $this->getSize(), - ]; - } - - public static function fromArray(array $data): static - { - return parent::fromArray($data)->size($data['size']); - } - - public function size(string $size): static - { - $this->size = $size; - - return $this; - } - - public function getSize(): string - { - return $this->size; - } -} -``` - -Next, you should bind your custom `Notification` class into the container inside a service provider's `register()` method: - -```php -use App\Notifications\Notification; -use Filament\Notifications\Notification as BaseNotification; - -$this->app->bind(BaseNotification::class, Notification::class); -``` - -You can now use your custom `Notification` class in the same way as you would with the default `Notification` object. diff --git a/vendor/filament/notifications/docs/06-testing.md b/vendor/filament/notifications/docs/06-testing.md deleted file mode 100644 index 8cd1da66..00000000 --- a/vendor/filament/notifications/docs/06-testing.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Testing ---- - -## Overview - -All examples in this guide will be written using [Pest](https://pestphp.com). However, you can easily adapt this to PHPUnit. - -## Testing session notifications - -To check if a notification was sent using the session, use the `assertNotified()` helper: - -```php -use function Pest\Livewire\livewire; - -it('sends a notification', function () { - livewire(CreatePost::class) - ->assertNotified(); -}); -``` - -```php -use Filament\Notifications\Notification; - -it('sends a notification', function () { - Notification::assertNotified(); -}); -``` - -```php -use function Filament\Notifications\Testing\assertNotified; - -it('sends a notification', function () { - assertNotified(); -}); -``` - -You may optionally pass a notification title to test for: - -```php -use Filament\Notifications\Notification; -use function Pest\Livewire\livewire; - -it('sends a notification', function () { - livewire(CreatePost::class) - ->assertNotified('Unable to create post'); -}); -``` - -Or test if the exact notification was sent: - -```php -use Filament\Notifications\Notification; -use function Pest\Livewire\livewire; - -it('sends a notification', function () { - livewire(CreatePost::class) - ->assertNotified( - Notification::make() - ->danger() - ->title('Unable to create post') - ->body('Something went wrong.'), - ); -}); -``` - -Conversely, you can assert that a notification was not sent: - -```php -use Filament\Notifications\Notification; -use function Pest\Livewire\livewire; - -it('does not send a notification', function () { - livewire(CreatePost::class) - ->assertNotNotified() - // or - ->assertNotNotified('Unable to create post') - // or - ->assertNotified( - Notification::make() - ->danger() - ->title('Unable to create post') - ->body('Something went wrong.'), - ); -``` diff --git a/vendor/filament/notifications/docs/07-upgrade-guide.md b/vendor/filament/notifications/docs/07-upgrade-guide.md deleted file mode 100644 index 38774a39..00000000 --- a/vendor/filament/notifications/docs/07-upgrade-guide.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Upgrading from v2.x ---- - -> If you see anything missing from this guide, please do not hesitate to [make a pull request](https://github.com/filamentphp/filament/edit/3.x/packages/notifications/docs/07-upgrade-guide.md) to our repository! Any help is appreciated! - -## New requirements - -- Laravel v10.0+ -- Livewire v3.0+ - -Please upgrade Filament before upgrading to Livewire v3. Instructions on how to upgrade Livewire can be found [here](https://livewire.laravel.com/docs/upgrading). - -> **Livewire v3 is recently released!**
    -> The Livewire team have done a great job in making it stable, but it was a complete rewrite of Livewire v2. You may encounter issues, so we recommend testing your application thoroughly before using Filament v3 in production. - -## Upgrading automatically - -The easiest way to upgrade your app is to run the automated upgrade script. This script will automatically upgrade your application to the latest version of Filament, and make changes to your code which handle most breaking changes. - -```bash -composer require filament/upgrade:"^3.2" -W --dev -vendor/bin/filament-v3 -``` - -Make sure to carefully follow the instructions, and review the changes made by the script. You may need to make some manual changes to your code afterwards, but the script should handle most of the repetitive work for you. - -Finally, you must run `php artisan filament:install` to finalize the Filament v3 installation. This command must be run for all new Filament projects. - -You can now `composer remove filament/upgrade` as you don't need it anymore. - -> Some plugins you're using may not be available in v3 just yet. You could temporarily remove them from your `composer.json` file until they've been upgraded, replace them with a similar plugins that are v3-compatible, wait for the plugins to be upgraded before upgrading your app, or even write PRs to help the authors upgrade them. - -## Upgrading manually - -After upgrading the dependency via Composer, you should execute `php artisan filament:upgrade` in order to clear any Laravel caches and publish the new frontend assets. - -### High-impact changes - -#### Config file renamed and combined with other Filament packages - -Only one config file is now used for all Filament packages. Most configuration has been moved into other parts of the codebase, and little remains. You should use the v3 documentation as a reference when replace the configuration options you did modify. To publish the new configuration file and remove the old one, run: - -```bash -php artisan vendor:publish --tag=filament-config --force -rm config/notifications.php -``` - -#### New `@filamentScripts` and `@filamentStyles` Blade directives - -The `@filamentScripts` and `@filamentStyles` Blade directives must be added to your Blade layout file/s. Since Livewire v3 no longer uses similar directives, you can replace `@livewireScripts` with `@filamentScripts` and `@livewireStyles` with `@filamentStyles`. - -#### JavaScript assets - -You no longer need to import the `NotificationsAlpinePlugin` in your JavaScript files. Alpine plugins are now automatically loaded by `@filamentScripts`. - -#### Heroicons have been updated to v2 - -The Heroicons library has been updated to v2. This means that any icons you use in your app may have changed names. You can find a list of changes [here](https://github.com/tailwindlabs/heroicons/releases/tag/v2.0.0). - -### Medium-impact changes - -#### Secondary color - -Filament v2 had a `secondary` color for many components which was gray. All references to `secondary` should be replaced with `gray` to preserve the same appearance. This frees `secondary` to be registered to a new custom color of your choice. - -#### Notification JS objects - -The `Notification` JavaScript object has been renamed to `FilamentNotification` to avoid conflicts with the native browser `Notification` object. The same has been done for `NotificationAction` (now `FilamentNotificationAction`) and `NotificationActionGroup` (now `FilamentNotificationActionGroup`) for consistency. diff --git a/vendor/filament/notifications/resources/js/Notification.js b/vendor/filament/notifications/resources/js/Notification.js deleted file mode 100644 index 26b1487a..00000000 --- a/vendor/filament/notifications/resources/js/Notification.js +++ /dev/null @@ -1,346 +0,0 @@ -import { v4 as uuid } from 'uuid-browser' - -class Notification { - constructor() { - this.id(uuid()) - - return this - } - - id(id) { - this.id = id - - return this - } - - title(title) { - this.title = title - - return this - } - - body(body) { - this.body = body - - return this - } - - actions(actions) { - this.actions = actions - - return this - } - - status(status) { - this.status = status - - return this - } - - color(color) { - this.color = color - - return this - } - - icon(icon) { - this.icon = icon - - return this - } - - iconColor(color) { - this.iconColor = color - - return this - } - - duration(duration) { - this.duration = duration - - return this - } - - seconds(seconds) { - this.duration(seconds * 1000) - - return this - } - - persistent() { - this.duration('persistent') - - return this - } - - danger() { - this.status('danger') - - return this - } - - info() { - this.status('info') - - return this - } - - success() { - this.status('success') - - return this - } - - warning() { - this.status('warning') - - return this - } - - view(view) { - this.view = view - - return this - } - - viewData(viewData) { - this.viewData = viewData - - return this - } - - send() { - window.dispatchEvent( - new CustomEvent('notificationSent', { - detail: { - notification: this, - }, - }), - ) - - return this - } -} - -class Action { - constructor(name) { - this.name(name) - - return this - } - - name(name) { - this.name = name - - return this - } - - color(color) { - this.color = color - - return this - } - - dispatch(event, data) { - this.event(event) - this.eventData(data) - - return this - } - - dispatchSelf(event, data) { - this.dispatch(event, data) - this.dispatchDirection = 'self' - - return this - } - - dispatchTo(component, event, data) { - this.dispatch(event, data) - this.dispatchDirection = 'to' - this.dispatchToComponent = component - - return this - } - - /** - * @deprecated Use `dispatch()` instead. - */ - emit(event, data) { - this.dispatch(event, data) - - return this - } - - /** - * @deprecated Use `dispatchSelf()` instead. - */ - emitSelf(event, data) { - this.dispatchSelf(event, data) - - return this - } - - /** - * @deprecated Use `dispatchTo()` instead. - */ - emitTo(component, event, data) { - this.dispatchTo(component, event, data) - - return this - } - - dispatchDirection(dispatchDirection) { - this.dispatchDirection = dispatchDirection - - return this - } - - dispatchToComponent(component) { - this.dispatchToComponent = component - - return this - } - - event(event) { - this.event = event - - return this - } - - eventData(data) { - this.eventData = data - - return this - } - - extraAttributes(attributes) { - this.extraAttributes = attributes - - return this - } - - icon(icon) { - this.icon = icon - - return this - } - - iconPosition(position) { - this.iconPosition = position - - return this - } - - outlined(condition = true) { - this.isOutlined = condition - - return this - } - - disabled(condition = true) { - this.isDisabled = condition - - return this - } - - label(label) { - this.label = label - - return this - } - - close(condition = true) { - this.shouldClose = condition - - return this - } - - openUrlInNewTab(condition = true) { - this.shouldOpenUrlInNewTab = condition - - return this - } - - size(size) { - this.size = size - - return this - } - - url(url) { - this.url = url - - return this - } - - view(view) { - this.view = view - - return this - } - - button() { - this.view('filament-notifications::actions.button-action') - - return this - } - - grouped() { - this.view('filament-notifications::actions.grouped-action') - - return this - } - - link() { - this.view('filament-notifications::actions.link-action') - - return this - } -} - -class ActionGroup { - constructor(actions) { - this.actions(actions) - - return this - } - - actions(actions) { - this.actions = actions.map((action) => action.grouped()) - - return this - } - - color(color) { - this.color = color - - return this - } - - icon(icon) { - this.icon = icon - - return this - } - - iconPosition(position) { - this.iconPosition = position - - return this - } - - label(label) { - this.label = label - - return this - } - - tooltip(tooltip) { - this.tooltip = tooltip - - return this - } -} - -export { Action, ActionGroup, Notification } diff --git a/vendor/filament/notifications/resources/js/components/notification.js b/vendor/filament/notifications/resources/js/components/notification.js deleted file mode 100644 index d33a28af..00000000 --- a/vendor/filament/notifications/resources/js/components/notification.js +++ /dev/null @@ -1,154 +0,0 @@ -import { once } from 'alpinejs/src/utils/once' - -export default (Alpine) => { - Alpine.data('notificationComponent', ({ notification }) => ({ - isShown: false, - - computedStyle: null, - - transitionDuration: null, - - transitionEasing: null, - - init: function () { - this.computedStyle = window.getComputedStyle(this.$el) - - this.transitionDuration = - parseFloat(this.computedStyle.transitionDuration) * 1000 - - this.transitionEasing = this.computedStyle.transitionTimingFunction - - this.configureTransitions() - this.configureAnimations() - - if ( - notification.duration && - notification.duration !== 'persistent' - ) { - setTimeout(() => this.close(), notification.duration) - } - - this.isShown = true - }, - - configureTransitions: function () { - const display = this.computedStyle.display - - const show = () => { - Alpine.mutateDom(() => { - this.$el.style.setProperty('display', display) - this.$el.style.setProperty('visibility', 'visible') - }) - this.$el._x_isShown = true - } - - const hide = () => { - Alpine.mutateDom(() => { - this.$el._x_isShown - ? this.$el.style.setProperty('visibility', 'hidden') - : this.$el.style.setProperty('display', 'none') - }) - } - - const toggle = once( - (value) => (value ? show() : hide()), - (value) => { - this.$el._x_toggleAndCascadeWithTransitions( - this.$el, - value, - show, - hide, - ) - }, - ) - - Alpine.effect(() => toggle(this.isShown)) - }, - - configureAnimations: function () { - let animation - - Livewire.hook( - 'commit', - ({ component, commit, succeed, fail, respond }) => { - if ( - !component.snapshot.data - .isFilamentNotificationsComponent - ) { - return - } - - const getTop = () => this.$el.getBoundingClientRect().top - const oldTop = getTop() - - respond(() => { - animation = () => { - if (!this.isShown) { - return - } - - this.$el.animate( - [ - { - transform: `translateY(${ - oldTop - getTop() - }px)`, - }, - { transform: 'translateY(0px)' }, - ], - { - duration: this.transitionDuration, - easing: this.transitionEasing, - }, - ) - } - - this.$el - .getAnimations() - .forEach((animation) => animation.finish()) - }) - - succeed(({ snapshot, effect }) => { - animation() - }) - }, - ) - }, - - close: function () { - this.isShown = false - - setTimeout( - () => - window.dispatchEvent( - new CustomEvent('notificationClosed', { - detail: { - id: notification.id, - }, - }), - ), - this.transitionDuration, - ) - }, - - markAsRead: function () { - window.dispatchEvent( - new CustomEvent('markedNotificationAsRead', { - detail: { - id: notification.id, - }, - }), - ) - }, - - markAsUnread: function () { - window.dispatchEvent( - new CustomEvent('markedNotificationAsUnread', { - detail: { - id: notification.id, - }, - }), - ) - }, - })) -} diff --git a/vendor/filament/notifications/resources/js/index.js b/vendor/filament/notifications/resources/js/index.js deleted file mode 100644 index f914a4dc..00000000 --- a/vendor/filament/notifications/resources/js/index.js +++ /dev/null @@ -1,14 +0,0 @@ -import NotificationComponentAlpinePlugin from './components/notification' -import { - Action as NotificationAction, - ActionGroup as NotificationActionGroup, - Notification, -} from './Notification' - -window.FilamentNotificationAction = NotificationAction -window.FilamentNotificationActionGroup = NotificationActionGroup -window.FilamentNotification = Notification - -document.addEventListener('alpine:init', () => { - window.Alpine.plugin(NotificationComponentAlpinePlugin) -}) diff --git a/vendor/filament/notifications/resources/lang/ar/database.php b/vendor/filament/notifications/resources/lang/ar/database.php deleted file mode 100644 index 4b984449..00000000 --- a/vendor/filament/notifications/resources/lang/ar/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'التنبيهات', - - 'actions' => [ - - 'clear' => [ - 'label' => 'مسح', - ], - - 'mark_all_as_read' => [ - 'label' => 'تحديد الكل كمقروء', - ], - - ], - - 'empty' => [ - 'heading' => 'لا توجد تنبيهات', - 'description' => 'يرجى التحقق مرة أخرى لاحقاً.', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/az/database.php b/vendor/filament/notifications/resources/lang/az/database.php deleted file mode 100644 index 4e7d27cf..00000000 --- a/vendor/filament/notifications/resources/lang/az/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Bildirişlər', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Təmizlə', - ], - - 'mark_all_as_read' => [ - 'label' => 'Hamısını oxunub olaraq qeyd et', - ], - - ], - - 'empty' => [ - 'heading' => 'Bildiriş yoxdur', - 'description' => 'Zəhmət olmazsa sonra yoxlayın', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/bn/database.php b/vendor/filament/notifications/resources/lang/bn/database.php deleted file mode 100644 index 8f4ef94e..00000000 --- a/vendor/filament/notifications/resources/lang/bn/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'বিজ্ঞপ্তি', - - 'actions' => [ - - 'clear' => [ - 'label' => 'পরিষ্কার', - ], - - 'mark_all_as_read' => [ - 'label' => 'পড়া হয়েছে', - ], - - ], - - 'empty' => [ - 'heading' => 'কোন বিজ্ঞপ্তি নেই', - 'description' => 'পরে আবার চেষ্টা করুন', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/bs/database.php b/vendor/filament/notifications/resources/lang/bs/database.php deleted file mode 100644 index 0afc4557..00000000 --- a/vendor/filament/notifications/resources/lang/bs/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Obavijesti', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Izbrišite sve', - ], - - 'mark_all_as_read' => [ - 'label' => 'Označi sve kao pročitano ', - ], - - ], - - 'empty' => [ - 'heading' => 'Nema obavijesti', - 'description' => 'Molimo provjerite kasnije opet', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/ca/database.php b/vendor/filament/notifications/resources/lang/ca/database.php deleted file mode 100644 index cee756b6..00000000 --- a/vendor/filament/notifications/resources/lang/ca/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Notificacions', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Netejar', - ], - - 'mark_all_as_read' => [ - 'label' => 'Marcar tot com a llegit', - ], - - ], - - 'empty' => [ - 'heading' => 'Sense notificacions', - 'description' => 'Si us plau, torna a comprovar-ho més tard.', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/ckb/database.php b/vendor/filament/notifications/resources/lang/ckb/database.php deleted file mode 100644 index da667b32..00000000 --- a/vendor/filament/notifications/resources/lang/ckb/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'ئاگانامەکان', - - 'actions' => [ - - 'clear' => [ - 'label' => 'سرینەوەی هەموو', - ], - - 'mark_all_as_read' => [ - 'label' => 'نیشانە کردنی هەموو بۆ خوێنراوە', - ], - - ], - - 'empty' => [ - 'heading' => 'هیچ ئاگانامەیەک نییە', - 'description' => 'تکایە دواتر سەردان بکە', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/cs/database.php b/vendor/filament/notifications/resources/lang/cs/database.php deleted file mode 100644 index db09438b..00000000 --- a/vendor/filament/notifications/resources/lang/cs/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Moje aktualizace', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Odstranit', - ], - - 'mark_all_as_read' => [ - 'label' => 'Označit vše jako přečtené', - ], - - ], - - 'empty' => [ - 'heading' => 'Nemáme pro vás žádné aktulizace', - 'description' => 'Zkuste to prosím později', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/cy/database.php b/vendor/filament/notifications/resources/lang/cy/database.php deleted file mode 100644 index 0cf18a3a..00000000 --- a/vendor/filament/notifications/resources/lang/cy/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Hysbysiadau', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Clirio', - ], - - 'mark_all_as_read' => [ - 'label' => 'Nodi pob un fel ‘wedi darllen’', - ], - - ], - - 'empty' => [ - 'heading' => 'Dim hysbysiad yma', - 'description' => 'Gwiriwch eto nes ymlaen', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/da/database.php b/vendor/filament/notifications/resources/lang/da/database.php deleted file mode 100644 index 5c27d442..00000000 --- a/vendor/filament/notifications/resources/lang/da/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Notifikationer', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Ryd', - ], - - 'mark_all_as_read' => [ - 'label' => 'Markér alle som læst', - ], - - ], - - 'empty' => [ - 'heading' => 'Ingen notifikationer', - 'description' => 'Tjek venligst igen senere', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/de/database.php b/vendor/filament/notifications/resources/lang/de/database.php deleted file mode 100644 index d2c84cf4..00000000 --- a/vendor/filament/notifications/resources/lang/de/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Benachrichtigungen', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Alle löschen', - ], - - 'mark_all_as_read' => [ - 'label' => 'Alle als gelesen markieren', - ], - - ], - - 'empty' => [ - 'heading' => 'Keine Benachrichtigungen vorhanden', - 'description' => 'Bitte schauen Sie später erneut vorbei', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/el/database.php b/vendor/filament/notifications/resources/lang/el/database.php deleted file mode 100644 index 3c9b1a92..00000000 --- a/vendor/filament/notifications/resources/lang/el/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Ειδοποιήσεις', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Καθαρισμός', - ], - - 'mark_all_as_read' => [ - 'label' => 'Επισήμανση όλων ως αναγνωσμένων', - ], - - ], - - 'empty' => [ - 'heading' => 'Δεν υπάρχουν νέες ειδοποιήσεις', - 'description' => 'Ελέγξτε ξανά αργότερα.', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/en/database.php b/vendor/filament/notifications/resources/lang/en/database.php deleted file mode 100644 index ddf9c20b..00000000 --- a/vendor/filament/notifications/resources/lang/en/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Notifications', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Clear', - ], - - 'mark_all_as_read' => [ - 'label' => 'Mark all as read', - ], - - ], - - 'empty' => [ - 'heading' => 'No notifications', - 'description' => 'Please check again later.', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/es/database.php b/vendor/filament/notifications/resources/lang/es/database.php deleted file mode 100644 index 30033c14..00000000 --- a/vendor/filament/notifications/resources/lang/es/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Notificaciones', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Borrar', - ], - - 'mark_all_as_read' => [ - 'label' => 'Marcar todas como leídas', - ], - - ], - - 'empty' => [ - 'heading' => 'No hay notificaciones', - 'description' => 'Por favor, compruebe más tarde', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/eu/database.php b/vendor/filament/notifications/resources/lang/eu/database.php deleted file mode 100644 index 850fd9de..00000000 --- a/vendor/filament/notifications/resources/lang/eu/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Jakinarazpenak', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Ezabatu', - ], - - 'mark_all_as_read' => [ - 'label' => 'Denak irakurrita bezala markatu', - ], - - ], - - 'empty' => [ - 'heading' => 'Ez dago jakinarazpenik', - 'description' => 'Mesedez, egiaztatu geroago', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/fa/database.php b/vendor/filament/notifications/resources/lang/fa/database.php deleted file mode 100644 index 072128d8..00000000 --- a/vendor/filament/notifications/resources/lang/fa/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'پیام‌ها', - - 'actions' => [ - - 'clear' => [ - 'label' => 'پاک کردن', - ], - - 'mark_all_as_read' => [ - 'label' => 'علامت‌گذاری همه به عنوان خوانده‌شده', - ], - - ], - - 'empty' => [ - 'heading' => 'شما پیامی ندارید', - 'description' => 'لطفا بعدا مراجعه کنید', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/fi/database.php b/vendor/filament/notifications/resources/lang/fi/database.php deleted file mode 100644 index 7b98e3d9..00000000 --- a/vendor/filament/notifications/resources/lang/fi/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Ilmoitukset', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Tyhjennä', - ], - - 'mark_all_as_read' => [ - 'label' => 'Merkitse luetuiksi', - ], - - ], - - 'empty' => [ - 'heading' => 'Ei ilmoituksia', - 'description' => 'Tarkista myöhemmin uudestaan', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/fr/database.php b/vendor/filament/notifications/resources/lang/fr/database.php deleted file mode 100644 index cd8cfc9b..00000000 --- a/vendor/filament/notifications/resources/lang/fr/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Notifications', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Effacer', - ], - - 'mark_all_as_read' => [ - 'label' => 'Tout marquer comme lu', - ], - - ], - - 'empty' => [ - 'heading' => 'Aucune notification', - 'description' => 'Veuillez revérifier ultérieurement', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/he/database.php b/vendor/filament/notifications/resources/lang/he/database.php deleted file mode 100644 index befbcc9a..00000000 --- a/vendor/filament/notifications/resources/lang/he/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'התראות', - - 'actions' => [ - - 'clear' => [ - 'label' => 'נקה', - ], - - 'mark_all_as_read' => [ - 'label' => 'סמך הכל כנקרא', - ], - - ], - - 'empty' => [ - 'heading' => 'אין התראות', - 'description' => 'נסה שנית מאוחר יותר', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/hr/database.php b/vendor/filament/notifications/resources/lang/hr/database.php deleted file mode 100644 index f41362e6..00000000 --- a/vendor/filament/notifications/resources/lang/hr/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Obavijesti', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Očisti', - ], - - 'mark_all_as_read' => [ - 'label' => 'Označi sve kao pročitano', - ], - - ], - - 'empty' => [ - 'heading' => 'Nema obavijesti', - 'description' => 'Molim provjerite ponovno kasnije.', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/hu/database.php b/vendor/filament/notifications/resources/lang/hu/database.php deleted file mode 100644 index c5eed1b7..00000000 --- a/vendor/filament/notifications/resources/lang/hu/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Értesítések', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Törlés', - ], - - 'mark_all_as_read' => [ - 'label' => 'Összes olvasottnak jelölése', - ], - - ], - - 'empty' => [ - 'heading' => 'Nincsenek értesítések', - 'description' => 'Kérjük, hogy nézz vissza később.', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/id/database.php b/vendor/filament/notifications/resources/lang/id/database.php deleted file mode 100644 index 1b3e2911..00000000 --- a/vendor/filament/notifications/resources/lang/id/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Notifikasi', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Bersihkan', - ], - - 'mark_all_as_read' => [ - 'label' => 'Tandai semua sudah dibaca', - ], - - ], - - 'empty' => [ - 'heading' => 'Tidak ada notifikasi', - 'description' => 'Silakan periksa kembali nanti', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/it/database.php b/vendor/filament/notifications/resources/lang/it/database.php deleted file mode 100644 index ae6c28cb..00000000 --- a/vendor/filament/notifications/resources/lang/it/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Notifiche', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Pulisci', - ], - - 'mark_all_as_read' => [ - 'label' => 'Imposta tutto come letto', - ], - - ], - - 'empty' => [ - 'heading' => 'Nessuna notifica', - 'description' => 'Si prega di controllare più tardi', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/ja/database.php b/vendor/filament/notifications/resources/lang/ja/database.php deleted file mode 100644 index fbd21a1a..00000000 --- a/vendor/filament/notifications/resources/lang/ja/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => '通知', - - 'actions' => [ - - 'clear' => [ - 'label' => 'クリア', - ], - - 'mark_all_as_read' => [ - 'label' => 'すべて既読にする', - ], - - ], - - 'empty' => [ - 'heading' => '通知はありません', - 'description' => 'のちほど確認してください', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/km/database.php b/vendor/filament/notifications/resources/lang/km/database.php deleted file mode 100644 index 3d8621e4..00000000 --- a/vendor/filament/notifications/resources/lang/km/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'ដំណឹង', - - 'actions' => [ - - 'clear' => [ - 'label' => 'សំអាត', - ], - - 'mark_all_as_read' => [ - 'label' => 'សម្គាល់ថាបានអានទាំងអស់ហើយ', - ], - - ], - - 'empty' => [ - 'heading' => 'គ្នានដំណឹង', - 'description' => 'សូមពិនិត្យម្តងទៀតនៅពេលក្រោយ.', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/ko/database.php b/vendor/filament/notifications/resources/lang/ko/database.php deleted file mode 100644 index 9c689d6b..00000000 --- a/vendor/filament/notifications/resources/lang/ko/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => '알림', - - 'actions' => [ - - 'clear' => [ - 'label' => '전체 삭제', - ], - - 'mark_all_as_read' => [ - 'label' => '모두 읽음으로 표시', - ], - - ], - - 'empty' => [ - 'heading' => '알림 없음', - 'description' => '나중에 다시 확인해 주세요.', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/ku/database.php b/vendor/filament/notifications/resources/lang/ku/database.php deleted file mode 100644 index da667b32..00000000 --- a/vendor/filament/notifications/resources/lang/ku/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'ئاگانامەکان', - - 'actions' => [ - - 'clear' => [ - 'label' => 'سرینەوەی هەموو', - ], - - 'mark_all_as_read' => [ - 'label' => 'نیشانە کردنی هەموو بۆ خوێنراوە', - ], - - ], - - 'empty' => [ - 'heading' => 'هیچ ئاگانامەیەک نییە', - 'description' => 'تکایە دواتر سەردان بکە', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/lt/database.php b/vendor/filament/notifications/resources/lang/lt/database.php deleted file mode 100644 index fd390448..00000000 --- a/vendor/filament/notifications/resources/lang/lt/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Pranešimai', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Išvalyti', - ], - - 'mark_all_as_read' => [ - 'label' => 'Pažymėti visus kaip perskaitytus', - ], - - ], - - 'empty' => [ - 'heading' => 'Nėra pranešimų', - 'description' => 'Patikrinkite vėliau.', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/lv/database.php b/vendor/filament/notifications/resources/lang/lv/database.php deleted file mode 100644 index f87487bc..00000000 --- a/vendor/filament/notifications/resources/lang/lv/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Paziņojumi', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Nodzēst', - ], - - 'mark_all_as_read' => [ - 'label' => 'Atzīmēt visus kā izlasītus', - ], - - ], - - 'empty' => [ - 'heading' => 'Nav jaunu paziņojumu', - 'description' => 'Lūdzu, skatiet vēlāk', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/ms/database.php b/vendor/filament/notifications/resources/lang/ms/database.php deleted file mode 100644 index 39aae486..00000000 --- a/vendor/filament/notifications/resources/lang/ms/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Pemberitahuan', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Hapus', - ], - - 'mark_all_as_read' => [ - 'label' => 'Tandai semua sebagai dibaca', - ], - - ], - - 'empty' => [ - 'heading' => 'Tiada pemberitahuan di sini', - 'description' => 'Sila semak semula kemudian', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/nl/database.php b/vendor/filament/notifications/resources/lang/nl/database.php deleted file mode 100644 index 12b4db99..00000000 --- a/vendor/filament/notifications/resources/lang/nl/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Meldingen', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Wissen', - ], - - 'mark_all_as_read' => [ - 'label' => 'Alles als gelezen markeren', - ], - - ], - - 'empty' => [ - 'heading' => 'Geen meldingen', - 'description' => 'Kijk later nog eens.', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/no/database.php b/vendor/filament/notifications/resources/lang/no/database.php deleted file mode 100644 index c1811128..00000000 --- a/vendor/filament/notifications/resources/lang/no/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Varsler', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Tøm', - ], - - 'mark_all_as_read' => [ - 'label' => 'Merk alle som lest', - ], - - ], - - 'empty' => [ - 'heading' => 'Ingen varsler', - 'description' => 'Vennligst sjekk senere.', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/np/database.php b/vendor/filament/notifications/resources/lang/np/database.php deleted file mode 100644 index e6d2c96c..00000000 --- a/vendor/filament/notifications/resources/lang/np/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'सूचनाहरू', - - 'actions' => [ - - 'clear' => [ - 'label' => 'खाली गर्नुहोस्', - ], - - 'mark_all_as_read' => [ - 'label' => 'सबै पढेको रूपमा चिन्ह लगाउनुहोस्', - ], - - ], - - 'empty' => [ - 'heading' => 'कुनै सूचना छैन', - 'description' => 'कृपया पछि फेरि जाँच गर्नुहोस्।', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/pl/database.php b/vendor/filament/notifications/resources/lang/pl/database.php deleted file mode 100644 index 30c2dfc2..00000000 --- a/vendor/filament/notifications/resources/lang/pl/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Powiadomienia', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Wyczyść', - ], - - 'mark_all_as_read' => [ - 'label' => 'Oznacz wszystkie jako przeczytane', - ], - - ], - - 'empty' => [ - 'heading' => 'Brak powiadomień', - 'description' => 'Zajrzyj ponownie później', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/pt_BR/database.php b/vendor/filament/notifications/resources/lang/pt_BR/database.php deleted file mode 100644 index 974351e6..00000000 --- a/vendor/filament/notifications/resources/lang/pt_BR/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Notificações', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Limpar', - ], - - 'mark_all_as_read' => [ - 'label' => 'Marcar tudo como lido', - ], - - ], - - 'empty' => [ - 'heading' => 'Sem notificações', - 'description' => 'Por favor, verifique mais tarde.', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/pt_PT/database.php b/vendor/filament/notifications/resources/lang/pt_PT/database.php deleted file mode 100644 index 974351e6..00000000 --- a/vendor/filament/notifications/resources/lang/pt_PT/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Notificações', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Limpar', - ], - - 'mark_all_as_read' => [ - 'label' => 'Marcar tudo como lido', - ], - - ], - - 'empty' => [ - 'heading' => 'Sem notificações', - 'description' => 'Por favor, verifique mais tarde.', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/ro/database.php b/vendor/filament/notifications/resources/lang/ro/database.php deleted file mode 100644 index a6cc4ef1..00000000 --- a/vendor/filament/notifications/resources/lang/ro/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Notificări', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Ștergere', - ], - - 'mark_all_as_read' => [ - 'label' => 'Marchează totul ca fiind citit', - ], - - ], - - 'empty' => [ - 'heading' => 'Nu există notificări', - 'description' => 'Vă rugăm să verificați din nou mai târziu', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/ru/database.php b/vendor/filament/notifications/resources/lang/ru/database.php deleted file mode 100644 index ad778013..00000000 --- a/vendor/filament/notifications/resources/lang/ru/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Уведомления', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Удалить', - ], - - 'mark_all_as_read' => [ - 'label' => 'Отметить как прочитанное', - ], - - ], - - 'empty' => [ - 'heading' => 'Нет уведомлений', - 'description' => 'Пожалуйста, проверьте позже', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/sk/database.php b/vendor/filament/notifications/resources/lang/sk/database.php deleted file mode 100644 index 2b24642a..00000000 --- a/vendor/filament/notifications/resources/lang/sk/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Notifikácie', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Odstrániť', - ], - - 'mark_all_as_read' => [ - 'label' => 'Označiť všetko ako prečítané', - ], - - ], - - 'empty' => [ - 'heading' => 'Žiadne notifikácie', - 'description' => 'Skúste to prosím neskôr.', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/sq/database.php b/vendor/filament/notifications/resources/lang/sq/database.php deleted file mode 100644 index 47722d86..00000000 --- a/vendor/filament/notifications/resources/lang/sq/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Njoftimet', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Pastro', - ], - - 'mark_all_as_read' => [ - 'label' => 'Shënoni të gjitha si të lexuara', - ], - - ], - - 'empty' => [ - 'heading' => 'Nuk ka njoftime', - 'description' => 'Ju lutemi kontrolloni përsëri më vonë.', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/sv/database.php b/vendor/filament/notifications/resources/lang/sv/database.php deleted file mode 100644 index fdd9b89c..00000000 --- a/vendor/filament/notifications/resources/lang/sv/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Notiser', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Rensa', - ], - - 'mark_all_as_read' => [ - 'label' => 'Markera alla som lästa', - ], - - ], - - 'empty' => [ - 'heading' => 'Inga notiser', - 'description' => 'Kolla igen lite senare.', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/sw/database.php b/vendor/filament/notifications/resources/lang/sw/database.php deleted file mode 100644 index dc485e04..00000000 --- a/vendor/filament/notifications/resources/lang/sw/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Arifa', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Safisha', - ], - - 'mark_all_as_read' => [ - 'label' => 'Weka alama zote kama zimesomwa', - ], - - ], - - 'empty' => [ - 'heading' => 'Hakuna arifa hapa', - 'description' => 'Tafadhali angalia tena baadae', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/tr/database.php b/vendor/filament/notifications/resources/lang/tr/database.php deleted file mode 100644 index fd1cb2c8..00000000 --- a/vendor/filament/notifications/resources/lang/tr/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Bildirimler', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Temizle', - ], - - 'mark_all_as_read' => [ - 'label' => 'Tümünü okundu işaretle', - ], - - ], - - 'empty' => [ - 'heading' => 'Bildirim yok', - 'description' => 'Lütfen sonra kontrol ediniz', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/uk/database.php b/vendor/filament/notifications/resources/lang/uk/database.php deleted file mode 100644 index be788564..00000000 --- a/vendor/filament/notifications/resources/lang/uk/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Сповіщення', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Видалити', - ], - - 'mark_all_as_read' => [ - 'label' => 'Позначити як прочитане', - ], - - ], - - 'empty' => [ - 'heading' => 'Немає повідомлень', - 'description' => 'Будь ласка, перевірте пізніше', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/uz/database.php b/vendor/filament/notifications/resources/lang/uz/database.php deleted file mode 100644 index 50522d30..00000000 --- a/vendor/filament/notifications/resources/lang/uz/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Bildirishnomalar', - - 'actions' => [ - - 'clear' => [ - 'label' => 'O\'chirish', - ], - - 'mark_all_as_read' => [ - 'label' => 'O\'qilgan deb belgilash', - ], - - ], - - 'empty' => [ - 'heading' => 'Bildirishnomalar mavjud emas', - 'description' => 'Iltimos keyinroq tekshiring', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/vi/database.php b/vendor/filament/notifications/resources/lang/vi/database.php deleted file mode 100644 index a7b0d95d..00000000 --- a/vendor/filament/notifications/resources/lang/vi/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => 'Thông báo', - - 'actions' => [ - - 'clear' => [ - 'label' => 'Xóa', - ], - - 'mark_all_as_read' => [ - 'label' => 'Đánh dấu tất cả là đã đọc', - ], - - ], - - 'empty' => [ - 'heading' => 'Không có thông báo', - 'description' => 'Vui lòng kiểm tra lại sau.', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/lang/zh_CN/database.php b/vendor/filament/notifications/resources/lang/zh_CN/database.php deleted file mode 100644 index 1d97d7f9..00000000 --- a/vendor/filament/notifications/resources/lang/zh_CN/database.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - - 'heading' => '通知', - - 'actions' => [ - - 'clear' => [ - 'label' => '清除', - ], - - 'mark_all_as_read' => [ - 'label' => '标记为已读', - ], - - ], - - 'empty' => [ - 'heading' => '没有通知', - 'description' => '请稍后再查看。', - ], - - ], - -]; diff --git a/vendor/filament/notifications/resources/views/components/actions.blade.php b/vendor/filament/notifications/resources/views/components/actions.blade.php deleted file mode 100644 index 44bfbd93..00000000 --- a/vendor/filament/notifications/resources/views/components/actions.blade.php +++ /dev/null @@ -1,11 +0,0 @@ -@props([ - 'actions', -]) - -
    class(['fi-no-notification-actions flex gap-x-3']) }} -> - @foreach ($actions as $action) - {{ $action }} - @endforeach -
    diff --git a/vendor/filament/notifications/resources/views/components/body.blade.php b/vendor/filament/notifications/resources/views/components/body.blade.php deleted file mode 100644 index 075c7445..00000000 --- a/vendor/filament/notifications/resources/views/components/body.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -
    class(['fi-no-notification-body overflow-hidden break-words text-sm text-gray-500 dark:text-gray-400']) }} -> - {{ $slot }} -
    diff --git a/vendor/filament/notifications/resources/views/components/close-button.blade.php b/vendor/filament/notifications/resources/views/components/close-button.blade.php deleted file mode 100644 index 56abec21..00000000 --- a/vendor/filament/notifications/resources/views/components/close-button.blade.php +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/vendor/filament/notifications/resources/views/components/database/echo.blade.php b/vendor/filament/notifications/resources/views/components/database/echo.blade.php deleted file mode 100644 index e3126f65..00000000 --- a/vendor/filament/notifications/resources/views/components/database/echo.blade.php +++ /dev/null @@ -1,19 +0,0 @@ -@props([ - 'channel', -]) - -
    diff --git a/vendor/filament/notifications/resources/views/components/database/modal/actions.blade.php b/vendor/filament/notifications/resources/views/components/database/modal/actions.blade.php deleted file mode 100644 index 2f058146..00000000 --- a/vendor/filament/notifications/resources/views/components/database/modal/actions.blade.php +++ /dev/null @@ -1,27 +0,0 @@ -@props([ - 'notifications', - 'unreadNotificationsCount', -]) - -
    class('mt-2 flex gap-x-3') }}> - @if ($unreadNotificationsCount) - - {{ __('filament-notifications::database.modal.actions.mark_all_as_read.label') }} - - @endif - - - {{ __('filament-notifications::database.modal.actions.clear.label') }} - -
    diff --git a/vendor/filament/notifications/resources/views/components/database/modal/heading.blade.php b/vendor/filament/notifications/resources/views/components/database/modal/heading.blade.php deleted file mode 100644 index 7a91585f..00000000 --- a/vendor/filament/notifications/resources/views/components/database/modal/heading.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -@props([ - 'unreadNotificationsCount', -]) - - - - {{ __('filament-notifications::database.modal.heading') }} - - @if ($unreadNotificationsCount) - - {{ $unreadNotificationsCount }} - - @endif - - diff --git a/vendor/filament/notifications/resources/views/components/database/modal/index.blade.php b/vendor/filament/notifications/resources/views/components/database/modal/index.blade.php deleted file mode 100644 index 83e113cd..00000000 --- a/vendor/filament/notifications/resources/views/components/database/modal/index.blade.php +++ /dev/null @@ -1,64 +0,0 @@ -@props([ - 'notifications', - 'unreadNotificationsCount', -]) - -@php - use Filament\Support\Enums\Alignment; - - $hasNotifications = $notifications->count(); - $isPaginated = $notifications instanceof \Illuminate\Contracts\Pagination\Paginator && $notifications->hasPages(); -@endphp - - - @if ($hasNotifications) - -
    - - - -
    -
    - -
    ! $isPaginated, - 'border-b border-gray-200 dark:border-white/10' => $isPaginated, - ]) - > - @foreach ($notifications as $notification) -
    $notification->unread(), - ]) - > - {{ $this->getNotification($notification)->inline() }} -
    - @endforeach -
    - - @if ($isPaginated) - - - - @endif - @endif -
    diff --git a/vendor/filament/notifications/resources/views/components/database/trigger.blade.php b/vendor/filament/notifications/resources/views/components/database/trigger.blade.php deleted file mode 100644 index 9ff38ca0..00000000 --- a/vendor/filament/notifications/resources/views/components/database/trigger.blade.php +++ /dev/null @@ -1,7 +0,0 @@ -
    class(['inline-block']) }} -> - {{ $slot }} -
    diff --git a/vendor/filament/notifications/resources/views/components/date.blade.php b/vendor/filament/notifications/resources/views/components/date.blade.php deleted file mode 100644 index d9e425d3..00000000 --- a/vendor/filament/notifications/resources/views/components/date.blade.php +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/vendor/filament/notifications/resources/views/components/echo.blade.php b/vendor/filament/notifications/resources/views/components/echo.blade.php deleted file mode 100644 index b9dfa938..00000000 --- a/vendor/filament/notifications/resources/views/components/echo.blade.php +++ /dev/null @@ -1,19 +0,0 @@ -@props([ - 'channel', -]) - -
    diff --git a/vendor/filament/notifications/resources/views/components/icon.blade.php b/vendor/filament/notifications/resources/views/components/icon.blade.php deleted file mode 100644 index 0c8428e6..00000000 --- a/vendor/filament/notifications/resources/views/components/icon.blade.php +++ /dev/null @@ -1,36 +0,0 @@ -@php - use Filament\Support\Enums\IconSize; -@endphp - -@props([ - 'color' => 'gray', - 'icon', - 'size' => IconSize::Large, -]) - - diff --git a/vendor/filament/notifications/resources/views/components/notification.blade.php b/vendor/filament/notifications/resources/views/components/notification.blade.php deleted file mode 100644 index 902078d3..00000000 --- a/vendor/filament/notifications/resources/views/components/notification.blade.php +++ /dev/null @@ -1,16 +0,0 @@ -@props([ - 'notification', -]) - -
    merge([ - 'wire:key' => "{$this->getId()}.notifications.{$notification->getId()}", - ], escape: false) - ->class(['pointer-events-auto invisible']) - }} -> - {{ $slot }} -
    diff --git a/vendor/filament/notifications/resources/views/components/title.blade.php b/vendor/filament/notifications/resources/views/components/title.blade.php deleted file mode 100644 index 95457df5..00000000 --- a/vendor/filament/notifications/resources/views/components/title.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -

    class(['fi-no-notification-title text-sm font-medium text-gray-950 dark:text-white']) }} -> - {{ $slot }} -

    diff --git a/vendor/filament/notifications/resources/views/database-notifications.blade.php b/vendor/filament/notifications/resources/views/database-notifications.blade.php deleted file mode 100644 index c03b24e8..00000000 --- a/vendor/filament/notifications/resources/views/database-notifications.blade.php +++ /dev/null @@ -1,28 +0,0 @@ -@php - $notifications = $this->getNotifications(); - $unreadNotificationsCount = $this->getUnreadNotificationsCount(); -@endphp - -
    getPollingInterval()) - wire:poll.{{ $pollingInterval }} - @endif - class="flex" -> - @if ($trigger = $this->getTrigger()) - - {{ $trigger->with(['unreadNotificationsCount' => $unreadNotificationsCount]) }} - - @endif - - - - @if ($broadcastChannel = $this->getBroadcastChannel()) - - @endif -
    diff --git a/vendor/filament/notifications/resources/views/notification.blade.php b/vendor/filament/notifications/resources/views/notification.blade.php deleted file mode 100644 index 84de81f1..00000000 --- a/vendor/filament/notifications/resources/views/notification.blade.php +++ /dev/null @@ -1,103 +0,0 @@ -@php - use Filament\Support\Enums\Alignment; - use Filament\Support\Enums\VerticalAlignment; - - $color = $getColor() ?? 'gray'; - $isInline = $isInline(); -@endphp - - [ - 'fi-inline', - ], - false => [ - 'max-w-sm rounded-xl bg-white shadow-lg ring-1 dark:bg-gray-900', - match ($color) { - 'gray' => 'fi-color-gray ring-gray-950/5 dark:ring-white/10', - default => 'fi-color-custom ring-custom-600/20 dark:ring-custom-400/30', - }, - ], - }, - ]) - @style([ - \Filament\Support\get_color_css_variables( - $color, - shades: [50, 400, 600], - alias: 'notifications::notification', - ) => ! ($isInline || $color === 'gray'), - ]) -> -
    null, - default => 'bg-custom-50 dark:bg-custom-400/10', - }, - ]) - > - @if ($icon = $getIcon()) - - @endif - -
    - @if (filled($title = $getTitle())) - - {{ str($title)->sanitizeHtml()->toHtmlString() }} - - @endif - - @if (filled($date = $getDate())) - - {{ $date }} - - @endif - - @if (filled($body = $getBody())) - - {{ str($body)->sanitizeHtml()->toHtmlString() }} - - @endif - - @if ($actions = $getActions()) - - @endif -
    - - -
    -
    diff --git a/vendor/filament/notifications/resources/views/notifications.blade.php b/vendor/filament/notifications/resources/views/notifications.blade.php deleted file mode 100644 index 9beb96c4..00000000 --- a/vendor/filament/notifications/resources/views/notifications.blade.php +++ /dev/null @@ -1,32 +0,0 @@ -@php - use Filament\Support\Enums\Alignment; - use Filament\Support\Enums\VerticalAlignment; -@endphp - -
    -
    'items-start', - Alignment::Center => 'items-center', - Alignment::End, Alignment::Right => 'items-end', - default => null, - }, - match (static::$verticalAlignment) { - VerticalAlignment::Start => 'flex-col-reverse justify-end', - VerticalAlignment::End => 'flex-col justify-end', - VerticalAlignment::Center => 'flex-col justify-center', - }, - ]) - role="status" - > - @foreach ($notifications as $notification) - {{ $notification }} - @endforeach -
    - - @if ($broadcastChannel = $this->getBroadcastChannel()) - - @endif -
    diff --git a/vendor/filament/notifications/src/Actions/Action.php b/vendor/filament/notifications/src/Actions/Action.php deleted file mode 100644 index bdd5de07..00000000 --- a/vendor/filament/notifications/src/Actions/Action.php +++ /dev/null @@ -1,148 +0,0 @@ -defaultView(static::LINK_VIEW); - - $this->defaultSize(ActionSize::Small); - } - - public function markAsRead(bool | Closure $condition = true): static - { - $this->shouldMarkAsRead = $condition; - - return $this; - } - - public function markAsUnread(bool | Closure $condition = true): static - { - $this->shouldMarkAsUnread = $condition; - - return $this; - } - - /** - * @return array - */ - public function toArray(): array - { - return [ - 'name' => $this->getName(), - 'color' => $this->getColor(), - 'event' => $this->getEvent(), - 'eventData' => $this->getEventData(), - 'dispatchDirection' => $this->getDispatchDirection(), - 'dispatchToComponent' => $this->getDispatchToComponent(), - 'extraAttributes' => $this->getExtraAttributes(), - 'icon' => $this->getIcon(), - 'iconPosition' => $this->getIconPosition(), - 'iconSize' => $this->getIconSize(), - 'isOutlined' => $this->isOutlined(), - 'isDisabled' => $this->isDisabled(), - 'label' => $this->getLabel(), - 'shouldClose' => $this->shouldClose(), - 'shouldMarkAsRead' => $this->shouldMarkAsRead(), - 'shouldMarkAsUnread' => $this->shouldMarkAsUnread(), - 'shouldOpenUrlInNewTab' => $this->shouldOpenUrlInNewTab(), - 'size' => $this->getSize(), - 'tooltip' => $this->getTooltip(), - 'url' => $this->getUrl(), - 'view' => $this->getView(), - ]; - } - - /** - * @param array $data - */ - public static function fromArray(array $data): static - { - $static = static::make($data['name']); - - $view = $data['view'] ?? null; - - if (filled($view) && ($static->getView() !== $view) && static::isViewSafe($view)) { - $static->view($view); - } - - if (filled($size = $data['size'] ?? null)) { - $static->size($size); - } - - $static->close($data['shouldClose'] ?? false); - $static->color($data['color'] ?? null); - $static->disabled($data['isDisabled'] ?? false); - - match ($data['dispatchDirection'] ?? null) { - 'self' => $static->dispatchSelf($data['event'] ?? null, $data['eventData'] ?? []), - 'to' => $static->dispatchTo($data['dispatchToComponent'] ?? null, $data['event'] ?? null, $data['eventData'] ?? []), - default => $static->dispatch($data['event'] ?? null, $data['eventData'] ?? []) - }; - - $static->extraAttributes($data['extraAttributes'] ?? []); - $static->icon($data['icon'] ?? null); - $static->iconPosition($data['iconPosition'] ?? null); - $static->iconSize($data['iconSize'] ?? null); - $static->label($data['label'] ?? null); - $static->markAsRead($data['shouldMarkAsRead'] ?? false); - $static->markAsUnread($data['shouldMarkAsUnread'] ?? false); - $static->outlined($data['isOutlined'] ?? false); - $static->url($data['url'] ?? null, $data['shouldOpenUrlInNewTab'] ?? false); - $static->tooltip($data['tooltip'] ?? null); - - return $static; - } - - public function getAlpineClickHandler(): ?string - { - if (filled($handler = parent::getAlpineClickHandler())) { - return $handler; - } - - if ($this->shouldMarkAsRead()) { - return 'markAsRead()'; - } - - if ($this->shouldMarkAsUnread()) { - return 'markAsUnread()'; - } - - return null; - } - - /** - * @param view-string $view - */ - protected static function isViewSafe(string $view): bool - { - return Str::startsWith($view, 'filament-actions::'); - } - - public function shouldMarkAsRead(): bool - { - return (bool) $this->evaluate($this->shouldMarkAsRead); - } - - public function shouldMarkAsUnread(): bool - { - return (bool) $this->evaluate($this->shouldMarkAsUnread); - } -} diff --git a/vendor/filament/notifications/src/Actions/ActionGroup.php b/vendor/filament/notifications/src/Actions/ActionGroup.php deleted file mode 100644 index 7bfec3a6..00000000 --- a/vendor/filament/notifications/src/Actions/ActionGroup.php +++ /dev/null @@ -1,88 +0,0 @@ - $actions - */ -class ActionGroup extends BaseActionGroup implements Arrayable -{ - /** - * @return array - */ - public function toArray(): array - { - return [ - 'actions' => collect($this->getActions())->toArray(), - 'color' => $this->getColor(), - 'dropdownMaxHeight' => $this->getDropdownMaxHeight(), - 'dropdownOffset' => $this->getDropdownOffset(), - 'dropdownPlacement' => $this->getDropdownPlacement(), - 'dropdownWidth' => $this->getDropdownWidth(), - 'extraAttributes' => $this->getExtraAttributes(), - 'hasDropdown' => $this->hasDropdown(), - 'icon' => $this->getIcon(), - 'iconPosition' => $this->getIconPosition(), - 'iconSize' => $this->getIconSize(), - 'isOutlined' => $this->isOutlined(), - 'label' => $this->getLabel(), - 'size' => $this->getSize(), - 'tooltip' => $this->getTooltip(), - 'view' => $this->getView(), - ]; - } - - /** - * @param array $data - */ - public static function fromArray(array $data): static - { - $static = static::make( - array_map( - fn (array $action): Action | ActionGroup => match (array_key_exists('actions', $action)) { - true => ActionGroup::fromArray($action), - false => Action::fromArray($action), - }, - $data['actions'] ?? [], - ), - ); - - $view = $data['view'] ?? null; - - if (filled($view) && ($static->getView() !== $view) && static::isViewSafe($view)) { - $static->view($view); - } - - if (filled($size = $data['size'] ?? null)) { - $static->size($size); - } - - $static->color($data['color'] ?? null); - $static->dropdown($data['hasDropdown'] ?? false); - $static->dropdownMaxHeight($data['dropdownMaxHeight'] ?? null); - $static->dropdownOffset($data['dropdownOffset'] ?? null); - $static->dropdownPlacement($data['dropdownPlacement'] ?? null); - $static->dropdownWidth($data['dropdownWidth'] ?? null); - $static->extraAttributes($data['extraAttributes'] ?? []); - $static->icon($data['icon'] ?? null); - $static->iconPosition($data['iconPosition'] ?? null); - $static->iconSize($data['iconSize'] ?? null); - $static->label($data['label'] ?? null); - $static->outlined($data['isOutlined'] ?? null); - $static->tooltip($data['tooltip'] ?? null); - - return $static; - } - - /** - * @param view-string $view - */ - protected static function isViewSafe(string $view): bool - { - return Str::startsWith($view, 'filament-actions::'); - } -} diff --git a/vendor/filament/notifications/src/BroadcastNotification.php b/vendor/filament/notifications/src/BroadcastNotification.php deleted file mode 100644 index 42800b5a..00000000 --- a/vendor/filament/notifications/src/BroadcastNotification.php +++ /dev/null @@ -1,39 +0,0 @@ - $data - */ - public function __construct( - public array $data, - ) { - } - - /** - * @param Model $notifiable - * @return array - */ - public function via($notifiable): array - { - return ['broadcast']; - } - - /** - * @param Model $notifiable - */ - public function toBroadcast($notifiable): BroadcastMessage - { - return new BroadcastMessage($this->data); - } -} diff --git a/vendor/filament/notifications/src/Collection.php b/vendor/filament/notifications/src/Collection.php deleted file mode 100644 index 0d5342b6..00000000 --- a/vendor/filament/notifications/src/Collection.php +++ /dev/null @@ -1,35 +0,0 @@ -> $items - */ - final public function __construct($items = []) - { - parent::__construct($items); - } - - /** - * @return array> - */ - public function toLivewire(): array - { - return $this->toArray(); - } - - /** - * @param array> $value - */ - public static function fromLivewire($value): static - { - return app(static::class, ['items' => $value])->transform( - fn (array $notification): Notification => Notification::fromArray($notification), - ); - } -} diff --git a/vendor/filament/notifications/src/Concerns/CanBeInline.php b/vendor/filament/notifications/src/Concerns/CanBeInline.php deleted file mode 100644 index 59c660a2..00000000 --- a/vendor/filament/notifications/src/Concerns/CanBeInline.php +++ /dev/null @@ -1,20 +0,0 @@ -isInline = $condition; - - return $this; - } - - public function isInline(): bool - { - return $this->isInline; - } -} diff --git a/vendor/filament/notifications/src/Concerns/HasActions.php b/vendor/filament/notifications/src/Concerns/HasActions.php deleted file mode 100644 index 6d20e31a..00000000 --- a/vendor/filament/notifications/src/Concerns/HasActions.php +++ /dev/null @@ -1,34 +0,0 @@ - | ActionGroup | Closure - */ - protected array | ActionGroup | Closure $actions = []; - - /** - * @param array | ActionGroup | Closure $actions - */ - public function actions(array | ActionGroup | Closure $actions): static - { - $this->actions = $actions; - - return $this; - } - - /** - * @return array - */ - public function getActions(): array - { - return Arr::wrap($this->evaluate($this->actions)); - } -} diff --git a/vendor/filament/notifications/src/Concerns/HasBody.php b/vendor/filament/notifications/src/Concerns/HasBody.php deleted file mode 100644 index 16bc1e0f..00000000 --- a/vendor/filament/notifications/src/Concerns/HasBody.php +++ /dev/null @@ -1,22 +0,0 @@ -body = $body; - - return $this; - } - - public function getBody(): ?string - { - return $this->evaluate($this->body); - } -} diff --git a/vendor/filament/notifications/src/Concerns/HasDate.php b/vendor/filament/notifications/src/Concerns/HasDate.php deleted file mode 100644 index f78020b6..00000000 --- a/vendor/filament/notifications/src/Concerns/HasDate.php +++ /dev/null @@ -1,22 +0,0 @@ -date = $date; - - return $this; - } - - public function getDate(): ?string - { - return $this->evaluate($this->date); - } -} diff --git a/vendor/filament/notifications/src/Concerns/HasDuration.php b/vendor/filament/notifications/src/Concerns/HasDuration.php deleted file mode 100644 index 4721741f..00000000 --- a/vendor/filament/notifications/src/Concerns/HasDuration.php +++ /dev/null @@ -1,36 +0,0 @@ -duration = $duration ?? 'persistent'; - - return $this; - } - - public function getDuration(): int | string - { - return $this->evaluate($this->duration) ?? 'persistent'; - } - - public function seconds(float $seconds): static - { - $this->duration((int) ($seconds * 1000)); - - return $this; - } - - public function persistent(): static - { - $this->duration('persistent'); - - return $this; - } -} diff --git a/vendor/filament/notifications/src/Concerns/HasIcon.php b/vendor/filament/notifications/src/Concerns/HasIcon.php deleted file mode 100644 index 3bc3fa42..00000000 --- a/vendor/filament/notifications/src/Concerns/HasIcon.php +++ /dev/null @@ -1,24 +0,0 @@ -baseGetIcon() ?? match ($this->getStatus()) { - 'danger' => FilamentIcon::resolve('notifications::notification.danger') ?? 'heroicon-o-x-circle', - 'info' => FilamentIcon::resolve('notifications::notification.info') ?? 'heroicon-o-information-circle', - 'success' => FilamentIcon::resolve('notifications::notification.success') ?? 'heroicon-o-check-circle', - 'warning' => FilamentIcon::resolve('notifications::notification.warning') ?? 'heroicon-o-exclamation-circle', - default => null, - }; - } -} diff --git a/vendor/filament/notifications/src/Concerns/HasIconColor.php b/vendor/filament/notifications/src/Concerns/HasIconColor.php deleted file mode 100644 index 9fb55bb3..00000000 --- a/vendor/filament/notifications/src/Concerns/HasIconColor.php +++ /dev/null @@ -1,20 +0,0 @@ -baseGetIconColor() ?? $this->getStatus(); - } -} diff --git a/vendor/filament/notifications/src/Concerns/HasId.php b/vendor/filament/notifications/src/Concerns/HasId.php deleted file mode 100644 index 89ffa145..00000000 --- a/vendor/filament/notifications/src/Concerns/HasId.php +++ /dev/null @@ -1,20 +0,0 @@ -id = $id; - - return $this; - } - - public function getId(): string - { - return $this->id; - } -} diff --git a/vendor/filament/notifications/src/Concerns/HasStatus.php b/vendor/filament/notifications/src/Concerns/HasStatus.php deleted file mode 100644 index 7e83827f..00000000 --- a/vendor/filament/notifications/src/Concerns/HasStatus.php +++ /dev/null @@ -1,42 +0,0 @@ -status = $status; - - return $this; - } - - public function getStatus(): ?string - { - return $this->evaluate($this->status); - } - - public function danger(): static - { - return $this->status('danger'); - } - - public function info(): static - { - return $this->status('info'); - } - - public function success(): static - { - return $this->status('success'); - } - - public function warning(): static - { - return $this->status('warning'); - } -} diff --git a/vendor/filament/notifications/src/Concerns/HasTitle.php b/vendor/filament/notifications/src/Concerns/HasTitle.php deleted file mode 100644 index 90a5ede0..00000000 --- a/vendor/filament/notifications/src/Concerns/HasTitle.php +++ /dev/null @@ -1,22 +0,0 @@ -title = $title; - - return $this; - } - - public function getTitle(): ?string - { - return $this->evaluate($this->title); - } -} diff --git a/vendor/filament/notifications/src/DatabaseNotification.php b/vendor/filament/notifications/src/DatabaseNotification.php deleted file mode 100644 index 83aab746..00000000 --- a/vendor/filament/notifications/src/DatabaseNotification.php +++ /dev/null @@ -1,39 +0,0 @@ - $data - */ - public function __construct( - public array $data, - ) { - } - - /** - * @param Model $notifiable - * @return array - */ - public function via($notifiable): array - { - return ['database']; - } - - /** - * @param Model $notifiable - * @return array - */ - public function toDatabase($notifiable): array - { - return $this->data; - } -} diff --git a/vendor/filament/notifications/src/Events/DatabaseNotificationsSent.php b/vendor/filament/notifications/src/Events/DatabaseNotificationsSent.php deleted file mode 100644 index dfba89bb..00000000 --- a/vendor/filament/notifications/src/Events/DatabaseNotificationsSent.php +++ /dev/null @@ -1,41 +0,0 @@ -user = $user; - } - - public function broadcastOn(): string - { - if (method_exists($this->user, 'receivesBroadcastNotificationsOn')) { - return new PrivateChannel($this->user->receivesBroadcastNotificationsOn()); - } - - $userClass = str_replace('\\', '.', $this->user::class); - - return new PrivateChannel("{$userClass}.{$this->user->getKey()}"); - } - - public function broadcastAs(): string - { - return 'database-notifications.sent'; - } -} diff --git a/vendor/filament/notifications/src/Livewire/DatabaseNotifications.php b/vendor/filament/notifications/src/Livewire/DatabaseNotifications.php deleted file mode 100644 index ed05a323..00000000 --- a/vendor/filament/notifications/src/Livewire/DatabaseNotifications.php +++ /dev/null @@ -1,178 +0,0 @@ -getNotificationsQuery() - ->where('id', $id) - ->delete(); - } - - #[On('markedNotificationAsRead')] - public function markNotificationAsRead(string $id): void - { - $this->getNotificationsQuery() - ->where('id', $id) - ->update(['read_at' => now()]); - } - - #[On('markedNotificationAsUnread')] - public function markNotificationAsUnread(string $id): void - { - $this->getNotificationsQuery() - ->where('id', $id) - ->update(['read_at' => null]); - } - - public function clearNotifications(): void - { - $this->getNotificationsQuery()->delete(); - } - - public function markAllNotificationsAsRead(): void - { - $this->getUnreadNotificationsQuery()->update(['read_at' => now()]); - } - - public function getNotifications(): DatabaseNotificationCollection | Paginator - { - if (! $this->isPaginated()) { - /** @phpstan-ignore-next-line */ - return $this->getNotificationsQuery()->get(); - } - - return $this->getNotificationsQuery()->simplePaginate(50); - } - - public function isPaginated(): bool - { - return static::$isPaginated; - } - - public function getNotificationsQuery(): Builder | Relation - { - /** @phpstan-ignore-next-line */ - return $this->getUser()->notifications()->where('data->format', 'filament'); - } - - public function getUnreadNotificationsQuery(): Builder | Relation - { - /** @phpstan-ignore-next-line */ - return $this->getNotificationsQuery()->unread(); - } - - public function getUnreadNotificationsCount(): int - { - return $this->getUnreadNotificationsQuery()->count(); - } - - public function getPollingInterval(): ?string - { - return static::$pollingInterval; - } - - public function getTrigger(): ?View - { - $viewPath = static::$trigger; - - if (blank($viewPath)) { - return null; - } - - return view($viewPath); - } - - public function getUser(): Model | Authenticatable | null - { - return auth(static::$authGuard)->user(); - } - - public function getBroadcastChannel(): ?string - { - $user = $this->getUser(); - - if (! $user) { - return null; - } - - if (method_exists($user, 'receivesBroadcastNotificationsOn')) { - return $user->receivesBroadcastNotificationsOn(); - } - - $userClass = str_replace('\\', '.', $user::class); - - return "{$userClass}.{$user->getKey()}"; - } - - public function getNotification(DatabaseNotification $notification): Notification - { - return Notification::fromDatabase($notification) - ->date($this->formatNotificationDate($notification->getAttributeValue('created_at'))); - } - - protected function formatNotificationDate(CarbonInterface $date): string - { - return $date->diffForHumans(); - } - - public static function trigger(?string $trigger): void - { - static::$trigger = $trigger; - } - - public static function pollingInterval(?string $interval): void - { - static::$pollingInterval = $interval; - } - - public static function authGuard(?string $guard): void - { - static::$authGuard = $guard; - } - - /** - * @return array - */ - public function queryStringHandlesPagination(): array - { - return []; - } - - public function render(): View - { - return view('filament-notifications::database-notifications'); - } -} diff --git a/vendor/filament/notifications/src/Livewire/Notifications.php b/vendor/filament/notifications/src/Livewire/Notifications.php deleted file mode 100644 index 856afde6..00000000 --- a/vendor/filament/notifications/src/Livewire/Notifications.php +++ /dev/null @@ -1,126 +0,0 @@ -notifications = new Collection(); - $this->pullNotificationsFromSession(); - } - - #[On('notificationsSent')] - public function pullNotificationsFromSession(): void - { - foreach (session()->pull('filament.notifications') ?? [] as $notification) { - $notification = Notification::fromArray($notification); - - $this->pushNotification($notification); - } - } - - /** - * @param array $notification - */ - #[On('notificationSent')] - public function pushNotificationFromEvent(array $notification): void - { - $notification = Notification::fromArray($notification); - - $this->pushNotification($notification); - } - - #[On('notificationClosed')] - public function removeNotification(string $id): void - { - if (! $this->notifications->has($id)) { - return; - } - - $this->notifications->forget($id); - } - - /** - * @param array $notification - */ - public function handleBroadcastNotification(array $notification): void - { - if (($notification['format'] ?? null) !== 'filament') { - return; - } - - $this->pushNotification(Notification::fromArray($notification)); - } - - protected function pushNotification(Notification $notification): void - { - $this->notifications->put( - $notification->getId(), - $notification, - ); - } - - public function getUser(): Model | Authenticatable | null - { - return auth(static::$authGuard)->user(); - } - - public function getBroadcastChannel(): ?string - { - $user = $this->getUser(); - - if (! $user) { - return null; - } - - if (method_exists($user, 'receivesBroadcastNotificationsOn')) { - return $user->receivesBroadcastNotificationsOn(); - } - - $userClass = str_replace('\\', '.', $user::class); - - return "{$userClass}.{$user->getKey()}"; - } - - public static function alignment(Alignment $alignment): void - { - static::$alignment = $alignment; - } - - public static function verticalAlignment(VerticalAlignment $alignment): void - { - static::$verticalAlignment = $alignment; - } - - public static function authGuard(?string $guard): void - { - static::$authGuard = $guard; - } - - public function render(): View - { - return view('filament-notifications::notifications'); - } -} diff --git a/vendor/filament/notifications/src/Notification.php b/vendor/filament/notifications/src/Notification.php deleted file mode 100644 index 76bfa78f..00000000 --- a/vendor/filament/notifications/src/Notification.php +++ /dev/null @@ -1,313 +0,0 @@ - - */ - protected array $safeViews = []; - - public function __construct(string $id) - { - $this->id($id); - } - - public static function make(?string $id = null): static - { - $static = app(static::class, ['id' => $id ?? Str::orderedUuid()]); - $static->configure(); - - return $static; - } - - /** - * @return array - */ - public function getViewData(): array - { - return $this->viewData; - } - - public function toArray(): array - { - return [ - 'id' => $this->getId(), - 'actions' => array_map(fn (Action | ActionGroup $action): array => $action->toArray(), $this->getActions()), - 'body' => $this->getBody(), - 'color' => $this->getColor(), - 'duration' => $this->getDuration(), - 'icon' => $this->getIcon(), - 'iconColor' => $this->getIconColor(), - 'status' => $this->getStatus(), - 'title' => $this->getTitle(), - 'view' => $this->getView(), - 'viewData' => $this->getViewData(), - ]; - } - - /** - * @param array $data - */ - public static function fromArray(array $data): static - { - $static = static::make($data['id'] ?? Str::random()); - - // If the container constructs an instance of child class - // instead of the current class, we should run `fromArray()` - // on the child class instead. - if ( - ($static::class !== self::class) && - (get_called_class() === self::class) - ) { - return $static::fromArray($data); - } - - $static->actions( - array_map( - fn (array $action): Action | ActionGroup => match (array_key_exists('actions', $action)) { - true => ActionGroup::fromArray($action), - false => Action::fromArray($action), - }, - $data['actions'] ?? [], - ), - ); - - $view = $data['view'] ?? null; - - if (filled($view) && ($static->getView() !== $view) && $static->isViewSafe($view)) { - $static->view($data['view']); - } - - $static->viewData($data['viewData'] ?? []); - $static->body($data['body'] ?? null); - $static->color($data['color'] ?? null); - $static->duration($data['duration'] ?? $static->getDuration()); - $static->status($data['status'] ?? $static->getStatus()); - $static->icon($data['icon'] ?? $static->getIcon()); - $static->iconColor($data['iconColor'] ?? $static->getIconColor()); - $static->title($data['title'] ?? null); - - return $static; - } - - protected function isViewSafe(string $view): bool - { - return in_array($view, $this->safeViews, strict: true); - } - - /** - * @param string | array $safeViews - */ - public function safeViews(string | array $safeViews): static - { - $this->safeViews = [ - ...$this->safeViews, - ...Arr::wrap($safeViews), - ]; - - return $this; - } - - public function send(): static - { - session()->push( - 'filament.notifications', - $this->toArray(), - ); - - return $this; - } - - /** - * @param Model | Authenticatable | Collection | array $users - */ - public function broadcast(Model | Authenticatable | Collection | array $users): static - { - if (! is_iterable($users)) { - $users = [$users]; - } - - foreach ($users as $user) { - $user->notify($this->toBroadcast()); - } - - return $this; - } - - /** - * @param Model | Authenticatable | Collection | array $users - */ - public function sendToDatabase(Model | Authenticatable | Collection | array $users, bool $isEventDispatched = false): static - { - if (! is_iterable($users)) { - $users = [$users]; - } - - foreach ($users as $user) { - $user->notify($this->toDatabase()); - - if ($isEventDispatched) { - DatabaseNotificationsSent::dispatch($user); - } - } - - return $this; - } - - public function toBroadcast(): BroadcastNotification - { - $data = $this->toArray(); - $data['format'] = 'filament'; - - return new BroadcastNotification($data); - } - - public function toDatabase(): DatabaseNotification - { - return new DatabaseNotification($this->getDatabaseMessage()); - } - - public function getBroadcastMessage(): BroadcastMessage - { - $data = $this->toArray(); - $data['format'] = 'filament'; - - return new BroadcastMessage($data); - } - - /** - * @return array - */ - public function getDatabaseMessage(): array - { - $data = $this->toArray(); - $data['duration'] = 'persistent'; - $data['format'] = 'filament'; - unset($data['id']); - - return $data; - } - - public static function fromDatabase(DatabaseNotificationModel $notification): static - { - /** @phpstan-ignore-next-line */ - $static = static::fromArray($notification->data); - $static->id($notification->getKey()); - - return $static; - } - - public static function assertNotified(Notification | string | null $notification = null): void - { - $notificationsLivewireComponent = new Notifications(); - $notificationsLivewireComponent->mount(); - $notifications = $notificationsLivewireComponent->notifications; - - $expectedNotification = null; - - Assert::assertIsArray($notifications->toArray()); - - if (is_string($notification)) { - $expectedNotification = $notifications->first(fn (Notification $mountedNotification): bool => $mountedNotification->title === $notification); - } - - if ($notification instanceof Notification) { - $expectedNotification = $notifications->first(fn (Notification $mountedNotification, string $key): bool => $mountedNotification->id === $key); - } - - if (blank($notification)) { - return; - } - - Assert::assertNotNull($expectedNotification, 'A notification was not sent'); - - if ($notification instanceof Notification) { - Assert::assertSame( - collect($expectedNotification)->except(['id'])->toArray(), - collect($notification->toArray())->except(['id'])->toArray() - ); - - return; - } - - Assert::assertSame($expectedNotification->title, $notification); - } - - public static function assertNotNotified(Notification | string | null $notification = null): void - { - $notificationsLivewireComponent = new Notifications(); - $notificationsLivewireComponent->mount(); - $notifications = $notificationsLivewireComponent->notifications; - - $expectedNotification = null; - - Assert::assertIsArray($notifications->toArray()); - - if (is_string($notification)) { - $expectedNotification = $notifications->first(fn (Notification $mountedNotification): bool => $mountedNotification->title === $notification); - } - - if ($notification instanceof Notification) { - $expectedNotification = $notifications->first(fn (Notification $mountedNotification, string $key): bool => $mountedNotification->id === $key); - } - - if (blank($notification)) { - return; - } - - if ($notification instanceof Notification) { - Assert::assertNotSame( - collect($expectedNotification)->except(['id'])->toArray(), - collect($notification->toArray())->except(['id'])->toArray(), - 'The notification with the given configration was sent' - ); - - return; - } - - if ($expectedNotification instanceof Notification) { - Assert::assertNotSame( - $expectedNotification->title, - $notification, - 'The notification with the given title was sent' - ); - } - } -} diff --git a/vendor/filament/notifications/src/NotificationsServiceProvider.php b/vendor/filament/notifications/src/NotificationsServiceProvider.php deleted file mode 100644 index 7eb7ac32..00000000 --- a/vendor/filament/notifications/src/NotificationsServiceProvider.php +++ /dev/null @@ -1,57 +0,0 @@ -name('filament-notifications') - ->hasTranslations() - ->hasViews(); - } - - public function packageBooted(): void - { - FilamentAsset::register([ - Js::make('notifications', __DIR__ . '/../dist/index.js'), - ], 'filament/notifications'); - - Livewire::component('database-notifications', DatabaseNotifications::class); - - Livewire::component('notifications', Notifications::class); - - on('dehydrate', function (Component $component) { - if (! Livewire::isLivewireRequest()) { - return; - } - - if (store($component)->has('redirect')) { - return; - } - - if (count(session()->get('filament.notifications') ?? []) <= 0) { - return; - } - - $component->dispatch('notificationsSent'); - }); - - Testable::mixin(new TestsNotifications()); - } -} diff --git a/vendor/filament/notifications/src/Testing/Autoload.php b/vendor/filament/notifications/src/Testing/Autoload.php deleted file mode 100644 index de8fd055..00000000 --- a/vendor/filament/notifications/src/Testing/Autoload.php +++ /dev/null @@ -1,15 +0,0 @@ - [ - - // 'echo' => [ - // 'broadcaster' => 'pusher', - // 'key' => env('VITE_PUSHER_APP_KEY'), - // 'cluster' => env('VITE_PUSHER_APP_CLUSTER'), - // 'wsHost' => env('VITE_PUSHER_HOST'), - // 'wsPort' => env('VITE_PUSHER_PORT'), - // 'wssPort' => env('VITE_PUSHER_PORT'), - // 'authEndpoint' => '/api/v1/broadcasting/auth', - // 'disableStats' => true, - // 'encrypted' => true, - // ], - - ], - - /* - |-------------------------------------------------------------------------- - | Default Filesystem Disk - |-------------------------------------------------------------------------- - | - | This is the storage disk Filament will use to put media. You may use any - | of the disks defined in the `config/filesystems.php`. - | - */ - - 'default_filesystem_disk' => env('FILAMENT_FILESYSTEM_DISK', 'public'), - - /* - |-------------------------------------------------------------------------- - | Assets Path - |-------------------------------------------------------------------------- - | - | This is the directory where Filament's assets will be published to. It - | is relative to the `public` directory of your Laravel application. - | - | After changing the path, you should run `php artisan filament:assets`. - | - */ - - 'assets_path' => null, - - /* - |-------------------------------------------------------------------------- - | Livewire Loading Delay - |-------------------------------------------------------------------------- - | - | This sets the delay before loading indicators appear. - | - | Setting this to 'none' makes indicators appear immediately, which can be - | desirable for high-latency connections. Setting it to 'default' applies - | Livewire's standard 200ms delay. - | - */ - - 'livewire_loading_delay' => 'default', - -]; diff --git a/vendor/filament/support/dist/async-alpine.js b/vendor/filament/support/dist/async-alpine.js deleted file mode 100644 index 048f75c0..00000000 --- a/vendor/filament/support/dist/async-alpine.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{(()=>{var d=Object.defineProperty,m=t=>d(t,"__esModule",{value:!0}),f=(t,e)=>{m(t);for(var i in e)d(t,i,{get:e[i],enumerable:!0})},o={};f(o,{eager:()=>g,event:()=>w,idle:()=>y,media:()=>b,visible:()=>E});var c=()=>!0,g=c,v=({component:t,argument:e})=>new Promise(i=>{if(e)window.addEventListener(e,()=>i(),{once:!0});else{let n=a=>{a.detail.id===t.id&&(window.removeEventListener("async-alpine:load",n),i())};window.addEventListener("async-alpine:load",n)}}),w=v,x=()=>new Promise(t=>{"requestIdleCallback"in window?window.requestIdleCallback(t):setTimeout(t,200)}),y=x,A=({argument:t})=>new Promise(e=>{if(!t)return console.log("Async Alpine: media strategy requires a media query. Treating as 'eager'"),e();let i=window.matchMedia(`(${t})`);i.matches?e():i.addEventListener("change",e,{once:!0})}),b=A,$=({component:t,argument:e})=>new Promise(i=>{let n=e||"0px 0px 0px 0px",a=new IntersectionObserver(r=>{r[0].isIntersecting&&(a.disconnect(),i())},{rootMargin:n});a.observe(t.el)}),E=$;function P(t){let e=q(t),i=u(e);return i.type==="method"?{type:"expression",operator:"&&",parameters:[i]}:i}function q(t){let e=/\s*([()])\s*|\s*(\|\||&&|\|)\s*|\s*((?:[^()&|]+\([^()]+\))|[^()&|]+)\s*/g,i=[],n;for(;(n=e.exec(t))!==null;){let[,a,r,s]=n;if(a!==void 0)i.push({type:"parenthesis",value:a});else if(r!==void 0)i.push({type:"operator",value:r==="|"?"&&":r});else{let p={type:"method",method:s.trim()};s.includes("(")&&(p.method=s.substring(0,s.indexOf("(")).trim(),p.argument=s.substring(s.indexOf("(")+1,s.indexOf(")"))),s.method==="immediate"&&(s.method="eager"),i.push(p)}}return i}function u(t){let e=h(t);for(;t.length>0&&(t[0].value==="&&"||t[0].value==="|"||t[0].value==="||");){let i=t.shift().value,n=h(t);e.type==="expression"&&e.operator===i?e.parameters.push(n):e={type:"expression",operator:i,parameters:[e,n]}}return e}function h(t){if(t[0].value==="("){t.shift();let e=u(t);return t[0].value===")"&&t.shift(),e}else return t.shift()}var _="__internal_",l={Alpine:null,_options:{prefix:"ax-",alpinePrefix:"x-",root:"load",inline:"load-src",defaultStrategy:"eager"},_alias:!1,_data:{},_realIndex:0,get _index(){return this._realIndex++},init(t,e={}){return this.Alpine=t,this._options={...this._options,...e},this},start(){return this._processInline(),this._setupComponents(),this._mutations(),this},data(t,e=!1){return this._data[t]={loaded:!1,download:e},this},url(t,e){!t||!e||(this._data[t]||this.data(t),this._data[t].download=()=>import(this._parseUrl(e)))},alias(t){this._alias=t},_processInline(){let t=document.querySelectorAll(`[${this._options.prefix}${this._options.inline}]`);for(let e of t)this._inlineElement(e)},_inlineElement(t){let e=t.getAttribute(`${this._options.alpinePrefix}data`),i=t.getAttribute(`${this._options.prefix}${this._options.inline}`);if(!e||!i)return;let n=this._parseName(e);this.url(n,i)},_setupComponents(){let t=document.querySelectorAll(`[${this._options.prefix}${this._options.root}]`);for(let e of t)this._setupComponent(e)},_setupComponent(t){let e=t.getAttribute(`${this._options.alpinePrefix}data`);t.setAttribute(`${this._options.alpinePrefix}ignore`,"");let i=this._parseName(e),n=t.getAttribute(`${this._options.prefix}${this._options.root}`)||this._options.defaultStrategy;this._componentStrategy({name:i,strategy:n,el:t,id:t.id||this._index})},async _componentStrategy(t){let e=P(t.strategy);await this._generateRequirements(t,e),await this._download(t.name),this._activate(t)},_generateRequirements(t,e){if(e.type==="expression"){if(e.operator==="&&")return Promise.all(e.parameters.map(i=>this._generateRequirements(t,i)));if(e.operator==="||")return Promise.any(e.parameters.map(i=>this._generateRequirements(t,i)))}return o[e.method]?o[e.method]({component:t,argument:e.argument}):!1},async _download(t){if(t.startsWith(_)||(this._handleAlias(t),!this._data[t]||this._data[t].loaded))return;let e=await this._getModule(t);this.Alpine.data(t,e),this._data[t].loaded=!0},async _getModule(t){if(!this._data[t])return;let e=await this._data[t].download(t);return typeof e=="function"?e:e[t]||e.default||Object.values(e)[0]||!1},_activate(t){this.Alpine.destroyTree(t.el),t.el.removeAttribute(`${this._options.alpinePrefix}ignore`),t.el._x_ignore=!1,this.Alpine.initTree(t.el)},_mutations(){new MutationObserver(t=>{for(let e of t)if(e.addedNodes)for(let i of e.addedNodes)i.nodeType===1&&(i.hasAttribute(`${this._options.prefix}${this._options.root}`)&&this._mutationEl(i),i.querySelectorAll(`[${this._options.prefix}${this._options.root}]`).forEach(n=>this._mutationEl(n)))}).observe(document,{attributes:!0,childList:!0,subtree:!0})},_mutationEl(t){t.hasAttribute(`${this._options.prefix}${this._options.inline}`)&&this._inlineElement(t),this._setupComponent(t)},_handleAlias(t){if(!(!this._alias||this._data[t])){if(typeof this._alias=="function"){this.data(t,this._alias);return}this.url(t,this._alias.replaceAll("[name]",t))}},_parseName(t){return(t||"").split(/[({]/g)[0]||`${_}${this._index}`},_parseUrl(t){return new RegExp("^(?:[a-z+]+:)?//","i").test(t)?t:new URL(t,document.baseURI).href}};document.addEventListener("alpine:init",()=>{window.AsyncAlpine=l,l.init(Alpine,window.AsyncAlpineOptions||{}),document.dispatchEvent(new CustomEvent("async-alpine:init")),l.start()})})();})(); diff --git a/vendor/filament/support/dist/index.css b/vendor/filament/support/dist/index.css deleted file mode 100644 index a80d070c..00000000 --- a/vendor/filament/support/dist/index.css +++ /dev/null @@ -1 +0,0 @@ -.fi-pagination-items,.fi-pagination-overview,.fi-pagination-records-per-page-select:not(.fi-compact){display:none}@supports (container-type:inline-size){.fi-pagination{container-type:inline-size}@container (min-width: 28rem){.fi-pagination-records-per-page-select.fi-compact{display:none}.fi-pagination-records-per-page-select:not(.fi-compact){display:inline}}@container (min-width: 56rem){.fi-pagination:not(.fi-simple)>.fi-pagination-previous-btn{display:none}.fi-pagination-overview{display:inline}.fi-pagination:not(.fi-simple)>.fi-pagination-next-btn{display:none}.fi-pagination-items{display:flex}}}@supports not (container-type:inline-size){@media (min-width:640px){.fi-pagination-records-per-page-select.fi-compact{display:none}.fi-pagination-records-per-page-select:not(.fi-compact){display:inline}}@media (min-width:768px){.fi-pagination:not(.fi-simple)>.fi-pagination-previous-btn{display:none}.fi-pagination-overview{display:inline}.fi-pagination:not(.fi-simple)>.fi-pagination-next-btn{display:none}.fi-pagination-items{display:flex}}}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{background-color:#333;border-radius:4px;color:#fff;font-size:14px;line-height:1.4;outline:0;position:relative;transition-property:transform,visibility,opacity;white-space:normal}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{border-top-color:initial;border-width:8px 8px 0;bottom:-7px;left:0;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:initial;border-width:0 8px 8px;left:0;top:-7px;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-left-color:initial;border-width:8px 0 8px 8px;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{border-right-color:initial;border-width:8px 8px 8px 0;left:-7px;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{color:#333;height:16px;width:16px}.tippy-arrow:before{border-color:transparent;border-style:solid;content:"";position:absolute}.tippy-content{padding:5px 9px;position:relative;z-index:1}.tippy-box[data-theme~=light]{background-color:#fff;box-shadow:0 0 20px 4px #9aa1b126,0 4px 80px -8px #24282f40,0 4px 4px -2px #5b5e6926;color:#26323d}.tippy-box[data-theme~=light][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=light][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff}.tippy-box[data-theme~=light][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=light][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff}.tippy-box[data-theme~=light]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=light]>.tippy-svg-arrow{fill:#fff}.fi-sortable-ghost{opacity:.3} \ No newline at end of file diff --git a/vendor/filament/support/dist/index.js b/vendor/filament/support/dist/index.js deleted file mode 100644 index efddd58d..00000000 --- a/vendor/filament/support/dist/index.js +++ /dev/null @@ -1,46 +0,0 @@ -(()=>{var Io=Object.create;var Oi=Object.defineProperty;var Fo=Object.getOwnPropertyDescriptor;var No=Object.getOwnPropertyNames;var Lo=Object.getPrototypeOf,ko=Object.prototype.hasOwnProperty;var Ur=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var jo=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of No(t))!ko.call(e,o)&&o!==n&&Oi(e,o,{get:()=>t[o],enumerable:!(r=Fo(t,o))||r.enumerable});return e};var Bo=(e,t,n)=>(n=e!=null?Io(Lo(e)):{},jo(t||!e||!e.__esModule?Oi(n,"default",{value:e,enumerable:!0}):n,e));var eo=Ur(()=>{});var to=Ur(()=>{});var no=Ur((hs,pr)=>{(function(){"use strict";var e="input is invalid type",t="finalize already called",n=typeof window=="object",r=n?window:{};r.JS_MD5_NO_WINDOW&&(n=!1);var o=!n&&typeof self=="object",i=!r.JS_MD5_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;i?r=global:o&&(r=self);var s=!r.JS_MD5_NO_COMMON_JS&&typeof pr=="object"&&pr.exports,u=typeof define=="function"&&define.amd,h=!r.JS_MD5_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",p="0123456789abcdef".split(""),x=[128,32768,8388608,-2147483648],b=[0,8,16,24],E=["hex","array","digest","buffer","arrayBuffer","base64"],_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),C=[],M;if(h){var U=new ArrayBuffer(68);M=new Uint8Array(U),C=new Uint32Array(U)}var V=Array.isArray;(r.JS_MD5_NO_NODE_JS||!V)&&(V=function(l){return Object.prototype.toString.call(l)==="[object Array]"});var B=ArrayBuffer.isView;h&&(r.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW||!B)&&(B=function(l){return typeof l=="object"&&l.buffer&&l.buffer.constructor===ArrayBuffer});var Q=function(l){var d=typeof l;if(d==="string")return[l,!0];if(d!=="object"||l===null)throw new Error(e);if(h&&l.constructor===ArrayBuffer)return[new Uint8Array(l),!1];if(!V(l)&&!B(l))throw new Error(e);return[l,!1]},q=function(l){return function(d){return new R(!0).update(d)[l]()}},xe=function(){var l=q("hex");i&&(l=se(l)),l.create=function(){return new R},l.update=function(c){return l.create().update(c)};for(var d=0;d>>6,ze[T++]=128|c&63):c<55296||c>=57344?(ze[T++]=224|c>>>12,ze[T++]=128|c>>>6&63,ze[T++]=128|c&63):(c=65536+((c&1023)<<10|l.charCodeAt(++H)&1023),ze[T++]=240|c>>>18,ze[T++]=128|c>>>12&63,ze[T++]=128|c>>>6&63,ze[T++]=128|c&63);else for(T=this.start;H>>2]|=c<>>2]|=(192|c>>>6)<>>2]|=(128|c&63)<=57344?(G[T>>>2]|=(224|c>>>12)<>>2]|=(128|c>>>6&63)<>>2]|=(128|c&63)<>>2]|=(240|c>>>18)<>>2]|=(128|c>>>12&63)<>>2]|=(128|c>>>6&63)<>>2]|=(128|c&63)<>>2]|=l[H]<=64?(this.start=T-64,this.hash(),this.hashed=!0):this.start=T}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this},R.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var l=this.blocks,d=this.lastByteIndex;l[d>>>2]|=x[d&3],d>=56&&(this.hashed||this.hash(),l[0]=l[16],l[16]=l[1]=l[2]=l[3]=l[4]=l[5]=l[6]=l[7]=l[8]=l[9]=l[10]=l[11]=l[12]=l[13]=l[14]=l[15]=0),l[14]=this.bytes<<3,l[15]=this.hBytes<<3|this.bytes>>>29,this.hash()}},R.prototype.hash=function(){var l,d,v,c,H,T,P=this.blocks;this.first?(l=P[0]-680876937,l=(l<<7|l>>>25)-271733879<<0,c=(-1732584194^l&2004318071)+P[1]-117830708,c=(c<<12|c>>>20)+l<<0,v=(-271733879^c&(l^-271733879))+P[2]-1126478375,v=(v<<17|v>>>15)+c<<0,d=(l^v&(c^l))+P[3]-1316259209,d=(d<<22|d>>>10)+v<<0):(l=this.h0,d=this.h1,v=this.h2,c=this.h3,l+=(c^d&(v^c))+P[0]-680876936,l=(l<<7|l>>>25)+d<<0,c+=(v^l&(d^v))+P[1]-389564586,c=(c<<12|c>>>20)+l<<0,v+=(d^c&(l^d))+P[2]+606105819,v=(v<<17|v>>>15)+c<<0,d+=(l^v&(c^l))+P[3]-1044525330,d=(d<<22|d>>>10)+v<<0),l+=(c^d&(v^c))+P[4]-176418897,l=(l<<7|l>>>25)+d<<0,c+=(v^l&(d^v))+P[5]+1200080426,c=(c<<12|c>>>20)+l<<0,v+=(d^c&(l^d))+P[6]-1473231341,v=(v<<17|v>>>15)+c<<0,d+=(l^v&(c^l))+P[7]-45705983,d=(d<<22|d>>>10)+v<<0,l+=(c^d&(v^c))+P[8]+1770035416,l=(l<<7|l>>>25)+d<<0,c+=(v^l&(d^v))+P[9]-1958414417,c=(c<<12|c>>>20)+l<<0,v+=(d^c&(l^d))+P[10]-42063,v=(v<<17|v>>>15)+c<<0,d+=(l^v&(c^l))+P[11]-1990404162,d=(d<<22|d>>>10)+v<<0,l+=(c^d&(v^c))+P[12]+1804603682,l=(l<<7|l>>>25)+d<<0,c+=(v^l&(d^v))+P[13]-40341101,c=(c<<12|c>>>20)+l<<0,v+=(d^c&(l^d))+P[14]-1502002290,v=(v<<17|v>>>15)+c<<0,d+=(l^v&(c^l))+P[15]+1236535329,d=(d<<22|d>>>10)+v<<0,l+=(v^c&(d^v))+P[1]-165796510,l=(l<<5|l>>>27)+d<<0,c+=(d^v&(l^d))+P[6]-1069501632,c=(c<<9|c>>>23)+l<<0,v+=(l^d&(c^l))+P[11]+643717713,v=(v<<14|v>>>18)+c<<0,d+=(c^l&(v^c))+P[0]-373897302,d=(d<<20|d>>>12)+v<<0,l+=(v^c&(d^v))+P[5]-701558691,l=(l<<5|l>>>27)+d<<0,c+=(d^v&(l^d))+P[10]+38016083,c=(c<<9|c>>>23)+l<<0,v+=(l^d&(c^l))+P[15]-660478335,v=(v<<14|v>>>18)+c<<0,d+=(c^l&(v^c))+P[4]-405537848,d=(d<<20|d>>>12)+v<<0,l+=(v^c&(d^v))+P[9]+568446438,l=(l<<5|l>>>27)+d<<0,c+=(d^v&(l^d))+P[14]-1019803690,c=(c<<9|c>>>23)+l<<0,v+=(l^d&(c^l))+P[3]-187363961,v=(v<<14|v>>>18)+c<<0,d+=(c^l&(v^c))+P[8]+1163531501,d=(d<<20|d>>>12)+v<<0,l+=(v^c&(d^v))+P[13]-1444681467,l=(l<<5|l>>>27)+d<<0,c+=(d^v&(l^d))+P[2]-51403784,c=(c<<9|c>>>23)+l<<0,v+=(l^d&(c^l))+P[7]+1735328473,v=(v<<14|v>>>18)+c<<0,d+=(c^l&(v^c))+P[12]-1926607734,d=(d<<20|d>>>12)+v<<0,H=d^v,l+=(H^c)+P[5]-378558,l=(l<<4|l>>>28)+d<<0,c+=(H^l)+P[8]-2022574463,c=(c<<11|c>>>21)+l<<0,T=c^l,v+=(T^d)+P[11]+1839030562,v=(v<<16|v>>>16)+c<<0,d+=(T^v)+P[14]-35309556,d=(d<<23|d>>>9)+v<<0,H=d^v,l+=(H^c)+P[1]-1530992060,l=(l<<4|l>>>28)+d<<0,c+=(H^l)+P[4]+1272893353,c=(c<<11|c>>>21)+l<<0,T=c^l,v+=(T^d)+P[7]-155497632,v=(v<<16|v>>>16)+c<<0,d+=(T^v)+P[10]-1094730640,d=(d<<23|d>>>9)+v<<0,H=d^v,l+=(H^c)+P[13]+681279174,l=(l<<4|l>>>28)+d<<0,c+=(H^l)+P[0]-358537222,c=(c<<11|c>>>21)+l<<0,T=c^l,v+=(T^d)+P[3]-722521979,v=(v<<16|v>>>16)+c<<0,d+=(T^v)+P[6]+76029189,d=(d<<23|d>>>9)+v<<0,H=d^v,l+=(H^c)+P[9]-640364487,l=(l<<4|l>>>28)+d<<0,c+=(H^l)+P[12]-421815835,c=(c<<11|c>>>21)+l<<0,T=c^l,v+=(T^d)+P[15]+530742520,v=(v<<16|v>>>16)+c<<0,d+=(T^v)+P[2]-995338651,d=(d<<23|d>>>9)+v<<0,l+=(v^(d|~c))+P[0]-198630844,l=(l<<6|l>>>26)+d<<0,c+=(d^(l|~v))+P[7]+1126891415,c=(c<<10|c>>>22)+l<<0,v+=(l^(c|~d))+P[14]-1416354905,v=(v<<15|v>>>17)+c<<0,d+=(c^(v|~l))+P[5]-57434055,d=(d<<21|d>>>11)+v<<0,l+=(v^(d|~c))+P[12]+1700485571,l=(l<<6|l>>>26)+d<<0,c+=(d^(l|~v))+P[3]-1894986606,c=(c<<10|c>>>22)+l<<0,v+=(l^(c|~d))+P[10]-1051523,v=(v<<15|v>>>17)+c<<0,d+=(c^(v|~l))+P[1]-2054922799,d=(d<<21|d>>>11)+v<<0,l+=(v^(d|~c))+P[8]+1873313359,l=(l<<6|l>>>26)+d<<0,c+=(d^(l|~v))+P[15]-30611744,c=(c<<10|c>>>22)+l<<0,v+=(l^(c|~d))+P[6]-1560198380,v=(v<<15|v>>>17)+c<<0,d+=(c^(v|~l))+P[13]+1309151649,d=(d<<21|d>>>11)+v<<0,l+=(v^(d|~c))+P[4]-145523070,l=(l<<6|l>>>26)+d<<0,c+=(d^(l|~v))+P[11]-1120210379,c=(c<<10|c>>>22)+l<<0,v+=(l^(c|~d))+P[2]+718787259,v=(v<<15|v>>>17)+c<<0,d+=(c^(v|~l))+P[9]-343485551,d=(d<<21|d>>>11)+v<<0,this.first?(this.h0=l+1732584193<<0,this.h1=d-271733879<<0,this.h2=v-1732584194<<0,this.h3=c+271733878<<0,this.first=!1):(this.h0=this.h0+l<<0,this.h1=this.h1+d<<0,this.h2=this.h2+v<<0,this.h3=this.h3+c<<0)},R.prototype.hex=function(){this.finalize();var l=this.h0,d=this.h1,v=this.h2,c=this.h3;return p[l>>>4&15]+p[l&15]+p[l>>>12&15]+p[l>>>8&15]+p[l>>>20&15]+p[l>>>16&15]+p[l>>>28&15]+p[l>>>24&15]+p[d>>>4&15]+p[d&15]+p[d>>>12&15]+p[d>>>8&15]+p[d>>>20&15]+p[d>>>16&15]+p[d>>>28&15]+p[d>>>24&15]+p[v>>>4&15]+p[v&15]+p[v>>>12&15]+p[v>>>8&15]+p[v>>>20&15]+p[v>>>16&15]+p[v>>>28&15]+p[v>>>24&15]+p[c>>>4&15]+p[c&15]+p[c>>>12&15]+p[c>>>8&15]+p[c>>>20&15]+p[c>>>16&15]+p[c>>>28&15]+p[c>>>24&15]},R.prototype.toString=R.prototype.hex,R.prototype.digest=function(){this.finalize();var l=this.h0,d=this.h1,v=this.h2,c=this.h3;return[l&255,l>>>8&255,l>>>16&255,l>>>24&255,d&255,d>>>8&255,d>>>16&255,d>>>24&255,v&255,v>>>8&255,v>>>16&255,v>>>24&255,c&255,c>>>8&255,c>>>16&255,c>>>24&255]},R.prototype.array=R.prototype.digest,R.prototype.arrayBuffer=function(){this.finalize();var l=new ArrayBuffer(16),d=new Uint32Array(l);return d[0]=this.h0,d[1]=this.h1,d[2]=this.h2,d[3]=this.h3,l},R.prototype.buffer=R.prototype.arrayBuffer,R.prototype.base64=function(){for(var l,d,v,c="",H=this.array(),T=0;T<15;)l=H[T++],d=H[T++],v=H[T++],c+=_[l>>>2]+_[(l<<4|d>>>4)&63]+_[(d<<2|v>>>6)&63]+_[v&63];return l=H[T],c+=_[l>>>2]+_[l<<4&63]+"==",c};function fe(l,d){var v,c=Q(l);if(l=c[0],c[1]){var H=[],T=l.length,P=0,G;for(v=0;v>>6,H[P++]=128|G&63):G<55296||G>=57344?(H[P++]=224|G>>>12,H[P++]=128|G>>>6&63,H[P++]=128|G&63):(G=65536+((G&1023)<<10|l.charCodeAt(++v)&1023),H[P++]=240|G>>>18,H[P++]=128|G>>>12&63,H[P++]=128|G>>>6&63,H[P++]=128|G&63);l=H}l.length>64&&(l=new R(!0).update(l).array());var ze=[],Dt=[];for(v=0;v<64;++v){var jt=l[v]||0;ze[v]=92^jt,Dt[v]=54^jt}R.call(this,d),this.update(Dt),this.oKeyPad=ze,this.inner=!0,this.sharedMemory=d}fe.prototype=new R,fe.prototype.finalize=function(){if(R.prototype.finalize.call(this),this.inner){this.inner=!1;var l=this.array();R.call(this,this.sharedMemory),this.update(this.oKeyPad),this.update(l),R.prototype.finalize.call(this)}};var ce=xe();ce.md5=ce,ce.md5.hmac=be(),s?pr.exports=ce:(r.md5=ce,u&&define(function(){return ce}))})()});function Ot(e){return e.split("-")[0]}function cn(e){return e.split("-")[1]}function On(e){return["top","bottom"].includes(Ot(e))?"x":"y"}function Gr(e){return e==="y"?"height":"width"}function Si(e,t,n){let{reference:r,floating:o}=e,i=r.x+r.width/2-o.width/2,s=r.y+r.height/2-o.height/2,u=On(t),h=Gr(u),p=r[h]/2-o[h]/2,x=Ot(t),b=u==="x",E;switch(x){case"top":E={x:i,y:r.y-o.height};break;case"bottom":E={x:i,y:r.y+r.height};break;case"right":E={x:r.x+r.width,y:s};break;case"left":E={x:r.x-o.width,y:s};break;default:E={x:r.x,y:r.y}}switch(cn(t)){case"start":E[u]-=p*(n&&b?-1:1);break;case"end":E[u]+=p*(n&&b?-1:1);break}return E}var Ho=async(e,t,n)=>{let{placement:r="bottom",strategy:o="absolute",middleware:i=[],platform:s}=n,u=await(s.isRTL==null?void 0:s.isRTL(t));if(s==null&&console.error(["Floating UI: `platform` property was not passed to config. If you","want to use Floating UI on the web, install @floating-ui/dom","instead of the /core package. Otherwise, you can create your own","`platform`: https://floating-ui.com/docs/platform"].join(" ")),i.filter(C=>{let{name:M}=C;return M==="autoPlacement"||M==="flip"}).length>1)throw new Error(["Floating UI: duplicate `flip` and/or `autoPlacement`","middleware detected. This will lead to an infinite loop. Ensure only","one of either has been passed to the `middleware` array."].join(" "));let h=await s.getElementRects({reference:e,floating:t,strategy:o}),{x:p,y:x}=Si(h,r,u),b=r,E={},_=0;for(let C=0;C100)throw new Error(["Floating UI: The middleware lifecycle appears to be","running in an infinite loop. This is usually caused by a `reset`","continually being returned without a break condition."].join(" "));let{name:M,fn:U}=i[C],{x:V,y:B,data:Q,reset:q}=await U({x:p,y:x,initialPlacement:r,placement:b,strategy:o,middlewareData:E,rects:h,platform:s,elements:{reference:e,floating:t}});if(p=V??p,x=B??x,E={...E,[M]:{...E[M],...Q}},q){typeof q=="object"&&(q.placement&&(b=q.placement),q.rects&&(h=q.rects===!0?await s.getElementRects({reference:e,floating:t,strategy:o}):q.rects),{x:p,y:x}=Si(h,b,u)),C=-1;continue}}return{x:p,y:x,placement:b,strategy:o,middlewareData:E}};function $o(e){return{top:0,right:0,bottom:0,left:0,...e}}function Kr(e){return typeof e!="number"?$o(e):{top:e,right:e,bottom:e,left:e}}function Bn(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}async function En(e,t){var n;t===void 0&&(t={});let{x:r,y:o,platform:i,rects:s,elements:u,strategy:h}=e,{boundary:p="clippingAncestors",rootBoundary:x="viewport",elementContext:b="floating",altBoundary:E=!1,padding:_=0}=t,C=Kr(_),U=u[E?b==="floating"?"reference":"floating":b],V=Bn(await i.getClippingRect({element:(n=await(i.isElement==null?void 0:i.isElement(U)))==null||n?U:U.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(u.floating)),boundary:p,rootBoundary:x,strategy:h})),B=Bn(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({rect:b==="floating"?{...s.floating,x:r,y:o}:s.reference,offsetParent:await(i.getOffsetParent==null?void 0:i.getOffsetParent(u.floating)),strategy:h}):s[b]);return{top:V.top-B.top+C.top,bottom:B.bottom-V.bottom+C.bottom,left:V.left-B.left+C.left,right:B.right-V.right+C.right}}var Ni=Math.min,Jt=Math.max;function Yr(e,t,n){return Jt(e,Ni(t,n))}var Li=e=>({name:"arrow",options:e,async fn(t){let{element:n,padding:r=0}=e??{},{x:o,y:i,placement:s,rects:u,platform:h}=t;if(n==null)return console.warn("Floating UI: No `element` was passed to the `arrow` middleware."),{};let p=Kr(r),x={x:o,y:i},b=On(s),E=Gr(b),_=await h.getDimensions(n),C=b==="y"?"top":"left",M=b==="y"?"bottom":"right",U=u.reference[E]+u.reference[b]-x[b]-u.floating[E],V=x[b]-u.reference[b],B=await(h.getOffsetParent==null?void 0:h.getOffsetParent(n)),Q=B?b==="y"?B.clientHeight||0:B.clientWidth||0:0,q=U/2-V/2,xe=p[C],se=Q-_[E]-p[M],ie=Q/2-_[E]/2+q,be=Yr(xe,ie,se);return{data:{[b]:be,centerOffset:ie-be}}}}),Wo={left:"right",right:"left",bottom:"top",top:"bottom"};function lr(e){return e.replace(/left|right|bottom|top/g,t=>Wo[t])}function ki(e,t,n){n===void 0&&(n=!1);let r=cn(e),o=On(e),i=Gr(o),s=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(s=lr(s)),{main:s,cross:lr(s)}}var Vo={start:"end",end:"start"};function Xr(e){return e.replace(/start|end/g,t=>Vo[t])}var ji=["top","right","bottom","left"],Uo=ji.reduce((e,t)=>e.concat(t,t+"-start",t+"-end"),[]);function zo(e,t,n){return(e?[...n.filter(o=>cn(o)===e),...n.filter(o=>cn(o)!==e)]:n.filter(o=>Ot(o)===o)).filter(o=>e?cn(o)===e||(t?Xr(o)!==o:!1):!0)}var Jr=function(e){return e===void 0&&(e={}),{name:"autoPlacement",options:e,async fn(t){var n,r,o,i,s;let{x:u,y:h,rects:p,middlewareData:x,placement:b,platform:E,elements:_}=t,{alignment:C=null,allowedPlacements:M=Uo,autoAlignment:U=!0,...V}=e,B=zo(C,U,M),Q=await En(t,V),q=(n=(r=x.autoPlacement)==null?void 0:r.index)!=null?n:0,xe=B[q];if(xe==null)return{};let{main:se,cross:ie}=ki(xe,p,await(E.isRTL==null?void 0:E.isRTL(_.floating)));if(b!==xe)return{x:u,y:h,reset:{placement:B[0]}};let be=[Q[Ot(xe)],Q[se],Q[ie]],R=[...(o=(i=x.autoPlacement)==null?void 0:i.overflows)!=null?o:[],{placement:xe,overflows:be}],fe=B[q+1];if(fe)return{data:{index:q+1,overflows:R},reset:{placement:fe}};let ce=R.slice().sort((v,c)=>v.overflows[0]-c.overflows[0]),l=(s=ce.find(v=>{let{overflows:c}=v;return c.every(H=>H<=0)}))==null?void 0:s.placement,d=l??ce[0].placement;return d!==b?{data:{index:q+1,overflows:R},reset:{placement:d}}:{}}}};function Yo(e){let t=lr(e);return[Xr(e),t,Xr(t)]}var Bi=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n;let{placement:r,middlewareData:o,rects:i,initialPlacement:s,platform:u,elements:h}=t,{mainAxis:p=!0,crossAxis:x=!0,fallbackPlacements:b,fallbackStrategy:E="bestFit",flipAlignment:_=!0,...C}=e,M=Ot(r),V=b||(M===s||!_?[lr(s)]:Yo(s)),B=[s,...V],Q=await En(t,C),q=[],xe=((n=o.flip)==null?void 0:n.overflows)||[];if(p&&q.push(Q[M]),x){let{main:R,cross:fe}=ki(r,i,await(u.isRTL==null?void 0:u.isRTL(h.floating)));q.push(Q[R],Q[fe])}if(xe=[...xe,{placement:r,overflows:q}],!q.every(R=>R<=0)){var se,ie;let R=((se=(ie=o.flip)==null?void 0:ie.index)!=null?se:0)+1,fe=B[R];if(fe)return{data:{index:R,overflows:xe},reset:{placement:fe}};let ce="bottom";switch(E){case"bestFit":{var be;let l=(be=xe.map(d=>[d,d.overflows.filter(v=>v>0).reduce((v,c)=>v+c,0)]).sort((d,v)=>d[1]-v[1])[0])==null?void 0:be[0].placement;l&&(ce=l);break}case"initialPlacement":ce=s;break}if(r!==ce)return{reset:{placement:ce}}}return{}}}};function Ai(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Ci(e){return ji.some(t=>e[t]>=0)}var Hi=function(e){let{strategy:t="referenceHidden",...n}=e===void 0?{}:e;return{name:"hide",async fn(r){let{rects:o}=r;switch(t){case"referenceHidden":{let i=await En(r,{...n,elementContext:"reference"}),s=Ai(i,o.reference);return{data:{referenceHiddenOffsets:s,referenceHidden:Ci(s)}}}case"escaped":{let i=await En(r,{...n,altBoundary:!0}),s=Ai(i,o.floating);return{data:{escapedOffsets:s,escaped:Ci(s)}}}default:return{}}}}};function Xo(e,t,n,r){r===void 0&&(r=!1);let o=Ot(e),i=cn(e),s=On(e)==="x",u=["left","top"].includes(o)?-1:1,h=r&&s?-1:1,p=typeof n=="function"?n({...t,placement:e}):n,{mainAxis:x,crossAxis:b,alignmentAxis:E}=typeof p=="number"?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...p};return i&&typeof E=="number"&&(b=i==="end"?E*-1:E),s?{x:b*h,y:x*u}:{x:x*u,y:b*h}}var $i=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){let{x:n,y:r,placement:o,rects:i,platform:s,elements:u}=t,h=Xo(o,i,e,await(s.isRTL==null?void 0:s.isRTL(u.floating)));return{x:n+h.x,y:r+h.y,data:h}}}};function qo(e){return e==="x"?"y":"x"}var Wi=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){let{x:n,y:r,placement:o}=t,{mainAxis:i=!0,crossAxis:s=!1,limiter:u={fn:U=>{let{x:V,y:B}=U;return{x:V,y:B}}},...h}=e,p={x:n,y:r},x=await En(t,h),b=On(Ot(o)),E=qo(b),_=p[b],C=p[E];if(i){let U=b==="y"?"top":"left",V=b==="y"?"bottom":"right",B=_+x[U],Q=_-x[V];_=Yr(B,_,Q)}if(s){let U=E==="y"?"top":"left",V=E==="y"?"bottom":"right",B=C+x[U],Q=C-x[V];C=Yr(B,C,Q)}let M=u.fn({...t,[b]:_,[E]:C});return{...M,data:{x:M.x-n,y:M.y-r}}}}},Vi=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){let{placement:n,rects:r,platform:o,elements:i}=t,{apply:s,...u}=e,h=await En(t,u),p=Ot(n),x=cn(n),b,E;p==="top"||p==="bottom"?(b=p,E=x===(await(o.isRTL==null?void 0:o.isRTL(i.floating))?"start":"end")?"left":"right"):(E=p,b=x==="end"?"top":"bottom");let _=Jt(h.left,0),C=Jt(h.right,0),M=Jt(h.top,0),U=Jt(h.bottom,0),V={height:r.floating.height-(["left","right"].includes(n)?2*(M!==0||U!==0?M+U:Jt(h.top,h.bottom)):h[b]),width:r.floating.width-(["top","bottom"].includes(n)?2*(_!==0||C!==0?_+C:Jt(h.left,h.right)):h[E])},B=await o.getDimensions(i.floating);s?.({...V,...r});let Q=await o.getDimensions(i.floating);return B.width!==Q.width||B.height!==Q.height?{reset:{rects:!0}}:{}}}},Ui=function(e){return e===void 0&&(e={}),{name:"inline",options:e,async fn(t){var n;let{placement:r,elements:o,rects:i,platform:s,strategy:u}=t,{padding:h=2,x:p,y:x}=e,b=Bn(s.convertOffsetParentRelativeRectToViewportRelativeRect?await s.convertOffsetParentRelativeRectToViewportRelativeRect({rect:i.reference,offsetParent:await(s.getOffsetParent==null?void 0:s.getOffsetParent(o.floating)),strategy:u}):i.reference),E=(n=await(s.getClientRects==null?void 0:s.getClientRects(o.reference)))!=null?n:[],_=Kr(h);function C(){if(E.length===2&&E[0].left>E[1].right&&p!=null&&x!=null){var U;return(U=E.find(V=>p>V.left-_.left&&pV.top-_.top&&x=2){if(On(r)==="x"){let ce=E[0],l=E[E.length-1],d=Ot(r)==="top",v=ce.top,c=l.bottom,H=d?ce.left:l.left,T=d?ce.right:l.right,P=T-H,G=c-v;return{top:v,bottom:c,left:H,right:T,width:P,height:G,x:H,y:v}}let V=Ot(r)==="left",B=Jt(...E.map(ce=>ce.right)),Q=Ni(...E.map(ce=>ce.left)),q=E.filter(ce=>V?ce.left===Q:ce.right===B),xe=q[0].top,se=q[q.length-1].bottom,ie=Q,be=B,R=be-ie,fe=se-xe;return{top:xe,bottom:se,left:ie,right:be,width:R,height:fe,x:ie,y:xe}}return b}let M=await s.getElementRects({reference:{getBoundingClientRect:C},floating:o.floating,strategy:u});return i.reference.x!==M.reference.x||i.reference.y!==M.reference.y||i.reference.width!==M.reference.width||i.reference.height!==M.reference.height?{reset:{rects:M}}:{}}}};function zi(e){return e&&e.document&&e.location&&e.alert&&e.setInterval}function Ft(e){if(e==null)return window;if(!zi(e)){let t=e.ownerDocument;return t&&t.defaultView||window}return e}function Hn(e){return Ft(e).getComputedStyle(e)}function Rt(e){return zi(e)?"":e?(e.nodeName||"").toLowerCase():""}function St(e){return e instanceof Ft(e).HTMLElement}function Qt(e){return e instanceof Ft(e).Element}function Go(e){return e instanceof Ft(e).Node}function Qr(e){if(typeof ShadowRoot>"u")return!1;let t=Ft(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function cr(e){let{overflow:t,overflowX:n,overflowY:r}=Hn(e);return/auto|scroll|overlay|hidden/.test(t+r+n)}function Ko(e){return["table","td","th"].includes(Rt(e))}function Yi(e){let t=navigator.userAgent.toLowerCase().includes("firefox"),n=Hn(e);return n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].includes(n.willChange)||t&&n.willChange==="filter"||t&&(n.filter?n.filter!=="none":!1)}function Xi(){return!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}var Di=Math.min,kn=Math.max,fr=Math.round;function It(e,t,n){var r,o,i,s;t===void 0&&(t=!1),n===void 0&&(n=!1);let u=e.getBoundingClientRect(),h=1,p=1;t&&St(e)&&(h=e.offsetWidth>0&&fr(u.width)/e.offsetWidth||1,p=e.offsetHeight>0&&fr(u.height)/e.offsetHeight||1);let x=Qt(e)?Ft(e):window,b=!Xi()&&n,E=(u.left+(b&&(r=(o=x.visualViewport)==null?void 0:o.offsetLeft)!=null?r:0))/h,_=(u.top+(b&&(i=(s=x.visualViewport)==null?void 0:s.offsetTop)!=null?i:0))/p,C=u.width/h,M=u.height/p;return{width:C,height:M,top:_,right:E+C,bottom:_+M,left:E,x:E,y:_}}function Zt(e){return((Go(e)?e.ownerDocument:e.document)||window.document).documentElement}function dr(e){return Qt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function qi(e){return It(Zt(e)).left+dr(e).scrollLeft}function Jo(e){let t=It(e);return fr(t.width)!==e.offsetWidth||fr(t.height)!==e.offsetHeight}function Qo(e,t,n){let r=St(t),o=Zt(t),i=It(e,r&&Jo(t),n==="fixed"),s={scrollLeft:0,scrollTop:0},u={x:0,y:0};if(r||!r&&n!=="fixed")if((Rt(t)!=="body"||cr(o))&&(s=dr(t)),St(t)){let h=It(t,!0);u.x=h.x+t.clientLeft,u.y=h.y+t.clientTop}else o&&(u.x=qi(o));return{x:i.left+s.scrollLeft-u.x,y:i.top+s.scrollTop-u.y,width:i.width,height:i.height}}function Gi(e){return Rt(e)==="html"?e:e.assignedSlot||e.parentNode||(Qr(e)?e.host:null)||Zt(e)}function _i(e){return!St(e)||getComputedStyle(e).position==="fixed"?null:e.offsetParent}function Zo(e){let t=Gi(e);for(Qr(t)&&(t=t.host);St(t)&&!["html","body"].includes(Rt(t));){if(Yi(t))return t;t=t.parentNode}return null}function qr(e){let t=Ft(e),n=_i(e);for(;n&&Ko(n)&&getComputedStyle(n).position==="static";)n=_i(n);return n&&(Rt(n)==="html"||Rt(n)==="body"&&getComputedStyle(n).position==="static"&&!Yi(n))?t:n||Zo(e)||t}function Ti(e){if(St(e))return{width:e.offsetWidth,height:e.offsetHeight};let t=It(e);return{width:t.width,height:t.height}}function ea(e){let{rect:t,offsetParent:n,strategy:r}=e,o=St(n),i=Zt(n);if(n===i)return t;let s={scrollLeft:0,scrollTop:0},u={x:0,y:0};if((o||!o&&r!=="fixed")&&((Rt(n)!=="body"||cr(i))&&(s=dr(n)),St(n))){let h=It(n,!0);u.x=h.x+n.clientLeft,u.y=h.y+n.clientTop}return{...t,x:t.x-s.scrollLeft+u.x,y:t.y-s.scrollTop+u.y}}function ta(e,t){let n=Ft(e),r=Zt(e),o=n.visualViewport,i=r.clientWidth,s=r.clientHeight,u=0,h=0;if(o){i=o.width,s=o.height;let p=Xi();(p||!p&&t==="fixed")&&(u=o.offsetLeft,h=o.offsetTop)}return{width:i,height:s,x:u,y:h}}function na(e){var t;let n=Zt(e),r=dr(e),o=(t=e.ownerDocument)==null?void 0:t.body,i=kn(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=kn(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),u=-r.scrollLeft+qi(e),h=-r.scrollTop;return Hn(o||n).direction==="rtl"&&(u+=kn(n.clientWidth,o?o.clientWidth:0)-i),{width:i,height:s,x:u,y:h}}function Ki(e){let t=Gi(e);return["html","body","#document"].includes(Rt(t))?e.ownerDocument.body:St(t)&&cr(t)?t:Ki(t)}function ur(e,t){var n;t===void 0&&(t=[]);let r=Ki(e),o=r===((n=e.ownerDocument)==null?void 0:n.body),i=Ft(r),s=o?[i].concat(i.visualViewport||[],cr(r)?r:[]):r,u=t.concat(s);return o?u:u.concat(ur(s))}function ra(e,t){let n=t==null||t.getRootNode==null?void 0:t.getRootNode();if(e!=null&&e.contains(t))return!0;if(n&&Qr(n)){let r=t;do{if(r&&e===r)return!0;r=r.parentNode||r.host}while(r)}return!1}function ia(e,t){let n=It(e,!1,t==="fixed"),r=n.top+e.clientTop,o=n.left+e.clientLeft;return{top:r,left:o,x:o,y:r,right:o+e.clientWidth,bottom:r+e.clientHeight,width:e.clientWidth,height:e.clientHeight}}function Pi(e,t,n){return t==="viewport"?Bn(ta(e,n)):Qt(t)?ia(t,n):Bn(na(Zt(e)))}function oa(e){let t=ur(e),r=["absolute","fixed"].includes(Hn(e).position)&&St(e)?qr(e):e;return Qt(r)?t.filter(o=>Qt(o)&&ra(o,r)&&Rt(o)!=="body"):[]}function aa(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e,s=[...n==="clippingAncestors"?oa(t):[].concat(n),r],u=s[0],h=s.reduce((p,x)=>{let b=Pi(t,x,o);return p.top=kn(b.top,p.top),p.right=Di(b.right,p.right),p.bottom=Di(b.bottom,p.bottom),p.left=kn(b.left,p.left),p},Pi(t,u,o));return{width:h.right-h.left,height:h.bottom-h.top,x:h.left,y:h.top}}var sa={getClippingRect:aa,convertOffsetParentRelativeRectToViewportRelativeRect:ea,isElement:Qt,getDimensions:Ti,getOffsetParent:qr,getDocumentElement:Zt,getElementRects:e=>{let{reference:t,floating:n,strategy:r}=e;return{reference:Qo(t,qr(n),r),floating:{...Ti(n),x:0,y:0}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>Hn(e).direction==="rtl"};function Mi(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:o=!0,ancestorResize:i=!0,elementResize:s=!0,animationFrame:u=!1}=r,h=!1,p=o&&!u,x=i&&!u,b=s&&!u,E=p||x?[...Qt(e)?ur(e):[],...ur(t)]:[];E.forEach(V=>{p&&V.addEventListener("scroll",n,{passive:!0}),x&&V.addEventListener("resize",n)});let _=null;b&&(_=new ResizeObserver(n),Qt(e)&&_.observe(e),_.observe(t));let C,M=u?It(e):null;u&&U();function U(){if(h)return;let V=It(e);M&&(V.x!==M.x||V.y!==M.y||V.width!==M.width||V.height!==M.height)&&n(),M=V,C=requestAnimationFrame(U)}return()=>{var V;h=!0,E.forEach(B=>{p&&B.removeEventListener("scroll",n),x&&B.removeEventListener("resize",n)}),(V=_)==null||V.disconnect(),_=null,u&&cancelAnimationFrame(C)}}var Ri=(e,t,n)=>Ho(e,t,{platform:sa,...n}),la=e=>{let t={placement:"bottom",middleware:[]},n=Object.keys(e),r=o=>e[o];return n.includes("offset")&&t.middleware.push($i(r("offset"))),n.includes("placement")&&(t.placement=r("placement")),n.includes("autoPlacement")&&!n.includes("flip")&&t.middleware.push(Jr(r("autoPlacement"))),n.includes("flip")&&t.middleware.push(Bi(r("flip"))),n.includes("shift")&&t.middleware.push(Wi(r("shift"))),n.includes("inline")&&t.middleware.push(Ui(r("inline"))),n.includes("arrow")&&t.middleware.push(Li(r("arrow"))),n.includes("hide")&&t.middleware.push(Hi(r("hide"))),n.includes("size")&&t.middleware.push(Vi(r("size"))),t},fa=(e,t)=>{let n={component:{trap:!1},float:{placement:"bottom",strategy:"absolute",middleware:[]}},r=o=>e[e.indexOf(o)+1];return e.includes("trap")&&(n.component.trap=!0),e.includes("teleport")&&(n.float.strategy="fixed"),e.includes("offset")&&n.float.middleware.push($i(t.offset||10)),e.includes("placement")&&(n.float.placement=r("placement")),e.includes("autoPlacement")&&!e.includes("flip")&&n.float.middleware.push(Jr(t.autoPlacement)),e.includes("flip")&&n.float.middleware.push(Bi(t.flip)),e.includes("shift")&&n.float.middleware.push(Wi(t.shift)),e.includes("inline")&&n.float.middleware.push(Ui(t.inline)),e.includes("arrow")&&n.float.middleware.push(Li(t.arrow)),e.includes("hide")&&n.float.middleware.push(Hi(t.hide)),e.includes("size")&&n.float.middleware.push(Vi(t.size)),n},ua=e=>{var t="0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz".split(""),n="";e||(e=Math.floor(Math.random()*t.length));for(var r=0;r{(t===void 0||t.includes(n))&&(r.forEach(o=>o()),delete e._x_attributeCleanups[n])})}var Zr=new MutationObserver(Ji),ei=!1;function va(){Zr.observe(document,{subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0}),ei=!0}function ga(){ma(),Zr.disconnect(),ei=!1}var jn=[],zr=!1;function ma(){jn=jn.concat(Zr.takeRecords()),jn.length&&!zr&&(zr=!0,queueMicrotask(()=>{ba(),zr=!1}))}function ba(){Ji(jn),jn.length=0}function Ii(e){if(!ei)return e();ga();let t=e();return va(),t}var ya=!1,Fi=[];function Ji(e){if(ya){Fi=Fi.concat(e);return}let t=[],n=[],r=new Map,o=new Map;for(let i=0;is.nodeType===1&&t.push(s)),e[i].removedNodes.forEach(s=>s.nodeType===1&&n.push(s))),e[i].type==="attributes")){let s=e[i].target,u=e[i].attributeName,h=e[i].oldValue,p=()=>{r.has(s)||r.set(s,[]),r.get(s).push({name:u,value:s.getAttribute(u)})},x=()=>{o.has(s)||o.set(s,[]),o.get(s).push(u)};s.hasAttribute(u)&&h===null?p():s.hasAttribute(u)?(x(),p()):x()}o.forEach((i,s)=>{ha(s,i)}),r.forEach((i,s)=>{ca.forEach(u=>u(s,i))});for(let i of n)if(!t.includes(i)&&(da.forEach(s=>s(i)),i._x_cleanups))for(;i._x_cleanups.length;)i._x_cleanups.pop()();t.forEach(i=>{i._x_ignoreSelf=!0,i._x_ignore=!0});for(let i of t)n.includes(i)||i.isConnected&&(delete i._x_ignoreSelf,delete i._x_ignore,pa.forEach(s=>s(i)),i._x_ignore=!0,i._x_ignoreSelf=!0);t.forEach(i=>{delete i._x_ignoreSelf,delete i._x_ignore}),t=null,n=null,r=null,o=null}function wa(e,t=()=>{}){let n=!1;return function(){n?t.apply(this,arguments):(n=!0,e.apply(this,arguments))}}function xa(e){let t={dismissable:!0,trap:!1};function n(i,s,u=null){if(s){if(s.hasAttribute("aria-expanded")||s.setAttribute("aria-expanded",!1),u.hasAttribute("id"))s.setAttribute("aria-controls",u.getAttribute("id"));else{let h=`panel-${ua(8)}`;s.setAttribute("aria-controls",h),u.setAttribute("id",h)}u.setAttribute("aria-modal",!0),u.setAttribute("role","dialog")}}let r=document.querySelectorAll('[\\@click^="$float"]'),o=document.querySelectorAll('[x-on\\:click^="$float"]');[...r,...o].forEach(i=>{let s=i.parentElement.closest("[x-data]"),u=s.querySelector('[x-ref="panel"]');n(s,i,u)}),e.magic("float",i=>(s={},u={})=>{let h={...t,...u},p=Object.keys(s).length>0?la(s):{middleware:[Jr()]},x=i,b=i.parentElement.closest("[x-data]"),E=b.querySelector('[x-ref="panel"]');function _(){return E.style.display=="block"}function C(){E.style.display="",x.setAttribute("aria-expanded",!1),h.trap&&E.setAttribute("x-trap",!1),Mi(i,E,V)}function M(){E.style.display="block",x.setAttribute("aria-expanded",!0),h.trap&&E.setAttribute("x-trap",!0),V()}function U(){_()?C():M()}async function V(){return await Ri(i,E,p).then(({middlewareData:B,placement:Q,x:q,y:xe})=>{if(B.arrow){let se=B.arrow?.x,ie=B.arrow?.y,be=p.middleware.filter(fe=>fe.name=="arrow")[0].options.element,R={top:"bottom",right:"left",bottom:"top",left:"right"}[Q.split("-")[0]];Object.assign(be.style,{left:se!=null?`${se}px`:"",top:ie!=null?`${ie}px`:"",right:"",bottom:"",[R]:"-4px"})}if(B.hide){let{referenceHidden:se}=B.hide;Object.assign(E.style,{visibility:se?"hidden":"visible"})}Object.assign(E.style,{left:`${q}px`,top:`${xe}px`})})}h.dismissable&&(window.addEventListener("click",B=>{!b.contains(B.target)&&_()&&U()}),window.addEventListener("keydown",B=>{B.key==="Escape"&&_()&&U()},!0)),U()}),e.directive("float",(i,{modifiers:s,expression:u},{evaluate:h,effect:p})=>{let x=u?h(u):{},b=s.length>0?fa(s,x):{},E=null;b.float.strategy=="fixed"&&(i.style.position="fixed");let _=R=>i.parentElement&&!i.parentElement.closest("[x-data]").contains(R.target)?i.close():null,C=R=>R.key==="Escape"?i.close():null,M=i.getAttribute("x-ref"),U=i.parentElement.closest("[x-data]"),V=U.querySelectorAll(`[\\@click^="$refs.${M}"]`),B=U.querySelectorAll(`[x-on\\:click^="$refs.${M}"]`);i.style.setProperty("display","none"),n(U,[...V,...B][0],i),i._x_isShown=!1,i.trigger=null,i._x_doHide||(i._x_doHide=()=>{Ii(()=>{i.style.setProperty("display","none",s.includes("important")?"important":void 0)})}),i._x_doShow||(i._x_doShow=()=>{Ii(()=>{i.style.setProperty("display","block",s.includes("important")?"important":void 0)})});let Q=()=>{i._x_doHide(),i._x_isShown=!1},q=()=>{i._x_doShow(),i._x_isShown=!0},xe=()=>setTimeout(q),se=wa(R=>R?q():Q(),R=>{typeof i._x_toggleAndCascadeWithTransitions=="function"?i._x_toggleAndCascadeWithTransitions(i,R,q,Q):R?xe():Q()}),ie,be=!0;p(()=>h(R=>{!be&&R===ie||(s.includes("immediate")&&(R?xe():Q()),se(R),ie=R,be=!1)})),i.open=async function(R){i.trigger=R.currentTarget?R.currentTarget:R,se(!0),i.trigger.setAttribute("aria-expanded",!0),b.component.trap&&i.setAttribute("x-trap",!0),E=Mi(i.trigger,i,()=>{Ri(i.trigger,i,b.float).then(({middlewareData:fe,placement:ce,x:l,y:d})=>{if(fe.arrow){let v=fe.arrow?.x,c=fe.arrow?.y,H=b.float.middleware.filter(P=>P.name=="arrow")[0].options.element,T={top:"bottom",right:"left",bottom:"top",left:"right"}[ce.split("-")[0]];Object.assign(H.style,{left:v!=null?`${v}px`:"",top:c!=null?`${c}px`:"",right:"",bottom:"",[T]:"-4px"})}if(fe.hide){let{referenceHidden:v}=fe.hide;Object.assign(i.style,{visibility:v?"hidden":"visible"})}Object.assign(i.style,{left:`${l}px`,top:`${d}px`})})}),window.addEventListener("click",_),window.addEventListener("keydown",C,!0)},i.close=function(){se(!1),i.trigger.setAttribute("aria-expanded",!1),b.component.trap&&i.setAttribute("x-trap",!1),E(),window.removeEventListener("click",_),window.removeEventListener("keydown",C,!1)},i.toggle=function(R){i._x_isShown?i.close():i.open(R)}})}var Qi=xa;function Ea(e){e.store("lazyLoadedAssets",{loaded:new Set,check(s){return Array.isArray(s)?s.every(u=>this.loaded.has(u)):this.loaded.has(s)},markLoaded(s){Array.isArray(s)?s.forEach(u=>this.loaded.add(u)):this.loaded.add(s)}});function t(s){return new CustomEvent(s,{bubbles:!0,composed:!0,cancelable:!0})}function n(s,u={},h,p){let x=document.createElement(s);for(let[b,E]of Object.entries(u))x[b]=E;return h&&(p?h.insertBefore(x,p):h.appendChild(x)),x}function r(s,u,h={},p=null,x=null){let b=s==="link"?`link[href="${u}"]`:`script[src="${u}"]`;if(document.querySelector(b)||e.store("lazyLoadedAssets").check(u))return Promise.resolve();let E=s==="link"?{...h,href:u}:{...h,src:u},_=n(s,E,p,x);return new Promise((C,M)=>{_.onload=()=>{e.store("lazyLoadedAssets").markLoaded(u),C()},_.onerror=()=>{M(new Error(`Failed to load ${s}: ${u}`))}})}async function o(s,u,h=null,p=null){let x={type:"text/css",rel:"stylesheet"};u&&(x.media=u);let b=document.head,E=null;if(h&&p){let _=document.querySelector(`link[href*="${p}"]`);_?(b=_.parentNode,E=h==="before"?_:_.nextSibling):console.warn(`Target (${p}) not found for ${s}. Appending to head.`)}await r("link",s,x,b,E)}async function i(s,u,h=null,p=null){let x,b;h&&p&&(x=document.querySelector(`script[src*="${p}"]`),x?b=h==="before"?x:x.nextSibling:console.warn(`Target (${p}) not found for ${s}. Appending to body.`));let E=u.has("body-start")?"prepend":"append";await r("script",s,{},x||document[u.has("body-end")?"body":"head"],b)}e.directive("load-css",(s,{expression:u},{evaluate:h})=>{let p=h(u),x=s.media,b=s.getAttribute("data-dispatch"),E=s.getAttribute("data-css-before")?"before":s.getAttribute("data-css-after")?"after":null,_=s.getAttribute("data-css-before")||s.getAttribute("data-css-after")||null;Promise.all(p.map(C=>o(C,x,E,_))).then(()=>{b&&window.dispatchEvent(t(b+"-css"))}).catch(C=>{console.error(C)})}),e.directive("load-js",(s,{expression:u,modifiers:h},{evaluate:p})=>{let x=p(u),b=new Set(h),E=s.getAttribute("data-js-before")?"before":s.getAttribute("data-js-after")?"after":null,_=s.getAttribute("data-js-before")||s.getAttribute("data-js-after")||null,C=s.getAttribute("data-dispatch");Promise.all(x.map(M=>i(M,b,E,_))).then(()=>{C&&window.dispatchEvent(t(C+"-js"))}).catch(M=>{console.error(M)})})}var Zi=Ea;var Ro=Bo(no(),1);function ro(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function Ct(e){for(var t=1;t=0)&&(n[o]=e[o]);return n}function Aa(e,t){if(e==null)return{};var n=Sa(e,t),r,o;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var Ca="1.15.2";function Nt(e){if(typeof window<"u"&&window.navigator)return!!navigator.userAgent.match(e)}var kt=Nt(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Gn=Nt(/Edge/i),io=Nt(/firefox/i),Un=Nt(/safari/i)&&!Nt(/chrome/i)&&!Nt(/android/i),po=Nt(/iP(ad|od|hone)/i),ho=Nt(/chrome/i)&&Nt(/android/i),vo={capture:!1,passive:!1};function Ce(e,t,n){e.addEventListener(t,n,!kt&&vo)}function Oe(e,t,n){e.removeEventListener(t,n,!kt&&vo)}function Or(e,t){if(t){if(t[0]===">"&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch{return!1}return!1}}function Da(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function bt(e,t,n,r){if(e){n=n||document;do{if(t!=null&&(t[0]===">"?e.parentNode===n&&Or(e,t):Or(e,t))||r&&e===n)return e;if(e===n)break}while(e=Da(e))}return null}var oo=/\s+/g;function st(e,t,n){if(e&&t)if(e.classList)e.classList[n?"add":"remove"](t);else{var r=(" "+e.className+" ").replace(oo," ").replace(" "+t+" "," ");e.className=(r+(n?" "+t:"")).replace(oo," ")}}function ne(e,t,n){var r=e&&e.style;if(r){if(n===void 0)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(e,""):e.currentStyle&&(n=e.currentStyle),t===void 0?n:n[t];!(t in r)&&t.indexOf("webkit")===-1&&(t="-webkit-"+t),r[t]=n+(typeof n=="string"?"":"px")}}function _n(e,t){var n="";if(typeof e=="string")n=e;else do{var r=ne(e,"transform");r&&r!=="none"&&(n=r+" "+n)}while(!t&&(e=e.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function go(e,t,n){if(e){var r=e.getElementsByTagName(t),o=0,i=r.length;if(n)for(;o=i:s=o<=i,!s)return r;if(r===At())break;r=nn(r,!1)}return!1}function Tn(e,t,n,r){for(var o=0,i=0,s=e.children;i2&&arguments[2]!==void 0?arguments[2]:{},o=r.evt,i=Aa(r,Na);Kn.pluginEvent.bind(re)(t,n,Ct({dragEl:N,parentEl:Ue,ghostEl:ue,rootEl:ke,nextEl:hn,lastDownEl:yr,cloneEl:We,cloneHidden:tn,dragStarted:$n,putSortable:Qe,activeSortable:re.active,originalEvent:o,oldIndex:Dn,oldDraggableIndex:Yn,newIndex:lt,newDraggableIndex:en,hideGhostForTarget:So,unhideGhostForTarget:Ao,cloneNowHidden:function(){tn=!0},cloneNowShown:function(){tn=!1},dispatchSortableEvent:function(u){rt({sortable:n,name:u,originalEvent:o})}},i))};function rt(e){Fa(Ct({putSortable:Qe,cloneEl:We,targetEl:N,rootEl:ke,oldIndex:Dn,oldDraggableIndex:Yn,newIndex:lt,newDraggableIndex:en},e))}var N,Ue,ue,ke,hn,yr,We,tn,Dn,lt,Yn,en,hr,Qe,Cn=!1,Sr=!1,Ar=[],dn,mt,ri,ii,lo,fo,$n,An,Xn,qn=!1,vr=!1,wr,tt,oi=[],ui=!1,Cr=[],_r=typeof document<"u",gr=po,uo=Gn||kt?"cssFloat":"float",La=_r&&!ho&&!po&&"draggable"in document.createElement("div"),xo=function(){if(_r){if(kt)return!1;var e=document.createElement("x");return e.style.cssText="pointer-events:auto",e.style.pointerEvents==="auto"}}(),Eo=function(t,n){var r=ne(t),o=parseInt(r.width)-parseInt(r.paddingLeft)-parseInt(r.paddingRight)-parseInt(r.borderLeftWidth)-parseInt(r.borderRightWidth),i=Tn(t,0,n),s=Tn(t,1,n),u=i&&ne(i),h=s&&ne(s),p=u&&parseInt(u.marginLeft)+parseInt(u.marginRight)+qe(i).width,x=h&&parseInt(h.marginLeft)+parseInt(h.marginRight)+qe(s).width;if(r.display==="flex")return r.flexDirection==="column"||r.flexDirection==="column-reverse"?"vertical":"horizontal";if(r.display==="grid")return r.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(i&&u.float&&u.float!=="none"){var b=u.float==="left"?"left":"right";return s&&(h.clear==="both"||h.clear===b)?"vertical":"horizontal"}return i&&(u.display==="block"||u.display==="flex"||u.display==="table"||u.display==="grid"||p>=o&&r[uo]==="none"||s&&r[uo]==="none"&&p+x>o)?"vertical":"horizontal"},ka=function(t,n,r){var o=r?t.left:t.top,i=r?t.right:t.bottom,s=r?t.width:t.height,u=r?n.left:n.top,h=r?n.right:n.bottom,p=r?n.width:n.height;return o===u||i===h||o+s/2===u+p/2},ja=function(t,n){var r;return Ar.some(function(o){var i=o[ft].options.emptyInsertThreshold;if(!(!i||hi(o))){var s=qe(o),u=t>=s.left-i&&t<=s.right+i,h=n>=s.top-i&&n<=s.bottom+i;if(u&&h)return r=o}}),r},Oo=function(t){function n(i,s){return function(u,h,p,x){var b=u.options.group.name&&h.options.group.name&&u.options.group.name===h.options.group.name;if(i==null&&(s||b))return!0;if(i==null||i===!1)return!1;if(s&&i==="clone")return i;if(typeof i=="function")return n(i(u,h,p,x),s)(u,h,p,x);var E=(s?u:h).options.group.name;return i===!0||typeof i=="string"&&i===E||i.join&&i.indexOf(E)>-1}}var r={},o=t.group;(!o||br(o)!="object")&&(o={name:o}),r.name=o.name,r.checkPull=n(o.pull,!0),r.checkPut=n(o.put),r.revertClone=o.revertClone,t.group=r},So=function(){!xo&&ue&&ne(ue,"display","none")},Ao=function(){!xo&&ue&&ne(ue,"display","")};_r&&!ho&&document.addEventListener("click",function(e){if(Sr)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),Sr=!1,!1},!0);var pn=function(t){if(N){t=t.touches?t.touches[0]:t;var n=ja(t.clientX,t.clientY);if(n){var r={};for(var o in t)t.hasOwnProperty(o)&&(r[o]=t[o]);r.target=r.rootEl=n,r.preventDefault=void 0,r.stopPropagation=void 0,n[ft]._onDragOver(r)}}},Ba=function(t){N&&N.parentNode[ft]._isOutsideThisEl(t.target)};function re(e,t){if(!(e&&e.nodeType&&e.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e));this.el=e,this.options=t=Lt({},t),e[ft]=this;var n={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return Eo(e,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(s,u){s.setData("Text",u.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:re.supportPointer!==!1&&"PointerEvent"in window&&!Un,emptyInsertThreshold:5};Kn.initializePlugins(this,e,n);for(var r in n)!(r in t)&&(t[r]=n[r]);Oo(t);for(var o in this)o.charAt(0)==="_"&&typeof this[o]=="function"&&(this[o]=this[o].bind(this));this.nativeDraggable=t.forceFallback?!1:La,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?Ce(e,"pointerdown",this._onTapStart):(Ce(e,"mousedown",this._onTapStart),Ce(e,"touchstart",this._onTapStart)),this.nativeDraggable&&(Ce(e,"dragover",this),Ce(e,"dragenter",this)),Ar.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),Lt(this,Ma())}re.prototype={constructor:re,_isOutsideThisEl:function(t){!this.el.contains(t)&&t!==this.el&&(An=null)},_getDirection:function(t,n){return typeof this.options.direction=="function"?this.options.direction.call(this,t,n,N):this.options.direction},_onTapStart:function(t){if(t.cancelable){var n=this,r=this.el,o=this.options,i=o.preventOnFilter,s=t.type,u=t.touches&&t.touches[0]||t.pointerType&&t.pointerType==="touch"&&t,h=(u||t).target,p=t.target.shadowRoot&&(t.path&&t.path[0]||t.composedPath&&t.composedPath()[0])||h,x=o.filter;if(Xa(r),!N&&!(/mousedown|pointerdown/.test(s)&&t.button!==0||o.disabled)&&!p.isContentEditable&&!(!this.nativeDraggable&&Un&&h&&h.tagName.toUpperCase()==="SELECT")&&(h=bt(h,o.draggable,r,!1),!(h&&h.animated)&&yr!==h)){if(Dn=ct(h),Yn=ct(h,o.draggable),typeof x=="function"){if(x.call(this,t,h,this)){rt({sortable:n,rootEl:p,name:"filter",targetEl:h,toEl:r,fromEl:r}),ot("filter",n,{evt:t}),i&&t.cancelable&&t.preventDefault();return}}else if(x&&(x=x.split(",").some(function(b){if(b=bt(p,b.trim(),r,!1),b)return rt({sortable:n,rootEl:b,name:"filter",targetEl:h,fromEl:r,toEl:r}),ot("filter",n,{evt:t}),!0}),x)){i&&t.cancelable&&t.preventDefault();return}o.handle&&!bt(p,o.handle,r,!1)||this._prepareDragStart(t,u,h)}}},_prepareDragStart:function(t,n,r){var o=this,i=o.el,s=o.options,u=i.ownerDocument,h;if(r&&!N&&r.parentNode===i){var p=qe(r);if(ke=i,N=r,Ue=N.parentNode,hn=N.nextSibling,yr=r,hr=s.group,re.dragged=N,dn={target:N,clientX:(n||t).clientX,clientY:(n||t).clientY},lo=dn.clientX-p.left,fo=dn.clientY-p.top,this._lastX=(n||t).clientX,this._lastY=(n||t).clientY,N.style["will-change"]="all",h=function(){if(ot("delayEnded",o,{evt:t}),re.eventCanceled){o._onDrop();return}o._disableDelayedDragEvents(),!io&&o.nativeDraggable&&(N.draggable=!0),o._triggerDragStart(t,n),rt({sortable:o,name:"choose",originalEvent:t}),st(N,s.chosenClass,!0)},s.ignore.split(",").forEach(function(x){go(N,x.trim(),ai)}),Ce(u,"dragover",pn),Ce(u,"mousemove",pn),Ce(u,"touchmove",pn),Ce(u,"mouseup",o._onDrop),Ce(u,"touchend",o._onDrop),Ce(u,"touchcancel",o._onDrop),io&&this.nativeDraggable&&(this.options.touchStartThreshold=4,N.draggable=!0),ot("delayStart",this,{evt:t}),s.delay&&(!s.delayOnTouchOnly||n)&&(!this.nativeDraggable||!(Gn||kt))){if(re.eventCanceled){this._onDrop();return}Ce(u,"mouseup",o._disableDelayedDrag),Ce(u,"touchend",o._disableDelayedDrag),Ce(u,"touchcancel",o._disableDelayedDrag),Ce(u,"mousemove",o._delayedDragTouchMoveHandler),Ce(u,"touchmove",o._delayedDragTouchMoveHandler),s.supportPointer&&Ce(u,"pointermove",o._delayedDragTouchMoveHandler),o._dragStartTimer=setTimeout(h,s.delay)}else h()}},_delayedDragTouchMoveHandler:function(t){var n=t.touches?t.touches[0]:t;Math.max(Math.abs(n.clientX-this._lastX),Math.abs(n.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){N&&ai(N),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;Oe(t,"mouseup",this._disableDelayedDrag),Oe(t,"touchend",this._disableDelayedDrag),Oe(t,"touchcancel",this._disableDelayedDrag),Oe(t,"mousemove",this._delayedDragTouchMoveHandler),Oe(t,"touchmove",this._delayedDragTouchMoveHandler),Oe(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,n){n=n||t.pointerType=="touch"&&t,!this.nativeDraggable||n?this.options.supportPointer?Ce(document,"pointermove",this._onTouchMove):n?Ce(document,"touchmove",this._onTouchMove):Ce(document,"mousemove",this._onTouchMove):(Ce(N,"dragend",this),Ce(ke,"dragstart",this._onDragStart));try{document.selection?xr(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(t,n){if(Cn=!1,ke&&N){ot("dragStarted",this,{evt:n}),this.nativeDraggable&&Ce(document,"dragover",Ba);var r=this.options;!t&&st(N,r.dragClass,!1),st(N,r.ghostClass,!0),re.active=this,t&&this._appendGhost(),rt({sortable:this,name:"start",originalEvent:n})}else this._nulling()},_emulateDragOver:function(){if(mt){this._lastX=mt.clientX,this._lastY=mt.clientY,So();for(var t=document.elementFromPoint(mt.clientX,mt.clientY),n=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(mt.clientX,mt.clientY),t!==n);)n=t;if(N.parentNode[ft]._isOutsideThisEl(t),n)do{if(n[ft]){var r=void 0;if(r=n[ft]._onDragOver({clientX:mt.clientX,clientY:mt.clientY,target:t,rootEl:n}),r&&!this.options.dragoverBubble)break}t=n}while(n=n.parentNode);Ao()}},_onTouchMove:function(t){if(dn){var n=this.options,r=n.fallbackTolerance,o=n.fallbackOffset,i=t.touches?t.touches[0]:t,s=ue&&_n(ue,!0),u=ue&&s&&s.a,h=ue&&s&&s.d,p=gr&&tt&&so(tt),x=(i.clientX-dn.clientX+o.x)/(u||1)+(p?p[0]-oi[0]:0)/(u||1),b=(i.clientY-dn.clientY+o.y)/(h||1)+(p?p[1]-oi[1]:0)/(h||1);if(!re.active&&!Cn){if(r&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))=0&&(rt({rootEl:Ue,name:"add",toEl:Ue,fromEl:ke,originalEvent:t}),rt({sortable:this,name:"remove",toEl:Ue,originalEvent:t}),rt({rootEl:Ue,name:"sort",toEl:Ue,fromEl:ke,originalEvent:t}),rt({sortable:this,name:"sort",toEl:Ue,originalEvent:t})),Qe&&Qe.save()):lt!==Dn&<>=0&&(rt({sortable:this,name:"update",toEl:Ue,originalEvent:t}),rt({sortable:this,name:"sort",toEl:Ue,originalEvent:t})),re.active&&((lt==null||lt===-1)&&(lt=Dn,en=Yn),rt({sortable:this,name:"end",toEl:Ue,originalEvent:t}),this.save()))),this._nulling()},_nulling:function(){ot("nulling",this),ke=N=Ue=ue=hn=We=yr=tn=dn=mt=$n=lt=en=Dn=Yn=An=Xn=Qe=hr=re.dragged=re.ghost=re.clone=re.active=null,Cr.forEach(function(t){t.checked=!0}),Cr.length=ri=ii=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":N&&(this._onDragOver(t),Ha(t));break;case"selectstart":t.preventDefault();break}},toArray:function(){for(var t=[],n,r=this.el.children,o=0,i=r.length,s=this.options;oo.right+i||e.clientY>r.bottom&&e.clientX>r.left:e.clientY>o.bottom+i||e.clientX>r.right&&e.clientY>r.top}function Ua(e,t,n,r,o,i,s,u){var h=r?e.clientY:e.clientX,p=r?n.height:n.width,x=r?n.top:n.left,b=r?n.bottom:n.right,E=!1;if(!s){if(u&&wrx+p*i/2:hb-wr)return-Xn}else if(h>x+p*(1-o)/2&&hb-p*i/2)?h>x+p/2?1:-1:0}function za(e){return ct(N){e.directive("sortable",t=>{let n=parseInt(t.dataset?.sortableAnimationDuration);n!==0&&!n&&(n=300),t.sortable=mi.create(t,{draggable:"[x-sortable-item]",handle:"[x-sortable-handle]",dataIdAttr:"x-sortable-item",animation:n,ghostClass:"fi-sortable-ghost"})})};var Ga=Object.create,wi=Object.defineProperty,Ka=Object.getPrototypeOf,Ja=Object.prototype.hasOwnProperty,Qa=Object.getOwnPropertyNames,Za=Object.getOwnPropertyDescriptor,es=e=>wi(e,"__esModule",{value:!0}),_o=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),ts=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Qa(t))!Ja.call(e,r)&&r!=="default"&&wi(e,r,{get:()=>t[r],enumerable:!(n=Za(t,r))||n.enumerable});return e},To=e=>ts(es(wi(e!=null?Ga(Ka(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),ns=_o(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});function t(f){var a=f.getBoundingClientRect();return{width:a.width,height:a.height,top:a.top,right:a.right,bottom:a.bottom,left:a.left,x:a.left,y:a.top}}function n(f){if(f==null)return window;if(f.toString()!=="[object Window]"){var a=f.ownerDocument;return a&&a.defaultView||window}return f}function r(f){var a=n(f),m=a.pageXOffset,A=a.pageYOffset;return{scrollLeft:m,scrollTop:A}}function o(f){var a=n(f).Element;return f instanceof a||f instanceof Element}function i(f){var a=n(f).HTMLElement;return f instanceof a||f instanceof HTMLElement}function s(f){if(typeof ShadowRoot>"u")return!1;var a=n(f).ShadowRoot;return f instanceof a||f instanceof ShadowRoot}function u(f){return{scrollLeft:f.scrollLeft,scrollTop:f.scrollTop}}function h(f){return f===n(f)||!i(f)?r(f):u(f)}function p(f){return f?(f.nodeName||"").toLowerCase():null}function x(f){return((o(f)?f.ownerDocument:f.document)||window.document).documentElement}function b(f){return t(x(f)).left+r(f).scrollLeft}function E(f){return n(f).getComputedStyle(f)}function _(f){var a=E(f),m=a.overflow,A=a.overflowX,D=a.overflowY;return/auto|scroll|overlay|hidden/.test(m+D+A)}function C(f,a,m){m===void 0&&(m=!1);var A=x(a),D=t(f),F=i(a),$={scrollLeft:0,scrollTop:0},k={x:0,y:0};return(F||!F&&!m)&&((p(a)!=="body"||_(A))&&($=h(a)),i(a)?(k=t(a),k.x+=a.clientLeft,k.y+=a.clientTop):A&&(k.x=b(A))),{x:D.left+$.scrollLeft-k.x,y:D.top+$.scrollTop-k.y,width:D.width,height:D.height}}function M(f){var a=t(f),m=f.offsetWidth,A=f.offsetHeight;return Math.abs(a.width-m)<=1&&(m=a.width),Math.abs(a.height-A)<=1&&(A=a.height),{x:f.offsetLeft,y:f.offsetTop,width:m,height:A}}function U(f){return p(f)==="html"?f:f.assignedSlot||f.parentNode||(s(f)?f.host:null)||x(f)}function V(f){return["html","body","#document"].indexOf(p(f))>=0?f.ownerDocument.body:i(f)&&_(f)?f:V(U(f))}function B(f,a){var m;a===void 0&&(a=[]);var A=V(f),D=A===((m=f.ownerDocument)==null?void 0:m.body),F=n(A),$=D?[F].concat(F.visualViewport||[],_(A)?A:[]):A,k=a.concat($);return D?k:k.concat(B(U($)))}function Q(f){return["table","td","th"].indexOf(p(f))>=0}function q(f){return!i(f)||E(f).position==="fixed"?null:f.offsetParent}function xe(f){var a=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,m=navigator.userAgent.indexOf("Trident")!==-1;if(m&&i(f)){var A=E(f);if(A.position==="fixed")return null}for(var D=U(f);i(D)&&["html","body"].indexOf(p(D))<0;){var F=E(D);if(F.transform!=="none"||F.perspective!=="none"||F.contain==="paint"||["transform","perspective"].indexOf(F.willChange)!==-1||a&&F.willChange==="filter"||a&&F.filter&&F.filter!=="none")return D;D=D.parentNode}return null}function se(f){for(var a=n(f),m=q(f);m&&Q(m)&&E(m).position==="static";)m=q(m);return m&&(p(m)==="html"||p(m)==="body"&&E(m).position==="static")?a:m||xe(f)||a}var ie="top",be="bottom",R="right",fe="left",ce="auto",l=[ie,be,R,fe],d="start",v="end",c="clippingParents",H="viewport",T="popper",P="reference",G=l.reduce(function(f,a){return f.concat([a+"-"+d,a+"-"+v])},[]),ze=[].concat(l,[ce]).reduce(function(f,a){return f.concat([a,a+"-"+d,a+"-"+v])},[]),Dt="beforeRead",jt="read",Tr="afterRead",Pr="beforeMain",Mr="main",Bt="afterMain",Jn="beforeWrite",Rr="write",Qn="afterWrite",_t=[Dt,jt,Tr,Pr,Mr,Bt,Jn,Rr,Qn];function Ir(f){var a=new Map,m=new Set,A=[];f.forEach(function(F){a.set(F.name,F)});function D(F){m.add(F.name);var $=[].concat(F.requires||[],F.requiresIfExists||[]);$.forEach(function(k){if(!m.has(k)){var Y=a.get(k);Y&&D(Y)}}),A.push(F)}return f.forEach(function(F){m.has(F.name)||D(F)}),A}function dt(f){var a=Ir(f);return _t.reduce(function(m,A){return m.concat(a.filter(function(D){return D.phase===A}))},[])}function Ht(f){var a;return function(){return a||(a=new Promise(function(m){Promise.resolve().then(function(){a=void 0,m(f())})})),a}}function yt(f){for(var a=arguments.length,m=new Array(a>1?a-1:0),A=1;A=0,A=m&&i(f)?se(f):f;return o(A)?a.filter(function(D){return o(D)&&Pn(D,A)&&p(D)!=="body"}):[]}function gn(f,a,m){var A=a==="clippingParents"?vn(f):[].concat(a),D=[].concat(A,[m]),F=D[0],$=D.reduce(function(k,Y){var te=nr(f,Y);return k.top=pt(te.top,k.top),k.right=rn(te.right,k.right),k.bottom=rn(te.bottom,k.bottom),k.left=pt(te.left,k.left),k},nr(f,F));return $.width=$.right-$.left,$.height=$.bottom-$.top,$.x=$.left,$.y=$.top,$}function on(f){return f.split("-")[1]}function ut(f){return["top","bottom"].indexOf(f)>=0?"x":"y"}function rr(f){var a=f.reference,m=f.element,A=f.placement,D=A?it(A):null,F=A?on(A):null,$=a.x+a.width/2-m.width/2,k=a.y+a.height/2-m.height/2,Y;switch(D){case ie:Y={x:$,y:a.y-m.height};break;case be:Y={x:$,y:a.y+a.height};break;case R:Y={x:a.x+a.width,y:k};break;case fe:Y={x:a.x-m.width,y:k};break;default:Y={x:a.x,y:a.y}}var te=D?ut(D):null;if(te!=null){var W=te==="y"?"height":"width";switch(F){case d:Y[te]=Y[te]-(a[W]/2-m[W]/2);break;case v:Y[te]=Y[te]+(a[W]/2-m[W]/2);break}}return Y}function ir(){return{top:0,right:0,bottom:0,left:0}}function or(f){return Object.assign({},ir(),f)}function ar(f,a){return a.reduce(function(m,A){return m[A]=f,m},{})}function Vt(f,a){a===void 0&&(a={});var m=a,A=m.placement,D=A===void 0?f.placement:A,F=m.boundary,$=F===void 0?c:F,k=m.rootBoundary,Y=k===void 0?H:k,te=m.elementContext,W=te===void 0?T:te,De=m.altBoundary,Ne=De===void 0?!1:De,Ae=m.padding,we=Ae===void 0?0:Ae,Me=or(typeof we!="number"?we:ar(we,l)),Ee=W===T?P:T,Be=f.elements.reference,Re=f.rects.popper,He=f.elements[Ne?Ee:W],ae=gn(o(He)?He:He.contextElement||x(f.elements.popper),$,Y),Pe=t(Be),_e=rr({reference:Pe,element:Re,strategy:"absolute",placement:D}),Le=Wt(Object.assign({},Re,_e)),Fe=W===T?Le:Pe,Ye={top:ae.top-Fe.top+Me.top,bottom:Fe.bottom-ae.bottom+Me.bottom,left:ae.left-Fe.left+Me.left,right:Fe.right-ae.right+Me.right},$e=f.modifiersData.offset;if(W===T&&$e){var Ve=$e[D];Object.keys(Ye).forEach(function(gt){var et=[R,be].indexOf(gt)>=0?1:-1,Pt=[ie,be].indexOf(gt)>=0?"y":"x";Ye[gt]+=Ve[Pt]*et})}return Ye}var sr="Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.",jr="Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.",mn={placement:"bottom",modifiers:[],strategy:"absolute"};function an(){for(var f=arguments.length,a=new Array(f),m=0;m100){console.error(jr);break}if(W.reset===!0){W.reset=!1,Pe=-1;continue}var _e=W.orderedModifiers[Pe],Le=_e.fn,Fe=_e.options,Ye=Fe===void 0?{}:Fe,$e=_e.name;typeof Le=="function"&&(W=Le({state:W,options:Ye,name:$e,instance:Ae})||W)}}},update:Ht(function(){return new Promise(function(Ee){Ae.forceUpdate(),Ee(W)})}),destroy:function(){Me(),Ne=!0}};if(!an(k,Y))return console.error(sr),Ae;Ae.setOptions(te).then(function(Ee){!Ne&&te.onFirstUpdate&&te.onFirstUpdate(Ee)});function we(){W.orderedModifiers.forEach(function(Ee){var Be=Ee.name,Re=Ee.options,He=Re===void 0?{}:Re,ae=Ee.effect;if(typeof ae=="function"){var Pe=ae({state:W,name:Be,instance:Ae,options:He}),_e=function(){};De.push(Pe||_e)}})}function Me(){De.forEach(function(Ee){return Ee()}),De=[]}return Ae}}var yn={passive:!0};function Br(f){var a=f.state,m=f.instance,A=f.options,D=A.scroll,F=D===void 0?!0:D,$=A.resize,k=$===void 0?!0:$,Y=n(a.elements.popper),te=[].concat(a.scrollParents.reference,a.scrollParents.popper);return F&&te.forEach(function(W){W.addEventListener("scroll",m.update,yn)}),k&&Y.addEventListener("resize",m.update,yn),function(){F&&te.forEach(function(W){W.removeEventListener("scroll",m.update,yn)}),k&&Y.removeEventListener("resize",m.update,yn)}}var Mn={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Br,data:{}};function Hr(f){var a=f.state,m=f.name;a.modifiersData[m]=rr({reference:a.rects.reference,element:a.rects.popper,strategy:"absolute",placement:a.placement})}var Rn={name:"popperOffsets",enabled:!0,phase:"read",fn:Hr,data:{}},$r={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Wr(f){var a=f.x,m=f.y,A=window,D=A.devicePixelRatio||1;return{x:$t($t(a*D)/D)||0,y:$t($t(m*D)/D)||0}}function In(f){var a,m=f.popper,A=f.popperRect,D=f.placement,F=f.offsets,$=f.position,k=f.gpuAcceleration,Y=f.adaptive,te=f.roundOffsets,W=te===!0?Wr(F):typeof te=="function"?te(F):F,De=W.x,Ne=De===void 0?0:De,Ae=W.y,we=Ae===void 0?0:Ae,Me=F.hasOwnProperty("x"),Ee=F.hasOwnProperty("y"),Be=fe,Re=ie,He=window;if(Y){var ae=se(m),Pe="clientHeight",_e="clientWidth";ae===n(m)&&(ae=x(m),E(ae).position!=="static"&&(Pe="scrollHeight",_e="scrollWidth")),ae=ae,D===ie&&(Re=be,we-=ae[Pe]-A.height,we*=k?1:-1),D===fe&&(Be=R,Ne-=ae[_e]-A.width,Ne*=k?1:-1)}var Le=Object.assign({position:$},Y&&$r);if(k){var Fe;return Object.assign({},Le,(Fe={},Fe[Re]=Ee?"0":"",Fe[Be]=Me?"0":"",Fe.transform=(He.devicePixelRatio||1)<2?"translate("+Ne+"px, "+we+"px)":"translate3d("+Ne+"px, "+we+"px, 0)",Fe))}return Object.assign({},Le,(a={},a[Re]=Ee?we+"px":"",a[Be]=Me?Ne+"px":"",a.transform="",a))}function g(f){var a=f.state,m=f.options,A=m.gpuAcceleration,D=A===void 0?!0:A,F=m.adaptive,$=F===void 0?!0:F,k=m.roundOffsets,Y=k===void 0?!0:k,te=E(a.elements.popper).transitionProperty||"";$&&["transform","top","right","bottom","left"].some(function(De){return te.indexOf(De)>=0})&&console.warn(["Popper: Detected CSS transitions on at least one of the following",'CSS properties: "transform", "top", "right", "bottom", "left".',` - -`,'Disable the "computeStyles" modifier\'s `adaptive` option to allow',"for smooth transitions, or remove these properties from the CSS","transition declaration on the popper element if only transitioning","opacity or background-color for example.",` - -`,"We recommend using the popper element as a wrapper around an inner","element that can have any CSS property transitioned for animations."].join(" "));var W={placement:it(a.placement),popper:a.elements.popper,popperRect:a.rects.popper,gpuAcceleration:D};a.modifiersData.popperOffsets!=null&&(a.styles.popper=Object.assign({},a.styles.popper,In(Object.assign({},W,{offsets:a.modifiersData.popperOffsets,position:a.options.strategy,adaptive:$,roundOffsets:Y})))),a.modifiersData.arrow!=null&&(a.styles.arrow=Object.assign({},a.styles.arrow,In(Object.assign({},W,{offsets:a.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:Y})))),a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-placement":a.placement})}var y={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:g,data:{}};function O(f){var a=f.state;Object.keys(a.elements).forEach(function(m){var A=a.styles[m]||{},D=a.attributes[m]||{},F=a.elements[m];!i(F)||!p(F)||(Object.assign(F.style,A),Object.keys(D).forEach(function($){var k=D[$];k===!1?F.removeAttribute($):F.setAttribute($,k===!0?"":k)}))})}function I(f){var a=f.state,m={popper:{position:a.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(a.elements.popper.style,m.popper),a.styles=m,a.elements.arrow&&Object.assign(a.elements.arrow.style,m.arrow),function(){Object.keys(a.elements).forEach(function(A){var D=a.elements[A],F=a.attributes[A]||{},$=Object.keys(a.styles.hasOwnProperty(A)?a.styles[A]:m[A]),k=$.reduce(function(Y,te){return Y[te]="",Y},{});!i(D)||!p(D)||(Object.assign(D.style,k),Object.keys(F).forEach(function(Y){D.removeAttribute(Y)}))})}}var z={name:"applyStyles",enabled:!0,phase:"write",fn:O,effect:I,requires:["computeStyles"]};function j(f,a,m){var A=it(f),D=[fe,ie].indexOf(A)>=0?-1:1,F=typeof m=="function"?m(Object.assign({},a,{placement:f})):m,$=F[0],k=F[1];return $=$||0,k=(k||0)*D,[fe,R].indexOf(A)>=0?{x:k,y:$}:{x:$,y:k}}function L(f){var a=f.state,m=f.options,A=f.name,D=m.offset,F=D===void 0?[0,0]:D,$=ze.reduce(function(W,De){return W[De]=j(De,a.rects,F),W},{}),k=$[a.placement],Y=k.x,te=k.y;a.modifiersData.popperOffsets!=null&&(a.modifiersData.popperOffsets.x+=Y,a.modifiersData.popperOffsets.y+=te),a.modifiersData[A]=$}var ge={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:L},oe={left:"right",right:"left",bottom:"top",top:"bottom"};function de(f){return f.replace(/left|right|bottom|top/g,function(a){return oe[a]})}var me={start:"end",end:"start"};function Te(f){return f.replace(/start|end/g,function(a){return me[a]})}function je(f,a){a===void 0&&(a={});var m=a,A=m.placement,D=m.boundary,F=m.rootBoundary,$=m.padding,k=m.flipVariations,Y=m.allowedAutoPlacements,te=Y===void 0?ze:Y,W=on(A),De=W?k?G:G.filter(function(we){return on(we)===W}):l,Ne=De.filter(function(we){return te.indexOf(we)>=0});Ne.length===0&&(Ne=De,console.error(["Popper: The `allowedAutoPlacements` option did not allow any","placements. Ensure the `placement` option matches the variation","of the allowed placements.",'For example, "auto" cannot be used to allow "bottom-start".','Use "auto-start" instead.'].join(" ")));var Ae=Ne.reduce(function(we,Me){return we[Me]=Vt(f,{placement:Me,boundary:D,rootBoundary:F,padding:$})[it(Me)],we},{});return Object.keys(Ae).sort(function(we,Me){return Ae[we]-Ae[Me]})}function Se(f){if(it(f)===ce)return[];var a=de(f);return[Te(f),a,Te(a)]}function Ie(f){var a=f.state,m=f.options,A=f.name;if(!a.modifiersData[A]._skip){for(var D=m.mainAxis,F=D===void 0?!0:D,$=m.altAxis,k=$===void 0?!0:$,Y=m.fallbackPlacements,te=m.padding,W=m.boundary,De=m.rootBoundary,Ne=m.altBoundary,Ae=m.flipVariations,we=Ae===void 0?!0:Ae,Me=m.allowedAutoPlacements,Ee=a.options.placement,Be=it(Ee),Re=Be===Ee,He=Y||(Re||!we?[de(Ee)]:Se(Ee)),ae=[Ee].concat(He).reduce(function(J,ve){return J.concat(it(ve)===ce?je(a,{placement:ve,boundary:W,rootBoundary:De,padding:te,flipVariations:we,allowedAutoPlacements:Me}):ve)},[]),Pe=a.rects.reference,_e=a.rects.popper,Le=new Map,Fe=!0,Ye=ae[0],$e=0;$e=0,ln=Pt?"width":"height",Xt=Vt(a,{placement:Ve,boundary:W,rootBoundary:De,altBoundary:Ne,padding:te}),Mt=Pt?et?R:fe:et?be:ie;Pe[ln]>_e[ln]&&(Mt=de(Mt));var Fn=de(Mt),qt=[];if(F&&qt.push(Xt[gt]<=0),k&&qt.push(Xt[Mt]<=0,Xt[Fn]<=0),qt.every(function(J){return J})){Ye=Ve,Fe=!1;break}Le.set(Ve,qt)}if(Fe)for(var wn=we?3:1,Nn=function(ve){var ye=ae.find(function(Ke){var Je=Le.get(Ke);if(Je)return Je.slice(0,ve).every(function(xt){return xt})});if(ye)return Ye=ye,"break"},S=wn;S>0;S--){var X=Nn(S);if(X==="break")break}a.placement!==Ye&&(a.modifiersData[A]._skip=!0,a.placement=Ye,a.reset=!0)}}var Z={name:"flip",enabled:!0,phase:"main",fn:Ie,requiresIfExists:["offset"],data:{_skip:!1}};function pe(f){return f==="x"?"y":"x"}function he(f,a,m){return pt(f,rn(a,m))}function K(f){var a=f.state,m=f.options,A=f.name,D=m.mainAxis,F=D===void 0?!0:D,$=m.altAxis,k=$===void 0?!1:$,Y=m.boundary,te=m.rootBoundary,W=m.altBoundary,De=m.padding,Ne=m.tether,Ae=Ne===void 0?!0:Ne,we=m.tetherOffset,Me=we===void 0?0:we,Ee=Vt(a,{boundary:Y,rootBoundary:te,padding:De,altBoundary:W}),Be=it(a.placement),Re=on(a.placement),He=!Re,ae=ut(Be),Pe=pe(ae),_e=a.modifiersData.popperOffsets,Le=a.rects.reference,Fe=a.rects.popper,Ye=typeof Me=="function"?Me(Object.assign({},a.rects,{placement:a.placement})):Me,$e={x:0,y:0};if(_e){if(F||k){var Ve=ae==="y"?ie:fe,gt=ae==="y"?be:R,et=ae==="y"?"height":"width",Pt=_e[ae],ln=_e[ae]+Ee[Ve],Xt=_e[ae]-Ee[gt],Mt=Ae?-Fe[et]/2:0,Fn=Re===d?Le[et]:Fe[et],qt=Re===d?-Fe[et]:-Le[et],wn=a.elements.arrow,Nn=Ae&&wn?M(wn):{width:0,height:0},S=a.modifiersData["arrow#persistent"]?a.modifiersData["arrow#persistent"].padding:ir(),X=S[Ve],J=S[gt],ve=he(0,Le[et],Nn[et]),ye=He?Le[et]/2-Mt-ve-X-Ye:Fn-ve-X-Ye,Ke=He?-Le[et]/2+Mt+ve+J+Ye:qt+ve+J+Ye,Je=a.elements.arrow&&se(a.elements.arrow),xt=Je?ae==="y"?Je.clientTop||0:Je.clientLeft||0:0,Ln=a.modifiersData.offset?a.modifiersData.offset[a.placement][ae]:0,Et=_e[ae]+ye-Ln-xt,xn=_e[ae]+Ke-Ln;if(F){var fn=he(Ae?rn(ln,Et):ln,Pt,Ae?pt(Xt,xn):Xt);_e[ae]=fn,$e[ae]=fn-Pt}if(k){var Gt=ae==="x"?ie:fe,Vr=ae==="x"?be:R,Kt=_e[Pe],un=Kt+Ee[Gt],xi=Kt-Ee[Vr],Ei=he(Ae?rn(un,Et):un,Kt,Ae?pt(xi,xn):xi);_e[Pe]=Ei,$e[Pe]=Ei-Kt}}a.modifiersData[A]=$e}}var ee={name:"preventOverflow",enabled:!0,phase:"main",fn:K,requiresIfExists:["offset"]},w=function(a,m){return a=typeof a=="function"?a(Object.assign({},m.rects,{placement:m.placement})):a,or(typeof a!="number"?a:ar(a,l))};function Ge(f){var a,m=f.state,A=f.name,D=f.options,F=m.elements.arrow,$=m.modifiersData.popperOffsets,k=it(m.placement),Y=ut(k),te=[fe,R].indexOf(k)>=0,W=te?"height":"width";if(!(!F||!$)){var De=w(D.padding,m),Ne=M(F),Ae=Y==="y"?ie:fe,we=Y==="y"?be:R,Me=m.rects.reference[W]+m.rects.reference[Y]-$[Y]-m.rects.popper[W],Ee=$[Y]-m.rects.reference[Y],Be=se(F),Re=Be?Y==="y"?Be.clientHeight||0:Be.clientWidth||0:0,He=Me/2-Ee/2,ae=De[Ae],Pe=Re-Ne[W]-De[we],_e=Re/2-Ne[W]/2+He,Le=he(ae,_e,Pe),Fe=Y;m.modifiersData[A]=(a={},a[Fe]=Le,a.centerOffset=Le-_e,a)}}function le(f){var a=f.state,m=f.options,A=m.element,D=A===void 0?"[data-popper-arrow]":A;if(D!=null&&!(typeof D=="string"&&(D=a.elements.popper.querySelector(D),!D))){if(i(D)||console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).',"To use an SVG arrow, wrap it in an HTMLElement that will be used as","the arrow."].join(" ")),!Pn(a.elements.popper,D)){console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper',"element."].join(" "));return}a.elements.arrow=D}}var Tt={name:"arrow",enabled:!0,phase:"main",fn:Ge,effect:le,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ht(f,a,m){return m===void 0&&(m={x:0,y:0}),{top:f.top-a.height-m.y,right:f.right-a.width+m.x,bottom:f.bottom-a.height+m.y,left:f.left-a.width-m.x}}function Ut(f){return[ie,R,be,fe].some(function(a){return f[a]>=0})}function zt(f){var a=f.state,m=f.name,A=a.rects.reference,D=a.rects.popper,F=a.modifiersData.preventOverflow,$=Vt(a,{elementContext:"reference"}),k=Vt(a,{altBoundary:!0}),Y=ht($,A),te=ht(k,D,F),W=Ut(Y),De=Ut(te);a.modifiersData[m]={referenceClippingOffsets:Y,popperEscapeOffsets:te,isReferenceHidden:W,hasPopperEscaped:De},a.attributes.popper=Object.assign({},a.attributes.popper,{"data-popper-reference-hidden":W,"data-popper-escaped":De})}var Yt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:zt},nt=[Mn,Rn,y,z],at=bn({defaultModifiers:nt}),vt=[Mn,Rn,y,z,ge,Z,ee,Tt,Yt],sn=bn({defaultModifiers:vt});e.applyStyles=z,e.arrow=Tt,e.computeStyles=y,e.createPopper=sn,e.createPopperLite=at,e.defaultModifiers=vt,e.detectOverflow=Vt,e.eventListeners=Mn,e.flip=Z,e.hide=Yt,e.offset=ge,e.popperGenerator=bn,e.popperOffsets=Rn,e.preventOverflow=ee}),Po=_o(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var t=ns(),n='',r="tippy-box",o="tippy-content",i="tippy-backdrop",s="tippy-arrow",u="tippy-svg-arrow",h={passive:!0,capture:!0};function p(g,y){return{}.hasOwnProperty.call(g,y)}function x(g,y,O){if(Array.isArray(g)){var I=g[y];return I??(Array.isArray(O)?O[y]:O)}return g}function b(g,y){var O={}.toString.call(g);return O.indexOf("[object")===0&&O.indexOf(y+"]")>-1}function E(g,y){return typeof g=="function"?g.apply(void 0,y):g}function _(g,y){if(y===0)return g;var O;return function(I){clearTimeout(O),O=setTimeout(function(){g(I)},y)}}function C(g,y){var O=Object.assign({},g);return y.forEach(function(I){delete O[I]}),O}function M(g){return g.split(/\s+/).filter(Boolean)}function U(g){return[].concat(g)}function V(g,y){g.indexOf(y)===-1&&g.push(y)}function B(g){return g.filter(function(y,O){return g.indexOf(y)===O})}function Q(g){return g.split("-")[0]}function q(g){return[].slice.call(g)}function xe(g){return Object.keys(g).reduce(function(y,O){return g[O]!==void 0&&(y[O]=g[O]),y},{})}function se(){return document.createElement("div")}function ie(g){return["Element","Fragment"].some(function(y){return b(g,y)})}function be(g){return b(g,"NodeList")}function R(g){return b(g,"MouseEvent")}function fe(g){return!!(g&&g._tippy&&g._tippy.reference===g)}function ce(g){return ie(g)?[g]:be(g)?q(g):Array.isArray(g)?g:q(document.querySelectorAll(g))}function l(g,y){g.forEach(function(O){O&&(O.style.transitionDuration=y+"ms")})}function d(g,y){g.forEach(function(O){O&&O.setAttribute("data-state",y)})}function v(g){var y,O=U(g),I=O[0];return!(I==null||(y=I.ownerDocument)==null)&&y.body?I.ownerDocument:document}function c(g,y){var O=y.clientX,I=y.clientY;return g.every(function(z){var j=z.popperRect,L=z.popperState,ge=z.props,oe=ge.interactiveBorder,de=Q(L.placement),me=L.modifiersData.offset;if(!me)return!0;var Te=de==="bottom"?me.top.y:0,je=de==="top"?me.bottom.y:0,Se=de==="right"?me.left.x:0,Ie=de==="left"?me.right.x:0,Z=j.top-I+Te>oe,pe=I-j.bottom-je>oe,he=j.left-O+Se>oe,K=O-j.right-Ie>oe;return Z||pe||he||K})}function H(g,y,O){var I=y+"EventListener";["transitionend","webkitTransitionEnd"].forEach(function(z){g[I](z,O)})}var T={isTouch:!1},P=0;function G(){T.isTouch||(T.isTouch=!0,window.performance&&document.addEventListener("mousemove",ze))}function ze(){var g=performance.now();g-P<20&&(T.isTouch=!1,document.removeEventListener("mousemove",ze)),P=g}function Dt(){var g=document.activeElement;if(fe(g)){var y=g._tippy;g.blur&&!y.state.isVisible&&g.blur()}}function jt(){document.addEventListener("touchstart",G,h),window.addEventListener("blur",Dt)}var Tr=typeof window<"u"&&typeof document<"u",Pr=Tr?navigator.userAgent:"",Mr=/MSIE |Trident\//.test(Pr);function Bt(g){var y=g==="destroy"?"n already-":" ";return[g+"() was called on a"+y+"destroyed instance. This is a no-op but","indicates a potential memory leak."].join(" ")}function Jn(g){var y=/[ \t]{2,}/g,O=/^[ \t]*/gm;return g.replace(y," ").replace(O,"").trim()}function Rr(g){return Jn(` - %ctippy.js - - %c`+Jn(g)+` - - %c\u{1F477}\u200D This is a development-only message. It will be removed in production. - `)}function Qn(g){return[Rr(g),"color: #00C584; font-size: 1.3em; font-weight: bold;","line-height: 1.5","color: #a6a095;"]}var _t;Ir();function Ir(){_t=new Set}function dt(g,y){if(g&&!_t.has(y)){var O;_t.add(y),(O=console).warn.apply(O,Qn(y))}}function Ht(g,y){if(g&&!_t.has(y)){var O;_t.add(y),(O=console).error.apply(O,Qn(y))}}function yt(g){var y=!g,O=Object.prototype.toString.call(g)==="[object Object]"&&!g.addEventListener;Ht(y,["tippy() was passed","`"+String(g)+"`","as its targets (first) argument. Valid types are: String, Element,","Element[], or NodeList."].join(" ")),Ht(O,["tippy() was passed a plain object which is not supported as an argument","for virtual positioning. Use props.getReferenceClientRect instead."].join(" "))}var wt={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},Fr={allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999},Ze=Object.assign({appendTo:function(){return document.body},aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},wt,{},Fr),Nr=Object.keys(Ze),Lr=function(y){pt(y,[]);var O=Object.keys(y);O.forEach(function(I){Ze[I]=y[I]})};function it(g){var y=g.plugins||[],O=y.reduce(function(I,z){var j=z.name,L=z.defaultValue;return j&&(I[j]=g[j]!==void 0?g[j]:L),I},{});return Object.assign({},g,{},O)}function kr(g,y){var O=y?Object.keys(it(Object.assign({},Ze,{plugins:y}))):Nr,I=O.reduce(function(z,j){var L=(g.getAttribute("data-tippy-"+j)||"").trim();if(!L)return z;if(j==="content")z[j]=L;else try{z[j]=JSON.parse(L)}catch{z[j]=L}return z},{});return I}function Zn(g,y){var O=Object.assign({},y,{content:E(y.content,[g])},y.ignoreAttributes?{}:kr(g,y.plugins));return O.aria=Object.assign({},Ze.aria,{},O.aria),O.aria={expanded:O.aria.expanded==="auto"?y.interactive:O.aria.expanded,content:O.aria.content==="auto"?y.interactive?null:"describedby":O.aria.content},O}function pt(g,y){g===void 0&&(g={}),y===void 0&&(y=[]);var O=Object.keys(g);O.forEach(function(I){var z=C(Ze,Object.keys(wt)),j=!p(z,I);j&&(j=y.filter(function(L){return L.name===I}).length===0),dt(j,["`"+I+"`","is not a valid prop. You may have spelled it incorrectly, or if it's","a plugin, forgot to pass it in an array as props.plugins.",` - -`,`All props: https://atomiks.github.io/tippyjs/v6/all-props/ -`,"Plugins: https://atomiks.github.io/tippyjs/v6/plugins/"].join(" "))})}var rn=function(){return"innerHTML"};function $t(g,y){g[rn()]=y}function er(g){var y=se();return g===!0?y.className=s:(y.className=u,ie(g)?y.appendChild(g):$t(y,g)),y}function Pn(g,y){ie(y.content)?($t(g,""),g.appendChild(y.content)):typeof y.content!="function"&&(y.allowHTML?$t(g,y.content):g.textContent=y.content)}function Wt(g){var y=g.firstElementChild,O=q(y.children);return{box:y,content:O.find(function(I){return I.classList.contains(o)}),arrow:O.find(function(I){return I.classList.contains(s)||I.classList.contains(u)}),backdrop:O.find(function(I){return I.classList.contains(i)})}}function tr(g){var y=se(),O=se();O.className=r,O.setAttribute("data-state","hidden"),O.setAttribute("tabindex","-1");var I=se();I.className=o,I.setAttribute("data-state","hidden"),Pn(I,g.props),y.appendChild(O),O.appendChild(I),z(g.props,g.props);function z(j,L){var ge=Wt(y),oe=ge.box,de=ge.content,me=ge.arrow;L.theme?oe.setAttribute("data-theme",L.theme):oe.removeAttribute("data-theme"),typeof L.animation=="string"?oe.setAttribute("data-animation",L.animation):oe.removeAttribute("data-animation"),L.inertia?oe.setAttribute("data-inertia",""):oe.removeAttribute("data-inertia"),oe.style.maxWidth=typeof L.maxWidth=="number"?L.maxWidth+"px":L.maxWidth,L.role?oe.setAttribute("role",L.role):oe.removeAttribute("role"),(j.content!==L.content||j.allowHTML!==L.allowHTML)&&Pn(de,g.props),L.arrow?me?j.arrow!==L.arrow&&(oe.removeChild(me),oe.appendChild(er(L.arrow))):oe.appendChild(er(L.arrow)):me&&oe.removeChild(me)}return{popper:y,onUpdate:z}}tr.$$tippy=!0;var nr=1,vn=[],gn=[];function on(g,y){var O=Zn(g,Object.assign({},Ze,{},it(xe(y)))),I,z,j,L=!1,ge=!1,oe=!1,de=!1,me,Te,je,Se=[],Ie=_(Re,O.interactiveDebounce),Z,pe=nr++,he=null,K=B(O.plugins),ee={isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},w={id:pe,reference:g,popper:se(),popperInstance:he,props:O,state:ee,plugins:K,clearDelayTimeouts:Pt,setProps:ln,setContent:Xt,show:Mt,hide:Fn,hideWithInteractivity:qt,enable:gt,disable:et,unmount:wn,destroy:Nn};if(!O.render)return Ht(!0,"render() function has not been supplied."),w;var Ge=O.render(w),le=Ge.popper,Tt=Ge.onUpdate;le.setAttribute("data-tippy-root",""),le.id="tippy-"+w.id,w.popper=le,g._tippy=w,le._tippy=w;var ht=K.map(function(S){return S.fn(w)}),Ut=g.hasAttribute("aria-expanded");return Me(),D(),a(),m("onCreate",[w]),O.showOnCreate&&$e(),le.addEventListener("mouseenter",function(){w.props.interactive&&w.state.isVisible&&w.clearDelayTimeouts()}),le.addEventListener("mouseleave",function(S){w.props.interactive&&w.props.trigger.indexOf("mouseenter")>=0&&(vt().addEventListener("mousemove",Ie),Ie(S))}),w;function zt(){var S=w.props.touch;return Array.isArray(S)?S:[S,0]}function Yt(){return zt()[0]==="hold"}function nt(){var S;return!!((S=w.props.render)!=null&&S.$$tippy)}function at(){return Z||g}function vt(){var S=at().parentNode;return S?v(S):document}function sn(){return Wt(le)}function f(S){return w.state.isMounted&&!w.state.isVisible||T.isTouch||me&&me.type==="focus"?0:x(w.props.delay,S?0:1,Ze.delay)}function a(){le.style.pointerEvents=w.props.interactive&&w.state.isVisible?"":"none",le.style.zIndex=""+w.props.zIndex}function m(S,X,J){if(J===void 0&&(J=!0),ht.forEach(function(ye){ye[S]&&ye[S].apply(void 0,X)}),J){var ve;(ve=w.props)[S].apply(ve,X)}}function A(){var S=w.props.aria;if(S.content){var X="aria-"+S.content,J=le.id,ve=U(w.props.triggerTarget||g);ve.forEach(function(ye){var Ke=ye.getAttribute(X);if(w.state.isVisible)ye.setAttribute(X,Ke?Ke+" "+J:J);else{var Je=Ke&&Ke.replace(J,"").trim();Je?ye.setAttribute(X,Je):ye.removeAttribute(X)}})}}function D(){if(!(Ut||!w.props.aria.expanded)){var S=U(w.props.triggerTarget||g);S.forEach(function(X){w.props.interactive?X.setAttribute("aria-expanded",w.state.isVisible&&X===at()?"true":"false"):X.removeAttribute("aria-expanded")})}}function F(){vt().removeEventListener("mousemove",Ie),vn=vn.filter(function(S){return S!==Ie})}function $(S){if(!(T.isTouch&&(oe||S.type==="mousedown"))&&!(w.props.interactive&&le.contains(S.target))){if(at().contains(S.target)){if(T.isTouch||w.state.isVisible&&w.props.trigger.indexOf("click")>=0)return}else m("onClickOutside",[w,S]);w.props.hideOnClick===!0&&(w.clearDelayTimeouts(),w.hide(),ge=!0,setTimeout(function(){ge=!1}),w.state.isMounted||W())}}function k(){oe=!0}function Y(){oe=!1}function te(){var S=vt();S.addEventListener("mousedown",$,!0),S.addEventListener("touchend",$,h),S.addEventListener("touchstart",Y,h),S.addEventListener("touchmove",k,h)}function W(){var S=vt();S.removeEventListener("mousedown",$,!0),S.removeEventListener("touchend",$,h),S.removeEventListener("touchstart",Y,h),S.removeEventListener("touchmove",k,h)}function De(S,X){Ae(S,function(){!w.state.isVisible&&le.parentNode&&le.parentNode.contains(le)&&X()})}function Ne(S,X){Ae(S,X)}function Ae(S,X){var J=sn().box;function ve(ye){ye.target===J&&(H(J,"remove",ve),X())}if(S===0)return X();H(J,"remove",Te),H(J,"add",ve),Te=ve}function we(S,X,J){J===void 0&&(J=!1);var ve=U(w.props.triggerTarget||g);ve.forEach(function(ye){ye.addEventListener(S,X,J),Se.push({node:ye,eventType:S,handler:X,options:J})})}function Me(){Yt()&&(we("touchstart",Be,{passive:!0}),we("touchend",He,{passive:!0})),M(w.props.trigger).forEach(function(S){if(S!=="manual")switch(we(S,Be),S){case"mouseenter":we("mouseleave",He);break;case"focus":we(Mr?"focusout":"blur",ae);break;case"focusin":we("focusout",ae);break}})}function Ee(){Se.forEach(function(S){var X=S.node,J=S.eventType,ve=S.handler,ye=S.options;X.removeEventListener(J,ve,ye)}),Se=[]}function Be(S){var X,J=!1;if(!(!w.state.isEnabled||Pe(S)||ge)){var ve=((X=me)==null?void 0:X.type)==="focus";me=S,Z=S.currentTarget,D(),!w.state.isVisible&&R(S)&&vn.forEach(function(ye){return ye(S)}),S.type==="click"&&(w.props.trigger.indexOf("mouseenter")<0||L)&&w.props.hideOnClick!==!1&&w.state.isVisible?J=!0:$e(S),S.type==="click"&&(L=!J),J&&!ve&&Ve(S)}}function Re(S){var X=S.target,J=at().contains(X)||le.contains(X);if(!(S.type==="mousemove"&&J)){var ve=Ye().concat(le).map(function(ye){var Ke,Je=ye._tippy,xt=(Ke=Je.popperInstance)==null?void 0:Ke.state;return xt?{popperRect:ye.getBoundingClientRect(),popperState:xt,props:O}:null}).filter(Boolean);c(ve,S)&&(F(),Ve(S))}}function He(S){var X=Pe(S)||w.props.trigger.indexOf("click")>=0&&L;if(!X){if(w.props.interactive){w.hideWithInteractivity(S);return}Ve(S)}}function ae(S){w.props.trigger.indexOf("focusin")<0&&S.target!==at()||w.props.interactive&&S.relatedTarget&&le.contains(S.relatedTarget)||Ve(S)}function Pe(S){return T.isTouch?Yt()!==S.type.indexOf("touch")>=0:!1}function _e(){Le();var S=w.props,X=S.popperOptions,J=S.placement,ve=S.offset,ye=S.getReferenceClientRect,Ke=S.moveTransition,Je=nt()?Wt(le).arrow:null,xt=ye?{getBoundingClientRect:ye,contextElement:ye.contextElement||at()}:g,Ln={name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(fn){var Gt=fn.state;if(nt()){var Vr=sn(),Kt=Vr.box;["placement","reference-hidden","escaped"].forEach(function(un){un==="placement"?Kt.setAttribute("data-placement",Gt.placement):Gt.attributes.popper["data-popper-"+un]?Kt.setAttribute("data-"+un,""):Kt.removeAttribute("data-"+un)}),Gt.attributes.popper={}}}},Et=[{name:"offset",options:{offset:ve}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!Ke}},Ln];nt()&&Je&&Et.push({name:"arrow",options:{element:Je,padding:3}}),Et.push.apply(Et,X?.modifiers||[]),w.popperInstance=t.createPopper(xt,le,Object.assign({},X,{placement:J,onFirstUpdate:je,modifiers:Et}))}function Le(){w.popperInstance&&(w.popperInstance.destroy(),w.popperInstance=null)}function Fe(){var S=w.props.appendTo,X,J=at();w.props.interactive&&S===Ze.appendTo||S==="parent"?X=J.parentNode:X=E(S,[J]),X.contains(le)||X.appendChild(le),_e(),dt(w.props.interactive&&S===Ze.appendTo&&J.nextElementSibling!==le,["Interactive tippy element may not be accessible via keyboard","navigation because it is not directly after the reference element","in the DOM source order.",` - -`,"Using a wrapper
    or tag around the reference element","solves this by creating a new parentNode context.",` - -`,"Specifying `appendTo: document.body` silences this warning, but it","assumes you are using a focus management solution to handle","keyboard navigation.",` - -`,"See: https://atomiks.github.io/tippyjs/v6/accessibility/#interactivity"].join(" "))}function Ye(){return q(le.querySelectorAll("[data-tippy-root]"))}function $e(S){w.clearDelayTimeouts(),S&&m("onTrigger",[w,S]),te();var X=f(!0),J=zt(),ve=J[0],ye=J[1];T.isTouch&&ve==="hold"&&ye&&(X=ye),X?I=setTimeout(function(){w.show()},X):w.show()}function Ve(S){if(w.clearDelayTimeouts(),m("onUntrigger",[w,S]),!w.state.isVisible){W();return}if(!(w.props.trigger.indexOf("mouseenter")>=0&&w.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(S.type)>=0&&L)){var X=f(!1);X?z=setTimeout(function(){w.state.isVisible&&w.hide()},X):j=requestAnimationFrame(function(){w.hide()})}}function gt(){w.state.isEnabled=!0}function et(){w.hide(),w.state.isEnabled=!1}function Pt(){clearTimeout(I),clearTimeout(z),cancelAnimationFrame(j)}function ln(S){if(dt(w.state.isDestroyed,Bt("setProps")),!w.state.isDestroyed){m("onBeforeUpdate",[w,S]),Ee();var X=w.props,J=Zn(g,Object.assign({},w.props,{},S,{ignoreAttributes:!0}));w.props=J,Me(),X.interactiveDebounce!==J.interactiveDebounce&&(F(),Ie=_(Re,J.interactiveDebounce)),X.triggerTarget&&!J.triggerTarget?U(X.triggerTarget).forEach(function(ve){ve.removeAttribute("aria-expanded")}):J.triggerTarget&&g.removeAttribute("aria-expanded"),D(),a(),Tt&&Tt(X,J),w.popperInstance&&(_e(),Ye().forEach(function(ve){requestAnimationFrame(ve._tippy.popperInstance.forceUpdate)})),m("onAfterUpdate",[w,S])}}function Xt(S){w.setProps({content:S})}function Mt(){dt(w.state.isDestroyed,Bt("show"));var S=w.state.isVisible,X=w.state.isDestroyed,J=!w.state.isEnabled,ve=T.isTouch&&!w.props.touch,ye=x(w.props.duration,0,Ze.duration);if(!(S||X||J||ve)&&!at().hasAttribute("disabled")&&(m("onShow",[w],!1),w.props.onShow(w)!==!1)){if(w.state.isVisible=!0,nt()&&(le.style.visibility="visible"),a(),te(),w.state.isMounted||(le.style.transition="none"),nt()){var Ke=sn(),Je=Ke.box,xt=Ke.content;l([Je,xt],0)}je=function(){var Et;if(!(!w.state.isVisible||de)){if(de=!0,le.offsetHeight,le.style.transition=w.props.moveTransition,nt()&&w.props.animation){var xn=sn(),fn=xn.box,Gt=xn.content;l([fn,Gt],ye),d([fn,Gt],"visible")}A(),D(),V(gn,w),(Et=w.popperInstance)==null||Et.forceUpdate(),w.state.isMounted=!0,m("onMount",[w]),w.props.animation&&nt()&&Ne(ye,function(){w.state.isShown=!0,m("onShown",[w])})}},Fe()}}function Fn(){dt(w.state.isDestroyed,Bt("hide"));var S=!w.state.isVisible,X=w.state.isDestroyed,J=!w.state.isEnabled,ve=x(w.props.duration,1,Ze.duration);if(!(S||X||J)&&(m("onHide",[w],!1),w.props.onHide(w)!==!1)){if(w.state.isVisible=!1,w.state.isShown=!1,de=!1,L=!1,nt()&&(le.style.visibility="hidden"),F(),W(),a(),nt()){var ye=sn(),Ke=ye.box,Je=ye.content;w.props.animation&&(l([Ke,Je],ve),d([Ke,Je],"hidden"))}A(),D(),w.props.animation?nt()&&De(ve,w.unmount):w.unmount()}}function qt(S){dt(w.state.isDestroyed,Bt("hideWithInteractivity")),vt().addEventListener("mousemove",Ie),V(vn,Ie),Ie(S)}function wn(){dt(w.state.isDestroyed,Bt("unmount")),w.state.isVisible&&w.hide(),w.state.isMounted&&(Le(),Ye().forEach(function(S){S._tippy.unmount()}),le.parentNode&&le.parentNode.removeChild(le),gn=gn.filter(function(S){return S!==w}),w.state.isMounted=!1,m("onHidden",[w]))}function Nn(){dt(w.state.isDestroyed,Bt("destroy")),!w.state.isDestroyed&&(w.clearDelayTimeouts(),w.unmount(),Ee(),delete g._tippy,w.state.isDestroyed=!0,m("onDestroy",[w]))}}function ut(g,y){y===void 0&&(y={});var O=Ze.plugins.concat(y.plugins||[]);yt(g),pt(y,O),jt();var I=Object.assign({},y,{plugins:O}),z=ce(g),j=ie(I.content),L=z.length>1;dt(j&&L,["tippy() was passed an Element as the `content` prop, but more than","one tippy instance was created by this invocation. This means the","content element will only be appended to the last tippy instance.",` - -`,"Instead, pass the .innerHTML of the element, or use a function that","returns a cloned version of the element instead.",` - -`,`1) content: element.innerHTML -`,"2) content: () => element.cloneNode(true)"].join(" "));var ge=z.reduce(function(oe,de){var me=de&&on(de,I);return me&&oe.push(me),oe},[]);return ie(g)?ge[0]:ge}ut.defaultProps=Ze,ut.setDefaultProps=Lr,ut.currentInput=T;var rr=function(y){var O=y===void 0?{}:y,I=O.exclude,z=O.duration;gn.forEach(function(j){var L=!1;if(I&&(L=fe(I)?j.reference===I:j.popper===I.popper),!L){var ge=j.props.duration;j.setProps({duration:z}),j.hide(),j.state.isDestroyed||j.setProps({duration:ge})}})},ir=Object.assign({},t.applyStyles,{effect:function(y){var O=y.state,I={popper:{position:O.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(O.elements.popper.style,I.popper),O.styles=I,O.elements.arrow&&Object.assign(O.elements.arrow.style,I.arrow)}}),or=function(y,O){var I;O===void 0&&(O={}),Ht(!Array.isArray(y),["The first argument passed to createSingleton() must be an array of","tippy instances. The passed value was",String(y)].join(" "));var z=y,j=[],L,ge=O.overrides,oe=[],de=!1;function me(){j=z.map(function(K){return K.reference})}function Te(K){z.forEach(function(ee){K?ee.enable():ee.disable()})}function je(K){return z.map(function(ee){var w=ee.setProps;return ee.setProps=function(Ge){w(Ge),ee.reference===L&&K.setProps(Ge)},function(){ee.setProps=w}})}function Se(K,ee){var w=j.indexOf(ee);if(ee!==L){L=ee;var Ge=(ge||[]).concat("content").reduce(function(le,Tt){return le[Tt]=z[w].props[Tt],le},{});K.setProps(Object.assign({},Ge,{getReferenceClientRect:typeof Ge.getReferenceClientRect=="function"?Ge.getReferenceClientRect:function(){return ee.getBoundingClientRect()}}))}}Te(!1),me();var Ie={fn:function(){return{onDestroy:function(){Te(!0)},onHidden:function(){L=null},onClickOutside:function(w){w.props.showOnCreate&&!de&&(de=!0,L=null)},onShow:function(w){w.props.showOnCreate&&!de&&(de=!0,Se(w,j[0]))},onTrigger:function(w,Ge){Se(w,Ge.currentTarget)}}}},Z=ut(se(),Object.assign({},C(O,["overrides"]),{plugins:[Ie].concat(O.plugins||[]),triggerTarget:j,popperOptions:Object.assign({},O.popperOptions,{modifiers:[].concat(((I=O.popperOptions)==null?void 0:I.modifiers)||[],[ir])})})),pe=Z.show;Z.show=function(K){if(pe(),!L&&K==null)return Se(Z,j[0]);if(!(L&&K==null)){if(typeof K=="number")return j[K]&&Se(Z,j[K]);if(z.includes(K)){var ee=K.reference;return Se(Z,ee)}if(j.includes(K))return Se(Z,K)}},Z.showNext=function(){var K=j[0];if(!L)return Z.show(0);var ee=j.indexOf(L);Z.show(j[ee+1]||K)},Z.showPrevious=function(){var K=j[j.length-1];if(!L)return Z.show(K);var ee=j.indexOf(L),w=j[ee-1]||K;Z.show(w)};var he=Z.setProps;return Z.setProps=function(K){ge=K.overrides||ge,he(K)},Z.setInstances=function(K){Te(!0),oe.forEach(function(ee){return ee()}),z=K,Te(!1),me(),je(Z),Z.setProps({triggerTarget:j})},oe=je(Z),Z},ar={mouseover:"mouseenter",focusin:"focus",click:"click"};function Vt(g,y){Ht(!(y&&y.target),["You must specity a `target` prop indicating a CSS selector string matching","the target elements that should receive a tippy."].join(" "));var O=[],I=[],z=!1,j=y.target,L=C(y,["target"]),ge=Object.assign({},L,{trigger:"manual",touch:!1}),oe=Object.assign({},L,{showOnCreate:!0}),de=ut(g,ge),me=U(de);function Te(pe){if(!(!pe.target||z)){var he=pe.target.closest(j);if(he){var K=he.getAttribute("data-tippy-trigger")||y.trigger||Ze.trigger;if(!he._tippy&&!(pe.type==="touchstart"&&typeof oe.touch=="boolean")&&!(pe.type!=="touchstart"&&K.indexOf(ar[pe.type])<0)){var ee=ut(he,oe);ee&&(I=I.concat(ee))}}}}function je(pe,he,K,ee){ee===void 0&&(ee=!1),pe.addEventListener(he,K,ee),O.push({node:pe,eventType:he,handler:K,options:ee})}function Se(pe){var he=pe.reference;je(he,"touchstart",Te,h),je(he,"mouseover",Te),je(he,"focusin",Te),je(he,"click",Te)}function Ie(){O.forEach(function(pe){var he=pe.node,K=pe.eventType,ee=pe.handler,w=pe.options;he.removeEventListener(K,ee,w)}),O=[]}function Z(pe){var he=pe.destroy,K=pe.enable,ee=pe.disable;pe.destroy=function(w){w===void 0&&(w=!0),w&&I.forEach(function(Ge){Ge.destroy()}),I=[],Ie(),he()},pe.enable=function(){K(),I.forEach(function(w){return w.enable()}),z=!1},pe.disable=function(){ee(),I.forEach(function(w){return w.disable()}),z=!0},Se(pe)}return me.forEach(Z),de}var sr={name:"animateFill",defaultValue:!1,fn:function(y){var O;if(!((O=y.props.render)!=null&&O.$$tippy))return Ht(y.props.animateFill,"The `animateFill` plugin requires the default render function."),{};var I=Wt(y.popper),z=I.box,j=I.content,L=y.props.animateFill?jr():null;return{onCreate:function(){L&&(z.insertBefore(L,z.firstElementChild),z.setAttribute("data-animatefill",""),z.style.overflow="hidden",y.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(L){var oe=z.style.transitionDuration,de=Number(oe.replace("ms",""));j.style.transitionDelay=Math.round(de/10)+"ms",L.style.transitionDuration=oe,d([L],"visible")}},onShow:function(){L&&(L.style.transitionDuration="0ms")},onHide:function(){L&&d([L],"hidden")}}}};function jr(){var g=se();return g.className=i,d([g],"hidden"),g}var mn={clientX:0,clientY:0},an=[];function bn(g){var y=g.clientX,O=g.clientY;mn={clientX:y,clientY:O}}function yn(g){g.addEventListener("mousemove",bn)}function Br(g){g.removeEventListener("mousemove",bn)}var Mn={name:"followCursor",defaultValue:!1,fn:function(y){var O=y.reference,I=v(y.props.triggerTarget||O),z=!1,j=!1,L=!0,ge=y.props;function oe(){return y.props.followCursor==="initial"&&y.state.isVisible}function de(){I.addEventListener("mousemove",je)}function me(){I.removeEventListener("mousemove",je)}function Te(){z=!0,y.setProps({getReferenceClientRect:null}),z=!1}function je(Z){var pe=Z.target?O.contains(Z.target):!0,he=y.props.followCursor,K=Z.clientX,ee=Z.clientY,w=O.getBoundingClientRect(),Ge=K-w.left,le=ee-w.top;(pe||!y.props.interactive)&&y.setProps({getReferenceClientRect:function(){var ht=O.getBoundingClientRect(),Ut=K,zt=ee;he==="initial"&&(Ut=ht.left+Ge,zt=ht.top+le);var Yt=he==="horizontal"?ht.top:zt,nt=he==="vertical"?ht.right:Ut,at=he==="horizontal"?ht.bottom:zt,vt=he==="vertical"?ht.left:Ut;return{width:nt-vt,height:at-Yt,top:Yt,right:nt,bottom:at,left:vt}}})}function Se(){y.props.followCursor&&(an.push({instance:y,doc:I}),yn(I))}function Ie(){an=an.filter(function(Z){return Z.instance!==y}),an.filter(function(Z){return Z.doc===I}).length===0&&Br(I)}return{onCreate:Se,onDestroy:Ie,onBeforeUpdate:function(){ge=y.props},onAfterUpdate:function(pe,he){var K=he.followCursor;z||K!==void 0&&ge.followCursor!==K&&(Ie(),K?(Se(),y.state.isMounted&&!j&&!oe()&&de()):(me(),Te()))},onMount:function(){y.props.followCursor&&!j&&(L&&(je(mn),L=!1),oe()||de())},onTrigger:function(pe,he){R(he)&&(mn={clientX:he.clientX,clientY:he.clientY}),j=he.type==="focus"},onHidden:function(){y.props.followCursor&&(Te(),me(),L=!0)}}}};function Hr(g,y){var O;return{popperOptions:Object.assign({},g.popperOptions,{modifiers:[].concat((((O=g.popperOptions)==null?void 0:O.modifiers)||[]).filter(function(I){var z=I.name;return z!==y.name}),[y])})}}var Rn={name:"inlinePositioning",defaultValue:!1,fn:function(y){var O=y.reference;function I(){return!!y.props.inlinePositioning}var z,j=-1,L=!1,ge={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(je){var Se=je.state;I()&&(z!==Se.placement&&y.setProps({getReferenceClientRect:function(){return oe(Se.placement)}}),z=Se.placement)}};function oe(Te){return $r(Q(Te),O.getBoundingClientRect(),q(O.getClientRects()),j)}function de(Te){L=!0,y.setProps(Te),L=!1}function me(){L||de(Hr(y.props,ge))}return{onCreate:me,onAfterUpdate:me,onTrigger:function(je,Se){if(R(Se)){var Ie=q(y.reference.getClientRects()),Z=Ie.find(function(pe){return pe.left-2<=Se.clientX&&pe.right+2>=Se.clientX&&pe.top-2<=Se.clientY&&pe.bottom+2>=Se.clientY});j=Ie.indexOf(Z)}},onUntrigger:function(){j=-1}}}};function $r(g,y,O,I){if(O.length<2||g===null)return y;if(O.length===2&&I>=0&&O[0].left>O[1].right)return O[I]||y;switch(g){case"top":case"bottom":{var z=O[0],j=O[O.length-1],L=g==="top",ge=z.top,oe=j.bottom,de=L?z.left:j.left,me=L?z.right:j.right,Te=me-de,je=oe-ge;return{top:ge,bottom:oe,left:de,right:me,width:Te,height:je}}case"left":case"right":{var Se=Math.min.apply(Math,O.map(function(le){return le.left})),Ie=Math.max.apply(Math,O.map(function(le){return le.right})),Z=O.filter(function(le){return g==="left"?le.left===Se:le.right===Ie}),pe=Z[0].top,he=Z[Z.length-1].bottom,K=Se,ee=Ie,w=ee-K,Ge=he-pe;return{top:pe,bottom:he,left:K,right:ee,width:w,height:Ge}}default:return y}}var Wr={name:"sticky",defaultValue:!1,fn:function(y){var O=y.reference,I=y.popper;function z(){return y.popperInstance?y.popperInstance.state.elements.reference:O}function j(de){return y.props.sticky===!0||y.props.sticky===de}var L=null,ge=null;function oe(){var de=j("reference")?z().getBoundingClientRect():null,me=j("popper")?I.getBoundingClientRect():null;(de&&In(L,de)||me&&In(ge,me))&&y.popperInstance&&y.popperInstance.update(),L=de,ge=me,y.state.isMounted&&requestAnimationFrame(oe)}return{onMount:function(){y.props.sticky&&oe()}}}};function In(g,y){return g&&y?g.top!==y.top||g.right!==y.right||g.bottom!==y.bottom||g.left!==y.left:!0}ut.setDefaultProps({render:tr}),e.animateFill=sr,e.createSingleton=or,e.default=ut,e.delegate=Vt,e.followCursor=Mn,e.hideAll=rr,e.inlinePositioning=Rn,e.roundArrow=n,e.sticky=Wr}),bi=To(Po()),rs=To(Po()),is=e=>{let t={plugins:[]},n=o=>e[e.indexOf(o)+1];if(e.includes("animation")&&(t.animation=n("animation")),e.includes("duration")&&(t.duration=parseInt(n("duration"))),e.includes("delay")){let o=n("delay");t.delay=o.includes("-")?o.split("-").map(i=>parseInt(i)):parseInt(o)}if(e.includes("cursor")){t.plugins.push(rs.followCursor);let o=n("cursor");["x","initial"].includes(o)?t.followCursor=o==="x"?"horizontal":"initial":t.followCursor=!0}e.includes("on")&&(t.trigger=n("on")),e.includes("arrowless")&&(t.arrow=!1),e.includes("html")&&(t.allowHTML=!0),e.includes("interactive")&&(t.interactive=!0),e.includes("border")&&t.interactive&&(t.interactiveBorder=parseInt(n("border"))),e.includes("debounce")&&t.interactive&&(t.interactiveDebounce=parseInt(n("debounce"))),e.includes("max-width")&&(t.maxWidth=parseInt(n("max-width"))),e.includes("theme")&&(t.theme=n("theme")),e.includes("placement")&&(t.placement=n("placement"));let r={};return e.includes("no-flip")&&(r.modifiers||(r.modifiers=[]),r.modifiers.push({name:"flip",enabled:!1})),t.popperOptions=r,t};function yi(e){e.magic("tooltip",t=>(n,r={})=>{let o=r.timeout;delete r.timeout;let i=(0,bi.default)(t,{content:n,trigger:"manual",...r});i.show(),setTimeout(()=>{i.hide(),setTimeout(()=>i.destroy(),r.duration||300)},o||2e3)}),e.directive("tooltip",(t,{modifiers:n,expression:r},{evaluateLater:o,effect:i})=>{let s=n.length>0?is(n):{};t.__x_tippy||(t.__x_tippy=(0,bi.default)(t,s));let u=()=>t.__x_tippy.enable(),h=()=>t.__x_tippy.disable(),p=x=>{x?(u(),t.__x_tippy.setContent(x)):h()};if(n.includes("raw"))p(r);else{let x=o(r);i(()=>{x(b=>{typeof b=="object"?(t.__x_tippy.setProps(b),u()):p(b)})})}})}yi.defaultProps=e=>(bi.default.setDefaultProps(e),yi);var os=yi,Mo=os;document.addEventListener("alpine:init",()=>{window.Alpine.plugin(Qi),window.Alpine.plugin(Zi),window.Alpine.plugin(Do),window.Alpine.plugin(Mo)});var as=function(e,t,n){function r(x,b){for(let E of x){let _=o(E,b);if(_!==null)return _}}function o(x,b){let E=x.match(/^[\{\[]([^\[\]\{\}]*)[\}\]](.*)/s);if(E===null||E.length!==3)return null;let _=E[1],C=E[2];if(_.includes(",")){let[M,U]=_.split(",",2);if(U==="*"&&b>=M)return C;if(M==="*"&&b<=U)return C;if(b>=M&&b<=U)return C}return _==b?C:null}function i(x){return x.toString().charAt(0).toUpperCase()+x.toString().slice(1)}function s(x,b){if(b.length===0)return x;let E={};for(let[_,C]of Object.entries(b))E[":"+i(_??"")]=i(C??""),E[":"+_.toUpperCase()]=C.toString().toUpperCase(),E[":"+_]=C;return Object.entries(E).forEach(([_,C])=>{x=x.replaceAll(_,C)}),x}function u(x){return x.map(b=>b.replace(/^[\{\[]([^\[\]\{\}]*)[\}\]]/,""))}let h=e.split("|"),p=r(h,t);return p!=null?s(p.trim(),n):(h=u(h),s(h.length>1&&t>1?h[1]:h[0],n))};window.jsMd5=Ro.md5;window.pluralize=as;})(); -/*! Bundled license information: - -js-md5/src/md5.js: - (** - * [js-md5]{@link https://github.com/emn178/js-md5} - * - * @namespace md5 - * @version 0.8.3 - * @author Chen, Yi-Cyuan [emn178@gmail.com] - * @copyright Chen, Yi-Cyuan 2014-2023 - * @license MIT - *) - -sortablejs/modular/sortable.esm.js: - (**! - * Sortable 1.15.2 - * @author RubaXa - * @author owenm - * @license MIT - *) -*/ diff --git a/vendor/filament/support/docs/01-overview.md b/vendor/filament/support/docs/01-overview.md deleted file mode 100644 index 309c7362..00000000 --- a/vendor/filament/support/docs/01-overview.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Overview ---- - -This section of the documentation contains information that applies to all packages in the Filament ecosystem. - -## Eloquent Models - -All of Filament's database interactions rely on Eloquent. If your application needs to work with a static data source like a plain PHP array, you may find [Sushi](https://github.com/calebporzio/sushi) useful for accessing that data from an Eloquent model. diff --git a/vendor/filament/support/docs/02-assets.md b/vendor/filament/support/docs/02-assets.md deleted file mode 100644 index 72743f72..00000000 --- a/vendor/filament/support/docs/02-assets.md +++ /dev/null @@ -1,387 +0,0 @@ ---- -title: Assets ---- -import LaracastsBanner from "@components/LaracastsBanner.astro" - - - -## Overview - -All packages in the Filament ecosystem share an asset management system. This allows both official plugins and third-party plugins to register CSS and JavaScript files that can then be consumed by Blade views. - -## The `FilamentAsset` facade - -The `FilamentAsset` facade is used to register files into the asset system. These files may be sourced from anywhere in the filesystem, but are then copied into the `/public` directory of the application when the `php artisan filament:assets` command is run. By copying them into the `/public` directory for you, we can predictably load them in Blade views, and also ensure that third party packages are able to load their assets without having to worry about where they are located. - -Assets always have a unique ID chosen by you, which is used as the file name when the asset is copied into the `/public` directory. This ID is also used to reference the asset in Blade views. While the ID is unique, if you are registering assets for a plugin, then you do not need to worry about IDs clashing with other plugins, since the asset will be copied into a directory named after your plugin. - -The `FilamentAsset` facade should be used in the `boot()` method of a service provider. It can be used inside an application service provider such as `AppServiceProvider`, or inside a plugin service provider. - -The `FilamentAsset` facade has one main method, `register()`, which accepts an array of assets to register: - -```php -use Filament\Support\Facades\FilamentAsset; - -public function boot(): void -{ - // ... - - FilamentAsset::register([ - // ... - ]); - - // ... -} -``` - -### Registering assets for a plugin - -When registering assets for a plugin, you should pass the name of the Composer package as the second argument of the `register()` method: - -```php -use Filament\Support\Facades\FilamentAsset; - -FilamentAsset::register([ - // ... -], package: 'danharrin/filament-blog'); -``` - -Now, all the assets for this plugin will be copied into their own directory inside `/public`, to avoid the possibility of clashing with other plugins' files with the same names. - -## Registering CSS files - -To register a CSS file with the asset system, use the `FilamentAsset::register()` method in the `boot()` method of a service provider. You must pass in an array of `Css` objects, which each represents a CSS file that should be registered in the asset system. - -Each `Css` object has a unique ID and a path to the CSS file: - -```php -use Filament\Support\Assets\Css; -use Filament\Support\Facades\FilamentAsset; - -FilamentAsset::register([ - Css::make('custom-stylesheet', __DIR__ . '/../../resources/css/custom.css'), -]); -``` - -In this example, we use `__DIR__` to generate a relative path to the asset from the current file. For instance, if you were adding this code to `/app/Providers/AppServiceProvider.php`, then the CSS file should exist in `/resources/css/custom.css`. - -Now, when the `php artisan filament:assets` command is run, this CSS file is copied into the `/public` directory. In addition, it is now loaded into all Blade views that use Filament. If you're interested in only loading the CSS when it is required by an element on the page, check out the [Lazy loading CSS](#lazy-loading-css) section. - -### Using Tailwind CSS in plugins - -Typically, registering CSS files is used to register custom stylesheets for your application. If you want to process these files using Tailwind CSS, you need to consider the implications of that, especially if you are a plugin developer. - -Tailwind builds are unique to every application - they contain a minimal set of utility classes, only the ones that you are actually using in your application. This means that if you are a plugin developer, you probably should not be building your Tailwind CSS files into your plugin. Instead, you should provide the raw CSS files and instruct the user that they should build the Tailwind CSS file themselves. To do this, they probably just need to add your vendor directory into the `content` array of their `tailwind.config.js` file: - -```js -export default { - content: [ - './resources/**/*.blade.php', - './vendor/filament/**/*.blade.php', - './vendor/danharrin/filament-blog/resources/views/**/*.blade.php', // Your plugin's vendor directory - ], - // ... -} -``` - -This means that when they build their Tailwind CSS file, it will include all the utility classes that are used in your plugin's views, as well as the utility classes that are used in their application and the Filament core. - -However, with this technique, there might be extra complications for users who use your plugin with the [Panel Builder](../panels). If they have a [custom theme](../panels/themes), they will be fine, since they are building their own CSS file anyway using Tailwind CSS. However, if they are using the default stylesheet which is shipped with the Panel Builder, you might have to be careful about the utility classes that you use in your plugin's views. For instance, if you use a utility class that is not included in the default stylesheet, the user is not compiling it themselves, and it will not be included in the final CSS file. This means that your plugin's views might not look as expected. This is one of the few situations where I would recommend compiling and [registering](#registering-css-files) a Tailwind CSS-compiled stylesheet in your plugin. - -### Lazy loading CSS - -By default, all CSS files registered with the asset system are loaded in the `` of every Filament page. This is the simplest way to load CSS files, but sometimes they may be quite heavy and not required on every page. In this case, you can leverage the [Alpine.js Lazy Load Assets](https://github.com/tanthammar/alpine-lazy-load-assets) package that comes bundled with Filament. It allows you to easily load CSS files on-demand using Alpine.js. The premise is very simple, you use the `x-load-css` directive on an element, and when that element is loaded onto the page, the specified CSS files are loaded into the `` of the page. This is perfect for both small UI elements and entire pages that require a CSS file: - -```blade -
    - -
    -``` - -To prevent the CSS file from being loaded automatically, you can use the `loadedOnRequest()` method: - -```php -use Filament\Support\Assets\Css; -use Filament\Support\Facades\FilamentAsset; - -FilamentAsset::register([ - Css::make('custom-stylesheet', __DIR__ . '/../../resources/css/custom.css')->loadedOnRequest(), -]); -``` - -If your CSS file was [registered to a plugin](#registering-assets-for-a-plugin), you must pass that in as the second argument to the `FilamentAsset::getStyleHref()` method: - -```blade -
    - -
    -``` - -### Registering CSS files from a URL - -If you want to register a CSS file from a URL, you may do so. These assets will be loaded on every page as normal, but not copied into the `/public` directory when the `php artisan filament:assets` command is run. This is useful for registering external stylesheets from a CDN, or stylesheets that you are already compiling directly into the `/public` directory: - -```php -use Filament\Support\Assets\Css; -use Filament\Support\Facades\FilamentAsset; - -FilamentAsset::register([ - Css::make('example-external-stylesheet', 'https://example.com/external.css'), - Css::make('example-local-stylesheet', asset('css/local.css')), -]); -``` - -### Registering CSS variables - -Sometimes, you may wish to use dynamic data from the backend in CSS files. To do this, you can use the `FilamentAsset::registerCssVariables()` method in the `boot()` method of a service provider: - -```php -use Filament\Support\Facades\FilamentAsset; - -FilamentAsset::registerCssVariables([ - 'background-image' => asset('images/background.jpg'), -]); -``` - -Now, you can access these variables from any CSS file: - -```css -background-image: var(--background-image); -``` - -## Registering JavaScript files - -To register a JavaScript file with the asset system, use the `FilamentAsset::register()` method in the `boot()` method of a service provider. You must pass in an array of `Js` objects, which each represents a JavaScript file that should be registered in the asset system. - -Each `Js` object has a unique ID and a path to the JavaScript file: - -```php -use Filament\Support\Assets\Js; - -FilamentAsset::register([ - Js::make('custom-script', __DIR__ . '/../../resources/js/custom.js'), -]); -``` - -In this example, we use `__DIR__` to generate a relative path to the asset from the current file. For instance, if you were adding this code to `/app/Providers/AppServiceProvider.php`, then the JavaScript file should exist in `/resources/js/custom.js`. - -Now, when the `php artisan filament:assets` command is run, this JavaScript file is copied into the `/public` directory. In addition, it is now loaded into all Blade views that use Filament. If you're interested in only loading the JavaScript when it is required by an element on the page, check out the [Lazy loading JavaScript](#lazy-loading-javascript) section. - -### Lazy loading JavaScript - -By default, all JavaScript files registered with the asset system are loaded at the bottom of every Filament page. This is the simplest way to load JavaScript files, but sometimes they may be quite heavy and not required on every page. In this case, you can leverage the [Alpine.js Lazy Load Assets](https://github.com/tanthammar/alpine-lazy-load-assets) package that comes bundled with Filament. It allows you to easily load JavaScript files on-demand using Alpine.js. The premise is very simple, you use the `x-load-js` directive on an element, and when that element is loaded onto the page, the specified JavaScript files are loaded at the bottom of the page. This is perfect for both small UI elements and entire pages that require a JavaScript file: - -```blade -
    - -
    -``` - -To prevent the JavaScript file from being loaded automatically, you can use the `loadedOnRequest()` method: - -```php -use Filament\Support\Assets\Js; -use Filament\Support\Facades\FilamentAsset; - -FilamentAsset::register([ - Js::make('custom-script', __DIR__ . '/../../resources/js/custom.js')->loadedOnRequest(), -]); -``` - -If your JavaScript file was [registered to a plugin](#registering-assets-for-a-plugin), you must pass that in as the second argument to the `FilamentAsset::getScriptSrc()` method: - -```blade -
    - -
    -``` - -#### Asynchronous Alpine.js components - - - -Sometimes, you may want to load external JavaScript libraries for your Alpine.js-based components. The best way to do this is by storing the compiled JavaScript and Alpine component in a separate file, and letting us load it whenever the component is rendered. - -Firstly, you should install [esbuild](https://esbuild.github.io) via NPM, which we will use to create a single JavaScript file containing your external library and Alpine component: - -```bash -npm install esbuild --save-dev -``` - -Then, you must create a script to compile your JavaScript and Alpine component. You can put this anywhere, for example `bin/build.js`: - -```js -import * as esbuild from 'esbuild' - -const isDev = process.argv.includes('--dev') - -async function compile(options) { - const context = await esbuild.context(options) - - if (isDev) { - await context.watch() - } else { - await context.rebuild() - await context.dispose() - } -} - -const defaultOptions = { - define: { - 'process.env.NODE_ENV': isDev ? `'development'` : `'production'`, - }, - bundle: true, - mainFields: ['module', 'main'], - platform: 'neutral', - sourcemap: isDev ? 'inline' : false, - sourcesContent: isDev, - treeShaking: true, - target: ['es2020'], - minify: !isDev, - plugins: [{ - name: 'watchPlugin', - setup: function (build) { - build.onStart(() => { - console.log(`Build started at ${new Date(Date.now()).toLocaleTimeString()}: ${build.initialOptions.outfile}`) - }) - - build.onEnd((result) => { - if (result.errors.length > 0) { - console.log(`Build failed at ${new Date(Date.now()).toLocaleTimeString()}: ${build.initialOptions.outfile}`, result.errors) - } else { - console.log(`Build finished at ${new Date(Date.now()).toLocaleTimeString()}: ${build.initialOptions.outfile}`) - } - }) - } - }], -} - -compile({ - ...defaultOptions, - entryPoints: ['./resources/js/components/test-component.js'], - outfile: './resources/js/dist/components/test-component.js', -}) -``` - -As you can see at the bottom of the script, we are compiling a file called `resources/js/components/test-component.js` into `resources/js/dist/components/test-component.js`. You can change these paths to suit your needs. You can compile as many components as you want. - -Now, create a new file called `resources/js/components/test-component.js`: - -```js -// Import any external JavaScript libraries from NPM here. - -export default function testComponent({ - state, -}) { - return { - state, - - // You can define any other Alpine.js properties here. - - init: function () { - // Initialise the Alpine component here, if you need to. - }, - - // You can define any other Alpine.js functions here. - } -} -``` - -Now, you can compile this file into `resources/js/dist/components/test-component.js` by running the following command: - -```bash -node bin/build.js -``` - -If you want to watch for changes to this file instead of compiling once, try the following command: - -```bash -node bin/build.js --dev -``` - -Now, you need to tell Filament to publish this compiled JavaScript file into the `/public` directory of the Laravel application, so it is accessible to the browser. To do this, you can use the `FilamentAsset::register()` method in the `boot()` method of a service provider, passing in an `AlpineComponent` object: - -```php -use Filament\Support\Assets\AlpineComponent; -use Filament\Support\Facades\FilamentAsset; - -FilamentAsset::register([ - AlpineComponent::make('test-component', __DIR__ . '/../../resources/js/dist/components/test-component.js'), -]); -``` - -When you run `php artisan filament:assets`, the compiled file will be copied into the `/public` directory. - -Finally, you can load this asynchronous Alpine component in your view using `ax-load` attributes and the `FilamentAsset::getAlpineComponentSrc()` method: - -```blade -
    - -
    -``` - -This example is for a [custom form field](../forms/fields/custom). It passes the `state` in as a parameter to the `testComponent()` function, which is entangled with a Livewire component property. You can pass in any parameters you want, and access them in the `testComponent()` function. If you're not using a custom form field, you can ignore the `state` parameter in this example. - -The `ax-load` attributes come from the [Async Alpine](https://async-alpine.dev/docs/strategies) package, and any features of that package can be used here. - -### Registering script data - -Sometimes, you may wish to make data from the backend available to JavaScript files. To do this, you can use the `FilamentAsset::registerScriptData()` method in the `boot()` method of a service provider: - -```php -use Filament\Support\Facades\FilamentAsset; - -FilamentAsset::registerScriptData([ - 'user' => [ - 'name' => auth()->user()?->name, - ], -]); -``` - -Now, you can access that data from any JavaScript file at runtime, using the `window.filamentData` object: - -```js -window.filamentData.user.name // 'Dan Harrin' -``` - -### Registering JavaScript files from a URL - -If you want to register a JavaScript file from a URL, you may do so. These assets will be loaded on every page as normal, but not copied into the `/public` directory when the `php artisan filament:assets` command is run. This is useful for registering external scripts from a CDN, or scripts that you are already compiling directly into the `/public` directory: - -```php -use Filament\Support\Assets\Js; - -FilamentAsset::register([ - Js::make('example-external-script', 'https://example.com/external.js'), - Js::make('example-local-script', asset('js/local.js')), -]); -``` diff --git a/vendor/filament/support/docs/03-icons.md b/vendor/filament/support/docs/03-icons.md deleted file mode 100644 index 7c557afa..00000000 --- a/vendor/filament/support/docs/03-icons.md +++ /dev/null @@ -1,217 +0,0 @@ ---- -title: Icons ---- - -## Overview - -Icons are used throughout the entire Filament UI to visually communicate core parts of the user experience. To render icons, we use the [Blade Icons](https://github.com/blade-ui-kit/blade-icons) package from Blade UI Kit. - -They have a website where you can [search all the available icons](https://blade-ui-kit.com/blade-icons?set=1#search) from various Blade Icons packages. Each package contains a different icon set that you can choose from. - -## Using custom SVGs as icons - -The [Blade Icons](https://github.com/blade-ui-kit/blade-icons) package allows you to register custom SVGs as icons. This is useful if you want to use your own custom icons in Filament. - -To start with, publish the Blade Icons configuration file: - -```bash -php artisan vendor:publish --tag=blade-icons -``` - -Now, open the `config/blade-icons.php` file, and uncomment the `default` set in the `sets` array. - -Now that the default set exists in the config file, you can simply put any icons you want inside the `resources/svg` directory of your application. For example, if you put an SVG file named `star.svg` inside the `resources/svg` directory, you can reference it anywhere in Filament as `icon-star`. The `icon-` prefix is configurable in the `config/blade-icons.php` file too. You can also render the custom icon in a Blade view using the [`@svg('icon-star')` directive](https://github.com/blade-ui-kit/blade-icons#directive). - -## Replacing the default icons - -Filament includes an icon management system that allows you to replace any icons are used by default in the UI with your own. This happens in the `boot()` method of any service provider, like `AppServiceProvider`, or even a dedicated service provider for icons. If you wanted to build a plugin to replace Heroicons with a different set, you could absolutely do that by creating a Laravel package with a similar service provider. - -To replace an icon, you can use the `FilamentIcon` facade. It has a `register()` method, which accepts an array of icons to replace. The key of the array is the unique [icon alias](#available-icon-aliases) that identifies the icon in the Filament UI, and the value is name of a Blade icon to replace it instead. Alternatively, you may use HTML instead of an icon name to render an icon from a Blade view for example: - -```php -use Filament\Support\Facades\FilamentIcon; - -FilamentIcon::register([ - 'panels::topbar.global-search.field' => 'fas-magnifying-glass', - 'panels::sidebar.group.collapse-button' => view('icons.chevron-up'), -]); -``` - -### Allowing users to customize icons from your plugin - -If you have built a Filament plugin, your users may want to be able to customize icons in the same way that they can with any core Filament package. This is possible if you replace any manual `@svg()` usages with the `` Blade component. This component allows you to pass in an icon alias, the name of the SVG icon that should be used by default, and any classes or HTML attributes: - -```blade - -``` - -Alternatively, you may pass an SVG element into the component's slot instead of defining a default icon name: - -```blade - - - - - -``` - -## Available icon aliases - -### Panel Builder icon aliases - -- `panels::global-search.field` - Global search field -- `panels::pages.dashboard.actions.filter` - Trigger button of the dashboard filter action -- `panels::pages.dashboard.navigation-item` - Dashboard page navigation item -- `panels::pages.password-reset.request-password-reset.actions.login` - Trigger button of the login action on the request password reset page -- `panels::pages.password-reset.request-password-reset.actions.login.rtl` - Trigger button of the login action on the request password reset page (right-to-left direction) -- `panels::resources.pages.edit-record.navigation-item` - Resource edit record page navigation item -- `panels::resources.pages.manage-related-records.navigation-item` - Resource manage related records page navigation item -- `panels::resources.pages.view-record.navigation-item` - Resource view record page navigation item -- `panels::sidebar.collapse-button` - Button to collapse the sidebar -- `panels::sidebar.collapse-button.rtl` - Button to collapse the sidebar (right-to-left direction) -- `panels::sidebar.expand-button` - Button to expand the sidebar -- `panels::sidebar.expand-button.rtl` - Button to expand the sidebar (right-to-left direction) -- `panels::sidebar.group.collapse-button` - Collapse button for a sidebar group -- `panels::tenant-menu.billing-button` - Billing button in the tenant menu -- `panels::tenant-menu.profile-button` - Profile button in the tenant menu -- `panels::tenant-menu.registration-button` - Registration button in the tenant menu -- `panels::tenant-menu.toggle-button` - Button to toggle the tenant menu -- `panels::theme-switcher.light-button` - Button to switch to the light theme from the theme switcher -- `panels::theme-switcher.dark-button` - Button to switch to the dark theme from the theme switcher -- `panels::theme-switcher.system-button` - Button to switch to the system theme from the theme switcher -- `panels::topbar.close-sidebar-button` - Button to close the sidebar -- `panels::topbar.open-sidebar-button` - Button to open the sidebar -- `panels::topbar.group.toggle-button` - Toggle button for a topbar group -- `panels::topbar.open-database-notifications-button` - Button to open the database notifications modal -- `panels::user-menu.profile-item` - Profile item in the user menu -- `panels::user-menu.logout-button` - Button in the user menu to log out -- `panels::widgets.account.logout-button` - Button in the account widget to log out -- `panels::widgets.filament-info.open-documentation-button` - Button to open the documentation from the Filament info widget -- `panels::widgets.filament-info.open-github-button` - Button to open GitHub from the Filament info widget - -### Form Builder icon aliases - -- `forms::components.builder.actions.clone` - Trigger button of a clone action in a builder item -- `forms::components.builder.actions.collapse` - Trigger button of a collapse action in a builder item -- `forms::components.builder.actions.delete` - Trigger button of a delete action in a builder item -- `forms::components.builder.actions.expand` - Trigger button of an expand action in a builder item -- `forms::components.builder.actions.move-down` - Trigger button of a move down action in a builder item -- `forms::components.builder.actions.move-up` - Trigger button of a move up action in a builder item -- `forms::components.builder.actions.reorder` - Trigger button of a reorder action in a builder item -- `forms::components.checkbox-list.search-field` - Search input in a checkbox list -- `forms::components.file-upload.editor.actions.drag-crop` - Trigger button of a drag crop action in a file upload editor -- `forms::components.file-upload.editor.actions.drag-move` - Trigger button of a drag move action in a file upload editor -- `forms::components.file-upload.editor.actions.flip-horizontal` - Trigger button of a flip horizontal action in a file upload editor -- `forms::components.file-upload.editor.actions.flip-vertical` - Trigger button of a flip vertical action in a file upload editor -- `forms::components.file-upload.editor.actions.move-down` - Trigger button of a move down action in a file upload editor -- `forms::components.file-upload.editor.actions.move-left` - Trigger button of a move left action in a file upload editor -- `forms::components.file-upload.editor.actions.move-right` - Trigger button of a move right action in a file upload editor -- `forms::components.file-upload.editor.actions.move-up` - Trigger button of a move up action in a file upload editor -- `forms::components.file-upload.editor.actions.rotate-left` - Trigger button of a rotate left action in a file upload editor -- `forms::components.file-upload.editor.actions.rotate-right` - Trigger button of a rotate right action in a file upload editor -- `forms::components.file-upload.editor.actions.zoom-100` - Trigger button of a zoom 100 action in a file upload editor -- `forms::components.file-upload.editor.actions.zoom-in` - Trigger button of a zoom in action in a file upload editor -- `forms::components.file-upload.editor.actions.zoom-out` - Trigger button of a zoom out action in a file upload editor -- `forms::components.key-value.actions.delete` - Trigger button of a delete action in a key-value field item -- `forms::components.key-value.actions.reorder` - Trigger button of a reorder action in a key-value field item -- `forms::components.repeater.actions.clone` - Trigger button of a clone action in a repeater item -- `forms::components.repeater.actions.collapse` - Trigger button of a collapse action in a repeater item -- `forms::components.repeater.actions.delete` - Trigger button of a delete action in a repeater item -- `forms::components.repeater.actions.expand` - Trigger button of an expand action in a repeater item -- `forms::components.repeater.actions.move-down` - Trigger button of a move down action in a repeater item -- `forms::components.repeater.actions.move-up` - Trigger button of a move up action in a repeater item -- `forms::components.repeater.actions.reorder` - Trigger button of a reorder action in a repeater item -- `forms::components.select.actions.create-option` - Trigger button of a create option action in a select field -- `forms::components.select.actions.edit-option` - Trigger button of an edit option action in a select field -- `forms::components.text-input.actions.hide-password` - Trigger button of a hide password action in a text input field -- `forms::components.text-input.actions.show-password` - Trigger button of a show password action in a text input field -- `forms::components.toggle-buttons.boolean.false` - "False" option of a `boolean()` toggle buttons field -- `forms::components.toggle-buttons.boolean.true` - "True" option of a `boolean()` toggle buttons field -- `forms::components.wizard.completed-step` - Completed step in a wizard - -### Table Builder icon aliases - -- `tables::actions.disable-reordering` - Trigger button of the disable reordering action -- `tables::actions.enable-reordering` - Trigger button of the enable reordering action -- `tables::actions.filter` - Trigger button of the filter action -- `tables::actions.group` - Trigger button of a group records action -- `tables::actions.open-bulk-actions` - Trigger button of an open bulk actions action -- `tables::actions.toggle-columns` - Trigger button of the toggle columns action -- `tables::columns.collapse-button` - Button to collapse a column -- `tables::columns.icon-column.false` - Falsy state of an icon column -- `tables::columns.icon-column.true` - Truthy state of an icon column -- `tables::empty-state` - Empty state icon -- `tables::filters.query-builder.constraints.boolean` - Default icon for a boolean constraint in the query builder -- `tables::filters.query-builder.constraints.date` - Default icon for a date constraint in the query builder -- `tables::filters.query-builder.constraints.number` - Default icon for a number constraint in the query builder -- `tables::filters.query-builder.constraints.relationship` - Default icon for a relationship constraint in the query builder -- `tables::filters.query-builder.constraints.select` - Default icon for a select constraint in the query builder -- `tables::filters.query-builder.constraints.text` - Default icon for a text constraint in the query builder -- `tables::filters.remove-all-button` - Button to remove all filters -- `tables::grouping.collapse-button` - Button to collapse a group of records -- `tables::header-cell.sort-asc-button` - Sort button of a column sorted in ascending order -- `tables::header-cell.sort-desc-button` - Sort button of a column sorted in descending order -- `tables::reorder.handle` - Handle to grab in order to reorder a record with drag and drop -- `tables::search-field` - Search input - -### Notifications icon aliases - -- `notifications::database.modal.empty-state` - Empty state of the database notifications modal -- `notifications::notification.close-button` - Button to close a notification -- `notifications::notification.danger` - Danger notification -- `notifications::notification.info` - Info notification -- `notifications::notification.success` - Success notification -- `notifications::notification.warning` - Warning notification - -### Actions icon aliases - -- `actions::action-group` - Trigger button of an action group -- `actions::create-action.grouped` - Trigger button of a grouped create action -- `actions::delete-action` - Trigger button of a delete action -- `actions::delete-action.grouped` - Trigger button of a grouped delete action -- `actions::delete-action.modal` - Modal of a delete action -- `actions::detach-action` - Trigger button of a detach action -- `actions::detach-action.modal` - Modal of a detach action -- `actions::dissociate-action` - Trigger button of a dissociate action -- `actions::dissociate-action.modal` - Modal of a dissociate action -- `actions::edit-action` - Trigger button of an edit action -- `actions::edit-action.grouped` - Trigger button of a grouped edit action -- `actions::export-action.grouped` - Trigger button of a grouped export action -- `actions::force-delete-action` - Trigger button of a force delete action -- `actions::force-delete-action.grouped` - Trigger button of a grouped force delete action -- `actions::force-delete-action.modal` - Modal of a force delete action -- `actions::import-action.grouped` - Trigger button of a grouped import action -- `actions::modal.confirmation` - Modal of an action that requires confirmation -- `actions::replicate-action` - Trigger button of a replicate action -- `actions::replicate-action.grouped` - Trigger button of a grouped replicate action -- `actions::restore-action` - Trigger button of a restore action -- `actions::restore-action.grouped` - Trigger button of a grouped restore action -- `actions::restore-action.modal` - Modal of a restore action -- `actions::view-action` - Trigger button of a view action -- `actions::view-action.grouped` - Trigger button of a grouped view action - -### Infolist Builder icon aliases - -- `infolists::components.icon-entry.false` - Falsy state of an icon entry -- `infolists::components.icon-entry.true` - Truthy state of an icon entry - -### UI components icon aliases - -- `badge.delete-button` - Button to delete a badge -- `breadcrumbs.separator` - Separator between breadcrumbs -- `breadcrumbs.separator.rtl` - Separator between breadcrumbs (right-to-left direction) -- `modal.close-button` - Button to close a modal -- `pagination.previous-button` - Button to go to the previous page -- `pagination.previous-button.rtl` - Button to go to the previous page (right-to-left direction) -- `pagination.next-button` - Button to go to the next page -- `pagination.next-button.rtl` - Button to go to the next page (right-to-left direction) -- `section.collapse-button` - Button to collapse a section diff --git a/vendor/filament/support/docs/04-colors.md b/vendor/filament/support/docs/04-colors.md deleted file mode 100644 index 46264700..00000000 --- a/vendor/filament/support/docs/04-colors.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Colors ---- - -## Overview - -Filament uses CSS variables to define its color palette. These CSS variables are mapped to Tailwind classes in the preset file that you load when installing Filament. - -## Customizing the default colors - -From a service provider's `boot()` method, or middleware, you can call the `FilamentColor::register()` method, which you can use to customize which colors Filament uses for UI elements. - -There are 7 default colors that are used throughout Filament that you are able to customize: - -```php -use Filament\Support\Colors\Color; -use Filament\Support\Facades\FilamentColor; - -FilamentColor::register([ - 'danger' => Color::Red, - 'gray' => Color::Zinc, - 'info' => Color::Blue, - 'primary' => Color::Amber, - 'success' => Color::Green, - 'warning' => Color::Amber, -]); -``` - -The `Color` class contains every [Tailwind CSS color](https://tailwindcss.com/docs/customizing-colors#color-palette-reference) to choose from. - -You can also pass in a function to `register()` which will only get called when the app is getting rendered. This is useful if you are calling `register()` from a service provider, and want to access objects like the currently authenticated user, which are initialized later in middleware. - -## Using a non-Tailwind color - -You can use custom colors that are not included in the [Tailwind CSS color](https://tailwindcss.com/docs/customizing-colors#color-palette-reference) palette by passing an array of color shades from `50` to `950` in RGB format: - -```php -use Filament\Support\Facades\FilamentColor; - -FilamentColor::register([ - 'danger' => [ - 50 => '254, 242, 242', - 100 => '254, 226, 226', - 200 => '254, 202, 202', - 300 => '252, 165, 165', - 400 => '248, 113, 113', - 500 => '239, 68, 68', - 600 => '220, 38, 38', - 700 => '185, 28, 28', - 800 => '153, 27, 27', - 900 => '127, 29, 29', - 950 => '69, 10, 10', - ], -]); -``` - -### Generating a custom color from a hex code - -You can use the `Color::hex()` method to generate a custom color palette from a hex code: - -```php -use Filament\Support\Colors\Color; -use Filament\Support\Facades\FilamentColor; - -FilamentColor::register([ - 'danger' => Color::hex('#ff0000'), -]); -``` - -### Generating a custom color from an RGB value - -You can use the `Color::rgb()` method to generate a custom color palette from an RGB value: - -```php -use Filament\Support\Colors\Color; -use Filament\Support\Facades\FilamentColor; - -FilamentColor::register([ - 'danger' => Color::rgb('rgb(255, 0, 0)'), -]); -``` - -## Registering extra colors - -You can register extra colors that you can use throughout Filament: - -```php -use Filament\Support\Colors\Color; -use Filament\Support\Facades\FilamentColor; - -FilamentColor::register([ - 'indigo' => Color::Indigo, -]); -``` - -Now, you can use this color anywhere you would normally add `primary`, `danger`, etc. diff --git a/vendor/filament/support/docs/05-style-customization.md b/vendor/filament/support/docs/05-style-customization.md deleted file mode 100644 index 522f5351..00000000 --- a/vendor/filament/support/docs/05-style-customization.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Style customization ---- - -## Overview - -Filament uses CSS "hook" classes to allow various HTML elements to be customized using CSS. - -## Discovering hook classes - -We could document all the hook classes across the entire Filament UI, but that would be a lot of work, and probably not very useful to you. Instead, we recommend using your browser's developer tools to inspect the elements you want to customize, and then use the hook classes to target those elements. - -All hook classes are prefixed with `fi-`, which is a great way to identify them. They are usually right at the start of the class list, so they are easy to find, but sometimes they may fall further down the list if we have to apply them conditionally with JavaScript or Blade. - -If you don't find a hook class you're looking for, try not to hack around it, as it might expose your styling customizations to breaking changes in future releases. Instead, please open a pull request to add the hook class you need. We can help you maintain naming consistency. You probably don't even need to pull down the Filament repository locally for these pull requests, as you can just edit the Blade files directly on GitHub. - -## Applying styles to hook classes - -For example, if you want to customize the color of the sidebar, you can inspect the sidebar element in your browser's developer tools, see that it uses the `fi-sidebar`, and then add CSS to your app like this: - -```css -.fi-sidebar { - background-color: #fafafa; -} -``` - -Alternatively, since Filament is built upon Tailwind CSS, you can use their `@apply` directive to apply Tailwind classes to Filament elements: - -```css -.fi-sidebar { - @apply bg-gray-50 dark:bg-gray-950; -} -``` - -Occasionally, you may need to use the `!important` modifier to override existing styles, but please use this sparingly, as it can make your styles difficult to maintain: - -```css -.fi-sidebar { - @apply bg-gray-50 dark:bg-gray-950 !important; -} -``` - -You can even apply `!important` to only specific Tailwind classes, which is a little less intrusive, by prefixing the class name with `!`: - -```css -.fi-sidebar { - @apply !bg-gray-50 dark:!bg-gray-950; -} -``` - -## Common hook class abbreviations - -We use a few common abbreviations in our hook classes to keep them short and readable: - -- `fi` is short for "Filament" -- `fi-ac` is used to represent classes used in the Actions package -- `fi-fo` is used to represent classes used in the Form Builder package -- `fi-in` is used to represent classes used in the Infolist Builder package -- `fi-no` is used to represent classes used in the Notifications package -- `fi-ta` is used to represent classes used in the Table Builder package -- `fi-wi` is used to represent classes used in the Widgets package -- `btn` is short for "button" -- `col` is short for "column" -- `ctn` is short for "container" -- `wrp` is short for "wrapper" - -## Publishing Blade views - -You may be tempted to publish the internal Blade views to your application so that you can customize them. We don't recommend this, as it will introduce breaking changes into your application in future updates. Please use the [CSS hook classes](#applying-styles-to-hook-classes) wherever possible. - -If you do decide to publish the Blade views, please lock all Filament packages to a specific version in your `composer.json` file, and then update Filament manually by bumping this number, testing your entire application after each update. This will help you identify breaking changes safely. diff --git a/vendor/filament/support/docs/06-render-hooks.md b/vendor/filament/support/docs/06-render-hooks.md deleted file mode 100644 index 53cc47a7..00000000 --- a/vendor/filament/support/docs/06-render-hooks.md +++ /dev/null @@ -1,184 +0,0 @@ ---- -title: Render hooks ---- - -## Overview - -Filament allows you to render Blade content at various points in the frameworks views. It's useful for plugins to be able to inject HTML into the framework. Also, since Filament does not recommend publishing the views due to an increased risk of breaking changes, it's also useful for users. - -## Registering render hooks - -To register render hooks, you can call `FilamentView::registerRenderHook()` from a service provider or middleware. The first argument is the name of the render hook, and the second argument is a callback that returns the content to be rendered: - -```php -use Filament\Support\Facades\FilamentView; -use Illuminate\Support\Facades\Blade; - -FilamentView::registerRenderHook( - 'panels::body.start', - fn (): string => Blade::render('@livewire(\'livewire-ui-modal\')'), -); -``` - -You could also render view content from a file: - -```php -use Filament\Support\Facades\FilamentView; -use Illuminate\Contracts\View\View; - -FilamentView::registerRenderHook( - 'panels::body.start', - fn (): View => view('impersonation-banner'), -); -``` - -## Available render hooks - -### Panel Builder render hooks - -- `panels::auth.login.form.after` - After login form -- `panels::auth.login.form.before` - Before login form -- `panels::auth.password-reset.request.form.after` - After password reset request form -- `panels::auth.password-reset.request.form.before` - Before password reset request form -- `panels::auth.password-reset.reset.form.after` - After password reset form -- `panels::auth.password-reset.reset.form.before` - Before password reset form -- `panels::auth.register.form.after` - After register form -- `panels::auth.register.form.before` - Before register form -- `panels::body.end` - Before `` -- `panels::body.start` - After `` -- `panels::content.end` - After page content, inside `
    ` -- `panels::content.start` - Before page content, inside `
    ` -- `panels::footer` - Footer of the page -- `panels::global-search.after` - After the [global search](../panels/resources/global-search) container, inside the topbar -- `panels::global-search.before` - Before the [global search](../panels/resources/global-search) container, inside the topbar -- `panels::global-search.end` - The end of the [global search](../panels/resources/global-search) container -- `panels::global-search.start` - The start of the [global search](../panels/resources/global-search) container -- `panels::head.end` - Before `` -- `panels::head.start` - After `` -- `panels::page.end` - End of the page content container, also [can be scoped](#scoping-render-hooks) to the page or resource class -- `panels::page.footer-widgets.after` - After the page footer widgets, also [can be scoped](#scoping-render-hooks) to the page or resource class -- `panels::page.footer-widgets.before` - Before the page footer widgets, also [can be scoped](#scoping-render-hooks) to the page or resource class -- `panels::page.header.actions.after` - After the page header actions, also [can be scoped](#scoping-render-hooks) to the page or resource class -- `panels::page.header.actions.before` - Before the page header actions, also [can be scoped](#scoping-render-hooks) to the page or resource class -- `panels::page.header-widgets.after` - After the page header widgets, also [can be scoped](#scoping-render-hooks) to the page or resource class -- `panels::page.header-widgets.before` - Before the page header widgets, also [can be scoped](#scoping-render-hooks) to the page or resource class -- `panels::page.start` - Start of the page content container, also [can be scoped](#scoping-render-hooks) to the page or resource class -- `panels::resource.pages.list-records.table.after` - After the resource table, also [can be scoped](#scoping-render-hooks) to the page or resource class -- `panels::resource.pages.list-records.table.before` - Before the resource table, also [can be scoped](#scoping-render-hooks) to the page or resource class -- `panels::resource.pages.list-records.tabs.end` - The end of the filter tabs (after the last tab), also [can be scoped](#scoping-render-hooks) to the page or resource class -- `panels::resource.pages.list-records.tabs.start` - The start of the filter tabs (before the first tab), also [can be scoped](#scoping-render-hooks) to the page or resource class -- `panels::resource.relation-manager.after` - After the relation manager table, also [can be scoped](#scoping-render-hooks) to the page or relation manager class -- `panels::resource.relation-manager.before` - Before the relation manager table, also [can be scoped](#scoping-render-hooks) to the page or relation manager class -- `panels::scripts.after` - After scripts are defined -- `panels::scripts.before` - Before scripts are defined -- `panels::sidebar.nav.end` - In the [sidebar](../panels/navigation), before `` -- `panels::sidebar.nav.start` - In the [sidebar](../panels/navigation), after `
    diff --git a/vendor/livewire/livewire/src/Features/SupportPagination/views/simple-bootstrap.blade.php b/vendor/livewire/livewire/src/Features/SupportPagination/views/simple-bootstrap.blade.php deleted file mode 100644 index 44bdce01..00000000 --- a/vendor/livewire/livewire/src/Features/SupportPagination/views/simple-bootstrap.blade.php +++ /dev/null @@ -1,53 +0,0 @@ -@php -if (! isset($scrollTo)) { - $scrollTo = 'body'; -} - -$scrollIntoViewJsSnippet = ($scrollTo !== false) - ? << - @if ($paginator->hasPages()) - - @endif -
    diff --git a/vendor/livewire/livewire/src/Features/SupportPagination/views/simple-tailwind.blade.php b/vendor/livewire/livewire/src/Features/SupportPagination/views/simple-tailwind.blade.php deleted file mode 100644 index 5c461abb..00000000 --- a/vendor/livewire/livewire/src/Features/SupportPagination/views/simple-tailwind.blade.php +++ /dev/null @@ -1,56 +0,0 @@ -@php -if (! isset($scrollTo)) { - $scrollTo = 'body'; -} - -$scrollIntoViewJsSnippet = ($scrollTo !== false) - ? << - @if ($paginator->hasPages()) - - @endif - diff --git a/vendor/livewire/livewire/src/Features/SupportPagination/views/tailwind.blade.php b/vendor/livewire/livewire/src/Features/SupportPagination/views/tailwind.blade.php deleted file mode 100644 index 4a45b5f1..00000000 --- a/vendor/livewire/livewire/src/Features/SupportPagination/views/tailwind.blade.php +++ /dev/null @@ -1,126 +0,0 @@ -@php -if (! isset($scrollTo)) { - $scrollTo = 'body'; -} - -$scrollIntoViewJsSnippet = ($scrollTo !== false) - ? << - @if ($paginator->hasPages()) - - @endif - diff --git a/vendor/livewire/livewire/src/Features/SupportQueryString/BaseUrl.php b/vendor/livewire/livewire/src/Features/SupportQueryString/BaseUrl.php deleted file mode 100644 index e0909875..00000000 --- a/vendor/livewire/livewire/src/Features/SupportQueryString/BaseUrl.php +++ /dev/null @@ -1,120 +0,0 @@ -setPropertyFromQueryString(); - } - - public function dehydrate($context) - { - if (! $context->mounting) return; - - $this->pushQueryStringEffect($context); - } - - public function setPropertyFromQueryString() - { - if ($this->as === null && $this->isOnFormObjectProperty()) { - $this->as = $this->getSubName(); - } - - $initialValue = $this->getFromUrlQueryString($this->urlName(), 'noexist'); - - if ($initialValue === 'noexist') return; - - $decoded = is_array($initialValue) - ? json_decode(json_encode($initialValue), true) - : json_decode($initialValue, true); - - // If only part of an array is present in the query string, - // we want to merge instead of override the value... - if (is_array($decoded) && is_array($original = $this->getValue())) { - $decoded = $this->recursivelyMergeArraysWithoutAppendingDuplicateValues($original, $decoded); - } - - $value = $decoded === null ? $initialValue : $decoded; - - $this->setValue($value); - } - - protected function recursivelyMergeArraysWithoutAppendingDuplicateValues(&$array1, &$array2) - { - $merged = $array1; - - foreach ($array2 as $key => &$value) { - if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) { - $merged[$key] = $this->recursivelyMergeArraysWithoutAppendingDuplicateValues($merged[$key], $value); - } else { - $merged[$key] = $value; - } - } - - return $merged; - } - - public function pushQueryStringEffect($context) - { - $queryString = [ - 'as' => $this->as, - 'use' => $this->history ? 'push' : 'replace', - 'alwaysShow' => $this->keep, - 'except' => $this->except, - ]; - - $context->pushEffect('url', $queryString, $this->getName()); - } - - public function isOnFormObjectProperty() - { - $subTarget = $this->getSubTarget(); - - return $subTarget && is_subclass_of($subTarget, Form::class); - } - - public function urlName() - { - return $this->as ?? $this->getName(); - } - - public function getFromUrlQueryString($name, $default = null) - { - if (! app('livewire')->isLivewireRequest()) { - return request()->query($this->urlName(), $default); - } - - // If this is a subsequent ajax request, we can't use Laravel's standard "request()->query()"... - return $this->getFromRefererUrlQueryString( - request()->header('Referer'), - $name, - $default - ); - } - - public function getFromRefererUrlQueryString($url, $key, $default = null) - { - $parsedUrl = parse_url($url); - $query = []; - - if (isset($parsedUrl['query'])) { - parse_str($parsedUrl['query'], $query); - } - - return $query[$key] ?? $default; - } -} - diff --git a/vendor/livewire/livewire/src/Features/SupportQueryString/SupportQueryString.php b/vendor/livewire/livewire/src/Features/SupportQueryString/SupportQueryString.php deleted file mode 100644 index 47d52e22..00000000 --- a/vendor/livewire/livewire/src/Features/SupportQueryString/SupportQueryString.php +++ /dev/null @@ -1,62 +0,0 @@ -getQueryString()) return; - - foreach ($queryString as $key => $value) { - $key = is_string($key) ? $key : $value; - $alias = $value['as'] ?? $key; - $history = $value['history'] ?? true; - $keep = $value['alwaysShow'] ?? $value['keep'] ?? false; - $except = $value['except'] ?? null; - - $this->component->setPropertyAttribute($key, new BaseUrl(as: $alias, history: $history, keep: $keep, except: $except)); - } - } - - public function getQueryString() - { - if (isset($this->queryString)) return $this->queryString; - - $component = $this->component; - - $componentQueryString = []; - - if (method_exists($component, 'queryString')) $componentQueryString = invade($component)->queryString(); - elseif (property_exists($component, 'queryString')) $componentQueryString = invade($component)->queryString; - - return $this->queryString = collect(class_uses_recursive($class = $component::class)) - ->map(function ($trait) use ($class, $component) { - $member = 'queryString' . class_basename($trait); - - if (method_exists($class, $member)) { - return invade($component)->{$member}(); - } - - if (property_exists($class, $member)) { - return invade($component)->{$member}; - } - - return []; - }) - ->values() - ->mapWithKeys(function ($value) { - return $value; - }) - ->merge($componentQueryString) - ->toArray(); - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportReactiveProps/BaseReactive.php b/vendor/livewire/livewire/src/Features/SupportReactiveProps/BaseReactive.php deleted file mode 100644 index 594cc3e2..00000000 --- a/vendor/livewire/livewire/src/Features/SupportReactiveProps/BaseReactive.php +++ /dev/null @@ -1,45 +0,0 @@ -getName(); - - store($this->component)->push('reactiveProps', $property); - - $this->originalValueHash = crc32(json_encode($this->getValue())); - } - - public function hydrate() - { - if (SupportReactiveProps::hasPassedInProps($this->component->getId())) { - $updatedValue = SupportReactiveProps::getPassedInProp( - $this->component->getId(), $this->getName() - ); - - $this->setValue($updatedValue); - } - - $this->originalValueHash = crc32(json_encode($this->getValue())); - } - - public function dehydrate($context) - { - if ($this->originalValueHash !== crc32(json_encode($this->getValue()))) { - throw new CannotMutateReactivePropException($this->component->getName(), $this->getName()); - } - - $context->pushMemo('props', $this->getName()); - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportReactiveProps/CannotMutateReactivePropException.php b/vendor/livewire/livewire/src/Features/SupportReactiveProps/CannotMutateReactivePropException.php deleted file mode 100644 index ed1f5c9e..00000000 --- a/vendor/livewire/livewire/src/Features/SupportReactiveProps/CannotMutateReactivePropException.php +++ /dev/null @@ -1,13 +0,0 @@ - static::$pendingChildParams = []); - - on('mount.stub', function ($tag, $id, $params, $parent, $key) { - static::$pendingChildParams[$id] = $params; - }); - } - - static function hasPassedInProps($id) { - return isset(static::$pendingChildParams[$id]); - } - - static function getPassedInProp($id, $name) { - $params = static::$pendingChildParams[$id] ?? []; - - return $params[$name] ?? null; - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportRedirects/HandlesRedirects.php b/vendor/livewire/livewire/src/Features/SupportRedirects/HandlesRedirects.php deleted file mode 100644 index 4ea4d793..00000000 --- a/vendor/livewire/livewire/src/Features/SupportRedirects/HandlesRedirects.php +++ /dev/null @@ -1,36 +0,0 @@ -set('redirect', $url); - - if ($navigate) store($this)->set('redirectUsingNavigate', true); - - $shouldSkipRender = ! config('livewire.render_on_redirect', false); - - $shouldSkipRender && $this->skipRender(); - } - - public function redirectRoute($name, $parameters = [], $absolute = true, $navigate = false) - { - $this->redirect(route($name, $parameters, $absolute), $navigate); - } - - public function redirectIntended($default = '/', $navigate = false) - { - $url = session()->pull('url.intended', $default); - - $this->redirect($url, $navigate); - } - - public function redirectAction($name, $parameters = [], $absolute = true, $navigate = false) - { - $this->redirect(action($name, $parameters, $absolute), $navigate); - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportRedirects/Redirector.php b/vendor/livewire/livewire/src/Features/SupportRedirects/Redirector.php deleted file mode 100644 index e89ee68c..00000000 --- a/vendor/livewire/livewire/src/Features/SupportRedirects/Redirector.php +++ /dev/null @@ -1,46 +0,0 @@ -component->redirect($this->generator->to($path, [], $secure)); - - return $this; - } - - public function away($path, $status = 302, $headers = []) - { - return $this->to($path, $status, $headers); - } - - public function with($key, $value = null) - { - $key = is_array($key) ? $key : [$key => $value]; - - foreach ($key as $k => $v) { - $this->session->flash($k, $v); - } - - return $this; - } - - public function component(Component $component) - { - $this->component = $component; - - return $this; - } - - public function response($to) - { - return $this->createRedirect($to, 302, []); - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportRedirects/SupportRedirects.php b/vendor/livewire/livewire/src/Features/SupportRedirects/SupportRedirects.php deleted file mode 100644 index 70b08852..00000000 --- a/vendor/livewire/livewire/src/Features/SupportRedirects/SupportRedirects.php +++ /dev/null @@ -1,57 +0,0 @@ -bind('redirect', function () { - $redirector = app(Redirector::class)->component($this->component); - - if (app()->has('session.store')) { - $redirector->setSession(app('session.store')); - } - - return $redirector; - }); - } - - public function dehydrate($context) - { - // Put the old redirector back into the container. - app()->instance('redirect', array_pop(static::$redirectorCacheStack)); - - $to = $this->storeGet('redirect'); - $usingNavigate = $this->storeGet('redirectUsingNavigate'); - - if (is_subclass_of($to, Component::class)) { - $to = url()->action($to); - } - - if ($to && ! app(HandleRequests::class)->isLivewireRequest()) { - abort(redirect($to)); - } - - if (! $to) { - // If there was no redirect. Clear flash session data. - if (app()->has('session.store')) { - session()->forget(session()->get('_flash.new')); - } - - return; - } - - $context->addEffect('redirect', $to); - $usingNavigate && $context->addEffect('redirectUsingNavigate', true); - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportRedirects/TestsRedirects.php b/vendor/livewire/livewire/src/Features/SupportRedirects/TestsRedirects.php deleted file mode 100644 index a86f059b..00000000 --- a/vendor/livewire/livewire/src/Features/SupportRedirects/TestsRedirects.php +++ /dev/null @@ -1,41 +0,0 @@ -action($uri); - } - - if (! app('livewire')->isLivewireRequest()) { - $this->lastState->getResponse()->assertRedirect($uri); - - return $this; - } - - PHPUnit::assertArrayHasKey( - 'redirect', - $this->effects, - 'Component did not perform a redirect.' - ); - - if (! is_null($uri)) { - PHPUnit::assertSame(url($uri), url($this->effects['redirect'])); - } - - return $this; - } - - public function assertNoRedirect() - { - PHPUnit::assertTrue(! isset($this->effects['redirect'])); - - return $this; - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportScriptsAndAssets/SupportScriptsAndAssets.php b/vendor/livewire/livewire/src/Features/SupportScriptsAndAssets/SupportScriptsAndAssets.php deleted file mode 100644 index be67a3ae..00000000 --- a/vendor/livewire/livewire/src/Features/SupportScriptsAndAssets/SupportScriptsAndAssets.php +++ /dev/null @@ -1,142 +0,0 @@ -getPath()); - - if (! isset(static::$countersByViewPath[$viewPath])) static::$countersByViewPath[$viewPath] = 0; - - $key = $viewPath.'-'.static::$countersByViewPath[$viewPath]; - - static::$countersByViewPath[$viewPath]++; - - return $key; - } - - static function provide() - { - on('flush-state', function () { - static::$alreadyRunAssetKeys = []; - static::$countersByViewPath = []; - static::$renderedAssets = []; - }); - - Blade::directive('script', function () { - $key = static::getUniqueBladeCompileTimeKey(); - - return << - PHP; - }); - - Blade::directive('endscript', function () { - return <<push('scripts', \$__output, \$__scriptKey) - ?> - PHP; - }); - - Blade::directive('assets', function () { - $key = static::getUniqueBladeCompileTimeKey(); - - return << - PHP; - }); - - Blade::directive('endassets', function () { - return <<push('assets', \$__output, \$__assetKey); - } - ?> - PHP; - }); - } - - function hydrate($memo) { - // Store the "scripts" and "assets" memos so they can be re-added later (persisted between requests)... - if (isset($memo['scripts'])) { - store($this->component)->set('forwardScriptsToDehydrateMemo', $memo['scripts']); - } - - if (isset($memo['assets'])) { - store($this->component)->set('forwardAssetsToDehydrateMemo', $memo['assets']); - } - } - - function dehydrate($context) - { - $alreadyRunScriptKeys = store($this->component)->get('forwardScriptsToDehydrateMemo', []); - - // Add any scripts to the payload that haven't been run yet for this component.... - foreach (store($this->component)->get('scripts', []) as $key => $script) { - if (! in_array($key, $alreadyRunScriptKeys)) { - $context->pushEffect('scripts', $script, $key); - $alreadyRunScriptKeys[] = $key; - } - } - - $context->addMemo('scripts', $alreadyRunScriptKeys); - - // Add any assets to the payload that haven't been run yet for the entire page... - - $alreadyRunAssetKeys = store($this->component)->get('forwardAssetsToDehydrateMemo', []); - - foreach (store($this->component)->get('assets', []) as $key => $assets) { - if (! in_array($key, $alreadyRunAssetKeys)) { - - // These will either get injected into the HTML if it's an initial page load - // or they will be added to the "assets" key in an ajax payload... - static::$renderedAssets[$key] = $assets; - - $alreadyRunAssetKeys[] = $key; - } - } - - $context->addMemo('assets', $alreadyRunAssetKeys); - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportScriptsAndAssets/test.js b/vendor/livewire/livewire/src/Features/SupportScriptsAndAssets/test.js deleted file mode 100644 index 3dddc4c1..00000000 --- a/vendor/livewire/livewire/src/Features/SupportScriptsAndAssets/test.js +++ /dev/null @@ -1,2 +0,0 @@ - -document.querySelector('[dusk="foo"]').textContent = 'evaluated' diff --git a/vendor/livewire/livewire/src/Features/SupportSession/BaseSession.php b/vendor/livewire/livewire/src/Features/SupportSession/BaseSession.php deleted file mode 100644 index 7a37a7c8..00000000 --- a/vendor/livewire/livewire/src/Features/SupportSession/BaseSession.php +++ /dev/null @@ -1,49 +0,0 @@ -exists()) return; - - $fromSession = $this->read(); - - $this->setValue($fromSession); - } - - public function dehydrate($context) - { - $this->write(); - } - - protected function exists() - { - return Session::exists($this->key()); - } - - protected function read() - { - return Session::get($this->key()); - } - - protected function write() - { - Session::put($this->key(), $this->getValue()); - } - - protected function key() - { - return $this->key ?: (string) 'lw' . crc32($this->component->getName() . $this->getName()); - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportStreaming/HandlesStreaming.php b/vendor/livewire/livewire/src/Features/SupportStreaming/HandlesStreaming.php deleted file mode 100644 index efe15922..00000000 --- a/vendor/livewire/livewire/src/Features/SupportStreaming/HandlesStreaming.php +++ /dev/null @@ -1,14 +0,0 @@ -stream($to, $content, $replace); } -} diff --git a/vendor/livewire/livewire/src/Features/SupportStreaming/SupportStreaming.php b/vendor/livewire/livewire/src/Features/SupportStreaming/SupportStreaming.php deleted file mode 100644 index ce31f987..00000000 --- a/vendor/livewire/livewire/src/Features/SupportStreaming/SupportStreaming.php +++ /dev/null @@ -1,42 +0,0 @@ - $name, 'content' => $content, 'replace' => $replace]); - } - - public static function ensureStreamResponseStarted() - { - if (static::$response) return; - - static::$response = response()->stream(null , 200, [ - 'Cache-Control' => 'no-cache', - 'Content-Type' => 'text/event-stream', - 'X-Accel-Buffering' => 'no', - 'X-Livewire-Stream' => true, - ]); - - static::$response->sendHeaders(); - } - - public static function streamContent($body) - { - echo json_encode(['stream' => true, 'body' => $body, 'endStream' => true]); - - if (ob_get_level() > 0) { - ob_flush(); - } - - flush(); - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportTeleporting/SupportTeleporting.php b/vendor/livewire/livewire/src/Features/SupportTeleporting/SupportTeleporting.php deleted file mode 100644 index 8b7a8de4..00000000 --- a/vendor/livewire/livewire/src/Features/SupportTeleporting/SupportTeleporting.php +++ /dev/null @@ -1,19 +0,0 @@ -directive('teleport', function ($expression) { - return ''; - }); - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportTesting/ComponentState.php b/vendor/livewire/livewire/src/Features/SupportTesting/ComponentState.php deleted file mode 100644 index 6c40b452..00000000 --- a/vendor/livewire/livewire/src/Features/SupportTesting/ComponentState.php +++ /dev/null @@ -1,79 +0,0 @@ -component; - } - - function getSnapshot() - { - return $this->snapshot; - } - - function getSnapshotData() - { - return $this->untupleify($this->snapshot['data']); - } - - function getEffects() - { - return $this->effects; - } - - function getView() - { - return $this->view; - } - - function getResponse() - { - return $this->response; - } - - function untupleify($payload) { - $value = Utils::isSyntheticTuple($payload) ? $payload[0] : $payload; - - if (is_array($value)) { - foreach ($value as $key => $child) { - $value[$key] = $this->untupleify($child); - } - } - - return $value; - } - - function getHtml($stripInitialData = false) - { - $html = $this->html; - - if ($stripInitialData) { - $removeMe = (string) str($html)->betweenFirst( - 'wire:snapshot="', '"' - ); - - $html = str_replace($removeMe, '', $html); - - $removeMe = (string) str($html)->betweenFirst( - 'wire:effects="', '"' - ); - - $html = str_replace($removeMe, '', $html); - } - - return $html; - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportTesting/DuskBrowserMacros.php b/vendor/livewire/livewire/src/Features/SupportTesting/DuskBrowserMacros.php deleted file mode 100644 index a7af721e..00000000 --- a/vendor/livewire/livewire/src/Features/SupportTesting/DuskBrowserMacros.php +++ /dev/null @@ -1,385 +0,0 @@ -resolver->format($selector); - - $actual = $this->resolver->findOrFail($selector)->getAttribute($attribute); - - PHPUnit::assertNull( - $actual, - "Did not see expected attribute [{$attribute}] within element [{$fullSelector}]." - ); - - return $this; - }; - } - - public function assertNotVisible() - { - return function ($selector) { - /** @var \Laravel\Dusk\Browser $this */ - $fullSelector = $this->resolver->format($selector); - - PHPUnit::assertFalse( - $this->resolver->findOrFail($selector)->isDisplayed(), - "Element [{$fullSelector}] is visible." - ); - - return $this; - }; - } - - public function assertNotPresent() - { - return function ($selector) { - /** @var \Laravel\Dusk\Browser $this */ - $fullSelector = $this->resolver->format($selector); - - PHPUnit::assertTrue( - is_null($this->resolver->find($selector)), - "Element [{$fullSelector}] is present." - ); - - return $this; - }; - } - - public function assertHasClass() - { - return function ($selector, $className) { - /** @var \Laravel\Dusk\Browser $this */ - $fullSelector = $this->resolver->format($selector); - - PHPUnit::assertContains( - $className, - explode(' ', $this->attribute($selector, 'class')), - "Element [{$fullSelector}] missing class [{$className}]." - ); - - return $this; - }; - } - - public function assertScript() - { - return function ($js, $expects = true) { - /** @var \Laravel\Dusk\Browser $this */ - PHPUnit::assertEquals($expects, head($this->script( - str($js)->start('return ') - ))); - - return $this; - }; - } - - public function runScript() - { - return function ($js) { - /** @var \Laravel\Dusk\Browser $this */ - $this->script([$js]); - - return $this; - }; - } - - public function scrollTo() - { - return function ($selector) { - $this->browser->scrollTo($selector); - return $this; - }; - } - - public function assertNotInViewPort() - { - return function ($selector) { - /** @var \Laravel\Dusk\Browser $this */ - return $this->assertInViewPort($selector, invert: true); - }; - } - - public function assertInViewPort() - { - return function ($selector, $invert = false) { - /** @var \Laravel\Dusk\Browser $this */ - - $fullSelector = $this->resolver->format($selector); - - $result = $this->script( - 'const rect = document.querySelector(\''.$fullSelector.'\').getBoundingClientRect(); - return ( - rect.top >= 0 && - rect.left >= 0 && - rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && - rect.right <= (window.innerWidth || document.documentElement.clientWidth) - );', - $selector - )[0]; - - PHPUnit::assertEquals($invert ? false : true, $result); - - return $this; - }; - } - - public function assertClassMissing() - { - return function ($selector, $className) { - /** @var \Laravel\Dusk\Browser $this */ - $fullSelector = $this->resolver->format($selector); - - PHPUnit::assertNotContains( - $className, - explode(' ', $this->attribute($selector, 'class')), - "Element [{$fullSelector}] has class [{$className}]." - ); - - return $this; - }; - } - - public function waitForLivewireToLoad() - { - return function () { - /** @var \Laravel\Dusk\Browser $this */ - return $this->waitUsing(6, 25, function () { - return $this->driver->executeScript("return !! window.Livewire.initialRenderIsFinished"); - }); - }; - } - - public function waitForLivewire() - { - return function ($callback = null) { - /** @var \Laravel\Dusk\Browser $this */ - $id = str()->random(); - - $this->script([ - "window.duskIsWaitingForLivewireRequest{$id} = true", - "window.Livewire.hook('request', ({ respond }) => { - window.duskIsWaitingForLivewireRequest{$id} = true - - respond(() => { - queueMicrotask(() => { - delete window.duskIsWaitingForLivewireRequest{$id} - }) - }) - })", - ]); - - if ($callback) { - $callback($this); - - return $this->waitUsing(6, 25, function () use ($id) { - return $this->driver->executeScript("return window.duskIsWaitingForLivewireRequest{$id} === undefined"); - }, 'Livewire request was never triggered'); - } - - // If no callback is passed, make ->waitForLivewire a higher-order method. - return new class($this, $id) { - protected $browser; - protected $id; - - public function __construct($browser, $id) { $this->browser = $browser; $this->id = $id; } - - public function __call($method, $params) - { - return tap($this->browser->{$method}(...$params), function ($browser) { - $browser->waitUsing(6, 25, function () use ($browser) { - return $browser->driver->executeScript("return window.duskIsWaitingForLivewireRequest{$this->id} === undefined"); - }, 'Livewire request was never triggered'); - }); - } - }; - }; - } - - public function waitForNoLivewire() - { - return function ($callback = null) { - /** @var \Laravel\Dusk\Browser $this */ - $id = str()->random(); - - $this->script([ - "window.duskIsWaitingForLivewireRequest{$id} = true", - "window.Livewire.hook('request', ({ respond }) => { - window.duskIsWaitingForLivewireRequest{$id} = true - - respond(() => { - queueMicrotask(() => { - delete window.duskIsWaitingForLivewireRequest{$id} - }) - }) - })", - ]); - - if ($callback) { - $callback($this); - - return $this->waitUsing(6, 25, function () use ($id) { - return $this->driver->executeScript("return window.duskIsWaitingForLivewireRequest{$id}"); - }, 'Livewire request was triggered'); - } - - // If no callback is passed, make ->waitForNoLivewire a higher-order method. - return new class($this, $id) { - protected $browser; - protected $id; - - public function __construct($browser, $id) { $this->browser = $browser; $this->id = $id; } - - public function __call($method, $params) - { - return tap($this->browser->{$method}(...$params), function ($browser) { - $browser->waitUsing(6, 25, function () use ($browser) { - return $browser->driver->executeScript("return window.duskIsWaitingForLivewireRequest{$this->id}"); - }, 'Livewire request was triggered'); - }); - } - }; - }; - } - - public function waitForNavigate() - { - return function ($callback = null) { - /** @var \Laravel\Dusk\Browser $this */ - $id = str()->random(); - - $this->script([ - "window.duskIsWaitingForLivewireNavigate{$id} = true", - "window.handler{$id} = () => { - window.duskIsWaitingForLivewireNavigate{$id} = true - - document.removeEventListener('livewire:navigated', window.handler{$id}) - - queueMicrotask(() => { - delete window.duskIsWaitingForLivewireNavigate{$id} - }) - }", - "document.addEventListener('livewire:navigated', window.handler{$id})", - ]); - - if ($callback) { - $callback($this); - - return $this->waitUsing(6, 25, function () use ($id) { - return $this->driver->executeScript("return window.duskIsWaitingForLivewireNavigate{$id} === undefined"); - }, 'Livewire navigate was never triggered'); - } - - // If no callback is passed, make ->waitForNavigate a higher-order method. - return new class($this, $id) { - protected $browser; - protected $id; - public function __construct($browser, $id) { $this->browser = $browser; $this->id = $id; } - - public function __call($method, $params) - { - return tap($this->browser->{$method}(...$params), function ($browser) { - $browser->waitUsing(6, 25, function () use ($browser) { - return $browser->driver->executeScript("return window.duskIsWaitingForLivewireNavigate{$this->id} === undefined"); - }, 'Livewire navigate was never triggered'); - }); - } - }; - }; - } - - public function online() - { - return function () { - /** @var \Laravel\Dusk\Browser $this */ - return tap($this)->script("window.dispatchEvent(new Event('online'))"); - }; - } - - public function offline() - { - return function () { - /** @var \Laravel\Dusk\Browser $this */ - return tap($this)->script("window.dispatchEvent(new Event('offline'))"); - }; - } - - public function selectMultiple() - { - return function ($field, $values = []) { - $element = $this->resolver->resolveForSelection($field); - - $options = $element->findElements(WebDriverBy::tagName('option')); - - if (empty($values)) { - $maxSelectValues = sizeof($options) - 1; - $minSelectValues = rand(0, $maxSelectValues); - foreach (range($minSelectValues, $maxSelectValues) as $optValue) { - $options[$optValue]->click(); - } - } else { - foreach ($options as $option) { - $optValue = (string)$option->getAttribute('value'); - if (in_array($optValue, $values)) { - $option->click(); - } - } - } - - return $this; - }; - } - - public function assertConsoleLogHasWarning() - { - return function($expectedMessage){ - $logs = $this->driver->manage()->getLog('browser'); - - $containsError = false; - - foreach ($logs as $log) { - if (! isset($log['message']) || ! isset($log['level']) || $log['level'] !== 'WARNING') continue; - - - if(str($log['message'])->contains($expectedMessage)) { - $containsError = true; - } - } - - PHPUnit::assertTrue($containsError, "Console log error message \"{$expectedMessage}\" not found"); - - return $this; - }; - } - - public function assertConsoleLogMissingWarning() - { - return function($expectedMessage){ - $logs = $this->driver->manage()->getLog('browser'); - - $containsError = false; - - foreach ($logs as $log) { - if (! isset($log['message']) || ! isset($log['level']) || $log['level'] !== 'WARNING') continue; - - - if(str($log['message'])->contains($expectedMessage)) { - $containsError = true; - } - } - - PHPUnit::assertFalse($containsError, "Console log error message \"{$expectedMessage}\" was found"); - - return $this; - }; - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportTesting/DuskTestable.php b/vendor/livewire/livewire/src/Features/SupportTesting/DuskTestable.php deleted file mode 100644 index 8aeae2b1..00000000 --- a/vendor/livewire/livewire/src/Features/SupportTesting/DuskTestable.php +++ /dev/null @@ -1,182 +0,0 @@ -middleware('web'); - - on('browser.testCase.setUp', function ($testCase) { - static::$currentTestCase = $testCase; - static::$isTestProcess = true; - - $tweakApplication = $testCase::tweakApplicationHook(); - - invade($testCase)->beforeServingApplication(function ($app, $config) use ($tweakApplication) { - $config->set('app.debug', true); - - if (is_callable($tweakApplication)) $tweakApplication(); - - static::loadTestComponents(); - }); - }); - - on('browser.testCase.tearDown', function () { - static::wipeRuntimeComponentRegistration(); - - static::$browser && static::$browser->quit(); - - static::$currentTestCase = null; - }); - - if (isset($_SERVER['CI']) && class_exists(\Orchestra\Testbench\Dusk\Options::class)) { - \Orchestra\Testbench\Dusk\Options::withoutUI(); - } - - \Laravel\Dusk\Browser::mixin(new DuskBrowserMacros); - } - - /** - * @return Browser - */ - static function create($components, $params = [], $queryParams = []) - { - if (static::$shortCircuitCreateCall) { - throw new class ($components) extends \Exception { - public $components; - public $isDuskShortcircuit = true; - function __construct($components) { - $this->components = $components; - } - }; - } - - $components = (array) $components; - - $firstComponent = array_shift($components); - - $id = 'a'.str()->random(10); - - $components = [$id => $firstComponent, ...$components]; - - [$class, $method] = static::findTestClassAndMethodThatCalledThis(); - - static::registerComponentsForNextTest([$id, $class, $method]); - - $testCase = invade(static::$currentTestCase); - - static::$browser = $testCase->newBrowser($testCase->createWebDriver()); - - return static::$browser->visit('/livewire-dusk/'.$id.'?'.Arr::query($queryParams)); - } - - static function actingAs(\Illuminate\Contracts\Auth\Authenticatable $user, $driver = null) - { - // - } - - static function findTestClassAndMethodThatCalledThis() - { - $traces = debug_backtrace(options: DEBUG_BACKTRACE_IGNORE_ARGS, limit: 10); - - foreach ($traces as $trace) { - if (is_subclass_of($trace['class'], TestCase::class)) { - return [$trace['class'], $trace['function']]; - } - } - - throw new \Exception; - } - - static function loadTestComponents() - { - if (static::$isTestProcess) return; - - $tmp = __DIR__ . '/_runtime_components.json'; - - if (file_exists($tmp)) { - // We can't just "require" this file because of race conditions... - [$id, $testClass, $method] = json_decode(file_get_contents($tmp), associative: true); - - if (! method_exists($testClass, $method)) return; - - static::$shortCircuitCreateCall = true; - - $components = null; - - try { - if (\Orchestra\Testbench\phpunit_version_compare('10.0', '>=')) { - (new $testClass($method))->$method(); - } else { - (new $testClass())->$method(); - } - } catch (\Exception $e) { - if (! $e->isDuskShortcircuit) throw $e; - $components = $e->components; - } - - $components = is_array($components) ? $components : [$components]; - - $firstComponent = array_shift($components); - - $components = [$id => $firstComponent, ...$components]; - - static::$shortCircuitCreateCall = false; - - foreach ($components as $name => $class) { - if (is_object($class)) $class = $class::class; - - if (is_numeric($name)) { - app('livewire')->component($class); - } else { - app('livewire')->component($name, $class); - } - } - } - } - - static function registerComponentsForNextTest($components) - { - $tmp = __DIR__ . '/_runtime_components.json'; - - file_put_contents($tmp, json_encode($components, JSON_PRETTY_PRINT)); - } - - static function wipeRuntimeComponentRegistration() - { - $tmp = __DIR__ . '/_runtime_components.json'; - - file_exists($tmp) && unlink($tmp); - } - - function breakIntoATinkerShell($browsers, $e) - { - $sh = new \Psy\Shell(); - - $sh->add(new \Laravel\Dusk\Console\DuskCommand($this, $e)); - - $sh->setScopeVariables([ - 'browsers' => $browsers, - ]); - - $sh->addInput('dusk'); - - $sh->setBoundObject($this); - - $sh->run(); - - return $sh->getScopeVariables(false); - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportTesting/InitialRender.php b/vendor/livewire/livewire/src/Features/SupportTesting/InitialRender.php deleted file mode 100644 index 5453f304..00000000 --- a/vendor/livewire/livewire/src/Features/SupportTesting/InitialRender.php +++ /dev/null @@ -1,72 +0,0 @@ -makeInitialRequest($name, $params, $fromQueryString, $cookies, $headers); - } - - function makeInitialRequest($name, $params, $fromQueryString = [], $cookies = [], $headers = []) - { - $uri = '/livewire-unit-test-endpoint/'.str()->random(20); - - $this->registerRouteBeforeExistingRoutes($uri, function () use ($name, $params) { - return \Illuminate\Support\Facades\Blade::render('@livewire($name, $params)', [ - 'name' => $name, - 'params' => $params, - ]); - }); - - [$response, $componentInstance, $componentView] = $this->extractComponentAndBladeView(function () use ($uri, $fromQueryString, $cookies, $headers) { - return $this->requestBroker->temporarilyDisableExceptionHandlingAndMiddleware(function ($requestBroker) use ($uri, $fromQueryString, $cookies, $headers) { - return $requestBroker->addHeaders($headers)->call('GET', $uri, $fromQueryString, $cookies); - }); - }); - - app('livewire')->flushState(); - - $html = $response->getContent(); - - // Set "original" to Blade view for assertions like "assertViewIs()"... - $response->original = $componentView; - - $snapshot = Utils::extractAttributeDataFromHtml($html, 'wire:snapshot'); - $effects = Utils::extractAttributeDataFromHtml($html, 'wire:effects'); - - return new ComponentState($componentInstance, $response, $componentView, $html, $snapshot, $effects); - } - - private function registerRouteBeforeExistingRoutes($path, $closure) - { - // To prevent this route from overriding wildcard routes registered within the application, - // We have to make sure that this route is registered before other existing routes. - $livewireTestingRoute = new \Illuminate\Routing\Route(['GET', 'HEAD'], $path, $closure); - - $existingRoutes = app('router')->getRoutes(); - - // Make an empty collection. - $runningCollection = new \Illuminate\Routing\RouteCollection; - - // Add this testing route as the first one. - $runningCollection->add($livewireTestingRoute); - - // Now add the existing routes after it. - foreach ($existingRoutes as $route) { - $runningCollection->add($route); - } - - // Now set this route collection as THE route collection for the app. - app('router')->setRoutes($runningCollection); - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportTesting/MakesAssertions.php b/vendor/livewire/livewire/src/Features/SupportTesting/MakesAssertions.php deleted file mode 100644 index c2d96ca0..00000000 --- a/vendor/livewire/livewire/src/Features/SupportTesting/MakesAssertions.php +++ /dev/null @@ -1,153 +0,0 @@ -html($stripInitialData) - ); - } - - return $this; - } - - function assertDontSee($values, $escape = true, $stripInitialData = true) - { - foreach (Arr::wrap($values) as $value) { - PHPUnit::assertStringNotContainsString( - $escape ? e($value): $value, - $this->html($stripInitialData) - ); - } - - return $this; - } - - function assertSeeHtml($values) - { - foreach (Arr::wrap($values) as $value) { - PHPUnit::assertStringContainsString( - $value, - $this->html() - ); - } - - return $this; - } - - function assertSeeHtmlInOrder($values) - { - PHPUnit::assertThat( - $values, - new SeeInOrder($this->html()) - ); - - return $this; - } - - function assertDontSeeHtml($values) - { - foreach (Arr::wrap($values) as $value) { - PHPUnit::assertStringNotContainsString( - $value, - $this->html() - ); - } - - return $this; - } - - function assertSeeText($value, $escape = true) - { - $value = Arr::wrap($value); - - $values = $escape ? array_map('e', ($value)) : $value; - - $content = $this->html(); - - tap(strip_tags($content), function ($content) use ($values) { - foreach ($values as $value) { - PHPUnit::assertStringContainsString((string) $value, $content); - } - }); - - return $this; - } - - function assertSet($name, $value, $strict = false) - { - $actual = $this->get($name); - - if (! is_string($value) && is_callable($value)) { - PHPUnit::assertTrue($value($actual)); - } else { - $strict ? PHPUnit::assertSame($value, $actual) : PHPUnit::assertEquals($value, $actual); - } - - return $this; - } - - function assertNotSet($name, $value, $strict = false) - { - $actual = $this->get($name); - - $strict ? PHPUnit::assertNotSame($value, $actual) : PHPUnit::assertNotEquals($value, $actual); - - return $this; - } - - function assertCount($name, $value) - { - PHPUnit::assertCount($value, $this->get($name)); - - return $this; - } - - function assertSnapshotSet($name, $value, $strict = false) - { - $data = $this->lastState->getSnapshotData(); - - if (is_callable($value)) { - PHPUnit::assertTrue($value(data_get($data, $name))); - } else { - $strict ? PHPUnit::assertSame($value, data_get($data, $name)) : PHPUnit::assertEquals($value, data_get($data, $name)); - } - - return $this; - } - - function assertSnapshotNotSet($name, $value, $strict = false) - { - $data = $this->lastState->getSnapshotData(); - - if (is_callable($value)) { - PHPUnit::assertFalse($value(data_get($data, $name))); - } else { - $strict ? PHPUnit::assertNotSame($value, data_get($data, $name)) : PHPUnit::assertNotEquals($value, data_get($data, $name)); - } - - return $this; - } - - public function assertReturned($value) - { - $data = data_get($this->lastState->getEffects(), 'returns.0'); - - if (is_callable($value)) { - PHPUnit::assertTrue($value($data)); - } else { - PHPUnit::assertEquals($value, $data); - } - - return $this; - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportTesting/Render.php b/vendor/livewire/livewire/src/Features/SupportTesting/Render.php deleted file mode 100644 index 299085c4..00000000 --- a/vendor/livewire/livewire/src/Features/SupportTesting/Render.php +++ /dev/null @@ -1,30 +0,0 @@ -app = $app; - } - - function temporarilyDisableExceptionHandlingAndMiddleware($callback) - { - $cachedHandler = app(ExceptionHandler::class); - - $cachedShouldSkipMiddleware = $this->app->shouldSkipMiddleware(); - - $this->withoutExceptionHandling([HttpException::class, AuthorizationException::class])->withoutMiddleware(); - - $result = $callback($this); - - $this->app->instance(ExceptionHandler::class, $cachedHandler); - - if (! $cachedShouldSkipMiddleware) { - unset($this->app['middleware.disable']); - } - - return $result; - } - - function withoutHandling($except = []) - { - return $this->withoutExceptionHandling($except); - } - - function addHeaders(array $headers) - { - $this->serverVariables = $this->transformHeadersToServerVars($headers); - - return $this; - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportTesting/ShowDuskComponent.php b/vendor/livewire/livewire/src/Features/SupportTesting/ShowDuskComponent.php deleted file mode 100644 index e5c074ac..00000000 --- a/vendor/livewire/livewire/src/Features/SupportTesting/ShowDuskComponent.php +++ /dev/null @@ -1,13 +0,0 @@ -call(app('livewire')->new($class)); - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportTesting/SubsequentRender.php b/vendor/livewire/livewire/src/Features/SupportTesting/SubsequentRender.php deleted file mode 100644 index ca4542fe..00000000 --- a/vendor/livewire/livewire/src/Features/SupportTesting/SubsequentRender.php +++ /dev/null @@ -1,77 +0,0 @@ -makeSubsequentRequest($calls, $updates); - } - - function makeSubsequentRequest($calls = [], $updates = []) { - $uri = app('livewire')->getUpdateUri(); - - $encodedSnapshot = json_encode($this->lastState->getSnapshot()); - - $payload = [ - 'components' => [ - [ - 'snapshot' => $encodedSnapshot, - 'calls' => $calls, - 'updates' => $updates, - ], - ], - ]; - - [$response, $componentInstance, $componentView] = $this->extractComponentAndBladeView(function () use ($uri, $payload) { - return $this->requestBroker->temporarilyDisableExceptionHandlingAndMiddleware(function ($requestBroker) use ($uri, $payload) { - return $requestBroker->withHeaders(['X-Livewire' => true])->post($uri, $payload); - }); - }); - - app('livewire')->flushState(); - - if (! $response->isOk()) { - return new ComponentState( - $componentInstance, - $response, - null, - '', - [], - [], - ); - } - - $json = $response->json(); - - // Set "original" to Blade view for assertions like "assertViewIs()"... - $response->original = $componentView; - - $componentResponsePayload = $json['components'][0]; - - $snapshot = json_decode($componentResponsePayload['snapshot'], true); - - $effects = $componentResponsePayload['effects']; - - // If no new HTML has been rendered, let's forward the last known HTML... - $html = $effects['html'] ?? $this->lastState->getHtml(stripInitialData: true); - $view = $componentView ?? $this->lastState->getView(); - - return new ComponentState( - $componentInstance, - $response, - $view, - $html, - $snapshot, - $effects, - ); - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportTesting/SupportTesting.php b/vendor/livewire/livewire/src/Features/SupportTesting/SupportTesting.php deleted file mode 100644 index ed1c5900..00000000 --- a/vendor/livewire/livewire/src/Features/SupportTesting/SupportTesting.php +++ /dev/null @@ -1,111 +0,0 @@ -environment('testing')) return; - - if (class_exists('Laravel\Dusk\Browser')) { - DuskTestable::provide(); - } - - static::registerTestingMacros(); - } - - function dehydrate($context) - { - $target = $this->component; - - $errors = $target->getErrorBag(); - - if (! $errors->isEmpty()) { - $this->storeSet('testing.errors', $errors); - } - } - - function hydrate() - { - $this->storeSet('testing.validator', null); - } - - function exception($e, $stopPropagation) { - if (! $e instanceof ValidationException) return; - - $this->storeSet('testing.validator', $e->validator); - } - - protected static function registerTestingMacros() - { - // Usage: $this->assertSeeLivewire('counter'); - \Illuminate\Testing\TestResponse::macro('assertSeeLivewire', function ($component) { - if (is_subclass_of($component, Component::class)) { - $component = app(ComponentRegistry::class)->getName($component); - } - $escapedComponentName = trim(htmlspecialchars(json_encode(['name' => $component])), '{}'); - - \PHPUnit\Framework\Assert::assertStringContainsString( - $escapedComponentName, - $this->getContent(), - 'Cannot find Livewire component ['.$component.'] rendered on page.' - ); - - return $this; - }); - - // Usage: $this->assertDontSeeLivewire('counter'); - \Illuminate\Testing\TestResponse::macro('assertDontSeeLivewire', function ($component) { - if (is_subclass_of($component, Component::class)) { - $component = app(ComponentRegistry::class)->getName($component); - } - $escapedComponentName = trim(htmlspecialchars(json_encode(['name' => $component])), '{}'); - - \PHPUnit\Framework\Assert::assertStringNotContainsString( - $escapedComponentName, - $this->getContent(), - 'Found Livewire component ['.$component.'] rendered on page.' - ); - - return $this; - }); - - if (class_exists(\Illuminate\Testing\TestView::class)) { - \Illuminate\Testing\TestView::macro('assertSeeLivewire', function ($component) { - if (is_subclass_of($component, Component::class)) { - $component = app(ComponentRegistry::class)->getName($component); - } - $escapedComponentName = trim(htmlspecialchars(json_encode(['name' => $component])), '{}'); - - \PHPUnit\Framework\Assert::assertStringContainsString( - $escapedComponentName, - $this->rendered, - 'Cannot find Livewire component ['.$component.'] rendered on page.' - ); - - return $this; - }); - - \Illuminate\Testing\TestView::macro('assertDontSeeLivewire', function ($component) { - if (is_subclass_of($component, Component::class)) { - $component = app(ComponentRegistry::class)->getName($component); - } - $escapedComponentName = trim(htmlspecialchars(json_encode(['name' => $component])), '{}'); - - \PHPUnit\Framework\Assert::assertStringNotContainsString( - $escapedComponentName, - $this->rendered, - 'Found Livewire component ['.$component.'] rendered on page.' - ); - - return $this; - }); - } - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportTesting/Testable.php b/vendor/livewire/livewire/src/Features/SupportTesting/Testable.php deleted file mode 100644 index 4db7f3c7..00000000 --- a/vendor/livewire/livewire/src/Features/SupportTesting/Testable.php +++ /dev/null @@ -1,283 +0,0 @@ - $value) { - if (is_numeric($key)) { - app('livewire')->isDiscoverable($name) || app('livewire')->component($value); - } else { - app('livewire')->component($key, $value); - } - } - } elseif (is_object($name)) { - $anonymousClassComponent = $name; - - $name = str()->random(10); - - app('livewire')->component($name, $anonymousClassComponent); - } else { - app('livewire')->isDiscoverable($name) || app('livewire')->component($name); - } - - return $name; - } - - static function actingAs(\Illuminate\Contracts\Auth\Authenticatable $user, $driver = null) - { - if (isset($user->wasRecentlyCreated) && $user->wasRecentlyCreated) { - $user->wasRecentlyCreated = false; - } - - auth()->guard($driver)->setUser($user); - - auth()->shouldUse($driver); - } - - function id() { - return $this->lastState->getComponent()->getId(); - } - - function get($key) - { - return data_get($this->lastState->getComponent(), $key); - } - - function html($stripInitialData = false) - { - return $this->lastState->getHtml($stripInitialData); - } - - function updateProperty($name, $value = null) - { - return $this->set($name, $value); - } - - function fill($values) - { - foreach ($values as $name => $value) { - $this->set($name, $value); - } - - return $this; - } - - function toggle($name) - { - return $this->set($name, ! $this->get($name)); - } - - function set($name, $value = null) - { - if (is_array($name)) { - foreach ($name as $key => $value) { - $this->setProperty($key, $value); - } - } else { - $this->setProperty($name, $value); - } - - return $this; - } - - function setProperty($name, $value) - { - if ($value instanceof \Illuminate\Http\UploadedFile) { - return $this->upload($name, [$value]); - } elseif (is_array($value) && isset($value[0]) && $value[0] instanceof \Illuminate\Http\UploadedFile) { - return $this->upload($name, $value, $isMultiple = true); - } - - return $this->update(updates: [$name => $value]); - } - - function runAction($method, ...$params) - { - return $this->call($method, ...$params); - } - - function call($method, ...$params) - { - if ($method === '$refresh') { - return $this->commit(); - } - - if ($method === '$set') { - return $this->set(...$params); - } - - return $this->update(calls: [ - [ - 'method' => $method, - 'params' => $params, - 'path' => '', - ] - ]); - } - - function commit() - { - return $this->update(); - } - - function update($calls = [], $updates = []) - { - $newState = SubsequentRender::make( - $this->requestBroker, - $this->lastState, - $calls, - $updates, - ); - - $this->lastState = $newState; - - return $this; - } - - /** @todo Move me outta here and into the file upload folder somehow... */ - function upload($name, $files, $isMultiple = false) - { - // This method simulates the calls Livewire's JavaScript - // normally makes for file uploads. - $this->call( - '_startUpload', - $name, - collect($files)->map(function ($file) { - return [ - 'name' => $file->name, - 'size' => $file->getSize(), - 'type' => $file->getMimeType(), - ]; - })->toArray(), - $isMultiple, - ); - - // This is where either the pre-signed S3 url or the regular Livewire signed - // upload url would do its thing and return a hashed version of the uploaded - // file in a tmp directory. - $storage = \Livewire\Features\SupportFileUploads\FileUploadConfiguration::storage(); - try { - $fileHashes = (new \Livewire\Features\SupportFileUploads\FileUploadController)->validateAndStore($files, \Livewire\Features\SupportFileUploads\FileUploadConfiguration::disk()); - } catch (\Illuminate\Validation\ValidationException $e) { - $this->call('_uploadErrored', $name, json_encode(['errors' => $e->errors()]), $isMultiple); - - return $this; - } - - // We are going to encode the original file size and hashName in the filename - // so when we create a new TemporaryUploadedFile instance we can fake the - // same file size and hashName set for the original file upload. - $newFileHashes = collect($files)->zip($fileHashes)->mapSpread(function ($file, $fileHash) { - return (string) str($fileHash)->replaceFirst('.', "-hash={$file->hashName()}-size={$file->getSize()}."); - })->toArray(); - - collect($fileHashes)->zip($newFileHashes)->mapSpread(function ($fileHash, $newFileHash) use ($storage) { - $storage->move('/'.\Livewire\Features\SupportFileUploads\FileUploadConfiguration::path($fileHash), '/'.\Livewire\Features\SupportFileUploads\FileUploadConfiguration::path($newFileHash)); - }); - - // Now we finish the upload with a final call to the Livewire component - // with the temporarily uploaded file path. - $this->call('_finishUpload', $name, $newFileHashes, $isMultiple); - - return $this; - } - - function viewData($key) - { - return $this->lastState->getView()->getData()[$key]; - } - - function getData() - { - return $this->lastState->getSnapshotData(); - } - - function instance() - { - return $this->lastState->getComponent(); - } - - function dump() - { - dump($this->lastState->getHtml()); - - return $this; - } - - function dd() - { - dd($this->lastState->getHtml()); - } - - function tap($callback) - { - $callback($this); - - return $this; - } - - function __get($property) - { - if ($property === 'effects') return $this->lastState->getEffects(); - if ($property === 'snapshot') return $this->lastState->getSnapshot(); - if ($property === 'target') return $this->lastState->getComponent(); - - return $this->instance()->$property; - } - - function __call($method, $params) - { - if (static::hasMacro($method)) { - return $this->macroCall($method, $params); - } - - $this->lastState->getResponse()->{$method}(...$params); - - return $this; - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportValidation/BaseRule.php b/vendor/livewire/livewire/src/Features/SupportValidation/BaseRule.php deleted file mode 100644 index f69c24a0..00000000 --- a/vendor/livewire/livewire/src/Features/SupportValidation/BaseRule.php +++ /dev/null @@ -1,11 +0,0 @@ -subTarget ?: $this->component; - $name = $this->subTarget ? $this->getSubName() : $this->getName(); - - $rules = []; - - if (is_null($this->rule)) { - // Allow "Rule" to be used without a given validation rule. It's purpose is to instead - // trigger validation on property updates... - } elseif (is_array($this->rule) && count($this->rule) > 0 && ! is_numeric(array_keys($this->rule)[0])) { - // Support setting rules by key-value for this and other properties: - // For example, #[Validate(['foo' => 'required', 'foo.*' => 'required'])] - $rules = $this->rule; - } else { - $rules[$this->getSubName()] = $this->rule; - } - - if ($this->attribute) { - if (is_array($this->attribute)) { - $target = $this->subTarget ?? $this->component; - $target->addValidationAttributesFromOutside($this->attribute); - } else { - $target->addValidationAttributesFromOutside([$name => $this->attribute]); - } - } - - if ($this->as) { - if (is_array($this->as)) { - $as = $this->translate - ? array_map(fn ($i) => trans($i), $this->as) - : $this->as; - - $target->addValidationAttributesFromOutside($as); - } else { - $target->addValidationAttributesFromOutside([$name => $this->translate ? trans($this->as) : $this->as]); - } - } - - if ($this->message) { - if (is_array($this->message)) { - $messages = $this->translate - ? array_map(fn ($i) => trans($i), $this->message) - : $this->message; - - $target->addMessagesFromOutside($messages); - } else { - // If a single message was provided, apply it to the first given rule. - // There should have only been one rule provided in this case anyways... - $rule = head(array_values($rules)); - - // In the case of "min:5" or something, we only want "min"... - $rule = (string) str($rule)->before(':'); - - $target->addMessagesFromOutside([$name.'.'.$rule => $this->translate ? trans($this->message) : $this->message]); - } - } - - $target->addRulesFromOutside($rules); - } - - function update($fullPath, $newValue) - { - if ($this->onUpdate === false) return; - - return function () { - // If this attribute is added to a "form object", we want to run - // the validateOnly method on the form object, not the base component... - $target = $this->subTarget ?: $this->component; - $name = $this->subTarget ? $this->getSubName() : $this->getName(); - - // Here we have to run the form object validator from the context - // of the base "wrapped" component so that validation works... - wrap($this->component)->tap(function () use ($target, $name) { - $target->validateOnly($name); - }); - }; - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportValidation/HandlesValidation.php b/vendor/livewire/livewire/src/Features/SupportValidation/HandlesValidation.php deleted file mode 100644 index cd4137dd..00000000 --- a/vendor/livewire/livewire/src/Features/SupportValidation/HandlesValidation.php +++ /dev/null @@ -1,518 +0,0 @@ -rulesFromOutside[] = $rules; - } - - public function addMessagesFromOutside($messages) - { - $this->messagesFromOutside[] = $messages; - } - - public function addValidationAttributesFromOutside($validationAttributes) - { - $this->validationAttributesFromOutside[] = $validationAttributes; - } - - public function getErrorBag() - { - if (! store($this)->has('errorBag')) { - $previouslySharedErrors = app('view')->getShared()['errors'] ?? new ViewErrorBag; - $this->setErrorBag($previouslySharedErrors->getMessages()); - } - - return store($this)->get('errorBag'); - } - - public function addError($name, $message) - { - return $this->getErrorBag()->add($name, $message); - } - - public function setErrorBag($bag) - { - return store($this)->set('errorBag', $bag instanceof MessageBag - ? $bag - : new MessageBag($bag) - ); - } - - public function resetErrorBag($field = null) - { - $fields = (array) $field; - - if (empty($fields)) { - $errorBag = new MessageBag; - - $this->setErrorBag($errorBag); - - return $errorBag; - } - - $this->setErrorBag( - $this->errorBagExcept($fields) - ); - } - - public function clearValidation($field = null) - { - $this->resetErrorBag($field); - } - - public function resetValidation($field = null) - { - $this->resetErrorBag($field); - } - - public function errorBagExcept($field) - { - $fields = (array) $field; - - return new MessageBag( - collect($this->getErrorBag()) - ->reject(function ($messages, $messageKey) use ($fields) { - return collect($fields)->some(function ($field) use ($messageKey) { - return str($messageKey)->is($field); - }); - }) - ->toArray() - ); - } - - public function getRules() - { - $rulesFromComponent = []; - - if (method_exists($this, 'rules')) $rulesFromComponent = $this->rules(); - else if (property_exists($this, 'rules')) $rulesFromComponent = $this->rules; - - $rulesFromOutside = array_merge_recursive( - ...array_map( - fn($i) => value($i), - $this->rulesFromOutside - ) - ); - - return array_merge($rulesFromComponent, $rulesFromOutside); - } - - protected function getMessages() - { - $messages = []; - - if (method_exists($this, 'messages')) $messages = $this->messages(); - elseif (property_exists($this, 'messages')) $messages = $this->messages; - - $messagesFromOutside = array_merge( - ...array_map( - fn($i) => value($i), - $this->messagesFromOutside - ) - ); - - return array_merge($messages, $messagesFromOutside); - } - - protected function getValidationAttributes() - { - $validationAttributes = []; - - if (method_exists($this, 'validationAttributes')) $validationAttributes = $this->validationAttributes(); - elseif (property_exists($this, 'validationAttributes')) $validationAttributes = $this->validationAttributes; - - $validationAttributesFromOutside = array_merge( - ...array_map( - fn($i) => value($i), - $this->validationAttributesFromOutside - ) - ); - - return array_merge($validationAttributes, $validationAttributesFromOutside); - } - - protected function getValidationCustomValues() - { - if (method_exists($this, 'validationCustomValues')) return $this->validationCustomValues(); - if (property_exists($this, 'validationCustomValues')) return $this->validationCustomValues; - - return []; - } - - public function rulesForModel($name) - { - if (empty($this->getRules())) return collect(); - - return collect($this->getRules()) - ->filter(function ($value, $key) use ($name) { - return Utils::beforeFirstDot($key) === $name; - }); - } - - public function hasRuleFor($dotNotatedProperty) - { - $propertyWithStarsInsteadOfNumbers = $this->ruleWithNumbersReplacedByStars($dotNotatedProperty); - - // If property has numeric indexes in it, - if ($dotNotatedProperty !== $propertyWithStarsInsteadOfNumbers) { - return collect($this->getRules())->keys()->contains($propertyWithStarsInsteadOfNumbers); - } - - return collect($this->getRules()) - ->keys() - ->map(function ($key) { - return (string) str($key)->before('.*'); - })->contains($dotNotatedProperty); - } - - public function ruleWithNumbersReplacedByStars($dotNotatedProperty) - { - // Convert foo.0.bar.1 -> foo.*.bar.* - return (string) str($dotNotatedProperty) - // Replace all numeric indexes with an array wildcard: (.0., .10., .007.) => .*. - // In order to match overlapping numerical indexes (foo.1.2.3.4.name), - // We need to use a positive look-behind, that's technically all the magic here. - // For better understanding, see: https://regexr.com/5d1n3 - ->replaceMatches('/(?<=(\.))\d+\./', '*.') - // Replace all numeric indexes at the end of the name with an array wildcard - // (Same as the previous regex, but ran only at the end of the string) - // For better undestanding, see: https://regexr.com/5d1n6 - ->replaceMatches('/\.\d+$/', '.*'); - } - - public function missingRuleFor($dotNotatedProperty) - { - return ! $this->hasRuleFor($dotNotatedProperty); - } - - public function withValidator($callback) - { - $this->withValidatorCallback = $callback; - - return $this; - } - - protected function checkRuleMatchesProperty($rules, $data) - { - collect($rules) - ->keys() - ->each(function($ruleKey) use ($data) { - throw_unless( - array_key_exists(Utils::beforeFirstDot($ruleKey), $data), - new \Exception('No property found for validation: ['.$ruleKey.']') - ); - }); - } - - public function validate($rules = null, $messages = [], $attributes = []) - { - $isUsingGlobalRules = is_null($rules); - - [$rules, $messages, $attributes] = $this->providedOrGlobalRulesMessagesAndAttributes($rules, $messages, $attributes); - - $data = $this->prepareForValidation( - $this->getDataForValidation($rules) - ); - - $this->checkRuleMatchesProperty($rules, $data); - - $ruleKeysToShorten = $this->getModelAttributeRuleKeysToShorten($data, $rules); - - $data = $this->unwrapDataForValidation($data); - - $validator = Validator::make($data, $rules, $messages, $attributes); - - if ($this->withValidatorCallback) { - call_user_func($this->withValidatorCallback, $validator); - - $this->withValidatorCallback = null; - } - - $this->shortenModelAttributesInsideValidator($ruleKeysToShorten, $validator); - - $customValues = $this->getValidationCustomValues(); - - if (! empty($customValues)) { - $validator->addCustomValues($customValues); - } - - if ($this->isRootComponent() && $isUsingGlobalRules) { - $validatedData = $this->withFormObjectValidators($validator, fn () => $validator->validate(), fn ($form) => $form->validate()); - } else { - $validatedData = $validator->validate(); - } - - $this->resetErrorBag(); - - return $validatedData; - } - - protected function isRootComponent() - { - // Because this trait is used for form objects as well... - return $this instanceof \Livewire\Component; - } - - protected function withFormObjectValidators($validator, $validateSelf, $validateForm) - { - $cumulativeErrors = new MessageBag; - $cumulativeData = []; - $formExceptions = []; - - // First, run sub-validators... - foreach ($this->getFormObjects() as $form) { - try { - // Only run sub-validator if the sub-validator has rules... - if (filled($form->getRules())) { - $cumulativeData = array_merge($cumulativeData, $validateForm($form)); - } - } catch (ValidationException $e) { - $cumulativeErrors->merge($e->validator->errors()); - - $formExceptions[] = $e; - } - } - - // Now run main validator... - try { - $cumulativeData = array_merge($cumulativeData, $validateSelf()); - } catch (ValidationException $e) { - // If the main validator has errors, merge them with subs and rethrow... - $e->validator->errors()->merge($cumulativeErrors); - - throw $e; - } - - // If main validation passed, go through other sub-validation exceptions - // and throw the first one with the cumulative messages... - foreach ($formExceptions as $e) { - $e->validator->errors()->merge($cumulativeErrors); - - throw $e; - } - - // All validation has passed, we can return the data... - return $cumulativeData; - } - - public function validateOnly($field, $rules = null, $messages = [], $attributes = [], $dataOverrides = []) - { - $property = (string) str($field)->before('.'); - - // If validating a field in a form object, defer validation to that form object... - if ( - $this->isRootComponent() - && ($form = $this->all()[$property] ?? false) instanceof Form - ) { - $stripPrefix = (string) str($field)->after('.'); - return $form->validateOnly($stripPrefix, $rules, $messages, $attributes, $dataOverrides); - } - - $isUsingGlobalRules = is_null($rules); - - [$rules, $messages, $attributes] = $this->providedOrGlobalRulesMessagesAndAttributes($rules, $messages, $attributes); - - // Loop through rules and swap any wildcard '*' with keys from field, then filter down to only - // rules that match the field, but return the rules without wildcard characters replaced, - // so that custom attributes and messages still work as they need wildcards to work. - $rulesForField = collect($rules) - ->filter(function($value, $rule) use ($field) { - if(! str($field)->is($rule)) { - return false; - } - - $fieldArray = str($field)->explode('.'); - $ruleArray = str($rule)->explode('.'); - - for($i = 0; $i < count($fieldArray); $i++) { - if(isset($ruleArray[$i]) && $ruleArray[$i] === '*') { - $ruleArray[$i] = $fieldArray[$i]; - } - } - - $rule = $ruleArray->join('.'); - - return $field === $rule; - }); - - $ruleForField = $rulesForField->keys()->first(); - - $rulesForField = $rulesForField->toArray(); - - $ruleKeysForField = array_keys($rulesForField); - - $data = array_merge($this->getDataForValidation($rules), $dataOverrides); - - $data = $this->prepareForValidation($data); - - $this->checkRuleMatchesProperty($rules, $data); - - $ruleKeysToShorten = $this->getModelAttributeRuleKeysToShorten($data, $rules); - - $data = $this->unwrapDataForValidation($data); - - // If a matching rule is found, then filter collections down to keys specified in the field, - // while leaving all other data intact. If a key isn't specified and instead there is a - // wildcard '*' then leave that whole collection intact. This ensures that any rules - // that depend on other fields/ properties still work. - if ($ruleForField) { - $ruleArray = str($ruleForField)->explode('.'); - $fieldArray = str($field)->explode('.'); - - $data = $this->filterCollectionDataDownToSpecificKeys($data, $ruleArray, $fieldArray); - } - - $validator = Validator::make($data, $rulesForField, $messages, $attributes); - - if ($this->withValidatorCallback) { - call_user_func($this->withValidatorCallback, $validator); - - $this->withValidatorCallback = null; - } - - $this->shortenModelAttributesInsideValidator($ruleKeysToShorten, $validator); - - $customValues = $this->getValidationCustomValues(); - if (!empty($customValues)) { - $validator->addCustomValues($customValues); - } - - try { - $result = $validator->validate(); - } catch (ValidationException $e) { - $messages = $e->validator->getMessageBag(); - - invade($e->validator)->messages = $messages->merge( - $this->errorBagExcept($ruleKeysForField) - ); - - throw $e; - } - - $this->resetErrorBag($ruleKeysForField); - - return $result; - } - - protected function filterCollectionDataDownToSpecificKeys($data, $ruleKeys, $fieldKeys) - { - - // Filter data down to specified keys in collections, but leave all other data intact - if (count($ruleKeys)) { - $ruleKey = $ruleKeys->shift(); - $fieldKey = $fieldKeys->shift(); - - if ($fieldKey == '*') { - // If the specified field has a '*', then loop through the collection and keep the whole collection intact. - foreach ($data as $key => $value) { - $data[$key] = $this->filterCollectionDataDownToSpecificKeys($value, $ruleKeys, $fieldKeys); - } - } else { - // Otherwise filter collection down to a specific key - $keyData = data_get($data, $fieldKey, null); - - if ($ruleKey == '*') { - $data = []; - } - - data_set($data, $fieldKey, $this->filterCollectionDataDownToSpecificKeys($keyData, $ruleKeys, $fieldKeys)); - } - } - - return $data; - } - - protected function getModelAttributeRuleKeysToShorten($data, $rules) - { - // If a model ($foo) is a property, and the validation rule is - // "foo.bar", then set the attribute to just "bar", so that - // the validation message is shortened and more readable. - - $toShorten = []; - - foreach ($rules as $key => $value) { - $propertyName = Utils::beforeFirstDot($key); - - if ($data[$propertyName] instanceof Model) { - $toShorten[] = $key; - } - } - - return $toShorten; - } - - protected function shortenModelAttributesInsideValidator($ruleKeys, $validator) - { - foreach ($ruleKeys as $key) { - if (str($key)->snake()->replace('_', ' ')->is($validator->getDisplayableAttribute($key))) { - $validator->addCustomAttributes([$key => $validator->getDisplayableAttribute(Utils::afterFirstDot($key))]); - } - } - } - - protected function providedOrGlobalRulesMessagesAndAttributes($rules, $messages, $attributes) - { - $rules = is_null($rules) ? $this->getRules() : $rules; - - // Before we warn the user about not providing validation rules, - // Let's make sure there are no form objects that contain them... - $allRules = $rules; - - if ($this->isRootComponent()) { - foreach ($this->getFormObjects() as $form) { - $allRules = array_merge($allRules, $form->getRules()); - } - } - - throw_if(empty($allRules), new MissingRulesException($this)); - - $messages = empty($messages) ? $this->getMessages() : $messages; - $attributes = empty($attributes) ? $this->getValidationAttributes() : $attributes; - - return [$rules, $messages, $attributes]; - } - - protected function getDataForValidation($rules) - { - return Utils::getPublicPropertiesDefinedOnSubclass($this); - } - - protected function unwrapDataForValidation($data) - { - return collect($data)->map(function ($value) { - // @todo: this logic should be contained within "SupportWireables"... - if ($value instanceof Wireable) return $value->toLivewire(); - else if ($value instanceof Arrayable) return $value->toArray(); - - return $value; - })->all(); - } - - protected function prepareForValidation($attributes) - { - return $attributes; - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportValidation/SupportValidation.php b/vendor/livewire/livewire/src/Features/SupportValidation/SupportValidation.php deleted file mode 100644 index 2cfdaf0f..00000000 --- a/vendor/livewire/livewire/src/Features/SupportValidation/SupportValidation.php +++ /dev/null @@ -1,54 +0,0 @@ -component->setErrorBag( - $memo['errors'] ?? [] - ); - } - - function render($view, $data) - { - $errors = (new ViewErrorBag)->put('default', $this->component->getErrorBag()); - - $revert = Utils::shareWithViews('errors', $errors); - - return function () use ($revert) { - // After the component has rendered, let's revert our global - // sharing of the "errors" variable with blade views... - $revert(); - }; - } - - function dehydrate($context) - { - $errors = $this->component->getErrorBag()->toArray(); - - // Only persist errors that were born from properties on the component - // and not from custom validators (Validator::make) that were run. - $context->addMemo('errors', collect($errors) - ->filter(function ($value, $key) { - return Utils::hasProperty($this->component, $key); - }) - ->toArray() - ); - } - - function exception($e, $stopPropagation) - { - if (! $e instanceof ValidationException) return; - - $this->component->setErrorBag($e->validator->errors()); - - $stopPropagation(); - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportValidation/TestsValidation.php b/vendor/livewire/livewire/src/Features/SupportValidation/TestsValidation.php deleted file mode 100644 index fbf0a39e..00000000 --- a/vendor/livewire/livewire/src/Features/SupportValidation/TestsValidation.php +++ /dev/null @@ -1,135 +0,0 @@ -target)->get('testing.validator'); - - if ($validator) return $validator->errors(); - - $errors = store($this->target)->get('testing.errors'); - - if ($errors) return $errors; - - return new MessageBag; - } - - function failedRules() - { - $validator = store($this->target)->get('testing.validator'); - - return $validator ? $validator->failed() : []; - } - - public function assertHasErrors($keys = []) - { - $errors = $this->errors(); - - PHPUnit::assertTrue($errors->isNotEmpty(), 'Component has no errors.'); - - $keys = (array) $keys; - - foreach ($keys as $key => $value) { - if (is_int($key)) { - $this->makeErrorAssertion($value); - } else { - $this->makeErrorAssertion($key, $value); - } - } - - return $this; - } - - protected function makeErrorAssertion($key = null, $value = null) { - $errors = $this->errors(); - - $messages = $errors->get($key); - - $failed = $this->failedRules() ?: []; - $failedRules = array_keys(Arr::get($failed, $key, [])); - $failedRules = array_map(function (string $rule) { - if (is_a($rule, ValidationRule::class, true) || is_a($rule, Rule::class, true)) { - return $rule; - } - - return Str::snake($rule); - }, $failedRules); - - PHPUnit::assertTrue($errors->isNotEmpty(), 'Component has no errors.'); - - if (is_null($value)) { - PHPUnit::assertTrue($errors->has($key), "Component missing error: $key"); - } elseif ($value instanceof Closure) { - PHPUnit::assertTrue($value($failedRules, $messages)); - } elseif (is_array($value)) { - foreach ((array) $value as $ruleOrMessage) { - $this->assertErrorMatchesRuleOrMessage($failedRules, $messages, $key, $ruleOrMessage); - } - } else { - $this->assertErrorMatchesRuleOrMessage($failedRules, $messages, $key, $value); - } - - return $this; - } - - protected function assertErrorMatchesRuleOrMessage($rules, $messages, $key, $ruleOrMessage) - { - if (Str::contains($ruleOrMessage, ':')){ - $ruleOrMessage = Str::before($ruleOrMessage, ':'); - } - - if (in_array($ruleOrMessage, $rules)) { - PHPUnit::assertTrue(true); - - return; - } - - // If the provided rule/message isn't a failed rule, let's check to see if it's a message... - PHPUnit::assertContains($ruleOrMessage, $messages, "Component has no matching failed rule or error message [{$ruleOrMessage}] for [{$key}] attribute."); - } - - - public function assertHasNoErrors($keys = []) - { - $errors = $this->errors(); - - if (empty($keys)) { - PHPUnit::assertTrue($errors->isEmpty(), 'Component has errors: "'.implode('", "', $errors->keys()).'"'); - - return $this; - } - - $keys = (array) $keys; - - foreach ($keys as $key => $value) { - if (is_int($key)) { - PHPUnit::assertFalse($errors->has($value), "Component has error: $value"); - } else { - $failed = $this->failedRules() ?: []; - $rules = array_keys(Arr::get($failed, $key, [])); - - foreach ((array) $value as $rule) { - if (Str::contains($rule, ':')){ - $rule = Str::before($rule, ':'); - } - - PHPUnit::assertNotContains(Str::studly($rule), $rules, "Component has [{$rule}] errors for [{$key}] attribute."); - } - } - } - - return $this; - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportWireModelingNestedComponents/BaseModelable.php b/vendor/livewire/livewire/src/Features/SupportWireModelingNestedComponents/BaseModelable.php deleted file mode 100644 index c7a1ab6b..00000000 --- a/vendor/livewire/livewire/src/Features/SupportWireModelingNestedComponents/BaseModelable.php +++ /dev/null @@ -1,55 +0,0 @@ - $value) { - if (str($key)->startsWith('wire:model')) { - $outer = $value; - store($this->component)->push('bindings-directives', $key, $value); - break; - } - } - - if ($outer === null) return; - - $inner = $this->getName(); - - store($this->component)->push('bindings', $inner, $outer); - - $this->setValue(data_get($parent, $outer)); - } - - // This update hook is for the following scenario: - // An modelable value has changed in the browser. - // A network request is triggered from the parent. - // The request contains both parent and child component updates. - // The parent finishes it's request and the "updated" value is - // overridden in the parent's lifecycle (ex. a form field being reset). - // Without this hook, the child's value will not honor that change - // and will instead still be updated to the old value, even though - // the parent changed the bound value. This hook detects if the parent - // has provided a value during this request and ensures that it is the - // final value for the child's request... - function update($fullPath, $newValue) - { - if (store($this->component)->get('hasBeenSeeded', false)) { - $oldValue = $this->getValue(); - - return function () use ($oldValue) { - $this->setValue($oldValue); - }; - } - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportWireModelingNestedComponents/SupportWireModelingNestedComponents.php b/vendor/livewire/livewire/src/Features/SupportWireModelingNestedComponents/SupportWireModelingNestedComponents.php deleted file mode 100644 index a039dd21..00000000 --- a/vendor/livewire/livewire/src/Features/SupportWireModelingNestedComponents/SupportWireModelingNestedComponents.php +++ /dev/null @@ -1,94 +0,0 @@ - static::$outersByComponentId = []); - - // On a subsequent request, a parent encounters a child component - // with wire:model on it, and that child has already been mounted - // in a previous request, capture the value being passed in so we - // can later set the child's property if it exists in this request. - on('mount.stub', function ($tag, $id, $params, $parent, $key) { - $outer = collect($params)->first(function ($value, $key) { - return str($key)->startsWith('wire:model'); - }); - - if (! $outer) return; - - static::$outersByComponentId[$id] = [$outer => data_get($parent, $outer)]; - }); - } - - public function hydrate($memo) - { - if (! isset($memo['bindings'])) return; - - $bindings = $memo['bindings']; - $directives = $memo['bindingsDirectives']; - - // Store the bindings for later dehydration... - store($this->component)->set('bindings', $bindings); - store($this->component)->set('bindings-directives', $directives); - - // If this child's parent already rendered its stub, retrieve - // the memo'd value and set it. - if (! isset(static::$outersByComponentId[$memo['id']])) return; - - $outers = static::$outersByComponentId[$memo['id']]; - - foreach ($bindings as $outer => $inner) { - store($this->component)->set('hasBeenSeeded', true); - - $this->component->$inner = $outers[$outer]; - } - } - - public function render($view, $data) - { - return function ($html, $replaceHtml) { - $bindings = store($this->component)->get('bindings', false); - $directives = store($this->component)->get('bindings-directives', false); - - if (! $bindings) return; - - // Currently we can only support a single wire:model bound value, - // so we'll just get the first one. But in the future we will - // likely want to support named bindings, so we'll keep - // this value as an array. - $outer = array_keys($bindings)[0]; - $inner = array_values($bindings)[0]; - $directive = array_values($directives)[0]; - - // Attach the necessary Alpine directives so that the child and - // parent's JS, ephemeral, values are bound. - $replaceHtml(Utils::insertAttributesIntoHtmlRoot($html, [ - $directive => '$parent.'.$outer, - 'x-modelable' => '$wire.'.$inner, - ])); - }; - } - - public function dehydrate($context) - { - $bindings = store($this->component)->get('bindings', false); - - if (! $bindings) return; - - $directives = store($this->component)->get('bindings-directives'); - - // Add the bindings metadata to the paylad for later reference... - $context->addMemo('bindings', $bindings); - $context->addMemo('bindingsDirectives', $directives); - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportWireables/SupportWireables.php b/vendor/livewire/livewire/src/Features/SupportWireables/SupportWireables.php deleted file mode 100644 index f60fa4c4..00000000 --- a/vendor/livewire/livewire/src/Features/SupportWireables/SupportWireables.php +++ /dev/null @@ -1,13 +0,0 @@ -propertySynthesizer(WireableSynth::class); - } -} diff --git a/vendor/livewire/livewire/src/Features/SupportWireables/WireableSynth.php b/vendor/livewire/livewire/src/Features/SupportWireables/WireableSynth.php deleted file mode 100644 index b9d6927b..00000000 --- a/vendor/livewire/livewire/src/Features/SupportWireables/WireableSynth.php +++ /dev/null @@ -1,42 +0,0 @@ -toLivewire(); - - foreach ($data as $key => $child) { - $data[$key] = $dehydrateChild($key, $child); - } - - return [ - $data, - ['class' => get_class($target)], - ]; - } - - function hydrate($value, $meta, $hydrateChild) { - foreach ($value as $key => $child) { - $value[$key] = $hydrateChild($key, $child); - } - - return $meta['class']::fromLivewire($value); - } - - function set(&$target, $key, $value) { - $target->{$key} = $value; - } -} diff --git a/vendor/livewire/livewire/src/Form.php b/vendor/livewire/livewire/src/Form.php deleted file mode 100644 index aac5d5ae..00000000 --- a/vendor/livewire/livewire/src/Form.php +++ /dev/null @@ -1,10 +0,0 @@ -getParameters() as $parameter) { - static::substituteNameBindingForCallParameter($parameter, $parameters, $paramIndex); - static::substituteImplicitBindingForCallParameter($container, $parameter, $parameters); - static::addDependencyForCallParameter($container, $parameter, $parameters, $dependencies); - } - - return array_values(array_merge($dependencies, $parameters)); - } - - protected static function substituteNameBindingForCallParameter($parameter, array &$parameters, int &$paramIndex) - { - // check if we have a candidate for name/value binding - if (! array_key_exists($paramIndex, $parameters)) { - return; - } - - if ($parameter->isVariadic()) { - // this last param will pick up the rest - reindex any remaining parameters - $parameters = array_merge( - array_filter($parameters, function ($key) { return ! is_int($key); }, ARRAY_FILTER_USE_KEY), - array_values(array_filter($parameters, function ($key) { return is_int($key); }, ARRAY_FILTER_USE_KEY)) - ); - - return; - } - - // stop if this one is due for dependency injection - if (! is_null($className = static::getClassForDependencyInjection($parameter)) && ! $parameters[$paramIndex] instanceof $className) { - return; - } - - if (! array_key_exists($paramName = $parameter->getName(), $parameters)) { - // have a parameter value that is bound by sequential order - // and not yet bound by name, so bind it to parameter name - - $parameters[$paramName] = $parameters[$paramIndex]; - unset($parameters[$paramIndex]); - $paramIndex++; - } - } - - protected static function substituteImplicitBindingForCallParameter($container, $parameter, array &$parameters) - { - $paramName = $parameter->getName(); - - // check if we have a candidate for implicit binding - if (is_null($className = static::getClassForImplicitBinding($parameter))) { - return; - } - - // Check if the value we have for this param is an instance - // of the desired class, attempt implicit binding if not - if (array_key_exists($paramName, $parameters) && ! $parameters[$paramName] instanceof $className) { - $parameters[$paramName] = static::getImplicitBinding($container, $className, $parameters[$paramName]); - } elseif (array_key_exists($className, $parameters) && ! $parameters[$className] instanceof $className) { - $parameters[$className] = static::getImplicitBinding($container, $className, $parameters[$className]); - } - } - - protected static function getClassForDependencyInjection($parameter) - { - $className = static::getParameterClassName($parameter); - - if (is_null($className)) return null; - - if (static::isEnum($parameter)) return null; - - if (! static::implementsInterface($parameter)) return $className; - - return null; - } - - protected static function getClassForImplicitBinding($parameter) - { - $className = static::getParameterClassName($parameter); - - if (is_null($className)) return null; - - if (static::isEnum($parameter)) return $className; - - if (static::implementsInterface($parameter)) return $className; - - return null; - } - - protected static function getImplicitBinding($container, $className, $value) - { - if ((new ReflectionClass($className))->isEnum()) { - return $className::tryFrom($value); - } - - $model = $container->make($className)->resolveRouteBinding($value); - - if (! $model) { - throw (new ModelNotFoundException)->setModel($className, [$value]); - } - - return $model; - } - - public static function getParameterClassName($parameter) - { - $type = $parameter->getType(); - - if (! $type) return null; - - if (! $type instanceof ReflectionNamedType) return null; - - return (! $type->isBuiltin()) ? $type->getName() : null; - } - - public static function implementsInterface($parameter) - { - return (new ReflectionClass($parameter->getType()->getName()))->implementsInterface(ImplicitlyBindable::class); - } - - public static function isEnum($parameter) - { - return (new ReflectionClass($parameter->getType()->getName()))->isEnum(); - } -} diff --git a/vendor/livewire/livewire/src/Livewire.php b/vendor/livewire/livewire/src/Livewire.php deleted file mode 100644 index 59c3e3d7..00000000 --- a/vendor/livewire/livewire/src/Livewire.php +++ /dev/null @@ -1,42 +0,0 @@ -provider = $provider; - } - - function provide($callback) - { - \Closure::bind($callback, $this->provider, $this->provider::class)(); - } - - function component($name, $class = null) - { - app(ComponentRegistry::class)->component($name, $class); - } - - function componentHook($hook) - { - ComponentHookRegistry::register($hook); - } - - function propertySynthesizer($synth) - { - app(HandleComponents::class)->registerPropertySynthesizer($synth); - } - - function directive($name, $callback) - { - app(ExtendBlade::class)->livewireOnlyDirective($name, $callback); - } - - function precompiler($callback) - { - app(ExtendBlade::class)->livewireOnlyPrecompiler($callback); - } - - function new($name, $id = null) - { - return app(ComponentRegistry::class)->new($name, $id); - } - - function isDiscoverable($componentNameOrClass) - { - return app(ComponentRegistry::class)->isDiscoverable($componentNameOrClass); - } - - function resolveMissingComponent($resolver) - { - return app(ComponentRegistry::class)->resolveMissingComponent($resolver); - } - - function mount($name, $params = [], $key = null) - { - return app(HandleComponents::class)->mount($name, $params, $key); - } - - function snapshot($component) - { - return app(HandleComponents::class)->snapshot($component); - } - - function fromSnapshot($snapshot) - { - return app(HandleComponents::class)->fromSnapshot($snapshot); - } - - function listen($eventName, $callback) { - return on($eventName, $callback); - } - - function current() - { - return last(app(HandleComponents::class)::$componentStack); - } - - function update($snapshot, $diff, $calls) - { - return app(HandleComponents::class)->update($snapshot, $diff, $calls); - } - - function updateProperty($component, $path, $value) - { - $dummyContext = new ComponentContext($component, false); - - $updatedHook = app(HandleComponents::class)->updateProperty($component, $path, $value, $dummyContext); - - $updatedHook(); - } - - function isLivewireRequest() - { - return app(HandleRequests::class)->isLivewireRequest(); - } - - function componentHasBeenRendered() - { - return SupportAutoInjectedAssets::$hasRenderedAComponentThisRequest; - } - - function forceAssetInjection() - { - SupportAutoInjectedAssets::$forceAssetInjection = true; - } - - function setUpdateRoute($callback) - { - return app(HandleRequests::class)->setUpdateRoute($callback); - } - - function getUpdateUri() - { - return app(HandleRequests::class)->getUpdateUri(); - } - - function setScriptRoute($callback) - { - return app(FrontendAssets::class)->setScriptRoute($callback); - } - - function useScriptTagAttributes($attributes) - { - return app(FrontendAssets::class)->useScriptTagAttributes($attributes); - } - - protected $queryParamsForTesting = []; - - protected $cookiesForTesting = []; - - protected $headersForTesting = []; - - function withUrlParams($params) - { - return $this->withQueryParams($params); - } - - function withQueryParams($params) - { - $this->queryParamsForTesting = $params; - - return $this; - } - - function withCookie($name, $value) - { - $this->cookiesForTesting[$name] = $value; - - return $this; - } - - function withCookies($cookies) - { - $this->cookiesForTesting = array_merge($this->cookiesForTesting, $cookies); - - return $this; - } - - function withHeaders($headers) - { - $this->headersForTesting = array_merge($this->headersForTesting, $headers); - - return $this; - } - - function test($name, $params = []) - { - return Testable::create( - $name, - $params, - $this->queryParamsForTesting, - $this->cookiesForTesting, - $this->headersForTesting - ); - } - - function visit($name) - { - return DuskTestable::create($name, $params = [], $this->queryParamsForTesting); - } - - function actingAs(\Illuminate\Contracts\Auth\Authenticatable $user, $driver = null) - { - Testable::actingAs($user, $driver); - - return $this; - } - - function isRunningServerless() - { - return in_array($_ENV['SERVER_SOFTWARE'] ?? null, [ - 'vapor', - 'bref', - ]); - } - - function addPersistentMiddleware($middleware) - { - app(PersistentMiddleware::class)->addPersistentMiddleware($middleware); - } - - function setPersistentMiddleware($middleware) - { - app(PersistentMiddleware::class)->setPersistentMiddleware($middleware); - } - - function getPersistentMiddleware() - { - return app(PersistentMiddleware::class)->getPersistentMiddleware(); - } - - function flushState() - { - trigger('flush-state'); - } - - function originalUrl() - { - if ($this->isLivewireRequest()) { - return url()->to($this->originalPath()); - } - - return url()->current(); - } - - function originalPath() - { - if ($this->isLivewireRequest()) { - $snapshot = json_decode(request('components.0.snapshot'), true); - - return data_get($snapshot, 'memo.path', 'POST'); - } - - return request()->path(); - } - - function originalMethod() - { - if ($this->isLivewireRequest()) { - $snapshot = json_decode(request('components.0.snapshot'), true); - - return data_get($snapshot, 'memo.method', 'POST'); - } - - return request()->method(); - } -} diff --git a/vendor/livewire/livewire/src/LivewireServiceProvider.php b/vendor/livewire/livewire/src/LivewireServiceProvider.php deleted file mode 100644 index f416e8e9..00000000 --- a/vendor/livewire/livewire/src/LivewireServiceProvider.php +++ /dev/null @@ -1,129 +0,0 @@ -registerLivewireSingleton(); - $this->registerConfig(); - $this->bootEventBus(); - $this->registerMechanisms(); - } - - public function boot() - { - $this->bootMechanisms(); - $this->bootFeatures(); - } - - protected function registerLivewireSingleton() - { - $this->app->alias(LivewireManager::class, 'livewire'); - - $this->app->singleton(LivewireManager::class); - - app('livewire')->setProvider($this); - } - - protected function registerConfig() - { - $config = __DIR__.'/../config/livewire.php'; - - $this->publishes([$config => base_path('config/livewire.php')], ['livewire', 'livewire:config']); - - $this->mergeConfigFrom($config, 'livewire'); - } - - protected function bootEventBus() - { - app(\Livewire\EventBus::class)->boot(); - } - - protected function getMechanisms() - { - return [ - \Livewire\Mechanisms\PersistentMiddleware\PersistentMiddleware::class, - \Livewire\Mechanisms\HandleComponents\HandleComponents::class, - \Livewire\Mechanisms\HandleRequests\HandleRequests::class, - \Livewire\Mechanisms\FrontendAssets\FrontendAssets::class, - \Livewire\Mechanisms\ExtendBlade\ExtendBlade::class, - \Livewire\Mechanisms\CompileLivewireTags\CompileLivewireTags::class, - \Livewire\Mechanisms\ComponentRegistry::class, - \Livewire\Mechanisms\RenderComponent::class, - \Livewire\Mechanisms\DataStore::class, - ]; - } - - protected function registerMechanisms() - { - foreach ($this->getMechanisms() as $mechanism) { - app($mechanism)->register(); - } - } - - protected function bootMechanisms() - { - if (class_exists(AboutCommand::class) && class_exists(InstalledVersions::class)) { - AboutCommand::add('Livewire', [ - 'Livewire' => InstalledVersions::getPrettyVersion('livewire/livewire'), - ]); - } - - foreach ($this->getMechanisms() as $mechanism) { - app($mechanism)->boot(); - } - } - - protected function bootFeatures() - { - foreach([ - \Livewire\Features\SupportWireModelingNestedComponents\SupportWireModelingNestedComponents::class, - \Livewire\Features\SupportMultipleRootElementDetection\SupportMultipleRootElementDetection::class, - \Livewire\Features\SupportDisablingBackButtonCache\SupportDisablingBackButtonCache::class, - \Livewire\Features\SupportNestedComponentListeners\SupportNestedComponentListeners::class, - \Livewire\Features\SupportMorphAwareIfStatement\SupportMorphAwareIfStatement::class, - \Livewire\Features\SupportAutoInjectedAssets\SupportAutoInjectedAssets::class, - \Livewire\Features\SupportComputed\SupportLegacyComputedPropertySyntax::class, - \Livewire\Features\SupportNestingComponents\SupportNestingComponents::class, - \Livewire\Features\SupportScriptsAndAssets\SupportScriptsAndAssets::class, - \Livewire\Features\SupportBladeAttributes\SupportBladeAttributes::class, - \Livewire\Features\SupportConsoleCommands\SupportConsoleCommands::class, - \Livewire\Features\SupportPageComponents\SupportPageComponents::class, - \Livewire\Features\SupportReactiveProps\SupportReactiveProps::class, - \Livewire\Features\SupportFileDownloads\SupportFileDownloads::class, - \Livewire\Features\SupportJsEvaluation\SupportJsEvaluation::class, - \Livewire\Features\SupportQueryString\SupportQueryString::class, - \Livewire\Features\SupportFileUploads\SupportFileUploads::class, - \Livewire\Features\SupportTeleporting\SupportTeleporting::class, - \Livewire\Features\SupportLazyLoading\SupportLazyLoading::class, - \Livewire\Features\SupportFormObjects\SupportFormObjects::class, - \Livewire\Features\SupportAttributes\SupportAttributes::class, - \Livewire\Features\SupportPagination\SupportPagination::class, - \Livewire\Features\SupportValidation\SupportValidation::class, - \Livewire\Features\SupportIsolating\SupportIsolating::class, - \Livewire\Features\SupportRedirects\SupportRedirects::class, - \Livewire\Features\SupportStreaming\SupportStreaming::class, - \Livewire\Features\SupportNavigate\SupportNavigate::class, - \Livewire\Features\SupportEntangle\SupportEntangle::class, - \Livewire\Features\SupportLocales\SupportLocales::class, - \Livewire\Features\SupportTesting\SupportTesting::class, - \Livewire\Features\SupportModels\SupportModels::class, - \Livewire\Features\SupportEvents\SupportEvents::class, - - // Some features we want to have priority over others... - \Livewire\Features\SupportLifecycleHooks\SupportLifecycleHooks::class, - \Livewire\Features\SupportLegacyModels\SupportLegacyModels::class, - \Livewire\Features\SupportWireables\SupportWireables::class, - ] as $feature) { - app('livewire')->componentHook($feature); - } - - ComponentHookRegistry::boot(); - } -} - - diff --git a/vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/CompileLivewireTags.php b/vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/CompileLivewireTags.php deleted file mode 100644 index f50ed376..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/CompileLivewireTags.php +++ /dev/null @@ -1,13 +0,0 @@ -precompiler(new LivewireTagPrecompiler); - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php b/vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php deleted file mode 100644 index 1b182df1..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/CompileLivewireTags/LivewireTagPrecompiler.php +++ /dev/null @@ -1,92 +0,0 @@ -getAttributesFromAttributeString($matches['attributes']); - - $keys = array_keys($attributes); - $values = array_values($attributes); - $attributesCount = count($attributes); - - for ($i=0; $i < $attributesCount; $i++) { - if ($keys[$i] === ':' && $values[$i] === 'true') { - if (isset($values[$i + 1]) && $values[$i + 1] === 'true') { - $attributes[$keys[$i + 1]] = '$'.$keys[$i + 1]; - unset($attributes[':']); - } - } - } - - // Convert all kebab-cased to camelCase. - $attributes = collect($attributes)->mapWithKeys(function ($value, $key) { - // Skip snake_cased attributes. - if (str($key)->contains('_')) return [$key => $value]; - - return [(string) str($key)->camel() => $value]; - })->toArray(); - - // Convert all snake_cased attributes to camelCase, and merge with - // existing attributes so both snake and camel are available. - $attributes = collect($attributes)->mapWithKeys(function ($value, $key) { - // Skip snake_cased attributes - if (! str($key)->contains('_')) return [$key => false]; - - return [(string) str($key)->camel() => $value]; - })->filter()->merge($attributes)->toArray(); - - $component = $matches[1]; - - if ($component === 'styles') return '@livewireStyles'; - if ($component === 'scripts') return '@livewireScripts'; - if ($component === 'dynamic-component' || $component === 'is') { - if (! isset($attributes['component']) && ! isset($attributes['is'])) { - throw new ComponentAttributeMissingOnDynamicComponentException; - } - - // Does not need quotes as resolved with quotes already. - $component = $attributes['component'] ?? $attributes['is']; - - unset($attributes['component'], $attributes['is']); - } else { - // Add single quotes to the component name to compile it as string in quotes - $component = "'{$component}'"; - } - - return $this->componentString($component, $attributes); - }, $value); - } - - protected function componentString(string $component, array $attributes) - { - if (isset($attributes['key']) || isset($attributes['wire:key'])) { - $key = $attributes['key'] ?? $attributes['wire:key']; - unset($attributes['key'], $attributes['wire:key']); - - return "@livewire({$component}, [".$this->attributesToString($attributes, escapeBound: false)."], key({$key}))"; - } - - return "@livewire({$component}, [".$this->attributesToString($attributes, escapeBound: false).'])'; - } - - protected function attributesToString(array $attributes, $escapeBound = true) - { - return collect($attributes) - ->map(function (string $value, string $attribute) use ($escapeBound) { - return $escapeBound && isset($this->boundAttributes[$attribute]) && $value !== 'true' && ! is_numeric($value) - ? "'{$attribute}' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute({$value})" - : "'{$attribute}' => {$value}"; - }) - ->implode(','); - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/ComponentRegistry.php b/vendor/livewire/livewire/src/Mechanisms/ComponentRegistry.php deleted file mode 100644 index f4326919..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/ComponentRegistry.php +++ /dev/null @@ -1,217 +0,0 @@ -nonAliasedClasses[] = $name; - } else { - $this->aliases[$name] = $class; - } - } - - function new($nameOrClass, $id = null) - { - [$class, $name] = $this->getNameAndClass($nameOrClass); - - $component = new $class; - - $component->setId($id ?: str()->random(20)); - - $component->setName($name); - - // // Parameters passed in automatically set public properties by the same name... - // foreach ($params as $key => $value) { - // if (! property_exists($component, $key)) continue; - - // // Typed properties shouldn't be set back to "null". It will throw an error... - // if ((new \ReflectionProperty($component, $key))->getType() && is_null($value)) continue; - - // $component->$key = $value; - // } - - return $component; - } - - function isDiscoverable($classOrName) - { - if (is_object($classOrName)) { - $classOrName = get_class($classOrName); - } - - if (class_exists($name = $classOrName)) { - $name = $this->generateNameFromClass($classOrName); - } - - $class = $this->generateClassFromName($name); - - if (class_exists($class) && is_subclass_of($class, Component::class)) { - return true; - } - - return false; - } - - function getName($nameOrClassOrComponent) - { - [$class, $name] = $this->getNameAndClass($nameOrClassOrComponent); - - return $name; - } - - function getClass($nameOrClassOrComponent) - { - [$class, $name] = $this->getNameAndClass($nameOrClassOrComponent); - - return $class; - } - - function resolveMissingComponent($resolver) - { - $this->missingComponentResolvers[] = $resolver; - } - - protected function getNameAndClass($nameComponentOrClass) - { - // If a component itself was passed in, just take the class name... - $nameOrClass = is_object($nameComponentOrClass) ? $nameComponentOrClass::class : $nameComponentOrClass; - - // If a component class was passed in, use that... - if (class_exists($nameOrClass)) { - $class = $nameOrClass; - // Otherwise, assume it was a simple name... - } else { - $class = $this->nameToClass($nameOrClass); - - // If class can't be found, see if there is an index component in a subfolder... - if(! class_exists($class)) { - $class = $class . '\\Index'; - } - - if(! class_exists($class)) { - foreach ($this->missingComponentResolvers as $resolve) { - if ($resolved = $resolve($nameOrClass)) { - $this->component($nameOrClass, $resolved); - - $class = $this->aliases[$nameOrClass]; - - break; - } - } - } - } - - // Now that we have a class, we can check that it's actually a Livewire component... - if (! is_subclass_of($class, Component::class)) { - throw new ComponentNotFoundException( - "Unable to find component: [{$nameOrClass}]" - ); - } - - // Convert it to a name even if a name was passed in to make sure we're using deterministic names... - $name = $this->classToName($class); - - return [$class, $name]; - } - - protected function nameToClass($name) - { - // Check the aliases... - if (isset($this->aliases[$name])) { - if (is_object($this->aliases[$name])) return $this->aliases[$name]::class; - - return $this->aliases[$name]; - } - - // Hash check the non-aliased classes... - foreach ($this->nonAliasedClasses as $class) { - if (crc32($class) === $name) { - return $class; - } - } - - // Reverse generate a class from a name... - return $this->generateClassFromName($name); - } - - protected function classToName($class) - { - // Check the aliases... - $resolvedAliases = array_map(fn ($i) => is_object($i) ? get_class($i) : $i, $this->aliases); - - if ($name = array_search($class, $resolvedAliases)) return $name; - - // Check existance in non-aliased classes and hash... - foreach ($this->nonAliasedClasses as $oneOff) { - if (crc32($oneOff) === $hash = crc32($class)) { - return $hash; - } - } - - // Generate name from class... - return $this->generateNameFromClass($class); - } - - protected function generateClassFromName($name) - { - $rootNamespace = config('livewire.class_namespace'); - - $class = collect(str($name)->explode('.')) - ->map(fn ($segment) => (string) str($segment)->studly()) - ->join('\\'); - - if (empty($rootNamespace)) { - return $class; - } - - return '\\' . $rootNamespace . '\\' . $class; - } - - protected function generateNameFromClass($class) - { - $namespace = str_replace( - ['/', '\\'], - '.', - trim(trim(config('livewire.class_namespace')), '\\') - ); - - $class = str_replace( - ['/', '\\'], - '.', - trim(trim($class, '/'), '\\') - ); - - $namespace = collect(explode('.', $namespace)) - ->map(fn ($i) => \Illuminate\Support\Str::kebab($i)) - ->implode('.'); - - $fullName = str(collect(explode('.', $class)) - ->map(fn ($i) => \Illuminate\Support\Str::kebab($i)) - ->implode('.')); - - if ($fullName->startsWith('.')) { - $fullName = $fullName->substr(1); - } - - // If using an index component in a sub folder, remove the '.index' so the name is the subfolder name... - if ($fullName->endsWith('.index')) { - $fullName = $fullName->replaceLast('.index', ''); - } - - if ($fullName->startsWith($namespace)) { - return (string) $fullName->substr(strlen($namespace) + 1); - } - - return (string) $fullName; - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/DataStore.php b/vendor/livewire/livewire/src/Mechanisms/DataStore.php deleted file mode 100644 index ddbf9ea1..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/DataStore.php +++ /dev/null @@ -1,89 +0,0 @@ -lookup = new WeakMap; - } - - function set($instance, $key, $value) - { - if (! isset($this->lookup[$instance])) { - $this->lookup[$instance] = []; - } - - $this->lookup[$instance][$key] = $value; - } - - function has($instance, $key, $iKey = null) { - if (! isset($this->lookup[$instance])) { - return false; - } - - if (! isset($this->lookup[$instance][$key])) { - return false; - } - - if ($iKey !== null) { - return !! ($this->lookup[$instance][$key][$iKey] ?? false); - } - - return true; - } - - function get($instance, $key, $default = null) - { - if (! isset($this->lookup[$instance])) { - return value($default); - } - - if (! isset($this->lookup[$instance][$key])) { - return value($default); - } - - return $this->lookup[$instance][$key]; - } - - function find($instance, $key, $iKey = null, $default = null) - { - if (! isset($this->lookup[$instance])) { - return value($default); - } - - if (! isset($this->lookup[$instance][$key])) { - return value($default); - } - - if ($iKey !== null && ! isset($this->lookup[$instance][$key][$iKey])) { - return value($default); - } - - return $iKey !== null - ? $this->lookup[$instance][$key][$iKey] - : $this->lookup[$instance][$key]; - } - - function push($instance, $key, $value, $iKey = null) - { - if (! isset($this->lookup[$instance])) { - $this->lookup[$instance] = []; - } - - if (! isset($this->lookup[$instance][$key])) { - $this->lookup[$instance][$key] = []; - } - - if ($iKey) { - $this->lookup[$instance][$key][$iKey] = $value; - } else { - $this->lookup[$instance][$key][] = $value; - } - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/ExtendBlade/DeterministicBladeKeys.php b/vendor/livewire/livewire/src/Mechanisms/ExtendBlade/DeterministicBladeKeys.php deleted file mode 100644 index 6d23b662..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/ExtendBlade/DeterministicBladeKeys.php +++ /dev/null @@ -1,39 +0,0 @@ -lastPath) { - throw new \Exception('Latest compiled component path not found.'); - } - - $path = $this->lastPath; - $count = $this->counter(); - - // $key = "lw-[hash of Blade view path]-[current @livewire directive count]" - return 'lw-' . crc32($this->lastPath) . '-' . $count; - } - - public function counter() - { - if (! isset($this->countersByPath[$this->lastPath])) { - $this->countersByPath[$this->lastPath] = 0; - } - - return $this->countersByPath[$this->lastPath]++; - } - - public function interceptCompile(BladeCompiler $compiler) - { - $this->lastPath = $compiler->getPath(); - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/ExtendBlade/ExtendBlade.php b/vendor/livewire/livewire/src/Mechanisms/ExtendBlade/ExtendBlade.php deleted file mode 100644 index 7fa8bf6d..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/ExtendBlade/ExtendBlade.php +++ /dev/null @@ -1,145 +0,0 @@ - "window.Livewire.find('{{ \$_instance->getId() }}')"); - - on('render', function ($target, $view) { - $this->startLivewireRendering($target); - - $undo = $this->livewireifyBladeCompiler(); - - $this->renderCounter++; - - return function ($html) use ($view, $undo, $target) { - $this->endLivewireRendering(); - - $this->renderCounter--; - - if ($this->renderCounter === 0) { - $undo(); - } - - return $html; - }; - }); - - // This is a custom view engine that gets used when rendering - // Livewire views. Things like letting certain exceptions bubble - // to the handler, and registering custom directives like: "@this". - app()->make('view.engine.resolver')->register('blade', function () { - return new ExtendedCompilerEngine(app('blade.compiler')); - }); - - app()->singleton(DeterministicBladeKeys::class); - - // Reset this singleton between tests and Octane requests... - on('flush-state', function () { - app()->singleton(DeterministicBladeKeys::class); - }); - - // We're using "precompiler" as a hook for the point in time when - // Laravel compiles a Blade view... - app('blade.compiler')->precompiler(function ($value) { - app(DeterministicBladeKeys::class)->interceptCompile( - app('blade.compiler'), - ); - - return $value; - }); - } - - function livewireOnlyDirective($name, $handler) - { - $this->directives[$name] = $handler; - } - - function livewireOnlyPrecompiler($handler) - { - $this->precompilers[] = $handler; - } - - function livewireifyBladeCompiler() { - $removals = []; - - if ($this->renderCounter === 0) { - $customDirectives = app('blade.compiler')->getCustomDirectives(); - $precompilers = invade(app('blade.compiler'))->precompilers; - - foreach ($this->directives as $name => $handler) { - if (! isset($customDirectives[$name])) { - $customDirectives[$name] = $handler; - - invade(app('blade.compiler'))->customDirectives = $customDirectives; - - $removals[] = function () use ($name) { - $customDirectives = app('blade.compiler')->getCustomDirectives(); - - unset($customDirectives[$name]); - - invade(app('blade.compiler'))->customDirectives = $customDirectives; - }; - } - } - - foreach ($this->precompilers as $handler) { - if (array_search($handler, $precompilers) === false) { - array_unshift($precompilers, $handler); - - invade(app('blade.compiler'))->precompilers = $precompilers; - - $removals[] = function () use ($handler) { - $precompilers = invade(app('blade.compiler'))->precompilers; - - $index = array_search($handler, $precompilers); - - if ($index === false) return; - - unset($precompilers[$index]); - - invade(app('blade.compiler'))->precompilers = $precompilers; - }; - } - } - } - - return function () use ($removals) { - while ($removals) array_pop($removals)(); - }; - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/ExtendBlade/ExtendedCompilerEngine.php b/vendor/livewire/livewire/src/Mechanisms/ExtendBlade/ExtendedCompilerEngine.php deleted file mode 100644 index dfd21ac2..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/ExtendBlade/ExtendedCompilerEngine.php +++ /dev/null @@ -1,76 +0,0 @@ -handleViewException($e, $obLevel); - } - - return ltrim(ob_get_clean()); - } - - // Errors thrown while a view is rendering are caught by the Blade - // compiler and wrapped in an "ErrorException". This makes Livewire errors - // harder to read, AND causes issues like `abort(404)` not actually working. - protected function handleViewException(\Throwable $e, $obLevel) - { - if ($this->shouldBypassExceptionForLivewire($e, $obLevel)) { - // This is because there is no "parent::parent::". - \Illuminate\View\Engines\PhpEngine::handleViewException($e, $obLevel); - - return; - } - - parent::handleViewException($e, $obLevel); - } - - public function shouldBypassExceptionForLivewire(\Throwable $e, $obLevel) - { - $uses = array_flip(class_uses_recursive($e)); - - return ( - // Don't wrap "abort(403)". - $e instanceof \Illuminate\Auth\Access\AuthorizationException - // Don't wrap "abort(404)". - || $e instanceof \Symfony\Component\HttpKernel\Exception\NotFoundHttpException - // Don't wrap "abort(500)". - || $e instanceof \Symfony\Component\HttpKernel\Exception\HttpException - // Don't wrap most Livewire exceptions. - || isset($uses[\Livewire\Exceptions\BypassViewHandler::class]) - ); - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php b/vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php deleted file mode 100644 index 8a67ad93..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/FrontendAssets/FrontendAssets.php +++ /dev/null @@ -1,197 +0,0 @@ -setScriptRoute(function ($handle) { - return Route::get('/livewire/livewire.js', $handle); - }); - - Blade::directive('livewireScripts', [static::class, 'livewireScripts']); - Blade::directive('livewireScriptConfig', [static::class, 'livewireScriptConfig']); - Blade::directive('livewireStyles', [static::class, 'livewireStyles']); - - on('flush-state', function () { - $instance = app(static::class); - - $instance->hasRenderedScripts = false; - $instance->hasRenderedStyles = false; - }); - } - - function useScriptTagAttributes($attributes) - { - $this->scriptTagAttributes = array_merge($this->scriptTagAttributes, $attributes); - } - - function setScriptRoute($callback) - { - $route = $callback([self::class, 'returnJavaScriptAsFile']); - - $this->javaScriptRoute = $route; - } - - public static function livewireScripts($expression) - { - return '{!! \Livewire\Mechanisms\FrontendAssets\FrontendAssets::scripts('.$expression.') !!}'; - } - - public static function livewireScriptConfig($expression) - { - return '{!! \Livewire\Mechanisms\FrontendAssets\FrontendAssets::scriptConfig('.$expression.') !!}'; - } - - public static function livewireStyles($expression) - { - return '{!! \Livewire\Mechanisms\FrontendAssets\FrontendAssets::styles('.$expression.') !!}'; - } - - public function returnJavaScriptAsFile() - { - return Utils::pretendResponseIsFile(__DIR__.'/../../../dist/livewire.js'); - } - - public function maps() - { - return Utils::pretendResponseIsFile(__DIR__.'/../../../dist/livewire.js.map'); - } - - public static function styles($options = []) - { - app(static::class)->hasRenderedStyles = true; - - $nonce = isset($options['nonce']) ? "nonce=\"{$options['nonce']}\" data-livewire-style" : ''; - - $progressBarColor = config('livewire.navigate.progress_bar_color', '#2299dd'); - - // Note: the attribute selectors are "doubled" so that they don't get overriden when Tailwind's CDN loads a script tag - // BELOW the one Livewire injects... - $html = << - - HTML; - - return static::minify($html); - } - - public static function scripts($options = []) - { - app(static::class)->hasRenderedScripts = true; - - $debug = config('app.debug'); - - $scripts = static::js($options); - - // HTML Label. - $html = $debug ? [''] : []; - - $html[] = $scripts; - - return implode("\n", $html); - } - - public static function js($options) - { - // Use the default endpoint... - $url = app(static::class)->javaScriptRoute->uri; - - // Use the configured one... - $url = config('livewire.asset_url') ?: $url; - - // Use the legacy passed in one... - $url = $options['asset_url'] ?? $url; - - // Use the new passed in one... - $url = $options['url'] ?? $url; - - $url = rtrim($url, '/'); - - $url = (string) str($url)->when(! str($url)->isUrl(), fn($url) => $url->start('/')); - - // Add the build manifest hash to it... - $manifest = json_decode(file_get_contents(__DIR__.'/../../../dist/manifest.json'), true); - $versionHash = $manifest['/livewire.js']; - $url = "{$url}?id={$versionHash}"; - - $token = app()->has('session.store') ? csrf_token() : ''; - - $nonce = isset($options['nonce']) ? "nonce=\"{$options['nonce']}\"" : ''; - - $progressBar = config('livewire.navigate.show_progress_bar', true) ? '' : 'data-no-progress-bar'; - - $updateUri = app('livewire')->getUpdateUri(); - - $extraAttributes = Utils::stringifyHtmlAttributes( - app(static::class)->scriptTagAttributes, - ); - - return << - HTML; - } - - public static function scriptConfig($options = []) - { - app(static::class)->hasRenderedScripts = true; - - $nonce = isset($options['nonce']) ? " nonce=\"{$options['nonce']}\"" : ''; - - $progressBar = config('livewire.navigate.show_progress_bar', true) ? '' : 'data-no-progress-bar'; - - $attributes = json_encode([ - 'csrf' => app()->has('session.store') ? csrf_token() : '', - 'uri' => app('livewire')->getUpdateUri(), - 'progressBar' => $progressBar, - 'nonce' => isset($options['nonce']) ? $options['nonce'] : '', - ]); - - return <<window.livewireScriptConfig = {$attributes}; - HTML; - } - - protected static function minify($subject) - { - return preg_replace('~(\v|\t|\s{2,})~m', '', $subject); - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/BaseRenderless.php b/vendor/livewire/livewire/src/Mechanisms/HandleComponents/BaseRenderless.php deleted file mode 100644 index a8a15fc3..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/BaseRenderless.php +++ /dev/null @@ -1,14 +0,0 @@ -component->skipRender(); - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Checksum.php b/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Checksum.php deleted file mode 100644 index ecbd46b9..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Checksum.php +++ /dev/null @@ -1,31 +0,0 @@ -getKey(); - - $checksum = hash_hmac('sha256', json_encode($snapshot), $hashKey); - - trigger('checksum.generate', $checksum, $snapshot); - - return $checksum; - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/ComponentContext.php b/vendor/livewire/livewire/src/Mechanisms/HandleComponents/ComponentContext.php deleted file mode 100644 index 7087c3a8..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/ComponentContext.php +++ /dev/null @@ -1,55 +0,0 @@ - $iValue) $this->addEffect($iKey, $iValue); - - return; - } - - $this->effects[$key] = $value; - } - - public function pushEffect($key, $value, $iKey = null) - { - if (! isset($this->effects[$key])) $this->effects[$key] = []; - - if ($iKey) { - $this->effects[$key][$iKey] = $value; - } else { - $this->effects[$key][] = $value; - } - } - - public function addMemo($key, $value) - { - $this->memo[$key] = $value; - } - - public function pushMemo($key, $value, $iKey = null) - { - if (! isset($this->memo[$key])) $this->memo[$key] = []; - - if ($iKey) { - $this->memo[$key][$iKey] = $value; - } else { - $this->memo[$key][] = $value; - } - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/CorruptComponentPayloadException.php b/vendor/livewire/livewire/src/Mechanisms/HandleComponents/CorruptComponentPayloadException.php deleted file mode 100644 index bd495049..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/CorruptComponentPayloadException.php +++ /dev/null @@ -1,18 +0,0 @@ -propertySynthesizers, $class); - } - } - - public function mount($name, $params = [], $key = null) - { - $parent = app('livewire')->current(); - - if ($html = $this->shortCircuitMount($name, $params, $key, $parent)) return $html; - - $component = app('livewire')->new($name); - - $this->pushOntoComponentStack($component); - - $context = new ComponentContext($component, mounting: true); - - if (config('app.debug')) $start = microtime(true); - $finish = trigger('mount', $component, $params, $key, $parent); - if (config('app.debug')) trigger('profile', 'mount', $component->getId(), [$start, microtime(true)]); - - if (config('app.debug')) $start = microtime(true); - $html = $this->render($component, '
    '); - if (config('app.debug')) trigger('profile', 'render', $component->getId(), [$start, microtime(true)]); - - if (config('app.debug')) $start = microtime(true); - trigger('dehydrate', $component, $context); - - $snapshot = $this->snapshot($component, $context); - if (config('app.debug')) trigger('profile', 'dehydrate', $component->getId(), [$start, microtime(true)]); - - trigger('destroy', $component, $context); - - $html = Utils::insertAttributesIntoHtmlRoot($html, [ - 'wire:snapshot' => $snapshot, - 'wire:effects' => $context->effects, - ]); - - $this->popOffComponentStack(); - - return $finish($html, $snapshot); - } - - protected function shortCircuitMount($name, $params, $key, $parent) - { - $newHtml = null; - - trigger('pre-mount', $name, $params, $key, $parent, function ($html) use (&$newHtml) { - $newHtml = $html; - }); - - return $newHtml; - } - - public function update($snapshot, $updates, $calls) - { - $data = $snapshot['data']; - $memo = $snapshot['memo']; - - if (config('app.debug')) $start = microtime(true); - [ $component, $context ] = $this->fromSnapshot($snapshot); - - $this->pushOntoComponentStack($component); - - trigger('hydrate', $component, $memo, $context); - - $this->updateProperties($component, $updates, $data, $context); - if (config('app.debug')) trigger('profile', 'hydrate', $component->getId(), [$start, microtime(true)]); - - $this->callMethods($component, $calls, $context); - - if (config('app.debug')) $start = microtime(true); - if ($html = $this->render($component)) { - $context->addEffect('html', $html); - if (config('app.debug')) trigger('profile', 'render', $component->getId(), [$start, microtime(true)]); - } - - if (config('app.debug')) $start = microtime(true); - trigger('dehydrate', $component, $context); - - $snapshot = $this->snapshot($component, $context); - if (config('app.debug')) trigger('profile', 'dehydrate', $component->getId(), [$start, microtime(true)]); - - trigger('destroy', $component, $context); - - $this->popOffComponentStack(); - - return [ $snapshot, $context->effects ]; - } - - public function fromSnapshot($snapshot) - { - Checksum::verify($snapshot); - - trigger('snapshot-verified', $snapshot); - - $data = $snapshot['data']; - $name = $snapshot['memo']['name']; - $id = $snapshot['memo']['id']; - - $component = app('livewire')->new($name, id: $id); - - $context = new ComponentContext($component); - - $this->hydrateProperties($component, $data, $context); - - return [ $component, $context ]; - } - - public function snapshot($component, $context = null) - { - $context ??= new ComponentContext($component); - - $data = $this->dehydrateProperties($component, $context); - - $snapshot = [ - 'data' => $data, - 'memo' => [ - 'id' => $component->getId(), - 'name' => $component->getName(), - ...$context->memo, - ], - ]; - - $snapshot['checksum'] = Checksum::generate($snapshot); - - return $snapshot; - } - - protected function dehydrateProperties($component, $context) - { - $data = Utils::getPublicPropertiesDefinedOnSubclass($component); - - foreach ($data as $key => $value) { - $data[$key] = $this->dehydrate($value, $context, $key); - } - - return $data; - } - - protected function dehydrate($target, $context, $path) - { - if (Utils::isAPrimitive($target)) return $target; - - $synth = $this->propertySynth($target, $context, $path); - - [ $data, $meta ] = $synth->dehydrate($target, function ($name, $child) use ($context, $path) { - return $this->dehydrate($child, $context, "{$path}.{$name}"); - }); - - $meta['s'] = $synth::getKey(); - - return [ $data, $meta ]; - } - - protected function hydrateProperties($component, $data, $context) - { - foreach ($data as $key => $value) { - if (! property_exists($component, $key)) continue; - - $child = $this->hydrate($value, $context, $key); - - // Typed properties shouldn't be set back to "null". It will throw an error... - if ((new \ReflectionProperty($component, $key))->getType() && is_null($child)) continue; - - $component->$key = $child; - } - } - - protected function hydrate($valueOrTuple, $context, $path) - { - if (! Utils::isSyntheticTuple($value = $tuple = $valueOrTuple)) return $value; - - [$value, $meta] = $tuple; - - // Nested properties get set as `__rm__` when they are removed. We don't want to hydrate these. - if ($this->isRemoval($value) && str($path)->contains('.')) { - return $value; - } - - $synth = $this->propertySynth($meta['s'], $context, $path); - - return $synth->hydrate($value, $meta, function ($name, $child) use ($context, $path) { - return $this->hydrate($child, $context, "{$path}.{$name}"); - }); - } - - protected function render($component, $default = null) - { - if ($html = store($component)->get('skipRender', false)) { - $html = value(is_string($html) ? $html : $default); - - if (! $html) return; - - return Utils::insertAttributesIntoHtmlRoot($html, [ - 'wire:id' => $component->getId(), - ]); - } - - [ $view, $properties ] = $this->getView($component); - - return $this->trackInRenderStack($component, function () use ($component, $view, $properties) { - $finish = trigger('render', $component, $view, $properties); - - $revertA = Utils::shareWithViews('__livewire', $component); - $revertB = Utils::shareWithViews('_instance', $component); // @deprecated - - $viewContext = new ViewContext; - - $html = $view->render(function ($view) use ($viewContext) { - // Extract leftover slots, sections, and pushes before they get flushed... - $viewContext->extractFromEnvironment($view->getFactory()); - }); - - $revertA(); $revertB(); - - $html = Utils::insertAttributesIntoHtmlRoot($html, [ - 'wire:id' => $component->getId(), - ]); - - $replaceHtml = function ($newHtml) use (&$html) { - $html = $newHtml; - }; - - $html = $finish($html, $replaceHtml, $viewContext); - - return $html; - }); - } - - protected function getView($component) - { - $viewPath = config('livewire.view_path', resource_path('views/livewire')); - - $dotName = $component->getName(); - - $fileName = str($dotName)->replace('.', '/')->__toString(); - - $viewOrString = method_exists($component, 'render') - ? wrap($component)->render() - : View::file($viewPath . '/' . $fileName . '.blade.php'); - - $properties = Utils::getPublicPropertiesDefinedOnSubclass($component); - - $view = Utils::generateBladeView($viewOrString, $properties); - - return [ $view, $properties ]; - } - - protected function trackInRenderStack($component, $callback) - { - array_push(static::$renderStack, $component); - - return tap($callback(), function () { - array_pop(static::$renderStack); - }); - } - - protected function updateProperties($component, $updates, $data, $context) - { - $finishes = []; - - foreach ($updates as $path => $value) { - $value = $this->hydrateForUpdate($data, $path, $value, $context); - - // We only want to run "updated" hooks after all properties have - // been updated so that each individual hook has the ability - // to overwrite the updated states of other properties... - $finishes[] = $this->updateProperty($component, $path, $value, $context); - } - - foreach ($finishes as $finish) { - $finish(); - } - } - - public function updateProperty($component, $path, $value, $context) - { - $segments = explode('.', $path); - - $property = array_shift($segments); - - $finish = trigger('update', $component, $path, $value); - - // If this isn't a "deep" set, set it directly, otherwise we have to - // recursively get up and set down the value through the synths... - if (empty($segments)) { - if (! $this->isRemoval($value)) $this->setComponentPropertyAwareOfTypes($component, $property, $value); - } else { - $propertyValue = $component->$property; - - $this->setComponentPropertyAwareOfTypes($component, $property, - $this->recursivelySetValue($property, $propertyValue, $value, $segments, 0, $context) - ); - } - - return $finish; - } - - protected function hydrateForUpdate($raw, $path, $value, $context) - { - $meta = $this->getMetaForPath($raw, $path); - - // If we have meta data already for this property, let's use that to get a synth... - if ($meta) { - return $this->hydrate([$value, $meta], $context, $path); - } - - // If we don't, let's check to see if it's a typed property and fetch the synth that way... - $parent = str($path)->contains('.') - ? data_get($context->component, str($path)->beforeLast('.')->toString()) - : $context->component; - - $childKey = str($path)->afterLast('.'); - - if ($parent && is_object($parent) && property_exists($parent, $childKey) && Utils::propertyIsTyped($parent, $childKey)) { - $type = Utils::getProperty($parent, $childKey)->getType(); - - $types = $type instanceof ReflectionUnionType ? $type->getTypes() : [$type]; - - foreach ($types as $type) { - $synth = $this->getSynthesizerByType($type->getName(), $context, $path); - - if ($synth) return $synth->hydrateFromType($type->getName(), $value); - } - } - - return $value; - } - - protected function getMetaForPath($raw, $path) - { - $segments = explode('.', $path); - - $first = array_shift($segments); - - [$data, $meta] = Utils::isSyntheticTuple($raw) ? $raw : [$raw, null]; - - if ($path !== '') { - $value = $data[$first] ?? null; - - return $this->getMetaForPath($value, implode('.', $segments)); - } - - return $meta; - } - - protected function recursivelySetValue($baseProperty, $target, $leafValue, $segments, $index = 0, $context = null) - { - $isLastSegment = count($segments) === $index + 1; - - $property = $segments[$index]; - - $path = implode('.', array_slice($segments, 0, $index + 1)); - - $synth = $this->propertySynth($target, $context, $path); - - if ($isLastSegment) { - $toSet = $leafValue; - } else { - $propertyTarget = $synth->get($target, $property); - - // "$path" is a dot-notated key. This means we may need to drill - // down and set a value on a deeply nested object. That object - // may not exist, so let's find the first one that does... - - // Here's we've determined we're trying to set a deeply nested - // value on an object/array that doesn't exist, so we need - // to build up that non-existant nesting structure first. - if ($propertyTarget === null) $propertyTarget = []; - - $toSet = $this->recursivelySetValue($baseProperty, $propertyTarget, $leafValue, $segments, $index + 1, $context); - } - - $method = ($this->isRemoval($leafValue) && $isLastSegment) ? 'unset' : 'set'; - - $pathThusFar = collect([$baseProperty, ...$segments])->slice(0, $index + 1)->join('.'); - $fullPath = collect([$baseProperty, ...$segments])->join('.'); - - $synth->$method($target, $property, $toSet, $pathThusFar, $fullPath); - - return $target; - } - - protected function setComponentPropertyAwareOfTypes($component, $property, $value) - { - try { - $component->$property = $value; - } catch (\TypeError $e) { - // If an "int" is being set to empty string, unset the property (making it null). - // This is common in the case of `wire:model`ing an int to a text field... - // If a value is being set to "null", do the same... - if ($value === '' || $value === null) { - unset($component->$property); - } else { - throw $e; - } - } - } - - protected function callMethods($root, $calls, $context) - { - $returns = []; - - foreach ($calls as $idx => $call) { - $method = $call['method']; - $params = $call['params']; - - - $earlyReturnCalled = false; - $earlyReturn = null; - $returnEarly = function ($return = null) use (&$earlyReturnCalled, &$earlyReturn) { - $earlyReturnCalled = true; - $earlyReturn = $return; - }; - - $finish = trigger('call', $root, $method, $params, $context, $returnEarly); - - if ($earlyReturnCalled) { - $returns[] = $finish($earlyReturn); - - continue; - } - - $methods = Utils::getPublicMethodsDefinedBySubClass($root); - - // Also remove "render" from the list... - $methods = array_values(array_diff($methods, ['render'])); - - // @todo: put this in a better place: - $methods[] = '__dispatch'; - - if (! in_array($method, $methods)) { - throw new MethodNotFoundException($method); - } - - if (config('app.debug')) $start = microtime(true); - $return = wrap($root)->{$method}(...$params); - if (config('app.debug')) trigger('profile', 'call'.$idx, $root->getId(), [$start, microtime(true)]); - - $returns[] = $finish($return); - } - - $context->addEffect('returns', $returns); - } - - protected function propertySynth($keyOrTarget, $context, $path): Synth - { - return is_string($keyOrTarget) - ? $this->getSynthesizerByKey($keyOrTarget, $context, $path) - : $this->getSynthesizerByTarget($keyOrTarget, $context, $path); - } - - protected function getSynthesizerByKey($key, $context, $path) - { - foreach ($this->propertySynthesizers as $synth) { - if ($synth::getKey() === $key) { - return new $synth($context, $path); - } - } - - throw new \Exception('No synthesizer found for key: "'.$key.'"'); - } - - protected function getSynthesizerByTarget($target, $context, $path) - { - foreach ($this->propertySynthesizers as $synth) { - if ($synth::match($target)) { - return new $synth($context, $path); - } - } - - throw new \Exception('Property type not supported in Livewire for property: ['.json_encode($target).']'); - } - - protected function getSynthesizerByType($type, $context, $path) - { - foreach ($this->propertySynthesizers as $synth) { - if ($synth::matchByType($type)) { - return new $synth($context, $path); - } - } - - return null; - } - - protected function pushOntoComponentStack($component) - { - array_push($this::$componentStack, $component); - } - - protected function popOffComponentStack() - { - array_pop($this::$componentStack); - } - - protected function isRemoval($value) { - return $value === '__rm__'; - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/ArraySynth.php b/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/ArraySynth.php deleted file mode 100644 index 23ed08e2..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/ArraySynth.php +++ /dev/null @@ -1,43 +0,0 @@ - $child) { - $target[$key] = $dehydrateChild($key, $child); - } - - return [$target, []]; - } - - function hydrate($value, $meta, $hydrateChild) { - // If we are "hydrating" a value about to be used in an update, - // Let's make sure it's actually an array before try to set it. - // This is most common in the case of "__rm__" values, but also - // applies to any non-array value... - if (! is_array($value)) { - return $value; - } - - foreach ($value as $key => $child) { - $value[$key] = $hydrateChild($key, $child); - } - - return $value; - } - - function set(&$target, $key, $value) { - $target[$key] = $value; - } - - function unset(&$target, $key) { - unset($target[$key]); - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/CarbonSynth.php b/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/CarbonSynth.php deleted file mode 100644 index e10e9ab3..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/CarbonSynth.php +++ /dev/null @@ -1,40 +0,0 @@ - DateTime::class, - 'nativeImmutable' => DateTimeImmutable::class, - 'carbon' => Carbon::class, - 'carbonImmutable' => CarbonImmutable::class, - 'illuminate' => \Illuminate\Support\Carbon::class, - ]; - - public static $key = 'cbn'; - - static function match($target) { - foreach (static::$types as $type => $class) { - if ($target instanceof $class) return true; - } - - return false; - } - - function dehydrate($target) { - return [ - $target->format(DateTimeInterface::ATOM), - ['type' => array_search(get_class($target), static::$types)], - ]; - } - - function hydrate($value, $meta) { - return new static::$types[$meta['type']]($value); - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/CollectionSynth.php b/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/CollectionSynth.php deleted file mode 100644 index d39845fc..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/CollectionSynth.php +++ /dev/null @@ -1,51 +0,0 @@ -all(); - - foreach ($data as $key => $child) { - $data[$key] = $dehydrateChild($key, $child); - } - - return [ - $data, - ['class' => get_class($target)] - ]; - } - - function hydrate($value, $meta, $hydrateChild) { - foreach ($value as $key => $child) { - $value[$key] = $hydrateChild($key, $child); - } - - return new $meta['class']($value); - } - - function &get(&$target, $key) { - // We need this "$reader" callback to get a reference to - // the items property inside collections. Otherwise, - // we'd receive a copy instead of the reference. - $reader = function & ($object, $property) { - $value = & \Closure::bind(function & () use ($property) { - return $this->$property; - }, $object, $object)->__invoke(); - - return $value; - }; - - $items =& $reader($target, 'items'); - - return $items[$key]; - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/EnumSynth.php b/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/EnumSynth.php deleted file mode 100644 index d032245a..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/EnumSynth.php +++ /dev/null @@ -1,36 +0,0 @@ -value, - ['class' => get_class($target)] - ]; - } - - function hydrate($value, $meta) { - if ($value === null) return null; - - $class = $meta['class']; - - return $class::from($value); - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/IntSynth.php b/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/IntSynth.php deleted file mode 100644 index a07435a7..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/IntSynth.php +++ /dev/null @@ -1,22 +0,0 @@ - $child) { - $data[$key] = $dehydrateChild($key, $child); - } - - return [$data, []]; - } - - function hydrate($value, $meta, $hydrateChild) { - $obj = new stdClass; - - foreach ($value as $key => $child) { - $obj->$key = $hydrateChild($key, $child); - } - - return $obj; - } - - function set(&$target, $key, $value) { - $target->$key = $value; - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/StringableSynth.php b/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/StringableSynth.php deleted file mode 100644 index 2065f66b..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/StringableSynth.php +++ /dev/null @@ -1,21 +0,0 @@ -__toString(), []]; - } - - function hydrate($value) { - return str($value); - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/Synth.php b/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/Synth.php deleted file mode 100644 index f5310f0f..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/Synthesizers/Synth.php +++ /dev/null @@ -1,66 +0,0 @@ -$key; - } - - function __call($method, $params) { - if ($method === 'dehydrate') { - throw new \Exception('You must define a "dehydrate" method'); - } - - if ($method === 'hydrate') { - throw new \Exception('You must define a "hydrate" method'); - } - - if ($method === 'hydrateFromType') { - throw new \Exception('You must define a "hydrate" method'); - } - - if ($method === 'get') { - throw new \Exception('This synth doesn\'t support getting properties: '.get_class($this)); - } - - if ($method === 'set') { - throw new \Exception('This synth doesn\'t support setting properties: '.get_class($this)); - } - - if ($method === 'unset') { - throw new \Exception('This synth doesn\'t support unsetting properties: '.get_class($this)); - } - - if ($method === 'call') { - throw new \Exception('This synth doesn\'t support calling methods: '.get_class($this)); - } - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/ViewContext.php b/vendor/livewire/livewire/src/Mechanisms/HandleComponents/ViewContext.php deleted file mode 100644 index c6464114..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/HandleComponents/ViewContext.php +++ /dev/null @@ -1,35 +0,0 @@ -slots = $factory->slots; - $this->pushes = $factory->pushes; - $this->prepends = $factory->prepends; - $this->sections = $factory->sections; - } - - function mergeIntoNewEnvironment($__env) - { - $factory = invade($__env); - - $factory->slots = $this->slots; - $factory->pushes = $this->pushes; - $factory->prepends = $this->prepends; - $factory->sections = $this->sections; - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php b/vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php deleted file mode 100644 index bbfb5220..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/HandleRequests/HandleRequests.php +++ /dev/null @@ -1,103 +0,0 @@ -setUpdateRoute(function ($handle) { - return Route::post('/livewire/update', $handle)->middleware('web'); - }); - - $this->skipRequestPayloadTamperingMiddleware(); - } - - function getUpdateUri() - { - return (string) str( - route($this->updateRoute->getName(), [], false) - )->start('/'); - } - - function skipRequestPayloadTamperingMiddleware() - { - \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::skipWhen(function () { - return $this->isLivewireRequest(); - }); - - \Illuminate\Foundation\Http\Middleware\TrimStrings::skipWhen(function () { - return $this->isLivewireRequest(); - }); - } - - function setUpdateRoute($callback) - { - $route = $callback([self::class, 'handleUpdate']); - - // Append `livewire.update` to the existing name, if any. - if (! str($route->getName())->endsWith('livewire.update')) { - $route->name('livewire.update'); - } - - $this->updateRoute = $route; - } - - function isLivewireRequest() - { - return request()->hasHeader('X-Livewire'); - } - - function isLivewireRoute() - { - // @todo: Rename this back to `isLivewireRequest` once the need for it in tests has been fixed. - $route = request()->route(); - - if (! $route) return false; - - /* - * Check to see if route name ends with `livewire.update`, as if - * a custom update route is used and they add a name, then when - * we call `->name('livewire.update')` on the route it will - * suffix the existing name with `livewire.update`. - */ - return $route->named('*livewire.update'); - } - - function handleUpdate() - { - $components = request('components'); - - $responses = []; - - foreach ($components as $component) { - $snapshot = json_decode($component['snapshot'], associative: true); - $updates = $component['updates']; - $calls = $component['calls']; - - [ $snapshot, $effects ] = app('livewire')->update($snapshot, $updates, $calls); - - $responses[] = [ - 'snapshot' => json_encode($snapshot), - 'effects' => $effects, - ]; - } - - $response = [ - 'components' => $responses, - 'assets' => SupportScriptsAndAssets::getAssets(), - ]; - - $finish = trigger('profile.response', $response); - - return $finish($response); - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/Mechanism.php b/vendor/livewire/livewire/src/Mechanisms/Mechanism.php deleted file mode 100644 index ad5a1f6b..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/Mechanism.php +++ /dev/null @@ -1,20 +0,0 @@ -instance(static::class, $this); - } - - function boot() - { - // - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/PersistentMiddleware/PersistentMiddleware.php b/vendor/livewire/livewire/src/Mechanisms/PersistentMiddleware/PersistentMiddleware.php deleted file mode 100644 index 2dcb3292..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/PersistentMiddleware/PersistentMiddleware.php +++ /dev/null @@ -1,175 +0,0 @@ -extractPathAndMethodFromRequest(); - - $context->addMemo('path', $path); - $context->addMemo('method', $method); - }); - - on('snapshot-verified', function ($snapshot) { - // Only apply middleware to requests hitting the Livewire update endpoint, and not any fake requests such as a test. - if (! app(HandleRequests::class)->isLivewireRoute()) return; - - $this->extractPathAndMethodFromSnapshot($snapshot); - - $this->applyPersistentMiddleware(); - }); - - on('flush-state', function() { - // Only flush these at the end of a full request, so that child components have access to this data. - $this->path = null; - $this->method = null; - }); - } - - function addPersistentMiddleware($middleware) - { - static::$persistentMiddleware = Router::uniqueMiddleware(array_merge(static::$persistentMiddleware, (array) $middleware)); - } - - function setPersistentMiddleware($middleware) - { - static::$persistentMiddleware = Router::uniqueMiddleware((array) $middleware); - } - - function getPersistentMiddleware() - { - return static::$persistentMiddleware; - } - - protected function extractPathAndMethodFromRequest() - { - if (app(HandleRequests::class)->isLivewireRoute()) { - return [$this->path, $this->method]; - } - - return [request()->path(), request()->method()]; - } - - protected function extractPathAndMethodFromSnapshot($snapshot) - { - if ( - ! isset($snapshot['memo']['path']) - || ! isset($snapshot['memo']['method']) - ) return; - - // Store these locally, so dynamically added child components can use this data. - $this->path = $snapshot['memo']['path']; - $this->method = $snapshot['memo']['method']; - } - - protected function applyPersistentMiddleware() - { - $request = $this->makeFakeRequest(); - - $middleware = $this->getApplicablePersistentMiddleware($request); - - // Only send through pipeline if there are middleware found - if (is_null($middleware)) return; - - Utils::applyMiddleware($request, $middleware); - } - - protected function makeFakeRequest() - { - $originalPath = $this->formatPath($this->path); - $originalMethod = $this->method; - - $currentPath = $this->formatPath(request()->path()); - - // Clone server bag to ensure changes below don't overwrite the original. - $serverBag = clone request()->server; - - // Replace the Livewire endpoint path with the path from the original request. - $serverBag->set( - 'REQUEST_URI', - str_replace($currentPath, $originalPath, $serverBag->get('REQUEST_URI')) - ); - - $serverBag->set('REQUEST_METHOD', $originalMethod); - - /** - * Make the fake request from the current request with path and method changed so - * all other request data, such as headers, are available in the fake request, - * but merge in the new server bag with the updated `REQUEST_URI`. - */ - $request = request()->duplicate( - server: $serverBag->all() - ); - - return $request; - } - - protected function formatPath($path) - { - return '/' . ltrim($path, '/'); - } - - protected function getApplicablePersistentMiddleware($request) - { - $route = $this->getRouteFromRequest($request); - - if (! $route) return []; - - $middleware = app('router')->gatherRouteMiddleware($route); - - return $this->filterMiddlewareByPersistentMiddleware($middleware); - } - - protected function getRouteFromRequest($request) - { - $route = app('router')->getRoutes()->match($request); - - $request->setRouteResolver(fn() => $route); - - return $route; - } - - protected function filterMiddlewareByPersistentMiddleware($middleware) - { - $middleware = collect($middleware); - - $persistentMiddleware = collect(app(PersistentMiddleware::class)->getPersistentMiddleware()); - - return $middleware - ->filter(function ($value, $key) use ($persistentMiddleware) { - return $persistentMiddleware->contains(function($iValue, $iKey) use ($value) { - // Some middlewares can be closures. - if (! is_string($value)) return false; - - // Ensure any middleware arguments aren't included in the comparison - return Str::before($value, ':') == $iValue; - }); - }) - ->values() - ->all(); - } -} diff --git a/vendor/livewire/livewire/src/Mechanisms/RenderComponent.php b/vendor/livewire/livewire/src/Mechanisms/RenderComponent.php deleted file mode 100644 index 22b2ecb0..00000000 --- a/vendor/livewire/livewire/src/Mechanisms/RenderComponent.php +++ /dev/null @@ -1,49 +0,0 @@ -generate(); - $key = "'{$key}'"; - } - - return <<mount(\$__name, \$__params, $key, \$__slots ?? [], get_defined_vars()); - -echo \$__html; - -unset(\$__html); -unset(\$__name); -unset(\$__params); -unset(\$__split); -if (isset(\$__slots)) unset(\$__slots); -?> -EOT; - } -} diff --git a/vendor/livewire/livewire/src/Pipe.php b/vendor/livewire/livewire/src/Pipe.php deleted file mode 100644 index 4164962a..00000000 --- a/vendor/livewire/livewire/src/Pipe.php +++ /dev/null @@ -1,36 +0,0 @@ -target = $target; - } - - function __invoke(...$params) { - if (empty($params)) return $this->target; - - [ $before, $through, $after ] = [ [], null, [] ]; - - foreach ($params as $key => $param) { - if (! $through) { - if (is_callable($param)) $through = $param; - - else $before[$key] = $param; - } else { - $after[$key] = $param; - } - } - - $params = [ ...$before, $this->target, ...$after ]; - - $this->target = $through(...$params); - - return $this; - } -} - diff --git a/vendor/livewire/livewire/src/Transparency.php b/vendor/livewire/livewire/src/Transparency.php deleted file mode 100644 index ddb77765..00000000 --- a/vendor/livewire/livewire/src/Transparency.php +++ /dev/null @@ -1,44 +0,0 @@ -target; - } - - function offsetExists(mixed $offset): bool - { - return isset($this->target[$offset]); - } - - function offsetGet(mixed $offset): mixed - { - return $this->target[$offset]; - } - - function offsetSet(mixed $offset, mixed $value): void - { - $this->target[$offset] = $value; - } - - function offsetUnset(mixed $offset): void - { - unset($this->target[$offset]); - } - - function getIterator(): Traversable - { - return (function () { - foreach ($this->target as $key => $value) { - yield $key => $value; - } - })(); - } -} diff --git a/vendor/livewire/livewire/src/WireDirective.php b/vendor/livewire/livewire/src/WireDirective.php deleted file mode 100644 index 80e5918a..00000000 --- a/vendor/livewire/livewire/src/WireDirective.php +++ /dev/null @@ -1,59 +0,0 @@ -name; - } - - public function directive() - { - return $this->directive; - } - - public function value() - { - return $this->value; - } - - public function modifiers() - { - return str($this->directive) - ->replace("wire:{$this->name}", '') - ->explode('.') - ->filter()->values(); - } - - public function hasModifier($modifier) - { - return $this->modifiers()->contains($modifier); - } - - public function toHtml() - { - return (new ComponentAttributeBag([$this->directive => $this->value]))->toHtml(); - } - - public function toString() - { - return (string) $this; - } - - public function __toString() - { - return (string) $this->value; - } -} diff --git a/vendor/livewire/livewire/src/Wireable.php b/vendor/livewire/livewire/src/Wireable.php deleted file mode 100644 index ad4d21d4..00000000 --- a/vendor/livewire/livewire/src/Wireable.php +++ /dev/null @@ -1,10 +0,0 @@ -fallback = $fallback; - - return $this; - } - - function __call($method, $params) - { - if (! method_exists($this->target, $method)) return value($this->fallback); - - try { - return ImplicitlyBoundMethod::call(app(), [$this->target, $method], $params); - } catch (\Throwable $e) { - $shouldPropagate = true; - - $stopPropagation = function () use (&$shouldPropagate) { - $shouldPropagate = false; - }; - - trigger('exception', $this->target, $e, $stopPropagation); - - $shouldPropagate && throw $e; - } - } -} - - - - diff --git a/vendor/livewire/livewire/src/helpers.php b/vendor/livewire/livewire/src/helpers.php deleted file mode 100644 index e815f848..00000000 --- a/vendor/livewire/livewire/src/helpers.php +++ /dev/null @@ -1,170 +0,0 @@ -obj = $obj; - $this->reflected = new ReflectionClass($obj); - } - - public function &__get($name) - { - $getProperty = function &() use ($name) { - return $this->{$name}; - }; - - $getProperty = $getProperty->bindTo($this->obj, get_class($this->obj)); - - return $getProperty(); - } - - public function __set($name, $value) - { - $setProperty = function () use ($name, &$value) { - $this->{$name} = $value; - }; - - $setProperty = $setProperty->bindTo($this->obj, get_class($this->obj)); - - $setProperty(); - } - - public function __call($name, $params) - { - $method = $this->reflected->getMethod($name); - - $method->setAccessible(true); - - return $method->invoke($this->obj, ...$params); - } - }; -} - -function once($fn) -{ - $hasRun = false; - - return function (...$params) use ($fn, &$hasRun) { - if ($hasRun) return; - - $hasRun = true; - - return $fn(...$params); - }; -} - -function of(...$params) -{ - return $params; -} - -function revert(&$variable) -{ - $cache = $variable; - - return function () use (&$variable, $cache) { - $variable = $cache; - }; -} - -function wrap($subject) { - return new Wrapped($subject); -} - -function pipe($subject) { - return new Pipe($subject); -} - -function trigger($name, ...$params) { - return app(\Livewire\EventBus::class)->trigger($name, ...$params); -} - -function on($name, $callback) { - return app(\Livewire\EventBus::class)->on($name, $callback); -} - -function after($name, $callback) { - return app(\Livewire\EventBus::class)->after($name, $callback); -} - -function before($name, $callback) { - return app(\Livewire\EventBus::class)->before($name, $callback); -} - -function off($name, $callback) { - return app(\Livewire\EventBus::class)->off($name, $callback); -} - -function memoize($target) { - static $memo = new \WeakMap; - - return new class ($target, $memo) { - function __construct( - protected $target, - protected &$memo, - ) {} - - function __call($method, $params) - { - $this->memo[$this->target] ??= []; - - $signature = $method . crc32(json_encode($params)); - - return $this->memo[$this->target][$signature] - ??= $this->target->$method(...$params); - } - }; -} - -function store($instance = null) -{ - if (! $instance) $instance = app(\Livewire\Mechanisms\DataStore::class); - - return new class ($instance) { - function __construct(protected $instance) {} - - function get($key, $default = null) { - return app(\Livewire\Mechanisms\DataStore::class)->get($this->instance, $key, $default); - } - - function set($key, $value) { - return app(\Livewire\Mechanisms\DataStore::class)->set($this->instance, $key, $value); - } - - function push($key, $value, $iKey = null) - { - return app(\Livewire\Mechanisms\DataStore::class)->push($this->instance, $key, $value, $iKey); - } - - function find($key, $iKey = null, $default = null) - { - return app(\Livewire\Mechanisms\DataStore::class)->find($this->instance, $key, $iKey, $default); - } - - function has($key, $iKey = null) - { - return app(\Livewire\Mechanisms\DataStore::class)->has($this->instance, $key, $iKey); - } - }; -} diff --git a/vendor/masterminds/html5/CREDITS b/vendor/masterminds/html5/CREDITS deleted file mode 100644 index c2dbc4b6..00000000 --- a/vendor/masterminds/html5/CREDITS +++ /dev/null @@ -1,11 +0,0 @@ -Matt Butcher [technosophos] (lead) -Matt Farina [mattfarina] (lead) -Asmir Mustafic [goetas] (contributor) -Edward Z. Yang [ezyang] (contributor) -Geoffrey Sneddon [gsnedders] (contributor) -Kukhar Vasily [ngreduce] (contributor) -Rune Christensen [MrElectronic] (contributor) -Mišo Belica [miso-belica] (contributor) -Asmir Mustafic [goetas] (contributor) -KITAITI Makoto [KitaitiMakoto] (contributor) -Jacob Floyd [cognifloyd] (contributor) diff --git a/vendor/masterminds/html5/LICENSE.txt b/vendor/masterminds/html5/LICENSE.txt deleted file mode 100644 index 3c275b54..00000000 --- a/vendor/masterminds/html5/LICENSE.txt +++ /dev/null @@ -1,66 +0,0 @@ -## HTML5-PHP License - -Copyright (c) 2013 The Authors of HTML5-PHP - -Matt Butcher - mattbutcher@google.com -Matt Farina - matt@mattfarina.com -Asmir Mustafic - goetas@gmail.com - -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. - -## HTML5Lib License - -Portions of this are based on html5lib's PHP version, which was a -sub-project of html5lib. The following is the list of contributors from -html5lib: - -html5lib: - -Copyright (c) 2006-2009 The Authors - -Contributors: -James Graham - jg307@cam.ac.uk -Anne van Kesteren - annevankesteren@gmail.com -Lachlan Hunt - lachlan.hunt@lachy.id.au -Matt McDonald - kanashii@kanashii.ca -Sam Ruby - rubys@intertwingly.net -Ian Hickson (Google) - ian@hixie.ch -Thomas Broyer - t.broyer@ltgt.net -Jacques Distler - distler@golem.ph.utexas.edu -Henri Sivonen - hsivonen@iki.fi -Adam Barth - abarth@webkit.org -Eric Seidel - eric@webkit.org -The Mozilla Foundation (contributions from Henri Sivonen since 2008) -David Flanagan (Mozilla) - dflanagan@mozilla.com - -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/vendor/masterminds/html5/README.md b/vendor/masterminds/html5/README.md deleted file mode 100644 index e80dec50..00000000 --- a/vendor/masterminds/html5/README.md +++ /dev/null @@ -1,270 +0,0 @@ -> # UKRAINE NEEDS YOUR HELP NOW! -> -> On 24 February 2022, Russian [President Vladimir Putin ordered an invasion of Ukraine by Russian Armed Forces](https://www.bbc.com/news/world-europe-60504334). -> -> Your support is urgently needed. -> -> - Donate to the volunteers. Here is the volunteer fund helping the Ukrainian army to provide all the necessary equipment: -> https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi-armiyi or https://savelife.in.ua/en/donate/ -> - Triple-check social media sources. Russian disinformation is attempting to coverup and distort the reality in Ukraine. -> - Help Ukrainian refugees who are fleeing Russian attacks and shellings: https://www.globalcitizen.org/en/content/ways-to-help-ukraine-conflict/ -> - Put pressure on your political representatives to provide help to Ukraine. -> - Believe in the Ukrainian people, they will not surrender, they don't have another Ukraine. -> -> THANK YOU! ----- - -# HTML5-PHP - -HTML5 is a standards-compliant HTML5 parser and writer written entirely in PHP. -It is stable and used in many production websites, and has -well over [five million downloads](https://packagist.org/packages/masterminds/html5). - -HTML5 provides the following features. - -- An HTML5 serializer -- Support for PHP namespaces -- Composer support -- Event-based (SAX-like) parser -- A DOM tree builder -- Interoperability with [QueryPath](https://github.com/technosophos/querypath) -- Runs on **PHP** 5.3.0 or newer - -[![Build Status](https://travis-ci.org/Masterminds/html5-php.png?branch=master)](https://travis-ci.org/Masterminds/html5-php) -[![Latest Stable Version](https://poser.pugx.org/masterminds/html5/v/stable.png)](https://packagist.org/packages/masterminds/html5) -[![Code Coverage](https://scrutinizer-ci.com/g/Masterminds/html5-php/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/Masterminds/html5-php/?branch=master) -[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/Masterminds/html5-php/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/Masterminds/html5-php/?branch=master) -[![Stability: Sustained](https://masterminds.github.io/stability/sustained.svg)](https://masterminds.github.io/stability/sustained.html) - -## Installation - -Install HTML5-PHP using [composer](http://getcomposer.org/). - -By adding the `masterminds/html5` dependency to your `composer.json` file: - -```json -{ - "require" : { - "masterminds/html5": "^2.0" - }, -} -``` - -By invoking require command via composer executable: - -```bash -composer require masterminds/html5 -``` - -## Basic Usage - -HTML5-PHP has a high-level API and a low-level API. - -Here is how you use the high-level `HTML5` library API: - -```php - - - TEST - - -

    Hello World

    -

    This is a test of the HTML5 parser.

    - - -HERE; - -// Parse the document. $dom is a DOMDocument. -$html5 = new HTML5(); -$dom = $html5->loadHTML($html); - -// Render it as HTML5: -print $html5->saveHTML($dom); - -// Or save it to a file: -$html5->save($dom, 'out.html'); -``` - -The `$dom` created by the parser is a full `DOMDocument` object. And the -`save()` and `saveHTML()` methods will take any DOMDocument. - -### Options - -It is possible to pass in an array of configuration options when loading -an HTML5 document. - -```php -// An associative array of options -$options = array( - 'option_name' => 'option_value', -); - -// Provide the options to the constructor -$html5 = new HTML5($options); - -$dom = $html5->loadHTML($html); -``` - -The following options are supported: - -* `encode_entities` (boolean): Indicates that the serializer should aggressively - encode characters as entities. Without this, it only encodes the bare - minimum. -* `disable_html_ns` (boolean): Prevents the parser from automatically - assigning the HTML5 namespace to the DOM document. This is for - non-namespace aware DOM tools. -* `target_document` (\DOMDocument): A DOM document that will be used as the - destination for the parsed nodes. -* `implicit_namespaces` (array): An assoc array of namespaces that should be - used by the parser. Name is tag prefix, value is NS URI. - -## The Low-Level API - -This library provides the following low-level APIs that you can use to -create more customized HTML5 tools: - -- A SAX-like event-based parser that you can hook into for special kinds -of parsing. -- A flexible error-reporting mechanism that can be tuned to document -syntax checking. -- A DOM implementation that uses PHP's built-in DOM library. - -The unit tests exercise each piece of the API, and every public function -is well-documented. - -### Parser Design - -The parser is designed as follows: - -- The `Scanner` handles scanning on behalf of the parser. -- The `Tokenizer` requests data off of the scanner, parses it, clasifies -it, and sends it to an `EventHandler`. It is a *recursive descent parser.* -- The `EventHandler` receives notifications and data for each specific -semantic event that occurs during tokenization. -- The `DOMBuilder` is an `EventHandler` that listens for tokenizing -events and builds a document tree (`DOMDocument`) based on the events. - -### Serializer Design - -The serializer takes a data structure (the `DOMDocument`) and transforms -it into a character representation -- an HTML5 document. - -The serializer is broken into three parts: - -- The `OutputRules` contain the rules to turn DOM elements into strings. The -rules are an implementation of the interface `RulesInterface` allowing for -different rule sets to be used. -- The `Traverser`, which is a special-purpose tree walker. It visits -each node node in the tree and uses the `OutputRules` to transform the node -into a string. -- `HTML5` manages the `Traverser` and stores the resultant data -in the correct place. - -The serializer (`save()`, `saveHTML()`) follows the -[section 8.9 of the HTML 5.0 spec](http://www.w3.org/TR/2012/CR-html5-20121217/syntax.html#serializing-html-fragments). -So tags are serialized according to these rules: - -- A tag with children: <foo>CHILDREN</foo> -- A tag that cannot have content: <foo> (no closing tag) -- A tag that could have content, but doesn't: <foo></foo> - -## Known Issues (Or, Things We Designed Against the Spec) - -Please check the issue queue for a full list, but the following are -issues known issues that are not presently on the roadmap: - -- Namespaces: HTML5 only [supports a selected list of namespaces](http://www.w3.org/TR/html5/infrastructure.html#namespaces) - and they do not operate in the same way as XML namespaces. A `:` has no special - meaning. - By default the parser does not support XML style namespaces via `:`; - to enable the XML namespaces see the [XML Namespaces section](#xml-namespaces) -- Scripts: This parser does not contain a JavaScript or a CSS - interpreter. While one may be supplied, not all features will be - supported. -- Reentrance: The current parser is not re-entrant. (Thus you can't pause - the parser to modify the HTML string mid-parse.) -- Validation: The current tree builder is **not** a validating parser. - While it will correct some HTML, it does not check that the HTML - conforms to the standard. (Should you wish, you can build a validating - parser by extending DOMTree or building your own EventHandler - implementation.) - * There is limited support for insertion modes. - * Some autocorrection is done automatically. - * Per the spec, many legacy tags are admitted and correctly handled, - even though they are technically not part of HTML5. -- Attribute names and values: Due to the implementation details of the - PHP implementation of DOM, attribute names that do not follow the - XML 1.0 standard are not inserted into the DOM. (Effectively, they - are ignored.) If you've got a clever fix for this, jump in! -- Processor Instructions: The HTML5 spec does not allow processor - instructions. We do. Since this is a server-side library, we think - this is useful. And that means, dear reader, that in some cases you - can parse the HTML from a mixed PHP/HTML document. This, however, - is an incidental feature, not a core feature. -- HTML manifests: Unsupported. -- PLAINTEXT: Unsupported. -- Adoption Agency Algorithm: Not yet implemented. (8.2.5.4.7) - -## XML Namespaces - -To use XML style namespaces you have to configure well the main `HTML5` instance. - -```php -use Masterminds\HTML5; -$html = new HTML5(array( - "xmlNamespaces" => true -)); - -$dom = $html->loadHTML(''); - -$dom->documentElement->namespaceURI; // http://www.example.com - -``` - -You can also add some default prefixes that will not require the namespace declaration, -but its elements will be namespaced. - -```php -use Masterminds\HTML5; -$html = new HTML5(array( - "implicitNamespaces"=>array( - "t"=>"http://www.example.com" - ) -)); - -$dom = $html->loadHTML(''); - -$dom->documentElement->namespaceURI; // http://www.example.com - -``` - -## Thanks to... - -The dedicated (and patient) contributors of patches small and large, -who have already made this library better.See the CREDITS file for -a list of contributors. - -We owe a huge debt of gratitude to the original authors of html5lib. - -While not much of the original parser remains, we learned a lot from -reading the html5lib library. And some pieces remain here. In -particular, much of the UTF-8 and Unicode handling is derived from the -html5lib project. - -## License - -This software is released under the MIT license. The original html5lib -library was also released under the MIT license. - -See LICENSE.txt - -Certain files contain copyright assertions by specific individuals -involved with html5lib. Those have been retained where appropriate. diff --git a/vendor/masterminds/html5/RELEASE.md b/vendor/masterminds/html5/RELEASE.md deleted file mode 100644 index 33007ed6..00000000 --- a/vendor/masterminds/html5/RELEASE.md +++ /dev/null @@ -1,157 +0,0 @@ -# Release Notes - -2.7.6 (2021-08-18) - -- #218: Address comment handling issues - -2.7.5 (2021-07-01) - -- #204: Travis: Enable tests on PHP 8.0 -- #207: Fix PHP 8.1 deprecations - -2.7.4 (2020-10-01) - -- #191: Fix travisci build -- #195: Add .gitattributes file with export-ignore rules -- #194: Fix query parameter parsed as character entity - -2.7.3 (2020-07-05) - -- #190: mitigate cyclic reference between output rules and the traverser objects - -2.7.2 (2020-07-01) - -- #187: Fixed memory leak in HTML5::saveHTML() -- #186: Add special case for end tag
    - -2.7.1 (2020-06-14) - -- #171: add PHP 7.4 job -- #178: Prevent infinite loop on un-terminated entity declaration at EOF - -2.7.0 (2019-07-25) - -- #164: Drop HHVM support -- #168: Set default encoding in the DOMDocument object - -2.6.0 (2019-03-10) - -- #163: Allow to pass a charset to the Scanner - -2.5.0 (2018-12-27) - -- #162, #161, #155, #154, #153, #151: big performance improvements -- #156: fixed typos -- #160: adopt and enforce code style -- #159: remove deprecated php unit base test case -- #150: backport changes from old master branch - -2.4.0 (2018-11-17) - -- #148: Improve performance by moving sequence matching -- #147: Improve the Tokenizer performance -- #146: Improve performance by relying on a native string instead of InputStream -- #144: Add DOM extension in composer.json -- #145: Add more extensions on composer.json, improve phpdocs and remove dead code -- #143: Remove experimental comment - -2.3.1 (2018-10-18) - -- #121: Audio is not a block tag (fixed by #141) -- #136: Handle illegal self-closing according to spec (fixed by #137) -- #141: Minor fixes in the README - -2.3.0 (2017-09-04) - -- #129: image within inline svg breaks system (fixed by #133) -- #131: ² does not work (fixed by #132) -- #134: Improve tokenizer performance by 20% (alternative version of #130 thanks to @MichaelHeerklotz) -- #135: Raw & in attributes - -2.2.2 (2016-09-22) - -- #116: In XML mode, tags are case sensitive -- #115: Fix PHP Notice in OutputRules -- #112: fix parsing of options of an optgroup -- #111: Adding test for the address tag - -2.2.1 (2016-05-10) - -- #109: Fixed issue where address tag could be written without closing tag (thanks sylus) - -2.2.0 (2016-04-11) - -- #105: Enable composer cache (for CI/CD) -- #100: Use mb_substitute_character inset of ini_set for environments where ini_set is disable (e.g., shared hosting) -- #98: Allow link, meta, style tags in noscript tags -- #96: Fixed xml:href on svgs that use the "use" breaking -- #94: Counting UTF8 characters performance improvement -- #93: Use newer version of coveralls package -- #90: Remove duplicate test -- #87: Allow multiple root nodes - -2.1.2 (2015-06-07) -- #82: Support for PHP7 -- #84: Improved boolean attribute handling - -2.1.1 (2015-03-23) -- #78: Fixes bug where unmatched entity like string drops everything after &. - -2.1.0 (2015-02-01) -- #74: Added `disable_html_ns` and `target_doc` dom parsing options -- Unified option names -- #73: Fixed alphabet, ß now can be detected -- #75 and #76: Allow whitespace in RCDATA tags -- #77: Fixed parsing blunder for json embeds -- #72: Add options to HTML methods - -2.0.2 (2014-12-17) -- #50: empty document handling -- #63: tags with strange capitalization -- #65: dashes and underscores as allowed characters in tag names -- #68: Fixed issue with non-inline elements inside inline containers - -2.0.1 (2014-09-23) -- #59: Fixed issue parsing some fragments. -- #56: Incorrectly saw 0 as empty string -- Sami as new documentation generator - -2.0.0 (2014-07-28) -- #53: Improved boolean attributes handling -- #52: Facebook HHVM compatibility -- #48: Adopted PSR-2 as coding standard -- #47: Moved everything to Masterminds namespace -- #45: Added custom namespaces -- #44: Added support to XML-style namespaces -- #37: Refactored HTML5 class removing static methods - -1.0.5 (2014-06-10) -- #38: Set the dev-master branch as the 1.0.x branch for composer (goetas) -- #34: Tests use PSR-4 for autoloading. (goetas) -- #40, #41: Fix entity handling in RCDATA sections. (KitaitiMakoto) -- #32: Fixed issue where wharacter references were being incorrectly encoded in style tags. - -1.0.4 (2014-04-29) -- #30/#31 Don't throw an exception for invalid tag names. - -1.0.3 (2014-02-28) -- #23 and #29: Ignore attributes with illegal chars in name for the PHP DOM. - -1.0.2 (2014-02-12) -- #23: Handle missing tag close in attribute list. -- #25: Fixed text escaping in the serializer (HTML% 8.3). -- #27: Fixed tests on Windows: changed "\n" -> PHP_EOL. -- #28: Fixed infinite loop for char "&" in unquoted attribute in parser. -- #26: Updated tag name case handling to deal with uppercase usage. -- #24: Newlines and tabs are allowed inside quoted attributes (HTML5 8.2.4). -- Fixed Travis CI testing. - -1.0.1 (2013-11-07) -- CDATA encoding is improved. (Non-standard; Issue #19) -- Some parser rules were not returning the new current element. (Issue #20) -- Added, to the README, details on code test coverage and to packagist version. -- Fixed processor instructions. -- Improved test coverage and documentation coverage. - -1.0.0 (2013-10-02) -- Initial release. diff --git a/vendor/masterminds/html5/UPGRADING.md b/vendor/masterminds/html5/UPGRADING.md deleted file mode 100644 index 76e3a19b..00000000 --- a/vendor/masterminds/html5/UPGRADING.md +++ /dev/null @@ -1,21 +0,0 @@ -From 1.x to 2.x -================= - -- All classes uses `Masterminds` namespace. -- All public static methods has been removed from `HTML5` class and the general API to access the HTML5 functionalities has changed. - - Before: - - $dom = \HTML5::loadHTML('....'); - \HTML5::saveHTML($dom); - - After: - - use Masterminds\HTML5; - - $html5 = new HTML5(); - - $dom = $html5->loadHTML('....'); - echo $html5->saveHTML($dom); - - diff --git a/vendor/masterminds/html5/bin/entities.php b/vendor/masterminds/html5/bin/entities.php deleted file mode 100644 index 56323a34..00000000 --- a/vendor/masterminds/html5/bin/entities.php +++ /dev/null @@ -1,26 +0,0 @@ - $obj) { - $sname = substr($name, 1, -1); - $table[$sname] = $obj->characters; -} - -echo '=5.3.0" - }, - "require-dev": { - "phpunit/phpunit" : "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8" - }, - "autoload": { - "psr-4": {"Masterminds\\": "src"} - }, - "autoload-dev": { - "psr-4": {"Masterminds\\HTML5\\Tests\\": "test/HTML5"} - }, - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - } -} diff --git a/vendor/masterminds/html5/src/HTML5.php b/vendor/masterminds/html5/src/HTML5.php deleted file mode 100644 index c857145f..00000000 --- a/vendor/masterminds/html5/src/HTML5.php +++ /dev/null @@ -1,246 +0,0 @@ - false, - - // Prevents the parser from automatically assigning the HTML5 namespace to the DOM document. - 'disable_html_ns' => false, - ); - - protected $errors = array(); - - public function __construct(array $defaultOptions = array()) - { - $this->defaultOptions = array_merge($this->defaultOptions, $defaultOptions); - } - - /** - * Get the current default options. - * - * @return array - */ - public function getOptions() - { - return $this->defaultOptions; - } - - /** - * Load and parse an HTML file. - * - * This will apply the HTML5 parser, which is tolerant of many - * varieties of HTML, including XHTML 1, HTML 4, and well-formed HTML - * 3. Note that in these cases, not all of the old data will be - * preserved. For example, XHTML's XML declaration will be removed. - * - * The rules governing parsing are set out in the HTML 5 spec. - * - * @param string|resource $file The path to the file to parse. If this is a resource, it is - * assumed to be an open stream whose pointer is set to the first - * byte of input. - * @param array $options Configuration options when parsing the HTML. - * - * @return \DOMDocument A DOM document. These object type is defined by the libxml - * library, and should have been included with your version of PHP. - */ - public function load($file, array $options = array()) - { - // Handle the case where file is a resource. - if (is_resource($file)) { - return $this->parse(stream_get_contents($file), $options); - } - - return $this->parse(file_get_contents($file), $options); - } - - /** - * Parse a HTML Document from a string. - * - * Take a string of HTML 5 (or earlier) and parse it into a - * DOMDocument. - * - * @param string $string A html5 document as a string. - * @param array $options Configuration options when parsing the HTML. - * - * @return \DOMDocument A DOM document. DOM is part of libxml, which is included with - * almost all distribtions of PHP. - */ - public function loadHTML($string, array $options = array()) - { - return $this->parse($string, $options); - } - - /** - * Convenience function to load an HTML file. - * - * This is here to provide backwards compatibility with the - * PHP DOM implementation. It simply calls load(). - * - * @param string $file The path to the file to parse. If this is a resource, it is - * assumed to be an open stream whose pointer is set to the first - * byte of input. - * @param array $options Configuration options when parsing the HTML. - * - * @return \DOMDocument A DOM document. These object type is defined by the libxml - * library, and should have been included with your version of PHP. - */ - public function loadHTMLFile($file, array $options = array()) - { - return $this->load($file, $options); - } - - /** - * Parse a HTML fragment from a string. - * - * @param string $string the HTML5 fragment as a string - * @param array $options Configuration options when parsing the HTML - * - * @return \DOMDocumentFragment A DOM fragment. The DOM is part of libxml, which is included with - * almost all distributions of PHP. - */ - public function loadHTMLFragment($string, array $options = array()) - { - return $this->parseFragment($string, $options); - } - - /** - * Return all errors encountered into parsing phase. - * - * @return array - */ - public function getErrors() - { - return $this->errors; - } - - /** - * Return true it some errors were encountered into parsing phase. - * - * @return bool - */ - public function hasErrors() - { - return count($this->errors) > 0; - } - - /** - * Parse an input string. - * - * @param string $input - * @param array $options - * - * @return \DOMDocument - */ - public function parse($input, array $options = array()) - { - $this->errors = array(); - $options = array_merge($this->defaultOptions, $options); - $events = new DOMTreeBuilder(false, $options); - $scanner = new Scanner($input, !empty($options['encoding']) ? $options['encoding'] : 'UTF-8'); - $parser = new Tokenizer($scanner, $events, !empty($options['xmlNamespaces']) ? Tokenizer::CONFORMANT_XML : Tokenizer::CONFORMANT_HTML); - - $parser->parse(); - $this->errors = $events->getErrors(); - - return $events->document(); - } - - /** - * Parse an input stream where the stream is a fragment. - * - * Lower-level loading function. This requires an input stream instead - * of a string, file, or resource. - * - * @param string $input The input data to parse in the form of a string. - * @param array $options An array of options. - * - * @return \DOMDocumentFragment - */ - public function parseFragment($input, array $options = array()) - { - $options = array_merge($this->defaultOptions, $options); - $events = new DOMTreeBuilder(true, $options); - $scanner = new Scanner($input, !empty($options['encoding']) ? $options['encoding'] : 'UTF-8'); - $parser = new Tokenizer($scanner, $events, !empty($options['xmlNamespaces']) ? Tokenizer::CONFORMANT_XML : Tokenizer::CONFORMANT_HTML); - - $parser->parse(); - $this->errors = $events->getErrors(); - - return $events->fragment(); - } - - /** - * Save a DOM into a given file as HTML5. - * - * @param mixed $dom The DOM to be serialized. - * @param string|resource $file The filename to be written or resource to write to. - * @param array $options Configuration options when serializing the DOM. These include: - * - encode_entities: Text written to the output is escaped by default and not all - * entities are encoded. If this is set to true all entities will be encoded. - * Defaults to false. - */ - public function save($dom, $file, $options = array()) - { - $close = true; - if (is_resource($file)) { - $stream = $file; - $close = false; - } else { - $stream = fopen($file, 'wb'); - } - $options = array_merge($this->defaultOptions, $options); - $rules = new OutputRules($stream, $options); - $trav = new Traverser($dom, $stream, $rules, $options); - - $trav->walk(); - /* - * release the traverser to avoid cyclic references and allow PHP to free memory without waiting for gc_collect_cycles - */ - $rules->unsetTraverser(); - if ($close) { - fclose($stream); - } - } - - /** - * Convert a DOM into an HTML5 string. - * - * @param mixed $dom The DOM to be serialized. - * @param array $options Configuration options when serializing the DOM. These include: - * - encode_entities: Text written to the output is escaped by default and not all - * entities are encoded. If this is set to true all entities will be encoded. - * Defaults to false. - * - * @return string A HTML5 documented generated from the DOM. - */ - public function saveHTML($dom, $options = array()) - { - $stream = fopen('php://temp', 'wb'); - $this->save($dom, $stream, array_merge($this->defaultOptions, $options)); - - $html = stream_get_contents($stream, -1, 0); - - fclose($stream); - - return $html; - } -} diff --git a/vendor/masterminds/html5/src/HTML5/Elements.php b/vendor/masterminds/html5/src/HTML5/Elements.php deleted file mode 100644 index 1632dcfe..00000000 --- a/vendor/masterminds/html5/src/HTML5/Elements.php +++ /dev/null @@ -1,619 +0,0 @@ - 1, - 'abbr' => 1, - 'address' => 65, // NORMAL | BLOCK_TAG - 'area' => 9, // NORMAL | VOID_TAG - 'article' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'aside' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'audio' => 1, // NORMAL - 'b' => 1, - 'base' => 9, // NORMAL | VOID_TAG - 'bdi' => 1, - 'bdo' => 1, - 'blockquote' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'body' => 1, - 'br' => 9, // NORMAL | VOID_TAG - 'button' => 1, - 'canvas' => 65, // NORMAL | BLOCK_TAG - 'caption' => 1, - 'cite' => 1, - 'code' => 1, - 'col' => 9, // NORMAL | VOID_TAG - 'colgroup' => 1, - 'command' => 9, // NORMAL | VOID_TAG - // "data" => 1, // This is highly experimental and only part of the whatwg spec (not w3c). See https://developer.mozilla.org/en-US/docs/HTML/Element/data - 'datalist' => 1, - 'dd' => 65, // NORMAL | BLOCK_TAG - 'del' => 1, - 'details' => 17, // NORMAL | AUTOCLOSE_P, - 'dfn' => 1, - 'dialog' => 17, // NORMAL | AUTOCLOSE_P, - 'div' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'dl' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'dt' => 1, - 'em' => 1, - 'embed' => 9, // NORMAL | VOID_TAG - 'fieldset' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'figcaption' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'figure' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'footer' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'form' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'h1' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'h2' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'h3' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'h4' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'h5' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'h6' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'head' => 1, - 'header' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'hgroup' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'hr' => 73, // NORMAL | VOID_TAG - 'html' => 1, - 'i' => 1, - 'iframe' => 3, // NORMAL | TEXT_RAW - 'img' => 9, // NORMAL | VOID_TAG - 'input' => 9, // NORMAL | VOID_TAG - 'kbd' => 1, - 'ins' => 1, - 'keygen' => 9, // NORMAL | VOID_TAG - 'label' => 1, - 'legend' => 1, - 'li' => 1, - 'link' => 9, // NORMAL | VOID_TAG - 'map' => 1, - 'mark' => 1, - 'menu' => 17, // NORMAL | AUTOCLOSE_P, - 'meta' => 9, // NORMAL | VOID_TAG - 'meter' => 1, - 'nav' => 17, // NORMAL | AUTOCLOSE_P, - 'noscript' => 65, // NORMAL | BLOCK_TAG - 'object' => 1, - 'ol' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'optgroup' => 1, - 'option' => 1, - 'output' => 65, // NORMAL | BLOCK_TAG - 'p' => 209, // NORMAL | AUTOCLOSE_P | BLOCK_TAG | BLOCK_ONLY_INLINE - 'param' => 9, // NORMAL | VOID_TAG - 'pre' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'progress' => 1, - 'q' => 1, - 'rp' => 1, - 'rt' => 1, - 'ruby' => 1, - 's' => 1, - 'samp' => 1, - 'script' => 3, // NORMAL | TEXT_RAW - 'section' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'select' => 1, - 'small' => 1, - 'source' => 9, // NORMAL | VOID_TAG - 'span' => 1, - 'strong' => 1, - 'style' => 3, // NORMAL | TEXT_RAW - 'sub' => 1, - 'summary' => 17, // NORMAL | AUTOCLOSE_P, - 'sup' => 1, - 'table' => 65, // NORMAL | BLOCK_TAG - 'tbody' => 1, - 'td' => 1, - 'textarea' => 5, // NORMAL | TEXT_RCDATA - 'tfoot' => 65, // NORMAL | BLOCK_TAG - 'th' => 1, - 'thead' => 1, - 'time' => 1, - 'title' => 5, // NORMAL | TEXT_RCDATA - 'tr' => 1, - 'track' => 9, // NORMAL | VOID_TAG - 'u' => 1, - 'ul' => 81, // NORMAL | AUTOCLOSE_P | BLOCK_TAG - 'var' => 1, - 'video' => 1, - 'wbr' => 9, // NORMAL | VOID_TAG - - // Legacy? - 'basefont' => 8, // VOID_TAG - 'bgsound' => 8, // VOID_TAG - 'noframes' => 2, // RAW_TEXT - 'frame' => 9, // NORMAL | VOID_TAG - 'frameset' => 1, - 'center' => 16, - 'dir' => 16, - 'listing' => 16, // AUTOCLOSE_P - 'plaintext' => 48, // AUTOCLOSE_P | TEXT_PLAINTEXT - 'applet' => 0, - 'marquee' => 0, - 'isindex' => 8, // VOID_TAG - 'xmp' => 20, // AUTOCLOSE_P | VOID_TAG | RAW_TEXT - 'noembed' => 2, // RAW_TEXT - ); - - /** - * The MathML elements. - * See http://www.w3.org/wiki/MathML/Elements. - * - * In our case we are only concerned with presentation MathML and not content - * MathML. There is a nice list of this subset at https://developer.mozilla.org/en-US/docs/MathML/Element. - * - * @var array - */ - public static $mathml = array( - 'maction' => 1, - 'maligngroup' => 1, - 'malignmark' => 1, - 'math' => 1, - 'menclose' => 1, - 'merror' => 1, - 'mfenced' => 1, - 'mfrac' => 1, - 'mglyph' => 1, - 'mi' => 1, - 'mlabeledtr' => 1, - 'mlongdiv' => 1, - 'mmultiscripts' => 1, - 'mn' => 1, - 'mo' => 1, - 'mover' => 1, - 'mpadded' => 1, - 'mphantom' => 1, - 'mroot' => 1, - 'mrow' => 1, - 'ms' => 1, - 'mscarries' => 1, - 'mscarry' => 1, - 'msgroup' => 1, - 'msline' => 1, - 'mspace' => 1, - 'msqrt' => 1, - 'msrow' => 1, - 'mstack' => 1, - 'mstyle' => 1, - 'msub' => 1, - 'msup' => 1, - 'msubsup' => 1, - 'mtable' => 1, - 'mtd' => 1, - 'mtext' => 1, - 'mtr' => 1, - 'munder' => 1, - 'munderover' => 1, - ); - - /** - * The svg elements. - * - * The Mozilla documentation has a good list at https://developer.mozilla.org/en-US/docs/SVG/Element. - * The w3c list appears to be lacking in some areas like filter effect elements. - * That list can be found at http://www.w3.org/wiki/SVG/Elements. - * - * Note, FireFox appears to do a better job rendering filter effects than chrome. - * While they are in the spec I'm not sure how widely implemented they are. - * - * @var array - */ - public static $svg = array( - 'a' => 1, - 'altGlyph' => 1, - 'altGlyphDef' => 1, - 'altGlyphItem' => 1, - 'animate' => 1, - 'animateColor' => 1, - 'animateMotion' => 1, - 'animateTransform' => 1, - 'circle' => 1, - 'clipPath' => 1, - 'color-profile' => 1, - 'cursor' => 1, - 'defs' => 1, - 'desc' => 1, - 'ellipse' => 1, - 'feBlend' => 1, - 'feColorMatrix' => 1, - 'feComponentTransfer' => 1, - 'feComposite' => 1, - 'feConvolveMatrix' => 1, - 'feDiffuseLighting' => 1, - 'feDisplacementMap' => 1, - 'feDistantLight' => 1, - 'feFlood' => 1, - 'feFuncA' => 1, - 'feFuncB' => 1, - 'feFuncG' => 1, - 'feFuncR' => 1, - 'feGaussianBlur' => 1, - 'feImage' => 1, - 'feMerge' => 1, - 'feMergeNode' => 1, - 'feMorphology' => 1, - 'feOffset' => 1, - 'fePointLight' => 1, - 'feSpecularLighting' => 1, - 'feSpotLight' => 1, - 'feTile' => 1, - 'feTurbulence' => 1, - 'filter' => 1, - 'font' => 1, - 'font-face' => 1, - 'font-face-format' => 1, - 'font-face-name' => 1, - 'font-face-src' => 1, - 'font-face-uri' => 1, - 'foreignObject' => 1, - 'g' => 1, - 'glyph' => 1, - 'glyphRef' => 1, - 'hkern' => 1, - 'image' => 1, - 'line' => 1, - 'linearGradient' => 1, - 'marker' => 1, - 'mask' => 1, - 'metadata' => 1, - 'missing-glyph' => 1, - 'mpath' => 1, - 'path' => 1, - 'pattern' => 1, - 'polygon' => 1, - 'polyline' => 1, - 'radialGradient' => 1, - 'rect' => 1, - 'script' => 3, // NORMAL | RAW_TEXT - 'set' => 1, - 'stop' => 1, - 'style' => 3, // NORMAL | RAW_TEXT - 'svg' => 1, - 'switch' => 1, - 'symbol' => 1, - 'text' => 1, - 'textPath' => 1, - 'title' => 1, - 'tref' => 1, - 'tspan' => 1, - 'use' => 1, - 'view' => 1, - 'vkern' => 1, - ); - - /** - * Some attributes in SVG are case sensitive. - * - * This map contains key/value pairs with the key as the lowercase attribute - * name and the value with the correct casing. - */ - public static $svgCaseSensitiveAttributeMap = array( - 'attributename' => 'attributeName', - 'attributetype' => 'attributeType', - 'basefrequency' => 'baseFrequency', - 'baseprofile' => 'baseProfile', - 'calcmode' => 'calcMode', - 'clippathunits' => 'clipPathUnits', - 'contentscripttype' => 'contentScriptType', - 'contentstyletype' => 'contentStyleType', - 'diffuseconstant' => 'diffuseConstant', - 'edgemode' => 'edgeMode', - 'externalresourcesrequired' => 'externalResourcesRequired', - 'filterres' => 'filterRes', - 'filterunits' => 'filterUnits', - 'glyphref' => 'glyphRef', - 'gradienttransform' => 'gradientTransform', - 'gradientunits' => 'gradientUnits', - 'kernelmatrix' => 'kernelMatrix', - 'kernelunitlength' => 'kernelUnitLength', - 'keypoints' => 'keyPoints', - 'keysplines' => 'keySplines', - 'keytimes' => 'keyTimes', - 'lengthadjust' => 'lengthAdjust', - 'limitingconeangle' => 'limitingConeAngle', - 'markerheight' => 'markerHeight', - 'markerunits' => 'markerUnits', - 'markerwidth' => 'markerWidth', - 'maskcontentunits' => 'maskContentUnits', - 'maskunits' => 'maskUnits', - 'numoctaves' => 'numOctaves', - 'pathlength' => 'pathLength', - 'patterncontentunits' => 'patternContentUnits', - 'patterntransform' => 'patternTransform', - 'patternunits' => 'patternUnits', - 'pointsatx' => 'pointsAtX', - 'pointsaty' => 'pointsAtY', - 'pointsatz' => 'pointsAtZ', - 'preservealpha' => 'preserveAlpha', - 'preserveaspectratio' => 'preserveAspectRatio', - 'primitiveunits' => 'primitiveUnits', - 'refx' => 'refX', - 'refy' => 'refY', - 'repeatcount' => 'repeatCount', - 'repeatdur' => 'repeatDur', - 'requiredextensions' => 'requiredExtensions', - 'requiredfeatures' => 'requiredFeatures', - 'specularconstant' => 'specularConstant', - 'specularexponent' => 'specularExponent', - 'spreadmethod' => 'spreadMethod', - 'startoffset' => 'startOffset', - 'stddeviation' => 'stdDeviation', - 'stitchtiles' => 'stitchTiles', - 'surfacescale' => 'surfaceScale', - 'systemlanguage' => 'systemLanguage', - 'tablevalues' => 'tableValues', - 'targetx' => 'targetX', - 'targety' => 'targetY', - 'textlength' => 'textLength', - 'viewbox' => 'viewBox', - 'viewtarget' => 'viewTarget', - 'xchannelselector' => 'xChannelSelector', - 'ychannelselector' => 'yChannelSelector', - 'zoomandpan' => 'zoomAndPan', - ); - - /** - * Some SVG elements are case sensitive. - * This map contains these. - * - * The map contains key/value store of the name is lowercase as the keys and - * the correct casing as the value. - */ - public static $svgCaseSensitiveElementMap = array( - 'altglyph' => 'altGlyph', - 'altglyphdef' => 'altGlyphDef', - 'altglyphitem' => 'altGlyphItem', - 'animatecolor' => 'animateColor', - 'animatemotion' => 'animateMotion', - 'animatetransform' => 'animateTransform', - 'clippath' => 'clipPath', - 'feblend' => 'feBlend', - 'fecolormatrix' => 'feColorMatrix', - 'fecomponenttransfer' => 'feComponentTransfer', - 'fecomposite' => 'feComposite', - 'feconvolvematrix' => 'feConvolveMatrix', - 'fediffuselighting' => 'feDiffuseLighting', - 'fedisplacementmap' => 'feDisplacementMap', - 'fedistantlight' => 'feDistantLight', - 'feflood' => 'feFlood', - 'fefunca' => 'feFuncA', - 'fefuncb' => 'feFuncB', - 'fefuncg' => 'feFuncG', - 'fefuncr' => 'feFuncR', - 'fegaussianblur' => 'feGaussianBlur', - 'feimage' => 'feImage', - 'femerge' => 'feMerge', - 'femergenode' => 'feMergeNode', - 'femorphology' => 'feMorphology', - 'feoffset' => 'feOffset', - 'fepointlight' => 'fePointLight', - 'fespecularlighting' => 'feSpecularLighting', - 'fespotlight' => 'feSpotLight', - 'fetile' => 'feTile', - 'feturbulence' => 'feTurbulence', - 'foreignobject' => 'foreignObject', - 'glyphref' => 'glyphRef', - 'lineargradient' => 'linearGradient', - 'radialgradient' => 'radialGradient', - 'textpath' => 'textPath', - ); - - /** - * Check whether the given element meets the given criterion. - * - * Example: - * - * Elements::isA('script', Elements::TEXT_RAW); // Returns true. - * - * Elements::isA('script', Elements::TEXT_RCDATA); // Returns false. - * - * @param string $name The element name. - * @param int $mask One of the constants on this class. - * - * @return bool true if the element matches the mask, false otherwise. - */ - public static function isA($name, $mask) - { - return (static::element($name) & $mask) === $mask; - } - - /** - * Test if an element is a valid html5 element. - * - * @param string $name The name of the element. - * - * @return bool true if a html5 element and false otherwise. - */ - public static function isHtml5Element($name) - { - // html5 element names are case insensitive. Forcing lowercase for the check. - // Do we need this check or will all data passed here already be lowercase? - return isset(static::$html5[strtolower($name)]); - } - - /** - * Test if an element name is a valid MathML presentation element. - * - * @param string $name The name of the element. - * - * @return bool true if a MathML name and false otherwise. - */ - public static function isMathMLElement($name) - { - // MathML is case-sensitive unlike html5 elements. - return isset(static::$mathml[$name]); - } - - /** - * Test if an element is a valid SVG element. - * - * @param string $name The name of the element. - * - * @return bool true if a SVG element and false otherise. - */ - public static function isSvgElement($name) - { - // SVG is case-sensitive unlike html5 elements. - return isset(static::$svg[$name]); - } - - /** - * Is an element name valid in an html5 document. - * This includes html5 elements along with other allowed embedded content - * such as svg and mathml. - * - * @param string $name The name of the element. - * - * @return bool true if valid and false otherwise. - */ - public static function isElement($name) - { - return static::isHtml5Element($name) || static::isMathMLElement($name) || static::isSvgElement($name); - } - - /** - * Get the element mask for the given element name. - * - * @param string $name The name of the element. - * - * @return int the element mask. - */ - public static function element($name) - { - if (isset(static::$html5[$name])) { - return static::$html5[$name]; - } - if (isset(static::$svg[$name])) { - return static::$svg[$name]; - } - if (isset(static::$mathml[$name])) { - return static::$mathml[$name]; - } - - return 0; - } - - /** - * Normalize a SVG element name to its proper case and form. - * - * @param string $name The name of the element. - * - * @return string the normalized form of the element name. - */ - public static function normalizeSvgElement($name) - { - $name = strtolower($name); - if (isset(static::$svgCaseSensitiveElementMap[$name])) { - $name = static::$svgCaseSensitiveElementMap[$name]; - } - - return $name; - } - - /** - * Normalize a SVG attribute name to its proper case and form. - * - * @param string $name The name of the attribute. - * - * @return string The normalized form of the attribute name. - */ - public static function normalizeSvgAttribute($name) - { - $name = strtolower($name); - if (isset(static::$svgCaseSensitiveAttributeMap[$name])) { - $name = static::$svgCaseSensitiveAttributeMap[$name]; - } - - return $name; - } - - /** - * Normalize a MathML attribute name to its proper case and form. - * Note, all MathML element names are lowercase. - * - * @param string $name The name of the attribute. - * - * @return string The normalized form of the attribute name. - */ - public static function normalizeMathMlAttribute($name) - { - $name = strtolower($name); - - // Only one attribute has a mixed case form for MathML. - if ('definitionurl' === $name) { - $name = 'definitionURL'; - } - - return $name; - } -} diff --git a/vendor/masterminds/html5/src/HTML5/Entities.php b/vendor/masterminds/html5/src/HTML5/Entities.php deleted file mode 100644 index 0e7227dc..00000000 --- a/vendor/masterminds/html5/src/HTML5/Entities.php +++ /dev/null @@ -1,2236 +0,0 @@ - 'Á', - 'Aacut' => 'Á', - 'aacute' => 'á', - 'aacut' => 'á', - 'Abreve' => 'Ă', - 'abreve' => 'ă', - 'ac' => '∾', - 'acd' => '∿', - 'acE' => '∾̳', - 'Acirc' => 'Â', - 'Acir' => 'Â', - 'acirc' => 'â', - 'acir' => 'â', - 'acute' => '´', - 'acut' => '´', - 'Acy' => 'А', - 'acy' => 'а', - 'AElig' => 'Æ', - 'AEli' => 'Æ', - 'aelig' => 'æ', - 'aeli' => 'æ', - 'af' => '⁡', - 'Afr' => '𝔄', - 'afr' => '𝔞', - 'Agrave' => 'À', - 'Agrav' => 'À', - 'agrave' => 'à', - 'agrav' => 'à', - 'alefsym' => 'ℵ', - 'aleph' => 'ℵ', - 'Alpha' => 'Α', - 'alpha' => 'α', - 'Amacr' => 'Ā', - 'amacr' => 'ā', - 'amalg' => '⨿', - 'AMP' => '&', - 'AM' => '&', - 'amp' => '&', - 'am' => '&', - 'And' => '⩓', - 'and' => '∧', - 'andand' => '⩕', - 'andd' => '⩜', - 'andslope' => '⩘', - 'andv' => '⩚', - 'ang' => '∠', - 'ange' => '⦤', - 'angle' => '∠', - 'angmsd' => '∡', - 'angmsdaa' => '⦨', - 'angmsdab' => '⦩', - 'angmsdac' => '⦪', - 'angmsdad' => '⦫', - 'angmsdae' => '⦬', - 'angmsdaf' => '⦭', - 'angmsdag' => '⦮', - 'angmsdah' => '⦯', - 'angrt' => '∟', - 'angrtvb' => '⊾', - 'angrtvbd' => '⦝', - 'angsph' => '∢', - 'angst' => 'Å', - 'angzarr' => '⍼', - 'Aogon' => 'Ą', - 'aogon' => 'ą', - 'Aopf' => '𝔸', - 'aopf' => '𝕒', - 'ap' => '≈', - 'apacir' => '⩯', - 'apE' => '⩰', - 'ape' => '≊', - 'apid' => '≋', - 'apos' => '\'', - 'ApplyFunction' => '⁡', - 'approx' => '≈', - 'approxeq' => '≊', - 'Aring' => 'Å', - 'Arin' => 'Å', - 'aring' => 'å', - 'arin' => 'å', - 'Ascr' => '𝒜', - 'ascr' => '𝒶', - 'Assign' => '≔', - 'ast' => '*', - 'asymp' => '≈', - 'asympeq' => '≍', - 'Atilde' => 'Ã', - 'Atild' => 'Ã', - 'atilde' => 'ã', - 'atild' => 'ã', - 'Auml' => 'Ä', - 'Aum' => 'Ä', - 'auml' => 'ä', - 'aum' => 'ä', - 'awconint' => '∳', - 'awint' => '⨑', - 'backcong' => '≌', - 'backepsilon' => '϶', - 'backprime' => '‵', - 'backsim' => '∽', - 'backsimeq' => '⋍', - 'Backslash' => '∖', - 'Barv' => '⫧', - 'barvee' => '⊽', - 'Barwed' => '⌆', - 'barwed' => '⌅', - 'barwedge' => '⌅', - 'bbrk' => '⎵', - 'bbrktbrk' => '⎶', - 'bcong' => '≌', - 'Bcy' => 'Б', - 'bcy' => 'б', - 'bdquo' => '„', - 'becaus' => '∵', - 'Because' => '∵', - 'because' => '∵', - 'bemptyv' => '⦰', - 'bepsi' => '϶', - 'bernou' => 'ℬ', - 'Bernoullis' => 'ℬ', - 'Beta' => 'Β', - 'beta' => 'β', - 'beth' => 'ℶ', - 'between' => '≬', - 'Bfr' => '𝔅', - 'bfr' => '𝔟', - 'bigcap' => '⋂', - 'bigcirc' => '◯', - 'bigcup' => '⋃', - 'bigodot' => '⨀', - 'bigoplus' => '⨁', - 'bigotimes' => '⨂', - 'bigsqcup' => '⨆', - 'bigstar' => '★', - 'bigtriangledown' => '▽', - 'bigtriangleup' => '△', - 'biguplus' => '⨄', - 'bigvee' => '⋁', - 'bigwedge' => '⋀', - 'bkarow' => '⤍', - 'blacklozenge' => '⧫', - 'blacksquare' => '▪', - 'blacktriangle' => '▴', - 'blacktriangledown' => '▾', - 'blacktriangleleft' => '◂', - 'blacktriangleright' => '▸', - 'blank' => '␣', - 'blk12' => '▒', - 'blk14' => '░', - 'blk34' => '▓', - 'block' => '█', - 'bne' => '=⃥', - 'bnequiv' => '≡⃥', - 'bNot' => '⫭', - 'bnot' => '⌐', - 'Bopf' => '𝔹', - 'bopf' => '𝕓', - 'bot' => '⊥', - 'bottom' => '⊥', - 'bowtie' => '⋈', - 'boxbox' => '⧉', - 'boxDL' => '╗', - 'boxDl' => '╖', - 'boxdL' => '╕', - 'boxdl' => '┐', - 'boxDR' => '╔', - 'boxDr' => '╓', - 'boxdR' => '╒', - 'boxdr' => '┌', - 'boxH' => '═', - 'boxh' => '─', - 'boxHD' => '╦', - 'boxHd' => '╤', - 'boxhD' => '╥', - 'boxhd' => '┬', - 'boxHU' => '╩', - 'boxHu' => '╧', - 'boxhU' => '╨', - 'boxhu' => '┴', - 'boxminus' => '⊟', - 'boxplus' => '⊞', - 'boxtimes' => '⊠', - 'boxUL' => '╝', - 'boxUl' => '╜', - 'boxuL' => '╛', - 'boxul' => '┘', - 'boxUR' => '╚', - 'boxUr' => '╙', - 'boxuR' => '╘', - 'boxur' => '└', - 'boxV' => '║', - 'boxv' => '│', - 'boxVH' => '╬', - 'boxVh' => '╫', - 'boxvH' => '╪', - 'boxvh' => '┼', - 'boxVL' => '╣', - 'boxVl' => '╢', - 'boxvL' => '╡', - 'boxvl' => '┤', - 'boxVR' => '╠', - 'boxVr' => '╟', - 'boxvR' => '╞', - 'boxvr' => '├', - 'bprime' => '‵', - 'Breve' => '˘', - 'breve' => '˘', - 'brvbar' => '¦', - 'brvba' => '¦', - 'Bscr' => 'ℬ', - 'bscr' => '𝒷', - 'bsemi' => '⁏', - 'bsim' => '∽', - 'bsime' => '⋍', - 'bsol' => '\\', - 'bsolb' => '⧅', - 'bsolhsub' => '⟈', - 'bull' => '•', - 'bullet' => '•', - 'bump' => '≎', - 'bumpE' => '⪮', - 'bumpe' => '≏', - 'Bumpeq' => '≎', - 'bumpeq' => '≏', - 'Cacute' => 'Ć', - 'cacute' => 'ć', - 'Cap' => '⋒', - 'cap' => '∩', - 'capand' => '⩄', - 'capbrcup' => '⩉', - 'capcap' => '⩋', - 'capcup' => '⩇', - 'capdot' => '⩀', - 'CapitalDifferentialD' => 'ⅅ', - 'caps' => '∩︀', - 'caret' => '⁁', - 'caron' => 'ˇ', - 'Cayleys' => 'ℭ', - 'ccaps' => '⩍', - 'Ccaron' => 'Č', - 'ccaron' => 'č', - 'Ccedil' => 'Ç', - 'Ccedi' => 'Ç', - 'ccedil' => 'ç', - 'ccedi' => 'ç', - 'Ccirc' => 'Ĉ', - 'ccirc' => 'ĉ', - 'Cconint' => '∰', - 'ccups' => '⩌', - 'ccupssm' => '⩐', - 'Cdot' => 'Ċ', - 'cdot' => 'ċ', - 'cedil' => '¸', - 'cedi' => '¸', - 'Cedilla' => '¸', - 'cemptyv' => '⦲', - 'cent' => '¢', - 'cen' => '¢', - 'CenterDot' => '·', - 'centerdot' => '·', - 'Cfr' => 'ℭ', - 'cfr' => '𝔠', - 'CHcy' => 'Ч', - 'chcy' => 'ч', - 'check' => '✓', - 'checkmark' => '✓', - 'Chi' => 'Χ', - 'chi' => 'χ', - 'cir' => '○', - 'circ' => 'ˆ', - 'circeq' => '≗', - 'circlearrowleft' => '↺', - 'circlearrowright' => '↻', - 'circledast' => '⊛', - 'circledcirc' => '⊚', - 'circleddash' => '⊝', - 'CircleDot' => '⊙', - 'circledR' => '®', - 'circledS' => 'Ⓢ', - 'CircleMinus' => '⊖', - 'CirclePlus' => '⊕', - 'CircleTimes' => '⊗', - 'cirE' => '⧃', - 'cire' => '≗', - 'cirfnint' => '⨐', - 'cirmid' => '⫯', - 'cirscir' => '⧂', - 'ClockwiseContourIntegral' => '∲', - 'CloseCurlyDoubleQuote' => '”', - 'CloseCurlyQuote' => '’', - 'clubs' => '♣', - 'clubsuit' => '♣', - 'Colon' => '∷', - 'colon' => ':', - 'Colone' => '⩴', - 'colone' => '≔', - 'coloneq' => '≔', - 'comma' => ',', - 'commat' => '@', - 'comp' => '∁', - 'compfn' => '∘', - 'complement' => '∁', - 'complexes' => 'ℂ', - 'cong' => '≅', - 'congdot' => '⩭', - 'Congruent' => '≡', - 'Conint' => '∯', - 'conint' => '∮', - 'ContourIntegral' => '∮', - 'Copf' => 'ℂ', - 'copf' => '𝕔', - 'coprod' => '∐', - 'Coproduct' => '∐', - 'COPY' => '©', - 'COP' => '©', - 'copy' => '©', - 'cop' => '©', - 'copysr' => '℗', - 'CounterClockwiseContourIntegral' => '∳', - 'crarr' => '↵', - 'Cross' => '⨯', - 'cross' => '✗', - 'Cscr' => '𝒞', - 'cscr' => '𝒸', - 'csub' => '⫏', - 'csube' => '⫑', - 'csup' => '⫐', - 'csupe' => '⫒', - 'ctdot' => '⋯', - 'cudarrl' => '⤸', - 'cudarrr' => '⤵', - 'cuepr' => '⋞', - 'cuesc' => '⋟', - 'cularr' => '↶', - 'cularrp' => '⤽', - 'Cup' => '⋓', - 'cup' => '∪', - 'cupbrcap' => '⩈', - 'CupCap' => '≍', - 'cupcap' => '⩆', - 'cupcup' => '⩊', - 'cupdot' => '⊍', - 'cupor' => '⩅', - 'cups' => '∪︀', - 'curarr' => '↷', - 'curarrm' => '⤼', - 'curlyeqprec' => '⋞', - 'curlyeqsucc' => '⋟', - 'curlyvee' => '⋎', - 'curlywedge' => '⋏', - 'curren' => '¤', - 'curre' => '¤', - 'curvearrowleft' => '↶', - 'curvearrowright' => '↷', - 'cuvee' => '⋎', - 'cuwed' => '⋏', - 'cwconint' => '∲', - 'cwint' => '∱', - 'cylcty' => '⌭', - 'Dagger' => '‡', - 'dagger' => '†', - 'daleth' => 'ℸ', - 'Darr' => '↡', - 'dArr' => '⇓', - 'darr' => '↓', - 'dash' => '‐', - 'Dashv' => '⫤', - 'dashv' => '⊣', - 'dbkarow' => '⤏', - 'dblac' => '˝', - 'Dcaron' => 'Ď', - 'dcaron' => 'ď', - 'Dcy' => 'Д', - 'dcy' => 'д', - 'DD' => 'ⅅ', - 'dd' => 'ⅆ', - 'ddagger' => '‡', - 'ddarr' => '⇊', - 'DDotrahd' => '⤑', - 'ddotseq' => '⩷', - 'deg' => '°', - 'de' => '°', - 'Del' => '∇', - 'Delta' => 'Δ', - 'delta' => 'δ', - 'demptyv' => '⦱', - 'dfisht' => '⥿', - 'Dfr' => '𝔇', - 'dfr' => '𝔡', - 'dHar' => '⥥', - 'dharl' => '⇃', - 'dharr' => '⇂', - 'DiacriticalAcute' => '´', - 'DiacriticalDot' => '˙', - 'DiacriticalDoubleAcute' => '˝', - 'DiacriticalGrave' => '`', - 'DiacriticalTilde' => '˜', - 'diam' => '⋄', - 'Diamond' => '⋄', - 'diamond' => '⋄', - 'diamondsuit' => '♦', - 'diams' => '♦', - 'die' => '¨', - 'DifferentialD' => 'ⅆ', - 'digamma' => 'ϝ', - 'disin' => '⋲', - 'div' => '÷', - 'divide' => '÷', - 'divid' => '÷', - 'divideontimes' => '⋇', - 'divonx' => '⋇', - 'DJcy' => 'Ђ', - 'djcy' => 'ђ', - 'dlcorn' => '⌞', - 'dlcrop' => '⌍', - 'dollar' => '$', - 'Dopf' => '𝔻', - 'dopf' => '𝕕', - 'Dot' => '¨', - 'dot' => '˙', - 'DotDot' => '⃜', - 'doteq' => '≐', - 'doteqdot' => '≑', - 'DotEqual' => '≐', - 'dotminus' => '∸', - 'dotplus' => '∔', - 'dotsquare' => '⊡', - 'doublebarwedge' => '⌆', - 'DoubleContourIntegral' => '∯', - 'DoubleDot' => '¨', - 'DoubleDownArrow' => '⇓', - 'DoubleLeftArrow' => '⇐', - 'DoubleLeftRightArrow' => '⇔', - 'DoubleLeftTee' => '⫤', - 'DoubleLongLeftArrow' => '⟸', - 'DoubleLongLeftRightArrow' => '⟺', - 'DoubleLongRightArrow' => '⟹', - 'DoubleRightArrow' => '⇒', - 'DoubleRightTee' => '⊨', - 'DoubleUpArrow' => '⇑', - 'DoubleUpDownArrow' => '⇕', - 'DoubleVerticalBar' => '∥', - 'DownArrow' => '↓', - 'Downarrow' => '⇓', - 'downarrow' => '↓', - 'DownArrowBar' => '⤓', - 'DownArrowUpArrow' => '⇵', - 'DownBreve' => '̑', - 'downdownarrows' => '⇊', - 'downharpoonleft' => '⇃', - 'downharpoonright' => '⇂', - 'DownLeftRightVector' => '⥐', - 'DownLeftTeeVector' => '⥞', - 'DownLeftVector' => '↽', - 'DownLeftVectorBar' => '⥖', - 'DownRightTeeVector' => '⥟', - 'DownRightVector' => '⇁', - 'DownRightVectorBar' => '⥗', - 'DownTee' => '⊤', - 'DownTeeArrow' => '↧', - 'drbkarow' => '⤐', - 'drcorn' => '⌟', - 'drcrop' => '⌌', - 'Dscr' => '𝒟', - 'dscr' => '𝒹', - 'DScy' => 'Ѕ', - 'dscy' => 'ѕ', - 'dsol' => '⧶', - 'Dstrok' => 'Đ', - 'dstrok' => 'đ', - 'dtdot' => '⋱', - 'dtri' => '▿', - 'dtrif' => '▾', - 'duarr' => '⇵', - 'duhar' => '⥯', - 'dwangle' => '⦦', - 'DZcy' => 'Џ', - 'dzcy' => 'џ', - 'dzigrarr' => '⟿', - 'Eacute' => 'É', - 'Eacut' => 'É', - 'eacute' => 'é', - 'eacut' => 'é', - 'easter' => '⩮', - 'Ecaron' => 'Ě', - 'ecaron' => 'ě', - 'ecir' => 'ê', - 'Ecirc' => 'Ê', - 'Ecir' => 'Ê', - 'ecirc' => 'ê', - 'ecolon' => '≕', - 'Ecy' => 'Э', - 'ecy' => 'э', - 'eDDot' => '⩷', - 'Edot' => 'Ė', - 'eDot' => '≑', - 'edot' => 'ė', - 'ee' => 'ⅇ', - 'efDot' => '≒', - 'Efr' => '𝔈', - 'efr' => '𝔢', - 'eg' => '⪚', - 'Egrave' => 'È', - 'Egrav' => 'È', - 'egrave' => 'è', - 'egrav' => 'è', - 'egs' => '⪖', - 'egsdot' => '⪘', - 'el' => '⪙', - 'Element' => '∈', - 'elinters' => '⏧', - 'ell' => 'ℓ', - 'els' => '⪕', - 'elsdot' => '⪗', - 'Emacr' => 'Ē', - 'emacr' => 'ē', - 'empty' => '∅', - 'emptyset' => '∅', - 'EmptySmallSquare' => '◻', - 'emptyv' => '∅', - 'EmptyVerySmallSquare' => '▫', - 'emsp' => ' ', - 'emsp13' => ' ', - 'emsp14' => ' ', - 'ENG' => 'Ŋ', - 'eng' => 'ŋ', - 'ensp' => ' ', - 'Eogon' => 'Ę', - 'eogon' => 'ę', - 'Eopf' => '𝔼', - 'eopf' => '𝕖', - 'epar' => '⋕', - 'eparsl' => '⧣', - 'eplus' => '⩱', - 'epsi' => 'ε', - 'Epsilon' => 'Ε', - 'epsilon' => 'ε', - 'epsiv' => 'ϵ', - 'eqcirc' => '≖', - 'eqcolon' => '≕', - 'eqsim' => '≂', - 'eqslantgtr' => '⪖', - 'eqslantless' => '⪕', - 'Equal' => '⩵', - 'equals' => '=', - 'EqualTilde' => '≂', - 'equest' => '≟', - 'Equilibrium' => '⇌', - 'equiv' => '≡', - 'equivDD' => '⩸', - 'eqvparsl' => '⧥', - 'erarr' => '⥱', - 'erDot' => '≓', - 'Escr' => 'ℰ', - 'escr' => 'ℯ', - 'esdot' => '≐', - 'Esim' => '⩳', - 'esim' => '≂', - 'Eta' => 'Η', - 'eta' => 'η', - 'ETH' => 'Ð', - 'ET' => 'Ð', - 'eth' => 'ð', - 'et' => 'ð', - 'Euml' => 'Ë', - 'Eum' => 'Ë', - 'euml' => 'ë', - 'eum' => 'ë', - 'euro' => '€', - 'excl' => '!', - 'exist' => '∃', - 'Exists' => '∃', - 'expectation' => 'ℰ', - 'ExponentialE' => 'ⅇ', - 'exponentiale' => 'ⅇ', - 'fallingdotseq' => '≒', - 'Fcy' => 'Ф', - 'fcy' => 'ф', - 'female' => '♀', - 'ffilig' => 'ffi', - 'fflig' => 'ff', - 'ffllig' => 'ffl', - 'Ffr' => '𝔉', - 'ffr' => '𝔣', - 'filig' => 'fi', - 'FilledSmallSquare' => '◼', - 'FilledVerySmallSquare' => '▪', - 'fjlig' => 'fj', - 'flat' => '♭', - 'fllig' => 'fl', - 'fltns' => '▱', - 'fnof' => 'ƒ', - 'Fopf' => '𝔽', - 'fopf' => '𝕗', - 'ForAll' => '∀', - 'forall' => '∀', - 'fork' => '⋔', - 'forkv' => '⫙', - 'Fouriertrf' => 'ℱ', - 'fpartint' => '⨍', - 'frac12' => '½', - 'frac1' => '¼', - 'frac13' => '⅓', - 'frac14' => '¼', - 'frac15' => '⅕', - 'frac16' => '⅙', - 'frac18' => '⅛', - 'frac23' => '⅔', - 'frac25' => '⅖', - 'frac34' => '¾', - 'frac3' => '¾', - 'frac35' => '⅗', - 'frac38' => '⅜', - 'frac45' => '⅘', - 'frac56' => '⅚', - 'frac58' => '⅝', - 'frac78' => '⅞', - 'frasl' => '⁄', - 'frown' => '⌢', - 'Fscr' => 'ℱ', - 'fscr' => '𝒻', - 'gacute' => 'ǵ', - 'Gamma' => 'Γ', - 'gamma' => 'γ', - 'Gammad' => 'Ϝ', - 'gammad' => 'ϝ', - 'gap' => '⪆', - 'Gbreve' => 'Ğ', - 'gbreve' => 'ğ', - 'Gcedil' => 'Ģ', - 'Gcirc' => 'Ĝ', - 'gcirc' => 'ĝ', - 'Gcy' => 'Г', - 'gcy' => 'г', - 'Gdot' => 'Ġ', - 'gdot' => 'ġ', - 'gE' => '≧', - 'ge' => '≥', - 'gEl' => '⪌', - 'gel' => '⋛', - 'geq' => '≥', - 'geqq' => '≧', - 'geqslant' => '⩾', - 'ges' => '⩾', - 'gescc' => '⪩', - 'gesdot' => '⪀', - 'gesdoto' => '⪂', - 'gesdotol' => '⪄', - 'gesl' => '⋛︀', - 'gesles' => '⪔', - 'Gfr' => '𝔊', - 'gfr' => '𝔤', - 'Gg' => '⋙', - 'gg' => '≫', - 'ggg' => '⋙', - 'gimel' => 'ℷ', - 'GJcy' => 'Ѓ', - 'gjcy' => 'ѓ', - 'gl' => '≷', - 'gla' => '⪥', - 'glE' => '⪒', - 'glj' => '⪤', - 'gnap' => '⪊', - 'gnapprox' => '⪊', - 'gnE' => '≩', - 'gne' => '⪈', - 'gneq' => '⪈', - 'gneqq' => '≩', - 'gnsim' => '⋧', - 'Gopf' => '𝔾', - 'gopf' => '𝕘', - 'grave' => '`', - 'GreaterEqual' => '≥', - 'GreaterEqualLess' => '⋛', - 'GreaterFullEqual' => '≧', - 'GreaterGreater' => '⪢', - 'GreaterLess' => '≷', - 'GreaterSlantEqual' => '⩾', - 'GreaterTilde' => '≳', - 'Gscr' => '𝒢', - 'gscr' => 'ℊ', - 'gsim' => '≳', - 'gsime' => '⪎', - 'gsiml' => '⪐', - 'GT' => '>', - 'G' => '>', - 'Gt' => '≫', - 'gt' => '>', - 'g' => '>', - 'gtcc' => '⪧', - 'gtcir' => '⩺', - 'gtdot' => '⋗', - 'gtlPar' => '⦕', - 'gtquest' => '⩼', - 'gtrapprox' => '⪆', - 'gtrarr' => '⥸', - 'gtrdot' => '⋗', - 'gtreqless' => '⋛', - 'gtreqqless' => '⪌', - 'gtrless' => '≷', - 'gtrsim' => '≳', - 'gvertneqq' => '≩︀', - 'gvnE' => '≩︀', - 'Hacek' => 'ˇ', - 'hairsp' => ' ', - 'half' => '½', - 'hamilt' => 'ℋ', - 'HARDcy' => 'Ъ', - 'hardcy' => 'ъ', - 'hArr' => '⇔', - 'harr' => '↔', - 'harrcir' => '⥈', - 'harrw' => '↭', - 'Hat' => '^', - 'hbar' => 'ℏ', - 'Hcirc' => 'Ĥ', - 'hcirc' => 'ĥ', - 'hearts' => '♥', - 'heartsuit' => '♥', - 'hellip' => '…', - 'hercon' => '⊹', - 'Hfr' => 'ℌ', - 'hfr' => '𝔥', - 'HilbertSpace' => 'ℋ', - 'hksearow' => '⤥', - 'hkswarow' => '⤦', - 'hoarr' => '⇿', - 'homtht' => '∻', - 'hookleftarrow' => '↩', - 'hookrightarrow' => '↪', - 'Hopf' => 'ℍ', - 'hopf' => '𝕙', - 'horbar' => '―', - 'HorizontalLine' => '─', - 'Hscr' => 'ℋ', - 'hscr' => '𝒽', - 'hslash' => 'ℏ', - 'Hstrok' => 'Ħ', - 'hstrok' => 'ħ', - 'HumpDownHump' => '≎', - 'HumpEqual' => '≏', - 'hybull' => '⁃', - 'hyphen' => '‐', - 'Iacute' => 'Í', - 'Iacut' => 'Í', - 'iacute' => 'í', - 'iacut' => 'í', - 'ic' => '⁣', - 'Icirc' => 'Î', - 'Icir' => 'Î', - 'icirc' => 'î', - 'icir' => 'î', - 'Icy' => 'И', - 'icy' => 'и', - 'Idot' => 'İ', - 'IEcy' => 'Е', - 'iecy' => 'е', - 'iexcl' => '¡', - 'iexc' => '¡', - 'iff' => '⇔', - 'Ifr' => 'ℑ', - 'ifr' => '𝔦', - 'Igrave' => 'Ì', - 'Igrav' => 'Ì', - 'igrave' => 'ì', - 'igrav' => 'ì', - 'ii' => 'ⅈ', - 'iiiint' => '⨌', - 'iiint' => '∭', - 'iinfin' => '⧜', - 'iiota' => '℩', - 'IJlig' => 'IJ', - 'ijlig' => 'ij', - 'Im' => 'ℑ', - 'Imacr' => 'Ī', - 'imacr' => 'ī', - 'image' => 'ℑ', - 'ImaginaryI' => 'ⅈ', - 'imagline' => 'ℐ', - 'imagpart' => 'ℑ', - 'imath' => 'ı', - 'imof' => '⊷', - 'imped' => 'Ƶ', - 'Implies' => '⇒', - 'in' => '∈', - 'incare' => '℅', - 'infin' => '∞', - 'infintie' => '⧝', - 'inodot' => 'ı', - 'Int' => '∬', - 'int' => '∫', - 'intcal' => '⊺', - 'integers' => 'ℤ', - 'Integral' => '∫', - 'intercal' => '⊺', - 'Intersection' => '⋂', - 'intlarhk' => '⨗', - 'intprod' => '⨼', - 'InvisibleComma' => '⁣', - 'InvisibleTimes' => '⁢', - 'IOcy' => 'Ё', - 'iocy' => 'ё', - 'Iogon' => 'Į', - 'iogon' => 'į', - 'Iopf' => '𝕀', - 'iopf' => '𝕚', - 'Iota' => 'Ι', - 'iota' => 'ι', - 'iprod' => '⨼', - 'iquest' => '¿', - 'iques' => '¿', - 'Iscr' => 'ℐ', - 'iscr' => '𝒾', - 'isin' => '∈', - 'isindot' => '⋵', - 'isinE' => '⋹', - 'isins' => '⋴', - 'isinsv' => '⋳', - 'isinv' => '∈', - 'it' => '⁢', - 'Itilde' => 'Ĩ', - 'itilde' => 'ĩ', - 'Iukcy' => 'І', - 'iukcy' => 'і', - 'Iuml' => 'Ï', - 'Ium' => 'Ï', - 'iuml' => 'ï', - 'ium' => 'ï', - 'Jcirc' => 'Ĵ', - 'jcirc' => 'ĵ', - 'Jcy' => 'Й', - 'jcy' => 'й', - 'Jfr' => '𝔍', - 'jfr' => '𝔧', - 'jmath' => 'ȷ', - 'Jopf' => '𝕁', - 'jopf' => '𝕛', - 'Jscr' => '𝒥', - 'jscr' => '𝒿', - 'Jsercy' => 'Ј', - 'jsercy' => 'ј', - 'Jukcy' => 'Є', - 'jukcy' => 'є', - 'Kappa' => 'Κ', - 'kappa' => 'κ', - 'kappav' => 'ϰ', - 'Kcedil' => 'Ķ', - 'kcedil' => 'ķ', - 'Kcy' => 'К', - 'kcy' => 'к', - 'Kfr' => '𝔎', - 'kfr' => '𝔨', - 'kgreen' => 'ĸ', - 'KHcy' => 'Х', - 'khcy' => 'х', - 'KJcy' => 'Ќ', - 'kjcy' => 'ќ', - 'Kopf' => '𝕂', - 'kopf' => '𝕜', - 'Kscr' => '𝒦', - 'kscr' => '𝓀', - 'lAarr' => '⇚', - 'Lacute' => 'Ĺ', - 'lacute' => 'ĺ', - 'laemptyv' => '⦴', - 'lagran' => 'ℒ', - 'Lambda' => 'Λ', - 'lambda' => 'λ', - 'Lang' => '⟪', - 'lang' => '⟨', - 'langd' => '⦑', - 'langle' => '⟨', - 'lap' => '⪅', - 'Laplacetrf' => 'ℒ', - 'laquo' => '«', - 'laqu' => '«', - 'Larr' => '↞', - 'lArr' => '⇐', - 'larr' => '←', - 'larrb' => '⇤', - 'larrbfs' => '⤟', - 'larrfs' => '⤝', - 'larrhk' => '↩', - 'larrlp' => '↫', - 'larrpl' => '⤹', - 'larrsim' => '⥳', - 'larrtl' => '↢', - 'lat' => '⪫', - 'lAtail' => '⤛', - 'latail' => '⤙', - 'late' => '⪭', - 'lates' => '⪭︀', - 'lBarr' => '⤎', - 'lbarr' => '⤌', - 'lbbrk' => '❲', - 'lbrace' => '{', - 'lbrack' => '[', - 'lbrke' => '⦋', - 'lbrksld' => '⦏', - 'lbrkslu' => '⦍', - 'Lcaron' => 'Ľ', - 'lcaron' => 'ľ', - 'Lcedil' => 'Ļ', - 'lcedil' => 'ļ', - 'lceil' => '⌈', - 'lcub' => '{', - 'Lcy' => 'Л', - 'lcy' => 'л', - 'ldca' => '⤶', - 'ldquo' => '“', - 'ldquor' => '„', - 'ldrdhar' => '⥧', - 'ldrushar' => '⥋', - 'ldsh' => '↲', - 'lE' => '≦', - 'le' => '≤', - 'LeftAngleBracket' => '⟨', - 'LeftArrow' => '←', - 'Leftarrow' => '⇐', - 'leftarrow' => '←', - 'LeftArrowBar' => '⇤', - 'LeftArrowRightArrow' => '⇆', - 'leftarrowtail' => '↢', - 'LeftCeiling' => '⌈', - 'LeftDoubleBracket' => '⟦', - 'LeftDownTeeVector' => '⥡', - 'LeftDownVector' => '⇃', - 'LeftDownVectorBar' => '⥙', - 'LeftFloor' => '⌊', - 'leftharpoondown' => '↽', - 'leftharpoonup' => '↼', - 'leftleftarrows' => '⇇', - 'LeftRightArrow' => '↔', - 'Leftrightarrow' => '⇔', - 'leftrightarrow' => '↔', - 'leftrightarrows' => '⇆', - 'leftrightharpoons' => '⇋', - 'leftrightsquigarrow' => '↭', - 'LeftRightVector' => '⥎', - 'LeftTee' => '⊣', - 'LeftTeeArrow' => '↤', - 'LeftTeeVector' => '⥚', - 'leftthreetimes' => '⋋', - 'LeftTriangle' => '⊲', - 'LeftTriangleBar' => '⧏', - 'LeftTriangleEqual' => '⊴', - 'LeftUpDownVector' => '⥑', - 'LeftUpTeeVector' => '⥠', - 'LeftUpVector' => '↿', - 'LeftUpVectorBar' => '⥘', - 'LeftVector' => '↼', - 'LeftVectorBar' => '⥒', - 'lEg' => '⪋', - 'leg' => '⋚', - 'leq' => '≤', - 'leqq' => '≦', - 'leqslant' => '⩽', - 'les' => '⩽', - 'lescc' => '⪨', - 'lesdot' => '⩿', - 'lesdoto' => '⪁', - 'lesdotor' => '⪃', - 'lesg' => '⋚︀', - 'lesges' => '⪓', - 'lessapprox' => '⪅', - 'lessdot' => '⋖', - 'lesseqgtr' => '⋚', - 'lesseqqgtr' => '⪋', - 'LessEqualGreater' => '⋚', - 'LessFullEqual' => '≦', - 'LessGreater' => '≶', - 'lessgtr' => '≶', - 'LessLess' => '⪡', - 'lesssim' => '≲', - 'LessSlantEqual' => '⩽', - 'LessTilde' => '≲', - 'lfisht' => '⥼', - 'lfloor' => '⌊', - 'Lfr' => '𝔏', - 'lfr' => '𝔩', - 'lg' => '≶', - 'lgE' => '⪑', - 'lHar' => '⥢', - 'lhard' => '↽', - 'lharu' => '↼', - 'lharul' => '⥪', - 'lhblk' => '▄', - 'LJcy' => 'Љ', - 'ljcy' => 'љ', - 'Ll' => '⋘', - 'll' => '≪', - 'llarr' => '⇇', - 'llcorner' => '⌞', - 'Lleftarrow' => '⇚', - 'llhard' => '⥫', - 'lltri' => '◺', - 'Lmidot' => 'Ŀ', - 'lmidot' => 'ŀ', - 'lmoust' => '⎰', - 'lmoustache' => '⎰', - 'lnap' => '⪉', - 'lnapprox' => '⪉', - 'lnE' => '≨', - 'lne' => '⪇', - 'lneq' => '⪇', - 'lneqq' => '≨', - 'lnsim' => '⋦', - 'loang' => '⟬', - 'loarr' => '⇽', - 'lobrk' => '⟦', - 'LongLeftArrow' => '⟵', - 'Longleftarrow' => '⟸', - 'longleftarrow' => '⟵', - 'LongLeftRightArrow' => '⟷', - 'Longleftrightarrow' => '⟺', - 'longleftrightarrow' => '⟷', - 'longmapsto' => '⟼', - 'LongRightArrow' => '⟶', - 'Longrightarrow' => '⟹', - 'longrightarrow' => '⟶', - 'looparrowleft' => '↫', - 'looparrowright' => '↬', - 'lopar' => '⦅', - 'Lopf' => '𝕃', - 'lopf' => '𝕝', - 'loplus' => '⨭', - 'lotimes' => '⨴', - 'lowast' => '∗', - 'lowbar' => '_', - 'LowerLeftArrow' => '↙', - 'LowerRightArrow' => '↘', - 'loz' => '◊', - 'lozenge' => '◊', - 'lozf' => '⧫', - 'lpar' => '(', - 'lparlt' => '⦓', - 'lrarr' => '⇆', - 'lrcorner' => '⌟', - 'lrhar' => '⇋', - 'lrhard' => '⥭', - 'lrm' => '‎', - 'lrtri' => '⊿', - 'lsaquo' => '‹', - 'Lscr' => 'ℒ', - 'lscr' => '𝓁', - 'Lsh' => '↰', - 'lsh' => '↰', - 'lsim' => '≲', - 'lsime' => '⪍', - 'lsimg' => '⪏', - 'lsqb' => '[', - 'lsquo' => '‘', - 'lsquor' => '‚', - 'Lstrok' => 'Ł', - 'lstrok' => 'ł', - 'LT' => '<', - 'L' => '<', - 'Lt' => '≪', - 'lt' => '<', - 'l' => '<', - 'ltcc' => '⪦', - 'ltcir' => '⩹', - 'ltdot' => '⋖', - 'lthree' => '⋋', - 'ltimes' => '⋉', - 'ltlarr' => '⥶', - 'ltquest' => '⩻', - 'ltri' => '◃', - 'ltrie' => '⊴', - 'ltrif' => '◂', - 'ltrPar' => '⦖', - 'lurdshar' => '⥊', - 'luruhar' => '⥦', - 'lvertneqq' => '≨︀', - 'lvnE' => '≨︀', - 'macr' => '¯', - 'mac' => '¯', - 'male' => '♂', - 'malt' => '✠', - 'maltese' => '✠', - 'Map' => '⤅', - 'map' => '↦', - 'mapsto' => '↦', - 'mapstodown' => '↧', - 'mapstoleft' => '↤', - 'mapstoup' => '↥', - 'marker' => '▮', - 'mcomma' => '⨩', - 'Mcy' => 'М', - 'mcy' => 'м', - 'mdash' => '—', - 'mDDot' => '∺', - 'measuredangle' => '∡', - 'MediumSpace' => ' ', - 'Mellintrf' => 'ℳ', - 'Mfr' => '𝔐', - 'mfr' => '𝔪', - 'mho' => '℧', - 'micro' => 'µ', - 'micr' => 'µ', - 'mid' => '∣', - 'midast' => '*', - 'midcir' => '⫰', - 'middot' => '·', - 'middo' => '·', - 'minus' => '−', - 'minusb' => '⊟', - 'minusd' => '∸', - 'minusdu' => '⨪', - 'MinusPlus' => '∓', - 'mlcp' => '⫛', - 'mldr' => '…', - 'mnplus' => '∓', - 'models' => '⊧', - 'Mopf' => '𝕄', - 'mopf' => '𝕞', - 'mp' => '∓', - 'Mscr' => 'ℳ', - 'mscr' => '𝓂', - 'mstpos' => '∾', - 'Mu' => 'Μ', - 'mu' => 'μ', - 'multimap' => '⊸', - 'mumap' => '⊸', - 'nabla' => '∇', - 'Nacute' => 'Ń', - 'nacute' => 'ń', - 'nang' => '∠⃒', - 'nap' => '≉', - 'napE' => '⩰̸', - 'napid' => '≋̸', - 'napos' => 'ʼn', - 'napprox' => '≉', - 'natur' => '♮', - 'natural' => '♮', - 'naturals' => 'ℕ', - 'nbsp' => ' ', - 'nbs' => ' ', - 'nbump' => '≎̸', - 'nbumpe' => '≏̸', - 'ncap' => '⩃', - 'Ncaron' => 'Ň', - 'ncaron' => 'ň', - 'Ncedil' => 'Ņ', - 'ncedil' => 'ņ', - 'ncong' => '≇', - 'ncongdot' => '⩭̸', - 'ncup' => '⩂', - 'Ncy' => 'Н', - 'ncy' => 'н', - 'ndash' => '–', - 'ne' => '≠', - 'nearhk' => '⤤', - 'neArr' => '⇗', - 'nearr' => '↗', - 'nearrow' => '↗', - 'nedot' => '≐̸', - 'NegativeMediumSpace' => '​', - 'NegativeThickSpace' => '​', - 'NegativeThinSpace' => '​', - 'NegativeVeryThinSpace' => '​', - 'nequiv' => '≢', - 'nesear' => '⤨', - 'nesim' => '≂̸', - 'NestedGreaterGreater' => '≫', - 'NestedLessLess' => '≪', - 'NewLine' => ' -', - 'nexist' => '∄', - 'nexists' => '∄', - 'Nfr' => '𝔑', - 'nfr' => '𝔫', - 'ngE' => '≧̸', - 'nge' => '≱', - 'ngeq' => '≱', - 'ngeqq' => '≧̸', - 'ngeqslant' => '⩾̸', - 'nges' => '⩾̸', - 'nGg' => '⋙̸', - 'ngsim' => '≵', - 'nGt' => '≫⃒', - 'ngt' => '≯', - 'ngtr' => '≯', - 'nGtv' => '≫̸', - 'nhArr' => '⇎', - 'nharr' => '↮', - 'nhpar' => '⫲', - 'ni' => '∋', - 'nis' => '⋼', - 'nisd' => '⋺', - 'niv' => '∋', - 'NJcy' => 'Њ', - 'njcy' => 'њ', - 'nlArr' => '⇍', - 'nlarr' => '↚', - 'nldr' => '‥', - 'nlE' => '≦̸', - 'nle' => '≰', - 'nLeftarrow' => '⇍', - 'nleftarrow' => '↚', - 'nLeftrightarrow' => '⇎', - 'nleftrightarrow' => '↮', - 'nleq' => '≰', - 'nleqq' => '≦̸', - 'nleqslant' => '⩽̸', - 'nles' => '⩽̸', - 'nless' => '≮', - 'nLl' => '⋘̸', - 'nlsim' => '≴', - 'nLt' => '≪⃒', - 'nlt' => '≮', - 'nltri' => '⋪', - 'nltrie' => '⋬', - 'nLtv' => '≪̸', - 'nmid' => '∤', - 'NoBreak' => '⁠', - 'NonBreakingSpace' => ' ', - 'Nopf' => 'ℕ', - 'nopf' => '𝕟', - 'Not' => '⫬', - 'not' => '¬', - 'no' => '¬', - 'NotCongruent' => '≢', - 'NotCupCap' => '≭', - 'NotDoubleVerticalBar' => '∦', - 'NotElement' => '∉', - 'NotEqual' => '≠', - 'NotEqualTilde' => '≂̸', - 'NotExists' => '∄', - 'NotGreater' => '≯', - 'NotGreaterEqual' => '≱', - 'NotGreaterFullEqual' => '≧̸', - 'NotGreaterGreater' => '≫̸', - 'NotGreaterLess' => '≹', - 'NotGreaterSlantEqual' => '⩾̸', - 'NotGreaterTilde' => '≵', - 'NotHumpDownHump' => '≎̸', - 'NotHumpEqual' => '≏̸', - 'notin' => '∉', - 'notindot' => '⋵̸', - 'notinE' => '⋹̸', - 'notinva' => '∉', - 'notinvb' => '⋷', - 'notinvc' => '⋶', - 'NotLeftTriangle' => '⋪', - 'NotLeftTriangleBar' => '⧏̸', - 'NotLeftTriangleEqual' => '⋬', - 'NotLess' => '≮', - 'NotLessEqual' => '≰', - 'NotLessGreater' => '≸', - 'NotLessLess' => '≪̸', - 'NotLessSlantEqual' => '⩽̸', - 'NotLessTilde' => '≴', - 'NotNestedGreaterGreater' => '⪢̸', - 'NotNestedLessLess' => '⪡̸', - 'notni' => '∌', - 'notniva' => '∌', - 'notnivb' => '⋾', - 'notnivc' => '⋽', - 'NotPrecedes' => '⊀', - 'NotPrecedesEqual' => '⪯̸', - 'NotPrecedesSlantEqual' => '⋠', - 'NotReverseElement' => '∌', - 'NotRightTriangle' => '⋫', - 'NotRightTriangleBar' => '⧐̸', - 'NotRightTriangleEqual' => '⋭', - 'NotSquareSubset' => '⊏̸', - 'NotSquareSubsetEqual' => '⋢', - 'NotSquareSuperset' => '⊐̸', - 'NotSquareSupersetEqual' => '⋣', - 'NotSubset' => '⊂⃒', - 'NotSubsetEqual' => '⊈', - 'NotSucceeds' => '⊁', - 'NotSucceedsEqual' => '⪰̸', - 'NotSucceedsSlantEqual' => '⋡', - 'NotSucceedsTilde' => '≿̸', - 'NotSuperset' => '⊃⃒', - 'NotSupersetEqual' => '⊉', - 'NotTilde' => '≁', - 'NotTildeEqual' => '≄', - 'NotTildeFullEqual' => '≇', - 'NotTildeTilde' => '≉', - 'NotVerticalBar' => '∤', - 'npar' => '∦', - 'nparallel' => '∦', - 'nparsl' => '⫽⃥', - 'npart' => '∂̸', - 'npolint' => '⨔', - 'npr' => '⊀', - 'nprcue' => '⋠', - 'npre' => '⪯̸', - 'nprec' => '⊀', - 'npreceq' => '⪯̸', - 'nrArr' => '⇏', - 'nrarr' => '↛', - 'nrarrc' => '⤳̸', - 'nrarrw' => '↝̸', - 'nRightarrow' => '⇏', - 'nrightarrow' => '↛', - 'nrtri' => '⋫', - 'nrtrie' => '⋭', - 'nsc' => '⊁', - 'nsccue' => '⋡', - 'nsce' => '⪰̸', - 'Nscr' => '𝒩', - 'nscr' => '𝓃', - 'nshortmid' => '∤', - 'nshortparallel' => '∦', - 'nsim' => '≁', - 'nsime' => '≄', - 'nsimeq' => '≄', - 'nsmid' => '∤', - 'nspar' => '∦', - 'nsqsube' => '⋢', - 'nsqsupe' => '⋣', - 'nsub' => '⊄', - 'nsubE' => '⫅̸', - 'nsube' => '⊈', - 'nsubset' => '⊂⃒', - 'nsubseteq' => '⊈', - 'nsubseteqq' => '⫅̸', - 'nsucc' => '⊁', - 'nsucceq' => '⪰̸', - 'nsup' => '⊅', - 'nsupE' => '⫆̸', - 'nsupe' => '⊉', - 'nsupset' => '⊃⃒', - 'nsupseteq' => '⊉', - 'nsupseteqq' => '⫆̸', - 'ntgl' => '≹', - 'Ntilde' => 'Ñ', - 'Ntild' => 'Ñ', - 'ntilde' => 'ñ', - 'ntild' => 'ñ', - 'ntlg' => '≸', - 'ntriangleleft' => '⋪', - 'ntrianglelefteq' => '⋬', - 'ntriangleright' => '⋫', - 'ntrianglerighteq' => '⋭', - 'Nu' => 'Ν', - 'nu' => 'ν', - 'num' => '#', - 'numero' => '№', - 'numsp' => ' ', - 'nvap' => '≍⃒', - 'nVDash' => '⊯', - 'nVdash' => '⊮', - 'nvDash' => '⊭', - 'nvdash' => '⊬', - 'nvge' => '≥⃒', - 'nvgt' => '>⃒', - 'nvHarr' => '⤄', - 'nvinfin' => '⧞', - 'nvlArr' => '⤂', - 'nvle' => '≤⃒', - 'nvlt' => '<⃒', - 'nvltrie' => '⊴⃒', - 'nvrArr' => '⤃', - 'nvrtrie' => '⊵⃒', - 'nvsim' => '∼⃒', - 'nwarhk' => '⤣', - 'nwArr' => '⇖', - 'nwarr' => '↖', - 'nwarrow' => '↖', - 'nwnear' => '⤧', - 'Oacute' => 'Ó', - 'Oacut' => 'Ó', - 'oacute' => 'ó', - 'oacut' => 'ó', - 'oast' => '⊛', - 'ocir' => 'ô', - 'Ocirc' => 'Ô', - 'Ocir' => 'Ô', - 'ocirc' => 'ô', - 'Ocy' => 'О', - 'ocy' => 'о', - 'odash' => '⊝', - 'Odblac' => 'Ő', - 'odblac' => 'ő', - 'odiv' => '⨸', - 'odot' => '⊙', - 'odsold' => '⦼', - 'OElig' => 'Œ', - 'oelig' => 'œ', - 'ofcir' => '⦿', - 'Ofr' => '𝔒', - 'ofr' => '𝔬', - 'ogon' => '˛', - 'Ograve' => 'Ò', - 'Ograv' => 'Ò', - 'ograve' => 'ò', - 'ograv' => 'ò', - 'ogt' => '⧁', - 'ohbar' => '⦵', - 'ohm' => 'Ω', - 'oint' => '∮', - 'olarr' => '↺', - 'olcir' => '⦾', - 'olcross' => '⦻', - 'oline' => '‾', - 'olt' => '⧀', - 'Omacr' => 'Ō', - 'omacr' => 'ō', - 'Omega' => 'Ω', - 'omega' => 'ω', - 'Omicron' => 'Ο', - 'omicron' => 'ο', - 'omid' => '⦶', - 'ominus' => '⊖', - 'Oopf' => '𝕆', - 'oopf' => '𝕠', - 'opar' => '⦷', - 'OpenCurlyDoubleQuote' => '“', - 'OpenCurlyQuote' => '‘', - 'operp' => '⦹', - 'oplus' => '⊕', - 'Or' => '⩔', - 'or' => '∨', - 'orarr' => '↻', - 'ord' => 'º', - 'order' => 'ℴ', - 'orderof' => 'ℴ', - 'ordf' => 'ª', - 'ordm' => 'º', - 'origof' => '⊶', - 'oror' => '⩖', - 'orslope' => '⩗', - 'orv' => '⩛', - 'oS' => 'Ⓢ', - 'Oscr' => '𝒪', - 'oscr' => 'ℴ', - 'Oslash' => 'Ø', - 'Oslas' => 'Ø', - 'oslash' => 'ø', - 'oslas' => 'ø', - 'osol' => '⊘', - 'Otilde' => 'Õ', - 'Otild' => 'Õ', - 'otilde' => 'õ', - 'otild' => 'õ', - 'Otimes' => '⨷', - 'otimes' => '⊗', - 'otimesas' => '⨶', - 'Ouml' => 'Ö', - 'Oum' => 'Ö', - 'ouml' => 'ö', - 'oum' => 'ö', - 'ovbar' => '⌽', - 'OverBar' => '‾', - 'OverBrace' => '⏞', - 'OverBracket' => '⎴', - 'OverParenthesis' => '⏜', - 'par' => '¶', - 'para' => '¶', - 'parallel' => '∥', - 'parsim' => '⫳', - 'parsl' => '⫽', - 'part' => '∂', - 'PartialD' => '∂', - 'Pcy' => 'П', - 'pcy' => 'п', - 'percnt' => '%', - 'period' => '.', - 'permil' => '‰', - 'perp' => '⊥', - 'pertenk' => '‱', - 'Pfr' => '𝔓', - 'pfr' => '𝔭', - 'Phi' => 'Φ', - 'phi' => 'φ', - 'phiv' => 'ϕ', - 'phmmat' => 'ℳ', - 'phone' => '☎', - 'Pi' => 'Π', - 'pi' => 'π', - 'pitchfork' => '⋔', - 'piv' => 'ϖ', - 'planck' => 'ℏ', - 'planckh' => 'ℎ', - 'plankv' => 'ℏ', - 'plus' => '+', - 'plusacir' => '⨣', - 'plusb' => '⊞', - 'pluscir' => '⨢', - 'plusdo' => '∔', - 'plusdu' => '⨥', - 'pluse' => '⩲', - 'PlusMinus' => '±', - 'plusmn' => '±', - 'plusm' => '±', - 'plussim' => '⨦', - 'plustwo' => '⨧', - 'pm' => '±', - 'Poincareplane' => 'ℌ', - 'pointint' => '⨕', - 'Popf' => 'ℙ', - 'popf' => '𝕡', - 'pound' => '£', - 'poun' => '£', - 'Pr' => '⪻', - 'pr' => '≺', - 'prap' => '⪷', - 'prcue' => '≼', - 'prE' => '⪳', - 'pre' => '⪯', - 'prec' => '≺', - 'precapprox' => '⪷', - 'preccurlyeq' => '≼', - 'Precedes' => '≺', - 'PrecedesEqual' => '⪯', - 'PrecedesSlantEqual' => '≼', - 'PrecedesTilde' => '≾', - 'preceq' => '⪯', - 'precnapprox' => '⪹', - 'precneqq' => '⪵', - 'precnsim' => '⋨', - 'precsim' => '≾', - 'Prime' => '″', - 'prime' => '′', - 'primes' => 'ℙ', - 'prnap' => '⪹', - 'prnE' => '⪵', - 'prnsim' => '⋨', - 'prod' => '∏', - 'Product' => '∏', - 'profalar' => '⌮', - 'profline' => '⌒', - 'profsurf' => '⌓', - 'prop' => '∝', - 'Proportion' => '∷', - 'Proportional' => '∝', - 'propto' => '∝', - 'prsim' => '≾', - 'prurel' => '⊰', - 'Pscr' => '𝒫', - 'pscr' => '𝓅', - 'Psi' => 'Ψ', - 'psi' => 'ψ', - 'puncsp' => ' ', - 'Qfr' => '𝔔', - 'qfr' => '𝔮', - 'qint' => '⨌', - 'Qopf' => 'ℚ', - 'qopf' => '𝕢', - 'qprime' => '⁗', - 'Qscr' => '𝒬', - 'qscr' => '𝓆', - 'quaternions' => 'ℍ', - 'quatint' => '⨖', - 'quest' => '?', - 'questeq' => '≟', - 'QUOT' => '"', - 'QUO' => '"', - 'quot' => '"', - 'quo' => '"', - 'rAarr' => '⇛', - 'race' => '∽̱', - 'Racute' => 'Ŕ', - 'racute' => 'ŕ', - 'radic' => '√', - 'raemptyv' => '⦳', - 'Rang' => '⟫', - 'rang' => '⟩', - 'rangd' => '⦒', - 'range' => '⦥', - 'rangle' => '⟩', - 'raquo' => '»', - 'raqu' => '»', - 'Rarr' => '↠', - 'rArr' => '⇒', - 'rarr' => '→', - 'rarrap' => '⥵', - 'rarrb' => '⇥', - 'rarrbfs' => '⤠', - 'rarrc' => '⤳', - 'rarrfs' => '⤞', - 'rarrhk' => '↪', - 'rarrlp' => '↬', - 'rarrpl' => '⥅', - 'rarrsim' => '⥴', - 'Rarrtl' => '⤖', - 'rarrtl' => '↣', - 'rarrw' => '↝', - 'rAtail' => '⤜', - 'ratail' => '⤚', - 'ratio' => '∶', - 'rationals' => 'ℚ', - 'RBarr' => '⤐', - 'rBarr' => '⤏', - 'rbarr' => '⤍', - 'rbbrk' => '❳', - 'rbrace' => '}', - 'rbrack' => ']', - 'rbrke' => '⦌', - 'rbrksld' => '⦎', - 'rbrkslu' => '⦐', - 'Rcaron' => 'Ř', - 'rcaron' => 'ř', - 'Rcedil' => 'Ŗ', - 'rcedil' => 'ŗ', - 'rceil' => '⌉', - 'rcub' => '}', - 'Rcy' => 'Р', - 'rcy' => 'р', - 'rdca' => '⤷', - 'rdldhar' => '⥩', - 'rdquo' => '”', - 'rdquor' => '”', - 'rdsh' => '↳', - 'Re' => 'ℜ', - 'real' => 'ℜ', - 'realine' => 'ℛ', - 'realpart' => 'ℜ', - 'reals' => 'ℝ', - 'rect' => '▭', - 'REG' => '®', - 'RE' => '®', - 'reg' => '®', - 're' => '®', - 'ReverseElement' => '∋', - 'ReverseEquilibrium' => '⇋', - 'ReverseUpEquilibrium' => '⥯', - 'rfisht' => '⥽', - 'rfloor' => '⌋', - 'Rfr' => 'ℜ', - 'rfr' => '𝔯', - 'rHar' => '⥤', - 'rhard' => '⇁', - 'rharu' => '⇀', - 'rharul' => '⥬', - 'Rho' => 'Ρ', - 'rho' => 'ρ', - 'rhov' => 'ϱ', - 'RightAngleBracket' => '⟩', - 'RightArrow' => '→', - 'Rightarrow' => '⇒', - 'rightarrow' => '→', - 'RightArrowBar' => '⇥', - 'RightArrowLeftArrow' => '⇄', - 'rightarrowtail' => '↣', - 'RightCeiling' => '⌉', - 'RightDoubleBracket' => '⟧', - 'RightDownTeeVector' => '⥝', - 'RightDownVector' => '⇂', - 'RightDownVectorBar' => '⥕', - 'RightFloor' => '⌋', - 'rightharpoondown' => '⇁', - 'rightharpoonup' => '⇀', - 'rightleftarrows' => '⇄', - 'rightleftharpoons' => '⇌', - 'rightrightarrows' => '⇉', - 'rightsquigarrow' => '↝', - 'RightTee' => '⊢', - 'RightTeeArrow' => '↦', - 'RightTeeVector' => '⥛', - 'rightthreetimes' => '⋌', - 'RightTriangle' => '⊳', - 'RightTriangleBar' => '⧐', - 'RightTriangleEqual' => '⊵', - 'RightUpDownVector' => '⥏', - 'RightUpTeeVector' => '⥜', - 'RightUpVector' => '↾', - 'RightUpVectorBar' => '⥔', - 'RightVector' => '⇀', - 'RightVectorBar' => '⥓', - 'ring' => '˚', - 'risingdotseq' => '≓', - 'rlarr' => '⇄', - 'rlhar' => '⇌', - 'rlm' => '‏', - 'rmoust' => '⎱', - 'rmoustache' => '⎱', - 'rnmid' => '⫮', - 'roang' => '⟭', - 'roarr' => '⇾', - 'robrk' => '⟧', - 'ropar' => '⦆', - 'Ropf' => 'ℝ', - 'ropf' => '𝕣', - 'roplus' => '⨮', - 'rotimes' => '⨵', - 'RoundImplies' => '⥰', - 'rpar' => ')', - 'rpargt' => '⦔', - 'rppolint' => '⨒', - 'rrarr' => '⇉', - 'Rrightarrow' => '⇛', - 'rsaquo' => '›', - 'Rscr' => 'ℛ', - 'rscr' => '𝓇', - 'Rsh' => '↱', - 'rsh' => '↱', - 'rsqb' => ']', - 'rsquo' => '’', - 'rsquor' => '’', - 'rthree' => '⋌', - 'rtimes' => '⋊', - 'rtri' => '▹', - 'rtrie' => '⊵', - 'rtrif' => '▸', - 'rtriltri' => '⧎', - 'RuleDelayed' => '⧴', - 'ruluhar' => '⥨', - 'rx' => '℞', - 'Sacute' => 'Ś', - 'sacute' => 'ś', - 'sbquo' => '‚', - 'Sc' => '⪼', - 'sc' => '≻', - 'scap' => '⪸', - 'Scaron' => 'Š', - 'scaron' => 'š', - 'sccue' => '≽', - 'scE' => '⪴', - 'sce' => '⪰', - 'Scedil' => 'Ş', - 'scedil' => 'ş', - 'Scirc' => 'Ŝ', - 'scirc' => 'ŝ', - 'scnap' => '⪺', - 'scnE' => '⪶', - 'scnsim' => '⋩', - 'scpolint' => '⨓', - 'scsim' => '≿', - 'Scy' => 'С', - 'scy' => 'с', - 'sdot' => '⋅', - 'sdotb' => '⊡', - 'sdote' => '⩦', - 'searhk' => '⤥', - 'seArr' => '⇘', - 'searr' => '↘', - 'searrow' => '↘', - 'sect' => '§', - 'sec' => '§', - 'semi' => ';', - 'seswar' => '⤩', - 'setminus' => '∖', - 'setmn' => '∖', - 'sext' => '✶', - 'Sfr' => '𝔖', - 'sfr' => '𝔰', - 'sfrown' => '⌢', - 'sharp' => '♯', - 'SHCHcy' => 'Щ', - 'shchcy' => 'щ', - 'SHcy' => 'Ш', - 'shcy' => 'ш', - 'ShortDownArrow' => '↓', - 'ShortLeftArrow' => '←', - 'shortmid' => '∣', - 'shortparallel' => '∥', - 'ShortRightArrow' => '→', - 'ShortUpArrow' => '↑', - 'shy' => '­', - 'sh' => '­', - 'Sigma' => 'Σ', - 'sigma' => 'σ', - 'sigmaf' => 'ς', - 'sigmav' => 'ς', - 'sim' => '∼', - 'simdot' => '⩪', - 'sime' => '≃', - 'simeq' => '≃', - 'simg' => '⪞', - 'simgE' => '⪠', - 'siml' => '⪝', - 'simlE' => '⪟', - 'simne' => '≆', - 'simplus' => '⨤', - 'simrarr' => '⥲', - 'slarr' => '←', - 'SmallCircle' => '∘', - 'smallsetminus' => '∖', - 'smashp' => '⨳', - 'smeparsl' => '⧤', - 'smid' => '∣', - 'smile' => '⌣', - 'smt' => '⪪', - 'smte' => '⪬', - 'smtes' => '⪬︀', - 'SOFTcy' => 'Ь', - 'softcy' => 'ь', - 'sol' => '/', - 'solb' => '⧄', - 'solbar' => '⌿', - 'Sopf' => '𝕊', - 'sopf' => '𝕤', - 'spades' => '♠', - 'spadesuit' => '♠', - 'spar' => '∥', - 'sqcap' => '⊓', - 'sqcaps' => '⊓︀', - 'sqcup' => '⊔', - 'sqcups' => '⊔︀', - 'Sqrt' => '√', - 'sqsub' => '⊏', - 'sqsube' => '⊑', - 'sqsubset' => '⊏', - 'sqsubseteq' => '⊑', - 'sqsup' => '⊐', - 'sqsupe' => '⊒', - 'sqsupset' => '⊐', - 'sqsupseteq' => '⊒', - 'squ' => '□', - 'Square' => '□', - 'square' => '□', - 'SquareIntersection' => '⊓', - 'SquareSubset' => '⊏', - 'SquareSubsetEqual' => '⊑', - 'SquareSuperset' => '⊐', - 'SquareSupersetEqual' => '⊒', - 'SquareUnion' => '⊔', - 'squarf' => '▪', - 'squf' => '▪', - 'srarr' => '→', - 'Sscr' => '𝒮', - 'sscr' => '𝓈', - 'ssetmn' => '∖', - 'ssmile' => '⌣', - 'sstarf' => '⋆', - 'Star' => '⋆', - 'star' => '☆', - 'starf' => '★', - 'straightepsilon' => 'ϵ', - 'straightphi' => 'ϕ', - 'strns' => '¯', - 'Sub' => '⋐', - 'sub' => '⊂', - 'subdot' => '⪽', - 'subE' => '⫅', - 'sube' => '⊆', - 'subedot' => '⫃', - 'submult' => '⫁', - 'subnE' => '⫋', - 'subne' => '⊊', - 'subplus' => '⪿', - 'subrarr' => '⥹', - 'Subset' => '⋐', - 'subset' => '⊂', - 'subseteq' => '⊆', - 'subseteqq' => '⫅', - 'SubsetEqual' => '⊆', - 'subsetneq' => '⊊', - 'subsetneqq' => '⫋', - 'subsim' => '⫇', - 'subsub' => '⫕', - 'subsup' => '⫓', - 'succ' => '≻', - 'succapprox' => '⪸', - 'succcurlyeq' => '≽', - 'Succeeds' => '≻', - 'SucceedsEqual' => '⪰', - 'SucceedsSlantEqual' => '≽', - 'SucceedsTilde' => '≿', - 'succeq' => '⪰', - 'succnapprox' => '⪺', - 'succneqq' => '⪶', - 'succnsim' => '⋩', - 'succsim' => '≿', - 'SuchThat' => '∋', - 'Sum' => '∑', - 'sum' => '∑', - 'sung' => '♪', - 'Sup' => '⋑', - 'sup' => '³', - 'sup1' => '¹', - 'sup2' => '²', - 'sup3' => '³', - 'supdot' => '⪾', - 'supdsub' => '⫘', - 'supE' => '⫆', - 'supe' => '⊇', - 'supedot' => '⫄', - 'Superset' => '⊃', - 'SupersetEqual' => '⊇', - 'suphsol' => '⟉', - 'suphsub' => '⫗', - 'suplarr' => '⥻', - 'supmult' => '⫂', - 'supnE' => '⫌', - 'supne' => '⊋', - 'supplus' => '⫀', - 'Supset' => '⋑', - 'supset' => '⊃', - 'supseteq' => '⊇', - 'supseteqq' => '⫆', - 'supsetneq' => '⊋', - 'supsetneqq' => '⫌', - 'supsim' => '⫈', - 'supsub' => '⫔', - 'supsup' => '⫖', - 'swarhk' => '⤦', - 'swArr' => '⇙', - 'swarr' => '↙', - 'swarrow' => '↙', - 'swnwar' => '⤪', - 'szlig' => 'ß', - 'szli' => 'ß', - 'Tab' => ' ', - 'target' => '⌖', - 'Tau' => 'Τ', - 'tau' => 'τ', - 'tbrk' => '⎴', - 'Tcaron' => 'Ť', - 'tcaron' => 'ť', - 'Tcedil' => 'Ţ', - 'tcedil' => 'ţ', - 'Tcy' => 'Т', - 'tcy' => 'т', - 'tdot' => '⃛', - 'telrec' => '⌕', - 'Tfr' => '𝔗', - 'tfr' => '𝔱', - 'there4' => '∴', - 'Therefore' => '∴', - 'therefore' => '∴', - 'Theta' => 'Θ', - 'theta' => 'θ', - 'thetasym' => 'ϑ', - 'thetav' => 'ϑ', - 'thickapprox' => '≈', - 'thicksim' => '∼', - 'ThickSpace' => '  ', - 'thinsp' => ' ', - 'ThinSpace' => ' ', - 'thkap' => '≈', - 'thksim' => '∼', - 'THORN' => 'Þ', - 'THOR' => 'Þ', - 'thorn' => 'þ', - 'thor' => 'þ', - 'Tilde' => '∼', - 'tilde' => '˜', - 'TildeEqual' => '≃', - 'TildeFullEqual' => '≅', - 'TildeTilde' => '≈', - 'times' => '×', - 'time' => '×', - 'timesb' => '⊠', - 'timesbar' => '⨱', - 'timesd' => '⨰', - 'tint' => '∭', - 'toea' => '⤨', - 'top' => '⊤', - 'topbot' => '⌶', - 'topcir' => '⫱', - 'Topf' => '𝕋', - 'topf' => '𝕥', - 'topfork' => '⫚', - 'tosa' => '⤩', - 'tprime' => '‴', - 'TRADE' => '™', - 'trade' => '™', - 'triangle' => '▵', - 'triangledown' => '▿', - 'triangleleft' => '◃', - 'trianglelefteq' => '⊴', - 'triangleq' => '≜', - 'triangleright' => '▹', - 'trianglerighteq' => '⊵', - 'tridot' => '◬', - 'trie' => '≜', - 'triminus' => '⨺', - 'TripleDot' => '⃛', - 'triplus' => '⨹', - 'trisb' => '⧍', - 'tritime' => '⨻', - 'trpezium' => '⏢', - 'Tscr' => '𝒯', - 'tscr' => '𝓉', - 'TScy' => 'Ц', - 'tscy' => 'ц', - 'TSHcy' => 'Ћ', - 'tshcy' => 'ћ', - 'Tstrok' => 'Ŧ', - 'tstrok' => 'ŧ', - 'twixt' => '≬', - 'twoheadleftarrow' => '↞', - 'twoheadrightarrow' => '↠', - 'Uacute' => 'Ú', - 'Uacut' => 'Ú', - 'uacute' => 'ú', - 'uacut' => 'ú', - 'Uarr' => '↟', - 'uArr' => '⇑', - 'uarr' => '↑', - 'Uarrocir' => '⥉', - 'Ubrcy' => 'Ў', - 'ubrcy' => 'ў', - 'Ubreve' => 'Ŭ', - 'ubreve' => 'ŭ', - 'Ucirc' => 'Û', - 'Ucir' => 'Û', - 'ucirc' => 'û', - 'ucir' => 'û', - 'Ucy' => 'У', - 'ucy' => 'у', - 'udarr' => '⇅', - 'Udblac' => 'Ű', - 'udblac' => 'ű', - 'udhar' => '⥮', - 'ufisht' => '⥾', - 'Ufr' => '𝔘', - 'ufr' => '𝔲', - 'Ugrave' => 'Ù', - 'Ugrav' => 'Ù', - 'ugrave' => 'ù', - 'ugrav' => 'ù', - 'uHar' => '⥣', - 'uharl' => '↿', - 'uharr' => '↾', - 'uhblk' => '▀', - 'ulcorn' => '⌜', - 'ulcorner' => '⌜', - 'ulcrop' => '⌏', - 'ultri' => '◸', - 'Umacr' => 'Ū', - 'umacr' => 'ū', - 'uml' => '¨', - 'um' => '¨', - 'UnderBar' => '_', - 'UnderBrace' => '⏟', - 'UnderBracket' => '⎵', - 'UnderParenthesis' => '⏝', - 'Union' => '⋃', - 'UnionPlus' => '⊎', - 'Uogon' => 'Ų', - 'uogon' => 'ų', - 'Uopf' => '𝕌', - 'uopf' => '𝕦', - 'UpArrow' => '↑', - 'Uparrow' => '⇑', - 'uparrow' => '↑', - 'UpArrowBar' => '⤒', - 'UpArrowDownArrow' => '⇅', - 'UpDownArrow' => '↕', - 'Updownarrow' => '⇕', - 'updownarrow' => '↕', - 'UpEquilibrium' => '⥮', - 'upharpoonleft' => '↿', - 'upharpoonright' => '↾', - 'uplus' => '⊎', - 'UpperLeftArrow' => '↖', - 'UpperRightArrow' => '↗', - 'Upsi' => 'ϒ', - 'upsi' => 'υ', - 'upsih' => 'ϒ', - 'Upsilon' => 'Υ', - 'upsilon' => 'υ', - 'UpTee' => '⊥', - 'UpTeeArrow' => '↥', - 'upuparrows' => '⇈', - 'urcorn' => '⌝', - 'urcorner' => '⌝', - 'urcrop' => '⌎', - 'Uring' => 'Ů', - 'uring' => 'ů', - 'urtri' => '◹', - 'Uscr' => '𝒰', - 'uscr' => '𝓊', - 'utdot' => '⋰', - 'Utilde' => 'Ũ', - 'utilde' => 'ũ', - 'utri' => '▵', - 'utrif' => '▴', - 'uuarr' => '⇈', - 'Uuml' => 'Ü', - 'Uum' => 'Ü', - 'uuml' => 'ü', - 'uum' => 'ü', - 'uwangle' => '⦧', - 'vangrt' => '⦜', - 'varepsilon' => 'ϵ', - 'varkappa' => 'ϰ', - 'varnothing' => '∅', - 'varphi' => 'ϕ', - 'varpi' => 'ϖ', - 'varpropto' => '∝', - 'vArr' => '⇕', - 'varr' => '↕', - 'varrho' => 'ϱ', - 'varsigma' => 'ς', - 'varsubsetneq' => '⊊︀', - 'varsubsetneqq' => '⫋︀', - 'varsupsetneq' => '⊋︀', - 'varsupsetneqq' => '⫌︀', - 'vartheta' => 'ϑ', - 'vartriangleleft' => '⊲', - 'vartriangleright' => '⊳', - 'Vbar' => '⫫', - 'vBar' => '⫨', - 'vBarv' => '⫩', - 'Vcy' => 'В', - 'vcy' => 'в', - 'VDash' => '⊫', - 'Vdash' => '⊩', - 'vDash' => '⊨', - 'vdash' => '⊢', - 'Vdashl' => '⫦', - 'Vee' => '⋁', - 'vee' => '∨', - 'veebar' => '⊻', - 'veeeq' => '≚', - 'vellip' => '⋮', - 'Verbar' => '‖', - 'verbar' => '|', - 'Vert' => '‖', - 'vert' => '|', - 'VerticalBar' => '∣', - 'VerticalLine' => '|', - 'VerticalSeparator' => '❘', - 'VerticalTilde' => '≀', - 'VeryThinSpace' => ' ', - 'Vfr' => '𝔙', - 'vfr' => '𝔳', - 'vltri' => '⊲', - 'vnsub' => '⊂⃒', - 'vnsup' => '⊃⃒', - 'Vopf' => '𝕍', - 'vopf' => '𝕧', - 'vprop' => '∝', - 'vrtri' => '⊳', - 'Vscr' => '𝒱', - 'vscr' => '𝓋', - 'vsubnE' => '⫋︀', - 'vsubne' => '⊊︀', - 'vsupnE' => '⫌︀', - 'vsupne' => '⊋︀', - 'Vvdash' => '⊪', - 'vzigzag' => '⦚', - 'Wcirc' => 'Ŵ', - 'wcirc' => 'ŵ', - 'wedbar' => '⩟', - 'Wedge' => '⋀', - 'wedge' => '∧', - 'wedgeq' => '≙', - 'weierp' => '℘', - 'Wfr' => '𝔚', - 'wfr' => '𝔴', - 'Wopf' => '𝕎', - 'wopf' => '𝕨', - 'wp' => '℘', - 'wr' => '≀', - 'wreath' => '≀', - 'Wscr' => '𝒲', - 'wscr' => '𝓌', - 'xcap' => '⋂', - 'xcirc' => '◯', - 'xcup' => '⋃', - 'xdtri' => '▽', - 'Xfr' => '𝔛', - 'xfr' => '𝔵', - 'xhArr' => '⟺', - 'xharr' => '⟷', - 'Xi' => 'Ξ', - 'xi' => 'ξ', - 'xlArr' => '⟸', - 'xlarr' => '⟵', - 'xmap' => '⟼', - 'xnis' => '⋻', - 'xodot' => '⨀', - 'Xopf' => '𝕏', - 'xopf' => '𝕩', - 'xoplus' => '⨁', - 'xotime' => '⨂', - 'xrArr' => '⟹', - 'xrarr' => '⟶', - 'Xscr' => '𝒳', - 'xscr' => '𝓍', - 'xsqcup' => '⨆', - 'xuplus' => '⨄', - 'xutri' => '△', - 'xvee' => '⋁', - 'xwedge' => '⋀', - 'Yacute' => 'Ý', - 'Yacut' => 'Ý', - 'yacute' => 'ý', - 'yacut' => 'ý', - 'YAcy' => 'Я', - 'yacy' => 'я', - 'Ycirc' => 'Ŷ', - 'ycirc' => 'ŷ', - 'Ycy' => 'Ы', - 'ycy' => 'ы', - 'yen' => '¥', - 'ye' => '¥', - 'Yfr' => '𝔜', - 'yfr' => '𝔶', - 'YIcy' => 'Ї', - 'yicy' => 'ї', - 'Yopf' => '𝕐', - 'yopf' => '𝕪', - 'Yscr' => '𝒴', - 'yscr' => '𝓎', - 'YUcy' => 'Ю', - 'yucy' => 'ю', - 'Yuml' => 'Ÿ', - 'yuml' => 'ÿ', - 'yum' => 'ÿ', - 'Zacute' => 'Ź', - 'zacute' => 'ź', - 'Zcaron' => 'Ž', - 'zcaron' => 'ž', - 'Zcy' => 'З', - 'zcy' => 'з', - 'Zdot' => 'Ż', - 'zdot' => 'ż', - 'zeetrf' => 'ℨ', - 'ZeroWidthSpace' => '​', - 'Zeta' => 'Ζ', - 'zeta' => 'ζ', - 'Zfr' => 'ℨ', - 'zfr' => '𝔷', - 'ZHcy' => 'Ж', - 'zhcy' => 'ж', - 'zigrarr' => '⇝', - 'Zopf' => 'ℤ', - 'zopf' => '𝕫', - 'Zscr' => '𝒵', - 'zscr' => '𝓏', - 'zwj' => '‍', - 'zwnj' => '‌', - ); -} diff --git a/vendor/masterminds/html5/src/HTML5/Exception.php b/vendor/masterminds/html5/src/HTML5/Exception.php deleted file mode 100644 index 64e97e6f..00000000 --- a/vendor/masterminds/html5/src/HTML5/Exception.php +++ /dev/null @@ -1,10 +0,0 @@ - self::NAMESPACE_HTML, - 'svg' => self::NAMESPACE_SVG, - 'math' => self::NAMESPACE_MATHML, - ); - - /** - * Holds the always available namespaces (which does not require the XMLNS declaration). - * - * @var array - */ - protected $implicitNamespaces = array( - 'xml' => self::NAMESPACE_XML, - 'xmlns' => self::NAMESPACE_XMLNS, - 'xlink' => self::NAMESPACE_XLINK, - ); - - /** - * Holds a stack of currently active namespaces. - * - * @var array - */ - protected $nsStack = array(); - - /** - * Holds the number of namespaces declared by a node. - * - * @var array - */ - protected $pushes = array(); - - /** - * Defined in 8.2.5. - */ - const IM_INITIAL = 0; - - const IM_BEFORE_HTML = 1; - - const IM_BEFORE_HEAD = 2; - - const IM_IN_HEAD = 3; - - const IM_IN_HEAD_NOSCRIPT = 4; - - const IM_AFTER_HEAD = 5; - - const IM_IN_BODY = 6; - - const IM_TEXT = 7; - - const IM_IN_TABLE = 8; - - const IM_IN_TABLE_TEXT = 9; - - const IM_IN_CAPTION = 10; - - const IM_IN_COLUMN_GROUP = 11; - - const IM_IN_TABLE_BODY = 12; - - const IM_IN_ROW = 13; - - const IM_IN_CELL = 14; - - const IM_IN_SELECT = 15; - - const IM_IN_SELECT_IN_TABLE = 16; - - const IM_AFTER_BODY = 17; - - const IM_IN_FRAMESET = 18; - - const IM_AFTER_FRAMESET = 19; - - const IM_AFTER_AFTER_BODY = 20; - - const IM_AFTER_AFTER_FRAMESET = 21; - - const IM_IN_SVG = 22; - - const IM_IN_MATHML = 23; - - protected $options = array(); - - protected $stack = array(); - - protected $current; // Pointer in the tag hierarchy. - protected $rules; - protected $doc; - - protected $frag; - - protected $processor; - - protected $insertMode = 0; - - /** - * Track if we are in an element that allows only inline child nodes. - * - * @var string|null - */ - protected $onlyInline; - - /** - * Quirks mode is enabled by default. - * Any document that is missing the DT will be considered to be in quirks mode. - */ - protected $quirks = true; - - protected $errors = array(); - - public function __construct($isFragment = false, array $options = array()) - { - $this->options = $options; - - if (isset($options[self::OPT_TARGET_DOC])) { - $this->doc = $options[self::OPT_TARGET_DOC]; - } else { - $impl = new \DOMImplementation(); - // XXX: - // Create the doctype. For now, we are always creating HTML5 - // documents, and attempting to up-convert any older DTDs to HTML5. - $dt = $impl->createDocumentType('html'); - // $this->doc = \DOMImplementation::createDocument(NULL, 'html', $dt); - $this->doc = $impl->createDocument(null, '', $dt); - $this->doc->encoding = !empty($options['encoding']) ? $options['encoding'] : 'UTF-8'; - } - - $this->errors = array(); - - $this->current = $this->doc; // ->documentElement; - - // Create a rules engine for tags. - $this->rules = new TreeBuildingRules(); - - $implicitNS = array(); - if (isset($this->options[self::OPT_IMPLICIT_NS])) { - $implicitNS = $this->options[self::OPT_IMPLICIT_NS]; - } elseif (isset($this->options['implicitNamespaces'])) { - $implicitNS = $this->options['implicitNamespaces']; - } - - // Fill $nsStack with the defalut HTML5 namespaces, plus the "implicitNamespaces" array taken form $options - array_unshift($this->nsStack, $implicitNS + array('' => self::NAMESPACE_HTML) + $this->implicitNamespaces); - - if ($isFragment) { - $this->insertMode = static::IM_IN_BODY; - $this->frag = $this->doc->createDocumentFragment(); - $this->current = $this->frag; - } - } - - /** - * Get the document. - */ - public function document() - { - return $this->doc; - } - - /** - * Get the DOM fragment for the body. - * - * This returns a DOMNodeList because a fragment may have zero or more - * DOMNodes at its root. - * - * @see http://www.w3.org/TR/2012/CR-html5-20121217/syntax.html#concept-frag-parse-context - * - * @return \DOMDocumentFragment - */ - public function fragment() - { - return $this->frag; - } - - /** - * Provide an instruction processor. - * - * This is used for handling Processor Instructions as they are - * inserted. If omitted, PI's are inserted directly into the DOM tree. - * - * @param InstructionProcessor $proc - */ - public function setInstructionProcessor(InstructionProcessor $proc) - { - $this->processor = $proc; - } - - public function doctype($name, $idType = 0, $id = null, $quirks = false) - { - // This is used solely for setting quirks mode. Currently we don't - // try to preserve the inbound DT. We convert it to HTML5. - $this->quirks = $quirks; - - if ($this->insertMode > static::IM_INITIAL) { - $this->parseError('Illegal placement of DOCTYPE tag. Ignoring: ' . $name); - - return; - } - - $this->insertMode = static::IM_BEFORE_HTML; - } - - /** - * Process the start tag. - * - * @todo - XMLNS namespace handling (we need to parse, even if it's not valid) - * - XLink, MathML and SVG namespace handling - * - Omission rules: 8.1.2.4 Optional tags - * - * @param string $name - * @param array $attributes - * @param bool $selfClosing - * - * @return int - */ - public function startTag($name, $attributes = array(), $selfClosing = false) - { - $lname = $this->normalizeTagName($name); - - // Make sure we have an html element. - if (!$this->doc->documentElement && 'html' !== $name && !$this->frag) { - $this->startTag('html'); - } - - // Set quirks mode if we're at IM_INITIAL with no doctype. - if ($this->insertMode === static::IM_INITIAL) { - $this->quirks = true; - $this->parseError('No DOCTYPE specified.'); - } - - // SPECIAL TAG HANDLING: - // Spec says do this, and "don't ask." - // find the spec where this is defined... looks problematic - if ('image' === $name && !($this->insertMode === static::IM_IN_SVG || $this->insertMode === static::IM_IN_MATHML)) { - $name = 'img'; - } - - // Autoclose p tags where appropriate. - if ($this->insertMode >= static::IM_IN_BODY && Elements::isA($name, Elements::AUTOCLOSE_P)) { - $this->autoclose('p'); - } - - // Set insert mode: - switch ($name) { - case 'html': - $this->insertMode = static::IM_BEFORE_HEAD; - break; - case 'head': - if ($this->insertMode > static::IM_BEFORE_HEAD) { - $this->parseError('Unexpected head tag outside of head context.'); - } else { - $this->insertMode = static::IM_IN_HEAD; - } - break; - case 'body': - $this->insertMode = static::IM_IN_BODY; - break; - case 'svg': - $this->insertMode = static::IM_IN_SVG; - break; - case 'math': - $this->insertMode = static::IM_IN_MATHML; - break; - case 'noscript': - if ($this->insertMode === static::IM_IN_HEAD) { - $this->insertMode = static::IM_IN_HEAD_NOSCRIPT; - } - break; - } - - // Special case handling for SVG. - if ($this->insertMode === static::IM_IN_SVG) { - $lname = Elements::normalizeSvgElement($lname); - } - - $pushes = 0; - // when we found a tag thats appears inside $nsRoots, we have to switch the defalut namespace - if (isset($this->nsRoots[$lname]) && $this->nsStack[0][''] !== $this->nsRoots[$lname]) { - array_unshift($this->nsStack, array( - '' => $this->nsRoots[$lname], - ) + $this->nsStack[0]); - ++$pushes; - } - $needsWorkaround = false; - if (isset($this->options['xmlNamespaces']) && $this->options['xmlNamespaces']) { - // when xmlNamespaces is true a and we found a 'xmlns' or 'xmlns:*' attribute, we should add a new item to the $nsStack - foreach ($attributes as $aName => $aVal) { - if ('xmlns' === $aName) { - $needsWorkaround = $aVal; - array_unshift($this->nsStack, array( - '' => $aVal, - ) + $this->nsStack[0]); - ++$pushes; - } elseif ('xmlns' === (($pos = strpos($aName, ':')) ? substr($aName, 0, $pos) : '')) { - array_unshift($this->nsStack, array( - substr($aName, $pos + 1) => $aVal, - ) + $this->nsStack[0]); - ++$pushes; - } - } - } - - if ($this->onlyInline && Elements::isA($lname, Elements::BLOCK_TAG)) { - $this->autoclose($this->onlyInline); - $this->onlyInline = null; - } - - try { - $prefix = ($pos = strpos($lname, ':')) ? substr($lname, 0, $pos) : ''; - - if (false !== $needsWorkaround) { - $xml = "<$lname xmlns=\"$needsWorkaround\" " . (strlen($prefix) && isset($this->nsStack[0][$prefix]) ? ("xmlns:$prefix=\"" . $this->nsStack[0][$prefix] . '"') : '') . '/>'; - - $frag = new \DOMDocument('1.0', 'UTF-8'); - $frag->loadXML($xml); - - $ele = $this->doc->importNode($frag->documentElement, true); - } else { - if (!isset($this->nsStack[0][$prefix]) || ('' === $prefix && isset($this->options[self::OPT_DISABLE_HTML_NS]) && $this->options[self::OPT_DISABLE_HTML_NS])) { - $ele = $this->doc->createElement($lname); - } else { - $ele = $this->doc->createElementNS($this->nsStack[0][$prefix], $lname); - } - } - } catch (\DOMException $e) { - $this->parseError("Illegal tag name: <$lname>. Replaced with ."); - $ele = $this->doc->createElement('invalid'); - } - - if (Elements::isA($lname, Elements::BLOCK_ONLY_INLINE)) { - $this->onlyInline = $lname; - } - - // When we add some namespacess, we have to track them. Later, when "endElement" is invoked, we have to remove them. - // When we are on a void tag, we do not need to care about namesapce nesting. - if ($pushes > 0 && !Elements::isA($name, Elements::VOID_TAG)) { - // PHP tends to free the memory used by DOM, - // to avoid spl_object_hash collisions whe have to avoid garbage collection of $ele storing it into $pushes - // see https://bugs.php.net/bug.php?id=67459 - $this->pushes[spl_object_hash($ele)] = array($pushes, $ele); - } - - foreach ($attributes as $aName => $aVal) { - // xmlns attributes can't be set - if ('xmlns' === $aName) { - continue; - } - - if ($this->insertMode === static::IM_IN_SVG) { - $aName = Elements::normalizeSvgAttribute($aName); - } elseif ($this->insertMode === static::IM_IN_MATHML) { - $aName = Elements::normalizeMathMlAttribute($aName); - } - - $aVal = (string) $aVal; - - try { - $prefix = ($pos = strpos($aName, ':')) ? substr($aName, 0, $pos) : false; - - if ('xmlns' === $prefix) { - $ele->setAttributeNS(self::NAMESPACE_XMLNS, $aName, $aVal); - } elseif (false !== $prefix && isset($this->nsStack[0][$prefix])) { - $ele->setAttributeNS($this->nsStack[0][$prefix], $aName, $aVal); - } else { - $ele->setAttribute($aName, $aVal); - } - } catch (\DOMException $e) { - $this->parseError("Illegal attribute name for tag $name. Ignoring: $aName"); - continue; - } - - // This is necessary on a non-DTD schema, like HTML5. - if ('id' === $aName) { - $ele->setIdAttribute('id', true); - } - } - - if ($this->frag !== $this->current && $this->rules->hasRules($name)) { - // Some elements have special processing rules. Handle those separately. - $this->current = $this->rules->evaluate($ele, $this->current); - } else { - // Otherwise, it's a standard element. - $this->current->appendChild($ele); - - if (!Elements::isA($name, Elements::VOID_TAG)) { - $this->current = $ele; - } - - // Self-closing tags should only be respected on foreign elements - // (and are implied on void elements) - // See: https://www.w3.org/TR/html5/syntax.html#start-tags - if (Elements::isHtml5Element($name)) { - $selfClosing = false; - } - } - - // This is sort of a last-ditch attempt to correct for cases where no head/body - // elements are provided. - if ($this->insertMode <= static::IM_BEFORE_HEAD && 'head' !== $name && 'html' !== $name) { - $this->insertMode = static::IM_IN_BODY; - } - - // When we are on a void tag, we do not need to care about namesapce nesting, - // but we have to remove the namespaces pushed to $nsStack. - if ($pushes > 0 && Elements::isA($name, Elements::VOID_TAG)) { - // remove the namespaced definded by current node - for ($i = 0; $i < $pushes; ++$i) { - array_shift($this->nsStack); - } - } - - if ($selfClosing) { - $this->endTag($name); - } - - // Return the element mask, which the tokenizer can then use to set - // various processing rules. - return Elements::element($name); - } - - public function endTag($name) - { - $lname = $this->normalizeTagName($name); - - // Special case within 12.2.6.4.7: An end tag whose tag name is "br" should be treated as an opening tag - if ('br' === $name) { - $this->parseError('Closing tag encountered for void element br.'); - - $this->startTag('br'); - } - // Ignore closing tags for other unary elements. - elseif (Elements::isA($name, Elements::VOID_TAG)) { - return; - } - - if ($this->insertMode <= static::IM_BEFORE_HTML) { - // 8.2.5.4.2 - if (in_array($name, array( - 'html', - 'br', - 'head', - 'title', - ))) { - $this->startTag('html'); - $this->endTag($name); - $this->insertMode = static::IM_BEFORE_HEAD; - - return; - } - - // Ignore the tag. - $this->parseError('Illegal closing tag at global scope.'); - - return; - } - - // Special case handling for SVG. - if ($this->insertMode === static::IM_IN_SVG) { - $lname = Elements::normalizeSvgElement($lname); - } - - $cid = spl_object_hash($this->current); - - // XXX: HTML has no parent. What do we do, though, - // if this element appears in the wrong place? - if ('html' === $lname) { - return; - } - - // remove the namespaced definded by current node - if (isset($this->pushes[$cid])) { - for ($i = 0; $i < $this->pushes[$cid][0]; ++$i) { - array_shift($this->nsStack); - } - unset($this->pushes[$cid]); - } - - if (!$this->autoclose($lname)) { - $this->parseError('Could not find closing tag for ' . $lname); - } - - switch ($lname) { - case 'head': - $this->insertMode = static::IM_AFTER_HEAD; - break; - case 'body': - $this->insertMode = static::IM_AFTER_BODY; - break; - case 'svg': - case 'mathml': - $this->insertMode = static::IM_IN_BODY; - break; - } - } - - public function comment($cdata) - { - // TODO: Need to handle case where comment appears outside of the HTML tag. - $node = $this->doc->createComment($cdata); - $this->current->appendChild($node); - } - - public function text($data) - { - // XXX: Hmmm.... should we really be this strict? - if ($this->insertMode < static::IM_IN_HEAD) { - // Per '8.2.5.4.3 The "before head" insertion mode' the characters - // " \t\n\r\f" should be ignored but no mention of a parse error. This is - // practical as most documents contain these characters. Other text is not - // expected here so recording a parse error is necessary. - $dataTmp = trim($data, " \t\n\r\f"); - if (!empty($dataTmp)) { - // fprintf(STDOUT, "Unexpected insert mode: %d", $this->insertMode); - $this->parseError('Unexpected text. Ignoring: ' . $dataTmp); - } - - return; - } - // fprintf(STDOUT, "Appending text %s.", $data); - $node = $this->doc->createTextNode($data); - $this->current->appendChild($node); - } - - public function eof() - { - // If the $current isn't the $root, do we need to do anything? - } - - public function parseError($msg, $line = 0, $col = 0) - { - $this->errors[] = sprintf('Line %d, Col %d: %s', $line, $col, $msg); - } - - public function getErrors() - { - return $this->errors; - } - - public function cdata($data) - { - $node = $this->doc->createCDATASection($data); - $this->current->appendChild($node); - } - - public function processingInstruction($name, $data = null) - { - // XXX: Ignore initial XML declaration, per the spec. - if ($this->insertMode === static::IM_INITIAL && 'xml' === strtolower($name)) { - return; - } - - // Important: The processor may modify the current DOM tree however it sees fit. - if ($this->processor instanceof InstructionProcessor) { - $res = $this->processor->process($this->current, $name, $data); - if (!empty($res)) { - $this->current = $res; - } - - return; - } - - // Otherwise, this is just a dumb PI element. - $node = $this->doc->createProcessingInstruction($name, $data); - - $this->current->appendChild($node); - } - - // ========================================================================== - // UTILITIES - // ========================================================================== - - /** - * Apply normalization rules to a tag name. - * See sections 2.9 and 8.1.2. - * - * @param string $tagName - * - * @return string The normalized tag name. - */ - protected function normalizeTagName($tagName) - { - /* - * Section 2.9 suggests that we should not do this. if (strpos($name, ':') !== false) { // We know from the grammar that there must be at least one other // char besides :, since : is not a legal tag start. $parts = explode(':', $name); return array_pop($parts); } - */ - return $tagName; - } - - protected function quirksTreeResolver($name) - { - throw new \Exception('Not implemented.'); - } - - /** - * Automatically climb the tree and close the closest node with the matching $tag. - * - * @param string $tagName - * - * @return bool - */ - protected function autoclose($tagName) - { - $working = $this->current; - do { - if (XML_ELEMENT_NODE !== $working->nodeType) { - return false; - } - if ($working->tagName === $tagName) { - $this->current = $working->parentNode; - - return true; - } - } while ($working = $working->parentNode); - - return false; - } - - /** - * Checks if the given tagname is an ancestor of the present candidate. - * - * If $this->current or anything above $this->current matches the given tag - * name, this returns true. - * - * @param string $tagName - * - * @return bool - */ - protected function isAncestor($tagName) - { - $candidate = $this->current; - while (XML_ELEMENT_NODE === $candidate->nodeType) { - if ($candidate->tagName === $tagName) { - return true; - } - $candidate = $candidate->parentNode; - } - - return false; - } - - /** - * Returns true if the immediate parent element is of the given tagname. - * - * @param string $tagName - * - * @return bool - */ - protected function isParent($tagName) - { - return $this->current->tagName === $tagName; - } -} diff --git a/vendor/masterminds/html5/src/HTML5/Parser/EventHandler.php b/vendor/masterminds/html5/src/HTML5/Parser/EventHandler.php deleted file mode 100644 index 9893a718..00000000 --- a/vendor/masterminds/html5/src/HTML5/Parser/EventHandler.php +++ /dev/null @@ -1,114 +0,0 @@ -). - * - * @return int one of the Tokenizer::TEXTMODE_* constants - */ - public function startTag($name, $attributes = array(), $selfClosing = false); - - /** - * An end-tag. - */ - public function endTag($name); - - /** - * A comment section (unparsed character data). - */ - public function comment($cdata); - - /** - * A unit of parsed character data. - * - * Entities in this text are *already decoded*. - */ - public function text($cdata); - - /** - * Indicates that the document has been entirely processed. - */ - public function eof(); - - /** - * Emitted when the parser encounters an error condition. - */ - public function parseError($msg, $line, $col); - - /** - * A CDATA section. - * - * @param string $data - * The unparsed character data - */ - public function cdata($data); - - /** - * This is a holdover from the XML spec. - * - * While user agents don't get PIs, server-side does. - * - * @param string $name The name of the processor (e.g. 'php'). - * @param string $data The unparsed data. - */ - public function processingInstruction($name, $data = null); -} diff --git a/vendor/masterminds/html5/src/HTML5/Parser/FileInputStream.php b/vendor/masterminds/html5/src/HTML5/Parser/FileInputStream.php deleted file mode 100644 index b081ed96..00000000 --- a/vendor/masterminds/html5/src/HTML5/Parser/FileInputStream.php +++ /dev/null @@ -1,33 +0,0 @@ -errors = UTF8Utils::checkForIllegalCodepoints($data); - - $data = $this->replaceLinefeeds($data); - - $this->data = $data; - $this->char = 0; - $this->EOF = strlen($data); - } - - /** - * Check if upcomming chars match the given sequence. - * - * This will read the stream for the $sequence. If it's - * found, this will return true. If not, return false. - * Since this unconsumes any chars it reads, the caller - * will still need to read the next sequence, even if - * this returns true. - * - * Example: $this->scanner->sequenceMatches('') will - * see if the input stream is at the start of a - * '' string. - * - * @param string $sequence - * @param bool $caseSensitive - * - * @return bool - */ - public function sequenceMatches($sequence, $caseSensitive = true) - { - $portion = substr($this->data, $this->char, strlen($sequence)); - - return $caseSensitive ? $portion === $sequence : 0 === strcasecmp($portion, $sequence); - } - - /** - * Get the current position. - * - * @return int The current intiger byte position. - */ - public function position() - { - return $this->char; - } - - /** - * Take a peek at the next character in the data. - * - * @return string The next character. - */ - public function peek() - { - if (($this->char + 1) < $this->EOF) { - return $this->data[$this->char + 1]; - } - - return false; - } - - /** - * Get the next character. - * Note: This advances the pointer. - * - * @return string The next character. - */ - public function next() - { - ++$this->char; - - if ($this->char < $this->EOF) { - return $this->data[$this->char]; - } - - return false; - } - - /** - * Get the current character. - * Note, this does not advance the pointer. - * - * @return string The current character. - */ - public function current() - { - if ($this->char < $this->EOF) { - return $this->data[$this->char]; - } - - return false; - } - - /** - * Silently consume N chars. - * - * @param int $count - */ - public function consume($count = 1) - { - $this->char += $count; - } - - /** - * Unconsume some of the data. - * This moves the data pointer backwards. - * - * @param int $howMany The number of characters to move the pointer back. - */ - public function unconsume($howMany = 1) - { - if (($this->char - $howMany) >= 0) { - $this->char -= $howMany; - } - } - - /** - * Get the next group of that contains hex characters. - * Note, along with getting the characters the pointer in the data will be - * moved as well. - * - * @return string The next group that is hex characters. - */ - public function getHex() - { - return $this->doCharsWhile(static::CHARS_HEX); - } - - /** - * Get the next group of characters that are ASCII Alpha characters. - * Note, along with getting the characters the pointer in the data will be - * moved as well. - * - * @return string The next group of ASCII alpha characters. - */ - public function getAsciiAlpha() - { - return $this->doCharsWhile(static::CHARS_ALPHA); - } - - /** - * Get the next group of characters that are ASCII Alpha characters and numbers. - * Note, along with getting the characters the pointer in the data will be - * moved as well. - * - * @return string The next group of ASCII alpha characters and numbers. - */ - public function getAsciiAlphaNum() - { - return $this->doCharsWhile(static::CHARS_ALNUM); - } - - /** - * Get the next group of numbers. - * Note, along with getting the characters the pointer in the data will be - * moved as well. - * - * @return string The next group of numbers. - */ - public function getNumeric() - { - return $this->doCharsWhile('0123456789'); - } - - /** - * Consume whitespace. - * Whitespace in HTML5 is: formfeed, tab, newline, space. - * - * @return int The length of the matched whitespaces. - */ - public function whitespace() - { - if ($this->char >= $this->EOF) { - return false; - } - - $len = strspn($this->data, "\n\t\f ", $this->char); - - $this->char += $len; - - return $len; - } - - /** - * Returns the current line that is being consumed. - * - * @return int The current line number. - */ - public function currentLine() - { - if (empty($this->EOF) || 0 === $this->char) { - return 1; - } - - // Add one to $this->char because we want the number for the next - // byte to be processed. - return substr_count($this->data, "\n", 0, min($this->char, $this->EOF)) + 1; - } - - /** - * Read chars until something in the mask is encountered. - * - * @param string $mask - * - * @return mixed - */ - public function charsUntil($mask) - { - return $this->doCharsUntil($mask); - } - - /** - * Read chars as long as the mask matches. - * - * @param string $mask - * - * @return int - */ - public function charsWhile($mask) - { - return $this->doCharsWhile($mask); - } - - /** - * Returns the current column of the current line that the tokenizer is at. - * - * Newlines are column 0. The first char after a newline is column 1. - * - * @return int The column number. - */ - public function columnOffset() - { - // Short circuit for the first char. - if (0 === $this->char) { - return 0; - } - - // strrpos is weird, and the offset needs to be negative for what we - // want (i.e., the last \n before $this->char). This needs to not have - // one (to make it point to the next character, the one we want the - // position of) added to it because strrpos's behaviour includes the - // final offset byte. - $backwardFrom = $this->char - 1 - strlen($this->data); - $lastLine = strrpos($this->data, "\n", $backwardFrom); - - // However, for here we want the length up until the next byte to be - // processed, so add one to the current byte ($this->char). - if (false !== $lastLine) { - $findLengthOf = substr($this->data, $lastLine + 1, $this->char - 1 - $lastLine); - } else { - // After a newline. - $findLengthOf = substr($this->data, 0, $this->char); - } - - return UTF8Utils::countChars($findLengthOf); - } - - /** - * Get all characters until EOF. - * - * This consumes characters until the EOF. - * - * @return int The number of characters remaining. - */ - public function remainingChars() - { - if ($this->char < $this->EOF) { - $data = substr($this->data, $this->char); - $this->char = $this->EOF; - - return $data; - } - - return ''; // false; - } - - /** - * Replace linefeed characters according to the spec. - * - * @param $data - * - * @return string - */ - private function replaceLinefeeds($data) - { - /* - * U+000D CARRIAGE RETURN (CR) characters and U+000A LINE FEED (LF) characters are treated specially. - * Any CR characters that are followed by LF characters must be removed, and any CR characters not - * followed by LF characters must be converted to LF characters. Thus, newlines in HTML DOMs are - * represented by LF characters, and there are never any CR characters in the input to the tokenization - * stage. - */ - $crlfTable = array( - "\0" => "\xEF\xBF\xBD", - "\r\n" => "\n", - "\r" => "\n", - ); - - return strtr($data, $crlfTable); - } - - /** - * Read to a particular match (or until $max bytes are consumed). - * - * This operates on byte sequences, not characters. - * - * Matches as far as possible until we reach a certain set of bytes - * and returns the matched substring. - * - * @param string $bytes Bytes to match. - * @param int $max Maximum number of bytes to scan. - * - * @return mixed Index or false if no match is found. You should use strong - * equality when checking the result, since index could be 0. - */ - private function doCharsUntil($bytes, $max = null) - { - if ($this->char >= $this->EOF) { - return false; - } - - if (0 === $max || $max) { - $len = strcspn($this->data, $bytes, $this->char, $max); - } else { - $len = strcspn($this->data, $bytes, $this->char); - } - - $string = (string) substr($this->data, $this->char, $len); - $this->char += $len; - - return $string; - } - - /** - * Returns the string so long as $bytes matches. - * - * Matches as far as possible with a certain set of bytes - * and returns the matched substring. - * - * @param string $bytes A mask of bytes to match. If ANY byte in this mask matches the - * current char, the pointer advances and the char is part of the - * substring. - * @param int $max The max number of chars to read. - * - * @return string - */ - private function doCharsWhile($bytes, $max = null) - { - if ($this->char >= $this->EOF) { - return false; - } - - if (0 === $max || $max) { - $len = strspn($this->data, $bytes, $this->char, $max); - } else { - $len = strspn($this->data, $bytes, $this->char); - } - - $string = (string) substr($this->data, $this->char, $len); - $this->char += $len; - - return $string; - } -} diff --git a/vendor/masterminds/html5/src/HTML5/Parser/StringInputStream.php b/vendor/masterminds/html5/src/HTML5/Parser/StringInputStream.php deleted file mode 100644 index 0c213feb..00000000 --- a/vendor/masterminds/html5/src/HTML5/Parser/StringInputStream.php +++ /dev/null @@ -1,331 +0,0 @@ - - -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. - -*/ - -// Some conventions: -// - /* */ indicates verbatim text from the HTML 5 specification -// MPB: Not sure which version of the spec. Moving from HTML5lib to -// HTML5-PHP, I have been using this version: -// http://www.w3.org/TR/2012/CR-html5-20121217/Overview.html#contents -// -// - // indicates regular comments - -/** - * @deprecated since 2.4, to remove in 3.0. Use a string in the scanner instead. - */ -class StringInputStream implements InputStream -{ - /** - * The string data we're parsing. - */ - private $data; - - /** - * The current integer byte position we are in $data. - */ - private $char; - - /** - * Length of $data; when $char === $data, we are at the end-of-file. - */ - private $EOF; - - /** - * Parse errors. - */ - public $errors = array(); - - /** - * Create a new InputStream wrapper. - * - * @param string $data Data to parse. - * @param string $encoding The encoding to use for the data. - * @param string $debug A fprintf format to use to echo the data on stdout. - */ - public function __construct($data, $encoding = 'UTF-8', $debug = '') - { - $data = UTF8Utils::convertToUTF8($data, $encoding); - if ($debug) { - fprintf(STDOUT, $debug, $data, strlen($data)); - } - - // There is good reason to question whether it makes sense to - // do this here, since most of these checks are done during - // parsing, and since this check doesn't actually *do* anything. - $this->errors = UTF8Utils::checkForIllegalCodepoints($data); - - $data = $this->replaceLinefeeds($data); - - $this->data = $data; - $this->char = 0; - $this->EOF = strlen($data); - } - - public function __toString() - { - return $this->data; - } - - /** - * Replace linefeed characters according to the spec. - */ - protected function replaceLinefeeds($data) - { - /* - * U+000D CARRIAGE RETURN (CR) characters and U+000A LINE FEED (LF) characters are treated specially. - * Any CR characters that are followed by LF characters must be removed, and any CR characters not - * followed by LF characters must be converted to LF characters. Thus, newlines in HTML DOMs are - * represented by LF characters, and there are never any CR characters in the input to the tokenization - * stage. - */ - $crlfTable = array( - "\0" => "\xEF\xBF\xBD", - "\r\n" => "\n", - "\r" => "\n", - ); - - return strtr($data, $crlfTable); - } - - /** - * Returns the current line that the tokenizer is at. - */ - public function currentLine() - { - if (empty($this->EOF) || 0 === $this->char) { - return 1; - } - // Add one to $this->char because we want the number for the next - // byte to be processed. - return substr_count($this->data, "\n", 0, min($this->char, $this->EOF)) + 1; - } - - /** - * @deprecated - */ - public function getCurrentLine() - { - return $this->currentLine(); - } - - /** - * Returns the current column of the current line that the tokenizer is at. - * Newlines are column 0. The first char after a newline is column 1. - * - * @return int The column number. - */ - public function columnOffset() - { - // Short circuit for the first char. - if (0 === $this->char) { - return 0; - } - // strrpos is weird, and the offset needs to be negative for what we - // want (i.e., the last \n before $this->char). This needs to not have - // one (to make it point to the next character, the one we want the - // position of) added to it because strrpos's behaviour includes the - // final offset byte. - $backwardFrom = $this->char - 1 - strlen($this->data); - $lastLine = strrpos($this->data, "\n", $backwardFrom); - - // However, for here we want the length up until the next byte to be - // processed, so add one to the current byte ($this->char). - if (false !== $lastLine) { - $findLengthOf = substr($this->data, $lastLine + 1, $this->char - 1 - $lastLine); - } else { - // After a newline. - $findLengthOf = substr($this->data, 0, $this->char); - } - - return UTF8Utils::countChars($findLengthOf); - } - - /** - * @deprecated - */ - public function getColumnOffset() - { - return $this->columnOffset(); - } - - /** - * Get the current character. - * - * @return string The current character. - */ - public function current() - { - return $this->data[$this->char]; - } - - /** - * Advance the pointer. - * This is part of the Iterator interface. - */ - public function next() - { - ++$this->char; - } - - /** - * Rewind to the start of the string. - */ - public function rewind() - { - $this->char = 0; - } - - /** - * Is the current pointer location valid. - * - * @return bool Whether the current pointer location is valid. - */ - public function valid() - { - return $this->char < $this->EOF; - } - - /** - * Get all characters until EOF. - * - * This reads to the end of the file, and sets the read marker at the - * end of the file. - * - * Note this performs bounds checking. - * - * @return string Returns the remaining text. If called when the InputStream is - * already exhausted, it returns an empty string. - */ - public function remainingChars() - { - if ($this->char < $this->EOF) { - $data = substr($this->data, $this->char); - $this->char = $this->EOF; - - return $data; - } - - return ''; // false; - } - - /** - * Read to a particular match (or until $max bytes are consumed). - * - * This operates on byte sequences, not characters. - * - * Matches as far as possible until we reach a certain set of bytes - * and returns the matched substring. - * - * @param string $bytes Bytes to match. - * @param int $max Maximum number of bytes to scan. - * - * @return mixed Index or false if no match is found. You should use strong - * equality when checking the result, since index could be 0. - */ - public function charsUntil($bytes, $max = null) - { - if ($this->char >= $this->EOF) { - return false; - } - - if (0 === $max || $max) { - $len = strcspn($this->data, $bytes, $this->char, $max); - } else { - $len = strcspn($this->data, $bytes, $this->char); - } - - $string = (string) substr($this->data, $this->char, $len); - $this->char += $len; - - return $string; - } - - /** - * Returns the string so long as $bytes matches. - * - * Matches as far as possible with a certain set of bytes - * and returns the matched substring. - * - * @param string $bytes A mask of bytes to match. If ANY byte in this mask matches the - * current char, the pointer advances and the char is part of the - * substring. - * @param int $max The max number of chars to read. - * - * @return string - */ - public function charsWhile($bytes, $max = null) - { - if ($this->char >= $this->EOF) { - return false; - } - - if (0 === $max || $max) { - $len = strspn($this->data, $bytes, $this->char, $max); - } else { - $len = strspn($this->data, $bytes, $this->char); - } - $string = (string) substr($this->data, $this->char, $len); - $this->char += $len; - - return $string; - } - - /** - * Unconsume characters. - * - * @param int $howMany The number of characters to unconsume. - */ - public function unconsume($howMany = 1) - { - if (($this->char - $howMany) >= 0) { - $this->char -= $howMany; - } - } - - /** - * Look ahead without moving cursor. - */ - public function peek() - { - if (($this->char + 1) <= $this->EOF) { - return $this->data[$this->char + 1]; - } - - return false; - } - - public function key() - { - return $this->char; - } -} diff --git a/vendor/masterminds/html5/src/HTML5/Parser/Tokenizer.php b/vendor/masterminds/html5/src/HTML5/Parser/Tokenizer.php deleted file mode 100644 index e8b4aa09..00000000 --- a/vendor/masterminds/html5/src/HTML5/Parser/Tokenizer.php +++ /dev/null @@ -1,1214 +0,0 @@ -scanner = $scanner; - $this->events = $eventHandler; - $this->mode = $mode; - } - - /** - * Begin parsing. - * - * This will begin scanning the document, tokenizing as it goes. - * Tokens are emitted into the event handler. - * - * Tokenizing will continue until the document is completely - * read. Errors are emitted into the event handler, but - * the parser will attempt to continue parsing until the - * entire input stream is read. - */ - public function parse() - { - do { - $this->consumeData(); - // FIXME: Add infinite loop protection. - } while ($this->carryOn); - } - - /** - * Set the text mode for the character data reader. - * - * HTML5 defines three different modes for reading text: - * - Normal: Read until a tag is encountered. - * - RCDATA: Read until a tag is encountered, but skip a few otherwise- - * special characters. - * - Raw: Read until a special closing tag is encountered (viz. pre, script) - * - * This allows those modes to be set. - * - * Normally, setting is done by the event handler via a special return code on - * startTag(), but it can also be set manually using this function. - * - * @param int $textmode One of Elements::TEXT_*. - * @param string $untilTag The tag that should stop RAW or RCDATA mode. Normal mode does not - * use this indicator. - */ - public function setTextMode($textmode, $untilTag = null) - { - $this->textMode = $textmode & (Elements::TEXT_RAW | Elements::TEXT_RCDATA); - $this->untilTag = $untilTag; - } - - /** - * Consume a character and make a move. - * HTML5 8.2.4.1. - */ - protected function consumeData() - { - $tok = $this->scanner->current(); - - if ('&' === $tok) { - // Character reference - $ref = $this->decodeCharacterReference(); - $this->buffer($ref); - - $tok = $this->scanner->current(); - } - - // Parse tag - if ('<' === $tok) { - // Any buffered text data can go out now. - $this->flushBuffer(); - - $tok = $this->scanner->next(); - - if (false === $tok) { - // end of string - $this->parseError('Illegal tag opening'); - } elseif ('!' === $tok) { - $this->markupDeclaration(); - } elseif ('/' === $tok) { - $this->endTag(); - } elseif ('?' === $tok) { - $this->processingInstruction(); - } elseif ($this->is_alpha($tok)) { - $this->tagName(); - } else { - $this->parseError('Illegal tag opening'); - // TODO is this necessary ? - $this->characterData(); - } - - $tok = $this->scanner->current(); - } - - if (false === $tok) { - // Handle end of document - $this->eof(); - } else { - // Parse character - switch ($this->textMode) { - case Elements::TEXT_RAW: - $this->rawText($tok); - break; - - case Elements::TEXT_RCDATA: - $this->rcdata($tok); - break; - - default: - if ('<' === $tok || '&' === $tok) { - break; - } - - // NULL character - if ("\00" === $tok) { - $this->parseError('Received null character.'); - - $this->text .= $tok; - $this->scanner->consume(); - - break; - } - - $this->text .= $this->scanner->charsUntil("<&\0"); - } - } - - return $this->carryOn; - } - - /** - * Parse anything that looks like character data. - * - * Different rules apply based on the current text mode. - * - * @see Elements::TEXT_RAW Elements::TEXT_RCDATA. - */ - protected function characterData() - { - $tok = $this->scanner->current(); - if (false === $tok) { - return false; - } - switch ($this->textMode) { - case Elements::TEXT_RAW: - return $this->rawText($tok); - case Elements::TEXT_RCDATA: - return $this->rcdata($tok); - default: - if ('<' === $tok || '&' === $tok) { - return false; - } - - return $this->text($tok); - } - } - - /** - * This buffers the current token as character data. - * - * @param string $tok The current token. - * - * @return bool - */ - protected function text($tok) - { - // This should never happen... - if (false === $tok) { - return false; - } - - // NULL character - if ("\00" === $tok) { - $this->parseError('Received null character.'); - } - - $this->buffer($tok); - $this->scanner->consume(); - - return true; - } - - /** - * Read text in RAW mode. - * - * @param string $tok The current token. - * - * @return bool - */ - protected function rawText($tok) - { - if (is_null($this->untilTag)) { - return $this->text($tok); - } - - $sequence = 'untilTag . '>'; - $txt = $this->readUntilSequence($sequence); - $this->events->text($txt); - $this->setTextMode(0); - - return $this->endTag(); - } - - /** - * Read text in RCDATA mode. - * - * @param string $tok The current token. - * - * @return bool - */ - protected function rcdata($tok) - { - if (is_null($this->untilTag)) { - return $this->text($tok); - } - - $sequence = 'untilTag; - $txt = ''; - - $caseSensitive = !Elements::isHtml5Element($this->untilTag); - while (false !== $tok && !('<' == $tok && ($this->scanner->sequenceMatches($sequence, $caseSensitive)))) { - if ('&' == $tok) { - $txt .= $this->decodeCharacterReference(); - $tok = $this->scanner->current(); - } else { - $txt .= $tok; - $tok = $this->scanner->next(); - } - } - $len = strlen($sequence); - $this->scanner->consume($len); - $len += $this->scanner->whitespace(); - if ('>' !== $this->scanner->current()) { - $this->parseError('Unclosed RCDATA end tag'); - } - - $this->scanner->unconsume($len); - $this->events->text($txt); - $this->setTextMode(0); - - return $this->endTag(); - } - - /** - * If the document is read, emit an EOF event. - */ - protected function eof() - { - // fprintf(STDOUT, "EOF"); - $this->flushBuffer(); - $this->events->eof(); - $this->carryOn = false; - } - - /** - * Look for markup. - */ - protected function markupDeclaration() - { - $tok = $this->scanner->next(); - - // Comment: - if ('-' == $tok && '-' == $this->scanner->peek()) { - $this->scanner->consume(2); - - return $this->comment(); - } elseif ('D' == $tok || 'd' == $tok) { // Doctype - return $this->doctype(); - } elseif ('[' == $tok) { // CDATA section - return $this->cdataSection(); - } - - // FINISH - $this->parseError('Expected . Emit an empty comment because 8.2.4.46 says to. - if ('>' == $tok) { - // Parse error. Emit the comment token. - $this->parseError("Expected comment data, got '>'"); - $this->events->comment(''); - $this->scanner->consume(); - - return true; - } - - // Replace NULL with the replacement char. - if ("\0" == $tok) { - $tok = UTF8Utils::FFFD; - } - while (!$this->isCommentEnd()) { - $comment .= $tok; - $tok = $this->scanner->next(); - } - - $this->events->comment($comment); - $this->scanner->consume(); - - return true; - } - - /** - * Check if the scanner has reached the end of a comment. - * - * @return bool - */ - protected function isCommentEnd() - { - $tok = $this->scanner->current(); - - // EOF - if (false === $tok) { - // Hit the end. - $this->parseError('Unexpected EOF in a comment.'); - - return true; - } - - // If next two tokens are not '--', not the end. - if ('-' != $tok || '-' != $this->scanner->peek()) { - return false; - } - - $this->scanner->consume(2); // Consume '-' and one of '!' or '>' - - // Test for '>' - if ('>' == $this->scanner->current()) { - return true; - } - // Test for '!>' - if ('!' == $this->scanner->current() && '>' == $this->scanner->peek()) { - $this->scanner->consume(); // Consume the last '>' - return true; - } - // Unread '-' and one of '!' or '>'; - $this->scanner->unconsume(2); - - return false; - } - - /** - * Parse a DOCTYPE. - * - * Parse a DOCTYPE declaration. This method has strong bearing on whether or - * not Quirksmode is enabled on the event handler. - * - * @todo This method is a little long. Should probably refactor. - * - * @return bool - */ - protected function doctype() - { - // Check that string is DOCTYPE. - if ($this->scanner->sequenceMatches('DOCTYPE', false)) { - $this->scanner->consume(7); - } else { - $chars = $this->scanner->charsWhile('DOCTYPEdoctype'); - $this->parseError('Expected DOCTYPE, got %s', $chars); - - return $this->bogusComment('scanner->whitespace(); - $tok = $this->scanner->current(); - - // EOF: die. - if (false === $tok) { - $this->events->doctype('html5', EventHandler::DOCTYPE_NONE, '', true); - $this->eof(); - - return true; - } - - // NULL char: convert. - if ("\0" === $tok) { - $this->parseError('Unexpected null character in DOCTYPE.'); - } - - $stop = " \n\f>"; - $doctypeName = $this->scanner->charsUntil($stop); - // Lowercase ASCII, replace \0 with FFFD - $doctypeName = strtolower(strtr($doctypeName, "\0", UTF8Utils::FFFD)); - - $tok = $this->scanner->current(); - - // If false, emit a parse error, DOCTYPE, and return. - if (false === $tok) { - $this->parseError('Unexpected EOF in DOCTYPE declaration.'); - $this->events->doctype($doctypeName, EventHandler::DOCTYPE_NONE, null, true); - - return true; - } - - // Short DOCTYPE, like - if ('>' == $tok) { - // DOCTYPE without a name. - if (0 == strlen($doctypeName)) { - $this->parseError('Expected a DOCTYPE name. Got nothing.'); - $this->events->doctype($doctypeName, 0, null, true); - $this->scanner->consume(); - - return true; - } - $this->events->doctype($doctypeName); - $this->scanner->consume(); - - return true; - } - $this->scanner->whitespace(); - - $pub = strtoupper($this->scanner->getAsciiAlpha()); - $white = $this->scanner->whitespace(); - - // Get ID, and flag it as pub or system. - if (('PUBLIC' == $pub || 'SYSTEM' == $pub) && $white > 0) { - // Get the sys ID. - $type = 'PUBLIC' == $pub ? EventHandler::DOCTYPE_PUBLIC : EventHandler::DOCTYPE_SYSTEM; - $id = $this->quotedString("\0>"); - if (false === $id) { - $this->events->doctype($doctypeName, $type, $pub, false); - - return true; - } - - // Premature EOF. - if (false === $this->scanner->current()) { - $this->parseError('Unexpected EOF in DOCTYPE'); - $this->events->doctype($doctypeName, $type, $id, true); - - return true; - } - - // Well-formed complete DOCTYPE. - $this->scanner->whitespace(); - if ('>' == $this->scanner->current()) { - $this->events->doctype($doctypeName, $type, $id, false); - $this->scanner->consume(); - - return true; - } - - // If we get here, we have scanner->charsUntil('>'); - $this->parseError('Malformed DOCTYPE.'); - $this->events->doctype($doctypeName, $type, $id, true); - $this->scanner->consume(); - - return true; - } - - // Else it's a bogus DOCTYPE. - // Consume to > and trash. - $this->scanner->charsUntil('>'); - - $this->parseError('Expected PUBLIC or SYSTEM. Got %s.', $pub); - $this->events->doctype($doctypeName, 0, null, true); - $this->scanner->consume(); - - return true; - } - - /** - * Utility for reading a quoted string. - * - * @param string $stopchars Characters (in addition to a close-quote) that should stop the string. - * E.g. sometimes '>' is higher precedence than '"' or "'". - * - * @return mixed String if one is found (quotations omitted). - */ - protected function quotedString($stopchars) - { - $tok = $this->scanner->current(); - if ('"' == $tok || "'" == $tok) { - $this->scanner->consume(); - $ret = $this->scanner->charsUntil($tok . $stopchars); - if ($this->scanner->current() == $tok) { - $this->scanner->consume(); - } else { - // Parse error because no close quote. - $this->parseError('Expected %s, got %s', $tok, $this->scanner->current()); - } - - return $ret; - } - - return false; - } - - /** - * Handle a CDATA section. - * - * @return bool - */ - protected function cdataSection() - { - $cdata = ''; - $this->scanner->consume(); - - $chars = $this->scanner->charsWhile('CDAT'); - if ('CDATA' != $chars || '[' != $this->scanner->current()) { - $this->parseError('Expected [CDATA[, got %s', $chars); - - return $this->bogusComment('scanner->next(); - do { - if (false === $tok) { - $this->parseError('Unexpected EOF inside CDATA.'); - $this->bogusComment('scanner->next(); - } while (!$this->scanner->sequenceMatches(']]>')); - - // Consume ]]> - $this->scanner->consume(3); - - $this->events->cdata($cdata); - - return true; - } - - // ================================================================ - // Non-HTML5 - // ================================================================ - - /** - * Handle a processing instruction. - * - * XML processing instructions are supposed to be ignored in HTML5, - * treated as "bogus comments". However, since we're not a user - * agent, we allow them. We consume until ?> and then issue a - * EventListener::processingInstruction() event. - * - * @return bool - */ - protected function processingInstruction() - { - if ('?' != $this->scanner->current()) { - return false; - } - - $tok = $this->scanner->next(); - $procName = $this->scanner->getAsciiAlpha(); - $white = $this->scanner->whitespace(); - - // If not a PI, send to bogusComment. - if (0 == strlen($procName) || 0 == $white || false == $this->scanner->current()) { - $this->parseError("Expected processing instruction name, got $tok"); - $this->bogusComment('. - while (!('?' == $this->scanner->current() && '>' == $this->scanner->peek())) { - $data .= $this->scanner->current(); - - $tok = $this->scanner->next(); - if (false === $tok) { - $this->parseError('Unexpected EOF in processing instruction.'); - $this->events->processingInstruction($procName, $data); - - return true; - } - } - - $this->scanner->consume(2); // Consume the closing tag - $this->events->processingInstruction($procName, $data); - - return true; - } - - // ================================================================ - // UTILITY FUNCTIONS - // ================================================================ - - /** - * Read from the input stream until we get to the desired sequene - * or hit the end of the input stream. - * - * @param string $sequence - * - * @return string - */ - protected function readUntilSequence($sequence) - { - $buffer = ''; - - // Optimization for reading larger blocks faster. - $first = substr($sequence, 0, 1); - while (false !== $this->scanner->current()) { - $buffer .= $this->scanner->charsUntil($first); - - // Stop as soon as we hit the stopping condition. - if ($this->scanner->sequenceMatches($sequence, false)) { - return $buffer; - } - $buffer .= $this->scanner->current(); - $this->scanner->consume(); - } - - // If we get here, we hit the EOF. - $this->parseError('Unexpected EOF during text read.'); - - return $buffer; - } - - /** - * Check if upcomming chars match the given sequence. - * - * This will read the stream for the $sequence. If it's - * found, this will return true. If not, return false. - * Since this unconsumes any chars it reads, the caller - * will still need to read the next sequence, even if - * this returns true. - * - * Example: $this->scanner->sequenceMatches('') will - * see if the input stream is at the start of a - * '' string. - * - * @param string $sequence - * @param bool $caseSensitive - * - * @return bool - */ - protected function sequenceMatches($sequence, $caseSensitive = true) - { - @trigger_error(__METHOD__ . ' method is deprecated since version 2.4 and will be removed in 3.0. Use Scanner::sequenceMatches() instead.', E_USER_DEPRECATED); - - return $this->scanner->sequenceMatches($sequence, $caseSensitive); - } - - /** - * Send a TEXT event with the contents of the text buffer. - * - * This emits an EventHandler::text() event with the current contents of the - * temporary text buffer. (The buffer is used to group as much PCDATA - * as we can instead of emitting lots and lots of TEXT events.) - */ - protected function flushBuffer() - { - if ('' === $this->text) { - return; - } - $this->events->text($this->text); - $this->text = ''; - } - - /** - * Add text to the temporary buffer. - * - * @see flushBuffer() - * - * @param string $str - */ - protected function buffer($str) - { - $this->text .= $str; - } - - /** - * Emit a parse error. - * - * A parse error always returns false because it never consumes any - * characters. - * - * @param string $msg - * - * @return string - */ - protected function parseError($msg) - { - $args = func_get_args(); - - if (count($args) > 1) { - array_shift($args); - $msg = vsprintf($msg, $args); - } - - $line = $this->scanner->currentLine(); - $col = $this->scanner->columnOffset(); - $this->events->parseError($msg, $line, $col); - - return false; - } - - /** - * Decode a character reference and return the string. - * - * If $inAttribute is set to true, a bare & will be returned as-is. - * - * @param bool $inAttribute Set to true if the text is inside of an attribute value. - * false otherwise. - * - * @return string - */ - protected function decodeCharacterReference($inAttribute = false) - { - // Next char after &. - $tok = $this->scanner->next(); - $start = $this->scanner->position(); - - if (false === $tok) { - return '&'; - } - - // These indicate not an entity. We return just - // the &. - if ("\t" === $tok || "\n" === $tok || "\f" === $tok || ' ' === $tok || '&' === $tok || '<' === $tok) { - // $this->scanner->next(); - return '&'; - } - - // Numeric entity - if ('#' === $tok) { - $tok = $this->scanner->next(); - - if (false === $tok) { - $this->parseError('Expected &#DEC; &#HEX;, got EOF'); - $this->scanner->unconsume(1); - - return '&'; - } - - // Hexidecimal encoding. - // X[0-9a-fA-F]+; - // x[0-9a-fA-F]+; - if ('x' === $tok || 'X' === $tok) { - $tok = $this->scanner->next(); // Consume x - - // Convert from hex code to char. - $hex = $this->scanner->getHex(); - if (empty($hex)) { - $this->parseError('Expected &#xHEX;, got &#x%s', $tok); - // We unconsume because we don't know what parser rules might - // be in effect for the remaining chars. For example. '&#>' - // might result in a specific parsing rule inside of tag - // contexts, while not inside of pcdata context. - $this->scanner->unconsume(2); - - return '&'; - } - $entity = CharacterReference::lookupHex($hex); - } // Decimal encoding. - // [0-9]+; - else { - // Convert from decimal to char. - $numeric = $this->scanner->getNumeric(); - if (false === $numeric) { - $this->parseError('Expected &#DIGITS;, got &#%s', $tok); - $this->scanner->unconsume(2); - - return '&'; - } - $entity = CharacterReference::lookupDecimal($numeric); - } - } elseif ('=' === $tok && $inAttribute) { - return '&'; - } else { // String entity. - // Attempt to consume a string up to a ';'. - // [a-zA-Z0-9]+; - $cname = $this->scanner->getAsciiAlphaNum(); - $entity = CharacterReference::lookupName($cname); - - // When no entity is found provide the name of the unmatched string - // and continue on as the & is not part of an entity. The & will - // be converted to & elsewhere. - if (null === $entity) { - if (!$inAttribute || '' === $cname) { - $this->parseError("No match in entity table for '%s'", $cname); - } - $this->scanner->unconsume($this->scanner->position() - $start); - - return '&'; - } - } - - // The scanner has advanced the cursor for us. - $tok = $this->scanner->current(); - - // We have an entity. We're done here. - if (';' === $tok) { - $this->scanner->consume(); - - return $entity; - } - - // Failing to match ; means unconsume the entire string. - $this->scanner->unconsume($this->scanner->position() - $start); - - $this->parseError('Expected &ENTITY;, got &ENTITY%s (no trailing ;) ', $tok); - - return '&'; - } - - /** - * Checks whether a (single-byte) character is an ASCII letter or not. - * - * @param string $input A single-byte string - * - * @return bool True if it is a letter, False otherwise - */ - protected function is_alpha($input) - { - $code = ord($input); - - return ($code >= 97 && $code <= 122) || ($code >= 65 && $code <= 90); - } -} diff --git a/vendor/masterminds/html5/src/HTML5/Parser/TreeBuildingRules.php b/vendor/masterminds/html5/src/HTML5/Parser/TreeBuildingRules.php deleted file mode 100644 index 00d3951f..00000000 --- a/vendor/masterminds/html5/src/HTML5/Parser/TreeBuildingRules.php +++ /dev/null @@ -1,127 +0,0 @@ - 1, - 'dd' => 1, - 'dt' => 1, - 'rt' => 1, - 'rp' => 1, - 'tr' => 1, - 'th' => 1, - 'td' => 1, - 'thead' => 1, - 'tfoot' => 1, - 'tbody' => 1, - 'table' => 1, - 'optgroup' => 1, - 'option' => 1, - ); - - /** - * Returns true if the given tagname has special processing rules. - */ - public function hasRules($tagname) - { - return isset(static::$tags[$tagname]); - } - - /** - * Evaluate the rule for the current tag name. - * - * This may modify the existing DOM. - * - * @return \DOMElement The new Current DOM element. - */ - public function evaluate($new, $current) - { - switch ($new->tagName) { - case 'li': - return $this->handleLI($new, $current); - case 'dt': - case 'dd': - return $this->handleDT($new, $current); - case 'rt': - case 'rp': - return $this->handleRT($new, $current); - case 'optgroup': - return $this->closeIfCurrentMatches($new, $current, array( - 'optgroup', - )); - case 'option': - return $this->closeIfCurrentMatches($new, $current, array( - 'option', - )); - case 'tr': - return $this->closeIfCurrentMatches($new, $current, array( - 'tr', - )); - case 'td': - case 'th': - return $this->closeIfCurrentMatches($new, $current, array( - 'th', - 'td', - )); - case 'tbody': - case 'thead': - case 'tfoot': - case 'table': // Spec isn't explicit about this, but it's necessary. - - return $this->closeIfCurrentMatches($new, $current, array( - 'thead', - 'tfoot', - 'tbody', - )); - } - - return $current; - } - - protected function handleLI($ele, $current) - { - return $this->closeIfCurrentMatches($ele, $current, array( - 'li', - )); - } - - protected function handleDT($ele, $current) - { - return $this->closeIfCurrentMatches($ele, $current, array( - 'dt', - 'dd', - )); - } - - protected function handleRT($ele, $current) - { - return $this->closeIfCurrentMatches($ele, $current, array( - 'rt', - 'rp', - )); - } - - protected function closeIfCurrentMatches($ele, $current, $match) - { - if (in_array($current->tagName, $match, true)) { - $current->parentNode->appendChild($ele); - } else { - $current->appendChild($ele); - } - - return $ele; - } -} diff --git a/vendor/masterminds/html5/src/HTML5/Parser/UTF8Utils.php b/vendor/masterminds/html5/src/HTML5/Parser/UTF8Utils.php deleted file mode 100644 index 4405e4cc..00000000 --- a/vendor/masterminds/html5/src/HTML5/Parser/UTF8Utils.php +++ /dev/null @@ -1,177 +0,0 @@ - - -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. -*/ - -use Masterminds\HTML5\Exception; - -class UTF8Utils -{ - /** - * The Unicode replacement character. - */ - const FFFD = "\xEF\xBF\xBD"; - - /** - * Count the number of characters in a string. - * UTF-8 aware. This will try (in order) iconv, MB, and finally a custom counter. - * - * @param string $string - * - * @return int - */ - public static function countChars($string) - { - // Get the length for the string we need. - if (function_exists('mb_strlen')) { - return mb_strlen($string, 'utf-8'); - } - - if (function_exists('iconv_strlen')) { - return iconv_strlen($string, 'utf-8'); - } - - $count = count_chars($string); - - // 0x80 = 0x7F - 0 + 1 (one added to get inclusive range) - // 0x33 = 0xF4 - 0x2C + 1 (one added to get inclusive range) - return array_sum(array_slice($count, 0, 0x80)) + array_sum(array_slice($count, 0xC2, 0x33)); - } - - /** - * Convert data from the given encoding to UTF-8. - * - * This has not yet been tested with charactersets other than UTF-8. - * It should work with ISO-8859-1/-13 and standard Latin Win charsets. - * - * @param string $data The data to convert - * @param string $encoding A valid encoding. Examples: http://www.php.net/manual/en/mbstring.supported-encodings.php - * - * @return string - */ - public static function convertToUTF8($data, $encoding = 'UTF-8') - { - /* - * From the HTML5 spec: Given an encoding, the bytes in the input stream must be converted - * to Unicode characters for the tokeniser, as described by the rules for that encoding, - * except that the leading U+FEFF BYTE ORDER MARK character, if any, must not be stripped - * by the encoding layer (it is stripped by the rule below). Bytes or sequences of bytes - * in the original byte stream that could not be converted to Unicode characters must be - * converted to U+FFFD REPLACEMENT CHARACTER code points. - */ - - // mb_convert_encoding is chosen over iconv because of a bug. The best - // details for the bug are on http://us1.php.net/manual/en/function.iconv.php#108643 - // which contains links to the actual but reports as well as work around - // details. - if (function_exists('mb_convert_encoding')) { - // mb library has the following behaviors: - // - UTF-16 surrogates result in false. - // - Overlongs and outside Plane 16 result in empty strings. - - // Before we run mb_convert_encoding we need to tell it what to do with - // characters it does not know. This could be different than the parent - // application executing this library so we store the value, change it - // to our needs, and then change it back when we are done. This feels - // a little excessive and it would be great if there was a better way. - $save = mb_substitute_character(); - mb_substitute_character('none'); - $data = mb_convert_encoding($data, 'UTF-8', $encoding); - mb_substitute_character($save); - } - // @todo Get iconv running in at least some environments if that is possible. - elseif (function_exists('iconv') && 'auto' !== $encoding) { - // fprintf(STDOUT, "iconv found\n"); - // iconv has the following behaviors: - // - Overlong representations are ignored. - // - Beyond Plane 16 is replaced with a lower char. - // - Incomplete sequences generate a warning. - $data = @iconv($encoding, 'UTF-8//IGNORE', $data); - } else { - throw new Exception('Not implemented, please install mbstring or iconv'); - } - - /* - * One leading U+FEFF BYTE ORDER MARK character must be ignored if any are present. - */ - if ("\xEF\xBB\xBF" === substr($data, 0, 3)) { - $data = substr($data, 3); - } - - return $data; - } - - /** - * Checks for Unicode code points that are not valid in a document. - * - * @param string $data A string to analyze - * - * @return array An array of (string) error messages produced by the scanning - */ - public static function checkForIllegalCodepoints($data) - { - // Vestigal error handling. - $errors = array(); - - /* - * All U+0000 null characters in the input must be replaced by U+FFFD REPLACEMENT CHARACTERs. - * Any occurrences of such characters is a parse error. - */ - for ($i = 0, $count = substr_count($data, "\0"); $i < $count; ++$i) { - $errors[] = 'null-character'; - } - - /* - * Any occurrences of any characters in the ranges U+0001 to U+0008, U+000B, U+000E to U+001F, U+007F - * to U+009F, U+D800 to U+DFFF , U+FDD0 to U+FDEF, and characters U+FFFE, U+FFFF, U+1FFFE, U+1FFFF, - * U+2FFFE, U+2FFFF, U+3FFFE, U+3FFFF, U+4FFFE, U+4FFFF, U+5FFFE, U+5FFFF, U+6FFFE, U+6FFFF, U+7FFFE, - * U+7FFFF, U+8FFFE, U+8FFFF, U+9FFFE, U+9FFFF, U+AFFFE, U+AFFFF, U+BFFFE, U+BFFFF, U+CFFFE, U+CFFFF, - * U+DFFFE, U+DFFFF, U+EFFFE, U+EFFFF, U+FFFFE, U+FFFFF, U+10FFFE, and U+10FFFF are parse errors. - * (These are all control characters or permanently undefined Unicode characters.) - */ - // Check PCRE is loaded. - $count = preg_match_all( - '/(?: - [\x01-\x08\x0B\x0E-\x1F\x7F] # U+0001 to U+0008, U+000B, U+000E to U+001F and U+007F - | - \xC2[\x80-\x9F] # U+0080 to U+009F - | - \xED(?:\xA0[\x80-\xFF]|[\xA1-\xBE][\x00-\xFF]|\xBF[\x00-\xBF]) # U+D800 to U+DFFFF - | - \xEF\xB7[\x90-\xAF] # U+FDD0 to U+FDEF - | - \xEF\xBF[\xBE\xBF] # U+FFFE and U+FFFF - | - [\xF0-\xF4][\x8F-\xBF]\xBF[\xBE\xBF] # U+nFFFE and U+nFFFF (1 <= n <= 10_{16}) - )/x', $data, $matches); - for ($i = 0; $i < $count; ++$i) { - $errors[] = 'invalid-codepoint'; - } - - return $errors; - } -} diff --git a/vendor/masterminds/html5/src/HTML5/Serializer/HTML5Entities.php b/vendor/masterminds/html5/src/HTML5/Serializer/HTML5Entities.php deleted file mode 100644 index e9421a12..00000000 --- a/vendor/masterminds/html5/src/HTML5/Serializer/HTML5Entities.php +++ /dev/null @@ -1,1533 +0,0 @@ - ' ', - "\n" => ' ', - '!' => '!', - '"' => '"', - '#' => '#', - '$' => '$', - '%' => '%', - '&' => '&', - '\'' => ''', - '(' => '(', - ')' => ')', - '*' => '*', - '+' => '+', - ',' => ',', - '.' => '.', - '/' => '/', - ':' => ':', - ';' => ';', - '<' => '<', - '<⃒' => '&nvlt', - '=' => '=', - '=⃥' => '&bne', - '>' => '>', - '>⃒' => '&nvgt', - '?' => '?', - '@' => '@', - '[' => '[', - '\\' => '\', - ']' => ']', - '^' => '^', - '_' => '_', - '`' => '`', - 'fj' => '&fjlig', - '{' => '{', - '|' => '|', - '}' => '}', - ' ' => ' ', - '¡' => '¡', - '¢' => '¢', - '£' => '£', - '¤' => '¤', - '¥' => '¥', - '¦' => '¦', - '§' => '§', - '¨' => '¨', - '©' => '©', - 'ª' => 'ª', - '«' => '«', - '¬' => '¬', - '­' => '­', - '®' => '®', - '¯' => '¯', - '°' => '°', - '±' => '±', - '²' => '²', - '³' => '³', - '´' => '´', - 'µ' => 'µ', - '¶' => '¶', - '·' => '·', - '¸' => '¸', - '¹' => '¹', - 'º' => 'º', - '»' => '»', - '¼' => '¼', - '½' => '½', - '¾' => '¾', - '¿' => '¿', - 'À' => 'À', - 'Á' => 'Á', - 'Â' => 'Â', - 'Ã' => 'Ã', - 'Ä' => 'Ä', - 'Å' => 'Å', - 'Æ' => 'Æ', - 'Ç' => 'Ç', - 'È' => 'È', - 'É' => 'É', - 'Ê' => 'Ê', - 'Ë' => 'Ë', - 'Ì' => 'Ì', - 'Í' => 'Í', - 'Î' => 'Î', - 'Ï' => 'Ï', - 'Ð' => 'Ð', - 'Ñ' => 'Ñ', - 'Ò' => 'Ò', - 'Ó' => 'Ó', - 'Ô' => 'Ô', - 'Õ' => 'Õ', - 'Ö' => 'Ö', - '×' => '×', - 'Ø' => 'Ø', - 'Ù' => 'Ù', - 'Ú' => 'Ú', - 'Û' => 'Û', - 'Ü' => 'Ü', - 'Ý' => 'Ý', - 'Þ' => 'Þ', - 'ß' => 'ß', - 'à' => 'à', - 'á' => 'á', - 'â' => 'â', - 'ã' => 'ã', - 'ä' => 'ä', - 'å' => 'å', - 'æ' => 'æ', - 'ç' => 'ç', - 'è' => 'è', - 'é' => 'é', - 'ê' => 'ê', - 'ë' => 'ë', - 'ì' => 'ì', - 'í' => 'í', - 'î' => 'î', - 'ï' => 'ï', - 'ð' => 'ð', - 'ñ' => 'ñ', - 'ò' => 'ò', - 'ó' => 'ó', - 'ô' => 'ô', - 'õ' => 'õ', - 'ö' => 'ö', - '÷' => '÷', - 'ø' => 'ø', - 'ù' => 'ù', - 'ú' => 'ú', - 'û' => 'û', - 'ü' => 'ü', - 'ý' => 'ý', - 'þ' => 'þ', - 'ÿ' => 'ÿ', - 'Ā' => 'Ā', - 'ā' => 'ā', - 'Ă' => 'Ă', - 'ă' => 'ă', - 'Ą' => 'Ą', - 'ą' => 'ą', - 'Ć' => 'Ć', - 'ć' => 'ć', - 'Ĉ' => 'Ĉ', - 'ĉ' => 'ĉ', - 'Ċ' => 'Ċ', - 'ċ' => 'ċ', - 'Č' => 'Č', - 'č' => 'č', - 'Ď' => 'Ď', - 'ď' => 'ď', - 'Đ' => 'Đ', - 'đ' => 'đ', - 'Ē' => 'Ē', - 'ē' => 'ē', - 'Ė' => 'Ė', - 'ė' => 'ė', - 'Ę' => 'Ę', - 'ę' => 'ę', - 'Ě' => 'Ě', - 'ě' => 'ě', - 'Ĝ' => 'Ĝ', - 'ĝ' => 'ĝ', - 'Ğ' => 'Ğ', - 'ğ' => 'ğ', - 'Ġ' => 'Ġ', - 'ġ' => 'ġ', - 'Ģ' => 'Ģ', - 'Ĥ' => 'Ĥ', - 'ĥ' => 'ĥ', - 'Ħ' => 'Ħ', - 'ħ' => 'ħ', - 'Ĩ' => 'Ĩ', - 'ĩ' => 'ĩ', - 'Ī' => 'Ī', - 'ī' => 'ī', - 'Į' => 'Į', - 'į' => 'į', - 'İ' => 'İ', - 'ı' => 'ı', - 'IJ' => 'IJ', - 'ij' => 'ij', - 'Ĵ' => 'Ĵ', - 'ĵ' => 'ĵ', - 'Ķ' => 'Ķ', - 'ķ' => 'ķ', - 'ĸ' => 'ĸ', - 'Ĺ' => 'Ĺ', - 'ĺ' => 'ĺ', - 'Ļ' => 'Ļ', - 'ļ' => 'ļ', - 'Ľ' => 'Ľ', - 'ľ' => 'ľ', - 'Ŀ' => 'Ŀ', - 'ŀ' => 'ŀ', - 'Ł' => 'Ł', - 'ł' => 'ł', - 'Ń' => 'Ń', - 'ń' => 'ń', - 'Ņ' => 'Ņ', - 'ņ' => 'ņ', - 'Ň' => 'Ň', - 'ň' => 'ň', - 'ʼn' => 'ʼn', - 'Ŋ' => 'Ŋ', - 'ŋ' => 'ŋ', - 'Ō' => 'Ō', - 'ō' => 'ō', - 'Ő' => 'Ő', - 'ő' => 'ő', - 'Œ' => 'Œ', - 'œ' => 'œ', - 'Ŕ' => 'Ŕ', - 'ŕ' => 'ŕ', - 'Ŗ' => 'Ŗ', - 'ŗ' => 'ŗ', - 'Ř' => 'Ř', - 'ř' => 'ř', - 'Ś' => 'Ś', - 'ś' => 'ś', - 'Ŝ' => 'Ŝ', - 'ŝ' => 'ŝ', - 'Ş' => 'Ş', - 'ş' => 'ş', - 'Š' => 'Š', - 'š' => 'š', - 'Ţ' => 'Ţ', - 'ţ' => 'ţ', - 'Ť' => 'Ť', - 'ť' => 'ť', - 'Ŧ' => 'Ŧ', - 'ŧ' => 'ŧ', - 'Ũ' => 'Ũ', - 'ũ' => 'ũ', - 'Ū' => 'Ū', - 'ū' => 'ū', - 'Ŭ' => 'Ŭ', - 'ŭ' => 'ŭ', - 'Ů' => 'Ů', - 'ů' => 'ů', - 'Ű' => 'Ű', - 'ű' => 'ű', - 'Ų' => 'Ų', - 'ų' => 'ų', - 'Ŵ' => 'Ŵ', - 'ŵ' => 'ŵ', - 'Ŷ' => 'Ŷ', - 'ŷ' => 'ŷ', - 'Ÿ' => 'Ÿ', - 'Ź' => 'Ź', - 'ź' => 'ź', - 'Ż' => 'Ż', - 'ż' => 'ż', - 'Ž' => 'Ž', - 'ž' => 'ž', - 'ƒ' => 'ƒ', - 'Ƶ' => 'Ƶ', - 'ǵ' => 'ǵ', - 'ȷ' => 'ȷ', - 'ˆ' => 'ˆ', - 'ˇ' => 'ˇ', - '˘' => '˘', - '˙' => '˙', - '˚' => '˚', - '˛' => '˛', - '˜' => '˜', - '˝' => '˝', - '̑' => '̑', - 'Α' => 'Α', - 'Β' => 'Β', - 'Γ' => 'Γ', - 'Δ' => 'Δ', - 'Ε' => 'Ε', - 'Ζ' => 'Ζ', - 'Η' => 'Η', - 'Θ' => 'Θ', - 'Ι' => 'Ι', - 'Κ' => 'Κ', - 'Λ' => 'Λ', - 'Μ' => 'Μ', - 'Ν' => 'Ν', - 'Ξ' => 'Ξ', - 'Ο' => 'Ο', - 'Π' => 'Π', - 'Ρ' => 'Ρ', - 'Σ' => 'Σ', - 'Τ' => 'Τ', - 'Υ' => 'Υ', - 'Φ' => 'Φ', - 'Χ' => 'Χ', - 'Ψ' => 'Ψ', - 'Ω' => 'Ω', - 'α' => 'α', - 'β' => 'β', - 'γ' => 'γ', - 'δ' => 'δ', - 'ε' => 'ε', - 'ζ' => 'ζ', - 'η' => 'η', - 'θ' => 'θ', - 'ι' => 'ι', - 'κ' => 'κ', - 'λ' => 'λ', - 'μ' => 'μ', - 'ν' => 'ν', - 'ξ' => 'ξ', - 'ο' => 'ο', - 'π' => 'π', - 'ρ' => 'ρ', - 'ς' => 'ς', - 'σ' => 'σ', - 'τ' => 'τ', - 'υ' => 'υ', - 'φ' => 'φ', - 'χ' => 'χ', - 'ψ' => 'ψ', - 'ω' => 'ω', - 'ϑ' => 'ϑ', - 'ϒ' => 'ϒ', - 'ϕ' => 'ϕ', - 'ϖ' => 'ϖ', - 'Ϝ' => 'Ϝ', - 'ϝ' => 'ϝ', - 'ϰ' => 'ϰ', - 'ϱ' => 'ϱ', - 'ϵ' => 'ϵ', - '϶' => '϶', - 'Ё' => 'Ё', - 'Ђ' => 'Ђ', - 'Ѓ' => 'Ѓ', - 'Є' => 'Є', - 'Ѕ' => 'Ѕ', - 'І' => 'І', - 'Ї' => 'Ї', - 'Ј' => 'Ј', - 'Љ' => 'Љ', - 'Њ' => 'Њ', - 'Ћ' => 'Ћ', - 'Ќ' => 'Ќ', - 'Ў' => 'Ў', - 'Џ' => 'Џ', - 'А' => 'А', - 'Б' => 'Б', - 'В' => 'В', - 'Г' => 'Г', - 'Д' => 'Д', - 'Е' => 'Е', - 'Ж' => 'Ж', - 'З' => 'З', - 'И' => 'И', - 'Й' => 'Й', - 'К' => 'К', - 'Л' => 'Л', - 'М' => 'М', - 'Н' => 'Н', - 'О' => 'О', - 'П' => 'П', - 'Р' => 'Р', - 'С' => 'С', - 'Т' => 'Т', - 'У' => 'У', - 'Ф' => 'Ф', - 'Х' => 'Х', - 'Ц' => 'Ц', - 'Ч' => 'Ч', - 'Ш' => 'Ш', - 'Щ' => 'Щ', - 'Ъ' => 'Ъ', - 'Ы' => 'Ы', - 'Ь' => 'Ь', - 'Э' => 'Э', - 'Ю' => 'Ю', - 'Я' => 'Я', - 'а' => 'а', - 'б' => 'б', - 'в' => 'в', - 'г' => 'г', - 'д' => 'д', - 'е' => 'е', - 'ж' => 'ж', - 'з' => 'з', - 'и' => 'и', - 'й' => 'й', - 'к' => 'к', - 'л' => 'л', - 'м' => 'м', - 'н' => 'н', - 'о' => 'о', - 'п' => 'п', - 'р' => 'р', - 'с' => 'с', - 'т' => 'т', - 'у' => 'у', - 'ф' => 'ф', - 'х' => 'х', - 'ц' => 'ц', - 'ч' => 'ч', - 'ш' => 'ш', - 'щ' => 'щ', - 'ъ' => 'ъ', - 'ы' => 'ы', - 'ь' => 'ь', - 'э' => 'э', - 'ю' => 'ю', - 'я' => 'я', - 'ё' => 'ё', - 'ђ' => 'ђ', - 'ѓ' => 'ѓ', - 'є' => 'є', - 'ѕ' => 'ѕ', - 'і' => 'і', - 'ї' => 'ї', - 'ј' => 'ј', - 'љ' => 'љ', - 'њ' => 'њ', - 'ћ' => 'ћ', - 'ќ' => 'ќ', - 'ў' => 'ў', - 'џ' => 'џ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - '​' => '​', - '‌' => '‌', - '‍' => '‍', - '‎' => '‎', - '‏' => '‏', - '‐' => '‐', - '–' => '–', - '—' => '—', - '―' => '―', - '‖' => '‖', - '‘' => '‘', - '’' => '’', - '‚' => '‚', - '“' => '“', - '”' => '”', - '„' => '„', - '†' => '†', - '‡' => '‡', - '•' => '•', - '‥' => '‥', - '…' => '…', - '‰' => '‰', - '‱' => '‱', - '′' => '′', - '″' => '″', - '‴' => '‴', - '‵' => '‵', - '‹' => '‹', - '›' => '›', - '‾' => '‾', - '⁁' => '⁁', - '⁃' => '⁃', - '⁄' => '⁄', - '⁏' => '⁏', - '⁗' => '⁗', - ' ' => ' ', - '  ' => '&ThickSpace', - '⁠' => '⁠', - '⁡' => '⁡', - '⁢' => '⁢', - '⁣' => '⁣', - '€' => '€', - '⃛' => '⃛', - '⃜' => '⃜', - 'ℂ' => 'ℂ', - '℅' => '℅', - 'ℊ' => 'ℊ', - 'ℋ' => 'ℋ', - 'ℌ' => 'ℌ', - 'ℍ' => 'ℍ', - 'ℎ' => 'ℎ', - 'ℏ' => 'ℏ', - 'ℐ' => 'ℐ', - 'ℑ' => 'ℑ', - 'ℒ' => 'ℒ', - 'ℓ' => 'ℓ', - 'ℕ' => 'ℕ', - '№' => '№', - '℗' => '℗', - '℘' => '℘', - 'ℙ' => 'ℙ', - 'ℚ' => 'ℚ', - 'ℛ' => 'ℛ', - 'ℜ' => 'ℜ', - 'ℝ' => 'ℝ', - '℞' => '℞', - '™' => '™', - 'ℤ' => 'ℤ', - '℧' => '℧', - 'ℨ' => 'ℨ', - '℩' => '℩', - 'ℬ' => 'ℬ', - 'ℭ' => 'ℭ', - 'ℯ' => 'ℯ', - 'ℰ' => 'ℰ', - 'ℱ' => 'ℱ', - 'ℳ' => 'ℳ', - 'ℴ' => 'ℴ', - 'ℵ' => 'ℵ', - 'ℶ' => 'ℶ', - 'ℷ' => 'ℷ', - 'ℸ' => 'ℸ', - 'ⅅ' => 'ⅅ', - 'ⅆ' => 'ⅆ', - 'ⅇ' => 'ⅇ', - 'ⅈ' => 'ⅈ', - '⅓' => '⅓', - '⅔' => '⅔', - '⅕' => '⅕', - '⅖' => '⅖', - '⅗' => '⅗', - '⅘' => '⅘', - '⅙' => '⅙', - '⅚' => '⅚', - '⅛' => '⅛', - '⅜' => '⅜', - '⅝' => '⅝', - '⅞' => '⅞', - '←' => '←', - '↑' => '↑', - '→' => '→', - '↓' => '↓', - '↔' => '↔', - '↕' => '↕', - '↖' => '↖', - '↗' => '↗', - '↘' => '↘', - '↙' => '↙', - '↚' => '↚', - '↛' => '↛', - '↝' => '↝', - '↝̸' => '&nrarrw', - '↞' => '↞', - '↟' => '↟', - '↠' => '↠', - '↡' => '↡', - '↢' => '↢', - '↣' => '↣', - '↤' => '↤', - '↥' => '↥', - '↦' => '↦', - '↧' => '↧', - '↩' => '↩', - '↪' => '↪', - '↫' => '↫', - '↬' => '↬', - '↭' => '↭', - '↮' => '↮', - '↰' => '↰', - '↱' => '↱', - '↲' => '↲', - '↳' => '↳', - '↵' => '↵', - '↶' => '↶', - '↷' => '↷', - '↺' => '↺', - '↻' => '↻', - '↼' => '↼', - '↽' => '↽', - '↾' => '↾', - '↿' => '↿', - '⇀' => '⇀', - '⇁' => '⇁', - '⇂' => '⇂', - '⇃' => '⇃', - '⇄' => '⇄', - '⇅' => '⇅', - '⇆' => '⇆', - '⇇' => '⇇', - '⇈' => '⇈', - '⇉' => '⇉', - '⇊' => '⇊', - '⇋' => '⇋', - '⇌' => '⇌', - '⇍' => '⇍', - '⇎' => '⇎', - '⇏' => '⇏', - '⇐' => '⇐', - '⇑' => '⇑', - '⇒' => '⇒', - '⇓' => '⇓', - '⇔' => '⇔', - '⇕' => '⇕', - '⇖' => '⇖', - '⇗' => '⇗', - '⇘' => '⇘', - '⇙' => '⇙', - '⇚' => '⇚', - '⇛' => '⇛', - '⇝' => '⇝', - '⇤' => '⇤', - '⇥' => '⇥', - '⇵' => '⇵', - '⇽' => '⇽', - '⇾' => '⇾', - '⇿' => '⇿', - '∀' => '∀', - '∁' => '∁', - '∂' => '∂', - '∂̸' => '&npart', - '∃' => '∃', - '∄' => '∄', - '∅' => '∅', - '∇' => '∇', - '∈' => '∈', - '∉' => '∉', - '∋' => '∋', - '∌' => '∌', - '∏' => '∏', - '∐' => '∐', - '∑' => '∑', - '−' => '−', - '∓' => '∓', - '∔' => '∔', - '∖' => '∖', - '∗' => '∗', - '∘' => '∘', - '√' => '√', - '∝' => '∝', - '∞' => '∞', - '∟' => '∟', - '∠' => '∠', - '∠⃒' => '&nang', - '∡' => '∡', - '∢' => '∢', - '∣' => '∣', - '∤' => '∤', - '∥' => '∥', - '∦' => '∦', - '∧' => '∧', - '∨' => '∨', - '∩' => '∩', - '∩︀' => '&caps', - '∪' => '∪', - '∪︀' => '&cups', - '∫' => '∫', - '∬' => '∬', - '∭' => '∭', - '∮' => '∮', - '∯' => '∯', - '∰' => '∰', - '∱' => '∱', - '∲' => '∲', - '∳' => '∳', - '∴' => '∴', - '∵' => '∵', - '∶' => '∶', - '∷' => '∷', - '∸' => '∸', - '∺' => '∺', - '∻' => '∻', - '∼' => '∼', - '∼⃒' => '&nvsim', - '∽' => '∽', - '∽̱' => '&race', - '∾' => '∾', - '∾̳' => '&acE', - '∿' => '∿', - '≀' => '≀', - '≁' => '≁', - '≂' => '≂', - '≂̸' => '&nesim', - '≃' => '≃', - '≄' => '≄', - '≅' => '≅', - '≆' => '≆', - '≇' => '≇', - '≈' => '≈', - '≉' => '≉', - '≊' => '≊', - '≋' => '≋', - '≋̸' => '&napid', - '≌' => '≌', - '≍' => '≍', - '≍⃒' => '&nvap', - '≎' => '≎', - '≎̸' => '&nbump', - '≏' => '≏', - '≏̸' => '&nbumpe', - '≐' => '≐', - '≐̸' => '&nedot', - '≑' => '≑', - '≒' => '≒', - '≓' => '≓', - '≔' => '≔', - '≕' => '≕', - '≖' => '≖', - '≗' => '≗', - '≙' => '≙', - '≚' => '≚', - '≜' => '≜', - '≟' => '≟', - '≠' => '≠', - '≡' => '≡', - '≡⃥' => '&bnequiv', - '≢' => '≢', - '≤' => '≤', - '≤⃒' => '&nvle', - '≥' => '≥', - '≥⃒' => '&nvge', - '≦' => '≦', - '≦̸' => '&nlE', - '≧' => '≧', - '≧̸' => '&NotGreaterFullEqual', - '≨' => '≨', - '≨︀' => '&lvertneqq', - '≩' => '≩', - '≩︀' => '&gvertneqq', - '≪' => '≪', - '≪̸' => '&nLtv', - '≪⃒' => '&nLt', - '≫' => '≫', - '≫̸' => '&NotGreaterGreater', - '≫⃒' => '&nGt', - '≬' => '≬', - '≭' => '≭', - '≮' => '≮', - '≯' => '≯', - '≰' => '≰', - '≱' => '≱', - '≲' => '≲', - '≳' => '≳', - '≴' => '≴', - '≵' => '≵', - '≶' => '≶', - '≷' => '≷', - '≸' => '≸', - '≹' => '≹', - '≺' => '≺', - '≻' => '≻', - '≼' => '≼', - '≽' => '≽', - '≾' => '≾', - '≿' => '≿', - '≿̸' => '&NotSucceedsTilde', - '⊀' => '⊀', - '⊁' => '⊁', - '⊂' => '⊂', - '⊂⃒' => '&vnsub', - '⊃' => '⊃', - '⊃⃒' => '&nsupset', - '⊄' => '⊄', - '⊅' => '⊅', - '⊆' => '⊆', - '⊇' => '⊇', - '⊈' => '⊈', - '⊉' => '⊉', - '⊊' => '⊊', - '⊊︀' => '&vsubne', - '⊋' => '⊋', - '⊋︀' => '&vsupne', - '⊍' => '⊍', - '⊎' => '⊎', - '⊏' => '⊏', - '⊏̸' => '&NotSquareSubset', - '⊐' => '⊐', - '⊐̸' => '&NotSquareSuperset', - '⊑' => '⊑', - '⊒' => '⊒', - '⊓' => '⊓', - '⊓︀' => '&sqcaps', - '⊔' => '⊔', - '⊔︀' => '&sqcups', - '⊕' => '⊕', - '⊖' => '⊖', - '⊗' => '⊗', - '⊘' => '⊘', - '⊙' => '⊙', - '⊚' => '⊚', - '⊛' => '⊛', - '⊝' => '⊝', - '⊞' => '⊞', - '⊟' => '⊟', - '⊠' => '⊠', - '⊡' => '⊡', - '⊢' => '⊢', - '⊣' => '⊣', - '⊤' => '⊤', - '⊥' => '⊥', - '⊧' => '⊧', - '⊨' => '⊨', - '⊩' => '⊩', - '⊪' => '⊪', - '⊫' => '⊫', - '⊬' => '⊬', - '⊭' => '⊭', - '⊮' => '⊮', - '⊯' => '⊯', - '⊰' => '⊰', - '⊲' => '⊲', - '⊳' => '⊳', - '⊴' => '⊴', - '⊴⃒' => '&nvltrie', - '⊵' => '⊵', - '⊵⃒' => '&nvrtrie', - '⊶' => '⊶', - '⊷' => '⊷', - '⊸' => '⊸', - '⊹' => '⊹', - '⊺' => '⊺', - '⊻' => '⊻', - '⊽' => '⊽', - '⊾' => '⊾', - '⊿' => '⊿', - '⋀' => '⋀', - '⋁' => '⋁', - '⋂' => '⋂', - '⋃' => '⋃', - '⋄' => '⋄', - '⋅' => '⋅', - '⋆' => '⋆', - '⋇' => '⋇', - '⋈' => '⋈', - '⋉' => '⋉', - '⋊' => '⋊', - '⋋' => '⋋', - '⋌' => '⋌', - '⋍' => '⋍', - '⋎' => '⋎', - '⋏' => '⋏', - '⋐' => '⋐', - '⋑' => '⋑', - '⋒' => '⋒', - '⋓' => '⋓', - '⋔' => '⋔', - '⋕' => '⋕', - '⋖' => '⋖', - '⋗' => '⋗', - '⋘' => '⋘', - '⋘̸' => '&nLl', - '⋙' => '⋙', - '⋙̸' => '&nGg', - '⋚' => '⋚', - '⋚︀' => '&lesg', - '⋛' => '⋛', - '⋛︀' => '&gesl', - '⋞' => '⋞', - '⋟' => '⋟', - '⋠' => '⋠', - '⋡' => '⋡', - '⋢' => '⋢', - '⋣' => '⋣', - '⋦' => '⋦', - '⋧' => '⋧', - '⋨' => '⋨', - '⋩' => '⋩', - '⋪' => '⋪', - '⋫' => '⋫', - '⋬' => '⋬', - '⋭' => '⋭', - '⋮' => '⋮', - '⋯' => '⋯', - '⋰' => '⋰', - '⋱' => '⋱', - '⋲' => '⋲', - '⋳' => '⋳', - '⋴' => '⋴', - '⋵' => '⋵', - '⋵̸' => '¬indot', - '⋶' => '⋶', - '⋷' => '⋷', - '⋹' => '⋹', - '⋹̸' => '¬inE', - '⋺' => '⋺', - '⋻' => '⋻', - '⋼' => '⋼', - '⋽' => '⋽', - '⋾' => '⋾', - '⌅' => '⌅', - '⌆' => '⌆', - '⌈' => '⌈', - '⌉' => '⌉', - '⌊' => '⌊', - '⌋' => '⌋', - '⌌' => '⌌', - '⌍' => '⌍', - '⌎' => '⌎', - '⌏' => '⌏', - '⌐' => '⌐', - '⌒' => '⌒', - '⌓' => '⌓', - '⌕' => '⌕', - '⌖' => '⌖', - '⌜' => '⌜', - '⌝' => '⌝', - '⌞' => '⌞', - '⌟' => '⌟', - '⌢' => '⌢', - '⌣' => '⌣', - '⌭' => '⌭', - '⌮' => '⌮', - '⌶' => '⌶', - '⌽' => '⌽', - '⌿' => '⌿', - '⍼' => '⍼', - '⎰' => '⎰', - '⎱' => '⎱', - '⎴' => '⎴', - '⎵' => '⎵', - '⎶' => '⎶', - '⏜' => '⏜', - '⏝' => '⏝', - '⏞' => '⏞', - '⏟' => '⏟', - '⏢' => '⏢', - '⏧' => '⏧', - '␣' => '␣', - 'Ⓢ' => 'Ⓢ', - '─' => '─', - '│' => '│', - '┌' => '┌', - '┐' => '┐', - '└' => '└', - '┘' => '┘', - '├' => '├', - '┤' => '┤', - '┬' => '┬', - '┴' => '┴', - '┼' => '┼', - '═' => '═', - '║' => '║', - '╒' => '╒', - '╓' => '╓', - '╔' => '╔', - '╕' => '╕', - '╖' => '╖', - '╗' => '╗', - '╘' => '╘', - '╙' => '╙', - '╚' => '╚', - '╛' => '╛', - '╜' => '╜', - '╝' => '╝', - '╞' => '╞', - '╟' => '╟', - '╠' => '╠', - '╡' => '╡', - '╢' => '╢', - '╣' => '╣', - '╤' => '╤', - '╥' => '╥', - '╦' => '╦', - '╧' => '╧', - '╨' => '╨', - '╩' => '╩', - '╪' => '╪', - '╫' => '╫', - '╬' => '╬', - '▀' => '▀', - '▄' => '▄', - '█' => '█', - '░' => '░', - '▒' => '▒', - '▓' => '▓', - '□' => '□', - '▪' => '▪', - '▫' => '▫', - '▭' => '▭', - '▮' => '▮', - '▱' => '▱', - '△' => '△', - '▴' => '▴', - '▵' => '▵', - '▸' => '▸', - '▹' => '▹', - '▽' => '▽', - '▾' => '▾', - '▿' => '▿', - '◂' => '◂', - '◃' => '◃', - '◊' => '◊', - '○' => '○', - '◬' => '◬', - '◯' => '◯', - '◸' => '◸', - '◹' => '◹', - '◺' => '◺', - '◻' => '◻', - '◼' => '◼', - '★' => '★', - '☆' => '☆', - '☎' => '☎', - '♀' => '♀', - '♂' => '♂', - '♠' => '♠', - '♣' => '♣', - '♥' => '♥', - '♦' => '♦', - '♪' => '♪', - '♭' => '♭', - '♮' => '♮', - '♯' => '♯', - '✓' => '✓', - '✗' => '✗', - '✠' => '✠', - '✶' => '✶', - '❘' => '❘', - '❲' => '❲', - '❳' => '❳', - '⟈' => '⟈', - '⟉' => '⟉', - '⟦' => '⟦', - '⟧' => '⟧', - '⟨' => '⟨', - '⟩' => '⟩', - '⟪' => '⟪', - '⟫' => '⟫', - '⟬' => '⟬', - '⟭' => '⟭', - '⟵' => '⟵', - '⟶' => '⟶', - '⟷' => '⟷', - '⟸' => '⟸', - '⟹' => '⟹', - '⟺' => '⟺', - '⟼' => '⟼', - '⟿' => '⟿', - '⤂' => '⤂', - '⤃' => '⤃', - '⤄' => '⤄', - '⤅' => '⤅', - '⤌' => '⤌', - '⤍' => '⤍', - '⤎' => '⤎', - '⤏' => '⤏', - '⤐' => '⤐', - '⤑' => '⤑', - '⤒' => '⤒', - '⤓' => '⤓', - '⤖' => '⤖', - '⤙' => '⤙', - '⤚' => '⤚', - '⤛' => '⤛', - '⤜' => '⤜', - '⤝' => '⤝', - '⤞' => '⤞', - '⤟' => '⤟', - '⤠' => '⤠', - '⤣' => '⤣', - '⤤' => '⤤', - '⤥' => '⤥', - '⤦' => '⤦', - '⤧' => '⤧', - '⤨' => '⤨', - '⤩' => '⤩', - '⤪' => '⤪', - '⤳' => '⤳', - '⤳̸' => '&nrarrc', - '⤵' => '⤵', - '⤶' => '⤶', - '⤷' => '⤷', - '⤸' => '⤸', - '⤹' => '⤹', - '⤼' => '⤼', - '⤽' => '⤽', - '⥅' => '⥅', - '⥈' => '⥈', - '⥉' => '⥉', - '⥊' => '⥊', - '⥋' => '⥋', - '⥎' => '⥎', - '⥏' => '⥏', - '⥐' => '⥐', - '⥑' => '⥑', - '⥒' => '⥒', - '⥓' => '⥓', - '⥔' => '⥔', - '⥕' => '⥕', - '⥖' => '⥖', - '⥗' => '⥗', - '⥘' => '⥘', - '⥙' => '⥙', - '⥚' => '⥚', - '⥛' => '⥛', - '⥜' => '⥜', - '⥝' => '⥝', - '⥞' => '⥞', - '⥟' => '⥟', - '⥠' => '⥠', - '⥡' => '⥡', - '⥢' => '⥢', - '⥣' => '⥣', - '⥤' => '⥤', - '⥥' => '⥥', - '⥦' => '⥦', - '⥧' => '⥧', - '⥨' => '⥨', - '⥩' => '⥩', - '⥪' => '⥪', - '⥫' => '⥫', - '⥬' => '⥬', - '⥭' => '⥭', - '⥮' => '⥮', - '⥯' => '⥯', - '⥰' => '⥰', - '⥱' => '⥱', - '⥲' => '⥲', - '⥳' => '⥳', - '⥴' => '⥴', - '⥵' => '⥵', - '⥶' => '⥶', - '⥸' => '⥸', - '⥹' => '⥹', - '⥻' => '⥻', - '⥼' => '⥼', - '⥽' => '⥽', - '⥾' => '⥾', - '⥿' => '⥿', - '⦅' => '⦅', - '⦆' => '⦆', - '⦋' => '⦋', - '⦌' => '⦌', - '⦍' => '⦍', - '⦎' => '⦎', - '⦏' => '⦏', - '⦐' => '⦐', - '⦑' => '⦑', - '⦒' => '⦒', - '⦓' => '⦓', - '⦔' => '⦔', - '⦕' => '⦕', - '⦖' => '⦖', - '⦚' => '⦚', - '⦜' => '⦜', - '⦝' => '⦝', - '⦤' => '⦤', - '⦥' => '⦥', - '⦦' => '⦦', - '⦧' => '⦧', - '⦨' => '⦨', - '⦩' => '⦩', - '⦪' => '⦪', - '⦫' => '⦫', - '⦬' => '⦬', - '⦭' => '⦭', - '⦮' => '⦮', - '⦯' => '⦯', - '⦰' => '⦰', - '⦱' => '⦱', - '⦲' => '⦲', - '⦳' => '⦳', - '⦴' => '⦴', - '⦵' => '⦵', - '⦶' => '⦶', - '⦷' => '⦷', - '⦹' => '⦹', - '⦻' => '⦻', - '⦼' => '⦼', - '⦾' => '⦾', - '⦿' => '⦿', - '⧀' => '⧀', - '⧁' => '⧁', - '⧂' => '⧂', - '⧃' => '⧃', - '⧄' => '⧄', - '⧅' => '⧅', - '⧉' => '⧉', - '⧍' => '⧍', - '⧎' => '⧎', - '⧏' => '⧏', - '⧏̸' => '&NotLeftTriangleBar', - '⧐' => '⧐', - '⧐̸' => '&NotRightTriangleBar', - '⧜' => '⧜', - '⧝' => '⧝', - '⧞' => '⧞', - '⧣' => '⧣', - '⧤' => '⧤', - '⧥' => '⧥', - '⧫' => '⧫', - '⧴' => '⧴', - '⧶' => '⧶', - '⨀' => '⨀', - '⨁' => '⨁', - '⨂' => '⨂', - '⨄' => '⨄', - '⨆' => '⨆', - '⨌' => '⨌', - '⨍' => '⨍', - '⨐' => '⨐', - '⨑' => '⨑', - '⨒' => '⨒', - '⨓' => '⨓', - '⨔' => '⨔', - '⨕' => '⨕', - '⨖' => '⨖', - '⨗' => '⨗', - '⨢' => '⨢', - '⨣' => '⨣', - '⨤' => '⨤', - '⨥' => '⨥', - '⨦' => '⨦', - '⨧' => '⨧', - '⨩' => '⨩', - '⨪' => '⨪', - '⨭' => '⨭', - '⨮' => '⨮', - '⨯' => '⨯', - '⨰' => '⨰', - '⨱' => '⨱', - '⨳' => '⨳', - '⨴' => '⨴', - '⨵' => '⨵', - '⨶' => '⨶', - '⨷' => '⨷', - '⨸' => '⨸', - '⨹' => '⨹', - '⨺' => '⨺', - '⨻' => '⨻', - '⨼' => '⨼', - '⨿' => '⨿', - '⩀' => '⩀', - '⩂' => '⩂', - '⩃' => '⩃', - '⩄' => '⩄', - '⩅' => '⩅', - '⩆' => '⩆', - '⩇' => '⩇', - '⩈' => '⩈', - '⩉' => '⩉', - '⩊' => '⩊', - '⩋' => '⩋', - '⩌' => '⩌', - '⩍' => '⩍', - '⩐' => '⩐', - '⩓' => '⩓', - '⩔' => '⩔', - '⩕' => '⩕', - '⩖' => '⩖', - '⩗' => '⩗', - '⩘' => '⩘', - '⩚' => '⩚', - '⩛' => '⩛', - '⩜' => '⩜', - '⩝' => '⩝', - '⩟' => '⩟', - '⩦' => '⩦', - '⩪' => '⩪', - '⩭' => '⩭', - '⩭̸' => '&ncongdot', - '⩮' => '⩮', - '⩯' => '⩯', - '⩰' => '⩰', - '⩰̸' => '&napE', - '⩱' => '⩱', - '⩲' => '⩲', - '⩳' => '⩳', - '⩴' => '⩴', - '⩵' => '⩵', - '⩷' => '⩷', - '⩸' => '⩸', - '⩹' => '⩹', - '⩺' => '⩺', - '⩻' => '⩻', - '⩼' => '⩼', - '⩽' => '⩽', - '⩽̸' => '&nles', - '⩾' => '⩾', - '⩾̸' => '&nges', - '⩿' => '⩿', - '⪀' => '⪀', - '⪁' => '⪁', - '⪂' => '⪂', - '⪃' => '⪃', - '⪄' => '⪄', - '⪅' => '⪅', - '⪆' => '⪆', - '⪇' => '⪇', - '⪈' => '⪈', - '⪉' => '⪉', - '⪊' => '⪊', - '⪋' => '⪋', - '⪌' => '⪌', - '⪍' => '⪍', - '⪎' => '⪎', - '⪏' => '⪏', - '⪐' => '⪐', - '⪑' => '⪑', - '⪒' => '⪒', - '⪓' => '⪓', - '⪔' => '⪔', - '⪕' => '⪕', - '⪖' => '⪖', - '⪗' => '⪗', - '⪘' => '⪘', - '⪙' => '⪙', - '⪚' => '⪚', - '⪝' => '⪝', - '⪞' => '⪞', - '⪟' => '⪟', - '⪠' => '⪠', - '⪡' => '⪡', - '⪡̸' => '&NotNestedLessLess', - '⪢' => '⪢', - '⪢̸' => '&NotNestedGreaterGreater', - '⪤' => '⪤', - '⪥' => '⪥', - '⪦' => '⪦', - '⪧' => '⪧', - '⪨' => '⪨', - '⪩' => '⪩', - '⪪' => '⪪', - '⪫' => '⪫', - '⪬' => '⪬', - '⪬︀' => '&smtes', - '⪭' => '⪭', - '⪭︀' => '&lates', - '⪮' => '⪮', - '⪯' => '⪯', - '⪯̸' => '&NotPrecedesEqual', - '⪰' => '⪰', - '⪰̸' => '&NotSucceedsEqual', - '⪳' => '⪳', - '⪴' => '⪴', - '⪵' => '⪵', - '⪶' => '⪶', - '⪷' => '⪷', - '⪸' => '⪸', - '⪹' => '⪹', - '⪺' => '⪺', - '⪻' => '⪻', - '⪼' => '⪼', - '⪽' => '⪽', - '⪾' => '⪾', - '⪿' => '⪿', - '⫀' => '⫀', - '⫁' => '⫁', - '⫂' => '⫂', - '⫃' => '⫃', - '⫄' => '⫄', - '⫅' => '⫅', - '⫅̸' => '&nsubE', - '⫆' => '⫆', - '⫆̸' => '&nsupseteqq', - '⫇' => '⫇', - '⫈' => '⫈', - '⫋' => '⫋', - '⫋︀' => '&vsubnE', - '⫌' => '⫌', - '⫌︀' => '&varsupsetneqq', - '⫏' => '⫏', - '⫐' => '⫐', - '⫑' => '⫑', - '⫒' => '⫒', - '⫓' => '⫓', - '⫔' => '⫔', - '⫕' => '⫕', - '⫖' => '⫖', - '⫗' => '⫗', - '⫘' => '⫘', - '⫙' => '⫙', - '⫚' => '⫚', - '⫛' => '⫛', - '⫤' => '⫤', - '⫦' => '⫦', - '⫧' => '⫧', - '⫨' => '⫨', - '⫩' => '⫩', - '⫫' => '⫫', - '⫬' => '⫬', - '⫭' => '⫭', - '⫮' => '⫮', - '⫯' => '⫯', - '⫰' => '⫰', - '⫱' => '⫱', - '⫲' => '⫲', - '⫳' => '⫳', - '⫽︀' => '&varsupsetneqq', - 'ff' => 'ff', - 'fi' => 'fi', - 'fl' => 'fl', - 'ffi' => 'ffi', - 'ffl' => 'ffl', - '𝒜' => '𝒜', - '𝒞' => '𝒞', - '𝒟' => '𝒟', - '𝒢' => '𝒢', - '𝒥' => '𝒥', - '𝒦' => '𝒦', - '𝒩' => '𝒩', - '𝒪' => '𝒪', - '𝒫' => '𝒫', - '𝒬' => '𝒬', - '𝒮' => '𝒮', - '𝒯' => '𝒯', - '𝒰' => '𝒰', - '𝒱' => '𝒱', - '𝒲' => '𝒲', - '𝒳' => '𝒳', - '𝒴' => '𝒴', - '𝒵' => '𝒵', - '𝒶' => '𝒶', - '𝒷' => '𝒷', - '𝒸' => '𝒸', - '𝒹' => '𝒹', - '𝒻' => '𝒻', - '𝒽' => '𝒽', - '𝒾' => '𝒾', - '𝒿' => '𝒿', - '𝓀' => '𝓀', - '𝓁' => '𝓁', - '𝓂' => '𝓂', - '𝓃' => '𝓃', - '𝓅' => '𝓅', - '𝓆' => '𝓆', - '𝓇' => '𝓇', - '𝓈' => '𝓈', - '𝓉' => '𝓉', - '𝓊' => '𝓊', - '𝓋' => '𝓋', - '𝓌' => '𝓌', - '𝓍' => '𝓍', - '𝓎' => '𝓎', - '𝓏' => '𝓏', - '𝔄' => '𝔄', - '𝔅' => '𝔅', - '𝔇' => '𝔇', - '𝔈' => '𝔈', - '𝔉' => '𝔉', - '𝔊' => '𝔊', - '𝔍' => '𝔍', - '𝔎' => '𝔎', - '𝔏' => '𝔏', - '𝔐' => '𝔐', - '𝔑' => '𝔑', - '𝔒' => '𝔒', - '𝔓' => '𝔓', - '𝔔' => '𝔔', - '𝔖' => '𝔖', - '𝔗' => '𝔗', - '𝔘' => '𝔘', - '𝔙' => '𝔙', - '𝔚' => '𝔚', - '𝔛' => '𝔛', - '𝔜' => '𝔜', - '𝔞' => '𝔞', - '𝔟' => '𝔟', - '𝔠' => '𝔠', - '𝔡' => '𝔡', - '𝔢' => '𝔢', - '𝔣' => '𝔣', - '𝔤' => '𝔤', - '𝔥' => '𝔥', - '𝔦' => '𝔦', - '𝔧' => '𝔧', - '𝔨' => '𝔨', - '𝔩' => '𝔩', - '𝔪' => '𝔪', - '𝔫' => '𝔫', - '𝔬' => '𝔬', - '𝔭' => '𝔭', - '𝔮' => '𝔮', - '𝔯' => '𝔯', - '𝔰' => '𝔰', - '𝔱' => '𝔱', - '𝔲' => '𝔲', - '𝔳' => '𝔳', - '𝔴' => '𝔴', - '𝔵' => '𝔵', - '𝔶' => '𝔶', - '𝔷' => '𝔷', - '𝔸' => '𝔸', - '𝔹' => '𝔹', - '𝔻' => '𝔻', - '𝔼' => '𝔼', - '𝔽' => '𝔽', - '𝔾' => '𝔾', - '𝕀' => '𝕀', - '𝕁' => '𝕁', - '𝕂' => '𝕂', - '𝕃' => '𝕃', - '𝕄' => '𝕄', - '𝕆' => '𝕆', - '𝕊' => '𝕊', - '𝕋' => '𝕋', - '𝕌' => '𝕌', - '𝕍' => '𝕍', - '𝕎' => '𝕎', - '𝕏' => '𝕏', - '𝕐' => '𝕐', - '𝕒' => '𝕒', - '𝕓' => '𝕓', - '𝕔' => '𝕔', - '𝕕' => '𝕕', - '𝕖' => '𝕖', - '𝕗' => '𝕗', - '𝕘' => '𝕘', - '𝕙' => '𝕙', - '𝕚' => '𝕚', - '𝕛' => '𝕛', - '𝕜' => '𝕜', - '𝕝' => '𝕝', - '𝕞' => '𝕞', - '𝕟' => '𝕟', - '𝕠' => '𝕠', - '𝕡' => '𝕡', - '𝕢' => '𝕢', - '𝕣' => '𝕣', - '𝕤' => '𝕤', - '𝕥' => '𝕥', - '𝕦' => '𝕦', - '𝕧' => '𝕧', - '𝕨' => '𝕨', - '𝕩' => '𝕩', - '𝕪' => '𝕪', - '𝕫' => '𝕫', - ); -} diff --git a/vendor/masterminds/html5/src/HTML5/Serializer/OutputRules.php b/vendor/masterminds/html5/src/HTML5/Serializer/OutputRules.php deleted file mode 100644 index ec467f22..00000000 --- a/vendor/masterminds/html5/src/HTML5/Serializer/OutputRules.php +++ /dev/null @@ -1,553 +0,0 @@ -'http://www.w3.org/1999/xhtml', - 'attrNamespace'=>'http://www.w3.org/1999/xhtml', - - 'nodeName'=>'img', 'nodeName'=>array('img', 'a'), - 'attrName'=>'alt', 'attrName'=>array('title', 'alt'), - ), - */ - array( - 'nodeNamespace' => 'http://www.w3.org/1999/xhtml', - 'attrName' => array('href', - 'hreflang', - 'http-equiv', - 'icon', - 'id', - 'keytype', - 'kind', - 'label', - 'lang', - 'language', - 'list', - 'maxlength', - 'media', - 'method', - 'name', - 'placeholder', - 'rel', - 'rows', - 'rowspan', - 'sandbox', - 'spellcheck', - 'scope', - 'seamless', - 'shape', - 'size', - 'sizes', - 'span', - 'src', - 'srcdoc', - 'srclang', - 'srcset', - 'start', - 'step', - 'style', - 'summary', - 'tabindex', - 'target', - 'title', - 'type', - 'value', - 'width', - 'border', - 'charset', - 'cite', - 'class', - 'code', - 'codebase', - 'color', - 'cols', - 'colspan', - 'content', - 'coords', - 'data', - 'datetime', - 'default', - 'dir', - 'dirname', - 'enctype', - 'for', - 'form', - 'formaction', - 'headers', - 'height', - 'accept', - 'accept-charset', - 'accesskey', - 'action', - 'align', - 'alt', - 'bgcolor', - ), - ), - array( - 'nodeNamespace' => 'http://www.w3.org/1999/xhtml', - 'xpath' => 'starts-with(local-name(), \'data-\')', - ), - ); - - const DOCTYPE = ''; - - public function __construct($output, $options = array()) - { - if (isset($options['encode_entities'])) { - $this->encode = $options['encode_entities']; - } - - $this->outputMode = static::IM_IN_HTML; - $this->out = $output; - $this->hasHTML5 = defined('ENT_HTML5'); - } - - public function addRule(array $rule) - { - $this->nonBooleanAttributes[] = $rule; - } - - public function setTraverser(Traverser $traverser) - { - $this->traverser = $traverser; - - return $this; - } - - public function unsetTraverser() - { - $this->traverser = null; - - return $this; - } - - public function document($dom) - { - $this->doctype(); - if ($dom->documentElement) { - foreach ($dom->childNodes as $node) { - $this->traverser->node($node); - } - $this->nl(); - } - } - - protected function doctype() - { - $this->wr(static::DOCTYPE); - $this->nl(); - } - - public function element($ele) - { - $name = $ele->tagName; - - // Per spec: - // If the element has a declared namespace in the HTML, MathML or - // SVG namespaces, we use the lname instead of the tagName. - if ($this->traverser->isLocalElement($ele)) { - $name = $ele->localName; - } - - // If we are in SVG or MathML there is special handling. - // Using if/elseif instead of switch because it's faster in PHP. - if ('svg' == $name) { - $this->outputMode = static::IM_IN_SVG; - $name = Elements::normalizeSvgElement($name); - } elseif ('math' == $name) { - $this->outputMode = static::IM_IN_MATHML; - } - - $this->openTag($ele); - if (Elements::isA($name, Elements::TEXT_RAW)) { - foreach ($ele->childNodes as $child) { - if ($child instanceof \DOMCharacterData) { - $this->wr($child->data); - } elseif ($child instanceof \DOMElement) { - $this->element($child); - } - } - } else { - // Handle children. - if ($ele->hasChildNodes()) { - $this->traverser->children($ele->childNodes); - } - - // Close out the SVG or MathML special handling. - if ('svg' == $name || 'math' == $name) { - $this->outputMode = static::IM_IN_HTML; - } - } - - // If not unary, add a closing tag. - if (!Elements::isA($name, Elements::VOID_TAG)) { - $this->closeTag($ele); - } - } - - /** - * Write a text node. - * - * @param \DOMText $ele The text node to write. - */ - public function text($ele) - { - if (isset($ele->parentNode) && isset($ele->parentNode->tagName) && Elements::isA($ele->parentNode->localName, Elements::TEXT_RAW)) { - $this->wr($ele->data); - - return; - } - - // FIXME: This probably needs some flags set. - $this->wr($this->enc($ele->data)); - } - - public function cdata($ele) - { - // This encodes CDATA. - $this->wr($ele->ownerDocument->saveXML($ele)); - } - - public function comment($ele) - { - // These produce identical output. - // $this->wr(''); - $this->wr($ele->ownerDocument->saveXML($ele)); - } - - public function processorInstruction($ele) - { - $this->wr('wr($ele->target) - ->wr(' ') - ->wr($ele->data) - ->wr('?>'); - } - - /** - * Write the namespace attributes. - * - * @param \DOMNode $ele The element being written. - */ - protected function namespaceAttrs($ele) - { - if (!$this->xpath || $this->xpath->document !== $ele->ownerDocument) { - $this->xpath = new \DOMXPath($ele->ownerDocument); - } - - foreach ($this->xpath->query('namespace::*[not(.=../../namespace::*)]', $ele) as $nsNode) { - if (!in_array($nsNode->nodeValue, $this->implicitNamespaces)) { - $this->wr(' ')->wr($nsNode->nodeName)->wr('="')->wr($nsNode->nodeValue)->wr('"'); - } - } - } - - /** - * Write the opening tag. - * - * Tags for HTML, MathML, and SVG are in the local name. Otherwise, use the - * qualified name (8.3). - * - * @param \DOMNode $ele The element being written. - */ - protected function openTag($ele) - { - $this->wr('<')->wr($this->traverser->isLocalElement($ele) ? $ele->localName : $ele->tagName); - - $this->attrs($ele); - $this->namespaceAttrs($ele); - - if ($this->outputMode == static::IM_IN_HTML) { - $this->wr('>'); - } // If we are not in html mode we are in SVG, MathML, or XML embedded content. - else { - if ($ele->hasChildNodes()) { - $this->wr('>'); - } // If there are no children this is self closing. - else { - $this->wr(' />'); - } - } - } - - protected function attrs($ele) - { - // FIXME: Needs support for xml, xmlns, xlink, and namespaced elements. - if (!$ele->hasAttributes()) { - return $this; - } - - // TODO: Currently, this always writes name="value", and does not do - // value-less attributes. - $map = $ele->attributes; - $len = $map->length; - for ($i = 0; $i < $len; ++$i) { - $node = $map->item($i); - $val = $this->enc($node->value, true); - - // XXX: The spec says that we need to ensure that anything in - // the XML, XMLNS, or XLink NS's should use the canonical - // prefix. It seems that DOM does this for us already, but there - // may be exceptions. - $name = $node->nodeName; - - // Special handling for attributes in SVG and MathML. - // Using if/elseif instead of switch because it's faster in PHP. - if ($this->outputMode == static::IM_IN_SVG) { - $name = Elements::normalizeSvgAttribute($name); - } elseif ($this->outputMode == static::IM_IN_MATHML) { - $name = Elements::normalizeMathMlAttribute($name); - } - - $this->wr(' ')->wr($name); - - if ((isset($val) && '' !== $val) || $this->nonBooleanAttribute($node)) { - $this->wr('="')->wr($val)->wr('"'); - } - } - } - - protected function nonBooleanAttribute(\DOMAttr $attr) - { - $ele = $attr->ownerElement; - foreach ($this->nonBooleanAttributes as $rule) { - if (isset($rule['nodeNamespace']) && $rule['nodeNamespace'] !== $ele->namespaceURI) { - continue; - } - if (isset($rule['attNamespace']) && $rule['attNamespace'] !== $attr->namespaceURI) { - continue; - } - if (isset($rule['nodeName']) && !is_array($rule['nodeName']) && $rule['nodeName'] !== $ele->localName) { - continue; - } - if (isset($rule['nodeName']) && is_array($rule['nodeName']) && !in_array($ele->localName, $rule['nodeName'], true)) { - continue; - } - if (isset($rule['attrName']) && !is_array($rule['attrName']) && $rule['attrName'] !== $attr->localName) { - continue; - } - if (isset($rule['attrName']) && is_array($rule['attrName']) && !in_array($attr->localName, $rule['attrName'], true)) { - continue; - } - if (isset($rule['xpath'])) { - $xp = $this->getXPath($attr); - if (isset($rule['prefixes'])) { - foreach ($rule['prefixes'] as $nsPrefix => $ns) { - $xp->registerNamespace($nsPrefix, $ns); - } - } - if (!$xp->evaluate($rule['xpath'], $attr)) { - continue; - } - } - - return true; - } - - return false; - } - - private function getXPath(\DOMNode $node) - { - if (!$this->xpath) { - $this->xpath = new \DOMXPath($node->ownerDocument); - } - - return $this->xpath; - } - - /** - * Write the closing tag. - * - * Tags for HTML, MathML, and SVG are in the local name. Otherwise, use the - * qualified name (8.3). - * - * @param \DOMNode $ele The element being written. - */ - protected function closeTag($ele) - { - if ($this->outputMode == static::IM_IN_HTML || $ele->hasChildNodes()) { - $this->wr('wr($this->traverser->isLocalElement($ele) ? $ele->localName : $ele->tagName)->wr('>'); - } - } - - /** - * Write to the output. - * - * @param string $text The string to put into the output - * - * @return $this - */ - protected function wr($text) - { - fwrite($this->out, $text); - - return $this; - } - - /** - * Write a new line character. - * - * @return $this - */ - protected function nl() - { - fwrite($this->out, PHP_EOL); - - return $this; - } - - /** - * Encode text. - * - * When encode is set to false, the default value, the text passed in is - * escaped per section 8.3 of the html5 spec. For details on how text is - * escaped see the escape() method. - * - * When encoding is set to true the text is converted to named character - * references where appropriate. Section 8.1.4 Character references of the - * html5 spec refers to using named character references. This is useful for - * characters that can't otherwise legally be used in the text. - * - * The named character references are listed in section 8.5. - * - * @see http://www.w3.org/TR/2013/CR-html5-20130806/syntax.html#named-character-references True encoding will turn all named character references into their entities. - * This includes such characters as +.# and many other common ones. By default - * encoding here will just escape &'<>". - * - * Note, PHP 5.4+ has better html5 encoding. - * - * @todo Use the Entities class in php 5.3 to have html5 entities. - * - * @param string $text Text to encode. - * @param bool $attribute True if we are encoding an attrubute, false otherwise. - * - * @return string The encoded text. - */ - protected function enc($text, $attribute = false) - { - // Escape the text rather than convert to named character references. - if (!$this->encode) { - return $this->escape($text, $attribute); - } - - // If we are in PHP 5.4+ we can use the native html5 entity functionality to - // convert the named character references. - - if ($this->hasHTML5) { - return htmlentities($text, ENT_HTML5 | ENT_SUBSTITUTE | ENT_QUOTES, 'UTF-8', false); - } // If a version earlier than 5.4 html5 entities are not entirely handled. - // This manually handles them. - else { - return strtr($text, HTML5Entities::$map); - } - } - - /** - * Escape test. - * - * According to the html5 spec section 8.3 Serializing HTML fragments, text - * within tags that are not style, script, xmp, iframe, noembed, and noframes - * need to be properly escaped. - * - * The & should be converted to &, no breaking space unicode characters - * converted to  , when in attribute mode the " should be converted to - * ", and when not in attribute mode the < and > should be converted to - * < and >. - * - * @see http://www.w3.org/TR/2013/CR-html5-20130806/syntax.html#escapingString - * - * @param string $text Text to escape. - * @param bool $attribute True if we are escaping an attrubute, false otherwise. - */ - protected function escape($text, $attribute = false) - { - // Not using htmlspecialchars because, while it does escaping, it doesn't - // match the requirements of section 8.5. For example, it doesn't handle - // non-breaking spaces. - if ($attribute) { - $replace = array( - '"' => '"', - '&' => '&', - "\xc2\xa0" => ' ', - ); - } else { - $replace = array( - '<' => '<', - '>' => '>', - '&' => '&', - "\xc2\xa0" => ' ', - ); - } - - return strtr($text, $replace); - } -} diff --git a/vendor/masterminds/html5/src/HTML5/Serializer/README.md b/vendor/masterminds/html5/src/HTML5/Serializer/README.md deleted file mode 100644 index 849a47f3..00000000 --- a/vendor/masterminds/html5/src/HTML5/Serializer/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# The Serializer (Writer) Model - -The serializer roughly follows sections _8.1 Writing HTML documents_ and section -_8.3 Serializing HTML fragments_ by converting DOMDocument, DOMDocumentFragment, -and DOMNodeList into HTML5. - - [ HTML5 ] // Interface for saving. - || - [ Traverser ] // Walk the DOM - || - [ Rules ] // Convert DOM elements into strings. - || - [ HTML5 ] // HTML5 document or fragment in text. - - -## HTML5 Class - -Provides the top level interface for saving. - -## The Traverser - -Walks the DOM finding each element and passing it off to the output rules to -convert to HTML5. - -## Output Rules - -The output rules are defined in the RulesInterface which can have multiple -implementations. Currently, the OutputRules is the default implementation that -converts a DOM as is into HTML5. - -## HTML5 String - -The output of the process it HTML5 as a string or saved to a file. \ No newline at end of file diff --git a/vendor/masterminds/html5/src/HTML5/Serializer/RulesInterface.php b/vendor/masterminds/html5/src/HTML5/Serializer/RulesInterface.php deleted file mode 100644 index 69a6ecda..00000000 --- a/vendor/masterminds/html5/src/HTML5/Serializer/RulesInterface.php +++ /dev/null @@ -1,99 +0,0 @@ - 'html', - 'http://www.w3.org/1998/Math/MathML' => 'math', - 'http://www.w3.org/2000/svg' => 'svg', - ); - - protected $dom; - - protected $options; - - protected $encode = false; - - protected $rules; - - protected $out; - - /** - * Create a traverser. - * - * @param \DOMNode|\DOMNodeList $dom The document or node to traverse. - * @param resource $out A stream that allows writing. The traverser will output into this - * stream. - * @param array $options An array of options for the traverser as key/value pairs. These include: - * - encode_entities: A bool to specify if full encding should happen for all named - * charachter references. Defaults to false which escapes &'<>". - * - output_rules: The path to the class handling the output rules. - */ - public function __construct($dom, $out, RulesInterface $rules, $options = array()) - { - $this->dom = $dom; - $this->out = $out; - $this->rules = $rules; - $this->options = $options; - - $this->rules->setTraverser($this); - } - - /** - * Tell the traverser to walk the DOM. - * - * @return resource $out Returns the output stream. - */ - public function walk() - { - if ($this->dom instanceof \DOMDocument) { - $this->rules->document($this->dom); - } elseif ($this->dom instanceof \DOMDocumentFragment) { - // Document fragments are a special case. Only the children need to - // be serialized. - if ($this->dom->hasChildNodes()) { - $this->children($this->dom->childNodes); - } - } // If NodeList, loop - elseif ($this->dom instanceof \DOMNodeList) { - // If this is a NodeList of DOMDocuments this will not work. - $this->children($this->dom); - } // Else assume this is a DOMNode-like datastructure. - else { - $this->node($this->dom); - } - - return $this->out; - } - - /** - * Process a node in the DOM. - * - * @param mixed $node A node implementing \DOMNode. - */ - public function node($node) - { - // A listing of types is at http://php.net/manual/en/dom.constants.php - switch ($node->nodeType) { - case XML_ELEMENT_NODE: - $this->rules->element($node); - break; - case XML_TEXT_NODE: - $this->rules->text($node); - break; - case XML_CDATA_SECTION_NODE: - $this->rules->cdata($node); - break; - case XML_PI_NODE: - $this->rules->processorInstruction($node); - break; - case XML_COMMENT_NODE: - $this->rules->comment($node); - break; - // Currently we don't support embedding DTDs. - default: - //print ''; - break; - } - } - - /** - * Walk through all the nodes on a node list. - * - * @param \DOMNodeList $nl A list of child elements to walk through. - */ - public function children($nl) - { - foreach ($nl as $node) { - $this->node($node); - } - } - - /** - * Is an element local? - * - * @param mixed $ele An element that implement \DOMNode. - * - * @return bool true if local and false otherwise. - */ - public function isLocalElement($ele) - { - $uri = $ele->namespaceURI; - if (empty($uri)) { - return false; - } - - return isset(static::$local_ns[$uri]); - } -} diff --git a/vendor/monolog/monolog/CHANGELOG.md b/vendor/monolog/monolog/CHANGELOG.md deleted file mode 100644 index 13bb0539..00000000 --- a/vendor/monolog/monolog/CHANGELOG.md +++ /dev/null @@ -1,737 +0,0 @@ -### 3.5.0 (2023-10-27) - - * Added ability to indent stack traces in LineFormatter via e.g. `indentStacktraces(' ')` (#1835) - * Added ability to configure a max level name length in LineFormatter via e.g. `setMaxLevelNameLength(3)` (#1850) - * Added support for indexed arrays (i.e. `[]` and not `{}` arrays once json serialized) containing inline linebreaks in LineFormatter (#1818) - * Added `WithMonologChannel` attribute for integrators to use to configure autowiring (#1847) - * Fixed log record `extra` data leaking between handlers that have handler-specific processors set (#1819) - * Fixed LogglyHandler issue with record level filtering (#1841) - * Fixed display_errors parsing in ErrorHandler which did not support string values (#1804) - * Fixed bug where the previous error handler would not be restored in some cases where StreamHandler fails (#1815) - * Fixed normalization error when normalizing incomplete classes (#1833) - -### 3.4.0 (2023-06-21) - - * Added `LoadAverageProcessor` to track one of the 1, 5 or 15min load averages (#1803) - * Added support for priority to the `AsMonologProcessor` attribute (#1797) - * Added `TelegramBotHandler` `topic`/`message_thread_id` support (#1802) - * Fixed `FingersCrossedHandler` passthruLevel checking (#1801) - * Fixed support of yearly and monthly rotation log file to rotate only once a month/year (#1805) - * Fixed `TestHandler` method docs (#1794) - * Fixed handling of falsey `display_errors` string values (#1804) - -### 3.3.1 (2023-02-06) - - * Fixed Logger not being serializable anymore (#1792) - -### 3.3.0 (2023-02-06) - - * Deprecated FlowdockHandler & Formatter as the flowdock service was shutdown (#1748) - * Added `ClosureContextProcessor` to allow delaying the creation of context data by setting a Closure in context which is called when the log record is used (#1745) - * Added an ElasticsearchHandler option to set the `op_type` to `create` instead of the default `index` (#1766) - * Added support for enum context values in PsrLogMessageProcessor (#1773) - * Added graylog2/gelf-php 2.x support (#1747) - * Improved `BrowserConsoleHandler` logging to use more appropriate methods than just console.log in the browser (#1739) - * Fixed GitProcessor not filtering correctly based on Level (#1749) - * Fixed `WhatFailureGroupHandler` not catching errors happening inside `close()` (#1791) - * Fixed datetime field in `GoogleCloudLoggingFormatter` (#1758) - * Fixed infinite loop detection within Fibers (#1753) - * Fixed `AmqpHandler->setExtraAttributes` not working with buffering handler wrappers (#1781) - -### 3.2.0 (2022-07-24) - - * Deprecated `CubeHandler` and `PHPConsoleHandler` as both projects are abandoned and those should not be used anymore (#1734) - * Marked `Logger` `@final` as it should not be extended, prefer composition or talk to us if you are missing something - * Added RFC 5424 level (`7` to `0`) support to `Logger::log` and `Logger::addRecord` to increase interoperability (#1723) - * Added `SyslogFormatter` to output syslog-like files which can be consumed by tools like [lnav](https://lnav.org/) (#1689) - * Added support for `__toString` for objects which are not json serializable in `JsonFormatter` (#1733) - * Added `GoogleCloudLoggingFormatter` (#1719) - * Added support for Predis 2.x (#1732) - * Added `AmqpHandler->setExtraAttributes` to allow configuring attributes when using an AMQPExchange (#1724) - * Fixed serialization/unserialization of handlers to make sure private properties are included (#1727) - * Fixed allowInlineLineBreaks in LineFormatter causing issues with windows paths containing `\n` or `\r` sequences (#1720) - * Fixed max normalization depth not being taken into account when formatting exceptions with a deep chain of previous exceptions (#1726) - * Fixed PHP 8.2 deprecation warnings (#1722) - * Fixed rare race condition or filesystem issue where StreamHandler is unable to create the directory the log should go into yet it exists already (#1678) - -### 3.1.0 (2022-06-09) - - * Added `$datetime` parameter to `Logger::addRecord` as low level API to allow logging into the past or future (#1682) - * Added `Logger::useLoggingLoopDetection` to allow disabling cyclic logging detection in concurrent frameworks (#1681) - * Fixed handling of fatal errors if callPrevious is disabled in ErrorHandler (#1670) - * Fixed interop issue by removing the need for a return type in ProcessorInterface (#1680) - * Marked the reusable `Monolog\Test\TestCase` class as `@internal` to make sure PHPStorm does not show it above PHPUnit, you may still use it to test your own handlers/etc though (#1677) - * Fixed RotatingFileHandler issue when the date format contained slashes (#1671) - -### 3.0.0 (2022-05-10) - -Changes from RC1 - -- The `Monolog\LevelName` enum does not exist anymore, use `Monolog\Level->getName()` instead. - -### 3.0.0-RC1 (2022-05-08) - -This is mostly a cleanup release offering stronger type guarantees for integrators with the -array->object/enum changes, but there is no big new feature for end users. - -See [UPGRADE notes](UPGRADE.md#300) for details on all breaking changes especially if you are extending/implementing Monolog classes/interfaces. - -Noteworthy BC Breaks: - -- The minimum supported PHP version is now `8.1.0`. -- Log records have been converted from an array to a [`Monolog\LogRecord` object](src/Monolog/LogRecord.php) - with public (and mostly readonly) properties. e.g. instead of doing - `$record['context']` use `$record->context`. - In formatters or handlers if you rather need an array to work with you can use `$record->toArray()` - to get back a Monolog 1/2 style record array. This will contain the enum values instead of enum cases - in the `level` and `level_name` keys to be more backwards compatible and use simpler data types. -- `FormatterInterface`, `HandlerInterface`, `ProcessorInterface`, etc. changed to contain `LogRecord $record` - instead of `array $record` parameter types. If you want to support multiple Monolog versions this should - be possible by type-hinting nothing, or `array|LogRecord` if you support PHP 8.0+. You can then code - against the $record using Monolog 2 style as LogRecord implements ArrayAccess for BC. - The interfaces do not require a `LogRecord` return type even where it would be applicable, but if you only - support Monolog 3 in integration code I would recommend you use `LogRecord` return types wherever fitting - to ensure forward compatibility as it may be added in Monolog 4. -- Log levels are now enums [`Monolog\Level`](src/Monolog/Level.php) and [`Monolog\LevelName`](src/Monolog/LevelName.php) -- Removed deprecated SwiftMailerHandler, migrate to SymfonyMailerHandler instead. -- `ResettableInterface::reset()` now requires a void return type. -- All properties have had types added, which may require you to do so as well if you extended - a Monolog class and declared the same property. - -New deprecations: - -- `Logger::DEBUG`, `Logger::ERROR`, etc. are now deprecated in favor of the `Monolog\Level` enum. - e.g. instead of `Logger::WARNING` use `Level::Warning` if you need to pass the enum case - to Monolog or one of its handlers, or `Level::Warning->value` if you need the integer - value equal to what `Logger::WARNING` was giving you. -- `Logger::getLevelName()` is now deprecated. - -### 2.9.2 (2023-10-27) - - * Fixed display_errors parsing in ErrorHandler which did not support string values (#1804) - * Fixed bug where the previous error handler would not be restored in some cases where StreamHandler fails (#1815) - * Fixed normalization error when normalizing incomplete classes (#1833) - -### 2.9.1 (2023-02-06) - - * Fixed Logger not being serializable anymore (#1792) - -### 2.9.0 (2023-02-05) - - * Deprecated FlowdockHandler & Formatter as the flowdock service was shutdown (#1748) - * Added support for enum context values in PsrLogMessageProcessor (#1773) - * Added graylog2/gelf-php 2.x support (#1747) - * Improved `BrowserConsoleHandler` logging to use more appropriate methods than just console.log in the browser (#1739) - * Fixed `WhatFailureGroupHandler` not catching errors happening inside `close()` (#1791) - * Fixed datetime field in `GoogleCloudLoggingFormatter` (#1758) - * Fixed infinite loop detection within Fibers (#1753) - * Fixed `AmqpHandler->setExtraAttributes` not working with buffering handler wrappers (#1781) - -### 2.8.0 (2022-07-24) - - * Deprecated `CubeHandler` and `PHPConsoleHandler` as both projects are abandoned and those should not be used anymore (#1734) - * Added RFC 5424 level (`7` to `0`) support to `Logger::log` and `Logger::addRecord` to increase interoperability (#1723) - * Added support for `__toString` for objects which are not json serializable in `JsonFormatter` (#1733) - * Added `GoogleCloudLoggingFormatter` (#1719) - * Added support for Predis 2.x (#1732) - * Added `AmqpHandler->setExtraAttributes` to allow configuring attributes when using an AMQPExchange (#1724) - * Fixed serialization/unserialization of handlers to make sure private properties are included (#1727) - * Fixed allowInlineLineBreaks in LineFormatter causing issues with windows paths containing `\n` or `\r` sequences (#1720) - * Fixed max normalization depth not being taken into account when formatting exceptions with a deep chain of previous exceptions (#1726) - * Fixed PHP 8.2 deprecation warnings (#1722) - * Fixed rare race condition or filesystem issue where StreamHandler is unable to create the directory the log should go into yet it exists already (#1678) - -### 2.7.0 (2022-06-09) - - * Added `$datetime` parameter to `Logger::addRecord` as low level API to allow logging into the past or future (#1682) - * Added `Logger::useLoggingLoopDetection` to allow disabling cyclic logging detection in concurrent frameworks (#1681) - * Fixed handling of fatal errors if callPrevious is disabled in ErrorHandler (#1670) - * Marked the reusable `Monolog\Test\TestCase` class as `@internal` to make sure PHPStorm does not show it above PHPUnit, you may still use it to test your own handlers/etc though (#1677) - * Fixed RotatingFileHandler issue when the date format contained slashes (#1671) - -### 2.6.0 (2022-05-10) - - * Deprecated `SwiftMailerHandler`, use `SymfonyMailerHandler` instead - * Added `SymfonyMailerHandler` (#1663) - * Added ElasticSearch 8.x support to the ElasticsearchHandler (#1662) - * Added a way to filter/modify stack traces in LineFormatter (#1665) - * Fixed UdpSocket not being able to reopen/reconnect after close() - * Fixed infinite loops if a Handler is triggering logging while handling log records - -### 2.5.0 (2022-04-08) - - * Added `callType` to IntrospectionProcessor (#1612) - * Fixed AsMonologProcessor syntax to be compatible with PHP 7.2 (#1651) - -### 2.4.0 (2022-03-14) - - * Added [`Monolog\LogRecord`](src/Monolog/LogRecord.php) interface that can be used to type-hint records like `array|\Monolog\LogRecord $record` to be forward compatible with the upcoming Monolog 3 changes - * Added `includeStacktraces` constructor params to LineFormatter & JsonFormatter (#1603) - * Added `persistent`, `timeout`, `writingTimeout`, `connectionTimeout`, `chunkSize` constructor params to SocketHandler and derivatives (#1600) - * Added `AsMonologProcessor` PHP attribute which can help autowiring / autoconfiguration of processors if frameworks / integrations decide to make use of it. This is useless when used purely with Monolog (#1637) - * Added support for keeping native BSON types as is in MongoDBFormatter (#1620) - * Added support for a `user_agent` key in WebProcessor, disabled by default but you can use it by configuring the $extraFields you want (#1613) - * Added support for username/userIcon in SlackWebhookHandler (#1617) - * Added extension points to BrowserConsoleHandler (#1593) - * Added record message/context/extra info to exceptions thrown when a StreamHandler cannot open its stream to avoid completely losing the data logged (#1630) - * Fixed error handler signature to accept a null $context which happens with internal PHP errors (#1614) - * Fixed a few setter methods not returning `self` (#1609) - * Fixed handling of records going over the max Telegram message length (#1616) - -### 2.3.5 (2021-10-01) - - * Fixed regression in StreamHandler since 2.3.3 on systems with the memory_limit set to >=20GB (#1592) - -### 2.3.4 (2021-09-15) - - * Fixed support for psr/log 3.x (#1589) - -### 2.3.3 (2021-09-14) - - * Fixed memory usage when using StreamHandler and calling stream_get_contents on the resource you passed to it (#1578, #1577) - * Fixed support for psr/log 2.x (#1587) - * Fixed some type annotations - -### 2.3.2 (2021-07-23) - - * Fixed compatibility with PHP 7.2 - 7.4 when experiencing PCRE errors (#1568) - -### 2.3.1 (2021-07-14) - - * Fixed Utils::getClass handling of anonymous classes not being fully compatible with PHP 8 (#1563) - * Fixed some `@inheritDoc` annotations having the wrong case - -### 2.3.0 (2021-07-05) - - * Added a ton of PHPStan type annotations as well as type aliases on Monolog\Logger for Record, Level and LevelName that you can import (#1557) - * Added ability to customize date format when using JsonFormatter (#1561) - * Fixed FilterHandler not calling reset on its internal handler when reset() is called on it (#1531) - * Fixed SyslogUdpHandler not setting the timezone correctly on DateTimeImmutable instances (#1540) - * Fixed StreamHandler thread safety - chunk size set to 2GB now to avoid interlacing when doing concurrent writes (#1553) - -### 2.2.0 (2020-12-14) - - * Added JSON_PARTIAL_OUTPUT_ON_ERROR to default json encoding flags, to avoid dropping entire context data or even records due to an invalid subset of it somewhere - * Added setDateFormat to NormalizerFormatter (and Line/Json formatters by extension) to allow changing this after object creation - * Added RedisPubSubHandler to log records to a Redis channel using PUBLISH - * Added support for Elastica 7, and deprecated the $type argument of ElasticaFormatter which is not in use anymore as of Elastica 7 - * Added support for millisecond write timeouts in SocketHandler, you can now pass floats to setWritingTimeout, e.g. 0.2 is 200ms - * Added support for unix sockets in SyslogUdpHandler (set $port to 0 to make the $host a unix socket) - * Added handleBatch support for TelegramBotHandler - * Added RFC5424e extended date format including milliseconds to SyslogUdpHandler - * Added support for configuring handlers with numeric level values in strings (coming from e.g. env vars) - * Fixed Wildfire/FirePHP/ChromePHP handling of unicode characters - * Fixed PHP 8 issues in SyslogUdpHandler - * Fixed internal type error when mbstring is missing - -### 2.1.1 (2020-07-23) - - * Fixed removing of json encoding options - * Fixed type hint of $level not accepting strings in SendGridHandler and OverflowHandler - * Fixed SwiftMailerHandler not accepting email templates with an empty subject - * Fixed array access on null in RavenHandler - * Fixed unique_id in WebProcessor not being disableable - -### 2.1.0 (2020-05-22) - - * Added `JSON_INVALID_UTF8_SUBSTITUTE` to default json flags, so that invalid UTF8 characters now get converted to [�](https://en.wikipedia.org/wiki/Specials_(Unicode_block)#Replacement_character) instead of being converted from ISO-8859-15 to UTF8 as it was before, which was hardly a comprehensive solution - * Added `$ignoreEmptyContextAndExtra` option to JsonFormatter to skip empty context/extra entirely from the output - * Added `$parseMode`, `$disableWebPagePreview` and `$disableNotification` options to TelegramBotHandler - * Added tentative support for PHP 8 - * NormalizerFormatter::addJsonEncodeOption and removeJsonEncodeOption are now public to allow modifying default json flags - * Fixed GitProcessor type error when there is no git repo present - * Fixed normalization of SoapFault objects containing deeply nested objects as "detail" - * Fixed support for relative paths in RotatingFileHandler - -### 2.0.2 (2019-12-20) - - * Fixed ElasticsearchHandler swallowing exceptions details when failing to index log records - * Fixed normalization of SoapFault objects containing non-strings as "detail" in LineFormatter - * Fixed formatting of resources in JsonFormatter - * Fixed RedisHandler failing to use MULTI properly when passed a proxied Redis instance (e.g. in Symfony with lazy services) - * Fixed FilterHandler triggering a notice when handleBatch was filtering all records passed to it - * Fixed Turkish locale messing up the conversion of level names to their constant values - -### 2.0.1 (2019-11-13) - - * Fixed normalization of Traversables to avoid traversing them as not all of them are rewindable - * Fixed setFormatter/getFormatter to forward to the nested handler in FilterHandler, FingersCrossedHandler, BufferHandler, OverflowHandler and SamplingHandler - * Fixed BrowserConsoleHandler formatting when using multiple styles - * Fixed normalization of exception codes to be always integers even for PDOException which have them as numeric strings - * Fixed normalization of SoapFault objects containing non-strings as "detail" - * Fixed json encoding across all handlers to always attempt recovery of non-UTF-8 strings instead of failing the whole encoding - * Fixed ChromePHPHandler to avoid sending more data than latest Chrome versions allow in headers (4KB down from 256KB). - * Fixed type error in BrowserConsoleHandler when the context array of log records was not associative. - -### 2.0.0 (2019-08-30) - - * BC Break: This is a major release, see [UPGRADE.md](UPGRADE.md) for details if you are coming from a 1.x release - * BC Break: Logger methods log/debug/info/notice/warning/error/critical/alert/emergency now have explicit void return types - * Added FallbackGroupHandler which works like the WhatFailureGroupHandler but stops dispatching log records as soon as one handler accepted it - * Fixed support for UTF-8 when cutting strings to avoid cutting a multibyte-character in half - * Fixed normalizers handling of exception backtraces to avoid serializing arguments in some cases - * Fixed date timezone handling in SyslogUdpHandler - -### 2.0.0-beta2 (2019-07-06) - - * BC Break: This is a major release, see [UPGRADE.md](UPGRADE.md) for details if you are coming from a 1.x release - * BC Break: PHP 7.2 is now the minimum required PHP version. - * BC Break: Removed SlackbotHandler, RavenHandler and HipChatHandler, see [UPGRADE.md](UPGRADE.md) for details - * Added OverflowHandler which will only flush log records to its nested handler when reaching a certain amount of logs (i.e. only pass through when things go really bad) - * Added TelegramBotHandler to log records to a [Telegram](https://core.telegram.org/bots/api) bot account - * Added support for JsonSerializable when normalizing exceptions - * Added support for RFC3164 (outdated BSD syslog protocol) to SyslogUdpHandler - * Added SoapFault details to formatted exceptions - * Fixed DeduplicationHandler silently failing to start when file could not be opened - * Fixed issue in GroupHandler and WhatFailureGroupHandler where setting multiple processors would duplicate records - * Fixed GelfFormatter losing some data when one attachment was too long - * Fixed issue in SignalHandler restarting syscalls functionality - * Improved performance of LogglyHandler when sending multiple logs in a single request - -### 2.0.0-beta1 (2018-12-08) - - * BC Break: This is a major release, see [UPGRADE.md](UPGRADE.md) for details if you are coming from a 1.x release - * BC Break: PHP 7.1 is now the minimum required PHP version. - * BC Break: Quite a few interface changes, only relevant if you implemented your own handlers/processors/formatters - * BC Break: Removed non-PSR-3 methods to add records, all the `add*` (e.g. `addWarning`) methods as well as `emerg`, `crit`, `err` and `warn` - * BC Break: The record timezone is now set per Logger instance and not statically anymore - * BC Break: There is no more default handler configured on empty Logger instances - * BC Break: ElasticSearchHandler renamed to ElasticaHandler - * BC Break: Various handler-specific breaks, see [UPGRADE.md](UPGRADE.md) for details - * Added scalar type hints and return hints in all the places it was possible. Switched strict_types on for more reliability. - * Added DateTimeImmutable support, all record datetime are now immutable, and will toString/json serialize with the correct date format, including microseconds (unless disabled) - * Added timezone and microseconds to the default date format - * Added SendGridHandler to use the SendGrid API to send emails - * Added LogmaticHandler to use the Logmatic.io API to store log records - * Added SqsHandler to send log records to an AWS SQS queue - * Added ElasticsearchHandler to send records via the official ES library. Elastica users should now use ElasticaHandler instead of ElasticSearchHandler - * Added NoopHandler which is similar to the NullHandle but does not prevent the bubbling of log records to handlers further down the configuration, useful for temporarily disabling a handler in configuration files - * Added ProcessHandler to write log output to the STDIN of a given process - * Added HostnameProcessor that adds the machine's hostname to log records - * Added a `$dateFormat` option to the PsrLogMessageProcessor which lets you format DateTime instances nicely - * Added support for the PHP 7.x `mongodb` extension in the MongoDBHandler - * Fixed many minor issues in various handlers, and probably added a few regressions too - -### 1.26.1 (2021-05-28) - - * Fixed PHP 8.1 deprecation warning - -### 1.26.0 (2020-12-14) - - * Added $dateFormat and $removeUsedContextFields arguments to PsrLogMessageProcessor (backport from 2.x) - -### 1.25.5 (2020-07-23) - - * Fixed array access on null in RavenHandler - * Fixed unique_id in WebProcessor not being disableable - -### 1.25.4 (2020-05-22) - - * Fixed GitProcessor type error when there is no git repo present - * Fixed normalization of SoapFault objects containing deeply nested objects as "detail" - * Fixed support for relative paths in RotatingFileHandler - -### 1.25.3 (2019-12-20) - - * Fixed formatting of resources in JsonFormatter - * Fixed RedisHandler failing to use MULTI properly when passed a proxied Redis instance (e.g. in Symfony with lazy services) - * Fixed FilterHandler triggering a notice when handleBatch was filtering all records passed to it - * Fixed Turkish locale messing up the conversion of level names to their constant values - -### 1.25.2 (2019-11-13) - - * Fixed normalization of Traversables to avoid traversing them as not all of them are rewindable - * Fixed setFormatter/getFormatter to forward to the nested handler in FilterHandler, FingersCrossedHandler, BufferHandler and SamplingHandler - * Fixed BrowserConsoleHandler formatting when using multiple styles - * Fixed normalization of exception codes to be always integers even for PDOException which have them as numeric strings - * Fixed normalization of SoapFault objects containing non-strings as "detail" - * Fixed json encoding across all handlers to always attempt recovery of non-UTF-8 strings instead of failing the whole encoding - -### 1.25.1 (2019-09-06) - - * Fixed forward-compatible interfaces to be compatible with Monolog 1.x too. - -### 1.25.0 (2019-09-06) - - * Deprecated SlackbotHandler, use SlackWebhookHandler or SlackHandler instead - * Deprecated RavenHandler, use sentry/sentry 2.x and their Sentry\Monolog\Handler instead - * Deprecated HipChatHandler, migrate to Slack and use SlackWebhookHandler or SlackHandler instead - * Added forward-compatible interfaces and traits FormattableHandlerInterface, FormattableHandlerTrait, ProcessableHandlerInterface, ProcessableHandlerTrait. If you use modern PHP and want to make code compatible with Monolog 1 and 2 this can help. You will have to require at least Monolog 1.25 though. - * Added support for RFC3164 (outdated BSD syslog protocol) to SyslogUdpHandler - * Fixed issue in GroupHandler and WhatFailureGroupHandler where setting multiple processors would duplicate records - * Fixed issue in SignalHandler restarting syscalls functionality - * Fixed normalizers handling of exception backtraces to avoid serializing arguments in some cases - * Fixed ZendMonitorHandler to work with the latest Zend Server versions - * Fixed ChromePHPHandler to avoid sending more data than latest Chrome versions allow in headers (4KB down from 256KB). - -### 1.24.0 (2018-11-05) - - * BC Notice: If you are extending any of the Monolog's Formatters' `normalize` method, make sure you add the new `$depth = 0` argument to your function signature to avoid strict PHP warnings. - * Added a `ResettableInterface` in order to reset/reset/clear/flush handlers and processors - * Added a `ProcessorInterface` as an optional way to label a class as being a processor (mostly useful for autowiring dependency containers) - * Added a way to log signals being received using Monolog\SignalHandler - * Added ability to customize error handling at the Logger level using Logger::setExceptionHandler - * Added InsightOpsHandler to migrate users of the LogEntriesHandler - * Added protection to NormalizerFormatter against circular and very deep structures, it now stops normalizing at a depth of 9 - * Added capture of stack traces to ErrorHandler when logging PHP errors - * Added RavenHandler support for a `contexts` context or extra key to forward that to Sentry's contexts - * Added forwarding of context info to FluentdFormatter - * Added SocketHandler::setChunkSize to override the default chunk size in case you must send large log lines to rsyslog for example - * Added ability to extend/override BrowserConsoleHandler - * Added SlackWebhookHandler::getWebhookUrl and SlackHandler::getToken to enable class extensibility - * Added SwiftMailerHandler::getSubjectFormatter to enable class extensibility - * Dropped official support for HHVM in test builds - * Fixed normalization of exception traces when call_user_func is used to avoid serializing objects and the data they contain - * Fixed naming of fields in Slack handler, all field names are now capitalized in all cases - * Fixed HipChatHandler bug where slack dropped messages randomly - * Fixed normalization of objects in Slack handlers - * Fixed support for PHP7's Throwable in NewRelicHandler - * Fixed race bug when StreamHandler sometimes incorrectly reported it failed to create a directory - * Fixed table row styling issues in HtmlFormatter - * Fixed RavenHandler dropping the message when logging exception - * Fixed WhatFailureGroupHandler skipping processors when using handleBatch - and implement it where possible - * Fixed display of anonymous class names - -### 1.23.0 (2017-06-19) - - * Improved SyslogUdpHandler's support for RFC5424 and added optional `$ident` argument - * Fixed GelfHandler truncation to be per field and not per message - * Fixed compatibility issue with PHP <5.3.6 - * Fixed support for headless Chrome in ChromePHPHandler - * Fixed support for latest Aws SDK in DynamoDbHandler - * Fixed support for SwiftMailer 6.0+ in SwiftMailerHandler - -### 1.22.1 (2017-03-13) - - * Fixed lots of minor issues in the new Slack integrations - * Fixed support for allowInlineLineBreaks in LineFormatter when formatting exception backtraces - -### 1.22.0 (2016-11-26) - - * Added SlackbotHandler and SlackWebhookHandler to set up Slack integration more easily - * Added MercurialProcessor to add mercurial revision and branch names to log records - * Added support for AWS SDK v3 in DynamoDbHandler - * Fixed fatal errors occurring when normalizing generators that have been fully consumed - * Fixed RollbarHandler to include a level (rollbar level), monolog_level (original name), channel and datetime (unix) - * Fixed RollbarHandler not flushing records automatically, calling close() explicitly is not necessary anymore - * Fixed SyslogUdpHandler to avoid sending empty frames - * Fixed a few PHP 7.0 and 7.1 compatibility issues - -### 1.21.0 (2016-07-29) - - * Break: Reverted the addition of $context when the ErrorHandler handles regular php errors from 1.20.0 as it was causing issues - * Added support for more formats in RotatingFileHandler::setFilenameFormat as long as they have Y, m and d in order - * Added ability to format the main line of text the SlackHandler sends by explicitly setting a formatter on the handler - * Added information about SoapFault instances in NormalizerFormatter - * Added $handleOnlyReportedErrors option on ErrorHandler::registerErrorHandler (default true) to allow logging of all errors no matter the error_reporting level - -### 1.20.0 (2016-07-02) - - * Added FingersCrossedHandler::activate() to manually trigger the handler regardless of the activation policy - * Added StreamHandler::getUrl to retrieve the stream's URL - * Added ability to override addRow/addTitle in HtmlFormatter - * Added the $context to context information when the ErrorHandler handles a regular php error - * Deprecated RotatingFileHandler::setFilenameFormat to only support 3 formats: Y, Y-m and Y-m-d - * Fixed WhatFailureGroupHandler to work with PHP7 throwables - * Fixed a few minor bugs - -### 1.19.0 (2016-04-12) - - * Break: StreamHandler will not close streams automatically that it does not own. If you pass in a stream (not a path/url), then it will not close it for you. You can retrieve those using getStream() if needed - * Added DeduplicationHandler to remove duplicate records from notifications across multiple requests, useful for email or other notifications on errors - * Added ability to use `%message%` and other LineFormatter replacements in the subject line of emails sent with NativeMailHandler and SwiftMailerHandler - * Fixed HipChatHandler handling of long messages - -### 1.18.2 (2016-04-02) - - * Fixed ElasticaFormatter to use more precise dates - * Fixed GelfMessageFormatter sending too long messages - -### 1.18.1 (2016-03-13) - - * Fixed SlackHandler bug where slack dropped messages randomly - * Fixed RedisHandler issue when using with the PHPRedis extension - * Fixed AmqpHandler content-type being incorrectly set when using with the AMQP extension - * Fixed BrowserConsoleHandler regression - -### 1.18.0 (2016-03-01) - - * Added optional reduction of timestamp precision via `Logger->useMicrosecondTimestamps(false)`, disabling it gets you a bit of performance boost but reduces the precision to the second instead of microsecond - * Added possibility to skip some extra stack frames in IntrospectionProcessor if you have some library wrapping Monolog that is always adding frames - * Added `Logger->withName` to clone a logger (keeping all handlers) with a new name - * Added FluentdFormatter for the Fluentd unix socket protocol - * Added HandlerWrapper base class to ease the creation of handler wrappers, just extend it and override as needed - * Added support for replacing context sub-keys using `%context.*%` in LineFormatter - * Added support for `payload` context value in RollbarHandler - * Added setRelease to RavenHandler to describe the application version, sent with every log - * Added support for `fingerprint` context value in RavenHandler - * Fixed JSON encoding errors that would gobble up the whole log record, we now handle those more gracefully by dropping chars as needed - * Fixed write timeouts in SocketHandler and derivatives, set to 10sec by default, lower it with `setWritingTimeout()` - * Fixed PHP7 compatibility with regard to Exception/Throwable handling in a few places - -### 1.17.2 (2015-10-14) - - * Fixed ErrorHandler compatibility with non-Monolog PSR-3 loggers - * Fixed SlackHandler handling to use slack functionalities better - * Fixed SwiftMailerHandler bug when sending multiple emails they all had the same id - * Fixed 5.3 compatibility regression - -### 1.17.1 (2015-08-31) - - * Fixed RollbarHandler triggering PHP notices - -### 1.17.0 (2015-08-30) - - * Added support for `checksum` and `release` context/extra values in RavenHandler - * Added better support for exceptions in RollbarHandler - * Added UidProcessor::getUid - * Added support for showing the resource type in NormalizedFormatter - * Fixed IntrospectionProcessor triggering PHP notices - -### 1.16.0 (2015-08-09) - - * Added IFTTTHandler to notify ifttt.com triggers - * Added Logger::setHandlers() to allow setting/replacing all handlers - * Added $capSize in RedisHandler to cap the log size - * Fixed StreamHandler creation of directory to only trigger when the first log write happens - * Fixed bug in the handling of curl failures - * Fixed duplicate logging of fatal errors when both error and fatal error handlers are registered in monolog's ErrorHandler - * Fixed missing fatal errors records with handlers that need to be closed to flush log records - * Fixed TagProcessor::addTags support for associative arrays - -### 1.15.0 (2015-07-12) - - * Added addTags and setTags methods to change a TagProcessor - * Added automatic creation of directories if they are missing for a StreamHandler to open a log file - * Added retry functionality to Loggly, Cube and Mandrill handlers so they retry up to 5 times in case of network failure - * Fixed process exit code being incorrectly reset to 0 if ErrorHandler::registerExceptionHandler was used - * Fixed HTML/JS escaping in BrowserConsoleHandler - * Fixed JSON encoding errors being silently suppressed (PHP 5.5+ only) - -### 1.14.0 (2015-06-19) - - * Added PHPConsoleHandler to send record to Chrome's PHP Console extension and library - * Added support for objects implementing __toString in the NormalizerFormatter - * Added support for HipChat's v2 API in HipChatHandler - * Added Logger::setTimezone() to initialize the timezone monolog should use in case date.timezone isn't correct for your app - * Added an option to send formatted message instead of the raw record on PushoverHandler via ->useFormattedMessage(true) - * Fixed curl errors being silently suppressed - -### 1.13.1 (2015-03-09) - - * Fixed regression in HipChat requiring a new token to be created - -### 1.13.0 (2015-03-05) - - * Added Registry::hasLogger to check for the presence of a logger instance - * Added context.user support to RavenHandler - * Added HipChat API v2 support in the HipChatHandler - * Added NativeMailerHandler::addParameter to pass params to the mail() process - * Added context data to SlackHandler when $includeContextAndExtra is true - * Added ability to customize the Swift_Message per-email in SwiftMailerHandler - * Fixed SwiftMailerHandler to lazily create message instances if a callback is provided - * Fixed serialization of INF and NaN values in Normalizer and LineFormatter - -### 1.12.0 (2014-12-29) - - * Break: HandlerInterface::isHandling now receives a partial record containing only a level key. This was always the intent and does not break any Monolog handler but is strictly speaking a BC break and you should check if you relied on any other field in your own handlers. - * Added PsrHandler to forward records to another PSR-3 logger - * Added SamplingHandler to wrap around a handler and include only every Nth record - * Added MongoDBFormatter to support better storage with MongoDBHandler (it must be enabled manually for now) - * Added exception codes in the output of most formatters - * Added LineFormatter::includeStacktraces to enable exception stack traces in logs (uses more than one line) - * Added $useShortAttachment to SlackHandler to minify attachment size and $includeExtra to append extra data - * Added $host to HipChatHandler for users of private instances - * Added $transactionName to NewRelicHandler and support for a transaction_name context value - * Fixed MandrillHandler to avoid outputting API call responses - * Fixed some non-standard behaviors in SyslogUdpHandler - -### 1.11.0 (2014-09-30) - - * Break: The NewRelicHandler extra and context data are now prefixed with extra_ and context_ to avoid clashes. Watch out if you have scripts reading those from the API and rely on names - * Added WhatFailureGroupHandler to suppress any exception coming from the wrapped handlers and avoid chain failures if a logging service fails - * Added MandrillHandler to send emails via the Mandrillapp.com API - * Added SlackHandler to log records to a Slack.com account - * Added FleepHookHandler to log records to a Fleep.io account - * Added LogglyHandler::addTag to allow adding tags to an existing handler - * Added $ignoreEmptyContextAndExtra to LineFormatter to avoid empty [] at the end - * Added $useLocking to StreamHandler and RotatingFileHandler to enable flock() while writing - * Added support for PhpAmqpLib in the AmqpHandler - * Added FingersCrossedHandler::clear and BufferHandler::clear to reset them between batches in long running jobs - * Added support for adding extra fields from $_SERVER in the WebProcessor - * Fixed support for non-string values in PrsLogMessageProcessor - * Fixed SwiftMailer messages being sent with the wrong date in long running scripts - * Fixed minor PHP 5.6 compatibility issues - * Fixed BufferHandler::close being called twice - -### 1.10.0 (2014-06-04) - - * Added Logger::getHandlers() and Logger::getProcessors() methods - * Added $passthruLevel argument to FingersCrossedHandler to let it always pass some records through even if the trigger level is not reached - * Added support for extra data in NewRelicHandler - * Added $expandNewlines flag to the ErrorLogHandler to create multiple log entries when a message has multiple lines - -### 1.9.1 (2014-04-24) - - * Fixed regression in RotatingFileHandler file permissions - * Fixed initialization of the BufferHandler to make sure it gets flushed after receiving records - * Fixed ChromePHPHandler and FirePHPHandler's activation strategies to be more conservative - -### 1.9.0 (2014-04-20) - - * Added LogEntriesHandler to send logs to a LogEntries account - * Added $filePermissions to tweak file mode on StreamHandler and RotatingFileHandler - * Added $useFormatting flag to MemoryProcessor to make it send raw data in bytes - * Added support for table formatting in FirePHPHandler via the table context key - * Added a TagProcessor to add tags to records, and support for tags in RavenHandler - * Added $appendNewline flag to the JsonFormatter to enable using it when logging to files - * Added sound support to the PushoverHandler - * Fixed multi-threading support in StreamHandler - * Fixed empty headers issue when ChromePHPHandler received no records - * Fixed default format of the ErrorLogHandler - -### 1.8.0 (2014-03-23) - - * Break: the LineFormatter now strips newlines by default because this was a bug, set $allowInlineLineBreaks to true if you need them - * Added BrowserConsoleHandler to send logs to any browser's console via console.log() injection in the output - * Added FilterHandler to filter records and only allow those of a given list of levels through to the wrapped handler - * Added FlowdockHandler to send logs to a Flowdock account - * Added RollbarHandler to send logs to a Rollbar account - * Added HtmlFormatter to send prettier log emails with colors for each log level - * Added GitProcessor to add the current branch/commit to extra record data - * Added a Monolog\Registry class to allow easier global access to pre-configured loggers - * Added support for the new official graylog2/gelf-php lib for GelfHandler, upgrade if you can by replacing the mlehner/gelf-php requirement - * Added support for HHVM - * Added support for Loggly batch uploads - * Added support for tweaking the content type and encoding in NativeMailerHandler - * Added $skipClassesPartials to tweak the ignored classes in the IntrospectionProcessor - * Fixed batch request support in GelfHandler - -### 1.7.0 (2013-11-14) - - * Added ElasticSearchHandler to send logs to an Elastic Search server - * Added DynamoDbHandler and ScalarFormatter to send logs to Amazon's Dynamo DB - * Added SyslogUdpHandler to send logs to a remote syslogd server - * Added LogglyHandler to send logs to a Loggly account - * Added $level to IntrospectionProcessor so it only adds backtraces when needed - * Added $version to LogstashFormatter to allow using the new v1 Logstash format - * Added $appName to NewRelicHandler - * Added configuration of Pushover notification retries/expiry - * Added $maxColumnWidth to NativeMailerHandler to change the 70 chars default - * Added chainability to most setters for all handlers - * Fixed RavenHandler batch processing so it takes the message from the record with highest priority - * Fixed HipChatHandler batch processing so it sends all messages at once - * Fixed issues with eAccelerator - * Fixed and improved many small things - -### 1.6.0 (2013-07-29) - - * Added HipChatHandler to send logs to a HipChat chat room - * Added ErrorLogHandler to send logs to PHP's error_log function - * Added NewRelicHandler to send logs to NewRelic's service - * Added Monolog\ErrorHandler helper class to register a Logger as exception/error/fatal handler - * Added ChannelLevelActivationStrategy for the FingersCrossedHandler to customize levels by channel - * Added stack traces output when normalizing exceptions (json output & co) - * Added Monolog\Logger::API constant (currently 1) - * Added support for ChromePHP's v4.0 extension - * Added support for message priorities in PushoverHandler, see $highPriorityLevel and $emergencyLevel - * Added support for sending messages to multiple users at once with the PushoverHandler - * Fixed RavenHandler's support for batch sending of messages (when behind a Buffer or FingersCrossedHandler) - * Fixed normalization of Traversables with very large data sets, only the first 1000 items are shown now - * Fixed issue in RotatingFileHandler when an open_basedir restriction is active - * Fixed minor issues in RavenHandler and bumped the API to Raven 0.5.0 - * Fixed SyslogHandler issue when many were used concurrently with different facilities - -### 1.5.0 (2013-04-23) - - * Added ProcessIdProcessor to inject the PID in log records - * Added UidProcessor to inject a unique identifier to all log records of one request/run - * Added support for previous exceptions in the LineFormatter exception serialization - * Added Monolog\Logger::getLevels() to get all available levels - * Fixed ChromePHPHandler so it avoids sending headers larger than Chrome can handle - -### 1.4.1 (2013-04-01) - - * Fixed exception formatting in the LineFormatter to be more minimalistic - * Fixed RavenHandler's handling of context/extra data, requires Raven client >0.1.0 - * Fixed log rotation in RotatingFileHandler to work with long running scripts spanning multiple days - * Fixed WebProcessor array access so it checks for data presence - * Fixed Buffer, Group and FingersCrossed handlers to make use of their processors - -### 1.4.0 (2013-02-13) - - * Added RedisHandler to log to Redis via the Predis library or the phpredis extension - * Added ZendMonitorHandler to log to the Zend Server monitor - * Added the possibility to pass arrays of handlers and processors directly in the Logger constructor - * Added `$useSSL` option to the PushoverHandler which is enabled by default - * Fixed ChromePHPHandler and FirePHPHandler issue when multiple instances are used simultaneously - * Fixed header injection capability in the NativeMailHandler - -### 1.3.1 (2013-01-11) - - * Fixed LogstashFormatter to be usable with stream handlers - * Fixed GelfMessageFormatter levels on Windows - -### 1.3.0 (2013-01-08) - - * Added PSR-3 compliance, the `Monolog\Logger` class is now an instance of `Psr\Log\LoggerInterface` - * Added PsrLogMessageProcessor that you can selectively enable for full PSR-3 compliance - * Added LogstashFormatter (combine with SocketHandler or StreamHandler to send logs to Logstash) - * Added PushoverHandler to send mobile notifications - * Added CouchDBHandler and DoctrineCouchDBHandler - * Added RavenHandler to send data to Sentry servers - * Added support for the new MongoClient class in MongoDBHandler - * Added microsecond precision to log records' timestamps - * Added `$flushOnOverflow` param to BufferHandler to flush by batches instead of losing - the oldest entries - * Fixed normalization of objects with cyclic references - -### 1.2.1 (2012-08-29) - - * Added new $logopts arg to SyslogHandler to provide custom openlog options - * Fixed fatal error in SyslogHandler - -### 1.2.0 (2012-08-18) - - * Added AmqpHandler (for use with AMQP servers) - * Added CubeHandler - * Added NativeMailerHandler::addHeader() to send custom headers in mails - * Added the possibility to specify more than one recipient in NativeMailerHandler - * Added the possibility to specify float timeouts in SocketHandler - * Added NOTICE and EMERGENCY levels to conform with RFC 5424 - * Fixed the log records to use the php default timezone instead of UTC - * Fixed BufferHandler not being flushed properly on PHP fatal errors - * Fixed normalization of exotic resource types - * Fixed the default format of the SyslogHandler to avoid duplicating datetimes in syslog - -### 1.1.0 (2012-04-23) - - * Added Monolog\Logger::isHandling() to check if a handler will - handle the given log level - * Added ChromePHPHandler - * Added MongoDBHandler - * Added GelfHandler (for use with Graylog2 servers) - * Added SocketHandler (for use with syslog-ng for example) - * Added NormalizerFormatter - * Added the possibility to change the activation strategy of the FingersCrossedHandler - * Added possibility to show microseconds in logs - * Added `server` and `referer` to WebProcessor output - -### 1.0.2 (2011-10-24) - - * Fixed bug in IE with large response headers and FirePHPHandler - -### 1.0.1 (2011-08-25) - - * Added MemoryPeakUsageProcessor and MemoryUsageProcessor - * Added Monolog\Logger::getName() to get a logger's channel name - -### 1.0.0 (2011-07-06) - - * Added IntrospectionProcessor to get info from where the logger was called - * Fixed WebProcessor in CLI - -### 1.0.0-RC1 (2011-07-01) - - * Initial release diff --git a/vendor/monolog/monolog/LICENSE b/vendor/monolog/monolog/LICENSE deleted file mode 100644 index aa2a0426..00000000 --- a/vendor/monolog/monolog/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011-2020 Jordi Boggiano - -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/vendor/monolog/monolog/README.md b/vendor/monolog/monolog/README.md deleted file mode 100644 index d7151de4..00000000 --- a/vendor/monolog/monolog/README.md +++ /dev/null @@ -1,120 +0,0 @@ -![Monolog](logo.jpg) - -# Monolog - Logging for PHP [![Continuous Integration](https://github.com/Seldaek/monolog/workflows/Continuous%20Integration/badge.svg?branch=main)](https://github.com/Seldaek/monolog/actions) - -[![Total Downloads](https://img.shields.io/packagist/dt/monolog/monolog.svg)](https://packagist.org/packages/monolog/monolog) -[![Latest Stable Version](https://img.shields.io/packagist/v/monolog/monolog.svg)](https://packagist.org/packages/monolog/monolog) - ->**Note** This is the **documentation for Monolog 3.x**, if you are using older releases ->see the documentation for [Monolog 2.x](https://github.com/Seldaek/monolog/blob/2.x/README.md) or [Monolog 1.x](https://github.com/Seldaek/monolog/blob/1.x/README.md) - -Monolog sends your logs to files, sockets, inboxes, databases and various -web services. See the complete list of handlers below. Special handlers -allow you to build advanced logging strategies. - -This library implements the [PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md) -interface that you can type-hint against in your own libraries to keep -a maximum of interoperability. You can also use it in your applications to -make sure you can always use another compatible logger at a later time. -As of 1.11.0 Monolog public APIs will also accept PSR-3 log levels. -Internally Monolog still uses its own level scheme since it predates PSR-3. - -## Installation - -Install the latest version with - -```bash -$ composer require monolog/monolog -``` - -## Basic Usage - -```php -pushHandler(new StreamHandler('path/to/your.log', Level::Warning)); - -// add records to the log -$log->warning('Foo'); -$log->error('Bar'); -``` - -## Documentation - -- [Usage Instructions](doc/01-usage.md) -- [Handlers, Formatters and Processors](doc/02-handlers-formatters-processors.md) -- [Utility Classes](doc/03-utilities.md) -- [Extending Monolog](doc/04-extending.md) -- [Log Record Structure](doc/message-structure.md) - -## Support Monolog Financially - -Get supported Monolog and help fund the project with the [Tidelift Subscription](https://tidelift.com/subscription/pkg/packagist-monolog-monolog?utm_source=packagist-monolog-monolog&utm_medium=referral&utm_campaign=enterprise) or via [GitHub sponsorship](https://github.com/sponsors/Seldaek). - -Tidelift delivers commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. - -## Third Party Packages - -Third party handlers, formatters and processors are -[listed in the wiki](https://github.com/Seldaek/monolog/wiki/Third-Party-Packages). You -can also add your own there if you publish one. - -## About - -### Requirements - -- Monolog `^3.0` works with PHP 8.1 or above. -- Monolog `^2.5` works with PHP 7.2 or above. -- Monolog `^1.25` works with PHP 5.3 up to 8.1, but is not very maintained anymore and will not receive PHP support fixes anymore. - -### Support - -Monolog 1.x support is somewhat limited at this point and only important fixes will be done. You should migrate to Monolog 2 or 3 where possible to benefit from all the latest features and fixes. - -### Submitting bugs and feature requests - -Bugs and feature request are tracked on [GitHub](https://github.com/Seldaek/monolog/issues) - -### Framework Integrations - -- Frameworks and libraries using [PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md) - can be used very easily with Monolog since it implements the interface. -- [Symfony](http://symfony.com) comes out of the box with Monolog. -- [Laravel](http://laravel.com/) comes out of the box with Monolog. -- [Lumen](http://lumen.laravel.com/) comes out of the box with Monolog. -- [PPI](https://github.com/ppi/framework) comes out of the box with Monolog. -- [CakePHP](http://cakephp.org/) is usable with Monolog via the [cakephp-monolog](https://github.com/jadb/cakephp-monolog) plugin. -- [Slim](http://www.slimframework.com/) is usable with Monolog via the [Slim-Monolog](https://github.com/Flynsarmy/Slim-Monolog) log writer. -- [XOOPS 2.6](http://xoops.org/) comes out of the box with Monolog. -- [Aura.Web_Project](https://github.com/auraphp/Aura.Web_Project) comes out of the box with Monolog. -- [Nette Framework](http://nette.org/en/) is usable with Monolog via the [contributte/monolog](https://github.com/contributte/monolog) or [orisai/nette-monolog](https://github.com/orisai/nette-monolog) extensions. -- [Proton Micro Framework](https://github.com/alexbilbie/Proton) comes out of the box with Monolog. -- [FuelPHP](http://fuelphp.com/) comes out of the box with Monolog. -- [Equip Framework](https://github.com/equip/framework) comes out of the box with Monolog. -- [Yii 2](http://www.yiiframework.com/) is usable with Monolog via the [yii2-monolog](https://github.com/merorafael/yii2-monolog) or [yii2-psr-log-target](https://github.com/samdark/yii2-psr-log-target) plugins. -- [Hawkbit Micro Framework](https://github.com/HawkBitPhp/hawkbit) comes out of the box with Monolog. -- [SilverStripe 4](https://www.silverstripe.org/) comes out of the box with Monolog. -- [Drupal](https://www.drupal.org/) is usable with Monolog via the [monolog](https://www.drupal.org/project/monolog) module. -- [Aimeos ecommerce framework](https://aimeos.org/) is usable with Monolog via the [ai-monolog](https://github.com/aimeos/ai-monolog) extension. -- [Magento](https://magento.com/) comes out of the box with Monolog. -- [Spiral Framework](https://spiral.dev) comes out of the box with Monolog bridge. - -### Author - -Jordi Boggiano - -
    -See also the list of [contributors](https://github.com/Seldaek/monolog/contributors) who participated in this project. - -### License - -Monolog is licensed under the MIT License - see the [LICENSE](LICENSE) file for details - -### Acknowledgements - -This library is heavily inspired by Python's [Logbook](https://logbook.readthedocs.io/en/stable/) -library, although most concepts have been adjusted to fit to the PHP world. diff --git a/vendor/monolog/monolog/composer.json b/vendor/monolog/monolog/composer.json deleted file mode 100644 index 4ccd0721..00000000 --- a/vendor/monolog/monolog/composer.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "name": "monolog/monolog", - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "keywords": ["log", "logging", "psr-3"], - "homepage": "https://github.com/Seldaek/monolog", - "type": "library", - "license": "MIT", - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" - } - ], - "require": { - "php": ">=8.1", - "psr/log": "^2.0 || ^3.0" - }, - "require-dev": { - "ext-json": "*", - "aws/aws-sdk-php": "^3.0", - "doctrine/couchdb": "~1.0@dev", - "elasticsearch/elasticsearch": "^7 || ^8", - "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.1", - "predis/predis": "^1.1 || ^2", - "ruflin/elastica": "^7", - "symfony/mailer": "^5.4 || ^6", - "symfony/mime": "^5.4 || ^6" - }, - "suggest": { - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ext-mbstring": "Allow to work properly with unicode symbols", - "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", - "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", - "ext-openssl": "Required to send log messages using SSL" - }, - "autoload": { - "psr-4": {"Monolog\\": "src/Monolog"} - }, - "autoload-dev": { - "psr-4": {"Monolog\\": "tests/Monolog"} - }, - "provide": { - "psr/log-implementation": "3.0.0" - }, - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "scripts": { - "test": "@php vendor/bin/phpunit", - "phpstan": "@php vendor/bin/phpstan analyse" - }, - "config": { - "lock": false, - "sort-packages": true, - "platform-check": false - } -} diff --git a/vendor/monolog/monolog/favicon.ico b/vendor/monolog/monolog/favicon.ico deleted file mode 100644 index a36dc176c07db9852fe2c07b494f3ac9a7bc452a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11583 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

    ?#c*P zZKyAMrrLg{E%@=mhQ!|9@8@N%F0gMZkj;rufDSdXO%j${gVxdofOpdaB)QYSAm3mRqo42`W=r}x3)T%#{bZPLLw zKZ#9&Qa!9tOK3T&)k*zI)S4RZXe(YgYp?wi(T^aT4T=OdnwePOC ze1E_D;!_3xeBScKi)Edu+FBQ}wMuh&iuFJ?cA!GPzfjYRCmo539*K%pIYeDbegt6+ zoA|9VP7F!%5p)J6@j>F&a9)+wj`M^(E+~g&DiMwYY@81nAr%3zowmZJyqUEYU#&ql z;FiuV&Rx@3xud|fDXe{@NOiJNxjc=kwKIcRlWA4i6_is&*%XvnM(Jq+NMQg>2;)C_ z4y@RX4rLJwa?+0wNYGNB2^cvETz8KU|w;P)iPqo9*t9dF1p-ImRPB% zo{ku3hmy9+WoDUFPg6jMx&NEsxDCs7;KeRvNg*{Sm+p27hf=s}(?nnIOG%uKU)k^e z*L3>VDdZ2+dMvDZm(-{sx;2nsG7j9yMJ{CkOcMY!5Hv8$Gm>S;a-Bql4=Z!POAGN= zSE#-o(f_i>dtsyJqxq@_>**(2$p>ojEiv%vT+y;1R%*tIWW42G-d$PrT(5Y35b4T` zb~&h88OsN<+U1;j88<@&lxQTw4y=F>_h^$Ul)N~Nrx~pRp_FFYK;ghd7%if3kxUI~ zR1j^#XeS}Z_&l5^u*0Mk!o!MiuCc90j3M*Y>Qp2ttgRi%_CoGBKDV}$GXrXjp*{IdwbG>Gi2&$Fq z%e-;3PL0dVw4A{J0!AWYnOIXZ9XQhl*=Au(#R*7~8VrmnuvPxBEN@=9z698c|m1ZN;?RcgQtMTCVZmh(NcyYE| z%-dFkUR_MQ-i^Q0Pk%jA_DB_ee<6BdGJd2UyFW+F+<-r5lf6)eH>v~&^Wm=tWqY%c zR)b)wjsHlxV400GRVUh=ioRHg9Lpu4BV0pZHz-lEAYd`5~jsZH$%Tnh2ChDz1N|5 zp%U&ja$hJy|CmH=&%_=rB6eh8`?9d3`N)m{yudEbC-^d+pv6qSST5@@B6$irTd4>l zXtxcW>y;G9_$nb}!Zi{eBojb75rT5L%(}r!;s`l>15BAQrJXr)xsE`!=|)S2$*iZf z#);4wXbs>o(0&8WFr-+h6f+q#VPP|#X2FUaNR9=~wWF;ec&c9K(as!lYKXAl zj2h932-@q!8jMg}Do}}7SZvDM94&jOhk%_h?wzQ8&)u}24d+3i9;@O zQ9LKkX?GzrQi(EyP$l9x5Pq8-9|+O&qhy;KPflW+VPUQcb|T_t6Pl|+l`tAnB6VhX za)>Ur$z)tX2mv!>5DNfon54?0P>Dn^4>uwzrATH$W#vYrkCv$*TnR~?QcYN`3n=t{ zr9v;$ndK&nTyIqvnXt&2FfdQE%)sOUaA+uo!L6gbI>N8V0|p{woM2!`q82j4gx7h9 zA{*+}qDHC2qk?04*sB2jO4v$@GSuKm7JjgTuC+pPNFap;dPrDh#IMz{}Ut9d_D@NE9F(RZu>PG@`f`#R&;!z!h0~t(BC^V1*o0nPuwsh$Cvy zDKXkW>kU$qNousn?x<(NWRaQ8Qlm+#0~~6~r6t{3(sLVtiJ+bc8Hk{fVEQ{~AaiYG zrj_&=h=~F-l70h`nV+n xG#DtOp3<9WlSOK_$ZkuQo6Rz_WrE7^zW|iYX-@;(u_OQh002ovPDHLkV1gTnkF5Xz diff --git a/vendor/monolog/monolog/logo.jpg b/vendor/monolog/monolog/logo.jpg deleted file mode 100644 index 333234a7e365366c0452a575926f4dca994e8228..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 707527 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

    3mOuezos)r{{VISZ8O)vfd1 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

    A8 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 z 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%0DSx;bP5G5{RzCCby<= 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

    N;rr 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

    t!_x)Z<4Lp~rmK&O5x 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%0DfK3>kof~! zt<98x^46Xhrm!IY03t@ssz?dS@bE{h;X{gFMnUIAS8Akf0G@@X(PmFNE6b_9z|c`z z#H7yIq)S`T71UGB2gF3jRnZbfY0@f-(rVIh#Y~M|S`NP7R?}`yXxc{n=(7=Z94296T^|-@gp$u;8MkVQ)U@4(*C2H)HGXo+ULVIL%KJRLF#h! zF>-A8N1dC4Seo1LGD{rOM`6+m>`gPyb!o#IQx=0sOdv$yO+X5hLA30y8+y`_B|9FO zr~IF>ng&U6te2OH*48$GtZ@-e>yB2v8H zfyTT!t}Sy*T+>H2!h{ip3hzxdCmT&TWMwi$C=iDP0Mb(d5CBjisepw5#3&FZ0D%oD zpag(Kz(l|h5+Vd4q5wnyAOtChL;<8nc=eUYXetT-kP3hlAZS#EDgas}zz{J|1A;(@ z1PoA+#RvgHk&Z(FQYd>+0)&J-1d1FKv5yK$BndKy0HKsf(3F%))g>Z86qHKPq-3lL z8AaPjTJu+Wqi;&bEuh~OWWS^6`c|o|No#kgy3RPVo4XYy9Lxjm0WJWl>Uf#>|m z^3wB4G0S0cFJP9WK`j|OLq%#SM!0q@DalOg#QTn0;bv(qa|>KHf;eEd?vsAfM%%m{ zn3Si)MW}S!>1pBH$o{69dFZpYS}oa08g|^Lu1-ZQ+Q5DHwZB^Dw>KKu&+#cJ+_fho z>#)XN=vg2eqj+&1MJu0HI`%!;p6x1V-ANkwUAR58T?-<%+Zz1{C5qni2M0#|o7!kn z?o6K3p|I8O14CxZARI*<`OB90tI!=ycrIBpfN7(TvUaX((V{y`O@>2;YIOya6WmP| zn|8XdDLazxOxCrS2Ghu^yor59s>& zm93jiv>%Cf?`V3g>FZq>uspiGjpS zj;6zzG~4!%23)T{(Z9Oo!+b8L7sl#e@hUj1;K~NLriTP>Pr6Ei7lybH;0QPnb`Vpo zhK@s+v_FRYdvHy={bp^*?Y)cBE-%kC&dhh0J=Ea5yE$z78rCY2&D@7ed#RTS5#Yen_ZZN+ z>icP5yuypR_Fp5?>@?OvXA5L!s~Z{zQ$XEC^IF>@XSVWmT?ac)Y_Ujf*jp<_L_yiJ zZP}WX?OkgN)tu`rJx@C3_^vH=TNq~rj*dAlUc*EB*JWIm>UDyt)4Xp4fkW z&oQc8kJ`7$z6bq9K4-1kfr;o}A$`x#Z@Vr;d%;Wi2)P+8c_y`|Vja9lW+%)ilgjcr z#;!LIdP?i|zu)_K9)G*(#(!?7CGxa?>T8F4wsU#hz`b92{{W}^(c}LB$)E5EV1r%R#K{{Ti-{cFn2tv*M!gG}+_OQ;N{7k#oj zLeB?NUPkDM9{m-yp`7Y-T)^DAw7+UNoII?j(7hfv?bq-8&nuRrCBE;-nXbYfwtj-m zEzYaINo9a6dK)FFO6X<3aN@?hv2;=XnmF$N0915_mvMBp!_KC@lT5l^Nu1o(9DbY@ zRNTCaLpDm8BPVO(Y5dx==v}L0gQx`s4`E5}QZO&;@w1<{<=>Cej~_p+n!0c58TUe@ z&YG_(FNE1lS%+|Stny1mP=L9up(_ffCdAg~@ZHk)pF%S+VOkH~R%Nlb74Y%JO5ApO z9M$Qp@}3SOvjyK>k0&PO%`DQ|Pqk6zDsFV~_AJAL7(a$6Hagx;W1l7OL;&_Y6-mLQ z8k2x?hR`^I(Bsl6xjx}ur#BZRRMEGz1J(Q&8h<3E&JCo zA539m9}#^|fkI1*06VtwepIoaKx%0)c@a)&wAWU)xSgbyot<08$ZV-dDvV zC1?e}dqSgz#Yw?cQe7IL1HB08$V+~;YU6=Ur4b&Zhe5?ZsDO%V=Hxj=4@gSaD`J6h zB%Ui4Lt@A4gqY|}YAWY-B#m*G2yQ?q0S9Q>YPU=vg5%Wkrp)XsP6|eZkato*$Q^}M z7?VPKfhJlkMH8lYjf1@W2JNb;s4`2IxstiAreQ&b%mTZjQC?3_r~+uu;WO@ptX)R! zD>G5n+Kje_Sj2J56r(J$N(-9c4O_5+2s;SHbYjZrP1Lb<9cuFW-V0eWGSb!0eY`QT ztqpXP4kg&V$GS0dik!LK^k#0b%C`GT%?_mHGRo3zcUqDK_9FYgO0q>8QtDCC@}@1j z96UchW!=VFI5EwvYHMl^rK5pvVOHRJ{HsjQLo6%IYUuv}`DLS?#J}#T;@SQ*VXPV04pQdE(E1kvTtdetS+Uv1#_L3xPvY2i;no&L$)&jF z&c|0Ns2geg0!>MM!(8xIR-~6(mFAqc)xe)J&eniTgvnfMQ^jD}suMp-k&B%1N(Uls z+K|AJxk*BY6q^!5yVa(`r?{vF%{)ck8{HmpmEaNsfX0W4w9_YMO&+H^Mpv5o0)2^( zzf!|B3hi*}AsR@ z_8@)L(KRn6y_D=rwyR+Jmn4Qs3C*0Aji6&*)s9})jj=1IEVJSaqJt?uvz$ZEkWsW; zYaBgJ>tyawR(yA)lG}jc!O@2PjaIQ=0~yG={sa&B#+*ZB`>vt$qq3}}n%z+YuGkGE zYnXn}!_8GM8)dFS>!Bkijozz)>MJK!x*FB1Y&*rml|b0s#<(C*6@7ShshHfgR|L(L z7+5@Lymr?dv?O+{T6TIH*S5Z)@0(5_KHk~Qm-9gLl?s>Hy#o0vl+_wmvN6!H!TF>h zW@y5PhULeSu;ZcCj?LCtVB~-68XPz{2YPC=h}hD6LDqH-ZGILL_OcJ6h*@sBk$hBr z3gb+%&NJG?2N1=p3_j>?Qv>gkt24>|mn?5yGk}&Qqqj5EFXYnrD-Ss^C z;zc*WS?ZHTs=1Bv_!Zm^S_)pJCVpRnqV$5m-u*ZG;-i;v~}O0Usf zPr|rq=#{0uahYhd{0tuv^kgs5^%l1wR}w99?PK|S9-;P4TgK0 zP(7Bt>~CfP4z;%Ey5`8Xf01##)6A_D8m-koyeHFDKjP#60B_x0ucfedSD?yF%Te3 z0RkFRKnMX706++Ufe;}O0DuuO2!I3uq;{UO>0E}OfD|M#P&6tS#Yg}k1xN)z!iWLM z3~)(+p#v6(0m?=wLjl1ehom7;1DcUYcv8kap-E(cCNbb(p_DzLODPfribTy&GDZa~ zvR2{LkjvKiFm&Tp&3(?AY>N7(p8L97KyuwiJEPvF!Cl2|$K-Zs{U#Z(t9h1|E%NWo zeqqv_ZRI{ISZHFFpo)4Gay_>eO;_{&q+{gUYi@c5mGi4gqg#DzJZ|1&4SRhdd6xEk zi&{U+`kLC+ePHOVK56K>gb!uB7cQN?tbP@954;Iz@|BhNd1>o^kW&(SIWV0 zr`yMbakZdt10LL0C9+!Eva~dywXQTY;<@aS6SFm}EgDEK6=>Kvl@)8a=F5EzL79XW zv|+M~tFOT0aRgT}Sl%$U?#;5DnUC-a>XO)0wd=Dnt~obGl$TqXEuFv|?d)|=oo`(2 z9V?f9x|N3`-2?bD#~|HWwE7CsXK$fvnP2WCi;^`W@MoGfG;9s4jvhdrxgQV2f9F^G zQEq(|_Hepcq^kg_a3oQ2WaN30@gkYko`;d@{LQUgTud2vEH?Sig%ciIMvBs;Qmg22 zacNqqTbtV54A%1|zX8n_p>Wbav~l#+b$^eI?u`4{tEc?X=1W%raAUoUZ4$RDu=`D- z#{S!l?Wghnq&%Mkdf(?3nX=}_Xx+cVEqL?gSU+jM_PP6f!CH*kviXao-L|&zNcSDB zeH%{HFK)W^eZLaBCuUdFwT(|vk?erAk!)icXgb_>qSeQZ%l>A#=?5)w%6!b{I$zn} zTu2fe$Mc#OMSaH$QMd8_g0*aCKG#@+LM648xpthnhiIzVI$Ko4rF1P?-rPoOh$F~W zR-$1)6Qk34-%_*zuW+6r>_2aj!E_dYpT&TkS!C5F zV!u$Zxd-E|F+bA7R=9Zr)k@VfMTwXiv-x5=sqErc^drq`#ZN^%eAB%xpIdV%nabtq;w{b3mI6z!N~xV$YH{7d{P?zV&ZsN~uxkoa_*jP%djpJp!G6O0ut z&y?i^bb!3vTr2kX*JFC}F}u3GAKp^buRa>x(>|gS^NICvYyJ|~aN1xXPob};f6Yj@-eqYq(zHsR}e>T|Z_dJt#9;P5Nc)D2bUbH!& z=J4N_Ju*^&lCa`n#fI+H)4S$r%H-z0F5HW6m-0Ls_S$=U$>F$-@J_-+kjT=K`z9`WJ7r{`~w8JKr2}zW)H`a~~=y?qa<>EM)V^ z7+$Bm{>R>VKlt1K0GIcFBhlYb2rK3fwtEpYlPhbugV^Op4eEJ6Gq*1=YOSR|Y?yUc zM=!F%{HXl8Pwb$*52 z$$zI)gNI1Xa_rI);X_9UVbfB%YP34~oXw*%a|GaRY?7YJ@m{8FF&-}+Pa&JSjeZ8F zV7P#P(uK#v{nU4RgZ&rw>N`{bG30yhS<`c`F393FV_W&U2px?J*u&^Y%yPeW#VTS} z$1&1!V6FAf_Xo`2xIM%6*Ua{Pkxp0gI@oI4+c)eF6UKa@t{2{C<>q z8U1Y4)2J<@B+{)2M@?UpwCjd6Z#_zfBPF~JZ3AgTwM~-}u-4pw;Ako~R9Dio?ULR` zix$SPSBu|IDOu*XnA?uLgpDKNi zsq`qejOf9!p^&lJNW^X^H>T%h^8B9{Qafp8;w!{BE%?eqGwp({&E?B3S>Z(tt{~w& zOqHg!_GAUCpM49smbW(sLf6?@f+}cO_6|SMkOD?33$g20Y!r`6w0B7o{{T74)u4KK z2<~9kvwjAfVqNZtGyap%tt=uC!>jWH>Lk%D-O_E$eutG#nv$M|O~$J$oZ#&;%An#h zKX>H?pL7-3@F`EKoS|9~fg4EiGWl-K`0B)i<$t ztK~88Kob?FGoL=?dMy(<;7oX`k-&#yKroC_0X8KdAwY?nT&x2UYeD5z51=Ommp1n{ z)0iiW#VdVgI8ch?y*p9YMn2*!?%Y%ajCD>V)hG!O0v{Ky5@qAup4ZlQQW32;ERtxp zLnE8@eTXu!gVhNQ1N~BvG6(D`jI2os?lnsq(9zSt@gDkD!(lWXBoC!;$I+9MT85!P za%gG`TaOxq^KLqnq&?EJU`)b1CUqraN(;SYYKrrUN_ufkG8q=+G(j!6+EYWRG1!?! zX-}+?3}5J@>OPd@nE-J^1Eu9h&|QysN9N4C_|HaVo1v+xy0(&6hoN3|p%|W}?JPwc zHf?kalo;WwBo%1}oIzUStkmbs;>H~BEt+PHqDO(`aq3=u4@?;M5^5-SEo4l8iuRn` zHdQX@2dN3WlMpG6!bZi-e43ipgC8@WwwQ3>^ia2HZW*gl|GVh;$-MBO7@-wY?@^1Sc>J~_ljaJ#_;xnPmv!{qFp4l z7FO&7v;8YOWo#BQ%u+C5=V8>PS&y|7j|{r3cHP9GwlzX_I57IH2aPJC$f~iFfT z+ZCX_9GSPSOCxm2<8j$tiW(^rXMWIWMVJg3N3Gs9+Imy@6rf3^Y)#DihK+`a)~?$T zdn)c@Y8PHJs@y=?U8~Z;hp_W=W$!beLsig@WO73p?HmP@tKA6t$bRyM-w{s&Dn{YT)z(j=jcxZJNLz^MbZYO%r3 ze1jU}wyD7hkHr4~5|<{Zk+HqwDHUnl?0qUb<6}g$)W*7sAuGHwM%Mx6U6}0I!IdQR zE0IO1ix^cR29SXbOhOa@g#aQ1B4QB$A_OO;Fa!XF0ue9-z(l|jfD(v-2#5g@011df zfDoVq(ttFM)7DoZpol1NNCiO9p$uRW0Z;;@F;D`a2P82?QeY@R#{>YONX0_|!6Ju* zgeXAAgqcWtR1A;=i$s7a8XN+Fj|mis8WggTD={irX%?8lOg8XXyBaEr=FzoQnKxP% z!J}gvvW3k3M@GpKvC1rv(-z{&!tuYgMOg+7orf%foj%uPJ|0P@BC+MCh6(qN(6+^jb!$8g5WYU7qkqpyg{*Ah2{&)Zp(EZF;$ ztt_wL9e5~eqD+EWtZl|=?ij#5<3%0mY-w8A z?2OB-U*j-X@$MD0zZPI^uh4V0MD{Na6Xdr=4g1eLmm%8N1YyPm|7L zYc8hVoUs$>DL-=XujBrKRG(59{#V$<>b~*v@d2T}nyUW*x;~0N-y)tGvvW`6-5S`3 zG77wHdxNY?mR;va^<0N@v$dp31r7+4M)6!(^;6z7ImPl!9v`$TOO zU05uhgJ}^6Je8<-AqA@kiwQGeQ zVh1?~?Hc9sDW?LJ`+umrmAV*HUy^9SvtcD{>!zcsf~>bUvQ@2l74}<#N|i>0EV8(f z)M(7(wP^ArFQ)CWW-eT~oYBk-J2M@HL**)s@vQeQ+HxBm-no_Aab$Q@b(I$9y^{NX z09*vOe{bSx&&r&?9khZbJ(D%0hq=YoaNMw5ytDB8ivIu_t79fD4k1U&5CCJ8l0{ap zl*n9ZE;a_Y0MSkWEW6~@V-fJ0cZCN8`--gwh=p(+NbWSPN6PrEnVIJkuyrU@cX}H; zR+W||q?6o5;}TjNPDYF<(5mTILUH$9OD*_P5rf@_3@D-7Q+~j0s4@qKxVfhQO?Gvx z=5*+2nTe)9$JH9+fNX|BI;vNvl|@f3u3U@Ad9F1GnD&=4d3;v@DoryL&&{lzSTEY0 zk8Fa<^|~`{;e4?I!ezF6LBXz*7d5WShtj>=c-?5KwmxSjS-h>zKbxcRZ|){BWNS-U zz~Mmbu?oBlt-zAJUTu8(A3?yh(_POU=G_wVd-q(!4PlaoK-v;qFs@NUOc#F>kxs={ z&p(~UzkIHzI&3bXCGCaf><7D)>>z`?Wfy1Ft59%%k977aa_9qI(?dl|E+fG76V|Je z{{TwgB6zj^dVJ4x(%p93yEjLaOXEahYldd$4g^$h6<-&M-L}yCJoHvhO)I@~N7U~m zhgQ<<^xbSo<~Uhub{2AXNg3JkkT*4Hu)3@6KBX+Xp!mDi^q$*(1UDKUfh1D9QI6^& z+?g(~?ID~D!`1k`J?w;@x-6@Lw@ujDXS#@cnG$j>jq59>b1jog&vM@Bj#y8 zcUEAqwii|9)a$Nh)~MxqpXHxFX)K=b+Bx>tz4>nKT~;&KOg>FqARv-G4PaoO?*b2j!`#1ZJ-)>*>asB@Qk?OYl0{J^1du_|m zipbH@Jt`8^8E%!HQ}&OhiZ1mcn;gH*2UC_K{{X$l5B%JPdS1%EQr{!T_xJh>=5t>u zT~1=X>9Ldjq-)dnrT+jQ?>yi9ZT|qt`;SR^1h1Ap)^s8svq|H#sMT9Cd!Aj*?aR$N zyLM9YLI+!`^slYsKhmo{7driGe9uUD@0Ifh+B45SV-MTxwtk`i0PPC;A8CF@e7C-- z%Tr58ac+xX2eS)&?r~harTVY!(CguT&3^v?%(EnbwDCI@2eO=J?Al|pJl(s zx--8mPJAA_KalcV>zKga=8E;XLRuERW)_HiO?u>>PC#rzK++x5=P%|KU9 zai$*=5Bp%a_^7S<|w6K zgqANwU~_RMhM$sGHXY8cPPHjUY9l=!h0|k}rdKt$3u!*fhhx8ubnss2<@W{VOs#H7 zvxNJv0=-Uf`c>Q3$)>o`eY;i%O-j0eq_)rdPH%22Tt1d_@_k5(;1b3Wv^XOkq6mh>*oU`hQuiqsI))ds{qno<`cdR( z^|O0G(=6w=ihGG}&Dzl$ zJjj!3>t_&dg0QV9GGuqSDK)YBuvqyJG~A+SVF(@`kvN z&DgT-X0@$t)NQl{x_)hhNbm<$7dA_Ij;uJMg=QBy_#AjDPeV4fCXmUH@1`Vg!Ac9L zM=Lw30qH(-Ro;&p+ZS}khZvZ4I!2Dy0HwHQ*!8Kss^os7GnyzI;(mo$w>miL5z%rD zMb4nn?ODFP9rpcd_^vGla#Yn6wNc^fWq|&y00{fOMT=0v&QY8snWVY0y|wpTN7RCK zB@!26=Q+oVi9VEuq|njLFXJ`i`Xyc!sW~<}39*UW@GH5a8odrO>9u?M&!u>meq+!` z%D*A7m98z!GO^KN3=ICvp3+u~Dd{rrDrG0FYgTh+T95^#nF`=H6iArLRRS8}M1lrX zBqlbsO#vvOjiay5sVC4)51wfykL#|Y>RM*ljAo^*Ke1WP zUPv*);jjvv1s7#hRUCOAb>QaiB+qj(18kCc+<31hmOWNGHWc$MQzQ(75E8SHNUBQa zXx%YENU0ngQvq6g^*hq;fK`!vLTX-n-CI=McNClka5v(zbu~-_!iXwG4yu8sJ2_JY z4ias~iFS%b53by6y*NW22qy!MY>prUSA z_9bkg5JMznt*=VbwKHVxlyO>ip-F1q^TQ5l#jX@J6{0PSYQ>|mt`2LO;ZRy@U2`T3WzR83KWvmT>?lX5%`p>XAJwR!EEWFGc_p!jwCcgvsuEkVzbG zaCXPH)q71G2;f4}wrfKx<5tyfNXM^}5C>{WSGNtj%d+Cezz@qE88Nr0#rp#UgI2OwjD01{&qAO|TJp$r8H6g(s$;3QHW0!(O?p+RVP0ZS}+3R@WJ zB_kZrlNu#%#SElM)|Y{h<&LcRcMBM79Z~mPcR=Vay%4 zF1%jd-M`!MGq)oe`!g=I{gU*#-vb8)SVpCO$# zoAQ^It@684ytu!3#Ic!SjQ(w1{H4i$eoyVt%K7g0I-4CQmvqX0?9%P+oHk5bo=?wp zT)AzQ_Vqu&kEeTX%Q9R!$GqySXTY_N2wynjl4YvFpLcbc**258IXWqfWHyDyu0BN2 ztzzpTV8D%vk~ytn8@P#WK)`TWC;xrWuIL+Z@!qsS>$*Ns}bre%C+ zB0 zmpmHR5w~w+Zox*!mA=!qpE~CHoyN7S7Nrr88qt6l(|U)Yptj;*92zT4gsPJ}>N(K1 znO{OqB}2RlwJKaj!+;$@C1@@Rk8E*+P#oj3xKpuhS0K?&;qGUB^lMJd%UbL4Gi@!* z`E__0OIUna2eQ+EJuX|UFR33{41mpXa>=d^VhGB>FdYi+)oGzP=Ju9!k;8>)wRyer zdWyOd_*4f3F8~-pWO6@vX{HyoRws(*py=K43cWwdYRa~#Rc5_1N*HRLcB!82nrT1Fgx9l^O| z4(^N`;hMYZxp`T8uR9(5OiLamR`%+1TBIS)c*~4uF3uP%s?oP|W*zKhggK^;8wl)L zQNXWRI1L4Z{wT5lY`JX*3ORe(^uuTHK5vY_|tz9W1L*kN)GdDiuy~Wl2Uk_d%nVlDD$^E zXaeNux`DN1?rZ0X(M2q8coYsTdrmaMqZPg^_QayBDsmDE?Bkz_^dB1 zp_dx5bk#Eu%}Rz<{eJTIAnD2ZJSkB|RhM$0YM+pUe7$lQ!F1*6$|xnY5YX zY;6sE(uX?AW=Y`^$is590ac|co~vUFxgojec}F+tuxZ@mu3B5%d`-2r^~4s_npDRd z%SCd4+JjJOg;zHsv1mO$4W^0pDZ?oeFz_SHR}Gejr&}I*A*+evPn@rPpCXNZR3G}9 z$D!xU*Dg+P>|5^q&qLdF3h%Y{pj=m0P)BF04whPN2SnFe795WYRH~&=>=NY$+OJ4#lQNmRq39+t!ZCX#DAkx z;<-!yMZRaEIo;wy`LpaSd5@p zxGXtK^%>K`*9!Y}EIa)R8PMozNT4}h@$WdAbuGbNw^P_MLMb1^)p4TPN9`6HckxxH#XszTFPqZ|xN?9aqWspZZCy z&93!F8LEHg7ax530`@U_5%WBs+_6#Kw_?>8Gos|PO-6CX7gO_s;r9>QUo+VDNBYm? zb{CD!rOY@G;rTCKP6rtg?Q*L)pWCTwVqXg+9;|_`r$dL<6i02~s$07fW_)clrvgIR zm{-7~%<&g#u}D3Ma-OF&{Y!om{YH#=>&UETSvtCZOJsMSDO=_B7;)UuqeZ*_0EX3r zM^#8~+gKt#?5*>HuNLgfI?)i!e+=*hev%gBzQn+j8)|n96x(qA(zW>gn4S+|?5O%y zxL=s&&*&?IP_%oJhqtLq9ZVbl0P*wv_b&W?lz92QZ0fmMLd`XRZhVHDv8Fy`JHtA# z)5>lOxjmEXHF z`Z%$nfaMu0lm>x=R!z$nNHfow0)g?;sSMK75AAWDljvGu^%0k2dS?#|^%dE7OBTx>Q3%~(zNEw`U9Hk_cJrIial`IF)T`UM*48=p2QlTt41g zrknWZjJil$E1+~wsTpu%vkvO%rWr`*$&wp`yVJg1@>2;8<@lb^D_JMFdEdaaEms@F z&F6g$R(!qW1B>~3-Ms+Jf1IDuT?}4J_=zveua{YW_;r~3qJN>v9x*GkF6ZU1%jedb z3!C>Ha?|N3Re`o<+kO<&K+SWp#6>N2tW>VAtfj z5xfxMMF)l&>hD?I!LB?~dHvO-)|V36&eGYSd1Q?uggLkoinK`uaZ&;)07wK00VF@H zYD}skdpt~ssTDSWteaWXoiP* z)RDT}Kw}H5&{FyV{!M%a+-fjfG!WOYwzR+6nT(PsQ{<}LQDlf#Xt@T3~~Sv0;I+{04kA+5WrEjA&&_R zkOd_oMyX>&fFx*%8r2MAmXh?xzTyo=!O#NdrrI0ZT}bj5?Dcr6m?b1w zU=3&kV#>_XB3$fXtIYz4b}M2TFWyF2>elhzsyz61tW97(BGs%FPF<;^9{E@Ynj zNon&@8a=^$2}SkUz}(7s{v(p@UIjqDA$4;-&g&%lYMz1GO2HV!G;|UN(uH=kAJeI= zrD`Pt1V;jJqJSM9R|oYYySZEmDn`}{{X3J9_u&t znyx4AH@~OT_V^QOeaBdCTGocf(Hw2TtZ1MV=oDP8wY8H;;+)omx z{Kjao)d11k8O&Ljjf9eYDgAjH#*tze9^Y!8WQCt_G?8*C02FgilVUrJT_AJ3G4z6^ zvZ{oV<|xJ#2ZCM0XsIRm0GANf?KiMTPYwfjQi*j#3K_G1K+x~s*q-$R<*iY>J& ziFtzKy>DvhnYfx}?R6IFxU1@anLn$2lzr&WyRy{ek?obTzG3S$ikfsCor_xLs@Trh zZ`5oW9M2W6gu$>mxTkJPUlOavvo>^n7UC&G<&-`)daVO`=gphDM2@T&J07o7qHGQW z)xmPQHPGqqQ@H1_206rFHmyE`i8K19b^XHyq@aRxG_(L|iNnmgc-&WOCS%CtcGTwu z#moWjw>ci>zB7O|Y=E`H5xsgB<12MM^_~aev3C@Y_<3Imz-D8zlfN2$DJwmsxU1c0Q@_X{E z){nLr)uUnt>Q_E2vB-1g#5nC8DxNx|X0lpJnuPUjH;w65x`VW%i{<9mn=Lr_;Ey3C zdpw;u_W2$k5l=0AKcVf~b7wNfVquV%42%O8J8<%x7stYwKC<@Fv(L3#PHl#H<=3sR zV0dvd8>UNb_n_6M46mu7qulNVO-rNg3U7WH3u6Bn92XZTCjn z9$&h`qGz4kxM>X=h4q~|f z0J+QhOkLjZ`yYBZKk?uCuett5r(;7!^8HV>t08}_RZC(S=N#_PIh#>;ykmcDy9)ZA z2DmHt{%6K>{Je{Ox*gn34vZgpq1~+oeC?Do>nd>n05S2J!yS>#f0WR@?`VEje9yjq z<$m)+l%O|S4YNfDhUr*IKiU)g<<0IF?aI!tYu5p1QnhuZFciU7Hm7oOrt7gzP)u(W#DnI=Rd*)dl136^jPYnn+l4kGx*4sd zZu(cV6}7qX&tmpNu#Wm z894&6%I2O8c~-2o}56T5m%pfPr2q1O)&!Oi*3Z9tG5O;(ZG7Jxua!Zp!%l2e`NlttN+{ zF01U!sI@sseM+w=?t2&-v;P2SV*$pPuBdo_GZ$)>K{^GNSYle+~U6_C!!UfFEuBV;7n!%+==67TA%SX+?UB+ zQ5fWj%!VgjwX!$XYnt%kMR}G`#1Dwdwne_e~8AjYE*ucd!@xx6qq z5xs5n4X(e&>9h^qN`8f-Z=LMU}hXM^kbFv7* z`%ib#ML$qGM!xps?uEaQUHU|!-LQhB(@x++q^Lg2Kxp$U+_HvRMGNN3JIf>Yngwg+ zN|n?)7ber~nO8K-*8odPp3>7zn;I6+8b)gJ%&9Pu!0sh;PNu95F;IKe^CO^`Gbq|T zsOkvY(1o~cl1YCJq0N=iJW5{n(=|p$IlZNHVZ0_Q8uydw5415ys0T^`;c| zRo^6%vBrZTzpxg62_d?8X(lNlbWr8Z>o$@yT8;abR=Y2=;%8mV9dh{qaE<2x_XoQM zhWDLD)c1DLXGB|tp&npsKtj1C#=-|Rq=Sxcp-ZtrTr0JwdTj)TVMP*Xh0dl+6g(v( z49JnD0mPv($l!2EsVNUr1tt|sv|`l|1FC=|jo>&J49(svN`x`arN+KDIOG{yxH!~- z)+nR3nl}hDuvC_Zc}Vn8HiWE0Ictb4Zbs7)QgI!1Q&BcVNn0bH!d7Sp-W0(-4%-Zoagt#_wZ zh`WqJEX5h3Wnj=y=QB88&!7b3I>O< zOcsp`QC9UXOxARhnc^gNu>d$bGGZ5EVgi^ExF80U z#Kb^^C_uzaLM8x!5itmu2v7ik1OSKu3IIeB2muNJL;xl;M|tZjjT!<&6#yz2(5Pb- zAQU9PQMCgc5CVjTDgbf-REC2D0N|4VNsM?%p}`;|9%U?~NZy@^F``x$@x@D%MF#en zp<3Lrua@QGHYJh9aIWIwxH9ruaFN@Kk2kp>Z*fmyvYY z7C#q@FY1gl`n-{YX;jzs)hXvn?>h)GQa#Oa@RSL)? z2|y14A)-c9Z1SwxXqmL%vx1XEJYszcY~ZD+kDN0G;_om?Q@AZ?E4l7*%;QtVXpxMG zR4|aOQW&8q8XnMwA>fjv(xl9D+Cgs6h}5;YziF>(o(-%PpNB23W0|{N*JG58>(9x? zq_)n=WR(Y}a`oKTmTj1~Xvd-6&|C_=mNUzvHJc2Fb$XR{$%DB6013kyQ7+MU2w3h2 z9EXJ=*wf`px(2R_^2Io=!R1TpBU;%Fw6lAinZ}Mg_ysn}Bfd!3xLVd4G*+9+&%O?1 z+ZFB1+R$d=i3;deCG9x0;F4zXB#~UQxNYE7EeUwanxvqCM$?T_W|(UR9F8?Orr_>K zf$!q3sI*qQdqj1vAmFy5odBjTNIl`$t*h6F( z8E0IJ0A02C538fNj%&}1V8$)QW;6V~mjAmbh%H z?^qz?dDGCNd`Pr&PTK7Xa#um)wx=nP_|hEuTT-mjkm5IV`4w-(_RA}a>qBikHLOxHP&b^8%|TFc!F--3r9P+F<;P~6mifC|=j}UR zX=gLt-B{hkF0F1D{{RiX6Wl&Y`{Zh^dmnE!Yo*qfE zm~49*ySO^5CGb4ob@U_7Vs%+=+TzHV(mI$2(6Qub&h9RiEjQK+jh+1t5N=-WkCLgi z$>018rU%^s(;f7Mg({{ZUGRf7O(zFD7c-sSx*v76|;LzXdDJ;z{Z z7^%pnqUj<&<~gR3@eHsR9|&-0*qcy@tI|$8=B$9}8fdTmVqY|2dmhTQx83~D1OEUa zdSm|p-Twggn13rz{-e0yZ6&YgF?9RC>_3|P&QJVz{-^GLk?H}vabGacuv-wyDN;8o zsW*BadCyEAzo$E-hTY%v0DTMUJ-NmT{r>=)K0Do)>)Y=9k=SYP&tq=?0D2gYY+-mA zlwG6hFuBE3kNJ$+Nn&`#IR0A?(!GyodRy*3ci)%lSLDRyX^7ES){+RGQC=Gl(w92F zsA=t1{SUmqG_QGXZ&)^tcG}``T&Y3W+>ypR$FJy3lRAUw*4(&_k;r=(Rnu2cdRENE z@lB6Tzu8~ zXRYkIWjzAMhO9UT1CLlCco)$6N-ym*nJkRcd_QJ6Bx9S>8sDjU8CRZ9D~o8x>O#rL zr8othsV7BjOeX{uoLXuRQNcp2GfLWY@i6rHU1xhZ9>K`r#8!*HHG8U$Gl>43+Bf3V z;-Sn);kT`M?+ZOYs-DAjOWSwZJTg${IIwthaXz@;N-DvPs~P3XS6w$T+$)D4rv=nu z0$Uo}M_tXK@){#1;>EDC0&3H>z>d*Gstpt)^+4NzT{bwVO3-Svdm7Z|@6YYGAKp9C zy&Qg&c)5LS?>QqK1~42dC76~PZ^|o*y4zEy4Q7WzB5}jR1pSacg`#M;Ll0Yl?Yd)f zIgapSt6bU~3;LE>ZRQ%$57S#CXNt9n!RJNjOQPN!aW@ot2<|k+dy|r4oBCw3v z{u?1KwuGJaV^7c)Zl%`k470YdlT))}t)gLd#D1WAa0j5Nc&hX&*X>ey{qU?8H5IKf z{JO4s>11i2(%*?j3W;MQ*>LkM?Xl;rS>Ezxu9tZbh3}8!b2#{NHLr1L*^@XmUT-J4 zIp}-*D_6EUoxJ)Eg&Yoiu|*Zt2ZcUCZW`e4X{`aTX&4YeO9h#EmvP5Qp&JzLp2%xynN zOXgQ^fmQskC9|_OZx)`Zp=qyUy(-i2BG}lHXjfBy8(b!wG`z&u`i%gb&Ljc3RjkbE zjhy_?+6R$xzJ|-d=XFE-coe~`3$qWP^SM8`Y}?Oi0Dv+VHSJ*W+#j37B$HOOfs+HW zr94-LZq|oc{{R-~(MHxm4c1oB29Xx-kl?$&%Bng3jhil6^OlI&97`^nm||YWI=gW0 z$zAJJ%B+dtyy$V-fD+!$>nn-kwK6!u3r1|G99mviCQeH3FZ_1ar8gVq0vo7KYqhdQ z(mzScURB^n`0vDl{{Rr`=Qi?FZg>atXs7D00RI3T_>mY~K`yknaA>X#bA1j9mC-L8 zbSb)PBT(y1hh<}Xg(=Yd%CsZyD@+*IoQAC0(nSde6qpg!W>_S^5FrqPNg%0lJO`yk znXV(yxf|ug8m+8%nzo?rHqzr8e+n-iM>Kmyq_i|0%e#-l@2_=?GjjVJB`ojsKa~1b zi>w>lO-1^ZV#{jjVGx+5d7*U!o*YAcQ@d*J#l@{z#h00DsA%GOlbq*e^!A!ISfPRL zjNLh{k8^uf z*EKlkB$V7nHa22k*nMECnXORlM!kl;@fc<-lXNE<{ie8j3hu?7UvoD`Xc=TJC66s} z+ltyGj^mQnW}IrXMCUjdvd|sbnjC#A&&zFK+MXrr3y}D7zaEY&rwye+7a+fp&`lqO zR=L60?*o3`wLF&^4-UmAI1|J8bS^_-ric*NIRhYjl!#?^;Z!XKNgc%Tg4Rgj!+~XL zI}KGlf~qS{e-Yh3O39SXUSHC0HA{QQtRWXyu{syF(X8<%d?dND7}^0n(py?BD_JvT zN#K$R8fBImk6ng#13{Yts745MR5t(nvJQe4RZ%S5_cX76-OW()8ZUhMMxi&MNDXEknyU_xepL; zDoRWo_K<>yHbG6kL zD1oL}jm*kv9bR@irw<^a(x{s;rP$Og?1dvqCupw)E}0-nkpJBgCpFC>+qfm(TJu*rrE zYmx{hXnU&njND0F`lM`>vZU>6O*02?4sOhQ5T&BtjDonSXmS-usT4kmG&N#qZ`}!~ z0oB}AcjI@P5 zLy^R!fwBo(8=PDThGS9UGuj7phV|EnHL1DBn~z)Sw6RIzNZ8>t4tojB;y`$G5OS`i zYS|nvwx;Sz@=Xhx_CVt+j#5k7=$y(|3KB!Q!dJ$VBDr0<6<-vDl22mGxfj~m8Mkd} z=N_bYF#2F)h}~&Q@|o)eTNdoFwIK%Z>Joli7ThnJ6a=i2t6vRERC5N zrv*(upds3UNYa=Hnh=SIL;w^3iGYXzKmq_vP$o4n3LpeP0susS5C)0bddlN81lYw$ z0SstxLl~hT6($0pV}bxski|d_2myB_GzbC7Fcl^-LPZY=0U+9;l!;?)NF08ZHf2>B zkZHx@j08OFbAcgpTacEgWq8Y>)@XLu)<8jdXCyV*aM7M8S7su#Tsf~>>Y3Yuw%Mbi ziZ?aXEgNJey{dlm)TFrsEOZQo zr)XnvZF)}C>*2%MSUh~U?zEH|wd!U(B*sYI3K?jbqKXShk)V|f(IK))wWDVGAt7Cm z)mZ{n5=f~H0z*TZfE+rpK;V&;tpZH6S!+cWd+cb7woY>{Ba|8#oE$uutn8&jG^&kH zX3*miX?BfkLo>!EcpmhauOs`6^4eLcoB>0zXzrlKH6wJuY!z5q<<_Kbx|Coj6n7Wc zMJ3bRC{K|mseOoq%6QZz+KN>~kzT_XA=RlyqP8aXCS}ZWdWO9l)VU$!YjSppGLuA^ zEfr^(qX#%Q93Au`ru3B;Pw#Wk^ zsU?j)VQA!pq>?Ea8;Og$PS6t9sij;4?p{eJ5~Wn7sSBRxR|<5d(1`oOg18@Azs9tw z4Hm4UbDdnpjl?(&{j0wfB}v7S`oX(oz{u(wP(5Hbk2>@zO%FdMmcw-r8w09p*AN>~ zj~)vwx&|##%4)Rk&;hiPH`R1u^plr!DaV58=wZ}?LqlGb8EGif72%ZcUKmFciSn;M zvNt=`*^_s8#*>}Fqls5sbFmi6tGShTssj{}L@S(7yzHUdg6PMB9J7x%GE^fj?&j)d z#x5p&vBcbwF~pG8@Mzq+>XO*=Z);giiFtfx)@>NZ=W&w(LU`?^RPvl+W8r@NPjThV zC!6(|p@H86Zyc|1wvp|VGmK!G_+x0pc=NBARl(gA*57&cS+A0ncDM2@YMimHLw5fF z-ZRAcm`ht6##o$5uj<<9!${z}tBth@960mU>$%NpmaVtEd{V~vE*nuSGc>Y5;CMI! zs2})%R$&kSZ4JdynT_N`Zi2BRdO@8p}`Hy+_CbNH#sf8`jXiDt&sLGt{-syi+$gk zJx^#~@@x10O!W3Xi{_yFDb%rU?-EBxn=WQNJM(IWv?1G|Kz|Gk;X9zC(hfuBgR7@$ zqx*TkL95mFkMH}xnc#oq8&m%Pck(j+SNC=Mmu?oX9j{6BFd9l<$%`vLxH=;p67IsK~t0HSR^$ zFXhbNiDEY#qKgNi*0c+%{1n7sS_8i|z^94%(HV5F#A}5d2tzNR%TLw4r)y+$RpnZl zVR{nKR6D6;nWIGjGU3)c3h8X)f_5;{w82M1S|gmlsMIccBzL8HIQ=N_v-;WBa+SMf z(c3G@?#(M2D}_6*;G)hfdK^t?YCZ^>Xk%|i2}?IZQX&BTv?o#YET}=V0U%8_+?j!9{+j`ROWjfSj@24yvhQ7P;Y5G+xmNRrjwmO_p z>K6Am43W{tBV6{kDLF^Gu~jl8Ko zT7|CGgvU_0FMo+Cl$;vrSs8T(IM5>163F)b#7Y+@6YQjmT=VwR}qX5y-$44W@{j zBjJ!fKUf?qh+5-rr093nVhhUws9C`Kcvu5&VSCJhjsv{l_W|7AE7ZMeIbFv!mauRd zz3{u%uWniZY_byCY|7r~^EG*SEjN>TZ3U|-#7+e4-WIs60c}R=Hv&tBmin!2G3hl+ zJC;0JBEDd4sZv&D=+!2>`~q!J(&iz!PAF&4nq4 zN+78RJ?VhIlxW}S!*<~g^H9y~2Udf1Yu2=>n_~_Rb9c0s zx|~9bRB4EIRW8xV9GH@3m=x7NIQELwXust?$mB%VTI4DUrLG$XluMBlJbhjNMsIu zLg8m}BQEo)XlN>?3qVRx5=QcB7L-y=*y!A}gEb|no@x}{sM3}%#~~mt8`SQt$(r!9 zbSvr-XF^anY1D>CZ&eJ7G**1?ZF|{x(Nj#t-WP$5dwprJF%+{U<)J#2U+lMTkzU z2-6#z9h48v5p!^9*em7Uyem;p#PyT@1t)0QTW%z|WL_(z6(Pqn1GbVHyB8xPuWXpE zH9NbYqj{uRP6>&kDGnjgiZlVmt897iUx_(5)VINy_ZnTyMZ^IsN3_g*#dg;+w&xA- zUcVB7+O|hHDgZ!)C;&hRQvnbFfDoVnpiD%-L;#2YC;<=xAPp1i8u2TL)KmZj0H^`M zB85N-kP3l{5Ceihhah5v0I4yC^Z=?xDi{t44oA0YOlXiPWfC-y00=?%zCjor#Yst$ z{8ib*$B=b6sq9__thVtbhVu28Hs)5>Xc9PmDqRdz zz_*(IBu<-?k-!ll&DHPL8v{d(0Ddh>>kWff#hgjE70Y;l3?uWF60=lWk&@NHDrjN2uo4c z%&9z22Cc7Bs+&^MS2H*qrw+AnY1)K&bA4ff-jo!gNTI!fmj*dqk)%{RfkZN|R?7O1 zFkMF{g}Z(`y2jO~(^efZRHk{5HMDaLH}6OI@v%=DIgV%4rJCX^#=JTp-wn+hhTV&| ziHRi97jCH-ZoSNE9o;Lhv7V*k7L~8p^caA!6PZgt2;iXlr}W!ogHJP zTeP)dmc81YCcF~3_eY&^+M1c#l4suE$ush1{3d#!bYWG!al$T@g1DKx{K}xA;zsU0 zsX;(q!?y$iLtF(g#41csP`Viy=R0=wwH%Pt6r-9EiE#U&YUs(7J<{8jmkLIBZLeaN zTO#Ed*HXT!Ynt~sRic0nE?%{0d08zCt*y3@G;t@;xbso>9XKqYbIo{k zE!Kw}-*Ev6$(uw{vY}Elx*uU_JA>u7kVhjN(8F3dl52-mDxOS-qm)ToKVH=%K4U;!C@whsm z$2ko@#e$FWuI;LXX@i4~y7x=@Gl9M3-D((2&4A4lJ$FP4=s21MqR&^cZxdS?8BK8n zb%gb1X?zZ^<-9I`I_Ql8zqRH)LJ3!^?LMZ@Gu~tAqsdtxha0ySIFb3qWuMf}zCWcl zTAYs%xEu(;_O43qb~U3oN>Yp2>U^{t{F=gb#=qT)L*`su_xde;w>@8GU-A_Eejb#uK`s0p7=xUbwLEcfF9BaeOt6RQw2{9qZi1H3sAfmjDS_HG->K9D|(>bkIN?^ z^C;HSO&{9NU(90ly`THO@8)^d&`@8#!X=)oTm|r`KFWAZhdYwrlot?p&`y|!$=hjcHbh~3T(?Jha1jT7at9# zUN$!tHIu<10<cXWhJZ3=6>U7_4rP3 z)W`XR-`MoGZ35!qov|>lL)n~n&;J0A^E_{TU$(#fzmd%H|SnNk7o|!qpoND<3y|!+=o`E((fJplZR`7`c}MO++S{n ze81VZ-T9O`L;OYI{{XX((+i{AJt*V$Z&kkIS5$R08;+SH9kVrZ@qc}N{{WHE$bX{# z-AWSR94YM|GS$6AwmD5t{{S$b?;k?-F@D-S9!Ksnq`$244?@ux*wp3MQvNf>qqHt= zU!e6prT(GcMrj*B+A#VTgVg#+Af2)}+(}kGDIC{3AjPhYrZPJM=vIoV>~XA3+1hk7 zBP0NNR?TQ+N-=YQ>r%>0p{ox4w4>T&tn8usS5F^j@Hn};TDI{dw>h9=#_{OEV|^P( zU2Q2cXE!`j$M3PjwWUp5G{tK9S|EwyOK4s;xs9(~D73nZG%8!ViH(M>eZc!oaQvqK z01|e3A~ES^hnLi~pmq5cX+c(f2q2BmyK6GnF(#DQ8fsTgH867B>~HFJ5%{KP+5~e^ z&2w-V^)0W6b+)Ggs!(cIRN3Oc(z-G1c=`VTah<0kYFb^En#lDgO30^@S2p2|60mx$ z?=Tj;Y}z{(H?r?N4l9gk>7Qe!UuON=s99VRD#+V%*yJ_-&Tk3T?Ny;}=RK}lTY*c(b-(nywLDfWZ=!rnQV4yk-n$3K@!V$j4qYGWY->quWbv(Q&?Qe zC3M@)?yLsQi-OC*^e0(mOZ(fKxBe{vji!O3mFuR}wmRAlM`^x>T$?~vS5uq6?`jit z$(QI}hCfO?jK8?eXa2qCrk$89sCU?YW`l~=Ga^BC2xd@eUt7qOvG*aaxP$t@lnLY@ ze6f*(+I*^_Nbeys3hfG@p7D=(#8m;@SC#Z*sl8eyvaHUl8PQSnsxo9s01_A=5D}5Ue>ap>=o~C*E3XV5tMIXv& zE-l#D-Er}98a1_P6+IN#t?@DRGF-cO9(&CC8PNHf{{TezhF!Z)c#2DitB}7aFK#>7 zPE*nsooXd$I`P_6lwVTX9h<^^3vA1f(pfmv)6%f&Bwuwy+y>>nL6NxBgI)NkW2vI; z9xz-Pa!DHwOb?xNeP`fxu0Dir(k>}cEN8BvSJo%|R~waN)9%|}P>zQW;!o-seG7Ff zOKWh6V&Y!T$gkb0kuN1W?8p-1XjNk-@F%qPnRwvSrKN0?C$g zT)=KfV++gVFgbt@mUOCk(3F@oS;3$Nlz@9dOdyqwsuCGIVwIw*p%NcVnoWnkyzvl!HPk)~Z4W3WUTca1C>Ef?Y~Fn2K;t zMFNL1g92T@f_=m7k~@bmxMZy+$+${A^~b18y^B_X0GyT48gY-TqljH`i3W+e=?TVwEC z_N*Jy#La#^3n(r{GJ&+wQpY5`k*gT_W7u9Z9gP^fuvJ>dpvC5$0BM?~!2BCYa-ENO z@Y|0|@~ob0b>049^zvV2`4ZdmOw!fY*KB}qWI)R9-s@LBPjO4qr|t48zTE!+xyRe) zU1uh8>|+rm~$U^gsfe49QFga6V#GrXfq>8{abqz6d*80cCo#Pl3h@r3lTK%!8`y|iF8D7 zw~4rhY}-oUoQt-jaz(c&uMB>a3qd=(ng@|o6CyqJ6x^v3CA&>xYj%j_9yBc!XssN< z_G`DOu6(>@ZC2*^c@C;KG)3Daf5d6>wn-wX5gzM^b#pf(momj_`E8-l?cC<9SIy$w zKP*x*V%z~4K__+~Vw$R5bQ^XU>0I9I;74%E=4o>qO4l4pw43<_uc4QyNogc)0Eb+$ z#&703tvL0SaIu0MRwf zPU@A!Y6tNHJ*Qrs`|j z_B2{EV%|7z3tw)+WpjXZT_o;Uw(GvZmC8L}y9T#&S^)A2FC}VmfGQw2CGlizW%SGj zr3t_>8G?u{@ewAs;BYDSVWu4E>lHy(wpej`;fFJZiekCe0r zIixY9;3^kZ7M+qa$zLltM^AfUDK2(#j%L=Ody2KXJSA&mX3m+bMRL$uXyddyisH}5 z?K|*i?>As~cckoGRyxu&?JCamh9_WL_gxLBU-8>O_S86VStZcu87`-A=9YScW2u2n zVkI&WAxtvL#X6Wh;@BZdX#nou&%g;<0vOK`h-J8xMf$H z7{UAoxyNhB#4S?0Giem2Y%g&wX>E4`x2uiGbt^stTn$!=@4=RSt{c7#6c1DVZ`o!V& zEuS9F#x&$4b2s;JXC=IImdTp<(&?^IFerzWIj^Hw2UBRaBxn3jZ!v^kLj*TdI?fQ!i*XPZjI1CJZj09T$~vam-#!SD`%rgqiSN+*B0hG>qZL6Euqd@4Nu}mK$V_W)1`Q| zy=6{^x#vb%csPO&3V#ya*GV!~lS0wdw+wdDN$RTR$hDKR3-X-D%sRTmO{m08K0Qp0 zdVbTRzuo-L8{Zz7{{Z)YA|IASH&(r_`+xqr#CyiLm&`x$$NKN&dPYF{Mi}WOk-?C$ zpt;U-unhohE9YsA+TE!7jJYdH&9*h;`E|@UEn#r6wj`XLBn%>gBi;e9~ zR$Kdj6X!V|_O`C8?eH6^e5dB7!W$s5d?2{Bkl(r|Rn0AR1k4TD#d8g%*UbLc^ErL8y4gOkYuS&%&E)LCdAT<|e0vHHdB^QwfucQLzqs!S z+mVB|RxLQ6y7IZapp05YHNSF{D`;{CLEJdfOEIemX3(HPj% z(2iTU9sQ@L1<%M{R(f99rP1HB{T@a0?D~4{W=&`K^1H@+24X`Su-6<{a?9mfYR@j* zb@g7PFRLOB+SZX?qH#raa9#Y0NeIg;hU(L?PU#fZrAzu7DBMTtr)_@hjU&>!a5%GG zCl@zbC*Vb~vF7ouJ8Y;hnKL>_3v_)tl8P zHyQaOz)2lLBZdPbYI>dr(v?)g9o#m@vb#5x486$al1PkKF}ShKc2_yLcVq+=wimh0 z%F-FB6Rw>b9Qj?5!LAIi99H+SDI89vU)~or#Q3kTYU#(Z@VE&5Kro8DNyYR<>Gz z*o{DQa+6Tt2nP-7zM6I1m39p=f-2^kV}Y*44;x9BYwTj`G!aS$=L~$RF>Y388i-@M!t<}Yb27s zcv&-A21dTL%zo($OlDU`k<)a-OO2EOa1C(!R_Y9USsc1XnBi92F{f~Ce~muSg1yFt zY{(^>BUsqubK26{)PqW6)}^RJRWb&j1cNt(3r74$qKYf47hu=vHgq&=nojWJ{A$?y zO77AkXgN%dsHR%CdOL;MX5ZM{T80S)TKrn^u+y^?OA#=;KuwdvYA`HLE4Fw9*I z$UXys?+u~DVFgws*slp4FD?AQ)j3vaEN<=Fs@P`C(&LhL)|j>CwZn6lU-=Jaa%JPJ znwvVe&nwS_mM&h?9btDn3}aHcdt{Oj>pxU{fHh0%5f&TyiaZJ8 zyt#`AVi4`brbU_j=O)I;KP&pxduCH`}cO9yrQe)ji z;LVAseMmIkPAf#tYoc3yMp)aC-T3zdv~?8P9da~Vk5Y)>YCnfUheKtYwH(cOt4&8j zhf`|aNh*{Un8yzFLaMVnB51Hyn7c{aBS70qDPx!%E}|G#r+~#z(`=`ZQFAH5jmkae zDp-;w+-a5V#P`nn>?!uIktb27>bB2@F=)m@;Lsk%0M`OG<|2+gYv=hGT`bkLJscS) zV&BCY_pv9nb2`b<+$p&n4^kZln4)&pn-n@0nh?ki^)M2Q4SPAcYnl!Wp*x7FUXKa+ zb==_QH{YR*_S0hSTb!?9g{kZ)kzsyXu==ic9cKkkQfSFs(h1B6BXLlfsFdKUL?+Ba zBsC(qYmFV6jTjI*RU;gUgfA_ue$LRF6&T{$^n{HWT3AaBMlJL!Mm9uFDxl0^D!KsN zpq+?Fk!VYDml8M=P>5X-T82h}fC=hM3WXsEX-EVp0jhu!Kq6uU03ZZF0YI44zz_l; z0RShZ02|N-hV#ayaT*GNhV%faU^yY7P%%`1qhezeAO{41P=Ss>3J?OMF;ZYCNMeM5 zcqtS;r6G?BSwn)6k7=R?i5jG&I3!Tukck__>`0_PJ#ZToz~ok`WgZH%{hBc)cKc@<4=U9z#cx<7`(M#}D7*)l4fIPtq0(Q?Jka3*kV zcLT9u{!LEYd`HyYu;h4UBgUD{ZvZLjs^`BpHb+m=rAza2=9gwE9juc8F_q%2sO(wS zEw8&OmZ_Jh+S*GTY-1Z7q1lU=HaCLl!!_KD$yiG(Yg=i9+&pXuA>x};$$MCes5*^0 zJs!65+cAx~V}qm=%4jQIwZmn3hRm|+bjCqi?l^^$tQ=}U&e6R~UI5Wn>iw-0F2`~W zX;Uid=tvH1Ty{Hxv~N^r9b)#&GlZTjTiWbt+P3;?#k7aR%$9c@*&X3K-FCu@acs64 zUIlCIRtWpeA++933D=Kel}yPwqS1#bczO3DX>mP(t^WYUyXX$d5J{?QS2$SdGrS#- zdrL>2iTw<9^;ln9!3f9B5OJnz^(U8=d(}y%3^c8rBWm6t1su>v0v7|c9imTe=D59rgK%0_ z{v^E!W4R^etqm?4Nn3p+_app>Bf4~rkeM*9!Zu)pw1Vq??O=>Z0NR{tUvP!pDA1`w zc+|&YT9e!!FgT6dQig{pVY;P2Pw9)iPaW>4bFke-N~s5YkeFrM>Z?{JSmS9pZAkzf z@6*Es4M4jYd|SvgEGTgOo2@kIU@nc{#YM z?{c)dz1cK*sXIY&HSD73x4A#J{)QFcRDw&(#{-fu;N7OQ0cZYykK6Dx{{RtmMJe?Q zs*ott&_1-EHIMvsWnMn&W8ZNjg;sAfWqlYaIga14B+zz^$~UJXfgS)GDt7>?t%=hYhPHZ5kG00B!Rp z5+q3^V+^g#cT;XERgE1|E?Vji(r&&RQMYWyXv2hV$nx5PTe8PU&U~!r`e%AS7#fwZgJ)MpV)f!=C#RI8V%v)xHR1> z!M7JpmHz;@TzGDwFMMOfbIEQQUg}o@y=vVm_bpEwCOcZoxtpAD@H!*K0hWvkt}>C&pZBaf16o6C<9XP0Jl|8GXt_~a3BY%^k{jPJcwm(aP;pf}Pk4M_6=WOj@xwwK>PYHZeMrz5UC9h{l zB8$vVNIj1edD^a#eQzW6y)rwAobiUl@gI}BaT`wQAwBFkwxLqJU#Lks>~Wm@=D$bMB%lS;-H**=A$mU9Sa<&b+x*Wj z-R|tE{{XxB5PYz=HyX|BN3(26r$mfZ?#cZsk?c+~*}ntXZ+UN5(z$*5`x<{^o;YKB zaV_!KYdN4j*4HY_+c-C;>a$;Q_XU#c6#c(}%-r+$Jy?da9ZA;o#f@xnnt|^ZG}U%n zlG~G?{CYjsgqFWEzFi}Tt-Yqe z!Z_LDMJroS_IPuNGM=R$ZP;j0;}l zo08`o9OjPc4DNjm1Y$hgcm#5sp!WX&U&!d707O9Ie9kM&x2X2&w1hT;IsO|HTM5c! zdckqfuQHNAV+*>3tXgqb>nHZu=H}1QviW{yZz_++yCV_cjDIb3^SvnM_QmG0r>YP4 zWR2Pk(Ek9mT-<-%Uv7tAEB2q;sX@*p5_pxnTA7^AtN#F)&)59Wy$n8tczmDSWjTFe z)U`$yG&EyNh=08wLc>1H^gX@#k>0@ihf^9KO;>|teLZ&*P=q(akYZ%c*JJL0N2OLL zDf|vx`ea`dHOmrapA+yL2L#n#m2^W=lJ^ z0p1aK%pEYhG5$?fm~^sdKOr}c%fP9oI**m3)q7g@^z8@Iw&d4iFK>OxuM+!e9n`rV zr)4)Q`nQ*iI}5~v^2RH7trIcC`)_KDdvnDredah0v5518QNtce%^0yfJ}BiI9MF8! zDP4BB9W6CXZNqa}%s5fQ$mH?3v7TD@Rhlqd2gcZGNg$*yJDrmTxPD0sYg$aOxknkP z{{ZGUNBdWLS7kjY@-we9H?%?i?1-I}f9Wn<{-e|3`U};dSR-Q1yYt$P0!P!ZDZ4Ka z;?ua0vNZtL4dkaj0Rpl98y?>ZDH$OSdt{A|1h$|a@HE<~WWR|o9Xtr!+h=XGfFF6W zhLPApZ!P>u`gDB^JwiGQfx+KO+Z))+HDNM|9oBu}>0K2#ZLzTb0M?pxt|WT4*pdhg zjgT~A#y$T4nlmjV=bcLt!W$9GgSh4#aoG4s|^;aa=Vg%>-sS|g&g zt+yojYbs#?uIyz00F;HBCy(T4@M7@%$*r{ecb6XnH9pjX&{SWObhj>?Y)@GH%9?{& z6y_+}TG|XMPT#z@!;;osW^-k#t^BCYeSAjtt@;?wr!@R^Vh8ny%~HJu={$$~ti1z> z7z&;W8Q6}SMPX&D+~M7OusuO*MJ9G_33Ga5kcQI{QCw=J-H)_`_m$0iuMO&G`f8HO z$Jj%2JktZ>Nat4rQ@essBV{T;*qugYF3Jb0>Uvet=w)gQo<^~`q%;P(Pa1Gls|BGO zEOqOruvuBm=E?fGa%E}ibEp+8P4qCfNHR4jub{YeSMj_|Dk&lNaKmaLt;koOi3O}I zxws55h}cE}q}0=-)ek||84ULR9Fj0&k;S9PXq%`ImXWzk1Oh^1*|jE8I$lw@@Z!~3 z;yy7X48@HO7);YgRi_26Dcu8!M$x_!#~UWMiNZYXbHg0c<{gbRp!}_>mEE*us--NJ z*Wqq&qqT++6K0kup$#UC4n5-HYnzR5>|HdnlPsG_iFrIzT~8woV=_F(c(5MtnN6kG zipo$yPxf-R>IPI#DUP0sYtNM7~E>mJ?A(NsSq*F zd@b8Fen%7N2!I%8fNXhp-D&!0oP>?|nD;TquMe#fAw|jB7}3@%^(5HjV0*K7-B9z~ zZ3YL(l0uMiH6oNl2^va3Lm)M-<(oh;C;+Y~fMl`CMg>x1R%M0){2D7%?V+O7vd9_- zdlIpBHdGhG0}v>tKxr-;(*m=F4G@VdJd)=V#WN-}pg<4+fEK6_ppCtWjtepBQ^Y`j z;y3w2%9>>>!J!q@GdDDDuNKmTEf%J#)3Ey04FePs6tSUmC}?ShV3ZAsnAc?!5e(qI zP|{9N+S88ZNs(>D$N-=uB1D#?S7SY~7-nhA*B!(pg=L^J!UwUgaXFj;G{6etvX3o(~$L3Rux?vDX6kAI_)Q1Hig2ine9Cxr|L&y4OriY zxNaUZTt3rC^b|n5ZQ>|l2fqk;;>Vvul_V%+qGqsS*D!RCsSO07-a8I82dPX9Yo!EG z6*2^VJK=we8_Ondt0PShQp+V|hRvNXm{es{91ul z^*AmUSUm;t5J=xDhKkf3B{ro2ETw+uzAq7nGg(~5n<~0^>JEJEGZI=fs%AD&MnYtWfD|AB z0ucZqKn*H@L;#2YK!BhGKmq^|0w6*Z0EvJg1SkMN8U)myvbc=_Fcc&)LKqGS4GMvZ zqyjJc=GR-N;%$63ny;_ zE9A9{PrPCEV{04G7HUkD1{mpV3;DK0PuJmOy&EI(4{rduL=QJ+6A zfGY&m`!WoBLfLW#(M_;k+CHv<)ZF%WntK+htLUDjvv*F{{76JnG_~!+9szP?!DMF% zmfd?Bfy!!p>yg#uT@e!As*? zsjB87CFa@25r&V+`p~#*sSlRQR~*fL{jvs*ptY|KsE5n3n>McJ*Tj^#mD5}a7`*M3 zB)wrf`qs6hGI7) z2HC0PGNOzIgT-`NoM~uUWKJUiih`#?PkE(Mnj_S zdoCP8iDQENSCGM?U5i_B9qsH_wwLpM7!R|OCKy@(W_q?|cX4ko#6v6Knm+R+VaB5sFuIj3 zY-Ieyywor3w0W)z1EiAjK+rOmexar30knncdv2ZH8hgN|9JO`UJ=&iMFVg|p&_*<7Y*!%F8J0Zk3 z*l;@n<>k}2C(QIPzWhm?%Vq)OW~TzONJ{Y8rKB?AU1GvpVqGLswa;UB#42T}+%ha~ zlB-PD9QUWt$LE-(mGFkPjkvkEm^Iv6m77B8<6b`FE?ryL!_t}}&u{BKGnkMojwy02 zFwHor)wH)d4Ia(6S5RBNX2TrLIizv*MM?S>pPulWgV4jPhRV{uI4^D^eErtQ_A$+j zxc5l_<*Rn}t*cq8aAV%9XRgE=g!V^CyN#mZ)4hNK;KoJ(m88@H@^A}mc&*yVaOU6S{M-g*ARz@F}(5AMP=!JNnp*Pg@;dL0i*WHQ;mKOsV*TFnF%Px5}aHZ#uyhm@T(- zXKYV%J26`2*3;r)#?rCiNb&e3r`r_ss9Tq9M&@%bXQtN8AnY_+KS_l*IsH+&Z|-_z zaqV5$+|?dVW#?x{%Wh+I_=BHL3NKibD0)wVqr$1VLu8ISD%buE^}wW-aVHFxwq{%WsB`%feP0Oe(FC!dl(zO2oAvdYRZYRX$^$9d< ziz~zXQM~b+EvwxV0~`p;BVI$!Q|)0sE%J4QlImRQ@ZaFL2D#+&iP* zL%nwE^$P$6UCT{nwM991ywbva@yv2u#M%sY5Z#IXb2^AzAiGg zu0Hlq*LI34?jLCr<1C@ATH-@^)NUyzOF{}N5U2>lJ zL<&a+JD?&4m}Y3&>Yf7>NYLt?&GNhWlI|KplJm6V&=QfP6yl_)6f|%^-~$^?idaD4 z(ZkG!#{_`TQAt`3w`lQAFz%l=DOt%?ECSqw)HTE2Nfl-&b4(6>Ygc6hsVF5f5 z5J?PfB$m+e7PS{{R}E2S?Y*;wjX%5-9gE z?ctOo{Azd$>*OoGS2@+DQSJ)U&aGoehi1m+%m^4A;Wt(!$lL*K9fub z3z&C|Xm7Lr7e_69^Y6qGExPGc$6yQkxyY5=&Bw z;m?Ln@WIp%0H6T?HBbmp0(wvYfe3&E z0EhrU2vZP<06+o&L;#2Y-hebWp0c>j1waZC7^neK0YE`QgqRAD3Yf(kPy>(yfMi}mm{#9!wB3*QCU2Q*<)kHoP!Lfu_==NlUkPSG+V2wgIOP2jtv8) zMoh}4l)&Ds>-4<}&dNr~az)I87Bt}-Y4&}uD)aJX?mD3@4cRqG<-;+`1t>7UVL&ig zv}UoTsTYn4J4PXqI3#X-5Rl|>l=&4vnh?IbkQxj*w{1Xc(2i&XfSEvR_ecgfaiVp! zY$z#7X>|VXU}bQN**i;cj!_lFV7-!@T=@k^tt(pWTzAD~lg;TnX>ByzlSAh{ zI`!h-j@ui%H5 zj;)4^)5HEny-HWya#>=o+x_P`KCwJ~=)4&L*jnt~VMX0s3GQK&Gg}z7u7TWYVroBmH zvx8}j6`Qj(R7L1ug|wpp>I)lLy^Skh0?1=1vX*Eg;^2uH8<=;5Z(>H zqLjAu*tM;s&D67}fX0e(HBpe?0is^l?Ezqs)i5ZSv{Jrw_aAV{rgPdF=MvGd6J4l+ z8!N@?G<&!et(nZ9fo?a3jf)#2TE|jod(r?0t%H^~O&im4lV_UZ;+e9-#}M9-Hm=7- zMKP(wuWYu3vM#lN6Nc5s+1!wYqQ0O9f^}rs3R_cj002Bi9e4*n6{~6yl9y(4w>BU> z*@k)?M^fpgLz^Zw-2%mLWi&?GNLbS$9vr|??K}zL)`xp7e*&vYy&28wcJae|Bv8Cb z6C7H}0H$C!<3;G=vvp22Jf1~j?Iv^_q}p0s9x^m`H~80|?jEFi9^Iu`xLe-oTw9&- zu7ZF!fKWBAgQg6Q*u2%QaRN5++ftQvv=yqU%k!i2UD?~X<85rx@xjwQ(h=BNy^aNZ zjrg7?x>|Cj;AUwVqrQen`>xI1cLEmq^{Y9!&$j6H=&mkpwA+4Q(HvvCvCDAWn3k}d zvNtcZ%yDVLi^lfbx@3uy-R4zfq!~QftK4e0@oMu$2>9qC%Oor;jpiU&>gM*^aCeZe zQ=66E#}6M8r8GuM?qYOo{f;Kc&~wVxx!H%^B;_NaaaN}G%GyaIrna!T)8n2Z#<$|_ zC5|bY)0NEyvXdLK`%MQ93h*@bW!kXh;JJm*FzNMSX>;!$!gsgCV+A&QrD@w1w0sU^ z+k&;U(lx=r(Z+zfn2Ii2sXHr?tq~2gDRGIZ1=w|06{VhrbxuTcYU;RDo#&+q=vz)o z_n`a@z;LMyt4|6zEpbPBIk^fkKOH|ZK3wk0a(=+`xU1&IgnM?4vi_xChHnErL(;kU z>&$fWeF)EGKzElPD(JC-bFt29C*gL#GtQqov9C{YD zBCb**h5rDxUAKv2!0TlexfhbJ=5peHsb%sVBl6E{A=uelUZQB0HKRdy7q8xANtzjM znl?jlALK9oCEUE#uf+4cH^1C$KY#G)UUFxu%C~*rhnI6D4R_s;Q2G}5dZU{^_P+t9 zq4eMU0+}}IGA`}i%QrhK$COa5E$B?fjxw}KDWe*9G>Z1D>WjXRHtc28FDdi`z8qo^H(QlSv?1358q_%g||QL=FZP;)DqambFAMNi<<<#I|dIcer{gy0EPg$)0sHSZe6L^M6Tn z^f>ou*pPnFDBxZCON*iDy<80v7{kck(@=MXRWZ3EF3D|6cJ!%r)P4IFS##nRR-xNF z6uQBpxq1@JqcgJByK?<1A@nI(61&0}hqRNxgXl@7F6xx7E8|nCG{|VE>bmMNw7JWo zt3xLI$2d)ONq+PGmFRzIG$XD?;f)atq4=OuhU`HygekP(T}zr3L z+k)-SkyzrxSTbaowAJ{(hXumwY*RNcbb<^7Z*X()6)qK~G^)HcNr2_t#{yA6phXN| z1uA%B*p=KM5;5HwV-CS`D-_WvjzT|Be2JzIJHnl!rrqVgbgD{8?IUxUOl{rR;q)U? zi1S<4hS~1wc^^SY2;9~kmhK%jKg5&(jkjjg86H$XpjTQjn$^JW*oJ}zI?0u(bC8fg zMG%afwFhN)ssx9V#RUv>rI>&Y@8LxR*}*JRwZP$&ji9QMt6-i_zuh!hPeK%fu+a0H+UC39OF zKp5rol#tsh9jeTprK$~sU{Z9di!Nq{k&R6dD~kopv3FW~ztx;u{7R(GwY7FGMSBCV zf8jXpcdO)ZL9KG9xo0*Ntw$03Nl9{;(&B-loR=;a0nHuJ-EdVX!P`;Jx(%oiK1cOY zp)S-@%K+BPazK)i#xcm=jwGwC2u;|$(S{oa<)j-#4{j(KD_T<&k^r0zM<8M#BmxB@ zrUFqY0UXnm)F^Zr1Hr98Sz53r%Em7eQVGh}15?zpOwFk+S}~EuMvdnlDp_<;TCNHW zBwEv<5IGQx(M8qKun3=Z3x6}DU1to%}O2RAwZ#|V%HX* zH(~_pScS#MBZVE&u=Ocw3$2M99a0YEDU`kCJ-lU=J71`9L+LWs%g_f6la`4C@e2zPs z(suPOe3>a#sl71SonD#p<5QdmUC7&3pJ0sgb_xKz+`i{U>DTS@I;q8HO=0r;MYjM; zp5@!i%?Dtj;LGk=9@>4rM?%7p(^zPFZM#5<)+onA1y5~P8_Roc$Z(BDLmLNip}Z&p zp4HUN-HmmHl-SK}6rF5oubD!xZo*cwGj$GLb6_vi!3L$q)C%Bz->Gj*&#BXkl^R&U zFUsl>-rrT$s&qRc;!<~jg;F4Paqk5CMlNoY`#@0dwd6->Esb^5Z1t<;3ciyUaK~La z!?_!&#Eia`YZD1w28Ufd(06>b^e5VbQQicixt*H5KUys6wg?cx_NmaPL^&AxgS4R` zK-|t48jh7ifG#Iv!8{6w5(O<^MYq ~H!Ge1uXtK<_iDX^%6bluk@_vW9uqv&j0T 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 Tgy44qHX(uKmjuvS`TsWo0FIfb diff --git a/vendor/monolog/monolog/src/Monolog/Attribute/AsMonologProcessor.php b/vendor/monolog/monolog/src/Monolog/Attribute/AsMonologProcessor.php deleted file mode 100644 index c519e053..00000000 --- a/vendor/monolog/monolog/src/Monolog/Attribute/AsMonologProcessor.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Attribute; - -/** - * A reusable attribute to help configure a class or a method as a processor. - * - * Using it offers no guarantee: it needs to be leveraged by a Monolog third-party consumer. - * - * Using it with the Monolog library only has no effect at all: processors should still be turned into a callable if - * needed and manually pushed to the loggers and to the processable handlers. - */ -#[\Attribute(\Attribute::TARGET_CLASS | \Attribute::TARGET_METHOD | \Attribute::IS_REPEATABLE)] -class AsMonologProcessor -{ - /** - * @param string|null $channel The logging channel the processor should be pushed to. - * @param string|null $handler The handler the processor should be pushed to. - * @param string|null $method The method that processes the records (if the attribute is used at the class level). - * @param int|null $priority The priority of the processor so the order can be determined. - */ - public function __construct( - public readonly ?string $channel = null, - public readonly ?string $handler = null, - public readonly ?string $method = null, - public readonly ?int $priority = null - ) { - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Attribute/WithMonologChannel.php b/vendor/monolog/monolog/src/Monolog/Attribute/WithMonologChannel.php deleted file mode 100644 index 862e05b3..00000000 --- a/vendor/monolog/monolog/src/Monolog/Attribute/WithMonologChannel.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Attribute; - -/** - * A reusable attribute to help configure a class as expecting a given logger channel. - * - * Using it offers no guarantee: it needs to be leveraged by a Monolog third-party consumer. - * - * Using it with the Monolog library only has no effect at all: wiring the logger instance into - * other classes is not managed by Monolog. - */ -#[\Attribute(\Attribute::TARGET_CLASS)] -final class WithMonologChannel -{ - public function __construct( - public readonly string $channel - ) { - } -} diff --git a/vendor/monolog/monolog/src/Monolog/DateTimeImmutable.php b/vendor/monolog/monolog/src/Monolog/DateTimeImmutable.php deleted file mode 100644 index 274b73ea..00000000 --- a/vendor/monolog/monolog/src/Monolog/DateTimeImmutable.php +++ /dev/null @@ -1,46 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog; - -use DateTimeZone; - -/** - * Overrides default json encoding of date time objects - * - * @author Menno Holtkamp - * @author Jordi Boggiano - */ -class DateTimeImmutable extends \DateTimeImmutable implements \JsonSerializable -{ - private bool $useMicroseconds; - - public function __construct(bool $useMicroseconds, ?DateTimeZone $timezone = null) - { - $this->useMicroseconds = $useMicroseconds; - - parent::__construct('now', $timezone); - } - - public function jsonSerialize(): string - { - if ($this->useMicroseconds) { - return $this->format('Y-m-d\TH:i:s.uP'); - } - - return $this->format('Y-m-d\TH:i:sP'); - } - - public function __toString(): string - { - return $this->jsonSerialize(); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/ErrorHandler.php b/vendor/monolog/monolog/src/Monolog/ErrorHandler.php deleted file mode 100644 index 08d414b3..00000000 --- a/vendor/monolog/monolog/src/Monolog/ErrorHandler.php +++ /dev/null @@ -1,279 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog; - -use Closure; -use Psr\Log\LoggerInterface; -use Psr\Log\LogLevel; - -/** - * Monolog error handler - * - * A facility to enable logging of runtime errors, exceptions and fatal errors. - * - * Quick setup: ErrorHandler::register($logger); - * - * @author Jordi Boggiano - */ -class ErrorHandler -{ - private Closure|null $previousExceptionHandler = null; - - /** @var array an array of class name to LogLevel::* constant mapping */ - private array $uncaughtExceptionLevelMap = []; - - /** @var Closure|true|null */ - private Closure|bool|null $previousErrorHandler = null; - - /** @var array an array of E_* constant to LogLevel::* constant mapping */ - private array $errorLevelMap = []; - - private bool $handleOnlyReportedErrors = true; - - private bool $hasFatalErrorHandler = false; - - private string $fatalLevel = LogLevel::ALERT; - - private string|null $reservedMemory = null; - - /** @var ?array{type: int, message: string, file: string, line: int, trace: mixed} */ - private array|null $lastFatalData = null; - - private const FATAL_ERRORS = [E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR]; - - public function __construct( - private LoggerInterface $logger - ) { - } - - /** - * Registers a new ErrorHandler for a given Logger - * - * By default it will handle errors, exceptions and fatal errors - * - * @param array|false $errorLevelMap an array of E_* constant to LogLevel::* constant mapping, or false to disable error handling - * @param array|false $exceptionLevelMap an array of class name to LogLevel::* constant mapping, or false to disable exception handling - * @param LogLevel::*|null|false $fatalLevel a LogLevel::* constant, null to use the default LogLevel::ALERT or false to disable fatal error handling - * @return static - */ - public static function register(LoggerInterface $logger, $errorLevelMap = [], $exceptionLevelMap = [], $fatalLevel = null): self - { - /** @phpstan-ignore-next-line */ - $handler = new static($logger); - if ($errorLevelMap !== false) { - $handler->registerErrorHandler($errorLevelMap); - } - if ($exceptionLevelMap !== false) { - $handler->registerExceptionHandler($exceptionLevelMap); - } - if ($fatalLevel !== false) { - $handler->registerFatalHandler($fatalLevel); - } - - return $handler; - } - - /** - * @param array $levelMap an array of class name to LogLevel::* constant mapping - * @return $this - */ - public function registerExceptionHandler(array $levelMap = [], bool $callPrevious = true): self - { - $prev = set_exception_handler(function (\Throwable $e): void { - $this->handleException($e); - }); - $this->uncaughtExceptionLevelMap = $levelMap; - foreach ($this->defaultExceptionLevelMap() as $class => $level) { - if (!isset($this->uncaughtExceptionLevelMap[$class])) { - $this->uncaughtExceptionLevelMap[$class] = $level; - } - } - if ($callPrevious && null !== $prev) { - $this->previousExceptionHandler = $prev(...); - } - - return $this; - } - - /** - * @param array $levelMap an array of E_* constant to LogLevel::* constant mapping - * @return $this - */ - public function registerErrorHandler(array $levelMap = [], bool $callPrevious = true, int $errorTypes = -1, bool $handleOnlyReportedErrors = true): self - { - $prev = set_error_handler($this->handleError(...), $errorTypes); - $this->errorLevelMap = array_replace($this->defaultErrorLevelMap(), $levelMap); - if ($callPrevious) { - $this->previousErrorHandler = $prev !== null ? $prev(...) : true; - } else { - $this->previousErrorHandler = null; - } - - $this->handleOnlyReportedErrors = $handleOnlyReportedErrors; - - return $this; - } - - /** - * @param LogLevel::*|null $level a LogLevel::* constant, null to use the default LogLevel::ALERT - * @param int $reservedMemorySize Amount of KBs to reserve in memory so that it can be freed when handling fatal errors giving Monolog some room in memory to get its job done - * @return $this - */ - public function registerFatalHandler($level = null, int $reservedMemorySize = 20): self - { - register_shutdown_function($this->handleFatalError(...)); - - $this->reservedMemory = str_repeat(' ', 1024 * $reservedMemorySize); - $this->fatalLevel = null === $level ? LogLevel::ALERT : $level; - $this->hasFatalErrorHandler = true; - - return $this; - } - - /** - * @return array - */ - protected function defaultExceptionLevelMap(): array - { - return [ - 'ParseError' => LogLevel::CRITICAL, - 'Throwable' => LogLevel::ERROR, - ]; - } - - /** - * @return array - */ - protected function defaultErrorLevelMap(): array - { - return [ - E_ERROR => LogLevel::CRITICAL, - E_WARNING => LogLevel::WARNING, - E_PARSE => LogLevel::ALERT, - E_NOTICE => LogLevel::NOTICE, - E_CORE_ERROR => LogLevel::CRITICAL, - E_CORE_WARNING => LogLevel::WARNING, - E_COMPILE_ERROR => LogLevel::ALERT, - E_COMPILE_WARNING => LogLevel::WARNING, - E_USER_ERROR => LogLevel::ERROR, - E_USER_WARNING => LogLevel::WARNING, - E_USER_NOTICE => LogLevel::NOTICE, - E_STRICT => LogLevel::NOTICE, - E_RECOVERABLE_ERROR => LogLevel::ERROR, - E_DEPRECATED => LogLevel::NOTICE, - E_USER_DEPRECATED => LogLevel::NOTICE, - ]; - } - - private function handleException(\Throwable $e): never - { - $level = LogLevel::ERROR; - foreach ($this->uncaughtExceptionLevelMap as $class => $candidate) { - if ($e instanceof $class) { - $level = $candidate; - break; - } - } - - $this->logger->log( - $level, - sprintf('Uncaught Exception %s: "%s" at %s line %s', Utils::getClass($e), $e->getMessage(), $e->getFile(), $e->getLine()), - ['exception' => $e] - ); - - if (null !== $this->previousExceptionHandler) { - ($this->previousExceptionHandler)($e); - } - - if (!headers_sent() && in_array(strtolower((string) ini_get('display_errors')), ['0', '', 'false', 'off', 'none', 'no'], true)) { - http_response_code(500); - } - - exit(255); - } - - private function handleError(int $code, string $message, string $file = '', int $line = 0): bool - { - if ($this->handleOnlyReportedErrors && 0 === (error_reporting() & $code)) { - return false; - } - - // fatal error codes are ignored if a fatal error handler is present as well to avoid duplicate log entries - if (!$this->hasFatalErrorHandler || !in_array($code, self::FATAL_ERRORS, true)) { - $level = $this->errorLevelMap[$code] ?? LogLevel::CRITICAL; - $this->logger->log($level, self::codeToString($code).': '.$message, ['code' => $code, 'message' => $message, 'file' => $file, 'line' => $line]); - } else { - $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); - array_shift($trace); // Exclude handleError from trace - $this->lastFatalData = ['type' => $code, 'message' => $message, 'file' => $file, 'line' => $line, 'trace' => $trace]; - } - - if ($this->previousErrorHandler === true) { - return false; - } - if ($this->previousErrorHandler instanceof Closure) { - return (bool) ($this->previousErrorHandler)($code, $message, $file, $line); - } - - return true; - } - - /** - * @private - */ - public function handleFatalError(): void - { - $this->reservedMemory = ''; - - if (is_array($this->lastFatalData)) { - $lastError = $this->lastFatalData; - } else { - $lastError = error_get_last(); - } - if (is_array($lastError) && in_array($lastError['type'], self::FATAL_ERRORS, true)) { - $trace = $lastError['trace'] ?? null; - $this->logger->log( - $this->fatalLevel, - 'Fatal Error ('.self::codeToString($lastError['type']).'): '.$lastError['message'], - ['code' => $lastError['type'], 'message' => $lastError['message'], 'file' => $lastError['file'], 'line' => $lastError['line'], 'trace' => $trace] - ); - - if ($this->logger instanceof Logger) { - foreach ($this->logger->getHandlers() as $handler) { - $handler->close(); - } - } - } - } - - private static function codeToString(int $code): string - { - return match ($code) { - E_ERROR => 'E_ERROR', - E_WARNING => 'E_WARNING', - E_PARSE => 'E_PARSE', - E_NOTICE => 'E_NOTICE', - E_CORE_ERROR => 'E_CORE_ERROR', - E_CORE_WARNING => 'E_CORE_WARNING', - E_COMPILE_ERROR => 'E_COMPILE_ERROR', - E_COMPILE_WARNING => 'E_COMPILE_WARNING', - E_USER_ERROR => 'E_USER_ERROR', - E_USER_WARNING => 'E_USER_WARNING', - E_USER_NOTICE => 'E_USER_NOTICE', - E_STRICT => 'E_STRICT', - E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR', - E_DEPRECATED => 'E_DEPRECATED', - E_USER_DEPRECATED => 'E_USER_DEPRECATED', - default => 'Unknown PHP error', - }; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php deleted file mode 100644 index 3f1d4582..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php +++ /dev/null @@ -1,87 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use Monolog\Level; -use Monolog\LogRecord; - -/** - * Formats a log message according to the ChromePHP array format - * - * @author Christophe Coevoet - */ -class ChromePHPFormatter implements FormatterInterface -{ - /** - * Translates Monolog log levels to Wildfire levels. - * - * @return 'log'|'info'|'warn'|'error' - */ - private function toWildfireLevel(Level $level): string - { - return match ($level) { - Level::Debug => 'log', - Level::Info => 'info', - Level::Notice => 'info', - Level::Warning => 'warn', - Level::Error => 'error', - Level::Critical => 'error', - Level::Alert => 'error', - Level::Emergency => 'error', - }; - } - - /** - * @inheritDoc - */ - public function format(LogRecord $record) - { - // Retrieve the line and file if set and remove them from the formatted extra - $backtrace = 'unknown'; - if (isset($record->extra['file'], $record->extra['line'])) { - $backtrace = $record->extra['file'].' : '.$record->extra['line']; - unset($record->extra['file'], $record->extra['line']); - } - - $message = ['message' => $record->message]; - if (\count($record->context) > 0) { - $message['context'] = $record->context; - } - if (\count($record->extra) > 0) { - $message['extra'] = $record->extra; - } - if (count($message) === 1) { - $message = reset($message); - } - - return [ - $record->channel, - $message, - $backtrace, - $this->toWildfireLevel($record->level), - ]; - } - - /** - * @inheritDoc - */ - public function formatBatch(array $records) - { - $formatted = []; - - foreach ($records as $record) { - $formatted[] = $this->format($record); - } - - return $formatted; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php deleted file mode 100644 index 8c92eff2..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php +++ /dev/null @@ -1,89 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use Elastica\Document; -use Monolog\LogRecord; - -/** - * Format a log message into an Elastica Document - * - * @author Jelle Vink - */ -class ElasticaFormatter extends NormalizerFormatter -{ - /** - * @var string Elastic search index name - */ - protected string $index; - - /** - * @var string|null Elastic search document type - */ - protected string|null $type; - - /** - * @param string $index Elastic Search index name - * @param ?string $type Elastic Search document type, deprecated as of Elastica 7 - * - * @throws \RuntimeException If the function json_encode does not exist - */ - public function __construct(string $index, ?string $type) - { - // elasticsearch requires a ISO 8601 format date with optional millisecond precision. - parent::__construct('Y-m-d\TH:i:s.uP'); - - $this->index = $index; - $this->type = $type; - } - - /** - * @inheritDoc - */ - public function format(LogRecord $record) - { - $record = parent::format($record); - - return $this->getDocument($record); - } - - public function getIndex(): string - { - return $this->index; - } - - /** - * @deprecated since Elastica 7 type has no effect - */ - public function getType(): string - { - /** @phpstan-ignore-next-line */ - return $this->type; - } - - /** - * Convert a log message into an Elastica Document - * - * @param mixed[] $record - */ - protected function getDocument(array $record): Document - { - $document = new Document(); - $document->setData($record); - if (method_exists($document, 'setType')) { - $document->setType($this->type); - } - $document->setIndex($this->index); - - return $document; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/ElasticsearchFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/ElasticsearchFormatter.php deleted file mode 100644 index b38aca07..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/ElasticsearchFormatter.php +++ /dev/null @@ -1,88 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use DateTimeInterface; -use Monolog\LogRecord; - -/** - * Format a log message into an Elasticsearch record - * - * @author Avtandil Kikabidze - */ -class ElasticsearchFormatter extends NormalizerFormatter -{ - /** - * @var string Elasticsearch index name - */ - protected string $index; - - /** - * @var string Elasticsearch record type - */ - protected string $type; - - /** - * @param string $index Elasticsearch index name - * @param string $type Elasticsearch record type - * - * @throws \RuntimeException If the function json_encode does not exist - */ - public function __construct(string $index, string $type) - { - // Elasticsearch requires an ISO 8601 format date with optional millisecond precision. - parent::__construct(DateTimeInterface::ISO8601); - - $this->index = $index; - $this->type = $type; - } - - /** - * @inheritDoc - */ - public function format(LogRecord $record) - { - $record = parent::format($record); - - return $this->getDocument($record); - } - - /** - * Getter index - */ - public function getIndex(): string - { - return $this->index; - } - - /** - * Getter type - */ - public function getType(): string - { - return $this->type; - } - - /** - * Convert a log message into an Elasticsearch record - * - * @param mixed[] $record Log message - * @return mixed[] - */ - protected function getDocument(array $record): array - { - $record['_index'] = $this->index; - $record['_type'] = $this->type; - - return $record; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php deleted file mode 100644 index c64da7c0..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php +++ /dev/null @@ -1,106 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use Monolog\LogRecord; - -/** - * formats the record to be used in the FlowdockHandler - * - * @author Dominik Liebler - * @deprecated Since 2.9.0 and 3.3.0, Flowdock was shutdown we will thus drop this handler in Monolog 4 - */ -class FlowdockFormatter implements FormatterInterface -{ - private string $source; - - private string $sourceEmail; - - public function __construct(string $source, string $sourceEmail) - { - $this->source = $source; - $this->sourceEmail = $sourceEmail; - } - - /** - * @inheritDoc - * - * @return mixed[] - */ - public function format(LogRecord $record): array - { - $tags = [ - '#logs', - '#' . $record->level->toPsrLogLevel(), - '#' . $record->channel, - ]; - - foreach ($record->extra as $value) { - $tags[] = '#' . $value; - } - - $subject = sprintf( - 'in %s: %s - %s', - $this->source, - $record->level->getName(), - $this->getShortMessage($record->message) - ); - - return [ - 'source' => $this->source, - 'from_address' => $this->sourceEmail, - 'subject' => $subject, - 'content' => $record->message, - 'tags' => $tags, - 'project' => $this->source, - ]; - } - - /** - * @inheritDoc - * - * @return mixed[][] - */ - public function formatBatch(array $records): array - { - $formatted = []; - - foreach ($records as $record) { - $formatted[] = $this->format($record); - } - - return $formatted; - } - - public function getShortMessage(string $message): string - { - static $hasMbString; - - if (null === $hasMbString) { - $hasMbString = function_exists('mb_strlen'); - } - - $maxLength = 45; - - if ($hasMbString) { - if (mb_strlen($message, 'UTF-8') > $maxLength) { - $message = mb_substr($message, 0, $maxLength - 4, 'UTF-8') . ' ...'; - } - } else { - if (strlen($message) > $maxLength) { - $message = substr($message, 0, $maxLength - 4) . ' ...'; - } - } - - return $message; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php deleted file mode 100644 index 04495a61..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php +++ /dev/null @@ -1,92 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use Monolog\Utils; -use Monolog\LogRecord; - -/** - * Class FluentdFormatter - * - * Serializes a log message to Fluentd unix socket protocol - * - * Fluentd config: - * - * - * type unix - * path /var/run/td-agent/td-agent.sock - * - * - * Monolog setup: - * - * $logger = new Monolog\Logger('fluent.tag'); - * $fluentHandler = new Monolog\Handler\SocketHandler('unix:///var/run/td-agent/td-agent.sock'); - * $fluentHandler->setFormatter(new Monolog\Formatter\FluentdFormatter()); - * $logger->pushHandler($fluentHandler); - * - * @author Andrius Putna - */ -class FluentdFormatter implements FormatterInterface -{ - /** - * @var bool $levelTag should message level be a part of the fluentd tag - */ - protected bool $levelTag = false; - - /** - * @throws \RuntimeException If the function json_encode does not exist - */ - public function __construct(bool $levelTag = false) - { - if (!function_exists('json_encode')) { - throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s FluentdUnixFormatter'); - } - - $this->levelTag = $levelTag; - } - - public function isUsingLevelsInTag(): bool - { - return $this->levelTag; - } - - public function format(LogRecord $record): string - { - $tag = $record->channel; - if ($this->levelTag) { - $tag .= '.' . $record->level->toPsrLogLevel(); - } - - $message = [ - 'message' => $record->message, - 'context' => $record->context, - 'extra' => $record->extra, - ]; - - if (!$this->levelTag) { - $message['level'] = $record->level->value; - $message['level_name'] = $record->level->getName(); - } - - return Utils::jsonEncode([$tag, $record->datetime->getTimestamp(), $message]); - } - - public function formatBatch(array $records): string - { - $message = ''; - foreach ($records as $record) { - $message .= $this->format($record); - } - - return $message; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php b/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php deleted file mode 100644 index 3413a4b0..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use Monolog\LogRecord; - -/** - * Interface for formatters - * - * @author Jordi Boggiano - */ -interface FormatterInterface -{ - /** - * Formats a log record. - * - * @param LogRecord $record A record to format - * @return mixed The formatted record - */ - public function format(LogRecord $record); - - /** - * Formats a set of log records. - * - * @param array $records A set of records to format - * @return mixed The formatted set of records - */ - public function formatBatch(array $records); -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php deleted file mode 100644 index 96cb60ff..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php +++ /dev/null @@ -1,148 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use Monolog\Level; -use Gelf\Message; -use Monolog\Utils; -use Monolog\LogRecord; - -/** - * Serializes a log message to GELF - * @see http://docs.graylog.org/en/latest/pages/gelf.html - * - * @author Matt Lehner - */ -class GelfMessageFormatter extends NormalizerFormatter -{ - protected const DEFAULT_MAX_LENGTH = 32766; - - /** - * @var string the name of the system for the Gelf log message - */ - protected string $systemName; - - /** - * @var string a prefix for 'extra' fields from the Monolog record (optional) - */ - protected string $extraPrefix; - - /** - * @var string a prefix for 'context' fields from the Monolog record (optional) - */ - protected string $contextPrefix; - - /** - * @var int max length per field - */ - protected int $maxLength; - - /** - * Translates Monolog log levels to Graylog2 log priorities. - */ - private function getGraylog2Priority(Level $level): int - { - return match ($level) { - Level::Debug => 7, - Level::Info => 6, - Level::Notice => 5, - Level::Warning => 4, - Level::Error => 3, - Level::Critical => 2, - Level::Alert => 1, - Level::Emergency => 0, - }; - } - - /** - * @throws \RuntimeException - */ - public function __construct(?string $systemName = null, ?string $extraPrefix = null, string $contextPrefix = 'ctxt_', ?int $maxLength = null) - { - if (!class_exists(Message::class)) { - throw new \RuntimeException('Composer package graylog2/gelf-php is required to use Monolog\'s GelfMessageFormatter'); - } - - parent::__construct('U.u'); - - $this->systemName = (null === $systemName || $systemName === '') ? (string) gethostname() : $systemName; - - $this->extraPrefix = null === $extraPrefix ? '' : $extraPrefix; - $this->contextPrefix = $contextPrefix; - $this->maxLength = null === $maxLength ? self::DEFAULT_MAX_LENGTH : $maxLength; - } - - /** - * @inheritDoc - */ - public function format(LogRecord $record): Message - { - $context = $extra = []; - if (isset($record->context)) { - /** @var mixed[] $context */ - $context = parent::normalize($record->context); - } - if (isset($record->extra)) { - /** @var mixed[] $extra */ - $extra = parent::normalize($record->extra); - } - - $message = new Message(); - $message - ->setTimestamp($record->datetime) - ->setShortMessage($record->message) - ->setHost($this->systemName) - ->setLevel($this->getGraylog2Priority($record->level)); - - // message length + system name length + 200 for padding / metadata - $len = 200 + strlen($record->message) + strlen($this->systemName); - - if ($len > $this->maxLength) { - $message->setShortMessage(Utils::substr($record->message, 0, $this->maxLength)); - } - - if (isset($record->channel)) { - $message->setAdditional('facility', $record->channel); - } - - foreach ($extra as $key => $val) { - $val = is_scalar($val) || null === $val ? $val : $this->toJson($val); - $len = strlen($this->extraPrefix . $key . $val); - if ($len > $this->maxLength) { - $message->setAdditional($this->extraPrefix . $key, Utils::substr((string) $val, 0, $this->maxLength)); - - continue; - } - $message->setAdditional($this->extraPrefix . $key, $val); - } - - foreach ($context as $key => $val) { - $val = is_scalar($val) || null === $val ? $val : $this->toJson($val); - $len = strlen($this->contextPrefix . $key . $val); - if ($len > $this->maxLength) { - $message->setAdditional($this->contextPrefix . $key, Utils::substr((string) $val, 0, $this->maxLength)); - - continue; - } - $message->setAdditional($this->contextPrefix . $key, $val); - } - - if (!$message->hasAdditional('file') && isset($context['exception']['file'])) { - if (1 === preg_match("/^(.+):([0-9]+)$/", $context['exception']['file'], $matches)) { - $message->setAdditional('file', $matches[1]); - $message->setAdditional('line', $matches[2]); - } - } - - return $message; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/GoogleCloudLoggingFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/GoogleCloudLoggingFormatter.php deleted file mode 100644 index ea555d4d..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/GoogleCloudLoggingFormatter.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use DateTimeInterface; -use Monolog\LogRecord; - -/** - * Encodes message information into JSON in a format compatible with Cloud logging. - * - * @see https://cloud.google.com/logging/docs/structured-logging - * @see https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry - * - * @author Luís Cobucci - */ -final class GoogleCloudLoggingFormatter extends JsonFormatter -{ - protected function normalizeRecord(LogRecord $record): array - { - $normalized = parent::normalizeRecord($record); - - // Re-key level for GCP logging - $normalized['severity'] = $normalized['level_name']; - $normalized['time'] = $record->datetime->format(DateTimeInterface::RFC3339_EXTENDED); - - // Remove keys that are not used by GCP - unset($normalized['level'], $normalized['level_name'], $normalized['datetime']); - - return $normalized; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php deleted file mode 100644 index c316b65e..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php +++ /dev/null @@ -1,143 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use Monolog\Level; -use Monolog\Utils; -use Monolog\LogRecord; - -/** - * Formats incoming records into an HTML table - * - * This is especially useful for html email logging - * - * @author Tiago Brito - */ -class HtmlFormatter extends NormalizerFormatter -{ - /** - * Translates Monolog log levels to html color priorities. - */ - protected function getLevelColor(Level $level): string - { - return match ($level) { - Level::Debug => '#CCCCCC', - Level::Info => '#28A745', - Level::Notice => '#17A2B8', - Level::Warning => '#FFC107', - Level::Error => '#FD7E14', - Level::Critical => '#DC3545', - Level::Alert => '#821722', - Level::Emergency => '#000000', - }; - } - - /** - * @param string|null $dateFormat The format of the timestamp: one supported by DateTime::format - * @throws \RuntimeException If the function json_encode does not exist - */ - public function __construct(?string $dateFormat = null) - { - parent::__construct($dateFormat); - } - - /** - * Creates an HTML table row - * - * @param string $th Row header content - * @param string $td Row standard cell content - * @param bool $escapeTd false if td content must not be html escaped - */ - protected function addRow(string $th, string $td = ' ', bool $escapeTd = true): string - { - $th = htmlspecialchars($th, ENT_NOQUOTES, 'UTF-8'); - if ($escapeTd) { - $td = '

    '.htmlspecialchars($td, ENT_NOQUOTES, 'UTF-8').'
    '; - } - - return "\n$th:\n".$td."\n"; - } - - /** - * Create a HTML h1 tag - * - * @param string $title Text to be in the h1 - */ - protected function addTitle(string $title, Level $level): string - { - $title = htmlspecialchars($title, ENT_NOQUOTES, 'UTF-8'); - - return '

    '.$title.'

    '; - } - - /** - * Formats a log record. - * - * @return string The formatted record - */ - public function format(LogRecord $record): string - { - $output = $this->addTitle($record->level->getName(), $record->level); - $output .= ''; - - $output .= $this->addRow('Message', $record->message); - $output .= $this->addRow('Time', $this->formatDate($record->datetime)); - $output .= $this->addRow('Channel', $record->channel); - if (\count($record->context) > 0) { - $embeddedTable = '
    '; - foreach ($record->context as $key => $value) { - $embeddedTable .= $this->addRow((string) $key, $this->convertToString($value)); - } - $embeddedTable .= '
    '; - $output .= $this->addRow('Context', $embeddedTable, false); - } - if (\count($record->extra) > 0) { - $embeddedTable = ''; - foreach ($record->extra as $key => $value) { - $embeddedTable .= $this->addRow((string) $key, $this->convertToString($value)); - } - $embeddedTable .= '
    '; - $output .= $this->addRow('Extra', $embeddedTable, false); - } - - return $output.''; - } - - /** - * Formats a set of log records. - * - * @return string The formatted set of records - */ - public function formatBatch(array $records): string - { - $message = ''; - foreach ($records as $record) { - $message .= $this->format($record); - } - - return $message; - } - - /** - * @param mixed $data - */ - protected function convertToString($data): string - { - if (null === $data || is_scalar($data)) { - return (string) $data; - } - - $data = $this->normalize($data); - - return Utils::jsonEncode($data, JSON_PRETTY_PRINT | Utils::DEFAULT_JSON_FLAGS, true); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php deleted file mode 100644 index ca3d7d27..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php +++ /dev/null @@ -1,216 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use Stringable; -use Throwable; -use Monolog\LogRecord; - -/** - * Encodes whatever record data is passed to it as json - * - * This can be useful to log to databases or remote APIs - * - * @author Jordi Boggiano - */ -class JsonFormatter extends NormalizerFormatter -{ - public const BATCH_MODE_JSON = 1; - public const BATCH_MODE_NEWLINES = 2; - - /** @var self::BATCH_MODE_* */ - protected int $batchMode; - - protected bool $appendNewline; - - protected bool $ignoreEmptyContextAndExtra; - - protected bool $includeStacktraces = false; - - /** - * @param self::BATCH_MODE_* $batchMode - * - * @throws \RuntimeException If the function json_encode does not exist - */ - public function __construct(int $batchMode = self::BATCH_MODE_JSON, bool $appendNewline = true, bool $ignoreEmptyContextAndExtra = false, bool $includeStacktraces = false) - { - $this->batchMode = $batchMode; - $this->appendNewline = $appendNewline; - $this->ignoreEmptyContextAndExtra = $ignoreEmptyContextAndExtra; - $this->includeStacktraces = $includeStacktraces; - - parent::__construct(); - } - - /** - * The batch mode option configures the formatting style for - * multiple records. By default, multiple records will be - * formatted as a JSON-encoded array. However, for - * compatibility with some API endpoints, alternative styles - * are available. - */ - public function getBatchMode(): int - { - return $this->batchMode; - } - - /** - * True if newlines are appended to every formatted record - */ - public function isAppendingNewlines(): bool - { - return $this->appendNewline; - } - - /** - * @inheritDoc - */ - public function format(LogRecord $record): string - { - $normalized = parent::format($record); - - if (isset($normalized['context']) && $normalized['context'] === []) { - if ($this->ignoreEmptyContextAndExtra) { - unset($normalized['context']); - } else { - $normalized['context'] = new \stdClass; - } - } - if (isset($normalized['extra']) && $normalized['extra'] === []) { - if ($this->ignoreEmptyContextAndExtra) { - unset($normalized['extra']); - } else { - $normalized['extra'] = new \stdClass; - } - } - - return $this->toJson($normalized, true) . ($this->appendNewline ? "\n" : ''); - } - - /** - * @inheritDoc - */ - public function formatBatch(array $records): string - { - return match ($this->batchMode) { - static::BATCH_MODE_NEWLINES => $this->formatBatchNewlines($records), - default => $this->formatBatchJson($records), - }; - } - - /** - * @return $this - */ - public function includeStacktraces(bool $include = true): self - { - $this->includeStacktraces = $include; - - return $this; - } - - /** - * Return a JSON-encoded array of records. - * - * @phpstan-param LogRecord[] $records - */ - protected function formatBatchJson(array $records): string - { - return $this->toJson($this->normalize($records), true); - } - - /** - * Use new lines to separate records instead of a - * JSON-encoded array. - * - * @phpstan-param LogRecord[] $records - */ - protected function formatBatchNewlines(array $records): string - { - $oldNewline = $this->appendNewline; - $this->appendNewline = false; - $formatted = array_map(fn (LogRecord $record) => $this->format($record), $records); - $this->appendNewline = $oldNewline; - - return implode("\n", $formatted); - } - - /** - * Normalizes given $data. - * - * @return null|scalar|array|object - */ - protected function normalize(mixed $data, int $depth = 0): mixed - { - if ($depth > $this->maxNormalizeDepth) { - return 'Over '.$this->maxNormalizeDepth.' levels deep, aborting normalization'; - } - - if (is_array($data)) { - $normalized = []; - - $count = 1; - foreach ($data as $key => $value) { - if ($count++ > $this->maxNormalizeItemCount) { - $normalized['...'] = 'Over '.$this->maxNormalizeItemCount.' items ('.count($data).' total), aborting normalization'; - break; - } - - $normalized[$key] = $this->normalize($value, $depth + 1); - } - - return $normalized; - } - - if (is_object($data)) { - if ($data instanceof \DateTimeInterface) { - return $this->formatDate($data); - } - - if ($data instanceof Throwable) { - return $this->normalizeException($data, $depth); - } - - // if the object has specific json serializability we want to make sure we skip the __toString treatment below - if ($data instanceof \JsonSerializable) { - return $data; - } - - if ($data instanceof Stringable) { - return $data->__toString(); - } - - return $data; - } - - if (is_resource($data)) { - return parent::normalize($data); - } - - return $data; - } - - /** - * Normalizes given exception with or without its own stack trace based on - * `includeStacktraces` property. - * - * @inheritDoc - */ - protected function normalizeException(Throwable $e, int $depth = 0): array - { - $data = parent::normalizeException($e, $depth); - if (!$this->includeStacktraces) { - unset($data['trace']); - } - - return $data; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php deleted file mode 100644 index 025572a5..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php +++ /dev/null @@ -1,289 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use Closure; -use Monolog\Utils; -use Monolog\LogRecord; - -/** - * Formats incoming records into a one-line string - * - * This is especially useful for logging to files - * - * @author Jordi Boggiano - * @author Christophe Coevoet - */ -class LineFormatter extends NormalizerFormatter -{ - public const SIMPLE_FORMAT = "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n"; - - protected string $format; - protected bool $allowInlineLineBreaks; - protected bool $ignoreEmptyContextAndExtra; - protected bool $includeStacktraces; - protected ?int $maxLevelNameLength = null; - protected string $indentStacktraces = ''; - protected Closure|null $stacktracesParser = null; - - /** - * @param string|null $format The format of the message - * @param string|null $dateFormat The format of the timestamp: one supported by DateTime::format - * @param bool $allowInlineLineBreaks Whether to allow inline line breaks in log entries - * - * @throws \RuntimeException If the function json_encode does not exist - */ - public function __construct(?string $format = null, ?string $dateFormat = null, bool $allowInlineLineBreaks = false, bool $ignoreEmptyContextAndExtra = false, bool $includeStacktraces = false) - { - $this->format = $format === null ? static::SIMPLE_FORMAT : $format; - $this->allowInlineLineBreaks = $allowInlineLineBreaks; - $this->ignoreEmptyContextAndExtra = $ignoreEmptyContextAndExtra; - $this->includeStacktraces($includeStacktraces); - parent::__construct($dateFormat); - } - - /** - * @return $this - */ - public function includeStacktraces(bool $include = true, ?Closure $parser = null): self - { - $this->includeStacktraces = $include; - if ($this->includeStacktraces) { - $this->allowInlineLineBreaks = true; - $this->stacktracesParser = $parser; - } - - return $this; - } - - /** - * Indent stack traces to separate them a bit from the main log record messages - * - * @param string $indent The string used to indent, for example " " - * @return $this - */ - public function indentStacktraces(string $indent): self - { - $this->indentStacktraces = $indent; - - return $this; - } - - /** - * @return $this - */ - public function allowInlineLineBreaks(bool $allow = true): self - { - $this->allowInlineLineBreaks = $allow; - - return $this; - } - - /** - * @return $this - */ - public function ignoreEmptyContextAndExtra(bool $ignore = true): self - { - $this->ignoreEmptyContextAndExtra = $ignore; - - return $this; - } - - /** - * Allows cutting the level name to get fixed-length levels like INF for INFO, ERR for ERROR if you set this to 3 for example - * - * @param int|null $maxLevelNameLength Maximum characters for the level name. Set null for infinite length (default) - * @return $this - */ - public function setMaxLevelNameLength(?int $maxLevelNameLength = null): self - { - $this->maxLevelNameLength = $maxLevelNameLength; - - return $this; - } - - /** - * @inheritDoc - */ - public function format(LogRecord $record): string - { - $vars = parent::format($record); - - if ($this->maxLevelNameLength !== null) { - $vars['level_name'] = substr($vars['level_name'], 0, $this->maxLevelNameLength); - } - - $output = $this->format; - foreach ($vars['extra'] as $var => $val) { - if (false !== strpos($output, '%extra.'.$var.'%')) { - $output = str_replace('%extra.'.$var.'%', $this->stringify($val), $output); - unset($vars['extra'][$var]); - } - } - - foreach ($vars['context'] as $var => $val) { - if (false !== strpos($output, '%context.'.$var.'%')) { - $output = str_replace('%context.'.$var.'%', $this->stringify($val), $output); - unset($vars['context'][$var]); - } - } - - if ($this->ignoreEmptyContextAndExtra) { - if (\count($vars['context']) === 0) { - unset($vars['context']); - $output = str_replace('%context%', '', $output); - } - - if (\count($vars['extra']) === 0) { - unset($vars['extra']); - $output = str_replace('%extra%', '', $output); - } - } - - foreach ($vars as $var => $val) { - if (false !== strpos($output, '%'.$var.'%')) { - $output = str_replace('%'.$var.'%', $this->stringify($val), $output); - } - } - - // remove leftover %extra.xxx% and %context.xxx% if any - if (false !== strpos($output, '%')) { - $output = preg_replace('/%(?:extra|context)\..+?%/', '', $output); - if (null === $output) { - $pcreErrorCode = preg_last_error(); - - throw new \RuntimeException('Failed to run preg_replace: ' . $pcreErrorCode . ' / ' . Utils::pcreLastErrorMessage($pcreErrorCode)); - } - } - - return $output; - } - - public function formatBatch(array $records): string - { - $message = ''; - foreach ($records as $record) { - $message .= $this->format($record); - } - - return $message; - } - - /** - * @param mixed $value - */ - public function stringify($value): string - { - return $this->replaceNewlines($this->convertToString($value)); - } - - protected function normalizeException(\Throwable $e, int $depth = 0): string - { - $str = $this->formatException($e); - - if (($previous = $e->getPrevious()) instanceof \Throwable) { - do { - $depth++; - if ($depth > $this->maxNormalizeDepth) { - $str .= "\n[previous exception] Over " . $this->maxNormalizeDepth . ' levels deep, aborting normalization'; - break; - } - - $str .= "\n[previous exception] " . $this->formatException($previous); - } while ($previous = $previous->getPrevious()); - } - - return $str; - } - - /** - * @param mixed $data - */ - protected function convertToString($data): string - { - if (null === $data || is_bool($data)) { - return var_export($data, true); - } - - if (is_scalar($data)) { - return (string) $data; - } - - return $this->toJson($data, true); - } - - protected function replaceNewlines(string $str): string - { - if ($this->allowInlineLineBreaks) { - if (0 === strpos($str, '{') || 0 === strpos($str, '[')) { - $str = preg_replace('/(?getCode(); - if ($e instanceof \SoapFault) { - if (isset($e->faultcode)) { - $str .= ' faultcode: ' . $e->faultcode; - } - - if (isset($e->faultactor)) { - $str .= ' faultactor: ' . $e->faultactor; - } - - if (isset($e->detail)) { - if (is_string($e->detail)) { - $str .= ' detail: ' . $e->detail; - } elseif (is_object($e->detail) || is_array($e->detail)) { - $str .= ' detail: ' . $this->toJson($e->detail, true); - } - } - } - $str .= '): ' . $e->getMessage() . ' at ' . $e->getFile() . ':' . $e->getLine() . ')'; - - if ($this->includeStacktraces) { - $str .= $this->stacktracesParser($e); - } - - return $str; - } - - private function stacktracesParser(\Throwable $e): string - { - $trace = $e->getTraceAsString(); - - if ($this->stacktracesParser !== null) { - $trace = $this->stacktracesParserCustom($trace); - } - - if ($this->indentStacktraces !== '') { - $trace = str_replace("\n", "\n{$this->indentStacktraces}", $trace); - } - - return "\n{$this->indentStacktraces}[stacktrace]\n{$this->indentStacktraces}" . $trace . "\n"; - } - - private function stacktracesParserCustom(string $trace): string - { - return implode("\n", array_filter(array_map($this->stacktracesParser, explode("\n", $trace)))); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php deleted file mode 100644 index 5f0b6a45..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use Monolog\LogRecord; - -/** - * Encodes message information into JSON in a format compatible with Loggly. - * - * @author Adam Pancutt - */ -class LogglyFormatter extends JsonFormatter -{ - /** - * Overrides the default batch mode to new lines for compatibility with the - * Loggly bulk API. - */ - public function __construct(int $batchMode = self::BATCH_MODE_NEWLINES, bool $appendNewline = false) - { - parent::__construct($batchMode, $appendNewline); - } - - /** - * Appends the 'timestamp' parameter for indexing by Loggly. - * - * @see https://www.loggly.com/docs/automated-parsing/#json - * @see \Monolog\Formatter\JsonFormatter::format() - */ - protected function normalizeRecord(LogRecord $record): array - { - $recordData = parent::normalizeRecord($record); - - $recordData["timestamp"] = $record->datetime->format("Y-m-d\TH:i:s.uO"); - unset($recordData["datetime"]); - - return $recordData; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/LogmaticFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/LogmaticFormatter.php deleted file mode 100644 index 9e44c19f..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/LogmaticFormatter.php +++ /dev/null @@ -1,70 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use Monolog\LogRecord; - -/** - * Encodes message information into JSON in a format compatible with Logmatic. - * - * @author Julien Breux - */ -class LogmaticFormatter extends JsonFormatter -{ - protected const MARKERS = ["sourcecode", "php"]; - - protected string $hostname = ''; - - protected string $appName = ''; - - /** - * @return $this - */ - public function setHostname(string $hostname): self - { - $this->hostname = $hostname; - - return $this; - } - - /** - * @return $this - */ - public function setAppName(string $appName): self - { - $this->appName = $appName; - - return $this; - } - - /** - * Appends the 'hostname' and 'appname' parameter for indexing by Logmatic. - * - * @see http://doc.logmatic.io/docs/basics-to-send-data - * @see \Monolog\Formatter\JsonFormatter::format() - */ - public function normalizeRecord(LogRecord $record): array - { - $record = parent::normalizeRecord($record); - - if ($this->hostname !== '') { - $record["hostname"] = $this->hostname; - } - if ($this->appName !== '') { - $record["appname"] = $this->appName; - } - - $record["@marker"] = static::MARKERS; - - return $record; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php deleted file mode 100644 index abee3cd1..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php +++ /dev/null @@ -1,102 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use Monolog\LogRecord; - -/** - * Serializes a log message to Logstash Event Format - * - * @see https://www.elastic.co/products/logstash - * @see https://github.com/elastic/logstash/blob/master/logstash-core/src/main/java/org/logstash/Event.java - * - * @author Tim Mower - */ -class LogstashFormatter extends NormalizerFormatter -{ - /** - * @var string the name of the system for the Logstash log message, used to fill the @source field - */ - protected string $systemName; - - /** - * @var string an application name for the Logstash log message, used to fill the @type field - */ - protected string $applicationName; - - /** - * @var string the key for 'extra' fields from the Monolog record - */ - protected string $extraKey; - - /** - * @var string the key for 'context' fields from the Monolog record - */ - protected string $contextKey; - - /** - * @param string $applicationName The application that sends the data, used as the "type" field of logstash - * @param string|null $systemName The system/machine name, used as the "source" field of logstash, defaults to the hostname of the machine - * @param string $extraKey The key for extra keys inside logstash "fields", defaults to extra - * @param string $contextKey The key for context keys inside logstash "fields", defaults to context - * - * @throws \RuntimeException If the function json_encode does not exist - */ - public function __construct(string $applicationName, ?string $systemName = null, string $extraKey = 'extra', string $contextKey = 'context') - { - // logstash requires a ISO 8601 format date with optional millisecond precision. - parent::__construct('Y-m-d\TH:i:s.uP'); - - $this->systemName = $systemName === null ? (string) gethostname() : $systemName; - $this->applicationName = $applicationName; - $this->extraKey = $extraKey; - $this->contextKey = $contextKey; - } - - /** - * @inheritDoc - */ - public function format(LogRecord $record): string - { - $recordData = parent::format($record); - - $message = [ - '@timestamp' => $recordData['datetime'], - '@version' => 1, - 'host' => $this->systemName, - ]; - if (isset($recordData['message'])) { - $message['message'] = $recordData['message']; - } - if (isset($recordData['channel'])) { - $message['type'] = $recordData['channel']; - $message['channel'] = $recordData['channel']; - } - if (isset($recordData['level_name'])) { - $message['level'] = $recordData['level_name']; - } - if (isset($recordData['level'])) { - $message['monolog_level'] = $recordData['level']; - } - if ('' !== $this->applicationName) { - $message['type'] = $this->applicationName; - } - if (\count($recordData['extra']) > 0) { - $message[$this->extraKey] = $recordData['extra']; - } - if (\count($recordData['context']) > 0) { - $message[$this->contextKey] = $recordData['context']; - } - - return $this->toJson($message) . "\n"; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php deleted file mode 100644 index 9b7da8a9..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php +++ /dev/null @@ -1,159 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use MongoDB\BSON\Type; -use MongoDB\BSON\UTCDateTime; -use Monolog\Utils; -use Monolog\LogRecord; - -/** - * Formats a record for use with the MongoDBHandler. - * - * @author Florian Plattner - */ -class MongoDBFormatter implements FormatterInterface -{ - private bool $exceptionTraceAsString; - private int $maxNestingLevel; - private bool $isLegacyMongoExt; - - /** - * @param int $maxNestingLevel 0 means infinite nesting, the $record itself is level 1, $record->context is 2 - * @param bool $exceptionTraceAsString set to false to log exception traces as a sub documents instead of strings - */ - public function __construct(int $maxNestingLevel = 3, bool $exceptionTraceAsString = true) - { - $this->maxNestingLevel = max($maxNestingLevel, 0); - $this->exceptionTraceAsString = $exceptionTraceAsString; - - $this->isLegacyMongoExt = extension_loaded('mongodb') && version_compare((string) phpversion('mongodb'), '1.1.9', '<='); - } - - /** - * @inheritDoc - * - * @return mixed[] - */ - public function format(LogRecord $record): array - { - /** @var mixed[] $res */ - $res = $this->formatArray($record->toArray()); - - return $res; - } - - /** - * @inheritDoc - * - * @return array - */ - public function formatBatch(array $records): array - { - $formatted = []; - foreach ($records as $key => $record) { - $formatted[$key] = $this->format($record); - } - - return $formatted; - } - - /** - * @param mixed[] $array - * @return mixed[]|string Array except when max nesting level is reached then a string "[...]" - */ - protected function formatArray(array $array, int $nestingLevel = 0) - { - if ($this->maxNestingLevel > 0 && $nestingLevel > $this->maxNestingLevel) { - return '[...]'; - } - - foreach ($array as $name => $value) { - if ($value instanceof \DateTimeInterface) { - $array[$name] = $this->formatDate($value, $nestingLevel + 1); - } elseif ($value instanceof \Throwable) { - $array[$name] = $this->formatException($value, $nestingLevel + 1); - } elseif (is_array($value)) { - $array[$name] = $this->formatArray($value, $nestingLevel + 1); - } elseif (is_object($value) && !$value instanceof Type) { - $array[$name] = $this->formatObject($value, $nestingLevel + 1); - } - } - - return $array; - } - - /** - * @param mixed $value - * @return mixed[]|string - */ - protected function formatObject($value, int $nestingLevel) - { - $objectVars = get_object_vars($value); - $objectVars['class'] = Utils::getClass($value); - - return $this->formatArray($objectVars, $nestingLevel); - } - - /** - * @return mixed[]|string - */ - protected function formatException(\Throwable $exception, int $nestingLevel) - { - $formattedException = [ - 'class' => Utils::getClass($exception), - 'message' => $exception->getMessage(), - 'code' => (int) $exception->getCode(), - 'file' => $exception->getFile() . ':' . $exception->getLine(), - ]; - - if ($this->exceptionTraceAsString === true) { - $formattedException['trace'] = $exception->getTraceAsString(); - } else { - $formattedException['trace'] = $exception->getTrace(); - } - - return $this->formatArray($formattedException, $nestingLevel); - } - - protected function formatDate(\DateTimeInterface $value, int $nestingLevel): UTCDateTime - { - if ($this->isLegacyMongoExt) { - return $this->legacyGetMongoDbDateTime($value); - } - - return $this->getMongoDbDateTime($value); - } - - private function getMongoDbDateTime(\DateTimeInterface $value): UTCDateTime - { - return new UTCDateTime((int) floor(((float) $value->format('U.u')) * 1000)); - } - - /** - * This is needed to support MongoDB Driver v1.19 and below - * - * See https://github.com/mongodb/mongo-php-driver/issues/426 - * - * It can probably be removed in 2.1 or later once MongoDB's 1.2 is released and widely adopted - */ - private function legacyGetMongoDbDateTime(\DateTimeInterface $value): UTCDateTime - { - $milliseconds = floor(((float) $value->format('U.u')) * 1000); - - $milliseconds = (PHP_INT_SIZE == 8) //64-bit OS? - ? (int) $milliseconds - : (string) $milliseconds; - - return new UTCDateTime($milliseconds); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php deleted file mode 100644 index a5c99156..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php +++ /dev/null @@ -1,325 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use Monolog\DateTimeImmutable; -use Monolog\Utils; -use Throwable; -use Monolog\LogRecord; - -/** - * Normalizes incoming records to remove objects/resources so it's easier to dump to various targets - * - * @author Jordi Boggiano - */ -class NormalizerFormatter implements FormatterInterface -{ - public const SIMPLE_DATE = "Y-m-d\TH:i:sP"; - - protected string $dateFormat; - protected int $maxNormalizeDepth = 9; - protected int $maxNormalizeItemCount = 1000; - - private int $jsonEncodeOptions = Utils::DEFAULT_JSON_FLAGS; - - /** - * @param string|null $dateFormat The format of the timestamp: one supported by DateTime::format - * @throws \RuntimeException If the function json_encode does not exist - */ - public function __construct(?string $dateFormat = null) - { - $this->dateFormat = null === $dateFormat ? static::SIMPLE_DATE : $dateFormat; - if (!function_exists('json_encode')) { - throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s NormalizerFormatter'); - } - } - - /** - * @inheritDoc - */ - public function format(LogRecord $record) - { - return $this->normalizeRecord($record); - } - - /** - * Normalize an arbitrary value to a scalar|array|null - * - * @return null|scalar|array - */ - public function normalizeValue(mixed $data): mixed - { - return $this->normalize($data); - } - - /** - * @inheritDoc - */ - public function formatBatch(array $records) - { - foreach ($records as $key => $record) { - $records[$key] = $this->format($record); - } - - return $records; - } - - public function getDateFormat(): string - { - return $this->dateFormat; - } - - /** - * @return $this - */ - public function setDateFormat(string $dateFormat): self - { - $this->dateFormat = $dateFormat; - - return $this; - } - - /** - * The maximum number of normalization levels to go through - */ - public function getMaxNormalizeDepth(): int - { - return $this->maxNormalizeDepth; - } - - /** - * @return $this - */ - public function setMaxNormalizeDepth(int $maxNormalizeDepth): self - { - $this->maxNormalizeDepth = $maxNormalizeDepth; - - return $this; - } - - /** - * The maximum number of items to normalize per level - */ - public function getMaxNormalizeItemCount(): int - { - return $this->maxNormalizeItemCount; - } - - /** - * @return $this - */ - public function setMaxNormalizeItemCount(int $maxNormalizeItemCount): self - { - $this->maxNormalizeItemCount = $maxNormalizeItemCount; - - return $this; - } - - /** - * Enables `json_encode` pretty print. - * - * @return $this - */ - public function setJsonPrettyPrint(bool $enable): self - { - if ($enable) { - $this->jsonEncodeOptions |= JSON_PRETTY_PRINT; - } else { - $this->jsonEncodeOptions &= ~JSON_PRETTY_PRINT; - } - - return $this; - } - - /** - * Provided as extension point - * - * Because normalize is called with sub-values of context data etc, normalizeRecord can be - * extended when data needs to be appended on the record array but not to other normalized data. - * - * @return array - */ - protected function normalizeRecord(LogRecord $record): array - { - /** @var array $normalized */ - $normalized = $this->normalize($record->toArray()); - - return $normalized; - } - - /** - * @return null|scalar|array - */ - protected function normalize(mixed $data, int $depth = 0): mixed - { - if ($depth > $this->maxNormalizeDepth) { - return 'Over ' . $this->maxNormalizeDepth . ' levels deep, aborting normalization'; - } - - if (null === $data || is_scalar($data)) { - if (is_float($data)) { - if (is_infinite($data)) { - return ($data > 0 ? '' : '-') . 'INF'; - } - if (is_nan($data)) { - return 'NaN'; - } - } - - return $data; - } - - if (is_array($data)) { - $normalized = []; - - $count = 1; - foreach ($data as $key => $value) { - if ($count++ > $this->maxNormalizeItemCount) { - $normalized['...'] = 'Over ' . $this->maxNormalizeItemCount . ' items ('.count($data).' total), aborting normalization'; - break; - } - - $normalized[$key] = $this->normalize($value, $depth + 1); - } - - return $normalized; - } - - if ($data instanceof \DateTimeInterface) { - return $this->formatDate($data); - } - - if (is_object($data)) { - if ($data instanceof Throwable) { - return $this->normalizeException($data, $depth); - } - - if ($data instanceof \JsonSerializable) { - /** @var null|scalar|array $value */ - $value = $data->jsonSerialize(); - } elseif (\get_class($data) === '__PHP_Incomplete_Class') { - $accessor = new \ArrayObject($data); - $value = (string) $accessor['__PHP_Incomplete_Class_Name']; - } elseif (method_exists($data, '__toString')) { - /** @var string $value */ - $value = $data->__toString(); - } else { - // the rest is normalized by json encoding and decoding it - /** @var null|scalar|array $value */ - $value = json_decode($this->toJson($data, true), true); - } - - return [Utils::getClass($data) => $value]; - } - - if (is_resource($data)) { - return sprintf('[resource(%s)]', get_resource_type($data)); - } - - return '[unknown('.gettype($data).')]'; - } - - /** - * @return mixed[] - */ - protected function normalizeException(Throwable $e, int $depth = 0) - { - if ($depth > $this->maxNormalizeDepth) { - return ['Over ' . $this->maxNormalizeDepth . ' levels deep, aborting normalization']; - } - - if ($e instanceof \JsonSerializable) { - return (array) $e->jsonSerialize(); - } - - $data = [ - 'class' => Utils::getClass($e), - 'message' => $e->getMessage(), - 'code' => (int) $e->getCode(), - 'file' => $e->getFile().':'.$e->getLine(), - ]; - - if ($e instanceof \SoapFault) { - if (isset($e->faultcode)) { - $data['faultcode'] = $e->faultcode; - } - - if (isset($e->faultactor)) { - $data['faultactor'] = $e->faultactor; - } - - if (isset($e->detail)) { - if (is_string($e->detail)) { - $data['detail'] = $e->detail; - } elseif (is_object($e->detail) || is_array($e->detail)) { - $data['detail'] = $this->toJson($e->detail, true); - } - } - } - - $trace = $e->getTrace(); - foreach ($trace as $frame) { - if (isset($frame['file'], $frame['line'])) { - $data['trace'][] = $frame['file'].':'.$frame['line']; - } - } - - if (($previous = $e->getPrevious()) instanceof \Throwable) { - $data['previous'] = $this->normalizeException($previous, $depth + 1); - } - - return $data; - } - - /** - * Return the JSON representation of a value - * - * @param mixed $data - * @throws \RuntimeException if encoding fails and errors are not ignored - * @return string if encoding fails and ignoreErrors is true 'null' is returned - */ - protected function toJson($data, bool $ignoreErrors = false): string - { - return Utils::jsonEncode($data, $this->jsonEncodeOptions, $ignoreErrors); - } - - protected function formatDate(\DateTimeInterface $date): string - { - // in case the date format isn't custom then we defer to the custom DateTimeImmutable - // formatting logic, which will pick the right format based on whether useMicroseconds is on - if ($this->dateFormat === self::SIMPLE_DATE && $date instanceof DateTimeImmutable) { - return (string) $date; - } - - return $date->format($this->dateFormat); - } - - /** - * @return $this - */ - public function addJsonEncodeOption(int $option): self - { - $this->jsonEncodeOptions |= $option; - - return $this; - } - - /** - * @return $this - */ - public function removeJsonEncodeOption(int $option): self - { - $this->jsonEncodeOptions &= ~$option; - - return $this; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php deleted file mode 100644 index 4bc20a08..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use Monolog\LogRecord; - -/** - * Formats data into an associative array of scalar (+ null) values. - * Objects and arrays will be JSON encoded. - * - * @author Andrew Lawson - */ -class ScalarFormatter extends NormalizerFormatter -{ - /** - * @inheritDoc - * - * @phpstan-return array $record - */ - public function format(LogRecord $record): array - { - $result = []; - foreach ($record->toArray() as $key => $value) { - $result[$key] = $this->toScalar($value); - } - - return $result; - } - - protected function toScalar(mixed $value): string|int|float|bool|null - { - $normalized = $this->normalize($value); - - if (is_array($normalized)) { - return $this->toJson($normalized, true); - } - - return $normalized; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/SyslogFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/SyslogFormatter.php deleted file mode 100644 index 6ed7e92e..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/SyslogFormatter.php +++ /dev/null @@ -1,66 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use Monolog\Level; -use Monolog\LogRecord; - -/** - * Serializes a log message according to RFC 5424 - * - * @author Dalibor Karlović - * @author Renat Gabdullin - */ -class SyslogFormatter extends LineFormatter -{ - private const SYSLOG_FACILITY_USER = 1; - private const FORMAT = "<%extra.priority%>1 %datetime% %extra.hostname% %extra.app-name% %extra.procid% %channel% %extra.structured-data% %level_name%: %message% %context% %extra%\n"; - private const NILVALUE = '-'; - - private string $hostname; - private int $procid; - - public function __construct(private string $applicationName = self::NILVALUE) - { - parent::__construct(self::FORMAT, 'Y-m-d\TH:i:s.uP', true, true); - $this->hostname = (string) gethostname(); - $this->procid = (int) getmypid(); - } - - public function format(LogRecord $record): string - { - $record->extra = $this->formatExtra($record); - - return parent::format($record); - } - - /** - * @param LogRecord $record - * @return array - */ - private function formatExtra(LogRecord $record): array - { - $extra = $record->extra; - $extra['app-name'] = $this->applicationName; - $extra['hostname'] = $this->hostname; - $extra['procid'] = $this->procid; - $extra['priority'] = self::calculatePriority($record->level); - $extra['structured-data'] = self::NILVALUE; - - return $extra; - } - - private static function calculatePriority(Level $level): int - { - return (self::SYSLOG_FACILITY_USER * 8) + $level->toRFC5424Level(); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php b/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php deleted file mode 100644 index 2e28b3ab..00000000 --- a/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php +++ /dev/null @@ -1,139 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Formatter; - -use Monolog\Level; -use Monolog\LogRecord; - -/** - * Serializes a log message according to Wildfire's header requirements - * - * @author Eric Clemmons (@ericclemmons) - * @author Christophe Coevoet - * @author Kirill chEbba Chebunin - */ -class WildfireFormatter extends NormalizerFormatter -{ - /** - * @param string|null $dateFormat The format of the timestamp: one supported by DateTime::format - * - * @throws \RuntimeException If the function json_encode does not exist - */ - public function __construct(?string $dateFormat = null) - { - parent::__construct($dateFormat); - - // http headers do not like non-ISO-8559-1 characters - $this->removeJsonEncodeOption(JSON_UNESCAPED_UNICODE); - } - - /** - * Translates Monolog log levels to Wildfire levels. - * - * @return 'LOG'|'INFO'|'WARN'|'ERROR' - */ - private function toWildfireLevel(Level $level): string - { - return match ($level) { - Level::Debug => 'LOG', - Level::Info => 'INFO', - Level::Notice => 'INFO', - Level::Warning => 'WARN', - Level::Error => 'ERROR', - Level::Critical => 'ERROR', - Level::Alert => 'ERROR', - Level::Emergency => 'ERROR', - }; - } - - /** - * @inheritDoc - */ - public function format(LogRecord $record): string - { - // Retrieve the line and file if set and remove them from the formatted extra - $file = $line = ''; - if (isset($record->extra['file'])) { - $file = $record->extra['file']; - unset($record->extra['file']); - } - if (isset($record->extra['line'])) { - $line = $record->extra['line']; - unset($record->extra['line']); - } - - $message = ['message' => $record->message]; - $handleError = false; - if (count($record->context) > 0) { - $message['context'] = $this->normalize($record->context); - $handleError = true; - } - if (count($record->extra) > 0) { - $message['extra'] = $this->normalize($record->extra); - $handleError = true; - } - if (count($message) === 1) { - $message = reset($message); - } - - if (is_array($message) && isset($message['context']['table'])) { - $type = 'TABLE'; - $label = $record->channel .': '. $record->message; - $message = $message['context']['table']; - } else { - $type = $this->toWildfireLevel($record->level); - $label = $record->channel; - } - - // Create JSON object describing the appearance of the message in the console - $json = $this->toJson([ - [ - 'Type' => $type, - 'File' => $file, - 'Line' => $line, - 'Label' => $label, - ], - $message, - ], $handleError); - - // The message itself is a serialization of the above JSON object + it's length - return sprintf( - '%d|%s|', - strlen($json), - $json - ); - } - - /** - * @inheritDoc - * - * @phpstan-return never - */ - public function formatBatch(array $records) - { - throw new \BadMethodCallException('Batch formatting does not make sense for the WildfireFormatter'); - } - - /** - * @inheritDoc - * - * @return null|scalar|array|object - */ - protected function normalize(mixed $data, int $depth = 0): mixed - { - if (is_object($data) && !$data instanceof \DateTimeInterface) { - return $data; - } - - return parent::normalize($data, $depth); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php deleted file mode 100644 index d3c2cbd7..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php +++ /dev/null @@ -1,104 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\Logger; -use Monolog\ResettableInterface; -use Psr\Log\LogLevel; -use Monolog\LogRecord; - -/** - * Base Handler class providing basic level/bubble support - * - * @author Jordi Boggiano - */ -abstract class AbstractHandler extends Handler implements ResettableInterface -{ - protected Level $level = Level::Debug; - protected bool $bubble = true; - - /** - * @param int|string|Level|LogLevel::* $level The minimum logging level at which this handler will be triggered - * @param bool $bubble Whether the messages that are handled can bubble up the stack or not - * - * @phpstan-param value-of|value-of|Level|LogLevel::* $level - */ - public function __construct(int|string|Level $level = Level::Debug, bool $bubble = true) - { - $this->setLevel($level); - $this->bubble = $bubble; - } - - /** - * @inheritDoc - */ - public function isHandling(LogRecord $record): bool - { - return $record->level->value >= $this->level->value; - } - - /** - * Sets minimum logging level at which this handler will be triggered. - * - * @param Level|LogLevel::* $level Level or level name - * @return $this - * - * @phpstan-param value-of|value-of|Level|LogLevel::* $level - */ - public function setLevel(int|string|Level $level): self - { - $this->level = Logger::toMonologLevel($level); - - return $this; - } - - /** - * Gets minimum logging level at which this handler will be triggered. - */ - public function getLevel(): Level - { - return $this->level; - } - - /** - * Sets the bubbling behavior. - * - * @param bool $bubble true means that this handler allows bubbling. - * false means that bubbling is not permitted. - * @return $this - */ - public function setBubble(bool $bubble): self - { - $this->bubble = $bubble; - - return $this; - } - - /** - * Gets the bubbling behavior. - * - * @return bool true means that this handler allows bubbling. - * false means that bubbling is not permitted. - */ - public function getBubble(): bool - { - return $this->bubble; - } - - /** - * @inheritDoc - */ - public function reset(): void - { - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php deleted file mode 100644 index de13a76b..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\LogRecord; - -/** - * Base Handler class providing the Handler structure, including processors and formatters - * - * Classes extending it should (in most cases) only implement write($record) - * - * @author Jordi Boggiano - * @author Christophe Coevoet - */ -abstract class AbstractProcessingHandler extends AbstractHandler implements ProcessableHandlerInterface, FormattableHandlerInterface -{ - use ProcessableHandlerTrait; - use FormattableHandlerTrait; - - /** - * @inheritDoc - */ - public function handle(LogRecord $record): bool - { - if (!$this->isHandling($record)) { - return false; - } - - if (\count($this->processors) > 0) { - $record = $this->processRecord($record); - } - - $record->formatted = $this->getFormatter()->format($record); - - $this->write($record); - - return false === $this->bubble; - } - - /** - * Writes the (already formatted) record down to the log of the implementing handler - */ - abstract protected function write(LogRecord $record): void; - - public function reset(): void - { - parent::reset(); - - $this->resetProcessors(); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php deleted file mode 100644 index 695a1c07..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php +++ /dev/null @@ -1,95 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\Formatter\FormatterInterface; -use Monolog\Formatter\LineFormatter; - -/** - * Common syslog functionality - */ -abstract class AbstractSyslogHandler extends AbstractProcessingHandler -{ - protected int $facility; - - /** - * List of valid log facility names. - * @var array - */ - protected array $facilities = [ - 'auth' => \LOG_AUTH, - 'authpriv' => \LOG_AUTHPRIV, - 'cron' => \LOG_CRON, - 'daemon' => \LOG_DAEMON, - 'kern' => \LOG_KERN, - 'lpr' => \LOG_LPR, - 'mail' => \LOG_MAIL, - 'news' => \LOG_NEWS, - 'syslog' => \LOG_SYSLOG, - 'user' => \LOG_USER, - 'uucp' => \LOG_UUCP, - ]; - - /** - * Translates Monolog log levels to syslog log priorities. - */ - protected function toSyslogPriority(Level $level): int - { - return $level->toRFC5424Level(); - } - - /** - * @param string|int $facility Either one of the names of the keys in $this->facilities, or a LOG_* facility constant - */ - public function __construct(string|int $facility = \LOG_USER, int|string|Level $level = Level::Debug, bool $bubble = true) - { - parent::__construct($level, $bubble); - - if (!defined('PHP_WINDOWS_VERSION_BUILD')) { - $this->facilities['local0'] = \LOG_LOCAL0; - $this->facilities['local1'] = \LOG_LOCAL1; - $this->facilities['local2'] = \LOG_LOCAL2; - $this->facilities['local3'] = \LOG_LOCAL3; - $this->facilities['local4'] = \LOG_LOCAL4; - $this->facilities['local5'] = \LOG_LOCAL5; - $this->facilities['local6'] = \LOG_LOCAL6; - $this->facilities['local7'] = \LOG_LOCAL7; - } else { - $this->facilities['local0'] = 128; // LOG_LOCAL0 - $this->facilities['local1'] = 136; // LOG_LOCAL1 - $this->facilities['local2'] = 144; // LOG_LOCAL2 - $this->facilities['local3'] = 152; // LOG_LOCAL3 - $this->facilities['local4'] = 160; // LOG_LOCAL4 - $this->facilities['local5'] = 168; // LOG_LOCAL5 - $this->facilities['local6'] = 176; // LOG_LOCAL6 - $this->facilities['local7'] = 184; // LOG_LOCAL7 - } - - // convert textual description of facility to syslog constant - if (is_string($facility) && array_key_exists(strtolower($facility), $this->facilities)) { - $facility = $this->facilities[strtolower($facility)]; - } elseif (!in_array($facility, array_values($this->facilities), true)) { - throw new \UnexpectedValueException('Unknown facility value "'.$facility.'" given'); - } - - $this->facility = $facility; - } - - /** - * @inheritDoc - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new LineFormatter('%channel%.%level_name%: %message% %context% %extra%'); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php deleted file mode 100644 index 72265d4b..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php +++ /dev/null @@ -1,159 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\Formatter\FormatterInterface; -use Monolog\Formatter\JsonFormatter; -use PhpAmqpLib\Message\AMQPMessage; -use PhpAmqpLib\Channel\AMQPChannel; -use AMQPExchange; -use Monolog\LogRecord; - -class AmqpHandler extends AbstractProcessingHandler -{ - protected AMQPExchange|AMQPChannel $exchange; - - /** @var array */ - private array $extraAttributes = []; - - protected string $exchangeName; - - /** - * @param AMQPExchange|AMQPChannel $exchange AMQPExchange (php AMQP ext) or PHP AMQP lib channel, ready for use - * @param string|null $exchangeName Optional exchange name, for AMQPChannel (PhpAmqpLib) only - */ - public function __construct(AMQPExchange|AMQPChannel $exchange, ?string $exchangeName = null, int|string|Level $level = Level::Debug, bool $bubble = true) - { - if ($exchange instanceof AMQPChannel) { - $this->exchangeName = (string) $exchangeName; - } elseif ($exchangeName !== null) { - @trigger_error('The $exchangeName parameter can only be passed when using PhpAmqpLib, if using an AMQPExchange instance configure it beforehand', E_USER_DEPRECATED); - } - $this->exchange = $exchange; - - parent::__construct($level, $bubble); - } - - /** - * @return array - */ - public function getExtraAttributes(): array - { - return $this->extraAttributes; - } - - /** - * Configure extra attributes to pass to the AMQPExchange (if you are using the amqp extension) - * - * @param array $extraAttributes One of content_type, content_encoding, - * message_id, user_id, app_id, delivery_mode, - * priority, timestamp, expiration, type - * or reply_to, headers. - * @return $this - */ - public function setExtraAttributes(array $extraAttributes): self - { - $this->extraAttributes = $extraAttributes; - return $this; - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - $data = $record->formatted; - $routingKey = $this->getRoutingKey($record); - - if ($this->exchange instanceof AMQPExchange) { - $attributes = [ - 'delivery_mode' => 2, - 'content_type' => 'application/json', - ]; - if (\count($this->extraAttributes) > 0) { - $attributes = array_merge($attributes, $this->extraAttributes); - } - $this->exchange->publish( - $data, - $routingKey, - 0, - $attributes - ); - } else { - $this->exchange->basic_publish( - $this->createAmqpMessage($data), - $this->exchangeName, - $routingKey - ); - } - } - - /** - * @inheritDoc - */ - public function handleBatch(array $records): void - { - if ($this->exchange instanceof AMQPExchange) { - parent::handleBatch($records); - - return; - } - - foreach ($records as $record) { - if (!$this->isHandling($record)) { - continue; - } - - $record = $this->processRecord($record); - $data = $this->getFormatter()->format($record); - - $this->exchange->batch_basic_publish( - $this->createAmqpMessage($data), - $this->exchangeName, - $this->getRoutingKey($record) - ); - } - - $this->exchange->publish_batch(); - } - - /** - * Gets the routing key for the AMQP exchange - */ - protected function getRoutingKey(LogRecord $record): string - { - $routingKey = sprintf('%s.%s', $record->level->name, $record->channel); - - return strtolower($routingKey); - } - - private function createAmqpMessage(string $data): AMQPMessage - { - $attributes = [ - 'delivery_mode' => 2, - 'content_type' => 'application/json', - ]; - if (\count($this->extraAttributes) > 0) { - $attributes = array_merge($attributes, $this->extraAttributes); - } - return new AMQPMessage($data, $attributes); - } - - /** - * @inheritDoc - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new JsonFormatter(JsonFormatter::BATCH_MODE_JSON, false); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php deleted file mode 100644 index 5930ca48..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php +++ /dev/null @@ -1,301 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Formatter\FormatterInterface; -use Monolog\Formatter\LineFormatter; -use Monolog\Utils; -use Monolog\LogRecord; -use Monolog\Level; - -use function count; -use function headers_list; -use function stripos; - -/** - * Handler sending logs to browser's javascript console with no browser extension required - * - * @author Olivier Poitrey - */ -class BrowserConsoleHandler extends AbstractProcessingHandler -{ - protected static bool $initialized = false; - - /** @var LogRecord[] */ - protected static array $records = []; - - protected const FORMAT_HTML = 'html'; - protected const FORMAT_JS = 'js'; - protected const FORMAT_UNKNOWN = 'unknown'; - - /** - * @inheritDoc - * - * Formatted output may contain some formatting markers to be transferred to `console.log` using the %c format. - * - * Example of formatted string: - * - * You can do [[blue text]]{color: blue} or [[green background]]{background-color: green; color: white} - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new LineFormatter('[[%channel%]]{macro: autolabel} [[%level_name%]]{font-weight: bold} %message%'); - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - // Accumulate records - static::$records[] = $record; - - // Register shutdown handler if not already done - if (!static::$initialized) { - static::$initialized = true; - $this->registerShutdownFunction(); - } - } - - /** - * Convert records to javascript console commands and send it to the browser. - * This method is automatically called on PHP shutdown if output is HTML or Javascript. - */ - public static function send(): void - { - $format = static::getResponseFormat(); - if ($format === self::FORMAT_UNKNOWN) { - return; - } - - if (count(static::$records) > 0) { - if ($format === self::FORMAT_HTML) { - static::writeOutput(''); - } else { // js format - static::writeOutput(self::generateScript()); - } - static::resetStatic(); - } - } - - public function close(): void - { - self::resetStatic(); - } - - public function reset(): void - { - parent::reset(); - - self::resetStatic(); - } - - /** - * Forget all logged records - */ - public static function resetStatic(): void - { - static::$records = []; - } - - /** - * Wrapper for register_shutdown_function to allow overriding - */ - protected function registerShutdownFunction(): void - { - if (PHP_SAPI !== 'cli') { - register_shutdown_function(['Monolog\Handler\BrowserConsoleHandler', 'send']); - } - } - - /** - * Wrapper for echo to allow overriding - */ - protected static function writeOutput(string $str): void - { - echo $str; - } - - /** - * Checks the format of the response - * - * If Content-Type is set to application/javascript or text/javascript -> js - * If Content-Type is set to text/html, or is unset -> html - * If Content-Type is anything else -> unknown - * - * @return string One of 'js', 'html' or 'unknown' - * @phpstan-return self::FORMAT_* - */ - protected static function getResponseFormat(): string - { - // Check content type - foreach (headers_list() as $header) { - if (stripos($header, 'content-type:') === 0) { - return static::getResponseFormatFromContentType($header); - } - } - - return self::FORMAT_HTML; - } - - /** - * @return string One of 'js', 'html' or 'unknown' - * @phpstan-return self::FORMAT_* - */ - protected static function getResponseFormatFromContentType(string $contentType): string - { - // This handler only works with HTML and javascript outputs - // text/javascript is obsolete in favour of application/javascript, but still used - if (stripos($contentType, 'application/javascript') !== false || stripos($contentType, 'text/javascript') !== false) { - return self::FORMAT_JS; - } - - if (stripos($contentType, 'text/html') !== false) { - return self::FORMAT_HTML; - } - - return self::FORMAT_UNKNOWN; - } - - private static function generateScript(): string - { - $script = []; - foreach (static::$records as $record) { - $context = self::dump('Context', $record->context); - $extra = self::dump('Extra', $record->extra); - - if (\count($context) === 0 && \count($extra) === 0) { - $script[] = self::call_array(self::getConsoleMethodForLevel($record->level), self::handleStyles($record->formatted)); - } else { - $script = array_merge( - $script, - [self::call_array('groupCollapsed', self::handleStyles($record->formatted))], - $context, - $extra, - [self::call('groupEnd')] - ); - } - } - - return "(function (c) {if (c && c.groupCollapsed) {\n" . implode("\n", $script) . "\n}})(console);"; - } - - private static function getConsoleMethodForLevel(Level $level): string - { - return match ($level) { - Level::Debug => 'debug', - Level::Info, Level::Notice => 'info', - Level::Warning => 'warn', - Level::Error, Level::Critical, Level::Alert, Level::Emergency => 'error', - }; - } - - /** - * @return string[] - */ - private static function handleStyles(string $formatted): array - { - $args = []; - $format = '%c' . $formatted; - preg_match_all('/\[\[(.*?)\]\]\{([^}]*)\}/s', $format, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER); - - foreach (array_reverse($matches) as $match) { - $args[] = '"font-weight: normal"'; - $args[] = self::quote(self::handleCustomStyles($match[2][0], $match[1][0])); - - $pos = $match[0][1]; - $format = Utils::substr($format, 0, $pos) . '%c' . $match[1][0] . '%c' . Utils::substr($format, $pos + strlen($match[0][0])); - } - - $args[] = self::quote('font-weight: normal'); - $args[] = self::quote($format); - - return array_reverse($args); - } - - private static function handleCustomStyles(string $style, string $string): string - { - static $colors = ['blue', 'green', 'red', 'magenta', 'orange', 'black', 'grey']; - static $labels = []; - - $style = preg_replace_callback('/macro\s*:(.*?)(?:;|$)/', function (array $m) use ($string, &$colors, &$labels) { - if (trim($m[1]) === 'autolabel') { - // Format the string as a label with consistent auto assigned background color - if (!isset($labels[$string])) { - $labels[$string] = $colors[count($labels) % count($colors)]; - } - $color = $labels[$string]; - - return "background-color: $color; color: white; border-radius: 3px; padding: 0 2px 0 2px"; - } - - return $m[1]; - }, $style); - - if (null === $style) { - $pcreErrorCode = preg_last_error(); - - throw new \RuntimeException('Failed to run preg_replace_callback: ' . $pcreErrorCode . ' / ' . Utils::pcreLastErrorMessage($pcreErrorCode)); - } - - return $style; - } - - /** - * @param mixed[] $dict - * @return mixed[] - */ - private static function dump(string $title, array $dict): array - { - $script = []; - $dict = array_filter($dict); - if (\count($dict) === 0) { - return $script; - } - $script[] = self::call('log', self::quote('%c%s'), self::quote('font-weight: bold'), self::quote($title)); - foreach ($dict as $key => $value) { - $value = json_encode($value); - if (false === $value) { - $value = self::quote(''); - } - $script[] = self::call('log', self::quote('%s: %o'), self::quote((string) $key), $value); - } - - return $script; - } - - private static function quote(string $arg): string - { - return '"' . addcslashes($arg, "\"\n\\") . '"'; - } - - /** - * @param mixed $args - */ - private static function call(...$args): string - { - $method = array_shift($args); - if (!is_string($method)) { - throw new \UnexpectedValueException('Expected the first arg to be a string, got: '.var_export($method, true)); - } - - return self::call_array($method, $args); - } - - /** - * @param mixed[] $args - */ - private static function call_array(string $method, array $args): string - { - return 'c.' . $method . '(' . implode(', ', $args) . ');'; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php deleted file mode 100644 index ff89faa8..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php +++ /dev/null @@ -1,165 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\ResettableInterface; -use Monolog\Formatter\FormatterInterface; -use Monolog\LogRecord; - -/** - * Buffers all records until closing the handler and then pass them as batch. - * - * This is useful for a MailHandler to send only one mail per request instead of - * sending one per log message. - * - * @author Christophe Coevoet - */ -class BufferHandler extends AbstractHandler implements ProcessableHandlerInterface, FormattableHandlerInterface -{ - use ProcessableHandlerTrait; - - protected HandlerInterface $handler; - - protected int $bufferSize = 0; - - protected int $bufferLimit; - - protected bool $flushOnOverflow; - - /** @var LogRecord[] */ - protected array $buffer = []; - - protected bool $initialized = false; - - /** - * @param HandlerInterface $handler Handler. - * @param int $bufferLimit How many entries should be buffered at most, beyond that the oldest items are removed from the buffer. - * @param bool $flushOnOverflow If true, the buffer is flushed when the max size has been reached, by default oldest entries are discarded - */ - public function __construct(HandlerInterface $handler, int $bufferLimit = 0, int|string|Level $level = Level::Debug, bool $bubble = true, bool $flushOnOverflow = false) - { - parent::__construct($level, $bubble); - $this->handler = $handler; - $this->bufferLimit = $bufferLimit; - $this->flushOnOverflow = $flushOnOverflow; - } - - /** - * @inheritDoc - */ - public function handle(LogRecord $record): bool - { - if ($record->level->isLowerThan($this->level)) { - return false; - } - - if (!$this->initialized) { - // __destructor() doesn't get called on Fatal errors - register_shutdown_function([$this, 'close']); - $this->initialized = true; - } - - if ($this->bufferLimit > 0 && $this->bufferSize === $this->bufferLimit) { - if ($this->flushOnOverflow) { - $this->flush(); - } else { - array_shift($this->buffer); - $this->bufferSize--; - } - } - - if (\count($this->processors) > 0) { - $record = $this->processRecord($record); - } - - $this->buffer[] = $record; - $this->bufferSize++; - - return false === $this->bubble; - } - - public function flush(): void - { - if ($this->bufferSize === 0) { - return; - } - - $this->handler->handleBatch($this->buffer); - $this->clear(); - } - - public function __destruct() - { - // suppress the parent behavior since we already have register_shutdown_function() - // to call close(), and the reference contained there will prevent this from being - // GC'd until the end of the request - } - - /** - * @inheritDoc - */ - public function close(): void - { - $this->flush(); - - $this->handler->close(); - } - - /** - * Clears the buffer without flushing any messages down to the wrapped handler. - */ - public function clear(): void - { - $this->bufferSize = 0; - $this->buffer = []; - } - - public function reset(): void - { - $this->flush(); - - parent::reset(); - - $this->resetProcessors(); - - if ($this->handler instanceof ResettableInterface) { - $this->handler->reset(); - } - } - - /** - * @inheritDoc - */ - public function setFormatter(FormatterInterface $formatter): HandlerInterface - { - if ($this->handler instanceof FormattableHandlerInterface) { - $this->handler->setFormatter($formatter); - - return $this; - } - - throw new \UnexpectedValueException('The nested handler of type '.get_class($this->handler).' does not support formatters.'); - } - - /** - * @inheritDoc - */ - public function getFormatter(): FormatterInterface - { - if ($this->handler instanceof FormattableHandlerInterface) { - return $this->handler->getFormatter(); - } - - throw new \UnexpectedValueException('The nested handler of type '.get_class($this->handler).' does not support formatters.'); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php deleted file mode 100644 index 2f7f21d5..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php +++ /dev/null @@ -1,192 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Formatter\ChromePHPFormatter; -use Monolog\Formatter\FormatterInterface; -use Monolog\Level; -use Monolog\Utils; -use Monolog\LogRecord; -use Monolog\DateTimeImmutable; - -/** - * Handler sending logs to the ChromePHP extension (http://www.chromephp.com/) - * - * This also works out of the box with Firefox 43+ - * - * @author Christophe Coevoet - */ -class ChromePHPHandler extends AbstractProcessingHandler -{ - use WebRequestRecognizerTrait; - - /** - * Version of the extension - */ - protected const VERSION = '4.0'; - - /** - * Header name - */ - protected const HEADER_NAME = 'X-ChromeLogger-Data'; - - /** - * Regular expression to detect supported browsers (matches any Chrome, or Firefox 43+) - */ - protected const USER_AGENT_REGEX = '{\b(?:Chrome/\d+(?:\.\d+)*|HeadlessChrome|Firefox/(?:4[3-9]|[5-9]\d|\d{3,})(?:\.\d)*)\b}'; - - protected static bool $initialized = false; - - /** - * Tracks whether we sent too much data - * - * Chrome limits the headers to 4KB, so when we sent 3KB we stop sending - */ - protected static bool $overflowed = false; - - /** @var mixed[] */ - protected static array $json = [ - 'version' => self::VERSION, - 'columns' => ['label', 'log', 'backtrace', 'type'], - 'rows' => [], - ]; - - protected static bool $sendHeaders = true; - - /** - * @throws \RuntimeException If the function json_encode does not exist - */ - public function __construct(int|string|Level $level = Level::Debug, bool $bubble = true) - { - parent::__construct($level, $bubble); - if (!function_exists('json_encode')) { - throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s ChromePHPHandler'); - } - } - - /** - * @inheritDoc - */ - public function handleBatch(array $records): void - { - if (!$this->isWebRequest()) { - return; - } - - $messages = []; - - foreach ($records as $record) { - if ($record->level < $this->level) { - continue; - } - - $message = $this->processRecord($record); - $messages[] = $message; - } - - if (\count($messages) > 0) { - $messages = $this->getFormatter()->formatBatch($messages); - self::$json['rows'] = array_merge(self::$json['rows'], $messages); - $this->send(); - } - } - - /** - * @inheritDoc - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new ChromePHPFormatter(); - } - - /** - * Creates & sends header for a record - * - * @see sendHeader() - * @see send() - */ - protected function write(LogRecord $record): void - { - if (!$this->isWebRequest()) { - return; - } - - self::$json['rows'][] = $record->formatted; - - $this->send(); - } - - /** - * Sends the log header - * - * @see sendHeader() - */ - protected function send(): void - { - if (self::$overflowed || !self::$sendHeaders) { - return; - } - - if (!self::$initialized) { - self::$initialized = true; - - self::$sendHeaders = $this->headersAccepted(); - if (!self::$sendHeaders) { - return; - } - - self::$json['request_uri'] = $_SERVER['REQUEST_URI'] ?? ''; - } - - $json = Utils::jsonEncode(self::$json, Utils::DEFAULT_JSON_FLAGS & ~JSON_UNESCAPED_UNICODE, true); - $data = base64_encode($json); - if (strlen($data) > 3 * 1024) { - self::$overflowed = true; - - $record = new LogRecord( - message: 'Incomplete logs, chrome header size limit reached', - level: Level::Warning, - channel: 'monolog', - datetime: new DateTimeImmutable(true), - ); - self::$json['rows'][count(self::$json['rows']) - 1] = $this->getFormatter()->format($record); - $json = Utils::jsonEncode(self::$json, Utils::DEFAULT_JSON_FLAGS & ~JSON_UNESCAPED_UNICODE, true); - $data = base64_encode($json); - } - - if (trim($data) !== '') { - $this->sendHeader(static::HEADER_NAME, $data); - } - } - - /** - * Send header string to the client - */ - protected function sendHeader(string $header, string $content): void - { - if (!headers_sent() && self::$sendHeaders) { - header(sprintf('%s: %s', $header, $content)); - } - } - - /** - * Verifies if the headers are accepted by the current user agent - */ - protected function headersAccepted(): bool - { - if (!isset($_SERVER['HTTP_USER_AGENT'])) { - return false; - } - - return preg_match(static::USER_AGENT_REGEX, $_SERVER['HTTP_USER_AGENT']) === 1; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php deleted file mode 100644 index 8d9c10e7..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php +++ /dev/null @@ -1,97 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Formatter\FormatterInterface; -use Monolog\Formatter\JsonFormatter; -use Monolog\Level; -use Monolog\LogRecord; - -/** - * CouchDB handler - * - * @author Markus Bachmann - * @phpstan-type Options array{ - * host: string, - * port: int, - * dbname: string, - * username: string|null, - * password: string|null - * } - * @phpstan-type InputOptions array{ - * host?: string, - * port?: int, - * dbname?: string, - * username?: string|null, - * password?: string|null - * } - */ -class CouchDBHandler extends AbstractProcessingHandler -{ - /** - * @var mixed[] - * @phpstan-var Options - */ - private array $options; - - /** - * @param mixed[] $options - * - * @phpstan-param InputOptions $options - */ - public function __construct(array $options = [], int|string|Level $level = Level::Debug, bool $bubble = true) - { - $this->options = array_merge([ - 'host' => 'localhost', - 'port' => 5984, - 'dbname' => 'logger', - 'username' => null, - 'password' => null, - ], $options); - - parent::__construct($level, $bubble); - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - $basicAuth = null; - if (null !== $this->options['username'] && null !== $this->options['password']) { - $basicAuth = sprintf('%s:%s@', $this->options['username'], $this->options['password']); - } - - $url = 'http://'.$basicAuth.$this->options['host'].':'.$this->options['port'].'/'.$this->options['dbname']; - $context = stream_context_create([ - 'http' => [ - 'method' => 'POST', - 'content' => $record->formatted, - 'ignore_errors' => true, - 'max_redirects' => 0, - 'header' => 'Content-type: application/json', - ], - ]); - - if (false === @file_get_contents($url, false, $context)) { - throw new \RuntimeException(sprintf('Could not connect to %s', $url)); - } - } - - /** - * @inheritDoc - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new JsonFormatter(JsonFormatter::BATCH_MODE_JSON, false); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php deleted file mode 100644 index 8388f5ad..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php +++ /dev/null @@ -1,167 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\Utils; -use Monolog\LogRecord; - -/** - * Logs to Cube. - * - * @link https://github.com/square/cube/wiki - * @author Wan Chen - * @deprecated Since 2.8.0 and 3.2.0, Cube appears abandoned and thus we will drop this handler in Monolog 4 - */ -class CubeHandler extends AbstractProcessingHandler -{ - private ?\Socket $udpConnection = null; - private ?\CurlHandle $httpConnection = null; - private string $scheme; - private string $host; - private int $port; - /** @var string[] */ - private array $acceptedSchemes = ['http', 'udp']; - - /** - * Create a Cube handler - * - * @throws \UnexpectedValueException when given url is not a valid url. - * A valid url must consist of three parts : protocol://host:port - * Only valid protocols used by Cube are http and udp - */ - public function __construct(string $url, int|string|Level $level = Level::Debug, bool $bubble = true) - { - $urlInfo = parse_url($url); - - if ($urlInfo === false || !isset($urlInfo['scheme'], $urlInfo['host'], $urlInfo['port'])) { - throw new \UnexpectedValueException('URL "'.$url.'" is not valid'); - } - - if (!in_array($urlInfo['scheme'], $this->acceptedSchemes, true)) { - throw new \UnexpectedValueException( - 'Invalid protocol (' . $urlInfo['scheme'] . ').' - . ' Valid options are ' . implode(', ', $this->acceptedSchemes) - ); - } - - $this->scheme = $urlInfo['scheme']; - $this->host = $urlInfo['host']; - $this->port = $urlInfo['port']; - - parent::__construct($level, $bubble); - } - - /** - * Establish a connection to an UDP socket - * - * @throws \LogicException when unable to connect to the socket - * @throws MissingExtensionException when there is no socket extension - */ - protected function connectUdp(): void - { - if (!extension_loaded('sockets')) { - throw new MissingExtensionException('The sockets extension is required to use udp URLs with the CubeHandler'); - } - - $udpConnection = socket_create(AF_INET, SOCK_DGRAM, 0); - if (false === $udpConnection) { - throw new \LogicException('Unable to create a socket'); - } - - $this->udpConnection = $udpConnection; - if (!socket_connect($this->udpConnection, $this->host, $this->port)) { - throw new \LogicException('Unable to connect to the socket at ' . $this->host . ':' . $this->port); - } - } - - /** - * Establish a connection to an http server - * - * @throws \LogicException when unable to connect to the socket - * @throws MissingExtensionException when no curl extension - */ - protected function connectHttp(): void - { - if (!extension_loaded('curl')) { - throw new MissingExtensionException('The curl extension is required to use http URLs with the CubeHandler'); - } - - $httpConnection = curl_init('http://'.$this->host.':'.$this->port.'/1.0/event/put'); - if (false === $httpConnection) { - throw new \LogicException('Unable to connect to ' . $this->host . ':' . $this->port); - } - - $this->httpConnection = $httpConnection; - curl_setopt($this->httpConnection, CURLOPT_CUSTOMREQUEST, "POST"); - curl_setopt($this->httpConnection, CURLOPT_RETURNTRANSFER, true); - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - $date = $record->datetime; - - $data = ['time' => $date->format('Y-m-d\TH:i:s.uO')]; - $context = $record->context; - - if (isset($context['type'])) { - $data['type'] = $context['type']; - unset($context['type']); - } else { - $data['type'] = $record->channel; - } - - $data['data'] = $context; - $data['data']['level'] = $record->level; - - if ($this->scheme === 'http') { - $this->writeHttp(Utils::jsonEncode($data)); - } else { - $this->writeUdp(Utils::jsonEncode($data)); - } - } - - private function writeUdp(string $data): void - { - if (null === $this->udpConnection) { - $this->connectUdp(); - } - - if (null === $this->udpConnection) { - throw new \LogicException('No UDP socket could be opened'); - } - - socket_send($this->udpConnection, $data, strlen($data), 0); - } - - private function writeHttp(string $data): void - { - if (null === $this->httpConnection) { - $this->connectHttp(); - } - - if (null === $this->httpConnection) { - throw new \LogicException('No connection could be established'); - } - - curl_setopt($this->httpConnection, CURLOPT_POSTFIELDS, '['.$data.']'); - curl_setopt($this->httpConnection, CURLOPT_HTTPHEADER, [ - 'Content-Type: application/json', - 'Content-Length: ' . strlen('['.$data.']'), - ]); - - Curl\Util::execute($this->httpConnection, 5, false); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php b/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php deleted file mode 100644 index 4decf0e6..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php +++ /dev/null @@ -1,69 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler\Curl; - -use CurlHandle; - -/** - * This class is marked as internal and it is not under the BC promise of the package. - * - * @internal - */ -final class Util -{ - /** @var array */ - private static array $retriableErrorCodes = [ - CURLE_COULDNT_RESOLVE_HOST, - CURLE_COULDNT_CONNECT, - CURLE_HTTP_NOT_FOUND, - CURLE_READ_ERROR, - CURLE_OPERATION_TIMEOUTED, - CURLE_HTTP_POST_ERROR, - CURLE_SSL_CONNECT_ERROR, - ]; - - /** - * Executes a CURL request with optional retries and exception on failure - * - * @param CurlHandle $ch curl handler - * @return bool|string @see curl_exec - */ - public static function execute(CurlHandle $ch, int $retries = 5, bool $closeAfterDone = true) - { - while ($retries--) { - $curlResponse = curl_exec($ch); - if ($curlResponse === false) { - $curlErrno = curl_errno($ch); - - if (false === in_array($curlErrno, self::$retriableErrorCodes, true) || $retries === 0) { - $curlError = curl_error($ch); - - if ($closeAfterDone) { - curl_close($ch); - } - - throw new \RuntimeException(sprintf('Curl error (code %d): %s', $curlErrno, $curlError)); - } - - continue; - } - - if ($closeAfterDone) { - curl_close($ch); - } - - return $curlResponse; - } - - return false; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php deleted file mode 100644 index b8ec9009..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php +++ /dev/null @@ -1,166 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\Logger; -use Psr\Log\LogLevel; -use Monolog\LogRecord; - -/** - * Simple handler wrapper that deduplicates log records across multiple requests - * - * It also includes the BufferHandler functionality and will buffer - * all messages until the end of the request or flush() is called. - * - * This works by storing all log records' messages above $deduplicationLevel - * to the file specified by $deduplicationStore. When further logs come in at the end of the - * request (or when flush() is called), all those above $deduplicationLevel are checked - * against the existing stored logs. If they match and the timestamps in the stored log is - * not older than $time seconds, the new log record is discarded. If no log record is new, the - * whole data set is discarded. - * - * This is mainly useful in combination with Mail handlers or things like Slack or HipChat handlers - * that send messages to people, to avoid spamming with the same message over and over in case of - * a major component failure like a database server being down which makes all requests fail in the - * same way. - * - * @author Jordi Boggiano - */ -class DeduplicationHandler extends BufferHandler -{ - protected string $deduplicationStore; - - protected Level $deduplicationLevel; - - protected int $time; - - private bool $gc = false; - - /** - * @param HandlerInterface $handler Handler. - * @param string|null $deduplicationStore The file/path where the deduplication log should be kept - * @param int|string|Level|LogLevel::* $deduplicationLevel The minimum logging level for log records to be looked at for deduplication purposes - * @param int $time The period (in seconds) during which duplicate entries should be suppressed after a given log is sent through - * @param bool $bubble Whether the messages that are handled can bubble up the stack or not - * - * @phpstan-param value-of|value-of|Level|LogLevel::* $deduplicationLevel - */ - public function __construct(HandlerInterface $handler, ?string $deduplicationStore = null, int|string|Level $deduplicationLevel = Level::Error, int $time = 60, bool $bubble = true) - { - parent::__construct($handler, 0, Level::Debug, $bubble, false); - - $this->deduplicationStore = $deduplicationStore === null ? sys_get_temp_dir() . '/monolog-dedup-' . substr(md5(__FILE__), 0, 20) .'.log' : $deduplicationStore; - $this->deduplicationLevel = Logger::toMonologLevel($deduplicationLevel); - $this->time = $time; - } - - public function flush(): void - { - if ($this->bufferSize === 0) { - return; - } - - $passthru = null; - - foreach ($this->buffer as $record) { - if ($record->level->value >= $this->deduplicationLevel->value) { - $passthru = $passthru === true || !$this->isDuplicate($record); - if ($passthru) { - $this->appendRecord($record); - } - } - } - - // default of null is valid as well as if no record matches duplicationLevel we just pass through - if ($passthru === true || $passthru === null) { - $this->handler->handleBatch($this->buffer); - } - - $this->clear(); - - if ($this->gc) { - $this->collectLogs(); - } - } - - private function isDuplicate(LogRecord $record): bool - { - if (!file_exists($this->deduplicationStore)) { - return false; - } - - $store = file($this->deduplicationStore, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); - if (!is_array($store)) { - return false; - } - - $yesterday = time() - 86400; - $timestampValidity = $record->datetime->getTimestamp() - $this->time; - $expectedMessage = preg_replace('{[\r\n].*}', '', $record->message); - - for ($i = count($store) - 1; $i >= 0; $i--) { - list($timestamp, $level, $message) = explode(':', $store[$i], 3); - - if ($level === $record->level->getName() && $message === $expectedMessage && $timestamp > $timestampValidity) { - return true; - } - - if ($timestamp < $yesterday) { - $this->gc = true; - } - } - - return false; - } - - private function collectLogs(): void - { - if (!file_exists($this->deduplicationStore)) { - return; - } - - $handle = fopen($this->deduplicationStore, 'rw+'); - - if (false === $handle) { - throw new \RuntimeException('Failed to open file for reading and writing: ' . $this->deduplicationStore); - } - - flock($handle, LOCK_EX); - $validLogs = []; - - $timestampValidity = time() - $this->time; - - while (!feof($handle)) { - $log = fgets($handle); - if (is_string($log) && '' !== $log && substr($log, 0, 10) >= $timestampValidity) { - $validLogs[] = $log; - } - } - - ftruncate($handle, 0); - rewind($handle); - foreach ($validLogs as $log) { - fwrite($handle, $log); - } - - flock($handle, LOCK_UN); - fclose($handle); - - $this->gc = false; - } - - private function appendRecord(LogRecord $record): void - { - file_put_contents($this->deduplicationStore, $record->datetime->getTimestamp() . ':' . $record->level->getName() . ':' . preg_replace('{[\r\n].*}', '', $record->message) . "\n", FILE_APPEND); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php deleted file mode 100644 index eab9f108..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\Formatter\NormalizerFormatter; -use Monolog\Formatter\FormatterInterface; -use Doctrine\CouchDB\CouchDBClient; -use Monolog\LogRecord; - -/** - * CouchDB handler for Doctrine CouchDB ODM - * - * @author Markus Bachmann - */ -class DoctrineCouchDBHandler extends AbstractProcessingHandler -{ - private CouchDBClient $client; - - public function __construct(CouchDBClient $client, int|string|Level $level = Level::Debug, bool $bubble = true) - { - $this->client = $client; - parent::__construct($level, $bubble); - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - $this->client->postDocument($record->formatted); - } - - protected function getDefaultFormatter(): FormatterInterface - { - return new NormalizerFormatter; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php deleted file mode 100644 index f1c5a959..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php +++ /dev/null @@ -1,80 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Aws\Sdk; -use Aws\DynamoDb\DynamoDbClient; -use Monolog\Formatter\FormatterInterface; -use Aws\DynamoDb\Marshaler; -use Monolog\Formatter\ScalarFormatter; -use Monolog\Level; -use Monolog\LogRecord; - -/** - * Amazon DynamoDB handler (http://aws.amazon.com/dynamodb/) - * - * @link https://github.com/aws/aws-sdk-php/ - * @author Andrew Lawson - */ -class DynamoDbHandler extends AbstractProcessingHandler -{ - public const DATE_FORMAT = 'Y-m-d\TH:i:s.uO'; - - protected DynamoDbClient $client; - - protected string $table; - - protected Marshaler $marshaler; - - public function __construct(DynamoDbClient $client, string $table, int|string|Level $level = Level::Debug, bool $bubble = true) - { - $this->marshaler = new Marshaler; - - $this->client = $client; - $this->table = $table; - - parent::__construct($level, $bubble); - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - $filtered = $this->filterEmptyFields($record->formatted); - $formatted = $this->marshaler->marshalItem($filtered); - - $this->client->putItem([ - 'TableName' => $this->table, - 'Item' => $formatted, - ]); - } - - /** - * @param mixed[] $record - * @return mixed[] - */ - protected function filterEmptyFields(array $record): array - { - return array_filter($record, function ($value) { - return [] !== $value; - }); - } - - /** - * @inheritDoc - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new ScalarFormatter(self::DATE_FORMAT); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ElasticaHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/ElasticaHandler.php deleted file mode 100644 index d9b85b4d..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/ElasticaHandler.php +++ /dev/null @@ -1,142 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Elastica\Document; -use Monolog\Formatter\FormatterInterface; -use Monolog\Formatter\ElasticaFormatter; -use Monolog\Level; -use Elastica\Client; -use Elastica\Exception\ExceptionInterface; -use Monolog\LogRecord; - -/** - * Elastic Search handler - * - * Usage example: - * - * $client = new \Elastica\Client(); - * $options = array( - * 'index' => 'elastic_index_name', - * 'type' => 'elastic_doc_type', Types have been removed in Elastica 7 - * ); - * $handler = new ElasticaHandler($client, $options); - * $log = new Logger('application'); - * $log->pushHandler($handler); - * - * @author Jelle Vink - * @phpstan-type Options array{ - * index: string, - * type: string, - * ignore_error: bool - * } - * @phpstan-type InputOptions array{ - * index?: string, - * type?: string, - * ignore_error?: bool - * } - */ -class ElasticaHandler extends AbstractProcessingHandler -{ - protected Client $client; - - /** - * @var mixed[] Handler config options - * @phpstan-var Options - */ - protected array $options; - - /** - * @param Client $client Elastica Client object - * @param mixed[] $options Handler configuration - * - * @phpstan-param InputOptions $options - */ - public function __construct(Client $client, array $options = [], int|string|Level $level = Level::Debug, bool $bubble = true) - { - parent::__construct($level, $bubble); - $this->client = $client; - $this->options = array_merge( - [ - 'index' => 'monolog', // Elastic index name - 'type' => 'record', // Elastic document type - 'ignore_error' => false, // Suppress Elastica exceptions - ], - $options - ); - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - $this->bulkSend([$record->formatted]); - } - - /** - * @inheritDoc - */ - public function setFormatter(FormatterInterface $formatter): HandlerInterface - { - if ($formatter instanceof ElasticaFormatter) { - return parent::setFormatter($formatter); - } - - throw new \InvalidArgumentException('ElasticaHandler is only compatible with ElasticaFormatter'); - } - - /** - * @return mixed[] - * - * @phpstan-return Options - */ - public function getOptions(): array - { - return $this->options; - } - - /** - * @inheritDoc - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new ElasticaFormatter($this->options['index'], $this->options['type']); - } - - /** - * @inheritDoc - */ - public function handleBatch(array $records): void - { - $documents = $this->getFormatter()->formatBatch($records); - $this->bulkSend($documents); - } - - /** - * Use Elasticsearch bulk API to send list of documents - * - * @param Document[] $documents - * - * @throws \RuntimeException - */ - protected function bulkSend(array $documents): void - { - try { - $this->client->addDocuments($documents); - } catch (ExceptionInterface $e) { - if (!$this->options['ignore_error']) { - throw new \RuntimeException("Error sending messages to Elasticsearch", 0, $e); - } - } - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ElasticsearchHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/ElasticsearchHandler.php deleted file mode 100644 index 74cc7b6e..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/ElasticsearchHandler.php +++ /dev/null @@ -1,230 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Elastic\Elasticsearch\Response\Elasticsearch; -use Throwable; -use RuntimeException; -use Monolog\Level; -use Monolog\Formatter\FormatterInterface; -use Monolog\Formatter\ElasticsearchFormatter; -use InvalidArgumentException; -use Elasticsearch\Common\Exceptions\RuntimeException as ElasticsearchRuntimeException; -use Elasticsearch\Client; -use Monolog\LogRecord; -use Elastic\Elasticsearch\Exception\InvalidArgumentException as ElasticInvalidArgumentException; -use Elastic\Elasticsearch\Client as Client8; - -/** - * Elasticsearch handler - * - * @link https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/index.html - * - * Simple usage example: - * - * $client = \Elasticsearch\ClientBuilder::create() - * ->setHosts($hosts) - * ->build(); - * - * $options = array( - * 'index' => 'elastic_index_name', - * 'type' => 'elastic_doc_type', - * ); - * $handler = new ElasticsearchHandler($client, $options); - * $log = new Logger('application'); - * $log->pushHandler($handler); - * - * @author Avtandil Kikabidze - * @phpstan-type Options array{ - * index: string, - * type: string, - * ignore_error: bool, - * op_type: 'index'|'create' - * } - * @phpstan-type InputOptions array{ - * index?: string, - * type?: string, - * ignore_error?: bool, - * op_type?: 'index'|'create' - * } - */ -class ElasticsearchHandler extends AbstractProcessingHandler -{ - protected Client|Client8 $client; - - /** - * @var mixed[] Handler config options - * @phpstan-var Options - */ - protected array $options; - - /** - * @var bool - */ - private $needsType; - - /** - * @param Client|Client8 $client Elasticsearch Client object - * @param mixed[] $options Handler configuration - * - * @phpstan-param InputOptions $options - */ - public function __construct(Client|Client8 $client, array $options = [], int|string|Level $level = Level::Debug, bool $bubble = true) - { - parent::__construct($level, $bubble); - $this->client = $client; - $this->options = array_merge( - [ - 'index' => 'monolog', // Elastic index name - 'type' => '_doc', // Elastic document type - 'ignore_error' => false, // Suppress Elasticsearch exceptions - 'op_type' => 'index', // Elastic op_type (index or create) (https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html#docs-index-api-op_type) - ], - $options - ); - - if ($client instanceof Client8 || $client::VERSION[0] === '7') { - $this->needsType = false; - // force the type to _doc for ES8/ES7 - $this->options['type'] = '_doc'; - } else { - $this->needsType = true; - } - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - $this->bulkSend([$record->formatted]); - } - - /** - * @inheritDoc - */ - public function setFormatter(FormatterInterface $formatter): HandlerInterface - { - if ($formatter instanceof ElasticsearchFormatter) { - return parent::setFormatter($formatter); - } - - throw new InvalidArgumentException('ElasticsearchHandler is only compatible with ElasticsearchFormatter'); - } - - /** - * Getter options - * - * @return mixed[] - * - * @phpstan-return Options - */ - public function getOptions(): array - { - return $this->options; - } - - /** - * @inheritDoc - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new ElasticsearchFormatter($this->options['index'], $this->options['type']); - } - - /** - * @inheritDoc - */ - public function handleBatch(array $records): void - { - $documents = $this->getFormatter()->formatBatch($records); - $this->bulkSend($documents); - } - - /** - * Use Elasticsearch bulk API to send list of documents - * - * @param array> $records Records + _index/_type keys - * @throws \RuntimeException - */ - protected function bulkSend(array $records): void - { - try { - $params = [ - 'body' => [], - ]; - - foreach ($records as $record) { - $params['body'][] = [ - $this->options['op_type'] => $this->needsType ? [ - '_index' => $record['_index'], - '_type' => $record['_type'], - ] : [ - '_index' => $record['_index'], - ], - ]; - unset($record['_index'], $record['_type']); - - $params['body'][] = $record; - } - - /** @var Elasticsearch */ - $responses = $this->client->bulk($params); - - if ($responses['errors'] === true) { - throw $this->createExceptionFromResponses($responses); - } - } catch (Throwable $e) { - if (! $this->options['ignore_error']) { - throw new RuntimeException('Error sending messages to Elasticsearch', 0, $e); - } - } - } - - /** - * Creates elasticsearch exception from responses array - * - * Only the first error is converted into an exception. - * - * @param mixed[]|Elasticsearch $responses returned by $this->client->bulk() - */ - protected function createExceptionFromResponses($responses): Throwable - { - foreach ($responses['items'] ?? [] as $item) { - if (isset($item['index']['error'])) { - return $this->createExceptionFromError($item['index']['error']); - } - } - - if (class_exists(ElasticInvalidArgumentException::class)) { - return new ElasticInvalidArgumentException('Elasticsearch failed to index one or more records.'); - } - - return new ElasticsearchRuntimeException('Elasticsearch failed to index one or more records.'); - } - - /** - * Creates elasticsearch exception from error array - * - * @param mixed[] $error - */ - protected function createExceptionFromError(array $error): Throwable - { - $previous = isset($error['caused_by']) ? $this->createExceptionFromError($error['caused_by']) : null; - - if (class_exists(ElasticInvalidArgumentException::class)) { - return new ElasticInvalidArgumentException($error['type'] . ': ' . $error['reason'], 0, $previous); - } - - return new ElasticsearchRuntimeException($error['type'] . ': ' . $error['reason'], 0, $previous); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php deleted file mode 100644 index 571c439e..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php +++ /dev/null @@ -1,93 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Formatter\LineFormatter; -use Monolog\Formatter\FormatterInterface; -use Monolog\Level; -use Monolog\Utils; -use Monolog\LogRecord; - -/** - * Stores to PHP error_log() handler. - * - * @author Elan Ruusamäe - */ -class ErrorLogHandler extends AbstractProcessingHandler -{ - public const OPERATING_SYSTEM = 0; - public const SAPI = 4; - - protected int $messageType; - protected bool $expandNewlines; - - /** - * @param int $messageType Says where the error should go. - * @param bool $expandNewlines If set to true, newlines in the message will be expanded to be take multiple log entries - * - * @throws \InvalidArgumentException If an unsupported message type is set - */ - public function __construct(int $messageType = self::OPERATING_SYSTEM, int|string|Level $level = Level::Debug, bool $bubble = true, bool $expandNewlines = false) - { - parent::__construct($level, $bubble); - - if (false === in_array($messageType, self::getAvailableTypes(), true)) { - $message = sprintf('The given message type "%s" is not supported', print_r($messageType, true)); - - throw new \InvalidArgumentException($message); - } - - $this->messageType = $messageType; - $this->expandNewlines = $expandNewlines; - } - - /** - * @return int[] With all available types - */ - public static function getAvailableTypes(): array - { - return [ - self::OPERATING_SYSTEM, - self::SAPI, - ]; - } - - /** - * @inheritDoc - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new LineFormatter('[%datetime%] %channel%.%level_name%: %message% %context% %extra%'); - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - if (!$this->expandNewlines) { - error_log((string) $record->formatted, $this->messageType); - - return; - } - - $lines = preg_split('{[\r\n]+}', (string) $record->formatted); - if ($lines === false) { - $pcreErrorCode = preg_last_error(); - - throw new \RuntimeException('Failed to preg_split formatted string: ' . $pcreErrorCode . ' / '. Utils::pcreLastErrorMessage($pcreErrorCode)); - } - foreach ($lines as $line) { - error_log($line, $this->messageType); - } - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FallbackGroupHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/FallbackGroupHandler.php deleted file mode 100644 index 58318bee..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/FallbackGroupHandler.php +++ /dev/null @@ -1,68 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Throwable; -use Monolog\LogRecord; - -/** - * Forwards records to at most one handler - * - * If a handler fails, the exception is suppressed and the record is forwarded to the next handler. - * - * As soon as one handler handles a record successfully, the handling stops there. - */ -class FallbackGroupHandler extends GroupHandler -{ - /** - * @inheritDoc - */ - public function handle(LogRecord $record): bool - { - if (\count($this->processors) > 0) { - $record = $this->processRecord($record); - } - foreach ($this->handlers as $handler) { - try { - $handler->handle(clone $record); - break; - } catch (Throwable $e) { - // What throwable? - } - } - - return false === $this->bubble; - } - - /** - * @inheritDoc - */ - public function handleBatch(array $records): void - { - if (\count($this->processors) > 0) { - $processed = []; - foreach ($records as $record) { - $processed[] = $this->processRecord($record); - } - $records = $processed; - } - - foreach ($this->handlers as $handler) { - try { - $handler->handleBatch(array_map(fn ($record) => clone $record, $records)); - break; - } catch (Throwable $e) { - // What throwable? - } - } - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php deleted file mode 100644 index 5fa558e1..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php +++ /dev/null @@ -1,202 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Closure; -use Monolog\Level; -use Monolog\Logger; -use Monolog\ResettableInterface; -use Monolog\Formatter\FormatterInterface; -use Psr\Log\LogLevel; -use Monolog\LogRecord; - -/** - * Simple handler wrapper that filters records based on a list of levels - * - * It can be configured with an exact list of levels to allow, or a min/max level. - * - * @author Hennadiy Verkh - * @author Jordi Boggiano - */ -class FilterHandler extends Handler implements ProcessableHandlerInterface, ResettableInterface, FormattableHandlerInterface -{ - use ProcessableHandlerTrait; - - /** - * Handler or factory Closure($record, $this) - * - * @phpstan-var (Closure(LogRecord|null, HandlerInterface): HandlerInterface)|HandlerInterface - */ - protected Closure|HandlerInterface $handler; - - /** - * Minimum level for logs that are passed to handler - * - * @var bool[] Map of Level value => true - * @phpstan-var array, true> - */ - protected array $acceptedLevels; - - /** - * Whether the messages that are handled can bubble up the stack or not - */ - protected bool $bubble; - - /** - * @phpstan-param (Closure(LogRecord|null, HandlerInterface): HandlerInterface)|HandlerInterface $handler - * - * @param Closure|HandlerInterface $handler Handler or factory Closure($record|null, $filterHandler). - * @param int|string|Level|array $minLevelOrList A list of levels to accept or a minimum level if maxLevel is provided - * @param int|string|Level|LogLevel::* $maxLevel Maximum level to accept, only used if $minLevelOrList is not an array - * @param bool $bubble Whether the messages that are handled can bubble up the stack or not - * - * @phpstan-param value-of|value-of|Level|LogLevel::*|array|value-of|Level|LogLevel::*> $minLevelOrList - * @phpstan-param value-of|value-of|Level|LogLevel::* $maxLevel - */ - public function __construct(Closure|HandlerInterface $handler, int|string|Level|array $minLevelOrList = Level::Debug, int|string|Level $maxLevel = Level::Emergency, bool $bubble = true) - { - $this->handler = $handler; - $this->bubble = $bubble; - $this->setAcceptedLevels($minLevelOrList, $maxLevel); - } - - /** - * @phpstan-return list List of levels - */ - public function getAcceptedLevels(): array - { - return array_map(fn (int $level) => Level::from($level), array_keys($this->acceptedLevels)); - } - - /** - * @param int|string|Level|LogLevel::*|array $minLevelOrList A list of levels to accept or a minimum level or level name if maxLevel is provided - * @param int|string|Level|LogLevel::* $maxLevel Maximum level or level name to accept, only used if $minLevelOrList is not an array - * @return $this - * - * @phpstan-param value-of|value-of|Level|LogLevel::*|array|value-of|Level|LogLevel::*> $minLevelOrList - * @phpstan-param value-of|value-of|Level|LogLevel::* $maxLevel - */ - public function setAcceptedLevels(int|string|Level|array $minLevelOrList = Level::Debug, int|string|Level $maxLevel = Level::Emergency): self - { - if (is_array($minLevelOrList)) { - $acceptedLevels = array_map(Logger::toMonologLevel(...), $minLevelOrList); - } else { - $minLevelOrList = Logger::toMonologLevel($minLevelOrList); - $maxLevel = Logger::toMonologLevel($maxLevel); - $acceptedLevels = array_values(array_filter(Level::cases(), fn (Level $level) => $level->value >= $minLevelOrList->value && $level->value <= $maxLevel->value)); - } - $this->acceptedLevels = []; - foreach ($acceptedLevels as $level) { - $this->acceptedLevels[$level->value] = true; - } - - return $this; - } - - /** - * @inheritDoc - */ - public function isHandling(LogRecord $record): bool - { - return isset($this->acceptedLevels[$record->level->value]); - } - - /** - * @inheritDoc - */ - public function handle(LogRecord $record): bool - { - if (!$this->isHandling($record)) { - return false; - } - - if (\count($this->processors) > 0) { - $record = $this->processRecord($record); - } - - $this->getHandler($record)->handle($record); - - return false === $this->bubble; - } - - /** - * @inheritDoc - */ - public function handleBatch(array $records): void - { - $filtered = []; - foreach ($records as $record) { - if ($this->isHandling($record)) { - $filtered[] = $record; - } - } - - if (count($filtered) > 0) { - $this->getHandler($filtered[count($filtered) - 1])->handleBatch($filtered); - } - } - - /** - * Return the nested handler - * - * If the handler was provided as a factory, this will trigger the handler's instantiation. - */ - public function getHandler(LogRecord $record = null): HandlerInterface - { - if (!$this->handler instanceof HandlerInterface) { - $handler = ($this->handler)($record, $this); - if (!$handler instanceof HandlerInterface) { - throw new \RuntimeException("The factory Closure should return a HandlerInterface"); - } - $this->handler = $handler; - } - - return $this->handler; - } - - /** - * @inheritDoc - */ - public function setFormatter(FormatterInterface $formatter): HandlerInterface - { - $handler = $this->getHandler(); - if ($handler instanceof FormattableHandlerInterface) { - $handler->setFormatter($formatter); - - return $this; - } - - throw new \UnexpectedValueException('The nested handler of type '.get_class($handler).' does not support formatters.'); - } - - /** - * @inheritDoc - */ - public function getFormatter(): FormatterInterface - { - $handler = $this->getHandler(); - if ($handler instanceof FormattableHandlerInterface) { - return $handler->getFormatter(); - } - - throw new \UnexpectedValueException('The nested handler of type '.get_class($handler).' does not support formatters.'); - } - - public function reset(): void - { - $this->resetProcessors(); - - if ($this->getHandler() instanceof ResettableInterface) { - $this->getHandler()->reset(); - } - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php b/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php deleted file mode 100644 index e8a1b0b0..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler\FingersCrossed; - -use Monolog\LogRecord; - -/** - * Interface for activation strategies for the FingersCrossedHandler. - * - * @author Johannes M. Schmitt - */ -interface ActivationStrategyInterface -{ - /** - * Returns whether the given record activates the handler. - */ - public function isHandlerActivated(LogRecord $record): bool; -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php b/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php deleted file mode 100644 index 383e19af..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php +++ /dev/null @@ -1,69 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler\FingersCrossed; - -use Monolog\Level; -use Monolog\Logger; -use Psr\Log\LogLevel; -use Monolog\LogRecord; - -/** - * Channel and Error level based monolog activation strategy. Allows to trigger activation - * based on level per channel. e.g. trigger activation on level 'ERROR' by default, except - * for records of the 'sql' channel; those should trigger activation on level 'WARN'. - * - * Example: - * - * - * $activationStrategy = new ChannelLevelActivationStrategy( - * Level::Critical, - * array( - * 'request' => Level::Alert, - * 'sensitive' => Level::Error, - * ) - * ); - * $handler = new FingersCrossedHandler(new StreamHandler('php://stderr'), $activationStrategy); - * - * - * @author Mike Meessen - */ -class ChannelLevelActivationStrategy implements ActivationStrategyInterface -{ - private Level $defaultActionLevel; - - /** - * @var array - */ - private array $channelToActionLevel; - - /** - * @param int|string|Level|LogLevel::* $defaultActionLevel The default action level to be used if the record's category doesn't match any - * @param array $channelToActionLevel An array that maps channel names to action levels. - * - * @phpstan-param value-of|value-of|Level|LogLevel::* $defaultActionLevel - * @phpstan-param array|value-of|Level|LogLevel::*> $channelToActionLevel - */ - public function __construct(int|string|Level $defaultActionLevel, array $channelToActionLevel = []) - { - $this->defaultActionLevel = Logger::toMonologLevel($defaultActionLevel); - $this->channelToActionLevel = array_map(Logger::toMonologLevel(...), $channelToActionLevel); - } - - public function isHandlerActivated(LogRecord $record): bool - { - if (isset($this->channelToActionLevel[$record->channel])) { - return $record->level->value >= $this->channelToActionLevel[$record->channel]->value; - } - - return $record->level->value >= $this->defaultActionLevel->value; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php b/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php deleted file mode 100644 index c3ca2967..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php +++ /dev/null @@ -1,42 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler\FingersCrossed; - -use Monolog\Level; -use Monolog\LogRecord; -use Monolog\Logger; -use Psr\Log\LogLevel; - -/** - * Error level based activation strategy. - * - * @author Johannes M. Schmitt - */ -class ErrorLevelActivationStrategy implements ActivationStrategyInterface -{ - private Level $actionLevel; - - /** - * @param int|string|Level $actionLevel Level or name or value - * - * @phpstan-param value-of|value-of|Level|LogLevel::* $actionLevel - */ - public function __construct(int|string|Level $actionLevel) - { - $this->actionLevel = Logger::toMonologLevel($actionLevel); - } - - public function isHandlerActivated(LogRecord $record): bool - { - return $record->level->value >= $this->actionLevel->value; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php deleted file mode 100644 index 1c3df386..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php +++ /dev/null @@ -1,242 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Closure; -use Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy; -use Monolog\Handler\FingersCrossed\ActivationStrategyInterface; -use Monolog\Level; -use Monolog\Logger; -use Monolog\ResettableInterface; -use Monolog\Formatter\FormatterInterface; -use Psr\Log\LogLevel; -use Monolog\LogRecord; - -/** - * Buffers all records until a certain level is reached - * - * The advantage of this approach is that you don't get any clutter in your log files. - * Only requests which actually trigger an error (or whatever your actionLevel is) will be - * in the logs, but they will contain all records, not only those above the level threshold. - * - * You can then have a passthruLevel as well which means that at the end of the request, - * even if it did not get activated, it will still send through log records of e.g. at least a - * warning level. - * - * You can find the various activation strategies in the - * Monolog\Handler\FingersCrossed\ namespace. - * - * @author Jordi Boggiano - */ -class FingersCrossedHandler extends Handler implements ProcessableHandlerInterface, ResettableInterface, FormattableHandlerInterface -{ - use ProcessableHandlerTrait; - - /** - * Handler or factory Closure($record, $this) - * - * @phpstan-var (Closure(LogRecord|null, HandlerInterface): HandlerInterface)|HandlerInterface - */ - protected Closure|HandlerInterface $handler; - - protected ActivationStrategyInterface $activationStrategy; - - protected bool $buffering = true; - - protected int $bufferSize; - - /** @var LogRecord[] */ - protected array $buffer = []; - - protected bool $stopBuffering; - - protected Level|null $passthruLevel = null; - - protected bool $bubble; - - /** - * @phpstan-param (Closure(LogRecord|null, HandlerInterface): HandlerInterface)|HandlerInterface $handler - * - * @param Closure|HandlerInterface $handler Handler or factory Closure($record|null, $fingersCrossedHandler). - * @param int|string|Level|LogLevel::* $activationStrategy Strategy which determines when this handler takes action, or a level name/value at which the handler is activated - * @param int $bufferSize How many entries should be buffered at most, beyond that the oldest items are removed from the buffer. - * @param bool $bubble Whether the messages that are handled can bubble up the stack or not - * @param bool $stopBuffering Whether the handler should stop buffering after being triggered (default true) - * @param int|string|Level|LogLevel::*|null $passthruLevel Minimum level to always flush to handler on close, even if strategy not triggered - * - * @phpstan-param value-of|value-of|Level|LogLevel::*|ActivationStrategyInterface $activationStrategy - * @phpstan-param value-of|value-of|Level|LogLevel::* $passthruLevel - */ - public function __construct(Closure|HandlerInterface $handler, int|string|Level|ActivationStrategyInterface $activationStrategy = null, int $bufferSize = 0, bool $bubble = true, bool $stopBuffering = true, int|string|Level|null $passthruLevel = null) - { - if (null === $activationStrategy) { - $activationStrategy = new ErrorLevelActivationStrategy(Level::Warning); - } - - // convert simple int activationStrategy to an object - if (!$activationStrategy instanceof ActivationStrategyInterface) { - $activationStrategy = new ErrorLevelActivationStrategy($activationStrategy); - } - - $this->handler = $handler; - $this->activationStrategy = $activationStrategy; - $this->bufferSize = $bufferSize; - $this->bubble = $bubble; - $this->stopBuffering = $stopBuffering; - - if ($passthruLevel !== null) { - $this->passthruLevel = Logger::toMonologLevel($passthruLevel); - } - } - - /** - * @inheritDoc - */ - public function isHandling(LogRecord $record): bool - { - return true; - } - - /** - * Manually activate this logger regardless of the activation strategy - */ - public function activate(): void - { - if ($this->stopBuffering) { - $this->buffering = false; - } - - $this->getHandler(end($this->buffer) ?: null)->handleBatch($this->buffer); - $this->buffer = []; - } - - /** - * @inheritDoc - */ - public function handle(LogRecord $record): bool - { - if (\count($this->processors) > 0) { - $record = $this->processRecord($record); - } - - if ($this->buffering) { - $this->buffer[] = $record; - if ($this->bufferSize > 0 && count($this->buffer) > $this->bufferSize) { - array_shift($this->buffer); - } - if ($this->activationStrategy->isHandlerActivated($record)) { - $this->activate(); - } - } else { - $this->getHandler($record)->handle($record); - } - - return false === $this->bubble; - } - - /** - * @inheritDoc - */ - public function close(): void - { - $this->flushBuffer(); - - $this->getHandler()->close(); - } - - public function reset(): void - { - $this->flushBuffer(); - - $this->resetProcessors(); - - if ($this->getHandler() instanceof ResettableInterface) { - $this->getHandler()->reset(); - } - } - - /** - * Clears the buffer without flushing any messages down to the wrapped handler. - * - * It also resets the handler to its initial buffering state. - */ - public function clear(): void - { - $this->buffer = []; - $this->reset(); - } - - /** - * Resets the state of the handler. Stops forwarding records to the wrapped handler. - */ - private function flushBuffer(): void - { - if (null !== $this->passthruLevel) { - $passthruLevel = $this->passthruLevel; - $this->buffer = array_filter($this->buffer, static function ($record) use ($passthruLevel) { - return $passthruLevel->includes($record->level); - }); - if (count($this->buffer) > 0) { - $this->getHandler(end($this->buffer))->handleBatch($this->buffer); - } - } - - $this->buffer = []; - $this->buffering = true; - } - - /** - * Return the nested handler - * - * If the handler was provided as a factory, this will trigger the handler's instantiation. - */ - public function getHandler(LogRecord $record = null): HandlerInterface - { - if (!$this->handler instanceof HandlerInterface) { - $handler = ($this->handler)($record, $this); - if (!$handler instanceof HandlerInterface) { - throw new \RuntimeException("The factory Closure should return a HandlerInterface"); - } - $this->handler = $handler; - } - - return $this->handler; - } - - /** - * @inheritDoc - */ - public function setFormatter(FormatterInterface $formatter): HandlerInterface - { - $handler = $this->getHandler(); - if ($handler instanceof FormattableHandlerInterface) { - $handler->setFormatter($formatter); - - return $this; - } - - throw new \UnexpectedValueException('The nested handler of type '.get_class($handler).' does not support formatters.'); - } - - /** - * @inheritDoc - */ - public function getFormatter(): FormatterInterface - { - $handler = $this->getHandler(); - if ($handler instanceof FormattableHandlerInterface) { - return $handler->getFormatter(); - } - - throw new \UnexpectedValueException('The nested handler of type '.get_class($handler).' does not support formatters.'); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php deleted file mode 100644 index 6b9e5103..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php +++ /dev/null @@ -1,174 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Formatter\WildfireFormatter; -use Monolog\Formatter\FormatterInterface; -use Monolog\LogRecord; - -/** - * Simple FirePHP Handler (http://www.firephp.org/), which uses the Wildfire protocol. - * - * @author Eric Clemmons (@ericclemmons) - */ -class FirePHPHandler extends AbstractProcessingHandler -{ - use WebRequestRecognizerTrait; - - /** - * WildFire JSON header message format - */ - protected const PROTOCOL_URI = 'http://meta.wildfirehq.org/Protocol/JsonStream/0.2'; - - /** - * FirePHP structure for parsing messages & their presentation - */ - protected const STRUCTURE_URI = 'http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1'; - - /** - * Must reference a "known" plugin, otherwise headers won't display in FirePHP - */ - protected const PLUGIN_URI = 'http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.3'; - - /** - * Header prefix for Wildfire to recognize & parse headers - */ - protected const HEADER_PREFIX = 'X-Wf'; - - /** - * Whether or not Wildfire vendor-specific headers have been generated & sent yet - */ - protected static bool $initialized = false; - - /** - * Shared static message index between potentially multiple handlers - */ - protected static int $messageIndex = 1; - - protected static bool $sendHeaders = true; - - /** - * Base header creation function used by init headers & record headers - * - * @param array $meta Wildfire Plugin, Protocol & Structure Indexes - * @param string $message Log message - * - * @return array Complete header string ready for the client as key and message as value - * - * @phpstan-return non-empty-array - */ - protected function createHeader(array $meta, string $message): array - { - $header = sprintf('%s-%s', static::HEADER_PREFIX, join('-', $meta)); - - return [$header => $message]; - } - - /** - * Creates message header from record - * - * @return array - * - * @phpstan-return non-empty-array - * - * @see createHeader() - */ - protected function createRecordHeader(LogRecord $record): array - { - // Wildfire is extensible to support multiple protocols & plugins in a single request, - // but we're not taking advantage of that (yet), so we're using "1" for simplicity's sake. - return $this->createHeader( - [1, 1, 1, self::$messageIndex++], - $record->formatted - ); - } - - /** - * @inheritDoc - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new WildfireFormatter(); - } - - /** - * Wildfire initialization headers to enable message parsing - * - * @see createHeader() - * @see sendHeader() - * - * @return array - */ - protected function getInitHeaders(): array - { - // Initial payload consists of required headers for Wildfire - return array_merge( - $this->createHeader(['Protocol', 1], static::PROTOCOL_URI), - $this->createHeader([1, 'Structure', 1], static::STRUCTURE_URI), - $this->createHeader([1, 'Plugin', 1], static::PLUGIN_URI) - ); - } - - /** - * Send header string to the client - */ - protected function sendHeader(string $header, string $content): void - { - if (!headers_sent() && self::$sendHeaders) { - header(sprintf('%s: %s', $header, $content)); - } - } - - /** - * Creates & sends header for a record, ensuring init headers have been sent prior - * - * @see sendHeader() - * @see sendInitHeaders() - */ - protected function write(LogRecord $record): void - { - if (!self::$sendHeaders || !$this->isWebRequest()) { - return; - } - - // WildFire-specific headers must be sent prior to any messages - if (!self::$initialized) { - self::$initialized = true; - - self::$sendHeaders = $this->headersAccepted(); - if (!self::$sendHeaders) { - return; - } - - foreach ($this->getInitHeaders() as $header => $content) { - $this->sendHeader($header, $content); - } - } - - $header = $this->createRecordHeader($record); - if (trim(current($header)) !== '') { - $this->sendHeader(key($header), current($header)); - } - } - - /** - * Verifies if the headers are accepted by the current user agent - */ - protected function headersAccepted(): bool - { - if (isset($_SERVER['HTTP_USER_AGENT']) && 1 === preg_match('{\bFirePHP/\d+\.\d+\b}', $_SERVER['HTTP_USER_AGENT'])) { - return true; - } - - return isset($_SERVER['HTTP_X_FIREPHP_VERSION']); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php deleted file mode 100644 index 22064822..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php +++ /dev/null @@ -1,132 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Formatter\FormatterInterface; -use Monolog\Formatter\LineFormatter; -use Monolog\Level; -use Monolog\LogRecord; - -/** - * Sends logs to Fleep.io using Webhook integrations - * - * You'll need a Fleep.io account to use this handler. - * - * @see https://fleep.io/integrations/webhooks/ Fleep Webhooks Documentation - * @author Ando Roots - */ -class FleepHookHandler extends SocketHandler -{ - protected const FLEEP_HOST = 'fleep.io'; - - protected const FLEEP_HOOK_URI = '/hook/'; - - /** - * @var string Webhook token (specifies the conversation where logs are sent) - */ - protected string $token; - - /** - * Construct a new Fleep.io Handler. - * - * For instructions on how to create a new web hook in your conversations - * see https://fleep.io/integrations/webhooks/ - * - * @param string $token Webhook token - * @throws MissingExtensionException if OpenSSL is missing - */ - public function __construct( - string $token, - $level = Level::Debug, - bool $bubble = true, - bool $persistent = false, - float $timeout = 0.0, - float $writingTimeout = 10.0, - ?float $connectionTimeout = null, - ?int $chunkSize = null - ) { - if (!extension_loaded('openssl')) { - throw new MissingExtensionException('The OpenSSL PHP extension is required to use the FleepHookHandler'); - } - - $this->token = $token; - - $connectionString = 'ssl://' . static::FLEEP_HOST . ':443'; - parent::__construct( - $connectionString, - $level, - $bubble, - $persistent, - $timeout, - $writingTimeout, - $connectionTimeout, - $chunkSize - ); - } - - /** - * Returns the default formatter to use with this handler - * - * Overloaded to remove empty context and extra arrays from the end of the log message. - * - * @return LineFormatter - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new LineFormatter(null, null, true, true); - } - - /** - * Handles a log record - */ - public function write(LogRecord $record): void - { - parent::write($record); - $this->closeSocket(); - } - - /** - * @inheritDoc - */ - protected function generateDataStream(LogRecord $record): string - { - $content = $this->buildContent($record); - - return $this->buildHeader($content) . $content; - } - - /** - * Builds the header of the API Call - */ - private function buildHeader(string $content): string - { - $header = "POST " . static::FLEEP_HOOK_URI . $this->token . " HTTP/1.1\r\n"; - $header .= "Host: " . static::FLEEP_HOST . "\r\n"; - $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; - $header .= "Content-Length: " . strlen($content) . "\r\n"; - $header .= "\r\n"; - - return $header; - } - - /** - * Builds the body of API call - */ - private function buildContent(LogRecord $record): string - { - $dataArray = [ - 'message' => $record->formatted, - ]; - - return http_build_query($dataArray); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php deleted file mode 100644 index d24bec40..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php +++ /dev/null @@ -1,127 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\Utils; -use Monolog\Formatter\FlowdockFormatter; -use Monolog\Formatter\FormatterInterface; -use Monolog\LogRecord; - -/** - * Sends notifications through the Flowdock push API - * - * This must be configured with a FlowdockFormatter instance via setFormatter() - * - * Notes: - * API token - Flowdock API token - * - * @author Dominik Liebler - * @see https://www.flowdock.com/api/push - * @deprecated Since 2.9.0 and 3.3.0, Flowdock was shutdown we will thus drop this handler in Monolog 4 - */ -class FlowdockHandler extends SocketHandler -{ - protected string $apiToken; - - /** - * @throws MissingExtensionException if OpenSSL is missing - */ - public function __construct( - string $apiToken, - $level = Level::Debug, - bool $bubble = true, - bool $persistent = false, - float $timeout = 0.0, - float $writingTimeout = 10.0, - ?float $connectionTimeout = null, - ?int $chunkSize = null - ) { - if (!extension_loaded('openssl')) { - throw new MissingExtensionException('The OpenSSL PHP extension is required to use the FlowdockHandler'); - } - - parent::__construct( - 'ssl://api.flowdock.com:443', - $level, - $bubble, - $persistent, - $timeout, - $writingTimeout, - $connectionTimeout, - $chunkSize - ); - $this->apiToken = $apiToken; - } - - /** - * @inheritDoc - */ - public function setFormatter(FormatterInterface $formatter): HandlerInterface - { - if (!$formatter instanceof FlowdockFormatter) { - throw new \InvalidArgumentException('The FlowdockHandler requires an instance of Monolog\Formatter\FlowdockFormatter to function correctly'); - } - - return parent::setFormatter($formatter); - } - - /** - * Gets the default formatter. - */ - protected function getDefaultFormatter(): FormatterInterface - { - throw new \InvalidArgumentException('The FlowdockHandler must be configured (via setFormatter) with an instance of Monolog\Formatter\FlowdockFormatter to function correctly'); - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - parent::write($record); - - $this->closeSocket(); - } - - /** - * @inheritDoc - */ - protected function generateDataStream(LogRecord $record): string - { - $content = $this->buildContent($record); - - return $this->buildHeader($content) . $content; - } - - /** - * Builds the body of API call - */ - private function buildContent(LogRecord $record): string - { - return Utils::jsonEncode($record->formatted); - } - - /** - * Builds the header of the API Call - */ - private function buildHeader(string $content): string - { - $header = "POST /v1/messages/team_inbox/" . $this->apiToken . " HTTP/1.1\r\n"; - $header .= "Host: api.flowdock.com\r\n"; - $header .= "Content-Type: application/json\r\n"; - $header .= "Content-Length: " . strlen($content) . "\r\n"; - $header .= "\r\n"; - - return $header; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php b/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php deleted file mode 100644 index 72da59e1..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerInterface.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Formatter\FormatterInterface; - -/** - * Interface to describe loggers that have a formatter - * - * @author Jordi Boggiano - */ -interface FormattableHandlerInterface -{ - /** - * Sets the formatter. - * - * @return HandlerInterface self - */ - public function setFormatter(FormatterInterface $formatter): HandlerInterface; - - /** - * Gets the formatter. - */ - public function getFormatter(): FormatterInterface; -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php b/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php deleted file mode 100644 index c044e078..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/FormattableHandlerTrait.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Formatter\FormatterInterface; -use Monolog\Formatter\LineFormatter; - -/** - * Helper trait for implementing FormattableInterface - * - * @author Jordi Boggiano - */ -trait FormattableHandlerTrait -{ - protected FormatterInterface|null $formatter = null; - - /** - * @inheritDoc - */ - public function setFormatter(FormatterInterface $formatter): HandlerInterface - { - $this->formatter = $formatter; - - return $this; - } - - /** - * @inheritDoc - */ - public function getFormatter(): FormatterInterface - { - if (null === $this->formatter) { - $this->formatter = $this->getDefaultFormatter(); - } - - return $this->formatter; - } - - /** - * Gets the default formatter. - * - * Overwrite this if the LineFormatter is not a good default for your handler. - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new LineFormatter(); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php deleted file mode 100644 index ba5bb975..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php +++ /dev/null @@ -1,58 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Gelf\PublisherInterface; -use Monolog\Level; -use Monolog\Formatter\GelfMessageFormatter; -use Monolog\Formatter\FormatterInterface; -use Monolog\LogRecord; - -/** - * Handler to send messages to a Graylog2 (http://www.graylog2.org) server - * - * @author Matt Lehner - * @author Benjamin Zikarsky - */ -class GelfHandler extends AbstractProcessingHandler -{ - /** - * @var PublisherInterface the publisher object that sends the message to the server - */ - protected PublisherInterface $publisher; - - /** - * @param PublisherInterface $publisher a gelf publisher object - */ - public function __construct(PublisherInterface $publisher, int|string|Level $level = Level::Debug, bool $bubble = true) - { - parent::__construct($level, $bubble); - - $this->publisher = $publisher; - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - $this->publisher->publish($record->formatted); - } - - /** - * @inheritDoc - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new GelfMessageFormatter(); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php deleted file mode 100644 index 0423dc34..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php +++ /dev/null @@ -1,130 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Formatter\FormatterInterface; -use Monolog\ResettableInterface; -use Monolog\LogRecord; - -/** - * Forwards records to multiple handlers - * - * @author Lenar Lõhmus - */ -class GroupHandler extends Handler implements ProcessableHandlerInterface, ResettableInterface -{ - use ProcessableHandlerTrait; - - /** @var HandlerInterface[] */ - protected array $handlers; - protected bool $bubble; - - /** - * @param HandlerInterface[] $handlers Array of Handlers. - * @param bool $bubble Whether the messages that are handled can bubble up the stack or not - * - * @throws \InvalidArgumentException if an unsupported handler is set - */ - public function __construct(array $handlers, bool $bubble = true) - { - foreach ($handlers as $handler) { - if (!$handler instanceof HandlerInterface) { - throw new \InvalidArgumentException('The first argument of the GroupHandler must be an array of HandlerInterface instances.'); - } - } - - $this->handlers = $handlers; - $this->bubble = $bubble; - } - - /** - * @inheritDoc - */ - public function isHandling(LogRecord $record): bool - { - foreach ($this->handlers as $handler) { - if ($handler->isHandling($record)) { - return true; - } - } - - return false; - } - - /** - * @inheritDoc - */ - public function handle(LogRecord $record): bool - { - if (\count($this->processors) > 0) { - $record = $this->processRecord($record); - } - - foreach ($this->handlers as $handler) { - $handler->handle(clone $record); - } - - return false === $this->bubble; - } - - /** - * @inheritDoc - */ - public function handleBatch(array $records): void - { - if (\count($this->processors) > 0) { - $processed = []; - foreach ($records as $record) { - $processed[] = $this->processRecord($record); - } - $records = $processed; - } - - foreach ($this->handlers as $handler) { - $handler->handleBatch(array_map(fn ($record) => clone $record, $records)); - } - } - - public function reset(): void - { - $this->resetProcessors(); - - foreach ($this->handlers as $handler) { - if ($handler instanceof ResettableInterface) { - $handler->reset(); - } - } - } - - public function close(): void - { - parent::close(); - - foreach ($this->handlers as $handler) { - $handler->close(); - } - } - - /** - * @inheritDoc - */ - public function setFormatter(FormatterInterface $formatter): HandlerInterface - { - foreach ($this->handlers as $handler) { - if ($handler instanceof FormattableHandlerInterface) { - $handler->setFormatter($formatter); - } - } - - return $this; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/Handler.php b/vendor/monolog/monolog/src/Monolog/Handler/Handler.php deleted file mode 100644 index e89f969b..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/Handler.php +++ /dev/null @@ -1,62 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -/** - * Base Handler class providing basic close() support as well as handleBatch - * - * @author Jordi Boggiano - */ -abstract class Handler implements HandlerInterface -{ - /** - * @inheritDoc - */ - public function handleBatch(array $records): void - { - foreach ($records as $record) { - $this->handle($record); - } - } - - /** - * @inheritDoc - */ - public function close(): void - { - } - - public function __destruct() - { - try { - $this->close(); - } catch (\Throwable $e) { - // do nothing - } - } - - public function __sleep() - { - $this->close(); - - $reflClass = new \ReflectionClass($this); - - $keys = []; - foreach ($reflClass->getProperties() as $reflProp) { - if (!$reflProp->isStatic()) { - $keys[] = $reflProp->getName(); - } - } - - return $keys; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php b/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php deleted file mode 100644 index 83905c32..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\LogRecord; - -/** - * Interface that all Monolog Handlers must implement - * - * @author Jordi Boggiano - */ -interface HandlerInterface -{ - /** - * Checks whether the given record will be handled by this handler. - * - * This is mostly done for performance reasons, to avoid calling processors for nothing. - * - * Handlers should still check the record levels within handle(), returning false in isHandling() - * is no guarantee that handle() will not be called, and isHandling() might not be called - * for a given record. - * - * @param LogRecord $record Partial log record having only a level initialized - */ - public function isHandling(LogRecord $record): bool; - - /** - * Handles a record. - * - * All records may be passed to this method, and the handler should discard - * those that it does not want to handle. - * - * The return value of this function controls the bubbling process of the handler stack. - * Unless the bubbling is interrupted (by returning true), the Logger class will keep on - * calling further handlers in the stack with a given log record. - * - * @param LogRecord $record The record to handle - * @return bool true means that this handler handled the record, and that bubbling is not permitted. - * false means the record was either not processed or that this handler allows bubbling. - */ - public function handle(LogRecord $record): bool; - - /** - * Handles a set of records at once. - * - * @param array $records The records to handle - */ - public function handleBatch(array $records): void; - - /** - * Closes the handler. - * - * Ends a log cycle and frees all resources used by the handler. - * - * Closing a Handler means flushing all buffers and freeing any open resources/handles. - * - * Implementations have to be idempotent (i.e. it should be possible to call close several times without breakage) - * and ideally handlers should be able to reopen themselves on handle() after they have been closed. - * - * This is useful at the end of a request and will be called automatically when the object - * is destroyed if you extend Monolog\Handler\Handler. - * - * If you are thinking of calling this method yourself, most likely you should be - * calling ResettableInterface::reset instead. Have a look. - */ - public function close(): void; -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php b/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php deleted file mode 100644 index 541ec254..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php +++ /dev/null @@ -1,134 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\ResettableInterface; -use Monolog\Formatter\FormatterInterface; -use Monolog\LogRecord; - -/** - * This simple wrapper class can be used to extend handlers functionality. - * - * Example: A custom filtering that can be applied to any handler. - * - * Inherit from this class and override handle() like this: - * - * public function handle(LogRecord $record) - * { - * if ($record meets certain conditions) { - * return false; - * } - * return $this->handler->handle($record); - * } - * - * @author Alexey Karapetov - */ -class HandlerWrapper implements HandlerInterface, ProcessableHandlerInterface, FormattableHandlerInterface, ResettableInterface -{ - protected HandlerInterface $handler; - - public function __construct(HandlerInterface $handler) - { - $this->handler = $handler; - } - - /** - * @inheritDoc - */ - public function isHandling(LogRecord $record): bool - { - return $this->handler->isHandling($record); - } - - /** - * @inheritDoc - */ - public function handle(LogRecord $record): bool - { - return $this->handler->handle($record); - } - - /** - * @inheritDoc - */ - public function handleBatch(array $records): void - { - $this->handler->handleBatch($records); - } - - /** - * @inheritDoc - */ - public function close(): void - { - $this->handler->close(); - } - - /** - * @inheritDoc - */ - public function pushProcessor(callable $callback): HandlerInterface - { - if ($this->handler instanceof ProcessableHandlerInterface) { - $this->handler->pushProcessor($callback); - - return $this; - } - - throw new \LogicException('The wrapped handler does not implement ' . ProcessableHandlerInterface::class); - } - - /** - * @inheritDoc - */ - public function popProcessor(): callable - { - if ($this->handler instanceof ProcessableHandlerInterface) { - return $this->handler->popProcessor(); - } - - throw new \LogicException('The wrapped handler does not implement ' . ProcessableHandlerInterface::class); - } - - /** - * @inheritDoc - */ - public function setFormatter(FormatterInterface $formatter): HandlerInterface - { - if ($this->handler instanceof FormattableHandlerInterface) { - $this->handler->setFormatter($formatter); - - return $this; - } - - throw new \LogicException('The wrapped handler does not implement ' . FormattableHandlerInterface::class); - } - - /** - * @inheritDoc - */ - public function getFormatter(): FormatterInterface - { - if ($this->handler instanceof FormattableHandlerInterface) { - return $this->handler->getFormatter(); - } - - throw new \LogicException('The wrapped handler does not implement ' . FormattableHandlerInterface::class); - } - - public function reset(): void - { - if ($this->handler instanceof ResettableInterface) { - $this->handler->reset(); - } - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php deleted file mode 100644 index 418f2ba0..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php +++ /dev/null @@ -1,75 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\Utils; -use Monolog\LogRecord; - -/** - * IFTTTHandler uses cURL to trigger IFTTT Maker actions - * - * Register a secret key and trigger/event name at https://ifttt.com/maker - * - * value1 will be the channel from monolog's Logger constructor, - * value2 will be the level name (ERROR, WARNING, ..) - * value3 will be the log record's message - * - * @author Nehal Patel - */ -class IFTTTHandler extends AbstractProcessingHandler -{ - private string $eventName; - private string $secretKey; - - /** - * @param string $eventName The name of the IFTTT Maker event that should be triggered - * @param string $secretKey A valid IFTTT secret key - * - * @throws MissingExtensionException If the curl extension is missing - */ - public function __construct(string $eventName, string $secretKey, int|string|Level $level = Level::Error, bool $bubble = true) - { - if (!extension_loaded('curl')) { - throw new MissingExtensionException('The curl extension is needed to use the IFTTTHandler'); - } - - $this->eventName = $eventName; - $this->secretKey = $secretKey; - - parent::__construct($level, $bubble); - } - - /** - * @inheritDoc - */ - public function write(LogRecord $record): void - { - $postData = [ - "value1" => $record->channel, - "value2" => $record["level_name"], - "value3" => $record->message, - ]; - $postString = Utils::jsonEncode($postData); - - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, "https://maker.ifttt.com/trigger/" . $this->eventName . "/with/key/" . $this->secretKey); - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_POSTFIELDS, $postString); - curl_setopt($ch, CURLOPT_HTTPHEADER, [ - "Content-Type: application/json", - ]); - - Curl\Util::execute($ch); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php deleted file mode 100644 index abb2f88f..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php +++ /dev/null @@ -1,74 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\LogRecord; - -/** - * Inspired on LogEntriesHandler. - * - * @author Robert Kaufmann III - * @author Gabriel Machado - */ -class InsightOpsHandler extends SocketHandler -{ - protected string $logToken; - - /** - * @param string $token Log token supplied by InsightOps - * @param string $region Region where InsightOps account is hosted. Could be 'us' or 'eu'. - * @param bool $useSSL Whether or not SSL encryption should be used - * - * @throws MissingExtensionException If SSL encryption is set to true and OpenSSL is missing - */ - public function __construct( - string $token, - string $region = 'us', - bool $useSSL = true, - $level = Level::Debug, - bool $bubble = true, - bool $persistent = false, - float $timeout = 0.0, - float $writingTimeout = 10.0, - ?float $connectionTimeout = null, - ?int $chunkSize = null - ) { - if ($useSSL && !extension_loaded('openssl')) { - throw new MissingExtensionException('The OpenSSL PHP plugin is required to use SSL encrypted connection for InsightOpsHandler'); - } - - $endpoint = $useSSL - ? 'ssl://' . $region . '.data.logs.insight.rapid7.com:443' - : $region . '.data.logs.insight.rapid7.com:80'; - - parent::__construct( - $endpoint, - $level, - $bubble, - $persistent, - $timeout, - $writingTimeout, - $connectionTimeout, - $chunkSize - ); - $this->logToken = $token; - } - - /** - * @inheritDoc - */ - protected function generateDataStream(LogRecord $record): string - { - return $this->logToken . ' ' . $record->formatted; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php deleted file mode 100644 index 00259834..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php +++ /dev/null @@ -1,68 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\LogRecord; - -/** - * @author Robert Kaufmann III - */ -class LogEntriesHandler extends SocketHandler -{ - protected string $logToken; - - /** - * @param string $token Log token supplied by LogEntries - * @param bool $useSSL Whether or not SSL encryption should be used. - * @param string $host Custom hostname to send the data to if needed - * - * @throws MissingExtensionException If SSL encryption is set to true and OpenSSL is missing - */ - public function __construct( - string $token, - bool $useSSL = true, - $level = Level::Debug, - bool $bubble = true, - string $host = 'data.logentries.com', - bool $persistent = false, - float $timeout = 0.0, - float $writingTimeout = 10.0, - ?float $connectionTimeout = null, - ?int $chunkSize = null - ) { - if ($useSSL && !extension_loaded('openssl')) { - throw new MissingExtensionException('The OpenSSL PHP plugin is required to use SSL encrypted connection for LogEntriesHandler'); - } - - $endpoint = $useSSL ? 'ssl://' . $host . ':443' : $host . ':80'; - parent::__construct( - $endpoint, - $level, - $bubble, - $persistent, - $timeout, - $writingTimeout, - $connectionTimeout, - $chunkSize - ); - $this->logToken = $token; - } - - /** - * @inheritDoc - */ - protected function generateDataStream(LogRecord $record): string - { - return $this->logToken . ' ' . $record->formatted; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php deleted file mode 100644 index 6a9a20e0..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php +++ /dev/null @@ -1,157 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\Formatter\FormatterInterface; -use Monolog\Formatter\LogglyFormatter; -use function array_key_exists; -use CurlHandle; -use Monolog\LogRecord; - -/** - * Sends errors to Loggly. - * - * @author Przemek Sobstel - * @author Adam Pancutt - * @author Gregory Barchard - */ -class LogglyHandler extends AbstractProcessingHandler -{ - protected const HOST = 'logs-01.loggly.com'; - protected const ENDPOINT_SINGLE = 'inputs'; - protected const ENDPOINT_BATCH = 'bulk'; - - /** - * Caches the curl handlers for every given endpoint. - * - * @var CurlHandle[] - */ - protected array $curlHandlers = []; - - protected string $token; - - /** @var string[] */ - protected array $tag = []; - - /** - * @param string $token API token supplied by Loggly - * - * @throws MissingExtensionException If the curl extension is missing - */ - public function __construct(string $token, int|string|Level $level = Level::Debug, bool $bubble = true) - { - if (!extension_loaded('curl')) { - throw new MissingExtensionException('The curl extension is needed to use the LogglyHandler'); - } - - $this->token = $token; - - parent::__construct($level, $bubble); - } - - /** - * Loads and returns the shared curl handler for the given endpoint. - */ - protected function getCurlHandler(string $endpoint): CurlHandle - { - if (!array_key_exists($endpoint, $this->curlHandlers)) { - $this->curlHandlers[$endpoint] = $this->loadCurlHandle($endpoint); - } - - return $this->curlHandlers[$endpoint]; - } - - /** - * Starts a fresh curl session for the given endpoint and returns its handler. - */ - private function loadCurlHandle(string $endpoint): CurlHandle - { - $url = sprintf("https://%s/%s/%s/", static::HOST, $endpoint, $this->token); - - $ch = curl_init(); - - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - - return $ch; - } - - /** - * @param string[]|string $tag - * @return $this - */ - public function setTag(string|array $tag): self - { - if ('' === $tag || [] === $tag) { - $this->tag = []; - } else { - $this->tag = is_array($tag) ? $tag : [$tag]; - } - - return $this; - } - - /** - * @param string[]|string $tag - * @return $this - */ - public function addTag(string|array $tag): self - { - if ('' !== $tag) { - $tag = is_array($tag) ? $tag : [$tag]; - $this->tag = array_unique(array_merge($this->tag, $tag)); - } - - return $this; - } - - protected function write(LogRecord $record): void - { - $this->send($record->formatted, static::ENDPOINT_SINGLE); - } - - public function handleBatch(array $records): void - { - $level = $this->level; - - $records = array_filter($records, function ($record) use ($level) { - return ($record->level->value >= $level->value); - }); - - if (\count($records) > 0) { - $this->send($this->getFormatter()->formatBatch($records), static::ENDPOINT_BATCH); - } - } - - protected function send(string $data, string $endpoint): void - { - $ch = $this->getCurlHandler($endpoint); - - $headers = ['Content-Type: application/json']; - - if (\count($this->tag) > 0) { - $headers[] = 'X-LOGGLY-TAG: '.implode(',', $this->tag); - } - - curl_setopt($ch, CURLOPT_POSTFIELDS, $data); - curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); - - Curl\Util::execute($ch, 5, false); - } - - protected function getDefaultFormatter(): FormatterInterface - { - return new LogglyFormatter(); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/LogmaticHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/LogmaticHandler.php deleted file mode 100644 index 876b1a95..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/LogmaticHandler.php +++ /dev/null @@ -1,98 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\Formatter\FormatterInterface; -use Monolog\Formatter\LogmaticFormatter; -use Monolog\LogRecord; - -/** - * @author Julien Breux - */ -class LogmaticHandler extends SocketHandler -{ - private string $logToken; - - private string $hostname; - - private string $appName; - - /** - * @param string $token Log token supplied by Logmatic. - * @param string $hostname Host name supplied by Logmatic. - * @param string $appName Application name supplied by Logmatic. - * @param bool $useSSL Whether or not SSL encryption should be used. - * - * @throws MissingExtensionException If SSL encryption is set to true and OpenSSL is missing - */ - public function __construct( - string $token, - string $hostname = '', - string $appName = '', - bool $useSSL = true, - $level = Level::Debug, - bool $bubble = true, - bool $persistent = false, - float $timeout = 0.0, - float $writingTimeout = 10.0, - ?float $connectionTimeout = null, - ?int $chunkSize = null - ) { - if ($useSSL && !extension_loaded('openssl')) { - throw new MissingExtensionException('The OpenSSL PHP extension is required to use SSL encrypted connection for LogmaticHandler'); - } - - $endpoint = $useSSL ? 'ssl://api.logmatic.io:10515' : 'api.logmatic.io:10514'; - $endpoint .= '/v1/'; - - parent::__construct( - $endpoint, - $level, - $bubble, - $persistent, - $timeout, - $writingTimeout, - $connectionTimeout, - $chunkSize - ); - - $this->logToken = $token; - $this->hostname = $hostname; - $this->appName = $appName; - } - - /** - * @inheritDoc - */ - protected function generateDataStream(LogRecord $record): string - { - return $this->logToken . ' ' . $record->formatted; - } - - /** - * @inheritDoc - */ - protected function getDefaultFormatter(): FormatterInterface - { - $formatter = new LogmaticFormatter(); - - if ($this->hostname !== '') { - $formatter->setHostname($this->hostname); - } - if ($this->appName !== '') { - $formatter->setAppName($this->appName); - } - - return $formatter; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php deleted file mode 100644 index b6c82277..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php +++ /dev/null @@ -1,91 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Formatter\FormatterInterface; -use Monolog\Formatter\HtmlFormatter; -use Monolog\LogRecord; - -/** - * Base class for all mail handlers - * - * @author Gyula Sallai - */ -abstract class MailHandler extends AbstractProcessingHandler -{ - /** - * @inheritDoc - */ - public function handleBatch(array $records): void - { - $messages = []; - - foreach ($records as $record) { - if ($record->level->isLowerThan($this->level)) { - continue; - } - - $message = $this->processRecord($record); - $messages[] = $message; - } - - if (\count($messages) > 0) { - $this->send((string) $this->getFormatter()->formatBatch($messages), $messages); - } - } - - /** - * Send a mail with the given content - * - * @param string $content formatted email body to be sent - * @param array $records the array of log records that formed this content - * - * @phpstan-param non-empty-array $records - */ - abstract protected function send(string $content, array $records): void; - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - $this->send((string) $record->formatted, [$record]); - } - - /** - * @phpstan-param non-empty-array $records - */ - protected function getHighestRecord(array $records): LogRecord - { - $highestRecord = null; - foreach ($records as $record) { - if ($highestRecord === null || $record->level->isHigherThan($highestRecord->level)) { - $highestRecord = $record; - } - } - - return $highestRecord; - } - - protected function isHtmlBody(string $body): bool - { - return ($body[0] ?? null) === '<'; - } - - /** - * Gets the default formatter. - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new HtmlFormatter(); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php deleted file mode 100644 index 64e16c9d..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php +++ /dev/null @@ -1,83 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Swift; -use Swift_Message; - -/** - * MandrillHandler uses cURL to send the emails to the Mandrill API - * - * @author Adam Nicholson - */ -class MandrillHandler extends MailHandler -{ - protected Swift_Message $message; - protected string $apiKey; - - /** - * @phpstan-param (Swift_Message|callable(): Swift_Message) $message - * - * @param string $apiKey A valid Mandrill API key - * @param callable|Swift_Message $message An example message for real messages, only the body will be replaced - * - * @throws \InvalidArgumentException if not a Swift Message is set - */ - public function __construct(string $apiKey, callable|Swift_Message $message, int|string|Level $level = Level::Error, bool $bubble = true) - { - parent::__construct($level, $bubble); - - if (!$message instanceof Swift_Message) { - $message = $message(); - } - if (!$message instanceof Swift_Message) { - throw new \InvalidArgumentException('You must provide either a Swift_Message instance or a callable returning it'); - } - $this->message = $message; - $this->apiKey = $apiKey; - } - - /** - * @inheritDoc - */ - protected function send(string $content, array $records): void - { - $mime = 'text/plain'; - if ($this->isHtmlBody($content)) { - $mime = 'text/html'; - } - - $message = clone $this->message; - $message->setBody($content, $mime); - /** @phpstan-ignore-next-line */ - if (version_compare(Swift::VERSION, '6.0.0', '>=')) { - $message->setDate(new \DateTimeImmutable()); - } else { - /** @phpstan-ignore-next-line */ - $message->setDate(time()); - } - - $ch = curl_init(); - - curl_setopt($ch, CURLOPT_URL, 'https://mandrillapp.com/api/1.0/messages/send-raw.json'); - curl_setopt($ch, CURLOPT_POST, 1); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([ - 'key' => $this->apiKey, - 'raw_message' => (string) $message, - 'async' => false, - ])); - - Curl\Util::execute($ch); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php b/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php deleted file mode 100644 index 3965aeea..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -/** - * Exception can be thrown if an extension for a handler is missing - * - * @author Christian Bergau - */ -class MissingExtensionException extends \Exception -{ -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php deleted file mode 100644 index 33ab68c6..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php +++ /dev/null @@ -1,82 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use MongoDB\Driver\BulkWrite; -use MongoDB\Driver\Manager; -use MongoDB\Client; -use Monolog\Level; -use Monolog\Formatter\FormatterInterface; -use Monolog\Formatter\MongoDBFormatter; -use Monolog\LogRecord; - -/** - * Logs to a MongoDB database. - * - * Usage example: - * - * $log = new \Monolog\Logger('application'); - * $client = new \MongoDB\Client('mongodb://localhost:27017'); - * $mongodb = new \Monolog\Handler\MongoDBHandler($client, 'logs', 'prod'); - * $log->pushHandler($mongodb); - * - * The above examples uses the MongoDB PHP library's client class; however, the - * MongoDB\Driver\Manager class from ext-mongodb is also supported. - */ -class MongoDBHandler extends AbstractProcessingHandler -{ - private \MongoDB\Collection $collection; - - private Client|Manager $manager; - - private string|null $namespace = null; - - /** - * Constructor. - * - * @param Client|Manager $mongodb MongoDB library or driver client - * @param string $database Database name - * @param string $collection Collection name - */ - public function __construct(Client|Manager $mongodb, string $database, string $collection, int|string|Level $level = Level::Debug, bool $bubble = true) - { - if ($mongodb instanceof Client) { - $this->collection = $mongodb->selectCollection($database, $collection); - } else { - $this->manager = $mongodb; - $this->namespace = $database . '.' . $collection; - } - - parent::__construct($level, $bubble); - } - - protected function write(LogRecord $record): void - { - if (isset($this->collection)) { - $this->collection->insertOne($record->formatted); - } - - if (isset($this->manager, $this->namespace)) { - $bulk = new BulkWrite; - $bulk->insert($record->formatted); - $this->manager->executeBulkWrite($this->namespace, $bulk); - } - } - - /** - * @inheritDoc - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new MongoDBFormatter; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php deleted file mode 100644 index 70d6004e..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php +++ /dev/null @@ -1,173 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\Formatter\LineFormatter; - -/** - * NativeMailerHandler uses the mail() function to send the emails - * - * @author Christophe Coevoet - * @author Mark Garrett - */ -class NativeMailerHandler extends MailHandler -{ - /** - * The email addresses to which the message will be sent - * @var string[] - */ - protected array $to; - - /** - * The subject of the email - */ - protected string $subject; - - /** - * Optional headers for the message - * @var string[] - */ - protected array $headers = []; - - /** - * Optional parameters for the message - * @var string[] - */ - protected array $parameters = []; - - /** - * The wordwrap length for the message - */ - protected int $maxColumnWidth; - - /** - * The Content-type for the message - */ - protected string|null $contentType = null; - - /** - * The encoding for the message - */ - protected string $encoding = 'utf-8'; - - /** - * @param string|string[] $to The receiver of the mail - * @param string $subject The subject of the mail - * @param string $from The sender of the mail - * @param int $maxColumnWidth The maximum column width that the message lines will have - */ - public function __construct(string|array $to, string $subject, string $from, int|string|Level $level = Level::Error, bool $bubble = true, int $maxColumnWidth = 70) - { - parent::__construct($level, $bubble); - $this->to = (array) $to; - $this->subject = $subject; - $this->addHeader(sprintf('From: %s', $from)); - $this->maxColumnWidth = $maxColumnWidth; - } - - /** - * Add headers to the message - * - * @param string|string[] $headers Custom added headers - * @return $this - */ - public function addHeader($headers): self - { - foreach ((array) $headers as $header) { - if (strpos($header, "\n") !== false || strpos($header, "\r") !== false) { - throw new \InvalidArgumentException('Headers can not contain newline characters for security reasons'); - } - $this->headers[] = $header; - } - - return $this; - } - - /** - * Add parameters to the message - * - * @param string|string[] $parameters Custom added parameters - * @return $this - */ - public function addParameter($parameters): self - { - $this->parameters = array_merge($this->parameters, (array) $parameters); - - return $this; - } - - /** - * @inheritDoc - */ - protected function send(string $content, array $records): void - { - $contentType = $this->getContentType() ?? ($this->isHtmlBody($content) ? 'text/html' : 'text/plain'); - - if ($contentType !== 'text/html') { - $content = wordwrap($content, $this->maxColumnWidth); - } - - $headers = ltrim(implode("\r\n", $this->headers) . "\r\n", "\r\n"); - $headers .= 'Content-type: ' . $contentType . '; charset=' . $this->getEncoding() . "\r\n"; - if ($contentType === 'text/html' && false === strpos($headers, 'MIME-Version:')) { - $headers .= 'MIME-Version: 1.0' . "\r\n"; - } - - $subjectFormatter = new LineFormatter($this->subject); - $subject = $subjectFormatter->format($this->getHighestRecord($records)); - - $parameters = implode(' ', $this->parameters); - foreach ($this->to as $to) { - mail($to, $subject, $content, $headers, $parameters); - } - } - - public function getContentType(): ?string - { - return $this->contentType; - } - - public function getEncoding(): string - { - return $this->encoding; - } - - /** - * @param string $contentType The content type of the email - Defaults to text/plain. Use text/html for HTML messages. - * @return $this - */ - public function setContentType(string $contentType): self - { - if (strpos($contentType, "\n") !== false || strpos($contentType, "\r") !== false) { - throw new \InvalidArgumentException('The content type can not contain newline characters to prevent email header injection'); - } - - $this->contentType = $contentType; - - return $this; - } - - /** - * @return $this - */ - public function setEncoding(string $encoding): self - { - if (strpos($encoding, "\n") !== false || strpos($encoding, "\r") !== false) { - throw new \InvalidArgumentException('The encoding can not contain newline characters to prevent email header injection'); - } - - $this->encoding = $encoding; - - return $this; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php deleted file mode 100644 index b8cb3785..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php +++ /dev/null @@ -1,180 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\Utils; -use Monolog\Formatter\NormalizerFormatter; -use Monolog\Formatter\FormatterInterface; -use Monolog\LogRecord; - -/** - * Class to record a log on a NewRelic application. - * Enabling New Relic High Security mode may prevent capture of useful information. - * - * This handler requires a NormalizerFormatter to function and expects an array in $record->formatted - * - * @see https://docs.newrelic.com/docs/agents/php-agent - * @see https://docs.newrelic.com/docs/accounts-partnerships/accounts/security/high-security - */ -class NewRelicHandler extends AbstractProcessingHandler -{ - /** - * @inheritDoc - */ - public function __construct( - int|string|Level $level = Level::Error, - bool $bubble = true, - - /** - * Name of the New Relic application that will receive logs from this handler. - */ - protected string|null $appName = null, - - /** - * Some context and extra data is passed into the handler as arrays of values. Do we send them as is - * (useful if we are using the API), or explode them for display on the NewRelic RPM website? - */ - protected bool $explodeArrays = false, - - /** - * Name of the current transaction - */ - protected string|null $transactionName = null - ) { - parent::__construct($level, $bubble); - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - if (!$this->isNewRelicEnabled()) { - throw new MissingExtensionException('The newrelic PHP extension is required to use the NewRelicHandler'); - } - - if (null !== ($appName = $this->getAppName($record->context))) { - $this->setNewRelicAppName($appName); - } - - if (null !== ($transactionName = $this->getTransactionName($record->context))) { - $this->setNewRelicTransactionName($transactionName); - unset($record->formatted['context']['transaction_name']); - } - - if (isset($record->context['exception']) && $record->context['exception'] instanceof \Throwable) { - newrelic_notice_error($record->message, $record->context['exception']); - unset($record->formatted['context']['exception']); - } else { - newrelic_notice_error($record->message); - } - - if (isset($record->formatted['context']) && is_array($record->formatted['context'])) { - foreach ($record->formatted['context'] as $key => $parameter) { - if (is_array($parameter) && $this->explodeArrays) { - foreach ($parameter as $paramKey => $paramValue) { - $this->setNewRelicParameter('context_' . $key . '_' . $paramKey, $paramValue); - } - } else { - $this->setNewRelicParameter('context_' . $key, $parameter); - } - } - } - - if (isset($record->formatted['extra']) && is_array($record->formatted['extra'])) { - foreach ($record->formatted['extra'] as $key => $parameter) { - if (is_array($parameter) && $this->explodeArrays) { - foreach ($parameter as $paramKey => $paramValue) { - $this->setNewRelicParameter('extra_' . $key . '_' . $paramKey, $paramValue); - } - } else { - $this->setNewRelicParameter('extra_' . $key, $parameter); - } - } - } - } - - /** - * Checks whether the NewRelic extension is enabled in the system. - */ - protected function isNewRelicEnabled(): bool - { - return extension_loaded('newrelic'); - } - - /** - * Returns the appname where this log should be sent. Each log can override the default appname, set in this - * handler's constructor, by providing the appname in it's context. - * - * @param mixed[] $context - */ - protected function getAppName(array $context): ?string - { - if (isset($context['appname'])) { - return $context['appname']; - } - - return $this->appName; - } - - /** - * Returns the name of the current transaction. Each log can override the default transaction name, set in this - * handler's constructor, by providing the transaction_name in it's context - * - * @param mixed[] $context - */ - protected function getTransactionName(array $context): ?string - { - if (isset($context['transaction_name'])) { - return $context['transaction_name']; - } - - return $this->transactionName; - } - - /** - * Sets the NewRelic application that should receive this log. - */ - protected function setNewRelicAppName(string $appName): void - { - newrelic_set_appname($appName); - } - - /** - * Overwrites the name of the current transaction - */ - protected function setNewRelicTransactionName(string $transactionName): void - { - newrelic_name_transaction($transactionName); - } - - /** - * @param mixed $value - */ - protected function setNewRelicParameter(string $key, $value): void - { - if (null === $value || is_scalar($value)) { - newrelic_add_custom_parameter($key, $value); - } else { - newrelic_add_custom_parameter($key, Utils::jsonEncode($value, null, true)); - } - } - - /** - * @inheritDoc - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new NormalizerFormatter(); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/NoopHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/NoopHandler.php deleted file mode 100644 index d9fea180..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/NoopHandler.php +++ /dev/null @@ -1,42 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\LogRecord; - -/** - * No-op - * - * This handler handles anything, but does nothing, and does not stop bubbling to the rest of the stack. - * This can be used for testing, or to disable a handler when overriding a configuration without - * influencing the rest of the stack. - * - * @author Roel Harbers - */ -class NoopHandler extends Handler -{ - /** - * @inheritDoc - */ - public function isHandling(LogRecord $record): bool - { - return true; - } - - /** - * @inheritDoc - */ - public function handle(LogRecord $record): bool - { - return false; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php deleted file mode 100644 index 1aa84e4f..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Psr\Log\LogLevel; -use Monolog\Logger; -use Monolog\LogRecord; - -/** - * Blackhole - * - * Any record it can handle will be thrown away. This can be used - * to put on top of an existing stack to override it temporarily. - * - * @author Jordi Boggiano - */ -class NullHandler extends Handler -{ - private Level $level; - - /** - * @param string|int|Level $level The minimum logging level at which this handler will be triggered - * - * @phpstan-param value-of|value-of|Level|LogLevel::* $level - */ - public function __construct(string|int|Level $level = Level::Debug) - { - $this->level = Logger::toMonologLevel($level); - } - - /** - * @inheritDoc - */ - public function isHandling(LogRecord $record): bool - { - return $record->level->value >= $this->level->value; - } - - /** - * @inheritDoc - */ - public function handle(LogRecord $record): bool - { - return $record->level->value >= $this->level->value; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/OverflowHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/OverflowHandler.php deleted file mode 100644 index a72b7a11..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/OverflowHandler.php +++ /dev/null @@ -1,139 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\Formatter\FormatterInterface; -use Monolog\LogRecord; - -/** - * Handler to only pass log messages when a certain threshold of number of messages is reached. - * - * This can be useful in cases of processing a batch of data, but you're for example only interested - * in case it fails catastrophically instead of a warning for 1 or 2 events. Worse things can happen, right? - * - * Usage example: - * - * ``` - * $log = new Logger('application'); - * $handler = new SomeHandler(...) - * - * // Pass all warnings to the handler when more than 10 & all error messages when more then 5 - * $overflow = new OverflowHandler($handler, [Level::Warning->value => 10, Level::Error->value => 5]); - * - * $log->pushHandler($overflow); - *``` - * - * @author Kris Buist - */ -class OverflowHandler extends AbstractHandler implements FormattableHandlerInterface -{ - private HandlerInterface $handler; - - /** @var array */ - private array $thresholdMap = []; - - /** - * Buffer of all messages passed to the handler before the threshold was reached - * - * @var mixed[][] - */ - private array $buffer = []; - - /** - * @param array $thresholdMap Dictionary of log level value => threshold - */ - public function __construct( - HandlerInterface $handler, - array $thresholdMap = [], - $level = Level::Debug, - bool $bubble = true - ) { - $this->handler = $handler; - foreach ($thresholdMap as $thresholdLevel => $threshold) { - $this->thresholdMap[$thresholdLevel] = $threshold; - } - parent::__construct($level, $bubble); - } - - /** - * Handles a record. - * - * All records may be passed to this method, and the handler should discard - * those that it does not want to handle. - * - * The return value of this function controls the bubbling process of the handler stack. - * Unless the bubbling is interrupted (by returning true), the Logger class will keep on - * calling further handlers in the stack with a given log record. - * - * @inheritDoc - */ - public function handle(LogRecord $record): bool - { - if ($record->level->isLowerThan($this->level)) { - return false; - } - - $level = $record->level->value; - - if (!isset($this->thresholdMap[$level])) { - $this->thresholdMap[$level] = 0; - } - - if ($this->thresholdMap[$level] > 0) { - // The overflow threshold is not yet reached, so we're buffering the record and lowering the threshold by 1 - $this->thresholdMap[$level]--; - $this->buffer[$level][] = $record; - - return false === $this->bubble; - } - - if ($this->thresholdMap[$level] == 0) { - // This current message is breaking the threshold. Flush the buffer and continue handling the current record - foreach ($this->buffer[$level] ?? [] as $buffered) { - $this->handler->handle($buffered); - } - $this->thresholdMap[$level]--; - unset($this->buffer[$level]); - } - - $this->handler->handle($record); - - return false === $this->bubble; - } - - /** - * @inheritDoc - */ - public function setFormatter(FormatterInterface $formatter): HandlerInterface - { - if ($this->handler instanceof FormattableHandlerInterface) { - $this->handler->setFormatter($formatter); - - return $this; - } - - throw new \UnexpectedValueException('The nested handler of type '.get_class($this->handler).' does not support formatters.'); - } - - /** - * @inheritDoc - */ - public function getFormatter(): FormatterInterface - { - if ($this->handler instanceof FormattableHandlerInterface) { - return $this->handler->getFormatter(); - } - - throw new \UnexpectedValueException('The nested handler of type '.get_class($this->handler).' does not support formatters.'); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php deleted file mode 100644 index 8aa78e4c..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php +++ /dev/null @@ -1,303 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Formatter\LineFormatter; -use Monolog\Formatter\FormatterInterface; -use Monolog\Level; -use Monolog\Utils; -use PhpConsole\Connector; -use PhpConsole\Handler as VendorPhpConsoleHandler; -use PhpConsole\Helper; -use Monolog\LogRecord; -use PhpConsole\Storage; - -/** - * Monolog handler for Google Chrome extension "PHP Console" - * - * Display PHP error/debug log messages in Google Chrome console and notification popups, executes PHP code remotely - * - * Usage: - * 1. Install Google Chrome extension [now dead and removed from the chrome store] - * 2. See overview https://github.com/barbushin/php-console#overview - * 3. Install PHP Console library https://github.com/barbushin/php-console#installation - * 4. Example (result will looks like http://i.hizliresim.com/vg3Pz4.png) - * - * $logger = new \Monolog\Logger('all', array(new \Monolog\Handler\PHPConsoleHandler())); - * \Monolog\ErrorHandler::register($logger); - * echo $undefinedVar; - * $logger->debug('SELECT * FROM users', array('db', 'time' => 0.012)); - * PC::debug($_SERVER); // PHP Console debugger for any type of vars - * - * @author Sergey Barbushin https://www.linkedin.com/in/barbushin - * @phpstan-type Options array{ - * enabled: bool, - * classesPartialsTraceIgnore: string[], - * debugTagsKeysInContext: array, - * useOwnErrorsHandler: bool, - * useOwnExceptionsHandler: bool, - * sourcesBasePath: string|null, - * registerHelper: bool, - * serverEncoding: string|null, - * headersLimit: int|null, - * password: string|null, - * enableSslOnlyMode: bool, - * ipMasks: string[], - * enableEvalListener: bool, - * dumperDetectCallbacks: bool, - * dumperLevelLimit: int, - * dumperItemsCountLimit: int, - * dumperItemSizeLimit: int, - * dumperDumpSizeLimit: int, - * detectDumpTraceAndSource: bool, - * dataStorage: Storage|null - * } - * @phpstan-type InputOptions array{ - * enabled?: bool, - * classesPartialsTraceIgnore?: string[], - * debugTagsKeysInContext?: array, - * useOwnErrorsHandler?: bool, - * useOwnExceptionsHandler?: bool, - * sourcesBasePath?: string|null, - * registerHelper?: bool, - * serverEncoding?: string|null, - * headersLimit?: int|null, - * password?: string|null, - * enableSslOnlyMode?: bool, - * ipMasks?: string[], - * enableEvalListener?: bool, - * dumperDetectCallbacks?: bool, - * dumperLevelLimit?: int, - * dumperItemsCountLimit?: int, - * dumperItemSizeLimit?: int, - * dumperDumpSizeLimit?: int, - * detectDumpTraceAndSource?: bool, - * dataStorage?: Storage|null - * } - * - * @deprecated Since 2.8.0 and 3.2.0, PHPConsole is abandoned and thus we will drop this handler in Monolog 4 - */ -class PHPConsoleHandler extends AbstractProcessingHandler -{ - /** - * @phpstan-var Options - */ - private array $options = [ - 'enabled' => true, // bool Is PHP Console server enabled - 'classesPartialsTraceIgnore' => ['Monolog\\'], // array Hide calls of classes started with... - 'debugTagsKeysInContext' => [0, 'tag'], // bool Is PHP Console server enabled - 'useOwnErrorsHandler' => false, // bool Enable errors handling - 'useOwnExceptionsHandler' => false, // bool Enable exceptions handling - 'sourcesBasePath' => null, // string Base path of all project sources to strip in errors source paths - 'registerHelper' => true, // bool Register PhpConsole\Helper that allows short debug calls like PC::debug($var, 'ta.g.s') - 'serverEncoding' => null, // string|null Server internal encoding - 'headersLimit' => null, // int|null Set headers size limit for your web-server - 'password' => null, // string|null Protect PHP Console connection by password - 'enableSslOnlyMode' => false, // bool Force connection by SSL for clients with PHP Console installed - 'ipMasks' => [], // array Set IP masks of clients that will be allowed to connect to PHP Console: array('192.168.*.*', '127.0.0.1') - 'enableEvalListener' => false, // bool Enable eval request to be handled by eval dispatcher(if enabled, 'password' option is also required) - 'dumperDetectCallbacks' => false, // bool Convert callback items in dumper vars to (callback SomeClass::someMethod) strings - 'dumperLevelLimit' => 5, // int Maximum dumped vars array or object nested dump level - 'dumperItemsCountLimit' => 100, // int Maximum dumped var same level array items or object properties number - 'dumperItemSizeLimit' => 5000, // int Maximum length of any string or dumped array item - 'dumperDumpSizeLimit' => 500000, // int Maximum approximate size of dumped vars result formatted in JSON - 'detectDumpTraceAndSource' => false, // bool Autodetect and append trace data to debug - 'dataStorage' => null, // \PhpConsole\Storage|null Fixes problem with custom $_SESSION handler(see http://goo.gl/Ne8juJ) - ]; - - private Connector $connector; - - /** - * @param array $options See \Monolog\Handler\PHPConsoleHandler::$options for more details - * @param Connector|null $connector Instance of \PhpConsole\Connector class (optional) - * @throws \RuntimeException - * @phpstan-param InputOptions $options - */ - public function __construct(array $options = [], ?Connector $connector = null, int|string|Level $level = Level::Debug, bool $bubble = true) - { - if (!class_exists('PhpConsole\Connector')) { - throw new \RuntimeException('PHP Console library not found. See https://github.com/barbushin/php-console#installation'); - } - parent::__construct($level, $bubble); - $this->options = $this->initOptions($options); - $this->connector = $this->initConnector($connector); - } - - /** - * @param array $options - * @return array - * - * @phpstan-param InputOptions $options - * @phpstan-return Options - */ - private function initOptions(array $options): array - { - $wrongOptions = array_diff(array_keys($options), array_keys($this->options)); - if (\count($wrongOptions) > 0) { - throw new \RuntimeException('Unknown options: ' . implode(', ', $wrongOptions)); - } - - return array_replace($this->options, $options); - } - - private function initConnector(?Connector $connector = null): Connector - { - if (null === $connector) { - if ($this->options['dataStorage'] instanceof Storage) { - Connector::setPostponeStorage($this->options['dataStorage']); - } - $connector = Connector::getInstance(); - } - - if ($this->options['registerHelper'] && !Helper::isRegistered()) { - Helper::register(); - } - - if ($this->options['enabled'] && $connector->isActiveClient()) { - if ($this->options['useOwnErrorsHandler'] || $this->options['useOwnExceptionsHandler']) { - $handler = VendorPhpConsoleHandler::getInstance(); - $handler->setHandleErrors($this->options['useOwnErrorsHandler']); - $handler->setHandleExceptions($this->options['useOwnExceptionsHandler']); - $handler->start(); - } - if (null !== $this->options['sourcesBasePath']) { - $connector->setSourcesBasePath($this->options['sourcesBasePath']); - } - if (null !== $this->options['serverEncoding']) { - $connector->setServerEncoding($this->options['serverEncoding']); - } - if (null !== $this->options['password']) { - $connector->setPassword($this->options['password']); - } - if ($this->options['enableSslOnlyMode']) { - $connector->enableSslOnlyMode(); - } - if (\count($this->options['ipMasks']) > 0) { - $connector->setAllowedIpMasks($this->options['ipMasks']); - } - if (null !== $this->options['headersLimit'] && $this->options['headersLimit'] > 0) { - $connector->setHeadersLimit($this->options['headersLimit']); - } - if ($this->options['detectDumpTraceAndSource']) { - $connector->getDebugDispatcher()->detectTraceAndSource = true; - } - $dumper = $connector->getDumper(); - $dumper->levelLimit = $this->options['dumperLevelLimit']; - $dumper->itemsCountLimit = $this->options['dumperItemsCountLimit']; - $dumper->itemSizeLimit = $this->options['dumperItemSizeLimit']; - $dumper->dumpSizeLimit = $this->options['dumperDumpSizeLimit']; - $dumper->detectCallbacks = $this->options['dumperDetectCallbacks']; - if ($this->options['enableEvalListener']) { - $connector->startEvalRequestsListener(); - } - } - - return $connector; - } - - public function getConnector(): Connector - { - return $this->connector; - } - - /** - * @return array - */ - public function getOptions(): array - { - return $this->options; - } - - public function handle(LogRecord $record): bool - { - if ($this->options['enabled'] && $this->connector->isActiveClient()) { - return parent::handle($record); - } - - return !$this->bubble; - } - - /** - * Writes the record down to the log of the implementing handler - */ - protected function write(LogRecord $record): void - { - if ($record->level->isLowerThan(Level::Notice)) { - $this->handleDebugRecord($record); - } elseif (isset($record->context['exception']) && $record->context['exception'] instanceof \Throwable) { - $this->handleExceptionRecord($record); - } else { - $this->handleErrorRecord($record); - } - } - - private function handleDebugRecord(LogRecord $record): void - { - [$tags, $filteredContext] = $this->getRecordTags($record); - $message = $record->message; - if (\count($filteredContext) > 0) { - $message .= ' ' . Utils::jsonEncode($this->connector->getDumper()->dump(array_filter($filteredContext)), null, true); - } - $this->connector->getDebugDispatcher()->dispatchDebug($message, $tags, $this->options['classesPartialsTraceIgnore']); - } - - private function handleExceptionRecord(LogRecord $record): void - { - $this->connector->getErrorsDispatcher()->dispatchException($record->context['exception']); - } - - private function handleErrorRecord(LogRecord $record): void - { - $context = $record->context; - - $this->connector->getErrorsDispatcher()->dispatchError( - $context['code'] ?? null, - $context['message'] ?? $record->message, - $context['file'] ?? null, - $context['line'] ?? null, - $this->options['classesPartialsTraceIgnore'] - ); - } - - /** - * @return array{string, mixed[]} - */ - private function getRecordTags(LogRecord $record): array - { - $tags = null; - $filteredContext = []; - if ($record->context !== []) { - $filteredContext = $record->context; - foreach ($this->options['debugTagsKeysInContext'] as $key) { - if (isset($filteredContext[$key])) { - $tags = $filteredContext[$key]; - if ($key === 0) { - array_shift($filteredContext); - } else { - unset($filteredContext[$key]); - } - break; - } - } - } - - return [$tags ?? $record->level->toPsrLogLevel(), $filteredContext]; - } - - /** - * @inheritDoc - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new LineFormatter('%message%'); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ProcessHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/ProcessHandler.php deleted file mode 100644 index 9edc9ac5..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/ProcessHandler.php +++ /dev/null @@ -1,186 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\LogRecord; - -/** - * Stores to STDIN of any process, specified by a command. - * - * Usage example: - *
    - * $log = new Logger('myLogger');
    - * $log->pushHandler(new ProcessHandler('/usr/bin/php /var/www/monolog/someScript.php'));
    - * 
    - * - * @author Kolja Zuelsdorf - */ -class ProcessHandler extends AbstractProcessingHandler -{ - /** - * Holds the process to receive data on its STDIN. - * - * @var resource|bool|null - */ - private $process; - - private string $command; - - private ?string $cwd; - - /** - * @var resource[] - */ - private array $pipes = []; - - /** - * @var array - */ - protected const DESCRIPTOR_SPEC = [ - 0 => ['pipe', 'r'], // STDIN is a pipe that the child will read from - 1 => ['pipe', 'w'], // STDOUT is a pipe that the child will write to - 2 => ['pipe', 'w'], // STDERR is a pipe to catch the any errors - ]; - - /** - * @param string $command Command for the process to start. Absolute paths are recommended, - * especially if you do not use the $cwd parameter. - * @param string|null $cwd "Current working directory" (CWD) for the process to be executed in. - * @throws \InvalidArgumentException - */ - public function __construct(string $command, int|string|Level $level = Level::Debug, bool $bubble = true, ?string $cwd = null) - { - if ($command === '') { - throw new \InvalidArgumentException('The command argument must be a non-empty string.'); - } - if ($cwd === '') { - throw new \InvalidArgumentException('The optional CWD argument must be a non-empty string or null.'); - } - - parent::__construct($level, $bubble); - - $this->command = $command; - $this->cwd = $cwd; - } - - /** - * Writes the record down to the log of the implementing handler - * - * @throws \UnexpectedValueException - */ - protected function write(LogRecord $record): void - { - $this->ensureProcessIsStarted(); - - $this->writeProcessInput($record->formatted); - - $errors = $this->readProcessErrors(); - if ($errors !== '') { - throw new \UnexpectedValueException(sprintf('Errors while writing to process: %s', $errors)); - } - } - - /** - * Makes sure that the process is actually started, and if not, starts it, - * assigns the stream pipes, and handles startup errors, if any. - */ - private function ensureProcessIsStarted(): void - { - if (is_resource($this->process) === false) { - $this->startProcess(); - - $this->handleStartupErrors(); - } - } - - /** - * Starts the actual process and sets all streams to non-blocking. - */ - private function startProcess(): void - { - $this->process = proc_open($this->command, static::DESCRIPTOR_SPEC, $this->pipes, $this->cwd); - - foreach ($this->pipes as $pipe) { - stream_set_blocking($pipe, false); - } - } - - /** - * Selects the STDERR stream, handles upcoming startup errors, and throws an exception, if any. - * - * @throws \UnexpectedValueException - */ - private function handleStartupErrors(): void - { - $selected = $this->selectErrorStream(); - if (false === $selected) { - throw new \UnexpectedValueException('Something went wrong while selecting a stream.'); - } - - $errors = $this->readProcessErrors(); - - if (is_resource($this->process) === false || $errors !== '') { - throw new \UnexpectedValueException( - sprintf('The process "%s" could not be opened: ' . $errors, $this->command) - ); - } - } - - /** - * Selects the STDERR stream. - * - * @return int|bool - */ - protected function selectErrorStream() - { - $empty = []; - $errorPipes = [$this->pipes[2]]; - - return stream_select($errorPipes, $empty, $empty, 1); - } - - /** - * Reads the errors of the process, if there are any. - * - * @codeCoverageIgnore - * @return string Empty string if there are no errors. - */ - protected function readProcessErrors(): string - { - return (string) stream_get_contents($this->pipes[2]); - } - - /** - * Writes to the input stream of the opened process. - * - * @codeCoverageIgnore - */ - protected function writeProcessInput(string $string): void - { - fwrite($this->pipes[0], $string); - } - - /** - * @inheritDoc - */ - public function close(): void - { - if (is_resource($this->process)) { - foreach ($this->pipes as $pipe) { - fclose($pipe); - } - proc_close($this->process); - $this->process = null; - } - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php b/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php deleted file mode 100644 index 9fb290fa..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerInterface.php +++ /dev/null @@ -1,43 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Processor\ProcessorInterface; -use Monolog\LogRecord; - -/** - * Interface to describe loggers that have processors - * - * @author Jordi Boggiano - */ -interface ProcessableHandlerInterface -{ - /** - * Adds a processor in the stack. - * - * @phpstan-param ProcessorInterface|(callable(LogRecord): LogRecord) $callback - * - * @param ProcessorInterface|callable $callback - * @return HandlerInterface self - */ - public function pushProcessor(callable $callback): HandlerInterface; - - /** - * Removes the processor on top of the stack and returns it. - * - * @phpstan-return ProcessorInterface|(callable(LogRecord): LogRecord) $callback - * - * @throws \LogicException In case the processor stack is empty - * @return callable|ProcessorInterface - */ - public function popProcessor(): callable; -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php b/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php deleted file mode 100644 index 74eedddd..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/ProcessableHandlerTrait.php +++ /dev/null @@ -1,70 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\ResettableInterface; -use Monolog\Processor\ProcessorInterface; -use Monolog\LogRecord; - -/** - * Helper trait for implementing ProcessableInterface - * - * @author Jordi Boggiano - */ -trait ProcessableHandlerTrait -{ - /** - * @var callable[] - * @phpstan-var array<(callable(LogRecord): LogRecord)|ProcessorInterface> - */ - protected array $processors = []; - - /** - * @inheritDoc - */ - public function pushProcessor(callable $callback): HandlerInterface - { - array_unshift($this->processors, $callback); - - return $this; - } - - /** - * @inheritDoc - */ - public function popProcessor(): callable - { - if (\count($this->processors) === 0) { - throw new \LogicException('You tried to pop from an empty processor stack.'); - } - - return array_shift($this->processors); - } - - protected function processRecord(LogRecord $record): LogRecord - { - foreach ($this->processors as $processor) { - $record = $processor($record); - } - - return $record; - } - - protected function resetProcessors(): void - { - foreach ($this->processors as $processor) { - if ($processor instanceof ResettableInterface) { - $processor->reset(); - } - } - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php deleted file mode 100644 index 6599a83b..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php +++ /dev/null @@ -1,87 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Psr\Log\LoggerInterface; -use Monolog\Formatter\FormatterInterface; -use Monolog\LogRecord; - -/** - * Proxies log messages to an existing PSR-3 compliant logger. - * - * If a formatter is configured, the formatter's output MUST be a string and the - * formatted message will be fed to the wrapped PSR logger instead of the original - * log record's message. - * - * @author Michael Moussa - */ -class PsrHandler extends AbstractHandler implements FormattableHandlerInterface -{ - /** - * PSR-3 compliant logger - */ - protected LoggerInterface $logger; - - protected FormatterInterface|null $formatter = null; - - /** - * @param LoggerInterface $logger The underlying PSR-3 compliant logger to which messages will be proxied - */ - public function __construct(LoggerInterface $logger, int|string|Level $level = Level::Debug, bool $bubble = true) - { - parent::__construct($level, $bubble); - - $this->logger = $logger; - } - - /** - * @inheritDoc - */ - public function handle(LogRecord $record): bool - { - if (!$this->isHandling($record)) { - return false; - } - - if ($this->formatter !== null) { - $formatted = $this->formatter->format($record); - $this->logger->log($record->level->toPsrLogLevel(), (string) $formatted, $record->context); - } else { - $this->logger->log($record->level->toPsrLogLevel(), $record->message, $record->context); - } - - return false === $this->bubble; - } - - /** - * Sets the formatter. - */ - public function setFormatter(FormatterInterface $formatter): HandlerInterface - { - $this->formatter = $formatter; - - return $this; - } - - /** - * Gets the formatter. - */ - public function getFormatter(): FormatterInterface - { - if ($this->formatter === null) { - throw new \LogicException('No formatter has been set and this handler does not have a default formatter'); - } - - return $this->formatter; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php deleted file mode 100644 index 615f1219..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php +++ /dev/null @@ -1,246 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\Logger; -use Monolog\Utils; -use Psr\Log\LogLevel; -use Monolog\LogRecord; - -/** - * Sends notifications through the pushover api to mobile phones - * - * @author Sebastian Göttschkes - * @see https://www.pushover.net/api - */ -class PushoverHandler extends SocketHandler -{ - private string $token; - - /** @var array */ - private array $users; - - private string $title; - - private string|int|null $user = null; - - private int $retry; - - private int $expire; - - private Level $highPriorityLevel; - - private Level $emergencyLevel; - - private bool $useFormattedMessage = false; - - /** - * All parameters that can be sent to Pushover - * @see https://pushover.net/api - * @var array - */ - private array $parameterNames = [ - 'token' => true, - 'user' => true, - 'message' => true, - 'device' => true, - 'title' => true, - 'url' => true, - 'url_title' => true, - 'priority' => true, - 'timestamp' => true, - 'sound' => true, - 'retry' => true, - 'expire' => true, - 'callback' => true, - ]; - - /** - * Sounds the api supports by default - * @see https://pushover.net/api#sounds - * @var string[] - */ - private array $sounds = [ - 'pushover', 'bike', 'bugle', 'cashregister', 'classical', 'cosmic', 'falling', 'gamelan', 'incoming', - 'intermission', 'magic', 'mechanical', 'pianobar', 'siren', 'spacealarm', 'tugboat', 'alien', 'climb', - 'persistent', 'echo', 'updown', 'none', - ]; - - /** - * @param string $token Pushover api token - * @param string|array $users Pushover user id or array of ids the message will be sent to - * @param string|null $title Title sent to the Pushover API - * @param bool $useSSL Whether to connect via SSL. Required when pushing messages to users that are not - * the pushover.net app owner. OpenSSL is required for this option. - * @param int $retry The retry parameter specifies how often (in seconds) the Pushover servers will - * send the same notification to the user. - * @param int $expire The expire parameter specifies how many seconds your notification will continue - * to be retried for (every retry seconds). - * - * @param int|string|Level|LogLevel::* $highPriorityLevel The minimum logging level at which this handler will start - * sending "high priority" requests to the Pushover API - * @param int|string|Level|LogLevel::* $emergencyLevel The minimum logging level at which this handler will start - * sending "emergency" requests to the Pushover API - * - * - * @phpstan-param string|array $users - * @phpstan-param value-of|value-of|Level|LogLevel::* $highPriorityLevel - * @phpstan-param value-of|value-of|Level|LogLevel::* $emergencyLevel - */ - public function __construct( - string $token, - $users, - ?string $title = null, - int|string|Level $level = Level::Critical, - bool $bubble = true, - bool $useSSL = true, - int|string|Level $highPriorityLevel = Level::Critical, - int|string|Level $emergencyLevel = Level::Emergency, - int $retry = 30, - int $expire = 25200, - bool $persistent = false, - float $timeout = 0.0, - float $writingTimeout = 10.0, - ?float $connectionTimeout = null, - ?int $chunkSize = null - ) { - $connectionString = $useSSL ? 'ssl://api.pushover.net:443' : 'api.pushover.net:80'; - parent::__construct( - $connectionString, - $level, - $bubble, - $persistent, - $timeout, - $writingTimeout, - $connectionTimeout, - $chunkSize - ); - - $this->token = $token; - $this->users = (array) $users; - $this->title = $title ?? (string) gethostname(); - $this->highPriorityLevel = Logger::toMonologLevel($highPriorityLevel); - $this->emergencyLevel = Logger::toMonologLevel($emergencyLevel); - $this->retry = $retry; - $this->expire = $expire; - } - - protected function generateDataStream(LogRecord $record): string - { - $content = $this->buildContent($record); - - return $this->buildHeader($content) . $content; - } - - private function buildContent(LogRecord $record): string - { - // Pushover has a limit of 512 characters on title and message combined. - $maxMessageLength = 512 - strlen($this->title); - - $message = ($this->useFormattedMessage) ? $record->formatted : $record->message; - $message = Utils::substr($message, 0, $maxMessageLength); - - $timestamp = $record->datetime->getTimestamp(); - - $dataArray = [ - 'token' => $this->token, - 'user' => $this->user, - 'message' => $message, - 'title' => $this->title, - 'timestamp' => $timestamp, - ]; - - if ($record->level->value >= $this->emergencyLevel->value) { - $dataArray['priority'] = 2; - $dataArray['retry'] = $this->retry; - $dataArray['expire'] = $this->expire; - } elseif ($record->level->value >= $this->highPriorityLevel->value) { - $dataArray['priority'] = 1; - } - - // First determine the available parameters - $context = array_intersect_key($record->context, $this->parameterNames); - $extra = array_intersect_key($record->extra, $this->parameterNames); - - // Least important info should be merged with subsequent info - $dataArray = array_merge($extra, $context, $dataArray); - - // Only pass sounds that are supported by the API - if (isset($dataArray['sound']) && !in_array($dataArray['sound'], $this->sounds, true)) { - unset($dataArray['sound']); - } - - return http_build_query($dataArray); - } - - private function buildHeader(string $content): string - { - $header = "POST /1/messages.json HTTP/1.1\r\n"; - $header .= "Host: api.pushover.net\r\n"; - $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; - $header .= "Content-Length: " . strlen($content) . "\r\n"; - $header .= "\r\n"; - - return $header; - } - - protected function write(LogRecord $record): void - { - foreach ($this->users as $user) { - $this->user = $user; - - parent::write($record); - $this->closeSocket(); - } - - $this->user = null; - } - - /** - * @param int|string|Level|LogLevel::* $level - * @return $this - * - * @phpstan-param value-of|value-of|Level|LogLevel::* $level - */ - public function setHighPriorityLevel(int|string|Level $level): self - { - $this->highPriorityLevel = Logger::toMonologLevel($level); - - return $this; - } - - /** - * @param int|string|Level|LogLevel::* $level - * @return $this - * - * @phpstan-param value-of|value-of|Level|LogLevel::* $level - */ - public function setEmergencyLevel(int|string|Level $level): self - { - $this->emergencyLevel = Logger::toMonologLevel($level); - - return $this; - } - - /** - * Use the formatted message? - * - * @return $this - */ - public function useFormattedMessage(bool $useFormattedMessage): self - { - $this->useFormattedMessage = $useFormattedMessage; - - return $this; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php deleted file mode 100644 index 5eee5dc6..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php +++ /dev/null @@ -1,94 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Formatter\LineFormatter; -use Monolog\Formatter\FormatterInterface; -use Monolog\Level; -use Monolog\LogRecord; -use Predis\Client as Predis; -use Redis; - -/** - * Logs to a Redis key using rpush - * - * usage example: - * - * $log = new Logger('application'); - * $redis = new RedisHandler(new Predis\Client("tcp://localhost:6379"), "logs", "prod"); - * $log->pushHandler($redis); - * - * @author Thomas Tourlourat - */ -class RedisHandler extends AbstractProcessingHandler -{ - /** @var Predis|Redis */ - private Predis|Redis $redisClient; - private string $redisKey; - protected int $capSize; - - /** - * @param Predis|Redis $redis The redis instance - * @param string $key The key name to push records to - * @param int $capSize Number of entries to limit list size to, 0 = unlimited - */ - public function __construct(Predis|Redis $redis, string $key, int|string|Level $level = Level::Debug, bool $bubble = true, int $capSize = 0) - { - $this->redisClient = $redis; - $this->redisKey = $key; - $this->capSize = $capSize; - - parent::__construct($level, $bubble); - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - if ($this->capSize > 0) { - $this->writeCapped($record); - } else { - $this->redisClient->rpush($this->redisKey, $record->formatted); - } - } - - /** - * Write and cap the collection - * Writes the record to the redis list and caps its - */ - protected function writeCapped(LogRecord $record): void - { - if ($this->redisClient instanceof Redis) { - $mode = defined('Redis::MULTI') ? Redis::MULTI : 1; - $this->redisClient->multi($mode) - ->rPush($this->redisKey, $record->formatted) - ->ltrim($this->redisKey, -$this->capSize, -1) - ->exec(); - } else { - $redisKey = $this->redisKey; - $capSize = $this->capSize; - $this->redisClient->transaction(function ($tx) use ($record, $redisKey, $capSize) { - $tx->rpush($redisKey, $record->formatted); - $tx->ltrim($redisKey, -$capSize, -1); - }); - } - } - - /** - * @inheritDoc - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new LineFormatter(); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/RedisPubSubHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/RedisPubSubHandler.php deleted file mode 100644 index fa8e9e9f..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/RedisPubSubHandler.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Formatter\LineFormatter; -use Monolog\Formatter\FormatterInterface; -use Monolog\Level; -use Monolog\LogRecord; -use Predis\Client as Predis; -use Redis; - -/** - * Sends the message to a Redis Pub/Sub channel using PUBLISH - * - * usage example: - * - * $log = new Logger('application'); - * $redis = new RedisPubSubHandler(new Predis\Client("tcp://localhost:6379"), "logs", Level::Warning); - * $log->pushHandler($redis); - * - * @author Gaëtan Faugère - */ -class RedisPubSubHandler extends AbstractProcessingHandler -{ - /** @var Predis|Redis */ - private Predis|Redis $redisClient; - private string $channelKey; - - /** - * @param Predis|Redis $redis The redis instance - * @param string $key The channel key to publish records to - */ - public function __construct(Predis|Redis $redis, string $key, int|string|Level $level = Level::Debug, bool $bubble = true) - { - $this->redisClient = $redis; - $this->channelKey = $key; - - parent::__construct($level, $bubble); - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - $this->redisClient->publish($this->channelKey, $record->formatted); - } - - /** - * @inheritDoc - */ - protected function getDefaultFormatter(): FormatterInterface - { - return new LineFormatter(); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php deleted file mode 100644 index 1d124723..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php +++ /dev/null @@ -1,133 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Rollbar\RollbarLogger; -use Throwable; -use Monolog\LogRecord; - -/** - * Sends errors to Rollbar - * - * If the context data contains a `payload` key, that is used as an array - * of payload options to RollbarLogger's log method. - * - * Rollbar's context info will contain the context + extra keys from the log record - * merged, and then on top of that a few keys: - * - * - level (rollbar level name) - * - monolog_level (monolog level name, raw level, as rollbar only has 5 but monolog 8) - * - channel - * - datetime (unix timestamp) - * - * @author Paul Statezny - */ -class RollbarHandler extends AbstractProcessingHandler -{ - protected RollbarLogger $rollbarLogger; - - /** - * Records whether any log records have been added since the last flush of the rollbar notifier - */ - private bool $hasRecords = false; - - protected bool $initialized = false; - - /** - * @param RollbarLogger $rollbarLogger RollbarLogger object constructed with valid token - */ - public function __construct(RollbarLogger $rollbarLogger, int|string|Level $level = Level::Error, bool $bubble = true) - { - $this->rollbarLogger = $rollbarLogger; - - parent::__construct($level, $bubble); - } - - /** - * Translates Monolog log levels to Rollbar levels. - * - * @return 'debug'|'info'|'warning'|'error'|'critical' - */ - protected function toRollbarLevel(Level $level): string - { - return match ($level) { - Level::Debug => 'debug', - Level::Info => 'info', - Level::Notice => 'info', - Level::Warning => 'warning', - Level::Error => 'error', - Level::Critical => 'critical', - Level::Alert => 'critical', - Level::Emergency => 'critical', - }; - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - if (!$this->initialized) { - // __destructor() doesn't get called on Fatal errors - register_shutdown_function([$this, 'close']); - $this->initialized = true; - } - - $context = $record->context; - $context = array_merge($context, $record->extra, [ - 'level' => $this->toRollbarLevel($record->level), - 'monolog_level' => $record->level->getName(), - 'channel' => $record->channel, - 'datetime' => $record->datetime->format('U'), - ]); - - if (isset($context['exception']) && $context['exception'] instanceof Throwable) { - $exception = $context['exception']; - unset($context['exception']); - $toLog = $exception; - } else { - $toLog = $record->message; - } - - // @phpstan-ignore-next-line - $this->rollbarLogger->log($context['level'], $toLog, $context); - - $this->hasRecords = true; - } - - public function flush(): void - { - if ($this->hasRecords) { - $this->rollbarLogger->flush(); - $this->hasRecords = false; - } - } - - /** - * @inheritDoc - */ - public function close(): void - { - $this->flush(); - } - - /** - * @inheritDoc - */ - public function reset(): void - { - $this->flush(); - - parent::reset(); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php deleted file mode 100644 index 86240b44..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php +++ /dev/null @@ -1,217 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use InvalidArgumentException; -use Monolog\Level; -use Monolog\Utils; -use Monolog\LogRecord; - -/** - * Stores logs to files that are rotated every day and a limited number of files are kept. - * - * This rotation is only intended to be used as a workaround. Using logrotate to - * handle the rotation is strongly encouraged when you can use it. - * - * @author Christophe Coevoet - * @author Jordi Boggiano - */ -class RotatingFileHandler extends StreamHandler -{ - public const FILE_PER_DAY = 'Y-m-d'; - public const FILE_PER_MONTH = 'Y-m'; - public const FILE_PER_YEAR = 'Y'; - - protected string $filename; - protected int $maxFiles; - protected bool|null $mustRotate = null; - protected \DateTimeImmutable $nextRotation; - protected string $filenameFormat; - protected string $dateFormat; - - /** - * @param int $maxFiles The maximal amount of files to keep (0 means unlimited) - * @param int|null $filePermission Optional file permissions (default (0644) are only for owner read/write) - * @param bool $useLocking Try to lock log file before doing any writes - */ - public function __construct(string $filename, int $maxFiles = 0, int|string|Level $level = Level::Debug, bool $bubble = true, ?int $filePermission = null, bool $useLocking = false, string $dateFormat = self::FILE_PER_DAY, string $filenameFormat = '{filename}-{date}') - { - $this->filename = Utils::canonicalizePath($filename); - $this->maxFiles = $maxFiles; - $this->setFilenameFormat($filenameFormat, $dateFormat); - $this->nextRotation = $this->getNextRotation(); - - parent::__construct($this->getTimedFilename(), $level, $bubble, $filePermission, $useLocking); - } - - /** - * @inheritDoc - */ - public function close(): void - { - parent::close(); - - if (true === $this->mustRotate) { - $this->rotate(); - } - } - - /** - * @inheritDoc - */ - public function reset(): void - { - parent::reset(); - - if (true === $this->mustRotate) { - $this->rotate(); - } - } - - /** - * @return $this - */ - public function setFilenameFormat(string $filenameFormat, string $dateFormat): self - { - $this->setDateFormat($dateFormat); - if (substr_count($filenameFormat, '{date}') === 0) { - throw new InvalidArgumentException( - 'Invalid filename format - format must contain at least `{date}`, because otherwise rotating is impossible.' - ); - } - $this->filenameFormat = $filenameFormat; - $this->url = $this->getTimedFilename(); - $this->close(); - - return $this; - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - // on the first record written, if the log is new, we should rotate (once per day) - if (null === $this->mustRotate) { - $this->mustRotate = null === $this->url || !file_exists($this->url); - } - - if ($this->nextRotation <= $record->datetime) { - $this->mustRotate = true; - $this->close(); - } - - parent::write($record); - } - - /** - * Rotates the files. - */ - protected function rotate(): void - { - // update filename - $this->url = $this->getTimedFilename(); - $this->nextRotation = $this->getNextRotation(); - - // skip GC of old logs if files are unlimited - if (0 === $this->maxFiles) { - return; - } - - $logFiles = glob($this->getGlobPattern()); - if (false === $logFiles) { - // failed to glob - return; - } - - if ($this->maxFiles >= count($logFiles)) { - // no files to remove - return; - } - - // Sorting the files by name to remove the older ones - usort($logFiles, function ($a, $b) { - return strcmp($b, $a); - }); - - foreach (array_slice($logFiles, $this->maxFiles) as $file) { - if (is_writable($file)) { - // suppress errors here as unlink() might fail if two processes - // are cleaning up/rotating at the same time - set_error_handler(function (int $errno, string $errstr, string $errfile, int $errline): bool { - return false; - }); - unlink($file); - restore_error_handler(); - } - } - - $this->mustRotate = false; - } - - protected function getTimedFilename(): string - { - $fileInfo = pathinfo($this->filename); - $timedFilename = str_replace( - ['{filename}', '{date}'], - [$fileInfo['filename'], date($this->dateFormat)], - ($fileInfo['dirname'] ?? '') . '/' . $this->filenameFormat - ); - - if (isset($fileInfo['extension'])) { - $timedFilename .= '.'.$fileInfo['extension']; - } - - return $timedFilename; - } - - protected function getGlobPattern(): string - { - $fileInfo = pathinfo($this->filename); - $glob = str_replace( - ['{filename}', '{date}'], - [$fileInfo['filename'], str_replace( - ['Y', 'y', 'm', 'd'], - ['[0-9][0-9][0-9][0-9]', '[0-9][0-9]', '[0-9][0-9]', '[0-9][0-9]'], - $this->dateFormat) - ], - ($fileInfo['dirname'] ?? '') . '/' . $this->filenameFormat - ); - if (isset($fileInfo['extension'])) { - $glob .= '.'.$fileInfo['extension']; - } - - return $glob; - } - - protected function setDateFormat(string $dateFormat): void - { - if (0 === preg_match('{^[Yy](([/_.-]?m)([/_.-]?d)?)?$}', $dateFormat)) { - throw new InvalidArgumentException( - 'Invalid date format - format must be one of '. - 'RotatingFileHandler::FILE_PER_DAY ("Y-m-d"), RotatingFileHandler::FILE_PER_MONTH ("Y-m") '. - 'or RotatingFileHandler::FILE_PER_YEAR ("Y"), or you can set one of the '. - 'date formats using slashes, underscores and/or dots instead of dashes.' - ); - } - $this->dateFormat = $dateFormat; - } - - protected function getNextRotation(): \DateTimeImmutable - { - return match (str_replace(['/','_','.'], '-', $this->dateFormat)) { - self::FILE_PER_MONTH => (new \DateTimeImmutable('first day of next month'))->setTime(0, 0, 0), - self::FILE_PER_YEAR => (new \DateTimeImmutable('first day of January next year'))->setTime(0, 0, 0), - default => (new \DateTimeImmutable('tomorrow'))->setTime(0, 0, 0), - }; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php deleted file mode 100644 index 511ec585..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php +++ /dev/null @@ -1,121 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Closure; -use Monolog\Formatter\FormatterInterface; -use Monolog\LogRecord; - -/** - * Sampling handler - * - * A sampled event stream can be useful for logging high frequency events in - * a production environment where you only need an idea of what is happening - * and are not concerned with capturing every occurrence. Since the decision to - * handle or not handle a particular event is determined randomly, the - * resulting sampled log is not guaranteed to contain 1/N of the events that - * occurred in the application, but based on the Law of large numbers, it will - * tend to be close to this ratio with a large number of attempts. - * - * @author Bryan Davis - * @author Kunal Mehta - */ -class SamplingHandler extends AbstractHandler implements ProcessableHandlerInterface, FormattableHandlerInterface -{ - use ProcessableHandlerTrait; - - /** - * Handler or factory Closure($record, $this) - * - * @phpstan-var (Closure(LogRecord|null, HandlerInterface): HandlerInterface)|HandlerInterface - */ - protected Closure|HandlerInterface $handler; - - protected int $factor; - - /** - * @phpstan-param (Closure(LogRecord|null, HandlerInterface): HandlerInterface)|HandlerInterface $handler - * - * @param Closure|HandlerInterface $handler Handler or factory Closure($record|null, $samplingHandler). - * @param int $factor Sample factor (e.g. 10 means every ~10th record is sampled) - */ - public function __construct(Closure|HandlerInterface $handler, int $factor) - { - parent::__construct(); - $this->handler = $handler; - $this->factor = $factor; - } - - public function isHandling(LogRecord $record): bool - { - return $this->getHandler($record)->isHandling($record); - } - - public function handle(LogRecord $record): bool - { - if ($this->isHandling($record) && mt_rand(1, $this->factor) === 1) { - if (\count($this->processors) > 0) { - $record = $this->processRecord($record); - } - - $this->getHandler($record)->handle($record); - } - - return false === $this->bubble; - } - - /** - * Return the nested handler - * - * If the handler was provided as a factory, this will trigger the handler's instantiation. - */ - public function getHandler(LogRecord $record = null): HandlerInterface - { - if (!$this->handler instanceof HandlerInterface) { - $handler = ($this->handler)($record, $this); - if (!$handler instanceof HandlerInterface) { - throw new \RuntimeException("The factory Closure should return a HandlerInterface"); - } - $this->handler = $handler; - } - - return $this->handler; - } - - /** - * @inheritDoc - */ - public function setFormatter(FormatterInterface $formatter): HandlerInterface - { - $handler = $this->getHandler(); - if ($handler instanceof FormattableHandlerInterface) { - $handler->setFormatter($formatter); - - return $this; - } - - throw new \UnexpectedValueException('The nested handler of type '.get_class($handler).' does not support formatters.'); - } - - /** - * @inheritDoc - */ - public function getFormatter(): FormatterInterface - { - $handler = $this->getHandler(); - if ($handler instanceof FormattableHandlerInterface) { - return $handler->getFormatter(); - } - - throw new \UnexpectedValueException('The nested handler of type '.get_class($handler).' does not support formatters.'); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SendGridHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SendGridHandler.php deleted file mode 100644 index b8f574bb..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/SendGridHandler.php +++ /dev/null @@ -1,100 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; - -/** - * SendGridrHandler uses the SendGrid API v2 function to send Log emails, more information in https://sendgrid.com/docs/API_Reference/Web_API/mail.html - * - * @author Ricardo Fontanelli - */ -class SendGridHandler extends MailHandler -{ - /** - * The SendGrid API User - */ - protected string $apiUser; - - /** - * The SendGrid API Key - */ - protected string $apiKey; - - /** - * The email addresses to which the message will be sent - */ - protected string $from; - - /** - * The email addresses to which the message will be sent - * @var string[] - */ - protected array $to; - - /** - * The subject of the email - */ - protected string $subject; - - /** - * @param string $apiUser The SendGrid API User - * @param string $apiKey The SendGrid API Key - * @param string $from The sender of the email - * @param string|string[] $to The recipients of the email - * @param string $subject The subject of the mail - * - * @throws MissingExtensionException If the curl extension is missing - */ - public function __construct(string $apiUser, string $apiKey, string $from, string|array $to, string $subject, int|string|Level $level = Level::Error, bool $bubble = true) - { - if (!extension_loaded('curl')) { - throw new MissingExtensionException('The curl extension is needed to use the SendGridHandler'); - } - - parent::__construct($level, $bubble); - $this->apiUser = $apiUser; - $this->apiKey = $apiKey; - $this->from = $from; - $this->to = (array) $to; - $this->subject = $subject; - } - - /** - * @inheritDoc - */ - protected function send(string $content, array $records): void - { - $message = []; - $message['api_user'] = $this->apiUser; - $message['api_key'] = $this->apiKey; - $message['from'] = $this->from; - foreach ($this->to as $recipient) { - $message['to[]'] = $recipient; - } - $message['subject'] = $this->subject; - $message['date'] = date('r'); - - if ($this->isHtmlBody($content)) { - $message['html'] = $content; - } else { - $message['text'] = $content; - } - - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, 'https://api.sendgrid.com/api/mail.send.json'); - curl_setopt($ch, CURLOPT_POST, 1); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($message)); - Curl\Util::execute($ch, 2); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php b/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php deleted file mode 100644 index 147d8f80..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php +++ /dev/null @@ -1,381 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler\Slack; - -use Monolog\Level; -use Monolog\Utils; -use Monolog\Formatter\NormalizerFormatter; -use Monolog\Formatter\FormatterInterface; -use Monolog\LogRecord; - -/** - * Slack record utility helping to log to Slack webhooks or API. - * - * @author Greg Kedzierski - * @author Haralan Dobrev - * @see https://api.slack.com/incoming-webhooks - * @see https://api.slack.com/docs/message-attachments - */ -class SlackRecord -{ - public const COLOR_DANGER = 'danger'; - - public const COLOR_WARNING = 'warning'; - - public const COLOR_GOOD = 'good'; - - public const COLOR_DEFAULT = '#e3e4e6'; - - /** - * Slack channel (encoded ID or name) - */ - private string|null $channel; - - /** - * Name of a bot - */ - private string|null $username; - - /** - * User icon e.g. 'ghost', 'http://example.com/user.png' - */ - private string|null $userIcon; - - /** - * Whether the message should be added to Slack as attachment (plain text otherwise) - */ - private bool $useAttachment; - - /** - * Whether the the context/extra messages added to Slack as attachments are in a short style - */ - private bool $useShortAttachment; - - /** - * Whether the attachment should include context and extra data - */ - private bool $includeContextAndExtra; - - /** - * Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2'] - * @var string[] - */ - private array $excludeFields; - - private FormatterInterface|null $formatter; - - private NormalizerFormatter $normalizerFormatter; - - /** - * @param string[] $excludeFields - */ - public function __construct( - ?string $channel = null, - ?string $username = null, - bool $useAttachment = true, - ?string $userIcon = null, - bool $useShortAttachment = false, - bool $includeContextAndExtra = false, - array $excludeFields = [], - FormatterInterface $formatter = null - ) { - $this - ->setChannel($channel) - ->setUsername($username) - ->useAttachment($useAttachment) - ->setUserIcon($userIcon) - ->useShortAttachment($useShortAttachment) - ->includeContextAndExtra($includeContextAndExtra) - ->excludeFields($excludeFields) - ->setFormatter($formatter); - - if ($this->includeContextAndExtra) { - $this->normalizerFormatter = new NormalizerFormatter(); - } - } - - /** - * Returns required data in format that Slack - * is expecting. - * - * @phpstan-return mixed[] - */ - public function getSlackData(LogRecord $record): array - { - $dataArray = []; - - if ($this->username !== null) { - $dataArray['username'] = $this->username; - } - - if ($this->channel !== null) { - $dataArray['channel'] = $this->channel; - } - - if ($this->formatter !== null && !$this->useAttachment) { - $message = $this->formatter->format($record); - } else { - $message = $record->message; - } - - $recordData = $this->removeExcludedFields($record); - - if ($this->useAttachment) { - $attachment = [ - 'fallback' => $message, - 'text' => $message, - 'color' => $this->getAttachmentColor($record->level), - 'fields' => [], - 'mrkdwn_in' => ['fields'], - 'ts' => $recordData['datetime']->getTimestamp(), - 'footer' => $this->username, - 'footer_icon' => $this->userIcon, - ]; - - if ($this->useShortAttachment) { - $attachment['title'] = $recordData['level_name']; - } else { - $attachment['title'] = 'Message'; - $attachment['fields'][] = $this->generateAttachmentField('Level', $recordData['level_name']); - } - - if ($this->includeContextAndExtra) { - foreach (['extra', 'context'] as $key) { - if (!isset($recordData[$key]) || \count($recordData[$key]) === 0) { - continue; - } - - if ($this->useShortAttachment) { - $attachment['fields'][] = $this->generateAttachmentField( - $key, - $recordData[$key] - ); - } else { - // Add all extra fields as individual fields in attachment - $attachment['fields'] = array_merge( - $attachment['fields'], - $this->generateAttachmentFields($recordData[$key]) - ); - } - } - } - - $dataArray['attachments'] = [$attachment]; - } else { - $dataArray['text'] = $message; - } - - if ($this->userIcon !== null) { - if (false !== ($iconUrl = filter_var($this->userIcon, FILTER_VALIDATE_URL))) { - $dataArray['icon_url'] = $iconUrl; - } else { - $dataArray['icon_emoji'] = ":{$this->userIcon}:"; - } - } - - return $dataArray; - } - - /** - * Returns a Slack message attachment color associated with - * provided level. - */ - public function getAttachmentColor(Level $level): string - { - return match ($level) { - Level::Error, Level::Critical, Level::Alert, Level::Emergency => static::COLOR_DANGER, - Level::Warning => static::COLOR_WARNING, - Level::Info, Level::Notice => static::COLOR_GOOD, - Level::Debug => static::COLOR_DEFAULT - }; - } - - /** - * Stringifies an array of key/value pairs to be used in attachment fields - * - * @param mixed[] $fields - */ - public function stringify(array $fields): string - { - /** @var array $normalized */ - $normalized = $this->normalizerFormatter->normalizeValue($fields); - - $hasSecondDimension = \count(array_filter($normalized, 'is_array')) > 0; - $hasOnlyNonNumericKeys = \count(array_filter(array_keys($normalized), 'is_numeric')) === 0; - - return $hasSecondDimension || $hasOnlyNonNumericKeys - ? Utils::jsonEncode($normalized, JSON_PRETTY_PRINT|Utils::DEFAULT_JSON_FLAGS) - : Utils::jsonEncode($normalized, Utils::DEFAULT_JSON_FLAGS); - } - - /** - * Channel used by the bot when posting - * - * @param ?string $channel - * @return $this - */ - public function setChannel(?string $channel = null): self - { - $this->channel = $channel; - - return $this; - } - - /** - * Username used by the bot when posting - * - * @param ?string $username - * @return $this - */ - public function setUsername(?string $username = null): self - { - $this->username = $username; - - return $this; - } - - /** - * @return $this - */ - public function useAttachment(bool $useAttachment = true): self - { - $this->useAttachment = $useAttachment; - - return $this; - } - - /** - * @return $this - */ - public function setUserIcon(?string $userIcon = null): self - { - $this->userIcon = $userIcon; - - if (\is_string($userIcon)) { - $this->userIcon = trim($userIcon, ':'); - } - - return $this; - } - - /** - * @return $this - */ - public function useShortAttachment(bool $useShortAttachment = false): self - { - $this->useShortAttachment = $useShortAttachment; - - return $this; - } - - /** - * @return $this - */ - public function includeContextAndExtra(bool $includeContextAndExtra = false): self - { - $this->includeContextAndExtra = $includeContextAndExtra; - - if ($this->includeContextAndExtra) { - $this->normalizerFormatter = new NormalizerFormatter(); - } - - return $this; - } - - /** - * @param string[] $excludeFields - * @return $this - */ - public function excludeFields(array $excludeFields = []): self - { - $this->excludeFields = $excludeFields; - - return $this; - } - - /** - * @return $this - */ - public function setFormatter(?FormatterInterface $formatter = null): self - { - $this->formatter = $formatter; - - return $this; - } - - /** - * Generates attachment field - * - * @param string|mixed[] $value - * - * @return array{title: string, value: string, short: false} - */ - private function generateAttachmentField(string $title, $value): array - { - $value = is_array($value) - ? sprintf('```%s```', substr($this->stringify($value), 0, 1990)) - : $value; - - return [ - 'title' => ucfirst($title), - 'value' => $value, - 'short' => false, - ]; - } - - /** - * Generates a collection of attachment fields from array - * - * @param mixed[] $data - * - * @return array - */ - private function generateAttachmentFields(array $data): array - { - /** @var array $normalized */ - $normalized = $this->normalizerFormatter->normalizeValue($data); - - $fields = []; - foreach ($normalized as $key => $value) { - $fields[] = $this->generateAttachmentField((string) $key, $value); - } - - return $fields; - } - - /** - * Get a copy of record with fields excluded according to $this->excludeFields - * - * @return mixed[] - */ - private function removeExcludedFields(LogRecord $record): array - { - $recordData = $record->toArray(); - foreach ($this->excludeFields as $field) { - $keys = explode('.', $field); - $node = &$recordData; - $lastKey = end($keys); - foreach ($keys as $key) { - if (!isset($node[$key])) { - break; - } - if ($lastKey === $key) { - unset($node[$key]); - break; - } - $node = &$node[$key]; - } - } - - return $recordData; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php deleted file mode 100644 index 1d9a1771..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php +++ /dev/null @@ -1,267 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Formatter\FormatterInterface; -use Monolog\Level; -use Monolog\Utils; -use Monolog\Handler\Slack\SlackRecord; -use Monolog\LogRecord; - -/** - * Sends notifications through Slack API - * - * @author Greg Kedzierski - * @see https://api.slack.com/ - */ -class SlackHandler extends SocketHandler -{ - /** - * Slack API token - */ - private string $token; - - /** - * Instance of the SlackRecord util class preparing data for Slack API. - */ - private SlackRecord $slackRecord; - - /** - * @param string $token Slack API token - * @param string $channel Slack channel (encoded ID or name) - * @param string|null $username Name of a bot - * @param bool $useAttachment Whether the message should be added to Slack as attachment (plain text otherwise) - * @param string|null $iconEmoji The emoji name to use (or null) - * @param bool $useShortAttachment Whether the context/extra messages added to Slack as attachments are in a short style - * @param bool $includeContextAndExtra Whether the attachment should include context and extra data - * @param string[] $excludeFields Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2'] - * @throws MissingExtensionException If no OpenSSL PHP extension configured - */ - public function __construct( - string $token, - string $channel, - ?string $username = null, - bool $useAttachment = true, - ?string $iconEmoji = null, - $level = Level::Critical, - bool $bubble = true, - bool $useShortAttachment = false, - bool $includeContextAndExtra = false, - array $excludeFields = [], - bool $persistent = false, - float $timeout = 0.0, - float $writingTimeout = 10.0, - ?float $connectionTimeout = null, - ?int $chunkSize = null - ) { - if (!extension_loaded('openssl')) { - throw new MissingExtensionException('The OpenSSL PHP extension is required to use the SlackHandler'); - } - - parent::__construct( - 'ssl://slack.com:443', - $level, - $bubble, - $persistent, - $timeout, - $writingTimeout, - $connectionTimeout, - $chunkSize - ); - - $this->slackRecord = new SlackRecord( - $channel, - $username, - $useAttachment, - $iconEmoji, - $useShortAttachment, - $includeContextAndExtra, - $excludeFields - ); - - $this->token = $token; - } - - public function getSlackRecord(): SlackRecord - { - return $this->slackRecord; - } - - public function getToken(): string - { - return $this->token; - } - - /** - * @inheritDoc - */ - protected function generateDataStream(LogRecord $record): string - { - $content = $this->buildContent($record); - - return $this->buildHeader($content) . $content; - } - - /** - * Builds the body of API call - */ - private function buildContent(LogRecord $record): string - { - $dataArray = $this->prepareContentData($record); - - return http_build_query($dataArray); - } - - /** - * @return string[] - */ - protected function prepareContentData(LogRecord $record): array - { - $dataArray = $this->slackRecord->getSlackData($record); - $dataArray['token'] = $this->token; - - if (isset($dataArray['attachments']) && is_array($dataArray['attachments']) && \count($dataArray['attachments']) > 0) { - $dataArray['attachments'] = Utils::jsonEncode($dataArray['attachments']); - } - - return $dataArray; - } - - /** - * Builds the header of the API Call - */ - private function buildHeader(string $content): string - { - $header = "POST /api/chat.postMessage HTTP/1.1\r\n"; - $header .= "Host: slack.com\r\n"; - $header .= "Content-Type: application/x-www-form-urlencoded\r\n"; - $header .= "Content-Length: " . strlen($content) . "\r\n"; - $header .= "\r\n"; - - return $header; - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - parent::write($record); - $this->finalizeWrite(); - } - - /** - * Finalizes the request by reading some bytes and then closing the socket - * - * If we do not read some but close the socket too early, slack sometimes - * drops the request entirely. - */ - protected function finalizeWrite(): void - { - $res = $this->getResource(); - if (is_resource($res)) { - @fread($res, 2048); - } - $this->closeSocket(); - } - - public function setFormatter(FormatterInterface $formatter): HandlerInterface - { - parent::setFormatter($formatter); - $this->slackRecord->setFormatter($formatter); - - return $this; - } - - public function getFormatter(): FormatterInterface - { - $formatter = parent::getFormatter(); - $this->slackRecord->setFormatter($formatter); - - return $formatter; - } - - /** - * Channel used by the bot when posting - * - * @return $this - */ - public function setChannel(string $channel): self - { - $this->slackRecord->setChannel($channel); - - return $this; - } - - /** - * Username used by the bot when posting - * - * @return $this - */ - public function setUsername(string $username): self - { - $this->slackRecord->setUsername($username); - - return $this; - } - - /** - * @return $this - */ - public function useAttachment(bool $useAttachment): self - { - $this->slackRecord->useAttachment($useAttachment); - - return $this; - } - - /** - * @return $this - */ - public function setIconEmoji(string $iconEmoji): self - { - $this->slackRecord->setUserIcon($iconEmoji); - - return $this; - } - - /** - * @return $this - */ - public function useShortAttachment(bool $useShortAttachment): self - { - $this->slackRecord->useShortAttachment($useShortAttachment); - - return $this; - } - - /** - * @return $this - */ - public function includeContextAndExtra(bool $includeContextAndExtra): self - { - $this->slackRecord->includeContextAndExtra($includeContextAndExtra); - - return $this; - } - - /** - * @param string[] $excludeFields - * @return $this - */ - public function excludeFields(array $excludeFields): self - { - $this->slackRecord->excludeFields($excludeFields); - - return $this; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php deleted file mode 100644 index 6466ba3a..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php +++ /dev/null @@ -1,131 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Formatter\FormatterInterface; -use Monolog\Level; -use Monolog\Utils; -use Monolog\Handler\Slack\SlackRecord; -use Monolog\LogRecord; - -/** - * Sends notifications through Slack Webhooks - * - * @author Haralan Dobrev - * @see https://api.slack.com/incoming-webhooks - */ -class SlackWebhookHandler extends AbstractProcessingHandler -{ - /** - * Slack Webhook token - */ - private string $webhookUrl; - - /** - * Instance of the SlackRecord util class preparing data for Slack API. - */ - private SlackRecord $slackRecord; - - /** - * @param string $webhookUrl Slack Webhook URL - * @param string|null $channel Slack channel (encoded ID or name) - * @param string|null $username Name of a bot - * @param bool $useAttachment Whether the message should be added to Slack as attachment (plain text otherwise) - * @param string|null $iconEmoji The emoji name to use (or null) - * @param bool $useShortAttachment Whether the the context/extra messages added to Slack as attachments are in a short style - * @param bool $includeContextAndExtra Whether the attachment should include context and extra data - * @param string[] $excludeFields Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2'] - * - * @throws MissingExtensionException If the curl extension is missing - */ - public function __construct( - string $webhookUrl, - ?string $channel = null, - ?string $username = null, - bool $useAttachment = true, - ?string $iconEmoji = null, - bool $useShortAttachment = false, - bool $includeContextAndExtra = false, - $level = Level::Critical, - bool $bubble = true, - array $excludeFields = [] - ) { - if (!extension_loaded('curl')) { - throw new MissingExtensionException('The curl extension is needed to use the SlackWebhookHandler'); - } - - parent::__construct($level, $bubble); - - $this->webhookUrl = $webhookUrl; - - $this->slackRecord = new SlackRecord( - $channel, - $username, - $useAttachment, - $iconEmoji, - $useShortAttachment, - $includeContextAndExtra, - $excludeFields - ); - } - - public function getSlackRecord(): SlackRecord - { - return $this->slackRecord; - } - - public function getWebhookUrl(): string - { - return $this->webhookUrl; - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - $postData = $this->slackRecord->getSlackData($record); - $postString = Utils::jsonEncode($postData); - - $ch = curl_init(); - $options = [ - CURLOPT_URL => $this->webhookUrl, - CURLOPT_POST => true, - CURLOPT_RETURNTRANSFER => true, - CURLOPT_HTTPHEADER => ['Content-type: application/json'], - CURLOPT_POSTFIELDS => $postString, - ]; - if (defined('CURLOPT_SAFE_UPLOAD')) { - $options[CURLOPT_SAFE_UPLOAD] = true; - } - - curl_setopt_array($ch, $options); - - Curl\Util::execute($ch); - } - - public function setFormatter(FormatterInterface $formatter): HandlerInterface - { - parent::setFormatter($formatter); - $this->slackRecord->setFormatter($formatter); - - return $this; - } - - public function getFormatter(): FormatterInterface - { - $formatter = parent::getFormatter(); - $this->slackRecord->setFormatter($formatter); - - return $formatter; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php deleted file mode 100644 index 63f437f3..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php +++ /dev/null @@ -1,436 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\LogRecord; - -/** - * Stores to any socket - uses fsockopen() or pfsockopen(). - * - * @author Pablo de Leon Belloc - * @see http://php.net/manual/en/function.fsockopen.php - */ -class SocketHandler extends AbstractProcessingHandler -{ - private string $connectionString; - private float $connectionTimeout; - /** @var resource|null */ - private $resource; - private float $timeout; - private float $writingTimeout; - private int|null $lastSentBytes = null; - private int|null $chunkSize; - private bool $persistent; - private int|null $errno = null; - private string|null $errstr = null; - private float|null $lastWritingAt = null; - - /** - * @param string $connectionString Socket connection string - * @param bool $persistent Flag to enable/disable persistent connections - * @param float $timeout Socket timeout to wait until the request is being aborted - * @param float $writingTimeout Socket timeout to wait until the request should've been sent/written - * @param float|null $connectionTimeout Socket connect timeout to wait until the connection should've been - * established - * @param int|null $chunkSize Sets the chunk size. Only has effect during connection in the writing cycle - * - * @throws \InvalidArgumentException If an invalid timeout value (less than 0) is passed. - */ - public function __construct( - string $connectionString, - $level = Level::Debug, - bool $bubble = true, - bool $persistent = false, - float $timeout = 0.0, - float $writingTimeout = 10.0, - ?float $connectionTimeout = null, - ?int $chunkSize = null - ) { - parent::__construct($level, $bubble); - $this->connectionString = $connectionString; - - if ($connectionTimeout !== null) { - $this->validateTimeout($connectionTimeout); - } - - $this->connectionTimeout = $connectionTimeout ?? (float) ini_get('default_socket_timeout'); - $this->persistent = $persistent; - $this->validateTimeout($timeout); - $this->timeout = $timeout; - $this->validateTimeout($writingTimeout); - $this->writingTimeout = $writingTimeout; - $this->chunkSize = $chunkSize; - } - - /** - * Connect (if necessary) and write to the socket - * - * @inheritDoc - * - * @throws \UnexpectedValueException - * @throws \RuntimeException - */ - protected function write(LogRecord $record): void - { - $this->connectIfNotConnected(); - $data = $this->generateDataStream($record); - $this->writeToSocket($data); - } - - /** - * We will not close a PersistentSocket instance so it can be reused in other requests. - */ - public function close(): void - { - if (!$this->isPersistent()) { - $this->closeSocket(); - } - } - - /** - * Close socket, if open - */ - public function closeSocket(): void - { - if (is_resource($this->resource)) { - fclose($this->resource); - $this->resource = null; - } - } - - /** - * Set socket connection to be persistent. It only has effect before the connection is initiated. - * - * @return $this - */ - public function setPersistent(bool $persistent): self - { - $this->persistent = $persistent; - - return $this; - } - - /** - * Set connection timeout. Only has effect before we connect. - * - * @see http://php.net/manual/en/function.fsockopen.php - * @return $this - */ - public function setConnectionTimeout(float $seconds): self - { - $this->validateTimeout($seconds); - $this->connectionTimeout = $seconds; - - return $this; - } - - /** - * Set write timeout. Only has effect before we connect. - * - * @see http://php.net/manual/en/function.stream-set-timeout.php - * @return $this - */ - public function setTimeout(float $seconds): self - { - $this->validateTimeout($seconds); - $this->timeout = $seconds; - - return $this; - } - - /** - * Set writing timeout. Only has effect during connection in the writing cycle. - * - * @param float $seconds 0 for no timeout - * @return $this - */ - public function setWritingTimeout(float $seconds): self - { - $this->validateTimeout($seconds); - $this->writingTimeout = $seconds; - - return $this; - } - - /** - * Set chunk size. Only has effect during connection in the writing cycle. - * - * @return $this - */ - public function setChunkSize(int $bytes): self - { - $this->chunkSize = $bytes; - - return $this; - } - - /** - * Get current connection string - */ - public function getConnectionString(): string - { - return $this->connectionString; - } - - /** - * Get persistent setting - */ - public function isPersistent(): bool - { - return $this->persistent; - } - - /** - * Get current connection timeout setting - */ - public function getConnectionTimeout(): float - { - return $this->connectionTimeout; - } - - /** - * Get current in-transfer timeout - */ - public function getTimeout(): float - { - return $this->timeout; - } - - /** - * Get current local writing timeout - */ - public function getWritingTimeout(): float - { - return $this->writingTimeout; - } - - /** - * Get current chunk size - */ - public function getChunkSize(): ?int - { - return $this->chunkSize; - } - - /** - * Check to see if the socket is currently available. - * - * UDP might appear to be connected but might fail when writing. See http://php.net/fsockopen for details. - */ - public function isConnected(): bool - { - return is_resource($this->resource) - && !feof($this->resource); // on TCP - other party can close connection. - } - - /** - * Wrapper to allow mocking - * - * @return resource|false - */ - protected function pfsockopen() - { - return @pfsockopen($this->connectionString, -1, $this->errno, $this->errstr, $this->connectionTimeout); - } - - /** - * Wrapper to allow mocking - * - * @return resource|false - */ - protected function fsockopen() - { - return @fsockopen($this->connectionString, -1, $this->errno, $this->errstr, $this->connectionTimeout); - } - - /** - * Wrapper to allow mocking - * - * @see http://php.net/manual/en/function.stream-set-timeout.php - */ - protected function streamSetTimeout(): bool - { - $seconds = floor($this->timeout); - $microseconds = round(($this->timeout - $seconds) * 1e6); - - if (!is_resource($this->resource)) { - throw new \LogicException('streamSetTimeout called but $this->resource is not a resource'); - } - - return stream_set_timeout($this->resource, (int) $seconds, (int) $microseconds); - } - - /** - * Wrapper to allow mocking - * - * @see http://php.net/manual/en/function.stream-set-chunk-size.php - * - * @return int|false - */ - protected function streamSetChunkSize(): int|bool - { - if (!is_resource($this->resource)) { - throw new \LogicException('streamSetChunkSize called but $this->resource is not a resource'); - } - - if (null === $this->chunkSize) { - throw new \LogicException('streamSetChunkSize called but $this->chunkSize is not set'); - } - - return stream_set_chunk_size($this->resource, $this->chunkSize); - } - - /** - * Wrapper to allow mocking - * - * @return int|false - */ - protected function fwrite(string $data): int|bool - { - if (!is_resource($this->resource)) { - throw new \LogicException('fwrite called but $this->resource is not a resource'); - } - - return @fwrite($this->resource, $data); - } - - /** - * Wrapper to allow mocking - * - * @return mixed[]|bool - */ - protected function streamGetMetadata(): array|bool - { - if (!is_resource($this->resource)) { - throw new \LogicException('streamGetMetadata called but $this->resource is not a resource'); - } - - return stream_get_meta_data($this->resource); - } - - private function validateTimeout(float $value): void - { - if ($value < 0) { - throw new \InvalidArgumentException("Timeout must be 0 or a positive float (got $value)"); - } - } - - private function connectIfNotConnected(): void - { - if ($this->isConnected()) { - return; - } - $this->connect(); - } - - protected function generateDataStream(LogRecord $record): string - { - return (string) $record->formatted; - } - - /** - * @return resource|null - */ - protected function getResource() - { - return $this->resource; - } - - private function connect(): void - { - $this->createSocketResource(); - $this->setSocketTimeout(); - $this->setStreamChunkSize(); - } - - private function createSocketResource(): void - { - if ($this->isPersistent()) { - $resource = $this->pfsockopen(); - } else { - $resource = $this->fsockopen(); - } - if (is_bool($resource)) { - throw new \UnexpectedValueException("Failed connecting to $this->connectionString ($this->errno: $this->errstr)"); - } - $this->resource = $resource; - } - - private function setSocketTimeout(): void - { - if (!$this->streamSetTimeout()) { - throw new \UnexpectedValueException("Failed setting timeout with stream_set_timeout()"); - } - } - - private function setStreamChunkSize(): void - { - if (null !== $this->chunkSize && false === $this->streamSetChunkSize()) { - throw new \UnexpectedValueException("Failed setting chunk size with stream_set_chunk_size()"); - } - } - - private function writeToSocket(string $data): void - { - $length = strlen($data); - $sent = 0; - $this->lastSentBytes = $sent; - while ($this->isConnected() && $sent < $length) { - if (0 == $sent) { - $chunk = $this->fwrite($data); - } else { - $chunk = $this->fwrite(substr($data, $sent)); - } - if ($chunk === false) { - throw new \RuntimeException("Could not write to socket"); - } - $sent += $chunk; - $socketInfo = $this->streamGetMetadata(); - if (is_array($socketInfo) && (bool) $socketInfo['timed_out']) { - throw new \RuntimeException("Write timed-out"); - } - - if ($this->writingIsTimedOut($sent)) { - throw new \RuntimeException("Write timed-out, no data sent for `{$this->writingTimeout}` seconds, probably we got disconnected (sent $sent of $length)"); - } - } - if (!$this->isConnected() && $sent < $length) { - throw new \RuntimeException("End-of-file reached, probably we got disconnected (sent $sent of $length)"); - } - } - - private function writingIsTimedOut(int $sent): bool - { - // convert to ms - if (0.0 == $this->writingTimeout) { - return false; - } - - if ($sent !== $this->lastSentBytes) { - $this->lastWritingAt = microtime(true); - $this->lastSentBytes = $sent; - - return false; - } else { - usleep(100); - } - - if ((microtime(true) - (float) $this->lastWritingAt) >= $this->writingTimeout) { - $this->closeSocket(); - - return true; - } - - return false; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SqsHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SqsHandler.php deleted file mode 100644 index b4512a60..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/SqsHandler.php +++ /dev/null @@ -1,61 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Aws\Sqs\SqsClient; -use Monolog\Level; -use Monolog\Utils; -use Monolog\LogRecord; - -/** - * Writes to any sqs queue. - * - * @author Martijn van Calker - */ -class SqsHandler extends AbstractProcessingHandler -{ - /** 256 KB in bytes - maximum message size in SQS */ - protected const MAX_MESSAGE_SIZE = 262144; - /** 100 KB in bytes - head message size for new error log */ - protected const HEAD_MESSAGE_SIZE = 102400; - - private SqsClient $client; - private string $queueUrl; - - public function __construct(SqsClient $sqsClient, string $queueUrl, int|string|Level $level = Level::Debug, bool $bubble = true) - { - parent::__construct($level, $bubble); - - $this->client = $sqsClient; - $this->queueUrl = $queueUrl; - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - if (!isset($record->formatted) || 'string' !== gettype($record->formatted)) { - throw new \InvalidArgumentException('SqsHandler accepts only formatted records as a string' . Utils::getRecordMessageForException($record)); - } - - $messageBody = $record->formatted; - if (strlen($messageBody) >= static::MAX_MESSAGE_SIZE) { - $messageBody = Utils::substr($messageBody, 0, static::HEAD_MESSAGE_SIZE); - } - - $this->client->sendMessage([ - 'QueueUrl' => $this->queueUrl, - 'MessageBody' => $messageBody, - ]); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php deleted file mode 100644 index a87577c8..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php +++ /dev/null @@ -1,205 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\Utils; -use Monolog\LogRecord; - -/** - * Stores to any stream resource - * - * Can be used to store into php://stderr, remote and local files, etc. - * - * @author Jordi Boggiano - */ -class StreamHandler extends AbstractProcessingHandler -{ - protected const MAX_CHUNK_SIZE = 2147483647; - /** 10MB */ - protected const DEFAULT_CHUNK_SIZE = 10 * 1024 * 1024; - protected int $streamChunkSize; - /** @var resource|null */ - protected $stream; - protected string|null $url = null; - private string|null $errorMessage = null; - protected int|null $filePermission; - protected bool $useLocking; - /** @var true|null */ - private bool|null $dirCreated = null; - - /** - * @param resource|string $stream If a missing path can't be created, an UnexpectedValueException will be thrown on first write - * @param int|null $filePermission Optional file permissions (default (0644) are only for owner read/write) - * @param bool $useLocking Try to lock log file before doing any writes - * - * @throws \InvalidArgumentException If stream is not a resource or string - */ - public function __construct($stream, int|string|Level $level = Level::Debug, bool $bubble = true, ?int $filePermission = null, bool $useLocking = false) - { - parent::__construct($level, $bubble); - - if (($phpMemoryLimit = Utils::expandIniShorthandBytes(ini_get('memory_limit'))) !== false) { - if ($phpMemoryLimit > 0) { - // use max 10% of allowed memory for the chunk size, and at least 100KB - $this->streamChunkSize = min(static::MAX_CHUNK_SIZE, max((int) ($phpMemoryLimit / 10), 100 * 1024)); - } else { - // memory is unlimited, set to the default 10MB - $this->streamChunkSize = static::DEFAULT_CHUNK_SIZE; - } - } else { - // no memory limit information, set to the default 10MB - $this->streamChunkSize = static::DEFAULT_CHUNK_SIZE; - } - - if (is_resource($stream)) { - $this->stream = $stream; - - stream_set_chunk_size($this->stream, $this->streamChunkSize); - } elseif (is_string($stream)) { - $this->url = Utils::canonicalizePath($stream); - } else { - throw new \InvalidArgumentException('A stream must either be a resource or a string.'); - } - - $this->filePermission = $filePermission; - $this->useLocking = $useLocking; - } - - /** - * @inheritDoc - */ - public function close(): void - { - if (null !== $this->url && is_resource($this->stream)) { - fclose($this->stream); - } - $this->stream = null; - $this->dirCreated = null; - } - - /** - * Return the currently active stream if it is open - * - * @return resource|null - */ - public function getStream() - { - return $this->stream; - } - - /** - * Return the stream URL if it was configured with a URL and not an active resource - */ - public function getUrl(): ?string - { - return $this->url; - } - - public function getStreamChunkSize(): int - { - return $this->streamChunkSize; - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - if (!is_resource($this->stream)) { - $url = $this->url; - if (null === $url || '' === $url) { - throw new \LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().' . Utils::getRecordMessageForException($record)); - } - $this->createDir($url); - $this->errorMessage = null; - set_error_handler([$this, 'customErrorHandler']); - try { - $stream = fopen($url, 'a'); - if ($this->filePermission !== null) { - @chmod($url, $this->filePermission); - } - } finally { - restore_error_handler(); - } - if (!is_resource($stream)) { - $this->stream = null; - - throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened in append mode: '.$this->errorMessage, $url) . Utils::getRecordMessageForException($record)); - } - stream_set_chunk_size($stream, $this->streamChunkSize); - $this->stream = $stream; - } - - $stream = $this->stream; - if ($this->useLocking) { - // ignoring errors here, there's not much we can do about them - flock($stream, LOCK_EX); - } - - $this->streamWrite($stream, $record); - - if ($this->useLocking) { - flock($stream, LOCK_UN); - } - } - - /** - * Write to stream - * @param resource $stream - */ - protected function streamWrite($stream, LogRecord $record): void - { - fwrite($stream, (string) $record->formatted); - } - - private function customErrorHandler(int $code, string $msg): bool - { - $this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }', '', $msg); - - return true; - } - - private function getDirFromStream(string $stream): ?string - { - $pos = strpos($stream, '://'); - if ($pos === false) { - return dirname($stream); - } - - if ('file://' === substr($stream, 0, 7)) { - return dirname(substr($stream, 7)); - } - - return null; - } - - private function createDir(string $url): void - { - // Do not try to create dir if it has already been tried. - if (true === $this->dirCreated) { - return; - } - - $dir = $this->getDirFromStream($url); - if (null !== $dir && !is_dir($dir)) { - $this->errorMessage = null; - set_error_handler([$this, 'customErrorHandler']); - $status = mkdir($dir, 0777, true); - restore_error_handler(); - if (false === $status && !is_dir($dir) && strpos((string) $this->errorMessage, 'File exists') === false) { - throw new \UnexpectedValueException(sprintf('There is no existing directory at "%s" and it could not be created: '.$this->errorMessage, $dir)); - } - } - $this->dirCreated = true; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SymfonyMailerHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SymfonyMailerHandler.php deleted file mode 100644 index 842b6577..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/SymfonyMailerHandler.php +++ /dev/null @@ -1,109 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Closure; -use Monolog\Level; -use Monolog\Logger; -use Monolog\LogRecord; -use Monolog\Utils; -use Monolog\Formatter\FormatterInterface; -use Monolog\Formatter\LineFormatter; -use Symfony\Component\Mailer\MailerInterface; -use Symfony\Component\Mailer\Transport\TransportInterface; -use Symfony\Component\Mime\Email; - -/** - * SymfonyMailerHandler uses Symfony's Mailer component to send the emails - * - * @author Jordi Boggiano - */ -class SymfonyMailerHandler extends MailHandler -{ - protected MailerInterface|TransportInterface $mailer; - /** @var Email|Closure(string, LogRecord[]): Email */ - private Email|Closure $emailTemplate; - - /** - * @phpstan-param Email|Closure(string, LogRecord[]): Email $email - * - * @param MailerInterface|TransportInterface $mailer The mailer to use - * @param Closure|Email $email An email template, the subject/body will be replaced - */ - public function __construct($mailer, Email|Closure $email, int|string|Level $level = Level::Error, bool $bubble = true) - { - parent::__construct($level, $bubble); - - $this->mailer = $mailer; - $this->emailTemplate = $email; - } - - /** - * {@inheritDoc} - */ - protected function send(string $content, array $records): void - { - $this->mailer->send($this->buildMessage($content, $records)); - } - - /** - * Gets the formatter for the Swift_Message subject. - * - * @param string|null $format The format of the subject - */ - protected function getSubjectFormatter(?string $format): FormatterInterface - { - return new LineFormatter($format); - } - - /** - * Creates instance of Email to be sent - * - * @param string $content formatted email body to be sent - * @param LogRecord[] $records Log records that formed the content - */ - protected function buildMessage(string $content, array $records): Email - { - $message = null; - if ($this->emailTemplate instanceof Email) { - $message = clone $this->emailTemplate; - } elseif (is_callable($this->emailTemplate)) { - $message = ($this->emailTemplate)($content, $records); - } - - if (!$message instanceof Email) { - $record = reset($records); - throw new \InvalidArgumentException('Could not resolve message as instance of Email or a callable returning it' . ($record instanceof LogRecord ? Utils::getRecordMessageForException($record) : '')); - } - - if (\count($records) > 0) { - $subjectFormatter = $this->getSubjectFormatter($message->getSubject()); - $message->subject($subjectFormatter->format($this->getHighestRecord($records))); - } - - if ($this->isHtmlBody($content)) { - if (null !== ($charset = $message->getHtmlCharset())) { - $message->html($content, $charset); - } else { - $message->html($content); - } - } else { - if (null !== ($charset = $message->getTextCharset())) { - $message->text($content, $charset); - } else { - $message->text($content); - } - } - - return $message->date(new \DateTimeImmutable()); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php deleted file mode 100644 index 99507a17..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\Utils; -use Monolog\LogRecord; - -/** - * Logs to syslog service. - * - * usage example: - * - * $log = new Logger('application'); - * $syslog = new SyslogHandler('myfacility', 'local6'); - * $formatter = new LineFormatter("%channel%.%level_name%: %message% %extra%"); - * $syslog->setFormatter($formatter); - * $log->pushHandler($syslog); - * - * @author Sven Paulus - */ -class SyslogHandler extends AbstractSyslogHandler -{ - protected string $ident; - protected int $logopts; - - /** - * @param string|int $facility Either one of the names of the keys in $this->facilities, or a LOG_* facility constant - * @param int $logopts Option flags for the openlog() call, defaults to LOG_PID - */ - public function __construct(string $ident, string|int $facility = LOG_USER, int|string|Level $level = Level::Debug, bool $bubble = true, int $logopts = LOG_PID) - { - parent::__construct($facility, $level, $bubble); - - $this->ident = $ident; - $this->logopts = $logopts; - } - - /** - * @inheritDoc - */ - public function close(): void - { - closelog(); - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - openlog($this->ident, $this->logopts, $this->facility); - syslog($this->toSyslogPriority($record->level), (string) $record->formatted); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php b/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php deleted file mode 100644 index 6a483345..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php +++ /dev/null @@ -1,77 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler\SyslogUdp; - -use Monolog\Utils; -use Socket; - -class UdpSocket -{ - protected const DATAGRAM_MAX_LENGTH = 65023; - - protected string $ip; - protected int $port; - protected ?Socket $socket = null; - - public function __construct(string $ip, int $port = 514) - { - $this->ip = $ip; - $this->port = $port; - } - - public function write(string $line, string $header = ""): void - { - $this->send($this->assembleMessage($line, $header)); - } - - public function close(): void - { - if ($this->socket instanceof Socket) { - socket_close($this->socket); - $this->socket = null; - } - } - - protected function getSocket(): Socket - { - if (null !== $this->socket) { - return $this->socket; - } - - $domain = AF_INET; - $protocol = SOL_UDP; - // Check if we are using unix sockets. - if ($this->port === 0) { - $domain = AF_UNIX; - $protocol = IPPROTO_IP; - } - - $socket = socket_create($domain, SOCK_DGRAM, $protocol); - if ($socket instanceof Socket) { - return $this->socket = $socket; - } - - throw new \RuntimeException('The UdpSocket to '.$this->ip.':'.$this->port.' could not be opened via socket_create'); - } - - protected function send(string $chunk): void - { - socket_sendto($this->getSocket(), $chunk, strlen($chunk), $flags = 0, $this->ip, $this->port); - } - - protected function assembleMessage(string $line, string $header): string - { - $chunkSize = static::DATAGRAM_MAX_LENGTH - strlen($header); - - return $header . Utils::substr($line, 0, $chunkSize); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php deleted file mode 100644 index 60740935..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php +++ /dev/null @@ -1,154 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use DateTimeInterface; -use Monolog\Handler\SyslogUdp\UdpSocket; -use Monolog\Level; -use Monolog\LogRecord; -use Monolog\Utils; - -/** - * A Handler for logging to a remote syslogd server. - * - * @author Jesper Skovgaard Nielsen - * @author Dominik Kukacka - */ -class SyslogUdpHandler extends AbstractSyslogHandler -{ - const RFC3164 = 0; - const RFC5424 = 1; - const RFC5424e = 2; - - /** @var array */ - private array $dateFormats = [ - self::RFC3164 => 'M d H:i:s', - self::RFC5424 => \DateTime::RFC3339, - self::RFC5424e => \DateTime::RFC3339_EXTENDED, - ]; - - protected UdpSocket $socket; - protected string $ident; - /** @var self::RFC* */ - protected int $rfc; - - /** - * @param string $host Either IP/hostname or a path to a unix socket (port must be 0 then) - * @param int $port Port number, or 0 if $host is a unix socket - * @param string|int $facility Either one of the names of the keys in $this->facilities, or a LOG_* facility constant - * @param bool $bubble Whether the messages that are handled can bubble up the stack or not - * @param string $ident Program name or tag for each log message. - * @param int $rfc RFC to format the message for. - * @throws MissingExtensionException when there is no socket extension - * - * @phpstan-param self::RFC* $rfc - */ - public function __construct(string $host, int $port = 514, string|int $facility = LOG_USER, int|string|Level $level = Level::Debug, bool $bubble = true, string $ident = 'php', int $rfc = self::RFC5424) - { - if (!extension_loaded('sockets')) { - throw new MissingExtensionException('The sockets extension is required to use the SyslogUdpHandler'); - } - - parent::__construct($facility, $level, $bubble); - - $this->ident = $ident; - $this->rfc = $rfc; - - $this->socket = new UdpSocket($host, $port); - } - - protected function write(LogRecord $record): void - { - $lines = $this->splitMessageIntoLines($record->formatted); - - $header = $this->makeCommonSyslogHeader($this->toSyslogPriority($record->level), $record->datetime); - - foreach ($lines as $line) { - $this->socket->write($line, $header); - } - } - - public function close(): void - { - $this->socket->close(); - } - - /** - * @param string|string[] $message - * @return string[] - */ - private function splitMessageIntoLines($message): array - { - if (is_array($message)) { - $message = implode("\n", $message); - } - - $lines = preg_split('/$\R?^/m', (string) $message, -1, PREG_SPLIT_NO_EMPTY); - if (false === $lines) { - $pcreErrorCode = preg_last_error(); - - throw new \RuntimeException('Could not preg_split: ' . $pcreErrorCode . ' / ' . Utils::pcreLastErrorMessage($pcreErrorCode)); - } - - return $lines; - } - - /** - * Make common syslog header (see rfc5424 or rfc3164) - */ - protected function makeCommonSyslogHeader(int $severity, DateTimeInterface $datetime): string - { - $priority = $severity + $this->facility; - - $pid = getmypid(); - if (false === $pid) { - $pid = '-'; - } - - $hostname = gethostname(); - if (false === $hostname) { - $hostname = '-'; - } - - if ($this->rfc === self::RFC3164) { - // see https://github.com/phpstan/phpstan/issues/5348 - // @phpstan-ignore-next-line - $dateNew = $datetime->setTimezone(new \DateTimeZone('UTC')); - $date = $dateNew->format($this->dateFormats[$this->rfc]); - - return "<$priority>" . - $date . " " . - $hostname . " " . - $this->ident . "[" . $pid . "]: "; - } - - $date = $datetime->format($this->dateFormats[$this->rfc]); - - return "<$priority>1 " . - $date . " " . - $hostname . " " . - $this->ident . " " . - $pid . " - - "; - } - - /** - * Inject your own socket, mainly used for testing - * - * @return $this - */ - public function setSocket(UdpSocket $socket): self - { - $this->socket = $socket; - - return $this; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/TelegramBotHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/TelegramBotHandler.php deleted file mode 100644 index feaa002f..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/TelegramBotHandler.php +++ /dev/null @@ -1,297 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use RuntimeException; -use Monolog\Level; -use Monolog\Utils; -use Monolog\LogRecord; - -/** - * Handler sends logs to Telegram using Telegram Bot API. - * - * How to use: - * 1) Create a Telegram bot with https://telegram.me/BotFather; - * 2) Create a Telegram channel or a group where logs will be recorded; - * 3) Add the created bot from step 1 to the created channel/group from step 2. - * - * In order to create an instance of TelegramBotHandler use - * 1. The Telegram bot API key from step 1 - * 2. The channel name with the `@` prefix if you created a public channel (e.g. `@my_public_channel`), - * or the channel ID with the `-100` prefix if you created a private channel (e.g. `-1001234567890`), - * or the group ID from step 2 (e.g. `-1234567890`). - * - * @link https://core.telegram.org/bots/api - * - * @author Mazur Alexandr - */ -class TelegramBotHandler extends AbstractProcessingHandler -{ - private const BOT_API = 'https://api.telegram.org/bot'; - - /** - * The available values of parseMode according to the Telegram api documentation - */ - private const AVAILABLE_PARSE_MODES = [ - 'HTML', - 'MarkdownV2', - 'Markdown', // legacy mode without underline and strikethrough, use MarkdownV2 instead - ]; - - /** - * The maximum number of characters allowed in a message according to the Telegram api documentation - */ - private const MAX_MESSAGE_LENGTH = 4096; - - /** - * Telegram bot access token provided by BotFather. - * Create telegram bot with https://telegram.me/BotFather and use access token from it. - */ - private string $apiKey; - - /** - * Telegram channel name. - * Since to start with '@' symbol as prefix. - */ - private string $channel; - - /** - * The kind of formatting that is used for the message. - * See available options at https://core.telegram.org/bots/api#formatting-options - * or in AVAILABLE_PARSE_MODES - */ - private string|null $parseMode; - - /** - * Disables link previews for links in the message. - */ - private bool|null $disableWebPagePreview; - - /** - * Sends the message silently. Users will receive a notification with no sound. - */ - private bool|null $disableNotification; - - /** - * True - split a message longer than MAX_MESSAGE_LENGTH into parts and send in multiple messages. - * False - truncates a message that is too long. - */ - private bool $splitLongMessages; - - /** - * Adds 1-second delay between sending a split message (according to Telegram API to avoid 429 Too Many Requests). - */ - private bool $delayBetweenMessages; - - /** - * Telegram message thread id, unique identifier for the target message thread (topic) of the forum; for forum supergroups only - * See how to get the `message_thread_id` https://stackoverflow.com/a/75178418 - */ - private int|null $topic; - - /** - * @param string $apiKey Telegram bot access token provided by BotFather - * @param string $channel Telegram channel name - * @param bool $splitLongMessages Split a message longer than MAX_MESSAGE_LENGTH into parts and send in multiple messages - * @param bool $delayBetweenMessages Adds delay between sending a split message according to Telegram API - * @param int $topic Telegram message thread id, unique identifier for the target message thread (topic) of the forum - * @throws MissingExtensionException If the curl extension is missing - */ - public function __construct( - string $apiKey, - string $channel, - $level = Level::Debug, - bool $bubble = true, - string $parseMode = null, - bool $disableWebPagePreview = null, - bool $disableNotification = null, - bool $splitLongMessages = false, - bool $delayBetweenMessages = false, - int $topic = null - ) { - if (!extension_loaded('curl')) { - throw new MissingExtensionException('The curl extension is needed to use the TelegramBotHandler'); - } - - parent::__construct($level, $bubble); - - $this->apiKey = $apiKey; - $this->channel = $channel; - $this->setParseMode($parseMode); - $this->disableWebPagePreview($disableWebPagePreview); - $this->disableNotification($disableNotification); - $this->splitLongMessages($splitLongMessages); - $this->delayBetweenMessages($delayBetweenMessages); - $this->setTopic($topic); - } - - /** - * @return $this - */ - public function setParseMode(string $parseMode = null): self - { - if ($parseMode !== null && !in_array($parseMode, self::AVAILABLE_PARSE_MODES, true)) { - throw new \InvalidArgumentException('Unknown parseMode, use one of these: ' . implode(', ', self::AVAILABLE_PARSE_MODES) . '.'); - } - - $this->parseMode = $parseMode; - - return $this; - } - - /** - * @return $this - */ - public function disableWebPagePreview(bool $disableWebPagePreview = null): self - { - $this->disableWebPagePreview = $disableWebPagePreview; - - return $this; - } - - /** - * @return $this - */ - public function disableNotification(bool $disableNotification = null): self - { - $this->disableNotification = $disableNotification; - - return $this; - } - - /** - * True - split a message longer than MAX_MESSAGE_LENGTH into parts and send in multiple messages. - * False - truncates a message that is too long. - * - * @return $this - */ - public function splitLongMessages(bool $splitLongMessages = false): self - { - $this->splitLongMessages = $splitLongMessages; - - return $this; - } - - /** - * Adds 1-second delay between sending a split message (according to Telegram API to avoid 429 Too Many Requests). - * - * @return $this - */ - public function delayBetweenMessages(bool $delayBetweenMessages = false): self - { - $this->delayBetweenMessages = $delayBetweenMessages; - - return $this; - } - - /** - * @return $this - */ - public function setTopic(int $topic = null): self - { - $this->topic = $topic; - - return $this; - } - - /** - * @inheritDoc - */ - public function handleBatch(array $records): void - { - $messages = []; - - foreach ($records as $record) { - if (!$this->isHandling($record)) { - continue; - } - - if (\count($this->processors) > 0) { - $record = $this->processRecord($record); - } - - $messages[] = $record; - } - - if (\count($messages) > 0) { - $this->send((string) $this->getFormatter()->formatBatch($messages)); - } - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - $this->send($record->formatted); - } - - /** - * Send request to @link https://api.telegram.org/bot on SendMessage action. - */ - protected function send(string $message): void - { - $messages = $this->handleMessageLength($message); - - foreach ($messages as $key => $msg) { - if ($this->delayBetweenMessages && $key > 0) { - sleep(1); - } - - $this->sendCurl($msg); - } - } - - protected function sendCurl(string $message): void - { - $ch = curl_init(); - $url = self::BOT_API . $this->apiKey . '/SendMessage'; - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); - $params = [ - 'text' => $message, - 'chat_id' => $this->channel, - 'parse_mode' => $this->parseMode, - 'disable_web_page_preview' => $this->disableWebPagePreview, - 'disable_notification' => $this->disableNotification, - ]; - if ($this->topic !== null) { - $params['message_thread_id'] = $this->topic; - } - curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); - - $result = Curl\Util::execute($ch); - if (!is_string($result)) { - throw new RuntimeException('Telegram API error. Description: No response'); - } - $result = json_decode($result, true); - - if ($result['ok'] === false) { - throw new RuntimeException('Telegram API error. Description: ' . $result['description']); - } - } - - /** - * Handle a message that is too long: truncates or splits into several - * @return string[] - */ - private function handleMessageLength(string $message): array - { - $truncatedMarker = ' (...truncated)'; - if (!$this->splitLongMessages && strlen($message) > self::MAX_MESSAGE_LENGTH) { - return [Utils::substr($message, 0, self::MAX_MESSAGE_LENGTH - strlen($truncatedMarker)) . $truncatedMarker]; - } - - return str_split($message, self::MAX_MESSAGE_LENGTH); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php deleted file mode 100644 index 8e356ef3..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php +++ /dev/null @@ -1,195 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Level; -use Monolog\Logger; -use Psr\Log\LogLevel; -use Monolog\LogRecord; - -/** - * Used for testing purposes. - * - * It records all records and gives you access to them for verification. - * - * @author Jordi Boggiano - * - * @method bool hasEmergency(string|array $recordAssertions) - * @method bool hasAlert(string|array $recordAssertions) - * @method bool hasCritical(string|array $recordAssertions) - * @method bool hasError(string|array $recordAssertions) - * @method bool hasWarning(string|array $recordAssertions) - * @method bool hasNotice(string|array $recordAssertions) - * @method bool hasInfo(string|array $recordAssertions) - * @method bool hasDebug(string|array $recordAssertions) - * - * @method bool hasEmergencyRecords() - * @method bool hasAlertRecords() - * @method bool hasCriticalRecords() - * @method bool hasErrorRecords() - * @method bool hasWarningRecords() - * @method bool hasNoticeRecords() - * @method bool hasInfoRecords() - * @method bool hasDebugRecords() - * - * @method bool hasEmergencyThatContains(string $message) - * @method bool hasAlertThatContains(string $message) - * @method bool hasCriticalThatContains(string $message) - * @method bool hasErrorThatContains(string $message) - * @method bool hasWarningThatContains(string $message) - * @method bool hasNoticeThatContains(string $message) - * @method bool hasInfoThatContains(string $message) - * @method bool hasDebugThatContains(string $message) - * - * @method bool hasEmergencyThatMatches(string $regex) - * @method bool hasAlertThatMatches(string $regex) - * @method bool hasCriticalThatMatches(string $regex) - * @method bool hasErrorThatMatches(string $regex) - * @method bool hasWarningThatMatches(string $regex) - * @method bool hasNoticeThatMatches(string $regex) - * @method bool hasInfoThatMatches(string $regex) - * @method bool hasDebugThatMatches(string $regex) - * - * @method bool hasEmergencyThatPasses(callable $predicate) - * @method bool hasAlertThatPasses(callable $predicate) - * @method bool hasCriticalThatPasses(callable $predicate) - * @method bool hasErrorThatPasses(callable $predicate) - * @method bool hasWarningThatPasses(callable $predicate) - * @method bool hasNoticeThatPasses(callable $predicate) - * @method bool hasInfoThatPasses(callable $predicate) - * @method bool hasDebugThatPasses(callable $predicate) - */ -class TestHandler extends AbstractProcessingHandler -{ - /** @var LogRecord[] */ - protected array $records = []; - /** @phpstan-var array, LogRecord[]> */ - protected array $recordsByLevel = []; - private bool $skipReset = false; - - /** - * @return array - */ - public function getRecords(): array - { - return $this->records; - } - - public function clear(): void - { - $this->records = []; - $this->recordsByLevel = []; - } - - public function reset(): void - { - if (!$this->skipReset) { - $this->clear(); - } - } - - public function setSkipReset(bool $skipReset): void - { - $this->skipReset = $skipReset; - } - - /** - * @param int|string|Level|LogLevel::* $level Logging level value or name - * - * @phpstan-param value-of|value-of|Level|LogLevel::* $level - */ - public function hasRecords(int|string|Level $level): bool - { - return isset($this->recordsByLevel[Logger::toMonologLevel($level)->value]); - } - - /** - * @param string|array $recordAssertions Either a message string or an array containing message and optionally context keys that will be checked against all records - * - * @phpstan-param array{message: string, context?: mixed[]}|string $recordAssertions - */ - public function hasRecord(string|array $recordAssertions, Level $level): bool - { - if (is_string($recordAssertions)) { - $recordAssertions = ['message' => $recordAssertions]; - } - - return $this->hasRecordThatPasses(function (LogRecord $rec) use ($recordAssertions) { - if ($rec->message !== $recordAssertions['message']) { - return false; - } - if (isset($recordAssertions['context']) && $rec->context !== $recordAssertions['context']) { - return false; - } - - return true; - }, $level); - } - - public function hasRecordThatContains(string $message, Level $level): bool - { - return $this->hasRecordThatPasses(fn (LogRecord $rec) => str_contains($rec->message, $message), $level); - } - - public function hasRecordThatMatches(string $regex, Level $level): bool - { - return $this->hasRecordThatPasses(fn (LogRecord $rec) => preg_match($regex, $rec->message) > 0, $level); - } - - /** - * @phpstan-param callable(LogRecord, int): mixed $predicate - */ - public function hasRecordThatPasses(callable $predicate, Level $level): bool - { - $level = Logger::toMonologLevel($level); - - if (!isset($this->recordsByLevel[$level->value])) { - return false; - } - - foreach ($this->recordsByLevel[$level->value] as $i => $rec) { - if ((bool) $predicate($rec, $i)) { - return true; - } - } - - return false; - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - $this->recordsByLevel[$record->level->value][] = $record; - $this->records[] = $record; - } - - /** - * @param mixed[] $args - */ - public function __call(string $method, array $args): bool - { - if (preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) { - $genericMethod = $matches[1] . ('Records' !== $matches[3] ? 'Record' : '') . $matches[3]; - $level = constant(Level::class.'::' . $matches[2]); - $callback = [$this, $genericMethod]; - if (is_callable($callback)) { - $args[] = $level; - - return call_user_func_array($callback, $args); - } - } - - throw new \BadMethodCallException('Call to undefined method ' . get_class($this) . '::' . $method . '()'); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/WebRequestRecognizerTrait.php b/vendor/monolog/monolog/src/Monolog/Handler/WebRequestRecognizerTrait.php deleted file mode 100644 index 9c12c3d5..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/WebRequestRecognizerTrait.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -trait WebRequestRecognizerTrait -{ - /** - * Checks if PHP's serving a web request - */ - protected function isWebRequest(): bool - { - return 'cli' !== \PHP_SAPI && 'phpdbg' !== \PHP_SAPI; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php deleted file mode 100644 index 932fa70e..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php +++ /dev/null @@ -1,80 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\LogRecord; -use Throwable; - -/** - * Forwards records to multiple handlers suppressing failures of each handler - * and continuing through to give every handler a chance to succeed. - * - * @author Craig D'Amelio - */ -class WhatFailureGroupHandler extends GroupHandler -{ - /** - * @inheritDoc - */ - public function handle(LogRecord $record): bool - { - if (\count($this->processors) > 0) { - $record = $this->processRecord($record); - } - - foreach ($this->handlers as $handler) { - try { - $handler->handle(clone $record); - } catch (Throwable) { - // What failure? - } - } - - return false === $this->bubble; - } - - /** - * @inheritDoc - */ - public function handleBatch(array $records): void - { - if (\count($this->processors) > 0) { - $processed = []; - foreach ($records as $record) { - $processed[] = $this->processRecord($record); - } - $records = $processed; - } - - foreach ($this->handlers as $handler) { - try { - $handler->handleBatch(array_map(fn ($record) => clone $record, $records)); - } catch (Throwable) { - // What failure? - } - } - } - - /** - * {@inheritDoc} - */ - public function close(): void - { - foreach ($this->handlers as $handler) { - try { - $handler->close(); - } catch (\Throwable $e) { - // What failure? - } - } - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php b/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php deleted file mode 100644 index 1e71194b..00000000 --- a/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php +++ /dev/null @@ -1,90 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Handler; - -use Monolog\Formatter\FormatterInterface; -use Monolog\Formatter\NormalizerFormatter; -use Monolog\Level; -use Monolog\LogRecord; - -/** - * Handler sending logs to Zend Monitor - * - * @author Christian Bergau - * @author Jason Davis - */ -class ZendMonitorHandler extends AbstractProcessingHandler -{ - /** - * @throws MissingExtensionException - */ - public function __construct(int|string|Level $level = Level::Debug, bool $bubble = true) - { - if (!function_exists('zend_monitor_custom_event')) { - throw new MissingExtensionException( - 'You must have Zend Server installed with Zend Monitor enabled in order to use this handler' - ); - } - - parent::__construct($level, $bubble); - } - - /** - * Translates Monolog log levels to ZendMonitor levels. - */ - protected function toZendMonitorLevel(Level $level): int - { - return match ($level) { - Level::Debug => \ZEND_MONITOR_EVENT_SEVERITY_INFO, - Level::Info => \ZEND_MONITOR_EVENT_SEVERITY_INFO, - Level::Notice => \ZEND_MONITOR_EVENT_SEVERITY_INFO, - Level::Warning => \ZEND_MONITOR_EVENT_SEVERITY_WARNING, - Level::Error => \ZEND_MONITOR_EVENT_SEVERITY_ERROR, - Level::Critical => \ZEND_MONITOR_EVENT_SEVERITY_ERROR, - Level::Alert => \ZEND_MONITOR_EVENT_SEVERITY_ERROR, - Level::Emergency => \ZEND_MONITOR_EVENT_SEVERITY_ERROR, - }; - } - - /** - * @inheritDoc - */ - protected function write(LogRecord $record): void - { - $this->writeZendMonitorCustomEvent( - $record->level->getName(), - $record->message, - $record->formatted, - $this->toZendMonitorLevel($record->level) - ); - } - - /** - * Write to Zend Monitor Events - * @param string $type Text displayed in "Class Name (custom)" field - * @param string $message Text displayed in "Error String" - * @param array $formatted Displayed in Custom Variables tab - * @param int $severity Set the event severity level (-1,0,1) - */ - protected function writeZendMonitorCustomEvent(string $type, string $message, array $formatted, int $severity): void - { - zend_monitor_custom_event($type, $message, $formatted, $severity); - } - - /** - * @inheritDoc - */ - public function getDefaultFormatter(): FormatterInterface - { - return new NormalizerFormatter(); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Level.php b/vendor/monolog/monolog/src/Monolog/Level.php deleted file mode 100644 index 097d4213..00000000 --- a/vendor/monolog/monolog/src/Monolog/Level.php +++ /dev/null @@ -1,209 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog; - -use Psr\Log\LogLevel; - -/** - * Represents the log levels - * - * Monolog supports the logging levels described by RFC 5424 {@see https://datatracker.ietf.org/doc/html/rfc5424} - * but due to BC the severity values used internally are not 0-7. - * - * To get the level name/value out of a Level there are several options: - * - * - Use ->getName() to get the standard Monolog name which is full uppercased (e.g. "DEBUG") - * - Use ->toPsrLogLevel() to get the standard PSR-3 name which is full lowercased (e.g. "debug") - * - Use ->toRFC5424Level() to get the standard RFC 5424 value (e.g. 7 for debug, 0 for emergency) - * - Use ->name to get the enum case's name which is capitalized (e.g. "Debug") - * - * To get the internal value for filtering, if the includes/isLowerThan/isHigherThan methods are - * not enough, you can use ->value to get the enum case's integer value. - */ -enum Level: int -{ - /** - * Detailed debug information - */ - case Debug = 100; - - /** - * Interesting events - * - * Examples: User logs in, SQL logs. - */ - case Info = 200; - - /** - * Uncommon events - */ - case Notice = 250; - - /** - * Exceptional occurrences that are not errors - * - * Examples: Use of deprecated APIs, poor use of an API, - * undesirable things that are not necessarily wrong. - */ - case Warning = 300; - - /** - * Runtime errors - */ - case Error = 400; - - /** - * Critical conditions - * - * Example: Application component unavailable, unexpected exception. - */ - case Critical = 500; - - /** - * Action must be taken immediately - * - * Example: Entire website down, database unavailable, etc. - * This should trigger the SMS alerts and wake you up. - */ - case Alert = 550; - - /** - * Urgent alert. - */ - case Emergency = 600; - - /** - * @param value-of|LogLevel::*|'Debug'|'Info'|'Notice'|'Warning'|'Error'|'Critical'|'Alert'|'Emergency' $name - * @return static - */ - public static function fromName(string $name): self - { - return match ($name) { - 'debug', 'Debug', 'DEBUG' => self::Debug, - 'info', 'Info', 'INFO' => self::Info, - 'notice', 'Notice', 'NOTICE' => self::Notice, - 'warning', 'Warning', 'WARNING' => self::Warning, - 'error', 'Error', 'ERROR' => self::Error, - 'critical', 'Critical', 'CRITICAL' => self::Critical, - 'alert', 'Alert', 'ALERT' => self::Alert, - 'emergency', 'Emergency', 'EMERGENCY' => self::Emergency, - }; - } - - /** - * @param value-of $value - * @return static - */ - public static function fromValue(int $value): self - { - return self::from($value); - } - - /** - * Returns true if the passed $level is higher or equal to $this - */ - public function includes(Level $level): bool - { - return $this->value <= $level->value; - } - - public function isHigherThan(Level $level): bool - { - return $this->value > $level->value; - } - - public function isLowerThan(Level $level): bool - { - return $this->value < $level->value; - } - - /** - * Returns the monolog standardized all-capitals name of the level - * - * Use this instead of $level->name which returns the enum case name (e.g. Debug vs DEBUG if you use getName()) - * - * @return value-of - */ - public function getName(): string - { - return match ($this) { - self::Debug => 'DEBUG', - self::Info => 'INFO', - self::Notice => 'NOTICE', - self::Warning => 'WARNING', - self::Error => 'ERROR', - self::Critical => 'CRITICAL', - self::Alert => 'ALERT', - self::Emergency => 'EMERGENCY', - }; - } - - /** - * Returns the PSR-3 level matching this instance - * - * @phpstan-return \Psr\Log\LogLevel::* - */ - public function toPsrLogLevel(): string - { - return match ($this) { - self::Debug => LogLevel::DEBUG, - self::Info => LogLevel::INFO, - self::Notice => LogLevel::NOTICE, - self::Warning => LogLevel::WARNING, - self::Error => LogLevel::ERROR, - self::Critical => LogLevel::CRITICAL, - self::Alert => LogLevel::ALERT, - self::Emergency => LogLevel::EMERGENCY, - }; - } - - /** - * Returns the RFC 5424 level matching this instance - * - * @phpstan-return int<0, 7> - */ - public function toRFC5424Level(): int - { - return match ($this) { - self::Debug => 7, - self::Info => 6, - self::Notice => 5, - self::Warning => 4, - self::Error => 3, - self::Critical => 2, - self::Alert => 1, - self::Emergency => 0, - }; - } - - public const VALUES = [ - 100, - 200, - 250, - 300, - 400, - 500, - 550, - 600, - ]; - - public const NAMES = [ - 'DEBUG', - 'INFO', - 'NOTICE', - 'WARNING', - 'ERROR', - 'CRITICAL', - 'ALERT', - 'EMERGENCY', - ]; -} diff --git a/vendor/monolog/monolog/src/Monolog/LogRecord.php b/vendor/monolog/monolog/src/Monolog/LogRecord.php deleted file mode 100644 index df758c58..00000000 --- a/vendor/monolog/monolog/src/Monolog/LogRecord.php +++ /dev/null @@ -1,124 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog; - -use ArrayAccess; - -/** - * Monolog log record - * - * @author Jordi Boggiano - * @template-implements ArrayAccess<'message'|'level'|'context'|'level_name'|'channel'|'datetime'|'extra', int|string|\DateTimeImmutable|array> - */ -class LogRecord implements ArrayAccess -{ - private const MODIFIABLE_FIELDS = [ - 'extra' => true, - 'formatted' => true, - ]; - - public function __construct( - public readonly \DateTimeImmutable $datetime, - public readonly string $channel, - public readonly Level $level, - public readonly string $message, - /** @var array */ - public readonly array $context = [], - /** @var array */ - public array $extra = [], - public mixed $formatted = null, - ) { - } - - public function offsetSet(mixed $offset, mixed $value): void - { - if ($offset === 'extra') { - if (!is_array($value)) { - throw new \InvalidArgumentException('extra must be an array'); - } - - $this->extra = $value; - - return; - } - - if ($offset === 'formatted') { - $this->formatted = $value; - - return; - } - - throw new \LogicException('Unsupported operation: setting '.$offset); - } - - public function offsetExists(mixed $offset): bool - { - if ($offset === 'level_name') { - return true; - } - - return isset($this->{$offset}); - } - - public function offsetUnset(mixed $offset): void - { - throw new \LogicException('Unsupported operation'); - } - - public function &offsetGet(mixed $offset): mixed - { - if ($offset === 'level_name' || $offset === 'level') { - // avoid returning readonly props by ref as this is illegal - if ($offset === 'level_name') { - $copy = $this->level->getName(); - } else { - $copy = $this->level->value; - } - - return $copy; - } - - if (isset(self::MODIFIABLE_FIELDS[$offset])) { - return $this->{$offset}; - } - - // avoid returning readonly props by ref as this is illegal - $copy = $this->{$offset}; - - return $copy; - } - - /** - * @phpstan-return array{message: string, context: mixed[], level: value-of, level_name: value-of, channel: string, datetime: \DateTimeImmutable, extra: mixed[]} - */ - public function toArray(): array - { - return [ - 'message' => $this->message, - 'context' => $this->context, - 'level' => $this->level->value, - 'level_name' => $this->level->getName(), - 'channel' => $this->channel, - 'datetime' => $this->datetime, - 'extra' => $this->extra, - ]; - } - - public function with(mixed ...$args): self - { - foreach (['message', 'context', 'level', 'channel', 'datetime', 'extra'] as $prop) { - $args[$prop] ??= $this->{$prop}; - } - - return new self(...$args); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Logger.php b/vendor/monolog/monolog/src/Monolog/Logger.php deleted file mode 100644 index b04194bf..00000000 --- a/vendor/monolog/monolog/src/Monolog/Logger.php +++ /dev/null @@ -1,749 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog; - -use Closure; -use DateTimeZone; -use Fiber; -use Monolog\Handler\HandlerInterface; -use Monolog\Processor\ProcessorInterface; -use Psr\Log\LoggerInterface; -use Psr\Log\InvalidArgumentException; -use Psr\Log\LogLevel; -use Throwable; -use Stringable; -use WeakMap; - -/** - * Monolog log channel - * - * It contains a stack of Handlers and a stack of Processors, - * and uses them to store records that are added to it. - * - * @author Jordi Boggiano - * @final - */ -class Logger implements LoggerInterface, ResettableInterface -{ - /** - * Detailed debug information - * - * @deprecated Use \Monolog\Level::Debug - */ - public const DEBUG = 100; - - /** - * Interesting events - * - * Examples: User logs in, SQL logs. - * - * @deprecated Use \Monolog\Level::Info - */ - public const INFO = 200; - - /** - * Uncommon events - * - * @deprecated Use \Monolog\Level::Notice - */ - public const NOTICE = 250; - - /** - * Exceptional occurrences that are not errors - * - * Examples: Use of deprecated APIs, poor use of an API, - * undesirable things that are not necessarily wrong. - * - * @deprecated Use \Monolog\Level::Warning - */ - public const WARNING = 300; - - /** - * Runtime errors - * - * @deprecated Use \Monolog\Level::Error - */ - public const ERROR = 400; - - /** - * Critical conditions - * - * Example: Application component unavailable, unexpected exception. - * - * @deprecated Use \Monolog\Level::Critical - */ - public const CRITICAL = 500; - - /** - * Action must be taken immediately - * - * Example: Entire website down, database unavailable, etc. - * This should trigger the SMS alerts and wake you up. - * - * @deprecated Use \Monolog\Level::Alert - */ - public const ALERT = 550; - - /** - * Urgent alert. - * - * @deprecated Use \Monolog\Level::Emergency - */ - public const EMERGENCY = 600; - - /** - * Monolog API version - * - * This is only bumped when API breaks are done and should - * follow the major version of the library - */ - public const API = 3; - - /** - * Mapping between levels numbers defined in RFC 5424 and Monolog ones - * - * @phpstan-var array $rfc_5424_levels - */ - private const RFC_5424_LEVELS = [ - 7 => Level::Debug, - 6 => Level::Info, - 5 => Level::Notice, - 4 => Level::Warning, - 3 => Level::Error, - 2 => Level::Critical, - 1 => Level::Alert, - 0 => Level::Emergency, - ]; - - protected string $name; - - /** - * The handler stack - * - * @var list - */ - protected array $handlers; - - /** - * Processors that will process all log records - * - * To process records of a single handler instead, add the processor on that specific handler - * - * @var array<(callable(LogRecord): LogRecord)|ProcessorInterface> - */ - protected array $processors; - - protected bool $microsecondTimestamps = true; - - protected DateTimeZone $timezone; - - protected Closure|null $exceptionHandler = null; - - /** - * Keeps track of depth to prevent infinite logging loops - */ - private int $logDepth = 0; - - /** - * @var WeakMap, int> Keeps track of depth inside fibers to prevent infinite logging loops - */ - private WeakMap $fiberLogDepth; - - /** - * Whether to detect infinite logging loops - * This can be disabled via {@see useLoggingLoopDetection} if you have async handlers that do not play well with this - */ - private bool $detectCycles = true; - - /** - * @param string $name The logging channel, a simple descriptive name that is attached to all log records - * @param HandlerInterface[] $handlers Optional stack of handlers, the first one in the array is called first, etc. - * @param callable[] $processors Optional array of processors - * @param DateTimeZone|null $timezone Optional timezone, if not provided date_default_timezone_get() will be used - * - * @phpstan-param array<(callable(LogRecord): LogRecord)|ProcessorInterface> $processors - */ - public function __construct(string $name, array $handlers = [], array $processors = [], DateTimeZone|null $timezone = null) - { - $this->name = $name; - $this->setHandlers($handlers); - $this->processors = $processors; - $this->timezone = $timezone ?? new DateTimeZone(date_default_timezone_get()); - $this->fiberLogDepth = new \WeakMap(); - } - - public function getName(): string - { - return $this->name; - } - - /** - * Return a new cloned instance with the name changed - * - * @return static - */ - public function withName(string $name): self - { - $new = clone $this; - $new->name = $name; - - return $new; - } - - /** - * Pushes a handler on to the stack. - * - * @return $this - */ - public function pushHandler(HandlerInterface $handler): self - { - array_unshift($this->handlers, $handler); - - return $this; - } - - /** - * Pops a handler from the stack - * - * @throws \LogicException If empty handler stack - */ - public function popHandler(): HandlerInterface - { - if (0 === \count($this->handlers)) { - throw new \LogicException('You tried to pop from an empty handler stack.'); - } - - return array_shift($this->handlers); - } - - /** - * Set handlers, replacing all existing ones. - * - * If a map is passed, keys will be ignored. - * - * @param list $handlers - * @return $this - */ - public function setHandlers(array $handlers): self - { - $this->handlers = []; - foreach (array_reverse($handlers) as $handler) { - $this->pushHandler($handler); - } - - return $this; - } - - /** - * @return list - */ - public function getHandlers(): array - { - return $this->handlers; - } - - /** - * Adds a processor on to the stack. - * - * @phpstan-param ProcessorInterface|(callable(LogRecord): LogRecord) $callback - * @return $this - */ - public function pushProcessor(ProcessorInterface|callable $callback): self - { - array_unshift($this->processors, $callback); - - return $this; - } - - /** - * Removes the processor on top of the stack and returns it. - * - * @phpstan-return ProcessorInterface|(callable(LogRecord): LogRecord) - * @throws \LogicException If empty processor stack - */ - public function popProcessor(): callable - { - if (0 === \count($this->processors)) { - throw new \LogicException('You tried to pop from an empty processor stack.'); - } - - return array_shift($this->processors); - } - - /** - * @return callable[] - * @phpstan-return array - */ - public function getProcessors(): array - { - return $this->processors; - } - - /** - * Control the use of microsecond resolution timestamps in the 'datetime' - * member of new records. - * - * As of PHP7.1 microseconds are always included by the engine, so - * there is no performance penalty and Monolog 2 enabled microseconds - * by default. This function lets you disable them though in case you want - * to suppress microseconds from the output. - * - * @param bool $micro True to use microtime() to create timestamps - * @return $this - */ - public function useMicrosecondTimestamps(bool $micro): self - { - $this->microsecondTimestamps = $micro; - - return $this; - } - - /** - * @return $this - */ - public function useLoggingLoopDetection(bool $detectCycles): self - { - $this->detectCycles = $detectCycles; - - return $this; - } - - /** - * Adds a log record. - * - * @param int $level The logging level (a Monolog or RFC 5424 level) - * @param string $message The log message - * @param mixed[] $context The log context - * @param DateTimeImmutable $datetime Optional log date to log into the past or future - * @return bool Whether the record has been processed - * - * @phpstan-param value-of|Level $level - */ - public function addRecord(int|Level $level, string $message, array $context = [], DateTimeImmutable $datetime = null): bool - { - if (is_int($level) && isset(self::RFC_5424_LEVELS[$level])) { - $level = self::RFC_5424_LEVELS[$level]; - } - - if ($this->detectCycles) { - if (null !== ($fiber = Fiber::getCurrent())) { - $logDepth = $this->fiberLogDepth[$fiber] = ($this->fiberLogDepth[$fiber] ?? 0) + 1; - } else { - $logDepth = ++$this->logDepth; - } - } else { - $logDepth = 0; - } - - if ($logDepth === 3) { - $this->warning('A possible infinite logging loop was detected and aborted. It appears some of your handler code is triggering logging, see the previous log record for a hint as to what may be the cause.'); - return false; - } elseif ($logDepth >= 5) { // log depth 4 is let through, so we can log the warning above - return false; - } - - try { - $recordInitialized = count($this->processors) === 0; - - $record = new LogRecord( - datetime: $datetime ?? new DateTimeImmutable($this->microsecondTimestamps, $this->timezone), - channel: $this->name, - level: self::toMonologLevel($level), - message: $message, - context: $context, - extra: [], - ); - $handled = false; - - foreach ($this->handlers as $handler) { - if (false === $recordInitialized) { - // skip initializing the record as long as no handler is going to handle it - if (!$handler->isHandling($record)) { - continue; - } - - try { - foreach ($this->processors as $processor) { - $record = $processor($record); - } - $recordInitialized = true; - } catch (Throwable $e) { - $this->handleException($e, $record); - - return true; - } - } - - // once the record is initialized, send it to all handlers as long as the bubbling chain is not interrupted - try { - $handled = true; - if (true === $handler->handle(clone $record)) { - break; - } - } catch (Throwable $e) { - $this->handleException($e, $record); - - return true; - } - } - - return $handled; - } finally { - if ($this->detectCycles) { - if (isset($fiber)) { - $this->fiberLogDepth[$fiber]--; - } else { - $this->logDepth--; - } - } - } - } - - /** - * Ends a log cycle and frees all resources used by handlers. - * - * Closing a Handler means flushing all buffers and freeing any open resources/handles. - * Handlers that have been closed should be able to accept log records again and re-open - * themselves on demand, but this may not always be possible depending on implementation. - * - * This is useful at the end of a request and will be called automatically on every handler - * when they get destructed. - */ - public function close(): void - { - foreach ($this->handlers as $handler) { - $handler->close(); - } - } - - /** - * Ends a log cycle and resets all handlers and processors to their initial state. - * - * Resetting a Handler or a Processor means flushing/cleaning all buffers, resetting internal - * state, and getting it back to a state in which it can receive log records again. - * - * This is useful in case you want to avoid logs leaking between two requests or jobs when you - * have a long running process like a worker or an application server serving multiple requests - * in one process. - */ - public function reset(): void - { - foreach ($this->handlers as $handler) { - if ($handler instanceof ResettableInterface) { - $handler->reset(); - } - } - - foreach ($this->processors as $processor) { - if ($processor instanceof ResettableInterface) { - $processor->reset(); - } - } - } - - /** - * Gets the name of the logging level as a string. - * - * This still returns a string instead of a Level for BC, but new code should not rely on this method. - * - * @throws \Psr\Log\InvalidArgumentException If level is not defined - * - * @phpstan-param value-of|Level $level - * @phpstan-return value-of - * - * @deprecated Since 3.0, use {@see toMonologLevel} or {@see \Monolog\Level->getName()} instead - */ - public static function getLevelName(int|Level $level): string - { - return self::toMonologLevel($level)->getName(); - } - - /** - * Converts PSR-3 levels to Monolog ones if necessary - * - * @param int|string|Level|LogLevel::* $level Level number (monolog) or name (PSR-3) - * @throws \Psr\Log\InvalidArgumentException If level is not defined - * - * @phpstan-param value-of|value-of|Level|LogLevel::* $level - */ - public static function toMonologLevel(string|int|Level $level): Level - { - if ($level instanceof Level) { - return $level; - } - - if (\is_string($level)) { - if (\is_numeric($level)) { - $levelEnum = Level::tryFrom((int) $level); - if ($levelEnum === null) { - throw new InvalidArgumentException('Level "'.$level.'" is not defined, use one of: '.implode(', ', Level::NAMES + Level::VALUES)); - } - - return $levelEnum; - } - - // Contains first char of all log levels and avoids using strtoupper() which may have - // strange results depending on locale (for example, "i" will become "İ" in Turkish locale) - $upper = strtr(substr($level, 0, 1), 'dinweca', 'DINWECA') . strtolower(substr($level, 1)); - if (defined(Level::class.'::'.$upper)) { - return constant(Level::class . '::' . $upper); - } - - throw new InvalidArgumentException('Level "'.$level.'" is not defined, use one of: '.implode(', ', Level::NAMES + Level::VALUES)); - } - - $levelEnum = Level::tryFrom($level); - if ($levelEnum === null) { - throw new InvalidArgumentException('Level "'.var_export($level, true).'" is not defined, use one of: '.implode(', ', Level::NAMES + Level::VALUES)); - } - - return $levelEnum; - } - - /** - * Checks whether the Logger has a handler that listens on the given level - * - * @phpstan-param value-of|value-of|Level|LogLevel::* $level - */ - public function isHandling(int|string|Level $level): bool - { - $record = new LogRecord( - datetime: new DateTimeImmutable($this->microsecondTimestamps, $this->timezone), - channel: $this->name, - message: '', - level: self::toMonologLevel($level), - ); - - foreach ($this->handlers as $handler) { - if ($handler->isHandling($record)) { - return true; - } - } - - return false; - } - - /** - * Set a custom exception handler that will be called if adding a new record fails - * - * The Closure will receive an exception object and the record that failed to be logged - * - * @return $this - */ - public function setExceptionHandler(Closure|null $callback): self - { - $this->exceptionHandler = $callback; - - return $this; - } - - public function getExceptionHandler(): Closure|null - { - return $this->exceptionHandler; - } - - /** - * Adds a log record at an arbitrary level. - * - * This method allows for compatibility with common interfaces. - * - * @param mixed $level The log level (a Monolog, PSR-3 or RFC 5424 level) - * @param string|Stringable $message The log message - * @param mixed[] $context The log context - * - * @phpstan-param Level|LogLevel::* $level - */ - public function log($level, string|\Stringable $message, array $context = []): void - { - if (!$level instanceof Level) { - if (!is_string($level) && !is_int($level)) { - throw new \InvalidArgumentException('$level is expected to be a string, int or '.Level::class.' instance'); - } - - if (isset(self::RFC_5424_LEVELS[$level])) { - $level = self::RFC_5424_LEVELS[$level]; - } - - $level = static::toMonologLevel($level); - } - - $this->addRecord($level, (string) $message, $context); - } - - /** - * Adds a log record at the DEBUG level. - * - * This method allows for compatibility with common interfaces. - * - * @param string|Stringable $message The log message - * @param mixed[] $context The log context - */ - public function debug(string|\Stringable $message, array $context = []): void - { - $this->addRecord(Level::Debug, (string) $message, $context); - } - - /** - * Adds a log record at the INFO level. - * - * This method allows for compatibility with common interfaces. - * - * @param string|Stringable $message The log message - * @param mixed[] $context The log context - */ - public function info(string|\Stringable $message, array $context = []): void - { - $this->addRecord(Level::Info, (string) $message, $context); - } - - /** - * Adds a log record at the NOTICE level. - * - * This method allows for compatibility with common interfaces. - * - * @param string|Stringable $message The log message - * @param mixed[] $context The log context - */ - public function notice(string|\Stringable $message, array $context = []): void - { - $this->addRecord(Level::Notice, (string) $message, $context); - } - - /** - * Adds a log record at the WARNING level. - * - * This method allows for compatibility with common interfaces. - * - * @param string|Stringable $message The log message - * @param mixed[] $context The log context - */ - public function warning(string|\Stringable $message, array $context = []): void - { - $this->addRecord(Level::Warning, (string) $message, $context); - } - - /** - * Adds a log record at the ERROR level. - * - * This method allows for compatibility with common interfaces. - * - * @param string|Stringable $message The log message - * @param mixed[] $context The log context - */ - public function error(string|\Stringable $message, array $context = []): void - { - $this->addRecord(Level::Error, (string) $message, $context); - } - - /** - * Adds a log record at the CRITICAL level. - * - * This method allows for compatibility with common interfaces. - * - * @param string|Stringable $message The log message - * @param mixed[] $context The log context - */ - public function critical(string|\Stringable $message, array $context = []): void - { - $this->addRecord(Level::Critical, (string) $message, $context); - } - - /** - * Adds a log record at the ALERT level. - * - * This method allows for compatibility with common interfaces. - * - * @param string|Stringable $message The log message - * @param mixed[] $context The log context - */ - public function alert(string|\Stringable $message, array $context = []): void - { - $this->addRecord(Level::Alert, (string) $message, $context); - } - - /** - * Adds a log record at the EMERGENCY level. - * - * This method allows for compatibility with common interfaces. - * - * @param string|Stringable $message The log message - * @param mixed[] $context The log context - */ - public function emergency(string|\Stringable $message, array $context = []): void - { - $this->addRecord(Level::Emergency, (string) $message, $context); - } - - /** - * Sets the timezone to be used for the timestamp of log records. - * - * @return $this - */ - public function setTimezone(DateTimeZone $tz): self - { - $this->timezone = $tz; - - return $this; - } - - /** - * Returns the timezone to be used for the timestamp of log records. - */ - public function getTimezone(): DateTimeZone - { - return $this->timezone; - } - - /** - * Delegates exception management to the custom exception handler, - * or throws the exception if no custom handler is set. - */ - protected function handleException(Throwable $e, LogRecord $record): void - { - if (null === $this->exceptionHandler) { - throw $e; - } - - ($this->exceptionHandler)($e, $record); - } - - /** - * @return array - */ - public function __serialize(): array - { - return [ - 'name' => $this->name, - 'handlers' => $this->handlers, - 'processors' => $this->processors, - 'microsecondTimestamps' => $this->microsecondTimestamps, - 'timezone' => $this->timezone, - 'exceptionHandler' => $this->exceptionHandler, - 'logDepth' => $this->logDepth, - 'detectCycles' => $this->detectCycles, - ]; - } - - /** - * @param array $data - */ - public function __unserialize(array $data): void - { - foreach (['name', 'handlers', 'processors', 'microsecondTimestamps', 'timezone', 'exceptionHandler', 'logDepth', 'detectCycles'] as $property) { - if (isset($data[$property])) { - $this->$property = $data[$property]; - } - } - - $this->fiberLogDepth = new \WeakMap(); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Processor/ClosureContextProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/ClosureContextProcessor.php deleted file mode 100644 index 514b3547..00000000 --- a/vendor/monolog/monolog/src/Monolog/Processor/ClosureContextProcessor.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Processor; - -use Monolog\LogRecord; - -/** - * Generates a context from a Closure if the Closure is the only value - * in the context - * - * It helps reduce the performance impact of debug logs if they do - * need to create lots of context information. If this processor is added - * on the correct handler the context data will only be generated - * when the logs are actually logged to that handler, which is useful when - * using FingersCrossedHandler or other filtering handlers to conditionally - * log records. - */ -class ClosureContextProcessor implements ProcessorInterface -{ - public function __invoke(LogRecord $record): LogRecord - { - $context = $record->context; - if (isset($context[0]) && 1 === \count($context) && $context[0] instanceof \Closure) { - try { - $context = $context[0](); - } catch (\Throwable $e) { - $context = [ - 'error_on_context_generation' => $e->getMessage(), - 'exception' => $e, - ]; - } - - if (!\is_array($context)) { - $context = [$context]; - } - - $record = $record->with(context: $context); - } - - return $record; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php deleted file mode 100644 index 5a70ac2e..00000000 --- a/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php +++ /dev/null @@ -1,75 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Processor; - -use Monolog\Level; -use Monolog\Logger; -use Psr\Log\LogLevel; -use Monolog\LogRecord; - -/** - * Injects Git branch and Git commit SHA in all records - * - * @author Nick Otter - * @author Jordi Boggiano - */ -class GitProcessor implements ProcessorInterface -{ - private Level $level; - /** @var array{branch: string, commit: string}|array|null */ - private static $cache = null; - - /** - * @param int|string|Level|LogLevel::* $level The minimum logging level at which this Processor will be triggered - * - * @phpstan-param value-of|value-of|Level|LogLevel::* $level - */ - public function __construct(int|string|Level $level = Level::Debug) - { - $this->level = Logger::toMonologLevel($level); - } - - /** - * @inheritDoc - */ - public function __invoke(LogRecord $record): LogRecord - { - // return if the level is not high enough - if ($record->level->isLowerThan($this->level)) { - return $record; - } - - $record->extra['git'] = self::getGitInfo(); - - return $record; - } - - /** - * @return array{branch: string, commit: string}|array - */ - private static function getGitInfo(): array - { - if (self::$cache !== null) { - return self::$cache; - } - - $branches = shell_exec('git branch -v --no-abbrev'); - if (is_string($branches) && 1 === preg_match('{^\* (.+?)\s+([a-f0-9]{40})(?:\s|$)}m', $branches, $matches)) { - return self::$cache = [ - 'branch' => $matches[1], - 'commit' => $matches[2], - ]; - } - - return self::$cache = []; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Processor/HostnameProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/HostnameProcessor.php deleted file mode 100644 index cba6e096..00000000 --- a/vendor/monolog/monolog/src/Monolog/Processor/HostnameProcessor.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Processor; - -use Monolog\LogRecord; - -/** - * Injects value of gethostname in all records - */ -class HostnameProcessor implements ProcessorInterface -{ - private static string $host; - - public function __construct() - { - self::$host = (string) gethostname(); - } - - /** - * @inheritDoc - */ - public function __invoke(LogRecord $record): LogRecord - { - $record->extra['hostname'] = self::$host; - - return $record; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php deleted file mode 100644 index 3a6fbfbe..00000000 --- a/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php +++ /dev/null @@ -1,122 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Processor; - -use Monolog\Level; -use Monolog\Logger; -use Psr\Log\LogLevel; -use Monolog\LogRecord; - -/** - * Injects line/file:class/function where the log message came from - * - * Warning: This only works if the handler processes the logs directly. - * If you put the processor on a handler that is behind a FingersCrossedHandler - * for example, the processor will only be called once the trigger level is reached, - * and all the log records will have the same file/line/.. data from the call that - * triggered the FingersCrossedHandler. - * - * @author Jordi Boggiano - */ -class IntrospectionProcessor implements ProcessorInterface -{ - private Level $level; - - /** @var string[] */ - private array $skipClassesPartials; - - private int $skipStackFramesCount; - - private const SKIP_FUNCTIONS = [ - 'call_user_func', - 'call_user_func_array', - ]; - - /** - * @param string|int|Level $level The minimum logging level at which this Processor will be triggered - * @param string[] $skipClassesPartials - * - * @phpstan-param value-of|value-of|Level|LogLevel::* $level - */ - public function __construct(int|string|Level $level = Level::Debug, array $skipClassesPartials = [], int $skipStackFramesCount = 0) - { - $this->level = Logger::toMonologLevel($level); - $this->skipClassesPartials = array_merge(['Monolog\\'], $skipClassesPartials); - $this->skipStackFramesCount = $skipStackFramesCount; - } - - /** - * @inheritDoc - */ - public function __invoke(LogRecord $record): LogRecord - { - // return if the level is not high enough - if ($record->level->isLowerThan($this->level)) { - return $record; - } - - $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); - - // skip first since it's always the current method - array_shift($trace); - // the call_user_func call is also skipped - array_shift($trace); - - $i = 0; - - while ($this->isTraceClassOrSkippedFunction($trace, $i)) { - if (isset($trace[$i]['class'])) { - foreach ($this->skipClassesPartials as $part) { - if (strpos($trace[$i]['class'], $part) !== false) { - $i++; - - continue 2; - } - } - } elseif (in_array($trace[$i]['function'], self::SKIP_FUNCTIONS, true)) { - $i++; - - continue; - } - - break; - } - - $i += $this->skipStackFramesCount; - - // we should have the call source now - $record->extra = array_merge( - $record->extra, - [ - 'file' => $trace[$i - 1]['file'] ?? null, - 'line' => $trace[$i - 1]['line'] ?? null, - 'class' => $trace[$i]['class'] ?? null, - 'callType' => $trace[$i]['type'] ?? null, - 'function' => $trace[$i]['function'] ?? null, - ] - ); - - return $record; - } - - /** - * @param array $trace - */ - private function isTraceClassOrSkippedFunction(array $trace, int $index): bool - { - if (!isset($trace[$index])) { - return false; - } - - return isset($trace[$index]['class']) || in_array($trace[$index]['function'], self::SKIP_FUNCTIONS, true); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Processor/LoadAverageProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/LoadAverageProcessor.php deleted file mode 100644 index 64e3c474..00000000 --- a/vendor/monolog/monolog/src/Monolog/Processor/LoadAverageProcessor.php +++ /dev/null @@ -1,66 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Processor; - -use Monolog\LogRecord; - -/** - * Injects sys_getloadavg in all records @see https://www.php.net/manual/en/function.sys-getloadavg.php - * - * @author Johan Vlaar - */ -class LoadAverageProcessor implements ProcessorInterface -{ - public const LOAD_1_MINUTE = 0; - public const LOAD_5_MINUTE = 1; - public const LOAD_15_MINUTE = 2; - - private const AVAILABLE_LOAD = [ - self::LOAD_1_MINUTE, - self::LOAD_5_MINUTE, - self::LOAD_15_MINUTE, - ]; - - /** - * @var int - */ - protected $avgSystemLoad; - - /** - * @param self::LOAD_* $avgSystemLoad - */ - public function __construct(int $avgSystemLoad = self::LOAD_1_MINUTE) - { - if (!in_array($avgSystemLoad, self::AVAILABLE_LOAD, true)) { - throw new \InvalidArgumentException(sprintf('Invalid average system load: `%s`', $avgSystemLoad)); - } - $this->avgSystemLoad = $avgSystemLoad; - } - - /** - * {@inheritDoc} - */ - public function __invoke(LogRecord $record): LogRecord - { - if (!function_exists('sys_getloadavg')) { - return $record; - } - $usage = sys_getloadavg(); - if (false === $usage) { - return $record; - } - - $record->extra['load_average'] = $usage[$this->avgSystemLoad]; - - return $record; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php deleted file mode 100644 index adc32c65..00000000 --- a/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Processor; - -use Monolog\LogRecord; - -/** - * Injects memory_get_peak_usage in all records - * - * @see Monolog\Processor\MemoryProcessor::__construct() for options - * @author Rob Jensen - */ -class MemoryPeakUsageProcessor extends MemoryProcessor -{ - /** - * @inheritDoc - */ - public function __invoke(LogRecord $record): LogRecord - { - $usage = memory_get_peak_usage($this->realUsage); - - if ($this->useFormatting) { - $usage = $this->formatBytes($usage); - } - - $record->extra['memory_peak_usage'] = $usage; - - return $record; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php deleted file mode 100644 index f808e51b..00000000 --- a/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Processor; - -/** - * Some methods that are common for all memory processors - * - * @author Rob Jensen - */ -abstract class MemoryProcessor implements ProcessorInterface -{ - /** - * @var bool If true, get the real size of memory allocated from system. Else, only the memory used by emalloc() is reported. - */ - protected bool $realUsage; - - /** - * @var bool If true, then format memory size to human readable string (MB, KB, B depending on size) - */ - protected bool $useFormatting; - - /** - * @param bool $realUsage Set this to true to get the real size of memory allocated from system. - * @param bool $useFormatting If true, then format memory size to human readable string (MB, KB, B depending on size) - */ - public function __construct(bool $realUsage = true, bool $useFormatting = true) - { - $this->realUsage = $realUsage; - $this->useFormatting = $useFormatting; - } - - /** - * Formats bytes into a human readable string if $this->useFormatting is true, otherwise return $bytes as is - * - * @return string|int Formatted string if $this->useFormatting is true, otherwise return $bytes as int - */ - protected function formatBytes(int $bytes) - { - if (!$this->useFormatting) { - return $bytes; - } - - if ($bytes > 1024 * 1024) { - return round($bytes / 1024 / 1024, 2).' MB'; - } elseif ($bytes > 1024) { - return round($bytes / 1024, 2).' KB'; - } - - return $bytes . ' B'; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php deleted file mode 100644 index a814b1df..00000000 --- a/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Processor; - -use Monolog\LogRecord; - -/** - * Injects memory_get_usage in all records - * - * @see Monolog\Processor\MemoryProcessor::__construct() for options - * @author Rob Jensen - */ -class MemoryUsageProcessor extends MemoryProcessor -{ - /** - * @inheritDoc - */ - public function __invoke(LogRecord $record): LogRecord - { - $usage = memory_get_usage($this->realUsage); - - if ($this->useFormatting) { - $usage = $this->formatBytes($usage); - } - - $record->extra['memory_usage'] = $usage; - - return $record; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php deleted file mode 100644 index 47b1e64f..00000000 --- a/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php +++ /dev/null @@ -1,75 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Processor; - -use Monolog\Level; -use Monolog\Logger; -use Psr\Log\LogLevel; -use Monolog\LogRecord; - -/** - * Injects Hg branch and Hg revision number in all records - * - * @author Jonathan A. Schweder - */ -class MercurialProcessor implements ProcessorInterface -{ - private Level $level; - /** @var array{branch: string, revision: string}|array|null */ - private static $cache = null; - - /** - * @param int|string|Level $level The minimum logging level at which this Processor will be triggered - * - * @phpstan-param value-of|value-of|Level|LogLevel::* $level - */ - public function __construct(int|string|Level $level = Level::Debug) - { - $this->level = Logger::toMonologLevel($level); - } - - /** - * @inheritDoc - */ - public function __invoke(LogRecord $record): LogRecord - { - // return if the level is not high enough - if ($record->level->isLowerThan($this->level)) { - return $record; - } - - $record->extra['hg'] = self::getMercurialInfo(); - - return $record; - } - - /** - * @return array{branch: string, revision: string}|array - */ - private static function getMercurialInfo(): array - { - if (self::$cache !== null) { - return self::$cache; - } - - $result = explode(' ', trim((string) shell_exec('hg id -nb'))); - - if (count($result) >= 3) { - return self::$cache = [ - 'branch' => $result[1], - 'revision' => $result[2], - ]; - } - - return self::$cache = []; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php deleted file mode 100644 index bb9a5224..00000000 --- a/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Processor; - -use Monolog\LogRecord; - -/** - * Adds value of getmypid into records - * - * @author Andreas Hörnicke - */ -class ProcessIdProcessor implements ProcessorInterface -{ - /** - * @inheritDoc - */ - public function __invoke(LogRecord $record): LogRecord - { - $record->extra['process_id'] = getmypid(); - - return $record; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php b/vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php deleted file mode 100644 index ebe41fc2..00000000 --- a/vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Processor; - -use Monolog\LogRecord; - -/** - * An optional interface to allow labelling Monolog processors. - * - * @author Nicolas Grekas - */ -interface ProcessorInterface -{ - /** - * @return LogRecord The processed record - */ - public function __invoke(LogRecord $record); -} diff --git a/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php deleted file mode 100644 index aad2aad2..00000000 --- a/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php +++ /dev/null @@ -1,87 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Processor; - -use Monolog\Utils; -use Monolog\LogRecord; - -/** - * Processes a record's message according to PSR-3 rules - * - * It replaces {foo} with the value from $context['foo'] - * - * @author Jordi Boggiano - */ -class PsrLogMessageProcessor implements ProcessorInterface -{ - public const SIMPLE_DATE = "Y-m-d\TH:i:s.uP"; - - private ?string $dateFormat; - - private bool $removeUsedContextFields; - - /** - * @param string|null $dateFormat The format of the timestamp: one supported by DateTime::format - * @param bool $removeUsedContextFields If set to true the fields interpolated into message gets unset - */ - public function __construct(?string $dateFormat = null, bool $removeUsedContextFields = false) - { - $this->dateFormat = $dateFormat; - $this->removeUsedContextFields = $removeUsedContextFields; - } - - /** - * @inheritDoc - */ - public function __invoke(LogRecord $record): LogRecord - { - if (false === strpos($record->message, '{')) { - return $record; - } - - $replacements = []; - $context = $record->context; - - foreach ($context as $key => $val) { - $placeholder = '{' . $key . '}'; - if (strpos($record->message, $placeholder) === false) { - continue; - } - - if (null === $val || is_scalar($val) || (is_object($val) && method_exists($val, "__toString"))) { - $replacements[$placeholder] = $val; - } elseif ($val instanceof \DateTimeInterface) { - if (null === $this->dateFormat && $val instanceof \Monolog\DateTimeImmutable) { - // handle monolog dates using __toString if no specific dateFormat was asked for - // so that it follows the useMicroseconds flag - $replacements[$placeholder] = (string) $val; - } else { - $replacements[$placeholder] = $val->format($this->dateFormat ?? static::SIMPLE_DATE); - } - } elseif ($val instanceof \UnitEnum) { - $replacements[$placeholder] = $val instanceof \BackedEnum ? $val->value : $val->name; - } elseif (is_object($val)) { - $replacements[$placeholder] = '[object '.Utils::getClass($val).']'; - } elseif (is_array($val)) { - $replacements[$placeholder] = 'array'.Utils::jsonEncode($val, null, true); - } else { - $replacements[$placeholder] = '['.gettype($val).']'; - } - - if ($this->removeUsedContextFields) { - unset($context[$key]); - } - } - - return $record->with(message: strtr($record->message, $replacements), context: $context); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php deleted file mode 100644 index 10ed1cea..00000000 --- a/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Processor; - -use Monolog\LogRecord; - -/** - * Adds a tags array into record - * - * @author Martijn Riemers - */ -class TagProcessor implements ProcessorInterface -{ - /** @var string[] */ - private array $tags; - - /** - * @param string[] $tags - */ - public function __construct(array $tags = []) - { - $this->setTags($tags); - } - - /** - * @param string[] $tags - * @return $this - */ - public function addTags(array $tags = []): self - { - $this->tags = array_merge($this->tags, $tags); - - return $this; - } - - /** - * @param string[] $tags - * @return $this - */ - public function setTags(array $tags = []): self - { - $this->tags = $tags; - - return $this; - } - - /** - * @inheritDoc - */ - public function __invoke(LogRecord $record): LogRecord - { - $record->extra['tags'] = $this->tags; - - return $record; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php deleted file mode 100644 index 3a0c128c..00000000 --- a/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php +++ /dev/null @@ -1,67 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Processor; - -use Monolog\ResettableInterface; -use Monolog\LogRecord; - -/** - * Adds a unique identifier into records - * - * @author Simon Mönch - */ -class UidProcessor implements ProcessorInterface, ResettableInterface -{ - /** @var non-empty-string */ - private string $uid; - - /** - * @param int<1, 32> $length - */ - public function __construct(int $length = 7) - { - if ($length > 32 || $length < 1) { - throw new \InvalidArgumentException('The uid length must be an integer between 1 and 32'); - } - - $this->uid = $this->generateUid($length); - } - - /** - * @inheritDoc - */ - public function __invoke(LogRecord $record): LogRecord - { - $record->extra['uid'] = $this->uid; - - return $record; - } - - public function getUid(): string - { - return $this->uid; - } - - public function reset(): void - { - $this->uid = $this->generateUid(strlen($this->uid)); - } - - /** - * @param positive-int $length - * @return non-empty-string - */ - private function generateUid(int $length): string - { - return substr(bin2hex(random_bytes((int) ceil($length / 2))), 0, $length); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php b/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php deleted file mode 100644 index 1abb8400..00000000 --- a/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php +++ /dev/null @@ -1,115 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Processor; - -use ArrayAccess; -use Monolog\LogRecord; - -/** - * Injects url/method and remote IP of the current web request in all records - * - * @author Jordi Boggiano - */ -class WebProcessor implements ProcessorInterface -{ - /** - * @var array|ArrayAccess - */ - protected array|ArrayAccess $serverData; - - /** - * Default fields - * - * Array is structured as [key in record.extra => key in $serverData] - * - * @var array - */ - protected array $extraFields = [ - 'url' => 'REQUEST_URI', - 'ip' => 'REMOTE_ADDR', - 'http_method' => 'REQUEST_METHOD', - 'server' => 'SERVER_NAME', - 'referrer' => 'HTTP_REFERER', - 'user_agent' => 'HTTP_USER_AGENT', - ]; - - /** - * @param array|ArrayAccess|null $serverData Array or object w/ ArrayAccess that provides access to the $_SERVER data - * @param array|array|null $extraFields Field names and the related key inside $serverData to be added (or just a list of field names to use the default configured $serverData mapping). If not provided it defaults to: [url, ip, http_method, server, referrer] + unique_id if present in server data - */ - public function __construct(array|ArrayAccess|null $serverData = null, array|null $extraFields = null) - { - if (null === $serverData) { - $this->serverData = &$_SERVER; - } else { - $this->serverData = $serverData; - } - - $defaultEnabled = ['url', 'ip', 'http_method', 'server', 'referrer']; - if (isset($this->serverData['UNIQUE_ID'])) { - $this->extraFields['unique_id'] = 'UNIQUE_ID'; - $defaultEnabled[] = 'unique_id'; - } - - if (null === $extraFields) { - $extraFields = $defaultEnabled; - } - if (isset($extraFields[0])) { - foreach (array_keys($this->extraFields) as $fieldName) { - if (!in_array($fieldName, $extraFields, true)) { - unset($this->extraFields[$fieldName]); - } - } - } else { - $this->extraFields = $extraFields; - } - } - - /** - * @inheritDoc - */ - public function __invoke(LogRecord $record): LogRecord - { - // skip processing if for some reason request data - // is not present (CLI or wonky SAPIs) - if (!isset($this->serverData['REQUEST_URI'])) { - return $record; - } - - $record->extra = $this->appendExtraFields($record->extra); - - return $record; - } - - /** - * @return $this - */ - public function addExtraField(string $extraName, string $serverName): self - { - $this->extraFields[$extraName] = $serverName; - - return $this; - } - - /** - * @param mixed[] $extra - * @return mixed[] - */ - private function appendExtraFields(array $extra): array - { - foreach ($this->extraFields as $extraName => $serverName) { - $extra[$extraName] = $this->serverData[$serverName] ?? null; - } - - return $extra; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Registry.php b/vendor/monolog/monolog/src/Monolog/Registry.php deleted file mode 100644 index 2ef2edce..00000000 --- a/vendor/monolog/monolog/src/Monolog/Registry.php +++ /dev/null @@ -1,133 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog; - -use InvalidArgumentException; - -/** - * Monolog log registry - * - * Allows to get `Logger` instances in the global scope - * via static method calls on this class. - * - * - * $application = new Monolog\Logger('application'); - * $api = new Monolog\Logger('api'); - * - * Monolog\Registry::addLogger($application); - * Monolog\Registry::addLogger($api); - * - * function testLogger() - * { - * Monolog\Registry::api()->error('Sent to $api Logger instance'); - * Monolog\Registry::application()->error('Sent to $application Logger instance'); - * } - * - * - * @author Tomas Tatarko - */ -class Registry -{ - /** - * List of all loggers in the registry (by named indexes) - * - * @var Logger[] - */ - private static array $loggers = []; - - /** - * Adds new logging channel to the registry - * - * @param Logger $logger Instance of the logging channel - * @param string|null $name Name of the logging channel ($logger->getName() by default) - * @param bool $overwrite Overwrite instance in the registry if the given name already exists? - * @throws \InvalidArgumentException If $overwrite set to false and named Logger instance already exists - */ - public static function addLogger(Logger $logger, ?string $name = null, bool $overwrite = false): void - { - $name = $name ?? $logger->getName(); - - if (isset(self::$loggers[$name]) && !$overwrite) { - throw new InvalidArgumentException('Logger with the given name already exists'); - } - - self::$loggers[$name] = $logger; - } - - /** - * Checks if such logging channel exists by name or instance - * - * @param string|Logger $logger Name or logger instance - */ - public static function hasLogger($logger): bool - { - if ($logger instanceof Logger) { - $index = array_search($logger, self::$loggers, true); - - return false !== $index; - } - - return isset(self::$loggers[$logger]); - } - - /** - * Removes instance from registry by name or instance - * - * @param string|Logger $logger Name or logger instance - */ - public static function removeLogger($logger): void - { - if ($logger instanceof Logger) { - if (false !== ($idx = array_search($logger, self::$loggers, true))) { - unset(self::$loggers[$idx]); - } - } else { - unset(self::$loggers[$logger]); - } - } - - /** - * Clears the registry - */ - public static function clear(): void - { - self::$loggers = []; - } - - /** - * Gets Logger instance from the registry - * - * @param string $name Name of the requested Logger instance - * @throws \InvalidArgumentException If named Logger instance is not in the registry - */ - public static function getInstance(string $name): Logger - { - if (!isset(self::$loggers[$name])) { - throw new InvalidArgumentException(sprintf('Requested "%s" logger instance is not in the registry', $name)); - } - - return self::$loggers[$name]; - } - - /** - * Gets Logger instance from the registry via static method call - * - * @param string $name Name of the requested Logger instance - * @param mixed[] $arguments Arguments passed to static method call - * @throws \InvalidArgumentException If named Logger instance is not in the registry - * @return Logger Requested instance of Logger - */ - public static function __callStatic(string $name, array $arguments): Logger - { - return self::getInstance($name); - } -} diff --git a/vendor/monolog/monolog/src/Monolog/ResettableInterface.php b/vendor/monolog/monolog/src/Monolog/ResettableInterface.php deleted file mode 100644 index 4983a6b3..00000000 --- a/vendor/monolog/monolog/src/Monolog/ResettableInterface.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog; - -/** - * Handler or Processor implementing this interface will be reset when Logger::reset() is called. - * - * Resetting ends a log cycle gets them back to their initial state. - * - * Resetting a Handler or a Processor means flushing/cleaning all buffers, resetting internal - * state, and getting it back to a state in which it can receive log records again. - * - * This is useful in case you want to avoid logs leaking between two requests or jobs when you - * have a long running process like a worker or an application server serving multiple requests - * in one process. - * - * @author Grégoire Pineau - */ -interface ResettableInterface -{ - public function reset(): void; -} diff --git a/vendor/monolog/monolog/src/Monolog/SignalHandler.php b/vendor/monolog/monolog/src/Monolog/SignalHandler.php deleted file mode 100644 index b930ca43..00000000 --- a/vendor/monolog/monolog/src/Monolog/SignalHandler.php +++ /dev/null @@ -1,113 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog; - -use Psr\Log\LoggerInterface; -use Psr\Log\LogLevel; -use ReflectionExtension; - -/** - * Monolog POSIX signal handler - * - * @author Robert Gust-Bardon - */ -class SignalHandler -{ - private LoggerInterface $logger; - - /** @var array SIG_DFL, SIG_IGN or previous callable */ - private array $previousSignalHandler = []; - /** @var array */ - private array $signalLevelMap = []; - /** @var array */ - private array $signalRestartSyscalls = []; - - public function __construct(LoggerInterface $logger) - { - $this->logger = $logger; - } - - /** - * @param int|string|Level $level Level or level name - * @return $this - * - * @phpstan-param value-of|value-of|Level|LogLevel::* $level - */ - public function registerSignalHandler(int $signo, int|string|Level $level = LogLevel::CRITICAL, bool $callPrevious = true, bool $restartSyscalls = true, ?bool $async = true): self - { - if (!extension_loaded('pcntl') || !function_exists('pcntl_signal')) { - return $this; - } - - $level = Logger::toMonologLevel($level)->toPsrLogLevel(); - - if ($callPrevious) { - $handler = pcntl_signal_get_handler($signo); - $this->previousSignalHandler[$signo] = $handler; - } else { - unset($this->previousSignalHandler[$signo]); - } - $this->signalLevelMap[$signo] = $level; - $this->signalRestartSyscalls[$signo] = $restartSyscalls; - - if ($async !== null) { - pcntl_async_signals($async); - } - - pcntl_signal($signo, [$this, 'handleSignal'], $restartSyscalls); - - return $this; - } - - /** - * @param mixed $siginfo - */ - public function handleSignal(int $signo, $siginfo = null): void - { - /** @var array $signals */ - static $signals = []; - - if (\count($signals) === 0 && extension_loaded('pcntl')) { - $pcntl = new ReflectionExtension('pcntl'); - foreach ($pcntl->getConstants() as $name => $value) { - if (substr($name, 0, 3) === 'SIG' && $name[3] !== '_' && is_int($value)) { - $signals[$value] = $name; - } - } - } - - $level = $this->signalLevelMap[$signo] ?? LogLevel::CRITICAL; - $signal = $signals[$signo] ?? $signo; - $context = $siginfo ?? []; - $this->logger->log($level, sprintf('Program received signal %s', $signal), $context); - - if (!isset($this->previousSignalHandler[$signo])) { - return; - } - - if ($this->previousSignalHandler[$signo] === SIG_DFL) { - if (extension_loaded('pcntl') && function_exists('pcntl_signal') && function_exists('pcntl_sigprocmask') && function_exists('pcntl_signal_dispatch') - && extension_loaded('posix') && function_exists('posix_getpid') && function_exists('posix_kill') - ) { - $restartSyscalls = $this->signalRestartSyscalls[$signo] ?? true; - pcntl_signal($signo, SIG_DFL, $restartSyscalls); - pcntl_sigprocmask(SIG_UNBLOCK, [$signo], $oldset); - posix_kill(posix_getpid(), $signo); - pcntl_signal_dispatch(); - pcntl_sigprocmask(SIG_SETMASK, $oldset); - pcntl_signal($signo, [$this, 'handleSignal'], $restartSyscalls); - } - } elseif (is_callable($this->previousSignalHandler[$signo])) { - $this->previousSignalHandler[$signo]($signo, $siginfo); - } - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Test/TestCase.php b/vendor/monolog/monolog/src/Monolog/Test/TestCase.php deleted file mode 100644 index 29ec7c96..00000000 --- a/vendor/monolog/monolog/src/Monolog/Test/TestCase.php +++ /dev/null @@ -1,82 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog\Test; - -use Monolog\Level; -use Monolog\Logger; -use Monolog\LogRecord; -use Monolog\DateTimeImmutable; -use Monolog\Formatter\FormatterInterface; -use Psr\Log\LogLevel; - -/** - * Lets you easily generate log records and a dummy formatter for testing purposes - * - * @author Jordi Boggiano - * - * @internal feel free to reuse this to test your own handlers, this is marked internal to avoid issues with PHPStorm https://github.com/Seldaek/monolog/issues/1677 - */ -class TestCase extends \PHPUnit\Framework\TestCase -{ - public function tearDown(): void - { - parent::tearDown(); - - if (isset($this->handler)) { - unset($this->handler); - } - } - - /** - * @param array $context - * @param array $extra - * - * @phpstan-param value-of|value-of|Level|LogLevel::* $level - */ - protected function getRecord(int|string|Level $level = Level::Warning, string|\Stringable $message = 'test', array $context = [], string $channel = 'test', \DateTimeImmutable $datetime = new DateTimeImmutable(true), array $extra = []): LogRecord - { - return new LogRecord( - message: (string) $message, - context: $context, - level: Logger::toMonologLevel($level), - channel: $channel, - datetime: $datetime, - extra: $extra, - ); - } - - /** - * @phpstan-return list - */ - protected function getMultipleRecords(): array - { - return [ - $this->getRecord(Level::Debug, 'debug message 1'), - $this->getRecord(Level::Debug, 'debug message 2'), - $this->getRecord(Level::Info, 'information'), - $this->getRecord(Level::Warning, 'warning'), - $this->getRecord(Level::Error, 'error'), - ]; - } - - protected function getIdentityFormatter(): FormatterInterface - { - $formatter = $this->createMock(FormatterInterface::class); - $formatter->expects(self::any()) - ->method('format') - ->willReturnCallback(function ($record) { - return $record->message; - }); - - return $formatter; - } -} diff --git a/vendor/monolog/monolog/src/Monolog/Utils.php b/vendor/monolog/monolog/src/Monolog/Utils.php deleted file mode 100644 index 7848f0ec..00000000 --- a/vendor/monolog/monolog/src/Monolog/Utils.php +++ /dev/null @@ -1,274 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Monolog; - -final class Utils -{ - const DEFAULT_JSON_FLAGS = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRESERVE_ZERO_FRACTION | JSON_INVALID_UTF8_SUBSTITUTE | JSON_PARTIAL_OUTPUT_ON_ERROR; - - public static function getClass(object $object): string - { - $class = \get_class($object); - - if (false === ($pos = \strpos($class, "@anonymous\0"))) { - return $class; - } - - if (false === ($parent = \get_parent_class($class))) { - return \substr($class, 0, $pos + 10); - } - - return $parent . '@anonymous'; - } - - public static function substr(string $string, int $start, ?int $length = null): string - { - if (extension_loaded('mbstring')) { - return mb_strcut($string, $start, $length); - } - - return substr($string, $start, (null === $length) ? strlen($string) : $length); - } - - /** - * Makes sure if a relative path is passed in it is turned into an absolute path - * - * @param string $streamUrl stream URL or path without protocol - */ - public static function canonicalizePath(string $streamUrl): string - { - $prefix = ''; - if ('file://' === substr($streamUrl, 0, 7)) { - $streamUrl = substr($streamUrl, 7); - $prefix = 'file://'; - } - - // other type of stream, not supported - if (false !== strpos($streamUrl, '://')) { - return $streamUrl; - } - - // already absolute - if (substr($streamUrl, 0, 1) === '/' || substr($streamUrl, 1, 1) === ':' || substr($streamUrl, 0, 2) === '\\\\') { - return $prefix.$streamUrl; - } - - $streamUrl = getcwd() . '/' . $streamUrl; - - return $prefix.$streamUrl; - } - - /** - * Return the JSON representation of a value - * - * @param mixed $data - * @param int $encodeFlags flags to pass to json encode, defaults to DEFAULT_JSON_FLAGS - * @param bool $ignoreErrors whether to ignore encoding errors or to throw on error, when ignored and the encoding fails, "null" is returned which is valid json for null - * @throws \RuntimeException if encoding fails and errors are not ignored - * @return string when errors are ignored and the encoding fails, "null" is returned which is valid json for null - */ - public static function jsonEncode($data, ?int $encodeFlags = null, bool $ignoreErrors = false): string - { - if (null === $encodeFlags) { - $encodeFlags = self::DEFAULT_JSON_FLAGS; - } - - if ($ignoreErrors) { - $json = @json_encode($data, $encodeFlags); - if (false === $json) { - return 'null'; - } - - return $json; - } - - $json = json_encode($data, $encodeFlags); - if (false === $json) { - $json = self::handleJsonError(json_last_error(), $data); - } - - return $json; - } - - /** - * Handle a json_encode failure. - * - * If the failure is due to invalid string encoding, try to clean the - * input and encode again. If the second encoding attempt fails, the - * initial error is not encoding related or the input can't be cleaned then - * raise a descriptive exception. - * - * @param int $code return code of json_last_error function - * @param mixed $data data that was meant to be encoded - * @param int $encodeFlags flags to pass to json encode, defaults to JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRESERVE_ZERO_FRACTION - * @throws \RuntimeException if failure can't be corrected - * @return string JSON encoded data after error correction - */ - public static function handleJsonError(int $code, $data, ?int $encodeFlags = null): string - { - if ($code !== JSON_ERROR_UTF8) { - self::throwEncodeError($code, $data); - } - - if (is_string($data)) { - self::detectAndCleanUtf8($data); - } elseif (is_array($data)) { - array_walk_recursive($data, ['Monolog\Utils', 'detectAndCleanUtf8']); - } else { - self::throwEncodeError($code, $data); - } - - if (null === $encodeFlags) { - $encodeFlags = self::DEFAULT_JSON_FLAGS; - } - - $json = json_encode($data, $encodeFlags); - - if ($json === false) { - self::throwEncodeError(json_last_error(), $data); - } - - return $json; - } - - /** - * @internal - */ - public static function pcreLastErrorMessage(int $code): string - { - if (PHP_VERSION_ID >= 80000) { - return preg_last_error_msg(); - } - - $constants = (get_defined_constants(true))['pcre']; - $constants = array_filter($constants, function ($key) { - return substr($key, -6) == '_ERROR'; - }, ARRAY_FILTER_USE_KEY); - - $constants = array_flip($constants); - - return $constants[$code] ?? 'UNDEFINED_ERROR'; - } - - /** - * Throws an exception according to a given code with a customized message - * - * @param int $code return code of json_last_error function - * @param mixed $data data that was meant to be encoded - * @throws \RuntimeException - */ - private static function throwEncodeError(int $code, $data): never - { - $msg = match ($code) { - JSON_ERROR_DEPTH => 'Maximum stack depth exceeded', - JSON_ERROR_STATE_MISMATCH => 'Underflow or the modes mismatch', - JSON_ERROR_CTRL_CHAR => 'Unexpected control character found', - JSON_ERROR_UTF8 => 'Malformed UTF-8 characters, possibly incorrectly encoded', - default => 'Unknown error', - }; - - throw new \RuntimeException('JSON encoding failed: '.$msg.'. Encoding: '.var_export($data, true)); - } - - /** - * Detect invalid UTF-8 string characters and convert to valid UTF-8. - * - * Valid UTF-8 input will be left unmodified, but strings containing - * invalid UTF-8 codepoints will be reencoded as UTF-8 with an assumed - * original encoding of ISO-8859-15. This conversion may result in - * incorrect output if the actual encoding was not ISO-8859-15, but it - * will be clean UTF-8 output and will not rely on expensive and fragile - * detection algorithms. - * - * Function converts the input in place in the passed variable so that it - * can be used as a callback for array_walk_recursive. - * - * @param mixed $data Input to check and convert if needed, passed by ref - */ - private static function detectAndCleanUtf8(&$data): void - { - if (is_string($data) && preg_match('//u', $data) !== 1) { - $data = preg_replace_callback( - '/[\x80-\xFF]+/', - function (array $m): string { - return function_exists('mb_convert_encoding') ? mb_convert_encoding($m[0], 'UTF-8', 'ISO-8859-1') : utf8_encode($m[0]); - }, - $data - ); - if (!is_string($data)) { - $pcreErrorCode = preg_last_error(); - - throw new \RuntimeException('Failed to preg_replace_callback: ' . $pcreErrorCode . ' / ' . self::pcreLastErrorMessage($pcreErrorCode)); - } - $data = str_replace( - ['¤', '¦', '¨', '´', '¸', '¼', '½', '¾'], - ['€', 'Š', 'š', 'Ž', 'ž', 'Œ', 'œ', 'Ÿ'], - $data - ); - } - } - - /** - * Converts a string with a valid 'memory_limit' format, to bytes. - * - * @param string|false $val - * @return int|false Returns an integer representing bytes. Returns FALSE in case of error. - */ - public static function expandIniShorthandBytes($val) - { - if (!is_string($val)) { - return false; - } - - // support -1 - if ((int) $val < 0) { - return (int) $val; - } - - if (preg_match('/^\s*(?\d+)(?:\.\d+)?\s*(?[gmk]?)\s*$/i', $val, $match) !== 1) { - return false; - } - - $val = (int) $match['val']; - switch (strtolower($match['unit'] ?? '')) { - case 'g': - $val *= 1024; - // no break - case 'm': - $val *= 1024; - // no break - case 'k': - $val *= 1024; - } - - return $val; - } - - public static function getRecordMessageForException(LogRecord $record): string - { - $context = ''; - $extra = ''; - - try { - if (\count($record->context) > 0) { - $context = "\nContext: " . json_encode($record->context, JSON_THROW_ON_ERROR); - } - if (\count($record->extra) > 0) { - $extra = "\nExtra: " . json_encode($record->extra, JSON_THROW_ON_ERROR); - } - } catch (\Throwable $e) { - // noop - } - - return "\nThe exception occurred while attempting to log: " . $record->message . $context . $extra; - } -} diff --git a/vendor/nesbot/carbon/.phpstorm.meta.php b/vendor/nesbot/carbon/.phpstorm.meta.php deleted file mode 100644 index bd7c7e0e..00000000 --- a/vendor/nesbot/carbon/.phpstorm.meta.php +++ /dev/null @@ -1,10 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\MessageFormatter; - -use Symfony\Component\Translation\Formatter\MessageFormatterInterface; - -if (!class_exists(LazyMessageFormatter::class, false)) { - abstract class LazyMessageFormatter implements MessageFormatterInterface - { - public function format(string $message, string $locale, array $parameters = []): string - { - return $this->formatter->format( - $message, - $this->transformLocale($locale), - $parameters - ); - } - } -} diff --git a/vendor/nesbot/carbon/lazy/Carbon/MessageFormatter/MessageFormatterMapperWeakType.php b/vendor/nesbot/carbon/lazy/Carbon/MessageFormatter/MessageFormatterMapperWeakType.php deleted file mode 100644 index cbd890d5..00000000 --- a/vendor/nesbot/carbon/lazy/Carbon/MessageFormatter/MessageFormatterMapperWeakType.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\MessageFormatter; - -use Symfony\Component\Translation\Formatter\ChoiceMessageFormatterInterface; -use Symfony\Component\Translation\Formatter\MessageFormatterInterface; - -if (!class_exists(LazyMessageFormatter::class, false)) { - abstract class LazyMessageFormatter implements MessageFormatterInterface, ChoiceMessageFormatterInterface - { - abstract protected function transformLocale(?string $locale): ?string; - - public function format($message, $locale, array $parameters = []) - { - return $this->formatter->format( - $message, - $this->transformLocale($locale), - $parameters - ); - } - - public function choiceFormat($message, $number, $locale, array $parameters = []) - { - return $this->formatter->choiceFormat($message, $number, $locale, $parameters); - } - } -} diff --git a/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroBuiltin.php b/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroBuiltin.php deleted file mode 100644 index ba7cf632..00000000 --- a/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroBuiltin.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\PHPStan; - -use PHPStan\BetterReflection\Reflection; -use ReflectionMethod; - -if (!class_exists(AbstractReflectionMacro::class, false)) { - abstract class AbstractReflectionMacro extends AbstractMacro - { - /** - * {@inheritdoc} - */ - public function getReflection(): ?ReflectionMethod - { - if ($this->reflectionFunction instanceof Reflection\ReflectionMethod) { - return new Reflection\Adapter\ReflectionMethod($this->reflectionFunction); - } - - return $this->reflectionFunction instanceof ReflectionMethod - ? $this->reflectionFunction - : null; - } - } -} diff --git a/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroStatic.php b/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroStatic.php deleted file mode 100644 index bd4c8e80..00000000 --- a/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroStatic.php +++ /dev/null @@ -1,45 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\PHPStan; - -use PHPStan\BetterReflection\Reflection; -use ReflectionMethod; - -if (!class_exists(AbstractReflectionMacro::class, false)) { - abstract class AbstractReflectionMacro extends AbstractMacro - { - /** - * {@inheritdoc} - */ - public function getReflection(): ?Reflection\Adapter\ReflectionMethod - { - if ($this->reflectionFunction instanceof Reflection\Adapter\ReflectionMethod) { - return $this->reflectionFunction; - } - - if ($this->reflectionFunction instanceof Reflection\ReflectionMethod) { - return new Reflection\Adapter\ReflectionMethod($this->reflectionFunction); - } - - return $this->reflectionFunction instanceof ReflectionMethod - ? new Reflection\Adapter\ReflectionMethod( - Reflection\ReflectionMethod::createFromName( - $this->reflectionFunction->getDeclaringClass()->getName(), - $this->reflectionFunction->getName() - ) - ) - : null; - } - } -} diff --git a/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroStrongType.php b/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroStrongType.php deleted file mode 100644 index f615b3a6..00000000 --- a/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroStrongType.php +++ /dev/null @@ -1,45 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\PHPStan; - -if (!class_exists(LazyMacro::class, false)) { - abstract class LazyMacro extends AbstractReflectionMacro - { - /** - * {@inheritdoc} - */ - public function getFileName(): ?string - { - $file = $this->reflectionFunction->getFileName(); - - return (($file ? realpath($file) : null) ?: $file) ?: null; - } - - /** - * {@inheritdoc} - */ - public function getStartLine(): ?int - { - return $this->reflectionFunction->getStartLine(); - } - - /** - * {@inheritdoc} - */ - public function getEndLine(): ?int - { - return $this->reflectionFunction->getEndLine(); - } - } -} diff --git a/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroWeakType.php b/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroWeakType.php deleted file mode 100644 index bf64c1dd..00000000 --- a/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroWeakType.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\PHPStan; - -if (!class_exists(LazyMacro::class, false)) { - abstract class LazyMacro extends AbstractReflectionMacro - { - /** - * {@inheritdoc} - * - * @return string|false - */ - public function getFileName() - { - $file = $this->reflectionFunction->getFileName(); - - return (($file ? realpath($file) : null) ?: $file) ?: null; - } - - /** - * {@inheritdoc} - * - * @return int|false - */ - public function getStartLine() - { - return $this->reflectionFunction->getStartLine(); - } - - /** - * {@inheritdoc} - * - * @return int|false - */ - public function getEndLine() - { - return $this->reflectionFunction->getEndLine(); - } - } -} diff --git a/vendor/nesbot/carbon/lazy/Carbon/TranslatorStrongType.php b/vendor/nesbot/carbon/lazy/Carbon/TranslatorStrongType.php deleted file mode 100644 index d35308a6..00000000 --- a/vendor/nesbot/carbon/lazy/Carbon/TranslatorStrongType.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -use Symfony\Component\Translation\MessageCatalogueInterface; - -if (!class_exists(LazyTranslator::class, false)) { - class LazyTranslator extends AbstractTranslator implements TranslatorStrongTypeInterface - { - public function trans(?string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string - { - return $this->translate($id, $parameters, $domain, $locale); - } - - public function getFromCatalogue(MessageCatalogueInterface $catalogue, string $id, string $domain = 'messages') - { - $messages = $this->getPrivateProperty($catalogue, 'messages'); - - if (isset($messages[$domain.MessageCatalogueInterface::INTL_DOMAIN_SUFFIX][$id])) { - return $messages[$domain.MessageCatalogueInterface::INTL_DOMAIN_SUFFIX][$id]; - } - - if (isset($messages[$domain][$id])) { - return $messages[$domain][$id]; - } - - $fallbackCatalogue = $this->getPrivateProperty($catalogue, 'fallbackCatalogue'); - - if ($fallbackCatalogue !== null) { - return $this->getFromCatalogue($fallbackCatalogue, $id, $domain); - } - - return $id; - } - - private function getPrivateProperty($instance, string $field) - { - return (function (string $field) { - return $this->$field; - })->call($instance, $field); - } - } -} diff --git a/vendor/nesbot/carbon/lazy/Carbon/TranslatorWeakType.php b/vendor/nesbot/carbon/lazy/Carbon/TranslatorWeakType.php deleted file mode 100644 index 94dbdc30..00000000 --- a/vendor/nesbot/carbon/lazy/Carbon/TranslatorWeakType.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -if (!class_exists(LazyTranslator::class, false)) { - class LazyTranslator extends AbstractTranslator - { - /** - * Returns the translation. - * - * @param string|null $id - * @param array $parameters - * @param string|null $domain - * @param string|null $locale - * - * @return string - */ - public function trans($id, array $parameters = [], $domain = null, $locale = null) - { - return $this->translate($id, $parameters, $domain, $locale); - } - } -} diff --git a/vendor/nesbot/carbon/readme.md b/vendor/nesbot/carbon/readme.md deleted file mode 100644 index c3e121ac..00000000 --- a/vendor/nesbot/carbon/readme.md +++ /dev/null @@ -1,173 +0,0 @@ -# Carbon - -[![Latest Stable Version](https://img.shields.io/packagist/v/nesbot/carbon.svg?style=flat-square)](https://packagist.org/packages/nesbot/carbon) -[![Total Downloads](https://img.shields.io/packagist/dt/nesbot/carbon.svg?style=flat-square)](https://packagist.org/packages/nesbot/carbon) -[![GitHub Actions](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fbriannesbitt%2FCarbon%2Fbadge&style=flat-square&label=Build&logo=none)](https://github.com/briannesbitt/Carbon/actions) -[![codecov.io](https://img.shields.io/codecov/c/github/briannesbitt/Carbon.svg?style=flat-square)](https://codecov.io/github/briannesbitt/Carbon?branch=master) -[![Tidelift](https://tidelift.com/badges/github/briannesbitt/Carbon)](https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme) - -An international PHP extension for DateTime. [https://carbon.nesbot.com](https://carbon.nesbot.com) - -```php -toDateTimeString()); -printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver')); //implicit __toString() -$tomorrow = Carbon::now()->addDay(); -$lastWeek = Carbon::now()->subWeek(); -$nextSummerOlympics = Carbon::createFromDate(2016)->addYears(4); - -$officialDate = Carbon::now()->toRfc2822String(); - -$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age; - -$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London'); - -$internetWillBlowUpOn = Carbon::create(2038, 01, 19, 3, 14, 7, 'GMT'); - -// Don't really want this to happen so mock now -Carbon::setTestNow(Carbon::createFromDate(2000, 1, 1)); - -// comparisons are always done in UTC -if (Carbon::now()->gte($internetWillBlowUpOn)) { - die(); -} - -// Phew! Return to normal behaviour -Carbon::setTestNow(); - -if (Carbon::now()->isWeekend()) { - echo 'Party!'; -} -// Over 200 languages (and over 500 regional variants) supported: -echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago' -echo Carbon::now()->subMinutes(2)->locale('zh_CN')->diffForHumans(); // '2分钟前' -echo Carbon::parse('2019-07-23 14:51')->isoFormat('LLLL'); // 'Tuesday, July 23, 2019 2:51 PM' -echo Carbon::parse('2019-07-23 14:51')->locale('fr_FR')->isoFormat('LLLL'); // 'mardi 23 juillet 2019 14:51' - -// ... but also does 'from now', 'after' and 'before' -// rolling up to seconds, minutes, hours, days, months, years - -$daysSinceEpoch = Carbon::createFromTimestamp(0)->diffInDays(); -``` - -[Get supported nesbot/carbon with the Tidelift Subscription](https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme) - -## Installation - -### With Composer - -``` -$ composer require nesbot/carbon -``` - -```json -{ - "require": { - "nesbot/carbon": "^2.16" - } -} -``` - -```php -
    - -### Translators - -[Thanks to people helping us to translate Carbon in so many languages](https://carbon.nesbot.com/contribute/translators/) - -### Sponsors - -Support this project by becoming a sponsor. Your logo will show up here with a link to your website. - - -Онлайн казино -CasinoHex Canada -Probukmacher -Игровые автоматы -Casino-portugal.pt -Slots City -inkedin -Онлайн казино України -OnlineCasinosSpelen -Best non Gamstop sites in the UK -Real Money Pokies -Non GamStop Bookies UK -Онлайн Казино Украины -Non-GamStop Bets UK -Chudovo -UK Casino Gap -NZ Casino Deps -NonStopCasino.org -Migliori Siti Non AAMS -UK NonGamStopCasinos -SnapTik -IG Downloader -Proxidize -AzuraCast -Triplebyte -GitHub Sponsors -Salesforce - - -[[Become a sponsor via OpenCollective](https://opencollective.com/Carbon#sponsor)] - - - - - - -[[Become a sponsor via GitHub](https://github.com/sponsors/kylekatarnls)] - -### Backers - -Thank you to all our backers! 🙏 - - - -[[Become a backer](https://opencollective.com/Carbon#backer)] - -## Carbon for enterprise - -Available as part of the Tidelift Subscription. - -The maintainers of ``Carbon`` and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/vendor/nesbot/carbon/sponsors.php b/vendor/nesbot/carbon/sponsors.php deleted file mode 100644 index 41817d68..00000000 --- a/vendor/nesbot/carbon/sponsors.php +++ /dev/null @@ -1,120 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Carbon\CarbonImmutable; - -require_once __DIR__.'/vendor/autoload.php'; - -function getMaxHistoryMonthsByAmount($amount): int -{ - if ($amount >= 50) { - return 6; - } - - if ($amount >= 20) { - return 4; - } - - return 2; -} - -function getOpenCollectiveSponsors(): string -{ - $customSponsorImages = [ - // For consistency and equity among sponsors, as of now, we kindly ask our sponsors - // to provide an image having a width/height ratio between 1/1 and 2/1. - // By default, we'll show the member picture from OpenCollective, and will resize it if bigger - // int(OpenCollective.MemberId) => ImageURL - ]; - - $members = json_decode(file_get_contents('https://opencollective.com/carbon/members/all.json'), true); - - $list = array_filter($members, static function ($member): bool { - return ($member['lastTransactionAmount'] > 3 || $member['isActive']) && - $member['role'] === 'BACKER' && - $member['type'] !== 'USER' && - ( - $member['totalAmountDonated'] > 100 || - $member['lastTransactionAt'] > CarbonImmutable::now() - ->subMonthsNoOverflow(getMaxHistoryMonthsByAmount($member['lastTransactionAmount'])) - ->format('Y-m-d h:i') || - $member['isActive'] && $member['lastTransactionAmount'] >= 30 - ); - }); - - $list = array_map(static function (array $member): array { - $createdAt = CarbonImmutable::parse($member['createdAt']); - $lastTransactionAt = CarbonImmutable::parse($member['lastTransactionAt']); - - if ($createdAt->format('d H:i:s.u') > $lastTransactionAt->format('d H:i:s.u')) { - $createdAt = $createdAt - ->setDay($lastTransactionAt->day) - ->modify($lastTransactionAt->format('H:i:s.u')); - } - - $monthlyContribution = (float) ($member['totalAmountDonated'] / ceil($createdAt->floatDiffInMonths())); - - if ( - $lastTransactionAt->isAfter('last month') && - $member['lastTransactionAmount'] > $monthlyContribution - ) { - $monthlyContribution = (float) $member['lastTransactionAmount']; - } - - $yearlyContribution = (float) ($member['totalAmountDonated'] / max(1, $createdAt->floatDiffInYears())); - $status = null; - - if ($monthlyContribution > 29) { - $status = 'sponsor'; - } elseif ($monthlyContribution > 4.5 || $yearlyContribution > 29) { - $status = 'backer'; - } elseif ($member['totalAmountDonated'] > 0) { - $status = 'helper'; - } - - return array_merge($member, [ - 'star' => ($monthlyContribution > 98 || $yearlyContribution > 500), - 'status' => $status, - 'monthlyContribution' => $monthlyContribution, - 'yearlyContribution' => $yearlyContribution, - ]); - }, $list); - - usort($list, static function (array $a, array $b): int { - return ($b['monthlyContribution'] <=> $a['monthlyContribution']) - ?: ($b['totalAmountDonated'] <=> $a['totalAmountDonated']); - }); - - return implode('', array_map(static function (array $member) use ($customSponsorImages): string { - $href = htmlspecialchars($member['website'] ?? $member['profile']); - $src = $customSponsorImages[$member['MemberId'] ?? ''] ?? $member['image'] ?? (strtr($member['profile'], ['https://opencollective.com/' => 'https://images.opencollective.com/']).'/avatar/256.png'); - [$x, $y] = @getimagesize($src) ?: [0, 0]; - $validImage = ($x && $y); - $src = $validImage ? htmlspecialchars($src) : 'https://opencollective.com/static/images/default-guest-logo.svg'; - $height = $member['status'] === 'sponsor' ? 64 : 42; - $width = min($height * 2, $validImage ? round($x * $height / $y) : $height); - $href .= (strpos($href, '?') === false ? '?' : '&').'utm_source=opencollective&utm_medium=github&utm_campaign=Carbon'; - $title = htmlspecialchars(($member['description'] ?? null) ?: $member['name']); - $alt = htmlspecialchars($member['name']); - - return "\n".''. - ''.$alt.''. - ''; - }, $list))."\n"; -} - -file_put_contents('readme.md', preg_replace_callback( - '/()[\s\S]+()/', - static function (array $match): string { - return $match[1].getOpenCollectiveSponsors().$match[2]; - }, - file_get_contents('readme.md') -)); diff --git a/vendor/nesbot/carbon/src/Carbon/AbstractTranslator.php b/vendor/nesbot/carbon/src/Carbon/AbstractTranslator.php deleted file mode 100644 index 8b8fe089..00000000 --- a/vendor/nesbot/carbon/src/Carbon/AbstractTranslator.php +++ /dev/null @@ -1,398 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -use Carbon\MessageFormatter\MessageFormatterMapper; -use Closure; -use ReflectionException; -use ReflectionFunction; -use Symfony\Component\Translation; -use Symfony\Component\Translation\Formatter\MessageFormatterInterface; -use Symfony\Component\Translation\Loader\ArrayLoader; - -abstract class AbstractTranslator extends Translation\Translator -{ - /** - * Translator singletons for each language. - * - * @var array - */ - protected static $singletons = []; - - /** - * List of custom localized messages. - * - * @var array - */ - protected $messages = []; - - /** - * List of custom directories that contain translation files. - * - * @var string[] - */ - protected $directories = []; - - /** - * Set to true while constructing. - * - * @var bool - */ - protected $initializing = false; - - /** - * List of locales aliases. - * - * @var array - */ - protected $aliases = [ - 'me' => 'sr_Latn_ME', - 'scr' => 'sh', - ]; - - /** - * Return a singleton instance of Translator. - * - * @param string|null $locale optional initial locale ("en" - english by default) - * - * @return static - */ - public static function get($locale = null) - { - $locale = $locale ?: 'en'; - $key = static::class === Translator::class ? $locale : static::class.'|'.$locale; - - if (!isset(static::$singletons[$key])) { - static::$singletons[$key] = new static($locale); - } - - return static::$singletons[$key]; - } - - public function __construct($locale, MessageFormatterInterface $formatter = null, $cacheDir = null, $debug = false) - { - parent::setLocale($locale); - $this->initializing = true; - $this->directories = [__DIR__.'/Lang']; - $this->addLoader('array', new ArrayLoader()); - parent::__construct($locale, new MessageFormatterMapper($formatter), $cacheDir, $debug); - $this->initializing = false; - } - - /** - * Returns the list of directories translation files are searched in. - * - * @return array - */ - public function getDirectories(): array - { - return $this->directories; - } - - /** - * Set list of directories translation files are searched in. - * - * @param array $directories new directories list - * - * @return $this - */ - public function setDirectories(array $directories) - { - $this->directories = $directories; - - return $this; - } - - /** - * Add a directory to the list translation files are searched in. - * - * @param string $directory new directory - * - * @return $this - */ - public function addDirectory(string $directory) - { - $this->directories[] = $directory; - - return $this; - } - - /** - * Remove a directory from the list translation files are searched in. - * - * @param string $directory directory path - * - * @return $this - */ - public function removeDirectory(string $directory) - { - $search = rtrim(strtr($directory, '\\', '/'), '/'); - - return $this->setDirectories(array_filter($this->getDirectories(), function ($item) use ($search) { - return rtrim(strtr($item, '\\', '/'), '/') !== $search; - })); - } - - /** - * Reset messages of a locale (all locale if no locale passed). - * Remove custom messages and reload initial messages from matching - * file in Lang directory. - * - * @param string|null $locale - * - * @return bool - */ - public function resetMessages($locale = null) - { - if ($locale === null) { - $this->messages = []; - - return true; - } - - foreach ($this->getDirectories() as $directory) { - $data = @include sprintf('%s/%s.php', rtrim($directory, '\\/'), $locale); - - if ($data !== false) { - $this->messages[$locale] = $data; - $this->addResource('array', $this->messages[$locale], $locale); - - return true; - } - } - - return false; - } - - /** - * Returns the list of files matching a given locale prefix (or all if empty). - * - * @param string $prefix prefix required to filter result - * - * @return array - */ - public function getLocalesFiles($prefix = '') - { - $files = []; - - foreach ($this->getDirectories() as $directory) { - $directory = rtrim($directory, '\\/'); - - foreach (glob("$directory/$prefix*.php") as $file) { - $files[] = $file; - } - } - - return array_unique($files); - } - - /** - * Returns the list of internally available locales and already loaded custom locales. - * (It will ignore custom translator dynamic loading.) - * - * @param string $prefix prefix required to filter result - * - * @return array - */ - public function getAvailableLocales($prefix = '') - { - $locales = []; - foreach ($this->getLocalesFiles($prefix) as $file) { - $locales[] = substr($file, strrpos($file, '/') + 1, -4); - } - - return array_unique(array_merge($locales, array_keys($this->messages))); - } - - protected function translate(?string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string - { - if ($domain === null) { - $domain = 'messages'; - } - - $catalogue = $this->getCatalogue($locale); - $format = $this instanceof TranslatorStrongTypeInterface - ? $this->getFromCatalogue($catalogue, (string) $id, $domain) - : $this->getCatalogue($locale)->get((string) $id, $domain); // @codeCoverageIgnore - - if ($format instanceof Closure) { - // @codeCoverageIgnoreStart - try { - $count = (new ReflectionFunction($format))->getNumberOfRequiredParameters(); - } catch (ReflectionException $exception) { - $count = 0; - } - // @codeCoverageIgnoreEnd - - return $format( - ...array_values($parameters), - ...array_fill(0, max(0, $count - \count($parameters)), null) - ); - } - - return parent::trans($id, $parameters, $domain, $locale); - } - - /** - * Init messages language from matching file in Lang directory. - * - * @param string $locale - * - * @return bool - */ - protected function loadMessagesFromFile($locale) - { - return isset($this->messages[$locale]) || $this->resetMessages($locale); - } - - /** - * Set messages of a locale and take file first if present. - * - * @param string $locale - * @param array $messages - * - * @return $this - */ - public function setMessages($locale, $messages) - { - $this->loadMessagesFromFile($locale); - $this->addResource('array', $messages, $locale); - $this->messages[$locale] = array_merge( - $this->messages[$locale] ?? [], - $messages - ); - - return $this; - } - - /** - * Set messages of the current locale and take file first if present. - * - * @param array $messages - * - * @return $this - */ - public function setTranslations($messages) - { - return $this->setMessages($this->getLocale(), $messages); - } - - /** - * Get messages of a locale, if none given, return all the - * languages. - * - * @param string|null $locale - * - * @return array - */ - public function getMessages($locale = null) - { - return $locale === null ? $this->messages : $this->messages[$locale]; - } - - /** - * Set the current translator locale and indicate if the source locale file exists - * - * @param string $locale locale ex. en - * - * @return bool - */ - public function setLocale($locale) - { - $locale = preg_replace_callback('/[-_]([a-z]{2,}|\d{2,})/', function ($matches) { - // _2-letters or YUE is a region, _3+-letters is a variant - $upper = strtoupper($matches[1]); - - if ($upper === 'YUE' || $upper === 'ISO' || \strlen($upper) < 3) { - return "_$upper"; - } - - return '_'.ucfirst($matches[1]); - }, strtolower($locale)); - - $previousLocale = $this->getLocale(); - - if ($previousLocale === $locale && isset($this->messages[$locale])) { - return true; - } - - unset(static::$singletons[$previousLocale]); - - if ($locale === 'auto') { - $completeLocale = setlocale(LC_TIME, '0'); - $locale = preg_replace('/^([^_.-]+).*$/', '$1', $completeLocale); - $locales = $this->getAvailableLocales($locale); - - $completeLocaleChunks = preg_split('/[_.-]+/', $completeLocale); - - $getScore = function ($language) use ($completeLocaleChunks) { - return self::compareChunkLists($completeLocaleChunks, preg_split('/[_.-]+/', $language)); - }; - - usort($locales, function ($first, $second) use ($getScore) { - return $getScore($second) <=> $getScore($first); - }); - - $locale = $locales[0]; - } - - if (isset($this->aliases[$locale])) { - $locale = $this->aliases[$locale]; - } - - // If subtag (ex: en_CA) first load the macro (ex: en) to have a fallback - if (str_contains($locale, '_') && - $this->loadMessagesFromFile($macroLocale = preg_replace('/^([^_]+).*$/', '$1', $locale)) - ) { - parent::setLocale($macroLocale); - } - - if (!$this->loadMessagesFromFile($locale) && !$this->initializing) { - return false; - } - - parent::setLocale($locale); - - return true; - } - - /** - * Show locale on var_dump(). - * - * @return array - */ - public function __debugInfo() - { - return [ - 'locale' => $this->getLocale(), - ]; - } - - private static function compareChunkLists($referenceChunks, $chunks) - { - $score = 0; - - foreach ($referenceChunks as $index => $chunk) { - if (!isset($chunks[$index])) { - $score++; - - continue; - } - - if (strtolower($chunks[$index]) === strtolower($chunk)) { - $score += 10; - } - } - - return $score; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Carbon.php b/vendor/nesbot/carbon/src/Carbon/Carbon.php deleted file mode 100644 index e32569ae..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Carbon.php +++ /dev/null @@ -1,523 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -use Carbon\Traits\Date; -use Carbon\Traits\DeprecatedProperties; -use DateTime; -use DateTimeInterface; -use DateTimeZone; - -/** - * A simple API extension for DateTime. - * - * @mixin DeprecatedProperties - * - * - * - * @property int $year - * @property int $yearIso - * @property int $month - * @property int $day - * @property int $hour - * @property int $minute - * @property int $second - * @property int $micro - * @property int $microsecond - * @property int|float|string $timestamp seconds since the Unix Epoch - * @property string $englishDayOfWeek the day of week in English - * @property string $shortEnglishDayOfWeek the abbreviated day of week in English - * @property string $englishMonth the month in English - * @property string $shortEnglishMonth the abbreviated month in English - * @property int $milliseconds - * @property int $millisecond - * @property int $milli - * @property int $week 1 through 53 - * @property int $isoWeek 1 through 53 - * @property int $weekYear year according to week format - * @property int $isoWeekYear year according to ISO week format - * @property int $dayOfYear 1 through 366 - * @property int $age does a diffInYears() with default parameters - * @property int $offset the timezone offset in seconds from UTC - * @property int $offsetMinutes the timezone offset in minutes from UTC - * @property int $offsetHours the timezone offset in hours from UTC - * @property CarbonTimeZone $timezone the current timezone - * @property CarbonTimeZone $tz alias of $timezone - * @property-read int $dayOfWeek 0 (for Sunday) through 6 (for Saturday) - * @property-read int $dayOfWeekIso 1 (for Monday) through 7 (for Sunday) - * @property-read int $weekOfYear ISO-8601 week number of year, weeks starting on Monday - * @property-read int $daysInMonth number of days in the given month - * @property-read string $latinMeridiem "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark) - * @property-read string $latinUpperMeridiem "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark) - * @property-read string $timezoneAbbreviatedName the current timezone abbreviated name - * @property-read string $tzAbbrName alias of $timezoneAbbreviatedName - * @property-read string $dayName long name of weekday translated according to Carbon locale, in english if no translation available for current language - * @property-read string $shortDayName short name of weekday translated according to Carbon locale, in english if no translation available for current language - * @property-read string $minDayName very short name of weekday translated according to Carbon locale, in english if no translation available for current language - * @property-read string $monthName long name of month translated according to Carbon locale, in english if no translation available for current language - * @property-read string $shortMonthName short name of month translated according to Carbon locale, in english if no translation available for current language - * @property-read string $meridiem lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language - * @property-read string $upperMeridiem uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language - * @property-read int $noZeroHour current hour from 1 to 24 - * @property-read int $weeksInYear 51 through 53 - * @property-read int $isoWeeksInYear 51 through 53 - * @property-read int $weekOfMonth 1 through 5 - * @property-read int $weekNumberInMonth 1 through 5 - * @property-read int $firstWeekDay 0 through 6 - * @property-read int $lastWeekDay 0 through 6 - * @property-read int $daysInYear 365 or 366 - * @property-read int $quarter the quarter of this instance, 1 - 4 - * @property-read int $decade the decade of this instance - * @property-read int $century the century of this instance - * @property-read int $millennium the millennium of this instance - * @property-read bool $dst daylight savings time indicator, true if DST, false otherwise - * @property-read bool $local checks if the timezone is local, true if local, false otherwise - * @property-read bool $utc checks if the timezone is UTC, true if UTC, false otherwise - * @property-read string $timezoneName the current timezone name - * @property-read string $tzName alias of $timezoneName - * @property-read string $locale locale of the current instance - * - * @method bool isUtc() Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.) - * @method bool isLocal() Check if the current instance has non-UTC timezone. - * @method bool isValid() Check if the current instance is a valid date. - * @method bool isDST() Check if the current instance is in a daylight saving time. - * @method bool isSunday() Checks if the instance day is sunday. - * @method bool isMonday() Checks if the instance day is monday. - * @method bool isTuesday() Checks if the instance day is tuesday. - * @method bool isWednesday() Checks if the instance day is wednesday. - * @method bool isThursday() Checks if the instance day is thursday. - * @method bool isFriday() Checks if the instance day is friday. - * @method bool isSaturday() Checks if the instance day is saturday. - * @method bool isSameYear(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentYear() Checks if the instance is in the same year as the current moment. - * @method bool isNextYear() Checks if the instance is in the same year as the current moment next year. - * @method bool isLastYear() Checks if the instance is in the same year as the current moment last year. - * @method bool isSameWeek(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentWeek() Checks if the instance is in the same week as the current moment. - * @method bool isNextWeek() Checks if the instance is in the same week as the current moment next week. - * @method bool isLastWeek() Checks if the instance is in the same week as the current moment last week. - * @method bool isSameDay(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentDay() Checks if the instance is in the same day as the current moment. - * @method bool isNextDay() Checks if the instance is in the same day as the current moment next day. - * @method bool isLastDay() Checks if the instance is in the same day as the current moment last day. - * @method bool isSameHour(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentHour() Checks if the instance is in the same hour as the current moment. - * @method bool isNextHour() Checks if the instance is in the same hour as the current moment next hour. - * @method bool isLastHour() Checks if the instance is in the same hour as the current moment last hour. - * @method bool isSameMinute(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMinute() Checks if the instance is in the same minute as the current moment. - * @method bool isNextMinute() Checks if the instance is in the same minute as the current moment next minute. - * @method bool isLastMinute() Checks if the instance is in the same minute as the current moment last minute. - * @method bool isSameSecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentSecond() Checks if the instance is in the same second as the current moment. - * @method bool isNextSecond() Checks if the instance is in the same second as the current moment next second. - * @method bool isLastSecond() Checks if the instance is in the same second as the current moment last second. - * @method bool isSameMicro(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMicro() Checks if the instance is in the same microsecond as the current moment. - * @method bool isNextMicro() Checks if the instance is in the same microsecond as the current moment next microsecond. - * @method bool isLastMicro() Checks if the instance is in the same microsecond as the current moment last microsecond. - * @method bool isSameMicrosecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMicrosecond() Checks if the instance is in the same microsecond as the current moment. - * @method bool isNextMicrosecond() Checks if the instance is in the same microsecond as the current moment next microsecond. - * @method bool isLastMicrosecond() Checks if the instance is in the same microsecond as the current moment last microsecond. - * @method bool isCurrentMonth() Checks if the instance is in the same month as the current moment. - * @method bool isNextMonth() Checks if the instance is in the same month as the current moment next month. - * @method bool isLastMonth() Checks if the instance is in the same month as the current moment last month. - * @method bool isCurrentQuarter() Checks if the instance is in the same quarter as the current moment. - * @method bool isNextQuarter() Checks if the instance is in the same quarter as the current moment next quarter. - * @method bool isLastQuarter() Checks if the instance is in the same quarter as the current moment last quarter. - * @method bool isSameDecade(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentDecade() Checks if the instance is in the same decade as the current moment. - * @method bool isNextDecade() Checks if the instance is in the same decade as the current moment next decade. - * @method bool isLastDecade() Checks if the instance is in the same decade as the current moment last decade. - * @method bool isSameCentury(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentCentury() Checks if the instance is in the same century as the current moment. - * @method bool isNextCentury() Checks if the instance is in the same century as the current moment next century. - * @method bool isLastCentury() Checks if the instance is in the same century as the current moment last century. - * @method bool isSameMillennium(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMillennium() Checks if the instance is in the same millennium as the current moment. - * @method bool isNextMillennium() Checks if the instance is in the same millennium as the current moment next millennium. - * @method bool isLastMillennium() Checks if the instance is in the same millennium as the current moment last millennium. - * @method $this years(int $value) Set current instance year to the given value. - * @method $this year(int $value) Set current instance year to the given value. - * @method $this setYears(int $value) Set current instance year to the given value. - * @method $this setYear(int $value) Set current instance year to the given value. - * @method $this months(int $value) Set current instance month to the given value. - * @method $this month(int $value) Set current instance month to the given value. - * @method $this setMonths(int $value) Set current instance month to the given value. - * @method $this setMonth(int $value) Set current instance month to the given value. - * @method $this days(int $value) Set current instance day to the given value. - * @method $this day(int $value) Set current instance day to the given value. - * @method $this setDays(int $value) Set current instance day to the given value. - * @method $this setDay(int $value) Set current instance day to the given value. - * @method $this hours(int $value) Set current instance hour to the given value. - * @method $this hour(int $value) Set current instance hour to the given value. - * @method $this setHours(int $value) Set current instance hour to the given value. - * @method $this setHour(int $value) Set current instance hour to the given value. - * @method $this minutes(int $value) Set current instance minute to the given value. - * @method $this minute(int $value) Set current instance minute to the given value. - * @method $this setMinutes(int $value) Set current instance minute to the given value. - * @method $this setMinute(int $value) Set current instance minute to the given value. - * @method $this seconds(int $value) Set current instance second to the given value. - * @method $this second(int $value) Set current instance second to the given value. - * @method $this setSeconds(int $value) Set current instance second to the given value. - * @method $this setSecond(int $value) Set current instance second to the given value. - * @method $this millis(int $value) Set current instance millisecond to the given value. - * @method $this milli(int $value) Set current instance millisecond to the given value. - * @method $this setMillis(int $value) Set current instance millisecond to the given value. - * @method $this setMilli(int $value) Set current instance millisecond to the given value. - * @method $this milliseconds(int $value) Set current instance millisecond to the given value. - * @method $this millisecond(int $value) Set current instance millisecond to the given value. - * @method $this setMilliseconds(int $value) Set current instance millisecond to the given value. - * @method $this setMillisecond(int $value) Set current instance millisecond to the given value. - * @method $this micros(int $value) Set current instance microsecond to the given value. - * @method $this micro(int $value) Set current instance microsecond to the given value. - * @method $this setMicros(int $value) Set current instance microsecond to the given value. - * @method $this setMicro(int $value) Set current instance microsecond to the given value. - * @method $this microseconds(int $value) Set current instance microsecond to the given value. - * @method $this microsecond(int $value) Set current instance microsecond to the given value. - * @method $this setMicroseconds(int $value) Set current instance microsecond to the given value. - * @method $this setMicrosecond(int $value) Set current instance microsecond to the given value. - * @method $this addYears(int $value = 1) Add years (the $value count passed in) to the instance (using date interval). - * @method $this addYear() Add one year to the instance (using date interval). - * @method $this subYears(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval). - * @method $this subYear() Sub one year to the instance (using date interval). - * @method $this addYearsWithOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method $this addYearWithOverflow() Add one year to the instance (using date interval) with overflow explicitly allowed. - * @method $this subYearsWithOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method $this subYearWithOverflow() Sub one year to the instance (using date interval) with overflow explicitly allowed. - * @method $this addYearsWithoutOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addYearWithoutOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subYearsWithoutOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subYearWithoutOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addYearsWithNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addYearWithNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subYearsWithNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subYearWithNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addYearsNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addYearNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subYearsNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subYearNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addMonths(int $value = 1) Add months (the $value count passed in) to the instance (using date interval). - * @method $this addMonth() Add one month to the instance (using date interval). - * @method $this subMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval). - * @method $this subMonth() Sub one month to the instance (using date interval). - * @method $this addMonthsWithOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method $this addMonthWithOverflow() Add one month to the instance (using date interval) with overflow explicitly allowed. - * @method $this subMonthsWithOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method $this subMonthWithOverflow() Sub one month to the instance (using date interval) with overflow explicitly allowed. - * @method $this addMonthsWithoutOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addMonthWithoutOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subMonthsWithoutOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subMonthWithoutOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addMonthsWithNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addMonthWithNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subMonthsWithNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subMonthWithNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addMonthsNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addMonthNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subMonthsNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subMonthNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addDays(int $value = 1) Add days (the $value count passed in) to the instance (using date interval). - * @method $this addDay() Add one day to the instance (using date interval). - * @method $this subDays(int $value = 1) Sub days (the $value count passed in) to the instance (using date interval). - * @method $this subDay() Sub one day to the instance (using date interval). - * @method $this addHours(int $value = 1) Add hours (the $value count passed in) to the instance (using date interval). - * @method $this addHour() Add one hour to the instance (using date interval). - * @method $this subHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using date interval). - * @method $this subHour() Sub one hour to the instance (using date interval). - * @method $this addMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using date interval). - * @method $this addMinute() Add one minute to the instance (using date interval). - * @method $this subMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using date interval). - * @method $this subMinute() Sub one minute to the instance (using date interval). - * @method $this addSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using date interval). - * @method $this addSecond() Add one second to the instance (using date interval). - * @method $this subSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using date interval). - * @method $this subSecond() Sub one second to the instance (using date interval). - * @method $this addMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). - * @method $this addMilli() Add one millisecond to the instance (using date interval). - * @method $this subMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). - * @method $this subMilli() Sub one millisecond to the instance (using date interval). - * @method $this addMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). - * @method $this addMillisecond() Add one millisecond to the instance (using date interval). - * @method $this subMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). - * @method $this subMillisecond() Sub one millisecond to the instance (using date interval). - * @method $this addMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). - * @method $this addMicro() Add one microsecond to the instance (using date interval). - * @method $this subMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). - * @method $this subMicro() Sub one microsecond to the instance (using date interval). - * @method $this addMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). - * @method $this addMicrosecond() Add one microsecond to the instance (using date interval). - * @method $this subMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). - * @method $this subMicrosecond() Sub one microsecond to the instance (using date interval). - * @method $this addMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval). - * @method $this addMillennium() Add one millennium to the instance (using date interval). - * @method $this subMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval). - * @method $this subMillennium() Sub one millennium to the instance (using date interval). - * @method $this addMillenniaWithOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method $this addMillenniumWithOverflow() Add one millennium to the instance (using date interval) with overflow explicitly allowed. - * @method $this subMillenniaWithOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method $this subMillenniumWithOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly allowed. - * @method $this addMillenniaWithoutOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addMillenniumWithoutOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subMillenniaWithoutOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subMillenniumWithoutOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addMillenniaWithNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addMillenniumWithNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subMillenniaWithNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subMillenniumWithNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addMillenniaNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addMillenniumNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subMillenniaNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subMillenniumNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval). - * @method $this addCentury() Add one century to the instance (using date interval). - * @method $this subCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval). - * @method $this subCentury() Sub one century to the instance (using date interval). - * @method $this addCenturiesWithOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method $this addCenturyWithOverflow() Add one century to the instance (using date interval) with overflow explicitly allowed. - * @method $this subCenturiesWithOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method $this subCenturyWithOverflow() Sub one century to the instance (using date interval) with overflow explicitly allowed. - * @method $this addCenturiesWithoutOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addCenturyWithoutOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subCenturiesWithoutOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subCenturyWithoutOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addCenturiesWithNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addCenturyWithNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subCenturiesWithNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subCenturyWithNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addCenturiesNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addCenturyNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subCenturiesNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subCenturyNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval). - * @method $this addDecade() Add one decade to the instance (using date interval). - * @method $this subDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval). - * @method $this subDecade() Sub one decade to the instance (using date interval). - * @method $this addDecadesWithOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method $this addDecadeWithOverflow() Add one decade to the instance (using date interval) with overflow explicitly allowed. - * @method $this subDecadesWithOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method $this subDecadeWithOverflow() Sub one decade to the instance (using date interval) with overflow explicitly allowed. - * @method $this addDecadesWithoutOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addDecadeWithoutOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subDecadesWithoutOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subDecadeWithoutOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addDecadesWithNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addDecadeWithNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subDecadesWithNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subDecadeWithNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addDecadesNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addDecadeNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subDecadesNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subDecadeNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval). - * @method $this addQuarter() Add one quarter to the instance (using date interval). - * @method $this subQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval). - * @method $this subQuarter() Sub one quarter to the instance (using date interval). - * @method $this addQuartersWithOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method $this addQuarterWithOverflow() Add one quarter to the instance (using date interval) with overflow explicitly allowed. - * @method $this subQuartersWithOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method $this subQuarterWithOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly allowed. - * @method $this addQuartersWithoutOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addQuarterWithoutOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subQuartersWithoutOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subQuarterWithoutOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addQuartersWithNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addQuarterWithNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subQuartersWithNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subQuarterWithNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addQuartersNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addQuarterNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subQuartersNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method $this subQuarterNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method $this addWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using date interval). - * @method $this addWeek() Add one week to the instance (using date interval). - * @method $this subWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using date interval). - * @method $this subWeek() Sub one week to the instance (using date interval). - * @method $this addWeekdays(int $value = 1) Add weekdays (the $value count passed in) to the instance (using date interval). - * @method $this addWeekday() Add one weekday to the instance (using date interval). - * @method $this subWeekdays(int $value = 1) Sub weekdays (the $value count passed in) to the instance (using date interval). - * @method $this subWeekday() Sub one weekday to the instance (using date interval). - * @method $this addRealMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). - * @method $this addRealMicro() Add one microsecond to the instance (using timestamp). - * @method $this subRealMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). - * @method $this subRealMicro() Sub one microsecond to the instance (using timestamp). - * @method CarbonPeriod microsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. - * @method $this addRealMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). - * @method $this addRealMicrosecond() Add one microsecond to the instance (using timestamp). - * @method $this subRealMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). - * @method $this subRealMicrosecond() Sub one microsecond to the instance (using timestamp). - * @method CarbonPeriod microsecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. - * @method $this addRealMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). - * @method $this addRealMilli() Add one millisecond to the instance (using timestamp). - * @method $this subRealMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). - * @method $this subRealMilli() Sub one millisecond to the instance (using timestamp). - * @method CarbonPeriod millisUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. - * @method $this addRealMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). - * @method $this addRealMillisecond() Add one millisecond to the instance (using timestamp). - * @method $this subRealMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). - * @method $this subRealMillisecond() Sub one millisecond to the instance (using timestamp). - * @method CarbonPeriod millisecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. - * @method $this addRealSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using timestamp). - * @method $this addRealSecond() Add one second to the instance (using timestamp). - * @method $this subRealSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using timestamp). - * @method $this subRealSecond() Sub one second to the instance (using timestamp). - * @method CarbonPeriod secondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given. - * @method $this addRealMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using timestamp). - * @method $this addRealMinute() Add one minute to the instance (using timestamp). - * @method $this subRealMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using timestamp). - * @method $this subRealMinute() Sub one minute to the instance (using timestamp). - * @method CarbonPeriod minutesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given. - * @method $this addRealHours(int $value = 1) Add hours (the $value count passed in) to the instance (using timestamp). - * @method $this addRealHour() Add one hour to the instance (using timestamp). - * @method $this subRealHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using timestamp). - * @method $this subRealHour() Sub one hour to the instance (using timestamp). - * @method CarbonPeriod hoursUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given. - * @method $this addRealDays(int $value = 1) Add days (the $value count passed in) to the instance (using timestamp). - * @method $this addRealDay() Add one day to the instance (using timestamp). - * @method $this subRealDays(int $value = 1) Sub days (the $value count passed in) to the instance (using timestamp). - * @method $this subRealDay() Sub one day to the instance (using timestamp). - * @method CarbonPeriod daysUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given. - * @method $this addRealWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using timestamp). - * @method $this addRealWeek() Add one week to the instance (using timestamp). - * @method $this subRealWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using timestamp). - * @method $this subRealWeek() Sub one week to the instance (using timestamp). - * @method CarbonPeriod weeksUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given. - * @method $this addRealMonths(int $value = 1) Add months (the $value count passed in) to the instance (using timestamp). - * @method $this addRealMonth() Add one month to the instance (using timestamp). - * @method $this subRealMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using timestamp). - * @method $this subRealMonth() Sub one month to the instance (using timestamp). - * @method CarbonPeriod monthsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given. - * @method $this addRealQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using timestamp). - * @method $this addRealQuarter() Add one quarter to the instance (using timestamp). - * @method $this subRealQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using timestamp). - * @method $this subRealQuarter() Sub one quarter to the instance (using timestamp). - * @method CarbonPeriod quartersUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given. - * @method $this addRealYears(int $value = 1) Add years (the $value count passed in) to the instance (using timestamp). - * @method $this addRealYear() Add one year to the instance (using timestamp). - * @method $this subRealYears(int $value = 1) Sub years (the $value count passed in) to the instance (using timestamp). - * @method $this subRealYear() Sub one year to the instance (using timestamp). - * @method CarbonPeriod yearsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given. - * @method $this addRealDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using timestamp). - * @method $this addRealDecade() Add one decade to the instance (using timestamp). - * @method $this subRealDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using timestamp). - * @method $this subRealDecade() Sub one decade to the instance (using timestamp). - * @method CarbonPeriod decadesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given. - * @method $this addRealCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using timestamp). - * @method $this addRealCentury() Add one century to the instance (using timestamp). - * @method $this subRealCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using timestamp). - * @method $this subRealCentury() Sub one century to the instance (using timestamp). - * @method CarbonPeriod centuriesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given. - * @method $this addRealMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using timestamp). - * @method $this addRealMillennium() Add one millennium to the instance (using timestamp). - * @method $this subRealMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using timestamp). - * @method $this subRealMillennium() Sub one millennium to the instance (using timestamp). - * @method CarbonPeriod millenniaUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given. - * @method $this roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. - * @method $this roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. - * @method $this floorYear(float $precision = 1) Truncate the current instance year with given precision. - * @method $this floorYears(float $precision = 1) Truncate the current instance year with given precision. - * @method $this ceilYear(float $precision = 1) Ceil the current instance year with given precision. - * @method $this ceilYears(float $precision = 1) Ceil the current instance year with given precision. - * @method $this roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. - * @method $this roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. - * @method $this floorMonth(float $precision = 1) Truncate the current instance month with given precision. - * @method $this floorMonths(float $precision = 1) Truncate the current instance month with given precision. - * @method $this ceilMonth(float $precision = 1) Ceil the current instance month with given precision. - * @method $this ceilMonths(float $precision = 1) Ceil the current instance month with given precision. - * @method $this roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method $this roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method $this floorDay(float $precision = 1) Truncate the current instance day with given precision. - * @method $this floorDays(float $precision = 1) Truncate the current instance day with given precision. - * @method $this ceilDay(float $precision = 1) Ceil the current instance day with given precision. - * @method $this ceilDays(float $precision = 1) Ceil the current instance day with given precision. - * @method $this roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. - * @method $this roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. - * @method $this floorHour(float $precision = 1) Truncate the current instance hour with given precision. - * @method $this floorHours(float $precision = 1) Truncate the current instance hour with given precision. - * @method $this ceilHour(float $precision = 1) Ceil the current instance hour with given precision. - * @method $this ceilHours(float $precision = 1) Ceil the current instance hour with given precision. - * @method $this roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. - * @method $this roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. - * @method $this floorMinute(float $precision = 1) Truncate the current instance minute with given precision. - * @method $this floorMinutes(float $precision = 1) Truncate the current instance minute with given precision. - * @method $this ceilMinute(float $precision = 1) Ceil the current instance minute with given precision. - * @method $this ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision. - * @method $this roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. - * @method $this roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. - * @method $this floorSecond(float $precision = 1) Truncate the current instance second with given precision. - * @method $this floorSeconds(float $precision = 1) Truncate the current instance second with given precision. - * @method $this ceilSecond(float $precision = 1) Ceil the current instance second with given precision. - * @method $this ceilSeconds(float $precision = 1) Ceil the current instance second with given precision. - * @method $this roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. - * @method $this roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. - * @method $this floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision. - * @method $this floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision. - * @method $this ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision. - * @method $this ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision. - * @method $this roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. - * @method $this roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. - * @method $this floorCentury(float $precision = 1) Truncate the current instance century with given precision. - * @method $this floorCenturies(float $precision = 1) Truncate the current instance century with given precision. - * @method $this ceilCentury(float $precision = 1) Ceil the current instance century with given precision. - * @method $this ceilCenturies(float $precision = 1) Ceil the current instance century with given precision. - * @method $this roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. - * @method $this roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. - * @method $this floorDecade(float $precision = 1) Truncate the current instance decade with given precision. - * @method $this floorDecades(float $precision = 1) Truncate the current instance decade with given precision. - * @method $this ceilDecade(float $precision = 1) Ceil the current instance decade with given precision. - * @method $this ceilDecades(float $precision = 1) Ceil the current instance decade with given precision. - * @method $this roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. - * @method $this roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. - * @method $this floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision. - * @method $this floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision. - * @method $this ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision. - * @method $this ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision. - * @method $this roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. - * @method $this roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. - * @method $this floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision. - * @method $this floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision. - * @method $this ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision. - * @method $this ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision. - * @method $this roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. - * @method $this roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. - * @method $this floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision. - * @method $this floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision. - * @method $this ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision. - * @method $this ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision. - * @method string shortAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string shortRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string shortRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string shortRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method static static|false createFromFormat(string $format, string $time, DateTimeZone|string|false|null $timezone = null) Parse a string into a new Carbon object according to the specified format. - * @method static static __set_state(array $array) https://php.net/manual/en/datetime.set-state.php - * - * - */ -class Carbon extends DateTime implements CarbonInterface -{ - use Date; - - /** - * Returns true if the current class/instance is mutable. - * - * @return bool - */ - public static function isMutable() - { - return true; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/CarbonConverterInterface.php b/vendor/nesbot/carbon/src/Carbon/CarbonConverterInterface.php deleted file mode 100644 index 1ce967b2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/CarbonConverterInterface.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -use DateTimeInterface; - -interface CarbonConverterInterface -{ - public function convertDate(DateTimeInterface $dateTime, bool $negated = false): CarbonInterface; -} diff --git a/vendor/nesbot/carbon/src/Carbon/CarbonImmutable.php b/vendor/nesbot/carbon/src/Carbon/CarbonImmutable.php deleted file mode 100644 index 4c9c1cfe..00000000 --- a/vendor/nesbot/carbon/src/Carbon/CarbonImmutable.php +++ /dev/null @@ -1,582 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -use Carbon\Traits\Date; -use Carbon\Traits\DeprecatedProperties; -use DateTimeImmutable; -use DateTimeInterface; -use DateTimeZone; - -/** - * A simple API extension for DateTimeImmutable. - * - * @mixin DeprecatedProperties - * - * - * - * @property int $year - * @property int $yearIso - * @property int $month - * @property int $day - * @property int $hour - * @property int $minute - * @property int $second - * @property int $micro - * @property int $microsecond - * @property int|float|string $timestamp seconds since the Unix Epoch - * @property string $englishDayOfWeek the day of week in English - * @property string $shortEnglishDayOfWeek the abbreviated day of week in English - * @property string $englishMonth the month in English - * @property string $shortEnglishMonth the abbreviated month in English - * @property int $milliseconds - * @property int $millisecond - * @property int $milli - * @property int $week 1 through 53 - * @property int $isoWeek 1 through 53 - * @property int $weekYear year according to week format - * @property int $isoWeekYear year according to ISO week format - * @property int $dayOfYear 1 through 366 - * @property int $age does a diffInYears() with default parameters - * @property int $offset the timezone offset in seconds from UTC - * @property int $offsetMinutes the timezone offset in minutes from UTC - * @property int $offsetHours the timezone offset in hours from UTC - * @property CarbonTimeZone $timezone the current timezone - * @property CarbonTimeZone $tz alias of $timezone - * @property-read int $dayOfWeek 0 (for Sunday) through 6 (for Saturday) - * @property-read int $dayOfWeekIso 1 (for Monday) through 7 (for Sunday) - * @property-read int $weekOfYear ISO-8601 week number of year, weeks starting on Monday - * @property-read int $daysInMonth number of days in the given month - * @property-read string $latinMeridiem "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark) - * @property-read string $latinUpperMeridiem "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark) - * @property-read string $timezoneAbbreviatedName the current timezone abbreviated name - * @property-read string $tzAbbrName alias of $timezoneAbbreviatedName - * @property-read string $dayName long name of weekday translated according to Carbon locale, in english if no translation available for current language - * @property-read string $shortDayName short name of weekday translated according to Carbon locale, in english if no translation available for current language - * @property-read string $minDayName very short name of weekday translated according to Carbon locale, in english if no translation available for current language - * @property-read string $monthName long name of month translated according to Carbon locale, in english if no translation available for current language - * @property-read string $shortMonthName short name of month translated according to Carbon locale, in english if no translation available for current language - * @property-read string $meridiem lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language - * @property-read string $upperMeridiem uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language - * @property-read int $noZeroHour current hour from 1 to 24 - * @property-read int $weeksInYear 51 through 53 - * @property-read int $isoWeeksInYear 51 through 53 - * @property-read int $weekOfMonth 1 through 5 - * @property-read int $weekNumberInMonth 1 through 5 - * @property-read int $firstWeekDay 0 through 6 - * @property-read int $lastWeekDay 0 through 6 - * @property-read int $daysInYear 365 or 366 - * @property-read int $quarter the quarter of this instance, 1 - 4 - * @property-read int $decade the decade of this instance - * @property-read int $century the century of this instance - * @property-read int $millennium the millennium of this instance - * @property-read bool $dst daylight savings time indicator, true if DST, false otherwise - * @property-read bool $local checks if the timezone is local, true if local, false otherwise - * @property-read bool $utc checks if the timezone is UTC, true if UTC, false otherwise - * @property-read string $timezoneName the current timezone name - * @property-read string $tzName alias of $timezoneName - * @property-read string $locale locale of the current instance - * - * @method bool isUtc() Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.) - * @method bool isLocal() Check if the current instance has non-UTC timezone. - * @method bool isValid() Check if the current instance is a valid date. - * @method bool isDST() Check if the current instance is in a daylight saving time. - * @method bool isSunday() Checks if the instance day is sunday. - * @method bool isMonday() Checks if the instance day is monday. - * @method bool isTuesday() Checks if the instance day is tuesday. - * @method bool isWednesday() Checks if the instance day is wednesday. - * @method bool isThursday() Checks if the instance day is thursday. - * @method bool isFriday() Checks if the instance day is friday. - * @method bool isSaturday() Checks if the instance day is saturday. - * @method bool isSameYear(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentYear() Checks if the instance is in the same year as the current moment. - * @method bool isNextYear() Checks if the instance is in the same year as the current moment next year. - * @method bool isLastYear() Checks if the instance is in the same year as the current moment last year. - * @method bool isSameWeek(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentWeek() Checks if the instance is in the same week as the current moment. - * @method bool isNextWeek() Checks if the instance is in the same week as the current moment next week. - * @method bool isLastWeek() Checks if the instance is in the same week as the current moment last week. - * @method bool isSameDay(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentDay() Checks if the instance is in the same day as the current moment. - * @method bool isNextDay() Checks if the instance is in the same day as the current moment next day. - * @method bool isLastDay() Checks if the instance is in the same day as the current moment last day. - * @method bool isSameHour(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentHour() Checks if the instance is in the same hour as the current moment. - * @method bool isNextHour() Checks if the instance is in the same hour as the current moment next hour. - * @method bool isLastHour() Checks if the instance is in the same hour as the current moment last hour. - * @method bool isSameMinute(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMinute() Checks if the instance is in the same minute as the current moment. - * @method bool isNextMinute() Checks if the instance is in the same minute as the current moment next minute. - * @method bool isLastMinute() Checks if the instance is in the same minute as the current moment last minute. - * @method bool isSameSecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentSecond() Checks if the instance is in the same second as the current moment. - * @method bool isNextSecond() Checks if the instance is in the same second as the current moment next second. - * @method bool isLastSecond() Checks if the instance is in the same second as the current moment last second. - * @method bool isSameMicro(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMicro() Checks if the instance is in the same microsecond as the current moment. - * @method bool isNextMicro() Checks if the instance is in the same microsecond as the current moment next microsecond. - * @method bool isLastMicro() Checks if the instance is in the same microsecond as the current moment last microsecond. - * @method bool isSameMicrosecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMicrosecond() Checks if the instance is in the same microsecond as the current moment. - * @method bool isNextMicrosecond() Checks if the instance is in the same microsecond as the current moment next microsecond. - * @method bool isLastMicrosecond() Checks if the instance is in the same microsecond as the current moment last microsecond. - * @method bool isCurrentMonth() Checks if the instance is in the same month as the current moment. - * @method bool isNextMonth() Checks if the instance is in the same month as the current moment next month. - * @method bool isLastMonth() Checks if the instance is in the same month as the current moment last month. - * @method bool isCurrentQuarter() Checks if the instance is in the same quarter as the current moment. - * @method bool isNextQuarter() Checks if the instance is in the same quarter as the current moment next quarter. - * @method bool isLastQuarter() Checks if the instance is in the same quarter as the current moment last quarter. - * @method bool isSameDecade(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentDecade() Checks if the instance is in the same decade as the current moment. - * @method bool isNextDecade() Checks if the instance is in the same decade as the current moment next decade. - * @method bool isLastDecade() Checks if the instance is in the same decade as the current moment last decade. - * @method bool isSameCentury(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentCentury() Checks if the instance is in the same century as the current moment. - * @method bool isNextCentury() Checks if the instance is in the same century as the current moment next century. - * @method bool isLastCentury() Checks if the instance is in the same century as the current moment last century. - * @method bool isSameMillennium(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMillennium() Checks if the instance is in the same millennium as the current moment. - * @method bool isNextMillennium() Checks if the instance is in the same millennium as the current moment next millennium. - * @method bool isLastMillennium() Checks if the instance is in the same millennium as the current moment last millennium. - * @method CarbonImmutable years(int $value) Set current instance year to the given value. - * @method CarbonImmutable year(int $value) Set current instance year to the given value. - * @method CarbonImmutable setYears(int $value) Set current instance year to the given value. - * @method CarbonImmutable setYear(int $value) Set current instance year to the given value. - * @method CarbonImmutable months(int $value) Set current instance month to the given value. - * @method CarbonImmutable month(int $value) Set current instance month to the given value. - * @method CarbonImmutable setMonths(int $value) Set current instance month to the given value. - * @method CarbonImmutable setMonth(int $value) Set current instance month to the given value. - * @method CarbonImmutable days(int $value) Set current instance day to the given value. - * @method CarbonImmutable day(int $value) Set current instance day to the given value. - * @method CarbonImmutable setDays(int $value) Set current instance day to the given value. - * @method CarbonImmutable setDay(int $value) Set current instance day to the given value. - * @method CarbonImmutable hours(int $value) Set current instance hour to the given value. - * @method CarbonImmutable hour(int $value) Set current instance hour to the given value. - * @method CarbonImmutable setHours(int $value) Set current instance hour to the given value. - * @method CarbonImmutable setHour(int $value) Set current instance hour to the given value. - * @method CarbonImmutable minutes(int $value) Set current instance minute to the given value. - * @method CarbonImmutable minute(int $value) Set current instance minute to the given value. - * @method CarbonImmutable setMinutes(int $value) Set current instance minute to the given value. - * @method CarbonImmutable setMinute(int $value) Set current instance minute to the given value. - * @method CarbonImmutable seconds(int $value) Set current instance second to the given value. - * @method CarbonImmutable second(int $value) Set current instance second to the given value. - * @method CarbonImmutable setSeconds(int $value) Set current instance second to the given value. - * @method CarbonImmutable setSecond(int $value) Set current instance second to the given value. - * @method CarbonImmutable millis(int $value) Set current instance millisecond to the given value. - * @method CarbonImmutable milli(int $value) Set current instance millisecond to the given value. - * @method CarbonImmutable setMillis(int $value) Set current instance millisecond to the given value. - * @method CarbonImmutable setMilli(int $value) Set current instance millisecond to the given value. - * @method CarbonImmutable milliseconds(int $value) Set current instance millisecond to the given value. - * @method CarbonImmutable millisecond(int $value) Set current instance millisecond to the given value. - * @method CarbonImmutable setMilliseconds(int $value) Set current instance millisecond to the given value. - * @method CarbonImmutable setMillisecond(int $value) Set current instance millisecond to the given value. - * @method CarbonImmutable micros(int $value) Set current instance microsecond to the given value. - * @method CarbonImmutable micro(int $value) Set current instance microsecond to the given value. - * @method CarbonImmutable setMicros(int $value) Set current instance microsecond to the given value. - * @method CarbonImmutable setMicro(int $value) Set current instance microsecond to the given value. - * @method CarbonImmutable microseconds(int $value) Set current instance microsecond to the given value. - * @method CarbonImmutable microsecond(int $value) Set current instance microsecond to the given value. - * @method CarbonImmutable setMicroseconds(int $value) Set current instance microsecond to the given value. - * @method CarbonImmutable setMicrosecond(int $value) Set current instance microsecond to the given value. - * @method CarbonImmutable addYears(int $value = 1) Add years (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable addYear() Add one year to the instance (using date interval). - * @method CarbonImmutable subYears(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable subYear() Sub one year to the instance (using date interval). - * @method CarbonImmutable addYearsWithOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable addYearWithOverflow() Add one year to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable subYearsWithOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable subYearWithOverflow() Sub one year to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable addYearsWithoutOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addYearWithoutOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subYearsWithoutOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subYearWithoutOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addYearsWithNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addYearWithNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subYearsWithNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subYearWithNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addYearsNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addYearNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subYearsNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subYearNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addMonths(int $value = 1) Add months (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable addMonth() Add one month to the instance (using date interval). - * @method CarbonImmutable subMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable subMonth() Sub one month to the instance (using date interval). - * @method CarbonImmutable addMonthsWithOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable addMonthWithOverflow() Add one month to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable subMonthsWithOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable subMonthWithOverflow() Sub one month to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable addMonthsWithoutOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addMonthWithoutOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subMonthsWithoutOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subMonthWithoutOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addMonthsWithNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addMonthWithNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subMonthsWithNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subMonthWithNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addMonthsNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addMonthNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subMonthsNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subMonthNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addDays(int $value = 1) Add days (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable addDay() Add one day to the instance (using date interval). - * @method CarbonImmutable subDays(int $value = 1) Sub days (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable subDay() Sub one day to the instance (using date interval). - * @method CarbonImmutable addHours(int $value = 1) Add hours (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable addHour() Add one hour to the instance (using date interval). - * @method CarbonImmutable subHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable subHour() Sub one hour to the instance (using date interval). - * @method CarbonImmutable addMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable addMinute() Add one minute to the instance (using date interval). - * @method CarbonImmutable subMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable subMinute() Sub one minute to the instance (using date interval). - * @method CarbonImmutable addSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable addSecond() Add one second to the instance (using date interval). - * @method CarbonImmutable subSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable subSecond() Sub one second to the instance (using date interval). - * @method CarbonImmutable addMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable addMilli() Add one millisecond to the instance (using date interval). - * @method CarbonImmutable subMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable subMilli() Sub one millisecond to the instance (using date interval). - * @method CarbonImmutable addMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable addMillisecond() Add one millisecond to the instance (using date interval). - * @method CarbonImmutable subMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable subMillisecond() Sub one millisecond to the instance (using date interval). - * @method CarbonImmutable addMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable addMicro() Add one microsecond to the instance (using date interval). - * @method CarbonImmutable subMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable subMicro() Sub one microsecond to the instance (using date interval). - * @method CarbonImmutable addMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable addMicrosecond() Add one microsecond to the instance (using date interval). - * @method CarbonImmutable subMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable subMicrosecond() Sub one microsecond to the instance (using date interval). - * @method CarbonImmutable addMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable addMillennium() Add one millennium to the instance (using date interval). - * @method CarbonImmutable subMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable subMillennium() Sub one millennium to the instance (using date interval). - * @method CarbonImmutable addMillenniaWithOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable addMillenniumWithOverflow() Add one millennium to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable subMillenniaWithOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable subMillenniumWithOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable addMillenniaWithoutOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addMillenniumWithoutOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subMillenniaWithoutOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subMillenniumWithoutOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addMillenniaWithNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addMillenniumWithNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subMillenniaWithNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subMillenniumWithNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addMillenniaNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addMillenniumNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subMillenniaNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subMillenniumNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable addCentury() Add one century to the instance (using date interval). - * @method CarbonImmutable subCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable subCentury() Sub one century to the instance (using date interval). - * @method CarbonImmutable addCenturiesWithOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable addCenturyWithOverflow() Add one century to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable subCenturiesWithOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable subCenturyWithOverflow() Sub one century to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable addCenturiesWithoutOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addCenturyWithoutOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subCenturiesWithoutOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subCenturyWithoutOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addCenturiesWithNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addCenturyWithNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subCenturiesWithNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subCenturyWithNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addCenturiesNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addCenturyNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subCenturiesNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subCenturyNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable addDecade() Add one decade to the instance (using date interval). - * @method CarbonImmutable subDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable subDecade() Sub one decade to the instance (using date interval). - * @method CarbonImmutable addDecadesWithOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable addDecadeWithOverflow() Add one decade to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable subDecadesWithOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable subDecadeWithOverflow() Sub one decade to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable addDecadesWithoutOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addDecadeWithoutOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subDecadesWithoutOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subDecadeWithoutOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addDecadesWithNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addDecadeWithNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subDecadesWithNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subDecadeWithNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addDecadesNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addDecadeNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subDecadesNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subDecadeNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable addQuarter() Add one quarter to the instance (using date interval). - * @method CarbonImmutable subQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable subQuarter() Sub one quarter to the instance (using date interval). - * @method CarbonImmutable addQuartersWithOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable addQuarterWithOverflow() Add one quarter to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable subQuartersWithOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable subQuarterWithOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonImmutable addQuartersWithoutOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addQuarterWithoutOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subQuartersWithoutOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subQuarterWithoutOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addQuartersWithNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addQuarterWithNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subQuartersWithNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subQuarterWithNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addQuartersNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addQuarterNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subQuartersNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable subQuarterNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonImmutable addWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable addWeek() Add one week to the instance (using date interval). - * @method CarbonImmutable subWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable subWeek() Sub one week to the instance (using date interval). - * @method CarbonImmutable addWeekdays(int $value = 1) Add weekdays (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable addWeekday() Add one weekday to the instance (using date interval). - * @method CarbonImmutable subWeekdays(int $value = 1) Sub weekdays (the $value count passed in) to the instance (using date interval). - * @method CarbonImmutable subWeekday() Sub one weekday to the instance (using date interval). - * @method CarbonImmutable addRealMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable addRealMicro() Add one microsecond to the instance (using timestamp). - * @method CarbonImmutable subRealMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable subRealMicro() Sub one microsecond to the instance (using timestamp). - * @method CarbonPeriod microsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. - * @method CarbonImmutable addRealMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable addRealMicrosecond() Add one microsecond to the instance (using timestamp). - * @method CarbonImmutable subRealMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable subRealMicrosecond() Sub one microsecond to the instance (using timestamp). - * @method CarbonPeriod microsecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. - * @method CarbonImmutable addRealMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable addRealMilli() Add one millisecond to the instance (using timestamp). - * @method CarbonImmutable subRealMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable subRealMilli() Sub one millisecond to the instance (using timestamp). - * @method CarbonPeriod millisUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. - * @method CarbonImmutable addRealMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable addRealMillisecond() Add one millisecond to the instance (using timestamp). - * @method CarbonImmutable subRealMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable subRealMillisecond() Sub one millisecond to the instance (using timestamp). - * @method CarbonPeriod millisecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. - * @method CarbonImmutable addRealSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable addRealSecond() Add one second to the instance (using timestamp). - * @method CarbonImmutable subRealSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable subRealSecond() Sub one second to the instance (using timestamp). - * @method CarbonPeriod secondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given. - * @method CarbonImmutable addRealMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable addRealMinute() Add one minute to the instance (using timestamp). - * @method CarbonImmutable subRealMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable subRealMinute() Sub one minute to the instance (using timestamp). - * @method CarbonPeriod minutesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given. - * @method CarbonImmutable addRealHours(int $value = 1) Add hours (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable addRealHour() Add one hour to the instance (using timestamp). - * @method CarbonImmutable subRealHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable subRealHour() Sub one hour to the instance (using timestamp). - * @method CarbonPeriod hoursUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given. - * @method CarbonImmutable addRealDays(int $value = 1) Add days (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable addRealDay() Add one day to the instance (using timestamp). - * @method CarbonImmutable subRealDays(int $value = 1) Sub days (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable subRealDay() Sub one day to the instance (using timestamp). - * @method CarbonPeriod daysUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given. - * @method CarbonImmutable addRealWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable addRealWeek() Add one week to the instance (using timestamp). - * @method CarbonImmutable subRealWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable subRealWeek() Sub one week to the instance (using timestamp). - * @method CarbonPeriod weeksUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given. - * @method CarbonImmutable addRealMonths(int $value = 1) Add months (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable addRealMonth() Add one month to the instance (using timestamp). - * @method CarbonImmutable subRealMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable subRealMonth() Sub one month to the instance (using timestamp). - * @method CarbonPeriod monthsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given. - * @method CarbonImmutable addRealQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable addRealQuarter() Add one quarter to the instance (using timestamp). - * @method CarbonImmutable subRealQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable subRealQuarter() Sub one quarter to the instance (using timestamp). - * @method CarbonPeriod quartersUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given. - * @method CarbonImmutable addRealYears(int $value = 1) Add years (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable addRealYear() Add one year to the instance (using timestamp). - * @method CarbonImmutable subRealYears(int $value = 1) Sub years (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable subRealYear() Sub one year to the instance (using timestamp). - * @method CarbonPeriod yearsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given. - * @method CarbonImmutable addRealDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable addRealDecade() Add one decade to the instance (using timestamp). - * @method CarbonImmutable subRealDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable subRealDecade() Sub one decade to the instance (using timestamp). - * @method CarbonPeriod decadesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given. - * @method CarbonImmutable addRealCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable addRealCentury() Add one century to the instance (using timestamp). - * @method CarbonImmutable subRealCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable subRealCentury() Sub one century to the instance (using timestamp). - * @method CarbonPeriod centuriesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given. - * @method CarbonImmutable addRealMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable addRealMillennium() Add one millennium to the instance (using timestamp). - * @method CarbonImmutable subRealMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using timestamp). - * @method CarbonImmutable subRealMillennium() Sub one millennium to the instance (using timestamp). - * @method CarbonPeriod millenniaUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given. - * @method CarbonImmutable roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. - * @method CarbonImmutable roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. - * @method CarbonImmutable floorYear(float $precision = 1) Truncate the current instance year with given precision. - * @method CarbonImmutable floorYears(float $precision = 1) Truncate the current instance year with given precision. - * @method CarbonImmutable ceilYear(float $precision = 1) Ceil the current instance year with given precision. - * @method CarbonImmutable ceilYears(float $precision = 1) Ceil the current instance year with given precision. - * @method CarbonImmutable roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. - * @method CarbonImmutable roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. - * @method CarbonImmutable floorMonth(float $precision = 1) Truncate the current instance month with given precision. - * @method CarbonImmutable floorMonths(float $precision = 1) Truncate the current instance month with given precision. - * @method CarbonImmutable ceilMonth(float $precision = 1) Ceil the current instance month with given precision. - * @method CarbonImmutable ceilMonths(float $precision = 1) Ceil the current instance month with given precision. - * @method CarbonImmutable roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method CarbonImmutable roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method CarbonImmutable floorDay(float $precision = 1) Truncate the current instance day with given precision. - * @method CarbonImmutable floorDays(float $precision = 1) Truncate the current instance day with given precision. - * @method CarbonImmutable ceilDay(float $precision = 1) Ceil the current instance day with given precision. - * @method CarbonImmutable ceilDays(float $precision = 1) Ceil the current instance day with given precision. - * @method CarbonImmutable roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. - * @method CarbonImmutable roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. - * @method CarbonImmutable floorHour(float $precision = 1) Truncate the current instance hour with given precision. - * @method CarbonImmutable floorHours(float $precision = 1) Truncate the current instance hour with given precision. - * @method CarbonImmutable ceilHour(float $precision = 1) Ceil the current instance hour with given precision. - * @method CarbonImmutable ceilHours(float $precision = 1) Ceil the current instance hour with given precision. - * @method CarbonImmutable roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. - * @method CarbonImmutable roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. - * @method CarbonImmutable floorMinute(float $precision = 1) Truncate the current instance minute with given precision. - * @method CarbonImmutable floorMinutes(float $precision = 1) Truncate the current instance minute with given precision. - * @method CarbonImmutable ceilMinute(float $precision = 1) Ceil the current instance minute with given precision. - * @method CarbonImmutable ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision. - * @method CarbonImmutable roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. - * @method CarbonImmutable roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. - * @method CarbonImmutable floorSecond(float $precision = 1) Truncate the current instance second with given precision. - * @method CarbonImmutable floorSeconds(float $precision = 1) Truncate the current instance second with given precision. - * @method CarbonImmutable ceilSecond(float $precision = 1) Ceil the current instance second with given precision. - * @method CarbonImmutable ceilSeconds(float $precision = 1) Ceil the current instance second with given precision. - * @method CarbonImmutable roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. - * @method CarbonImmutable roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. - * @method CarbonImmutable floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision. - * @method CarbonImmutable floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision. - * @method CarbonImmutable ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision. - * @method CarbonImmutable ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision. - * @method CarbonImmutable roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. - * @method CarbonImmutable roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. - * @method CarbonImmutable floorCentury(float $precision = 1) Truncate the current instance century with given precision. - * @method CarbonImmutable floorCenturies(float $precision = 1) Truncate the current instance century with given precision. - * @method CarbonImmutable ceilCentury(float $precision = 1) Ceil the current instance century with given precision. - * @method CarbonImmutable ceilCenturies(float $precision = 1) Ceil the current instance century with given precision. - * @method CarbonImmutable roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. - * @method CarbonImmutable roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. - * @method CarbonImmutable floorDecade(float $precision = 1) Truncate the current instance decade with given precision. - * @method CarbonImmutable floorDecades(float $precision = 1) Truncate the current instance decade with given precision. - * @method CarbonImmutable ceilDecade(float $precision = 1) Ceil the current instance decade with given precision. - * @method CarbonImmutable ceilDecades(float $precision = 1) Ceil the current instance decade with given precision. - * @method CarbonImmutable roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. - * @method CarbonImmutable roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. - * @method CarbonImmutable floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision. - * @method CarbonImmutable floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision. - * @method CarbonImmutable ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision. - * @method CarbonImmutable ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision. - * @method CarbonImmutable roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. - * @method CarbonImmutable roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. - * @method CarbonImmutable floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision. - * @method CarbonImmutable floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision. - * @method CarbonImmutable ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision. - * @method CarbonImmutable ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision. - * @method CarbonImmutable roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. - * @method CarbonImmutable roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. - * @method CarbonImmutable floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision. - * @method CarbonImmutable floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision. - * @method CarbonImmutable ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision. - * @method CarbonImmutable ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision. - * @method string shortAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string shortRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string shortRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string shortRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method static static|false createFromFormat(string $format, string $time, DateTimeZone|string|false|null $timezone = null) Parse a string into a new CarbonImmutable object according to the specified format. - * @method static static __set_state(array $array) https://php.net/manual/en/datetime.set-state.php - * - * - */ -class CarbonImmutable extends DateTimeImmutable implements CarbonInterface -{ - use Date { - __clone as dateTraitClone; - } - - public function __clone() - { - $this->dateTraitClone(); - $this->endOfTime = false; - $this->startOfTime = false; - } - - /** - * Create a very old date representing start of time. - * - * @return static - */ - public static function startOfTime(): self - { - $date = static::parse('0001-01-01')->years(self::getStartOfTimeYear()); - $date->startOfTime = true; - - return $date; - } - - /** - * Create a very far date representing end of time. - * - * @return static - */ - public static function endOfTime(): self - { - $date = static::parse('9999-12-31 23:59:59.999999')->years(self::getEndOfTimeYear()); - $date->endOfTime = true; - - return $date; - } - - /** - * @codeCoverageIgnore - */ - private static function getEndOfTimeYear(): int - { - if (version_compare(PHP_VERSION, '7.3.0-dev', '<')) { - return 145261681241552; - } - - // Remove if https://bugs.php.net/bug.php?id=81107 is fixed - if (version_compare(PHP_VERSION, '8.1.0-dev', '>=')) { - return 1118290769066902787; - } - - return PHP_INT_MAX; - } - - /** - * @codeCoverageIgnore - */ - private static function getStartOfTimeYear(): int - { - if (version_compare(PHP_VERSION, '7.3.0-dev', '<')) { - return -135908816449551; - } - - // Remove if https://bugs.php.net/bug.php?id=81107 is fixed - if (version_compare(PHP_VERSION, '8.1.0-dev', '>=')) { - return -1118290769066898816; - } - - return max(PHP_INT_MIN, -9223372036854773760); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php b/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php deleted file mode 100644 index b90e2981..00000000 --- a/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php +++ /dev/null @@ -1,5142 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -use BadMethodCallException; -use Carbon\Exceptions\BadComparisonUnitException; -use Carbon\Exceptions\ImmutableException; -use Carbon\Exceptions\InvalidDateException; -use Carbon\Exceptions\InvalidFormatException; -use Carbon\Exceptions\UnknownGetterException; -use Carbon\Exceptions\UnknownMethodException; -use Carbon\Exceptions\UnknownSetterException; -use Closure; -use DateInterval; -use DateTime; -use DateTimeImmutable; -use DateTimeInterface; -use DateTimeZone; -use JsonSerializable; -use ReflectionException; -use ReturnTypeWillChange; -use Symfony\Component\Translation\TranslatorInterface; -use Throwable; - -/** - * Common interface for Carbon and CarbonImmutable. - * - * - * - * @property int $year - * @property int $yearIso - * @property int $month - * @property int $day - * @property int $hour - * @property int $minute - * @property int $second - * @property int $micro - * @property int $microsecond - * @property int|float|string $timestamp seconds since the Unix Epoch - * @property string $englishDayOfWeek the day of week in English - * @property string $shortEnglishDayOfWeek the abbreviated day of week in English - * @property string $englishMonth the month in English - * @property string $shortEnglishMonth the abbreviated month in English - * @property int $milliseconds - * @property int $millisecond - * @property int $milli - * @property int $week 1 through 53 - * @property int $isoWeek 1 through 53 - * @property int $weekYear year according to week format - * @property int $isoWeekYear year according to ISO week format - * @property int $dayOfYear 1 through 366 - * @property int $age does a diffInYears() with default parameters - * @property int $offset the timezone offset in seconds from UTC - * @property int $offsetMinutes the timezone offset in minutes from UTC - * @property int $offsetHours the timezone offset in hours from UTC - * @property CarbonTimeZone $timezone the current timezone - * @property CarbonTimeZone $tz alias of $timezone - * @property-read int $dayOfWeek 0 (for Sunday) through 6 (for Saturday) - * @property-read int $dayOfWeekIso 1 (for Monday) through 7 (for Sunday) - * @property-read int $weekOfYear ISO-8601 week number of year, weeks starting on Monday - * @property-read int $daysInMonth number of days in the given month - * @property-read string $latinMeridiem "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark) - * @property-read string $latinUpperMeridiem "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark) - * @property-read string $timezoneAbbreviatedName the current timezone abbreviated name - * @property-read string $tzAbbrName alias of $timezoneAbbreviatedName - * @property-read string $dayName long name of weekday translated according to Carbon locale, in english if no translation available for current language - * @property-read string $shortDayName short name of weekday translated according to Carbon locale, in english if no translation available for current language - * @property-read string $minDayName very short name of weekday translated according to Carbon locale, in english if no translation available for current language - * @property-read string $monthName long name of month translated according to Carbon locale, in english if no translation available for current language - * @property-read string $shortMonthName short name of month translated according to Carbon locale, in english if no translation available for current language - * @property-read string $meridiem lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language - * @property-read string $upperMeridiem uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language - * @property-read int $noZeroHour current hour from 1 to 24 - * @property-read int $weeksInYear 51 through 53 - * @property-read int $isoWeeksInYear 51 through 53 - * @property-read int $weekOfMonth 1 through 5 - * @property-read int $weekNumberInMonth 1 through 5 - * @property-read int $firstWeekDay 0 through 6 - * @property-read int $lastWeekDay 0 through 6 - * @property-read int $daysInYear 365 or 366 - * @property-read int $quarter the quarter of this instance, 1 - 4 - * @property-read int $decade the decade of this instance - * @property-read int $century the century of this instance - * @property-read int $millennium the millennium of this instance - * @property-read bool $dst daylight savings time indicator, true if DST, false otherwise - * @property-read bool $local checks if the timezone is local, true if local, false otherwise - * @property-read bool $utc checks if the timezone is UTC, true if UTC, false otherwise - * @property-read string $timezoneName the current timezone name - * @property-read string $tzName alias of $timezoneName - * @property-read string $locale locale of the current instance - * - * @method bool isUtc() Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.) - * @method bool isLocal() Check if the current instance has non-UTC timezone. - * @method bool isValid() Check if the current instance is a valid date. - * @method bool isDST() Check if the current instance is in a daylight saving time. - * @method bool isSunday() Checks if the instance day is sunday. - * @method bool isMonday() Checks if the instance day is monday. - * @method bool isTuesday() Checks if the instance day is tuesday. - * @method bool isWednesday() Checks if the instance day is wednesday. - * @method bool isThursday() Checks if the instance day is thursday. - * @method bool isFriday() Checks if the instance day is friday. - * @method bool isSaturday() Checks if the instance day is saturday. - * @method bool isSameYear(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentYear() Checks if the instance is in the same year as the current moment. - * @method bool isNextYear() Checks if the instance is in the same year as the current moment next year. - * @method bool isLastYear() Checks if the instance is in the same year as the current moment last year. - * @method bool isSameWeek(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentWeek() Checks if the instance is in the same week as the current moment. - * @method bool isNextWeek() Checks if the instance is in the same week as the current moment next week. - * @method bool isLastWeek() Checks if the instance is in the same week as the current moment last week. - * @method bool isSameDay(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentDay() Checks if the instance is in the same day as the current moment. - * @method bool isNextDay() Checks if the instance is in the same day as the current moment next day. - * @method bool isLastDay() Checks if the instance is in the same day as the current moment last day. - * @method bool isSameHour(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentHour() Checks if the instance is in the same hour as the current moment. - * @method bool isNextHour() Checks if the instance is in the same hour as the current moment next hour. - * @method bool isLastHour() Checks if the instance is in the same hour as the current moment last hour. - * @method bool isSameMinute(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMinute() Checks if the instance is in the same minute as the current moment. - * @method bool isNextMinute() Checks if the instance is in the same minute as the current moment next minute. - * @method bool isLastMinute() Checks if the instance is in the same minute as the current moment last minute. - * @method bool isSameSecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentSecond() Checks if the instance is in the same second as the current moment. - * @method bool isNextSecond() Checks if the instance is in the same second as the current moment next second. - * @method bool isLastSecond() Checks if the instance is in the same second as the current moment last second. - * @method bool isSameMicro(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMicro() Checks if the instance is in the same microsecond as the current moment. - * @method bool isNextMicro() Checks if the instance is in the same microsecond as the current moment next microsecond. - * @method bool isLastMicro() Checks if the instance is in the same microsecond as the current moment last microsecond. - * @method bool isSameMicrosecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMicrosecond() Checks if the instance is in the same microsecond as the current moment. - * @method bool isNextMicrosecond() Checks if the instance is in the same microsecond as the current moment next microsecond. - * @method bool isLastMicrosecond() Checks if the instance is in the same microsecond as the current moment last microsecond. - * @method bool isCurrentMonth() Checks if the instance is in the same month as the current moment. - * @method bool isNextMonth() Checks if the instance is in the same month as the current moment next month. - * @method bool isLastMonth() Checks if the instance is in the same month as the current moment last month. - * @method bool isCurrentQuarter() Checks if the instance is in the same quarter as the current moment. - * @method bool isNextQuarter() Checks if the instance is in the same quarter as the current moment next quarter. - * @method bool isLastQuarter() Checks if the instance is in the same quarter as the current moment last quarter. - * @method bool isSameDecade(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentDecade() Checks if the instance is in the same decade as the current moment. - * @method bool isNextDecade() Checks if the instance is in the same decade as the current moment next decade. - * @method bool isLastDecade() Checks if the instance is in the same decade as the current moment last decade. - * @method bool isSameCentury(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentCentury() Checks if the instance is in the same century as the current moment. - * @method bool isNextCentury() Checks if the instance is in the same century as the current moment next century. - * @method bool isLastCentury() Checks if the instance is in the same century as the current moment last century. - * @method bool isSameMillennium(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMillennium() Checks if the instance is in the same millennium as the current moment. - * @method bool isNextMillennium() Checks if the instance is in the same millennium as the current moment next millennium. - * @method bool isLastMillennium() Checks if the instance is in the same millennium as the current moment last millennium. - * @method CarbonInterface years(int $value) Set current instance year to the given value. - * @method CarbonInterface year(int $value) Set current instance year to the given value. - * @method CarbonInterface setYears(int $value) Set current instance year to the given value. - * @method CarbonInterface setYear(int $value) Set current instance year to the given value. - * @method CarbonInterface months(int $value) Set current instance month to the given value. - * @method CarbonInterface month(int $value) Set current instance month to the given value. - * @method CarbonInterface setMonths(int $value) Set current instance month to the given value. - * @method CarbonInterface setMonth(int $value) Set current instance month to the given value. - * @method CarbonInterface days(int $value) Set current instance day to the given value. - * @method CarbonInterface day(int $value) Set current instance day to the given value. - * @method CarbonInterface setDays(int $value) Set current instance day to the given value. - * @method CarbonInterface setDay(int $value) Set current instance day to the given value. - * @method CarbonInterface hours(int $value) Set current instance hour to the given value. - * @method CarbonInterface hour(int $value) Set current instance hour to the given value. - * @method CarbonInterface setHours(int $value) Set current instance hour to the given value. - * @method CarbonInterface setHour(int $value) Set current instance hour to the given value. - * @method CarbonInterface minutes(int $value) Set current instance minute to the given value. - * @method CarbonInterface minute(int $value) Set current instance minute to the given value. - * @method CarbonInterface setMinutes(int $value) Set current instance minute to the given value. - * @method CarbonInterface setMinute(int $value) Set current instance minute to the given value. - * @method CarbonInterface seconds(int $value) Set current instance second to the given value. - * @method CarbonInterface second(int $value) Set current instance second to the given value. - * @method CarbonInterface setSeconds(int $value) Set current instance second to the given value. - * @method CarbonInterface setSecond(int $value) Set current instance second to the given value. - * @method CarbonInterface millis(int $value) Set current instance millisecond to the given value. - * @method CarbonInterface milli(int $value) Set current instance millisecond to the given value. - * @method CarbonInterface setMillis(int $value) Set current instance millisecond to the given value. - * @method CarbonInterface setMilli(int $value) Set current instance millisecond to the given value. - * @method CarbonInterface milliseconds(int $value) Set current instance millisecond to the given value. - * @method CarbonInterface millisecond(int $value) Set current instance millisecond to the given value. - * @method CarbonInterface setMilliseconds(int $value) Set current instance millisecond to the given value. - * @method CarbonInterface setMillisecond(int $value) Set current instance millisecond to the given value. - * @method CarbonInterface micros(int $value) Set current instance microsecond to the given value. - * @method CarbonInterface micro(int $value) Set current instance microsecond to the given value. - * @method CarbonInterface setMicros(int $value) Set current instance microsecond to the given value. - * @method CarbonInterface setMicro(int $value) Set current instance microsecond to the given value. - * @method CarbonInterface microseconds(int $value) Set current instance microsecond to the given value. - * @method CarbonInterface microsecond(int $value) Set current instance microsecond to the given value. - * @method CarbonInterface setMicroseconds(int $value) Set current instance microsecond to the given value. - * @method CarbonInterface setMicrosecond(int $value) Set current instance microsecond to the given value. - * @method CarbonInterface addYears(int $value = 1) Add years (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addYear() Add one year to the instance (using date interval). - * @method CarbonInterface subYears(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subYear() Sub one year to the instance (using date interval). - * @method CarbonInterface addYearsWithOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addYearWithOverflow() Add one year to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subYearsWithOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subYearWithOverflow() Sub one year to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addYearsWithoutOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addYearWithoutOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subYearsWithoutOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subYearWithoutOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addYearsWithNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addYearWithNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subYearsWithNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subYearWithNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addYearsNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addYearNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subYearsNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subYearNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMonths(int $value = 1) Add months (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addMonth() Add one month to the instance (using date interval). - * @method CarbonInterface subMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subMonth() Sub one month to the instance (using date interval). - * @method CarbonInterface addMonthsWithOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addMonthWithOverflow() Add one month to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subMonthsWithOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subMonthWithOverflow() Sub one month to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addMonthsWithoutOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMonthWithoutOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMonthsWithoutOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMonthWithoutOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMonthsWithNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMonthWithNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMonthsWithNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMonthWithNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMonthsNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMonthNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMonthsNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMonthNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addDays(int $value = 1) Add days (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addDay() Add one day to the instance (using date interval). - * @method CarbonInterface subDays(int $value = 1) Sub days (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subDay() Sub one day to the instance (using date interval). - * @method CarbonInterface addHours(int $value = 1) Add hours (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addHour() Add one hour to the instance (using date interval). - * @method CarbonInterface subHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subHour() Sub one hour to the instance (using date interval). - * @method CarbonInterface addMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addMinute() Add one minute to the instance (using date interval). - * @method CarbonInterface subMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subMinute() Sub one minute to the instance (using date interval). - * @method CarbonInterface addSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addSecond() Add one second to the instance (using date interval). - * @method CarbonInterface subSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subSecond() Sub one second to the instance (using date interval). - * @method CarbonInterface addMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addMilli() Add one millisecond to the instance (using date interval). - * @method CarbonInterface subMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subMilli() Sub one millisecond to the instance (using date interval). - * @method CarbonInterface addMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addMillisecond() Add one millisecond to the instance (using date interval). - * @method CarbonInterface subMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subMillisecond() Sub one millisecond to the instance (using date interval). - * @method CarbonInterface addMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addMicro() Add one microsecond to the instance (using date interval). - * @method CarbonInterface subMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subMicro() Sub one microsecond to the instance (using date interval). - * @method CarbonInterface addMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addMicrosecond() Add one microsecond to the instance (using date interval). - * @method CarbonInterface subMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subMicrosecond() Sub one microsecond to the instance (using date interval). - * @method CarbonInterface addMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addMillennium() Add one millennium to the instance (using date interval). - * @method CarbonInterface subMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subMillennium() Sub one millennium to the instance (using date interval). - * @method CarbonInterface addMillenniaWithOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addMillenniumWithOverflow() Add one millennium to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subMillenniaWithOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subMillenniumWithOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addMillenniaWithoutOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMillenniumWithoutOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMillenniaWithoutOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMillenniumWithoutOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMillenniaWithNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMillenniumWithNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMillenniaWithNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMillenniumWithNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMillenniaNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMillenniumNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMillenniaNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMillenniumNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addCentury() Add one century to the instance (using date interval). - * @method CarbonInterface subCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subCentury() Sub one century to the instance (using date interval). - * @method CarbonInterface addCenturiesWithOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addCenturyWithOverflow() Add one century to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subCenturiesWithOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subCenturyWithOverflow() Sub one century to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addCenturiesWithoutOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addCenturyWithoutOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subCenturiesWithoutOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subCenturyWithoutOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addCenturiesWithNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addCenturyWithNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subCenturiesWithNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subCenturyWithNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addCenturiesNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addCenturyNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subCenturiesNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subCenturyNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addDecade() Add one decade to the instance (using date interval). - * @method CarbonInterface subDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subDecade() Sub one decade to the instance (using date interval). - * @method CarbonInterface addDecadesWithOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addDecadeWithOverflow() Add one decade to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subDecadesWithOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subDecadeWithOverflow() Sub one decade to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addDecadesWithoutOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addDecadeWithoutOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subDecadesWithoutOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subDecadeWithoutOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addDecadesWithNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addDecadeWithNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subDecadesWithNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subDecadeWithNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addDecadesNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addDecadeNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subDecadesNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subDecadeNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addQuarter() Add one quarter to the instance (using date interval). - * @method CarbonInterface subQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subQuarter() Sub one quarter to the instance (using date interval). - * @method CarbonInterface addQuartersWithOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addQuarterWithOverflow() Add one quarter to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subQuartersWithOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subQuarterWithOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addQuartersWithoutOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addQuarterWithoutOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subQuartersWithoutOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subQuarterWithoutOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addQuartersWithNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addQuarterWithNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subQuartersWithNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subQuarterWithNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addQuartersNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addQuarterNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subQuartersNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subQuarterNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addWeek() Add one week to the instance (using date interval). - * @method CarbonInterface subWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subWeek() Sub one week to the instance (using date interval). - * @method CarbonInterface addWeekdays(int $value = 1) Add weekdays (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addWeekday() Add one weekday to the instance (using date interval). - * @method CarbonInterface subWeekdays(int $value = 1) Sub weekdays (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subWeekday() Sub one weekday to the instance (using date interval). - * @method CarbonInterface addRealMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealMicro() Add one microsecond to the instance (using timestamp). - * @method CarbonInterface subRealMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealMicro() Sub one microsecond to the instance (using timestamp). - * @method CarbonPeriod microsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. - * @method CarbonInterface addRealMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealMicrosecond() Add one microsecond to the instance (using timestamp). - * @method CarbonInterface subRealMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealMicrosecond() Sub one microsecond to the instance (using timestamp). - * @method CarbonPeriod microsecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. - * @method CarbonInterface addRealMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealMilli() Add one millisecond to the instance (using timestamp). - * @method CarbonInterface subRealMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealMilli() Sub one millisecond to the instance (using timestamp). - * @method CarbonPeriod millisUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. - * @method CarbonInterface addRealMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealMillisecond() Add one millisecond to the instance (using timestamp). - * @method CarbonInterface subRealMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealMillisecond() Sub one millisecond to the instance (using timestamp). - * @method CarbonPeriod millisecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. - * @method CarbonInterface addRealSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealSecond() Add one second to the instance (using timestamp). - * @method CarbonInterface subRealSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealSecond() Sub one second to the instance (using timestamp). - * @method CarbonPeriod secondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given. - * @method CarbonInterface addRealMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealMinute() Add one minute to the instance (using timestamp). - * @method CarbonInterface subRealMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealMinute() Sub one minute to the instance (using timestamp). - * @method CarbonPeriod minutesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given. - * @method CarbonInterface addRealHours(int $value = 1) Add hours (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealHour() Add one hour to the instance (using timestamp). - * @method CarbonInterface subRealHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealHour() Sub one hour to the instance (using timestamp). - * @method CarbonPeriod hoursUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given. - * @method CarbonInterface addRealDays(int $value = 1) Add days (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealDay() Add one day to the instance (using timestamp). - * @method CarbonInterface subRealDays(int $value = 1) Sub days (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealDay() Sub one day to the instance (using timestamp). - * @method CarbonPeriod daysUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given. - * @method CarbonInterface addRealWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealWeek() Add one week to the instance (using timestamp). - * @method CarbonInterface subRealWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealWeek() Sub one week to the instance (using timestamp). - * @method CarbonPeriod weeksUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given. - * @method CarbonInterface addRealMonths(int $value = 1) Add months (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealMonth() Add one month to the instance (using timestamp). - * @method CarbonInterface subRealMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealMonth() Sub one month to the instance (using timestamp). - * @method CarbonPeriod monthsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given. - * @method CarbonInterface addRealQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealQuarter() Add one quarter to the instance (using timestamp). - * @method CarbonInterface subRealQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealQuarter() Sub one quarter to the instance (using timestamp). - * @method CarbonPeriod quartersUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given. - * @method CarbonInterface addRealYears(int $value = 1) Add years (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealYear() Add one year to the instance (using timestamp). - * @method CarbonInterface subRealYears(int $value = 1) Sub years (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealYear() Sub one year to the instance (using timestamp). - * @method CarbonPeriod yearsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given. - * @method CarbonInterface addRealDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealDecade() Add one decade to the instance (using timestamp). - * @method CarbonInterface subRealDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealDecade() Sub one decade to the instance (using timestamp). - * @method CarbonPeriod decadesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given. - * @method CarbonInterface addRealCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealCentury() Add one century to the instance (using timestamp). - * @method CarbonInterface subRealCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealCentury() Sub one century to the instance (using timestamp). - * @method CarbonPeriod centuriesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given. - * @method CarbonInterface addRealMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealMillennium() Add one millennium to the instance (using timestamp). - * @method CarbonInterface subRealMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealMillennium() Sub one millennium to the instance (using timestamp). - * @method CarbonPeriod millenniaUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given. - * @method CarbonInterface roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. - * @method CarbonInterface roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. - * @method CarbonInterface floorYear(float $precision = 1) Truncate the current instance year with given precision. - * @method CarbonInterface floorYears(float $precision = 1) Truncate the current instance year with given precision. - * @method CarbonInterface ceilYear(float $precision = 1) Ceil the current instance year with given precision. - * @method CarbonInterface ceilYears(float $precision = 1) Ceil the current instance year with given precision. - * @method CarbonInterface roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. - * @method CarbonInterface roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. - * @method CarbonInterface floorMonth(float $precision = 1) Truncate the current instance month with given precision. - * @method CarbonInterface floorMonths(float $precision = 1) Truncate the current instance month with given precision. - * @method CarbonInterface ceilMonth(float $precision = 1) Ceil the current instance month with given precision. - * @method CarbonInterface ceilMonths(float $precision = 1) Ceil the current instance month with given precision. - * @method CarbonInterface roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method CarbonInterface roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method CarbonInterface floorDay(float $precision = 1) Truncate the current instance day with given precision. - * @method CarbonInterface floorDays(float $precision = 1) Truncate the current instance day with given precision. - * @method CarbonInterface ceilDay(float $precision = 1) Ceil the current instance day with given precision. - * @method CarbonInterface ceilDays(float $precision = 1) Ceil the current instance day with given precision. - * @method CarbonInterface roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. - * @method CarbonInterface roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. - * @method CarbonInterface floorHour(float $precision = 1) Truncate the current instance hour with given precision. - * @method CarbonInterface floorHours(float $precision = 1) Truncate the current instance hour with given precision. - * @method CarbonInterface ceilHour(float $precision = 1) Ceil the current instance hour with given precision. - * @method CarbonInterface ceilHours(float $precision = 1) Ceil the current instance hour with given precision. - * @method CarbonInterface roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. - * @method CarbonInterface roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. - * @method CarbonInterface floorMinute(float $precision = 1) Truncate the current instance minute with given precision. - * @method CarbonInterface floorMinutes(float $precision = 1) Truncate the current instance minute with given precision. - * @method CarbonInterface ceilMinute(float $precision = 1) Ceil the current instance minute with given precision. - * @method CarbonInterface ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision. - * @method CarbonInterface roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. - * @method CarbonInterface roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. - * @method CarbonInterface floorSecond(float $precision = 1) Truncate the current instance second with given precision. - * @method CarbonInterface floorSeconds(float $precision = 1) Truncate the current instance second with given precision. - * @method CarbonInterface ceilSecond(float $precision = 1) Ceil the current instance second with given precision. - * @method CarbonInterface ceilSeconds(float $precision = 1) Ceil the current instance second with given precision. - * @method CarbonInterface roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. - * @method CarbonInterface roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. - * @method CarbonInterface floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision. - * @method CarbonInterface floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision. - * @method CarbonInterface ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision. - * @method CarbonInterface ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision. - * @method CarbonInterface roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. - * @method CarbonInterface roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. - * @method CarbonInterface floorCentury(float $precision = 1) Truncate the current instance century with given precision. - * @method CarbonInterface floorCenturies(float $precision = 1) Truncate the current instance century with given precision. - * @method CarbonInterface ceilCentury(float $precision = 1) Ceil the current instance century with given precision. - * @method CarbonInterface ceilCenturies(float $precision = 1) Ceil the current instance century with given precision. - * @method CarbonInterface roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. - * @method CarbonInterface roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. - * @method CarbonInterface floorDecade(float $precision = 1) Truncate the current instance decade with given precision. - * @method CarbonInterface floorDecades(float $precision = 1) Truncate the current instance decade with given precision. - * @method CarbonInterface ceilDecade(float $precision = 1) Ceil the current instance decade with given precision. - * @method CarbonInterface ceilDecades(float $precision = 1) Ceil the current instance decade with given precision. - * @method CarbonInterface roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. - * @method CarbonInterface roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. - * @method CarbonInterface floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision. - * @method CarbonInterface floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision. - * @method CarbonInterface ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision. - * @method CarbonInterface ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision. - * @method CarbonInterface roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. - * @method CarbonInterface roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. - * @method CarbonInterface floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision. - * @method CarbonInterface floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision. - * @method CarbonInterface ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision. - * @method CarbonInterface ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision. - * @method CarbonInterface roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. - * @method CarbonInterface roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. - * @method CarbonInterface floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision. - * @method CarbonInterface floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision. - * @method CarbonInterface ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision. - * @method CarbonInterface ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision. - * @method string shortAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string shortRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string shortRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string shortRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * - * - */ -interface CarbonInterface extends DateTimeInterface, JsonSerializable -{ - /** - * Diff wording options(expressed in octal). - */ - public const NO_ZERO_DIFF = 01; - public const JUST_NOW = 02; - public const ONE_DAY_WORDS = 04; - public const TWO_DAY_WORDS = 010; - public const SEQUENTIAL_PARTS_ONLY = 020; - public const ROUND = 040; - public const FLOOR = 0100; - public const CEIL = 0200; - - /** - * Diff syntax options. - */ - public const DIFF_ABSOLUTE = 1; // backward compatibility with true - public const DIFF_RELATIVE_AUTO = 0; // backward compatibility with false - public const DIFF_RELATIVE_TO_NOW = 2; - public const DIFF_RELATIVE_TO_OTHER = 3; - - /** - * Translate string options. - */ - public const TRANSLATE_MONTHS = 1; - public const TRANSLATE_DAYS = 2; - public const TRANSLATE_UNITS = 4; - public const TRANSLATE_MERIDIEM = 8; - public const TRANSLATE_DIFF = 0x10; - public const TRANSLATE_ALL = self::TRANSLATE_MONTHS | self::TRANSLATE_DAYS | self::TRANSLATE_UNITS | self::TRANSLATE_MERIDIEM | self::TRANSLATE_DIFF; - - /** - * The day constants. - */ - public const SUNDAY = 0; - public const MONDAY = 1; - public const TUESDAY = 2; - public const WEDNESDAY = 3; - public const THURSDAY = 4; - public const FRIDAY = 5; - public const SATURDAY = 6; - - /** - * The month constants. - * These aren't used by Carbon itself but exist for - * convenience sake alone. - */ - public const JANUARY = 1; - public const FEBRUARY = 2; - public const MARCH = 3; - public const APRIL = 4; - public const MAY = 5; - public const JUNE = 6; - public const JULY = 7; - public const AUGUST = 8; - public const SEPTEMBER = 9; - public const OCTOBER = 10; - public const NOVEMBER = 11; - public const DECEMBER = 12; - - /** - * Number of X in Y. - */ - public const YEARS_PER_MILLENNIUM = 1000; - public const YEARS_PER_CENTURY = 100; - public const YEARS_PER_DECADE = 10; - public const MONTHS_PER_YEAR = 12; - public const MONTHS_PER_QUARTER = 3; - public const QUARTERS_PER_YEAR = 4; - public const WEEKS_PER_YEAR = 52; - public const WEEKS_PER_MONTH = 4; - public const DAYS_PER_YEAR = 365; - public const DAYS_PER_WEEK = 7; - public const HOURS_PER_DAY = 24; - public const MINUTES_PER_HOUR = 60; - public const SECONDS_PER_MINUTE = 60; - public const MILLISECONDS_PER_SECOND = 1000; - public const MICROSECONDS_PER_MILLISECOND = 1000; - public const MICROSECONDS_PER_SECOND = 1000000; - - /** - * Special settings to get the start of week from current locale culture. - */ - public const WEEK_DAY_AUTO = 'auto'; - - /** - * RFC7231 DateTime format. - * - * @var string - */ - public const RFC7231_FORMAT = 'D, d M Y H:i:s \G\M\T'; - - /** - * Default format to use for __toString method when type juggling occurs. - * - * @var string - */ - public const DEFAULT_TO_STRING_FORMAT = 'Y-m-d H:i:s'; - - /** - * Format for converting mocked time, includes microseconds. - * - * @var string - */ - public const MOCK_DATETIME_FORMAT = 'Y-m-d H:i:s.u'; - - /** - * Pattern detection for ->isoFormat and ::createFromIsoFormat. - * - * @var string - */ - public const ISO_FORMAT_REGEXP = '(O[YMDHhms]|[Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY?|g{1,5}|G{1,5}|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?)'; - - // - - /** - * Dynamically handle calls to the class. - * - * @param string $method magic method name called - * @param array $parameters parameters list - * - * @throws UnknownMethodException|BadMethodCallException|ReflectionException|Throwable - * - * @return mixed - */ - public function __call($method, $parameters); - - /** - * Dynamically handle calls to the class. - * - * @param string $method magic method name called - * @param array $parameters parameters list - * - * @throws BadMethodCallException - * - * @return mixed - */ - public static function __callStatic($method, $parameters); - - /** - * Update constructedObjectId on cloned. - */ - public function __clone(); - - /** - * Create a new Carbon instance. - * - * Please see the testing aids section (specifically static::setTestNow()) - * for more on the possibility of this constructor returning a test instance. - * - * @param DateTimeInterface|string|null $time - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - */ - public function __construct($time = null, $tz = null); - - /** - * Show truthy properties on var_dump(). - * - * @return array - */ - public function __debugInfo(); - - /** - * Get a part of the Carbon object - * - * @param string $name - * - * @throws UnknownGetterException - * - * @return string|int|bool|DateTimeZone|null - */ - public function __get($name); - - /** - * Check if an attribute exists on the object - * - * @param string $name - * - * @return bool - */ - public function __isset($name); - - /** - * Set a part of the Carbon object - * - * @param string $name - * @param string|int|DateTimeZone $value - * - * @throws UnknownSetterException|ReflectionException - * - * @return void - */ - public function __set($name, $value); - - /** - * The __set_state handler. - * - * @param string|array $dump - * - * @return static - */ - #[ReturnTypeWillChange] - public static function __set_state($dump); - - /** - * Returns the list of properties to dump on serialize() called on. - * - * Only used by PHP < 7.4. - * - * @return array - */ - public function __sleep(); - - /** - * Format the instance as a string using the set format - * - * @example - * ``` - * echo Carbon::now(); // Carbon instances can be cast to string - * ``` - * - * @return string - */ - public function __toString(); - - /** - * Add given units or interval to the current instance. - * - * @example $date->add('hour', 3) - * @example $date->add(15, 'days') - * @example $date->add(CarbonInterval::days(4)) - * - * @param string|DateInterval|Closure|CarbonConverterInterface $unit - * @param int $value - * @param bool|null $overflow - * - * @return static - */ - #[ReturnTypeWillChange] - public function add($unit, $value = 1, $overflow = null); - - /** - * Add seconds to the instance using timestamp. Positive $value travels - * forward while negative $value travels into the past. - * - * @param string $unit - * @param int $value - * - * @return static - */ - public function addRealUnit($unit, $value = 1); - - /** - * Add given units to the current instance. - * - * @param string $unit - * @param int $value - * @param bool|null $overflow - * - * @return static - */ - public function addUnit($unit, $value = 1, $overflow = null); - - /** - * Add any unit to a new value without overflowing current other unit given. - * - * @param string $valueUnit unit name to modify - * @param int $value amount to add to the input unit - * @param string $overflowUnit unit name to not overflow - * - * @return static - */ - public function addUnitNoOverflow($valueUnit, $value, $overflowUnit); - - /** - * Get the difference in a human readable format in the current locale from an other - * instance given to now - * - * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: - * - 'syntax' entry (see below) - * - 'short' entry (see below) - * - 'parts' entry (see below) - * - 'options' entry (see below) - * - 'join' entry determines how to join multiple parts of the string - * ` - if $join is a string, it's used as a joiner glue - * ` - if $join is a callable/closure, it get the list of string and should return a string - * ` - if $join is an array, the first item will be the default glue, and the second item - * ` will be used instead of the glue for the last item - * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) - * ` - if $join is missing, a space will be used as glue - * if int passed, it add modifiers: - * Possible values: - * - CarbonInterface::DIFF_ABSOLUTE no modifiers - * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier - * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier - * Default value: CarbonInterface::DIFF_ABSOLUTE - * @param bool $short displays short format of time units - * @param int $parts maximum number of parts to display (default value: 1: single part) - * @param int $options human diff options - * - * @return string - */ - public function ago($syntax = null, $short = false, $parts = 1, $options = null); - - /** - * Modify the current instance to the average of a given instance (default now) and the current instance - * (second-precision). - * - * @param \Carbon\Carbon|\DateTimeInterface|null $date - * - * @return static - */ - public function average($date = null); - - /** - * Clone the current instance if it's mutable. - * - * This method is convenient to ensure you don't mutate the initial object - * but avoid to make a useless copy of it if it's already immutable. - * - * @return static - */ - public function avoidMutation(); - - /** - * Determines if the instance is between two others. - * - * The third argument allow you to specify if bounds are included or not (true by default) - * but for when you including/excluding bounds may produce different results in your application, - * we recommend to use the explicit methods ->betweenIncluded() or ->betweenExcluded() instead. - * - * @example - * ``` - * Carbon::parse('2018-07-25')->between('2018-07-14', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->between('2018-08-01', '2018-08-20'); // false - * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01', false); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 - * @param bool $equal Indicates if an equal to comparison should be done - * - * @return bool - */ - public function between($date1, $date2, $equal = true): bool; - - /** - * Determines if the instance is between two others, bounds excluded. - * - * @example - * ``` - * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-14', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->betweenExcluded('2018-08-01', '2018-08-20'); // false - * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-25', '2018-08-01'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 - * - * @return bool - */ - public function betweenExcluded($date1, $date2): bool; - - /** - * Determines if the instance is between two others, bounds included. - * - * @example - * ``` - * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-14', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->betweenIncluded('2018-08-01', '2018-08-20'); // false - * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-25', '2018-08-01'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 - * - * @return bool - */ - public function betweenIncluded($date1, $date2): bool; - - /** - * Returns either day of week + time (e.g. "Last Friday at 3:30 PM") if reference time is within 7 days, - * or a calendar date (e.g. "10/29/2017") otherwise. - * - * Language, date and time formats will change according to the current locale. - * - * @param Carbon|\DateTimeInterface|string|null $referenceTime - * @param array $formats - * - * @return string - */ - public function calendar($referenceTime = null, array $formats = []); - - /** - * Checks if the (date)time string is in a given format and valid to create a - * new instance. - * - * @example - * ``` - * Carbon::canBeCreatedFromFormat('11:12:45', 'h:i:s'); // true - * Carbon::canBeCreatedFromFormat('13:12:45', 'h:i:s'); // false - * ``` - * - * @param string $date - * @param string $format - * - * @return bool - */ - public static function canBeCreatedFromFormat($date, $format); - - /** - * Return the Carbon instance passed through, a now instance in the same timezone - * if null given or parse the input if string given. - * - * @param Carbon|\Carbon\CarbonPeriod|\Carbon\CarbonInterval|\DateInterval|\DatePeriod|DateTimeInterface|string|null $date - * - * @return static - */ - public function carbonize($date = null); - - /** - * Cast the current instance into the given class. - * - * @param string $className The $className::instance() method will be called to cast the current object. - * - * @return DateTimeInterface - */ - public function cast(string $className); - - /** - * Ceil the current instance second with given precision if specified. - * - * @param float|int|string|\DateInterval|null $precision - * - * @return CarbonInterface - */ - public function ceil($precision = 1); - - /** - * Ceil the current instance at the given unit with given precision if specified. - * - * @param string $unit - * @param float|int $precision - * - * @return CarbonInterface - */ - public function ceilUnit($unit, $precision = 1); - - /** - * Ceil the current instance week. - * - * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week - * - * @return CarbonInterface - */ - public function ceilWeek($weekStartsAt = null); - - /** - * Similar to native modify() method of DateTime but can handle more grammars. - * - * @example - * ``` - * echo Carbon::now()->change('next 2pm'); - * ``` - * - * @link https://php.net/manual/en/datetime.modify.php - * - * @param string $modifier - * - * @return static|false - */ - public function change($modifier); - - /** - * Cleanup properties attached to the public scope of DateTime when a dump of the date is requested. - * foreach ($date as $_) {} - * serializer($date) - * var_export($date) - * get_object_vars($date) - */ - public function cleanupDumpProperties(); - - /** - * @alias copy - * - * Get a copy of the instance. - * - * @return static - */ - public function clone(); - - /** - * Get the closest date from the instance (second-precision). - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 - * - * @return static - */ - public function closest($date1, $date2); - - /** - * Get a copy of the instance. - * - * @return static - */ - public function copy(); - - /** - * Create a new Carbon instance from a specific date and time. - * - * If any of $year, $month or $day are set to null their now() values will - * be used. - * - * If $hour is null it will be set to its now() value and the default - * values for $minute and $second will be their now() values. - * - * If $hour is not null then the default values for $minute and $second - * will be 0. - * - * @param DateTimeInterface|int|null $year - * @param int|null $month - * @param int|null $day - * @param int|null $hour - * @param int|null $minute - * @param int|null $second - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - * - * @return static|false - */ - public static function create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null); - - /** - * Create a Carbon instance from just a date. The time portion is set to now. - * - * @param int|null $year - * @param int|null $month - * @param int|null $day - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - * - * @return static - */ - public static function createFromDate($year = null, $month = null, $day = null, $tz = null); - - /** - * Create a Carbon instance from a specific format. - * - * @param string $format Datetime format - * @param string $time - * @param DateTimeZone|string|false|null $tz - * - * @throws InvalidFormatException - * - * @return static|false - */ - #[ReturnTypeWillChange] - public static function createFromFormat($format, $time, $tz = null); - - /** - * Create a Carbon instance from a specific ISO format (same replacements as ->isoFormat()). - * - * @param string $format Datetime format - * @param string $time - * @param DateTimeZone|string|false|null $tz optional timezone - * @param string|null $locale locale to be used for LTS, LT, LL, LLL, etc. macro-formats (en by fault, unneeded if no such macro-format in use) - * @param \Symfony\Component\Translation\TranslatorInterface $translator optional custom translator to use for macro-formats - * - * @throws InvalidFormatException - * - * @return static|false - */ - public static function createFromIsoFormat($format, $time, $tz = null, $locale = 'en', $translator = null); - - /** - * Create a Carbon instance from a specific format and a string in a given language. - * - * @param string $format Datetime format - * @param string $locale - * @param string $time - * @param DateTimeZone|string|false|null $tz - * - * @throws InvalidFormatException - * - * @return static|false - */ - public static function createFromLocaleFormat($format, $locale, $time, $tz = null); - - /** - * Create a Carbon instance from a specific ISO format and a string in a given language. - * - * @param string $format Datetime ISO format - * @param string $locale - * @param string $time - * @param DateTimeZone|string|false|null $tz - * - * @throws InvalidFormatException - * - * @return static|false - */ - public static function createFromLocaleIsoFormat($format, $locale, $time, $tz = null); - - /** - * Create a Carbon instance from just a time. The date portion is set to today. - * - * @param int|null $hour - * @param int|null $minute - * @param int|null $second - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - * - * @return static - */ - public static function createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null); - - /** - * Create a Carbon instance from a time string. The date portion is set to today. - * - * @param string $time - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - * - * @return static - */ - public static function createFromTimeString($time, $tz = null); - - /** - * Create a Carbon instance from a timestamp and set the timezone (use default one if not specified). - * - * Timestamp input can be given as int, float or a string containing one or more numbers. - * - * @param float|int|string $timestamp - * @param \DateTimeZone|string|null $tz - * - * @return static - */ - public static function createFromTimestamp($timestamp, $tz = null); - - /** - * Create a Carbon instance from a timestamp in milliseconds. - * - * Timestamp input can be given as int, float or a string containing one or more numbers. - * - * @param float|int|string $timestamp - * @param \DateTimeZone|string|null $tz - * - * @return static - */ - public static function createFromTimestampMs($timestamp, $tz = null); - - /** - * Create a Carbon instance from a timestamp in milliseconds. - * - * Timestamp input can be given as int, float or a string containing one or more numbers. - * - * @param float|int|string $timestamp - * - * @return static - */ - public static function createFromTimestampMsUTC($timestamp); - - /** - * Create a Carbon instance from an timestamp keeping the timezone to UTC. - * - * Timestamp input can be given as int, float or a string containing one or more numbers. - * - * @param float|int|string $timestamp - * - * @return static - */ - public static function createFromTimestampUTC($timestamp); - - /** - * Create a Carbon instance from just a date. The time portion is set to midnight. - * - * @param int|null $year - * @param int|null $month - * @param int|null $day - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - * - * @return static - */ - public static function createMidnightDate($year = null, $month = null, $day = null, $tz = null); - - /** - * Create a new safe Carbon instance from a specific date and time. - * - * If any of $year, $month or $day are set to null their now() values will - * be used. - * - * If $hour is null it will be set to its now() value and the default - * values for $minute and $second will be their now() values. - * - * If $hour is not null then the default values for $minute and $second - * will be 0. - * - * If one of the set values is not valid, an InvalidDateException - * will be thrown. - * - * @param int|null $year - * @param int|null $month - * @param int|null $day - * @param int|null $hour - * @param int|null $minute - * @param int|null $second - * @param DateTimeZone|string|null $tz - * - * @throws InvalidDateException - * - * @return static|false - */ - public static function createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null); - - /** - * Create a new Carbon instance from a specific date and time using strict validation. - * - * @see create() - * - * @param int|null $year - * @param int|null $month - * @param int|null $day - * @param int|null $hour - * @param int|null $minute - * @param int|null $second - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - * - * @return static - */ - public static function createStrict(?int $year = 0, ?int $month = 1, ?int $day = 1, ?int $hour = 0, ?int $minute = 0, ?int $second = 0, $tz = null); - - /** - * Get/set the day of year. - * - * @param int|null $value new value for day of year if using as setter. - * - * @return static|int - */ - public function dayOfYear($value = null); - - /** - * Get the difference as a CarbonInterval instance. - * Return relative interval (negative if $absolute flag is not set to true and the given date is before - * current one). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return CarbonInterval - */ - public function diffAsCarbonInterval($date = null, $absolute = true, array $skip = []); - - /** - * Get the difference by the given interval using a filter closure. - * - * @param CarbonInterval $ci An interval to traverse by - * @param Closure $callback - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffFiltered(CarbonInterval $ci, Closure $callback, $date = null, $absolute = true); - - /** - * Get the difference in a human readable format in the current locale from current instance to an other - * instance given (or now if null given). - * - * @example - * ``` - * echo Carbon::tomorrow()->diffForHumans() . "\n"; - * echo Carbon::tomorrow()->diffForHumans(['parts' => 2]) . "\n"; - * echo Carbon::tomorrow()->diffForHumans(['parts' => 3, 'join' => true]) . "\n"; - * echo Carbon::tomorrow()->diffForHumans(Carbon::yesterday()) . "\n"; - * echo Carbon::tomorrow()->diffForHumans(Carbon::yesterday(), ['short' => true]) . "\n"; - * ``` - * - * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below; - * if null passed, now will be used as comparison reference; - * if any other type, it will be converted to date and used as reference. - * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: - * - 'syntax' entry (see below) - * - 'short' entry (see below) - * - 'parts' entry (see below) - * - 'options' entry (see below) - * - 'skip' entry, list of units to skip (array of strings or a single string, - * ` it can be the unit name (singular or plural) or its shortcut - * ` (y, m, w, d, h, min, s, ms, µs). - * - 'aUnit' entry, prefer "an hour" over "1 hour" if true - * - 'join' entry determines how to join multiple parts of the string - * ` - if $join is a string, it's used as a joiner glue - * ` - if $join is a callable/closure, it get the list of string and should return a string - * ` - if $join is an array, the first item will be the default glue, and the second item - * ` will be used instead of the glue for the last item - * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) - * ` - if $join is missing, a space will be used as glue - * - 'other' entry (see above) - * - 'minimumUnit' entry determines the smallest unit of time to display can be long or - * ` short form of the units, e.g. 'hour' or 'h' (default value: s) - * if int passed, it add modifiers: - * Possible values: - * - CarbonInterface::DIFF_ABSOLUTE no modifiers - * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier - * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier - * Default value: CarbonInterface::DIFF_ABSOLUTE - * @param bool $short displays short format of time units - * @param int $parts maximum number of parts to display (default value: 1: single unit) - * @param int $options human diff options - * - * @return string - */ - public function diffForHumans($other = null, $syntax = null, $short = false, $parts = 1, $options = null); - - /** - * Get the difference in days rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInDays($date = null, $absolute = true); - - /** - * Get the difference in days using a filter closure rounded down. - * - * @param Closure $callback - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInDaysFiltered(Closure $callback, $date = null, $absolute = true); - - /** - * Get the difference in hours rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInHours($date = null, $absolute = true); - - /** - * Get the difference in hours using a filter closure rounded down. - * - * @param Closure $callback - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInHoursFiltered(Closure $callback, $date = null, $absolute = true); - - /** - * Get the difference in microseconds. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInMicroseconds($date = null, $absolute = true); - - /** - * Get the difference in milliseconds rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInMilliseconds($date = null, $absolute = true); - - /** - * Get the difference in minutes rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInMinutes($date = null, $absolute = true); - - /** - * Get the difference in months rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInMonths($date = null, $absolute = true); - - /** - * Get the difference in quarters rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInQuarters($date = null, $absolute = true); - - /** - * Get the difference in hours rounded down using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInRealHours($date = null, $absolute = true); - - /** - * Get the difference in microseconds using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInRealMicroseconds($date = null, $absolute = true); - - /** - * Get the difference in milliseconds rounded down using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInRealMilliseconds($date = null, $absolute = true); - - /** - * Get the difference in minutes rounded down using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInRealMinutes($date = null, $absolute = true); - - /** - * Get the difference in seconds using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInRealSeconds($date = null, $absolute = true); - - /** - * Get the difference in seconds rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInSeconds($date = null, $absolute = true); - - /** - * Get the difference in weekdays rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInWeekdays($date = null, $absolute = true); - - /** - * Get the difference in weekend days using a filter rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInWeekendDays($date = null, $absolute = true); - - /** - * Get the difference in weeks rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInWeeks($date = null, $absolute = true); - - /** - * Get the difference in years - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInYears($date = null, $absolute = true); - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * @see settings - * - * @param int $humanDiffOption - */ - public static function disableHumanDiffOption($humanDiffOption); - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * @see settings - * - * @param int $humanDiffOption - */ - public static function enableHumanDiffOption($humanDiffOption); - - /** - * Modify to end of current given unit. - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16.334455') - * ->startOf('month') - * ->endOf('week', Carbon::FRIDAY); - * ``` - * - * @param string $unit - * @param array $params - * - * @return static - */ - public function endOf($unit, ...$params); - - /** - * Resets the date to end of the century and time to 23:59:59.999999 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfCentury(); - * ``` - * - * @return static - */ - public function endOfCentury(); - - /** - * Resets the time to 23:59:59.999999 end of day - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfDay(); - * ``` - * - * @return static - */ - public function endOfDay(); - - /** - * Resets the date to end of the decade and time to 23:59:59.999999 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfDecade(); - * ``` - * - * @return static - */ - public function endOfDecade(); - - /** - * Modify to end of current hour, minutes and seconds become 59 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfHour(); - * ``` - * - * @return static - */ - public function endOfHour(); - - /** - * Resets the date to end of the millennium and time to 23:59:59.999999 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfMillennium(); - * ``` - * - * @return static - */ - public function endOfMillennium(); - - /** - * Modify to end of current minute, seconds become 59 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfMinute(); - * ``` - * - * @return static - */ - public function endOfMinute(); - - /** - * Resets the date to end of the month and time to 23:59:59.999999 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfMonth(); - * ``` - * - * @return static - */ - public function endOfMonth(); - - /** - * Resets the date to end of the quarter and time to 23:59:59.999999 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfQuarter(); - * ``` - * - * @return static - */ - public function endOfQuarter(); - - /** - * Modify to end of current second, microseconds become 999999 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16.334455') - * ->endOfSecond() - * ->format('H:i:s.u'); - * ``` - * - * @return static - */ - public function endOfSecond(); - - /** - * Resets the date to end of week (defined in $weekEndsAt) and time to 23:59:59.999999 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek() . "\n"; - * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->endOfWeek() . "\n"; - * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek(Carbon::SATURDAY) . "\n"; - * ``` - * - * @param int $weekEndsAt optional start allow you to specify the day of week to use to end the week - * - * @return static - */ - public function endOfWeek($weekEndsAt = null); - - /** - * Resets the date to end of the year and time to 23:59:59.999999 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfYear(); - * ``` - * - * @return static - */ - public function endOfYear(); - - /** - * Determines if the instance is equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->eq(Carbon::parse('2018-07-25 12:45:16')); // true - * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see equalTo() - * - * @return bool - */ - public function eq($date): bool; - - /** - * Determines if the instance is equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->equalTo(Carbon::parse('2018-07-25 12:45:16')); // true - * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function equalTo($date): bool; - - /** - * Set the current locale to the given, execute the passed function, reset the locale to previous one, - * then return the result of the closure (or null if the closure was void). - * - * @param string $locale locale ex. en - * @param callable $func - * - * @return mixed - */ - public static function executeWithLocale($locale, $func); - - /** - * Get the farthest date from the instance (second-precision). - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 - * - * @return static - */ - public function farthest($date1, $date2); - - /** - * Modify to the first occurrence of a given day of the week - * in the current month. If no dayOfWeek is provided, modify to the - * first day of the current month. Use the supplied constants - * to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int|null $dayOfWeek - * - * @return static - */ - public function firstOfMonth($dayOfWeek = null); - - /** - * Modify to the first occurrence of a given day of the week - * in the current quarter. If no dayOfWeek is provided, modify to the - * first day of the current quarter. Use the supplied constants - * to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int|null $dayOfWeek day of the week default null - * - * @return static - */ - public function firstOfQuarter($dayOfWeek = null); - - /** - * Modify to the first occurrence of a given day of the week - * in the current year. If no dayOfWeek is provided, modify to the - * first day of the current year. Use the supplied constants - * to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int|null $dayOfWeek day of the week default null - * - * @return static - */ - public function firstOfYear($dayOfWeek = null); - - /** - * Get the difference in days as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInDays($date = null, $absolute = true); - - /** - * Get the difference in hours as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInHours($date = null, $absolute = true); - - /** - * Get the difference in minutes as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInMinutes($date = null, $absolute = true); - - /** - * Get the difference in months as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInMonths($date = null, $absolute = true); - - /** - * Get the difference in days as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInRealDays($date = null, $absolute = true); - - /** - * Get the difference in hours as float (microsecond-precision) using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInRealHours($date = null, $absolute = true); - - /** - * Get the difference in minutes as float (microsecond-precision) using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInRealMinutes($date = null, $absolute = true); - - /** - * Get the difference in months as float (microsecond-precision) using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInRealMonths($date = null, $absolute = true); - - /** - * Get the difference in seconds as float (microsecond-precision) using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInRealSeconds($date = null, $absolute = true); - - /** - * Get the difference in weeks as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInRealWeeks($date = null, $absolute = true); - - /** - * Get the difference in year as float (microsecond-precision) using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInRealYears($date = null, $absolute = true); - - /** - * Get the difference in seconds as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInSeconds($date = null, $absolute = true); - - /** - * Get the difference in weeks as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInWeeks($date = null, $absolute = true); - - /** - * Get the difference in year as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInYears($date = null, $absolute = true); - - /** - * Round the current instance second with given precision if specified. - * - * @param float|int|string|\DateInterval|null $precision - * - * @return CarbonInterface - */ - public function floor($precision = 1); - - /** - * Truncate the current instance at the given unit with given precision if specified. - * - * @param string $unit - * @param float|int $precision - * - * @return CarbonInterface - */ - public function floorUnit($unit, $precision = 1); - - /** - * Truncate the current instance week. - * - * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week - * - * @return CarbonInterface - */ - public function floorWeek($weekStartsAt = null); - - /** - * Format the instance with the current locale. You can set the current - * locale using setlocale() https://php.net/setlocale. - * - * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1. - * Use ->isoFormat() instead. - * Deprecated since 2.55.0 - * - * @param string $format - * - * @return string - */ - public function formatLocalized($format); - - /** - * @alias diffForHumans - * - * Get the difference in a human readable format in the current locale from current instance to an other - * instance given (or now if null given). - * - * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below; - * if null passed, now will be used as comparison reference; - * if any other type, it will be converted to date and used as reference. - * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: - * - 'syntax' entry (see below) - * - 'short' entry (see below) - * - 'parts' entry (see below) - * - 'options' entry (see below) - * - 'join' entry determines how to join multiple parts of the string - * ` - if $join is a string, it's used as a joiner glue - * ` - if $join is a callable/closure, it get the list of string and should return a string - * ` - if $join is an array, the first item will be the default glue, and the second item - * ` will be used instead of the glue for the last item - * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) - * ` - if $join is missing, a space will be used as glue - * - 'other' entry (see above) - * if int passed, it add modifiers: - * Possible values: - * - CarbonInterface::DIFF_ABSOLUTE no modifiers - * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier - * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier - * Default value: CarbonInterface::DIFF_ABSOLUTE - * @param bool $short displays short format of time units - * @param int $parts maximum number of parts to display (default value: 1: single unit) - * @param int $options human diff options - * - * @return string - */ - public function from($other = null, $syntax = null, $short = false, $parts = 1, $options = null); - - /** - * Get the difference in a human readable format in the current locale from current - * instance to now. - * - * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: - * - 'syntax' entry (see below) - * - 'short' entry (see below) - * - 'parts' entry (see below) - * - 'options' entry (see below) - * - 'join' entry determines how to join multiple parts of the string - * ` - if $join is a string, it's used as a joiner glue - * ` - if $join is a callable/closure, it get the list of string and should return a string - * ` - if $join is an array, the first item will be the default glue, and the second item - * ` will be used instead of the glue for the last item - * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) - * ` - if $join is missing, a space will be used as glue - * if int passed, it add modifiers: - * Possible values: - * - CarbonInterface::DIFF_ABSOLUTE no modifiers - * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier - * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier - * Default value: CarbonInterface::DIFF_ABSOLUTE - * @param bool $short displays short format of time units - * @param int $parts maximum number of parts to display (default value: 1: single unit) - * @param int $options human diff options - * - * @return string - */ - public function fromNow($syntax = null, $short = false, $parts = 1, $options = null); - - /** - * Create an instance from a serialized string. - * - * @param string $value - * - * @throws InvalidFormatException - * - * @return static - */ - public static function fromSerialized($value); - - /** - * Register a custom macro. - * - * @param object|callable $macro - * @param int $priority marco with higher priority is tried first - * - * @return void - */ - public static function genericMacro($macro, $priority = 0); - - /** - * Get a part of the Carbon object - * - * @param string $name - * - * @throws UnknownGetterException - * - * @return string|int|bool|DateTimeZone|null - */ - public function get($name); - - /** - * Returns the alternative number for a given date property if available in the current locale. - * - * @param string $key date property - * - * @return string - */ - public function getAltNumber(string $key): string; - - /** - * Returns the list of internally available locales and already loaded custom locales. - * (It will ignore custom translator dynamic loading.) - * - * @return array - */ - public static function getAvailableLocales(); - - /** - * Returns list of Language object for each available locale. This object allow you to get the ISO name, native - * name, region and variant of the locale. - * - * @return Language[] - */ - public static function getAvailableLocalesInfo(); - - /** - * Returns list of calendar formats for ISO formatting. - * - * @param string|null $locale current locale used if null - * - * @return array - */ - public function getCalendarFormats($locale = null); - - /** - * Get the days of the week - * - * @return array - */ - public static function getDays(); - - /** - * Return the number of days since the start of the week (using the current locale or the first parameter - * if explicitly given). - * - * @param int|null $weekStartsAt optional start allow you to specify the day of week to use to start the week, - * if not provided, start of week is inferred from the locale - * (Sunday for en_US, Monday for de_DE, etc.) - * - * @return int - */ - public function getDaysFromStartOfWeek(?int $weekStartsAt = null): int; - - /** - * Get the fallback locale. - * - * @see https://symfony.com/doc/current/components/translation.html#fallback-locales - * - * @return string|null - */ - public static function getFallbackLocale(); - - /** - * List of replacements from date() format to isoFormat(). - * - * @return array - */ - public static function getFormatsToIsoReplacements(); - - /** - * Return default humanDiff() options (merged flags as integer). - * - * @return int - */ - public static function getHumanDiffOptions(); - - /** - * Returns list of locale formats for ISO formatting. - * - * @param string|null $locale current locale used if null - * - * @return array - */ - public function getIsoFormats($locale = null); - - /** - * Returns list of locale units for ISO formatting. - * - * @return array - */ - public static function getIsoUnits(); - - /** - * {@inheritdoc} - * - * @return array - */ - #[ReturnTypeWillChange] - public static function getLastErrors(); - - /** - * Get the raw callable macro registered globally or locally for a given name. - * - * @param string $name - * - * @return callable|null - */ - public function getLocalMacro($name); - - /** - * Get the translator of the current instance or the default if none set. - * - * @return \Symfony\Component\Translation\TranslatorInterface - */ - public function getLocalTranslator(); - - /** - * Get the current translator locale. - * - * @return string - */ - public static function getLocale(); - - /** - * Get the raw callable macro registered globally for a given name. - * - * @param string $name - * - * @return callable|null - */ - public static function getMacro($name); - - /** - * get midday/noon hour - * - * @return int - */ - public static function getMidDayAt(); - - /** - * Returns the offset hour and minute formatted with +/- and a given separator (":" by default). - * For example, if the time zone is 9 hours 30 minutes, you'll get "+09:30", with "@@" as first - * argument, "+09@@30", with "" as first argument, "+0930". Negative offset will return something - * like "-12:00". - * - * @param string $separator string to place between hours and minutes (":" by default) - * - * @return string - */ - public function getOffsetString($separator = ':'); - - /** - * Returns a unit of the instance padded with 0 by default or any other string if specified. - * - * @param string $unit Carbon unit name - * @param int $length Length of the output (2 by default) - * @param string $padString String to use for padding ("0" by default) - * @param int $padType Side(s) to pad (STR_PAD_LEFT by default) - * - * @return string - */ - public function getPaddedUnit($unit, $length = 2, $padString = '0', $padType = 0); - - /** - * Returns a timestamp rounded with the given precision (6 by default). - * - * @example getPreciseTimestamp() 1532087464437474 (microsecond maximum precision) - * @example getPreciseTimestamp(6) 1532087464437474 - * @example getPreciseTimestamp(5) 153208746443747 (1/100000 second precision) - * @example getPreciseTimestamp(4) 15320874644375 (1/10000 second precision) - * @example getPreciseTimestamp(3) 1532087464437 (millisecond precision) - * @example getPreciseTimestamp(2) 153208746444 (1/100 second precision) - * @example getPreciseTimestamp(1) 15320874644 (1/10 second precision) - * @example getPreciseTimestamp(0) 1532087464 (second precision) - * @example getPreciseTimestamp(-1) 153208746 (10 second precision) - * @example getPreciseTimestamp(-2) 15320875 (100 second precision) - * - * @param int $precision - * - * @return float - */ - public function getPreciseTimestamp($precision = 6); - - /** - * Returns current local settings. - * - * @return array - */ - public function getSettings(); - - /** - * Get the Carbon instance (real or mock) to be returned when a "now" - * instance is created. - * - * @return Closure|static the current instance used for testing - */ - public static function getTestNow(); - - /** - * Return a format from H:i to H:i:s.u according to given unit precision. - * - * @param string $unitPrecision "minute", "second", "millisecond" or "microsecond" - * - * @return string - */ - public static function getTimeFormatByPrecision($unitPrecision); - - /** - * Returns the timestamp with millisecond precision. - * - * @return int - */ - public function getTimestampMs(); - - /** - * Get the translation of the current week day name (with context for languages with multiple forms). - * - * @param string|null $context whole format string - * @param string $keySuffix "", "_short" or "_min" - * @param string|null $defaultValue default value if translation missing - * - * @return string - */ - public function getTranslatedDayName($context = null, $keySuffix = '', $defaultValue = null); - - /** - * Get the translation of the current abbreviated week day name (with context for languages with multiple forms). - * - * @param string|null $context whole format string - * - * @return string - */ - public function getTranslatedMinDayName($context = null); - - /** - * Get the translation of the current month day name (with context for languages with multiple forms). - * - * @param string|null $context whole format string - * @param string $keySuffix "" or "_short" - * @param string|null $defaultValue default value if translation missing - * - * @return string - */ - public function getTranslatedMonthName($context = null, $keySuffix = '', $defaultValue = null); - - /** - * Get the translation of the current short week day name (with context for languages with multiple forms). - * - * @param string|null $context whole format string - * - * @return string - */ - public function getTranslatedShortDayName($context = null); - - /** - * Get the translation of the current short month day name (with context for languages with multiple forms). - * - * @param string|null $context whole format string - * - * @return string - */ - public function getTranslatedShortMonthName($context = null); - - /** - * Returns raw translation message for a given key. - * - * @param string $key key to find - * @param string|null $locale current locale used if null - * @param string|null $default default value if translation returns the key - * @param \Symfony\Component\Translation\TranslatorInterface $translator an optional translator to use - * - * @return string - */ - public function getTranslationMessage(string $key, ?string $locale = null, ?string $default = null, $translator = null); - - /** - * Returns raw translation message for a given key. - * - * @param \Symfony\Component\Translation\TranslatorInterface $translator the translator to use - * @param string $key key to find - * @param string|null $locale current locale used if null - * @param string|null $default default value if translation returns the key - * - * @return string - */ - public static function getTranslationMessageWith($translator, string $key, ?string $locale = null, ?string $default = null); - - /** - * Get the default translator instance in use. - * - * @return \Symfony\Component\Translation\TranslatorInterface - */ - public static function getTranslator(); - - /** - * Get the last day of week - * - * @return int - */ - public static function getWeekEndsAt(); - - /** - * Get the first day of week - * - * @return int - */ - public static function getWeekStartsAt(); - - /** - * Get weekend days - * - * @return array - */ - public static function getWeekendDays(); - - /** - * Determines if the instance is greater (after) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:15'); // true - * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function greaterThan($date): bool; - - /** - * Determines if the instance is greater (after) than or equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:15'); // true - * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function greaterThanOrEqualTo($date): bool; - - /** - * Determines if the instance is greater (after) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:15'); // true - * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see greaterThan() - * - * @return bool - */ - public function gt($date): bool; - - /** - * Determines if the instance is greater (after) than or equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:15'); // true - * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see greaterThanOrEqualTo() - * - * @return bool - */ - public function gte($date): bool; - - /** - * Checks if the (date)time string is in a given format. - * - * @example - * ``` - * Carbon::hasFormat('11:12:45', 'h:i:s'); // true - * Carbon::hasFormat('13:12:45', 'h:i:s'); // false - * ``` - * - * @param string $date - * @param string $format - * - * @return bool - */ - public static function hasFormat($date, $format); - - /** - * Checks if the (date)time string is in a given format. - * - * @example - * ``` - * Carbon::hasFormatWithModifiers('31/08/2015', 'd#m#Y'); // true - * Carbon::hasFormatWithModifiers('31/08/2015', 'm#d#Y'); // false - * ``` - * - * @param string $date - * @param string $format - * - * @return bool - */ - public static function hasFormatWithModifiers($date, $format): bool; - - /** - * Checks if macro is registered globally or locally. - * - * @param string $name - * - * @return bool - */ - public function hasLocalMacro($name); - - /** - * Return true if the current instance has its own translator. - * - * @return bool - */ - public function hasLocalTranslator(); - - /** - * Checks if macro is registered globally. - * - * @param string $name - * - * @return bool - */ - public static function hasMacro($name); - - /** - * Determine if a time string will produce a relative date. - * - * @param string $time - * - * @return bool true if time match a relative date, false if absolute or invalid time string - */ - public static function hasRelativeKeywords($time); - - /** - * Determine if there is a valid test instance set. A valid test instance - * is anything that is not null. - * - * @return bool true if there is a test instance, otherwise false - */ - public static function hasTestNow(); - - /** - * Create a Carbon instance from a DateTime one. - * - * @param DateTimeInterface $date - * - * @return static - */ - public static function instance($date); - - /** - * Returns true if the current date matches the given string. - * - * @example - * ``` - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2018')); // false - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('06-02')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06-02')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('Sunday')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('June')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:45')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:00')); // false - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12h')); // true - * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3pm')); // true - * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3am')); // false - * ``` - * - * @param string $tester day name, month name, hour, date, etc. as string - * - * @return bool - */ - public function is(string $tester); - - /** - * Determines if the instance is greater (after) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:15'); // true - * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see greaterThan() - * - * @return bool - */ - public function isAfter($date): bool; - - /** - * Determines if the instance is less (before) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:15'); // false - * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see lessThan() - * - * @return bool - */ - public function isBefore($date): bool; - - /** - * Determines if the instance is between two others - * - * @example - * ``` - * Carbon::parse('2018-07-25')->isBetween('2018-07-14', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->isBetween('2018-08-01', '2018-08-20'); // false - * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01', false); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 - * @param bool $equal Indicates if an equal to comparison should be done - * - * @return bool - */ - public function isBetween($date1, $date2, $equal = true): bool; - - /** - * Check if its the birthday. Compares the date/month values of the two dates. - * - * @example - * ``` - * Carbon::now()->subYears(5)->isBirthday(); // true - * Carbon::now()->subYears(5)->subDay()->isBirthday(); // false - * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-05')); // true - * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-06')); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use current day. - * - * @return bool - */ - public function isBirthday($date = null); - - /** - * Determines if the instance is in the current unit given. - * - * @example - * ``` - * Carbon::now()->isCurrentUnit('hour'); // true - * Carbon::now()->subHours(2)->isCurrentUnit('hour'); // false - * ``` - * - * @param string $unit The unit to test. - * - * @throws BadMethodCallException - * - * @return bool - */ - public function isCurrentUnit($unit); - - /** - * Checks if this day is a specific day of the week. - * - * @example - * ``` - * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::WEDNESDAY); // true - * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::FRIDAY); // false - * Carbon::parse('2019-07-17')->isDayOfWeek('Wednesday'); // true - * Carbon::parse('2019-07-17')->isDayOfWeek('Friday'); // false - * ``` - * - * @param int $dayOfWeek - * - * @return bool - */ - public function isDayOfWeek($dayOfWeek); - - /** - * Check if the instance is end of day. - * - * @example - * ``` - * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(); // true - * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(); // true - * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(); // true - * Carbon::parse('2019-02-28 23:59:58.999999')->isEndOfDay(); // false - * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(true); // true - * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(true); // false - * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(true); // false - * ``` - * - * @param bool $checkMicroseconds check time at microseconds precision - * - * @return bool - */ - public function isEndOfDay($checkMicroseconds = false); - - /** - * Returns true if the date was created using CarbonImmutable::endOfTime() - * - * @return bool - */ - public function isEndOfTime(): bool; - - /** - * Determines if the instance is in the future, ie. greater (after) than now. - * - * @example - * ``` - * Carbon::now()->addHours(5)->isFuture(); // true - * Carbon::now()->subHours(5)->isFuture(); // false - * ``` - * - * @return bool - */ - public function isFuture(); - - /** - * Returns true if the current class/instance is immutable. - * - * @return bool - */ - public static function isImmutable(); - - /** - * Check if today is the last day of the Month - * - * @example - * ``` - * Carbon::parse('2019-02-28')->isLastOfMonth(); // true - * Carbon::parse('2019-03-28')->isLastOfMonth(); // false - * Carbon::parse('2019-03-30')->isLastOfMonth(); // false - * Carbon::parse('2019-03-31')->isLastOfMonth(); // true - * Carbon::parse('2019-04-30')->isLastOfMonth(); // true - * ``` - * - * @return bool - */ - public function isLastOfMonth(); - - /** - * Determines if the instance is a leap year. - * - * @example - * ``` - * Carbon::parse('2020-01-01')->isLeapYear(); // true - * Carbon::parse('2019-01-01')->isLeapYear(); // false - * ``` - * - * @return bool - */ - public function isLeapYear(); - - /** - * Determines if the instance is a long year (using ISO 8601 year). - * - * @example - * ``` - * Carbon::parse('2015-01-01')->isLongIsoYear(); // true - * Carbon::parse('2016-01-01')->isLongIsoYear(); // true - * Carbon::parse('2016-01-03')->isLongIsoYear(); // false - * Carbon::parse('2019-12-29')->isLongIsoYear(); // false - * Carbon::parse('2019-12-30')->isLongIsoYear(); // true - * ``` - * - * @see https://en.wikipedia.org/wiki/ISO_8601#Week_dates - * - * @return bool - */ - public function isLongIsoYear(); - - /** - * Determines if the instance is a long year (using calendar year). - * - * ⚠️ This method completely ignores month and day to use the numeric year number, - * it's not correct if the exact date matters. For instance as `2019-12-30` is already - * in the first week of the 2020 year, if you want to know from this date if ISO week - * year 2020 is a long year, use `isLongIsoYear` instead. - * - * @example - * ``` - * Carbon::create(2015)->isLongYear(); // true - * Carbon::create(2016)->isLongYear(); // false - * ``` - * - * @see https://en.wikipedia.org/wiki/ISO_8601#Week_dates - * - * @return bool - */ - public function isLongYear(); - - /** - * Check if the instance is midday. - * - * @example - * ``` - * Carbon::parse('2019-02-28 11:59:59.999999')->isMidday(); // false - * Carbon::parse('2019-02-28 12:00:00')->isMidday(); // true - * Carbon::parse('2019-02-28 12:00:00.999999')->isMidday(); // true - * Carbon::parse('2019-02-28 12:00:01')->isMidday(); // false - * ``` - * - * @return bool - */ - public function isMidday(); - - /** - * Check if the instance is start of day / midnight. - * - * @example - * ``` - * Carbon::parse('2019-02-28 00:00:00')->isMidnight(); // true - * Carbon::parse('2019-02-28 00:00:00.999999')->isMidnight(); // true - * Carbon::parse('2019-02-28 00:00:01')->isMidnight(); // false - * ``` - * - * @return bool - */ - public function isMidnight(); - - /** - * Returns true if a property can be changed via setter. - * - * @param string $unit - * - * @return bool - */ - public static function isModifiableUnit($unit); - - /** - * Returns true if the current class/instance is mutable. - * - * @return bool - */ - public static function isMutable(); - - /** - * Determines if the instance is in the past, ie. less (before) than now. - * - * @example - * ``` - * Carbon::now()->subHours(5)->isPast(); // true - * Carbon::now()->addHours(5)->isPast(); // false - * ``` - * - * @return bool - */ - public function isPast(); - - /** - * Compares the formatted values of the two dates. - * - * @example - * ``` - * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-12-13')); // true - * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-06-14')); // false - * ``` - * - * @param string $format date formats to compare. - * @param \Carbon\Carbon|\DateTimeInterface|string|null $date instance to compare with or null to use current day. - * - * @return bool - */ - public function isSameAs($format, $date = null); - - /** - * Checks if the passed in date is in the same month as the instance´s month. - * - * @example - * ``` - * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-01-01')); // true - * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-02-01')); // false - * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01')); // false - * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01'), false); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use the current date. - * @param bool $ofSameYear Check if it is the same month in the same year. - * - * @return bool - */ - public function isSameMonth($date = null, $ofSameYear = true); - - /** - * Checks if the passed in date is in the same quarter as the instance quarter (and year if needed). - * - * @example - * ``` - * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-03-01')); // true - * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-04-01')); // false - * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01')); // false - * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01'), false); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|string|null $date The instance to compare with or null to use current day. - * @param bool $ofSameYear Check if it is the same month in the same year. - * - * @return bool - */ - public function isSameQuarter($date = null, $ofSameYear = true); - - /** - * Determines if the instance is in the current unit given. - * - * @example - * ``` - * Carbon::parse('2019-01-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // true - * Carbon::parse('2018-12-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // false - * ``` - * - * @param string $unit singular unit string - * @param \Carbon\Carbon|\DateTimeInterface|null $date instance to compare with or null to use current day. - * - * @throws BadComparisonUnitException - * - * @return bool - */ - public function isSameUnit($unit, $date = null); - - /** - * Check if the instance is start of day / midnight. - * - * @example - * ``` - * Carbon::parse('2019-02-28 00:00:00')->isStartOfDay(); // true - * Carbon::parse('2019-02-28 00:00:00.999999')->isStartOfDay(); // true - * Carbon::parse('2019-02-28 00:00:01')->isStartOfDay(); // false - * Carbon::parse('2019-02-28 00:00:00.000000')->isStartOfDay(true); // true - * Carbon::parse('2019-02-28 00:00:00.000012')->isStartOfDay(true); // false - * ``` - * - * @param bool $checkMicroseconds check time at microseconds precision - * - * @return bool - */ - public function isStartOfDay($checkMicroseconds = false); - - /** - * Returns true if the date was created using CarbonImmutable::startOfTime() - * - * @return bool - */ - public function isStartOfTime(): bool; - - /** - * Returns true if the strict mode is globally in use, false else. - * (It can be overridden in specific instances.) - * - * @return bool - */ - public static function isStrictModeEnabled(); - - /** - * Determines if the instance is today. - * - * @example - * ``` - * Carbon::today()->isToday(); // true - * Carbon::tomorrow()->isToday(); // false - * ``` - * - * @return bool - */ - public function isToday(); - - /** - * Determines if the instance is tomorrow. - * - * @example - * ``` - * Carbon::tomorrow()->isTomorrow(); // true - * Carbon::yesterday()->isTomorrow(); // false - * ``` - * - * @return bool - */ - public function isTomorrow(); - - /** - * Determines if the instance is a weekday. - * - * @example - * ``` - * Carbon::parse('2019-07-14')->isWeekday(); // false - * Carbon::parse('2019-07-15')->isWeekday(); // true - * ``` - * - * @return bool - */ - public function isWeekday(); - - /** - * Determines if the instance is a weekend day. - * - * @example - * ``` - * Carbon::parse('2019-07-14')->isWeekend(); // true - * Carbon::parse('2019-07-15')->isWeekend(); // false - * ``` - * - * @return bool - */ - public function isWeekend(); - - /** - * Determines if the instance is yesterday. - * - * @example - * ``` - * Carbon::yesterday()->isYesterday(); // true - * Carbon::tomorrow()->isYesterday(); // false - * ``` - * - * @return bool - */ - public function isYesterday(); - - /** - * Format in the current language using ISO replacement patterns. - * - * @param string $format - * @param string|null $originalFormat provide context if a chunk has been passed alone - * - * @return string - */ - public function isoFormat(string $format, ?string $originalFormat = null): string; - - /** - * Get/set the week number using given first day of week and first - * day of year included in the first week. Or use ISO format if no settings - * given. - * - * @param int|null $week - * @param int|null $dayOfWeek - * @param int|null $dayOfYear - * - * @return int|static - */ - public function isoWeek($week = null, $dayOfWeek = null, $dayOfYear = null); - - /** - * Set/get the week number of year using given first day of week and first - * day of year included in the first week. Or use ISO format if no settings - * given. - * - * @param int|null $year if null, act as a getter, if not null, set the year and return current instance. - * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday) - * @param int|null $dayOfYear first day of year included in the week #1 - * - * @return int|static - */ - public function isoWeekYear($year = null, $dayOfWeek = null, $dayOfYear = null); - - /** - * Get/set the ISO weekday from 1 (Monday) to 7 (Sunday). - * - * @param int|null $value new value for weekday if using as setter. - * - * @return static|int - */ - public function isoWeekday($value = null); - - /** - * Get the number of weeks of the current week-year using given first day of week and first - * day of year included in the first week. Or use ISO format if no settings - * given. - * - * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday) - * @param int|null $dayOfYear first day of year included in the week #1 - * - * @return int - */ - public function isoWeeksInYear($dayOfWeek = null, $dayOfYear = null); - - /** - * Prepare the object for JSON serialization. - * - * @return array|string - */ - #[ReturnTypeWillChange] - public function jsonSerialize(); - - /** - * Modify to the last occurrence of a given day of the week - * in the current month. If no dayOfWeek is provided, modify to the - * last day of the current month. Use the supplied constants - * to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int|null $dayOfWeek - * - * @return static - */ - public function lastOfMonth($dayOfWeek = null); - - /** - * Modify to the last occurrence of a given day of the week - * in the current quarter. If no dayOfWeek is provided, modify to the - * last day of the current quarter. Use the supplied constants - * to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int|null $dayOfWeek day of the week default null - * - * @return static - */ - public function lastOfQuarter($dayOfWeek = null); - - /** - * Modify to the last occurrence of a given day of the week - * in the current year. If no dayOfWeek is provided, modify to the - * last day of the current year. Use the supplied constants - * to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int|null $dayOfWeek day of the week default null - * - * @return static - */ - public function lastOfYear($dayOfWeek = null); - - /** - * Determines if the instance is less (before) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:15'); // false - * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function lessThan($date): bool; - - /** - * Determines if the instance is less (before) or equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:15'); // false - * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function lessThanOrEqualTo($date): bool; - - /** - * Get/set the locale for the current instance. - * - * @param string|null $locale - * @param string ...$fallbackLocales - * - * @return $this|string - */ - public function locale(?string $locale = null, ...$fallbackLocales); - - /** - * Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow). - * Support is considered enabled if the 3 words are translated in the given locale. - * - * @param string $locale locale ex. en - * - * @return bool - */ - public static function localeHasDiffOneDayWords($locale); - - /** - * Returns true if the given locale is internally supported and has diff syntax support (ago, from now, before, after). - * Support is considered enabled if the 4 sentences are translated in the given locale. - * - * @param string $locale locale ex. en - * - * @return bool - */ - public static function localeHasDiffSyntax($locale); - - /** - * Returns true if the given locale is internally supported and has words for 2-days diff (before yesterday, after tomorrow). - * Support is considered enabled if the 2 words are translated in the given locale. - * - * @param string $locale locale ex. en - * - * @return bool - */ - public static function localeHasDiffTwoDayWords($locale); - - /** - * Returns true if the given locale is internally supported and has period syntax support (X times, every X, from X, to X). - * Support is considered enabled if the 4 sentences are translated in the given locale. - * - * @param string $locale locale ex. en - * - * @return bool - */ - public static function localeHasPeriodSyntax($locale); - - /** - * Returns true if the given locale is internally supported and has short-units support. - * Support is considered enabled if either year, day or hour has a short variant translated. - * - * @param string $locale locale ex. en - * - * @return bool - */ - public static function localeHasShortUnits($locale); - - /** - * Determines if the instance is less (before) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:15'); // false - * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see lessThan() - * - * @return bool - */ - public function lt($date): bool; - - /** - * Determines if the instance is less (before) or equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:15'); // false - * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see lessThanOrEqualTo() - * - * @return bool - */ - public function lte($date): bool; - - /** - * Register a custom macro. - * - * @example - * ``` - * $userSettings = [ - * 'locale' => 'pt', - * 'timezone' => 'America/Sao_Paulo', - * ]; - * Carbon::macro('userFormat', function () use ($userSettings) { - * return $this->copy()->locale($userSettings['locale'])->tz($userSettings['timezone'])->calendar(); - * }); - * echo Carbon::yesterday()->hours(11)->userFormat(); - * ``` - * - * @param string $name - * @param object|callable $macro - * - * @return void - */ - public static function macro($name, $macro); - - /** - * Make a Carbon instance from given variable if possible. - * - * Always return a new instance. Parse only strings and only these likely to be dates (skip intervals - * and recurrences). Throw an exception for invalid format, but otherwise return null. - * - * @param mixed $var - * - * @throws InvalidFormatException - * - * @return static|null - */ - public static function make($var); - - /** - * Get the maximum instance between a given instance (default now) and the current instance. - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return static - */ - public function max($date = null); - - /** - * Create a Carbon instance for the greatest supported date. - * - * @return static - */ - public static function maxValue(); - - /** - * Get the maximum instance between a given instance (default now) and the current instance. - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see max() - * - * @return static - */ - public function maximum($date = null); - - /** - * Return the meridiem of the current time in the current locale. - * - * @param bool $isLower if true, returns lowercase variant if available in the current locale. - * - * @return string - */ - public function meridiem(bool $isLower = false): string; - - /** - * Modify to midday, default to self::$midDayAt - * - * @return static - */ - public function midDay(); - - /** - * Get the minimum instance between a given instance (default now) and the current instance. - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return static - */ - public function min($date = null); - - /** - * Create a Carbon instance for the lowest supported date. - * - * @return static - */ - public static function minValue(); - - /** - * Get the minimum instance between a given instance (default now) and the current instance. - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see min() - * - * @return static - */ - public function minimum($date = null); - - /** - * Mix another object into the class. - * - * @example - * ``` - * Carbon::mixin(new class { - * public function addMoon() { - * return function () { - * return $this->addDays(30); - * }; - * } - * public function subMoon() { - * return function () { - * return $this->subDays(30); - * }; - * } - * }); - * $fullMoon = Carbon::create('2018-12-22'); - * $nextFullMoon = $fullMoon->addMoon(); - * $blackMoon = Carbon::create('2019-01-06'); - * $previousBlackMoon = $blackMoon->subMoon(); - * echo "$nextFullMoon\n"; - * echo "$previousBlackMoon\n"; - * ``` - * - * @param object|string $mixin - * - * @throws ReflectionException - * - * @return void - */ - public static function mixin($mixin); - - /** - * Calls \DateTime::modify if mutable or \DateTimeImmutable::modify else. - * - * @see https://php.net/manual/en/datetime.modify.php - * - * @return static|false - */ - #[ReturnTypeWillChange] - public function modify($modify); - - /** - * Determines if the instance is not equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->ne(Carbon::parse('2018-07-25 12:45:16')); // false - * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see notEqualTo() - * - * @return bool - */ - public function ne($date): bool; - - /** - * Modify to the next occurrence of a given modifier such as a day of - * the week. If no modifier is provided, modify to the next occurrence - * of the current day of the week. Use the supplied constants - * to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param string|int|null $modifier - * - * @return static|false - */ - public function next($modifier = null); - - /** - * Go forward to the next weekday. - * - * @return static - */ - public function nextWeekday(); - - /** - * Go forward to the next weekend day. - * - * @return static - */ - public function nextWeekendDay(); - - /** - * Determines if the instance is not equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->notEqualTo(Carbon::parse('2018-07-25 12:45:16')); // false - * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function notEqualTo($date): bool; - - /** - * Get a Carbon instance for the current date and time. - * - * @param DateTimeZone|string|null $tz - * - * @return static - */ - public static function now($tz = null); - - /** - * Returns a present instance in the same timezone. - * - * @return static - */ - public function nowWithSameTz(); - - /** - * Modify to the given occurrence of a given day of the week - * in the current month. If the calculated occurrence is outside the scope - * of the current month, then return false and no modifications are made. - * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int $nth - * @param int $dayOfWeek - * - * @return mixed - */ - public function nthOfMonth($nth, $dayOfWeek); - - /** - * Modify to the given occurrence of a given day of the week - * in the current quarter. If the calculated occurrence is outside the scope - * of the current quarter, then return false and no modifications are made. - * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int $nth - * @param int $dayOfWeek - * - * @return mixed - */ - public function nthOfQuarter($nth, $dayOfWeek); - - /** - * Modify to the given occurrence of a given day of the week - * in the current year. If the calculated occurrence is outside the scope - * of the current year, then return false and no modifications are made. - * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int $nth - * @param int $dayOfWeek - * - * @return mixed - */ - public function nthOfYear($nth, $dayOfWeek); - - /** - * Return a property with its ordinal. - * - * @param string $key - * @param string|null $period - * - * @return string - */ - public function ordinal(string $key, ?string $period = null): string; - - /** - * Create a carbon instance from a string. - * - * This is an alias for the constructor that allows better fluent syntax - * as it allows you to do Carbon::parse('Monday next week')->fn() rather - * than (new Carbon('Monday next week'))->fn(). - * - * @param string|DateTimeInterface|null $time - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - * - * @return static - */ - public static function parse($time = null, $tz = null); - - /** - * Create a carbon instance from a localized string (in French, Japanese, Arabic, etc.). - * - * @param string $time date/time string in the given language (may also contain English). - * @param string|null $locale if locale is null or not specified, current global locale will be - * used instead. - * @param DateTimeZone|string|null $tz optional timezone for the new instance. - * - * @throws InvalidFormatException - * - * @return static - */ - public static function parseFromLocale($time, $locale = null, $tz = null); - - /** - * Returns standardized plural of a given singular/plural unit name (in English). - * - * @param string $unit - * - * @return string - */ - public static function pluralUnit(string $unit): string; - - /** - * Modify to the previous occurrence of a given modifier such as a day of - * the week. If no dayOfWeek is provided, modify to the previous occurrence - * of the current day of the week. Use the supplied constants - * to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param string|int|null $modifier - * - * @return static|false - */ - public function previous($modifier = null); - - /** - * Go backward to the previous weekday. - * - * @return static - */ - public function previousWeekday(); - - /** - * Go backward to the previous weekend day. - * - * @return static - */ - public function previousWeekendDay(); - - /** - * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval). - * - * @param \DateTimeInterface|Carbon|CarbonImmutable|null $end period end date - * @param int|\DateInterval|string|null $interval period default interval or number of the given $unit - * @param string|null $unit if specified, $interval must be an integer - * - * @return CarbonPeriod - */ - public function range($end = null, $interval = null, $unit = null); - - /** - * Call native PHP DateTime/DateTimeImmutable add() method. - * - * @param DateInterval $interval - * - * @return static - */ - public function rawAdd(DateInterval $interval); - - /** - * Create a Carbon instance from a specific format. - * - * @param string $format Datetime format - * @param string $time - * @param DateTimeZone|string|false|null $tz - * - * @throws InvalidFormatException - * - * @return static|false - */ - public static function rawCreateFromFormat($format, $time, $tz = null); - - /** - * @see https://php.net/manual/en/datetime.format.php - * - * @param string $format - * - * @return string - */ - public function rawFormat($format); - - /** - * Create a carbon instance from a string. - * - * This is an alias for the constructor that allows better fluent syntax - * as it allows you to do Carbon::parse('Monday next week')->fn() rather - * than (new Carbon('Monday next week'))->fn(). - * - * @param string|DateTimeInterface|null $time - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - * - * @return static - */ - public static function rawParse($time = null, $tz = null); - - /** - * Call native PHP DateTime/DateTimeImmutable sub() method. - * - * @param DateInterval $interval - * - * @return static - */ - public function rawSub(DateInterval $interval); - - /** - * Remove all macros and generic macros. - */ - public static function resetMacros(); - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @see settings - * - * Reset the month overflow behavior. - * - * @return void - */ - public static function resetMonthsOverflow(); - - /** - * Reset the format used to the default when type juggling a Carbon instance to a string - * - * @return void - */ - public static function resetToStringFormat(); - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @see settings - * - * Reset the month overflow behavior. - * - * @return void - */ - public static function resetYearsOverflow(); - - /** - * Round the current instance second with given precision if specified. - * - * @param float|int|string|\DateInterval|null $precision - * @param string $function - * - * @return CarbonInterface - */ - public function round($precision = 1, $function = 'round'); - - /** - * Round the current instance at the given unit with given precision if specified and the given function. - * - * @param string $unit - * @param float|int $precision - * @param string $function - * - * @return CarbonInterface - */ - public function roundUnit($unit, $precision = 1, $function = 'round'); - - /** - * Round the current instance week. - * - * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week - * - * @return CarbonInterface - */ - public function roundWeek($weekStartsAt = null); - - /** - * The number of seconds since midnight. - * - * @return int - */ - public function secondsSinceMidnight(); - - /** - * The number of seconds until 23:59:59. - * - * @return int - */ - public function secondsUntilEndOfDay(); - - /** - * Return a serialized string of the instance. - * - * @return string - */ - public function serialize(); - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather transform Carbon object before the serialization. - * - * JSON serialize all Carbon instances using the given callback. - * - * @param callable $callback - * - * @return void - */ - public static function serializeUsing($callback); - - /** - * Set a part of the Carbon object - * - * @param string|array $name - * @param string|int|DateTimeZone $value - * - * @throws ImmutableException|UnknownSetterException - * - * @return $this - */ - public function set($name, $value = null); - - /** - * Set the date with gregorian year, month and day numbers. - * - * @see https://php.net/manual/en/datetime.setdate.php - * - * @param int $year - * @param int $month - * @param int $day - * - * @return static - */ - #[ReturnTypeWillChange] - public function setDate($year, $month, $day); - - /** - * Set the year, month, and date for this instance to that of the passed instance. - * - * @param Carbon|DateTimeInterface $date now if null - * - * @return static - */ - public function setDateFrom($date = null); - - /** - * Set the date and time all together. - * - * @param int $year - * @param int $month - * @param int $day - * @param int $hour - * @param int $minute - * @param int $second - * @param int $microseconds - * - * @return static - */ - public function setDateTime($year, $month, $day, $hour, $minute, $second = 0, $microseconds = 0); - - /** - * Set the date and time for this instance to that of the passed instance. - * - * @param Carbon|DateTimeInterface $date - * - * @return static - */ - public function setDateTimeFrom($date = null); - - /** - * Set the day (keeping the current time) to the start of the week + the number of days passed as the first - * parameter. First day of week is driven by the locale unless explicitly set with the second parameter. - * - * @param int $numberOfDays number of days to add after the start of the current week - * @param int|null $weekStartsAt optional start allow you to specify the day of week to use to start the week, - * if not provided, start of week is inferred from the locale - * (Sunday for en_US, Monday for de_DE, etc.) - * - * @return static - */ - public function setDaysFromStartOfWeek(int $numberOfDays, ?int $weekStartsAt = null); - - /** - * Set the fallback locale. - * - * @see https://symfony.com/doc/current/components/translation.html#fallback-locales - * - * @param string $locale - */ - public static function setFallbackLocale($locale); - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * @see settings - * - * @param int $humanDiffOptions - */ - public static function setHumanDiffOptions($humanDiffOptions); - - /** - * Set a date according to the ISO 8601 standard - using weeks and day offsets rather than specific dates. - * - * @see https://php.net/manual/en/datetime.setisodate.php - * - * @param int $year - * @param int $week - * @param int $day - * - * @return static - */ - #[ReturnTypeWillChange] - public function setISODate($year, $week, $day = 1); - - /** - * Set the translator for the current instance. - * - * @param \Symfony\Component\Translation\TranslatorInterface $translator - * - * @return $this - */ - public function setLocalTranslator(TranslatorInterface $translator); - - /** - * Set the current translator locale and indicate if the source locale file exists. - * Pass 'auto' as locale to use closest language from the current LC_TIME locale. - * - * @param string $locale locale ex. en - * - * @return bool - */ - public static function setLocale($locale); - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather consider mid-day is always 12pm, then if you need to test if it's an other - * hour, test it explicitly: - * $date->format('G') == 13 - * or to set explicitly to a given hour: - * $date->setTime(13, 0, 0, 0) - * - * Set midday/noon hour - * - * @param int $hour midday hour - * - * @return void - */ - public static function setMidDayAt($hour); - - /** - * Set a Carbon instance (real or mock) to be returned when a "now" - * instance is created. The provided instance will be returned - * specifically under the following conditions: - * - A call to the static now() method, ex. Carbon::now() - * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null) - * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now') - * - When a string containing the desired time is passed to Carbon::parse(). - * - * Note the timezone parameter was left out of the examples above and - * has no affect as the mock value will be returned regardless of its value. - * - * Only the moment is mocked with setTestNow(), the timezone will still be the one passed - * as parameter of date_default_timezone_get() as a fallback (see setTestNowAndTimezone()). - * - * To clear the test instance call this method using the default - * parameter of null. - * - * /!\ Use this method for unit tests only. - * - * @param DateTimeInterface|Closure|static|string|false|null $testNow real or mock Carbon instance - */ - public static function setTestNow($testNow = null); - - /** - * Set a Carbon instance (real or mock) to be returned when a "now" - * instance is created. The provided instance will be returned - * specifically under the following conditions: - * - A call to the static now() method, ex. Carbon::now() - * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null) - * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now') - * - When a string containing the desired time is passed to Carbon::parse(). - * - * It will also align default timezone (e.g. call date_default_timezone_set()) with - * the second argument or if null, with the timezone of the given date object. - * - * To clear the test instance call this method using the default - * parameter of null. - * - * /!\ Use this method for unit tests only. - * - * @param DateTimeInterface|Closure|static|string|false|null $testNow real or mock Carbon instance - */ - public static function setTestNowAndTimezone($testNow = null, $tz = null); - - /** - * Resets the current time of the DateTime object to a different time. - * - * @see https://php.net/manual/en/datetime.settime.php - * - * @param int $hour - * @param int $minute - * @param int $second - * @param int $microseconds - * - * @return static - */ - #[ReturnTypeWillChange] - public function setTime($hour, $minute, $second = 0, $microseconds = 0); - - /** - * Set the hour, minute, second and microseconds for this instance to that of the passed instance. - * - * @param Carbon|DateTimeInterface $date now if null - * - * @return static - */ - public function setTimeFrom($date = null); - - /** - * Set the time by time string. - * - * @param string $time - * - * @return static - */ - public function setTimeFromTimeString($time); - - /** - * Set the instance's timestamp. - * - * Timestamp input can be given as int, float or a string containing one or more numbers. - * - * @param float|int|string $unixTimestamp - * - * @return static - */ - #[ReturnTypeWillChange] - public function setTimestamp($unixTimestamp); - - /** - * Set the instance's timezone from a string or object. - * - * @param DateTimeZone|string $value - * - * @return static - */ - #[ReturnTypeWillChange] - public function setTimezone($value); - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather let Carbon object being cast to string with DEFAULT_TO_STRING_FORMAT, and - * use other method or custom format passed to format() method if you need to dump another string - * format. - * - * Set the default format used when type juggling a Carbon instance to a string. - * - * @param string|Closure|null $format - * - * @return void - */ - public static function setToStringFormat($format); - - /** - * Set the default translator instance to use. - * - * @param \Symfony\Component\Translation\TranslatorInterface $translator - * - * @return void - */ - public static function setTranslator(TranslatorInterface $translator); - - /** - * Set specified unit to new given value. - * - * @param string $unit year, month, day, hour, minute, second or microsecond - * @param int $value new value for given unit - * - * @return static - */ - public function setUnit($unit, $value = null); - - /** - * Set any unit to a new value without overflowing current other unit given. - * - * @param string $valueUnit unit name to modify - * @param int $value new value for the input unit - * @param string $overflowUnit unit name to not overflow - * - * @return static - */ - public function setUnitNoOverflow($valueUnit, $value, $overflowUnit); - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use UTF-8 language packages on every machine. - * - * Set if UTF8 will be used for localized date/time. - * - * @param bool $utf8 - */ - public static function setUtf8($utf8); - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * Use $weekStartsAt optional parameter instead when using startOfWeek, floorWeek, ceilWeek - * or roundWeek method. You can also use the 'first_day_of_week' locale setting to change the - * start of week according to current locale selected and implicitly the end of week. - * - * Set the last day of week - * - * @param int|string $day week end day (or 'auto' to get the day before the first day of week - * from Carbon::getLocale() culture). - * - * @return void - */ - public static function setWeekEndsAt($day); - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * Use $weekEndsAt optional parameter instead when using endOfWeek method. You can also use the - * 'first_day_of_week' locale setting to change the start of week according to current locale - * selected and implicitly the end of week. - * - * Set the first day of week - * - * @param int|string $day week start day (or 'auto' to get the first day of week from Carbon::getLocale() culture). - * - * @return void - */ - public static function setWeekStartsAt($day); - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather consider week-end is always saturday and sunday, and if you have some custom - * week-end days to handle, give to those days an other name and create a macro for them: - * - * ``` - * Carbon::macro('isDayOff', function ($date) { - * return $date->isSunday() || $date->isMonday(); - * }); - * Carbon::macro('isNotDayOff', function ($date) { - * return !$date->isDayOff(); - * }); - * if ($someDate->isDayOff()) ... - * if ($someDate->isNotDayOff()) ... - * // Add 5 not-off days - * $count = 5; - * while ($someDate->isDayOff() || ($count-- > 0)) { - * $someDate->addDay(); - * } - * ``` - * - * Set weekend days - * - * @param array $days - * - * @return void - */ - public static function setWeekendDays($days); - - /** - * Set specific options. - * - strictMode: true|false|null - * - monthOverflow: true|false|null - * - yearOverflow: true|false|null - * - humanDiffOptions: int|null - * - toStringFormat: string|Closure|null - * - toJsonFormat: string|Closure|null - * - locale: string|null - * - timezone: \DateTimeZone|string|int|null - * - macros: array|null - * - genericMacros: array|null - * - * @param array $settings - * - * @return $this|static - */ - public function settings(array $settings); - - /** - * Set the instance's timezone from a string or object and add/subtract the offset difference. - * - * @param DateTimeZone|string $value - * - * @return static - */ - public function shiftTimezone($value); - - /** - * Get the month overflow global behavior (can be overridden in specific instances). - * - * @return bool - */ - public static function shouldOverflowMonths(); - - /** - * Get the month overflow global behavior (can be overridden in specific instances). - * - * @return bool - */ - public static function shouldOverflowYears(); - - /** - * @alias diffForHumans - * - * Get the difference in a human readable format in the current locale from current instance to an other - * instance given (or now if null given). - */ - public function since($other = null, $syntax = null, $short = false, $parts = 1, $options = null); - - /** - * Returns standardized singular of a given singular/plural unit name (in English). - * - * @param string $unit - * - * @return string - */ - public static function singularUnit(string $unit): string; - - /** - * Modify to start of current given unit. - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16.334455') - * ->startOf('month') - * ->endOf('week', Carbon::FRIDAY); - * ``` - * - * @param string $unit - * @param array $params - * - * @return static - */ - public function startOf($unit, ...$params); - - /** - * Resets the date to the first day of the century and the time to 00:00:00 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfCentury(); - * ``` - * - * @return static - */ - public function startOfCentury(); - - /** - * Resets the time to 00:00:00 start of day - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfDay(); - * ``` - * - * @return static - */ - public function startOfDay(); - - /** - * Resets the date to the first day of the decade and the time to 00:00:00 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfDecade(); - * ``` - * - * @return static - */ - public function startOfDecade(); - - /** - * Modify to start of current hour, minutes and seconds become 0 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfHour(); - * ``` - * - * @return static - */ - public function startOfHour(); - - /** - * Resets the date to the first day of the millennium and the time to 00:00:00 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfMillennium(); - * ``` - * - * @return static - */ - public function startOfMillennium(); - - /** - * Modify to start of current minute, seconds become 0 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfMinute(); - * ``` - * - * @return static - */ - public function startOfMinute(); - - /** - * Resets the date to the first day of the month and the time to 00:00:00 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfMonth(); - * ``` - * - * @return static - */ - public function startOfMonth(); - - /** - * Resets the date to the first day of the quarter and the time to 00:00:00 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfQuarter(); - * ``` - * - * @return static - */ - public function startOfQuarter(); - - /** - * Modify to start of current second, microseconds become 0 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16.334455') - * ->startOfSecond() - * ->format('H:i:s.u'); - * ``` - * - * @return static - */ - public function startOfSecond(); - - /** - * Resets the date to the first day of week (defined in $weekStartsAt) and the time to 00:00:00 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek() . "\n"; - * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->startOfWeek() . "\n"; - * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek(Carbon::SUNDAY) . "\n"; - * ``` - * - * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week - * - * @return static - */ - public function startOfWeek($weekStartsAt = null); - - /** - * Resets the date to the first day of the year and the time to 00:00:00 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfYear(); - * ``` - * - * @return static - */ - public function startOfYear(); - - /** - * Subtract given units or interval to the current instance. - * - * @example $date->sub('hour', 3) - * @example $date->sub(15, 'days') - * @example $date->sub(CarbonInterval::days(4)) - * - * @param string|DateInterval|Closure|CarbonConverterInterface $unit - * @param int $value - * @param bool|null $overflow - * - * @return static - */ - #[ReturnTypeWillChange] - public function sub($unit, $value = 1, $overflow = null); - - public function subRealUnit($unit, $value = 1); - - /** - * Subtract given units to the current instance. - * - * @param string $unit - * @param int $value - * @param bool|null $overflow - * - * @return static - */ - public function subUnit($unit, $value = 1, $overflow = null); - - /** - * Subtract any unit to a new value without overflowing current other unit given. - * - * @param string $valueUnit unit name to modify - * @param int $value amount to subtract to the input unit - * @param string $overflowUnit unit name to not overflow - * - * @return static - */ - public function subUnitNoOverflow($valueUnit, $value, $overflowUnit); - - /** - * Subtract given units or interval to the current instance. - * - * @see sub() - * - * @param string|DateInterval $unit - * @param int $value - * @param bool|null $overflow - * - * @return static - */ - public function subtract($unit, $value = 1, $overflow = null); - - /** - * Get the difference in a human readable format in the current locale from current instance to an other - * instance given (or now if null given). - * - * @return string - */ - public function timespan($other = null, $timezone = null); - - /** - * Set the instance's timestamp. - * - * Timestamp input can be given as int, float or a string containing one or more numbers. - * - * @param float|int|string $unixTimestamp - * - * @return static - */ - public function timestamp($unixTimestamp); - - /** - * @alias setTimezone - * - * @param DateTimeZone|string $value - * - * @return static - */ - public function timezone($value); - - /** - * Get the difference in a human readable format in the current locale from an other - * instance given (or now if null given) to current instance. - * - * When comparing a value in the past to default now: - * 1 hour from now - * 5 months from now - * - * When comparing a value in the future to default now: - * 1 hour ago - * 5 months ago - * - * When comparing a value in the past to another value: - * 1 hour after - * 5 months after - * - * When comparing a value in the future to another value: - * 1 hour before - * 5 months before - * - * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below; - * if null passed, now will be used as comparison reference; - * if any other type, it will be converted to date and used as reference. - * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: - * - 'syntax' entry (see below) - * - 'short' entry (see below) - * - 'parts' entry (see below) - * - 'options' entry (see below) - * - 'join' entry determines how to join multiple parts of the string - * ` - if $join is a string, it's used as a joiner glue - * ` - if $join is a callable/closure, it get the list of string and should return a string - * ` - if $join is an array, the first item will be the default glue, and the second item - * ` will be used instead of the glue for the last item - * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) - * ` - if $join is missing, a space will be used as glue - * - 'other' entry (see above) - * if int passed, it add modifiers: - * Possible values: - * - CarbonInterface::DIFF_ABSOLUTE no modifiers - * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier - * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier - * Default value: CarbonInterface::DIFF_ABSOLUTE - * @param bool $short displays short format of time units - * @param int $parts maximum number of parts to display (default value: 1: single unit) - * @param int $options human diff options - * - * @return string - */ - public function to($other = null, $syntax = null, $short = false, $parts = 1, $options = null); - - /** - * Get default array representation. - * - * @example - * ``` - * var_dump(Carbon::now()->toArray()); - * ``` - * - * @return array - */ - public function toArray(); - - /** - * Format the instance as ATOM - * - * @example - * ``` - * echo Carbon::now()->toAtomString(); - * ``` - * - * @return string - */ - public function toAtomString(); - - /** - * Format the instance as COOKIE - * - * @example - * ``` - * echo Carbon::now()->toCookieString(); - * ``` - * - * @return string - */ - public function toCookieString(); - - /** - * @alias toDateTime - * - * Return native DateTime PHP object matching the current instance. - * - * @example - * ``` - * var_dump(Carbon::now()->toDate()); - * ``` - * - * @return DateTime - */ - public function toDate(); - - /** - * Format the instance as date - * - * @example - * ``` - * echo Carbon::now()->toDateString(); - * ``` - * - * @return string - */ - public function toDateString(); - - /** - * Return native DateTime PHP object matching the current instance. - * - * @example - * ``` - * var_dump(Carbon::now()->toDateTime()); - * ``` - * - * @return DateTime - */ - public function toDateTime(); - - /** - * Return native toDateTimeImmutable PHP object matching the current instance. - * - * @example - * ``` - * var_dump(Carbon::now()->toDateTimeImmutable()); - * ``` - * - * @return DateTimeImmutable - */ - public function toDateTimeImmutable(); - - /** - * Format the instance as date and time T-separated with no timezone - * - * @example - * ``` - * echo Carbon::now()->toDateTimeLocalString(); - * echo "\n"; - * echo Carbon::now()->toDateTimeLocalString('minute'); // You can specify precision among: minute, second, millisecond and microsecond - * ``` - * - * @param string $unitPrecision - * - * @return string - */ - public function toDateTimeLocalString($unitPrecision = 'second'); - - /** - * Format the instance as date and time - * - * @example - * ``` - * echo Carbon::now()->toDateTimeString(); - * ``` - * - * @param string $unitPrecision - * - * @return string - */ - public function toDateTimeString($unitPrecision = 'second'); - - /** - * Format the instance with day, date and time - * - * @example - * ``` - * echo Carbon::now()->toDayDateTimeString(); - * ``` - * - * @return string - */ - public function toDayDateTimeString(); - - /** - * Format the instance as a readable date - * - * @example - * ``` - * echo Carbon::now()->toFormattedDateString(); - * ``` - * - * @return string - */ - public function toFormattedDateString(); - - /** - * Format the instance with the day, and a readable date - * - * @example - * ``` - * echo Carbon::now()->toFormattedDayDateString(); - * ``` - * - * @return string - */ - public function toFormattedDayDateString(): string; - - /** - * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z, if $keepOffset truthy, offset will be kept: - * 1977-04-22T01:00:00-05:00). - * - * @example - * ``` - * echo Carbon::now('America/Toronto')->toISOString() . "\n"; - * echo Carbon::now('America/Toronto')->toISOString(true) . "\n"; - * ``` - * - * @param bool $keepOffset Pass true to keep the date offset. Else forced to UTC. - * - * @return null|string - */ - public function toISOString($keepOffset = false); - - /** - * Return a immutable copy of the instance. - * - * @return CarbonImmutable - */ - public function toImmutable(); - - /** - * Format the instance as ISO8601 - * - * @example - * ``` - * echo Carbon::now()->toIso8601String(); - * ``` - * - * @return string - */ - public function toIso8601String(); - - /** - * Convert the instance to UTC and return as Zulu ISO8601 - * - * @example - * ``` - * echo Carbon::now()->toIso8601ZuluString(); - * ``` - * - * @param string $unitPrecision - * - * @return string - */ - public function toIso8601ZuluString($unitPrecision = 'second'); - - /** - * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z) with UTC timezone. - * - * @example - * ``` - * echo Carbon::now('America/Toronto')->toJSON(); - * ``` - * - * @return null|string - */ - public function toJSON(); - - /** - * Return a mutable copy of the instance. - * - * @return Carbon - */ - public function toMutable(); - - /** - * Get the difference in a human readable format in the current locale from an other - * instance given to now - * - * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: - * - 'syntax' entry (see below) - * - 'short' entry (see below) - * - 'parts' entry (see below) - * - 'options' entry (see below) - * - 'join' entry determines how to join multiple parts of the string - * ` - if $join is a string, it's used as a joiner glue - * ` - if $join is a callable/closure, it get the list of string and should return a string - * ` - if $join is an array, the first item will be the default glue, and the second item - * ` will be used instead of the glue for the last item - * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) - * ` - if $join is missing, a space will be used as glue - * if int passed, it add modifiers: - * Possible values: - * - CarbonInterface::DIFF_ABSOLUTE no modifiers - * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier - * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier - * Default value: CarbonInterface::DIFF_ABSOLUTE - * @param bool $short displays short format of time units - * @param int $parts maximum number of parts to display (default value: 1: single part) - * @param int $options human diff options - * - * @return string - */ - public function toNow($syntax = null, $short = false, $parts = 1, $options = null); - - /** - * Get default object representation. - * - * @example - * ``` - * var_dump(Carbon::now()->toObject()); - * ``` - * - * @return object - */ - public function toObject(); - - /** - * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval). - * - * @param \DateTimeInterface|Carbon|CarbonImmutable|int|null $end period end date or recurrences count if int - * @param int|\DateInterval|string|null $interval period default interval or number of the given $unit - * @param string|null $unit if specified, $interval must be an integer - * - * @return CarbonPeriod - */ - public function toPeriod($end = null, $interval = null, $unit = null); - - /** - * Format the instance as RFC1036 - * - * @example - * ``` - * echo Carbon::now()->toRfc1036String(); - * ``` - * - * @return string - */ - public function toRfc1036String(); - - /** - * Format the instance as RFC1123 - * - * @example - * ``` - * echo Carbon::now()->toRfc1123String(); - * ``` - * - * @return string - */ - public function toRfc1123String(); - - /** - * Format the instance as RFC2822 - * - * @example - * ``` - * echo Carbon::now()->toRfc2822String(); - * ``` - * - * @return string - */ - public function toRfc2822String(); - - /** - * Format the instance as RFC3339 - * - * @param bool $extended - * - * @example - * ``` - * echo Carbon::now()->toRfc3339String() . "\n"; - * echo Carbon::now()->toRfc3339String(true) . "\n"; - * ``` - * - * @return string - */ - public function toRfc3339String($extended = false); - - /** - * Format the instance as RFC7231 - * - * @example - * ``` - * echo Carbon::now()->toRfc7231String(); - * ``` - * - * @return string - */ - public function toRfc7231String(); - - /** - * Format the instance as RFC822 - * - * @example - * ``` - * echo Carbon::now()->toRfc822String(); - * ``` - * - * @return string - */ - public function toRfc822String(); - - /** - * Format the instance as RFC850 - * - * @example - * ``` - * echo Carbon::now()->toRfc850String(); - * ``` - * - * @return string - */ - public function toRfc850String(); - - /** - * Format the instance as RSS - * - * @example - * ``` - * echo Carbon::now()->toRssString(); - * ``` - * - * @return string - */ - public function toRssString(); - - /** - * Returns english human readable complete date string. - * - * @example - * ``` - * echo Carbon::now()->toString(); - * ``` - * - * @return string - */ - public function toString(); - - /** - * Format the instance as time - * - * @example - * ``` - * echo Carbon::now()->toTimeString(); - * ``` - * - * @param string $unitPrecision - * - * @return string - */ - public function toTimeString($unitPrecision = 'second'); - - /** - * Format the instance as W3C - * - * @example - * ``` - * echo Carbon::now()->toW3cString(); - * ``` - * - * @return string - */ - public function toW3cString(); - - /** - * Create a Carbon instance for today. - * - * @param DateTimeZone|string|null $tz - * - * @return static - */ - public static function today($tz = null); - - /** - * Create a Carbon instance for tomorrow. - * - * @param DateTimeZone|string|null $tz - * - * @return static - */ - public static function tomorrow($tz = null); - - /** - * Translate using translation string or callback available. - * - * @param string $key - * @param array $parameters - * @param string|int|float|null $number - * @param \Symfony\Component\Translation\TranslatorInterface|null $translator - * @param bool $altNumbers - * - * @return string - */ - public function translate(string $key, array $parameters = [], $number = null, ?TranslatorInterface $translator = null, bool $altNumbers = false): string; - - /** - * Returns the alternative number for a given integer if available in the current locale. - * - * @param int $number - * - * @return string - */ - public function translateNumber(int $number): string; - - /** - * Translate a time string from a locale to an other. - * - * @param string $timeString date/time/duration string to translate (may also contain English) - * @param string|null $from input locale of the $timeString parameter (`Carbon::getLocale()` by default) - * @param string|null $to output locale of the result returned (`"en"` by default) - * @param int $mode specify what to translate with options: - * - self::TRANSLATE_ALL (default) - * - CarbonInterface::TRANSLATE_MONTHS - * - CarbonInterface::TRANSLATE_DAYS - * - CarbonInterface::TRANSLATE_UNITS - * - CarbonInterface::TRANSLATE_MERIDIEM - * You can use pipe to group: CarbonInterface::TRANSLATE_MONTHS | CarbonInterface::TRANSLATE_DAYS - * - * @return string - */ - public static function translateTimeString($timeString, $from = null, $to = null, $mode = self::TRANSLATE_ALL); - - /** - * Translate a time string from the current locale (`$date->locale()`) to an other. - * - * @param string $timeString time string to translate - * @param string|null $to output locale of the result returned ("en" by default) - * - * @return string - */ - public function translateTimeStringTo($timeString, $to = null); - - /** - * Translate using translation string or callback available. - * - * @param \Symfony\Component\Translation\TranslatorInterface $translator - * @param string $key - * @param array $parameters - * @param null $number - * - * @return string - */ - public static function translateWith(TranslatorInterface $translator, string $key, array $parameters = [], $number = null): string; - - /** - * Format as ->format() do (using date replacements patterns from https://php.net/manual/en/function.date.php) - * but translate words whenever possible (months, day names, etc.) using the current locale. - * - * @param string $format - * - * @return string - */ - public function translatedFormat(string $format): string; - - /** - * Set the timezone or returns the timezone name if no arguments passed. - * - * @param DateTimeZone|string $value - * - * @return static|string - */ - public function tz($value = null); - - /** - * @alias getTimestamp - * - * Returns the UNIX timestamp for the current date. - * - * @return int - */ - public function unix(); - - /** - * @alias to - * - * Get the difference in a human readable format in the current locale from an other - * instance given (or now if null given) to current instance. - * - * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below; - * if null passed, now will be used as comparison reference; - * if any other type, it will be converted to date and used as reference. - * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: - * - 'syntax' entry (see below) - * - 'short' entry (see below) - * - 'parts' entry (see below) - * - 'options' entry (see below) - * - 'join' entry determines how to join multiple parts of the string - * ` - if $join is a string, it's used as a joiner glue - * ` - if $join is a callable/closure, it get the list of string and should return a string - * ` - if $join is an array, the first item will be the default glue, and the second item - * ` will be used instead of the glue for the last item - * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) - * ` - if $join is missing, a space will be used as glue - * - 'other' entry (see above) - * if int passed, it add modifiers: - * Possible values: - * - CarbonInterface::DIFF_ABSOLUTE no modifiers - * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier - * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier - * Default value: CarbonInterface::DIFF_ABSOLUTE - * @param bool $short displays short format of time units - * @param int $parts maximum number of parts to display (default value: 1: single unit) - * @param int $options human diff options - * - * @return string - */ - public function until($other = null, $syntax = null, $short = false, $parts = 1, $options = null); - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @see settings - * - * Indicates if months should be calculated with overflow. - * - * @param bool $monthsOverflow - * - * @return void - */ - public static function useMonthsOverflow($monthsOverflow = true); - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * @see settings - * - * Enable the strict mode (or disable with passing false). - * - * @param bool $strictModeEnabled - */ - public static function useStrictMode($strictModeEnabled = true); - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @see settings - * - * Indicates if years should be calculated with overflow. - * - * @param bool $yearsOverflow - * - * @return void - */ - public static function useYearsOverflow($yearsOverflow = true); - - /** - * Set the instance's timezone to UTC. - * - * @return static - */ - public function utc(); - - /** - * Returns the minutes offset to UTC if no arguments passed, else set the timezone with given minutes shift passed. - * - * @param int|null $minuteOffset - * - * @return int|static - */ - public function utcOffset(?int $minuteOffset = null); - - /** - * Returns the milliseconds timestamps used amongst other by Date javascript objects. - * - * @return float - */ - public function valueOf(); - - /** - * Get/set the week number using given first day of week and first - * day of year included in the first week. Or use US format if no settings - * given (Sunday / Jan 6). - * - * @param int|null $week - * @param int|null $dayOfWeek - * @param int|null $dayOfYear - * - * @return int|static - */ - public function week($week = null, $dayOfWeek = null, $dayOfYear = null); - - /** - * Set/get the week number of year using given first day of week and first - * day of year included in the first week. Or use US format if no settings - * given (Sunday / Jan 6). - * - * @param int|null $year if null, act as a getter, if not null, set the year and return current instance. - * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday) - * @param int|null $dayOfYear first day of year included in the week #1 - * - * @return int|static - */ - public function weekYear($year = null, $dayOfWeek = null, $dayOfYear = null); - - /** - * Get/set the weekday from 0 (Sunday) to 6 (Saturday). - * - * @param int|null $value new value for weekday if using as setter. - * - * @return static|int - */ - public function weekday($value = null); - - /** - * Get the number of weeks of the current week-year using given first day of week and first - * day of year included in the first week. Or use US format if no settings - * given (Sunday / Jan 6). - * - * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday) - * @param int|null $dayOfYear first day of year included in the week #1 - * - * @return int - */ - public function weeksInYear($dayOfWeek = null, $dayOfYear = null); - - /** - * Temporarily sets a static date to be used within the callback. - * Using setTestNow to set the date, executing the callback, then - * clearing the test instance. - * - * /!\ Use this method for unit tests only. - * - * @template T - * - * @param DateTimeInterface|Closure|static|string|false|null $testNow real or mock Carbon instance - * @param Closure(): T $callback - * - * @return T - */ - public static function withTestNow($testNow, $callback); - - /** - * Create a Carbon instance for yesterday. - * - * @param DateTimeZone|string|null $tz - * - * @return static - */ - public static function yesterday($tz = null); - - // -} diff --git a/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php b/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php deleted file mode 100644 index 8437c545..00000000 --- a/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php +++ /dev/null @@ -1,3054 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -use Carbon\Exceptions\BadFluentConstructorException; -use Carbon\Exceptions\BadFluentSetterException; -use Carbon\Exceptions\InvalidCastException; -use Carbon\Exceptions\InvalidIntervalException; -use Carbon\Exceptions\OutOfRangeException; -use Carbon\Exceptions\ParseErrorException; -use Carbon\Exceptions\UnitNotConfiguredException; -use Carbon\Exceptions\UnknownGetterException; -use Carbon\Exceptions\UnknownSetterException; -use Carbon\Exceptions\UnknownUnitException; -use Carbon\Traits\IntervalRounding; -use Carbon\Traits\IntervalStep; -use Carbon\Traits\MagicParameter; -use Carbon\Traits\Mixin; -use Carbon\Traits\Options; -use Carbon\Traits\ToStringFormat; -use Closure; -use DateInterval; -use DateMalformedIntervalStringException; -use DateTimeInterface; -use DateTimeZone; -use Exception; -use InvalidArgumentException; -use ReflectionException; -use ReturnTypeWillChange; -use RuntimeException; -use Throwable; - -/** - * A simple API extension for DateInterval. - * The implementation provides helpers to handle weeks but only days are saved. - * Weeks are calculated based on the total days of the current instance. - * - * @property int $years Total years of the current interval. - * @property int $months Total months of the current interval. - * @property int $weeks Total weeks of the current interval calculated from the days. - * @property int $dayz Total days of the current interval (weeks * 7 + days). - * @property int $hours Total hours of the current interval. - * @property int $minutes Total minutes of the current interval. - * @property int $seconds Total seconds of the current interval. - * @property int $microseconds Total microseconds of the current interval. - * @property int $milliseconds Total milliseconds of the current interval. - * @property int $microExcludeMilli Remaining microseconds without the milliseconds. - * @property int $dayzExcludeWeeks Total days remaining in the final week of the current instance (days % 7). - * @property int $daysExcludeWeeks alias of dayzExcludeWeeks - * @property-read float $totalYears Number of years equivalent to the interval. - * @property-read float $totalMonths Number of months equivalent to the interval. - * @property-read float $totalWeeks Number of weeks equivalent to the interval. - * @property-read float $totalDays Number of days equivalent to the interval. - * @property-read float $totalDayz Alias for totalDays. - * @property-read float $totalHours Number of hours equivalent to the interval. - * @property-read float $totalMinutes Number of minutes equivalent to the interval. - * @property-read float $totalSeconds Number of seconds equivalent to the interval. - * @property-read float $totalMilliseconds Number of milliseconds equivalent to the interval. - * @property-read float $totalMicroseconds Number of microseconds equivalent to the interval. - * @property-read string $locale locale of the current instance - * - * @method static CarbonInterval years($years = 1) Create instance specifying a number of years or modify the number of years if called on an instance. - * @method static CarbonInterval year($years = 1) Alias for years() - * @method static CarbonInterval months($months = 1) Create instance specifying a number of months or modify the number of months if called on an instance. - * @method static CarbonInterval month($months = 1) Alias for months() - * @method static CarbonInterval weeks($weeks = 1) Create instance specifying a number of weeks or modify the number of weeks if called on an instance. - * @method static CarbonInterval week($weeks = 1) Alias for weeks() - * @method static CarbonInterval days($days = 1) Create instance specifying a number of days or modify the number of days if called on an instance. - * @method static CarbonInterval dayz($days = 1) Alias for days() - * @method static CarbonInterval daysExcludeWeeks($days = 1) Create instance specifying a number of days or modify the number of days (keeping the current number of weeks) if called on an instance. - * @method static CarbonInterval dayzExcludeWeeks($days = 1) Alias for daysExcludeWeeks() - * @method static CarbonInterval day($days = 1) Alias for days() - * @method static CarbonInterval hours($hours = 1) Create instance specifying a number of hours or modify the number of hours if called on an instance. - * @method static CarbonInterval hour($hours = 1) Alias for hours() - * @method static CarbonInterval minutes($minutes = 1) Create instance specifying a number of minutes or modify the number of minutes if called on an instance. - * @method static CarbonInterval minute($minutes = 1) Alias for minutes() - * @method static CarbonInterval seconds($seconds = 1) Create instance specifying a number of seconds or modify the number of seconds if called on an instance. - * @method static CarbonInterval second($seconds = 1) Alias for seconds() - * @method static CarbonInterval milliseconds($milliseconds = 1) Create instance specifying a number of milliseconds or modify the number of milliseconds if called on an instance. - * @method static CarbonInterval millisecond($milliseconds = 1) Alias for milliseconds() - * @method static CarbonInterval microseconds($microseconds = 1) Create instance specifying a number of microseconds or modify the number of microseconds if called on an instance. - * @method static CarbonInterval microsecond($microseconds = 1) Alias for microseconds() - * @method $this addYears(int $years) Add given number of years to the current interval - * @method $this subYears(int $years) Subtract given number of years to the current interval - * @method $this addMonths(int $months) Add given number of months to the current interval - * @method $this subMonths(int $months) Subtract given number of months to the current interval - * @method $this addWeeks(int|float $weeks) Add given number of weeks to the current interval - * @method $this subWeeks(int|float $weeks) Subtract given number of weeks to the current interval - * @method $this addDays(int|float $days) Add given number of days to the current interval - * @method $this subDays(int|float $days) Subtract given number of days to the current interval - * @method $this addHours(int|float $hours) Add given number of hours to the current interval - * @method $this subHours(int|float $hours) Subtract given number of hours to the current interval - * @method $this addMinutes(int|float $minutes) Add given number of minutes to the current interval - * @method $this subMinutes(int|float $minutes) Subtract given number of minutes to the current interval - * @method $this addSeconds(int|float $seconds) Add given number of seconds to the current interval - * @method $this subSeconds(int|float $seconds) Subtract given number of seconds to the current interval - * @method $this addMilliseconds(int|float $milliseconds) Add given number of milliseconds to the current interval - * @method $this subMilliseconds(int|float $milliseconds) Subtract given number of milliseconds to the current interval - * @method $this addMicroseconds(int|float $microseconds) Add given number of microseconds to the current interval - * @method $this subMicroseconds(int|float $microseconds) Subtract given number of microseconds to the current interval - * @method $this roundYear(int|float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. - * @method $this roundYears(int|float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. - * @method $this floorYear(int|float $precision = 1) Truncate the current instance year with given precision. - * @method $this floorYears(int|float $precision = 1) Truncate the current instance year with given precision. - * @method $this ceilYear(int|float $precision = 1) Ceil the current instance year with given precision. - * @method $this ceilYears(int|float $precision = 1) Ceil the current instance year with given precision. - * @method $this roundMonth(int|float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. - * @method $this roundMonths(int|float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. - * @method $this floorMonth(int|float $precision = 1) Truncate the current instance month with given precision. - * @method $this floorMonths(int|float $precision = 1) Truncate the current instance month with given precision. - * @method $this ceilMonth(int|float $precision = 1) Ceil the current instance month with given precision. - * @method $this ceilMonths(int|float $precision = 1) Ceil the current instance month with given precision. - * @method $this roundWeek(int|float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method $this roundWeeks(int|float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method $this floorWeek(int|float $precision = 1) Truncate the current instance day with given precision. - * @method $this floorWeeks(int|float $precision = 1) Truncate the current instance day with given precision. - * @method $this ceilWeek(int|float $precision = 1) Ceil the current instance day with given precision. - * @method $this ceilWeeks(int|float $precision = 1) Ceil the current instance day with given precision. - * @method $this roundDay(int|float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method $this roundDays(int|float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method $this floorDay(int|float $precision = 1) Truncate the current instance day with given precision. - * @method $this floorDays(int|float $precision = 1) Truncate the current instance day with given precision. - * @method $this ceilDay(int|float $precision = 1) Ceil the current instance day with given precision. - * @method $this ceilDays(int|float $precision = 1) Ceil the current instance day with given precision. - * @method $this roundHour(int|float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. - * @method $this roundHours(int|float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. - * @method $this floorHour(int|float $precision = 1) Truncate the current instance hour with given precision. - * @method $this floorHours(int|float $precision = 1) Truncate the current instance hour with given precision. - * @method $this ceilHour(int|float $precision = 1) Ceil the current instance hour with given precision. - * @method $this ceilHours(int|float $precision = 1) Ceil the current instance hour with given precision. - * @method $this roundMinute(int|float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. - * @method $this roundMinutes(int|float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. - * @method $this floorMinute(int|float $precision = 1) Truncate the current instance minute with given precision. - * @method $this floorMinutes(int|float $precision = 1) Truncate the current instance minute with given precision. - * @method $this ceilMinute(int|float $precision = 1) Ceil the current instance minute with given precision. - * @method $this ceilMinutes(int|float $precision = 1) Ceil the current instance minute with given precision. - * @method $this roundSecond(int|float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. - * @method $this roundSeconds(int|float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. - * @method $this floorSecond(int|float $precision = 1) Truncate the current instance second with given precision. - * @method $this floorSeconds(int|float $precision = 1) Truncate the current instance second with given precision. - * @method $this ceilSecond(int|float $precision = 1) Ceil the current instance second with given precision. - * @method $this ceilSeconds(int|float $precision = 1) Ceil the current instance second with given precision. - * @method $this roundMillennium(int|float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. - * @method $this roundMillennia(int|float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. - * @method $this floorMillennium(int|float $precision = 1) Truncate the current instance millennium with given precision. - * @method $this floorMillennia(int|float $precision = 1) Truncate the current instance millennium with given precision. - * @method $this ceilMillennium(int|float $precision = 1) Ceil the current instance millennium with given precision. - * @method $this ceilMillennia(int|float $precision = 1) Ceil the current instance millennium with given precision. - * @method $this roundCentury(int|float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. - * @method $this roundCenturies(int|float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. - * @method $this floorCentury(int|float $precision = 1) Truncate the current instance century with given precision. - * @method $this floorCenturies(int|float $precision = 1) Truncate the current instance century with given precision. - * @method $this ceilCentury(int|float $precision = 1) Ceil the current instance century with given precision. - * @method $this ceilCenturies(int|float $precision = 1) Ceil the current instance century with given precision. - * @method $this roundDecade(int|float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. - * @method $this roundDecades(int|float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. - * @method $this floorDecade(int|float $precision = 1) Truncate the current instance decade with given precision. - * @method $this floorDecades(int|float $precision = 1) Truncate the current instance decade with given precision. - * @method $this ceilDecade(int|float $precision = 1) Ceil the current instance decade with given precision. - * @method $this ceilDecades(int|float $precision = 1) Ceil the current instance decade with given precision. - * @method $this roundQuarter(int|float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. - * @method $this roundQuarters(int|float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. - * @method $this floorQuarter(int|float $precision = 1) Truncate the current instance quarter with given precision. - * @method $this floorQuarters(int|float $precision = 1) Truncate the current instance quarter with given precision. - * @method $this ceilQuarter(int|float $precision = 1) Ceil the current instance quarter with given precision. - * @method $this ceilQuarters(int|float $precision = 1) Ceil the current instance quarter with given precision. - * @method $this roundMillisecond(int|float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. - * @method $this roundMilliseconds(int|float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. - * @method $this floorMillisecond(int|float $precision = 1) Truncate the current instance millisecond with given precision. - * @method $this floorMilliseconds(int|float $precision = 1) Truncate the current instance millisecond with given precision. - * @method $this ceilMillisecond(int|float $precision = 1) Ceil the current instance millisecond with given precision. - * @method $this ceilMilliseconds(int|float $precision = 1) Ceil the current instance millisecond with given precision. - * @method $this roundMicrosecond(int|float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. - * @method $this roundMicroseconds(int|float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. - * @method $this floorMicrosecond(int|float $precision = 1) Truncate the current instance microsecond with given precision. - * @method $this floorMicroseconds(int|float $precision = 1) Truncate the current instance microsecond with given precision. - * @method $this ceilMicrosecond(int|float $precision = 1) Ceil the current instance microsecond with given precision. - * @method $this ceilMicroseconds(int|float $precision = 1) Ceil the current instance microsecond with given precision. - */ -class CarbonInterval extends DateInterval implements CarbonConverterInterface -{ - use IntervalRounding; - use IntervalStep; - use MagicParameter; - use Mixin { - Mixin::mixin as baseMixin; - } - use Options; - use ToStringFormat; - - /** - * Interval spec period designators - */ - public const PERIOD_PREFIX = 'P'; - public const PERIOD_YEARS = 'Y'; - public const PERIOD_MONTHS = 'M'; - public const PERIOD_DAYS = 'D'; - public const PERIOD_TIME_PREFIX = 'T'; - public const PERIOD_HOURS = 'H'; - public const PERIOD_MINUTES = 'M'; - public const PERIOD_SECONDS = 'S'; - - /** - * A translator to ... er ... translate stuff - * - * @var \Symfony\Component\Translation\TranslatorInterface - */ - protected static $translator; - - /** - * @var array|null - */ - protected static $cascadeFactors; - - /** - * @var array - */ - protected static $formats = [ - 'y' => 'y', - 'Y' => 'y', - 'o' => 'y', - 'm' => 'm', - 'n' => 'm', - 'W' => 'weeks', - 'd' => 'd', - 'j' => 'd', - 'z' => 'd', - 'h' => 'h', - 'g' => 'h', - 'H' => 'h', - 'G' => 'h', - 'i' => 'i', - 's' => 's', - 'u' => 'micro', - 'v' => 'milli', - ]; - - /** - * @var array|null - */ - private static $flipCascadeFactors; - - /** - * @var bool - */ - private static $floatSettersEnabled = false; - - /** - * The registered macros. - * - * @var array - */ - protected static $macros = []; - - /** - * Timezone handler for settings() method. - * - * @var mixed - */ - protected $tzName; - - /** - * Set the instance's timezone from a string or object. - * - * @param \DateTimeZone|string $tzName - * - * @return static - */ - public function setTimezone($tzName) - { - $this->tzName = $tzName; - - return $this; - } - - /** - * @internal - * - * Set the instance's timezone from a string or object and add/subtract the offset difference. - * - * @param \DateTimeZone|string $tzName - * - * @return static - */ - public function shiftTimezone($tzName) - { - $this->tzName = $tzName; - - return $this; - } - - /** - * Mapping of units and factors for cascading. - * - * Should only be modified by changing the factors or referenced constants. - * - * @return array - */ - public static function getCascadeFactors() - { - return static::$cascadeFactors ?: static::getDefaultCascadeFactors(); - } - - protected static function getDefaultCascadeFactors(): array - { - return [ - 'milliseconds' => [Carbon::MICROSECONDS_PER_MILLISECOND, 'microseconds'], - 'seconds' => [Carbon::MILLISECONDS_PER_SECOND, 'milliseconds'], - 'minutes' => [Carbon::SECONDS_PER_MINUTE, 'seconds'], - 'hours' => [Carbon::MINUTES_PER_HOUR, 'minutes'], - 'dayz' => [Carbon::HOURS_PER_DAY, 'hours'], - 'weeks' => [Carbon::DAYS_PER_WEEK, 'dayz'], - 'months' => [Carbon::WEEKS_PER_MONTH, 'weeks'], - 'years' => [Carbon::MONTHS_PER_YEAR, 'months'], - ]; - } - - private static function standardizeUnit($unit) - { - $unit = rtrim($unit, 'sz').'s'; - - return $unit === 'days' ? 'dayz' : $unit; - } - - private static function getFlipCascadeFactors() - { - if (!self::$flipCascadeFactors) { - self::$flipCascadeFactors = []; - - foreach (static::getCascadeFactors() as $to => [$factor, $from]) { - self::$flipCascadeFactors[self::standardizeUnit($from)] = [self::standardizeUnit($to), $factor]; - } - } - - return self::$flipCascadeFactors; - } - - /** - * Set default cascading factors for ->cascade() method. - * - * @param array $cascadeFactors - */ - public static function setCascadeFactors(array $cascadeFactors) - { - self::$flipCascadeFactors = null; - static::$cascadeFactors = $cascadeFactors; - } - - /** - * This option allow you to opt-in for the Carbon 3 behavior where float - * values will no longer be cast to integer (so truncated). - * - * ⚠️ This settings will be applied globally, which mean your whole application - * code including the third-party dependencies that also may use Carbon will - * adopt the new behavior. - */ - public static function enableFloatSetters(bool $floatSettersEnabled = true): void - { - self::$floatSettersEnabled = $floatSettersEnabled; - } - - /////////////////////////////////////////////////////////////////// - //////////////////////////// CONSTRUCTORS ///////////////////////// - /////////////////////////////////////////////////////////////////// - - /** - * Create a new CarbonInterval instance. - * - * @param Closure|DateInterval|string|int|null $years - * @param int|float|null $months - * @param int|float|null $weeks - * @param int|float|null $days - * @param int|float|null $hours - * @param int|float|null $minutes - * @param int|float|null $seconds - * @param int|float|null $microseconds - * - * @throws Exception when the interval_spec (passed as $years) cannot be parsed as an interval. - */ - public function __construct($years = 1, $months = null, $weeks = null, $days = null, $hours = null, $minutes = null, $seconds = null, $microseconds = null) - { - if ($years instanceof Closure) { - $this->step = $years; - $years = null; - } - - if ($years instanceof DateInterval) { - parent::__construct(static::getDateIntervalSpec($years)); - $this->f = $years->f; - self::copyNegativeUnits($years, $this); - - return; - } - - $spec = $years; - $isStringSpec = (\is_string($spec) && !preg_match('/^[\d.]/', $spec)); - - if (!$isStringSpec || (float) $years) { - $spec = static::PERIOD_PREFIX; - - $spec .= $years > 0 ? $years.static::PERIOD_YEARS : ''; - $spec .= $months > 0 ? $months.static::PERIOD_MONTHS : ''; - - $specDays = 0; - $specDays += $weeks > 0 ? $weeks * static::getDaysPerWeek() : 0; - $specDays += $days > 0 ? $days : 0; - - $spec .= $specDays > 0 ? $specDays.static::PERIOD_DAYS : ''; - - if ($hours > 0 || $minutes > 0 || $seconds > 0) { - $spec .= static::PERIOD_TIME_PREFIX; - $spec .= $hours > 0 ? $hours.static::PERIOD_HOURS : ''; - $spec .= $minutes > 0 ? $minutes.static::PERIOD_MINUTES : ''; - $spec .= $seconds > 0 ? $seconds.static::PERIOD_SECONDS : ''; - } - - if ($spec === static::PERIOD_PREFIX) { - // Allow the zero interval. - $spec .= '0'.static::PERIOD_YEARS; - } - } - - try { - parent::__construct($spec); - } catch (Throwable $exception) { - try { - parent::__construct('PT0S'); - - if ($isStringSpec) { - if (!preg_match('/^P - (?:(?[+-]?\d*(?:\.\d+)?)Y)? - (?:(?[+-]?\d*(?:\.\d+)?)M)? - (?:(?[+-]?\d*(?:\.\d+)?)W)? - (?:(?[+-]?\d*(?:\.\d+)?)D)? - (?:T - (?:(?[+-]?\d*(?:\.\d+)?)H)? - (?:(?[+-]?\d*(?:\.\d+)?)M)? - (?:(?[+-]?\d*(?:\.\d+)?)S)? - )? - $/x', $spec, $match)) { - throw new InvalidArgumentException("Invalid duration: $spec"); - } - - $years = (float) ($match['year'] ?? 0); - $this->assertSafeForInteger('year', $years); - $months = (float) ($match['month'] ?? 0); - $this->assertSafeForInteger('month', $months); - $weeks = (float) ($match['week'] ?? 0); - $this->assertSafeForInteger('week', $weeks); - $days = (float) ($match['day'] ?? 0); - $this->assertSafeForInteger('day', $days); - $hours = (float) ($match['hour'] ?? 0); - $this->assertSafeForInteger('hour', $hours); - $minutes = (float) ($match['minute'] ?? 0); - $this->assertSafeForInteger('minute', $minutes); - $seconds = (float) ($match['second'] ?? 0); - $this->assertSafeForInteger('second', $seconds); - } - - $totalDays = (($weeks * static::getDaysPerWeek()) + $days); - $this->assertSafeForInteger('days total (including weeks)', $totalDays); - - $this->y = (int) $years; - $this->m = (int) $months; - $this->d = (int) $totalDays; - $this->h = (int) $hours; - $this->i = (int) $minutes; - $this->s = (int) $seconds; - - if ( - ((float) $this->y) !== $years || - ((float) $this->m) !== $months || - ((float) $this->d) !== $totalDays || - ((float) $this->h) !== $hours || - ((float) $this->i) !== $minutes || - ((float) $this->s) !== $seconds - ) { - $this->add(static::fromString( - ($years - $this->y).' years '. - ($months - $this->m).' months '. - ($totalDays - $this->d).' days '. - ($hours - $this->h).' hours '. - ($minutes - $this->i).' minutes '. - ($seconds - $this->s).' seconds ' - )); - } - } catch (Throwable $secondException) { - throw $secondException instanceof OutOfRangeException ? $secondException : $exception; - } - } - - if ($microseconds !== null) { - $this->f = $microseconds / Carbon::MICROSECONDS_PER_SECOND; - } - } - - /** - * Returns the factor for a given source-to-target couple. - * - * @param string $source - * @param string $target - * - * @return int|float|null - */ - public static function getFactor($source, $target) - { - $source = self::standardizeUnit($source); - $target = self::standardizeUnit($target); - $factors = self::getFlipCascadeFactors(); - - if (isset($factors[$source])) { - [$to, $factor] = $factors[$source]; - - if ($to === $target) { - return $factor; - } - - return $factor * static::getFactor($to, $target); - } - - return null; - } - - /** - * Returns the factor for a given source-to-target couple if set, - * else try to find the appropriate constant as the factor, such as Carbon::DAYS_PER_WEEK. - * - * @param string $source - * @param string $target - * - * @return int|float|null - */ - public static function getFactorWithDefault($source, $target) - { - $factor = self::getFactor($source, $target); - - if ($factor) { - return $factor; - } - - static $defaults = [ - 'month' => ['year' => Carbon::MONTHS_PER_YEAR], - 'week' => ['month' => Carbon::WEEKS_PER_MONTH], - 'day' => ['week' => Carbon::DAYS_PER_WEEK], - 'hour' => ['day' => Carbon::HOURS_PER_DAY], - 'minute' => ['hour' => Carbon::MINUTES_PER_HOUR], - 'second' => ['minute' => Carbon::SECONDS_PER_MINUTE], - 'millisecond' => ['second' => Carbon::MILLISECONDS_PER_SECOND], - 'microsecond' => ['millisecond' => Carbon::MICROSECONDS_PER_MILLISECOND], - ]; - - return $defaults[$source][$target] ?? null; - } - - /** - * Returns current config for days per week. - * - * @return int|float - */ - public static function getDaysPerWeek() - { - return static::getFactor('dayz', 'weeks') ?: Carbon::DAYS_PER_WEEK; - } - - /** - * Returns current config for hours per day. - * - * @return int|float - */ - public static function getHoursPerDay() - { - return static::getFactor('hours', 'dayz') ?: Carbon::HOURS_PER_DAY; - } - - /** - * Returns current config for minutes per hour. - * - * @return int|float - */ - public static function getMinutesPerHour() - { - return static::getFactor('minutes', 'hours') ?: Carbon::MINUTES_PER_HOUR; - } - - /** - * Returns current config for seconds per minute. - * - * @return int|float - */ - public static function getSecondsPerMinute() - { - return static::getFactor('seconds', 'minutes') ?: Carbon::SECONDS_PER_MINUTE; - } - - /** - * Returns current config for microseconds per second. - * - * @return int|float - */ - public static function getMillisecondsPerSecond() - { - return static::getFactor('milliseconds', 'seconds') ?: Carbon::MILLISECONDS_PER_SECOND; - } - - /** - * Returns current config for microseconds per second. - * - * @return int|float - */ - public static function getMicrosecondsPerMillisecond() - { - return static::getFactor('microseconds', 'milliseconds') ?: Carbon::MICROSECONDS_PER_MILLISECOND; - } - - /** - * Create a new CarbonInterval instance from specific values. - * This is an alias for the constructor that allows better fluent - * syntax as it allows you to do CarbonInterval::create(1)->fn() rather than - * (new CarbonInterval(1))->fn(). - * - * @param int $years - * @param int $months - * @param int $weeks - * @param int $days - * @param int $hours - * @param int $minutes - * @param int $seconds - * @param int $microseconds - * - * @throws Exception when the interval_spec (passed as $years) cannot be parsed as an interval. - * - * @return static - */ - public static function create($years = 1, $months = null, $weeks = null, $days = null, $hours = null, $minutes = null, $seconds = null, $microseconds = null) - { - return new static($years, $months, $weeks, $days, $hours, $minutes, $seconds, $microseconds); - } - - /** - * Parse a string into a new CarbonInterval object according to the specified format. - * - * @example - * ``` - * echo Carboninterval::createFromFormat('H:i', '1:30'); - * ``` - * - * @param string $format Format of the $interval input string - * @param string|null $interval Input string to convert into an interval - * - * @throws \Carbon\Exceptions\ParseErrorException when the $interval cannot be parsed as an interval. - * - * @return static - */ - public static function createFromFormat(string $format, ?string $interval) - { - $instance = new static(0); - $length = mb_strlen($format); - - if (preg_match('/s([,.])([uv])$/', $format, $match)) { - $interval = explode($match[1], $interval); - $index = \count($interval) - 1; - $interval[$index] = str_pad($interval[$index], $match[2] === 'v' ? 3 : 6, '0'); - $interval = implode($match[1], $interval); - } - - $interval = $interval ?? ''; - - for ($index = 0; $index < $length; $index++) { - $expected = mb_substr($format, $index, 1); - $nextCharacter = mb_substr($interval, 0, 1); - $unit = static::$formats[$expected] ?? null; - - if ($unit) { - if (!preg_match('/^-?\d+/', $interval, $match)) { - throw new ParseErrorException('number', $nextCharacter); - } - - $interval = mb_substr($interval, mb_strlen($match[0])); - $instance->$unit += (int) ($match[0]); - - continue; - } - - if ($nextCharacter !== $expected) { - throw new ParseErrorException( - "'$expected'", - $nextCharacter, - 'Allowed substitutes for interval formats are '.implode(', ', array_keys(static::$formats))."\n". - 'See https://php.net/manual/en/function.date.php for their meaning' - ); - } - - $interval = mb_substr($interval, 1); - } - - if ($interval !== '') { - throw new ParseErrorException( - 'end of string', - $interval - ); - } - - return $instance; - } - - /** - * Get a copy of the instance. - * - * @return static - */ - public function copy() - { - $date = new static(0); - $date->copyProperties($this); - $date->step = $this->step; - - return $date; - } - - /** - * Get a copy of the instance. - * - * @return static - */ - public function clone() - { - return $this->copy(); - } - - /** - * Provide static helpers to create instances. Allows CarbonInterval::years(3). - * - * Note: This is done using the magic method to allow static and instance methods to - * have the same names. - * - * @param string $method magic method name called - * @param array $parameters parameters list - * - * @return static|null - */ - public static function __callStatic($method, $parameters) - { - try { - $interval = new static(0); - $localStrictModeEnabled = $interval->localStrictModeEnabled; - $interval->localStrictModeEnabled = true; - - $result = static::hasMacro($method) - ? static::bindMacroContext(null, function () use (&$method, &$parameters, &$interval) { - return $interval->callMacro($method, $parameters); - }) - : $interval->$method(...$parameters); - - $interval->localStrictModeEnabled = $localStrictModeEnabled; - - return $result; - } catch (BadFluentSetterException $exception) { - if (Carbon::isStrictModeEnabled()) { - throw new BadFluentConstructorException($method, 0, $exception); - } - - return null; - } - } - - /** - * Evaluate the PHP generated by var_export() and recreate the exported CarbonInterval instance. - * - * @param array $dump data as exported by var_export() - * - * @return static - */ - #[ReturnTypeWillChange] - public static function __set_state($dump) - { - /** @noinspection PhpVoidFunctionResultUsedInspection */ - /** @var DateInterval $dateInterval */ - $dateInterval = parent::__set_state($dump); - - return static::instance($dateInterval); - } - - /** - * Return the current context from inside a macro callee or a new one if static. - * - * @return static - */ - protected static function this() - { - return end(static::$macroContextStack) ?: new static(0); - } - - /** - * Creates a CarbonInterval from string. - * - * Format: - * - * Suffix | Unit | Example | DateInterval expression - * -------|---------|---------|------------------------ - * y | years | 1y | P1Y - * mo | months | 3mo | P3M - * w | weeks | 2w | P2W - * d | days | 28d | P28D - * h | hours | 4h | PT4H - * m | minutes | 12m | PT12M - * s | seconds | 59s | PT59S - * - * e. g. `1w 3d 4h 32m 23s` is converted to 10 days 4 hours 32 minutes and 23 seconds. - * - * Special cases: - * - An empty string will return a zero interval - * - Fractions are allowed for weeks, days, hours and minutes and will be converted - * and rounded to the next smaller value (caution: 0.5w = 4d) - * - * @param string $intervalDefinition - * - * @return static - */ - public static function fromString($intervalDefinition) - { - if (empty($intervalDefinition)) { - return new static(0); - } - - $years = 0; - $months = 0; - $weeks = 0; - $days = 0; - $hours = 0; - $minutes = 0; - $seconds = 0; - $milliseconds = 0; - $microseconds = 0; - - $pattern = '/(\d+(?:\.\d+)?)\h*([^\d\h]*)/i'; - preg_match_all($pattern, $intervalDefinition, $parts, PREG_SET_ORDER); - - while ([$part, $value, $unit] = array_shift($parts)) { - $intValue = (int) $value; - $fraction = (float) $value - $intValue; - - // Fix calculation precision - switch (round($fraction, 6)) { - case 1: - $fraction = 0; - $intValue++; - - break; - case 0: - $fraction = 0; - - break; - } - - switch ($unit === 'µs' ? 'µs' : strtolower($unit)) { - case 'millennia': - case 'millennium': - $years += $intValue * CarbonInterface::YEARS_PER_MILLENNIUM; - - break; - - case 'century': - case 'centuries': - $years += $intValue * CarbonInterface::YEARS_PER_CENTURY; - - break; - - case 'decade': - case 'decades': - $years += $intValue * CarbonInterface::YEARS_PER_DECADE; - - break; - - case 'year': - case 'years': - case 'y': - case 'yr': - case 'yrs': - $years += $intValue; - - break; - - case 'quarter': - case 'quarters': - $months += $intValue * CarbonInterface::MONTHS_PER_QUARTER; - - break; - - case 'month': - case 'months': - case 'mo': - case 'mos': - $months += $intValue; - - break; - - case 'week': - case 'weeks': - case 'w': - $weeks += $intValue; - - if ($fraction) { - $parts[] = [null, $fraction * static::getDaysPerWeek(), 'd']; - } - - break; - - case 'day': - case 'days': - case 'd': - $days += $intValue; - - if ($fraction) { - $parts[] = [null, $fraction * static::getHoursPerDay(), 'h']; - } - - break; - - case 'hour': - case 'hours': - case 'h': - $hours += $intValue; - - if ($fraction) { - $parts[] = [null, $fraction * static::getMinutesPerHour(), 'm']; - } - - break; - - case 'minute': - case 'minutes': - case 'm': - $minutes += $intValue; - - if ($fraction) { - $parts[] = [null, $fraction * static::getSecondsPerMinute(), 's']; - } - - break; - - case 'second': - case 'seconds': - case 's': - $seconds += $intValue; - - if ($fraction) { - $parts[] = [null, $fraction * static::getMillisecondsPerSecond(), 'ms']; - } - - break; - - case 'millisecond': - case 'milliseconds': - case 'milli': - case 'ms': - $milliseconds += $intValue; - - if ($fraction) { - $microseconds += round($fraction * static::getMicrosecondsPerMillisecond()); - } - - break; - - case 'microsecond': - case 'microseconds': - case 'micro': - case 'µs': - $microseconds += $intValue; - - break; - - default: - throw new InvalidIntervalException( - sprintf('Invalid part %s in definition %s', $part, $intervalDefinition) - ); - } - } - - return new static($years, $months, $weeks, $days, $hours, $minutes, $seconds, $milliseconds * Carbon::MICROSECONDS_PER_MILLISECOND + $microseconds); - } - - /** - * Creates a CarbonInterval from string using a different locale. - * - * @param string $interval interval string in the given language (may also contain English). - * @param string|null $locale if locale is null or not specified, current global locale will be used instead. - * - * @return static - */ - public static function parseFromLocale($interval, $locale = null) - { - return static::fromString(Carbon::translateTimeString($interval, $locale ?: static::getLocale(), 'en')); - } - - private static function castIntervalToClass(DateInterval $interval, string $className, array $skip = []) - { - $mainClass = DateInterval::class; - - if (!is_a($className, $mainClass, true)) { - throw new InvalidCastException("$className is not a sub-class of $mainClass."); - } - - $microseconds = $interval->f; - $instance = new $className(static::getDateIntervalSpec($interval, false, $skip)); - - if ($microseconds) { - $instance->f = $microseconds; - } - - if ($interval instanceof self && is_a($className, self::class, true)) { - self::copyStep($interval, $instance); - } - - self::copyNegativeUnits($interval, $instance); - - return $instance; - } - - private static function copyNegativeUnits(DateInterval $from, DateInterval $to): void - { - $to->invert = $from->invert; - - foreach (['y', 'm', 'd', 'h', 'i', 's'] as $unit) { - if ($from->$unit < 0) { - $to->$unit *= -1; - } - } - } - - private static function copyStep(self $from, self $to): void - { - $to->setStep($from->getStep()); - } - - /** - * Cast the current instance into the given class. - * - * @param string $className The $className::instance() method will be called to cast the current object. - * - * @return DateInterval - */ - public function cast(string $className) - { - return self::castIntervalToClass($this, $className); - } - - /** - * Create a CarbonInterval instance from a DateInterval one. Can not instance - * DateInterval objects created from DateTime::diff() as you can't externally - * set the $days field. - * - * @param DateInterval $interval - * @param bool $skipCopy set to true to return the passed object - * (without copying it) if it's already of the - * current class - * - * @return static - */ - public static function instance(DateInterval $interval, array $skip = [], bool $skipCopy = false) - { - if ($skipCopy && $interval instanceof static) { - return $interval; - } - - return self::castIntervalToClass($interval, static::class, $skip); - } - - /** - * Make a CarbonInterval instance from given variable if possible. - * - * Always return a new instance. Parse only strings and only these likely to be intervals (skip dates - * and recurrences). Throw an exception for invalid format, but otherwise return null. - * - * @param mixed|int|DateInterval|string|Closure|null $interval interval or number of the given $unit - * @param string|null $unit if specified, $interval must be an integer - * @param bool $skipCopy set to true to return the passed object - * (without copying it) if it's already of the - * current class - * - * @return static|null - */ - public static function make($interval, $unit = null, bool $skipCopy = false) - { - if ($unit) { - $interval = "$interval ".Carbon::pluralUnit($unit); - } - - if ($interval instanceof DateInterval) { - return static::instance($interval, [], $skipCopy); - } - - if ($interval instanceof Closure) { - return new static($interval); - } - - if (!\is_string($interval)) { - return null; - } - - return static::makeFromString($interval); - } - - protected static function makeFromString(string $interval) - { - $interval = preg_replace('/\s+/', ' ', trim($interval)); - - if (preg_match('/^P[T\d]/', $interval)) { - return new static($interval); - } - - if (preg_match('/^(?:\h*\d+(?:\.\d+)?\h*[a-z]+)+$/i', $interval)) { - return static::fromString($interval); - } - - // @codeCoverageIgnoreStart - try { - /** @var static $interval */ - $interval = static::createFromDateString($interval); - } catch (DateMalformedIntervalStringException $e) { - return null; - } - // @codeCoverageIgnoreEnd - - return !$interval || $interval->isEmpty() ? null : $interval; - } - - protected function resolveInterval($interval) - { - if (!($interval instanceof self)) { - return self::make($interval); - } - - return $interval; - } - - /** - * Sets up a DateInterval from the relative parts of the string. - * - * @param string $time - * - * @return static - * - * @link https://php.net/manual/en/dateinterval.createfromdatestring.php - */ - #[ReturnTypeWillChange] - public static function createFromDateString($time) - { - $interval = @parent::createFromDateString(strtr($time, [ - ',' => ' ', - ' and ' => ' ', - ])); - - if ($interval instanceof DateInterval) { - $interval = static::instance($interval); - } - - return $interval; - } - - /////////////////////////////////////////////////////////////////// - ///////////////////////// GETTERS AND SETTERS ///////////////////// - /////////////////////////////////////////////////////////////////// - - /** - * Get a part of the CarbonInterval object. - * - * @param string $name - * - * @throws UnknownGetterException - * - * @return int|float|string - */ - public function get($name) - { - if (str_starts_with($name, 'total')) { - return $this->total(substr($name, 5)); - } - - switch ($name) { - case 'years': - return $this->y; - - case 'months': - return $this->m; - - case 'dayz': - return $this->d; - - case 'hours': - return $this->h; - - case 'minutes': - return $this->i; - - case 'seconds': - return $this->s; - - case 'milli': - case 'milliseconds': - return (int) (round($this->f * Carbon::MICROSECONDS_PER_SECOND) / Carbon::MICROSECONDS_PER_MILLISECOND); - - case 'micro': - case 'microseconds': - return (int) round($this->f * Carbon::MICROSECONDS_PER_SECOND); - - case 'microExcludeMilli': - return (int) round($this->f * Carbon::MICROSECONDS_PER_SECOND) % Carbon::MICROSECONDS_PER_MILLISECOND; - - case 'weeks': - return (int) ($this->d / (int) static::getDaysPerWeek()); - - case 'daysExcludeWeeks': - case 'dayzExcludeWeeks': - return $this->d % (int) static::getDaysPerWeek(); - - case 'locale': - return $this->getTranslatorLocale(); - - default: - throw new UnknownGetterException($name); - } - } - - /** - * Get a part of the CarbonInterval object. - * - * @param string $name - * - * @throws UnknownGetterException - * - * @return int|float|string - */ - public function __get($name) - { - return $this->get($name); - } - - /** - * Set a part of the CarbonInterval object. - * - * @param string|array $name - * @param int $value - * - * @throws UnknownSetterException - * - * @return $this - */ - public function set($name, $value = null) - { - $properties = \is_array($name) ? $name : [$name => $value]; - - foreach ($properties as $key => $value) { - switch (Carbon::singularUnit(rtrim($key, 'z'))) { - case 'year': - $this->checkIntegerValue($key, $value); - $this->y = $value; - $this->handleDecimalPart('year', $value, $this->y); - - break; - - case 'month': - $this->checkIntegerValue($key, $value); - $this->m = $value; - $this->handleDecimalPart('month', $value, $this->m); - - break; - - case 'week': - $this->checkIntegerValue($key, $value); - $days = $value * (int) static::getDaysPerWeek(); - $this->assertSafeForInteger('days total (including weeks)', $days); - $this->d = $days; - $this->handleDecimalPart('day', $days, $this->d); - - break; - - case 'day': - $this->checkIntegerValue($key, $value); - $this->d = $value; - $this->handleDecimalPart('day', $value, $this->d); - - break; - - case 'daysexcludeweek': - case 'dayzexcludeweek': - $this->checkIntegerValue($key, $value); - $days = $this->weeks * (int) static::getDaysPerWeek() + $value; - $this->assertSafeForInteger('days total (including weeks)', $days); - $this->d = $days; - $this->handleDecimalPart('day', $days, $this->d); - - break; - - case 'hour': - $this->checkIntegerValue($key, $value); - $this->h = $value; - $this->handleDecimalPart('hour', $value, $this->h); - - break; - - case 'minute': - $this->checkIntegerValue($key, $value); - $this->i = $value; - $this->handleDecimalPart('minute', $value, $this->i); - - break; - - case 'second': - $this->checkIntegerValue($key, $value); - $this->s = $value; - $this->handleDecimalPart('second', $value, $this->s); - - break; - - case 'milli': - case 'millisecond': - $this->microseconds = $value * Carbon::MICROSECONDS_PER_MILLISECOND + $this->microseconds % Carbon::MICROSECONDS_PER_MILLISECOND; - - break; - - case 'micro': - case 'microsecond': - $this->f = $value / Carbon::MICROSECONDS_PER_SECOND; - - break; - - default: - if ($this->localStrictModeEnabled ?? Carbon::isStrictModeEnabled()) { - throw new UnknownSetterException($key); - } - - $this->$key = $value; - } - } - - return $this; - } - - /** - * Set a part of the CarbonInterval object. - * - * @param string $name - * @param int $value - * - * @throws UnknownSetterException - */ - public function __set($name, $value) - { - $this->set($name, $value); - } - - /** - * Allow setting of weeks and days to be cumulative. - * - * @param int $weeks Number of weeks to set - * @param int $days Number of days to set - * - * @return static - */ - public function weeksAndDays($weeks, $days) - { - $this->dayz = ($weeks * static::getDaysPerWeek()) + $days; - - return $this; - } - - /** - * Returns true if the interval is empty for each unit. - * - * @return bool - */ - public function isEmpty() - { - return $this->years === 0 && - $this->months === 0 && - $this->dayz === 0 && - !$this->days && - $this->hours === 0 && - $this->minutes === 0 && - $this->seconds === 0 && - $this->microseconds === 0; - } - - /** - * Register a custom macro. - * - * @example - * ``` - * CarbonInterval::macro('twice', function () { - * return $this->times(2); - * }); - * echo CarbonInterval::hours(2)->twice(); - * ``` - * - * @param string $name - * @param object|callable $macro - * - * @return void - */ - public static function macro($name, $macro) - { - static::$macros[$name] = $macro; - } - - /** - * Register macros from a mixin object. - * - * @example - * ``` - * CarbonInterval::mixin(new class { - * public function daysToHours() { - * return function () { - * $this->hours += $this->days; - * $this->days = 0; - * - * return $this; - * }; - * } - * public function hoursToDays() { - * return function () { - * $this->days += $this->hours; - * $this->hours = 0; - * - * return $this; - * }; - * } - * }); - * echo CarbonInterval::hours(5)->hoursToDays() . "\n"; - * echo CarbonInterval::days(5)->daysToHours() . "\n"; - * ``` - * - * @param object|string $mixin - * - * @throws ReflectionException - * - * @return void - */ - public static function mixin($mixin) - { - static::baseMixin($mixin); - } - - /** - * Check if macro is registered. - * - * @param string $name - * - * @return bool - */ - public static function hasMacro($name) - { - return isset(static::$macros[$name]); - } - - /** - * Call given macro. - * - * @param string $name - * @param array $parameters - * - * @return mixed - */ - protected function callMacro($name, $parameters) - { - $macro = static::$macros[$name]; - - if ($macro instanceof Closure) { - $boundMacro = @$macro->bindTo($this, static::class) ?: @$macro->bindTo(null, static::class); - - return ($boundMacro ?: $macro)(...$parameters); - } - - return $macro(...$parameters); - } - - /** - * Allow fluent calls on the setters... CarbonInterval::years(3)->months(5)->day(). - * - * Note: This is done using the magic method to allow static and instance methods to - * have the same names. - * - * @param string $method magic method name called - * @param array $parameters parameters list - * - * @throws BadFluentSetterException|Throwable - * - * @return static - */ - public function __call($method, $parameters) - { - if (static::hasMacro($method)) { - return static::bindMacroContext($this, function () use (&$method, &$parameters) { - return $this->callMacro($method, $parameters); - }); - } - - $roundedValue = $this->callRoundMethod($method, $parameters); - - if ($roundedValue !== null) { - return $roundedValue; - } - - if (preg_match('/^(?add|sub)(?[A-Z].*)$/', $method, $match)) { - $value = $this->getMagicParameter($parameters, 0, Carbon::pluralUnit($match['unit']), 0); - - return $this->{$match['method']}($value, $match['unit']); - } - - $value = $this->getMagicParameter($parameters, 0, Carbon::pluralUnit($method), 1); - - try { - $this->set($method, $value); - } catch (UnknownSetterException $exception) { - if ($this->localStrictModeEnabled ?? Carbon::isStrictModeEnabled()) { - throw new BadFluentSetterException($method, 0, $exception); - } - } - - return $this; - } - - protected function getForHumansInitialVariables($syntax, $short) - { - if (\is_array($syntax)) { - return $syntax; - } - - if (\is_int($short)) { - return [ - 'parts' => $short, - 'short' => false, - ]; - } - - if (\is_bool($syntax)) { - return [ - 'short' => $syntax, - 'syntax' => CarbonInterface::DIFF_ABSOLUTE, - ]; - } - - return []; - } - - /** - * @param mixed $syntax - * @param mixed $short - * @param mixed $parts - * @param mixed $options - * - * @return array - */ - protected function getForHumansParameters($syntax = null, $short = false, $parts = -1, $options = null) - { - $optionalSpace = ' '; - $default = $this->getTranslationMessage('list.0') ?? $this->getTranslationMessage('list') ?? ' '; - $join = $default === '' ? '' : ' '; - $altNumbers = false; - $aUnit = false; - $minimumUnit = 's'; - $skip = []; - extract($this->getForHumansInitialVariables($syntax, $short)); - $skip = array_map('strtolower', array_filter((array) $skip, static function ($value) { - return \is_string($value) && $value !== ''; - })); - - if ($syntax === null) { - $syntax = CarbonInterface::DIFF_ABSOLUTE; - } - - if ($parts === -1) { - $parts = INF; - } - - if ($options === null) { - $options = static::getHumanDiffOptions(); - } - - if ($join === false) { - $join = ' '; - } elseif ($join === true) { - $join = [ - $default, - $this->getTranslationMessage('list.1') ?? $default, - ]; - } - - if ($altNumbers && $altNumbers !== true) { - $language = new Language($this->locale); - $altNumbers = \in_array($language->getCode(), (array) $altNumbers, true); - } - - if (\is_array($join)) { - [$default, $last] = $join; - - if ($default !== ' ') { - $optionalSpace = ''; - } - - $join = function ($list) use ($default, $last) { - if (\count($list) < 2) { - return implode('', $list); - } - - $end = array_pop($list); - - return implode($default, $list).$last.$end; - }; - } - - if (\is_string($join)) { - if ($join !== ' ') { - $optionalSpace = ''; - } - - $glue = $join; - $join = function ($list) use ($glue) { - return implode($glue, $list); - }; - } - - $interpolations = [ - ':optional-space' => $optionalSpace, - ]; - - return [$syntax, $short, $parts, $options, $join, $aUnit, $altNumbers, $interpolations, $minimumUnit, $skip]; - } - - protected static function getRoundingMethodFromOptions(int $options): ?string - { - if ($options & CarbonInterface::ROUND) { - return 'round'; - } - - if ($options & CarbonInterface::CEIL) { - return 'ceil'; - } - - if ($options & CarbonInterface::FLOOR) { - return 'floor'; - } - - return null; - } - - /** - * Returns interval values as an array where key are the unit names and values the counts. - * - * @return int[] - */ - public function toArray() - { - return [ - 'years' => $this->years, - 'months' => $this->months, - 'weeks' => $this->weeks, - 'days' => $this->daysExcludeWeeks, - 'hours' => $this->hours, - 'minutes' => $this->minutes, - 'seconds' => $this->seconds, - 'microseconds' => $this->microseconds, - ]; - } - - /** - * Returns interval non-zero values as an array where key are the unit names and values the counts. - * - * @return int[] - */ - public function getNonZeroValues() - { - return array_filter($this->toArray(), 'intval'); - } - - /** - * Returns interval values as an array where key are the unit names and values the counts - * from the biggest non-zero one the the smallest non-zero one. - * - * @return int[] - */ - public function getValuesSequence() - { - $nonZeroValues = $this->getNonZeroValues(); - - if ($nonZeroValues === []) { - return []; - } - - $keys = array_keys($nonZeroValues); - $firstKey = $keys[0]; - $lastKey = $keys[\count($keys) - 1]; - $values = []; - $record = false; - - foreach ($this->toArray() as $unit => $count) { - if ($unit === $firstKey) { - $record = true; - } - - if ($record) { - $values[$unit] = $count; - } - - if ($unit === $lastKey) { - $record = false; - } - } - - return $values; - } - - /** - * Get the current interval in a human readable format in the current locale. - * - * @example - * ``` - * echo CarbonInterval::fromString('4d 3h 40m')->forHumans() . "\n"; - * echo CarbonInterval::fromString('4d 3h 40m')->forHumans(['parts' => 2]) . "\n"; - * echo CarbonInterval::fromString('4d 3h 40m')->forHumans(['parts' => 3, 'join' => true]) . "\n"; - * echo CarbonInterval::fromString('4d 3h 40m')->forHumans(['short' => true]) . "\n"; - * echo CarbonInterval::fromString('1d 24h')->forHumans(['join' => ' or ']) . "\n"; - * echo CarbonInterval::fromString('1d 24h')->forHumans(['minimumUnit' => 'hour']) . "\n"; - * ``` - * - * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: - * - 'syntax' entry (see below) - * - 'short' entry (see below) - * - 'parts' entry (see below) - * - 'options' entry (see below) - * - 'skip' entry, list of units to skip (array of strings or a single string, - * ` it can be the unit name (singular or plural) or its shortcut - * ` (y, m, w, d, h, min, s, ms, µs). - * - 'aUnit' entry, prefer "an hour" over "1 hour" if true - * - 'join' entry determines how to join multiple parts of the string - * ` - if $join is a string, it's used as a joiner glue - * ` - if $join is a callable/closure, it get the list of string and should return a string - * ` - if $join is an array, the first item will be the default glue, and the second item - * ` will be used instead of the glue for the last item - * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) - * ` - if $join is missing, a space will be used as glue - * - 'minimumUnit' entry determines the smallest unit of time to display can be long or - * ` short form of the units, e.g. 'hour' or 'h' (default value: s) - * if int passed, it add modifiers: - * Possible values: - * - CarbonInterface::DIFF_ABSOLUTE no modifiers - * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier - * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier - * Default value: CarbonInterface::DIFF_ABSOLUTE - * @param bool $short displays short format of time units - * @param int $parts maximum number of parts to display (default value: -1: no limits) - * @param int $options human diff options - * - * @throws Exception - * - * @return string - */ - public function forHumans($syntax = null, $short = false, $parts = -1, $options = null) - { - [$syntax, $short, $parts, $options, $join, $aUnit, $altNumbers, $interpolations, $minimumUnit, $skip] = $this - ->getForHumansParameters($syntax, $short, $parts, $options); - - $interval = []; - - $syntax = (int) ($syntax ?? CarbonInterface::DIFF_ABSOLUTE); - $absolute = $syntax === CarbonInterface::DIFF_ABSOLUTE; - $relativeToNow = $syntax === CarbonInterface::DIFF_RELATIVE_TO_NOW; - $count = 1; - $unit = $short ? 's' : 'second'; - $isFuture = $this->invert === 1; - $transId = $relativeToNow ? ($isFuture ? 'from_now' : 'ago') : ($isFuture ? 'after' : 'before'); - $declensionMode = null; - - /** @var \Symfony\Component\Translation\Translator $translator */ - $translator = $this->getLocalTranslator(); - - $handleDeclensions = function ($unit, $count, $index = 0, $parts = 1) use ($interpolations, $transId, $translator, $altNumbers, $absolute, &$declensionMode) { - if (!$absolute) { - $declensionMode = $declensionMode ?? $this->translate($transId.'_mode'); - - if ($this->needsDeclension($declensionMode, $index, $parts)) { - // Some languages have special pluralization for past and future tense. - $key = $unit.'_'.$transId; - $result = $this->translate($key, $interpolations, $count, $translator, $altNumbers); - - if ($result !== $key) { - return $result; - } - } - } - - $result = $this->translate($unit, $interpolations, $count, $translator, $altNumbers); - - if ($result !== $unit) { - return $result; - } - - return null; - }; - - $intervalValues = $this; - $method = static::getRoundingMethodFromOptions($options); - - if ($method) { - $previousCount = INF; - - while ( - \count($intervalValues->getNonZeroValues()) > $parts && - ($count = \count($keys = array_keys($intervalValues->getValuesSequence()))) > 1 - ) { - $index = min($count, $previousCount - 1) - 2; - - if ($index < 0) { - break; - } - - $intervalValues = $this->copy()->roundUnit( - $keys[$index], - 1, - $method - ); - $previousCount = $count; - } - } - - $diffIntervalArray = [ - ['value' => $intervalValues->years, 'unit' => 'year', 'unitShort' => 'y'], - ['value' => $intervalValues->months, 'unit' => 'month', 'unitShort' => 'm'], - ['value' => $intervalValues->weeks, 'unit' => 'week', 'unitShort' => 'w'], - ['value' => $intervalValues->daysExcludeWeeks, 'unit' => 'day', 'unitShort' => 'd'], - ['value' => $intervalValues->hours, 'unit' => 'hour', 'unitShort' => 'h'], - ['value' => $intervalValues->minutes, 'unit' => 'minute', 'unitShort' => 'min'], - ['value' => $intervalValues->seconds, 'unit' => 'second', 'unitShort' => 's'], - ['value' => $intervalValues->milliseconds, 'unit' => 'millisecond', 'unitShort' => 'ms'], - ['value' => $intervalValues->microExcludeMilli, 'unit' => 'microsecond', 'unitShort' => 'µs'], - ]; - - if (!empty($skip)) { - foreach ($diffIntervalArray as $index => &$unitData) { - $nextIndex = $index + 1; - - if ($unitData['value'] && - isset($diffIntervalArray[$nextIndex]) && - \count(array_intersect([$unitData['unit'], $unitData['unit'].'s', $unitData['unitShort']], $skip)) - ) { - $diffIntervalArray[$nextIndex]['value'] += $unitData['value'] * - self::getFactorWithDefault($diffIntervalArray[$nextIndex]['unit'], $unitData['unit']); - $unitData['value'] = 0; - } - } - } - - $transChoice = function ($short, $unitData, $index, $parts) use ($absolute, $handleDeclensions, $translator, $aUnit, $altNumbers, $interpolations) { - $count = $unitData['value']; - - if ($short) { - $result = $handleDeclensions($unitData['unitShort'], $count, $index, $parts); - - if ($result !== null) { - return $result; - } - } elseif ($aUnit) { - $result = $handleDeclensions('a_'.$unitData['unit'], $count, $index, $parts); - - if ($result !== null) { - return $result; - } - } - - if (!$absolute) { - return $handleDeclensions($unitData['unit'], $count, $index, $parts); - } - - return $this->translate($unitData['unit'], $interpolations, $count, $translator, $altNumbers); - }; - - $fallbackUnit = ['second', 's']; - - foreach ($diffIntervalArray as $diffIntervalData) { - if ($diffIntervalData['value'] > 0) { - $unit = $short ? $diffIntervalData['unitShort'] : $diffIntervalData['unit']; - $count = $diffIntervalData['value']; - $interval[] = [$short, $diffIntervalData]; - } elseif ($options & CarbonInterface::SEQUENTIAL_PARTS_ONLY && \count($interval) > 0) { - break; - } - - // break the loop after we get the required number of parts in array - if (\count($interval) >= $parts) { - break; - } - - // break the loop after we have reached the minimum unit - if (\in_array($minimumUnit, [$diffIntervalData['unit'], $diffIntervalData['unitShort']], true)) { - $fallbackUnit = [$diffIntervalData['unit'], $diffIntervalData['unitShort']]; - - break; - } - } - - $actualParts = \count($interval); - - foreach ($interval as $index => &$item) { - $item = $transChoice($item[0], $item[1], $index, $actualParts); - } - - if (\count($interval) === 0) { - if ($relativeToNow && $options & CarbonInterface::JUST_NOW) { - $key = 'diff_now'; - $translation = $this->translate($key, $interpolations, null, $translator); - - if ($translation !== $key) { - return $translation; - } - } - - $count = $options & CarbonInterface::NO_ZERO_DIFF ? 1 : 0; - $unit = $fallbackUnit[$short ? 1 : 0]; - $interval[] = $this->translate($unit, $interpolations, $count, $translator, $altNumbers); - } - - // join the interval parts by a space - $time = $join($interval); - - unset($diffIntervalArray, $interval); - - if ($absolute) { - return $time; - } - - $isFuture = $this->invert === 1; - - $transId = $relativeToNow ? ($isFuture ? 'from_now' : 'ago') : ($isFuture ? 'after' : 'before'); - - if ($parts === 1) { - if ($relativeToNow && $unit === 'day') { - if ($count === 1 && $options & CarbonInterface::ONE_DAY_WORDS) { - $key = $isFuture ? 'diff_tomorrow' : 'diff_yesterday'; - $translation = $this->translate($key, $interpolations, null, $translator); - - if ($translation !== $key) { - return $translation; - } - } - - if ($count === 2 && $options & CarbonInterface::TWO_DAY_WORDS) { - $key = $isFuture ? 'diff_after_tomorrow' : 'diff_before_yesterday'; - $translation = $this->translate($key, $interpolations, null, $translator); - - if ($translation !== $key) { - return $translation; - } - } - } - - $aTime = $aUnit ? $handleDeclensions('a_'.$unit, $count) : null; - - $time = $aTime ?: $handleDeclensions($unit, $count) ?: $time; - } - - $time = [':time' => $time]; - - return $this->translate($transId, array_merge($time, $interpolations, $time), null, $translator); - } - - /** - * Format the instance as a string using the forHumans() function. - * - * @throws Exception - * - * @return string - */ - public function __toString() - { - $format = $this->localToStringFormat ?? static::$toStringFormat; - - if (!$format) { - return $this->forHumans(); - } - - if ($format instanceof Closure) { - return $format($this); - } - - return $this->format($format); - } - - /** - * Return native DateInterval PHP object matching the current instance. - * - * @example - * ``` - * var_dump(CarbonInterval::hours(2)->toDateInterval()); - * ``` - * - * @return DateInterval - */ - public function toDateInterval() - { - return self::castIntervalToClass($this, DateInterval::class); - } - - /** - * Convert the interval to a CarbonPeriod. - * - * @param DateTimeInterface|string|int ...$params Start date, [end date or recurrences] and optional settings. - * - * @return CarbonPeriod - */ - public function toPeriod(...$params) - { - if ($this->tzName) { - $tz = \is_string($this->tzName) ? new DateTimeZone($this->tzName) : $this->tzName; - - if ($tz instanceof DateTimeZone) { - array_unshift($params, $tz); - } - } - - return CarbonPeriod::create($this, ...$params); - } - - /** - * Invert the interval. - * - * @param bool|int $inverted if a parameter is passed, the passed value cast as 1 or 0 is used - * as the new value of the ->invert property. - * - * @return $this - */ - public function invert($inverted = null) - { - $this->invert = (\func_num_args() === 0 ? !$this->invert : $inverted) ? 1 : 0; - - return $this; - } - - protected function solveNegativeInterval() - { - if (!$this->isEmpty() && $this->years <= 0 && $this->months <= 0 && $this->dayz <= 0 && $this->hours <= 0 && $this->minutes <= 0 && $this->seconds <= 0 && $this->microseconds <= 0) { - $this->years *= -1; - $this->months *= -1; - $this->dayz *= -1; - $this->hours *= -1; - $this->minutes *= -1; - $this->seconds *= -1; - $this->microseconds *= -1; - $this->invert(); - } - - return $this; - } - - /** - * Add the passed interval to the current instance. - * - * @param string|DateInterval $unit - * @param int|float $value - * - * @return $this - */ - public function add($unit, $value = 1) - { - if (is_numeric($unit)) { - [$value, $unit] = [$unit, $value]; - } - - if (\is_string($unit) && !preg_match('/^\s*\d/', $unit)) { - $unit = "$value $unit"; - $value = 1; - } - - $interval = static::make($unit); - - if (!$interval) { - throw new InvalidIntervalException('This type of data cannot be added/subtracted.'); - } - - if ($value !== 1) { - $interval->times($value); - } - - $sign = ($this->invert === 1) !== ($interval->invert === 1) ? -1 : 1; - $this->years += $interval->y * $sign; - $this->months += $interval->m * $sign; - $this->dayz += ($interval->days === false ? $interval->d : $interval->days) * $sign; - $this->hours += $interval->h * $sign; - $this->minutes += $interval->i * $sign; - $this->seconds += $interval->s * $sign; - $this->microseconds += $interval->microseconds * $sign; - - $this->solveNegativeInterval(); - - return $this; - } - - /** - * Subtract the passed interval to the current instance. - * - * @param string|DateInterval $unit - * @param int|float $value - * - * @return $this - */ - public function sub($unit, $value = 1) - { - if (is_numeric($unit)) { - [$value, $unit] = [$unit, $value]; - } - - return $this->add($unit, -(float) $value); - } - - /** - * Subtract the passed interval to the current instance. - * - * @param string|DateInterval $unit - * @param int|float $value - * - * @return $this - */ - public function subtract($unit, $value = 1) - { - return $this->sub($unit, $value); - } - - /** - * Add given parameters to the current interval. - * - * @param int $years - * @param int $months - * @param int|float $weeks - * @param int|float $days - * @param int|float $hours - * @param int|float $minutes - * @param int|float $seconds - * @param int|float $microseconds - * - * @return $this - */ - public function plus( - $years = 0, - $months = 0, - $weeks = 0, - $days = 0, - $hours = 0, - $minutes = 0, - $seconds = 0, - $microseconds = 0 - ): self { - return $this->add(" - $years years $months months $weeks weeks $days days - $hours hours $minutes minutes $seconds seconds $microseconds microseconds - "); - } - - /** - * Add given parameters to the current interval. - * - * @param int $years - * @param int $months - * @param int|float $weeks - * @param int|float $days - * @param int|float $hours - * @param int|float $minutes - * @param int|float $seconds - * @param int|float $microseconds - * - * @return $this - */ - public function minus( - $years = 0, - $months = 0, - $weeks = 0, - $days = 0, - $hours = 0, - $minutes = 0, - $seconds = 0, - $microseconds = 0 - ): self { - return $this->sub(" - $years years $months months $weeks weeks $days days - $hours hours $minutes minutes $seconds seconds $microseconds microseconds - "); - } - - /** - * Multiply current instance given number of times. times() is naive, it multiplies each unit - * (so day can be greater than 31, hour can be greater than 23, etc.) and the result is rounded - * separately for each unit. - * - * Use times() when you want a fast and approximated calculation that does not cascade units. - * - * For a precise and cascaded calculation, - * - * @see multiply() - * - * @param float|int $factor - * - * @return $this - */ - public function times($factor) - { - if ($factor < 0) { - $this->invert = $this->invert ? 0 : 1; - $factor = -$factor; - } - - $this->years = (int) round($this->years * $factor); - $this->months = (int) round($this->months * $factor); - $this->dayz = (int) round($this->dayz * $factor); - $this->hours = (int) round($this->hours * $factor); - $this->minutes = (int) round($this->minutes * $factor); - $this->seconds = (int) round($this->seconds * $factor); - $this->microseconds = (int) round($this->microseconds * $factor); - - return $this; - } - - /** - * Divide current instance by a given divider. shares() is naive, it divides each unit separately - * and the result is rounded for each unit. So 5 hours and 20 minutes shared by 3 becomes 2 hours - * and 7 minutes. - * - * Use shares() when you want a fast and approximated calculation that does not cascade units. - * - * For a precise and cascaded calculation, - * - * @see divide() - * - * @param float|int $divider - * - * @return $this - */ - public function shares($divider) - { - return $this->times(1 / $divider); - } - - protected function copyProperties(self $interval, $ignoreSign = false) - { - $this->years = $interval->years; - $this->months = $interval->months; - $this->dayz = $interval->dayz; - $this->hours = $interval->hours; - $this->minutes = $interval->minutes; - $this->seconds = $interval->seconds; - $this->microseconds = $interval->microseconds; - - if (!$ignoreSign) { - $this->invert = $interval->invert; - } - - return $this; - } - - /** - * Multiply and cascade current instance by a given factor. - * - * @param float|int $factor - * - * @return $this - */ - public function multiply($factor) - { - if ($factor < 0) { - $this->invert = $this->invert ? 0 : 1; - $factor = -$factor; - } - - $yearPart = (int) floor($this->years * $factor); // Split calculation to prevent imprecision - - if ($yearPart) { - $this->years -= $yearPart / $factor; - } - - return $this->copyProperties( - static::create($yearPart) - ->microseconds(abs($this->totalMicroseconds) * $factor) - ->cascade(), - true - ); - } - - /** - * Divide and cascade current instance by a given divider. - * - * @param float|int $divider - * - * @return $this - */ - public function divide($divider) - { - return $this->multiply(1 / $divider); - } - - /** - * Get the interval_spec string of a date interval. - * - * @param DateInterval $interval - * - * @return string - */ - public static function getDateIntervalSpec(DateInterval $interval, bool $microseconds = false, array $skip = []) - { - $date = array_filter([ - static::PERIOD_YEARS => abs($interval->y), - static::PERIOD_MONTHS => abs($interval->m), - static::PERIOD_DAYS => abs($interval->d), - ]); - - if ( - $interval->days >= CarbonInterface::DAYS_PER_WEEK * CarbonInterface::WEEKS_PER_MONTH && - (!isset($date[static::PERIOD_YEARS]) || \count(array_intersect(['y', 'year', 'years'], $skip))) && - (!isset($date[static::PERIOD_MONTHS]) || \count(array_intersect(['m', 'month', 'months'], $skip))) - ) { - $date = [ - static::PERIOD_DAYS => abs($interval->days), - ]; - } - - $seconds = abs($interval->s); - if ($microseconds && $interval->f > 0) { - $seconds = sprintf('%d.%06d', $seconds, abs($interval->f) * 1000000); - } - - $time = array_filter([ - static::PERIOD_HOURS => abs($interval->h), - static::PERIOD_MINUTES => abs($interval->i), - static::PERIOD_SECONDS => $seconds, - ]); - - $specString = static::PERIOD_PREFIX; - - foreach ($date as $key => $value) { - $specString .= $value.$key; - } - - if (\count($time) > 0) { - $specString .= static::PERIOD_TIME_PREFIX; - foreach ($time as $key => $value) { - $specString .= $value.$key; - } - } - - return $specString === static::PERIOD_PREFIX ? 'PT0S' : $specString; - } - - /** - * Get the interval_spec string. - * - * @return string - */ - public function spec(bool $microseconds = false) - { - return static::getDateIntervalSpec($this, $microseconds); - } - - /** - * Comparing 2 date intervals. - * - * @param DateInterval $first - * @param DateInterval $second - * - * @return int - */ - public static function compareDateIntervals(DateInterval $first, DateInterval $second) - { - $current = Carbon::now(); - $passed = $current->avoidMutation()->add($second); - $current->add($first); - - if ($current < $passed) { - return -1; - } - if ($current > $passed) { - return 1; - } - - return 0; - } - - /** - * Comparing with passed interval. - * - * @param DateInterval $interval - * - * @return int - */ - public function compare(DateInterval $interval) - { - return static::compareDateIntervals($this, $interval); - } - - private function invertCascade(array $values) - { - return $this->set(array_map(function ($value) { - return -$value; - }, $values))->doCascade(true)->invert(); - } - - private function doCascade(bool $deep) - { - $originalData = $this->toArray(); - $originalData['milliseconds'] = (int) ($originalData['microseconds'] / static::getMicrosecondsPerMillisecond()); - $originalData['microseconds'] = $originalData['microseconds'] % static::getMicrosecondsPerMillisecond(); - $originalData['weeks'] = (int) ($this->d / static::getDaysPerWeek()); - $originalData['daysExcludeWeeks'] = fmod($this->d, static::getDaysPerWeek()); - unset($originalData['days']); - $newData = $originalData; - $previous = []; - - foreach (self::getFlipCascadeFactors() as $source => [$target, $factor]) { - foreach (['source', 'target'] as $key) { - if ($$key === 'dayz') { - $$key = 'daysExcludeWeeks'; - } - } - - $value = $newData[$source]; - $modulo = fmod($factor + fmod($value, $factor), $factor); - $newData[$source] = $modulo; - $newData[$target] += ($value - $modulo) / $factor; - - $decimalPart = fmod($newData[$source], 1); - - if ($decimalPart !== 0.0) { - $unit = $source; - - foreach ($previous as [$subUnit, $subFactor]) { - $newData[$unit] -= $decimalPart; - $newData[$subUnit] += $decimalPart * $subFactor; - $decimalPart = fmod($newData[$subUnit], 1); - - if ($decimalPart === 0.0) { - break; - } - - $unit = $subUnit; - } - } - - array_unshift($previous, [$source, $factor]); - } - - $positive = null; - - if (!$deep) { - foreach ($newData as $value) { - if ($value) { - if ($positive === null) { - $positive = ($value > 0); - - continue; - } - - if (($value > 0) !== $positive) { - return $this->invertCascade($originalData) - ->solveNegativeInterval(); - } - } - } - } - - return $this->set($newData) - ->solveNegativeInterval(); - } - - /** - * Convert overflowed values into bigger units. - * - * @return $this - */ - public function cascade() - { - return $this->doCascade(false); - } - - public function hasNegativeValues(): bool - { - foreach ($this->toArray() as $value) { - if ($value < 0) { - return true; - } - } - - return false; - } - - public function hasPositiveValues(): bool - { - foreach ($this->toArray() as $value) { - if ($value > 0) { - return true; - } - } - - return false; - } - - /** - * Get amount of given unit equivalent to the interval. - * - * @param string $unit - * - * @throws UnknownUnitException|UnitNotConfiguredException - * - * @return float - */ - public function total($unit) - { - $realUnit = $unit = strtolower($unit); - - if (\in_array($unit, ['days', 'weeks'])) { - $realUnit = 'dayz'; - } elseif (!\in_array($unit, ['microseconds', 'milliseconds', 'seconds', 'minutes', 'hours', 'dayz', 'months', 'years'])) { - throw new UnknownUnitException($unit); - } - - $result = 0; - $cumulativeFactor = 0; - $unitFound = false; - $factors = self::getFlipCascadeFactors(); - $daysPerWeek = (int) static::getDaysPerWeek(); - - $values = [ - 'years' => $this->years, - 'months' => $this->months, - 'weeks' => (int) ($this->d / $daysPerWeek), - 'dayz' => fmod($this->d, $daysPerWeek), - 'hours' => $this->hours, - 'minutes' => $this->minutes, - 'seconds' => $this->seconds, - 'milliseconds' => (int) ($this->microseconds / Carbon::MICROSECONDS_PER_MILLISECOND), - 'microseconds' => $this->microseconds % Carbon::MICROSECONDS_PER_MILLISECOND, - ]; - - if (isset($factors['dayz']) && $factors['dayz'][0] !== 'weeks') { - $values['dayz'] += $values['weeks'] * $daysPerWeek; - $values['weeks'] = 0; - } - - foreach ($factors as $source => [$target, $factor]) { - if ($source === $realUnit) { - $unitFound = true; - $value = $values[$source]; - $result += $value; - $cumulativeFactor = 1; - } - - if ($factor === false) { - if ($unitFound) { - break; - } - - $result = 0; - $cumulativeFactor = 0; - - continue; - } - - if ($target === $realUnit) { - $unitFound = true; - } - - if ($cumulativeFactor) { - $cumulativeFactor *= $factor; - $result += $values[$target] * $cumulativeFactor; - - continue; - } - - $value = $values[$source]; - - $result = ($result + $value) / $factor; - } - - if (isset($target) && !$cumulativeFactor) { - $result += $values[$target]; - } - - if (!$unitFound) { - throw new UnitNotConfiguredException($unit); - } - - if ($this->invert) { - $result *= -1; - } - - if ($unit === 'weeks') { - $result /= $daysPerWeek; - } - - // Cast as int numbers with no decimal part - return fmod($result, 1) === 0.0 ? (int) $result : $result; - } - - /** - * Determines if the instance is equal to another - * - * @param CarbonInterval|DateInterval|mixed $interval - * - * @see equalTo() - * - * @return bool - */ - public function eq($interval): bool - { - return $this->equalTo($interval); - } - - /** - * Determines if the instance is equal to another - * - * @param CarbonInterval|DateInterval|mixed $interval - * - * @return bool - */ - public function equalTo($interval): bool - { - $interval = $this->resolveInterval($interval); - - return $interval !== null && $this->totalMicroseconds === $interval->totalMicroseconds; - } - - /** - * Determines if the instance is not equal to another - * - * @param CarbonInterval|DateInterval|mixed $interval - * - * @see notEqualTo() - * - * @return bool - */ - public function ne($interval): bool - { - return $this->notEqualTo($interval); - } - - /** - * Determines if the instance is not equal to another - * - * @param CarbonInterval|DateInterval|mixed $interval - * - * @return bool - */ - public function notEqualTo($interval): bool - { - return !$this->eq($interval); - } - - /** - * Determines if the instance is greater (longer) than another - * - * @param CarbonInterval|DateInterval|mixed $interval - * - * @see greaterThan() - * - * @return bool - */ - public function gt($interval): bool - { - return $this->greaterThan($interval); - } - - /** - * Determines if the instance is greater (longer) than another - * - * @param CarbonInterval|DateInterval|mixed $interval - * - * @return bool - */ - public function greaterThan($interval): bool - { - $interval = $this->resolveInterval($interval); - - return $interval === null || $this->totalMicroseconds > $interval->totalMicroseconds; - } - - /** - * Determines if the instance is greater (longer) than or equal to another - * - * @param CarbonInterval|DateInterval|mixed $interval - * - * @see greaterThanOrEqualTo() - * - * @return bool - */ - public function gte($interval): bool - { - return $this->greaterThanOrEqualTo($interval); - } - - /** - * Determines if the instance is greater (longer) than or equal to another - * - * @param CarbonInterval|DateInterval|mixed $interval - * - * @return bool - */ - public function greaterThanOrEqualTo($interval): bool - { - return $this->greaterThan($interval) || $this->equalTo($interval); - } - - /** - * Determines if the instance is less (shorter) than another - * - * @param CarbonInterval|DateInterval|mixed $interval - * - * @see lessThan() - * - * @return bool - */ - public function lt($interval): bool - { - return $this->lessThan($interval); - } - - /** - * Determines if the instance is less (shorter) than another - * - * @param CarbonInterval|DateInterval|mixed $interval - * - * @return bool - */ - public function lessThan($interval): bool - { - $interval = $this->resolveInterval($interval); - - return $interval !== null && $this->totalMicroseconds < $interval->totalMicroseconds; - } - - /** - * Determines if the instance is less (shorter) than or equal to another - * - * @param CarbonInterval|DateInterval|mixed $interval - * - * @see lessThanOrEqualTo() - * - * @return bool - */ - public function lte($interval): bool - { - return $this->lessThanOrEqualTo($interval); - } - - /** - * Determines if the instance is less (shorter) than or equal to another - * - * @param CarbonInterval|DateInterval|mixed $interval - * - * @return bool - */ - public function lessThanOrEqualTo($interval): bool - { - return $this->lessThan($interval) || $this->equalTo($interval); - } - - /** - * Determines if the instance is between two others. - * - * The third argument allow you to specify if bounds are included or not (true by default) - * but for when you including/excluding bounds may produce different results in your application, - * we recommend to use the explicit methods ->betweenIncluded() or ->betweenExcluded() instead. - * - * @example - * ``` - * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::days(3)); // true - * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::hours(36)); // false - * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::days(2)); // true - * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::days(2), false); // false - * ``` - * - * @param CarbonInterval|DateInterval|mixed $interval1 - * @param CarbonInterval|DateInterval|mixed $interval2 - * @param bool $equal Indicates if an equal to comparison should be done - * - * @return bool - */ - public function between($interval1, $interval2, $equal = true): bool - { - return $equal - ? $this->greaterThanOrEqualTo($interval1) && $this->lessThanOrEqualTo($interval2) - : $this->greaterThan($interval1) && $this->lessThan($interval2); - } - - /** - * Determines if the instance is between two others, bounds excluded. - * - * @example - * ``` - * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(3)); // true - * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::hours(36)); // false - * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(2)); // true - * ``` - * - * @param CarbonInterval|DateInterval|mixed $interval1 - * @param CarbonInterval|DateInterval|mixed $interval2 - * - * @return bool - */ - public function betweenIncluded($interval1, $interval2): bool - { - return $this->between($interval1, $interval2, true); - } - - /** - * Determines if the instance is between two others, bounds excluded. - * - * @example - * ``` - * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(3)); // true - * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::hours(36)); // false - * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(2)); // false - * ``` - * - * @param CarbonInterval|DateInterval|mixed $interval1 - * @param CarbonInterval|DateInterval|mixed $interval2 - * - * @return bool - */ - public function betweenExcluded($interval1, $interval2): bool - { - return $this->between($interval1, $interval2, false); - } - - /** - * Determines if the instance is between two others - * - * @example - * ``` - * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::days(3)); // true - * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::hours(36)); // false - * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::days(2)); // true - * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::days(2), false); // false - * ``` - * - * @param CarbonInterval|DateInterval|mixed $interval1 - * @param CarbonInterval|DateInterval|mixed $interval2 - * @param bool $equal Indicates if an equal to comparison should be done - * - * @return bool - */ - public function isBetween($interval1, $interval2, $equal = true): bool - { - return $this->between($interval1, $interval2, $equal); - } - - /** - * Round the current instance at the given unit with given precision if specified and the given function. - * - * @param string $unit - * @param float|int|string|DateInterval|null $precision - * @param string $function - * - * @throws Exception - * - * @return $this - */ - public function roundUnit($unit, $precision = 1, $function = 'round') - { - if (static::getCascadeFactors() !== static::getDefaultCascadeFactors()) { - $value = $function($this->total($unit) / $precision) * $precision; - $inverted = $value < 0; - - return $this->copyProperties(self::fromString( - number_format(abs($value), 12, '.', '').' '.$unit - )->invert($inverted)->cascade()); - } - - $base = CarbonImmutable::parse('2000-01-01 00:00:00', 'UTC') - ->roundUnit($unit, $precision, $function); - $next = $base->add($this); - $inverted = $next < $base; - - if ($inverted) { - $next = $base->sub($this); - } - - $this->copyProperties( - $next - ->roundUnit($unit, $precision, $function) - ->diffAsCarbonInterval($base) - ); - - return $this->invert($inverted); - } - - /** - * Truncate the current instance at the given unit with given precision if specified. - * - * @param string $unit - * @param float|int|string|DateInterval|null $precision - * - * @throws Exception - * - * @return $this - */ - public function floorUnit($unit, $precision = 1) - { - return $this->roundUnit($unit, $precision, 'floor'); - } - - /** - * Ceil the current instance at the given unit with given precision if specified. - * - * @param string $unit - * @param float|int|string|DateInterval|null $precision - * - * @throws Exception - * - * @return $this - */ - public function ceilUnit($unit, $precision = 1) - { - return $this->roundUnit($unit, $precision, 'ceil'); - } - - /** - * Round the current instance second with given precision if specified. - * - * @param float|int|string|DateInterval|null $precision - * @param string $function - * - * @throws Exception - * - * @return $this - */ - public function round($precision = 1, $function = 'round') - { - return $this->roundWith($precision, $function); - } - - /** - * Round the current instance second with given precision if specified. - * - * @param float|int|string|DateInterval|null $precision - * - * @throws Exception - * - * @return $this - */ - public function floor($precision = 1) - { - return $this->round($precision, 'floor'); - } - - /** - * Ceil the current instance second with given precision if specified. - * - * @param float|int|string|DateInterval|null $precision - * - * @throws Exception - * - * @return $this - */ - public function ceil($precision = 1) - { - return $this->round($precision, 'ceil'); - } - - private function needsDeclension(string $mode, int $index, int $parts): bool - { - switch ($mode) { - case 'last': - return $index === $parts - 1; - default: - return true; - } - } - - private function checkIntegerValue(string $name, $value) - { - if (\is_int($value)) { - return; - } - - $this->assertSafeForInteger($name, $value); - - if (\is_float($value) && (((float) (int) $value) === $value)) { - return; - } - - if (!self::$floatSettersEnabled) { - $type = \gettype($value); - @trigger_error( - "Since 2.70.0, it's deprecated to pass $type value for $name.\n". - "It's truncated when stored as an integer interval unit.\n". - "From 3.0.0, decimal part will no longer be truncated and will be cascaded to smaller units.\n". - "- To maintain the current behavior, use explicit cast: $name((int) \$value)\n". - "- To adopt the new behavior globally, call CarbonInterval::enableFloatSetters()\n", - \E_USER_DEPRECATED - ); - } - } - - /** - * Throw an exception if precision loss when storing the given value as an integer would be >= 1.0. - */ - private function assertSafeForInteger(string $name, $value) - { - if ($value && !\is_int($value) && ($value >= 0x7fffffffffffffff || $value <= -0x7fffffffffffffff)) { - throw new OutOfRangeException($name, -0x7fffffffffffffff, 0x7fffffffffffffff, $value); - } - } - - private function handleDecimalPart(string $unit, $value, $integerValue) - { - if (self::$floatSettersEnabled) { - $floatValue = (float) $value; - $base = (float) $integerValue; - - if ($floatValue === $base) { - return; - } - - $units = [ - 'y' => 'year', - 'm' => 'month', - 'd' => 'day', - 'h' => 'hour', - 'i' => 'minute', - 's' => 'second', - ]; - $upper = true; - - foreach ($units as $property => $name) { - if ($name === $unit) { - $upper = false; - - continue; - } - - if (!$upper && $this->$property !== 0) { - throw new RuntimeException( - "You cannot set $unit to a float value as $name would be overridden, ". - 'set it first to 0 explicitly if you really want to erase its value' - ); - } - } - - $this->add($unit, $floatValue - $base); - } - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php b/vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php deleted file mode 100644 index b0e7e8b1..00000000 --- a/vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php +++ /dev/null @@ -1,2742 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -use Carbon\Exceptions\EndLessPeriodException; -use Carbon\Exceptions\InvalidCastException; -use Carbon\Exceptions\InvalidIntervalException; -use Carbon\Exceptions\InvalidPeriodDateException; -use Carbon\Exceptions\InvalidPeriodParameterException; -use Carbon\Exceptions\NotACarbonClassException; -use Carbon\Exceptions\NotAPeriodException; -use Carbon\Exceptions\UnknownGetterException; -use Carbon\Exceptions\UnknownMethodException; -use Carbon\Exceptions\UnreachableException; -use Carbon\Traits\IntervalRounding; -use Carbon\Traits\Mixin; -use Carbon\Traits\Options; -use Carbon\Traits\ToStringFormat; -use Closure; -use Countable; -use DateInterval; -use DatePeriod; -use DateTime; -use DateTimeImmutable; -use DateTimeInterface; -use DateTimeZone; -use InvalidArgumentException; -use Iterator; -use JsonSerializable; -use ReflectionException; -use ReturnTypeWillChange; -use RuntimeException; - -/** - * Substitution of DatePeriod with some modifications and many more features. - * - * @property-read int|float $recurrences number of recurrences (if end not set). - * @property-read bool $include_start_date rather the start date is included in the iteration. - * @property-read bool $include_end_date rather the end date is included in the iteration (if recurrences not set). - * @property-read CarbonInterface $start Period start date. - * @property-read CarbonInterface $current Current date from the iteration. - * @property-read CarbonInterface $end Period end date. - * @property-read CarbonInterval $interval Underlying date interval instance. Always present, one day by default. - * - * @method static static start($date, $inclusive = null) Create instance specifying start date or modify the start date if called on an instance. - * @method static static since($date, $inclusive = null) Alias for start(). - * @method static static sinceNow($inclusive = null) Create instance with start date set to now or set the start date to now if called on an instance. - * @method static static end($date = null, $inclusive = null) Create instance specifying end date or modify the end date if called on an instance. - * @method static static until($date = null, $inclusive = null) Alias for end(). - * @method static static untilNow($inclusive = null) Create instance with end date set to now or set the end date to now if called on an instance. - * @method static static dates($start, $end = null) Create instance with start and end dates or modify the start and end dates if called on an instance. - * @method static static between($start, $end = null) Create instance with start and end dates or modify the start and end dates if called on an instance. - * @method static static recurrences($recurrences = null) Create instance with maximum number of recurrences or modify the number of recurrences if called on an instance. - * @method static static times($recurrences = null) Alias for recurrences(). - * @method static static options($options = null) Create instance with options or modify the options if called on an instance. - * @method static static toggle($options, $state = null) Create instance with options toggled on or off, or toggle options if called on an instance. - * @method static static filter($callback, $name = null) Create instance with filter added to the stack or append a filter if called on an instance. - * @method static static push($callback, $name = null) Alias for filter(). - * @method static static prepend($callback, $name = null) Create instance with filter prepended to the stack or prepend a filter if called on an instance. - * @method static static filters(array $filters = []) Create instance with filters stack or replace the whole filters stack if called on an instance. - * @method static static interval($interval) Create instance with given date interval or modify the interval if called on an instance. - * @method static static each($interval) Create instance with given date interval or modify the interval if called on an instance. - * @method static static every($interval) Create instance with given date interval or modify the interval if called on an instance. - * @method static static step($interval) Create instance with given date interval or modify the interval if called on an instance. - * @method static static stepBy($interval) Create instance with given date interval or modify the interval if called on an instance. - * @method static static invert() Create instance with inverted date interval or invert the interval if called on an instance. - * @method static static years($years = 1) Create instance specifying a number of years for date interval or replace the interval by the given a number of years if called on an instance. - * @method static static year($years = 1) Alias for years(). - * @method static static months($months = 1) Create instance specifying a number of months for date interval or replace the interval by the given a number of months if called on an instance. - * @method static static month($months = 1) Alias for months(). - * @method static static weeks($weeks = 1) Create instance specifying a number of weeks for date interval or replace the interval by the given a number of weeks if called on an instance. - * @method static static week($weeks = 1) Alias for weeks(). - * @method static static days($days = 1) Create instance specifying a number of days for date interval or replace the interval by the given a number of days if called on an instance. - * @method static static dayz($days = 1) Alias for days(). - * @method static static day($days = 1) Alias for days(). - * @method static static hours($hours = 1) Create instance specifying a number of hours for date interval or replace the interval by the given a number of hours if called on an instance. - * @method static static hour($hours = 1) Alias for hours(). - * @method static static minutes($minutes = 1) Create instance specifying a number of minutes for date interval or replace the interval by the given a number of minutes if called on an instance. - * @method static static minute($minutes = 1) Alias for minutes(). - * @method static static seconds($seconds = 1) Create instance specifying a number of seconds for date interval or replace the interval by the given a number of seconds if called on an instance. - * @method static static second($seconds = 1) Alias for seconds(). - * @method static static milliseconds($milliseconds = 1) Create instance specifying a number of milliseconds for date interval or replace the interval by the given a number of milliseconds if called on an instance. - * @method static static millisecond($milliseconds = 1) Alias for milliseconds(). - * @method static static microseconds($microseconds = 1) Create instance specifying a number of microseconds for date interval or replace the interval by the given a number of microseconds if called on an instance. - * @method static static microsecond($microseconds = 1) Alias for microseconds(). - * @method $this roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. - * @method $this roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. - * @method $this floorYear(float $precision = 1) Truncate the current instance year with given precision. - * @method $this floorYears(float $precision = 1) Truncate the current instance year with given precision. - * @method $this ceilYear(float $precision = 1) Ceil the current instance year with given precision. - * @method $this ceilYears(float $precision = 1) Ceil the current instance year with given precision. - * @method $this roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. - * @method $this roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. - * @method $this floorMonth(float $precision = 1) Truncate the current instance month with given precision. - * @method $this floorMonths(float $precision = 1) Truncate the current instance month with given precision. - * @method $this ceilMonth(float $precision = 1) Ceil the current instance month with given precision. - * @method $this ceilMonths(float $precision = 1) Ceil the current instance month with given precision. - * @method $this roundWeek(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method $this roundWeeks(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method $this floorWeek(float $precision = 1) Truncate the current instance day with given precision. - * @method $this floorWeeks(float $precision = 1) Truncate the current instance day with given precision. - * @method $this ceilWeek(float $precision = 1) Ceil the current instance day with given precision. - * @method $this ceilWeeks(float $precision = 1) Ceil the current instance day with given precision. - * @method $this roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method $this roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method $this floorDay(float $precision = 1) Truncate the current instance day with given precision. - * @method $this floorDays(float $precision = 1) Truncate the current instance day with given precision. - * @method $this ceilDay(float $precision = 1) Ceil the current instance day with given precision. - * @method $this ceilDays(float $precision = 1) Ceil the current instance day with given precision. - * @method $this roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. - * @method $this roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. - * @method $this floorHour(float $precision = 1) Truncate the current instance hour with given precision. - * @method $this floorHours(float $precision = 1) Truncate the current instance hour with given precision. - * @method $this ceilHour(float $precision = 1) Ceil the current instance hour with given precision. - * @method $this ceilHours(float $precision = 1) Ceil the current instance hour with given precision. - * @method $this roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. - * @method $this roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. - * @method $this floorMinute(float $precision = 1) Truncate the current instance minute with given precision. - * @method $this floorMinutes(float $precision = 1) Truncate the current instance minute with given precision. - * @method $this ceilMinute(float $precision = 1) Ceil the current instance minute with given precision. - * @method $this ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision. - * @method $this roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. - * @method $this roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. - * @method $this floorSecond(float $precision = 1) Truncate the current instance second with given precision. - * @method $this floorSeconds(float $precision = 1) Truncate the current instance second with given precision. - * @method $this ceilSecond(float $precision = 1) Ceil the current instance second with given precision. - * @method $this ceilSeconds(float $precision = 1) Ceil the current instance second with given precision. - * @method $this roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. - * @method $this roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. - * @method $this floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision. - * @method $this floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision. - * @method $this ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision. - * @method $this ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision. - * @method $this roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. - * @method $this roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. - * @method $this floorCentury(float $precision = 1) Truncate the current instance century with given precision. - * @method $this floorCenturies(float $precision = 1) Truncate the current instance century with given precision. - * @method $this ceilCentury(float $precision = 1) Ceil the current instance century with given precision. - * @method $this ceilCenturies(float $precision = 1) Ceil the current instance century with given precision. - * @method $this roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. - * @method $this roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. - * @method $this floorDecade(float $precision = 1) Truncate the current instance decade with given precision. - * @method $this floorDecades(float $precision = 1) Truncate the current instance decade with given precision. - * @method $this ceilDecade(float $precision = 1) Ceil the current instance decade with given precision. - * @method $this ceilDecades(float $precision = 1) Ceil the current instance decade with given precision. - * @method $this roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. - * @method $this roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. - * @method $this floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision. - * @method $this floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision. - * @method $this ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision. - * @method $this ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision. - * @method $this roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. - * @method $this roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. - * @method $this floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision. - * @method $this floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision. - * @method $this ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision. - * @method $this ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision. - * @method $this roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. - * @method $this roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. - * @method $this floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision. - * @method $this floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision. - * @method $this ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision. - * @method $this ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision. - * - * @SuppressWarnings(PHPMD.CouplingBetweenObjects) - */ -class CarbonPeriod implements Iterator, Countable, JsonSerializable -{ - use IntervalRounding; - use Mixin { - Mixin::mixin as baseMixin; - } - use Options; - use ToStringFormat; - - /** - * Built-in filter for limit by recurrences. - * - * @var callable - */ - public const RECURRENCES_FILTER = [self::class, 'filterRecurrences']; - - /** - * Built-in filter for limit to an end. - * - * @var callable - */ - public const END_DATE_FILTER = [self::class, 'filterEndDate']; - - /** - * Special value which can be returned by filters to end iteration. Also a filter. - * - * @var callable - */ - public const END_ITERATION = [self::class, 'endIteration']; - - /** - * Exclude start date from iteration. - * - * @var int - */ - public const EXCLUDE_START_DATE = 1; - - /** - * Exclude end date from iteration. - * - * @var int - */ - public const EXCLUDE_END_DATE = 2; - - /** - * Yield CarbonImmutable instances. - * - * @var int - */ - public const IMMUTABLE = 4; - - /** - * Number of maximum attempts before giving up on finding next valid date. - * - * @var int - */ - public const NEXT_MAX_ATTEMPTS = 1000; - - /** - * Number of maximum attempts before giving up on finding end date. - * - * @var int - */ - public const END_MAX_ATTEMPTS = 10000; - - /** - * Default date class of iteration items. - * - * @var string - */ - protected const DEFAULT_DATE_CLASS = Carbon::class; - - /** - * The registered macros. - * - * @var array - */ - protected static $macros = []; - - /** - * Date class of iteration items. - * - * @var string - */ - protected $dateClass = Carbon::class; - - /** - * Underlying date interval instance. Always present, one day by default. - * - * @var CarbonInterval - */ - protected $dateInterval; - - /** - * True once __construct is finished. - * - * @var bool - */ - protected $constructed = false; - - /** - * Whether current date interval was set by default. - * - * @var bool - */ - protected $isDefaultInterval; - - /** - * The filters stack. - * - * @var array - */ - protected $filters = []; - - /** - * Period start date. Applied on rewind. Always present, now by default. - * - * @var CarbonInterface - */ - protected $startDate; - - /** - * Period end date. For inverted interval should be before the start date. Applied via a filter. - * - * @var CarbonInterface|null - */ - protected $endDate; - - /** - * Limit for number of recurrences. Applied via a filter. - * - * @var int|null - */ - protected $recurrences; - - /** - * Iteration options. - * - * @var int - */ - protected $options; - - /** - * Index of current date. Always sequential, even if some dates are skipped by filters. - * Equal to null only before the first iteration. - * - * @var int - */ - protected $key; - - /** - * Current date. May temporarily hold unaccepted value when looking for a next valid date. - * Equal to null only before the first iteration. - * - * @var CarbonInterface - */ - protected $current; - - /** - * Timezone of current date. Taken from the start date. - * - * @var \DateTimeZone|null - */ - protected $timezone; - - /** - * The cached validation result for current date. - * - * @var bool|string|null - */ - protected $validationResult; - - /** - * Timezone handler for settings() method. - * - * @var mixed - */ - protected $tzName; - - /** - * Make a CarbonPeriod instance from given variable if possible. - * - * @param mixed $var - * - * @return static|null - */ - public static function make($var) - { - try { - return static::instance($var); - } catch (NotAPeriodException $e) { - return static::create($var); - } - } - - /** - * Create a new instance from a DatePeriod or CarbonPeriod object. - * - * @param CarbonPeriod|DatePeriod $period - * - * @return static - */ - public static function instance($period) - { - if ($period instanceof static) { - return $period->copy(); - } - - if ($period instanceof self) { - return new static( - $period->getStartDate(), - $period->getEndDate() ?: $period->getRecurrences(), - $period->getDateInterval(), - $period->getOptions() - ); - } - - if ($period instanceof DatePeriod) { - return new static( - $period->start, - $period->end ?: ($period->recurrences - 1), - $period->interval, - $period->include_start_date ? 0 : static::EXCLUDE_START_DATE - ); - } - - $class = static::class; - $type = \gettype($period); - - throw new NotAPeriodException( - 'Argument 1 passed to '.$class.'::'.__METHOD__.'() '. - 'must be an instance of DatePeriod or '.$class.', '. - ($type === 'object' ? 'instance of '.\get_class($period) : $type).' given.' - ); - } - - /** - * Create a new instance. - * - * @return static - */ - public static function create(...$params) - { - return static::createFromArray($params); - } - - /** - * Create a new instance from an array of parameters. - * - * @param array $params - * - * @return static - */ - public static function createFromArray(array $params) - { - return new static(...$params); - } - - /** - * Create CarbonPeriod from ISO 8601 string. - * - * @param string $iso - * @param int|null $options - * - * @return static - */ - public static function createFromIso($iso, $options = null) - { - $params = static::parseIso8601($iso); - - $instance = static::createFromArray($params); - - if ($options !== null) { - $instance->setOptions($options); - } - - return $instance; - } - - /** - * Return whether given interval contains non zero value of any time unit. - * - * @param \DateInterval $interval - * - * @return bool - */ - protected static function intervalHasTime(DateInterval $interval) - { - return $interval->h || $interval->i || $interval->s || $interval->f; - } - - /** - * Return whether given variable is an ISO 8601 specification. - * - * Note: Check is very basic, as actual validation will be done later when parsing. - * We just want to ensure that variable is not any other type of a valid parameter. - * - * @param mixed $var - * - * @return bool - */ - protected static function isIso8601($var) - { - if (!\is_string($var)) { - return false; - } - - // Match slash but not within a timezone name. - $part = '[a-z]+(?:[_-][a-z]+)*'; - - preg_match("#\b$part/$part\b|(/)#i", $var, $match); - - return isset($match[1]); - } - - /** - * Parse given ISO 8601 string into an array of arguments. - * - * @SuppressWarnings(PHPMD.ElseExpression) - * - * @param string $iso - * - * @return array - */ - protected static function parseIso8601($iso) - { - $result = []; - - $interval = null; - $start = null; - $end = null; - $dateClass = static::DEFAULT_DATE_CLASS; - - foreach (explode('/', $iso) as $key => $part) { - if ($key === 0 && preg_match('/^R(\d*|INF)$/', $part, $match)) { - $parsed = \strlen($match[1]) ? (($match[1] !== 'INF') ? (int) $match[1] : INF) : null; - } elseif ($interval === null && $parsed = CarbonInterval::make($part)) { - $interval = $part; - } elseif ($start === null && $parsed = $dateClass::make($part)) { - $start = $part; - } elseif ($end === null && $parsed = $dateClass::make(static::addMissingParts($start ?? '', $part))) { - $end = $part; - } else { - throw new InvalidPeriodParameterException("Invalid ISO 8601 specification: $iso."); - } - - $result[] = $parsed; - } - - return $result; - } - - /** - * Add missing parts of the target date from the soure date. - * - * @param string $source - * @param string $target - * - * @return string - */ - protected static function addMissingParts($source, $target) - { - $pattern = '/'.preg_replace('/\d+/', '[0-9]+', preg_quote($target, '/')).'$/'; - - $result = preg_replace($pattern, $target, $source, 1, $count); - - return $count ? $result : $target; - } - - /** - * Register a custom macro. - * - * @example - * ``` - * CarbonPeriod::macro('middle', function () { - * return $this->getStartDate()->average($this->getEndDate()); - * }); - * echo CarbonPeriod::since('2011-05-12')->until('2011-06-03')->middle(); - * ``` - * - * @param string $name - * @param object|callable $macro - * - * @return void - */ - public static function macro($name, $macro) - { - static::$macros[$name] = $macro; - } - - /** - * Register macros from a mixin object. - * - * @example - * ``` - * CarbonPeriod::mixin(new class { - * public function addDays() { - * return function ($count = 1) { - * return $this->setStartDate( - * $this->getStartDate()->addDays($count) - * )->setEndDate( - * $this->getEndDate()->addDays($count) - * ); - * }; - * } - * public function subDays() { - * return function ($count = 1) { - * return $this->setStartDate( - * $this->getStartDate()->subDays($count) - * )->setEndDate( - * $this->getEndDate()->subDays($count) - * ); - * }; - * } - * }); - * echo CarbonPeriod::create('2000-01-01', '2000-02-01')->addDays(5)->subDays(3); - * ``` - * - * @param object|string $mixin - * - * @throws ReflectionException - * - * @return void - */ - public static function mixin($mixin) - { - static::baseMixin($mixin); - } - - /** - * Check if macro is registered. - * - * @param string $name - * - * @return bool - */ - public static function hasMacro($name) - { - return isset(static::$macros[$name]); - } - - /** - * Provide static proxy for instance aliases. - * - * @param string $method - * @param array $parameters - * - * @return mixed - */ - public static function __callStatic($method, $parameters) - { - $date = new static(); - - if (static::hasMacro($method)) { - return static::bindMacroContext(null, function () use (&$method, &$parameters, &$date) { - return $date->callMacro($method, $parameters); - }); - } - - return $date->$method(...$parameters); - } - - /** - * CarbonPeriod constructor. - * - * @SuppressWarnings(PHPMD.ElseExpression) - * - * @throws InvalidArgumentException - */ - public function __construct(...$arguments) - { - if (is_a($this->dateClass, DateTimeImmutable::class, true)) { - $this->options = static::IMMUTABLE; - } - - // Parse and assign arguments one by one. First argument may be an ISO 8601 spec, - // which will be first parsed into parts and then processed the same way. - - $argumentsCount = \count($arguments); - - if ($argumentsCount && static::isIso8601($iso = $arguments[0])) { - array_splice($arguments, 0, 1, static::parseIso8601($iso)); - } - - if ($argumentsCount === 1) { - if ($arguments[0] instanceof DatePeriod) { - $arguments = [ - $arguments[0]->start, - $arguments[0]->end ?: ($arguments[0]->recurrences - 1), - $arguments[0]->interval, - $arguments[0]->include_start_date ? 0 : static::EXCLUDE_START_DATE, - ]; - } elseif ($arguments[0] instanceof self) { - $arguments = [ - $arguments[0]->getStartDate(), - $arguments[0]->getEndDate() ?: $arguments[0]->getRecurrences(), - $arguments[0]->getDateInterval(), - $arguments[0]->getOptions(), - ]; - } - } - - $optionsSet = false; - - foreach ($arguments as $argument) { - $parsedDate = null; - - if ($argument instanceof DateTimeZone) { - $this->setTimezone($argument); - } elseif ($this->dateInterval === null && - ( - (\is_string($argument) && preg_match( - '/^(-?\d(\d(?![\/-])|[^\d\/-]([\/-])?)*|P[T\d].*|(?:\h*\d+(?:\.\d+)?\h*[a-z]+)+)$/i', - $argument - )) || - $argument instanceof DateInterval || - $argument instanceof Closure - ) && - $parsedInterval = @CarbonInterval::make($argument) - ) { - $this->setDateInterval($parsedInterval); - } elseif ($this->startDate === null && $parsedDate = $this->makeDateTime($argument)) { - $this->setStartDate($parsedDate); - } elseif ($this->endDate === null && ($parsedDate = $parsedDate ?? $this->makeDateTime($argument))) { - $this->setEndDate($parsedDate); - } elseif ($this->recurrences === null && $this->endDate === null && is_numeric($argument)) { - $this->setRecurrences($argument); - } elseif (!$optionsSet && (\is_int($argument) || $argument === null)) { - $optionsSet = true; - $this->setOptions(((int) $this->options) | ((int) $argument)); - } else { - throw new InvalidPeriodParameterException('Invalid constructor parameters.'); - } - } - - if ($this->startDate === null) { - $dateClass = $this->dateClass; - $this->setStartDate($dateClass::now()); - } - - if ($this->dateInterval === null) { - $this->setDateInterval(CarbonInterval::day()); - - $this->isDefaultInterval = true; - } - - if ($this->options === null) { - $this->setOptions(0); - } - - $this->constructed = true; - } - - /** - * Get a copy of the instance. - * - * @return static - */ - public function copy() - { - return clone $this; - } - - /** - * Prepare the instance to be set (self if mutable to be mutated, - * copy if immutable to generate a new instance). - * - * @return static - */ - protected function copyIfImmutable() - { - return $this; - } - - /** - * Get the getter for a property allowing both `DatePeriod` snakeCase and camelCase names. - * - * @param string $name - * - * @return callable|null - */ - protected function getGetter(string $name) - { - switch (strtolower(preg_replace('/[A-Z]/', '_$0', $name))) { - case 'start': - case 'start_date': - return [$this, 'getStartDate']; - case 'end': - case 'end_date': - return [$this, 'getEndDate']; - case 'interval': - case 'date_interval': - return [$this, 'getDateInterval']; - case 'recurrences': - return [$this, 'getRecurrences']; - case 'include_start_date': - return [$this, 'isStartIncluded']; - case 'include_end_date': - return [$this, 'isEndIncluded']; - case 'current': - return [$this, 'current']; - default: - return null; - } - } - - /** - * Get a property allowing both `DatePeriod` snakeCase and camelCase names. - * - * @param string $name - * - * @return bool|CarbonInterface|CarbonInterval|int|null - */ - public function get(string $name) - { - $getter = $this->getGetter($name); - - if ($getter) { - return $getter(); - } - - throw new UnknownGetterException($name); - } - - /** - * Get a property allowing both `DatePeriod` snakeCase and camelCase names. - * - * @param string $name - * - * @return bool|CarbonInterface|CarbonInterval|int|null - */ - public function __get(string $name) - { - return $this->get($name); - } - - /** - * Check if an attribute exists on the object - * - * @param string $name - * - * @return bool - */ - public function __isset(string $name): bool - { - return $this->getGetter($name) !== null; - } - - /** - * @alias copy - * - * Get a copy of the instance. - * - * @return static - */ - public function clone() - { - return clone $this; - } - - /** - * Set the iteration item class. - * - * @param string $dateClass - * - * @return static - */ - public function setDateClass(string $dateClass) - { - if (!is_a($dateClass, CarbonInterface::class, true)) { - throw new NotACarbonClassException($dateClass); - } - - $self = $this->copyIfImmutable(); - $self->dateClass = $dateClass; - - if (is_a($dateClass, Carbon::class, true)) { - $self->options = $self->options & ~static::IMMUTABLE; - } elseif (is_a($dateClass, CarbonImmutable::class, true)) { - $self->options = $self->options | static::IMMUTABLE; - } - - return $self; - } - - /** - * Returns iteration item date class. - * - * @return string - */ - public function getDateClass(): string - { - return $this->dateClass; - } - - /** - * Change the period date interval. - * - * @param DateInterval|string $interval - * - * @throws InvalidIntervalException - * - * @return static - */ - public function setDateInterval($interval) - { - if (!$interval = CarbonInterval::make($interval)) { - throw new InvalidIntervalException('Invalid interval.'); - } - - if ($interval->spec() === 'PT0S' && !$interval->f && !$interval->getStep()) { - throw new InvalidIntervalException('Empty interval is not accepted.'); - } - - $self = $this->copyIfImmutable(); - $self->dateInterval = $interval; - - $self->isDefaultInterval = false; - - $self->handleChangedParameters(); - - return $self; - } - - /** - * Invert the period date interval. - * - * @return static - */ - public function invertDateInterval() - { - return $this->setDateInterval($this->dateInterval->invert()); - } - - /** - * Set start and end date. - * - * @param DateTime|DateTimeInterface|string $start - * @param DateTime|DateTimeInterface|string|null $end - * - * @return static - */ - public function setDates($start, $end) - { - return $this->setStartDate($start)->setEndDate($end); - } - - /** - * Change the period options. - * - * @param int|null $options - * - * @throws InvalidArgumentException - * - * @return static - */ - public function setOptions($options) - { - if (!\is_int($options) && $options !== null) { - throw new InvalidPeriodParameterException('Invalid options.'); - } - - $self = $this->copyIfImmutable(); - $self->options = $options ?: 0; - - $self->handleChangedParameters(); - - return $self; - } - - /** - * Get the period options. - * - * @return int - */ - public function getOptions() - { - return $this->options; - } - - /** - * Toggle given options on or off. - * - * @param int $options - * @param bool|null $state - * - * @throws \InvalidArgumentException - * - * @return static - */ - public function toggleOptions($options, $state = null) - { - if ($state === null) { - $state = ($this->options & $options) !== $options; - } - - return $this->setOptions( - $state ? - $this->options | $options : - $this->options & ~$options - ); - } - - /** - * Toggle EXCLUDE_START_DATE option. - * - * @param bool $state - * - * @return static - */ - public function excludeStartDate($state = true) - { - return $this->toggleOptions(static::EXCLUDE_START_DATE, $state); - } - - /** - * Toggle EXCLUDE_END_DATE option. - * - * @param bool $state - * - * @return static - */ - public function excludeEndDate($state = true) - { - return $this->toggleOptions(static::EXCLUDE_END_DATE, $state); - } - - /** - * Get the underlying date interval. - * - * @return CarbonInterval - */ - public function getDateInterval() - { - return $this->dateInterval->copy(); - } - - /** - * Get start date of the period. - * - * @param string|null $rounding Optional rounding 'floor', 'ceil', 'round' using the period interval. - * - * @return CarbonInterface - */ - public function getStartDate(string $rounding = null) - { - $date = $this->startDate->avoidMutation(); - - return $rounding ? $date->round($this->getDateInterval(), $rounding) : $date; - } - - /** - * Get end date of the period. - * - * @param string|null $rounding Optional rounding 'floor', 'ceil', 'round' using the period interval. - * - * @return CarbonInterface|null - */ - public function getEndDate(string $rounding = null) - { - if (!$this->endDate) { - return null; - } - - $date = $this->endDate->avoidMutation(); - - return $rounding ? $date->round($this->getDateInterval(), $rounding) : $date; - } - - /** - * Get number of recurrences. - * - * @return int|float|null - */ - public function getRecurrences() - { - return $this->recurrences; - } - - /** - * Returns true if the start date should be excluded. - * - * @return bool - */ - public function isStartExcluded() - { - return ($this->options & static::EXCLUDE_START_DATE) !== 0; - } - - /** - * Returns true if the end date should be excluded. - * - * @return bool - */ - public function isEndExcluded() - { - return ($this->options & static::EXCLUDE_END_DATE) !== 0; - } - - /** - * Returns true if the start date should be included. - * - * @return bool - */ - public function isStartIncluded() - { - return !$this->isStartExcluded(); - } - - /** - * Returns true if the end date should be included. - * - * @return bool - */ - public function isEndIncluded() - { - return !$this->isEndExcluded(); - } - - /** - * Return the start if it's included by option, else return the start + 1 period interval. - * - * @return CarbonInterface - */ - public function getIncludedStartDate() - { - $start = $this->getStartDate(); - - if ($this->isStartExcluded()) { - return $start->add($this->getDateInterval()); - } - - return $start; - } - - /** - * Return the end if it's included by option, else return the end - 1 period interval. - * Warning: if the period has no fixed end, this method will iterate the period to calculate it. - * - * @return CarbonInterface - */ - public function getIncludedEndDate() - { - $end = $this->getEndDate(); - - if (!$end) { - return $this->calculateEnd(); - } - - if ($this->isEndExcluded()) { - return $end->sub($this->getDateInterval()); - } - - return $end; - } - - /** - * Add a filter to the stack. - * - * @SuppressWarnings(PHPMD.UnusedFormalParameter) - * - * @param callable $callback - * @param string $name - * - * @return static - */ - public function addFilter($callback, $name = null) - { - $self = $this->copyIfImmutable(); - $tuple = $self->createFilterTuple(\func_get_args()); - - $self->filters[] = $tuple; - - $self->handleChangedParameters(); - - return $self; - } - - /** - * Prepend a filter to the stack. - * - * @SuppressWarnings(PHPMD.UnusedFormalParameter) - * - * @param callable $callback - * @param string $name - * - * @return static - */ - public function prependFilter($callback, $name = null) - { - $self = $this->copyIfImmutable(); - $tuple = $self->createFilterTuple(\func_get_args()); - - array_unshift($self->filters, $tuple); - - $self->handleChangedParameters(); - - return $self; - } - - /** - * Remove a filter by instance or name. - * - * @param callable|string $filter - * - * @return static - */ - public function removeFilter($filter) - { - $self = $this->copyIfImmutable(); - $key = \is_callable($filter) ? 0 : 1; - - $self->filters = array_values(array_filter( - $this->filters, - function ($tuple) use ($key, $filter) { - return $tuple[$key] !== $filter; - } - )); - - $self->updateInternalState(); - - $self->handleChangedParameters(); - - return $self; - } - - /** - * Return whether given instance or name is in the filter stack. - * - * @param callable|string $filter - * - * @return bool - */ - public function hasFilter($filter) - { - $key = \is_callable($filter) ? 0 : 1; - - foreach ($this->filters as $tuple) { - if ($tuple[$key] === $filter) { - return true; - } - } - - return false; - } - - /** - * Get filters stack. - * - * @return array - */ - public function getFilters() - { - return $this->filters; - } - - /** - * Set filters stack. - * - * @param array $filters - * - * @return static - */ - public function setFilters(array $filters) - { - $self = $this->copyIfImmutable(); - $self->filters = $filters; - - $self->updateInternalState(); - - $self->handleChangedParameters(); - - return $self; - } - - /** - * Reset filters stack. - * - * @return static - */ - public function resetFilters() - { - $self = $this->copyIfImmutable(); - $self->filters = []; - - if ($self->endDate !== null) { - $self->filters[] = [static::END_DATE_FILTER, null]; - } - - if ($self->recurrences !== null) { - $self->filters[] = [static::RECURRENCES_FILTER, null]; - } - - $self->handleChangedParameters(); - - return $self; - } - - /** - * Add a recurrences filter (set maximum number of recurrences). - * - * @param int|float|null $recurrences - * - * @throws InvalidArgumentException - * - * @return static - */ - public function setRecurrences($recurrences) - { - if ((!is_numeric($recurrences) && $recurrences !== null) || $recurrences < 0) { - throw new InvalidPeriodParameterException('Invalid number of recurrences.'); - } - - if ($recurrences === null) { - return $this->removeFilter(static::RECURRENCES_FILTER); - } - - /** @var self $self */ - $self = $this->copyIfImmutable(); - $self->recurrences = $recurrences === INF ? INF : (int) $recurrences; - - if (!$self->hasFilter(static::RECURRENCES_FILTER)) { - return $self->addFilter(static::RECURRENCES_FILTER); - } - - $self->handleChangedParameters(); - - return $self; - } - - /** - * Change the period start date. - * - * @param DateTime|DateTimeInterface|string $date - * @param bool|null $inclusive - * - * @throws InvalidPeriodDateException - * - * @return static - */ - public function setStartDate($date, $inclusive = null) - { - if (!$this->isInfiniteDate($date) && !($date = ([$this->dateClass, 'make'])($date))) { - throw new InvalidPeriodDateException('Invalid start date.'); - } - - $self = $this->copyIfImmutable(); - $self->startDate = $date; - - if ($inclusive !== null) { - $self = $self->toggleOptions(static::EXCLUDE_START_DATE, !$inclusive); - } - - return $self; - } - - /** - * Change the period end date. - * - * @param DateTime|DateTimeInterface|string|null $date - * @param bool|null $inclusive - * - * @throws \InvalidArgumentException - * - * @return static - */ - public function setEndDate($date, $inclusive = null) - { - if ($date !== null && !$this->isInfiniteDate($date) && !$date = ([$this->dateClass, 'make'])($date)) { - throw new InvalidPeriodDateException('Invalid end date.'); - } - - if (!$date) { - return $this->removeFilter(static::END_DATE_FILTER); - } - - $self = $this->copyIfImmutable(); - $self->endDate = $date; - - if ($inclusive !== null) { - $self = $self->toggleOptions(static::EXCLUDE_END_DATE, !$inclusive); - } - - if (!$self->hasFilter(static::END_DATE_FILTER)) { - return $self->addFilter(static::END_DATE_FILTER); - } - - $self->handleChangedParameters(); - - return $self; - } - - /** - * Check if the current position is valid. - * - * @return bool - */ - #[ReturnTypeWillChange] - public function valid() - { - return $this->validateCurrentDate() === true; - } - - /** - * Return the current key. - * - * @return int|null - */ - #[ReturnTypeWillChange] - public function key() - { - return $this->valid() - ? $this->key - : null; - } - - /** - * Return the current date. - * - * @return CarbonInterface|null - */ - #[ReturnTypeWillChange] - public function current() - { - return $this->valid() - ? $this->prepareForReturn($this->current) - : null; - } - - /** - * Move forward to the next date. - * - * @throws RuntimeException - * - * @return void - */ - #[ReturnTypeWillChange] - public function next() - { - if ($this->current === null) { - $this->rewind(); - } - - if ($this->validationResult !== static::END_ITERATION) { - $this->key++; - - $this->incrementCurrentDateUntilValid(); - } - } - - /** - * Rewind to the start date. - * - * Iterating over a date in the UTC timezone avoids bug during backward DST change. - * - * @see https://bugs.php.net/bug.php?id=72255 - * @see https://bugs.php.net/bug.php?id=74274 - * @see https://wiki.php.net/rfc/datetime_and_daylight_saving_time - * - * @throws RuntimeException - * - * @return void - */ - #[ReturnTypeWillChange] - public function rewind() - { - $this->key = 0; - $this->current = ([$this->dateClass, 'make'])($this->startDate); - $settings = $this->getSettings(); - - if ($this->hasLocalTranslator()) { - $settings['locale'] = $this->getTranslatorLocale(); - } - - $this->current->settings($settings); - $this->timezone = static::intervalHasTime($this->dateInterval) ? $this->current->getTimezone() : null; - - if ($this->timezone) { - $this->current = $this->current->utc(); - } - - $this->validationResult = null; - - if ($this->isStartExcluded() || $this->validateCurrentDate() === false) { - $this->incrementCurrentDateUntilValid(); - } - } - - /** - * Skip iterations and returns iteration state (false if ended, true if still valid). - * - * @param int $count steps number to skip (1 by default) - * - * @return bool - */ - public function skip($count = 1) - { - for ($i = $count; $this->valid() && $i > 0; $i--) { - $this->next(); - } - - return $this->valid(); - } - - /** - * Format the date period as ISO 8601. - * - * @return string - */ - public function toIso8601String() - { - $parts = []; - - if ($this->recurrences !== null) { - $parts[] = 'R'.$this->recurrences; - } - - $parts[] = $this->startDate->toIso8601String(); - - $parts[] = $this->dateInterval->spec(); - - if ($this->endDate !== null) { - $parts[] = $this->endDate->toIso8601String(); - } - - return implode('/', $parts); - } - - /** - * Convert the date period into a string. - * - * @return string - */ - public function toString() - { - $format = $this->localToStringFormat ?? static::$toStringFormat; - - if ($format instanceof Closure) { - return $format($this); - } - - $translator = ([$this->dateClass, 'getTranslator'])(); - - $parts = []; - - $format = $format ?? ( - !$this->startDate->isStartOfDay() || ($this->endDate && !$this->endDate->isStartOfDay()) - ? 'Y-m-d H:i:s' - : 'Y-m-d' - ); - - if ($this->recurrences !== null) { - $parts[] = $this->translate('period_recurrences', [], $this->recurrences, $translator); - } - - $parts[] = $this->translate('period_interval', [':interval' => $this->dateInterval->forHumans([ - 'join' => true, - ])], null, $translator); - - $parts[] = $this->translate('period_start_date', [':date' => $this->startDate->rawFormat($format)], null, $translator); - - if ($this->endDate !== null) { - $parts[] = $this->translate('period_end_date', [':date' => $this->endDate->rawFormat($format)], null, $translator); - } - - $result = implode(' ', $parts); - - return mb_strtoupper(mb_substr($result, 0, 1)).mb_substr($result, 1); - } - - /** - * Format the date period as ISO 8601. - * - * @return string - */ - public function spec() - { - return $this->toIso8601String(); - } - - /** - * Cast the current instance into the given class. - * - * @param string $className The $className::instance() method will be called to cast the current object. - * - * @return DatePeriod - */ - public function cast(string $className) - { - if (!method_exists($className, 'instance')) { - if (is_a($className, DatePeriod::class, true)) { - return new $className( - $this->rawDate($this->getStartDate()), - $this->getDateInterval(), - $this->getEndDate() ? $this->rawDate($this->getIncludedEndDate()) : $this->getRecurrences(), - $this->isStartExcluded() ? DatePeriod::EXCLUDE_START_DATE : 0 - ); - } - - throw new InvalidCastException("$className has not the instance() method needed to cast the date."); - } - - return $className::instance($this); - } - - /** - * Return native DatePeriod PHP object matching the current instance. - * - * @example - * ``` - * var_dump(CarbonPeriod::create('2021-01-05', '2021-02-15')->toDatePeriod()); - * ``` - * - * @return DatePeriod - */ - public function toDatePeriod() - { - return $this->cast(DatePeriod::class); - } - - /** - * Return `true` if the period has no custom filter and is guaranteed to be endless. - * - * Note that we can't check if a period is endless as soon as it has custom filters - * because filters can emit `CarbonPeriod::END_ITERATION` to stop the iteration in - * a way we can't predict without actually iterating the period. - */ - public function isUnfilteredAndEndLess(): bool - { - foreach ($this->filters as $filter) { - switch ($filter) { - case [static::RECURRENCES_FILTER, null]: - if ($this->recurrences !== null && is_finite($this->recurrences)) { - return false; - } - - break; - - case [static::END_DATE_FILTER, null]: - if ($this->endDate !== null && !$this->endDate->isEndOfTime()) { - return false; - } - - break; - - default: - return false; - } - } - - return true; - } - - /** - * Convert the date period into an array without changing current iteration state. - * - * @return CarbonInterface[] - */ - public function toArray() - { - if ($this->isUnfilteredAndEndLess()) { - throw new EndLessPeriodException("Endless period can't be converted to array nor counted."); - } - - $state = [ - $this->key, - $this->current ? $this->current->avoidMutation() : null, - $this->validationResult, - ]; - - $result = iterator_to_array($this); - - [$this->key, $this->current, $this->validationResult] = $state; - - return $result; - } - - /** - * Count dates in the date period. - * - * @return int - */ - #[ReturnTypeWillChange] - public function count() - { - return \count($this->toArray()); - } - - /** - * Return the first date in the date period. - * - * @return CarbonInterface|null - */ - public function first() - { - if ($this->isUnfilteredAndEndLess()) { - foreach ($this as $date) { - $this->rewind(); - - return $date; - } - - return null; - } - - return ($this->toArray() ?: [])[0] ?? null; - } - - /** - * Return the last date in the date period. - * - * @return CarbonInterface|null - */ - public function last() - { - $array = $this->toArray(); - - return $array ? $array[\count($array) - 1] : null; - } - - /** - * Convert the date period into a string. - * - * @return string - */ - public function __toString() - { - return $this->toString(); - } - - /** - * Add aliases for setters. - * - * CarbonPeriod::days(3)->hours(5)->invert() - * ->sinceNow()->until('2010-01-10') - * ->filter(...) - * ->count() - * - * Note: We use magic method to let static and instance aliases with the same names. - * - * @param string $method - * @param array $parameters - * - * @return mixed - */ - public function __call($method, $parameters) - { - if (static::hasMacro($method)) { - return static::bindMacroContext($this, function () use (&$method, &$parameters) { - return $this->callMacro($method, $parameters); - }); - } - - $roundedValue = $this->callRoundMethod($method, $parameters); - - if ($roundedValue !== null) { - return $roundedValue; - } - - switch ($method) { - case 'start': - case 'since': - self::setDefaultParameters($parameters, [ - [0, 'date', null], - ]); - - return $this->setStartDate(...$parameters); - - case 'sinceNow': - return $this->setStartDate(new Carbon(), ...$parameters); - - case 'end': - case 'until': - self::setDefaultParameters($parameters, [ - [0, 'date', null], - ]); - - return $this->setEndDate(...$parameters); - - case 'untilNow': - return $this->setEndDate(new Carbon(), ...$parameters); - - case 'dates': - case 'between': - self::setDefaultParameters($parameters, [ - [0, 'start', null], - [1, 'end', null], - ]); - - return $this->setDates(...$parameters); - - case 'recurrences': - case 'times': - self::setDefaultParameters($parameters, [ - [0, 'recurrences', null], - ]); - - return $this->setRecurrences(...$parameters); - - case 'options': - self::setDefaultParameters($parameters, [ - [0, 'options', null], - ]); - - return $this->setOptions(...$parameters); - - case 'toggle': - self::setDefaultParameters($parameters, [ - [0, 'options', null], - ]); - - return $this->toggleOptions(...$parameters); - - case 'filter': - case 'push': - return $this->addFilter(...$parameters); - - case 'prepend': - return $this->prependFilter(...$parameters); - - case 'filters': - self::setDefaultParameters($parameters, [ - [0, 'filters', []], - ]); - - return $this->setFilters(...$parameters); - - case 'interval': - case 'each': - case 'every': - case 'step': - case 'stepBy': - return $this->setDateInterval(...$parameters); - - case 'invert': - return $this->invertDateInterval(); - - case 'years': - case 'year': - case 'months': - case 'month': - case 'weeks': - case 'week': - case 'days': - case 'dayz': - case 'day': - case 'hours': - case 'hour': - case 'minutes': - case 'minute': - case 'seconds': - case 'second': - case 'milliseconds': - case 'millisecond': - case 'microseconds': - case 'microsecond': - return $this->setDateInterval(( - // Override default P1D when instantiating via fluent setters. - [$this->isDefaultInterval ? new CarbonInterval('PT0S') : $this->dateInterval, $method] - )(...$parameters)); - } - - $dateClass = $this->dateClass; - - if ($this->localStrictModeEnabled ?? $dateClass::isStrictModeEnabled()) { - throw new UnknownMethodException($method); - } - - return $this; - } - - /** - * Set the instance's timezone from a string or object and apply it to start/end. - * - * @param \DateTimeZone|string $timezone - * - * @return static - */ - public function setTimezone($timezone) - { - $self = $this->copyIfImmutable(); - $self->tzName = $timezone; - $self->timezone = $timezone; - - if ($self->startDate) { - $self = $self->setStartDate($self->startDate->setTimezone($timezone)); - } - - if ($self->endDate) { - $self = $self->setEndDate($self->endDate->setTimezone($timezone)); - } - - return $self; - } - - /** - * Set the instance's timezone from a string or object and add/subtract the offset difference to start/end. - * - * @param \DateTimeZone|string $timezone - * - * @return static - */ - public function shiftTimezone($timezone) - { - $self = $this->copyIfImmutable(); - $self->tzName = $timezone; - $self->timezone = $timezone; - - if ($self->startDate) { - $self = $self->setStartDate($self->startDate->shiftTimezone($timezone)); - } - - if ($self->endDate) { - $self = $self->setEndDate($self->endDate->shiftTimezone($timezone)); - } - - return $self; - } - - /** - * Returns the end is set, else calculated from start an recurrences. - * - * @param string|null $rounding Optional rounding 'floor', 'ceil', 'round' using the period interval. - * - * @return CarbonInterface - */ - public function calculateEnd(string $rounding = null) - { - if ($end = $this->getEndDate($rounding)) { - return $end; - } - - if ($this->dateInterval->isEmpty()) { - return $this->getStartDate($rounding); - } - - $date = $this->getEndFromRecurrences() ?? $this->iterateUntilEnd(); - - if ($date && $rounding) { - $date = $date->avoidMutation()->round($this->getDateInterval(), $rounding); - } - - return $date; - } - - /** - * @return CarbonInterface|null - */ - private function getEndFromRecurrences() - { - if ($this->recurrences === null) { - throw new UnreachableException( - "Could not calculate period end without either explicit end or recurrences.\n". - "If you're looking for a forever-period, use ->setRecurrences(INF)." - ); - } - - if ($this->recurrences === INF) { - $start = $this->getStartDate(); - - return $start < $start->avoidMutation()->add($this->getDateInterval()) - ? CarbonImmutable::endOfTime() - : CarbonImmutable::startOfTime(); - } - - if ($this->filters === [[static::RECURRENCES_FILTER, null]]) { - return $this->getStartDate()->avoidMutation()->add( - $this->getDateInterval()->times( - $this->recurrences - ($this->isStartExcluded() ? 0 : 1) - ) - ); - } - - return null; - } - - /** - * @return CarbonInterface|null - */ - private function iterateUntilEnd() - { - $attempts = 0; - $date = null; - - foreach ($this as $date) { - if (++$attempts > static::END_MAX_ATTEMPTS) { - throw new UnreachableException( - 'Could not calculate period end after iterating '.static::END_MAX_ATTEMPTS.' times.' - ); - } - } - - return $date; - } - - /** - * Returns true if the current period overlaps the given one (if 1 parameter passed) - * or the period between 2 dates (if 2 parameters passed). - * - * @param CarbonPeriod|\DateTimeInterface|Carbon|CarbonImmutable|string $rangeOrRangeStart - * @param \DateTimeInterface|Carbon|CarbonImmutable|string|null $rangeEnd - * - * @return bool - */ - public function overlaps($rangeOrRangeStart, $rangeEnd = null) - { - $range = $rangeEnd ? static::create($rangeOrRangeStart, $rangeEnd) : $rangeOrRangeStart; - - if (!($range instanceof self)) { - $range = static::create($range); - } - - [$start, $end] = $this->orderCouple($this->getStartDate(), $this->calculateEnd()); - [$rangeStart, $rangeEnd] = $this->orderCouple($range->getStartDate(), $range->calculateEnd()); - - return $end > $rangeStart && $rangeEnd > $start; - } - - /** - * Execute a given function on each date of the period. - * - * @example - * ``` - * Carbon::create('2020-11-29')->daysUntil('2020-12-24')->forEach(function (Carbon $date) { - * echo $date->diffInDays('2020-12-25')." days before Christmas!\n"; - * }); - * ``` - * - * @param callable $callback - */ - public function forEach(callable $callback) - { - foreach ($this as $date) { - $callback($date); - } - } - - /** - * Execute a given function on each date of the period and yield the result of this function. - * - * @example - * ``` - * $period = Carbon::create('2020-11-29')->daysUntil('2020-12-24'); - * echo implode("\n", iterator_to_array($period->map(function (Carbon $date) { - * return $date->diffInDays('2020-12-25').' days before Christmas!'; - * }))); - * ``` - * - * @param callable $callback - * - * @return \Generator - */ - public function map(callable $callback) - { - foreach ($this as $date) { - yield $callback($date); - } - } - - /** - * Determines if the instance is equal to another. - * Warning: if options differ, instances wil never be equal. - * - * @param mixed $period - * - * @see equalTo() - * - * @return bool - */ - public function eq($period): bool - { - return $this->equalTo($period); - } - - /** - * Determines if the instance is equal to another. - * Warning: if options differ, instances wil never be equal. - * - * @param mixed $period - * - * @return bool - */ - public function equalTo($period): bool - { - if (!($period instanceof self)) { - $period = self::make($period); - } - - $end = $this->getEndDate(); - - return $period !== null - && $this->getDateInterval()->eq($period->getDateInterval()) - && $this->getStartDate()->eq($period->getStartDate()) - && ($end ? $end->eq($period->getEndDate()) : $this->getRecurrences() === $period->getRecurrences()) - && ($this->getOptions() & (~static::IMMUTABLE)) === ($period->getOptions() & (~static::IMMUTABLE)); - } - - /** - * Determines if the instance is not equal to another. - * Warning: if options differ, instances wil never be equal. - * - * @param mixed $period - * - * @see notEqualTo() - * - * @return bool - */ - public function ne($period): bool - { - return $this->notEqualTo($period); - } - - /** - * Determines if the instance is not equal to another. - * Warning: if options differ, instances wil never be equal. - * - * @param mixed $period - * - * @return bool - */ - public function notEqualTo($period): bool - { - return !$this->eq($period); - } - - /** - * Determines if the start date is before an other given date. - * (Rather start/end are included by options is ignored.) - * - * @param mixed $date - * - * @return bool - */ - public function startsBefore($date = null): bool - { - return $this->getStartDate()->lessThan($this->resolveCarbon($date)); - } - - /** - * Determines if the start date is before or the same as a given date. - * (Rather start/end are included by options is ignored.) - * - * @param mixed $date - * - * @return bool - */ - public function startsBeforeOrAt($date = null): bool - { - return $this->getStartDate()->lessThanOrEqualTo($this->resolveCarbon($date)); - } - - /** - * Determines if the start date is after an other given date. - * (Rather start/end are included by options is ignored.) - * - * @param mixed $date - * - * @return bool - */ - public function startsAfter($date = null): bool - { - return $this->getStartDate()->greaterThan($this->resolveCarbon($date)); - } - - /** - * Determines if the start date is after or the same as a given date. - * (Rather start/end are included by options is ignored.) - * - * @param mixed $date - * - * @return bool - */ - public function startsAfterOrAt($date = null): bool - { - return $this->getStartDate()->greaterThanOrEqualTo($this->resolveCarbon($date)); - } - - /** - * Determines if the start date is the same as a given date. - * (Rather start/end are included by options is ignored.) - * - * @param mixed $date - * - * @return bool - */ - public function startsAt($date = null): bool - { - return $this->getStartDate()->equalTo($this->resolveCarbon($date)); - } - - /** - * Determines if the end date is before an other given date. - * (Rather start/end are included by options is ignored.) - * - * @param mixed $date - * - * @return bool - */ - public function endsBefore($date = null): bool - { - return $this->calculateEnd()->lessThan($this->resolveCarbon($date)); - } - - /** - * Determines if the end date is before or the same as a given date. - * (Rather start/end are included by options is ignored.) - * - * @param mixed $date - * - * @return bool - */ - public function endsBeforeOrAt($date = null): bool - { - return $this->calculateEnd()->lessThanOrEqualTo($this->resolveCarbon($date)); - } - - /** - * Determines if the end date is after an other given date. - * (Rather start/end are included by options is ignored.) - * - * @param mixed $date - * - * @return bool - */ - public function endsAfter($date = null): bool - { - return $this->calculateEnd()->greaterThan($this->resolveCarbon($date)); - } - - /** - * Determines if the end date is after or the same as a given date. - * (Rather start/end are included by options is ignored.) - * - * @param mixed $date - * - * @return bool - */ - public function endsAfterOrAt($date = null): bool - { - return $this->calculateEnd()->greaterThanOrEqualTo($this->resolveCarbon($date)); - } - - /** - * Determines if the end date is the same as a given date. - * (Rather start/end are included by options is ignored.) - * - * @param mixed $date - * - * @return bool - */ - public function endsAt($date = null): bool - { - return $this->calculateEnd()->equalTo($this->resolveCarbon($date)); - } - - /** - * Return true if start date is now or later. - * (Rather start/end are included by options is ignored.) - * - * @return bool - */ - public function isStarted(): bool - { - return $this->startsBeforeOrAt(); - } - - /** - * Return true if end date is now or later. - * (Rather start/end are included by options is ignored.) - * - * @return bool - */ - public function isEnded(): bool - { - return $this->endsBeforeOrAt(); - } - - /** - * Return true if now is between start date (included) and end date (excluded). - * (Rather start/end are included by options is ignored.) - * - * @return bool - */ - public function isInProgress(): bool - { - return $this->isStarted() && !$this->isEnded(); - } - - /** - * Round the current instance at the given unit with given precision if specified and the given function. - * - * @param string $unit - * @param float|int|string|\DateInterval|null $precision - * @param string $function - * - * @return static - */ - public function roundUnit($unit, $precision = 1, $function = 'round') - { - $self = $this->copyIfImmutable(); - $self = $self->setStartDate($self->getStartDate()->roundUnit($unit, $precision, $function)); - - if ($self->endDate) { - $self = $self->setEndDate($self->getEndDate()->roundUnit($unit, $precision, $function)); - } - - return $self->setDateInterval($self->getDateInterval()->roundUnit($unit, $precision, $function)); - } - - /** - * Truncate the current instance at the given unit with given precision if specified. - * - * @param string $unit - * @param float|int|string|\DateInterval|null $precision - * - * @return static - */ - public function floorUnit($unit, $precision = 1) - { - return $this->roundUnit($unit, $precision, 'floor'); - } - - /** - * Ceil the current instance at the given unit with given precision if specified. - * - * @param string $unit - * @param float|int|string|\DateInterval|null $precision - * - * @return static - */ - public function ceilUnit($unit, $precision = 1) - { - return $this->roundUnit($unit, $precision, 'ceil'); - } - - /** - * Round the current instance second with given precision if specified (else period interval is used). - * - * @param float|int|string|\DateInterval|null $precision - * @param string $function - * - * @return static - */ - public function round($precision = null, $function = 'round') - { - return $this->roundWith( - $precision ?? $this->getDateInterval()->setLocalTranslator(TranslatorImmutable::get('en'))->forHumans(), - $function - ); - } - - /** - * Round the current instance second with given precision if specified (else period interval is used). - * - * @param float|int|string|\DateInterval|null $precision - * - * @return static - */ - public function floor($precision = null) - { - return $this->round($precision, 'floor'); - } - - /** - * Ceil the current instance second with given precision if specified (else period interval is used). - * - * @param float|int|string|\DateInterval|null $precision - * - * @return static - */ - public function ceil($precision = null) - { - return $this->round($precision, 'ceil'); - } - - /** - * Specify data which should be serialized to JSON. - * - * @link https://php.net/manual/en/jsonserializable.jsonserialize.php - * - * @return CarbonInterface[] - */ - #[ReturnTypeWillChange] - public function jsonSerialize() - { - return $this->toArray(); - } - - /** - * Return true if the given date is between start and end. - * - * @param \Carbon\Carbon|\Carbon\CarbonPeriod|\Carbon\CarbonInterval|\DateInterval|\DatePeriod|\DateTimeInterface|string|null $date - * - * @return bool - */ - public function contains($date = null): bool - { - $startMethod = 'startsBefore'.($this->isStartIncluded() ? 'OrAt' : ''); - $endMethod = 'endsAfter'.($this->isEndIncluded() ? 'OrAt' : ''); - - return $this->$startMethod($date) && $this->$endMethod($date); - } - - /** - * Return true if the current period follows a given other period (with no overlap). - * For instance, [2019-08-01 -> 2019-08-12] follows [2019-07-29 -> 2019-07-31] - * Note than in this example, follows() would be false if 2019-08-01 or 2019-07-31 was excluded by options. - * - * @param \Carbon\CarbonPeriod|\DatePeriod|string $period - * - * @return bool - */ - public function follows($period, ...$arguments): bool - { - $period = $this->resolveCarbonPeriod($period, ...$arguments); - - return $this->getIncludedStartDate()->equalTo($period->getIncludedEndDate()->add($period->getDateInterval())); - } - - /** - * Return true if the given other period follows the current one (with no overlap). - * For instance, [2019-07-29 -> 2019-07-31] is followed by [2019-08-01 -> 2019-08-12] - * Note than in this example, isFollowedBy() would be false if 2019-08-01 or 2019-07-31 was excluded by options. - * - * @param \Carbon\CarbonPeriod|\DatePeriod|string $period - * - * @return bool - */ - public function isFollowedBy($period, ...$arguments): bool - { - $period = $this->resolveCarbonPeriod($period, ...$arguments); - - return $period->follows($this); - } - - /** - * Return true if the given period either follows or is followed by the current one. - * - * @see follows() - * @see isFollowedBy() - * - * @param \Carbon\CarbonPeriod|\DatePeriod|string $period - * - * @return bool - */ - public function isConsecutiveWith($period, ...$arguments): bool - { - return $this->follows($period, ...$arguments) || $this->isFollowedBy($period, ...$arguments); - } - - /** - * Update properties after removing built-in filters. - * - * @return void - */ - protected function updateInternalState() - { - if (!$this->hasFilter(static::END_DATE_FILTER)) { - $this->endDate = null; - } - - if (!$this->hasFilter(static::RECURRENCES_FILTER)) { - $this->recurrences = null; - } - } - - /** - * Create a filter tuple from raw parameters. - * - * Will create an automatic filter callback for one of Carbon's is* methods. - * - * @param array $parameters - * - * @return array - */ - protected function createFilterTuple(array $parameters) - { - $method = array_shift($parameters); - - if (!$this->isCarbonPredicateMethod($method)) { - return [$method, array_shift($parameters)]; - } - - return [function ($date) use ($method, $parameters) { - return ([$date, $method])(...$parameters); - }, $method]; - } - - /** - * Return whether given callable is a string pointing to one of Carbon's is* methods - * and should be automatically converted to a filter callback. - * - * @param callable $callable - * - * @return bool - */ - protected function isCarbonPredicateMethod($callable) - { - return \is_string($callable) && str_starts_with($callable, 'is') && - (method_exists($this->dateClass, $callable) || ([$this->dateClass, 'hasMacro'])($callable)); - } - - /** - * Recurrences filter callback (limits number of recurrences). - * - * @SuppressWarnings(PHPMD.UnusedFormalParameter) - * - * @param \Carbon\Carbon $current - * @param int $key - * - * @return bool|string - */ - protected function filterRecurrences($current, $key) - { - if ($key < $this->recurrences) { - return true; - } - - return static::END_ITERATION; - } - - /** - * End date filter callback. - * - * @param \Carbon\Carbon $current - * - * @return bool|string - */ - protected function filterEndDate($current) - { - if (!$this->isEndExcluded() && $current == $this->endDate) { - return true; - } - - if ($this->dateInterval->invert ? $current > $this->endDate : $current < $this->endDate) { - return true; - } - - return static::END_ITERATION; - } - - /** - * End iteration filter callback. - * - * @return string - */ - protected function endIteration() - { - return static::END_ITERATION; - } - - /** - * Handle change of the parameters. - */ - protected function handleChangedParameters() - { - if (($this->getOptions() & static::IMMUTABLE) && $this->dateClass === Carbon::class) { - $this->dateClass = CarbonImmutable::class; - } elseif (!($this->getOptions() & static::IMMUTABLE) && $this->dateClass === CarbonImmutable::class) { - $this->dateClass = Carbon::class; - } - - $this->validationResult = null; - } - - /** - * Validate current date and stop iteration when necessary. - * - * Returns true when current date is valid, false if it is not, or static::END_ITERATION - * when iteration should be stopped. - * - * @return bool|string - */ - protected function validateCurrentDate() - { - if ($this->current === null) { - $this->rewind(); - } - - // Check after the first rewind to avoid repeating the initial validation. - return $this->validationResult ?? ($this->validationResult = $this->checkFilters()); - } - - /** - * Check whether current value and key pass all the filters. - * - * @return bool|string - */ - protected function checkFilters() - { - $current = $this->prepareForReturn($this->current); - - foreach ($this->filters as $tuple) { - $result = \call_user_func( - $tuple[0], - $current->avoidMutation(), - $this->key, - $this - ); - - if ($result === static::END_ITERATION) { - return static::END_ITERATION; - } - - if (!$result) { - return false; - } - } - - return true; - } - - /** - * Prepare given date to be returned to the external logic. - * - * @param CarbonInterface $date - * - * @return CarbonInterface - */ - protected function prepareForReturn(CarbonInterface $date) - { - $date = ([$this->dateClass, 'make'])($date); - - if ($this->timezone) { - $date = $date->setTimezone($this->timezone); - } - - return $date; - } - - /** - * Keep incrementing the current date until a valid date is found or the iteration is ended. - * - * @throws RuntimeException - * - * @return void - */ - protected function incrementCurrentDateUntilValid() - { - $attempts = 0; - - do { - $this->current = $this->current->add($this->dateInterval); - - $this->validationResult = null; - - if (++$attempts > static::NEXT_MAX_ATTEMPTS) { - throw new UnreachableException('Could not find next valid date.'); - } - } while ($this->validateCurrentDate() === false); - } - - /** - * Call given macro. - * - * @param string $name - * @param array $parameters - * - * @return mixed - */ - protected function callMacro($name, $parameters) - { - $macro = static::$macros[$name]; - - if ($macro instanceof Closure) { - $boundMacro = @$macro->bindTo($this, static::class) ?: @$macro->bindTo(null, static::class); - - return ($boundMacro ?: $macro)(...$parameters); - } - - return $macro(...$parameters); - } - - /** - * Return the Carbon instance passed through, a now instance in the same timezone - * if null given or parse the input if string given. - * - * @param \Carbon\Carbon|\Carbon\CarbonPeriod|\Carbon\CarbonInterval|\DateInterval|\DatePeriod|\DateTimeInterface|string|null $date - * - * @return \Carbon\CarbonInterface - */ - protected function resolveCarbon($date = null) - { - return $this->getStartDate()->nowWithSameTz()->carbonize($date); - } - - /** - * Resolve passed arguments or DatePeriod to a CarbonPeriod object. - * - * @param mixed $period - * @param mixed ...$arguments - * - * @return static - */ - protected function resolveCarbonPeriod($period, ...$arguments) - { - if ($period instanceof self) { - return $period; - } - - return $period instanceof DatePeriod - ? static::instance($period) - : static::create($period, ...$arguments); - } - - private function orderCouple($first, $second): array - { - return $first > $second ? [$second, $first] : [$first, $second]; - } - - private function makeDateTime($value): ?DateTimeInterface - { - if ($value instanceof DateTimeInterface) { - return $value; - } - - if (\is_string($value)) { - $value = trim($value); - - if (!preg_match('/^P[\dT]/', $value) && - !preg_match('/^R\d/', $value) && - preg_match('/[a-z\d]/i', $value) - ) { - $dateClass = $this->dateClass; - - return $dateClass::parse($value, $this->tzName); - } - } - - return null; - } - - private function isInfiniteDate($date): bool - { - return $date instanceof CarbonInterface && ($date->isEndOfTime() || $date->isStartOfTime()); - } - - private function rawDate($date): ?DateTimeInterface - { - if ($date === false || $date === null) { - return null; - } - - if ($date instanceof CarbonInterface) { - return $date->isMutable() - ? $date->toDateTime() - : $date->toDateTimeImmutable(); - } - - if (\in_array(\get_class($date), [DateTime::class, DateTimeImmutable::class], true)) { - return $date; - } - - $class = $date instanceof DateTime ? DateTime::class : DateTimeImmutable::class; - - return new $class($date->format('Y-m-d H:i:s.u'), $date->getTimezone()); - } - - private static function setDefaultParameters(array &$parameters, array $defaults): void - { - foreach ($defaults as [$index, $name, $value]) { - if (!\array_key_exists($index, $parameters) && !\array_key_exists($name, $parameters)) { - $parameters[$index] = $value; - } - } - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/CarbonPeriodImmutable.php b/vendor/nesbot/carbon/src/Carbon/CarbonPeriodImmutable.php deleted file mode 100644 index f0d0ee28..00000000 --- a/vendor/nesbot/carbon/src/Carbon/CarbonPeriodImmutable.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -class CarbonPeriodImmutable extends CarbonPeriod -{ - /** - * Default date class of iteration items. - * - * @var string - */ - protected const DEFAULT_DATE_CLASS = CarbonImmutable::class; - - /** - * Date class of iteration items. - * - * @var string - */ - protected $dateClass = CarbonImmutable::class; - - /** - * Prepare the instance to be set (self if mutable to be mutated, - * copy if immutable to generate a new instance). - * - * @return static - */ - protected function copyIfImmutable() - { - return $this->constructed ? clone $this : $this; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/CarbonTimeZone.php b/vendor/nesbot/carbon/src/Carbon/CarbonTimeZone.php deleted file mode 100644 index c81899f1..00000000 --- a/vendor/nesbot/carbon/src/Carbon/CarbonTimeZone.php +++ /dev/null @@ -1,320 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -use Carbon\Exceptions\InvalidCastException; -use Carbon\Exceptions\InvalidTimeZoneException; -use DateTimeInterface; -use DateTimeZone; -use Throwable; - -class CarbonTimeZone extends DateTimeZone -{ - public function __construct($timezone = null) - { - parent::__construct(static::getDateTimeZoneNameFromMixed($timezone)); - } - - protected static function parseNumericTimezone($timezone) - { - if ($timezone <= -100 || $timezone >= 100) { - throw new InvalidTimeZoneException('Absolute timezone offset cannot be greater than 100.'); - } - - return ($timezone >= 0 ? '+' : '').ltrim($timezone, '+').':00'; - } - - protected static function getDateTimeZoneNameFromMixed($timezone) - { - if ($timezone === null) { - return date_default_timezone_get(); - } - - if (\is_string($timezone)) { - $timezone = preg_replace('/^\s*([+-]\d+)(\d{2})\s*$/', '$1:$2', $timezone); - } - - if (is_numeric($timezone)) { - return static::parseNumericTimezone($timezone); - } - - return $timezone; - } - - protected static function getDateTimeZoneFromName(&$name) - { - return @timezone_open($name = (string) static::getDateTimeZoneNameFromMixed($name)); - } - - /** - * Cast the current instance into the given class. - * - * @param string $className The $className::instance() method will be called to cast the current object. - * - * @return DateTimeZone - */ - public function cast(string $className) - { - if (!method_exists($className, 'instance')) { - if (is_a($className, DateTimeZone::class, true)) { - return new $className($this->getName()); - } - - throw new InvalidCastException("$className has not the instance() method needed to cast the date."); - } - - return $className::instance($this); - } - - /** - * Create a CarbonTimeZone from mixed input. - * - * @param DateTimeZone|string|int|null $object original value to get CarbonTimeZone from it. - * @param DateTimeZone|string|int|null $objectDump dump of the object for error messages. - * - * @throws InvalidTimeZoneException - * - * @return false|static - */ - public static function instance($object = null, $objectDump = null) - { - $tz = $object; - - if ($tz instanceof static) { - return $tz; - } - - if ($tz === null) { - return new static(); - } - - if (!$tz instanceof DateTimeZone) { - $tz = static::getDateTimeZoneFromName($object); - } - - if ($tz !== false) { - return new static($tz->getName()); - } - - if (Carbon::isStrictModeEnabled()) { - throw new InvalidTimeZoneException('Unknown or bad timezone ('.($objectDump ?: $object).')'); - } - - return false; - } - - /** - * Returns abbreviated name of the current timezone according to DST setting. - * - * @param bool $dst - * - * @return string - */ - public function getAbbreviatedName($dst = false) - { - $name = $this->getName(); - - foreach ($this->listAbbreviations() as $abbreviation => $zones) { - foreach ($zones as $zone) { - if ($zone['timezone_id'] === $name && $zone['dst'] == $dst) { - return $abbreviation; - } - } - } - - return 'unknown'; - } - - /** - * @alias getAbbreviatedName - * - * Returns abbreviated name of the current timezone according to DST setting. - * - * @param bool $dst - * - * @return string - */ - public function getAbbr($dst = false) - { - return $this->getAbbreviatedName($dst); - } - - /** - * Get the offset as string "sHH:MM" (such as "+00:00" or "-12:30"). - * - * @param DateTimeInterface|null $date - * - * @return string - */ - public function toOffsetName(DateTimeInterface $date = null) - { - return static::getOffsetNameFromMinuteOffset( - $this->getOffset($date ?: Carbon::now($this)) / 60 - ); - } - - /** - * Returns a new CarbonTimeZone object using the offset string instead of region string. - * - * @param DateTimeInterface|null $date - * - * @return CarbonTimeZone - */ - public function toOffsetTimeZone(DateTimeInterface $date = null) - { - return new static($this->toOffsetName($date)); - } - - /** - * Returns the first region string (such as "America/Toronto") that matches the current timezone or - * false if no match is found. - * - * @see timezone_name_from_abbr native PHP function. - * - * @param DateTimeInterface|null $date - * @param int $isDst - * - * @return string|false - */ - public function toRegionName(DateTimeInterface $date = null, $isDst = 1) - { - $name = $this->getName(); - $firstChar = substr($name, 0, 1); - - if ($firstChar !== '+' && $firstChar !== '-') { - return $name; - } - - $date = $date ?: Carbon::now($this); - - // Integer construction no longer supported since PHP 8 - // @codeCoverageIgnoreStart - try { - $offset = @$this->getOffset($date) ?: 0; - } catch (Throwable $e) { - $offset = 0; - } - // @codeCoverageIgnoreEnd - - $name = @timezone_name_from_abbr('', $offset, $isDst); - - if ($name) { - return $name; - } - - foreach (timezone_identifiers_list() as $timezone) { - if (Carbon::instance($date)->tz($timezone)->getOffset() === $offset) { - return $timezone; - } - } - - return false; - } - - /** - * Returns a new CarbonTimeZone object using the region string instead of offset string. - * - * @param DateTimeInterface|null $date - * - * @return CarbonTimeZone|false - */ - public function toRegionTimeZone(DateTimeInterface $date = null) - { - $tz = $this->toRegionName($date); - - if ($tz !== false) { - return new static($tz); - } - - if (Carbon::isStrictModeEnabled()) { - throw new InvalidTimeZoneException('Unknown timezone for offset '.$this->getOffset($date ?: Carbon::now($this)).' seconds.'); - } - - return false; - } - - /** - * Cast to string (get timezone name). - * - * @return string - */ - public function __toString() - { - return $this->getName(); - } - - /** - * Return the type number: - * - * Type 1; A UTC offset, such as -0300 - * Type 2; A timezone abbreviation, such as GMT - * Type 3: A timezone identifier, such as Europe/London - */ - public function getType(): int - { - return preg_match('/"timezone_type";i:(\d)/', serialize($this), $match) ? (int) $match[1] : 3; - } - - /** - * Create a CarbonTimeZone from mixed input. - * - * @param DateTimeZone|string|int|null $object - * - * @return false|static - */ - public static function create($object = null) - { - return static::instance($object); - } - - /** - * Create a CarbonTimeZone from int/float hour offset. - * - * @param float $hourOffset number of hour of the timezone shift (can be decimal). - * - * @return false|static - */ - public static function createFromHourOffset(float $hourOffset) - { - return static::createFromMinuteOffset($hourOffset * Carbon::MINUTES_PER_HOUR); - } - - /** - * Create a CarbonTimeZone from int/float minute offset. - * - * @param float $minuteOffset number of total minutes of the timezone shift. - * - * @return false|static - */ - public static function createFromMinuteOffset(float $minuteOffset) - { - return static::instance(static::getOffsetNameFromMinuteOffset($minuteOffset)); - } - - /** - * Convert a total minutes offset into a standardized timezone offset string. - * - * @param float $minutes number of total minutes of the timezone shift. - * - * @return string - */ - public static function getOffsetNameFromMinuteOffset(float $minutes): string - { - $minutes = round($minutes); - $unsignedMinutes = abs($minutes); - - return ($minutes < 0 ? '-' : '+'). - str_pad((string) floor($unsignedMinutes / 60), 2, '0', STR_PAD_LEFT). - ':'. - str_pad((string) ($unsignedMinutes % 60), 2, '0', STR_PAD_LEFT); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php b/vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php deleted file mode 100644 index 4f35d6c6..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Cli; - -class Invoker -{ - public const CLI_CLASS_NAME = 'Carbon\\Cli'; - - protected function runWithCli(string $className, array $parameters): bool - { - $cli = new $className(); - - return $cli(...$parameters); - } - - public function __invoke(...$parameters): bool - { - if (class_exists(self::CLI_CLASS_NAME)) { - return $this->runWithCli(self::CLI_CLASS_NAME, $parameters); - } - - $function = (($parameters[1] ?? '') === 'install' ? ($parameters[2] ?? null) : null) ?: 'shell_exec'; - $function('composer require carbon-cli/carbon-cli --no-interaction'); - - echo 'Installation succeeded.'; - - return true; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/BadComparisonUnitException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/BadComparisonUnitException.php deleted file mode 100644 index 3ca8837d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/BadComparisonUnitException.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use Throwable; - -class BadComparisonUnitException extends UnitException -{ - /** - * The unit. - * - * @var string - */ - protected $unit; - - /** - * Constructor. - * - * @param string $unit - * @param int $code - * @param Throwable|null $previous - */ - public function __construct($unit, $code = 0, Throwable $previous = null) - { - $this->unit = $unit; - - parent::__construct("Bad comparison unit: '$unit'", $code, $previous); - } - - /** - * Get the unit. - * - * @return string - */ - public function getUnit(): string - { - return $this->unit; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentConstructorException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentConstructorException.php deleted file mode 100644 index 2e222e54..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentConstructorException.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use BadMethodCallException as BaseBadMethodCallException; -use Throwable; - -class BadFluentConstructorException extends BaseBadMethodCallException implements BadMethodCallException -{ - /** - * The method. - * - * @var string - */ - protected $method; - - /** - * Constructor. - * - * @param string $method - * @param int $code - * @param Throwable|null $previous - */ - public function __construct($method, $code = 0, Throwable $previous = null) - { - $this->method = $method; - - parent::__construct(sprintf("Unknown fluent constructor '%s'.", $method), $code, $previous); - } - - /** - * Get the method. - * - * @return string - */ - public function getMethod(): string - { - return $this->method; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentSetterException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentSetterException.php deleted file mode 100644 index 4ceaa2ef..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentSetterException.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use BadMethodCallException as BaseBadMethodCallException; -use Throwable; - -class BadFluentSetterException extends BaseBadMethodCallException implements BadMethodCallException -{ - /** - * The setter. - * - * @var string - */ - protected $setter; - - /** - * Constructor. - * - * @param string $setter - * @param int $code - * @param Throwable|null $previous - */ - public function __construct($setter, $code = 0, Throwable $previous = null) - { - $this->setter = $setter; - - parent::__construct(sprintf("Unknown fluent setter '%s'", $setter), $code, $previous); - } - - /** - * Get the setter. - * - * @return string - */ - public function getSetter(): string - { - return $this->setter; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/BadMethodCallException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/BadMethodCallException.php deleted file mode 100644 index 108206d3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/BadMethodCallException.php +++ /dev/null @@ -1,17 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -interface BadMethodCallException extends Exception -{ - // -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/EndLessPeriodException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/EndLessPeriodException.php deleted file mode 100644 index e1049269..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/EndLessPeriodException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use RuntimeException as BaseRuntimeException; - -final class EndLessPeriodException extends BaseRuntimeException implements RuntimeException -{ - // -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/Exception.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/Exception.php deleted file mode 100644 index 8ad747e7..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/Exception.php +++ /dev/null @@ -1,17 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -interface Exception -{ - // -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/ImmutableException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/ImmutableException.php deleted file mode 100644 index db334c6c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/ImmutableException.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use RuntimeException as BaseRuntimeException; -use Throwable; - -class ImmutableException extends BaseRuntimeException implements RuntimeException -{ - /** - * The value. - * - * @var string - */ - protected $value; - - /** - * Constructor. - * - * @param string $value the immutable type/value - * @param int $code - * @param Throwable|null $previous - */ - public function __construct($value, $code = 0, Throwable $previous = null) - { - $this->value = $value; - parent::__construct("$value is immutable.", $code, $previous); - } - - /** - * Get the value. - * - * @return string - */ - public function getValue(): string - { - return $this->value; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidArgumentException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidArgumentException.php deleted file mode 100644 index 5b013cd5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidArgumentException.php +++ /dev/null @@ -1,17 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -interface InvalidArgumentException extends Exception -{ - // -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidCastException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidCastException.php deleted file mode 100644 index a421401f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidCastException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use InvalidArgumentException as BaseInvalidArgumentException; - -class InvalidCastException extends BaseInvalidArgumentException implements InvalidArgumentException -{ - // -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php deleted file mode 100644 index c9ecb6b0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php +++ /dev/null @@ -1,67 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use InvalidArgumentException as BaseInvalidArgumentException; -use Throwable; - -class InvalidDateException extends BaseInvalidArgumentException implements InvalidArgumentException -{ - /** - * The invalid field. - * - * @var string - */ - private $field; - - /** - * The invalid value. - * - * @var mixed - */ - private $value; - - /** - * Constructor. - * - * @param string $field - * @param mixed $value - * @param int $code - * @param Throwable|null $previous - */ - public function __construct($field, $value, $code = 0, Throwable $previous = null) - { - $this->field = $field; - $this->value = $value; - parent::__construct($field.' : '.$value.' is not a valid value.', $code, $previous); - } - - /** - * Get the invalid field. - * - * @return string - */ - public function getField() - { - return $this->field; - } - - /** - * Get the invalid value. - * - * @return mixed - */ - public function getValue() - { - return $this->value; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidFormatException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidFormatException.php deleted file mode 100644 index 92d55fe3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidFormatException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use InvalidArgumentException as BaseInvalidArgumentException; - -class InvalidFormatException extends BaseInvalidArgumentException implements InvalidArgumentException -{ - // -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidIntervalException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidIntervalException.php deleted file mode 100644 index 69cf4128..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidIntervalException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use InvalidArgumentException as BaseInvalidArgumentException; - -class InvalidIntervalException extends BaseInvalidArgumentException implements InvalidArgumentException -{ - // -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodDateException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodDateException.php deleted file mode 100644 index 9bd84a96..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodDateException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use InvalidArgumentException as BaseInvalidArgumentException; - -class InvalidPeriodDateException extends BaseInvalidArgumentException implements InvalidArgumentException -{ - // -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodParameterException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodParameterException.php deleted file mode 100644 index cf2c9024..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodParameterException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use InvalidArgumentException as BaseInvalidArgumentException; - -class InvalidPeriodParameterException extends BaseInvalidArgumentException implements InvalidArgumentException -{ - // -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTimeZoneException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTimeZoneException.php deleted file mode 100644 index f7259558..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTimeZoneException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use InvalidArgumentException as BaseInvalidArgumentException; - -class InvalidTimeZoneException extends BaseInvalidArgumentException implements InvalidArgumentException -{ - // -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTypeException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTypeException.php deleted file mode 100644 index 2c8ec9ba..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTypeException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use InvalidArgumentException as BaseInvalidArgumentException; - -class InvalidTypeException extends BaseInvalidArgumentException implements InvalidArgumentException -{ - // -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/NotACarbonClassException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/NotACarbonClassException.php deleted file mode 100644 index 7a87632c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/NotACarbonClassException.php +++ /dev/null @@ -1,50 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use Carbon\CarbonInterface; -use InvalidArgumentException as BaseInvalidArgumentException; -use Throwable; - -class NotACarbonClassException extends BaseInvalidArgumentException implements InvalidArgumentException -{ - /** - * The className. - * - * @var string - */ - protected $className; - - /** - * Constructor. - * - * @param string $className - * @param int $code - * @param Throwable|null $previous - */ - public function __construct($className, $code = 0, Throwable $previous = null) - { - $this->className = $className; - - parent::__construct(sprintf('Given class does not implement %s: %s', CarbonInterface::class, $className), $code, $previous); - } - - /** - * Get the className. - * - * @return string - */ - public function getClassName(): string - { - return $this->className; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php deleted file mode 100644 index 4edd7a48..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use InvalidArgumentException as BaseInvalidArgumentException; - -class NotAPeriodException extends BaseInvalidArgumentException implements InvalidArgumentException -{ - // -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php deleted file mode 100644 index f2c54684..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use InvalidArgumentException as BaseInvalidArgumentException; -use Throwable; - -class NotLocaleAwareException extends BaseInvalidArgumentException implements InvalidArgumentException -{ - /** - * Constructor. - * - * @param mixed $object - * @param int $code - * @param Throwable|null $previous - */ - public function __construct($object, $code = 0, Throwable $previous = null) - { - $dump = \is_object($object) ? \get_class($object) : \gettype($object); - - parent::__construct("$dump does neither implements Symfony\Contracts\Translation\LocaleAwareInterface nor getLocale() method.", $code, $previous); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/OutOfRangeException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/OutOfRangeException.php deleted file mode 100644 index 2c586d0b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/OutOfRangeException.php +++ /dev/null @@ -1,101 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use InvalidArgumentException as BaseInvalidArgumentException; -use Throwable; - -// This will extends OutOfRangeException instead of InvalidArgumentException since 3.0.0 -// use OutOfRangeException as BaseOutOfRangeException; - -class OutOfRangeException extends BaseInvalidArgumentException implements InvalidArgumentException -{ - /** - * The unit or name of the value. - * - * @var string - */ - private $unit; - - /** - * The range minimum. - * - * @var mixed - */ - private $min; - - /** - * The range maximum. - * - * @var mixed - */ - private $max; - - /** - * The invalid value. - * - * @var mixed - */ - private $value; - - /** - * Constructor. - * - * @param string $unit - * @param mixed $min - * @param mixed $max - * @param mixed $value - * @param int $code - * @param Throwable|null $previous - */ - public function __construct($unit, $min, $max, $value, $code = 0, Throwable $previous = null) - { - $this->unit = $unit; - $this->min = $min; - $this->max = $max; - $this->value = $value; - - parent::__construct("$unit must be between $min and $max, $value given", $code, $previous); - } - - /** - * @return mixed - */ - public function getMax() - { - return $this->max; - } - - /** - * @return mixed - */ - public function getMin() - { - return $this->min; - } - - /** - * @return mixed - */ - public function getUnit() - { - return $this->unit; - } - - /** - * @return mixed - */ - public function getValue() - { - return $this->value; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php deleted file mode 100644 index 5416fd14..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php +++ /dev/null @@ -1,88 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use InvalidArgumentException as BaseInvalidArgumentException; -use Throwable; - -class ParseErrorException extends BaseInvalidArgumentException implements InvalidArgumentException -{ - /** - * The expected. - * - * @var string - */ - protected $expected; - - /** - * The actual. - * - * @var string - */ - protected $actual; - - /** - * The help message. - * - * @var string - */ - protected $help; - - /** - * Constructor. - * - * @param string $expected - * @param string $actual - * @param int $code - * @param Throwable|null $previous - */ - public function __construct($expected, $actual, $help = '', $code = 0, Throwable $previous = null) - { - $this->expected = $expected; - $this->actual = $actual; - $this->help = $help; - - $actual = $actual === '' ? 'data is missing' : "get '$actual'"; - - parent::__construct(trim("Format expected $expected but $actual\n$help"), $code, $previous); - } - - /** - * Get the expected. - * - * @return string - */ - public function getExpected(): string - { - return $this->expected; - } - - /** - * Get the actual. - * - * @return string - */ - public function getActual(): string - { - return $this->actual; - } - - /** - * Get the help message. - * - * @return string - */ - public function getHelp(): string - { - return $this->help; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/RuntimeException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/RuntimeException.php deleted file mode 100644 index ad196f79..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/RuntimeException.php +++ /dev/null @@ -1,17 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -interface RuntimeException extends Exception -{ - // -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitException.php deleted file mode 100644 index ee99953b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use InvalidArgumentException as BaseInvalidArgumentException; - -class UnitException extends BaseInvalidArgumentException implements InvalidArgumentException -{ - // -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitNotConfiguredException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitNotConfiguredException.php deleted file mode 100644 index 0e723056..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitNotConfiguredException.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use Throwable; - -class UnitNotConfiguredException extends UnitException -{ - /** - * The unit. - * - * @var string - */ - protected $unit; - - /** - * Constructor. - * - * @param string $unit - * @param int $code - * @param Throwable|null $previous - */ - public function __construct($unit, $code = 0, Throwable $previous = null) - { - $this->unit = $unit; - - parent::__construct("Unit $unit have no configuration to get total from other units.", $code, $previous); - } - - /** - * Get the unit. - * - * @return string - */ - public function getUnit(): string - { - return $this->unit; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownGetterException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownGetterException.php deleted file mode 100644 index 5c504975..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownGetterException.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use InvalidArgumentException as BaseInvalidArgumentException; -use Throwable; - -class UnknownGetterException extends BaseInvalidArgumentException implements InvalidArgumentException -{ - /** - * The getter. - * - * @var string - */ - protected $getter; - - /** - * Constructor. - * - * @param string $getter getter name - * @param int $code - * @param Throwable|null $previous - */ - public function __construct($getter, $code = 0, Throwable $previous = null) - { - $this->getter = $getter; - - parent::__construct("Unknown getter '$getter'", $code, $previous); - } - - /** - * Get the getter. - * - * @return string - */ - public function getGetter(): string - { - return $this->getter; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownMethodException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownMethodException.php deleted file mode 100644 index 75273a70..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownMethodException.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use BadMethodCallException as BaseBadMethodCallException; -use Throwable; - -class UnknownMethodException extends BaseBadMethodCallException implements BadMethodCallException -{ - /** - * The method. - * - * @var string - */ - protected $method; - - /** - * Constructor. - * - * @param string $method - * @param int $code - * @param Throwable|null $previous - */ - public function __construct($method, $code = 0, Throwable $previous = null) - { - $this->method = $method; - - parent::__construct("Method $method does not exist.", $code, $previous); - } - - /** - * Get the method. - * - * @return string - */ - public function getMethod(): string - { - return $this->method; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownSetterException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownSetterException.php deleted file mode 100644 index a795f5d7..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownSetterException.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use InvalidArgumentException as BaseInvalidArgumentException; -use Throwable; - -class UnknownSetterException extends BaseInvalidArgumentException implements BadMethodCallException -{ - /** - * The setter. - * - * @var string - */ - protected $setter; - - /** - * Constructor. - * - * @param string $setter setter name - * @param int $code - * @param Throwable|null $previous - */ - public function __construct($setter, $code = 0, Throwable $previous = null) - { - $this->setter = $setter; - - parent::__construct("Unknown setter '$setter'", $code, $previous); - } - - /** - * Get the setter. - * - * @return string - */ - public function getSetter(): string - { - return $this->setter; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownUnitException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownUnitException.php deleted file mode 100644 index ecd7f7a5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownUnitException.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use Throwable; - -class UnknownUnitException extends UnitException -{ - /** - * The unit. - * - * @var string - */ - protected $unit; - - /** - * Constructor. - * - * @param string $unit - * @param int $code - * @param Throwable|null $previous - */ - public function __construct($unit, $code = 0, Throwable $previous = null) - { - $this->unit = $unit; - - parent::__construct("Unknown unit '$unit'.", $code, $previous); - } - - /** - * Get the unit. - * - * @return string - */ - public function getUnit(): string - { - return $this->unit; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnreachableException.php b/vendor/nesbot/carbon/src/Carbon/Exceptions/UnreachableException.php deleted file mode 100644 index 1654ab11..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Exceptions/UnreachableException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Exceptions; - -use RuntimeException as BaseRuntimeException; - -class UnreachableException extends BaseRuntimeException implements RuntimeException -{ - // -} diff --git a/vendor/nesbot/carbon/src/Carbon/Factory.php b/vendor/nesbot/carbon/src/Carbon/Factory.php deleted file mode 100644 index d497535f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Factory.php +++ /dev/null @@ -1,326 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -use Closure; -use DateTimeInterface; -use ReflectionMethod; - -/** - * A factory to generate Carbon instances with common settings. - * - * - * - * @method bool canBeCreatedFromFormat($date, $format) Checks if the (date)time string is in a given format and valid to create a - * new instance. - * @method Carbon|false create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null) Create a new Carbon instance from a specific date and time. - * If any of $year, $month or $day are set to null their now() values will - * be used. - * If $hour is null it will be set to its now() value and the default - * values for $minute and $second will be their now() values. - * If $hour is not null then the default values for $minute and $second - * will be 0. - * @method Carbon createFromDate($year = null, $month = null, $day = null, $tz = null) Create a Carbon instance from just a date. The time portion is set to now. - * @method Carbon|false createFromFormat($format, $time, $tz = null) Create a Carbon instance from a specific format. - * @method Carbon|false createFromIsoFormat($format, $time, $tz = null, $locale = 'en', $translator = null) Create a Carbon instance from a specific ISO format (same replacements as ->isoFormat()). - * @method Carbon|false createFromLocaleFormat($format, $locale, $time, $tz = null) Create a Carbon instance from a specific format and a string in a given language. - * @method Carbon|false createFromLocaleIsoFormat($format, $locale, $time, $tz = null) Create a Carbon instance from a specific ISO format and a string in a given language. - * @method Carbon createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null) Create a Carbon instance from just a time. The date portion is set to today. - * @method Carbon createFromTimeString($time, $tz = null) Create a Carbon instance from a time string. The date portion is set to today. - * @method Carbon createFromTimestamp($timestamp, $tz = null) Create a Carbon instance from a timestamp and set the timezone (use default one if not specified). - * Timestamp input can be given as int, float or a string containing one or more numbers. - * @method Carbon createFromTimestampMs($timestamp, $tz = null) Create a Carbon instance from a timestamp in milliseconds. - * Timestamp input can be given as int, float or a string containing one or more numbers. - * @method Carbon createFromTimestampMsUTC($timestamp) Create a Carbon instance from a timestamp in milliseconds. - * Timestamp input can be given as int, float or a string containing one or more numbers. - * @method Carbon createFromTimestampUTC($timestamp) Create a Carbon instance from an timestamp keeping the timezone to UTC. - * Timestamp input can be given as int, float or a string containing one or more numbers. - * @method Carbon createMidnightDate($year = null, $month = null, $day = null, $tz = null) Create a Carbon instance from just a date. The time portion is set to midnight. - * @method Carbon|false createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null) Create a new safe Carbon instance from a specific date and time. - * If any of $year, $month or $day are set to null their now() values will - * be used. - * If $hour is null it will be set to its now() value and the default - * values for $minute and $second will be their now() values. - * If $hour is not null then the default values for $minute and $second - * will be 0. - * If one of the set values is not valid, an InvalidDateException - * will be thrown. - * @method CarbonInterface createStrict(?int $year = 0, ?int $month = 1, ?int $day = 1, ?int $hour = 0, ?int $minute = 0, ?int $second = 0, $tz = null) Create a new Carbon instance from a specific date and time using strict validation. - * @method Carbon disableHumanDiffOption($humanDiffOption) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * @method Carbon enableHumanDiffOption($humanDiffOption) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * @method mixed executeWithLocale($locale, $func) Set the current locale to the given, execute the passed function, reset the locale to previous one, - * then return the result of the closure (or null if the closure was void). - * @method Carbon fromSerialized($value) Create an instance from a serialized string. - * @method void genericMacro($macro, $priority = 0) Register a custom macro. - * @method array getAvailableLocales() Returns the list of internally available locales and already loaded custom locales. - * (It will ignore custom translator dynamic loading.) - * @method Language[] getAvailableLocalesInfo() Returns list of Language object for each available locale. This object allow you to get the ISO name, native - * name, region and variant of the locale. - * @method array getDays() Get the days of the week - * @method string|null getFallbackLocale() Get the fallback locale. - * @method array getFormatsToIsoReplacements() List of replacements from date() format to isoFormat(). - * @method int getHumanDiffOptions() Return default humanDiff() options (merged flags as integer). - * @method array getIsoUnits() Returns list of locale units for ISO formatting. - * @method array getLastErrors() {@inheritdoc} - * @method string getLocale() Get the current translator locale. - * @method callable|null getMacro($name) Get the raw callable macro registered globally for a given name. - * @method int getMidDayAt() get midday/noon hour - * @method Closure|Carbon getTestNow() Get the Carbon instance (real or mock) to be returned when a "now" - * instance is created. - * @method string getTimeFormatByPrecision($unitPrecision) Return a format from H:i to H:i:s.u according to given unit precision. - * @method string getTranslationMessageWith($translator, string $key, ?string $locale = null, ?string $default = null) Returns raw translation message for a given key. - * @method \Symfony\Component\Translation\TranslatorInterface getTranslator() Get the default translator instance in use. - * @method int getWeekEndsAt() Get the last day of week - * @method int getWeekStartsAt() Get the first day of week - * @method array getWeekendDays() Get weekend days - * @method bool hasFormat($date, $format) Checks if the (date)time string is in a given format. - * @method bool hasFormatWithModifiers($date, $format) Checks if the (date)time string is in a given format. - * @method bool hasMacro($name) Checks if macro is registered globally. - * @method bool hasRelativeKeywords($time) Determine if a time string will produce a relative date. - * @method bool hasTestNow() Determine if there is a valid test instance set. A valid test instance - * is anything that is not null. - * @method Carbon instance($date) Create a Carbon instance from a DateTime one. - * @method bool isImmutable() Returns true if the current class/instance is immutable. - * @method bool isModifiableUnit($unit) Returns true if a property can be changed via setter. - * @method bool isMutable() Returns true if the current class/instance is mutable. - * @method bool isStrictModeEnabled() Returns true if the strict mode is globally in use, false else. - * (It can be overridden in specific instances.) - * @method bool localeHasDiffOneDayWords($locale) Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow). - * Support is considered enabled if the 3 words are translated in the given locale. - * @method bool localeHasDiffSyntax($locale) Returns true if the given locale is internally supported and has diff syntax support (ago, from now, before, after). - * Support is considered enabled if the 4 sentences are translated in the given locale. - * @method bool localeHasDiffTwoDayWords($locale) Returns true if the given locale is internally supported and has words for 2-days diff (before yesterday, after tomorrow). - * Support is considered enabled if the 2 words are translated in the given locale. - * @method bool localeHasPeriodSyntax($locale) Returns true if the given locale is internally supported and has period syntax support (X times, every X, from X, to X). - * Support is considered enabled if the 4 sentences are translated in the given locale. - * @method bool localeHasShortUnits($locale) Returns true if the given locale is internally supported and has short-units support. - * Support is considered enabled if either year, day or hour has a short variant translated. - * @method void macro($name, $macro) Register a custom macro. - * @method Carbon|null make($var) Make a Carbon instance from given variable if possible. - * Always return a new instance. Parse only strings and only these likely to be dates (skip intervals - * and recurrences). Throw an exception for invalid format, but otherwise return null. - * @method Carbon maxValue() Create a Carbon instance for the greatest supported date. - * @method Carbon minValue() Create a Carbon instance for the lowest supported date. - * @method void mixin($mixin) Mix another object into the class. - * @method Carbon now($tz = null) Get a Carbon instance for the current date and time. - * @method Carbon parse($time = null, $tz = null) Create a carbon instance from a string. - * This is an alias for the constructor that allows better fluent syntax - * as it allows you to do Carbon::parse('Monday next week')->fn() rather - * than (new Carbon('Monday next week'))->fn(). - * @method Carbon parseFromLocale($time, $locale = null, $tz = null) Create a carbon instance from a localized string (in French, Japanese, Arabic, etc.). - * @method string pluralUnit(string $unit) Returns standardized plural of a given singular/plural unit name (in English). - * @method Carbon|false rawCreateFromFormat($format, $time, $tz = null) Create a Carbon instance from a specific format. - * @method Carbon rawParse($time = null, $tz = null) Create a carbon instance from a string. - * This is an alias for the constructor that allows better fluent syntax - * as it allows you to do Carbon::parse('Monday next week')->fn() rather - * than (new Carbon('Monday next week'))->fn(). - * @method Carbon resetMacros() Remove all macros and generic macros. - * @method void resetMonthsOverflow() @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @method void resetToStringFormat() Reset the format used to the default when type juggling a Carbon instance to a string - * @method void resetYearsOverflow() @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @method void serializeUsing($callback) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather transform Carbon object before the serialization. - * JSON serialize all Carbon instances using the given callback. - * @method Carbon setFallbackLocale($locale) Set the fallback locale. - * @method Carbon setHumanDiffOptions($humanDiffOptions) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * @method bool setLocale($locale) Set the current translator locale and indicate if the source locale file exists. - * Pass 'auto' as locale to use closest language from the current LC_TIME locale. - * @method void setMidDayAt($hour) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather consider mid-day is always 12pm, then if you need to test if it's an other - * hour, test it explicitly: - * $date->format('G') == 13 - * or to set explicitly to a given hour: - * $date->setTime(13, 0, 0, 0) - * Set midday/noon hour - * @method Carbon setTestNow($testNow = null) Set a Carbon instance (real or mock) to be returned when a "now" - * instance is created. The provided instance will be returned - * specifically under the following conditions: - * - A call to the static now() method, ex. Carbon::now() - * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null) - * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now') - * - When a string containing the desired time is passed to Carbon::parse(). - * Note the timezone parameter was left out of the examples above and - * has no affect as the mock value will be returned regardless of its value. - * Only the moment is mocked with setTestNow(), the timezone will still be the one passed - * as parameter of date_default_timezone_get() as a fallback (see setTestNowAndTimezone()). - * To clear the test instance call this method using the default - * parameter of null. - * /!\ Use this method for unit tests only. - * @method Carbon setTestNowAndTimezone($testNow = null, $tz = null) Set a Carbon instance (real or mock) to be returned when a "now" - * instance is created. The provided instance will be returned - * specifically under the following conditions: - * - A call to the static now() method, ex. Carbon::now() - * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null) - * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now') - * - When a string containing the desired time is passed to Carbon::parse(). - * It will also align default timezone (e.g. call date_default_timezone_set()) with - * the second argument or if null, with the timezone of the given date object. - * To clear the test instance call this method using the default - * parameter of null. - * /!\ Use this method for unit tests only. - * @method void setToStringFormat($format) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather let Carbon object being cast to string with DEFAULT_TO_STRING_FORMAT, and - * use other method or custom format passed to format() method if you need to dump another string - * format. - * Set the default format used when type juggling a Carbon instance to a string. - * @method void setTranslator(TranslatorInterface $translator) Set the default translator instance to use. - * @method Carbon setUtf8($utf8) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use UTF-8 language packages on every machine. - * Set if UTF8 will be used for localized date/time. - * @method void setWeekEndsAt($day) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * Use $weekStartsAt optional parameter instead when using startOfWeek, floorWeek, ceilWeek - * or roundWeek method. You can also use the 'first_day_of_week' locale setting to change the - * start of week according to current locale selected and implicitly the end of week. - * Set the last day of week - * @method void setWeekStartsAt($day) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * Use $weekEndsAt optional parameter instead when using endOfWeek method. You can also use the - * 'first_day_of_week' locale setting to change the start of week according to current locale - * selected and implicitly the end of week. - * Set the first day of week - * @method void setWeekendDays($days) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather consider week-end is always saturday and sunday, and if you have some custom - * week-end days to handle, give to those days an other name and create a macro for them: - * ``` - * Carbon::macro('isDayOff', function ($date) { - * return $date->isSunday() || $date->isMonday(); - * }); - * Carbon::macro('isNotDayOff', function ($date) { - * return !$date->isDayOff(); - * }); - * if ($someDate->isDayOff()) ... - * if ($someDate->isNotDayOff()) ... - * // Add 5 not-off days - * $count = 5; - * while ($someDate->isDayOff() || ($count-- > 0)) { - * $someDate->addDay(); - * } - * ``` - * Set weekend days - * @method bool shouldOverflowMonths() Get the month overflow global behavior (can be overridden in specific instances). - * @method bool shouldOverflowYears() Get the month overflow global behavior (can be overridden in specific instances). - * @method string singularUnit(string $unit) Returns standardized singular of a given singular/plural unit name (in English). - * @method Carbon today($tz = null) Create a Carbon instance for today. - * @method Carbon tomorrow($tz = null) Create a Carbon instance for tomorrow. - * @method string translateTimeString($timeString, $from = null, $to = null, $mode = CarbonInterface::TRANSLATE_ALL) Translate a time string from a locale to an other. - * @method string translateWith(TranslatorInterface $translator, string $key, array $parameters = [], $number = null) Translate using translation string or callback available. - * @method void useMonthsOverflow($monthsOverflow = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @method Carbon useStrictMode($strictModeEnabled = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * @method void useYearsOverflow($yearsOverflow = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @method mixed withTestNow($testNow, $callback) Temporarily sets a static date to be used within the callback. - * Using setTestNow to set the date, executing the callback, then - * clearing the test instance. - * /!\ Use this method for unit tests only. - * @method Carbon yesterday($tz = null) Create a Carbon instance for yesterday. - * - * - */ -class Factory -{ - protected $className = Carbon::class; - - protected $settings = []; - - public function __construct(array $settings = [], ?string $className = null) - { - if ($className) { - $this->className = $className; - } - - $this->settings = $settings; - } - - public function getClassName() - { - return $this->className; - } - - public function setClassName(string $className) - { - $this->className = $className; - - return $this; - } - - public function className(string $className = null) - { - return $className === null ? $this->getClassName() : $this->setClassName($className); - } - - public function getSettings() - { - return $this->settings; - } - - public function setSettings(array $settings) - { - $this->settings = $settings; - - return $this; - } - - public function settings(array $settings = null) - { - return $settings === null ? $this->getSettings() : $this->setSettings($settings); - } - - public function mergeSettings(array $settings) - { - $this->settings = array_merge($this->settings, $settings); - - return $this; - } - - public function __call($name, $arguments) - { - $method = new ReflectionMethod($this->className, $name); - $settings = $this->settings; - - if ($settings && isset($settings['timezone'])) { - $tzParameters = array_filter($method->getParameters(), function ($parameter) { - return \in_array($parameter->getName(), ['tz', 'timezone'], true); - }); - - if (isset($arguments[0]) && \in_array($name, ['instance', 'make', 'create', 'parse'], true)) { - if ($arguments[0] instanceof DateTimeInterface) { - $settings['innerTimezone'] = $settings['timezone']; - } elseif (\is_string($arguments[0]) && date_parse($arguments[0])['is_localtime']) { - unset($settings['timezone'], $settings['innerTimezone']); - } - } elseif (\count($tzParameters)) { - array_splice($arguments, key($tzParameters), 0, [$settings['timezone']]); - unset($settings['timezone']); - } - } - - $result = $this->className::$name(...$arguments); - - return $result instanceof CarbonInterface && !empty($settings) - ? $result->settings($settings) - : $result; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php b/vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php deleted file mode 100644 index d88a1cf6..00000000 --- a/vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php +++ /dev/null @@ -1,259 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -use Closure; -use DateTimeImmutable; -use DateTimeZone; -use Psr\Clock\ClockInterface; - -/** - * A factory to generate CarbonImmutable instances with common settings. - * - * - * - * @method bool canBeCreatedFromFormat($date, $format) Checks if the (date)time string is in a given format and valid to create a - * new instance. - * @method CarbonImmutable|false create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null) Create a new Carbon instance from a specific date and time. - * If any of $year, $month or $day are set to null their now() values will - * be used. - * If $hour is null it will be set to its now() value and the default - * values for $minute and $second will be their now() values. - * If $hour is not null then the default values for $minute and $second - * will be 0. - * @method CarbonImmutable createFromDate($year = null, $month = null, $day = null, $tz = null) Create a Carbon instance from just a date. The time portion is set to now. - * @method CarbonImmutable|false createFromFormat($format, $time, $tz = null) Create a Carbon instance from a specific format. - * @method CarbonImmutable|false createFromIsoFormat($format, $time, $tz = null, $locale = 'en', $translator = null) Create a Carbon instance from a specific ISO format (same replacements as ->isoFormat()). - * @method CarbonImmutable|false createFromLocaleFormat($format, $locale, $time, $tz = null) Create a Carbon instance from a specific format and a string in a given language. - * @method CarbonImmutable|false createFromLocaleIsoFormat($format, $locale, $time, $tz = null) Create a Carbon instance from a specific ISO format and a string in a given language. - * @method CarbonImmutable createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null) Create a Carbon instance from just a time. The date portion is set to today. - * @method CarbonImmutable createFromTimeString($time, $tz = null) Create a Carbon instance from a time string. The date portion is set to today. - * @method CarbonImmutable createFromTimestamp($timestamp, $tz = null) Create a Carbon instance from a timestamp and set the timezone (use default one if not specified). - * Timestamp input can be given as int, float or a string containing one or more numbers. - * @method CarbonImmutable createFromTimestampMs($timestamp, $tz = null) Create a Carbon instance from a timestamp in milliseconds. - * Timestamp input can be given as int, float or a string containing one or more numbers. - * @method CarbonImmutable createFromTimestampMsUTC($timestamp) Create a Carbon instance from a timestamp in milliseconds. - * Timestamp input can be given as int, float or a string containing one or more numbers. - * @method CarbonImmutable createFromTimestampUTC($timestamp) Create a Carbon instance from an timestamp keeping the timezone to UTC. - * Timestamp input can be given as int, float or a string containing one or more numbers. - * @method CarbonImmutable createMidnightDate($year = null, $month = null, $day = null, $tz = null) Create a Carbon instance from just a date. The time portion is set to midnight. - * @method CarbonImmutable|false createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null) Create a new safe Carbon instance from a specific date and time. - * If any of $year, $month or $day are set to null their now() values will - * be used. - * If $hour is null it will be set to its now() value and the default - * values for $minute and $second will be their now() values. - * If $hour is not null then the default values for $minute and $second - * will be 0. - * If one of the set values is not valid, an InvalidDateException - * will be thrown. - * @method CarbonInterface createStrict(?int $year = 0, ?int $month = 1, ?int $day = 1, ?int $hour = 0, ?int $minute = 0, ?int $second = 0, $tz = null) Create a new Carbon instance from a specific date and time using strict validation. - * @method CarbonImmutable disableHumanDiffOption($humanDiffOption) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * @method CarbonImmutable enableHumanDiffOption($humanDiffOption) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * @method mixed executeWithLocale($locale, $func) Set the current locale to the given, execute the passed function, reset the locale to previous one, - * then return the result of the closure (or null if the closure was void). - * @method CarbonImmutable fromSerialized($value) Create an instance from a serialized string. - * @method void genericMacro($macro, $priority = 0) Register a custom macro. - * @method array getAvailableLocales() Returns the list of internally available locales and already loaded custom locales. - * (It will ignore custom translator dynamic loading.) - * @method Language[] getAvailableLocalesInfo() Returns list of Language object for each available locale. This object allow you to get the ISO name, native - * name, region and variant of the locale. - * @method array getDays() Get the days of the week - * @method string|null getFallbackLocale() Get the fallback locale. - * @method array getFormatsToIsoReplacements() List of replacements from date() format to isoFormat(). - * @method int getHumanDiffOptions() Return default humanDiff() options (merged flags as integer). - * @method array getIsoUnits() Returns list of locale units for ISO formatting. - * @method array getLastErrors() {@inheritdoc} - * @method string getLocale() Get the current translator locale. - * @method callable|null getMacro($name) Get the raw callable macro registered globally for a given name. - * @method int getMidDayAt() get midday/noon hour - * @method Closure|CarbonImmutable getTestNow() Get the Carbon instance (real or mock) to be returned when a "now" - * instance is created. - * @method string getTimeFormatByPrecision($unitPrecision) Return a format from H:i to H:i:s.u according to given unit precision. - * @method string getTranslationMessageWith($translator, string $key, ?string $locale = null, ?string $default = null) Returns raw translation message for a given key. - * @method \Symfony\Component\Translation\TranslatorInterface getTranslator() Get the default translator instance in use. - * @method int getWeekEndsAt() Get the last day of week - * @method int getWeekStartsAt() Get the first day of week - * @method array getWeekendDays() Get weekend days - * @method bool hasFormat($date, $format) Checks if the (date)time string is in a given format. - * @method bool hasFormatWithModifiers($date, $format) Checks if the (date)time string is in a given format. - * @method bool hasMacro($name) Checks if macro is registered globally. - * @method bool hasRelativeKeywords($time) Determine if a time string will produce a relative date. - * @method bool hasTestNow() Determine if there is a valid test instance set. A valid test instance - * is anything that is not null. - * @method CarbonImmutable instance($date) Create a Carbon instance from a DateTime one. - * @method bool isImmutable() Returns true if the current class/instance is immutable. - * @method bool isModifiableUnit($unit) Returns true if a property can be changed via setter. - * @method bool isMutable() Returns true if the current class/instance is mutable. - * @method bool isStrictModeEnabled() Returns true if the strict mode is globally in use, false else. - * (It can be overridden in specific instances.) - * @method bool localeHasDiffOneDayWords($locale) Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow). - * Support is considered enabled if the 3 words are translated in the given locale. - * @method bool localeHasDiffSyntax($locale) Returns true if the given locale is internally supported and has diff syntax support (ago, from now, before, after). - * Support is considered enabled if the 4 sentences are translated in the given locale. - * @method bool localeHasDiffTwoDayWords($locale) Returns true if the given locale is internally supported and has words for 2-days diff (before yesterday, after tomorrow). - * Support is considered enabled if the 2 words are translated in the given locale. - * @method bool localeHasPeriodSyntax($locale) Returns true if the given locale is internally supported and has period syntax support (X times, every X, from X, to X). - * Support is considered enabled if the 4 sentences are translated in the given locale. - * @method bool localeHasShortUnits($locale) Returns true if the given locale is internally supported and has short-units support. - * Support is considered enabled if either year, day or hour has a short variant translated. - * @method void macro($name, $macro) Register a custom macro. - * @method CarbonImmutable|null make($var) Make a Carbon instance from given variable if possible. - * Always return a new instance. Parse only strings and only these likely to be dates (skip intervals - * and recurrences). Throw an exception for invalid format, but otherwise return null. - * @method CarbonImmutable maxValue() Create a Carbon instance for the greatest supported date. - * @method CarbonImmutable minValue() Create a Carbon instance for the lowest supported date. - * @method void mixin($mixin) Mix another object into the class. - * @method CarbonImmutable parse($time = null, $tz = null) Create a carbon instance from a string. - * This is an alias for the constructor that allows better fluent syntax - * as it allows you to do Carbon::parse('Monday next week')->fn() rather - * than (new Carbon('Monday next week'))->fn(). - * @method CarbonImmutable parseFromLocale($time, $locale = null, $tz = null) Create a carbon instance from a localized string (in French, Japanese, Arabic, etc.). - * @method string pluralUnit(string $unit) Returns standardized plural of a given singular/plural unit name (in English). - * @method CarbonImmutable|false rawCreateFromFormat($format, $time, $tz = null) Create a Carbon instance from a specific format. - * @method CarbonImmutable rawParse($time = null, $tz = null) Create a carbon instance from a string. - * This is an alias for the constructor that allows better fluent syntax - * as it allows you to do Carbon::parse('Monday next week')->fn() rather - * than (new Carbon('Monday next week'))->fn(). - * @method CarbonImmutable resetMacros() Remove all macros and generic macros. - * @method void resetMonthsOverflow() @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @method void resetToStringFormat() Reset the format used to the default when type juggling a Carbon instance to a string - * @method void resetYearsOverflow() @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @method void serializeUsing($callback) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather transform Carbon object before the serialization. - * JSON serialize all Carbon instances using the given callback. - * @method CarbonImmutable setFallbackLocale($locale) Set the fallback locale. - * @method CarbonImmutable setHumanDiffOptions($humanDiffOptions) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * @method bool setLocale($locale) Set the current translator locale and indicate if the source locale file exists. - * Pass 'auto' as locale to use closest language from the current LC_TIME locale. - * @method void setMidDayAt($hour) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather consider mid-day is always 12pm, then if you need to test if it's an other - * hour, test it explicitly: - * $date->format('G') == 13 - * or to set explicitly to a given hour: - * $date->setTime(13, 0, 0, 0) - * Set midday/noon hour - * @method CarbonImmutable setTestNow($testNow = null) Set a Carbon instance (real or mock) to be returned when a "now" - * instance is created. The provided instance will be returned - * specifically under the following conditions: - * - A call to the static now() method, ex. Carbon::now() - * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null) - * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now') - * - When a string containing the desired time is passed to Carbon::parse(). - * Note the timezone parameter was left out of the examples above and - * has no affect as the mock value will be returned regardless of its value. - * Only the moment is mocked with setTestNow(), the timezone will still be the one passed - * as parameter of date_default_timezone_get() as a fallback (see setTestNowAndTimezone()). - * To clear the test instance call this method using the default - * parameter of null. - * /!\ Use this method for unit tests only. - * @method CarbonImmutable setTestNowAndTimezone($testNow = null, $tz = null) Set a Carbon instance (real or mock) to be returned when a "now" - * instance is created. The provided instance will be returned - * specifically under the following conditions: - * - A call to the static now() method, ex. Carbon::now() - * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null) - * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now') - * - When a string containing the desired time is passed to Carbon::parse(). - * It will also align default timezone (e.g. call date_default_timezone_set()) with - * the second argument or if null, with the timezone of the given date object. - * To clear the test instance call this method using the default - * parameter of null. - * /!\ Use this method for unit tests only. - * @method void setToStringFormat($format) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather let Carbon object being cast to string with DEFAULT_TO_STRING_FORMAT, and - * use other method or custom format passed to format() method if you need to dump another string - * format. - * Set the default format used when type juggling a Carbon instance to a string. - * @method void setTranslator(TranslatorInterface $translator) Set the default translator instance to use. - * @method CarbonImmutable setUtf8($utf8) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use UTF-8 language packages on every machine. - * Set if UTF8 will be used for localized date/time. - * @method void setWeekEndsAt($day) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * Use $weekStartsAt optional parameter instead when using startOfWeek, floorWeek, ceilWeek - * or roundWeek method. You can also use the 'first_day_of_week' locale setting to change the - * start of week according to current locale selected and implicitly the end of week. - * Set the last day of week - * @method void setWeekStartsAt($day) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * Use $weekEndsAt optional parameter instead when using endOfWeek method. You can also use the - * 'first_day_of_week' locale setting to change the start of week according to current locale - * selected and implicitly the end of week. - * Set the first day of week - * @method void setWeekendDays($days) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather consider week-end is always saturday and sunday, and if you have some custom - * week-end days to handle, give to those days an other name and create a macro for them: - * ``` - * Carbon::macro('isDayOff', function ($date) { - * return $date->isSunday() || $date->isMonday(); - * }); - * Carbon::macro('isNotDayOff', function ($date) { - * return !$date->isDayOff(); - * }); - * if ($someDate->isDayOff()) ... - * if ($someDate->isNotDayOff()) ... - * // Add 5 not-off days - * $count = 5; - * while ($someDate->isDayOff() || ($count-- > 0)) { - * $someDate->addDay(); - * } - * ``` - * Set weekend days - * @method bool shouldOverflowMonths() Get the month overflow global behavior (can be overridden in specific instances). - * @method bool shouldOverflowYears() Get the month overflow global behavior (can be overridden in specific instances). - * @method string singularUnit(string $unit) Returns standardized singular of a given singular/plural unit name (in English). - * @method CarbonImmutable today($tz = null) Create a Carbon instance for today. - * @method CarbonImmutable tomorrow($tz = null) Create a Carbon instance for tomorrow. - * @method string translateTimeString($timeString, $from = null, $to = null, $mode = CarbonInterface::TRANSLATE_ALL) Translate a time string from a locale to an other. - * @method string translateWith(TranslatorInterface $translator, string $key, array $parameters = [], $number = null) Translate using translation string or callback available. - * @method void useMonthsOverflow($monthsOverflow = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @method CarbonImmutable useStrictMode($strictModeEnabled = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * @method void useYearsOverflow($yearsOverflow = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @method mixed withTestNow($testNow, $callback) Temporarily sets a static date to be used within the callback. - * Using setTestNow to set the date, executing the callback, then - * clearing the test instance. - * /!\ Use this method for unit tests only. - * @method CarbonImmutable yesterday($tz = null) Create a Carbon instance for yesterday. - * - * - */ -class FactoryImmutable extends Factory implements ClockInterface -{ - protected $className = CarbonImmutable::class; - - /** - * Get a Carbon instance for the current date and time. - * - * @param DateTimeZone|string|int|null $tz - * - * @return CarbonImmutable - */ - public function now($tz = null): DateTimeImmutable - { - $className = $this->className; - - return new $className(null, $tz); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/aa.php b/vendor/nesbot/carbon/src/Carbon/Lang/aa.php deleted file mode 100644 index f3431e4b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/aa.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/aa_DJ.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/aa_DJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/aa_DJ.php deleted file mode 100644 index c6e23c0d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/aa_DJ.php +++ /dev/null @@ -1,44 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation locales@geez.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], - 'months' => ['Qunxa Garablu', 'Kudo', 'Ciggilta Kudo', 'Agda Baxisso', 'Caxah Alsa', 'Qasa Dirri', 'Qado Dirri', 'Liiqen', 'Waysu', 'Diteli', 'Ximoli', 'Kaxxa Garablu'], - 'months_short' => ['qun', 'nah', 'cig', 'agd', 'cax', 'qas', 'qad', 'leq', 'way', 'dit', 'xim', 'kax'], - 'weekdays' => ['Acaada', 'Etleeni', 'Talaata', 'Arbaqa', 'Kamiisi', 'Gumqata', 'Sabti'], - 'weekdays_short' => ['aca', 'etl', 'tal', 'arb', 'kam', 'gum', 'sab'], - 'weekdays_min' => ['aca', 'etl', 'tal', 'arb', 'kam', 'gum', 'sab'], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['saaku', 'carra'], - - 'year' => ':count gaqambo', // less reliable - 'y' => ':count gaqambo', // less reliable - 'a_year' => ':count gaqambo', // less reliable - - 'month' => ':count àlsa', - 'm' => ':count àlsa', - 'a_month' => ':count àlsa', - - 'day' => ':count saaku', // less reliable - 'd' => ':count saaku', // less reliable - 'a_day' => ':count saaku', // less reliable - - 'hour' => ':count ayti', // less reliable - 'h' => ':count ayti', // less reliable - 'a_hour' => ':count ayti', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER.php b/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER.php deleted file mode 100644 index f8f395b7..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation locales@geez.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['Qunxa Garablu', 'Naharsi Kudo', 'Ciggilta Kudo', 'Agda Baxisso', 'Caxah Alsa', 'Qasa Dirri', 'Qado Dirri', 'Leqeeni', 'Waysu', 'Diteli', 'Ximoli', 'Kaxxa Garablu'], - 'months_short' => ['Qun', 'Nah', 'Cig', 'Agd', 'Cax', 'Qas', 'Qad', 'Leq', 'Way', 'Dit', 'Xim', 'Kax'], - 'weekdays' => ['Acaada', 'Etleeni', 'Talaata', 'Arbaqa', 'Kamiisi', 'Gumqata', 'Sabti'], - 'weekdays_short' => ['Aca', 'Etl', 'Tal', 'Arb', 'Kam', 'Gum', 'Sab'], - 'weekdays_min' => ['Aca', 'Etl', 'Tal', 'Arb', 'Kam', 'Gum', 'Sab'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['saaku', 'carra'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER@saaho.php b/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER@saaho.php deleted file mode 100644 index 64612253..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/aa_ER@saaho.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation locales@geez.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['Qunxa Garablu', 'Naharsi Kudo', 'Ciggilta Kudo', 'Agda Baxisso', 'Caxah Alsa', 'Qasa Dirri', 'Qado Dirri', 'Leqeeni', 'Waysu', 'Diteli', 'Ximoli', 'Kaxxa Garablu'], - 'months_short' => ['Qun', 'Nah', 'Cig', 'Agd', 'Cax', 'Qas', 'Qad', 'Leq', 'Way', 'Dit', 'Xim', 'Kax'], - 'weekdays' => ['Naba Sambat', 'Sani', 'Salus', 'Rabuq', 'Camus', 'Jumqata', 'Qunxa Sambat'], - 'weekdays_short' => ['Nab', 'San', 'Sal', 'Rab', 'Cam', 'Jum', 'Qun'], - 'weekdays_min' => ['Nab', 'San', 'Sal', 'Rab', 'Cam', 'Jum', 'Qun'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['saaku', 'carra'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/aa_ET.php b/vendor/nesbot/carbon/src/Carbon/Lang/aa_ET.php deleted file mode 100644 index e55e591b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/aa_ET.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation locales@geez.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['Qunxa Garablu', 'Kudo', 'Ciggilta Kudo', 'Agda Baxisso', 'Caxah Alsa', 'Qasa Dirri', 'Qado Dirri', 'Liiqen', 'Waysu', 'Diteli', 'Ximoli', 'Kaxxa Garablu'], - 'months_short' => ['Qun', 'Kud', 'Cig', 'Agd', 'Cax', 'Qas', 'Qad', 'Leq', 'Way', 'Dit', 'Xim', 'Kax'], - 'weekdays' => ['Acaada', 'Etleeni', 'Talaata', 'Arbaqa', 'Kamiisi', 'Gumqata', 'Sabti'], - 'weekdays_short' => ['Aca', 'Etl', 'Tal', 'Arb', 'Kam', 'Gum', 'Sab'], - 'weekdays_min' => ['Aca', 'Etl', 'Tal', 'Arb', 'Kam', 'Gum', 'Sab'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['saaku', 'carra'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/af.php b/vendor/nesbot/carbon/src/Carbon/Lang/af.php deleted file mode 100644 index 27771d7a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/af.php +++ /dev/null @@ -1,79 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - JD Isaacks - * - Pierre du Plessis - */ -return [ - 'year' => ':count jaar', - 'a_year' => '\'n jaar|:count jaar', - 'y' => ':count j.', - 'month' => ':count maand|:count maande', - 'a_month' => '\'n maand|:count maande', - 'm' => ':count maa.', - 'week' => ':count week|:count weke', - 'a_week' => '\'n week|:count weke', - 'w' => ':count w.', - 'day' => ':count dag|:count dae', - 'a_day' => '\'n dag|:count dae', - 'd' => ':count d.', - 'hour' => ':count uur', - 'a_hour' => '\'n uur|:count uur', - 'h' => ':count u.', - 'minute' => ':count minuut|:count minute', - 'a_minute' => '\'n minuut|:count minute', - 'min' => ':count min.', - 'second' => ':count sekond|:count sekondes', - 'a_second' => '\'n paar sekondes|:count sekondes', - 's' => ':count s.', - 'ago' => ':time gelede', - 'from_now' => 'oor :time', - 'after' => ':time na', - 'before' => ':time voor', - 'diff_now' => 'Nou', - 'diff_today' => 'Vandag', - 'diff_today_regexp' => 'Vandag(?:\\s+om)?', - 'diff_yesterday' => 'Gister', - 'diff_yesterday_regexp' => 'Gister(?:\\s+om)?', - 'diff_tomorrow' => 'Môre', - 'diff_tomorrow_regexp' => 'Môre(?:\\s+om)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Vandag om] LT', - 'nextDay' => '[Môre om] LT', - 'nextWeek' => 'dddd [om] LT', - 'lastDay' => '[Gister om] LT', - 'lastWeek' => '[Laas] dddd [om] LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number) { - return $number.(($number === 1 || $number === 8 || $number >= 20) ? 'ste' : 'de'); - }, - 'meridiem' => ['VM', 'NM'], - 'months' => ['Januarie', 'Februarie', 'Maart', 'April', 'Mei', 'Junie', 'Julie', 'Augustus', 'September', 'Oktober', 'November', 'Desember'], - 'months_short' => ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'], - 'weekdays' => ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'], - 'weekdays_short' => ['Son', 'Maa', 'Din', 'Woe', 'Don', 'Vry', 'Sat'], - 'weekdays_min' => ['So', 'Ma', 'Di', 'Wo', 'Do', 'Vr', 'Sa'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' en '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/af_NA.php b/vendor/nesbot/carbon/src/Carbon/Lang/af_NA.php deleted file mode 100644 index f2fcf053..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/af_NA.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/af.php', [ - 'meridiem' => ['v', 'n'], - 'weekdays' => ['Sondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrydag', 'Saterdag'], - 'weekdays_short' => ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.'], - 'weekdays_min' => ['So.', 'Ma.', 'Di.', 'Wo.', 'Do.', 'Vr.', 'Sa.'], - 'months' => ['Januarie', 'Februarie', 'Maart', 'April', 'Mei', 'Junie', 'Julie', 'Augustus', 'September', 'Oktober', 'November', 'Desember'], - 'months_short' => ['Jan.', 'Feb.', 'Mrt.', 'Apr.', 'Mei', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Des.'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY-MM-DD', - 'LL' => 'DD MMM YYYY', - 'LLL' => 'DD MMMM YYYY HH:mm', - 'LLLL' => 'dddd, DD MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/af_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/af_ZA.php deleted file mode 100644 index 27896bd0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/af_ZA.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/af.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/agq.php b/vendor/nesbot/carbon/src/Carbon/Lang/agq.php deleted file mode 100644 index 70114649..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/agq.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['a.g', 'a.k'], - 'weekdays' => ['tsuʔntsɨ', 'tsuʔukpà', 'tsuʔughɔe', 'tsuʔutɔ̀mlò', 'tsuʔumè', 'tsuʔughɨ̂m', 'tsuʔndzɨkɔʔɔ'], - 'weekdays_short' => ['nts', 'kpa', 'ghɔ', 'tɔm', 'ume', 'ghɨ', 'dzk'], - 'weekdays_min' => ['nts', 'kpa', 'ghɔ', 'tɔm', 'ume', 'ghɨ', 'dzk'], - 'months' => ['ndzɔ̀ŋɔ̀nùm', 'ndzɔ̀ŋɔ̀kƗ̀zùʔ', 'ndzɔ̀ŋɔ̀tƗ̀dʉ̀ghà', 'ndzɔ̀ŋɔ̀tǎafʉ̄ghā', 'ndzɔ̀ŋèsèe', 'ndzɔ̀ŋɔ̀nzùghò', 'ndzɔ̀ŋɔ̀dùmlo', 'ndzɔ̀ŋɔ̀kwîfɔ̀e', 'ndzɔ̀ŋɔ̀tƗ̀fʉ̀ghàdzughù', 'ndzɔ̀ŋɔ̀ghǔuwelɔ̀m', 'ndzɔ̀ŋɔ̀chwaʔàkaa wo', 'ndzɔ̀ŋèfwòo'], - 'months_short' => ['nùm', 'kɨz', 'tɨd', 'taa', 'see', 'nzu', 'dum', 'fɔe', 'dzu', 'lɔm', 'kaa', 'fwo'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM, YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/agr.php b/vendor/nesbot/carbon/src/Carbon/Lang/agr.php deleted file mode 100644 index 8f036ae8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/agr.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/agr_PE.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/agr_PE.php b/vendor/nesbot/carbon/src/Carbon/Lang/agr_PE.php deleted file mode 100644 index 54a326af..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/agr_PE.php +++ /dev/null @@ -1,44 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - somosazucar.org libc-alpha@sourceware.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['Petsatin', 'Kupitin', 'Uyaitin', 'Tayutin', 'Kegketin', 'Tegmatin', 'Kuntutin', 'Yagkujutin', 'Daiktatin', 'Ipamtatin', 'Shinutin', 'Sakamtin'], - 'months_short' => ['Pet', 'Kup', 'Uya', 'Tay', 'Keg', 'Teg', 'Kun', 'Yag', 'Dait', 'Ipam', 'Shin', 'Sak'], - 'weekdays' => ['Tuntuamtin', 'Achutin', 'Kugkuktin', 'Saketin', 'Shimpitin', 'Imaptin', 'Bataetin'], - 'weekdays_short' => ['Tun', 'Ach', 'Kug', 'Sak', 'Shim', 'Im', 'Bat'], - 'weekdays_min' => ['Tun', 'Ach', 'Kug', 'Sak', 'Shim', 'Im', 'Bat'], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 7, - 'meridiem' => ['VM', 'NM'], - - 'year' => ':count yaya', // less reliable - 'y' => ':count yaya', // less reliable - 'a_year' => ':count yaya', // less reliable - - 'month' => ':count nantu', // less reliable - 'm' => ':count nantu', // less reliable - 'a_month' => ':count nantu', // less reliable - - 'day' => ':count nayaim', // less reliable - 'd' => ':count nayaim', // less reliable - 'a_day' => ':count nayaim', // less reliable - - 'hour' => ':count kuwiš', // less reliable - 'h' => ':count kuwiš', // less reliable - 'a_hour' => ':count kuwiš', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ak.php b/vendor/nesbot/carbon/src/Carbon/Lang/ak.php deleted file mode 100644 index 5a64be37..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ak.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/ak_GH.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ak_GH.php b/vendor/nesbot/carbon/src/Carbon/Lang/ak_GH.php deleted file mode 100644 index 13819467..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ak_GH.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Sugar Labs // OLPC sugarlabs.org libc-alpha@sourceware.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'YYYY/MM/DD', - ], - 'months' => ['Sanda-Ɔpɛpɔn', 'Kwakwar-Ɔgyefuo', 'Ebɔw-Ɔbenem', 'Ebɔbira-Oforisuo', 'Esusow Aketseaba-Kɔtɔnimba', 'Obirade-Ayɛwohomumu', 'Ayɛwoho-Kitawonsa', 'Difuu-Ɔsandaa', 'Fankwa-Ɛbɔ', 'Ɔbɛsɛ-Ahinime', 'Ɔberɛfɛw-Obubuo', 'Mumu-Ɔpɛnimba'], - 'months_short' => ['S-Ɔ', 'K-Ɔ', 'E-Ɔ', 'E-O', 'E-K', 'O-A', 'A-K', 'D-Ɔ', 'F-Ɛ', 'Ɔ-A', 'Ɔ-O', 'M-Ɔ'], - 'weekdays' => ['Kwesida', 'Dwowda', 'Benada', 'Wukuda', 'Yawda', 'Fida', 'Memeneda'], - 'weekdays_short' => ['Kwe', 'Dwo', 'Ben', 'Wuk', 'Yaw', 'Fia', 'Mem'], - 'weekdays_min' => ['Kwe', 'Dwo', 'Ben', 'Wuk', 'Yaw', 'Fia', 'Mem'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['AN', 'EW'], - - 'year' => ':count afe', - 'y' => ':count afe', - 'a_year' => ':count afe', - - 'month' => ':count bosume', - 'm' => ':count bosume', - 'a_month' => ':count bosume', - - 'day' => ':count ɛda', - 'd' => ':count ɛda', - 'a_day' => ':count ɛda', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/am.php b/vendor/nesbot/carbon/src/Carbon/Lang/am.php deleted file mode 100644 index 63bf72d2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/am.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/am_ET.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/am_ET.php b/vendor/nesbot/carbon/src/Carbon/Lang/am_ET.php deleted file mode 100644 index ece80621..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/am_ET.php +++ /dev/null @@ -1,58 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation locales@geez.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['ጃንዩወሪ', 'ፌብሩወሪ', 'ማርች', 'ኤፕሪል', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስት', 'ሴፕቴምበር', 'ኦክቶበር', 'ኖቬምበር', 'ዲሴምበር'], - 'months_short' => ['ጃንዩ', 'ፌብሩ', 'ማርች', 'ኤፕረ', 'ሜይ ', 'ጁን ', 'ጁላይ', 'ኦገስ', 'ሴፕቴ', 'ኦክተ', 'ኖቬም', 'ዲሴም'], - 'weekdays' => ['እሑድ', 'ሰኞ', 'ማክሰኞ', 'ረቡዕ', 'ሐሙስ', 'ዓርብ', 'ቅዳሜ'], - 'weekdays_short' => ['እሑድ', 'ሰኞ ', 'ማክሰ', 'ረቡዕ', 'ሐሙስ', 'ዓርብ', 'ቅዳሜ'], - 'weekdays_min' => ['እሑድ', 'ሰኞ ', 'ማክሰ', 'ረቡዕ', 'ሐሙስ', 'ዓርብ', 'ቅዳሜ'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['ጡዋት', 'ከሰዓት'], - - 'year' => ':count አመት', - 'y' => ':count አመት', - 'a_year' => ':count አመት', - - 'month' => ':count ወር', - 'm' => ':count ወር', - 'a_month' => ':count ወር', - - 'week' => ':count ሳምንት', - 'w' => ':count ሳምንት', - 'a_week' => ':count ሳምንት', - - 'day' => ':count ቀን', - 'd' => ':count ቀን', - 'a_day' => ':count ቀን', - - 'hour' => ':count ሰዓት', - 'h' => ':count ሰዓት', - 'a_hour' => ':count ሰዓት', - - 'minute' => ':count ደቂቃ', - 'min' => ':count ደቂቃ', - 'a_minute' => ':count ደቂቃ', - - 'second' => ':count ሴኮንድ', - 's' => ':count ሴኮንድ', - 'a_second' => ':count ሴኮንድ', - - 'ago' => 'ከ:time በፊት', - 'from_now' => 'በ:time ውስጥ', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/an.php b/vendor/nesbot/carbon/src/Carbon/Lang/an.php deleted file mode 100644 index 565abf26..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/an.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/an_ES.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/an_ES.php b/vendor/nesbot/carbon/src/Carbon/Lang/an_ES.php deleted file mode 100644 index faf8ae07..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/an_ES.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Softaragones Jordi Mallach Pérez, Juan Pablo Martínez bug-glibc-locales@gnu.org, softaragones@softaragones.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['chinero', 'febrero', 'marzo', 'abril', 'mayo', 'chunyo', 'chuliol', 'agosto', 'setiembre', 'octubre', 'noviembre', 'aviento'], - 'months_short' => ['chi', 'feb', 'mar', 'abr', 'may', 'chn', 'chl', 'ago', 'set', 'oct', 'nov', 'avi'], - 'weekdays' => ['domingo', 'luns', 'martes', 'mierques', 'chueves', 'viernes', 'sabado'], - 'weekdays_short' => ['dom', 'lun', 'mar', 'mie', 'chu', 'vie', 'sab'], - 'weekdays_min' => ['dom', 'lun', 'mar', 'mie', 'chu', 'vie', 'sab'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - - 'year' => ':count año', - 'y' => ':count año', - 'a_year' => ':count año', - - 'month' => ':count mes', - 'm' => ':count mes', - 'a_month' => ':count mes', - - 'week' => ':count semana', - 'w' => ':count semana', - 'a_week' => ':count semana', - - 'day' => ':count día', - 'd' => ':count día', - 'a_day' => ':count día', - - 'hour' => ':count reloch', // less reliable - 'h' => ':count reloch', // less reliable - 'a_hour' => ':count reloch', // less reliable - - 'minute' => ':count minuto', - 'min' => ':count minuto', - 'a_minute' => ':count minuto', - - 'second' => ':count segundo', - 's' => ':count segundo', - 'a_second' => ':count segundo', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/anp.php b/vendor/nesbot/carbon/src/Carbon/Lang/anp.php deleted file mode 100644 index b56c67bb..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/anp.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/anp_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/anp_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/anp_IN.php deleted file mode 100644 index 11069be3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/anp_IN.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - bhashaghar@googlegroups.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितंबर', 'अक्टूबर', 'नवंबर', 'दिसंबर"'], - 'months_short' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितंबर', 'अक्टूबर', 'नवंबर', 'दिसंबर'], - 'weekdays' => ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'बृहस्पतिवार', 'शुक्रवार', 'शनिवार'], - 'weekdays_short' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पति', 'शुक्र', 'शनि'], - 'weekdays_min' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पति', 'शुक्र', 'शनि'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['पूर्वाह्न', 'अपराह्न'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar.php deleted file mode 100644 index 5f73f639..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar.php +++ /dev/null @@ -1,93 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Atef Ben Ali (atefBB) - * - Ibrahim AshShohail - * - MLTDev - * - Mohamed Sabil (mohamedsabil83) - * - Yazan Alnugnugh (yazan-alnugnugh) - */ -$months = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر', -]; - -return [ - 'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']), - 'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']), - 'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']), - 'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']), - 'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']), - 'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']), - 'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']), - 'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']), - 'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']), - 'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']), - 'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']), - 'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']), - 'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']), - 'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']), - 'ago' => 'منذ :time', - 'from_now' => ':time من الآن', - 'after' => 'بعد :time', - 'before' => 'قبل :time', - 'diff_now' => 'الآن', - 'diff_today' => 'اليوم', - 'diff_today_regexp' => 'اليوم(?:\\s+عند)?(?:\\s+الساعة)?', - 'diff_yesterday' => 'أمس', - 'diff_yesterday_regexp' => 'أمس(?:\\s+عند)?(?:\\s+الساعة)?', - 'diff_tomorrow' => 'غداً', - 'diff_tomorrow_regexp' => 'غدًا(?:\\s+عند)?(?:\\s+الساعة)?', - 'diff_before_yesterday' => 'قبل الأمس', - 'diff_after_tomorrow' => 'بعد غد', - 'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']), - 'period_interval' => 'كل :interval', - 'period_start_date' => 'من :date', - 'period_end_date' => 'إلى :date', - 'months' => $months, - 'months_short' => $months, - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'], - 'weekdays_min' => ['ح', 'اث', 'ثل', 'أر', 'خم', 'ج', 'س'], - 'list' => ['، ', ' و '], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[اليوم عند الساعة] LT', - 'nextDay' => '[غدًا عند الساعة] LT', - 'nextWeek' => 'dddd [عند الساعة] LT', - 'lastDay' => '[أمس عند الساعة] LT', - 'lastWeek' => 'dddd [عند الساعة] LT', - 'sameElse' => 'L', - ], - 'meridiem' => ['ص', 'م'], - 'weekend' => [5, 6], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_AE.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_AE.php deleted file mode 100644 index 35a22b1d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_AE.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - * - Abdullah-Alhariri - */ -return array_replace_recursive(require __DIR__.'/ar.php', [ - 'formats' => [ - 'L' => 'DD MMM, YYYY', - ], - 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], - 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'], - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت '], - 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰٤', '۰٥', '۰٦', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱٤', '۱٥', '۱٦', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲٤', '۲٥', '۲٦', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳٤', '۳٥', '۳٦', '۳۷', '۳۸', '۳۹', '٤۰', '٤۱', '٤۲', '٤۳', '٤٤', '٤٥', '٤٦', '٤۷', '٤۸', '٤۹', '٥۰', '٥۱', '٥۲', '٥۳', '٥٤', '٥٥', '٥٦', '٥۷', '٥۸', '٥۹', '٦۰', '٦۱', '٦۲', '٦۳', '٦٤', '٦٥', '٦٦', '٦۷', '٦۸', '٦۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷٤', '۷٥', '۷٦', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸٤', '۸٥', '۸٦', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹٤', '۹٥', '۹٦', '۹۷', '۹۸', '۹۹'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_BH.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_BH.php deleted file mode 100644 index 35180965..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_BH.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - * - Abdullah-Alhariri - */ -return array_replace_recursive(require __DIR__.'/ar.php', [ - 'formats' => [ - 'L' => 'DD MMM, YYYY', - ], - 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], - 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'], - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰٤', '۰٥', '۰٦', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱٤', '۱٥', '۱٦', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲٤', '۲٥', '۲٦', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳٤', '۳٥', '۳٦', '۳۷', '۳۸', '۳۹', '٤۰', '٤۱', '٤۲', '٤۳', '٤٤', '٤٥', '٤٦', '٤۷', '٤۸', '٤۹', '٥۰', '٥۱', '٥۲', '٥۳', '٥٤', '٥٥', '٥٦', '٥۷', '٥۸', '٥۹', '٦۰', '٦۱', '٦۲', '٦۳', '٦٤', '٦٥', '٦٦', '٦۷', '٦۸', '٦۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷٤', '۷٥', '۷٦', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸٤', '۸٥', '۸٦', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹٤', '۹٥', '۹٦', '۹۷', '۹۸', '۹۹'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_DJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_DJ.php deleted file mode 100644 index e790b99e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_DJ.php +++ /dev/null @@ -1,13 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ar.php', [ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_DZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_DZ.php deleted file mode 100644 index aea4eeec..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_DZ.php +++ /dev/null @@ -1,92 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Authors: - * - Josh Soref - * - Noureddine LOUAHEDJ - * - JD Isaacks - * - Atef Ben Ali (atefBB) - * - Mohamed Sabil (mohamedsabil83) - */ -$months = [ - 'جانفي', - 'فيفري', - 'مارس', - 'أفريل', - 'ماي', - 'جوان', - 'جويلية', - 'أوت', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر', -]; - -return [ - 'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']), - 'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']), - 'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']), - 'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']), - 'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']), - 'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']), - 'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']), - 'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']), - 'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']), - 'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']), - 'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']), - 'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']), - 'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']), - 'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']), - 'ago' => 'منذ :time', - 'from_now' => 'في :time', - 'after' => 'بعد :time', - 'before' => 'قبل :time', - 'diff_now' => 'الآن', - 'diff_today' => 'اليوم', - 'diff_today_regexp' => 'اليوم(?:\\s+على)?(?:\\s+الساعة)?', - 'diff_yesterday' => 'أمس', - 'diff_yesterday_regexp' => 'أمس(?:\\s+على)?(?:\\s+الساعة)?', - 'diff_tomorrow' => 'غداً', - 'diff_tomorrow_regexp' => 'غدا(?:\\s+على)?(?:\\s+الساعة)?', - 'diff_before_yesterday' => 'قبل الأمس', - 'diff_after_tomorrow' => 'بعد غد', - 'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']), - 'period_interval' => 'كل :interval', - 'period_start_date' => 'من :date', - 'period_end_date' => 'إلى :date', - 'months' => $months, - 'months_short' => $months, - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'], - 'weekdays_min' => ['أح', 'إث', 'ثلا', 'أر', 'خم', 'جم', 'سب'], - 'list' => ['، ', ' و '], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 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', - ], - 'calendar' => [ - 'sameDay' => '[اليوم على الساعة] LT', - 'nextDay' => '[غدا على الساعة] LT', - 'nextWeek' => 'dddd [على الساعة] LT', - 'lastDay' => '[أمس على الساعة] LT', - 'lastWeek' => 'dddd [على الساعة] LT', - 'sameElse' => 'L', - ], - 'meridiem' => ['ص', 'م'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_EG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_EG.php deleted file mode 100644 index 35180965..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_EG.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - * - Abdullah-Alhariri - */ -return array_replace_recursive(require __DIR__.'/ar.php', [ - 'formats' => [ - 'L' => 'DD MMM, YYYY', - ], - 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], - 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'], - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰٤', '۰٥', '۰٦', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱٤', '۱٥', '۱٦', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲٤', '۲٥', '۲٦', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳٤', '۳٥', '۳٦', '۳۷', '۳۸', '۳۹', '٤۰', '٤۱', '٤۲', '٤۳', '٤٤', '٤٥', '٤٦', '٤۷', '٤۸', '٤۹', '٥۰', '٥۱', '٥۲', '٥۳', '٥٤', '٥٥', '٥٦', '٥۷', '٥۸', '٥۹', '٦۰', '٦۱', '٦۲', '٦۳', '٦٤', '٦٥', '٦٦', '٦۷', '٦۸', '٦۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷٤', '۷٥', '۷٦', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸٤', '۸٥', '۸٦', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹٤', '۹٥', '۹٦', '۹۷', '۹۸', '۹۹'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_EH.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_EH.php deleted file mode 100644 index e790b99e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_EH.php +++ /dev/null @@ -1,13 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ar.php', [ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_ER.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_ER.php deleted file mode 100644 index e790b99e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_ER.php +++ /dev/null @@ -1,13 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ar.php', [ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_IL.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_IL.php deleted file mode 100644 index e790b99e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_IL.php +++ /dev/null @@ -1,13 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ar.php', [ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_IN.php deleted file mode 100644 index 5fecf70f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_IN.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/ar.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], - 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'], - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_IQ.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_IQ.php deleted file mode 100644 index 2d420084..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_IQ.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - * - Abdullah-Alhariri - */ -return array_replace_recursive(require __DIR__.'/ar.php', [ - 'formats' => [ - 'L' => 'DD MMM, YYYY', - ], - 'months' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'], - 'months_short' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'], - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰٤', '۰٥', '۰٦', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱٤', '۱٥', '۱٦', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲٤', '۲٥', '۲٦', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳٤', '۳٥', '۳٦', '۳۷', '۳۸', '۳۹', '٤۰', '٤۱', '٤۲', '٤۳', '٤٤', '٤٥', '٤٦', '٤۷', '٤۸', '٤۹', '٥۰', '٥۱', '٥۲', '٥۳', '٥٤', '٥٥', '٥٦', '٥۷', '٥۸', '٥۹', '٦۰', '٦۱', '٦۲', '٦۳', '٦٤', '٦٥', '٦٦', '٦۷', '٦۸', '٦۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷٤', '۷٥', '۷٦', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸٤', '۸٥', '۸٦', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹٤', '۹٥', '۹٦', '۹۷', '۹۸', '۹۹'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_JO.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_JO.php deleted file mode 100644 index 2d420084..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_JO.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - * - Abdullah-Alhariri - */ -return array_replace_recursive(require __DIR__.'/ar.php', [ - 'formats' => [ - 'L' => 'DD MMM, YYYY', - ], - 'months' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'], - 'months_short' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'], - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰٤', '۰٥', '۰٦', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱٤', '۱٥', '۱٦', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲٤', '۲٥', '۲٦', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳٤', '۳٥', '۳٦', '۳۷', '۳۸', '۳۹', '٤۰', '٤۱', '٤۲', '٤۳', '٤٤', '٤٥', '٤٦', '٤۷', '٤۸', '٤۹', '٥۰', '٥۱', '٥۲', '٥۳', '٥٤', '٥٥', '٥٦', '٥۷', '٥۸', '٥۹', '٦۰', '٦۱', '٦۲', '٦۳', '٦٤', '٦٥', '٦٦', '٦۷', '٦۸', '٦۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷٤', '۷٥', '۷٦', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸٤', '۸٥', '۸٦', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹٤', '۹٥', '۹٦', '۹۷', '۹۸', '۹۹'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_KM.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_KM.php deleted file mode 100644 index e790b99e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_KM.php +++ /dev/null @@ -1,13 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ar.php', [ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_KW.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_KW.php deleted file mode 100644 index b3fb1cfe..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_KW.php +++ /dev/null @@ -1,95 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Authors: - * - Josh Soref - * - Nusret Parlak - * - JD Isaacks - * - Atef Ben Ali (atefBB) - * - Mohamed Sabil (mohamedsabil83) - * - Abdullah-Alhariri - */ -$months = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'ماي', - 'يونيو', - 'يوليوز', - 'غشت', - 'شتنبر', - 'أكتوبر', - 'نونبر', - 'دجنبر', -]; - -return [ - 'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']), - 'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']), - 'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']), - 'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']), - 'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']), - 'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']), - 'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']), - 'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']), - 'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']), - 'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']), - 'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']), - 'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']), - 'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']), - 'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']), - 'ago' => 'منذ :time', - 'from_now' => 'في :time', - 'after' => 'بعد :time', - 'before' => 'قبل :time', - 'diff_now' => 'الآن', - 'diff_today' => 'اليوم', - 'diff_today_regexp' => 'اليوم(?:\\s+على)?(?:\\s+الساعة)?', - 'diff_yesterday' => 'أمس', - 'diff_yesterday_regexp' => 'أمس(?:\\s+على)?(?:\\s+الساعة)?', - 'diff_tomorrow' => 'غداً', - 'diff_tomorrow_regexp' => 'غدا(?:\\s+على)?(?:\\s+الساعة)?', - 'diff_before_yesterday' => 'قبل الأمس', - 'diff_after_tomorrow' => 'بعد غد', - 'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']), - 'period_interval' => 'كل :interval', - 'period_start_date' => 'من :date', - 'period_end_date' => 'إلى :date', - 'months' => $months, - 'months_short' => $months, - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'], - 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'list' => ['، ', ' و '], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 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', - ], - 'calendar' => [ - 'sameDay' => '[اليوم على الساعة] LT', - 'nextDay' => '[غدا على الساعة] LT', - 'nextWeek' => 'dddd [على الساعة] LT', - 'lastDay' => '[أمس على الساعة] LT', - 'lastWeek' => 'dddd [على الساعة] LT', - 'sameElse' => 'L', - ], - 'meridiem' => ['ص', 'م'], - 'weekend' => [5, 6], - 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰٤', '۰٥', '۰٦', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱٤', '۱٥', '۱٦', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲٤', '۲٥', '۲٦', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳٤', '۳٥', '۳٦', '۳۷', '۳۸', '۳۹', '٤۰', '٤۱', '٤۲', '٤۳', '٤٤', '٤٥', '٤٦', '٤۷', '٤۸', '٤۹', '٥۰', '٥۱', '٥۲', '٥۳', '٥٤', '٥٥', '٥٦', '٥۷', '٥۸', '٥۹', '٦۰', '٦۱', '٦۲', '٦۳', '٦٤', '٦٥', '٦٦', '٦۷', '٦۸', '٦۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷٤', '۷٥', '۷٦', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸٤', '۸٥', '۸٦', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹٤', '۹٥', '۹٦', '۹۷', '۹۸', '۹۹'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_LB.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_LB.php deleted file mode 100644 index 2792745c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_LB.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - * - Abdullah-Alhariri - */ -return array_replace_recursive(require __DIR__.'/ar.php', [ - 'formats' => [ - 'L' => 'DD MMM, YYYY', - ], - 'months' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'], - 'months_short' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'], - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰٤', '۰٥', '۰٦', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱٤', '۱٥', '۱٦', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲٤', '۲٥', '۲٦', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳٤', '۳٥', '۳٦', '۳۷', '۳۸', '۳۹', '٤۰', '٤۱', '٤۲', '٤۳', '٤٤', '٤٥', '٤٦', '٤۷', '٤۸', '٤۹', '٥۰', '٥۱', '٥۲', '٥۳', '٥٤', '٥٥', '٥٦', '٥۷', '٥۸', '٥۹', '٦۰', '٦۱', '٦۲', '٦۳', '٦٤', '٦٥', '٦٦', '٦۷', '٦۸', '٦۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷٤', '۷٥', '۷٦', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸٤', '۸٥', '۸٦', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹٤', '۹٥', '۹٦', '۹۷', '۹۸', '۹۹'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_LY.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_LY.php deleted file mode 100644 index 1f0af49d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_LY.php +++ /dev/null @@ -1,92 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Atef Ben Ali (atefBB) - * - Ibrahim AshShohail - * - MLTDev - */ - -$months = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر', -]; - -return [ - 'year' => implode('|', [':count سنة', 'سنة', 'سنتين', ':count سنوات', ':count سنة']), - 'a_year' => implode('|', [':count سنة', 'سنة', 'سنتين', ':count سنوات', ':count سنة']), - 'month' => implode('|', [':count شهر', 'شهر', 'شهرين', ':count أشهر', ':count شهر']), - 'a_month' => implode('|', [':count شهر', 'شهر', 'شهرين', ':count أشهر', ':count شهر']), - 'week' => implode('|', [':count أسبوع', 'أسبوع', 'أسبوعين', ':count أسابيع', ':count أسبوع']), - 'a_week' => implode('|', [':count أسبوع', 'أسبوع', 'أسبوعين', ':count أسابيع', ':count أسبوع']), - 'day' => implode('|', [':count يوم', 'يوم', 'يومين', ':count أيام', ':count يوم']), - 'a_day' => implode('|', [':count يوم', 'يوم', 'يومين', ':count أيام', ':count يوم']), - 'hour' => implode('|', [':count ساعة', 'ساعة', 'ساعتين', ':count ساعات', ':count ساعة']), - 'a_hour' => implode('|', [':count ساعة', 'ساعة', 'ساعتين', ':count ساعات', ':count ساعة']), - 'minute' => implode('|', [':count دقيقة', 'دقيقة', 'دقيقتين', ':count دقائق', ':count دقيقة']), - 'a_minute' => implode('|', [':count دقيقة', 'دقيقة', 'دقيقتين', ':count دقائق', ':count دقيقة']), - 'second' => implode('|', [':count ثانية', 'ثانية', 'ثانيتين', ':count ثواني', ':count ثانية']), - 'a_second' => implode('|', [':count ثانية', 'ثانية', 'ثانيتين', ':count ثواني', ':count ثانية']), - 'ago' => 'منذ :time', - 'from_now' => ':time من الآن', - 'after' => 'بعد :time', - 'before' => 'قبل :time', - 'diff_now' => 'الآن', - 'diff_today' => 'اليوم', - 'diff_today_regexp' => 'اليوم(?:\\s+عند)?(?:\\s+الساعة)?', - 'diff_yesterday' => 'أمس', - 'diff_yesterday_regexp' => 'أمس(?:\\s+عند)?(?:\\s+الساعة)?', - 'diff_tomorrow' => 'غداً', - 'diff_tomorrow_regexp' => 'غدًا(?:\\s+عند)?(?:\\s+الساعة)?', - 'diff_before_yesterday' => 'قبل الأمس', - 'diff_after_tomorrow' => 'بعد غد', - 'period_recurrences' => implode('|', ['مرة', 'مرة', ':count مرتين', ':count مرات', ':count مرة']), - 'period_interval' => 'كل :interval', - 'period_start_date' => 'من :date', - 'period_end_date' => 'إلى :date', - 'months' => $months, - 'months_short' => $months, - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'], - 'weekdays_min' => ['ح', 'اث', 'ثل', 'أر', 'خم', 'ج', 'س'], - 'list' => ['، ', ' و '], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[اليوم عند الساعة] LT', - 'nextDay' => '[غدًا عند الساعة] LT', - 'nextWeek' => 'dddd [عند الساعة] LT', - 'lastDay' => '[أمس عند الساعة] LT', - 'lastWeek' => 'dddd [عند الساعة] LT', - 'sameElse' => 'L', - ], - 'meridiem' => ['ص', 'م'], - 'weekend' => [5, 6], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_MA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_MA.php deleted file mode 100644 index 047ae05a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_MA.php +++ /dev/null @@ -1,92 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Authors: - * - Josh Soref - * - JD Isaacks - * - Atef Ben Ali (atefBB) - * - Mohamed Sabil (mohamedsabil83) - */ -$months = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'ماي', - 'يونيو', - 'يوليوز', - 'غشت', - 'شتنبر', - 'أكتوبر', - 'نونبر', - 'دجنبر', -]; - -return [ - 'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']), - 'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']), - 'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']), - 'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']), - 'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']), - 'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']), - 'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']), - 'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']), - 'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']), - 'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']), - 'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']), - 'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']), - 'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']), - 'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']), - 'ago' => 'منذ :time', - 'from_now' => 'في :time', - 'after' => 'بعد :time', - 'before' => 'قبل :time', - 'diff_now' => 'الآن', - 'diff_today' => 'اليوم', - 'diff_today_regexp' => 'اليوم(?:\\s+على)?(?:\\s+الساعة)?', - 'diff_yesterday' => 'أمس', - 'diff_yesterday_regexp' => 'أمس(?:\\s+على)?(?:\\s+الساعة)?', - 'diff_tomorrow' => 'غداً', - 'diff_tomorrow_regexp' => 'غدا(?:\\s+على)?(?:\\s+الساعة)?', - 'diff_before_yesterday' => 'قبل الأمس', - 'diff_after_tomorrow' => 'بعد غد', - 'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']), - 'period_interval' => 'كل :interval', - 'period_start_date' => 'من :date', - 'period_end_date' => 'إلى :date', - 'months' => $months, - 'months_short' => $months, - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'], - 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'list' => ['، ', ' و '], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 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', - ], - 'calendar' => [ - 'sameDay' => '[اليوم على الساعة] LT', - 'nextDay' => '[غدا على الساعة] LT', - 'nextWeek' => 'dddd [على الساعة] LT', - 'lastDay' => '[أمس على الساعة] LT', - 'lastWeek' => 'dddd [على الساعة] LT', - 'sameElse' => 'L', - ], - 'meridiem' => ['ص', 'م'], - 'weekend' => [5, 6], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_MR.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_MR.php deleted file mode 100644 index e790b99e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_MR.php +++ /dev/null @@ -1,13 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ar.php', [ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_OM.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_OM.php deleted file mode 100644 index 35180965..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_OM.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - * - Abdullah-Alhariri - */ -return array_replace_recursive(require __DIR__.'/ar.php', [ - 'formats' => [ - 'L' => 'DD MMM, YYYY', - ], - 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], - 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'], - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰٤', '۰٥', '۰٦', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱٤', '۱٥', '۱٦', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲٤', '۲٥', '۲٦', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳٤', '۳٥', '۳٦', '۳۷', '۳۸', '۳۹', '٤۰', '٤۱', '٤۲', '٤۳', '٤٤', '٤٥', '٤٦', '٤۷', '٤۸', '٤۹', '٥۰', '٥۱', '٥۲', '٥۳', '٥٤', '٥٥', '٥٦', '٥۷', '٥۸', '٥۹', '٦۰', '٦۱', '٦۲', '٦۳', '٦٤', '٦٥', '٦٦', '٦۷', '٦۸', '٦۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷٤', '۷٥', '۷٦', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸٤', '۸٥', '۸٦', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹٤', '۹٥', '۹٦', '۹۷', '۹۸', '۹۹'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_PS.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_PS.php deleted file mode 100644 index 503c60d2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_PS.php +++ /dev/null @@ -1,18 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Abdullah-Alhariri - */ -return array_replace_recursive(require __DIR__.'/ar.php', [ - 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰٤', '۰٥', '۰٦', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱٤', '۱٥', '۱٦', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲٤', '۲٥', '۲٦', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳٤', '۳٥', '۳٦', '۳۷', '۳۸', '۳۹', '٤۰', '٤۱', '٤۲', '٤۳', '٤٤', '٤٥', '٤٦', '٤۷', '٤۸', '٤۹', '٥۰', '٥۱', '٥۲', '٥۳', '٥٤', '٥٥', '٥٦', '٥۷', '٥۸', '٥۹', '٦۰', '٦۱', '٦۲', '٦۳', '٦٤', '٦٥', '٦٦', '٦۷', '٦۸', '٦۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷٤', '۷٥', '۷٦', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸٤', '۸٥', '۸٦', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹٤', '۹٥', '۹٦', '۹۷', '۹۸', '۹۹'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_QA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_QA.php deleted file mode 100644 index 35180965..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_QA.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - * - Abdullah-Alhariri - */ -return array_replace_recursive(require __DIR__.'/ar.php', [ - 'formats' => [ - 'L' => 'DD MMM, YYYY', - ], - 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], - 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'], - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰٤', '۰٥', '۰٦', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱٤', '۱٥', '۱٦', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲٤', '۲٥', '۲٦', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳٤', '۳٥', '۳٦', '۳۷', '۳۸', '۳۹', '٤۰', '٤۱', '٤۲', '٤۳', '٤٤', '٤٥', '٤٦', '٤۷', '٤۸', '٤۹', '٥۰', '٥۱', '٥۲', '٥۳', '٥٤', '٥٥', '٥٦', '٥۷', '٥۸', '٥۹', '٦۰', '٦۱', '٦۲', '٦۳', '٦٤', '٦٥', '٦٦', '٦۷', '٦۸', '٦۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷٤', '۷٥', '۷٦', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸٤', '۸٥', '۸٦', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹٤', '۹٥', '۹٦', '۹۷', '۹۸', '۹۹'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_SA.php deleted file mode 100644 index 550b0c73..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SA.php +++ /dev/null @@ -1,94 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Authors: - * - Josh Soref - * - JD Isaacks - * - Atef Ben Ali (atefBB) - * - Mohamed Sabil (mohamedsabil83) - * - Abdullah-Alhariri - */ -$months = [ - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر', -]; - -return [ - 'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']), - 'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']), - 'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']), - 'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']), - 'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']), - 'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']), - 'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']), - 'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']), - 'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']), - 'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']), - 'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']), - 'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']), - 'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']), - 'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']), - 'ago' => 'منذ :time', - 'from_now' => 'في :time', - 'after' => 'بعد :time', - 'before' => 'قبل :time', - 'diff_now' => 'الآن', - 'diff_today' => 'اليوم', - 'diff_today_regexp' => 'اليوم(?:\\s+على)?(?:\\s+الساعة)?', - 'diff_yesterday' => 'أمس', - 'diff_yesterday_regexp' => 'أمس(?:\\s+على)?(?:\\s+الساعة)?', - 'diff_tomorrow' => 'غداً', - 'diff_tomorrow_regexp' => 'غدا(?:\\s+على)?(?:\\s+الساعة)?', - 'diff_before_yesterday' => 'قبل الأمس', - 'diff_after_tomorrow' => 'بعد غد', - 'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']), - 'period_interval' => 'كل :interval', - 'period_start_date' => 'من :date', - 'period_end_date' => 'إلى :date', - 'months' => $months, - 'months_short' => $months, - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'], - 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'list' => ['، ', ' و '], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 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', - ], - 'calendar' => [ - 'sameDay' => '[اليوم على الساعة] LT', - 'nextDay' => '[غدا على الساعة] LT', - 'nextWeek' => 'dddd [على الساعة] LT', - 'lastDay' => '[أمس على الساعة] LT', - 'lastWeek' => 'dddd [على الساعة] LT', - 'sameElse' => 'L', - ], - 'meridiem' => ['ص', 'م'], - 'weekend' => [5, 6], - 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰٤', '۰٥', '۰٦', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱٤', '۱٥', '۱٦', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲٤', '۲٥', '۲٦', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳٤', '۳٥', '۳٦', '۳۷', '۳۸', '۳۹', '٤۰', '٤۱', '٤۲', '٤۳', '٤٤', '٤٥', '٤٦', '٤۷', '٤۸', '٤۹', '٥۰', '٥۱', '٥۲', '٥۳', '٥٤', '٥٥', '٥٦', '٥۷', '٥۸', '٥۹', '٦۰', '٦۱', '٦۲', '٦۳', '٦٤', '٦٥', '٦٦', '٦۷', '٦۸', '٦۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷٤', '۷٥', '۷٦', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸٤', '۸٥', '۸٦', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹٤', '۹٥', '۹٦', '۹۷', '۹۸', '۹۹'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SD.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_SD.php deleted file mode 100644 index 35180965..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SD.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - * - Abdullah-Alhariri - */ -return array_replace_recursive(require __DIR__.'/ar.php', [ - 'formats' => [ - 'L' => 'DD MMM, YYYY', - ], - 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], - 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'], - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰٤', '۰٥', '۰٦', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱٤', '۱٥', '۱٦', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲٤', '۲٥', '۲٦', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳٤', '۳٥', '۳٦', '۳۷', '۳۸', '۳۹', '٤۰', '٤۱', '٤۲', '٤۳', '٤٤', '٤٥', '٤٦', '٤۷', '٤۸', '٤۹', '٥۰', '٥۱', '٥۲', '٥۳', '٥٤', '٥٥', '٥٦', '٥۷', '٥۸', '٥۹', '٦۰', '٦۱', '٦۲', '٦۳', '٦٤', '٦٥', '٦٦', '٦۷', '٦۸', '٦۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷٤', '۷٥', '۷٦', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸٤', '۸٥', '۸٦', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹٤', '۹٥', '۹٦', '۹۷', '۹۸', '۹۹'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SO.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_SO.php deleted file mode 100644 index e790b99e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SO.php +++ /dev/null @@ -1,13 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ar.php', [ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SS.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_SS.php deleted file mode 100644 index 32f32825..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SS.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/ar.php', [ - 'formats' => [ - 'L' => 'DD MMM, YYYY', - ], - 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], - 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'], - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SY.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_SY.php deleted file mode 100644 index 2d420084..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_SY.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - * - Abdullah-Alhariri - */ -return array_replace_recursive(require __DIR__.'/ar.php', [ - 'formats' => [ - 'L' => 'DD MMM, YYYY', - ], - 'months' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'], - 'months_short' => ['كانون الثاني', 'شباط', 'آذار', 'نيسان', 'أيار', 'حزيران', 'تموز', 'آب', 'أيلول', 'تشرين الأول', 'تشرين الثاني', 'كانون الأول'], - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰٤', '۰٥', '۰٦', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱٤', '۱٥', '۱٦', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲٤', '۲٥', '۲٦', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳٤', '۳٥', '۳٦', '۳۷', '۳۸', '۳۹', '٤۰', '٤۱', '٤۲', '٤۳', '٤٤', '٤٥', '٤٦', '٤۷', '٤۸', '٤۹', '٥۰', '٥۱', '٥۲', '٥۳', '٥٤', '٥٥', '٥٦', '٥۷', '٥۸', '٥۹', '٦۰', '٦۱', '٦۲', '٦۳', '٦٤', '٦٥', '٦٦', '٦۷', '٦۸', '٦۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷٤', '۷٥', '۷٦', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸٤', '۸٥', '۸٦', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹٤', '۹٥', '۹٦', '۹۷', '۹۸', '۹۹'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_Shakl.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_Shakl.php deleted file mode 100644 index c2d4b43d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_Shakl.php +++ /dev/null @@ -1,95 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Abdellah Chadidi - * - Atef Ben Ali (atefBB) - * - Mohamed Sabil (mohamedsabil83) - */ -// Same for long and short -$months = [ - // @TODO add shakl to months - 'يناير', - 'فبراير', - 'مارس', - 'أبريل', - 'مايو', - 'يونيو', - 'يوليو', - 'أغسطس', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر', -]; - -return [ - 'year' => implode('|', ['{0}:count سَنَة', '{1}سَنَة', '{2}سَنَتَيْن', ']2,11[:count سَنَوَات', ']10,Inf[:count سَنَة']), - 'a_year' => implode('|', ['{0}:count سَنَة', '{1}سَنَة', '{2}سَنَتَيْن', ']2,11[:count سَنَوَات', ']10,Inf[:count سَنَة']), - 'month' => implode('|', ['{0}:count شَهْرَ', '{1}شَهْرَ', '{2}شَهْرَيْن', ']2,11[:count أَشْهُر', ']10,Inf[:count شَهْرَ']), - 'a_month' => implode('|', ['{0}:count شَهْرَ', '{1}شَهْرَ', '{2}شَهْرَيْن', ']2,11[:count أَشْهُر', ']10,Inf[:count شَهْرَ']), - 'week' => implode('|', ['{0}:count أُسْبُوع', '{1}أُسْبُوع', '{2}أُسْبُوعَيْن', ']2,11[:count أَسَابِيع', ']10,Inf[:count أُسْبُوع']), - 'a_week' => implode('|', ['{0}:count أُسْبُوع', '{1}أُسْبُوع', '{2}أُسْبُوعَيْن', ']2,11[:count أَسَابِيع', ']10,Inf[:count أُسْبُوع']), - 'day' => implode('|', ['{0}:count يَوْم', '{1}يَوْم', '{2}يَوْمَيْن', ']2,11[:count أَيَّام', ']10,Inf[:count يَوْم']), - 'a_day' => implode('|', ['{0}:count يَوْم', '{1}يَوْم', '{2}يَوْمَيْن', ']2,11[:count أَيَّام', ']10,Inf[:count يَوْم']), - 'hour' => implode('|', ['{0}:count سَاعَة', '{1}سَاعَة', '{2}سَاعَتَيْن', ']2,11[:count سَاعَات', ']10,Inf[:count سَاعَة']), - 'a_hour' => implode('|', ['{0}:count سَاعَة', '{1}سَاعَة', '{2}سَاعَتَيْن', ']2,11[:count سَاعَات', ']10,Inf[:count سَاعَة']), - 'minute' => implode('|', ['{0}:count دَقِيقَة', '{1}دَقِيقَة', '{2}دَقِيقَتَيْن', ']2,11[:count دَقَائِق', ']10,Inf[:count دَقِيقَة']), - 'a_minute' => implode('|', ['{0}:count دَقِيقَة', '{1}دَقِيقَة', '{2}دَقِيقَتَيْن', ']2,11[:count دَقَائِق', ']10,Inf[:count دَقِيقَة']), - 'second' => implode('|', ['{0}:count ثَانِيَة', '{1}ثَانِيَة', '{2}ثَانِيَتَيْن', ']2,11[:count ثَوَان', ']10,Inf[:count ثَانِيَة']), - 'a_second' => implode('|', ['{0}:count ثَانِيَة', '{1}ثَانِيَة', '{2}ثَانِيَتَيْن', ']2,11[:count ثَوَان', ']10,Inf[:count ثَانِيَة']), - 'ago' => 'مُنْذُ :time', - 'from_now' => 'مِنَ الْآن :time', - 'after' => 'بَعْدَ :time', - 'before' => 'قَبْلَ :time', - - // @TODO add shakl to translations below - 'diff_now' => 'الآن', - 'diff_today' => 'اليوم', - 'diff_today_regexp' => 'اليوم(?:\\s+عند)?(?:\\s+الساعة)?', - 'diff_yesterday' => 'أمس', - 'diff_yesterday_regexp' => 'أمس(?:\\s+عند)?(?:\\s+الساعة)?', - 'diff_tomorrow' => 'غداً', - 'diff_tomorrow_regexp' => 'غدًا(?:\\s+عند)?(?:\\s+الساعة)?', - 'diff_before_yesterday' => 'قبل الأمس', - 'diff_after_tomorrow' => 'بعد غد', - 'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']), - 'period_interval' => 'كل :interval', - 'period_start_date' => 'من :date', - 'period_end_date' => 'إلى :date', - 'months' => $months, - 'months_short' => $months, - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'], - 'weekdays_min' => ['ح', 'اث', 'ثل', 'أر', 'خم', 'ج', 'س'], - 'list' => ['، ', ' و '], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[اليوم عند الساعة] LT', - 'nextDay' => '[غدًا عند الساعة] LT', - 'nextWeek' => 'dddd [عند الساعة] LT', - 'lastDay' => '[أمس عند الساعة] LT', - 'lastWeek' => 'dddd [عند الساعة] LT', - 'sameElse' => 'L', - ], - 'meridiem' => ['ص', 'م'], - 'weekend' => [5, 6], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_TD.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_TD.php deleted file mode 100644 index e790b99e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_TD.php +++ /dev/null @@ -1,13 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ar.php', [ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_TN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_TN.php deleted file mode 100644 index f096678f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_TN.php +++ /dev/null @@ -1,91 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Authors: - * - JD Isaacks - * - Atef Ben Ali (atefBB) - * - Mohamed Sabil (mohamedsabil83) - */ -$months = [ - 'جانفي', - 'فيفري', - 'مارس', - 'أفريل', - 'ماي', - 'جوان', - 'جويلية', - 'أوت', - 'سبتمبر', - 'أكتوبر', - 'نوفمبر', - 'ديسمبر', -]; - -return [ - 'year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']), - 'a_year' => implode('|', ['{0}:count سنة', '{1}سنة', '{2}سنتين', ']2,11[:count سنوات', ']10,Inf[:count سنة']), - 'month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']), - 'a_month' => implode('|', ['{0}:count شهر', '{1}شهر', '{2}شهرين', ']2,11[:count أشهر', ']10,Inf[:count شهر']), - 'week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']), - 'a_week' => implode('|', ['{0}:count أسبوع', '{1}أسبوع', '{2}أسبوعين', ']2,11[:count أسابيع', ']10,Inf[:count أسبوع']), - 'day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']), - 'a_day' => implode('|', ['{0}:count يوم', '{1}يوم', '{2}يومين', ']2,11[:count أيام', ']10,Inf[:count يوم']), - 'hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']), - 'a_hour' => implode('|', ['{0}:count ساعة', '{1}ساعة', '{2}ساعتين', ']2,11[:count ساعات', ']10,Inf[:count ساعة']), - 'minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']), - 'a_minute' => implode('|', ['{0}:count دقيقة', '{1}دقيقة', '{2}دقيقتين', ']2,11[:count دقائق', ']10,Inf[:count دقيقة']), - 'second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']), - 'a_second' => implode('|', ['{0}:count ثانية', '{1}ثانية', '{2}ثانيتين', ']2,11[:count ثواني', ']10,Inf[:count ثانية']), - 'ago' => 'منذ :time', - 'from_now' => 'في :time', - 'after' => 'بعد :time', - 'before' => 'قبل :time', - 'diff_now' => 'الآن', - 'diff_today' => 'اليوم', - 'diff_today_regexp' => 'اليوم(?:\\s+على)?(?:\\s+الساعة)?', - 'diff_yesterday' => 'أمس', - 'diff_yesterday_regexp' => 'أمس(?:\\s+على)?(?:\\s+الساعة)?', - 'diff_tomorrow' => 'غداً', - 'diff_tomorrow_regexp' => 'غدا(?:\\s+على)?(?:\\s+الساعة)?', - 'diff_before_yesterday' => 'قبل الأمس', - 'diff_after_tomorrow' => 'بعد غد', - 'period_recurrences' => implode('|', ['{0}مرة', '{1}مرة', '{2}:count مرتين', ']2,11[:count مرات', ']10,Inf[:count مرة']), - 'period_interval' => 'كل :interval', - 'period_start_date' => 'من :date', - 'period_end_date' => 'إلى :date', - 'months' => $months, - 'months_short' => $months, - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['أحد', 'اثنين', 'ثلاثاء', 'أربعاء', 'خميس', 'جمعة', 'سبت'], - 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'list' => ['، ', ' و '], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 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', - ], - 'calendar' => [ - 'sameDay' => '[اليوم على الساعة] LT', - 'nextDay' => '[غدا على الساعة] LT', - 'nextWeek' => 'dddd [على الساعة] LT', - 'lastDay' => '[أمس على الساعة] LT', - 'lastWeek' => 'dddd [على الساعة] LT', - 'sameElse' => 'L', - ], - 'meridiem' => ['ص', 'م'], - 'weekend' => [5, 6], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ar_YE.php b/vendor/nesbot/carbon/src/Carbon/Lang/ar_YE.php deleted file mode 100644 index 169fe88a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ar_YE.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - * - Abdullah-Alhariri - */ -return array_replace_recursive(require __DIR__.'/ar.php', [ - 'formats' => [ - 'L' => 'DD MMM, YYYY', - ], - 'months' => ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'], - 'months_short' => ['ينا', 'فبر', 'مار', 'أبر', 'ماي', 'يون', 'يول', 'أغس', 'سبت', 'أكت', 'نوف', 'ديس'], - 'weekdays' => ['الأحد', 'الاثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'], - 'weekdays_short' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'weekdays_min' => ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'], - 'day_of_first_week_of_year' => 1, - 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰٤', '۰٥', '۰٦', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱٤', '۱٥', '۱٦', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲٤', '۲٥', '۲٦', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳٤', '۳٥', '۳٦', '۳۷', '۳۸', '۳۹', '٤۰', '٤۱', '٤۲', '٤۳', '٤٤', '٤٥', '٤٦', '٤۷', '٤۸', '٤۹', '٥۰', '٥۱', '٥۲', '٥۳', '٥٤', '٥٥', '٥٦', '٥۷', '٥۸', '٥۹', '٦۰', '٦۱', '٦۲', '٦۳', '٦٤', '٦٥', '٦٦', '٦۷', '٦۸', '٦۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷٤', '۷٥', '۷٦', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸٤', '۸٥', '۸٦', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹٤', '۹٥', '۹٦', '۹۷', '۹۸', '۹۹'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/as.php b/vendor/nesbot/carbon/src/Carbon/Lang/as.php deleted file mode 100644 index 04bc3dfd..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/as.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/as_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/as_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/as_IN.php deleted file mode 100644 index 5fbc3dba..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/as_IN.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Amitakhya Phukan, Red Hat bug-glibc@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'D-MM-YYYY', - ], - 'months' => ['জানুৱাৰী', 'ফেব্ৰুৱাৰী', 'মাৰ্চ', 'এপ্ৰিল', 'মে', 'জুন', 'জুলাই', 'আগষ্ট', 'ছেপ্তেম্বৰ', 'অক্টোবৰ', 'নৱেম্বৰ', 'ডিচেম্বৰ'], - 'months_short' => ['জানু', 'ফেব্ৰু', 'মাৰ্চ', 'এপ্ৰিল', 'মে', 'জুন', 'জুলাই', 'আগ', 'সেপ্ট', 'অক্টো', 'নভে', 'ডিসে'], - 'weekdays' => ['দেওবাৰ', 'সোমবাৰ', 'মঙ্গলবাৰ', 'বুধবাৰ', 'বৃহষ্পতিবাৰ', 'শুক্ৰবাৰ', 'শনিবাৰ'], - 'weekdays_short' => ['দেও', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহষ্পতি', 'শুক্ৰ', 'শনি'], - 'weekdays_min' => ['দেও', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহষ্পতি', 'শুক্ৰ', 'শনি'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['পূৰ্ব্বাহ্ন', 'অপৰাহ্ন'], - - 'year' => ':count বছৰ', - 'y' => ':count বছৰ', - 'a_year' => ':count বছৰ', - - 'month' => ':count মাহ', - 'm' => ':count মাহ', - 'a_month' => ':count মাহ', - - 'week' => ':count সপ্তাহ', - 'w' => ':count সপ্তাহ', - 'a_week' => ':count সপ্তাহ', - - 'day' => ':count বাৰ', - 'd' => ':count বাৰ', - 'a_day' => ':count বাৰ', - - 'hour' => ':count ঘণ্টা', - 'h' => ':count ঘণ্টা', - 'a_hour' => ':count ঘণ্টা', - - 'minute' => ':count মিনিট', - 'min' => ':count মিনিট', - 'a_minute' => ':count মিনিট', - - 'second' => ':count দ্বিতীয়', - 's' => ':count দ্বিতীয়', - 'a_second' => ':count দ্বিতীয়', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/asa.php b/vendor/nesbot/carbon/src/Carbon/Lang/asa.php deleted file mode 100644 index 03bb4839..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/asa.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['icheheavo', 'ichamthi'], - 'weekdays' => ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'], - 'weekdays_short' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Ijm', 'Jmo'], - 'weekdays_min' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Ijm', 'Jmo'], - 'months' => ['Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'], - 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Dec'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ast.php b/vendor/nesbot/carbon/src/Carbon/Lang/ast.php deleted file mode 100644 index d9bdebe5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ast.php +++ /dev/null @@ -1,59 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Jordi Mallach jordi@gnu.org - * - Adolfo Jayme-Barrientos (fitojb) - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['de xineru', 'de febreru', 'de marzu', 'd’abril', 'de mayu', 'de xunu', 'de xunetu', 'd’agostu', 'de setiembre', 'd’ochobre', 'de payares', 'd’avientu'], - 'months_short' => ['xin', 'feb', 'mar', 'abr', 'may', 'xun', 'xnt', 'ago', 'set', 'och', 'pay', 'avi'], - 'weekdays' => ['domingu', 'llunes', 'martes', 'miércoles', 'xueves', 'vienres', 'sábadu'], - 'weekdays_short' => ['dom', 'llu', 'mar', 'mié', 'xue', 'vie', 'sáb'], - 'weekdays_min' => ['dom', 'llu', 'mar', 'mié', 'xue', 'vie', 'sáb'], - - 'year' => ':count añu|:count años', - 'y' => ':count añu|:count años', - 'a_year' => 'un añu|:count años', - - 'month' => ':count mes', - 'm' => ':count mes', - 'a_month' => 'un mes|:count mes', - - 'week' => ':count selmana|:count selmanes', - 'w' => ':count selmana|:count selmanes', - 'a_week' => 'una selmana|:count selmanes', - - 'day' => ':count día|:count díes', - 'd' => ':count día|:count díes', - 'a_day' => 'un día|:count díes', - - 'hour' => ':count hora|:count hores', - 'h' => ':count hora|:count hores', - 'a_hour' => 'una hora|:count hores', - - 'minute' => ':count minutu|:count minutos', - 'min' => ':count minutu|:count minutos', - 'a_minute' => 'un minutu|:count minutos', - - 'second' => ':count segundu|:count segundos', - 's' => ':count segundu|:count segundos', - 'a_second' => 'un segundu|:count segundos', - - 'ago' => 'hai :time', - 'from_now' => 'en :time', - 'after' => ':time dempués', - 'before' => ':time enantes', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ast_ES.php b/vendor/nesbot/carbon/src/Carbon/Lang/ast_ES.php deleted file mode 100644 index 04d75621..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ast_ES.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ast.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ayc.php b/vendor/nesbot/carbon/src/Carbon/Lang/ayc.php deleted file mode 100644 index d6a6f638..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ayc.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/ayc_PE.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ayc_PE.php b/vendor/nesbot/carbon/src/Carbon/Lang/ayc_PE.php deleted file mode 100644 index ff18504f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ayc_PE.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - runasimipi.org libc-alpha@sourceware.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['inïru', 'phiwriru', 'marsu', 'awrila', 'mayu', 'junyu', 'julyu', 'awustu', 'sitimri', 'uktuwri', 'nuwimri', 'risimri'], - 'months_short' => ['ini', 'phi', 'mar', 'awr', 'may', 'jun', 'jul', 'awu', 'sit', 'ukt', 'nuw', 'ris'], - 'weekdays' => ['tuminku', 'lunisa', 'martisa', 'mirkulisa', 'juywisa', 'wirnisa', 'sawäru'], - 'weekdays_short' => ['tum', 'lun', 'mar', 'mir', 'juy', 'wir', 'saw'], - 'weekdays_min' => ['tum', 'lun', 'mar', 'mir', 'juy', 'wir', 'saw'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['VM', 'NM'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/az.php b/vendor/nesbot/carbon/src/Carbon/Lang/az.php deleted file mode 100644 index 1e92106d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/az.php +++ /dev/null @@ -1,128 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - Kunal Marwaha - * - François B - * - JD Isaacks - * - Orxan - * - Şəhriyar İmanov - * - Baran Şengül - */ -return [ - 'year' => ':count il', - 'a_year' => '{1}bir il|]1,Inf[:count il', - 'y' => ':count il', - 'month' => ':count ay', - 'a_month' => '{1}bir ay|]1,Inf[:count ay', - 'm' => ':count ay', - 'week' => ':count həftə', - 'a_week' => '{1}bir həftə|]1,Inf[:count həftə', - 'w' => ':count h.', - 'day' => ':count gün', - 'a_day' => '{1}bir gün|]1,Inf[:count gün', - 'd' => ':count g.', - 'hour' => ':count saat', - 'a_hour' => '{1}bir saat|]1,Inf[:count saat', - 'h' => ':count saat', - 'minute' => ':count d.', - 'a_minute' => '{1}bir dəqiqə|]1,Inf[:count dəqiqə', - 'min' => ':count dəqiqə', - 'second' => ':count san.', - 'a_second' => '{1}birneçə saniyə|]1,Inf[:count saniyə', - 's' => ':count saniyə', - 'ago' => ':time əvvəl', - 'from_now' => ':time sonra', - 'after' => ':time sonra', - 'before' => ':time əvvəl', - 'diff_now' => 'indi', - 'diff_today' => 'bugün', - 'diff_today_regexp' => 'bugün(?:\\s+saat)?', - 'diff_yesterday' => 'dünən', - 'diff_tomorrow' => 'sabah', - 'diff_tomorrow_regexp' => 'sabah(?:\\s+saat)?', - 'diff_before_yesterday' => 'srağagün', - 'diff_after_tomorrow' => 'birisi gün', - 'period_recurrences' => ':count dəfədən bir', - 'period_interval' => 'hər :interval', - 'period_start_date' => ':date tarixindən başlayaraq', - 'period_end_date' => ':date tarixinədək', - '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', - ], - 'calendar' => [ - 'sameDay' => '[bugün saat] LT', - 'nextDay' => '[sabah saat] LT', - 'nextWeek' => '[gələn həftə] dddd [saat] LT', - 'lastDay' => '[dünən] LT', - 'lastWeek' => '[keçən həftə] dddd [saat] LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number) { - if ($number === 0) { // special case for zero - return "$number-ıncı"; - } - - static $suffixes = [ - 1 => '-inci', - 5 => '-inci', - 8 => '-inci', - 70 => '-inci', - 80 => '-inci', - 2 => '-nci', - 7 => '-nci', - 20 => '-nci', - 50 => '-nci', - 3 => '-üncü', - 4 => '-üncü', - 100 => '-üncü', - 6 => '-ncı', - 9 => '-uncu', - 10 => '-uncu', - 30 => '-uncu', - 60 => '-ıncı', - 90 => '-ıncı', - ]; - - $lastDigit = $number % 10; - - return $number.($suffixes[$lastDigit] ?? $suffixes[$number % 100 - $lastDigit] ?? $suffixes[$number >= 100 ? 100 : -1] ?? ''); - }, - 'meridiem' => function ($hour) { - if ($hour < 4) { - return 'gecə'; - } - if ($hour < 12) { - return 'səhər'; - } - if ($hour < 17) { - return 'gündüz'; - } - - return 'axşam'; - }, - 'months' => ['yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', 'noyabr', 'dekabr'], - 'months_short' => ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'], - 'months_standalone' => ['Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'İyun', 'İyul', 'Avqust', 'Sentyabr', 'Oktyabr', 'Noyabr', 'Dekabr'], - 'weekdays' => ['bazar', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'], - 'weekdays_short' => ['baz', 'bze', 'çax', 'çər', 'cax', 'cüm', 'şən'], - 'weekdays_min' => ['bz', 'be', 'ça', 'çə', 'ca', 'cü', 'şə'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' və '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/az_AZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/az_AZ.php deleted file mode 100644 index 2acf881a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/az_AZ.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Pablo Saratxaga pablo@mandrakesoft.com - */ -return array_replace_recursive(require __DIR__.'/az.php', [ - 'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'İyn', 'İyl', 'Avq', 'Sen', 'Okt', 'Noy', 'Dek'], - 'weekdays' => ['bazar günü', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'], - 'weekdays_short' => ['baz', 'ber', 'çax', 'çər', 'cax', 'cüm', 'şnb'], - 'weekdays_min' => ['baz', 'ber', 'çax', 'çər', 'cax', 'cüm', 'şnb'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/az_Cyrl.php b/vendor/nesbot/carbon/src/Carbon/Lang/az_Cyrl.php deleted file mode 100644 index 28fc62fe..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/az_Cyrl.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/az.php', [ - 'weekdays' => ['базар', 'базар ертәси', 'чәршәнбә ахшамы', 'чәршәнбә', 'ҹүмә ахшамы', 'ҹүмә', 'шәнбә'], - 'weekdays_short' => ['Б.', 'Б.Е.', 'Ч.А.', 'Ч.', 'Ҹ.А.', 'Ҹ.', 'Ш.'], - 'weekdays_min' => ['Б.', 'Б.Е.', 'Ч.А.', 'Ч.', 'Ҹ.А.', 'Ҹ.', 'Ш.'], - 'months' => ['јанвар', 'феврал', 'март', 'апрел', 'май', 'ијун', 'ијул', 'август', 'сентјабр', 'октјабр', 'нојабр', 'декабр'], - 'months_short' => ['јан', 'фев', 'мар', 'апр', 'май', 'ијн', 'ијл', 'авг', 'сен', 'окт', 'ној', 'дек'], - 'months_standalone' => ['Јанвар', 'Феврал', 'Март', 'Апрел', 'Май', 'Ијун', 'Ијул', 'Август', 'Сентјабр', 'Октјабр', 'Нојабр', 'Декабр'], - 'meridiem' => ['а', 'п'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/az_IR.php b/vendor/nesbot/carbon/src/Carbon/Lang/az_IR.php deleted file mode 100644 index 991a0efb..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/az_IR.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Mousa Moradi mousamk@gmail.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'OY/OM/OD', - ], - 'months' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مئی', 'ژوئن', 'جولای', 'آقۇست', 'سپتامبر', 'اوْکتوْبر', 'نوْوامبر', 'دسامبر'], - 'months_short' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مئی', 'ژوئن', 'جولای', 'آقۇست', 'سپتامبر', 'اوْکتوْبر', 'نوْوامبر', 'دسامبر'], - 'weekdays' => ['یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چارشنبه', 'جۆمعه آخشامی', 'جۆمعه', 'شنبه'], - 'weekdays_short' => ['یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چارشنبه', 'جۆمعه آخشامی', 'جۆمعه', 'شنبه'], - 'weekdays_min' => ['یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چارشنبه', 'جۆمعه آخشامی', 'جۆمعه', 'شنبه'], - 'first_day_of_week' => 6, - 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰۴', '۰۵', '۰۶', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱۴', '۱۵', '۱۶', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲۴', '۲۵', '۲۶', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳۴', '۳۵', '۳۶', '۳۷', '۳۸', '۳۹', '۴۰', '۴۱', '۴۲', '۴۳', '۴۴', '۴۵', '۴۶', '۴۷', '۴۸', '۴۹', '۵۰', '۵۱', '۵۲', '۵۳', '۵۴', '۵۵', '۵۶', '۵۷', '۵۸', '۵۹', '۶۰', '۶۱', '۶۲', '۶۳', '۶۴', '۶۵', '۶۶', '۶۷', '۶۸', '۶۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷۴', '۷۵', '۷۶', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸۴', '۸۵', '۸۶', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹۴', '۹۵', '۹۶', '۹۷', '۹۸', '۹۹'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/az_Latn.php b/vendor/nesbot/carbon/src/Carbon/Lang/az_Latn.php deleted file mode 100644 index 0be33914..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/az_Latn.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/az.php', [ - 'meridiem' => ['a', 'p'], - 'weekdays' => ['bazar', 'bazar ertəsi', 'çərşənbə axşamı', 'çərşənbə', 'cümə axşamı', 'cümə', 'şənbə'], - 'weekdays_short' => ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'], - 'weekdays_min' => ['B.', 'B.E.', 'Ç.A.', 'Ç.', 'C.A.', 'C.', 'Ş.'], - 'months' => ['yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', 'noyabr', 'dekabr'], - 'months_short' => ['yan', 'fev', 'mar', 'apr', 'may', 'iyn', 'iyl', 'avq', 'sen', 'okt', 'noy', 'dek'], - 'months_standalone' => ['Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'İyun', 'İyul', 'Avqust', 'Sentyabr', 'Oktyabr', 'Noyabr', 'Dekabr'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD.MM.YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'D MMMM YYYY, dddd HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bas.php b/vendor/nesbot/carbon/src/Carbon/Lang/bas.php deleted file mode 100644 index 41bfa1d8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bas.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['I bikɛ̂glà', 'I ɓugajɔp'], - 'weekdays' => ['ŋgwà nɔ̂y', 'ŋgwà njaŋgumba', 'ŋgwà ûm', 'ŋgwà ŋgê', 'ŋgwà mbɔk', 'ŋgwà kɔɔ', 'ŋgwà jôn'], - 'weekdays_short' => ['nɔy', 'nja', 'uum', 'ŋge', 'mbɔ', 'kɔɔ', 'jon'], - 'weekdays_min' => ['nɔy', 'nja', 'uum', 'ŋge', 'mbɔ', 'kɔɔ', 'jon'], - 'months' => ['Kɔndɔŋ', 'Màcɛ̂l', 'Màtùmb', 'Màtop', 'M̀puyɛ', 'Hìlòndɛ̀', 'Njèbà', 'Hìkaŋ', 'Dìpɔ̀s', 'Bìòôm', 'Màyɛsèp', 'Lìbuy li ńyèe'], - 'months_short' => ['kɔn', 'mac', 'mat', 'mto', 'mpu', 'hil', 'nje', 'hik', 'dip', 'bio', 'may', 'liɓ'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM, YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - - 'second' => ':count móndî', // less reliable - 's' => ':count móndî', // less reliable - 'a_second' => ':count móndî', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/be.php b/vendor/nesbot/carbon/src/Carbon/Lang/be.php deleted file mode 100644 index ee736365..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/be.php +++ /dev/null @@ -1,172 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Carbon\CarbonInterface; -use Symfony\Component\Translation\PluralizationRules; - -// @codeCoverageIgnoreStart -if (class_exists(PluralizationRules::class)) { - PluralizationRules::set(static function ($number) { - return (($number % 10 == 1) && ($number % 100 != 11)) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2); - }, 'be'); -} -// @codeCoverageIgnoreEnd - -/* - * Authors: - * - Josh Soref - * - SobakaSlava - * - François B - * - Serhan Apaydın - * - JD Isaacks - * - AbadonnaAbbys - * - Siomkin Alexander - */ -return [ - 'year' => ':count год|:count гады|:count гадоў', - 'a_year' => '{1}год|:count год|:count гады|:count гадоў', - 'y' => ':count год|:count гады|:count гадоў', - 'month' => ':count месяц|:count месяцы|:count месяцаў', - 'a_month' => '{1}месяц|:count месяц|:count месяцы|:count месяцаў', - 'm' => ':count месяц|:count месяцы|:count месяцаў', - 'week' => ':count тыдзень|:count тыдні|:count тыдняў', - 'a_week' => '{1}тыдзень|:count тыдзень|:count тыдні|:count тыдняў', - 'w' => ':count тыдзень|:count тыдні|:count тыдняў', - 'day' => ':count дзень|:count дні|:count дзён', - 'a_day' => '{1}дзень|:count дзень|:count дні|:count дзён', - 'd' => ':count дн', - 'hour' => ':count гадзіну|:count гадзіны|:count гадзін', - 'a_hour' => '{1}гадзіна|:count гадзіна|:count гадзіны|:count гадзін', - 'h' => ':count гадзіна|:count гадзіны|:count гадзін', - 'minute' => ':count хвіліна|:count хвіліны|:count хвілін', - 'a_minute' => '{1}хвіліна|:count хвіліна|:count хвіліны|:count хвілін', - 'min' => ':count хв', - 'second' => ':count секунда|:count секунды|:count секунд', - 'a_second' => '{1}некалькі секунд|:count секунда|:count секунды|:count секунд', - 's' => ':count сек', - - 'hour_ago' => ':count гадзіну|:count гадзіны|:count гадзін', - 'a_hour_ago' => '{1}гадзіну|:count гадзіну|:count гадзіны|:count гадзін', - 'h_ago' => ':count гадзіну|:count гадзіны|:count гадзін', - 'minute_ago' => ':count хвіліну|:count хвіліны|:count хвілін', - 'a_minute_ago' => '{1}хвіліну|:count хвіліну|:count хвіліны|:count хвілін', - 'min_ago' => ':count хвіліну|:count хвіліны|:count хвілін', - 'second_ago' => ':count секунду|:count секунды|:count секунд', - 'a_second_ago' => '{1}некалькі секунд|:count секунду|:count секунды|:count секунд', - 's_ago' => ':count секунду|:count секунды|:count секунд', - - 'hour_from_now' => ':count гадзіну|:count гадзіны|:count гадзін', - 'a_hour_from_now' => '{1}гадзіну|:count гадзіну|:count гадзіны|:count гадзін', - 'h_from_now' => ':count гадзіну|:count гадзіны|:count гадзін', - 'minute_from_now' => ':count хвіліну|:count хвіліны|:count хвілін', - 'a_minute_from_now' => '{1}хвіліну|:count хвіліну|:count хвіліны|:count хвілін', - 'min_from_now' => ':count хвіліну|:count хвіліны|:count хвілін', - 'second_from_now' => ':count секунду|:count секунды|:count секунд', - 'a_second_from_now' => '{1}некалькі секунд|:count секунду|:count секунды|:count секунд', - 's_from_now' => ':count секунду|:count секунды|:count секунд', - - 'hour_after' => ':count гадзіну|:count гадзіны|:count гадзін', - 'a_hour_after' => '{1}гадзіну|:count гадзіну|:count гадзіны|:count гадзін', - 'h_after' => ':count гадзіну|:count гадзіны|:count гадзін', - 'minute_after' => ':count хвіліну|:count хвіліны|:count хвілін', - 'a_minute_after' => '{1}хвіліну|:count хвіліну|:count хвіліны|:count хвілін', - 'min_after' => ':count хвіліну|:count хвіліны|:count хвілін', - 'second_after' => ':count секунду|:count секунды|:count секунд', - 'a_second_after' => '{1}некалькі секунд|:count секунду|:count секунды|:count секунд', - 's_after' => ':count секунду|:count секунды|:count секунд', - - 'hour_before' => ':count гадзіну|:count гадзіны|:count гадзін', - 'a_hour_before' => '{1}гадзіну|:count гадзіну|:count гадзіны|:count гадзін', - 'h_before' => ':count гадзіну|:count гадзіны|:count гадзін', - 'minute_before' => ':count хвіліну|:count хвіліны|:count хвілін', - 'a_minute_before' => '{1}хвіліну|:count хвіліну|:count хвіліны|:count хвілін', - 'min_before' => ':count хвіліну|:count хвіліны|:count хвілін', - 'second_before' => ':count секунду|:count секунды|:count секунд', - 'a_second_before' => '{1}некалькі секунд|:count секунду|:count секунды|:count секунд', - 's_before' => ':count секунду|:count секунды|:count секунд', - - 'ago' => ':time таму', - 'from_now' => 'праз :time', - 'after' => ':time пасля', - 'before' => ':time да', - 'diff_now' => 'цяпер', - 'diff_today' => 'Сёння', - 'diff_today_regexp' => 'Сёння(?:\\s+ў)?', - 'diff_yesterday' => 'учора', - 'diff_yesterday_regexp' => 'Учора(?:\\s+ў)?', - 'diff_tomorrow' => 'заўтра', - 'diff_tomorrow_regexp' => 'Заўтра(?:\\s+ў)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Сёння ў] LT', - 'nextDay' => '[Заўтра ў] LT', - 'nextWeek' => '[У] dddd [ў] LT', - 'lastDay' => '[Учора ў] LT', - 'lastWeek' => function (CarbonInterface $current) { - switch ($current->dayOfWeek) { - case 1: - case 2: - case 4: - return '[У мінулы] dddd [ў] LT'; - default: - return '[У мінулую] dddd [ў] LT'; - } - }, - 'sameElse' => 'L', - ], - 'ordinal' => function ($number, $period) { - switch ($period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return ($number % 10 === 2 || $number % 10 === 3) && ($number % 100 !== 12 && $number % 100 !== 13) ? $number.'-і' : $number.'-ы'; - case 'D': - return $number.'-га'; - default: - return $number; - } - }, - 'meridiem' => function ($hour) { - if ($hour < 4) { - return 'ночы'; - } - if ($hour < 12) { - return 'раніцы'; - } - if ($hour < 17) { - return 'дня'; - } - - return 'вечара'; - }, - 'months' => ['студзеня', 'лютага', 'сакавіка', 'красавіка', 'траўня', 'чэрвеня', 'ліпеня', 'жніўня', 'верасня', 'кастрычніка', 'лістапада', 'снежня'], - 'months_standalone' => ['студзень', 'люты', 'сакавік', 'красавік', 'травень', 'чэрвень', 'ліпень', 'жнівень', 'верасень', 'кастрычнік', 'лістапад', 'снежань'], - 'months_short' => ['студ', 'лют', 'сак', 'крас', 'трав', 'чэрв', 'ліп', 'жнів', 'вер', 'каст', 'ліст', 'снеж'], - 'months_regexp' => '/(DD?o?\.?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/', - 'weekdays' => ['нядзелю', 'панядзелак', 'аўторак', 'сераду', 'чацвер', 'пятніцу', 'суботу'], - 'weekdays_standalone' => ['нядзеля', 'панядзелак', 'аўторак', 'серада', 'чацвер', 'пятніца', 'субота'], - 'weekdays_short' => ['нд', 'пн', 'ат', 'ср', 'чц', 'пт', 'сб'], - 'weekdays_min' => ['нд', 'пн', 'ат', 'ср', 'чц', 'пт', 'сб'], - 'weekdays_regexp' => '/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/', - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' і '], - 'months_short_standalone' => ['сту', 'лют', 'сак', 'кра', 'май', 'чэр', 'ліп', 'жні', 'вер', 'кас', 'ліс', 'сне'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/be_BY.php b/vendor/nesbot/carbon/src/Carbon/Lang/be_BY.php deleted file mode 100644 index 26684b40..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/be_BY.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/be.php', [ - 'months' => ['студзеня', 'лютага', 'сакавіка', 'красавіка', 'мая', 'чэрвеня', 'ліпеня', 'жніўня', 'верасня', 'кастрычніка', 'лістапада', 'снежня'], - 'months_short' => ['сту', 'лют', 'сак', 'кра', 'мая', 'чэр', 'ліп', 'жні', 'вер', 'кас', 'ліс', 'сне'], - 'weekdays' => ['Нядзеля', 'Панядзелак', 'Аўторак', 'Серада', 'Чацвер', 'Пятніца', 'Субота'], - 'weekdays_short' => ['Няд', 'Пан', 'Аўт', 'Срд', 'Чцв', 'Пят', 'Суб'], - 'weekdays_min' => ['Няд', 'Пан', 'Аўт', 'Срд', 'Чцв', 'Пят', 'Суб'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/be_BY@latin.php b/vendor/nesbot/carbon/src/Carbon/Lang/be_BY@latin.php deleted file mode 100644 index 517ce83a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/be_BY@latin.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], - 'months' => ['studzienia', 'lutaha', 'sakavika', 'krasavika', 'maja', 'červienia', 'lipienia', 'žniŭnia', 'vieraśnia', 'kastryčnika', 'listapada', 'śniežnia'], - 'months_short' => ['Stu', 'Lut', 'Sak', 'Kra', 'Maj', 'Čer', 'Lip', 'Žni', 'Vie', 'Kas', 'Lis', 'Śni'], - 'weekdays' => ['Niadziela', 'Paniadziełak', 'Aŭtorak', 'Sierada', 'Čaćvier', 'Piatnica', 'Subota'], - 'weekdays_short' => ['Nia', 'Pan', 'Aŭt', 'Sie', 'Čać', 'Pia', 'Sub'], - 'weekdays_min' => ['Nia', 'Pan', 'Aŭt', 'Sie', 'Čać', 'Pia', 'Sub'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bem.php b/vendor/nesbot/carbon/src/Carbon/Lang/bem.php deleted file mode 100644 index 1c3ef039..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bem.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/bem_ZM.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bem_ZM.php b/vendor/nesbot/carbon/src/Carbon/Lang/bem_ZM.php deleted file mode 100644 index 620b5795..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bem_ZM.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - ANLoc Martin Benjamin locales@africanlocalization.net - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'MM/DD/YYYY', - ], - 'months' => ['Januari', 'Februari', 'Machi', 'Epreo', 'Mei', 'Juni', 'Julai', 'Ogasti', 'Septemba', 'Oktoba', 'Novemba', 'Disemba'], - 'months_short' => ['Jan', 'Feb', 'Mac', 'Epr', 'Mei', 'Jun', 'Jul', 'Oga', 'Sep', 'Okt', 'Nov', 'Dis'], - 'weekdays' => ['Pa Mulungu', 'Palichimo', 'Palichibuli', 'Palichitatu', 'Palichine', 'Palichisano', 'Pachibelushi'], - 'weekdays_short' => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - 'weekdays_min' => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['uluchelo', 'akasuba'], - - 'year' => 'myaka :count', - 'y' => 'myaka :count', - 'a_year' => 'myaka :count', - - 'month' => 'myeshi :count', - 'm' => 'myeshi :count', - 'a_month' => 'myeshi :count', - - 'week' => 'umulungu :count', - 'w' => 'umulungu :count', - 'a_week' => 'umulungu :count', - - 'day' => 'inshiku :count', - 'd' => 'inshiku :count', - 'a_day' => 'inshiku :count', - - 'hour' => 'awala :count', - 'h' => 'awala :count', - 'a_hour' => 'awala :count', - - 'minute' => 'miniti :count', - 'min' => 'miniti :count', - 'a_minute' => 'miniti :count', - - 'second' => 'sekondi :count', - 's' => 'sekondi :count', - 'a_second' => 'sekondi :count', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ber.php b/vendor/nesbot/carbon/src/Carbon/Lang/ber.php deleted file mode 100644 index 685603c0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ber.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/ber_DZ.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ber_DZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/ber_DZ.php deleted file mode 100644 index 38de10ab..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ber_DZ.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Pablo Saratxaga pablo@mandrakesoft.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], - 'months' => ['yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', 'noyabr', 'dekabr'], - 'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'İyn', 'İyl', 'Avq', 'Sen', 'Okt', 'Noy', 'Dek'], - 'weekdays' => ['bazar günü', 'birinci gün', 'ikinci gün', 'üçüncü gün', 'dördüncü gün', 'beşinci gün', 'altıncı gün'], - 'weekdays_short' => ['baz', 'bir', 'iki', 'üçü', 'dör', 'beş', 'alt'], - 'weekdays_min' => ['baz', 'bir', 'iki', 'üçü', 'dör', 'beş', 'alt'], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ber_MA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ber_MA.php deleted file mode 100644 index 38de10ab..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ber_MA.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Pablo Saratxaga pablo@mandrakesoft.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], - 'months' => ['yanvar', 'fevral', 'mart', 'aprel', 'may', 'iyun', 'iyul', 'avqust', 'sentyabr', 'oktyabr', 'noyabr', 'dekabr'], - 'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'İyn', 'İyl', 'Avq', 'Sen', 'Okt', 'Noy', 'Dek'], - 'weekdays' => ['bazar günü', 'birinci gün', 'ikinci gün', 'üçüncü gün', 'dördüncü gün', 'beşinci gün', 'altıncı gün'], - 'weekdays_short' => ['baz', 'bir', 'iki', 'üçü', 'dör', 'beş', 'alt'], - 'weekdays_min' => ['baz', 'bir', 'iki', 'üçü', 'dör', 'beş', 'alt'], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bez.php b/vendor/nesbot/carbon/src/Carbon/Lang/bez.php deleted file mode 100644 index d59c5ef5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bez.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['pamilau', 'pamunyi'], - 'weekdays' => ['pa mulungu', 'pa shahuviluha', 'pa hivili', 'pa hidatu', 'pa hitayi', 'pa hihanu', 'pa shahulembela'], - 'weekdays_short' => ['Mul', 'Vil', 'Hiv', 'Hid', 'Hit', 'Hih', 'Lem'], - 'weekdays_min' => ['Mul', 'Vil', 'Hiv', 'Hid', 'Hit', 'Hih', 'Lem'], - 'months' => ['pa mwedzi gwa hutala', 'pa mwedzi gwa wuvili', 'pa mwedzi gwa wudatu', 'pa mwedzi gwa wutai', 'pa mwedzi gwa wuhanu', 'pa mwedzi gwa sita', 'pa mwedzi gwa saba', 'pa mwedzi gwa nane', 'pa mwedzi gwa tisa', 'pa mwedzi gwa kumi', 'pa mwedzi gwa kumi na moja', 'pa mwedzi gwa kumi na mbili'], - 'months_short' => ['Hut', 'Vil', 'Dat', 'Tai', 'Han', 'Sit', 'Sab', 'Nan', 'Tis', 'Kum', 'Kmj', 'Kmb'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bg.php b/vendor/nesbot/carbon/src/Carbon/Lang/bg.php deleted file mode 100644 index f7680740..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bg.php +++ /dev/null @@ -1,114 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - François B - * - Serhan Apaydın - * - JD Isaacks - * - Glavić - */ - -use Carbon\CarbonInterface; - -return [ - 'year' => ':count година|:count години', - 'a_year' => 'година|:count години', - 'y' => ':count година|:count години', - 'month' => ':count месец|:count месеца', - 'a_month' => 'месец|:count месеца', - 'm' => ':count месец|:count месеца', - 'week' => ':count седмица|:count седмици', - 'a_week' => 'седмица|:count седмици', - 'w' => ':count седмица|:count седмици', - 'day' => ':count ден|:count дни', - 'a_day' => 'ден|:count дни', - 'd' => ':count ден|:count дни', - 'hour' => ':count час|:count часа', - 'a_hour' => 'час|:count часа', - 'h' => ':count час|:count часа', - 'minute' => ':count минута|:count минути', - 'a_minute' => 'минута|:count минути', - 'min' => ':count минута|:count минути', - 'second' => ':count секунда|:count секунди', - 'a_second' => 'няколко секунди|:count секунди', - 's' => ':count секунда|:count секунди', - 'ago' => 'преди :time', - 'from_now' => 'след :time', - 'after' => 'след :time', - 'before' => 'преди :time', - 'diff_now' => 'сега', - 'diff_today' => 'Днес', - 'diff_today_regexp' => 'Днес(?:\\s+в)?', - 'diff_yesterday' => 'вчера', - 'diff_yesterday_regexp' => 'Вчера(?:\\s+в)?', - 'diff_tomorrow' => 'утре', - 'diff_tomorrow_regexp' => 'Утре(?:\\s+в)?', - 'formats' => [ - 'LT' => 'H:mm', - 'LTS' => 'H:mm:ss', - 'L' => 'D.MM.YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY H:mm', - 'LLLL' => 'dddd, D MMMM YYYY H:mm', - ], - 'calendar' => [ - 'sameDay' => '[Днес в] LT', - 'nextDay' => '[Утре в] LT', - 'nextWeek' => 'dddd [в] LT', - 'lastDay' => '[Вчера в] LT', - 'lastWeek' => function (CarbonInterface $current) { - switch ($current->dayOfWeek) { - case 0: - case 3: - case 6: - return '[В изминалата] dddd [в] LT'; - default: - return '[В изминалия] dddd [в] LT'; - } - }, - 'sameElse' => 'L', - ], - 'ordinal' => function ($number) { - $lastDigit = $number % 10; - $last2Digits = $number % 100; - if ($number === 0) { - return "$number-ев"; - } - if ($last2Digits === 0) { - return "$number-ен"; - } - if ($last2Digits > 10 && $last2Digits < 20) { - return "$number-ти"; - } - if ($lastDigit === 1) { - return "$number-ви"; - } - if ($lastDigit === 2) { - return "$number-ри"; - } - if ($lastDigit === 7 || $lastDigit === 8) { - return "$number-ми"; - } - - return "$number-ти"; - }, - 'months' => ['януари', 'февруари', 'март', 'април', 'май', 'юни', 'юли', 'август', 'септември', 'октомври', 'ноември', 'декември'], - 'months_short' => ['яну', 'фев', 'мар', 'апр', 'май', 'юни', 'юли', 'авг', 'сеп', 'окт', 'ное', 'дек'], - 'weekdays' => ['неделя', 'понеделник', 'вторник', 'сряда', 'четвъртък', 'петък', 'събота'], - 'weekdays_short' => ['нед', 'пон', 'вто', 'сря', 'чет', 'пет', 'съб'], - 'weekdays_min' => ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' и '], - 'meridiem' => ['преди обяд', 'следобед'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bg_BG.php b/vendor/nesbot/carbon/src/Carbon/Lang/bg_BG.php deleted file mode 100644 index b53874d3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bg_BG.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/bg.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bhb.php b/vendor/nesbot/carbon/src/Carbon/Lang/bhb.php deleted file mode 100644 index 49f08032..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bhb.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/bhb_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bhb_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/bhb_IN.php deleted file mode 100644 index ab557cbf..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bhb_IN.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Samsung Electronics Co., Ltd. alexey.merzlyakov@samsung.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], - 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - 'weekdays' => ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - 'weekdays_short' => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - 'weekdays_min' => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bho.php b/vendor/nesbot/carbon/src/Carbon/Lang/bho.php deleted file mode 100644 index e9ed0b68..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bho.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/bho_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bho_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/bho_IN.php deleted file mode 100644 index bc54f363..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bho_IN.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - bhashaghar@googlegroups.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर"'], - 'months_short' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर"'], - 'weekdays' => ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरुवार', 'शुक्रवार', 'शनिवार'], - 'weekdays_short' => ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'], - 'weekdays_min' => ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरु', 'शुक्र', 'शनि'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['पूर्वाह्न', 'अपराह्न'], - - 'hour' => ':count मौसम', - 'h' => ':count मौसम', - 'a_hour' => ':count मौसम', - - 'minute' => ':count कला', - 'min' => ':count कला', - 'a_minute' => ':count कला', - - 'second' => ':count सोमार', - 's' => ':count सोमार', - 'a_second' => ':count सोमार', - - 'year' => ':count साल', - 'y' => ':count साल', - 'a_year' => ':count साल', - - 'month' => ':count महिना', - 'm' => ':count महिना', - 'a_month' => ':count महिना', - - 'week' => ':count सप्ताह', - 'w' => ':count सप्ताह', - 'a_week' => ':count सप्ताह', - - 'day' => ':count दिन', - 'd' => ':count दिन', - 'a_day' => ':count दिन', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bi.php b/vendor/nesbot/carbon/src/Carbon/Lang/bi.php deleted file mode 100644 index dd08128e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bi.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/bi_VU.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bi_VU.php b/vendor/nesbot/carbon/src/Carbon/Lang/bi_VU.php deleted file mode 100644 index 1fe77705..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bi_VU.php +++ /dev/null @@ -1,53 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Samsung Electronics Co., Ltd. akhilesh.k@samsung.com & maninder1.s@samsung.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'dddd DD MMM YYYY', - ], - 'months' => ['jenuware', 'febwari', 'maj', 'epril', 'mei', 'jun', 'julae', 'ogis', 'septemba', 'oktoba', 'novemba', 'disemba'], - 'months_short' => ['jen', 'feb', 'maj', 'epr', 'mei', 'jun', 'jul', 'ogi', 'sep', 'okt', 'nov', 'dis'], - 'weekdays' => ['sande', 'mande', 'maj', 'wota', 'fraede', 'sarede'], - 'weekdays_short' => ['san', 'man', 'maj', 'wot', 'fra', 'sar'], - 'weekdays_min' => ['san', 'man', 'maj', 'wot', 'fra', 'sar'], - - 'year' => ':count seven', // less reliable - 'y' => ':count seven', // less reliable - 'a_year' => ':count seven', // less reliable - - 'month' => ':count mi', // less reliable - 'm' => ':count mi', // less reliable - 'a_month' => ':count mi', // less reliable - - 'week' => ':count sarede', // less reliable - 'w' => ':count sarede', // less reliable - 'a_week' => ':count sarede', // less reliable - - 'day' => ':count betde', // less reliable - 'd' => ':count betde', // less reliable - 'a_day' => ':count betde', // less reliable - - 'hour' => ':count klok', // less reliable - 'h' => ':count klok', // less reliable - 'a_hour' => ':count klok', // less reliable - - 'minute' => ':count smol', // less reliable - 'min' => ':count smol', // less reliable - 'a_minute' => ':count smol', // less reliable - - 'second' => ':count tu', // less reliable - 's' => ':count tu', // less reliable - 'a_second' => ':count tu', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bm.php b/vendor/nesbot/carbon/src/Carbon/Lang/bm.php deleted file mode 100644 index 92822d29..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bm.php +++ /dev/null @@ -1,70 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Estelle Comment - */ -return [ - 'year' => 'san :count', - 'a_year' => '{1}san kelen|san :count', - 'y' => 'san :count', - 'month' => 'kalo :count', - 'a_month' => '{1}kalo kelen|kalo :count', - 'm' => 'k. :count', - 'week' => 'dɔgɔkun :count', - 'a_week' => 'dɔgɔkun kelen', - 'w' => 'd. :count', - 'day' => 'tile :count', - 'd' => 't. :count', - 'a_day' => '{1}tile kelen|tile :count', - 'hour' => 'lɛrɛ :count', - 'a_hour' => '{1}lɛrɛ kelen|lɛrɛ :count', - 'h' => 'l. :count', - 'minute' => 'miniti :count', - 'a_minute' => '{1}miniti kelen|miniti :count', - 'min' => 'm. :count', - 'second' => 'sekondi :count', - 'a_second' => '{1}sanga dama dama|sekondi :count', - 's' => 'sek. :count', - 'ago' => 'a bɛ :time bɔ', - 'from_now' => ':time kɔnɔ', - 'diff_today' => 'Bi', - 'diff_yesterday' => 'Kunu', - 'diff_yesterday_regexp' => 'Kunu(?:\\s+lɛrɛ)?', - 'diff_tomorrow' => 'Sini', - 'diff_tomorrow_regexp' => 'Sini(?:\\s+lɛrɛ)?', - 'diff_today_regexp' => 'Bi(?:\\s+lɛrɛ)?', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'MMMM [tile] D [san] YYYY', - 'LLL' => 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', - 'LLLL' => 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[Bi lɛrɛ] LT', - 'nextDay' => '[Sini lɛrɛ] LT', - 'nextWeek' => 'dddd [don lɛrɛ] LT', - 'lastDay' => '[Kunu lɛrɛ] LT', - 'lastWeek' => 'dddd [tɛmɛnen lɛrɛ] LT', - 'sameElse' => 'L', - ], - 'months' => ['Zanwuyekalo', 'Fewuruyekalo', 'Marisikalo', 'Awirilikalo', 'Mɛkalo', 'Zuwɛnkalo', 'Zuluyekalo', 'Utikalo', 'Sɛtanburukalo', 'ɔkutɔburukalo', 'Nowanburukalo', 'Desanburukalo'], - 'months_short' => ['Zan', 'Few', 'Mar', 'Awi', 'Mɛ', 'Zuw', 'Zul', 'Uti', 'Sɛt', 'ɔku', 'Now', 'Des'], - 'weekdays' => ['Kari', 'Ntɛnɛn', 'Tarata', 'Araba', 'Alamisa', 'Juma', 'Sibiri'], - 'weekdays_short' => ['Kar', 'Ntɛ', 'Tar', 'Ara', 'Ala', 'Jum', 'Sib'], - 'weekdays_min' => ['Ka', 'Nt', 'Ta', 'Ar', 'Al', 'Ju', 'Si'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' ni '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bn.php b/vendor/nesbot/carbon/src/Carbon/Lang/bn.php deleted file mode 100644 index 8e147899..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bn.php +++ /dev/null @@ -1,100 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - Shakib Hossain - * - Raju - * - Aniruddha Adhikary - * - JD Isaacks - * - Saiful Islam - * - Faisal Islam - */ -return [ - 'year' => ':count বছর', - 'a_year' => 'এক বছর|:count বছর', - 'y' => '১ বছর|:count বছর', - 'month' => ':count মাস', - 'a_month' => 'এক মাস|:count মাস', - 'm' => '১ মাস|:count মাস', - 'week' => ':count সপ্তাহ', - 'a_week' => '১ সপ্তাহ|:count সপ্তাহ', - 'w' => '১ সপ্তাহ|:count সপ্তাহ', - 'day' => ':count দিন', - 'a_day' => 'এক দিন|:count দিন', - 'd' => '১ দিন|:count দিন', - 'hour' => ':count ঘন্টা', - 'a_hour' => 'এক ঘন্টা|:count ঘন্টা', - 'h' => '১ ঘন্টা|:count ঘন্টা', - 'minute' => ':count মিনিট', - 'a_minute' => 'এক মিনিট|:count মিনিট', - 'min' => '১ মিনিট|:count মিনিট', - 'second' => ':count সেকেন্ড', - 'a_second' => 'কয়েক সেকেন্ড|:count সেকেন্ড', - 's' => '১ সেকেন্ড|:count সেকেন্ড', - 'ago' => ':time আগে', - 'from_now' => ':time পরে', - 'after' => ':time পরে', - 'before' => ':time আগে', - 'diff_now' => 'এখন', - 'diff_today' => 'আজ', - 'diff_yesterday' => 'গতকাল', - 'diff_tomorrow' => 'আগামীকাল', - 'period_recurrences' => ':count বার|:count বার', - 'period_interval' => 'প্রতি :interval', - 'period_start_date' => ':date থেকে', - 'period_end_date' => ':date পর্যন্ত', - 'formats' => [ - 'LT' => 'A Oh:Om সময়', - 'LTS' => 'A Oh:Om:Os সময়', - 'L' => 'OD/OM/OY', - 'LL' => 'OD MMMM OY', - 'LLL' => 'OD MMMM OY, A Oh:Om সময়', - 'LLLL' => 'dddd, OD MMMM OY, A Oh:Om সময়', - ], - 'calendar' => [ - 'sameDay' => '[আজ] LT', - 'nextDay' => '[আগামীকাল] LT', - 'nextWeek' => 'dddd, LT', - 'lastDay' => '[গতকাল] LT', - 'lastWeek' => '[গত] dddd, LT', - 'sameElse' => 'L', - ], - 'meridiem' => function ($hour) { - if ($hour < 4) { - return 'রাত'; - } - if ($hour < 10) { - return 'সকাল'; - } - if ($hour < 17) { - return 'দুপুর'; - } - if ($hour < 20) { - return 'বিকাল'; - } - - return 'রাত'; - }, - 'months' => ['জানুয়ারী', 'ফেব্রুয়ারি', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'], - 'months_short' => ['জানু', 'ফেব', 'মার্চ', 'এপ্র', 'মে', 'জুন', 'জুল', 'আগ', 'সেপ্ট', 'অক্টো', 'নভে', 'ডিসে'], - 'weekdays' => ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহস্পতিবার', 'শুক্রবার', 'শনিবার'], - 'weekdays_short' => ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি'], - 'weekdays_min' => ['রবি', 'সোম', 'মঙ্গ', 'বুধ', 'বৃহঃ', 'শুক্র', 'শনি'], - 'list' => [', ', ' এবং '], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, - 'weekdays_standalone' => ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহষ্পতিবার', 'শুক্রবার', 'শনিবার'], - 'weekdays_min_standalone' => ['রঃ', 'সোঃ', 'মঃ', 'বুঃ', 'বৃঃ', 'শুঃ', 'শনি'], - 'months_short_standalone' => ['জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'], - 'alt_numbers' => ['০', '১', '২', '৩', '৪', '৫', '৬', '৭', '৮', '৯'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bn_BD.php b/vendor/nesbot/carbon/src/Carbon/Lang/bn_BD.php deleted file mode 100644 index b5b28dd1..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bn_BD.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ankur Group, Taneem Ahmed, Jamil Ahmed - */ -return array_replace_recursive(require __DIR__.'/bn.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'], - 'months_short' => ['জানু', 'ফেব', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'], - 'weekdays' => ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহস্পতিবার', 'শুক্রবার', 'শনিবার'], - 'weekdays_short' => ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহঃ', 'শুক্র', 'শনি'], - 'weekdays_min' => ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহঃ', 'শুক্র', 'শনি'], - 'first_day_of_week' => 5, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bn_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/bn_IN.php deleted file mode 100644 index 8b3a50e5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bn_IN.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/bn.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['জানুয়ারী', 'ফেব্রুয়ারী', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'], - 'months_short' => ['জানু', 'ফেব', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগস্ট', 'সেপ্টেম্বর', 'অক্টোবর', 'নভেম্বর', 'ডিসেম্বর'], - 'weekdays' => ['রবিবার', 'সোমবার', 'মঙ্গলবার', 'বুধবার', 'বৃহস্পতিবার', 'শুক্রবার', 'শনিবার'], - 'weekdays_short' => ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি'], - 'weekdays_min' => ['রবি', 'সোম', 'মঙ্গল', 'বুধ', 'বৃহস্পতি', 'শুক্র', 'শনি'], - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bo.php b/vendor/nesbot/carbon/src/Carbon/Lang/bo.php deleted file mode 100644 index 99e1bf4c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bo.php +++ /dev/null @@ -1,71 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - JD Isaacks - */ -return [ - 'year' => '{1}ལོ་གཅིག|]1,Inf[:count ལོ', - 'month' => '{1}ཟླ་བ་གཅིག|]1,Inf[:count ཟླ་བ', - 'week' => ':count བདུན་ཕྲག', - 'day' => '{1}ཉིན་གཅིག|]1,Inf[:count ཉིན་', - 'hour' => '{1}ཆུ་ཚོད་གཅིག|]1,Inf[:count ཆུ་ཚོད', - 'minute' => '{1}སྐར་མ་གཅིག|]1,Inf[:count སྐར་མ', - 'second' => '{1}ལམ་སང|]1,Inf[:count སྐར་ཆ།', - 'ago' => ':time སྔན་ལ', - 'from_now' => ':time ལ་', - 'diff_yesterday' => 'ཁ་སང', - 'diff_today' => 'དི་རིང', - 'diff_tomorrow' => 'སང་ཉིན', - 'formats' => [ - 'LT' => 'A h:mm', - 'LTS' => 'A h:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY, A h:mm', - 'LLLL' => 'dddd, D MMMM YYYY, A h:mm', - ], - 'calendar' => [ - 'sameDay' => '[དི་རིང] LT', - 'nextDay' => '[སང་ཉིན] LT', - 'nextWeek' => '[བདུན་ཕྲག་རྗེས་མ], LT', - 'lastDay' => '[ཁ་སང] LT', - 'lastWeek' => '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', - 'sameElse' => 'L', - ], - 'meridiem' => function ($hour) { - if ($hour < 4) { - return 'མཚན་མོ'; - } - if ($hour < 10) { - return 'ཞོགས་ཀས'; - } - if ($hour < 17) { - return 'ཉིན་གུང'; - } - if ($hour < 20) { - return 'དགོང་དག'; - } - - return 'མཚན་མོ'; - }, - 'months' => ['ཟླ་བ་དང་པོ', 'ཟླ་བ་གཉིས་པ', 'ཟླ་བ་གསུམ་པ', 'ཟླ་བ་བཞི་པ', 'ཟླ་བ་ལྔ་པ', 'ཟླ་བ་དྲུག་པ', 'ཟླ་བ་བདུན་པ', 'ཟླ་བ་བརྒྱད་པ', 'ཟླ་བ་དགུ་པ', 'ཟླ་བ་བཅུ་པ', 'ཟླ་བ་བཅུ་གཅིག་པ', 'ཟླ་བ་བཅུ་གཉིས་པ'], - 'months_short' => ['ཟླ་བ་དང་པོ', 'ཟླ་བ་གཉིས་པ', 'ཟླ་བ་གསུམ་པ', 'ཟླ་བ་བཞི་པ', 'ཟླ་བ་ལྔ་པ', 'ཟླ་བ་དྲུག་པ', 'ཟླ་བ་བདུན་པ', 'ཟླ་བ་བརྒྱད་པ', 'ཟླ་བ་དགུ་པ', 'ཟླ་བ་བཅུ་པ', 'ཟླ་བ་བཅུ་གཅིག་པ', 'ཟླ་བ་བཅུ་གཉིས་པ'], - 'weekdays' => ['གཟའ་ཉི་མ་', 'གཟའ་ཟླ་བ་', 'གཟའ་མིག་དམར་', 'གཟའ་ལྷག་པ་', 'གཟའ་ཕུར་བུ', 'གཟའ་པ་སངས་', 'གཟའ་སྤེན་པ་'], - 'weekdays_short' => ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ', 'པ་སངས་', 'སྤེན་པ་'], - 'weekdays_min' => ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ', 'པ་སངས་', 'སྤེན་པ་'], - 'list' => [', ', ' ཨནད་ '], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, - 'months_standalone' => ['ཟླ་བ་དང་པོ་', 'ཟླ་བ་གཉིས་པ་', 'ཟླ་བ་གསུམ་པ་', 'ཟླ་བ་བཞི་པ་', 'ཟླ་བ་ལྔ་པ་', 'ཟླ་བ་དྲུག་པ་', 'ཟླ་བ་བདུན་པ་', 'ཟླ་བ་བརྒྱད་པ་', 'ཟླ་བ་དགུ་པ་', 'ཟླ་བ་བཅུ་པ་', 'ཟླ་བ་བཅུ་གཅིག་པ་', 'ཟླ་བ་བཅུ་གཉིས་པ་'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bo_CN.php b/vendor/nesbot/carbon/src/Carbon/Lang/bo_CN.php deleted file mode 100644 index 380abb1e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bo_CN.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/bo.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bo_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/bo_IN.php deleted file mode 100644 index ca50d049..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bo_IN.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/bo.php', [ - 'meridiem' => ['སྔ་དྲོ་', 'ཕྱི་དྲོ་'], - 'weekdays' => ['གཟའ་ཉི་མ་', 'གཟའ་ཟླ་བ་', 'གཟའ་མིག་དམར་', 'གཟའ་ལྷག་པ་', 'གཟའ་ཕུར་བུ་', 'གཟའ་པ་སངས་', 'གཟའ་སྤེན་པ་'], - 'weekdays_short' => ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ་', 'པ་སངས་', 'སྤེན་པ་'], - 'weekdays_min' => ['ཉི་མ་', 'ཟླ་བ་', 'མིག་དམར་', 'ལྷག་པ་', 'ཕུར་བུ་', 'པ་སངས་', 'སྤེན་པ་'], - 'months' => ['ཟླ་བ་དང་པོ', 'ཟླ་བ་གཉིས་པ', 'ཟླ་བ་གསུམ་པ', 'ཟླ་བ་བཞི་པ', 'ཟླ་བ་ལྔ་པ', 'ཟླ་བ་དྲུག་པ', 'ཟླ་བ་བདུན་པ', 'ཟླ་བ་བརྒྱད་པ', 'ཟླ་བ་དགུ་པ', 'ཟླ་བ་བཅུ་པ', 'ཟླ་བ་བཅུ་གཅིག་པ', 'ཟླ་བ་བཅུ་གཉིས་པ'], - 'months_short' => ['ཟླ་༡', 'ཟླ་༢', 'ཟླ་༣', 'ཟླ་༤', 'ཟླ་༥', 'ཟླ་༦', 'ཟླ་༧', 'ཟླ་༨', 'ཟླ་༩', 'ཟླ་༡༠', 'ཟླ་༡༡', 'ཟླ་༡༢'], - 'months_standalone' => ['ཟླ་བ་དང་པོ་', 'ཟླ་བ་གཉིས་པ་', 'ཟླ་བ་གསུམ་པ་', 'ཟླ་བ་བཞི་པ་', 'ཟླ་བ་ལྔ་པ་', 'ཟླ་བ་དྲུག་པ་', 'ཟླ་བ་བདུན་པ་', 'ཟླ་བ་བརྒྱད་པ་', 'ཟླ་བ་དགུ་པ་', 'ཟླ་བ་བཅུ་པ་', 'ཟླ་བ་བཅུ་གཅིག་པ་', 'ཟླ་བ་བཅུ་གཉིས་པ་'], - 'weekend' => [0, 0], - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'YYYY-MM-DD', - 'LL' => 'YYYY ལོའི་MMMཚེས་D', - 'LLL' => 'སྤྱི་ལོ་YYYY MMMMའི་ཚེས་D h:mm a', - 'LLLL' => 'YYYY MMMMའི་ཚེས་D, dddd h:mm a', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/br.php b/vendor/nesbot/carbon/src/Carbon/Lang/br.php deleted file mode 100644 index 583472fb..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/br.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - Serhan Apaydın - * - JD Isaacks - */ -return [ - 'year' => '{1}:count bloaz|{3,4,5,9}:count bloaz|[0,Inf[:count vloaz', - 'a_year' => '{1}ur bloaz|{3,4,5,9}:count bloaz|[0,Inf[:count vloaz', - 'month' => '{1}:count miz|{2}:count viz|[0,Inf[:count miz', - 'a_month' => '{1}ur miz|{2}:count viz|[0,Inf[:count miz', - 'week' => ':count sizhun', - 'a_week' => '{1}ur sizhun|:count sizhun', - 'day' => '{1}:count devezh|{2}:count zevezh|[0,Inf[:count devezh', - 'a_day' => '{1}un devezh|{2}:count zevezh|[0,Inf[:count devezh', - 'hour' => ':count eur', - 'a_hour' => '{1}un eur|:count eur', - 'minute' => '{1}:count vunutenn|{2}:count vunutenn|[0,Inf[:count munutenn', - 'a_minute' => '{1}ur vunutenn|{2}:count vunutenn|[0,Inf[:count munutenn', - 'second' => ':count eilenn', - 'a_second' => '{1}un nebeud segondennoù|[0,Inf[:count eilenn', - 'ago' => ':time \'zo', - 'from_now' => 'a-benn :time', - 'diff_now' => 'bremañ', - 'diff_today' => 'Hiziv', - 'diff_today_regexp' => 'Hiziv(?:\\s+da)?', - 'diff_yesterday' => 'decʼh', - 'diff_yesterday_regexp' => 'Dec\'h(?:\\s+da)?', - 'diff_tomorrow' => 'warcʼhoazh', - 'diff_tomorrow_regexp' => 'Warc\'hoazh(?:\\s+da)?', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D [a viz] MMMM YYYY', - 'LLL' => 'D [a viz] MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D [a viz] MMMM YYYY HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[Hiziv da] LT', - 'nextDay' => '[Warc\'hoazh da] LT', - 'nextWeek' => 'dddd [da] LT', - 'lastDay' => '[Dec\'h da] LT', - 'lastWeek' => 'dddd [paset da] LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number) { - return $number.($number === 1 ? 'añ' : 'vet'); - }, - 'months' => ['Genver', 'C\'hwevrer', 'Meurzh', 'Ebrel', 'Mae', 'Mezheven', 'Gouere', 'Eost', 'Gwengolo', 'Here', 'Du', 'Kerzu'], - 'months_short' => ['Gen', 'C\'hwe', 'Meu', 'Ebr', 'Mae', 'Eve', 'Gou', 'Eos', 'Gwe', 'Her', 'Du', 'Ker'], - 'weekdays' => ['Sul', 'Lun', 'Meurzh', 'Merc\'her', 'Yaou', 'Gwener', 'Sadorn'], - 'weekdays_short' => ['Sul', 'Lun', 'Meu', 'Mer', 'Yao', 'Gwe', 'Sad'], - 'weekdays_min' => ['Su', 'Lu', 'Me', 'Mer', 'Ya', 'Gw', 'Sa'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' hag '], - 'meridiem' => ['A.M.', 'G.M.'], - - 'y' => ':count bl.', - 'd' => ':count d', - 'h' => ':count e', - 'min' => ':count min', - 's' => ':count s', -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/br_FR.php b/vendor/nesbot/carbon/src/Carbon/Lang/br_FR.php deleted file mode 100644 index 7f541858..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/br_FR.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/br.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/brx.php b/vendor/nesbot/carbon/src/Carbon/Lang/brx.php deleted file mode 100644 index a0a7bf9b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/brx.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/brx_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/brx_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/brx_IN.php deleted file mode 100644 index 2d80ced2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/brx_IN.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Red Hat Pune bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'M/D/YY', - ], - 'months' => ['जानुवारी', 'फेब्रुवारी', 'मार्स', 'एफ्रिल', 'मे', 'जुन', 'जुलाइ', 'आगस्थ', 'सेबथेज्ब़र', 'अखथबर', 'नबेज्ब़र', 'दिसेज्ब़र'], - 'months_short' => ['जानुवारी', 'फेब्रुवारी', 'मार्स', 'एप्रिल', 'मे', 'जुन', 'जुलाइ', 'आगस्थ', 'सेबथेज्ब़र', 'अखथबर', 'नबेज्ब़र', 'दिसेज्ब़र'], - 'weekdays' => ['रबिबार', 'सोबार', 'मंगलबार', 'बुदबार', 'बिसथिबार', 'सुखुरबार', 'सुनिबार'], - 'weekdays_short' => ['रबि', 'सम', 'मंगल', 'बुद', 'बिसथि', 'सुखुर', 'सुनि'], - 'weekdays_min' => ['रबि', 'सम', 'मंगल', 'बुद', 'बिसथि', 'सुखुर', 'सुनि'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['फुं.', 'बेलासे.'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bs.php b/vendor/nesbot/carbon/src/Carbon/Lang/bs.php deleted file mode 100644 index e5d68083..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bs.php +++ /dev/null @@ -1,97 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - bokideckonja - * - Josh Soref - * - François B - * - shaishavgandhi05 - * - Serhan Apaydın - * - JD Isaacks - */ - -use Carbon\CarbonInterface; - -return [ - 'year' => ':count godina|:count godine|:count godina', - 'y' => ':count godina|:count godine|:count godina', - 'month' => ':count mjesec|:count mjeseca|:count mjeseci', - 'm' => ':count mjesec|:count mjeseca|:count mjeseci', - 'week' => ':count sedmice|:count sedmicu|:count sedmica', - 'w' => ':count sedmice|:count sedmicu|:count sedmica', - 'day' => ':count dan|:count dana|:count dana', - 'd' => ':count dan|:count dana|:count dana', - 'hour' => ':count sat|:count sata|:count sati', - 'h' => ':count sat|:count sata|:count sati', - 'minute' => ':count minut|:count minuta|:count minuta', - 'min' => ':count minut|:count minuta|:count minuta', - 'second' => ':count sekund|:count sekunda|:count sekundi', - 's' => ':count sekund|:count sekunda|:count sekundi', - 'ago' => 'prije :time', - 'from_now' => 'za :time', - 'after' => 'nakon :time', - 'before' => ':time ranije', - 'diff_now' => 'sada', - 'diff_today' => 'danas', - 'diff_today_regexp' => 'danas(?:\\s+u)?', - 'diff_yesterday' => 'jučer', - 'diff_yesterday_regexp' => 'jučer(?:\\s+u)?', - 'diff_tomorrow' => 'sutra', - 'diff_tomorrow_regexp' => 'sutra(?:\\s+u)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[danas u] LT', - 'nextDay' => '[sutra u] LT', - 'nextWeek' => function (CarbonInterface $current) { - switch ($current->dayOfWeek) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - default: - return '[u] dddd [u] LT'; - } - }, - 'lastDay' => '[jučer u] LT', - 'lastWeek' => function (CarbonInterface $current) { - switch ($current->dayOfWeek) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - default: - return '[prošli] dddd [u] LT'; - } - }, - 'sameElse' => 'L', - ], - 'ordinal' => ':number.', - 'months' => ['januar', 'februar', 'mart', 'april', 'maj', 'juni', 'juli', 'august', 'septembar', 'oktobar', 'novembar', 'decembar'], - 'months_short' => ['jan.', 'feb.', 'mar.', 'apr.', 'maj.', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - 'weekdays' => ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - 'weekdays_short' => ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'], - 'weekdays_min' => ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' i '], - 'meridiem' => ['prijepodne', 'popodne'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bs_BA.php b/vendor/nesbot/carbon/src/Carbon/Lang/bs_BA.php deleted file mode 100644 index 0a591176..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bs_BA.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/bs.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bs_Cyrl.php b/vendor/nesbot/carbon/src/Carbon/Lang/bs_Cyrl.php deleted file mode 100644 index e1a17447..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bs_Cyrl.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/bs.php', [ - 'meridiem' => ['пре подне', 'поподне'], - 'weekdays' => ['недјеља', 'понедјељак', 'уторак', 'сриједа', 'четвртак', 'петак', 'субота'], - 'weekdays_short' => ['нед', 'пон', 'уто', 'сри', 'чет', 'пет', 'суб'], - 'weekdays_min' => ['нед', 'пон', 'уто', 'сри', 'чет', 'пет', 'суб'], - 'months' => ['јануар', 'фебруар', 'март', 'април', 'мај', 'јуни', 'јули', 'аугуст', 'септембар', 'октобар', 'новембар', 'децембар'], - 'months_short' => ['јан', 'феб', 'мар', 'апр', 'мај', 'јун', 'јул', 'ауг', 'сеп', 'окт', 'нов', 'дец'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D.M.YYYY.', - 'LL' => 'DD.MM.YYYY.', - 'LLL' => 'DD. MMMM YYYY. HH:mm', - 'LLLL' => 'dddd, DD. MMMM YYYY. HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/bs_Latn.php b/vendor/nesbot/carbon/src/Carbon/Lang/bs_Latn.php deleted file mode 100644 index b4e363e7..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/bs_Latn.php +++ /dev/null @@ -1,13 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/bs.php', [ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/byn.php b/vendor/nesbot/carbon/src/Carbon/Lang/byn.php deleted file mode 100644 index 7125f3d6..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/byn.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/byn_ER.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/byn_ER.php b/vendor/nesbot/carbon/src/Carbon/Lang/byn_ER.php deleted file mode 100644 index ad675334..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/byn_ER.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation locales@geez.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['ልደትሪ', 'ካብኽብቲ', 'ክብላ', 'ፋጅኺሪ', 'ክቢቅሪ', 'ምኪኤል ትጓ̅ኒሪ', 'ኰርኩ', 'ማርያም ትሪ', 'ያኸኒ መሳቅለሪ', 'መተሉ', 'ምኪኤል መሽወሪ', 'ተሕሳስሪ'], - 'months_short' => ['ልደት', 'ካብኽ', 'ክብላ', 'ፋጅኺ', 'ክቢቅ', 'ም/ት', 'ኰር', 'ማርያ', 'ያኸኒ', 'መተሉ', 'ም/ም', 'ተሕሳ'], - 'weekdays' => ['ሰንበር ቅዳዅ', 'ሰኑ', 'ሰሊጝ', 'ለጓ ወሪ ለብዋ', 'ኣምድ', 'ኣርብ', 'ሰንበር ሽጓዅ'], - 'weekdays_short' => ['ሰ/ቅ', 'ሰኑ', 'ሰሊጝ', 'ለጓ', 'ኣምድ', 'ኣርብ', 'ሰ/ሽ'], - 'weekdays_min' => ['ሰ/ቅ', 'ሰኑ', 'ሰሊጝ', 'ለጓ', 'ኣምድ', 'ኣርብ', 'ሰ/ሽ'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['ፋዱስ ጃብ', 'ፋዱስ ደምቢ'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ca.php b/vendor/nesbot/carbon/src/Carbon/Lang/ca.php deleted file mode 100644 index b8b19946..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ca.php +++ /dev/null @@ -1,117 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - mestremuten - * - François B - * - Marc Ordinas i Llopis - * - Pere Orga - * - JD Isaacks - * - Quentí - * - Víctor Díaz - * - Xavi - * - qcardona - */ - -use Carbon\CarbonInterface; - -return [ - 'year' => ':count any|:count anys', - 'a_year' => 'un any|:count anys', - 'y' => ':count any|:count anys', - 'month' => ':count mes|:count mesos', - 'a_month' => 'un mes|:count mesos', - 'm' => ':count mes|:count mesos', - 'week' => ':count setmana|:count setmanes', - 'a_week' => 'una setmana|:count setmanes', - 'w' => ':count setmana|:count setmanes', - 'day' => ':count dia|:count dies', - 'a_day' => 'un dia|:count dies', - 'd' => ':count d', - 'hour' => ':count hora|:count hores', - 'a_hour' => 'una hora|:count hores', - 'h' => ':count h', - 'minute' => ':count minut|:count minuts', - 'a_minute' => 'un minut|:count minuts', - 'min' => ':count min', - 'second' => ':count segon|:count segons', - 'a_second' => 'uns segons|:count segons', - 's' => ':count s', - 'ago' => 'fa :time', - 'from_now' => 'd\'aquí a :time', - 'after' => ':time després', - 'before' => ':time abans', - 'diff_now' => 'ara mateix', - 'diff_today' => 'avui', - 'diff_today_regexp' => 'avui(?:\\s+a)?(?:\\s+les)?', - 'diff_yesterday' => 'ahir', - 'diff_yesterday_regexp' => 'ahir(?:\\s+a)?(?:\\s+les)?', - 'diff_tomorrow' => 'demà', - 'diff_tomorrow_regexp' => 'demà(?:\\s+a)?(?:\\s+les)?', - 'diff_before_yesterday' => 'abans d\'ahir', - 'diff_after_tomorrow' => 'demà passat', - 'period_recurrences' => ':count cop|:count cops', - 'period_interval' => 'cada :interval', - 'period_start_date' => 'de :date', - 'period_end_date' => 'fins a :date', - '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', - ], - 'calendar' => [ - 'sameDay' => function (CarbonInterface $current) { - return '[avui a '.($current->hour !== 1 ? 'les' : 'la').'] LT'; - }, - 'nextDay' => function (CarbonInterface $current) { - return '[demà a '.($current->hour !== 1 ? 'les' : 'la').'] LT'; - }, - 'nextWeek' => function (CarbonInterface $current) { - return 'dddd [a '.($current->hour !== 1 ? 'les' : 'la').'] LT'; - }, - 'lastDay' => function (CarbonInterface $current) { - return '[ahir a '.($current->hour !== 1 ? 'les' : 'la').'] LT'; - }, - 'lastWeek' => function (CarbonInterface $current) { - return '[el] dddd [passat a '.($current->hour !== 1 ? 'les' : 'la').'] LT'; - }, - 'sameElse' => 'L', - ], - 'ordinal' => function ($number, $period) { - return $number.( - ($period === 'w' || $period === 'W') ? 'a' : ( - ($number === 1) ? 'r' : ( - ($number === 2) ? 'n' : ( - ($number === 3) ? 'r' : ( - ($number === 4) ? 't' : 'è' - ) - ) - ) - ) - ); - }, - 'months' => ['de gener', 'de febrer', 'de març', 'd\'abril', 'de maig', 'de juny', 'de juliol', 'd\'agost', 'de setembre', 'd\'octubre', 'de novembre', 'de desembre'], - 'months_standalone' => ['gener', 'febrer', 'març', 'abril', 'maig', 'juny', 'juliol', 'agost', 'setembre', 'octubre', 'novembre', 'desembre'], - 'months_short' => ['de gen.', 'de febr.', 'de març', 'd\'abr.', 'de maig', 'de juny', 'de jul.', 'd\'ag.', 'de set.', 'd\'oct.', 'de nov.', 'de des.'], - 'months_short_standalone' => ['gen.', 'febr.', 'març', 'abr.', 'maig', 'juny', 'jul.', 'ag.', 'set.', 'oct.', 'nov.', 'des.'], - 'months_regexp' => '/(D[oD]?[\s,]+MMMM?|L{2,4}|l{2,4})/', - 'weekdays' => ['diumenge', 'dilluns', 'dimarts', 'dimecres', 'dijous', 'divendres', 'dissabte'], - 'weekdays_short' => ['dg.', 'dl.', 'dt.', 'dc.', 'dj.', 'dv.', 'ds.'], - 'weekdays_min' => ['dg', 'dl', 'dt', 'dc', 'dj', 'dv', 'ds'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' i '], - 'meridiem' => ['a. m.', 'p. m.'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ca_AD.php b/vendor/nesbot/carbon/src/Carbon/Lang/ca_AD.php deleted file mode 100644 index 861acd2a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ca_AD.php +++ /dev/null @@ -1,13 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ca.php', [ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES.php b/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES.php deleted file mode 100644 index 50049786..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ca.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES_Valencia.php b/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES_Valencia.php deleted file mode 100644 index 1c16421a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ca_ES_Valencia.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Symfony\Component\Translation\PluralizationRules; - -// @codeCoverageIgnoreStart -if (class_exists(PluralizationRules::class)) { - PluralizationRules::set(static function ($number) { - return PluralizationRules::get($number, 'ca'); - }, 'ca_ES_Valencia'); -} -// @codeCoverageIgnoreEnd - -return array_replace_recursive(require __DIR__.'/ca.php', [ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ca_FR.php b/vendor/nesbot/carbon/src/Carbon/Lang/ca_FR.php deleted file mode 100644 index 861acd2a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ca_FR.php +++ /dev/null @@ -1,13 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ca.php', [ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ca_IT.php b/vendor/nesbot/carbon/src/Carbon/Lang/ca_IT.php deleted file mode 100644 index 861acd2a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ca_IT.php +++ /dev/null @@ -1,13 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ca.php', [ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ccp.php b/vendor/nesbot/carbon/src/Carbon/Lang/ccp.php deleted file mode 100644 index 99c1dcac..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ccp.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'weekdays' => ['𑄢𑄧𑄝𑄨𑄝𑄢𑄴', '𑄥𑄧𑄟𑄴𑄝𑄢𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴𑄝𑄢𑄴', '𑄝𑄪𑄖𑄴𑄝𑄢𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴𑄝𑄢𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴𑄝𑄢𑄴', '𑄥𑄧𑄚𑄨𑄝𑄢𑄴'], - 'weekdays_short' => ['𑄢𑄧𑄝𑄨', '𑄥𑄧𑄟𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴', '𑄝𑄪𑄖𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴', '𑄥𑄧𑄚𑄨'], - 'weekdays_min' => ['𑄢𑄧𑄝𑄨', '𑄥𑄧𑄟𑄴', '𑄟𑄧𑄁𑄉𑄧𑄣𑄴', '𑄝𑄪𑄖𑄴', '𑄝𑄳𑄢𑄨𑄥𑄪𑄛𑄴', '𑄥𑄪𑄇𑄴𑄇𑄮𑄢𑄴', '𑄥𑄧𑄚𑄨'], - 'months' => ['𑄎𑄚𑄪𑄠𑄢𑄨', '𑄜𑄬𑄛𑄴𑄝𑄳𑄢𑄪𑄠𑄢𑄨', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄬𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄧𑄢𑄴'], - 'months_short' => ['𑄎𑄚𑄪', '𑄜𑄬𑄛𑄴', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄮𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄢𑄴'], - 'months_short_standalone' => ['𑄎𑄚𑄪𑄠𑄢𑄨', '𑄜𑄬𑄛𑄴𑄝𑄳𑄢𑄪𑄠𑄢𑄨', '𑄟𑄢𑄴𑄌𑄧', '𑄃𑄬𑄛𑄳𑄢𑄨𑄣𑄴', '𑄟𑄬', '𑄎𑄪𑄚𑄴', '𑄎𑄪𑄣𑄭', '𑄃𑄉𑄧𑄌𑄴𑄑𑄴', '𑄥𑄬𑄛𑄴𑄑𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄃𑄧𑄇𑄴𑄑𑄮𑄝𑄧𑄢𑄴', '𑄚𑄧𑄞𑄬𑄟𑄴𑄝𑄧𑄢𑄴', '𑄓𑄨𑄥𑄬𑄟𑄴𑄝𑄧𑄢𑄴'], - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM, YYYY', - 'LLL' => 'D MMMM, YYYY h:mm a', - 'LLLL' => 'dddd, D MMMM, YYYY h:mm a', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ccp_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ccp_IN.php deleted file mode 100644 index c1fa8af0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ccp_IN.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ccp.php', [ - 'weekend' => [0, 0], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ce.php b/vendor/nesbot/carbon/src/Carbon/Lang/ce.php deleted file mode 100644 index f99f6ffd..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ce.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/ce_RU.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ce_RU.php b/vendor/nesbot/carbon/src/Carbon/Lang/ce_RU.php deleted file mode 100644 index f7698562..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ce_RU.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - ANCHR - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'YYYY.DD.MM', - ], - 'months' => ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'], - 'months_short' => ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'], - 'weekdays' => ['КӀиранан де', 'Оршотан де', 'Шинарин де', 'Кхаарин де', 'Еарин де', 'ПӀераскан де', 'Шот де'], - 'weekdays_short' => ['КӀ', 'Ор', 'Ши', 'Кх', 'Еа', 'ПӀ', 'Шо'], - 'weekdays_min' => ['КӀ', 'Ор', 'Ши', 'Кх', 'Еа', 'ПӀ', 'Шо'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - - 'year' => ':count шо', - 'y' => ':count шо', - 'a_year' => ':count шо', - - 'month' => ':count бутт', - 'm' => ':count бутт', - 'a_month' => ':count бутт', - - 'week' => ':count кӏира', - 'w' => ':count кӏира', - 'a_week' => ':count кӏира', - - 'day' => ':count де', - 'd' => ':count де', - 'a_day' => ':count де', - - 'hour' => ':count сахьт', - 'h' => ':count сахьт', - 'a_hour' => ':count сахьт', - - 'minute' => ':count минот', - 'min' => ':count минот', - 'a_minute' => ':count минот', - - 'second' => ':count секунд', - 's' => ':count секунд', - 'a_second' => ':count секунд', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cgg.php b/vendor/nesbot/carbon/src/Carbon/Lang/cgg.php deleted file mode 100644 index 09bcc1c7..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/cgg.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'weekdays' => ['Sande', 'Orwokubanza', 'Orwakabiri', 'Orwakashatu', 'Orwakana', 'Orwakataano', 'Orwamukaaga'], - 'weekdays_short' => ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'], - 'weekdays_min' => ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'], - 'months' => ['Okwokubanza', 'Okwakabiri', 'Okwakashatu', 'Okwakana', 'Okwakataana', 'Okwamukaaga', 'Okwamushanju', 'Okwamunaana', 'Okwamwenda', 'Okwaikumi', 'Okwaikumi na kumwe', 'Okwaikumi na ibiri'], - 'months_short' => ['KBZ', 'KBR', 'KST', 'KKN', 'KTN', 'KMK', 'KMS', 'KMN', 'KMW', 'KKM', 'KNK', 'KNB'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], - - 'day' => ':count ruhanga', // less reliable - 'd' => ':count ruhanga', // less reliable - 'a_day' => ':count ruhanga', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/chr.php b/vendor/nesbot/carbon/src/Carbon/Lang/chr.php deleted file mode 100644 index e26190f1..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/chr.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/chr_US.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/chr_US.php b/vendor/nesbot/carbon/src/Carbon/Lang/chr_US.php deleted file mode 100644 index 371353ef..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/chr_US.php +++ /dev/null @@ -1,58 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Cherokee Nation Joseph Erb josepherb7@gmail.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'MM/DD/YYYY', - ], - 'months' => ['ᎤᏃᎸᏔᏅ', 'ᎧᎦᎵ', 'ᎠᏅᏱ', 'ᎧᏬᏂ', 'ᎠᏂᏍᎬᏘ', 'ᏕᎭᎷᏱ', 'ᎫᏰᏉᏂ', 'ᎦᎶᏂ', 'ᏚᎵᏍᏗ', 'ᏚᏂᏅᏗ', 'ᏅᏓᏕᏆ', 'ᎥᏍᎩᏱ'], - 'months_short' => ['ᎤᏃ', 'ᎧᎦ', 'ᎠᏅ', 'ᎧᏬ', 'ᎠᏂ', 'ᏕᎭ', 'ᎫᏰ', 'ᎦᎶ', 'ᏚᎵ', 'ᏚᏂ', 'ᏅᏓ', 'ᎥᏍ'], - 'weekdays' => ['ᎤᎾᏙᏓᏆᏍᎬ', 'ᎤᎾᏙᏓᏉᏅᎯ', 'ᏔᎵᏁᎢᎦ', 'ᏦᎢᏁᎢᎦ', 'ᏅᎩᏁᎢᎦ', 'ᏧᎾᎩᎶᏍᏗ', 'ᎤᎾᏙᏓᏈᏕᎾ'], - 'weekdays_short' => ['ᏆᏍᎬ', 'ᏉᏅᎯ', 'ᏔᎵᏁ', 'ᏦᎢᏁ', 'ᏅᎩᏁ', 'ᏧᎾᎩ', 'ᏈᏕᎾ'], - 'weekdays_min' => ['ᏆᏍᎬ', 'ᏉᏅᎯ', 'ᏔᎵᏁ', 'ᏦᎢᏁ', 'ᏅᎩᏁ', 'ᏧᎾᎩ', 'ᏈᏕᎾ'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['ᏌᎾᎴ', 'ᏒᎯᏱᎢᏗᏢ', 'ꮜꮎꮄ', 'ꮢꭿᏹꭲꮧꮲ'], - - 'second' => ':count ᏐᎢ', // less reliable - 's' => ':count ᏐᎢ', // less reliable - 'a_second' => ':count ᏐᎢ', // less reliable - - 'year' => ':count ᏑᏕᏘᏴᏓ', - 'y' => ':count ᏑᏕᏘᏴᏓ', - 'a_year' => ':count ᏑᏕᏘᏴᏓ', - - 'month' => ':count ᏏᏅᏙ', - 'm' => ':count ᏏᏅᏙ', - 'a_month' => ':count ᏏᏅᏙ', - - 'week' => ':count ᏑᎾᏙᏓᏆᏍᏗ', - 'w' => ':count ᏑᎾᏙᏓᏆᏍᏗ', - 'a_week' => ':count ᏑᎾᏙᏓᏆᏍᏗ', - - 'day' => ':count ᎢᎦ', - 'd' => ':count ᎢᎦ', - 'a_day' => ':count ᎢᎦ', - - 'hour' => ':count ᏑᏟᎶᏛ', - 'h' => ':count ᏑᏟᎶᏛ', - 'a_hour' => ':count ᏑᏟᎶᏛ', - - 'minute' => ':count ᎢᏯᏔᏬᏍᏔᏅ', - 'min' => ':count ᎢᏯᏔᏬᏍᏔᏅ', - 'a_minute' => ':count ᎢᏯᏔᏬᏍᏔᏅ', - - 'ago' => ':time ᏥᎨᏒ', - 'from_now' => 'ᎾᎿ :time', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ckb.php b/vendor/nesbot/carbon/src/Carbon/Lang/ckb.php deleted file mode 100644 index acf4dc28..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ckb.php +++ /dev/null @@ -1,89 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Swara Mohammed - */ -$months = [ - 'ڕێبەندان', - 'ڕەشەمە', - 'نەورۆز', - 'گوڵان', - 'جۆزەردان', - 'پوشپەڕ', - 'گەلاوێژ', - 'خەرمانان', - 'ڕەزبەر', - 'گەڵاڕێزان', - 'سەرماوەرز', - 'بەفرانبار', -]; - -return [ - 'year' => implode('|', ['{0}:count ساڵێک', '{1}ساڵێک', '{2}دوو ساڵ', ']2,11[:count ساڵ', ']10,Inf[:count ساڵ']), - 'a_year' => implode('|', ['{0}:count ساڵێک', '{1}ساڵێک', '{2}دوو ساڵ', ']2,11[:count ساڵ', ']10,Inf[:count ساڵ']), - 'month' => implode('|', ['{0}:count مانگێک', '{1}مانگێک', '{2}دوو مانگ', ']2,11[:count مانگ', ']10,Inf[:count مانگ']), - 'a_month' => implode('|', ['{0}:count مانگێک', '{1}مانگێک', '{2}دوو مانگ', ']2,11[:count مانگ', ']10,Inf[:count مانگ']), - 'week' => implode('|', ['{0}:count هەفتەیەک', '{1}هەفتەیەک', '{2}دوو هەفتە', ']2,11[:count هەفتە', ']10,Inf[:count هەفتە']), - 'a_week' => implode('|', ['{0}:count هەفتەیەک', '{1}هەفتەیەک', '{2}دوو هەفتە', ']2,11[:count هەفتە', ']10,Inf[:count هەفتە']), - 'day' => implode('|', ['{0}:count ڕۆژێک', '{1}ڕۆژێک', '{2}دوو ڕۆژ', ']2,11[:count ڕۆژ', ']10,Inf[:count ڕۆژ']), - 'a_day' => implode('|', ['{0}:count ڕۆژێک', '{1}ڕۆژێک', '{2}دوو ڕۆژ', ']2,11[:count ڕۆژ', ']10,Inf[:count ڕۆژ']), - 'hour' => implode('|', ['{0}:count کاتژمێرێک', '{1}کاتژمێرێک', '{2}دوو کاتژمێر', ']2,11[:count کاتژمێر', ']10,Inf[:count کاتژمێر']), - 'a_hour' => implode('|', ['{0}:count کاتژمێرێک', '{1}کاتژمێرێک', '{2}دوو کاتژمێر', ']2,11[:count کاتژمێر', ']10,Inf[:count کاتژمێر']), - 'minute' => implode('|', ['{0}:count خولەکێک', '{1}خولەکێک', '{2}دوو خولەک', ']2,11[:count خولەک', ']10,Inf[:count خولەک']), - 'a_minute' => implode('|', ['{0}:count خولەکێک', '{1}خولەکێک', '{2}دوو خولەک', ']2,11[:count خولەک', ']10,Inf[:count خولەک']), - 'second' => implode('|', ['{0}:count چرکەیەک', '{1}چرکەیەک', '{2}دوو چرکە', ']2,11[:count چرکە', ']10,Inf[:count چرکە']), - 'a_second' => implode('|', ['{0}:count چرکەیەک', '{1}چرکەیەک', '{2}دوو چرکە', ']2,11[:count چرکە', ']10,Inf[:count چرکە']), - 'ago' => 'پێش :time', - 'from_now' => ':time لە ئێستاوە', - 'after' => 'دوای :time', - 'before' => 'پێش :time', - 'diff_now' => 'ئێستا', - 'diff_today' => 'ئەمڕۆ', - 'diff_today_regexp' => 'ڕۆژ(?:\\s+لە)?(?:\\s+کاتژمێر)?', - 'diff_yesterday' => 'دوێنێ', - 'diff_yesterday_regexp' => 'دوێنێ(?:\\s+لە)?(?:\\s+کاتژمێر)?', - 'diff_tomorrow' => 'سبەینێ', - 'diff_tomorrow_regexp' => 'سبەینێ(?:\\s+لە)?(?:\\s+کاتژمێر)?', - 'diff_before_yesterday' => 'پێش دوێنێ', - 'diff_after_tomorrow' => 'دوای سبەینێ', - 'period_recurrences' => implode('|', ['{0}جار', '{1}جار', '{2}:count دووجار', ']2,11[:count جار', ']10,Inf[:count جار']), - 'period_interval' => 'هەموو :interval', - 'period_start_date' => 'لە :date', - 'period_end_date' => 'بۆ :date', - 'months' => $months, - 'months_short' => $months, - 'weekdays' => ['یەکشەممە', 'دووشەممە', 'سێشەممە', 'چوارشەممە', 'پێنجشەممە', 'هەینی', 'شەممە'], - 'weekdays_short' => ['یەکشەممە', 'دووشەممە', 'سێشەممە', 'چوارشەممە', 'پێنجشەممە', 'هەینی', 'شەممە'], - 'weekdays_min' => ['یەکشەممە', 'دووشەممە', 'سێشەممە', 'چوارشەممە', 'پێنجشەممە', 'هەینی', 'شەممە'], - 'list' => ['، ', ' و '], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[ئەمڕۆ لە کاتژمێر] LT', - 'nextDay' => '[سبەینێ لە کاتژمێر] LT', - 'nextWeek' => 'dddd [لە کاتژمێر] LT', - 'lastDay' => '[دوێنێ لە کاتژمێر] LT', - 'lastWeek' => 'dddd [لە کاتژمێر] LT', - 'sameElse' => 'L', - ], - 'meridiem' => ['پ.ن', 'د.ن'], - 'weekend' => [5, 6], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cmn.php b/vendor/nesbot/carbon/src/Carbon/Lang/cmn.php deleted file mode 100644 index 80b1d694..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/cmn.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/cmn_TW.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cmn_TW.php b/vendor/nesbot/carbon/src/Carbon/Lang/cmn_TW.php deleted file mode 100644 index 7e43f9de..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/cmn_TW.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'YYYY年MM月DD號', - ], - 'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], - 'months_short' => [' 1月', ' 2月', ' 3月', ' 4月', ' 5月', ' 6月', ' 7月', ' 8月', ' 9月', '10月', '11月', '12月'], - 'weekdays' => ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - 'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'], - 'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'], - 'meridiem' => ['上午', '下午'], - - 'year' => ':count 年', - 'y' => ':count 年', - 'a_year' => ':count 年', - - 'month' => ':count 月', - 'm' => ':count 月', - 'a_month' => ':count 月', - - 'week' => ':count 周', - 'w' => ':count 周', - 'a_week' => ':count 周', - - 'day' => ':count 白天', - 'd' => ':count 白天', - 'a_day' => ':count 白天', - - 'hour' => ':count 小时', - 'h' => ':count 小时', - 'a_hour' => ':count 小时', - - 'minute' => ':count 分钟', - 'min' => ':count 分钟', - 'a_minute' => ':count 分钟', - - 'second' => ':count 秒', - 's' => ':count 秒', - 'a_second' => ':count 秒', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/crh.php b/vendor/nesbot/carbon/src/Carbon/Lang/crh.php deleted file mode 100644 index a1d7ce63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/crh.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/crh_UA.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/crh_UA.php b/vendor/nesbot/carbon/src/Carbon/Lang/crh_UA.php deleted file mode 100644 index 05139331..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/crh_UA.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Reşat SABIQ tilde.birlik@gmail.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], - 'months' => ['Yanvar', 'Fevral', 'Mart', 'Aprel', 'Mayıs', 'İyun', 'İyul', 'Avgust', 'Sentâbr', 'Oktâbr', 'Noyabr', 'Dekabr'], - 'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'İyn', 'İyl', 'Avg', 'Sen', 'Okt', 'Noy', 'Dek'], - 'weekdays' => ['Bazar', 'Bazarertesi', 'Salı', 'Çarşembe', 'Cumaaqşamı', 'Cuma', 'Cumaertesi'], - 'weekdays_short' => ['Baz', 'Ber', 'Sal', 'Çar', 'Caq', 'Cum', 'Cer'], - 'weekdays_min' => ['Baz', 'Ber', 'Sal', 'Çar', 'Caq', 'Cum', 'Cer'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['ÜE', 'ÜS'], - - 'year' => ':count yıl', - 'y' => ':count yıl', - 'a_year' => ':count yıl', - - 'month' => ':count ay', - 'm' => ':count ay', - 'a_month' => ':count ay', - - 'week' => ':count afta', - 'w' => ':count afta', - 'a_week' => ':count afta', - - 'day' => ':count kün', - 'd' => ':count kün', - 'a_day' => ':count kün', - - 'hour' => ':count saat', - 'h' => ':count saat', - 'a_hour' => ':count saat', - - 'minute' => ':count daqqa', - 'min' => ':count daqqa', - 'a_minute' => ':count daqqa', - - 'second' => ':count ekinci', - 's' => ':count ekinci', - 'a_second' => ':count ekinci', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cs.php b/vendor/nesbot/carbon/src/Carbon/Lang/cs.php deleted file mode 100644 index c01e3ccc..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/cs.php +++ /dev/null @@ -1,123 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Philippe Vaucher - * - Jakub Tesinsky - * - Martin Suja - * - Nikos Timiopulos - * - Bohuslav Blín - * - Tsutomu Kuroda - * - tjku - * - Lukas Svoboda - * - Max Melentiev - * - Juanito Fatas - * - Akira Matsuda - * - Christopher Dell - * - Václav Pávek - * - CodeSkills - * - Tlapi - * - newman101 - * - Petr Kadlec - * - tommaskraus - * - Karel Sommer (calvera) - */ -$za = function ($time) { - return 'za '.strtr($time, [ - 'hodina' => 'hodinu', - 'minuta' => 'minutu', - 'sekunda' => 'sekundu', - ]); -}; - -$pred = function ($time) { - $time = strtr($time, [ - 'hodina' => 'hodinou', - 'minuta' => 'minutou', - 'sekunda' => 'sekundou', - ]); - $time = preg_replace('/hodiny?(?!\w)/', 'hodinami', $time); - $time = preg_replace('/minuty?(?!\w)/', 'minutami', $time); - $time = preg_replace('/sekundy?(?!\w)/', 'sekundami', $time); - - return "před $time"; -}; - -return [ - 'year' => ':count rok|:count roky|:count let', - 'y' => ':count rok|:count roky|:count let', - 'a_year' => 'rok|:count roky|:count let', - 'month' => ':count měsíc|:count měsíce|:count měsíců', - 'm' => ':count měs.', - 'a_month' => 'měsíc|:count měsíce|:count měsíců', - 'week' => ':count týden|:count týdny|:count týdnů', - 'w' => ':count týd.', - 'a_week' => 'týden|:count týdny|:count týdnů', - 'day' => ':count den|:count dny|:count dní', - 'd' => ':count den|:count dny|:count dní', - 'a_day' => 'den|:count dny|:count dní', - 'hour' => ':count hodina|:count hodiny|:count hodin', - 'h' => ':count hod.', - 'a_hour' => 'hodina|:count hodiny|:count hodin', - 'minute' => ':count minuta|:count minuty|:count minut', - 'min' => ':count min.', - 'a_minute' => 'minuta|:count minuty|:count minut', - 'second' => ':count sekunda|:count sekundy|:count sekund', - 's' => ':count sek.', - 'a_second' => 'pár sekund|:count sekundy|:count sekund', - - 'month_ago' => ':count měsícem|:count měsíci|:count měsíci', - 'a_month_ago' => 'měsícem|:count měsíci|:count měsíci', - 'day_ago' => ':count dnem|:count dny|:count dny', - 'a_day_ago' => 'dnem|:count dny|:count dny', - 'week_ago' => ':count týdnem|:count týdny|:count týdny', - 'a_week_ago' => 'týdnem|:count týdny|:count týdny', - 'year_ago' => ':count rokem|:count roky|:count lety', - 'y_ago' => ':count rok.|:count rok.|:count let.', - 'a_year_ago' => 'rokem|:count roky|:count lety', - - 'month_before' => ':count měsícem|:count měsíci|:count měsíci', - 'a_month_before' => 'měsícem|:count měsíci|:count měsíci', - 'day_before' => ':count dnem|:count dny|:count dny', - 'a_day_before' => 'dnem|:count dny|:count dny', - 'week_before' => ':count týdnem|:count týdny|:count týdny', - 'a_week_before' => 'týdnem|:count týdny|:count týdny', - 'year_before' => ':count rokem|:count roky|:count lety', - 'y_before' => ':count rok.|:count rok.|:count let.', - 'a_year_before' => 'rokem|:count roky|:count lety', - - 'ago' => $pred, - 'from_now' => $za, - 'before' => $pred, - 'after' => $za, - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'months' => ['ledna', 'února', 'března', 'dubna', 'května', 'června', 'července', 'srpna', 'září', 'října', 'listopadu', 'prosince'], - 'months_standalone' => ['leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec'], - 'months_short' => ['led', 'úno', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro'], - 'weekdays' => ['neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'], - 'weekdays_short' => ['ned', 'pon', 'úte', 'stř', 'čtv', 'pát', 'sob'], - 'weekdays_min' => ['ne', 'po', 'út', 'st', 'čt', 'pá', 'so'], - 'list' => [', ', ' a '], - 'diff_now' => 'nyní', - 'diff_yesterday' => 'včera', - 'diff_tomorrow' => 'zítra', - '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' => ['dopoledne', 'odpoledne'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cs_CZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/cs_CZ.php deleted file mode 100644 index ea2517e8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/cs_CZ.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/cs.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/csb.php b/vendor/nesbot/carbon/src/Carbon/Lang/csb.php deleted file mode 100644 index a35d2815..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/csb.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/csb_PL.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/csb_PL.php b/vendor/nesbot/carbon/src/Carbon/Lang/csb_PL.php deleted file mode 100644 index 25e0ca89..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/csb_PL.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - csb_PL locale Michal Ostrowski bug-glibc-locales@gnu.org - */ -return [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY-MM-DD', - 'LL' => 'MMMM DD, YYYY', - 'LLL' => 'DD MMM HH:mm', - 'LLLL' => 'MMMM DD, YYYY HH:mm', - ], - 'months' => ['stëcznika', 'gromicznika', 'strëmiannika', 'łżëkwiata', 'maja', 'czerwińca', 'lëpińca', 'zélnika', 'séwnika', 'rujana', 'lëstopadnika', 'gòdnika'], - 'months_short' => ['stë', 'gro', 'str', 'łżë', 'maj', 'cze', 'lëp', 'zél', 'séw', 'ruj', 'lës', 'gòd'], - 'weekdays' => ['niedzela', 'pòniedzôłk', 'wtórk', 'strzoda', 'czwiôrtk', 'piątk', 'sobòta'], - 'weekdays_short' => ['nie', 'pòn', 'wtó', 'str', 'czw', 'pią', 'sob'], - 'weekdays_min' => ['nie', 'pòn', 'wtó', 'str', 'czw', 'pią', 'sob'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' a téż '], - 'two_words_connector' => ' a téż ', - 'year' => ':count rok', - 'month' => ':count miesiąc', - 'week' => ':count tidzéń', - 'day' => ':count dzéń', - 'hour' => ':count gòdzëna', - 'minute' => ':count minuta', - 'second' => ':count sekunda', -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cu.php b/vendor/nesbot/carbon/src/Carbon/Lang/cu.php deleted file mode 100644 index d6d13128..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/cu.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'months' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], - 'months_short' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY-MM-DD', - 'LL' => 'YYYY MMM D', - 'LLL' => 'YYYY MMMM D HH:mm', - 'LLLL' => 'YYYY MMMM D, dddd HH:mm', - ], - - 'year' => ':count лѣто', - 'y' => ':count лѣто', - 'a_year' => ':count лѣто', - - 'month' => ':count мѣсѧць', - 'm' => ':count мѣсѧць', - 'a_month' => ':count мѣсѧць', - - 'week' => ':count сєдмица', - 'w' => ':count сєдмица', - 'a_week' => ':count сєдмица', - - 'day' => ':count дьнь', - 'd' => ':count дьнь', - 'a_day' => ':count дьнь', - - 'hour' => ':count година', - 'h' => ':count година', - 'a_hour' => ':count година', - - 'minute' => ':count малъ', // less reliable - 'min' => ':count малъ', // less reliable - 'a_minute' => ':count малъ', // less reliable - - 'second' => ':count въторъ', - 's' => ':count въторъ', - 'a_second' => ':count въторъ', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cv.php b/vendor/nesbot/carbon/src/Carbon/Lang/cv.php deleted file mode 100644 index 8aeb73aa..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/cv.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - François B - * - JD Isaacks - */ -return [ - 'year' => ':count ҫул', - 'a_year' => '{1}пӗр ҫул|:count ҫул', - 'month' => ':count уйӑх', - 'a_month' => '{1}пӗр уйӑх|:count уйӑх', - 'week' => ':count эрне', - 'a_week' => '{1}пӗр эрне|:count эрне', - 'day' => ':count кун', - 'a_day' => '{1}пӗр кун|:count кун', - 'hour' => ':count сехет', - 'a_hour' => '{1}пӗр сехет|:count сехет', - 'minute' => ':count минут', - 'a_minute' => '{1}пӗр минут|:count минут', - 'second' => ':count ҫеккунт', - 'a_second' => '{1}пӗр-ик ҫеккунт|:count ҫеккунт', - 'ago' => ':time каялла', - 'from_now' => function ($time) { - return $time.(preg_match('/сехет$/u', $time) ? 'рен' : (preg_match('/ҫул/u', $time) ? 'тан' : 'ран')); - }, - 'diff_yesterday' => 'Ӗнер', - 'diff_today' => 'Паян', - 'diff_tomorrow' => 'Ыран', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD-MM-YYYY', - 'LL' => 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', - 'LLL' => 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', - 'LLLL' => 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[Паян] LT [сехетре]', - 'nextDay' => '[Ыран] LT [сехетре]', - 'nextWeek' => '[Ҫитес] dddd LT [сехетре]', - 'lastDay' => '[Ӗнер] LT [сехетре]', - 'lastWeek' => '[Иртнӗ] dddd LT [сехетре]', - 'sameElse' => 'L', - ], - 'ordinal' => ':number-мӗш', - 'months' => ['кӑрлач', 'нарӑс', 'пуш', 'ака', 'май', 'ҫӗртме', 'утӑ', 'ҫурла', 'авӑн', 'юпа', 'чӳк', 'раштав'], - 'months_short' => ['кӑр', 'нар', 'пуш', 'ака', 'май', 'ҫӗр', 'утӑ', 'ҫур', 'авн', 'юпа', 'чӳк', 'раш'], - 'weekdays' => ['вырсарникун', 'тунтикун', 'ытларикун', 'юнкун', 'кӗҫнерникун', 'эрнекун', 'шӑматкун'], - 'weekdays_short' => ['выр', 'тун', 'ытл', 'юн', 'кӗҫ', 'эрн', 'шӑм'], - 'weekdays_min' => ['вр', 'тн', 'ыт', 'юн', 'кҫ', 'эр', 'шм'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' тата '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cv_RU.php b/vendor/nesbot/carbon/src/Carbon/Lang/cv_RU.php deleted file mode 100644 index 197bd8d3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/cv_RU.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/cv.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cy.php b/vendor/nesbot/carbon/src/Carbon/Lang/cy.php deleted file mode 100644 index 119274f0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/cy.php +++ /dev/null @@ -1,79 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - JD Isaacks - * - Daniel Monaghan - */ -return [ - 'year' => '{1}blwyddyn|]1,Inf[:count flynedd', - 'y' => ':countbl', - 'month' => '{1}mis|]1,Inf[:count mis', - 'm' => ':countmi', - 'week' => ':count wythnos', - 'w' => ':countw', - 'day' => '{1}diwrnod|]1,Inf[:count diwrnod', - 'd' => ':countd', - 'hour' => '{1}awr|]1,Inf[:count awr', - 'h' => ':counth', - 'minute' => '{1}munud|]1,Inf[:count munud', - 'min' => ':countm', - 'second' => '{1}ychydig eiliadau|]1,Inf[:count eiliad', - 's' => ':counts', - 'ago' => ':time yn ôl', - 'from_now' => 'mewn :time', - 'after' => ':time ar ôl', - 'before' => ':time o\'r blaen', - 'diff_now' => 'nawr', - 'diff_today' => 'Heddiw', - 'diff_today_regexp' => 'Heddiw(?:\\s+am)?', - 'diff_yesterday' => 'ddoe', - 'diff_yesterday_regexp' => 'Ddoe(?:\\s+am)?', - 'diff_tomorrow' => 'yfory', - 'diff_tomorrow_regexp' => 'Yfory(?:\\s+am)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Heddiw am] LT', - 'nextDay' => '[Yfory am] LT', - 'nextWeek' => 'dddd [am] LT', - 'lastDay' => '[Ddoe am] LT', - 'lastWeek' => 'dddd [diwethaf am] LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number) { - return $number.( - $number > 20 - ? (\in_array((int) $number, [40, 50, 60, 80, 100], true) ? 'fed' : 'ain') - : ([ - '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed - 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed', // 11eg to 20fed - ])[$number] ?? '' - ); - }, - 'months' => ['Ionawr', 'Chwefror', 'Mawrth', 'Ebrill', 'Mai', 'Mehefin', 'Gorffennaf', 'Awst', 'Medi', 'Hydref', 'Tachwedd', 'Rhagfyr'], - 'months_short' => ['Ion', 'Chwe', 'Maw', 'Ebr', 'Mai', 'Meh', 'Gor', 'Aws', 'Med', 'Hyd', 'Tach', 'Rhag'], - 'weekdays' => ['Dydd Sul', 'Dydd Llun', 'Dydd Mawrth', 'Dydd Mercher', 'Dydd Iau', 'Dydd Gwener', 'Dydd Sadwrn'], - 'weekdays_short' => ['Sul', 'Llun', 'Maw', 'Mer', 'Iau', 'Gwe', 'Sad'], - 'weekdays_min' => ['Su', 'Ll', 'Ma', 'Me', 'Ia', 'Gw', 'Sa'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' a '], - 'meridiem' => ['yb', 'yh'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/cy_GB.php b/vendor/nesbot/carbon/src/Carbon/Lang/cy_GB.php deleted file mode 100644 index 2c8148d0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/cy_GB.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/cy.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/da.php b/vendor/nesbot/carbon/src/Carbon/Lang/da.php deleted file mode 100644 index 322f91d5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/da.php +++ /dev/null @@ -1,81 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Rune Mønnike - * - François B - * - codenhagen - * - JD Isaacks - * - Jens Herlevsen - * - Ulrik McArdle (mcardle) - * - Frederik Sauer (FrittenKeeZ) - * - Janus Bahs Jacquet (kokoshneta) - */ -return [ - 'year' => ':count år|:count år', - 'a_year' => 'et år|:count år', - 'y' => ':count år|:count år', - 'month' => ':count måned|:count måneder', - 'a_month' => 'en måned|:count måneder', - 'm' => ':count mdr.', - 'week' => ':count uge|:count uger', - 'a_week' => 'en uge|:count uger', - 'w' => ':count u.', - 'day' => ':count dag|:count dage', - 'a_day' => ':count dag|:count dage', - 'd' => ':count d.', - 'hour' => ':count time|:count timer', - 'a_hour' => 'en time|:count timer', - 'h' => ':count t.', - 'minute' => ':count minut|:count minutter', - 'a_minute' => 'et minut|:count minutter', - 'min' => ':count min.', - 'second' => ':count sekund|:count sekunder', - 'a_second' => 'få sekunder|:count sekunder', - 's' => ':count s.', - 'ago' => 'for :time siden', - 'from_now' => 'om :time', - 'after' => ':time efter', - 'before' => ':time før', - 'diff_now' => 'nu', - 'diff_today' => 'i dag', - 'diff_today_regexp' => 'i dag(?:\\s+kl.)?', - 'diff_yesterday' => 'i går', - 'diff_yesterday_regexp' => 'i går(?:\\s+kl.)?', - 'diff_tomorrow' => 'i morgen', - 'diff_tomorrow_regexp' => 'i morgen(?:\\s+kl.)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[i dag kl.] LT', - 'nextDay' => '[i morgen kl.] LT', - 'nextWeek' => 'på dddd [kl.] LT', - 'lastDay' => '[i går kl.] LT', - 'lastWeek' => '[i] dddd[s kl.] LT', - 'sameElse' => 'L', - ], - 'ordinal' => ':number.', - 'months' => ['januar', 'februar', 'marts', 'april', 'maj', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'december'], - 'months_short' => ['jan.', 'feb.', 'mar.', 'apr.', 'maj.', 'jun.', 'jul.', 'aug.', 'sep.', 'okt.', 'nov.', 'dec.'], - 'weekdays' => ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], - 'weekdays_short' => ['søn.', 'man.', 'tir.', 'ons.', 'tor.', 'fre.', 'lør.'], - 'weekdays_min' => ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' og '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/da_DK.php b/vendor/nesbot/carbon/src/Carbon/Lang/da_DK.php deleted file mode 100644 index 392c4841..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/da_DK.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/da.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/da_GL.php b/vendor/nesbot/carbon/src/Carbon/Lang/da_GL.php deleted file mode 100644 index ea5698b9..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/da_GL.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/da.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - 'LL' => 'D. MMM YYYY', - 'LLL' => 'D. MMMM YYYY HH.mm', - 'LLLL' => 'dddd [den] D. MMMM YYYY HH.mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dav.php b/vendor/nesbot/carbon/src/Carbon/Lang/dav.php deleted file mode 100644 index e95ec4bb..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/dav.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['Luma lwa K', 'luma lwa p'], - 'weekdays' => ['Ituku ja jumwa', 'Kuramuka jimweri', 'Kuramuka kawi', 'Kuramuka kadadu', 'Kuramuka kana', 'Kuramuka kasanu', 'Kifula nguwo'], - 'weekdays_short' => ['Jum', 'Jim', 'Kaw', 'Kad', 'Kan', 'Kas', 'Ngu'], - 'weekdays_min' => ['Jum', 'Jim', 'Kaw', 'Kad', 'Kan', 'Kas', 'Ngu'], - 'months' => ['Mori ghwa imbiri', 'Mori ghwa kawi', 'Mori ghwa kadadu', 'Mori ghwa kana', 'Mori ghwa kasanu', 'Mori ghwa karandadu', 'Mori ghwa mfungade', 'Mori ghwa wunyanya', 'Mori ghwa ikenda', 'Mori ghwa ikumi', 'Mori ghwa ikumi na imweri', 'Mori ghwa ikumi na iwi'], - 'months_short' => ['Imb', 'Kaw', 'Kad', 'Kan', 'Kas', 'Kar', 'Mfu', 'Wun', 'Ike', 'Iku', 'Imw', 'Iwi'], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/de.php b/vendor/nesbot/carbon/src/Carbon/Lang/de.php deleted file mode 100644 index 3b70750e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/de.php +++ /dev/null @@ -1,117 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Michael Hohl - * - sheriffmarley - * - dennisoderwald - * - Timo - * - Karag2006 - * - Pete Scopes (pdscopes) - */ -return [ - 'year' => ':count Jahr|:count Jahre', - 'a_year' => 'ein Jahr|:count Jahre', - 'y' => ':count J.', - 'month' => ':count Monat|:count Monate', - 'a_month' => 'ein Monat|:count Monate', - 'm' => ':count Mon.', - 'week' => ':count Woche|:count Wochen', - 'a_week' => 'eine Woche|:count Wochen', - 'w' => ':count Wo.', - 'day' => ':count Tag|:count Tage', - 'a_day' => 'ein Tag|:count Tage', - 'd' => ':count Tg.', - 'hour' => ':count Stunde|:count Stunden', - 'a_hour' => 'eine Stunde|:count Stunden', - 'h' => ':count Std.', - 'minute' => ':count Minute|:count Minuten', - 'a_minute' => 'eine Minute|:count Minuten', - 'min' => ':count Min.', - 'second' => ':count Sekunde|:count Sekunden', - 'a_second' => 'ein paar Sekunden|:count Sekunden', - 's' => ':count Sek.', - 'millisecond' => ':count Millisekunde|:count Millisekunden', - 'a_millisecond' => 'eine Millisekunde|:count Millisekunden', - 'ms' => ':countms', - 'microsecond' => ':count Mikrosekunde|:count Mikrosekunden', - 'a_microsecond' => 'eine Mikrosekunde|:count Mikrosekunden', - 'µs' => ':countµs', - 'ago' => 'vor :time', - 'from_now' => 'in :time', - 'after' => ':time später', - 'before' => ':time zuvor', - - 'year_from_now' => ':count Jahr|:count Jahren', - 'month_from_now' => ':count Monat|:count Monaten', - 'week_from_now' => ':count Woche|:count Wochen', - 'day_from_now' => ':count Tag|:count Tagen', - 'year_ago' => ':count Jahr|:count Jahren', - 'month_ago' => ':count Monat|:count Monaten', - 'week_ago' => ':count Woche|:count Wochen', - 'day_ago' => ':count Tag|:count Tagen', - 'a_year_from_now' => 'ein Jahr|:count Jahren', - 'a_month_from_now' => 'ein Monat|:count Monaten', - 'a_week_from_now' => 'eine Woche|:count Wochen', - 'a_day_from_now' => 'ein Tag|:count Tagen', - 'a_year_ago' => 'ein Jahr|:count Jahren', - 'a_month_ago' => 'ein Monat|:count Monaten', - 'a_week_ago' => 'eine Woche|:count Wochen', - 'a_day_ago' => 'ein Tag|:count Tagen', - - 'diff_now' => 'Gerade eben', - 'diff_today' => 'heute', - 'diff_today_regexp' => 'heute(?:\\s+um)?', - 'diff_yesterday' => 'Gestern', - 'diff_yesterday_regexp' => 'gestern(?:\\s+um)?', - 'diff_tomorrow' => 'Morgen', - 'diff_tomorrow_regexp' => 'morgen(?:\\s+um)?', - 'diff_before_yesterday' => 'Vorgestern', - 'diff_after_tomorrow' => 'Übermorgen', - - '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', - ], - - 'calendar' => [ - 'sameDay' => '[heute um] LT [Uhr]', - 'nextDay' => '[morgen um] LT [Uhr]', - 'nextWeek' => 'dddd [um] LT [Uhr]', - 'lastDay' => '[gestern um] LT [Uhr]', - 'lastWeek' => '[letzten] dddd [um] LT [Uhr]', - 'sameElse' => 'L', - ], - - 'months' => ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'], - 'months_short' => ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - 'weekdays' => ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], - 'weekdays_short' => ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'], - 'weekdays_min' => ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], - 'ordinal' => ':number.', - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' und '], - 'ordinal_words' => [ - 'of' => 'im', - 'first' => 'erster', - 'second' => 'zweiter', - 'third' => 'dritter', - 'fourth' => 'vierten', - 'fifth' => 'fünfter', - 'last' => 'letzten', - ], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/de_AT.php b/vendor/nesbot/carbon/src/Carbon/Lang/de_AT.php deleted file mode 100644 index a2ea4c08..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/de_AT.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - sheriffmarley - * - Timo - * - Michael Hohl - * - Namoshek - * - Bernhard Baumrock (BernhardBaumrock) - */ -return array_replace_recursive(require __DIR__.'/de.php', [ - 'months' => [ - 0 => 'Jänner', - ], - 'months_short' => [ - 0 => 'Jän', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/de_BE.php b/vendor/nesbot/carbon/src/Carbon/Lang/de_BE.php deleted file mode 100644 index 8ed8dc62..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/de_BE.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/de.php', [ - 'formats' => [ - 'L' => 'YYYY-MM-DD', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/de_CH.php b/vendor/nesbot/carbon/src/Carbon/Lang/de_CH.php deleted file mode 100644 index a869ab48..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/de_CH.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - sheriffmarley - * - Timo - * - Michael Hohl - */ -return array_replace_recursive(require __DIR__.'/de.php', [ - 'weekdays_short' => ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/de_DE.php b/vendor/nesbot/carbon/src/Carbon/Lang/de_DE.php deleted file mode 100644 index fb1209d2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/de_DE.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Free Software Foundation, Inc. bug-glibc-locales@gnu.org - */ -return require __DIR__.'/de.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/de_IT.php b/vendor/nesbot/carbon/src/Carbon/Lang/de_IT.php deleted file mode 100644 index 604a8568..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/de_IT.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Matthias Dieter Wallno:fer libc-locales@sourceware.org - */ -return require __DIR__.'/de.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/de_LI.php b/vendor/nesbot/carbon/src/Carbon/Lang/de_LI.php deleted file mode 100644 index 03e606a6..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/de_LI.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/de.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/de_LU.php b/vendor/nesbot/carbon/src/Carbon/Lang/de_LU.php deleted file mode 100644 index 8ed8dc62..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/de_LU.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/de.php', [ - 'formats' => [ - 'L' => 'YYYY-MM-DD', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dje.php b/vendor/nesbot/carbon/src/Carbon/Lang/dje.php deleted file mode 100644 index 74b7ac12..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/dje.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['Subbaahi', 'Zaarikay b'], - 'weekdays' => ['Alhadi', 'Atinni', 'Atalaata', 'Alarba', 'Alhamisi', 'Alzuma', 'Asibti'], - 'weekdays_short' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'], - 'weekdays_min' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'], - 'months' => ['Žanwiye', 'Feewiriye', 'Marsi', 'Awiril', 'Me', 'Žuweŋ', 'Žuyye', 'Ut', 'Sektanbur', 'Oktoobur', 'Noowanbur', 'Deesanbur'], - 'months_short' => ['Žan', 'Fee', 'Mar', 'Awi', 'Me', 'Žuw', 'Žuy', 'Ut', 'Sek', 'Okt', 'Noo', 'Dee'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM, YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - - 'year' => ':count hari', // less reliable - 'y' => ':count hari', // less reliable - 'a_year' => ':count hari', // less reliable - - 'week' => ':count alzuma', // less reliable - 'w' => ':count alzuma', // less reliable - 'a_week' => ':count alzuma', // less reliable - - 'second' => ':count atinni', // less reliable - 's' => ':count atinni', // less reliable - 'a_second' => ':count atinni', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/doi.php b/vendor/nesbot/carbon/src/Carbon/Lang/doi.php deleted file mode 100644 index cb679c58..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/doi.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/doi_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/doi_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/doi_IN.php deleted file mode 100644 index d3597214..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/doi_IN.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Red Hat Pune libc-alpha@sourceware.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['जनवरी', 'फरवरी', 'मार्च', 'एप्रैल', 'मेई', 'जून', 'जूलै', 'अगस्त', 'सितंबर', 'अक्तूबर', 'नवंबर', 'दिसंबर'], - 'months_short' => ['जनवरी', 'फरवरी', 'मार्च', 'एप्रैल', 'मेई', 'जून', 'जूलै', 'अगस्त', 'सितंबर', 'अक्तूबर', 'नवंबर', 'दिसंबर'], - 'weekdays' => ['ऐतबार', 'सोमबार', 'मंगलबर', 'बुधबार', 'बीरबार', 'शुक्करबार', 'श्नीचरबार'], - 'weekdays_short' => ['ऐत', 'सोम', 'मंगल', 'बुध', 'बीर', 'शुक्कर', 'श्नीचर'], - 'weekdays_min' => ['ऐत', 'सोम', 'मंगल', 'बुध', 'बीर', 'शुक्कर', 'श्नीचर'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['सञं', 'सबेर'], - - 'second' => ':count सङार', // less reliable - 's' => ':count सङार', // less reliable - 'a_second' => ':count सङार', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dsb.php b/vendor/nesbot/carbon/src/Carbon/Lang/dsb.php deleted file mode 100644 index 1d214d56..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/dsb.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/dsb_DE.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dsb_DE.php b/vendor/nesbot/carbon/src/Carbon/Lang/dsb_DE.php deleted file mode 100644 index 1b941870..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/dsb_DE.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Information from Michael Wolf bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD.MM.YYYY', - 'LL' => 'DD. MMMM YYYY', - 'LLL' => 'DD. MMMM, HH:mm [góź.]', - 'LLLL' => 'dddd, DD. MMMM YYYY, HH:mm [góź.]', - ], - 'months' => ['januara', 'februara', 'měrca', 'apryla', 'maja', 'junija', 'julija', 'awgusta', 'septembra', 'oktobra', 'nowembra', 'decembra'], - 'months_short' => ['Jan', 'Feb', 'Měr', 'Apr', 'Maj', 'Jun', 'Jul', 'Awg', 'Sep', 'Okt', 'Now', 'Dec'], - 'weekdays' => ['Njeźela', 'Pónjeźele', 'Wałtora', 'Srjoda', 'Stwórtk', 'Pětk', 'Sobota'], - 'weekdays_short' => ['Nj', 'Pó', 'Wa', 'Sr', 'St', 'Pě', 'So'], - 'weekdays_min' => ['Nj', 'Pó', 'Wa', 'Sr', 'St', 'Pě', 'So'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - - 'year' => ':count lěto', - 'y' => ':count lěto', - 'a_year' => ':count lěto', - - 'month' => ':count mjasec', - 'm' => ':count mjasec', - 'a_month' => ':count mjasec', - - 'week' => ':count tyźeń', - 'w' => ':count tyźeń', - 'a_week' => ':count tyźeń', - - 'day' => ':count źeń', - 'd' => ':count źeń', - 'a_day' => ':count źeń', - - 'hour' => ':count góźina', - 'h' => ':count góźina', - 'a_hour' => ':count góźina', - - 'minute' => ':count minuta', - 'min' => ':count minuta', - 'a_minute' => ':count minuta', - - 'second' => ':count drugi', - 's' => ':count drugi', - 'a_second' => ':count drugi', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dua.php b/vendor/nesbot/carbon/src/Carbon/Lang/dua.php deleted file mode 100644 index 55e5c7c3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/dua.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['idiɓa', 'ebyámu'], - 'weekdays' => ['éti', 'mɔ́sú', 'kwasú', 'mukɔ́sú', 'ŋgisú', 'ɗónɛsú', 'esaɓasú'], - 'weekdays_short' => ['ét', 'mɔ́s', 'kwa', 'muk', 'ŋgi', 'ɗón', 'esa'], - 'weekdays_min' => ['ét', 'mɔ́s', 'kwa', 'muk', 'ŋgi', 'ɗón', 'esa'], - 'months' => ['dimɔ́di', 'ŋgɔndɛ', 'sɔŋɛ', 'diɓáɓá', 'emiasele', 'esɔpɛsɔpɛ', 'madiɓɛ́díɓɛ́', 'diŋgindi', 'nyɛtɛki', 'mayésɛ́', 'tiníní', 'eláŋgɛ́'], - 'months_short' => ['di', 'ŋgɔn', 'sɔŋ', 'diɓ', 'emi', 'esɔ', 'mad', 'diŋ', 'nyɛt', 'may', 'tin', 'elá'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - - 'year' => ':count ma mbu', // less reliable - 'y' => ':count ma mbu', // less reliable - 'a_year' => ':count ma mbu', // less reliable - - 'month' => ':count myo̱di', // less reliable - 'm' => ':count myo̱di', // less reliable - 'a_month' => ':count myo̱di', // less reliable - - 'week' => ':count woki', // less reliable - 'w' => ':count woki', // less reliable - 'a_week' => ':count woki', // less reliable - - 'day' => ':count buńa', // less reliable - 'd' => ':count buńa', // less reliable - 'a_day' => ':count buńa', // less reliable - - 'hour' => ':count ma awa', // less reliable - 'h' => ':count ma awa', // less reliable - 'a_hour' => ':count ma awa', // less reliable - - 'minute' => ':count minuti', // less reliable - 'min' => ':count minuti', // less reliable - 'a_minute' => ':count minuti', // less reliable - - 'second' => ':count maba', // less reliable - 's' => ':count maba', // less reliable - 'a_second' => ':count maba', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dv.php b/vendor/nesbot/carbon/src/Carbon/Lang/dv.php deleted file mode 100644 index 4b8d7e1a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/dv.php +++ /dev/null @@ -1,89 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -$months = [ - 'ޖެނުއަރީ', - 'ފެބްރުއަރީ', - 'މާރިޗު', - 'އޭޕްރީލު', - 'މޭ', - 'ޖޫން', - 'ޖުލައި', - 'އޯގަސްޓު', - 'ސެޕްޓެމްބަރު', - 'އޮކްޓޯބަރު', - 'ނޮވެމްބަރު', - 'ޑިސެމްބަރު', -]; - -$weekdays = [ - 'އާދިއްތަ', - 'ހޯމަ', - 'އަންގާރަ', - 'ބުދަ', - 'ބުރާސްފަތި', - 'ހުކުރު', - 'ހޮނިހިރު', -]; - -/* - * Authors: - * - Josh Soref - * - Jawish Hameed - */ -return [ - 'year' => ':count '.'އަހަރު', - 'a_year' => '{1}'.'އަހަރެއް'.'|:count '.'އަހަރު', - 'month' => ':count '.'މަސް', - 'a_month' => '{1}'.'މަހެއް'.'|:count '.'މަސް', - 'week' => ':count '.'ހަފްތާ', - 'a_week' => '{1}'.'ސިކުންތުކޮޅެއް'.'|:count '.'ހަފްތާ', - 'day' => ':count '.'ދުވަސް', - 'a_day' => '{1}'.'ދުވަހެއް'.'|:count '.'ދުވަސް', - 'hour' => ':count '.'ގަޑިއިރު', - 'a_hour' => '{1}'.'ގަޑިއިރެއް'.'|:count '.'ގަޑިއިރު', - 'minute' => ':count '.'މިނިޓު', - 'a_minute' => '{1}'.'މިނިޓެއް'.'|:count '.'މިނިޓު', - 'second' => ':count '.'ސިކުންތު', - 'a_second' => '{1}'.'ސިކުންތުކޮޅެއް'.'|:count '.'ސިކުންތު', - 'ago' => 'ކުރިން :time', - 'from_now' => 'ތެރޭގައި :time', - 'after' => ':time ފަހުން', - 'before' => ':time ކުރި', - 'diff_yesterday' => 'އިއްޔެ', - 'diff_today' => 'މިއަދު', - 'diff_tomorrow' => 'މާދަމާ', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[މިއަދު] LT', - 'nextDay' => '[މާދަމާ] LT', - 'nextWeek' => 'dddd LT', - 'lastDay' => '[އިއްޔެ] LT', - 'lastWeek' => '[ފާއިތުވި] dddd LT', - 'sameElse' => 'L', - ], - 'meridiem' => ['މކ', 'މފ'], - 'months' => $months, - 'months_short' => $months, - 'weekdays' => $weekdays, - 'weekdays_short' => $weekdays, - 'weekdays_min' => ['އާދި', 'ހޯމަ', 'އަން', 'ބުދަ', 'ބުރާ', 'ހުކު', 'ހޮނި'], - 'list' => [', ', ' އަދި '], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dv_MV.php b/vendor/nesbot/carbon/src/Carbon/Lang/dv_MV.php deleted file mode 100644 index 2668d5b0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/dv_MV.php +++ /dev/null @@ -1,87 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ahmed Ali - */ - -$months = [ - 'ޖެނުއަރީ', - 'ފެބްރުއަރީ', - 'މާރިޗު', - 'އޭޕްރީލު', - 'މޭ', - 'ޖޫން', - 'ޖުލައި', - 'އޯގަސްޓު', - 'ސެޕްޓެމްބަރު', - 'އޮކްޓޯބަރު', - 'ނޮވެމްބަރު', - 'ޑިސެމްބަރު', -]; - -$weekdays = [ - 'އާދިއްތަ', - 'ހޯމަ', - 'އަންގާރަ', - 'ބުދަ', - 'ބުރާސްފަތި', - 'ހުކުރު', - 'ހޮނިހިރު', -]; - -return [ - 'year' => '{0}އަހަރެއް|[1,Inf]:count އަހަރު', - 'y' => '{0}އަހަރެއް|[1,Inf]:count އަހަރު', - 'month' => '{0}މައްސަރެއް|[1,Inf]:count މަސް', - 'm' => '{0}މައްސަރެއް|[1,Inf]:count މަސް', - 'week' => '{0}ހަފްތާއެއް|[1,Inf]:count ހަފްތާ', - 'w' => '{0}ހަފްތާއެއް|[1,Inf]:count ހަފްތާ', - 'day' => '{0}ދުވަސް|[1,Inf]:count ދުވަސް', - 'd' => '{0}ދުވަސް|[1,Inf]:count ދުވަސް', - 'hour' => '{0}ގަޑިއިރެއް|[1,Inf]:count ގަޑި', - 'h' => '{0}ގަޑިއިރެއް|[1,Inf]:count ގަޑި', - 'minute' => '{0}މިނެޓެއް|[1,Inf]:count މިނެޓް', - 'min' => '{0}މިނެޓެއް|[1,Inf]:count މިނެޓް', - 'second' => '{0}ސިކުންތެއް|[1,Inf]:count ސިކުންތު', - 's' => '{0}ސިކުންތެއް|[1,Inf]:count ސިކުންތު', - 'ago' => ':time ކުރިން', - 'from_now' => ':time ފަހުން', - 'after' => ':time ފަހުން', - 'before' => ':time ކުރި', - 'diff_yesterday' => 'އިއްޔެ', - 'diff_today' => 'މިއަދު', - 'diff_tomorrow' => 'މާދަމާ', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[މިއަދު] LT', - 'nextDay' => '[މާދަމާ] LT', - 'nextWeek' => 'dddd LT', - 'lastDay' => '[އިއްޔެ] LT', - 'lastWeek' => '[ފާއިތުވި] dddd LT', - 'sameElse' => 'L', - ], - 'meridiem' => ['މކ', 'މފ'], - 'months' => $months, - 'months_short' => $months, - 'weekdays' => $weekdays, - 'weekdays_short' => $weekdays, - 'weekdays_min' => ['އާދި', 'ހޯމަ', 'އަން', 'ބުދަ', 'ބުރާ', 'ހުކު', 'ހޮނި'], - 'list' => [', ', ' އަދި '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dyo.php b/vendor/nesbot/carbon/src/Carbon/Lang/dyo.php deleted file mode 100644 index 33082e67..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/dyo.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'weekdays' => ['Dimas', 'Teneŋ', 'Talata', 'Alarbay', 'Aramisay', 'Arjuma', 'Sibiti'], - 'weekdays_short' => ['Dim', 'Ten', 'Tal', 'Ala', 'Ara', 'Arj', 'Sib'], - 'weekdays_min' => ['Dim', 'Ten', 'Tal', 'Ala', 'Ara', 'Arj', 'Sib'], - 'months' => ['Sanvie', 'Fébirie', 'Mars', 'Aburil', 'Mee', 'Sueŋ', 'Súuyee', 'Ut', 'Settembar', 'Oktobar', 'Novembar', 'Disambar'], - 'months_short' => ['Sa', 'Fe', 'Ma', 'Ab', 'Me', 'Su', 'Sú', 'Ut', 'Se', 'Ok', 'No', 'De'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dz.php b/vendor/nesbot/carbon/src/Carbon/Lang/dz.php deleted file mode 100644 index cc17e69e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/dz.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/dz_BT.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/dz_BT.php b/vendor/nesbot/carbon/src/Carbon/Lang/dz_BT.php deleted file mode 100644 index bfbcaf46..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/dz_BT.php +++ /dev/null @@ -1,43 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Sherubtse College bug-glibc@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'པསྱི་ལོYYཟལMMཚེསDD', - ], - 'months' => ['ཟླ་བ་དང་པ་', 'ཟླ་བ་གཉིས་པ་', 'ཟླ་བ་གསུམ་པ་', 'ཟླ་བ་བཞི་པ་', 'ཟླ་བ་ལྔ་ཕ་', 'ཟླ་བ་དྲུག་པ་', 'ཟླ་བ་བདུནཔ་', 'ཟླ་བ་བརྒྱད་པ་', 'ཟླ་བ་དགུ་པ་', 'ཟླ་བ་བཅུ་པ་', 'ཟླ་བ་བཅུ་གཅིག་པ་', 'ཟླ་བ་བཅུ་གཉིས་པ་'], - 'months_short' => ['ཟླ་༡', 'ཟླ་༢', 'ཟླ་༣', 'ཟླ་༤', 'ཟླ་༥', 'ཟླ་༦', 'ཟླ་༧', 'ཟླ་༨', 'ཟླ་༩', 'ཟླ་༡༠', 'ཟླ་༡༡', 'ཟླ་༡༢'], - 'weekdays' => ['གཟའ་ཟླ་བ་', 'གཟའ་མིག་དམར་', 'གཟའ་ལྷག་ཕ་', 'གཟའ་པུར་བུ་', 'གཟའ་པ་སངས་', 'གཟའ་སྤེན་ཕ་', 'གཟའ་ཉི་མ་'], - 'weekdays_short' => ['ཟླ་', 'མིར་', 'ལྷག་', 'པུར་', 'སངས་', 'སྤེན་', 'ཉི་'], - 'weekdays_min' => ['ཟླ་', 'མིར་', 'ལྷག་', 'པུར་', 'སངས་', 'སྤེན་', 'ཉི་'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['ངས་ཆ', 'ཕྱི་ཆ'], - - 'year' => ':count ཆརཔ', // less reliable - 'y' => ':count ཆརཔ', // less reliable - 'a_year' => ':count ཆརཔ', // less reliable - - 'month' => ':count ཟླ་བ', // less reliable - 'm' => ':count ཟླ་བ', // less reliable - 'a_month' => ':count ཟླ་བ', // less reliable - - 'day' => ':count ཉི', // less reliable - 'd' => ':count ཉི', // less reliable - 'a_day' => ':count ཉི', // less reliable - - 'second' => ':count ཆ', // less reliable - 's' => ':count ཆ', // less reliable - 'a_second' => ':count ཆ', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ebu.php b/vendor/nesbot/carbon/src/Carbon/Lang/ebu.php deleted file mode 100644 index f60bc6f2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ebu.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['KI', 'UT'], - 'weekdays' => ['Kiumia', 'Njumatatu', 'Njumaine', 'Njumatano', 'Aramithi', 'Njumaa', 'NJumamothii'], - 'weekdays_short' => ['Kma', 'Tat', 'Ine', 'Tan', 'Arm', 'Maa', 'NMM'], - 'weekdays_min' => ['Kma', 'Tat', 'Ine', 'Tan', 'Arm', 'Maa', 'NMM'], - 'months' => ['Mweri wa mbere', 'Mweri wa kaĩri', 'Mweri wa kathatũ', 'Mweri wa kana', 'Mweri wa gatano', 'Mweri wa gatantatũ', 'Mweri wa mũgwanja', 'Mweri wa kanana', 'Mweri wa kenda', 'Mweri wa ikũmi', 'Mweri wa ikũmi na ũmwe', 'Mweri wa ikũmi na Kaĩrĩ'], - 'months_short' => ['Mbe', 'Kai', 'Kat', 'Kan', 'Gat', 'Gan', 'Mug', 'Knn', 'Ken', 'Iku', 'Imw', 'Igi'], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ee.php b/vendor/nesbot/carbon/src/Carbon/Lang/ee.php deleted file mode 100644 index f96c5c9d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ee.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['ŋ', 'ɣ'], - 'weekdays' => ['kɔsiɖa', 'dzoɖa', 'blaɖa', 'kuɖa', 'yawoɖa', 'fiɖa', 'memleɖa'], - 'weekdays_short' => ['kɔs', 'dzo', 'bla', 'kuɖ', 'yaw', 'fiɖ', 'mem'], - 'weekdays_min' => ['kɔs', 'dzo', 'bla', 'kuɖ', 'yaw', 'fiɖ', 'mem'], - 'months' => ['dzove', 'dzodze', 'tedoxe', 'afɔfĩe', 'dama', 'masa', 'siamlɔm', 'deasiamime', 'anyɔnyɔ', 'kele', 'adeɛmekpɔxe', 'dzome'], - 'months_short' => ['dzv', 'dzd', 'ted', 'afɔ', 'dam', 'mas', 'sia', 'dea', 'any', 'kel', 'ade', 'dzm'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'a [ga] h:mm', - 'LTS' => 'a [ga] h:mm:ss', - 'L' => 'M/D/YYYY', - 'LL' => 'MMM D [lia], YYYY', - 'LLL' => 'a [ga] h:mm MMMM D [lia] YYYY', - 'LLLL' => 'a [ga] h:mm dddd, MMMM D [lia] YYYY', - ], - - 'year' => 'ƒe :count', - 'y' => 'ƒe :count', - 'a_year' => 'ƒe :count', - - 'month' => 'ɣleti :count', - 'm' => 'ɣleti :count', - 'a_month' => 'ɣleti :count', - - 'week' => 'kwasiɖa :count', - 'w' => 'kwasiɖa :count', - 'a_week' => 'kwasiɖa :count', - - 'day' => 'ŋkeke :count', - 'd' => 'ŋkeke :count', - 'a_day' => 'ŋkeke :count', - - 'hour' => 'gaƒoƒo :count', - 'h' => 'gaƒoƒo :count', - 'a_hour' => 'gaƒoƒo :count', - - 'minute' => 'miniti :count', // less reliable - 'min' => 'miniti :count', // less reliable - 'a_minute' => 'miniti :count', // less reliable - - 'second' => 'sɛkɛnd :count', // less reliable - 's' => 'sɛkɛnd :count', // less reliable - 'a_second' => 'sɛkɛnd :count', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ee_TG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ee_TG.php deleted file mode 100644 index 7a8b36c9..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ee_TG.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ee.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'LLL' => 'HH:mm MMMM D [lia] YYYY', - 'LLLL' => 'HH:mm dddd, MMMM D [lia] YYYY', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/el.php b/vendor/nesbot/carbon/src/Carbon/Lang/el.php deleted file mode 100644 index 7c40f9c1..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/el.php +++ /dev/null @@ -1,93 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Alessandro Di Felice - * - François B - * - Tim Fish - * - Gabriel Monteagudo - * - JD Isaacks - * - yiannisdesp - * - Ilias Kasmeridis (iliaskasm) - */ - -use Carbon\CarbonInterface; - -return [ - 'year' => ':count χρόνος|:count χρόνια', - 'a_year' => 'ένας χρόνος|:count χρόνια', - 'y' => ':count χρ.', - 'month' => ':count μήνας|:count μήνες', - 'a_month' => 'ένας μήνας|:count μήνες', - 'm' => ':count μήν.', - 'week' => ':count εβδομάδα|:count εβδομάδες', - 'a_week' => 'μια εβδομάδα|:count εβδομάδες', - 'w' => ':count εβδ.', - 'day' => ':count μέρα|:count μέρες', - 'a_day' => 'μία μέρα|:count μέρες', - 'd' => ':count μέρ.', - 'hour' => ':count ώρα|:count ώρες', - 'a_hour' => 'μία ώρα|:count ώρες', - 'h' => ':count ώρα|:count ώρες', - 'minute' => ':count λεπτό|:count λεπτά', - 'a_minute' => 'ένα λεπτό|:count λεπτά', - 'min' => ':count λεπ.', - 'second' => ':count δευτερόλεπτο|:count δευτερόλεπτα', - 'a_second' => 'λίγα δευτερόλεπτα|:count δευτερόλεπτα', - 's' => ':count δευ.', - 'ago' => 'πριν :time', - 'from_now' => 'σε :time', - 'after' => ':time μετά', - 'before' => ':time πριν', - 'diff_now' => 'τώρα', - 'diff_today' => 'Σήμερα', - 'diff_today_regexp' => 'Σήμερα(?:\\s+{})?', - 'diff_yesterday' => 'χθες', - 'diff_yesterday_regexp' => 'Χθες(?:\\s+{})?', - 'diff_tomorrow' => 'αύριο', - 'diff_tomorrow_regexp' => 'Αύριο(?:\\s+{})?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Σήμερα {}] LT', - 'nextDay' => '[Αύριο {}] LT', - 'nextWeek' => 'dddd [{}] LT', - 'lastDay' => '[Χθες {}] LT', - 'lastWeek' => function (CarbonInterface $current) { - switch ($current->dayOfWeek) { - case 6: - return '[το προηγούμενο] dddd [{}] LT'; - default: - return '[την προηγούμενη] dddd [{}] LT'; - } - }, - 'sameElse' => 'L', - ], - 'ordinal' => ':numberη', - 'meridiem' => ['ΠΜ', 'ΜΜ', 'πμ', 'μμ'], - 'months' => ['Ιανουαρίου', 'Φεβρουαρίου', 'Μαρτίου', 'Απριλίου', 'Μαΐου', 'Ιουνίου', 'Ιουλίου', 'Αυγούστου', 'Σεπτεμβρίου', 'Οκτωβρίου', 'Νοεμβρίου', 'Δεκεμβρίου'], - 'months_standalone' => ['Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος', 'Μάιος', 'Ιούνιος', 'Ιούλιος', 'Αύγουστος', 'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος'], - 'months_regexp' => '/(D[oD]?[\s,]+MMMM|L{2,4}|l{2,4})/', - 'months_short' => ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαϊ', 'Ιουν', 'Ιουλ', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ'], - 'weekdays' => ['Κυριακή', 'Δευτέρα', 'Τρίτη', 'Τετάρτη', 'Πέμπτη', 'Παρασκευή', 'Σάββατο'], - 'weekdays_short' => ['Κυρ', 'Δευ', 'Τρι', 'Τετ', 'Πεμ', 'Παρ', 'Σαβ'], - 'weekdays_min' => ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πε', 'Πα', 'Σα'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' και '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/el_CY.php b/vendor/nesbot/carbon/src/Carbon/Lang/el_CY.php deleted file mode 100644 index 8a693c15..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/el_CY.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Greek Debian Translation Team bug-glibc@gnu.org - */ -return array_replace_recursive(require __DIR__.'/el.php', [ - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/el_GR.php b/vendor/nesbot/carbon/src/Carbon/Lang/el_GR.php deleted file mode 100644 index df196af9..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/el_GR.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/el.php', [ - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en.php b/vendor/nesbot/carbon/src/Carbon/Lang/en.php deleted file mode 100644 index f81f617e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en.php +++ /dev/null @@ -1,87 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Milos Sakovic - * - Paul - * - Pete Scopes (pdscopes) - */ -return [ - /* - * {1}, {0} and ]1,Inf[ are not needed as it's the default for English pluralization. - * But as some languages are using en.php as a fallback, it's better to specify it - * explicitly so those languages also fallback to English pluralization when a unit - * is missing. - */ - 'year' => '{1}:count year|{0}:count years|]1,Inf[:count years', - 'a_year' => '{1}a year|{0}:count years|]1,Inf[:count years', - 'y' => '{1}:countyr|{0}:countyrs|]1,Inf[:countyrs', - 'month' => '{1}:count month|{0}:count months|]1,Inf[:count months', - 'a_month' => '{1}a month|{0}:count months|]1,Inf[:count months', - 'm' => '{1}:countmo|{0}:countmos|]1,Inf[:countmos', - 'week' => '{1}:count week|{0}:count weeks|]1,Inf[:count weeks', - 'a_week' => '{1}a week|{0}:count weeks|]1,Inf[:count weeks', - 'w' => ':countw', - 'day' => '{1}:count day|{0}:count days|]1,Inf[:count days', - 'a_day' => '{1}a day|{0}:count days|]1,Inf[:count days', - 'd' => ':countd', - 'hour' => '{1}:count hour|{0}:count hours|]1,Inf[:count hours', - 'a_hour' => '{1}an hour|{0}:count hours|]1,Inf[:count hours', - 'h' => ':counth', - 'minute' => '{1}:count minute|{0}:count minutes|]1,Inf[:count minutes', - 'a_minute' => '{1}a minute|{0}:count minutes|]1,Inf[:count minutes', - 'min' => ':countm', - 'second' => '{1}:count second|{0}:count seconds|]1,Inf[:count seconds', - 'a_second' => '{1}a few seconds|{0}:count seconds|]1,Inf[:count seconds', - 's' => ':counts', - 'millisecond' => '{1}:count millisecond|{0}:count milliseconds|]1,Inf[:count milliseconds', - 'a_millisecond' => '{1}a millisecond|{0}:count milliseconds|]1,Inf[:count milliseconds', - 'ms' => ':countms', - 'microsecond' => '{1}:count microsecond|{0}:count microseconds|]1,Inf[:count microseconds', - 'a_microsecond' => '{1}a microsecond|{0}:count microseconds|]1,Inf[:count microseconds', - 'µs' => ':countµs', - 'ago' => ':time ago', - 'from_now' => ':time from now', - 'after' => ':time after', - 'before' => ':time before', - 'diff_now' => 'just now', - 'diff_today' => 'today', - 'diff_yesterday' => 'yesterday', - 'diff_tomorrow' => 'tomorrow', - 'diff_before_yesterday' => 'before yesterday', - 'diff_after_tomorrow' => 'after tomorrow', - 'period_recurrences' => '{1}once|{0}:count times|]1,Inf[:count times', - 'period_interval' => 'every :interval', - 'period_start_date' => 'from :date', - 'period_end_date' => 'to :date', - 'months' => ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], - 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - 'weekdays' => ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - 'weekdays_short' => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - 'weekdays_min' => ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], - 'ordinal' => function ($number) { - $lastDigit = $number % 10; - - return $number.( - ((int) ($number % 100 / 10) === 1) ? 'th' : ( - ($lastDigit === 1) ? 'st' : ( - ($lastDigit === 2) ? 'nd' : ( - ($lastDigit === 3) ? 'rd' : 'th' - ) - ) - ) - ); - }, - 'list' => [', ', ' and '], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_001.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_001.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_001.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_150.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_150.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_150.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_AG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_AG.php deleted file mode 100644 index 2c1c64f0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_AG.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Free Software Foundation, Inc. bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_AI.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_AI.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_AI.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_AS.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_AS.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_AS.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_AT.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_AT.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_AT.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_AU.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_AU.php deleted file mode 100644 index f16bd4f5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_AU.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Kunal Marwaha - * - François B - * - Mayank Badola - * - JD Isaacks - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'from_now' => 'in :time', - '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', - ], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_BB.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_BB.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_BB.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_BE.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_BE.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_BE.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_BI.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_BI.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_BI.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_BM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_BM.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_BM.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_BS.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_BS.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_BS.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_BW.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_BW.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_BW.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_BZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_BZ.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_BZ.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_CA.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_CA.php deleted file mode 100644 index e6560868..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_CA.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - Zhan Tong Zhang - * - Mayank Badola - * - JD Isaacks - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'from_now' => 'in :time', - 'formats' => [ - 'LT' => 'h:mm A', - 'LTS' => 'h:mm:ss A', - 'L' => 'YYYY-MM-DD', - 'LL' => 'MMMM D, YYYY', - 'LLL' => 'MMMM D, YYYY h:mm A', - 'LLLL' => 'dddd, MMMM D, YYYY h:mm A', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_CC.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_CC.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_CC.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_CH.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_CH.php deleted file mode 100644 index 10d9cd8f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_CH.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 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', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_CK.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_CK.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_CK.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_CM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_CM.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_CM.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_CX.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_CX.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_CX.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_CY.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_CY.php deleted file mode 100644 index a44c3508..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_CY.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - NehaGautam - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'from_now' => 'in :time', - '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', - ], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_DE.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_DE.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_DE.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_DG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_DG.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_DG.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_DK.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_DK.php deleted file mode 100644 index 9e8a8c68..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_DK.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Danish Standards Association bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'YYYY-MM-DD', - ], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_DM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_DM.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_DM.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_ER.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_ER.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_ER.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_FI.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_FI.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_FI.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_FJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_FJ.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_FJ.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_FK.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_FK.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_FK.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_FM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_FM.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_FM.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_GB.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_GB.php deleted file mode 100644 index 67d9fd64..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_GB.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - Mayank Badola - * - JD Isaacks - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'from_now' => 'in :time', - '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', - ], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_GD.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_GD.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_GD.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_GG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_GG.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_GG.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_GH.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_GH.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_GH.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_GI.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_GI.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_GI.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_GM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_GM.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_GM.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_GU.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_GU.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_GU.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_GY.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_GY.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_GY.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_HK.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_HK.php deleted file mode 100644 index 34aae989..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_HK.php +++ /dev/null @@ -1,18 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_IE.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_IE.php deleted file mode 100644 index c8d3c2fc..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_IE.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Martin McWhorter - * - François B - * - Chris Cartlidge - * - JD Isaacks - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'from_now' => 'in :time', - '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', - ], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_IL.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_IL.php deleted file mode 100644 index e607924e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_IL.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Yoav Amit - * - François B - * - Mayank Badola - * - JD Isaacks - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'from_now' => 'in :time', - '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', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_IM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_IM.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_IM.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_IN.php deleted file mode 100644 index 00414e9a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_IN.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YY', - 'LL' => 'MMMM DD, YYYY', - 'LLL' => 'DD MMM HH:mm', - 'LLLL' => 'MMMM DD, YYYY HH:mm', - ], - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_IO.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_IO.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_IO.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_ISO.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_ISO.php deleted file mode 100644 index 11457b0c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_ISO.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY-MM-dd', - 'LL' => 'YYYY MMM D', - 'LLL' => 'YYYY MMMM D HH:mm', - 'LLLL' => 'dddd, YYYY MMMM DD HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_JE.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_JE.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_JE.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_JM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_JM.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_JM.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_KE.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_KE.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_KE.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_KI.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_KI.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_KI.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_KN.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_KN.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_KN.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_KY.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_KY.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_KY.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_LC.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_LC.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_LC.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_LR.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_LR.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_LR.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_LS.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_LS.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_LS.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MG.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MG.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MH.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MH.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MH.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MO.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MO.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MO.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MP.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MP.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MP.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MS.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MS.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MS.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MT.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MT.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MT.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MU.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MU.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MU.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MW.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MW.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MW.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_MY.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_MY.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_MY.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_NA.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_NA.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_NA.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_NF.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_NF.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_NF.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_NG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_NG.php deleted file mode 100644 index 67bceaad..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_NG.php +++ /dev/null @@ -1,18 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_NL.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_NL.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_NL.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_NR.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_NR.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_NR.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_NU.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_NU.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_NU.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_NZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_NZ.php deleted file mode 100644 index 6a206a0d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_NZ.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - Mayank Badola - * - Luke McGregor - * - JD Isaacks - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'from_now' => 'in :time', - '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', - ], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_PG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_PG.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_PG.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_PH.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_PH.php deleted file mode 100644 index 34aae989..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_PH.php +++ /dev/null @@ -1,18 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_PK.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_PK.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_PK.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_PN.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_PN.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_PN.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_PR.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_PR.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_PR.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_PW.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_PW.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_PW.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_RW.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_RW.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_RW.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SB.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SB.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SB.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SC.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SC.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SC.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SD.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SD.php deleted file mode 100644 index c4e2557e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SD.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 6, - 'weekend' => [5, 6], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SE.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SE.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SE.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SG.php deleted file mode 100644 index 5ee95241..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SG.php +++ /dev/null @@ -1,24 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'from_now' => 'in :time', - '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', - ], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SH.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SH.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SH.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SI.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SI.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SI.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SL.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SL.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SL.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SS.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SS.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SS.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SX.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SX.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SX.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_SZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_SZ.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_SZ.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_TC.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_TC.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_TC.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_TK.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_TK.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_TK.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_TO.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_TO.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_TO.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_TT.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_TT.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_TT.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_TV.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_TV.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_TV.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_TZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_TZ.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_TZ.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_UG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_UG.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_UG.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_UM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_UM.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_UM.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_US.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_US.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_US.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_US_Posix.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_US_Posix.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_US_Posix.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_VC.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_VC.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_VC.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_VG.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_VG.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_VG.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_VI.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_VI.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_VI.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_VU.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_VU.php deleted file mode 100644 index e2dd81db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_VU.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_WS.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_WS.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_WS.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_ZA.php deleted file mode 100644 index 48ea9471..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_ZA.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YY', - 'LL' => 'MMMM DD, YYYY', - 'LLL' => 'DD MMM HH:mm', - 'LLLL' => 'MMMM DD, YYYY HH:mm', - ], - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_ZM.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_ZM.php deleted file mode 100644 index d8a8cb59..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_ZM.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - ANLoc Martin Benjamin locales@africanlocalization.net - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/en_ZW.php b/vendor/nesbot/carbon/src/Carbon/Lang/en_ZW.php deleted file mode 100644 index f086dc63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/en_ZW.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/en.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/eo.php b/vendor/nesbot/carbon/src/Carbon/Lang/eo.php deleted file mode 100644 index 7c2efba2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/eo.php +++ /dev/null @@ -1,77 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - François B - * - Mia Nordentoft - * - JD Isaacks - */ -return [ - 'year' => ':count jaro|:count jaroj', - 'a_year' => 'jaro|:count jaroj', - 'y' => ':count j.', - 'month' => ':count monato|:count monatoj', - 'a_month' => 'monato|:count monatoj', - 'm' => ':count mo.', - 'week' => ':count semajno|:count semajnoj', - 'a_week' => 'semajno|:count semajnoj', - 'w' => ':count sem.', - 'day' => ':count tago|:count tagoj', - 'a_day' => 'tago|:count tagoj', - 'd' => ':count t.', - 'hour' => ':count horo|:count horoj', - 'a_hour' => 'horo|:count horoj', - 'h' => ':count h.', - 'minute' => ':count minuto|:count minutoj', - 'a_minute' => 'minuto|:count minutoj', - 'min' => ':count min.', - 'second' => ':count sekundo|:count sekundoj', - 'a_second' => 'sekundoj|:count sekundoj', - 's' => ':count sek.', - 'ago' => 'antaŭ :time', - 'from_now' => 'post :time', - 'after' => ':time poste', - 'before' => ':time antaŭe', - 'diff_yesterday' => 'Hieraŭ', - 'diff_yesterday_regexp' => 'Hieraŭ(?:\\s+je)?', - 'diff_today' => 'Hodiaŭ', - 'diff_today_regexp' => 'Hodiaŭ(?:\\s+je)?', - 'diff_tomorrow' => 'Morgaŭ', - 'diff_tomorrow_regexp' => 'Morgaŭ(?:\\s+je)?', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY-MM-DD', - 'LL' => 'D[-a de] MMMM, YYYY', - 'LLL' => 'D[-a de] MMMM, YYYY HH:mm', - 'LLLL' => 'dddd, [la] D[-a de] MMMM, YYYY HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[Hodiaŭ je] LT', - 'nextDay' => '[Morgaŭ je] LT', - 'nextWeek' => 'dddd [je] LT', - 'lastDay' => '[Hieraŭ je] LT', - 'lastWeek' => '[pasinta] dddd [je] LT', - 'sameElse' => 'L', - ], - 'ordinal' => ':numbera', - 'meridiem' => ['a.t.m.', 'p.t.m.'], - 'months' => ['januaro', 'februaro', 'marto', 'aprilo', 'majo', 'junio', 'julio', 'aŭgusto', 'septembro', 'oktobro', 'novembro', 'decembro'], - 'months_short' => ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aŭg', 'sep', 'okt', 'nov', 'dec'], - 'weekdays' => ['dimanĉo', 'lundo', 'mardo', 'merkredo', 'ĵaŭdo', 'vendredo', 'sabato'], - 'weekdays_short' => ['dim', 'lun', 'mard', 'merk', 'ĵaŭ', 'ven', 'sab'], - 'weekdays_min' => ['di', 'lu', 'ma', 'me', 'ĵa', 've', 'sa'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' kaj '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es.php b/vendor/nesbot/carbon/src/Carbon/Lang/es.php deleted file mode 100644 index 1c4fcfd0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es.php +++ /dev/null @@ -1,121 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Kunal Marwaha - * - kostas - * - François B - * - Tim Fish - * - Claire Coloma - * - Steven Heinrich - * - JD Isaacks - * - Raphael Amorim - * - Jorge Y. Castillo - * - Víctor Díaz - * - Diego - * - Sebastian Thierer - * - quinterocesar - * - Daniel Commesse Liévanos (danielcommesse) - * - Pete Scopes (pdscopes) - * - gam04 - */ - -use Carbon\CarbonInterface; - -return [ - 'year' => ':count año|:count años', - 'a_year' => 'un año|:count años', - 'y' => ':count año|:count años', - 'month' => ':count mes|:count meses', - 'a_month' => 'un mes|:count meses', - 'm' => ':count mes|:count meses', - 'week' => ':count semana|:count semanas', - 'a_week' => 'una semana|:count semanas', - 'w' => ':countsem', - 'day' => ':count día|:count días', - 'a_day' => 'un día|:count días', - 'd' => ':countd', - 'hour' => ':count hora|:count horas', - 'a_hour' => 'una hora|:count horas', - 'h' => ':counth', - 'minute' => ':count minuto|:count minutos', - 'a_minute' => 'un minuto|:count minutos', - 'min' => ':countm', - 'second' => ':count segundo|:count segundos', - 'a_second' => 'unos segundos|:count segundos', - 's' => ':counts', - 'millisecond' => ':count milisegundo|:count milisegundos', - 'a_millisecond' => 'un milisegundo|:count milisegundos', - 'ms' => ':countms', - 'microsecond' => ':count microsegundo|:count microsegundos', - 'a_microsecond' => 'un microsegundo|:count microsegundos', - 'µs' => ':countµs', - 'ago' => 'hace :time', - 'from_now' => 'en :time', - 'after' => ':time después', - 'before' => ':time antes', - 'diff_now' => 'ahora mismo', - 'diff_today' => 'hoy', - 'diff_today_regexp' => 'hoy(?:\\s+a)?(?:\\s+las)?', - 'diff_yesterday' => 'ayer', - 'diff_yesterday_regexp' => 'ayer(?:\\s+a)?(?:\\s+las)?', - 'diff_tomorrow' => 'mañana', - 'diff_tomorrow_regexp' => 'mañana(?:\\s+a)?(?:\\s+las)?', - 'diff_before_yesterday' => 'anteayer', - 'diff_after_tomorrow' => 'pasado mañana', - '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', - ], - 'calendar' => [ - 'sameDay' => function (CarbonInterface $current) { - return '[hoy a la'.($current->hour !== 1 ? 's' : '').'] LT'; - }, - 'nextDay' => function (CarbonInterface $current) { - return '[mañana a la'.($current->hour !== 1 ? 's' : '').'] LT'; - }, - 'nextWeek' => function (CarbonInterface $current) { - return 'dddd [a la'.($current->hour !== 1 ? 's' : '').'] LT'; - }, - 'lastDay' => function (CarbonInterface $current) { - return '[ayer a la'.($current->hour !== 1 ? 's' : '').'] LT'; - }, - 'lastWeek' => function (CarbonInterface $current) { - return '[el] dddd [pasado a la'.($current->hour !== 1 ? 's' : '').'] LT'; - }, - 'sameElse' => 'L', - ], - 'months' => ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'], - 'months_short' => ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'], - 'mmm_suffix' => '.', - 'ordinal' => ':numberº', - 'weekdays' => ['domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado'], - 'weekdays_short' => ['dom.', 'lun.', 'mar.', 'mié.', 'jue.', 'vie.', 'sáb.'], - 'weekdays_min' => ['do', 'lu', 'ma', 'mi', 'ju', 'vi', 'sá'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' y '], - 'meridiem' => ['a. m.', 'p. m.'], - 'ordinal_words' => [ - 'of' => 'de', - 'first' => 'primer', - 'second' => 'segundo', - 'third' => 'tercer', - 'fourth' => 'cuarto', - 'fifth' => 'quinto', - 'last' => 'último', - ], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_419.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_419.php deleted file mode 100644 index a74806e8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_419.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_AR.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_AR.php deleted file mode 100644 index a74806e8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_AR.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_BO.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_BO.php deleted file mode 100644 index c9b8432e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_BO.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_BR.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_BR.php deleted file mode 100644 index 378d0547..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_BR.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 0, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_BZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_BZ.php deleted file mode 100644 index 378d0547..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_BZ.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 0, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_CL.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_CL.php deleted file mode 100644 index a74806e8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_CL.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_CO.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_CO.php deleted file mode 100644 index a74806e8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_CO.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_CR.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_CR.php deleted file mode 100644 index 553fc09f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_CR.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Free Software Foundation, Inc. bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_CU.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_CU.php deleted file mode 100644 index f02e1a66..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_CU.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_DO.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_DO.php deleted file mode 100644 index 0f855bac..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_DO.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - kostas - * - François B - * - Tim Fish - * - Chiel Robben - * - Claire Coloma - * - Steven Heinrich - * - JD Isaacks - * - Raphael Amorim - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'diff_before_yesterday' => 'anteayer', - 'formats' => [ - 'LT' => 'h:mm A', - 'LTS' => 'h:mm:ss A', - 'LLL' => 'D [de] MMMM [de] YYYY h:mm A', - 'LLLL' => 'dddd, D [de] MMMM [de] YYYY h:mm A', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_EA.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_EA.php deleted file mode 100644 index f02e1a66..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_EA.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_EC.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_EC.php deleted file mode 100644 index a74806e8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_EC.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_ES.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_ES.php deleted file mode 100644 index 19217c27..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_ES.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return require __DIR__.'/es.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_GQ.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_GQ.php deleted file mode 100644 index f02e1a66..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_GQ.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_GT.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_GT.php deleted file mode 100644 index a74806e8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_GT.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_HN.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_HN.php deleted file mode 100644 index a74806e8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_HN.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_IC.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_IC.php deleted file mode 100644 index f02e1a66..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_IC.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_MX.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_MX.php deleted file mode 100644 index 61e14cfa..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_MX.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'diff_before_yesterday' => 'antier', - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_NI.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_NI.php deleted file mode 100644 index 6b964c14..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_NI.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Free Software Foundation, Inc. bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_PA.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_PA.php deleted file mode 100644 index a74806e8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_PA.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_PE.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_PE.php deleted file mode 100644 index a74806e8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_PE.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_PH.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_PH.php deleted file mode 100644 index deae06a1..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_PH.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 0, - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'D/M/yy', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D [de] MMMM [de] YYYY h:mm a', - 'LLLL' => 'dddd, D [de] MMMM [de] YYYY h:mm a', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_PR.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_PR.php deleted file mode 100644 index 6b964c14..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_PR.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Free Software Foundation, Inc. bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_PY.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_PY.php deleted file mode 100644 index a74806e8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_PY.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_SV.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_SV.php deleted file mode 100644 index 00db08e2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_SV.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'months' => ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'], - 'months_short' => ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'], - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_US.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_US.php deleted file mode 100644 index f333136f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_US.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Kunal Marwaha - * - Josh Soref - * - Jørn Ølmheim - * - Craig Patik - * - bustta - * - François B - * - Tim Fish - * - Claire Coloma - * - Steven Heinrich - * - JD Isaacks - * - Raphael Amorim - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'diff_before_yesterday' => 'anteayer', - 'formats' => [ - 'LT' => 'h:mm A', - 'LTS' => 'h:mm:ss A', - 'L' => 'MM/DD/YYYY', - 'LL' => 'MMMM [de] D [de] YYYY', - 'LLL' => 'MMMM [de] D [de] YYYY h:mm A', - 'LLLL' => 'dddd, MMMM [de] D [de] YYYY h:mm A', - ], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_UY.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_UY.php deleted file mode 100644 index 39baff8b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_UY.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'months' => ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'setiembre', 'octubre', 'noviembre', 'diciembre'], - 'months_short' => ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'set', 'oct', 'nov', 'dic'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/es_VE.php b/vendor/nesbot/carbon/src/Carbon/Lang/es_VE.php deleted file mode 100644 index a74806e8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/es_VE.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/es.php', [ - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/et.php b/vendor/nesbot/carbon/src/Carbon/Lang/et.php deleted file mode 100644 index f49c8806..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/et.php +++ /dev/null @@ -1,93 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Philippe Vaucher - * - Andres Ivanov - * - Tsutomu Kuroda - * - tjku - * - Max Melentiev - * - Juanito Fatas - * - RM87 - * - Akira Matsuda - * - Christopher Dell - * - Enrique Vidal - * - Simone Carletti - * - Aaron Patterson - * - Esko Lehtme - * - Mart Karu - * - Nicolás Hock Isaza - * - Kevin Valdek - * - Zahhar Kirillov - * - João Magalhães - * - Ingmar - * - Illimar Tambek - * - Mihkel - */ -return [ - 'year' => ':count aasta|:count aastat', - 'y' => ':count a', - 'month' => ':count kuu|:count kuud', - 'm' => ':count k', - 'week' => ':count nädal|:count nädalat', - 'w' => ':count näd', - 'day' => ':count päev|:count päeva', - 'd' => ':count p', - 'hour' => ':count tund|:count tundi', - 'h' => ':count t', - 'minute' => ':count minut|:count minutit', - 'min' => ':count min', - 'second' => ':count sekund|:count sekundit', - 's' => ':count s', - 'ago' => ':time tagasi', - 'from_now' => ':time pärast', - 'after' => ':time pärast', - 'before' => ':time enne', - 'year_from_now' => ':count aasta', - 'month_from_now' => ':count kuu', - 'week_from_now' => ':count nädala', - 'day_from_now' => ':count päeva', - 'hour_from_now' => ':count tunni', - 'minute_from_now' => ':count minuti', - 'second_from_now' => ':count sekundi', - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'diff_now' => 'nüüd', - 'diff_today' => 'täna', - 'diff_yesterday' => 'eile', - 'diff_tomorrow' => 'homme', - 'diff_before_yesterday' => 'üleeile', - 'diff_after_tomorrow' => 'ülehomme', - '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', - ], - 'calendar' => [ - 'sameDay' => '[täna] LT', - 'nextDay' => '[homme] LT', - 'lastDay' => '[eile] LT', - 'nextWeek' => 'dddd LT', - 'lastWeek' => '[eelmine] dddd LT', - 'sameElse' => 'L', - ], - 'months' => ['jaanuar', 'veebruar', 'märts', 'aprill', 'mai', 'juuni', 'juuli', 'august', 'september', 'oktoober', 'november', 'detsember'], - 'months_short' => ['jaan', 'veebr', 'märts', 'apr', 'mai', 'juuni', 'juuli', 'aug', 'sept', 'okt', 'nov', 'dets'], - 'weekdays' => ['pühapäev', 'esmaspäev', 'teisipäev', 'kolmapäev', 'neljapäev', 'reede', 'laupäev'], - 'weekdays_short' => ['P', 'E', 'T', 'K', 'N', 'R', 'L'], - 'weekdays_min' => ['P', 'E', 'T', 'K', 'N', 'R', 'L'], - 'list' => [', ', ' ja '], - 'meridiem' => ['enne lõunat', 'pärast lõunat'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/et_EE.php b/vendor/nesbot/carbon/src/Carbon/Lang/et_EE.php deleted file mode 100644 index 0f112b34..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/et_EE.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/et.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/eu.php b/vendor/nesbot/carbon/src/Carbon/Lang/eu.php deleted file mode 100644 index a543f1a6..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/eu.php +++ /dev/null @@ -1,67 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - François B - * - JD Isaacks - */ -return [ - 'year' => 'urte bat|:count urte', - 'y' => 'Urte 1|:count urte', - 'month' => 'hilabete bat|:count hilabete', - 'm' => 'Hile 1|:count hile', - 'week' => 'Aste 1|:count aste', - 'w' => 'Aste 1|:count aste', - 'day' => 'egun bat|:count egun', - 'd' => 'Egun 1|:count egun', - 'hour' => 'ordu bat|:count ordu', - 'h' => 'Ordu 1|:count ordu', - 'minute' => 'minutu bat|:count minutu', - 'min' => 'Minutu 1|:count minutu', - 'second' => 'segundo batzuk|:count segundo', - 's' => 'Segundu 1|:count segundu', - 'ago' => 'duela :time', - 'from_now' => ':time barru', - 'after' => ':time geroago', - 'before' => ':time lehenago', - 'diff_now' => 'orain', - 'diff_today' => 'gaur', - 'diff_yesterday' => 'atzo', - 'diff_tomorrow' => 'bihar', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY-MM-DD', - 'LL' => 'YYYY[ko] MMMM[ren] D[a]', - 'LLL' => 'YYYY[ko] MMMM[ren] D[a] HH:mm', - 'LLLL' => 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[gaur] LT[etan]', - 'nextDay' => '[bihar] LT[etan]', - 'nextWeek' => 'dddd LT[etan]', - 'lastDay' => '[atzo] LT[etan]', - 'lastWeek' => '[aurreko] dddd LT[etan]', - 'sameElse' => 'L', - ], - 'ordinal' => ':number.', - 'months' => ['urtarrila', 'otsaila', 'martxoa', 'apirila', 'maiatza', 'ekaina', 'uztaila', 'abuztua', 'iraila', 'urria', 'azaroa', 'abendua'], - 'months_short' => ['urt.', 'ots.', 'mar.', 'api.', 'mai.', 'eka.', 'uzt.', 'abu.', 'ira.', 'urr.', 'aza.', 'abe.'], - 'weekdays' => ['igandea', 'astelehena', 'asteartea', 'asteazkena', 'osteguna', 'ostirala', 'larunbata'], - 'weekdays_short' => ['ig.', 'al.', 'ar.', 'az.', 'og.', 'ol.', 'lr.'], - 'weekdays_min' => ['ig', 'al', 'ar', 'az', 'og', 'ol', 'lr'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' eta '], - 'meridiem' => ['g', 'a'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/eu_ES.php b/vendor/nesbot/carbon/src/Carbon/Lang/eu_ES.php deleted file mode 100644 index 0d1e82a9..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/eu_ES.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/eu.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ewo.php b/vendor/nesbot/carbon/src/Carbon/Lang/ewo.php deleted file mode 100644 index 7808ab50..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ewo.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['kíkíríg', 'ngəgógəle'], - 'weekdays' => ['sɔ́ndɔ', 'mɔ́ndi', 'sɔ́ndɔ məlú mə́bɛ̌', 'sɔ́ndɔ məlú mə́lɛ́', 'sɔ́ndɔ məlú mə́nyi', 'fúladé', 'séradé'], - 'weekdays_short' => ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'fúl', 'sér'], - 'weekdays_min' => ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'fúl', 'sér'], - 'months' => ['ngɔn osú', 'ngɔn bɛ̌', 'ngɔn lála', 'ngɔn nyina', 'ngɔn tána', 'ngɔn saməna', 'ngɔn zamgbála', 'ngɔn mwom', 'ngɔn ebulú', 'ngɔn awóm', 'ngɔn awóm ai dziá', 'ngɔn awóm ai bɛ̌'], - 'months_short' => ['ngo', 'ngb', 'ngl', 'ngn', 'ngt', 'ngs', 'ngz', 'ngm', 'nge', 'nga', 'ngad', 'ngab'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - - // Too unreliable - /* - 'year' => ':count mbu', // less reliable - 'y' => ':count mbu', // less reliable - 'a_year' => ':count mbu', // less reliable - - 'month' => ':count ngòn', // less reliable - 'm' => ':count ngòn', // less reliable - 'a_month' => ':count ngòn', // less reliable - - 'week' => ':count mësë', // less reliable - 'w' => ':count mësë', // less reliable - 'a_week' => ':count mësë', // less reliable - - 'day' => ':count mësë', // less reliable - 'd' => ':count mësë', // less reliable - 'a_day' => ':count mësë', // less reliable - - 'hour' => ':count awola', // less reliable - 'h' => ':count awola', // less reliable - 'a_hour' => ':count awola', // less reliable - - 'minute' => ':count awola', // less reliable - 'min' => ':count awola', // less reliable - 'a_minute' => ':count awola', // less reliable - */ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fa.php b/vendor/nesbot/carbon/src/Carbon/Lang/fa.php deleted file mode 100644 index 72e03085..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fa.php +++ /dev/null @@ -1,84 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - François B - * - Nasser Ghiasi - * - JD Isaacks - * - Hossein Jabbari - * - nimamo - * - hafezdivandari - * - Hassan Pezeshk (hpez) - */ -return [ - 'year' => ':count سال', - 'a_year' => 'یک سال'.'|:count '.'سال', - 'y' => ':count سال', - 'month' => ':count ماه', - 'a_month' => 'یک ماه'.'|:count '.'ماه', - 'm' => ':count ماه', - 'week' => ':count هفته', - 'a_week' => 'یک هفته'.'|:count '.'هفته', - 'w' => ':count هفته', - 'day' => ':count روز', - 'a_day' => 'یک روز'.'|:count '.'روز', - 'd' => ':count روز', - 'hour' => ':count ساعت', - 'a_hour' => 'یک ساعت'.'|:count '.'ساعت', - 'h' => ':count ساعت', - 'minute' => ':count دقیقه', - 'a_minute' => 'یک دقیقه'.'|:count '.'دقیقه', - 'min' => ':count دقیقه', - 'second' => ':count ثانیه', - 's' => ':count ثانیه', - 'ago' => ':time پیش', - 'from_now' => ':time دیگر', - 'after' => ':time پس از', - 'before' => ':time پیش از', - 'diff_now' => 'اکنون', - 'diff_today' => 'امروز', - 'diff_today_regexp' => 'امروز(?:\\s+ساعت)?', - 'diff_yesterday' => 'دیروز', - 'diff_yesterday_regexp' => 'دیروز(?:\\s+ساعت)?', - 'diff_tomorrow' => 'فردا', - 'diff_tomorrow_regexp' => 'فردا(?:\\s+ساعت)?', - 'formats' => [ - 'LT' => 'OH:Om', - 'LTS' => 'OH:Om:Os', - 'L' => 'OD/OM/OY', - 'LL' => 'OD MMMM OY', - 'LLL' => 'OD MMMM OY OH:Om', - 'LLLL' => 'dddd, OD MMMM OY OH:Om', - ], - 'calendar' => [ - 'sameDay' => '[امروز ساعت] LT', - 'nextDay' => '[فردا ساعت] LT', - 'nextWeek' => 'dddd [ساعت] LT', - 'lastDay' => '[دیروز ساعت] LT', - 'lastWeek' => 'dddd [پیش] [ساعت] LT', - 'sameElse' => 'L', - ], - 'ordinal' => ':timeم', - 'meridiem' => ['قبل از ظهر', 'بعد از ظهر'], - 'months' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'], - 'months_short' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'], - 'weekdays' => ['یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'], - 'weekdays_short' => ['یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'], - 'weekdays_min' => ['ی', 'د', 'س', 'چ', 'پ', 'ج', 'ش'], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'list' => ['، ', ' و '], - 'alt_numbers' => ['۰۰', '۰۱', '۰۲', '۰۳', '۰۴', '۰۵', '۰۶', '۰۷', '۰۸', '۰۹', '۱۰', '۱۱', '۱۲', '۱۳', '۱۴', '۱۵', '۱۶', '۱۷', '۱۸', '۱۹', '۲۰', '۲۱', '۲۲', '۲۳', '۲۴', '۲۵', '۲۶', '۲۷', '۲۸', '۲۹', '۳۰', '۳۱', '۳۲', '۳۳', '۳۴', '۳۵', '۳۶', '۳۷', '۳۸', '۳۹', '۴۰', '۴۱', '۴۲', '۴۳', '۴۴', '۴۵', '۴۶', '۴۷', '۴۸', '۴۹', '۵۰', '۵۱', '۵۲', '۵۳', '۵۴', '۵۵', '۵۶', '۵۷', '۵۸', '۵۹', '۶۰', '۶۱', '۶۲', '۶۳', '۶۴', '۶۵', '۶۶', '۶۷', '۶۸', '۶۹', '۷۰', '۷۱', '۷۲', '۷۳', '۷۴', '۷۵', '۷۶', '۷۷', '۷۸', '۷۹', '۸۰', '۸۱', '۸۲', '۸۳', '۸۴', '۸۵', '۸۶', '۸۷', '۸۸', '۸۹', '۹۰', '۹۱', '۹۲', '۹۳', '۹۴', '۹۵', '۹۶', '۹۷', '۹۸', '۹۹'], - 'months_short_standalone' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'], - 'weekend' => [5, 5], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fa_AF.php b/vendor/nesbot/carbon/src/Carbon/Lang/fa_AF.php deleted file mode 100644 index 69471004..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fa_AF.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/fa.php', [ - 'meridiem' => ['ق', 'ب'], - 'weekend' => [4, 5], - 'formats' => [ - 'L' => 'OY/OM/OD', - 'LL' => 'OD MMM OY', - 'LLL' => 'OD MMMM OY،‏ H:mm', - 'LLLL' => 'dddd OD MMMM OY،‏ H:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fa_IR.php b/vendor/nesbot/carbon/src/Carbon/Lang/fa_IR.php deleted file mode 100644 index 08d01825..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fa_IR.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fa.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ff.php b/vendor/nesbot/carbon/src/Carbon/Lang/ff.php deleted file mode 100644 index 9525c95a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ff.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM, YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - 'months' => ['siilo', 'colte', 'mbooy', 'seeɗto', 'duujal', 'korse', 'morso', 'juko', 'siilto', 'yarkomaa', 'jolal', 'bowte'], - 'months_short' => ['sii', 'col', 'mbo', 'see', 'duu', 'kor', 'mor', 'juk', 'slt', 'yar', 'jol', 'bow'], - 'weekdays' => ['dewo', 'aaɓnde', 'mawbaare', 'njeslaare', 'naasaande', 'mawnde', 'hoore-biir'], - 'weekdays_short' => ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - 'weekdays_min' => ['dew', 'aaɓ', 'maw', 'nje', 'naa', 'mwd', 'hbi'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['subaka', 'kikiiɗe'], - - 'year' => ':count baret', // less reliable - 'y' => ':count baret', // less reliable - 'a_year' => ':count baret', // less reliable - - 'month' => ':count lewru', // less reliable - 'm' => ':count lewru', // less reliable - 'a_month' => ':count lewru', // less reliable - - 'week' => ':count naange', // less reliable - 'w' => ':count naange', // less reliable - 'a_week' => ':count naange', // less reliable - - 'day' => ':count dian', // less reliable - 'd' => ':count dian', // less reliable - 'a_day' => ':count dian', // less reliable - - 'hour' => ':count montor', // less reliable - 'h' => ':count montor', // less reliable - 'a_hour' => ':count montor', // less reliable - - 'minute' => ':count tokossuoum', // less reliable - 'min' => ':count tokossuoum', // less reliable - 'a_minute' => ':count tokossuoum', // less reliable - - 'second' => ':count tenen', // less reliable - 's' => ':count tenen', // less reliable - 'a_second' => ':count tenen', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ff_CM.php b/vendor/nesbot/carbon/src/Carbon/Lang/ff_CM.php deleted file mode 100644 index b797ac09..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ff_CM.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ff.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ff_GN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ff_GN.php deleted file mode 100644 index b797ac09..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ff_GN.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ff.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ff_MR.php b/vendor/nesbot/carbon/src/Carbon/Lang/ff_MR.php deleted file mode 100644 index 2f4c29f6..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ff_MR.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ff.php', [ - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM, YYYY', - 'LLL' => 'D MMMM YYYY h:mm a', - 'LLLL' => 'dddd D MMMM YYYY h:mm a', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ff_SN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ff_SN.php deleted file mode 100644 index 1e4c8b6c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ff_SN.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Pular-Fulfulde.org Ibrahima Sarr admin@pulaar-fulfulde.org - */ -return require __DIR__.'/ff.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fi.php b/vendor/nesbot/carbon/src/Carbon/Lang/fi.php deleted file mode 100644 index edf2d6d3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fi.php +++ /dev/null @@ -1,88 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Philippe Vaucher - * - Janne Warén - * - digitalfrost - * - Tsutomu Kuroda - * - Roope Salmi - * - tjku - * - Max Melentiev - * - Sami Haahtinen - * - Teemu Leisti - * - Artem Ignatyev - * - Akira Matsuda - * - Christopher Dell - * - Enrique Vidal - * - Simone Carletti - * - Robert Bjarnason - * - Aaron Patterson - * - Nicolás Hock Isaza - * - Tom Hughes - * - Sven Fuchs - * - Petri Kivikangas - * - Nizar Jouini - * - Marko Seppae - * - Tomi Mynttinen (Pikseli) - * - Petteri (powergrip) - */ -return [ - 'year' => ':count vuosi|:count vuotta', - 'y' => ':count v', - 'month' => ':count kuukausi|:count kuukautta', - 'm' => ':count kk', - 'week' => ':count viikko|:count viikkoa', - 'w' => ':count vk', - 'day' => ':count päivä|:count päivää', - 'd' => ':count pv', - 'hour' => ':count tunti|:count tuntia', - 'h' => ':count t', - 'minute' => ':count minuutti|:count minuuttia', - 'min' => ':count min', - 'second' => ':count sekunti|:count sekuntia', - 'a_second' => 'muutama sekunti|:count sekuntia', - 's' => ':count s', - 'ago' => ':time sitten', - 'from_now' => ':time päästä', - 'year_from_now' => ':count vuoden', - 'month_from_now' => ':count kuukauden', - 'week_from_now' => ':count viikon', - 'day_from_now' => ':count päivän', - 'hour_from_now' => ':count tunnin', - 'minute_from_now' => ':count minuutin', - 'second_from_now' => ':count sekunnin', - 'after' => ':time sen jälkeen', - 'before' => ':time ennen', - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' ja '], - 'diff_now' => 'nyt', - 'diff_yesterday' => 'eilen', - 'diff_tomorrow' => 'huomenna', - 'formats' => [ - 'LT' => 'HH.mm', - 'LTS' => 'HH.mm:ss', - 'L' => 'D.M.YYYY', - 'LL' => 'dddd D. MMMM[ta] YYYY', - 'll' => 'ddd D. MMM YYYY', - 'LLL' => 'D.MM. HH.mm', - 'LLLL' => 'D. MMMM[ta] YYYY HH.mm', - 'llll' => 'D. MMM YY HH.mm', - ], - 'weekdays' => ['sunnuntai', 'maanantai', 'tiistai', 'keskiviikko', 'torstai', 'perjantai', 'lauantai'], - 'weekdays_short' => ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'], - 'weekdays_min' => ['su', 'ma', 'ti', 'ke', 'to', 'pe', 'la'], - 'months' => ['tammikuu', 'helmikuu', 'maaliskuu', 'huhtikuu', 'toukokuu', 'kesäkuu', 'heinäkuu', 'elokuu', 'syyskuu', 'lokakuu', 'marraskuu', 'joulukuu'], - 'months_short' => ['tammi', 'helmi', 'maalis', 'huhti', 'touko', 'kesä', 'heinä', 'elo', 'syys', 'loka', 'marras', 'joulu'], - 'meridiem' => ['aamupäivä', 'iltapäivä'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fi_FI.php b/vendor/nesbot/carbon/src/Carbon/Lang/fi_FI.php deleted file mode 100644 index 920f1caa..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fi_FI.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fi.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fil.php b/vendor/nesbot/carbon/src/Carbon/Lang/fil.php deleted file mode 100644 index 61114e3a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fil.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/fil_PH.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fil_PH.php b/vendor/nesbot/carbon/src/Carbon/Lang/fil_PH.php deleted file mode 100644 index bcf15807..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fil_PH.php +++ /dev/null @@ -1,62 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Rene Torres Rene Torres, Pablo Saratxaga rgtorre@rocketmail.com, pablo@mandrakesoft.com - * - Jaycee Mariano (alohajaycee) - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'MM/DD/YY', - ], - 'months' => ['Enero', 'Pebrero', 'Marso', 'Abril', 'Mayo', 'Hunyo', 'Hulyo', 'Agosto', 'Setyembre', 'Oktubre', 'Nobyembre', 'Disyembre'], - 'months_short' => ['Ene', 'Peb', 'Mar', 'Abr', 'May', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'], - 'weekdays' => ['Linggo', 'Lunes', 'Martes', 'Miyerkoles', 'Huwebes', 'Biyernes', 'Sabado'], - 'weekdays_short' => ['Lin', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'], - 'weekdays_min' => ['Lin', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['N.U.', 'N.H.'], - - 'before' => ':time bago', - 'after' => ':time pagkatapos', - - 'year' => ':count taon', - 'y' => ':count taon', - 'a_year' => ':count taon', - - 'month' => ':count buwan', - 'm' => ':count buwan', - 'a_month' => ':count buwan', - - 'week' => ':count linggo', - 'w' => ':count linggo', - 'a_week' => ':count linggo', - - 'day' => ':count araw', - 'd' => ':count araw', - 'a_day' => ':count araw', - - 'hour' => ':count oras', - 'h' => ':count oras', - 'a_hour' => ':count oras', - - 'minute' => ':count minuto', - 'min' => ':count minuto', - 'a_minute' => ':count minuto', - - 'second' => ':count segundo', - 's' => ':count segundo', - 'a_second' => ':count segundo', - - 'ago' => ':time ang nakalipas', - 'from_now' => 'sa :time', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fo.php b/vendor/nesbot/carbon/src/Carbon/Lang/fo.php deleted file mode 100644 index 6a14a6fb..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fo.php +++ /dev/null @@ -1,69 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Kristian Sakarisson - * - François B - * - JD Isaacks - * - Sverri Mohr Olsen - */ -return [ - 'year' => 'eitt ár|:count ár', - 'y' => ':count ár|:count ár', - 'month' => 'ein mánaði|:count mánaðir', - 'm' => ':count mánaður|:count mánaðir', - 'week' => ':count vika|:count vikur', - 'w' => ':count vika|:count vikur', - 'day' => 'ein dagur|:count dagar', - 'd' => ':count dag|:count dagar', - 'hour' => 'ein tími|:count tímar', - 'h' => ':count tími|:count tímar', - 'minute' => 'ein minutt|:count minuttir', - 'min' => ':count minutt|:count minuttir', - 'second' => 'fá sekund|:count sekundir', - 's' => ':count sekund|:count sekundir', - 'ago' => ':time síðani', - 'from_now' => 'um :time', - 'after' => ':time aftaná', - 'before' => ':time áðrenn', - 'diff_today' => 'Í', - 'diff_yesterday' => 'Í', - 'diff_yesterday_regexp' => 'Í(?:\\s+gjár)?(?:\\s+kl.)?', - 'diff_tomorrow' => 'Í', - 'diff_tomorrow_regexp' => 'Í(?:\\s+morgin)?(?:\\s+kl.)?', - 'diff_today_regexp' => 'Í(?:\\s+dag)?(?:\\s+kl.)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Í dag kl.] LT', - 'nextDay' => '[Í morgin kl.] LT', - 'nextWeek' => 'dddd [kl.] LT', - 'lastDay' => '[Í gjár kl.] LT', - 'lastWeek' => '[síðstu] dddd [kl] LT', - 'sameElse' => 'L', - ], - 'ordinal' => ':number.', - 'months' => ['januar', 'februar', 'mars', 'apríl', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'], - 'months_short' => ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'], - 'weekdays' => ['sunnudagur', 'mánadagur', 'týsdagur', 'mikudagur', 'hósdagur', 'fríggjadagur', 'leygardagur'], - 'weekdays_short' => ['sun', 'mán', 'týs', 'mik', 'hós', 'frí', 'ley'], - 'weekdays_min' => ['su', 'má', 'tý', 'mi', 'hó', 'fr', 'le'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' og '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fo_DK.php b/vendor/nesbot/carbon/src/Carbon/Lang/fo_DK.php deleted file mode 100644 index 657f2c5b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fo_DK.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/fo.php', [ - 'formats' => [ - 'L' => 'DD.MM.yy', - 'LL' => 'DD.MM.YYYY', - 'LLL' => 'D. MMMM YYYY, HH:mm', - 'LLLL' => 'dddd, D. MMMM YYYY, HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fo_FO.php b/vendor/nesbot/carbon/src/Carbon/Lang/fo_FO.php deleted file mode 100644 index 6d736167..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fo_FO.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fo.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr.php deleted file mode 100644 index f4c7247b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr.php +++ /dev/null @@ -1,123 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Dieter Sting - * - François B - * - Maxime VALY - * - JD Isaacks - * - Dieter Sting - * - François B - * - JD Isaacks - * - Sebastian Thierer - * - Fastfuel - * - Pete Scopes (pdscopes) - */ -return [ - 'year' => ':count an|:count ans', - 'a_year' => 'un an|:count ans', - 'y' => ':count an|:count ans', - 'month' => ':count mois|:count mois', - 'a_month' => 'un mois|:count mois', - 'm' => ':count mois', - 'week' => ':count semaine|:count semaines', - 'a_week' => 'une semaine|:count semaines', - 'w' => ':count sem.', - 'day' => ':count jour|:count jours', - 'a_day' => 'un jour|:count jours', - 'd' => ':count j', - 'hour' => ':count heure|:count heures', - 'a_hour' => 'une heure|:count heures', - 'h' => ':count h', - 'minute' => ':count minute|:count minutes', - 'a_minute' => 'une minute|:count minutes', - 'min' => ':count min', - 'second' => ':count seconde|:count secondes', - 'a_second' => 'quelques secondes|:count secondes', - 's' => ':count s', - 'millisecond' => ':count milliseconde|:count millisecondes', - 'a_millisecond' => 'une milliseconde|:count millisecondes', - 'ms' => ':countms', - 'microsecond' => ':count microseconde|:count microsecondes', - 'a_microsecond' => 'une microseconde|:count microsecondes', - 'µs' => ':countµs', - 'ago' => 'il y a :time', - 'from_now' => 'dans :time', - 'after' => ':time après', - 'before' => ':time avant', - 'diff_now' => "à l'instant", - 'diff_today' => "aujourd'hui", - 'diff_today_regexp' => "aujourd'hui(?:\s+à)?", - 'diff_yesterday' => 'hier', - 'diff_yesterday_regexp' => 'hier(?:\s+à)?', - 'diff_tomorrow' => 'demain', - 'diff_tomorrow_regexp' => 'demain(?:\s+à)?', - 'diff_before_yesterday' => 'avant-hier', - 'diff_after_tomorrow' => 'après-demain', - 'period_recurrences' => ':count fois', - 'period_interval' => 'tous les :interval', - 'period_start_date' => 'de :date', - 'period_end_date' => 'à :date', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Aujourd’hui à] LT', - 'nextDay' => '[Demain à] LT', - 'nextWeek' => 'dddd [à] LT', - 'lastDay' => '[Hier à] LT', - 'lastWeek' => 'dddd [dernier à] LT', - 'sameElse' => 'L', - ], - 'months' => ['janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre'], - 'months_short' => ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'], - 'weekdays' => ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'], - 'weekdays_short' => ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'], - 'weekdays_min' => ['di', 'lu', 'ma', 'me', 'je', 've', 'sa'], - 'ordinal' => function ($number, $period) { - switch ($period) { - // In French, only the first has to be ordinal, other number remains cardinal - // @link https://fr.wikihow.com/%C3%A9crire-la-date-en-fran%C3%A7ais - case 'D': - return $number.($number === 1 ? 'er' : ''); - - default: - case 'M': - case 'Q': - case 'DDD': - case 'd': - return $number.($number === 1 ? 'er' : 'e'); - - // Words with feminine grammatical gender: semaine - case 'w': - case 'W': - return $number.($number === 1 ? 're' : 'e'); - } - }, - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' et '], - 'ordinal_words' => [ - 'of' => 'de', - 'first' => 'premier', - 'second' => 'deuxième', - 'third' => 'troisième', - 'fourth' => 'quatrième', - 'fifth' => 'cinquième', - 'last' => 'dernier', - ], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BE.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_BE.php deleted file mode 100644 index f6cafe87..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BE.php +++ /dev/null @@ -1,18 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/fr.php', [ - 'months_short' => ['jan', 'fév', 'mar', 'avr', 'mai', 'jun', 'jui', 'aoû', 'sep', 'oct', 'nov', 'déc'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BF.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_BF.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BF.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BI.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_BI.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BI.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_BJ.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BJ.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BL.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_BL.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_BL.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CA.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_CA.php deleted file mode 100644 index c9f6346f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CA.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Dieter Sting - * - François B - * - Maxime VALY - * - JD Isaacks - */ -return array_replace_recursive(require __DIR__.'/fr.php', [ - 'formats' => [ - 'L' => 'YYYY-MM-DD', - ], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CD.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_CD.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CD.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CF.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_CF.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CF.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CG.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_CG.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CG.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CH.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_CH.php deleted file mode 100644 index 8674c27d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CH.php +++ /dev/null @@ -1,24 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Dieter Sting - * - François B - * - Gaspard Bucher - * - Maxime VALY - * - JD Isaacks - */ -return array_replace_recursive(require __DIR__.'/fr.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CI.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_CI.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CI.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CM.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_CM.php deleted file mode 100644 index 67d37878..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_CM.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/fr.php', [ - 'meridiem' => ['mat.', 'soir'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_DJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_DJ.php deleted file mode 100644 index 2f060869..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_DJ.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/fr.php', [ - 'first_day_of_week' => 6, - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY h:mm a', - 'LLLL' => 'dddd D MMMM YYYY h:mm a', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_DZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_DZ.php deleted file mode 100644 index ae8db5fa..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_DZ.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/fr.php', [ - 'first_day_of_week' => 6, - 'weekend' => [5, 6], - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY h:mm a', - 'LLLL' => 'dddd D MMMM YYYY h:mm a', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_FR.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_FR.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_FR.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GA.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_GA.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GA.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GF.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_GF.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GF.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GN.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_GN.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GN.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GP.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_GP.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GP.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GQ.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_GQ.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_GQ.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_HT.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_HT.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_HT.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_KM.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_KM.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_KM.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_LU.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_LU.php deleted file mode 100644 index 8e37d852..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_LU.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/fr.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], - 'months_short' => ['jan', 'fév', 'mar', 'avr', 'mai', 'jun', 'jui', 'aoû', 'sep', 'oct', 'nov', 'déc'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MA.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_MA.php deleted file mode 100644 index 1bf034dc..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MA.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/fr.php', [ - 'first_day_of_week' => 6, - 'weekend' => [5, 6], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MC.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_MC.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MC.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MF.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_MF.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MF.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MG.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_MG.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MG.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_ML.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_ML.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_ML.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MQ.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_MQ.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MQ.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MR.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_MR.php deleted file mode 100644 index 37cf83f0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MR.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/fr.php', [ - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY h:mm a', - 'LLLL' => 'dddd D MMMM YYYY h:mm a', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MU.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_MU.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_MU.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_NC.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_NC.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_NC.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_NE.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_NE.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_NE.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_PF.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_PF.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_PF.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_PM.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_PM.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_PM.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_RE.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_RE.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_RE.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_RW.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_RW.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_RW.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_SC.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_SC.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_SC.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_SN.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_SN.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_SN.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_SY.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_SY.php deleted file mode 100644 index ae8db5fa..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_SY.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/fr.php', [ - 'first_day_of_week' => 6, - 'weekend' => [5, 6], - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY h:mm a', - 'LLLL' => 'dddd D MMMM YYYY h:mm a', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_TD.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_TD.php deleted file mode 100644 index 37cf83f0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_TD.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/fr.php', [ - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY h:mm a', - 'LLLL' => 'dddd D MMMM YYYY h:mm a', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_TG.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_TG.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_TG.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_TN.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_TN.php deleted file mode 100644 index 6905e7a8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_TN.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/fr.php', [ - 'weekend' => [5, 6], - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY h:mm a', - 'LLLL' => 'dddd D MMMM YYYY h:mm a', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_VU.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_VU.php deleted file mode 100644 index 37cf83f0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_VU.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/fr.php', [ - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY h:mm a', - 'LLLL' => 'dddd D MMMM YYYY h:mm a', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_WF.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_WF.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_WF.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fr_YT.php b/vendor/nesbot/carbon/src/Carbon/Lang/fr_YT.php deleted file mode 100644 index ec3ee359..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fr_YT.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/fr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fur.php b/vendor/nesbot/carbon/src/Carbon/Lang/fur.php deleted file mode 100644 index 36c2564f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fur.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/fur_IT.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fur_IT.php b/vendor/nesbot/carbon/src/Carbon/Lang/fur_IT.php deleted file mode 100644 index 0147a596..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fur_IT.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Pablo Saratxaga pablo@mandrakesoft.com - */ -return [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD. MM. YY', - 'LL' => 'DD di MMMM dal YYYY', - 'LLL' => 'DD di MMM HH:mm', - 'LLLL' => 'DD di MMMM dal YYYY HH:mm', - ], - 'months' => ['zenâr', 'fevrâr', 'març', 'avrîl', 'mai', 'jugn', 'lui', 'avost', 'setembar', 'otubar', 'novembar', 'dicembar'], - 'months_short' => ['zen', 'fev', 'mar', 'avr', 'mai', 'jug', 'lui', 'avo', 'set', 'otu', 'nov', 'dic'], - 'weekdays' => ['domenie', 'lunis', 'martars', 'miercus', 'joibe', 'vinars', 'sabide'], - 'weekdays_short' => ['dom', 'lun', 'mar', 'mie', 'joi', 'vin', 'sab'], - 'weekdays_min' => ['dom', 'lun', 'mar', 'mie', 'joi', 'vin', 'sab'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'year' => ':count an', - 'month' => ':count mês', - 'week' => ':count setemane', - 'day' => ':count zornade', - 'hour' => ':count ore', - 'minute' => ':count minût', - 'second' => ':count secont', -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fy.php b/vendor/nesbot/carbon/src/Carbon/Lang/fy.php deleted file mode 100644 index c1b54397..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fy.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - Tim Fish - * - JD Isaacks - */ -return [ - 'year' => ':count jier|:count jierren', - 'a_year' => 'ien jier|:count jierren', - 'y' => ':count j', - 'month' => ':count moanne|:count moannen', - 'a_month' => 'ien moanne|:count moannen', - 'm' => ':count moa.', - 'week' => ':count wike|:count wiken', - 'a_week' => 'in wike|:count wiken', - 'a' => ':count w.', - 'day' => ':count dei|:count dagen', - 'a_day' => 'ien dei|:count dagen', - 'd' => ':count d.', - 'hour' => ':count oere|:count oeren', - 'a_hour' => 'ien oere|:count oeren', - 'h' => ':count o.', - 'minute' => ':count minút|:count minuten', - 'a_minute' => 'ien minút|:count minuten', - 'min' => ':count min.', - 'second' => ':count sekonde|:count sekonden', - 'a_second' => 'in pear sekonden|:count sekonden', - 's' => ':count s.', - 'ago' => ':time lyn', - 'from_now' => 'oer :time', - 'diff_yesterday' => 'juster', - 'diff_yesterday_regexp' => 'juster(?:\\s+om)?', - 'diff_today' => 'hjoed', - 'diff_today_regexp' => 'hjoed(?:\\s+om)?', - 'diff_tomorrow' => 'moarn', - 'diff_tomorrow_regexp' => 'moarn(?:\\s+om)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[hjoed om] LT', - 'nextDay' => '[moarn om] LT', - 'nextWeek' => 'dddd [om] LT', - 'lastDay' => '[juster om] LT', - 'lastWeek' => '[ôfrûne] dddd [om] LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number) { - return $number.(($number === 1 || $number === 8 || $number >= 20) ? 'ste' : 'de'); - }, - 'months' => ['jannewaris', 'febrewaris', 'maart', 'april', 'maaie', 'juny', 'july', 'augustus', 'septimber', 'oktober', 'novimber', 'desimber'], - 'months_short' => ['jan', 'feb', 'mrt', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'], - 'mmm_suffix' => '.', - 'weekdays' => ['snein', 'moandei', 'tiisdei', 'woansdei', 'tongersdei', 'freed', 'sneon'], - 'weekdays_short' => ['si.', 'mo.', 'ti.', 'wo.', 'to.', 'fr.', 'so.'], - 'weekdays_min' => ['Si', 'Mo', 'Ti', 'Wo', 'To', 'Fr', 'So'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' en '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fy_DE.php b/vendor/nesbot/carbon/src/Carbon/Lang/fy_DE.php deleted file mode 100644 index 8559d5c2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fy_DE.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - information from Kenneth Christiansen Kenneth Christiansen, Pablo Saratxaga kenneth@gnu.org, pablo@mandriva.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], - 'months' => ['Jaunuwoa', 'Februwoa', 'Moaz', 'Aprell', 'Mai', 'Juni', 'Juli', 'August', 'Septamba', 'Oktoba', 'Nowamba', 'Dezamba'], - 'months_short' => ['Jan', 'Feb', 'Moz', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Now', 'Dez'], - 'weekdays' => ['Sinndag', 'Mondag', 'Dingsdag', 'Meddwäakj', 'Donnadag', 'Friedag', 'Sinnowend'], - 'weekdays_short' => ['Sdg', 'Mdg', 'Dsg', 'Mwk', 'Ddg', 'Fdg', 'Swd'], - 'weekdays_min' => ['Sdg', 'Mdg', 'Dsg', 'Mwk', 'Ddg', 'Fdg', 'Swd'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/fy_NL.php b/vendor/nesbot/carbon/src/Carbon/Lang/fy_NL.php deleted file mode 100644 index 01cc96c3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/fy_NL.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Free Software Foundation, Inc. bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/fy.php', [ - 'formats' => [ - 'L' => 'DD-MM-YY', - ], - 'months' => ['Jannewaris', 'Febrewaris', 'Maart', 'April', 'Maaie', 'Juny', 'July', 'Augustus', 'Septimber', 'Oktober', 'Novimber', 'Desimber'], - 'months_short' => ['Jan', 'Feb', 'Mrt', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'], - 'weekdays' => ['Snein', 'Moandei', 'Tiisdei', 'Woansdei', 'Tongersdei', 'Freed', 'Sneon'], - 'weekdays_short' => ['Sn', 'Mo', 'Ti', 'Wo', 'To', 'Fr', 'Sn'], - 'weekdays_min' => ['Sn', 'Mo', 'Ti', 'Wo', 'To', 'Fr', 'Sn'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ga.php b/vendor/nesbot/carbon/src/Carbon/Lang/ga.php deleted file mode 100644 index 9f07a26c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ga.php +++ /dev/null @@ -1,77 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Thanks to André Silva : https://github.com/askpt - */ - -return [ - 'year' => ':count bliain', - 'a_year' => '{1}bliain|:count bliain', - 'y' => ':countb', - 'month' => ':count mí', - 'a_month' => '{1}mí|:count mí', - 'm' => ':countm', - 'week' => ':count sheachtain', - 'a_week' => '{1}sheachtain|:count sheachtain', - 'w' => ':countsh', - 'day' => ':count lá', - 'a_day' => '{1}lá|:count lá', - 'd' => ':countl', - 'hour' => ':count uair an chloig', - 'a_hour' => '{1}uair an chloig|:count uair an chloig', - 'h' => ':countu', - 'minute' => ':count nóiméad', - 'a_minute' => '{1}nóiméad|:count nóiméad', - 'min' => ':countn', - 'second' => ':count soicind', - 'a_second' => '{1}cúpla soicind|:count soicind', - 's' => ':countso', - 'ago' => ':time ó shin', - 'from_now' => 'i :time', - 'after' => ':time tar éis', - 'before' => ':time roimh', - 'diff_now' => 'anois', - 'diff_today' => 'Inniu', - 'diff_today_regexp' => 'Inniu(?:\\s+ag)?', - 'diff_yesterday' => 'inné', - 'diff_yesterday_regexp' => 'Inné(?:\\s+aig)?', - 'diff_tomorrow' => 'amárach', - 'diff_tomorrow_regexp' => 'Amárach(?:\\s+ag)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Inniu ag] LT', - 'nextDay' => '[Amárach ag] LT', - 'nextWeek' => 'dddd [ag] LT', - 'lastDay' => '[Inné aig] LT', - 'lastWeek' => 'dddd [seo caite] [ag] LT', - 'sameElse' => 'L', - ], - 'months' => ['Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Méitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deaireadh Fómhair', 'Samhain', 'Nollaig'], - 'months_short' => ['Eaná', 'Feab', 'Márt', 'Aibr', 'Beal', 'Méit', 'Iúil', 'Lúna', 'Meán', 'Deai', 'Samh', 'Noll'], - 'weekdays' => ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Satharn'], - 'weekdays_short' => ['Dom', 'Lua', 'Mái', 'Céa', 'Déa', 'hAo', 'Sat'], - 'weekdays_min' => ['Do', 'Lu', 'Má', 'Ce', 'Dé', 'hA', 'Sa'], - 'ordinal' => function ($number) { - return $number.($number === 1 ? 'd' : ($number % 10 === 2 ? 'na' : 'mh')); - }, - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' agus '], - 'meridiem' => ['r.n.', 'i.n.'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ga_IE.php b/vendor/nesbot/carbon/src/Carbon/Lang/ga_IE.php deleted file mode 100644 index 57b0c4fb..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ga_IE.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ga.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gd.php b/vendor/nesbot/carbon/src/Carbon/Lang/gd.php deleted file mode 100644 index 63d064dd..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/gd.php +++ /dev/null @@ -1,75 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - Jon Ashdown - */ -return [ - 'year' => ':count bliadhna', - 'a_year' => '{1}bliadhna|:count bliadhna', - 'y' => ':count b.', - 'month' => ':count mìosan', - 'a_month' => '{1}mìos|:count mìosan', - 'm' => ':count ms.', - 'week' => ':count seachdainean', - 'a_week' => '{1}seachdain|:count seachdainean', - 'w' => ':count s.', - 'day' => ':count latha', - 'a_day' => '{1}latha|:count latha', - 'd' => ':count l.', - 'hour' => ':count uairean', - 'a_hour' => '{1}uair|:count uairean', - 'h' => ':count u.', - 'minute' => ':count mionaidean', - 'a_minute' => '{1}mionaid|:count mionaidean', - 'min' => ':count md.', - 'second' => ':count diogan', - 'a_second' => '{1}beagan diogan|:count diogan', - 's' => ':count d.', - 'ago' => 'bho chionn :time', - 'from_now' => 'ann an :time', - 'diff_yesterday' => 'An-dè', - 'diff_yesterday_regexp' => 'An-dè(?:\\s+aig)?', - 'diff_today' => 'An-diugh', - 'diff_today_regexp' => 'An-diugh(?:\\s+aig)?', - 'diff_tomorrow' => 'A-màireach', - 'diff_tomorrow_regexp' => 'A-màireach(?:\\s+aig)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[An-diugh aig] LT', - 'nextDay' => '[A-màireach aig] LT', - 'nextWeek' => 'dddd [aig] LT', - 'lastDay' => '[An-dè aig] LT', - 'lastWeek' => 'dddd [seo chaidh] [aig] LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number) { - return $number.($number === 1 ? 'd' : ($number % 10 === 2 ? 'na' : 'mh')); - }, - 'months' => ['Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'], - 'months_short' => ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'], - 'weekdays' => ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'], - 'weekdays_short' => ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'], - 'weekdays_min' => ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' agus '], - 'meridiem' => ['m', 'f'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gd_GB.php b/vendor/nesbot/carbon/src/Carbon/Lang/gd_GB.php deleted file mode 100644 index 4fc26b3d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/gd_GB.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/gd.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gez.php b/vendor/nesbot/carbon/src/Carbon/Lang/gez.php deleted file mode 100644 index b8a2f0eb..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/gez.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/gez_ER.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gez_ER.php b/vendor/nesbot/carbon/src/Carbon/Lang/gez_ER.php deleted file mode 100644 index f19d1df1..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/gez_ER.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation locales@geez.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['ጠሐረ', 'ከተተ', 'መገበ', 'አኀዘ', 'ግንባት', 'ሠንየ', 'ሐመለ', 'ነሐሰ', 'ከረመ', 'ጠቀመ', 'ኀደረ', 'ኀሠሠ'], - 'months_short' => ['ጠሐረ', 'ከተተ', 'መገበ', 'አኀዘ', 'ግንባ', 'ሠንየ', 'ሐመለ', 'ነሐሰ', 'ከረመ', 'ጠቀመ', 'ኀደረ', 'ኀሠሠ'], - 'weekdays' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚት'], - 'weekdays_short' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚ'], - 'weekdays_min' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚ'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['ጽባሕ', 'ምሴት'], - - 'month' => ':count ወርሕ', // less reliable - 'm' => ':count ወርሕ', // less reliable - 'a_month' => ':count ወርሕ', // less reliable - - 'week' => ':count ሰብዑ', // less reliable - 'w' => ':count ሰብዑ', // less reliable - 'a_week' => ':count ሰብዑ', // less reliable - - 'hour' => ':count አንትሙ', // less reliable - 'h' => ':count አንትሙ', // less reliable - 'a_hour' => ':count አንትሙ', // less reliable - - 'minute' => ':count ንኡስ', // less reliable - 'min' => ':count ንኡስ', // less reliable - 'a_minute' => ':count ንኡስ', // less reliable - - 'year' => ':count ዓመት', - 'y' => ':count ዓመት', - 'a_year' => ':count ዓመት', - - 'day' => ':count ዕለት', - 'd' => ':count ዕለት', - 'a_day' => ':count ዕለት', - - 'second' => ':count ካልእ', - 's' => ':count ካልእ', - 'a_second' => ':count ካልእ', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gez_ET.php b/vendor/nesbot/carbon/src/Carbon/Lang/gez_ET.php deleted file mode 100644 index 39330096..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/gez_ET.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation locales@geez.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['ጃንዩወሪ', 'ፌብሩወሪ', 'ማርች', 'ኤፕረል', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስት', 'ሴፕቴምበር', 'ኦክተውበር', 'ኖቬምበር', 'ዲሴምበር'], - 'months_short' => ['ጃንዩ', 'ፌብሩ', 'ማርች', 'ኤፕረ', 'ሜይ ', 'ጁን ', 'ጁላይ', 'ኦገስ', 'ሴፕቴ', 'ኦክተ', 'ኖቬም', 'ዲሴም'], - 'weekdays' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚት'], - 'weekdays_short' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚ'], - 'weekdays_min' => ['እኁድ', 'ሰኑይ', 'ሠሉስ', 'ራብዕ', 'ሐሙስ', 'ዓርበ', 'ቀዳሚ'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['ጽባሕ', 'ምሴት'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gl.php b/vendor/nesbot/carbon/src/Carbon/Lang/gl.php deleted file mode 100644 index 088b0f28..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/gl.php +++ /dev/null @@ -1,98 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - Fidel Pita - * - JD Isaacks - * - Diego Vilariño - * - Sebastian Thierer - */ - -use Carbon\CarbonInterface; - -return [ - 'year' => ':count ano|:count anos', - 'a_year' => 'un ano|:count anos', - 'y' => ':count a.', - 'month' => ':count mes|:count meses', - 'a_month' => 'un mes|:count meses', - 'm' => ':count mes.', - 'week' => ':count semana|:count semanas', - 'a_week' => 'unha semana|:count semanas', - 'w' => ':count sem.', - 'day' => ':count día|:count días', - 'a_day' => 'un día|:count días', - 'd' => ':count d.', - 'hour' => ':count hora|:count horas', - 'a_hour' => 'unha hora|:count horas', - 'h' => ':count h.', - 'minute' => ':count minuto|:count minutos', - 'a_minute' => 'un minuto|:count minutos', - 'min' => ':count min.', - 'second' => ':count segundo|:count segundos', - 'a_second' => 'uns segundos|:count segundos', - 's' => ':count seg.', - 'ago' => 'hai :time', - 'from_now' => function ($time) { - if (str_starts_with($time, 'un')) { - return "n$time"; - } - - return "en $time"; - }, - 'diff_now' => 'agora', - 'diff_today' => 'hoxe', - 'diff_today_regexp' => 'hoxe(?:\\s+ás)?', - 'diff_yesterday' => 'onte', - 'diff_yesterday_regexp' => 'onte(?:\\s+á)?', - 'diff_tomorrow' => 'mañá', - 'diff_tomorrow_regexp' => 'mañá(?:\\s+ás)?', - 'after' => ':time despois', - 'before' => ':time antes', - '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', - ], - 'calendar' => [ - 'sameDay' => function (CarbonInterface $current) { - return '[hoxe '.($current->hour !== 1 ? 'ás' : 'á').'] LT'; - }, - 'nextDay' => function (CarbonInterface $current) { - return '[mañá '.($current->hour !== 1 ? 'ás' : 'á').'] LT'; - }, - 'nextWeek' => function (CarbonInterface $current) { - return 'dddd ['.($current->hour !== 1 ? 'ás' : 'á').'] LT'; - }, - 'lastDay' => function (CarbonInterface $current) { - return '[onte '.($current->hour !== 1 ? 'á' : 'a').'] LT'; - }, - 'lastWeek' => function (CarbonInterface $current) { - return '[o] dddd [pasado '.($current->hour !== 1 ? 'ás' : 'á').'] LT'; - }, - 'sameElse' => 'L', - ], - 'ordinal' => ':numberº', - 'months' => ['xaneiro', 'febreiro', 'marzo', 'abril', 'maio', 'xuño', 'xullo', 'agosto', 'setembro', 'outubro', 'novembro', 'decembro'], - 'months_short' => ['xan.', 'feb.', 'mar.', 'abr.', 'mai.', 'xuñ.', 'xul.', 'ago.', 'set.', 'out.', 'nov.', 'dec.'], - 'weekdays' => ['domingo', 'luns', 'martes', 'mércores', 'xoves', 'venres', 'sábado'], - 'weekdays_short' => ['dom.', 'lun.', 'mar.', 'mér.', 'xov.', 'ven.', 'sáb.'], - 'weekdays_min' => ['do', 'lu', 'ma', 'mé', 'xo', 've', 'sá'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' e '], - 'meridiem' => ['a.m.', 'p.m.'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gl_ES.php b/vendor/nesbot/carbon/src/Carbon/Lang/gl_ES.php deleted file mode 100644 index 9d6c1d96..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/gl_ES.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/gl.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gom.php b/vendor/nesbot/carbon/src/Carbon/Lang/gom.php deleted file mode 100644 index 2a0584f8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/gom.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/gom_Latn.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gom_Latn.php b/vendor/nesbot/carbon/src/Carbon/Lang/gom_Latn.php deleted file mode 100644 index 612bb886..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/gom_Latn.php +++ /dev/null @@ -1,79 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return [ - 'year' => ':count voros|:count vorsam', - 'y' => ':countv', - 'month' => ':count mhoino|:count mhoine', - 'm' => ':countmh', - 'week' => ':count satolleacho|:count satolleache', - 'w' => ':countsa|:countsa', - 'day' => ':count dis', - 'd' => ':countd', - 'hour' => ':count hor|:count horam', - 'h' => ':counth', - 'minute' => ':count minute|:count mintam', - 'min' => ':countm', - 'second' => ':count second', - 's' => ':counts', - - 'diff_today' => 'Aiz', - 'diff_yesterday' => 'Kal', - 'diff_tomorrow' => 'Faleam', - 'formats' => [ - 'LT' => 'A h:mm [vazta]', - 'LTS' => 'A h:mm:ss [vazta]', - 'L' => 'DD-MM-YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY A h:mm [vazta]', - 'LLLL' => 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]', - 'llll' => 'ddd, D MMM YYYY, A h:mm [vazta]', - ], - - 'calendar' => [ - 'sameDay' => '[Aiz] LT', - 'nextDay' => '[Faleam] LT', - 'nextWeek' => '[Ieta to] dddd[,] LT', - 'lastDay' => '[Kal] LT', - 'lastWeek' => '[Fatlo] dddd[,] LT', - 'sameElse' => 'L', - ], - - 'months' => ['Janer', 'Febrer', 'Mars', 'Abril', 'Mai', 'Jun', 'Julai', 'Agost', 'Setembr', 'Otubr', 'Novembr', 'Dezembr'], - 'months_short' => ['Jan.', 'Feb.', 'Mars', 'Abr.', 'Mai', 'Jun', 'Jul.', 'Ago.', 'Set.', 'Otu.', 'Nov.', 'Dez.'], - 'weekdays' => ['Aitar', 'Somar', 'Mongllar', 'Budvar', 'Brestar', 'Sukrar', 'Son\'var'], - 'weekdays_short' => ['Ait.', 'Som.', 'Mon.', 'Bud.', 'Bre.', 'Suk.', 'Son.'], - 'weekdays_min' => ['Ai', 'Sm', 'Mo', 'Bu', 'Br', 'Su', 'Sn'], - - 'ordinal' => function ($number, $period) { - return $number.($period === 'D' ? 'er' : ''); - }, - - 'meridiem' => function ($hour) { - if ($hour < 4) { - return 'rati'; - } - if ($hour < 12) { - return 'sokalli'; - } - if ($hour < 16) { - return 'donparam'; - } - if ($hour < 20) { - return 'sanje'; - } - - return 'rati'; - }, - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' ani '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gsw.php b/vendor/nesbot/carbon/src/Carbon/Lang/gsw.php deleted file mode 100644 index c5c850ed..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/gsw.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Christopher Dell - * - Akira Matsuda - * - Enrique Vidal - * - Simone Carletti - * - Henning Kiel - * - Aaron Patterson - * - Florian Hanke - */ -return [ - 'year' => ':count Johr', - 'month' => ':count Monet', - 'week' => ':count Woche', - 'day' => ':count Tag', - 'hour' => ':count Schtund', - 'minute' => ':count Minute', - 'second' => ':count Sekunde', - 'weekdays' => ['Sunntig', 'Mäntig', 'Ziischtig', 'Mittwuch', 'Dunschtig', 'Friitig', 'Samschtig'], - 'weekdays_short' => ['Su', 'Mä', 'Zi', 'Mi', 'Du', 'Fr', 'Sa'], - 'weekdays_min' => ['Su', 'Mä', 'Zi', 'Mi', 'Du', 'Fr', 'Sa'], - 'months' => ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'Auguscht', 'September', 'Oktober', 'November', 'Dezember'], - 'months_short' => ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - 'meridiem' => ['am Vormittag', 'am Namittag'], - 'ordinal' => ':number.', - 'list' => [', ', ' und '], - 'diff_now' => 'now', - 'diff_yesterday' => 'geschter', - 'diff_tomorrow' => 'moorn', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD.MM.YYYY', - 'LL' => 'Do MMMM YYYY', - 'LLL' => 'Do MMMM, HH:mm [Uhr]', - 'LLLL' => 'dddd, Do MMMM YYYY, HH:mm [Uhr]', - ], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gsw_CH.php b/vendor/nesbot/carbon/src/Carbon/Lang/gsw_CH.php deleted file mode 100644 index 594eb25d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/gsw_CH.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/gsw.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gsw_FR.php b/vendor/nesbot/carbon/src/Carbon/Lang/gsw_FR.php deleted file mode 100644 index 3581dcfb..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/gsw_FR.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/gsw.php', [ - 'meridiem' => ['vorm.', 'nam.'], - 'months' => ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'Auguscht', 'Septämber', 'Oktoober', 'Novämber', 'Dezämber'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LLL' => 'Do MMMM YYYY HH:mm', - 'LLLL' => 'dddd, Do MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gsw_LI.php b/vendor/nesbot/carbon/src/Carbon/Lang/gsw_LI.php deleted file mode 100644 index 3581dcfb..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/gsw_LI.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/gsw.php', [ - 'meridiem' => ['vorm.', 'nam.'], - 'months' => ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'Auguscht', 'Septämber', 'Oktoober', 'Novämber', 'Dezämber'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LLL' => 'Do MMMM YYYY HH:mm', - 'LLLL' => 'dddd, Do MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gu.php b/vendor/nesbot/carbon/src/Carbon/Lang/gu.php deleted file mode 100644 index 8bc43114..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/gu.php +++ /dev/null @@ -1,82 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - Kaushik Thanki - * - Josh Soref - */ -return [ - 'year' => 'એક વર્ષ|:count વર્ષ', - 'y' => ':countવર્ષ|:countવર્ષો', - 'month' => 'એક મહિનો|:count મહિના', - 'm' => ':countમહિનો|:countમહિના', - 'week' => ':count અઠવાડિયું|:count અઠવાડિયા', - 'w' => ':countઅઠ.|:countઅઠ.', - 'day' => 'એક દિવસ|:count દિવસ', - 'd' => ':countદિ.|:countદિ.', - 'hour' => 'એક કલાક|:count કલાક', - 'h' => ':countક.|:countક.', - 'minute' => 'એક મિનિટ|:count મિનિટ', - 'min' => ':countમિ.|:countમિ.', - 'second' => 'અમુક પળો|:count સેકંડ', - 's' => ':countસે.|:countસે.', - 'ago' => ':time પેહલા', - 'from_now' => ':time મા', - 'after' => ':time પછી', - 'before' => ':time પહેલા', - 'diff_now' => 'હમણાં', - 'diff_today' => 'આજ', - 'diff_yesterday' => 'ગઇકાલે', - 'diff_tomorrow' => 'કાલે', - 'formats' => [ - 'LT' => 'A h:mm વાગ્યે', - 'LTS' => 'A h:mm:ss વાગ્યે', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY, A h:mm વાગ્યે', - 'LLLL' => 'dddd, D MMMM YYYY, A h:mm વાગ્યે', - ], - 'calendar' => [ - 'sameDay' => '[આજ] LT', - 'nextDay' => '[કાલે] LT', - 'nextWeek' => 'dddd, LT', - 'lastDay' => '[ગઇકાલે] LT', - 'lastWeek' => '[પાછલા] dddd, LT', - 'sameElse' => 'L', - ], - 'meridiem' => function ($hour) { - if ($hour < 4) { - return 'રાત'; - } - if ($hour < 10) { - return 'સવાર'; - } - if ($hour < 17) { - return 'બપોર'; - } - if ($hour < 20) { - return 'સાંજ'; - } - - return 'રાત'; - }, - 'months' => ['જાન્યુઆરી', 'ફેબ્રુઆરી', 'માર્ચ', 'એપ્રિલ', 'મે', 'જૂન', 'જુલાઈ', 'ઑગસ્ટ', 'સપ્ટેમ્બર', 'ઑક્ટ્બર', 'નવેમ્બર', 'ડિસેમ્બર'], - 'months_short' => ['જાન્યુ.', 'ફેબ્રુ.', 'માર્ચ', 'એપ્રિ.', 'મે', 'જૂન', 'જુલા.', 'ઑગ.', 'સપ્ટે.', 'ઑક્ટ્.', 'નવે.', 'ડિસે.'], - 'weekdays' => ['રવિવાર', 'સોમવાર', 'મંગળવાર', 'બુધ્વાર', 'ગુરુવાર', 'શુક્રવાર', 'શનિવાર'], - 'weekdays_short' => ['રવિ', 'સોમ', 'મંગળ', 'બુધ્', 'ગુરુ', 'શુક્ર', 'શનિ'], - 'weekdays_min' => ['ર', 'સો', 'મં', 'બુ', 'ગુ', 'શુ', 'શ'], - 'list' => [', ', ' અને '], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, - 'weekend' => [0, 0], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gu_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/gu_IN.php deleted file mode 100644 index 02654b1f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/gu_IN.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/gu.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/guz.php b/vendor/nesbot/carbon/src/Carbon/Lang/guz.php deleted file mode 100644 index 6230165c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/guz.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['Ma', 'Mo'], - 'weekdays' => ['Chumapiri', 'Chumatato', 'Chumaine', 'Chumatano', 'Aramisi', 'Ichuma', 'Esabato'], - 'weekdays_short' => ['Cpr', 'Ctt', 'Cmn', 'Cmt', 'Ars', 'Icm', 'Est'], - 'weekdays_min' => ['Cpr', 'Ctt', 'Cmn', 'Cmt', 'Ars', 'Icm', 'Est'], - 'months' => ['Chanuari', 'Feburari', 'Machi', 'Apiriri', 'Mei', 'Juni', 'Chulai', 'Agosti', 'Septemba', 'Okitoba', 'Nobemba', 'Disemba'], - 'months_short' => ['Can', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Cul', 'Agt', 'Sep', 'Okt', 'Nob', 'Dis'], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], - - 'month' => ':count omotunyi', // less reliable - 'm' => ':count omotunyi', // less reliable - 'a_month' => ':count omotunyi', // less reliable - - 'week' => ':count isano naibere', // less reliable - 'w' => ':count isano naibere', // less reliable - 'a_week' => ':count isano naibere', // less reliable - - 'second' => ':count ibere', // less reliable - 's' => ':count ibere', // less reliable - 'a_second' => ':count ibere', // less reliable - - 'year' => ':count omwaka', - 'y' => ':count omwaka', - 'a_year' => ':count omwaka', - - 'day' => ':count rituko', - 'd' => ':count rituko', - 'a_day' => ':count rituko', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gv.php b/vendor/nesbot/carbon/src/Carbon/Lang/gv.php deleted file mode 100644 index 7c52b940..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/gv.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/gv_GB.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/gv_GB.php b/vendor/nesbot/carbon/src/Carbon/Lang/gv_GB.php deleted file mode 100644 index 6b1168f9..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/gv_GB.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Alastair McKinstry bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['Jerrey-geuree', 'Toshiaght-arree', 'Mayrnt', 'Averil', 'Boaldyn', 'Mean-souree', 'Jerrey-souree', 'Luanistyn', 'Mean-fouyir', 'Jerrey-fouyir', 'Mee Houney', 'Mee ny Nollick'], - 'months_short' => ['J-guer', 'T-arree', 'Mayrnt', 'Avrril', 'Boaldyn', 'M-souree', 'J-souree', 'Luanistyn', 'M-fouyir', 'J-fouyir', 'M.Houney', 'M.Nollick'], - 'weekdays' => ['Jedoonee', 'Jelhein', 'Jemayrt', 'Jercean', 'Jerdein', 'Jeheiney', 'Jesarn'], - 'weekdays_short' => ['Jed', 'Jel', 'Jem', 'Jerc', 'Jerd', 'Jeh', 'Jes'], - 'weekdays_min' => ['Jed', 'Jel', 'Jem', 'Jerc', 'Jerd', 'Jeh', 'Jes'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - - 'year' => ':count blein', - 'y' => ':count blein', - 'a_year' => ':count blein', - - 'month' => ':count mee', - 'm' => ':count mee', - 'a_month' => ':count mee', - - 'week' => ':count shiaghtin', - 'w' => ':count shiaghtin', - 'a_week' => ':count shiaghtin', - - 'day' => ':count laa', - 'd' => ':count laa', - 'a_day' => ':count laa', - - 'hour' => ':count oor', - 'h' => ':count oor', - 'a_hour' => ':count oor', - - 'minute' => ':count feer veg', - 'min' => ':count feer veg', - 'a_minute' => ':count feer veg', - - 'second' => ':count derrey', - 's' => ':count derrey', - 'a_second' => ':count derrey', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ha.php b/vendor/nesbot/carbon/src/Carbon/Lang/ha.php deleted file mode 100644 index cd8e34d0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ha.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - pablo@mandriva.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM, YYYY', - 'LLL' => 'D MMMM, YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM, YYYY HH:mm', - ], - 'months' => ['Janairu', 'Faburairu', 'Maris', 'Afirilu', 'Mayu', 'Yuni', 'Yuli', 'Agusta', 'Satumba', 'Oktoba', 'Nuwamba', 'Disamba'], - 'months_short' => ['Jan', 'Fab', 'Mar', 'Afi', 'May', 'Yun', 'Yul', 'Agu', 'Sat', 'Okt', 'Nuw', 'Dis'], - 'weekdays' => ['Lahadi', 'Litini', 'Talata', 'Laraba', 'Alhamis', 'Jumaʼa', 'Asabar'], - 'weekdays_short' => ['Lah', 'Lit', 'Tal', 'Lar', 'Alh', 'Jum', 'Asa'], - 'weekdays_min' => ['Lh', 'Li', 'Ta', 'Lr', 'Al', 'Ju', 'As'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - - 'year' => 'shekara :count', - 'y' => 'shekara :count', - 'a_year' => 'shekara :count', - - 'month' => ':count wátàa', - 'm' => ':count wátàa', - 'a_month' => ':count wátàa', - - 'week' => ':count mako', - 'w' => ':count mako', - 'a_week' => ':count mako', - - 'day' => ':count rana', - 'd' => ':count rana', - 'a_day' => ':count rana', - - 'hour' => ':count áwàa', - 'h' => ':count áwàa', - 'a_hour' => ':count áwàa', - - 'minute' => 'minti :count', - 'min' => 'minti :count', - 'a_minute' => 'minti :count', - - 'second' => ':count ná bíyú', - 's' => ':count ná bíyú', - 'a_second' => ':count ná bíyú', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ha_GH.php b/vendor/nesbot/carbon/src/Carbon/Lang/ha_GH.php deleted file mode 100644 index f9f99a73..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ha_GH.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ha.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ha_NE.php b/vendor/nesbot/carbon/src/Carbon/Lang/ha_NE.php deleted file mode 100644 index f9f99a73..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ha_NE.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ha.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ha_NG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ha_NG.php deleted file mode 100644 index f9f99a73..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ha_NG.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ha.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hak.php b/vendor/nesbot/carbon/src/Carbon/Lang/hak.php deleted file mode 100644 index 6c3260e8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hak.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/hak_TW.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hak_TW.php b/vendor/nesbot/carbon/src/Carbon/Lang/hak_TW.php deleted file mode 100644 index fe239865..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hak_TW.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'YYYY年MM月DD日', - ], - 'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], - 'months_short' => [' 1月', ' 2月', ' 3月', ' 4月', ' 5月', ' 6月', ' 7月', ' 8月', ' 9月', '10月', '11月', '12月'], - 'weekdays' => ['禮拜日', '禮拜一', '禮拜二', '禮拜三', '禮拜四', '禮拜五', '禮拜六'], - 'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'], - 'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['上晝', '下晝'], - - 'year' => ':count ngien11', - 'y' => ':count ngien11', - 'a_year' => ':count ngien11', - - 'month' => ':count ngie̍t', - 'm' => ':count ngie̍t', - 'a_month' => ':count ngie̍t', - - 'week' => ':count lî-pai', - 'w' => ':count lî-pai', - 'a_week' => ':count lî-pai', - - 'day' => ':count ngit', - 'd' => ':count ngit', - 'a_day' => ':count ngit', - - 'hour' => ':count sṳ̀', - 'h' => ':count sṳ̀', - 'a_hour' => ':count sṳ̀', - - 'minute' => ':count fûn', - 'min' => ':count fûn', - 'a_minute' => ':count fûn', - - 'second' => ':count miéu', - 's' => ':count miéu', - 'a_second' => ':count miéu', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/haw.php b/vendor/nesbot/carbon/src/Carbon/Lang/haw.php deleted file mode 100644 index cdd36861..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/haw.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'months' => ['Ianuali', 'Pepeluali', 'Malaki', 'ʻApelila', 'Mei', 'Iune', 'Iulai', 'ʻAukake', 'Kepakemapa', 'ʻOkakopa', 'Nowemapa', 'Kekemapa'], - 'months_short' => ['Ian.', 'Pep.', 'Mal.', 'ʻAp.', 'Mei', 'Iun.', 'Iul.', 'ʻAu.', 'Kep.', 'ʻOk.', 'Now.', 'Kek.'], - 'weekdays' => ['Lāpule', 'Poʻakahi', 'Poʻalua', 'Poʻakolu', 'Poʻahā', 'Poʻalima', 'Poʻaono'], - 'weekdays_short' => ['LP', 'P1', 'P2', 'P3', 'P4', 'P5', 'P6'], - 'weekdays_min' => ['S', 'M', 'T', 'W', 'T', 'F', 'S'], - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY h:mm a', - 'LLLL' => 'dddd, D MMMM YYYY h:mm a', - ], - - 'year' => ':count makahiki', - 'y' => ':count makahiki', - 'a_year' => ':count makahiki', - - 'month' => ':count mahina', - 'm' => ':count mahina', - 'a_month' => ':count mahina', - - 'week' => ':count pule', - 'w' => ':count pule', - 'a_week' => ':count pule', - - 'day' => ':count lā', - 'd' => ':count lā', - 'a_day' => ':count lā', - - 'hour' => ':count hola', - 'h' => ':count hola', - 'a_hour' => ':count hola', - - 'minute' => ':count minuke', - 'min' => ':count minuke', - 'a_minute' => ':count minuke', - - 'second' => ':count lua', - 's' => ':count lua', - 'a_second' => ':count lua', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/he.php b/vendor/nesbot/carbon/src/Carbon/Lang/he.php deleted file mode 100644 index c3fb3e97..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/he.php +++ /dev/null @@ -1,86 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Daniel Cohen Gindi - * - JD Isaacks - * - Itai Nathaniel - * - GabMic - * - Yaakov Dahan (yakidahan) - */ -return [ - 'year' => 'שנה|{2}שנתיים|:count שנים', - 'y' => 'שנה|:count שנ׳', - 'month' => 'חודש|{2}חודשיים|:count חודשים', - 'm' => 'חודש|:count חו׳', - 'week' => 'שבוע|{2}שבועיים|:count שבועות', - 'w' => 'שבוע|:count שב׳', - 'day' => 'יום|{2}יומיים|:count ימים', - 'd' => 'יום|:count ימ׳', - 'hour' => 'שעה|{2}שעתיים|:count שעות', - 'h' => 'שעה|:count שע׳', - 'minute' => 'דקה|{2}שתי דקות|:count דקות', - 'min' => 'דקה|:count דק׳', - 'second' => 'שנייה|:count שניות', - 'a_second' => 'כמה שניות|:count שניות', - 's' => 'שניה|:count שנ׳', - 'ago' => 'לפני :time', - 'from_now' => 'בעוד :time מעכשיו', - 'after' => 'אחרי :time', - 'before' => 'לפני :time', - 'diff_now' => 'עכשיו', - 'diff_today' => 'היום', - 'diff_today_regexp' => 'היום(?:\\s+ב־)?', - 'diff_yesterday' => 'אתמול', - 'diff_yesterday_regexp' => 'אתמול(?:\\s+ב־)?', - 'diff_tomorrow' => 'מחר', - 'diff_tomorrow_regexp' => 'מחר(?:\\s+ב־)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[היום ב־]LT', - 'nextDay' => '[מחר ב־]LT', - 'nextWeek' => 'dddd [בשעה] LT', - 'lastDay' => '[אתמול ב־]LT', - 'lastWeek' => '[ביום] dddd [האחרון בשעה] LT', - 'sameElse' => 'L', - ], - 'meridiem' => function ($hour, $minute, $isLower) { - if ($hour < 5) { - return 'לפנות בוקר'; - } - if ($hour < 10) { - return 'בבוקר'; - } - if ($hour < 12) { - return $isLower ? 'לפנה"צ' : 'לפני הצהריים'; - } - if ($hour < 18) { - return $isLower ? 'אחה"צ' : 'אחרי הצהריים'; - } - - return 'בערב'; - }, - 'months' => ['ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'], - 'months_short' => ['ינו׳', 'פבר׳', 'מרץ', 'אפר׳', 'מאי', 'יוני', 'יולי', 'אוג׳', 'ספט׳', 'אוק׳', 'נוב׳', 'דצמ׳'], - 'weekdays' => ['ראשון', 'שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת'], - 'weekdays_short' => ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'], - 'weekdays_min' => ['א', 'ב', 'ג', 'ד', 'ה', 'ו', 'ש'], - 'list' => [', ', ' ו -'], - 'weekend' => [5, 6], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/he_IL.php b/vendor/nesbot/carbon/src/Carbon/Lang/he_IL.php deleted file mode 100644 index 14fab3e9..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/he_IL.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/he.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hi.php b/vendor/nesbot/carbon/src/Carbon/Lang/hi.php deleted file mode 100644 index 70c57a29..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hi.php +++ /dev/null @@ -1,82 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - abhimanyu003 - * - Josh Soref - * - JD Isaacks - */ -return [ - 'year' => 'एक वर्ष|:count वर्ष', - 'y' => '1 वर्ष|:count वर्षों', - 'month' => 'एक महीने|:count महीने', - 'm' => '1 माह|:count महीने', - 'week' => '1 सप्ताह|:count सप्ताह', - 'w' => '1 सप्ताह|:count सप्ताह', - 'day' => 'एक दिन|:count दिन', - 'd' => '1 दिन|:count दिनों', - 'hour' => 'एक घंटा|:count घंटे', - 'h' => '1 घंटा|:count घंटे', - 'minute' => 'एक मिनट|:count मिनट', - 'min' => '1 मिनट|:count मिनटों', - 'second' => 'कुछ ही क्षण|:count सेकंड', - 's' => '1 सेकंड|:count सेकंड', - 'ago' => ':time पहले', - 'from_now' => ':time में', - 'after' => ':time के बाद', - 'before' => ':time के पहले', - 'diff_now' => 'अब', - 'diff_today' => 'आज', - 'diff_yesterday' => 'कल', - 'diff_tomorrow' => 'कल', - 'formats' => [ - 'LT' => 'A h:mm बजे', - 'LTS' => 'A h:mm:ss बजे', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY, A h:mm बजे', - 'LLLL' => 'dddd, D MMMM YYYY, A h:mm बजे', - ], - 'calendar' => [ - 'sameDay' => '[आज] LT', - 'nextDay' => '[कल] LT', - 'nextWeek' => 'dddd, LT', - 'lastDay' => '[कल] LT', - 'lastWeek' => '[पिछले] dddd, LT', - 'sameElse' => 'L', - ], - 'meridiem' => function ($hour) { - if ($hour < 4) { - return 'रात'; - } - if ($hour < 10) { - return 'सुबह'; - } - if ($hour < 17) { - return 'दोपहर'; - } - if ($hour < 20) { - return 'शाम'; - } - - return 'रात'; - }, - 'months' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'], - 'months_short' => ['जन.', 'फ़र.', 'मार्च', 'अप्रै.', 'मई', 'जून', 'जुल.', 'अग.', 'सित.', 'अक्टू.', 'नव.', 'दिस.'], - 'weekdays' => ['रविवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'गुरूवार', 'शुक्रवार', 'शनिवार'], - 'weekdays_short' => ['रवि', 'सोम', 'मंगल', 'बुध', 'गुरू', 'शुक्र', 'शनि'], - 'weekdays_min' => ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'], - 'list' => [', ', ' और '], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, - 'weekend' => [0, 0], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hi_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/hi_IN.php deleted file mode 100644 index 749dd97c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hi_IN.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/hi.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hif.php b/vendor/nesbot/carbon/src/Carbon/Lang/hif.php deleted file mode 100644 index 65791dd4..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hif.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/hif_FJ.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hif_FJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/hif_FJ.php deleted file mode 100644 index 30ad5e74..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hif_FJ.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Samsung Electronics Co., Ltd. akhilesh.k@samsung.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'dddd DD MMM YYYY', - ], - 'months' => ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], - 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - 'weekdays' => ['Ravivar', 'Somvar', 'Mangalvar', 'Budhvar', 'Guruvar', 'Shukravar', 'Shanivar'], - 'weekdays_short' => ['Ravi', 'Som', 'Mangal', 'Budh', 'Guru', 'Shukra', 'Shani'], - 'weekdays_min' => ['Ravi', 'Som', 'Mangal', 'Budh', 'Guru', 'Shukra', 'Shani'], - 'meridiem' => ['Purvahan', 'Aparaahna'], - - 'hour' => ':count minit', // less reliable - 'h' => ':count minit', // less reliable - 'a_hour' => ':count minit', // less reliable - - 'year' => ':count saal', - 'y' => ':count saal', - 'a_year' => ':count saal', - - 'month' => ':count Mahina', - 'm' => ':count Mahina', - 'a_month' => ':count Mahina', - - 'week' => ':count Hafta', - 'w' => ':count Hafta', - 'a_week' => ':count Hafta', - - 'day' => ':count Din', - 'd' => ':count Din', - 'a_day' => ':count Din', - - 'minute' => ':count Minit', - 'min' => ':count Minit', - 'a_minute' => ':count Minit', - - 'second' => ':count Second', - 's' => ':count Second', - 'a_second' => ':count Second', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hne.php b/vendor/nesbot/carbon/src/Carbon/Lang/hne.php deleted file mode 100644 index 4bcb05c7..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hne.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/hne_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hne_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/hne_IN.php deleted file mode 100644 index a5ca758b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hne_IN.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Red Hat, Pune bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['जनवरी', 'फरवरी', 'मार्च', 'अपरेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितमबर', 'अकटूबर', 'नवमबर', 'दिसमबर'], - 'months_short' => ['जन', 'फर', 'मार्च', 'अप', 'मई', 'जून', 'जुला', 'अग', 'सित', 'अकटू', 'नव', 'दिस'], - 'weekdays' => ['इतवार', 'सोमवार', 'मंगलवार', 'बुधवार', 'बिरसपत', 'सुकरवार', 'सनिवार'], - 'weekdays_short' => ['इत', 'सोम', 'मंग', 'बुध', 'बिर', 'सुक', 'सनि'], - 'weekdays_min' => ['इत', 'सोम', 'मंग', 'बुध', 'बिर', 'सुक', 'सनि'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['बिहिनियाँ', 'मंझनियाँ'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hr.php b/vendor/nesbot/carbon/src/Carbon/Lang/hr.php deleted file mode 100644 index cfd85fd4..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hr.php +++ /dev/null @@ -1,111 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - François B - * - Tim Fish - * - shaishavgandhi05 - * - Serhan Apaydın - * - JD Isaacks - * - tomhorvat - * - Josh Soref - * - François B - * - shaishavgandhi05 - * - Serhan Apaydın - * - JD Isaacks - * - tomhorvat - * - Stjepan Majdak - * - Vanja Retkovac (vr00) - */ - -use Carbon\CarbonInterface; - -return [ - 'year' => ':count godinu|:count godine|:count godina', - 'y' => ':count god.|:count god.|:count god.', - 'month' => ':count mjesec|:count mjeseca|:count mjeseci', - 'm' => ':count mj.|:count mj.|:count mj.', - 'week' => ':count tjedan|:count tjedna|:count tjedana', - 'w' => ':count tj.|:count tj.|:count tj.', - 'day' => ':count dan|:count dana|:count dana', - 'd' => ':count d.|:count d.|:count d.', - 'hour' => ':count sat|:count sata|:count sati', - 'h' => ':count sat|:count sata|:count sati', - 'minute' => ':count minutu|:count minute|:count minuta', - 'min' => ':count min.|:count min.|:count min.', - 'second' => ':count sekundu|:count sekunde|:count sekundi', - 'a_second' => 'nekoliko sekundi|:count sekunde|:count sekundi', - 's' => ':count sek.|:count sek.|:count sek.', - 'ago' => 'prije :time', - 'from_now' => 'za :time', - 'after' => ':time poslije', - 'before' => ':time prije', - 'diff_now' => 'sad', - 'diff_today' => 'danas', - 'diff_today_regexp' => 'danas(?:\\s+u)?', - 'diff_yesterday' => 'jučer', - 'diff_yesterday_regexp' => 'jučer(?:\\s+u)?', - 'diff_tomorrow' => 'sutra', - 'diff_tomorrow_regexp' => 'sutra(?:\\s+u)?', - 'diff_before_yesterday' => 'prekjučer', - 'diff_after_tomorrow' => 'prekosutra', - 'formats' => [ - 'LT' => 'H:mm', - 'LTS' => 'H:mm:ss', - 'L' => 'D. M. YYYY.', - 'LL' => 'D. MMMM YYYY.', - 'LLL' => 'D. MMMM YYYY. H:mm', - 'LLLL' => 'dddd, D. MMMM YYYY. H:mm', - ], - 'calendar' => [ - 'sameDay' => '[danas u] LT', - 'nextDay' => '[sutra u] LT', - 'nextWeek' => function (CarbonInterface $date) { - switch ($date->dayOfWeek) { - case 0: - return '[u] [nedjelju] [u] LT'; - case 3: - return '[u] [srijedu] [u] LT'; - case 6: - return '[u] [subotu] [u] LT'; - default: - return '[u] dddd [u] LT'; - } - }, - 'lastDay' => '[jučer u] LT', - 'lastWeek' => function (CarbonInterface $date) { - switch ($date->dayOfWeek) { - case 0: - case 3: - return '[prošlu] dddd [u] LT'; - case 6: - return '[prošle] [subote] [u] LT'; - default: - return '[prošli] dddd [u] LT'; - } - }, - 'sameElse' => 'L', - ], - 'ordinal' => ':number.', - 'months' => ['siječnja', 'veljače', 'ožujka', 'travnja', 'svibnja', 'lipnja', 'srpnja', 'kolovoza', 'rujna', 'listopada', 'studenoga', 'prosinca'], - 'months_standalone' => ['siječanj', 'veljača', 'ožujak', 'travanj', 'svibanj', 'lipanj', 'srpanj', 'kolovoz', 'rujan', 'listopad', 'studeni', 'prosinac'], - 'months_short' => ['sij.', 'velj.', 'ožu.', 'tra.', 'svi.', 'lip.', 'srp.', 'kol.', 'ruj.', 'lis.', 'stu.', 'pro.'], - 'months_regexp' => '/(D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/', - 'weekdays' => ['nedjelju', 'ponedjeljak', 'utorak', 'srijedu', 'četvrtak', 'petak', 'subotu'], - 'weekdays_standalone' => ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - 'weekdays_short' => ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'], - 'weekdays_min' => ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' i '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hr_BA.php b/vendor/nesbot/carbon/src/Carbon/Lang/hr_BA.php deleted file mode 100644 index 7763a458..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hr_BA.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - DarkoDevelop - */ -return array_replace_recursive(require __DIR__.'/hr.php', [ - 'weekdays' => ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - 'weekdays_short' => ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - 'weekdays_min' => ['ned', 'pon', 'uto', 'sri', 'čet', 'pet', 'sub'], - 'months' => ['siječnja', 'veljače', 'ožujka', 'travnja', 'svibnja', 'lipnja', 'srpnja', 'kolovoza', 'rujna', 'listopada', 'studenoga', 'prosinca'], - 'months_short' => ['sij', 'velj', 'ožu', 'tra', 'svi', 'lip', 'srp', 'kol', 'ruj', 'lis', 'stu', 'pro'], - 'months_standalone' => ['siječanj', 'veljača', 'ožujak', 'travanj', 'svibanj', 'lipanj', 'srpanj', 'kolovoz', 'rujan', 'listopad', 'studeni', 'prosinac'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D. M. yy.', - 'LL' => 'D. MMM YYYY.', - 'LLL' => 'D. MMMM YYYY. HH:mm', - 'LLLL' => 'dddd, D. MMMM YYYY. HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hr_HR.php b/vendor/nesbot/carbon/src/Carbon/Lang/hr_HR.php deleted file mode 100644 index db74d8c7..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hr_HR.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/hr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hsb.php b/vendor/nesbot/carbon/src/Carbon/Lang/hsb.php deleted file mode 100644 index 3537b8ba..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hsb.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/hsb_DE.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hsb_DE.php b/vendor/nesbot/carbon/src/Carbon/Lang/hsb_DE.php deleted file mode 100644 index 6ba22716..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hsb_DE.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Information from Michael Wolf Andrzej Krzysztofowicz ankry@mif.pg.gda.pl - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD.MM.YYYY', - 'LL' => 'DD. MMMM YYYY', - 'LLL' => 'DD. MMMM, HH:mm [hodź.]', - 'LLLL' => 'dddd, DD. MMMM YYYY, HH:mm [hodź.]', - ], - 'months' => ['januara', 'februara', 'měrca', 'apryla', 'meje', 'junija', 'julija', 'awgusta', 'septembra', 'oktobra', 'nowembra', 'decembra'], - 'months_short' => ['Jan', 'Feb', 'Měr', 'Apr', 'Mej', 'Jun', 'Jul', 'Awg', 'Sep', 'Okt', 'Now', 'Dec'], - 'weekdays' => ['Njedźela', 'Póndźela', 'Wutora', 'Srjeda', 'Štvórtk', 'Pjatk', 'Sobota'], - 'weekdays_short' => ['Nj', 'Pó', 'Wu', 'Sr', 'Št', 'Pj', 'So'], - 'weekdays_min' => ['Nj', 'Pó', 'Wu', 'Sr', 'Št', 'Pj', 'So'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - - 'year' => ':count lěto', - 'y' => ':count lěto', - 'a_year' => ':count lěto', - - 'month' => ':count měsac', - 'm' => ':count měsac', - 'a_month' => ':count měsac', - - 'week' => ':count tydźeń', - 'w' => ':count tydźeń', - 'a_week' => ':count tydźeń', - - 'day' => ':count dźeń', - 'd' => ':count dźeń', - 'a_day' => ':count dźeń', - - 'hour' => ':count hodźina', - 'h' => ':count hodźina', - 'a_hour' => ':count hodźina', - - 'minute' => ':count chwila', - 'min' => ':count chwila', - 'a_minute' => ':count chwila', - - 'second' => ':count druhi', - 's' => ':count druhi', - 'a_second' => ':count druhi', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ht.php b/vendor/nesbot/carbon/src/Carbon/Lang/ht.php deleted file mode 100644 index ebd12ad1..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ht.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/ht_HT.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ht_HT.php b/vendor/nesbot/carbon/src/Carbon/Lang/ht_HT.php deleted file mode 100644 index 139b813b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ht_HT.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Sugar Labs // OLPC sugarlabs.org libc-alpha@sourceware.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['janvye', 'fevriye', 'mas', 'avril', 'me', 'jen', 'jiyè', 'out', 'septanm', 'oktòb', 'novanm', 'desanm'], - 'months_short' => ['jan', 'fev', 'mas', 'avr', 'me', 'jen', 'jiy', 'out', 'sep', 'okt', 'nov', 'des'], - 'weekdays' => ['dimanch', 'lendi', 'madi', 'mèkredi', 'jedi', 'vandredi', 'samdi'], - 'weekdays_short' => ['dim', 'len', 'mad', 'mèk', 'jed', 'van', 'sam'], - 'weekdays_min' => ['dim', 'len', 'mad', 'mèk', 'jed', 'van', 'sam'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - - 'year' => ':count lane', - 'y' => ':count lane', - 'a_year' => ':count lane', - - 'month' => 'mwa :count', - 'm' => 'mwa :count', - 'a_month' => 'mwa :count', - - 'week' => 'semèn :count', - 'w' => 'semèn :count', - 'a_week' => 'semèn :count', - - 'day' => ':count jou', - 'd' => ':count jou', - 'a_day' => ':count jou', - - 'hour' => ':count lè', - 'h' => ':count lè', - 'a_hour' => ':count lè', - - 'minute' => ':count minit', - 'min' => ':count minit', - 'a_minute' => ':count minit', - - 'second' => ':count segonn', - 's' => ':count segonn', - 'a_second' => ':count segonn', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hu.php b/vendor/nesbot/carbon/src/Carbon/Lang/hu.php deleted file mode 100644 index b7583eec..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hu.php +++ /dev/null @@ -1,118 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Adam Brunner - * - Brett Johnson - * - balping - */ - -use Carbon\CarbonInterface; - -$huWeekEndings = ['vasárnap', 'hétfőn', 'kedden', 'szerdán', 'csütörtökön', 'pénteken', 'szombaton']; - -return [ - 'year' => ':count év', - 'y' => ':count év', - 'month' => ':count hónap', - 'm' => ':count hónap', - 'week' => ':count hét', - 'w' => ':count hét', - 'day' => ':count nap', - 'd' => ':count nap', - 'hour' => ':count óra', - 'h' => ':count óra', - 'minute' => ':count perc', - 'min' => ':count perc', - 'second' => ':count másodperc', - 's' => ':count másodperc', - 'ago' => ':time', - 'from_now' => ':time múlva', - 'after' => ':time később', - 'before' => ':time korábban', - 'year_ago' => ':count éve', - 'y_ago' => ':count éve', - 'month_ago' => ':count hónapja', - 'm_ago' => ':count hónapja', - 'week_ago' => ':count hete', - 'w_ago' => ':count hete', - 'day_ago' => ':count napja', - 'd_ago' => ':count napja', - 'hour_ago' => ':count órája', - 'h_ago' => ':count órája', - 'minute_ago' => ':count perce', - 'min_ago' => ':count perce', - 'second_ago' => ':count másodperce', - 's_ago' => ':count másodperce', - 'year_after' => ':count évvel', - 'y_after' => ':count évvel', - 'month_after' => ':count hónappal', - 'm_after' => ':count hónappal', - 'week_after' => ':count héttel', - 'w_after' => ':count héttel', - 'day_after' => ':count nappal', - 'd_after' => ':count nappal', - 'hour_after' => ':count órával', - 'h_after' => ':count órával', - 'minute_after' => ':count perccel', - 'min_after' => ':count perccel', - 'second_after' => ':count másodperccel', - 's_after' => ':count másodperccel', - 'year_before' => ':count évvel', - 'y_before' => ':count évvel', - 'month_before' => ':count hónappal', - 'm_before' => ':count hónappal', - 'week_before' => ':count héttel', - 'w_before' => ':count héttel', - 'day_before' => ':count nappal', - 'd_before' => ':count nappal', - 'hour_before' => ':count órával', - 'h_before' => ':count órával', - 'minute_before' => ':count perccel', - 'min_before' => ':count perccel', - 'second_before' => ':count másodperccel', - 's_before' => ':count másodperccel', - 'months' => ['január', 'február', 'március', 'április', 'május', 'június', 'július', 'augusztus', 'szeptember', 'október', 'november', 'december'], - 'months_short' => ['jan.', 'febr.', 'márc.', 'ápr.', 'máj.', 'jún.', 'júl.', 'aug.', 'szept.', 'okt.', 'nov.', 'dec.'], - 'weekdays' => ['vasárnap', 'hétfő', 'kedd', 'szerda', 'csütörtök', 'péntek', 'szombat'], - 'weekdays_short' => ['vas', 'hét', 'kedd', 'sze', 'csüt', 'pén', 'szo'], - 'weekdays_min' => ['v', 'h', 'k', 'sze', 'cs', 'p', 'sz'], - 'ordinal' => ':number.', - 'diff_now' => 'most', - 'diff_today' => 'ma', - 'diff_yesterday' => 'tegnap', - 'diff_tomorrow' => 'holnap', - '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', - ], - 'calendar' => [ - 'sameDay' => '[ma] LT[-kor]', - 'nextDay' => '[holnap] LT[-kor]', - 'nextWeek' => function (CarbonInterface $date) use ($huWeekEndings) { - return '['.$huWeekEndings[$date->dayOfWeek].'] LT[-kor]'; - }, - 'lastDay' => '[tegnap] LT[-kor]', - 'lastWeek' => function (CarbonInterface $date) use ($huWeekEndings) { - return '[múlt '.$huWeekEndings[$date->dayOfWeek].'] LT[-kor]'; - }, - 'sameElse' => 'L', - ], - 'meridiem' => ['DE', 'DU'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' és '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hu_HU.php b/vendor/nesbot/carbon/src/Carbon/Lang/hu_HU.php deleted file mode 100644 index b1c48541..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hu_HU.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/hu.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hy.php b/vendor/nesbot/carbon/src/Carbon/Lang/hy.php deleted file mode 100644 index 8b129947..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hy.php +++ /dev/null @@ -1,95 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - mhamlet - */ -return [ - 'year' => ':count տարի', - 'a_year' => 'տարի|:count տարի', - 'y' => ':countտ', - 'month' => ':count ամիս', - 'a_month' => 'ամիս|:count ամիս', - 'm' => ':countամ', - 'week' => ':count շաբաթ', - 'a_week' => 'շաբաթ|:count շաբաթ', - 'w' => ':countշ', - 'day' => ':count օր', - 'a_day' => 'օր|:count օր', - 'd' => ':countօր', - 'hour' => ':count ժամ', - 'a_hour' => 'ժամ|:count ժամ', - 'h' => ':countժ', - 'minute' => ':count րոպե', - 'a_minute' => 'րոպե|:count րոպե', - 'min' => ':countր', - 'second' => ':count վայրկյան', - 'a_second' => 'մի քանի վայրկյան|:count վայրկյան', - 's' => ':countվրկ', - 'ago' => ':time առաջ', - 'from_now' => ':timeից', - 'after' => ':time հետո', - 'before' => ':time առաջ', - 'diff_now' => 'հիմա', - 'diff_today' => 'այսօր', - 'diff_yesterday' => 'երեկ', - 'diff_tomorrow' => 'վաղը', - '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', - ], - 'calendar' => [ - 'sameDay' => '[այսօր] LT', - 'nextDay' => '[վաղը] LT', - 'nextWeek' => 'dddd [օրը ժամը] LT', - 'lastDay' => '[երեկ] LT', - 'lastWeek' => '[անցած] dddd [օրը ժամը] LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number, $period) { - switch ($period) { - case 'DDD': - case 'w': - case 'W': - case 'DDDo': - return $number.($number === 1 ? '-ին' : '-րդ'); - default: - return $number; - } - }, - 'meridiem' => function ($hour) { - if ($hour < 4) { - return 'գիշերվա'; - } - if ($hour < 12) { - return 'առավոտվա'; - } - if ($hour < 17) { - return 'ցերեկվա'; - } - - return 'երեկոյան'; - }, - 'months' => ['հունվարի', 'փետրվարի', 'մարտի', 'ապրիլի', 'մայիսի', 'հունիսի', 'հուլիսի', 'օգոստոսի', 'սեպտեմբերի', 'հոկտեմբերի', 'նոյեմբերի', 'դեկտեմբերի'], - 'months_standalone' => ['հունվար', 'փետրվար', 'մարտ', 'ապրիլ', 'մայիս', 'հունիս', 'հուլիս', 'օգոստոս', 'սեպտեմբեր', 'հոկտեմբեր', 'նոյեմբեր', 'դեկտեմբեր'], - 'months_short' => ['հնվ', 'փտր', 'մրտ', 'ապր', 'մյս', 'հնս', 'հլս', 'օգս', 'սպտ', 'հկտ', 'նմբ', 'դկտ'], - 'months_regexp' => '/(D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/', - 'weekdays' => ['կիրակի', 'երկուշաբթի', 'երեքշաբթի', 'չորեքշաբթի', 'հինգշաբթի', 'ուրբաթ', 'շաբաթ'], - 'weekdays_short' => ['կրկ', 'երկ', 'երք', 'չրք', 'հնգ', 'ուրբ', 'շբթ'], - 'weekdays_min' => ['կրկ', 'երկ', 'երք', 'չրք', 'հնգ', 'ուրբ', 'շբթ'], - 'list' => [', ', ' եւ '], - 'first_day_of_week' => 1, -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/hy_AM.php b/vendor/nesbot/carbon/src/Carbon/Lang/hy_AM.php deleted file mode 100644 index 4587df56..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/hy_AM.php +++ /dev/null @@ -1,24 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - François B - * - Tim Fish - * - Serhan Apaydın - * - JD Isaacks - */ -return array_replace_recursive(require __DIR__.'/hy.php', [ - 'from_now' => ':time հետո', - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/i18n.php b/vendor/nesbot/carbon/src/Carbon/Lang/i18n.php deleted file mode 100644 index e65449b8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/i18n.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'YYYY-MM-DD', - ], - 'months' => ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'], - 'months_short' => ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'], - 'weekdays' => ['1', '2', '3', '4', '5', '6', '7'], - 'weekdays_short' => ['1', '2', '3', '4', '5', '6', '7'], - 'weekdays_min' => ['1', '2', '3', '4', '5', '6', '7'], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 4, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ia.php b/vendor/nesbot/carbon/src/Carbon/Lang/ia.php deleted file mode 100644 index 0a0d5e61..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ia.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/ia_FR.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ia_FR.php b/vendor/nesbot/carbon/src/Carbon/Lang/ia_FR.php deleted file mode 100644 index de4b2fa0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ia_FR.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Fedora Project Nik Kalach nikka@fedoraproject.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], - 'months' => ['januario', 'februario', 'martio', 'april', 'maio', 'junio', 'julio', 'augusto', 'septembre', 'octobre', 'novembre', 'decembre'], - 'months_short' => ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'], - 'weekdays' => ['dominica', 'lunedi', 'martedi', 'mercuridi', 'jovedi', 'venerdi', 'sabbato'], - 'weekdays_short' => ['dom', 'lun', 'mar', 'mer', 'jov', 'ven', 'sab'], - 'weekdays_min' => ['dom', 'lun', 'mar', 'mer', 'jov', 'ven', 'sab'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - - 'year' => 'anno :count', - 'y' => 'anno :count', - 'a_year' => 'anno :count', - - 'month' => ':count mense', - 'm' => ':count mense', - 'a_month' => ':count mense', - - 'week' => ':count septimana', - 'w' => ':count septimana', - 'a_week' => ':count septimana', - - 'day' => ':count die', - 'd' => ':count die', - 'a_day' => ':count die', - - 'hour' => ':count hora', - 'h' => ':count hora', - 'a_hour' => ':count hora', - - 'minute' => ':count minuscule', - 'min' => ':count minuscule', - 'a_minute' => ':count minuscule', - - 'second' => ':count secunda', - 's' => ':count secunda', - 'a_second' => ':count secunda', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/id.php b/vendor/nesbot/carbon/src/Carbon/Lang/id.php deleted file mode 100644 index afaf78f2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/id.php +++ /dev/null @@ -1,92 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - du - * - JD Isaacks - * - Nafies Luthfi - * - Raymundus Jati Primanda (mundusjp) - * - diankur313 - * - a-wip0 - */ -return [ - 'year' => ':count tahun', - 'a_year' => '{1}setahun|]1,Inf[:count tahun', - 'y' => ':countthn', - 'month' => ':count bulan', - 'a_month' => '{1}sebulan|]1,Inf[:count bulan', - 'm' => ':countbln', - 'week' => ':count minggu', - 'a_week' => '{1}seminggu|]1,Inf[:count minggu', - 'w' => ':countmgg', - 'day' => ':count hari', - 'a_day' => '{1}sehari|]1,Inf[:count hari', - 'd' => ':counthr', - 'hour' => ':count jam', - 'a_hour' => '{1}sejam|]1,Inf[:count jam', - 'h' => ':countj', - 'minute' => ':count menit', - 'a_minute' => '{1}semenit|]1,Inf[:count menit', - 'min' => ':countmnt', - 'second' => ':count detik', - 'a_second' => '{1}beberapa detik|]1,Inf[:count detik', - 's' => ':countdt', - 'ago' => ':time yang lalu', - 'from_now' => ':time dari sekarang', - 'after' => ':time setelahnya', - 'before' => ':time sebelumnya', - 'diff_now' => 'sekarang', - 'diff_today' => 'Hari', - 'diff_today_regexp' => 'Hari(?:\\s+ini)?(?:\\s+pukul)?', - 'diff_yesterday' => 'kemarin', - 'diff_yesterday_regexp' => 'Kemarin(?:\\s+pukul)?', - 'diff_tomorrow' => 'besok', - 'diff_tomorrow_regexp' => 'Besok(?:\\s+pukul)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Hari ini pukul] LT', - 'nextDay' => '[Besok pukul] LT', - 'nextWeek' => 'dddd [pukul] LT', - 'lastDay' => '[Kemarin pukul] LT', - 'lastWeek' => 'dddd [lalu pukul] LT', - 'sameElse' => 'L', - ], - 'meridiem' => function ($hour) { - if ($hour < 11) { - return 'pagi'; - } - if ($hour < 15) { - return 'siang'; - } - if ($hour < 19) { - return 'sore'; - } - - return 'malam'; - }, - 'months' => ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'], - 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agt', 'Sep', 'Okt', 'Nov', 'Des'], - 'weekdays' => ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'], - 'weekdays_short' => ['Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'], - 'weekdays_min' => ['Mg', 'Sn', 'Sl', 'Rb', 'Km', 'Jm', 'Sb'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' dan '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/id_ID.php b/vendor/nesbot/carbon/src/Carbon/Lang/id_ID.php deleted file mode 100644 index d5953a14..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/id_ID.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/id.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ig.php b/vendor/nesbot/carbon/src/Carbon/Lang/ig.php deleted file mode 100644 index de51e9cc..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ig.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/ig_NG.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ig_NG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ig_NG.php deleted file mode 100644 index 0034e35d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ig_NG.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - pablo@mandriva.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['Jenụwarị', 'Febrụwarị', 'Maachị', 'Eprel', 'Mee', 'Juun', 'Julaị', 'Ọgọọst', 'Septemba', 'Ọktoba', 'Novemba', 'Disemba'], - 'months_short' => ['Jen', 'Feb', 'Maa', 'Epr', 'Mee', 'Juu', 'Jul', 'Ọgọ', 'Sep', 'Ọkt', 'Nov', 'Dis'], - 'weekdays' => ['sọnde', 'mọnde', 'tuzde', 'wenzde', 'tọsde', 'fraịde', 'satọde'], - 'weekdays_short' => ['sọn', 'mọn', 'tuz', 'wen', 'tọs', 'fra', 'sat'], - 'weekdays_min' => ['sọn', 'mọn', 'tuz', 'wen', 'tọs', 'fra', 'sat'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - - 'year' => 'afo :count', - 'y' => 'afo :count', - 'a_year' => 'afo :count', - - 'month' => 'önwa :count', - 'm' => 'önwa :count', - 'a_month' => 'önwa :count', - - 'week' => 'izu :count', - 'w' => 'izu :count', - 'a_week' => 'izu :count', - - 'day' => 'ụbọchị :count', - 'd' => 'ụbọchị :count', - 'a_day' => 'ụbọchị :count', - - 'hour' => 'awa :count', - 'h' => 'awa :count', - 'a_hour' => 'awa :count', - - 'minute' => 'minit :count', - 'min' => 'minit :count', - 'a_minute' => 'minit :count', - - 'second' => 'sekọnd :count', - 's' => 'sekọnd :count', - 'a_second' => 'sekọnd :count', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ii.php b/vendor/nesbot/carbon/src/Carbon/Lang/ii.php deleted file mode 100644 index a4246c27..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ii.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['ꎸꄑ', 'ꁯꋒ'], - 'weekdays' => ['ꑭꆏꑍ', 'ꆏꊂꋍ', 'ꆏꊂꑍ', 'ꆏꊂꌕ', 'ꆏꊂꇖ', 'ꆏꊂꉬ', 'ꆏꊂꃘ'], - 'weekdays_short' => ['ꑭꆏ', 'ꆏꋍ', 'ꆏꑍ', 'ꆏꌕ', 'ꆏꇖ', 'ꆏꉬ', 'ꆏꃘ'], - 'weekdays_min' => ['ꑭꆏ', 'ꆏꋍ', 'ꆏꑍ', 'ꆏꌕ', 'ꆏꇖ', 'ꆏꉬ', 'ꆏꃘ'], - 'months' => null, - 'months_short' => ['ꋍꆪ', 'ꑍꆪ', 'ꌕꆪ', 'ꇖꆪ', 'ꉬꆪ', 'ꃘꆪ', 'ꏃꆪ', 'ꉆꆪ', 'ꈬꆪ', 'ꊰꆪ', 'ꊰꊪꆪ', 'ꊰꑋꆪ'], - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'YYYY-MM-dd', - 'LL' => 'YYYY MMM D', - 'LLL' => 'YYYY MMMM D h:mm a', - 'LLLL' => 'YYYY MMMM D, dddd h:mm a', - ], - - 'year' => ':count ꒉ', // less reliable - 'y' => ':count ꒉ', // less reliable - 'a_year' => ':count ꒉ', // less reliable - - 'month' => ':count ꆪ', - 'm' => ':count ꆪ', - 'a_month' => ':count ꆪ', - - 'week' => ':count ꏃ', // less reliable - 'w' => ':count ꏃ', // less reliable - 'a_week' => ':count ꏃ', // less reliable - - 'day' => ':count ꏜ', // less reliable - 'd' => ':count ꏜ', // less reliable - 'a_day' => ':count ꏜ', // less reliable - - 'hour' => ':count ꄮꈉ', - 'h' => ':count ꄮꈉ', - 'a_hour' => ':count ꄮꈉ', - - 'minute' => ':count ꀄꊭ', // less reliable - 'min' => ':count ꀄꊭ', // less reliable - 'a_minute' => ':count ꀄꊭ', // less reliable - - 'second' => ':count ꇅ', // less reliable - 's' => ':count ꇅ', // less reliable - 'a_second' => ':count ꇅ', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ik.php b/vendor/nesbot/carbon/src/Carbon/Lang/ik.php deleted file mode 100644 index 7a13aa2d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ik.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/ik_CA.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ik_CA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ik_CA.php deleted file mode 100644 index bb2a109b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ik_CA.php +++ /dev/null @@ -1,50 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - pablo@mandriva.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['Siqiññaatchiaq', 'Siqiññaasrugruk', 'Paniqsiqsiivik', 'Qilġich Tatqiat', 'Suppivik', 'Iġñivik', 'Itchavik', 'Tiññivik', 'Amiġaiqsivik', 'Sikkuvik', 'Nippivik', 'Siqiñġiḷaq'], - 'months_short' => ['Sñt', 'Sñs', 'Pan', 'Qil', 'Sup', 'Iġñ', 'Itc', 'Tiñ', 'Ami', 'Sik', 'Nip', 'Siq'], - 'weekdays' => ['Minġuiqsioiq', 'Savałłiq', 'Ilaqtchiioiq', 'Qitchiioiq', 'Sisamiioiq', 'Tallimmiioiq', 'Maqinġuoiq'], - 'weekdays_short' => ['Min', 'Sav', 'Ila', 'Qit', 'Sis', 'Tal', 'Maq'], - 'weekdays_min' => ['Min', 'Sav', 'Ila', 'Qit', 'Sis', 'Tal', 'Maq'], - 'day_of_first_week_of_year' => 1, - - 'year' => ':count ukiuq', - 'y' => ':count ukiuq', - 'a_year' => ':count ukiuq', - - 'month' => ':count Tatqiat', - 'm' => ':count Tatqiat', - 'a_month' => ':count Tatqiat', - - 'week' => ':count tatqiat', // less reliable - 'w' => ':count tatqiat', // less reliable - 'a_week' => ':count tatqiat', // less reliable - - 'day' => ':count siqiñiq', // less reliable - 'd' => ':count siqiñiq', // less reliable - 'a_day' => ':count siqiñiq', // less reliable - - 'hour' => ':count Siḷa', // less reliable - 'h' => ':count Siḷa', // less reliable - 'a_hour' => ':count Siḷa', // less reliable - - 'second' => ':count iġñiq', // less reliable - 's' => ':count iġñiq', // less reliable - 'a_second' => ':count iġñiq', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/in.php b/vendor/nesbot/carbon/src/Carbon/Lang/in.php deleted file mode 100644 index d5953a14..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/in.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/id.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/is.php b/vendor/nesbot/carbon/src/Carbon/Lang/is.php deleted file mode 100644 index 9990168c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/is.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Kristján Ingi Geirsson - */ -return [ - 'year' => '1 ár|:count ár', - 'y' => '1 ár|:count ár', - 'month' => '1 mánuður|:count mánuðir', - 'm' => '1 mánuður|:count mánuðir', - 'week' => '1 vika|:count vikur', - 'w' => '1 vika|:count vikur', - 'day' => '1 dagur|:count dagar', - 'd' => '1 dagur|:count dagar', - 'hour' => '1 klukkutími|:count klukkutímar', - 'h' => '1 klukkutími|:count klukkutímar', - 'minute' => '1 mínúta|:count mínútur', - 'min' => '1 mínúta|:count mínútur', - 'second' => '1 sekúnda|:count sekúndur', - 's' => '1 sekúnda|:count sekúndur', - 'ago' => ':time síðan', - 'from_now' => ':time síðan', - 'after' => ':time eftir', - 'before' => ':time fyrir', - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' og '], - 'meridiem' => ['fh', 'eh'], - 'diff_now' => 'núna', - 'diff_yesterday' => 'í gær', - 'diff_tomorrow' => 'á morgun', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD.MM.YYYY', - 'LL' => 'D. MMMM YYYY', - 'LLL' => 'D. MMMM [kl.] HH:mm', - 'LLLL' => 'dddd D. MMMM YYYY [kl.] HH:mm', - ], - 'weekdays' => ['sunnudaginn', 'mánudaginn', 'þriðjudaginn', 'miðvikudaginn', 'fimmtudaginn', 'föstudaginn', 'laugardaginn'], - 'weekdays_short' => ['sun', 'mán', 'þri', 'mið', 'fim', 'fös', 'lau'], - 'weekdays_min' => ['sun', 'mán', 'þri', 'mið', 'fim', 'fös', 'lau'], - 'months' => ['janúar', 'febrúar', 'mars', 'apríl', 'maí', 'júní', 'júlí', 'ágúst', 'september', 'október', 'nóvember', 'desember'], - 'months_short' => ['jan', 'feb', 'mar', 'apr', 'maí', 'jún', 'júl', 'ágú', 'sep', 'okt', 'nóv', 'des'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/is_IS.php b/vendor/nesbot/carbon/src/Carbon/Lang/is_IS.php deleted file mode 100644 index 4d35c448..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/is_IS.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/is.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/it.php b/vendor/nesbot/carbon/src/Carbon/Lang/it.php deleted file mode 100644 index 49875d7e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/it.php +++ /dev/null @@ -1,115 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ash - * - François B - * - Marco Perrando - * - Massimiliano Caniparoli - * - JD Isaacks - * - Andrea Martini - * - Francesco Marasco - * - Tizianoz93 - * - Davide Casiraghi (davide-casiraghi) - * - Pete Scopes (pdscopes) - */ - -use Carbon\CarbonInterface; - -return [ - 'year' => ':count anno|:count anni', - 'a_year' => 'un anno|:count anni', - 'y' => ':count anno|:count anni', - 'month' => ':count mese|:count mesi', - 'a_month' => 'un mese|:count mesi', - 'm' => ':count mese|:count mesi', - 'week' => ':count settimana|:count settimane', - 'a_week' => 'una settimana|:count settimane', - 'w' => ':count set.', - 'day' => ':count giorno|:count giorni', - 'a_day' => 'un giorno|:count giorni', - 'd' => ':count g|:count gg', - 'hour' => ':count ora|:count ore', - 'a_hour' => 'un\'ora|:count ore', - 'h' => ':count h', - 'minute' => ':count minuto|:count minuti', - 'a_minute' => 'un minuto|:count minuti', - 'min' => ':count min.', - 'second' => ':count secondo|:count secondi', - 'a_second' => 'alcuni secondi|:count secondi', - 's' => ':count sec.', - 'millisecond' => ':count millisecondo|:count millisecondi', - 'a_millisecond' => 'un millisecondo|:count millisecondi', - 'ms' => ':countms', - 'microsecond' => ':count microsecondo|:count microsecondi', - 'a_microsecond' => 'un microsecondo|:count microsecondi', - 'µs' => ':countµs', - 'ago' => ':time fa', - 'from_now' => function ($time) { - return (preg_match('/^\d.+$/', $time) ? 'tra' : 'in')." $time"; - }, - 'after' => ':time dopo', - 'before' => ':time prima', - 'diff_now' => 'proprio ora', - 'diff_today' => 'Oggi', - 'diff_today_regexp' => 'Oggi(?:\\s+alle)?', - 'diff_yesterday' => 'ieri', - 'diff_yesterday_regexp' => 'Ieri(?:\\s+alle)?', - 'diff_tomorrow' => 'domani', - 'diff_tomorrow_regexp' => 'Domani(?:\\s+alle)?', - 'diff_before_yesterday' => 'l\'altro ieri', - 'diff_after_tomorrow' => 'dopodomani', - 'period_interval' => 'ogni :interval', - 'period_start_date' => 'dal :date', - 'period_end_date' => 'al :date', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Oggi alle] LT', - 'nextDay' => '[Domani alle] LT', - 'nextWeek' => 'dddd [alle] LT', - 'lastDay' => '[Ieri alle] LT', - 'lastWeek' => function (CarbonInterface $date) { - switch ($date->dayOfWeek) { - case 0: - return '[la scorsa] dddd [alle] LT'; - default: - return '[lo scorso] dddd [alle] LT'; - } - }, - 'sameElse' => 'L', - ], - 'ordinal' => ':numberº', - 'months' => ['gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre'], - 'months_short' => ['gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic'], - 'weekdays' => ['domenica', 'lunedì', 'martedì', 'mercoledì', 'giovedì', 'venerdì', 'sabato'], - 'weekdays_short' => ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab'], - 'weekdays_min' => ['do', 'lu', 'ma', 'me', 'gi', 've', 'sa'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' e '], - 'ordinal_words' => [ - 'of' => 'di', - 'first' => 'primo', - 'second' => 'secondo', - 'third' => 'terzo', - 'fourth' => 'quarto', - 'fifth' => 'quinto', - 'last' => 'ultimo', - ], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/it_CH.php b/vendor/nesbot/carbon/src/Carbon/Lang/it_CH.php deleted file mode 100644 index c23cc50e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/it_CH.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Propaganistas - */ -return array_replace_recursive(require __DIR__.'/it.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/it_IT.php b/vendor/nesbot/carbon/src/Carbon/Lang/it_IT.php deleted file mode 100644 index a5d19818..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/it_IT.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return require __DIR__.'/it.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/it_SM.php b/vendor/nesbot/carbon/src/Carbon/Lang/it_SM.php deleted file mode 100644 index 5e8fc92f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/it_SM.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/it.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/it_VA.php b/vendor/nesbot/carbon/src/Carbon/Lang/it_VA.php deleted file mode 100644 index 5e8fc92f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/it_VA.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/it.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/iu.php b/vendor/nesbot/carbon/src/Carbon/Lang/iu.php deleted file mode 100644 index 4fa97427..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/iu.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/iu_CA.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/iu_CA.php b/vendor/nesbot/carbon/src/Carbon/Lang/iu_CA.php deleted file mode 100644 index 6ab7e149..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/iu_CA.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Pablo Saratxaga pablo@mandriva.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'MM/DD/YY', - ], - 'months' => ['ᔮᓄᐊᓕ', 'ᕕᕗᐊᓕ', 'ᒪᔅᓯ', 'ᐃᐳᓗ', 'ᒪᐃ', 'ᔪᓂ', 'ᔪᓚᐃ', 'ᐊᒋᓯ', 'ᓯᑎᕙ', 'ᐊᑦᑐᕙ', 'ᓄᕕᕙ', 'ᑎᓯᕝᕙ'], - 'months_short' => ['ᔮᓄ', 'ᕕᕗ', 'ᒪᔅ', 'ᐃᐳ', 'ᒪᐃ', 'ᔪᓂ', 'ᔪᓚ', 'ᐊᒋ', 'ᓯᑎ', 'ᐊᑦ', 'ᓄᕕ', 'ᑎᓯ'], - 'weekdays' => ['ᓈᑦᑎᖑᔭᕐᕕᒃ', 'ᓇᒡᒐᔾᔭᐅ', 'ᓇᒡᒐᔾᔭᐅᓕᖅᑭᑦ', 'ᐱᖓᓲᓕᖅᓯᐅᑦ', 'ᕿᑎᖅᑰᑦ', 'ᐅᓪᓗᕈᓘᑐᐃᓇᖅ', 'ᓯᕙᑖᕕᒃ'], - 'weekdays_short' => ['ᓈ', 'ᓇ', 'ᓕ', 'ᐱ', 'ᕿ', 'ᐅ', 'ᓯ'], - 'weekdays_min' => ['ᓈ', 'ᓇ', 'ᓕ', 'ᐱ', 'ᕿ', 'ᐅ', 'ᓯ'], - 'day_of_first_week_of_year' => 1, - - 'year' => ':count ᐅᑭᐅᖅ', - 'y' => ':count ᐅᑭᐅᖅ', - 'a_year' => ':count ᐅᑭᐅᖅ', - - 'month' => ':count qaammat', - 'm' => ':count qaammat', - 'a_month' => ':count qaammat', - - 'week' => ':count sapaatip akunnera', - 'w' => ':count sapaatip akunnera', - 'a_week' => ':count sapaatip akunnera', - - 'day' => ':count ulloq', - 'd' => ':count ulloq', - 'a_day' => ':count ulloq', - - 'hour' => ':count ikarraq', - 'h' => ':count ikarraq', - 'a_hour' => ':count ikarraq', - - 'minute' => ':count titiqqaralaaq', // less reliable - 'min' => ':count titiqqaralaaq', // less reliable - 'a_minute' => ':count titiqqaralaaq', // less reliable - - 'second' => ':count marluk', // less reliable - 's' => ':count marluk', // less reliable - 'a_second' => ':count marluk', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/iw.php b/vendor/nesbot/carbon/src/Carbon/Lang/iw.php deleted file mode 100644 index a26e3506..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/iw.php +++ /dev/null @@ -1,58 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'months' => ['ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'], - 'months_short' => ['ינו׳', 'פבר׳', 'מרץ', 'אפר׳', 'מאי', 'יוני', 'יולי', 'אוג׳', 'ספט׳', 'אוק׳', 'נוב׳', 'דצמ׳'], - 'weekdays' => ['יום ראשון', 'יום שני', 'יום שלישי', 'יום רביעי', 'יום חמישי', 'יום שישי', 'יום שבת'], - 'weekdays_short' => ['יום א׳', 'יום ב׳', 'יום ג׳', 'יום ד׳', 'יום ה׳', 'יום ו׳', 'שבת'], - 'weekdays_min' => ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'], - 'meridiem' => ['לפנה״צ', 'אחה״צ'], - 'formats' => [ - 'LT' => 'H:mm', - 'LTS' => 'H:mm:ss', - 'L' => 'D.M.YYYY', - 'LL' => 'D בMMM YYYY', - 'LLL' => 'D בMMMM YYYY H:mm', - 'LLLL' => 'dddd, D בMMMM YYYY H:mm', - ], - - 'year' => ':count שנה', - 'y' => ':count שנה', - 'a_year' => ':count שנה', - - 'month' => ':count חודש', - 'm' => ':count חודש', - 'a_month' => ':count חודש', - - 'week' => ':count שבוע', - 'w' => ':count שבוע', - 'a_week' => ':count שבוע', - - 'day' => ':count יום', - 'd' => ':count יום', - 'a_day' => ':count יום', - - 'hour' => ':count שעה', - 'h' => ':count שעה', - 'a_hour' => ':count שעה', - - 'minute' => ':count דקה', - 'min' => ':count דקה', - 'a_minute' => ':count דקה', - - 'second' => ':count שניה', - 's' => ':count שניה', - 'a_second' => ':count שניה', - - 'ago' => 'לפני :time', - 'from_now' => 'בעוד :time', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ja.php b/vendor/nesbot/carbon/src/Carbon/Lang/ja.php deleted file mode 100644 index 1ca67519..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ja.php +++ /dev/null @@ -1,102 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Takuya Sawada - * - Atsushi Tanaka - * - François B - * - Jason Katz-Brown - * - Serhan Apaydın - * - XueWei - * - JD Isaacks - * - toyama satoshi - * - atakigawa - */ - -use Carbon\CarbonInterface; - -return [ - 'year' => ':count年', - 'y' => ':count年', - 'month' => ':countヶ月', - 'm' => ':countヶ月', - 'week' => ':count週間', - 'w' => ':count週間', - 'day' => ':count日', - 'd' => ':count日', - 'hour' => ':count時間', - 'h' => ':count時間', - 'minute' => ':count分', - 'min' => ':count分', - 'second' => ':count秒', - 'a_second' => '{1}数秒|]1,Inf[:count秒', - 's' => ':count秒', - 'ago' => ':time前', - 'from_now' => ':time後', - 'after' => ':time後', - 'before' => ':time前', - 'diff_now' => '今', - 'diff_today' => '今日', - 'diff_yesterday' => '昨日', - 'diff_tomorrow' => '明日', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY/MM/DD', - 'LL' => 'YYYY年M月D日', - 'LLL' => 'YYYY年M月D日 HH:mm', - 'LLLL' => 'YYYY年M月D日 dddd HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[今日] LT', - 'nextDay' => '[明日] LT', - 'nextWeek' => function (CarbonInterface $current, CarbonInterface $other) { - if ($other->week !== $current->week) { - return '[来週]dddd LT'; - } - - return 'dddd LT'; - }, - 'lastDay' => '[昨日] LT', - 'lastWeek' => function (CarbonInterface $current, CarbonInterface $other) { - if ($other->week !== $current->week) { - return '[先週]dddd LT'; - } - - return 'dddd LT'; - }, - 'sameElse' => 'L', - ], - 'ordinal' => function ($number, $period) { - switch ($period) { - case 'd': - case 'D': - case 'DDD': - return $number.'日'; - default: - return $number; - } - }, - 'meridiem' => ['午前', '午後'], - 'months' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - 'months_short' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - 'weekdays' => ['日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'], - 'weekdays_short' => ['日', '月', '火', '水', '木', '金', '土'], - 'weekdays_min' => ['日', '月', '火', '水', '木', '金', '土'], - 'list' => '、', - 'alt_numbers' => ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '二十', '二十一', '二十二', '二十三', '二十四', '二十五', '二十六', '二十七', '二十八', '二十九', '三十', '三十一', '三十二', '三十三', '三十四', '三十五', '三十六', '三十七', '三十八', '三十九', '四十', '四十一', '四十二', '四十三', '四十四', '四十五', '四十六', '四十七', '四十八', '四十九', '五十', '五十一', '五十二', '五十三', '五十四', '五十五', '五十六', '五十七', '五十八', '五十九', '六十', '六十一', '六十二', '六十三', '六十四', '六十五', '六十六', '六十七', '六十八', '六十九', '七十', '七十一', '七十二', '七十三', '七十四', '七十五', '七十六', '七十七', '七十八', '七十九', '八十', '八十一', '八十二', '八十三', '八十四', '八十五', '八十六', '八十七', '八十八', '八十九', '九十', '九十一', '九十二', '九十三', '九十四', '九十五', '九十六', '九十七', '九十八', '九十九'], - 'alt_numbers_pow' => [ - 10000 => '万', - 1000 => '千', - 100 => '百', - ], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ja_JP.php b/vendor/nesbot/carbon/src/Carbon/Lang/ja_JP.php deleted file mode 100644 index c2836253..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ja_JP.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ja.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/jgo.php b/vendor/nesbot/carbon/src/Carbon/Lang/jgo.php deleted file mode 100644 index 6a1e77a8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/jgo.php +++ /dev/null @@ -1,13 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/jmc.php b/vendor/nesbot/carbon/src/Carbon/Lang/jmc.php deleted file mode 100644 index ed92e8e7..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/jmc.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['utuko', 'kyiukonyi'], - 'weekdays' => ['Jumapilyi', 'Jumatatuu', 'Jumanne', 'Jumatanu', 'Alhamisi', 'Ijumaa', 'Jumamosi'], - 'weekdays_short' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - 'weekdays_min' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - 'months' => ['Januari', 'Februari', 'Machi', 'Aprilyi', 'Mei', 'Junyi', 'Julyai', 'Agusti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'], - 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/jv.php b/vendor/nesbot/carbon/src/Carbon/Lang/jv.php deleted file mode 100644 index bcbe044e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/jv.php +++ /dev/null @@ -1,71 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - tgfjt - * - JD Isaacks - */ -return [ - 'year' => '{1}setaun|]1,Inf[:count taun', - 'month' => '{1}sewulan|]1,Inf[:count wulan', - 'week' => '{1}sakminggu|]1,Inf[:count minggu', - 'day' => '{1}sedinten|]1,Inf[:count dinten', - 'hour' => '{1}setunggal jam|]1,Inf[:count jam', - 'minute' => '{1}setunggal menit|]1,Inf[:count menit', - 'second' => '{1}sawetawis detik|]1,Inf[:count detik', - 'ago' => ':time ingkang kepengker', - 'from_now' => 'wonten ing :time', - 'diff_today' => 'Dinten', - 'diff_yesterday' => 'Kala', - 'diff_yesterday_regexp' => 'Kala(?:\\s+wingi)?(?:\\s+pukul)?', - 'diff_tomorrow' => 'Mbenjang', - 'diff_tomorrow_regexp' => 'Mbenjang(?:\\s+pukul)?', - 'diff_today_regexp' => 'Dinten(?:\\s+puniko)?(?:\\s+pukul)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Dinten puniko pukul] LT', - 'nextDay' => '[Mbenjang pukul] LT', - 'nextWeek' => 'dddd [pukul] LT', - 'lastDay' => '[Kala wingi pukul] LT', - 'lastWeek' => 'dddd [kepengker pukul] LT', - 'sameElse' => 'L', - ], - 'meridiem' => function ($hour) { - if ($hour < 11) { - return 'enjing'; - } - if ($hour < 15) { - return 'siyang'; - } - if ($hour < 19) { - return 'sonten'; - } - - return 'ndalu'; - }, - 'months' => ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'Nopember', 'Desember'], - 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Ags', 'Sep', 'Okt', 'Nop', 'Des'], - 'weekdays' => ['Minggu', 'Senen', 'Seloso', 'Rebu', 'Kemis', 'Jemuwah', 'Septu'], - 'weekdays_short' => ['Min', 'Sen', 'Sel', 'Reb', 'Kem', 'Jem', 'Sep'], - 'weekdays_min' => ['Mg', 'Sn', 'Sl', 'Rb', 'Km', 'Jm', 'Sp'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' lan '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ka.php b/vendor/nesbot/carbon/src/Carbon/Lang/ka.php deleted file mode 100644 index a5d563d3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ka.php +++ /dev/null @@ -1,204 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Tornike Razmadze - * - François B - * - Lasha Dolidze - * - Tim Fish - * - JD Isaacks - * - Tornike Razmadze - * - François B - * - Lasha Dolidze - * - JD Isaacks - * - LONGMAN - * - Avtandil Kikabidze (akalongman) - * - Levan Velijanashvili (Stichoza) - */ - -use Carbon\CarbonInterface; - -return [ - 'year' => ':count წელი', - 'y' => ':count წელი', - 'a_year' => '{1}წელი|]1,Inf[:count წელი', - 'month' => ':count თვე', - 'm' => ':count თვე', - 'a_month' => '{1}თვე|]1,Inf[:count თვე', - 'week' => ':count კვირა', - 'w' => ':count კვირა', - 'a_week' => '{1}კვირა|]1,Inf[:count კვირა', - 'day' => ':count დღე', - 'd' => ':count დღე', - 'a_day' => '{1}დღე|]1,Inf[:count დღე', - 'hour' => ':count საათი', - 'h' => ':count საათი', - 'a_hour' => '{1}საათი|]1,Inf[:count საათი', - 'minute' => ':count წუთი', - 'min' => ':count წუთი', - 'a_minute' => '{1}წუთი|]1,Inf[:count წუთი', - 'second' => ':count წამი', - 's' => ':count წამი', - 'a_second' => '{1}რამდენიმე წამი|]1,Inf[:count წამი', - 'ago' => function ($time) { - $replacements = [ - // year - 'წელი' => 'წლის', - // month - 'თვე' => 'თვის', - // week - 'კვირა' => 'კვირის', - // day - 'დღე' => 'დღის', - // hour - 'საათი' => 'საათის', - // minute - 'წუთი' => 'წუთის', - // second - 'წამი' => 'წამის', - ]; - $time = strtr($time, array_flip($replacements)); - $time = strtr($time, $replacements); - - return "$time წინ"; - }, - 'from_now' => function ($time) { - $replacements = [ - // year - 'წელი' => 'წელიწადში', - // week - 'კვირა' => 'კვირაში', - // day - 'დღე' => 'დღეში', - // month - 'თვე' => 'თვეში', - // hour - 'საათი' => 'საათში', - // minute - 'წუთი' => 'წუთში', - // second - 'წამი' => 'წამში', - ]; - $time = strtr($time, array_flip($replacements)); - $time = strtr($time, $replacements); - - return $time; - }, - 'after' => function ($time) { - $replacements = [ - // year - 'წელი' => 'წლის', - // month - 'თვე' => 'თვის', - // week - 'კვირა' => 'კვირის', - // day - 'დღე' => 'დღის', - // hour - 'საათი' => 'საათის', - // minute - 'წუთი' => 'წუთის', - // second - 'წამი' => 'წამის', - ]; - $time = strtr($time, array_flip($replacements)); - $time = strtr($time, $replacements); - - return "$time შემდეგ"; - }, - 'before' => function ($time) { - $replacements = [ - // year - 'წელი' => 'წლით', - // month - 'თვე' => 'თვით', - // week - 'კვირა' => 'კვირით', - // day - 'დღე' => 'დღით', - // hour - 'საათი' => 'საათით', - // minute - 'წუთი' => 'წუთით', - // second - 'წამი' => 'წამით', - ]; - $time = strtr($time, array_flip($replacements)); - $time = strtr($time, $replacements); - - return "$time ადრე"; - }, - 'diff_now' => 'ახლა', - 'diff_today' => 'დღეს', - 'diff_yesterday' => 'გუშინ', - 'diff_tomorrow' => 'ხვალ', - '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', - ], - 'calendar' => [ - 'sameDay' => '[დღეს], LT[-ზე]', - 'nextDay' => '[ხვალ], LT[-ზე]', - 'nextWeek' => function (CarbonInterface $current, CarbonInterface $other) { - return ($current->isSameWeek($other) ? '' : '[შემდეგ] ').'dddd, LT[-ზე]'; - }, - 'lastDay' => '[გუშინ], LT[-ზე]', - 'lastWeek' => '[წინა] dddd, LT-ზე', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number) { - if ($number === 0) { - return $number; - } - if ($number === 1) { - return $number.'-ლი'; - } - if (($number < 20) || ($number <= 100 && ($number % 20 === 0)) || ($number % 100 === 0)) { - return 'მე-'.$number; - } - - return $number.'-ე'; - }, - 'months' => ['იანვარი', 'თებერვალი', 'მარტი', 'აპრილი', 'მაისი', 'ივნისი', 'ივლისი', 'აგვისტო', 'სექტემბერი', 'ოქტომბერი', 'ნოემბერი', 'დეკემბერი'], - 'months_standalone' => ['იანვარს', 'თებერვალს', 'მარტს', 'აპრილს', 'მაისს', 'ივნისს', 'ივლისს', 'აგვისტოს', 'სექტემბერს', 'ოქტომბერს', 'ნოემბერს', 'დეკემბერს'], - 'months_short' => ['იან', 'თებ', 'მარ', 'აპრ', 'მაი', 'ივნ', 'ივლ', 'აგვ', 'სექ', 'ოქტ', 'ნოე', 'დეკ'], - 'months_regexp' => '/(D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/', - 'weekdays' => ['კვირას', 'ორშაბათს', 'სამშაბათს', 'ოთხშაბათს', 'ხუთშაბათს', 'პარასკევს', 'შაბათს'], - 'weekdays_standalone' => ['კვირა', 'ორშაბათი', 'სამშაბათი', 'ოთხშაბათი', 'ხუთშაბათი', 'პარასკევი', 'შაბათი'], - 'weekdays_short' => ['კვი', 'ორშ', 'სამ', 'ოთხ', 'ხუთ', 'პარ', 'შაბ'], - 'weekdays_min' => ['კვ', 'ორ', 'სა', 'ოთ', 'ხუ', 'პა', 'შა'], - 'weekdays_regexp' => '/^([^d].*|.*[^d])$/', - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' და '], - 'meridiem' => function ($hour) { - if ($hour >= 4) { - if ($hour < 11) { - return 'დილის'; - } - - if ($hour < 16) { - return 'შუადღის'; - } - - if ($hour < 22) { - return 'საღამოს'; - } - } - - return 'ღამის'; - }, -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ka_GE.php b/vendor/nesbot/carbon/src/Carbon/Lang/ka_GE.php deleted file mode 100644 index a26d9305..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ka_GE.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ka.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kab.php b/vendor/nesbot/carbon/src/Carbon/Lang/kab.php deleted file mode 100644 index 94d64737..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/kab.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/kab_DZ.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kab_DZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/kab_DZ.php deleted file mode 100644 index 796660be..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/kab_DZ.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - belkacem77@gmail.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['Yennayer', 'Fuṛar', 'Meɣres', 'Yebrir', 'Mayyu', 'Yunyu', 'Yulyu', 'ɣuct', 'Ctembeṛ', 'Tubeṛ', 'Wambeṛ', 'Dujembeṛ'], - 'months_short' => ['Yen', 'Fur', 'Meɣ', 'Yeb', 'May', 'Yun', 'Yul', 'ɣuc', 'Cte', 'Tub', 'Wam', 'Duj'], - 'weekdays' => ['Acer', 'Arim', 'Aram', 'Ahad', 'Amhad', 'Sem', 'Sed'], - 'weekdays_short' => ['Ace', 'Ari', 'Ara', 'Aha', 'Amh', 'Sem', 'Sed'], - 'weekdays_min' => ['Ace', 'Ari', 'Ara', 'Aha', 'Amh', 'Sem', 'Sed'], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['FT', 'MD'], - - 'year' => ':count n yiseggasen', - 'y' => ':count n yiseggasen', - 'a_year' => ':count n yiseggasen', - - 'month' => ':count n wayyuren', - 'm' => ':count n wayyuren', - 'a_month' => ':count n wayyuren', - - 'week' => ':count n ledwaṛ', // less reliable - 'w' => ':count n ledwaṛ', // less reliable - 'a_week' => ':count n ledwaṛ', // less reliable - - 'day' => ':count n wussan', - 'd' => ':count n wussan', - 'a_day' => ':count n wussan', - - 'hour' => ':count n tsaɛtin', - 'h' => ':count n tsaɛtin', - 'a_hour' => ':count n tsaɛtin', - - 'minute' => ':count n tedqiqin', - 'min' => ':count n tedqiqin', - 'a_minute' => ':count n tedqiqin', - - 'second' => ':count tasdidt', // less reliable - 's' => ':count tasdidt', // less reliable - 'a_second' => ':count tasdidt', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kam.php b/vendor/nesbot/carbon/src/Carbon/Lang/kam.php deleted file mode 100644 index 0fc70d70..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/kam.php +++ /dev/null @@ -1,50 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['Ĩyakwakya', 'Ĩyawĩoo'], - 'weekdays' => ['Wa kyumwa', 'Wa kwambĩlĩlya', 'Wa kelĩ', 'Wa katatũ', 'Wa kana', 'Wa katano', 'Wa thanthatũ'], - 'weekdays_short' => ['Wky', 'Wkw', 'Wkl', 'Wtũ', 'Wkn', 'Wtn', 'Wth'], - 'weekdays_min' => ['Wky', 'Wkw', 'Wkl', 'Wtũ', 'Wkn', 'Wtn', 'Wth'], - 'months' => ['Mwai wa mbee', 'Mwai wa kelĩ', 'Mwai wa katatũ', 'Mwai wa kana', 'Mwai wa katano', 'Mwai wa thanthatũ', 'Mwai wa muonza', 'Mwai wa nyaanya', 'Mwai wa kenda', 'Mwai wa ĩkumi', 'Mwai wa ĩkumi na ĩmwe', 'Mwai wa ĩkumi na ilĩ'], - 'months_short' => ['Mbe', 'Kel', 'Ktũ', 'Kan', 'Ktn', 'Tha', 'Moo', 'Nya', 'Knd', 'Ĩku', 'Ĩkm', 'Ĩkl'], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], - - // Too unreliable - /* - 'year' => ':count mbua', // less reliable - 'y' => ':count mbua', // less reliable - 'a_year' => ':count mbua', // less reliable - - 'month' => ':count ndakitali', // less reliable - 'm' => ':count ndakitali', // less reliable - 'a_month' => ':count ndakitali', // less reliable - - 'day' => ':count wia', // less reliable - 'd' => ':count wia', // less reliable - 'a_day' => ':count wia', // less reliable - - 'hour' => ':count orasan', // less reliable - 'h' => ':count orasan', // less reliable - 'a_hour' => ':count orasan', // less reliable - - 'minute' => ':count orasan', // less reliable - 'min' => ':count orasan', // less reliable - 'a_minute' => ':count orasan', // less reliable - */ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kde.php b/vendor/nesbot/carbon/src/Carbon/Lang/kde.php deleted file mode 100644 index fbcc9f3d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/kde.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['Muhi', 'Chilo'], - 'weekdays' => ['Liduva lyapili', 'Liduva lyatatu', 'Liduva lyanchechi', 'Liduva lyannyano', 'Liduva lyannyano na linji', 'Liduva lyannyano na mavili', 'Liduva litandi'], - 'weekdays_short' => ['Ll2', 'Ll3', 'Ll4', 'Ll5', 'Ll6', 'Ll7', 'Ll1'], - 'weekdays_min' => ['Ll2', 'Ll3', 'Ll4', 'Ll5', 'Ll6', 'Ll7', 'Ll1'], - 'months' => ['Mwedi Ntandi', 'Mwedi wa Pili', 'Mwedi wa Tatu', 'Mwedi wa Nchechi', 'Mwedi wa Nnyano', 'Mwedi wa Nnyano na Umo', 'Mwedi wa Nnyano na Mivili', 'Mwedi wa Nnyano na Mitatu', 'Mwedi wa Nnyano na Nchechi', 'Mwedi wa Nnyano na Nnyano', 'Mwedi wa Nnyano na Nnyano na U', 'Mwedi wa Nnyano na Nnyano na M'], - 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kea.php b/vendor/nesbot/carbon/src/Carbon/Lang/kea.php deleted file mode 100644 index 8b6c21b9..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/kea.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['a', 'p'], - 'weekdays' => ['dumingu', 'sigunda-fera', 'tersa-fera', 'kuarta-fera', 'kinta-fera', 'sesta-fera', 'sabadu'], - 'weekdays_short' => ['dum', 'sig', 'ter', 'kua', 'kin', 'ses', 'sab'], - 'weekdays_min' => ['du', 'si', 'te', 'ku', 'ki', 'se', 'sa'], - 'weekdays_standalone' => ['dumingu', 'sigunda-fera', 'tersa-fera', 'kuarta-fera', 'kinta-fera', 'sesta-fera', 'sábadu'], - 'months' => ['Janeru', 'Febreru', 'Marsu', 'Abril', 'Maiu', 'Junhu', 'Julhu', 'Agostu', 'Setenbru', 'Otubru', 'Nuvenbru', 'Dizenbru'], - 'months_short' => ['Jan', 'Feb', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Otu', 'Nuv', 'Diz'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D [di] MMMM [di] YYYY HH:mm', - 'LLLL' => 'dddd, D [di] MMMM [di] YYYY HH:mm', - ], - - 'year' => ':count otunu', // less reliable - 'y' => ':count otunu', // less reliable - 'a_year' => ':count otunu', // less reliable - - 'week' => ':count día dumingu', // less reliable - 'w' => ':count día dumingu', // less reliable - 'a_week' => ':count día dumingu', // less reliable - - 'day' => ':count diâ', // less reliable - 'd' => ':count diâ', // less reliable - 'a_day' => ':count diâ', // less reliable - - 'minute' => ':count sugundu', // less reliable - 'min' => ':count sugundu', // less reliable - 'a_minute' => ':count sugundu', // less reliable - - 'second' => ':count dós', // less reliable - 's' => ':count dós', // less reliable - 'a_second' => ':count dós', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/khq.php b/vendor/nesbot/carbon/src/Carbon/Lang/khq.php deleted file mode 100644 index 7a834cf0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/khq.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['Adduha', 'Aluula'], - 'weekdays' => ['Alhadi', 'Atini', 'Atalata', 'Alarba', 'Alhamiisa', 'Aljuma', 'Assabdu'], - 'weekdays_short' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alj', 'Ass'], - 'weekdays_min' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alj', 'Ass'], - 'months' => ['Žanwiye', 'Feewiriye', 'Marsi', 'Awiril', 'Me', 'Žuweŋ', 'Žuyye', 'Ut', 'Sektanbur', 'Oktoobur', 'Noowanbur', 'Deesanbur'], - 'months_short' => ['Žan', 'Fee', 'Mar', 'Awi', 'Me', 'Žuw', 'Žuy', 'Ut', 'Sek', 'Okt', 'Noo', 'Dee'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM, YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ki.php b/vendor/nesbot/carbon/src/Carbon/Lang/ki.php deleted file mode 100644 index d86afc50..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ki.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['Kiroko', 'Hwaĩ-inĩ'], - 'weekdays' => ['Kiumia', 'Njumatatũ', 'Njumaine', 'Njumatana', 'Aramithi', 'Njumaa', 'Njumamothi'], - 'weekdays_short' => ['KMA', 'NTT', 'NMN', 'NMT', 'ART', 'NMA', 'NMM'], - 'weekdays_min' => ['KMA', 'NTT', 'NMN', 'NMT', 'ART', 'NMA', 'NMM'], - 'months' => ['Njenuarĩ', 'Mwere wa kerĩ', 'Mwere wa gatatũ', 'Mwere wa kana', 'Mwere wa gatano', 'Mwere wa gatandatũ', 'Mwere wa mũgwanja', 'Mwere wa kanana', 'Mwere wa kenda', 'Mwere wa ikũmi', 'Mwere wa ikũmi na ũmwe', 'Ndithemba'], - 'months_short' => ['JEN', 'WKR', 'WGT', 'WKN', 'WTN', 'WTD', 'WMJ', 'WNN', 'WKD', 'WIK', 'WMW', 'DIT'], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], - - 'year' => ':count mĩaka', // less reliable - 'y' => ':count mĩaka', // less reliable - 'a_year' => ':count mĩaka', // less reliable - - 'month' => ':count mweri', // less reliable - 'm' => ':count mweri', // less reliable - 'a_month' => ':count mweri', // less reliable - - 'week' => ':count kiumia', // less reliable - 'w' => ':count kiumia', // less reliable - 'a_week' => ':count kiumia', // less reliable - - 'day' => ':count mũthenya', // less reliable - 'd' => ':count mũthenya', // less reliable - 'a_day' => ':count mũthenya', // less reliable - - 'hour' => ':count thaa', // less reliable - 'h' => ':count thaa', // less reliable - 'a_hour' => ':count thaa', // less reliable - - 'minute' => ':count mundu', // less reliable - 'min' => ':count mundu', // less reliable - 'a_minute' => ':count mundu', // less reliable - - 'second' => ':count igego', // less reliable - 's' => ':count igego', // less reliable - 'a_second' => ':count igego', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kk.php b/vendor/nesbot/carbon/src/Carbon/Lang/kk.php deleted file mode 100644 index 59fa9aff..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/kk.php +++ /dev/null @@ -1,103 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - François B - * - Talat Uspanov - * - Нурлан Рахимжанов - * - Toleugazy Kali - */ -return [ - 'year' => ':count жыл', - 'a_year' => '{1}бір жыл|:count жыл', - 'y' => ':count ж.', - 'month' => ':count ай', - 'a_month' => '{1}бір ай|:count ай', - 'm' => ':count ай', - 'week' => ':count апта', - 'a_week' => '{1}бір апта', - 'w' => ':count ап.', - 'day' => ':count күн', - 'a_day' => '{1}бір күн|:count күн', - 'd' => ':count к.', - 'hour' => ':count сағат', - 'a_hour' => '{1}бір сағат|:count сағат', - 'h' => ':count са.', - 'minute' => ':count минут', - 'a_minute' => '{1}бір минут|:count минут', - 'min' => ':count м.', - 'second' => ':count секунд', - 'a_second' => '{1}бірнеше секунд|:count секунд', - 's' => ':count се.', - 'ago' => ':time бұрын', - 'from_now' => ':time ішінде', - 'after' => ':time кейін', - 'before' => ':time бұрын', - 'diff_now' => 'қазір', - 'diff_today' => 'Бүгін', - 'diff_today_regexp' => 'Бүгін(?:\\s+сағат)?', - 'diff_yesterday' => 'кеше', - 'diff_yesterday_regexp' => 'Кеше(?:\\s+сағат)?', - 'diff_tomorrow' => 'ертең', - 'diff_tomorrow_regexp' => 'Ертең(?:\\s+сағат)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Бүгін сағат] LT', - 'nextDay' => '[Ертең сағат] LT', - 'nextWeek' => 'dddd [сағат] LT', - 'lastDay' => '[Кеше сағат] LT', - 'lastWeek' => '[Өткен аптаның] dddd [сағат] LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number) { - static $suffixes = [ - 0 => '-ші', - 1 => '-ші', - 2 => '-ші', - 3 => '-ші', - 4 => '-ші', - 5 => '-ші', - 6 => '-шы', - 7 => '-ші', - 8 => '-ші', - 9 => '-шы', - 10 => '-шы', - 20 => '-шы', - 30 => '-шы', - 40 => '-шы', - 50 => '-ші', - 60 => '-шы', - 70 => '-ші', - 80 => '-ші', - 90 => '-шы', - 100 => '-ші', - ]; - - return $number.($suffixes[$number] ?? $suffixes[$number % 10] ?? $suffixes[$number >= 100 ? 100 : -1] ?? ''); - }, - 'months' => ['қаңтар', 'ақпан', 'наурыз', 'сәуір', 'мамыр', 'маусым', 'шілде', 'тамыз', 'қыркүйек', 'қазан', 'қараша', 'желтоқсан'], - 'months_short' => ['қаң', 'ақп', 'нау', 'сәу', 'мам', 'мау', 'шіл', 'там', 'қыр', 'қаз', 'қар', 'жел'], - 'weekdays' => ['жексенбі', 'дүйсенбі', 'сейсенбі', 'сәрсенбі', 'бейсенбі', 'жұма', 'сенбі'], - 'weekdays_short' => ['жек', 'дүй', 'сей', 'сәр', 'бей', 'жұм', 'сен'], - 'weekdays_min' => ['жк', 'дй', 'сй', 'ср', 'бй', 'жм', 'сн'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' және '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kk_KZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/kk_KZ.php deleted file mode 100644 index 7dc5ebcc..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/kk_KZ.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/kk.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kkj.php b/vendor/nesbot/carbon/src/Carbon/Lang/kkj.php deleted file mode 100644 index 6a1e77a8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/kkj.php +++ /dev/null @@ -1,13 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kl.php b/vendor/nesbot/carbon/src/Carbon/Lang/kl.php deleted file mode 100644 index 7329a075..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/kl.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/kl_GL.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kl_GL.php b/vendor/nesbot/carbon/src/Carbon/Lang/kl_GL.php deleted file mode 100644 index 4fed720a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/kl_GL.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Danish Standards Association bug-glibc-locales@gnu.org - * - John Eyðstein Johannesen (mashema) - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - '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', - ], - 'months' => ['januaarip', 'februaarip', 'marsip', 'apriilip', 'maajip', 'juunip', 'juulip', 'aggustip', 'septembarip', 'oktobarip', 'novembarip', 'decembarip'], - 'months_short' => ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], - 'weekdays' => ['sapaat', 'ataasinngorneq', 'marlunngorneq', 'pingasunngorneq', 'sisamanngorneq', 'tallimanngorneq', 'arfininngorneq'], - 'weekdays_short' => ['sap', 'ata', 'mar', 'pin', 'sis', 'tal', 'arf'], - 'weekdays_min' => ['sap', 'ata', 'mar', 'pin', 'sis', 'tal', 'arf'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - - 'year' => '{1}ukioq :count|{0}:count ukiut|]1,Inf[ukiut :count', - 'a_year' => '{1}ukioq|{0}:count ukiut|]1,Inf[ukiut :count', - 'y' => '{1}:countyr|{0}:countyrs|]1,Inf[:countyrs', - - 'month' => '{1}qaammat :count|{0}:count qaammatit|]1,Inf[qaammatit :count', - 'a_month' => '{1}qaammat|{0}:count qaammatit|]1,Inf[qaammatit :count', - 'm' => '{1}:countmo|{0}:countmos|]1,Inf[:countmos', - - 'week' => '{1}:count sap. ak.|{0}:count sap. ak.|]1,Inf[:count sap. ak.', - 'a_week' => '{1}a sap. ak.|{0}:count sap. ak.|]1,Inf[:count sap. ak.', - 'w' => ':countw', - - 'day' => '{1}:count ulloq|{0}:count ullut|]1,Inf[:count ullut', - 'a_day' => '{1}a ulloq|{0}:count ullut|]1,Inf[:count ullut', - 'd' => ':countd', - - 'hour' => '{1}:count tiimi|{0}:count tiimit|]1,Inf[:count tiimit', - 'a_hour' => '{1}tiimi|{0}:count tiimit|]1,Inf[:count tiimit', - 'h' => ':counth', - - 'minute' => '{1}:count minutsi|{0}:count minutsit|]1,Inf[:count minutsit', - 'a_minute' => '{1}a minutsi|{0}:count minutsit|]1,Inf[:count minutsit', - 'min' => ':countm', - - 'second' => '{1}:count sikunti|{0}:count sikuntit|]1,Inf[:count sikuntit', - 'a_second' => '{1}sikunti|{0}:count sikuntit|]1,Inf[:count sikuntit', - 's' => ':counts', - - 'ago' => ':time matuma siorna', - -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kln.php b/vendor/nesbot/carbon/src/Carbon/Lang/kln.php deleted file mode 100644 index b9c39968..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/kln.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['krn', 'koosk'], - 'weekdays' => ['Kotisap', 'Kotaai', 'Koaeng’', 'Kosomok', 'Koang’wan', 'Komuut', 'Kolo'], - 'weekdays_short' => ['Kts', 'Kot', 'Koo', 'Kos', 'Koa', 'Kom', 'Kol'], - 'weekdays_min' => ['Kts', 'Kot', 'Koo', 'Kos', 'Koa', 'Kom', 'Kol'], - 'months' => ['Mulgul', 'Ng’atyaato', 'Kiptaamo', 'Iwootkuut', 'Mamuut', 'Paagi', 'Ng’eiyeet', 'Rooptui', 'Bureet', 'Epeeso', 'Kipsuunde ne taai', 'Kipsuunde nebo aeng’'], - 'months_short' => ['Mul', 'Ngat', 'Taa', 'Iwo', 'Mam', 'Paa', 'Nge', 'Roo', 'Bur', 'Epe', 'Kpt', 'Kpa'], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], - - 'year' => ':count maghatiat', // less reliable - 'y' => ':count maghatiat', // less reliable - 'a_year' => ':count maghatiat', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/km.php b/vendor/nesbot/carbon/src/Carbon/Lang/km.php deleted file mode 100644 index da790ac8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/km.php +++ /dev/null @@ -1,71 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Kruy Vanna - * - Sereysethy Touch - * - JD Isaacks - * - Sovichet Tep - */ -return [ - 'year' => '{1}មួយឆ្នាំ|]1,Inf[:count ឆ្នាំ', - 'y' => ':count ឆ្នាំ', - 'month' => '{1}មួយខែ|]1,Inf[:count ខែ', - 'm' => ':count ខែ', - 'week' => ':count សប្ដាហ៍', - 'w' => ':count សប្ដាហ៍', - 'day' => '{1}មួយថ្ងៃ|]1,Inf[:count ថ្ងៃ', - 'd' => ':count ថ្ងៃ', - 'hour' => '{1}មួយម៉ោង|]1,Inf[:count ម៉ោង', - 'h' => ':count ម៉ោង', - 'minute' => '{1}មួយនាទី|]1,Inf[:count នាទី', - 'min' => ':count នាទី', - 'second' => '{1}ប៉ុន្មានវិនាទី|]1,Inf[:count វិនាទី', - 's' => ':count វិនាទី', - 'ago' => ':timeមុន', - 'from_now' => ':timeទៀត', - 'after' => 'នៅ​ក្រោយ :time', - 'before' => 'នៅ​មុន :time', - 'diff_now' => 'ឥឡូវ', - 'diff_today' => 'ថ្ងៃនេះ', - 'diff_today_regexp' => 'ថ្ងៃនេះ(?:\\s+ម៉ោង)?', - 'diff_yesterday' => 'ម្សិលមិញ', - 'diff_yesterday_regexp' => 'ម្សិលមិញ(?:\\s+ម៉ោង)?', - 'diff_tomorrow' => 'ថ្ងៃ​ស្អែក', - 'diff_tomorrow_regexp' => 'ស្អែក(?:\\s+ម៉ោង)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[ថ្ងៃនេះ ម៉ោង] LT', - 'nextDay' => '[ស្អែក ម៉ោង] LT', - 'nextWeek' => 'dddd [ម៉ោង] LT', - 'lastDay' => '[ម្សិលមិញ ម៉ោង] LT', - 'lastWeek' => 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', - 'sameElse' => 'L', - ], - 'ordinal' => 'ទី:number', - 'meridiem' => ['ព្រឹក', 'ល្ងាច'], - 'months' => ['មករា', 'កុម្ភៈ', 'មីនា', 'មេសា', 'ឧសភា', 'មិថុនា', 'កក្កដា', 'សីហា', 'កញ្ញា', 'តុលា', 'វិច្ឆិកា', 'ធ្នូ'], - 'months_short' => ['មករា', 'កុម្ភៈ', 'មីនា', 'មេសា', 'ឧសភា', 'មិថុនា', 'កក្កដា', 'សីហា', 'កញ្ញា', 'តុលា', 'វិច្ឆិកា', 'ធ្នូ'], - 'weekdays' => ['អាទិត្យ', 'ច័ន្ទ', 'អង្គារ', 'ពុធ', 'ព្រហស្បតិ៍', 'សុក្រ', 'សៅរ៍'], - 'weekdays_short' => ['អា', 'ច', 'អ', 'ព', 'ព្រ', 'សុ', 'ស'], - 'weekdays_min' => ['អា', 'ច', 'អ', 'ព', 'ព្រ', 'សុ', 'ស'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', 'និង '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/km_KH.php b/vendor/nesbot/carbon/src/Carbon/Lang/km_KH.php deleted file mode 100644 index 92e5fdbd..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/km_KH.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/km.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kn.php b/vendor/nesbot/carbon/src/Carbon/Lang/kn.php deleted file mode 100644 index 0d2ad08b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/kn.php +++ /dev/null @@ -1,75 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - MOHAN M U - * - François B - * - rajeevnaikte - */ -return [ - 'year' => '{1}ಒಂದು ವರ್ಷ|]1,Inf[:count ವರ್ಷ', - 'month' => '{1}ಒಂದು ತಿಂಗಳು|]1,Inf[:count ತಿಂಗಳು', - 'week' => '{1}ಒಂದು ವಾರ|]1,Inf[:count ವಾರಗಳು', - 'day' => '{1}ಒಂದು ದಿನ|]1,Inf[:count ದಿನ', - 'hour' => '{1}ಒಂದು ಗಂಟೆ|]1,Inf[:count ಗಂಟೆ', - 'minute' => '{1}ಒಂದು ನಿಮಿಷ|]1,Inf[:count ನಿಮಿಷ', - 'second' => '{1}ಕೆಲವು ಕ್ಷಣಗಳು|]1,Inf[:count ಸೆಕೆಂಡುಗಳು', - 'ago' => ':time ಹಿಂದೆ', - 'from_now' => ':time ನಂತರ', - 'diff_now' => 'ಈಗ', - 'diff_today' => 'ಇಂದು', - 'diff_yesterday' => 'ನಿನ್ನೆ', - 'diff_tomorrow' => 'ನಾಳೆ', - 'formats' => [ - 'LT' => 'A h:mm', - 'LTS' => 'A h:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY, A h:mm', - 'LLLL' => 'dddd, D MMMM YYYY, A h:mm', - ], - 'calendar' => [ - 'sameDay' => '[ಇಂದು] LT', - 'nextDay' => '[ನಾಳೆ] LT', - 'nextWeek' => 'dddd, LT', - 'lastDay' => '[ನಿನ್ನೆ] LT', - 'lastWeek' => '[ಕೊನೆಯ] dddd, LT', - 'sameElse' => 'L', - ], - 'ordinal' => ':numberನೇ', - 'meridiem' => function ($hour) { - if ($hour < 4) { - return 'ರಾತ್ರಿ'; - } - if ($hour < 10) { - return 'ಬೆಳಿಗ್ಗೆ'; - } - if ($hour < 17) { - return 'ಮಧ್ಯಾಹ್ನ'; - } - if ($hour < 20) { - return 'ಸಂಜೆ'; - } - - return 'ರಾತ್ರಿ'; - }, - 'months' => ['ಜನವರಿ', 'ಫೆಬ್ರವರಿ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿಲ್', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗಸ್ಟ್', 'ಸೆಪ್ಟೆಂಬರ್', 'ಅಕ್ಟೋಬರ್', 'ನವೆಂಬರ್', 'ಡಿಸೆಂಬರ್'], - 'months_short' => ['ಜನ', 'ಫೆಬ್ರ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿಲ್', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗಸ್ಟ್', 'ಸೆಪ್ಟೆಂ', 'ಅಕ್ಟೋ', 'ನವೆಂ', 'ಡಿಸೆಂ'], - 'weekdays' => ['ಭಾನುವಾರ', 'ಸೋಮವಾರ', 'ಮಂಗಳವಾರ', 'ಬುಧವಾರ', 'ಗುರುವಾರ', 'ಶುಕ್ರವಾರ', 'ಶನಿವಾರ'], - 'weekdays_short' => ['ಭಾನು', 'ಸೋಮ', 'ಮಂಗಳ', 'ಬುಧ', 'ಗುರು', 'ಶುಕ್ರ', 'ಶನಿ'], - 'weekdays_min' => ['ಭಾ', 'ಸೋ', 'ಮಂ', 'ಬು', 'ಗು', 'ಶು', 'ಶ'], - 'list' => ', ', - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, - 'weekend' => [0, 0], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kn_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/kn_IN.php deleted file mode 100644 index 30e3d886..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/kn_IN.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/kn.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ko.php b/vendor/nesbot/carbon/src/Carbon/Lang/ko.php deleted file mode 100644 index 4fa62376..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ko.php +++ /dev/null @@ -1,91 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Kunal Marwaha - * - FourwingsY - * - François B - * - Jason Katz-Brown - * - Seokjun Kim - * - Junho Kim - * - JD Isaacks - * - Juwon Kim - */ -return [ - 'year' => ':count년', - 'a_year' => '{1}일년|]1,Inf[:count년', - 'y' => ':count년', - 'month' => ':count개월', - 'a_month' => '{1}한달|]1,Inf[:count개월', - 'm' => ':count개월', - 'week' => ':count주', - 'a_week' => '{1}일주일|]1,Inf[:count 주', - 'w' => ':count주일', - 'day' => ':count일', - 'a_day' => '{1}하루|]1,Inf[:count일', - 'd' => ':count일', - 'hour' => ':count시간', - 'a_hour' => '{1}한시간|]1,Inf[:count시간', - 'h' => ':count시간', - 'minute' => ':count분', - 'a_minute' => '{1}일분|]1,Inf[:count분', - 'min' => ':count분', - 'second' => ':count초', - 'a_second' => '{1}몇초|]1,Inf[:count초', - 's' => ':count초', - 'ago' => ':time 전', - 'from_now' => ':time 후', - 'after' => ':time 후', - 'before' => ':time 전', - 'diff_now' => '지금', - 'diff_today' => '오늘', - 'diff_yesterday' => '어제', - 'diff_tomorrow' => '내일', - 'formats' => [ - 'LT' => 'A h:mm', - 'LTS' => 'A h:mm:ss', - 'L' => 'YYYY.MM.DD.', - 'LL' => 'YYYY년 MMMM D일', - 'LLL' => 'YYYY년 MMMM D일 A h:mm', - 'LLLL' => 'YYYY년 MMMM D일 dddd A h:mm', - ], - 'calendar' => [ - 'sameDay' => '오늘 LT', - 'nextDay' => '내일 LT', - 'nextWeek' => 'dddd LT', - 'lastDay' => '어제 LT', - 'lastWeek' => '지난주 dddd LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number, $period) { - switch ($period) { - case 'd': - case 'D': - case 'DDD': - return $number.'일'; - case 'M': - return $number.'월'; - case 'w': - case 'W': - return $number.'주'; - default: - return $number; - } - }, - 'meridiem' => ['오전', '오후'], - 'months' => ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'], - 'months_short' => ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'], - 'weekdays' => ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'], - 'weekdays_short' => ['일', '월', '화', '수', '목', '금', '토'], - 'weekdays_min' => ['일', '월', '화', '수', '목', '금', '토'], - 'list' => ' ', -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ko_KP.php b/vendor/nesbot/carbon/src/Carbon/Lang/ko_KP.php deleted file mode 100644 index 4ba802b3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ko_KP.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ko.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ko_KR.php b/vendor/nesbot/carbon/src/Carbon/Lang/ko_KR.php deleted file mode 100644 index 9d873a27..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ko_KR.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ko.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kok.php b/vendor/nesbot/carbon/src/Carbon/Lang/kok.php deleted file mode 100644 index 4adcddcc..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/kok.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/kok_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kok_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/kok_IN.php deleted file mode 100644 index 92ba844c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/kok_IN.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Red Hat, Pune bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'D-M-YY', - ], - 'months' => ['जानेवारी', 'फेब्रुवारी', 'मार्च', 'एप्रिल', 'मे', 'जून', 'जुलै', 'ओगस्ट', 'सेप्टेंबर', 'ओक्टोबर', 'नोव्हेंबर', 'डिसेंबर'], - 'months_short' => ['जानेवारी', 'फेब्रुवारी', 'मार्च', 'एप्रिल', 'मे', 'जून', 'जुलै', 'ओगस्ट', 'सेप्टेंबर', 'ओक्टोबर', 'नोव्हेंबर', 'डिसेंबर'], - 'weekdays' => ['आयतार', 'सोमार', 'मंगळवार', 'बुधवार', 'बेरेसतार', 'शुकरार', 'शेनवार'], - 'weekdays_short' => ['आयतार', 'सोमार', 'मंगळवार', 'बुधवार', 'बेरेसतार', 'शुकरार', 'शेनवार'], - 'weekdays_min' => ['आयतार', 'सोमार', 'मंगळवार', 'बुधवार', 'बेरेसतार', 'शुकरार', 'शेनवार'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['म.पू.', 'म.नं.'], - - 'year' => ':count वैशाकु', // less reliable - 'y' => ':count वैशाकु', // less reliable - 'a_year' => ':count वैशाकु', // less reliable - - 'week' => ':count आदित्यवार', // less reliable - 'w' => ':count आदित्यवार', // less reliable - 'a_week' => ':count आदित्यवार', // less reliable - - 'minute' => ':count नोंद', // less reliable - 'min' => ':count नोंद', // less reliable - 'a_minute' => ':count नोंद', // less reliable - - 'second' => ':count तेंको', // less reliable - 's' => ':count तेंको', // less reliable - 'a_second' => ':count तेंको', // less reliable - - 'month' => ':count मैनो', - 'm' => ':count मैनो', - 'a_month' => ':count मैनो', - - 'day' => ':count दिवसु', - 'd' => ':count दिवसु', - 'a_day' => ':count दिवसु', - - 'hour' => ':count घंते', - 'h' => ':count घंते', - 'a_hour' => ':count घंते', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ks.php b/vendor/nesbot/carbon/src/Carbon/Lang/ks.php deleted file mode 100644 index 98760790..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ks.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/ks_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN.php deleted file mode 100644 index ce9d5d4a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Red Hat, Pune bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'M/D/YY', - ], - 'months' => ['جنؤری', 'فرؤری', 'مارٕچ', 'اپریل', 'میٔ', 'جوٗن', 'جوٗلایی', 'اگست', 'ستمبر', 'اکتوٗبر', 'نومبر', 'دسمبر'], - 'months_short' => ['جنؤری', 'فرؤری', 'مارٕچ', 'اپریل', 'میٔ', 'جوٗن', 'جوٗلایی', 'اگست', 'ستمبر', 'اکتوٗبر', 'نومبر', 'دسمبر'], - 'weekdays' => ['آتهوار', 'ژءندروار', 'بوءںوار', 'بودهوار', 'برىسوار', 'جمع', 'بٹوار'], - 'weekdays_short' => ['آتهوار', 'ژءنتروار', 'بوءںوار', 'بودهوار', 'برىسوار', 'جمع', 'بٹوار'], - 'weekdays_min' => ['آتهوار', 'ژءنتروار', 'بوءںوار', 'بودهوار', 'برىسوار', 'جمع', 'بٹوار'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['دوپھربرونھ', 'دوپھرپتھ'], - - 'year' => ':count آب', // less reliable - 'y' => ':count آب', // less reliable - 'a_year' => ':count آب', // less reliable - - 'month' => ':count रान्', // less reliable - 'm' => ':count रान्', // less reliable - 'a_month' => ':count रान्', // less reliable - - 'week' => ':count آتھٕوار', // less reliable - 'w' => ':count آتھٕوار', // less reliable - 'a_week' => ':count آتھٕوار', // less reliable - - 'hour' => ':count سۄن', // less reliable - 'h' => ':count سۄن', // less reliable - 'a_hour' => ':count سۄن', // less reliable - - 'minute' => ':count فَن', // less reliable - 'min' => ':count فَن', // less reliable - 'a_minute' => ':count فَن', // less reliable - - 'second' => ':count दोʼयुम', // less reliable - 's' => ':count दोʼयुम', // less reliable - 'a_second' => ':count दोʼयुम', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN@devanagari.php b/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN@devanagari.php deleted file mode 100644 index a2ae8b64..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ks_IN@devanagari.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - ks-gnome-trans-commits@lists.code.indlinux.net - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'M/D/YY', - ], - 'months' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'], - 'months_short' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'], - 'weekdays' => ['आथवार', 'चॅ़दुरवार', 'बोमवार', 'ब्वदवार', 'ब्रसवार', 'शोकुरवार', 'बटुवार'], - 'weekdays_short' => ['आथ ', 'चॅ़दुर', 'बोम', 'ब्वद', 'ब्रस', 'शोकुर', 'बटु'], - 'weekdays_min' => ['आथ ', 'चॅ़दुर', 'बोम', 'ब्वद', 'ब्रस', 'शोकुर', 'बटु'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['पूर्वाह्न', 'अपराह्न'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ksb.php b/vendor/nesbot/carbon/src/Carbon/Lang/ksb.php deleted file mode 100644 index aaa00614..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ksb.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['makeo', 'nyiaghuo'], - 'weekdays' => ['Jumaapii', 'Jumaatatu', 'Jumaane', 'Jumaatano', 'Alhamisi', 'Ijumaa', 'Jumaamosi'], - 'weekdays_short' => ['Jpi', 'Jtt', 'Jmn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - 'weekdays_min' => ['Jpi', 'Jtt', 'Jmn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - 'months' => ['Januali', 'Febluali', 'Machi', 'Aplili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'], - 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ksf.php b/vendor/nesbot/carbon/src/Carbon/Lang/ksf.php deleted file mode 100644 index 84a59672..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ksf.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['sárúwá', 'cɛɛ́nko'], - 'weekdays' => ['sɔ́ndǝ', 'lǝndí', 'maadí', 'mɛkrɛdí', 'jǝǝdí', 'júmbá', 'samdí'], - 'weekdays_short' => ['sɔ́n', 'lǝn', 'maa', 'mɛk', 'jǝǝ', 'júm', 'sam'], - 'weekdays_min' => ['sɔ́n', 'lǝn', 'maa', 'mɛk', 'jǝǝ', 'júm', 'sam'], - 'months' => ['ŋwíí a ntɔ́ntɔ', 'ŋwíí akǝ bɛ́ɛ', 'ŋwíí akǝ ráá', 'ŋwíí akǝ nin', 'ŋwíí akǝ táan', 'ŋwíí akǝ táafɔk', 'ŋwíí akǝ táabɛɛ', 'ŋwíí akǝ táaraa', 'ŋwíí akǝ táanin', 'ŋwíí akǝ ntɛk', 'ŋwíí akǝ ntɛk di bɔ́k', 'ŋwíí akǝ ntɛk di bɛ́ɛ'], - 'months_short' => ['ŋ1', 'ŋ2', 'ŋ3', 'ŋ4', 'ŋ5', 'ŋ6', 'ŋ7', 'ŋ8', 'ŋ9', 'ŋ10', 'ŋ11', 'ŋ12'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ksh.php b/vendor/nesbot/carbon/src/Carbon/Lang/ksh.php deleted file mode 100644 index 95457e24..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ksh.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['v.M.', 'n.M.'], - 'weekdays' => ['Sunndaach', 'Mohndaach', 'Dinnsdaach', 'Metwoch', 'Dunnersdaach', 'Friidaach', 'Samsdaach'], - 'weekdays_short' => ['Su.', 'Mo.', 'Di.', 'Me.', 'Du.', 'Fr.', 'Sa.'], - 'weekdays_min' => ['Su', 'Mo', 'Di', 'Me', 'Du', 'Fr', 'Sa'], - 'months' => ['Jannewa', 'Fäbrowa', 'Määz', 'Aprell', 'Mai', 'Juuni', 'Juuli', 'Oujoß', 'Septämber', 'Oktohber', 'Novämber', 'Dezämber'], - 'months_short' => ['Jan', 'Fäb', 'Mäz', 'Apr', 'Mai', 'Jun', 'Jul', 'Ouj', 'Säp', 'Okt', 'Nov', 'Dez'], - 'months_short_standalone' => ['Jan.', 'Fäb.', 'Mäz.', 'Apr.', 'Mai', 'Jun.', 'Jul.', 'Ouj.', 'Säp.', 'Okt.', 'Nov.', 'Dez.'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D. M. YYYY', - 'LL' => 'D. MMM. YYYY', - 'LLL' => 'D. MMMM YYYY HH:mm', - 'LLLL' => 'dddd, [dä] D. MMMM YYYY HH:mm', - ], - - 'year' => ':count Johr', - 'y' => ':count Johr', - 'a_year' => ':count Johr', - - 'month' => ':count Moohnd', - 'm' => ':count Moohnd', - 'a_month' => ':count Moohnd', - - 'week' => ':count woch', - 'w' => ':count woch', - 'a_week' => ':count woch', - - 'day' => ':count Daach', - 'd' => ':count Daach', - 'a_day' => ':count Daach', - - 'hour' => ':count Uhr', - 'h' => ':count Uhr', - 'a_hour' => ':count Uhr', - - 'minute' => ':count Menutt', - 'min' => ':count Menutt', - 'a_minute' => ':count Menutt', - - 'second' => ':count Sekůndt', - 's' => ':count Sekůndt', - 'a_second' => ':count Sekůndt', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ku.php b/vendor/nesbot/carbon/src/Carbon/Lang/ku.php deleted file mode 100644 index 189960c8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ku.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Unicode, Inc. - */ - -return [ - 'ago' => 'berî :time', - 'from_now' => 'di :time de', - 'after' => ':time piştî', - 'before' => ':time berê', - 'year' => ':count sal', - 'year_ago' => ':count salê|:count salan', - 'year_from_now' => 'salekê|:count salan', - 'month' => ':count meh', - 'week' => ':count hefte', - 'day' => ':count roj', - 'hour' => ':count saet', - 'minute' => ':count deqîqe', - 'second' => ':count saniye', - 'months' => ['rêbendanê', 'reşemiyê', 'adarê', 'avrêlê', 'gulanê', 'pûşperê', 'tîrmehê', 'gelawêjê', 'rezberê', 'kewçêrê', 'sermawezê', 'berfanbarê'], - 'months_standalone' => ['rêbendan', 'reşemî', 'adar', 'avrêl', 'gulan', 'pûşper', 'tîrmeh', 'gelawêj', 'rezber', 'kewçêr', 'sermawez', 'berfanbar'], - 'months_short' => ['rêb', 'reş', 'ada', 'avr', 'gul', 'pûş', 'tîr', 'gel', 'rez', 'kew', 'ser', 'ber'], - 'weekdays' => ['yekşem', 'duşem', 'sêşem', 'çarşem', 'pêncşem', 'în', 'şemî'], - 'weekdays_short' => ['yş', 'dş', 'sş', 'çş', 'pş', 'în', 'ş'], - 'weekdays_min' => ['Y', 'D', 'S', 'Ç', 'P', 'Î', 'Ş'], - 'list' => [', ', ' û '], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ku_TR.php b/vendor/nesbot/carbon/src/Carbon/Lang/ku_TR.php deleted file mode 100644 index 4243a82f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ku_TR.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ku.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kw.php b/vendor/nesbot/carbon/src/Carbon/Lang/kw.php deleted file mode 100644 index 26e242e7..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/kw.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/kw_GB.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/kw_GB.php b/vendor/nesbot/carbon/src/Carbon/Lang/kw_GB.php deleted file mode 100644 index 00bf52bd..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/kw_GB.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Alastair McKinstry bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['mis Genver', 'mis Hwevrer', 'mis Meurth', 'mis Ebrel', 'mis Me', 'mis Metheven', 'mis Gortheren', 'mis Est', 'mis Gwynngala', 'mis Hedra', 'mis Du', 'mis Kevardhu'], - 'months_short' => ['Gen', 'Hwe', 'Meu', 'Ebr', 'Me', 'Met', 'Gor', 'Est', 'Gwn', 'Hed', 'Du', 'Kev'], - 'weekdays' => ['De Sul', 'De Lun', 'De Merth', 'De Merher', 'De Yow', 'De Gwener', 'De Sadorn'], - 'weekdays_short' => ['Sul', 'Lun', 'Mth', 'Mhr', 'Yow', 'Gwe', 'Sad'], - 'weekdays_min' => ['Sul', 'Lun', 'Mth', 'Mhr', 'Yow', 'Gwe', 'Sad'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - - 'year' => ':count bledhen', - 'y' => ':count bledhen', - 'a_year' => ':count bledhen', - - 'month' => ':count mis', - 'm' => ':count mis', - 'a_month' => ':count mis', - - 'week' => ':count seythen', - 'w' => ':count seythen', - 'a_week' => ':count seythen', - - 'day' => ':count dydh', - 'd' => ':count dydh', - 'a_day' => ':count dydh', - - 'hour' => ':count eur', - 'h' => ':count eur', - 'a_hour' => ':count eur', - - 'minute' => ':count mynysen', - 'min' => ':count mynysen', - 'a_minute' => ':count mynysen', - - 'second' => ':count pryjwyth', - 's' => ':count pryjwyth', - 'a_second' => ':count pryjwyth', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ky.php b/vendor/nesbot/carbon/src/Carbon/Lang/ky.php deleted file mode 100644 index e0d1af10..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ky.php +++ /dev/null @@ -1,106 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - acutexyz - * - Josh Soref - * - François B - * - Chyngyz Arystan uulu - * - Chyngyz - * - acutexyz - * - Josh Soref - * - François B - * - Chyngyz Arystan uulu - */ -return [ - 'year' => ':count жыл', - 'a_year' => '{1}бир жыл|:count жыл', - 'y' => ':count жыл', - 'month' => ':count ай', - 'a_month' => '{1}бир ай|:count ай', - 'm' => ':count ай', - 'week' => ':count апта', - 'a_week' => '{1}бир апта|:count апта', - 'w' => ':count апт.', - 'day' => ':count күн', - 'a_day' => '{1}бир күн|:count күн', - 'd' => ':count күн', - 'hour' => ':count саат', - 'a_hour' => '{1}бир саат|:count саат', - 'h' => ':count саат.', - 'minute' => ':count мүнөт', - 'a_minute' => '{1}бир мүнөт|:count мүнөт', - 'min' => ':count мүн.', - 'second' => ':count секунд', - 'a_second' => '{1}бирнече секунд|:count секунд', - 's' => ':count сек.', - 'ago' => ':time мурун', - 'from_now' => ':time ичинде', - 'diff_now' => 'азыр', - 'diff_today' => 'Бүгүн', - 'diff_today_regexp' => 'Бүгүн(?:\\s+саат)?', - 'diff_yesterday' => 'кечээ', - 'diff_yesterday_regexp' => 'Кече(?:\\s+саат)?', - 'diff_tomorrow' => 'эртең', - 'diff_tomorrow_regexp' => 'Эртең(?:\\s+саат)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Бүгүн саат] LT', - 'nextDay' => '[Эртең саат] LT', - 'nextWeek' => 'dddd [саат] LT', - 'lastDay' => '[Кече саат] LT', - 'lastWeek' => '[Өткен аптанын] dddd [күнү] [саат] LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number) { - static $suffixes = [ - 0 => '-чү', - 1 => '-чи', - 2 => '-чи', - 3 => '-чү', - 4 => '-чү', - 5 => '-чи', - 6 => '-чы', - 7 => '-чи', - 8 => '-чи', - 9 => '-чу', - 10 => '-чу', - 20 => '-чы', - 30 => '-чу', - 40 => '-чы', - 50 => '-чү', - 60 => '-чы', - 70 => '-чи', - 80 => '-чи', - 90 => '-чу', - 100 => '-чү', - ]; - - return $number.($suffixes[$number] ?? $suffixes[$number % 10] ?? $suffixes[$number >= 100 ? 100 : -1] ?? ''); - }, - 'months' => ['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь'], - 'months_short' => ['янв', 'фев', 'март', 'апр', 'май', 'июнь', 'июль', 'авг', 'сен', 'окт', 'ноя', 'дек'], - 'weekdays' => ['Жекшемби', 'Дүйшөмбү', 'Шейшемби', 'Шаршемби', 'Бейшемби', 'Жума', 'Ишемби'], - 'weekdays_short' => ['Жек', 'Дүй', 'Шей', 'Шар', 'Бей', 'Жум', 'Ише'], - 'weekdays_min' => ['Жк', 'Дй', 'Шй', 'Шр', 'Бй', 'Жм', 'Иш'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => ' ', - 'meridiem' => ['таңкы', 'түштөн кийинки'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ky_KG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ky_KG.php deleted file mode 100644 index 9923a31e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ky_KG.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ky.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lag.php b/vendor/nesbot/carbon/src/Carbon/Lang/lag.php deleted file mode 100644 index f3f57f6a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lag.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['TOO', 'MUU'], - 'weekdays' => ['Jumapíiri', 'Jumatátu', 'Jumaíne', 'Jumatáano', 'Alamíisi', 'Ijumáa', 'Jumamóosi'], - 'weekdays_short' => ['Píili', 'Táatu', 'Íne', 'Táano', 'Alh', 'Ijm', 'Móosi'], - 'weekdays_min' => ['Píili', 'Táatu', 'Íne', 'Táano', 'Alh', 'Ijm', 'Móosi'], - 'months' => ['Kʉfúngatɨ', 'Kʉnaanɨ', 'Kʉkeenda', 'Kwiikumi', 'Kwiinyambála', 'Kwiidwaata', 'Kʉmʉʉnchɨ', 'Kʉvɨɨrɨ', 'Kʉsaatʉ', 'Kwiinyi', 'Kʉsaano', 'Kʉsasatʉ'], - 'months_short' => ['Fúngatɨ', 'Naanɨ', 'Keenda', 'Ikúmi', 'Inyambala', 'Idwaata', 'Mʉʉnchɨ', 'Vɨɨrɨ', 'Saatʉ', 'Inyi', 'Saano', 'Sasatʉ'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lb.php b/vendor/nesbot/carbon/src/Carbon/Lang/lb.php deleted file mode 100644 index 7636655e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lb.php +++ /dev/null @@ -1,88 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Philippe Vaucher - * - Tsutomu Kuroda - * - dan-nl - * - Simon Lelorrain (slelorrain) - */ - -use Carbon\CarbonInterface; - -return [ - 'year' => ':count Joer', - 'y' => ':countJ', - 'month' => ':count Mount|:count Méint', - 'm' => ':countMo', - 'week' => ':count Woch|:count Wochen', - 'w' => ':countWo|:countWo', - 'day' => ':count Dag|:count Deeg', - 'd' => ':countD', - 'hour' => ':count Stonn|:count Stonnen', - 'h' => ':countSto', - 'minute' => ':count Minutt|:count Minutten', - 'min' => ':countM', - 'second' => ':count Sekonn|:count Sekonnen', - 's' => ':countSek', - - 'ago' => 'virun :time', - 'from_now' => 'an :time', - 'before' => ':time virdrun', - 'after' => ':time duerno', - - 'diff_today' => 'Haut', - 'diff_yesterday' => 'Gëschter', - 'diff_yesterday_regexp' => 'Gëschter(?:\\s+um)?', - 'diff_tomorrow' => 'Muer', - 'diff_tomorrow_regexp' => 'Muer(?:\\s+um)?', - 'diff_today_regexp' => 'Haut(?:\\s+um)?', - 'formats' => [ - 'LT' => 'H:mm [Auer]', - 'LTS' => 'H:mm:ss [Auer]', - 'L' => 'DD.MM.YYYY', - 'LL' => 'D. MMMM YYYY', - 'LLL' => 'D. MMMM YYYY H:mm [Auer]', - 'LLLL' => 'dddd, D. MMMM YYYY H:mm [Auer]', - ], - - 'calendar' => [ - 'sameDay' => '[Haut um] LT', - 'nextDay' => '[Muer um] LT', - 'nextWeek' => 'dddd [um] LT', - 'lastDay' => '[Gëschter um] LT', - 'lastWeek' => function (CarbonInterface $date) { - // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule - switch ($date->dayOfWeek) { - case 2: - case 4: - return '[Leschten] dddd [um] LT'; - default: - return '[Leschte] dddd [um] LT'; - } - }, - 'sameElse' => 'L', - ], - - 'months' => ['Januar', 'Februar', 'Mäerz', 'Abrëll', 'Mee', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'], - 'months_short' => ['Jan.', 'Febr.', 'Mrz.', 'Abr.', 'Mee', 'Jun.', 'Jul.', 'Aug.', 'Sept.', 'Okt.', 'Nov.', 'Dez.'], - 'weekdays' => ['Sonndeg', 'Méindeg', 'Dënschdeg', 'Mëttwoch', 'Donneschdeg', 'Freideg', 'Samschdeg'], - 'weekdays_short' => ['So.', 'Mé.', 'Dë.', 'Më.', 'Do.', 'Fr.', 'Sa.'], - 'weekdays_min' => ['So', 'Mé', 'Dë', 'Më', 'Do', 'Fr', 'Sa'], - 'ordinal' => ':number.', - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' an '], - 'meridiem' => ['moies', 'mëttes'], - 'weekdays_short_standalone' => ['Son', 'Méi', 'Dën', 'Mët', 'Don', 'Fre', 'Sam'], - 'months_short_standalone' => ['Jan', 'Feb', 'Mäe', 'Abr', 'Mee', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lb_LU.php b/vendor/nesbot/carbon/src/Carbon/Lang/lb_LU.php deleted file mode 100644 index 414bd4d0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lb_LU.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/lb.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lg.php b/vendor/nesbot/carbon/src/Carbon/Lang/lg.php deleted file mode 100644 index 48bc68be..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lg.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/lg_UG.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lg_UG.php b/vendor/nesbot/carbon/src/Carbon/Lang/lg_UG.php deleted file mode 100644 index aa022140..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lg_UG.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Akademe ya Luganda Kizito Birabwa kompyuta@kizito.uklinux.net - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['Janwaliyo', 'Febwaliyo', 'Marisi', 'Apuli', 'Maayi', 'Juuni', 'Julaayi', 'Agusito', 'Sebuttemba', 'Okitobba', 'Novemba', 'Desemba'], - 'months_short' => ['Jan', 'Feb', 'Mar', 'Apu', 'Maa', 'Juu', 'Jul', 'Agu', 'Seb', 'Oki', 'Nov', 'Des'], - 'weekdays' => ['Sabiiti', 'Balaza', 'Lwakubiri', 'Lwakusatu', 'Lwakuna', 'Lwakutaano', 'Lwamukaaga'], - 'weekdays_short' => ['Sab', 'Bal', 'Lw2', 'Lw3', 'Lw4', 'Lw5', 'Lw6'], - 'weekdays_min' => ['Sab', 'Bal', 'Lw2', 'Lw3', 'Lw4', 'Lw5', 'Lw6'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - - 'month' => ':count njuba', // less reliable - 'm' => ':count njuba', // less reliable - 'a_month' => ':count njuba', // less reliable - - 'year' => ':count mwaaka', - 'y' => ':count mwaaka', - 'a_year' => ':count mwaaka', - - 'week' => ':count sabbiiti', - 'w' => ':count sabbiiti', - 'a_week' => ':count sabbiiti', - - 'day' => ':count lunaku', - 'd' => ':count lunaku', - 'a_day' => ':count lunaku', - - 'hour' => 'saawa :count', - 'h' => 'saawa :count', - 'a_hour' => 'saawa :count', - - 'minute' => 'ddakiika :count', - 'min' => 'ddakiika :count', - 'a_minute' => 'ddakiika :count', - - 'second' => ':count kyʼokubiri', - 's' => ':count kyʼokubiri', - 'a_second' => ':count kyʼokubiri', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/li.php b/vendor/nesbot/carbon/src/Carbon/Lang/li.php deleted file mode 100644 index 86c3009e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/li.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/li_NL.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/li_NL.php b/vendor/nesbot/carbon/src/Carbon/Lang/li_NL.php deleted file mode 100644 index 6c5feb79..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/li_NL.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - information from Kenneth Christiansen Kenneth Christiansen, Pablo Saratxaga kenneth@gnu.org, pablo@mandriva.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], - 'months' => ['jannewarie', 'fibberwarie', 'miert', 'eprèl', 'meij', 'junie', 'julie', 'augustus', 'september', 'oktober', 'november', 'desember'], - 'months_short' => ['jan', 'fib', 'mie', 'epr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'], - 'weekdays' => ['zóndig', 'maondig', 'daensdig', 'goonsdig', 'dónderdig', 'vriedig', 'zaoterdig'], - 'weekdays_short' => ['zón', 'mao', 'dae', 'goo', 'dón', 'vri', 'zao'], - 'weekdays_min' => ['zón', 'mao', 'dae', 'goo', 'dón', 'vri', 'zao'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - - 'minute' => ':count momênt', // less reliable - 'min' => ':count momênt', // less reliable - 'a_minute' => ':count momênt', // less reliable - - 'year' => ':count jaor', - 'y' => ':count jaor', - 'a_year' => ':count jaor', - - 'month' => ':count maond', - 'm' => ':count maond', - 'a_month' => ':count maond', - - 'week' => ':count waek', - 'w' => ':count waek', - 'a_week' => ':count waek', - - 'day' => ':count daag', - 'd' => ':count daag', - 'a_day' => ':count daag', - - 'hour' => ':count oer', - 'h' => ':count oer', - 'a_hour' => ':count oer', - - 'second' => ':count Secónd', - 's' => ':count Secónd', - 'a_second' => ':count Secónd', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lij.php b/vendor/nesbot/carbon/src/Carbon/Lang/lij.php deleted file mode 100644 index 45732b55..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lij.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/lij_IT.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lij_IT.php b/vendor/nesbot/carbon/src/Carbon/Lang/lij_IT.php deleted file mode 100644 index f8726fd2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lij_IT.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Gastaldi alessio.gastaldi@libero.it - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['zenâ', 'fevrâ', 'marzo', 'avrî', 'mazzo', 'zûgno', 'lûggio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dixembre'], - 'months_short' => ['zen', 'fev', 'mar', 'arv', 'maz', 'zûg', 'lûg', 'ago', 'set', 'ött', 'nov', 'dix'], - 'weekdays' => ['domenega', 'lûnedì', 'martedì', 'mercUrdì', 'zêggia', 'venardì', 'sabbo'], - 'weekdays_short' => ['dom', 'lûn', 'mar', 'mer', 'zêu', 'ven', 'sab'], - 'weekdays_min' => ['dom', 'lûn', 'mar', 'mer', 'zêu', 'ven', 'sab'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - - 'year' => ':count etæ', // less reliable - 'y' => ':count etæ', // less reliable - 'a_year' => ':count etæ', // less reliable - - 'month' => ':count meize', - 'm' => ':count meize', - 'a_month' => ':count meize', - - 'week' => ':count settemannha', - 'w' => ':count settemannha', - 'a_week' => ':count settemannha', - - 'day' => ':count giorno', - 'd' => ':count giorno', - 'a_day' => ':count giorno', - - 'hour' => ':count reléuio', // less reliable - 'h' => ':count reléuio', // less reliable - 'a_hour' => ':count reléuio', // less reliable - - 'minute' => ':count menûo', - 'min' => ':count menûo', - 'a_minute' => ':count menûo', - - 'second' => ':count segondo', - 's' => ':count segondo', - 'a_second' => ':count segondo', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lkt.php b/vendor/nesbot/carbon/src/Carbon/Lang/lkt.php deleted file mode 100644 index ae73a97b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lkt.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - - 'month' => ':count haŋwí', // less reliable - 'm' => ':count haŋwí', // less reliable - 'a_month' => ':count haŋwí', // less reliable - - 'week' => ':count šakówiŋ', // less reliable - 'w' => ':count šakówiŋ', // less reliable - 'a_week' => ':count šakówiŋ', // less reliable - - 'hour' => ':count maza škaŋškaŋ', // less reliable - 'h' => ':count maza škaŋškaŋ', // less reliable - 'a_hour' => ':count maza škaŋškaŋ', // less reliable - - 'minute' => ':count číkʼala', // less reliable - 'min' => ':count číkʼala', // less reliable - 'a_minute' => ':count číkʼala', // less reliable - - 'year' => ':count waníyetu', - 'y' => ':count waníyetu', - 'a_year' => ':count waníyetu', - - 'day' => ':count aŋpétu', - 'd' => ':count aŋpétu', - 'a_day' => ':count aŋpétu', - - 'second' => ':count icinuŋpa', - 's' => ':count icinuŋpa', - 'a_second' => ':count icinuŋpa', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ln.php b/vendor/nesbot/carbon/src/Carbon/Lang/ln.php deleted file mode 100644 index 9d5c35dd..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ln.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ubuntu René Manassé GALEKWA renemanasse@gmail.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - 'months' => ['sánzá ya yambo', 'sánzá ya míbalé', 'sánzá ya mísáto', 'sánzá ya mínei', 'sánzá ya mítáno', 'sánzá ya motóbá', 'sánzá ya nsambo', 'sánzá ya mwambe', 'sánzá ya libwa', 'sánzá ya zómi', 'sánzá ya zómi na mɔ̌kɔ́', 'sánzá ya zómi na míbalé'], - 'months_short' => ['yan', 'fbl', 'msi', 'apl', 'mai', 'yun', 'yul', 'agt', 'stb', 'ɔtb', 'nvb', 'dsb'], - 'weekdays' => ['Lomíngo', 'Mosálá mɔ̌kɔ́', 'Misálá míbalé', 'Misálá mísáto', 'Misálá mínei', 'Misálá mítáno', 'Mpɔ́sɔ'], - 'weekdays_short' => ['m1.', 'm2.', 'm3.', 'm4.', 'm5.', 'm6.', 'm7.'], - 'weekdays_min' => ['m1.', 'm2.', 'm3.', 'm4.', 'm5.', 'm6.', 'm7.'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - - 'year' => 'mbula :count', - 'y' => 'mbula :count', - 'a_year' => 'mbula :count', - - 'month' => 'sánzá :count', - 'm' => 'sánzá :count', - 'a_month' => 'sánzá :count', - - 'week' => 'mpɔ́sɔ :count', - 'w' => 'mpɔ́sɔ :count', - 'a_week' => 'mpɔ́sɔ :count', - - 'day' => 'mokɔlɔ :count', - 'd' => 'mokɔlɔ :count', - 'a_day' => 'mokɔlɔ :count', - - 'hour' => 'ngonga :count', - 'h' => 'ngonga :count', - 'a_hour' => 'ngonga :count', - - 'minute' => 'miniti :count', - 'min' => 'miniti :count', - 'a_minute' => 'miniti :count', - - 'second' => 'segɔnde :count', - 's' => 'segɔnde :count', - 'a_second' => 'segɔnde :count', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ln_AO.php b/vendor/nesbot/carbon/src/Carbon/Lang/ln_AO.php deleted file mode 100644 index 7fdb7f1b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ln_AO.php +++ /dev/null @@ -1,17 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ln.php', [ - 'weekdays' => ['eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', 'mokɔlɔ ya mítáno', 'mpɔ́sɔ'], - 'weekdays_short' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'], - 'weekdays_min' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'], - 'meridiem' => ['ntɔ́ngɔ́', 'mpókwa'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ln_CD.php b/vendor/nesbot/carbon/src/Carbon/Lang/ln_CD.php deleted file mode 100644 index 13635fcc..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ln_CD.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ubuntu René Manassé GALEKWA renemanasse@gmail.com - */ -return require __DIR__.'/ln.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ln_CF.php b/vendor/nesbot/carbon/src/Carbon/Lang/ln_CF.php deleted file mode 100644 index 7fdb7f1b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ln_CF.php +++ /dev/null @@ -1,17 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ln.php', [ - 'weekdays' => ['eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', 'mokɔlɔ ya mítáno', 'mpɔ́sɔ'], - 'weekdays_short' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'], - 'weekdays_min' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'], - 'meridiem' => ['ntɔ́ngɔ́', 'mpókwa'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ln_CG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ln_CG.php deleted file mode 100644 index 7fdb7f1b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ln_CG.php +++ /dev/null @@ -1,17 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ln.php', [ - 'weekdays' => ['eyenga', 'mokɔlɔ mwa yambo', 'mokɔlɔ mwa míbalé', 'mokɔlɔ mwa mísáto', 'mokɔlɔ ya mínéi', 'mokɔlɔ ya mítáno', 'mpɔ́sɔ'], - 'weekdays_short' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'], - 'weekdays_min' => ['eye', 'ybo', 'mbl', 'mst', 'min', 'mtn', 'mps'], - 'meridiem' => ['ntɔ́ngɔ́', 'mpókwa'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lo.php b/vendor/nesbot/carbon/src/Carbon/Lang/lo.php deleted file mode 100644 index 48715f5c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lo.php +++ /dev/null @@ -1,62 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - ryanhart2 - */ -return [ - 'year' => ':count ປີ', - 'y' => ':count ປີ', - 'month' => ':count ເດືອນ', - 'm' => ':count ດ. ', - 'week' => ':count ອາທິດ', - 'w' => ':count ອທ. ', - 'day' => ':count ມື້', - 'd' => ':count ມື້', - 'hour' => ':count ຊົ່ວໂມງ', - 'h' => ':count ຊມ. ', - 'minute' => ':count ນາທີ', - 'min' => ':count ນທ. ', - 'second' => '{1}ບໍ່ເທົ່າໃດວິນາທີ|]1,Inf[:count ວິນາທີ', - 's' => ':count ວິ. ', - 'ago' => ':timeຜ່ານມາ', - 'from_now' => 'ອີກ :time', - 'diff_now' => 'ຕອນນີ້', - 'diff_today' => 'ມື້ນີ້ເວລາ', - 'diff_yesterday' => 'ມື້ວານນີ້ເວລາ', - 'diff_tomorrow' => 'ມື້ອື່ນເວລາ', - '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', - ], - 'calendar' => [ - 'sameDay' => '[ມື້ນີ້ເວລາ] LT', - 'nextDay' => '[ມື້ອື່ນເວລາ] LT', - 'nextWeek' => '[ວັນ]dddd[ໜ້າເວລາ] LT', - 'lastDay' => '[ມື້ວານນີ້ເວລາ] LT', - 'lastWeek' => '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT', - 'sameElse' => 'L', - ], - 'ordinal' => 'ທີ່:number', - 'meridiem' => ['ຕອນເຊົ້າ', 'ຕອນແລງ'], - 'months' => ['ມັງກອນ', 'ກຸມພາ', 'ມີນາ', 'ເມສາ', 'ພຶດສະພາ', 'ມິຖຸນາ', 'ກໍລະກົດ', 'ສິງຫາ', 'ກັນຍາ', 'ຕຸລາ', 'ພະຈິກ', 'ທັນວາ'], - 'months_short' => ['ມັງກອນ', 'ກຸມພາ', 'ມີນາ', 'ເມສາ', 'ພຶດສະພາ', 'ມິຖຸນາ', 'ກໍລະກົດ', 'ສິງຫາ', 'ກັນຍາ', 'ຕຸລາ', 'ພະຈິກ', 'ທັນວາ'], - 'weekdays' => ['ອາທິດ', 'ຈັນ', 'ອັງຄານ', 'ພຸດ', 'ພະຫັດ', 'ສຸກ', 'ເສົາ'], - 'weekdays_short' => ['ທິດ', 'ຈັນ', 'ອັງຄານ', 'ພຸດ', 'ພະຫັດ', 'ສຸກ', 'ເສົາ'], - 'weekdays_min' => ['ທ', 'ຈ', 'ອຄ', 'ພ', 'ພຫ', 'ສກ', 'ສ'], - 'list' => [', ', 'ແລະ '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lo_LA.php b/vendor/nesbot/carbon/src/Carbon/Lang/lo_LA.php deleted file mode 100644 index 9b7fd9bf..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lo_LA.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/lo.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lrc.php b/vendor/nesbot/carbon/src/Carbon/Lang/lrc.php deleted file mode 100644 index 546e6791..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lrc.php +++ /dev/null @@ -1,17 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - - 'minute' => ':count هنر', // less reliable - 'min' => ':count هنر', // less reliable - 'a_minute' => ':count هنر', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lrc_IQ.php b/vendor/nesbot/carbon/src/Carbon/Lang/lrc_IQ.php deleted file mode 100644 index d42f5e97..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lrc_IQ.php +++ /dev/null @@ -1,13 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/lrc.php', [ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lt.php b/vendor/nesbot/carbon/src/Carbon/Lang/lt.php deleted file mode 100644 index 7d1b6f74..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lt.php +++ /dev/null @@ -1,135 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Philippe Vaucher - * - Tsutomu Kuroda - * - tjku - * - valdas406 - * - Justas Palumickas - * - Max Melentiev - * - Andrius Janauskas - * - Juanito Fatas - * - Akira Matsuda - * - Christopher Dell - * - Enrique Vidal - * - Simone Carletti - * - Aaron Patterson - * - Nicolás Hock Isaza - * - Laurynas Butkus - * - Sven Fuchs - * - Dominykas Tijūnaitis - * - Justinas Bolys - * - Ričardas - * - Kirill Chalkin - * - Rolandas - * - Justinas (Gamesh) - */ -return [ - 'year' => ':count metai|:count metai|:count metų', - 'y' => ':count m.', - 'month' => ':count mėnuo|:count mėnesiai|:count mėnesį', - 'm' => ':count mėn.', - 'week' => ':count savaitė|:count savaitės|:count savaitę', - 'w' => ':count sav.', - 'day' => ':count diena|:count dienos|:count dienų', - 'd' => ':count d.', - 'hour' => ':count valanda|:count valandos|:count valandų', - 'h' => ':count val.', - 'minute' => ':count minutė|:count minutės|:count minutę', - 'min' => ':count min.', - 'second' => ':count sekundė|:count sekundės|:count sekundžių', - 's' => ':count sek.', - - 'year_ago' => ':count metus|:count metus|:count metų', - 'month_ago' => ':count mėnesį|:count mėnesius|:count mėnesių', - 'week_ago' => ':count savaitę|:count savaites|:count savaičių', - 'day_ago' => ':count dieną|:count dienas|:count dienų', - 'hour_ago' => ':count valandą|:count valandas|:count valandų', - 'minute_ago' => ':count minutę|:count minutes|:count minučių', - 'second_ago' => ':count sekundę|:count sekundes|:count sekundžių', - - 'year_from_now' => ':count metų', - 'month_from_now' => ':count mėnesio|:count mėnesių|:count mėnesių', - 'week_from_now' => ':count savaitės|:count savaičių|:count savaičių', - 'day_from_now' => ':count dienos|:count dienų|:count dienų', - 'hour_from_now' => ':count valandos|:count valandų|:count valandų', - 'minute_from_now' => ':count minutės|:count minučių|:count minučių', - 'second_from_now' => ':count sekundės|:count sekundžių|:count sekundžių', - - 'year_after' => ':count metų', - 'month_after' => ':count mėnesio|:count mėnesių|:count mėnesių', - 'week_after' => ':count savaitės|:count savaičių|:count savaičių', - 'day_after' => ':count dienos|:count dienų|:count dienų', - 'hour_after' => ':count valandos|:count valandų|:count valandų', - 'minute_after' => ':count minutės|:count minučių|:count minučių', - 'second_after' => ':count sekundės|:count sekundžių|:count sekundžių', - - 'ago' => 'prieš :time', - 'from_now' => ':time nuo dabar', - 'after' => 'po :time', - 'before' => 'už :time', - - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - - 'diff_now' => 'ką tik', - 'diff_today' => 'Šiandien', - 'diff_yesterday' => 'vakar', - 'diff_yesterday_regexp' => 'Vakar', - 'diff_tomorrow' => 'rytoj', - 'diff_tomorrow_regexp' => 'Rytoj', - 'diff_before_yesterday' => 'užvakar', - 'diff_after_tomorrow' => 'poryt', - - 'period_recurrences' => 'kartą|:count kartų', - 'period_interval' => 'kiekvieną :interval', - 'period_start_date' => 'nuo :date', - 'period_end_date' => 'iki :date', - - 'months' => ['sausio', 'vasario', 'kovo', 'balandžio', 'gegužės', 'birželio', 'liepos', 'rugpjūčio', 'rugsėjo', 'spalio', 'lapkričio', 'gruodžio'], - 'months_standalone' => ['sausis', 'vasaris', 'kovas', 'balandis', 'gegužė', 'birželis', 'liepa', 'rugpjūtis', 'rugsėjis', 'spalis', 'lapkritis', 'gruodis'], - 'months_regexp' => '/(L{2,4}|D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?)/', - 'months_short' => ['sau', 'vas', 'kov', 'bal', 'geg', 'bir', 'lie', 'rgp', 'rgs', 'spa', 'lap', 'gru'], - 'weekdays' => ['sekmadienį', 'pirmadienį', 'antradienį', 'trečiadienį', 'ketvirtadienį', 'penktadienį', 'šeštadienį'], - 'weekdays_standalone' => ['sekmadienis', 'pirmadienis', 'antradienis', 'trečiadienis', 'ketvirtadienis', 'penktadienis', 'šeštadienis'], - 'weekdays_short' => ['sek', 'pir', 'ant', 'tre', 'ket', 'pen', 'šeš'], - 'weekdays_min' => ['se', 'pi', 'an', 'tr', 'ke', 'pe', 'še'], - 'list' => [', ', ' ir '], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY-MM-DD', - 'LL' => 'MMMM DD, YYYY', - 'LLL' => 'DD MMM HH:mm', - 'LLLL' => 'MMMM DD, YYYY HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[Šiandien] LT', - 'nextDay' => '[Rytoj] LT', - 'nextWeek' => 'dddd LT', - 'lastDay' => '[Vakar] LT', - 'lastWeek' => '[Paskutinį] dddd LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number) { - switch ($number) { - case 0: - return '0-is'; - case 3: - return '3-ias'; - default: - return "$number-as"; - } - }, - 'meridiem' => ['priešpiet', 'popiet'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lt_LT.php b/vendor/nesbot/carbon/src/Carbon/Lang/lt_LT.php deleted file mode 100644 index f772d38b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lt_LT.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/lt.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lu.php b/vendor/nesbot/carbon/src/Carbon/Lang/lu.php deleted file mode 100644 index c8cd83af..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lu.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['Dinda', 'Dilolo'], - 'weekdays' => ['Lumingu', 'Nkodya', 'Ndàayà', 'Ndangù', 'Njòwa', 'Ngòvya', 'Lubingu'], - 'weekdays_short' => ['Lum', 'Nko', 'Ndy', 'Ndg', 'Njw', 'Ngv', 'Lub'], - 'weekdays_min' => ['Lum', 'Nko', 'Ndy', 'Ndg', 'Njw', 'Ngv', 'Lub'], - 'months' => ['Ciongo', 'Lùishi', 'Lusòlo', 'Mùuyà', 'Lumùngùlù', 'Lufuimi', 'Kabàlàshìpù', 'Lùshìkà', 'Lutongolo', 'Lungùdi', 'Kaswèkèsè', 'Ciswà'], - 'months_short' => ['Cio', 'Lui', 'Lus', 'Muu', 'Lum', 'Luf', 'Kab', 'Lush', 'Lut', 'Lun', 'Kas', 'Cis'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/luo.php b/vendor/nesbot/carbon/src/Carbon/Lang/luo.php deleted file mode 100644 index b55af731..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/luo.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['OD', 'OT'], - 'weekdays' => ['Jumapil', 'Wuok Tich', 'Tich Ariyo', 'Tich Adek', 'Tich Ang’wen', 'Tich Abich', 'Ngeso'], - 'weekdays_short' => ['JMP', 'WUT', 'TAR', 'TAD', 'TAN', 'TAB', 'NGS'], - 'weekdays_min' => ['JMP', 'WUT', 'TAR', 'TAD', 'TAN', 'TAB', 'NGS'], - 'months' => ['Dwe mar Achiel', 'Dwe mar Ariyo', 'Dwe mar Adek', 'Dwe mar Ang’wen', 'Dwe mar Abich', 'Dwe mar Auchiel', 'Dwe mar Abiriyo', 'Dwe mar Aboro', 'Dwe mar Ochiko', 'Dwe mar Apar', 'Dwe mar gi achiel', 'Dwe mar Apar gi ariyo'], - 'months_short' => ['DAC', 'DAR', 'DAD', 'DAN', 'DAH', 'DAU', 'DAO', 'DAB', 'DOC', 'DAP', 'DGI', 'DAG'], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], - - 'year' => 'higni :count', - 'y' => 'higni :count', - 'a_year' => ':higni :count', - - 'month' => 'dweche :count', - 'm' => 'dweche :count', - 'a_month' => 'dweche :count', - - 'week' => 'jumbe :count', - 'w' => 'jumbe :count', - 'a_week' => 'jumbe :count', - - 'day' => 'ndalo :count', - 'd' => 'ndalo :count', - 'a_day' => 'ndalo :count', - - 'hour' => 'seche :count', - 'h' => 'seche :count', - 'a_hour' => 'seche :count', - - 'minute' => 'dakika :count', - 'min' => 'dakika :count', - 'a_minute' => 'dakika :count', - - 'second' => 'nus dakika :count', - 's' => 'nus dakika :count', - 'a_second' => 'nus dakika :count', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/luy.php b/vendor/nesbot/carbon/src/Carbon/Lang/luy.php deleted file mode 100644 index 2b37e3e3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/luy.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'weekdays' => ['Jumapiri', 'Jumatatu', 'Jumanne', 'Jumatano', 'Murwa wa Kanne', 'Murwa wa Katano', 'Jumamosi'], - 'weekdays_short' => ['J2', 'J3', 'J4', 'J5', 'Al', 'Ij', 'J1'], - 'weekdays_min' => ['J2', 'J3', 'J4', 'J5', 'Al', 'Ij', 'J1'], - 'months' => ['Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'], - 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], - - // Too unreliable - /* - 'year' => ':count liliino', // less reliable - 'y' => ':count liliino', // less reliable - 'a_year' => ':count liliino', // less reliable - - 'month' => ':count kumwesi', // less reliable - 'm' => ':count kumwesi', // less reliable - 'a_month' => ':count kumwesi', // less reliable - - 'week' => ':count olutambi', // less reliable - 'w' => ':count olutambi', // less reliable - 'a_week' => ':count olutambi', // less reliable - - 'day' => ':count luno', // less reliable - 'd' => ':count luno', // less reliable - 'a_day' => ':count luno', // less reliable - - 'hour' => ':count ekengele', // less reliable - 'h' => ':count ekengele', // less reliable - 'a_hour' => ':count ekengele', // less reliable - - 'minute' => ':count omundu', // less reliable - 'min' => ':count omundu', // less reliable - 'a_minute' => ':count omundu', // less reliable - - 'second' => ':count liliino', // less reliable - 's' => ':count liliino', // less reliable - 'a_second' => ':count liliino', // less reliable - */ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lv.php b/vendor/nesbot/carbon/src/Carbon/Lang/lv.php deleted file mode 100644 index d5cba7ca..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lv.php +++ /dev/null @@ -1,183 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Carbon\CarbonInterface; - -/** - * This file is part of the Carbon package. - * - * (c) Brian Nesbitt - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Philippe Vaucher - * - pirminis - * - Tsutomu Kuroda - * - tjku - * - Andris Zāģeris - * - Max Melentiev - * - Edgars Beigarts - * - Juanito Fatas - * - Vitauts Stočka - * - Akira Matsuda - * - Christopher Dell - * - Enrique Vidal - * - Simone Carletti - * - Aaron Patterson - * - Kaspars Bankovskis - * - Nicolás Hock Isaza - * - Viesturs Kavacs (Kavacky) - * - zakse - * - Janis Eglitis (janiseglitis) - * - Guntars - * - Juris Sudmalis - */ -$daysOfWeek = ['svētdiena', 'pirmdiena', 'otrdiena', 'trešdiena', 'ceturtdiena', 'piektdiena', 'sestdiena']; -$daysOfWeekLocativum = ['svētdien', 'pirmdien', 'otrdien', 'trešdien', 'ceturtdien', 'piektdien', 'sestdien']; - -$transformDiff = function ($input) { - return strtr($input, [ - // Nominative => "pirms/pēc" Dative - 'gads' => 'gada', - 'gadi' => 'gadiem', - 'gadu' => 'gadiem', - 'mēnesis' => 'mēneša', - 'mēneši' => 'mēnešiem', - 'mēnešu' => 'mēnešiem', - 'nedēļa' => 'nedēļas', - 'nedēļas' => 'nedēļām', - 'nedēļu' => 'nedēļām', - 'diena' => 'dienas', - 'dienas' => 'dienām', - 'dienu' => 'dienām', - 'stunda' => 'stundas', - 'stundas' => 'stundām', - 'stundu' => 'stundām', - 'minūte' => 'minūtes', - 'minūtes' => 'minūtēm', - 'minūšu' => 'minūtēm', - 'sekunde' => 'sekundes', - 'sekundes' => 'sekundēm', - 'sekunžu' => 'sekundēm', - ]); -}; - -return [ - 'ago' => function ($time) use ($transformDiff) { - return 'pirms '.$transformDiff($time); - }, - 'from_now' => function ($time) use ($transformDiff) { - return 'pēc '.$transformDiff($time); - }, - - 'year' => '0 gadu|:count gads|:count gadi', - 'y' => ':count g.', - 'a_year' => '{1}gads|0 gadu|:count gads|:count gadi', - 'month' => '0 mēnešu|:count mēnesis|:count mēneši', - 'm' => ':count mēn.', - 'a_month' => '{1}mēnesis|0 mēnešu|:count mēnesis|:count mēneši', - 'week' => '0 nedēļu|:count nedēļa|:count nedēļas', - 'w' => ':count ned.', - 'a_week' => '{1}nedēļa|0 nedēļu|:count nedēļa|:count nedēļas', - 'day' => '0 dienu|:count diena|:count dienas', - 'd' => ':count d.', - 'a_day' => '{1}diena|0 dienu|:count diena|:count dienas', - 'hour' => '0 stundu|:count stunda|:count stundas', - 'h' => ':count st.', - 'a_hour' => '{1}stunda|0 stundu|:count stunda|:count stundas', - 'minute' => '0 minūšu|:count minūte|:count minūtes', - 'min' => ':count min.', - 'a_minute' => '{1}minūte|0 minūšu|:count minūte|:count minūtes', - 'second' => '0 sekunžu|:count sekunde|:count sekundes', - 's' => ':count sek.', - 'a_second' => '{1}sekunde|0 sekunžu|:count sekunde|:count sekundes', - - 'after' => ':time vēlāk', - 'year_after' => '0 gadus|:count gadu|:count gadus', - 'a_year_after' => '{1}gadu|0 gadus|:count gadu|:count gadus', - 'month_after' => '0 mēnešus|:count mēnesi|:count mēnešus', - 'a_month_after' => '{1}mēnesi|0 mēnešus|:count mēnesi|:count mēnešus', - 'week_after' => '0 nedēļas|:count nedēļu|:count nedēļas', - 'a_week_after' => '{1}nedēļu|0 nedēļas|:count nedēļu|:count nedēļas', - 'day_after' => '0 dienas|:count dienu|:count dienas', - 'a_day_after' => '{1}dienu|0 dienas|:count dienu|:count dienas', - 'hour_after' => '0 stundas|:count stundu|:count stundas', - 'a_hour_after' => '{1}stundu|0 stundas|:count stundu|:count stundas', - 'minute_after' => '0 minūtes|:count minūti|:count minūtes', - 'a_minute_after' => '{1}minūti|0 minūtes|:count minūti|:count minūtes', - 'second_after' => '0 sekundes|:count sekundi|:count sekundes', - 'a_second_after' => '{1}sekundi|0 sekundes|:count sekundi|:count sekundes', - - 'before' => ':time agrāk', - 'year_before' => '0 gadus|:count gadu|:count gadus', - 'a_year_before' => '{1}gadu|0 gadus|:count gadu|:count gadus', - 'month_before' => '0 mēnešus|:count mēnesi|:count mēnešus', - 'a_month_before' => '{1}mēnesi|0 mēnešus|:count mēnesi|:count mēnešus', - 'week_before' => '0 nedēļas|:count nedēļu|:count nedēļas', - 'a_week_before' => '{1}nedēļu|0 nedēļas|:count nedēļu|:count nedēļas', - 'day_before' => '0 dienas|:count dienu|:count dienas', - 'a_day_before' => '{1}dienu|0 dienas|:count dienu|:count dienas', - 'hour_before' => '0 stundas|:count stundu|:count stundas', - 'a_hour_before' => '{1}stundu|0 stundas|:count stundu|:count stundas', - 'minute_before' => '0 minūtes|:count minūti|:count minūtes', - 'a_minute_before' => '{1}minūti|0 minūtes|:count minūti|:count minūtes', - 'second_before' => '0 sekundes|:count sekundi|:count sekundes', - 'a_second_before' => '{1}sekundi|0 sekundes|:count sekundi|:count sekundes', - - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' un '], - - 'diff_now' => 'tagad', - 'diff_today' => 'šodien', - 'diff_yesterday' => 'vakar', - 'diff_before_yesterday' => 'aizvakar', - 'diff_tomorrow' => 'rīt', - 'diff_after_tomorrow' => 'parīt', - - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD.MM.YYYY.', - 'LL' => 'YYYY. [gada] D. MMMM', - 'LLL' => 'DD.MM.YYYY., HH:mm', - 'LLLL' => 'YYYY. [gada] D. MMMM, HH:mm', - ], - - 'calendar' => [ - 'sameDay' => '[šodien] [plkst.] LT', - 'nextDay' => '[rīt] [plkst.] LT', - 'nextWeek' => function (CarbonInterface $current, CarbonInterface $other) use ($daysOfWeekLocativum) { - if ($current->week !== $other->week) { - return '[nākošo] ['.$daysOfWeekLocativum[$current->dayOfWeek].'] [plkst.] LT'; - } - - return '['.$daysOfWeekLocativum[$current->dayOfWeek].'] [plkst.] LT'; - }, - 'lastDay' => '[vakar] [plkst.] LT', - 'lastWeek' => function (CarbonInterface $current) use ($daysOfWeekLocativum) { - return '[pagājušo] ['.$daysOfWeekLocativum[$current->dayOfWeek].'] [plkst.] LT'; - }, - 'sameElse' => 'L', - ], - - 'weekdays' => $daysOfWeek, - 'weekdays_short' => ['Sv.', 'P.', 'O.', 'T.', 'C.', 'Pk.', 'S.'], - 'weekdays_min' => ['Sv.', 'P.', 'O.', 'T.', 'C.', 'Pk.', 'S.'], - 'months' => ['janvāris', 'februāris', 'marts', 'aprīlis', 'maijs', 'jūnijs', 'jūlijs', 'augusts', 'septembris', 'oktobris', 'novembris', 'decembris'], - 'months_standalone' => ['janvārī', 'februārī', 'martā', 'aprīlī', 'maijā', 'jūnijā', 'jūlijā', 'augustā', 'septembrī', 'oktobrī', 'novembrī', 'decembrī'], - 'months_short' => ['janv.', 'febr.', 'martā', 'apr.', 'maijā', 'jūn.', 'jūl.', 'aug.', 'sept.', 'okt.', 'nov.', 'dec.'], - 'meridiem' => ['priekšpusdiena', 'pēcpusdiena'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lv_LV.php b/vendor/nesbot/carbon/src/Carbon/Lang/lv_LV.php deleted file mode 100644 index ee91c369..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lv_LV.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/lv.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lzh.php b/vendor/nesbot/carbon/src/Carbon/Lang/lzh.php deleted file mode 100644 index 1180c6bb..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lzh.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/lzh_TW.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/lzh_TW.php b/vendor/nesbot/carbon/src/Carbon/Lang/lzh_TW.php deleted file mode 100644 index 3b1493ee..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/lzh_TW.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'OY[年]MMMMOD[日]', - ], - 'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], - 'months_short' => [' 一 ', ' 二 ', ' 三 ', ' 四 ', ' 五 ', ' 六 ', ' 七 ', ' 八 ', ' 九 ', ' 十 ', '十一', '十二'], - 'weekdays' => ['週日', '週一', '週二', '週三', '週四', '週五', '週六'], - 'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'], - 'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'], - 'day_of_first_week_of_year' => 1, - 'alt_numbers' => ['〇', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '廿', '廿一', '廿二', '廿三', '廿四', '廿五', '廿六', '廿七', '廿八', '廿九', '卅', '卅一'], - 'meridiem' => ['朝', '暮'], - - 'year' => ':count 夏', // less reliable - 'y' => ':count 夏', // less reliable - 'a_year' => ':count 夏', // less reliable - - 'month' => ':count 月', // less reliable - 'm' => ':count 月', // less reliable - 'a_month' => ':count 月', // less reliable - - 'hour' => ':count 氧', // less reliable - 'h' => ':count 氧', // less reliable - 'a_hour' => ':count 氧', // less reliable - - 'minute' => ':count 點', // less reliable - 'min' => ':count 點', // less reliable - 'a_minute' => ':count 點', // less reliable - - 'second' => ':count 楚', // less reliable - 's' => ':count 楚', // less reliable - 'a_second' => ':count 楚', // less reliable - - 'week' => ':count 星期', - 'w' => ':count 星期', - 'a_week' => ':count 星期', - - 'day' => ':count 日(曆法)', - 'd' => ':count 日(曆法)', - 'a_day' => ':count 日(曆法)', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mag.php b/vendor/nesbot/carbon/src/Carbon/Lang/mag.php deleted file mode 100644 index 7532436d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mag.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/mag_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mag_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/mag_IN.php deleted file mode 100644 index 193f67a7..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mag_IN.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - bhashaghar@googlegroups.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'], - 'months_short' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'], - 'weekdays' => ['एतवार', 'सोमार', 'मंगर', 'बुध', 'बिफे', 'सूक', 'सनिचर'], - 'weekdays_short' => ['एतवार', 'सोमार', 'मंगर', 'बुध', 'बिफे', 'सूक', 'सनिचर'], - 'weekdays_min' => ['एतवार', 'सोमार', 'मंगर', 'बुध', 'बिफे', 'सूक', 'सनिचर'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['पूर्वाह्न', 'अपराह्न'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mai.php b/vendor/nesbot/carbon/src/Carbon/Lang/mai.php deleted file mode 100644 index 792b9739..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mai.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/mai_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mai_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/mai_IN.php deleted file mode 100644 index 03049d45..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mai_IN.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Maithili Computing Research Center, Pune, India rajeshkajha@yahoo.com,akhilesh.k@samusng.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['बैसाख', 'जेठ', 'अषाढ़', 'सावोन', 'भादो', 'आसिन', 'कातिक', 'अगहन', 'पूस', 'माघ', 'फागुन', 'चैति'], - 'months_short' => ['बैसाख', 'जेठ', 'अषाढ़', 'सावोन', 'भादो', 'आसिन', 'कातिक', 'अगहन', 'पूस', 'माघ', 'फागुन', 'चैति'], - 'weekdays' => ['रविदिन', 'सोमदिन', 'मंगलदिन', 'बुधदिन', 'बृहस्पतीदिन', 'शुक्रदिन', 'शनीदिन'], - 'weekdays_short' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पती', 'शुक्र', 'शनी'], - 'weekdays_min' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पती', 'शुक्र', 'शनी'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['पूर्वाह्न', 'अपराह्न'], - - 'year' => ':count ऋतु', // less reliable - 'y' => ':count ऋतु', // less reliable - 'a_year' => ':count ऋतु', // less reliable - - 'month' => ':count महिना', - 'm' => ':count महिना', - 'a_month' => ':count महिना', - - 'week' => ':count श्रेणी:क्यालेन्डर', // less reliable - 'w' => ':count श्रेणी:क्यालेन्डर', // less reliable - 'a_week' => ':count श्रेणी:क्यालेन्डर', // less reliable - - 'day' => ':count दिन', - 'd' => ':count दिन', - 'a_day' => ':count दिन', - - 'hour' => ':count घण्टा', - 'h' => ':count घण्टा', - 'a_hour' => ':count घण्टा', - - 'minute' => ':count समय', // less reliable - 'min' => ':count समय', // less reliable - 'a_minute' => ':count समय', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mas.php b/vendor/nesbot/carbon/src/Carbon/Lang/mas.php deleted file mode 100644 index cbd610c2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mas.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['Ɛnkakɛnyá', 'Ɛndámâ'], - 'weekdays' => ['Jumapílí', 'Jumatátu', 'Jumane', 'Jumatánɔ', 'Alaámisi', 'Jumáa', 'Jumamósi'], - 'weekdays_short' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - 'weekdays_min' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - 'months' => ['Oladalʉ́', 'Arát', 'Ɔɛnɨ́ɔɨŋɔk', 'Olodoyíóríê inkókúâ', 'Oloilépūnyīē inkókúâ', 'Kújúɔrɔk', 'Mórusásin', 'Ɔlɔ́ɨ́bɔ́rárɛ', 'Kúshîn', 'Olgísan', 'Pʉshʉ́ka', 'Ntʉ́ŋʉ́s'], - 'months_short' => ['Dal', 'Ará', 'Ɔɛn', 'Doy', 'Lép', 'Rok', 'Sás', 'Bɔ́r', 'Kús', 'Gís', 'Shʉ́', 'Ntʉ́'], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], - - 'year' => ':count olameyu', // less reliable - 'y' => ':count olameyu', // less reliable - 'a_year' => ':count olameyu', // less reliable - - 'week' => ':count engolongeare orwiki', // less reliable - 'w' => ':count engolongeare orwiki', // less reliable - 'a_week' => ':count engolongeare orwiki', // less reliable - - 'hour' => ':count esahabu', // less reliable - 'h' => ':count esahabu', // less reliable - 'a_hour' => ':count esahabu', // less reliable - - 'second' => ':count are', // less reliable - 's' => ':count are', // less reliable - 'a_second' => ':count are', // less reliable - - 'month' => ':count olapa', - 'm' => ':count olapa', - 'a_month' => ':count olapa', - - 'day' => ':count enkolongʼ', - 'd' => ':count enkolongʼ', - 'a_day' => ':count enkolongʼ', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mas_TZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/mas_TZ.php deleted file mode 100644 index 56e29053..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mas_TZ.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/mas.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mer.php b/vendor/nesbot/carbon/src/Carbon/Lang/mer.php deleted file mode 100644 index 2e14597f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mer.php +++ /dev/null @@ -1,43 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['RŨ', 'ŨG'], - 'weekdays' => ['Kiumia', 'Muramuko', 'Wairi', 'Wethatu', 'Wena', 'Wetano', 'Jumamosi'], - 'weekdays_short' => ['KIU', 'MRA', 'WAI', 'WET', 'WEN', 'WTN', 'JUM'], - 'weekdays_min' => ['KIU', 'MRA', 'WAI', 'WET', 'WEN', 'WTN', 'JUM'], - 'months' => ['Januarĩ', 'Feburuarĩ', 'Machi', 'Ĩpurũ', 'Mĩĩ', 'Njuni', 'Njuraĩ', 'Agasti', 'Septemba', 'Oktũba', 'Novemba', 'Dicemba'], - 'months_short' => ['JAN', 'FEB', 'MAC', 'ĨPU', 'MĨĨ', 'NJU', 'NJR', 'AGA', 'SPT', 'OKT', 'NOV', 'DEC'], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], - - 'year' => ':count murume', // less reliable - 'y' => ':count murume', // less reliable - 'a_year' => ':count murume', // less reliable - - 'month' => ':count muchaara', // less reliable - 'm' => ':count muchaara', // less reliable - 'a_month' => ':count muchaara', // less reliable - - 'minute' => ':count monto', // less reliable - 'min' => ':count monto', // less reliable - 'a_minute' => ':count monto', // less reliable - - 'second' => ':count gikeno', // less reliable - 's' => ':count gikeno', // less reliable - 'a_second' => ':count gikeno', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mfe.php b/vendor/nesbot/carbon/src/Carbon/Lang/mfe.php deleted file mode 100644 index 4d6e6b69..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mfe.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/mfe_MU.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mfe_MU.php b/vendor/nesbot/carbon/src/Carbon/Lang/mfe_MU.php deleted file mode 100644 index 2d27b457..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mfe_MU.php +++ /dev/null @@ -1,53 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Samsung Electronics Co., Ltd. akhilesh.k@samsung.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['zanvie', 'fevriye', 'mars', 'avril', 'me', 'zin', 'zilye', 'out', 'septam', 'oktob', 'novam', 'desam'], - 'months_short' => ['zan', 'fev', 'mar', 'avr', 'me', 'zin', 'zil', 'out', 'sep', 'okt', 'nov', 'des'], - 'weekdays' => ['dimans', 'lindi', 'mardi', 'merkredi', 'zedi', 'vandredi', 'samdi'], - 'weekdays_short' => ['dim', 'lin', 'mar', 'mer', 'ze', 'van', 'sam'], - 'weekdays_min' => ['dim', 'lin', 'mar', 'mer', 'ze', 'van', 'sam'], - - 'year' => ':count banané', - 'y' => ':count banané', - 'a_year' => ':count banané', - - 'month' => ':count mwa', - 'm' => ':count mwa', - 'a_month' => ':count mwa', - - 'week' => ':count sémenn', - 'w' => ':count sémenn', - 'a_week' => ':count sémenn', - - 'day' => ':count zour', - 'd' => ':count zour', - 'a_day' => ':count zour', - - 'hour' => ':count -er-tan', - 'h' => ':count -er-tan', - 'a_hour' => ':count -er-tan', - - 'minute' => ':count minitt', - 'min' => ':count minitt', - 'a_minute' => ':count minitt', - - 'second' => ':count déziém', - 's' => ':count déziém', - 'a_second' => ':count déziém', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mg.php b/vendor/nesbot/carbon/src/Carbon/Lang/mg.php deleted file mode 100644 index 40bc2a82..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mg.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/mg_MG.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mg_MG.php b/vendor/nesbot/carbon/src/Carbon/Lang/mg_MG.php deleted file mode 100644 index 6a14535a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mg_MG.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - The Debian Project modified by GNU//Linux Malagasy Rado Ramarotafika,Do-Risika RAFIEFERANTSIARONJY rado@linuxmg.org,dourix@free.fr - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], - 'months' => ['Janoary', 'Febroary', 'Martsa', 'Aprily', 'Mey', 'Jona', 'Jolay', 'Aogositra', 'Septambra', 'Oktobra', 'Novambra', 'Desambra'], - 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'Mey', 'Jon', 'Jol', 'Aog', 'Sep', 'Okt', 'Nov', 'Des'], - 'weekdays' => ['alahady', 'alatsinainy', 'talata', 'alarobia', 'alakamisy', 'zoma', 'sabotsy'], - 'weekdays_short' => ['lhd', 'lts', 'tlt', 'lrb', 'lkm', 'zom', 'sab'], - 'weekdays_min' => ['lhd', 'lts', 'tlt', 'lrb', 'lkm', 'zom', 'sab'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - - 'minute' => ':count minitra', // less reliable - 'min' => ':count minitra', // less reliable - 'a_minute' => ':count minitra', // less reliable - - 'year' => ':count taona', - 'y' => ':count taona', - 'a_year' => ':count taona', - - 'month' => ':count volana', - 'm' => ':count volana', - 'a_month' => ':count volana', - - 'week' => ':count herinandro', - 'w' => ':count herinandro', - 'a_week' => ':count herinandro', - - 'day' => ':count andro', - 'd' => ':count andro', - 'a_day' => ':count andro', - - 'hour' => ':count ora', - 'h' => ':count ora', - 'a_hour' => ':count ora', - - 'second' => ':count segondra', - 's' => ':count segondra', - 'a_second' => ':count segondra', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mgh.php b/vendor/nesbot/carbon/src/Carbon/Lang/mgh.php deleted file mode 100644 index 2a80960d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mgh.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['wichishu', 'mchochil’l'], - 'weekdays' => ['Sabato', 'Jumatatu', 'Jumanne', 'Jumatano', 'Arahamisi', 'Ijumaa', 'Jumamosi'], - 'weekdays_short' => ['Sab', 'Jtt', 'Jnn', 'Jtn', 'Ara', 'Iju', 'Jmo'], - 'weekdays_min' => ['Sab', 'Jtt', 'Jnn', 'Jtn', 'Ara', 'Iju', 'Jmo'], - 'months' => ['Mweri wo kwanza', 'Mweri wo unayeli', 'Mweri wo uneraru', 'Mweri wo unecheshe', 'Mweri wo unethanu', 'Mweri wo thanu na mocha', 'Mweri wo saba', 'Mweri wo nane', 'Mweri wo tisa', 'Mweri wo kumi', 'Mweri wo kumi na moja', 'Mweri wo kumi na yel’li'], - 'months_short' => ['Kwa', 'Una', 'Rar', 'Che', 'Tha', 'Moc', 'Sab', 'Nan', 'Tis', 'Kum', 'Moj', 'Yel'], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mgo.php b/vendor/nesbot/carbon/src/Carbon/Lang/mgo.php deleted file mode 100644 index a126c9ff..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mgo.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'weekdays' => ['Aneg 1', 'Aneg 2', 'Aneg 3', 'Aneg 4', 'Aneg 5', 'Aneg 6', 'Aneg 7'], - 'weekdays_short' => ['Aneg 1', 'Aneg 2', 'Aneg 3', 'Aneg 4', 'Aneg 5', 'Aneg 6', 'Aneg 7'], - 'weekdays_min' => ['1', '2', '3', '4', '5', '6', '7'], - 'months' => ['iməg mbegtug', 'imeg àbùbì', 'imeg mbəŋchubi', 'iməg ngwə̀t', 'iməg fog', 'iməg ichiibɔd', 'iməg àdùmbə̀ŋ', 'iməg ichika', 'iməg kud', 'iməg tèsiʼe', 'iməg zò', 'iməg krizmed'], - 'months_short' => ['mbegtug', 'imeg àbùbì', 'imeg mbəŋchubi', 'iməg ngwə̀t', 'iməg fog', 'iməg ichiibɔd', 'iməg àdùmbə̀ŋ', 'iməg ichika', 'iməg kud', 'iməg tèsiʼe', 'iməg zò', 'iməg krizmed'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY-MM-dd', - 'LL' => 'YYYY MMM D', - 'LLL' => 'YYYY MMMM D HH:mm', - 'LLLL' => 'dddd, YYYY MMMM DD HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mhr.php b/vendor/nesbot/carbon/src/Carbon/Lang/mhr.php deleted file mode 100644 index 6bbc9f6d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mhr.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/mhr_RU.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mhr_RU.php b/vendor/nesbot/carbon/src/Carbon/Lang/mhr_RU.php deleted file mode 100644 index 309ead9d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mhr_RU.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - PeshSajSoft Ltd. Vyacheslav Kileev slavakileev@yandex.ru - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'YYYY.MM.DD', - ], - 'months' => ['Шорыкйол', 'Пургыж', 'Ӱярня', 'Вӱдшор', 'Ага', 'Пеледыш', 'Сӱрем', 'Сорла', 'Идым', 'Шыжа', 'Кылме', 'Теле'], - 'months_short' => ['Шрк', 'Пгж', 'Ӱрн', 'Вшр', 'Ага', 'Пдш', 'Срм', 'Срл', 'Идм', 'Шыж', 'Клм', 'Тел'], - 'weekdays' => ['Рушарня', 'Шочмо', 'Кушкыжмо', 'Вӱргече', 'Изарня', 'Кугарня', 'Шуматкече'], - 'weekdays_short' => ['Ршр', 'Шчм', 'Кжм', 'Вгч', 'Изр', 'Кгр', 'Шмт'], - 'weekdays_min' => ['Ршр', 'Шчм', 'Кжм', 'Вгч', 'Изр', 'Кгр', 'Шмт'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - - 'year' => ':count идалык', - 'y' => ':count идалык', - 'a_year' => ':count идалык', - - 'month' => ':count Тылзе', - 'm' => ':count Тылзе', - 'a_month' => ':count Тылзе', - - 'week' => ':count арня', - 'w' => ':count арня', - 'a_week' => ':count арня', - - 'day' => ':count кече', - 'd' => ':count кече', - 'a_day' => ':count кече', - - 'hour' => ':count час', - 'h' => ':count час', - 'a_hour' => ':count час', - - 'minute' => ':count минут', - 'min' => ':count минут', - 'a_minute' => ':count минут', - - 'second' => ':count кокымшан', - 's' => ':count кокымшан', - 'a_second' => ':count кокымшан', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mi.php b/vendor/nesbot/carbon/src/Carbon/Lang/mi.php deleted file mode 100644 index b7f51ec2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mi.php +++ /dev/null @@ -1,66 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - John Corrigan - * - François B - */ -return [ - 'year' => ':count tau', - 'a_year' => '{1}he tau|:count tau', - 'month' => ':count marama', - 'a_month' => '{1}he marama|:count marama', - 'week' => ':count wiki', - 'a_week' => '{1}he wiki|:count wiki', - 'day' => ':count ra', - 'a_day' => '{1}he ra|:count ra', - 'hour' => ':count haora', - 'a_hour' => '{1}te haora|:count haora', - 'minute' => ':count meneti', - 'a_minute' => '{1}he meneti|:count meneti', - 'second' => ':count hēkona', - 'a_second' => '{1}te hēkona ruarua|:count hēkona', - 'ago' => ':time i mua', - 'from_now' => 'i roto i :time', - 'diff_yesterday' => 'inanahi', - 'diff_yesterday_regexp' => 'inanahi(?:\\s+i)?', - 'diff_today' => 'i teie', - 'diff_today_regexp' => 'i teie(?:\\s+mahana,)?(?:\\s+i)?', - 'diff_tomorrow' => 'apopo', - 'diff_tomorrow_regexp' => 'apopo(?:\\s+i)?', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY [i] HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY [i] HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[i teie mahana, i] LT', - 'nextDay' => '[apopo i] LT', - 'nextWeek' => 'dddd [i] LT', - 'lastDay' => '[inanahi i] LT', - 'lastWeek' => 'dddd [whakamutunga i] LT', - 'sameElse' => 'L', - ], - 'ordinal' => ':numberº', - 'months' => ['Kohi-tāte', 'Hui-tanguru', 'Poutū-te-rangi', 'Paenga-whāwhā', 'Haratua', 'Pipiri', 'Hōngoingoi', 'Here-turi-kōkā', 'Mahuru', 'Whiringa-ā-nuku', 'Whiringa-ā-rangi', 'Hakihea'], - 'months_short' => ['Kohi', 'Hui', 'Pou', 'Pae', 'Hara', 'Pipi', 'Hōngoi', 'Here', 'Mahu', 'Whi-nu', 'Whi-ra', 'Haki'], - 'weekdays' => ['Rātapu', 'Mane', 'Tūrei', 'Wenerei', 'Tāite', 'Paraire', 'Hātarei'], - 'weekdays_short' => ['Ta', 'Ma', 'Tū', 'We', 'Tāi', 'Pa', 'Hā'], - 'weekdays_min' => ['Ta', 'Ma', 'Tū', 'We', 'Tāi', 'Pa', 'Hā'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' me te '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mi_NZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/mi_NZ.php deleted file mode 100644 index 6b964e3a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mi_NZ.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/mi.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/miq.php b/vendor/nesbot/carbon/src/Carbon/Lang/miq.php deleted file mode 100644 index 51e5a985..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/miq.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/miq_NI.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/miq_NI.php b/vendor/nesbot/carbon/src/Carbon/Lang/miq_NI.php deleted file mode 100644 index 57faa318..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/miq_NI.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['siakwa kati', 'kuswa kati', 'kakamuk kati', 'lî wainhka kati', 'lih mairin kati', 'lî kati', 'pastara kati', 'sikla kati', 'wîs kati', 'waupasa kati', 'yahbra kati', 'trisu kati'], - 'months_short' => ['siakwa kati', 'kuswa kati', 'kakamuk kati', 'lî wainhka kati', 'lih mairin kati', 'lî kati', 'pastara kati', 'sikla kati', 'wîs kati', 'waupasa kati', 'yahbra kati', 'trisu kati'], - 'weekdays' => ['sandi', 'mundi', 'tiusdi', 'wensde', 'tausde', 'praidi', 'satadi'], - 'weekdays_short' => ['san', 'mun', 'tius', 'wens', 'taus', 'prai', 'sat'], - 'weekdays_min' => ['san', 'mun', 'tius', 'wens', 'taus', 'prai', 'sat'], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 7, - 'meridiem' => ['VM', 'NM'], - - 'month' => ':count kati', // less reliable - 'm' => ':count kati', // less reliable - 'a_month' => ':count kati', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mjw.php b/vendor/nesbot/carbon/src/Carbon/Lang/mjw.php deleted file mode 100644 index 617154cd..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mjw.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/mjw_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mjw_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/mjw_IN.php deleted file mode 100644 index 58ed0d18..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mjw_IN.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Jor Teron bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['Arkoi', 'Thangthang', 'There', 'Jangmi', 'Aru', 'Vosik', 'Jakhong', 'Paipai', 'Chiti', 'Phere', 'Phaikuni', 'Matijong'], - 'months_short' => ['Ark', 'Thang', 'The', 'Jang', 'Aru', 'Vos', 'Jak', 'Pai', 'Chi', 'Phe', 'Phai', 'Mati'], - 'weekdays' => ['Bhomkuru', 'Urmi', 'Durmi', 'Thelang', 'Theman', 'Bhomta', 'Bhomti'], - 'weekdays_short' => ['Bhom', 'Ur', 'Dur', 'Tkel', 'Tkem', 'Bhta', 'Bhti'], - 'weekdays_min' => ['Bhom', 'Ur', 'Dur', 'Tkel', 'Tkem', 'Bhta', 'Bhti'], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mk.php b/vendor/nesbot/carbon/src/Carbon/Lang/mk.php deleted file mode 100644 index d822de09..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mk.php +++ /dev/null @@ -1,116 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Sashko Todorov - * - Josh Soref - * - François B - * - Serhan Apaydın - * - Borislav Mickov - * - JD Isaacks - * - Tomi Atanasoski - */ - -use Carbon\CarbonInterface; - -return [ - 'year' => ':count година|:count години', - 'a_year' => 'година|:count години', - 'y' => ':count год.', - 'month' => ':count месец|:count месеци', - 'a_month' => 'месец|:count месеци', - 'm' => ':count месец|:count месеци', - 'week' => ':count седмица|:count седмици', - 'a_week' => 'седмица|:count седмици', - 'w' => ':count седмица|:count седмици', - 'day' => ':count ден|:count дена', - 'a_day' => 'ден|:count дена', - 'd' => ':count ден|:count дена', - 'hour' => ':count час|:count часа', - 'a_hour' => 'час|:count часа', - 'h' => ':count час|:count часа', - 'minute' => ':count минута|:count минути', - 'a_minute' => 'минута|:count минути', - 'min' => ':count мин.', - 'second' => ':count секунда|:count секунди', - 'a_second' => 'неколку секунди|:count секунди', - 's' => ':count сек.', - 'ago' => 'пред :time', - 'from_now' => 'после :time', - 'after' => 'по :time', - 'before' => 'пред :time', - 'diff_now' => 'сега', - 'diff_today' => 'Денес', - 'diff_today_regexp' => 'Денес(?:\\s+во)?', - 'diff_yesterday' => 'вчера', - 'diff_yesterday_regexp' => 'Вчера(?:\\s+во)?', - 'diff_tomorrow' => 'утре', - 'diff_tomorrow_regexp' => 'Утре(?:\\s+во)?', - 'formats' => [ - 'LT' => 'H:mm', - 'LTS' => 'H:mm:ss', - 'L' => 'D.MM.YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY H:mm', - 'LLLL' => 'dddd, D MMMM YYYY H:mm', - ], - 'calendar' => [ - 'sameDay' => '[Денес во] LT', - 'nextDay' => '[Утре во] LT', - 'nextWeek' => '[Во] dddd [во] LT', - 'lastDay' => '[Вчера во] LT', - 'lastWeek' => function (CarbonInterface $date) { - switch ($date->dayOfWeek) { - case 0: - case 3: - case 6: - return '[Изминатата] dddd [во] LT'; - default: - return '[Изминатиот] dddd [во] LT'; - } - }, - 'sameElse' => 'L', - ], - 'ordinal' => function ($number) { - $lastDigit = $number % 10; - $last2Digits = $number % 100; - if ($number === 0) { - return $number.'-ев'; - } - if ($last2Digits === 0) { - return $number.'-ен'; - } - if ($last2Digits > 10 && $last2Digits < 20) { - return $number.'-ти'; - } - if ($lastDigit === 1) { - return $number.'-ви'; - } - if ($lastDigit === 2) { - return $number.'-ри'; - } - if ($lastDigit === 7 || $lastDigit === 8) { - return $number.'-ми'; - } - - return $number.'-ти'; - }, - 'months' => ['јануари', 'февруари', 'март', 'април', 'мај', 'јуни', 'јули', 'август', 'септември', 'октомври', 'ноември', 'декември'], - 'months_short' => ['јан', 'фев', 'мар', 'апр', 'мај', 'јун', 'јул', 'авг', 'сеп', 'окт', 'ное', 'дек'], - 'weekdays' => ['недела', 'понеделник', 'вторник', 'среда', 'четврток', 'петок', 'сабота'], - 'weekdays_short' => ['нед', 'пон', 'вто', 'сре', 'чет', 'пет', 'саб'], - 'weekdays_min' => ['нe', 'пo', 'вт', 'ср', 'че', 'пе', 'сa'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' и '], - 'meridiem' => ['АМ', 'ПМ'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mk_MK.php b/vendor/nesbot/carbon/src/Carbon/Lang/mk_MK.php deleted file mode 100644 index 95e2ff9c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mk_MK.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/mk.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ml.php b/vendor/nesbot/carbon/src/Carbon/Lang/ml.php deleted file mode 100644 index 1abd6c44..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ml.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - JD Isaacks - */ -return [ - 'year' => ':count വർഷം', - 'a_year' => 'ഒരു വർഷം|:count വർഷം', - 'month' => ':count മാസം', - 'a_month' => 'ഒരു മാസം|:count മാസം', - 'week' => ':count ആഴ്ച', - 'a_week' => 'ഒരാഴ്ച|:count ആഴ്ച', - 'day' => ':count ദിവസം', - 'a_day' => 'ഒരു ദിവസം|:count ദിവസം', - 'hour' => ':count മണിക്കൂർ', - 'a_hour' => 'ഒരു മണിക്കൂർ|:count മണിക്കൂർ', - 'minute' => ':count മിനിറ്റ്', - 'a_minute' => 'ഒരു മിനിറ്റ്|:count മിനിറ്റ്', - 'second' => ':count സെക്കൻഡ്', - 'a_second' => 'അൽപ നിമിഷങ്ങൾ|:count സെക്കൻഡ്', - 'ago' => ':time മുൻപ്', - 'from_now' => ':time കഴിഞ്ഞ്', - 'diff_now' => 'ഇപ്പോൾ', - 'diff_today' => 'ഇന്ന്', - 'diff_yesterday' => 'ഇന്നലെ', - 'diff_tomorrow' => 'നാളെ', - 'formats' => [ - 'LT' => 'A h:mm -നു', - 'LTS' => 'A h:mm:ss -നു', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY, A h:mm -നു', - 'LLLL' => 'dddd, D MMMM YYYY, A h:mm -നു', - ], - 'calendar' => [ - 'sameDay' => '[ഇന്ന്] LT', - 'nextDay' => '[നാളെ] LT', - 'nextWeek' => 'dddd, LT', - 'lastDay' => '[ഇന്നലെ] LT', - 'lastWeek' => '[കഴിഞ്ഞ] dddd, LT', - 'sameElse' => 'L', - ], - 'meridiem' => function ($hour) { - if ($hour < 4) { - return 'രാത്രി'; - } - if ($hour < 12) { - return 'രാവിലെ'; - } - if ($hour < 17) { - return 'ഉച്ച കഴിഞ്ഞ്'; - } - if ($hour < 20) { - return 'വൈകുന്നേരം'; - } - - return 'രാത്രി'; - }, - 'months' => ['ജനുവരി', 'ഫെബ്രുവരി', 'മാർച്ച്', 'ഏപ്രിൽ', 'മേയ്', 'ജൂൺ', 'ജൂലൈ', 'ഓഗസ്റ്റ്', 'സെപ്റ്റംബർ', 'ഒക്ടോബർ', 'നവംബർ', 'ഡിസംബർ'], - 'months_short' => ['ജനു.', 'ഫെബ്രു.', 'മാർ.', 'ഏപ്രി.', 'മേയ്', 'ജൂൺ', 'ജൂലൈ.', 'ഓഗ.', 'സെപ്റ്റ.', 'ഒക്ടോ.', 'നവം.', 'ഡിസം.'], - 'weekdays' => ['ഞായറാഴ്ച', 'തിങ്കളാഴ്ച', 'ചൊവ്വാഴ്ച', 'ബുധനാഴ്ച', 'വ്യാഴാഴ്ച', 'വെള്ളിയാഴ്ച', 'ശനിയാഴ്ച'], - 'weekdays_short' => ['ഞായർ', 'തിങ്കൾ', 'ചൊവ്വ', 'ബുധൻ', 'വ്യാഴം', 'വെള്ളി', 'ശനി'], - 'weekdays_min' => ['ഞാ', 'തി', 'ചൊ', 'ബു', 'വ്യാ', 'വെ', 'ശ'], - 'list' => ', ', - 'weekend' => [0, 0], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ml_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ml_IN.php deleted file mode 100644 index 000e7958..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ml_IN.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ml.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mn.php b/vendor/nesbot/carbon/src/Carbon/Lang/mn.php deleted file mode 100644 index 38c6434d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mn.php +++ /dev/null @@ -1,116 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Philippe Vaucher - * - Tsutomu Kuroda - * - tjku - * - Max Melentiev - * - Zolzaya Erdenebaatar - * - Tom Hughes - * - Akira Matsuda - * - Christopher Dell - * - Michael Kessler - * - Enrique Vidal - * - Simone Carletti - * - Aaron Patterson - * - Nicolás Hock Isaza - * - Ochirkhuyag - * - Batmandakh - * - lucifer-crybaby - */ -return [ - 'year' => ':count жил', - 'y' => ':count жил', - 'month' => ':count сар', - 'm' => ':count сар', - 'week' => ':count долоо хоног', - 'w' => ':count долоо хоног', - 'day' => ':count өдөр', - 'd' => ':count өдөр', - 'hour' => ':count цаг', - 'h' => ':countц', - 'minute' => ':count минут', - 'min' => ':countм', - 'second' => ':count секунд', - 's' => ':countс', - - 'ago_mode' => 'last', - 'ago' => ':time өмнө', - 'year_ago' => ':count жилийн', - 'y_ago' => ':count жилийн', - 'month_ago' => ':count сарын', - 'm_ago' => ':count сарын', - 'day_ago' => ':count хоногийн', - 'd_ago' => ':count хоногийн', - 'week_ago' => ':count долоо хоногийн', - 'w_ago' => ':count долоо хоногийн', - 'hour_ago' => ':count цагийн', - 'minute_ago' => ':count минутын', - 'second_ago' => ':count секундын', - - 'from_now_mode' => 'last', - 'from_now' => 'одоогоос :time', - 'year_from_now' => ':count жилийн дараа', - 'y_from_now' => ':count жилийн дараа', - 'month_from_now' => ':count сарын дараа', - 'm_from_now' => ':count сарын дараа', - 'day_from_now' => ':count хоногийн дараа', - 'd_from_now' => ':count хоногийн дараа', - 'hour_from_now' => ':count цагийн дараа', - 'minute_from_now' => ':count минутын дараа', - 'second_from_now' => ':count секундын дараа', - - 'after_mode' => 'last', - 'after' => ':time дараа', - 'year_after' => ':count жилийн', - 'y_after' => ':count жилийн', - 'month_after' => ':count сарын', - 'm_after' => ':count сарын', - 'day_after' => ':count хоногийн', - 'd_after' => ':count хоногийн', - 'hour_after' => ':count цагийн', - 'minute_after' => ':count минутын', - 'second_after' => ':count секундын', - - 'before_mode' => 'last', - 'before' => ':time өмнө', - 'year_before' => ':count жилийн', - 'y_before' => ':count жилийн', - 'month_before' => ':count сарын', - 'm_before' => ':count сарын', - 'day_before' => ':count хоногийн', - 'd_before' => ':count хоногийн', - 'hour_before' => ':count цагийн', - 'minute_before' => ':count минутын', - 'second_before' => ':count секундын', - - 'list' => ', ', - 'diff_now' => 'одоо', - 'diff_yesterday' => 'өчигдөр', - 'diff_tomorrow' => 'маргааш', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY-MM-DD', - 'LL' => 'YYYY MMMM DD', - 'LLL' => 'YY-MM-DD, HH:mm', - 'LLLL' => 'YYYY MMMM DD, HH:mm', - ], - 'weekdays' => ['Ням', 'Даваа', 'Мягмар', 'Лхагва', 'Пүрэв', 'Баасан', 'Бямба'], - 'weekdays_short' => ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'], - 'weekdays_min' => ['Ня', 'Да', 'Мя', 'Лх', 'Пү', 'Ба', 'Бя'], - 'months' => ['1 сар', '2 сар', '3 сар', '4 сар', '5 сар', '6 сар', '7 сар', '8 сар', '9 сар', '10 сар', '11 сар', '12 сар'], - 'months_short' => ['1 сар', '2 сар', '3 сар', '4 сар', '5 сар', '6 сар', '7 сар', '8 сар', '9 сар', '10 сар', '11 сар', '12 сар'], - 'meridiem' => ['өглөө', 'орой'], - 'first_day_of_week' => 1, -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mn_MN.php b/vendor/nesbot/carbon/src/Carbon/Lang/mn_MN.php deleted file mode 100644 index e5ce426c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mn_MN.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/mn.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mni.php b/vendor/nesbot/carbon/src/Carbon/Lang/mni.php deleted file mode 100644 index cafa2f87..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mni.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/mni_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mni_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/mni_IN.php deleted file mode 100644 index 45d430ef..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mni_IN.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Red Hat Pune libc-alpha@sourceware.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['জানুৱারি', 'ফেব্রুৱারি', 'মার্চ', 'এপ্রিল', 'মে', 'জুন', 'জুলাই', 'আগষ্ট', 'সেপ্তেম্বর', 'ওক্তোবর', 'নবেম্বর', 'ডিসেম্বর'], - 'months_short' => ['জান', 'ফেব', 'মার', 'এপ্রি', 'মে', 'জুন', 'জুল', 'আগ', 'সেপ', 'ওক্ত', 'নবে', 'ডিস'], - 'weekdays' => ['নোংমাইজিং', 'নিংথৌকাবা', 'লৈবাকপোকপা', 'য়ুমশকৈশা', 'শগোলশেন', 'ইরাই', 'থাংজ'], - 'weekdays_short' => ['নোং', 'নিং', 'লৈবাক', 'য়ুম', 'শগোল', 'ইরা', 'থাং'], - 'weekdays_min' => ['নোং', 'নিং', 'লৈবাক', 'য়ুম', 'শগোল', 'ইরা', 'থাং'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['এ.ম.', 'প.ম.'], - - 'year' => ':count ইসিং', // less reliable - 'y' => ':count ইসিং', // less reliable - 'a_year' => ':count ইসিং', // less reliable - - 'second' => ':count ꯅꯤꯡꯊꯧꯀꯥꯕ', // less reliable - 's' => ':count ꯅꯤꯡꯊꯧꯀꯥꯕ', // less reliable - 'a_second' => ':count ꯅꯤꯡꯊꯧꯀꯥꯕ', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mo.php b/vendor/nesbot/carbon/src/Carbon/Lang/mo.php deleted file mode 100644 index 102afcde..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mo.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ro.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mr.php b/vendor/nesbot/carbon/src/Carbon/Lang/mr.php deleted file mode 100644 index 4aaeafd0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mr.php +++ /dev/null @@ -1,86 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Vikram-enyota - */ -return [ - 'year' => ':count वर्ष', - 'y' => ':count वर्ष', - 'month' => ':count महिना|:count महिने', - 'm' => ':count महिना|:count महिने', - 'week' => ':count आठवडा|:count आठवडे', - 'w' => ':count आठवडा|:count आठवडे', - 'day' => ':count दिवस', - 'd' => ':count दिवस', - 'hour' => ':count तास', - 'h' => ':count तास', - 'minute' => ':count मिनिटे', - 'min' => ':count मिनिटे', - 'second' => ':count सेकंद', - 's' => ':count सेकंद', - - 'ago' => ':timeपूर्वी', - 'from_now' => ':timeमध्ये', - 'before' => ':timeपूर्वी', - 'after' => ':timeनंतर', - - 'diff_now' => 'आत्ता', - 'diff_today' => 'आज', - 'diff_yesterday' => 'काल', - 'diff_tomorrow' => 'उद्या', - - 'formats' => [ - 'LT' => 'A h:mm वाजता', - 'LTS' => 'A h:mm:ss वाजता', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY, A h:mm वाजता', - 'LLLL' => 'dddd, D MMMM YYYY, A h:mm वाजता', - ], - - 'calendar' => [ - 'sameDay' => '[आज] LT', - 'nextDay' => '[उद्या] LT', - 'nextWeek' => 'dddd, LT', - 'lastDay' => '[काल] LT', - 'lastWeek' => '[मागील] dddd, LT', - 'sameElse' => 'L', - ], - - 'meridiem' => function ($hour) { - if ($hour < 4) { - return 'रात्री'; - } - if ($hour < 10) { - return 'सकाळी'; - } - if ($hour < 17) { - return 'दुपारी'; - } - if ($hour < 20) { - return 'सायंकाळी'; - } - - return 'रात्री'; - }, - - 'months' => ['जानेवारी', 'फेब्रुवारी', 'मार्च', 'एप्रिल', 'मे', 'जून', 'जुलै', 'ऑगस्ट', 'सप्टेंबर', 'ऑक्टोबर', 'नोव्हेंबर', 'डिसेंबर'], - 'months_short' => ['जाने.', 'फेब्रु.', 'मार्च.', 'एप्रि.', 'मे.', 'जून.', 'जुलै.', 'ऑग.', 'सप्टें.', 'ऑक्टो.', 'नोव्हें.', 'डिसें.'], - 'weekdays' => ['रविवार', 'सोमवार', 'मंगळवार', 'बुधवार', 'गुरूवार', 'शुक्रवार', 'शनिवार'], - 'weekdays_short' => ['रवि', 'सोम', 'मंगळ', 'बुध', 'गुरू', 'शुक्र', 'शनि'], - 'weekdays_min' => ['र', 'सो', 'मं', 'बु', 'गु', 'शु', 'श'], - 'list' => [', ', ' आणि '], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, - 'weekend' => [0, 0], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mr_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/mr_IN.php deleted file mode 100644 index 7bca919f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mr_IN.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/mr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ms.php b/vendor/nesbot/carbon/src/Carbon/Lang/ms.php deleted file mode 100644 index c9e80854..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ms.php +++ /dev/null @@ -1,104 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - Azri Jamil - * - JD Isaacks - * - Josh Soref - * - Azri Jamil - * - Hariadi Hinta - * - Ashraf Kamarudin - */ -return [ - 'year' => ':count tahun', - 'a_year' => '{1}setahun|]1,Inf[:count tahun', - 'y' => ':count tahun', - 'month' => ':count bulan', - 'a_month' => '{1}sebulan|]1,Inf[:count bulan', - 'm' => ':count bulan', - 'week' => ':count minggu', - 'a_week' => '{1}seminggu|]1,Inf[:count minggu', - 'w' => ':count minggu', - 'day' => ':count hari', - 'a_day' => '{1}sehari|]1,Inf[:count hari', - 'd' => ':count hari', - 'hour' => ':count jam', - 'a_hour' => '{1}sejam|]1,Inf[:count jam', - 'h' => ':count jam', - 'minute' => ':count minit', - 'a_minute' => '{1}seminit|]1,Inf[:count minit', - 'min' => ':count minit', - 'second' => ':count saat', - 'a_second' => '{1}beberapa saat|]1,Inf[:count saat', - 'millisecond' => ':count milisaat', - 'a_millisecond' => '{1}semilisaat|]1,Inf[:count milliseconds', - 'microsecond' => ':count mikrodetik', - 'a_microsecond' => '{1}semikrodetik|]1,Inf[:count mikrodetik', - 's' => ':count saat', - 'ago' => ':time yang lepas', - 'from_now' => ':time dari sekarang', - 'after' => ':time kemudian', - 'before' => ':time sebelum', - 'diff_now' => 'sekarang', - 'diff_today' => 'Hari', - 'diff_today_regexp' => 'Hari(?:\\s+ini)?(?:\\s+pukul)?', - 'diff_yesterday' => 'semalam', - 'diff_yesterday_regexp' => 'Semalam(?:\\s+pukul)?', - 'diff_tomorrow' => 'esok', - 'diff_tomorrow_regexp' => 'Esok(?:\\s+pukul)?', - 'diff_before_yesterday' => 'kelmarin', - 'diff_after_tomorrow' => 'lusa', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Hari ini pukul] LT', - 'nextDay' => '[Esok pukul] LT', - 'nextWeek' => 'dddd [pukul] LT', - 'lastDay' => '[Kelmarin pukul] LT', - 'lastWeek' => 'dddd [lepas pukul] LT', - 'sameElse' => 'L', - ], - 'meridiem' => function ($hour) { - if ($hour < 1) { - return 'tengah malam'; - } - - if ($hour < 12) { - return 'pagi'; - } - - if ($hour < 13) { - return 'tengah hari'; - } - - if ($hour < 19) { - return 'petang'; - } - - return 'malam'; - }, - 'months' => ['Januari', 'Februari', 'Mac', 'April', 'Mei', 'Jun', 'Julai', 'Ogos', 'September', 'Oktober', 'November', 'Disember'], - 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ogs', 'Sep', 'Okt', 'Nov', 'Dis'], - 'weekdays' => ['Ahad', 'Isnin', 'Selasa', 'Rabu', 'Khamis', 'Jumaat', 'Sabtu'], - 'weekdays_short' => ['Ahd', 'Isn', 'Sel', 'Rab', 'Kha', 'Jum', 'Sab'], - 'weekdays_min' => ['Ah', 'Is', 'Sl', 'Rb', 'Km', 'Jm', 'Sb'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' dan '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ms_BN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ms_BN.php deleted file mode 100644 index ef837a2d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ms_BN.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ms.php', [ - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'D/MM/yy', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY, h:mm a', - 'LLLL' => 'dd MMMM YYYY, h:mm a', - ], - 'meridiem' => ['a', 'p'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ms_MY.php b/vendor/nesbot/carbon/src/Carbon/Lang/ms_MY.php deleted file mode 100644 index 970d6048..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ms_MY.php +++ /dev/null @@ -1,18 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - Azri Jamil - * - JD Isaacks - */ -return require __DIR__.'/ms.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ms_SG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ms_SG.php deleted file mode 100644 index 77cb83d2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ms_SG.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ms.php', [ - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'D/MM/yy', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY, h:mm a', - 'LLLL' => 'dddd, D MMMM YYYY, h:mm a', - ], - 'meridiem' => ['a', 'p'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mt.php b/vendor/nesbot/carbon/src/Carbon/Lang/mt.php deleted file mode 100644 index e8aadcc9..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mt.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Alessandro Maruccia - */ -return [ - 'year' => 'sena|:count sni|:count sni|:count sni', - 'y' => 'sa sena|:count snin|:count snin|:count snin', - 'month' => 'xahar|:count xhur|:count xhur|:count xhur', - 'm' => ':count xahar|:count xhur|:count xhur|:count xhur', - 'week' => 'gimgħa|:count ġimgħat|:count ġimgħat|:count ġimgħat', - 'w' => 'ġimgħa|:count ġimgħat|:count ġimgħat|:count ġimgħat', - 'day' => 'ġurnata|:count ġranet|:count ġranet|:count ġranet', - 'd' => 'ġurnata|:count ġranet|:count ġranet|:count ġranet', - 'hour' => 'siegħa|:count siegħat|:count siegħat|:count siegħat', - 'h' => 'siegħa|:count sigħat|:count sigħat|:count sigħat', - 'minute' => 'minuta|:count minuti|:count minuti|:count minuti', - 'min' => 'min.|:count min.|:count min.|:count min.', - 'second' => 'ftit sekondi|:count sekondi|:count sekondi|:count sekondi', - 's' => 'sek.|:count sek.|:count sek.|:count sek.', - 'ago' => ':time ilu', - 'from_now' => 'f’ :time', - 'diff_now' => 'issa', - 'diff_today' => 'Illum', - 'diff_today_regexp' => 'Illum(?:\\s+fil-)?', - 'diff_yesterday' => 'lbieraħ', - 'diff_yesterday_regexp' => 'Il-bieraħ(?:\\s+fil-)?', - 'diff_tomorrow' => 'għada', - 'diff_tomorrow_regexp' => 'Għada(?:\\s+fil-)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Illum fil-]LT', - 'nextDay' => '[Għada fil-]LT', - 'nextWeek' => 'dddd [fil-]LT', - 'lastDay' => '[Il-bieraħ fil-]LT', - 'lastWeek' => 'dddd [li għadda] [fil-]LT', - 'sameElse' => 'L', - ], - 'ordinal' => ':numberº', - 'months' => ['Jannar', 'Frar', 'Marzu', 'April', 'Mejju', 'Ġunju', 'Lulju', 'Awwissu', 'Settembru', 'Ottubru', 'Novembru', 'Diċembru'], - 'months_short' => ['Jan', 'Fra', 'Mar', 'Apr', 'Mej', 'Ġun', 'Lul', 'Aww', 'Set', 'Ott', 'Nov', 'Diċ'], - 'weekdays' => ['Il-Ħadd', 'It-Tnejn', 'It-Tlieta', 'L-Erbgħa', 'Il-Ħamis', 'Il-Ġimgħa', 'Is-Sibt'], - 'weekdays_short' => ['Ħad', 'Tne', 'Tli', 'Erb', 'Ħam', 'Ġim', 'Sib'], - 'weekdays_min' => ['Ħa', 'Tn', 'Tl', 'Er', 'Ħa', 'Ġi', 'Si'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' u '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mt_MT.php b/vendor/nesbot/carbon/src/Carbon/Lang/mt_MT.php deleted file mode 100644 index 9534f687..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mt_MT.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/mt.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mua.php b/vendor/nesbot/carbon/src/Carbon/Lang/mua.php deleted file mode 100644 index a3a3c6fd..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mua.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['comme', 'lilli'], - 'weekdays' => ['Com’yakke', 'Comlaaɗii', 'Comzyiiɗii', 'Comkolle', 'Comkaldǝɓlii', 'Comgaisuu', 'Comzyeɓsuu'], - 'weekdays_short' => ['Cya', 'Cla', 'Czi', 'Cko', 'Cka', 'Cga', 'Cze'], - 'weekdays_min' => ['Cya', 'Cla', 'Czi', 'Cko', 'Cka', 'Cga', 'Cze'], - 'months' => ['Fĩi Loo', 'Cokcwaklaŋne', 'Cokcwaklii', 'Fĩi Marfoo', 'Madǝǝuutǝbijaŋ', 'Mamǝŋgwãafahbii', 'Mamǝŋgwãalii', 'Madǝmbii', 'Fĩi Dǝɓlii', 'Fĩi Mundaŋ', 'Fĩi Gwahlle', 'Fĩi Yuru'], - 'months_short' => ['FLO', 'CLA', 'CKI', 'FMF', 'MAD', 'MBI', 'MLI', 'MAM', 'FDE', 'FMU', 'FGW', 'FYU'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/my.php b/vendor/nesbot/carbon/src/Carbon/Lang/my.php deleted file mode 100644 index bbdfba40..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/my.php +++ /dev/null @@ -1,70 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - JD Isaacks - * - Nay Lin Aung - */ -return [ - 'year' => '{1}တစ်နှစ်|]1,Inf[:count နှစ်', - 'y' => ':count နှစ်', - 'month' => '{1}တစ်လ|]1,Inf[:count လ', - 'm' => ':count လ', - 'week' => ':count ပတ်', - 'w' => ':count ပတ်', - 'day' => '{1}တစ်ရက်|]1,Inf[:count ရက်', - 'd' => ':count ရက်', - 'hour' => '{1}တစ်နာရီ|]1,Inf[:count နာရီ', - 'h' => ':count နာရီ', - 'minute' => '{1}တစ်မိနစ်|]1,Inf[:count မိနစ်', - 'min' => ':count မိနစ်', - 'second' => '{1}စက္ကန်.အနည်းငယ်|]1,Inf[:count စက္ကန့်', - 's' => ':count စက္ကန့်', - 'ago' => 'လွန်ခဲ့သော :time က', - 'from_now' => 'လာမည့် :time မှာ', - 'after' => ':time ကြာပြီးနောက်', - 'before' => ':time မတိုင်ခင်', - 'diff_now' => 'အခုလေးတင်', - 'diff_today' => 'ယနေ.', - 'diff_yesterday' => 'မနေ့က', - 'diff_yesterday_regexp' => 'မနေ.က', - 'diff_tomorrow' => 'မနက်ဖြန်', - 'diff_before_yesterday' => 'တမြန်နေ့က', - 'diff_after_tomorrow' => 'တဘက်ခါ', - 'period_recurrences' => ':count ကြိမ်', - 'formats' => [ - 'LT' => 'Oh:Om A', - 'LTS' => 'Oh:Om:Os A', - 'L' => 'OD/OM/OY', - 'LL' => 'OD MMMM OY', - 'LLL' => 'OD MMMM OY Oh:Om A', - 'LLLL' => 'dddd OD MMMM OY Oh:Om A', - ], - 'calendar' => [ - 'sameDay' => '[ယနေ.] LT [မှာ]', - 'nextDay' => '[မနက်ဖြန်] LT [မှာ]', - 'nextWeek' => 'dddd LT [မှာ]', - 'lastDay' => '[မနေ.က] LT [မှာ]', - 'lastWeek' => '[ပြီးခဲ့သော] dddd LT [မှာ]', - 'sameElse' => 'L', - ], - 'months' => ['ဇန်နဝါရီ', 'ဖေဖော်ဝါရီ', 'မတ်', 'ဧပြီ', 'မေ', 'ဇွန်', 'ဇူလိုင်', 'သြဂုတ်', 'စက်တင်ဘာ', 'အောက်တိုဘာ', 'နိုဝင်ဘာ', 'ဒီဇင်ဘာ'], - 'months_short' => ['ဇန်', 'ဖေ', 'မတ်', 'ပြီ', 'မေ', 'ဇွန်', 'လိုင်', 'သြ', 'စက်', 'အောက်', 'နို', 'ဒီ'], - 'weekdays' => ['တနင်္ဂနွေ', 'တနင်္လာ', 'အင်္ဂါ', 'ဗုဒ္ဓဟူး', 'ကြာသပတေး', 'သောကြာ', 'စနေ'], - 'weekdays_short' => ['နွေ', 'လာ', 'ဂါ', 'ဟူး', 'ကြာ', 'သော', 'နေ'], - 'weekdays_min' => ['နွေ', 'လာ', 'ဂါ', 'ဟူး', 'ကြာ', 'သော', 'နေ'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'alt_numbers' => ['၀၀', '၀၁', '၀၂', '၀၃', '၀၄', '၀၅', '၀၆', '၀၇', '၀၈', '၀၉', '၁၀', '၁၁', '၁၂', '၁၃', '၁၄', '၁၅', '၁၆', '၁၇', '၁၈', '၁၉', '၂၀', '၂၁', '၂၂', '၂၃', '၂၄', '၂၅', '၂၆', '၂၇', '၂၈', '၂၉', '၃၀', '၃၁', '၃၂', '၃၃', '၃၄', '၃၅', '၃၆', '၃၇', '၃၈', '၃၉', '၄၀', '၄၁', '၄၂', '၄၃', '၄၄', '၄၅', '၄၆', '၄၇', '၄၈', '၄၉', '၅၀', '၅၁', '၅၂', '၅၃', '၅၄', '၅၅', '၅၆', '၅၇', '၅၈', '၅၉', '၆၀', '၆၁', '၆၂', '၆၃', '၆၄', '၆၅', '၆၆', '၆၇', '၆၈', '၆၉', '၇၀', '၇၁', '၇၂', '၇၃', '၇၄', '၇၅', '၇၆', '၇၇', '၇၈', '၇၉', '၈၀', '၈၁', '၈၂', '၈၃', '၈၄', '၈၅', '၈၆', '၈၇', '၈၈', '၈၉', '၉၀', '၉၁', '၉၂', '၉၃', '၉၄', '၉၅', '၉၆', '၉၇', '၉၈', '၉၉'], - 'meridiem' => ['နံနက်', 'ညနေ'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/my_MM.php b/vendor/nesbot/carbon/src/Carbon/Lang/my_MM.php deleted file mode 100644 index a0108dd4..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/my_MM.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/my.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/mzn.php b/vendor/nesbot/carbon/src/Carbon/Lang/mzn.php deleted file mode 100644 index 70f5f23c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/mzn.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/fa.php', [ - 'months' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'], - 'months_short' => ['ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن', 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر'], - 'first_day_of_week' => 6, - 'weekend' => [5, 5], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY-MM-dd', - 'LL' => 'YYYY MMM D', - 'LLL' => 'YYYY MMMM D HH:mm', - 'LLLL' => 'YYYY MMMM D, dddd HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nan.php b/vendor/nesbot/carbon/src/Carbon/Lang/nan.php deleted file mode 100644 index 0affece8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nan.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/nan_TW.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW.php b/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW.php deleted file mode 100644 index 5c50aa48..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'YYYY年MM月DD日', - ], - 'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], - 'months_short' => [' 1月', ' 2月', ' 3月', ' 4月', ' 5月', ' 6月', ' 7月', ' 8月', ' 9月', '10月', '11月', '12月'], - 'weekdays' => ['禮拜日', '禮拜一', '禮拜二', '禮拜三', '禮拜四', '禮拜五', '禮拜六'], - 'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'], - 'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['頂晡', '下晡'], - - 'year' => ':count 年', - 'y' => ':count 年', - 'a_year' => ':count 年', - - 'month' => ':count goe̍h', - 'm' => ':count goe̍h', - 'a_month' => ':count goe̍h', - - 'week' => ':count lé-pài', - 'w' => ':count lé-pài', - 'a_week' => ':count lé-pài', - - 'day' => ':count 日', - 'd' => ':count 日', - 'a_day' => ':count 日', - - 'hour' => ':count tiám-cheng', - 'h' => ':count tiám-cheng', - 'a_hour' => ':count tiám-cheng', - - 'minute' => ':count Hun-cheng', - 'min' => ':count Hun-cheng', - 'a_minute' => ':count Hun-cheng', - - 'second' => ':count Bió', - 's' => ':count Bió', - 'a_second' => ':count Bió', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW@latin.php b/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW@latin.php deleted file mode 100644 index 99ca2a42..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nan_TW@latin.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Arne Goetje arne@canonical.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'YYYY-MM-DD', - ], - 'months' => ['1goe̍h', '2goe̍h', '3goe̍h', '4goe̍h', '5goe̍h', '6goe̍h', '7goe̍h', '8goe̍h', '9goe̍h', '10goe̍h', '11goe̍h', '12goe̍h'], - 'months_short' => ['1g', '2g', '3g', '4g', '5g', '6g', '7g', '8g', '9g', '10g', '11g', '12g'], - 'weekdays' => ['lé-pài-ji̍t', 'pài-it', 'pài-jī', 'pài-saⁿ', 'pài-sì', 'pài-gō͘', 'pài-la̍k'], - 'weekdays_short' => ['lp', 'p1', 'p2', 'p3', 'p4', 'p5', 'p6'], - 'weekdays_min' => ['lp', 'p1', 'p2', 'p3', 'p4', 'p5', 'p6'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['téng-po͘', 'ē-po͘'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/naq.php b/vendor/nesbot/carbon/src/Carbon/Lang/naq.php deleted file mode 100644 index fbd9be91..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/naq.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['ǁgoagas', 'ǃuias'], - 'weekdays' => ['Sontaxtsees', 'Mantaxtsees', 'Denstaxtsees', 'Wunstaxtsees', 'Dondertaxtsees', 'Fraitaxtsees', 'Satertaxtsees'], - 'weekdays_short' => ['Son', 'Ma', 'De', 'Wu', 'Do', 'Fr', 'Sat'], - 'weekdays_min' => ['Son', 'Ma', 'De', 'Wu', 'Do', 'Fr', 'Sat'], - 'months' => ['ǃKhanni', 'ǃKhanǀgôab', 'ǀKhuuǁkhâb', 'ǃHôaǂkhaib', 'ǃKhaitsâb', 'Gamaǀaeb', 'ǂKhoesaob', 'Aoǁkhuumûǁkhâb', 'Taraǀkhuumûǁkhâb', 'ǂNûǁnâiseb', 'ǀHooǂgaeb', 'Hôasoreǁkhâb'], - 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY h:mm a', - 'LLLL' => 'dddd, D MMMM YYYY h:mm a', - ], - - 'year' => ':count kurigu', - 'y' => ':count kurigu', - 'a_year' => ':count kurigu', - - 'month' => ':count ǁaub', // less reliable - 'm' => ':count ǁaub', // less reliable - 'a_month' => ':count ǁaub', // less reliable - - 'week' => ':count hû', // less reliable - 'w' => ':count hû', // less reliable - 'a_week' => ':count hû', // less reliable - - 'day' => ':count ǀhobas', // less reliable - 'd' => ':count ǀhobas', // less reliable - 'a_day' => ':count ǀhobas', // less reliable - - 'hour' => ':count ǂgaes', // less reliable - 'h' => ':count ǂgaes', // less reliable - 'a_hour' => ':count ǂgaes', // less reliable - - 'minute' => ':count minutga', // less reliable - 'min' => ':count minutga', // less reliable - 'a_minute' => ':count minutga', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nb.php b/vendor/nesbot/carbon/src/Carbon/Lang/nb.php deleted file mode 100644 index 371ee840..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nb.php +++ /dev/null @@ -1,84 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - Alexander Tømmerås - * - Sigurd Gartmann - * - JD Isaacks - */ -return [ - 'year' => ':count år|:count år', - 'a_year' => 'ett år|:count år', - 'y' => ':count år|:count år', - 'month' => ':count måned|:count måneder', - 'a_month' => 'en måned|:count måneder', - 'm' => ':count md.', - 'week' => ':count uke|:count uker', - 'a_week' => 'en uke|:count uker', - 'w' => ':count u.', - 'day' => ':count dag|:count dager', - 'a_day' => 'en dag|:count dager', - 'd' => ':count d.', - 'hour' => ':count time|:count timer', - 'a_hour' => 'en time|:count timer', - 'h' => ':count t', - 'minute' => ':count minutt|:count minutter', - 'a_minute' => 'ett minutt|:count minutter', - 'min' => ':count min', - 'second' => ':count sekund|:count sekunder', - 'a_second' => 'noen sekunder|:count sekunder', - 's' => ':count sek', - 'ago' => ':time siden', - 'from_now' => 'om :time', - 'after' => ':time etter', - 'before' => ':time før', - 'diff_now' => 'akkurat nå', - 'diff_today' => 'i dag', - 'diff_today_regexp' => 'i dag(?:\\s+kl.)?', - 'diff_yesterday' => 'i går', - 'diff_yesterday_regexp' => 'i går(?:\\s+kl.)?', - 'diff_tomorrow' => 'i morgen', - 'diff_tomorrow_regexp' => 'i morgen(?:\\s+kl.)?', - 'diff_before_yesterday' => 'i forgårs', - 'diff_after_tomorrow' => 'i overmorgen', - 'period_recurrences' => 'en gang|:count ganger', - 'period_interval' => 'hver :interval', - 'period_start_date' => 'fra :date', - 'period_end_date' => 'til :date', - 'months' => ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'], - 'months_short' => ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'], - 'weekdays' => ['søndag', 'mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag'], - 'weekdays_short' => ['søn', 'man', 'tir', 'ons', 'tor', 'fre', 'lør'], - 'weekdays_min' => ['sø', 'ma', 'ti', 'on', 'to', 'fr', 'lø'], - 'ordinal' => ':number.', - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD.MM.YYYY', - 'LL' => 'D. MMMM YYYY', - 'LLL' => 'D. MMMM YYYY [kl.] HH:mm', - 'LLLL' => 'dddd D. MMMM YYYY [kl.] HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[i dag kl.] LT', - 'nextDay' => '[i morgen kl.] LT', - 'nextWeek' => 'dddd [kl.] LT', - 'lastDay' => '[i går kl.] LT', - 'lastWeek' => '[forrige] dddd [kl.] LT', - 'sameElse' => 'L', - ], - 'list' => [', ', ' og '], - 'meridiem' => ['a.m.', 'p.m.'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nb_NO.php b/vendor/nesbot/carbon/src/Carbon/Lang/nb_NO.php deleted file mode 100644 index 31678c53..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nb_NO.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/nb.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nb_SJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/nb_SJ.php deleted file mode 100644 index ce0210bc..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nb_SJ.php +++ /dev/null @@ -1,18 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/nb.php', [ - 'formats' => [ - 'LL' => 'D. MMM YYYY', - 'LLL' => 'D. MMMM YYYY, HH:mm', - 'LLLL' => 'dddd D. MMMM YYYY, HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nd.php b/vendor/nesbot/carbon/src/Carbon/Lang/nd.php deleted file mode 100644 index f75d9a71..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nd.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'weekdays' => ['Sonto', 'Mvulo', 'Sibili', 'Sithathu', 'Sine', 'Sihlanu', 'Mgqibelo'], - 'weekdays_short' => ['Son', 'Mvu', 'Sib', 'Sit', 'Sin', 'Sih', 'Mgq'], - 'weekdays_min' => ['Son', 'Mvu', 'Sib', 'Sit', 'Sin', 'Sih', 'Mgq'], - 'months' => ['Zibandlela', 'Nhlolanja', 'Mbimbitho', 'Mabasa', 'Nkwenkwezi', 'Nhlangula', 'Ntulikazi', 'Ncwabakazi', 'Mpandula', 'Mfumfu', 'Lwezi', 'Mpalakazi'], - 'months_short' => ['Zib', 'Nhlo', 'Mbi', 'Mab', 'Nkw', 'Nhla', 'Ntu', 'Ncw', 'Mpan', 'Mfu', 'Lwe', 'Mpal'], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], - - 'year' => 'okweminyaka engu-:count', // less reliable - 'y' => 'okweminyaka engu-:count', // less reliable - 'a_year' => 'okweminyaka engu-:count', // less reliable - - 'month' => 'inyanga ezingu-:count', - 'm' => 'inyanga ezingu-:count', - 'a_month' => 'inyanga ezingu-:count', - - 'week' => 'amaviki angu-:count', - 'w' => 'amaviki angu-:count', - 'a_week' => 'amaviki angu-:count', - - 'day' => 'kwamalanga angu-:count', - 'd' => 'kwamalanga angu-:count', - 'a_day' => 'kwamalanga angu-:count', - - 'hour' => 'amahola angu-:count', - 'h' => 'amahola angu-:count', - 'a_hour' => 'amahola angu-:count', - - 'minute' => 'imizuzu engu-:count', - 'min' => 'imizuzu engu-:count', - 'a_minute' => 'imizuzu engu-:count', - - 'second' => 'imizuzwana engu-:count', - 's' => 'imizuzwana engu-:count', - 'a_second' => 'imizuzwana engu-:count', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nds.php b/vendor/nesbot/carbon/src/Carbon/Lang/nds.php deleted file mode 100644 index c0b3775e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nds.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/nds_DE.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nds_DE.php b/vendor/nesbot/carbon/src/Carbon/Lang/nds_DE.php deleted file mode 100644 index a6c57a91..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nds_DE.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - information from Kenneth Christiansen Kenneth Christiansen, Pablo Saratxaga kenneth@gnu.org, pablo@mandrakesoft.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], - 'months' => ['Jannuaar', 'Feberwaar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'], - 'months_short' => ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], - 'weekdays' => ['Sünndag', 'Maandag', 'Dingsdag', 'Middeweek', 'Dunnersdag', 'Freedag', 'Sünnavend'], - 'weekdays_short' => ['Sdag', 'Maan', 'Ding', 'Midd', 'Dunn', 'Free', 'Svd.'], - 'weekdays_min' => ['Sd', 'Ma', 'Di', 'Mi', 'Du', 'Fr', 'Sa'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - - 'year' => ':count Johr', - 'y' => ':countJ', - 'a_year' => '{1}een Johr|:count Johr', - - 'month' => ':count Maand', - 'm' => ':countM', - 'a_month' => '{1}een Maand|:count Maand', - - 'week' => ':count Week|:count Weken', - 'w' => ':countW', - 'a_week' => '{1}een Week|:count Week|:count Weken', - - 'day' => ':count Dag|:count Daag', - 'd' => ':countD', - 'a_day' => '{1}een Dag|:count Dag|:count Daag', - - 'hour' => ':count Stünn|:count Stünnen', - 'h' => ':countSt', - 'a_hour' => '{1}een Stünn|:count Stünn|:count Stünnen', - - 'minute' => ':count Minuut|:count Minuten', - 'min' => ':countm', - 'a_minute' => '{1}een Minuut|:count Minuut|:count Minuten', - - 'second' => ':count Sekunn|:count Sekunnen', - 's' => ':counts', - 'a_second' => 'en poor Sekunnen|:count Sekunn|:count Sekunnen', - - 'ago' => 'vör :time', - 'from_now' => 'in :time', - 'before' => ':time vörher', - 'after' => ':time later', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nds_NL.php b/vendor/nesbot/carbon/src/Carbon/Lang/nds_NL.php deleted file mode 100644 index de2c57bc..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nds_NL.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - information from Kenneth Christiansen Kenneth Christiansen, Pablo Saratxaga kenneth@gnu.org, pablo@mandrakesoft.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], - 'months' => ['Jaunuwoa', 'Februwoa', 'Moaz', 'Aprell', 'Mai', 'Juni', 'Juli', 'August', 'Septamba', 'Oktoba', 'Nowamba', 'Dezamba'], - 'months_short' => ['Jan', 'Feb', 'Moz', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Now', 'Dez'], - 'weekdays' => ['Sinndag', 'Mondag', 'Dingsdag', 'Meddwäakj', 'Donnadag', 'Friedag', 'Sinnowend'], - 'weekdays_short' => ['Sdg', 'Mdg', 'Dsg', 'Mwk', 'Ddg', 'Fdg', 'Swd'], - 'weekdays_min' => ['Sdg', 'Mdg', 'Dsg', 'Mwk', 'Ddg', 'Fdg', 'Swd'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ne.php b/vendor/nesbot/carbon/src/Carbon/Lang/ne.php deleted file mode 100644 index d4caf0e2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ne.php +++ /dev/null @@ -1,82 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - nootanghimire - * - Josh Soref - * - Nj Subedi - * - JD Isaacks - */ -return [ - 'year' => 'एक बर्ष|:count बर्ष', - 'y' => ':count वर्ष', - 'month' => 'एक महिना|:count महिना', - 'm' => ':count महिना', - 'week' => ':count हप्ता', - 'w' => ':count हप्ता', - 'day' => 'एक दिन|:count दिन', - 'd' => ':count दिन', - 'hour' => 'एक घण्टा|:count घण्टा', - 'h' => ':count घण्टा', - 'minute' => 'एक मिनेट|:count मिनेट', - 'min' => ':count मिनेट', - 'second' => 'केही क्षण|:count सेकेण्ड', - 's' => ':count सेकेण्ड', - 'ago' => ':time अगाडि', - 'from_now' => ':timeमा', - 'after' => ':time पछि', - 'before' => ':time अघि', - 'diff_now' => 'अहिले', - 'diff_today' => 'आज', - 'diff_yesterday' => 'हिजो', - 'diff_tomorrow' => 'भोलि', - 'formats' => [ - 'LT' => 'Aको h:mm बजे', - 'LTS' => 'Aको h:mm:ss बजे', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY, Aको h:mm बजे', - 'LLLL' => 'dddd, D MMMM YYYY, Aको h:mm बजे', - ], - 'calendar' => [ - 'sameDay' => '[आज] LT', - 'nextDay' => '[भोलि] LT', - 'nextWeek' => '[आउँदो] dddd[,] LT', - 'lastDay' => '[हिजो] LT', - 'lastWeek' => '[गएको] dddd[,] LT', - 'sameElse' => 'L', - ], - 'meridiem' => function ($hour) { - if ($hour < 3) { - return 'राति'; - } - if ($hour < 12) { - return 'बिहान'; - } - if ($hour < 16) { - return 'दिउँसो'; - } - if ($hour < 20) { - return 'साँझ'; - } - - return 'राति'; - }, - 'months' => ['जनवरी', 'फेब्रुवरी', 'मार्च', 'अप्रिल', 'मई', 'जुन', 'जुलाई', 'अगष्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', 'डिसेम्बर'], - 'months_short' => ['जन.', 'फेब्रु.', 'मार्च', 'अप्रि.', 'मई', 'जुन', 'जुलाई.', 'अग.', 'सेप्ट.', 'अक्टो.', 'नोभे.', 'डिसे.'], - 'weekdays' => ['आइतबार', 'सोमबार', 'मङ्गलबार', 'बुधबार', 'बिहिबार', 'शुक्रबार', 'शनिबार'], - 'weekdays_short' => ['आइत.', 'सोम.', 'मङ्गल.', 'बुध.', 'बिहि.', 'शुक्र.', 'शनि.'], - 'weekdays_min' => ['आ.', 'सो.', 'मं.', 'बु.', 'बि.', 'शु.', 'श.'], - 'list' => [', ', ' र '], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ne_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ne_IN.php deleted file mode 100644 index f68d00e3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ne_IN.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ne.php', [ - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'yy/M/d', - 'LL' => 'YYYY MMM D', - 'LLL' => 'YYYY MMMM D, h:mm a', - 'LLLL' => 'YYYY MMMM D, dddd, h:mm a', - ], - 'months' => ['जनवरी', 'फेब्रुअरी', 'मार्च', 'अप्रिल', 'मे', 'जुन', 'जुलाई', 'अगस्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', 'डिसेम्बर'], - 'months_short' => ['जनवरी', 'फेब्रुअरी', 'मार्च', 'अप्रिल', 'मे', 'जुन', 'जुलाई', 'अगस्ट', 'सेप्टेम्बर', 'अक्टोबर', 'नोभेम्बर', 'डिसेम्बर'], - 'weekend' => [0, 0], - 'meridiem' => ['पूर्वाह्न', 'अपराह्न'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ne_NP.php b/vendor/nesbot/carbon/src/Carbon/Lang/ne_NP.php deleted file mode 100644 index 27840c0f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ne_NP.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ne.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nhn.php b/vendor/nesbot/carbon/src/Carbon/Lang/nhn.php deleted file mode 100644 index 5a858315..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nhn.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/nhn_MX.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nhn_MX.php b/vendor/nesbot/carbon/src/Carbon/Lang/nhn_MX.php deleted file mode 100644 index 9db88a12..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nhn_MX.php +++ /dev/null @@ -1,50 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP libc-alpha@sourceware.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'], - 'months_short' => ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'], - 'weekdays' => ['teoilhuitl', 'ceilhuitl', 'omeilhuitl', 'yeilhuitl', 'nahuilhuitl', 'macuililhuitl', 'chicuaceilhuitl'], - 'weekdays_short' => ['teo', 'cei', 'ome', 'yei', 'nau', 'mac', 'chi'], - 'weekdays_min' => ['teo', 'cei', 'ome', 'yei', 'nau', 'mac', 'chi'], - 'day_of_first_week_of_year' => 1, - - 'month' => ':count metztli', // less reliable - 'm' => ':count metztli', // less reliable - 'a_month' => ':count metztli', // less reliable - - 'week' => ':count tonalli', // less reliable - 'w' => ':count tonalli', // less reliable - 'a_week' => ':count tonalli', // less reliable - - 'day' => ':count tonatih', // less reliable - 'd' => ':count tonatih', // less reliable - 'a_day' => ':count tonatih', // less reliable - - 'minute' => ':count toltecayotl', // less reliable - 'min' => ':count toltecayotl', // less reliable - 'a_minute' => ':count toltecayotl', // less reliable - - 'second' => ':count ome', // less reliable - 's' => ':count ome', // less reliable - 'a_second' => ':count ome', // less reliable - - 'year' => ':count xihuitl', - 'y' => ':count xihuitl', - 'a_year' => ':count xihuitl', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/niu.php b/vendor/nesbot/carbon/src/Carbon/Lang/niu.php deleted file mode 100644 index bd9be8aa..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/niu.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/niu_NU.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/niu_NU.php b/vendor/nesbot/carbon/src/Carbon/Lang/niu_NU.php deleted file mode 100644 index 6e7a697b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/niu_NU.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RockET Systems Emani Fakaotimanava-Lui emani@niue.nu - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['Ianuali', 'Fepuali', 'Masi', 'Apelila', 'Me', 'Iuni', 'Iulai', 'Aokuso', 'Sepetema', 'Oketopa', 'Novema', 'Tesemo'], - 'months_short' => ['Ian', 'Fep', 'Mas', 'Ape', 'Me', 'Iun', 'Iul', 'Aok', 'Sep', 'Oke', 'Nov', 'Tes'], - 'weekdays' => ['Aho Tapu', 'Aho Gofua', 'Aho Ua', 'Aho Lotu', 'Aho Tuloto', 'Aho Falaile', 'Aho Faiumu'], - 'weekdays_short' => ['Tapu', 'Gofua', 'Ua', 'Lotu', 'Tuloto', 'Falaile', 'Faiumu'], - 'weekdays_min' => ['Tapu', 'Gofua', 'Ua', 'Lotu', 'Tuloto', 'Falaile', 'Faiumu'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - - 'year' => ':count tau', - 'y' => ':count tau', - 'a_year' => ':count tau', - - 'month' => ':count mahina', - 'm' => ':count mahina', - 'a_month' => ':count mahina', - - 'week' => ':count faahi tapu', - 'w' => ':count faahi tapu', - 'a_week' => ':count faahi tapu', - - 'day' => ':count aho', - 'd' => ':count aho', - 'a_day' => ':count aho', - - 'hour' => ':count e tulā', - 'h' => ':count e tulā', - 'a_hour' => ':count e tulā', - - 'minute' => ':count minuti', - 'min' => ':count minuti', - 'a_minute' => ':count minuti', - - 'second' => ':count sekone', - 's' => ':count sekone', - 'a_second' => ':count sekone', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nl.php b/vendor/nesbot/carbon/src/Carbon/Lang/nl.php deleted file mode 100644 index 2d737703..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nl.php +++ /dev/null @@ -1,113 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Roy - * - Stephan - * - François B - * - Tim Fish - * - Kevin Huang - * - Jacob Middag - * - JD Isaacks - * - Roy - * - Stephan - * - François B - * - Tim Fish - * - Jacob Middag - * - JD Isaacks - * - Propaganistas - * - MegaXLR - * - adriaanzon - * - MonkeyPhysics - * - JeroenG - * - RikSomers - * - proclame - * - Rik de Groot (hwdegroot) - */ -return [ - 'year' => ':count jaar|:count jaar', - 'a_year' => 'een jaar|:count jaar', - 'y' => ':countj', - 'month' => ':count maand|:count maanden', - 'a_month' => 'een maand|:count maanden', - 'm' => ':countmnd', - 'week' => ':count week|:count weken', - 'a_week' => 'een week|:count weken', - 'w' => ':countw', - 'day' => ':count dag|:count dagen', - 'a_day' => 'een dag|:count dagen', - 'd' => ':countd', - 'hour' => ':count uur|:count uur', - 'a_hour' => 'een uur|:count uur', - 'h' => ':countu', - 'minute' => ':count minuut|:count minuten', - 'a_minute' => 'een minuut|:count minuten', - 'min' => ':countmin', - 'second' => ':count seconde|:count seconden', - 'a_second' => 'een paar seconden|:count seconden', - 's' => ':counts', - 'ago' => ':time geleden', - 'from_now' => 'over :time', - 'after' => ':time later', - 'before' => ':time eerder', - 'diff_now' => 'nu', - 'diff_today' => 'vandaag', - 'diff_today_regexp' => 'vandaag(?:\\s+om)?', - 'diff_yesterday' => 'gisteren', - 'diff_yesterday_regexp' => 'gisteren(?:\\s+om)?', - 'diff_tomorrow' => 'morgen', - 'diff_tomorrow_regexp' => 'morgen(?:\\s+om)?', - 'diff_after_tomorrow' => 'overmorgen', - 'diff_before_yesterday' => 'eergisteren', - 'period_recurrences' => ':count keer', - 'period_interval' => function (string $interval = '') { - /** @var string $output */ - $output = preg_replace('/^(een|één|1)\s+/u', '', $interval); - - if (preg_match('/^(een|één|1)( jaar|j| uur|u)/u', $interval)) { - return "elk $output"; - } - - return "elke $output"; - }, - 'period_start_date' => 'van :date', - 'period_end_date' => 'tot :date', - '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', - ], - 'calendar' => [ - 'sameDay' => '[vandaag om] LT', - 'nextDay' => '[morgen om] LT', - 'nextWeek' => 'dddd [om] LT', - 'lastDay' => '[gisteren om] LT', - 'lastWeek' => '[afgelopen] dddd [om] LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number) { - return $number.(($number === 1 || $number === 8 || $number >= 20) ? 'ste' : 'de'); - }, - 'months' => ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'], - 'months_short' => ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], - 'mmm_suffix' => '.', - 'weekdays' => ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - 'weekdays_short' => ['zo.', 'ma.', 'di.', 'wo.', 'do.', 'vr.', 'za.'], - 'weekdays_min' => ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' en '], - 'meridiem' => ['\'s ochtends', '\'s middags'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nl_AW.php b/vendor/nesbot/carbon/src/Carbon/Lang/nl_AW.php deleted file mode 100644 index 5ec136d1..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nl_AW.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Free Software Foundation, Inc. bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/nl.php', [ - 'formats' => [ - 'L' => 'DD-MM-YY', - ], - 'months' => ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'], - 'months_short' => ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], - 'weekdays' => ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - 'weekdays_short' => ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - 'weekdays_min' => ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nl_BE.php b/vendor/nesbot/carbon/src/Carbon/Lang/nl_BE.php deleted file mode 100644 index 037f5b4a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nl_BE.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Roy - * - Stephan - * - François B - * - Tim Fish - * - Kevin Huang - * - Jacob Middag - * - JD Isaacks - * - Propaganistas - */ -return array_replace_recursive(require __DIR__.'/nl.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nl_BQ.php b/vendor/nesbot/carbon/src/Carbon/Lang/nl_BQ.php deleted file mode 100644 index c269197b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nl_BQ.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/nl.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nl_CW.php b/vendor/nesbot/carbon/src/Carbon/Lang/nl_CW.php deleted file mode 100644 index c269197b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nl_CW.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/nl.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nl_NL.php b/vendor/nesbot/carbon/src/Carbon/Lang/nl_NL.php deleted file mode 100644 index 14e4853e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nl_NL.php +++ /dev/null @@ -1,24 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/nl.php', [ - 'months' => ['januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december'], - 'months_short' => ['jan', 'feb', 'mrt', 'apr', 'mei', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], - 'weekdays' => ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], - 'weekdays_short' => ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - 'weekdays_min' => ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nl_SR.php b/vendor/nesbot/carbon/src/Carbon/Lang/nl_SR.php deleted file mode 100644 index c269197b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nl_SR.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/nl.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nl_SX.php b/vendor/nesbot/carbon/src/Carbon/Lang/nl_SX.php deleted file mode 100644 index c269197b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nl_SX.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/nl.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nmg.php b/vendor/nesbot/carbon/src/Carbon/Lang/nmg.php deleted file mode 100644 index 4d1df6e5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nmg.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['maná', 'kugú'], - 'weekdays' => ['sɔ́ndɔ', 'mɔ́ndɔ', 'sɔ́ndɔ mafú mába', 'sɔ́ndɔ mafú málal', 'sɔ́ndɔ mafú mána', 'mabágá má sukul', 'sásadi'], - 'weekdays_short' => ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'mbs', 'sas'], - 'weekdays_min' => ['sɔ́n', 'mɔ́n', 'smb', 'sml', 'smn', 'mbs', 'sas'], - 'months' => ['ngwɛn matáhra', 'ngwɛn ńmba', 'ngwɛn ńlal', 'ngwɛn ńna', 'ngwɛn ńtan', 'ngwɛn ńtuó', 'ngwɛn hɛmbuɛrí', 'ngwɛn lɔmbi', 'ngwɛn rɛbvuâ', 'ngwɛn wum', 'ngwɛn wum navǔr', 'krísimin'], - 'months_short' => ['ng1', 'ng2', 'ng3', 'ng4', 'ng5', 'ng6', 'ng7', 'ng8', 'ng9', 'ng10', 'ng11', 'kris'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nn.php b/vendor/nesbot/carbon/src/Carbon/Lang/nn.php deleted file mode 100644 index 041f7b29..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nn.php +++ /dev/null @@ -1,78 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - Alexander Tømmerås - * - Øystein - * - JD Isaacks - * - Gaute Hvoslef Kvalnes (gaute) - */ -return [ - 'year' => ':count år', - 'a_year' => 'eit år|:count år', - 'y' => ':count år', - 'month' => ':count månad|:count månader', - 'a_month' => 'ein månad|:count månader', - 'm' => ':count md', - 'week' => ':count veke|:count veker', - 'a_week' => 'ei veke|:count veker', - 'w' => ':countv', - 'day' => ':count dag|:count dagar', - 'a_day' => 'ein dag|:count dagar', - 'd' => ':countd', - 'hour' => ':count time|:count timar', - 'a_hour' => 'ein time|:count timar', - 'h' => ':countt', - 'minute' => ':count minutt', - 'a_minute' => 'eit minutt|:count minutt', - 'min' => ':countm', - 'second' => ':count sekund', - 'a_second' => 'nokre sekund|:count sekund', - 's' => ':counts', - 'ago' => ':time sidan', - 'from_now' => 'om :time', - 'after' => ':time etter', - 'before' => ':time før', - 'diff_today' => 'I dag', - 'diff_yesterday' => 'I går', - 'diff_yesterday_regexp' => 'I går(?:\\s+klokka)?', - 'diff_tomorrow' => 'I morgon', - 'diff_tomorrow_regexp' => 'I morgon(?:\\s+klokka)?', - 'diff_today_regexp' => 'I dag(?:\\s+klokka)?', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD.MM.YYYY', - 'LL' => 'D. MMMM YYYY', - 'LLL' => 'D. MMMM YYYY [kl.] H:mm', - 'LLLL' => 'dddd D. MMMM YYYY [kl.] HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[I dag klokka] LT', - 'nextDay' => '[I morgon klokka] LT', - 'nextWeek' => 'dddd [klokka] LT', - 'lastDay' => '[I går klokka] LT', - 'lastWeek' => '[Føregåande] dddd [klokka] LT', - 'sameElse' => 'L', - ], - 'ordinal' => ':number.', - 'months' => ['januar', 'februar', 'mars', 'april', 'mai', 'juni', 'juli', 'august', 'september', 'oktober', 'november', 'desember'], - 'months_short' => ['jan', 'feb', 'mar', 'apr', 'mai', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'des'], - 'weekdays' => ['sundag', 'måndag', 'tysdag', 'onsdag', 'torsdag', 'fredag', 'laurdag'], - 'weekdays_short' => ['sun', 'mån', 'tys', 'ons', 'tor', 'fre', 'lau'], - 'weekdays_min' => ['su', 'må', 'ty', 'on', 'to', 'fr', 'la'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' og '], - 'meridiem' => ['f.m.', 'e.m.'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nn_NO.php b/vendor/nesbot/carbon/src/Carbon/Lang/nn_NO.php deleted file mode 100644 index 8e168711..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nn_NO.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/nn.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nnh.php b/vendor/nesbot/carbon/src/Carbon/Lang/nnh.php deleted file mode 100644 index 007d2399..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nnh.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['mbaʼámbaʼ', 'ncwònzém'], - 'weekdays' => null, - 'weekdays_short' => ['lyɛʼɛ́ sẅíŋtè', 'mvfò lyɛ̌ʼ', 'mbɔ́ɔntè mvfò lyɛ̌ʼ', 'tsètsɛ̀ɛ lyɛ̌ʼ', 'mbɔ́ɔntè tsetsɛ̀ɛ lyɛ̌ʼ', 'mvfò màga lyɛ̌ʼ', 'màga lyɛ̌ʼ'], - 'weekdays_min' => null, - 'months' => null, - 'months_short' => ['saŋ tsetsɛ̀ɛ lùm', 'saŋ kàg ngwóŋ', 'saŋ lepyè shúm', 'saŋ cÿó', 'saŋ tsɛ̀ɛ cÿó', 'saŋ njÿoláʼ', 'saŋ tyɛ̀b tyɛ̀b mbʉ̀ŋ', 'saŋ mbʉ̀ŋ', 'saŋ ngwɔ̀ʼ mbÿɛ', 'saŋ tàŋa tsetsáʼ', 'saŋ mejwoŋó', 'saŋ lùm'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/yy', - 'LL' => 'D MMM, YYYY', - 'LLL' => '[lyɛ]̌ʼ d [na] MMMM, YYYY HH:mm', - 'LLLL' => 'dddd , [lyɛ]̌ʼ d [na] MMMM, YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/no.php b/vendor/nesbot/carbon/src/Carbon/Lang/no.php deleted file mode 100644 index f4497c75..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/no.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Daniel S. Billing - * - Paul - * - Jimmie Johansson - * - Jens Herlevsen - */ -return array_replace_recursive(require __DIR__.'/nb.php', [ - 'formats' => [ - 'LLL' => 'D. MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D. MMMM YYYY [kl.] HH:mm', - ], - 'calendar' => [ - 'nextWeek' => 'på dddd [kl.] LT', - 'lastWeek' => '[i] dddd[s kl.] LT', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nr.php b/vendor/nesbot/carbon/src/Carbon/Lang/nr.php deleted file mode 100644 index 1bc999f9..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nr.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/nr_ZA.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nr_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/nr_ZA.php deleted file mode 100644 index f9a7be82..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nr_ZA.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['Janabari', 'uFeberbari', 'uMatjhi', 'u-Apreli', 'Meyi', 'Juni', 'Julayi', 'Arhostosi', 'Septemba', 'Oktoba', 'Usinyikhaba', 'Disemba'], - 'months_short' => ['Jan', 'Feb', 'Mat', 'Apr', 'Mey', 'Jun', 'Jul', 'Arh', 'Sep', 'Okt', 'Usi', 'Dis'], - 'weekdays' => ['uSonto', 'uMvulo', 'uLesibili', 'lesithathu', 'uLesine', 'ngoLesihlanu', 'umGqibelo'], - 'weekdays_short' => ['Son', 'Mvu', 'Bil', 'Tha', 'Ne', 'Hla', 'Gqi'], - 'weekdays_min' => ['Son', 'Mvu', 'Bil', 'Tha', 'Ne', 'Hla', 'Gqi'], - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nso.php b/vendor/nesbot/carbon/src/Carbon/Lang/nso.php deleted file mode 100644 index 2a6cabbf..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nso.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/nso_ZA.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nso_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/nso_ZA.php deleted file mode 100644 index b08fe6dc..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nso_ZA.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['Janaware', 'Febereware', 'Matšhe', 'Aprele', 'Mei', 'June', 'Julae', 'Agostose', 'Setemere', 'Oktobere', 'Nofemere', 'Disemere'], - 'months_short' => ['Jan', 'Feb', 'Mat', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Set', 'Okt', 'Nof', 'Dis'], - 'weekdays' => ['LaMorena', 'Mošupologo', 'Labobedi', 'Laboraro', 'Labone', 'Labohlano', 'Mokibelo'], - 'weekdays_short' => ['Son', 'Moš', 'Bed', 'Rar', 'Ne', 'Hla', 'Mok'], - 'weekdays_min' => ['Son', 'Moš', 'Bed', 'Rar', 'Ne', 'Hla', 'Mok'], - 'day_of_first_week_of_year' => 1, - - 'year' => ':count ngwaga', - 'y' => ':count ngwaga', - 'a_year' => ':count ngwaga', - - 'month' => ':count Kgwedi', - 'm' => ':count Kgwedi', - 'a_month' => ':count Kgwedi', - - 'week' => ':count Beke', - 'w' => ':count Beke', - 'a_week' => ':count Beke', - - 'day' => ':count Letšatši', - 'd' => ':count Letšatši', - 'a_day' => ':count Letšatši', - - 'hour' => ':count Iri', - 'h' => ':count Iri', - 'a_hour' => ':count Iri', - - 'minute' => ':count Motsotso', - 'min' => ':count Motsotso', - 'a_minute' => ':count Motsotso', - - 'second' => ':count motsotswana', - 's' => ':count motsotswana', - 'a_second' => ':count motsotswana', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nus.php b/vendor/nesbot/carbon/src/Carbon/Lang/nus.php deleted file mode 100644 index 789bc391..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nus.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['RW', 'TŊ'], - 'weekdays' => ['Cäŋ kuɔth', 'Jiec la̱t', 'Rɛw lätni', 'Diɔ̱k lätni', 'Ŋuaan lätni', 'Dhieec lätni', 'Bäkɛl lätni'], - 'weekdays_short' => ['Cäŋ', 'Jiec', 'Rɛw', 'Diɔ̱k', 'Ŋuaan', 'Dhieec', 'Bäkɛl'], - 'weekdays_min' => ['Cäŋ', 'Jiec', 'Rɛw', 'Diɔ̱k', 'Ŋuaan', 'Dhieec', 'Bäkɛl'], - 'months' => ['Tiop thar pɛt', 'Pɛt', 'Duɔ̱ɔ̱ŋ', 'Guak', 'Duät', 'Kornyoot', 'Pay yie̱tni', 'Tho̱o̱r', 'Tɛɛr', 'Laath', 'Kur', 'Tio̱p in di̱i̱t'], - 'months_short' => ['Tiop', 'Pɛt', 'Duɔ̱ɔ̱', 'Guak', 'Duä', 'Kor', 'Pay', 'Thoo', 'Tɛɛ', 'Laa', 'Kur', 'Tid'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'D/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY h:mm a', - 'LLLL' => 'dddd D MMMM YYYY h:mm a', - ], - - 'year' => ':count jiök', // less reliable - 'y' => ':count jiök', // less reliable - 'a_year' => ':count jiök', // less reliable - - 'month' => ':count pay', // less reliable - 'm' => ':count pay', // less reliable - 'a_month' => ':count pay', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/nyn.php b/vendor/nesbot/carbon/src/Carbon/Lang/nyn.php deleted file mode 100644 index 8660ea42..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/nyn.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'weekdays' => ['Sande', 'Orwokubanza', 'Orwakabiri', 'Orwakashatu', 'Orwakana', 'Orwakataano', 'Orwamukaaga'], - 'weekdays_short' => ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'], - 'weekdays_min' => ['SAN', 'ORK', 'OKB', 'OKS', 'OKN', 'OKT', 'OMK'], - 'months' => ['Okwokubanza', 'Okwakabiri', 'Okwakashatu', 'Okwakana', 'Okwakataana', 'Okwamukaaga', 'Okwamushanju', 'Okwamunaana', 'Okwamwenda', 'Okwaikumi', 'Okwaikumi na kumwe', 'Okwaikumi na ibiri'], - 'months_short' => ['KBZ', 'KBR', 'KST', 'KKN', 'KTN', 'KMK', 'KMS', 'KMN', 'KMW', 'KKM', 'KNK', 'KNB'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/oc.php b/vendor/nesbot/carbon/src/Carbon/Lang/oc.php deleted file mode 100644 index c9411d69..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/oc.php +++ /dev/null @@ -1,100 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Quentí - */ -// @codeCoverageIgnoreStart -use Symfony\Component\Translation\PluralizationRules; - -if (class_exists('Symfony\\Component\\Translation\\PluralizationRules')) { - PluralizationRules::set(static function ($number) { - return $number == 1 ? 0 : 1; - }, 'oc'); -} -// @codeCoverageIgnoreEnd - -return [ - 'year' => ':count an|:count ans', - 'a_year' => 'un an|:count ans', - 'y' => ':count an|:count ans', - 'month' => ':count mes|:count meses', - 'a_month' => 'un mes|:count meses', - 'm' => ':count mes|:count meses', - 'week' => ':count setmana|:count setmanas', - 'a_week' => 'una setmana|:count setmanas', - 'w' => ':count setmana|:count setmanas', - 'day' => ':count jorn|:count jorns', - 'a_day' => 'un jorn|:count jorns', - 'd' => ':count jorn|:count jorns', - 'hour' => ':count ora|:count oras', - 'a_hour' => 'una ora|:count oras', - 'h' => ':count ora|:count oras', - 'minute' => ':count minuta|:count minutas', - 'a_minute' => 'una minuta|:count minutas', - 'min' => ':count minuta|:count minutas', - 'second' => ':count segonda|:count segondas', - 'a_second' => 'una segonda|:count segondas', - 's' => ':count segonda|:count segondas', - 'ago' => 'fa :time', - 'from_now' => 'd\'aquí :time', - 'after' => ':time aprèp', - 'before' => ':time abans', - 'diff_now' => 'ara meteis', - 'diff_today' => 'Uèi', - 'diff_today_regexp' => 'Uèi(?:\\s+a)?', - 'diff_yesterday' => 'ièr', - 'diff_yesterday_regexp' => 'Ièr(?:\\s+a)?', - 'diff_tomorrow' => 'deman', - 'diff_tomorrow_regexp' => 'Deman(?:\\s+a)?', - 'diff_before_yesterday' => 'ièr delà', - 'diff_after_tomorrow' => 'deman passat', - 'period_recurrences' => ':count còp|:count còps', - 'period_interval' => 'cada :interval', - 'period_start_date' => 'de :date', - 'period_end_date' => 'fins a :date', - 'formats' => [ - 'LT' => 'H:mm', - 'LTS' => 'H:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMMM [de] YYYY', - 'LLL' => 'D MMMM [de] YYYY [a] H:mm', - 'LLLL' => 'dddd D MMMM [de] YYYY [a] H:mm', - ], - 'calendar' => [ - 'sameDay' => '[Uèi a] LT', - 'nextDay' => '[Deman a] LT', - 'nextWeek' => 'dddd [a] LT', - 'lastDay' => '[Ièr a] LT', - 'lastWeek' => 'dddd [passat a] LT', - 'sameElse' => 'L', - ], - 'months' => ['de genièr', 'de febrièr', 'de març', 'd\'abrial', 'de mai', 'de junh', 'de julhet', 'd\'agost', 'de setembre', 'd’octòbre', 'de novembre', 'de decembre'], - 'months_standalone' => ['genièr', 'febrièr', 'març', 'abrial', 'mai', 'junh', 'julh', 'agost', 'setembre', 'octòbre', 'novembre', 'decembre'], - 'months_short' => ['gen.', 'feb.', 'març', 'abr.', 'mai', 'junh', 'julh', 'ago.', 'sep.', 'oct.', 'nov.', 'dec.'], - 'weekdays' => ['dimenge', 'diluns', 'dimars', 'dimècres', 'dijòus', 'divendres', 'dissabte'], - 'weekdays_short' => ['dg', 'dl', 'dm', 'dc', 'dj', 'dv', 'ds'], - 'weekdays_min' => ['dg', 'dl', 'dm', 'dc', 'dj', 'dv', 'ds'], - 'ordinal' => function ($number, string $period = '') { - $ordinal = [1 => 'èr', 2 => 'nd'][(int) $number] ?? 'en'; - - // feminine for year, week, hour, minute, second - if (preg_match('/^[yYwWhHgGis]$/', $period)) { - $ordinal .= 'a'; - } - - return $number.$ordinal; - }, - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' e '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/oc_FR.php b/vendor/nesbot/carbon/src/Carbon/Lang/oc_FR.php deleted file mode 100644 index 01eb5c14..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/oc_FR.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/oc.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/om.php b/vendor/nesbot/carbon/src/Carbon/Lang/om.php deleted file mode 100644 index b8d5a0b0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/om.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation & Sagalee Oromoo Publishing Co. Inc. locales@geez.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'dd-MMM-YYYY', - 'LLL' => 'dd MMMM YYYY HH:mm', - 'LLLL' => 'dddd, MMMM D, YYYY HH:mm', - ], - 'months' => ['Amajjii', 'Guraandhala', 'Bitooteessa', 'Elba', 'Caamsa', 'Waxabajjii', 'Adooleessa', 'Hagayya', 'Fuulbana', 'Onkololeessa', 'Sadaasa', 'Muddee'], - 'months_short' => ['Ama', 'Gur', 'Bit', 'Elb', 'Cam', 'Wax', 'Ado', 'Hag', 'Ful', 'Onk', 'Sad', 'Mud'], - 'weekdays' => ['Dilbata', 'Wiixata', 'Qibxata', 'Roobii', 'Kamiisa', 'Jimaata', 'Sanbata'], - 'weekdays_short' => ['Dil', 'Wix', 'Qib', 'Rob', 'Kam', 'Jim', 'San'], - 'weekdays_min' => ['Dil', 'Wix', 'Qib', 'Rob', 'Kam', 'Jim', 'San'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['WD', 'WB'], - - 'year' => 'wggoota :count', - 'y' => 'wggoota :count', - 'a_year' => 'wggoota :count', - - 'month' => 'ji’a :count', - 'm' => 'ji’a :count', - 'a_month' => 'ji’a :count', - - 'week' => 'torban :count', - 'w' => 'torban :count', - 'a_week' => 'torban :count', - - 'day' => 'guyyaa :count', - 'd' => 'guyyaa :count', - 'a_day' => 'guyyaa :count', - - 'hour' => 'saʼaatii :count', - 'h' => 'saʼaatii :count', - 'a_hour' => 'saʼaatii :count', - - 'minute' => 'daqiiqaa :count', - 'min' => 'daqiiqaa :count', - 'a_minute' => 'daqiiqaa :count', - - 'second' => 'sekoondii :count', - 's' => 'sekoondii :count', - 'a_second' => 'sekoondii :count', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/om_ET.php b/vendor/nesbot/carbon/src/Carbon/Lang/om_ET.php deleted file mode 100644 index 044760e3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/om_ET.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/om.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/om_KE.php b/vendor/nesbot/carbon/src/Carbon/Lang/om_KE.php deleted file mode 100644 index f5a4d1c9..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/om_KE.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/om.php', [ - 'day_of_first_week_of_year' => 0, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/or.php b/vendor/nesbot/carbon/src/Carbon/Lang/or.php deleted file mode 100644 index 3aa71732..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/or.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/or_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/or_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/or_IN.php deleted file mode 100644 index 57a89f5d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/or_IN.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM AP Linux Technology Center, Yamato Software Laboratory bug-glibc@gnu.org - */ -return [ - 'diff_now' => 'ବର୍ତ୍ତମାନ', - 'diff_yesterday' => 'ଗତକାଲି', - 'diff_tomorrow' => 'ଆସନ୍ତାକାଲି', - 'formats' => [ - 'LT' => 'Oh:Om A', - 'LTS' => 'Oh:Om:Os A', - 'L' => 'OD-OM-OY', - 'LL' => 'OD MMMM OY', - 'LLL' => 'OD MMMM OY Oh:Om A', - 'LLLL' => 'dddd OD MMMM OY Oh:Om A', - ], - 'months' => ['ଜାନୁଆରୀ', 'ଫେବୃଆରୀ', 'ମାର୍ଚ୍ଚ', 'ଅପ୍ରେଲ', 'ମଇ', 'ଜୁନ', 'ଜୁଲାଇ', 'ଅଗଷ୍ଟ', 'ସେପ୍ଟେମ୍ବର', 'ଅକ୍ଟୋବର', 'ନଭେମ୍ବର', 'ଡିସେମ୍ବର'], - 'months_short' => ['ଜାନୁଆରୀ', 'ଫେବୃଆରୀ', 'ମାର୍ଚ୍ଚ', 'ଅପ୍ରେଲ', 'ମଇ', 'ଜୁନ', 'ଜୁଲାଇ', 'ଅଗଷ୍ଟ', 'ସେପ୍ଟେମ୍ବର', 'ଅକ୍ଟୋବର', 'ନଭେମ୍ବର', 'ଡିସେମ୍ବର'], - 'weekdays' => ['ରବିବାର', 'ସୋମବାର', 'ମଙ୍ଗଳବାର', 'ବୁଧବାର', 'ଗୁରୁବାର', 'ଶୁକ୍ରବାର', 'ଶନିବାର'], - 'weekdays_short' => ['ରବି', 'ସୋମ', 'ମଙ୍ଗଳ', 'ବୁଧ', 'ଗୁରୁ', 'ଶୁକ୍ର', 'ଶନି'], - 'weekdays_min' => ['ରବି', 'ସୋମ', 'ମଙ୍ଗଳ', 'ବୁଧ', 'ଗୁରୁ', 'ଶୁକ୍ର', 'ଶନି'], - 'day_of_first_week_of_year' => 1, - 'alt_numbers' => ['୦', '୧', '୨', '୩', '୪', '୫', '୬', '୭', '୮', '୯', '୧୦', '୧୧', '୧୨', '୧୩', '୧୪', '୧୫', '୧୬', '୧୭', '୧୮', '୧୯', '୨୦', '୨୧', '୨୨', '୨୩', '୨୪', '୨୫', '୨୬', '୨୭', '୨୮', '୨୯', '୩୦', '୩୧', '୩୨', '୩୩', '୩୪', '୩୫', '୩୬', '୩୭', '୩୮', '୩୯', '୪୦', '୪୧', '୪୨', '୪୩', '୪୪', '୪୫', '୪୬', '୪୭', '୪୮', '୪୯', '୫୦', '୫୧', '୫୨', '୫୩', '୫୪', '୫୫', '୫୬', '୫୭', '୫୮', '୫୯', '୬୦', '୬୧', '୬୨', '୬୩', '୬୪', '୬୫', '୬୬', '୬୭', '୬୮', '୬୯', '୭୦', '୭୧', '୭୨', '୭୩', '୭୪', '୭୫', '୭୬', '୭୭', '୭୮', '୭୯', '୮୦', '୮୧', '୮୨', '୮୩', '୮୪', '୮୫', '୮୬', '୮୭', '୮୮', '୮୯', '୯୦', '୯୧', '୯୨', '୯୩', '୯୪', '୯୫', '୯୬', '୯୭', '୯୮', '୯୯'], - 'year' => ':count ବର୍ଷ', - 'y' => ':count ବ.', - 'month' => ':count ମାସ', - 'm' => ':count ମା.', - 'week' => ':count ସପ୍ତାହ', - 'w' => ':count ସପ୍ତା.', - 'day' => ':count ଦିନ', - 'd' => ':count ଦିନ', - 'hour' => ':count ଘଣ୍ତ', - 'h' => ':count ଘ.', - 'minute' => ':count ମିନଟ', - 'min' => ':count ମି.', - 'second' => ':count ସେକଣ୍ଢ', - 's' => ':count ସେ.', - 'ago' => ':time ପୂର୍ବେ', - 'from_now' => ':timeରେ', -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/os.php b/vendor/nesbot/carbon/src/Carbon/Lang/os.php deleted file mode 100644 index 5f55e8a2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/os.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/os_RU.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/os_RU.php b/vendor/nesbot/carbon/src/Carbon/Lang/os_RU.php deleted file mode 100644 index 9592d15d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/os_RU.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], - 'months' => ['январы', 'февралы', 'мартъийы', 'апрелы', 'майы', 'июны', 'июлы', 'августы', 'сентябры', 'октябры', 'ноябры', 'декабры'], - 'months_short' => ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'], - 'weekdays' => ['Хуыцаубон', 'Къуырисæр', 'Дыццæг', 'Æртыццæг', 'Цыппæрæм', 'Майрæмбон', 'Сабат'], - 'weekdays_short' => ['Хцб', 'Крс', 'Дцг', 'Æрт', 'Цпр', 'Мрб', 'Сбт'], - 'weekdays_min' => ['Хцб', 'Крс', 'Дцг', 'Æрт', 'Цпр', 'Мрб', 'Сбт'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - - 'minute' => ':count гыццыл', // less reliable - 'min' => ':count гыццыл', // less reliable - 'a_minute' => ':count гыццыл', // less reliable - - 'second' => ':count æндæр', // less reliable - 's' => ':count æндæр', // less reliable - 'a_second' => ':count æндæр', // less reliable - - 'year' => ':count аз', - 'y' => ':count аз', - 'a_year' => ':count аз', - - 'month' => ':count мӕй', - 'm' => ':count мӕй', - 'a_month' => ':count мӕй', - - 'week' => ':count къуыри', - 'w' => ':count къуыри', - 'a_week' => ':count къуыри', - - 'day' => ':count бон', - 'd' => ':count бон', - 'a_day' => ':count бон', - - 'hour' => ':count сахат', - 'h' => ':count сахат', - 'a_hour' => ':count сахат', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pa.php b/vendor/nesbot/carbon/src/Carbon/Lang/pa.php deleted file mode 100644 index 48b20331..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pa.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Philippe Vaucher - * - Tsutomu Kuroda - * - Punjab - */ -return [ - 'year' => 'ਇੱਕ ਸਾਲ|:count ਸਾਲ', - 'month' => 'ਇੱਕ ਮਹੀਨਾ|:count ਮਹੀਨੇ', - 'week' => 'ਹਫਤਾ|:count ਹਫ਼ਤੇ', - 'day' => 'ਇੱਕ ਦਿਨ|:count ਦਿਨ', - 'hour' => 'ਇੱਕ ਘੰਟਾ|:count ਘੰਟੇ', - 'minute' => 'ਇਕ ਮਿੰਟ|:count ਮਿੰਟ', - 'second' => 'ਕੁਝ ਸਕਿੰਟ|:count ਸਕਿੰਟ', - 'ago' => ':time ਪਹਿਲਾਂ', - 'from_now' => ':time ਵਿੱਚ', - 'before' => ':time ਤੋਂ ਪਹਿਲਾਂ', - 'after' => ':time ਤੋਂ ਬਾਅਦ', - 'diff_now' => 'ਹੁਣ', - 'diff_today' => 'ਅਜ', - 'diff_yesterday' => 'ਕਲ', - 'diff_tomorrow' => 'ਕਲ', - 'formats' => [ - 'LT' => 'A h:mm ਵਜੇ', - 'LTS' => 'A h:mm:ss ਵਜੇ', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY, A h:mm ਵਜੇ', - 'LLLL' => 'dddd, D MMMM YYYY, A h:mm ਵਜੇ', - ], - 'calendar' => [ - 'sameDay' => '[ਅਜ] LT', - 'nextDay' => '[ਕਲ] LT', - 'nextWeek' => '[ਅਗਲਾ] dddd, LT', - 'lastDay' => '[ਕਲ] LT', - 'lastWeek' => '[ਪਿਛਲੇ] dddd, LT', - 'sameElse' => 'L', - ], - 'meridiem' => function ($hour) { - if ($hour < 4) { - return 'ਰਾਤ'; - } - if ($hour < 10) { - return 'ਸਵੇਰ'; - } - if ($hour < 17) { - return 'ਦੁਪਹਿਰ'; - } - if ($hour < 20) { - return 'ਸ਼ਾਮ'; - } - - return 'ਰਾਤ'; - }, - 'months' => ['ਜਨਵਰੀ', 'ਫ਼ਰਵਰੀ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈਲ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾਈ', 'ਅਗਸਤ', 'ਸਤੰਬਰ', 'ਅਕਤੂਬਰ', 'ਨਵੰਬਰ', 'ਦਸੰਬਰ'], - 'months_short' => ['ਜਨਵਰੀ', 'ਫ਼ਰਵਰੀ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈਲ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾਈ', 'ਅਗਸਤ', 'ਸਤੰਬਰ', 'ਅਕਤੂਬਰ', 'ਨਵੰਬਰ', 'ਦਸੰਬਰ'], - 'weekdays' => ['ਐਤਵਾਰ', 'ਸੋਮਵਾਰ', 'ਮੰਗਲਵਾਰ', 'ਬੁਧਵਾਰ', 'ਵੀਰਵਾਰ', 'ਸ਼ੁੱਕਰਵਾਰ', 'ਸ਼ਨੀਚਰਵਾਰ'], - 'weekdays_short' => ['ਐਤ', 'ਸੋਮ', 'ਮੰਗਲ', 'ਬੁਧ', 'ਵੀਰ', 'ਸ਼ੁਕਰ', 'ਸ਼ਨੀ'], - 'weekdays_min' => ['ਐਤ', 'ਸੋਮ', 'ਮੰਗਲ', 'ਬੁਧ', 'ਵੀਰ', 'ਸ਼ੁਕਰ', 'ਸ਼ਨੀ'], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' ਅਤੇ '], - 'weekend' => [0, 0], - 'alt_numbers' => ['੦', '੧', '੨', '੩', '੪', '੫', '੬', '੭', '੮', '੯'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pa_Arab.php b/vendor/nesbot/carbon/src/Carbon/Lang/pa_Arab.php deleted file mode 100644 index 39b06532..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pa_Arab.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ur.php', [ - 'weekdays' => ['اتوار', 'پیر', 'منگل', 'بُدھ', 'جمعرات', 'جمعہ', 'ہفتہ'], - 'weekdays_short' => ['اتوار', 'پیر', 'منگل', 'بُدھ', 'جمعرات', 'جمعہ', 'ہفتہ'], - 'weekdays_min' => ['اتوار', 'پیر', 'منگل', 'بُدھ', 'جمعرات', 'جمعہ', 'ہفتہ'], - 'months' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئ', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'], - 'months_short' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئ', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'], - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY h:mm a', - 'LLLL' => 'dddd, DD MMMM YYYY h:mm a', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pa_Guru.php b/vendor/nesbot/carbon/src/Carbon/Lang/pa_Guru.php deleted file mode 100644 index 7adff5c3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pa_Guru.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/pa.php', [ - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'D/M/yy', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY, h:mm a', - 'LLLL' => 'dddd, D MMMM YYYY, h:mm a', - ], - 'months' => ['ਜਨਵਰੀ', 'ਫ਼ਰਵਰੀ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈਲ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾਈ', 'ਅਗਸਤ', 'ਸਤੰਬਰ', 'ਅਕਤੂਬਰ', 'ਨਵੰਬਰ', 'ਦਸੰਬਰ'], - 'months_short' => ['ਜਨ', 'ਫ਼ਰ', 'ਮਾਰਚ', 'ਅਪ੍ਰੈ', 'ਮਈ', 'ਜੂਨ', 'ਜੁਲਾ', 'ਅਗ', 'ਸਤੰ', 'ਅਕਤੂ', 'ਨਵੰ', 'ਦਸੰ'], - 'weekdays' => ['ਐਤਵਾਰ', 'ਸੋਮਵਾਰ', 'ਮੰਗਲਵਾਰ', 'ਬੁੱਧਵਾਰ', 'ਵੀਰਵਾਰ', 'ਸ਼ੁੱਕਰਵਾਰ', 'ਸ਼ਨਿੱਚਰਵਾਰ'], - 'weekdays_short' => ['ਐਤ', 'ਸੋਮ', 'ਮੰਗਲ', 'ਬੁੱਧ', 'ਵੀਰ', 'ਸ਼ੁੱਕਰ', 'ਸ਼ਨਿੱਚਰ'], - 'weekdays_min' => ['ਐਤ', 'ਸੋਮ', 'ਮੰਗ', 'ਬੁੱਧ', 'ਵੀਰ', 'ਸ਼ੁੱਕ', 'ਸ਼ਨਿੱ'], - 'weekend' => [0, 0], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pa_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/pa_IN.php deleted file mode 100644 index ca67642a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pa_IN.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Guo Xiang Tan - * - Josh Soref - * - Ash - * - harpreetkhalsagtbit - */ -return require __DIR__.'/pa.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pa_PK.php b/vendor/nesbot/carbon/src/Carbon/Lang/pa_PK.php deleted file mode 100644 index f9af11c6..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pa_PK.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['جنوري', 'فروري', 'مارچ', 'اپريل', 'مٓی', 'جون', 'جولاي', 'اگست', 'ستمبر', 'اكتوبر', 'نومبر', 'دسمبر'], - 'months_short' => ['جنوري', 'فروري', 'مارچ', 'اپريل', 'مٓی', 'جون', 'جولاي', 'اگست', 'ستمبر', 'اكتوبر', 'نومبر', 'دسمبر'], - 'weekdays' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'], - 'weekdays_short' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'], - 'weekdays_min' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['ص', 'ش'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pap.php b/vendor/nesbot/carbon/src/Carbon/Lang/pap.php deleted file mode 100644 index b4c1706f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pap.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return [ - 'formats' => [ - 'LT' => 'HH.mm', - 'LTS' => 'HH.mm:ss', - 'L' => 'DD-MM-YY', - 'LL' => 'MMMM [di] DD, YYYY', - 'LLL' => 'DD MMM HH.mm', - 'LLLL' => 'MMMM DD, YYYY HH.mm', - ], - 'months' => ['yanüari', 'febrüari', 'mart', 'aprel', 'mei', 'yüni', 'yüli', 'ougùstùs', 'sèptèmber', 'oktober', 'novèmber', 'desèmber'], - 'months_short' => ['yan', 'feb', 'mar', 'apr', 'mei', 'yün', 'yül', 'oug', 'sèp', 'okt', 'nov', 'des'], - 'weekdays' => ['djadomingo', 'djaluna', 'djamars', 'djawebs', 'djarason', 'djabierne', 'djasabra'], - 'weekdays_short' => ['do', 'lu', 'ma', 'we', 'ra', 'bi', 'sa'], - 'weekdays_min' => ['do', 'lu', 'ma', 'we', 'ra', 'bi', 'sa'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'year' => ':count aña', - 'month' => ':count luna', - 'week' => ':count siman', - 'day' => ':count dia', - 'hour' => ':count ora', - 'minute' => ':count minüt', - 'second' => ':count sekònde', - 'list' => [', ', ' i '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pap_AW.php b/vendor/nesbot/carbon/src/Carbon/Lang/pap_AW.php deleted file mode 100644 index e9a48ffc..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pap_AW.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - information from native speaker Pablo Saratxaga pablo@mandrakesoft.com - */ -return require __DIR__.'/pap.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pap_CW.php b/vendor/nesbot/carbon/src/Carbon/Lang/pap_CW.php deleted file mode 100644 index e9a48ffc..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pap_CW.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - information from native speaker Pablo Saratxaga pablo@mandrakesoft.com - */ -return require __DIR__.'/pap.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pl.php b/vendor/nesbot/carbon/src/Carbon/Lang/pl.php deleted file mode 100644 index b7205354..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pl.php +++ /dev/null @@ -1,126 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Wacław Jacek - * - François B - * - Tim Fish - * - Serhan Apaydın - * - Massimiliano Caniparoli - * - JD Isaacks - * - Jakub Szwacz - * - Jan - * - Paul - * - damlys - * - Marek (marast78) - * - Peter (UnrulyNatives) - * - Qrzysio - * - Jan (aso824) - * - diverpl - */ - -use Carbon\CarbonInterface; - -return [ - 'year' => ':count rok|:count lata|:count lat', - 'a_year' => 'rok|:count lata|:count lat', - 'y' => ':count r|:count l|:count l', - 'month' => ':count miesiąc|:count miesiące|:count miesięcy', - 'a_month' => 'miesiąc|:count miesiące|:count miesięcy', - 'm' => ':count mies.', - 'week' => ':count tydzień|:count tygodnie|:count tygodni', - 'a_week' => 'tydzień|:count tygodnie|:count tygodni', - 'w' => ':count tyg.', - 'day' => ':count dzień|:count dni|:count dni', - 'a_day' => 'dzień|:count dni|:count dni', - 'd' => ':count d', - 'hour' => ':count godzina|:count godziny|:count godzin', - 'a_hour' => 'godzina|:count godziny|:count godzin', - 'h' => ':count godz.', - 'minute' => ':count minuta|:count minuty|:count minut', - 'a_minute' => 'minuta|:count minuty|:count minut', - 'min' => ':count min', - 'second' => ':count sekunda|:count sekundy|:count sekund', - 'a_second' => '{1}kilka sekund|:count sekunda|:count sekundy|:count sekund', - 's' => ':count sek.', - 'ago' => ':time temu', - 'from_now' => static function ($time) { - return 'za '.strtr($time, [ - 'godzina' => 'godzinę', - 'minuta' => 'minutę', - 'sekunda' => 'sekundę', - ]); - }, - 'after' => ':time po', - 'before' => ':time przed', - 'diff_now' => 'teraz', - 'diff_today' => 'Dziś', - 'diff_today_regexp' => 'Dziś(?:\\s+o)?', - 'diff_yesterday' => 'wczoraj', - 'diff_yesterday_regexp' => 'Wczoraj(?:\\s+o)?', - 'diff_tomorrow' => 'jutro', - 'diff_tomorrow_regexp' => 'Jutro(?:\\s+o)?', - 'diff_before_yesterday' => 'przedwczoraj', - 'diff_after_tomorrow' => 'pojutrze', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Dziś o] LT', - 'nextDay' => '[Jutro o] LT', - 'nextWeek' => function (CarbonInterface $date) { - switch ($date->dayOfWeek) { - case 0: - return '[W niedzielę o] LT'; - case 2: - return '[We wtorek o] LT'; - case 3: - return '[W środę o] LT'; - case 6: - return '[W sobotę o] LT'; - default: - return '[W] dddd [o] LT'; - } - }, - 'lastDay' => '[Wczoraj o] LT', - 'lastWeek' => function (CarbonInterface $date) { - switch ($date->dayOfWeek) { - case 0: - return '[W zeszłą niedzielę o] LT'; - case 3: - return '[W zeszłą środę o] LT'; - case 6: - return '[W zeszłą sobotę o] LT'; - default: - return '[W zeszły] dddd [o] LT'; - } - }, - 'sameElse' => 'L', - ], - 'ordinal' => ':number.', - 'months' => ['stycznia', 'lutego', 'marca', 'kwietnia', 'maja', 'czerwca', 'lipca', 'sierpnia', 'września', 'października', 'listopada', 'grudnia'], - 'months_standalone' => ['styczeń', 'luty', 'marzec', 'kwiecień', 'maj', 'czerwiec', 'lipiec', 'sierpień', 'wrzesień', 'październik', 'listopad', 'grudzień'], - 'months_short' => ['sty', 'lut', 'mar', 'kwi', 'maj', 'cze', 'lip', 'sie', 'wrz', 'paź', 'lis', 'gru'], - 'months_regexp' => '/(DD?o?\.?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/', - 'weekdays' => ['niedziela', 'poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota'], - 'weekdays_short' => ['ndz', 'pon', 'wt', 'śr', 'czw', 'pt', 'sob'], - 'weekdays_min' => ['Nd', 'Pn', 'Wt', 'Śr', 'Cz', 'Pt', 'So'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' i '], - 'meridiem' => ['przed południem', 'po południu'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pl_PL.php b/vendor/nesbot/carbon/src/Carbon/Lang/pl_PL.php deleted file mode 100644 index 222bcdb4..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pl_PL.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/pl.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/prg.php b/vendor/nesbot/carbon/src/Carbon/Lang/prg.php deleted file mode 100644 index 6e63f4ad..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/prg.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'months' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], - 'months_short' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY-MM-dd', - 'LL' => 'YYYY MMM D', - 'LLL' => 'YYYY MMMM D HH:mm', - 'LLLL' => 'YYYY MMMM D, dddd HH:mm', - ], - - 'year' => ':count meta', - 'y' => ':count meta', - 'a_year' => ':count meta', - - 'month' => ':count mēniks', // less reliable - 'm' => ':count mēniks', // less reliable - 'a_month' => ':count mēniks', // less reliable - - 'week' => ':count sawaītin', // less reliable - 'w' => ':count sawaītin', // less reliable - 'a_week' => ':count sawaītin', // less reliable - - 'day' => ':count di', - 'd' => ':count di', - 'a_day' => ':count di', - - 'hour' => ':count bruktēt', // less reliable - 'h' => ':count bruktēt', // less reliable - 'a_hour' => ':count bruktēt', // less reliable - - 'minute' => ':count līkuts', // less reliable - 'min' => ':count līkuts', // less reliable - 'a_minute' => ':count līkuts', // less reliable - - 'second' => ':count kitan', // less reliable - 's' => ':count kitan', // less reliable - 'a_second' => ':count kitan', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ps.php b/vendor/nesbot/carbon/src/Carbon/Lang/ps.php deleted file mode 100644 index a928b28e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ps.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Muhammad Nasir Rahimi - * - Nassim Nasibullah (spinzar) - */ -return [ - 'year' => ':count کال|:count کاله', - 'y' => ':countکال|:countکاله', - 'month' => ':count مياشت|:count مياشتي', - 'm' => ':countمياشت|:countمياشتي', - 'week' => ':count اونۍ|:count اونۍ', - 'w' => ':countاونۍ|:countاونۍ', - 'day' => ':count ورځ|:count ورځي', - 'd' => ':countورځ|:countورځي', - 'hour' => ':count ساعت|:count ساعته', - 'h' => ':countساعت|:countساعته', - 'minute' => ':count دقيقه|:count دقيقې', - 'min' => ':countدقيقه|:countدقيقې', - 'second' => ':count ثانيه|:count ثانيې', - 's' => ':countثانيه|:countثانيې', - 'ago' => ':time دمخه', - 'from_now' => ':time له اوس څخه', - 'after' => ':time وروسته', - 'before' => ':time دمخه', - 'list' => ['، ', ' او '], - 'meridiem' => ['غ.م.', 'غ.و.'], - 'weekdays' => ['اتوار', 'ګل', 'نهه', 'شورو', 'زيارت', 'جمعه', 'خالي'], - 'weekdays_short' => ['ا', 'ګ', 'ن', 'ش', 'ز', 'ج', 'خ'], - 'weekdays_min' => ['ا', 'ګ', 'ن', 'ش', 'ز', 'ج', 'خ'], - 'months' => ['جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اگست', 'سېپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'], - 'months_short' => ['جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اگست', 'سېپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'], - 'months_standalone' => ['جنوري', 'فېبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'], - 'months_short_standalone' => ['جنوري', 'فبروري', 'مارچ', 'اپریل', 'مۍ', 'جون', 'جولای', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'], - 'first_day_of_week' => 6, - 'weekend' => [4, 5], - 'formats' => [ - 'LT' => 'H:mm', - 'LTS' => 'H:mm:ss', - 'L' => 'YYYY/M/d', - 'LL' => 'YYYY MMM D', - 'LLL' => 'د YYYY د MMMM D H:mm', - 'LLLL' => 'dddd د YYYY د MMMM D H:mm', - ], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ps_AF.php b/vendor/nesbot/carbon/src/Carbon/Lang/ps_AF.php deleted file mode 100644 index 6ec51804..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ps_AF.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ps.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt.php deleted file mode 100644 index bb6359b1..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pt.php +++ /dev/null @@ -1,116 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Cassiano Montanari - * - Matt Pope - * - François B - * - Prodis - * - JD Isaacks - * - Raphael Amorim - * - João Magalhães - * - victortobias - * - Paulo Freitas - * - Sebastian Thierer - * - Claudson Martins (claudsonm) - */ - -use Carbon\CarbonInterface; - -return [ - 'year' => ':count ano|:count anos', - 'a_year' => 'um ano|:count anos', - 'y' => ':counta', - 'month' => ':count mês|:count meses', - 'a_month' => 'um mês|:count meses', - 'm' => ':countm', - 'week' => ':count semana|:count semanas', - 'a_week' => 'uma semana|:count semanas', - 'w' => ':countsem', - 'day' => ':count dia|:count dias', - 'a_day' => 'um dia|:count dias', - 'd' => ':countd', - 'hour' => ':count hora|:count horas', - 'a_hour' => 'uma hora|:count horas', - 'h' => ':counth', - 'minute' => ':count minuto|:count minutos', - 'a_minute' => 'um minuto|:count minutos', - 'min' => ':countmin', - 'second' => ':count segundo|:count segundos', - 'a_second' => 'alguns segundos|:count segundos', - 's' => ':counts', - 'millisecond' => ':count milissegundo|:count milissegundos', - 'a_millisecond' => 'um milissegundo|:count milissegundos', - 'ms' => ':countms', - 'microsecond' => ':count microssegundo|:count microssegundos', - 'a_microsecond' => 'um microssegundo|:count microssegundos', - 'µs' => ':countµs', - 'ago' => 'há :time', - 'from_now' => 'em :time', - 'after' => ':time depois', - 'before' => ':time antes', - 'diff_now' => 'agora', - 'diff_today' => 'Hoje', - 'diff_today_regexp' => 'Hoje(?:\\s+às)?', - 'diff_yesterday' => 'ontem', - 'diff_yesterday_regexp' => 'Ontem(?:\\s+às)?', - 'diff_tomorrow' => 'amanhã', - 'diff_tomorrow_regexp' => 'Amanhã(?:\\s+às)?', - 'diff_before_yesterday' => 'anteontem', - 'diff_after_tomorrow' => 'depois de amanhã', - 'period_recurrences' => 'uma vez|:count vezes', - 'period_interval' => 'cada :interval', - 'period_start_date' => 'de :date', - 'period_end_date' => 'até :date', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D [de] MMMM [de] YYYY', - 'LLL' => 'D [de] MMMM [de] YYYY HH:mm', - 'LLLL' => 'dddd, D [de] MMMM [de] YYYY HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[Hoje às] LT', - 'nextDay' => '[Amanhã às] LT', - 'nextWeek' => 'dddd [às] LT', - 'lastDay' => '[Ontem às] LT', - 'lastWeek' => function (CarbonInterface $date) { - switch ($date->dayOfWeek) { - case 0: - case 6: - return '[Último] dddd [às] LT'; - default: - return '[Última] dddd [às] LT'; - } - }, - 'sameElse' => 'L', - ], - 'ordinal' => ':numberº', - 'months' => ['janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro'], - 'months_short' => ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez'], - 'weekdays' => ['domingo', 'segunda-feira', 'terça-feira', 'quarta-feira', 'quinta-feira', 'sexta-feira', 'sábado'], - 'weekdays_short' => ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'], - 'weekdays_min' => ['Do', '2ª', '3ª', '4ª', '5ª', '6ª', 'Sá'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' e '], - 'ordinal_words' => [ - 'of' => 'de', - 'first' => 'primeira', - 'second' => 'segunda', - 'third' => 'terceira', - 'fourth' => 'quarta', - 'fifth' => 'quinta', - 'last' => 'última', - ], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_AO.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_AO.php deleted file mode 100644 index 22c01ec5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_AO.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/pt.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_BR.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_BR.php deleted file mode 100644 index e917c5cd..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_BR.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Cassiano Montanari - * - Eduardo Dalla Vecchia - * - David Rodrigues - * - Matt Pope - * - François B - * - Prodis - * - Marlon Maxwel - * - JD Isaacks - * - Raphael Amorim - * - Rafael Raupp - * - felipeleite1 - * - swalker - * - Lucas Macedo - * - Paulo Freitas - * - Sebastian Thierer - */ -return array_replace_recursive(require __DIR__.'/pt.php', [ - 'period_recurrences' => 'uma|:count vez', - 'period_interval' => 'toda :interval', - 'formats' => [ - 'LLL' => 'D [de] MMMM [de] YYYY [às] HH:mm', - 'LLLL' => 'dddd, D [de] MMMM [de] YYYY [às] HH:mm', - ], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_CH.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_CH.php deleted file mode 100644 index 22c01ec5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_CH.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/pt.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_CV.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_CV.php deleted file mode 100644 index 22c01ec5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_CV.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/pt.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_GQ.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_GQ.php deleted file mode 100644 index 22c01ec5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_GQ.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/pt.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_GW.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_GW.php deleted file mode 100644 index 22c01ec5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_GW.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/pt.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_LU.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_LU.php deleted file mode 100644 index 22c01ec5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_LU.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/pt.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_MO.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_MO.php deleted file mode 100644 index f2b5eab7..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_MO.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/pt.php', [ - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'LLL' => 'D [de] MMMM [de] YYYY, h:mm a', - 'LLLL' => 'dddd, D [de] MMMM [de] YYYY, h:mm a', - ], - 'first_day_of_week' => 0, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_MZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_MZ.php deleted file mode 100644 index fbc0c97b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_MZ.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/pt.php', [ - 'first_day_of_week' => 0, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_PT.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_PT.php deleted file mode 100644 index 2a76fc1f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_PT.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RAP bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/pt.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['janeiro', 'fevereiro', 'março', 'abril', 'maio', 'junho', 'julho', 'agosto', 'setembro', 'outubro', 'novembro', 'dezembro'], - 'months_short' => ['jan', 'fev', 'mar', 'abr', 'mai', 'jun', 'jul', 'ago', 'set', 'out', 'nov', 'dez'], - 'weekdays' => ['domingo', 'segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sábado'], - 'weekdays_short' => ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'], - 'weekdays_min' => ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sáb'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_ST.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_ST.php deleted file mode 100644 index 22c01ec5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_ST.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/pt.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/pt_TL.php b/vendor/nesbot/carbon/src/Carbon/Lang/pt_TL.php deleted file mode 100644 index 22c01ec5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/pt_TL.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/pt.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/qu.php b/vendor/nesbot/carbon/src/Carbon/Lang/qu.php deleted file mode 100644 index 65278cd1..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/qu.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/es_UY.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM, YYYY HH:mm', - ], - 'first_day_of_week' => 0, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/qu_BO.php b/vendor/nesbot/carbon/src/Carbon/Lang/qu_BO.php deleted file mode 100644 index d5db6bf5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/qu_BO.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/qu.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/qu_EC.php b/vendor/nesbot/carbon/src/Carbon/Lang/qu_EC.php deleted file mode 100644 index d5db6bf5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/qu_EC.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/qu.php', [ - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/quz.php b/vendor/nesbot/carbon/src/Carbon/Lang/quz.php deleted file mode 100644 index 1640c02f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/quz.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/quz_PE.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/quz_PE.php b/vendor/nesbot/carbon/src/Carbon/Lang/quz_PE.php deleted file mode 100644 index d3229189..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/quz_PE.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Sugar Labs // OLPC sugarlabs.org libc-alpha@sourceware.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['iniru', 'phiwriru', 'marsu', 'awril', 'mayu', 'huniyu', 'huliyu', 'agustu', 'siptiyimri', 'uktuwri', 'nuwiyimri', 'tisiyimri'], - 'months_short' => ['ini', 'phi', 'mar', 'awr', 'may', 'hun', 'hul', 'agu', 'sip', 'ukt', 'nuw', 'tis'], - 'weekdays' => ['tuminku', 'lunis', 'martis', 'miyirkulis', 'juywis', 'wiyirnis', 'sawatu'], - 'weekdays_short' => ['tum', 'lun', 'mar', 'miy', 'juy', 'wiy', 'saw'], - 'weekdays_min' => ['tum', 'lun', 'mar', 'miy', 'juy', 'wiy', 'saw'], - 'day_of_first_week_of_year' => 1, - - 'minute' => ':count uchuy', // less reliable - 'min' => ':count uchuy', // less reliable - 'a_minute' => ':count uchuy', // less reliable - - 'year' => ':count wata', - 'y' => ':count wata', - 'a_year' => ':count wata', - - 'month' => ':count killa', - 'm' => ':count killa', - 'a_month' => ':count killa', - - 'week' => ':count simana', - 'w' => ':count simana', - 'a_week' => ':count simana', - - 'day' => ':count pʼunchaw', - 'd' => ':count pʼunchaw', - 'a_day' => ':count pʼunchaw', - - 'hour' => ':count ura', - 'h' => ':count ura', - 'a_hour' => ':count ura', - - 'second' => ':count iskay ñiqin', - 's' => ':count iskay ñiqin', - 'a_second' => ':count iskay ñiqin', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/raj.php b/vendor/nesbot/carbon/src/Carbon/Lang/raj.php deleted file mode 100644 index 26138c9b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/raj.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/raj_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/raj_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/raj_IN.php deleted file mode 100644 index 7b4589cd..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/raj_IN.php +++ /dev/null @@ -1,47 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - meghrajsuthar03@gmail.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रैल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितंबर', 'अक्टूबर', 'नवंबर', 'दिसंबर'], - 'months_short' => ['जन', 'फर', 'मार्च', 'अप्रै', 'मई', 'जून', 'जुल', 'अग', 'सित', 'अक्टू', 'नव', 'दिस'], - 'weekdays' => ['रविवार', 'सोमवार', 'मंगल्लवार', 'बुधवार', 'बृहस्पतिवार', 'शुक्रवार', 'शनिवार'], - 'weekdays_short' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पति', 'शुक्र', 'शनि'], - 'weekdays_min' => ['रवि', 'सोम', 'मंगल', 'बुध', 'बृहस्पति', 'शुक्र', 'शनि'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['पूर्वाह्न', 'अपराह्न'], - - 'year' => ':count आंहू', // less reliable - 'y' => ':count आंहू', // less reliable - 'a_year' => ':count आंहू', // less reliable - - 'month' => ':count सूरज', // less reliable - 'm' => ':count सूरज', // less reliable - 'a_month' => ':count सूरज', // less reliable - - 'week' => ':count निवाज', // less reliable - 'w' => ':count निवाज', // less reliable - 'a_week' => ':count निवाज', // less reliable - - 'day' => ':count अेक', // less reliable - 'd' => ':count अेक', // less reliable - 'a_day' => ':count अेक', // less reliable - - 'hour' => ':count दुनियांण', // less reliable - 'h' => ':count दुनियांण', // less reliable - 'a_hour' => ':count दुनियांण', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/rm.php b/vendor/nesbot/carbon/src/Carbon/Lang/rm.php deleted file mode 100644 index 1843f456..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/rm.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Philippe Vaucher - * - tjku - * - Max Melentiev - * - Juanito Fatas - * - Tsutomu Kuroda - * - Akira Matsuda - * - Christopher Dell - * - Enrique Vidal - * - Simone Carletti - * - Aaron Patterson - * - Nicolás Hock Isaza - * - sebastian de castelberg - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD.MM.YYYY', - 'LL' => 'Do MMMM YYYY', - 'LLL' => 'Do MMMM, HH:mm [Uhr]', - 'LLLL' => 'dddd, Do MMMM YYYY, HH:mm [Uhr]', - ], - 'year' => ':count onn|:count onns', - 'month' => ':count mais', - 'week' => ':count emna|:count emnas', - 'day' => ':count di|:count dis', - 'hour' => ':count oura|:count ouras', - 'minute' => ':count minuta|:count minutas', - 'second' => ':count secunda|:count secundas', - 'weekdays' => ['dumengia', 'glindesdi', 'mardi', 'mesemna', 'gievgia', 'venderdi', 'sonda'], - 'weekdays_short' => ['du', 'gli', 'ma', 'me', 'gie', 've', 'so'], - 'weekdays_min' => ['du', 'gli', 'ma', 'me', 'gie', 've', 'so'], - 'months' => ['schaner', 'favrer', 'mars', 'avrigl', 'matg', 'zercladur', 'fanadur', 'avust', 'settember', 'october', 'november', 'december'], - 'months_short' => ['schan', 'favr', 'mars', 'avr', 'matg', 'zercl', 'fan', 'avust', 'sett', 'oct', 'nov', 'dec'], - 'meridiem' => ['avantmezdi', 'suentermezdi'], - 'list' => [', ', ' e '], - 'first_day_of_week' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/rn.php b/vendor/nesbot/carbon/src/Carbon/Lang/rn.php deleted file mode 100644 index 8ab958eb..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/rn.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['Z.MU.', 'Z.MW.'], - 'weekdays' => ['Ku w’indwi', 'Ku wa mbere', 'Ku wa kabiri', 'Ku wa gatatu', 'Ku wa kane', 'Ku wa gatanu', 'Ku wa gatandatu'], - 'weekdays_short' => ['cu.', 'mbe.', 'kab.', 'gtu.', 'kan.', 'gnu.', 'gnd.'], - 'weekdays_min' => ['cu.', 'mbe.', 'kab.', 'gtu.', 'kan.', 'gnu.', 'gnd.'], - 'months' => ['Nzero', 'Ruhuhuma', 'Ntwarante', 'Ndamukiza', 'Rusama', 'Ruheshi', 'Mukakaro', 'Nyandagaro', 'Nyakanga', 'Gitugutu', 'Munyonyo', 'Kigarama'], - 'months_short' => ['Mut.', 'Gas.', 'Wer.', 'Mat.', 'Gic.', 'Kam.', 'Nya.', 'Kan.', 'Nze.', 'Ukw.', 'Ugu.', 'Uku.'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - - 'year' => 'imyaka :count', - 'y' => 'imyaka :count', - 'a_year' => 'imyaka :count', - - 'month' => 'amezi :count', - 'm' => 'amezi :count', - 'a_month' => 'amezi :count', - - 'week' => 'indwi :count', - 'w' => 'indwi :count', - 'a_week' => 'indwi :count', - - 'day' => 'imisi :count', - 'd' => 'imisi :count', - 'a_day' => 'imisi :count', - - 'hour' => 'amasaha :count', - 'h' => 'amasaha :count', - 'a_hour' => 'amasaha :count', - - 'minute' => 'iminuta :count', - 'min' => 'iminuta :count', - 'a_minute' => 'iminuta :count', - - 'second' => 'inguvu :count', // less reliable - 's' => 'inguvu :count', // less reliable - 'a_second' => 'inguvu :count', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ro.php b/vendor/nesbot/carbon/src/Carbon/Lang/ro.php deleted file mode 100644 index 868a3279..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ro.php +++ /dev/null @@ -1,77 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - JD Isaacks - * - Cătălin Georgescu - * - Valentin Ivaşcu (oriceon) - */ -return [ - 'year' => ':count an|:count ani|:count ani', - 'a_year' => 'un an|:count ani|:count ani', - 'y' => ':count a.', - 'month' => ':count lună|:count luni|:count luni', - 'a_month' => 'o lună|:count luni|:count luni', - 'm' => ':count l.', - 'week' => ':count săptămână|:count săptămâni|:count săptămâni', - 'a_week' => 'o săptămână|:count săptămâni|:count săptămâni', - 'w' => ':count săp.', - 'day' => ':count zi|:count zile|:count zile', - 'a_day' => 'o zi|:count zile|:count zile', - 'd' => ':count z.', - 'hour' => ':count oră|:count ore|:count ore', - 'a_hour' => 'o oră|:count ore|:count ore', - 'h' => ':count o.', - 'minute' => ':count minut|:count minute|:count minute', - 'a_minute' => 'un minut|:count minute|:count minute', - 'min' => ':count m.', - 'second' => ':count secundă|:count secunde|:count secunde', - 'a_second' => 'câteva secunde|:count secunde|:count secunde', - 's' => ':count sec.', - 'ago' => ':time în urmă', - 'from_now' => 'peste :time', - 'after' => 'peste :time', - 'before' => 'acum :time', - 'diff_now' => 'acum', - 'diff_today' => 'azi', - 'diff_today_regexp' => 'azi(?:\\s+la)?', - 'diff_yesterday' => 'ieri', - 'diff_yesterday_regexp' => 'ieri(?:\\s+la)?', - 'diff_tomorrow' => 'mâine', - 'diff_tomorrow_regexp' => 'mâine(?:\\s+la)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[azi la] LT', - 'nextDay' => '[mâine la] LT', - 'nextWeek' => 'dddd [la] LT', - 'lastDay' => '[ieri la] LT', - 'lastWeek' => '[fosta] dddd [la] LT', - 'sameElse' => 'L', - ], - 'months' => ['ianuarie', 'februarie', 'martie', 'aprilie', 'mai', 'iunie', 'iulie', 'august', 'septembrie', 'octombrie', 'noiembrie', 'decembrie'], - 'months_short' => ['ian.', 'feb.', 'mar.', 'apr.', 'mai', 'iun.', 'iul.', 'aug.', 'sept.', 'oct.', 'nov.', 'dec.'], - 'weekdays' => ['duminică', 'luni', 'marți', 'miercuri', 'joi', 'vineri', 'sâmbătă'], - 'weekdays_short' => ['dum', 'lun', 'mar', 'mie', 'joi', 'vin', 'sâm'], - 'weekdays_min' => ['du', 'lu', 'ma', 'mi', 'jo', 'vi', 'sâ'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' și '], - 'meridiem' => ['a.m.', 'p.m.'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ro_MD.php b/vendor/nesbot/carbon/src/Carbon/Lang/ro_MD.php deleted file mode 100644 index ad1d2fa8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ro_MD.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ro.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD.MM.YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY, HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY, HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ro_RO.php b/vendor/nesbot/carbon/src/Carbon/Lang/ro_RO.php deleted file mode 100644 index 102afcde..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ro_RO.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ro.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/rof.php b/vendor/nesbot/carbon/src/Carbon/Lang/rof.php deleted file mode 100644 index 205fc266..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/rof.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['kang’ama', 'kingoto'], - 'weekdays' => ['Ijumapili', 'Ijumatatu', 'Ijumanne', 'Ijumatano', 'Alhamisi', 'Ijumaa', 'Ijumamosi'], - 'weekdays_short' => ['Ijp', 'Ijt', 'Ijn', 'Ijtn', 'Alh', 'Iju', 'Ijm'], - 'weekdays_min' => ['Ijp', 'Ijt', 'Ijn', 'Ijtn', 'Alh', 'Iju', 'Ijm'], - 'months' => ['Mweri wa kwanza', 'Mweri wa kaili', 'Mweri wa katatu', 'Mweri wa kaana', 'Mweri wa tanu', 'Mweri wa sita', 'Mweri wa saba', 'Mweri wa nane', 'Mweri wa tisa', 'Mweri wa ikumi', 'Mweri wa ikumi na moja', 'Mweri wa ikumi na mbili'], - 'months_short' => ['M1', 'M2', 'M3', 'M4', 'M5', 'M6', 'M7', 'M8', 'M9', 'M10', 'M11', 'M12'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ru.php b/vendor/nesbot/carbon/src/Carbon/Lang/ru.php deleted file mode 100644 index 673b043b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ru.php +++ /dev/null @@ -1,191 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Bari Badamshin - * - Jørn Ølmheim - * - François B - * - Tim Fish - * - Коренберг Марк (imac) - * - Serhan Apaydın - * - RomeroMsk - * - vsn4ik - * - JD Isaacks - * - Bari Badamshin - * - Jørn Ølmheim - * - François B - * - Коренберг Марк (imac) - * - Serhan Apaydın - * - RomeroMsk - * - vsn4ik - * - JD Isaacks - * - Fellzo - * - andrey-helldar - * - Pavel Skripkin (psxx) - * - AlexWalkerson - * - Vladislav UnsealedOne - * - dima-bzz - */ - -use Carbon\CarbonInterface; - -$transformDiff = function ($input) { - return strtr($input, [ - 'неделя' => 'неделю', - 'секунда' => 'секунду', - 'минута' => 'минуту', - ]); -}; - -return [ - 'year' => ':count год|:count года|:count лет', - 'y' => ':count г.|:count г.|:count л.', - 'a_year' => '{1}год|:count год|:count года|:count лет', - 'month' => ':count месяц|:count месяца|:count месяцев', - 'm' => ':count мес.', - 'a_month' => '{1}месяц|:count месяц|:count месяца|:count месяцев', - 'week' => ':count неделя|:count недели|:count недель', - 'w' => ':count нед.', - 'a_week' => '{1}неделя|:count неделю|:count недели|:count недель', - 'day' => ':count день|:count дня|:count дней', - 'd' => ':count д.', - 'a_day' => '{1}день|:count день|:count дня|:count дней', - 'hour' => ':count час|:count часа|:count часов', - 'h' => ':count ч.', - 'a_hour' => '{1}час|:count час|:count часа|:count часов', - 'minute' => ':count минута|:count минуты|:count минут', - 'min' => ':count мин.', - 'a_minute' => '{1}минута|:count минута|:count минуты|:count минут', - 'second' => ':count секунда|:count секунды|:count секунд', - 's' => ':count сек.', - 'a_second' => '{1}несколько секунд|:count секунду|:count секунды|:count секунд', - 'ago' => function ($time) use ($transformDiff) { - return $transformDiff($time).' назад'; - }, - 'from_now' => function ($time) use ($transformDiff) { - return 'через '.$transformDiff($time); - }, - 'after' => function ($time) use ($transformDiff) { - return $transformDiff($time).' после'; - }, - 'before' => function ($time) use ($transformDiff) { - return $transformDiff($time).' до'; - }, - 'diff_now' => 'только что', - 'diff_today' => 'Сегодня,', - 'diff_today_regexp' => 'Сегодня,?(?:\\s+в)?', - 'diff_yesterday' => 'вчера', - 'diff_yesterday_regexp' => 'Вчера,?(?:\\s+в)?', - 'diff_tomorrow' => 'завтра', - 'diff_tomorrow_regexp' => 'Завтра,?(?:\\s+в)?', - 'diff_before_yesterday' => 'позавчера', - 'diff_after_tomorrow' => 'послезавтра', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Сегодня, в] LT', - 'nextDay' => '[Завтра, в] LT', - 'nextWeek' => function (CarbonInterface $current, CarbonInterface $other) { - if ($current->week !== $other->week) { - switch ($current->dayOfWeek) { - case 0: - return '[В следующее] dddd, [в] LT'; - case 1: - case 2: - case 4: - return '[В следующий] dddd, [в] LT'; - case 3: - case 5: - case 6: - return '[В следующую] dddd, [в] LT'; - } - } - - if ($current->dayOfWeek === 2) { - return '[Во] dddd, [в] LT'; - } - - return '[В] dddd, [в] LT'; - }, - 'lastDay' => '[Вчера, в] LT', - 'lastWeek' => function (CarbonInterface $current, CarbonInterface $other) { - if ($current->week !== $other->week) { - switch ($current->dayOfWeek) { - case 0: - return '[В прошлое] dddd, [в] LT'; - case 1: - case 2: - case 4: - return '[В прошлый] dddd, [в] LT'; - case 3: - case 5: - case 6: - return '[В прошлую] dddd, [в] LT'; - } - } - - if ($current->dayOfWeek === 2) { - return '[Во] dddd, [в] LT'; - } - - return '[В] dddd, [в] LT'; - }, - 'sameElse' => 'L', - ], - 'ordinal' => function ($number, $period) { - switch ($period) { - case 'M': - case 'd': - case 'DDD': - return $number.'-й'; - case 'D': - return $number.'-го'; - case 'w': - case 'W': - return $number.'-я'; - default: - return $number; - } - }, - 'meridiem' => function ($hour) { - if ($hour < 4) { - return 'ночи'; - } - if ($hour < 12) { - return 'утра'; - } - if ($hour < 17) { - return 'дня'; - } - - return 'вечера'; - }, - 'months' => ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'], - 'months_standalone' => ['январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь'], - 'months_short' => ['янв', 'фев', 'мар', 'апр', 'мая', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'], - 'months_short_standalone' => ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'], - 'months_regexp' => '/(DD?o?\.?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/', - 'weekdays' => ['воскресенье', 'понедельник', 'вторник', 'среду', 'четверг', 'пятницу', 'субботу'], - 'weekdays_standalone' => ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - 'weekdays_short' => ['вск', 'пнд', 'втр', 'срд', 'чтв', 'птн', 'сбт'], - 'weekdays_min' => ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - 'weekdays_regexp' => '/\[\s*(В|в)\s*((?:прошлую|следующую|эту)\s*)?\]\s*dddd/', - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' и '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ru_BY.php b/vendor/nesbot/carbon/src/Carbon/Lang/ru_BY.php deleted file mode 100644 index 8ca7df34..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ru_BY.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ru.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ru_KG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ru_KG.php deleted file mode 100644 index 8ca7df34..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ru_KG.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ru.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ru_KZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/ru_KZ.php deleted file mode 100644 index 8ca7df34..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ru_KZ.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ru.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ru_MD.php b/vendor/nesbot/carbon/src/Carbon/Lang/ru_MD.php deleted file mode 100644 index 8ca7df34..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ru_MD.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ru.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ru_RU.php b/vendor/nesbot/carbon/src/Carbon/Lang/ru_RU.php deleted file mode 100644 index 8ca7df34..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ru_RU.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ru.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ru_UA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ru_UA.php deleted file mode 100644 index db958d68..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ru_UA.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - RFC 2319 bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/ru.php', [ - 'weekdays' => ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота'], - 'weekdays_short' => ['вск', 'пнд', 'вто', 'срд', 'чтв', 'птн', 'суб'], - 'weekdays_min' => ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'су'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/rw.php b/vendor/nesbot/carbon/src/Carbon/Lang/rw.php deleted file mode 100644 index bc4a347f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/rw.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/rw_RW.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/rw_RW.php b/vendor/nesbot/carbon/src/Carbon/Lang/rw_RW.php deleted file mode 100644 index 9b3e0682..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/rw_RW.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Rwanda Steve Murphy murf@e-tools.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], - 'months' => ['Mutarama', 'Gashyantare', 'Werurwe', 'Mata', 'Gicuransi', 'Kamena', 'Nyakanga', 'Kanama', 'Nzeli', 'Ukwakira', 'Ugushyingo', 'Ukuboza'], - 'months_short' => ['Mut', 'Gas', 'Wer', 'Mat', 'Gic', 'Kam', 'Nya', 'Kan', 'Nze', 'Ukw', 'Ugu', 'Uku'], - 'weekdays' => ['Ku cyumweru', 'Kuwa mbere', 'Kuwa kabiri', 'Kuwa gatatu', 'Kuwa kane', 'Kuwa gatanu', 'Kuwa gatandatu'], - 'weekdays_short' => ['Mwe', 'Mbe', 'Kab', 'Gtu', 'Kan', 'Gnu', 'Gnd'], - 'weekdays_min' => ['Mwe', 'Mbe', 'Kab', 'Gtu', 'Kan', 'Gnu', 'Gnd'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - - 'second' => ':count vuna', // less reliable - 's' => ':count vuna', // less reliable - 'a_second' => ':count vuna', // less reliable - - 'year' => 'aka :count', - 'y' => 'aka :count', - 'a_year' => 'aka :count', - - 'month' => 'ezi :count', - 'm' => 'ezi :count', - 'a_month' => 'ezi :count', - - 'week' => ':count icyumweru', - 'w' => ':count icyumweru', - 'a_week' => ':count icyumweru', - - 'day' => ':count nsi', - 'd' => ':count nsi', - 'a_day' => ':count nsi', - - 'hour' => 'saha :count', - 'h' => 'saha :count', - 'a_hour' => 'saha :count', - - 'minute' => ':count -nzinya', - 'min' => ':count -nzinya', - 'a_minute' => ':count -nzinya', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/rwk.php b/vendor/nesbot/carbon/src/Carbon/Lang/rwk.php deleted file mode 100644 index ed92e8e7..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/rwk.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['utuko', 'kyiukonyi'], - 'weekdays' => ['Jumapilyi', 'Jumatatuu', 'Jumanne', 'Jumatanu', 'Alhamisi', 'Ijumaa', 'Jumamosi'], - 'weekdays_short' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - 'weekdays_min' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - 'months' => ['Januari', 'Februari', 'Machi', 'Aprilyi', 'Mei', 'Junyi', 'Julyai', 'Agusti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'], - 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sa.php b/vendor/nesbot/carbon/src/Carbon/Lang/sa.php deleted file mode 100644 index 1357c030..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sa.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/sa_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sa_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/sa_IN.php deleted file mode 100644 index cfda9a63..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sa_IN.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - The Debian project Christian Perrier bubulle@debian.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'D-MM-YY', - ], - 'months' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'], - 'months_short' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'], - 'weekdays' => ['रविवासर:', 'सोमवासर:', 'मंगलवासर:', 'बुधवासर:', 'बृहस्पतिवासरः', 'शुक्रवासर', 'शनिवासर:'], - 'weekdays_short' => ['रविः', 'सोम:', 'मंगल:', 'बुध:', 'बृहस्पतिः', 'शुक्र', 'शनि:'], - 'weekdays_min' => ['रविः', 'सोम:', 'मंगल:', 'बुध:', 'बृहस्पतिः', 'शुक्र', 'शनि:'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['पूर्वाह्न', 'अपराह्न'], - - 'minute' => ':count होरा', // less reliable - 'min' => ':count होरा', // less reliable - 'a_minute' => ':count होरा', // less reliable - - 'year' => ':count वर्ष', - 'y' => ':count वर्ष', - 'a_year' => ':count वर्ष', - - 'month' => ':count मास', - 'm' => ':count मास', - 'a_month' => ':count मास', - - 'week' => ':count सप्ताहः saptahaĥ', - 'w' => ':count सप्ताहः saptahaĥ', - 'a_week' => ':count सप्ताहः saptahaĥ', - - 'day' => ':count दिन', - 'd' => ':count दिन', - 'a_day' => ':count दिन', - - 'hour' => ':count घण्टा', - 'h' => ':count घण्टा', - 'a_hour' => ':count घण्टा', - - 'second' => ':count द्वितीयः', - 's' => ':count द्वितीयः', - 'a_second' => ':count द्वितीयः', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sah.php b/vendor/nesbot/carbon/src/Carbon/Lang/sah.php deleted file mode 100644 index b8288242..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sah.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/sah_RU.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sah_RU.php b/vendor/nesbot/carbon/src/Carbon/Lang/sah_RU.php deleted file mode 100644 index 94cc0cb0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sah_RU.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Valery Timiriliyev Valery Timiriliyev timiriliyev@gmail.com - */ -return array_replace_recursive(require __DIR__.'/ru.php', [ - 'formats' => [ - 'L' => 'YYYY.MM.DD', - ], - 'months' => ['тохсунньу', 'олунньу', 'кулун тутар', 'муус устар', 'ыам ыйын', 'бэс ыйын', 'от ыйын', 'атырдьах ыйын', 'балаҕан ыйын', 'алтынньы', 'сэтинньи', 'ахсынньы'], - 'months_short' => ['тохс', 'олун', 'кул', 'муус', 'ыам', 'бэс', 'от', 'атыр', 'бал', 'алт', 'сэт', 'ахс'], - 'weekdays' => ['баскыһыанньа', 'бэнидиэнньик', 'оптуорунньук', 'сэрэдэ', 'чэппиэр', 'бээтинсэ', 'субуота'], - 'weekdays_short' => ['бс', 'бн', 'оп', 'ср', 'чп', 'бт', 'сб'], - 'weekdays_min' => ['бс', 'бн', 'оп', 'ср', 'чп', 'бт', 'сб'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/saq.php b/vendor/nesbot/carbon/src/Carbon/Lang/saq.php deleted file mode 100644 index ff8bf604..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/saq.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['Tesiran', 'Teipa'], - 'weekdays' => ['Mderot ee are', 'Mderot ee kuni', 'Mderot ee ong’wan', 'Mderot ee inet', 'Mderot ee ile', 'Mderot ee sapa', 'Mderot ee kwe'], - 'weekdays_short' => ['Are', 'Kun', 'Ong', 'Ine', 'Ile', 'Sap', 'Kwe'], - 'weekdays_min' => ['Are', 'Kun', 'Ong', 'Ine', 'Ile', 'Sap', 'Kwe'], - 'months' => ['Lapa le obo', 'Lapa le waare', 'Lapa le okuni', 'Lapa le ong’wan', 'Lapa le imet', 'Lapa le ile', 'Lapa le sapa', 'Lapa le isiet', 'Lapa le saal', 'Lapa le tomon', 'Lapa le tomon obo', 'Lapa le tomon waare'], - 'months_short' => ['Obo', 'Waa', 'Oku', 'Ong', 'Ime', 'Ile', 'Sap', 'Isi', 'Saa', 'Tom', 'Tob', 'Tow'], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sat.php b/vendor/nesbot/carbon/src/Carbon/Lang/sat.php deleted file mode 100644 index c9914c66..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sat.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/sat_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sat_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/sat_IN.php deleted file mode 100644 index 632b1af6..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sat_IN.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Red Hat Pune libc-alpha@sourceware.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रेल', 'मई', 'जुन', 'जुलाई', 'अगस्त', 'सितम्बर', 'अखथबर', 'नवम्बर', 'दिसम्बर'], - 'months_short' => ['जनवरी', 'फरवरी', 'मार्च', 'अप्रेल', 'मई', 'जुन', 'जुलाई', 'अगस्त', 'सितम्बर', 'अखथबर', 'नवम्बर', 'दिसम्बर'], - 'weekdays' => ['सिंगेमाँहाँ', 'ओतेमाँहाँ', 'बालेमाँहाँ', 'सागुनमाँहाँ', 'सारदीमाँहाँ', 'जारुममाँहाँ', 'ञुहुममाँहाँ'], - 'weekdays_short' => ['सिंगे', 'ओते', 'बाले', 'सागुन', 'सारदी', 'जारुम', 'ञुहुम'], - 'weekdays_min' => ['सिंगे', 'ओते', 'बाले', 'सागुन', 'सारदी', 'जारुम', 'ञुहुम'], - 'day_of_first_week_of_year' => 1, - - 'month' => ':count ńindạ cando', // less reliable - 'm' => ':count ńindạ cando', // less reliable - 'a_month' => ':count ńindạ cando', // less reliable - - 'week' => ':count mãhã', // less reliable - 'w' => ':count mãhã', // less reliable - 'a_week' => ':count mãhã', // less reliable - - 'hour' => ':count ᱥᱳᱱᱚ', // less reliable - 'h' => ':count ᱥᱳᱱᱚ', // less reliable - 'a_hour' => ':count ᱥᱳᱱᱚ', // less reliable - - 'minute' => ':count ᱯᱤᱞᱪᱩ', // less reliable - 'min' => ':count ᱯᱤᱞᱪᱩ', // less reliable - 'a_minute' => ':count ᱯᱤᱞᱪᱩ', // less reliable - - 'second' => ':count ar', // less reliable - 's' => ':count ar', // less reliable - 'a_second' => ':count ar', // less reliable - - 'year' => ':count ne̲s', - 'y' => ':count ne̲s', - 'a_year' => ':count ne̲s', - - 'day' => ':count ᱫᱤᱱ', - 'd' => ':count ᱫᱤᱱ', - 'a_day' => ':count ᱫᱤᱱ', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sbp.php b/vendor/nesbot/carbon/src/Carbon/Lang/sbp.php deleted file mode 100644 index e29ca379..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sbp.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['Lwamilawu', 'Pashamihe'], - 'weekdays' => ['Mulungu', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alahamisi', 'Ijumaa', 'Jumamosi'], - 'weekdays_short' => ['Mul', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - 'weekdays_min' => ['Mul', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - 'months' => ['Mupalangulwa', 'Mwitope', 'Mushende', 'Munyi', 'Mushende Magali', 'Mujimbi', 'Mushipepo', 'Mupuguto', 'Munyense', 'Mokhu', 'Musongandembwe', 'Muhaano'], - 'months_short' => ['Mup', 'Mwi', 'Msh', 'Mun', 'Mag', 'Muj', 'Msp', 'Mpg', 'Mye', 'Mok', 'Mus', 'Muh'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sc.php b/vendor/nesbot/carbon/src/Carbon/Lang/sc.php deleted file mode 100644 index 7178cf4f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sc.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/sc_IT.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sc_IT.php b/vendor/nesbot/carbon/src/Carbon/Lang/sc_IT.php deleted file mode 100644 index 5d1e4cec..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sc_IT.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Sardinian Translators Team Massimeddu Cireddu massimeddu@gmail.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD. MM. YY', - ], - 'months' => ['Ghennàrgiu', 'Freàrgiu', 'Martzu', 'Abrile', 'Maju', 'Làmpadas', 'Argiolas//Trìulas', 'Austu', 'Cabudanni', 'Santugaine//Ladàmine', 'Onniasantu//Santandria', 'Nadale//Idas'], - 'months_short' => ['Ghe', 'Fre', 'Mar', 'Abr', 'Maj', 'Làm', 'Arg', 'Aus', 'Cab', 'Lad', 'Onn', 'Nad'], - 'weekdays' => ['Domìnigu', 'Lunis', 'Martis', 'Mèrcuris', 'Giòbia', 'Chenàbura', 'Sàbadu'], - 'weekdays_short' => ['Dom', 'Lun', 'Mar', 'Mèr', 'Giò', 'Che', 'Sàb'], - 'weekdays_min' => ['Dom', 'Lun', 'Mar', 'Mèr', 'Giò', 'Che', 'Sàb'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - - 'minute' => ':count mementu', // less reliable - 'min' => ':count mementu', // less reliable - 'a_minute' => ':count mementu', // less reliable - - 'year' => ':count annu', - 'y' => ':count annu', - 'a_year' => ':count annu', - - 'month' => ':count mese', - 'm' => ':count mese', - 'a_month' => ':count mese', - - 'week' => ':count chida', - 'w' => ':count chida', - 'a_week' => ':count chida', - - 'day' => ':count dí', - 'd' => ':count dí', - 'a_day' => ':count dí', - - 'hour' => ':count ora', - 'h' => ':count ora', - 'a_hour' => ':count ora', - - 'second' => ':count secundu', - 's' => ':count secundu', - 'a_second' => ':count secundu', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sd.php b/vendor/nesbot/carbon/src/Carbon/Lang/sd.php deleted file mode 100644 index 0022c5a9..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sd.php +++ /dev/null @@ -1,81 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -$months = [ - 'جنوري', - 'فيبروري', - 'مارچ', - 'اپريل', - 'مئي', - 'جون', - 'جولاءِ', - 'آگسٽ', - 'سيپٽمبر', - 'آڪٽوبر', - 'نومبر', - 'ڊسمبر', -]; - -$weekdays = [ - 'آچر', - 'سومر', - 'اڱارو', - 'اربع', - 'خميس', - 'جمع', - 'ڇنڇر', -]; - -/* - * Authors: - * - Narain Sagar - * - Sawood Alam - * - Narain Sagar - */ -return [ - 'year' => '{1}'.'هڪ سال'.'|:count '.'سال', - 'month' => '{1}'.'هڪ مهينو'.'|:count '.'مهينا', - 'week' => '{1}'.'ھڪ ھفتو'.'|:count '.'هفتا', - 'day' => '{1}'.'هڪ ڏينهن'.'|:count '.'ڏينهن', - 'hour' => '{1}'.'هڪ ڪلاڪ'.'|:count '.'ڪلاڪ', - 'minute' => '{1}'.'هڪ منٽ'.'|:count '.'منٽ', - 'second' => '{1}'.'چند سيڪنڊ'.'|:count '.'سيڪنڊ', - 'ago' => ':time اڳ', - 'from_now' => ':time پوء', - 'diff_yesterday' => 'ڪالهه', - 'diff_today' => 'اڄ', - 'diff_tomorrow' => 'سڀاڻي', - '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', - ], - 'calendar' => [ - 'sameDay' => '[اڄ] LT', - 'nextDay' => '[سڀاڻي] LT', - 'nextWeek' => 'dddd [اڳين هفتي تي] LT', - 'lastDay' => '[ڪالهه] LT', - 'lastWeek' => '[گزريل هفتي] dddd [تي] LT', - 'sameElse' => 'L', - ], - 'meridiem' => ['صبح', 'شام'], - 'months' => $months, - 'months_short' => $months, - 'weekdays' => $weekdays, - 'weekdays_short' => $weekdays, - 'weekdays_min' => $weekdays, - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => ['، ', ' ۽ '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN.php deleted file mode 100644 index de1dad05..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Red Hat, Pune bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/sd.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['جنوري', 'فبروري', 'مارچ', 'اپريل', 'مي', 'جون', 'جولاءِ', 'آگسٽ', 'سيپٽيمبر', 'آڪٽوبر', 'نومبر', 'ڊسمبر'], - 'months_short' => ['جنوري', 'فبروري', 'مارچ', 'اپريل', 'مي', 'جون', 'جولاءِ', 'آگسٽ', 'سيپٽيمبر', 'آڪٽوبر', 'نومبر', 'ڊسمبر'], - 'weekdays' => ['آرتوارُ', 'سومرُ', 'منگلُ', 'ٻُڌرُ', 'وسپت', 'جُمو', 'ڇنڇر'], - 'weekdays_short' => ['آرتوارُ', 'سومرُ', 'منگلُ', 'ٻُڌرُ', 'وسپت', 'جُمو', 'ڇنڇر'], - 'weekdays_min' => ['آرتوارُ', 'سومرُ', 'منگلُ', 'ٻُڌرُ', 'وسپت', 'جُمو', 'ڇنڇر'], - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN@devanagari.php b/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN@devanagari.php deleted file mode 100644 index 061fcc16..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sd_IN@devanagari.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Red Hat, Pune bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/sd.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['जनवरी', 'फबरवरी', 'मार्चि', 'अप्रेल', 'मे', 'जूनि', 'जूलाइ', 'आगस्टु', 'सेप्टेंबरू', 'आक्टूबरू', 'नवंबरू', 'ॾिसंबरू'], - 'months_short' => ['जनवरी', 'फबरवरी', 'मार्चि', 'अप्रेल', 'मे', 'जूनि', 'जूलाइ', 'आगस्टु', 'सेप्टेंबरू', 'आक्टूबरू', 'नवंबरू', 'ॾिसंबरू'], - 'weekdays' => ['आर्तवारू', 'सूमरू', 'मंगलू', 'ॿुधरू', 'विस्पति', 'जुमो', 'छंछस'], - 'weekdays_short' => ['आर्तवारू', 'सूमरू', 'मंगलू', 'ॿुधरू', 'विस्पति', 'जुमो', 'छंछस'], - 'weekdays_min' => ['आर्तवारू', 'सूमरू', 'मंगलू', 'ॿुधरू', 'विस्पति', 'जुमो', 'छंछस'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['म.पू.', 'म.नं.'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/se.php b/vendor/nesbot/carbon/src/Carbon/Lang/se.php deleted file mode 100644 index 7c4b92a5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/se.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - Karamell - */ -return [ - 'year' => '{1}:count jahki|:count jagit', - 'a_year' => '{1}okta jahki|:count jagit', - 'y' => ':count j.', - 'month' => '{1}:count mánnu|:count mánut', - 'a_month' => '{1}okta mánnu|:count mánut', - 'm' => ':count mán.', - 'week' => '{1}:count vahkku|:count vahkku', - 'a_week' => '{1}okta vahkku|:count vahkku', - 'w' => ':count v.', - 'day' => '{1}:count beaivi|:count beaivvit', - 'a_day' => '{1}okta beaivi|:count beaivvit', - 'd' => ':count b.', - 'hour' => '{1}:count diimmu|:count diimmut', - 'a_hour' => '{1}okta diimmu|:count diimmut', - 'h' => ':count d.', - 'minute' => '{1}:count minuhta|:count minuhtat', - 'a_minute' => '{1}okta minuhta|:count minuhtat', - 'min' => ':count min.', - 'second' => '{1}:count sekunddat|:count sekunddat', - 'a_second' => '{1}moadde sekunddat|:count sekunddat', - 's' => ':count s.', - 'ago' => 'maŋit :time', - 'from_now' => ':time geažes', - 'diff_yesterday' => 'ikte', - 'diff_yesterday_regexp' => 'ikte(?:\\s+ti)?', - 'diff_today' => 'otne', - 'diff_today_regexp' => 'otne(?:\\s+ti)?', - 'diff_tomorrow' => 'ihttin', - 'diff_tomorrow_regexp' => 'ihttin(?:\\s+ti)?', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD.MM.YYYY', - 'LL' => 'MMMM D. [b.] YYYY', - 'LLL' => 'MMMM D. [b.] YYYY [ti.] HH:mm', - 'LLLL' => 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[otne ti] LT', - 'nextDay' => '[ihttin ti] LT', - 'nextWeek' => 'dddd [ti] LT', - 'lastDay' => '[ikte ti] LT', - 'lastWeek' => '[ovddit] dddd [ti] LT', - 'sameElse' => 'L', - ], - 'ordinal' => ':number.', - 'months' => ['ođđajagemánnu', 'guovvamánnu', 'njukčamánnu', 'cuoŋománnu', 'miessemánnu', 'geassemánnu', 'suoidnemánnu', 'borgemánnu', 'čakčamánnu', 'golggotmánnu', 'skábmamánnu', 'juovlamánnu'], - 'months_short' => ['ođđj', 'guov', 'njuk', 'cuo', 'mies', 'geas', 'suoi', 'borg', 'čakč', 'golg', 'skáb', 'juov'], - 'weekdays' => ['sotnabeaivi', 'vuossárga', 'maŋŋebárga', 'gaskavahkku', 'duorastat', 'bearjadat', 'lávvardat'], - 'weekdays_short' => ['sotn', 'vuos', 'maŋ', 'gask', 'duor', 'bear', 'láv'], - 'weekdays_min' => ['s', 'v', 'm', 'g', 'd', 'b', 'L'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' ja '], - 'meridiem' => ['i.b.', 'e.b.'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/se_FI.php b/vendor/nesbot/carbon/src/Carbon/Lang/se_FI.php deleted file mode 100644 index cf01805d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/se_FI.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/se.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD.MM.YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - 'months' => ['ođđajagemánnu', 'guovvamánnu', 'njukčamánnu', 'cuoŋománnu', 'miessemánnu', 'geassemánnu', 'suoidnemánnu', 'borgemánnu', 'čakčamánnu', 'golggotmánnu', 'skábmamánnu', 'juovlamánnu'], - 'months_short' => ['ođđj', 'guov', 'njuk', 'cuoŋ', 'mies', 'geas', 'suoi', 'borg', 'čakč', 'golg', 'skáb', 'juov'], - 'weekdays' => ['sotnabeaivi', 'mánnodat', 'disdat', 'gaskavahkku', 'duorastat', 'bearjadat', 'lávvordat'], - 'weekdays_short' => ['so', 'má', 'di', 'ga', 'du', 'be', 'lá'], - 'weekdays_min' => ['so', 'má', 'di', 'ga', 'du', 'be', 'lá'], - 'meridiem' => ['i', 'e'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/se_NO.php b/vendor/nesbot/carbon/src/Carbon/Lang/se_NO.php deleted file mode 100644 index 177c7e94..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/se_NO.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/se.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/se_SE.php b/vendor/nesbot/carbon/src/Carbon/Lang/se_SE.php deleted file mode 100644 index 177c7e94..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/se_SE.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/se.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/seh.php b/vendor/nesbot/carbon/src/Carbon/Lang/seh.php deleted file mode 100644 index babf9afb..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/seh.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'weekdays' => ['Dimingu', 'Chiposi', 'Chipiri', 'Chitatu', 'Chinai', 'Chishanu', 'Sabudu'], - 'weekdays_short' => ['Dim', 'Pos', 'Pir', 'Tat', 'Nai', 'Sha', 'Sab'], - 'weekdays_min' => ['Dim', 'Pos', 'Pir', 'Tat', 'Nai', 'Sha', 'Sab'], - 'months' => ['Janeiro', 'Fevreiro', 'Marco', 'Abril', 'Maio', 'Junho', 'Julho', 'Augusto', 'Setembro', 'Otubro', 'Novembro', 'Decembro'], - 'months_short' => ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Aug', 'Set', 'Otu', 'Nov', 'Dec'], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'd [de] MMM [de] YYYY', - 'LLL' => 'd [de] MMMM [de] YYYY HH:mm', - 'LLLL' => 'dddd, d [de] MMMM [de] YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ses.php b/vendor/nesbot/carbon/src/Carbon/Lang/ses.php deleted file mode 100644 index e1099e65..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ses.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['Adduha', 'Aluula'], - 'weekdays' => ['Alhadi', 'Atinni', 'Atalaata', 'Alarba', 'Alhamiisa', 'Alzuma', 'Asibti'], - 'weekdays_short' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'], - 'weekdays_min' => ['Alh', 'Ati', 'Ata', 'Ala', 'Alm', 'Alz', 'Asi'], - 'months' => ['Žanwiye', 'Feewiriye', 'Marsi', 'Awiril', 'Me', 'Žuweŋ', 'Žuyye', 'Ut', 'Sektanbur', 'Oktoobur', 'Noowanbur', 'Deesanbur'], - 'months_short' => ['Žan', 'Fee', 'Mar', 'Awi', 'Me', 'Žuw', 'Žuy', 'Ut', 'Sek', 'Okt', 'Noo', 'Dee'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - - 'month' => ':count alaada', // less reliable - 'm' => ':count alaada', // less reliable - 'a_month' => ':count alaada', // less reliable - - 'hour' => ':count ɲaajin', // less reliable - 'h' => ':count ɲaajin', // less reliable - 'a_hour' => ':count ɲaajin', // less reliable - - 'minute' => ':count zarbu', // less reliable - 'min' => ':count zarbu', // less reliable - 'a_minute' => ':count zarbu', // less reliable - - 'year' => ':count jiiri', - 'y' => ':count jiiri', - 'a_year' => ':count jiiri', - - 'week' => ':count jirbiiyye', - 'w' => ':count jirbiiyye', - 'a_week' => ':count jirbiiyye', - - 'day' => ':count zaari', - 'd' => ':count zaari', - 'a_day' => ':count zaari', - - 'second' => ':count ihinkante', - 's' => ':count ihinkante', - 'a_second' => ':count ihinkante', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sg.php b/vendor/nesbot/carbon/src/Carbon/Lang/sg.php deleted file mode 100644 index 9264e893..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sg.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['ND', 'LK'], - 'weekdays' => ['Bikua-ôko', 'Bïkua-ûse', 'Bïkua-ptâ', 'Bïkua-usïö', 'Bïkua-okü', 'Lâpôsö', 'Lâyenga'], - 'weekdays_short' => ['Bk1', 'Bk2', 'Bk3', 'Bk4', 'Bk5', 'Lâp', 'Lây'], - 'weekdays_min' => ['Bk1', 'Bk2', 'Bk3', 'Bk4', 'Bk5', 'Lâp', 'Lây'], - 'months' => ['Nyenye', 'Fulundïgi', 'Mbängü', 'Ngubùe', 'Bêläwü', 'Föndo', 'Lengua', 'Kükürü', 'Mvuka', 'Ngberere', 'Nabändüru', 'Kakauka'], - 'months_short' => ['Nye', 'Ful', 'Mbä', 'Ngu', 'Bêl', 'Fön', 'Len', 'Kük', 'Mvu', 'Ngb', 'Nab', 'Kak'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM, YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - - 'year' => ':count dā', // less reliable - 'y' => ':count dā', // less reliable - 'a_year' => ':count dā', // less reliable - - 'week' => ':count bïkua-okü', // less reliable - 'w' => ':count bïkua-okü', // less reliable - 'a_week' => ':count bïkua-okü', // less reliable - - 'day' => ':count ziggawâ', // less reliable - 'd' => ':count ziggawâ', // less reliable - 'a_day' => ':count ziggawâ', // less reliable - - 'hour' => ':count yângâködörö', // less reliable - 'h' => ':count yângâködörö', // less reliable - 'a_hour' => ':count yângâködörö', // less reliable - - 'second' => ':count bïkua-ôko', // less reliable - 's' => ':count bïkua-ôko', // less reliable - 'a_second' => ':count bïkua-ôko', // less reliable - - 'month' => ':count Nze tî ngu', - 'm' => ':count Nze tî ngu', - 'a_month' => ':count Nze tî ngu', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sgs.php b/vendor/nesbot/carbon/src/Carbon/Lang/sgs.php deleted file mode 100644 index 864b9892..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sgs.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/sgs_LT.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sgs_LT.php b/vendor/nesbot/carbon/src/Carbon/Lang/sgs_LT.php deleted file mode 100644 index aa9e942e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sgs_LT.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Arnas Udovičius bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'YYYY.MM.DD', - ], - 'months' => ['sausė', 'vasarė', 'kuova', 'balondė', 'gegožės', 'bėrželė', 'lëpas', 'rogpjūtė', 'siejės', 'spalė', 'lapkrėstė', 'grůdė'], - 'months_short' => ['Sau', 'Vas', 'Kuo', 'Bal', 'Geg', 'Bėr', 'Lëp', 'Rgp', 'Sie', 'Spa', 'Lap', 'Grd'], - 'weekdays' => ['nedielės dëna', 'panedielis', 'oterninks', 'sereda', 'četvergs', 'petnīčė', 'sobata'], - 'weekdays_short' => ['Nd', 'Pn', 'Ot', 'Sr', 'Čt', 'Pt', 'Sb'], - 'weekdays_min' => ['Nd', 'Pn', 'Ot', 'Sr', 'Čt', 'Pt', 'Sb'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - - 'minute' => ':count mažos', // less reliable - 'min' => ':count mažos', // less reliable - 'a_minute' => ':count mažos', // less reliable - - 'year' => ':count metā', - 'y' => ':count metā', - 'a_year' => ':count metā', - - 'month' => ':count mienou', - 'm' => ':count mienou', - 'a_month' => ':count mienou', - - 'week' => ':count nedielė', - 'w' => ':count nedielė', - 'a_week' => ':count nedielė', - - 'day' => ':count dīna', - 'd' => ':count dīna', - 'a_day' => ':count dīna', - - 'hour' => ':count adīna', - 'h' => ':count adīna', - 'a_hour' => ':count adīna', - - 'second' => ':count Sekondė', - 's' => ':count Sekondė', - 'a_second' => ':count Sekondė', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sh.php b/vendor/nesbot/carbon/src/Carbon/Lang/sh.php deleted file mode 100644 index e03b5067..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sh.php +++ /dev/null @@ -1,68 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -// @codeCoverageIgnoreStart -use Symfony\Component\Translation\PluralizationRules; - -if (class_exists('Symfony\\Component\\Translation\\PluralizationRules')) { - PluralizationRules::set(static function ($number) { - return (($number % 10 == 1) && ($number % 100 != 11)) ? 0 : ((($number % 10 >= 2) && ($number % 10 <= 4) && (($number % 100 < 10) || ($number % 100 >= 20))) ? 1 : 2); - }, 'sh'); -} -// @codeCoverageIgnoreEnd - -/* - * Authors: - * - Томица Кораћ - * - Enrique Vidal - * - Christopher Dell - * - dmilisic - * - danijel - * - Miroslav Matkovic (mikki021) - */ -return [ - 'diff_now' => 'sada', - 'diff_yesterday' => 'juče', - 'diff_tomorrow' => 'sutra', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'MMMM D, YYYY', - 'LLL' => 'DD MMM HH:mm', - 'LLLL' => 'MMMM DD, YYYY HH:mm', - ], - 'year' => ':count godina|:count godine|:count godina', - 'y' => ':count g.', - 'month' => ':count mesec|:count meseca|:count meseci', - 'm' => ':count m.', - 'week' => ':count nedelja|:count nedelje|:count nedelja', - 'w' => ':count n.', - 'day' => ':count dan|:count dana|:count dana', - 'd' => ':count d.', - 'hour' => ':count sat|:count sata|:count sati', - 'h' => ':count č.', - 'minute' => ':count minut|:count minuta|:count minuta', - 'min' => ':count min.', - 'second' => ':count sekund|:count sekunde|:count sekundi', - 's' => ':count s.', - 'ago' => 'pre :time', - 'from_now' => 'za :time', - 'after' => 'nakon :time', - 'before' => ':time raniјe', - 'weekdays' => ['Nedelja', 'Ponedeljak', 'Utorak', 'Sreda', 'Četvrtak', 'Petak', 'Subota'], - 'weekdays_short' => ['Ned', 'Pon', 'Uto', 'Sre', 'Čet', 'Pet', 'Sub'], - 'weekdays_min' => ['Ned', 'Pon', 'Uto', 'Sre', 'Čet', 'Pet', 'Sub'], - 'months' => ['Januar', 'Februar', 'Mart', 'April', 'Maj', 'Jun', 'Jul', 'Avgust', 'Septembar', 'Oktobar', 'Novembar', 'Decembar'], - 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Avg', 'Sep', 'Okt', 'Nov', 'Dec'], - 'list' => [', ', ' i '], - 'meridiem' => ['pre podne', 'po podne'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/shi.php b/vendor/nesbot/carbon/src/Carbon/Lang/shi.php deleted file mode 100644 index 78151869..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/shi.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['ⵜⵉⴼⴰⵡⵜ', 'ⵜⴰⴷⴳⴳⵯⴰⵜ'], - 'weekdays' => ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵕⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'], - 'weekdays_short' => ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'], - 'weekdays_min' => ['ⴰⵙⴰ', 'ⴰⵢⵏ', 'ⴰⵙⵉ', 'ⴰⴽⵕ', 'ⴰⴽⵡ', 'ⴰⵙⵉⵎ', 'ⴰⵙⵉⴹ'], - 'months' => ['ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵜⵓⴱⵔ', 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⴰⵏⴱⵉⵔ'], - 'months_short' => ['ⵉⵏⵏ', 'ⴱⵕⴰ', 'ⵎⴰⵕ', 'ⵉⴱⵔ', 'ⵎⴰⵢ', 'ⵢⵓⵏ', 'ⵢⵓⵍ', 'ⵖⵓⵛ', 'ⵛⵓⵜ', 'ⴽⵜⵓ', 'ⵏⵓⵡ', 'ⴷⵓⵊ'], - 'first_day_of_week' => 6, - 'weekend' => [5, 6], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM, YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - - 'year' => ':count aseggwas', - 'y' => ':count aseggwas', - 'a_year' => ':count aseggwas', - - 'month' => ':count ayyur', - 'm' => ':count ayyur', - 'a_month' => ':count ayyur', - - 'week' => ':count imalass', - 'w' => ':count imalass', - 'a_week' => ':count imalass', - - 'day' => ':count ass', - 'd' => ':count ass', - 'a_day' => ':count ass', - - 'hour' => ':count urɣ', // less reliable - 'h' => ':count urɣ', // less reliable - 'a_hour' => ':count urɣ', // less reliable - - 'minute' => ':count ⴰⵎⵥⵉ', // less reliable - 'min' => ':count ⴰⵎⵥⵉ', // less reliable - 'a_minute' => ':count ⴰⵎⵥⵉ', // less reliable - - 'second' => ':count sin', // less reliable - 's' => ':count sin', // less reliable - 'a_second' => ':count sin', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/shi_Latn.php b/vendor/nesbot/carbon/src/Carbon/Lang/shi_Latn.php deleted file mode 100644 index cddfb242..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/shi_Latn.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/shi.php', [ - 'meridiem' => ['tifawt', 'tadggʷat'], - 'weekdays' => ['asamas', 'aynas', 'asinas', 'akṛas', 'akwas', 'asimwas', 'asiḍyas'], - 'weekdays_short' => ['asa', 'ayn', 'asi', 'akṛ', 'akw', 'asim', 'asiḍ'], - 'weekdays_min' => ['asa', 'ayn', 'asi', 'akṛ', 'akw', 'asim', 'asiḍ'], - 'months' => ['innayr', 'bṛayṛ', 'maṛṣ', 'ibrir', 'mayyu', 'yunyu', 'yulyuz', 'ɣuct', 'cutanbir', 'ktubr', 'nuwanbir', 'dujanbir'], - 'months_short' => ['inn', 'bṛa', 'maṛ', 'ibr', 'may', 'yun', 'yul', 'ɣuc', 'cut', 'ktu', 'nuw', 'duj'], - 'first_day_of_week' => 6, - 'weekend' => [5, 6], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM, YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], - - 'minute' => ':count agur', // less reliable - 'min' => ':count agur', // less reliable - 'a_minute' => ':count agur', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/shi_Tfng.php b/vendor/nesbot/carbon/src/Carbon/Lang/shi_Tfng.php deleted file mode 100644 index f3df1f2c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/shi_Tfng.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/shi.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/shn.php b/vendor/nesbot/carbon/src/Carbon/Lang/shn.php deleted file mode 100644 index fe7b1ea5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/shn.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/shn_MM.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/shn_MM.php b/vendor/nesbot/carbon/src/Carbon/Lang/shn_MM.php deleted file mode 100644 index f399acf0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/shn_MM.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - ubuntu Myanmar LoCo Team https://ubuntu-mm.net Bone Pyae Sone bone.burma@mail.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'OY MMM OD dddd', - ], - 'months' => ['လိူၼ်ၵမ်', 'လိူၼ်သၢမ်', 'လိူၼ်သီ', 'လိူၼ်ႁႃႈ', 'လိူၼ်ႁူၵ်း', 'လိူၼ်ၸဵတ်း', 'လိူၼ်ပႅတ်ႇ', 'လိူၼ်ၵဝ်ႈ', 'လိူၼ်သိပ်း', 'လိူၼ်သိပ်းဢိတ်း', 'လိူၼ်သိပ်းဢိတ်းသွင်', 'လိူၼ်ၸဵင်'], - 'months_short' => ['လိူၼ်ၵမ်', 'လိူၼ်သၢမ်', 'လိူၼ်သီ', 'လိူၼ်ႁႃႈ', 'လိူၼ်ႁူၵ်း', 'လိူၼ်ၸဵတ်း', 'လိူၼ်ပႅတ်ႇ', 'လိူၼ်ၵဝ်ႈ', 'လိူၼ်သိပ်း', 'လိူၼ်သိပ်းဢိတ်း', 'လိူၼ်သိပ်းဢိတ်းသွင်', 'လိူၼ်ၸဵင်'], - 'weekdays' => ['ဝၼ်းဢႃးတိတ်ႉ', 'ဝၼ်းၸၼ်', 'ဝၼ်း​ဢၢင်း​ၵၢၼ်း', 'ဝၼ်းပူတ်ႉ', 'ဝၼ်းၽတ်း', 'ဝၼ်းသုၵ်း', 'ဝၼ်းသဝ်'], - 'weekdays_short' => ['တိတ့်', 'ၸၼ်', 'ၵၢၼ်း', 'ပုတ့်', 'ၽတ်း', 'သုၵ်း', 'သဝ်'], - 'weekdays_min' => ['တိတ့်', 'ၸၼ်', 'ၵၢၼ်း', 'ပုတ့်', 'ၽတ်း', 'သုၵ်း', 'သဝ်'], - 'alt_numbers' => ['႐႐', '႐႑', '႐႒', '႐႓', '႐႔', '႐႕', '႐႖', '႐႗', '႐႘', '႐႙', '႑႐', '႑႑', '႑႒', '႑႓', '႑႔', '႑႕', '႑႖', '႑႗', '႑႘', '႑႙', '႒႐', '႒႑', '႒႒', '႒႓', '႒႔', '႒႕', '႒႖', '႒႗', '႒႘', '႒႙', '႓႐', '႓႑', '႓႒', '႓႓', '႓႔', '႓႕', '႓႖', '႓႗', '႓႘', '႓႙', '႔႐', '႔႑', '႔႒', '႔႓', '႔႔', '႔႕', '႔႖', '႔႗', '႔႘', '႔႙', '႕႐', '႕႑', '႕႒', '႕႓', '႕႔', '႕႕', '႕႖', '႕႗', '႕႘', '႕႙', '႖႐', '႖႑', '႖႒', '႖႓', '႖႔', '႖႕', '႖႖', '႖႗', '႖႘', '႖႙', '႗႐', '႗႑', '႗႒', '႗႓', '႗႔', '႗႕', '႗႖', '႗႗', '႗႘', '႗႙', '႘႐', '႘႑', '႘႒', '႘႓', '႘႔', '႘႕', '႘႖', '႘႗', '႘႘', '႘႙', '႙႐', '႙႑', '႙႒', '႙႓', '႙႔', '႙႕', '႙႖', '႙႗', '႙႘', '႙႙'], - 'meridiem' => ['ၵၢင်ၼႂ်', 'တၢမ်းၶမ်ႈ'], - - 'month' => ':count လိူၼ်', // less reliable - 'm' => ':count လိူၼ်', // less reliable - 'a_month' => ':count လိူၼ်', // less reliable - - 'week' => ':count ဝၼ်း', // less reliable - 'w' => ':count ဝၼ်း', // less reliable - 'a_week' => ':count ဝၼ်း', // less reliable - - 'hour' => ':count ຕີ', // less reliable - 'h' => ':count ຕີ', // less reliable - 'a_hour' => ':count ຕີ', // less reliable - - 'minute' => ':count ເດັກ', // less reliable - 'min' => ':count ເດັກ', // less reliable - 'a_minute' => ':count ເດັກ', // less reliable - - 'second' => ':count ဢိုၼ်ႇ', // less reliable - 's' => ':count ဢိုၼ်ႇ', // less reliable - 'a_second' => ':count ဢိုၼ်ႇ', // less reliable - - 'year' => ':count ပီ', - 'y' => ':count ပီ', - 'a_year' => ':count ပီ', - - 'day' => ':count ກາງວັນ', - 'd' => ':count ກາງວັນ', - 'a_day' => ':count ກາງວັນ', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/shs.php b/vendor/nesbot/carbon/src/Carbon/Lang/shs.php deleted file mode 100644 index 8d2e1d7d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/shs.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/shs_CA.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/shs_CA.php b/vendor/nesbot/carbon/src/Carbon/Lang/shs_CA.php deleted file mode 100644 index 08d385e6..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/shs_CA.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Neskie Manuel bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['Pellkwet̓min', 'Pelctsipwen̓ten', 'Pellsqépts', 'Peslléwten', 'Pell7ell7é7llqten', 'Pelltspéntsk', 'Pelltqwelq̓wél̓t', 'Pellct̓éxel̓cten', 'Pesqelqlélten', 'Pesllwélsten', 'Pellc7ell7é7llcwten̓', 'Pelltetétq̓em'], - 'months_short' => ['Kwe', 'Tsi', 'Sqe', 'Éwt', 'Ell', 'Tsp', 'Tqw', 'Ct̓é', 'Qel', 'Wél', 'U7l', 'Tet'], - 'weekdays' => ['Sxetspesq̓t', 'Spetkesq̓t', 'Selesq̓t', 'Skellesq̓t', 'Smesesq̓t', 'Stselkstesq̓t', 'Stqmekstesq̓t'], - 'weekdays_short' => ['Sxe', 'Spe', 'Sel', 'Ske', 'Sme', 'Sts', 'Stq'], - 'weekdays_min' => ['Sxe', 'Spe', 'Sel', 'Ske', 'Sme', 'Sts', 'Stq'], - 'day_of_first_week_of_year' => 1, - - 'year' => ':count sqlélten', // less reliable - 'y' => ':count sqlélten', // less reliable - 'a_year' => ':count sqlélten', // less reliable - - 'month' => ':count swewll', // less reliable - 'm' => ':count swewll', // less reliable - 'a_month' => ':count swewll', // less reliable - - 'hour' => ':count seqwlút', // less reliable - 'h' => ':count seqwlút', // less reliable - 'a_hour' => ':count seqwlút', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/si.php b/vendor/nesbot/carbon/src/Carbon/Lang/si.php deleted file mode 100644 index 636bf691..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/si.php +++ /dev/null @@ -1,78 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - Serhan Apaydın - * - JD Isaacks - * - Malinda Weerasinghe (MalindaWMD) - */ -return [ - 'year' => '{1}වසර 1|වසර :count', - 'a_year' => '{1}වසරක්|වසර :count', - 'month' => '{1}මාස 1|මාස :count', - 'a_month' => '{1}මාසය|මාස :count', - 'week' => '{1}සති 1|සති :count', - 'a_week' => '{1}සතියක්|සති :count', - 'day' => '{1}දින 1|දින :count', - 'a_day' => '{1}දිනක්|දින :count', - 'hour' => '{1}පැය 1|පැය :count', - 'a_hour' => '{1}පැයක්|පැය :count', - 'minute' => '{1}මිනිත්තු 1|මිනිත්තු :count', - 'a_minute' => '{1}මිනිත්තුවක්|මිනිත්තු :count', - 'second' => '{1}තත්පර 1|තත්පර :count', - 'a_second' => '{1}තත්පර කිහිපයකට|තත්පර :count', - 'ago' => ':time කට පෙර', - 'from_now' => function ($time) { - if (preg_match('/දින \d/u', $time)) { - return $time.' න්'; - } - - return $time.' කින්'; - }, - 'before' => ':time කට පෙර', - 'after' => function ($time) { - if (preg_match('/දින \d/u', $time)) { - return $time.' න්'; - } - - return $time.' කින්'; - }, - 'diff_now' => 'දැන්', - 'diff_today' => 'අද', - 'diff_yesterday' => 'ඊයේ', - 'diff_tomorrow' => 'හෙට', - 'formats' => [ - 'LT' => 'a h:mm', - 'LTS' => 'a h:mm:ss', - 'L' => 'YYYY/MM/DD', - 'LL' => 'YYYY MMMM D', - 'LLL' => 'YYYY MMMM D, a h:mm', - 'LLLL' => 'YYYY MMMM D [වැනි] dddd, a h:mm:ss', - ], - 'calendar' => [ - 'sameDay' => '[අද] LT[ට]', - 'nextDay' => '[හෙට] LT[ට]', - 'nextWeek' => 'dddd LT[ට]', - 'lastDay' => '[ඊයේ] LT[ට]', - 'lastWeek' => '[පසුගිය] dddd LT[ට]', - 'sameElse' => 'L', - ], - 'ordinal' => ':number වැනි', - 'meridiem' => ['පෙර වරු', 'පස් වරු', 'පෙ.ව.', 'ප.ව.'], - 'months' => ['ජනවාරි', 'පෙබරවාරි', 'මාර්තු', 'අප්‍රේල්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝස්තු', 'සැප්තැම්බර්', 'ඔක්තෝබර්', 'නොවැම්බර්', 'දෙසැම්බර්'], - 'months_short' => ['ජන', 'පෙබ', 'මාර්', 'අප්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝ', 'සැප්', 'ඔක්', 'නොවැ', 'දෙසැ'], - 'weekdays' => ['ඉරිදා', 'සඳුදා', 'අඟහරුවාදා', 'බදාදා', 'බ්‍රහස්පතින්දා', 'සිකුරාදා', 'සෙනසුරාදා'], - 'weekdays_short' => ['ඉරි', 'සඳු', 'අඟ', 'බදා', 'බ්‍රහ', 'සිකු', 'සෙන'], - 'weekdays_min' => ['ඉ', 'ස', 'අ', 'බ', 'බ්‍ර', 'සි', 'සෙ'], - 'first_day_of_week' => 1, -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/si_LK.php b/vendor/nesbot/carbon/src/Carbon/Lang/si_LK.php deleted file mode 100644 index 81c44e0e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/si_LK.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/si.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sid.php b/vendor/nesbot/carbon/src/Carbon/Lang/sid.php deleted file mode 100644 index b1c65218..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sid.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/sid_ET.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sid_ET.php b/vendor/nesbot/carbon/src/Carbon/Lang/sid_ET.php deleted file mode 100644 index 1296f9be..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sid_ET.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation locales@geez.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], - 'months_short' => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - 'weekdays' => ['Sambata', 'Sanyo', 'Maakisanyo', 'Roowe', 'Hamuse', 'Arbe', 'Qidaame'], - 'weekdays_short' => ['Sam', 'San', 'Mak', 'Row', 'Ham', 'Arb', 'Qid'], - 'weekdays_min' => ['Sam', 'San', 'Mak', 'Row', 'Ham', 'Arb', 'Qid'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['soodo', 'hawwaro'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sk.php b/vendor/nesbot/carbon/src/Carbon/Lang/sk.php deleted file mode 100644 index f9702e96..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sk.php +++ /dev/null @@ -1,155 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Philippe Vaucher - * - Martin Suja - * - Tsutomu Kuroda - * - tjku - * - Max Melentiev - * - Juanito Fatas - * - Ivan Stana - * - Akira Matsuda - * - Christopher Dell - * - James McKinney - * - Enrique Vidal - * - Simone Carletti - * - Aaron Patterson - * - Jozef Fulop - * - Nicolás Hock Isaza - * - Tom Hughes - * - Simon Hürlimann (CyT) - * - jofi - * - Jakub ADAMEC - * - Marek Adamický - * - AlterwebStudio - */ - -use Carbon\CarbonInterface; - -$fromNow = function ($time) { - return 'o '.strtr($time, [ - 'hodina' => 'hodinu', - 'minúta' => 'minútu', - 'sekunda' => 'sekundu', - ]); -}; - -$ago = function ($time) { - $replacements = [ - '/\bhodina\b/' => 'hodinou', - '/\bminúta\b/' => 'minútou', - '/\bsekunda\b/' => 'sekundou', - '/\bdeň\b/u' => 'dňom', - '/\btýždeň\b/u' => 'týždňom', - '/\bmesiac\b/' => 'mesiacom', - '/\brok\b/' => 'rokom', - ]; - - $replacementsPlural = [ - '/\bhodiny\b/' => 'hodinami', - '/\bminúty\b/' => 'minútami', - '/\bsekundy\b/' => 'sekundami', - '/\bdni\b/' => 'dňami', - '/\btýždne\b/' => 'týždňami', - '/\bmesiace\b/' => 'mesiacmi', - '/\broky\b/' => 'rokmi', - ]; - - foreach ($replacements + $replacementsPlural as $pattern => $replacement) { - $time = preg_replace($pattern, $replacement, $time); - } - - return "pred $time"; -}; - -return [ - 'year' => ':count rok|:count roky|:count rokov', - 'a_year' => 'rok|:count roky|:count rokov', - 'y' => ':count r', - 'month' => ':count mesiac|:count mesiace|:count mesiacov', - 'a_month' => 'mesiac|:count mesiace|:count mesiacov', - 'm' => ':count m', - 'week' => ':count týždeň|:count týždne|:count týždňov', - 'a_week' => 'týždeň|:count týždne|:count týždňov', - 'w' => ':count t', - 'day' => ':count deň|:count dni|:count dní', - 'a_day' => 'deň|:count dni|:count dní', - 'd' => ':count d', - 'hour' => ':count hodina|:count hodiny|:count hodín', - 'a_hour' => 'hodina|:count hodiny|:count hodín', - 'h' => ':count h', - 'minute' => ':count minúta|:count minúty|:count minút', - 'a_minute' => 'minúta|:count minúty|:count minút', - 'min' => ':count min', - 'second' => ':count sekunda|:count sekundy|:count sekúnd', - 'a_second' => 'sekunda|:count sekundy|:count sekúnd', - 's' => ':count s', - 'millisecond' => ':count milisekunda|:count milisekundy|:count milisekúnd', - 'a_millisecond' => 'milisekunda|:count milisekundy|:count milisekúnd', - 'ms' => ':count ms', - 'microsecond' => ':count mikrosekunda|:count mikrosekundy|:count mikrosekúnd', - 'a_microsecond' => 'mikrosekunda|:count mikrosekundy|:count mikrosekúnd', - 'µs' => ':count µs', - - 'ago' => $ago, - 'from_now' => $fromNow, - 'before' => ':time pred', - 'after' => ':time po', - - 'hour_after' => ':count hodinu|:count hodiny|:count hodín', - 'minute_after' => ':count minútu|:count minúty|:count minút', - 'second_after' => ':count sekundu|:count sekundy|:count sekúnd', - - 'hour_before' => ':count hodinu|:count hodiny|:count hodín', - 'minute_before' => ':count minútu|:count minúty|:count minút', - 'second_before' => ':count sekundu|:count sekundy|:count sekúnd', - - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' a '], - 'diff_now' => 'teraz', - 'diff_yesterday' => 'včera', - 'diff_tomorrow' => 'zajtra', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD.MM.YYYY', - 'LL' => 'DD. MMMM YYYY', - 'LLL' => 'D. M. HH:mm', - 'LLLL' => 'dddd D. MMMM YYYY HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[dnes o] LT', - 'nextDay' => '[zajtra o] LT', - 'lastDay' => '[včera o] LT', - 'nextWeek' => 'dddd [o] LT', - 'lastWeek' => static function (CarbonInterface $date) { - switch ($date->dayOfWeek) { - case 1: - case 2: - case 4: - case 5: - return '[minulý] dddd [o] LT'; //pondelok/utorok/štvrtok/piatok - default: - return '[minulá] dddd [o] LT'; - } - }, - 'sameElse' => 'L', - ], - 'weekdays' => ['nedeľa', 'pondelok', 'utorok', 'streda', 'štvrtok', 'piatok', 'sobota'], - 'weekdays_short' => ['ned', 'pon', 'uto', 'str', 'štv', 'pia', 'sob'], - 'weekdays_min' => ['ne', 'po', 'ut', 'st', 'št', 'pi', 'so'], - 'months' => ['január', 'február', 'marec', 'apríl', 'máj', 'jún', 'júl', 'august', 'september', 'október', 'november', 'december'], - 'months_short' => ['jan', 'feb', 'mar', 'apr', 'máj', 'jún', 'júl', 'aug', 'sep', 'okt', 'nov', 'dec'], - 'meridiem' => ['dopoludnia', 'popoludní'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sk_SK.php b/vendor/nesbot/carbon/src/Carbon/Lang/sk_SK.php deleted file mode 100644 index 0515601a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sk_SK.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/sk.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sl.php b/vendor/nesbot/carbon/src/Carbon/Lang/sl.php deleted file mode 100644 index 1f1d1b33..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sl.php +++ /dev/null @@ -1,129 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Philippe Vaucher - * - Tsutomu Kuroda - * - tjku - * - Max Melentiev - * - Juanito Fatas - * - Akira Matsuda - * - Christopher Dell - * - Enrique Vidal - * - Simone Carletti - * - Aaron Patterson - * - Nicolás Hock Isaza - * - Miha Rebernik - * - Gal Jakič (morpheus7CS) - * - Glavić - * - Anže Časar - * - Lovro Tramšek (Lovro1107) - * - burut13 - */ - -use Carbon\CarbonInterface; - -return [ - 'year' => ':count leto|:count leti|:count leta|:count let', - 'y' => ':count leto|:count leti|:count leta|:count let', - 'month' => ':count mesec|:count meseca|:count mesece|:count mesecev', - 'm' => ':count mes.', - 'week' => ':count teden|:count tedna|:count tedne|:count tednov', - 'w' => ':count ted.', - 'day' => ':count dan|:count dni|:count dni|:count dni', - 'd' => ':count dan|:count dni|:count dni|:count dni', - 'hour' => ':count ura|:count uri|:count ure|:count ur', - 'h' => ':count h', - 'minute' => ':count minuta|:count minuti|:count minute|:count minut', - 'min' => ':count min.', - 'second' => ':count sekunda|:count sekundi|:count sekunde|:count sekund', - 'a_second' => '{1}nekaj sekund|:count sekunda|:count sekundi|:count sekunde|:count sekund', - 's' => ':count s', - - 'year_ago' => ':count letom|:count letoma|:count leti|:count leti', - 'y_ago' => ':count letom|:count letoma|:count leti|:count leti', - 'month_ago' => ':count mesecem|:count mesecema|:count meseci|:count meseci', - 'week_ago' => ':count tednom|:count tednoma|:count tedni|:count tedni', - 'day_ago' => ':count dnem|:count dnevoma|:count dnevi|:count dnevi', - 'd_ago' => ':count dnem|:count dnevoma|:count dnevi|:count dnevi', - 'hour_ago' => ':count uro|:count urama|:count urami|:count urami', - 'minute_ago' => ':count minuto|:count minutama|:count minutami|:count minutami', - 'second_ago' => ':count sekundo|:count sekundama|:count sekundami|:count sekundami', - - 'day_from_now' => ':count dan|:count dneva|:count dni|:count dni', - 'd_from_now' => ':count dan|:count dneva|:count dni|:count dni', - 'hour_from_now' => ':count uro|:count uri|:count ure|:count ur', - 'minute_from_now' => ':count minuto|:count minuti|:count minute|:count minut', - 'second_from_now' => ':count sekundo|:count sekundi|:count sekunde|:count sekund', - - 'ago' => 'pred :time', - 'from_now' => 'čez :time', - 'after' => ':time kasneje', - 'before' => ':time prej', - - 'diff_now' => 'ravnokar', - 'diff_today' => 'danes', - 'diff_today_regexp' => 'danes(?:\\s+ob)?', - 'diff_yesterday' => 'včeraj', - 'diff_yesterday_regexp' => 'včeraj(?:\\s+ob)?', - 'diff_tomorrow' => 'jutri', - 'diff_tomorrow_regexp' => 'jutri(?:\\s+ob)?', - 'diff_before_yesterday' => 'predvčerajšnjim', - 'diff_after_tomorrow' => 'pojutrišnjem', - - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - - 'period_start_date' => 'od :date', - 'period_end_date' => 'do :date', - - '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', - ], - 'calendar' => [ - 'sameDay' => '[danes ob] LT', - 'nextDay' => '[jutri ob] LT', - 'nextWeek' => 'dddd [ob] LT', - 'lastDay' => '[včeraj ob] LT', - 'lastWeek' => function (CarbonInterface $date) { - switch ($date->dayOfWeek) { - case 0: - return '[preteklo] [nedeljo] [ob] LT'; - case 1: - return '[pretekli] [ponedeljek] [ob] LT'; - case 2: - return '[pretekli] [torek] [ob] LT'; - case 3: - return '[preteklo] [sredo] [ob] LT'; - case 4: - return '[pretekli] [četrtek] [ob] LT'; - case 5: - return '[pretekli] [petek] [ob] LT'; - case 6: - return '[preteklo] [soboto] [ob] LT'; - } - }, - 'sameElse' => 'L', - ], - 'months' => ['januar', 'februar', 'marec', 'april', 'maj', 'junij', 'julij', 'avgust', 'september', 'oktober', 'november', 'december'], - 'months_short' => ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'avg', 'sep', 'okt', 'nov', 'dec'], - 'weekdays' => ['nedelja', 'ponedeljek', 'torek', 'sreda', 'četrtek', 'petek', 'sobota'], - 'weekdays_short' => ['ned', 'pon', 'tor', 'sre', 'čet', 'pet', 'sob'], - 'weekdays_min' => ['ne', 'po', 'to', 'sr', 'če', 'pe', 'so'], - 'list' => [', ', ' in '], - 'meridiem' => ['dopoldan', 'popoldan'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sl_SI.php b/vendor/nesbot/carbon/src/Carbon/Lang/sl_SI.php deleted file mode 100644 index 5dad8c81..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sl_SI.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/sl.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sm.php b/vendor/nesbot/carbon/src/Carbon/Lang/sm.php deleted file mode 100644 index e8c118ac..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sm.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/sm_WS.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sm_WS.php b/vendor/nesbot/carbon/src/Carbon/Lang/sm_WS.php deleted file mode 100644 index f0660687..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sm_WS.php +++ /dev/null @@ -1,53 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Samsung Electronics Co., Ltd. akhilesh.k@samsung.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['Ianuari', 'Fepuari', 'Mati', 'Aperila', 'Me', 'Iuni', 'Iulai', 'Auguso', 'Setema', 'Oketopa', 'Novema', 'Tesema'], - 'months_short' => ['Ian', 'Fep', 'Mat', 'Ape', 'Me', 'Iun', 'Iul', 'Aug', 'Set', 'Oke', 'Nov', 'Tes'], - 'weekdays' => ['Aso Sa', 'Aso Gafua', 'Aso Lua', 'Aso Lulu', 'Aso Tofi', 'Aso Farail', 'Aso To\'ana\'i'], - 'weekdays_short' => ['Aso Sa', 'Aso Gaf', 'Aso Lua', 'Aso Lul', 'Aso Tof', 'Aso Far', 'Aso To\''], - 'weekdays_min' => ['Aso Sa', 'Aso Gaf', 'Aso Lua', 'Aso Lul', 'Aso Tof', 'Aso Far', 'Aso To\''], - - 'hour' => ':count uati', // less reliable - 'h' => ':count uati', // less reliable - 'a_hour' => ':count uati', // less reliable - - 'minute' => ':count itiiti', // less reliable - 'min' => ':count itiiti', // less reliable - 'a_minute' => ':count itiiti', // less reliable - - 'second' => ':count lua', // less reliable - 's' => ':count lua', // less reliable - 'a_second' => ':count lua', // less reliable - - 'year' => ':count tausaga', - 'y' => ':count tausaga', - 'a_year' => ':count tausaga', - - 'month' => ':count māsina', - 'm' => ':count māsina', - 'a_month' => ':count māsina', - - 'week' => ':count vaiaso', - 'w' => ':count vaiaso', - 'a_week' => ':count vaiaso', - - 'day' => ':count aso', - 'd' => ':count aso', - 'a_day' => ':count aso', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/smn.php b/vendor/nesbot/carbon/src/Carbon/Lang/smn.php deleted file mode 100644 index 20add023..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/smn.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['ip.', 'ep.'], - 'weekdays' => ['pasepeeivi', 'vuossaargâ', 'majebaargâ', 'koskoho', 'tuorâstuv', 'vástuppeeivi', 'lávurduv'], - 'weekdays_short' => ['pas', 'vuo', 'maj', 'kos', 'tuo', 'vás', 'láv'], - 'weekdays_min' => ['pa', 'vu', 'ma', 'ko', 'tu', 'vá', 'lá'], - 'weekdays_standalone' => ['pasepeivi', 'vuossargâ', 'majebargâ', 'koskokko', 'tuorâstâh', 'vástuppeivi', 'lávurdâh'], - 'months' => ['uđđâivemáánu', 'kuovâmáánu', 'njuhčâmáánu', 'cuáŋuimáánu', 'vyesimáánu', 'kesimáánu', 'syeinimáánu', 'porgemáánu', 'čohčâmáánu', 'roovvâdmáánu', 'skammâmáánu', 'juovlâmáánu'], - 'months_short' => ['uđiv', 'kuovâ', 'njuhčâ', 'cuáŋui', 'vyesi', 'kesi', 'syeini', 'porge', 'čohčâ', 'roovvâd', 'skammâ', 'juovlâ'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'H.mm', - 'LTS' => 'H.mm.ss', - 'L' => 'D.M.YYYY', - 'LL' => 'MMM D. YYYY', - 'LLL' => 'MMMM D. YYYY H.mm', - 'LLLL' => 'dddd, MMMM D. YYYY H.mm', - ], - - 'hour' => ':count äigi', // less reliable - 'h' => ':count äigi', // less reliable - 'a_hour' => ':count äigi', // less reliable - - 'year' => ':count ihe', - 'y' => ':count ihe', - 'a_year' => ':count ihe', - - 'month' => ':count mánuppaje', - 'm' => ':count mánuppaje', - 'a_month' => ':count mánuppaje', - - 'week' => ':count okko', - 'w' => ':count okko', - 'a_week' => ':count okko', - - 'day' => ':count peivi', - 'd' => ':count peivi', - 'a_day' => ':count peivi', - - 'minute' => ':count miinut', - 'min' => ':count miinut', - 'a_minute' => ':count miinut', - - 'second' => ':count nubbe', - 's' => ':count nubbe', - 'a_second' => ':count nubbe', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sn.php b/vendor/nesbot/carbon/src/Carbon/Lang/sn.php deleted file mode 100644 index 4f25028a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sn.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['a', 'p'], - 'weekdays' => ['Svondo', 'Muvhuro', 'Chipiri', 'Chitatu', 'China', 'Chishanu', 'Mugovera'], - 'weekdays_short' => ['Svo', 'Muv', 'Chp', 'Cht', 'Chn', 'Chs', 'Mug'], - 'weekdays_min' => ['Sv', 'Mu', 'Cp', 'Ct', 'Cn', 'Cs', 'Mg'], - 'months' => ['Ndira', 'Kukadzi', 'Kurume', 'Kubvumbi', 'Chivabvu', 'Chikumi', 'Chikunguru', 'Nyamavhuvhu', 'Gunyana', 'Gumiguru', 'Mbudzi', 'Zvita'], - 'months_short' => ['Ndi', 'Kuk', 'Kur', 'Kub', 'Chv', 'Chk', 'Chg', 'Nya', 'Gun', 'Gum', 'Mbu', 'Zvi'], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY-MM-dd', - 'LL' => 'YYYY MMM D', - 'LLL' => 'YYYY MMMM D HH:mm', - 'LLLL' => 'YYYY MMMM D, dddd HH:mm', - ], - - 'year' => 'makore :count', - 'y' => 'makore :count', - 'a_year' => 'makore :count', - - 'month' => 'mwedzi :count', - 'm' => 'mwedzi :count', - 'a_month' => 'mwedzi :count', - - 'week' => 'vhiki :count', - 'w' => 'vhiki :count', - 'a_week' => 'vhiki :count', - - 'day' => 'mazuva :count', - 'd' => 'mazuva :count', - 'a_day' => 'mazuva :count', - - 'hour' => 'maawa :count', - 'h' => 'maawa :count', - 'a_hour' => 'maawa :count', - - 'minute' => 'minitsi :count', - 'min' => 'minitsi :count', - 'a_minute' => 'minitsi :count', - - 'second' => 'sekonzi :count', - 's' => 'sekonzi :count', - 'a_second' => 'sekonzi :count', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/so.php b/vendor/nesbot/carbon/src/Carbon/Lang/so.php deleted file mode 100644 index 57852719..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/so.php +++ /dev/null @@ -1,74 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Author: - * - Abdifatah Abdilahi(@abdifatahz) - */ -return [ - 'year' => ':count sanad|:count sanadood', - 'a_year' => 'sanad|:count sanadood', - 'y' => '{1}:countsn|{0}:countsns|]1,Inf[:countsn', - 'month' => ':count bil|:count bilood', - 'a_month' => 'bil|:count bilood', - 'm' => ':countbil', - 'week' => ':count isbuuc', - 'a_week' => 'isbuuc|:count isbuuc', - 'w' => ':countis', - 'day' => ':count maalin|:count maalmood', - 'a_day' => 'maalin|:count maalmood', - 'd' => ':countml', - 'hour' => ':count saac', - 'a_hour' => 'saacad|:count saac', - 'h' => ':countsc', - 'minute' => ':count daqiiqo', - 'a_minute' => 'daqiiqo|:count daqiiqo', - 'min' => ':countdq', - 'second' => ':count ilbidhiqsi', - 'a_second' => 'xooga ilbidhiqsiyo|:count ilbidhiqsi', - 's' => ':countil', - 'ago' => ':time kahor', - 'from_now' => ':time gudahood', - 'after' => ':time kedib', - 'before' => ':time kahor', - 'diff_now' => 'hada', - 'diff_today' => 'maanta', - 'diff_today_regexp' => 'maanta(?:\s+markay\s+(?:tahay|ahayd))?', - 'diff_yesterday' => 'shalayto', - 'diff_yesterday_regexp' => 'shalayto(?:\s+markay\s+ahayd)?', - 'diff_tomorrow' => 'beri', - 'diff_tomorrow_regexp' => 'beri(?:\s+markay\s+tahay)?', - 'diff_before_yesterday' => 'doraato', - 'diff_after_tomorrow' => 'saadanbe', - 'period_recurrences' => 'mar|:count jeer', - 'period_interval' => ':interval kasta', - 'period_start_date' => 'laga bilaabo :date', - 'period_end_date' => 'ilaa :date', - 'months' => ['Janaayo', 'Febraayo', 'Abriil', 'Maajo', 'Juun', 'Luuliyo', 'Agoosto', 'Sebteembar', 'Oktoobar', 'Nofeembar', 'Diseembar'], - 'months_short' => ['Jan', 'Feb', 'Mar', 'Abr', 'Mjo', 'Jun', 'Lyo', 'Agt', 'Seb', 'Okt', 'Nof', 'Dis'], - 'weekdays' => ['Axad', 'Isniin', 'Talaada', 'Arbaca', 'Khamiis', 'Jimce', 'Sabti'], - 'weekdays_short' => ['Axd', 'Isn', 'Tal', 'Arb', 'Kha', 'Jim', 'Sbt'], - 'weekdays_min' => ['Ax', 'Is', 'Ta', 'Ar', 'Kh', 'Ji', 'Sa'], - 'list' => [', ', ' and '], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'calendar' => [ - 'sameDay' => '[Maanta markay tahay] LT', - 'nextDay' => '[Beri markay tahay] LT', - 'nextWeek' => 'dddd [markay tahay] LT', - 'lastDay' => '[Shalay markay ahayd] LT', - 'lastWeek' => '[Hore] dddd [Markay ahayd] LT', - 'sameElse' => 'L', - ], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/so_DJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/so_DJ.php deleted file mode 100644 index 273dda8d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/so_DJ.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation locales@geez.org - */ -return array_replace_recursive(require __DIR__.'/so.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/so_ET.php b/vendor/nesbot/carbon/src/Carbon/Lang/so_ET.php deleted file mode 100644 index 7b699715..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/so_ET.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation locales@geez.org - */ -return require __DIR__.'/so.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/so_KE.php b/vendor/nesbot/carbon/src/Carbon/Lang/so_KE.php deleted file mode 100644 index 7b699715..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/so_KE.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation locales@geez.org - */ -return require __DIR__.'/so.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/so_SO.php b/vendor/nesbot/carbon/src/Carbon/Lang/so_SO.php deleted file mode 100644 index 7b699715..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/so_SO.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation locales@geez.org - */ -return require __DIR__.'/so.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sq.php b/vendor/nesbot/carbon/src/Carbon/Lang/sq.php deleted file mode 100644 index ffa592ec..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sq.php +++ /dev/null @@ -1,79 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - JD Isaacks - * - Fadion Dashi - */ -return [ - 'year' => ':count vit|:count vjet', - 'a_year' => 'një vit|:count vite', - 'y' => ':count v.', - 'month' => ':count muaj', - 'a_month' => 'një muaj|:count muaj', - 'm' => ':count muaj', - 'week' => ':count javë', - 'a_week' => ':count javë|:count javë', - 'w' => ':count j.', - 'day' => ':count ditë', - 'a_day' => 'një ditë|:count ditë', - 'd' => ':count d.', - 'hour' => ':count orë', - 'a_hour' => 'një orë|:count orë', - 'h' => ':count o.', - 'minute' => ':count minutë|:count minuta', - 'a_minute' => 'një minutë|:count minuta', - 'min' => ':count min.', - 'second' => ':count sekondë|:count sekonda', - 'a_second' => 'disa sekonda|:count sekonda', - 's' => ':count s.', - 'ago' => ':time më parë', - 'from_now' => 'në :time', - 'after' => ':time pas', - 'before' => ':time para', - 'diff_now' => 'tani', - 'diff_today' => 'Sot', - 'diff_today_regexp' => 'Sot(?:\\s+në)?', - 'diff_yesterday' => 'dje', - 'diff_yesterday_regexp' => 'Dje(?:\\s+në)?', - 'diff_tomorrow' => 'nesër', - 'diff_tomorrow_regexp' => 'Nesër(?:\\s+në)?', - 'diff_before_yesterday' => 'pardje', - 'diff_after_tomorrow' => 'pasnesër', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Sot në] LT', - 'nextDay' => '[Nesër në] LT', - 'nextWeek' => 'dddd [në] LT', - 'lastDay' => '[Dje në] LT', - 'lastWeek' => 'dddd [e kaluar në] LT', - 'sameElse' => 'L', - ], - 'ordinal' => ':number.', - 'meridiem' => ['PD', 'MD'], - 'months' => ['janar', 'shkurt', 'mars', 'prill', 'maj', 'qershor', 'korrik', 'gusht', 'shtator', 'tetor', 'nëntor', 'dhjetor'], - 'months_short' => ['jan', 'shk', 'mar', 'pri', 'maj', 'qer', 'kor', 'gus', 'sht', 'tet', 'nën', 'dhj'], - 'weekdays' => ['e diel', 'e hënë', 'e martë', 'e mërkurë', 'e enjte', 'e premte', 'e shtunë'], - 'weekdays_short' => ['die', 'hën', 'mar', 'mër', 'enj', 'pre', 'sht'], - 'weekdays_min' => ['d', 'h', 'ma', 'më', 'e', 'p', 'sh'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' dhe '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sq_AL.php b/vendor/nesbot/carbon/src/Carbon/Lang/sq_AL.php deleted file mode 100644 index ea5df3f2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sq_AL.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/sq.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sq_MK.php b/vendor/nesbot/carbon/src/Carbon/Lang/sq_MK.php deleted file mode 100644 index 62f752c4..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sq_MK.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/sq.php', [ - 'formats' => [ - 'L' => 'D.M.YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY, HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY, HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sq_XK.php b/vendor/nesbot/carbon/src/Carbon/Lang/sq_XK.php deleted file mode 100644 index 62f752c4..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sq_XK.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/sq.php', [ - 'formats' => [ - 'L' => 'D.M.YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY, HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY, HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr.php deleted file mode 100644 index 68ba663a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sr.php +++ /dev/null @@ -1,112 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - François B - * - shaishavgandhi05 - * - Serhan Apaydın - * - JD Isaacks - * - Glavić - * - Milos Sakovic - */ - -use Carbon\CarbonInterface; - -return [ - 'year' => ':count godina|:count godine|:count godina', - 'y' => ':count g.', - 'month' => ':count mesec|:count meseca|:count meseci', - 'm' => ':count mj.', - 'week' => ':count nedelja|:count nedelje|:count nedelja', - 'w' => ':count ned.', - 'day' => ':count dan|:count dana|:count dana', - 'd' => ':count d.', - 'hour' => ':count sat|:count sata|:count sati', - 'h' => ':count č.', - 'minute' => ':count minut|:count minuta|:count minuta', - 'min' => ':count min.', - 'second' => ':count sekundu|:count sekunde|:count sekundi', - 's' => ':count sek.', - 'ago' => 'pre :time', - 'from_now' => 'za :time', - 'after' => 'nakon :time', - 'before' => 'pre :time', - - 'year_from_now' => ':count godinu|:count godine|:count godina', - 'year_ago' => ':count godinu|:count godine|:count godina', - 'week_from_now' => ':count nedelju|:count nedelje|:count nedelja', - 'week_ago' => ':count nedelju|:count nedelje|:count nedelja', - - 'diff_now' => 'upravo sada', - 'diff_today' => 'danas', - 'diff_today_regexp' => 'danas(?:\\s+u)?', - 'diff_yesterday' => 'juče', - 'diff_yesterday_regexp' => 'juče(?:\\s+u)?', - 'diff_tomorrow' => 'sutra', - 'diff_tomorrow_regexp' => 'sutra(?:\\s+u)?', - 'diff_before_yesterday' => 'prekjuče', - 'diff_after_tomorrow' => 'preksutra', - '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', - ], - 'calendar' => [ - 'sameDay' => '[danas u] LT', - 'nextDay' => '[sutra u] LT', - 'nextWeek' => function (CarbonInterface $date) { - switch ($date->dayOfWeek) { - case 0: - return '[u nedelju u] LT'; - case 3: - return '[u sredu u] LT'; - case 6: - return '[u subotu u] LT'; - default: - return '[u] dddd [u] LT'; - } - }, - 'lastDay' => '[juče u] LT', - 'lastWeek' => function (CarbonInterface $date) { - switch ($date->dayOfWeek) { - case 0: - return '[prošle nedelje u] LT'; - case 1: - return '[prošlog ponedeljka u] LT'; - case 2: - return '[prošlog utorka u] LT'; - case 3: - return '[prošle srede u] LT'; - case 4: - return '[prošlog četvrtka u] LT'; - case 5: - return '[prošlog petka u] LT'; - default: - return '[prošle subote u] LT'; - } - }, - 'sameElse' => 'L', - ], - 'ordinal' => ':number.', - 'months' => ['januar', 'februar', 'mart', 'april', 'maj', 'jun', 'jul', 'avgust', 'septembar', 'oktobar', 'novembar', 'decembar'], - 'months_short' => ['jan.', 'feb.', 'mar.', 'apr.', 'maj', 'jun', 'jul', 'avg.', 'sep.', 'okt.', 'nov.', 'dec.'], - 'weekdays' => ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], - 'weekdays_short' => ['ned.', 'pon.', 'uto.', 'sre.', 'čet.', 'pet.', 'sub.'], - 'weekdays_min' => ['ne', 'po', 'ut', 'sr', 'če', 'pe', 'su'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' i '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl.php deleted file mode 100644 index 8becbc57..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl.php +++ /dev/null @@ -1,112 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - François B - * - shaishavgandhi05 - * - Serhan Apaydın - * - JD Isaacks - * - Glavić - * - Nikola Zeravcic - * - Milos Sakovic - */ - -use Carbon\CarbonInterface; - -return [ - 'year' => ':count година|:count године|:count година', - 'y' => ':count г.', - 'month' => ':count месец|:count месеца|:count месеци', - 'm' => ':count м.', - 'week' => ':count недеља|:count недеље|:count недеља', - 'w' => ':count нед.', - 'day' => ':count дан|:count дана|:count дана', - 'd' => ':count д.', - 'hour' => ':count сат|:count сата|:count сати', - 'h' => ':count ч.', - 'minute' => ':count минут|:count минута|:count минута', - 'min' => ':count мин.', - 'second' => ':count секунд|:count секунде|:count секунди', - 's' => ':count сек.', - 'ago' => 'пре :time', - 'from_now' => 'за :time', - 'after' => ':time након', - 'before' => ':time пре', - 'year_from_now' => ':count годину|:count године|:count година', - 'year_ago' => ':count годину|:count године|:count година', - 'week_from_now' => ':count недељу|:count недеље|:count недеља', - 'week_ago' => ':count недељу|:count недеље|:count недеља', - 'diff_now' => 'управо сада', - 'diff_today' => 'данас', - 'diff_today_regexp' => 'данас(?:\\s+у)?', - 'diff_yesterday' => 'јуче', - 'diff_yesterday_regexp' => 'јуче(?:\\s+у)?', - 'diff_tomorrow' => 'сутра', - 'diff_tomorrow_regexp' => 'сутра(?:\\s+у)?', - 'diff_before_yesterday' => 'прекјуче', - 'diff_after_tomorrow' => 'прекосутра', - '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', - ], - 'calendar' => [ - 'sameDay' => '[данас у] LT', - 'nextDay' => '[сутра у] LT', - 'nextWeek' => function (CarbonInterface $date) { - switch ($date->dayOfWeek) { - case 0: - return '[у недељу у] LT'; - case 3: - return '[у среду у] LT'; - case 6: - return '[у суботу у] LT'; - default: - return '[у] dddd [у] LT'; - } - }, - 'lastDay' => '[јуче у] LT', - 'lastWeek' => function (CarbonInterface $date) { - switch ($date->dayOfWeek) { - case 0: - return '[прошле недеље у] LT'; - case 1: - return '[прошлог понедељка у] LT'; - case 2: - return '[прошлог уторка у] LT'; - case 3: - return '[прошле среде у] LT'; - case 4: - return '[прошлог четвртка у] LT'; - case 5: - return '[прошлог петка у] LT'; - default: - return '[прошле суботе у] LT'; - } - }, - 'sameElse' => 'L', - ], - 'ordinal' => ':number.', - 'months' => ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'], - 'months_short' => ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'], - 'weekdays' => ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], - 'weekdays_short' => ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'], - 'weekdays_min' => ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' и '], - 'meridiem' => ['АМ', 'ПМ'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_BA.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_BA.php deleted file mode 100644 index 4b29a45c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_BA.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Symfony\Component\Translation\PluralizationRules; - -// @codeCoverageIgnoreStart -if (class_exists(PluralizationRules::class)) { - PluralizationRules::set(static function ($number) { - return PluralizationRules::get($number, 'sr'); - }, 'sr_Cyrl_BA'); -} -// @codeCoverageIgnoreEnd - -return array_replace_recursive(require __DIR__.'/sr_Cyrl.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D.M.yy.', - 'LL' => 'DD.MM.YYYY.', - 'LLL' => 'DD. MMMM YYYY. HH:mm', - 'LLLL' => 'dddd, DD. MMMM YYYY. HH:mm', - ], - 'weekdays' => ['недјеља', 'понедељак', 'уторак', 'сриједа', 'четвртак', 'петак', 'субота'], - 'weekdays_short' => ['нед.', 'пон.', 'ут.', 'ср.', 'чет.', 'пет.', 'суб.'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_ME.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_ME.php deleted file mode 100644 index 28d22fd2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_ME.php +++ /dev/null @@ -1,118 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Glavić - * - Milos Sakovic - */ - -use Carbon\CarbonInterface; -use Symfony\Component\Translation\PluralizationRules; - -// @codeCoverageIgnoreStart -if (class_exists(PluralizationRules::class)) { - PluralizationRules::set(static function ($number) { - return PluralizationRules::get($number, 'sr'); - }, 'sr_Cyrl_ME'); -} -// @codeCoverageIgnoreEnd - -return [ - 'year' => ':count година|:count године|:count година', - 'y' => ':count г.', - 'month' => ':count мјесец|:count мјесеца|:count мјесеци', - 'm' => ':count мј.', - 'week' => ':count недјеља|:count недјеље|:count недјеља', - 'w' => ':count нед.', - 'day' => ':count дан|:count дана|:count дана', - 'd' => ':count д.', - 'hour' => ':count сат|:count сата|:count сати', - 'h' => ':count ч.', - 'minute' => ':count минут|:count минута|:count минута', - 'min' => ':count мин.', - 'second' => ':count секунд|:count секунде|:count секунди', - 's' => ':count сек.', - 'ago' => 'прије :time', - 'from_now' => 'за :time', - 'after' => ':time након', - 'before' => ':time прије', - - 'year_from_now' => ':count годину|:count године|:count година', - 'year_ago' => ':count годину|:count године|:count година', - - 'week_from_now' => ':count недјељу|:count недјеље|:count недјеља', - 'week_ago' => ':count недјељу|:count недјеље|:count недјеља', - - 'diff_now' => 'управо сада', - 'diff_today' => 'данас', - 'diff_today_regexp' => 'данас(?:\\s+у)?', - 'diff_yesterday' => 'јуче', - 'diff_yesterday_regexp' => 'јуче(?:\\s+у)?', - 'diff_tomorrow' => 'сутра', - 'diff_tomorrow_regexp' => 'сутра(?:\\s+у)?', - 'diff_before_yesterday' => 'прекјуче', - 'diff_after_tomorrow' => 'прекосјутра', - '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', - ], - 'calendar' => [ - 'sameDay' => '[данас у] LT', - 'nextDay' => '[сутра у] LT', - 'nextWeek' => function (CarbonInterface $date) { - switch ($date->dayOfWeek) { - case 0: - return '[у недељу у] LT'; - case 3: - return '[у среду у] LT'; - case 6: - return '[у суботу у] LT'; - default: - return '[у] dddd [у] LT'; - } - }, - 'lastDay' => '[јуче у] LT', - 'lastWeek' => function (CarbonInterface $date) { - switch ($date->dayOfWeek) { - case 0: - return '[прошле недеље у] LT'; - case 1: - return '[прошлог понедељка у] LT'; - case 2: - return '[прошлог уторка у] LT'; - case 3: - return '[прошле среде у] LT'; - case 4: - return '[прошлог четвртка у] LT'; - case 5: - return '[прошлог петка у] LT'; - default: - return '[прошле суботе у] LT'; - } - }, - 'sameElse' => 'L', - ], - 'ordinal' => ':number.', - 'months' => ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'], - 'months_short' => ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'], - 'weekdays' => ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], - 'weekdays_short' => ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'], - 'weekdays_min' => ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' и '], - 'meridiem' => ['АМ', 'ПМ'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_XK.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_XK.php deleted file mode 100644 index d6e29b86..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Cyrl_XK.php +++ /dev/null @@ -1,24 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Symfony\Component\Translation\PluralizationRules; - -// @codeCoverageIgnoreStart -if (class_exists(PluralizationRules::class)) { - PluralizationRules::set(static function ($number) { - return PluralizationRules::get($number, 'sr'); - }, 'sr_Cyrl_XK'); -} -// @codeCoverageIgnoreEnd - -return array_replace_recursive(require __DIR__.'/sr_Cyrl_BA.php', [ - 'weekdays' => ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn.php deleted file mode 100644 index 99716747..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/sr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_BA.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_BA.php deleted file mode 100644 index 95b2770d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_BA.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Symfony\Component\Translation\PluralizationRules; - -// @codeCoverageIgnoreStart -if (class_exists(PluralizationRules::class)) { - PluralizationRules::set(static function ($number) { - return PluralizationRules::get($number, 'sr'); - }, 'sr_Latn_BA'); -} -// @codeCoverageIgnoreEnd - -return array_replace_recursive(require __DIR__.'/sr_Latn.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D.M.yy.', - 'LL' => 'DD.MM.YYYY.', - 'LLL' => 'DD. MMMM YYYY. HH:mm', - 'LLLL' => 'dddd, DD. MMMM YYYY. HH:mm', - ], - 'weekdays' => ['nedjelja', 'ponedeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - 'weekdays_short' => ['ned.', 'pon.', 'ut.', 'sr.', 'čet.', 'pet.', 'sub.'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_ME.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_ME.php deleted file mode 100644 index 5b8f2d06..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_ME.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Glavić - * - Milos Sakovic - */ - -use Carbon\CarbonInterface; -use Symfony\Component\Translation\PluralizationRules; - -// @codeCoverageIgnoreStart -if (class_exists(PluralizationRules::class)) { - PluralizationRules::set(static function ($number) { - return PluralizationRules::get($number, 'sr'); - }, 'sr_Latn_ME'); -} -// @codeCoverageIgnoreEnd - -return array_replace_recursive(require __DIR__.'/sr.php', [ - 'month' => ':count mjesec|:count mjeseca|:count mjeseci', - 'week' => ':count nedjelja|:count nedjelje|:count nedjelja', - 'second' => ':count sekund|:count sekunde|:count sekundi', - 'ago' => 'prije :time', - 'from_now' => 'za :time', - 'after' => ':time nakon', - 'before' => ':time prije', - 'week_from_now' => ':count nedjelju|:count nedjelje|:count nedjelja', - 'week_ago' => ':count nedjelju|:count nedjelje|:count nedjelja', - 'second_ago' => ':count sekund|:count sekunde|:count sekundi', - 'diff_tomorrow' => 'sjutra', - 'calendar' => [ - 'nextDay' => '[sjutra u] LT', - 'nextWeek' => function (CarbonInterface $date) { - switch ($date->dayOfWeek) { - case 0: - return '[u nedjelju u] LT'; - case 3: - return '[u srijedu u] LT'; - case 6: - return '[u subotu u] LT'; - default: - return '[u] dddd [u] LT'; - } - }, - 'lastWeek' => function (CarbonInterface $date) { - switch ($date->dayOfWeek) { - case 0: - return '[prošle nedjelje u] LT'; - case 1: - return '[prošle nedjelje u] LT'; - case 2: - return '[prošlog utorka u] LT'; - case 3: - return '[prošle srijede u] LT'; - case 4: - return '[prošlog četvrtka u] LT'; - case 5: - return '[prošlog petka u] LT'; - default: - return '[prošle subote u] LT'; - } - }, - ], - 'weekdays' => ['nedjelja', 'ponedjeljak', 'utorak', 'srijeda', 'četvrtak', 'petak', 'subota'], - 'weekdays_short' => ['ned.', 'pon.', 'uto.', 'sri.', 'čet.', 'pet.', 'sub.'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_XK.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_XK.php deleted file mode 100644 index 5278e2e5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_Latn_XK.php +++ /dev/null @@ -1,24 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Symfony\Component\Translation\PluralizationRules; - -// @codeCoverageIgnoreStart -if (class_exists(PluralizationRules::class)) { - PluralizationRules::set(static function ($number) { - return PluralizationRules::get($number, 'sr'); - }, 'sr_Latn_XK'); -} -// @codeCoverageIgnoreEnd - -return array_replace_recursive(require __DIR__.'/sr_Latn_BA.php', [ - 'weekdays' => ['nedelja', 'ponedeljak', 'utorak', 'sreda', 'četvrtak', 'petak', 'subota'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_ME.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_ME.php deleted file mode 100644 index d7c65b91..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_ME.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/sr_Latn_ME.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS.php deleted file mode 100644 index bc5e04bf..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - sr_YU, sr_CS locale Danilo Segan bug-glibc-locales@gnu.org - */ -return require __DIR__.'/sr_Cyrl.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS@latin.php b/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS@latin.php deleted file mode 100644 index 99716747..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sr_RS@latin.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/sr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ss.php b/vendor/nesbot/carbon/src/Carbon/Lang/ss.php deleted file mode 100644 index 1c52c9bf..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ss.php +++ /dev/null @@ -1,78 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - Nicolai Davies - */ -return [ - 'year' => '{1}umnyaka|:count iminyaka', - 'month' => '{1}inyanga|:count tinyanga', - 'week' => '{1}:count liviki|:count emaviki', - 'day' => '{1}lilanga|:count emalanga', - 'hour' => '{1}lihora|:count emahora', - 'minute' => '{1}umzuzu|:count emizuzu', - 'second' => '{1}emizuzwana lomcane|:count mzuzwana', - 'ago' => 'wenteka nga :time', - 'from_now' => 'nga :time', - 'diff_yesterday' => 'Itolo', - 'diff_yesterday_regexp' => 'Itolo(?:\\s+nga)?', - 'diff_today' => 'Namuhla', - 'diff_today_regexp' => 'Namuhla(?:\\s+nga)?', - 'diff_tomorrow' => 'Kusasa', - 'diff_tomorrow_regexp' => 'Kusasa(?:\\s+nga)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Namuhla nga] LT', - 'nextDay' => '[Kusasa nga] LT', - 'nextWeek' => 'dddd [nga] LT', - 'lastDay' => '[Itolo nga] LT', - 'lastWeek' => 'dddd [leliphelile] [nga] LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number) { - $lastDigit = $number % 10; - - return $number.( - ((int) ($number % 100 / 10) === 1) ? 'e' : ( - ($lastDigit === 1 || $lastDigit === 2) ? 'a' : 'e' - ) - ); - }, - 'meridiem' => function ($hour) { - if ($hour < 11) { - return 'ekuseni'; - } - if ($hour < 15) { - return 'emini'; - } - if ($hour < 19) { - return 'entsambama'; - } - - return 'ebusuku'; - }, - 'months' => ['Bhimbidvwane', 'Indlovana', 'Indlov\'lenkhulu', 'Mabasa', 'Inkhwekhweti', 'Inhlaba', 'Kholwane', 'Ingci', 'Inyoni', 'Imphala', 'Lweti', 'Ingongoni'], - 'months_short' => ['Bhi', 'Ina', 'Inu', 'Mab', 'Ink', 'Inh', 'Kho', 'Igc', 'Iny', 'Imp', 'Lwe', 'Igo'], - 'weekdays' => ['Lisontfo', 'Umsombuluko', 'Lesibili', 'Lesitsatfu', 'Lesine', 'Lesihlanu', 'Umgcibelo'], - 'weekdays_short' => ['Lis', 'Umb', 'Lsb', 'Les', 'Lsi', 'Lsh', 'Umg'], - 'weekdays_min' => ['Li', 'Us', 'Lb', 'Lt', 'Ls', 'Lh', 'Ug'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ss_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ss_ZA.php deleted file mode 100644 index ba89527c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ss_ZA.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/ss.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/st.php b/vendor/nesbot/carbon/src/Carbon/Lang/st.php deleted file mode 100644 index b065445b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/st.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/st_ZA.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/st_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/st_ZA.php deleted file mode 100644 index 5bce7f20..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/st_ZA.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['Pherekgong', 'Hlakola', 'Tlhakubele', 'Mmese', 'Motsheanong', 'Phupjane', 'Phupu', 'Phato', 'Leotse', 'Mphalane', 'Pudungwana', 'Tshitwe'], - 'months_short' => ['Phe', 'Hla', 'TlH', 'Mme', 'Mot', 'Jan', 'Upu', 'Pha', 'Leo', 'Mph', 'Pud', 'Tsh'], - 'weekdays' => ['Sontaha', 'Mantaha', 'Labobedi', 'Laboraro', 'Labone', 'Labohlano', 'Moqebelo'], - 'weekdays_short' => ['Son', 'Mma', 'Bed', 'Rar', 'Ne', 'Hla', 'Moq'], - 'weekdays_min' => ['Son', 'Mma', 'Bed', 'Rar', 'Ne', 'Hla', 'Moq'], - 'day_of_first_week_of_year' => 1, - - 'week' => ':count Sontaha', // less reliable - 'w' => ':count Sontaha', // less reliable - 'a_week' => ':count Sontaha', // less reliable - - 'day' => ':count letsatsi', // less reliable - 'd' => ':count letsatsi', // less reliable - 'a_day' => ':count letsatsi', // less reliable - - 'hour' => ':count sešupanako', // less reliable - 'h' => ':count sešupanako', // less reliable - 'a_hour' => ':count sešupanako', // less reliable - - 'minute' => ':count menyane', // less reliable - 'min' => ':count menyane', // less reliable - 'a_minute' => ':count menyane', // less reliable - - 'second' => ':count thusa', // less reliable - 's' => ':count thusa', // less reliable - 'a_second' => ':count thusa', // less reliable - - 'year' => ':count selemo', - 'y' => ':count selemo', - 'a_year' => ':count selemo', - - 'month' => ':count kgwedi', - 'm' => ':count kgwedi', - 'a_month' => ':count kgwedi', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sv.php b/vendor/nesbot/carbon/src/Carbon/Lang/sv.php deleted file mode 100644 index 1706c719..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sv.php +++ /dev/null @@ -1,87 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - Kristoffer Snabb - * - JD Isaacks - * - Jens Herlevsen - * - Nightpine - * - Anders Nygren (litemerafrukt) - */ -return [ - 'year' => ':count år', - 'a_year' => 'ett år|:count år', - 'y' => ':count år', - 'month' => ':count månad|:count månader', - 'a_month' => 'en månad|:count månader', - 'm' => ':count mån', - 'week' => ':count vecka|:count veckor', - 'a_week' => 'en vecka|:count veckor', - 'w' => ':count v', - 'day' => ':count dag|:count dagar', - 'a_day' => 'en dag|:count dagar', - 'd' => ':count dgr', - 'hour' => ':count timme|:count timmar', - 'a_hour' => 'en timme|:count timmar', - 'h' => ':count tim', - 'minute' => ':count minut|:count minuter', - 'a_minute' => 'en minut|:count minuter', - 'min' => ':count min', - 'second' => ':count sekund|:count sekunder', - 'a_second' => 'några sekunder|:count sekunder', - 's' => ':count s', - 'ago' => 'för :time sedan', - 'from_now' => 'om :time', - 'after' => ':time efter', - 'before' => ':time före', - 'diff_now' => 'nu', - 'diff_today' => 'I dag', - 'diff_yesterday' => 'i går', - 'diff_yesterday_regexp' => 'I går', - 'diff_tomorrow' => 'i morgon', - 'diff_tomorrow_regexp' => 'I morgon', - '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', - ], - 'calendar' => [ - 'sameDay' => '[I dag] LT', - 'nextDay' => '[I morgon] LT', - 'nextWeek' => '[På] dddd LT', - 'lastDay' => '[I går] LT', - 'lastWeek' => '[I] dddd[s] LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number) { - $lastDigit = $number % 10; - - return $number.( - ((int) ($number % 100 / 10) === 1) ? 'e' : ( - ($lastDigit === 1 || $lastDigit === 2) ? 'a' : 'e' - ) - ); - }, - 'months' => ['januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', 'oktober', 'november', 'december'], - 'months_short' => ['jan', 'feb', 'mar', 'apr', 'maj', 'jun', 'jul', 'aug', 'sep', 'okt', 'nov', 'dec'], - 'weekdays' => ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag'], - 'weekdays_short' => ['sön', 'mån', 'tis', 'ons', 'tors', 'fre', 'lör'], - 'weekdays_min' => ['sö', 'må', 'ti', 'on', 'to', 'fr', 'lö'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' och '], - 'meridiem' => ['fm', 'em'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sv_AX.php b/vendor/nesbot/carbon/src/Carbon/Lang/sv_AX.php deleted file mode 100644 index 70cc5585..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sv_AX.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/sv.php', [ - 'formats' => [ - 'L' => 'YYYY-MM-dd', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sv_FI.php b/vendor/nesbot/carbon/src/Carbon/Lang/sv_FI.php deleted file mode 100644 index d7182c83..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sv_FI.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/sv.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sv_SE.php b/vendor/nesbot/carbon/src/Carbon/Lang/sv_SE.php deleted file mode 100644 index d7182c83..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sv_SE.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/sv.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sw.php b/vendor/nesbot/carbon/src/Carbon/Lang/sw.php deleted file mode 100644 index f8630d53..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sw.php +++ /dev/null @@ -1,74 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - leyluj - * - Josh Soref - * - ryanhart2 - */ -return [ - 'year' => 'mwaka :count|miaka :count', - 'a_year' => 'mwaka mmoja|miaka :count', - 'y' => 'mwaka :count|miaka :count', - 'month' => 'mwezi :count|miezi :count', - 'a_month' => 'mwezi mmoja|miezi :count', - 'm' => 'mwezi :count|miezi :count', - 'week' => 'wiki :count', - 'a_week' => 'wiki mmoja|wiki :count', - 'w' => 'w. :count', - 'day' => 'siku :count', - 'a_day' => 'siku moja|masiku :count', - 'd' => 'si. :count', - 'hour' => 'saa :count|masaa :count', - 'a_hour' => 'saa limoja|masaa :count', - 'h' => 'saa :count|masaa :count', - 'minute' => 'dakika :count', - 'a_minute' => 'dakika moja|dakika :count', - 'min' => 'd. :count', - 'second' => 'sekunde :count', - 'a_second' => 'hivi punde|sekunde :count', - 's' => 'se. :count', - 'ago' => 'tokea :time', - 'from_now' => ':time baadaye', - 'after' => ':time baada', - 'before' => ':time kabla', - 'diff_now' => 'sasa hivi', - 'diff_today' => 'leo', - 'diff_today_regexp' => 'leo(?:\\s+saa)?', - 'diff_yesterday' => 'jana', - 'diff_tomorrow' => 'kesho', - 'diff_tomorrow_regexp' => 'kesho(?:\\s+saa)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[leo saa] LT', - 'nextDay' => '[kesho saa] LT', - 'nextWeek' => '[wiki ijayo] dddd [saat] LT', - 'lastDay' => '[jana] LT', - 'lastWeek' => '[wiki iliyopita] dddd [saat] LT', - 'sameElse' => 'L', - ], - 'months' => ['Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'], - 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - 'weekdays' => ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'], - 'weekdays_short' => ['Jpl', 'Jtat', 'Jnne', 'Jtan', 'Alh', 'Ijm', 'Jmos'], - 'weekdays_min' => ['J2', 'J3', 'J4', 'J5', 'Al', 'Ij', 'J1'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' na '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sw_CD.php b/vendor/nesbot/carbon/src/Carbon/Lang/sw_CD.php deleted file mode 100644 index ec9117b5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sw_CD.php +++ /dev/null @@ -1,17 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/sw.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sw_KE.php b/vendor/nesbot/carbon/src/Carbon/Lang/sw_KE.php deleted file mode 100644 index 2ace0db2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sw_KE.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Kamusi Project Martin Benjamin locales@kamusi.org - */ -return array_replace_recursive(require __DIR__.'/sw.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'], - 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - 'weekdays' => ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'], - 'weekdays_short' => ['J2', 'J3', 'J4', 'J5', 'Alh', 'Ij', 'J1'], - 'weekdays_min' => ['J2', 'J3', 'J4', 'J5', 'Alh', 'Ij', 'J1'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['asubuhi', 'alasiri'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sw_TZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/sw_TZ.php deleted file mode 100644 index fab3cd68..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sw_TZ.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Kamusi Project Martin Benjamin locales@kamusi.org - */ -return array_replace_recursive(require __DIR__.'/sw.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['Januari', 'Februari', 'Machi', 'Aprili', 'Mei', 'Juni', 'Julai', 'Agosti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'], - 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - 'weekdays' => ['Jumapili', 'Jumatatu', 'Jumanne', 'Jumatano', 'Alhamisi', 'Ijumaa', 'Jumamosi'], - 'weekdays_short' => ['J2', 'J3', 'J4', 'J5', 'Alh', 'Ij', 'J1'], - 'weekdays_min' => ['J2', 'J3', 'J4', 'J5', 'Alh', 'Ij', 'J1'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['asubuhi', 'alasiri'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/sw_UG.php b/vendor/nesbot/carbon/src/Carbon/Lang/sw_UG.php deleted file mode 100644 index ec9117b5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/sw_UG.php +++ /dev/null @@ -1,17 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/sw.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/szl.php b/vendor/nesbot/carbon/src/Carbon/Lang/szl.php deleted file mode 100644 index 4429c4f5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/szl.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/szl_PL.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/szl_PL.php b/vendor/nesbot/carbon/src/Carbon/Lang/szl_PL.php deleted file mode 100644 index 9adddcf8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/szl_PL.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - szl_PL locale Przemyslaw Buczkowski libc-alpha@sourceware.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], - 'months' => ['styczyń', 'luty', 'merc', 'kwjeciyń', 'moj', 'czyrwjyń', 'lipjyń', 'siyrpjyń', 'wrzesiyń', 'październik', 'listopad', 'grudziyń'], - 'months_short' => ['sty', 'lut', 'mer', 'kwj', 'moj', 'czy', 'lip', 'siy', 'wrz', 'paź', 'lis', 'gru'], - 'weekdays' => ['niydziela', 'pyńdziŏek', 'wtŏrek', 'strzŏda', 'sztwortek', 'pjōntek', 'sobŏta'], - 'weekdays_short' => ['niy', 'pyń', 'wtŏ', 'str', 'szt', 'pjō', 'sob'], - 'weekdays_min' => ['niy', 'pyń', 'wtŏ', 'str', 'szt', 'pjō', 'sob'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - - 'year' => ':count rok', - 'y' => ':count rok', - 'a_year' => ':count rok', - - 'month' => ':count mjeśůnc', - 'm' => ':count mjeśůnc', - 'a_month' => ':count mjeśůnc', - - 'week' => ':count tydźyń', - 'w' => ':count tydźyń', - 'a_week' => ':count tydźyń', - - 'day' => ':count dźyń', - 'd' => ':count dźyń', - 'a_day' => ':count dźyń', - - 'hour' => ':count godzina', - 'h' => ':count godzina', - 'a_hour' => ':count godzina', - - 'minute' => ':count minuta', - 'min' => ':count minuta', - 'a_minute' => ':count minuta', - - 'second' => ':count sekůnda', - 's' => ':count sekůnda', - 'a_second' => ':count sekůnda', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ta.php b/vendor/nesbot/carbon/src/Carbon/Lang/ta.php deleted file mode 100644 index c1d89cbb..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ta.php +++ /dev/null @@ -1,97 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - François B - * - JD Isaacks - * - Satheez - */ -return [ - 'year' => ':count வருடம்|:count ஆண்டுகள்', - 'a_year' => 'ஒரு வருடம்|:count ஆண்டுகள்', - 'y' => ':count வருட.|:count ஆண்.', - 'month' => ':count மாதம்|:count மாதங்கள்', - 'a_month' => 'ஒரு மாதம்|:count மாதங்கள்', - 'm' => ':count மாத.', - 'week' => ':count வாரம்|:count வாரங்கள்', - 'a_week' => 'ஒரு வாரம்|:count வாரங்கள்', - 'w' => ':count வார.', - 'day' => ':count நாள்|:count நாட்கள்', - 'a_day' => 'ஒரு நாள்|:count நாட்கள்', - 'd' => ':count நாள்|:count நாட்.', - 'hour' => ':count மணி நேரம்|:count மணி நேரம்', - 'a_hour' => 'ஒரு மணி நேரம்|:count மணி நேரம்', - 'h' => ':count மணி.', - 'minute' => ':count நிமிடம்|:count நிமிடங்கள்', - 'a_minute' => 'ஒரு நிமிடம்|:count நிமிடங்கள்', - 'min' => ':count நிமி.', - 'second' => ':count சில விநாடிகள்|:count விநாடிகள்', - 'a_second' => 'ஒரு சில விநாடிகள்|:count விநாடிகள்', - 's' => ':count விநா.', - 'ago' => ':time முன்', - 'from_now' => ':time இல்', - 'before' => ':time முன்', - 'after' => ':time பின்', - 'diff_now' => 'இப்போது', - 'diff_today' => 'இன்று', - 'diff_yesterday' => 'நேற்று', - 'diff_tomorrow' => 'நாளை', - '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', - ], - 'calendar' => [ - 'sameDay' => '[இன்று] LT', - 'nextDay' => '[நாளை] LT', - 'nextWeek' => 'dddd, LT', - 'lastDay' => '[நேற்று] LT', - 'lastWeek' => '[கடந்த வாரம்] dddd, LT', - 'sameElse' => 'L', - ], - 'ordinal' => ':numberவது', - 'meridiem' => function ($hour) { - if ($hour < 2) { - return ' யாமம்'; - } - if ($hour < 6) { - return ' வைகறை'; - } - if ($hour < 10) { - return ' காலை'; - } - if ($hour < 14) { - return ' நண்பகல்'; - } - if ($hour < 18) { - return ' எற்பாடு'; - } - if ($hour < 22) { - return ' மாலை'; - } - - return ' யாமம்'; - }, - 'months' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டெம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'], - 'months_short' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டெம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'], - 'weekdays' => ['ஞாயிற்றுக்கிழமை', 'திங்கட்கிழமை', 'செவ்வாய்கிழமை', 'புதன்கிழமை', 'வியாழக்கிழமை', 'வெள்ளிக்கிழமை', 'சனிக்கிழமை'], - 'weekdays_short' => ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'], - 'weekdays_min' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' மற்றும் '], - 'weekend' => [0, 0], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ta_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ta_IN.php deleted file mode 100644 index 492d4c56..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ta_IN.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/ta.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'], - 'months_short' => ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'], - 'weekdays' => ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'], - 'weekdays_short' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], - 'weekdays_min' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['காலை', 'மாலை'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ta_LK.php b/vendor/nesbot/carbon/src/Carbon/Lang/ta_LK.php deleted file mode 100644 index 8e2afbf6..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ta_LK.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - J.Yogaraj 94-777-315206 yogaraj.ubuntu@gmail.com - */ -return array_replace_recursive(require __DIR__.'/ta.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'], - 'months_short' => ['ஜன', 'பிப்', 'மார்', 'ஏப்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக', 'செப்', 'அக்', 'நவ', 'டிச'], - 'weekdays' => ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'], - 'weekdays_short' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], - 'weekdays_min' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['காலை', 'மாலை'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ta_MY.php b/vendor/nesbot/carbon/src/Carbon/Lang/ta_MY.php deleted file mode 100644 index a6cd8b51..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ta_MY.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ta.php', [ - 'formats' => [ - 'LT' => 'a h:mm', - 'LTS' => 'a h:mm:ss', - 'L' => 'D/M/yy', - 'LL' => 'D MMM, YYYY', - 'LLL' => 'D MMMM, YYYY, a h:mm', - 'LLLL' => 'dddd, D MMMM, YYYY, a h:mm', - ], - 'months' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'], - 'months_short' => ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'], - 'weekdays' => ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'], - 'weekdays_short' => ['ஞாயி.', 'திங்.', 'செவ்.', 'புத.', 'வியா.', 'வெள்.', 'சனி'], - 'weekdays_min' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], - 'first_day_of_week' => 1, - 'meridiem' => ['மு.ப', 'பி.ப'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ta_SG.php b/vendor/nesbot/carbon/src/Carbon/Lang/ta_SG.php deleted file mode 100644 index 7dbedeee..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ta_SG.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ta.php', [ - 'formats' => [ - 'LT' => 'a h:mm', - 'LTS' => 'a h:mm:ss', - 'L' => 'D/M/yy', - 'LL' => 'D MMM, YYYY', - 'LLL' => 'D MMMM, YYYY, a h:mm', - 'LLLL' => 'dddd, D MMMM, YYYY, a h:mm', - ], - 'months' => ['ஜனவரி', 'பிப்ரவரி', 'மார்ச்', 'ஏப்ரல்', 'மே', 'ஜூன்', 'ஜூலை', 'ஆகஸ்ட்', 'செப்டம்பர்', 'அக்டோபர்', 'நவம்பர்', 'டிசம்பர்'], - 'months_short' => ['ஜன.', 'பிப்.', 'மார்.', 'ஏப்.', 'மே', 'ஜூன்', 'ஜூலை', 'ஆக.', 'செப்.', 'அக்.', 'நவ.', 'டிச.'], - 'weekdays' => ['ஞாயிறு', 'திங்கள்', 'செவ்வாய்', 'புதன்', 'வியாழன்', 'வெள்ளி', 'சனி'], - 'weekdays_short' => ['ஞாயி.', 'திங்.', 'செவ்.', 'புத.', 'வியா.', 'வெள்.', 'சனி'], - 'weekdays_min' => ['ஞா', 'தி', 'செ', 'பு', 'வி', 'வெ', 'ச'], - 'meridiem' => ['மு.ப', 'பி.ப'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tcy.php b/vendor/nesbot/carbon/src/Carbon/Lang/tcy.php deleted file mode 100644 index 2eb99057..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tcy.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/tcy_IN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tcy_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/tcy_IN.php deleted file mode 100644 index 2ff20e0e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tcy_IN.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IndLinux.org, Samsung Electronics Co., Ltd. alexey.merzlyakov@samsung.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['ಜನವರಿ', 'ಫೆಬ್ರುವರಿ', 'ಮಾರ್ಚ್', 'ಏಪ್ರಿಲ್‌‌', 'ಮೇ', 'ಜೂನ್', 'ಜುಲೈ', 'ಆಗಸ್ಟ್', 'ಸೆಪ್ಟೆಂಬರ್‌', 'ಅಕ್ಟೋಬರ್', 'ನವೆಂಬರ್', 'ಡಿಸೆಂಬರ್'], - 'months_short' => ['ಜ', 'ಫೆ', 'ಮಾ', 'ಏ', 'ಮೇ', 'ಜೂ', 'ಜು', 'ಆ', 'ಸೆ', 'ಅ', 'ನ', 'ಡಿ'], - 'weekdays' => ['ಐಥಾರ', 'ಸೋಮಾರ', 'ಅಂಗರೆ', 'ಬುಧಾರ', 'ಗುರುವಾರ', 'ಶುಕ್ರರ', 'ಶನಿವಾರ'], - 'weekdays_short' => ['ಐ', 'ಸೋ', 'ಅಂ', 'ಬು', 'ಗು', 'ಶು', 'ಶ'], - 'weekdays_min' => ['ಐ', 'ಸೋ', 'ಅಂ', 'ಬು', 'ಗು', 'ಶು', 'ಶ'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['ಕಾಂಡೆ', 'ಬಯ್ಯ'], - - 'year' => ':count ನೀರ್', // less reliable - 'y' => ':count ನೀರ್', // less reliable - 'a_year' => ':count ನೀರ್', // less reliable - - 'month' => ':count ಮೀನ್', // less reliable - 'm' => ':count ಮೀನ್', // less reliable - 'a_month' => ':count ಮೀನ್', // less reliable - - 'day' => ':count ಸುಗ್ಗಿ', // less reliable - 'd' => ':count ಸುಗ್ಗಿ', // less reliable - 'a_day' => ':count ಸುಗ್ಗಿ', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/te.php b/vendor/nesbot/carbon/src/Carbon/Lang/te.php deleted file mode 100644 index ac38218f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/te.php +++ /dev/null @@ -1,89 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Kunal Marwaha - * - Josh Soref - * - François B - * - kc - */ -return [ - 'year' => ':count సంవత్సరం|:count సంవత్సరాలు', - 'a_year' => 'ఒక సంవత్సరం|:count సంవత్సరాలు', - 'y' => ':count సం.', - 'month' => ':count నెల|:count నెలలు', - 'a_month' => 'ఒక నెల|:count నెలలు', - 'm' => ':count నెల|:count నెల.', - 'week' => ':count వారం|:count వారాలు', - 'a_week' => 'ఒక వారం|:count వారాలు', - 'w' => ':count వార.|:count వారా.', - 'day' => ':count రోజు|:count రోజులు', - 'a_day' => 'ఒక రోజు|:count రోజులు', - 'd' => ':count రోజు|:count రోజు.', - 'hour' => ':count గంట|:count గంటలు', - 'a_hour' => 'ఒక గంట|:count గంటలు', - 'h' => ':count గం.', - 'minute' => ':count నిమిషం|:count నిమిషాలు', - 'a_minute' => 'ఒక నిమిషం|:count నిమిషాలు', - 'min' => ':count నిమి.', - 'second' => ':count సెకను|:count సెకన్లు', - 'a_second' => 'కొన్ని క్షణాలు|:count సెకన్లు', - 's' => ':count సెక.', - 'ago' => ':time క్రితం', - 'from_now' => ':time లో', - 'diff_now' => 'ప్రస్తుతం', - 'diff_today' => 'నేడు', - 'diff_yesterday' => 'నిన్న', - 'diff_tomorrow' => 'రేపు', - 'formats' => [ - 'LT' => 'A h:mm', - 'LTS' => 'A h:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY, A h:mm', - 'LLLL' => 'dddd, D MMMM YYYY, A h:mm', - ], - 'calendar' => [ - 'sameDay' => '[నేడు] LT', - 'nextDay' => '[రేపు] LT', - 'nextWeek' => 'dddd, LT', - 'lastDay' => '[నిన్న] LT', - 'lastWeek' => '[గత] dddd, LT', - 'sameElse' => 'L', - ], - 'ordinal' => ':numberవ', - 'meridiem' => function ($hour) { - if ($hour < 4) { - return 'రాత్రి'; - } - if ($hour < 10) { - return 'ఉదయం'; - } - if ($hour < 17) { - return 'మధ్యాహ్నం'; - } - if ($hour < 20) { - return 'సాయంత్రం'; - } - - return ' రాత్రి'; - }, - 'months' => ['జనవరి', 'ఫిబ్రవరి', 'మార్చి', 'ఏప్రిల్', 'మే', 'జూన్', 'జూలై', 'ఆగస్టు', 'సెప్టెంబర్', 'అక్టోబర్', 'నవంబర్', 'డిసెంబర్'], - 'months_short' => ['జన.', 'ఫిబ్ర.', 'మార్చి', 'ఏప్రి.', 'మే', 'జూన్', 'జూలై', 'ఆగ.', 'సెప్.', 'అక్టో.', 'నవ.', 'డిసె.'], - 'weekdays' => ['ఆదివారం', 'సోమవారం', 'మంగళవారం', 'బుధవారం', 'గురువారం', 'శుక్రవారం', 'శనివారం'], - 'weekdays_short' => ['ఆది', 'సోమ', 'మంగళ', 'బుధ', 'గురు', 'శుక్ర', 'శని'], - 'weekdays_min' => ['ఆ', 'సో', 'మం', 'బు', 'గు', 'శు', 'శ'], - 'list' => ', ', - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, - 'weekend' => [0, 0], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/te_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/te_IN.php deleted file mode 100644 index 3963f8d5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/te_IN.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/te.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/teo.php b/vendor/nesbot/carbon/src/Carbon/Lang/teo.php deleted file mode 100644 index ca30c37d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/teo.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ta.php', [ - 'meridiem' => ['Taparachu', 'Ebongi'], - 'weekdays' => ['Nakaejuma', 'Nakaebarasa', 'Nakaare', 'Nakauni', 'Nakaung’on', 'Nakakany', 'Nakasabiti'], - 'weekdays_short' => ['Jum', 'Bar', 'Aar', 'Uni', 'Ung', 'Kan', 'Sab'], - 'weekdays_min' => ['Jum', 'Bar', 'Aar', 'Uni', 'Ung', 'Kan', 'Sab'], - 'months' => ['Orara', 'Omuk', 'Okwamg’', 'Odung’el', 'Omaruk', 'Omodok’king’ol', 'Ojola', 'Opedel', 'Osokosokoma', 'Otibar', 'Olabor', 'Opoo'], - 'months_short' => ['Rar', 'Muk', 'Kwa', 'Dun', 'Mar', 'Mod', 'Jol', 'Ped', 'Sok', 'Tib', 'Lab', 'Poo'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/teo_KE.php b/vendor/nesbot/carbon/src/Carbon/Lang/teo_KE.php deleted file mode 100644 index 010a04f5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/teo_KE.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/teo.php', [ - 'first_day_of_week' => 0, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tet.php b/vendor/nesbot/carbon/src/Carbon/Lang/tet.php deleted file mode 100644 index d0544d4e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tet.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Joshua Brooks - * - François B - */ -return [ - 'year' => 'tinan :count', - 'a_year' => '{1}tinan ida|tinan :count', - 'month' => 'fulan :count', - 'a_month' => '{1}fulan ida|fulan :count', - 'week' => 'semana :count', - 'a_week' => '{1}semana ida|semana :count', - 'day' => 'loron :count', - 'a_day' => '{1}loron ida|loron :count', - 'hour' => 'oras :count', - 'a_hour' => '{1}oras ida|oras :count', - 'minute' => 'minutu :count', - 'a_minute' => '{1}minutu ida|minutu :count', - 'second' => 'segundu :count', - 'a_second' => '{1}segundu balun|segundu :count', - 'ago' => ':time liuba', - 'from_now' => 'iha :time', - 'diff_yesterday' => 'Horiseik', - 'diff_yesterday_regexp' => 'Horiseik(?:\\s+iha)?', - 'diff_today' => 'Ohin', - 'diff_today_regexp' => 'Ohin(?:\\s+iha)?', - 'diff_tomorrow' => 'Aban', - 'diff_tomorrow_regexp' => 'Aban(?:\\s+iha)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Ohin iha] LT', - 'nextDay' => '[Aban iha] LT', - 'nextWeek' => 'dddd [iha] LT', - 'lastDay' => '[Horiseik iha] LT', - 'lastWeek' => 'dddd [semana kotuk] [iha] LT', - 'sameElse' => 'L', - ], - 'ordinal' => ':numberº', - 'months' => ['Janeiru', 'Fevereiru', 'Marsu', 'Abril', 'Maiu', 'Juñu', 'Jullu', 'Agustu', 'Setembru', 'Outubru', 'Novembru', 'Dezembru'], - 'months_short' => ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'], - 'weekdays' => ['Domingu', 'Segunda', 'Tersa', 'Kuarta', 'Kinta', 'Sesta', 'Sabadu'], - 'weekdays_short' => ['Dom', 'Seg', 'Ters', 'Kua', 'Kint', 'Sest', 'Sab'], - 'weekdays_min' => ['Do', 'Seg', 'Te', 'Ku', 'Ki', 'Ses', 'Sa'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tg.php b/vendor/nesbot/carbon/src/Carbon/Lang/tg.php deleted file mode 100644 index b7df893c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tg.php +++ /dev/null @@ -1,104 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Orif N. Jr - */ -return [ - 'year' => '{1}як сол|:count сол', - 'month' => '{1}як моҳ|:count моҳ', - 'week' => '{1}як ҳафта|:count ҳафта', - 'day' => '{1}як рӯз|:count рӯз', - 'hour' => '{1}як соат|:count соат', - 'minute' => '{1}як дақиқа|:count дақиқа', - 'second' => '{1}якчанд сония|:count сония', - 'ago' => ':time пеш', - 'from_now' => 'баъди :time', - 'diff_today' => 'Имрӯз', - 'diff_yesterday' => 'Дирӯз', - 'diff_yesterday_regexp' => 'Дирӯз(?:\\s+соати)?', - 'diff_tomorrow' => 'Пагоҳ', - 'diff_tomorrow_regexp' => 'Пагоҳ(?:\\s+соати)?', - 'diff_today_regexp' => 'Имрӯз(?:\\s+соати)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Имрӯз соати] LT', - 'nextDay' => '[Пагоҳ соати] LT', - 'nextWeek' => 'dddd[и] [ҳафтаи оянда соати] LT', - 'lastDay' => '[Дирӯз соати] LT', - 'lastWeek' => 'dddd[и] [ҳафтаи гузашта соати] LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number) { - if ($number === 0) { // special case for zero - return "$number-ıncı"; - } - - static $suffixes = [ - 0 => '-ум', - 1 => '-ум', - 2 => '-юм', - 3 => '-юм', - 4 => '-ум', - 5 => '-ум', - 6 => '-ум', - 7 => '-ум', - 8 => '-ум', - 9 => '-ум', - 10 => '-ум', - 12 => '-ум', - 13 => '-ум', - 20 => '-ум', - 30 => '-юм', - 40 => '-ум', - 50 => '-ум', - 60 => '-ум', - 70 => '-ум', - 80 => '-ум', - 90 => '-ум', - 100 => '-ум', - ]; - - return $number.($suffixes[$number] ?? $suffixes[$number % 10] ?? $suffixes[$number >= 100 ? 100 : -1] ?? ''); - }, - 'meridiem' => function ($hour) { - if ($hour < 4) { - return 'шаб'; - } - if ($hour < 11) { - return 'субҳ'; - } - if ($hour < 16) { - return 'рӯз'; - } - if ($hour < 19) { - return 'бегоҳ'; - } - - return 'шаб'; - }, - 'months' => ['январ', 'феврал', 'март', 'апрел', 'май', 'июн', 'июл', 'август', 'сентябр', 'октябр', 'ноябр', 'декабр'], - 'months_short' => ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'], - 'weekdays' => ['якшанбе', 'душанбе', 'сешанбе', 'чоршанбе', 'панҷшанбе', 'ҷумъа', 'шанбе'], - 'weekdays_short' => ['яшб', 'дшб', 'сшб', 'чшб', 'пшб', 'ҷум', 'шнб'], - 'weekdays_min' => ['яш', 'дш', 'сш', 'чш', 'пш', 'ҷм', 'шб'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' ва '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tg_TJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/tg_TJ.php deleted file mode 100644 index badc7d1f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tg_TJ.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/tg.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/th.php b/vendor/nesbot/carbon/src/Carbon/Lang/th.php deleted file mode 100644 index 6397f6e4..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/th.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Nate Whittaker - * - John MacAslan - * - Chanintorn Asavavichairoj - * - JD Isaacks - * - ROKAISAKKON - * - RO'KAISAKKON - * - Andreas Möller - * - nithisa - */ -return [ - 'year' => ':count ปี', - 'y' => ':count ปี', - 'month' => ':count เดือน', - 'm' => ':count เดือน', - 'week' => ':count สัปดาห์', - 'w' => ':count สัปดาห์', - 'day' => ':count วัน', - 'd' => ':count วัน', - 'hour' => ':count ชั่วโมง', - 'h' => ':count ชั่วโมง', - 'minute' => ':count นาที', - 'min' => ':count นาที', - 'second' => ':count วินาที', - 'a_second' => '{1}ไม่กี่วินาที|]1,Inf[:count วินาที', - 's' => ':count วินาที', - 'ago' => ':timeที่แล้ว', - 'from_now' => 'อีก :time', - 'after' => ':timeหลังจากนี้', - 'before' => ':timeก่อน', - 'diff_now' => 'ขณะนี้', - 'diff_today' => 'วันนี้', - 'diff_today_regexp' => 'วันนี้(?:\\s+เวลา)?', - 'diff_yesterday' => 'เมื่อวาน', - 'diff_yesterday_regexp' => 'เมื่อวานนี้(?:\\s+เวลา)?', - 'diff_tomorrow' => 'พรุ่งนี้', - 'diff_tomorrow_regexp' => 'พรุ่งนี้(?:\\s+เวลา)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[วันนี้ เวลา] LT', - 'nextDay' => '[พรุ่งนี้ เวลา] LT', - 'nextWeek' => 'dddd[หน้า เวลา] LT', - 'lastDay' => '[เมื่อวานนี้ เวลา] LT', - 'lastWeek' => '[วัน]dddd[ที่แล้ว เวลา] LT', - 'sameElse' => 'L', - ], - 'meridiem' => ['ก่อนเที่ยง', 'หลังเที่ยง'], - 'months' => ['มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'], - 'months_short' => ['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.'], - 'weekdays' => ['อาทิตย์', 'จันทร์', 'อังคาร', 'พุธ', 'พฤหัสบดี', 'ศุกร์', 'เสาร์'], - 'weekdays_short' => ['อาทิตย์', 'จันทร์', 'อังคาร', 'พุธ', 'พฤหัส', 'ศุกร์', 'เสาร์'], - 'weekdays_min' => ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'], - 'list' => [', ', ' และ '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/th_TH.php b/vendor/nesbot/carbon/src/Carbon/Lang/th_TH.php deleted file mode 100644 index b9f94b2d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/th_TH.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/th.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/the.php b/vendor/nesbot/carbon/src/Carbon/Lang/the.php deleted file mode 100644 index 85f8333b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/the.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/the_NP.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/the_NP.php b/vendor/nesbot/carbon/src/Carbon/Lang/the_NP.php deleted file mode 100644 index 34da1627..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/the_NP.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Chitwanix OS Development info@chitwanix.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'dddd DD MMM YYYY', - ], - 'months' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'], - 'months_short' => ['जनवरी', 'फ़रवरी', 'मार्च', 'अप्रेल', 'मई', 'जून', 'जुलाई', 'अगस्त', 'सितम्बर', 'अक्टूबर', 'नवम्बर', 'दिसम्बर'], - 'weekdays' => ['आइतबार', 'सोमबार', 'मंगलबार', 'बुधबार', 'बिहिबार', 'शुक्रबार', 'शनिबार'], - 'weekdays_short' => ['आइत', 'सोम', 'मंगल', 'बुध', 'बिहि', 'शुक्र', 'शनि'], - 'weekdays_min' => ['आइत', 'सोम', 'मंगल', 'बुध', 'बिहि', 'शुक्र', 'शनि'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['पूर्वाह्न', 'अपराह्न'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ti.php b/vendor/nesbot/carbon/src/Carbon/Lang/ti.php deleted file mode 100644 index ffd32369..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ti.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/ti_ER.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ti_ER.php b/vendor/nesbot/carbon/src/Carbon/Lang/ti_ER.php deleted file mode 100644 index 310c51cc..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ti_ER.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation locales@geez.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['ጥሪ', 'ለካቲት', 'መጋቢት', 'ሚያዝያ', 'ግንቦት', 'ሰነ', 'ሓምለ', 'ነሓሰ', 'መስከረም', 'ጥቅምቲ', 'ሕዳር', 'ታሕሳስ'], - 'months_short' => ['ጥሪ ', 'ለካቲ', 'መጋቢ', 'ሚያዝ', 'ግንቦ', 'ሰነ ', 'ሓምለ', 'ነሓሰ', 'መስከ', 'ጥቅም', 'ሕዳር', 'ታሕሳ'], - 'weekdays' => ['ሰንበት', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'], - 'weekdays_short' => ['ሰንበ', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'], - 'weekdays_min' => ['ሰንበ', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['ንጉሆ ሰዓተ', 'ድሕር ሰዓት'], - - 'year' => ':count ዓመት', - 'y' => ':count ዓመት', - 'a_year' => ':count ዓመት', - - 'month' => 'ወርሒ :count', - 'm' => 'ወርሒ :count', - 'a_month' => 'ወርሒ :count', - - 'week' => ':count ሰሙን', - 'w' => ':count ሰሙን', - 'a_week' => ':count ሰሙን', - - 'day' => ':count መዓልቲ', - 'd' => ':count መዓልቲ', - 'a_day' => ':count መዓልቲ', - - 'hour' => ':count ሰዓት', - 'h' => ':count ሰዓት', - 'a_hour' => ':count ሰዓት', - - 'minute' => ':count ደቒቕ', - 'min' => ':count ደቒቕ', - 'a_minute' => ':count ደቒቕ', - - 'second' => ':count ሰከንድ', - 's' => ':count ሰከንድ', - 'a_second' => ':count ሰከንድ', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ti_ET.php b/vendor/nesbot/carbon/src/Carbon/Lang/ti_ET.php deleted file mode 100644 index 024217f2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ti_ET.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation locales@geez.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['ጃንዩወሪ', 'ፌብሩወሪ', 'ማርች', 'ኤፕረል', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስት', 'ሴፕቴምበር', 'ኦክተውበር', 'ኖቬምበር', 'ዲሴምበር'], - 'months_short' => ['ጃንዩ', 'ፌብሩ', 'ማርች', 'ኤፕረ', 'ሜይ ', 'ጁን ', 'ጁላይ', 'ኦገስ', 'ሴፕቴ', 'ኦክተ', 'ኖቬም', 'ዲሴም'], - 'weekdays' => ['ሰንበት', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'], - 'weekdays_short' => ['ሰንበ', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'], - 'weekdays_min' => ['ሰንበ', 'ሰኑይ', 'ሰሉስ', 'ረቡዕ', 'ሓሙስ', 'ዓርቢ', 'ቀዳም'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['ንጉሆ ሰዓተ', 'ድሕር ሰዓት'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tig.php b/vendor/nesbot/carbon/src/Carbon/Lang/tig.php deleted file mode 100644 index 186fe713..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tig.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/tig_ER.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tig_ER.php b/vendor/nesbot/carbon/src/Carbon/Lang/tig_ER.php deleted file mode 100644 index 46887b05..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tig_ER.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation locales@geez.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['ጥሪ', 'ለካቲት', 'መጋቢት', 'ሚያዝያ', 'ግንቦት', 'ሰነ', 'ሓምለ', 'ነሓሰ', 'መስከረም', 'ጥቅምቲ', 'ሕዳር', 'ታሕሳስ'], - 'months_short' => ['ጥሪ ', 'ለካቲ', 'መጋቢ', 'ሚያዝ', 'ግንቦ', 'ሰነ ', 'ሓምለ', 'ነሓሰ', 'መስከ', 'ጥቅም', 'ሕዳር', 'ታሕሳ'], - 'weekdays' => ['ሰንበት ዓባይ', 'ሰኖ', 'ታላሸኖ', 'ኣረርባዓ', 'ከሚሽ', 'ጅምዓት', 'ሰንበት ንኢሽ'], - 'weekdays_short' => ['ሰ//ዓ', 'ሰኖ ', 'ታላሸ', 'ኣረር', 'ከሚሽ', 'ጅምዓ', 'ሰ//ን'], - 'weekdays_min' => ['ሰ//ዓ', 'ሰኖ ', 'ታላሸ', 'ኣረር', 'ከሚሽ', 'ጅምዓ', 'ሰ//ን'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['ቀደም ሰር ምዕል', 'ሓቆ ሰር ምዕል'], - - 'year' => ':count ማይ', // less reliable - 'y' => ':count ማይ', // less reliable - 'a_year' => ':count ማይ', // less reliable - - 'month' => ':count ሸምሽ', // less reliable - 'm' => ':count ሸምሽ', // less reliable - 'a_month' => ':count ሸምሽ', // less reliable - - 'week' => ':count ሰቡዕ', // less reliable - 'w' => ':count ሰቡዕ', // less reliable - 'a_week' => ':count ሰቡዕ', // less reliable - - 'day' => ':count ዎሮ', // less reliable - 'd' => ':count ዎሮ', // less reliable - 'a_day' => ':count ዎሮ', // less reliable - - 'hour' => ':count ሰዓት', // less reliable - 'h' => ':count ሰዓት', // less reliable - 'a_hour' => ':count ሰዓት', // less reliable - - 'minute' => ':count ካልኣይት', // less reliable - 'min' => ':count ካልኣይት', // less reliable - 'a_minute' => ':count ካልኣይት', // less reliable - - 'second' => ':count ካልኣይ', - 's' => ':count ካልኣይ', - 'a_second' => ':count ካልኣይ', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tk.php b/vendor/nesbot/carbon/src/Carbon/Lang/tk.php deleted file mode 100644 index d8f7d19d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tk.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/tk_TM.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tk_TM.php b/vendor/nesbot/carbon/src/Carbon/Lang/tk_TM.php deleted file mode 100644 index f949a430..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tk_TM.php +++ /dev/null @@ -1,77 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Authors: - * - Ghorban M. Tavakoly Pablo Saratxaga & Ghorban M. Tavakoly pablo@walon.org & gmt314@yahoo.com - * - SuperManPHP - * - Maksat Meredow (isadma) - */ -$transformDiff = function ($input) { - return strtr($input, [ - 'sekunt' => 'sekunt', - 'hepde' => 'hepde', - ]); -}; - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], - 'months' => ['Ýanwar', 'Fewral', 'Mart', 'Aprel', 'Maý', 'Iýun', 'Iýul', 'Awgust', 'Sentýabr', 'Oktýabr', 'Noýabr', 'Dekabr'], - 'months_short' => ['Ýan', 'Few', 'Mar', 'Apr', 'Maý', 'Iýn', 'Iýl', 'Awg', 'Sen', 'Okt', 'Noý', 'Dek'], - 'weekdays' => ['Duşenbe', 'Sişenbe', 'Çarşenbe', 'Penşenbe', 'Anna', 'Şenbe', 'Ýekşenbe'], - 'weekdays_short' => ['Duş', 'Siş', 'Çar', 'Pen', 'Ann', 'Şen', 'Ýek'], - 'weekdays_min' => ['Du', 'Si', 'Ça', 'Pe', 'An', 'Şe', 'Ýe'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - - 'year' => ':count ýyl', - 'y' => ':count ýyl', - 'a_year' => ':count ýyl', - - 'month' => ':count aý', - 'm' => ':count aý', - 'a_month' => ':count aý', - - 'week' => ':count hepde', - 'w' => ':count hepde', - 'a_week' => ':count hepde', - - 'day' => ':count gün', - 'd' => ':count gün', - 'a_day' => ':count gün', - - 'hour' => ':count sagat', - 'h' => ':count sagat', - 'a_hour' => ':count sagat', - - 'minute' => ':count minut', - 'min' => ':count minut', - 'a_minute' => ':count minut', - - 'second' => ':count sekunt', - 's' => ':count sekunt', - 'a_second' => ':count sekunt', - - 'ago' => function ($time) use ($transformDiff) { - return $transformDiff($time).' ozal'; - }, - 'from_now' => function ($time) use ($transformDiff) { - return $transformDiff($time).' soňra'; - }, - 'after' => function ($time) use ($transformDiff) { - return $transformDiff($time).' soň'; - }, - 'before' => function ($time) use ($transformDiff) { - return $transformDiff($time).' öň'; - }, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tl.php b/vendor/nesbot/carbon/src/Carbon/Lang/tl.php deleted file mode 100644 index 410a2660..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tl.php +++ /dev/null @@ -1,61 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return [ - 'year' => ':count taon', - 'a_year' => '{1}isang taon|:count taon', - 'month' => ':count buwan', - 'a_month' => '{1}isang buwan|:count buwan', - 'week' => ':count linggo', - 'a_week' => '{1}isang linggo|:count linggo', - 'day' => ':count araw', - 'a_day' => '{1}isang araw|:count araw', - 'hour' => ':count oras', - 'a_hour' => '{1}isang oras|:count oras', - 'minute' => ':count minuto', - 'a_minute' => '{1}isang minuto|:count minuto', - 'min' => ':count min.', - 'second' => ':count segundo', - 'a_second' => '{1}ilang segundo|:count segundo', - 's' => ':count seg.', - 'ago' => ':time ang nakalipas', - 'from_now' => 'sa loob ng :time', - 'diff_now' => 'ngayon', - 'diff_today' => 'ngayong', - 'diff_today_regexp' => 'ngayong(?:\\s+araw)?', - 'diff_yesterday' => 'kahapon', - 'diff_tomorrow' => 'bukas', - 'diff_tomorrow_regexp' => 'Bukas(?:\\s+ng)?', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'MM/D/YYYY', - 'LL' => 'MMMM D, YYYY', - 'LLL' => 'MMMM D, YYYY HH:mm', - 'LLLL' => 'dddd, MMMM DD, YYYY HH:mm', - ], - 'calendar' => [ - 'sameDay' => 'LT [ngayong araw]', - 'nextDay' => '[Bukas ng] LT', - 'nextWeek' => 'LT [sa susunod na] dddd', - 'lastDay' => 'LT [kahapon]', - 'lastWeek' => 'LT [noong nakaraang] dddd', - 'sameElse' => 'L', - ], - 'months' => ['Enero', 'Pebrero', 'Marso', 'Abril', 'Mayo', 'Hunyo', 'Hulyo', 'Agosto', 'Setyembre', 'Oktubre', 'Nobyembre', 'Disyembre'], - 'months_short' => ['Ene', 'Peb', 'Mar', 'Abr', 'May', 'Hun', 'Hul', 'Ago', 'Set', 'Okt', 'Nob', 'Dis'], - 'weekdays' => ['Linggo', 'Lunes', 'Martes', 'Miyerkules', 'Huwebes', 'Biyernes', 'Sabado'], - 'weekdays_short' => ['Lin', 'Lun', 'Mar', 'Miy', 'Huw', 'Biy', 'Sab'], - 'weekdays_min' => ['Li', 'Lu', 'Ma', 'Mi', 'Hu', 'Bi', 'Sab'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' at '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tl_PH.php b/vendor/nesbot/carbon/src/Carbon/Lang/tl_PH.php deleted file mode 100644 index 95f508c3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tl_PH.php +++ /dev/null @@ -1,18 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - Ian De La Cruz - * - JD Isaacks - */ -return require __DIR__.'/tl.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tlh.php b/vendor/nesbot/carbon/src/Carbon/Lang/tlh.php deleted file mode 100644 index fbf9e6f7..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tlh.php +++ /dev/null @@ -1,72 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - Serhan Apaydın - * - Dominika - */ -return [ - 'year' => '{1}wa’ DIS|:count DIS', - 'month' => '{1}wa’ jar|:count jar', - 'week' => '{1}wa’ hogh|:count hogh', - 'day' => '{1}wa’ jaj|:count jaj', - 'hour' => '{1}wa’ rep|:count rep', - 'minute' => '{1}wa’ tup|:count tup', - 'second' => '{1}puS lup|:count lup', - 'ago' => function ($time) { - $output = strtr($time, [ - 'jaj' => 'Hu’', - 'jar' => 'wen', - 'DIS' => 'ben', - ]); - - return $output === $time ? "$time ret" : $output; - }, - 'from_now' => function ($time) { - $output = strtr($time, [ - 'jaj' => 'leS', - 'jar' => 'waQ', - 'DIS' => 'nem', - ]); - - return $output === $time ? "$time pIq" : $output; - }, - 'diff_yesterday' => 'wa’Hu’', - 'diff_today' => 'DaHjaj', - 'diff_tomorrow' => 'wa’leS', - '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', - ], - 'calendar' => [ - 'sameDay' => '[DaHjaj] LT', - 'nextDay' => '[wa’leS] LT', - 'nextWeek' => 'LLL', - 'lastDay' => '[wa’Hu’] LT', - 'lastWeek' => 'LLL', - 'sameElse' => 'L', - ], - 'ordinal' => ':number.', - 'months' => ['tera’ jar wa’', 'tera’ jar cha’', 'tera’ jar wej', 'tera’ jar loS', 'tera’ jar vagh', 'tera’ jar jav', 'tera’ jar Soch', 'tera’ jar chorgh', 'tera’ jar Hut', 'tera’ jar wa’maH', 'tera’ jar wa’maH wa’', 'tera’ jar wa’maH cha’'], - 'months_short' => ['jar wa’', 'jar cha’', 'jar wej', 'jar loS', 'jar vagh', 'jar jav', 'jar Soch', 'jar chorgh', 'jar Hut', 'jar wa’maH', 'jar wa’maH wa’', 'jar wa’maH cha’'], - 'weekdays' => ['lojmItjaj', 'DaSjaj', 'povjaj', 'ghItlhjaj', 'loghjaj', 'buqjaj', 'ghInjaj'], - 'weekdays_short' => ['lojmItjaj', 'DaSjaj', 'povjaj', 'ghItlhjaj', 'loghjaj', 'buqjaj', 'ghInjaj'], - 'weekdays_min' => ['lojmItjaj', 'DaSjaj', 'povjaj', 'ghItlhjaj', 'loghjaj', 'buqjaj', 'ghInjaj'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' ’ej '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tn.php b/vendor/nesbot/carbon/src/Carbon/Lang/tn.php deleted file mode 100644 index f29bdf68..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tn.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/tn_ZA.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tn_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/tn_ZA.php deleted file mode 100644 index aada7db5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tn_ZA.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['Ferikgong', 'Tlhakole', 'Mopitlwe', 'Moranang', 'Motsheganong', 'Seetebosigo', 'Phukwi', 'Phatwe', 'Lwetse', 'Diphalane', 'Ngwanatsele', 'Sedimonthole'], - 'months_short' => ['Fer', 'Tlh', 'Mop', 'Mor', 'Mot', 'See', 'Phu', 'Pha', 'Lwe', 'Dip', 'Ngw', 'Sed'], - 'weekdays' => ['laTshipi', 'Mosupologo', 'Labobedi', 'Laboraro', 'Labone', 'Labotlhano', 'Lamatlhatso'], - 'weekdays_short' => ['Tsh', 'Mos', 'Bed', 'Rar', 'Ne', 'Tlh', 'Mat'], - 'weekdays_min' => ['Tsh', 'Mos', 'Bed', 'Rar', 'Ne', 'Tlh', 'Mat'], - 'day_of_first_week_of_year' => 1, - - 'year' => 'dingwaga di le :count', - 'y' => 'dingwaga di le :count', - 'a_year' => 'dingwaga di le :count', - - 'month' => 'dikgwedi di le :count', - 'm' => 'dikgwedi di le :count', - 'a_month' => 'dikgwedi di le :count', - - 'week' => 'dibeke di le :count', - 'w' => 'dibeke di le :count', - 'a_week' => 'dibeke di le :count', - - 'day' => 'malatsi :count', - 'd' => 'malatsi :count', - 'a_day' => 'malatsi :count', - - 'hour' => 'diura di le :count', - 'h' => 'diura di le :count', - 'a_hour' => 'diura di le :count', - - 'minute' => 'metsotso e le :count', - 'min' => 'metsotso e le :count', - 'a_minute' => 'metsotso e le :count', - - 'second' => 'metsotswana e le :count', - 's' => 'metsotswana e le :count', - 'a_second' => 'metsotswana e le :count', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/to.php b/vendor/nesbot/carbon/src/Carbon/Lang/to.php deleted file mode 100644 index 20581bba..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/to.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/to_TO.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/to_TO.php b/vendor/nesbot/carbon/src/Carbon/Lang/to_TO.php deleted file mode 100644 index 335c69a8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/to_TO.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - International Components for Unicode akhilesh.k@samsung.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'dddd DD MMM YYYY', - ], - 'months' => ['Sānuali', 'Fēpueli', 'Maʻasi', 'ʻEpeleli', 'Mē', 'Sune', 'Siulai', 'ʻAokosi', 'Sepitema', 'ʻOkatopa', 'Nōvema', 'Tīsema'], - 'months_short' => ['Sān', 'Fēp', 'Maʻa', 'ʻEpe', 'Mē', 'Sun', 'Siu', 'ʻAok', 'Sep', 'ʻOka', 'Nōv', 'Tīs'], - 'weekdays' => ['Sāpate', 'Mōnite', 'Tūsite', 'Pulelulu', 'Tuʻapulelulu', 'Falaite', 'Tokonaki'], - 'weekdays_short' => ['Sāp', 'Mōn', 'Tūs', 'Pul', 'Tuʻa', 'Fal', 'Tok'], - 'weekdays_min' => ['Sāp', 'Mōn', 'Tūs', 'Pul', 'Tuʻa', 'Fal', 'Tok'], - 'meridiem' => ['hengihengi', 'efiafi'], - - 'year' => ':count fitu', // less reliable - 'y' => ':count fitu', // less reliable - 'a_year' => ':count fitu', // less reliable - - 'month' => ':count mahina', // less reliable - 'm' => ':count mahina', // less reliable - 'a_month' => ':count mahina', // less reliable - - 'week' => ':count Sapate', // less reliable - 'w' => ':count Sapate', // less reliable - 'a_week' => ':count Sapate', // less reliable - - 'day' => ':count ʻaho', // less reliable - 'd' => ':count ʻaho', // less reliable - 'a_day' => ':count ʻaho', // less reliable - - 'hour' => ':count houa', - 'h' => ':count houa', - 'a_hour' => ':count houa', - - 'minute' => ':count miniti', - 'min' => ':count miniti', - 'a_minute' => ':count miniti', - - 'second' => ':count sekoni', - 's' => ':count sekoni', - 'a_second' => ':count sekoni', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tpi.php b/vendor/nesbot/carbon/src/Carbon/Lang/tpi.php deleted file mode 100644 index 7d38daed..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tpi.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/tpi_PG.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tpi_PG.php b/vendor/nesbot/carbon/src/Carbon/Lang/tpi_PG.php deleted file mode 100644 index 5f58c44c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tpi_PG.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Samsung Electronics Co., Ltd. akhilesh.k@samsung.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['Janueri', 'Februeri', 'Mas', 'Epril', 'Me', 'Jun', 'Julai', 'Ogas', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'], - 'months_short' => ['Jan', 'Feb', 'Mas', 'Epr', 'Me', 'Jun', 'Jul', 'Oga', 'Sep', 'Okt', 'Nov', 'Des'], - 'weekdays' => ['Sande', 'Mande', 'Tunde', 'Trinde', 'Fonde', 'Fraide', 'Sarere'], - 'weekdays_short' => ['San', 'Man', 'Tun', 'Tri', 'Fon', 'Fra', 'Sar'], - 'weekdays_min' => ['San', 'Man', 'Tun', 'Tri', 'Fon', 'Fra', 'Sar'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['biknait', 'apinun'], - - 'year' => 'yia :count', - 'y' => 'yia :count', - 'a_year' => 'yia :count', - - 'month' => ':count mun', - 'm' => ':count mun', - 'a_month' => ':count mun', - - 'week' => ':count wik', - 'w' => ':count wik', - 'a_week' => ':count wik', - - 'day' => ':count de', - 'd' => ':count de', - 'a_day' => ':count de', - - 'hour' => ':count aua', - 'h' => ':count aua', - 'a_hour' => ':count aua', - - 'minute' => ':count minit', - 'min' => ':count minit', - 'a_minute' => ':count minit', - - 'second' => ':count namba tu', - 's' => ':count namba tu', - 'a_second' => ':count namba tu', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tr.php b/vendor/nesbot/carbon/src/Carbon/Lang/tr.php deleted file mode 100644 index f5d9f4cc..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tr.php +++ /dev/null @@ -1,121 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - Alan Agius - * - Erhan Gundogan - * - François B - * - JD Isaacks - * - Murat Yüksel - * - Baran Şengül - * - Selami (selamialtin) - * - TeomanBey - */ -return [ - 'year' => ':count yıl', - 'a_year' => '{1}bir yıl|]1,Inf[:count yıl', - 'y' => ':county', - 'month' => ':count ay', - 'a_month' => '{1}bir ay|]1,Inf[:count ay', - 'm' => ':countay', - 'week' => ':count hafta', - 'a_week' => '{1}bir hafta|]1,Inf[:count hafta', - 'w' => ':counth', - 'day' => ':count gün', - 'a_day' => '{1}bir gün|]1,Inf[:count gün', - 'd' => ':countg', - 'hour' => ':count saat', - 'a_hour' => '{1}bir saat|]1,Inf[:count saat', - 'h' => ':countsa', - 'minute' => ':count dakika', - 'a_minute' => '{1}bir dakika|]1,Inf[:count dakika', - 'min' => ':countdk', - 'second' => ':count saniye', - 'a_second' => '{1}birkaç saniye|]1,Inf[:count saniye', - 's' => ':countsn', - 'ago' => ':time önce', - 'from_now' => ':time sonra', - 'after' => ':time sonra', - 'before' => ':time önce', - 'diff_now' => 'şimdi', - 'diff_today' => 'bugün', - 'diff_today_regexp' => 'bugün(?:\\s+saat)?', - 'diff_yesterday' => 'dün', - 'diff_tomorrow' => 'yarın', - 'diff_tomorrow_regexp' => 'yarın(?:\\s+saat)?', - 'diff_before_yesterday' => 'evvelsi gün', - 'diff_after_tomorrow' => 'öbür gün', - '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', - ], - 'calendar' => [ - 'sameDay' => '[bugün saat] LT', - 'nextDay' => '[yarın saat] LT', - 'nextWeek' => '[gelecek] dddd [saat] LT', - 'lastDay' => '[dün] LT', - 'lastWeek' => '[geçen] dddd [saat] LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number, $period) { - switch ($period) { - case 'd': - case 'D': - case 'Do': - case 'DD': - return $number; - default: - if ($number === 0) { // special case for zero - return "$number'ıncı"; - } - - static $suffixes = [ - 1 => '\'inci', - 5 => '\'inci', - 8 => '\'inci', - 70 => '\'inci', - 80 => '\'inci', - 2 => '\'nci', - 7 => '\'nci', - 20 => '\'nci', - 50 => '\'nci', - 3 => '\'üncü', - 4 => '\'üncü', - 100 => '\'üncü', - 6 => '\'ncı', - 9 => '\'uncu', - 10 => '\'uncu', - 30 => '\'uncu', - 60 => '\'ıncı', - 90 => '\'ıncı', - ]; - - $lastDigit = $number % 10; - - return $number.($suffixes[$lastDigit] ?? $suffixes[$number % 100 - $lastDigit] ?? $suffixes[$number >= 100 ? 100 : -1] ?? ''); - } - }, - 'meridiem' => ['ÖÖ', 'ÖS', 'öö', 'ös'], - 'months' => ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'], - 'months_short' => ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'], - 'weekdays' => ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'], - 'weekdays_short' => ['Paz', 'Pts', 'Sal', 'Çar', 'Per', 'Cum', 'Cts'], - 'weekdays_min' => ['Pz', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' ve '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tr_CY.php b/vendor/nesbot/carbon/src/Carbon/Lang/tr_CY.php deleted file mode 100644 index 23f11449..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tr_CY.php +++ /dev/null @@ -1,23 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/tr.php', [ - 'weekdays_short' => ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'], - 'weekdays_min' => ['Pa', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'], - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'D.MM.YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY h:mm a', - 'LLLL' => 'D MMMM YYYY dddd h:mm a', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tr_TR.php b/vendor/nesbot/carbon/src/Carbon/Lang/tr_TR.php deleted file mode 100644 index 9e994824..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tr_TR.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/tr.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ts.php b/vendor/nesbot/carbon/src/Carbon/Lang/ts.php deleted file mode 100644 index 525736bf..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ts.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/ts_ZA.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ts_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ts_ZA.php deleted file mode 100644 index 37a24ec4..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ts_ZA.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['Sunguti', 'Nyenyenyani', 'Nyenyankulu', 'Dzivamisoko', 'Mudyaxihi', 'Khotavuxika', 'Mawuwani', 'Mhawuri', 'Ndzhati', 'Nhlangula', 'Hukuri', 'N\'wendzamhala'], - 'months_short' => ['Sun', 'Yan', 'Kul', 'Dzi', 'Mud', 'Kho', 'Maw', 'Mha', 'Ndz', 'Nhl', 'Huk', 'N\'w'], - 'weekdays' => ['Sonto', 'Musumbhunuku', 'Ravumbirhi', 'Ravunharhu', 'Ravumune', 'Ravuntlhanu', 'Mugqivela'], - 'weekdays_short' => ['Son', 'Mus', 'Bir', 'Har', 'Ne', 'Tlh', 'Mug'], - 'weekdays_min' => ['Son', 'Mus', 'Bir', 'Har', 'Ne', 'Tlh', 'Mug'], - 'day_of_first_week_of_year' => 1, - - 'year' => 'malembe ya :count', - 'y' => 'malembe ya :count', - 'a_year' => 'malembe ya :count', - - 'month' => 'tin’hweti ta :count', - 'm' => 'tin’hweti ta :count', - 'a_month' => 'tin’hweti ta :count', - - 'week' => 'mavhiki ya :count', - 'w' => 'mavhiki ya :count', - 'a_week' => 'mavhiki ya :count', - - 'day' => 'masiku :count', - 'd' => 'masiku :count', - 'a_day' => 'masiku :count', - - 'hour' => 'tiawara ta :count', - 'h' => 'tiawara ta :count', - 'a_hour' => 'tiawara ta :count', - - 'minute' => 'timinete ta :count', - 'min' => 'timinete ta :count', - 'a_minute' => 'timinete ta :count', - - 'second' => 'tisekoni ta :count', - 's' => 'tisekoni ta :count', - 'a_second' => 'tisekoni ta :count', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tt.php b/vendor/nesbot/carbon/src/Carbon/Lang/tt.php deleted file mode 100644 index d67d896e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tt.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/tt_RU.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU.php b/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU.php deleted file mode 100644 index 38e42d05..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Rinat Norkin Pablo Saratxaga, Rinat Norkin pablo@mandrakesoft.com, rinat@taif.ru - */ -return [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD.MM.YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'DD MMM, HH:mm', - 'LLLL' => 'DD MMMM YYYY, HH:mm', - ], - 'months' => ['января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря'], - 'months_short' => ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'], - 'weekdays' => ['якшәмбе', 'дышәмбе', 'сишәмбе', 'чәршәәмбе', 'пәнҗешмбе', 'җомга', 'шимбә'], - 'weekdays_short' => ['якш', 'дыш', 'сиш', 'чәрш', 'пәнҗ', 'җом', 'шим'], - 'weekdays_min' => ['якш', 'дыш', 'сиш', 'чәрш', 'пәнҗ', 'җом', 'шим'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'year' => ':count ел', - 'month' => ':count ай', - 'week' => ':count атна', - 'day' => ':count көн', - 'hour' => ':count сәгать', - 'minute' => ':count минут', - 'second' => ':count секунд', -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU@iqtelif.php b/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU@iqtelif.php deleted file mode 100644 index 16b8efb1..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tt_RU@iqtelif.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Reshat Sabiq tatar.iqtelif.i18n@gmail.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD.MM.YYYY', - ], - 'months' => ['Ğınwar', 'Fiwral\'', 'Mart', 'April', 'May', 'Yün', 'Yül', 'Awgust', 'Sintebír', 'Üktebír', 'Noyebír', 'Dikebír'], - 'months_short' => ['Ğın', 'Fiw', 'Mar', 'Apr', 'May', 'Yün', 'Yül', 'Awg', 'Sin', 'Ükt', 'Noy', 'Dik'], - 'weekdays' => ['Yekşembí', 'Düşembí', 'Sişembí', 'Çerşembí', 'Pencíşembí', 'Comğa', 'Şimbe'], - 'weekdays_short' => ['Yek', 'Düş', 'Siş', 'Çer', 'Pen', 'Com', 'Şim'], - 'weekdays_min' => ['Yek', 'Düş', 'Siş', 'Çer', 'Pen', 'Com', 'Şim'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['ÖA', 'ÖS'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/twq.php b/vendor/nesbot/carbon/src/Carbon/Lang/twq.php deleted file mode 100644 index 5cbb46e0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/twq.php +++ /dev/null @@ -1,14 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/ses.php', [ - 'meridiem' => ['Subbaahi', 'Zaarikay b'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tzl.php b/vendor/nesbot/carbon/src/Carbon/Lang/tzl.php deleted file mode 100644 index 50bf26d2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tzl.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return [ - 'year' => '[0,1]:count ar|:count ars', - 'y' => '[0,1]:count ar|:count ars', - 'month' => '[0,1]:count mes|:count mesen', - 'm' => '[0,1]:count mes|:count mesen', - 'week' => '[0,1]:count seifetziua|:count seifetziuas', - 'w' => '[0,1]:count seifetziua|:count seifetziuas', - 'day' => '[0,1]:count ziua|:count ziuas', - 'd' => '[0,1]:count ziua|:count ziuas', - 'hour' => '[0,1]:count þora|:count þoras', - 'h' => '[0,1]:count þora|:count þoras', - 'minute' => '[0,1]:count míut|:count míuts', - 'min' => '[0,1]:count míut|:count míuts', - 'second' => ':count secunds', - 's' => ':count secunds', - - 'ago' => 'ja :time', - 'from_now' => 'osprei :time', - - 'diff_yesterday' => 'ieiri', - 'diff_yesterday_regexp' => 'ieiri(?:\\s+à)?', - 'diff_today' => 'oxhi', - 'diff_today_regexp' => 'oxhi(?:\\s+à)?', - 'diff_tomorrow' => 'demà', - 'diff_tomorrow_regexp' => 'demà(?:\\s+à)?', - - 'formats' => [ - 'LT' => 'HH.mm', - 'LTS' => 'HH.mm.ss', - 'L' => 'DD.MM.YYYY', - 'LL' => 'D. MMMM [dallas] YYYY', - 'LLL' => 'D. MMMM [dallas] YYYY HH.mm', - 'LLLL' => 'dddd, [li] D. MMMM [dallas] YYYY HH.mm', - ], - - 'calendar' => [ - 'sameDay' => '[oxhi à] LT', - 'nextDay' => '[demà à] LT', - 'nextWeek' => 'dddd [à] LT', - 'lastDay' => '[ieiri à] LT', - 'lastWeek' => '[sür el] dddd [lasteu à] LT', - 'sameElse' => 'L', - ], - - 'meridiem' => ["D'A", "D'O"], - 'months' => ['Januar', 'Fevraglh', 'Març', 'Avrïu', 'Mai', 'Gün', 'Julia', 'Guscht', 'Setemvar', 'Listopäts', 'Noemvar', 'Zecemvar'], - 'months_short' => ['Jan', 'Fev', 'Mar', 'Avr', 'Mai', 'Gün', 'Jul', 'Gus', 'Set', 'Lis', 'Noe', 'Zec'], - 'weekdays' => ['Súladi', 'Lúneçi', 'Maitzi', 'Márcuri', 'Xhúadi', 'Viénerçi', 'Sáturi'], - 'weekdays_short' => ['Súl', 'Lún', 'Mai', 'Már', 'Xhú', 'Vié', 'Sát'], - 'weekdays_min' => ['Sú', 'Lú', 'Ma', 'Má', 'Xh', 'Vi', 'Sá'], - 'ordinal' => ':number.', - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tzm.php b/vendor/nesbot/carbon/src/Carbon/Lang/tzm.php deleted file mode 100644 index 2a1a0f2b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tzm.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - JD Isaacks - */ -return [ - 'year' => '{1}ⴰⵙⴳⴰⵙ|:count ⵉⵙⴳⴰⵙⵏ', - 'month' => '{1}ⴰⵢoⵓⵔ|:count ⵉⵢⵢⵉⵔⵏ', - 'week' => ':count ⵉⵎⴰⵍⴰⵙⵙ', - 'day' => '{1}ⴰⵙⵙ|:count oⵙⵙⴰⵏ', - 'hour' => '{1}ⵙⴰⵄⴰ|:count ⵜⴰⵙⵙⴰⵄⵉⵏ', - 'minute' => '{1}ⵎⵉⵏⵓⴺ|:count ⵎⵉⵏⵓⴺ', - 'second' => '{1}ⵉⵎⵉⴽ|:count ⵉⵎⵉⴽ', - 'ago' => 'ⵢⴰⵏ :time', - 'from_now' => 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ :time', - 'diff_today' => 'ⴰⵙⴷⵅ', - 'diff_yesterday' => 'ⴰⵚⴰⵏⵜ', - 'diff_yesterday_regexp' => 'ⴰⵚⴰⵏⵜ(?:\\s+ⴴ)?', - 'diff_tomorrow' => 'ⴰⵙⴽⴰ', - 'diff_tomorrow_regexp' => 'ⴰⵙⴽⴰ(?:\\s+ⴴ)?', - 'diff_today_regexp' => 'ⴰⵙⴷⵅ(?:\\s+ⴴ)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[ⴰⵙⴷⵅ ⴴ] LT', - 'nextDay' => '[ⴰⵙⴽⴰ ⴴ] LT', - 'nextWeek' => 'dddd [ⴴ] LT', - 'lastDay' => '[ⴰⵚⴰⵏⵜ ⴴ] LT', - 'lastWeek' => 'dddd [ⴴ] LT', - 'sameElse' => 'L', - ], - 'months' => ['ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵟⵓⴱⵕ', 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⵏⴱⵉⵔ'], - 'months_short' => ['ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵟⵓⴱⵕ', 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⵏⴱⵉⵔ'], - 'weekdays' => ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵔⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⴰⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'], - 'weekdays_short' => ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵔⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⴰⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'], - 'weekdays_min' => ['ⴰⵙⴰⵎⴰⵙ', 'ⴰⵢⵏⴰⵙ', 'ⴰⵙⵉⵏⴰⵙ', 'ⴰⴽⵔⴰⵙ', 'ⴰⴽⵡⴰⵙ', 'ⴰⵙⵉⵎⵡⴰⵙ', 'ⴰⵙⵉⴹⵢⴰⵙ'], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, - 'weekend' => [5, 6], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/tzm_Latn.php b/vendor/nesbot/carbon/src/Carbon/Lang/tzm_Latn.php deleted file mode 100644 index 5840d209..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/tzm_Latn.php +++ /dev/null @@ -1,64 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - JD Isaacks - */ -return [ - 'year' => '{1}:count asgas|:count isgasn', - 'a_year' => 'asgas|:count isgasn', - 'month' => '{1}:count ayowr|:count iyyirn', - 'a_month' => 'ayowr|:count iyyirn', - 'week' => ':count imalass', - 'a_week' => ':imalass', - 'day' => '{1}:count ass|:count ossan', - 'a_day' => 'ass|:count ossan', - 'hour' => '{1}:count saɛa|:count tassaɛin', - 'a_hour' => '{1}saɛa|:count tassaɛin', - 'minute' => ':count minuḍ', - 'a_minute' => '{1}minuḍ|:count minuḍ', - 'second' => ':count imik', - 'a_second' => '{1}imik|:count imik', - 'ago' => 'yan :time', - 'from_now' => 'dadkh s yan :time', - 'diff_yesterday' => 'assant', - 'diff_yesterday_regexp' => 'assant(?:\\s+g)?', - 'diff_today' => 'asdkh', - 'diff_today_regexp' => 'asdkh(?:\\s+g)?', - 'diff_tomorrow' => 'aska', - 'diff_tomorrow_regexp' => 'aska(?:\\s+g)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[asdkh g] LT', - 'nextDay' => '[aska g] LT', - 'nextWeek' => 'dddd [g] LT', - 'lastDay' => '[assant g] LT', - 'lastWeek' => 'dddd [g] LT', - 'sameElse' => 'L', - ], - 'months' => ['innayr', 'brˤayrˤ', 'marˤsˤ', 'ibrir', 'mayyw', 'ywnyw', 'ywlywz', 'ɣwšt', 'šwtanbir', 'ktˤwbrˤ', 'nwwanbir', 'dwjnbir'], - 'months_short' => ['innayr', 'brˤayrˤ', 'marˤsˤ', 'ibrir', 'mayyw', 'ywnyw', 'ywlywz', 'ɣwšt', 'šwtanbir', 'ktˤwbrˤ', 'nwwanbir', 'dwjnbir'], - 'weekdays' => ['asamas', 'aynas', 'asinas', 'akras', 'akwas', 'asimwas', 'asiḍyas'], - 'weekdays_short' => ['asamas', 'aynas', 'asinas', 'akras', 'akwas', 'asimwas', 'asiḍyas'], - 'weekdays_min' => ['asamas', 'aynas', 'asinas', 'akras', 'akwas', 'asimwas', 'asiḍyas'], - 'meridiem' => ['Zdat azal', 'Ḍeffir aza'], - 'first_day_of_week' => 6, - 'day_of_first_week_of_year' => 1, -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ug.php b/vendor/nesbot/carbon/src/Carbon/Lang/ug.php deleted file mode 100644 index 259b99a4..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ug.php +++ /dev/null @@ -1,90 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Philippe Vaucher - * - Tsutomu Kuroda - * - yasinn - */ -return [ - 'year' => '{1}'.'بىر يىل'.'|:count '.'يىل', - 'month' => '{1}'.'بىر ئاي'.'|:count '.'ئاي', - 'week' => '{1}'.'بىر ھەپتە'.'|:count '.'ھەپتە', - 'day' => '{1}'.'بىر كۈن'.'|:count '.'كۈن', - 'hour' => '{1}'.'بىر سائەت'.'|:count '.'سائەت', - 'minute' => '{1}'.'بىر مىنۇت'.'|:count '.'مىنۇت', - 'second' => '{1}'.'نەچچە سېكونت'.'|:count '.'سېكونت', - 'ago' => ':time بۇرۇن', - 'from_now' => ':time كېيىن', - 'diff_today' => 'بۈگۈن', - 'diff_yesterday' => 'تۆنۈگۈن', - 'diff_tomorrow' => 'ئەتە', - 'diff_tomorrow_regexp' => 'ئەتە(?:\\s+سائەت)?', - 'diff_today_regexp' => 'بۈگۈن(?:\\s+سائەت)?', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY-MM-DD', - 'LL' => 'YYYY-يىلىM-ئاينىڭD-كۈنى', - 'LLL' => 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', - 'LLLL' => 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[بۈگۈن سائەت] LT', - 'nextDay' => '[ئەتە سائەت] LT', - 'nextWeek' => '[كېلەركى] dddd [سائەت] LT', - 'lastDay' => '[تۆنۈگۈن] LT', - 'lastWeek' => '[ئالدىنقى] dddd [سائەت] LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number, $period) { - switch ($period) { - case 'd': - case 'D': - case 'DDD': - return $number.'-كۈنى'; - case 'w': - case 'W': - return $number.'-ھەپتە'; - default: - return $number; - } - }, - 'meridiem' => function ($hour, $minute) { - $time = $hour * 100 + $minute; - if ($time < 600) { - return 'يېرىم كېچە'; - } - if ($time < 900) { - return 'سەھەر'; - } - if ($time < 1130) { - return 'چۈشتىن بۇرۇن'; - } - if ($time < 1230) { - return 'چۈش'; - } - if ($time < 1800) { - return 'چۈشتىن كېيىن'; - } - - return 'كەچ'; - }, - 'months' => ['يانۋار', 'فېۋرال', 'مارت', 'ئاپرېل', 'ماي', 'ئىيۇن', 'ئىيۇل', 'ئاۋغۇست', 'سېنتەبىر', 'ئۆكتەبىر', 'نويابىر', 'دېكابىر'], - 'months_short' => ['يانۋار', 'فېۋرال', 'مارت', 'ئاپرېل', 'ماي', 'ئىيۇن', 'ئىيۇل', 'ئاۋغۇست', 'سېنتەبىر', 'ئۆكتەبىر', 'نويابىر', 'دېكابىر'], - 'weekdays' => ['يەكشەنبە', 'دۈشەنبە', 'سەيشەنبە', 'چارشەنبە', 'پەيشەنبە', 'جۈمە', 'شەنبە'], - 'weekdays_short' => ['يە', 'دۈ', 'سە', 'چا', 'پە', 'جۈ', 'شە'], - 'weekdays_min' => ['يە', 'دۈ', 'سە', 'چا', 'پە', 'جۈ', 'شە'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' ۋە '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ug_CN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ug_CN.php deleted file mode 100644 index deb828c5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ug_CN.php +++ /dev/null @@ -1,17 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Kunal Marwaha - * - Alim Boyaq - */ -return require __DIR__.'/ug.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/uk.php b/vendor/nesbot/carbon/src/Carbon/Lang/uk.php deleted file mode 100644 index 1d5ba703..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/uk.php +++ /dev/null @@ -1,212 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Carbon\CarbonInterface; - -$processHoursFunction = function (CarbonInterface $date, string $format) { - return $format.'о'.($date->hour === 11 ? 'б' : '').'] LT'; -}; - -/* - * Authors: - * - Kunal Marwaha - * - Josh Soref - * - François B - * - Tim Fish - * - Serhan Apaydın - * - Max Mykhailenko - * - JD Isaacks - * - Max Kovpak - * - AucT - * - Philippe Vaucher - * - Ilya Shaplyko - * - Vadym Ievsieiev - * - Denys Kurets - * - Igor Kasyanchuk - * - Tsutomu Kuroda - * - tjku - * - Max Melentiev - * - Oleh - * - epaminond - * - Juanito Fatas - * - Vitalii Khustochka - * - Akira Matsuda - * - Christopher Dell - * - Enrique Vidal - * - Simone Carletti - * - Aaron Patterson - * - Andriy Tyurnikov - * - Nicolás Hock Isaza - * - Iwakura Taro - * - Andrii Ponomarov - * - alecrabbit - * - vystepanenko - * - AlexWalkerson - * - Andre Havryliuk (Andrend) - * - Max Datsenko (datsenko-md) - */ -return [ - 'year' => ':count рік|:count роки|:count років', - 'y' => ':countр', - 'a_year' => '{1}рік|:count рік|:count роки|:count років', - 'month' => ':count місяць|:count місяці|:count місяців', - 'm' => ':countм', - 'a_month' => '{1}місяць|:count місяць|:count місяці|:count місяців', - 'week' => ':count тиждень|:count тижні|:count тижнів', - 'w' => ':countт', - 'a_week' => '{1}тиждень|:count тиждень|:count тижні|:count тижнів', - 'day' => ':count день|:count дні|:count днів', - 'd' => ':countд', - 'a_day' => '{1}день|:count день|:count дні|:count днів', - 'hour' => ':count година|:count години|:count годин', - 'h' => ':countг', - 'a_hour' => '{1}година|:count година|:count години|:count годин', - 'minute' => ':count хвилина|:count хвилини|:count хвилин', - 'min' => ':countхв', - 'a_minute' => '{1}хвилина|:count хвилина|:count хвилини|:count хвилин', - 'second' => ':count секунда|:count секунди|:count секунд', - 's' => ':countсек', - 'a_second' => '{1}декілька секунд|:count секунда|:count секунди|:count секунд', - - 'hour_ago' => ':count годину|:count години|:count годин', - 'a_hour_ago' => '{1}годину|:count годину|:count години|:count годин', - 'minute_ago' => ':count хвилину|:count хвилини|:count хвилин', - 'a_minute_ago' => '{1}хвилину|:count хвилину|:count хвилини|:count хвилин', - 'second_ago' => ':count секунду|:count секунди|:count секунд', - 'a_second_ago' => '{1}декілька секунд|:count секунду|:count секунди|:count секунд', - - 'hour_from_now' => ':count годину|:count години|:count годин', - 'a_hour_from_now' => '{1}годину|:count годину|:count години|:count годин', - 'minute_from_now' => ':count хвилину|:count хвилини|:count хвилин', - 'a_minute_from_now' => '{1}хвилину|:count хвилину|:count хвилини|:count хвилин', - 'second_from_now' => ':count секунду|:count секунди|:count секунд', - 'a_second_from_now' => '{1}декілька секунд|:count секунду|:count секунди|:count секунд', - - 'hour_after' => ':count годину|:count години|:count годин', - 'a_hour_after' => '{1}годину|:count годину|:count години|:count годин', - 'minute_after' => ':count хвилину|:count хвилини|:count хвилин', - 'a_minute_after' => '{1}хвилину|:count хвилину|:count хвилини|:count хвилин', - 'second_after' => ':count секунду|:count секунди|:count секунд', - 'a_second_after' => '{1}декілька секунд|:count секунду|:count секунди|:count секунд', - - 'hour_before' => ':count годину|:count години|:count годин', - 'a_hour_before' => '{1}годину|:count годину|:count години|:count годин', - 'minute_before' => ':count хвилину|:count хвилини|:count хвилин', - 'a_minute_before' => '{1}хвилину|:count хвилину|:count хвилини|:count хвилин', - 'second_before' => ':count секунду|:count секунди|:count секунд', - 'a_second_before' => '{1}декілька секунд|:count секунду|:count секунди|:count секунд', - - 'ago' => ':time тому', - 'from_now' => 'за :time', - 'after' => ':time після', - 'before' => ':time до', - 'diff_now' => 'щойно', - 'diff_today' => 'Сьогодні', - 'diff_today_regexp' => 'Сьогодні(?:\\s+о)?', - 'diff_yesterday' => 'вчора', - 'diff_yesterday_regexp' => 'Вчора(?:\\s+о)?', - 'diff_tomorrow' => 'завтра', - 'diff_tomorrow_regexp' => 'Завтра(?:\\s+о)?', - 'diff_before_yesterday' => 'позавчора', - 'diff_after_tomorrow' => 'післязавтра', - 'period_recurrences' => 'один раз|:count рази|:count разів', - 'period_interval' => 'кожні :interval', - 'period_start_date' => 'з :date', - 'period_end_date' => 'до :date', - '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', - ], - 'calendar' => [ - 'sameDay' => function (CarbonInterface $date) use ($processHoursFunction) { - return $processHoursFunction($date, '[Сьогодні '); - }, - 'nextDay' => function (CarbonInterface $date) use ($processHoursFunction) { - return $processHoursFunction($date, '[Завтра '); - }, - 'nextWeek' => function (CarbonInterface $date) use ($processHoursFunction) { - return $processHoursFunction($date, '[У] dddd ['); - }, - 'lastDay' => function (CarbonInterface $date) use ($processHoursFunction) { - return $processHoursFunction($date, '[Вчора '); - }, - 'lastWeek' => function (CarbonInterface $date) use ($processHoursFunction) { - switch ($date->dayOfWeek) { - case 0: - case 3: - case 5: - case 6: - return $processHoursFunction($date, '[Минулої] dddd ['); - default: - return $processHoursFunction($date, '[Минулого] dddd ['); - } - }, - 'sameElse' => 'L', - ], - 'ordinal' => function ($number, $period) { - switch ($period) { - case 'M': - case 'd': - case 'DDD': - case 'w': - case 'W': - return $number.'-й'; - case 'D': - return $number.'-го'; - default: - return $number; - } - }, - 'meridiem' => function ($hour) { - if ($hour < 4) { - return 'ночі'; - } - if ($hour < 12) { - return 'ранку'; - } - if ($hour < 17) { - return 'дня'; - } - - return 'вечора'; - }, - 'months' => ['січня', 'лютого', 'березня', 'квітня', 'травня', 'червня', 'липня', 'серпня', 'вересня', 'жовтня', 'листопада', 'грудня'], - 'months_standalone' => ['січень', 'лютий', 'березень', 'квітень', 'травень', 'червень', 'липень', 'серпень', 'вересень', 'жовтень', 'листопад', 'грудень'], - 'months_short' => ['січ', 'лют', 'бер', 'кві', 'тра', 'чер', 'лип', 'сер', 'вер', 'жов', 'лис', 'гру'], - 'months_regexp' => '/(D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|L{2,4}|l{2,4})/', - 'weekdays' => function (CarbonInterface $date, $format, $index) { - static $words = [ - 'nominative' => ['неділя', 'понеділок', 'вівторок', 'середа', 'четвер', 'п’ятниця', 'субота'], - 'accusative' => ['неділю', 'понеділок', 'вівторок', 'середу', 'четвер', 'п’ятницю', 'суботу'], - 'genitive' => ['неділі', 'понеділка', 'вівторка', 'середи', 'четверга', 'п’ятниці', 'суботи'], - ]; - - $format = $format ?? ''; - $nounCase = preg_match('/(\[(В|в|У|у)\])\s+dddd/u', $format) - ? 'accusative' - : ( - preg_match('/\[?(?:минулої|наступної)?\s*\]\s+dddd/u', $format) - ? 'genitive' - : 'nominative' - ); - - return $words[$nounCase][$index] ?? null; - }, - 'weekdays_short' => ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - 'weekdays_min' => ['нд', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' i '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/uk_UA.php b/vendor/nesbot/carbon/src/Carbon/Lang/uk_UA.php deleted file mode 100644 index bd11d86e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/uk_UA.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/uk.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/unm.php b/vendor/nesbot/carbon/src/Carbon/Lang/unm.php deleted file mode 100644 index d3f19f06..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/unm.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/unm_US.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/unm_US.php b/vendor/nesbot/carbon/src/Carbon/Lang/unm_US.php deleted file mode 100644 index fa5c374e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/unm_US.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['enikwsi', 'chkwali', 'xamokhwite', 'kwetayoxe', 'tainipen', 'kichinipen', 'lainipen', 'winaminke', 'kichitahkok', 'puksit', 'wini', 'muxkotae'], - 'months_short' => ['eni', 'chk', 'xam', 'kwe', 'tai', 'nip', 'lai', 'win', 'tah', 'puk', 'kun', 'mux'], - 'weekdays' => ['kentuwei', 'manteke', 'tusteke', 'lelai', 'tasteke', 'pelaiteke', 'sateteke'], - 'weekdays_short' => ['ken', 'man', 'tus', 'lel', 'tas', 'pel', 'sat'], - 'weekdays_min' => ['ken', 'man', 'tus', 'lel', 'tas', 'pel', 'sat'], - 'day_of_first_week_of_year' => 1, - - // Too unreliable - /* - 'year' => ':count kaxtëne', - 'y' => ':count kaxtëne', - 'a_year' => ':count kaxtëne', - - 'month' => ':count piskewëni kishux', // less reliable - 'm' => ':count piskewëni kishux', // less reliable - 'a_month' => ':count piskewëni kishux', // less reliable - - 'week' => ':count kishku', // less reliable - 'w' => ':count kishku', // less reliable - 'a_week' => ':count kishku', // less reliable - - 'day' => ':count kishku', - 'd' => ':count kishku', - 'a_day' => ':count kishku', - - 'hour' => ':count xkuk', // less reliable - 'h' => ':count xkuk', // less reliable - 'a_hour' => ':count xkuk', // less reliable - - 'minute' => ':count txituwàk', // less reliable - 'min' => ':count txituwàk', // less reliable - 'a_minute' => ':count txituwàk', // less reliable - - 'second' => ':count nisha', // less reliable - 's' => ':count nisha', // less reliable - 'a_second' => ':count nisha', // less reliable - */ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ur.php b/vendor/nesbot/carbon/src/Carbon/Lang/ur.php deleted file mode 100644 index dc16c2c3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ur.php +++ /dev/null @@ -1,94 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -$months = [ - 'جنوری', - 'فروری', - 'مارچ', - 'اپریل', - 'مئی', - 'جون', - 'جولائی', - 'اگست', - 'ستمبر', - 'اکتوبر', - 'نومبر', - 'دسمبر', -]; - -$weekdays = [ - 'اتوار', - 'پیر', - 'منگل', - 'بدھ', - 'جمعرات', - 'جمعہ', - 'ہفتہ', -]; - -/* - * Authors: - * - Sawood Alam - * - Mehshan - * - Philippe Vaucher - * - Tsutomu Kuroda - * - tjku - * - Zaid Akram - * - Max Melentiev - * - hafezdivandari - * - Hossein Jabbari - * - nimamo - */ -return [ - 'year' => 'ایک سال|:count سال', - 'month' => 'ایک ماہ|:count ماہ', - 'week' => ':count ہفتے', - 'day' => 'ایک دن|:count دن', - 'hour' => 'ایک گھنٹہ|:count گھنٹے', - 'minute' => 'ایک منٹ|:count منٹ', - 'second' => 'چند سیکنڈ|:count سیکنڈ', - 'ago' => ':time قبل', - 'from_now' => ':time بعد', - 'after' => ':time بعد', - 'before' => ':time پہلے', - 'diff_now' => 'اب', - 'diff_today' => 'آج', - 'diff_today_regexp' => 'آج(?:\\s+بوقت)?', - 'diff_yesterday' => 'گزشتہ کل', - 'diff_yesterday_regexp' => 'گذشتہ(?:\\s+روز)?(?:\\s+بوقت)?', - 'diff_tomorrow' => 'آئندہ کل', - 'diff_tomorrow_regexp' => 'کل(?:\\s+بوقت)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[آج بوقت] LT', - 'nextDay' => '[کل بوقت] LT', - 'nextWeek' => 'dddd [بوقت] LT', - 'lastDay' => '[گذشتہ روز بوقت] LT', - 'lastWeek' => '[گذشتہ] dddd [بوقت] LT', - 'sameElse' => 'L', - ], - 'meridiem' => ['صبح', 'شام'], - 'months' => $months, - 'months_short' => $months, - 'weekdays' => $weekdays, - 'weekdays_short' => $weekdays, - 'weekdays_min' => $weekdays, - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => ['، ', ' اور '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ur_IN.php b/vendor/nesbot/carbon/src/Carbon/Lang/ur_IN.php deleted file mode 100644 index f81c84d3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ur_IN.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Red Hat, Pune bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/ur.php', [ - 'formats' => [ - 'L' => 'D/M/YY', - ], - 'months' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'], - 'months_short' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'], - 'weekdays' => ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'سنیچر'], - 'weekdays_short' => ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'سنیچر'], - 'weekdays_min' => ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'سنیچر'], - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ur_PK.php b/vendor/nesbot/carbon/src/Carbon/Lang/ur_PK.php deleted file mode 100644 index 8cd593db..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ur_PK.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/ur.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'], - 'months_short' => ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'], - 'weekdays' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'], - 'weekdays_short' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'], - 'weekdays_min' => ['اتوار', 'پير', 'منگل', 'بدھ', 'جمعرات', 'جمعه', 'هفته'], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['ص', 'ش'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/uz.php b/vendor/nesbot/carbon/src/Carbon/Lang/uz.php deleted file mode 100644 index 61f3b64b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/uz.php +++ /dev/null @@ -1,85 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Dmitriy Shabanov - * - JD Isaacks - * - Inoyatulloh - * - Jamshid - * - aarkhipov - * - Philippe Vaucher - * - felixthemagnificent - * - Tsutomu Kuroda - * - tjku - * - Max Melentiev - * - Juanito Fatas - * - Alisher Ulugbekov - * - Ergashev Adizbek - */ -return [ - 'year' => ':count йил', - 'a_year' => '{1}бир йил|:count йил', - 'y' => ':count й', - 'month' => ':count ой', - 'a_month' => '{1}бир ой|:count ой', - 'm' => ':count о', - 'week' => ':count ҳафта', - 'a_week' => '{1}бир ҳафта|:count ҳафта', - 'w' => ':count ҳ', - 'day' => ':count кун', - 'a_day' => '{1}бир кун|:count кун', - 'd' => ':count к', - 'hour' => ':count соат', - 'a_hour' => '{1}бир соат|:count соат', - 'h' => ':count с', - 'minute' => ':count дақиқа', - 'a_minute' => '{1}бир дақиқа|:count дақиқа', - 'min' => ':count д', - 'second' => ':count сония', - 'a_second' => '{1}сония|:count сония', - 's' => ':count с', - 'ago' => ':time аввал', - 'from_now' => 'Якин :time ичида', - 'after' => ':timeдан кейин', - 'before' => ':time олдин', - 'diff_now' => 'ҳозир', - 'diff_today' => 'Бугун', - 'diff_today_regexp' => 'Бугун(?:\\s+соат)?', - 'diff_yesterday' => 'Кеча', - 'diff_yesterday_regexp' => 'Кеча(?:\\s+соат)?', - 'diff_tomorrow' => 'Эртага', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'D MMMM YYYY, dddd HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[Бугун соат] LT [да]', - 'nextDay' => '[Эртага] LT [да]', - 'nextWeek' => 'dddd [куни соат] LT [да]', - 'lastDay' => '[Кеча соат] LT [да]', - 'lastWeek' => '[Утган] dddd [куни соат] LT [да]', - 'sameElse' => 'L', - ], - 'months' => ['январ', 'феврал', 'март', 'апрел', 'май', 'июн', 'июл', 'август', 'сентябр', 'октябр', 'ноябр', 'декабр'], - 'months_short' => ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'], - 'weekdays' => ['якшанба', 'душанба', 'сешанба', 'чоршанба', 'пайшанба', 'жума', 'шанба'], - 'weekdays_short' => ['якш', 'душ', 'сеш', 'чор', 'пай', 'жум', 'шан'], - 'weekdays_min' => ['як', 'ду', 'се', 'чо', 'па', 'жу', 'ша'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['эрталаб', 'кечаси'], - 'list' => [', ', ' ва '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/uz_Arab.php b/vendor/nesbot/carbon/src/Carbon/Lang/uz_Arab.php deleted file mode 100644 index ffb51319..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/uz_Arab.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/fa.php', [ - 'weekdays' => ['یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'], - 'weekdays_short' => ['ی.', 'د.', 'س.', 'چ.', 'پ.', 'ج.', 'ش.'], - 'weekdays_min' => ['ی.', 'د.', 'س.', 'چ.', 'پ.', 'ج.', 'ش.'], - 'months' => ['جنوری', 'فبروری', 'مارچ', 'اپریل', 'می', 'جون', 'جولای', 'اگست', 'سپتمبر', 'اکتوبر', 'نومبر', 'دسمبر'], - 'months_short' => ['جنو', 'فبر', 'مار', 'اپر', 'می', 'جون', 'جول', 'اگس', 'سپت', 'اکت', 'نوم', 'دسم'], - 'first_day_of_week' => 6, - 'weekend' => [4, 5], - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY-MM-dd', - 'LL' => 'YYYY MMM D', - 'LLL' => 'YYYY MMMM D HH:mm', - 'LLLL' => 'YYYY MMMM D, dddd HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/uz_Cyrl.php b/vendor/nesbot/carbon/src/Carbon/Lang/uz_Cyrl.php deleted file mode 100644 index 89e99718..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/uz_Cyrl.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/uz.php', [ - 'formats' => [ - 'L' => 'DD/MM/yy', - 'LL' => 'D MMM, YYYY', - 'LLL' => 'D MMMM, YYYY HH:mm', - 'LLLL' => 'dddd, DD MMMM, YYYY HH:mm', - ], - 'meridiem' => ['ТО', 'ТК'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/uz_Latn.php b/vendor/nesbot/carbon/src/Carbon/Lang/uz_Latn.php deleted file mode 100644 index ecceeaa3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/uz_Latn.php +++ /dev/null @@ -1,74 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Josh Soref - * - Rasulbek - * - Ilyosjon Kamoldinov (ilyosjon09) - */ -return [ - 'year' => ':count yil', - 'a_year' => '{1}bir yil|:count yil', - 'y' => ':count y', - 'month' => ':count oy', - 'a_month' => '{1}bir oy|:count oy', - 'm' => ':count o', - 'week' => ':count hafta', - 'a_week' => '{1}bir hafta|:count hafta', - 'w' => ':count h', - 'day' => ':count kun', - 'a_day' => '{1}bir kun|:count kun', - 'd' => ':count k', - 'hour' => ':count soat', - 'a_hour' => '{1}bir soat|:count soat', - 'h' => ':count soat', - 'minute' => ':count daqiqa', - 'a_minute' => '{1}bir daqiqa|:count daqiqa', - 'min' => ':count d', - 'second' => ':count soniya', - 'a_second' => '{1}soniya|:count soniya', - 's' => ':count son.', - 'ago' => ':time avval', - 'from_now' => 'Yaqin :time ichida', - 'after' => ':timedan keyin', - 'before' => ':time oldin', - 'diff_yesterday' => 'Kecha', - 'diff_yesterday_regexp' => 'Kecha(?:\\s+soat)?', - 'diff_today' => 'Bugun', - 'diff_today_regexp' => 'Bugun(?:\\s+soat)?', - 'diff_tomorrow' => 'Ertaga', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'D MMMM YYYY, dddd HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[Bugun soat] LT [da]', - 'nextDay' => '[Ertaga] LT [da]', - 'nextWeek' => 'dddd [kuni soat] LT [da]', - 'lastDay' => '[Kecha soat] LT [da]', - 'lastWeek' => '[O\'tgan] dddd [kuni soat] LT [da]', - 'sameElse' => 'L', - ], - 'months' => ['Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'Iyun', 'Iyul', 'Avgust', 'Sentabr', 'Oktabr', 'Noyabr', 'Dekabr'], - 'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'Iyun', 'Iyul', 'Avg', 'Sen', 'Okt', 'Noy', 'Dek'], - 'weekdays' => ['Yakshanba', 'Dushanba', 'Seshanba', 'Chorshanba', 'Payshanba', 'Juma', 'Shanba'], - 'weekdays_short' => ['Yak', 'Dush', 'Sesh', 'Chor', 'Pay', 'Jum', 'Shan'], - 'weekdays_min' => ['Ya', 'Du', 'Se', 'Cho', 'Pa', 'Ju', 'Sha'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' va '], - 'meridiem' => ['TO', 'TK'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ.php b/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ.php deleted file mode 100644 index d41bfee2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Bobir Ismailov Bobir Ismailov, Pablo Saratxaga, Mashrab Kuvatov bobir_is@yahoo.com, pablo@mandrakesoft.com, kmashrab@uni-bremen.de - */ -return array_replace_recursive(require __DIR__.'/uz_Latn.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['Yanvar', 'Fevral', 'Mart', 'Aprel', 'May', 'Iyun', 'Iyul', 'Avgust', 'Sentabr', 'Oktabr', 'Noyabr', 'Dekabr'], - 'months_short' => ['Yan', 'Fev', 'Mar', 'Apr', 'May', 'Iyn', 'Iyl', 'Avg', 'Sen', 'Okt', 'Noy', 'Dek'], - 'weekdays' => ['Yakshanba', 'Dushanba', 'Seshanba', 'Chorshanba', 'Payshanba', 'Juma', 'Shanba'], - 'weekdays_short' => ['Yak', 'Du', 'Se', 'Cho', 'Pay', 'Ju', 'Sha'], - 'weekdays_min' => ['Yak', 'Du', 'Se', 'Cho', 'Pay', 'Ju', 'Sha'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ@cyrillic.php b/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ@cyrillic.php deleted file mode 100644 index 2fa967c9..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/uz_UZ@cyrillic.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Mashrab Kuvatov Mashrab Kuvatov, Pablo Saratxaga kmashrab@uni-bremen.de, pablo@mandrakesoft.com - */ -return array_replace_recursive(require __DIR__.'/uz.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['Январ', 'Феврал', 'Март', 'Апрел', 'Май', 'Июн', 'Июл', 'Август', 'Сентябр', 'Октябр', 'Ноябр', 'Декабр'], - 'months_short' => ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'], - 'weekdays' => ['Якшанба', 'Душанба', 'Сешанба', 'Чоршанба', 'Пайшанба', 'Жума', 'Шанба'], - 'weekdays_short' => ['Якш', 'Душ', 'Сеш', 'Чор', 'Пай', 'Жум', 'Шан'], - 'weekdays_min' => ['Якш', 'Душ', 'Сеш', 'Чор', 'Пай', 'Жум', 'Шан'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/vai.php b/vendor/nesbot/carbon/src/Carbon/Lang/vai.php deleted file mode 100644 index 3c378dfb..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/vai.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'weekdays' => ['ꕞꕌꔵ', 'ꗳꗡꘉ', 'ꕚꕞꕚ', 'ꕉꕞꕒ', 'ꕉꔤꕆꕢ', 'ꕉꔤꕀꕮ', 'ꔻꔬꔳ'], - 'weekdays_short' => ['ꕞꕌꔵ', 'ꗳꗡꘉ', 'ꕚꕞꕚ', 'ꕉꕞꕒ', 'ꕉꔤꕆꕢ', 'ꕉꔤꕀꕮ', 'ꔻꔬꔳ'], - 'weekdays_min' => ['ꕞꕌꔵ', 'ꗳꗡꘉ', 'ꕚꕞꕚ', 'ꕉꕞꕒ', 'ꕉꔤꕆꕢ', 'ꕉꔤꕀꕮ', 'ꔻꔬꔳ'], - 'months' => ['ꖨꖕ ꕪꕴ ꔞꔀꕮꕊ', 'ꕒꕡꖝꖕ', 'ꕾꖺ', 'ꖢꖕ', 'ꖑꕱ', 'ꖱꘋ', 'ꖱꕞꔤ', 'ꗛꔕ', 'ꕢꕌ', 'ꕭꖃ', 'ꔞꘋꕔꕿ ꕸꖃꗏ', 'ꖨꖕ ꕪꕴ ꗏꖺꕮꕊ'], - 'months_short' => ['ꖨꖕꔞ', 'ꕒꕡ', 'ꕾꖺ', 'ꖢꖕ', 'ꖑꕱ', 'ꖱꘋ', 'ꖱꕞ', 'ꗛꔕ', 'ꕢꕌ', 'ꕭꖃ', 'ꔞꘋ', 'ꖨꖕꗏ'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY h:mm a', - 'LLLL' => 'dddd, D MMMM YYYY h:mm a', - ], - - 'year' => ':count ꕀ', // less reliable - 'y' => ':count ꕀ', // less reliable - 'a_year' => ':count ꕀ', // less reliable - - 'second' => ':count ꗱꕞꕯꕊ', // less reliable - 's' => ':count ꗱꕞꕯꕊ', // less reliable - 'a_second' => ':count ꗱꕞꕯꕊ', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/vai_Latn.php b/vendor/nesbot/carbon/src/Carbon/Lang/vai_Latn.php deleted file mode 100644 index 51e83cc5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/vai_Latn.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'weekdays' => ['lahadi', 'tɛɛnɛɛ', 'talata', 'alaba', 'aimisa', 'aijima', 'siɓiti'], - 'weekdays_short' => ['lahadi', 'tɛɛnɛɛ', 'talata', 'alaba', 'aimisa', 'aijima', 'siɓiti'], - 'weekdays_min' => ['lahadi', 'tɛɛnɛɛ', 'talata', 'alaba', 'aimisa', 'aijima', 'siɓiti'], - 'months' => ['luukao kemã', 'ɓandaɓu', 'vɔɔ', 'fulu', 'goo', '6', '7', 'kɔnde', 'saah', 'galo', 'kenpkato ɓololɔ', 'luukao lɔma'], - 'months_short' => ['luukao kemã', 'ɓandaɓu', 'vɔɔ', 'fulu', 'goo', '6', '7', 'kɔnde', 'saah', 'galo', 'kenpkato ɓololɔ', 'luukao lɔma'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'h:mm a', - 'LTS' => 'h:mm:ss a', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY h:mm a', - 'LLLL' => 'dddd, D MMMM YYYY h:mm a', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/vai_Vaii.php b/vendor/nesbot/carbon/src/Carbon/Lang/vai_Vaii.php deleted file mode 100644 index b4bb533f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/vai_Vaii.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/vai.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ve.php b/vendor/nesbot/carbon/src/Carbon/Lang/ve.php deleted file mode 100644 index 7f10aeb9..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ve.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/ve_ZA.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/ve_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/ve_ZA.php deleted file mode 100644 index 5eb2b912..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/ve_ZA.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['Phando', 'Luhuhi', 'Ṱhafamuhwe', 'Lambamai', 'Shundunthule', 'Fulwi', 'Fulwana', 'Ṱhangule', 'Khubvumedzi', 'Tshimedzi', 'Ḽara', 'Nyendavhusiku'], - 'months_short' => ['Pha', 'Luh', 'Fam', 'Lam', 'Shu', 'Lwi', 'Lwa', 'Ngu', 'Khu', 'Tsh', 'Ḽar', 'Nye'], - 'weekdays' => ['Swondaha', 'Musumbuluwo', 'Ḽavhuvhili', 'Ḽavhuraru', 'Ḽavhuṋa', 'Ḽavhuṱanu', 'Mugivhela'], - 'weekdays_short' => ['Swo', 'Mus', 'Vhi', 'Rar', 'ṋa', 'Ṱan', 'Mug'], - 'weekdays_min' => ['Swo', 'Mus', 'Vhi', 'Rar', 'ṋa', 'Ṱan', 'Mug'], - 'day_of_first_week_of_year' => 1, - - // Too unreliable - /* - 'day' => ':count vhege', // less reliable - 'd' => ':count vhege', // less reliable - 'a_day' => ':count vhege', // less reliable - - 'hour' => ':count watshi', // less reliable - 'h' => ':count watshi', // less reliable - 'a_hour' => ':count watshi', // less reliable - - 'minute' => ':count watshi', // less reliable - 'min' => ':count watshi', // less reliable - 'a_minute' => ':count watshi', // less reliable - - 'second' => ':count Mu', // less reliable - 's' => ':count Mu', // less reliable - 'a_second' => ':count Mu', // less reliable - - 'week' => ':count vhege', - 'w' => ':count vhege', - 'a_week' => ':count vhege', - */ -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/vi.php b/vendor/nesbot/carbon/src/Carbon/Lang/vi.php deleted file mode 100644 index 73e2852e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/vi.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - Andre Polykanine A.K.A. Menelion Elensúlë - * - JD Isaacks - */ -return [ - 'year' => ':count năm', - 'a_year' => '{1}một năm|]1, Inf[:count năm', - 'y' => ':count năm', - 'month' => ':count tháng', - 'a_month' => '{1}một tháng|]1, Inf[:count tháng', - 'm' => ':count tháng', - 'week' => ':count tuần', - 'a_week' => '{1}một tuần|]1, Inf[:count tuần', - 'w' => ':count tuần', - 'day' => ':count ngày', - 'a_day' => '{1}một ngày|]1, Inf[:count ngày', - 'd' => ':count ngày', - 'hour' => ':count giờ', - 'a_hour' => '{1}một giờ|]1, Inf[:count giờ', - 'h' => ':count giờ', - 'minute' => ':count phút', - 'a_minute' => '{1}một phút|]1, Inf[:count phút', - 'min' => ':count phút', - 'second' => ':count giây', - 'a_second' => '{1}vài giây|]1, Inf[:count giây', - 's' => ':count giây', - 'ago' => ':time trước', - 'from_now' => ':time tới', - 'after' => ':time sau', - 'before' => ':time trước', - 'diff_now' => 'bây giờ', - 'diff_today' => 'Hôm', - 'diff_today_regexp' => 'Hôm(?:\\s+nay)?(?:\\s+lúc)?', - 'diff_yesterday' => 'Hôm qua', - 'diff_yesterday_regexp' => 'Hôm(?:\\s+qua)?(?:\\s+lúc)?', - 'diff_tomorrow' => 'Ngày mai', - 'diff_tomorrow_regexp' => 'Ngày(?:\\s+mai)?(?:\\s+lúc)?', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMMM [năm] YYYY', - 'LLL' => 'D MMMM [năm] YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM [năm] YYYY HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[Hôm nay lúc] LT', - 'nextDay' => '[Ngày mai lúc] LT', - 'nextWeek' => 'dddd [tuần tới lúc] LT', - 'lastDay' => '[Hôm qua lúc] LT', - 'lastWeek' => 'dddd [tuần trước lúc] LT', - 'sameElse' => 'L', - ], - 'meridiem' => ['SA', 'CH'], - 'months' => ['tháng 1', 'tháng 2', 'tháng 3', 'tháng 4', 'tháng 5', 'tháng 6', 'tháng 7', 'tháng 8', 'tháng 9', 'tháng 10', 'tháng 11', 'tháng 12'], - 'months_short' => ['Th01', 'Th02', 'Th03', 'Th04', 'Th05', 'Th06', 'Th07', 'Th08', 'Th09', 'Th10', 'Th11', 'Th12'], - 'weekdays' => ['chủ nhật', 'thứ hai', 'thứ ba', 'thứ tư', 'thứ năm', 'thứ sáu', 'thứ bảy'], - 'weekdays_short' => ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], - 'weekdays_min' => ['CN', 'T2', 'T3', 'T4', 'T5', 'T6', 'T7'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => [', ', ' và '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/vi_VN.php b/vendor/nesbot/carbon/src/Carbon/Lang/vi_VN.php deleted file mode 100644 index 18d89876..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/vi_VN.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/vi.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/vo.php b/vendor/nesbot/carbon/src/Carbon/Lang/vo.php deleted file mode 100644 index e273033f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/vo.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'months' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], - 'months_short' => ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11', 'M12'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY-MM-dd', - 'LL' => 'YYYY MMM D', - 'LLL' => 'YYYY MMMM D HH:mm', - 'LLLL' => 'YYYY MMMM D, dddd HH:mm', - ], - - 'year' => ':count yel', - 'y' => ':count yel', - 'a_year' => ':count yel', - - 'month' => ':count mul', - 'm' => ':count mul', - 'a_month' => ':count mul', - - 'week' => ':count vig', - 'w' => ':count vig', - 'a_week' => ':count vig', - - 'day' => ':count del', - 'd' => ':count del', - 'a_day' => ':count del', - - 'hour' => ':count düp', - 'h' => ':count düp', - 'a_hour' => ':count düp', - - 'minute' => ':count minut', - 'min' => ':count minut', - 'a_minute' => ':count minut', - - 'second' => ':count sekun', - 's' => ':count sekun', - 'a_second' => ':count sekun', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/vun.php b/vendor/nesbot/carbon/src/Carbon/Lang/vun.php deleted file mode 100644 index ed92e8e7..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/vun.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['utuko', 'kyiukonyi'], - 'weekdays' => ['Jumapilyi', 'Jumatatuu', 'Jumanne', 'Jumatanu', 'Alhamisi', 'Ijumaa', 'Jumamosi'], - 'weekdays_short' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - 'weekdays_min' => ['Jpi', 'Jtt', 'Jnn', 'Jtn', 'Alh', 'Iju', 'Jmo'], - 'months' => ['Januari', 'Februari', 'Machi', 'Aprilyi', 'Mei', 'Junyi', 'Julyai', 'Agusti', 'Septemba', 'Oktoba', 'Novemba', 'Desemba'], - 'months_short' => ['Jan', 'Feb', 'Mac', 'Apr', 'Mei', 'Jun', 'Jul', 'Ago', 'Sep', 'Okt', 'Nov', 'Des'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/wa.php b/vendor/nesbot/carbon/src/Carbon/Lang/wa.php deleted file mode 100644 index f6dc4ccd..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/wa.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/wa_BE.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/wa_BE.php b/vendor/nesbot/carbon/src/Carbon/Lang/wa_BE.php deleted file mode 100644 index a76d80d9..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/wa_BE.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Djan SACRE Pablo Saratxaga pablo@mandrakesoft.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['di djanvî', 'di fevrî', 'di måss', 'd’ avri', 'di may', 'di djun', 'di djulete', 'd’ awousse', 'di setimbe', 'd’ octôbe', 'di nôvimbe', 'di decimbe'], - 'months_short' => ['dja', 'fev', 'mås', 'avr', 'may', 'djn', 'djl', 'awo', 'set', 'oct', 'nôv', 'dec'], - 'weekdays' => ['dimegne', 'londi', 'mårdi', 'mierkidi', 'djudi', 'vénrdi', 'semdi'], - 'weekdays_short' => ['dim', 'lon', 'mår', 'mie', 'dju', 'vén', 'sem'], - 'weekdays_min' => ['dim', 'lon', 'mår', 'mie', 'dju', 'vén', 'sem'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - - 'year' => ':count anêye', - 'y' => ':count anêye', - 'a_year' => ':count anêye', - - 'month' => ':count meûs', - 'm' => ':count meûs', - 'a_month' => ':count meûs', - - 'week' => ':count samwinne', - 'w' => ':count samwinne', - 'a_week' => ':count samwinne', - - 'day' => ':count djoû', - 'd' => ':count djoû', - 'a_day' => ':count djoû', - - 'hour' => ':count eure', - 'h' => ':count eure', - 'a_hour' => ':count eure', - - 'minute' => ':count munute', - 'min' => ':count munute', - 'a_minute' => ':count munute', - - 'second' => ':count Sigonde', - 's' => ':count Sigonde', - 'a_second' => ':count Sigonde', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/wae.php b/vendor/nesbot/carbon/src/Carbon/Lang/wae.php deleted file mode 100644 index bf57f23e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/wae.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/wae_CH.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/wae_CH.php b/vendor/nesbot/carbon/src/Carbon/Lang/wae_CH.php deleted file mode 100644 index 2af50b4b..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/wae_CH.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Walser Translation Team ml@translate-wae.ch - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'YYYY-MM-DD', - ], - 'months' => ['Jenner', 'Hornig', 'Märze', 'Abrille', 'Meije', 'Bráčet', 'Heiwet', 'Öigšte', 'Herbštmánet', 'Wímánet', 'Wintermánet', 'Chrištmánet'], - 'months_short' => ['Jen', 'Hor', 'Mär', 'Abr', 'Mei', 'Brá', 'Hei', 'Öig', 'Her', 'Wím', 'Win', 'Chr'], - 'weekdays' => ['Suntag', 'Mäntag', 'Zischtag', 'Mittwuch', 'Frontag', 'Fritag', 'Samschtag'], - 'weekdays_short' => ['Sun', 'Män', 'Zis', 'Mit', 'Fro', 'Fri', 'Sam'], - 'weekdays_min' => ['Sun', 'Män', 'Zis', 'Mit', 'Fro', 'Fri', 'Sam'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - - 'month' => ':count Maano', // less reliable - 'm' => ':count Maano', // less reliable - 'a_month' => ':count Maano', // less reliable -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/wal.php b/vendor/nesbot/carbon/src/Carbon/Lang/wal.php deleted file mode 100644 index e8ec40ff..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/wal.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/wal_ET.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/wal_ET.php b/vendor/nesbot/carbon/src/Carbon/Lang/wal_ET.php deleted file mode 100644 index a4e619a8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/wal_ET.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Ge'ez Frontier Foundation locales@geez.org - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['ጃንዩወሪ', 'ፌብሩወሪ', 'ማርች', 'ኤፕረል', 'ሜይ', 'ጁን', 'ጁላይ', 'ኦገስት', 'ሴፕቴምበር', 'ኦክተውበር', 'ኖቬምበር', 'ዲሴምበር'], - 'months_short' => ['ጃንዩ', 'ፌብሩ', 'ማርች', 'ኤፕረ', 'ሜይ ', 'ጁን ', 'ጁላይ', 'ኦገስ', 'ሴፕቴ', 'ኦክተ', 'ኖቬም', 'ዲሴም'], - 'weekdays' => ['ወጋ', 'ሳይኖ', 'ማቆሳኛ', 'አሩዋ', 'ሃሙሳ', 'አርባ', 'ቄራ'], - 'weekdays_short' => ['ወጋ ', 'ሳይኖ', 'ማቆሳ', 'አሩዋ', 'ሃሙሳ', 'አርባ', 'ቄራ '], - 'weekdays_min' => ['ወጋ ', 'ሳይኖ', 'ማቆሳ', 'አሩዋ', 'ሃሙሳ', 'አርባ', 'ቄራ '], - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['ማለዶ', 'ቃማ'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/wo.php b/vendor/nesbot/carbon/src/Carbon/Lang/wo.php deleted file mode 100644 index 74b95df0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/wo.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/wo_SN.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/wo_SN.php b/vendor/nesbot/carbon/src/Carbon/Lang/wo_SN.php deleted file mode 100644 index f8a85b3e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/wo_SN.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - The Debian Project Christian Perrier bubulle@debian.org - */ -return [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD.MM.YYYY', - 'LL' => 'MMMM DD, YYYY', - 'LLL' => 'DD MMM HH:mm', - 'LLLL' => 'MMMM DD, YYYY HH:mm', - ], - 'months' => ['sanwiy\'e', 'feebriy\'e', 'mars', 'awril', 'me', 'suwen', 'sulet', 'uut', 'septaambar', 'oktoobar', 'nowaambar', 'desaambar'], - 'months_short' => ['san', 'fee', 'mar', 'awr', 'me ', 'suw', 'sul', 'uut', 'sep', 'okt', 'now', 'des'], - 'weekdays' => ['dib\'eer', 'altine', 'talaata', 'allarba', 'alxames', 'ajjuma', 'gaawu'], - 'weekdays_short' => ['dib', 'alt', 'tal', 'all', 'alx', 'ajj', 'gaa'], - 'weekdays_min' => ['dib', 'alt', 'tal', 'all', 'alx', 'ajj', 'gaa'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'year' => ':count at', - 'month' => ':count wèr', - 'week' => ':count ayubés', - 'day' => ':count bés', - 'hour' => ':count waxtu', - 'minute' => ':count simili', - 'second' => ':count saa', -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/xh.php b/vendor/nesbot/carbon/src/Carbon/Lang/xh.php deleted file mode 100644 index e88c78d9..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/xh.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/xh_ZA.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/xh_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/xh_ZA.php deleted file mode 100644 index 910f8311..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/xh_ZA.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['eyoMqungu', 'eyoMdumba', 'eyoKwindla', 'uTshazimpuzi', 'uCanzibe', 'eyeSilimela', 'eyeKhala', 'eyeThupa', 'eyoMsintsi', 'eyeDwarha', 'eyeNkanga', 'eyoMnga'], - 'months_short' => ['Mqu', 'Mdu', 'Kwi', 'Tsh', 'Can', 'Sil', 'Kha', 'Thu', 'Msi', 'Dwa', 'Nka', 'Mng'], - 'weekdays' => ['iCawa', 'uMvulo', 'lwesiBini', 'lwesiThathu', 'ulweSine', 'lwesiHlanu', 'uMgqibelo'], - 'weekdays_short' => ['Caw', 'Mvu', 'Bin', 'Tha', 'Sin', 'Hla', 'Mgq'], - 'weekdays_min' => ['Caw', 'Mvu', 'Bin', 'Tha', 'Sin', 'Hla', 'Mgq'], - 'day_of_first_week_of_year' => 1, - - 'year' => ':count ihlobo', // less reliable - 'y' => ':count ihlobo', // less reliable - 'a_year' => ':count ihlobo', // less reliable - - 'hour' => ':count iwotshi', // less reliable - 'h' => ':count iwotshi', // less reliable - 'a_hour' => ':count iwotshi', // less reliable - - 'minute' => ':count ingqalelo', // less reliable - 'min' => ':count ingqalelo', // less reliable - 'a_minute' => ':count ingqalelo', // less reliable - - 'second' => ':count nceda', // less reliable - 's' => ':count nceda', // less reliable - 'a_second' => ':count nceda', // less reliable - - 'month' => ':count inyanga', - 'm' => ':count inyanga', - 'a_month' => ':count inyanga', - - 'week' => ':count veki', - 'w' => ':count veki', - 'a_week' => ':count veki', - - 'day' => ':count imini', - 'd' => ':count imini', - 'a_day' => ':count imini', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/xog.php b/vendor/nesbot/carbon/src/Carbon/Lang/xog.php deleted file mode 100644 index eb55b4ab..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/xog.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['Munkyo', 'Eigulo'], - 'weekdays' => ['Sabiiti', 'Balaza', 'Owokubili', 'Owokusatu', 'Olokuna', 'Olokutaanu', 'Olomukaaga'], - 'weekdays_short' => ['Sabi', 'Bala', 'Kubi', 'Kusa', 'Kuna', 'Kuta', 'Muka'], - 'weekdays_min' => ['Sabi', 'Bala', 'Kubi', 'Kusa', 'Kuna', 'Kuta', 'Muka'], - 'months' => ['Janwaliyo', 'Febwaliyo', 'Marisi', 'Apuli', 'Maayi', 'Juuni', 'Julaayi', 'Agusito', 'Sebuttemba', 'Okitobba', 'Novemba', 'Desemba'], - 'months_short' => ['Jan', 'Feb', 'Mar', 'Apu', 'Maa', 'Juu', 'Jul', 'Agu', 'Seb', 'Oki', 'Nov', 'Des'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yav.php b/vendor/nesbot/carbon/src/Carbon/Lang/yav.php deleted file mode 100644 index 225a20d8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/yav.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/en.php', [ - 'meridiem' => ['kiɛmɛ́ɛm', 'kisɛ́ndɛ'], - 'weekdays' => ['sɔ́ndiɛ', 'móndie', 'muányáŋmóndie', 'metúkpíápɛ', 'kúpélimetúkpiapɛ', 'feléte', 'séselé'], - 'weekdays_short' => ['sd', 'md', 'mw', 'et', 'kl', 'fl', 'ss'], - 'weekdays_min' => ['sd', 'md', 'mw', 'et', 'kl', 'fl', 'ss'], - 'months' => ['pikítíkítie, oólí ú kutúan', 'siɛyɛ́, oóli ú kándíɛ', 'ɔnsúmbɔl, oóli ú kátátúɛ', 'mesiŋ, oóli ú kénie', 'ensil, oóli ú kátánuɛ', 'ɔsɔn', 'efute', 'pisuyú', 'imɛŋ i puɔs', 'imɛŋ i putúk,oóli ú kátíɛ', 'makandikɛ', 'pilɔndɔ́'], - 'months_short' => ['o.1', 'o.2', 'o.3', 'o.4', 'o.5', 'o.6', 'o.7', 'o.8', 'o.9', 'o.10', 'o.11', 'o.12'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'D/M/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yi.php b/vendor/nesbot/carbon/src/Carbon/Lang/yi.php deleted file mode 100644 index 8f320229..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/yi.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/yi_US.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yi_US.php b/vendor/nesbot/carbon/src/Carbon/Lang/yi_US.php deleted file mode 100644 index f764d36f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/yi_US.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - http://www.uyip.org/ Pablo Saratxaga pablo@mandrakesoft.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['יאַנואַר', 'פֿעברואַר', 'מערץ', 'אַפּריל', 'מיי', 'יוני', 'יולי', 'אויגוסט', 'סעפּטעמבער', 'אקטאבער', 'נאוועמבער', 'דעצעמבער'], - 'months_short' => ['יאַנ', 'פֿעב', 'מאַר', 'אַפּר', 'מײַ ', 'יונ', 'יול', 'אױג', 'סעפּ', 'אָקט', 'נאָװ', 'דעצ'], - 'weekdays' => ['זונטיק', 'מאָנטיק', 'דינסטיק', 'מיטװאָך', 'דאָנערשטיק', 'פֿרײַטיק', 'שבת'], - 'weekdays_short' => ['זונ\'', 'מאָנ\'', 'דינ\'', 'מיט\'', 'דאָנ\'', 'פֿרײַ\'', 'שבת'], - 'weekdays_min' => ['זונ\'', 'מאָנ\'', 'דינ\'', 'מיט\'', 'דאָנ\'', 'פֿרײַ\'', 'שבת'], - 'day_of_first_week_of_year' => 1, - - 'year' => ':count יאר', - 'y' => ':count יאר', - 'a_year' => ':count יאר', - - 'month' => ':count חודש', - 'm' => ':count חודש', - 'a_month' => ':count חודש', - - 'week' => ':count וואָך', - 'w' => ':count וואָך', - 'a_week' => ':count וואָך', - - 'day' => ':count טאָג', - 'd' => ':count טאָג', - 'a_day' => ':count טאָג', - - 'hour' => ':count שעה', - 'h' => ':count שעה', - 'a_hour' => ':count שעה', - - 'minute' => ':count מינוט', - 'min' => ':count מינוט', - 'a_minute' => ':count מינוט', - - 'second' => ':count סעקונדע', - 's' => ':count סעקונדע', - 'a_second' => ':count סעקונדע', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yo.php b/vendor/nesbot/carbon/src/Carbon/Lang/yo.php deleted file mode 100644 index 0a829810..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/yo.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - François B - * - Atolagbe Abisoye - */ -return [ - 'year' => 'ọdún :count', - 'a_year' => '{1}ọdún kan|ọdún :count', - 'month' => 'osù :count', - 'a_month' => '{1}osù kan|osù :count', - 'week' => 'ọsẹ :count', - 'a_week' => '{1}ọsẹ kan|ọsẹ :count', - 'day' => 'ọjọ́ :count', - 'a_day' => '{1}ọjọ́ kan|ọjọ́ :count', - 'hour' => 'wákati :count', - 'a_hour' => '{1}wákati kan|wákati :count', - 'minute' => 'ìsẹjú :count', - 'a_minute' => '{1}ìsẹjú kan|ìsẹjú :count', - 'second' => 'iaayá :count', - 'a_second' => '{1}ìsẹjú aayá die|aayá :count', - 'ago' => ':time kọjá', - 'from_now' => 'ní :time', - 'diff_yesterday' => 'Àna', - 'diff_yesterday_regexp' => 'Àna(?:\\s+ni)?', - 'diff_today' => 'Ònì', - 'diff_today_regexp' => 'Ònì(?:\\s+ni)?', - 'diff_tomorrow' => 'Ọ̀la', - 'diff_tomorrow_regexp' => 'Ọ̀la(?:\\s+ni)?', - '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', - ], - 'calendar' => [ - 'sameDay' => '[Ònì ni] LT', - 'nextDay' => '[Ọ̀la ni] LT', - 'nextWeek' => 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT', - 'lastDay' => '[Àna ni] LT', - 'lastWeek' => 'dddd [Ọsẹ̀ tólọ́] [ni] LT', - 'sameElse' => 'L', - ], - 'ordinal' => 'ọjọ́ :number', - 'months' => ['Sẹ́rẹ́', 'Èrèlè', 'Ẹrẹ̀nà', 'Ìgbé', 'Èbibi', 'Òkùdu', 'Agẹmo', 'Ògún', 'Owewe', 'Ọ̀wàrà', 'Bélú', 'Ọ̀pẹ̀̀'], - 'months_short' => ['Sẹ́r', 'Èrl', 'Ẹrn', 'Ìgb', 'Èbi', 'Òkù', 'Agẹ', 'Ògú', 'Owe', 'Ọ̀wà', 'Bél', 'Ọ̀pẹ̀̀'], - 'weekdays' => ['Àìkú', 'Ajé', 'Ìsẹ́gun', 'Ọjọ́rú', 'Ọjọ́bọ', 'Ẹtì', 'Àbámẹ́ta'], - 'weekdays_short' => ['Àìk', 'Ajé', 'Ìsẹ́', 'Ọjr', 'Ọjb', 'Ẹtì', 'Àbá'], - 'weekdays_min' => ['Àì', 'Aj', 'Ìs', 'Ọr', 'Ọb', 'Ẹt', 'Àb'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'meridiem' => ['Àárọ̀', 'Ọ̀sán'], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yo_BJ.php b/vendor/nesbot/carbon/src/Carbon/Lang/yo_BJ.php deleted file mode 100644 index 12b9e815..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/yo_BJ.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return array_replace_recursive(require __DIR__.'/yo.php', [ - 'meridiem' => ['Àárɔ̀', 'Ɔ̀sán'], - 'weekdays' => ['Ɔjɔ́ Àìkú', 'Ɔjɔ́ Ajé', 'Ɔjɔ́ Ìsɛ́gun', 'Ɔjɔ́rú', 'Ɔjɔ́bɔ', 'Ɔjɔ́ Ɛtì', 'Ɔjɔ́ Àbámɛ́ta'], - 'weekdays_short' => ['Àìkú', 'Ajé', 'Ìsɛ́gun', 'Ɔjɔ́rú', 'Ɔjɔ́bɔ', 'Ɛtì', 'Àbámɛ́ta'], - 'weekdays_min' => ['Àìkú', 'Ajé', 'Ìsɛ́gun', 'Ɔjɔ́rú', 'Ɔjɔ́bɔ', 'Ɛtì', 'Àbámɛ́ta'], - 'months' => ['Oshù Shɛ́rɛ́', 'Oshù Èrèlè', 'Oshù Ɛrɛ̀nà', 'Oshù Ìgbé', 'Oshù Ɛ̀bibi', 'Oshù Òkúdu', 'Oshù Agɛmɔ', 'Oshù Ògún', 'Oshù Owewe', 'Oshù Ɔ̀wàrà', 'Oshù Bélú', 'Oshù Ɔ̀pɛ̀'], - 'months_short' => ['Shɛ́rɛ́', 'Èrèlè', 'Ɛrɛ̀nà', 'Ìgbé', 'Ɛ̀bibi', 'Òkúdu', 'Agɛmɔ', 'Ògún', 'Owewe', 'Ɔ̀wàrà', 'Bélú', 'Ɔ̀pɛ̀'], - 'first_day_of_week' => 1, - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'DD/MM/YYYY', - 'LL' => 'D MMM YYYY', - 'LLL' => 'D MMMM YYYY HH:mm', - 'LLLL' => 'dddd, D MMMM YYYY HH:mm', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yo_NG.php b/vendor/nesbot/carbon/src/Carbon/Lang/yo_NG.php deleted file mode 100644 index 6860bc1a..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/yo_NG.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/yo.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yue.php b/vendor/nesbot/carbon/src/Carbon/Lang/yue.php deleted file mode 100644 index ce233a4f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/yue.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/yue_HK.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yue_HK.php b/vendor/nesbot/carbon/src/Carbon/Lang/yue_HK.php deleted file mode 100644 index 4e7d5c36..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/yue_HK.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/zh_HK.php', [ - 'formats' => [ - 'L' => 'YYYY年MM月DD日 dddd', - ], - 'months' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - 'months_short' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - 'weekdays' => ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - 'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'], - 'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'], - 'first_day_of_week' => 0, - 'day_of_first_week_of_year' => 1, - 'meridiem' => ['上午', '下午'], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hans.php b/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hans.php deleted file mode 100644 index db913caa..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hans.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/zh_Hans.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hant.php b/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hant.php deleted file mode 100644 index e2526f13..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/yue_Hant.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/zh_Hant.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yuw.php b/vendor/nesbot/carbon/src/Carbon/Lang/yuw.php deleted file mode 100644 index 8efdc937..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/yuw.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/yuw_PG.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/yuw_PG.php b/vendor/nesbot/carbon/src/Carbon/Lang/yuw_PG.php deleted file mode 100644 index b99ad2e8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/yuw_PG.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Information from native speakers Hannah Sarvasy nungon.localization@gmail.com - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YY', - ], - 'months' => ['jenuari', 'febuari', 'mas', 'epril', 'mei', 'jun', 'julai', 'ögus', 'septemba', 'öktoba', 'nöwemba', 'diksemba'], - 'months_short' => ['jen', 'feb', 'mas', 'epr', 'mei', 'jun', 'jul', 'ögu', 'sep', 'ökt', 'nöw', 'dis'], - 'weekdays' => ['sönda', 'mönda', 'sinda', 'mitiwö', 'sogipbono', 'nenggo', 'söndanggie'], - 'weekdays_short' => ['sön', 'mön', 'sin', 'mit', 'soi', 'nen', 'sab'], - 'weekdays_min' => ['sön', 'mön', 'sin', 'mit', 'soi', 'nen', 'sab'], - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zgh.php b/vendor/nesbot/carbon/src/Carbon/Lang/zgh.php deleted file mode 100644 index 4d2c3b37..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zgh.php +++ /dev/null @@ -1,80 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - BAKTETE Miloud - */ -return [ - 'year' => ':count ⵓⵙⴳⴳⵯⴰⵙ|:count ⵉⵙⴳⴳⵓⵙⴰ', - 'a_year' => 'ⵓⵙⴳⴳⵯⴰⵙ|:count ⵉⵙⴳⴳⵓⵙⴰ', - 'y' => ':count ⵓⵙⴳⴳⵯⴰⵙ|:count ⵉⵙⴳⴳⵓⵙⴰ', - 'month' => ':count ⵡⴰⵢⵢⵓⵔ|:count ⴰⵢⵢⵓⵔⵏ', - 'a_month' => 'ⵉⴷⵊ ⵡⴰⵢⵢⵓⵔ|:count ⴰⵢⵢⵓⵔⵏ', - 'm' => ':count ⴰⵢⵢⵓⵔⵏ', - 'week' => ':count ⵉⵎⴰⵍⴰⵙⵙ|:count ⵉⵎⴰⵍⴰⵙⵙⵏ', - 'a_week' => 'ⵉⵛⵜ ⵉⵎⴰⵍⴰⵙⵙ|:count ⵉⵎⴰⵍⴰⵙⵙⵏ', - 'w' => ':count ⵉⵎⴰⵍⴰⵙⵙ.', - 'day' => ':count ⵡⴰⵙⵙ|:count ⵓⵙⵙⴰⵏ', - 'a_day' => 'ⵉⴷⵊ ⵡⴰⵙⵙ|:count ⵓⵙⵙⴰⵏ', - 'd' => ':count ⵓ', - 'hour' => ':count ⵜⵙⵔⴰⴳⵜ|:count ⵜⵉⵙⵔⴰⴳⵉⵏ', - 'a_hour' => 'ⵉⵛⵜ ⵜⵙⵔⴰⴳⵜ|:count ⵜⵉⵙⵔⴰⴳⵉⵏ', - 'h' => ':count ⵜ', - 'minute' => ':count ⵜⵓⵙⴷⵉⴷⵜ|:count ⵜⵓⵙⴷⵉⴷⵉⵏ', - 'a_minute' => 'ⵉⵛⵜ ⵜⵓⵙⴷⵉⴷⵜ|:count ⵜⵓⵙⴷⵉⴷⵉⵏ', - 'min' => ':count ⵜⵓⵙ', - 'second' => ':count ⵜⵙⵉⵏⵜ|:count ⵜⵉⵙⵉⵏⴰ', - 'a_second' => 'ⴽⵔⴰ ⵜⵉⵙⵉⵏⴰ|:count ⵜⵉⵙⵉⵏⴰ', - 's' => ':count ⵜ', - 'ago' => 'ⵣⴳ :time', - 'from_now' => 'ⴷⴳ :time', - 'after' => ':time ⴰⵡⴰⵔ', - 'before' => ':time ⴷⴰⵜ', - 'diff_now' => 'ⴰⴷⵡⴰⵍⵉ', - 'diff_today' => 'ⴰⵙⵙ', - 'diff_today_regexp' => 'ⴰⵙⵙ(?:\\s+ⴰ/ⴰⴷ)?(?:\\s+ⴳ)?', - 'diff_yesterday' => 'ⴰⵙⵙⵏⵏⴰⵟ', - 'diff_yesterday_regexp' => 'ⴰⵙⵙⵏⵏⴰⵟ(?:\\s+ⴳ)?', - 'diff_tomorrow' => 'ⴰⵙⴽⴽⴰ', - 'diff_tomorrow_regexp' => 'ⴰⵙⴽⴽⴰ(?:\\s+ⴳ)?', - 'diff_before_yesterday' => 'ⴼⵔ ⵉⴹⵏⵏⴰⵟ', - 'diff_after_tomorrow' => 'ⵏⴰⴼ ⵓⵙⴽⴽⴰ', - 'period_recurrences' => ':count ⵜⵉⴽⴽⴰⵍ', - 'period_interval' => 'ⴽⵓ :interval', - 'period_start_date' => 'ⴳ :date', - 'period_end_date' => 'ⵉ :date', - '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', - ], - 'calendar' => [ - 'sameDay' => '[ⴰⵙⵙ ⴰ/ⴰⴷ ⴳ] LT', - 'nextDay' => '[ⴰⵙⴽⴽⴰ ⴳ] LT', - 'nextWeek' => 'dddd [ⴳ] LT', - 'lastDay' => '[ⴰⵙⵙⵏⵏⴰⵟ ⴳ] LT', - 'lastWeek' => 'dddd [ⴰⵎⴳⴳⴰⵔⵓ ⴳ] LT', - 'sameElse' => 'L', - ], - 'meridiem' => ['ⵜⵉⴼⴰⵡⵜ', 'ⵜⴰⴷⴳⴳⵯⴰⵜ'], - 'months' => ['ⵉⵏⵏⴰⵢⵔ', 'ⴱⵕⴰⵢⵕ', 'ⵎⴰⵕⵚ', 'ⵉⴱⵔⵉⵔ', 'ⵎⴰⵢⵢⵓ', 'ⵢⵓⵏⵢⵓ', 'ⵢⵓⵍⵢⵓⵣ', 'ⵖⵓⵛⵜ', 'ⵛⵓⵜⴰⵏⴱⵉⵔ', 'ⴽⵟⵓⴱⵕ', 'ⵏⵓⵡⴰⵏⴱⵉⵔ', 'ⴷⵓⵊⴰⵏⴱⵉⵔ'], - 'months_short' => ['ⵉⵏⵏ', 'ⴱⵕⴰ', 'ⵎⴰⵕ', 'ⵉⴱⵔ', 'ⵎⴰⵢ', 'ⵢⵓⵏ', 'ⵢⵓⵍ', 'ⵖⵓⵛ', 'ⵛⵓⵜ', 'ⴽⵟⵓ', 'ⵏⵓⵡ', 'ⴷⵓⵊ'], - 'weekdays' => ['ⵓⵙⴰⵎⴰⵙ', 'ⵡⴰⵢⵏⴰⵙ', 'ⵓⵙⵉⵏⴰⵙ', 'ⵡⴰⴽⵕⴰⵙ', 'ⵓⴽⵡⴰⵙ', 'ⵓⵙⵉⵎⵡⴰⵙ', 'ⵓⵙⵉⴹⵢⴰⵙ'], - 'weekdays_short' => ['ⵓⵙⴰ', 'ⵡⴰⵢ', 'ⵓⵙⵉ', 'ⵡⴰⴽ', 'ⵓⴽⵡ', 'ⵓⵙⵉⵎ', 'ⵓⵙⵉⴹ'], - 'weekdays_min' => ['ⵓⵙⴰ', 'ⵡⴰⵢ', 'ⵓⵙⵉ', 'ⵡⴰⴽ', 'ⵓⴽⵡ', 'ⵓⵙⵉⵎ', 'ⵓⵙⵉⴹ'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 1, - 'list' => [', ', ' ⴷ '], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh.php deleted file mode 100644 index 1187c3d7..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zh.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - xuri - * - sycuato - * - bokideckonja - * - Luo Ning - * - William Yang (williamyang233) - */ -return array_merge(require __DIR__.'/zh_Hans.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY/MM/DD', - 'LL' => 'YYYY年M月D日', - 'LLL' => 'YYYY年M月D日 A h点mm分', - 'LLLL' => 'YYYY年M月D日dddd A h点mm分', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_CN.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_CN.php deleted file mode 100644 index 9c05d5a8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_CN.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - monkeycon - * - François B - * - Jason Katz-Brown - * - Serhan Apaydın - * - Matt Johnson - * - JD Isaacks - * - Zeno Zeng - * - Chris Hemp - * - shankesgk2 - */ -return array_merge(require __DIR__.'/zh.php', [ - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY/MM/DD', - 'LL' => 'YYYY年M月D日', - 'LLL' => 'YYYY年M月D日Ah点mm分', - 'LLLL' => 'YYYY年M月D日ddddAh点mm分', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_HK.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_HK.php deleted file mode 100644 index c3ee9fcb..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_HK.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/zh_Hant_HK.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans.php deleted file mode 100644 index 9b91785e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans.php +++ /dev/null @@ -1,109 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - monkeycon - * - François B - * - Jason Katz-Brown - * - Konstantin Konev - * - Chris Lam - * - Serhan Apaydın - * - Gary Lo - * - JD Isaacks - * - Chris Hemp - * - shankesgk2 - * - Daniel Cheung (danvim) - */ -return [ - 'year' => ':count:optional-space年', - 'y' => ':count:optional-space年', - 'month' => ':count:optional-space个月', - 'm' => ':count:optional-space个月', - 'week' => ':count:optional-space周', - 'w' => ':count:optional-space周', - 'day' => ':count:optional-space天', - 'd' => ':count:optional-space天', - 'hour' => ':count:optional-space小时', - 'h' => ':count:optional-space小时', - 'minute' => ':count:optional-space分钟', - 'min' => ':count:optional-space分钟', - 'second' => ':count:optional-space秒', - 'a_second' => '{1}几秒|]1,Inf[:count:optional-space秒', - 's' => ':count:optional-space秒', - 'ago' => ':time前', - 'from_now' => ':time后', - 'after' => ':time后', - 'before' => ':time前', - 'diff_now' => '现在', - 'diff_today' => '今天', - 'diff_yesterday' => '昨天', - 'diff_tomorrow' => '明天', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY/MM/DD', - 'LL' => 'YYYY年M月D日', - 'LLL' => 'YYYY年M月D日 HH:mm', - 'LLLL' => 'YYYY年M月D日dddd HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[今天]LT', - 'nextDay' => '[明天]LT', - 'nextWeek' => '[下]ddddLT', - 'lastDay' => '[昨天]LT', - 'lastWeek' => '[上]ddddLT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number, $period) { - switch ($period) { - case 'd': - case 'D': - case 'DDD': - return $number.'日'; - case 'M': - return $number.'月'; - case 'w': - case 'W': - return $number.'周'; - default: - return $number; - } - }, - 'meridiem' => function ($hour, $minute) { - $time = $hour * 100 + $minute; - if ($time < 600) { - return '凌晨'; - } - if ($time < 900) { - return '早上'; - } - if ($time < 1130) { - return '上午'; - } - if ($time < 1230) { - return '中午'; - } - if ($time < 1800) { - return '下午'; - } - - return '晚上'; - }, - 'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], - 'months_short' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - 'weekdays' => ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - 'weekdays_short' => ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], - 'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => '', -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_HK.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_HK.php deleted file mode 100644 index db913caa..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_HK.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/zh_Hans.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_MO.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_MO.php deleted file mode 100644 index db913caa..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_MO.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/zh_Hans.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_SG.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_SG.php deleted file mode 100644 index db913caa..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hans_SG.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/zh_Hans.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant.php deleted file mode 100644 index a27b6109..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant.php +++ /dev/null @@ -1,111 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Adam - * - monkeycon - * - François B - * - Jason Katz-Brown - * - Chris Lam - * - Serhan Apaydın - * - Gary Lo - * - JD Isaacks - * - Chris Hemp - * - Eddie - * - KID - * - shankesgk2 - * - Daniel Cheung (danvim) - */ -return [ - 'year' => ':count:optional-space年', - 'y' => ':count:optional-space年', - 'month' => ':count:optional-space個月', - 'm' => ':count:optional-space月', - 'week' => ':count:optional-space週', - 'w' => ':count:optional-space週', - 'day' => ':count:optional-space天', - 'd' => ':count:optional-space天', - 'hour' => ':count:optional-space小時', - 'h' => ':count:optional-space小時', - 'minute' => ':count:optional-space分鐘', - 'min' => ':count:optional-space分鐘', - 'second' => ':count:optional-space秒', - 'a_second' => '{1}幾秒|]1,Inf[:count:optional-space秒', - 's' => ':count:optional-space秒', - 'ago' => ':time前', - 'from_now' => ':time後', - 'after' => ':time後', - 'before' => ':time前', - 'diff_now' => '現在', - 'diff_today' => '今天', - 'diff_yesterday' => '昨天', - 'diff_tomorrow' => '明天', - 'formats' => [ - 'LT' => 'HH:mm', - 'LTS' => 'HH:mm:ss', - 'L' => 'YYYY/MM/DD', - 'LL' => 'YYYY年M月D日', - 'LLL' => 'YYYY年M月D日 HH:mm', - 'LLLL' => 'YYYY年M月D日dddd HH:mm', - ], - 'calendar' => [ - 'sameDay' => '[今天] LT', - 'nextDay' => '[明天] LT', - 'nextWeek' => '[下]dddd LT', - 'lastDay' => '[昨天] LT', - 'lastWeek' => '[上]dddd LT', - 'sameElse' => 'L', - ], - 'ordinal' => function ($number, $period) { - switch ($period) { - case 'd': - case 'D': - case 'DDD': - return $number.'日'; - case 'M': - return $number.'月'; - case 'w': - case 'W': - return $number.'周'; - default: - return $number; - } - }, - 'meridiem' => function ($hour, $minute) { - $time = $hour * 100 + $minute; - if ($time < 600) { - return '凌晨'; - } - if ($time < 900) { - return '早上'; - } - if ($time < 1130) { - return '上午'; - } - if ($time < 1230) { - return '中午'; - } - if ($time < 1800) { - return '下午'; - } - - return '晚上'; - }, - 'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], - 'months_short' => ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], - 'weekdays' => ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - 'weekdays_short' => ['週日', '週一', '週二', '週三', '週四', '週五', '週六'], - 'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'], - 'first_day_of_week' => 1, - 'day_of_first_week_of_year' => 4, - 'list' => '', -]; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_HK.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_HK.php deleted file mode 100644 index e2526f13..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_HK.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/zh_Hant.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_MO.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_MO.php deleted file mode 100644 index e2526f13..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_MO.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/zh_Hant.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_TW.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_TW.php deleted file mode 100644 index e2526f13..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_Hant_TW.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/zh_Hant.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_MO.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_MO.php deleted file mode 100644 index 1c86d477..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_MO.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - tarunvelli - * - Eddie - * - KID - * - shankesgk2 - */ -return array_replace_recursive(require __DIR__.'/zh_Hant.php', [ - 'after' => ':time后', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_SG.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_SG.php deleted file mode 100644 index c451a562..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_SG.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/zh.php', [ - 'formats' => [ - 'L' => 'YYYY年MM月DD日', - ], - 'months' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], - 'months_short' => ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], - 'weekdays' => ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'], - 'weekdays_short' => ['日', '一', '二', '三', '四', '五', '六'], - 'weekdays_min' => ['日', '一', '二', '三', '四', '五', '六'], - 'day_of_first_week_of_year' => 1, -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_TW.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_TW.php deleted file mode 100644 index c6789ed2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_TW.php +++ /dev/null @@ -1,12 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return require __DIR__.'/zh_Hant_TW.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zh_YUE.php b/vendor/nesbot/carbon/src/Carbon/Lang/zh_YUE.php deleted file mode 100644 index b0d9ba86..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zh_YUE.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - IBM Globalization Center of Competency, Yamato Software Laboratory bug-glibc-locales@gnu.org - */ -return array_replace_recursive(require __DIR__.'/zh.php', [ - 'formats' => [ - 'L' => 'YYYY-MM-DD', - ], -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zu.php b/vendor/nesbot/carbon/src/Carbon/Lang/zu.php deleted file mode 100644 index 9a6cce02..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zu.php +++ /dev/null @@ -1,15 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Unknown default region, use the first alphabetically. - */ -return require __DIR__.'/zu_ZA.php'; diff --git a/vendor/nesbot/carbon/src/Carbon/Lang/zu_ZA.php b/vendor/nesbot/carbon/src/Carbon/Lang/zu_ZA.php deleted file mode 100644 index 6bfb72f0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Lang/zu_ZA.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * Authors: - * - Zuza Software Foundation (Translate.org.za) Dwayne Bailey dwayne@translate.org.za - */ -return array_replace_recursive(require __DIR__.'/en.php', [ - 'formats' => [ - 'L' => 'DD/MM/YYYY', - ], - 'months' => ['Januwari', 'Februwari', 'Mashi', 'Ephreli', 'Meyi', 'Juni', 'Julayi', 'Agasti', 'Septhemba', 'Okthoba', 'Novemba', 'Disemba'], - 'months_short' => ['Jan', 'Feb', 'Mas', 'Eph', 'Mey', 'Jun', 'Jul', 'Aga', 'Sep', 'Okt', 'Nov', 'Dis'], - 'weekdays' => ['iSonto', 'uMsombuluko', 'uLwesibili', 'uLwesithathu', 'uLwesine', 'uLwesihlanu', 'uMgqibelo'], - 'weekdays_short' => ['Son', 'Mso', 'Bil', 'Tha', 'Sin', 'Hla', 'Mgq'], - 'weekdays_min' => ['Son', 'Mso', 'Bil', 'Tha', 'Sin', 'Hla', 'Mgq'], - 'day_of_first_week_of_year' => 1, - - 'year' => 'kweminyaka engu-:count', - 'y' => 'kweminyaka engu-:count', - 'a_year' => 'kweminyaka engu-:count', - - 'month' => 'izinyanga ezingu-:count', - 'm' => 'izinyanga ezingu-:count', - 'a_month' => 'izinyanga ezingu-:count', - - 'week' => 'lwamasonto angu-:count', - 'w' => 'lwamasonto angu-:count', - 'a_week' => 'lwamasonto angu-:count', - - 'day' => 'ezingaba ngu-:count', - 'd' => 'ezingaba ngu-:count', - 'a_day' => 'ezingaba ngu-:count', - - 'hour' => 'amahora angu-:count', - 'h' => 'amahora angu-:count', - 'a_hour' => 'amahora angu-:count', - - 'minute' => 'ngemizuzu engu-:count', - 'min' => 'ngemizuzu engu-:count', - 'a_minute' => 'ngemizuzu engu-:count', - - 'second' => 'imizuzwana engu-:count', - 's' => 'imizuzwana engu-:count', - 'a_second' => 'imizuzwana engu-:count', -]); diff --git a/vendor/nesbot/carbon/src/Carbon/Language.php b/vendor/nesbot/carbon/src/Carbon/Language.php deleted file mode 100644 index 1fb5bafd..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Language.php +++ /dev/null @@ -1,342 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -use JsonSerializable; -use ReturnTypeWillChange; - -class Language implements JsonSerializable -{ - /** - * @var array - */ - protected static $languagesNames; - - /** - * @var array - */ - protected static $regionsNames; - - /** - * @var string - */ - protected $id; - - /** - * @var string - */ - protected $code; - - /** - * @var string|null - */ - protected $variant; - - /** - * @var string|null - */ - protected $region; - - /** - * @var array - */ - protected $names; - - /** - * @var string - */ - protected $isoName; - - /** - * @var string - */ - protected $nativeName; - - public function __construct(string $id) - { - $this->id = str_replace('-', '_', $id); - $parts = explode('_', $this->id); - $this->code = $parts[0]; - - if (isset($parts[1])) { - if (!preg_match('/^[A-Z]+$/', $parts[1])) { - $this->variant = $parts[1]; - $parts[1] = $parts[2] ?? null; - } - if ($parts[1]) { - $this->region = $parts[1]; - } - } - } - - /** - * Get the list of the known languages. - * - * @return array - */ - public static function all() - { - if (!static::$languagesNames) { - static::$languagesNames = require __DIR__.'/List/languages.php'; - } - - return static::$languagesNames; - } - - /** - * Get the list of the known regions. - * - * @return array - */ - public static function regions() - { - if (!static::$regionsNames) { - static::$regionsNames = require __DIR__.'/List/regions.php'; - } - - return static::$regionsNames; - } - - /** - * Get both isoName and nativeName as an array. - * - * @return array - */ - public function getNames(): array - { - if (!$this->names) { - $this->names = static::all()[$this->code] ?? [ - 'isoName' => $this->code, - 'nativeName' => $this->code, - ]; - } - - return $this->names; - } - - /** - * Returns the original locale ID. - * - * @return string - */ - public function getId(): string - { - return $this->id; - } - - /** - * Returns the code of the locale "en"/"fr". - * - * @return string - */ - public function getCode(): string - { - return $this->code; - } - - /** - * Returns the variant code such as cyrl/latn. - * - * @return string|null - */ - public function getVariant(): ?string - { - return $this->variant; - } - - /** - * Returns the variant such as Cyrillic/Latin. - * - * @return string|null - */ - public function getVariantName(): ?string - { - if ($this->variant === 'Latn') { - return 'Latin'; - } - - if ($this->variant === 'Cyrl') { - return 'Cyrillic'; - } - - return $this->variant; - } - - /** - * Returns the region part of the locale. - * - * @return string|null - */ - public function getRegion(): ?string - { - return $this->region; - } - - /** - * Returns the region name for the current language. - * - * @return string|null - */ - public function getRegionName(): ?string - { - return $this->region ? (static::regions()[$this->region] ?? $this->region) : null; - } - - /** - * Returns the long ISO language name. - * - * @return string - */ - public function getFullIsoName(): string - { - if (!$this->isoName) { - $this->isoName = $this->getNames()['isoName']; - } - - return $this->isoName; - } - - /** - * Set the ISO language name. - * - * @param string $isoName - */ - public function setIsoName(string $isoName): self - { - $this->isoName = $isoName; - - return $this; - } - - /** - * Return the full name of the language in this language. - * - * @return string - */ - public function getFullNativeName(): string - { - if (!$this->nativeName) { - $this->nativeName = $this->getNames()['nativeName']; - } - - return $this->nativeName; - } - - /** - * Set the name of the language in this language. - * - * @param string $nativeName - */ - public function setNativeName(string $nativeName): self - { - $this->nativeName = $nativeName; - - return $this; - } - - /** - * Returns the short ISO language name. - * - * @return string - */ - public function getIsoName(): string - { - $name = $this->getFullIsoName(); - - return trim(strstr($name, ',', true) ?: $name); - } - - /** - * Get the short name of the language in this language. - * - * @return string - */ - public function getNativeName(): string - { - $name = $this->getFullNativeName(); - - return trim(strstr($name, ',', true) ?: $name); - } - - /** - * Get a string with short ISO name, region in parentheses if applicable, variant in parentheses if applicable. - * - * @return string - */ - public function getIsoDescription() - { - $region = $this->getRegionName(); - $variant = $this->getVariantName(); - - return $this->getIsoName().($region ? ' ('.$region.')' : '').($variant ? ' ('.$variant.')' : ''); - } - - /** - * Get a string with short native name, region in parentheses if applicable, variant in parentheses if applicable. - * - * @return string - */ - public function getNativeDescription() - { - $region = $this->getRegionName(); - $variant = $this->getVariantName(); - - return $this->getNativeName().($region ? ' ('.$region.')' : '').($variant ? ' ('.$variant.')' : ''); - } - - /** - * Get a string with long ISO name, region in parentheses if applicable, variant in parentheses if applicable. - * - * @return string - */ - public function getFullIsoDescription() - { - $region = $this->getRegionName(); - $variant = $this->getVariantName(); - - return $this->getFullIsoName().($region ? ' ('.$region.')' : '').($variant ? ' ('.$variant.')' : ''); - } - - /** - * Get a string with long native name, region in parentheses if applicable, variant in parentheses if applicable. - * - * @return string - */ - public function getFullNativeDescription() - { - $region = $this->getRegionName(); - $variant = $this->getVariantName(); - - return $this->getFullNativeName().($region ? ' ('.$region.')' : '').($variant ? ' ('.$variant.')' : ''); - } - - /** - * Returns the original locale ID. - * - * @return string - */ - public function __toString() - { - return $this->getId(); - } - - /** - * Get a string with short ISO name, region in parentheses if applicable, variant in parentheses if applicable. - * - * @return string - */ - #[ReturnTypeWillChange] - public function jsonSerialize() - { - return $this->getIsoDescription(); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php b/vendor/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php deleted file mode 100644 index 84e241e3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php +++ /dev/null @@ -1,127 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Laravel; - -use Carbon\Carbon; -use Carbon\CarbonImmutable; -use Carbon\CarbonInterval; -use Carbon\CarbonPeriod; -use Illuminate\Contracts\Events\Dispatcher as DispatcherContract; -use Illuminate\Events\Dispatcher; -use Illuminate\Events\EventDispatcher; -use Illuminate\Support\Carbon as IlluminateCarbon; -use Illuminate\Support\Facades\Date; -use Throwable; - -class ServiceProvider extends \Illuminate\Support\ServiceProvider -{ - /** @var callable|null */ - protected $appGetter = null; - - /** @var callable|null */ - protected $localeGetter = null; - - public function setAppGetter(?callable $appGetter): void - { - $this->appGetter = $appGetter; - } - - public function setLocaleGetter(?callable $localeGetter): void - { - $this->localeGetter = $localeGetter; - } - - public function boot() - { - $this->updateLocale(); - - if (!$this->app->bound('events')) { - return; - } - - $service = $this; - $events = $this->app['events']; - - if ($this->isEventDispatcher($events)) { - $events->listen(class_exists('Illuminate\Foundation\Events\LocaleUpdated') ? 'Illuminate\Foundation\Events\LocaleUpdated' : 'locale.changed', function () use ($service) { - $service->updateLocale(); - }); - } - } - - public function updateLocale() - { - $locale = $this->getLocale(); - - if ($locale === null) { - return; - } - - Carbon::setLocale($locale); - CarbonImmutable::setLocale($locale); - CarbonPeriod::setLocale($locale); - CarbonInterval::setLocale($locale); - - if (class_exists(IlluminateCarbon::class)) { - IlluminateCarbon::setLocale($locale); - } - - if (class_exists(Date::class)) { - try { - $root = Date::getFacadeRoot(); - $root->setLocale($locale); - } catch (Throwable $e) { - // Non Carbon class in use in Date facade - } - } - } - - public function register() - { - // Needed for Laravel < 5.3 compatibility - } - - protected function getLocale() - { - if ($this->localeGetter) { - return ($this->localeGetter)(); - } - - $app = $this->getApp(); - $app = $app && method_exists($app, 'getLocale') - ? $app - : $this->getGlobalApp('translator'); - - return $app ? $app->getLocale() : null; - } - - protected function getApp() - { - if ($this->appGetter) { - return ($this->appGetter)(); - } - - return $this->app ?? $this->getGlobalApp(); - } - - protected function getGlobalApp(...$args) - { - return \function_exists('app') ? \app(...$args) : null; - } - - protected function isEventDispatcher($instance) - { - return $instance instanceof EventDispatcher - || $instance instanceof Dispatcher - || $instance instanceof DispatcherContract; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/List/languages.php b/vendor/nesbot/carbon/src/Carbon/List/languages.php deleted file mode 100644 index 5b5d9a1e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/List/languages.php +++ /dev/null @@ -1,1239 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -return [ - /* - * ISO 639-2 - */ - 'ab' => [ - 'isoName' => 'Abkhazian', - 'nativeName' => 'аҧсуа бызшәа, аҧсшәа', - ], - 'aa' => [ - 'isoName' => 'Afar', - 'nativeName' => 'Afaraf', - ], - 'af' => [ - 'isoName' => 'Afrikaans', - 'nativeName' => 'Afrikaans', - ], - 'ak' => [ - 'isoName' => 'Akan', - 'nativeName' => 'Akan', - ], - 'sq' => [ - 'isoName' => 'Albanian', - 'nativeName' => 'Shqip', - ], - 'am' => [ - 'isoName' => 'Amharic', - 'nativeName' => 'አማርኛ', - ], - 'ar' => [ - 'isoName' => 'Arabic', - 'nativeName' => 'العربية', - ], - 'an' => [ - 'isoName' => 'Aragonese', - 'nativeName' => 'aragonés', - ], - 'hy' => [ - 'isoName' => 'Armenian', - 'nativeName' => 'Հայերեն', - ], - 'as' => [ - 'isoName' => 'Assamese', - 'nativeName' => 'অসমীয়া', - ], - 'av' => [ - 'isoName' => 'Avaric', - 'nativeName' => 'авар мацӀ, магӀарул мацӀ', - ], - 'ae' => [ - 'isoName' => 'Avestan', - 'nativeName' => 'avesta', - ], - 'ay' => [ - 'isoName' => 'Aymara', - 'nativeName' => 'aymar aru', - ], - 'az' => [ - 'isoName' => 'Azerbaijani', - 'nativeName' => 'azərbaycan dili', - ], - 'bm' => [ - 'isoName' => 'Bambara', - 'nativeName' => 'bamanankan', - ], - 'ba' => [ - 'isoName' => 'Bashkir', - 'nativeName' => 'башҡорт теле', - ], - 'eu' => [ - 'isoName' => 'Basque', - 'nativeName' => 'euskara, euskera', - ], - 'be' => [ - 'isoName' => 'Belarusian', - 'nativeName' => 'беларуская мова', - ], - 'bn' => [ - 'isoName' => 'Bengali', - 'nativeName' => 'বাংলা', - ], - 'bh' => [ - 'isoName' => 'Bihari languages', - 'nativeName' => 'भोजपुरी', - ], - 'bi' => [ - 'isoName' => 'Bislama', - 'nativeName' => 'Bislama', - ], - 'bs' => [ - 'isoName' => 'Bosnian', - 'nativeName' => 'bosanski jezik', - ], - 'br' => [ - 'isoName' => 'Breton', - 'nativeName' => 'brezhoneg', - ], - 'bg' => [ - 'isoName' => 'Bulgarian', - 'nativeName' => 'български език', - ], - 'my' => [ - 'isoName' => 'Burmese', - 'nativeName' => 'ဗမာစာ', - ], - 'ca' => [ - 'isoName' => 'Catalan, Valencian', - 'nativeName' => 'català, valencià', - ], - 'ch' => [ - 'isoName' => 'Chamorro', - 'nativeName' => 'Chamoru', - ], - 'ce' => [ - 'isoName' => 'Chechen', - 'nativeName' => 'нохчийн мотт', - ], - 'ny' => [ - 'isoName' => 'Chichewa, Chewa, Nyanja', - 'nativeName' => 'chiCheŵa, chinyanja', - ], - 'zh' => [ - 'isoName' => 'Chinese', - 'nativeName' => '中文 (Zhōngwén), 汉语, 漢語', - ], - 'cv' => [ - 'isoName' => 'Chuvash', - 'nativeName' => 'чӑваш чӗлхи', - ], - 'kw' => [ - 'isoName' => 'Cornish', - 'nativeName' => 'Kernewek', - ], - 'co' => [ - 'isoName' => 'Corsican', - 'nativeName' => 'corsu, lingua corsa', - ], - 'cr' => [ - 'isoName' => 'Cree', - 'nativeName' => 'ᓀᐦᐃᔭᐍᐏᐣ', - ], - 'hr' => [ - 'isoName' => 'Croatian', - 'nativeName' => 'hrvatski jezik', - ], - 'cs' => [ - 'isoName' => 'Czech', - 'nativeName' => 'čeština, český jazyk', - ], - 'da' => [ - 'isoName' => 'Danish', - 'nativeName' => 'dansk', - ], - 'dv' => [ - 'isoName' => 'Divehi, Dhivehi, Maldivian', - 'nativeName' => 'ދިވެހި', - ], - 'nl' => [ - 'isoName' => 'Dutch, Flemish', - 'nativeName' => 'Nederlands, Vlaams', - ], - 'dz' => [ - 'isoName' => 'Dzongkha', - 'nativeName' => 'རྫོང་ཁ', - ], - 'en' => [ - 'isoName' => 'English', - 'nativeName' => 'English', - ], - 'eo' => [ - 'isoName' => 'Esperanto', - 'nativeName' => 'Esperanto', - ], - 'et' => [ - 'isoName' => 'Estonian', - 'nativeName' => 'eesti, eesti keel', - ], - 'ee' => [ - 'isoName' => 'Ewe', - 'nativeName' => 'Eʋegbe', - ], - 'fo' => [ - 'isoName' => 'Faroese', - 'nativeName' => 'føroyskt', - ], - 'fj' => [ - 'isoName' => 'Fijian', - 'nativeName' => 'vosa Vakaviti', - ], - 'fi' => [ - 'isoName' => 'Finnish', - 'nativeName' => 'suomi, suomen kieli', - ], - 'fr' => [ - 'isoName' => 'French', - 'nativeName' => 'français', - ], - 'ff' => [ - 'isoName' => 'Fulah', - 'nativeName' => 'Fulfulde, Pulaar, Pular', - ], - 'gl' => [ - 'isoName' => 'Galician', - 'nativeName' => 'Galego', - ], - 'ka' => [ - 'isoName' => 'Georgian', - 'nativeName' => 'ქართული', - ], - 'de' => [ - 'isoName' => 'German', - 'nativeName' => 'Deutsch', - ], - 'el' => [ - 'isoName' => 'Greek (modern)', - 'nativeName' => 'ελληνικά', - ], - 'gn' => [ - 'isoName' => 'Guaraní', - 'nativeName' => 'Avañe\'ẽ', - ], - 'gu' => [ - 'isoName' => 'Gujarati', - 'nativeName' => 'ગુજરાતી', - ], - 'ht' => [ - 'isoName' => 'Haitian, Haitian Creole', - 'nativeName' => 'Kreyòl ayisyen', - ], - 'ha' => [ - 'isoName' => 'Hausa', - 'nativeName' => '(Hausa) هَوُسَ', - ], - 'he' => [ - 'isoName' => 'Hebrew (modern)', - 'nativeName' => 'עברית', - ], - 'hz' => [ - 'isoName' => 'Herero', - 'nativeName' => 'Otjiherero', - ], - 'hi' => [ - 'isoName' => 'Hindi', - 'nativeName' => 'हिन्दी, हिंदी', - ], - 'ho' => [ - 'isoName' => 'Hiri Motu', - 'nativeName' => 'Hiri Motu', - ], - 'hu' => [ - 'isoName' => 'Hungarian', - 'nativeName' => 'magyar', - ], - 'ia' => [ - 'isoName' => 'Interlingua', - 'nativeName' => 'Interlingua', - ], - 'id' => [ - 'isoName' => 'Indonesian', - 'nativeName' => 'Bahasa Indonesia', - ], - 'ie' => [ - 'isoName' => 'Interlingue', - 'nativeName' => 'Originally called Occidental; then Interlingue after WWII', - ], - 'ga' => [ - 'isoName' => 'Irish', - 'nativeName' => 'Gaeilge', - ], - 'ig' => [ - 'isoName' => 'Igbo', - 'nativeName' => 'Asụsụ Igbo', - ], - 'ik' => [ - 'isoName' => 'Inupiaq', - 'nativeName' => 'Iñupiaq, Iñupiatun', - ], - 'io' => [ - 'isoName' => 'Ido', - 'nativeName' => 'Ido', - ], - 'is' => [ - 'isoName' => 'Icelandic', - 'nativeName' => 'Íslenska', - ], - 'it' => [ - 'isoName' => 'Italian', - 'nativeName' => 'Italiano', - ], - 'iu' => [ - 'isoName' => 'Inuktitut', - 'nativeName' => 'ᐃᓄᒃᑎᑐᑦ', - ], - 'ja' => [ - 'isoName' => 'Japanese', - 'nativeName' => '日本語 (にほんご)', - ], - 'jv' => [ - 'isoName' => 'Javanese', - 'nativeName' => 'ꦧꦱꦗꦮ, Basa Jawa', - ], - 'kl' => [ - 'isoName' => 'Kalaallisut, Greenlandic', - 'nativeName' => 'kalaallisut, kalaallit oqaasii', - ], - 'kn' => [ - 'isoName' => 'Kannada', - 'nativeName' => 'ಕನ್ನಡ', - ], - 'kr' => [ - 'isoName' => 'Kanuri', - 'nativeName' => 'Kanuri', - ], - 'ks' => [ - 'isoName' => 'Kashmiri', - 'nativeName' => 'कश्मीरी, كشميري‎', - ], - 'kk' => [ - 'isoName' => 'Kazakh', - 'nativeName' => 'қазақ тілі', - ], - 'km' => [ - 'isoName' => 'Central Khmer', - 'nativeName' => 'ខ្មែរ, ខេមរភាសា, ភាសាខ្មែរ', - ], - 'ki' => [ - 'isoName' => 'Kikuyu, Gikuyu', - 'nativeName' => 'Gĩkũyũ', - ], - 'rw' => [ - 'isoName' => 'Kinyarwanda', - 'nativeName' => 'Ikinyarwanda', - ], - 'ky' => [ - 'isoName' => 'Kirghiz, Kyrgyz', - 'nativeName' => 'Кыргызча, Кыргыз тили', - ], - 'kv' => [ - 'isoName' => 'Komi', - 'nativeName' => 'коми кыв', - ], - 'kg' => [ - 'isoName' => 'Kongo', - 'nativeName' => 'Kikongo', - ], - 'ko' => [ - 'isoName' => 'Korean', - 'nativeName' => '한국어', - ], - 'ku' => [ - 'isoName' => 'Kurdish', - 'nativeName' => 'Kurdî, کوردی‎', - ], - 'kj' => [ - 'isoName' => 'Kuanyama, Kwanyama', - 'nativeName' => 'Kuanyama', - ], - 'la' => [ - 'isoName' => 'Latin', - 'nativeName' => 'latine, lingua latina', - ], - 'lb' => [ - 'isoName' => 'Luxembourgish, Letzeburgesch', - 'nativeName' => 'Lëtzebuergesch', - ], - 'lg' => [ - 'isoName' => 'Ganda', - 'nativeName' => 'Luganda', - ], - 'li' => [ - 'isoName' => 'Limburgan, Limburger, Limburgish', - 'nativeName' => 'Limburgs', - ], - 'ln' => [ - 'isoName' => 'Lingala', - 'nativeName' => 'Lingála', - ], - 'lo' => [ - 'isoName' => 'Lao', - 'nativeName' => 'ພາສາລາວ', - ], - 'lt' => [ - 'isoName' => 'Lithuanian', - 'nativeName' => 'lietuvių kalba', - ], - 'lu' => [ - 'isoName' => 'Luba-Katanga', - 'nativeName' => 'Kiluba', - ], - 'lv' => [ - 'isoName' => 'Latvian', - 'nativeName' => 'latviešu valoda', - ], - 'gv' => [ - 'isoName' => 'Manx', - 'nativeName' => 'Gaelg, Gailck', - ], - 'mk' => [ - 'isoName' => 'Macedonian', - 'nativeName' => 'македонски јазик', - ], - 'mg' => [ - 'isoName' => 'Malagasy', - 'nativeName' => 'fiteny malagasy', - ], - 'ms' => [ - 'isoName' => 'Malay', - 'nativeName' => 'Bahasa Melayu, بهاس ملايو‎', - ], - 'ml' => [ - 'isoName' => 'Malayalam', - 'nativeName' => 'മലയാളം', - ], - 'mt' => [ - 'isoName' => 'Maltese', - 'nativeName' => 'Malti', - ], - 'mi' => [ - 'isoName' => 'Maori', - 'nativeName' => 'te reo Māori', - ], - 'mr' => [ - 'isoName' => 'Marathi', - 'nativeName' => 'मराठी', - ], - 'mh' => [ - 'isoName' => 'Marshallese', - 'nativeName' => 'Kajin M̧ajeļ', - ], - 'mn' => [ - 'isoName' => 'Mongolian', - 'nativeName' => 'Монгол хэл', - ], - 'na' => [ - 'isoName' => 'Nauru', - 'nativeName' => 'Dorerin Naoero', - ], - 'nv' => [ - 'isoName' => 'Navajo, Navaho', - 'nativeName' => 'Diné bizaad', - ], - 'nd' => [ - 'isoName' => 'North Ndebele', - 'nativeName' => 'isiNdebele', - ], - 'ne' => [ - 'isoName' => 'Nepali', - 'nativeName' => 'नेपाली', - ], - 'ng' => [ - 'isoName' => 'Ndonga', - 'nativeName' => 'Owambo', - ], - 'nb' => [ - 'isoName' => 'Norwegian Bokmål', - 'nativeName' => 'Norsk Bokmål', - ], - 'nn' => [ - 'isoName' => 'Norwegian Nynorsk', - 'nativeName' => 'Norsk Nynorsk', - ], - 'no' => [ - 'isoName' => 'Norwegian', - 'nativeName' => 'Norsk', - ], - 'ii' => [ - 'isoName' => 'Sichuan Yi, Nuosu', - 'nativeName' => 'ꆈꌠ꒿ Nuosuhxop', - ], - 'nr' => [ - 'isoName' => 'South Ndebele', - 'nativeName' => 'isiNdebele', - ], - 'oc' => [ - 'isoName' => 'Occitan', - 'nativeName' => 'occitan, lenga d\'òc', - ], - 'oj' => [ - 'isoName' => 'Ojibwa', - 'nativeName' => 'ᐊᓂᔑᓈᐯᒧᐎᓐ', - ], - 'cu' => [ - 'isoName' => 'Church Slavic, Church Slavonic, Old Church Slavonic, Old Slavonic, Old Bulgarian', - 'nativeName' => 'ѩзыкъ словѣньскъ', - ], - 'om' => [ - 'isoName' => 'Oromo', - 'nativeName' => 'Afaan Oromoo', - ], - 'or' => [ - 'isoName' => 'Oriya', - 'nativeName' => 'ଓଡ଼ିଆ', - ], - 'os' => [ - 'isoName' => 'Ossetian, Ossetic', - 'nativeName' => 'ирон æвзаг', - ], - 'pa' => [ - 'isoName' => 'Panjabi, Punjabi', - 'nativeName' => 'ਪੰਜਾਬੀ', - ], - 'pi' => [ - 'isoName' => 'Pali', - 'nativeName' => 'पाऴि', - ], - 'fa' => [ - 'isoName' => 'Persian', - 'nativeName' => 'فارسی', - ], - 'pl' => [ - 'isoName' => 'Polish', - 'nativeName' => 'język polski, polszczyzna', - ], - 'ps' => [ - 'isoName' => 'Pashto, Pushto', - 'nativeName' => 'پښتو', - ], - 'pt' => [ - 'isoName' => 'Portuguese', - 'nativeName' => 'Português', - ], - 'qu' => [ - 'isoName' => 'Quechua', - 'nativeName' => 'Runa Simi, Kichwa', - ], - 'rm' => [ - 'isoName' => 'Romansh', - 'nativeName' => 'Rumantsch Grischun', - ], - 'rn' => [ - 'isoName' => 'Rundi', - 'nativeName' => 'Ikirundi', - ], - 'ro' => [ - 'isoName' => 'Romanian, Moldavian, Moldovan', - 'nativeName' => 'Română', - ], - 'ru' => [ - 'isoName' => 'Russian', - 'nativeName' => 'русский', - ], - 'sa' => [ - 'isoName' => 'Sanskrit', - 'nativeName' => 'संस्कृतम्', - ], - 'sc' => [ - 'isoName' => 'Sardinian', - 'nativeName' => 'sardu', - ], - 'sd' => [ - 'isoName' => 'Sindhi', - 'nativeName' => 'सिन्धी, سنڌي، سندھی‎', - ], - 'se' => [ - 'isoName' => 'Northern Sami', - 'nativeName' => 'Davvisámegiella', - ], - 'sm' => [ - 'isoName' => 'Samoan', - 'nativeName' => 'gagana fa\'a Samoa', - ], - 'sg' => [ - 'isoName' => 'Sango', - 'nativeName' => 'yângâ tî sängö', - ], - 'sr' => [ - 'isoName' => 'Serbian', - 'nativeName' => 'српски језик', - ], - 'gd' => [ - 'isoName' => 'Gaelic, Scottish Gaelic', - 'nativeName' => 'Gàidhlig', - ], - 'sn' => [ - 'isoName' => 'Shona', - 'nativeName' => 'chiShona', - ], - 'si' => [ - 'isoName' => 'Sinhala, Sinhalese', - 'nativeName' => 'සිංහල', - ], - 'sk' => [ - 'isoName' => 'Slovak', - 'nativeName' => 'Slovenčina, Slovenský Jazyk', - ], - 'sl' => [ - 'isoName' => 'Slovene', - 'nativeName' => 'Slovenski Jezik, Slovenščina', - ], - 'so' => [ - 'isoName' => 'Somali', - 'nativeName' => 'Soomaaliga, af Soomaali', - ], - 'st' => [ - 'isoName' => 'Southern Sotho', - 'nativeName' => 'Sesotho', - ], - 'es' => [ - 'isoName' => 'Spanish, Castilian', - 'nativeName' => 'Español', - ], - 'su' => [ - 'isoName' => 'Sundanese', - 'nativeName' => 'Basa Sunda', - ], - 'sw' => [ - 'isoName' => 'Swahili', - 'nativeName' => 'Kiswahili', - ], - 'ss' => [ - 'isoName' => 'Swati', - 'nativeName' => 'SiSwati', - ], - 'sv' => [ - 'isoName' => 'Swedish', - 'nativeName' => 'Svenska', - ], - 'ta' => [ - 'isoName' => 'Tamil', - 'nativeName' => 'தமிழ்', - ], - 'te' => [ - 'isoName' => 'Telugu', - 'nativeName' => 'తెలుగు', - ], - 'tg' => [ - 'isoName' => 'Tajik', - 'nativeName' => 'тоҷикӣ, toçikī, تاجیکی‎', - ], - 'th' => [ - 'isoName' => 'Thai', - 'nativeName' => 'ไทย', - ], - 'ti' => [ - 'isoName' => 'Tigrinya', - 'nativeName' => 'ትግርኛ', - ], - 'bo' => [ - 'isoName' => 'Tibetan', - 'nativeName' => 'བོད་ཡིག', - ], - 'tk' => [ - 'isoName' => 'Turkmen', - 'nativeName' => 'Türkmen, Түркмен', - ], - 'tl' => [ - 'isoName' => 'Tagalog', - 'nativeName' => 'Wikang Tagalog', - ], - 'tn' => [ - 'isoName' => 'Tswana', - 'nativeName' => 'Setswana', - ], - 'to' => [ - 'isoName' => 'Tongan (Tonga Islands)', - 'nativeName' => 'Faka Tonga', - ], - 'tr' => [ - 'isoName' => 'Turkish', - 'nativeName' => 'Türkçe', - ], - 'ts' => [ - 'isoName' => 'Tsonga', - 'nativeName' => 'Xitsonga', - ], - 'tt' => [ - 'isoName' => 'Tatar', - 'nativeName' => 'татар теле, tatar tele', - ], - 'tw' => [ - 'isoName' => 'Twi', - 'nativeName' => 'Twi', - ], - 'ty' => [ - 'isoName' => 'Tahitian', - 'nativeName' => 'Reo Tahiti', - ], - 'ug' => [ - 'isoName' => 'Uighur, Uyghur', - 'nativeName' => 'Uyƣurqə, ‫ئۇيغۇرچ', - ], - 'uk' => [ - 'isoName' => 'Ukrainian', - 'nativeName' => 'Українська', - ], - 'ur' => [ - 'isoName' => 'Urdu', - 'nativeName' => 'اردو', - ], - 'uz' => [ - 'isoName' => 'Uzbek', - 'nativeName' => 'Oʻzbek, Ўзбек, أۇزبېك‎', - ], - 've' => [ - 'isoName' => 'Venda', - 'nativeName' => 'Tshivenḓa', - ], - 'vi' => [ - 'isoName' => 'Vietnamese', - 'nativeName' => 'Tiếng Việt', - ], - 'vo' => [ - 'isoName' => 'Volapük', - 'nativeName' => 'Volapük', - ], - 'wa' => [ - 'isoName' => 'Walloon', - 'nativeName' => 'Walon', - ], - 'cy' => [ - 'isoName' => 'Welsh', - 'nativeName' => 'Cymraeg', - ], - 'wo' => [ - 'isoName' => 'Wolof', - 'nativeName' => 'Wollof', - ], - 'fy' => [ - 'isoName' => 'Western Frisian', - 'nativeName' => 'Frysk', - ], - 'xh' => [ - 'isoName' => 'Xhosa', - 'nativeName' => 'isiXhosa', - ], - 'yi' => [ - 'isoName' => 'Yiddish', - 'nativeName' => 'ייִדיש', - ], - 'yo' => [ - 'isoName' => 'Yoruba', - 'nativeName' => 'Yorùbá', - ], - 'za' => [ - 'isoName' => 'Zhuang, Chuang', - 'nativeName' => 'Saɯ cueŋƅ, Saw cuengh', - ], - 'zu' => [ - 'isoName' => 'Zulu', - 'nativeName' => 'isiZulu', - ], - /* - * Add ISO 639-3 languages available in Carbon - */ - 'agq' => [ - 'isoName' => 'Aghem', - 'nativeName' => 'Aghem', - ], - 'agr' => [ - 'isoName' => 'Aguaruna', - 'nativeName' => 'Aguaruna', - ], - 'anp' => [ - 'isoName' => 'Angika', - 'nativeName' => 'Angika', - ], - 'asa' => [ - 'isoName' => 'Asu', - 'nativeName' => 'Asu', - ], - 'ast' => [ - 'isoName' => 'Asturian', - 'nativeName' => 'Asturian', - ], - 'ayc' => [ - 'isoName' => 'Southern Aymara', - 'nativeName' => 'Southern Aymara', - ], - 'bas' => [ - 'isoName' => 'Basaa', - 'nativeName' => 'Basaa', - ], - 'bem' => [ - 'isoName' => 'Bemba', - 'nativeName' => 'Bemba', - ], - 'bez' => [ - 'isoName' => 'Bena', - 'nativeName' => 'Bena', - ], - 'bhb' => [ - 'isoName' => 'Bhili', - 'nativeName' => 'Bhili', - ], - 'bho' => [ - 'isoName' => 'Bhojpuri', - 'nativeName' => 'Bhojpuri', - ], - 'brx' => [ - 'isoName' => 'Bodo', - 'nativeName' => 'Bodo', - ], - 'byn' => [ - 'isoName' => 'Bilin', - 'nativeName' => 'Bilin', - ], - 'ccp' => [ - 'isoName' => 'Chakma', - 'nativeName' => 'Chakma', - ], - 'cgg' => [ - 'isoName' => 'Chiga', - 'nativeName' => 'Chiga', - ], - 'chr' => [ - 'isoName' => 'Cherokee', - 'nativeName' => 'Cherokee', - ], - 'cmn' => [ - 'isoName' => 'Chinese', - 'nativeName' => 'Chinese', - ], - 'crh' => [ - 'isoName' => 'Crimean Turkish', - 'nativeName' => 'Crimean Turkish', - ], - 'csb' => [ - 'isoName' => 'Kashubian', - 'nativeName' => 'Kashubian', - ], - 'dav' => [ - 'isoName' => 'Taita', - 'nativeName' => 'Taita', - ], - 'dje' => [ - 'isoName' => 'Zarma', - 'nativeName' => 'Zarma', - ], - 'doi' => [ - 'isoName' => 'Dogri (macrolanguage)', - 'nativeName' => 'Dogri (macrolanguage)', - ], - 'dsb' => [ - 'isoName' => 'Lower Sorbian', - 'nativeName' => 'Lower Sorbian', - ], - 'dua' => [ - 'isoName' => 'Duala', - 'nativeName' => 'Duala', - ], - 'dyo' => [ - 'isoName' => 'Jola-Fonyi', - 'nativeName' => 'Jola-Fonyi', - ], - 'ebu' => [ - 'isoName' => 'Embu', - 'nativeName' => 'Embu', - ], - 'ewo' => [ - 'isoName' => 'Ewondo', - 'nativeName' => 'Ewondo', - ], - 'fil' => [ - 'isoName' => 'Filipino', - 'nativeName' => 'Filipino', - ], - 'fur' => [ - 'isoName' => 'Friulian', - 'nativeName' => 'Friulian', - ], - 'gez' => [ - 'isoName' => 'Geez', - 'nativeName' => 'Geez', - ], - 'gom' => [ - 'isoName' => 'Konkani, Goan', - 'nativeName' => 'ಕೊಂಕಣಿ', - ], - 'gsw' => [ - 'isoName' => 'Swiss German', - 'nativeName' => 'Swiss German', - ], - 'guz' => [ - 'isoName' => 'Gusii', - 'nativeName' => 'Gusii', - ], - 'hak' => [ - 'isoName' => 'Hakka Chinese', - 'nativeName' => 'Hakka Chinese', - ], - 'haw' => [ - 'isoName' => 'Hawaiian', - 'nativeName' => 'Hawaiian', - ], - 'hif' => [ - 'isoName' => 'Fiji Hindi', - 'nativeName' => 'Fiji Hindi', - ], - 'hne' => [ - 'isoName' => 'Chhattisgarhi', - 'nativeName' => 'Chhattisgarhi', - ], - 'hsb' => [ - 'isoName' => 'Upper Sorbian', - 'nativeName' => 'Upper Sorbian', - ], - 'jgo' => [ - 'isoName' => 'Ngomba', - 'nativeName' => 'Ngomba', - ], - 'jmc' => [ - 'isoName' => 'Machame', - 'nativeName' => 'Machame', - ], - 'kab' => [ - 'isoName' => 'Kabyle', - 'nativeName' => 'Kabyle', - ], - 'kam' => [ - 'isoName' => 'Kamba', - 'nativeName' => 'Kamba', - ], - 'kde' => [ - 'isoName' => 'Makonde', - 'nativeName' => 'Makonde', - ], - 'kea' => [ - 'isoName' => 'Kabuverdianu', - 'nativeName' => 'Kabuverdianu', - ], - 'khq' => [ - 'isoName' => 'Koyra Chiini', - 'nativeName' => 'Koyra Chiini', - ], - 'kkj' => [ - 'isoName' => 'Kako', - 'nativeName' => 'Kako', - ], - 'kln' => [ - 'isoName' => 'Kalenjin', - 'nativeName' => 'Kalenjin', - ], - 'kok' => [ - 'isoName' => 'Konkani', - 'nativeName' => 'Konkani', - ], - 'ksb' => [ - 'isoName' => 'Shambala', - 'nativeName' => 'Shambala', - ], - 'ksf' => [ - 'isoName' => 'Bafia', - 'nativeName' => 'Bafia', - ], - 'ksh' => [ - 'isoName' => 'Colognian', - 'nativeName' => 'Colognian', - ], - 'lag' => [ - 'isoName' => 'Langi', - 'nativeName' => 'Langi', - ], - 'lij' => [ - 'isoName' => 'Ligurian', - 'nativeName' => 'Ligurian', - ], - 'lkt' => [ - 'isoName' => 'Lakota', - 'nativeName' => 'Lakota', - ], - 'lrc' => [ - 'isoName' => 'Northern Luri', - 'nativeName' => 'Northern Luri', - ], - 'luo' => [ - 'isoName' => 'Luo', - 'nativeName' => 'Luo', - ], - 'luy' => [ - 'isoName' => 'Luyia', - 'nativeName' => 'Luyia', - ], - 'lzh' => [ - 'isoName' => 'Literary Chinese', - 'nativeName' => 'Literary Chinese', - ], - 'mag' => [ - 'isoName' => 'Magahi', - 'nativeName' => 'Magahi', - ], - 'mai' => [ - 'isoName' => 'Maithili', - 'nativeName' => 'Maithili', - ], - 'mas' => [ - 'isoName' => 'Masai', - 'nativeName' => 'Masai', - ], - 'mer' => [ - 'isoName' => 'Meru', - 'nativeName' => 'Meru', - ], - 'mfe' => [ - 'isoName' => 'Morisyen', - 'nativeName' => 'Morisyen', - ], - 'mgh' => [ - 'isoName' => 'Makhuwa-Meetto', - 'nativeName' => 'Makhuwa-Meetto', - ], - 'mgo' => [ - 'isoName' => 'Metaʼ', - 'nativeName' => 'Metaʼ', - ], - 'mhr' => [ - 'isoName' => 'Eastern Mari', - 'nativeName' => 'Eastern Mari', - ], - 'miq' => [ - 'isoName' => 'Mískito', - 'nativeName' => 'Mískito', - ], - 'mjw' => [ - 'isoName' => 'Karbi', - 'nativeName' => 'Karbi', - ], - 'mni' => [ - 'isoName' => 'Manipuri', - 'nativeName' => 'Manipuri', - ], - 'mua' => [ - 'isoName' => 'Mundang', - 'nativeName' => 'Mundang', - ], - 'mzn' => [ - 'isoName' => 'Mazanderani', - 'nativeName' => 'Mazanderani', - ], - 'nan' => [ - 'isoName' => 'Min Nan Chinese', - 'nativeName' => 'Min Nan Chinese', - ], - 'naq' => [ - 'isoName' => 'Nama', - 'nativeName' => 'Nama', - ], - 'nds' => [ - 'isoName' => 'Low German', - 'nativeName' => 'Low German', - ], - 'nhn' => [ - 'isoName' => 'Central Nahuatl', - 'nativeName' => 'Central Nahuatl', - ], - 'niu' => [ - 'isoName' => 'Niuean', - 'nativeName' => 'Niuean', - ], - 'nmg' => [ - 'isoName' => 'Kwasio', - 'nativeName' => 'Kwasio', - ], - 'nnh' => [ - 'isoName' => 'Ngiemboon', - 'nativeName' => 'Ngiemboon', - ], - 'nso' => [ - 'isoName' => 'Northern Sotho', - 'nativeName' => 'Northern Sotho', - ], - 'nus' => [ - 'isoName' => 'Nuer', - 'nativeName' => 'Nuer', - ], - 'nyn' => [ - 'isoName' => 'Nyankole', - 'nativeName' => 'Nyankole', - ], - 'pap' => [ - 'isoName' => 'Papiamento', - 'nativeName' => 'Papiamento', - ], - 'prg' => [ - 'isoName' => 'Prussian', - 'nativeName' => 'Prussian', - ], - 'quz' => [ - 'isoName' => 'Cusco Quechua', - 'nativeName' => 'Cusco Quechua', - ], - 'raj' => [ - 'isoName' => 'Rajasthani', - 'nativeName' => 'Rajasthani', - ], - 'rof' => [ - 'isoName' => 'Rombo', - 'nativeName' => 'Rombo', - ], - 'rwk' => [ - 'isoName' => 'Rwa', - 'nativeName' => 'Rwa', - ], - 'sah' => [ - 'isoName' => 'Sakha', - 'nativeName' => 'Sakha', - ], - 'saq' => [ - 'isoName' => 'Samburu', - 'nativeName' => 'Samburu', - ], - 'sat' => [ - 'isoName' => 'Santali', - 'nativeName' => 'Santali', - ], - 'sbp' => [ - 'isoName' => 'Sangu', - 'nativeName' => 'Sangu', - ], - 'scr' => [ - 'isoName' => 'Serbo Croatian', - 'nativeName' => 'Serbo Croatian', - ], - 'seh' => [ - 'isoName' => 'Sena', - 'nativeName' => 'Sena', - ], - 'ses' => [ - 'isoName' => 'Koyraboro Senni', - 'nativeName' => 'Koyraboro Senni', - ], - 'sgs' => [ - 'isoName' => 'Samogitian', - 'nativeName' => 'Samogitian', - ], - 'shi' => [ - 'isoName' => 'Tachelhit', - 'nativeName' => 'Tachelhit', - ], - 'shn' => [ - 'isoName' => 'Shan', - 'nativeName' => 'Shan', - ], - 'shs' => [ - 'isoName' => 'Shuswap', - 'nativeName' => 'Shuswap', - ], - 'sid' => [ - 'isoName' => 'Sidamo', - 'nativeName' => 'Sidamo', - ], - 'smn' => [ - 'isoName' => 'Inari Sami', - 'nativeName' => 'Inari Sami', - ], - 'szl' => [ - 'isoName' => 'Silesian', - 'nativeName' => 'Silesian', - ], - 'tcy' => [ - 'isoName' => 'Tulu', - 'nativeName' => 'Tulu', - ], - 'teo' => [ - 'isoName' => 'Teso', - 'nativeName' => 'Teso', - ], - 'tet' => [ - 'isoName' => 'Tetum', - 'nativeName' => 'Tetum', - ], - 'the' => [ - 'isoName' => 'Chitwania Tharu', - 'nativeName' => 'Chitwania Tharu', - ], - 'tig' => [ - 'isoName' => 'Tigre', - 'nativeName' => 'Tigre', - ], - 'tlh' => [ - 'isoName' => 'Klingon', - 'nativeName' => 'tlhIngan Hol', - ], - 'tpi' => [ - 'isoName' => 'Tok Pisin', - 'nativeName' => 'Tok Pisin', - ], - 'twq' => [ - 'isoName' => 'Tasawaq', - 'nativeName' => 'Tasawaq', - ], - 'tzl' => [ - 'isoName' => 'Talossan', - 'nativeName' => 'Talossan', - ], - 'tzm' => [ - 'isoName' => 'Tamazight, Central Atlas', - 'nativeName' => 'ⵜⵎⴰⵣⵉⵖⵜ', - ], - 'unm' => [ - 'isoName' => 'Unami', - 'nativeName' => 'Unami', - ], - 'vai' => [ - 'isoName' => 'Vai', - 'nativeName' => 'Vai', - ], - 'vun' => [ - 'isoName' => 'Vunjo', - 'nativeName' => 'Vunjo', - ], - 'wae' => [ - 'isoName' => 'Walser', - 'nativeName' => 'Walser', - ], - 'wal' => [ - 'isoName' => 'Wolaytta', - 'nativeName' => 'Wolaytta', - ], - 'xog' => [ - 'isoName' => 'Soga', - 'nativeName' => 'Soga', - ], - 'yav' => [ - 'isoName' => 'Yangben', - 'nativeName' => 'Yangben', - ], - 'yue' => [ - 'isoName' => 'Cantonese', - 'nativeName' => 'Cantonese', - ], - 'yuw' => [ - 'isoName' => 'Yau (Morobe Province)', - 'nativeName' => 'Yau (Morobe Province)', - ], - 'zgh' => [ - 'isoName' => 'Standard Moroccan Tamazight', - 'nativeName' => 'Standard Moroccan Tamazight', - ], -]; diff --git a/vendor/nesbot/carbon/src/Carbon/List/regions.php b/vendor/nesbot/carbon/src/Carbon/List/regions.php deleted file mode 100644 index 8ab8a9e3..00000000 --- a/vendor/nesbot/carbon/src/Carbon/List/regions.php +++ /dev/null @@ -1,265 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/* - * ISO 3166-2 - */ -return [ - 'AD' => 'Andorra', - 'AE' => 'United Arab Emirates', - 'AF' => 'Afghanistan', - 'AG' => 'Antigua and Barbuda', - 'AI' => 'Anguilla', - 'AL' => 'Albania', - 'AM' => 'Armenia', - 'AO' => 'Angola', - 'AQ' => 'Antarctica', - 'AR' => 'Argentina', - 'AS' => 'American Samoa', - 'AT' => 'Austria', - 'AU' => 'Australia', - 'AW' => 'Aruba', - 'AX' => 'Åland Islands', - 'AZ' => 'Azerbaijan', - 'BA' => 'Bosnia and Herzegovina', - 'BB' => 'Barbados', - 'BD' => 'Bangladesh', - 'BE' => 'Belgium', - 'BF' => 'Burkina Faso', - 'BG' => 'Bulgaria', - 'BH' => 'Bahrain', - 'BI' => 'Burundi', - 'BJ' => 'Benin', - 'BL' => 'Saint Barthélemy', - 'BM' => 'Bermuda', - 'BN' => 'Brunei Darussalam', - 'BO' => 'Bolivia (Plurinational State of)', - 'BQ' => 'Bonaire, Sint Eustatius and Saba', - 'BR' => 'Brazil', - 'BS' => 'Bahamas', - 'BT' => 'Bhutan', - 'BV' => 'Bouvet Island', - 'BW' => 'Botswana', - 'BY' => 'Belarus', - 'BZ' => 'Belize', - 'CA' => 'Canada', - 'CC' => 'Cocos (Keeling) Islands', - 'CD' => 'Congo, Democratic Republic of the', - 'CF' => 'Central African Republic', - 'CG' => 'Congo', - 'CH' => 'Switzerland', - 'CI' => 'Côte d\'Ivoire', - 'CK' => 'Cook Islands', - 'CL' => 'Chile', - 'CM' => 'Cameroon', - 'CN' => 'China', - 'CO' => 'Colombia', - 'CR' => 'Costa Rica', - 'CU' => 'Cuba', - 'CV' => 'Cabo Verde', - 'CW' => 'Curaçao', - 'CX' => 'Christmas Island', - 'CY' => 'Cyprus', - 'CZ' => 'Czechia', - 'DE' => 'Germany', - 'DJ' => 'Djibouti', - 'DK' => 'Denmark', - 'DM' => 'Dominica', - 'DO' => 'Dominican Republic', - 'DZ' => 'Algeria', - 'EC' => 'Ecuador', - 'EE' => 'Estonia', - 'EG' => 'Egypt', - 'EH' => 'Western Sahara', - 'ER' => 'Eritrea', - 'ES' => 'Spain', - 'ET' => 'Ethiopia', - 'FI' => 'Finland', - 'FJ' => 'Fiji', - 'FK' => 'Falkland Islands (Malvinas)', - 'FM' => 'Micronesia (Federated States of)', - 'FO' => 'Faroe Islands', - 'FR' => 'France', - 'GA' => 'Gabon', - 'GB' => 'United Kingdom of Great Britain and Northern Ireland', - 'GD' => 'Grenada', - 'GE' => 'Georgia', - 'GF' => 'French Guiana', - 'GG' => 'Guernsey', - 'GH' => 'Ghana', - 'GI' => 'Gibraltar', - 'GL' => 'Greenland', - 'GM' => 'Gambia', - 'GN' => 'Guinea', - 'GP' => 'Guadeloupe', - 'GQ' => 'Equatorial Guinea', - 'GR' => 'Greece', - 'GS' => 'South Georgia and the South Sandwich Islands', - 'GT' => 'Guatemala', - 'GU' => 'Guam', - 'GW' => 'Guinea-Bissau', - 'GY' => 'Guyana', - 'HK' => 'Hong Kong', - 'HM' => 'Heard Island and McDonald Islands', - 'HN' => 'Honduras', - 'HR' => 'Croatia', - 'HT' => 'Haiti', - 'HU' => 'Hungary', - 'ID' => 'Indonesia', - 'IE' => 'Ireland', - 'IL' => 'Israel', - 'IM' => 'Isle of Man', - 'IN' => 'India', - 'IO' => 'British Indian Ocean Territory', - 'IQ' => 'Iraq', - 'IR' => 'Iran (Islamic Republic of)', - 'IS' => 'Iceland', - 'IT' => 'Italy', - 'JE' => 'Jersey', - 'JM' => 'Jamaica', - 'JO' => 'Jordan', - 'JP' => 'Japan', - 'KE' => 'Kenya', - 'KG' => 'Kyrgyzstan', - 'KH' => 'Cambodia', - 'KI' => 'Kiribati', - 'KM' => 'Comoros', - 'KN' => 'Saint Kitts and Nevis', - 'KP' => 'Korea (Democratic People\'s Republic of)', - 'KR' => 'Korea, Republic of', - 'KW' => 'Kuwait', - 'KY' => 'Cayman Islands', - 'KZ' => 'Kazakhstan', - 'LA' => 'Lao People\'s Democratic Republic', - 'LB' => 'Lebanon', - 'LC' => 'Saint Lucia', - 'LI' => 'Liechtenstein', - 'LK' => 'Sri Lanka', - 'LR' => 'Liberia', - 'LS' => 'Lesotho', - 'LT' => 'Lithuania', - 'LU' => 'Luxembourg', - 'LV' => 'Latvia', - 'LY' => 'Libya', - 'MA' => 'Morocco', - 'MC' => 'Monaco', - 'MD' => 'Moldova, Republic of', - 'ME' => 'Montenegro', - 'MF' => 'Saint Martin (French part)', - 'MG' => 'Madagascar', - 'MH' => 'Marshall Islands', - 'MK' => 'Macedonia, the former Yugoslav Republic of', - 'ML' => 'Mali', - 'MM' => 'Myanmar', - 'MN' => 'Mongolia', - 'MO' => 'Macao', - 'MP' => 'Northern Mariana Islands', - 'MQ' => 'Martinique', - 'MR' => 'Mauritania', - 'MS' => 'Montserrat', - 'MT' => 'Malta', - 'MU' => 'Mauritius', - 'MV' => 'Maldives', - 'MW' => 'Malawi', - 'MX' => 'Mexico', - 'MY' => 'Malaysia', - 'MZ' => 'Mozambique', - 'NA' => 'Namibia', - 'NC' => 'New Caledonia', - 'NE' => 'Niger', - 'NF' => 'Norfolk Island', - 'NG' => 'Nigeria', - 'NI' => 'Nicaragua', - 'NL' => 'Netherlands', - 'NO' => 'Norway', - 'NP' => 'Nepal', - 'NR' => 'Nauru', - 'NU' => 'Niue', - 'NZ' => 'New Zealand', - 'OM' => 'Oman', - 'PA' => 'Panama', - 'PE' => 'Peru', - 'PF' => 'French Polynesia', - 'PG' => 'Papua New Guinea', - 'PH' => 'Philippines', - 'PK' => 'Pakistan', - 'PL' => 'Poland', - 'PM' => 'Saint Pierre and Miquelon', - 'PN' => 'Pitcairn', - 'PR' => 'Puerto Rico', - 'PS' => 'Palestine, State of', - 'PT' => 'Portugal', - 'PW' => 'Palau', - 'PY' => 'Paraguay', - 'QA' => 'Qatar', - 'RE' => 'Réunion', - 'RO' => 'Romania', - 'RS' => 'Serbia', - 'RU' => 'Russian Federation', - 'RW' => 'Rwanda', - 'SA' => 'Saudi Arabia', - 'SB' => 'Solomon Islands', - 'SC' => 'Seychelles', - 'SD' => 'Sudan', - 'SE' => 'Sweden', - 'SG' => 'Singapore', - 'SH' => 'Saint Helena, Ascension and Tristan da Cunha', - 'SI' => 'Slovenia', - 'SJ' => 'Svalbard and Jan Mayen', - 'SK' => 'Slovakia', - 'SL' => 'Sierra Leone', - 'SM' => 'San Marino', - 'SN' => 'Senegal', - 'SO' => 'Somalia', - 'SR' => 'Suriname', - 'SS' => 'South Sudan', - 'ST' => 'Sao Tome and Principe', - 'SV' => 'El Salvador', - 'SX' => 'Sint Maarten (Dutch part)', - 'SY' => 'Syrian Arab Republic', - 'SZ' => 'Eswatini', - 'TC' => 'Turks and Caicos Islands', - 'TD' => 'Chad', - 'TF' => 'French Southern Territories', - 'TG' => 'Togo', - 'TH' => 'Thailand', - 'TJ' => 'Tajikistan', - 'TK' => 'Tokelau', - 'TL' => 'Timor-Leste', - 'TM' => 'Turkmenistan', - 'TN' => 'Tunisia', - 'TO' => 'Tonga', - 'TR' => 'Turkey', - 'TT' => 'Trinidad and Tobago', - 'TV' => 'Tuvalu', - 'TW' => 'Taiwan, Province of China', - 'TZ' => 'Tanzania, United Republic of', - 'UA' => 'Ukraine', - 'UG' => 'Uganda', - 'UM' => 'United States Minor Outlying Islands', - 'US' => 'United States of America', - 'UY' => 'Uruguay', - 'UZ' => 'Uzbekistan', - 'VA' => 'Holy See', - 'VC' => 'Saint Vincent and the Grenadines', - 'VE' => 'Venezuela (Bolivarian Republic of)', - 'VG' => 'Virgin Islands (British)', - 'VI' => 'Virgin Islands (U.S.)', - 'VN' => 'Viet Nam', - 'VU' => 'Vanuatu', - 'WF' => 'Wallis and Futuna', - 'WS' => 'Samoa', - 'YE' => 'Yemen', - 'YT' => 'Mayotte', - 'ZA' => 'South Africa', - 'ZM' => 'Zambia', - 'ZW' => 'Zimbabwe', -]; diff --git a/vendor/nesbot/carbon/src/Carbon/MessageFormatter/MessageFormatterMapper.php b/vendor/nesbot/carbon/src/Carbon/MessageFormatter/MessageFormatterMapper.php deleted file mode 100644 index c0548087..00000000 --- a/vendor/nesbot/carbon/src/Carbon/MessageFormatter/MessageFormatterMapper.php +++ /dev/null @@ -1,44 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\MessageFormatter; - -use ReflectionMethod; -use Symfony\Component\Translation\Formatter\MessageFormatter; -use Symfony\Component\Translation\Formatter\MessageFormatterInterface; - -// @codeCoverageIgnoreStart -$transMethod = new ReflectionMethod(MessageFormatterInterface::class, 'format'); - -require $transMethod->getParameters()[0]->hasType() - ? __DIR__.'/../../../lazy/Carbon/MessageFormatter/MessageFormatterMapperStrongType.php' - : __DIR__.'/../../../lazy/Carbon/MessageFormatter/MessageFormatterMapperWeakType.php'; -// @codeCoverageIgnoreEnd - -final class MessageFormatterMapper extends LazyMessageFormatter -{ - /** - * Wrapped formatter. - * - * @var MessageFormatterInterface - */ - protected $formatter; - - public function __construct(?MessageFormatterInterface $formatter = null) - { - $this->formatter = $formatter ?? new MessageFormatter(); - } - - protected function transformLocale(?string $locale): ?string - { - return $locale ? preg_replace('/[_@][A-Za-z][a-z]{2,}/', '', $locale) : $locale; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/PHPStan/AbstractMacro.php b/vendor/nesbot/carbon/src/Carbon/PHPStan/AbstractMacro.php deleted file mode 100644 index fde67b36..00000000 --- a/vendor/nesbot/carbon/src/Carbon/PHPStan/AbstractMacro.php +++ /dev/null @@ -1,286 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\PHPStan; - -use Closure; -use InvalidArgumentException; -use PHPStan\BetterReflection\Reflection\Adapter\ReflectionParameter as AdapterReflectionParameter; -use PHPStan\BetterReflection\Reflection\Adapter\ReflectionType as AdapterReflectionType; -use PHPStan\BetterReflection\Reflection\ReflectionClass as BetterReflectionClass; -use PHPStan\BetterReflection\Reflection\ReflectionFunction as BetterReflectionFunction; -use PHPStan\BetterReflection\Reflection\ReflectionParameter as BetterReflectionParameter; -use PHPStan\Reflection\Php\BuiltinMethodReflection; -use PHPStan\TrinaryLogic; -use ReflectionClass; -use ReflectionFunction; -use ReflectionMethod; -use ReflectionParameter; -use ReflectionType; -use stdClass; -use Throwable; - -abstract class AbstractMacro implements BuiltinMethodReflection -{ - /** - * The reflection function/method. - * - * @var ReflectionFunction|ReflectionMethod - */ - protected $reflectionFunction; - - /** - * The class name. - * - * @var class-string - */ - private $className; - - /** - * The method name. - * - * @var string - */ - private $methodName; - - /** - * The parameters. - * - * @var ReflectionParameter[] - */ - private $parameters; - - /** - * The is static. - * - * @var bool - */ - private $static = false; - - /** - * Macro constructor. - * - * @param class-string $className - * @param string $methodName - * @param callable $macro - */ - public function __construct(string $className, string $methodName, $macro) - { - $this->className = $className; - $this->methodName = $methodName; - $rawReflectionFunction = \is_array($macro) - ? new ReflectionMethod($macro[0], $macro[1]) - : new ReflectionFunction($macro); - $this->reflectionFunction = self::hasModernParser() - ? $this->getReflectionFunction($macro) - : $rawReflectionFunction; // @codeCoverageIgnore - $this->parameters = array_map( - function ($parameter) { - if ($parameter instanceof BetterReflectionParameter) { - return new AdapterReflectionParameter($parameter); - } - - return $parameter; // @codeCoverageIgnore - }, - $this->reflectionFunction->getParameters() - ); - - if ($rawReflectionFunction->isClosure()) { - try { - $closure = $rawReflectionFunction->getClosure(); - $boundClosure = Closure::bind($closure, new stdClass()); - $this->static = (!$boundClosure || (new ReflectionFunction($boundClosure))->getClosureThis() === null); - } catch (Throwable $e) { - $this->static = true; - } - } - } - - private function getReflectionFunction($spec) - { - if (\is_array($spec) && \count($spec) === 2 && \is_string($spec[1])) { - \assert($spec[1] !== ''); - - if (\is_object($spec[0])) { - return BetterReflectionClass::createFromInstance($spec[0]) - ->getMethod($spec[1]); - } - - return BetterReflectionClass::createFromName($spec[0]) - ->getMethod($spec[1]); - } - - if (\is_string($spec)) { - return BetterReflectionFunction::createFromName($spec); - } - - if ($spec instanceof Closure) { - return BetterReflectionFunction::createFromClosure($spec); - } - - throw new InvalidArgumentException('Could not create reflection from the spec given'); // @codeCoverageIgnore - } - - /** - * {@inheritdoc} - */ - public function getDeclaringClass(): ReflectionClass - { - return new ReflectionClass($this->className); - } - - /** - * {@inheritdoc} - */ - public function isPrivate(): bool - { - return false; - } - - /** - * {@inheritdoc} - */ - public function isPublic(): bool - { - return true; - } - - /** - * {@inheritdoc} - */ - public function isFinal(): bool - { - return false; - } - - /** - * {@inheritdoc} - */ - public function isInternal(): bool - { - return false; - } - - /** - * {@inheritdoc} - */ - public function isAbstract(): bool - { - return false; - } - - /** - * {@inheritdoc} - */ - public function isStatic(): bool - { - return $this->static; - } - - /** - * {@inheritdoc} - */ - public function getDocComment(): ?string - { - return $this->reflectionFunction->getDocComment() ?: null; - } - - /** - * {@inheritdoc} - */ - public function getName(): string - { - return $this->methodName; - } - - /** - * {@inheritdoc} - */ - public function getParameters(): array - { - return $this->parameters; - } - - /** - * {@inheritdoc} - */ - public function getReturnType(): ?ReflectionType - { - $type = $this->reflectionFunction->getReturnType(); - - if ($type instanceof ReflectionType) { - return $type; // @codeCoverageIgnore - } - - return self::adaptType($type); - } - - /** - * {@inheritdoc} - */ - public function isDeprecated(): TrinaryLogic - { - return TrinaryLogic::createFromBoolean( - $this->reflectionFunction->isDeprecated() || - preg_match('/@deprecated/i', $this->getDocComment() ?: '') - ); - } - - /** - * {@inheritdoc} - */ - public function isVariadic(): bool - { - return $this->reflectionFunction->isVariadic(); - } - - /** - * {@inheritdoc} - */ - public function getPrototype(): BuiltinMethodReflection - { - return $this; - } - - public function getTentativeReturnType(): ?ReflectionType - { - return null; - } - - public function returnsByReference(): TrinaryLogic - { - return TrinaryLogic::createNo(); - } - - private static function adaptType($type) - { - $method = method_exists(AdapterReflectionType::class, 'fromTypeOrNull') - ? 'fromTypeOrNull' - : 'fromReturnTypeOrNull'; // @codeCoverageIgnore - - return AdapterReflectionType::$method($type); - } - - private static function hasModernParser(): bool - { - static $modernParser = null; - - if ($modernParser !== null) { - return $modernParser; - } - - $modernParser = method_exists(AdapterReflectionType::class, 'fromTypeOrNull'); - - return $modernParser; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/PHPStan/Macro.php b/vendor/nesbot/carbon/src/Carbon/PHPStan/Macro.php deleted file mode 100644 index de3e51f6..00000000 --- a/vendor/nesbot/carbon/src/Carbon/PHPStan/Macro.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\PHPStan; - -use PHPStan\BetterReflection\Reflection\Adapter; -use PHPStan\Reflection\Php\BuiltinMethodReflection; -use ReflectionMethod; - -$method = new ReflectionMethod(BuiltinMethodReflection::class, 'getReflection'); - -require $method->hasReturnType() && $method->getReturnType()->getName() === Adapter\ReflectionMethod::class - ? __DIR__.'/../../../lazy/Carbon/PHPStan/AbstractMacroStatic.php' - : __DIR__.'/../../../lazy/Carbon/PHPStan/AbstractMacroBuiltin.php'; - -$method = new ReflectionMethod(BuiltinMethodReflection::class, 'getFileName'); - -require $method->hasReturnType() - ? __DIR__.'/../../../lazy/Carbon/PHPStan/MacroStrongType.php' - : __DIR__.'/../../../lazy/Carbon/PHPStan/MacroWeakType.php'; - -final class Macro extends LazyMacro -{ -} diff --git a/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php b/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php deleted file mode 100644 index 2cd6fce5..00000000 --- a/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php +++ /dev/null @@ -1,88 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\PHPStan; - -use PHPStan\Reflection\Assertions; -use PHPStan\Reflection\ClassReflection; -use PHPStan\Reflection\MethodReflection; -use PHPStan\Reflection\MethodsClassReflectionExtension; -use PHPStan\Reflection\Php\PhpMethodReflectionFactory; -use PHPStan\Reflection\ReflectionProvider; -use PHPStan\Type\TypehintHelper; - -/** - * Class MacroExtension. - * - * @codeCoverageIgnore Pure PHPStan wrapper. - */ -final class MacroExtension implements MethodsClassReflectionExtension -{ - /** - * @var PhpMethodReflectionFactory - */ - protected $methodReflectionFactory; - - /** - * @var MacroScanner - */ - protected $scanner; - - /** - * Extension constructor. - * - * @param PhpMethodReflectionFactory $methodReflectionFactory - * @param ReflectionProvider $reflectionProvider - */ - public function __construct( - PhpMethodReflectionFactory $methodReflectionFactory, - ReflectionProvider $reflectionProvider - ) { - $this->scanner = new MacroScanner($reflectionProvider); - $this->methodReflectionFactory = $methodReflectionFactory; - } - - /** - * {@inheritdoc} - */ - public function hasMethod(ClassReflection $classReflection, string $methodName): bool - { - return $this->scanner->hasMethod($classReflection->getName(), $methodName); - } - - /** - * {@inheritdoc} - */ - public function getMethod(ClassReflection $classReflection, string $methodName): MethodReflection - { - $builtinMacro = $this->scanner->getMethod($classReflection->getName(), $methodName); - $supportAssertions = class_exists(Assertions::class); - - return $this->methodReflectionFactory->create( - $classReflection, - null, - $builtinMacro, - $classReflection->getActiveTemplateTypeMap(), - [], - TypehintHelper::decideTypeFromReflection($builtinMacro->getReturnType()), - null, - null, - $builtinMacro->isDeprecated()->yes(), - $builtinMacro->isInternal(), - $builtinMacro->isFinal(), - $supportAssertions ? null : $builtinMacro->getDocComment(), - $supportAssertions ? Assertions::createEmpty() : null, - null, - $builtinMacro->getDocComment(), - [] - ); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroScanner.php b/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroScanner.php deleted file mode 100644 index eb8957d4..00000000 --- a/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroScanner.php +++ /dev/null @@ -1,83 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\PHPStan; - -use Carbon\CarbonInterface; -use PHPStan\Reflection\ReflectionProvider; -use ReflectionClass; -use ReflectionException; - -final class MacroScanner -{ - /** - * @var \PHPStan\Reflection\ReflectionProvider - */ - private $reflectionProvider; - - /** - * MacroScanner constructor. - * - * @param \PHPStan\Reflection\ReflectionProvider $reflectionProvider - */ - public function __construct(ReflectionProvider $reflectionProvider) - { - $this->reflectionProvider = $reflectionProvider; - } - - /** - * Return true if the given pair class-method is a Carbon macro. - * - * @param class-string $className - * @param string $methodName - * - * @return bool - */ - public function hasMethod(string $className, string $methodName): bool - { - $classReflection = $this->reflectionProvider->getClass($className); - - if ( - $classReflection->getName() !== CarbonInterface::class && - !$classReflection->isSubclassOf(CarbonInterface::class) - ) { - return false; - } - - return \is_callable([$className, 'hasMacro']) && - $className::hasMacro($methodName); - } - - /** - * Return the Macro for a given pair class-method. - * - * @param class-string $className - * @param string $methodName - * - * @throws ReflectionException - * - * @return Macro - */ - public function getMethod(string $className, string $methodName): Macro - { - $reflectionClass = new ReflectionClass($className); - $property = $reflectionClass->getProperty('globalMacros'); - - $property->setAccessible(true); - $macro = $property->getValue()[$methodName]; - - return new Macro( - $className, - $methodName, - $macro - ); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php b/vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php deleted file mode 100644 index 71bbb723..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php +++ /dev/null @@ -1,443 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Carbon\Exceptions\UnknownUnitException; - -/** - * Trait Boundaries. - * - * startOf, endOf and derived method for each unit. - * - * Depends on the following properties: - * - * @property int $year - * @property int $month - * @property int $daysInMonth - * @property int $quarter - * - * Depends on the following methods: - * - * @method $this setTime(int $hour, int $minute, int $second = 0, int $microseconds = 0) - * @method $this setDate(int $year, int $month, int $day) - * @method $this addMonths(int $value = 1) - */ -trait Boundaries -{ - /** - * Resets the time to 00:00:00 start of day - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfDay(); - * ``` - * - * @return static - */ - public function startOfDay() - { - return $this->setTime(0, 0, 0, 0); - } - - /** - * Resets the time to 23:59:59.999999 end of day - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfDay(); - * ``` - * - * @return static - */ - public function endOfDay() - { - return $this->setTime(static::HOURS_PER_DAY - 1, static::MINUTES_PER_HOUR - 1, static::SECONDS_PER_MINUTE - 1, static::MICROSECONDS_PER_SECOND - 1); - } - - /** - * Resets the date to the first day of the month and the time to 00:00:00 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfMonth(); - * ``` - * - * @return static - */ - public function startOfMonth() - { - return $this->setDate($this->year, $this->month, 1)->startOfDay(); - } - - /** - * Resets the date to end of the month and time to 23:59:59.999999 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfMonth(); - * ``` - * - * @return static - */ - public function endOfMonth() - { - return $this->setDate($this->year, $this->month, $this->daysInMonth)->endOfDay(); - } - - /** - * Resets the date to the first day of the quarter and the time to 00:00:00 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfQuarter(); - * ``` - * - * @return static - */ - public function startOfQuarter() - { - $month = ($this->quarter - 1) * static::MONTHS_PER_QUARTER + 1; - - return $this->setDate($this->year, $month, 1)->startOfDay(); - } - - /** - * Resets the date to end of the quarter and time to 23:59:59.999999 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfQuarter(); - * ``` - * - * @return static - */ - public function endOfQuarter() - { - return $this->startOfQuarter()->addMonths(static::MONTHS_PER_QUARTER - 1)->endOfMonth(); - } - - /** - * Resets the date to the first day of the year and the time to 00:00:00 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfYear(); - * ``` - * - * @return static - */ - public function startOfYear() - { - return $this->setDate($this->year, 1, 1)->startOfDay(); - } - - /** - * Resets the date to end of the year and time to 23:59:59.999999 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfYear(); - * ``` - * - * @return static - */ - public function endOfYear() - { - return $this->setDate($this->year, 12, 31)->endOfDay(); - } - - /** - * Resets the date to the first day of the decade and the time to 00:00:00 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfDecade(); - * ``` - * - * @return static - */ - public function startOfDecade() - { - $year = $this->year - $this->year % static::YEARS_PER_DECADE; - - return $this->setDate($year, 1, 1)->startOfDay(); - } - - /** - * Resets the date to end of the decade and time to 23:59:59.999999 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfDecade(); - * ``` - * - * @return static - */ - public function endOfDecade() - { - $year = $this->year - $this->year % static::YEARS_PER_DECADE + static::YEARS_PER_DECADE - 1; - - return $this->setDate($year, 12, 31)->endOfDay(); - } - - /** - * Resets the date to the first day of the century and the time to 00:00:00 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfCentury(); - * ``` - * - * @return static - */ - public function startOfCentury() - { - $year = $this->year - ($this->year - 1) % static::YEARS_PER_CENTURY; - - return $this->setDate($year, 1, 1)->startOfDay(); - } - - /** - * Resets the date to end of the century and time to 23:59:59.999999 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfCentury(); - * ``` - * - * @return static - */ - public function endOfCentury() - { - $year = $this->year - 1 - ($this->year - 1) % static::YEARS_PER_CENTURY + static::YEARS_PER_CENTURY; - - return $this->setDate($year, 12, 31)->endOfDay(); - } - - /** - * Resets the date to the first day of the millennium and the time to 00:00:00 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfMillennium(); - * ``` - * - * @return static - */ - public function startOfMillennium() - { - $year = $this->year - ($this->year - 1) % static::YEARS_PER_MILLENNIUM; - - return $this->setDate($year, 1, 1)->startOfDay(); - } - - /** - * Resets the date to end of the millennium and time to 23:59:59.999999 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfMillennium(); - * ``` - * - * @return static - */ - public function endOfMillennium() - { - $year = $this->year - 1 - ($this->year - 1) % static::YEARS_PER_MILLENNIUM + static::YEARS_PER_MILLENNIUM; - - return $this->setDate($year, 12, 31)->endOfDay(); - } - - /** - * Resets the date to the first day of week (defined in $weekStartsAt) and the time to 00:00:00 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek() . "\n"; - * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->startOfWeek() . "\n"; - * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek(Carbon::SUNDAY) . "\n"; - * ``` - * - * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week - * - * @return static - */ - public function startOfWeek($weekStartsAt = null) - { - return $this->subDays((7 + $this->dayOfWeek - ($weekStartsAt ?? $this->firstWeekDay)) % 7)->startOfDay(); - } - - /** - * Resets the date to end of week (defined in $weekEndsAt) and time to 23:59:59.999999 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek() . "\n"; - * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->endOfWeek() . "\n"; - * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek(Carbon::SATURDAY) . "\n"; - * ``` - * - * @param int $weekEndsAt optional start allow you to specify the day of week to use to end the week - * - * @return static - */ - public function endOfWeek($weekEndsAt = null) - { - return $this->addDays((7 - $this->dayOfWeek + ($weekEndsAt ?? $this->lastWeekDay)) % 7)->endOfDay(); - } - - /** - * Modify to start of current hour, minutes and seconds become 0 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfHour(); - * ``` - * - * @return static - */ - public function startOfHour() - { - return $this->setTime($this->hour, 0, 0, 0); - } - - /** - * Modify to end of current hour, minutes and seconds become 59 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfHour(); - * ``` - * - * @return static - */ - public function endOfHour() - { - return $this->setTime($this->hour, static::MINUTES_PER_HOUR - 1, static::SECONDS_PER_MINUTE - 1, static::MICROSECONDS_PER_SECOND - 1); - } - - /** - * Modify to start of current minute, seconds become 0 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->startOfMinute(); - * ``` - * - * @return static - */ - public function startOfMinute() - { - return $this->setTime($this->hour, $this->minute, 0, 0); - } - - /** - * Modify to end of current minute, seconds become 59 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16')->endOfMinute(); - * ``` - * - * @return static - */ - public function endOfMinute() - { - return $this->setTime($this->hour, $this->minute, static::SECONDS_PER_MINUTE - 1, static::MICROSECONDS_PER_SECOND - 1); - } - - /** - * Modify to start of current second, microseconds become 0 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16.334455') - * ->startOfSecond() - * ->format('H:i:s.u'); - * ``` - * - * @return static - */ - public function startOfSecond() - { - return $this->setTime($this->hour, $this->minute, $this->second, 0); - } - - /** - * Modify to end of current second, microseconds become 999999 - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16.334455') - * ->endOfSecond() - * ->format('H:i:s.u'); - * ``` - * - * @return static - */ - public function endOfSecond() - { - return $this->setTime($this->hour, $this->minute, $this->second, static::MICROSECONDS_PER_SECOND - 1); - } - - /** - * Modify to start of current given unit. - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16.334455') - * ->startOf('month') - * ->endOf('week', Carbon::FRIDAY); - * ``` - * - * @param string $unit - * @param array $params - * - * @return static - */ - public function startOf($unit, ...$params) - { - $ucfUnit = ucfirst(static::singularUnit($unit)); - $method = "startOf$ucfUnit"; - if (!method_exists($this, $method)) { - throw new UnknownUnitException($unit); - } - - return $this->$method(...$params); - } - - /** - * Modify to end of current given unit. - * - * @example - * ``` - * echo Carbon::parse('2018-07-25 12:45:16.334455') - * ->startOf('month') - * ->endOf('week', Carbon::FRIDAY); - * ``` - * - * @param string $unit - * @param array $params - * - * @return static - */ - public function endOf($unit, ...$params) - { - $ucfUnit = ucfirst(static::singularUnit($unit)); - $method = "endOf$ucfUnit"; - if (!method_exists($this, $method)) { - throw new UnknownUnitException($unit); - } - - return $this->$method(...$params); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Cast.php b/vendor/nesbot/carbon/src/Carbon/Traits/Cast.php deleted file mode 100644 index 5f7c7c01..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Cast.php +++ /dev/null @@ -1,43 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Carbon\Exceptions\InvalidCastException; -use DateTimeInterface; - -/** - * Trait Cast. - * - * Utils to cast into an other class. - */ -trait Cast -{ - /** - * Cast the current instance into the given class. - * - * @param string $className The $className::instance() method will be called to cast the current object. - * - * @return DateTimeInterface - */ - public function cast(string $className) - { - if (!method_exists($className, 'instance')) { - if (is_a($className, DateTimeInterface::class, true)) { - return new $className($this->rawFormat('Y-m-d H:i:s.u'), $this->getTimezone()); - } - - throw new InvalidCastException("$className has not the instance() method needed to cast the date."); - } - - return $className::instance($this); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php b/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php deleted file mode 100644 index f6261d88..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php +++ /dev/null @@ -1,1125 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use BadMethodCallException; -use Carbon\CarbonInterface; -use Carbon\Exceptions\BadComparisonUnitException; -use InvalidArgumentException; - -/** - * Trait Comparison. - * - * Comparison utils and testers. All the following methods return booleans. - * nowWithSameTz - * - * Depends on the following methods: - * - * @method static resolveCarbon($date) - * @method static copy() - * @method static nowWithSameTz() - * @method static static yesterday($timezone = null) - * @method static static tomorrow($timezone = null) - */ -trait Comparison -{ - /** @var bool */ - protected $endOfTime = false; - - /** @var bool */ - protected $startOfTime = false; - - /** - * Determines if the instance is equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->eq(Carbon::parse('2018-07-25 12:45:16')); // true - * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see equalTo() - * - * @return bool - */ - public function eq($date): bool - { - return $this->equalTo($date); - } - - /** - * Determines if the instance is equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->equalTo(Carbon::parse('2018-07-25 12:45:16')); // true - * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function equalTo($date): bool - { - $this->discourageNull($date); - $this->discourageBoolean($date); - - return $this == $this->resolveCarbon($date); - } - - /** - * Determines if the instance is not equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->ne(Carbon::parse('2018-07-25 12:45:16')); // false - * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see notEqualTo() - * - * @return bool - */ - public function ne($date): bool - { - return $this->notEqualTo($date); - } - - /** - * Determines if the instance is not equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->notEqualTo(Carbon::parse('2018-07-25 12:45:16')); // false - * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function notEqualTo($date): bool - { - return !$this->equalTo($date); - } - - /** - * Determines if the instance is greater (after) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:15'); // true - * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see greaterThan() - * - * @return bool - */ - public function gt($date): bool - { - return $this->greaterThan($date); - } - - /** - * Determines if the instance is greater (after) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:15'); // true - * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function greaterThan($date): bool - { - $this->discourageNull($date); - $this->discourageBoolean($date); - - return $this > $this->resolveCarbon($date); - } - - /** - * Determines if the instance is greater (after) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:15'); // true - * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see greaterThan() - * - * @return bool - */ - public function isAfter($date): bool - { - return $this->greaterThan($date); - } - - /** - * Determines if the instance is greater (after) than or equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:15'); // true - * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see greaterThanOrEqualTo() - * - * @return bool - */ - public function gte($date): bool - { - return $this->greaterThanOrEqualTo($date); - } - - /** - * Determines if the instance is greater (after) than or equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:15'); // true - * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:17'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function greaterThanOrEqualTo($date): bool - { - $this->discourageNull($date); - $this->discourageBoolean($date); - - return $this >= $this->resolveCarbon($date); - } - - /** - * Determines if the instance is less (before) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:15'); // false - * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see lessThan() - * - * @return bool - */ - public function lt($date): bool - { - return $this->lessThan($date); - } - - /** - * Determines if the instance is less (before) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:15'); // false - * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function lessThan($date): bool - { - $this->discourageNull($date); - $this->discourageBoolean($date); - - return $this < $this->resolveCarbon($date); - } - - /** - * Determines if the instance is less (before) than another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:15'); // false - * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:16'); // false - * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see lessThan() - * - * @return bool - */ - public function isBefore($date): bool - { - return $this->lessThan($date); - } - - /** - * Determines if the instance is less (before) or equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:15'); // false - * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see lessThanOrEqualTo() - * - * @return bool - */ - public function lte($date): bool - { - return $this->lessThanOrEqualTo($date); - } - - /** - * Determines if the instance is less (before) or equal to another - * - * @example - * ``` - * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:15'); // false - * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:16'); // true - * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:17'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return bool - */ - public function lessThanOrEqualTo($date): bool - { - $this->discourageNull($date); - $this->discourageBoolean($date); - - return $this <= $this->resolveCarbon($date); - } - - /** - * Determines if the instance is between two others. - * - * The third argument allow you to specify if bounds are included or not (true by default) - * but for when you including/excluding bounds may produce different results in your application, - * we recommend to use the explicit methods ->betweenIncluded() or ->betweenExcluded() instead. - * - * @example - * ``` - * Carbon::parse('2018-07-25')->between('2018-07-14', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->between('2018-08-01', '2018-08-20'); // false - * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01', false); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 - * @param bool $equal Indicates if an equal to comparison should be done - * - * @return bool - */ - public function between($date1, $date2, $equal = true): bool - { - $date1 = $this->resolveCarbon($date1); - $date2 = $this->resolveCarbon($date2); - - if ($date1->greaterThan($date2)) { - [$date1, $date2] = [$date2, $date1]; - } - - if ($equal) { - return $this >= $date1 && $this <= $date2; - } - - return $this > $date1 && $this < $date2; - } - - /** - * Determines if the instance is between two others, bounds included. - * - * @example - * ``` - * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-14', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->betweenIncluded('2018-08-01', '2018-08-20'); // false - * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-25', '2018-08-01'); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 - * - * @return bool - */ - public function betweenIncluded($date1, $date2): bool - { - return $this->between($date1, $date2, true); - } - - /** - * Determines if the instance is between two others, bounds excluded. - * - * @example - * ``` - * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-14', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->betweenExcluded('2018-08-01', '2018-08-20'); // false - * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-25', '2018-08-01'); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 - * - * @return bool - */ - public function betweenExcluded($date1, $date2): bool - { - return $this->between($date1, $date2, false); - } - - /** - * Determines if the instance is between two others - * - * @example - * ``` - * Carbon::parse('2018-07-25')->isBetween('2018-07-14', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->isBetween('2018-08-01', '2018-08-20'); // false - * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01'); // true - * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01', false); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 - * @param bool $equal Indicates if an equal to comparison should be done - * - * @return bool - */ - public function isBetween($date1, $date2, $equal = true): bool - { - return $this->between($date1, $date2, $equal); - } - - /** - * Determines if the instance is a weekday. - * - * @example - * ``` - * Carbon::parse('2019-07-14')->isWeekday(); // false - * Carbon::parse('2019-07-15')->isWeekday(); // true - * ``` - * - * @return bool - */ - public function isWeekday() - { - return !$this->isWeekend(); - } - - /** - * Determines if the instance is a weekend day. - * - * @example - * ``` - * Carbon::parse('2019-07-14')->isWeekend(); // true - * Carbon::parse('2019-07-15')->isWeekend(); // false - * ``` - * - * @return bool - */ - public function isWeekend() - { - return \in_array($this->dayOfWeek, static::$weekendDays, true); - } - - /** - * Determines if the instance is yesterday. - * - * @example - * ``` - * Carbon::yesterday()->isYesterday(); // true - * Carbon::tomorrow()->isYesterday(); // false - * ``` - * - * @return bool - */ - public function isYesterday() - { - return $this->toDateString() === static::yesterday($this->getTimezone())->toDateString(); - } - - /** - * Determines if the instance is today. - * - * @example - * ``` - * Carbon::today()->isToday(); // true - * Carbon::tomorrow()->isToday(); // false - * ``` - * - * @return bool - */ - public function isToday() - { - return $this->toDateString() === $this->nowWithSameTz()->toDateString(); - } - - /** - * Determines if the instance is tomorrow. - * - * @example - * ``` - * Carbon::tomorrow()->isTomorrow(); // true - * Carbon::yesterday()->isTomorrow(); // false - * ``` - * - * @return bool - */ - public function isTomorrow() - { - return $this->toDateString() === static::tomorrow($this->getTimezone())->toDateString(); - } - - /** - * Determines if the instance is in the future, ie. greater (after) than now. - * - * @example - * ``` - * Carbon::now()->addHours(5)->isFuture(); // true - * Carbon::now()->subHours(5)->isFuture(); // false - * ``` - * - * @return bool - */ - public function isFuture() - { - return $this->greaterThan($this->nowWithSameTz()); - } - - /** - * Determines if the instance is in the past, ie. less (before) than now. - * - * @example - * ``` - * Carbon::now()->subHours(5)->isPast(); // true - * Carbon::now()->addHours(5)->isPast(); // false - * ``` - * - * @return bool - */ - public function isPast() - { - return $this->lessThan($this->nowWithSameTz()); - } - - /** - * Determines if the instance is a leap year. - * - * @example - * ``` - * Carbon::parse('2020-01-01')->isLeapYear(); // true - * Carbon::parse('2019-01-01')->isLeapYear(); // false - * ``` - * - * @return bool - */ - public function isLeapYear() - { - return $this->rawFormat('L') === '1'; - } - - /** - * Determines if the instance is a long year (using calendar year). - * - * ⚠️ This method completely ignores month and day to use the numeric year number, - * it's not correct if the exact date matters. For instance as `2019-12-30` is already - * in the first week of the 2020 year, if you want to know from this date if ISO week - * year 2020 is a long year, use `isLongIsoYear` instead. - * - * @example - * ``` - * Carbon::create(2015)->isLongYear(); // true - * Carbon::create(2016)->isLongYear(); // false - * ``` - * - * @see https://en.wikipedia.org/wiki/ISO_8601#Week_dates - * - * @return bool - */ - public function isLongYear() - { - return static::create($this->year, 12, 28, 0, 0, 0, $this->tz)->weekOfYear === 53; - } - - /** - * Determines if the instance is a long year (using ISO 8601 year). - * - * @example - * ``` - * Carbon::parse('2015-01-01')->isLongIsoYear(); // true - * Carbon::parse('2016-01-01')->isLongIsoYear(); // true - * Carbon::parse('2016-01-03')->isLongIsoYear(); // false - * Carbon::parse('2019-12-29')->isLongIsoYear(); // false - * Carbon::parse('2019-12-30')->isLongIsoYear(); // true - * ``` - * - * @see https://en.wikipedia.org/wiki/ISO_8601#Week_dates - * - * @return bool - */ - public function isLongIsoYear() - { - return static::create($this->isoWeekYear, 12, 28, 0, 0, 0, $this->tz)->weekOfYear === 53; - } - - /** - * Compares the formatted values of the two dates. - * - * @example - * ``` - * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-12-13')); // true - * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-06-14')); // false - * ``` - * - * @param string $format date formats to compare. - * @param \Carbon\Carbon|\DateTimeInterface|string|null $date instance to compare with or null to use current day. - * - * @return bool - */ - public function isSameAs($format, $date = null) - { - return $this->rawFormat($format) === $this->resolveCarbon($date)->rawFormat($format); - } - - /** - * Determines if the instance is in the current unit given. - * - * @example - * ``` - * Carbon::parse('2019-01-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // true - * Carbon::parse('2018-12-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // false - * ``` - * - * @param string $unit singular unit string - * @param \Carbon\Carbon|\DateTimeInterface|null $date instance to compare with or null to use current day. - * - * @throws BadComparisonUnitException - * - * @return bool - */ - public function isSameUnit($unit, $date = null) - { - $units = [ - // @call isSameUnit - 'year' => 'Y', - // @call isSameUnit - 'week' => 'o-W', - // @call isSameUnit - 'day' => 'Y-m-d', - // @call isSameUnit - 'hour' => 'Y-m-d H', - // @call isSameUnit - 'minute' => 'Y-m-d H:i', - // @call isSameUnit - 'second' => 'Y-m-d H:i:s', - // @call isSameUnit - 'micro' => 'Y-m-d H:i:s.u', - // @call isSameUnit - 'microsecond' => 'Y-m-d H:i:s.u', - ]; - - if (isset($units[$unit])) { - return $this->isSameAs($units[$unit], $date); - } - - if (isset($this->$unit)) { - return $this->resolveCarbon($date)->$unit === $this->$unit; - } - - if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) { - throw new BadComparisonUnitException($unit); - } - - return false; - } - - /** - * Determines if the instance is in the current unit given. - * - * @example - * ``` - * Carbon::now()->isCurrentUnit('hour'); // true - * Carbon::now()->subHours(2)->isCurrentUnit('hour'); // false - * ``` - * - * @param string $unit The unit to test. - * - * @throws BadMethodCallException - * - * @return bool - */ - public function isCurrentUnit($unit) - { - return $this->{'isSame'.ucfirst($unit)}(); - } - - /** - * Checks if the passed in date is in the same quarter as the instance quarter (and year if needed). - * - * @example - * ``` - * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-03-01')); // true - * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-04-01')); // false - * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01')); // false - * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01'), false); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|string|null $date The instance to compare with or null to use current day. - * @param bool $ofSameYear Check if it is the same month in the same year. - * - * @return bool - */ - public function isSameQuarter($date = null, $ofSameYear = true) - { - $date = $this->resolveCarbon($date); - - return $this->quarter === $date->quarter && (!$ofSameYear || $this->isSameYear($date)); - } - - /** - * Checks if the passed in date is in the same month as the instance´s month. - * - * @example - * ``` - * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-01-01')); // true - * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-02-01')); // false - * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01')); // false - * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01'), false); // true - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use the current date. - * @param bool $ofSameYear Check if it is the same month in the same year. - * - * @return bool - */ - public function isSameMonth($date = null, $ofSameYear = true) - { - return $this->isSameAs($ofSameYear ? 'Y-m' : 'm', $date); - } - - /** - * Checks if this day is a specific day of the week. - * - * @example - * ``` - * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::WEDNESDAY); // true - * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::FRIDAY); // false - * Carbon::parse('2019-07-17')->isDayOfWeek('Wednesday'); // true - * Carbon::parse('2019-07-17')->isDayOfWeek('Friday'); // false - * ``` - * - * @param int $dayOfWeek - * - * @return bool - */ - public function isDayOfWeek($dayOfWeek) - { - if (\is_string($dayOfWeek) && \defined($constant = static::class.'::'.strtoupper($dayOfWeek))) { - $dayOfWeek = \constant($constant); - } - - return $this->dayOfWeek === $dayOfWeek; - } - - /** - * Check if its the birthday. Compares the date/month values of the two dates. - * - * @example - * ``` - * Carbon::now()->subYears(5)->isBirthday(); // true - * Carbon::now()->subYears(5)->subDay()->isBirthday(); // false - * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-05')); // true - * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-06')); // false - * ``` - * - * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use current day. - * - * @return bool - */ - public function isBirthday($date = null) - { - return $this->isSameAs('md', $date); - } - - /** - * Check if today is the last day of the Month - * - * @example - * ``` - * Carbon::parse('2019-02-28')->isLastOfMonth(); // true - * Carbon::parse('2019-03-28')->isLastOfMonth(); // false - * Carbon::parse('2019-03-30')->isLastOfMonth(); // false - * Carbon::parse('2019-03-31')->isLastOfMonth(); // true - * Carbon::parse('2019-04-30')->isLastOfMonth(); // true - * ``` - * - * @return bool - */ - public function isLastOfMonth() - { - return $this->day === $this->daysInMonth; - } - - /** - * Check if the instance is start of day / midnight. - * - * @example - * ``` - * Carbon::parse('2019-02-28 00:00:00')->isStartOfDay(); // true - * Carbon::parse('2019-02-28 00:00:00.999999')->isStartOfDay(); // true - * Carbon::parse('2019-02-28 00:00:01')->isStartOfDay(); // false - * Carbon::parse('2019-02-28 00:00:00.000000')->isStartOfDay(true); // true - * Carbon::parse('2019-02-28 00:00:00.000012')->isStartOfDay(true); // false - * ``` - * - * @param bool $checkMicroseconds check time at microseconds precision - * - * @return bool - */ - public function isStartOfDay($checkMicroseconds = false) - { - /* @var CarbonInterface $this */ - return $checkMicroseconds - ? $this->rawFormat('H:i:s.u') === '00:00:00.000000' - : $this->rawFormat('H:i:s') === '00:00:00'; - } - - /** - * Check if the instance is end of day. - * - * @example - * ``` - * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(); // true - * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(); // true - * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(); // true - * Carbon::parse('2019-02-28 23:59:58.999999')->isEndOfDay(); // false - * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(true); // true - * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(true); // false - * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(true); // false - * ``` - * - * @param bool $checkMicroseconds check time at microseconds precision - * - * @return bool - */ - public function isEndOfDay($checkMicroseconds = false) - { - /* @var CarbonInterface $this */ - return $checkMicroseconds - ? $this->rawFormat('H:i:s.u') === '23:59:59.999999' - : $this->rawFormat('H:i:s') === '23:59:59'; - } - - /** - * Check if the instance is start of day / midnight. - * - * @example - * ``` - * Carbon::parse('2019-02-28 00:00:00')->isMidnight(); // true - * Carbon::parse('2019-02-28 00:00:00.999999')->isMidnight(); // true - * Carbon::parse('2019-02-28 00:00:01')->isMidnight(); // false - * ``` - * - * @return bool - */ - public function isMidnight() - { - return $this->isStartOfDay(); - } - - /** - * Check if the instance is midday. - * - * @example - * ``` - * Carbon::parse('2019-02-28 11:59:59.999999')->isMidday(); // false - * Carbon::parse('2019-02-28 12:00:00')->isMidday(); // true - * Carbon::parse('2019-02-28 12:00:00.999999')->isMidday(); // true - * Carbon::parse('2019-02-28 12:00:01')->isMidday(); // false - * ``` - * - * @return bool - */ - public function isMidday() - { - /* @var CarbonInterface $this */ - return $this->rawFormat('G:i:s') === static::$midDayAt.':00:00'; - } - - /** - * Checks if the (date)time string is in a given format. - * - * @example - * ``` - * Carbon::hasFormat('11:12:45', 'h:i:s'); // true - * Carbon::hasFormat('13:12:45', 'h:i:s'); // false - * ``` - * - * @param string $date - * @param string $format - * - * @return bool - */ - public static function hasFormat($date, $format) - { - // createFromFormat() is known to handle edge cases silently. - // E.g. "1975-5-1" (Y-n-j) will still be parsed correctly when "Y-m-d" is supplied as the format. - // To ensure we're really testing against our desired format, perform an additional regex validation. - - return self::matchFormatPattern((string) $date, preg_quote((string) $format, '/'), static::$regexFormats); - } - - /** - * Checks if the (date)time string is in a given format. - * - * @example - * ``` - * Carbon::hasFormatWithModifiers('31/08/2015', 'd#m#Y'); // true - * Carbon::hasFormatWithModifiers('31/08/2015', 'm#d#Y'); // false - * ``` - * - * @param string $date - * @param string $format - * - * @return bool - */ - public static function hasFormatWithModifiers($date, $format): bool - { - return self::matchFormatPattern((string) $date, (string) $format, array_merge(static::$regexFormats, static::$regexFormatModifiers)); - } - - /** - * Checks if the (date)time string is in a given format and valid to create a - * new instance. - * - * @example - * ``` - * Carbon::canBeCreatedFromFormat('11:12:45', 'h:i:s'); // true - * Carbon::canBeCreatedFromFormat('13:12:45', 'h:i:s'); // false - * ``` - * - * @param string $date - * @param string $format - * - * @return bool - */ - public static function canBeCreatedFromFormat($date, $format) - { - try { - // Try to create a DateTime object. Throws an InvalidArgumentException if the provided time string - // doesn't match the format in any way. - if (!static::rawCreateFromFormat($format, $date)) { - return false; - } - } catch (InvalidArgumentException $e) { - return false; - } - - return static::hasFormatWithModifiers($date, $format); - } - - /** - * Returns true if the current date matches the given string. - * - * @example - * ``` - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2018')); // false - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('06-02')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06-02')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('Sunday')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('June')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:45')); // true - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:00')); // false - * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12h')); // true - * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3pm')); // true - * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3am')); // false - * ``` - * - * @param string $tester day name, month name, hour, date, etc. as string - * - * @return bool - */ - public function is(string $tester) - { - $tester = trim($tester); - - if (preg_match('/^\d+$/', $tester)) { - return $this->year === (int) $tester; - } - - if (preg_match('/^\d{3,}-\d{1,2}$/', $tester)) { - return $this->isSameMonth(static::parse($tester)); - } - - if (preg_match('/^\d{1,2}-\d{1,2}$/', $tester)) { - return $this->isSameDay(static::parse($this->year.'-'.$tester)); - } - - $modifier = preg_replace('/(\d)h$/i', '$1:00', $tester); - - /* @var CarbonInterface $max */ - $median = static::parse('5555-06-15 12:30:30.555555')->modify($modifier); - $current = $this->avoidMutation(); - /* @var CarbonInterface $other */ - $other = $this->avoidMutation()->modify($modifier); - - if ($current->eq($other)) { - return true; - } - - if (preg_match('/\d:\d{1,2}:\d{1,2}$/', $tester)) { - return $current->startOfSecond()->eq($other); - } - - if (preg_match('/\d:\d{1,2}$/', $tester)) { - return $current->startOfMinute()->eq($other); - } - - if (preg_match('/\d(?:h|am|pm)$/', $tester)) { - return $current->startOfHour()->eq($other); - } - - if (preg_match( - '/^(?:january|february|march|april|may|june|july|august|september|october|november|december)(?:\s+\d+)?$/i', - $tester - )) { - return $current->startOfMonth()->eq($other->startOfMonth()); - } - - $units = [ - 'month' => [1, 'year'], - 'day' => [1, 'month'], - 'hour' => [0, 'day'], - 'minute' => [0, 'hour'], - 'second' => [0, 'minute'], - 'microsecond' => [0, 'second'], - ]; - - foreach ($units as $unit => [$minimum, $startUnit]) { - if ($minimum === $median->$unit) { - $current = $current->startOf($startUnit); - - break; - } - } - - return $current->eq($other); - } - - /** - * Checks if the (date)time string is in a given format with - * given list of pattern replacements. - * - * @example - * ``` - * Carbon::hasFormat('11:12:45', 'h:i:s'); // true - * Carbon::hasFormat('13:12:45', 'h:i:s'); // false - * ``` - * - * @param string $date - * @param string $format - * @param array $replacements - * - * @return bool - */ - private static function matchFormatPattern(string $date, string $format, array $replacements): bool - { - // Preg quote, but remove escaped backslashes since we'll deal with escaped characters in the format string. - $regex = str_replace('\\\\', '\\', $format); - // Replace not-escaped letters - $regex = preg_replace_callback( - '/(?startOfTime ?? false; - } - - /** - * Returns true if the date was created using CarbonImmutable::endOfTime() - * - * @return bool - */ - public function isEndOfTime(): bool - { - return $this->endOfTime ?? false; - } - - private function discourageNull($value): void - { - if ($value === null) { - @trigger_error("Since 2.61.0, it's deprecated to compare a date to null, meaning of such comparison is ambiguous and will no longer be possible in 3.0.0, you should explicitly pass 'now' or make an other check to eliminate null values.", \E_USER_DEPRECATED); - } - } - - private function discourageBoolean($value): void - { - if (\is_bool($value)) { - @trigger_error("Since 2.61.0, it's deprecated to compare a date to true or false, meaning of such comparison is ambiguous and will no longer be possible in 3.0.0, you should explicitly pass 'now' or make an other check to eliminate boolean values.", \E_USER_DEPRECATED); - } - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Converter.php b/vendor/nesbot/carbon/src/Carbon/Traits/Converter.php deleted file mode 100644 index fff8a600..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Converter.php +++ /dev/null @@ -1,639 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Carbon\Carbon; -use Carbon\CarbonImmutable; -use Carbon\CarbonInterface; -use Carbon\CarbonInterval; -use Carbon\CarbonPeriod; -use Carbon\CarbonPeriodImmutable; -use Carbon\Exceptions\UnitException; -use Closure; -use DateTime; -use DateTimeImmutable; -use ReturnTypeWillChange; - -/** - * Trait Converter. - * - * Change date into different string formats and types and - * handle the string cast. - * - * Depends on the following methods: - * - * @method static copy() - */ -trait Converter -{ - use ToStringFormat; - - /** - * Returns the formatted date string on success or FALSE on failure. - * - * @see https://php.net/manual/en/datetime.format.php - * - * @param string $format - * - * @return string - */ - #[ReturnTypeWillChange] - public function format($format) - { - $function = $this->localFormatFunction ?: static::$formatFunction; - - if (!$function) { - return $this->rawFormat($format); - } - - if (\is_string($function) && method_exists($this, $function)) { - $function = [$this, $function]; - } - - return $function(...\func_get_args()); - } - - /** - * @see https://php.net/manual/en/datetime.format.php - * - * @param string $format - * - * @return string - */ - public function rawFormat($format) - { - return parent::format($format); - } - - /** - * Format the instance as a string using the set format - * - * @example - * ``` - * echo Carbon::now(); // Carbon instances can be cast to string - * ``` - * - * @return string - */ - public function __toString() - { - $format = $this->localToStringFormat ?? static::$toStringFormat; - - return $format instanceof Closure - ? $format($this) - : $this->rawFormat($format ?: ( - \defined('static::DEFAULT_TO_STRING_FORMAT') - ? static::DEFAULT_TO_STRING_FORMAT - : CarbonInterface::DEFAULT_TO_STRING_FORMAT - )); - } - - /** - * Format the instance as date - * - * @example - * ``` - * echo Carbon::now()->toDateString(); - * ``` - * - * @return string - */ - public function toDateString() - { - return $this->rawFormat('Y-m-d'); - } - - /** - * Format the instance as a readable date - * - * @example - * ``` - * echo Carbon::now()->toFormattedDateString(); - * ``` - * - * @return string - */ - public function toFormattedDateString() - { - return $this->rawFormat('M j, Y'); - } - - /** - * Format the instance with the day, and a readable date - * - * @example - * ``` - * echo Carbon::now()->toFormattedDayDateString(); - * ``` - * - * @return string - */ - public function toFormattedDayDateString(): string - { - return $this->rawFormat('D, M j, Y'); - } - - /** - * Format the instance as time - * - * @example - * ``` - * echo Carbon::now()->toTimeString(); - * ``` - * - * @param string $unitPrecision - * - * @return string - */ - public function toTimeString($unitPrecision = 'second') - { - return $this->rawFormat(static::getTimeFormatByPrecision($unitPrecision)); - } - - /** - * Format the instance as date and time - * - * @example - * ``` - * echo Carbon::now()->toDateTimeString(); - * ``` - * - * @param string $unitPrecision - * - * @return string - */ - public function toDateTimeString($unitPrecision = 'second') - { - return $this->rawFormat('Y-m-d '.static::getTimeFormatByPrecision($unitPrecision)); - } - - /** - * Return a format from H:i to H:i:s.u according to given unit precision. - * - * @param string $unitPrecision "minute", "second", "millisecond" or "microsecond" - * - * @return string - */ - public static function getTimeFormatByPrecision($unitPrecision) - { - switch (static::singularUnit($unitPrecision)) { - case 'minute': - return 'H:i'; - case 'second': - return 'H:i:s'; - case 'm': - case 'millisecond': - return 'H:i:s.v'; - case 'µ': - case 'microsecond': - return 'H:i:s.u'; - } - - throw new UnitException('Precision unit expected among: minute, second, millisecond and microsecond.'); - } - - /** - * Format the instance as date and time T-separated with no timezone - * - * @example - * ``` - * echo Carbon::now()->toDateTimeLocalString(); - * echo "\n"; - * echo Carbon::now()->toDateTimeLocalString('minute'); // You can specify precision among: minute, second, millisecond and microsecond - * ``` - * - * @param string $unitPrecision - * - * @return string - */ - public function toDateTimeLocalString($unitPrecision = 'second') - { - return $this->rawFormat('Y-m-d\T'.static::getTimeFormatByPrecision($unitPrecision)); - } - - /** - * Format the instance with day, date and time - * - * @example - * ``` - * echo Carbon::now()->toDayDateTimeString(); - * ``` - * - * @return string - */ - public function toDayDateTimeString() - { - return $this->rawFormat('D, M j, Y g:i A'); - } - - /** - * Format the instance as ATOM - * - * @example - * ``` - * echo Carbon::now()->toAtomString(); - * ``` - * - * @return string - */ - public function toAtomString() - { - return $this->rawFormat(DateTime::ATOM); - } - - /** - * Format the instance as COOKIE - * - * @example - * ``` - * echo Carbon::now()->toCookieString(); - * ``` - * - * @return string - */ - public function toCookieString() - { - return $this->rawFormat(DateTime::COOKIE); - } - - /** - * Format the instance as ISO8601 - * - * @example - * ``` - * echo Carbon::now()->toIso8601String(); - * ``` - * - * @return string - */ - public function toIso8601String() - { - return $this->toAtomString(); - } - - /** - * Format the instance as RFC822 - * - * @example - * ``` - * echo Carbon::now()->toRfc822String(); - * ``` - * - * @return string - */ - public function toRfc822String() - { - return $this->rawFormat(DateTime::RFC822); - } - - /** - * Convert the instance to UTC and return as Zulu ISO8601 - * - * @example - * ``` - * echo Carbon::now()->toIso8601ZuluString(); - * ``` - * - * @param string $unitPrecision - * - * @return string - */ - public function toIso8601ZuluString($unitPrecision = 'second') - { - return $this->avoidMutation() - ->utc() - ->rawFormat('Y-m-d\T'.static::getTimeFormatByPrecision($unitPrecision).'\Z'); - } - - /** - * Format the instance as RFC850 - * - * @example - * ``` - * echo Carbon::now()->toRfc850String(); - * ``` - * - * @return string - */ - public function toRfc850String() - { - return $this->rawFormat(DateTime::RFC850); - } - - /** - * Format the instance as RFC1036 - * - * @example - * ``` - * echo Carbon::now()->toRfc1036String(); - * ``` - * - * @return string - */ - public function toRfc1036String() - { - return $this->rawFormat(DateTime::RFC1036); - } - - /** - * Format the instance as RFC1123 - * - * @example - * ``` - * echo Carbon::now()->toRfc1123String(); - * ``` - * - * @return string - */ - public function toRfc1123String() - { - return $this->rawFormat(DateTime::RFC1123); - } - - /** - * Format the instance as RFC2822 - * - * @example - * ``` - * echo Carbon::now()->toRfc2822String(); - * ``` - * - * @return string - */ - public function toRfc2822String() - { - return $this->rawFormat(DateTime::RFC2822); - } - - /** - * Format the instance as RFC3339 - * - * @param bool $extended - * - * @example - * ``` - * echo Carbon::now()->toRfc3339String() . "\n"; - * echo Carbon::now()->toRfc3339String(true) . "\n"; - * ``` - * - * @return string - */ - public function toRfc3339String($extended = false) - { - $format = DateTime::RFC3339; - if ($extended) { - $format = DateTime::RFC3339_EXTENDED; - } - - return $this->rawFormat($format); - } - - /** - * Format the instance as RSS - * - * @example - * ``` - * echo Carbon::now()->toRssString(); - * ``` - * - * @return string - */ - public function toRssString() - { - return $this->rawFormat(DateTime::RSS); - } - - /** - * Format the instance as W3C - * - * @example - * ``` - * echo Carbon::now()->toW3cString(); - * ``` - * - * @return string - */ - public function toW3cString() - { - return $this->rawFormat(DateTime::W3C); - } - - /** - * Format the instance as RFC7231 - * - * @example - * ``` - * echo Carbon::now()->toRfc7231String(); - * ``` - * - * @return string - */ - public function toRfc7231String() - { - return $this->avoidMutation() - ->setTimezone('GMT') - ->rawFormat(\defined('static::RFC7231_FORMAT') ? static::RFC7231_FORMAT : CarbonInterface::RFC7231_FORMAT); - } - - /** - * Get default array representation. - * - * @example - * ``` - * var_dump(Carbon::now()->toArray()); - * ``` - * - * @return array - */ - public function toArray() - { - return [ - 'year' => $this->year, - 'month' => $this->month, - 'day' => $this->day, - 'dayOfWeek' => $this->dayOfWeek, - 'dayOfYear' => $this->dayOfYear, - 'hour' => $this->hour, - 'minute' => $this->minute, - 'second' => $this->second, - 'micro' => $this->micro, - 'timestamp' => $this->timestamp, - 'formatted' => $this->rawFormat(\defined('static::DEFAULT_TO_STRING_FORMAT') ? static::DEFAULT_TO_STRING_FORMAT : CarbonInterface::DEFAULT_TO_STRING_FORMAT), - 'timezone' => $this->timezone, - ]; - } - - /** - * Get default object representation. - * - * @example - * ``` - * var_dump(Carbon::now()->toObject()); - * ``` - * - * @return object - */ - public function toObject() - { - return (object) $this->toArray(); - } - - /** - * Returns english human readable complete date string. - * - * @example - * ``` - * echo Carbon::now()->toString(); - * ``` - * - * @return string - */ - public function toString() - { - return $this->avoidMutation()->locale('en')->isoFormat('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); - } - - /** - * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z, if $keepOffset truthy, offset will be kept: - * 1977-04-22T01:00:00-05:00). - * - * @example - * ``` - * echo Carbon::now('America/Toronto')->toISOString() . "\n"; - * echo Carbon::now('America/Toronto')->toISOString(true) . "\n"; - * ``` - * - * @param bool $keepOffset Pass true to keep the date offset. Else forced to UTC. - * - * @return null|string - */ - public function toISOString($keepOffset = false) - { - if (!$this->isValid()) { - return null; - } - - $yearFormat = $this->year < 0 || $this->year > 9999 ? 'YYYYYY' : 'YYYY'; - $tzFormat = $keepOffset ? 'Z' : '[Z]'; - $date = $keepOffset ? $this : $this->avoidMutation()->utc(); - - return $date->isoFormat("$yearFormat-MM-DD[T]HH:mm:ss.SSSSSS$tzFormat"); - } - - /** - * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z) with UTC timezone. - * - * @example - * ``` - * echo Carbon::now('America/Toronto')->toJSON(); - * ``` - * - * @return null|string - */ - public function toJSON() - { - return $this->toISOString(); - } - - /** - * Return native DateTime PHP object matching the current instance. - * - * @example - * ``` - * var_dump(Carbon::now()->toDateTime()); - * ``` - * - * @return DateTime - */ - public function toDateTime() - { - return new DateTime($this->rawFormat('Y-m-d H:i:s.u'), $this->getTimezone()); - } - - /** - * Return native toDateTimeImmutable PHP object matching the current instance. - * - * @example - * ``` - * var_dump(Carbon::now()->toDateTimeImmutable()); - * ``` - * - * @return DateTimeImmutable - */ - public function toDateTimeImmutable() - { - return new DateTimeImmutable($this->rawFormat('Y-m-d H:i:s.u'), $this->getTimezone()); - } - - /** - * @alias toDateTime - * - * Return native DateTime PHP object matching the current instance. - * - * @example - * ``` - * var_dump(Carbon::now()->toDate()); - * ``` - * - * @return DateTime - */ - public function toDate() - { - return $this->toDateTime(); - } - - /** - * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval). - * - * @param \DateTimeInterface|Carbon|CarbonImmutable|int|null $end period end date or recurrences count if int - * @param int|\DateInterval|string|null $interval period default interval or number of the given $unit - * @param string|null $unit if specified, $interval must be an integer - * - * @return CarbonPeriod - */ - public function toPeriod($end = null, $interval = null, $unit = null) - { - if ($unit) { - $interval = CarbonInterval::make("$interval ".static::pluralUnit($unit)); - } - - $period = ($this->isMutable() ? new CarbonPeriod() : new CarbonPeriodImmutable()) - ->setDateClass(static::class) - ->setStartDate($this); - - if ($interval) { - $period = $period->setDateInterval($interval); - } - - if (\is_int($end) || (\is_string($end) && ctype_digit($end))) { - $period = $period->setRecurrences($end); - } elseif ($end) { - $period = $period->setEndDate($end); - } - - return $period; - } - - /** - * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval). - * - * @param \DateTimeInterface|Carbon|CarbonImmutable|null $end period end date - * @param int|\DateInterval|string|null $interval period default interval or number of the given $unit - * @param string|null $unit if specified, $interval must be an integer - * - * @return CarbonPeriod - */ - public function range($end = null, $interval = null, $unit = null) - { - return $this->toPeriod($end, $interval, $unit); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php b/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php deleted file mode 100644 index 0d611ea2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php +++ /dev/null @@ -1,977 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Carbon\Carbon; -use Carbon\CarbonImmutable; -use Carbon\CarbonInterface; -use Carbon\Exceptions\InvalidDateException; -use Carbon\Exceptions\InvalidFormatException; -use Carbon\Exceptions\OutOfRangeException; -use Carbon\Translator; -use Closure; -use DateMalformedStringException; -use DateTimeImmutable; -use DateTimeInterface; -use DateTimeZone; -use Exception; -use ReturnTypeWillChange; - -/** - * Trait Creator. - * - * Static creators. - * - * Depends on the following methods: - * - * @method static Carbon|CarbonImmutable getTestNow() - */ -trait Creator -{ - use ObjectInitialisation; - - /** - * The errors that can occur. - * - * @var array - */ - protected static $lastErrors; - - /** - * Create a new Carbon instance. - * - * Please see the testing aids section (specifically static::setTestNow()) - * for more on the possibility of this constructor returning a test instance. - * - * @param DateTimeInterface|string|null $time - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - */ - public function __construct($time = null, $tz = null) - { - if ($time instanceof DateTimeInterface) { - $time = $this->constructTimezoneFromDateTime($time, $tz)->format('Y-m-d H:i:s.u'); - } - - if (is_numeric($time) && (!\is_string($time) || !preg_match('/^\d{1,14}$/', $time))) { - $time = static::createFromTimestampUTC($time)->format('Y-m-d\TH:i:s.uP'); - } - - // If the class has a test now set and we are trying to create a now() - // instance then override as required - $isNow = empty($time) || $time === 'now'; - - if (method_exists(static::class, 'hasTestNow') && - method_exists(static::class, 'getTestNow') && - static::hasTestNow() && - ($isNow || static::hasRelativeKeywords($time)) - ) { - static::mockConstructorParameters($time, $tz); - } - - // Work-around for PHP bug https://bugs.php.net/bug.php?id=67127 - if (!str_contains((string) .1, '.')) { - $locale = setlocale(LC_NUMERIC, '0'); // @codeCoverageIgnore - setlocale(LC_NUMERIC, 'C'); // @codeCoverageIgnore - } - - try { - parent::__construct($time ?: 'now', static::safeCreateDateTimeZone($tz) ?: null); - } catch (Exception $exception) { - throw new InvalidFormatException($exception->getMessage(), 0, $exception); - } - - $this->constructedObjectId = spl_object_hash($this); - - if (isset($locale)) { - setlocale(LC_NUMERIC, $locale); // @codeCoverageIgnore - } - - self::setLastErrors(parent::getLastErrors()); - } - - /** - * Get timezone from a datetime instance. - * - * @param DateTimeInterface $date - * @param DateTimeZone|string|null $tz - * - * @return DateTimeInterface - */ - private function constructTimezoneFromDateTime(DateTimeInterface $date, &$tz) - { - if ($tz !== null) { - $safeTz = static::safeCreateDateTimeZone($tz); - - if ($safeTz) { - return ($date instanceof DateTimeImmutable ? $date : clone $date)->setTimezone($safeTz); - } - - return $date; - } - - $tz = $date->getTimezone(); - - return $date; - } - - /** - * Update constructedObjectId on cloned. - */ - public function __clone() - { - $this->constructedObjectId = spl_object_hash($this); - } - - /** - * Create a Carbon instance from a DateTime one. - * - * @param DateTimeInterface $date - * - * @return static - */ - public static function instance($date) - { - if ($date instanceof static) { - return clone $date; - } - - static::expectDateTime($date); - - $instance = new static($date->format('Y-m-d H:i:s.u'), $date->getTimezone()); - - if ($date instanceof CarbonInterface) { - $settings = $date->getSettings(); - - if (!$date->hasLocalTranslator()) { - unset($settings['locale']); - } - - $instance->settings($settings); - } - - return $instance; - } - - /** - * Create a carbon instance from a string. - * - * This is an alias for the constructor that allows better fluent syntax - * as it allows you to do Carbon::parse('Monday next week')->fn() rather - * than (new Carbon('Monday next week'))->fn(). - * - * @param string|DateTimeInterface|null $time - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - * - * @return static - */ - public static function rawParse($time = null, $tz = null) - { - if ($time instanceof DateTimeInterface) { - return static::instance($time); - } - - try { - return new static($time, $tz); - } catch (Exception $exception) { - // @codeCoverageIgnoreStart - try { - $date = @static::now($tz)->change($time); - } catch (DateMalformedStringException $ignoredException) { - $date = null; - } - // @codeCoverageIgnoreEnd - - if (!$date) { - throw new InvalidFormatException("Could not parse '$time': ".$exception->getMessage(), 0, $exception); - } - - return $date; - } - } - - /** - * Create a carbon instance from a string. - * - * This is an alias for the constructor that allows better fluent syntax - * as it allows you to do Carbon::parse('Monday next week')->fn() rather - * than (new Carbon('Monday next week'))->fn(). - * - * @param string|DateTimeInterface|null $time - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - * - * @return static - */ - public static function parse($time = null, $tz = null) - { - $function = static::$parseFunction; - - if (!$function) { - return static::rawParse($time, $tz); - } - - if (\is_string($function) && method_exists(static::class, $function)) { - $function = [static::class, $function]; - } - - return $function(...\func_get_args()); - } - - /** - * Create a carbon instance from a localized string (in French, Japanese, Arabic, etc.). - * - * @param string $time date/time string in the given language (may also contain English). - * @param string|null $locale if locale is null or not specified, current global locale will be - * used instead. - * @param DateTimeZone|string|null $tz optional timezone for the new instance. - * - * @throws InvalidFormatException - * - * @return static - */ - public static function parseFromLocale($time, $locale = null, $tz = null) - { - return static::rawParse(static::translateTimeString($time, $locale, 'en'), $tz); - } - - /** - * Get a Carbon instance for the current date and time. - * - * @param DateTimeZone|string|null $tz - * - * @return static - */ - public static function now($tz = null) - { - return new static(null, $tz); - } - - /** - * Create a Carbon instance for today. - * - * @param DateTimeZone|string|null $tz - * - * @return static - */ - public static function today($tz = null) - { - return static::rawParse('today', $tz); - } - - /** - * Create a Carbon instance for tomorrow. - * - * @param DateTimeZone|string|null $tz - * - * @return static - */ - public static function tomorrow($tz = null) - { - return static::rawParse('tomorrow', $tz); - } - - /** - * Create a Carbon instance for yesterday. - * - * @param DateTimeZone|string|null $tz - * - * @return static - */ - public static function yesterday($tz = null) - { - return static::rawParse('yesterday', $tz); - } - - /** - * Create a Carbon instance for the greatest supported date. - * - * @return static - */ - public static function maxValue() - { - if (self::$PHPIntSize === 4) { - // 32 bit - return static::createFromTimestamp(PHP_INT_MAX); // @codeCoverageIgnore - } - - // 64 bit - return static::create(9999, 12, 31, 23, 59, 59); - } - - /** - * Create a Carbon instance for the lowest supported date. - * - * @return static - */ - public static function minValue() - { - if (self::$PHPIntSize === 4) { - // 32 bit - return static::createFromTimestamp(~PHP_INT_MAX); // @codeCoverageIgnore - } - - // 64 bit - return static::create(1, 1, 1, 0, 0, 0); - } - - private static function assertBetween($unit, $value, $min, $max) - { - if (static::isStrictModeEnabled() && ($value < $min || $value > $max)) { - throw new OutOfRangeException($unit, $min, $max, $value); - } - } - - private static function createNowInstance($tz) - { - if (!static::hasTestNow()) { - return static::now($tz); - } - - $now = static::getTestNow(); - - if ($now instanceof Closure) { - return $now(static::now($tz)); - } - - return $now->avoidMutation()->tz($tz); - } - - /** - * Create a new Carbon instance from a specific date and time. - * - * If any of $year, $month or $day are set to null their now() values will - * be used. - * - * If $hour is null it will be set to its now() value and the default - * values for $minute and $second will be their now() values. - * - * If $hour is not null then the default values for $minute and $second - * will be 0. - * - * @param DateTimeInterface|int|null $year - * @param int|null $month - * @param int|null $day - * @param int|null $hour - * @param int|null $minute - * @param int|null $second - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - * - * @return static|false - */ - public static function create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null) - { - if ((\is_string($year) && !is_numeric($year)) || $year instanceof DateTimeInterface) { - return static::parse($year, $tz ?: (\is_string($month) || $month instanceof DateTimeZone ? $month : null)); - } - - $defaults = null; - $getDefault = function ($unit) use ($tz, &$defaults) { - if ($defaults === null) { - $now = self::createNowInstance($tz); - - $defaults = array_combine([ - 'year', - 'month', - 'day', - 'hour', - 'minute', - 'second', - ], explode('-', $now->rawFormat('Y-n-j-G-i-s.u'))); - } - - return $defaults[$unit]; - }; - - $year = $year ?? $getDefault('year'); - $month = $month ?? $getDefault('month'); - $day = $day ?? $getDefault('day'); - $hour = $hour ?? $getDefault('hour'); - $minute = $minute ?? $getDefault('minute'); - $second = (float) ($second ?? $getDefault('second')); - - self::assertBetween('month', $month, 0, 99); - self::assertBetween('day', $day, 0, 99); - self::assertBetween('hour', $hour, 0, 99); - self::assertBetween('minute', $minute, 0, 99); - self::assertBetween('second', $second, 0, 99); - - $fixYear = null; - - if ($year < 0) { - $fixYear = $year; - $year = 0; - } elseif ($year > 9999) { - $fixYear = $year - 9999; - $year = 9999; - } - - $second = ($second < 10 ? '0' : '').number_format($second, 6); - $instance = static::rawCreateFromFormat('!Y-n-j G:i:s.u', sprintf('%s-%s-%s %s:%02s:%02s', $year, $month, $day, $hour, $minute, $second), $tz); - - if ($fixYear !== null) { - $instance = $instance->addYears($fixYear); - } - - return $instance; - } - - /** - * Create a new safe Carbon instance from a specific date and time. - * - * If any of $year, $month or $day are set to null their now() values will - * be used. - * - * If $hour is null it will be set to its now() value and the default - * values for $minute and $second will be their now() values. - * - * If $hour is not null then the default values for $minute and $second - * will be 0. - * - * If one of the set values is not valid, an InvalidDateException - * will be thrown. - * - * @param int|null $year - * @param int|null $month - * @param int|null $day - * @param int|null $hour - * @param int|null $minute - * @param int|null $second - * @param DateTimeZone|string|null $tz - * - * @throws InvalidDateException - * - * @return static|false - */ - public static function createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null) - { - $fields = static::getRangesByUnit(); - - foreach ($fields as $field => $range) { - if ($$field !== null && (!\is_int($$field) || $$field < $range[0] || $$field > $range[1])) { - if (static::isStrictModeEnabled()) { - throw new InvalidDateException($field, $$field); - } - - return false; - } - } - - $instance = static::create($year, $month, $day, $hour, $minute, $second, $tz); - - foreach (array_reverse($fields) as $field => $range) { - if ($$field !== null && (!\is_int($$field) || $$field !== $instance->$field)) { - if (static::isStrictModeEnabled()) { - throw new InvalidDateException($field, $$field); - } - - return false; - } - } - - return $instance; - } - - /** - * Create a new Carbon instance from a specific date and time using strict validation. - * - * @see create() - * - * @param int|null $year - * @param int|null $month - * @param int|null $day - * @param int|null $hour - * @param int|null $minute - * @param int|null $second - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - * - * @return static - */ - public static function createStrict(?int $year = 0, ?int $month = 1, ?int $day = 1, ?int $hour = 0, ?int $minute = 0, ?int $second = 0, $tz = null): self - { - $initialStrictMode = static::isStrictModeEnabled(); - static::useStrictMode(true); - - try { - $date = static::create($year, $month, $day, $hour, $minute, $second, $tz); - } finally { - static::useStrictMode($initialStrictMode); - } - - return $date; - } - - /** - * Create a Carbon instance from just a date. The time portion is set to now. - * - * @param int|null $year - * @param int|null $month - * @param int|null $day - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - * - * @return static - */ - public static function createFromDate($year = null, $month = null, $day = null, $tz = null) - { - return static::create($year, $month, $day, null, null, null, $tz); - } - - /** - * Create a Carbon instance from just a date. The time portion is set to midnight. - * - * @param int|null $year - * @param int|null $month - * @param int|null $day - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - * - * @return static - */ - public static function createMidnightDate($year = null, $month = null, $day = null, $tz = null) - { - return static::create($year, $month, $day, 0, 0, 0, $tz); - } - - /** - * Create a Carbon instance from just a time. The date portion is set to today. - * - * @param int|null $hour - * @param int|null $minute - * @param int|null $second - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - * - * @return static - */ - public static function createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null) - { - return static::create(null, null, null, $hour, $minute, $second, $tz); - } - - /** - * Create a Carbon instance from a time string. The date portion is set to today. - * - * @param string $time - * @param DateTimeZone|string|null $tz - * - * @throws InvalidFormatException - * - * @return static - */ - public static function createFromTimeString($time, $tz = null) - { - return static::today($tz)->setTimeFromTimeString($time); - } - - /** - * @param string $format Datetime format - * @param string $time - * @param DateTimeZone|string|false|null $originalTz - * - * @return DateTimeInterface|false - */ - private static function createFromFormatAndTimezone($format, $time, $originalTz) - { - // Work-around for https://bugs.php.net/bug.php?id=75577 - // @codeCoverageIgnoreStart - if (version_compare(PHP_VERSION, '7.3.0-dev', '<')) { - $format = str_replace('.v', '.u', $format); - } - // @codeCoverageIgnoreEnd - - if ($originalTz === null) { - return parent::createFromFormat($format, (string) $time); - } - - $tz = \is_int($originalTz) - ? @timezone_name_from_abbr('', (int) ($originalTz * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE), 1) - : $originalTz; - - $tz = static::safeCreateDateTimeZone($tz, $originalTz); - - if ($tz === false) { - return false; - } - - return parent::createFromFormat($format, (string) $time, $tz); - } - - /** - * Create a Carbon instance from a specific format. - * - * @param string $format Datetime format - * @param string $time - * @param DateTimeZone|string|false|null $tz - * - * @throws InvalidFormatException - * - * @return static|false - */ - public static function rawCreateFromFormat($format, $time, $tz = null) - { - // Work-around for https://bugs.php.net/bug.php?id=80141 - $format = preg_replace('/(?getTimezone(); - } - - $mock = $mock->copy(); - - // Prepend mock datetime only if the format does not contain non escaped unix epoch reset flag. - if (!preg_match("/{$nonEscaped}[!|]/", $format)) { - if (preg_match('/[HhGgisvuB]/', $format)) { - $mock = $mock->setTime(0, 0); - } - - $format = static::MOCK_DATETIME_FORMAT.' '.$format; - $time = ($mock instanceof self ? $mock->rawFormat(static::MOCK_DATETIME_FORMAT) : $mock->format(static::MOCK_DATETIME_FORMAT)).' '.$time; - } - - // Regenerate date from the modified format to base result on the mocked instance instead of now. - $date = self::createFromFormatAndTimezone($format, $time, $tz); - } - - if ($date instanceof DateTimeInterface) { - $instance = static::instance($date); - $instance::setLastErrors($lastErrors); - - return $instance; - } - - if (static::isStrictModeEnabled()) { - throw new InvalidFormatException(implode(PHP_EOL, $lastErrors['errors'])); - } - - return false; - } - - /** - * Create a Carbon instance from a specific format. - * - * @param string $format Datetime format - * @param string $time - * @param DateTimeZone|string|false|null $tz - * - * @throws InvalidFormatException - * - * @return static|false - */ - #[ReturnTypeWillChange] - public static function createFromFormat($format, $time, $tz = null) - { - $function = static::$createFromFormatFunction; - - if (!$function) { - return static::rawCreateFromFormat($format, $time, $tz); - } - - if (\is_string($function) && method_exists(static::class, $function)) { - $function = [static::class, $function]; - } - - return $function(...\func_get_args()); - } - - /** - * Create a Carbon instance from a specific ISO format (same replacements as ->isoFormat()). - * - * @param string $format Datetime format - * @param string $time - * @param DateTimeZone|string|false|null $tz optional timezone - * @param string|null $locale locale to be used for LTS, LT, LL, LLL, etc. macro-formats (en by fault, unneeded if no such macro-format in use) - * @param \Symfony\Component\Translation\TranslatorInterface $translator optional custom translator to use for macro-formats - * - * @throws InvalidFormatException - * - * @return static|false - */ - public static function createFromIsoFormat($format, $time, $tz = null, $locale = 'en', $translator = null) - { - $format = preg_replace_callback('/(? static::getTranslationMessageWith($translator, 'formats.LT', $locale, 'h:mm A'), - 'LTS' => static::getTranslationMessageWith($translator, 'formats.LTS', $locale, 'h:mm:ss A'), - 'L' => static::getTranslationMessageWith($translator, 'formats.L', $locale, 'MM/DD/YYYY'), - 'LL' => static::getTranslationMessageWith($translator, 'formats.LL', $locale, 'MMMM D, YYYY'), - 'LLL' => static::getTranslationMessageWith($translator, 'formats.LLL', $locale, 'MMMM D, YYYY h:mm A'), - 'LLLL' => static::getTranslationMessageWith($translator, 'formats.LLLL', $locale, 'dddd, MMMM D, YYYY h:mm A'), - ]; - } - - return $formats[$code] ?? preg_replace_callback( - '/MMMM|MM|DD|dddd/', - function ($code) { - return mb_substr($code[0], 1); - }, - $formats[strtoupper($code)] ?? '' - ); - }, $format); - - $format = preg_replace_callback('/(? 'd', - 'OM' => 'M', - 'OY' => 'Y', - 'OH' => 'G', - 'Oh' => 'g', - 'Om' => 'i', - 'Os' => 's', - 'D' => 'd', - 'DD' => 'd', - 'Do' => 'd', - 'd' => '!', - 'dd' => '!', - 'ddd' => 'D', - 'dddd' => 'D', - 'DDD' => 'z', - 'DDDD' => 'z', - 'DDDo' => 'z', - 'e' => '!', - 'E' => '!', - 'H' => 'G', - 'HH' => 'H', - 'h' => 'g', - 'hh' => 'h', - 'k' => 'G', - 'kk' => 'G', - 'hmm' => 'gi', - 'hmmss' => 'gis', - 'Hmm' => 'Gi', - 'Hmmss' => 'Gis', - 'm' => 'i', - 'mm' => 'i', - 'a' => 'a', - 'A' => 'a', - 's' => 's', - 'ss' => 's', - 'S' => '*', - 'SS' => '*', - 'SSS' => '*', - 'SSSS' => '*', - 'SSSSS' => '*', - 'SSSSSS' => 'u', - 'SSSSSSS' => 'u*', - 'SSSSSSSS' => 'u*', - 'SSSSSSSSS' => 'u*', - 'M' => 'm', - 'MM' => 'm', - 'MMM' => 'M', - 'MMMM' => 'M', - 'Mo' => 'm', - 'Q' => '!', - 'Qo' => '!', - 'G' => '!', - 'GG' => '!', - 'GGG' => '!', - 'GGGG' => '!', - 'GGGGG' => '!', - 'g' => '!', - 'gg' => '!', - 'ggg' => '!', - 'gggg' => '!', - 'ggggg' => '!', - 'W' => '!', - 'WW' => '!', - 'Wo' => '!', - 'w' => '!', - 'ww' => '!', - 'wo' => '!', - 'x' => 'U???', - 'X' => 'U', - 'Y' => 'Y', - 'YY' => 'y', - 'YYYY' => 'Y', - 'YYYYY' => 'Y', - 'YYYYYY' => 'Y', - 'z' => 'e', - 'zz' => 'e', - 'Z' => 'e', - 'ZZ' => 'e', - ]; - } - - $format = $replacements[$code] ?? '?'; - - if ($format === '!') { - throw new InvalidFormatException("Format $code not supported for creation."); - } - - return $format; - }, $format); - - return static::rawCreateFromFormat($format, $time, $tz); - } - - /** - * Create a Carbon instance from a specific format and a string in a given language. - * - * @param string $format Datetime format - * @param string $locale - * @param string $time - * @param DateTimeZone|string|false|null $tz - * - * @throws InvalidFormatException - * - * @return static|false - */ - public static function createFromLocaleFormat($format, $locale, $time, $tz = null) - { - $format = preg_replace_callback( - '/(?:\\\\[a-zA-Z]|[bfkqCEJKQRV]){2,}/', - static function (array $match) use ($locale): string { - $word = str_replace('\\', '', $match[0]); - $translatedWord = static::translateTimeString($word, $locale, 'en'); - - return $word === $translatedWord - ? $match[0] - : preg_replace('/[a-zA-Z]/', '\\\\$0', $translatedWord); - }, - $format - ); - - return static::rawCreateFromFormat($format, static::translateTimeString($time, $locale, 'en'), $tz); - } - - /** - * Create a Carbon instance from a specific ISO format and a string in a given language. - * - * @param string $format Datetime ISO format - * @param string $locale - * @param string $time - * @param DateTimeZone|string|false|null $tz - * - * @throws InvalidFormatException - * - * @return static|false - */ - public static function createFromLocaleIsoFormat($format, $locale, $time, $tz = null) - { - $time = static::translateTimeString($time, $locale, 'en', CarbonInterface::TRANSLATE_MONTHS | CarbonInterface::TRANSLATE_DAYS | CarbonInterface::TRANSLATE_MERIDIEM); - - return static::createFromIsoFormat($format, $time, $tz, $locale); - } - - /** - * Make a Carbon instance from given variable if possible. - * - * Always return a new instance. Parse only strings and only these likely to be dates (skip intervals - * and recurrences). Throw an exception for invalid format, but otherwise return null. - * - * @param mixed $var - * - * @throws InvalidFormatException - * - * @return static|null - */ - public static function make($var) - { - if ($var instanceof DateTimeInterface) { - return static::instance($var); - } - - $date = null; - - if (\is_string($var)) { - $var = trim($var); - - if (!preg_match('/^P[\dT]/', $var) && - !preg_match('/^R\d/', $var) && - preg_match('/[a-z\d]/i', $var) - ) { - $date = static::parse($var); - } - } - - return $date; - } - - /** - * Set last errors. - * - * @param array|bool $lastErrors - * - * @return void - */ - private static function setLastErrors($lastErrors) - { - if (\is_array($lastErrors) || $lastErrors === false) { - static::$lastErrors = \is_array($lastErrors) ? $lastErrors : [ - 'warning_count' => 0, - 'warnings' => [], - 'error_count' => 0, - 'errors' => [], - ]; - } - } - - /** - * {@inheritdoc} - * - * @return array - */ - #[ReturnTypeWillChange] - public static function getLastErrors() - { - return static::$lastErrors; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Date.php b/vendor/nesbot/carbon/src/Carbon/Traits/Date.php deleted file mode 100644 index 8ae5c178..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Date.php +++ /dev/null @@ -1,2747 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use BadMethodCallException; -use Carbon\Carbon; -use Carbon\CarbonInterface; -use Carbon\CarbonPeriod; -use Carbon\CarbonTimeZone; -use Carbon\Exceptions\BadComparisonUnitException; -use Carbon\Exceptions\ImmutableException; -use Carbon\Exceptions\InvalidTimeZoneException; -use Carbon\Exceptions\InvalidTypeException; -use Carbon\Exceptions\UnknownGetterException; -use Carbon\Exceptions\UnknownMethodException; -use Carbon\Exceptions\UnknownSetterException; -use Carbon\Exceptions\UnknownUnitException; -use Closure; -use DateInterval; -use DatePeriod; -use DateTime; -use DateTimeImmutable; -use DateTimeInterface; -use DateTimeZone; -use InvalidArgumentException; -use ReflectionException; -use ReturnTypeWillChange; -use Throwable; - -/** - * A simple API extension for DateTime. - * - * @mixin DeprecatedProperties - * - * - * - * @property int $year - * @property int $yearIso - * @property int $month - * @property int $day - * @property int $hour - * @property int $minute - * @property int $second - * @property int $micro - * @property int $microsecond - * @property int|float|string $timestamp seconds since the Unix Epoch - * @property string $englishDayOfWeek the day of week in English - * @property string $shortEnglishDayOfWeek the abbreviated day of week in English - * @property string $englishMonth the month in English - * @property string $shortEnglishMonth the abbreviated month in English - * @property int $milliseconds - * @property int $millisecond - * @property int $milli - * @property int $week 1 through 53 - * @property int $isoWeek 1 through 53 - * @property int $weekYear year according to week format - * @property int $isoWeekYear year according to ISO week format - * @property int $dayOfYear 1 through 366 - * @property int $age does a diffInYears() with default parameters - * @property int $offset the timezone offset in seconds from UTC - * @property int $offsetMinutes the timezone offset in minutes from UTC - * @property int $offsetHours the timezone offset in hours from UTC - * @property CarbonTimeZone $timezone the current timezone - * @property CarbonTimeZone $tz alias of $timezone - * @property-read int $dayOfWeek 0 (for Sunday) through 6 (for Saturday) - * @property-read int $dayOfWeekIso 1 (for Monday) through 7 (for Sunday) - * @property-read int $weekOfYear ISO-8601 week number of year, weeks starting on Monday - * @property-read int $daysInMonth number of days in the given month - * @property-read string $latinMeridiem "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark) - * @property-read string $latinUpperMeridiem "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark) - * @property-read string $timezoneAbbreviatedName the current timezone abbreviated name - * @property-read string $tzAbbrName alias of $timezoneAbbreviatedName - * @property-read string $dayName long name of weekday translated according to Carbon locale, in english if no translation available for current language - * @property-read string $shortDayName short name of weekday translated according to Carbon locale, in english if no translation available for current language - * @property-read string $minDayName very short name of weekday translated according to Carbon locale, in english if no translation available for current language - * @property-read string $monthName long name of month translated according to Carbon locale, in english if no translation available for current language - * @property-read string $shortMonthName short name of month translated according to Carbon locale, in english if no translation available for current language - * @property-read string $meridiem lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language - * @property-read string $upperMeridiem uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language - * @property-read int $noZeroHour current hour from 1 to 24 - * @property-read int $weeksInYear 51 through 53 - * @property-read int $isoWeeksInYear 51 through 53 - * @property-read int $weekOfMonth 1 through 5 - * @property-read int $weekNumberInMonth 1 through 5 - * @property-read int $firstWeekDay 0 through 6 - * @property-read int $lastWeekDay 0 through 6 - * @property-read int $daysInYear 365 or 366 - * @property-read int $quarter the quarter of this instance, 1 - 4 - * @property-read int $decade the decade of this instance - * @property-read int $century the century of this instance - * @property-read int $millennium the millennium of this instance - * @property-read bool $dst daylight savings time indicator, true if DST, false otherwise - * @property-read bool $local checks if the timezone is local, true if local, false otherwise - * @property-read bool $utc checks if the timezone is UTC, true if UTC, false otherwise - * @property-read string $timezoneName the current timezone name - * @property-read string $tzName alias of $timezoneName - * @property-read string $locale locale of the current instance - * - * @method bool isUtc() Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.) - * @method bool isLocal() Check if the current instance has non-UTC timezone. - * @method bool isValid() Check if the current instance is a valid date. - * @method bool isDST() Check if the current instance is in a daylight saving time. - * @method bool isSunday() Checks if the instance day is sunday. - * @method bool isMonday() Checks if the instance day is monday. - * @method bool isTuesday() Checks if the instance day is tuesday. - * @method bool isWednesday() Checks if the instance day is wednesday. - * @method bool isThursday() Checks if the instance day is thursday. - * @method bool isFriday() Checks if the instance day is friday. - * @method bool isSaturday() Checks if the instance day is saturday. - * @method bool isSameYear(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentYear() Checks if the instance is in the same year as the current moment. - * @method bool isNextYear() Checks if the instance is in the same year as the current moment next year. - * @method bool isLastYear() Checks if the instance is in the same year as the current moment last year. - * @method bool isSameWeek(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentWeek() Checks if the instance is in the same week as the current moment. - * @method bool isNextWeek() Checks if the instance is in the same week as the current moment next week. - * @method bool isLastWeek() Checks if the instance is in the same week as the current moment last week. - * @method bool isSameDay(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentDay() Checks if the instance is in the same day as the current moment. - * @method bool isNextDay() Checks if the instance is in the same day as the current moment next day. - * @method bool isLastDay() Checks if the instance is in the same day as the current moment last day. - * @method bool isSameHour(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentHour() Checks if the instance is in the same hour as the current moment. - * @method bool isNextHour() Checks if the instance is in the same hour as the current moment next hour. - * @method bool isLastHour() Checks if the instance is in the same hour as the current moment last hour. - * @method bool isSameMinute(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMinute() Checks if the instance is in the same minute as the current moment. - * @method bool isNextMinute() Checks if the instance is in the same minute as the current moment next minute. - * @method bool isLastMinute() Checks if the instance is in the same minute as the current moment last minute. - * @method bool isSameSecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentSecond() Checks if the instance is in the same second as the current moment. - * @method bool isNextSecond() Checks if the instance is in the same second as the current moment next second. - * @method bool isLastSecond() Checks if the instance is in the same second as the current moment last second. - * @method bool isSameMicro(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMicro() Checks if the instance is in the same microsecond as the current moment. - * @method bool isNextMicro() Checks if the instance is in the same microsecond as the current moment next microsecond. - * @method bool isLastMicro() Checks if the instance is in the same microsecond as the current moment last microsecond. - * @method bool isSameMicrosecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMicrosecond() Checks if the instance is in the same microsecond as the current moment. - * @method bool isNextMicrosecond() Checks if the instance is in the same microsecond as the current moment next microsecond. - * @method bool isLastMicrosecond() Checks if the instance is in the same microsecond as the current moment last microsecond. - * @method bool isCurrentMonth() Checks if the instance is in the same month as the current moment. - * @method bool isNextMonth() Checks if the instance is in the same month as the current moment next month. - * @method bool isLastMonth() Checks if the instance is in the same month as the current moment last month. - * @method bool isCurrentQuarter() Checks if the instance is in the same quarter as the current moment. - * @method bool isNextQuarter() Checks if the instance is in the same quarter as the current moment next quarter. - * @method bool isLastQuarter() Checks if the instance is in the same quarter as the current moment last quarter. - * @method bool isSameDecade(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentDecade() Checks if the instance is in the same decade as the current moment. - * @method bool isNextDecade() Checks if the instance is in the same decade as the current moment next decade. - * @method bool isLastDecade() Checks if the instance is in the same decade as the current moment last decade. - * @method bool isSameCentury(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentCentury() Checks if the instance is in the same century as the current moment. - * @method bool isNextCentury() Checks if the instance is in the same century as the current moment next century. - * @method bool isLastCentury() Checks if the instance is in the same century as the current moment last century. - * @method bool isSameMillennium(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone). - * @method bool isCurrentMillennium() Checks if the instance is in the same millennium as the current moment. - * @method bool isNextMillennium() Checks if the instance is in the same millennium as the current moment next millennium. - * @method bool isLastMillennium() Checks if the instance is in the same millennium as the current moment last millennium. - * @method CarbonInterface years(int $value) Set current instance year to the given value. - * @method CarbonInterface year(int $value) Set current instance year to the given value. - * @method CarbonInterface setYears(int $value) Set current instance year to the given value. - * @method CarbonInterface setYear(int $value) Set current instance year to the given value. - * @method CarbonInterface months(int $value) Set current instance month to the given value. - * @method CarbonInterface month(int $value) Set current instance month to the given value. - * @method CarbonInterface setMonths(int $value) Set current instance month to the given value. - * @method CarbonInterface setMonth(int $value) Set current instance month to the given value. - * @method CarbonInterface days(int $value) Set current instance day to the given value. - * @method CarbonInterface day(int $value) Set current instance day to the given value. - * @method CarbonInterface setDays(int $value) Set current instance day to the given value. - * @method CarbonInterface setDay(int $value) Set current instance day to the given value. - * @method CarbonInterface hours(int $value) Set current instance hour to the given value. - * @method CarbonInterface hour(int $value) Set current instance hour to the given value. - * @method CarbonInterface setHours(int $value) Set current instance hour to the given value. - * @method CarbonInterface setHour(int $value) Set current instance hour to the given value. - * @method CarbonInterface minutes(int $value) Set current instance minute to the given value. - * @method CarbonInterface minute(int $value) Set current instance minute to the given value. - * @method CarbonInterface setMinutes(int $value) Set current instance minute to the given value. - * @method CarbonInterface setMinute(int $value) Set current instance minute to the given value. - * @method CarbonInterface seconds(int $value) Set current instance second to the given value. - * @method CarbonInterface second(int $value) Set current instance second to the given value. - * @method CarbonInterface setSeconds(int $value) Set current instance second to the given value. - * @method CarbonInterface setSecond(int $value) Set current instance second to the given value. - * @method CarbonInterface millis(int $value) Set current instance millisecond to the given value. - * @method CarbonInterface milli(int $value) Set current instance millisecond to the given value. - * @method CarbonInterface setMillis(int $value) Set current instance millisecond to the given value. - * @method CarbonInterface setMilli(int $value) Set current instance millisecond to the given value. - * @method CarbonInterface milliseconds(int $value) Set current instance millisecond to the given value. - * @method CarbonInterface millisecond(int $value) Set current instance millisecond to the given value. - * @method CarbonInterface setMilliseconds(int $value) Set current instance millisecond to the given value. - * @method CarbonInterface setMillisecond(int $value) Set current instance millisecond to the given value. - * @method CarbonInterface micros(int $value) Set current instance microsecond to the given value. - * @method CarbonInterface micro(int $value) Set current instance microsecond to the given value. - * @method CarbonInterface setMicros(int $value) Set current instance microsecond to the given value. - * @method CarbonInterface setMicro(int $value) Set current instance microsecond to the given value. - * @method CarbonInterface microseconds(int $value) Set current instance microsecond to the given value. - * @method CarbonInterface microsecond(int $value) Set current instance microsecond to the given value. - * @method CarbonInterface setMicroseconds(int $value) Set current instance microsecond to the given value. - * @method CarbonInterface setMicrosecond(int $value) Set current instance microsecond to the given value. - * @method CarbonInterface addYears(int $value = 1) Add years (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addYear() Add one year to the instance (using date interval). - * @method CarbonInterface subYears(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subYear() Sub one year to the instance (using date interval). - * @method CarbonInterface addYearsWithOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addYearWithOverflow() Add one year to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subYearsWithOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subYearWithOverflow() Sub one year to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addYearsWithoutOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addYearWithoutOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subYearsWithoutOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subYearWithoutOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addYearsWithNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addYearWithNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subYearsWithNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subYearWithNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addYearsNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addYearNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subYearsNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subYearNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMonths(int $value = 1) Add months (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addMonth() Add one month to the instance (using date interval). - * @method CarbonInterface subMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subMonth() Sub one month to the instance (using date interval). - * @method CarbonInterface addMonthsWithOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addMonthWithOverflow() Add one month to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subMonthsWithOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subMonthWithOverflow() Sub one month to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addMonthsWithoutOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMonthWithoutOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMonthsWithoutOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMonthWithoutOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMonthsWithNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMonthWithNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMonthsWithNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMonthWithNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMonthsNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMonthNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMonthsNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMonthNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addDays(int $value = 1) Add days (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addDay() Add one day to the instance (using date interval). - * @method CarbonInterface subDays(int $value = 1) Sub days (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subDay() Sub one day to the instance (using date interval). - * @method CarbonInterface addHours(int $value = 1) Add hours (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addHour() Add one hour to the instance (using date interval). - * @method CarbonInterface subHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subHour() Sub one hour to the instance (using date interval). - * @method CarbonInterface addMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addMinute() Add one minute to the instance (using date interval). - * @method CarbonInterface subMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subMinute() Sub one minute to the instance (using date interval). - * @method CarbonInterface addSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addSecond() Add one second to the instance (using date interval). - * @method CarbonInterface subSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subSecond() Sub one second to the instance (using date interval). - * @method CarbonInterface addMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addMilli() Add one millisecond to the instance (using date interval). - * @method CarbonInterface subMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subMilli() Sub one millisecond to the instance (using date interval). - * @method CarbonInterface addMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addMillisecond() Add one millisecond to the instance (using date interval). - * @method CarbonInterface subMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subMillisecond() Sub one millisecond to the instance (using date interval). - * @method CarbonInterface addMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addMicro() Add one microsecond to the instance (using date interval). - * @method CarbonInterface subMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subMicro() Sub one microsecond to the instance (using date interval). - * @method CarbonInterface addMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addMicrosecond() Add one microsecond to the instance (using date interval). - * @method CarbonInterface subMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subMicrosecond() Sub one microsecond to the instance (using date interval). - * @method CarbonInterface addMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addMillennium() Add one millennium to the instance (using date interval). - * @method CarbonInterface subMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subMillennium() Sub one millennium to the instance (using date interval). - * @method CarbonInterface addMillenniaWithOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addMillenniumWithOverflow() Add one millennium to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subMillenniaWithOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subMillenniumWithOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addMillenniaWithoutOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMillenniumWithoutOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMillenniaWithoutOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMillenniumWithoutOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMillenniaWithNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMillenniumWithNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMillenniaWithNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMillenniumWithNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMillenniaNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addMillenniumNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMillenniaNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subMillenniumNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addCentury() Add one century to the instance (using date interval). - * @method CarbonInterface subCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subCentury() Sub one century to the instance (using date interval). - * @method CarbonInterface addCenturiesWithOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addCenturyWithOverflow() Add one century to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subCenturiesWithOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subCenturyWithOverflow() Sub one century to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addCenturiesWithoutOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addCenturyWithoutOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subCenturiesWithoutOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subCenturyWithoutOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addCenturiesWithNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addCenturyWithNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subCenturiesWithNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subCenturyWithNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addCenturiesNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addCenturyNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subCenturiesNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subCenturyNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addDecade() Add one decade to the instance (using date interval). - * @method CarbonInterface subDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subDecade() Sub one decade to the instance (using date interval). - * @method CarbonInterface addDecadesWithOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addDecadeWithOverflow() Add one decade to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subDecadesWithOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subDecadeWithOverflow() Sub one decade to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addDecadesWithoutOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addDecadeWithoutOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subDecadesWithoutOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subDecadeWithoutOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addDecadesWithNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addDecadeWithNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subDecadesWithNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subDecadeWithNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addDecadesNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addDecadeNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subDecadesNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subDecadeNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addQuarter() Add one quarter to the instance (using date interval). - * @method CarbonInterface subQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subQuarter() Sub one quarter to the instance (using date interval). - * @method CarbonInterface addQuartersWithOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addQuarterWithOverflow() Add one quarter to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subQuartersWithOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface subQuarterWithOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly allowed. - * @method CarbonInterface addQuartersWithoutOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addQuarterWithoutOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subQuartersWithoutOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subQuarterWithoutOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addQuartersWithNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addQuarterWithNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subQuartersWithNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subQuarterWithNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addQuartersNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addQuarterNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subQuartersNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface subQuarterNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. - * @method CarbonInterface addWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addWeek() Add one week to the instance (using date interval). - * @method CarbonInterface subWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subWeek() Sub one week to the instance (using date interval). - * @method CarbonInterface addWeekdays(int $value = 1) Add weekdays (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface addWeekday() Add one weekday to the instance (using date interval). - * @method CarbonInterface subWeekdays(int $value = 1) Sub weekdays (the $value count passed in) to the instance (using date interval). - * @method CarbonInterface subWeekday() Sub one weekday to the instance (using date interval). - * @method CarbonInterface addRealMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealMicro() Add one microsecond to the instance (using timestamp). - * @method CarbonInterface subRealMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealMicro() Sub one microsecond to the instance (using timestamp). - * @method CarbonPeriod microsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. - * @method CarbonInterface addRealMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealMicrosecond() Add one microsecond to the instance (using timestamp). - * @method CarbonInterface subRealMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealMicrosecond() Sub one microsecond to the instance (using timestamp). - * @method CarbonPeriod microsecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. - * @method CarbonInterface addRealMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealMilli() Add one millisecond to the instance (using timestamp). - * @method CarbonInterface subRealMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealMilli() Sub one millisecond to the instance (using timestamp). - * @method CarbonPeriod millisUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. - * @method CarbonInterface addRealMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealMillisecond() Add one millisecond to the instance (using timestamp). - * @method CarbonInterface subRealMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealMillisecond() Sub one millisecond to the instance (using timestamp). - * @method CarbonPeriod millisecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. - * @method CarbonInterface addRealSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealSecond() Add one second to the instance (using timestamp). - * @method CarbonInterface subRealSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealSecond() Sub one second to the instance (using timestamp). - * @method CarbonPeriod secondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given. - * @method CarbonInterface addRealMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealMinute() Add one minute to the instance (using timestamp). - * @method CarbonInterface subRealMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealMinute() Sub one minute to the instance (using timestamp). - * @method CarbonPeriod minutesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given. - * @method CarbonInterface addRealHours(int $value = 1) Add hours (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealHour() Add one hour to the instance (using timestamp). - * @method CarbonInterface subRealHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealHour() Sub one hour to the instance (using timestamp). - * @method CarbonPeriod hoursUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given. - * @method CarbonInterface addRealDays(int $value = 1) Add days (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealDay() Add one day to the instance (using timestamp). - * @method CarbonInterface subRealDays(int $value = 1) Sub days (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealDay() Sub one day to the instance (using timestamp). - * @method CarbonPeriod daysUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given. - * @method CarbonInterface addRealWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealWeek() Add one week to the instance (using timestamp). - * @method CarbonInterface subRealWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealWeek() Sub one week to the instance (using timestamp). - * @method CarbonPeriod weeksUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given. - * @method CarbonInterface addRealMonths(int $value = 1) Add months (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealMonth() Add one month to the instance (using timestamp). - * @method CarbonInterface subRealMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealMonth() Sub one month to the instance (using timestamp). - * @method CarbonPeriod monthsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given. - * @method CarbonInterface addRealQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealQuarter() Add one quarter to the instance (using timestamp). - * @method CarbonInterface subRealQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealQuarter() Sub one quarter to the instance (using timestamp). - * @method CarbonPeriod quartersUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given. - * @method CarbonInterface addRealYears(int $value = 1) Add years (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealYear() Add one year to the instance (using timestamp). - * @method CarbonInterface subRealYears(int $value = 1) Sub years (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealYear() Sub one year to the instance (using timestamp). - * @method CarbonPeriod yearsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given. - * @method CarbonInterface addRealDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealDecade() Add one decade to the instance (using timestamp). - * @method CarbonInterface subRealDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealDecade() Sub one decade to the instance (using timestamp). - * @method CarbonPeriod decadesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given. - * @method CarbonInterface addRealCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealCentury() Add one century to the instance (using timestamp). - * @method CarbonInterface subRealCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealCentury() Sub one century to the instance (using timestamp). - * @method CarbonPeriod centuriesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given. - * @method CarbonInterface addRealMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface addRealMillennium() Add one millennium to the instance (using timestamp). - * @method CarbonInterface subRealMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using timestamp). - * @method CarbonInterface subRealMillennium() Sub one millennium to the instance (using timestamp). - * @method CarbonPeriod millenniaUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given. - * @method CarbonInterface roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. - * @method CarbonInterface roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. - * @method CarbonInterface floorYear(float $precision = 1) Truncate the current instance year with given precision. - * @method CarbonInterface floorYears(float $precision = 1) Truncate the current instance year with given precision. - * @method CarbonInterface ceilYear(float $precision = 1) Ceil the current instance year with given precision. - * @method CarbonInterface ceilYears(float $precision = 1) Ceil the current instance year with given precision. - * @method CarbonInterface roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. - * @method CarbonInterface roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. - * @method CarbonInterface floorMonth(float $precision = 1) Truncate the current instance month with given precision. - * @method CarbonInterface floorMonths(float $precision = 1) Truncate the current instance month with given precision. - * @method CarbonInterface ceilMonth(float $precision = 1) Ceil the current instance month with given precision. - * @method CarbonInterface ceilMonths(float $precision = 1) Ceil the current instance month with given precision. - * @method CarbonInterface roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method CarbonInterface roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. - * @method CarbonInterface floorDay(float $precision = 1) Truncate the current instance day with given precision. - * @method CarbonInterface floorDays(float $precision = 1) Truncate the current instance day with given precision. - * @method CarbonInterface ceilDay(float $precision = 1) Ceil the current instance day with given precision. - * @method CarbonInterface ceilDays(float $precision = 1) Ceil the current instance day with given precision. - * @method CarbonInterface roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. - * @method CarbonInterface roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. - * @method CarbonInterface floorHour(float $precision = 1) Truncate the current instance hour with given precision. - * @method CarbonInterface floorHours(float $precision = 1) Truncate the current instance hour with given precision. - * @method CarbonInterface ceilHour(float $precision = 1) Ceil the current instance hour with given precision. - * @method CarbonInterface ceilHours(float $precision = 1) Ceil the current instance hour with given precision. - * @method CarbonInterface roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. - * @method CarbonInterface roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. - * @method CarbonInterface floorMinute(float $precision = 1) Truncate the current instance minute with given precision. - * @method CarbonInterface floorMinutes(float $precision = 1) Truncate the current instance minute with given precision. - * @method CarbonInterface ceilMinute(float $precision = 1) Ceil the current instance minute with given precision. - * @method CarbonInterface ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision. - * @method CarbonInterface roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. - * @method CarbonInterface roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. - * @method CarbonInterface floorSecond(float $precision = 1) Truncate the current instance second with given precision. - * @method CarbonInterface floorSeconds(float $precision = 1) Truncate the current instance second with given precision. - * @method CarbonInterface ceilSecond(float $precision = 1) Ceil the current instance second with given precision. - * @method CarbonInterface ceilSeconds(float $precision = 1) Ceil the current instance second with given precision. - * @method CarbonInterface roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. - * @method CarbonInterface roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. - * @method CarbonInterface floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision. - * @method CarbonInterface floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision. - * @method CarbonInterface ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision. - * @method CarbonInterface ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision. - * @method CarbonInterface roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. - * @method CarbonInterface roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. - * @method CarbonInterface floorCentury(float $precision = 1) Truncate the current instance century with given precision. - * @method CarbonInterface floorCenturies(float $precision = 1) Truncate the current instance century with given precision. - * @method CarbonInterface ceilCentury(float $precision = 1) Ceil the current instance century with given precision. - * @method CarbonInterface ceilCenturies(float $precision = 1) Ceil the current instance century with given precision. - * @method CarbonInterface roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. - * @method CarbonInterface roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. - * @method CarbonInterface floorDecade(float $precision = 1) Truncate the current instance decade with given precision. - * @method CarbonInterface floorDecades(float $precision = 1) Truncate the current instance decade with given precision. - * @method CarbonInterface ceilDecade(float $precision = 1) Ceil the current instance decade with given precision. - * @method CarbonInterface ceilDecades(float $precision = 1) Ceil the current instance decade with given precision. - * @method CarbonInterface roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. - * @method CarbonInterface roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. - * @method CarbonInterface floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision. - * @method CarbonInterface floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision. - * @method CarbonInterface ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision. - * @method CarbonInterface ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision. - * @method CarbonInterface roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. - * @method CarbonInterface roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. - * @method CarbonInterface floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision. - * @method CarbonInterface floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision. - * @method CarbonInterface ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision. - * @method CarbonInterface ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision. - * @method CarbonInterface roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. - * @method CarbonInterface roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. - * @method CarbonInterface floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision. - * @method CarbonInterface floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision. - * @method CarbonInterface ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision. - * @method CarbonInterface ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision. - * @method string shortAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string shortRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string shortRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string shortRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * @method string longRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) - * - * - */ -trait Date -{ - use Boundaries; - use Comparison; - use Converter; - use Creator; - use Difference; - use Macro; - use MagicParameter; - use Modifiers; - use Mutability; - use ObjectInitialisation; - use Options; - use Rounding; - use Serialization; - use Test; - use Timestamp; - use Units; - use Week; - - /** - * Names of days of the week. - * - * @var array - */ - protected static $days = [ - // @call isDayOfWeek - CarbonInterface::SUNDAY => 'Sunday', - // @call isDayOfWeek - CarbonInterface::MONDAY => 'Monday', - // @call isDayOfWeek - CarbonInterface::TUESDAY => 'Tuesday', - // @call isDayOfWeek - CarbonInterface::WEDNESDAY => 'Wednesday', - // @call isDayOfWeek - CarbonInterface::THURSDAY => 'Thursday', - // @call isDayOfWeek - CarbonInterface::FRIDAY => 'Friday', - // @call isDayOfWeek - CarbonInterface::SATURDAY => 'Saturday', - ]; - - /** - * Will UTF8 encoding be used to print localized date/time ? - * - * @var bool - */ - protected static $utf8 = false; - - /** - * List of unit and magic methods associated as doc-comments. - * - * @var array - */ - protected static $units = [ - // @call setUnit - // @call addUnit - 'year', - // @call setUnit - // @call addUnit - 'month', - // @call setUnit - // @call addUnit - 'day', - // @call setUnit - // @call addUnit - 'hour', - // @call setUnit - // @call addUnit - 'minute', - // @call setUnit - // @call addUnit - 'second', - // @call setUnit - // @call addUnit - 'milli', - // @call setUnit - // @call addUnit - 'millisecond', - // @call setUnit - // @call addUnit - 'micro', - // @call setUnit - // @call addUnit - 'microsecond', - ]; - - /** - * Creates a DateTimeZone from a string, DateTimeZone or integer offset. - * - * @param DateTimeZone|string|int|null $object original value to get CarbonTimeZone from it. - * @param DateTimeZone|string|int|null $objectDump dump of the object for error messages. - * - * @throws InvalidTimeZoneException - * - * @return CarbonTimeZone|false - */ - protected static function safeCreateDateTimeZone($object, $objectDump = null) - { - return CarbonTimeZone::instance($object, $objectDump); - } - - /** - * Get the TimeZone associated with the Carbon instance (as CarbonTimeZone). - * - * @return CarbonTimeZone - * - * @link https://php.net/manual/en/datetime.gettimezone.php - */ - #[ReturnTypeWillChange] - public function getTimezone() - { - return CarbonTimeZone::instance(parent::getTimezone()); - } - - /** - * List of minimum and maximums for each unit. - * - * @param int $daysInMonth - * - * @return array - */ - protected static function getRangesByUnit(int $daysInMonth = 31): array - { - return [ - // @call roundUnit - 'year' => [1, 9999], - // @call roundUnit - 'month' => [1, static::MONTHS_PER_YEAR], - // @call roundUnit - 'day' => [1, $daysInMonth], - // @call roundUnit - 'hour' => [0, static::HOURS_PER_DAY - 1], - // @call roundUnit - 'minute' => [0, static::MINUTES_PER_HOUR - 1], - // @call roundUnit - 'second' => [0, static::SECONDS_PER_MINUTE - 1], - ]; - } - - /** - * Get a copy of the instance. - * - * @return static - */ - public function copy() - { - return clone $this; - } - - /** - * @alias copy - * - * Get a copy of the instance. - * - * @return static - */ - public function clone() - { - return clone $this; - } - - /** - * Clone the current instance if it's mutable. - * - * This method is convenient to ensure you don't mutate the initial object - * but avoid to make a useless copy of it if it's already immutable. - * - * @return static - */ - public function avoidMutation(): self - { - if ($this instanceof DateTimeImmutable) { - return $this; - } - - return clone $this; - } - - /** - * Returns a present instance in the same timezone. - * - * @return static - */ - public function nowWithSameTz() - { - return static::now($this->getTimezone()); - } - - /** - * Throws an exception if the given object is not a DateTime and does not implement DateTimeInterface. - * - * @param mixed $date - * @param string|array $other - * - * @throws InvalidTypeException - */ - protected static function expectDateTime($date, $other = []) - { - $message = 'Expected '; - foreach ((array) $other as $expect) { - $message .= "$expect, "; - } - - if (!$date instanceof DateTime && !$date instanceof DateTimeInterface) { - throw new InvalidTypeException( - $message.'DateTime or DateTimeInterface, '. - (\is_object($date) ? \get_class($date) : \gettype($date)).' given' - ); - } - } - - /** - * Return the Carbon instance passed through, a now instance in the same timezone - * if null given or parse the input if string given. - * - * @param Carbon|DateTimeInterface|string|null $date - * - * @return static - */ - protected function resolveCarbon($date = null) - { - if (!$date) { - return $this->nowWithSameTz(); - } - - if (\is_string($date)) { - return static::parse($date, $this->getTimezone()); - } - - static::expectDateTime($date, ['null', 'string']); - - return $date instanceof self ? $date : static::instance($date); - } - - /** - * Return the Carbon instance passed through, a now instance in UTC - * if null given or parse the input if string given (using current timezone - * then switching to UTC). - * - * @param Carbon|DateTimeInterface|string|null $date - * - * @return static - */ - protected function resolveUTC($date = null): self - { - if (!$date) { - return static::now('UTC'); - } - - if (\is_string($date)) { - return static::parse($date, $this->getTimezone())->utc(); - } - - static::expectDateTime($date, ['null', 'string']); - - return $date instanceof self ? $date : static::instance($date)->utc(); - } - - /** - * Return the Carbon instance passed through, a now instance in the same timezone - * if null given or parse the input if string given. - * - * @param Carbon|\Carbon\CarbonPeriod|\Carbon\CarbonInterval|\DateInterval|\DatePeriod|DateTimeInterface|string|null $date - * - * @return static - */ - public function carbonize($date = null) - { - if ($date instanceof DateInterval) { - return $this->avoidMutation()->add($date); - } - - if ($date instanceof DatePeriod || $date instanceof CarbonPeriod) { - $date = $date->getStartDate(); - } - - return $this->resolveCarbon($date); - } - - /////////////////////////////////////////////////////////////////// - ///////////////////////// GETTERS AND SETTERS ///////////////////// - /////////////////////////////////////////////////////////////////// - - /** - * Get a part of the Carbon object - * - * @param string $name - * - * @throws UnknownGetterException - * - * @return string|int|bool|DateTimeZone|null - */ - public function __get($name) - { - return $this->get($name); - } - - /** - * Get a part of the Carbon object - * - * @param string $name - * - * @throws UnknownGetterException - * - * @return string|int|bool|DateTimeZone|null - */ - public function get($name) - { - static $formats = [ - // @property int - 'year' => 'Y', - // @property int - 'yearIso' => 'o', - // @property int - // @call isSameUnit - 'month' => 'n', - // @property int - 'day' => 'j', - // @property int - 'hour' => 'G', - // @property int - 'minute' => 'i', - // @property int - 'second' => 's', - // @property int - 'micro' => 'u', - // @property int - 'microsecond' => 'u', - // @property-read int 0 (for Sunday) through 6 (for Saturday) - 'dayOfWeek' => 'w', - // @property-read int 1 (for Monday) through 7 (for Sunday) - 'dayOfWeekIso' => 'N', - // @property-read int ISO-8601 week number of year, weeks starting on Monday - 'weekOfYear' => 'W', - // @property-read int number of days in the given month - 'daysInMonth' => 't', - // @property int|float|string seconds since the Unix Epoch - 'timestamp' => 'U', - // @property-read string "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark) - 'latinMeridiem' => 'a', - // @property-read string "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark) - 'latinUpperMeridiem' => 'A', - // @property string the day of week in English - 'englishDayOfWeek' => 'l', - // @property string the abbreviated day of week in English - 'shortEnglishDayOfWeek' => 'D', - // @property string the month in English - 'englishMonth' => 'F', - // @property string the abbreviated month in English - 'shortEnglishMonth' => 'M', - // @property string the day of week in current locale LC_TIME - // @deprecated - // reason: It uses OS language package and strftime() which is deprecated since PHP 8.1. - // replacement: Use ->isoFormat('MMM') instead. - // since: 2.55.0 - 'localeDayOfWeek' => '%A', - // @property string the abbreviated day of week in current locale LC_TIME - // @deprecated - // reason: It uses OS language package and strftime() which is deprecated since PHP 8.1. - // replacement: Use ->isoFormat('dddd') instead. - // since: 2.55.0 - 'shortLocaleDayOfWeek' => '%a', - // @property string the month in current locale LC_TIME - // @deprecated - // reason: It uses OS language package and strftime() which is deprecated since PHP 8.1. - // replacement: Use ->isoFormat('ddd') instead. - // since: 2.55.0 - 'localeMonth' => '%B', - // @property string the abbreviated month in current locale LC_TIME - // @deprecated - // reason: It uses OS language package and strftime() which is deprecated since PHP 8.1. - // replacement: Use ->isoFormat('MMMM') instead. - // since: 2.55.0 - 'shortLocaleMonth' => '%b', - // @property-read string $timezoneAbbreviatedName the current timezone abbreviated name - 'timezoneAbbreviatedName' => 'T', - // @property-read string $tzAbbrName alias of $timezoneAbbreviatedName - 'tzAbbrName' => 'T', - ]; - - switch (true) { - case isset($formats[$name]): - $format = $formats[$name]; - $method = str_starts_with($format, '%') ? 'formatLocalized' : 'rawFormat'; - $value = $this->$method($format); - - return is_numeric($value) ? (int) $value : $value; - - // @property-read string long name of weekday translated according to Carbon locale, in english if no translation available for current language - case $name === 'dayName': - return $this->getTranslatedDayName(); - // @property-read string short name of weekday translated according to Carbon locale, in english if no translation available for current language - case $name === 'shortDayName': - return $this->getTranslatedShortDayName(); - // @property-read string very short name of weekday translated according to Carbon locale, in english if no translation available for current language - case $name === 'minDayName': - return $this->getTranslatedMinDayName(); - // @property-read string long name of month translated according to Carbon locale, in english if no translation available for current language - case $name === 'monthName': - return $this->getTranslatedMonthName(); - // @property-read string short name of month translated according to Carbon locale, in english if no translation available for current language - case $name === 'shortMonthName': - return $this->getTranslatedShortMonthName(); - // @property-read string lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language - case $name === 'meridiem': - return $this->meridiem(true); - // @property-read string uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language - case $name === 'upperMeridiem': - return $this->meridiem(); - // @property-read int current hour from 1 to 24 - case $name === 'noZeroHour': - return $this->hour ?: 24; - // @property int - case $name === 'milliseconds': - // @property int - case $name === 'millisecond': - // @property int - case $name === 'milli': - return (int) floor(((int) $this->rawFormat('u')) / 1000); - - // @property int 1 through 53 - case $name === 'week': - return (int) $this->week(); - - // @property int 1 through 53 - case $name === 'isoWeek': - return (int) $this->isoWeek(); - - // @property int year according to week format - case $name === 'weekYear': - return (int) $this->weekYear(); - - // @property int year according to ISO week format - case $name === 'isoWeekYear': - return (int) $this->isoWeekYear(); - - // @property-read int 51 through 53 - case $name === 'weeksInYear': - return $this->weeksInYear(); - - // @property-read int 51 through 53 - case $name === 'isoWeeksInYear': - return $this->isoWeeksInYear(); - - // @property-read int 1 through 5 - case $name === 'weekOfMonth': - return (int) ceil($this->day / static::DAYS_PER_WEEK); - - // @property-read int 1 through 5 - case $name === 'weekNumberInMonth': - return (int) ceil(($this->day + $this->avoidMutation()->startOfMonth()->dayOfWeekIso - 1) / static::DAYS_PER_WEEK); - - // @property-read int 0 through 6 - case $name === 'firstWeekDay': - return $this->localTranslator ? ($this->getTranslationMessage('first_day_of_week') ?? 0) : static::getWeekStartsAt(); - - // @property-read int 0 through 6 - case $name === 'lastWeekDay': - return $this->localTranslator ? (($this->getTranslationMessage('first_day_of_week') ?? 0) + static::DAYS_PER_WEEK - 1) % static::DAYS_PER_WEEK : static::getWeekEndsAt(); - - // @property int 1 through 366 - case $name === 'dayOfYear': - return 1 + (int) ($this->rawFormat('z')); - - // @property-read int 365 or 366 - case $name === 'daysInYear': - return $this->isLeapYear() ? 366 : 365; - - // @property int does a diffInYears() with default parameters - case $name === 'age': - return $this->diffInYears(); - - // @property-read int the quarter of this instance, 1 - 4 - // @call isSameUnit - case $name === 'quarter': - return (int) ceil($this->month / static::MONTHS_PER_QUARTER); - - // @property-read int the decade of this instance - // @call isSameUnit - case $name === 'decade': - return (int) ceil($this->year / static::YEARS_PER_DECADE); - - // @property-read int the century of this instance - // @call isSameUnit - case $name === 'century': - $factor = 1; - $year = $this->year; - if ($year < 0) { - $year = -$year; - $factor = -1; - } - - return (int) ($factor * ceil($year / static::YEARS_PER_CENTURY)); - - // @property-read int the millennium of this instance - // @call isSameUnit - case $name === 'millennium': - $factor = 1; - $year = $this->year; - if ($year < 0) { - $year = -$year; - $factor = -1; - } - - return (int) ($factor * ceil($year / static::YEARS_PER_MILLENNIUM)); - - // @property int the timezone offset in seconds from UTC - case $name === 'offset': - return $this->getOffset(); - - // @property int the timezone offset in minutes from UTC - case $name === 'offsetMinutes': - return $this->getOffset() / static::SECONDS_PER_MINUTE; - - // @property int the timezone offset in hours from UTC - case $name === 'offsetHours': - return $this->getOffset() / static::SECONDS_PER_MINUTE / static::MINUTES_PER_HOUR; - - // @property-read bool daylight savings time indicator, true if DST, false otherwise - case $name === 'dst': - return $this->rawFormat('I') === '1'; - - // @property-read bool checks if the timezone is local, true if local, false otherwise - case $name === 'local': - return $this->getOffset() === $this->avoidMutation()->setTimezone(date_default_timezone_get())->getOffset(); - - // @property-read bool checks if the timezone is UTC, true if UTC, false otherwise - case $name === 'utc': - return $this->getOffset() === 0; - - // @property CarbonTimeZone $timezone the current timezone - // @property CarbonTimeZone $tz alias of $timezone - case $name === 'timezone' || $name === 'tz': - return CarbonTimeZone::instance($this->getTimezone()); - - // @property-read string $timezoneName the current timezone name - // @property-read string $tzName alias of $timezoneName - case $name === 'timezoneName' || $name === 'tzName': - return $this->getTimezone()->getName(); - - // @property-read string locale of the current instance - case $name === 'locale': - return $this->getTranslatorLocale(); - - default: - $macro = $this->getLocalMacro('get'.ucfirst($name)); - - if ($macro) { - return $this->executeCallableWithContext($macro); - } - - throw new UnknownGetterException($name); - } - } - - /** - * Check if an attribute exists on the object - * - * @param string $name - * - * @return bool - */ - public function __isset($name) - { - try { - $this->__get($name); - } catch (UnknownGetterException | ReflectionException $e) { - return false; - } - - return true; - } - - /** - * Set a part of the Carbon object - * - * @param string $name - * @param string|int|DateTimeZone $value - * - * @throws UnknownSetterException|ReflectionException - * - * @return void - */ - public function __set($name, $value) - { - if ($this->constructedObjectId === spl_object_hash($this)) { - $this->set($name, $value); - - return; - } - - $this->$name = $value; - } - - /** - * Set a part of the Carbon object - * - * @param string|array $name - * @param string|int|DateTimeZone $value - * - * @throws ImmutableException|UnknownSetterException - * - * @return $this - */ - public function set($name, $value = null) - { - if ($this->isImmutable()) { - throw new ImmutableException(sprintf('%s class', static::class)); - } - - if (\is_array($name)) { - foreach ($name as $key => $value) { - $this->set($key, $value); - } - - return $this; - } - - switch ($name) { - case 'milliseconds': - case 'millisecond': - case 'milli': - case 'microseconds': - case 'microsecond': - case 'micro': - if (str_starts_with($name, 'milli')) { - $value *= 1000; - } - - while ($value < 0) { - $this->subSecond(); - $value += static::MICROSECONDS_PER_SECOND; - } - - while ($value >= static::MICROSECONDS_PER_SECOND) { - $this->addSecond(); - $value -= static::MICROSECONDS_PER_SECOND; - } - - $this->modify($this->rawFormat('H:i:s.').str_pad((string) round($value), 6, '0', STR_PAD_LEFT)); - - break; - - case 'year': - case 'month': - case 'day': - case 'hour': - case 'minute': - case 'second': - [$year, $month, $day, $hour, $minute, $second] = array_map('intval', explode('-', $this->rawFormat('Y-n-j-G-i-s'))); - $$name = $value; - $this->setDateTime($year, $month, $day, $hour, $minute, $second); - - break; - - case 'week': - $this->week($value); - - break; - - case 'isoWeek': - $this->isoWeek($value); - - break; - - case 'weekYear': - $this->weekYear($value); - - break; - - case 'isoWeekYear': - $this->isoWeekYear($value); - - break; - - case 'dayOfYear': - $this->addDays($value - $this->dayOfYear); - - break; - - case 'timestamp': - $this->setTimestamp($value); - - break; - - case 'offset': - $this->setTimezone(static::safeCreateDateTimeZone($value / static::SECONDS_PER_MINUTE / static::MINUTES_PER_HOUR)); - - break; - - case 'offsetMinutes': - $this->setTimezone(static::safeCreateDateTimeZone($value / static::MINUTES_PER_HOUR)); - - break; - - case 'offsetHours': - $this->setTimezone(static::safeCreateDateTimeZone($value)); - - break; - - case 'timezone': - case 'tz': - $this->setTimezone($value); - - break; - - default: - $macro = $this->getLocalMacro('set'.ucfirst($name)); - - if ($macro) { - $this->executeCallableWithContext($macro, $value); - - break; - } - - if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) { - throw new UnknownSetterException($name); - } - - $this->$name = $value; - } - - return $this; - } - - protected function getTranslatedFormByRegExp($baseKey, $keySuffix, $context, $subKey, $defaultValue) - { - $key = $baseKey.$keySuffix; - $standaloneKey = "{$key}_standalone"; - $baseTranslation = $this->getTranslationMessage($key); - - if ($baseTranslation instanceof Closure) { - return $baseTranslation($this, $context, $subKey) ?: $defaultValue; - } - - if ( - $this->getTranslationMessage("$standaloneKey.$subKey") && - (!$context || (($regExp = $this->getTranslationMessage("{$baseKey}_regexp")) && !preg_match($regExp, $context))) - ) { - $key = $standaloneKey; - } - - return $this->getTranslationMessage("$key.$subKey", null, $defaultValue); - } - - /** - * Get the translation of the current week day name (with context for languages with multiple forms). - * - * @param string|null $context whole format string - * @param string $keySuffix "", "_short" or "_min" - * @param string|null $defaultValue default value if translation missing - * - * @return string - */ - public function getTranslatedDayName($context = null, $keySuffix = '', $defaultValue = null) - { - return $this->getTranslatedFormByRegExp('weekdays', $keySuffix, $context, $this->dayOfWeek, $defaultValue ?: $this->englishDayOfWeek); - } - - /** - * Get the translation of the current short week day name (with context for languages with multiple forms). - * - * @param string|null $context whole format string - * - * @return string - */ - public function getTranslatedShortDayName($context = null) - { - return $this->getTranslatedDayName($context, '_short', $this->shortEnglishDayOfWeek); - } - - /** - * Get the translation of the current abbreviated week day name (with context for languages with multiple forms). - * - * @param string|null $context whole format string - * - * @return string - */ - public function getTranslatedMinDayName($context = null) - { - return $this->getTranslatedDayName($context, '_min', $this->shortEnglishDayOfWeek); - } - - /** - * Get the translation of the current month day name (with context for languages with multiple forms). - * - * @param string|null $context whole format string - * @param string $keySuffix "" or "_short" - * @param string|null $defaultValue default value if translation missing - * - * @return string - */ - public function getTranslatedMonthName($context = null, $keySuffix = '', $defaultValue = null) - { - return $this->getTranslatedFormByRegExp('months', $keySuffix, $context, $this->month - 1, $defaultValue ?: $this->englishMonth); - } - - /** - * Get the translation of the current short month day name (with context for languages with multiple forms). - * - * @param string|null $context whole format string - * - * @return string - */ - public function getTranslatedShortMonthName($context = null) - { - return $this->getTranslatedMonthName($context, '_short', $this->shortEnglishMonth); - } - - /** - * Get/set the day of year. - * - * @param int|null $value new value for day of year if using as setter. - * - * @return static|int - */ - public function dayOfYear($value = null) - { - $dayOfYear = $this->dayOfYear; - - return $value === null ? $dayOfYear : $this->addDays($value - $dayOfYear); - } - - /** - * Get/set the weekday from 0 (Sunday) to 6 (Saturday). - * - * @param int|null $value new value for weekday if using as setter. - * - * @return static|int - */ - public function weekday($value = null) - { - if ($value === null) { - return $this->dayOfWeek; - } - - $firstDay = (int) ($this->getTranslationMessage('first_day_of_week') ?? 0); - $dayOfWeek = ($this->dayOfWeek + 7 - $firstDay) % 7; - - return $this->addDays((($value + 7 - $firstDay) % 7) - $dayOfWeek); - } - - /** - * Get/set the ISO weekday from 1 (Monday) to 7 (Sunday). - * - * @param int|null $value new value for weekday if using as setter. - * - * @return static|int - */ - public function isoWeekday($value = null) - { - $dayOfWeekIso = $this->dayOfWeekIso; - - return $value === null ? $dayOfWeekIso : $this->addDays($value - $dayOfWeekIso); - } - - /** - * Return the number of days since the start of the week (using the current locale or the first parameter - * if explicitly given). - * - * @param int|null $weekStartsAt optional start allow you to specify the day of week to use to start the week, - * if not provided, start of week is inferred from the locale - * (Sunday for en_US, Monday for de_DE, etc.) - * - * @return int - */ - public function getDaysFromStartOfWeek(int $weekStartsAt = null): int - { - $firstDay = (int) ($weekStartsAt ?? $this->getTranslationMessage('first_day_of_week') ?? 0); - - return ($this->dayOfWeek + 7 - $firstDay) % 7; - } - - /** - * Set the day (keeping the current time) to the start of the week + the number of days passed as the first - * parameter. First day of week is driven by the locale unless explicitly set with the second parameter. - * - * @param int $numberOfDays number of days to add after the start of the current week - * @param int|null $weekStartsAt optional start allow you to specify the day of week to use to start the week, - * if not provided, start of week is inferred from the locale - * (Sunday for en_US, Monday for de_DE, etc.) - * - * @return static - */ - public function setDaysFromStartOfWeek(int $numberOfDays, int $weekStartsAt = null) - { - return $this->addDays($numberOfDays - $this->getDaysFromStartOfWeek($weekStartsAt)); - } - - /** - * Set any unit to a new value without overflowing current other unit given. - * - * @param string $valueUnit unit name to modify - * @param int $value new value for the input unit - * @param string $overflowUnit unit name to not overflow - * - * @return static - */ - public function setUnitNoOverflow($valueUnit, $value, $overflowUnit) - { - try { - $original = $this->avoidMutation(); - /** @var static $date */ - $date = $this->$valueUnit($value); - $end = $original->avoidMutation()->endOf($overflowUnit); - $start = $original->avoidMutation()->startOf($overflowUnit); - if ($date < $start) { - $date = $date->setDateTimeFrom($start); - } elseif ($date > $end) { - $date = $date->setDateTimeFrom($end); - } - - return $date; - } catch (BadMethodCallException | ReflectionException $exception) { - throw new UnknownUnitException($valueUnit, 0, $exception); - } - } - - /** - * Add any unit to a new value without overflowing current other unit given. - * - * @param string $valueUnit unit name to modify - * @param int $value amount to add to the input unit - * @param string $overflowUnit unit name to not overflow - * - * @return static - */ - public function addUnitNoOverflow($valueUnit, $value, $overflowUnit) - { - return $this->setUnitNoOverflow($valueUnit, $this->$valueUnit + $value, $overflowUnit); - } - - /** - * Subtract any unit to a new value without overflowing current other unit given. - * - * @param string $valueUnit unit name to modify - * @param int $value amount to subtract to the input unit - * @param string $overflowUnit unit name to not overflow - * - * @return static - */ - public function subUnitNoOverflow($valueUnit, $value, $overflowUnit) - { - return $this->setUnitNoOverflow($valueUnit, $this->$valueUnit - $value, $overflowUnit); - } - - /** - * Returns the minutes offset to UTC if no arguments passed, else set the timezone with given minutes shift passed. - * - * @param int|null $minuteOffset - * - * @return int|static - */ - public function utcOffset(int $minuteOffset = null) - { - if (\func_num_args() < 1) { - return $this->offsetMinutes; - } - - return $this->setTimezone(CarbonTimeZone::createFromMinuteOffset($minuteOffset)); - } - - /** - * Set the date with gregorian year, month and day numbers. - * - * @see https://php.net/manual/en/datetime.setdate.php - * - * @param int $year - * @param int $month - * @param int $day - * - * @return static - */ - #[ReturnTypeWillChange] - public function setDate($year, $month, $day) - { - return parent::setDate((int) $year, (int) $month, (int) $day); - } - - /** - * Set a date according to the ISO 8601 standard - using weeks and day offsets rather than specific dates. - * - * @see https://php.net/manual/en/datetime.setisodate.php - * - * @param int $year - * @param int $week - * @param int $day - * - * @return static - */ - #[ReturnTypeWillChange] - public function setISODate($year, $week, $day = 1) - { - return parent::setISODate((int) $year, (int) $week, (int) $day); - } - - /** - * Set the date and time all together. - * - * @param int $year - * @param int $month - * @param int $day - * @param int $hour - * @param int $minute - * @param int $second - * @param int $microseconds - * - * @return static - */ - public function setDateTime($year, $month, $day, $hour, $minute, $second = 0, $microseconds = 0) - { - return $this->setDate($year, $month, $day)->setTime((int) $hour, (int) $minute, (int) $second, (int) $microseconds); - } - - /** - * Resets the current time of the DateTime object to a different time. - * - * @see https://php.net/manual/en/datetime.settime.php - * - * @param int $hour - * @param int $minute - * @param int $second - * @param int $microseconds - * - * @return static - */ - #[ReturnTypeWillChange] - public function setTime($hour, $minute, $second = 0, $microseconds = 0) - { - return parent::setTime((int) $hour, (int) $minute, (int) $second, (int) $microseconds); - } - - /** - * Set the instance's timestamp. - * - * Timestamp input can be given as int, float or a string containing one or more numbers. - * - * @param float|int|string $unixTimestamp - * - * @return static - */ - #[ReturnTypeWillChange] - public function setTimestamp($unixTimestamp) - { - [$timestamp, $microseconds] = self::getIntegerAndDecimalParts($unixTimestamp); - - return parent::setTimestamp((int) $timestamp)->setMicroseconds((int) $microseconds); - } - - /** - * Set the time by time string. - * - * @param string $time - * - * @return static - */ - public function setTimeFromTimeString($time) - { - if (!str_contains($time, ':')) { - $time .= ':0'; - } - - return $this->modify($time); - } - - /** - * @alias setTimezone - * - * @param DateTimeZone|string $value - * - * @return static - */ - public function timezone($value) - { - return $this->setTimezone($value); - } - - /** - * Set the timezone or returns the timezone name if no arguments passed. - * - * @param DateTimeZone|string $value - * - * @return static|string - */ - public function tz($value = null) - { - if (\func_num_args() < 1) { - return $this->tzName; - } - - return $this->setTimezone($value); - } - - /** - * Set the instance's timezone from a string or object. - * - * @param DateTimeZone|string $value - * - * @return static - */ - #[ReturnTypeWillChange] - public function setTimezone($value) - { - $tz = static::safeCreateDateTimeZone($value); - - if ($tz === false && !self::isStrictModeEnabled()) { - $tz = new CarbonTimeZone(); - } - - return parent::setTimezone($tz); - } - - /** - * Set the instance's timezone from a string or object and add/subtract the offset difference. - * - * @param DateTimeZone|string $value - * - * @return static - */ - public function shiftTimezone($value) - { - $dateTimeString = $this->format('Y-m-d H:i:s.u'); - - return $this - ->setTimezone($value) - ->modify($dateTimeString); - } - - /** - * Set the instance's timezone to UTC. - * - * @return static - */ - public function utc() - { - return $this->setTimezone('UTC'); - } - - /** - * Set the year, month, and date for this instance to that of the passed instance. - * - * @param Carbon|DateTimeInterface $date now if null - * - * @return static - */ - public function setDateFrom($date = null) - { - $date = $this->resolveCarbon($date); - - return $this->setDate($date->year, $date->month, $date->day); - } - - /** - * Set the hour, minute, second and microseconds for this instance to that of the passed instance. - * - * @param Carbon|DateTimeInterface $date now if null - * - * @return static - */ - public function setTimeFrom($date = null) - { - $date = $this->resolveCarbon($date); - - return $this->setTime($date->hour, $date->minute, $date->second, $date->microsecond); - } - - /** - * Set the date and time for this instance to that of the passed instance. - * - * @param Carbon|DateTimeInterface $date - * - * @return static - */ - public function setDateTimeFrom($date = null) - { - $date = $this->resolveCarbon($date); - - return $this->modify($date->rawFormat('Y-m-d H:i:s.u')); - } - - /** - * Get the days of the week - * - * @return array - */ - public static function getDays() - { - return static::$days; - } - - /////////////////////////////////////////////////////////////////// - /////////////////////// WEEK SPECIAL DAYS ///////////////////////// - /////////////////////////////////////////////////////////////////// - - private static function getFirstDayOfWeek(): int - { - return (int) static::getTranslationMessageWith( - static::getTranslator(), - 'first_day_of_week' - ); - } - - /** - * Get the first day of week - * - * @return int - */ - public static function getWeekStartsAt() - { - if (static::$weekStartsAt === static::WEEK_DAY_AUTO) { - return self::getFirstDayOfWeek(); - } - - return static::$weekStartsAt; - } - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * Use $weekEndsAt optional parameter instead when using endOfWeek method. You can also use the - * 'first_day_of_week' locale setting to change the start of week according to current locale - * selected and implicitly the end of week. - * - * Set the first day of week - * - * @param int|string $day week start day (or 'auto' to get the first day of week from Carbon::getLocale() culture). - * - * @return void - */ - public static function setWeekStartsAt($day) - { - static::$weekStartsAt = $day === static::WEEK_DAY_AUTO ? $day : max(0, (7 + $day) % 7); - } - - /** - * Get the last day of week - * - * @return int - */ - public static function getWeekEndsAt() - { - if (static::$weekStartsAt === static::WEEK_DAY_AUTO) { - return (int) (static::DAYS_PER_WEEK - 1 + self::getFirstDayOfWeek()) % static::DAYS_PER_WEEK; - } - - return static::$weekEndsAt; - } - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * Use $weekStartsAt optional parameter instead when using startOfWeek, floorWeek, ceilWeek - * or roundWeek method. You can also use the 'first_day_of_week' locale setting to change the - * start of week according to current locale selected and implicitly the end of week. - * - * Set the last day of week - * - * @param int|string $day week end day (or 'auto' to get the day before the first day of week - * from Carbon::getLocale() culture). - * - * @return void - */ - public static function setWeekEndsAt($day) - { - static::$weekEndsAt = $day === static::WEEK_DAY_AUTO ? $day : max(0, (7 + $day) % 7); - } - - /** - * Get weekend days - * - * @return array - */ - public static function getWeekendDays() - { - return static::$weekendDays; - } - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather consider week-end is always saturday and sunday, and if you have some custom - * week-end days to handle, give to those days an other name and create a macro for them: - * - * ``` - * Carbon::macro('isDayOff', function ($date) { - * return $date->isSunday() || $date->isMonday(); - * }); - * Carbon::macro('isNotDayOff', function ($date) { - * return !$date->isDayOff(); - * }); - * if ($someDate->isDayOff()) ... - * if ($someDate->isNotDayOff()) ... - * // Add 5 not-off days - * $count = 5; - * while ($someDate->isDayOff() || ($count-- > 0)) { - * $someDate->addDay(); - * } - * ``` - * - * Set weekend days - * - * @param array $days - * - * @return void - */ - public static function setWeekendDays($days) - { - static::$weekendDays = $days; - } - - /** - * Determine if a time string will produce a relative date. - * - * @param string $time - * - * @return bool true if time match a relative date, false if absolute or invalid time string - */ - public static function hasRelativeKeywords($time) - { - if (!$time || strtotime($time) === false) { - return false; - } - - $date1 = new DateTime('2000-01-01T00:00:00Z'); - $date1->modify($time); - $date2 = new DateTime('2001-12-25T00:00:00Z'); - $date2->modify($time); - - return $date1 != $date2; - } - - /////////////////////////////////////////////////////////////////// - /////////////////////// STRING FORMATTING ///////////////////////// - /////////////////////////////////////////////////////////////////// - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use UTF-8 language packages on every machine. - * - * Set if UTF8 will be used for localized date/time. - * - * @param bool $utf8 - */ - public static function setUtf8($utf8) - { - static::$utf8 = $utf8; - } - - /** - * Format the instance with the current locale. You can set the current - * locale using setlocale() https://php.net/setlocale. - * - * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1. - * Use ->isoFormat() instead. - * Deprecated since 2.55.0 - * - * @param string $format - * - * @return string - */ - public function formatLocalized($format) - { - // Check for Windows to find and replace the %e modifier correctly. - if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { - $format = preg_replace('#(?toDateTimeString()); - $formatted = ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) - ? strftime($format, $time) - : @strftime($format, $time); - - return static::$utf8 - ? ( - \function_exists('mb_convert_encoding') - ? mb_convert_encoding($formatted, 'UTF-8', mb_list_encodings()) - : utf8_encode($formatted) - ) - : $formatted; - } - - /** - * Returns list of locale formats for ISO formatting. - * - * @param string|null $locale current locale used if null - * - * @return array - */ - public function getIsoFormats($locale = null) - { - return [ - 'LT' => $this->getTranslationMessage('formats.LT', $locale, 'h:mm A'), - 'LTS' => $this->getTranslationMessage('formats.LTS', $locale, 'h:mm:ss A'), - 'L' => $this->getTranslationMessage('formats.L', $locale, 'MM/DD/YYYY'), - 'LL' => $this->getTranslationMessage('formats.LL', $locale, 'MMMM D, YYYY'), - 'LLL' => $this->getTranslationMessage('formats.LLL', $locale, 'MMMM D, YYYY h:mm A'), - 'LLLL' => $this->getTranslationMessage('formats.LLLL', $locale, 'dddd, MMMM D, YYYY h:mm A'), - 'l' => $this->getTranslationMessage('formats.l', $locale), - 'll' => $this->getTranslationMessage('formats.ll', $locale), - 'lll' => $this->getTranslationMessage('formats.lll', $locale), - 'llll' => $this->getTranslationMessage('formats.llll', $locale), - ]; - } - - /** - * Returns list of calendar formats for ISO formatting. - * - * @param string|null $locale current locale used if null - * - * @return array - */ - public function getCalendarFormats($locale = null) - { - return [ - 'sameDay' => $this->getTranslationMessage('calendar.sameDay', $locale, '[Today at] LT'), - 'nextDay' => $this->getTranslationMessage('calendar.nextDay', $locale, '[Tomorrow at] LT'), - 'nextWeek' => $this->getTranslationMessage('calendar.nextWeek', $locale, 'dddd [at] LT'), - 'lastDay' => $this->getTranslationMessage('calendar.lastDay', $locale, '[Yesterday at] LT'), - 'lastWeek' => $this->getTranslationMessage('calendar.lastWeek', $locale, '[Last] dddd [at] LT'), - 'sameElse' => $this->getTranslationMessage('calendar.sameElse', $locale, 'L'), - ]; - } - - /** - * Returns list of locale units for ISO formatting. - * - * @return array - */ - public static function getIsoUnits() - { - static $units = null; - - if ($units === null) { - $units = [ - 'OD' => ['getAltNumber', ['day']], - 'OM' => ['getAltNumber', ['month']], - 'OY' => ['getAltNumber', ['year']], - 'OH' => ['getAltNumber', ['hour']], - 'Oh' => ['getAltNumber', ['h']], - 'Om' => ['getAltNumber', ['minute']], - 'Os' => ['getAltNumber', ['second']], - 'D' => 'day', - 'DD' => ['rawFormat', ['d']], - 'Do' => ['ordinal', ['day', 'D']], - 'd' => 'dayOfWeek', - 'dd' => function (CarbonInterface $date, $originalFormat = null) { - return $date->getTranslatedMinDayName($originalFormat); - }, - 'ddd' => function (CarbonInterface $date, $originalFormat = null) { - return $date->getTranslatedShortDayName($originalFormat); - }, - 'dddd' => function (CarbonInterface $date, $originalFormat = null) { - return $date->getTranslatedDayName($originalFormat); - }, - 'DDD' => 'dayOfYear', - 'DDDD' => ['getPaddedUnit', ['dayOfYear', 3]], - 'DDDo' => ['ordinal', ['dayOfYear', 'DDD']], - 'e' => ['weekday', []], - 'E' => 'dayOfWeekIso', - 'H' => ['rawFormat', ['G']], - 'HH' => ['rawFormat', ['H']], - 'h' => ['rawFormat', ['g']], - 'hh' => ['rawFormat', ['h']], - 'k' => 'noZeroHour', - 'kk' => ['getPaddedUnit', ['noZeroHour']], - 'hmm' => ['rawFormat', ['gi']], - 'hmmss' => ['rawFormat', ['gis']], - 'Hmm' => ['rawFormat', ['Gi']], - 'Hmmss' => ['rawFormat', ['Gis']], - 'm' => 'minute', - 'mm' => ['rawFormat', ['i']], - 'a' => 'meridiem', - 'A' => 'upperMeridiem', - 's' => 'second', - 'ss' => ['getPaddedUnit', ['second']], - 'S' => function (CarbonInterface $date) { - return (string) floor($date->micro / 100000); - }, - 'SS' => function (CarbonInterface $date) { - return str_pad((string) floor($date->micro / 10000), 2, '0', STR_PAD_LEFT); - }, - 'SSS' => function (CarbonInterface $date) { - return str_pad((string) floor($date->micro / 1000), 3, '0', STR_PAD_LEFT); - }, - 'SSSS' => function (CarbonInterface $date) { - return str_pad((string) floor($date->micro / 100), 4, '0', STR_PAD_LEFT); - }, - 'SSSSS' => function (CarbonInterface $date) { - return str_pad((string) floor($date->micro / 10), 5, '0', STR_PAD_LEFT); - }, - 'SSSSSS' => ['getPaddedUnit', ['micro', 6]], - 'SSSSSSS' => function (CarbonInterface $date) { - return str_pad((string) floor($date->micro * 10), 7, '0', STR_PAD_LEFT); - }, - 'SSSSSSSS' => function (CarbonInterface $date) { - return str_pad((string) floor($date->micro * 100), 8, '0', STR_PAD_LEFT); - }, - 'SSSSSSSSS' => function (CarbonInterface $date) { - return str_pad((string) floor($date->micro * 1000), 9, '0', STR_PAD_LEFT); - }, - 'M' => 'month', - 'MM' => ['rawFormat', ['m']], - 'MMM' => function (CarbonInterface $date, $originalFormat = null) { - $month = $date->getTranslatedShortMonthName($originalFormat); - $suffix = $date->getTranslationMessage('mmm_suffix'); - if ($suffix && $month !== $date->monthName) { - $month .= $suffix; - } - - return $month; - }, - 'MMMM' => function (CarbonInterface $date, $originalFormat = null) { - return $date->getTranslatedMonthName($originalFormat); - }, - 'Mo' => ['ordinal', ['month', 'M']], - 'Q' => 'quarter', - 'Qo' => ['ordinal', ['quarter', 'M']], - 'G' => 'isoWeekYear', - 'GG' => ['getPaddedUnit', ['isoWeekYear']], - 'GGG' => ['getPaddedUnit', ['isoWeekYear', 3]], - 'GGGG' => ['getPaddedUnit', ['isoWeekYear', 4]], - 'GGGGG' => ['getPaddedUnit', ['isoWeekYear', 5]], - 'g' => 'weekYear', - 'gg' => ['getPaddedUnit', ['weekYear']], - 'ggg' => ['getPaddedUnit', ['weekYear', 3]], - 'gggg' => ['getPaddedUnit', ['weekYear', 4]], - 'ggggg' => ['getPaddedUnit', ['weekYear', 5]], - 'W' => 'isoWeek', - 'WW' => ['getPaddedUnit', ['isoWeek']], - 'Wo' => ['ordinal', ['isoWeek', 'W']], - 'w' => 'week', - 'ww' => ['getPaddedUnit', ['week']], - 'wo' => ['ordinal', ['week', 'w']], - 'x' => ['valueOf', []], - 'X' => 'timestamp', - 'Y' => 'year', - 'YY' => ['rawFormat', ['y']], - 'YYYY' => ['getPaddedUnit', ['year', 4]], - 'YYYYY' => ['getPaddedUnit', ['year', 5]], - 'YYYYYY' => function (CarbonInterface $date) { - return ($date->year < 0 ? '' : '+').$date->getPaddedUnit('year', 6); - }, - 'z' => ['rawFormat', ['T']], - 'zz' => 'tzName', - 'Z' => ['getOffsetString', []], - 'ZZ' => ['getOffsetString', ['']], - ]; - } - - return $units; - } - - /** - * Returns a unit of the instance padded with 0 by default or any other string if specified. - * - * @param string $unit Carbon unit name - * @param int $length Length of the output (2 by default) - * @param string $padString String to use for padding ("0" by default) - * @param int $padType Side(s) to pad (STR_PAD_LEFT by default) - * - * @return string - */ - public function getPaddedUnit($unit, $length = 2, $padString = '0', $padType = STR_PAD_LEFT) - { - return ($this->$unit < 0 ? '-' : '').str_pad((string) abs($this->$unit), $length, $padString, $padType); - } - - /** - * Return a property with its ordinal. - * - * @param string $key - * @param string|null $period - * - * @return string - */ - public function ordinal(string $key, ?string $period = null): string - { - $number = $this->$key; - $result = $this->translate('ordinal', [ - ':number' => $number, - ':period' => (string) $period, - ]); - - return (string) ($result === 'ordinal' ? $number : $result); - } - - /** - * Return the meridiem of the current time in the current locale. - * - * @param bool $isLower if true, returns lowercase variant if available in the current locale. - * - * @return string - */ - public function meridiem(bool $isLower = false): string - { - $hour = $this->hour; - $index = $hour < 12 ? 0 : 1; - - if ($isLower) { - $key = 'meridiem.'.($index + 2); - $result = $this->translate($key); - - if ($result !== $key) { - return $result; - } - } - - $key = "meridiem.$index"; - $result = $this->translate($key); - if ($result === $key) { - $result = $this->translate('meridiem', [ - ':hour' => $this->hour, - ':minute' => $this->minute, - ':isLower' => $isLower, - ]); - - if ($result === 'meridiem') { - return $isLower ? $this->latinMeridiem : $this->latinUpperMeridiem; - } - } elseif ($isLower) { - $result = mb_strtolower($result); - } - - return $result; - } - - /** - * Returns the alternative number for a given date property if available in the current locale. - * - * @param string $key date property - * - * @return string - */ - public function getAltNumber(string $key): string - { - return $this->translateNumber(\strlen($key) > 1 ? $this->$key : $this->rawFormat('h')); - } - - /** - * Format in the current language using ISO replacement patterns. - * - * @param string $format - * @param string|null $originalFormat provide context if a chunk has been passed alone - * - * @return string - */ - public function isoFormat(string $format, ?string $originalFormat = null): string - { - $result = ''; - $length = mb_strlen($format); - $originalFormat = $originalFormat ?: $format; - $inEscaped = false; - $formats = null; - $units = null; - - for ($i = 0; $i < $length; $i++) { - $char = mb_substr($format, $i, 1); - - if ($char === '\\') { - $result .= mb_substr($format, ++$i, 1); - - continue; - } - - if ($char === '[' && !$inEscaped) { - $inEscaped = true; - - continue; - } - - if ($char === ']' && $inEscaped) { - $inEscaped = false; - - continue; - } - - if ($inEscaped) { - $result .= $char; - - continue; - } - - $input = mb_substr($format, $i); - - if (preg_match('/^(LTS|LT|l{1,4}|L{1,4})/', $input, $match)) { - if ($formats === null) { - $formats = $this->getIsoFormats(); - } - - $code = $match[0]; - $sequence = $formats[$code] ?? preg_replace_callback( - '/MMMM|MM|DD|dddd/', - function ($code) { - return mb_substr($code[0], 1); - }, - $formats[strtoupper($code)] ?? '' - ); - $rest = mb_substr($format, $i + mb_strlen($code)); - $format = mb_substr($format, 0, $i).$sequence.$rest; - $length = mb_strlen($format); - $input = $sequence.$rest; - } - - if (preg_match('/^'.CarbonInterface::ISO_FORMAT_REGEXP.'/', $input, $match)) { - $code = $match[0]; - - if ($units === null) { - $units = static::getIsoUnits(); - } - - $sequence = $units[$code] ?? ''; - - if ($sequence instanceof Closure) { - $sequence = $sequence($this, $originalFormat); - } elseif (\is_array($sequence)) { - try { - $sequence = $this->{$sequence[0]}(...$sequence[1]); - } catch (ReflectionException | InvalidArgumentException | BadMethodCallException $e) { - $sequence = ''; - } - } elseif (\is_string($sequence)) { - $sequence = $this->$sequence ?? $code; - } - - $format = mb_substr($format, 0, $i).$sequence.mb_substr($format, $i + mb_strlen($code)); - $i += mb_strlen((string) $sequence) - 1; - $length = mb_strlen($format); - $char = $sequence; - } - - $result .= $char; - } - - return $result; - } - - /** - * List of replacements from date() format to isoFormat(). - * - * @return array - */ - public static function getFormatsToIsoReplacements() - { - static $replacements = null; - - if ($replacements === null) { - $replacements = [ - 'd' => true, - 'D' => 'ddd', - 'j' => true, - 'l' => 'dddd', - 'N' => true, - 'S' => function ($date) { - $day = $date->rawFormat('j'); - - return str_replace((string) $day, '', $date->isoFormat('Do')); - }, - 'w' => true, - 'z' => true, - 'W' => true, - 'F' => 'MMMM', - 'm' => true, - 'M' => 'MMM', - 'n' => true, - 't' => true, - 'L' => true, - 'o' => true, - 'Y' => true, - 'y' => true, - 'a' => 'a', - 'A' => 'A', - 'B' => true, - 'g' => true, - 'G' => true, - 'h' => true, - 'H' => true, - 'i' => true, - 's' => true, - 'u' => true, - 'v' => true, - 'E' => true, - 'I' => true, - 'O' => true, - 'P' => true, - 'Z' => true, - 'c' => true, - 'r' => true, - 'U' => true, - 'T' => true, - ]; - } - - return $replacements; - } - - /** - * Format as ->format() do (using date replacements patterns from https://php.net/manual/en/function.date.php) - * but translate words whenever possible (months, day names, etc.) using the current locale. - * - * @param string $format - * - * @return string - */ - public function translatedFormat(string $format): string - { - $replacements = static::getFormatsToIsoReplacements(); - $context = ''; - $isoFormat = ''; - $length = mb_strlen($format); - - for ($i = 0; $i < $length; $i++) { - $char = mb_substr($format, $i, 1); - - if ($char === '\\') { - $replacement = mb_substr($format, $i, 2); - $isoFormat .= $replacement; - $i++; - - continue; - } - - if (!isset($replacements[$char])) { - $replacement = preg_match('/^[A-Za-z]$/', $char) ? "\\$char" : $char; - $isoFormat .= $replacement; - $context .= $replacement; - - continue; - } - - $replacement = $replacements[$char]; - - if ($replacement === true) { - static $contextReplacements = null; - - if ($contextReplacements === null) { - $contextReplacements = [ - 'm' => 'MM', - 'd' => 'DD', - 't' => 'D', - 'j' => 'D', - 'N' => 'e', - 'w' => 'e', - 'n' => 'M', - 'o' => 'YYYY', - 'Y' => 'YYYY', - 'y' => 'YY', - 'g' => 'h', - 'G' => 'H', - 'h' => 'hh', - 'H' => 'HH', - 'i' => 'mm', - 's' => 'ss', - ]; - } - - $isoFormat .= '['.$this->rawFormat($char).']'; - $context .= $contextReplacements[$char] ?? ' '; - - continue; - } - - if ($replacement instanceof Closure) { - $replacement = '['.$replacement($this).']'; - $isoFormat .= $replacement; - $context .= $replacement; - - continue; - } - - $isoFormat .= $replacement; - $context .= $replacement; - } - - return $this->isoFormat($isoFormat, $context); - } - - /** - * Returns the offset hour and minute formatted with +/- and a given separator (":" by default). - * For example, if the time zone is 9 hours 30 minutes, you'll get "+09:30", with "@@" as first - * argument, "+09@@30", with "" as first argument, "+0930". Negative offset will return something - * like "-12:00". - * - * @param string $separator string to place between hours and minutes (":" by default) - * - * @return string - */ - public function getOffsetString($separator = ':') - { - $second = $this->getOffset(); - $symbol = $second < 0 ? '-' : '+'; - $minute = abs($second) / static::SECONDS_PER_MINUTE; - $hour = str_pad((string) floor($minute / static::MINUTES_PER_HOUR), 2, '0', STR_PAD_LEFT); - $minute = str_pad((string) (((int) $minute) % static::MINUTES_PER_HOUR), 2, '0', STR_PAD_LEFT); - - return "$symbol$hour$separator$minute"; - } - - protected static function executeStaticCallable($macro, ...$parameters) - { - return static::bindMacroContext(null, function () use (&$macro, &$parameters) { - if ($macro instanceof Closure) { - $boundMacro = @Closure::bind($macro, null, static::class); - - return ($boundMacro ?: $macro)(...$parameters); - } - - return $macro(...$parameters); - }); - } - - /** - * Dynamically handle calls to the class. - * - * @param string $method magic method name called - * @param array $parameters parameters list - * - * @throws BadMethodCallException - * - * @return mixed - */ - public static function __callStatic($method, $parameters) - { - if (!static::hasMacro($method)) { - foreach (static::getGenericMacros() as $callback) { - try { - return static::executeStaticCallable($callback, $method, ...$parameters); - } catch (BadMethodCallException $exception) { - continue; - } - } - if (static::isStrictModeEnabled()) { - throw new UnknownMethodException(sprintf('%s::%s', static::class, $method)); - } - - return null; - } - - return static::executeStaticCallable(static::$globalMacros[$method], ...$parameters); - } - - /** - * Set specified unit to new given value. - * - * @param string $unit year, month, day, hour, minute, second or microsecond - * @param int $value new value for given unit - * - * @return static - */ - public function setUnit($unit, $value = null) - { - $unit = static::singularUnit($unit); - $dateUnits = ['year', 'month', 'day']; - if (\in_array($unit, $dateUnits)) { - return $this->setDate(...array_map(function ($name) use ($unit, $value) { - return (int) ($name === $unit ? $value : $this->$name); - }, $dateUnits)); - } - - $units = ['hour', 'minute', 'second', 'micro']; - if ($unit === 'millisecond' || $unit === 'milli') { - $value *= 1000; - $unit = 'micro'; - } elseif ($unit === 'microsecond') { - $unit = 'micro'; - } - - return $this->setTime(...array_map(function ($name) use ($unit, $value) { - return (int) ($name === $unit ? $value : $this->$name); - }, $units)); - } - - /** - * Returns standardized singular of a given singular/plural unit name (in English). - * - * @param string $unit - * - * @return string - */ - public static function singularUnit(string $unit): string - { - $unit = rtrim(mb_strtolower($unit), 's'); - - if ($unit === 'centurie') { - return 'century'; - } - - if ($unit === 'millennia') { - return 'millennium'; - } - - return $unit; - } - - /** - * Returns standardized plural of a given singular/plural unit name (in English). - * - * @param string $unit - * - * @return string - */ - public static function pluralUnit(string $unit): string - { - $unit = rtrim(strtolower($unit), 's'); - - if ($unit === 'century') { - return 'centuries'; - } - - if ($unit === 'millennium' || $unit === 'millennia') { - return 'millennia'; - } - - return "{$unit}s"; - } - - protected function executeCallable($macro, ...$parameters) - { - if ($macro instanceof Closure) { - $boundMacro = @$macro->bindTo($this, static::class) ?: @$macro->bindTo(null, static::class); - - return ($boundMacro ?: $macro)(...$parameters); - } - - return $macro(...$parameters); - } - - protected function executeCallableWithContext($macro, ...$parameters) - { - return static::bindMacroContext($this, function () use (&$macro, &$parameters) { - return $this->executeCallable($macro, ...$parameters); - }); - } - - protected static function getGenericMacros() - { - foreach (static::$globalGenericMacros as $list) { - foreach ($list as $macro) { - yield $macro; - } - } - } - - /** - * Dynamically handle calls to the class. - * - * @param string $method magic method name called - * @param array $parameters parameters list - * - * @throws UnknownMethodException|BadMethodCallException|ReflectionException|Throwable - * - * @return mixed - */ - public function __call($method, $parameters) - { - $diffSizes = [ - // @mode diffForHumans - 'short' => true, - // @mode diffForHumans - 'long' => false, - ]; - $diffSyntaxModes = [ - // @call diffForHumans - 'Absolute' => CarbonInterface::DIFF_ABSOLUTE, - // @call diffForHumans - 'Relative' => CarbonInterface::DIFF_RELATIVE_AUTO, - // @call diffForHumans - 'RelativeToNow' => CarbonInterface::DIFF_RELATIVE_TO_NOW, - // @call diffForHumans - 'RelativeToOther' => CarbonInterface::DIFF_RELATIVE_TO_OTHER, - ]; - $sizePattern = implode('|', array_keys($diffSizes)); - $syntaxPattern = implode('|', array_keys($diffSyntaxModes)); - - if (preg_match("/^(?$sizePattern)(?$syntaxPattern)DiffForHumans$/", $method, $match)) { - $dates = array_filter($parameters, function ($parameter) { - return $parameter instanceof DateTimeInterface; - }); - $other = null; - - if (\count($dates)) { - $key = key($dates); - $other = current($dates); - array_splice($parameters, $key, 1); - } - - return $this->diffForHumans($other, $diffSyntaxModes[$match['syntax']], $diffSizes[$match['size']], ...$parameters); - } - - $roundedValue = $this->callRoundMethod($method, $parameters); - - if ($roundedValue !== null) { - return $roundedValue; - } - - $unit = rtrim($method, 's'); - - if (str_starts_with($unit, 'is')) { - $word = substr($unit, 2); - - if (\in_array($word, static::$days, true)) { - return $this->isDayOfWeek($word); - } - - switch ($word) { - // @call is Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.) - case 'Utc': - case 'UTC': - return $this->utc; - // @call is Check if the current instance has non-UTC timezone. - case 'Local': - return $this->local; - // @call is Check if the current instance is a valid date. - case 'Valid': - return $this->year !== 0; - // @call is Check if the current instance is in a daylight saving time. - case 'DST': - return $this->dst; - } - } - - $action = substr($unit, 0, 3); - $overflow = null; - - if ($action === 'set') { - $unit = strtolower(substr($unit, 3)); - } - - if (\in_array($unit, static::$units, true)) { - return $this->setUnit($unit, ...$parameters); - } - - if ($action === 'add' || $action === 'sub') { - $unit = substr($unit, 3); - - if (str_starts_with($unit, 'Real')) { - $unit = static::singularUnit(substr($unit, 4)); - - return $this->{"{$action}RealUnit"}($unit, ...$parameters); - } - - if (preg_match('/^(Month|Quarter|Year|Decade|Century|Centurie|Millennium|Millennia)s?(No|With|Without|WithNo)Overflow$/', $unit, $match)) { - $unit = $match[1]; - $overflow = $match[2] === 'With'; - } - - $unit = static::singularUnit($unit); - } - - if (static::isModifiableUnit($unit)) { - return $this->{"{$action}Unit"}($unit, $this->getMagicParameter($parameters, 0, 'value', 1), $overflow); - } - - $sixFirstLetters = substr($unit, 0, 6); - $factor = -1; - - if ($sixFirstLetters === 'isLast') { - $sixFirstLetters = 'isNext'; - $factor = 1; - } - - if ($sixFirstLetters === 'isNext') { - $lowerUnit = strtolower(substr($unit, 6)); - - if (static::isModifiableUnit($lowerUnit)) { - return $this->copy()->addUnit($lowerUnit, $factor, false)->isSameUnit($lowerUnit, ...$parameters); - } - } - - if ($sixFirstLetters === 'isSame') { - try { - return $this->isSameUnit(strtolower(substr($unit, 6)), ...$parameters); - } catch (BadComparisonUnitException $exception) { - // Try next - } - } - - if (str_starts_with($unit, 'isCurrent')) { - try { - return $this->isCurrentUnit(strtolower(substr($unit, 9))); - } catch (BadComparisonUnitException | BadMethodCallException $exception) { - // Try next - } - } - - if (str_ends_with($method, 'Until')) { - try { - $unit = static::singularUnit(substr($method, 0, -5)); - - return $this->range( - $this->getMagicParameter($parameters, 0, 'endDate', $this), - $this->getMagicParameter($parameters, 1, 'factor', 1), - $unit - ); - } catch (InvalidArgumentException $exception) { - // Try macros - } - } - - return static::bindMacroContext($this, function () use (&$method, &$parameters) { - $macro = $this->getLocalMacro($method); - - if (!$macro) { - foreach ([$this->localGenericMacros ?: [], static::getGenericMacros()] as $list) { - foreach ($list as $callback) { - try { - return $this->executeCallable($callback, $method, ...$parameters); - } catch (BadMethodCallException $exception) { - continue; - } - } - } - - if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) { - throw new UnknownMethodException($method); - } - - return null; - } - - return $this->executeCallable($macro, ...$parameters); - }); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/DeprecatedProperties.php b/vendor/nesbot/carbon/src/Carbon/Traits/DeprecatedProperties.php deleted file mode 100644 index 5acc6f5c..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/DeprecatedProperties.php +++ /dev/null @@ -1,61 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -trait DeprecatedProperties -{ - /** - * the day of week in current locale LC_TIME - * - * @var string - * - * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1. - * Use ->isoFormat('MMM') instead. - * Deprecated since 2.55.0 - */ - public $localeDayOfWeek; - - /** - * the abbreviated day of week in current locale LC_TIME - * - * @var string - * - * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1. - * Use ->isoFormat('dddd') instead. - * Deprecated since 2.55.0 - */ - public $shortLocaleDayOfWeek; - - /** - * the month in current locale LC_TIME - * - * @var string - * - * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1. - * Use ->isoFormat('ddd') instead. - * Deprecated since 2.55.0 - */ - public $localeMonth; - - /** - * the abbreviated month in current locale LC_TIME - * - * @var string - * - * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1. - * Use ->isoFormat('MMMM') instead. - * Deprecated since 2.55.0 - */ - public $shortLocaleMonth; -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php b/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php deleted file mode 100644 index ab5b65d2..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php +++ /dev/null @@ -1,1182 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Carbon\Carbon; -use Carbon\CarbonImmutable; -use Carbon\CarbonInterface; -use Carbon\CarbonInterval; -use Carbon\CarbonPeriod; -use Carbon\Translator; -use Closure; -use DateInterval; -use DateTimeInterface; -use ReturnTypeWillChange; - -/** - * Trait Difference. - * - * Depends on the following methods: - * - * @method bool lessThan($date) - * @method static copy() - * @method static resolveCarbon($date = null) - * @method static Translator translator() - */ -trait Difference -{ - /** - * @codeCoverageIgnore - * - * @param CarbonInterval $diff - */ - protected static function fixNegativeMicroseconds(CarbonInterval $diff) - { - if ($diff->s !== 0 || $diff->i !== 0 || $diff->h !== 0 || $diff->d !== 0 || $diff->m !== 0 || $diff->y !== 0) { - $diff->f = (round($diff->f * 1000000) + 1000000) / 1000000; - $diff->s--; - - if ($diff->s < 0) { - $diff->s += 60; - $diff->i--; - - if ($diff->i < 0) { - $diff->i += 60; - $diff->h--; - - if ($diff->h < 0) { - $diff->h += 24; - $diff->d--; - - if ($diff->d < 0) { - $diff->d += 30; - $diff->m--; - - if ($diff->m < 0) { - $diff->m += 12; - $diff->y--; - } - } - } - } - } - - return; - } - - $diff->f *= -1; - $diff->invert(); - } - - /** - * @param DateInterval $diff - * @param bool $absolute - * - * @return CarbonInterval - */ - protected static function fixDiffInterval(DateInterval $diff, $absolute, array $skip = []) - { - $diff = CarbonInterval::instance($diff, $skip); - - // Work-around for https://bugs.php.net/bug.php?id=77145 - // @codeCoverageIgnoreStart - if ($diff->f > 0 && $diff->y === -1 && $diff->m === 11 && $diff->d >= 27 && $diff->h === 23 && $diff->i === 59 && $diff->s === 59) { - $diff->y = 0; - $diff->m = 0; - $diff->d = 0; - $diff->h = 0; - $diff->i = 0; - $diff->s = 0; - $diff->f = (1000000 - round($diff->f * 1000000)) / 1000000; - $diff->invert(); - } elseif ($diff->f < 0) { - static::fixNegativeMicroseconds($diff); - } - // @codeCoverageIgnoreEnd - - if ($absolute && $diff->invert) { - $diff->invert(); - } - - return $diff; - } - - /** - * Get the difference as a DateInterval instance. - * Return relative interval (negative if $absolute flag is not set to true and the given date is before - * current one). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return DateInterval - */ - #[ReturnTypeWillChange] - public function diff($date = null, $absolute = false) - { - $other = $this->resolveCarbon($date); - - // Work-around for https://bugs.php.net/bug.php?id=81458 - // It was initially introduced for https://bugs.php.net/bug.php?id=80998 - // The very specific case of 80998 was fixed in PHP 8.1beta3, but it introduced 81458 - // So we still need to keep this for now - // @codeCoverageIgnoreStart - if (version_compare(PHP_VERSION, '8.1.0-dev', '>=') && $other->tz !== $this->tz) { - $other = $other->avoidMutation()->tz($this->tz); - } - // @codeCoverageIgnoreEnd - - return parent::diff($other, (bool) $absolute); - } - - /** - * Get the difference as a CarbonInterval instance. - * Return relative interval (negative if $absolute flag is not set to true and the given date is before - * current one). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return CarbonInterval - */ - public function diffAsCarbonInterval($date = null, $absolute = true, array $skip = []) - { - return static::fixDiffInterval($this->diff($this->resolveCarbon($date), $absolute), $absolute, $skip); - } - - /** - * Get the difference in years - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInYears($date = null, $absolute = true) - { - return (int) $this->diff($this->resolveCarbon($date), $absolute)->format('%r%y'); - } - - /** - * Get the difference in quarters rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInQuarters($date = null, $absolute = true) - { - return (int) ($this->diffInMonths($date, $absolute) / static::MONTHS_PER_QUARTER); - } - - /** - * Get the difference in months rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInMonths($date = null, $absolute = true) - { - $date = $this->resolveCarbon($date)->avoidMutation()->tz($this->tz); - - [$yearStart, $monthStart, $dayStart] = explode('-', $this->format('Y-m-dHisu')); - [$yearEnd, $monthEnd, $dayEnd] = explode('-', $date->format('Y-m-dHisu')); - - $diff = (((int) $yearEnd) - ((int) $yearStart)) * static::MONTHS_PER_YEAR + - ((int) $monthEnd) - ((int) $monthStart); - - if ($diff > 0) { - $diff -= ($dayStart > $dayEnd ? 1 : 0); - } elseif ($diff < 0) { - $diff += ($dayStart < $dayEnd ? 1 : 0); - } - - return $absolute ? abs($diff) : $diff; - } - - /** - * Get the difference in weeks rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInWeeks($date = null, $absolute = true) - { - return (int) ($this->diffInDays($date, $absolute) / static::DAYS_PER_WEEK); - } - - /** - * Get the difference in days rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInDays($date = null, $absolute = true) - { - return $this->getIntervalDayDiff($this->diff($this->resolveCarbon($date), $absolute)); - } - - /** - * Get the difference in days using a filter closure rounded down. - * - * @param Closure $callback - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInDaysFiltered(Closure $callback, $date = null, $absolute = true) - { - return $this->diffFiltered(CarbonInterval::day(), $callback, $date, $absolute); - } - - /** - * Get the difference in hours using a filter closure rounded down. - * - * @param Closure $callback - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInHoursFiltered(Closure $callback, $date = null, $absolute = true) - { - return $this->diffFiltered(CarbonInterval::hour(), $callback, $date, $absolute); - } - - /** - * Get the difference by the given interval using a filter closure. - * - * @param CarbonInterval $ci An interval to traverse by - * @param Closure $callback - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffFiltered(CarbonInterval $ci, Closure $callback, $date = null, $absolute = true) - { - $start = $this; - $end = $this->resolveCarbon($date); - $inverse = false; - - if ($end < $start) { - $start = $end; - $end = $this; - $inverse = true; - } - - $options = CarbonPeriod::EXCLUDE_END_DATE | ($this->isMutable() ? 0 : CarbonPeriod::IMMUTABLE); - $diff = $ci->toPeriod($start, $end, $options)->filter($callback)->count(); - - return $inverse && !$absolute ? -$diff : $diff; - } - - /** - * Get the difference in weekdays rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInWeekdays($date = null, $absolute = true) - { - return $this->diffInDaysFiltered(static function (CarbonInterface $date) { - return $date->isWeekday(); - }, $this->resolveCarbon($date)->avoidMutation()->modify($this->format('H:i:s.u')), $absolute); - } - - /** - * Get the difference in weekend days using a filter rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInWeekendDays($date = null, $absolute = true) - { - return $this->diffInDaysFiltered(static function (CarbonInterface $date) { - return $date->isWeekend(); - }, $this->resolveCarbon($date)->avoidMutation()->modify($this->format('H:i:s.u')), $absolute); - } - - /** - * Get the difference in hours rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInHours($date = null, $absolute = true) - { - return (int) ($this->diffInSeconds($date, $absolute) / static::SECONDS_PER_MINUTE / static::MINUTES_PER_HOUR); - } - - /** - * Get the difference in hours rounded down using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInRealHours($date = null, $absolute = true) - { - return (int) ($this->diffInRealSeconds($date, $absolute) / static::SECONDS_PER_MINUTE / static::MINUTES_PER_HOUR); - } - - /** - * Get the difference in minutes rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInMinutes($date = null, $absolute = true) - { - return (int) ($this->diffInSeconds($date, $absolute) / static::SECONDS_PER_MINUTE); - } - - /** - * Get the difference in minutes rounded down using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInRealMinutes($date = null, $absolute = true) - { - return (int) ($this->diffInRealSeconds($date, $absolute) / static::SECONDS_PER_MINUTE); - } - - /** - * Get the difference in seconds rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInSeconds($date = null, $absolute = true) - { - $diff = $this->diff($date); - - if ($diff->days === 0) { - $diff = static::fixDiffInterval($diff, $absolute); - } - - $value = (((($diff->m || $diff->y ? $diff->days : $diff->d) * static::HOURS_PER_DAY) + - $diff->h) * static::MINUTES_PER_HOUR + - $diff->i) * static::SECONDS_PER_MINUTE + - $diff->s; - - return $absolute || !$diff->invert ? $value : -$value; - } - - /** - * Get the difference in microseconds. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInMicroseconds($date = null, $absolute = true) - { - $diff = $this->diff($date); - $value = (int) round(((((($diff->m || $diff->y ? $diff->days : $diff->d) * static::HOURS_PER_DAY) + - $diff->h) * static::MINUTES_PER_HOUR + - $diff->i) * static::SECONDS_PER_MINUTE + - ($diff->f + $diff->s)) * static::MICROSECONDS_PER_SECOND); - - return $absolute || !$diff->invert ? $value : -$value; - } - - /** - * Get the difference in milliseconds rounded down. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInMilliseconds($date = null, $absolute = true) - { - return (int) ($this->diffInMicroseconds($date, $absolute) / static::MICROSECONDS_PER_MILLISECOND); - } - - /** - * Get the difference in seconds using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInRealSeconds($date = null, $absolute = true) - { - /** @var CarbonInterface $date */ - $date = $this->resolveCarbon($date); - $value = $date->getTimestamp() - $this->getTimestamp(); - - return $absolute ? abs($value) : $value; - } - - /** - * Get the difference in microseconds using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInRealMicroseconds($date = null, $absolute = true) - { - /** @var CarbonInterface $date */ - $date = $this->resolveCarbon($date); - $value = ($date->timestamp - $this->timestamp) * static::MICROSECONDS_PER_SECOND + - $date->micro - $this->micro; - - return $absolute ? abs($value) : $value; - } - - /** - * Get the difference in milliseconds rounded down using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return int - */ - public function diffInRealMilliseconds($date = null, $absolute = true) - { - return (int) ($this->diffInRealMicroseconds($date, $absolute) / static::MICROSECONDS_PER_MILLISECOND); - } - - /** - * Get the difference in seconds as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInSeconds($date = null, $absolute = true) - { - return (float) ($this->diffInMicroseconds($date, $absolute) / static::MICROSECONDS_PER_SECOND); - } - - /** - * Get the difference in minutes as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInMinutes($date = null, $absolute = true) - { - return $this->floatDiffInSeconds($date, $absolute) / static::SECONDS_PER_MINUTE; - } - - /** - * Get the difference in hours as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInHours($date = null, $absolute = true) - { - return $this->floatDiffInMinutes($date, $absolute) / static::MINUTES_PER_HOUR; - } - - /** - * Get the difference in days as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInDays($date = null, $absolute = true) - { - $hoursDiff = $this->floatDiffInHours($date, $absolute); - $interval = $this->diff($date, $absolute); - - if ($interval->y === 0 && $interval->m === 0 && $interval->d === 0) { - return $hoursDiff / static::HOURS_PER_DAY; - } - - $daysDiff = $this->getIntervalDayDiff($interval); - - return $daysDiff + fmod($hoursDiff, static::HOURS_PER_DAY) / static::HOURS_PER_DAY; - } - - /** - * Get the difference in weeks as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInWeeks($date = null, $absolute = true) - { - return $this->floatDiffInDays($date, $absolute) / static::DAYS_PER_WEEK; - } - - /** - * Get the difference in months as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInMonths($date = null, $absolute = true) - { - $start = $this; - $end = $this->resolveCarbon($date); - $ascending = ($start <= $end); - $sign = $absolute || $ascending ? 1 : -1; - if (!$ascending) { - [$start, $end] = [$end, $start]; - } - $monthsDiff = $start->diffInMonths($end); - /** @var Carbon|CarbonImmutable $floorEnd */ - $floorEnd = $start->avoidMutation()->addMonths($monthsDiff); - - if ($floorEnd >= $end) { - return $sign * $monthsDiff; - } - - /** @var Carbon|CarbonImmutable $startOfMonthAfterFloorEnd */ - $startOfMonthAfterFloorEnd = $floorEnd->avoidMutation()->addMonth()->startOfMonth(); - - if ($startOfMonthAfterFloorEnd > $end) { - return $sign * ($monthsDiff + $floorEnd->floatDiffInDays($end) / $floorEnd->daysInMonth); - } - - return $sign * ($monthsDiff + $floorEnd->floatDiffInDays($startOfMonthAfterFloorEnd) / $floorEnd->daysInMonth + $startOfMonthAfterFloorEnd->floatDiffInDays($end) / $end->daysInMonth); - } - - /** - * Get the difference in year as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInYears($date = null, $absolute = true) - { - $start = $this; - $end = $this->resolveCarbon($date); - $ascending = ($start <= $end); - $sign = $absolute || $ascending ? 1 : -1; - if (!$ascending) { - [$start, $end] = [$end, $start]; - } - $yearsDiff = $start->diffInYears($end); - /** @var Carbon|CarbonImmutable $floorEnd */ - $floorEnd = $start->avoidMutation()->addYears($yearsDiff); - - if ($floorEnd >= $end) { - return $sign * $yearsDiff; - } - - /** @var Carbon|CarbonImmutable $startOfYearAfterFloorEnd */ - $startOfYearAfterFloorEnd = $floorEnd->avoidMutation()->addYear()->startOfYear(); - - if ($startOfYearAfterFloorEnd > $end) { - return $sign * ($yearsDiff + $floorEnd->floatDiffInDays($end) / $floorEnd->daysInYear); - } - - return $sign * ($yearsDiff + $floorEnd->floatDiffInDays($startOfYearAfterFloorEnd) / $floorEnd->daysInYear + $startOfYearAfterFloorEnd->floatDiffInDays($end) / $end->daysInYear); - } - - /** - * Get the difference in seconds as float (microsecond-precision) using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInRealSeconds($date = null, $absolute = true) - { - return $this->diffInRealMicroseconds($date, $absolute) / static::MICROSECONDS_PER_SECOND; - } - - /** - * Get the difference in minutes as float (microsecond-precision) using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInRealMinutes($date = null, $absolute = true) - { - return $this->floatDiffInRealSeconds($date, $absolute) / static::SECONDS_PER_MINUTE; - } - - /** - * Get the difference in hours as float (microsecond-precision) using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInRealHours($date = null, $absolute = true) - { - return $this->floatDiffInRealMinutes($date, $absolute) / static::MINUTES_PER_HOUR; - } - - /** - * Get the difference in days as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInRealDays($date = null, $absolute = true) - { - $date = $this->resolveUTC($date); - $utc = $this->avoidMutation()->utc(); - $hoursDiff = $utc->floatDiffInRealHours($date, $absolute); - - return ($hoursDiff < 0 ? -1 : 1) * $utc->diffInDays($date) + fmod($hoursDiff, static::HOURS_PER_DAY) / static::HOURS_PER_DAY; - } - - /** - * Get the difference in weeks as float (microsecond-precision). - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInRealWeeks($date = null, $absolute = true) - { - return $this->floatDiffInRealDays($date, $absolute) / static::DAYS_PER_WEEK; - } - - /** - * Get the difference in months as float (microsecond-precision) using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInRealMonths($date = null, $absolute = true) - { - $start = $this; - $end = $this->resolveCarbon($date); - $ascending = ($start <= $end); - $sign = $absolute || $ascending ? 1 : -1; - if (!$ascending) { - [$start, $end] = [$end, $start]; - } - $monthsDiff = $start->diffInMonths($end); - /** @var Carbon|CarbonImmutable $floorEnd */ - $floorEnd = $start->avoidMutation()->addMonths($monthsDiff); - - if ($floorEnd >= $end) { - return $sign * $monthsDiff; - } - - /** @var Carbon|CarbonImmutable $startOfMonthAfterFloorEnd */ - $startOfMonthAfterFloorEnd = $floorEnd->avoidMutation()->addMonth()->startOfMonth(); - - if ($startOfMonthAfterFloorEnd > $end) { - return $sign * ($monthsDiff + $floorEnd->floatDiffInRealDays($end) / $floorEnd->daysInMonth); - } - - return $sign * ($monthsDiff + $floorEnd->floatDiffInRealDays($startOfMonthAfterFloorEnd) / $floorEnd->daysInMonth + $startOfMonthAfterFloorEnd->floatDiffInRealDays($end) / $end->daysInMonth); - } - - /** - * Get the difference in year as float (microsecond-precision) using timestamps. - * - * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date - * @param bool $absolute Get the absolute of the difference - * - * @return float - */ - public function floatDiffInRealYears($date = null, $absolute = true) - { - $start = $this; - $end = $this->resolveCarbon($date); - $ascending = ($start <= $end); - $sign = $absolute || $ascending ? 1 : -1; - if (!$ascending) { - [$start, $end] = [$end, $start]; - } - $yearsDiff = $start->diffInYears($end); - /** @var Carbon|CarbonImmutable $floorEnd */ - $floorEnd = $start->avoidMutation()->addYears($yearsDiff); - - if ($floorEnd >= $end) { - return $sign * $yearsDiff; - } - - /** @var Carbon|CarbonImmutable $startOfYearAfterFloorEnd */ - $startOfYearAfterFloorEnd = $floorEnd->avoidMutation()->addYear()->startOfYear(); - - if ($startOfYearAfterFloorEnd > $end) { - return $sign * ($yearsDiff + $floorEnd->floatDiffInRealDays($end) / $floorEnd->daysInYear); - } - - return $sign * ($yearsDiff + $floorEnd->floatDiffInRealDays($startOfYearAfterFloorEnd) / $floorEnd->daysInYear + $startOfYearAfterFloorEnd->floatDiffInRealDays($end) / $end->daysInYear); - } - - /** - * The number of seconds since midnight. - * - * @return int - */ - public function secondsSinceMidnight() - { - return $this->diffInSeconds($this->avoidMutation()->startOfDay()); - } - - /** - * The number of seconds until 23:59:59. - * - * @return int - */ - public function secondsUntilEndOfDay() - { - return $this->diffInSeconds($this->avoidMutation()->endOfDay()); - } - - /** - * Get the difference in a human readable format in the current locale from current instance to an other - * instance given (or now if null given). - * - * @example - * ``` - * echo Carbon::tomorrow()->diffForHumans() . "\n"; - * echo Carbon::tomorrow()->diffForHumans(['parts' => 2]) . "\n"; - * echo Carbon::tomorrow()->diffForHumans(['parts' => 3, 'join' => true]) . "\n"; - * echo Carbon::tomorrow()->diffForHumans(Carbon::yesterday()) . "\n"; - * echo Carbon::tomorrow()->diffForHumans(Carbon::yesterday(), ['short' => true]) . "\n"; - * ``` - * - * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below; - * if null passed, now will be used as comparison reference; - * if any other type, it will be converted to date and used as reference. - * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: - * - 'syntax' entry (see below) - * - 'short' entry (see below) - * - 'parts' entry (see below) - * - 'options' entry (see below) - * - 'skip' entry, list of units to skip (array of strings or a single string, - * ` it can be the unit name (singular or plural) or its shortcut - * ` (y, m, w, d, h, min, s, ms, µs). - * - 'aUnit' entry, prefer "an hour" over "1 hour" if true - * - 'join' entry determines how to join multiple parts of the string - * ` - if $join is a string, it's used as a joiner glue - * ` - if $join is a callable/closure, it get the list of string and should return a string - * ` - if $join is an array, the first item will be the default glue, and the second item - * ` will be used instead of the glue for the last item - * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) - * ` - if $join is missing, a space will be used as glue - * - 'other' entry (see above) - * - 'minimumUnit' entry determines the smallest unit of time to display can be long or - * ` short form of the units, e.g. 'hour' or 'h' (default value: s) - * if int passed, it add modifiers: - * Possible values: - * - CarbonInterface::DIFF_ABSOLUTE no modifiers - * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier - * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier - * Default value: CarbonInterface::DIFF_ABSOLUTE - * @param bool $short displays short format of time units - * @param int $parts maximum number of parts to display (default value: 1: single unit) - * @param int $options human diff options - * - * @return string - */ - public function diffForHumans($other = null, $syntax = null, $short = false, $parts = 1, $options = null) - { - /* @var CarbonInterface $this */ - if (\is_array($other)) { - $other['syntax'] = \array_key_exists('syntax', $other) ? $other['syntax'] : $syntax; - $syntax = $other; - $other = $syntax['other'] ?? null; - } - - $intSyntax = &$syntax; - if (\is_array($syntax)) { - $syntax['syntax'] = $syntax['syntax'] ?? null; - $intSyntax = &$syntax['syntax']; - } - $intSyntax = (int) ($intSyntax ?? static::DIFF_RELATIVE_AUTO); - $intSyntax = $intSyntax === static::DIFF_RELATIVE_AUTO && $other === null ? static::DIFF_RELATIVE_TO_NOW : $intSyntax; - - $parts = min(7, max(1, (int) $parts)); - $skip = \is_array($syntax) ? ($syntax['skip'] ?? []) : []; - - return $this->diffAsCarbonInterval($other, false, (array) $skip) - ->setLocalTranslator($this->getLocalTranslator()) - ->forHumans($syntax, (bool) $short, $parts, $options ?? $this->localHumanDiffOptions ?? static::getHumanDiffOptions()); - } - - /** - * @alias diffForHumans - * - * Get the difference in a human readable format in the current locale from current instance to an other - * instance given (or now if null given). - * - * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below; - * if null passed, now will be used as comparison reference; - * if any other type, it will be converted to date and used as reference. - * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: - * - 'syntax' entry (see below) - * - 'short' entry (see below) - * - 'parts' entry (see below) - * - 'options' entry (see below) - * - 'join' entry determines how to join multiple parts of the string - * ` - if $join is a string, it's used as a joiner glue - * ` - if $join is a callable/closure, it get the list of string and should return a string - * ` - if $join is an array, the first item will be the default glue, and the second item - * ` will be used instead of the glue for the last item - * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) - * ` - if $join is missing, a space will be used as glue - * - 'other' entry (see above) - * if int passed, it add modifiers: - * Possible values: - * - CarbonInterface::DIFF_ABSOLUTE no modifiers - * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier - * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier - * Default value: CarbonInterface::DIFF_ABSOLUTE - * @param bool $short displays short format of time units - * @param int $parts maximum number of parts to display (default value: 1: single unit) - * @param int $options human diff options - * - * @return string - */ - public function from($other = null, $syntax = null, $short = false, $parts = 1, $options = null) - { - return $this->diffForHumans($other, $syntax, $short, $parts, $options); - } - - /** - * @alias diffForHumans - * - * Get the difference in a human readable format in the current locale from current instance to an other - * instance given (or now if null given). - */ - public function since($other = null, $syntax = null, $short = false, $parts = 1, $options = null) - { - return $this->diffForHumans($other, $syntax, $short, $parts, $options); - } - - /** - * Get the difference in a human readable format in the current locale from an other - * instance given (or now if null given) to current instance. - * - * When comparing a value in the past to default now: - * 1 hour from now - * 5 months from now - * - * When comparing a value in the future to default now: - * 1 hour ago - * 5 months ago - * - * When comparing a value in the past to another value: - * 1 hour after - * 5 months after - * - * When comparing a value in the future to another value: - * 1 hour before - * 5 months before - * - * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below; - * if null passed, now will be used as comparison reference; - * if any other type, it will be converted to date and used as reference. - * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: - * - 'syntax' entry (see below) - * - 'short' entry (see below) - * - 'parts' entry (see below) - * - 'options' entry (see below) - * - 'join' entry determines how to join multiple parts of the string - * ` - if $join is a string, it's used as a joiner glue - * ` - if $join is a callable/closure, it get the list of string and should return a string - * ` - if $join is an array, the first item will be the default glue, and the second item - * ` will be used instead of the glue for the last item - * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) - * ` - if $join is missing, a space will be used as glue - * - 'other' entry (see above) - * if int passed, it add modifiers: - * Possible values: - * - CarbonInterface::DIFF_ABSOLUTE no modifiers - * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier - * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier - * Default value: CarbonInterface::DIFF_ABSOLUTE - * @param bool $short displays short format of time units - * @param int $parts maximum number of parts to display (default value: 1: single unit) - * @param int $options human diff options - * - * @return string - */ - public function to($other = null, $syntax = null, $short = false, $parts = 1, $options = null) - { - if (!$syntax && !$other) { - $syntax = CarbonInterface::DIFF_RELATIVE_TO_NOW; - } - - return $this->resolveCarbon($other)->diffForHumans($this, $syntax, $short, $parts, $options); - } - - /** - * @alias to - * - * Get the difference in a human readable format in the current locale from an other - * instance given (or now if null given) to current instance. - * - * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below; - * if null passed, now will be used as comparison reference; - * if any other type, it will be converted to date and used as reference. - * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: - * - 'syntax' entry (see below) - * - 'short' entry (see below) - * - 'parts' entry (see below) - * - 'options' entry (see below) - * - 'join' entry determines how to join multiple parts of the string - * ` - if $join is a string, it's used as a joiner glue - * ` - if $join is a callable/closure, it get the list of string and should return a string - * ` - if $join is an array, the first item will be the default glue, and the second item - * ` will be used instead of the glue for the last item - * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) - * ` - if $join is missing, a space will be used as glue - * - 'other' entry (see above) - * if int passed, it add modifiers: - * Possible values: - * - CarbonInterface::DIFF_ABSOLUTE no modifiers - * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier - * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier - * Default value: CarbonInterface::DIFF_ABSOLUTE - * @param bool $short displays short format of time units - * @param int $parts maximum number of parts to display (default value: 1: single unit) - * @param int $options human diff options - * - * @return string - */ - public function until($other = null, $syntax = null, $short = false, $parts = 1, $options = null) - { - return $this->to($other, $syntax, $short, $parts, $options); - } - - /** - * Get the difference in a human readable format in the current locale from current - * instance to now. - * - * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: - * - 'syntax' entry (see below) - * - 'short' entry (see below) - * - 'parts' entry (see below) - * - 'options' entry (see below) - * - 'join' entry determines how to join multiple parts of the string - * ` - if $join is a string, it's used as a joiner glue - * ` - if $join is a callable/closure, it get the list of string and should return a string - * ` - if $join is an array, the first item will be the default glue, and the second item - * ` will be used instead of the glue for the last item - * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) - * ` - if $join is missing, a space will be used as glue - * if int passed, it add modifiers: - * Possible values: - * - CarbonInterface::DIFF_ABSOLUTE no modifiers - * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier - * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier - * Default value: CarbonInterface::DIFF_ABSOLUTE - * @param bool $short displays short format of time units - * @param int $parts maximum number of parts to display (default value: 1: single unit) - * @param int $options human diff options - * - * @return string - */ - public function fromNow($syntax = null, $short = false, $parts = 1, $options = null) - { - $other = null; - - if ($syntax instanceof DateTimeInterface) { - [$other, $syntax, $short, $parts, $options] = array_pad(\func_get_args(), 5, null); - } - - return $this->from($other, $syntax, $short, $parts, $options); - } - - /** - * Get the difference in a human readable format in the current locale from an other - * instance given to now - * - * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: - * - 'syntax' entry (see below) - * - 'short' entry (see below) - * - 'parts' entry (see below) - * - 'options' entry (see below) - * - 'join' entry determines how to join multiple parts of the string - * ` - if $join is a string, it's used as a joiner glue - * ` - if $join is a callable/closure, it get the list of string and should return a string - * ` - if $join is an array, the first item will be the default glue, and the second item - * ` will be used instead of the glue for the last item - * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) - * ` - if $join is missing, a space will be used as glue - * if int passed, it add modifiers: - * Possible values: - * - CarbonInterface::DIFF_ABSOLUTE no modifiers - * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier - * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier - * Default value: CarbonInterface::DIFF_ABSOLUTE - * @param bool $short displays short format of time units - * @param int $parts maximum number of parts to display (default value: 1: single part) - * @param int $options human diff options - * - * @return string - */ - public function toNow($syntax = null, $short = false, $parts = 1, $options = null) - { - return $this->to(null, $syntax, $short, $parts, $options); - } - - /** - * Get the difference in a human readable format in the current locale from an other - * instance given to now - * - * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: - * - 'syntax' entry (see below) - * - 'short' entry (see below) - * - 'parts' entry (see below) - * - 'options' entry (see below) - * - 'join' entry determines how to join multiple parts of the string - * ` - if $join is a string, it's used as a joiner glue - * ` - if $join is a callable/closure, it get the list of string and should return a string - * ` - if $join is an array, the first item will be the default glue, and the second item - * ` will be used instead of the glue for the last item - * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) - * ` - if $join is missing, a space will be used as glue - * if int passed, it add modifiers: - * Possible values: - * - CarbonInterface::DIFF_ABSOLUTE no modifiers - * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier - * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier - * Default value: CarbonInterface::DIFF_ABSOLUTE - * @param bool $short displays short format of time units - * @param int $parts maximum number of parts to display (default value: 1: single part) - * @param int $options human diff options - * - * @return string - */ - public function ago($syntax = null, $short = false, $parts = 1, $options = null) - { - $other = null; - - if ($syntax instanceof DateTimeInterface) { - [$other, $syntax, $short, $parts, $options] = array_pad(\func_get_args(), 5, null); - } - - return $this->from($other, $syntax, $short, $parts, $options); - } - - /** - * Get the difference in a human readable format in the current locale from current instance to an other - * instance given (or now if null given). - * - * @return string - */ - public function timespan($other = null, $timezone = null) - { - if (!$other instanceof DateTimeInterface) { - $other = static::parse($other, $timezone); - } - - return $this->diffForHumans($other, [ - 'join' => ', ', - 'syntax' => CarbonInterface::DIFF_ABSOLUTE, - 'options' => CarbonInterface::NO_ZERO_DIFF, - 'parts' => -1, - ]); - } - - /** - * Returns either day of week + time (e.g. "Last Friday at 3:30 PM") if reference time is within 7 days, - * or a calendar date (e.g. "10/29/2017") otherwise. - * - * Language, date and time formats will change according to the current locale. - * - * @param Carbon|\DateTimeInterface|string|null $referenceTime - * @param array $formats - * - * @return string - */ - public function calendar($referenceTime = null, array $formats = []) - { - /** @var CarbonInterface $current */ - $current = $this->avoidMutation()->startOfDay(); - /** @var CarbonInterface $other */ - $other = $this->resolveCarbon($referenceTime)->avoidMutation()->setTimezone($this->getTimezone())->startOfDay(); - $diff = $other->diffInDays($current, false); - $format = $diff < -6 ? 'sameElse' : ( - $diff < -1 ? 'lastWeek' : ( - $diff < 0 ? 'lastDay' : ( - $diff < 1 ? 'sameDay' : ( - $diff < 2 ? 'nextDay' : ( - $diff < 7 ? 'nextWeek' : 'sameElse' - ) - ) - ) - ) - ); - $format = array_merge($this->getCalendarFormats(), $formats)[$format]; - if ($format instanceof Closure) { - $format = $format($current, $other) ?? ''; - } - - return $this->isoFormat((string) $format); - } - - private function getIntervalDayDiff(DateInterval $interval): int - { - $daysDiff = (int) $interval->format('%a'); - $sign = $interval->format('%r') === '-' ? -1 : 1; - - if (\is_int($interval->days) && - $interval->y === 0 && - $interval->m === 0 && - version_compare(PHP_VERSION, '8.1.0-dev', '<') && - abs($interval->d - $daysDiff) === 1 - ) { - $daysDiff = abs($interval->d); // @codeCoverageIgnore - } - - return $daysDiff * $sign; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php b/vendor/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php deleted file mode 100644 index f069c280..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Carbon\CarbonInterval; -use Carbon\Exceptions\InvalidIntervalException; -use DateInterval; - -/** - * Trait to call rounding methods to interval or the interval of a period. - */ -trait IntervalRounding -{ - protected function callRoundMethod(string $method, array $parameters) - { - $action = substr($method, 0, 4); - - if ($action !== 'ceil') { - $action = substr($method, 0, 5); - } - - if (\in_array($action, ['round', 'floor', 'ceil'])) { - return $this->{$action.'Unit'}(substr($method, \strlen($action)), ...$parameters); - } - - return null; - } - - protected function roundWith($precision, $function) - { - $unit = 'second'; - - if ($precision instanceof DateInterval) { - $precision = (string) CarbonInterval::instance($precision, [], true); - } - - if (\is_string($precision) && preg_match('/^\s*(?\d+)?\s*(?\w+)(?\W.*)?$/', $precision, $match)) { - if (trim($match['other'] ?? '') !== '') { - throw new InvalidIntervalException('Rounding is only possible with single unit intervals.'); - } - - $precision = (int) ($match['precision'] ?: 1); - $unit = $match['unit']; - } - - return $this->roundUnit($unit, $precision, $function); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/IntervalStep.php b/vendor/nesbot/carbon/src/Carbon/Traits/IntervalStep.php deleted file mode 100644 index 82d7c326..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/IntervalStep.php +++ /dev/null @@ -1,93 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Carbon\Carbon; -use Carbon\CarbonImmutable; -use Carbon\CarbonInterface; -use Closure; -use DateTimeImmutable; -use DateTimeInterface; - -trait IntervalStep -{ - /** - * Step to apply instead of a fixed interval to get the new date. - * - * @var Closure|null - */ - protected $step; - - /** - * Get the dynamic step in use. - * - * @return Closure - */ - public function getStep(): ?Closure - { - return $this->step; - } - - /** - * Set a step to apply instead of a fixed interval to get the new date. - * - * Or pass null to switch to fixed interval. - * - * @param Closure|null $step - */ - public function setStep(?Closure $step): void - { - $this->step = $step; - } - - /** - * Take a date and apply either the step if set, or the current interval else. - * - * The interval/step is applied negatively (typically subtraction instead of addition) if $negated is true. - * - * @param DateTimeInterface $dateTime - * @param bool $negated - * - * @return CarbonInterface - */ - public function convertDate(DateTimeInterface $dateTime, bool $negated = false): CarbonInterface - { - /** @var CarbonInterface $carbonDate */ - $carbonDate = $dateTime instanceof CarbonInterface ? $dateTime : $this->resolveCarbon($dateTime); - - if ($this->step) { - return $carbonDate->setDateTimeFrom(($this->step)($carbonDate->avoidMutation(), $negated)); - } - - if ($negated) { - return $carbonDate->rawSub($this); - } - - return $carbonDate->rawAdd($this); - } - - /** - * Convert DateTimeImmutable instance to CarbonImmutable instance and DateTime instance to Carbon instance. - * - * @param DateTimeInterface $dateTime - * - * @return Carbon|CarbonImmutable - */ - private function resolveCarbon(DateTimeInterface $dateTime) - { - if ($dateTime instanceof DateTimeImmutable) { - return CarbonImmutable::instance($dateTime); - } - - return Carbon::instance($dateTime); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Localization.php b/vendor/nesbot/carbon/src/Carbon/Traits/Localization.php deleted file mode 100644 index 46aff113..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Localization.php +++ /dev/null @@ -1,840 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Carbon\CarbonInterface; -use Carbon\Exceptions\InvalidTypeException; -use Carbon\Exceptions\NotLocaleAwareException; -use Carbon\Language; -use Carbon\Translator; -use Carbon\TranslatorStrongTypeInterface; -use Closure; -use Symfony\Component\Translation\TranslatorBagInterface; -use Symfony\Component\Translation\TranslatorInterface; -use Symfony\Contracts\Translation\LocaleAwareInterface; -use Symfony\Contracts\Translation\TranslatorInterface as ContractsTranslatorInterface; - -// @codeCoverageIgnoreStart -if (interface_exists('Symfony\\Contracts\\Translation\\TranslatorInterface') && - !interface_exists('Symfony\\Component\\Translation\\TranslatorInterface') -) { - class_alias( - 'Symfony\\Contracts\\Translation\\TranslatorInterface', - 'Symfony\\Component\\Translation\\TranslatorInterface' - ); -} -// @codeCoverageIgnoreEnd - -/** - * Trait Localization. - * - * Embed default and locale translators and translation base methods. - */ -trait Localization -{ - /** - * Default translator. - * - * @var \Symfony\Component\Translation\TranslatorInterface - */ - protected static $translator; - - /** - * Specific translator of the current instance. - * - * @var \Symfony\Component\Translation\TranslatorInterface - */ - protected $localTranslator; - - /** - * Options for diffForHumans(). - * - * @var int - */ - protected static $humanDiffOptions = CarbonInterface::NO_ZERO_DIFF; - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * @see settings - * - * @param int $humanDiffOptions - */ - public static function setHumanDiffOptions($humanDiffOptions) - { - static::$humanDiffOptions = $humanDiffOptions; - } - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * @see settings - * - * @param int $humanDiffOption - */ - public static function enableHumanDiffOption($humanDiffOption) - { - static::$humanDiffOptions = static::getHumanDiffOptions() | $humanDiffOption; - } - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * @see settings - * - * @param int $humanDiffOption - */ - public static function disableHumanDiffOption($humanDiffOption) - { - static::$humanDiffOptions = static::getHumanDiffOptions() & ~$humanDiffOption; - } - - /** - * Return default humanDiff() options (merged flags as integer). - * - * @return int - */ - public static function getHumanDiffOptions() - { - return static::$humanDiffOptions; - } - - /** - * Get the default translator instance in use. - * - * @return \Symfony\Component\Translation\TranslatorInterface - */ - public static function getTranslator() - { - return static::translator(); - } - - /** - * Set the default translator instance to use. - * - * @param \Symfony\Component\Translation\TranslatorInterface $translator - * - * @return void - */ - public static function setTranslator(TranslatorInterface $translator) - { - static::$translator = $translator; - } - - /** - * Return true if the current instance has its own translator. - * - * @return bool - */ - public function hasLocalTranslator() - { - return isset($this->localTranslator); - } - - /** - * Get the translator of the current instance or the default if none set. - * - * @return \Symfony\Component\Translation\TranslatorInterface - */ - public function getLocalTranslator() - { - return $this->localTranslator ?: static::translator(); - } - - /** - * Set the translator for the current instance. - * - * @param \Symfony\Component\Translation\TranslatorInterface $translator - * - * @return $this - */ - public function setLocalTranslator(TranslatorInterface $translator) - { - $this->localTranslator = $translator; - - return $this; - } - - /** - * Returns raw translation message for a given key. - * - * @param \Symfony\Component\Translation\TranslatorInterface $translator the translator to use - * @param string $key key to find - * @param string|null $locale current locale used if null - * @param string|null $default default value if translation returns the key - * - * @return string - */ - public static function getTranslationMessageWith($translator, string $key, ?string $locale = null, ?string $default = null) - { - if (!($translator instanceof TranslatorBagInterface && $translator instanceof TranslatorInterface)) { - throw new InvalidTypeException( - 'Translator does not implement '.TranslatorInterface::class.' and '.TranslatorBagInterface::class.'. '. - (\is_object($translator) ? \get_class($translator) : \gettype($translator)).' has been given.' - ); - } - - if (!$locale && $translator instanceof LocaleAwareInterface) { - $locale = $translator->getLocale(); - } - - $result = self::getFromCatalogue($translator, $translator->getCatalogue($locale), $key); - - return $result === $key ? $default : $result; - } - - /** - * Returns raw translation message for a given key. - * - * @param string $key key to find - * @param string|null $locale current locale used if null - * @param string|null $default default value if translation returns the key - * @param \Symfony\Component\Translation\TranslatorInterface $translator an optional translator to use - * - * @return string - */ - public function getTranslationMessage(string $key, ?string $locale = null, ?string $default = null, $translator = null) - { - return static::getTranslationMessageWith($translator ?: $this->getLocalTranslator(), $key, $locale, $default); - } - - /** - * Translate using translation string or callback available. - * - * @param \Symfony\Component\Translation\TranslatorInterface $translator - * @param string $key - * @param array $parameters - * @param null $number - * - * @return string - */ - public static function translateWith(TranslatorInterface $translator, string $key, array $parameters = [], $number = null): string - { - $message = static::getTranslationMessageWith($translator, $key, null, $key); - if ($message instanceof Closure) { - return (string) $message(...array_values($parameters)); - } - - if ($number !== null) { - $parameters['%count%'] = $number; - } - if (isset($parameters['%count%'])) { - $parameters[':count'] = $parameters['%count%']; - } - - // @codeCoverageIgnoreStart - $choice = $translator instanceof ContractsTranslatorInterface - ? $translator->trans($key, $parameters) - : $translator->transChoice($key, $number, $parameters); - // @codeCoverageIgnoreEnd - - return (string) $choice; - } - - /** - * Translate using translation string or callback available. - * - * @param string $key - * @param array $parameters - * @param string|int|float|null $number - * @param \Symfony\Component\Translation\TranslatorInterface|null $translator - * @param bool $altNumbers - * - * @return string - */ - public function translate(string $key, array $parameters = [], $number = null, ?TranslatorInterface $translator = null, bool $altNumbers = false): string - { - $translation = static::translateWith($translator ?: $this->getLocalTranslator(), $key, $parameters, $number); - - if ($number !== null && $altNumbers) { - return str_replace($number, $this->translateNumber($number), $translation); - } - - return $translation; - } - - /** - * Returns the alternative number for a given integer if available in the current locale. - * - * @param int $number - * - * @return string - */ - public function translateNumber(int $number): string - { - $translateKey = "alt_numbers.$number"; - $symbol = $this->translate($translateKey); - - if ($symbol !== $translateKey) { - return $symbol; - } - - if ($number > 99 && $this->translate('alt_numbers.99') !== 'alt_numbers.99') { - $start = ''; - foreach ([10000, 1000, 100] as $exp) { - $key = "alt_numbers_pow.$exp"; - if ($number >= $exp && $number < $exp * 10 && ($pow = $this->translate($key)) !== $key) { - $unit = floor($number / $exp); - $number -= $unit * $exp; - $start .= ($unit > 1 ? $this->translate("alt_numbers.$unit") : '').$pow; - } - } - $result = ''; - while ($number) { - $chunk = $number % 100; - $result = $this->translate("alt_numbers.$chunk").$result; - $number = floor($number / 100); - } - - return "$start$result"; - } - - if ($number > 9 && $this->translate('alt_numbers.9') !== 'alt_numbers.9') { - $result = ''; - while ($number) { - $chunk = $number % 10; - $result = $this->translate("alt_numbers.$chunk").$result; - $number = floor($number / 10); - } - - return $result; - } - - return (string) $number; - } - - /** - * Translate a time string from a locale to an other. - * - * @param string $timeString date/time/duration string to translate (may also contain English) - * @param string|null $from input locale of the $timeString parameter (`Carbon::getLocale()` by default) - * @param string|null $to output locale of the result returned (`"en"` by default) - * @param int $mode specify what to translate with options: - * - CarbonInterface::TRANSLATE_ALL (default) - * - CarbonInterface::TRANSLATE_MONTHS - * - CarbonInterface::TRANSLATE_DAYS - * - CarbonInterface::TRANSLATE_UNITS - * - CarbonInterface::TRANSLATE_MERIDIEM - * You can use pipe to group: CarbonInterface::TRANSLATE_MONTHS | CarbonInterface::TRANSLATE_DAYS - * - * @return string - */ - public static function translateTimeString($timeString, $from = null, $to = null, $mode = CarbonInterface::TRANSLATE_ALL) - { - // Fallback source and destination locales - $from = $from ?: static::getLocale(); - $to = $to ?: 'en'; - - if ($from === $to) { - return $timeString; - } - - // Standardize apostrophe - $timeString = strtr($timeString, ['’' => "'"]); - - $fromTranslations = []; - $toTranslations = []; - - foreach (['from', 'to'] as $key) { - $language = $$key; - $translator = Translator::get($language); - $translations = $translator->getMessages(); - - if (!isset($translations[$language])) { - return $timeString; - } - - $translationKey = $key.'Translations'; - $messages = $translations[$language]; - $months = $messages['months'] ?? []; - $weekdays = $messages['weekdays'] ?? []; - $meridiem = $messages['meridiem'] ?? ['AM', 'PM']; - - if (isset($messages['ordinal_words'])) { - $timeString = self::replaceOrdinalWords( - $timeString, - $key === 'from' ? array_flip($messages['ordinal_words']) : $messages['ordinal_words'] - ); - } - - if ($key === 'from') { - foreach (['months', 'weekdays'] as $variable) { - $list = $messages[$variable.'_standalone'] ?? null; - - if ($list) { - foreach ($$variable as $index => &$name) { - $name .= '|'.$messages[$variable.'_standalone'][$index]; - } - } - } - } - - $$translationKey = array_merge( - $mode & CarbonInterface::TRANSLATE_MONTHS ? static::getTranslationArray($months, 12, $timeString) : [], - $mode & CarbonInterface::TRANSLATE_MONTHS ? static::getTranslationArray($messages['months_short'] ?? [], 12, $timeString) : [], - $mode & CarbonInterface::TRANSLATE_DAYS ? static::getTranslationArray($weekdays, 7, $timeString) : [], - $mode & CarbonInterface::TRANSLATE_DAYS ? static::getTranslationArray($messages['weekdays_short'] ?? [], 7, $timeString) : [], - $mode & CarbonInterface::TRANSLATE_DIFF ? static::translateWordsByKeys([ - 'diff_now', - 'diff_today', - 'diff_yesterday', - 'diff_tomorrow', - 'diff_before_yesterday', - 'diff_after_tomorrow', - ], $messages, $key) : [], - $mode & CarbonInterface::TRANSLATE_UNITS ? static::translateWordsByKeys([ - 'year', - 'month', - 'week', - 'day', - 'hour', - 'minute', - 'second', - ], $messages, $key) : [], - $mode & CarbonInterface::TRANSLATE_MERIDIEM ? array_map(function ($hour) use ($meridiem) { - if (\is_array($meridiem)) { - return $meridiem[$hour < 12 ? 0 : 1]; - } - - return $meridiem($hour, 0, false); - }, range(0, 23)) : [] - ); - } - - return substr(preg_replace_callback('/(?<=[\d\s+.\/,_-])('.implode('|', $fromTranslations).')(?=[\d\s+.\/,_-])/iu', function ($match) use ($fromTranslations, $toTranslations) { - [$chunk] = $match; - - foreach ($fromTranslations as $index => $word) { - if (preg_match("/^$word\$/iu", $chunk)) { - return $toTranslations[$index] ?? ''; - } - } - - return $chunk; // @codeCoverageIgnore - }, " $timeString "), 1, -1); - } - - /** - * Translate a time string from the current locale (`$date->locale()`) to an other. - * - * @param string $timeString time string to translate - * @param string|null $to output locale of the result returned ("en" by default) - * - * @return string - */ - public function translateTimeStringTo($timeString, $to = null) - { - return static::translateTimeString($timeString, $this->getTranslatorLocale(), $to); - } - - /** - * Get/set the locale for the current instance. - * - * @param string|null $locale - * @param string ...$fallbackLocales - * - * @return $this|string - */ - public function locale(string $locale = null, ...$fallbackLocales) - { - if ($locale === null) { - return $this->getTranslatorLocale(); - } - - if (!$this->localTranslator || $this->getTranslatorLocale($this->localTranslator) !== $locale) { - $translator = Translator::get($locale); - - if (!empty($fallbackLocales)) { - $translator->setFallbackLocales($fallbackLocales); - - foreach ($fallbackLocales as $fallbackLocale) { - $messages = Translator::get($fallbackLocale)->getMessages(); - - if (isset($messages[$fallbackLocale])) { - $translator->setMessages($fallbackLocale, $messages[$fallbackLocale]); - } - } - } - - $this->localTranslator = $translator; - } - - return $this; - } - - /** - * Get the current translator locale. - * - * @return string - */ - public static function getLocale() - { - return static::getLocaleAwareTranslator()->getLocale(); - } - - /** - * Set the current translator locale and indicate if the source locale file exists. - * Pass 'auto' as locale to use closest language from the current LC_TIME locale. - * - * @param string $locale locale ex. en - * - * @return bool - */ - public static function setLocale($locale) - { - return static::getLocaleAwareTranslator()->setLocale($locale) !== false; - } - - /** - * Set the fallback locale. - * - * @see https://symfony.com/doc/current/components/translation.html#fallback-locales - * - * @param string $locale - */ - public static function setFallbackLocale($locale) - { - $translator = static::getTranslator(); - - if (method_exists($translator, 'setFallbackLocales')) { - $translator->setFallbackLocales([$locale]); - - if ($translator instanceof Translator) { - $preferredLocale = $translator->getLocale(); - $translator->setMessages($preferredLocale, array_replace_recursive( - $translator->getMessages()[$locale] ?? [], - Translator::get($locale)->getMessages()[$locale] ?? [], - $translator->getMessages($preferredLocale) - )); - } - } - } - - /** - * Get the fallback locale. - * - * @see https://symfony.com/doc/current/components/translation.html#fallback-locales - * - * @return string|null - */ - public static function getFallbackLocale() - { - $translator = static::getTranslator(); - - if (method_exists($translator, 'getFallbackLocales')) { - return $translator->getFallbackLocales()[0] ?? null; - } - - return null; - } - - /** - * Set the current locale to the given, execute the passed function, reset the locale to previous one, - * then return the result of the closure (or null if the closure was void). - * - * @param string $locale locale ex. en - * @param callable $func - * - * @return mixed - */ - public static function executeWithLocale($locale, $func) - { - $currentLocale = static::getLocale(); - $result = $func(static::setLocale($locale) ? static::getLocale() : false, static::translator()); - static::setLocale($currentLocale); - - return $result; - } - - /** - * Returns true if the given locale is internally supported and has short-units support. - * Support is considered enabled if either year, day or hour has a short variant translated. - * - * @param string $locale locale ex. en - * - * @return bool - */ - public static function localeHasShortUnits($locale) - { - return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) { - return ($newLocale && (($y = static::translateWith($translator, 'y')) !== 'y' && $y !== static::translateWith($translator, 'year'))) || ( - ($y = static::translateWith($translator, 'd')) !== 'd' && - $y !== static::translateWith($translator, 'day') - ) || ( - ($y = static::translateWith($translator, 'h')) !== 'h' && - $y !== static::translateWith($translator, 'hour') - ); - }); - } - - /** - * Returns true if the given locale is internally supported and has diff syntax support (ago, from now, before, after). - * Support is considered enabled if the 4 sentences are translated in the given locale. - * - * @param string $locale locale ex. en - * - * @return bool - */ - public static function localeHasDiffSyntax($locale) - { - return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) { - if (!$newLocale) { - return false; - } - - foreach (['ago', 'from_now', 'before', 'after'] as $key) { - if ($translator instanceof TranslatorBagInterface && - self::getFromCatalogue($translator, $translator->getCatalogue($newLocale), $key) instanceof Closure - ) { - continue; - } - - if ($translator->trans($key) === $key) { - return false; - } - } - - return true; - }); - } - - /** - * Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow). - * Support is considered enabled if the 3 words are translated in the given locale. - * - * @param string $locale locale ex. en - * - * @return bool - */ - public static function localeHasDiffOneDayWords($locale) - { - return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) { - return $newLocale && - $translator->trans('diff_now') !== 'diff_now' && - $translator->trans('diff_yesterday') !== 'diff_yesterday' && - $translator->trans('diff_tomorrow') !== 'diff_tomorrow'; - }); - } - - /** - * Returns true if the given locale is internally supported and has words for 2-days diff (before yesterday, after tomorrow). - * Support is considered enabled if the 2 words are translated in the given locale. - * - * @param string $locale locale ex. en - * - * @return bool - */ - public static function localeHasDiffTwoDayWords($locale) - { - return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) { - return $newLocale && - $translator->trans('diff_before_yesterday') !== 'diff_before_yesterday' && - $translator->trans('diff_after_tomorrow') !== 'diff_after_tomorrow'; - }); - } - - /** - * Returns true if the given locale is internally supported and has period syntax support (X times, every X, from X, to X). - * Support is considered enabled if the 4 sentences are translated in the given locale. - * - * @param string $locale locale ex. en - * - * @return bool - */ - public static function localeHasPeriodSyntax($locale) - { - return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) { - return $newLocale && - $translator->trans('period_recurrences') !== 'period_recurrences' && - $translator->trans('period_interval') !== 'period_interval' && - $translator->trans('period_start_date') !== 'period_start_date' && - $translator->trans('period_end_date') !== 'period_end_date'; - }); - } - - /** - * Returns the list of internally available locales and already loaded custom locales. - * (It will ignore custom translator dynamic loading.) - * - * @return array - */ - public static function getAvailableLocales() - { - $translator = static::getLocaleAwareTranslator(); - - return $translator instanceof Translator - ? $translator->getAvailableLocales() - : [$translator->getLocale()]; - } - - /** - * Returns list of Language object for each available locale. This object allow you to get the ISO name, native - * name, region and variant of the locale. - * - * @return Language[] - */ - public static function getAvailableLocalesInfo() - { - $languages = []; - foreach (static::getAvailableLocales() as $id) { - $languages[$id] = new Language($id); - } - - return $languages; - } - - /** - * Initialize the default translator instance if necessary. - * - * @return \Symfony\Component\Translation\TranslatorInterface - */ - protected static function translator() - { - if (static::$translator === null) { - static::$translator = Translator::get(); - } - - return static::$translator; - } - - /** - * Get the locale of a given translator. - * - * If null or omitted, current local translator is used. - * If no local translator is in use, current global translator is used. - * - * @param null $translator - * - * @return string|null - */ - protected function getTranslatorLocale($translator = null): ?string - { - if (\func_num_args() === 0) { - $translator = $this->getLocalTranslator(); - } - - $translator = static::getLocaleAwareTranslator($translator); - - return $translator ? $translator->getLocale() : null; - } - - /** - * Throw an error if passed object is not LocaleAwareInterface. - * - * @param LocaleAwareInterface|null $translator - * - * @return LocaleAwareInterface|null - */ - protected static function getLocaleAwareTranslator($translator = null) - { - if (\func_num_args() === 0) { - $translator = static::translator(); - } - - if ($translator && !($translator instanceof LocaleAwareInterface || method_exists($translator, 'getLocale'))) { - throw new NotLocaleAwareException($translator); // @codeCoverageIgnore - } - - return $translator; - } - - /** - * @param mixed $translator - * @param \Symfony\Component\Translation\MessageCatalogueInterface $catalogue - * - * @return mixed - */ - private static function getFromCatalogue($translator, $catalogue, string $id, string $domain = 'messages') - { - return $translator instanceof TranslatorStrongTypeInterface - ? $translator->getFromCatalogue($catalogue, $id, $domain) // @codeCoverageIgnore - : $catalogue->get($id, $domain); - } - - /** - * Return the word cleaned from its translation codes. - * - * @param string $word - * - * @return string - */ - private static function cleanWordFromTranslationString($word) - { - $word = str_replace([':count', '%count', ':time'], '', $word); - $word = strtr($word, ['’' => "'"]); - $word = preg_replace('/({\d+(,(\d+|Inf))?}|[\[\]]\d+(,(\d+|Inf))?[\[\]])/', '', $word); - - return trim($word); - } - - /** - * Translate a list of words. - * - * @param string[] $keys keys to translate. - * @param string[] $messages messages bag handling translations. - * @param string $key 'to' (to get the translation) or 'from' (to get the detection RegExp pattern). - * - * @return string[] - */ - private static function translateWordsByKeys($keys, $messages, $key): array - { - return array_map(function ($wordKey) use ($messages, $key) { - $message = $key === 'from' && isset($messages[$wordKey.'_regexp']) - ? $messages[$wordKey.'_regexp'] - : ($messages[$wordKey] ?? null); - - if (!$message) { - return '>>DO NOT REPLACE<<'; - } - - $parts = explode('|', $message); - - return $key === 'to' - ? self::cleanWordFromTranslationString(end($parts)) - : '(?:'.implode('|', array_map([static::class, 'cleanWordFromTranslationString'], $parts)).')'; - }, $keys); - } - - /** - * Get an array of translations based on the current date. - * - * @param callable $translation - * @param int $length - * @param string $timeString - * - * @return string[] - */ - private static function getTranslationArray($translation, $length, $timeString): array - { - $filler = '>>DO NOT REPLACE<<'; - - if (\is_array($translation)) { - return array_pad($translation, $length, $filler); - } - - $list = []; - $date = static::now(); - - for ($i = 0; $i < $length; $i++) { - $list[] = $translation($date, $timeString, $i) ?? $filler; - } - - return $list; - } - - private static function replaceOrdinalWords(string $timeString, array $ordinalWords): string - { - return preg_replace_callback('/(? - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -/** - * Trait Macros. - * - * Allows users to register macros within the Carbon class. - */ -trait Macro -{ - use Mixin; - - /** - * The registered macros. - * - * @var array - */ - protected static $globalMacros = []; - - /** - * The registered generic macros. - * - * @var array - */ - protected static $globalGenericMacros = []; - - /** - * Register a custom macro. - * - * @example - * ``` - * $userSettings = [ - * 'locale' => 'pt', - * 'timezone' => 'America/Sao_Paulo', - * ]; - * Carbon::macro('userFormat', function () use ($userSettings) { - * return $this->copy()->locale($userSettings['locale'])->tz($userSettings['timezone'])->calendar(); - * }); - * echo Carbon::yesterday()->hours(11)->userFormat(); - * ``` - * - * @param string $name - * @param object|callable $macro - * - * @return void - */ - public static function macro($name, $macro) - { - static::$globalMacros[$name] = $macro; - } - - /** - * Remove all macros and generic macros. - */ - public static function resetMacros() - { - static::$globalMacros = []; - static::$globalGenericMacros = []; - } - - /** - * Register a custom macro. - * - * @param object|callable $macro - * @param int $priority marco with higher priority is tried first - * - * @return void - */ - public static function genericMacro($macro, $priority = 0) - { - if (!isset(static::$globalGenericMacros[$priority])) { - static::$globalGenericMacros[$priority] = []; - krsort(static::$globalGenericMacros, SORT_NUMERIC); - } - - static::$globalGenericMacros[$priority][] = $macro; - } - - /** - * Checks if macro is registered globally. - * - * @param string $name - * - * @return bool - */ - public static function hasMacro($name) - { - return isset(static::$globalMacros[$name]); - } - - /** - * Get the raw callable macro registered globally for a given name. - * - * @param string $name - * - * @return callable|null - */ - public static function getMacro($name) - { - return static::$globalMacros[$name] ?? null; - } - - /** - * Checks if macro is registered globally or locally. - * - * @param string $name - * - * @return bool - */ - public function hasLocalMacro($name) - { - return ($this->localMacros && isset($this->localMacros[$name])) || static::hasMacro($name); - } - - /** - * Get the raw callable macro registered globally or locally for a given name. - * - * @param string $name - * - * @return callable|null - */ - public function getLocalMacro($name) - { - return ($this->localMacros ?? [])[$name] ?? static::getMacro($name); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/MagicParameter.php b/vendor/nesbot/carbon/src/Carbon/Traits/MagicParameter.php deleted file mode 100644 index 310a44d0..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/MagicParameter.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -/** - * Trait MagicParameter. - * - * Allows to retrieve parameter in magic calls by index or name. - */ -trait MagicParameter -{ - private function getMagicParameter(array $parameters, int $index, string $key, $default) - { - if (\array_key_exists($index, $parameters)) { - return $parameters[$index]; - } - - if (\array_key_exists($key, $parameters)) { - return $parameters[$key]; - } - - return $default; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Mixin.php b/vendor/nesbot/carbon/src/Carbon/Traits/Mixin.php deleted file mode 100644 index 58224545..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Mixin.php +++ /dev/null @@ -1,226 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Carbon\CarbonInterface; -use Carbon\CarbonInterval; -use Carbon\CarbonPeriod; -use Closure; -use Generator; -use ReflectionClass; -use ReflectionException; -use ReflectionMethod; -use Throwable; - -/** - * Trait Mixin. - * - * Allows mixing in entire classes with multiple macros. - */ -trait Mixin -{ - /** - * Stack of macro instance contexts. - * - * @var array - */ - protected static $macroContextStack = []; - - /** - * Mix another object into the class. - * - * @example - * ``` - * Carbon::mixin(new class { - * public function addMoon() { - * return function () { - * return $this->addDays(30); - * }; - * } - * public function subMoon() { - * return function () { - * return $this->subDays(30); - * }; - * } - * }); - * $fullMoon = Carbon::create('2018-12-22'); - * $nextFullMoon = $fullMoon->addMoon(); - * $blackMoon = Carbon::create('2019-01-06'); - * $previousBlackMoon = $blackMoon->subMoon(); - * echo "$nextFullMoon\n"; - * echo "$previousBlackMoon\n"; - * ``` - * - * @param object|string $mixin - * - * @throws ReflectionException - * - * @return void - */ - public static function mixin($mixin) - { - \is_string($mixin) && trait_exists($mixin) - ? self::loadMixinTrait($mixin) - : self::loadMixinClass($mixin); - } - - /** - * @param object|string $mixin - * - * @throws ReflectionException - */ - private static function loadMixinClass($mixin) - { - $methods = (new ReflectionClass($mixin))->getMethods( - ReflectionMethod::IS_PUBLIC | ReflectionMethod::IS_PROTECTED - ); - - foreach ($methods as $method) { - if ($method->isConstructor() || $method->isDestructor()) { - continue; - } - - $method->setAccessible(true); - - static::macro($method->name, $method->invoke($mixin)); - } - } - - /** - * @param string $trait - */ - private static function loadMixinTrait($trait) - { - $context = eval(self::getAnonymousClassCodeForTrait($trait)); - $className = \get_class($context); - $baseClass = static::class; - - foreach (self::getMixableMethods($context) as $name) { - $closureBase = Closure::fromCallable([$context, $name]); - - static::macro($name, function (...$parameters) use ($closureBase, $className, $baseClass) { - $downContext = isset($this) ? ($this) : new $baseClass(); - $context = isset($this) ? $this->cast($className) : new $className(); - - try { - // @ is required to handle error if not converted into exceptions - $closure = @$closureBase->bindTo($context); - } catch (Throwable $throwable) { // @codeCoverageIgnore - $closure = $closureBase; // @codeCoverageIgnore - } - - // in case of errors not converted into exceptions - $closure = $closure ?: $closureBase; - - $result = $closure(...$parameters); - - if (!($result instanceof $className)) { - return $result; - } - - if ($downContext instanceof CarbonInterface && $result instanceof CarbonInterface) { - if ($context !== $result) { - $downContext = $downContext->copy(); - } - - return $downContext - ->setTimezone($result->getTimezone()) - ->modify($result->format('Y-m-d H:i:s.u')) - ->settings($result->getSettings()); - } - - if ($downContext instanceof CarbonInterval && $result instanceof CarbonInterval) { - if ($context !== $result) { - $downContext = $downContext->copy(); - } - - $downContext->copyProperties($result); - self::copyStep($downContext, $result); - self::copyNegativeUnits($downContext, $result); - - return $downContext->settings($result->getSettings()); - } - - if ($downContext instanceof CarbonPeriod && $result instanceof CarbonPeriod) { - if ($context !== $result) { - $downContext = $downContext->copy(); - } - - return $downContext - ->setDates($result->getStartDate(), $result->getEndDate()) - ->setRecurrences($result->getRecurrences()) - ->setOptions($result->getOptions()) - ->settings($result->getSettings()); - } - - return $result; - }); - } - } - - private static function getAnonymousClassCodeForTrait(string $trait) - { - return 'return new class() extends '.static::class.' {use '.$trait.';};'; - } - - private static function getMixableMethods(self $context): Generator - { - foreach (get_class_methods($context) as $name) { - if (method_exists(static::class, $name)) { - continue; - } - - yield $name; - } - } - - /** - * Stack a Carbon context from inside calls of self::this() and execute a given action. - * - * @param static|null $context - * @param callable $callable - * - * @throws Throwable - * - * @return mixed - */ - protected static function bindMacroContext($context, callable $callable) - { - static::$macroContextStack[] = $context; - - try { - return $callable(); - } finally { - array_pop(static::$macroContextStack); - } - } - - /** - * Return the current context from inside a macro callee or a null if static. - * - * @return static|null - */ - protected static function context() - { - return end(static::$macroContextStack) ?: null; - } - - /** - * Return the current context from inside a macro callee or a new one if static. - * - * @return static - */ - protected static function this() - { - return end(static::$macroContextStack) ?: new static(); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Modifiers.php b/vendor/nesbot/carbon/src/Carbon/Traits/Modifiers.php deleted file mode 100644 index 39343d8f..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Modifiers.php +++ /dev/null @@ -1,472 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Carbon\CarbonInterface; -use ReturnTypeWillChange; - -/** - * Trait Modifiers. - * - * Returns dates relative to current date using modifier short-hand. - */ -trait Modifiers -{ - /** - * Midday/noon hour. - * - * @var int - */ - protected static $midDayAt = 12; - - /** - * get midday/noon hour - * - * @return int - */ - public static function getMidDayAt() - { - return static::$midDayAt; - } - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather consider mid-day is always 12pm, then if you need to test if it's an other - * hour, test it explicitly: - * $date->format('G') == 13 - * or to set explicitly to a given hour: - * $date->setTime(13, 0, 0, 0) - * - * Set midday/noon hour - * - * @param int $hour midday hour - * - * @return void - */ - public static function setMidDayAt($hour) - { - static::$midDayAt = $hour; - } - - /** - * Modify to midday, default to self::$midDayAt - * - * @return static - */ - public function midDay() - { - return $this->setTime(static::$midDayAt, 0, 0, 0); - } - - /** - * Modify to the next occurrence of a given modifier such as a day of - * the week. If no modifier is provided, modify to the next occurrence - * of the current day of the week. Use the supplied constants - * to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param string|int|null $modifier - * - * @return static|false - */ - public function next($modifier = null) - { - if ($modifier === null) { - $modifier = $this->dayOfWeek; - } - - return $this->change( - 'next '.(\is_string($modifier) ? $modifier : static::$days[$modifier]) - ); - } - - /** - * Go forward or backward to the next week- or weekend-day. - * - * @param bool $weekday - * @param bool $forward - * - * @return static - */ - private function nextOrPreviousDay($weekday = true, $forward = true) - { - /** @var CarbonInterface $date */ - $date = $this; - $step = $forward ? 1 : -1; - - do { - $date = $date->addDays($step); - } while ($weekday ? $date->isWeekend() : $date->isWeekday()); - - return $date; - } - - /** - * Go forward to the next weekday. - * - * @return static - */ - public function nextWeekday() - { - return $this->nextOrPreviousDay(); - } - - /** - * Go backward to the previous weekday. - * - * @return static - */ - public function previousWeekday() - { - return $this->nextOrPreviousDay(true, false); - } - - /** - * Go forward to the next weekend day. - * - * @return static - */ - public function nextWeekendDay() - { - return $this->nextOrPreviousDay(false); - } - - /** - * Go backward to the previous weekend day. - * - * @return static - */ - public function previousWeekendDay() - { - return $this->nextOrPreviousDay(false, false); - } - - /** - * Modify to the previous occurrence of a given modifier such as a day of - * the week. If no dayOfWeek is provided, modify to the previous occurrence - * of the current day of the week. Use the supplied constants - * to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param string|int|null $modifier - * - * @return static|false - */ - public function previous($modifier = null) - { - if ($modifier === null) { - $modifier = $this->dayOfWeek; - } - - return $this->change( - 'last '.(\is_string($modifier) ? $modifier : static::$days[$modifier]) - ); - } - - /** - * Modify to the first occurrence of a given day of the week - * in the current month. If no dayOfWeek is provided, modify to the - * first day of the current month. Use the supplied constants - * to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int|null $dayOfWeek - * - * @return static - */ - public function firstOfMonth($dayOfWeek = null) - { - $date = $this->startOfDay(); - - if ($dayOfWeek === null) { - return $date->day(1); - } - - return $date->modify('first '.static::$days[$dayOfWeek].' of '.$date->rawFormat('F').' '.$date->year); - } - - /** - * Modify to the last occurrence of a given day of the week - * in the current month. If no dayOfWeek is provided, modify to the - * last day of the current month. Use the supplied constants - * to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int|null $dayOfWeek - * - * @return static - */ - public function lastOfMonth($dayOfWeek = null) - { - $date = $this->startOfDay(); - - if ($dayOfWeek === null) { - return $date->day($date->daysInMonth); - } - - return $date->modify('last '.static::$days[$dayOfWeek].' of '.$date->rawFormat('F').' '.$date->year); - } - - /** - * Modify to the given occurrence of a given day of the week - * in the current month. If the calculated occurrence is outside the scope - * of the current month, then return false and no modifications are made. - * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int $nth - * @param int $dayOfWeek - * - * @return mixed - */ - public function nthOfMonth($nth, $dayOfWeek) - { - $date = $this->avoidMutation()->firstOfMonth(); - $check = $date->rawFormat('Y-m'); - $date = $date->modify('+'.$nth.' '.static::$days[$dayOfWeek]); - - return $date->rawFormat('Y-m') === $check ? $this->modify((string) $date) : false; - } - - /** - * Modify to the first occurrence of a given day of the week - * in the current quarter. If no dayOfWeek is provided, modify to the - * first day of the current quarter. Use the supplied constants - * to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int|null $dayOfWeek day of the week default null - * - * @return static - */ - public function firstOfQuarter($dayOfWeek = null) - { - return $this->setDate($this->year, $this->quarter * static::MONTHS_PER_QUARTER - 2, 1)->firstOfMonth($dayOfWeek); - } - - /** - * Modify to the last occurrence of a given day of the week - * in the current quarter. If no dayOfWeek is provided, modify to the - * last day of the current quarter. Use the supplied constants - * to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int|null $dayOfWeek day of the week default null - * - * @return static - */ - public function lastOfQuarter($dayOfWeek = null) - { - return $this->setDate($this->year, $this->quarter * static::MONTHS_PER_QUARTER, 1)->lastOfMonth($dayOfWeek); - } - - /** - * Modify to the given occurrence of a given day of the week - * in the current quarter. If the calculated occurrence is outside the scope - * of the current quarter, then return false and no modifications are made. - * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int $nth - * @param int $dayOfWeek - * - * @return mixed - */ - public function nthOfQuarter($nth, $dayOfWeek) - { - $date = $this->avoidMutation()->day(1)->month($this->quarter * static::MONTHS_PER_QUARTER); - $lastMonth = $date->month; - $year = $date->year; - $date = $date->firstOfQuarter()->modify('+'.$nth.' '.static::$days[$dayOfWeek]); - - return ($lastMonth < $date->month || $year !== $date->year) ? false : $this->modify((string) $date); - } - - /** - * Modify to the first occurrence of a given day of the week - * in the current year. If no dayOfWeek is provided, modify to the - * first day of the current year. Use the supplied constants - * to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int|null $dayOfWeek day of the week default null - * - * @return static - */ - public function firstOfYear($dayOfWeek = null) - { - return $this->month(1)->firstOfMonth($dayOfWeek); - } - - /** - * Modify to the last occurrence of a given day of the week - * in the current year. If no dayOfWeek is provided, modify to the - * last day of the current year. Use the supplied constants - * to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int|null $dayOfWeek day of the week default null - * - * @return static - */ - public function lastOfYear($dayOfWeek = null) - { - return $this->month(static::MONTHS_PER_YEAR)->lastOfMonth($dayOfWeek); - } - - /** - * Modify to the given occurrence of a given day of the week - * in the current year. If the calculated occurrence is outside the scope - * of the current year, then return false and no modifications are made. - * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY. - * - * @param int $nth - * @param int $dayOfWeek - * - * @return mixed - */ - public function nthOfYear($nth, $dayOfWeek) - { - $date = $this->avoidMutation()->firstOfYear()->modify('+'.$nth.' '.static::$days[$dayOfWeek]); - - return $this->year === $date->year ? $this->modify((string) $date) : false; - } - - /** - * Modify the current instance to the average of a given instance (default now) and the current instance - * (second-precision). - * - * @param \Carbon\Carbon|\DateTimeInterface|null $date - * - * @return static - */ - public function average($date = null) - { - return $this->addRealMicroseconds((int) ($this->diffInRealMicroseconds($this->resolveCarbon($date), false) / 2)); - } - - /** - * Get the closest date from the instance (second-precision). - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 - * - * @return static - */ - public function closest($date1, $date2) - { - return $this->diffInRealMicroseconds($date1) < $this->diffInRealMicroseconds($date2) ? $date1 : $date2; - } - - /** - * Get the farthest date from the instance (second-precision). - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 - * - * @return static - */ - public function farthest($date1, $date2) - { - return $this->diffInRealMicroseconds($date1) > $this->diffInRealMicroseconds($date2) ? $date1 : $date2; - } - - /** - * Get the minimum instance between a given instance (default now) and the current instance. - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return static - */ - public function min($date = null) - { - $date = $this->resolveCarbon($date); - - return $this->lt($date) ? $this : $date; - } - - /** - * Get the minimum instance between a given instance (default now) and the current instance. - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see min() - * - * @return static - */ - public function minimum($date = null) - { - return $this->min($date); - } - - /** - * Get the maximum instance between a given instance (default now) and the current instance. - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @return static - */ - public function max($date = null) - { - $date = $this->resolveCarbon($date); - - return $this->gt($date) ? $this : $date; - } - - /** - * Get the maximum instance between a given instance (default now) and the current instance. - * - * @param \Carbon\Carbon|\DateTimeInterface|mixed $date - * - * @see max() - * - * @return static - */ - public function maximum($date = null) - { - return $this->max($date); - } - - /** - * Calls \DateTime::modify if mutable or \DateTimeImmutable::modify else. - * - * @see https://php.net/manual/en/datetime.modify.php - * - * @return static|false - */ - #[ReturnTypeWillChange] - public function modify($modify) - { - return parent::modify((string) $modify); - } - - /** - * Similar to native modify() method of DateTime but can handle more grammars. - * - * @example - * ``` - * echo Carbon::now()->change('next 2pm'); - * ``` - * - * @link https://php.net/manual/en/datetime.modify.php - * - * @param string $modifier - * - * @return static|false - */ - public function change($modifier) - { - return $this->modify(preg_replace_callback('/^(next|previous|last)\s+(\d{1,2}(h|am|pm|:\d{1,2}(:\d{1,2})?))$/i', function ($match) { - $match[2] = str_replace('h', ':00', $match[2]); - $test = $this->avoidMutation()->modify($match[2]); - $method = $match[1] === 'next' ? 'lt' : 'gt'; - $match[1] = $test->$method($this) ? $match[1].' day' : 'today'; - - return $match[1].' '.$match[2]; - }, strtr(trim($modifier), [ - ' at ' => ' ', - 'just now' => 'now', - 'after tomorrow' => 'tomorrow +1 day', - 'before yesterday' => 'yesterday -1 day', - ]))); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Mutability.php b/vendor/nesbot/carbon/src/Carbon/Traits/Mutability.php deleted file mode 100644 index 561c867d..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Mutability.php +++ /dev/null @@ -1,71 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Carbon\Carbon; -use Carbon\CarbonImmutable; - -/** - * Trait Mutability. - * - * Utils to know if the current object is mutable or immutable and convert it. - */ -trait Mutability -{ - use Cast; - - /** - * Returns true if the current class/instance is mutable. - * - * @return bool - */ - public static function isMutable() - { - return false; - } - - /** - * Returns true if the current class/instance is immutable. - * - * @return bool - */ - public static function isImmutable() - { - return !static::isMutable(); - } - - /** - * Return a mutable copy of the instance. - * - * @return Carbon - */ - public function toMutable() - { - /** @var Carbon $date */ - $date = $this->cast(Carbon::class); - - return $date; - } - - /** - * Return a immutable copy of the instance. - * - * @return CarbonImmutable - */ - public function toImmutable() - { - /** @var CarbonImmutable $date */ - $date = $this->cast(CarbonImmutable::class); - - return $date; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php b/vendor/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php deleted file mode 100644 index c77a1024..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -trait ObjectInitialisation -{ - /** - * True when parent::__construct has been called. - * - * @var string - */ - protected $constructedObjectId; -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Options.php b/vendor/nesbot/carbon/src/Carbon/Traits/Options.php deleted file mode 100644 index 48f97397..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Options.php +++ /dev/null @@ -1,471 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Carbon\CarbonInterface; -use DateTimeInterface; -use Throwable; - -/** - * Trait Options. - * - * Embed base methods to change settings of Carbon classes. - * - * Depends on the following methods: - * - * @method static shiftTimezone($timezone) Set the timezone - */ -trait Options -{ - use Localization; - - /** - * Customizable PHP_INT_SIZE override. - * - * @var int - */ - public static $PHPIntSize = PHP_INT_SIZE; - - /** - * First day of week. - * - * @var int|string - */ - protected static $weekStartsAt = CarbonInterface::MONDAY; - - /** - * Last day of week. - * - * @var int|string - */ - protected static $weekEndsAt = CarbonInterface::SUNDAY; - - /** - * Days of weekend. - * - * @var array - */ - protected static $weekendDays = [ - CarbonInterface::SATURDAY, - CarbonInterface::SUNDAY, - ]; - - /** - * Format regex patterns. - * - * @var array - */ - protected static $regexFormats = [ - 'd' => '(3[01]|[12][0-9]|0[1-9])', - 'D' => '(Sun|Mon|Tue|Wed|Thu|Fri|Sat)', - 'j' => '([123][0-9]|[1-9])', - 'l' => '([a-zA-Z]{2,})', - 'N' => '([1-7])', - 'S' => '(st|nd|rd|th)', - 'w' => '([0-6])', - 'z' => '(36[0-5]|3[0-5][0-9]|[12][0-9]{2}|[1-9]?[0-9])', - 'W' => '(5[012]|[1-4][0-9]|0?[1-9])', - 'F' => '([a-zA-Z]{2,})', - 'm' => '(1[012]|0[1-9])', - 'M' => '([a-zA-Z]{3})', - 'n' => '(1[012]|[1-9])', - 't' => '(2[89]|3[01])', - 'L' => '(0|1)', - 'o' => '([1-9][0-9]{0,4})', - 'Y' => '([1-9]?[0-9]{4})', - 'y' => '([0-9]{2})', - 'a' => '(am|pm)', - 'A' => '(AM|PM)', - 'B' => '([0-9]{3})', - 'g' => '(1[012]|[1-9])', - 'G' => '(2[0-3]|1?[0-9])', - 'h' => '(1[012]|0[1-9])', - 'H' => '(2[0-3]|[01][0-9])', - 'i' => '([0-5][0-9])', - 's' => '([0-5][0-9])', - 'u' => '([0-9]{1,6})', - 'v' => '([0-9]{1,3})', - 'e' => '([a-zA-Z]{1,5})|([a-zA-Z]*\\/[a-zA-Z]*)', - 'I' => '(0|1)', - 'O' => '([+-](1[012]|0[0-9])[0134][05])', - 'P' => '([+-](1[012]|0[0-9]):[0134][05])', - 'p' => '(Z|[+-](1[012]|0[0-9]):[0134][05])', - 'T' => '([a-zA-Z]{1,5})', - 'Z' => '(-?[1-5]?[0-9]{1,4})', - 'U' => '([0-9]*)', - - // The formats below are combinations of the above formats. - 'c' => '(([1-9]?[0-9]{4})-(1[012]|0[1-9])-(3[01]|[12][0-9]|0[1-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[+-](1[012]|0[0-9]):([0134][05]))', // Y-m-dTH:i:sP - 'r' => '(([a-zA-Z]{3}), ([123][0-9]|0[1-9]) ([a-zA-Z]{3}) ([1-9]?[0-9]{4}) (2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9]) [+-](1[012]|0[0-9])([0134][05]))', // D, d M Y H:i:s O - ]; - - /** - * Format modifiers (such as available in createFromFormat) regex patterns. - * - * @var array - */ - protected static $regexFormatModifiers = [ - '*' => '.+', - ' ' => '[ ]', - '#' => '[;:\\/.,()-]', - '?' => '([^a]|[a])', - '!' => '', - '|' => '', - '+' => '', - ]; - - /** - * Indicates if months should be calculated with overflow. - * Global setting. - * - * @var bool - */ - protected static $monthsOverflow = true; - - /** - * Indicates if years should be calculated with overflow. - * Global setting. - * - * @var bool - */ - protected static $yearsOverflow = true; - - /** - * Indicates if the strict mode is in use. - * Global setting. - * - * @var bool - */ - protected static $strictModeEnabled = true; - - /** - * Function to call instead of format. - * - * @var string|callable|null - */ - protected static $formatFunction; - - /** - * Function to call instead of createFromFormat. - * - * @var string|callable|null - */ - protected static $createFromFormatFunction; - - /** - * Function to call instead of parse. - * - * @var string|callable|null - */ - protected static $parseFunction; - - /** - * Indicates if months should be calculated with overflow. - * Specific setting. - * - * @var bool|null - */ - protected $localMonthsOverflow; - - /** - * Indicates if years should be calculated with overflow. - * Specific setting. - * - * @var bool|null - */ - protected $localYearsOverflow; - - /** - * Indicates if the strict mode is in use. - * Specific setting. - * - * @var bool|null - */ - protected $localStrictModeEnabled; - - /** - * Options for diffForHumans and forHumans methods. - * - * @var bool|null - */ - protected $localHumanDiffOptions; - - /** - * Format to use on string cast. - * - * @var string|null - */ - protected $localToStringFormat; - - /** - * Format to use on JSON serialization. - * - * @var string|null - */ - protected $localSerializer; - - /** - * Instance-specific macros. - * - * @var array|null - */ - protected $localMacros; - - /** - * Instance-specific generic macros. - * - * @var array|null - */ - protected $localGenericMacros; - - /** - * Function to call instead of format. - * - * @var string|callable|null - */ - protected $localFormatFunction; - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * @see settings - * - * Enable the strict mode (or disable with passing false). - * - * @param bool $strictModeEnabled - */ - public static function useStrictMode($strictModeEnabled = true) - { - static::$strictModeEnabled = $strictModeEnabled; - } - - /** - * Returns true if the strict mode is globally in use, false else. - * (It can be overridden in specific instances.) - * - * @return bool - */ - public static function isStrictModeEnabled() - { - return static::$strictModeEnabled; - } - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @see settings - * - * Indicates if months should be calculated with overflow. - * - * @param bool $monthsOverflow - * - * @return void - */ - public static function useMonthsOverflow($monthsOverflow = true) - { - static::$monthsOverflow = $monthsOverflow; - } - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @see settings - * - * Reset the month overflow behavior. - * - * @return void - */ - public static function resetMonthsOverflow() - { - static::$monthsOverflow = true; - } - - /** - * Get the month overflow global behavior (can be overridden in specific instances). - * - * @return bool - */ - public static function shouldOverflowMonths() - { - return static::$monthsOverflow; - } - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @see settings - * - * Indicates if years should be calculated with overflow. - * - * @param bool $yearsOverflow - * - * @return void - */ - public static function useYearsOverflow($yearsOverflow = true) - { - static::$yearsOverflow = $yearsOverflow; - } - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather use the ->settings() method. - * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants - * are available for quarters, years, decade, centuries, millennia (singular and plural forms). - * @see settings - * - * Reset the month overflow behavior. - * - * @return void - */ - public static function resetYearsOverflow() - { - static::$yearsOverflow = true; - } - - /** - * Get the month overflow global behavior (can be overridden in specific instances). - * - * @return bool - */ - public static function shouldOverflowYears() - { - return static::$yearsOverflow; - } - - /** - * Set specific options. - * - strictMode: true|false|null - * - monthOverflow: true|false|null - * - yearOverflow: true|false|null - * - humanDiffOptions: int|null - * - toStringFormat: string|Closure|null - * - toJsonFormat: string|Closure|null - * - locale: string|null - * - timezone: \DateTimeZone|string|int|null - * - macros: array|null - * - genericMacros: array|null - * - * @param array $settings - * - * @return $this|static - */ - public function settings(array $settings) - { - $this->localStrictModeEnabled = $settings['strictMode'] ?? null; - $this->localMonthsOverflow = $settings['monthOverflow'] ?? null; - $this->localYearsOverflow = $settings['yearOverflow'] ?? null; - $this->localHumanDiffOptions = $settings['humanDiffOptions'] ?? null; - $this->localToStringFormat = $settings['toStringFormat'] ?? null; - $this->localSerializer = $settings['toJsonFormat'] ?? null; - $this->localMacros = $settings['macros'] ?? null; - $this->localGenericMacros = $settings['genericMacros'] ?? null; - $this->localFormatFunction = $settings['formatFunction'] ?? null; - - if (isset($settings['locale'])) { - $locales = $settings['locale']; - - if (!\is_array($locales)) { - $locales = [$locales]; - } - - $this->locale(...$locales); - } - - if (isset($settings['innerTimezone'])) { - return $this->setTimezone($settings['innerTimezone']); - } - - if (isset($settings['timezone'])) { - return $this->shiftTimezone($settings['timezone']); - } - - return $this; - } - - /** - * Returns current local settings. - * - * @return array - */ - public function getSettings() - { - $settings = []; - $map = [ - 'localStrictModeEnabled' => 'strictMode', - 'localMonthsOverflow' => 'monthOverflow', - 'localYearsOverflow' => 'yearOverflow', - 'localHumanDiffOptions' => 'humanDiffOptions', - 'localToStringFormat' => 'toStringFormat', - 'localSerializer' => 'toJsonFormat', - 'localMacros' => 'macros', - 'localGenericMacros' => 'genericMacros', - 'locale' => 'locale', - 'tzName' => 'timezone', - 'localFormatFunction' => 'formatFunction', - ]; - - foreach ($map as $property => $key) { - $value = $this->$property ?? null; - - if ($value !== null && ($key !== 'locale' || $value !== 'en' || $this->localTranslator)) { - $settings[$key] = $value; - } - } - - return $settings; - } - - /** - * Show truthy properties on var_dump(). - * - * @return array - */ - public function __debugInfo() - { - $infos = array_filter(get_object_vars($this), static function ($var) { - return $var; - }); - - foreach (['dumpProperties', 'constructedObjectId', 'constructed'] as $property) { - if (isset($infos[$property])) { - unset($infos[$property]); - } - } - - $this->addExtraDebugInfos($infos); - - return $infos; - } - - protected function addExtraDebugInfos(&$infos): void - { - if ($this instanceof DateTimeInterface) { - try { - if (!isset($infos['date'])) { - $infos['date'] = $this->format(CarbonInterface::MOCK_DATETIME_FORMAT); - } - - if (!isset($infos['timezone'])) { - $infos['timezone'] = $this->tzName; - } - } catch (Throwable $exception) { - // noop - } - } - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Rounding.php b/vendor/nesbot/carbon/src/Carbon/Traits/Rounding.php deleted file mode 100644 index 85ff5a71..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Rounding.php +++ /dev/null @@ -1,254 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Carbon\CarbonInterface; -use Carbon\Exceptions\UnknownUnitException; - -/** - * Trait Rounding. - * - * Round, ceil, floor units. - * - * Depends on the following methods: - * - * @method static copy() - * @method static startOfWeek(int $weekStartsAt = null) - */ -trait Rounding -{ - use IntervalRounding; - - /** - * Round the current instance at the given unit with given precision if specified and the given function. - * - * @param string $unit - * @param float|int $precision - * @param string $function - * - * @return CarbonInterface - */ - public function roundUnit($unit, $precision = 1, $function = 'round') - { - $metaUnits = [ - // @call roundUnit - 'millennium' => [static::YEARS_PER_MILLENNIUM, 'year'], - // @call roundUnit - 'century' => [static::YEARS_PER_CENTURY, 'year'], - // @call roundUnit - 'decade' => [static::YEARS_PER_DECADE, 'year'], - // @call roundUnit - 'quarter' => [static::MONTHS_PER_QUARTER, 'month'], - // @call roundUnit - 'millisecond' => [1000, 'microsecond'], - ]; - $normalizedUnit = static::singularUnit($unit); - $ranges = array_merge(static::getRangesByUnit($this->daysInMonth), [ - // @call roundUnit - 'microsecond' => [0, 999999], - ]); - $factor = 1; - - if ($normalizedUnit === 'week') { - $normalizedUnit = 'day'; - $precision *= static::DAYS_PER_WEEK; - } - - if (isset($metaUnits[$normalizedUnit])) { - [$factor, $normalizedUnit] = $metaUnits[$normalizedUnit]; - } - - $precision *= $factor; - - if (!isset($ranges[$normalizedUnit])) { - throw new UnknownUnitException($unit); - } - - $found = false; - $fraction = 0; - $arguments = null; - $initialValue = null; - $factor = $this->year < 0 ? -1 : 1; - $changes = []; - $minimumInc = null; - - foreach ($ranges as $unit => [$minimum, $maximum]) { - if ($normalizedUnit === $unit) { - $arguments = [$this->$unit, $minimum]; - $initialValue = $this->$unit; - $fraction = $precision - floor($precision); - $found = true; - - continue; - } - - if ($found) { - $delta = $maximum + 1 - $minimum; - $factor /= $delta; - $fraction *= $delta; - $inc = ($this->$unit - $minimum) * $factor; - - if ($inc !== 0.0) { - $minimumInc = $minimumInc ?? ($arguments[0] / pow(2, 52)); - - // If value is still the same when adding a non-zero increment/decrement, - // it means precision got lost in the addition - if (abs($inc) < $minimumInc) { - $inc = $minimumInc * ($inc < 0 ? -1 : 1); - } - - // If greater than $precision, assume precision loss caused an overflow - if ($function !== 'floor' || abs($arguments[0] + $inc - $initialValue) >= $precision) { - $arguments[0] += $inc; - } - } - - $changes[$unit] = round( - $minimum + ($fraction ? $fraction * $function(($this->$unit - $minimum) / $fraction) : 0) - ); - - // Cannot use modulo as it lose double precision - while ($changes[$unit] >= $delta) { - $changes[$unit] -= $delta; - } - - $fraction -= floor($fraction); - } - } - - [$value, $minimum] = $arguments; - $normalizedValue = floor($function(($value - $minimum) / $precision) * $precision + $minimum); - - /** @var CarbonInterface $result */ - $result = $this; - - foreach ($changes as $unit => $value) { - $result = $result->$unit($value); - } - - return $result->$normalizedUnit($normalizedValue); - } - - /** - * Truncate the current instance at the given unit with given precision if specified. - * - * @param string $unit - * @param float|int $precision - * - * @return CarbonInterface - */ - public function floorUnit($unit, $precision = 1) - { - return $this->roundUnit($unit, $precision, 'floor'); - } - - /** - * Ceil the current instance at the given unit with given precision if specified. - * - * @param string $unit - * @param float|int $precision - * - * @return CarbonInterface - */ - public function ceilUnit($unit, $precision = 1) - { - return $this->roundUnit($unit, $precision, 'ceil'); - } - - /** - * Round the current instance second with given precision if specified. - * - * @param float|int|string|\DateInterval|null $precision - * @param string $function - * - * @return CarbonInterface - */ - public function round($precision = 1, $function = 'round') - { - return $this->roundWith($precision, $function); - } - - /** - * Round the current instance second with given precision if specified. - * - * @param float|int|string|\DateInterval|null $precision - * - * @return CarbonInterface - */ - public function floor($precision = 1) - { - return $this->round($precision, 'floor'); - } - - /** - * Ceil the current instance second with given precision if specified. - * - * @param float|int|string|\DateInterval|null $precision - * - * @return CarbonInterface - */ - public function ceil($precision = 1) - { - return $this->round($precision, 'ceil'); - } - - /** - * Round the current instance week. - * - * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week - * - * @return CarbonInterface - */ - public function roundWeek($weekStartsAt = null) - { - return $this->closest( - $this->avoidMutation()->floorWeek($weekStartsAt), - $this->avoidMutation()->ceilWeek($weekStartsAt) - ); - } - - /** - * Truncate the current instance week. - * - * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week - * - * @return CarbonInterface - */ - public function floorWeek($weekStartsAt = null) - { - return $this->startOfWeek($weekStartsAt); - } - - /** - * Ceil the current instance week. - * - * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week - * - * @return CarbonInterface - */ - public function ceilWeek($weekStartsAt = null) - { - if ($this->isMutable()) { - $startOfWeek = $this->avoidMutation()->startOfWeek($weekStartsAt); - - return $startOfWeek != $this ? - $this->startOfWeek($weekStartsAt)->addWeek() : - $this; - } - - $startOfWeek = $this->startOfWeek($weekStartsAt); - - return $startOfWeek != $this ? - $startOfWeek->addWeek() : - $this->avoidMutation(); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Serialization.php b/vendor/nesbot/carbon/src/Carbon/Traits/Serialization.php deleted file mode 100644 index c1d5c5e1..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Serialization.php +++ /dev/null @@ -1,326 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Carbon\Exceptions\InvalidFormatException; -use ReturnTypeWillChange; -use Throwable; - -/** - * Trait Serialization. - * - * Serialization and JSON stuff. - * - * Depends on the following properties: - * - * @property int $year - * @property int $month - * @property int $daysInMonth - * @property int $quarter - * - * Depends on the following methods: - * - * @method string|static locale(string $locale = null, string ...$fallbackLocales) - * @method string toJSON() - */ -trait Serialization -{ - use ObjectInitialisation; - - /** - * The custom Carbon JSON serializer. - * - * @var callable|null - */ - protected static $serializer; - - /** - * List of key to use for dump/serialization. - * - * @var string[] - */ - protected $dumpProperties = ['date', 'timezone_type', 'timezone']; - - /** - * Locale to dump comes here before serialization. - * - * @var string|null - */ - protected $dumpLocale; - - /** - * Embed date properties to dump in a dedicated variables so it won't overlap native - * DateTime ones. - * - * @var array|null - */ - protected $dumpDateProperties; - - /** - * Return a serialized string of the instance. - * - * @return string - */ - public function serialize() - { - return serialize($this); - } - - /** - * Create an instance from a serialized string. - * - * @param string $value - * - * @throws InvalidFormatException - * - * @return static - */ - public static function fromSerialized($value) - { - $instance = @unserialize((string) $value); - - if (!$instance instanceof static) { - throw new InvalidFormatException("Invalid serialized value: $value"); - } - - return $instance; - } - - /** - * The __set_state handler. - * - * @param string|array $dump - * - * @return static - */ - #[ReturnTypeWillChange] - public static function __set_state($dump) - { - if (\is_string($dump)) { - return static::parse($dump); - } - - /** @var \DateTimeInterface $date */ - $date = get_parent_class(static::class) && method_exists(parent::class, '__set_state') - ? parent::__set_state((array) $dump) - : (object) $dump; - - return static::instance($date); - } - - /** - * Returns the list of properties to dump on serialize() called on. - * - * Only used by PHP < 7.4. - * - * @return array - */ - public function __sleep() - { - $properties = $this->getSleepProperties(); - - if ($this->localTranslator ?? null) { - $properties[] = 'dumpLocale'; - $this->dumpLocale = $this->locale ?? null; - } - - return $properties; - } - - /** - * Returns the values to dump on serialize() called on. - * - * Only used by PHP >= 7.4. - * - * @return array - */ - public function __serialize(): array - { - // @codeCoverageIgnoreStart - if (isset($this->timezone_type, $this->timezone, $this->date)) { - return [ - 'date' => $this->date ?? null, - 'timezone_type' => $this->timezone_type, - 'timezone' => $this->timezone ?? null, - ]; - } - // @codeCoverageIgnoreEnd - - $timezone = $this->getTimezone(); - $export = [ - 'date' => $this->format('Y-m-d H:i:s.u'), - 'timezone_type' => $timezone->getType(), - 'timezone' => $timezone->getName(), - ]; - - // @codeCoverageIgnoreStart - if (\extension_loaded('msgpack') && isset($this->constructedObjectId)) { - $export['dumpDateProperties'] = [ - 'date' => $this->format('Y-m-d H:i:s.u'), - 'timezone' => serialize($this->timezone ?? null), - ]; - } - // @codeCoverageIgnoreEnd - - if ($this->localTranslator ?? null) { - $export['dumpLocale'] = $this->locale ?? null; - } - - return $export; - } - - /** - * Set locale if specified on unserialize() called. - * - * Only used by PHP < 7.4. - * - * @return void - */ - #[ReturnTypeWillChange] - public function __wakeup() - { - if (parent::class && method_exists(parent::class, '__wakeup')) { - // @codeCoverageIgnoreStart - try { - parent::__wakeup(); - } catch (Throwable $exception) { - try { - // FatalError occurs when calling msgpack_unpack() in PHP 7.4 or later. - ['date' => $date, 'timezone' => $timezone] = $this->dumpDateProperties; - parent::__construct($date, unserialize($timezone)); - } catch (Throwable $ignoredException) { - throw $exception; - } - } - // @codeCoverageIgnoreEnd - } - - $this->constructedObjectId = spl_object_hash($this); - - if (isset($this->dumpLocale)) { - $this->locale($this->dumpLocale); - $this->dumpLocale = null; - } - - $this->cleanupDumpProperties(); - } - - /** - * Set locale if specified on unserialize() called. - * - * Only used by PHP >= 7.4. - * - * @return void - */ - public function __unserialize(array $data): void - { - // @codeCoverageIgnoreStart - try { - $this->__construct($data['date'] ?? null, $data['timezone'] ?? null); - } catch (Throwable $exception) { - if (!isset($data['dumpDateProperties']['date'], $data['dumpDateProperties']['timezone'])) { - throw $exception; - } - - try { - // FatalError occurs when calling msgpack_unpack() in PHP 7.4 or later. - ['date' => $date, 'timezone' => $timezone] = $data['dumpDateProperties']; - $this->__construct($date, unserialize($timezone)); - } catch (Throwable $ignoredException) { - throw $exception; - } - } - // @codeCoverageIgnoreEnd - - if (isset($data['dumpLocale'])) { - $this->locale($data['dumpLocale']); - } - } - - /** - * Prepare the object for JSON serialization. - * - * @return array|string - */ - #[ReturnTypeWillChange] - public function jsonSerialize() - { - $serializer = $this->localSerializer ?? static::$serializer; - - if ($serializer) { - return \is_string($serializer) - ? $this->rawFormat($serializer) - : $serializer($this); - } - - return $this->toJSON(); - } - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather transform Carbon object before the serialization. - * - * JSON serialize all Carbon instances using the given callback. - * - * @param callable $callback - * - * @return void - */ - public static function serializeUsing($callback) - { - static::$serializer = $callback; - } - - /** - * Cleanup properties attached to the public scope of DateTime when a dump of the date is requested. - * foreach ($date as $_) {} - * serializer($date) - * var_export($date) - * get_object_vars($date) - */ - public function cleanupDumpProperties() - { - // @codeCoverageIgnoreStart - if (PHP_VERSION < 8.2) { - foreach ($this->dumpProperties as $property) { - if (isset($this->$property)) { - unset($this->$property); - } - } - } - // @codeCoverageIgnoreEnd - - return $this; - } - - private function getSleepProperties(): array - { - $properties = $this->dumpProperties; - - // @codeCoverageIgnoreStart - if (!\extension_loaded('msgpack')) { - return $properties; - } - - if (isset($this->constructedObjectId)) { - $this->dumpDateProperties = [ - 'date' => $this->format('Y-m-d H:i:s.u'), - 'timezone' => serialize($this->timezone ?? null), - ]; - - $properties[] = 'dumpDateProperties'; - } - - return $properties; - // @codeCoverageIgnoreEnd - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Test.php b/vendor/nesbot/carbon/src/Carbon/Traits/Test.php deleted file mode 100644 index f23c72e8..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Test.php +++ /dev/null @@ -1,228 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Carbon\CarbonInterface; -use Carbon\CarbonTimeZone; -use Closure; -use DateTimeImmutable; -use DateTimeInterface; -use InvalidArgumentException; -use Throwable; - -trait Test -{ - /////////////////////////////////////////////////////////////////// - ///////////////////////// TESTING AIDS //////////////////////////// - /////////////////////////////////////////////////////////////////// - - /** - * A test Carbon instance to be returned when now instances are created. - * - * @var Closure|static|null - */ - protected static $testNow; - - /** - * The timezone to resto to when clearing the time mock. - * - * @var string|null - */ - protected static $testDefaultTimezone; - - /** - * Set a Carbon instance (real or mock) to be returned when a "now" - * instance is created. The provided instance will be returned - * specifically under the following conditions: - * - A call to the static now() method, ex. Carbon::now() - * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null) - * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now') - * - When a string containing the desired time is passed to Carbon::parse(). - * - * Note the timezone parameter was left out of the examples above and - * has no affect as the mock value will be returned regardless of its value. - * - * Only the moment is mocked with setTestNow(), the timezone will still be the one passed - * as parameter of date_default_timezone_get() as a fallback (see setTestNowAndTimezone()). - * - * To clear the test instance call this method using the default - * parameter of null. - * - * /!\ Use this method for unit tests only. - * - * @param DateTimeInterface|Closure|static|string|false|null $testNow real or mock Carbon instance - */ - public static function setTestNow($testNow = null) - { - static::$testNow = $testNow instanceof self || $testNow instanceof Closure - ? $testNow - : static::make($testNow); - } - - /** - * Set a Carbon instance (real or mock) to be returned when a "now" - * instance is created. The provided instance will be returned - * specifically under the following conditions: - * - A call to the static now() method, ex. Carbon::now() - * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null) - * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now') - * - When a string containing the desired time is passed to Carbon::parse(). - * - * It will also align default timezone (e.g. call date_default_timezone_set()) with - * the second argument or if null, with the timezone of the given date object. - * - * To clear the test instance call this method using the default - * parameter of null. - * - * /!\ Use this method for unit tests only. - * - * @param DateTimeInterface|Closure|static|string|false|null $testNow real or mock Carbon instance - */ - public static function setTestNowAndTimezone($testNow = null, $tz = null) - { - if ($testNow) { - self::$testDefaultTimezone = self::$testDefaultTimezone ?? date_default_timezone_get(); - } - - $useDateInstanceTimezone = $testNow instanceof DateTimeInterface; - - if ($useDateInstanceTimezone) { - self::setDefaultTimezone($testNow->getTimezone()->getName(), $testNow); - } - - static::setTestNow($testNow); - - if (!$useDateInstanceTimezone) { - $now = static::getMockedTestNow(\func_num_args() === 1 ? null : $tz); - $tzName = $now ? $now->tzName : null; - self::setDefaultTimezone($tzName ?? self::$testDefaultTimezone ?? 'UTC', $now); - } - - if (!$testNow) { - self::$testDefaultTimezone = null; - } - } - - /** - * Temporarily sets a static date to be used within the callback. - * Using setTestNow to set the date, executing the callback, then - * clearing the test instance. - * - * /!\ Use this method for unit tests only. - * - * @template T - * - * @param DateTimeInterface|Closure|static|string|false|null $testNow real or mock Carbon instance - * @param Closure(): T $callback - * - * @return T - */ - public static function withTestNow($testNow, $callback) - { - static::setTestNow($testNow); - - try { - $result = $callback(); - } finally { - static::setTestNow(); - } - - return $result; - } - - /** - * Get the Carbon instance (real or mock) to be returned when a "now" - * instance is created. - * - * @return Closure|static the current instance used for testing - */ - public static function getTestNow() - { - return static::$testNow; - } - - /** - * Determine if there is a valid test instance set. A valid test instance - * is anything that is not null. - * - * @return bool true if there is a test instance, otherwise false - */ - public static function hasTestNow() - { - return static::getTestNow() !== null; - } - - /** - * Get the mocked date passed in setTestNow() and if it's a Closure, execute it. - * - * @param string|\DateTimeZone $tz - * - * @return \Carbon\CarbonImmutable|\Carbon\Carbon|null - */ - protected static function getMockedTestNow($tz) - { - $testNow = static::getTestNow(); - - if ($testNow instanceof Closure) { - $realNow = new DateTimeImmutable('now'); - $testNow = $testNow(static::parse( - $realNow->format('Y-m-d H:i:s.u'), - $tz ?: $realNow->getTimezone() - )); - } - /* @var \Carbon\CarbonImmutable|\Carbon\Carbon|null $testNow */ - - return $testNow instanceof CarbonInterface - ? $testNow->avoidMutation()->tz($tz) - : $testNow; - } - - protected static function mockConstructorParameters(&$time, $tz) - { - /** @var \Carbon\CarbonImmutable|\Carbon\Carbon $testInstance */ - $testInstance = clone static::getMockedTestNow($tz); - - if (static::hasRelativeKeywords($time)) { - $testInstance = $testInstance->modify($time); - } - - $time = $testInstance instanceof self - ? $testInstance->rawFormat(static::MOCK_DATETIME_FORMAT) - : $testInstance->format(static::MOCK_DATETIME_FORMAT); - } - - private static function setDefaultTimezone($timezone, DateTimeInterface $date = null) - { - $previous = null; - $success = false; - - try { - $success = date_default_timezone_set($timezone); - } catch (Throwable $exception) { - $previous = $exception; - } - - if (!$success) { - $suggestion = @CarbonTimeZone::create($timezone)->toRegionName($date); - - throw new InvalidArgumentException( - "Timezone ID '$timezone' is invalid". - ($suggestion && $suggestion !== $timezone ? ", did you mean '$suggestion'?" : '.')."\n". - "It must be one of the IDs from DateTimeZone::listIdentifiers(),\n". - 'For the record, hours/minutes offset are relevant only for a particular moment, '. - 'but not as a default timezone.', - 0, - $previous - ); - } - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Timestamp.php b/vendor/nesbot/carbon/src/Carbon/Traits/Timestamp.php deleted file mode 100644 index 88a465c9..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Timestamp.php +++ /dev/null @@ -1,198 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -/** - * Trait Timestamp. - */ -trait Timestamp -{ - /** - * Create a Carbon instance from a timestamp and set the timezone (use default one if not specified). - * - * Timestamp input can be given as int, float or a string containing one or more numbers. - * - * @param float|int|string $timestamp - * @param \DateTimeZone|string|null $tz - * - * @return static - */ - public static function createFromTimestamp($timestamp, $tz = null) - { - return static::createFromTimestampUTC($timestamp)->setTimezone($tz); - } - - /** - * Create a Carbon instance from an timestamp keeping the timezone to UTC. - * - * Timestamp input can be given as int, float or a string containing one or more numbers. - * - * @param float|int|string $timestamp - * - * @return static - */ - public static function createFromTimestampUTC($timestamp) - { - [$integer, $decimal] = self::getIntegerAndDecimalParts($timestamp); - $delta = floor($decimal / static::MICROSECONDS_PER_SECOND); - $integer += $delta; - $decimal -= $delta * static::MICROSECONDS_PER_SECOND; - $decimal = str_pad((string) $decimal, 6, '0', STR_PAD_LEFT); - - return static::rawCreateFromFormat('U u', "$integer $decimal"); - } - - /** - * Create a Carbon instance from a timestamp in milliseconds. - * - * Timestamp input can be given as int, float or a string containing one or more numbers. - * - * @param float|int|string $timestamp - * - * @return static - */ - public static function createFromTimestampMsUTC($timestamp) - { - [$milliseconds, $microseconds] = self::getIntegerAndDecimalParts($timestamp, 3); - $sign = $milliseconds < 0 || ($milliseconds === 0.0 && $microseconds < 0) ? -1 : 1; - $milliseconds = abs($milliseconds); - $microseconds = $sign * abs($microseconds) + static::MICROSECONDS_PER_MILLISECOND * ($milliseconds % static::MILLISECONDS_PER_SECOND); - $seconds = $sign * floor($milliseconds / static::MILLISECONDS_PER_SECOND); - $delta = floor($microseconds / static::MICROSECONDS_PER_SECOND); - $seconds += $delta; - $microseconds -= $delta * static::MICROSECONDS_PER_SECOND; - $microseconds = str_pad($microseconds, 6, '0', STR_PAD_LEFT); - - return static::rawCreateFromFormat('U u', "$seconds $microseconds"); - } - - /** - * Create a Carbon instance from a timestamp in milliseconds. - * - * Timestamp input can be given as int, float or a string containing one or more numbers. - * - * @param float|int|string $timestamp - * @param \DateTimeZone|string|null $tz - * - * @return static - */ - public static function createFromTimestampMs($timestamp, $tz = null) - { - return static::createFromTimestampMsUTC($timestamp) - ->setTimezone($tz); - } - - /** - * Set the instance's timestamp. - * - * Timestamp input can be given as int, float or a string containing one or more numbers. - * - * @param float|int|string $unixTimestamp - * - * @return static - */ - public function timestamp($unixTimestamp) - { - return $this->setTimestamp($unixTimestamp); - } - - /** - * Returns a timestamp rounded with the given precision (6 by default). - * - * @example getPreciseTimestamp() 1532087464437474 (microsecond maximum precision) - * @example getPreciseTimestamp(6) 1532087464437474 - * @example getPreciseTimestamp(5) 153208746443747 (1/100000 second precision) - * @example getPreciseTimestamp(4) 15320874644375 (1/10000 second precision) - * @example getPreciseTimestamp(3) 1532087464437 (millisecond precision) - * @example getPreciseTimestamp(2) 153208746444 (1/100 second precision) - * @example getPreciseTimestamp(1) 15320874644 (1/10 second precision) - * @example getPreciseTimestamp(0) 1532087464 (second precision) - * @example getPreciseTimestamp(-1) 153208746 (10 second precision) - * @example getPreciseTimestamp(-2) 15320875 (100 second precision) - * - * @param int $precision - * - * @return float - */ - public function getPreciseTimestamp($precision = 6) - { - return round(((float) $this->rawFormat('Uu')) / pow(10, 6 - $precision)); - } - - /** - * Returns the milliseconds timestamps used amongst other by Date javascript objects. - * - * @return float - */ - public function valueOf() - { - return $this->getPreciseTimestamp(3); - } - - /** - * Returns the timestamp with millisecond precision. - * - * @return int - */ - public function getTimestampMs() - { - return (int) $this->getPreciseTimestamp(3); - } - - /** - * @alias getTimestamp - * - * Returns the UNIX timestamp for the current date. - * - * @return int - */ - public function unix() - { - return $this->getTimestamp(); - } - - /** - * Return an array with integer part digits and decimals digits split from one or more positive numbers - * (such as timestamps) as string with the given number of decimals (6 by default). - * - * By splitting integer and decimal, this method obtain a better precision than - * number_format when the input is a string. - * - * @param float|int|string $numbers one or more numbers - * @param int $decimals number of decimals precision (6 by default) - * - * @return array 0-index is integer part, 1-index is decimal part digits - */ - private static function getIntegerAndDecimalParts($numbers, $decimals = 6) - { - if (\is_int($numbers) || \is_float($numbers)) { - $numbers = number_format($numbers, $decimals, '.', ''); - } - - $sign = str_starts_with($numbers, '-') ? -1 : 1; - $integer = 0; - $decimal = 0; - - foreach (preg_split('`[^\d.]+`', $numbers) as $chunk) { - [$integerPart, $decimalPart] = explode('.', "$chunk."); - - $integer += (int) $integerPart; - $decimal += (float) ("0.$decimalPart"); - } - - $overflow = floor($decimal); - $integer += $overflow; - $decimal -= $overflow; - - return [$sign * $integer, $decimal === 0.0 ? 0.0 : $sign * round($decimal * pow(10, $decimals))]; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/ToStringFormat.php b/vendor/nesbot/carbon/src/Carbon/Traits/ToStringFormat.php deleted file mode 100644 index a81164f9..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/ToStringFormat.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Closure; - -/** - * Trait ToStringFormat. - * - * Handle global format customization for string cast of the object. - */ -trait ToStringFormat -{ - /** - * Format to use for __toString method when type juggling occurs. - * - * @var string|Closure|null - */ - protected static $toStringFormat; - - /** - * Reset the format used to the default when type juggling a Carbon instance to a string - * - * @return void - */ - public static function resetToStringFormat() - { - static::setToStringFormat(null); - } - - /** - * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. - * You should rather let Carbon object being cast to string with DEFAULT_TO_STRING_FORMAT, and - * use other method or custom format passed to format() method if you need to dump another string - * format. - * - * Set the default format used when type juggling a Carbon instance to a string. - * - * @param string|Closure|null $format - * - * @return void - */ - public static function setToStringFormat($format) - { - static::$toStringFormat = $format; - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Units.php b/vendor/nesbot/carbon/src/Carbon/Traits/Units.php deleted file mode 100644 index 5be14ec7..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Units.php +++ /dev/null @@ -1,412 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -use Carbon\CarbonConverterInterface; -use Carbon\CarbonInterface; -use Carbon\CarbonInterval; -use Carbon\Exceptions\UnitException; -use Closure; -use DateInterval; -use DateMalformedStringException; -use ReturnTypeWillChange; - -/** - * Trait Units. - * - * Add, subtract and set units. - */ -trait Units -{ - /** - * Add seconds to the instance using timestamp. Positive $value travels - * forward while negative $value travels into the past. - * - * @param string $unit - * @param int $value - * - * @return static - */ - public function addRealUnit($unit, $value = 1) - { - switch ($unit) { - // @call addRealUnit - case 'micro': - - // @call addRealUnit - case 'microsecond': - /* @var CarbonInterface $this */ - $diff = $this->microsecond + $value; - $time = $this->getTimestamp(); - $seconds = (int) floor($diff / static::MICROSECONDS_PER_SECOND); - $time += $seconds; - $diff -= $seconds * static::MICROSECONDS_PER_SECOND; - $microtime = str_pad((string) $diff, 6, '0', STR_PAD_LEFT); - $tz = $this->tz; - - return $this->tz('UTC')->modify("@$time.$microtime")->tz($tz); - - // @call addRealUnit - case 'milli': - // @call addRealUnit - case 'millisecond': - return $this->addRealUnit('microsecond', $value * static::MICROSECONDS_PER_MILLISECOND); - - // @call addRealUnit - case 'second': - break; - - // @call addRealUnit - case 'minute': - $value *= static::SECONDS_PER_MINUTE; - - break; - - // @call addRealUnit - case 'hour': - $value *= static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; - - break; - - // @call addRealUnit - case 'day': - $value *= static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; - - break; - - // @call addRealUnit - case 'week': - $value *= static::DAYS_PER_WEEK * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; - - break; - - // @call addRealUnit - case 'month': - $value *= 30 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; - - break; - - // @call addRealUnit - case 'quarter': - $value *= static::MONTHS_PER_QUARTER * 30 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; - - break; - - // @call addRealUnit - case 'year': - $value *= 365 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; - - break; - - // @call addRealUnit - case 'decade': - $value *= static::YEARS_PER_DECADE * 365 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; - - break; - - // @call addRealUnit - case 'century': - $value *= static::YEARS_PER_CENTURY * 365 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; - - break; - - // @call addRealUnit - case 'millennium': - $value *= static::YEARS_PER_MILLENNIUM * 365 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; - - break; - - default: - if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) { - throw new UnitException("Invalid unit for real timestamp add/sub: '$unit'"); - } - - return $this; - } - - /* @var CarbonInterface $this */ - return $this->setTimestamp((int) ($this->getTimestamp() + $value)); - } - - public function subRealUnit($unit, $value = 1) - { - return $this->addRealUnit($unit, -$value); - } - - /** - * Returns true if a property can be changed via setter. - * - * @param string $unit - * - * @return bool - */ - public static function isModifiableUnit($unit) - { - static $modifiableUnits = [ - // @call addUnit - 'millennium', - // @call addUnit - 'century', - // @call addUnit - 'decade', - // @call addUnit - 'quarter', - // @call addUnit - 'week', - // @call addUnit - 'weekday', - ]; - - return \in_array($unit, $modifiableUnits, true) || \in_array($unit, static::$units, true); - } - - /** - * Call native PHP DateTime/DateTimeImmutable add() method. - * - * @param DateInterval $interval - * - * @return static - */ - public function rawAdd(DateInterval $interval) - { - return parent::add($interval); - } - - /** - * Add given units or interval to the current instance. - * - * @example $date->add('hour', 3) - * @example $date->add(15, 'days') - * @example $date->add(CarbonInterval::days(4)) - * - * @param string|DateInterval|Closure|CarbonConverterInterface $unit - * @param int $value - * @param bool|null $overflow - * - * @return static - */ - #[ReturnTypeWillChange] - public function add($unit, $value = 1, $overflow = null) - { - if (\is_string($unit) && \func_num_args() === 1) { - $unit = CarbonInterval::make($unit, [], true); - } - - if ($unit instanceof CarbonConverterInterface) { - return $this->resolveCarbon($unit->convertDate($this, false)); - } - - if ($unit instanceof Closure) { - return $this->resolveCarbon($unit($this, false)); - } - - if ($unit instanceof DateInterval) { - return parent::add($unit); - } - - if (is_numeric($unit)) { - [$value, $unit] = [$unit, $value]; - } - - return $this->addUnit($unit, $value, $overflow); - } - - /** - * Add given units to the current instance. - * - * @param string $unit - * @param int $value - * @param bool|null $overflow - * - * @return static - */ - public function addUnit($unit, $value = 1, $overflow = null) - { - $originalArgs = \func_get_args(); - - $date = $this; - - if (!is_numeric($value) || !(float) $value) { - return $date->isMutable() ? $date : $date->avoidMutation(); - } - - $unit = self::singularUnit($unit); - $metaUnits = [ - 'millennium' => [static::YEARS_PER_MILLENNIUM, 'year'], - 'century' => [static::YEARS_PER_CENTURY, 'year'], - 'decade' => [static::YEARS_PER_DECADE, 'year'], - 'quarter' => [static::MONTHS_PER_QUARTER, 'month'], - ]; - - if (isset($metaUnits[$unit])) { - [$factor, $unit] = $metaUnits[$unit]; - $value *= $factor; - } - - if ($unit === 'weekday') { - $weekendDays = static::getWeekendDays(); - - if ($weekendDays !== [static::SATURDAY, static::SUNDAY]) { - $absoluteValue = abs($value); - $sign = $value / max(1, $absoluteValue); - $weekDaysCount = 7 - min(6, \count(array_unique($weekendDays))); - $weeks = floor($absoluteValue / $weekDaysCount); - - for ($diff = $absoluteValue % $weekDaysCount; $diff; $diff--) { - /** @var static $date */ - $date = $date->addDays($sign); - - while (\in_array($date->dayOfWeek, $weekendDays, true)) { - $date = $date->addDays($sign); - } - } - - $value = $weeks * $sign; - $unit = 'week'; - } - - $timeString = $date->toTimeString(); - } elseif ($canOverflow = (\in_array($unit, [ - 'month', - 'year', - ]) && ($overflow === false || ( - $overflow === null && - ($ucUnit = ucfirst($unit).'s') && - !($this->{'local'.$ucUnit.'Overflow'} ?? static::{'shouldOverflow'.$ucUnit}()) - )))) { - $day = $date->day; - } - - $value = (int) $value; - - if ($unit === 'milli' || $unit === 'millisecond') { - $unit = 'microsecond'; - $value *= static::MICROSECONDS_PER_MILLISECOND; - } - - // Work-around for bug https://bugs.php.net/bug.php?id=75642 - if ($unit === 'micro' || $unit === 'microsecond') { - $microseconds = $this->micro + $value; - $second = (int) floor($microseconds / static::MICROSECONDS_PER_SECOND); - $microseconds %= static::MICROSECONDS_PER_SECOND; - if ($microseconds < 0) { - $microseconds += static::MICROSECONDS_PER_SECOND; - } - $date = $date->microseconds($microseconds); - $unit = 'second'; - $value = $second; - } - - try { - $date = $date->modify("$value $unit"); - - if (isset($timeString)) { - $date = $date->setTimeFromTimeString($timeString); - } elseif (isset($canOverflow, $day) && $canOverflow && $day !== $date->day) { - $date = $date->modify('last day of previous month'); - } - } catch (DateMalformedStringException $ignoredException) { // @codeCoverageIgnore - $date = null; // @codeCoverageIgnore - } - - if (!$date) { - throw new UnitException('Unable to add unit '.var_export($originalArgs, true)); - } - - return $date; - } - - /** - * Subtract given units to the current instance. - * - * @param string $unit - * @param int $value - * @param bool|null $overflow - * - * @return static - */ - public function subUnit($unit, $value = 1, $overflow = null) - { - return $this->addUnit($unit, -$value, $overflow); - } - - /** - * Call native PHP DateTime/DateTimeImmutable sub() method. - * - * @param DateInterval $interval - * - * @return static - */ - public function rawSub(DateInterval $interval) - { - return parent::sub($interval); - } - - /** - * Subtract given units or interval to the current instance. - * - * @example $date->sub('hour', 3) - * @example $date->sub(15, 'days') - * @example $date->sub(CarbonInterval::days(4)) - * - * @param string|DateInterval|Closure|CarbonConverterInterface $unit - * @param int $value - * @param bool|null $overflow - * - * @return static - */ - #[ReturnTypeWillChange] - public function sub($unit, $value = 1, $overflow = null) - { - if (\is_string($unit) && \func_num_args() === 1) { - $unit = CarbonInterval::make($unit, [], true); - } - - if ($unit instanceof CarbonConverterInterface) { - return $this->resolveCarbon($unit->convertDate($this, true)); - } - - if ($unit instanceof Closure) { - return $this->resolveCarbon($unit($this, true)); - } - - if ($unit instanceof DateInterval) { - return parent::sub($unit); - } - - if (is_numeric($unit)) { - [$value, $unit] = [$unit, $value]; - } - - return $this->addUnit($unit, -(float) $value, $overflow); - } - - /** - * Subtract given units or interval to the current instance. - * - * @see sub() - * - * @param string|DateInterval $unit - * @param int $value - * @param bool|null $overflow - * - * @return static - */ - public function subtract($unit, $value = 1, $overflow = null) - { - if (\is_string($unit) && \func_num_args() === 1) { - $unit = CarbonInterval::make($unit, [], true); - } - - return $this->sub($unit, $value, $overflow); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Traits/Week.php b/vendor/nesbot/carbon/src/Carbon/Traits/Week.php deleted file mode 100644 index 6f148145..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Traits/Week.php +++ /dev/null @@ -1,219 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon\Traits; - -/** - * Trait Week. - * - * week and ISO week number, year and count in year. - * - * Depends on the following properties: - * - * @property int $daysInYear - * @property int $dayOfWeek - * @property int $dayOfYear - * @property int $year - * - * Depends on the following methods: - * - * @method static addWeeks(int $weeks = 1) - * @method static copy() - * @method static dayOfYear(int $dayOfYear) - * @method string getTranslationMessage(string $key, ?string $locale = null, ?string $default = null, $translator = null) - * @method static next(int|string $day = null) - * @method static startOfWeek(int $day = 1) - * @method static subWeeks(int $weeks = 1) - * @method static year(int $year = null) - */ -trait Week -{ - /** - * Set/get the week number of year using given first day of week and first - * day of year included in the first week. Or use ISO format if no settings - * given. - * - * @param int|null $year if null, act as a getter, if not null, set the year and return current instance. - * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday) - * @param int|null $dayOfYear first day of year included in the week #1 - * - * @return int|static - */ - public function isoWeekYear($year = null, $dayOfWeek = null, $dayOfYear = null) - { - return $this->weekYear( - $year, - $dayOfWeek ?? 1, - $dayOfYear ?? 4 - ); - } - - /** - * Set/get the week number of year using given first day of week and first - * day of year included in the first week. Or use US format if no settings - * given (Sunday / Jan 6). - * - * @param int|null $year if null, act as a getter, if not null, set the year and return current instance. - * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday) - * @param int|null $dayOfYear first day of year included in the week #1 - * - * @return int|static - */ - public function weekYear($year = null, $dayOfWeek = null, $dayOfYear = null) - { - $dayOfWeek = $dayOfWeek ?? $this->getTranslationMessage('first_day_of_week') ?? 0; - $dayOfYear = $dayOfYear ?? $this->getTranslationMessage('day_of_first_week_of_year') ?? 1; - - if ($year !== null) { - $year = (int) round($year); - - if ($this->weekYear(null, $dayOfWeek, $dayOfYear) === $year) { - return $this->avoidMutation(); - } - - $week = $this->week(null, $dayOfWeek, $dayOfYear); - $day = $this->dayOfWeek; - $date = $this->year($year); - switch ($date->weekYear(null, $dayOfWeek, $dayOfYear) - $year) { - case 1: - $date = $date->subWeeks(26); - - break; - case -1: - $date = $date->addWeeks(26); - - break; - } - - $date = $date->addWeeks($week - $date->week(null, $dayOfWeek, $dayOfYear))->startOfWeek($dayOfWeek); - - if ($date->dayOfWeek === $day) { - return $date; - } - - return $date->next($day); - } - - $year = $this->year; - $day = $this->dayOfYear; - $date = $this->avoidMutation()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek); - - if ($date->year === $year && $day < $date->dayOfYear) { - return $year - 1; - } - - $date = $this->avoidMutation()->addYear()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek); - - if ($date->year === $year && $day >= $date->dayOfYear) { - return $year + 1; - } - - return $year; - } - - /** - * Get the number of weeks of the current week-year using given first day of week and first - * day of year included in the first week. Or use ISO format if no settings - * given. - * - * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday) - * @param int|null $dayOfYear first day of year included in the week #1 - * - * @return int - */ - public function isoWeeksInYear($dayOfWeek = null, $dayOfYear = null) - { - return $this->weeksInYear( - $dayOfWeek ?? 1, - $dayOfYear ?? 4 - ); - } - - /** - * Get the number of weeks of the current week-year using given first day of week and first - * day of year included in the first week. Or use US format if no settings - * given (Sunday / Jan 6). - * - * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday) - * @param int|null $dayOfYear first day of year included in the week #1 - * - * @return int - */ - public function weeksInYear($dayOfWeek = null, $dayOfYear = null) - { - $dayOfWeek = $dayOfWeek ?? $this->getTranslationMessage('first_day_of_week') ?? 0; - $dayOfYear = $dayOfYear ?? $this->getTranslationMessage('day_of_first_week_of_year') ?? 1; - $year = $this->year; - $start = $this->avoidMutation()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek); - $startDay = $start->dayOfYear; - if ($start->year !== $year) { - $startDay -= $start->daysInYear; - } - $end = $this->avoidMutation()->addYear()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek); - $endDay = $end->dayOfYear; - if ($end->year !== $year) { - $endDay += $this->daysInYear; - } - - return (int) round(($endDay - $startDay) / 7); - } - - /** - * Get/set the week number using given first day of week and first - * day of year included in the first week. Or use US format if no settings - * given (Sunday / Jan 6). - * - * @param int|null $week - * @param int|null $dayOfWeek - * @param int|null $dayOfYear - * - * @return int|static - */ - public function week($week = null, $dayOfWeek = null, $dayOfYear = null) - { - $date = $this; - $dayOfWeek = $dayOfWeek ?? $this->getTranslationMessage('first_day_of_week') ?? 0; - $dayOfYear = $dayOfYear ?? $this->getTranslationMessage('day_of_first_week_of_year') ?? 1; - - if ($week !== null) { - return $date->addWeeks(round($week) - $this->week(null, $dayOfWeek, $dayOfYear)); - } - - $start = $date->avoidMutation()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek); - $end = $date->avoidMutation()->startOfWeek($dayOfWeek); - if ($start > $end) { - $start = $start->subWeeks(26)->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek); - } - $week = (int) ($start->diffInDays($end) / 7 + 1); - - return $week > $end->weeksInYear($dayOfWeek, $dayOfYear) ? 1 : $week; - } - - /** - * Get/set the week number using given first day of week and first - * day of year included in the first week. Or use ISO format if no settings - * given. - * - * @param int|null $week - * @param int|null $dayOfWeek - * @param int|null $dayOfYear - * - * @return int|static - */ - public function isoWeek($week = null, $dayOfWeek = null, $dayOfYear = null) - { - return $this->week( - $week, - $dayOfWeek ?? 1, - $dayOfYear ?? 4 - ); - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/Translator.php b/vendor/nesbot/carbon/src/Carbon/Translator.php deleted file mode 100644 index 491c9e72..00000000 --- a/vendor/nesbot/carbon/src/Carbon/Translator.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -use ReflectionMethod; -use Symfony\Component\Translation; -use Symfony\Contracts\Translation\TranslatorInterface; - -$transMethod = new ReflectionMethod( - class_exists(TranslatorInterface::class) - ? TranslatorInterface::class - : Translation\Translator::class, - 'trans' -); - -require $transMethod->hasReturnType() - ? __DIR__.'/../../lazy/Carbon/TranslatorStrongType.php' - : __DIR__.'/../../lazy/Carbon/TranslatorWeakType.php'; - -class Translator extends LazyTranslator -{ - // Proxy dynamically loaded LazyTranslator in a static way -} diff --git a/vendor/nesbot/carbon/src/Carbon/TranslatorImmutable.php b/vendor/nesbot/carbon/src/Carbon/TranslatorImmutable.php deleted file mode 100644 index ce6b2f90..00000000 --- a/vendor/nesbot/carbon/src/Carbon/TranslatorImmutable.php +++ /dev/null @@ -1,99 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -use Carbon\Exceptions\ImmutableException; -use Symfony\Component\Config\ConfigCacheFactoryInterface; -use Symfony\Component\Translation\Formatter\MessageFormatterInterface; - -class TranslatorImmutable extends Translator -{ - /** @var bool */ - private $constructed = false; - - public function __construct($locale, MessageFormatterInterface $formatter = null, $cacheDir = null, $debug = false) - { - parent::__construct($locale, $formatter, $cacheDir, $debug); - $this->constructed = true; - } - - /** - * @codeCoverageIgnore - */ - public function setDirectories(array $directories) - { - $this->disallowMutation(__METHOD__); - - return parent::setDirectories($directories); - } - - public function setLocale($locale) - { - $this->disallowMutation(__METHOD__); - - return parent::setLocale($locale); - } - - /** - * @codeCoverageIgnore - */ - public function setMessages($locale, $messages) - { - $this->disallowMutation(__METHOD__); - - return parent::setMessages($locale, $messages); - } - - /** - * @codeCoverageIgnore - */ - public function setTranslations($messages) - { - $this->disallowMutation(__METHOD__); - - return parent::setTranslations($messages); - } - - /** - * @codeCoverageIgnore - */ - public function setConfigCacheFactory(ConfigCacheFactoryInterface $configCacheFactory): void - { - $this->disallowMutation(__METHOD__); - - parent::setConfigCacheFactory($configCacheFactory); - } - - public function resetMessages($locale = null) - { - $this->disallowMutation(__METHOD__); - - return parent::resetMessages($locale); - } - - /** - * @codeCoverageIgnore - */ - public function setFallbackLocales(array $locales) - { - $this->disallowMutation(__METHOD__); - - parent::setFallbackLocales($locales); - } - - private function disallowMutation($method) - { - if ($this->constructed) { - throw new ImmutableException($method.' not allowed on '.static::class); - } - } -} diff --git a/vendor/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php b/vendor/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php deleted file mode 100644 index ef4dee8e..00000000 --- a/vendor/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Carbon; - -use Symfony\Component\Translation\MessageCatalogueInterface; - -/** - * Mark translator using strong type from symfony/translation >= 6. - */ -interface TranslatorStrongTypeInterface -{ - public function getFromCatalogue(MessageCatalogueInterface $catalogue, string $id, string $domain = 'messages'); -} diff --git a/vendor/nette/schema/composer.json b/vendor/nette/schema/composer.json deleted file mode 100644 index 626e98f9..00000000 --- a/vendor/nette/schema/composer.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "nette/schema", - "description": "📐 Nette Schema: validating data structures against a given Schema.", - "keywords": ["nette", "config"], - "homepage": "https://nette.org", - "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" - } - ], - "require": { - "php": "8.1 - 8.3", - "nette/utils": "^4.0" - }, - "require-dev": { - "nette/tester": "^2.4", - "tracy/tracy": "^2.8", - "phpstan/phpstan-nette": "^1.0" - }, - "autoload": { - "classmap": ["src/"] - }, - "minimum-stability": "dev", - "scripts": { - "phpstan": "phpstan analyse", - "tester": "tester tests -s" - }, - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - } -} diff --git a/vendor/nette/schema/license.md b/vendor/nette/schema/license.md deleted file mode 100644 index cf741bd0..00000000 --- a/vendor/nette/schema/license.md +++ /dev/null @@ -1,60 +0,0 @@ -Licenses -======== - -Good news! You may use Nette Framework under the terms of either -the New BSD License or the GNU General Public License (GPL) version 2 or 3. - -The BSD License is recommended for most projects. It is easy to understand and it -places almost no restrictions on what you can do with the framework. If the GPL -fits better to your project, you can use the framework under this license. - -You don't have to notify anyone which license you are using. You can freely -use Nette Framework in commercial projects as long as the copyright header -remains intact. - -Please be advised that the name "Nette Framework" is a protected trademark and its -usage has some limitations. So please do not use word "Nette" in the name of your -project or top-level domain, and choose a name that stands on its own merits. -If your stuff is good, it will not take long to establish a reputation for yourselves. - - -New BSD License ---------------- - -Copyright (c) 2004, 2014 David Grudl (https://davidgrudl.com) -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of "Nette Framework" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -This software is provided by the copyright holders and contributors "as is" and -any express or implied warranties, including, but not limited to, the implied -warranties of merchantability and fitness for a particular purpose are -disclaimed. In no event shall the copyright owner or contributors be liable for -any direct, indirect, incidental, special, exemplary, or consequential damages -(including, but not limited to, procurement of substitute goods or services; -loss of use, data, or profits; or business interruption) however caused and on -any theory of liability, whether in contract, strict liability, or tort -(including negligence or otherwise) arising in any way out of the use of this -software, even if advised of the possibility of such damage. - - -GNU General Public License --------------------------- - -GPL licenses are very very long, so instead of including them here we offer -you URLs with full text: - -- [GPL version 2](http://www.gnu.org/licenses/gpl-2.0.html) -- [GPL version 3](http://www.gnu.org/licenses/gpl-3.0.html) diff --git a/vendor/nette/schema/readme.md b/vendor/nette/schema/readme.md deleted file mode 100644 index c88f6bd2..00000000 --- a/vendor/nette/schema/readme.md +++ /dev/null @@ -1,537 +0,0 @@ -Nette Schema -************ - -[![Downloads this Month](https://img.shields.io/packagist/dm/nette/schema.svg)](https://packagist.org/packages/nette/schema) -[![Tests](https://github.com/nette/schema/workflows/Tests/badge.svg?branch=master)](https://github.com/nette/schema/actions) -[![Coverage Status](https://coveralls.io/repos/github/nette/schema/badge.svg?branch=master)](https://coveralls.io/github/nette/schema?branch=master) -[![Latest Stable Version](https://poser.pugx.org/nette/schema/v/stable)](https://github.com/nette/schema/releases) -[![License](https://img.shields.io/badge/license-New%20BSD-blue.svg)](https://github.com/nette/schema/blob/master/license.md) - - -Introduction -============ - -A practical library for validation and normalization of data structures against a given schema with a smart & easy-to-understand API. - -Documentation can be found on the [website](https://doc.nette.org/schema). - -Installation: - -```shell -composer require nette/schema -``` - -It requires PHP version 8.1 and supports PHP up to 8.3. - - -[Support Me](https://github.com/sponsors/dg) --------------------------------------------- - -Do you like Nette Schema? Are you looking forward to the new features? - -[![Buy me a coffee](https://files.nette.org/icons/donation-3.svg)](https://github.com/sponsors/dg) - -Thank you! - - -Basic Usage ------------ - -In variable `$schema` we have a validation schema (what exactly this means and how to create it we will say later) and in variable `$data` we have a data structure that we want to validate and normalize. This can be, for example, data sent by the user through an API, configuration file, etc. - -The task is handled by the [Nette\Schema\Processor](https://api.nette.org/schema/master/Nette/Schema/Processor.html) class, which processes the input and either returns normalized data or throws an [Nette\Schema\ValidationException](https://api.nette.org/schema/master/Nette/Schema/ValidationException.html) exception on error. - -```php -$processor = new Nette\Schema\Processor; - -try { - $normalized = $processor->process($schema, $data); -} catch (Nette\Schema\ValidationException $e) { - echo 'Data is invalid: ' . $e->getMessage(); -} -``` - -Method `$e->getMessages()` returns array of all message strings and `$e->getMessageObjects()` return all messages as [Nette\Schema\Message](https://api.nette.org/schema/master/Nette/Schema/Message.html) objects. - - -Defining Schema ---------------- - -And now let's create a schema. The class [Nette\Schema\Expect](https://api.nette.org/schema/master/Nette/Schema/Expect.html) is used to define it, we actually define expectations of what the data should look like. Let's say that the input data must be a structure (e.g. an array) containing elements `processRefund` of type bool and `refundAmount` of type int. - -```php -use Nette\Schema\Expect; - -$schema = Expect::structure([ - 'processRefund' => Expect::bool(), - 'refundAmount' => Expect::int(), -]); -``` - -We believe that the schema definition looks clear, even if you see it for the very first time. - -Lets send the following data for validation: - -```php -$data = [ - 'processRefund' => true, - 'refundAmount' => 17, -]; - -$normalized = $processor->process($schema, $data); // OK, it passes -``` - -The output, i.e. the value `$normalized`, is the object `stdClass`. If we want the output to be an array, we add a cast to schema `Expect::structure([...])->castTo('array')`. - -All elements of the structure are optional and have a default value `null`. Example: - -```php -$data = [ - 'refundAmount' => 17, -]; - -$normalized = $processor->process($schema, $data); // OK, it passes -// $normalized = {'processRefund' => null, 'refundAmount' => 17} -``` - -The fact that the default value is `null` does not mean that it would be accepted in the input data `'processRefund' => null`. No, the input must be boolean, i.e. only `true` or `false`. We would have to explicitly allow `null` via `Expect::bool()->nullable()`. - -An item can be made mandatory using `Expect::bool()->required()`. We change the default value to `false` using `Expect::bool()->default(false)` or shortly using `Expect::bool(false)`. - -And what if we wanted to accept `1` and `0` besides booleans? Then we list the allowed values, which we will also normalize to boolean: - -```php -$schema = Expect::structure([ - 'processRefund' => Expect::anyOf(true, false, 1, 0)->castTo('bool'), - 'refundAmount' => Expect::int(), -]); - -$normalized = $processor->process($schema, $data); -is_bool($normalized->processRefund); // true -``` - -Now you know the basics of how the schema is defined and how the individual elements of the structure behave. We will now show what all the other elements can be used in defining a schema. - - -Data Types: type() ------------------- - -All standard PHP data types can be listed in the schema: - -```php -Expect::string($default = null) -Expect::int($default = null) -Expect::float($default = null) -Expect::bool($default = null) -Expect::null() -Expect::array($default = []) -``` - -And then all types [supported by the Validators](https://doc.nette.org/validators#toc-validation-rules) via `Expect::type('scalar')` or abbreviated `Expect::scalar()`. Also class or interface names are accepted, e.g. `Expect::type('AddressEntity')`. - -You can also use union notation: - -```php -Expect::type('bool|string|array') -``` - -The default value is always `null` except for `array` and `list`, where it is an empty array. (A list is an array indexed in ascending order of numeric keys from zero, that is, a non-associative array). - - -Array of Values: arrayOf() listOf() ------------------------------------ - -The array is too general structure, it is more useful to specify exactly what elements it can contain. For example, an array whose elements can only be strings: - -```php -$schema = Expect::arrayOf('string'); - -$processor->process($schema, ['hello', 'world']); // OK -$processor->process($schema, ['a' => 'hello', 'b' => 'world']); // OK -$processor->process($schema, ['key' => 123]); // ERROR: 123 is not a string -``` - -The second parameter can be used to specify keys (since version 1.2): - -```php -$schema = Expect::arrayOf('string', 'int'); - -$processor->process($schema, ['hello', 'world']); // OK -$processor->process($schema, ['a' => 'hello']); // ERROR: 'a' is not int -``` - -The list is an indexed array: - -```php -$schema = Expect::listOf('string'); - -$processor->process($schema, ['a', 'b']); // OK -$processor->process($schema, ['a', 123]); // ERROR: 123 is not a string -$processor->process($schema, ['key' => 'a']); // ERROR: is not a list -$processor->process($schema, [1 => 'a', 0 => 'b']); // ERROR: is not a list -``` - -The parameter can also be a schema, so we can write: - -```php -Expect::arrayOf(Expect::bool()) -``` - -The default value is an empty array. If you specify a default value, it will be merged with the passed data. This can be disabled using `mergeDefaults(false)`. - - -Enumeration: anyOf() --------------------- - -`anyOf()` is a set of values ​​or schemas that a value can be. Here's how to write an array of elements that can be either `'a'`, `true`, or `null`: - -```php -$schema = Expect::listOf( - Expect::anyOf('a', true, null), -); - -$processor->process($schema, ['a', true, null, 'a']); // OK -$processor->process($schema, ['a', false]); // ERROR: false does not belong there -``` - -The enumeration elements can also be schemas: - -```php -$schema = Expect::listOf( - Expect::anyOf(Expect::string(), true, null), -); - -$processor->process($schema, ['foo', true, null, 'bar']); // OK -$processor->process($schema, [123]); // ERROR -``` - -The `anyOf()` method accepts variants as individual parameters, not as array. To pass it an array of values, use the unpacking operator `anyOf(...$variants)`. - -The default value is `null`. Use the `firstIsDefault()` method to make the first element the default: - -```php -// default is 'hello' -Expect::anyOf(Expect::string('hello'), true, null)->firstIsDefault(); -``` - - -Structures ----------- - -Structures are objects with defined keys. Each of these key => value pairs is referred to as a "property": - -Structures accept arrays and objects and return objects `stdClass` (unless you change it with `castTo('array')`, etc.). - -By default, all properties are optional and have a default value of `null`. You can define mandatory properties using `required()`: - -```php -$schema = Expect::structure([ - 'required' => Expect::string()->required(), - 'optional' => Expect::string(), // the default value is null -]); - -$processor->process($schema, ['optional' => '']); -// ERROR: option 'required' is missing - -$processor->process($schema, ['required' => 'foo']); -// OK, returns {'required' => 'foo', 'optional' => null} -``` - -If you do not want to output properties with only a default value, use `skipDefaults()`: - -```php -$schema = Expect::structure([ - 'required' => Expect::string()->required(), - 'optional' => Expect::string(), -])->skipDefaults(); - -$processor->process($schema, ['required' => 'foo']); -// OK, returns {'required' => 'foo'} -``` - -Although `null` is the default value of the `optional` property, it is not allowed in the input data (the value must be a string). Properties accepting `null` are defined using `nullable()`: - -```php -$schema = Expect::structure([ - 'optional' => Expect::string(), - 'nullable' => Expect::string()->nullable(), -]); - -$processor->process($schema, ['optional' => null]); -// ERROR: 'optional' expects to be string, null given. - -$processor->process($schema, ['nullable' => null]); -// OK, returns {'optional' => null, 'nullable' => null} -``` - -By default, there can be no extra items in the input data: - -```php -$schema = Expect::structure([ - 'key' => Expect::string(), -]); - -$processor->process($schema, ['additional' => 1]); -// ERROR: Unexpected item 'additional' -``` - -Which we can change with `otherItems()`. As a parameter, we will specify the schema for each extra element: - -```php -$schema = Expect::structure([ - 'key' => Expect::string(), -])->otherItems(Expect::int()); - -$processor->process($schema, ['additional' => 1]); // OK -$processor->process($schema, ['additional' => true]); // ERROR -``` - - -Deprecations ------------- - -You can deprecate property using the `deprecated([string $message])` method. Deprecation notices are returned by `$processor->getWarnings()`: - -```php -$schema = Expect::structure([ - 'old' => Expect::int()->deprecated('The item %path% is deprecated'), -]); - -$processor->process($schema, ['old' => 1]); // OK -$processor->getWarnings(); // ["The item 'old' is deprecated"] -``` - - -Ranges: min() max() -------------------- - -Use `min()` and `max()` to limit the number of elements for arrays: - -```php -// array, at least 10 items, maximum 20 items -Expect::array()->min(10)->max(20); -``` - -For strings, limit their length: - -```php -// string, at least 10 characters long, maximum 20 characters -Expect::string()->min(10)->max(20); -``` - -For numbers, limit their value: - -```php -// integer, between 10 and 20 inclusive -Expect::int()->min(10)->max(20); -``` - -Of course, it is possible to mention only `min()`, or only `max()`: - -```php -// string, maximum 20 characters -Expect::string()->max(20); -``` - - -Regular Expressions: pattern() ------------------------------- - -Using `pattern()`, you can specify a regular expression which the **whole** input string must match (i.e. as if it were wrapped in characters `^` a `$`): - -```php -// just 9 digits -Expect::string()->pattern('\d{9}'); -``` - - -Custom Assertions: assert() ---------------------------- - -You can add any other restrictions using `assert(callable $fn)`. - -```php -$countIsEven = fn($v) => count($v) % 2 === 0; - -$schema = Expect::arrayOf('string') - ->assert($countIsEven); // the count must be even - -$processor->process($schema, ['a', 'b']); // OK -$processor->process($schema, ['a', 'b', 'c']); // ERROR: 3 is not even -``` - -Or - -```php -Expect::string()->assert('is_file'); // the file must exist -``` - -You can add your own description for each assertion. It will be part of the error message. - -```php -$schema = Expect::arrayOf('string') - ->assert($countIsEven, 'Even items in array'); - -$processor->process($schema, ['a', 'b', 'c']); -// Failed assertion "Even items in array" for item with value array. -``` - -The method can be called repeatedly to add multiple constraints. It can be intermixed with calls to `transform()` and `castTo()`. - - -Transformation: transform() ---------------------------- - -Successfully validated data can be modified using a custom function: - -```php -// conversion to uppercase: -Expect::string()->transform(fn(string $s) => strtoupper($s)); -``` - -The method can be called repeatedly to add multiple transformations. It can be intermixed with calls to `assert()` and `castTo()`. The operations will be executed in the order in which they are declared: - -```php -Expect::type('string|int') - ->castTo('string') - ->assert('ctype_lower', 'All characters must be lowercased') - ->transform(fn(string $s) => strtoupper($s)); // conversion to uppercase -``` - -The `transform()` method can both transform and validate the value simultaneously. This is often simpler and less redundant than chaining `transform()` and `assert()`. For this purpose, the function receives a [Nette\Schema\Context](https://api.nette.org/schema/master/Nette/Schema/Context.html) object with an `addError()` method, which can be used to add information about validation issues: - -```php -Expect::string() - ->transform(function (string $s, Nette\Schema\Context $context) { - if (!ctype_lower($s)) { - $context->addError('All characters must be lowercased', 'my.case.error'); - return null; - } - - return strtoupper($s); - }); -``` - - -Casting: castTo() ------------------ - -Successfully validated data can be cast: - -```php -Expect::scalar()->castTo('string'); -``` - -In addition to native PHP types, you can also cast to classes. It distinguishes whether it is a simple class without a constructor or a class with a constructor. If the class has no constructor, an instance of it is created and all elements of the structure are written to its properties: - -```php -class Info -{ - public bool $processRefund; - public int $refundAmount; -} - -Expect::structure([ - 'processRefund' => Expect::bool(), - 'refundAmount' => Expect::int(), -])->castTo(Info::class); - -// creates '$obj = new Info' and writes to $obj->processRefund and $obj->refundAmount -``` - -If the class has a constructor, the elements of the structure are passed as named parameters to the constructor: - -```php -class Info -{ - public function __construct( - public bool $processRefund, - public int $refundAmount, - ) { - } -} - -// creates $obj = new Info(processRefund: ..., refundAmount: ...) -``` - -Casting combined with a scalar parameter creates an object and passes the value as the sole parameter to the constructor: - -```php -Expect::string()->castTo(DateTime::class); -// creates new DateTime(...) -``` - - -Normalization: before() ------------------------ - -Prior to the validation itself, the data can be normalized using the method `before()`. As an example, let's have an element that must be an array of strings (eg `['a', 'b', 'c']`), but receives input in the form of a string `a b c`: - -```php -$explode = fn($v) => explode(' ', $v); - -$schema = Expect::arrayOf('string') - ->before($explode); - -$normalized = $processor->process($schema, 'a b c'); -// OK, returns ['a', 'b', 'c'] -``` - - -Mapping to Objects: from() --------------------------- - -You can generate structure schema from the class. Example: - -```php -class Config -{ - /** @var string */ - public $name; - /** @var string|null */ - public $password; - /** @var bool */ - public $admin = false; -} - -$schema = Expect::from(new Config); - -$data = [ - 'name' => 'jeff', -]; - -$normalized = $processor->process($schema, $data); -// $normalized instanceof Config -// $normalized = {'name' => 'jeff', 'password' => null, 'admin' => false} -``` - -If you are using PHP 7.4 or higher, you can use native types: - -```php -class Config -{ - public string $name; - public ?string $password; - public bool $admin = false; -} - -$schema = Expect::from(new Config); -``` - -Anonymous classes are also supported: - -```php -$schema = Expect::from(new class { - public string $name; - public ?string $password; - public bool $admin = false; -}); -``` - -Because the information obtained from the class definition may not be sufficient, you can add a custom schema for the elements with the second parameter: - -```php -$schema = Expect::from(new Config, [ - 'name' => Expect::string()->pattern('\w:.*'), -]); -``` diff --git a/vendor/nette/schema/src/Schema/Context.php b/vendor/nette/schema/src/Schema/Context.php deleted file mode 100644 index 0f512656..00000000 --- a/vendor/nette/schema/src/Schema/Context.php +++ /dev/null @@ -1,51 +0,0 @@ -isKey; - return $this->errors[] = new Message($message, $code, $this->path, $variables); - } - - - public function addWarning(string $message, string $code, array $variables = []): Message - { - return $this->warnings[] = new Message($message, $code, $this->path, $variables); - } - - - /** @return \Closure(): bool */ - public function createChecker(): \Closure - { - $count = count($this->errors); - return fn(): bool => $count === count($this->errors); - } -} diff --git a/vendor/nette/schema/src/Schema/DynamicParameter.php b/vendor/nette/schema/src/Schema/DynamicParameter.php deleted file mode 100644 index 8dd61050..00000000 --- a/vendor/nette/schema/src/Schema/DynamicParameter.php +++ /dev/null @@ -1,15 +0,0 @@ -set = $set; - } - - - public function firstIsDefault(): self - { - $this->default = $this->set[0]; - return $this; - } - - - public function nullable(): self - { - $this->set[] = null; - return $this; - } - - - public function dynamic(): self - { - $this->set[] = new Type(Nette\Schema\DynamicParameter::class); - return $this; - } - - - /********************* processing ****************d*g**/ - - - public function normalize(mixed $value, Context $context): mixed - { - return $this->doNormalize($value, $context); - } - - - public function merge(mixed $value, mixed $base): mixed - { - if (is_array($value) && isset($value[Helpers::PreventMerging])) { - unset($value[Helpers::PreventMerging]); - return $value; - } - - return Helpers::merge($value, $base); - } - - - public function complete(mixed $value, Context $context): mixed - { - $isOk = $context->createChecker(); - $value = $this->findAlternative($value, $context); - $isOk() && $value = $this->doTransform($value, $context); - return $isOk() ? $value : null; - } - - - private function findAlternative(mixed $value, Context $context): mixed - { - $expecteds = $innerErrors = []; - foreach ($this->set as $item) { - if ($item instanceof Schema) { - $dolly = new Context; - $dolly->path = $context->path; - $res = $item->complete($item->normalize($value, $dolly), $dolly); - if (!$dolly->errors) { - $context->warnings = array_merge($context->warnings, $dolly->warnings); - return $res; - } - - foreach ($dolly->errors as $error) { - if ($error->path !== $context->path || empty($error->variables['expected'])) { - $innerErrors[] = $error; - } else { - $expecteds[] = $error->variables['expected']; - } - } - } else { - if ($item === $value) { - return $value; - } - - $expecteds[] = Nette\Schema\Helpers::formatValue($item); - } - } - - if ($innerErrors) { - $context->errors = array_merge($context->errors, $innerErrors); - } else { - $context->addError( - 'The %label% %path% expects to be %expected%, %value% given.', - Nette\Schema\Message::TypeMismatch, - [ - 'value' => $value, - 'expected' => implode('|', array_unique($expecteds)), - ], - ); - } - - return null; - } - - - public function completeDefault(Context $context): mixed - { - if ($this->required) { - $context->addError( - 'The mandatory item %path% is missing.', - Nette\Schema\Message::MissingItem, - ); - return null; - } - - if ($this->default instanceof Schema) { - return $this->default->completeDefault($context); - } - - return $this->default; - } -} diff --git a/vendor/nette/schema/src/Schema/Elements/Base.php b/vendor/nette/schema/src/Schema/Elements/Base.php deleted file mode 100644 index 1dfda8a2..00000000 --- a/vendor/nette/schema/src/Schema/Elements/Base.php +++ /dev/null @@ -1,162 +0,0 @@ -default = $value; - return $this; - } - - - public function required(bool $state = true): self - { - $this->required = $state; - return $this; - } - - - public function before(callable $handler): self - { - $this->before = $handler; - return $this; - } - - - public function castTo(string $type): self - { - return $this->transform(Helpers::getCastStrategy($type)); - } - - - public function transform(callable $handler): self - { - $this->transforms[] = $handler; - return $this; - } - - - public function assert(callable $handler, ?string $description = null): self - { - $expected = $description ?: (is_string($handler) ? "$handler()" : '#' . count($this->transforms)); - return $this->transform(function ($value, Context $context) use ($handler, $description, $expected) { - if ($handler($value)) { - return $value; - } - $context->addError( - 'Failed assertion ' . ($description ? "'%assertion%'" : '%assertion%') . ' for %label% %path% with value %value%.', - Nette\Schema\Message::FailedAssertion, - ['value' => $value, 'assertion' => $expected], - ); - }); - } - - - /** Marks as deprecated */ - public function deprecated(string $message = 'The item %path% is deprecated.'): self - { - $this->deprecated = $message; - return $this; - } - - - public function completeDefault(Context $context): mixed - { - if ($this->required) { - $context->addError( - 'The mandatory item %path% is missing.', - Nette\Schema\Message::MissingItem, - ); - return null; - } - - return $this->default; - } - - - public function doNormalize(mixed $value, Context $context): mixed - { - if ($this->before) { - $value = ($this->before)($value); - } - - return $value; - } - - - private function doDeprecation(Context $context): void - { - if ($this->deprecated !== null) { - $context->addWarning( - $this->deprecated, - Nette\Schema\Message::Deprecated, - ); - } - } - - - private function doTransform(mixed $value, Context $context): mixed - { - $isOk = $context->createChecker(); - foreach ($this->transforms as $handler) { - $value = $handler($value, $context); - if (!$isOk()) { - return null; - } - } - return $value; - } - - - /** @deprecated use Nette\Schema\Validators::validateType() */ - private function doValidate(mixed $value, string $expected, Context $context): bool - { - $isOk = $context->createChecker(); - Helpers::validateType($value, $expected, $context); - return $isOk(); - } - - - /** @deprecated use Nette\Schema\Validators::validateRange() */ - private static function doValidateRange(mixed $value, array $range, Context $context, string $types = ''): bool - { - $isOk = $context->createChecker(); - Helpers::validateRange($value, $range, $context, $types); - return $isOk(); - } - - - /** @deprecated use doTransform() */ - private function doFinalize(mixed $value, Context $context): mixed - { - return $this->doTransform($value, $context); - } -} diff --git a/vendor/nette/schema/src/Schema/Elements/Structure.php b/vendor/nette/schema/src/Schema/Elements/Structure.php deleted file mode 100644 index 56f5ffe8..00000000 --- a/vendor/nette/schema/src/Schema/Elements/Structure.php +++ /dev/null @@ -1,200 +0,0 @@ -items = $items; - $this->castTo('object'); - $this->required = true; - } - - - public function default(mixed $value): self - { - throw new Nette\InvalidStateException('Structure cannot have default value.'); - } - - - public function min(?int $min): self - { - $this->range[0] = $min; - return $this; - } - - - public function max(?int $max): self - { - $this->range[1] = $max; - return $this; - } - - - public function otherItems(string|Schema $type = 'mixed'): self - { - $this->otherItems = $type instanceof Schema ? $type : new Type($type); - return $this; - } - - - public function skipDefaults(bool $state = true): self - { - $this->skipDefaults = $state; - return $this; - } - - - /********************* processing ****************d*g**/ - - - public function normalize(mixed $value, Context $context): mixed - { - if ($prevent = (is_array($value) && isset($value[Helpers::PreventMerging]))) { - unset($value[Helpers::PreventMerging]); - } - - $value = $this->doNormalize($value, $context); - if (is_object($value)) { - $value = (array) $value; - } - - if (is_array($value)) { - foreach ($value as $key => $val) { - $itemSchema = $this->items[$key] ?? $this->otherItems; - if ($itemSchema) { - $context->path[] = $key; - $value[$key] = $itemSchema->normalize($val, $context); - array_pop($context->path); - } - } - - if ($prevent) { - $value[Helpers::PreventMerging] = true; - } - } - - return $value; - } - - - public function merge(mixed $value, mixed $base): mixed - { - if (is_array($value) && isset($value[Helpers::PreventMerging])) { - unset($value[Helpers::PreventMerging]); - $base = null; - } - - if (is_array($value) && is_array($base)) { - $index = 0; - foreach ($value as $key => $val) { - if ($key === $index) { - $base[] = $val; - $index++; - } elseif (array_key_exists($key, $base)) { - $itemSchema = $this->items[$key] ?? $this->otherItems; - $base[$key] = $itemSchema - ? $itemSchema->merge($val, $base[$key]) - : Helpers::merge($val, $base[$key]); - } else { - $base[$key] = $val; - } - } - - return $base; - } - - return Helpers::merge($value, $base); - } - - - public function complete(mixed $value, Context $context): mixed - { - if ($value === null) { - $value = []; // is unable to distinguish null from array in NEON - } - - $this->doDeprecation($context); - - $isOk = $context->createChecker(); - Helpers::validateType($value, 'array', $context); - $isOk() && Helpers::validateRange($value, $this->range, $context); - $isOk() && $this->validateItems($value, $context); - $isOk() && $value = $this->doTransform($value, $context); - return $isOk() ? $value : null; - } - - - private function validateItems(array &$value, Context $context): void - { - $items = $this->items; - if ($extraKeys = array_keys(array_diff_key($value, $items))) { - if ($this->otherItems) { - $items += array_fill_keys($extraKeys, $this->otherItems); - } else { - $keys = array_map('strval', array_keys($items)); - foreach ($extraKeys as $key) { - $hint = Nette\Utils\Helpers::getSuggestion($keys, (string) $key); - $context->addError( - 'Unexpected item %path%' . ($hint ? ", did you mean '%hint%'?" : '.'), - Nette\Schema\Message::UnexpectedItem, - ['hint' => $hint], - )->path[] = $key; - } - } - } - - foreach ($items as $itemKey => $itemVal) { - $context->path[] = $itemKey; - if (array_key_exists($itemKey, $value)) { - $value[$itemKey] = $itemVal->complete($value[$itemKey], $context); - } else { - $default = $itemVal->completeDefault($context); // checks required item - if (!$context->skipDefaults && !$this->skipDefaults) { - $value[$itemKey] = $default; - } - } - - array_pop($context->path); - } - } - - - public function completeDefault(Context $context): mixed - { - return $this->required - ? $this->complete([], $context) - : null; - } -} diff --git a/vendor/nette/schema/src/Schema/Elements/Type.php b/vendor/nette/schema/src/Schema/Elements/Type.php deleted file mode 100644 index 4094442e..00000000 --- a/vendor/nette/schema/src/Schema/Elements/Type.php +++ /dev/null @@ -1,208 +0,0 @@ - [], 'array' => []]; - $this->type = $type; - $this->default = strpos($type, '[]') ? [] : $defaults[$type] ?? null; - } - - - public function nullable(): self - { - $this->type = 'null|' . $this->type; - return $this; - } - - - public function mergeDefaults(bool $state = true): self - { - $this->merge = $state; - return $this; - } - - - public function dynamic(): self - { - $this->type = DynamicParameter::class . '|' . $this->type; - return $this; - } - - - public function min(?float $min): self - { - $this->range[0] = $min; - return $this; - } - - - public function max(?float $max): self - { - $this->range[1] = $max; - return $this; - } - - - /** - * @internal use arrayOf() or listOf() - */ - public function items(string|Schema $valueType = 'mixed', string|Schema $keyType = null): self - { - $this->itemsValue = $valueType instanceof Schema - ? $valueType - : new self($valueType); - $this->itemsKey = $keyType instanceof Schema || $keyType === null - ? $keyType - : new self($keyType); - return $this; - } - - - public function pattern(?string $pattern): self - { - $this->pattern = $pattern; - return $this; - } - - - /********************* processing ****************d*g**/ - - - public function normalize(mixed $value, Context $context): mixed - { - if ($prevent = (is_array($value) && isset($value[Helpers::PreventMerging]))) { - unset($value[Helpers::PreventMerging]); - } - - $value = $this->doNormalize($value, $context); - if (is_array($value) && $this->itemsValue) { - $res = []; - foreach ($value as $key => $val) { - $context->path[] = $key; - $context->isKey = true; - $key = $this->itemsKey - ? $this->itemsKey->normalize($key, $context) - : $key; - $context->isKey = false; - $res[$key] = $this->itemsValue->normalize($val, $context); - array_pop($context->path); - } - - $value = $res; - } - - if ($prevent && is_array($value)) { - $value[Helpers::PreventMerging] = true; - } - - return $value; - } - - - public function merge(mixed $value, mixed $base): mixed - { - if (is_array($value) && isset($value[Helpers::PreventMerging])) { - unset($value[Helpers::PreventMerging]); - return $value; - } - - if (is_array($value) && is_array($base) && $this->itemsValue) { - $index = 0; - foreach ($value as $key => $val) { - if ($key === $index) { - $base[] = $val; - $index++; - } else { - $base[$key] = array_key_exists($key, $base) - ? $this->itemsValue->merge($val, $base[$key]) - : $val; - } - } - - return $base; - } - - return Helpers::merge($value, $base); - } - - - public function complete(mixed $value, Context $context): mixed - { - $merge = $this->merge; - if (is_array($value) && isset($value[Helpers::PreventMerging])) { - unset($value[Helpers::PreventMerging]); - $merge = false; - } - - if ($value === null && is_array($this->default)) { - $value = []; // is unable to distinguish null from array in NEON - } - - $this->doDeprecation($context); - - $isOk = $context->createChecker(); - Helpers::validateType($value, $this->type, $context); - $isOk() && Helpers::validateRange($value, $this->range, $context, $this->type); - $isOk() && $value !== null && $this->pattern !== null && Helpers::validatePattern($value, $this->pattern, $context); - $isOk() && is_array($value) && $this->validateItems($value, $context); - $isOk() && $merge && $value = Helpers::merge($value, $this->default); - $isOk() && $value = $this->doTransform($value, $context); - if (!$isOk()) { - return null; - } - - if ($value instanceof DynamicParameter) { - $expected = $this->type . ($this->range === [null, null] ? '' : ':' . implode('..', $this->range)); - $context->dynamics[] = [$value, str_replace(DynamicParameter::class . '|', '', $expected), $context->path]; - } - return $value; - } - - - private function validateItems(array &$value, Context $context): void - { - if (!$this->itemsValue) { - return; - } - - $res = []; - foreach ($value as $key => $val) { - $context->path[] = $key; - $context->isKey = true; - $key = $this->itemsKey ? $this->itemsKey->complete($key, $context) : $key; - $context->isKey = false; - $res[$key] = $this->itemsValue->complete($val, $context); - array_pop($context->path); - } - $value = $res; - } -} diff --git a/vendor/nette/schema/src/Schema/Expect.php b/vendor/nette/schema/src/Schema/Expect.php deleted file mode 100644 index 38f1c81f..00000000 --- a/vendor/nette/schema/src/Schema/Expect.php +++ /dev/null @@ -1,108 +0,0 @@ -default($args[0]); - } - - return $type; - } - - - public static function type(string $type): Type - { - return new Type($type); - } - - - public static function anyOf(mixed ...$set): AnyOf - { - return new AnyOf(...$set); - } - - - /** - * @param Schema[] $items - */ - public static function structure(array $items): Structure - { - return new Structure($items); - } - - - public static function from(object $object, array $items = []): Structure - { - $ro = new \ReflectionObject($object); - $props = $ro->hasMethod('__construct') - ? $ro->getMethod('__construct')->getParameters() - : $ro->getProperties(); - - foreach ($props as $prop) { - $item = &$items[$prop->getName()]; - if (!$item) { - $type = Helpers::getPropertyType($prop) ?? 'mixed'; - $item = new Type($type); - if ($prop instanceof \ReflectionProperty ? $prop->isInitialized($object) : $prop->isOptional()) { - $def = ($prop instanceof \ReflectionProperty ? $prop->getValue($object) : $prop->getDefaultValue()); - if (is_object($def)) { - $item = static::from($def); - } elseif ($def === null && !Nette\Utils\Validators::is(null, $type)) { - $item->required(); - } else { - $item->default($def); - } - } else { - $item->required(); - } - } - } - - return (new Structure($items))->castTo($ro->getName()); - } - - - public static function arrayOf(string|Schema $valueType, string|Schema $keyType = null): Type - { - return (new Type('array'))->items($valueType, $keyType); - } - - - public static function listOf(string|Schema $type): Type - { - return (new Type('list'))->items($type); - } -} diff --git a/vendor/nette/schema/src/Schema/Helpers.php b/vendor/nette/schema/src/Schema/Helpers.php deleted file mode 100644 index 70bf1836..00000000 --- a/vendor/nette/schema/src/Schema/Helpers.php +++ /dev/null @@ -1,183 +0,0 @@ - $val) { - if ($key === $index) { - $base[] = $val; - $index++; - } else { - $base[$key] = static::merge($val, $base[$key] ?? null); - } - } - - return $base; - - } elseif ($value === null && is_array($base)) { - return $base; - - } else { - return $value; - } - } - - - public static function getPropertyType(\ReflectionProperty|\ReflectionParameter $prop): ?string - { - if ($type = Nette\Utils\Type::fromReflection($prop)) { - return (string) $type; - } elseif ( - ($prop instanceof \ReflectionProperty) - && ($type = preg_replace('#\s.*#', '', (string) self::parseAnnotation($prop, 'var'))) - ) { - $class = Reflection::getPropertyDeclaringClass($prop); - return preg_replace_callback('#[\w\\\\]+#', fn($m) => Reflection::expandClassName($m[0], $class), $type); - } - - return null; - } - - - /** - * Returns an annotation value. - * @param \ReflectionProperty $ref - */ - public static function parseAnnotation(\Reflector $ref, string $name): ?string - { - if (!Reflection::areCommentsAvailable()) { - throw new Nette\InvalidStateException('You have to enable phpDoc comments in opcode cache.'); - } - - $re = '#[\s*]@' . preg_quote($name, '#') . '(?=\s|$)(?:[ \t]+([^@\s]\S*))?#'; - if ($ref->getDocComment() && preg_match($re, trim($ref->getDocComment(), '/*'), $m)) { - return $m[1] ?? ''; - } - - return null; - } - - - public static function formatValue(mixed $value): string - { - if ($value instanceof DynamicParameter) { - return 'dynamic'; - } elseif (is_object($value)) { - return 'object ' . $value::class; - } elseif (is_string($value)) { - return "'" . Nette\Utils\Strings::truncate($value, 15, '...') . "'"; - } elseif (is_scalar($value)) { - return var_export($value, return: true); - } else { - return get_debug_type($value); - } - } - - - public static function validateType(mixed $value, string $expected, Context $context): void - { - if (!Nette\Utils\Validators::is($value, $expected)) { - $expected = str_replace(DynamicParameter::class . '|', '', $expected); - $expected = str_replace(['|', ':'], [' or ', ' in range '], $expected); - $context->addError( - 'The %label% %path% expects to be %expected%, %value% given.', - Message::TypeMismatch, - ['value' => $value, 'expected' => $expected], - ); - } - } - - - public static function validateRange(mixed $value, array $range, Context $context, string $types = ''): void - { - if (is_array($value) || is_string($value)) { - [$length, $label] = is_array($value) - ? [count($value), 'items'] - : (in_array('unicode', explode('|', $types), true) - ? [Nette\Utils\Strings::length($value), 'characters'] - : [strlen($value), 'bytes']); - - if (!self::isInRange($length, $range)) { - $context->addError( - "The length of %label% %path% expects to be in range %expected%, %length% $label given.", - Message::LengthOutOfRange, - ['value' => $value, 'length' => $length, 'expected' => implode('..', $range)], - ); - } - } elseif ((is_int($value) || is_float($value)) && !self::isInRange($value, $range)) { - $context->addError( - 'The %label% %path% expects to be in range %expected%, %value% given.', - Message::ValueOutOfRange, - ['value' => $value, 'expected' => implode('..', $range)], - ); - } - } - - - public static function isInRange(mixed $value, array $range): bool - { - return ($range[0] === null || $value >= $range[0]) - && ($range[1] === null || $value <= $range[1]); - } - - - public static function validatePattern(string $value, string $pattern, Context $context): void - { - if (!preg_match("\x01^(?:$pattern)$\x01Du", $value)) { - $context->addError( - "The %label% %path% expects to match pattern '%pattern%', %value% given.", - Message::PatternMismatch, - ['value' => $value, 'pattern' => $pattern], - ); - } - } - - - public static function getCastStrategy(string $type): \Closure - { - if (Nette\Utils\Reflection::isBuiltinType($type)) { - return static function ($value) use ($type) { - settype($value, $type); - return $value; - }; - } elseif (method_exists($type, '__construct')) { - return static fn($value) => is_array($value) || $value instanceof \stdClass - ? new $type(...(array) $value) - : new $type($value); - } else { - return static fn($value) => Nette\Utils\Arrays::toObject((array) $value, new $type); - } - } -} diff --git a/vendor/nette/schema/src/Schema/Message.php b/vendor/nette/schema/src/Schema/Message.php deleted file mode 100644 index 4e976d03..00000000 --- a/vendor/nette/schema/src/Schema/Message.php +++ /dev/null @@ -1,98 +0,0 @@ -message = $message; - $this->code = $code; - $this->path = $path; - $this->variables = $variables; - } - - - public function toString(): string - { - $vars = $this->variables; - $vars['label'] = empty($vars['isKey']) ? 'item' : 'key of item'; - $vars['path'] = $this->path - ? "'" . implode("\u{a0}›\u{a0}", $this->path) . "'" - : null; - $vars['value'] = Helpers::formatValue($vars['value'] ?? null); - - return preg_replace_callback('~( ?)%(\w+)%~', function ($m) use ($vars) { - [, $space, $key] = $m; - return $vars[$key] === null ? '' : $space . $vars[$key]; - }, $this->message) ?? throw new Nette\InvalidStateException(preg_last_error_msg()); - } -} diff --git a/vendor/nette/schema/src/Schema/Processor.php b/vendor/nette/schema/src/Schema/Processor.php deleted file mode 100644 index 3290ba60..00000000 --- a/vendor/nette/schema/src/Schema/Processor.php +++ /dev/null @@ -1,96 +0,0 @@ -skipDefaults = $value; - } - - - /** - * Normalizes and validates data. Result is a clean completed data. - * @throws ValidationException - */ - public function process(Schema $schema, mixed $data): mixed - { - $this->createContext(); - $data = $schema->normalize($data, $this->context); - $this->throwsErrors(); - $data = $schema->complete($data, $this->context); - $this->throwsErrors(); - return $data; - } - - - /** - * Normalizes and validates and merges multiple data. Result is a clean completed data. - * @throws ValidationException - */ - public function processMultiple(Schema $schema, array $dataset): mixed - { - $this->createContext(); - $flatten = null; - $first = true; - foreach ($dataset as $data) { - $data = $schema->normalize($data, $this->context); - $this->throwsErrors(); - $flatten = $first ? $data : $schema->merge($data, $flatten); - $first = false; - } - - $data = $schema->complete($flatten, $this->context); - $this->throwsErrors(); - return $data; - } - - - /** - * @return string[] - */ - public function getWarnings(): array - { - $res = []; - foreach ($this->context->warnings as $message) { - $res[] = $message->toString(); - } - - return $res; - } - - - private function throwsErrors(): void - { - if ($this->context->errors) { - throw new ValidationException(null, $this->context->errors); - } - } - - - private function createContext(): void - { - $this->context = new Context; - $this->context->skipDefaults = $this->skipDefaults; - Nette\Utils\Arrays::invoke($this->onNewContext, $this->context); - } -} diff --git a/vendor/nette/schema/src/Schema/Schema.php b/vendor/nette/schema/src/Schema/Schema.php deleted file mode 100644 index 3ded7698..00000000 --- a/vendor/nette/schema/src/Schema/Schema.php +++ /dev/null @@ -1,37 +0,0 @@ -toString()); - $this->messages = $messages; - } - - - /** - * @return string[] - */ - public function getMessages(): array - { - $res = []; - foreach ($this->messages as $message) { - $res[] = $message->toString(); - } - - return $res; - } - - - /** - * @return Message[] - */ - public function getMessageObjects(): array - { - return $this->messages; - } -} diff --git a/vendor/nette/utils/.phpstorm.meta.php b/vendor/nette/utils/.phpstorm.meta.php deleted file mode 100644 index 25851af6..00000000 --- a/vendor/nette/utils/.phpstorm.meta.php +++ /dev/null @@ -1,13 +0,0 @@ -=8.0 <8.4" - }, - "require-dev": { - "nette/tester": "^2.5", - "tracy/tracy": "^2.9", - "phpstan/phpstan": "^1.0", - "jetbrains/phpstorm-attributes": "dev-master" - }, - "conflict": { - "nette/finder": "<3", - "nette/schema": "<1.2.2" - }, - "suggest": { - "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", - "ext-json": "to use Nette\\Utils\\Json", - "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", - "ext-mbstring": "to use Strings::lower() etc...", - "ext-gd": "to use Image", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" - }, - "autoload": { - "classmap": ["src/"] - }, - "minimum-stability": "dev", - "scripts": { - "phpstan": "phpstan analyse", - "tester": "tester tests -s" - }, - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - } -} diff --git a/vendor/nette/utils/license.md b/vendor/nette/utils/license.md deleted file mode 100644 index cf741bd0..00000000 --- a/vendor/nette/utils/license.md +++ /dev/null @@ -1,60 +0,0 @@ -Licenses -======== - -Good news! You may use Nette Framework under the terms of either -the New BSD License or the GNU General Public License (GPL) version 2 or 3. - -The BSD License is recommended for most projects. It is easy to understand and it -places almost no restrictions on what you can do with the framework. If the GPL -fits better to your project, you can use the framework under this license. - -You don't have to notify anyone which license you are using. You can freely -use Nette Framework in commercial projects as long as the copyright header -remains intact. - -Please be advised that the name "Nette Framework" is a protected trademark and its -usage has some limitations. So please do not use word "Nette" in the name of your -project or top-level domain, and choose a name that stands on its own merits. -If your stuff is good, it will not take long to establish a reputation for yourselves. - - -New BSD License ---------------- - -Copyright (c) 2004, 2014 David Grudl (https://davidgrudl.com) -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of "Nette Framework" nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -This software is provided by the copyright holders and contributors "as is" and -any express or implied warranties, including, but not limited to, the implied -warranties of merchantability and fitness for a particular purpose are -disclaimed. In no event shall the copyright owner or contributors be liable for -any direct, indirect, incidental, special, exemplary, or consequential damages -(including, but not limited to, procurement of substitute goods or services; -loss of use, data, or profits; or business interruption) however caused and on -any theory of liability, whether in contract, strict liability, or tort -(including negligence or otherwise) arising in any way out of the use of this -software, even if advised of the possibility of such damage. - - -GNU General Public License --------------------------- - -GPL licenses are very very long, so instead of including them here we offer -you URLs with full text: - -- [GPL version 2](http://www.gnu.org/licenses/gpl-2.0.html) -- [GPL version 3](http://www.gnu.org/licenses/gpl-3.0.html) diff --git a/vendor/nette/utils/readme.md b/vendor/nette/utils/readme.md deleted file mode 100644 index 530915f8..00000000 --- a/vendor/nette/utils/readme.md +++ /dev/null @@ -1,56 +0,0 @@ -Nette Utility Classes -===================== - -[![Downloads this Month](https://img.shields.io/packagist/dm/nette/utils.svg)](https://packagist.org/packages/nette/utils) -[![Tests](https://github.com/nette/utils/workflows/Tests/badge.svg?branch=master)](https://github.com/nette/utils/actions) -[![Coverage Status](https://coveralls.io/repos/github/nette/utils/badge.svg?branch=master)](https://coveralls.io/github/nette/utils?branch=master) -[![Latest Stable Version](https://poser.pugx.org/nette/utils/v/stable)](https://github.com/nette/utils/releases) -[![License](https://img.shields.io/badge/license-New%20BSD-blue.svg)](https://github.com/nette/utils/blob/master/license.md) - - -Introduction ------------- - -In package nette/utils you will find a set of [useful classes](https://doc.nette.org/utils) for everyday use: - -- [Arrays](https://doc.nette.org/utils/arrays) - manipulate arrays -- [Callback](https://doc.nette.org/utils/callback) - PHP callbacks -- [Date and Time](https://doc.nette.org/utils/datetime) - modify times and dates -- [Filesystem](https://doc.nette.org/utils/filesystem) - copying, renaming, … -- [Finder](https://doc.nette.org/utils/finder) - finds files and directories -- [Helper Functions](https://doc.nette.org/utils/helpers) -- [HTML elements](https://doc.nette.org/utils/html-elements) - generate HTML -- [Images](https://doc.nette.org/utils/images) - crop, resize, rotate images -- [JSON](https://doc.nette.org/utils/json) - encoding and decoding -- [Generating Random Strings](https://doc.nette.org/utils/random) -- [Paginator](https://doc.nette.org/utils/paginator) - pagination math -- [PHP Reflection](https://doc.nette.org/utils/reflection) -- [Strings](https://doc.nette.org/utils/strings) - useful text functions -- [SmartObject](https://doc.nette.org/utils/smartobject) - PHP object enhancements -- [Validation](https://doc.nette.org/utils/validators) - validate inputs -- [Type](https://doc.nette.org/utils/type) - PHP data type - - -Installation ------------- - -The recommended way to install is via Composer: - -``` -composer require nette/utils -``` - -- Nette Utils 4.0 is compatible with PHP 8.0 to 8.3 -- Nette Utils 3.2 is compatible with PHP 7.2 to 8.3 -- Nette Utils 3.1 is compatible with PHP 7.1 to 8.0 -- Nette Utils 3.0 is compatible with PHP 7.1 to 8.0 -- Nette Utils 2.5 is compatible with PHP 5.6 to 8.0 - -[Support Me](https://github.com/sponsors/dg) --------------------------------------------- - -Do you like Nette Utils? Are you looking forward to the new features? - -[![Buy me a coffee](https://files.nette.org/icons/donation-3.svg)](https://github.com/sponsors/dg) - -Thank you! diff --git a/vendor/nette/utils/src/HtmlStringable.php b/vendor/nette/utils/src/HtmlStringable.php deleted file mode 100644 index d749d4ee..00000000 --- a/vendor/nette/utils/src/HtmlStringable.php +++ /dev/null @@ -1,22 +0,0 @@ -getIterator(); - } while ($iterator instanceof \IteratorAggregate); - - assert($iterator instanceof \Iterator); - - } elseif ($iterator instanceof \Iterator) { - } elseif ($iterator instanceof \Traversable) { - $iterator = new \IteratorIterator($iterator); - } else { - throw new Nette\InvalidArgumentException(sprintf('Invalid argument passed to %s; array or Traversable expected, %s given.', self::class, get_debug_type($iterator))); - } - - parent::__construct($iterator, 0); - } - - - /** - * Is the current element the first one? - */ - public function isFirst(?int $gridWidth = null): bool - { - return $this->counter === 1 || ($gridWidth && $this->counter !== 0 && (($this->counter - 1) % $gridWidth) === 0); - } - - - /** - * Is the current element the last one? - */ - public function isLast(?int $gridWidth = null): bool - { - return !$this->hasNext() || ($gridWidth && ($this->counter % $gridWidth) === 0); - } - - - /** - * Is the iterator empty? - */ - public function isEmpty(): bool - { - return $this->counter === 0; - } - - - /** - * Is the counter odd? - */ - public function isOdd(): bool - { - return $this->counter % 2 === 1; - } - - - /** - * Is the counter even? - */ - public function isEven(): bool - { - return $this->counter % 2 === 0; - } - - - /** - * Returns the counter. - */ - public function getCounter(): int - { - return $this->counter; - } - - - /** - * Returns the count of elements. - */ - public function count(): int - { - $inner = $this->getInnerIterator(); - if ($inner instanceof \Countable) { - return $inner->count(); - - } else { - throw new Nette\NotSupportedException('Iterator is not countable.'); - } - } - - - /** - * Forwards to the next element. - */ - public function next(): void - { - parent::next(); - if (parent::valid()) { - $this->counter++; - } - } - - - /** - * Rewinds the Iterator. - */ - public function rewind(): void - { - parent::rewind(); - $this->counter = parent::valid() ? 1 : 0; - } - - - /** - * Returns the next key. - */ - public function getNextKey(): mixed - { - return $this->getInnerIterator()->key(); - } - - - /** - * Returns the next element. - */ - public function getNextValue(): mixed - { - return $this->getInnerIterator()->current(); - } -} diff --git a/vendor/nette/utils/src/Iterators/Mapper.php b/vendor/nette/utils/src/Iterators/Mapper.php deleted file mode 100644 index 87823baf..00000000 --- a/vendor/nette/utils/src/Iterators/Mapper.php +++ /dev/null @@ -1,34 +0,0 @@ -callback = $callback; - } - - - public function current(): mixed - { - return ($this->callback)(parent::current(), parent::key()); - } -} diff --git a/vendor/nette/utils/src/SmartObject.php b/vendor/nette/utils/src/SmartObject.php deleted file mode 100644 index 3b2203f1..00000000 --- a/vendor/nette/utils/src/SmartObject.php +++ /dev/null @@ -1,140 +0,0 @@ -$name ?? null; - if (is_iterable($handlers)) { - foreach ($handlers as $handler) { - $handler(...$args); - } - } elseif ($handlers !== null) { - throw new UnexpectedValueException("Property $class::$$name must be iterable or null, " . get_debug_type($handlers) . ' given.'); - } - - return null; - } - - ObjectHelpers::strictCall($class, $name); - } - - - /** - * @throws MemberAccessException - */ - public static function __callStatic(string $name, array $args) - { - ObjectHelpers::strictStaticCall(static::class, $name); - } - - - /** - * @return mixed - * @throws MemberAccessException if the property is not defined. - */ - public function &__get(string $name) - { - $class = static::class; - - if ($prop = ObjectHelpers::getMagicProperties($class)[$name] ?? null) { // property getter - if (!($prop & 0b0001)) { - throw new MemberAccessException("Cannot read a write-only property $class::\$$name."); - } - - $m = ($prop & 0b0010 ? 'get' : 'is') . ucfirst($name); - if ($prop & 0b10000) { - $trace = debug_backtrace(0, 1)[0]; // suppose this method is called from __call() - $loc = isset($trace['file'], $trace['line']) - ? " in $trace[file] on line $trace[line]" - : ''; - trigger_error("Property $class::\$$name is deprecated, use $class::$m() method$loc.", E_USER_DEPRECATED); - } - - if ($prop & 0b0100) { // return by reference - return $this->$m(); - } else { - $val = $this->$m(); - return $val; - } - } else { - ObjectHelpers::strictGet($class, $name); - } - } - - - /** - * @throws MemberAccessException if the property is not defined or is read-only - */ - public function __set(string $name, mixed $value): void - { - $class = static::class; - - if (ObjectHelpers::hasProperty($class, $name)) { // unsetted property - $this->$name = $value; - - } elseif ($prop = ObjectHelpers::getMagicProperties($class)[$name] ?? null) { // property setter - if (!($prop & 0b1000)) { - throw new MemberAccessException("Cannot write to a read-only property $class::\$$name."); - } - - $m = 'set' . ucfirst($name); - if ($prop & 0b10000) { - $trace = debug_backtrace(0, 1)[0]; // suppose this method is called from __call() - $loc = isset($trace['file'], $trace['line']) - ? " in $trace[file] on line $trace[line]" - : ''; - trigger_error("Property $class::\$$name is deprecated, use $class::$m() method$loc.", E_USER_DEPRECATED); - } - - $this->$m($value); - - } else { - ObjectHelpers::strictSet($class, $name); - } - } - - - /** - * @throws MemberAccessException - */ - public function __unset(string $name): void - { - $class = static::class; - if (!ObjectHelpers::hasProperty($class, $name)) { - throw new MemberAccessException("Cannot unset the property $class::\$$name."); - } - } - - - public function __isset(string $name): bool - { - return isset(ObjectHelpers::getMagicProperties(static::class)[$name]); - } -} diff --git a/vendor/nette/utils/src/StaticClass.php b/vendor/nette/utils/src/StaticClass.php deleted file mode 100644 index b1d84862..00000000 --- a/vendor/nette/utils/src/StaticClass.php +++ /dev/null @@ -1,34 +0,0 @@ - - * @implements \ArrayAccess - */ -class ArrayHash extends \stdClass implements \ArrayAccess, \Countable, \IteratorAggregate -{ - /** - * Transforms array to ArrayHash. - * @param array $array - */ - public static function from(array $array, bool $recursive = true): static - { - $obj = new static; - foreach ($array as $key => $value) { - $obj->$key = $recursive && is_array($value) - ? static::from($value) - : $value; - } - - return $obj; - } - - - /** - * Returns an iterator over all items. - * @return \Iterator - */ - public function &getIterator(): \Iterator - { - foreach ((array) $this as $key => $foo) { - yield $key => $this->$key; - } - } - - - /** - * Returns items count. - */ - public function count(): int - { - return count((array) $this); - } - - - /** - * Replaces or appends a item. - * @param array-key $key - * @param T $value - */ - public function offsetSet($key, $value): void - { - if (!is_scalar($key)) { // prevents null - throw new Nette\InvalidArgumentException(sprintf('Key must be either a string or an integer, %s given.', get_debug_type($key))); - } - - $this->$key = $value; - } - - - /** - * Returns a item. - * @param array-key $key - * @return T - */ - #[\ReturnTypeWillChange] - public function offsetGet($key) - { - return $this->$key; - } - - - /** - * Determines whether a item exists. - * @param array-key $key - */ - public function offsetExists($key): bool - { - return isset($this->$key); - } - - - /** - * Removes the element from this list. - * @param array-key $key - */ - public function offsetUnset($key): void - { - unset($this->$key); - } -} diff --git a/vendor/nette/utils/src/Utils/ArrayList.php b/vendor/nette/utils/src/Utils/ArrayList.php deleted file mode 100644 index a402f9bf..00000000 --- a/vendor/nette/utils/src/Utils/ArrayList.php +++ /dev/null @@ -1,136 +0,0 @@ - - * @implements \ArrayAccess - */ -class ArrayList implements \ArrayAccess, \Countable, \IteratorAggregate -{ - use Nette\SmartObject; - - private array $list = []; - - - /** - * Transforms array to ArrayList. - * @param list $array - */ - public static function from(array $array): static - { - if (!Arrays::isList($array)) { - throw new Nette\InvalidArgumentException('Array is not valid list.'); - } - - $obj = new static; - $obj->list = $array; - return $obj; - } - - - /** - * Returns an iterator over all items. - * @return \Iterator - */ - public function &getIterator(): \Iterator - { - foreach ($this->list as &$item) { - yield $item; - } - } - - - /** - * Returns items count. - */ - public function count(): int - { - return count($this->list); - } - - - /** - * Replaces or appends a item. - * @param int|null $index - * @param T $value - * @throws Nette\OutOfRangeException - */ - public function offsetSet($index, $value): void - { - if ($index === null) { - $this->list[] = $value; - - } elseif (!is_int($index) || $index < 0 || $index >= count($this->list)) { - throw new Nette\OutOfRangeException('Offset invalid or out of range'); - - } else { - $this->list[$index] = $value; - } - } - - - /** - * Returns a item. - * @param int $index - * @return T - * @throws Nette\OutOfRangeException - */ - public function offsetGet($index): mixed - { - if (!is_int($index) || $index < 0 || $index >= count($this->list)) { - throw new Nette\OutOfRangeException('Offset invalid or out of range'); - } - - return $this->list[$index]; - } - - - /** - * Determines whether a item exists. - * @param int $index - */ - public function offsetExists($index): bool - { - return is_int($index) && $index >= 0 && $index < count($this->list); - } - - - /** - * Removes the element at the specified position in this list. - * @param int $index - * @throws Nette\OutOfRangeException - */ - public function offsetUnset($index): void - { - if (!is_int($index) || $index < 0 || $index >= count($this->list)) { - throw new Nette\OutOfRangeException('Offset invalid or out of range'); - } - - array_splice($this->list, $index, 1); - } - - - /** - * Prepends a item. - * @param T $value - */ - public function prepend(mixed $value): void - { - $first = array_slice($this->list, 0, 1); - $this->offsetSet(0, $value); - array_splice($this->list, 1, 0, $first); - } -} diff --git a/vendor/nette/utils/src/Utils/Arrays.php b/vendor/nette/utils/src/Utils/Arrays.php deleted file mode 100644 index c33fb9a5..00000000 --- a/vendor/nette/utils/src/Utils/Arrays.php +++ /dev/null @@ -1,522 +0,0 @@ - $array - * @param array-key|array-key[] $key - * @param ?T $default - * @return ?T - * @throws Nette\InvalidArgumentException if item does not exist and default value is not provided - */ - public static function get(array $array, string|int|array $key, mixed $default = null): mixed - { - foreach (is_array($key) ? $key : [$key] as $k) { - if (is_array($array) && array_key_exists($k, $array)) { - $array = $array[$k]; - } else { - if (func_num_args() < 3) { - throw new Nette\InvalidArgumentException("Missing item '$k'."); - } - - return $default; - } - } - - return $array; - } - - - /** - * Returns reference to array item. If the index does not exist, new one is created with value null. - * @template T - * @param array $array - * @param array-key|array-key[] $key - * @return ?T - * @throws Nette\InvalidArgumentException if traversed item is not an array - */ - public static function &getRef(array &$array, string|int|array $key): mixed - { - foreach (is_array($key) ? $key : [$key] as $k) { - if (is_array($array) || $array === null) { - $array = &$array[$k]; - } else { - throw new Nette\InvalidArgumentException('Traversed item is not an array.'); - } - } - - return $array; - } - - - /** - * Recursively merges two fields. It is useful, for example, for merging tree structures. It behaves as - * the + operator for array, ie. it adds a key/value pair from the second array to the first one and retains - * the value from the first array in the case of a key collision. - * @template T1 - * @template T2 - * @param array $array1 - * @param array $array2 - * @return array - */ - public static function mergeTree(array $array1, array $array2): array - { - $res = $array1 + $array2; - foreach (array_intersect_key($array1, $array2) as $k => $v) { - if (is_array($v) && is_array($array2[$k])) { - $res[$k] = self::mergeTree($v, $array2[$k]); - } - } - - return $res; - } - - - /** - * Returns zero-indexed position of given array key. Returns null if key is not found. - */ - public static function getKeyOffset(array $array, string|int $key): ?int - { - return Helpers::falseToNull(array_search(self::toKey($key), array_keys($array), strict: true)); - } - - - /** - * @deprecated use getKeyOffset() - */ - public static function searchKey(array $array, $key): ?int - { - return self::getKeyOffset($array, $key); - } - - - /** - * Tests an array for the presence of value. - */ - public static function contains(array $array, mixed $value): bool - { - return in_array($value, $array, true); - } - - - /** - * Returns the first item (matching the specified predicate if given). If there is no such item, it returns result of invoking $else or null. - * The $predicate has the signature `function (mixed $value, int|string $key, array $array): bool`. - * @template T - * @param array $array - * @return ?T - */ - public static function first(array $array, ?callable $predicate = null, ?callable $else = null): mixed - { - $key = self::firstKey($array, $predicate); - return $key === null - ? ($else ? $else() : null) - : $array[$key]; - } - - - /** - * Returns the last item (matching the specified predicate if given). If there is no such item, it returns result of invoking $else or null. - * The $predicate has the signature `function (mixed $value, int|string $key, array $array): bool`. - * @template T - * @param array $array - * @return ?T - */ - public static function last(array $array, ?callable $predicate = null, ?callable $else = null): mixed - { - $key = self::lastKey($array, $predicate); - return $key === null - ? ($else ? $else() : null) - : $array[$key]; - } - - - /** - * Returns the key of first item (matching the specified predicate if given) or null if there is no such item. - * The $predicate has the signature `function (mixed $value, int|string $key, array $array): bool`. - */ - public static function firstKey(array $array, ?callable $predicate = null): int|string|null - { - if (!$predicate) { - return array_key_first($array); - } - foreach ($array as $k => $v) { - if ($predicate($v, $k, $array)) { - return $k; - } - } - return null; - } - - - /** - * Returns the key of last item (matching the specified predicate if given) or null if there is no such item. - * The $predicate has the signature `function (mixed $value, int|string $key, array $array): bool`. - */ - public static function lastKey(array $array, ?callable $predicate = null): int|string|null - { - return $predicate - ? self::firstKey(array_reverse($array, preserve_keys: true), $predicate) - : array_key_last($array); - } - - - /** - * Inserts the contents of the $inserted array into the $array immediately after the $key. - * If $key is null (or does not exist), it is inserted at the beginning. - */ - public static function insertBefore(array &$array, string|int|null $key, array $inserted): void - { - $offset = $key === null ? 0 : (int) self::getKeyOffset($array, $key); - $array = array_slice($array, 0, $offset, preserve_keys: true) - + $inserted - + array_slice($array, $offset, count($array), preserve_keys: true); - } - - - /** - * Inserts the contents of the $inserted array into the $array before the $key. - * If $key is null (or does not exist), it is inserted at the end. - */ - public static function insertAfter(array &$array, string|int|null $key, array $inserted): void - { - if ($key === null || ($offset = self::getKeyOffset($array, $key)) === null) { - $offset = count($array) - 1; - } - - $array = array_slice($array, 0, $offset + 1, preserve_keys: true) - + $inserted - + array_slice($array, $offset + 1, count($array), preserve_keys: true); - } - - - /** - * Renames key in array. - */ - public static function renameKey(array &$array, string|int $oldKey, string|int $newKey): bool - { - $offset = self::getKeyOffset($array, $oldKey); - if ($offset === null) { - return false; - } - - $val = &$array[$oldKey]; - $keys = array_keys($array); - $keys[$offset] = $newKey; - $array = array_combine($keys, $array); - $array[$newKey] = &$val; - return true; - } - - - /** - * Returns only those array items, which matches a regular expression $pattern. - * @param string[] $array - * @return string[] - */ - public static function grep( - array $array, - #[Language('RegExp')] - string $pattern, - bool|int $invert = false, - ): array - { - $flags = $invert ? PREG_GREP_INVERT : 0; - return Strings::pcre('preg_grep', [$pattern, $array, $flags]); - } - - - /** - * Transforms multidimensional array to flat array. - */ - public static function flatten(array $array, bool $preserveKeys = false): array - { - $res = []; - $cb = $preserveKeys - ? function ($v, $k) use (&$res): void { $res[$k] = $v; } - : function ($v) use (&$res): void { $res[] = $v; }; - array_walk_recursive($array, $cb); - return $res; - } - - - /** - * Checks if the array is indexed in ascending order of numeric keys from zero, a.k.a list. - * @return ($value is list ? true : false) - */ - public static function isList(mixed $value): bool - { - return is_array($value) && (PHP_VERSION_ID < 80100 - ? !$value || array_keys($value) === range(0, count($value) - 1) - : array_is_list($value) - ); - } - - - /** - * Reformats table to associative tree. Path looks like 'field|field[]field->field=field'. - * @param string|string[] $path - */ - public static function associate(array $array, $path): array|\stdClass - { - $parts = is_array($path) - ? $path - : preg_split('#(\[\]|->|=|\|)#', $path, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); - - if (!$parts || $parts === ['->'] || $parts[0] === '=' || $parts[0] === '|') { - throw new Nette\InvalidArgumentException("Invalid path '$path'."); - } - - $res = $parts[0] === '->' ? new \stdClass : []; - - foreach ($array as $rowOrig) { - $row = (array) $rowOrig; - $x = &$res; - - for ($i = 0; $i < count($parts); $i++) { - $part = $parts[$i]; - if ($part === '[]') { - $x = &$x[]; - - } elseif ($part === '=') { - if (isset($parts[++$i])) { - $x = $row[$parts[$i]]; - $row = null; - } - } elseif ($part === '->') { - if (isset($parts[++$i])) { - if ($x === null) { - $x = new \stdClass; - } - - $x = &$x->{$row[$parts[$i]]}; - } else { - $row = is_object($rowOrig) ? $rowOrig : (object) $row; - } - } elseif ($part !== '|') { - $x = &$x[(string) $row[$part]]; - } - } - - if ($x === null) { - $x = $row; - } - } - - return $res; - } - - - /** - * Normalizes array to associative array. Replace numeric keys with their values, the new value will be $filling. - */ - public static function normalize(array $array, mixed $filling = null): array - { - $res = []; - foreach ($array as $k => $v) { - $res[is_int($k) ? $v : $k] = is_int($k) ? $filling : $v; - } - - return $res; - } - - - /** - * Returns and removes the value of an item from an array. If it does not exist, it throws an exception, - * or returns $default, if provided. - * @template T - * @param array $array - * @param ?T $default - * @return ?T - * @throws Nette\InvalidArgumentException if item does not exist and default value is not provided - */ - public static function pick(array &$array, string|int $key, mixed $default = null): mixed - { - if (array_key_exists($key, $array)) { - $value = $array[$key]; - unset($array[$key]); - return $value; - - } elseif (func_num_args() < 3) { - throw new Nette\InvalidArgumentException("Missing item '$key'."); - - } else { - return $default; - } - } - - - /** - * Tests whether at least one element in the array passes the test implemented by the provided function, - * which has the signature `function ($value, $key, array $array): bool`. - * @template K - * @template V - * @param iterable $array - * @param callable(V, K, ($array is array ? array : iterable)): bool $predicate - */ - public static function some(iterable $array, callable $predicate): bool - { - foreach ($array as $k => $v) { - if ($predicate($v, $k, $array)) { - return true; - } - } - - return false; - } - - - /** - * Tests whether all elements in the array pass the test implemented by the provided function, - * which has the signature `function ($value, $key, array $array): bool`. - * @template K - * @template V - * @param iterable $array - * @param callable(V, K, ($array is array ? array : iterable)): bool $predicate - */ - public static function every(iterable $array, callable $predicate): bool - { - foreach ($array as $k => $v) { - if (!$predicate($v, $k, $array)) { - return false; - } - } - - return true; - } - - - /** - * Returns a new array containing all key-value pairs matching the given $predicate. - * The callback has the signature `function (mixed $value, int|string $key, array $array): bool`. - * @template K of array-key - * @template V - * @param array $array - * @param callable(V, K, array): bool $predicate - * @return array - */ - public static function filter(array $array, callable $predicate): array - { - $res = []; - foreach ($array as $k => $v) { - if ($predicate($v, $k, $array)) { - $res[$k] = $v; - } - } - return $res; - } - - - /** - * Returns an array containing the original keys and results of applying the given transform function to each element. - * The function has signature `function ($value, $key, array $array): mixed`. - * @template K of array-key - * @template V - * @template R - * @param iterable $array - * @param callable(V, K, ($array is array ? array : iterable)): R $transformer - * @return array - */ - public static function map(iterable $array, callable $transformer): array - { - $res = []; - foreach ($array as $k => $v) { - $res[$k] = $transformer($v, $k, $array); - } - - return $res; - } - - - /** - * Invokes all callbacks and returns array of results. - * @param callable[] $callbacks - */ - public static function invoke(iterable $callbacks, ...$args): array - { - $res = []; - foreach ($callbacks as $k => $cb) { - $res[$k] = $cb(...$args); - } - - return $res; - } - - - /** - * Invokes method on every object in an array and returns array of results. - * @param object[] $objects - */ - public static function invokeMethod(iterable $objects, string $method, ...$args): array - { - $res = []; - foreach ($objects as $k => $obj) { - $res[$k] = $obj->$method(...$args); - } - - return $res; - } - - - /** - * Copies the elements of the $array array to the $object object and then returns it. - * @template T of object - * @param T $object - * @return T - */ - public static function toObject(iterable $array, object $object): object - { - foreach ($array as $k => $v) { - $object->$k = $v; - } - - return $object; - } - - - /** - * Converts value to array key. - */ - public static function toKey(mixed $value): int|string - { - return key([$value => null]); - } - - - /** - * Returns copy of the $array where every item is converted to string - * and prefixed by $prefix and suffixed by $suffix. - * @param string[] $array - * @return string[] - */ - public static function wrap(array $array, string $prefix = '', string $suffix = ''): array - { - $res = []; - foreach ($array as $k => $v) { - $res[$k] = $prefix . $v . $suffix; - } - - return $res; - } -} diff --git a/vendor/nette/utils/src/Utils/Callback.php b/vendor/nette/utils/src/Utils/Callback.php deleted file mode 100644 index 732af967..00000000 --- a/vendor/nette/utils/src/Utils/Callback.php +++ /dev/null @@ -1,137 +0,0 @@ -getClosureScopeClass()?->name; - if (str_ends_with($r->name, '}')) { - return $closure; - - } elseif (($obj = $r->getClosureThis()) && $obj::class === $class) { - return [$obj, $r->name]; - - } elseif ($class) { - return [$class, $r->name]; - - } else { - return $r->name; - } - } -} diff --git a/vendor/nette/utils/src/Utils/DateTime.php b/vendor/nette/utils/src/Utils/DateTime.php deleted file mode 100644 index 6ad65205..00000000 --- a/vendor/nette/utils/src/Utils/DateTime.php +++ /dev/null @@ -1,140 +0,0 @@ -format('Y-m-d H:i:s.u'), $time->getTimezone()); - - } elseif (is_numeric($time)) { - if ($time <= self::YEAR) { - $time += time(); - } - - return (new static)->setTimestamp((int) $time); - - } else { // textual or null - return new static((string) $time); - } - } - - - /** - * Creates DateTime object. - * @throws Nette\InvalidArgumentException if the date and time are not valid. - */ - public static function fromParts( - int $year, - int $month, - int $day, - int $hour = 0, - int $minute = 0, - float $second = 0.0, - ): static - { - $s = sprintf('%04d-%02d-%02d %02d:%02d:%02.5F', $year, $month, $day, $hour, $minute, $second); - if ( - !checkdate($month, $day, $year) - || $hour < 0 - || $hour > 23 - || $minute < 0 - || $minute > 59 - || $second < 0 - || $second >= 60 - ) { - throw new Nette\InvalidArgumentException("Invalid date '$s'"); - } - - return new static($s); - } - - - /** - * Returns new DateTime object formatted according to the specified format. - */ - public static function createFromFormat( - string $format, - string $time, - string|\DateTimeZone|null $timezone = null, - ): static|false - { - if ($timezone === null) { - $timezone = new \DateTimeZone(date_default_timezone_get()); - - } elseif (is_string($timezone)) { - $timezone = new \DateTimeZone($timezone); - } - - $date = parent::createFromFormat($format, $time, $timezone); - return $date ? static::from($date) : false; - } - - - /** - * Returns JSON representation in ISO 8601 (used by JavaScript). - */ - public function jsonSerialize(): string - { - return $this->format('c'); - } - - - /** - * Returns the date and time in the format 'Y-m-d H:i:s'. - */ - public function __toString(): string - { - return $this->format('Y-m-d H:i:s'); - } - - - /** - * You'd better use: (clone $dt)->modify(...) - */ - public function modifyClone(string $modify = ''): static - { - $dolly = clone $this; - return $modify ? $dolly->modify($modify) : $dolly; - } -} diff --git a/vendor/nette/utils/src/Utils/FileInfo.php b/vendor/nette/utils/src/Utils/FileInfo.php deleted file mode 100644 index fb92d119..00000000 --- a/vendor/nette/utils/src/Utils/FileInfo.php +++ /dev/null @@ -1,69 +0,0 @@ -setInfoClass(static::class); - $this->relativePath = $relativePath; - } - - - /** - * Returns the relative directory path. - */ - public function getRelativePath(): string - { - return $this->relativePath; - } - - - /** - * Returns the relative path including file name. - */ - public function getRelativePathname(): string - { - return ($this->relativePath === '' ? '' : $this->relativePath . DIRECTORY_SEPARATOR) - . $this->getBasename(); - } - - - /** - * Returns the contents of the file. - * @throws Nette\IOException - */ - public function read(): string - { - return FileSystem::read($this->getPathname()); - } - - - /** - * Writes the contents to the file. - * @throws Nette\IOException - */ - public function write(string $content): void - { - FileSystem::write($this->getPathname(), $content); - } -} diff --git a/vendor/nette/utils/src/Utils/FileSystem.php b/vendor/nette/utils/src/Utils/FileSystem.php deleted file mode 100644 index ab9a7e87..00000000 --- a/vendor/nette/utils/src/Utils/FileSystem.php +++ /dev/null @@ -1,326 +0,0 @@ -getPathname()); - } - - foreach ($iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($origin, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::SELF_FIRST) as $item) { - if ($item->isDir()) { - static::createDir($target . '/' . $iterator->getSubPathName()); - } else { - static::copy($item->getPathname(), $target . '/' . $iterator->getSubPathName()); - } - } - } else { - static::createDir(dirname($target)); - if (@stream_copy_to_stream(static::open($origin, 'rb'), static::open($target, 'wb')) === false) { // @ is escalated to exception - throw new Nette\IOException(sprintf( - "Unable to copy file '%s' to '%s'. %s", - self::normalizePath($origin), - self::normalizePath($target), - Helpers::getLastError(), - )); - } - } - } - - - /** - * Opens file and returns resource. - * @return resource - * @throws Nette\IOException on error occurred - */ - public static function open(string $path, string $mode) - { - $f = @fopen($path, $mode); // @ is escalated to exception - if (!$f) { - throw new Nette\IOException(sprintf( - "Unable to open file '%s'. %s", - self::normalizePath($path), - Helpers::getLastError(), - )); - } - return $f; - } - - - /** - * Deletes a file or an entire directory if exists. If the directory is not empty, it deletes its contents first. - * @throws Nette\IOException on error occurred - */ - public static function delete(string $path): void - { - if (is_file($path) || is_link($path)) { - $func = DIRECTORY_SEPARATOR === '\\' && is_dir($path) ? 'rmdir' : 'unlink'; - if (!@$func($path)) { // @ is escalated to exception - throw new Nette\IOException(sprintf( - "Unable to delete '%s'. %s", - self::normalizePath($path), - Helpers::getLastError(), - )); - } - } elseif (is_dir($path)) { - foreach (new \FilesystemIterator($path) as $item) { - static::delete($item->getPathname()); - } - - if (!@rmdir($path)) { // @ is escalated to exception - throw new Nette\IOException(sprintf( - "Unable to delete directory '%s'. %s", - self::normalizePath($path), - Helpers::getLastError(), - )); - } - } - } - - - /** - * Renames or moves a file or a directory. Overwrites existing files and directories by default. - * @throws Nette\IOException on error occurred - * @throws Nette\InvalidStateException if $overwrite is set to false and destination already exists - */ - public static function rename(string $origin, string $target, bool $overwrite = true): void - { - if (!$overwrite && file_exists($target)) { - throw new Nette\InvalidStateException(sprintf("File or directory '%s' already exists.", self::normalizePath($target))); - - } elseif (!file_exists($origin)) { - throw new Nette\IOException(sprintf("File or directory '%s' not found.", self::normalizePath($origin))); - - } else { - static::createDir(dirname($target)); - if (realpath($origin) !== realpath($target)) { - static::delete($target); - } - - if (!@rename($origin, $target)) { // @ is escalated to exception - throw new Nette\IOException(sprintf( - "Unable to rename file or directory '%s' to '%s'. %s", - self::normalizePath($origin), - self::normalizePath($target), - Helpers::getLastError(), - )); - } - } - } - - - /** - * Reads the content of a file. - * @throws Nette\IOException on error occurred - */ - public static function read(string $file): string - { - $content = @file_get_contents($file); // @ is escalated to exception - if ($content === false) { - throw new Nette\IOException(sprintf( - "Unable to read file '%s'. %s", - self::normalizePath($file), - Helpers::getLastError(), - )); - } - - return $content; - } - - - /** - * Reads the file content line by line. Because it reads continuously as we iterate over the lines, - * it is possible to read files larger than the available memory. - * @return \Generator - * @throws Nette\IOException on error occurred - */ - public static function readLines(string $file, bool $stripNewLines = true): \Generator - { - return (function ($f) use ($file, $stripNewLines) { - $counter = 0; - do { - $line = Callback::invokeSafe('fgets', [$f], fn($error) => throw new Nette\IOException(sprintf( - "Unable to read file '%s'. %s", - self::normalizePath($file), - $error, - ))); - if ($line === false) { - fclose($f); - break; - } - if ($stripNewLines) { - $line = rtrim($line, "\r\n"); - } - - yield $counter++ => $line; - - } while (true); - })(static::open($file, 'r')); - } - - - /** - * Writes the string to a file. - * @throws Nette\IOException on error occurred - */ - public static function write(string $file, string $content, ?int $mode = 0666): void - { - static::createDir(dirname($file)); - if (@file_put_contents($file, $content) === false) { // @ is escalated to exception - throw new Nette\IOException(sprintf( - "Unable to write file '%s'. %s", - self::normalizePath($file), - Helpers::getLastError(), - )); - } - - if ($mode !== null && !@chmod($file, $mode)) { // @ is escalated to exception - throw new Nette\IOException(sprintf( - "Unable to chmod file '%s' to mode %s. %s", - self::normalizePath($file), - decoct($mode), - Helpers::getLastError(), - )); - } - } - - - /** - * Sets file permissions to `$fileMode` or directory permissions to `$dirMode`. - * Recursively traverses and sets permissions on the entire contents of the directory as well. - * @throws Nette\IOException on error occurred - */ - public static function makeWritable(string $path, int $dirMode = 0777, int $fileMode = 0666): void - { - if (is_file($path)) { - if (!@chmod($path, $fileMode)) { // @ is escalated to exception - throw new Nette\IOException(sprintf( - "Unable to chmod file '%s' to mode %s. %s", - self::normalizePath($path), - decoct($fileMode), - Helpers::getLastError(), - )); - } - } elseif (is_dir($path)) { - foreach (new \FilesystemIterator($path) as $item) { - static::makeWritable($item->getPathname(), $dirMode, $fileMode); - } - - if (!@chmod($path, $dirMode)) { // @ is escalated to exception - throw new Nette\IOException(sprintf( - "Unable to chmod directory '%s' to mode %s. %s", - self::normalizePath($path), - decoct($dirMode), - Helpers::getLastError(), - )); - } - } else { - throw new Nette\IOException(sprintf("File or directory '%s' not found.", self::normalizePath($path))); - } - } - - - /** - * Determines if the path is absolute. - */ - public static function isAbsolute(string $path): bool - { - return (bool) preg_match('#([a-z]:)?[/\\\\]|[a-z][a-z0-9+.-]*://#Ai', $path); - } - - - /** - * Normalizes `..` and `.` and directory separators in path. - */ - public static function normalizePath(string $path): string - { - $parts = $path === '' ? [] : preg_split('~[/\\\\]+~', $path); - $res = []; - foreach ($parts as $part) { - if ($part === '..' && $res && end($res) !== '..' && end($res) !== '') { - array_pop($res); - } elseif ($part !== '.') { - $res[] = $part; - } - } - - return $res === [''] - ? DIRECTORY_SEPARATOR - : implode(DIRECTORY_SEPARATOR, $res); - } - - - /** - * Joins all segments of the path and normalizes the result. - */ - public static function joinPaths(string ...$paths): string - { - return self::normalizePath(implode('/', $paths)); - } - - - /** - * Converts backslashes to slashes. - */ - public static function unixSlashes(string $path): string - { - return strtr($path, '\\', '/'); - } - - - /** - * Converts slashes to platform-specific directory separators. - */ - public static function platformSlashes(string $path): string - { - return DIRECTORY_SEPARATOR === '/' - ? strtr($path, '\\', '/') - : str_replace(':\\\\', '://', strtr($path, '/', '\\')); // protocol:// - } -} diff --git a/vendor/nette/utils/src/Utils/Finder.php b/vendor/nette/utils/src/Utils/Finder.php deleted file mode 100644 index a496528a..00000000 --- a/vendor/nette/utils/src/Utils/Finder.php +++ /dev/null @@ -1,510 +0,0 @@ -size('> 10kB') - * ->from('.') - * ->exclude('temp'); - * - * @implements \IteratorAggregate - */ -class Finder implements \IteratorAggregate -{ - use Nette\SmartObject; - - /** @var array */ - private array $find = []; - - /** @var string[] */ - private array $in = []; - - /** @var \Closure[] */ - private array $filters = []; - - /** @var \Closure[] */ - private array $descentFilters = []; - - /** @var array */ - private array $appends = []; - private bool $childFirst = false; - - /** @var ?callable */ - private $sort; - private int $maxDepth = -1; - private bool $ignoreUnreadableDirs = true; - - - /** - * Begins search for files and directories matching mask. - */ - public static function find(string|array $masks = ['*']): static - { - $masks = is_array($masks) ? $masks : func_get_args(); // compatibility with variadic - return (new static)->addMask($masks, 'dir')->addMask($masks, 'file'); - } - - - /** - * Begins search for files matching mask. - */ - public static function findFiles(string|array $masks = ['*']): static - { - $masks = is_array($masks) ? $masks : func_get_args(); // compatibility with variadic - return (new static)->addMask($masks, 'file'); - } - - - /** - * Begins search for directories matching mask. - */ - public static function findDirectories(string|array $masks = ['*']): static - { - $masks = is_array($masks) ? $masks : func_get_args(); // compatibility with variadic - return (new static)->addMask($masks, 'dir'); - } - - - /** - * Finds files matching the specified masks. - */ - public function files(string|array $masks = ['*']): static - { - return $this->addMask((array) $masks, 'file'); - } - - - /** - * Finds directories matching the specified masks. - */ - public function directories(string|array $masks = ['*']): static - { - return $this->addMask((array) $masks, 'dir'); - } - - - private function addMask(array $masks, string $mode): static - { - foreach ($masks as $mask) { - $mask = FileSystem::unixSlashes($mask); - if ($mode === 'dir') { - $mask = rtrim($mask, '/'); - } - if ($mask === '' || ($mode === 'file' && str_ends_with($mask, '/'))) { - throw new Nette\InvalidArgumentException("Invalid mask '$mask'"); - } - if (str_starts_with($mask, '**/')) { - $mask = substr($mask, 3); - } - $this->find[] = [$mask, $mode]; - } - return $this; - } - - - /** - * Searches in the given directories. Wildcards are allowed. - */ - public function in(string|array $paths): static - { - $paths = is_array($paths) ? $paths : func_get_args(); // compatibility with variadic - $this->addLocation($paths, ''); - return $this; - } - - - /** - * Searches recursively from the given directories. Wildcards are allowed. - */ - public function from(string|array $paths): static - { - $paths = is_array($paths) ? $paths : func_get_args(); // compatibility with variadic - $this->addLocation($paths, '/**'); - return $this; - } - - - private function addLocation(array $paths, string $ext): void - { - foreach ($paths as $path) { - if ($path === '') { - throw new Nette\InvalidArgumentException("Invalid directory '$path'"); - } - $path = rtrim(FileSystem::unixSlashes($path), '/'); - $this->in[] = $path . $ext; - } - } - - - /** - * Lists directory's contents before the directory itself. By default, this is disabled. - */ - public function childFirst(bool $state = true): static - { - $this->childFirst = $state; - return $this; - } - - - /** - * Ignores unreadable directories. By default, this is enabled. - */ - public function ignoreUnreadableDirs(bool $state = true): static - { - $this->ignoreUnreadableDirs = $state; - return $this; - } - - - /** - * Set a compare function for sorting directory entries. The function will be called to sort entries from the same directory. - * @param callable(FileInfo, FileInfo): int $callback - */ - public function sortBy(callable $callback): static - { - $this->sort = $callback; - return $this; - } - - - /** - * Sorts files in each directory naturally by name. - */ - public function sortByName(): static - { - $this->sort = fn(FileInfo $a, FileInfo $b): int => strnatcmp($a->getBasename(), $b->getBasename()); - return $this; - } - - - /** - * Adds the specified paths or appends a new finder that returns. - */ - public function append(string|array|null $paths = null): static - { - if ($paths === null) { - return $this->appends[] = new static; - } - - $this->appends = array_merge($this->appends, (array) $paths); - return $this; - } - - - /********************* filtering ****************d*g**/ - - - /** - * Skips entries that matches the given masks relative to the ones defined with the in() or from() methods. - */ - public function exclude(string|array $masks): static - { - $masks = is_array($masks) ? $masks : func_get_args(); // compatibility with variadic - foreach ($masks as $mask) { - $mask = FileSystem::unixSlashes($mask); - if (!preg_match('~^/?(\*\*/)?(.+)(/\*\*|/\*|/|)$~D', $mask, $m)) { - throw new Nette\InvalidArgumentException("Invalid mask '$mask'"); - } - $end = $m[3]; - $re = $this->buildPattern($m[2]); - $filter = fn(FileInfo $file): bool => ($end && !$file->isDir()) - || !preg_match($re, FileSystem::unixSlashes($file->getRelativePathname())); - - $this->descentFilter($filter); - if ($end !== '/*') { - $this->filter($filter); - } - } - - return $this; - } - - - /** - * Yields only entries which satisfy the given filter. - * @param callable(FileInfo): bool $callback - */ - public function filter(callable $callback): static - { - $this->filters[] = \Closure::fromCallable($callback); - return $this; - } - - - /** - * It descends only to directories that match the specified filter. - * @param callable(FileInfo): bool $callback - */ - public function descentFilter(callable $callback): static - { - $this->descentFilters[] = \Closure::fromCallable($callback); - return $this; - } - - - /** - * Sets the maximum depth of entries. - */ - public function limitDepth(?int $depth): static - { - $this->maxDepth = $depth ?? -1; - return $this; - } - - - /** - * Restricts the search by size. $operator accepts "[operator] [size] [unit]" example: >=10kB - */ - public function size(string $operator, ?int $size = null): static - { - if (func_num_args() === 1) { // in $operator is predicate - if (!preg_match('#^(?:([=<>!]=?|<>)\s*)?((?:\d*\.)?\d+)\s*(K|M|G|)B?$#Di', $operator, $matches)) { - throw new Nette\InvalidArgumentException('Invalid size predicate format.'); - } - - [, $operator, $size, $unit] = $matches; - $units = ['' => 1, 'k' => 1e3, 'm' => 1e6, 'g' => 1e9]; - $size *= $units[strtolower($unit)]; - $operator = $operator ?: '='; - } - - return $this->filter(fn(FileInfo $file): bool => !$file->isFile() || Helpers::compare($file->getSize(), $operator, $size)); - } - - - /** - * Restricts the search by modified time. $operator accepts "[operator] [date]" example: >1978-01-23 - */ - public function date(string $operator, string|int|\DateTimeInterface|null $date = null): static - { - if (func_num_args() === 1) { // in $operator is predicate - if (!preg_match('#^(?:([=<>!]=?|<>)\s*)?(.+)$#Di', $operator, $matches)) { - throw new Nette\InvalidArgumentException('Invalid date predicate format.'); - } - - [, $operator, $date] = $matches; - $operator = $operator ?: '='; - } - - $date = DateTime::from($date)->format('U'); - return $this->filter(fn(FileInfo $file): bool => !$file->isFile() || Helpers::compare($file->getMTime(), $operator, $date)); - } - - - /********************* iterator generator ****************d*g**/ - - - /** - * Returns an array with all found files and directories. - * @return list - */ - public function collect(): array - { - return iterator_to_array($this->getIterator(), preserve_keys: false); - } - - - /** @return \Generator */ - public function getIterator(): \Generator - { - $plan = $this->buildPlan(); - foreach ($plan as $dir => $searches) { - yield from $this->traverseDir($dir, $searches); - } - - foreach ($this->appends as $item) { - if ($item instanceof self) { - yield from $item->getIterator(); - } else { - $item = FileSystem::platformSlashes($item); - yield $item => new FileInfo($item); - } - } - } - - - /** - * @param array $searches - * @param string[] $subdirs - * @return \Generator - */ - private function traverseDir(string $dir, array $searches, array $subdirs = []): \Generator - { - if ($this->maxDepth >= 0 && count($subdirs) > $this->maxDepth) { - return; - } elseif (!is_dir($dir)) { - throw new Nette\InvalidStateException(sprintf("Directory '%s' does not exist.", rtrim($dir, '/\\'))); - } - - try { - $pathNames = new \FilesystemIterator($dir, \FilesystemIterator::FOLLOW_SYMLINKS | \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::CURRENT_AS_PATHNAME | \FilesystemIterator::UNIX_PATHS); - } catch (\UnexpectedValueException $e) { - if ($this->ignoreUnreadableDirs) { - return; - } else { - throw new Nette\InvalidStateException($e->getMessage()); - } - } - - $files = $this->convertToFiles($pathNames, implode('/', $subdirs), FileSystem::isAbsolute($dir)); - - if ($this->sort) { - $files = iterator_to_array($files); - usort($files, $this->sort); - } - - foreach ($files as $file) { - $pathName = $file->getPathname(); - $cache = $subSearch = []; - - if ($file->isDir()) { - foreach ($searches as $search) { - if ($search->recursive && $this->proveFilters($this->descentFilters, $file, $cache)) { - $subSearch[] = $search; - } - } - } - - if ($this->childFirst && $subSearch) { - yield from $this->traverseDir($pathName, $subSearch, array_merge($subdirs, [$file->getBasename()])); - } - - $relativePathname = FileSystem::unixSlashes($file->getRelativePathname()); - foreach ($searches as $search) { - if ( - $file->{'is' . $search->mode}() - && preg_match($search->pattern, $relativePathname) - && $this->proveFilters($this->filters, $file, $cache) - ) { - yield $pathName => $file; - break; - } - } - - if (!$this->childFirst && $subSearch) { - yield from $this->traverseDir($pathName, $subSearch, array_merge($subdirs, [$file->getBasename()])); - } - } - } - - - private function convertToFiles(iterable $pathNames, string $relativePath, bool $absolute): \Generator - { - foreach ($pathNames as $pathName) { - if (!$absolute) { - $pathName = preg_replace('~\.?/~A', '', $pathName); - } - $pathName = FileSystem::platformSlashes($pathName); - yield new FileInfo($pathName, $relativePath); - } - } - - - private function proveFilters(array $filters, FileInfo $file, array &$cache): bool - { - foreach ($filters as $filter) { - $res = &$cache[spl_object_id($filter)]; - $res ??= $filter($file); - if (!$res) { - return false; - } - } - - return true; - } - - - /** @return array> */ - private function buildPlan(): array - { - $plan = $dirCache = []; - foreach ($this->find as [$mask, $mode]) { - $splits = []; - if (FileSystem::isAbsolute($mask)) { - if ($this->in) { - throw new Nette\InvalidStateException("You cannot combine the absolute path in the mask '$mask' and the directory to search '{$this->in[0]}'."); - } - $splits[] = self::splitRecursivePart($mask); - } else { - foreach ($this->in ?: ['.'] as $in) { - $in = strtr($in, ['[' => '[[]', ']' => '[]]']); // in path, do not treat [ and ] as a pattern by glob() - $splits[] = self::splitRecursivePart($in . '/' . $mask); - } - } - - foreach ($splits as [$base, $rest, $recursive]) { - $base = $base === '' ? '.' : $base; - $dirs = $dirCache[$base] ??= strpbrk($base, '*?[') - ? glob($base, GLOB_NOSORT | GLOB_ONLYDIR | GLOB_NOESCAPE) - : [strtr($base, ['[[]' => '[', '[]]' => ']'])]; // unescape [ and ] - - if (!$dirs) { - throw new Nette\InvalidStateException(sprintf("Directory '%s' does not exist.", rtrim($base, '/\\'))); - } - - $search = (object) ['pattern' => $this->buildPattern($rest), 'mode' => $mode, 'recursive' => $recursive]; - foreach ($dirs as $dir) { - $plan[$dir][] = $search; - } - } - } - - return $plan; - } - - - /** - * Since glob() does not know ** wildcard, we divide the path into a part for glob and a part for manual traversal. - */ - private static function splitRecursivePart(string $path): array - { - $a = strrpos($path, '/'); - $parts = preg_split('~(?<=^|/)\*\*($|/)~', substr($path, 0, $a + 1), 2); - return isset($parts[1]) - ? [$parts[0], $parts[1] . substr($path, $a + 1), true] - : [$parts[0], substr($path, $a + 1), false]; - } - - - /** - * Converts wildcards to regular expression. - */ - private function buildPattern(string $mask): string - { - if ($mask === '*') { - return '##'; - } elseif (str_starts_with($mask, './')) { - $anchor = '^'; - $mask = substr($mask, 2); - } else { - $anchor = '(?:^|/)'; - } - - $pattern = strtr( - preg_quote($mask, '#'), - [ - '\*\*/' => '(.+/)?', - '\*' => '[^/]*', - '\?' => '[^/]', - '\[\!' => '[^', - '\[' => '[', - '\]' => ']', - '\-' => '-', - ], - ); - return '#' . $anchor . $pattern . '$#D' . (defined('PHP_WINDOWS_VERSION_BUILD') ? 'i' : ''); - } -} diff --git a/vendor/nette/utils/src/Utils/Floats.php b/vendor/nette/utils/src/Utils/Floats.php deleted file mode 100644 index cc2781d7..00000000 --- a/vendor/nette/utils/src/Utils/Floats.php +++ /dev/null @@ -1,107 +0,0 @@ - $b it returns 1 - * @throws \LogicException if one of parameters is NAN - */ - public static function compare(float $a, float $b): int - { - if (is_nan($a) || is_nan($b)) { - throw new \LogicException('Trying to compare NAN'); - - } elseif (!is_finite($a) && !is_finite($b) && $a === $b) { - return 0; - } - - $diff = abs($a - $b); - if (($diff < self::Epsilon || ($diff / max(abs($a), abs($b)) < self::Epsilon))) { - return 0; - } - - return $a < $b ? -1 : 1; - } - - - /** - * Returns true if $a = $b - * @throws \LogicException if one of parameters is NAN - */ - public static function areEqual(float $a, float $b): bool - { - return self::compare($a, $b) === 0; - } - - - /** - * Returns true if $a < $b - * @throws \LogicException if one of parameters is NAN - */ - public static function isLessThan(float $a, float $b): bool - { - return self::compare($a, $b) < 0; - } - - - /** - * Returns true if $a <= $b - * @throws \LogicException if one of parameters is NAN - */ - public static function isLessThanOrEqualTo(float $a, float $b): bool - { - return self::compare($a, $b) <= 0; - } - - - /** - * Returns true if $a > $b - * @throws \LogicException if one of parameters is NAN - */ - public static function isGreaterThan(float $a, float $b): bool - { - return self::compare($a, $b) > 0; - } - - - /** - * Returns true if $a >= $b - * @throws \LogicException if one of parameters is NAN - */ - public static function isGreaterThanOrEqualTo(float $a, float $b): bool - { - return self::compare($a, $b) >= 0; - } -} diff --git a/vendor/nette/utils/src/Utils/Helpers.php b/vendor/nette/utils/src/Utils/Helpers.php deleted file mode 100644 index b3586c16..00000000 --- a/vendor/nette/utils/src/Utils/Helpers.php +++ /dev/null @@ -1,104 +0,0 @@ - $max) { - throw new Nette\InvalidArgumentException("Minimum ($min) is not less than maximum ($max)."); - } - - return min(max($value, $min), $max); - } - - - /** - * Looks for a string from possibilities that is most similar to value, but not the same (for 8-bit encoding). - * @param string[] $possibilities - */ - public static function getSuggestion(array $possibilities, string $value): ?string - { - $best = null; - $min = (strlen($value) / 4 + 1) * 10 + .1; - foreach (array_unique($possibilities) as $item) { - if ($item !== $value && ($len = levenshtein($item, $value, 10, 11, 10)) < $min) { - $min = $len; - $best = $item; - } - } - - return $best; - } - - - /** - * Compares two values in the same way that PHP does. Recognizes operators: >, >=, <, <=, =, ==, ===, !=, !==, <> - */ - public static function compare(mixed $left, string $operator, mixed $right): bool - { - return match ($operator) { - '>' => $left > $right, - '>=' => $left >= $right, - '<' => $left < $right, - '<=' => $left <= $right, - '=', '==' => $left == $right, - '===' => $left === $right, - '!=', '<>' => $left != $right, - '!==' => $left !== $right, - default => throw new Nette\InvalidArgumentException("Unknown operator '$operator'"), - }; - } -} diff --git a/vendor/nette/utils/src/Utils/Html.php b/vendor/nette/utils/src/Utils/Html.php deleted file mode 100644 index fc0e3ef2..00000000 --- a/vendor/nette/utils/src/Utils/Html.php +++ /dev/null @@ -1,839 +0,0 @@ - element's attributes */ - public $attrs = []; - - /** void elements */ - public static $emptyElements = [ - 'img' => 1, 'hr' => 1, 'br' => 1, 'input' => 1, 'meta' => 1, 'area' => 1, 'embed' => 1, 'keygen' => 1, - 'source' => 1, 'base' => 1, 'col' => 1, 'link' => 1, 'param' => 1, 'basefont' => 1, 'frame' => 1, - 'isindex' => 1, 'wbr' => 1, 'command' => 1, 'track' => 1, - ]; - - /** @var array nodes */ - protected $children = []; - - /** element's name */ - private string $name = ''; - - private bool $isEmpty = false; - - - /** - * Constructs new HTML element. - * @param array|string $attrs element's attributes or plain text content - */ - public static function el(?string $name = null, array|string|null $attrs = null): static - { - $el = new static; - $parts = explode(' ', (string) $name, 2); - $el->setName($parts[0]); - - if (is_array($attrs)) { - $el->attrs = $attrs; - - } elseif ($attrs !== null) { - $el->setText($attrs); - } - - if (isset($parts[1])) { - foreach (Strings::matchAll($parts[1] . ' ', '#([a-z0-9:-]+)(?:=(["\'])?(.*?)(?(2)\2|\s))?#i') as $m) { - $el->attrs[$m[1]] = $m[3] ?? true; - } - } - - return $el; - } - - - /** - * Returns an object representing HTML text. - */ - public static function fromHtml(string $html): static - { - return (new static)->setHtml($html); - } - - - /** - * Returns an object representing plain text. - */ - public static function fromText(string $text): static - { - return (new static)->setText($text); - } - - - /** - * Converts to HTML. - */ - final public function toHtml(): string - { - return $this->render(); - } - - - /** - * Converts to plain text. - */ - final public function toText(): string - { - return $this->getText(); - } - - - /** - * Converts given HTML code to plain text. - */ - public static function htmlToText(string $html): string - { - return html_entity_decode(strip_tags($html), ENT_QUOTES | ENT_HTML5, 'UTF-8'); - } - - - /** - * Changes element's name. - */ - final public function setName(string $name, ?bool $isEmpty = null): static - { - $this->name = $name; - $this->isEmpty = $isEmpty ?? isset(static::$emptyElements[$name]); - return $this; - } - - - /** - * Returns element's name. - */ - final public function getName(): string - { - return $this->name; - } - - - /** - * Is element empty? - */ - final public function isEmpty(): bool - { - return $this->isEmpty; - } - - - /** - * Sets multiple attributes. - */ - public function addAttributes(array $attrs): static - { - $this->attrs = array_merge($this->attrs, $attrs); - return $this; - } - - - /** - * Appends value to element's attribute. - */ - public function appendAttribute(string $name, mixed $value, mixed $option = true): static - { - if (is_array($value)) { - $prev = isset($this->attrs[$name]) ? (array) $this->attrs[$name] : []; - $this->attrs[$name] = $value + $prev; - - } elseif ((string) $value === '') { - $tmp = &$this->attrs[$name]; // appending empty value? -> ignore, but ensure it exists - - } elseif (!isset($this->attrs[$name]) || is_array($this->attrs[$name])) { // needs array - $this->attrs[$name][$value] = $option; - - } else { - $this->attrs[$name] = [$this->attrs[$name] => true, $value => $option]; - } - - return $this; - } - - - /** - * Sets element's attribute. - */ - public function setAttribute(string $name, mixed $value): static - { - $this->attrs[$name] = $value; - return $this; - } - - - /** - * Returns element's attribute. - */ - public function getAttribute(string $name): mixed - { - return $this->attrs[$name] ?? null; - } - - - /** - * Unsets element's attribute. - */ - public function removeAttribute(string $name): static - { - unset($this->attrs[$name]); - return $this; - } - - - /** - * Unsets element's attributes. - */ - public function removeAttributes(array $attributes): static - { - foreach ($attributes as $name) { - unset($this->attrs[$name]); - } - - return $this; - } - - - /** - * Overloaded setter for element's attribute. - */ - final public function __set(string $name, mixed $value): void - { - $this->attrs[$name] = $value; - } - - - /** - * Overloaded getter for element's attribute. - */ - final public function &__get(string $name): mixed - { - return $this->attrs[$name]; - } - - - /** - * Overloaded tester for element's attribute. - */ - final public function __isset(string $name): bool - { - return isset($this->attrs[$name]); - } - - - /** - * Overloaded unsetter for element's attribute. - */ - final public function __unset(string $name): void - { - unset($this->attrs[$name]); - } - - - /** - * Overloaded setter for element's attribute. - */ - final public function __call(string $m, array $args): mixed - { - $p = substr($m, 0, 3); - if ($p === 'get' || $p === 'set' || $p === 'add') { - $m = substr($m, 3); - $m[0] = $m[0] | "\x20"; - if ($p === 'get') { - return $this->attrs[$m] ?? null; - - } elseif ($p === 'add') { - $args[] = true; - } - } - - if (count($args) === 0) { // invalid - - } elseif (count($args) === 1) { // set - $this->attrs[$m] = $args[0]; - - } else { // add - $this->appendAttribute($m, $args[0], $args[1]); - } - - return $this; - } - - - /** - * Special setter for element's attribute. - */ - final public function href(string $path, array $query = []): static - { - if ($query) { - $query = http_build_query($query, '', '&'); - if ($query !== '') { - $path .= '?' . $query; - } - } - - $this->attrs['href'] = $path; - return $this; - } - - - /** - * Setter for data-* attributes. Booleans are converted to 'true' resp. 'false'. - */ - public function data(string $name, mixed $value = null): static - { - if (func_num_args() === 1) { - $this->attrs['data'] = $name; - } else { - $this->attrs["data-$name"] = is_bool($value) - ? json_encode($value) - : $value; - } - - return $this; - } - - - /** - * Sets element's HTML content. - */ - final public function setHtml(mixed $html): static - { - $this->children = [(string) $html]; - return $this; - } - - - /** - * Returns element's HTML content. - */ - final public function getHtml(): string - { - return implode('', $this->children); - } - - - /** - * Sets element's textual content. - */ - final public function setText(mixed $text): static - { - if (!$text instanceof HtmlStringable) { - $text = htmlspecialchars((string) $text, ENT_NOQUOTES, 'UTF-8'); - } - - $this->children = [(string) $text]; - return $this; - } - - - /** - * Returns element's textual content. - */ - final public function getText(): string - { - return self::htmlToText($this->getHtml()); - } - - - /** - * Adds new element's child. - */ - final public function addHtml(mixed $child): static - { - return $this->insert(null, $child); - } - - - /** - * Appends plain-text string to element content. - */ - public function addText(mixed $text): static - { - if (!$text instanceof HtmlStringable) { - $text = htmlspecialchars((string) $text, ENT_NOQUOTES, 'UTF-8'); - } - - return $this->insert(null, $text); - } - - - /** - * Creates and adds a new Html child. - */ - final public function create(string $name, array|string|null $attrs = null): static - { - $this->insert(null, $child = static::el($name, $attrs)); - return $child; - } - - - /** - * Inserts child node. - */ - public function insert(?int $index, HtmlStringable|string $child, bool $replace = false): static - { - $child = $child instanceof self ? $child : (string) $child; - if ($index === null) { // append - $this->children[] = $child; - - } else { // insert or replace - array_splice($this->children, $index, $replace ? 1 : 0, [$child]); - } - - return $this; - } - - - /** - * Inserts (replaces) child node (\ArrayAccess implementation). - * @param int|null $index position or null for appending - * @param Html|string $child Html node or raw HTML string - */ - final public function offsetSet($index, $child): void - { - $this->insert($index, $child, replace: true); - } - - - /** - * Returns child node (\ArrayAccess implementation). - * @param int $index - */ - final public function offsetGet($index): HtmlStringable|string - { - return $this->children[$index]; - } - - - /** - * Exists child node? (\ArrayAccess implementation). - * @param int $index - */ - final public function offsetExists($index): bool - { - return isset($this->children[$index]); - } - - - /** - * Removes child node (\ArrayAccess implementation). - * @param int $index - */ - public function offsetUnset($index): void - { - if (isset($this->children[$index])) { - array_splice($this->children, $index, 1); - } - } - - - /** - * Returns children count. - */ - final public function count(): int - { - return count($this->children); - } - - - /** - * Removes all children. - */ - public function removeChildren(): void - { - $this->children = []; - } - - - /** - * Iterates over elements. - * @return \ArrayIterator - */ - final public function getIterator(): \ArrayIterator - { - return new \ArrayIterator($this->children); - } - - - /** - * Returns all children. - */ - final public function getChildren(): array - { - return $this->children; - } - - - /** - * Renders element's start tag, content and end tag. - */ - final public function render(?int $indent = null): string - { - $s = $this->startTag(); - - if (!$this->isEmpty) { - // add content - if ($indent !== null) { - $indent++; - } - - foreach ($this->children as $child) { - if ($child instanceof self) { - $s .= $child->render($indent); - } else { - $s .= $child; - } - } - - // add end tag - $s .= $this->endTag(); - } - - if ($indent !== null) { - return "\n" . str_repeat("\t", $indent - 1) . $s . "\n" . str_repeat("\t", max(0, $indent - 2)); - } - - return $s; - } - - - final public function __toString(): string - { - return $this->render(); - } - - - /** - * Returns element's start tag. - */ - final public function startTag(): string - { - return $this->name - ? '<' . $this->name . $this->attributes() . '>' - : ''; - } - - - /** - * Returns element's end tag. - */ - final public function endTag(): string - { - return $this->name && !$this->isEmpty ? 'name . '>' : ''; - } - - - /** - * Returns element's attributes. - * @internal - */ - final public function attributes(): string - { - if (!is_array($this->attrs)) { - return ''; - } - - $s = ''; - $attrs = $this->attrs; - foreach ($attrs as $key => $value) { - if ($value === null || $value === false) { - continue; - - } elseif ($value === true) { - $s .= ' ' . $key; - - continue; - - } elseif (is_array($value)) { - if (strncmp($key, 'data-', 5) === 0) { - $value = Json::encode($value); - - } else { - $tmp = null; - foreach ($value as $k => $v) { - if ($v != null) { // intentionally ==, skip nulls & empty string - // composite 'style' vs. 'others' - $tmp[] = $v === true - ? $k - : (is_string($k) ? $k . ':' . $v : $v); - } - } - - if ($tmp === null) { - continue; - } - - $value = implode($key === 'style' || !strncmp($key, 'on', 2) ? ';' : ' ', $tmp); - } - } elseif (is_float($value)) { - $value = rtrim(rtrim(number_format($value, 10, '.', ''), '0'), '.'); - - } else { - $value = (string) $value; - } - - $q = str_contains($value, '"') ? "'" : '"'; - $s .= ' ' . $key . '=' . $q - . str_replace( - ['&', $q, '<'], - ['&', $q === '"' ? '"' : ''', '<'], - $value, - ) - . (str_contains($value, '`') && strpbrk($value, ' <>"\'') === false ? ' ' : '') - . $q; - } - - $s = str_replace('@', '@', $s); - return $s; - } - - - /** - * Clones all children too. - */ - public function __clone() - { - foreach ($this->children as $key => $value) { - if (is_object($value)) { - $this->children[$key] = clone $value; - } - } - } -} diff --git a/vendor/nette/utils/src/Utils/Image.php b/vendor/nette/utils/src/Utils/Image.php deleted file mode 100644 index eb728f62..00000000 --- a/vendor/nette/utils/src/Utils/Image.php +++ /dev/null @@ -1,829 +0,0 @@ - - * $image = Image::fromFile('nette.jpg'); - * $image->resize(150, 100); - * $image->sharpen(); - * $image->send(); - * - * - * @method Image affine(array $affine, ?array $clip = null) - * @method void alphaBlending(bool $enable) - * @method void antialias(bool $enable) - * @method void arc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color) - * @method int colorAllocate(int $red, int $green, int $blue) - * @method int colorAllocateAlpha(int $red, int $green, int $blue, int $alpha) - * @method int colorAt(int $x, int $y) - * @method int colorClosest(int $red, int $green, int $blue) - * @method int colorClosestAlpha(int $red, int $green, int $blue, int $alpha) - * @method int colorClosestHWB(int $red, int $green, int $blue) - * @method void colorDeallocate(int $color) - * @method int colorExact(int $red, int $green, int $blue) - * @method int colorExactAlpha(int $red, int $green, int $blue, int $alpha) - * @method void colorMatch(Image $image2) - * @method int colorResolve(int $red, int $green, int $blue) - * @method int colorResolveAlpha(int $red, int $green, int $blue, int $alpha) - * @method void colorSet(int $index, int $red, int $green, int $blue, int $alpha = 0) - * @method array colorsForIndex(int $color) - * @method int colorsTotal() - * @method int colorTransparent(?int $color = null) - * @method void convolution(array $matrix, float $div, float $offset) - * @method void copy(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH) - * @method void copyMerge(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $pct) - * @method void copyMergeGray(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $pct) - * @method void copyResampled(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH) - * @method void copyResized(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH) - * @method Image cropAuto(int $mode = IMG_CROP_DEFAULT, float $threshold = .5, ?ImageColor $color = null) - * @method void ellipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color) - * @method void fill(int $x, int $y, ImageColor $color) - * @method void filledArc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color, int $style) - * @method void filledEllipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color) - * @method void filledPolygon(array $points, ImageColor $color) - * @method void filledRectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color) - * @method void fillToBorder(int $x, int $y, ImageColor $borderColor, ImageColor $color) - * @method void filter(int $filter, ...$args) - * @method void flip(int $mode) - * @method array ftText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options = []) - * @method void gammaCorrect(float $inputgamma, float $outputgamma) - * @method array getClip() - * @method int getInterpolation() - * @method int interlace(?bool $enable = null) - * @method bool isTrueColor() - * @method void layerEffect(int $effect) - * @method void line(int $x1, int $y1, int $x2, int $y2, ImageColor $color) - * @method void openPolygon(array $points, ImageColor $color) - * @method void paletteCopy(Image $source) - * @method void paletteToTrueColor() - * @method void polygon(array $points, ImageColor $color) - * @method void rectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color) - * @method mixed resolution(?int $resolutionX = null, ?int $resolutionY = null) - * @method Image rotate(float $angle, ImageColor $backgroundColor) - * @method void saveAlpha(bool $enable) - * @method Image scale(int $newWidth, int $newHeight = -1, int $mode = IMG_BILINEAR_FIXED) - * @method void setBrush(Image $brush) - * @method void setClip(int $x1, int $y1, int $x2, int $y2) - * @method void setInterpolation(int $method = IMG_BILINEAR_FIXED) - * @method void setPixel(int $x, int $y, ImageColor $color) - * @method void setStyle(array $style) - * @method void setThickness(int $thickness) - * @method void setTile(Image $tile) - * @method void trueColorToPalette(bool $dither, int $ncolors) - * @method array ttfText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontfile, string $text, array $options = []) - * @property-read positive-int $width - * @property-read positive-int $height - * @property-read \GdImage $imageResource - */ -class Image -{ - use Nette\SmartObject; - - /** Prevent from getting resized to a bigger size than the original */ - public const ShrinkOnly = 0b0001; - - /** Resizes to a specified width and height without keeping aspect ratio */ - public const Stretch = 0b0010; - - /** Resizes to fit into a specified width and height and preserves aspect ratio */ - public const OrSmaller = 0b0000; - - /** Resizes while bounding the smaller dimension to the specified width or height and preserves aspect ratio */ - public const OrBigger = 0b0100; - - /** Resizes to the smallest possible size to completely cover specified width and height and reserves aspect ratio */ - public const Cover = 0b1000; - - /** @deprecated use Image::ShrinkOnly */ - public const SHRINK_ONLY = self::ShrinkOnly; - - /** @deprecated use Image::Stretch */ - public const STRETCH = self::Stretch; - - /** @deprecated use Image::OrSmaller */ - public const FIT = self::OrSmaller; - - /** @deprecated use Image::OrBigger */ - public const FILL = self::OrBigger; - - /** @deprecated use Image::Cover */ - public const EXACT = self::Cover; - - /** @deprecated use Image::EmptyGIF */ - public const EMPTY_GIF = self::EmptyGIF; - - /** image types */ - public const - JPEG = ImageType::JPEG, - PNG = ImageType::PNG, - GIF = ImageType::GIF, - WEBP = ImageType::WEBP, - AVIF = ImageType::AVIF, - BMP = ImageType::BMP; - - public const EmptyGIF = "GIF89a\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00!\xf9\x04\x01\x00\x00\x00\x00,\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02D\x01\x00;"; - - private const Formats = [ImageType::JPEG => 'jpeg', ImageType::PNG => 'png', ImageType::GIF => 'gif', ImageType::WEBP => 'webp', ImageType::AVIF => 'avif', ImageType::BMP => 'bmp']; - - private \GdImage $image; - - - /** - * Returns RGB color (0..255) and transparency (0..127). - * @deprecated use ImageColor::rgb() - */ - public static function rgb(int $red, int $green, int $blue, int $transparency = 0): array - { - return [ - 'red' => max(0, min(255, $red)), - 'green' => max(0, min(255, $green)), - 'blue' => max(0, min(255, $blue)), - 'alpha' => max(0, min(127, $transparency)), - ]; - } - - - /** - * Reads an image from a file and returns its type in $type. - * @throws Nette\NotSupportedException if gd extension is not loaded - * @throws UnknownImageFileException if file not found or file type is not known - */ - public static function fromFile(string $file, ?int &$type = null): static - { - if (!extension_loaded('gd')) { - throw new Nette\NotSupportedException('PHP extension GD is not loaded.'); - } - - $type = self::detectTypeFromFile($file); - if (!$type) { - throw new UnknownImageFileException(is_file($file) ? "Unknown type of file '$file'." : "File '$file' not found."); - } - - return self::invokeSafe('imagecreatefrom' . self::Formats[$type], $file, "Unable to open file '$file'.", __METHOD__); - } - - - /** - * Reads an image from a string and returns its type in $type. - * @throws Nette\NotSupportedException if gd extension is not loaded - * @throws ImageException - */ - public static function fromString(string $s, ?int &$type = null): static - { - if (!extension_loaded('gd')) { - throw new Nette\NotSupportedException('PHP extension GD is not loaded.'); - } - - $type = self::detectTypeFromString($s); - if (!$type) { - throw new UnknownImageFileException('Unknown type of image.'); - } - - return self::invokeSafe('imagecreatefromstring', $s, 'Unable to open image from string.', __METHOD__); - } - - - private static function invokeSafe(string $func, string $arg, string $message, string $callee): static - { - $errors = []; - $res = Callback::invokeSafe($func, [$arg], function (string $message) use (&$errors): void { - $errors[] = $message; - }); - - if (!$res) { - throw new ImageException($message . ' Errors: ' . implode(', ', $errors)); - } elseif ($errors) { - trigger_error($callee . '(): ' . implode(', ', $errors), E_USER_WARNING); - } - - return new static($res); - } - - - /** - * Creates a new true color image of the given dimensions. The default color is black. - * @param positive-int $width - * @param positive-int $height - * @throws Nette\NotSupportedException if gd extension is not loaded - */ - public static function fromBlank(int $width, int $height, ImageColor|array|null $color = null): static - { - if (!extension_loaded('gd')) { - throw new Nette\NotSupportedException('PHP extension GD is not loaded.'); - } - - if ($width < 1 || $height < 1) { - throw new Nette\InvalidArgumentException('Image width and height must be greater than zero.'); - } - - $image = new static(imagecreatetruecolor($width, $height)); - if ($color) { - $image->alphablending(false); - $image->filledrectangle(0, 0, $width - 1, $height - 1, $color); - $image->alphablending(true); - } - - return $image; - } - - - /** - * Returns the type of image from file. - * @return ImageType::*|null - */ - public static function detectTypeFromFile(string $file, &$width = null, &$height = null): ?int - { - [$width, $height, $type] = @getimagesize($file); // @ - files smaller than 12 bytes causes read error - return isset(self::Formats[$type]) ? $type : null; - } - - - /** - * Returns the type of image from string. - * @return ImageType::*|null - */ - public static function detectTypeFromString(string $s, &$width = null, &$height = null): ?int - { - [$width, $height, $type] = @getimagesizefromstring($s); // @ - strings smaller than 12 bytes causes read error - return isset(self::Formats[$type]) ? $type : null; - } - - - /** - * Returns the file extension for the given image type. - * @param ImageType::* $type - * @return value-of - */ - public static function typeToExtension(int $type): string - { - if (!isset(self::Formats[$type])) { - throw new Nette\InvalidArgumentException("Unsupported image type '$type'."); - } - - return self::Formats[$type]; - } - - - /** - * Returns the image type for given file extension. - * @return ImageType::* - */ - public static function extensionToType(string $extension): int - { - $extensions = array_flip(self::Formats) + ['jpg' => ImageType::JPEG]; - $extension = strtolower($extension); - if (!isset($extensions[$extension])) { - throw new Nette\InvalidArgumentException("Unsupported file extension '$extension'."); - } - - return $extensions[$extension]; - } - - - /** - * Returns the mime type for the given image type. - * @param ImageType::* $type - */ - public static function typeToMimeType(int $type): string - { - return 'image/' . self::typeToExtension($type); - } - - - /** - * @param ImageType::* $type - */ - public static function isTypeSupported(int $type): bool - { - return (bool) (imagetypes() & match ($type) { - ImageType::JPEG => IMG_JPG, - ImageType::PNG => IMG_PNG, - ImageType::GIF => IMG_GIF, - ImageType::WEBP => IMG_WEBP, - ImageType::AVIF => 256, // IMG_AVIF, - ImageType::BMP => IMG_BMP, - default => 0, - }); - } - - - /** @return ImageType[] */ - public static function getSupportedTypes(): array - { - $flag = imagetypes(); - return array_filter([ - $flag & IMG_GIF ? ImageType::GIF : null, - $flag & IMG_JPG ? ImageType::JPEG : null, - $flag & IMG_PNG ? ImageType::PNG : null, - $flag & IMG_WEBP ? ImageType::WEBP : null, - $flag & 256 ? ImageType::AVIF : null, // IMG_AVIF - $flag & IMG_BMP ? ImageType::BMP : null, - ]); - } - - - /** - * Wraps GD image. - */ - public function __construct(\GdImage $image) - { - $this->setImageResource($image); - imagesavealpha($image, true); - } - - - /** - * Returns image width. - * @return positive-int - */ - public function getWidth(): int - { - return imagesx($this->image); - } - - - /** - * Returns image height. - * @return positive-int - */ - public function getHeight(): int - { - return imagesy($this->image); - } - - - /** - * Sets image resource. - */ - protected function setImageResource(\GdImage $image): static - { - $this->image = $image; - return $this; - } - - - /** - * Returns image GD resource. - */ - public function getImageResource(): \GdImage - { - return $this->image; - } - - - /** - * Scales an image. Width and height accept pixels or percent. - * @param int-mask-of $mode - */ - public function resize(int|string|null $width, int|string|null $height, int $mode = self::OrSmaller): static - { - if ($mode & self::Cover) { - return $this->resize($width, $height, self::OrBigger)->crop('50%', '50%', $width, $height); - } - - [$newWidth, $newHeight] = static::calculateSize($this->getWidth(), $this->getHeight(), $width, $height, $mode); - - if ($newWidth !== $this->getWidth() || $newHeight !== $this->getHeight()) { // resize - $newImage = static::fromBlank($newWidth, $newHeight, ImageColor::rgb(0, 0, 0, 0))->getImageResource(); - imagecopyresampled( - $newImage, - $this->image, - 0, - 0, - 0, - 0, - $newWidth, - $newHeight, - $this->getWidth(), - $this->getHeight(), - ); - $this->image = $newImage; - } - - if ($width < 0 || $height < 0) { - imageflip($this->image, $width < 0 ? ($height < 0 ? IMG_FLIP_BOTH : IMG_FLIP_HORIZONTAL) : IMG_FLIP_VERTICAL); - } - - return $this; - } - - - /** - * Calculates dimensions of resized image. Width and height accept pixels or percent. - * @param int-mask-of $mode - */ - public static function calculateSize( - int $srcWidth, - int $srcHeight, - $newWidth, - $newHeight, - int $mode = self::OrSmaller, - ): array - { - if ($newWidth === null) { - } elseif (self::isPercent($newWidth)) { - $newWidth = (int) round($srcWidth / 100 * abs($newWidth)); - $percents = true; - } else { - $newWidth = abs($newWidth); - } - - if ($newHeight === null) { - } elseif (self::isPercent($newHeight)) { - $newHeight = (int) round($srcHeight / 100 * abs($newHeight)); - $mode |= empty($percents) ? 0 : self::Stretch; - } else { - $newHeight = abs($newHeight); - } - - if ($mode & self::Stretch) { // non-proportional - if (!$newWidth || !$newHeight) { - throw new Nette\InvalidArgumentException('For stretching must be both width and height specified.'); - } - - if ($mode & self::ShrinkOnly) { - $newWidth = min($srcWidth, $newWidth); - $newHeight = min($srcHeight, $newHeight); - } - } else { // proportional - if (!$newWidth && !$newHeight) { - throw new Nette\InvalidArgumentException('At least width or height must be specified.'); - } - - $scale = []; - if ($newWidth > 0) { // fit width - $scale[] = $newWidth / $srcWidth; - } - - if ($newHeight > 0) { // fit height - $scale[] = $newHeight / $srcHeight; - } - - if ($mode & self::OrBigger) { - $scale = [max($scale)]; - } - - if ($mode & self::ShrinkOnly) { - $scale[] = 1; - } - - $scale = min($scale); - $newWidth = (int) round($srcWidth * $scale); - $newHeight = (int) round($srcHeight * $scale); - } - - return [max($newWidth, 1), max($newHeight, 1)]; - } - - - /** - * Crops image. Arguments accepts pixels or percent. - */ - public function crop(int|string $left, int|string $top, int|string $width, int|string $height): static - { - [$r['x'], $r['y'], $r['width'], $r['height']] - = static::calculateCutout($this->getWidth(), $this->getHeight(), $left, $top, $width, $height); - if (gd_info()['GD Version'] === 'bundled (2.1.0 compatible)') { - $this->image = imagecrop($this->image, $r); - imagesavealpha($this->image, true); - } else { - $newImage = static::fromBlank($r['width'], $r['height'], ImageColor::rgb(0, 0, 0, 0))->getImageResource(); - imagecopy($newImage, $this->image, 0, 0, $r['x'], $r['y'], $r['width'], $r['height']); - $this->image = $newImage; - } - - return $this; - } - - - /** - * Calculates dimensions of cutout in image. Arguments accepts pixels or percent. - */ - public static function calculateCutout( - int $srcWidth, - int $srcHeight, - int|string $left, - int|string $top, - int|string $newWidth, - int|string $newHeight, - ): array - { - if (self::isPercent($newWidth)) { - $newWidth = (int) round($srcWidth / 100 * $newWidth); - } - - if (self::isPercent($newHeight)) { - $newHeight = (int) round($srcHeight / 100 * $newHeight); - } - - if (self::isPercent($left)) { - $left = (int) round(($srcWidth - $newWidth) / 100 * $left); - } - - if (self::isPercent($top)) { - $top = (int) round(($srcHeight - $newHeight) / 100 * $top); - } - - if ($left < 0) { - $newWidth += $left; - $left = 0; - } - - if ($top < 0) { - $newHeight += $top; - $top = 0; - } - - $newWidth = min($newWidth, $srcWidth - $left); - $newHeight = min($newHeight, $srcHeight - $top); - return [$left, $top, $newWidth, $newHeight]; - } - - - /** - * Sharpens image a little bit. - */ - public function sharpen(): static - { - imageconvolution($this->image, [ // my magic numbers ;) - [-1, -1, -1], - [-1, 24, -1], - [-1, -1, -1], - ], 16, 0); - return $this; - } - - - /** - * Puts another image into this image. Left and top accepts pixels or percent. - * @param int<0, 100> $opacity 0..100 - */ - public function place(self $image, int|string $left = 0, int|string $top = 0, int $opacity = 100): static - { - $opacity = max(0, min(100, $opacity)); - if ($opacity === 0) { - return $this; - } - - $width = $image->getWidth(); - $height = $image->getHeight(); - - if (self::isPercent($left)) { - $left = (int) round(($this->getWidth() - $width) / 100 * $left); - } - - if (self::isPercent($top)) { - $top = (int) round(($this->getHeight() - $height) / 100 * $top); - } - - $output = $input = $image->image; - if ($opacity < 100) { - $tbl = []; - for ($i = 0; $i < 128; $i++) { - $tbl[$i] = round(127 - (127 - $i) * $opacity / 100); - } - - $output = imagecreatetruecolor($width, $height); - imagealphablending($output, false); - if (!$image->isTrueColor()) { - $input = $output; - imagefilledrectangle($output, 0, 0, $width, $height, imagecolorallocatealpha($output, 0, 0, 0, 127)); - imagecopy($output, $image->image, 0, 0, 0, 0, $width, $height); - } - - for ($x = 0; $x < $width; $x++) { - for ($y = 0; $y < $height; $y++) { - $c = \imagecolorat($input, $x, $y); - $c = ($c & 0xFFFFFF) + ($tbl[$c >> 24] << 24); - \imagesetpixel($output, $x, $y, $c); - } - } - - imagealphablending($output, true); - } - - imagecopy( - $this->image, - $output, - $left, - $top, - 0, - 0, - $width, - $height, - ); - return $this; - } - - - /** - * Calculates the bounding box for a TrueType text. Returns keys left, top, width and height. - */ - public static function calculateTextBox( - string $text, - string $fontFile, - float $size, - float $angle = 0, - array $options = [], - ): array - { - $box = imagettfbbox($size, $angle, $fontFile, $text, $options); - return [ - 'left' => $minX = min([$box[0], $box[2], $box[4], $box[6]]), - 'top' => $minY = min([$box[1], $box[3], $box[5], $box[7]]), - 'width' => max([$box[0], $box[2], $box[4], $box[6]]) - $minX + 1, - 'height' => max([$box[1], $box[3], $box[5], $box[7]]) - $minY + 1, - ]; - } - - - /** - * Draw a rectangle. - */ - public function rectangleWH(int $x, int $y, int $width, int $height, ImageColor $color): void - { - if ($width !== 0 && $height !== 0) { - $this->rectangle($x, $y, $x + $width + ($width > 0 ? -1 : 1), $y + $height + ($height > 0 ? -1 : 1), $color); - } - } - - - /** - * Draw a filled rectangle. - */ - public function filledRectangleWH(int $x, int $y, int $width, int $height, ImageColor $color): void - { - if ($width !== 0 && $height !== 0) { - $this->filledRectangle($x, $y, $x + $width + ($width > 0 ? -1 : 1), $y + $height + ($height > 0 ? -1 : 1), $color); - } - } - - - /** - * Saves image to the file. Quality is in the range 0..100 for JPEG (default 85), WEBP (default 80) and AVIF (default 30) and 0..9 for PNG (default 9). - * @param ImageType::*|null $type - * @throws ImageException - */ - public function save(string $file, ?int $quality = null, ?int $type = null): void - { - $type ??= self::extensionToType(pathinfo($file, PATHINFO_EXTENSION)); - $this->output($type, $quality, $file); - } - - - /** - * Outputs image to string. Quality is in the range 0..100 for JPEG (default 85), WEBP (default 80) and AVIF (default 30) and 0..9 for PNG (default 9). - * @param ImageType::* $type - */ - public function toString(int $type = ImageType::JPEG, ?int $quality = null): string - { - return Helpers::capture(function () use ($type, $quality): void { - $this->output($type, $quality); - }); - } - - - /** - * Outputs image to string. - */ - public function __toString(): string - { - return $this->toString(); - } - - - /** - * Outputs image to browser. Quality is in the range 0..100 for JPEG (default 85), WEBP (default 80) and AVIF (default 30) and 0..9 for PNG (default 9). - * @param ImageType::* $type - * @throws ImageException - */ - public function send(int $type = ImageType::JPEG, ?int $quality = null): void - { - header('Content-Type: ' . self::typeToMimeType($type)); - $this->output($type, $quality); - } - - - /** - * Outputs image to browser or file. - * @param ImageType::* $type - * @throws ImageException - */ - private function output(int $type, ?int $quality, ?string $file = null): void - { - switch ($type) { - case ImageType::JPEG: - $quality = $quality === null ? 85 : max(0, min(100, $quality)); - $success = @imagejpeg($this->image, $file, $quality); // @ is escalated to exception - break; - - case ImageType::PNG: - $quality = $quality === null ? 9 : max(0, min(9, $quality)); - $success = @imagepng($this->image, $file, $quality); // @ is escalated to exception - break; - - case ImageType::GIF: - $success = @imagegif($this->image, $file); // @ is escalated to exception - break; - - case ImageType::WEBP: - $quality = $quality === null ? 80 : max(0, min(100, $quality)); - $success = @imagewebp($this->image, $file, $quality); // @ is escalated to exception - break; - - case ImageType::AVIF: - $quality = $quality === null ? 30 : max(0, min(100, $quality)); - $success = @imageavif($this->image, $file, $quality); // @ is escalated to exception - break; - - case ImageType::BMP: - $success = @imagebmp($this->image, $file); // @ is escalated to exception - break; - - default: - throw new Nette\InvalidArgumentException("Unsupported image type '$type'."); - } - - if (!$success) { - throw new ImageException(Helpers::getLastError() ?: 'Unknown error'); - } - } - - - /** - * Call to undefined method. - * @throws Nette\MemberAccessException - */ - public function __call(string $name, array $args): mixed - { - $function = 'image' . $name; - if (!function_exists($function)) { - ObjectHelpers::strictCall(static::class, $name); - } - - foreach ($args as $key => $value) { - if ($value instanceof self) { - $args[$key] = $value->getImageResource(); - - } elseif ($value instanceof ImageColor || (is_array($value) && isset($value['red']))) { - $args[$key] = $this->resolveColor($value); - } - } - - $res = $function($this->image, ...$args); - return $res instanceof \GdImage - ? $this->setImageResource($res) - : $res; - } - - - public function __clone() - { - ob_start(function () {}); - imagepng($this->image, null, 0); - $this->setImageResource(imagecreatefromstring(ob_get_clean())); - } - - - private static function isPercent(int|string &$num): bool - { - if (is_string($num) && str_ends_with($num, '%')) { - $num = (float) substr($num, 0, -1); - return true; - } elseif (is_int($num) || $num === (string) (int) $num) { - $num = (int) $num; - return false; - } - - throw new Nette\InvalidArgumentException("Expected dimension in int|string, '$num' given."); - } - - - /** - * Prevents serialization. - */ - public function __sleep(): array - { - throw new Nette\NotSupportedException('You cannot serialize or unserialize ' . self::class . ' instances.'); - } - - - public function resolveColor(ImageColor|array $color): int - { - $color = $color instanceof ImageColor ? $color->toRGBA() : array_values($color); - return imagecolorallocatealpha($this->image, ...$color) ?: imagecolorresolvealpha($this->image, ...$color); - } -} diff --git a/vendor/nette/utils/src/Utils/ImageColor.php b/vendor/nette/utils/src/Utils/ImageColor.php deleted file mode 100644 index 013adbd6..00000000 --- a/vendor/nette/utils/src/Utils/ImageColor.php +++ /dev/null @@ -1,75 +0,0 @@ -red = max(0, min(255, $red)); - $this->green = max(0, min(255, $green)); - $this->blue = max(0, min(255, $blue)); - $this->opacity = max(0, min(1, $opacity)); - } - - - public function toRGBA(): array - { - return [ - max(0, min(255, $this->red)), - max(0, min(255, $this->green)), - max(0, min(255, $this->blue)), - max(0, min(127, (int) round(127 - $this->opacity * 127))), - ]; - } -} diff --git a/vendor/nette/utils/src/Utils/ImageType.php b/vendor/nette/utils/src/Utils/ImageType.php deleted file mode 100644 index 3092c8f0..00000000 --- a/vendor/nette/utils/src/Utils/ImageType.php +++ /dev/null @@ -1,25 +0,0 @@ - $v) { - if ($k === $key) { - return true; - } - } - return false; - } - - - /** - * Returns the first item (matching the specified predicate if given). If there is no such item, it returns result of invoking $else or null. - * The $predicate has the signature `function (mixed $value, mixed $key, iterable $iterable): bool`. - * @template T - * @param iterable $iterable - * @return ?T - */ - public static function first(iterable $iterable, ?callable $predicate = null, ?callable $else = null): mixed - { - foreach ($iterable as $k => $v) { - if (!$predicate || $predicate($v, $k, $iterable)) { - return $v; - } - } - return $else ? $else() : null; - } - - - /** - * Returns the key of first item (matching the specified predicate if given). If there is no such item, it returns result of invoking $else or null. - * The $predicate has the signature `function (mixed $value, mixed $key, iterable $iterable): bool`. - * @template T - * @param iterable $iterable - * @return ?T - */ - public static function firstKey(iterable $iterable, ?callable $predicate = null, ?callable $else = null): mixed - { - foreach ($iterable as $k => $v) { - if (!$predicate || $predicate($v, $k, $iterable)) { - return $k; - } - } - return $else ? $else() : null; - } - - - /** - * Tests whether at least one element in the iterator passes the test implemented by the - * provided callback with signature `function (mixed $value, mixed $key, iterable $iterable): bool`. - * @template K - * @template V - * @param iterable $iterable - * @param callable(V, K, iterable): bool $predicate - */ - public static function some(iterable $iterable, callable $predicate): bool - { - foreach ($iterable as $k => $v) { - if ($predicate($v, $k, $iterable)) { - return true; - } - } - return false; - } - - - /** - * Tests whether all elements in the iterator pass the test implemented by the provided function, - * which has the signature `function (mixed $value, mixed $key, iterable $iterable): bool`. - * @template K - * @template V - * @param iterable $iterable - * @param callable(V, K, iterable): bool $predicate - */ - public static function every(iterable $iterable, callable $predicate): bool - { - foreach ($iterable as $k => $v) { - if (!$predicate($v, $k, $iterable)) { - return false; - } - } - return true; - } - - - /** - * Iterator that filters elements according to a given $predicate. Maintains original keys. - * The callback has the signature `function (mixed $value, mixed $key, iterable $iterable): bool`. - * @template K - * @template V - * @param iterable $iterable - * @param callable(V, K, iterable): bool $predicate - * @return \Generator - */ - public static function filter(iterable $iterable, callable $predicate): \Generator - { - foreach ($iterable as $k => $v) { - if ($predicate($v, $k, $iterable)) { - yield $k => $v; - } - } - } - - - /** - * Iterator that transforms values by calling $transformer. Maintains original keys. - * The callback has the signature `function (mixed $value, mixed $key, iterable $iterable): bool`. - * @template K - * @template V - * @template R - * @param iterable $iterable - * @param callable(V, K, iterable): R $transformer - * @return \Generator - */ - public static function map(iterable $iterable, callable $transformer): \Generator - { - foreach ($iterable as $k => $v) { - yield $k => $transformer($v, $k, $iterable); - } - } -} diff --git a/vendor/nette/utils/src/Utils/Json.php b/vendor/nette/utils/src/Utils/Json.php deleted file mode 100644 index b87917b2..00000000 --- a/vendor/nette/utils/src/Utils/Json.php +++ /dev/null @@ -1,84 +0,0 @@ -getProperties(\ReflectionProperty::IS_PUBLIC), fn($p) => !$p->isStatic()), - self::parseFullDoc($rc, '~^[ \t*]*@property(?:-read)?[ \t]+(?:\S+[ \t]+)??\$(\w+)~m'), - ), $name); - throw new MemberAccessException("Cannot read an undeclared property $class::\$$name" . ($hint ? ", did you mean \$$hint?" : '.')); - } - - - /** - * @return never - * @throws MemberAccessException - */ - public static function strictSet(string $class, string $name): void - { - $rc = new \ReflectionClass($class); - $hint = self::getSuggestion(array_merge( - array_filter($rc->getProperties(\ReflectionProperty::IS_PUBLIC), fn($p) => !$p->isStatic()), - self::parseFullDoc($rc, '~^[ \t*]*@property(?:-write)?[ \t]+(?:\S+[ \t]+)??\$(\w+)~m'), - ), $name); - throw new MemberAccessException("Cannot write to an undeclared property $class::\$$name" . ($hint ? ", did you mean \$$hint?" : '.')); - } - - - /** - * @return never - * @throws MemberAccessException - */ - public static function strictCall(string $class, string $method, array $additionalMethods = []): void - { - $trace = debug_backtrace(0, 3); // suppose this method is called from __call() - $context = ($trace[1]['function'] ?? null) === '__call' - ? ($trace[2]['class'] ?? null) - : null; - - if ($context && is_a($class, $context, true) && method_exists($context, $method)) { // called parent::$method() - $class = get_parent_class($context); - } - - if (method_exists($class, $method)) { // insufficient visibility - $rm = new \ReflectionMethod($class, $method); - $visibility = $rm->isPrivate() - ? 'private ' - : ($rm->isProtected() ? 'protected ' : ''); - throw new MemberAccessException("Call to {$visibility}method $class::$method() from " . ($context ? "scope $context." : 'global scope.')); - - } else { - $hint = self::getSuggestion(array_merge( - get_class_methods($class), - self::parseFullDoc(new \ReflectionClass($class), '~^[ \t*]*@method[ \t]+(?:static[ \t]+)?(?:\S+[ \t]+)??(\w+)\(~m'), - $additionalMethods, - ), $method); - throw new MemberAccessException("Call to undefined method $class::$method()" . ($hint ? ", did you mean $hint()?" : '.')); - } - } - - - /** - * @return never - * @throws MemberAccessException - */ - public static function strictStaticCall(string $class, string $method): void - { - $trace = debug_backtrace(0, 3); // suppose this method is called from __callStatic() - $context = ($trace[1]['function'] ?? null) === '__callStatic' - ? ($trace[2]['class'] ?? null) - : null; - - if ($context && is_a($class, $context, true) && method_exists($context, $method)) { // called parent::$method() - $class = get_parent_class($context); - } - - if (method_exists($class, $method)) { // insufficient visibility - $rm = new \ReflectionMethod($class, $method); - $visibility = $rm->isPrivate() - ? 'private ' - : ($rm->isProtected() ? 'protected ' : ''); - throw new MemberAccessException("Call to {$visibility}method $class::$method() from " . ($context ? "scope $context." : 'global scope.')); - - } else { - $hint = self::getSuggestion( - array_filter((new \ReflectionClass($class))->getMethods(\ReflectionMethod::IS_PUBLIC), fn($m) => $m->isStatic()), - $method, - ); - throw new MemberAccessException("Call to undefined static method $class::$method()" . ($hint ? ", did you mean $hint()?" : '.')); - } - } - - - /** - * Returns array of magic properties defined by annotation @property. - * @return array of [name => bit mask] - * @internal - */ - public static function getMagicProperties(string $class): array - { - static $cache; - $props = &$cache[$class]; - if ($props !== null) { - return $props; - } - - $rc = new \ReflectionClass($class); - preg_match_all( - '~^ [ \t*]* @property(|-read|-write|-deprecated) [ \t]+ [^\s$]+ [ \t]+ \$ (\w+) ()~mx', - (string) $rc->getDocComment(), - $matches, - PREG_SET_ORDER, - ); - - $props = []; - foreach ($matches as [, $type, $name]) { - $uname = ucfirst($name); - $write = $type !== '-read' - && $rc->hasMethod($nm = 'set' . $uname) - && ($rm = $rc->getMethod($nm))->name === $nm && !$rm->isPrivate() && !$rm->isStatic(); - $read = $type !== '-write' - && ($rc->hasMethod($nm = 'get' . $uname) || $rc->hasMethod($nm = 'is' . $uname)) - && ($rm = $rc->getMethod($nm))->name === $nm && !$rm->isPrivate() && !$rm->isStatic(); - - if ($read || $write) { - $props[$name] = $read << 0 | ($nm[0] === 'g') << 1 | $rm->returnsReference() << 2 | $write << 3 | ($type === '-deprecated') << 4; - } - } - - foreach ($rc->getTraits() as $trait) { - $props += self::getMagicProperties($trait->name); - } - - if ($parent = get_parent_class($class)) { - $props += self::getMagicProperties($parent); - } - - return $props; - } - - - /** - * Finds the best suggestion (for 8-bit encoding). - * @param (\ReflectionFunctionAbstract|\ReflectionParameter|\ReflectionClass|\ReflectionProperty|string)[] $possibilities - * @internal - */ - public static function getSuggestion(array $possibilities, string $value): ?string - { - $norm = preg_replace($re = '#^(get|set|has|is|add)(?=[A-Z])#', '+', $value); - $best = null; - $min = (strlen($value) / 4 + 1) * 10 + .1; - foreach (array_unique($possibilities, SORT_REGULAR) as $item) { - $item = $item instanceof \Reflector ? $item->name : $item; - if ($item !== $value && ( - ($len = levenshtein($item, $value, 10, 11, 10)) < $min - || ($len = levenshtein(preg_replace($re, '*', $item), $norm, 10, 11, 10)) < $min - )) { - $min = $len; - $best = $item; - } - } - - return $best; - } - - - private static function parseFullDoc(\ReflectionClass $rc, string $pattern): array - { - do { - $doc[] = $rc->getDocComment(); - $traits = $rc->getTraits(); - while ($trait = array_pop($traits)) { - $doc[] = $trait->getDocComment(); - $traits += $trait->getTraits(); - } - } while ($rc = $rc->getParentClass()); - - return preg_match_all($pattern, implode('', $doc), $m) ? $m[1] : []; - } - - - /** - * Checks if the public non-static property exists. - * Returns 'event' if the property exists and has event like name - * @internal - */ - public static function hasProperty(string $class, string $name): bool|string - { - static $cache; - $prop = &$cache[$class][$name]; - if ($prop === null) { - $prop = false; - try { - $rp = new \ReflectionProperty($class, $name); - if ($rp->isPublic() && !$rp->isStatic()) { - $prop = $name >= 'onA' && $name < 'on_' ? 'event' : true; - } - } catch (\ReflectionException $e) { - } - } - - return $prop; - } -} diff --git a/vendor/nette/utils/src/Utils/Paginator.php b/vendor/nette/utils/src/Utils/Paginator.php deleted file mode 100644 index aa4812c0..00000000 --- a/vendor/nette/utils/src/Utils/Paginator.php +++ /dev/null @@ -1,245 +0,0 @@ - $firstItemOnPage - * @property-read int<0,max> $lastItemOnPage - * @property int $base - * @property-read bool $first - * @property-read bool $last - * @property-read int<0,max>|null $pageCount - * @property positive-int $itemsPerPage - * @property int<0,max>|null $itemCount - * @property-read int<0,max> $offset - * @property-read int<0,max>|null $countdownOffset - * @property-read int<0,max> $length - */ -class Paginator -{ - use Nette\SmartObject; - - private int $base = 1; - - /** @var positive-int */ - private int $itemsPerPage = 1; - - private int $page = 1; - - /** @var int<0, max>|null */ - private ?int $itemCount = null; - - - /** - * Sets current page number. - */ - public function setPage(int $page): static - { - $this->page = $page; - return $this; - } - - - /** - * Returns current page number. - */ - public function getPage(): int - { - return $this->base + $this->getPageIndex(); - } - - - /** - * Returns first page number. - */ - public function getFirstPage(): int - { - return $this->base; - } - - - /** - * Returns last page number. - */ - public function getLastPage(): ?int - { - return $this->itemCount === null - ? null - : $this->base + max(0, $this->getPageCount() - 1); - } - - - /** - * Returns the sequence number of the first element on the page - * @return int<0, max> - */ - public function getFirstItemOnPage(): int - { - return $this->itemCount !== 0 - ? $this->offset + 1 - : 0; - } - - - /** - * Returns the sequence number of the last element on the page - * @return int<0, max> - */ - public function getLastItemOnPage(): int - { - return $this->offset + $this->length; - } - - - /** - * Sets first page (base) number. - */ - public function setBase(int $base): static - { - $this->base = $base; - return $this; - } - - - /** - * Returns first page (base) number. - */ - public function getBase(): int - { - return $this->base; - } - - - /** - * Returns zero-based page number. - * @return int<0, max> - */ - protected function getPageIndex(): int - { - $index = max(0, $this->page - $this->base); - return $this->itemCount === null - ? $index - : min($index, max(0, $this->getPageCount() - 1)); - } - - - /** - * Is the current page the first one? - */ - public function isFirst(): bool - { - return $this->getPageIndex() === 0; - } - - - /** - * Is the current page the last one? - */ - public function isLast(): bool - { - return $this->itemCount === null - ? false - : $this->getPageIndex() >= $this->getPageCount() - 1; - } - - - /** - * Returns the total number of pages. - * @return int<0, max>|null - */ - public function getPageCount(): ?int - { - return $this->itemCount === null - ? null - : (int) ceil($this->itemCount / $this->itemsPerPage); - } - - - /** - * Sets the number of items to display on a single page. - */ - public function setItemsPerPage(int $itemsPerPage): static - { - $this->itemsPerPage = max(1, $itemsPerPage); - return $this; - } - - - /** - * Returns the number of items to display on a single page. - * @return positive-int - */ - public function getItemsPerPage(): int - { - return $this->itemsPerPage; - } - - - /** - * Sets the total number of items. - */ - public function setItemCount(?int $itemCount = null): static - { - $this->itemCount = $itemCount === null ? null : max(0, $itemCount); - return $this; - } - - - /** - * Returns the total number of items. - * @return int<0, max>|null - */ - public function getItemCount(): ?int - { - return $this->itemCount; - } - - - /** - * Returns the absolute index of the first item on current page. - * @return int<0, max> - */ - public function getOffset(): int - { - return $this->getPageIndex() * $this->itemsPerPage; - } - - - /** - * Returns the absolute index of the first item on current page in countdown paging. - * @return int<0, max>|null - */ - public function getCountdownOffset(): ?int - { - return $this->itemCount === null - ? null - : max(0, $this->itemCount - ($this->getPageIndex() + 1) * $this->itemsPerPage); - } - - - /** - * Returns the number of items on current page. - * @return int<0, max> - */ - public function getLength(): int - { - return $this->itemCount === null - ? $this->itemsPerPage - : min($this->itemsPerPage, $this->itemCount - $this->getPageIndex() * $this->itemsPerPage); - } -} diff --git a/vendor/nette/utils/src/Utils/Random.php b/vendor/nette/utils/src/Utils/Random.php deleted file mode 100644 index b14fbd55..00000000 --- a/vendor/nette/utils/src/Utils/Random.php +++ /dev/null @@ -1,52 +0,0 @@ - implode('', range($m[0][0], $m[0][2])), - $charlist, - ); - $charlist = count_chars($charlist, mode: 3); - $chLen = strlen($charlist); - - if ($length < 1) { - throw new Nette\InvalidArgumentException('Length must be greater than zero.'); - } elseif ($chLen < 2) { - throw new Nette\InvalidArgumentException('Character list must contain at least two chars.'); - } elseif (PHP_VERSION_ID >= 80300) { - return (new Randomizer)->getBytesFromString($charlist, $length); - } - - $res = ''; - for ($i = 0; $i < $length; $i++) { - $res .= $charlist[random_int(0, $chLen - 1)]; - } - - return $res; - } -} diff --git a/vendor/nette/utils/src/Utils/Reflection.php b/vendor/nette/utils/src/Utils/Reflection.php deleted file mode 100644 index 5a4f2ab7..00000000 --- a/vendor/nette/utils/src/Utils/Reflection.php +++ /dev/null @@ -1,320 +0,0 @@ -isDefaultValueConstant()) { - $const = $orig = $param->getDefaultValueConstantName(); - $pair = explode('::', $const); - if (isset($pair[1])) { - $pair[0] = Type::resolve($pair[0], $param); - try { - $rcc = new \ReflectionClassConstant($pair[0], $pair[1]); - } catch (\ReflectionException $e) { - $name = self::toString($param); - throw new \ReflectionException("Unable to resolve constant $orig used as default value of $name.", 0, $e); - } - - return $rcc->getValue(); - - } elseif (!defined($const)) { - $const = substr((string) strrchr($const, '\\'), 1); - if (!defined($const)) { - $name = self::toString($param); - throw new \ReflectionException("Unable to resolve constant $orig used as default value of $name."); - } - } - - return constant($const); - } - - return $param->getDefaultValue(); - } - - - /** - * Returns a reflection of a class or trait that contains a declaration of given property. Property can also be declared in the trait. - */ - public static function getPropertyDeclaringClass(\ReflectionProperty $prop): \ReflectionClass - { - foreach ($prop->getDeclaringClass()->getTraits() as $trait) { - if ($trait->hasProperty($prop->name) - // doc-comment guessing as workaround for insufficient PHP reflection - && $trait->getProperty($prop->name)->getDocComment() === $prop->getDocComment() - ) { - return self::getPropertyDeclaringClass($trait->getProperty($prop->name)); - } - } - - return $prop->getDeclaringClass(); - } - - - /** - * Returns a reflection of a method that contains a declaration of $method. - * Usually, each method is its own declaration, but the body of the method can also be in the trait and under a different name. - */ - public static function getMethodDeclaringMethod(\ReflectionMethod $method): \ReflectionMethod - { - // file & line guessing as workaround for insufficient PHP reflection - $decl = $method->getDeclaringClass(); - if ($decl->getFileName() === $method->getFileName() - && $decl->getStartLine() <= $method->getStartLine() - && $decl->getEndLine() >= $method->getEndLine() - ) { - return $method; - } - - $hash = [$method->getFileName(), $method->getStartLine(), $method->getEndLine()]; - if (($alias = $decl->getTraitAliases()[$method->name] ?? null) - && ($m = new \ReflectionMethod($alias)) - && $hash === [$m->getFileName(), $m->getStartLine(), $m->getEndLine()] - ) { - return self::getMethodDeclaringMethod($m); - } - - foreach ($decl->getTraits() as $trait) { - if ($trait->hasMethod($method->name) - && ($m = $trait->getMethod($method->name)) - && $hash === [$m->getFileName(), $m->getStartLine(), $m->getEndLine()] - ) { - return self::getMethodDeclaringMethod($m); - } - } - - return $method; - } - - - /** - * Finds out if reflection has access to PHPdoc comments. Comments may not be available due to the opcode cache. - */ - public static function areCommentsAvailable(): bool - { - static $res; - return $res ?? $res = (bool) (new \ReflectionMethod(__METHOD__))->getDocComment(); - } - - - public static function toString(\Reflector $ref): string - { - if ($ref instanceof \ReflectionClass) { - return $ref->name; - } elseif ($ref instanceof \ReflectionMethod) { - return $ref->getDeclaringClass()->name . '::' . $ref->name . '()'; - } elseif ($ref instanceof \ReflectionFunction) { - return $ref->name . '()'; - } elseif ($ref instanceof \ReflectionProperty) { - return self::getPropertyDeclaringClass($ref)->name . '::$' . $ref->name; - } elseif ($ref instanceof \ReflectionParameter) { - return '$' . $ref->name . ' in ' . self::toString($ref->getDeclaringFunction()); - } else { - throw new Nette\InvalidArgumentException; - } - } - - - /** - * Expands the name of the class to full name in the given context of given class. - * Thus, it returns how the PHP parser would understand $name if it were written in the body of the class $context. - * @throws Nette\InvalidArgumentException - */ - public static function expandClassName(string $name, \ReflectionClass $context): string - { - $lower = strtolower($name); - if (empty($name)) { - throw new Nette\InvalidArgumentException('Class name must not be empty.'); - - } elseif (Validators::isBuiltinType($lower)) { - return $lower; - - } elseif ($lower === 'self' || $lower === 'static') { - return $context->name; - - } elseif ($lower === 'parent') { - return $context->getParentClass() - ? $context->getParentClass()->name - : 'parent'; - - } elseif ($name[0] === '\\') { // fully qualified name - return ltrim($name, '\\'); - } - - $uses = self::getUseStatements($context); - $parts = explode('\\', $name, 2); - if (isset($uses[$parts[0]])) { - $parts[0] = $uses[$parts[0]]; - return implode('\\', $parts); - - } elseif ($context->inNamespace()) { - return $context->getNamespaceName() . '\\' . $name; - - } else { - return $name; - } - } - - - /** @return array of [alias => class] */ - public static function getUseStatements(\ReflectionClass $class): array - { - if ($class->isAnonymous()) { - throw new Nette\NotImplementedException('Anonymous classes are not supported.'); - } - - static $cache = []; - if (!isset($cache[$name = $class->name])) { - if ($class->isInternal()) { - $cache[$name] = []; - } else { - $code = file_get_contents($class->getFileName()); - $cache = self::parseUseStatements($code, $name) + $cache; - } - } - - return $cache[$name]; - } - - - /** - * Parses PHP code to [class => [alias => class, ...]] - */ - private static function parseUseStatements(string $code, ?string $forClass = null): array - { - try { - $tokens = \PhpToken::tokenize($code, TOKEN_PARSE); - } catch (\ParseError $e) { - trigger_error($e->getMessage(), E_USER_NOTICE); - $tokens = []; - } - - $namespace = $class = null; - $classLevel = $level = 0; - $res = $uses = []; - - $nameTokens = [T_STRING, T_NS_SEPARATOR, T_NAME_QUALIFIED, T_NAME_FULLY_QUALIFIED]; - - while ($token = current($tokens)) { - next($tokens); - switch ($token->id) { - case T_NAMESPACE: - $namespace = ltrim(self::fetch($tokens, $nameTokens) . '\\', '\\'); - $uses = []; - break; - - case T_CLASS: - case T_INTERFACE: - case T_TRAIT: - case PHP_VERSION_ID < 80100 - ? T_CLASS - : T_ENUM: - if ($name = self::fetch($tokens, T_STRING)) { - $class = $namespace . $name; - $classLevel = $level + 1; - $res[$class] = $uses; - if ($class === $forClass) { - return $res; - } - } - - break; - - case T_USE: - while (!$class && ($name = self::fetch($tokens, $nameTokens))) { - $name = ltrim($name, '\\'); - if (self::fetch($tokens, '{')) { - while ($suffix = self::fetch($tokens, $nameTokens)) { - if (self::fetch($tokens, T_AS)) { - $uses[self::fetch($tokens, T_STRING)] = $name . $suffix; - } else { - $tmp = explode('\\', $suffix); - $uses[end($tmp)] = $name . $suffix; - } - - if (!self::fetch($tokens, ',')) { - break; - } - } - } elseif (self::fetch($tokens, T_AS)) { - $uses[self::fetch($tokens, T_STRING)] = $name; - - } else { - $tmp = explode('\\', $name); - $uses[end($tmp)] = $name; - } - - if (!self::fetch($tokens, ',')) { - break; - } - } - - break; - - case T_CURLY_OPEN: - case T_DOLLAR_OPEN_CURLY_BRACES: - case ord('{'): - $level++; - break; - - case ord('}'): - if ($level === $classLevel) { - $class = $classLevel = 0; - } - - $level--; - } - } - - return $res; - } - - - private static function fetch(array &$tokens, string|int|array $take): ?string - { - $res = null; - while ($token = current($tokens)) { - if ($token->is($take)) { - $res .= $token->text; - } elseif (!$token->is([T_DOC_COMMENT, T_WHITESPACE, T_COMMENT])) { - break; - } - - next($tokens); - } - - return $res; - } -} diff --git a/vendor/nette/utils/src/Utils/ReflectionMethod.php b/vendor/nette/utils/src/Utils/ReflectionMethod.php deleted file mode 100644 index b003fcbd..00000000 --- a/vendor/nette/utils/src/Utils/ReflectionMethod.php +++ /dev/null @@ -1,36 +0,0 @@ -originalClass = new \ReflectionClass($objectOrMethod); - } - - - public function getOriginalClass(): \ReflectionClass - { - return $this->originalClass; - } -} diff --git a/vendor/nette/utils/src/Utils/Strings.php b/vendor/nette/utils/src/Utils/Strings.php deleted file mode 100644 index 1615b3e8..00000000 --- a/vendor/nette/utils/src/Utils/Strings.php +++ /dev/null @@ -1,708 +0,0 @@ -= 0xD800 && $code <= 0xDFFF) || $code > 0x10FFFF) { - throw new Nette\InvalidArgumentException('Code point must be in range 0x0 to 0xD7FF or 0xE000 to 0x10FFFF.'); - } elseif (!extension_loaded('iconv')) { - throw new Nette\NotSupportedException(__METHOD__ . '() requires ICONV extension that is not loaded.'); - } - - return iconv('UTF-32BE', 'UTF-8//IGNORE', pack('N', $code)); - } - - - /** - * Returns a code point of specific character in UTF-8 (number in range 0x0000..D7FF or 0xE000..10FFFF). - */ - public static function ord(string $c): int - { - if (!extension_loaded('iconv')) { - throw new Nette\NotSupportedException(__METHOD__ . '() requires ICONV extension that is not loaded.'); - } - - $tmp = iconv('UTF-8', 'UTF-32BE//IGNORE', $c); - if (!$tmp) { - throw new Nette\InvalidArgumentException('Invalid UTF-8 character "' . ($c === '' ? '' : '\x' . strtoupper(bin2hex($c))) . '".'); - } - - return unpack('N', $tmp)[1]; - } - - - /** - * @deprecated use str_starts_with() - */ - public static function startsWith(string $haystack, string $needle): bool - { - return str_starts_with($haystack, $needle); - } - - - /** - * @deprecated use str_ends_with() - */ - public static function endsWith(string $haystack, string $needle): bool - { - return str_ends_with($haystack, $needle); - } - - - /** - * @deprecated use str_contains() - */ - public static function contains(string $haystack, string $needle): bool - { - return str_contains($haystack, $needle); - } - - - /** - * Returns a part of UTF-8 string specified by starting position and length. If start is negative, - * the returned string will start at the start'th character from the end of string. - */ - public static function substring(string $s, int $start, ?int $length = null): string - { - if (function_exists('mb_substr')) { - return mb_substr($s, $start, $length, 'UTF-8'); // MB is much faster - } elseif (!extension_loaded('iconv')) { - throw new Nette\NotSupportedException(__METHOD__ . '() requires extension ICONV or MBSTRING, neither is loaded.'); - } elseif ($length === null) { - $length = self::length($s); - } elseif ($start < 0 && $length < 0) { - $start += self::length($s); // unifies iconv_substr behavior with mb_substr - } - - return iconv_substr($s, $start, $length, 'UTF-8'); - } - - - /** - * Removes control characters, normalizes line breaks to `\n`, removes leading and trailing blank lines, - * trims end spaces on lines, normalizes UTF-8 to the normal form of NFC. - */ - public static function normalize(string $s): string - { - // convert to compressed normal form (NFC) - if (class_exists('Normalizer', false) && ($n = \Normalizer::normalize($s, \Normalizer::FORM_C)) !== false) { - $s = $n; - } - - $s = self::unixNewLines($s); - - // remove control characters; leave \t + \n - $s = self::pcre('preg_replace', ['#[\x00-\x08\x0B-\x1F\x7F-\x9F]+#u', '', $s]); - - // right trim - $s = self::pcre('preg_replace', ['#[\t ]+$#m', '', $s]); - - // leading and trailing blank lines - $s = trim($s, "\n"); - - return $s; - } - - - /** @deprecated use Strings::unixNewLines() */ - public static function normalizeNewLines(string $s): string - { - return self::unixNewLines($s); - } - - - /** - * Converts line endings to \n used on Unix-like systems. - * Line endings are: \n, \r, \r\n, U+2028 line separator, U+2029 paragraph separator. - */ - public static function unixNewLines(string $s): string - { - return preg_replace("~\r\n?|\u{2028}|\u{2029}~", "\n", $s); - } - - - /** - * Converts line endings to platform-specific, i.e. \r\n on Windows and \n elsewhere. - * Line endings are: \n, \r, \r\n, U+2028 line separator, U+2029 paragraph separator. - */ - public static function platformNewLines(string $s): string - { - return preg_replace("~\r\n?|\n|\u{2028}|\u{2029}~", PHP_EOL, $s); - } - - - /** - * Converts UTF-8 string to ASCII, ie removes diacritics etc. - */ - public static function toAscii(string $s): string - { - $iconv = defined('ICONV_IMPL') ? trim(ICONV_IMPL, '"\'') : null; - static $transliterator = null; - if ($transliterator === null) { - if (class_exists('Transliterator', false)) { - $transliterator = \Transliterator::create('Any-Latin; Latin-ASCII'); - } else { - trigger_error(__METHOD__ . "(): it is recommended to enable PHP extensions 'intl'.", E_USER_NOTICE); - $transliterator = false; - } - } - - // remove control characters and check UTF-8 validity - $s = self::pcre('preg_replace', ['#[^\x09\x0A\x0D\x20-\x7E\xA0-\x{2FF}\x{370}-\x{10FFFF}]#u', '', $s]); - - // transliteration (by Transliterator and iconv) is not optimal, replace some characters directly - $s = strtr($s, ["\u{201E}" => '"', "\u{201C}" => '"', "\u{201D}" => '"', "\u{201A}" => "'", "\u{2018}" => "'", "\u{2019}" => "'", "\u{B0}" => '^', "\u{42F}" => 'Ya', "\u{44F}" => 'ya', "\u{42E}" => 'Yu', "\u{44E}" => 'yu', "\u{c4}" => 'Ae', "\u{d6}" => 'Oe', "\u{dc}" => 'Ue', "\u{1e9e}" => 'Ss', "\u{e4}" => 'ae', "\u{f6}" => 'oe', "\u{fc}" => 'ue', "\u{df}" => 'ss']); // „ “ ” ‚ ‘ ’ ° Я я Ю ю Ä Ö Ü ẞ ä ö ü ß - if ($iconv !== 'libiconv') { - $s = strtr($s, ["\u{AE}" => '(R)', "\u{A9}" => '(c)', "\u{2026}" => '...', "\u{AB}" => '<<', "\u{BB}" => '>>', "\u{A3}" => 'lb', "\u{A5}" => 'yen', "\u{B2}" => '^2', "\u{B3}" => '^3', "\u{B5}" => 'u', "\u{B9}" => '^1', "\u{BA}" => 'o', "\u{BF}" => '?', "\u{2CA}" => "'", "\u{2CD}" => '_', "\u{2DD}" => '"', "\u{1FEF}" => '', "\u{20AC}" => 'EUR', "\u{2122}" => 'TM', "\u{212E}" => 'e', "\u{2190}" => '<-', "\u{2191}" => '^', "\u{2192}" => '->', "\u{2193}" => 'V', "\u{2194}" => '<->']); // ® © … « » £ ¥ ² ³ µ ¹ º ¿ ˊ ˍ ˝ ` € ™ ℮ ← ↑ → ↓ ↔ - } - - if ($transliterator) { - $s = $transliterator->transliterate($s); - // use iconv because The transliterator leaves some characters out of ASCII, eg → ʾ - if ($iconv === 'glibc') { - $s = strtr($s, '?', "\x01"); // temporarily hide ? to distinguish them from the garbage that iconv creates - $s = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $s); - $s = str_replace(['?', "\x01"], ['', '?'], $s); // remove garbage and restore ? characters - } elseif ($iconv === 'libiconv') { - $s = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $s); - } else { // null or 'unknown' (#216) - $s = self::pcre('preg_replace', ['#[^\x00-\x7F]++#', '', $s]); // remove non-ascii chars - } - } elseif ($iconv === 'glibc' || $iconv === 'libiconv') { - // temporarily hide these characters to distinguish them from the garbage that iconv creates - $s = strtr($s, '`\'"^~?', "\x01\x02\x03\x04\x05\x06"); - if ($iconv === 'glibc') { - // glibc implementation is very limited. transliterate into Windows-1250 and then into ASCII, so most Eastern European characters are preserved - $s = iconv('UTF-8', 'WINDOWS-1250//TRANSLIT//IGNORE', $s); - $s = strtr( - $s, - "\xa5\xa3\xbc\x8c\xa7\x8a\xaa\x8d\x8f\x8e\xaf\xb9\xb3\xbe\x9c\x9a\xba\x9d\x9f\x9e\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\x96\xa0\x8b\x97\x9b\xa6\xad\xb7", - 'ALLSSSSTZZZallssstzzzRAAAALCCCEEEEIIDDNNOOOOxRUUUUYTsraaaalccceeeeiiddnnooooruuuuyt- <->|-.', - ); - $s = self::pcre('preg_replace', ['#[^\x00-\x7F]++#', '', $s]); - } else { - $s = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $s); - } - - // remove garbage that iconv creates during transliteration (eg Ý -> Y') - $s = str_replace(['`', "'", '"', '^', '~', '?'], '', $s); - // restore temporarily hidden characters - $s = strtr($s, "\x01\x02\x03\x04\x05\x06", '`\'"^~?'); - } else { - $s = self::pcre('preg_replace', ['#[^\x00-\x7F]++#', '', $s]); // remove non-ascii chars - } - - return $s; - } - - - /** - * Modifies the UTF-8 string to the form used in the URL, ie removes diacritics and replaces all characters - * except letters of the English alphabet and numbers with a hyphens. - */ - public static function webalize(string $s, ?string $charlist = null, bool $lower = true): string - { - $s = self::toAscii($s); - if ($lower) { - $s = strtolower($s); - } - - $s = self::pcre('preg_replace', ['#[^a-z0-9' . ($charlist !== null ? preg_quote($charlist, '#') : '') . ']+#i', '-', $s]); - $s = trim($s, '-'); - return $s; - } - - - /** - * Truncates a UTF-8 string to given maximal length, while trying not to split whole words. Only if the string is truncated, - * an ellipsis (or something else set with third argument) is appended to the string. - */ - public static function truncate(string $s, int $maxLen, string $append = "\u{2026}"): string - { - if (self::length($s) > $maxLen) { - $maxLen -= self::length($append); - if ($maxLen < 1) { - return $append; - - } elseif ($matches = self::match($s, '#^.{1,' . $maxLen . '}(?=[\s\x00-/:-@\[-`{-~])#us')) { - return $matches[0] . $append; - - } else { - return self::substring($s, 0, $maxLen) . $append; - } - } - - return $s; - } - - - /** - * Indents a multiline text from the left. Second argument sets how many indentation chars should be used, - * while the indent itself is the third argument (*tab* by default). - */ - public static function indent(string $s, int $level = 1, string $chars = "\t"): string - { - if ($level > 0) { - $s = self::replace($s, '#(?:^|[\r\n]+)(?=[^\r\n])#', '$0' . str_repeat($chars, $level)); - } - - return $s; - } - - - /** - * Converts all characters of UTF-8 string to lower case. - */ - public static function lower(string $s): string - { - return mb_strtolower($s, 'UTF-8'); - } - - - /** - * Converts the first character of a UTF-8 string to lower case and leaves the other characters unchanged. - */ - public static function firstLower(string $s): string - { - return self::lower(self::substring($s, 0, 1)) . self::substring($s, 1); - } - - - /** - * Converts all characters of a UTF-8 string to upper case. - */ - public static function upper(string $s): string - { - return mb_strtoupper($s, 'UTF-8'); - } - - - /** - * Converts the first character of a UTF-8 string to upper case and leaves the other characters unchanged. - */ - public static function firstUpper(string $s): string - { - return self::upper(self::substring($s, 0, 1)) . self::substring($s, 1); - } - - - /** - * Converts the first character of every word of a UTF-8 string to upper case and the others to lower case. - */ - public static function capitalize(string $s): string - { - return mb_convert_case($s, MB_CASE_TITLE, 'UTF-8'); - } - - - /** - * Compares two UTF-8 strings or their parts, without taking character case into account. If length is null, whole strings are compared, - * if it is negative, the corresponding number of characters from the end of the strings is compared, - * otherwise the appropriate number of characters from the beginning is compared. - */ - public static function compare(string $left, string $right, ?int $length = null): bool - { - if (class_exists('Normalizer', false)) { - $left = \Normalizer::normalize($left, \Normalizer::FORM_D); // form NFD is faster - $right = \Normalizer::normalize($right, \Normalizer::FORM_D); // form NFD is faster - } - - if ($length < 0) { - $left = self::substring($left, $length, -$length); - $right = self::substring($right, $length, -$length); - } elseif ($length !== null) { - $left = self::substring($left, 0, $length); - $right = self::substring($right, 0, $length); - } - - return self::lower($left) === self::lower($right); - } - - - /** - * Finds the common prefix of strings or returns empty string if the prefix was not found. - * @param string[] $strings - */ - public static function findPrefix(array $strings): string - { - $first = array_shift($strings); - for ($i = 0; $i < strlen($first); $i++) { - foreach ($strings as $s) { - if (!isset($s[$i]) || $first[$i] !== $s[$i]) { - while ($i && $first[$i - 1] >= "\x80" && $first[$i] >= "\x80" && $first[$i] < "\xC0") { - $i--; - } - - return substr($first, 0, $i); - } - } - } - - return $first; - } - - - /** - * Returns number of characters (not bytes) in UTF-8 string. - * That is the number of Unicode code points which may differ from the number of graphemes. - */ - public static function length(string $s): int - { - return match (true) { - extension_loaded('mbstring') => mb_strlen($s, 'UTF-8'), - extension_loaded('iconv') => iconv_strlen($s, 'UTF-8'), - default => strlen(@utf8_decode($s)), // deprecated - }; - } - - - /** - * Removes all left and right side spaces (or the characters passed as second argument) from a UTF-8 encoded string. - */ - public static function trim(string $s, string $charlist = self::TrimCharacters): string - { - $charlist = preg_quote($charlist, '#'); - return self::replace($s, '#^[' . $charlist . ']+|[' . $charlist . ']+$#Du', ''); - } - - - /** - * Pads a UTF-8 string to given length by prepending the $pad string to the beginning. - * @param non-empty-string $pad - */ - public static function padLeft(string $s, int $length, string $pad = ' '): string - { - $length = max(0, $length - self::length($s)); - $padLen = self::length($pad); - return str_repeat($pad, (int) ($length / $padLen)) . self::substring($pad, 0, $length % $padLen) . $s; - } - - - /** - * Pads UTF-8 string to given length by appending the $pad string to the end. - * @param non-empty-string $pad - */ - public static function padRight(string $s, int $length, string $pad = ' '): string - { - $length = max(0, $length - self::length($s)); - $padLen = self::length($pad); - return $s . str_repeat($pad, (int) ($length / $padLen)) . self::substring($pad, 0, $length % $padLen); - } - - - /** - * Reverses UTF-8 string. - */ - public static function reverse(string $s): string - { - if (!extension_loaded('iconv')) { - throw new Nette\NotSupportedException(__METHOD__ . '() requires ICONV extension that is not loaded.'); - } - - return iconv('UTF-32LE', 'UTF-8', strrev(iconv('UTF-8', 'UTF-32BE', $s))); - } - - - /** - * Returns part of $haystack before $nth occurence of $needle or returns null if the needle was not found. - * Negative value means searching from the end. - */ - public static function before(string $haystack, string $needle, int $nth = 1): ?string - { - $pos = self::pos($haystack, $needle, $nth); - return $pos === null - ? null - : substr($haystack, 0, $pos); - } - - - /** - * Returns part of $haystack after $nth occurence of $needle or returns null if the needle was not found. - * Negative value means searching from the end. - */ - public static function after(string $haystack, string $needle, int $nth = 1): ?string - { - $pos = self::pos($haystack, $needle, $nth); - return $pos === null - ? null - : substr($haystack, $pos + strlen($needle)); - } - - - /** - * Returns position in characters of $nth occurence of $needle in $haystack or null if the $needle was not found. - * Negative value of `$nth` means searching from the end. - */ - public static function indexOf(string $haystack, string $needle, int $nth = 1): ?int - { - $pos = self::pos($haystack, $needle, $nth); - return $pos === null - ? null - : self::length(substr($haystack, 0, $pos)); - } - - - /** - * Returns position in characters of $nth occurence of $needle in $haystack or null if the needle was not found. - */ - private static function pos(string $haystack, string $needle, int $nth = 1): ?int - { - if (!$nth) { - return null; - } elseif ($nth > 0) { - if ($needle === '') { - return 0; - } - - $pos = 0; - while (($pos = strpos($haystack, $needle, $pos)) !== false && --$nth) { - $pos++; - } - } else { - $len = strlen($haystack); - if ($needle === '') { - return $len; - } elseif ($len === 0) { - return null; - } - - $pos = $len - 1; - while (($pos = strrpos($haystack, $needle, $pos - $len)) !== false && ++$nth) { - $pos--; - } - } - - return Helpers::falseToNull($pos); - } - - - /** - * Divides the string into arrays according to the regular expression. Expressions in parentheses will be captured and returned as well. - */ - public static function split( - string $subject, - #[Language('RegExp')] - string $pattern, - bool|int $captureOffset = false, - bool $skipEmpty = false, - int $limit = -1, - bool $utf8 = false, - ): array - { - $flags = is_int($captureOffset) // back compatibility - ? $captureOffset - : ($captureOffset ? PREG_SPLIT_OFFSET_CAPTURE : 0) | ($skipEmpty ? PREG_SPLIT_NO_EMPTY : 0); - - $pattern .= $utf8 ? 'u' : ''; - $m = self::pcre('preg_split', [$pattern, $subject, $limit, $flags | PREG_SPLIT_DELIM_CAPTURE]); - return $utf8 && $captureOffset - ? self::bytesToChars($subject, [$m])[0] - : $m; - - } - - - /** - * Searches the string for the part matching the regular expression and returns - * an array with the found expression and individual subexpressions, or `null`. - */ - public static function match( - string $subject, - #[Language('RegExp')] - string $pattern, - bool|int $captureOffset = false, - int $offset = 0, - bool $unmatchedAsNull = false, - bool $utf8 = false, - ): ?array - { - $flags = is_int($captureOffset) // back compatibility - ? $captureOffset - : ($captureOffset ? PREG_OFFSET_CAPTURE : 0) | ($unmatchedAsNull ? PREG_UNMATCHED_AS_NULL : 0); - - if ($utf8) { - $offset = strlen(self::substring($subject, 0, $offset)); - $pattern .= 'u'; - } - - if ($offset > strlen($subject)) { - return null; - } elseif (!self::pcre('preg_match', [$pattern, $subject, &$m, $flags, $offset])) { - return null; - } elseif ($utf8 && $captureOffset) { - return self::bytesToChars($subject, [$m])[0]; - } else { - return $m; - } - } - - - /** - * Searches the string for all occurrences matching the regular expression and - * returns an array of arrays containing the found expression and each subexpression. - */ - public static function matchAll( - string $subject, - #[Language('RegExp')] - string $pattern, - bool|int $captureOffset = false, - int $offset = 0, - bool $unmatchedAsNull = false, - bool $patternOrder = false, - bool $utf8 = false, - ): array - { - $flags = is_int($captureOffset) // back compatibility - ? $captureOffset - : ($captureOffset ? PREG_OFFSET_CAPTURE : 0) | ($unmatchedAsNull ? PREG_UNMATCHED_AS_NULL : 0) | ($patternOrder ? PREG_PATTERN_ORDER : 0); - - if ($utf8) { - $offset = strlen(self::substring($subject, 0, $offset)); - $pattern .= 'u'; - } - - if ($offset > strlen($subject)) { - return []; - } - - self::pcre('preg_match_all', [ - $pattern, $subject, &$m, - ($flags & PREG_PATTERN_ORDER) ? $flags : ($flags | PREG_SET_ORDER), - $offset, - ]); - return $utf8 && $captureOffset - ? self::bytesToChars($subject, $m) - : $m; - - } - - - /** - * Replaces all occurrences matching regular expression $pattern which can be string or array in the form `pattern => replacement`. - */ - public static function replace( - string $subject, - #[Language('RegExp')] - string|array $pattern, - string|callable $replacement = '', - int $limit = -1, - bool $captureOffset = false, - bool $unmatchedAsNull = false, - bool $utf8 = false, - ): string - { - if (is_object($replacement) || is_array($replacement)) { - if (!is_callable($replacement, false, $textual)) { - throw new Nette\InvalidStateException("Callback '$textual' is not callable."); - } - - $flags = ($captureOffset ? PREG_OFFSET_CAPTURE : 0) | ($unmatchedAsNull ? PREG_UNMATCHED_AS_NULL : 0); - if ($utf8) { - $pattern .= 'u'; - if ($captureOffset) { - $replacement = fn($m) => $replacement(self::bytesToChars($subject, [$m])[0]); - } - } - - return self::pcre('preg_replace_callback', [$pattern, $replacement, $subject, $limit, 0, $flags]); - - } elseif (is_array($pattern) && is_string(key($pattern))) { - $replacement = array_values($pattern); - $pattern = array_keys($pattern); - } - - if ($utf8) { - $pattern = array_map(fn($item) => $item . 'u', (array) $pattern); - } - - return self::pcre('preg_replace', [$pattern, $replacement, $subject, $limit]); - } - - - private static function bytesToChars(string $s, array $groups): array - { - $lastBytes = $lastChars = 0; - foreach ($groups as &$matches) { - foreach ($matches as &$match) { - if ($match[1] > $lastBytes) { - $lastChars += self::length(substr($s, $lastBytes, $match[1] - $lastBytes)); - } elseif ($match[1] < $lastBytes) { - $lastChars -= self::length(substr($s, $match[1], $lastBytes - $match[1])); - } - - $lastBytes = $match[1]; - $match[1] = $lastChars; - } - } - - return $groups; - } - - - /** @internal */ - public static function pcre(string $func, array $args) - { - $res = Callback::invokeSafe($func, $args, function (string $message) use ($args): void { - // compile-time error, not detectable by preg_last_error - throw new RegexpException($message . ' in pattern: ' . implode(' or ', (array) $args[0])); - }); - - if (($code = preg_last_error()) // run-time error, but preg_last_error & return code are liars - && ($res === null || !in_array($func, ['preg_filter', 'preg_replace_callback', 'preg_replace'], true)) - ) { - throw new RegexpException(preg_last_error_msg() - . ' (pattern: ' . implode(' or ', (array) $args[0]) . ')', $code); - } - - return $res; - } -} diff --git a/vendor/nette/utils/src/Utils/Type.php b/vendor/nette/utils/src/Utils/Type.php deleted file mode 100644 index 7a178812..00000000 --- a/vendor/nette/utils/src/Utils/Type.php +++ /dev/null @@ -1,267 +0,0 @@ - */ - private array $types; - private bool $simple; - private string $kind; // | & - - - /** - * Creates a Type object based on reflection. Resolves self, static and parent to the actual class name. - * If the subject has no type, it returns null. - */ - public static function fromReflection( - \ReflectionFunctionAbstract|\ReflectionParameter|\ReflectionProperty $reflection, - ): ?self - { - $type = $reflection instanceof \ReflectionFunctionAbstract - ? $reflection->getReturnType() ?? (PHP_VERSION_ID >= 80100 && $reflection instanceof \ReflectionMethod ? $reflection->getTentativeReturnType() : null) - : $reflection->getType(); - - return $type ? self::fromReflectionType($type, $reflection, asObject: true) : null; - } - - - private static function fromReflectionType(\ReflectionType $type, $of, bool $asObject): self|string - { - if ($type instanceof \ReflectionNamedType) { - $name = self::resolve($type->getName(), $of); - return $asObject - ? new self($type->allowsNull() && $name !== 'mixed' ? [$name, 'null'] : [$name]) - : $name; - - } elseif ($type instanceof \ReflectionUnionType || $type instanceof \ReflectionIntersectionType) { - return new self( - array_map(fn($t) => self::fromReflectionType($t, $of, asObject: false), $type->getTypes()), - $type instanceof \ReflectionUnionType ? '|' : '&', - ); - - } else { - throw new Nette\InvalidStateException('Unexpected type of ' . Reflection::toString($of)); - } - } - - - /** - * Creates the Type object according to the text notation. - */ - public static function fromString(string $type): self - { - if (!Validators::isTypeDeclaration($type)) { - throw new Nette\InvalidArgumentException("Invalid type '$type'."); - } - - if ($type[0] === '?') { - return new self([substr($type, 1), 'null']); - } - - $unions = []; - foreach (explode('|', $type) as $part) { - $part = explode('&', trim($part, '()')); - $unions[] = count($part) === 1 ? $part[0] : new self($part, '&'); - } - - return count($unions) === 1 && $unions[0] instanceof self - ? $unions[0] - : new self($unions); - } - - - /** - * Resolves 'self', 'static' and 'parent' to the actual class name. - */ - public static function resolve( - string $type, - \ReflectionFunctionAbstract|\ReflectionParameter|\ReflectionProperty $of, - ): string - { - $lower = strtolower($type); - if ($of instanceof \ReflectionFunction) { - return $type; - } elseif ($lower === 'self') { - return $of->getDeclaringClass()->name; - } elseif ($lower === 'static') { - return ($of instanceof ReflectionMethod ? $of->getOriginalClass() : $of->getDeclaringClass())->name; - } elseif ($lower === 'parent' && $of->getDeclaringClass()->getParentClass()) { - return $of->getDeclaringClass()->getParentClass()->name; - } else { - return $type; - } - } - - - private function __construct(array $types, string $kind = '|') - { - $o = array_search('null', $types, strict: true); - if ($o !== false) { // null as last - array_splice($types, $o, 1); - $types[] = 'null'; - } - - $this->types = $types; - $this->simple = is_string($types[0]) && ($types[1] ?? 'null') === 'null'; - $this->kind = count($types) > 1 ? $kind : ''; - } - - - public function __toString(): string - { - $multi = count($this->types) > 1; - if ($this->simple) { - return ($multi ? '?' : '') . $this->types[0]; - } - - $res = []; - foreach ($this->types as $type) { - $res[] = $type instanceof self && $multi ? "($type)" : $type; - } - return implode($this->kind, $res); - } - - - /** - * Returns the array of subtypes that make up the compound type as strings. - * @return array - */ - public function getNames(): array - { - return array_map(fn($t) => $t instanceof self ? $t->getNames() : $t, $this->types); - } - - - /** - * Returns the array of subtypes that make up the compound type as Type objects: - * @return self[] - */ - public function getTypes(): array - { - return array_map(fn($t) => $t instanceof self ? $t : new self([$t]), $this->types); - } - - - /** - * Returns the type name for simple types, otherwise null. - */ - public function getSingleName(): ?string - { - return $this->simple - ? $this->types[0] - : null; - } - - - /** - * Returns true whether it is a union type. - */ - public function isUnion(): bool - { - return $this->kind === '|'; - } - - - /** - * Returns true whether it is an intersection type. - */ - public function isIntersection(): bool - { - return $this->kind === '&'; - } - - - /** - * Returns true whether it is a simple type. Single nullable types are also considered to be simple types. - */ - public function isSimple(): bool - { - return $this->simple; - } - - - /** @deprecated use isSimple() */ - public function isSingle(): bool - { - return $this->simple; - } - - - /** - * Returns true whether the type is both a simple and a PHP built-in type. - */ - public function isBuiltin(): bool - { - return $this->simple && Validators::isBuiltinType($this->types[0]); - } - - - /** - * Returns true whether the type is both a simple and a class name. - */ - public function isClass(): bool - { - return $this->simple && !Validators::isBuiltinType($this->types[0]); - } - - - /** - * Determines if type is special class name self/parent/static. - */ - public function isClassKeyword(): bool - { - return $this->simple && Validators::isClassKeyword($this->types[0]); - } - - - /** - * Verifies type compatibility. For example, it checks if a value of a certain type could be passed as a parameter. - */ - public function allows(string $subtype): bool - { - if ($this->types === ['mixed']) { - return true; - } - - $subtype = self::fromString($subtype); - return $subtype->isUnion() - ? Arrays::every($subtype->types, fn($t) => $this->allows2($t instanceof self ? $t->types : [$t])) - : $this->allows2($subtype->types); - } - - - private function allows2(array $subtypes): bool - { - return $this->isUnion() - ? Arrays::some($this->types, fn($t) => $this->allows3($t instanceof self ? $t->types : [$t], $subtypes)) - : $this->allows3($this->types, $subtypes); - } - - - private function allows3(array $types, array $subtypes): bool - { - return Arrays::every( - $types, - fn($type) => Arrays::some( - $subtypes, - fn($subtype) => Validators::isBuiltinType($type) - ? strcasecmp($type, $subtype) === 0 - : is_a($subtype, $type, allow_string: true) - ) - ); - } -} diff --git a/vendor/nette/utils/src/Utils/Validators.php b/vendor/nette/utils/src/Utils/Validators.php deleted file mode 100644 index 61ccf091..00000000 --- a/vendor/nette/utils/src/Utils/Validators.php +++ /dev/null @@ -1,416 +0,0 @@ - 1, 'int' => 1, 'float' => 1, 'bool' => 1, 'array' => 1, 'object' => 1, - 'callable' => 1, 'iterable' => 1, 'void' => 1, 'null' => 1, 'mixed' => 1, 'false' => 1, - 'never' => 1, 'true' => 1, - ]; - - /** @var array */ - protected static $validators = [ - // PHP types - 'array' => 'is_array', - 'bool' => 'is_bool', - 'boolean' => 'is_bool', - 'float' => 'is_float', - 'int' => 'is_int', - 'integer' => 'is_int', - 'null' => 'is_null', - 'object' => 'is_object', - 'resource' => 'is_resource', - 'scalar' => 'is_scalar', - 'string' => 'is_string', - - // pseudo-types - 'callable' => [self::class, 'isCallable'], - 'iterable' => 'is_iterable', - 'list' => [Arrays::class, 'isList'], - 'mixed' => [self::class, 'isMixed'], - 'none' => [self::class, 'isNone'], - 'number' => [self::class, 'isNumber'], - 'numeric' => [self::class, 'isNumeric'], - 'numericint' => [self::class, 'isNumericInt'], - - // string patterns - 'alnum' => 'ctype_alnum', - 'alpha' => 'ctype_alpha', - 'digit' => 'ctype_digit', - 'lower' => 'ctype_lower', - 'pattern' => null, - 'space' => 'ctype_space', - 'unicode' => [self::class, 'isUnicode'], - 'upper' => 'ctype_upper', - 'xdigit' => 'ctype_xdigit', - - // syntax validation - 'email' => [self::class, 'isEmail'], - 'identifier' => [self::class, 'isPhpIdentifier'], - 'uri' => [self::class, 'isUri'], - 'url' => [self::class, 'isUrl'], - - // environment validation - 'class' => 'class_exists', - 'interface' => 'interface_exists', - 'directory' => 'is_dir', - 'file' => 'is_file', - 'type' => [self::class, 'isType'], - ]; - - /** @var array */ - protected static $counters = [ - 'string' => 'strlen', - 'unicode' => [Strings::class, 'length'], - 'array' => 'count', - 'list' => 'count', - 'alnum' => 'strlen', - 'alpha' => 'strlen', - 'digit' => 'strlen', - 'lower' => 'strlen', - 'space' => 'strlen', - 'upper' => 'strlen', - 'xdigit' => 'strlen', - ]; - - - /** - * Verifies that the value is of expected types separated by pipe. - * @throws AssertionException - */ - public static function assert(mixed $value, string $expected, string $label = 'variable'): void - { - if (!static::is($value, $expected)) { - $expected = str_replace(['|', ':'], [' or ', ' in range '], $expected); - $translate = ['boolean' => 'bool', 'integer' => 'int', 'double' => 'float', 'NULL' => 'null']; - $type = $translate[gettype($value)] ?? gettype($value); - if (is_int($value) || is_float($value) || (is_string($value) && strlen($value) < 40)) { - $type .= ' ' . var_export($value, return: true); - } elseif (is_object($value)) { - $type .= ' ' . $value::class; - } - - throw new AssertionException("The $label expects to be $expected, $type given."); - } - } - - - /** - * Verifies that element $key in array is of expected types separated by pipe. - * @param mixed[] $array - * @throws AssertionException - */ - public static function assertField( - array $array, - $key, - ?string $expected = null, - string $label = "item '%' in array", - ): void - { - if (!array_key_exists($key, $array)) { - throw new AssertionException('Missing ' . str_replace('%', $key, $label) . '.'); - - } elseif ($expected) { - static::assert($array[$key], $expected, str_replace('%', $key, $label)); - } - } - - - /** - * Verifies that the value is of expected types separated by pipe. - */ - public static function is(mixed $value, string $expected): bool - { - foreach (explode('|', $expected) as $item) { - if (str_ends_with($item, '[]')) { - if (is_iterable($value) && self::everyIs($value, substr($item, 0, -2))) { - return true; - } - - continue; - } elseif (str_starts_with($item, '?')) { - $item = substr($item, 1); - if ($value === null) { - return true; - } - } - - [$type] = $item = explode(':', $item, 2); - if (isset(static::$validators[$type])) { - try { - if (!static::$validators[$type]($value)) { - continue; - } - } catch (\TypeError $e) { - continue; - } - } elseif ($type === 'pattern') { - if (Strings::match($value, '|^' . ($item[1] ?? '') . '$|D')) { - return true; - } - - continue; - } elseif (!$value instanceof $type) { - continue; - } - - if (isset($item[1])) { - $length = $value; - if (isset(static::$counters[$type])) { - $length = static::$counters[$type]($value); - } - - $range = explode('..', $item[1]); - if (!isset($range[1])) { - $range[1] = $range[0]; - } - - if (($range[0] !== '' && $length < $range[0]) || ($range[1] !== '' && $length > $range[1])) { - continue; - } - } - - return true; - } - - return false; - } - - - /** - * Finds whether all values are of expected types separated by pipe. - * @param mixed[] $values - */ - public static function everyIs(iterable $values, string $expected): bool - { - foreach ($values as $value) { - if (!static::is($value, $expected)) { - return false; - } - } - - return true; - } - - - /** - * Checks if the value is an integer or a float. - * @return ($value is int|float ? true : false) - */ - public static function isNumber(mixed $value): bool - { - return is_int($value) || is_float($value); - } - - - /** - * Checks if the value is an integer or a integer written in a string. - * @return ($value is non-empty-string ? bool : ($value is int ? true : false)) - */ - public static function isNumericInt(mixed $value): bool - { - return is_int($value) || (is_string($value) && preg_match('#^[+-]?[0-9]+$#D', $value)); - } - - - /** - * Checks if the value is a number or a number written in a string. - * @return ($value is non-empty-string ? bool : ($value is int|float ? true : false)) - */ - public static function isNumeric(mixed $value): bool - { - return is_float($value) || is_int($value) || (is_string($value) && preg_match('#^[+-]?([0-9]++\.?[0-9]*|\.[0-9]+)$#D', $value)); - } - - - /** - * Checks if the value is a syntactically correct callback. - */ - public static function isCallable(mixed $value): bool - { - return $value && is_callable($value, syntax_only: true); - } - - - /** - * Checks if the value is a valid UTF-8 string. - */ - public static function isUnicode(mixed $value): bool - { - return is_string($value) && preg_match('##u', $value); - } - - - /** - * Checks if the value is 0, '', false or null. - * @return ($value is 0|''|false|null ? true : false) - */ - public static function isNone(mixed $value): bool - { - return $value == null; // intentionally == - } - - - /** @internal */ - public static function isMixed(): bool - { - return true; - } - - - /** - * Checks if a variable is a zero-based integer indexed array. - * @deprecated use Nette\Utils\Arrays::isList - * @return ($value is list ? true : false) - */ - public static function isList(mixed $value): bool - { - return Arrays::isList($value); - } - - - /** - * Checks if the value is in the given range [min, max], where the upper or lower limit can be omitted (null). - * Numbers, strings and DateTime objects can be compared. - */ - public static function isInRange(mixed $value, array $range): bool - { - if ($value === null || !(isset($range[0]) || isset($range[1]))) { - return false; - } - - $limit = $range[0] ?? $range[1]; - if (is_string($limit)) { - $value = (string) $value; - } elseif ($limit instanceof \DateTimeInterface) { - if (!$value instanceof \DateTimeInterface) { - return false; - } - } elseif (is_numeric($value)) { - $value *= 1; - } else { - return false; - } - - return (!isset($range[0]) || ($value >= $range[0])) && (!isset($range[1]) || ($value <= $range[1])); - } - - - /** - * Checks if the value is a valid email address. It does not verify that the domain actually exists, only the syntax is verified. - */ - public static function isEmail(string $value): bool - { - $atom = "[-a-z0-9!#$%&'*+/=?^_`{|}~]"; // RFC 5322 unquoted characters in local-part - $alpha = "a-z\x80-\xFF"; // superset of IDN - return (bool) preg_match(<< \\? (? [a-zA-Z_\x7f-\xff][\w\x7f-\xff]*) (\\ (?&name))* ) | - (? (?&type) (& (?&type))+ ) | - (? (?&type) | \( (?&intersection) \) ) (\| (?&upart))+ - )$~xAD - XX, $type); - } -} diff --git a/vendor/nette/utils/src/Utils/exceptions.php b/vendor/nette/utils/src/Utils/exceptions.php deleted file mode 100644 index af949ce4..00000000 --- a/vendor/nette/utils/src/Utils/exceptions.php +++ /dev/null @@ -1,50 +0,0 @@ - - -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/vendor/nunomaduro/termwind/Makefile b/vendor/nunomaduro/termwind/Makefile deleted file mode 100644 index a71576bf..00000000 --- a/vendor/nunomaduro/termwind/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -# Well documented Makefiles -DEFAULT_GOAL := help -help: - @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z0-9_-]+:.*?##/ { printf " \033[36m%-40s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) - -##@ [Docker] -start: ## Spin up the container - docker-compose up -d - -stop: ## Shut down the containers - docker-compose down - -build: ## Build all docker images - docker-compose build - -##@ [Application] -composer: ## Run composer commands. Specify the command e.g. via "make composer ARGS="install|update|require " - docker-compose run --rm app composer $(ARGS) - -lint: ## Run the Linter - docker-compose run --rm app ./vendor/bin/pint -v - -test-lint: ## Run the Linter Test - docker-compose run --rm app ./vendor/bin/pint --test -v - -test-types: ## Run the PHPStan analysis - docker-compose run --rm app ./vendor/bin/phpstan analyse --ansi - -test-unit: ## Run the Pest Test Suite - docker-compose run --rm app ./vendor/bin/pest --colors=always - -test: ## Run the tests. Apply arguments via make test ARGS="--init" - make test-lint && make test-types && make test-unit diff --git a/vendor/nunomaduro/termwind/composer.json b/vendor/nunomaduro/termwind/composer.json deleted file mode 100644 index 6c4f59b6..00000000 --- a/vendor/nunomaduro/termwind/composer.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "nunomaduro/termwind", - "description": "Its like Tailwind CSS, but for the console.", - "keywords": ["php", "cli", "package", "console", "css", "style"], - "license": "MIT", - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "require": { - "php": "^8.0", - "ext-mbstring": "*", - "symfony/console": "^5.3.0|^6.0.0" - }, - "require-dev": { - "ergebnis/phpstan-rules": "^1.0.", - "illuminate/console": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "laravel/pint": "^1.0.0", - "pestphp/pest": "^1.21.0", - "pestphp/pest-plugin-mock": "^1.0", - "phpstan/phpstan": "^1.4.6", - "phpstan/phpstan-strict-rules": "^1.1.0", - "symfony/var-dumper": "^5.2.7|^6.0.0", - "thecodingmachine/phpstan-strict-rules": "^1.0.0" - }, - "autoload": { - "psr-4": { - "Termwind\\": "src/" - }, - "files": [ - "src/Functions.php" - ] - }, - "autoload-dev": { - "psr-4": { - "Tests\\": "tests/" - } - }, - "minimum-stability": "dev", - "prefer-stable": true, - "config": { - "sort-packages": true, - "preferred-install": "dist", - "allow-plugins": { - "pestphp/pest-plugin": true - } - }, - "scripts": { - "lint": "pint -v", - "test:lint": "pint --test -v", - "test:types": "phpstan analyse --ansi", - "test:unit": "pest --colors=always", - "test": [ - "@test:lint", - "@test:types", - "@test:unit" - ] - }, - "extra": { - "laravel": { - "providers": [ - "Termwind\\Laravel\\TermwindServiceProvider" - ] - } - } -} diff --git a/vendor/nunomaduro/termwind/docker-compose.yml b/vendor/nunomaduro/termwind/docker-compose.yml deleted file mode 100644 index 693b0081..00000000 --- a/vendor/nunomaduro/termwind/docker-compose.yml +++ /dev/null @@ -1,13 +0,0 @@ -version: '3' - -services: - app: - image: termwind-docker - container_name: termwind-docker - stdin_open: true - tty: true - build: - context: . - dockerfile: docker/Dockerfile - volumes: - - .:/usr/src/app diff --git a/vendor/nunomaduro/termwind/docker/Dockerfile b/vendor/nunomaduro/termwind/docker/Dockerfile deleted file mode 100644 index 53732e73..00000000 --- a/vendor/nunomaduro/termwind/docker/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -FROM php:8.2-cli-alpine - -# INSTALL AND UPDATE COMPOSER -COPY --from=composer /usr/bin/composer /usr/bin/composer -RUN composer self-update - -WORKDIR /usr/src/app -COPY . . - -# INSTALL YOUR DEPENDENCIES -RUN composer install --prefer-dist diff --git a/vendor/nunomaduro/termwind/playground.php b/vendor/nunomaduro/termwind/playground.php deleted file mode 100644 index 9e6b8100..00000000 --- a/vendor/nunomaduro/termwind/playground.php +++ /dev/null @@ -1,14 +0,0 @@ - -
    - Lorem ipsum dolor, sit amet consectetur adipisicing elit. Sunt illo et nisi omnis porro at, mollitia harum quas esse, aperiam dolorem ab recusandae fugiat nesciunt doloribus rem eaque nostrum itaque. - DONE -
    - -HTML); diff --git a/vendor/nunomaduro/termwind/src/Actions/StyleToMethod.php b/vendor/nunomaduro/termwind/src/Actions/StyleToMethod.php deleted file mode 100644 index 6debb8fd..00000000 --- a/vendor/nunomaduro/termwind/src/Actions/StyleToMethod.php +++ /dev/null @@ -1,154 +0,0 @@ - 64, - 'md' => 76, - 'lg' => 102, - 'xl' => 128, - '2xl' => 153, - ]; - - /** - * Creates a new action instance. - */ - public function __construct( - private Styles $styles, - private string $style, - ) { - // .. - } - - /** - * Applies multiple styles to the given styles. - */ - public static function multiple(Styles $styles, string $stylesString): Styles - { - $stylesString = self::sortStyles(array_merge( - $styles->defaultStyles(), - array_filter((array) preg_split('/(?![^\[]*\])\s/', $stylesString)) - )); - - foreach ($stylesString as $style) { - $styles = (new self($styles, $style))->__invoke(); - } - - return $styles; - } - - /** - * Converts the given style to a method name. - * - * @return Styles - */ - public function __invoke(string|int ...$arguments): Styles - { - if (StyleRepository::has($this->style)) { - return StyleRepository::get($this->style)($this->styles, ...$arguments); - } - - $method = $this->applyMediaQuery($this->style); - - if ($method === '') { - return $this->styles; - } - - $method = array_filter( - (array) preg_split('/(?![^\[]*\])-/', $method), - fn ($item) => $item !== false - ); - - $method = array_slice($method, 0, count($method) - count($arguments)); - - $methodName = implode(' ', $method); - $methodName = ucwords($methodName); - $methodName = lcfirst($methodName); - $methodName = str_replace(' ', '', $methodName); - - if ($methodName === '') { - throw StyleNotFound::fromStyle($this->style); - } - - if (! method_exists($this->styles, $methodName)) { - $argument = array_pop($method); - - $arguments[] = is_numeric($argument) ? (int) $argument : (string) $argument; - - return $this->__invoke(...$arguments); - } - - return $this->styles - ->setStyle($this->style) - ->$methodName(...array_reverse($arguments)); - } - - /** - * Sorts all the styles based on the correct render order. - * - * @param string[] $styles - * @return string[] - */ - private static function sortStyles(array $styles): array - { - $keys = array_keys(self::MEDIA_QUERY_BREAKPOINTS); - - usort($styles, function ($a, $b) use ($keys) { - $existsA = (bool) preg_match(self::MEDIA_QUERIES_REGEX, $a, $matchesA); - $existsB = (bool) preg_match(self::MEDIA_QUERIES_REGEX, $b, $matchesB); - - if ($existsA && ! $existsB) { - return 1; - } - - if ($existsA && array_search($matchesA[1], $keys, true) > array_search($matchesB[1], $keys, true)) { - return 1; - } - - return -1; - }); - - return $styles; - } - - /** - * Applies the media query if exists. - */ - private function applyMediaQuery(string $method): string - { - $matches = []; - preg_match(self::MEDIA_QUERIES_REGEX, $method, $matches); - - if (count($matches) < 1) { - return $method; - } - - [, $size, $method] = $matches; - - if ((new Terminal)->width() >= self::MEDIA_QUERY_BREAKPOINTS[$size]) { - return $method; - } - - return ''; - } -} diff --git a/vendor/nunomaduro/termwind/src/Components/Anchor.php b/vendor/nunomaduro/termwind/src/Components/Anchor.php deleted file mode 100644 index aa29fa20..00000000 --- a/vendor/nunomaduro/termwind/src/Components/Anchor.php +++ /dev/null @@ -1,9 +0,0 @@ -styles->getProperties()['styles']['display'] ?? 'inline'; - - if ($display === 'hidden') { - return ''; - } - - if ($display === 'block') { - return parent::toString(); - } - - return parent::toString()."\r"; - } -} diff --git a/vendor/nunomaduro/termwind/src/Components/Dd.php b/vendor/nunomaduro/termwind/src/Components/Dd.php deleted file mode 100644 index 9f6cafed..00000000 --- a/vendor/nunomaduro/termwind/src/Components/Dd.php +++ /dev/null @@ -1,10 +0,0 @@ -|string $content - */ - final public function __construct( - protected OutputInterface $output, - protected array|string $content, - Styles|null $styles = null - ) { - $this->styles = $styles ?? new Styles(defaultStyles: static::$defaultStyles); - $this->styles->setElement($this); - } - - /** - * Creates an element instance with the given styles. - * - * @param array|string $content - * @param array $properties - */ - final public static function fromStyles(OutputInterface $output, array|string $content, string $styles = '', array $properties = []): static - { - $element = new static($output, $content); - if ($properties !== []) { - $element->styles->setProperties($properties); - } - - $elementStyles = StyleToMethod::multiple($element->styles, $styles); - - return new static($output, $content, $elementStyles); - } - - /** - * Get the string representation of the element. - */ - public function toString(): string - { - if (is_array($this->content)) { - $inheritance = new InheritStyles(); - $this->content = implode('', $inheritance($this->content, $this->styles)); - } - - return $this->styles->format($this->content); - } - - /** - * @param array $arguments - */ - public function __call(string $name, array $arguments): mixed - { - if (method_exists($this->styles, $name)) { - $result = $this->styles->{$name}(...$arguments); - - if (str_starts_with($name, 'get') || str_starts_with($name, 'has')) { - return $result; - } - } - - return $this; - } - - /** - * Sets the content of the element. - * - * @param array|string $content - */ - final public function setContent(array|string $content): static - { - return new static($this->output, $content, $this->styles); - } - - /** - * Renders the string representation of the element on the output. - */ - final public function render(int $options): void - { - $this->output->writeln($this->toString(), $options); - } - - /** - * Get the string representation of the element. - */ - final public function __toString(): string - { - return $this->toString(); - } -} diff --git a/vendor/nunomaduro/termwind/src/Components/Hr.php b/vendor/nunomaduro/termwind/src/Components/Hr.php deleted file mode 100644 index e7fcc0f1..00000000 --- a/vendor/nunomaduro/termwind/src/Components/Hr.php +++ /dev/null @@ -1,10 +0,0 @@ -content) ? implode('', $this->content) : $this->content; - } -} diff --git a/vendor/nunomaduro/termwind/src/Components/Span.php b/vendor/nunomaduro/termwind/src/Components/Span.php deleted file mode 100644 index 9f50a636..00000000 --- a/vendor/nunomaduro/termwind/src/Components/Span.php +++ /dev/null @@ -1,10 +0,0 @@ -getPrevious()); - } - - /** - * Creates a new style not found instance from the given style. - */ - public static function fromStyle(string $style): self - { - return new self(sprintf('Style [%s] not found.', $style)); - } -} diff --git a/vendor/nunomaduro/termwind/src/Functions.php b/vendor/nunomaduro/termwind/src/Functions.php deleted file mode 100644 index 7ce10393..00000000 --- a/vendor/nunomaduro/termwind/src/Functions.php +++ /dev/null @@ -1,65 +0,0 @@ -render($html, $options); - } -} - -if (! function_exists('Termwind\terminal')) { - /** - * Returns a Terminal instance. - */ - function terminal(): Terminal - { - return new Terminal; - } -} - -if (! function_exists('Termwind\ask')) { - /** - * Renders a prompt to the user. - * - * @param iterable|null $autocomplete - */ - function ask(string $question, iterable $autocomplete = null): mixed - { - return (new Question)->ask($question, $autocomplete); - } -} diff --git a/vendor/nunomaduro/termwind/src/Helpers/QuestionHelper.php b/vendor/nunomaduro/termwind/src/Helpers/QuestionHelper.php deleted file mode 100644 index e6bd7c5d..00000000 --- a/vendor/nunomaduro/termwind/src/Helpers/QuestionHelper.php +++ /dev/null @@ -1,25 +0,0 @@ -getQuestion()); - $output->write($text); - } -} diff --git a/vendor/nunomaduro/termwind/src/Html/CodeRenderer.php b/vendor/nunomaduro/termwind/src/Html/CodeRenderer.php deleted file mode 100644 index 6950cfdb..00000000 --- a/vendor/nunomaduro/termwind/src/Html/CodeRenderer.php +++ /dev/null @@ -1,282 +0,0 @@ - - */ - private const THEME = [ - self::TOKEN_STRING => 'text-gray', - self::TOKEN_COMMENT => 'text-gray italic', - self::TOKEN_KEYWORD => 'text-magenta strong', - self::TOKEN_DEFAULT => 'strong', - self::TOKEN_HTML => 'text-blue strong', - - self::ACTUAL_LINE_MARK => 'text-red strong', - self::LINE_NUMBER => 'text-gray', - self::MARKED_LINE_NUMBER => 'italic strong', - self::LINE_NUMBER_DIVIDER => 'text-gray', - ]; - - private string $delimiter = self::DELIMITER_UTF8; - - private string $arrow = self::ARROW_SYMBOL_UTF8; - - private const NO_MARK = ' '; - - /** - * Highlights HTML content from a given node and converts to the content element. - */ - public function toElement(Node $node): Element - { - $line = max((int) $node->getAttribute('line'), 0); - $startLine = max((int) $node->getAttribute('start-line'), 1); - - $html = $node->getHtml(); - $lines = explode("\n", $html); - $extraSpaces = $this->findExtraSpaces($lines); - - if ($extraSpaces !== '') { - $lines = array_map(static function (string $line) use ($extraSpaces): string { - return str_starts_with($line, $extraSpaces) ? substr($line, strlen($extraSpaces)) : $line; - }, $lines); - $html = implode("\n", $lines); - } - - $tokenLines = $this->getHighlightedLines(trim($html, "\n"), $startLine); - $lines = $this->colorLines($tokenLines); - $lines = $this->lineNumbers($lines, $line); - - return Termwind::div(trim($lines, "\n")); - } - - /** - * Finds extra spaces which should be removed from HTML. - * - * @param array $lines - */ - private function findExtraSpaces(array $lines): string - { - foreach ($lines as $line) { - if ($line === '') { - continue; - } - - if (preg_replace('/\s+/', '', $line) === '') { - return $line; - } - } - - return ''; - } - - /** - * Returns content split into lines with numbers. - * - * @return array> - */ - private function getHighlightedLines(string $source, int $startLine): array - { - $source = str_replace(["\r\n", "\r"], "\n", $source); - $tokens = $this->tokenize($source); - - return $this->splitToLines($tokens, $startLine - 1); - } - - /** - * Splits content into tokens. - * - * @return array - */ - private function tokenize(string $source): array - { - $tokens = token_get_all($source); - - $output = []; - $currentType = null; - $newType = self::TOKEN_KEYWORD; - $buffer = ''; - - foreach ($tokens as $token) { - if (is_array($token)) { - if ($token[0] !== T_WHITESPACE) { - $newType = match ($token[0]) { - T_OPEN_TAG, T_OPEN_TAG_WITH_ECHO, T_CLOSE_TAG, T_STRING, T_VARIABLE, - T_DIR, T_FILE, T_METHOD_C, T_DNUMBER, T_LNUMBER, T_NS_C, - T_LINE, T_CLASS_C, T_FUNC_C, T_TRAIT_C => self::TOKEN_DEFAULT, - T_COMMENT, T_DOC_COMMENT => self::TOKEN_COMMENT, - T_ENCAPSED_AND_WHITESPACE, T_CONSTANT_ENCAPSED_STRING => self::TOKEN_STRING, - T_INLINE_HTML => self::TOKEN_HTML, - default => self::TOKEN_KEYWORD - }; - } - } else { - $newType = $token === '"' ? self::TOKEN_STRING : self::TOKEN_KEYWORD; - } - - if ($currentType === null) { - $currentType = $newType; - } - - if ($currentType !== $newType) { - $output[] = [$currentType, $buffer]; - $buffer = ''; - $currentType = $newType; - } - - $buffer .= is_array($token) ? $token[1] : $token; - } - - $output[] = [$newType, $buffer]; - - return $output; - } - - /** - * Splits tokens into lines. - * - * @param array $tokens - * @param int $startLine - * @return array> - */ - private function splitToLines(array $tokens, int $startLine): array - { - $lines = []; - - $line = []; - foreach ($tokens as $token) { - foreach (explode("\n", $token[1]) as $count => $tokenLine) { - if ($count > 0) { - $lines[$startLine++] = $line; - $line = []; - } - - if ($tokenLine === '') { - continue; - } - - $line[] = [$token[0], $tokenLine]; - } - } - - $lines[$startLine++] = $line; - - return $lines; - } - - /** - * Applies colors to tokens according to a color schema. - * - * @param array> $tokenLines - * @return array - */ - private function colorLines(array $tokenLines): array - { - $lines = []; - - foreach ($tokenLines as $lineCount => $tokenLine) { - $line = ''; - foreach ($tokenLine as $token) { - [$tokenType, $tokenValue] = $token; - $line .= $this->styleToken($tokenType, $tokenValue); - } - - $lines[$lineCount] = $line; - } - - return $lines; - } - - /** - * Prepends line numbers into lines. - * - * @param array $lines - * @param int $markLine - * @return string - */ - private function lineNumbers(array $lines, int $markLine): string - { - $lastLine = (int) array_key_last($lines); - $lineLength = strlen((string) ($lastLine + 1)); - $lineLength = $lineLength < self::WIDTH ? self::WIDTH : $lineLength; - - $snippet = ''; - $mark = ' '.$this->arrow.' '; - foreach ($lines as $i => $line) { - $coloredLineNumber = $this->coloredLineNumber(self::LINE_NUMBER, $i, $lineLength); - - if (0 !== $markLine) { - $snippet .= ($markLine === $i + 1 - ? $this->styleToken(self::ACTUAL_LINE_MARK, $mark) - : self::NO_MARK - ); - - $coloredLineNumber = ($markLine === $i + 1 ? - $this->coloredLineNumber(self::MARKED_LINE_NUMBER, $i, $lineLength) : - $coloredLineNumber - ); - } - - $snippet .= $coloredLineNumber; - $snippet .= $this->styleToken(self::LINE_NUMBER_DIVIDER, $this->delimiter); - $snippet .= $line.PHP_EOL; - } - - return $snippet; - } - - /** - * Formats line number and applies color according to a color schema. - */ - private function coloredLineNumber(string $token, int $lineNumber, int $length): string - { - return $this->styleToken( - $token, str_pad((string) ($lineNumber + 1), $length, ' ', STR_PAD_LEFT) - ); - } - - /** - * Formats string and applies color according to a color schema. - */ - private function styleToken(string $token, string $string): string - { - return (string) Termwind::span($string, self::THEME[$token]); - } -} diff --git a/vendor/nunomaduro/termwind/src/Html/InheritStyles.php b/vendor/nunomaduro/termwind/src/Html/InheritStyles.php deleted file mode 100644 index 953177ed..00000000 --- a/vendor/nunomaduro/termwind/src/Html/InheritStyles.php +++ /dev/null @@ -1,218 +0,0 @@ - $elements - * @return array - */ - public function __invoke(array $elements, Styles $styles): array - { - $elements = array_values($elements); - - foreach ($elements as &$element) { - if (is_string($element)) { - $element = Termwind::raw($element); - } - - $element->inheritFromStyles($styles); - } - - /** @var Element[] $elements */ - if (($styles->getProperties()['styles']['display'] ?? 'inline') === 'flex') { - $elements = $this->applyFlex($elements); - } - - return match ($styles->getProperties()['styles']['justifyContent'] ?? false) { - 'between' => $this->applyJustifyBetween($elements), - 'evenly' => $this->applyJustifyEvenly($elements), - 'around' => $this->applyJustifyAround($elements), - 'center' => $this->applyJustifyCenter($elements), - default => $elements, - }; - } - - /** - * Applies flex-1 to child elements with the class. - * - * @param array $elements - * @return array - */ - private function applyFlex(array $elements): array - { - [$totalWidth, $parentWidth] = $this->getWidthFromElements($elements); - - $width = max(0, array_reduce($elements, function ($carry, $element) { - return $carry += $element->hasStyle('flex-1') ? $element->getInnerWidth() : 0; - }, $parentWidth - $totalWidth)); - - $flexed = array_values(array_filter( - $elements, fn ($element) => $element->hasStyle('flex-1') - )); - - foreach ($flexed as $index => &$element) { - if ($width === 0 && ! ($element->getProperties()['styles']['contentRepeat'] ?? false)) { - continue; - } - - $float = $width / count($flexed); - $elementWidth = floor($float); - - if ($index === count($flexed) - 1) { - $elementWidth += ($float - floor($float)) * count($flexed); - } - - $element->addStyle("w-{$elementWidth}"); - } - - return $elements; - } - - /** - * Applies the space between the elements. - * - * @param array $elements - * @return array - */ - private function applyJustifyBetween(array $elements): array - { - if (count($elements) <= 1) { - return $elements; - } - - [$totalWidth, $parentWidth] = $this->getWidthFromElements($elements); - $space = ($parentWidth - $totalWidth) / (count($elements) - 1); - - if ($space < 1) { - return $elements; - } - - $arr = []; - - foreach ($elements as $index => &$element) { - if ($index !== 0) { - // Since there is no float pixel, on the last one it should round up... - $length = $index === count($elements) - 1 ? ceil($space) : floor($space); - $arr[] = str_repeat(' ', (int) $length); - } - - $arr[] = $element; - } - - return $arr; - } - - /** - * Applies the space between and around the elements. - * - * @param array $elements - * @return array - */ - private function applyJustifyEvenly(array $elements): array - { - [$totalWidth, $parentWidth] = $this->getWidthFromElements($elements); - $space = ($parentWidth - $totalWidth) / (count($elements) + 1); - - if ($space < 1) { - return $elements; - } - - $arr = []; - foreach ($elements as &$element) { - $arr[] = str_repeat(' ', (int) floor($space)); - $arr[] = $element; - } - - $decimals = ceil(($space - floor($space)) * (count($elements) + 1)); - $arr[] = str_repeat(' ', (int) (floor($space) + $decimals)); - - return $arr; - } - - /** - * Applies the space around the elements. - * - * @param array $elements - * @return array - */ - private function applyJustifyAround(array $elements): array - { - if (count($elements) === 0) { - return $elements; - } - - [$totalWidth, $parentWidth] = $this->getWidthFromElements($elements); - $space = ($parentWidth - $totalWidth) / count($elements); - - if ($space < 1) { - return $elements; - } - - $contentSize = $totalWidth; - $arr = []; - - foreach ($elements as $index => &$element) { - if ($index !== 0) { - $arr[] = str_repeat(' ', (int) ceil($space)); - $contentSize += ceil($space); - } - - $arr[] = $element; - } - - return [ - str_repeat(' ', (int) floor(($parentWidth - $contentSize) / 2)), - ...$arr, - str_repeat(' ', (int) ceil(($parentWidth - $contentSize) / 2)), - ]; - } - - /** - * Applies the space on before first element and after last element. - * - * @param array $elements - * @return array - */ - private function applyJustifyCenter(array $elements): array - { - [$totalWidth, $parentWidth] = $this->getWidthFromElements($elements); - $space = $parentWidth - $totalWidth; - - if ($space < 1) { - return $elements; - } - - return [ - str_repeat(' ', (int) floor($space / 2)), - ...$elements, - str_repeat(' ', (int) ceil($space / 2)), - ]; - } - - /** - * Gets the total width for the elements and their parent width. - * - * @param array $elements - * @return int[] - */ - private function getWidthFromElements(array $elements) - { - $totalWidth = (int) array_reduce($elements, fn ($carry, $element) => $carry += $element->getLength(), 0); - $parentWidth = Styles::getParentWidth($elements[0]->getProperties()['parentStyles'] ?? []); - - return [$totalWidth, $parentWidth]; - } -} diff --git a/vendor/nunomaduro/termwind/src/Html/PreRenderer.php b/vendor/nunomaduro/termwind/src/Html/PreRenderer.php deleted file mode 100644 index e97048cb..00000000 --- a/vendor/nunomaduro/termwind/src/Html/PreRenderer.php +++ /dev/null @@ -1,46 +0,0 @@ -getHtml()); - if (reset($lines) === '') { - array_shift($lines); - } - - if (end($lines) === '') { - array_pop($lines); - } - - $maxStrLen = array_reduce( - $lines, - static fn (int $max, string $line) => ($max < strlen($line)) ? strlen($line) : $max, - 0 - ); - - $styles = $node->getClassAttribute(); - $html = array_map( - static fn (string $line) => (string) Termwind::div(str_pad($line, $maxStrLen + 3), $styles), - $lines - ); - - return Termwind::raw( - implode('', $html) - ); - } -} diff --git a/vendor/nunomaduro/termwind/src/Html/TableRenderer.php b/vendor/nunomaduro/termwind/src/Html/TableRenderer.php deleted file mode 100644 index 60b73d4e..00000000 --- a/vendor/nunomaduro/termwind/src/Html/TableRenderer.php +++ /dev/null @@ -1,251 +0,0 @@ -output = new BufferedOutput( - // Content should output as is, without changes - OutputInterface::VERBOSITY_NORMAL | OutputInterface::OUTPUT_RAW, - true - ); - - $this->table = new Table($this->output); - } - - /** - * Converts table output to the content element. - */ - public function toElement(Node $node): Element - { - $this->parseTable($node); - $this->table->render(); - - $content = preg_replace('/\n$/', '', $this->output->fetch()) ?? ''; - - return Termwind::div($content, '', [ - 'isFirstChild' => $node->isFirstChild(), - ]); - } - - /** - * Looks for thead, tfoot, tbody, tr elements in a given DOM and appends rows from them to the Symfony table object. - */ - private function parseTable(Node $node): void - { - $style = $node->getAttribute('style'); - if ($style !== '') { - $this->table->setStyle($style); - } - - foreach ($node->getChildNodes() as $child) { - match ($child->getName()) { - 'thead' => $this->parseHeader($child), - 'tfoot' => $this->parseFoot($child), - 'tbody' => $this->parseBody($child), - default => $this->parseRows($child) - }; - } - } - - /** - * Looks for table header title and tr elements in a given thead DOM node and adds them to the Symfony table object. - */ - private function parseHeader(Node $node): void - { - $title = $node->getAttribute('title'); - - if ($title !== '') { - $this->table->getStyle()->setHeaderTitleFormat( - $this->parseTitleStyle($node) - ); - $this->table->setHeaderTitle($title); - } - - foreach ($node->getChildNodes() as $child) { - if ($child->isName('tr')) { - foreach ($this->parseRow($child) as $row) { - if (! is_array($row)) { - continue; - } - $this->table->setHeaders($row); - } - } - } - } - - /** - * Looks for table footer and tr elements in a given tfoot DOM node and adds them to the Symfony table object. - */ - private function parseFoot(Node $node): void - { - $title = $node->getAttribute('title'); - - if ($title !== '') { - $this->table->getStyle()->setFooterTitleFormat( - $this->parseTitleStyle($node) - ); - $this->table->setFooterTitle($title); - } - - foreach ($node->getChildNodes() as $child) { - if ($child->isName('tr')) { - $rows = iterator_to_array($this->parseRow($child)); - if (count($rows) > 0) { - $this->table->addRow(new TableSeparator()); - $this->table->addRows($rows); - } - } - } - } - - /** - * Looks for tr elements in a given DOM node and adds them to the Symfony table object. - */ - private function parseBody(Node $node): void - { - foreach ($node->getChildNodes() as $child) { - if ($child->isName('tr')) { - $this->parseRows($child); - } - } - } - - /** - * Parses table tr elements. - */ - private function parseRows(Node $node): void - { - foreach ($this->parseRow($node) as $row) { - $this->table->addRow($row); - } - } - - /** - * Looks for th, td elements in a given DOM node and converts them to a table cells. - * - * @return Iterator|TableSeparator> - */ - private function parseRow(Node $node): Iterator - { - $row = []; - - foreach ($node->getChildNodes() as $child) { - if ($child->isName('th') || $child->isName('td')) { - $align = $child->getAttribute('align'); - - $class = $child->getClassAttribute(); - - if ($child->isName('th')) { - $class .= ' strong'; - } - - $text = (string) (new HtmlRenderer)->parse( - trim(preg_replace('//', "\n", $child->getHtml()) ?? '') - ); - - if ((bool) preg_match(Styles::STYLING_REGEX, $text)) { - $class .= ' font-normal'; - } - - $row[] = new TableCell( - // I need only spaces after applying margin, padding and width except tags. - // There is no place for tags, they broke cell formatting. - (string) Termwind::span($text, $class), - [ - // Gets rowspan and colspan from tr and td tag attributes - 'colspan' => max((int) $child->getAttribute('colspan'), 1), - 'rowspan' => max((int) $child->getAttribute('rowspan'), 1), - - // There are background and foreground and options - 'style' => $this->parseCellStyle( - $class, - $align === '' ? TableCellStyle::DEFAULT_ALIGN : $align - ), - ] - ); - } - } - - if ($row !== []) { - yield $row; - } - - $border = (int) $node->getAttribute('border'); - for ($i = $border; $i--; $i > 0) { - yield new TableSeparator(); - } - } - - /** - * Parses tr, td tag class attribute and passes bg, fg and options to a table cell style. - */ - private function parseCellStyle(string $styles, string $align = TableCellStyle::DEFAULT_ALIGN): TableCellStyle - { - // I use this empty span for getting styles for bg, fg and options - // It will be a good idea to get properties without element object and then pass them to an element object - $element = Termwind::span('%s', $styles); - - $styles = []; - - $colors = $element->getProperties()['colors'] ?? []; - - foreach ($colors as $option => $content) { - if (in_array($option, ['fg', 'bg'], true)) { - $content = is_array($content) ? array_pop($content) : $content; - - $styles[] = "$option=$content"; - } - } - - // If there are no styles we don't need extra tags - if ($styles === []) { - $cellFormat = '%s'; - } else { - $cellFormat = '<'.implode(';', $styles).'>%s'; - } - - return new TableCellStyle([ - 'align' => $align, - 'cellFormat' => $cellFormat, - ]); - } - - /** - * Get styled representation of title. - */ - private function parseTitleStyle(Node $node): string - { - return (string) Termwind::span(' %s ', $node->getClassAttribute()); - } -} diff --git a/vendor/nunomaduro/termwind/src/HtmlRenderer.php b/vendor/nunomaduro/termwind/src/HtmlRenderer.php deleted file mode 100644 index 568c946a..00000000 --- a/vendor/nunomaduro/termwind/src/HtmlRenderer.php +++ /dev/null @@ -1,116 +0,0 @@ -parse($html)->render($options); - } - - /** - * Parses the given html. - */ - public function parse(string $html): Components\Element - { - $dom = new DOMDocument(); - - if (strip_tags($html) === $html) { - return Termwind::span($html); - } - - $html = ''.trim($html); - $dom->loadHTML($html, LIBXML_NOERROR | LIBXML_COMPACT | LIBXML_HTML_NODEFDTD | LIBXML_NOBLANKS | LIBXML_NOXMLDECL); - - /** @var DOMNode $body */ - $body = $dom->getElementsByTagName('body')->item(0); - $el = $this->convert(new Node($body)); - - // @codeCoverageIgnoreStart - return is_string($el) - ? Termwind::span($el) - : $el; - // @codeCoverageIgnoreEnd - } - - /** - * Convert a tree of DOM nodes to a tree of termwind elements. - */ - private function convert(Node $node): Components\Element|string - { - $children = []; - - if ($node->isName('table')) { - return (new TableRenderer)->toElement($node); - } elseif ($node->isName('code')) { - return (new CodeRenderer)->toElement($node); - } elseif ($node->isName('pre')) { - return (new PreRenderer)->toElement($node); - } - - foreach ($node->getChildNodes() as $child) { - $children[] = $this->convert($child); - } - - $children = array_filter($children, fn ($child) => $child !== ''); - - return $this->toElement($node, $children); - } - - /** - * Convert a given DOM node to it's termwind element equivalent. - * - * @param array $children - */ - private function toElement(Node $node, array $children): Components\Element|string - { - if ($node->isText() || $node->isComment()) { - return (string) $node; - } - - /** @var array $properties */ - $properties = [ - 'isFirstChild' => $node->isFirstChild(), - ]; - - $styles = $node->getClassAttribute(); - - return match ($node->getName()) { - 'body' => $children[0], // Pick only the first element from the body node - 'div' => Termwind::div($children, $styles, $properties), - 'p' => Termwind::paragraph($children, $styles, $properties), - 'ul' => Termwind::ul($children, $styles, $properties), - 'ol' => Termwind::ol($children, $styles, $properties), - 'li' => Termwind::li($children, $styles, $properties), - 'dl' => Termwind::dl($children, $styles, $properties), - 'dt' => Termwind::dt($children, $styles, $properties), - 'dd' => Termwind::dd($children, $styles, $properties), - 'span' => Termwind::span($children, $styles, $properties), - 'br' => Termwind::breakLine($styles, $properties), - 'strong' => Termwind::span($children, $styles, $properties)->strong(), - 'b' => Termwind::span($children, $styles, $properties)->fontBold(), - 'em', 'i' => Termwind::span($children, $styles, $properties)->italic(), - 'u' => Termwind::span($children, $styles, $properties)->underline(), - 's' => Termwind::span($children, $styles, $properties)->lineThrough(), - 'a' => Termwind::anchor($children, $styles, $properties)->href($node->getAttribute('href')), - 'hr' => Termwind::hr($styles, $properties), - default => Termwind::div($children, $styles, $properties), - }; - } -} diff --git a/vendor/nunomaduro/termwind/src/Laravel/TermwindServiceProvider.php b/vendor/nunomaduro/termwind/src/Laravel/TermwindServiceProvider.php deleted file mode 100644 index d071ec02..00000000 --- a/vendor/nunomaduro/termwind/src/Laravel/TermwindServiceProvider.php +++ /dev/null @@ -1,22 +0,0 @@ -app->resolving(OutputStyle::class, function ($style): void { - Termwind::renderUsing($style->getOutput()); - }); - } -} diff --git a/vendor/nunomaduro/termwind/src/Question.php b/vendor/nunomaduro/termwind/src/Question.php deleted file mode 100644 index 289f8667..00000000 --- a/vendor/nunomaduro/termwind/src/Question.php +++ /dev/null @@ -1,93 +0,0 @@ -helper = $helper ?? new QuestionHelper(); - } - - /** - * Sets the streamable input implementation. - */ - public static function setStreamableInput(StreamableInputInterface|null $streamableInput): void - { - self::$streamableInput = $streamableInput ?? new ArgvInput(); - } - - /** - * Gets the streamable input implementation. - */ - public static function getStreamableInput(): StreamableInputInterface - { - return self::$streamableInput ??= new ArgvInput(); - } - - /** - * Renders a prompt to the user. - * - * @param iterable|null $autocomplete - */ - public function ask(string $question, iterable $autocomplete = null): mixed - { - $html = (new HtmlRenderer)->parse($question)->toString(); - - $question = new SymfonyQuestion($html); - - if ($autocomplete !== null) { - $question->setAutocompleterValues($autocomplete); - } - - $output = Termwind::getRenderer(); - - if ($output instanceof SymfonyStyle) { - $property = (new ReflectionClass(SymfonyStyle::class)) - ->getProperty('questionHelper'); - - $property->setAccessible(true); - - $currentHelper = $property->isInitialized($output) - ? $property->getValue($output) - : new SymfonyQuestionHelper(); - - $property->setValue($output, new QuestionHelper); - - try { - return $output->askQuestion($question); - } finally { - $property->setValue($output, $currentHelper); - } - } - - return $this->helper->ask( - self::getStreamableInput(), - Termwind::getRenderer(), - $question, - ); - } -} diff --git a/vendor/nunomaduro/termwind/src/Repositories/Styles.php b/vendor/nunomaduro/termwind/src/Repositories/Styles.php deleted file mode 100644 index 6dbada5e..00000000 --- a/vendor/nunomaduro/termwind/src/Repositories/Styles.php +++ /dev/null @@ -1,59 +0,0 @@ - - */ - private static array $storage = []; - - /** - * Creates a new style from the given arguments. - * - * @param (Closure(StylesValueObject $element, string|int ...$arguments): StylesValueObject)|null $callback - * @return Style - */ - public static function create(string $name, Closure $callback = null): Style - { - self::$storage[$name] = $style = new Style( - $callback ?? static fn (StylesValueObject $styles) => $styles - ); - - return $style; - } - - /** - * Removes all existing styles. - */ - public static function flush(): void - { - self::$storage = []; - } - - /** - * Checks a style with the given name exists. - */ - public static function has(string $name): bool - { - return array_key_exists($name, self::$storage); - } - - /** - * Gets the style with the given name. - */ - public static function get(string $name): Style - { - return self::$storage[$name]; - } -} diff --git a/vendor/nunomaduro/termwind/src/Terminal.php b/vendor/nunomaduro/termwind/src/Terminal.php deleted file mode 100644 index 6b74885b..00000000 --- a/vendor/nunomaduro/termwind/src/Terminal.php +++ /dev/null @@ -1,50 +0,0 @@ -terminal = $terminal ?? new ConsoleTerminal(); - } - - /** - * Gets the terminal width. - */ - public function width(): int - { - return $this->terminal->getWidth(); - } - - /** - * Gets the terminal height. - */ - public function height(): int - { - return $this->terminal->getHeight(); - } - - /** - * Clears the terminal screen. - */ - public function clear(): void - { - Termwind::getRenderer()->write("\ec"); - } -} diff --git a/vendor/nunomaduro/termwind/src/Termwind.php b/vendor/nunomaduro/termwind/src/Termwind.php deleted file mode 100644 index 0ce1b515..00000000 --- a/vendor/nunomaduro/termwind/src/Termwind.php +++ /dev/null @@ -1,300 +0,0 @@ -|string $content - * @param array $properties - */ - public static function div(array|string $content = '', string $styles = '', array $properties = []): Components\Div - { - $content = self::prepareElements($content, $styles); - - return Components\Div::fromStyles( - self::getRenderer(), $content, $styles, $properties - ); - } - - /** - * Creates a paragraph element instance. - * - * @param array|string $content - * @param array $properties - */ - public static function paragraph(array|string $content = '', string $styles = '', array $properties = []): Components\Paragraph - { - $content = self::prepareElements($content, $styles); - - return Components\Paragraph::fromStyles( - self::getRenderer(), $content, $styles, $properties - ); - } - - /** - * Creates a span element instance with the given style. - * - * @param array|string $content - * @param array $properties - */ - public static function span(array|string $content = '', string $styles = '', array $properties = []): Components\Span - { - $content = self::prepareElements($content, $styles); - - return Components\Span::fromStyles( - self::getRenderer(), $content, $styles, $properties - ); - } - - /** - * Creates an element instance with raw content. - * - * @param array|string $content - */ - public static function raw(array|string $content = ''): Components\Raw - { - return Components\Raw::fromStyles( - self::getRenderer(), $content - ); - } - - /** - * Creates an anchor element instance with the given style. - * - * @param array|string $content - * @param array $properties - */ - public static function anchor(array|string $content = '', string $styles = '', array $properties = []): Components\Anchor - { - $content = self::prepareElements($content, $styles); - - return Components\Anchor::fromStyles( - self::getRenderer(), $content, $styles, $properties - ); - } - - /** - * Creates an unordered list instance. - * - * @param array $content - * @param array $properties - */ - public static function ul(array $content = [], string $styles = '', array $properties = []): Components\Ul - { - $ul = Components\Ul::fromStyles( - self::getRenderer(), '', $styles, $properties - ); - - $content = self::prepareElements( - $content, - $styles, - static function ($li) use ($ul): string|Element { - if (is_string($li)) { - return $li; - } - - if (! $li instanceof Components\Li) { - throw new InvalidChild('Unordered lists only accept `li` as child'); - } - - return match (true) { - $li->hasStyle('list-none') => $li, - $ul->hasStyle('list-none') => $li->addStyle('list-none'), - $ul->hasStyle('list-square') => $li->addStyle('list-square'), - $ul->hasStyle('list-disc') => $li->addStyle('list-disc'), - default => $li->addStyle('list-none'), - }; - } - ); - - return $ul->setContent($content); - } - - /** - * Creates an ordered list instance. - * - * @param array $content - * @param array $properties - */ - public static function ol(array $content = [], string $styles = '', array $properties = []): Components\Ol - { - $ol = Components\Ol::fromStyles( - self::getRenderer(), '', $styles, $properties - ); - - $index = 0; - - $content = self::prepareElements( - $content, - $styles, - static function ($li) use ($ol, &$index): string|Element { - if (is_string($li)) { - return $li; - } - - if (! $li instanceof Components\Li) { - throw new InvalidChild('Ordered lists only accept `li` as child'); - } - - return match (true) { - $li->hasStyle('list-none') => $li->addStyle('list-none'), - $ol->hasStyle('list-none') => $li->addStyle('list-none'), - $ol->hasStyle('list-decimal') => $li->addStyle('list-decimal-'.(++$index)), - default => $li->addStyle('list-none'), - }; - } - ); - - return $ol->setContent($content); - } - - /** - * Creates a list item instance. - * - * @param array|string $content - * @param array $properties - */ - public static function li(array|string $content = '', string $styles = '', array $properties = []): Components\Li - { - $content = self::prepareElements($content, $styles); - - return Components\Li::fromStyles( - self::getRenderer(), $content, $styles, $properties - ); - } - - /** - * Creates a description list instance. - * - * @param array $content - * @param array $properties - */ - public static function dl(array $content = [], string $styles = '', array $properties = []): Components\Dl - { - $content = self::prepareElements( - $content, - $styles, - static function ($element): string|Element { - if (is_string($element)) { - return $element; - } - - if (! $element instanceof Components\Dt && ! $element instanceof Components\Dd) { - throw new InvalidChild('Description lists only accept `dt` and `dd` as children'); - } - - return $element; - } - ); - - return Components\Dl::fromStyles( - self::getRenderer(), $content, $styles, $properties - ); - } - - /** - * Creates a description term instance. - * - * @param array|string $content - * @param array $properties - */ - public static function dt(array|string $content = '', string $styles = '', array $properties = []): Components\Dt - { - $content = self::prepareElements($content, $styles); - - return Components\Dt::fromStyles( - self::getRenderer(), $content, $styles, $properties - ); - } - - /** - * Creates a description details instance. - * - * @param array|string $content - * @param array $properties - */ - public static function dd(array|string $content = '', string $styles = '', array $properties = []): Components\Dd - { - $content = self::prepareElements($content, $styles); - - return Components\Dd::fromStyles( - self::getRenderer(), $content, $styles, $properties - ); - } - - /** - * Creates a horizontal rule instance. - * - * @param array $properties - */ - public static function hr(string $styles = '', array $properties = []): Components\Hr - { - return Components\Hr::fromStyles( - self::getRenderer(), '', $styles, $properties - ); - } - - /** - * Creates an break line element instance. - * - * @param array $properties - */ - public static function breakLine(string $styles = '', array $properties = []): Components\BreakLine - { - return Components\BreakLine::fromStyles( - self::getRenderer(), '', $styles, $properties - ); - } - - /** - * Gets the current renderer instance. - */ - public static function getRenderer(): OutputInterface - { - return self::$renderer ??= new ConsoleOutput(); - } - - /** - * Convert child elements to a string. - * - * @param array|string $elements - * @return array - */ - private static function prepareElements($elements, string $styles = '', Closure|null $callback = null): array - { - if ($callback === null) { - $callback = static fn ($element): string|Element => $element; - } - - $elements = is_array($elements) ? $elements : [$elements]; - - return array_map($callback, $elements); - } -} diff --git a/vendor/nunomaduro/termwind/src/ValueObjects/Node.php b/vendor/nunomaduro/termwind/src/ValueObjects/Node.php deleted file mode 100644 index 4f82a5d2..00000000 --- a/vendor/nunomaduro/termwind/src/ValueObjects/Node.php +++ /dev/null @@ -1,205 +0,0 @@ -node->nodeValue ?? ''; - } - - /** - * Gets child nodes of the node. - * - * @return Generator - */ - public function getChildNodes(): Generator - { - foreach ($this->node->childNodes as $node) { - yield new static($node); - } - } - - /** - * Checks if the node is a text. - */ - public function isText(): bool - { - return $this->node instanceof \DOMText; - } - - /** - * Checks if the node is a comment. - */ - public function isComment(): bool - { - return $this->node instanceof \DOMComment; - } - - /** - * Compares the current node name with a given name. - */ - public function isName(string $name): bool - { - return $this->getName() === $name; - } - - /** - * Returns the current node type name. - */ - public function getName(): string - { - return $this->node->nodeName; - } - - /** - * Returns value of [class] attribute. - */ - public function getClassAttribute(): string - { - return $this->getAttribute('class'); - } - - /** - * Returns value of attribute with a given name. - */ - public function getAttribute(string $name): string - { - if ($this->node instanceof \DOMElement) { - return $this->node->getAttribute($name); - } - - return ''; - } - - /** - * Checks if the node is empty. - */ - public function isEmpty(): bool - { - return $this->isText() && preg_replace('/\s+/', '', $this->getValue()) === ''; - } - - /** - * Gets the previous sibling from the node. - */ - public function getPreviousSibling(): static|null - { - $node = $this->node; - - while ($node = $node->previousSibling) { - $node = new static($node); - - if ($node->isEmpty()) { - $node = $node->node; - - continue; - } - - if (! $node->isComment()) { - return $node; - } - - $node = $node->node; - } - - return is_null($node) ? null : new static($node); - } - - /** - * Gets the next sibling from the node. - */ - public function getNextSibling(): static|null - { - $node = $this->node; - - while ($node = $node->nextSibling) { - $node = new static($node); - - if ($node->isEmpty()) { - $node = $node->node; - - continue; - } - - if (! $node->isComment()) { - return $node; - } - - $node = $node->node; - } - - return is_null($node) ? null : new static($node); - } - - /** - * Checks if the node is the first child. - */ - public function isFirstChild(): bool - { - return is_null($this->getPreviousSibling()); - } - - /** - * Gets the inner HTML representation of the node including child nodes. - */ - public function getHtml(): string - { - $html = ''; - foreach ($this->node->childNodes as $child) { - if ($child->ownerDocument instanceof \DOMDocument) { - $html .= $child->ownerDocument->saveXML($child); - } - } - - return html_entity_decode($html); - } - - /** - * Converts the node to a string. - */ - public function __toString(): string - { - if ($this->isComment()) { - return ''; - } - - if ($this->getValue() === ' ') { - return ' '; - } - - if ($this->isEmpty()) { - return ''; - } - - $text = preg_replace('/\s+/', ' ', $this->getValue()) ?? ''; - - if (is_null($this->getPreviousSibling())) { - $text = ltrim($text); - } - - if (is_null($this->getNextSibling())) { - $text = rtrim($text); - } - - return $text; - } -} diff --git a/vendor/nunomaduro/termwind/src/ValueObjects/Style.php b/vendor/nunomaduro/termwind/src/ValueObjects/Style.php deleted file mode 100644 index bc96e58a..00000000 --- a/vendor/nunomaduro/termwind/src/ValueObjects/Style.php +++ /dev/null @@ -1,70 +0,0 @@ -callback; - - $this->callback = static function ( - Styles $formatter, - string|int ...$arguments - ) use ($callback, $styles): Styles { - $formatter = $callback($formatter, ...$arguments); - - return StyleToMethod::multiple($formatter, $styles); - }; - } - - /** - * Sets the color to the style. - */ - public function color(string $color): void - { - if (preg_match('/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/', $color) < 1) { - throw new InvalidColor(sprintf('The color %s is invalid.', $color)); - } - - $this->color = $color; - } - - /** - * Gets the color. - */ - public function getColor(): string - { - return $this->color; - } - - /** - * Styles the given formatter with this style. - */ - public function __invoke(Styles $styles, string|int ...$arguments): Styles - { - return ($this->callback)($styles, ...$arguments); - } -} diff --git a/vendor/nunomaduro/termwind/src/ValueObjects/Styles.php b/vendor/nunomaduro/termwind/src/ValueObjects/Styles.php deleted file mode 100644 index 04140cff..00000000 --- a/vendor/nunomaduro/termwind/src/ValueObjects/Styles.php +++ /dev/null @@ -1,1061 +0,0 @@ -|\\e\[\d+m/"; - - /** @var array */ - private array $styles = []; - - private ?Element $element = null; - - /** - * Creates a Style formatter instance. - * - * @param array $properties - * @param array, array): string> $textModifiers - * @param array): string> $styleModifiers - * @param string[] $defaultStyles - */ - final public function __construct( - private array $properties = [ - 'colors' => [], - 'options' => [], - 'isFirstChild' => false, - ], - private array $textModifiers = [], - private array $styleModifiers = [], - private array $defaultStyles = [] - ) { - } - - /** - * @param Element $element - * @return $this - */ - public function setElement(Element $element): self - { - $this->element = $element; - - return $this; - } - - /** - * Gets default styles. - * - * @return string[] - */ - public function defaultStyles(): array - { - return $this->defaultStyles; - } - - /** - * Gets the element's style properties. - * - * @return array - */ - final public function getProperties(): array - { - return $this->properties; - } - - /** - * Sets the element's style properties. - * - * @param array $properties - */ - public function setProperties(array $properties): self - { - $this->properties = $properties; - - return $this; - } - - /** - * Sets the styles to the element. - */ - final public function setStyle(string $style): self - { - $this->styles = array_unique(array_merge($this->styles, [$style])); - - return $this; - } - - /** - * Checks if the element has the style. - */ - final public function hasStyle(string $style): bool - { - return in_array($style, $this->styles, true); - } - - /** - * Adds a style to the element. - */ - final public function addStyle(string $style): self - { - return StyleToMethod::multiple($this, $style); - } - - /** - * Inherit styles from given Styles object. - */ - final public function inheritFromStyles(self $styles): self - { - foreach (['ml', 'mr', 'pl', 'pr', 'width', 'minWidth', 'maxWidth', 'spaceY', 'spaceX'] as $style) { - $this->properties['parentStyles'][$style] = array_merge( - $this->properties['parentStyles'][$style] ?? [], - $styles->properties['parentStyles'][$style] ?? [] - ); - - $this->properties['parentStyles'][$style][] = $styles->properties['styles'][$style] ?? 0; - } - - $this->properties['parentStyles']['justifyContent'] = $styles->properties['styles']['justifyContent'] ?? false; - - foreach (['bg', 'fg'] as $colorType) { - $value = (array) ($this->properties['colors'][$colorType] ?? []); - $parentValue = (array) ($styles->properties['colors'][$colorType] ?? []); - - if ($value === [] && $parentValue !== []) { - $this->properties['colors'][$colorType] = $styles->properties['colors'][$colorType]; - } - } - - if (! is_null($this->properties['options']['bold'] ?? null) || - ! is_null($styles->properties['options']['bold'] ?? null)) { - $this->properties['options']['bold'] = $this->properties['options']['bold'] - ?? $styles->properties['options']['bold'] - ?? false; - } - - return $this; - } - - /** - * Adds a background color to the element. - */ - final public function bg(string $color, int $variant = 0): self - { - return $this->with(['colors' => [ - 'bg' => $this->getColorVariant($color, $variant), - ]]); - } - - /** - * Adds a bold style to the element. - */ - final public function fontBold(): self - { - return $this->with(['options' => [ - 'bold' => true, - ]]); - } - - /** - * Removes the bold style on the element. - */ - final public function fontNormal(): self - { - return $this->with(['options' => [ - 'bold' => false, - ]]); - } - - /** - * Adds a bold style to the element. - */ - final public function strong(): self - { - $this->styleModifiers[__METHOD__] = static fn ($text): string => sprintf("\e[1m%s\e[0m", $text); - - return $this; - } - - /** - * Adds an italic style to the element. - */ - final public function italic(): self - { - $this->styleModifiers[__METHOD__] = static fn ($text): string => sprintf("\e[3m%s\e[0m", $text); - - return $this; - } - - /** - * Adds an underline style. - */ - final public function underline(): self - { - $this->styleModifiers[__METHOD__] = static fn ($text): string => sprintf("\e[4m%s\e[0m", $text); - - return $this; - } - - /** - * Adds the given margin left to the element. - */ - final public function ml(int $margin): self - { - return $this->with(['styles' => [ - 'ml' => $margin, - ]]); - } - - /** - * Adds the given margin right to the element. - */ - final public function mr(int $margin): self - { - return $this->with(['styles' => [ - 'mr' => $margin, - ]]); - } - - /** - * Adds the given margin bottom to the element. - */ - final public function mb(int $margin): self - { - return $this->with(['styles' => [ - 'mb' => $margin, - ]]); - } - - /** - * Adds the given margin top to the element. - */ - final public function mt(int $margin): self - { - return $this->with(['styles' => [ - 'mt' => $margin, - ]]); - } - - /** - * Adds the given horizontal margin to the element. - */ - final public function mx(int $margin): self - { - return $this->with(['styles' => [ - 'ml' => $margin, - 'mr' => $margin, - ]]); - } - - /** - * Adds the given vertical margin to the element. - */ - final public function my(int $margin): self - { - return $this->with(['styles' => [ - 'mt' => $margin, - 'mb' => $margin, - ]]); - } - - /** - * Adds the given margin to the element. - */ - final public function m(int $margin): self - { - return $this->my($margin)->mx($margin); - } - - /** - * Adds the given padding left to the element. - */ - final public function pl(int $padding): static - { - return $this->with(['styles' => [ - 'pl' => $padding, - ]]); - } - - /** - * Adds the given padding right. - */ - final public function pr(int $padding): static - { - return $this->with(['styles' => [ - 'pr' => $padding, - ]]); - } - - /** - * Adds the given horizontal padding. - */ - final public function px(int $padding): self - { - return $this->pl($padding)->pr($padding); - } - - /** - * Adds the given padding top. - */ - final public function pt(int $padding): static - { - return $this->with(['styles' => [ - 'pt' => $padding, - ]]); - } - - /** - * Adds the given padding bottom. - */ - final public function pb(int $padding): static - { - return $this->with(['styles' => [ - 'pb' => $padding, - ]]); - } - - /** - * Adds the given vertical padding. - */ - final public function py(int $padding): self - { - return $this->pt($padding)->pb($padding); - } - - /** - * Adds the given padding. - */ - final public function p(int $padding): self - { - return $this->pt($padding)->pr($padding)->pb($padding)->pl($padding); - } - - /** - * Adds the given vertical margin to the childs, ignoring the first child. - */ - final public function spaceY(int $space): self - { - return $this->with(['styles' => [ - 'spaceY' => $space, - ]]); - } - - /** - * Adds the given horizontal margin to the childs, ignoring the first child. - */ - final public function spaceX(int $space): self - { - return $this->with(['styles' => [ - 'spaceX' => $space, - ]]); - } - - /** - * Adds a border on top of each element. - */ - final public function borderT(int $width = 1): self - { - if (! $this->element instanceof Hr) { - throw new InvalidStyle('`border-t` can only be used on an "hr" element.'); - } - - $this->styleModifiers[__METHOD__] = function ($text, $styles): string { - $length = $this->getLength($text); - if ($length < 1) { - $margins = (int) ($styles['ml'] ?? 0) + ($styles['mr'] ?? 0); - - return str_repeat('─', self::getParentWidth($this->properties['parentStyles'] ?? []) - $margins); - } - - return str_repeat('─', $length); - }; - - return $this; - } - - /** - * Adds a text alignment or color to the element. - */ - final public function text(string $value, int $variant = 0): self - { - if (in_array($value, ['left', 'right', 'center'], true)) { - return $this->with(['styles' => [ - 'text-align' => $value, - ]]); - } - - return $this->with(['colors' => [ - 'fg' => $this->getColorVariant($value, $variant), - ]]); - } - - /** - * Truncates the text of the element. - */ - final public function truncate(int $limit = 0, string $end = '…'): self - { - $this->textModifiers[__METHOD__] = function ($text, $styles) use ($limit, $end): string { - $width = $styles['width'] ?? 0; - - if (is_string($width)) { - $width = self::calcWidthFromFraction( - $width, - $styles, - $this->properties['parentStyles'] ?? [] - ); - } - - [, $paddingRight, , $paddingLeft] = $this->getPaddings(); - $width -= $paddingRight + $paddingLeft; - - $limit = $limit > 0 ? $limit : $width; - if ($limit === 0) { - return $text; - } - - $limit -= mb_strwidth($end, 'UTF-8'); - - if ($this->getLength($text) <= $limit) { - return $text; - } - - return rtrim(self::trimText($text, $limit).$end); - }; - - return $this; - } - - /** - * Forces the width of the element. - */ - final public function w(int|string $width): static - { - return $this->with(['styles' => [ - 'width' => $width, - ]]); - } - - /** - * Forces the element width to the full width of the terminal. - */ - final public function wFull(): static - { - return $this->w('1/1'); - } - - /** - * Removes the width set on the element. - */ - final public function wAuto(): static - { - return $this->with(['styles' => [ - 'width' => null, - ]]); - } - - /** - * Defines a minimum width of an element. - */ - final public function minW(int|string $width): static - { - return $this->with(['styles' => [ - 'minWidth' => $width, - ]]); - } - - /** - * Defines a maximum width of an element. - */ - final public function maxW(int|string $width): static - { - return $this->with(['styles' => [ - 'maxWidth' => $width, - ]]); - } - - /** - * Makes the element's content uppercase. - */ - final public function uppercase(): self - { - $this->textModifiers[__METHOD__] = static fn ($text): string => mb_strtoupper($text, 'UTF-8'); - - return $this; - } - - /** - * Makes the element's content lowercase. - */ - final public function lowercase(): self - { - $this->textModifiers[__METHOD__] = static fn ($text): string => mb_strtolower($text, 'UTF-8'); - - return $this; - } - - /** - * Makes the element's content capitalize. - */ - final public function capitalize(): self - { - $this->textModifiers[__METHOD__] = static fn ($text): string => mb_convert_case($text, MB_CASE_TITLE, 'UTF-8'); - - return $this; - } - - /** - * Makes the element's content in snakecase. - */ - final public function snakecase(): self - { - $this->textModifiers[__METHOD__] = static fn ($text): string => mb_strtolower( - (string) preg_replace(['/([a-z\d])([A-Z])/', '/([^_])([A-Z][a-z])/'], '$1_$2', $text), - 'UTF-8' - ); - - return $this; - } - - /** - * Makes the element's content with a line through. - */ - final public function lineThrough(): self - { - $this->styleModifiers[__METHOD__] = static fn ($text): string => sprintf("\e[9m%s\e[0m", $text); - - return $this; - } - - /** - * Makes the element's content invisible. - */ - final public function invisible(): self - { - $this->styleModifiers[__METHOD__] = static fn ($text): string => sprintf("\e[8m%s\e[0m", $text); - - return $this; - } - - /** - * Do not display element's content. - */ - final public function hidden(): self - { - return $this->with(['styles' => [ - 'display' => 'hidden', - ]]); - } - - /** - * Makes a line break before the element's content. - */ - final public function block(): self - { - return $this->with(['styles' => [ - 'display' => 'block', - ]]); - } - - /** - * Makes an element eligible to work with flex-1 element's style. - */ - final public function flex(): self - { - return $this->with(['styles' => [ - 'display' => 'flex', - ]]); - } - - /** - * Makes an element grow and shrink as needed, ignoring the initial size. - */ - final public function flex1(): self - { - return $this->with(['styles' => [ - 'flex-1' => true, - ]]); - } - - /** - * Justifies childs along the element with an equal amount of space between. - */ - final public function justifyBetween(): self - { - return $this->with(['styles' => [ - 'justifyContent' => 'between', - ]]); - } - - /** - * Justifies childs along the element with an equal amount of space between - * each item and half around. - */ - final public function justifyAround(): self - { - return $this->with(['styles' => [ - 'justifyContent' => 'around', - ]]); - } - - /** - * Justifies childs along the element with an equal amount of space around each item. - */ - final public function justifyEvenly(): self - { - return $this->with(['styles' => [ - 'justifyContent' => 'evenly', - ]]); - } - - /** - * Justifies childs along the center of the container’s main axis. - */ - final public function justifyCenter(): self - { - return $this->with(['styles' => [ - 'justifyContent' => 'center', - ]]); - } - - /** - * Repeats the string given until it fills all the content. - */ - final public function contentRepeat(string $string): self - { - $string = preg_replace("/\[?'?([^'|\]]+)'?\]?/", '$1', $string) ?? ''; - - $this->textModifiers[__METHOD__] = static fn (): string => str_repeat($string, (int) floor(terminal()->width() / mb_strlen($string, 'UTF-8'))); - - return $this->with(['styles' => [ - 'contentRepeat' => true, - ]]); - } - - /** - * Prepends text to the content. - */ - final public function prepend(string $string): self - { - $this->textModifiers[__METHOD__] = static fn ($text): string => $string.$text; - - return $this; - } - - /** - * Appends text to the content. - */ - final public function append(string $string): self - { - $this->textModifiers[__METHOD__] = static fn ($text): string => $text.$string; - - return $this; - } - - /** - * Prepends the list style type to the content. - */ - final public function list(string $type, int $index = 0): self - { - if (! $this->element instanceof Ul && ! $this->element instanceof Ol && ! $this->element instanceof Li) { - throw new InvalidStyle(sprintf( - 'Style list-none cannot be used with %s', - $this->element !== null ? $this->element::class : 'unknown element' - )); - } - - if (! $this->element instanceof Li) { - return $this; - } - - return match ($type) { - 'square' => $this->prepend('▪ '), - 'disc' => $this->prepend('• '), - 'decimal' => $this->prepend(sprintf('%d. ', $index)), - default => $this, - }; - } - - /** - * Adds the given properties to the element. - * - * @param array $properties - */ - public function with(array $properties): self - { - $this->properties = array_replace_recursive($this->properties, $properties); - - return $this; - } - - /** - * Sets the href property to the element. - */ - final public function href(string $href): self - { - $href = str_replace('%', '%%', $href); - - return $this->with(['href' => array_filter([$href])]); - } - - /** - * Formats a given string. - */ - final public function format(string $content): string - { - foreach ($this->textModifiers as $modifier) { - $content = $modifier( - $content, - $this->properties['styles'] ?? [], - $this->properties['parentStyles'] ?? [] - ); - } - - $content = $this->applyWidth($content); - - foreach ($this->styleModifiers as $modifier) { - $content = $modifier($content, $this->properties['styles'] ?? []); - } - - return $this->applyStyling($content); - } - - /** - * Get the format string including required styles. - */ - private function getFormatString(): string - { - $styles = []; - - /** @var array $href */ - $href = $this->properties['href'] ?? []; - if ($href !== []) { - $styles[] = sprintf('href=%s', array_pop($href)); - } - - $colors = $this->properties['colors'] ?? []; - - foreach ($colors as $option => $content) { - if (in_array($option, ['fg', 'bg'], true)) { - $content = is_array($content) ? array_pop($content) : $content; - - $styles[] = "$option=$content"; - } - } - - $options = $this->properties['options'] ?? []; - - if ($options !== []) { - $options = array_keys(array_filter( - $options, fn ($option) => $option === true - )); - $styles[] = count($options) > 0 - ? 'options='.implode(',', $options) - : 'options=,'; - } - - // If there are no styles we don't need extra tags - if ($styles === []) { - return '%s%s%s%s%s'; - } - - return '%s<'.implode(';', $styles).'>%s%s%s%s'; - } - - /** - * Get the margins applied to the element. - * - * @return array{0: int, 1: int, 2: int, 3: int} - */ - private function getMargins(): array - { - $isFirstChild = (bool) $this->properties['isFirstChild']; - - $spaceY = $this->properties['parentStyles']['spaceY'] ?? []; - $spaceY = ! $isFirstChild ? end($spaceY) : 0; - - $spaceX = $this->properties['parentStyles']['spaceX'] ?? []; - $spaceX = ! $isFirstChild ? end($spaceX) : 0; - - return [ - $spaceY > 0 ? $spaceY : $this->properties['styles']['mt'] ?? 0, - $this->properties['styles']['mr'] ?? 0, - $this->properties['styles']['mb'] ?? 0, - $spaceX > 0 ? $spaceX : $this->properties['styles']['ml'] ?? 0, - ]; - } - - /** - * Get the paddings applied to the element. - * - * @return array{0: int, 1: int, 2: int, 3: int} - */ - private function getPaddings(): array - { - return [ - $this->properties['styles']['pt'] ?? 0, - $this->properties['styles']['pr'] ?? 0, - $this->properties['styles']['pb'] ?? 0, - $this->properties['styles']['pl'] ?? 0, - ]; - } - - /** - * It applies the correct width for the content. - */ - private function applyWidth(string $content): string - { - $styles = $this->properties['styles'] ?? []; - $minWidth = $styles['minWidth'] ?? -1; - $width = max($styles['width'] ?? -1, $minWidth); - $maxWidth = $styles['maxWidth'] ?? 0; - - if ($width < 0) { - return $content; - } - - if ($width === 0) { - return ''; - } - - if (is_string($width)) { - $width = self::calcWidthFromFraction( - $width, - $styles, - $this->properties['parentStyles'] ?? [] - ); - } - - if ($maxWidth > 0) { - $width = min($styles['maxWidth'], $width); - } - - $width -= ($styles['pl'] ?? 0) + ($styles['pr'] ?? 0); - $length = $this->getLength($content); - - preg_match_all("/\n+/", $content, $matches); - - $width *= count($matches[0] ?? []) + 1; - $width += mb_strlen($matches[0][0] ?? '', 'UTF-8'); - - if ($length <= $width) { - $space = $width - $length; - - return match ($styles['text-align'] ?? '') { - 'right' => str_repeat(' ', $space).$content, - 'center' => str_repeat(' ', (int) floor($space / 2)).$content.str_repeat(' ', (int) ceil($space / 2)), - default => $content.str_repeat(' ', $space), - }; - } - - return self::trimText($content, $width); - } - - /** - * It applies the styling for the content. - */ - private function applyStyling(string $content): string - { - $display = $this->properties['styles']['display'] ?? 'inline'; - - if ($display === 'hidden') { - return ''; - } - - $isFirstChild = (bool) $this->properties['isFirstChild']; - - [$marginTop, $marginRight, $marginBottom, $marginLeft] = $this->getMargins(); - [$paddingTop, $paddingRight, $paddingBottom, $paddingLeft] = $this->getPaddings(); - - $content = (string) preg_replace('/\r[ \t]?/', "\n", - (string) preg_replace( - '/\n/', - str_repeat(' ', $marginRight + $paddingRight) - ."\n". - str_repeat(' ', $marginLeft + $paddingLeft), - $content) - ); - - $formatted = sprintf( - $this->getFormatString(), - str_repeat(' ', $marginLeft), - str_repeat(' ', $paddingLeft), - $content, - str_repeat(' ', $paddingRight), - str_repeat(' ', $marginRight), - ); - - $empty = str_replace( - $content, - str_repeat(' ', $this->getLength($content)), - $formatted - ); - - $items = []; - - if (in_array($display, ['block', 'flex'], true) && ! $isFirstChild) { - $items[] = "\n"; - } - - if ($marginTop > 0) { - $items[] = str_repeat("\n", $marginTop); - } - - if ($paddingTop > 0) { - $items[] = $empty."\n"; - } - - $items[] = $formatted; - - if ($paddingBottom > 0) { - $items[] = "\n".$empty; - } - - if ($marginBottom > 0) { - $items[] = str_repeat("\n", $marginBottom); - } - - return implode('', $items); - } - - /** - * Get the length of the text provided without the styling tags. - */ - public function getLength(string $text = null): int - { - return mb_strlen(preg_replace( - self::STYLING_REGEX, - '', - $text ?? $this->element?->toString() ?? '' - ) ?? '', 'UTF-8'); - } - - /** - * Get the length of the element without margins. - */ - public function getInnerWidth(): int - { - $innerLength = $this->getLength(); - [, $marginRight, , $marginLeft] = $this->getMargins(); - - return $innerLength - $marginLeft - $marginRight; - } - - /** - * Get the constant variant color from Color class. - */ - private function getColorVariant(string $color, int $variant): string - { - if ($variant > 0) { - $color .= '-'.$variant; - } - - if (StyleRepository::has($color)) { - return StyleRepository::get($color)->getColor(); - } - - $colorConstant = mb_strtoupper(str_replace('-', '_', $color), 'UTF-8'); - - if (! defined(Color::class."::$colorConstant")) { - throw new ColorNotFound($colorConstant); - } - - return constant(Color::class."::$colorConstant"); - } - - /** - * Calculates the width based on the fraction provided. - * - * @param array $styles - * @param array> $parentStyles - */ - private static function calcWidthFromFraction(string $fraction, array $styles, array $parentStyles): int - { - $width = self::getParentWidth($parentStyles); - - preg_match('/(\d+)\/(\d+)/', $fraction, $matches); - - if (count($matches) !== 3 || $matches[2] === '0') { - throw new InvalidStyle(sprintf('Style [%s] is invalid.', "w-$fraction")); - } - - /** @@phpstan-ignore-next-line */ - $width = (int) floor($width * $matches[1] / $matches[2]); - $width -= ($styles['ml'] ?? 0) + ($styles['mr'] ?? 0); - - return $width; - } - - /** - * Gets the width of the parent element. - * - * @param array> $styles - */ - public static function getParentWidth(array $styles): int - { - $width = terminal()->width(); - foreach ($styles['width'] ?? [] as $index => $parentWidth) { - $minWidth = (int) $styles['minWidth'][$index]; - $maxWidth = (int) $styles['maxWidth'][$index]; - $margins = (int) $styles['ml'][$index] + (int) $styles['mr'][$index]; - - $parentWidth = max($parentWidth, $minWidth); - - if ($parentWidth < 1) { - $parentWidth = $width; - } elseif (is_int($parentWidth)) { - $parentWidth += $margins; - } - - preg_match('/(\d+)\/(\d+)/', (string) $parentWidth, $matches); - - $width = count($matches) !== 3 - ? (int) $parentWidth - : (int) floor($width * $matches[1] / $matches[2]); //@phpstan-ignore-line - - if ($maxWidth > 0) { - $width = min($maxWidth, $width); - } - - $width -= $margins; - $width -= (int) $styles['pl'][$index] + (int) $styles['pr'][$index]; - } - - return $width; - } - - /** - * It trims the text properly ignoring all escape codes and - * `` tags. - */ - private static function trimText(string $text, int $width): string - { - preg_match_all(self::STYLING_REGEX, $text, $matches, PREG_OFFSET_CAPTURE); - $text = rtrim(mb_strimwidth(preg_replace(self::STYLING_REGEX, '', $text) ?? '', 0, $width, '', 'UTF-8')); - - foreach ($matches[0] ?? [] as [$part, $index]) { - $text = substr($text, 0, $index).$part.substr($text, $index, null); - } - - return $text; - } -} diff --git a/vendor/openspout/openspout/LICENSE b/vendor/openspout/openspout/LICENSE deleted file mode 100644 index 38ce746d..00000000 --- a/vendor/openspout/openspout/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2022 openspout - -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/vendor/openspout/openspout/LICENSE-for-cc42c1d b/vendor/openspout/openspout/LICENSE-for-cc42c1d deleted file mode 100644 index 167ec4d6..00000000 --- a/vendor/openspout/openspout/LICENSE-for-cc42c1d +++ /dev/null @@ -1,166 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS diff --git a/vendor/openspout/openspout/README.md b/vendor/openspout/openspout/README.md deleted file mode 100644 index a94eb45a..00000000 --- a/vendor/openspout/openspout/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# OpenSpout - -[![Latest Stable Version](https://poser.pugx.org/openspout/openspout/v/stable)](https://packagist.org/packages/openspout/openspout) -[![Total Downloads](https://poser.pugx.org/openspout/openspout/downloads)](https://packagist.org/packages/openspout/openspout) -[![Build Status](https://github.com/openspout/openspout/actions/workflows/ci.yml/badge.svg)](https://github.com/openspout/openspout/actions/workflows/ci.yml) -[![Infection MSI](https://img.shields.io/endpoint?style=flat&url=https%3A%2F%2Fbadge-api.stryker-mutator.io%2Fgithub.com%2Fopenspout%2Fopenspout%2F4.x)](https://dashboard.stryker-mutator.io/reports/github.com/openspout/openspout/4.x) - -OpenSpout is a community driven fork of `box/spout`, a PHP library to read and write spreadsheet files -(CSV, XLSX and ODS), in a fast and scalable way. Unlike other file readers or writers, it is capable of processing -very large files, while keeping the memory usage really low (less than 3MB). - -## Documentation - -Documentation can be found at [`docs/`](docs). - -## Upgrade from `box/spout:v3` to `openspout/openspout:v3` - -1. Replace `box/spout` with `openspout/openspout` in your `composer.json` -2. Replace `Box\Spout` with `OpenSpout` in your code - -## Upgrade guide - -Version 4 introduced new functionality but also some breaking changes. If you want to upgrade your OpenSpout codebase -please consult the [Upgrade guide](UPGRADE.md). - -## Copyright and License - -This is a fork of Box's Spout library: https://github.com/box/spout - -Code until and directly descending from commit [`cc42c1d`](https://github.com/openspout/openspout/commit/cc42c1d29fc5d29f07caeace99bd29dbb6d7c2f8) -is copyright of _Box, Inc._ and licensed under the Apache License, Version 2.0: - -https://github.com/openspout/openspout/blob/cc42c1d29fc5d29f07caeace99bd29dbb6d7c2f8/LICENSE - -Code created, edited and released after the commit mentioned above -is copyright of _openspout_ Github organization and licensed under MIT License. - -https://github.com/openspout/openspout/blob/main/LICENSE diff --git a/vendor/openspout/openspout/UPGRADE.md b/vendor/openspout/openspout/UPGRADE.md deleted file mode 100644 index d8327fa6..00000000 --- a/vendor/openspout/openspout/UPGRADE.md +++ /dev/null @@ -1,162 +0,0 @@ -# Upgrade guide - -## Upgrading from 3.x to 4.0 - -Beginning with v4, only actively supported [PHP version](https://www.php.net/supported-versions.php) will be supported. -Removing support for EOLed PHP versions as well adding support for new PHP versions will be included in MINOR releases. - -### Most notable changes - -1. OpenSpout is now fully typed -2. Classes and interfaces not consumed by the user are now marked as `@internal` -3. Classes used by the user are all `final` - -### Reader & Writer objects - -Both readers and writers have to be naturally instantiated with `new` keyword, passing the eventual needed `Options` -class as the first argument: - -```php -use OpenSpout\Reader\CSV\Reader; -use OpenSpout\Reader\CSV\Options; - -$options = new Options(); -$options->FIELD_DELIMITER = '|'; -$options->FIELD_ENCLOSURE = '@'; -$reader = new Reader($options); -``` - -### Cell types on writes - -Cell types are now handled with separate classes: - -```php -use OpenSpout\Common\Entity\Cell; -use OpenSpout\Common\Entity\Row; - -$row = new Row([ - new Cell\BooleanCell(true), - new Cell\DateIntervalCell(new DateInterval('P1D')), - new Cell\DateTimeCell(new DateTimeImmutable('now')), - new Cell\EmptyCell(null), - new Cell\FormulaCell('=SUM(A1:A2)'), - new Cell\NumericCell(3), - new Cell\StringCell('foo'), -]); -``` - -Auto-typing is still available though: - -```php -use OpenSpout\Common\Entity\Cell; -use OpenSpout\Common\Entity\Row; - -$cell = Cell::fromValue(true); // Instance of Cell\BooleanCell - -$row = Row::fromValues([ - true, - new DateInterval('P1D'), - new DateTimeImmutable('now'), - null, - '=SUM(A1:A2)', - 3, - 'foo', -]); -``` - -## Upgrading from 2.x to 3.0 - -OpenSpout 3.0 introduced several backwards-incompatible changes. The upgrade from OpenSpout 2.x to 3.0 must therefore -be done with caution. -This guide is meant to ease this process. - -### Most notable changes - -In 2.x, styles were applied per row; it was therefore impossible to apply different styles to cells in the same row. -With the 3.0 version, this is now possible: each cell can have its own style. - -OpenSpout 3.0 tries to enforce better typing. For instance, instead of using/returning generic arrays, OpenSpout now -makes use of specific `Row` and `Cell` objects that can encapsulate more data such as type, style, value. - -Finally, **_OpenSpout 3.2 only supports PHP 7.2 and above_**, as other PHP versions are no longer supported by the -community. - -### Reader changes - -Creating a reader should now be done through the Reader `ReaderEntityFactory`, instead of using the `ReaderFactory`. -Also, the `ReaderFactory::create($type)` method was removed and replaced by methods for each reader: - -```php -use OpenSpout\Reader\Common\Creator\ReaderEntityFactory; // namespace is no longer "OpenSpout\Reader" - -$reader = ReaderEntityFactory::createXLSXReader(); // replaces ReaderFactory::create(Type::XLSX) -$reader = ReaderEntityFactory::createCSVReader(); // replaces ReaderFactory::create(Type::CSV) -$reader = ReaderEntityFactory::createODSReader(); // replaces ReaderFactory::create(Type::ODS) -``` - -When iterating over the spreadsheet rows, OpenSpout now returns `Row` objects, instead of an array containing row -values. Accessing the row values should now be done this way: - -```php -foreach ($reader->getSheetIterator() as $sheet) { - foreach ($sheet->getRowIterator() as $row) { // $row is a "Row" object, not an array - $rowAsArray = $row->toArray(); // this is the 2.x equivalent - // OR - $cellsArray = $row->getCells(); // this can be used to get access to cells' details - ... - } -} -``` - -### Writer changes - -Writer creation follows the same change as the reader. It should now be done through the Writer `WriterEntityFactory`, -instead of using the `WriterFactory`. -Also, the `WriterFactory::create($type)` method was removed and replaced by methods for each writer: - -```php -use OpenSpout\Writer\Common\Creator\WriterEntityFactory; // namespace is no longer "OpenSpout\Writer" - -$writer = WriterEntityFactory::createXLSXWriter(); // replaces WriterFactory::create(Type::XLSX) -$writer = WriterEntityFactory::createCSVWriter(); // replaces WriterFactory::create(Type::CSV) -$writer = WriterEntityFactory::createODSWriter(); // replaces WriterFactory::create(Type::ODS) -``` - -Adding rows is also done differently: instead of passing an array, the writer now takes in a `Row` object (or an -array of `Row`). Creating such objects can easily be done this way: -```php -// Adding a row from an array of values (2.x equivalent) -$cellValues = ['foo', 12345]; -$row1 = WriterEntityFactory::createRowFromArray($cellValues, $rowStyle); - -// Adding a row from an array of Cell -$cell1 = WriterEntityFactory::createCell('foo', $cellStyle1); // this cell has its own style -$cell2 = WriterEntityFactory::createCell(12345, $cellStyle2); // this cell has its own style -$row2 = WriterEntityFactory::createRow([$cell1, $cell2]); - -$writer->addRows([$row1, $row2]); -``` - -### Namespace changes for styles - -The namespaces for styles have changed. Styles are still created by using a `builder` class. - -For the builder, please update your import statements to use the following namespaces: - - OpenSpout\Writer\Common\Creator\Style\StyleBuilder - OpenSpout\Writer\Common\Creator\Style\BorderBuilder - -The `Style` base class and style definitions like `Border`, `BorderPart` and `Color` also have a new namespace. - -If your are using these classes directly via an import statement in your code, please use the following namespaces: - - OpenSpout\Common\Entity\Style\Border - OpenSpout\Common\Entity\Style\BorderPart - OpenSpout\Common\Entity\Style\Color - OpenSpout\Common\Entity\Style\Style - -### Handling of empty rows - -In 2.x, empty rows were not added to the spreadsheet. -In 3.0, `addRow` now always writes a row to the spreadsheet: when the row does not contain any cells, an empty row -is created in the sheet. diff --git a/vendor/openspout/openspout/composer.json b/vendor/openspout/openspout/composer.json deleted file mode 100644 index ffc36db5..00000000 --- a/vendor/openspout/openspout/composer.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "name": "openspout/openspout", - "description": "PHP Library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way", - "license": "MIT", - "type": "library", - "keywords": [ - "php", - "read", - "write", - "csv", - "xlsx", - "ods", - "odf", - "open", - "office", - "excel", - "spreadsheet", - "scale", - "memory", - "stream", - "ooxml" - ], - "authors": [ - { - "name": "Adrien Loison", - "email": "adrien@box.com" - } - ], - "homepage": "https://github.com/openspout/openspout", - "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", - "ext-dom": "*", - "ext-fileinfo": "*", - "ext-filter": "*", - "ext-libxml": "*", - "ext-xmlreader": "*", - "ext-zip": "*" - }, - "require-dev": { - "ext-zlib": "*", - "friendsofphp/php-cs-fixer": "^3.46.0", - "infection/infection": "^0.27.9", - "phpbench/phpbench": "^1.2.15", - "phpstan/phpstan": "^1.10.55", - "phpstan/phpstan-phpunit": "^1.3.15", - "phpstan/phpstan-strict-rules": "^1.5.2", - "phpunit/phpunit": "^10.5.5" - }, - "suggest": { - "ext-iconv": "To handle non UTF-8 CSV files (if \"php-mbstring\" is not already installed or is too limited)", - "ext-mbstring": "To handle non UTF-8 CSV files (if \"iconv\" is not already installed)" - }, - "autoload": { - "psr-4": { - "OpenSpout\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "OpenSpout\\Benchmarks\\": "benchmarks/" - }, - "classmap": [ - "tests/" - ] - }, - "config": { - "allow-plugins": { - "infection/extension-installer": true - } - }, - "extra": { - "branch-alias": { - "dev-master": "3.3.x-dev" - } - } -} diff --git a/vendor/openspout/openspout/renovate.json b/vendor/openspout/openspout/renovate.json deleted file mode 100644 index 47bca6b0..00000000 --- a/vendor/openspout/openspout/renovate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": [ - "local>Slamdunk/.github:renovate-config" - ] -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Cell.php b/vendor/openspout/openspout/src/Common/Entity/Cell.php deleted file mode 100644 index af76d4de..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Cell.php +++ /dev/null @@ -1,65 +0,0 @@ -setStyle($style); - } - - abstract public function getValue(): null|bool|DateInterval|DateTimeInterface|float|int|string; - - final public function setStyle(?Style $style): void - { - $this->style = $style ?? new Style(); - } - - final public function getStyle(): Style - { - return $this->style; - } - - final public static function fromValue(null|bool|DateInterval|DateTimeInterface|float|int|string $value, ?Style $style = null): self - { - if (\is_bool($value)) { - return new BooleanCell($value, $style); - } - if (null === $value || '' === $value) { - return new EmptyCell($value, $style); - } - if (\is_int($value) || \is_float($value)) { - return new NumericCell($value, $style); - } - if ($value instanceof DateTimeInterface) { - return new DateTimeCell($value, $style); - } - if ($value instanceof DateInterval) { - return new DateIntervalCell($value, $style); - } - if (isset($value[0]) && '=' === $value[0]) { - return new FormulaCell($value, $style, null); - } - - return new StringCell($value, $style); - } -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Cell/BooleanCell.php b/vendor/openspout/openspout/src/Common/Entity/Cell/BooleanCell.php deleted file mode 100644 index ecba8e8c..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Cell/BooleanCell.php +++ /dev/null @@ -1,24 +0,0 @@ -value = $value; - parent::__construct($style); - } - - public function getValue(): bool - { - return $this->value; - } -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Cell/DateIntervalCell.php b/vendor/openspout/openspout/src/Common/Entity/Cell/DateIntervalCell.php deleted file mode 100644 index 65d30861..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Cell/DateIntervalCell.php +++ /dev/null @@ -1,31 +0,0 @@ -value = $value; - parent::__construct($style); - } - - public function getValue(): DateInterval - { - return $this->value; - } -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Cell/DateTimeCell.php b/vendor/openspout/openspout/src/Common/Entity/Cell/DateTimeCell.php deleted file mode 100644 index bced4006..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Cell/DateTimeCell.php +++ /dev/null @@ -1,25 +0,0 @@ -value = $value; - parent::__construct($style); - } - - public function getValue(): DateTimeInterface - { - return $this->value; - } -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Cell/EmptyCell.php b/vendor/openspout/openspout/src/Common/Entity/Cell/EmptyCell.php deleted file mode 100644 index 72678b96..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Cell/EmptyCell.php +++ /dev/null @@ -1,24 +0,0 @@ -value = $value; - parent::__construct($style); - } - - public function getValue(): ?string - { - return $this->value; - } -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Cell/ErrorCell.php b/vendor/openspout/openspout/src/Common/Entity/Cell/ErrorCell.php deleted file mode 100644 index 53a445e9..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Cell/ErrorCell.php +++ /dev/null @@ -1,29 +0,0 @@ -value = $value; - parent::__construct($style); - } - - public function getValue(): ?string - { - return null; - } - - public function getRawValue(): string - { - return $this->value; - } -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Cell/FormulaCell.php b/vendor/openspout/openspout/src/Common/Entity/Cell/FormulaCell.php deleted file mode 100644 index 2e07a96c..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Cell/FormulaCell.php +++ /dev/null @@ -1,31 +0,0 @@ -value; - } - - public function getComputedValue(): null|DateInterval|DateTimeImmutable|float|int|string - { - return $this->computedValue; - } -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Cell/NumericCell.php b/vendor/openspout/openspout/src/Common/Entity/Cell/NumericCell.php deleted file mode 100644 index ee5d0eaa..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Cell/NumericCell.php +++ /dev/null @@ -1,24 +0,0 @@ -value = $value; - parent::__construct($style); - } - - public function getValue(): float|int - { - return $this->value; - } -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Cell/StringCell.php b/vendor/openspout/openspout/src/Common/Entity/Cell/StringCell.php deleted file mode 100644 index 85397945..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Cell/StringCell.php +++ /dev/null @@ -1,24 +0,0 @@ -value = $value; - parent::__construct($style); - } - - public function getValue(): string - { - return $this->value; - } -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Comment/Comment.php b/vendor/openspout/openspout/src/Common/Entity/Comment/Comment.php deleted file mode 100644 index 47753df4..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Comment/Comment.php +++ /dev/null @@ -1,47 +0,0 @@ -textRuns[] = $textRun; - } - - /** - * The TextRuns for this comment. - * - * @return TextRun[] - */ - public function getTextRuns(): array - { - return $this->textRuns; - } -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Comment/TextRun.php b/vendor/openspout/openspout/src/Common/Entity/Comment/TextRun.php deleted file mode 100644 index 16bc23eb..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Comment/TextRun.php +++ /dev/null @@ -1,23 +0,0 @@ -text = $text; - } -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Row.php b/vendor/openspout/openspout/src/Common/Entity/Row.php deleted file mode 100644 index 5715b9f9..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Row.php +++ /dev/null @@ -1,156 +0,0 @@ -setCells($cells) - ->setStyle($style) - ; - } - - /** - * @param list $cellValues - */ - public static function fromValues(array $cellValues = [], ?Style $rowStyle = null): self - { - $cells = array_map(static function (null|bool|DateInterval|DateTimeInterface|float|int|string $cellValue): Cell { - return Cell::fromValue($cellValue); - }, $cellValues); - - return new self($cells, $rowStyle); - } - - /** - * @return Cell[] $cells - */ - public function getCells(): array - { - return $this->cells; - } - - /** - * @param Cell[] $cells - */ - public function setCells(array $cells): self - { - $this->cells = []; - foreach ($cells as $cell) { - $this->addCell($cell); - } - - return $this; - } - - public function setCellAtIndex(Cell $cell, int $cellIndex): self - { - $this->cells[$cellIndex] = $cell; - - return $this; - } - - public function getCellAtIndex(int $cellIndex): ?Cell - { - return $this->cells[$cellIndex] ?? null; - } - - public function addCell(Cell $cell): self - { - $this->cells[] = $cell; - - return $this; - } - - public function getNumCells(): int - { - // When using "setCellAtIndex", it's possible to - // have "$this->cells" contain holes. - if ([] === $this->cells) { - return 0; - } - - return max(array_keys($this->cells)) + 1; - } - - public function getStyle(): Style - { - return $this->style; - } - - public function setStyle(?Style $style): self - { - $this->style = $style ?? new Style(); - - return $this; - } - - /** - * Set row height. - */ - public function setHeight(float $height): self - { - $this->height = $height; - - return $this; - } - - /** - * Returns row height. - */ - public function getHeight(): float - { - return $this->height; - } - - /** - * @return list The row values, as array - */ - public function toArray(): array - { - return array_map(static function (Cell $cell): null|bool|DateInterval|DateTimeInterface|float|int|string { - return $cell->getValue(); - }, $this->cells); - } - - /** - * Detect whether a row is considered empty. - * An empty row has all of its cells empty. - */ - public function isEmpty(): bool - { - foreach ($this->cells as $cell) { - if (!$cell instanceof Cell\EmptyCell) { - return false; - } - } - - return true; - } -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Style/Border.php b/vendor/openspout/openspout/src/Common/Entity/Style/Border.php deleted file mode 100644 index 487edaa3..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Style/Border.php +++ /dev/null @@ -1,46 +0,0 @@ - */ - private array $parts; - - public function __construct(BorderPart ...$borderParts) - { - foreach ($borderParts as $borderPart) { - $this->parts[$borderPart->getName()] = $borderPart; - } - } - - public function getPart(string $name): ?BorderPart - { - return $this->parts[$name] ?? null; - } - - /** - * @return array - */ - public function getParts(): array - { - return $this->parts; - } -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Style/BorderPart.php b/vendor/openspout/openspout/src/Common/Entity/Style/BorderPart.php deleted file mode 100644 index 8bd9a1ab..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Style/BorderPart.php +++ /dev/null @@ -1,90 +0,0 @@ -name = $name; - $this->color = $color; - $this->width = $width; - $this->style = $style; - } - - public function getName(): string - { - return $this->name; - } - - public function getStyle(): string - { - return $this->style; - } - - public function getColor(): string - { - return $this->color; - } - - public function getWidth(): string - { - return $this->width; - } -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Style/CellAlignment.php b/vendor/openspout/openspout/src/Common/Entity/Style/CellAlignment.php deleted file mode 100644 index 48d4da3a..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Style/CellAlignment.php +++ /dev/null @@ -1,31 +0,0 @@ - 1, - self::RIGHT => 1, - self::CENTER => 1, - self::JUSTIFY => 1, - ]; - - /** - * @return bool Whether the given cell alignment is valid - */ - public static function isValid(string $cellAlignment): bool - { - return isset(self::VALID_ALIGNMENTS[$cellAlignment]); - } -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Style/CellVerticalAlignment.php b/vendor/openspout/openspout/src/Common/Entity/Style/CellVerticalAlignment.php deleted file mode 100644 index 2a38fdf6..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Style/CellVerticalAlignment.php +++ /dev/null @@ -1,37 +0,0 @@ - 1, - self::BASELINE => 1, - self::BOTTOM => 1, - self::CENTER => 1, - self::DISTRIBUTED => 1, - self::JUSTIFY => 1, - self::TOP => 1, - ]; - - /** - * @return bool Whether the given cell vertical alignment is valid - */ - public static function isValid(string $cellVerticalAlignment): bool - { - return isset(self::VALID_ALIGNMENTS[$cellVerticalAlignment]); - } -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Style/Color.php b/vendor/openspout/openspout/src/Common/Entity/Style/Color.php deleted file mode 100644 index e4ee1e70..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Style/Color.php +++ /dev/null @@ -1,88 +0,0 @@ - 255) { - throw new InvalidColorException("The RGB components must be between 0 and 255. Received: {$colorComponent}"); - } - } - - /** - * Converts the color component to its corresponding hexadecimal value. - * - * @param int $colorComponent Color component, 0 - 255 - * - * @return string Corresponding hexadecimal value, with a leading 0 if needed. E.g "0f", "2d" - */ - private static function convertColorComponentToHex(int $colorComponent): string - { - return str_pad(dechex($colorComponent), 2, '0', STR_PAD_LEFT); - } -} diff --git a/vendor/openspout/openspout/src/Common/Entity/Style/Style.php b/vendor/openspout/openspout/src/Common/Entity/Style/Style.php deleted file mode 100644 index 22e4c7ec..00000000 --- a/vendor/openspout/openspout/src/Common/Entity/Style/Style.php +++ /dev/null @@ -1,467 +0,0 @@ -id); - - return $this->id; - } - - public function setId(int $id): self - { - $this->id = $id; - - return $this; - } - - public function getBorder(): ?Border - { - return $this->border; - } - - public function setBorder(Border $border): self - { - $this->border = $border; - $this->isEmpty = false; - - return $this; - } - - public function isFontBold(): bool - { - return $this->fontBold; - } - - public function setFontBold(): self - { - $this->fontBold = true; - $this->hasSetFontBold = true; - $this->shouldApplyFont = true; - $this->isEmpty = false; - - return $this; - } - - public function hasSetFontBold(): bool - { - return $this->hasSetFontBold; - } - - public function isFontItalic(): bool - { - return $this->fontItalic; - } - - public function setFontItalic(): self - { - $this->fontItalic = true; - $this->hasSetFontItalic = true; - $this->shouldApplyFont = true; - $this->isEmpty = false; - - return $this; - } - - public function hasSetFontItalic(): bool - { - return $this->hasSetFontItalic; - } - - public function isFontUnderline(): bool - { - return $this->fontUnderline; - } - - public function setFontUnderline(): self - { - $this->fontUnderline = true; - $this->hasSetFontUnderline = true; - $this->shouldApplyFont = true; - $this->isEmpty = false; - - return $this; - } - - public function hasSetFontUnderline(): bool - { - return $this->hasSetFontUnderline; - } - - public function isFontStrikethrough(): bool - { - return $this->fontStrikethrough; - } - - public function setFontStrikethrough(): self - { - $this->fontStrikethrough = true; - $this->hasSetFontStrikethrough = true; - $this->shouldApplyFont = true; - $this->isEmpty = false; - - return $this; - } - - public function hasSetFontStrikethrough(): bool - { - return $this->hasSetFontStrikethrough; - } - - public function getFontSize(): int - { - return $this->fontSize; - } - - /** - * @param int $fontSize Font size, in pixels - */ - public function setFontSize(int $fontSize): self - { - $this->fontSize = $fontSize; - $this->hasSetFontSize = true; - $this->shouldApplyFont = true; - $this->isEmpty = false; - - return $this; - } - - public function hasSetFontSize(): bool - { - return $this->hasSetFontSize; - } - - public function getFontColor(): string - { - return $this->fontColor; - } - - /** - * Sets the font color. - * - * @param string $fontColor ARGB color (@see Color) - */ - public function setFontColor(string $fontColor): self - { - $this->fontColor = $fontColor; - $this->hasSetFontColor = true; - $this->shouldApplyFont = true; - $this->isEmpty = false; - - return $this; - } - - public function hasSetFontColor(): bool - { - return $this->hasSetFontColor; - } - - public function getFontName(): string - { - return $this->fontName; - } - - /** - * @param string $fontName Name of the font to use - */ - public function setFontName(string $fontName): self - { - $this->fontName = $fontName; - $this->hasSetFontName = true; - $this->shouldApplyFont = true; - $this->isEmpty = false; - - return $this; - } - - public function hasSetFontName(): bool - { - return $this->hasSetFontName; - } - - public function getCellAlignment(): string - { - return $this->cellAlignment; - } - - public function getCellVerticalAlignment(): string - { - return $this->cellVerticalAlignment; - } - - /** - * @param string $cellAlignment The cell alignment - */ - public function setCellAlignment(string $cellAlignment): self - { - if (!CellAlignment::isValid($cellAlignment)) { - throw new InvalidArgumentException('Invalid cell alignment value'); - } - - $this->cellAlignment = $cellAlignment; - $this->hasSetCellAlignment = true; - $this->shouldApplyCellAlignment = true; - $this->isEmpty = false; - - return $this; - } - - /** - * @param string $cellVerticalAlignment The cell vertical alignment - */ - public function setCellVerticalAlignment(string $cellVerticalAlignment): self - { - if (!CellVerticalAlignment::isValid($cellVerticalAlignment)) { - throw new InvalidArgumentException('Invalid cell vertical alignment value'); - } - - $this->cellVerticalAlignment = $cellVerticalAlignment; - $this->hasSetCellVerticalAlignment = true; - $this->shouldApplyCellVerticalAlignment = true; - $this->isEmpty = false; - - return $this; - } - - public function hasSetCellAlignment(): bool - { - return $this->hasSetCellAlignment; - } - - public function hasSetCellVerticalAlignment(): bool - { - return $this->hasSetCellVerticalAlignment; - } - - /** - * @return bool Whether specific cell alignment should be applied - */ - public function shouldApplyCellAlignment(): bool - { - return $this->shouldApplyCellAlignment; - } - - public function shouldApplyCellVerticalAlignment(): bool - { - return $this->shouldApplyCellVerticalAlignment; - } - - public function shouldWrapText(): bool - { - return $this->shouldWrapText; - } - - /** - * @param bool $shouldWrap Should the text be wrapped - */ - public function setShouldWrapText(bool $shouldWrap = true): self - { - $this->shouldWrapText = $shouldWrap; - $this->hasSetWrapText = true; - $this->isEmpty = false; - - return $this; - } - - public function hasSetWrapText(): bool - { - return $this->hasSetWrapText; - } - - /** - * @return bool Whether specific font properties should be applied - */ - public function shouldApplyFont(): bool - { - return $this->shouldApplyFont; - } - - /** - * Sets the background color. - * - * @param string $color ARGB color (@see Color) - */ - public function setBackgroundColor(string $color): self - { - $this->backgroundColor = $color; - $this->isEmpty = false; - - return $this; - } - - public function getBackgroundColor(): ?string - { - return $this->backgroundColor; - } - - /** - * Sets format. - */ - public function setFormat(string $format): self - { - $this->format = $format; - $this->isEmpty = false; - - return $this; - } - - public function getFormat(): ?string - { - return $this->format; - } - - public function isRegistered(): bool - { - return $this->isRegistered; - } - - public function markAsRegistered(?int $id): void - { - $this->setId($id); - $this->isRegistered = true; - } - - public function isEmpty(): bool - { - return $this->isEmpty; - } - - /** - * Sets should shrink to fit. - */ - public function setShouldShrinkToFit(bool $shrinkToFit = true): self - { - $this->hasSetShrinkToFit = true; - $this->shouldShrinkToFit = $shrinkToFit; - - return $this; - } - - /** - * @return bool Whether format should be applied - */ - public function shouldShrinkToFit(): bool - { - return $this->shouldShrinkToFit; - } - - public function hasSetShrinkToFit(): bool - { - return $this->hasSetShrinkToFit; - } -} diff --git a/vendor/openspout/openspout/src/Common/Exception/EncodingConversionException.php b/vendor/openspout/openspout/src/Common/Exception/EncodingConversionException.php deleted file mode 100644 index d08d0ba3..00000000 --- a/vendor/openspout/openspout/src/Common/Exception/EncodingConversionException.php +++ /dev/null @@ -1,7 +0,0 @@ - Map representing the encodings supporting BOMs (key) and their associated BOM (value) */ - private array $supportedEncodingsWithBom; - - private readonly bool $canUseIconv; - - private readonly bool $canUseMbString; - - public function __construct(bool $canUseIconv, bool $canUseMbString) - { - $this->canUseIconv = $canUseIconv; - $this->canUseMbString = $canUseMbString; - - $this->supportedEncodingsWithBom = [ - self::ENCODING_UTF8 => self::BOM_UTF8, - self::ENCODING_UTF16_LE => self::BOM_UTF16_LE, - self::ENCODING_UTF16_BE => self::BOM_UTF16_BE, - self::ENCODING_UTF32_LE => self::BOM_UTF32_LE, - self::ENCODING_UTF32_BE => self::BOM_UTF32_BE, - ]; - } - - public static function factory(): self - { - return new self( - \function_exists('iconv'), - \function_exists('mb_convert_encoding'), - ); - } - - /** - * Returns the number of bytes to use as offset in order to skip the BOM. - * - * @param resource $filePointer Pointer to the file to check - * @param string $encoding Encoding of the file to check - * - * @return int Bytes offset to apply to skip the BOM (0 means no BOM) - */ - public function getBytesOffsetToSkipBOM($filePointer, string $encoding): int - { - $byteOffsetToSkipBom = 0; - - if ($this->hasBOM($filePointer, $encoding)) { - $bomUsed = $this->supportedEncodingsWithBom[$encoding]; - - // we skip the N first bytes - $byteOffsetToSkipBom = \strlen($bomUsed); - } - - return $byteOffsetToSkipBom; - } - - /** - * Attempts to convert a non UTF-8 string into UTF-8. - * - * @param string $string Non UTF-8 string to be converted - * @param string $sourceEncoding The encoding used to encode the source string - * - * @return string The converted, UTF-8 string - * - * @throws EncodingConversionException If conversion is not supported or if the conversion failed - */ - public function attemptConversionToUTF8(?string $string, string $sourceEncoding): ?string - { - return $this->attemptConversion($string, $sourceEncoding, self::ENCODING_UTF8); - } - - /** - * Attempts to convert a UTF-8 string into the given encoding. - * - * @param string $string UTF-8 string to be converted - * @param string $targetEncoding The encoding the string should be re-encoded into - * - * @return string The converted string, encoded with the given encoding - * - * @throws EncodingConversionException If conversion is not supported or if the conversion failed - */ - public function attemptConversionFromUTF8(?string $string, string $targetEncoding): ?string - { - return $this->attemptConversion($string, self::ENCODING_UTF8, $targetEncoding); - } - - /** - * Returns whether the file identified by the given pointer has a BOM. - * - * @param resource $filePointer Pointer to the file to check - * @param string $encoding Encoding of the file to check - * - * @return bool TRUE if the file has a BOM, FALSE otherwise - */ - private function hasBOM($filePointer, string $encoding): bool - { - $hasBOM = false; - - rewind($filePointer); - - if (\array_key_exists($encoding, $this->supportedEncodingsWithBom)) { - $potentialBom = $this->supportedEncodingsWithBom[$encoding]; - $numBytesInBom = \strlen($potentialBom); - - $hasBOM = (fgets($filePointer, $numBytesInBom + 1) === $potentialBom); - } - - return $hasBOM; - } - - /** - * Attempts to convert the given string to the given encoding. - * Depending on what is installed on the server, we will try to iconv or mbstring. - * - * @param string $string string to be converted - * @param string $sourceEncoding The encoding used to encode the source string - * @param string $targetEncoding The encoding the string should be re-encoded into - * - * @return string The converted string, encoded with the given encoding - * - * @throws EncodingConversionException If conversion is not supported or if the conversion failed - */ - private function attemptConversion(?string $string, string $sourceEncoding, string $targetEncoding): ?string - { - // if source and target encodings are the same, it's a no-op - if (null === $string || $sourceEncoding === $targetEncoding) { - return $string; - } - - $convertedString = null; - - if ($this->canUseIconv) { - set_error_handler(static function (): bool { - return true; - }); - - $convertedString = iconv($sourceEncoding, $targetEncoding, $string); - - restore_error_handler(); - } elseif ($this->canUseMbString) { - $errorMessage = null; - set_error_handler(static function ($nr, $message) use (&$errorMessage): bool { - $errorMessage = $message; // @codeCoverageIgnore - - return true; // @codeCoverageIgnore - }); - - try { - $convertedString = mb_convert_encoding($string, $targetEncoding, $sourceEncoding); - } catch (Error $error) { - $errorMessage = $error->getMessage(); - } - - restore_error_handler(); - if (null !== $errorMessage) { - $convertedString = false; - } - } else { - throw new EncodingConversionException("The conversion from {$sourceEncoding} to {$targetEncoding} is not supported. Please install \"iconv\" or \"mbstring\"."); - } - - if (false === $convertedString) { - throw new EncodingConversionException("The conversion from {$sourceEncoding} to {$targetEncoding} failed."); - } - - return $convertedString; - } -} diff --git a/vendor/openspout/openspout/src/Common/Helper/Escaper/EscaperInterface.php b/vendor/openspout/openspout/src/Common/Helper/Escaper/EscaperInterface.php deleted file mode 100644 index 7d551ee3..00000000 --- a/vendor/openspout/openspout/src/Common/Helper/Escaper/EscaperInterface.php +++ /dev/null @@ -1,29 +0,0 @@ -initIfNeeded(); - - $escapedString = $this->escapeControlCharacters($string); - - // @NOTE: Using ENT_QUOTES as XML entities ('<', '>', '&') as well as - // single/double quotes (for XML attributes) need to be encoded. - return htmlspecialchars($escapedString, ENT_QUOTES, 'UTF-8'); - } - - /** - * Unescapes the given string to make it compatible with XLSX. - * - * @param string $string The string to unescape - * - * @return string The unescaped string - */ - public function unescape(string $string): string - { - $this->initIfNeeded(); - - // ============== - // = WARNING = - // ============== - // It is assumed that the given string has already had its XML entities decoded. - // This is true if the string is coming from a DOMNode (as DOMNode already decode XML entities on creation). - // Therefore there is no need to call "htmlspecialchars_decode()". - return $this->unescapeControlCharacters($string); - } - - /** - * Initializes the control characters if not already done. - */ - private function initIfNeeded(): void - { - if (!$this->isAlreadyInitialized) { - $this->escapableControlCharactersPattern = $this->getEscapableControlCharactersPattern(); - $this->controlCharactersEscapingMap = $this->getControlCharactersEscapingMap(); - $this->controlCharactersEscapingReverseMap = array_flip($this->controlCharactersEscapingMap); - - $this->isAlreadyInitialized = true; - } - } - - /** - * @return string Regex pattern containing all escapable control characters - */ - private function getEscapableControlCharactersPattern(): string - { - // control characters values are from 0 to 1F (hex values) in the ASCII table - // some characters should not be escaped though: "\t", "\r" and "\n". - return '[\x00-\x08'. - // skipping "\t" (0x9) and "\n" (0xA) - '\x0B-\x0C'. - // skipping "\r" (0xD) - '\x0E-\x1F]'; - } - - /** - * Builds the map containing control characters to be escaped - * mapped to their escaped values. - * "\t", "\r" and "\n" don't need to be escaped. - * - * NOTE: the logic has been adapted from the XlsxWriter library (BSD License) - * - * @see https://github.com/jmcnamara/XlsxWriter/blob/f1e610f29/xlsxwriter/sharedstrings.py#L89 - * - * @return string[] - */ - private function getControlCharactersEscapingMap(): array - { - $controlCharactersEscapingMap = []; - - // control characters values are from 0 to 1F (hex values) in the ASCII table - for ($charValue = 0x00; $charValue <= 0x1F; ++$charValue) { - $character = \chr($charValue); - if (1 === preg_match("/{$this->escapableControlCharactersPattern}/", $character)) { - $charHexValue = dechex($charValue); - $escapedChar = '_x'.sprintf('%04s', strtoupper($charHexValue)).'_'; - $controlCharactersEscapingMap[$escapedChar] = $character; - } - } - - return $controlCharactersEscapingMap; - } - - /** - * Converts PHP control characters from the given string to OpenXML escaped control characters. - * - * Excel escapes control characters with _xHHHH_ and also escapes any - * literal strings of that type by encoding the leading underscore. - * So "\0" -> _x0000_ and "_x0000_" -> _x005F_x0000_. - * - * NOTE: the logic has been adapted from the XlsxWriter library (BSD License) - * - * @see https://github.com/jmcnamara/XlsxWriter/blob/f1e610f29/xlsxwriter/sharedstrings.py#L89 - * - * @param string $string String to escape - */ - private function escapeControlCharacters(string $string): string - { - $escapedString = $this->escapeEscapeCharacter($string); - - // if no control characters - if (1 !== preg_match("/{$this->escapableControlCharactersPattern}/", $escapedString)) { - return $escapedString; - } - - return preg_replace_callback("/({$this->escapableControlCharactersPattern})/", function ($matches) { - return $this->controlCharactersEscapingReverseMap[$matches[0]]; - }, $escapedString); - } - - /** - * Escapes the escape character: "_x0000_" -> "_x005F_x0000_". - * - * @param string $string String to escape - * - * @return string The escaped string - */ - private function escapeEscapeCharacter(string $string): string - { - return preg_replace('/_(x[\dA-F]{4})_/', '_x005F_$1_', $string); - } - - /** - * Converts OpenXML escaped control characters from the given string to PHP control characters. - * - * Excel escapes control characters with _xHHHH_ and also escapes any - * literal strings of that type by encoding the leading underscore. - * So "_x0000_" -> "\0" and "_x005F_x0000_" -> "_x0000_" - * - * NOTE: the logic has been adapted from the XlsxWriter library (BSD License) - * - * @see https://github.com/jmcnamara/XlsxWriter/blob/f1e610f29/xlsxwriter/sharedstrings.py#L89 - * - * @param string $string String to unescape - */ - private function unescapeControlCharacters(string $string): string - { - $unescapedString = $string; - - foreach ($this->controlCharactersEscapingMap as $escapedCharValue => $charValue) { - // only unescape characters that don't contain the escaped escape character for now - $unescapedString = preg_replace("/(?unescapeEscapeCharacter($unescapedString); - } - - /** - * Unecapes the escape character: "_x005F_x0000_" => "_x0000_". - * - * @param string $string String to unescape - * - * @return string The unescaped string - */ - private function unescapeEscapeCharacter(string $string): string - { - return preg_replace('/_x005F(_x[\dA-F]{4}_)/', '$1', $string); - } -} diff --git a/vendor/openspout/openspout/src/Common/Helper/FileSystemHelper.php b/vendor/openspout/openspout/src/Common/Helper/FileSystemHelper.php deleted file mode 100644 index 2309bfe6..00000000 --- a/vendor/openspout/openspout/src/Common/Helper/FileSystemHelper.php +++ /dev/null @@ -1,164 +0,0 @@ -baseFolderRealPath = $realpath; - } - - public function getBaseFolderRealPath(): string - { - return $this->baseFolderRealPath; - } - - /** - * Creates an empty folder with the given name under the given parent folder. - * - * @param string $parentFolderPath The parent folder path under which the folder is going to be created - * @param string $folderName The name of the folder to create - * - * @return string Path of the created folder - * - * @throws IOException If unable to create the folder or if the folder path is not inside of the base folder - */ - public function createFolder(string $parentFolderPath, string $folderName): string - { - $this->throwIfOperationNotInBaseFolder($parentFolderPath); - - $folderPath = $parentFolderPath.\DIRECTORY_SEPARATOR.$folderName; - - $errorMessage = ''; - set_error_handler(static function ($nr, $message) use (&$errorMessage): bool { - $errorMessage = $message; - - return true; - }); - $wasCreationSuccessful = mkdir($folderPath, 0777, true); - restore_error_handler(); - - if (!$wasCreationSuccessful) { - throw new IOException("Unable to create folder: {$folderPath} - {$errorMessage}"); - } - - return $folderPath; - } - - /** - * Creates a file with the given name and content in the given folder. - * The parent folder must exist. - * - * @param string $parentFolderPath The parent folder path where the file is going to be created - * @param string $fileName The name of the file to create - * @param string $fileContents The contents of the file to create - * - * @return string Path of the created file - * - * @throws IOException If unable to create the file or if the file path is not inside of the base folder - */ - public function createFileWithContents(string $parentFolderPath, string $fileName, string $fileContents): string - { - $this->throwIfOperationNotInBaseFolder($parentFolderPath); - - $filePath = $parentFolderPath.\DIRECTORY_SEPARATOR.$fileName; - - $errorMessage = ''; - set_error_handler(static function ($nr, $message) use (&$errorMessage): bool { - $errorMessage = $message; - - return true; - }); - $wasCreationSuccessful = file_put_contents($filePath, $fileContents); - restore_error_handler(); - - if (false === $wasCreationSuccessful) { - throw new IOException("Unable to create file: {$filePath} - {$errorMessage}"); - } - - return $filePath; - } - - /** - * Delete the file at the given path. - * - * @param string $filePath Path of the file to delete - * - * @throws IOException If the file path is not inside of the base folder - */ - public function deleteFile(string $filePath): void - { - $this->throwIfOperationNotInBaseFolder($filePath); - - if (file_exists($filePath) && is_file($filePath)) { - unlink($filePath); - } - } - - /** - * Delete the folder at the given path as well as all its contents. - * - * @param string $folderPath Path of the folder to delete - * - * @throws IOException If the folder path is not inside of the base folder - */ - public function deleteFolderRecursively(string $folderPath): void - { - $this->throwIfOperationNotInBaseFolder($folderPath); - - $itemIterator = new RecursiveIteratorIterator( - new RecursiveDirectoryIterator($folderPath, RecursiveDirectoryIterator::SKIP_DOTS), - RecursiveIteratorIterator::CHILD_FIRST - ); - - foreach ($itemIterator as $item) { - if ($item->isDir()) { - rmdir($item->getPathname()); - } else { - unlink($item->getPathname()); - } - } - - rmdir($folderPath); - } - - /** - * All I/O operations must occur inside the base folder, for security reasons. - * This function will throw an exception if the folder where the I/O operation - * should occur is not inside the base folder. - * - * @param string $operationFolderPath The path of the folder where the I/O operation should occur - * - * @throws IOException If the folder where the I/O operation should occur - * is not inside the base folder or the base folder does not exist - */ - private function throwIfOperationNotInBaseFolder(string $operationFolderPath): void - { - $operationFolderRealPath = realpath($operationFolderPath); - if (false === $operationFolderRealPath) { - throw new IOException("Folder not found: {$operationFolderRealPath}"); - } - $isInBaseFolder = str_starts_with($operationFolderRealPath, $this->baseFolderRealPath); - if (!$isInBaseFolder) { - throw new IOException("Cannot perform I/O operation outside of the base folder: {$this->baseFolderRealPath}"); - } - } -} diff --git a/vendor/openspout/openspout/src/Common/Helper/FileSystemHelperInterface.php b/vendor/openspout/openspout/src/Common/Helper/FileSystemHelperInterface.php deleted file mode 100644 index 390346e3..00000000 --- a/vendor/openspout/openspout/src/Common/Helper/FileSystemHelperInterface.php +++ /dev/null @@ -1,57 +0,0 @@ -hasMbstringSupport = $hasMbstringSupport; - } - - public static function factory(): self - { - return new self(\function_exists('mb_strlen')); - } - - /** - * Returns the length of the given string. - * It uses the multi-bytes function is available. - * - * @see strlen - * @see mb_strlen - */ - public function getStringLength(string $string): int - { - return $this->hasMbstringSupport - ? mb_strlen($string) - : \strlen($string); // @codeCoverageIgnore - } - - /** - * Returns the position of the first occurrence of the given character/substring within the given string. - * It uses the multi-bytes function is available. - * - * @see strpos - * @see mb_strpos - * - * @param string $char Needle - * @param string $string Haystack - * - * @return int Char/substring's first occurrence position within the string if found (starts at 0) or -1 if not found - */ - public function getCharFirstOccurrencePosition(string $char, string $string): int - { - $position = $this->hasMbstringSupport - ? mb_strpos($string, $char) - : strpos($string, $char); // @codeCoverageIgnore - - return (false !== $position) ? $position : -1; - } - - /** - * Returns the position of the last occurrence of the given character/substring within the given string. - * It uses the multi-bytes function is available. - * - * @see strrpos - * @see mb_strrpos - * - * @param string $char Needle - * @param string $string Haystack - * - * @return int Char/substring's last occurrence position within the string if found (starts at 0) or -1 if not found - */ - public function getCharLastOccurrencePosition(string $char, string $string): int - { - $position = $this->hasMbstringSupport - ? mb_strrpos($string, $char) - : strrpos($string, $char); // @codeCoverageIgnore - - return (false !== $position) ? $position : -1; - } -} diff --git a/vendor/openspout/openspout/src/Common/TempFolderOptionTrait.php b/vendor/openspout/openspout/src/Common/TempFolderOptionTrait.php deleted file mode 100644 index a8d03e48..00000000 --- a/vendor/openspout/openspout/src/Common/TempFolderOptionTrait.php +++ /dev/null @@ -1,33 +0,0 @@ -tempFolder = $tempFolder; - } - - final public function getTempFolder(): string - { - if (!isset($this->tempFolder)) { - $this->setTempFolder(sys_get_temp_dir()); - } - - return $this->tempFolder; - } -} diff --git a/vendor/openspout/openspout/src/Reader/AbstractReader.php b/vendor/openspout/openspout/src/Reader/AbstractReader.php deleted file mode 100644 index 3582345f..00000000 --- a/vendor/openspout/openspout/src/Reader/AbstractReader.php +++ /dev/null @@ -1,171 +0,0 @@ - - */ -abstract class AbstractReader implements ReaderInterface -{ - /** @var bool Indicates whether the stream is currently open */ - private bool $isStreamOpened = false; - - /** - * Prepares the reader to read the given file. It also makes sure - * that the file exists and is readable. - * - * @param string $filePath Path of the file to be read - * - * @throws IOException If the file at the given path does not exist, is not readable or is corrupted - */ - public function open(string $filePath): void - { - if ($this->isStreamWrapper($filePath) && (!$this->doesSupportStreamWrapper() || !$this->isSupportedStreamWrapper($filePath))) { - throw new IOException("Could not open {$filePath} for reading! Stream wrapper used is not supported for this type of file."); - } - - if (!$this->isPhpStream($filePath)) { - // we skip the checks if the provided file path points to a PHP stream - if (!file_exists($filePath)) { - throw new IOException("Could not open {$filePath} for reading! File does not exist."); - } - if (!is_readable($filePath)) { - throw new IOException("Could not open {$filePath} for reading! File is not readable."); - } - } - - try { - $fileRealPath = $this->getFileRealPath($filePath); - $this->openReader($fileRealPath); - $this->isStreamOpened = true; - } catch (ReaderException $exception) { - throw new IOException( - "Could not open {$filePath} for reading!", - 0, - $exception - ); - } - } - - /** - * Closes the reader, preventing any additional reading. - */ - final public function close(): void - { - if ($this->isStreamOpened) { - $this->closeReader(); - - $this->isStreamOpened = false; - } - } - - /** - * Returns whether stream wrappers are supported. - */ - abstract protected function doesSupportStreamWrapper(): bool; - - /** - * Opens the file at the given file path to make it ready to be read. - * - * @param string $filePath Path of the file to be read - */ - abstract protected function openReader(string $filePath): void; - - /** - * Closes the reader. To be used after reading the file. - */ - abstract protected function closeReader(): void; - - final protected function ensureStreamOpened(): void - { - if (!$this->isStreamOpened) { - throw new ReaderNotOpenedException('Reader should be opened first.'); - } - } - - /** - * Returns the real path of the given path. - * If the given path is a valid stream wrapper, returns the path unchanged. - */ - private function getFileRealPath(string $filePath): string - { - if ($this->isSupportedStreamWrapper($filePath)) { - return $filePath; - } - - // Need to use realpath to fix "Can't open file" on some Windows setup - $realpath = realpath($filePath); - \assert(false !== $realpath); - - return $realpath; - } - - /** - * Returns the scheme of the custom stream wrapper, if the path indicates a stream wrapper is used. - * For example, php://temp => php, s3://path/to/file => s3... - * - * @param string $filePath Path of the file to be read - * - * @return null|string The stream wrapper scheme or NULL if not a stream wrapper - */ - private function getStreamWrapperScheme(string $filePath): ?string - { - $streamScheme = null; - if (1 === preg_match('/^(\w+):\/\//', $filePath, $matches)) { - $streamScheme = $matches[1]; - } - - return $streamScheme; - } - - /** - * Checks if the given path is an unsupported stream wrapper - * (like local path, php://temp, mystream://foo/bar...). - * - * @param string $filePath Path of the file to be read - * - * @return bool Whether the given path is an unsupported stream wrapper - */ - private function isStreamWrapper(string $filePath): bool - { - return null !== $this->getStreamWrapperScheme($filePath); - } - - /** - * Checks if the given path is an supported stream wrapper - * (like php://temp, mystream://foo/bar...). - * If the given path is a local path, returns true. - * - * @param string $filePath Path of the file to be read - * - * @return bool Whether the given path is an supported stream wrapper - */ - private function isSupportedStreamWrapper(string $filePath): bool - { - $streamScheme = $this->getStreamWrapperScheme($filePath); - - return null === $streamScheme || \in_array($streamScheme, stream_get_wrappers(), true); - } - - /** - * Checks if a path is a PHP stream (like php://output, php://memory, ...). - * - * @param string $filePath Path of the file to be read - * - * @return bool Whether the given path maps to a PHP stream - */ - private function isPhpStream(string $filePath): bool - { - $streamScheme = $this->getStreamWrapperScheme($filePath); - - return 'php' === $streamScheme; - } -} diff --git a/vendor/openspout/openspout/src/Reader/CSV/Options.php b/vendor/openspout/openspout/src/Reader/CSV/Options.php deleted file mode 100644 index e470915f..00000000 --- a/vendor/openspout/openspout/src/Reader/CSV/Options.php +++ /dev/null @@ -1,15 +0,0 @@ - - */ -final class Reader extends AbstractReader -{ - /** @var resource Pointer to the file to be written */ - private $filePointer; - - /** @var SheetIterator To iterator over the CSV unique "sheet" */ - private SheetIterator $sheetIterator; - - private readonly Options $options; - private readonly EncodingHelper $encodingHelper; - - public function __construct( - ?Options $options = null, - ?EncodingHelper $encodingHelper = null - ) { - $this->options = $options ?? new Options(); - $this->encodingHelper = $encodingHelper ?? EncodingHelper::factory(); - } - - public function getSheetIterator(): SheetIterator - { - $this->ensureStreamOpened(); - - return $this->sheetIterator; - } - - /** - * Returns whether stream wrappers are supported. - */ - protected function doesSupportStreamWrapper(): bool - { - return true; - } - - /** - * Opens the file at the given path to make it ready to be read. - * If setEncoding() was not called, it assumes that the file is encoded in UTF-8. - * - * @param string $filePath Path of the CSV file to be read - * - * @throws IOException - */ - protected function openReader(string $filePath): void - { - $resource = fopen($filePath, 'r'); - \assert(false !== $resource); - $this->filePointer = $resource; - - $this->sheetIterator = new SheetIterator( - new Sheet( - new RowIterator( - $this->filePointer, - $this->options, - $this->encodingHelper - ) - ) - ); - } - - /** - * Closes the reader. To be used after reading the file. - */ - protected function closeReader(): void - { - fclose($this->filePointer); - } -} diff --git a/vendor/openspout/openspout/src/Reader/CSV/RowIterator.php b/vendor/openspout/openspout/src/Reader/CSV/RowIterator.php deleted file mode 100644 index 81f50bd7..00000000 --- a/vendor/openspout/openspout/src/Reader/CSV/RowIterator.php +++ /dev/null @@ -1,219 +0,0 @@ -filePointer = $filePointer; - $this->options = $options; - $this->encodingHelper = $encodingHelper; - } - - /** - * Rewind the Iterator to the first element. - * - * @see http://php.net/manual/en/iterator.rewind.php - */ - public function rewind(): void - { - $this->rewindAndSkipBom(); - - $this->numReadRows = 0; - $this->rowBuffer = null; - - $this->next(); - } - - /** - * Checks if current position is valid. - * - * @see http://php.net/manual/en/iterator.valid.php - */ - public function valid(): bool - { - return null !== $this->filePointer && !$this->hasReachedEndOfFile; - } - - /** - * Move forward to next element. Reads data for the next unprocessed row. - * - * @see http://php.net/manual/en/iterator.next.php - * - * @throws EncodingConversionException If unable to convert data to UTF-8 - */ - public function next(): void - { - $this->hasReachedEndOfFile = feof($this->filePointer); - - if (!$this->hasReachedEndOfFile) { - $this->readDataForNextRow(); - } - } - - /** - * Return the current element from the buffer. - * - * @see http://php.net/manual/en/iterator.current.php - */ - public function current(): ?Row - { - return $this->rowBuffer; - } - - /** - * Return the key of the current element. - * - * @see http://php.net/manual/en/iterator.key.php - */ - public function key(): int - { - return $this->numReadRows; - } - - /** - * This rewinds and skips the BOM if inserted at the beginning of the file - * by moving the file pointer after it, so that it is not read. - */ - private function rewindAndSkipBom(): void - { - $byteOffsetToSkipBom = $this->encodingHelper->getBytesOffsetToSkipBOM($this->filePointer, $this->options->ENCODING); - - // sets the cursor after the BOM (0 means no BOM, so rewind it) - fseek($this->filePointer, $byteOffsetToSkipBom); - } - - /** - * @throws EncodingConversionException If unable to convert data to UTF-8 - */ - private function readDataForNextRow(): void - { - do { - $rowData = $this->getNextUTF8EncodedRow(); - } while ($this->shouldReadNextRow($rowData)); - - if (false !== $rowData) { - // array_map will replace NULL values by empty strings - $rowDataBufferAsArray = array_map('\\strval', $rowData); - $this->rowBuffer = new Row(array_map(static function ($cellValue) { - return Cell::fromValue($cellValue); - }, $rowDataBufferAsArray), null); - ++$this->numReadRows; - } else { - // If we reach this point, it means end of file was reached. - // This happens when the last lines are empty lines. - $this->hasReachedEndOfFile = true; - } - } - - /** - * @param array|bool $currentRowData - * - * @return bool Whether the data for the current row can be returned or if we need to keep reading - */ - private function shouldReadNextRow($currentRowData): bool - { - $hasSuccessfullyFetchedRowData = (false !== $currentRowData); - $hasNowReachedEndOfFile = feof($this->filePointer); - $isEmptyLine = $this->isEmptyLine($currentRowData); - - return - (!$hasSuccessfullyFetchedRowData && !$hasNowReachedEndOfFile) - || (!$this->options->SHOULD_PRESERVE_EMPTY_ROWS && $isEmptyLine); - } - - /** - * Returns the next row, converted if necessary to UTF-8. - * As fgetcsv() does not manage correctly encoding for non UTF-8 data, - * we remove manually whitespace with ltrim or rtrim (depending on the order of the bytes). - * - * @return array|false The row for the current file pointer, encoded in UTF-8 or FALSE if nothing to read - * - * @throws EncodingConversionException If unable to convert data to UTF-8 - */ - private function getNextUTF8EncodedRow(): array|false - { - $encodedRowData = fgetcsv( - $this->filePointer, - self::MAX_READ_BYTES_PER_LINE, - $this->options->FIELD_DELIMITER, - $this->options->FIELD_ENCLOSURE, - '' - ); - if (false === $encodedRowData) { - return false; - } - - foreach ($encodedRowData as $cellIndex => $cellValue) { - switch ($this->options->ENCODING) { - case EncodingHelper::ENCODING_UTF16_LE: - case EncodingHelper::ENCODING_UTF32_LE: - // remove whitespace from the beginning of a string as fgetcsv() add extra whitespace when it try to explode non UTF-8 data - $cellValue = ltrim($cellValue); - - break; - - case EncodingHelper::ENCODING_UTF16_BE: - case EncodingHelper::ENCODING_UTF32_BE: - // remove whitespace from the end of a string as fgetcsv() add extra whitespace when it try to explode non UTF-8 data - $cellValue = rtrim($cellValue); - - break; - } - - $encodedRowData[$cellIndex] = $this->encodingHelper->attemptConversionToUTF8($cellValue, $this->options->ENCODING); - } - - return $encodedRowData; - } - - /** - * @param array|bool $lineData Array containing the cells value for the line - * - * @return bool Whether the given line is empty - */ - private function isEmptyLine($lineData): bool - { - return \is_array($lineData) && 1 === \count($lineData) && null === $lineData[0]; - } -} diff --git a/vendor/openspout/openspout/src/Reader/CSV/Sheet.php b/vendor/openspout/openspout/src/Reader/CSV/Sheet.php deleted file mode 100644 index 142e6255..00000000 --- a/vendor/openspout/openspout/src/Reader/CSV/Sheet.php +++ /dev/null @@ -1,53 +0,0 @@ - - */ -final class Sheet implements SheetInterface -{ - /** @var RowIterator To iterate over the CSV's rows */ - private readonly RowIterator $rowIterator; - - /** - * @param RowIterator $rowIterator Corresponding row iterator - */ - public function __construct(RowIterator $rowIterator) - { - $this->rowIterator = $rowIterator; - } - - public function getRowIterator(): RowIterator - { - return $this->rowIterator; - } - - /** - * @return int Index of the sheet - */ - public function getIndex(): int - { - return 0; - } - - /** - * @return string Name of the sheet - empty string since CSV does not support that - */ - public function getName(): string - { - return ''; - } - - /** - * @return bool Always TRUE as there is only one sheet - */ - public function isActive(): bool - { - return true; - } -} diff --git a/vendor/openspout/openspout/src/Reader/CSV/SheetIterator.php b/vendor/openspout/openspout/src/Reader/CSV/SheetIterator.php deleted file mode 100644 index 5a2b9153..00000000 --- a/vendor/openspout/openspout/src/Reader/CSV/SheetIterator.php +++ /dev/null @@ -1,77 +0,0 @@ - - */ -final class SheetIterator implements SheetIteratorInterface -{ - /** @var Sheet The CSV unique "sheet" */ - private readonly Sheet $sheet; - - /** @var bool Whether the unique "sheet" has already been read */ - private bool $hasReadUniqueSheet = false; - - /** - * @param Sheet $sheet Corresponding unique sheet - */ - public function __construct(Sheet $sheet) - { - $this->sheet = $sheet; - } - - /** - * Rewind the Iterator to the first element. - * - * @see http://php.net/manual/en/iterator.rewind.php - */ - public function rewind(): void - { - $this->hasReadUniqueSheet = false; - } - - /** - * Checks if current position is valid. - * - * @see http://php.net/manual/en/iterator.valid.php - */ - public function valid(): bool - { - return !$this->hasReadUniqueSheet; - } - - /** - * Move forward to next element. - * - * @see http://php.net/manual/en/iterator.next.php - */ - public function next(): void - { - $this->hasReadUniqueSheet = true; - } - - /** - * Return the current element. - * - * @see http://php.net/manual/en/iterator.current.php - */ - public function current(): Sheet - { - return $this->sheet; - } - - /** - * Return the key of the current element. - * - * @see http://php.net/manual/en/iterator.key.php - */ - public function key(): int - { - return 1; - } -} diff --git a/vendor/openspout/openspout/src/Reader/Common/ColumnWidth.php b/vendor/openspout/openspout/src/Reader/Common/ColumnWidth.php deleted file mode 100644 index 73ecb627..00000000 --- a/vendor/openspout/openspout/src/Reader/Common/ColumnWidth.php +++ /dev/null @@ -1,21 +0,0 @@ - new CSVReader(), - 'xlsx' => new XLSXReader(), - 'ods' => new ODSReader(), - default => throw new UnsupportedTypeException('No readers supporting the given type: '.$extension), - }; - } - - /** - * Creates a reader by mime type. - * - * @param string $path the path to the spreadsheet file - * - * @throws UnsupportedTypeException - * @throws IOException - */ - public static function createFromFileByMimeType(string $path): ReaderInterface - { - if (!file_exists($path)) { - throw new IOException("Could not open {$path} for reading! File does not exist."); - } - - $mime_type = mime_content_type($path); - - return match ($mime_type) { - 'application/csv', 'text/csv', 'text/plain' => new CSVReader(), - 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => new XLSXReader(), - 'application/vnd.oasis.opendocument.spreadsheet' => new ODSReader(), - default => throw new UnsupportedTypeException('No readers supporting the given type: '.$mime_type), - }; - } -} diff --git a/vendor/openspout/openspout/src/Reader/Common/Manager/RowManager.php b/vendor/openspout/openspout/src/Reader/Common/Manager/RowManager.php deleted file mode 100644 index a4f80809..00000000 --- a/vendor/openspout/openspout/src/Reader/Common/Manager/RowManager.php +++ /dev/null @@ -1,51 +0,0 @@ -getNumCells(); - - if (0 === $numCells) { - return; - } - - $rowCells = $row->getCells(); - $maxCellIndex = $numCells; - - /** - * If the row has empty cells, calling "setCellAtIndex" will add the cell - * but in the wrong place (the new cell is added at the end of the array). - * Therefore, we need to sort the array using keys to have proper order. - * - * @see https://github.com/box/spout/issues/740 - */ - $needsSorting = false; - - for ($cellIndex = 0; $cellIndex < $maxCellIndex; ++$cellIndex) { - if (!isset($rowCells[$cellIndex])) { - $row->setCellAtIndex(Cell::fromValue(''), $cellIndex); - $needsSorting = true; - } - } - - if ($needsSorting) { - $rowCells = $row->getCells(); - ksort($rowCells); - $row->setCells($rowCells); - } - } -} diff --git a/vendor/openspout/openspout/src/Reader/Common/XMLProcessor.php b/vendor/openspout/openspout/src/Reader/Common/XMLProcessor.php deleted file mode 100644 index b185ad6e..00000000 --- a/vendor/openspout/openspout/src/Reader/Common/XMLProcessor.php +++ /dev/null @@ -1,153 +0,0 @@ - Registered callbacks */ - private array $callbacks = []; - - /** - * @param XMLReader $xmlReader XMLReader object - */ - public function __construct(XMLReader $xmlReader) - { - $this->xmlReader = $xmlReader; - } - - /** - * @param string $nodeName A callback may be triggered when a node with this name is read - * @param int $nodeType Type of the node [NODE_TYPE_START || NODE_TYPE_END] - * @param callable $callback Callback to execute when the read node has the given name and type - */ - public function registerCallback(string $nodeName, int $nodeType, $callback): self - { - $callbackKey = $this->getCallbackKey($nodeName, $nodeType); - $this->callbacks[$callbackKey] = $this->getInvokableCallbackData($callback); - - return $this; - } - - /** - * Resumes the reading of the XML file where it was left off. - * Stops whenever a callback indicates that reading should stop or at the end of the file. - * - * @throws XMLProcessingException - */ - public function readUntilStopped(): void - { - while ($this->xmlReader->read()) { - $nodeType = $this->xmlReader->nodeType; - $nodeNamePossiblyWithPrefix = $this->xmlReader->name; - $nodeNameWithoutPrefix = $this->xmlReader->localName; - - $callbackData = $this->getRegisteredCallbackData($nodeNamePossiblyWithPrefix, $nodeNameWithoutPrefix, $nodeType); - - if (null !== $callbackData) { - $callbackResponse = $this->invokeCallback($callbackData, [$this->xmlReader]); - - if (self::PROCESSING_STOP === $callbackResponse) { - // stop reading - break; - } - } - } - } - - /** - * @param string $nodeName Name of the node - * @param int $nodeType Type of the node [NODE_TYPE_START || NODE_TYPE_END] - * - * @return string Key used to store the associated callback - */ - private function getCallbackKey(string $nodeName, int $nodeType): string - { - return "{$nodeName}{$nodeType}"; - } - - /** - * Because the callback can be a "protected" function, we don't want to use call_user_func() directly - * but instead invoke the callback using Reflection. This allows the invocation of "protected" functions. - * Since some functions can be called a lot, we pre-process the callback to only return the elements that - * will be needed to invoke the callback later. - * - * @param callable $callback Array reference to a callback: [OBJECT, METHOD_NAME] - * - * @return array{reflectionMethod: ReflectionMethod, reflectionObject: object} Associative array containing the elements needed to invoke the callback using Reflection - */ - private function getInvokableCallbackData($callback): array - { - $callbackObject = $callback[0]; - $callbackMethodName = $callback[1]; - $reflectionMethod = new ReflectionMethod($callbackObject, $callbackMethodName); - $reflectionMethod->setAccessible(true); - - return [ - self::CALLBACK_REFLECTION_METHOD => $reflectionMethod, - self::CALLBACK_REFLECTION_OBJECT => $callbackObject, - ]; - } - - /** - * @param string $nodeNamePossiblyWithPrefix Name of the node, possibly prefixed - * @param string $nodeNameWithoutPrefix Name of the same node, un-prefixed - * @param int $nodeType Type of the node [NODE_TYPE_START || NODE_TYPE_END] - * - * @return null|array{reflectionMethod: ReflectionMethod, reflectionObject: object} Callback data to be used for execution when a node of the given name/type is read or NULL if none found - */ - private function getRegisteredCallbackData(string $nodeNamePossiblyWithPrefix, string $nodeNameWithoutPrefix, int $nodeType): ?array - { - // With prefixed nodes, we should match if (by order of preference): - // 1. the callback was registered with the prefixed node name (e.g. "x:worksheet") - // 2. the callback was registered with the un-prefixed node name (e.g. "worksheet") - $callbackKeyForPossiblyPrefixedName = $this->getCallbackKey($nodeNamePossiblyWithPrefix, $nodeType); - $callbackKeyForUnPrefixedName = $this->getCallbackKey($nodeNameWithoutPrefix, $nodeType); - $hasPrefix = ($nodeNamePossiblyWithPrefix !== $nodeNameWithoutPrefix); - - $callbackKeyToUse = $callbackKeyForUnPrefixedName; - if ($hasPrefix && isset($this->callbacks[$callbackKeyForPossiblyPrefixedName])) { - $callbackKeyToUse = $callbackKeyForPossiblyPrefixedName; - } - - // Using isset here because it is way faster than array_key_exists... - return $this->callbacks[$callbackKeyToUse] ?? null; - } - - /** - * @param array{reflectionMethod: ReflectionMethod, reflectionObject: object} $callbackData Associative array containing data to invoke the callback using Reflection - * @param XMLReader[] $args Arguments to pass to the callback - * - * @return int Callback response - */ - private function invokeCallback(array $callbackData, array $args): int - { - $reflectionMethod = $callbackData[self::CALLBACK_REFLECTION_METHOD]; - $callbackObject = $callbackData[self::CALLBACK_REFLECTION_OBJECT]; - - return $reflectionMethod->invokeArgs($callbackObject, $args); - } -} diff --git a/vendor/openspout/openspout/src/Reader/Exception/InvalidValueException.php b/vendor/openspout/openspout/src/Reader/Exception/InvalidValueException.php deleted file mode 100644 index 4475e512..00000000 --- a/vendor/openspout/openspout/src/Reader/Exception/InvalidValueException.php +++ /dev/null @@ -1,23 +0,0 @@ -invalidValue = $invalidValue; - parent::__construct($message, $code, $previous); - } - - public function getInvalidValue(): string - { - return $this->invalidValue; - } -} diff --git a/vendor/openspout/openspout/src/Reader/Exception/IteratorNotRewindableException.php b/vendor/openspout/openspout/src/Reader/Exception/IteratorNotRewindableException.php deleted file mode 100644 index b1d5198d..00000000 --- a/vendor/openspout/openspout/src/Reader/Exception/IteratorNotRewindableException.php +++ /dev/null @@ -1,7 +0,0 @@ - ' ', - self::XML_NODE_TEXT_TAB => "\t", - self::XML_NODE_TEXT_LINE_BREAK => "\n", - ]; - - /** @var bool Whether date/time values should be returned as PHP objects or be formatted as strings */ - private readonly bool $shouldFormatDates; - - /** @var ODS Used to unescape XML data */ - private readonly ODS $escaper; - - /** - * @param bool $shouldFormatDates Whether date/time values should be returned as PHP objects or be formatted as strings - * @param ODS $escaper Used to unescape XML data - */ - public function __construct(bool $shouldFormatDates, ODS $escaper) - { - $this->shouldFormatDates = $shouldFormatDates; - $this->escaper = $escaper; - } - - /** - * Returns the (unescaped) correctly marshalled, cell value associated to the given XML node. - * - * @see http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#refTable13 - * - * @return bool|DateInterval|DateTimeImmutable|float|int|string The value associated with the cell, empty string if cell's type is void/undefined - * - * @throws InvalidValueException If the node value is not valid - */ - public function extractAndFormatNodeValue(DOMElement $node): bool|DateInterval|DateTimeImmutable|float|int|string - { - $cellType = $node->getAttribute(self::XML_ATTRIBUTE_TYPE); - - return match ($cellType) { - self::CELL_TYPE_STRING => $this->formatStringCellValue($node), - self::CELL_TYPE_FLOAT => $this->formatFloatCellValue($node), - self::CELL_TYPE_BOOLEAN => $this->formatBooleanCellValue($node), - self::CELL_TYPE_DATE => $this->formatDateCellValue($node), - self::CELL_TYPE_TIME => $this->formatTimeCellValue($node), - self::CELL_TYPE_CURRENCY => $this->formatCurrencyCellValue($node), - self::CELL_TYPE_PERCENTAGE => $this->formatPercentageCellValue($node), - default => '', - }; - } - - /** - * Returns the cell String value. - * - * @return string The value associated with the cell - */ - private function formatStringCellValue(DOMElement $node): string - { - $pNodeValues = []; - $pNodes = $node->getElementsByTagName(self::XML_NODE_P); - - foreach ($pNodes as $pNode) { - $pNodeValues[] = $this->extractTextValueFromNode($pNode); - } - - $escapedCellValue = implode("\n", $pNodeValues); - - return $this->escaper->unescape($escapedCellValue); - } - - /** - * Returns the cell Numeric value from the given node. - * - * @return float|int The value associated with the cell - */ - private function formatFloatCellValue(DOMElement $node): float|int - { - $nodeValue = $node->getAttribute(self::XML_ATTRIBUTE_VALUE); - - $nodeIntValue = (int) $nodeValue; - $nodeFloatValue = (float) $nodeValue; - - return ((float) $nodeIntValue === $nodeFloatValue) ? $nodeIntValue : $nodeFloatValue; - } - - /** - * Returns the cell Boolean value from the given node. - * - * @return bool The value associated with the cell - */ - private function formatBooleanCellValue(DOMElement $node): bool - { - return (bool) $node->getAttribute(self::XML_ATTRIBUTE_BOOLEAN_VALUE); - } - - /** - * Returns the cell Date value from the given node. - * - * @throws InvalidValueException If the value is not a valid date - */ - private function formatDateCellValue(DOMElement $node): DateTimeImmutable|string - { - // The XML node looks like this: - // - // 05/19/16 04:39 PM - // - - if ($this->shouldFormatDates) { - // The date is already formatted in the "p" tag - $nodeWithValueAlreadyFormatted = $node->getElementsByTagName(self::XML_NODE_P)->item(0); - $cellValue = $nodeWithValueAlreadyFormatted->nodeValue; - } else { - // otherwise, get it from the "date-value" attribute - $nodeValue = $node->getAttribute(self::XML_ATTRIBUTE_DATE_VALUE); - - try { - $cellValue = new DateTimeImmutable($nodeValue); - } catch (Exception $previous) { - throw new InvalidValueException($nodeValue, '', 0, $previous); - } - } - - return $cellValue; - } - - /** - * Returns the cell Time value from the given node. - * - * @return DateInterval|string The value associated with the cell - * - * @throws InvalidValueException If the value is not a valid time - */ - private function formatTimeCellValue(DOMElement $node): DateInterval|string - { - // The XML node looks like this: - // - // 01:24:00 PM - // - - if ($this->shouldFormatDates) { - // The date is already formatted in the "p" tag - $nodeWithValueAlreadyFormatted = $node->getElementsByTagName(self::XML_NODE_P)->item(0); - $cellValue = $nodeWithValueAlreadyFormatted->nodeValue; - } else { - // otherwise, get it from the "time-value" attribute - $nodeValue = $node->getAttribute(self::XML_ATTRIBUTE_TIME_VALUE); - - try { - $cellValue = new DateInterval($nodeValue); - } catch (Exception $previous) { - throw new InvalidValueException($nodeValue, '', 0, $previous); - } - } - - return $cellValue; - } - - /** - * Returns the cell Currency value from the given node. - * - * @return string The value associated with the cell (e.g. "100 USD" or "9.99 EUR") - */ - private function formatCurrencyCellValue(DOMElement $node): string - { - $value = $node->getAttribute(self::XML_ATTRIBUTE_VALUE); - $currency = $node->getAttribute(self::XML_ATTRIBUTE_CURRENCY); - - return "{$value} {$currency}"; - } - - /** - * Returns the cell Percentage value from the given node. - * - * @return float|int The value associated with the cell - */ - private function formatPercentageCellValue(DOMElement $node): float|int - { - // percentages are formatted like floats - return $this->formatFloatCellValue($node); - } - - private function extractTextValueFromNode(DOMNode $pNode): string - { - $textValue = ''; - - foreach ($pNode->childNodes as $childNode) { - if ($childNode instanceof DOMText) { - $textValue .= $childNode->nodeValue; - } elseif ($this->isWhitespaceNode($childNode->nodeName) && $childNode instanceof DOMElement) { - $textValue .= $this->transformWhitespaceNode($childNode); - } elseif (self::XML_NODE_TEXT_A === $childNode->nodeName || self::XML_NODE_TEXT_SPAN === $childNode->nodeName) { - $textValue .= $this->extractTextValueFromNode($childNode); - } - } - - return $textValue; - } - - /** - * Returns whether the given node is a whitespace node. It must be one of these: - * - - * - - * - . - */ - private function isWhitespaceNode(string $nodeName): bool - { - return isset(self::WHITESPACE_XML_NODES[$nodeName]); - } - - /** - * The "" node can contain the string value directly - * or contain child elements. In this case, whitespaces contain in - * the child elements should be replaced by their XML equivalent: - * - space => - * - tab => - * - line break => . - * - * @see https://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1415200_253892949 - * - * @param DOMElement $node The XML node representing a whitespace - * - * @return string The corresponding whitespace value - */ - private function transformWhitespaceNode(DOMElement $node): string - { - $countAttribute = $node->getAttribute(self::XML_ATTRIBUTE_C); // only defined for "" - $numWhitespaces = '' !== $countAttribute ? (int) $countAttribute : 1; - - return str_repeat(self::WHITESPACE_XML_NODES[$node->nodeName], $numWhitespaces); - } -} diff --git a/vendor/openspout/openspout/src/Reader/ODS/Helper/SettingsHelper.php b/vendor/openspout/openspout/src/Reader/ODS/Helper/SettingsHelper.php deleted file mode 100644 index a3c9b9a7..00000000 --- a/vendor/openspout/openspout/src/Reader/ODS/Helper/SettingsHelper.php +++ /dev/null @@ -1,54 +0,0 @@ -openFileInZip($filePath, self::SETTINGS_XML_FILE_PATH)) { - return null; - } - - $activeSheetName = null; - - try { - while ($xmlReader->readUntilNodeFound(self::XML_NODE_CONFIG_ITEM)) { - if (self::XML_ATTRIBUTE_VALUE_ACTIVE_TABLE === $xmlReader->getAttribute(self::XML_ATTRIBUTE_CONFIG_NAME)) { - $activeSheetName = $xmlReader->readString(); - - break; - } - } - } catch (XMLProcessingException) { // @codeCoverageIgnore - // do nothing - } - - $xmlReader->close(); - - return $activeSheetName; - } -} diff --git a/vendor/openspout/openspout/src/Reader/ODS/Options.php b/vendor/openspout/openspout/src/Reader/ODS/Options.php deleted file mode 100644 index f7641eab..00000000 --- a/vendor/openspout/openspout/src/Reader/ODS/Options.php +++ /dev/null @@ -1,11 +0,0 @@ - - */ -final class Reader extends AbstractReader -{ - private ZipArchive $zip; - - private readonly Options $options; - - /** @var SheetIterator To iterator over the ODS sheets */ - private SheetIterator $sheetIterator; - - public function __construct(?Options $options = null) - { - $this->options = $options ?? new Options(); - } - - public function getSheetIterator(): SheetIterator - { - $this->ensureStreamOpened(); - - return $this->sheetIterator; - } - - /** - * Returns whether stream wrappers are supported. - */ - protected function doesSupportStreamWrapper(): bool - { - return false; - } - - /** - * Opens the file at the given file path to make it ready to be read. - * - * @param string $filePath Path of the file to be read - * - * @throws IOException If the file at the given path or its content cannot be read - * @throws NoSheetsFoundException If there are no sheets in the file - */ - protected function openReader(string $filePath): void - { - $this->zip = new ZipArchive(); - - if (true !== $this->zip->open($filePath)) { - throw new IOException("Could not open {$filePath} for reading."); - } - - $this->sheetIterator = new SheetIterator($filePath, $this->options, new ODS(), new SettingsHelper()); - } - - /** - * Closes the reader. To be used after reading the file. - */ - protected function closeReader(): void - { - $this->zip->close(); - } -} diff --git a/vendor/openspout/openspout/src/Reader/ODS/RowIterator.php b/vendor/openspout/openspout/src/Reader/ODS/RowIterator.php deleted file mode 100644 index cfb6eeaf..00000000 --- a/vendor/openspout/openspout/src/Reader/ODS/RowIterator.php +++ /dev/null @@ -1,343 +0,0 @@ -cellValueFormatter = $cellValueFormatter; - - // Register all callbacks to process different nodes when reading the XML file - $this->xmlProcessor = $xmlProcessor; - $this->xmlProcessor->registerCallback(self::XML_NODE_ROW, XMLProcessor::NODE_TYPE_START, [$this, 'processRowStartingNode']); - $this->xmlProcessor->registerCallback(self::XML_NODE_CELL, XMLProcessor::NODE_TYPE_START, [$this, 'processCellStartingNode']); - $this->xmlProcessor->registerCallback(self::XML_NODE_ROW, XMLProcessor::NODE_TYPE_END, [$this, 'processRowEndingNode']); - $this->xmlProcessor->registerCallback(self::XML_NODE_TABLE, XMLProcessor::NODE_TYPE_END, [$this, 'processTableEndingNode']); - $this->options = $options; - } - - /** - * Rewind the Iterator to the first element. - * NOTE: It can only be done once, as it is not possible to read an XML file backwards. - * - * @see http://php.net/manual/en/iterator.rewind.php - * - * @throws IteratorNotRewindableException If the iterator is rewound more than once - */ - public function rewind(): void - { - // Because sheet and row data is located in the file, we can't rewind both the - // sheet iterator and the row iterator, as XML file cannot be read backwards. - // Therefore, rewinding the row iterator has been disabled. - if ($this->hasAlreadyBeenRewound) { - throw new IteratorNotRewindableException(); - } - - $this->hasAlreadyBeenRewound = true; - $this->lastRowIndexProcessed = 0; - $this->nextRowIndexToBeProcessed = 1; - $this->rowBuffer = null; - $this->hasReachedEndOfFile = false; - - $this->next(); - } - - /** - * Checks if current position is valid. - * - * @see http://php.net/manual/en/iterator.valid.php - */ - public function valid(): bool - { - return !$this->hasReachedEndOfFile; - } - - /** - * Move forward to next element. Empty rows will be skipped. - * - * @see http://php.net/manual/en/iterator.next.php - * - * @throws SharedStringNotFoundException If a shared string was not found - * @throws IOException If unable to read the sheet data XML - */ - public function next(): void - { - if ($this->doesNeedDataForNextRowToBeProcessed()) { - $this->readDataForNextRow(); - } - - ++$this->lastRowIndexProcessed; - } - - /** - * Return the current element, from the buffer. - * - * @see http://php.net/manual/en/iterator.current.php - */ - public function current(): Row - { - return $this->rowBuffer; - } - - /** - * Return the key of the current element. - * - * @see http://php.net/manual/en/iterator.key.php - */ - public function key(): int - { - return $this->lastRowIndexProcessed; - } - - /** - * Returns whether we need data for the next row to be processed. - * We DO need to read data if: - * - we have not read any rows yet - * OR - * - the next row to be processed immediately follows the last read row. - * - * @return bool whether we need data for the next row to be processed - */ - private function doesNeedDataForNextRowToBeProcessed(): bool - { - $hasReadAtLeastOneRow = (0 !== $this->lastRowIndexProcessed); - - return - !$hasReadAtLeastOneRow - || $this->lastRowIndexProcessed === $this->nextRowIndexToBeProcessed - 1; - } - - /** - * @throws SharedStringNotFoundException If a shared string was not found - * @throws IOException If unable to read the sheet data XML - */ - private function readDataForNextRow(): void - { - $this->currentlyProcessedRow = new Row([], null); - - $this->xmlProcessor->readUntilStopped(); - - $this->rowBuffer = $this->currentlyProcessedRow; - } - - /** - * @param XMLReader $xmlReader XMLReader object, positioned on a "" starting node - * - * @return int A return code that indicates what action should the processor take next - */ - private function processRowStartingNode(XMLReader $xmlReader): int - { - // Reset data from current row - $this->hasAlreadyReadOneCellInCurrentRow = false; - $this->lastProcessedCell = null; - $this->numColumnsRepeated = 1; - $this->numRowsRepeated = $this->getNumRowsRepeatedForCurrentNode($xmlReader); - - return XMLProcessor::PROCESSING_CONTINUE; - } - - /** - * @param XMLReader $xmlReader XMLReader object, positioned on a "" starting node - * - * @return int A return code that indicates what action should the processor take next - */ - private function processCellStartingNode(XMLReader $xmlReader): int - { - $currentNumColumnsRepeated = $this->getNumColumnsRepeatedForCurrentNode($xmlReader); - - // NOTE: expand() will automatically decode all XML entities of the child nodes - /** @var DOMElement $node */ - $node = $xmlReader->expand(); - $currentCell = $this->getCell($node); - - // process cell N only after having read cell N+1 (see below why) - if ($this->hasAlreadyReadOneCellInCurrentRow) { - for ($i = 0; $i < $this->numColumnsRepeated; ++$i) { - $this->currentlyProcessedRow->addCell($this->lastProcessedCell); - } - } - - $this->hasAlreadyReadOneCellInCurrentRow = true; - $this->lastProcessedCell = $currentCell; - $this->numColumnsRepeated = $currentNumColumnsRepeated; - - return XMLProcessor::PROCESSING_CONTINUE; - } - - /** - * @return int A return code that indicates what action should the processor take next - */ - private function processRowEndingNode(): int - { - $isEmptyRow = $this->isEmptyRow($this->currentlyProcessedRow, $this->lastProcessedCell); - - // if the fetched row is empty and we don't want to preserve it... - if (!$this->options->SHOULD_PRESERVE_EMPTY_ROWS && $isEmptyRow) { - // ... skip it - return XMLProcessor::PROCESSING_CONTINUE; - } - - // if the row is empty, we don't want to return more than one cell - $actualNumColumnsRepeated = (!$isEmptyRow) ? $this->numColumnsRepeated : 1; - $numCellsInCurrentlyProcessedRow = $this->currentlyProcessedRow->getNumCells(); - - // Only add the value if the last read cell is not a trailing empty cell repeater in Excel. - // The current count of read columns is determined by counting the values in "$this->currentlyProcessedRowData". - // This is to avoid creating a lot of empty cells, as Excel adds a last empty "" - // with a number-columns-repeated value equals to the number of (supported columns - used columns). - // In Excel, the number of supported columns is 16384, but we don't want to returns rows with - // always 16384 cells. - if (($numCellsInCurrentlyProcessedRow + $actualNumColumnsRepeated) !== self::MAX_COLUMNS_EXCEL) { - for ($i = 0; $i < $actualNumColumnsRepeated; ++$i) { - $this->currentlyProcessedRow->addCell($this->lastProcessedCell); - } - } - - // If we are processing row N and the row is repeated M times, - // then the next row to be processed will be row (N+M). - $this->nextRowIndexToBeProcessed += $this->numRowsRepeated; - - // at this point, we have all the data we need for the row - // so that we can populate the buffer - return XMLProcessor::PROCESSING_STOP; - } - - /** - * @return int A return code that indicates what action should the processor take next - */ - private function processTableEndingNode(): int - { - // The closing "" marks the end of the file - $this->hasReachedEndOfFile = true; - - return XMLProcessor::PROCESSING_STOP; - } - - /** - * @param XMLReader $xmlReader XMLReader object, positioned on a "" starting node - * - * @return int The value of "table:number-rows-repeated" attribute of the current node, or 1 if attribute missing - */ - private function getNumRowsRepeatedForCurrentNode(XMLReader $xmlReader): int - { - $numRowsRepeated = $xmlReader->getAttribute(self::XML_ATTRIBUTE_NUM_ROWS_REPEATED); - - return (null !== $numRowsRepeated) ? (int) $numRowsRepeated : 1; - } - - /** - * @param XMLReader $xmlReader XMLReader object, positioned on a "" starting node - * - * @return int The value of "table:number-columns-repeated" attribute of the current node, or 1 if attribute missing - */ - private function getNumColumnsRepeatedForCurrentNode(XMLReader $xmlReader): int - { - $numColumnsRepeated = $xmlReader->getAttribute(self::XML_ATTRIBUTE_NUM_COLUMNS_REPEATED); - - return (null !== $numColumnsRepeated) ? (int) $numColumnsRepeated : 1; - } - - /** - * Returns the cell with (unescaped) correctly marshalled, cell value associated to the given XML node. - * - * @return Cell The cell set with the associated with the cell - */ - private function getCell(DOMElement $node): Cell - { - try { - $cellValue = $this->cellValueFormatter->extractAndFormatNodeValue($node); - $cell = Cell::fromValue($cellValue); - } catch (InvalidValueException $exception) { - $cell = new Cell\ErrorCell($exception->getInvalidValue(), null); - } - - return $cell; - } - - /** - * After finishing processing each cell, a row is considered empty if it contains - * no cells or if the last read cell is empty. - * After finishing processing each cell, the last read cell is not part of the - * row data yet (as we still need to apply the "num-columns-repeated" attribute). - * - * @param null|Cell $lastReadCell The last read cell - * - * @return bool Whether the row is empty - */ - private function isEmptyRow(Row $currentRow, ?Cell $lastReadCell): bool - { - return - $currentRow->isEmpty() - && (null === $lastReadCell || $lastReadCell instanceof Cell\EmptyCell); - } -} diff --git a/vendor/openspout/openspout/src/Reader/ODS/Sheet.php b/vendor/openspout/openspout/src/Reader/ODS/Sheet.php deleted file mode 100644 index 52917b58..00000000 --- a/vendor/openspout/openspout/src/Reader/ODS/Sheet.php +++ /dev/null @@ -1,81 +0,0 @@ - - */ -final class Sheet implements SheetWithVisibilityInterface -{ - /** @var RowIterator To iterate over sheet's rows */ - private readonly RowIterator $rowIterator; - - /** @var int Index of the sheet, based on order in the workbook (zero-based) */ - private readonly int $index; - - /** @var string Name of the sheet */ - private readonly string $name; - - /** @var bool Whether the sheet was the active one */ - private readonly bool $isActive; - - /** @var bool Whether the sheet is visible */ - private readonly bool $isVisible; - - /** - * @param RowIterator $rowIterator The corresponding row iterator - * @param int $sheetIndex Index of the sheet, based on order in the workbook (zero-based) - * @param string $sheetName Name of the sheet - * @param bool $isSheetActive Whether the sheet was defined as active - * @param bool $isSheetVisible Whether the sheet is visible - */ - public function __construct(RowIterator $rowIterator, int $sheetIndex, string $sheetName, bool $isSheetActive, bool $isSheetVisible) - { - $this->rowIterator = $rowIterator; - $this->index = $sheetIndex; - $this->name = $sheetName; - $this->isActive = $isSheetActive; - $this->isVisible = $isSheetVisible; - } - - public function getRowIterator(): RowIterator - { - return $this->rowIterator; - } - - /** - * @return int Index of the sheet, based on order in the workbook (zero-based) - */ - public function getIndex(): int - { - return $this->index; - } - - /** - * @return string Name of the sheet - */ - public function getName(): string - { - return $this->name; - } - - /** - * @return bool Whether the sheet was defined as active - */ - public function isActive(): bool - { - return $this->isActive; - } - - /** - * @return bool Whether the sheet is visible - */ - public function isVisible(): bool - { - return $this->isVisible; - } -} diff --git a/vendor/openspout/openspout/src/Reader/ODS/SheetIterator.php b/vendor/openspout/openspout/src/Reader/ODS/SheetIterator.php deleted file mode 100644 index a6b34de1..00000000 --- a/vendor/openspout/openspout/src/Reader/ODS/SheetIterator.php +++ /dev/null @@ -1,228 +0,0 @@ - - */ -final class SheetIterator implements SheetIteratorInterface -{ - public const CONTENT_XML_FILE_PATH = 'content.xml'; - - public const XML_STYLE_NAMESPACE = 'urn:oasis:names:tc:opendocument:xmlns:style:1.0'; - - /** - * Definition of XML nodes name and attribute used to parse sheet data. - */ - public const XML_NODE_AUTOMATIC_STYLES = 'office:automatic-styles'; - public const XML_NODE_STYLE_TABLE_PROPERTIES = 'table-properties'; - public const XML_NODE_TABLE = 'table:table'; - public const XML_ATTRIBUTE_STYLE_NAME = 'style:name'; - public const XML_ATTRIBUTE_TABLE_NAME = 'table:name'; - public const XML_ATTRIBUTE_TABLE_STYLE_NAME = 'table:style-name'; - public const XML_ATTRIBUTE_TABLE_DISPLAY = 'table:display'; - - /** @var string Path of the file to be read */ - private readonly string $filePath; - - private readonly Options $options; - - /** @var XMLReader The XMLReader object that will help read sheet's XML data */ - private readonly XMLReader $xmlReader; - - /** @var ODS Used to unescape XML data */ - private readonly ODS $escaper; - - /** @var bool Whether there are still at least a sheet to be read */ - private bool $hasFoundSheet; - - /** @var int The index of the sheet being read (zero-based) */ - private int $currentSheetIndex; - - /** @var string The name of the sheet that was defined as active */ - private readonly ?string $activeSheetName; - - /** @var array Associative array [STYLE_NAME] => [IS_SHEET_VISIBLE] */ - private array $sheetsVisibility; - - public function __construct( - string $filePath, - Options $options, - ODS $escaper, - SettingsHelper $settingsHelper - ) { - $this->filePath = $filePath; - $this->options = $options; - $this->xmlReader = new XMLReader(); - $this->escaper = $escaper; - $this->activeSheetName = $settingsHelper->getActiveSheetName($filePath); - } - - /** - * Rewind the Iterator to the first element. - * - * @see http://php.net/manual/en/iterator.rewind.php - * - * @throws IOException If unable to open the XML file containing sheets' data - */ - public function rewind(): void - { - $this->xmlReader->close(); - - if (false === $this->xmlReader->openFileInZip($this->filePath, self::CONTENT_XML_FILE_PATH)) { - $contentXmlFilePath = $this->filePath.'#'.self::CONTENT_XML_FILE_PATH; - - throw new IOException("Could not open \"{$contentXmlFilePath}\"."); - } - - try { - $this->sheetsVisibility = $this->readSheetsVisibility(); - $this->hasFoundSheet = $this->xmlReader->readUntilNodeFound(self::XML_NODE_TABLE); - } catch (XMLProcessingException $exception) { - throw new IOException("The content.xml file is invalid and cannot be read. [{$exception->getMessage()}]"); - } - - $this->currentSheetIndex = 0; - } - - /** - * Checks if current position is valid. - * - * @see http://php.net/manual/en/iterator.valid.php - */ - public function valid(): bool - { - $valid = $this->hasFoundSheet; - if (!$valid) { - $this->xmlReader->close(); - } - - return $valid; - } - - /** - * Move forward to next element. - * - * @see http://php.net/manual/en/iterator.next.php - */ - public function next(): void - { - $this->hasFoundSheet = $this->xmlReader->readUntilNodeFound(self::XML_NODE_TABLE); - - if ($this->hasFoundSheet) { - ++$this->currentSheetIndex; - } - } - - /** - * Return the current element. - * - * @see http://php.net/manual/en/iterator.current.php - */ - public function current(): Sheet - { - $escapedSheetName = $this->xmlReader->getAttribute(self::XML_ATTRIBUTE_TABLE_NAME); - \assert(null !== $escapedSheetName); - $sheetName = $this->escaper->unescape($escapedSheetName); - - $isSheetActive = $this->isSheetActive($sheetName, $this->currentSheetIndex, $this->activeSheetName); - - $sheetStyleName = $this->xmlReader->getAttribute(self::XML_ATTRIBUTE_TABLE_STYLE_NAME); - \assert(null !== $sheetStyleName); - $isSheetVisible = $this->isSheetVisible($sheetStyleName); - - return new Sheet( - new RowIterator( - $this->options, - new CellValueFormatter($this->options->SHOULD_FORMAT_DATES, new ODS()), - new XMLProcessor($this->xmlReader) - ), - $this->currentSheetIndex, - $sheetName, - $isSheetActive, - $isSheetVisible - ); - } - - /** - * Return the key of the current element. - * - * @see http://php.net/manual/en/iterator.key.php - */ - public function key(): int - { - return $this->currentSheetIndex + 1; - } - - /** - * Extracts the visibility of the sheets. - * - * @return array Associative array [STYLE_NAME] => [IS_SHEET_VISIBLE] - */ - private function readSheetsVisibility(): array - { - $sheetsVisibility = []; - - $this->xmlReader->readUntilNodeFound(self::XML_NODE_AUTOMATIC_STYLES); - - $automaticStylesNode = $this->xmlReader->expand(); - \assert($automaticStylesNode instanceof DOMElement); - - $tableStyleNodes = $automaticStylesNode->getElementsByTagNameNS(self::XML_STYLE_NAMESPACE, self::XML_NODE_STYLE_TABLE_PROPERTIES); - - foreach ($tableStyleNodes as $tableStyleNode) { - $isSheetVisible = ('false' !== $tableStyleNode->getAttribute(self::XML_ATTRIBUTE_TABLE_DISPLAY)); - - $parentStyleNode = $tableStyleNode->parentNode; - \assert($parentStyleNode instanceof DOMElement); - $styleName = $parentStyleNode->getAttribute(self::XML_ATTRIBUTE_STYLE_NAME); - - $sheetsVisibility[$styleName] = $isSheetVisible; - } - - return $sheetsVisibility; - } - - /** - * Returns whether the current sheet was defined as the active one. - * - * @param string $sheetName Name of the current sheet - * @param int $sheetIndex Index of the current sheet - * @param null|string $activeSheetName Name of the sheet that was defined as active or NULL if none defined - * - * @return bool Whether the current sheet was defined as the active one - */ - private function isSheetActive(string $sheetName, int $sheetIndex, ?string $activeSheetName): bool - { - // The given sheet is active if its name matches the defined active sheet's name - // or if no information about the active sheet was found, it defaults to the first sheet. - return - (null === $activeSheetName && 0 === $sheetIndex) - || ($activeSheetName === $sheetName); - } - - /** - * Returns whether the current sheet is visible. - * - * @param string $sheetStyleName Name of the sheet style - * - * @return bool Whether the current sheet is visible - */ - private function isSheetVisible(string $sheetStyleName): bool - { - return $this->sheetsVisibility[$sheetStyleName] ?? - true; - } -} diff --git a/vendor/openspout/openspout/src/Reader/ReaderInterface.php b/vendor/openspout/openspout/src/Reader/ReaderInterface.php deleted file mode 100644 index 691bdd66..00000000 --- a/vendor/openspout/openspout/src/Reader/ReaderInterface.php +++ /dev/null @@ -1,37 +0,0 @@ - - */ -interface RowIteratorInterface extends Iterator -{ - public function current(): ?Row; -} diff --git a/vendor/openspout/openspout/src/Reader/SheetInterface.php b/vendor/openspout/openspout/src/Reader/SheetInterface.php deleted file mode 100644 index ebd41e3b..00000000 --- a/vendor/openspout/openspout/src/Reader/SheetInterface.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -interface SheetIteratorInterface extends Iterator -{ - /** - * @return T of SheetInterface - */ - public function current(): SheetInterface; -} diff --git a/vendor/openspout/openspout/src/Reader/SheetWithVisibilityInterface.php b/vendor/openspout/openspout/src/Reader/SheetWithVisibilityInterface.php deleted file mode 100644 index e4566045..00000000 --- a/vendor/openspout/openspout/src/Reader/SheetWithVisibilityInterface.php +++ /dev/null @@ -1,18 +0,0 @@ - - */ -interface SheetWithVisibilityInterface extends SheetInterface -{ - /** - * @return bool Whether the sheet is visible - */ - public function isVisible(): bool; -} diff --git a/vendor/openspout/openspout/src/Reader/Wrapper/XMLInternalErrorsHelper.php b/vendor/openspout/openspout/src/Reader/Wrapper/XMLInternalErrorsHelper.php deleted file mode 100644 index 76ccc202..00000000 --- a/vendor/openspout/openspout/src/Reader/Wrapper/XMLInternalErrorsHelper.php +++ /dev/null @@ -1,77 +0,0 @@ -initialUseInternalErrorsValue = libxml_use_internal_errors(true); - } - - /** - * Throws an XMLProcessingException if an error occured. - * It also always resets the "libxml_use_internal_errors" setting back to its initial value. - * - * @throws XMLProcessingException - */ - private function resetXMLInternalErrorsSettingAndThrowIfXMLErrorOccured(): void - { - if ($this->hasXMLErrorOccured()) { - $this->resetXMLInternalErrorsSetting(); - - throw new XMLProcessingException($this->getLastXMLErrorMessage()); - } - - $this->resetXMLInternalErrorsSetting(); - } - - private function resetXMLInternalErrorsSetting(): void - { - libxml_use_internal_errors($this->initialUseInternalErrorsValue); - } - - /** - * Returns whether the a XML error has occured since the last time errors were cleared. - * - * @return bool TRUE if an error occured, FALSE otherwise - */ - private function hasXMLErrorOccured(): bool - { - return false !== libxml_get_last_error(); - } - - /** - * Returns the error message for the last XML error that occured. - * - * @see libxml_get_last_error - * - * @return string Last XML error message or null if no error - */ - private function getLastXMLErrorMessage(): string - { - $errorMessage = ''; - $error = libxml_get_last_error(); - - if (false !== $error) { - $errorMessage = trim($error->message); - } - - return $errorMessage; - } -} diff --git a/vendor/openspout/openspout/src/Reader/Wrapper/XMLReader.php b/vendor/openspout/openspout/src/Reader/Wrapper/XMLReader.php deleted file mode 100644 index c2ebc16b..00000000 --- a/vendor/openspout/openspout/src/Reader/Wrapper/XMLReader.php +++ /dev/null @@ -1,181 +0,0 @@ -getRealPathURIForFileInZip($zipFilePath, $fileInsideZipPath); - - // We need to check first that the file we are trying to read really exist because: - // - PHP emits a warning when trying to open a file that does not exist. - if ($this->fileExistsWithinZip($realPathURI)) { - $wasOpenSuccessful = $this->open($realPathURI, null, LIBXML_NONET); - } - - return $wasOpenSuccessful; - } - - /** - * Returns the real path for the given path components. - * This is useful to avoid issues on some Windows setup. - * - * @param string $zipFilePath Path to the ZIP file - * @param string $fileInsideZipPath Relative or absolute path of the file inside the zip - * - * @return string The real path URI - */ - public function getRealPathURIForFileInZip(string $zipFilePath, string $fileInsideZipPath): string - { - // The file path should not start with a '/', otherwise it won't be found - $fileInsideZipPathWithoutLeadingSlash = ltrim($fileInsideZipPath, '/'); - - return self::ZIP_WRAPPER.realpath($zipFilePath).'#'.$fileInsideZipPathWithoutLeadingSlash; - } - - /** - * Move to next node in document. - * - * @see \XMLReader::read - * - * @throws XMLProcessingException If an error/warning occurred - */ - public function read(): bool - { - $this->useXMLInternalErrors(); - - $wasReadSuccessful = parent::read(); - - $this->resetXMLInternalErrorsSettingAndThrowIfXMLErrorOccured(); - - return $wasReadSuccessful; - } - - /** - * Read until the element with the given name is found, or the end of the file. - * - * @param string $nodeName Name of the node to find - * - * @return bool TRUE on success or FALSE on failure - * - * @throws XMLProcessingException If an error/warning occurred - */ - public function readUntilNodeFound(string $nodeName): bool - { - do { - $wasReadSuccessful = $this->read(); - $isNotPositionedOnStartingNode = !$this->isPositionedOnStartingNode($nodeName); - } while ($wasReadSuccessful && $isNotPositionedOnStartingNode); - - return $wasReadSuccessful; - } - - /** - * Move cursor to next node skipping all subtrees. - * - * @see \XMLReader::next - * - * @param null|string $localName The name of the next node to move to - * - * @throws XMLProcessingException If an error/warning occurred - */ - public function next($localName = null): bool - { - $this->useXMLInternalErrors(); - - $wasNextSuccessful = parent::next($localName); - - $this->resetXMLInternalErrorsSettingAndThrowIfXMLErrorOccured(); - - return $wasNextSuccessful; - } - - /** - * @return bool Whether the XML Reader is currently positioned on the starting node with given name - */ - public function isPositionedOnStartingNode(string $nodeName): bool - { - return $this->isPositionedOnNode($nodeName, self::ELEMENT); - } - - /** - * @return bool Whether the XML Reader is currently positioned on the ending node with given name - */ - public function isPositionedOnEndingNode(string $nodeName): bool - { - return $this->isPositionedOnNode($nodeName, self::END_ELEMENT); - } - - /** - * @return string The name of the current node, un-prefixed - */ - public function getCurrentNodeName(): string - { - return $this->localName; - } - - /** - * Returns whether the file at the given location exists. - * - * @param string $zipStreamURI URI of a zip stream, e.g. "zip://file.zip#path/inside.xml" - * - * @return bool TRUE if the file exists, FALSE otherwise - */ - private function fileExistsWithinZip(string $zipStreamURI): bool - { - $doesFileExists = false; - - $pattern = '/zip:\/\/([^#]+)#(.*)/'; - if (1 === preg_match($pattern, $zipStreamURI, $matches)) { - $zipFilePath = $matches[1]; - $innerFilePath = $matches[2]; - - $zip = new ZipArchive(); - if (true === $zip->open($zipFilePath)) { - $doesFileExists = (false !== $zip->locateName($innerFilePath)); - $zip->close(); - } - } - - return $doesFileExists; - } - - /** - * @return bool Whether the XML Reader is currently positioned on the node with given name and type - */ - private function isPositionedOnNode(string $nodeName, int $nodeType): bool - { - /** - * In some cases, the node has a prefix (for instance, "" can also be ""). - * So if the given node name does not have a prefix, we need to look at the unprefixed name ("localName"). - * - * @see https://github.com/box/spout/issues/233 - */ - $hasPrefix = str_contains($nodeName, ':'); - $currentNodeName = ($hasPrefix) ? $this->name : $this->localName; - - return $this->nodeType === $nodeType && $currentNodeName === $nodeName; - } -} diff --git a/vendor/openspout/openspout/src/Reader/XLSX/Helper/CellHelper.php b/vendor/openspout/openspout/src/Reader/XLSX/Helper/CellHelper.php deleted file mode 100644 index 0b1fec26..00000000 --- a/vendor/openspout/openspout/src/Reader/XLSX/Helper/CellHelper.php +++ /dev/null @@ -1,85 +0,0 @@ - 0, 'B' => 1, 'C' => 2, 'D' => 3, 'E' => 4, 'F' => 5, 'G' => 6, - 'H' => 7, 'I' => 8, 'J' => 9, 'K' => 10, 'L' => 11, 'M' => 12, 'N' => 13, - 'O' => 14, 'P' => 15, 'Q' => 16, 'R' => 17, 'S' => 18, 'T' => 19, 'U' => 20, - 'V' => 21, 'W' => 22, 'X' => 23, 'Y' => 24, 'Z' => 25, - ]; - - /** - * Returns the base 10 column index associated to the cell index (base 26). - * Excel uses A to Z letters for column indexing, where A is the 1st column, - * Z is the 26th and AA is the 27th. - * The mapping is zero based, so that A1 maps to 0, B2 maps to 1, Z13 to 25 and AA4 to 26. - * - * @param string $cellIndex The Excel cell index ('A1', 'BC13', ...) - * - * @throws InvalidArgumentException When the given cell index is invalid - */ - public static function getColumnIndexFromCellIndex(string $cellIndex): int - { - if (!self::isValidCellIndex($cellIndex)) { - throw new InvalidArgumentException('Cannot get column index from an invalid cell index.'); - } - - $columnIndex = 0; - - // Remove row information - $columnLetters = preg_replace('/\d/', '', $cellIndex); - - // strlen() is super slow too... Using isset() is way faster and not too unreadable, - // since we checked before that there are between 1 and 3 letters. - $columnLength = isset($columnLetters[1]) ? (isset($columnLetters[2]) ? 3 : 2) : 1; - - // Looping over the different letters of the column is slower than this method. - // Also, not using the pow() function because it's slooooow... - switch ($columnLength) { - case 1: - $columnIndex = self::columnLetterToIndexMapping[$columnLetters]; - - break; - - case 2: - $firstLetterIndex = (self::columnLetterToIndexMapping[$columnLetters[0]] + 1) * 26; - $secondLetterIndex = self::columnLetterToIndexMapping[$columnLetters[1]]; - $columnIndex = $firstLetterIndex + $secondLetterIndex; - - break; - - case 3: - $firstLetterIndex = (self::columnLetterToIndexMapping[$columnLetters[0]] + 1) * 676; - $secondLetterIndex = (self::columnLetterToIndexMapping[$columnLetters[1]] + 1) * 26; - $thirdLetterIndex = self::columnLetterToIndexMapping[$columnLetters[2]]; - $columnIndex = $firstLetterIndex + $secondLetterIndex + $thirdLetterIndex; - - break; - } - - return $columnIndex; - } - - /** - * Returns whether a cell index is valid, in an Excel world. - * To be valid, the cell index should start with capital letters and be followed by numbers. - * There can only be 3 letters, as there can only be 16,384 rows, which is equivalent to 'XFE'. - * - * @param string $cellIndex The Excel cell index ('A1', 'BC13', ...) - */ - private static function isValidCellIndex(string $cellIndex): bool - { - return 1 === preg_match('/^[A-Z]{1,3}\d+$/', $cellIndex); - } -} diff --git a/vendor/openspout/openspout/src/Reader/XLSX/Helper/CellValueFormatter.php b/vendor/openspout/openspout/src/Reader/XLSX/Helper/CellValueFormatter.php deleted file mode 100644 index 0157f5c2..00000000 --- a/vendor/openspout/openspout/src/Reader/XLSX/Helper/CellValueFormatter.php +++ /dev/null @@ -1,331 +0,0 @@ -sharedStringsManager = $sharedStringsManager; - $this->styleManager = $styleManager; - $this->shouldFormatDates = $shouldFormatDates; - $this->shouldUse1904Dates = $shouldUse1904Dates; - $this->escaper = $escaper; - } - - /** - * Returns the (unescaped) correctly marshalled, cell value associated to the given XML node. - */ - public function extractAndFormatNodeValue(DOMElement $node): Cell - { - // Default cell type is "n" - $cellType = $node->getAttribute(self::XML_ATTRIBUTE_TYPE); - if ('' === $cellType) { - $cellType = self::CELL_TYPE_NUMERIC; - } - $vNodeValue = $this->getVNodeValue($node); - - if (self::CELL_TYPE_NUMERIC === $cellType) { - $fNodeValue = $node->getElementsByTagName(self::XML_NODE_FORMULA)->item(0)?->nodeValue; - if (null !== $fNodeValue) { - $computedValue = $this->formatNumericCellValue($vNodeValue, (int) $node->getAttribute(self::XML_ATTRIBUTE_STYLE_ID)); - - return new Cell\FormulaCell('='.$fNodeValue, null, $computedValue); - } - } - - if ('' === $vNodeValue && self::CELL_TYPE_INLINE_STRING !== $cellType) { - return Cell::fromValue($vNodeValue); - } - - $rawValue = match ($cellType) { - self::CELL_TYPE_INLINE_STRING => $this->formatInlineStringCellValue($node), - self::CELL_TYPE_SHARED_STRING => $this->formatSharedStringCellValue($vNodeValue), - self::CELL_TYPE_STR => $this->formatStrCellValue($vNodeValue), - self::CELL_TYPE_BOOLEAN => $this->formatBooleanCellValue($vNodeValue), - self::CELL_TYPE_NUMERIC => $this->formatNumericCellValue($vNodeValue, (int) $node->getAttribute(self::XML_ATTRIBUTE_STYLE_ID)), - self::CELL_TYPE_DATE => $this->formatDateCellValue($vNodeValue), - default => new Cell\ErrorCell($vNodeValue, null), - }; - - if ($rawValue instanceof Cell) { - return $rawValue; - } - - return Cell::fromValue($rawValue); - } - - /** - * Returns the cell's string value from a node's nested value node. - * - * @return string The value associated with the cell - */ - private function getVNodeValue(DOMElement $node): string - { - // for cell types having a "v" tag containing the value. - // if not, the returned value should be empty string. - $vNode = $node->getElementsByTagName(self::XML_NODE_VALUE)->item(0); - - return (string) $vNode?->nodeValue; - } - - /** - * Returns the cell String value where string is inline. - * - * @return string The value associated with the cell - */ - private function formatInlineStringCellValue(DOMElement $node): string - { - // inline strings are formatted this way (they can contain any number of nodes): - // [INLINE_STRING][INLINE_STRING_2] - $tNodes = $node->getElementsByTagName(self::XML_NODE_INLINE_STRING_VALUE); - - $cellValue = ''; - for ($i = 0; $i < $tNodes->count(); ++$i) { - $nodeValue = $tNodes->item($i)->nodeValue; - \assert(null !== $nodeValue); - $cellValue .= $this->escaper->unescape($nodeValue); - } - - return $cellValue; - } - - /** - * Returns the cell String value from shared-strings file using nodeValue index. - * - * @return string The value associated with the cell - */ - private function formatSharedStringCellValue(string $nodeValue): string - { - // shared strings are formatted this way: - // [SHARED_STRING_INDEX] - $sharedStringIndex = (int) $nodeValue; - $escapedCellValue = $this->sharedStringsManager->getStringAtIndex($sharedStringIndex); - - return $this->escaper->unescape($escapedCellValue); - } - - /** - * Returns the cell String value, where string is stored in value node. - * - * @return string The value associated with the cell - */ - private function formatStrCellValue(string $nodeValue): string - { - $escapedCellValue = trim($nodeValue); - - return $this->escaper->unescape($escapedCellValue); - } - - /** - * Returns the cell Numeric value from string of nodeValue. - * The value can also represent a timestamp and a DateTime will be returned. - * - * @param int $cellStyleId 0 being the default style - */ - private function formatNumericCellValue(float|int|string $nodeValue, int $cellStyleId): DateInterval|DateTimeImmutable|float|int|string - { - // Numeric values can represent numbers as well as timestamps. - // We need to look at the style of the cell to determine whether it is one or the other. - $formatCode = $this->styleManager->getNumberFormatCode($cellStyleId); - - if (DateIntervalFormatHelper::isDurationFormat($formatCode)) { - $cellValue = $this->formatExcelDateIntervalValue((float) $nodeValue, $formatCode); - } elseif ($this->styleManager->shouldFormatNumericValueAsDate($cellStyleId)) { - $cellValue = $this->formatExcelTimestampValue((float) $nodeValue, $cellStyleId); - } else { - $nodeIntValue = (int) $nodeValue; - $nodeFloatValue = (float) $nodeValue; - $cellValue = ((float) $nodeIntValue === $nodeFloatValue) ? $nodeIntValue : $nodeFloatValue; - } - - return $cellValue; - } - - private function formatExcelDateIntervalValue(float $nodeValue, string $excelFormat): DateInterval|string - { - $dateInterval = DateIntervalFormatHelper::createDateIntervalFromHours($nodeValue); - if ($this->shouldFormatDates) { - return DateIntervalFormatHelper::formatDateInterval($dateInterval, $excelFormat); - } - - return $dateInterval; - } - - /** - * Returns a cell's PHP Date value, associated to the given timestamp. - * NOTE: The timestamp is a float representing the number of days since the base Excel date: - * Dec 30th 1899, 1900 or Jan 1st, 1904, depending on the Workbook setting. - * NOTE: The timestamp can also represent a time, if it is a value between 0 and 1. - * - * @param int $cellStyleId 0 being the default style - * - * @throws InvalidValueException If the value is not a valid timestamp - * - * @see ECMA-376 Part 1 - §18.17.4 - */ - private function formatExcelTimestampValue(float $nodeValue, int $cellStyleId): DateTimeImmutable|string - { - if (!$this->isValidTimestampValue($nodeValue)) { - throw new InvalidValueException((string) $nodeValue); - } - - return $this->formatExcelTimestampValueAsDateTimeValue($nodeValue, $cellStyleId); - } - - /** - * Returns whether the given timestamp is supported by SpreadsheetML. - * - * @see ECMA-376 Part 1 - §18.17.4 - this specifies the timestamp boundaries. - */ - private function isValidTimestampValue(float $timestampValue): bool - { - // @NOTE: some versions of Excel don't support negative dates (e.g. Excel for Mac 2011) - return - $this->shouldUse1904Dates && $timestampValue >= -695055 && $timestampValue <= 2957003.9999884 - || !$this->shouldUse1904Dates && $timestampValue >= -693593 && $timestampValue <= 2958465.9999884; - } - - /** - * Returns a cell's PHP DateTime value, associated to the given timestamp. - * Only the time value matters. The date part is set to the base Excel date: - * Dec 30th 1899, 1900 or Jan 1st, 1904, depending on the Workbook setting. - * - * @param int $cellStyleId 0 being the default style - */ - private function formatExcelTimestampValueAsDateTimeValue(float $nodeValue, int $cellStyleId): DateTimeImmutable|string - { - $baseDate = $this->shouldUse1904Dates ? '1904-01-01' : '1899-12-30'; - - $daysSinceBaseDate = (int) $nodeValue; - $daysSign = '+'; - if ($daysSinceBaseDate < 0) { - $daysSinceBaseDate = abs($daysSinceBaseDate); - $daysSign = '-'; - } - $timeRemainder = fmod($nodeValue, 1); - $secondsRemainder = round($timeRemainder * self::NUM_SECONDS_IN_ONE_DAY, 0); - $secondsSign = '+'; - if ($secondsRemainder < 0) { - $secondsRemainder = abs($secondsRemainder); - $secondsSign = '-'; - } - - $dateObj = DateTimeImmutable::createFromFormat('|Y-m-d', $baseDate); - \assert(false !== $dateObj); - $dateObj = $dateObj->modify($daysSign.$daysSinceBaseDate.'days'); - \assert(false !== $dateObj); - $dateObj = $dateObj->modify($secondsSign.$secondsRemainder.'seconds'); - \assert(false !== $dateObj); - - if ($this->shouldFormatDates) { - $styleNumberFormatCode = $this->styleManager->getNumberFormatCode($cellStyleId); - $phpDateFormat = DateFormatHelper::toPHPDateFormat($styleNumberFormatCode); - $cellValue = $dateObj->format($phpDateFormat); - } else { - $cellValue = $dateObj; - } - - return $cellValue; - } - - /** - * Returns the cell Boolean value from a specific node's Value. - * - * @return bool The value associated with the cell - */ - private function formatBooleanCellValue(string $nodeValue): bool - { - return (bool) $nodeValue; - } - - /** - * Returns a cell's PHP Date value, associated to the given stored nodeValue. - * - * @see ECMA-376 Part 1 - §18.17.4 - * - * @param string $nodeValue ISO 8601 Date string - */ - private function formatDateCellValue(string $nodeValue): Cell\ErrorCell|DateTimeImmutable|string - { - // Mitigate thrown Exception on invalid date-time format (http://php.net/manual/en/datetime.construct.php) - try { - $cellValue = ($this->shouldFormatDates) ? $nodeValue : new DateTimeImmutable($nodeValue); - } catch (Exception) { - return new Cell\ErrorCell($nodeValue, null); - } - - return $cellValue; - } -} diff --git a/vendor/openspout/openspout/src/Reader/XLSX/Helper/DateFormatHelper.php b/vendor/openspout/openspout/src/Reader/XLSX/Helper/DateFormatHelper.php deleted file mode 100644 index 5b6fba79..00000000 --- a/vendor/openspout/openspout/src/Reader/XLSX/Helper/DateFormatHelper.php +++ /dev/null @@ -1,125 +0,0 @@ - [ - // Time - 'am/pm' => 'A', // Uppercase Ante meridiem and Post meridiem - ':mm' => ':i', // Minutes with leading zeros - if preceded by a ":" (otherwise month) - 'mm:' => 'i:', // Minutes with leading zeros - if followed by a ":" (otherwise month) - 'ss' => 's', // Seconds, with leading zeros - '.s' => '', // Ignore (fractional seconds format does not exist in PHP) - - // Date - 'e' => 'Y', // Full numeric representation of a year, 4 digits - 'yyyy' => 'Y', // Full numeric representation of a year, 4 digits - 'yy' => 'y', // Two digit representation of a year - 'mmmmm' => 'M', // Short textual representation of a month, three letters ("mmmmm" should only contain the 1st letter...) - 'mmmm' => 'F', // Full textual representation of a month - 'mmm' => 'M', // Short textual representation of a month, three letters - 'mm' => 'm', // Numeric representation of a month, with leading zeros - 'm' => 'n', // Numeric representation of a month, without leading zeros - 'dddd' => 'l', // Full textual representation of the day of the week - 'ddd' => 'D', // Textual representation of a day, three letters - 'dd' => 'd', // Day of the month, 2 digits with leading zeros - 'd' => 'j', // Day of the month without leading zeros - ], - self::KEY_HOUR_12 => [ - 'hh' => 'h', // 12-hour format of an hour without leading zeros - 'h' => 'g', // 12-hour format of an hour without leading zeros - ], - self::KEY_HOUR_24 => [ - 'hh' => 'H', // 24-hour hours with leading zero - 'h' => 'G', // 24-hour format of an hour without leading zeros - ], - ]; - - /** - * Converts the given Excel date format to a format understandable by the PHP date function. - * - * @param string $excelDateFormat Excel date format - * - * @return string PHP date format (as defined here: http://php.net/manual/en/function.date.php) - */ - public static function toPHPDateFormat(string $excelDateFormat): string - { - // Remove brackets potentially present at the beginning of the format string - // and text portion of the format at the end of it (starting with ";") - // See §18.8.31 of ECMA-376 for more detail. - $dateFormat = preg_replace('/^(?:\[\$[^\]]+?\])?([^;]*).*/', '$1', $excelDateFormat); - \assert(null !== $dateFormat); - - // Double quotes are used to escape characters that must not be interpreted. - // For instance, ["Day " dd] should result in "Day 13" and we should not try to interpret "D", "a", "y" - // By exploding the format string using double quote as a delimiter, we can get all parts - // that must be transformed (even indexes) and all parts that must not be (odd indexes). - $dateFormatParts = explode('"', $dateFormat); - - foreach ($dateFormatParts as $partIndex => $dateFormatPart) { - // do not look at odd indexes - if (1 === $partIndex % 2) { - continue; - } - - // Make sure all characters are lowercase, as the mapping table is using lowercase characters - $transformedPart = strtolower($dateFormatPart); - - // Remove escapes related to non-format characters - $transformedPart = str_replace('\\', '', $transformedPart); - - // Apply general transformation first... - $transformedPart = strtr($transformedPart, self::excelDateFormatToPHPDateFormatMapping[self::KEY_GENERAL]); - - // ... then apply hour transformation, for 12-hour or 24-hour format - if (self::has12HourFormatMarker($dateFormatPart)) { - $transformedPart = strtr($transformedPart, self::excelDateFormatToPHPDateFormatMapping[self::KEY_HOUR_12]); - } else { - $transformedPart = strtr($transformedPart, self::excelDateFormatToPHPDateFormatMapping[self::KEY_HOUR_24]); - } - - // overwrite the parts array with the new transformed part - $dateFormatParts[$partIndex] = $transformedPart; - } - - // Merge all transformed parts back together - $phpDateFormat = implode('"', $dateFormatParts); - - // Finally, to have the date format compatible with the DateTime::format() function, we need to escape - // all characters that are inside double quotes (and double quotes must be removed). - // For instance, ["Day " dd] should become [\D\a\y\ dd] - return preg_replace_callback('/"(.+?)"/', static function ($matches): string { - $stringToEscape = $matches[1]; - $letters = preg_split('//u', $stringToEscape, -1, PREG_SPLIT_NO_EMPTY); - \assert(false !== $letters); - - return '\\'.implode('\\', $letters); - }, $phpDateFormat); - } - - /** - * @param string $excelDateFormat Date format as defined by Excel - * - * @return bool Whether the given date format has the 12-hour format marker - */ - private static function has12HourFormatMarker(string $excelDateFormat): bool - { - return false !== stripos($excelDateFormat, 'am/pm'); - } -} diff --git a/vendor/openspout/openspout/src/Reader/XLSX/Helper/DateIntervalFormatHelper.php b/vendor/openspout/openspout/src/Reader/XLSX/Helper/DateIntervalFormatHelper.php deleted file mode 100644 index 7ae1a6e5..00000000 --- a/vendor/openspout/openspout/src/Reader/XLSX/Helper/DateIntervalFormatHelper.php +++ /dev/null @@ -1,96 +0,0 @@ - '%H', - 'h' => '%h', - 'mm' => '%I', - 'm' => '%i', - 'ss' => '%S', - 's' => '%s', - ]; - - /** - * Excel stores durations as fractions of days (24h = 1). - * - * Only fills hours/minutes/seconds because those are the only values that we can format back out again. - * Excel can also only handle those units as duration. - * PHP's DateInterval is also quite limited - it will not automatically convert unit overflow - * (60 seconds are not converted to 1 minute). - */ - public static function createDateIntervalFromHours(float $dayFractions): DateInterval - { - $time = abs($dayFractions) * 24; // convert to hours - $hours = floor($time); - $time = ($time - $hours) * 60; - $minutes = (int) floor($time); // must cast to int for type strict compare below - $time = ($time - $minutes) * 60; - $seconds = (int) round($time); // must cast to int for type strict compare below - - // Bubble up rounding gain if we ended up with 60 seconds - disadvantage of using fraction of days for small durations: - if (60 === $seconds) { - $seconds = 0; - ++$minutes; - } - if (60 === $minutes) { - $minutes = 0; - ++$hours; - } - - $interval = new DateInterval("P0DT{$hours}H{$minutes}M{$seconds}S"); - if ($dayFractions < 0) { - $interval->invert = 1; - } - - return $interval; - } - - public static function isDurationFormat(string $excelFormat): bool - { - // Only consider formats with leading brackets as valid duration formats (e.g. "[hh]:mm", "[mm]:ss", etc.): - return 1 === preg_match('/^(\[hh?](:mm(:ss)?)?|\[mm?](:ss)?|\[ss?])$/', $excelFormat); - } - - public static function toPHPDateIntervalFormat(string $excelDateFormat, ?string &$startUnit = null): string - { - $startUnit = null; - $phpFormatParts = []; - $formatParts = explode(':', str_replace(['[', ']'], '', $excelDateFormat)); - foreach ($formatParts as $formatPart) { - $startUnit ??= $formatPart; - $phpFormatParts[] = self::dateIntervalFormats[$formatPart]; - } - - // Add the minus sign for potential negative durations: - return '%r'.implode(':', $phpFormatParts); - } - - public static function formatDateInterval(DateInterval $dateInterval, string $excelDateFormat): string - { - $phpFormat = self::toPHPDateIntervalFormat($excelDateFormat, $startUnit); - - // We have to move the hours to minutes or hours+minutes to seconds if the format in Excel did the same: - $startUnit = $startUnit[0]; // only take the first char - $dateIntervalClone = clone $dateInterval; - if ('m' === $startUnit) { - $dateIntervalClone->i = $dateIntervalClone->i + $dateIntervalClone->h * 60; - $dateIntervalClone->h = 0; - } elseif ('s' === $startUnit) { - $dateIntervalClone->s = $dateIntervalClone->s + $dateIntervalClone->i * 60 + $dateIntervalClone->h * 3600; - $dateIntervalClone->i = 0; - $dateIntervalClone->h = 0; - } - - return $dateIntervalClone->format($phpFormat); - } -} diff --git a/vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/CachingStrategyFactory.php b/vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/CachingStrategyFactory.php deleted file mode 100644 index 749e6285..00000000 --- a/vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/CachingStrategyFactory.php +++ /dev/null @@ -1,103 +0,0 @@ - 20 * 600 ≈ 12KB - */ - public const AMOUNT_MEMORY_NEEDED_PER_STRING_IN_KB = 12; - - /** - * To avoid running out of memory when extracting a huge number of shared strings, they can be saved to temporary files - * instead of in memory. Then, when accessing a string, the corresponding file contents will be loaded in memory - * and the string will be quickly retrieved. - * The performance bottleneck is not when creating these temporary files, but rather when loading their content. - * Because the contents of the last loaded file stays in memory until another file needs to be loaded, it works - * best when the indexes of the shared strings are sorted in the sheet data. - * 10,000 was chosen because it creates small files that are fast to be loaded in memory. - */ - public const MAX_NUM_STRINGS_PER_TEMP_FILE = 10000; - - private readonly MemoryLimit $memoryLimit; - - public function __construct(MemoryLimit $memoryLimit) - { - $this->memoryLimit = $memoryLimit; - } - - /** - * Returns the best caching strategy, given the number of unique shared strings - * and the amount of memory available. - * - * @param null|int $sharedStringsUniqueCount Number of unique shared strings (NULL if unknown) - * @param string $tempFolder Temporary folder where the temporary files to store shared strings will be stored - * - * @return CachingStrategyInterface The best caching strategy - */ - public function createBestCachingStrategy(?int $sharedStringsUniqueCount, string $tempFolder): CachingStrategyInterface - { - if ($this->isInMemoryStrategyUsageSafe($sharedStringsUniqueCount)) { - return new InMemoryStrategy($sharedStringsUniqueCount); - } - - return new FileBasedStrategy($tempFolder, self::MAX_NUM_STRINGS_PER_TEMP_FILE); - } - - /** - * Returns whether it is safe to use in-memory caching, given the number of unique shared strings - * and the amount of memory available. - * - * @param null|int $sharedStringsUniqueCount Number of unique shared strings (NULL if unknown) - */ - private function isInMemoryStrategyUsageSafe(?int $sharedStringsUniqueCount): bool - { - // if the number of shared strings in unknown, do not use "in memory" strategy - if (null === $sharedStringsUniqueCount) { - return false; - } - - $memoryAvailable = $this->memoryLimit->getMemoryLimitInKB(); - - if (-1 === (int) $memoryAvailable) { - // if cannot get memory limit or if memory limit set as unlimited, don't trust and play safe - $isInMemoryStrategyUsageSafe = ($sharedStringsUniqueCount < self::MAX_NUM_STRINGS_PER_TEMP_FILE); - } else { - $memoryNeeded = $sharedStringsUniqueCount * self::AMOUNT_MEMORY_NEEDED_PER_STRING_IN_KB; - $isInMemoryStrategyUsageSafe = ($memoryAvailable > $memoryNeeded); - } - - return $isInMemoryStrategyUsageSafe; - } -} diff --git a/vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/CachingStrategyFactoryInterface.php b/vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/CachingStrategyFactoryInterface.php deleted file mode 100644 index a506da73..00000000 --- a/vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/CachingStrategyFactoryInterface.php +++ /dev/null @@ -1,19 +0,0 @@ -fileSystemHelper = new FileSystemHelper($tempFolder); - $this->tempFolder = $this->fileSystemHelper->createFolder($tempFolder, uniqid('sharedstrings')); - - $this->maxNumStringsPerTempFile = $maxNumStringsPerTempFile; - } - - /** - * Adds the given string to the cache. - * - * @param string $sharedString The string to be added to the cache - * @param int $sharedStringIndex Index of the shared string in the sharedStrings.xml file - */ - public function addStringForIndex(string $sharedString, int $sharedStringIndex): void - { - $tempFilePath = $this->getSharedStringTempFilePath($sharedStringIndex); - - if (!file_exists($tempFilePath)) { - if (null !== $this->tempFilePointer) { - fclose($this->tempFilePointer); - } - $resource = fopen($tempFilePath, 'w'); - \assert(false !== $resource); - $this->tempFilePointer = $resource; - } - - // The shared string retrieval logic expects each cell data to be on one line only - // Encoding the line feed character allows to preserve this assumption - $lineFeedEncodedSharedString = $this->escapeLineFeed($sharedString); - - fwrite($this->tempFilePointer, $lineFeedEncodedSharedString.PHP_EOL); - } - - /** - * Closes the cache after the last shared string was added. - * This prevents any additional string from being added to the cache. - */ - public function closeCache(): void - { - // close pointer to the last temp file that was written - if (null !== $this->tempFilePointer) { - fclose($this->tempFilePointer); - } - } - - /** - * Returns the string located at the given index from the cache. - * - * @param int $sharedStringIndex Index of the shared string in the sharedStrings.xml file - * - * @return string The shared string at the given index - * - * @throws SharedStringNotFoundException If no shared string found for the given index - */ - public function getStringAtIndex(int $sharedStringIndex): string - { - $tempFilePath = $this->getSharedStringTempFilePath($sharedStringIndex); - $indexInFile = $sharedStringIndex % $this->maxNumStringsPerTempFile; - - if (!file_exists($tempFilePath)) { - throw new SharedStringNotFoundException("Shared string temp file not found: {$tempFilePath} ; for index: {$sharedStringIndex}"); - } - - if ($this->inMemoryTempFilePath !== $tempFilePath) { - $tempFilePath = realpath($tempFilePath); - \assert(false !== $tempFilePath); - $contents = file_get_contents($tempFilePath); - \assert(false !== $contents); - $this->inMemoryTempFileContents = explode(PHP_EOL, $contents); - $this->inMemoryTempFilePath = $tempFilePath; - } - - $sharedString = null; - - // Using isset here because it is way faster than array_key_exists... - if (isset($this->inMemoryTempFileContents[$indexInFile])) { - $escapedSharedString = $this->inMemoryTempFileContents[$indexInFile]; - $sharedString = $this->unescapeLineFeed($escapedSharedString); - } - - if (null === $sharedString) { - throw new SharedStringNotFoundException("Shared string not found for index: {$sharedStringIndex}"); - } - - return rtrim($sharedString, PHP_EOL); - } - - /** - * Destroys the cache, freeing memory and removing any created artifacts. - */ - public function clearCache(): void - { - $this->fileSystemHelper->deleteFolderRecursively($this->tempFolder); - } - - /** - * Returns the path for the temp file that should contain the string for the given index. - * - * @param int $sharedStringIndex Index of the shared string in the sharedStrings.xml file - * - * @return string The temp file path for the given index - */ - private function getSharedStringTempFilePath(int $sharedStringIndex): string - { - $numTempFile = (int) ($sharedStringIndex / $this->maxNumStringsPerTempFile); - - return $this->tempFolder.\DIRECTORY_SEPARATOR.'sharedstrings'.$numTempFile; - } - - /** - * Escapes the line feed characters (\n). - */ - private function escapeLineFeed(string $unescapedString): string - { - return str_replace("\n", self::ESCAPED_LINE_FEED_CHARACTER, $unescapedString); - } - - /** - * Unescapes the line feed characters (\n). - */ - private function unescapeLineFeed(string $escapedString): string - { - return str_replace(self::ESCAPED_LINE_FEED_CHARACTER, "\n", $escapedString); - } -} diff --git a/vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/InMemoryStrategy.php b/vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/InMemoryStrategy.php deleted file mode 100644 index a3bcffc4..00000000 --- a/vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/InMemoryStrategy.php +++ /dev/null @@ -1,81 +0,0 @@ - Array used to cache the shared strings */ - private SplFixedArray $inMemoryCache; - - /** @var bool Whether the cache has been closed */ - private bool $isCacheClosed = false; - - /** - * @param int $sharedStringsUniqueCount Number of unique shared strings - */ - public function __construct(int $sharedStringsUniqueCount) - { - $this->inMemoryCache = new SplFixedArray($sharedStringsUniqueCount); - } - - /** - * Adds the given string to the cache. - * - * @param string $sharedString The string to be added to the cache - * @param int $sharedStringIndex Index of the shared string in the sharedStrings.xml file - */ - public function addStringForIndex(string $sharedString, int $sharedStringIndex): void - { - if (!$this->isCacheClosed) { - $this->inMemoryCache->offsetSet($sharedStringIndex, $sharedString); - } - } - - /** - * Closes the cache after the last shared string was added. - * This prevents any additional string from being added to the cache. - */ - public function closeCache(): void - { - $this->isCacheClosed = true; - } - - /** - * Returns the string located at the given index from the cache. - * - * @param int $sharedStringIndex Index of the shared string in the sharedStrings.xml file - * - * @return string The shared string at the given index - * - * @throws SharedStringNotFoundException If no shared string found for the given index - */ - public function getStringAtIndex(int $sharedStringIndex): string - { - try { - return $this->inMemoryCache->offsetGet($sharedStringIndex); - } catch (RuntimeException) { - throw new SharedStringNotFoundException("Shared string not found for index: {$sharedStringIndex}"); - } - } - - /** - * Destroys the cache, freeing memory and removing any created artifacts. - */ - public function clearCache(): void - { - $this->inMemoryCache = new SplFixedArray(0); - $this->isCacheClosed = false; - } -} diff --git a/vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/MemoryLimit.php b/vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/MemoryLimit.php deleted file mode 100644 index 5645908f..00000000 --- a/vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsCaching/MemoryLimit.php +++ /dev/null @@ -1,50 +0,0 @@ -memoryLimit = $memoryLimit; - } - - /** - * Returns the PHP "memory_limit" in Kilobytes. - */ - public function getMemoryLimitInKB(): float - { - $memoryLimitFormatted = strtolower(trim($this->memoryLimit)); - - // No memory limit - if ('-1' === $memoryLimitFormatted) { - return -1; - } - - if (1 === preg_match('/(\d+)([bkmgt])b?/', $memoryLimitFormatted, $matches)) { - $amount = (int) $matches[1]; - $unit = $matches[2]; - - switch ($unit) { - case 'b': return $amount / 1024; - - case 'k': return $amount; - - case 'm': return $amount * 1024; - - case 'g': return $amount * 1024 * 1024; - - case 't': return $amount * 1024 * 1024 * 1024; - } - } - - return -1; - } -} diff --git a/vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsManager.php b/vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsManager.php deleted file mode 100644 index 5a93b01a..00000000 --- a/vendor/openspout/openspout/src/Reader/XLSX/Manager/SharedStringsManager.php +++ /dev/null @@ -1,241 +0,0 @@ -filePath = $filePath; - $this->options = $options; - $this->workbookRelationshipsManager = $workbookRelationshipsManager; - $this->cachingStrategyFactory = $cachingStrategyFactory; - } - - /** - * Returns whether the XLSX file contains a shared strings XML file. - */ - public function hasSharedStrings(): bool - { - return $this->workbookRelationshipsManager->hasSharedStringsXMLFile(); - } - - /** - * Builds an in-memory array containing all the shared strings of the sheet. - * All the strings are stored in a XML file, located at 'xl/sharedStrings.xml'. - * It is then accessed by the sheet data, via the string index in the built table. - * - * More documentation available here: http://msdn.microsoft.com/en-us/library/office/gg278314.aspx - * - * The XML file can be really big with sheets containing a lot of data. That is why - * we need to use a XML reader that provides streaming like the XMLReader library. - * - * @throws IOException If shared strings XML file can't be read - */ - public function extractSharedStrings(): void - { - $sharedStringsXMLFilePath = $this->workbookRelationshipsManager->getSharedStringsXMLFilePath(); - $xmlReader = new XMLReader(); - $sharedStringIndex = 0; - - if (false === $xmlReader->openFileInZip($this->filePath, $sharedStringsXMLFilePath)) { - throw new IOException('Could not open "'.$sharedStringsXMLFilePath.'".'); - } - - try { - $sharedStringsUniqueCount = $this->getSharedStringsUniqueCount($xmlReader); - $this->cachingStrategy = $this->getBestSharedStringsCachingStrategy($sharedStringsUniqueCount); - - $xmlReader->readUntilNodeFound(self::XML_NODE_SI); - - while (self::XML_NODE_SI === $xmlReader->getCurrentNodeName()) { - $this->processSharedStringsItem($xmlReader, $sharedStringIndex); - ++$sharedStringIndex; - - // jump to the next '' tag - $xmlReader->next(self::XML_NODE_SI); - } - - $this->cachingStrategy->closeCache(); - } catch (XMLProcessingException $exception) { - throw new IOException("The sharedStrings.xml file is invalid and cannot be read. [{$exception->getMessage()}]"); - } - - $xmlReader->close(); - } - - /** - * Returns the shared string at the given index, using the previously chosen caching strategy. - * - * @param int $sharedStringIndex Index of the shared string in the sharedStrings.xml file - * - * @return string The shared string at the given index - * - * @throws SharedStringNotFoundException If no shared string found for the given index - */ - public function getStringAtIndex(int $sharedStringIndex): string - { - return $this->cachingStrategy->getStringAtIndex($sharedStringIndex); - } - - /** - * Destroys the cache, freeing memory and removing any created artifacts. - */ - public function cleanup(): void - { - if (isset($this->cachingStrategy)) { - $this->cachingStrategy->clearCache(); - } - } - - /** - * Returns the shared strings unique count, as specified in tag. - * - * @param XMLReader $xmlReader XMLReader instance - * - * @return null|int Number of unique shared strings in the sharedStrings.xml file - * - * @throws IOException If sharedStrings.xml is invalid and can't be read - */ - private function getSharedStringsUniqueCount(XMLReader $xmlReader): ?int - { - $xmlReader->next(self::XML_NODE_SST); - - // Iterate over the "sst" elements to get the actual "sst ELEMENT" (skips any DOCTYPE) - while (self::XML_NODE_SST === $xmlReader->getCurrentNodeName() && XMLReader::ELEMENT !== $xmlReader->nodeType) { - $xmlReader->read(); - } - - $uniqueCount = $xmlReader->getAttribute(self::XML_ATTRIBUTE_UNIQUE_COUNT); - - // some software do not add the "uniqueCount" attribute but only use the "count" one - // @see https://github.com/box/spout/issues/254 - if (null === $uniqueCount) { - $uniqueCount = $xmlReader->getAttribute(self::XML_ATTRIBUTE_COUNT); - } - - return (null !== $uniqueCount) ? (int) $uniqueCount : null; - } - - /** - * Returns the best shared strings caching strategy. - * - * @param null|int $sharedStringsUniqueCount Number of unique shared strings (NULL if unknown) - */ - private function getBestSharedStringsCachingStrategy(?int $sharedStringsUniqueCount): CachingStrategyInterface - { - return $this->cachingStrategyFactory - ->createBestCachingStrategy($sharedStringsUniqueCount, $this->options->getTempFolder()) - ; - } - - /** - * Processes the shared strings item XML node which the given XML reader is positioned on. - * - * @param XMLReader $xmlReader XML Reader positioned on a "" node - * @param int $sharedStringIndex Index of the processed shared strings item - */ - private function processSharedStringsItem(XMLReader $xmlReader, int $sharedStringIndex): void - { - $sharedStringValue = ''; - - // NOTE: expand() will automatically decode all XML entities of the child nodes - $siNode = $xmlReader->expand(); - \assert($siNode instanceof DOMElement); - $textNodes = $siNode->getElementsByTagName(self::XML_NODE_T); - - foreach ($textNodes as $textNode) { - if ($this->shouldExtractTextNodeValue($textNode)) { - $textNodeValue = $textNode->nodeValue; - \assert(null !== $textNodeValue); - $shouldPreserveWhitespace = $this->shouldPreserveWhitespace($textNode); - - $sharedStringValue .= $shouldPreserveWhitespace - ? $textNodeValue - : trim($textNodeValue); - } - } - - $this->cachingStrategy->addStringForIndex($sharedStringValue, $sharedStringIndex); - } - - /** - * Not all text nodes' values must be extracted. - * Some text nodes are part of a node describing the pronunciation for instance. - * We'll only consider the nodes whose parents are "" or "". - * - * @param DOMElement $textNode Text node to check - * - * @return bool Whether the given text node's value must be extracted - */ - private function shouldExtractTextNodeValue(DOMElement $textNode): bool - { - $parentNode = $textNode->parentNode; - \assert(null !== $parentNode); - $parentTagName = $parentNode->localName; - - return self::XML_NODE_SI === $parentTagName || self::XML_NODE_R === $parentTagName; - } - - /** - * If the text node has the attribute 'xml:space="preserve"', then preserve whitespace. - * - * @param DOMElement $textNode The text node element () whose whitespace may be preserved - * - * @return bool Whether whitespace should be preserved - */ - private function shouldPreserveWhitespace(DOMElement $textNode): bool - { - $spaceValue = $textNode->getAttribute(self::XML_ATTRIBUTE_XML_SPACE); - - return self::XML_ATTRIBUTE_VALUE_PRESERVE === $spaceValue; - } -} diff --git a/vendor/openspout/openspout/src/Reader/XLSX/Manager/SheetManager.php b/vendor/openspout/openspout/src/Reader/XLSX/Manager/SheetManager.php deleted file mode 100644 index 69aa11d3..00000000 --- a/vendor/openspout/openspout/src/Reader/XLSX/Manager/SheetManager.php +++ /dev/null @@ -1,285 +0,0 @@ -filePath = $filePath; - $this->options = $options; - $this->sharedStringsManager = $sharedStringsManager; - $this->escaper = $escaper; - } - - /** - * Returns the sheets metadata of the file located at the previously given file path. - * The paths to the sheets' data are read from the [Content_Types].xml file. - * - * @return Sheet[] Sheets within the XLSX file - */ - public function getSheets(): array - { - $this->sheets = []; - $this->currentSheetIndex = 0; - $this->activeSheetIndex = 0; // By default, the first sheet is active - - $xmlReader = new XMLReader(); - $xmlProcessor = new XMLProcessor($xmlReader); - - $xmlProcessor->registerCallback(self::XML_NODE_WORKBOOK_PROPERTIES, XMLProcessor::NODE_TYPE_START, [$this, 'processWorkbookPropertiesStartingNode']); - $xmlProcessor->registerCallback(self::XML_NODE_WORKBOOK_VIEW, XMLProcessor::NODE_TYPE_START, [$this, 'processWorkbookViewStartingNode']); - $xmlProcessor->registerCallback(self::XML_NODE_SHEET, XMLProcessor::NODE_TYPE_START, [$this, 'processSheetStartingNode']); - $xmlProcessor->registerCallback(self::XML_NODE_SHEETS, XMLProcessor::NODE_TYPE_END, [$this, 'processSheetsEndingNode']); - - if ($xmlReader->openFileInZip($this->filePath, self::WORKBOOK_XML_FILE_PATH)) { - $xmlProcessor->readUntilStopped(); - $xmlReader->close(); - } - - return $this->sheets; - } - - /** - * @param XMLReader $xmlReader XMLReader object, positioned on a "" starting node - * - * @return int A return code that indicates what action should the processor take next - */ - private function processWorkbookPropertiesStartingNode(XMLReader $xmlReader): int - { - // Using "filter_var($x, FILTER_VALIDATE_BOOLEAN)" here because the value of the "date1904" attribute - // may be the string "false", that is not mapped to the boolean "false" by default... - $shouldUse1904Dates = filter_var($xmlReader->getAttribute(self::XML_ATTRIBUTE_DATE_1904), FILTER_VALIDATE_BOOLEAN); - $this->options->SHOULD_USE_1904_DATES = $shouldUse1904Dates; - - return XMLProcessor::PROCESSING_CONTINUE; - } - - /** - * @param XMLReader $xmlReader XMLReader object, positioned on a "" starting node - * - * @return int A return code that indicates what action should the processor take next - */ - private function processWorkbookViewStartingNode(XMLReader $xmlReader): int - { - // The "workbookView" node is located before "sheet" nodes, ensuring that - // the active sheet is known before parsing sheets data. - $this->activeSheetIndex = (int) $xmlReader->getAttribute(self::XML_ATTRIBUTE_ACTIVE_TAB); - - return XMLProcessor::PROCESSING_CONTINUE; - } - - /** - * @param XMLReader $xmlReader XMLReader object, positioned on a "" starting node - * - * @return int A return code that indicates what action should the processor take next - */ - private function processSheetStartingNode(XMLReader $xmlReader): int - { - $isSheetActive = ($this->currentSheetIndex === $this->activeSheetIndex); - $this->sheets[] = $this->getSheetFromSheetXMLNode($xmlReader, $this->currentSheetIndex, $isSheetActive); - ++$this->currentSheetIndex; - - return XMLProcessor::PROCESSING_CONTINUE; - } - - /** - * @return int A return code that indicates what action should the processor take next - */ - private function processSheetsEndingNode(): int - { - return XMLProcessor::PROCESSING_STOP; - } - - /** - * Returns an instance of a sheet, given the XML node describing the sheet - from "workbook.xml". - * We can find the XML file path describing the sheet inside "workbook.xml.res", by mapping with the sheet ID - * ("r:id" in "workbook.xml", "Id" in "workbook.xml.res"). - * - * @param XMLReader $xmlReaderOnSheetNode XML Reader instance, pointing on the node describing the sheet, as defined in "workbook.xml" - * @param int $sheetIndexZeroBased Index of the sheet, based on order of appearance in the workbook (zero-based) - * @param bool $isSheetActive Whether this sheet was defined as active - * - * @return Sheet Sheet instance - */ - private function getSheetFromSheetXMLNode(XMLReader $xmlReaderOnSheetNode, int $sheetIndexZeroBased, bool $isSheetActive): Sheet - { - $sheetId = $xmlReaderOnSheetNode->getAttribute(self::XML_ATTRIBUTE_R_ID); - \assert(null !== $sheetId); - - $sheetState = $xmlReaderOnSheetNode->getAttribute(self::XML_ATTRIBUTE_STATE); - $isSheetVisible = (self::SHEET_STATE_HIDDEN !== $sheetState); - - $escapedSheetName = $xmlReaderOnSheetNode->getAttribute(self::XML_ATTRIBUTE_NAME); - \assert(null !== $escapedSheetName); - $sheetName = $this->escaper->unescape($escapedSheetName); - - $sheetDataXMLFilePath = $this->getSheetDataXMLFilePathForSheetId($sheetId); - - return new Sheet( - $this->createRowIterator($this->filePath, $sheetDataXMLFilePath, $this->options, $this->sharedStringsManager), - $this->createSheetHeaderReader($this->filePath, $sheetDataXMLFilePath), - $sheetIndexZeroBased, - $sheetName, - $isSheetActive, - $isSheetVisible - ); - } - - /** - * @param string $sheetId The sheet ID, as defined in "workbook.xml" - * - * @return string The XML file path describing the sheet inside "workbook.xml.res", for the given sheet ID - */ - private function getSheetDataXMLFilePathForSheetId(string $sheetId): string - { - $sheetDataXMLFilePath = ''; - - // find the file path of the sheet, by looking at the "workbook.xml.res" file - $xmlReader = new XMLReader(); - if ($xmlReader->openFileInZip($this->filePath, self::WORKBOOK_XML_RELS_FILE_PATH)) { - while ($xmlReader->read()) { - if ($xmlReader->isPositionedOnStartingNode(self::XML_NODE_RELATIONSHIP)) { - $relationshipSheetId = $xmlReader->getAttribute(self::XML_ATTRIBUTE_ID); - - if ($relationshipSheetId === $sheetId) { - // In workbook.xml.rels, it is only "worksheets/sheet1.xml" - // In [Content_Types].xml, the path is "/xl/worksheets/sheet1.xml" - $sheetDataXMLFilePath = $xmlReader->getAttribute(self::XML_ATTRIBUTE_TARGET); - \assert(null !== $sheetDataXMLFilePath); - - // sometimes, the sheet data file path already contains "/xl/"... - if (!str_starts_with($sheetDataXMLFilePath, '/xl/')) { - $sheetDataXMLFilePath = '/xl/'.$sheetDataXMLFilePath; - - break; - } - } - } - } - - $xmlReader->close(); - } - - return $sheetDataXMLFilePath; - } - - private function createRowIterator( - string $filePath, - string $sheetDataXMLFilePath, - Options $options, - SharedStringsManager $sharedStringsManager - ): RowIterator { - $xmlReader = new XMLReader(); - - $workbookRelationshipsManager = new WorkbookRelationshipsManager($filePath); - $styleManager = new StyleManager( - $filePath, - $workbookRelationshipsManager->hasStylesXMLFile() - ? $workbookRelationshipsManager->getStylesXMLFilePath() - : null - ); - - $cellValueFormatter = new CellValueFormatter( - $sharedStringsManager, - $styleManager, - $options->SHOULD_FORMAT_DATES, - $options->SHOULD_USE_1904_DATES, - new XLSX() - ); - - return new RowIterator( - $filePath, - $sheetDataXMLFilePath, - $options->SHOULD_PRESERVE_EMPTY_ROWS, - $xmlReader, - new XMLProcessor($xmlReader), - $cellValueFormatter, - new RowManager() - ); - } - - private function createSheetHeaderReader( - string $filePath, - string $sheetDataXMLFilePath - ): SheetHeaderReader { - $xmlReader = new XMLReader(); - - return new SheetHeaderReader( - $filePath, - $sheetDataXMLFilePath, - $xmlReader, - new XMLProcessor($xmlReader) - ); - } -} diff --git a/vendor/openspout/openspout/src/Reader/XLSX/Manager/StyleManager.php b/vendor/openspout/openspout/src/Reader/XLSX/Manager/StyleManager.php deleted file mode 100644 index caac7dbc..00000000 --- a/vendor/openspout/openspout/src/Reader/XLSX/Manager/StyleManager.php +++ /dev/null @@ -1,322 +0,0 @@ - 'm/d/yyyy', // @NOTE: ECMA spec is 'mm-dd-yy' - 15 => 'd-mmm-yy', - 16 => 'd-mmm', - 17 => 'mmm-yy', - 18 => 'h:mm AM/PM', - 19 => 'h:mm:ss AM/PM', - 20 => 'h:mm', - 21 => 'h:mm:ss', - 22 => 'm/d/yyyy h:mm', // @NOTE: ECMA spec is 'm/d/yy h:mm', - 45 => 'mm:ss', - 46 => '[h]:mm:ss', - 47 => 'mm:ss.0', // @NOTE: ECMA spec is 'mmss.0', - ]; - - /** @var string Path of the XLSX file being read */ - private readonly string $filePath; - - /** @var null|string Path of the styles XML file */ - private readonly ?string $stylesXMLFilePath; - - /** @var array Array containing a mapping NUM_FMT_ID => FORMAT_CODE */ - private array $customNumberFormats; - - /** @var array> Array containing a mapping STYLE_ID => [STYLE_ATTRIBUTES] */ - private array $stylesAttributes; - - /** @var array Cache containing a mapping NUM_FMT_ID => IS_DATE_FORMAT. Used to avoid lots of recalculations */ - private array $numFmtIdToIsDateFormatCache = []; - - /** - * @param string $filePath Path of the XLSX file being read - * @param ?string $stylesXMLFilePath - */ - public function __construct(string $filePath, ?string $stylesXMLFilePath) - { - $this->filePath = $filePath; - $this->stylesXMLFilePath = $stylesXMLFilePath; - } - - public function shouldFormatNumericValueAsDate(int $styleId): bool - { - if (null === $this->stylesXMLFilePath) { - return false; - } - - $stylesAttributes = $this->getStylesAttributes(); - - // Default style (0) does not format numeric values as timestamps. Only custom styles do. - // Also if the style ID does not exist in the styles.xml file, format as numeric value. - // Using isset here because it is way faster than array_key_exists... - if (self::DEFAULT_STYLE_ID === $styleId || !isset($stylesAttributes[$styleId])) { - return false; - } - - $styleAttributes = $stylesAttributes[$styleId]; - - return $this->doesStyleIndicateDate($styleAttributes); - } - - public function getNumberFormatCode(int $styleId): string - { - $stylesAttributes = $this->getStylesAttributes(); - $styleAttributes = $stylesAttributes[$styleId]; - $numFmtId = $styleAttributes[self::XML_ATTRIBUTE_NUM_FMT_ID]; - \assert(\is_int($numFmtId)); - - if ($this->isNumFmtIdBuiltInDateFormat($numFmtId)) { - $numberFormatCode = self::builtinNumFmtIdToNumFormatMapping[$numFmtId]; - } else { - $customNumberFormats = $this->getCustomNumberFormats(); - $numberFormatCode = $customNumberFormats[$numFmtId] ?? ''; - } - - return $numberFormatCode; - } - - /** - * @return array The custom number formats - */ - protected function getCustomNumberFormats(): array - { - if (!isset($this->customNumberFormats)) { - $this->extractRelevantInfo(); - } - - return $this->customNumberFormats; - } - - /** - * @return array> The styles attributes - */ - protected function getStylesAttributes(): array - { - if (!isset($this->stylesAttributes)) { - $this->extractRelevantInfo(); - } - - return $this->stylesAttributes; - } - - /** - * Reads the styles.xml file and extract the relevant information from the file. - */ - private function extractRelevantInfo(): void - { - $this->customNumberFormats = []; - $this->stylesAttributes = []; - - $xmlReader = new XMLReader(); - - if ($xmlReader->openFileInZip($this->filePath, $this->stylesXMLFilePath)) { - while ($xmlReader->read()) { - if ($xmlReader->isPositionedOnStartingNode(self::XML_NODE_NUM_FMTS) - && '0' !== $xmlReader->getAttribute(self::XML_ATTRIBUTE_COUNT)) { - $this->extractNumberFormats($xmlReader); - } elseif ($xmlReader->isPositionedOnStartingNode(self::XML_NODE_CELL_XFS)) { - $this->extractStyleAttributes($xmlReader); - } - } - - $xmlReader->close(); - } - } - - /** - * Extracts number formats from the "numFmt" nodes. - * For simplicity, the styles attributes are kept in memory. This is possible thanks - * to the reuse of formats. So 1 million cells should not use 1 million formats. - * - * @param XMLReader $xmlReader XML Reader positioned on the "numFmts" node - */ - private function extractNumberFormats(XMLReader $xmlReader): void - { - while ($xmlReader->read()) { - if ($xmlReader->isPositionedOnStartingNode(self::XML_NODE_NUM_FMT)) { - $numFmtId = (int) $xmlReader->getAttribute(self::XML_ATTRIBUTE_NUM_FMT_ID); - $formatCode = $xmlReader->getAttribute(self::XML_ATTRIBUTE_FORMAT_CODE); - \assert(null !== $formatCode); - $this->customNumberFormats[$numFmtId] = $formatCode; - } elseif ($xmlReader->isPositionedOnEndingNode(self::XML_NODE_NUM_FMTS)) { - // Once done reading "numFmts" node's children - break; - } - } - } - - /** - * Extracts style attributes from the "xf" nodes, inside the "cellXfs" section. - * For simplicity, the styles attributes are kept in memory. This is possible thanks - * to the reuse of styles. So 1 million cells should not use 1 million styles. - * - * @param XMLReader $xmlReader XML Reader positioned on the "cellXfs" node - */ - private function extractStyleAttributes(XMLReader $xmlReader): void - { - while ($xmlReader->read()) { - if ($xmlReader->isPositionedOnStartingNode(self::XML_NODE_XF)) { - $numFmtId = $xmlReader->getAttribute(self::XML_ATTRIBUTE_NUM_FMT_ID); - $normalizedNumFmtId = (null !== $numFmtId) ? (int) $numFmtId : null; - - $applyNumberFormat = $xmlReader->getAttribute(self::XML_ATTRIBUTE_APPLY_NUMBER_FORMAT); - $normalizedApplyNumberFormat = (null !== $applyNumberFormat) ? (bool) $applyNumberFormat : null; - - $this->stylesAttributes[] = [ - self::XML_ATTRIBUTE_NUM_FMT_ID => $normalizedNumFmtId, - self::XML_ATTRIBUTE_APPLY_NUMBER_FORMAT => $normalizedApplyNumberFormat, - ]; - } elseif ($xmlReader->isPositionedOnEndingNode(self::XML_NODE_CELL_XFS)) { - // Once done reading "cellXfs" node's children - break; - } - } - } - - /** - * @param array $styleAttributes Array containing the style attributes (2 keys: "applyNumberFormat" and "numFmtId") - * - * @return bool Whether the style with the given attributes indicates that the number is a date - */ - private function doesStyleIndicateDate(array $styleAttributes): bool - { - $applyNumberFormat = $styleAttributes[self::XML_ATTRIBUTE_APPLY_NUMBER_FORMAT]; - $numFmtId = $styleAttributes[self::XML_ATTRIBUTE_NUM_FMT_ID]; - - // A style may apply a date format if it has: - // - "applyNumberFormat" attribute not set to "false" - // - "numFmtId" attribute set - // This is a preliminary check, as having "numFmtId" set just means the style should apply a specific number format, - // but this is not necessarily a date. - if (false === $applyNumberFormat || !\is_int($numFmtId)) { - return false; - } - - return $this->doesNumFmtIdIndicateDate($numFmtId); - } - - /** - * Returns whether the number format ID indicates that the number is a date. - * The result is cached to avoid recomputing the same thing over and over, as - * "numFmtId" attributes can be shared between multiple styles. - * - * @return bool Whether the number format ID indicates that the number is a date - */ - private function doesNumFmtIdIndicateDate(int $numFmtId): bool - { - if (!isset($this->numFmtIdToIsDateFormatCache[$numFmtId])) { - $formatCode = $this->getFormatCodeForNumFmtId($numFmtId); - - $this->numFmtIdToIsDateFormatCache[$numFmtId] = ( - $this->isNumFmtIdBuiltInDateFormat($numFmtId) - || $this->isFormatCodeCustomDateFormat($formatCode) - ); - } - - return $this->numFmtIdToIsDateFormatCache[$numFmtId]; - } - - /** - * @return null|string The custom number format or NULL if none defined for the given numFmtId - */ - private function getFormatCodeForNumFmtId(int $numFmtId): ?string - { - $customNumberFormats = $this->getCustomNumberFormats(); - - // Using isset here because it is way faster than array_key_exists... - return $customNumberFormats[$numFmtId] ?? null; - } - - /** - * @return bool Whether the number format ID indicates that the number is a date - */ - private function isNumFmtIdBuiltInDateFormat(int $numFmtId): bool - { - return \array_key_exists($numFmtId, self::builtinNumFmtIdToNumFormatMapping); - } - - /** - * @return bool Whether the given format code indicates that the number is a date - */ - private function isFormatCodeCustomDateFormat(?string $formatCode): bool - { - // if no associated format code or if using the default "General" format - if (null === $formatCode || 0 === strcasecmp($formatCode, self::NUMBER_FORMAT_GENERAL)) { - return false; - } - - return $this->isFormatCodeMatchingDateFormatPattern($formatCode); - } - - /** - * @return bool Whether the given format code matches a date format pattern - */ - private function isFormatCodeMatchingDateFormatPattern(string $formatCode): bool - { - // Remove extra formatting (what's between [ ], the brackets should not be preceded by a "\") - $pattern = '((? Cache of the already read workbook relationships: [TYPE] => [FILE_NAME] */ - private array $cachedWorkbookRelationships; - - /** - * @param string $filePath Path of the XLSX file being read - */ - public function __construct(string $filePath) - { - $this->filePath = $filePath; - } - - /** - * @return string The path of the shared string XML file - */ - public function getSharedStringsXMLFilePath(): string - { - $workbookRelationships = $this->getWorkbookRelationships(); - $sharedStringsXMLFilePath = $workbookRelationships[self::RELATIONSHIP_TYPE_SHARED_STRINGS] - ?? $workbookRelationships[self::RELATIONSHIP_TYPE_SHARED_STRINGS_STRICT]; - - // the file path can be relative (e.g. "styles.xml") or absolute (e.g. "/xl/styles.xml") - $doesContainBasePath = str_contains($sharedStringsXMLFilePath, self::BASE_PATH); - if (!$doesContainBasePath) { - // make sure we return an absolute file path - $sharedStringsXMLFilePath = self::BASE_PATH.$sharedStringsXMLFilePath; - } - - return $sharedStringsXMLFilePath; - } - - /** - * @return bool Whether the XLSX file contains a shared string XML file - */ - public function hasSharedStringsXMLFile(): bool - { - $workbookRelationships = $this->getWorkbookRelationships(); - - return isset($workbookRelationships[self::RELATIONSHIP_TYPE_SHARED_STRINGS]) - || isset($workbookRelationships[self::RELATIONSHIP_TYPE_SHARED_STRINGS_STRICT]); - } - - /** - * @return bool Whether the XLSX file contains a styles XML file - */ - public function hasStylesXMLFile(): bool - { - $workbookRelationships = $this->getWorkbookRelationships(); - - return isset($workbookRelationships[self::RELATIONSHIP_TYPE_STYLES]) - || isset($workbookRelationships[self::RELATIONSHIP_TYPE_STYLES_STRICT]); - } - - /** - * @return string The path of the styles XML file - */ - public function getStylesXMLFilePath(): string - { - $workbookRelationships = $this->getWorkbookRelationships(); - $stylesXMLFilePath = $workbookRelationships[self::RELATIONSHIP_TYPE_STYLES] - ?? $workbookRelationships[self::RELATIONSHIP_TYPE_STYLES_STRICT]; - - // the file path can be relative (e.g. "styles.xml") or absolute (e.g. "/xl/styles.xml") - $doesContainBasePath = str_contains($stylesXMLFilePath, self::BASE_PATH); - if (!$doesContainBasePath) { - // make sure we return a full path - $stylesXMLFilePath = self::BASE_PATH.$stylesXMLFilePath; - } - - return $stylesXMLFilePath; - } - - /** - * Reads the workbook.xml.rels and extracts the filename associated to the different types. - * It caches the result so that the file is read only once. - * - * @return array - * - * @throws IOException If workbook.xml.rels can't be read - */ - private function getWorkbookRelationships(): array - { - if (!isset($this->cachedWorkbookRelationships)) { - $xmlReader = new XMLReader(); - - if (false === $xmlReader->openFileInZip($this->filePath, self::WORKBOOK_RELS_XML_FILE_PATH)) { - throw new IOException('Could not open "'.self::WORKBOOK_RELS_XML_FILE_PATH.'".'); - } - - $this->cachedWorkbookRelationships = []; - - while ($xmlReader->readUntilNodeFound(self::XML_NODE_RELATIONSHIP)) { - $this->processWorkbookRelationship($xmlReader); - } - } - - return $this->cachedWorkbookRelationships; - } - - /** - * Extracts and store the data of the current workbook relationship. - */ - private function processWorkbookRelationship(XMLReader $xmlReader): void - { - $type = $xmlReader->getAttribute(self::XML_ATTRIBUTE_TYPE); - $target = $xmlReader->getAttribute(self::XML_ATTRIBUTE_TARGET); - \assert(null !== $target); - - // @NOTE: if a type is defined more than once, we overwrite the previous value - // To be changed if we want to get the file paths of sheet XML files for instance. - $this->cachedWorkbookRelationships[$type] = $target; - } -} diff --git a/vendor/openspout/openspout/src/Reader/XLSX/Options.php b/vendor/openspout/openspout/src/Reader/XLSX/Options.php deleted file mode 100644 index 1c8331f8..00000000 --- a/vendor/openspout/openspout/src/Reader/XLSX/Options.php +++ /dev/null @@ -1,16 +0,0 @@ - - */ -final class Reader extends AbstractReader -{ - private ZipArchive $zip; - - /** @var SharedStringsManager Manages shared strings */ - private SharedStringsManager $sharedStringsManager; - - /** @var SheetIterator To iterator over the XLSX sheets */ - private SheetIterator $sheetIterator; - - private readonly Options $options; - private readonly CachingStrategyFactoryInterface $cachingStrategyFactory; - - public function __construct( - ?Options $options = null, - ?CachingStrategyFactoryInterface $cachingStrategyFactory = null - ) { - $this->options = $options ?? new Options(); - - if (null === $cachingStrategyFactory) { - $memoryLimit = \ini_get('memory_limit'); - $cachingStrategyFactory = new CachingStrategyFactory(new MemoryLimit($memoryLimit)); - } - $this->cachingStrategyFactory = $cachingStrategyFactory; - } - - public function getSheetIterator(): SheetIterator - { - $this->ensureStreamOpened(); - - return $this->sheetIterator; - } - - /** - * Returns whether stream wrappers are supported. - */ - protected function doesSupportStreamWrapper(): bool - { - return false; - } - - /** - * Opens the file at the given file path to make it ready to be read. - * It also parses the sharedStrings.xml file to get all the shared strings available in memory - * and fetches all the available sheets. - * - * @param string $filePath Path of the file to be read - * - * @throws IOException If the file at the given path or its content cannot be read - * @throws NoSheetsFoundException If there are no sheets in the file - */ - protected function openReader(string $filePath): void - { - $this->zip = new ZipArchive(); - - if (true !== $this->zip->open($filePath)) { - throw new IOException("Could not open {$filePath} for reading."); - } - - $this->sharedStringsManager = new SharedStringsManager( - $filePath, - $this->options, - new WorkbookRelationshipsManager($filePath), - $this->cachingStrategyFactory - ); - - if ($this->sharedStringsManager->hasSharedStrings()) { - // Extracts all the strings from the sheets for easy access in the future - $this->sharedStringsManager->extractSharedStrings(); - } - - $this->sheetIterator = new SheetIterator( - new SheetManager( - $filePath, - $this->options, - $this->sharedStringsManager, - new XLSX() - ) - ); - } - - /** - * Closes the reader. To be used after reading the file. - */ - protected function closeReader(): void - { - $this->zip->close(); - $this->sharedStringsManager->cleanup(); - } -} diff --git a/vendor/openspout/openspout/src/Reader/XLSX/RowIterator.php b/vendor/openspout/openspout/src/Reader/XLSX/RowIterator.php deleted file mode 100644 index b3ad10e8..00000000 --- a/vendor/openspout/openspout/src/Reader/XLSX/RowIterator.php +++ /dev/null @@ -1,398 +0,0 @@ -filePath = $filePath; - $this->sheetDataXMLFilePath = $this->normalizeSheetDataXMLFilePath($sheetDataXMLFilePath); - $this->shouldPreserveEmptyRows = $shouldPreserveEmptyRows; - $this->xmlReader = $xmlReader; - $this->cellValueFormatter = $cellValueFormatter; - $this->rowManager = $rowManager; - - // Register all callbacks to process different nodes when reading the XML file - $this->xmlProcessor = $xmlProcessor; - $this->xmlProcessor->registerCallback(self::XML_NODE_DIMENSION, XMLProcessor::NODE_TYPE_START, [$this, 'processDimensionStartingNode']); - $this->xmlProcessor->registerCallback(self::XML_NODE_ROW, XMLProcessor::NODE_TYPE_START, [$this, 'processRowStartingNode']); - $this->xmlProcessor->registerCallback(self::XML_NODE_CELL, XMLProcessor::NODE_TYPE_START, [$this, 'processCellStartingNode']); - $this->xmlProcessor->registerCallback(self::XML_NODE_ROW, XMLProcessor::NODE_TYPE_END, [$this, 'processRowEndingNode']); - $this->xmlProcessor->registerCallback(self::XML_NODE_WORKSHEET, XMLProcessor::NODE_TYPE_END, [$this, 'processWorksheetEndingNode']); - } - - /** - * Rewind the Iterator to the first element. - * Initializes the XMLReader object that reads the associated sheet data. - * The XMLReader is configured to be safe from billion laughs attack. - * - * @see http://php.net/manual/en/iterator.rewind.php - * - * @throws IOException If the sheet data XML cannot be read - */ - public function rewind(): void - { - $this->xmlReader->close(); - - if (false === $this->xmlReader->openFileInZip($this->filePath, $this->sheetDataXMLFilePath)) { - throw new IOException("Could not open \"{$this->sheetDataXMLFilePath}\"."); - } - - $this->numReadRows = 0; - $this->lastRowIndexProcessed = 0; - $this->nextRowIndexToBeProcessed = 0; - $this->rowBuffer = null; - $this->hasReachedEndOfFile = false; - $this->numColumns = 0; - - $this->next(); - } - - /** - * Checks if current position is valid. - * - * @see http://php.net/manual/en/iterator.valid.php - */ - public function valid(): bool - { - $valid = !$this->hasReachedEndOfFile; - if (!$valid) { - $this->xmlReader->close(); - } - - return $valid; - } - - /** - * Move forward to next element. Reads data describing the next unprocessed row. - * - * @see http://php.net/manual/en/iterator.next.php - * - * @throws SharedStringNotFoundException If a shared string was not found - * @throws IOException If unable to read the sheet data XML - */ - public function next(): void - { - ++$this->nextRowIndexToBeProcessed; - - if ($this->doesNeedDataForNextRowToBeProcessed()) { - $this->readDataForNextRow(); - } - } - - /** - * Return the current element, either an empty row or from the buffer. - * - * @see http://php.net/manual/en/iterator.current.php - */ - public function current(): Row - { - $rowToBeProcessed = $this->rowBuffer; - - if ($this->shouldPreserveEmptyRows) { - // when we need to preserve empty rows, we will either return - // an empty row or the last row read. This depends whether the - // index of last row that was read matches the index of the last - // row whose value should be returned. - if ($this->lastRowIndexProcessed !== $this->nextRowIndexToBeProcessed) { - // return empty row if mismatch between last processed row - // and the row that needs to be returned - $rowToBeProcessed = new Row([], null); - } - } - - \assert(null !== $rowToBeProcessed); - - return $rowToBeProcessed; - } - - /** - * Return the key of the current element. Here, the row index. - * - * @see http://php.net/manual/en/iterator.key.php - */ - public function key(): int - { - // TODO: This should return $this->nextRowIndexToBeProcessed - // but to avoid a breaking change, the return value for - // this function has been kept as the number of rows read. - return $this->shouldPreserveEmptyRows ? - $this->nextRowIndexToBeProcessed : - $this->numReadRows; - } - - /** - * @param string $sheetDataXMLFilePath Path of the sheet data XML file as in [Content_Types].xml - * - * @return string path of the XML file containing the sheet data, - * without the leading slash - */ - private function normalizeSheetDataXMLFilePath(string $sheetDataXMLFilePath): string - { - return ltrim($sheetDataXMLFilePath, '/'); - } - - /** - * Returns whether we need data for the next row to be processed. - * We don't need to read data if: - * we have already read at least one row - * AND - * we need to preserve empty rows - * AND - * the last row that was read is not the row that need to be processed - * (i.e. if we need to return empty rows). - * - * @return bool whether we need data for the next row to be processed - */ - private function doesNeedDataForNextRowToBeProcessed(): bool - { - $hasReadAtLeastOneRow = (0 !== $this->lastRowIndexProcessed); - - return - !$hasReadAtLeastOneRow - || !$this->shouldPreserveEmptyRows - || $this->lastRowIndexProcessed < $this->nextRowIndexToBeProcessed; - } - - /** - * @throws SharedStringNotFoundException If a shared string was not found - * @throws IOException If unable to read the sheet data XML - */ - private function readDataForNextRow(): void - { - $this->currentlyProcessedRow = new Row([], null); - - $this->xmlProcessor->readUntilStopped(); - - $this->rowBuffer = $this->currentlyProcessedRow; - } - - /** - * @param XMLReader $xmlReader XMLReader object, positioned on a "" starting node - * - * @return int A return code that indicates what action should the processor take next - */ - private function processDimensionStartingNode(XMLReader $xmlReader): int - { - // Read dimensions of the sheet - $dimensionRef = $xmlReader->getAttribute(self::XML_ATTRIBUTE_REF); // returns 'A1:M13' for instance (or 'A1' for empty sheet) - \assert(null !== $dimensionRef); - if (1 === preg_match('/[A-Z]+\d+:([A-Z]+\d+)/', $dimensionRef, $matches)) { - $this->numColumns = CellHelper::getColumnIndexFromCellIndex($matches[1]) + 1; - } - - return XMLProcessor::PROCESSING_CONTINUE; - } - - /** - * @param XMLReader $xmlReader XMLReader object, positioned on a "" starting node - * - * @return int A return code that indicates what action should the processor take next - */ - private function processRowStartingNode(XMLReader $xmlReader): int - { - // Reset index of the last processed column - $this->lastColumnIndexProcessed = -1; - - // Mark the last processed row as the one currently being read - $this->lastRowIndexProcessed = $this->getRowIndex($xmlReader); - - // Read spans info if present - $numberOfColumnsForRow = $this->numColumns; - $spans = $xmlReader->getAttribute(self::XML_ATTRIBUTE_SPANS); // returns '1:5' for instance - if (null !== $spans && '' !== $spans) { - [, $numberOfColumnsForRow] = explode(':', $spans); - $numberOfColumnsForRow = (int) $numberOfColumnsForRow; - } - - $cells = array_fill(0, $numberOfColumnsForRow, Cell::fromValue('')); - $this->currentlyProcessedRow->setCells($cells); - - return XMLProcessor::PROCESSING_CONTINUE; - } - - /** - * @param XMLReader $xmlReader XMLReader object, positioned on a "" starting node - * - * @return int A return code that indicates what action should the processor take next - */ - private function processCellStartingNode(XMLReader $xmlReader): int - { - $currentColumnIndex = $this->getColumnIndex($xmlReader); - - // NOTE: expand() will automatically decode all XML entities of the child nodes - $node = $xmlReader->expand(); - \assert($node instanceof DOMElement); - $cell = $this->cellValueFormatter->extractAndFormatNodeValue($node); - - $this->currentlyProcessedRow->setCellAtIndex($cell, $currentColumnIndex); - $this->lastColumnIndexProcessed = $currentColumnIndex; - - return XMLProcessor::PROCESSING_CONTINUE; - } - - /** - * @return int A return code that indicates what action should the processor take next - */ - private function processRowEndingNode(): int - { - // if the fetched row is empty and we don't want to preserve it.., - if (!$this->shouldPreserveEmptyRows && $this->currentlyProcessedRow->isEmpty()) { - // ... skip it - return XMLProcessor::PROCESSING_CONTINUE; - } - - ++$this->numReadRows; - - // If needed, we fill the empty cells - if (0 === $this->numColumns) { - $this->rowManager->fillMissingIndexesWithEmptyCells($this->currentlyProcessedRow); - } - - // at this point, we have all the data we need for the row - // so that we can populate the buffer - return XMLProcessor::PROCESSING_STOP; - } - - /** - * @return int A return code that indicates what action should the processor take next - */ - private function processWorksheetEndingNode(): int - { - // The closing "" marks the end of the file - $this->hasReachedEndOfFile = true; - - return XMLProcessor::PROCESSING_STOP; - } - - /** - * @param XMLReader $xmlReader XMLReader object, positioned on a "" node - * - * @return int Row index - * - * @throws InvalidArgumentException When the given cell index is invalid - */ - private function getRowIndex(XMLReader $xmlReader): int - { - // Get "r" attribute if present (from something like - $currentRowIndex = $xmlReader->getAttribute(self::XML_ATTRIBUTE_ROW_INDEX); - - return (null !== $currentRowIndex) ? - (int) $currentRowIndex : - $this->lastRowIndexProcessed + 1; - } - - /** - * @param XMLReader $xmlReader XMLReader object, positioned on a "" node - * - * @return int Column index - * - * @throws InvalidArgumentException When the given cell index is invalid - */ - private function getColumnIndex(XMLReader $xmlReader): int - { - // Get "r" attribute if present (from something like - $currentCellIndex = $xmlReader->getAttribute(self::XML_ATTRIBUTE_CELL_INDEX); - - return (null !== $currentCellIndex) ? - CellHelper::getColumnIndexFromCellIndex($currentCellIndex) : - $this->lastColumnIndexProcessed + 1; - } -} diff --git a/vendor/openspout/openspout/src/Reader/XLSX/Sheet.php b/vendor/openspout/openspout/src/Reader/XLSX/Sheet.php deleted file mode 100644 index 504b20ed..00000000 --- a/vendor/openspout/openspout/src/Reader/XLSX/Sheet.php +++ /dev/null @@ -1,94 +0,0 @@ - - */ -final class Sheet implements SheetWithVisibilityInterface -{ - /** @var RowIterator To iterate over sheet's rows */ - private readonly RowIterator $rowIterator; - - /** @var SheetHeaderReader To read the header of the sheet, containing for instance the col widths */ - private readonly SheetHeaderReader $headerReader; - - /** @var int Index of the sheet, based on order in the workbook (zero-based) */ - private readonly int $index; - - /** @var string Name of the sheet */ - private readonly string $name; - - /** @var bool Whether the sheet was the active one */ - private readonly bool $isActive; - - /** @var bool Whether the sheet is visible */ - private readonly bool $isVisible; - - /** - * @param RowIterator $rowIterator The corresponding row iterator - * @param int $sheetIndex Index of the sheet, based on order in the workbook (zero-based) - * @param string $sheetName Name of the sheet - * @param bool $isSheetActive Whether the sheet was defined as active - * @param bool $isSheetVisible Whether the sheet is visible - */ - public function __construct(RowIterator $rowIterator, SheetHeaderReader $headerReader, int $sheetIndex, string $sheetName, bool $isSheetActive, bool $isSheetVisible) - { - $this->rowIterator = $rowIterator; - $this->headerReader = $headerReader; - $this->index = $sheetIndex; - $this->name = $sheetName; - $this->isActive = $isSheetActive; - $this->isVisible = $isSheetVisible; - } - - public function getRowIterator(): RowIterator - { - return $this->rowIterator; - } - - /** - * @return ColumnWidth[] a list of column-widths - */ - public function getColumnWidths(): array - { - return $this->headerReader->getColumnWidths(); - } - - /** - * @return int Index of the sheet, based on order in the workbook (zero-based) - */ - public function getIndex(): int - { - return $this->index; - } - - /** - * @return string Name of the sheet - */ - public function getName(): string - { - return $this->name; - } - - /** - * @return bool Whether the sheet was defined as active - */ - public function isActive(): bool - { - return $this->isActive; - } - - /** - * @return bool Whether the sheet is visible - */ - public function isVisible(): bool - { - return $this->isVisible; - } -} diff --git a/vendor/openspout/openspout/src/Reader/XLSX/SheetHeaderReader.php b/vendor/openspout/openspout/src/Reader/XLSX/SheetHeaderReader.php deleted file mode 100644 index 5c6b4296..00000000 --- a/vendor/openspout/openspout/src/Reader/XLSX/SheetHeaderReader.php +++ /dev/null @@ -1,119 +0,0 @@ -filePath = $filePath; - $this->sheetDataXMLFilePath = $this->normalizeSheetDataXMLFilePath($sheetDataXMLFilePath); - $this->xmlReader = $xmlReader; - - // Register all callbacks to process different nodes when reading the XML file - $this->xmlProcessor = $xmlProcessor; - $this->xmlProcessor->registerCallback(self::XML_NODE_COL, XMLProcessor::NODE_TYPE_START, [$this, 'processColStartingNode']); - $this->xmlProcessor->registerCallback(self::XML_NODE_SHEETDATA, XMLProcessor::NODE_TYPE_START, [$this, 'processSheetDataStartingNode']); - - // The reader should be unused, but we close to be sure - $this->xmlReader->close(); - - if (false === $this->xmlReader->openFileInZip($this->filePath, $this->sheetDataXMLFilePath)) { - throw new IOException("Could not open \"{$this->sheetDataXMLFilePath}\"."); - } - - // Now read the entire header of the sheet, until we reach the element - $this->xmlProcessor->readUntilStopped(); - - // We don't need the reader anymore, so we close it - $this->xmlReader->close(); - } - - /** - * @internal - * - * @return ColumnWidth[] - */ - public function getColumnWidths(): array - { - return $this->columnWidths; - } - - /** - * @param XMLReader $xmlReader XMLReader object, positioned on a "" starting node - * - * @return int A return code that indicates what action should the processor take next - */ - private function processColStartingNode(XMLReader $xmlReader): int - { - $min = (int) $xmlReader->getAttribute(self::XML_ATTRIBUTE_MIN); - $max = (int) $xmlReader->getAttribute(self::XML_ATTRIBUTE_MAX); - $width = (float) $xmlReader->getAttribute(self::XML_ATTRIBUTE_WIDTH); - - \assert($min > 0); - \assert($max > 0); - - $columnwidth = new ColumnWidth($min, $max, $width); - $this->columnWidths[] = $columnwidth; - - return XMLProcessor::PROCESSING_CONTINUE; - } - - /** - * @return int A return code that indicates what action should the processor take next - */ - private function processSheetDataStartingNode(): int - { - // The opening "" marks the end of the file - return XMLProcessor::PROCESSING_STOP; - } - - /** - * @param string $sheetDataXMLFilePath Path of the sheet data XML file as in [Content_Types].xml - * - * @return string path of the XML file containing the sheet data, - * without the leading slash - */ - private function normalizeSheetDataXMLFilePath(string $sheetDataXMLFilePath): string - { - return ltrim($sheetDataXMLFilePath, '/'); - } -} diff --git a/vendor/openspout/openspout/src/Reader/XLSX/SheetIterator.php b/vendor/openspout/openspout/src/Reader/XLSX/SheetIterator.php deleted file mode 100644 index 33b26f91..00000000 --- a/vendor/openspout/openspout/src/Reader/XLSX/SheetIterator.php +++ /dev/null @@ -1,86 +0,0 @@ - - */ -final class SheetIterator implements SheetIteratorInterface -{ - /** @var Sheet[] The list of sheet present in the file */ - private array $sheets; - - /** @var int The index of the sheet being read (zero-based) */ - private int $currentSheetIndex = 0; - - /** - * @param SheetManager $sheetManager Manages sheets - * - * @throws NoSheetsFoundException If there are no sheets in the file - */ - public function __construct(SheetManager $sheetManager) - { - // Fetch all available sheets - $this->sheets = $sheetManager->getSheets(); - - if (0 === \count($this->sheets)) { - throw new NoSheetsFoundException('The file must contain at least one sheet.'); - } - } - - /** - * Rewind the Iterator to the first element. - * - * @see http://php.net/manual/en/iterator.rewind.php - */ - public function rewind(): void - { - $this->currentSheetIndex = 0; - } - - /** - * Checks if current position is valid. - * - * @see http://php.net/manual/en/iterator.valid.php - */ - public function valid(): bool - { - return $this->currentSheetIndex < \count($this->sheets); - } - - /** - * Move forward to next element. - * - * @see http://php.net/manual/en/iterator.next.php - */ - public function next(): void - { - ++$this->currentSheetIndex; - } - - /** - * Return the current element. - * - * @see http://php.net/manual/en/iterator.current.php - */ - public function current(): Sheet - { - return $this->sheets[$this->currentSheetIndex]; - } - - /** - * Return the key of the current element. - * - * @see http://php.net/manual/en/iterator.key.php - */ - public function key(): int - { - return $this->currentSheetIndex + 1; - } -} diff --git a/vendor/openspout/openspout/src/Writer/AbstractWriter.php b/vendor/openspout/openspout/src/Writer/AbstractWriter.php deleted file mode 100644 index eef34fb4..00000000 --- a/vendor/openspout/openspout/src/Writer/AbstractWriter.php +++ /dev/null @@ -1,169 +0,0 @@ -outputFilePath = $outputFilePath; - - $errorMessage = null; - set_error_handler(static function ($nr, $message) use (&$errorMessage): bool { - $errorMessage = $message; - - return true; - }); - - $resource = fopen($this->outputFilePath, 'w'); - restore_error_handler(); - if (null !== $errorMessage) { - throw new IOException("Unable to open file {$this->outputFilePath}: {$errorMessage}"); - } - \assert(false !== $resource); - $this->filePointer = $resource; - - $this->openWriter(); - $this->isWriterOpened = true; - } - - /** - * @codeCoverageIgnore - * - * @param mixed $outputFileName - */ - final public function openToBrowser($outputFileName): void - { - $this->outputFilePath = basename($outputFileName); - - $resource = fopen('php://output', 'w'); - \assert(false !== $resource); - $this->filePointer = $resource; - - // Clear any previous output (otherwise the generated file will be corrupted) - // @see https://github.com/box/spout/issues/241 - if (ob_get_length() > 0) { - ob_end_clean(); - } - - /* - * Set headers - * - * For newer browsers such as Firefox, Chrome, Opera, Safari, etc., they all support and use `filename*` - * specified by the new standard, even if they do not automatically decode filename; it does not matter; - * and for older versions of Internet Explorer, they are not recognized `filename*`, will automatically - * ignore it and use the old `filename` (the only minor flaw is that there must be an English suffix name). - * In this way, the multi-browser multi-language compatibility problem is perfectly solved, which does not - * require UA judgment and is more in line with the standard. - * - * @see https://github.com/box/spout/issues/745 - * @see https://tools.ietf.org/html/rfc6266 - * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition - */ - header('Content-Type: '.static::$headerContentType); - header( - 'Content-Disposition: attachment; '. - 'filename="'.rawurlencode($this->outputFilePath).'"; '. - 'filename*=UTF-8\'\''.rawurlencode($this->outputFilePath) - ); - - /* - * When forcing the download of a file over SSL,IE8 and lower browsers fail - * if the Cache-Control and Pragma headers are not set. - * - * @see http://support.microsoft.com/KB/323308 - * @see https://github.com/liuggio/ExcelBundle/issues/45 - */ - header('Cache-Control: max-age=0'); - header('Pragma: public'); - - $this->openWriter(); - $this->isWriterOpened = true; - } - - final public function addRow(Row $row): void - { - if (!$this->isWriterOpened) { - throw new WriterNotOpenedException('The writer needs to be opened before adding row.'); - } - - $this->addRowToWriter($row); - ++$this->writtenRowCount; - } - - final public function addRows(array $rows): void - { - foreach ($rows as $row) { - $this->addRow($row); - } - } - - final public function setCreator(string $creator): void - { - $this->creator = $creator; - } - - final public function getWrittenRowCount(): int - { - return $this->writtenRowCount; - } - - final public function close(): void - { - if (!$this->isWriterOpened) { - return; - } - - $this->closeWriter(); - - fclose($this->filePointer); - - $this->isWriterOpened = false; - } - - /** - * Opens the streamer and makes it ready to accept data. - * - * @throws IOException If the writer cannot be opened - */ - abstract protected function openWriter(): void; - - /** - * Adds a row to the currently opened writer. - * - * @param Row $row The row containing cells and styles - * - * @throws WriterNotOpenedException If the workbook is not created yet - * @throws IOException If unable to write data - */ - abstract protected function addRowToWriter(Row $row): void; - - /** - * Closes the streamer, preventing any additional writing. - */ - abstract protected function closeWriter(): void; -} diff --git a/vendor/openspout/openspout/src/Writer/AbstractWriterMultiSheets.php b/vendor/openspout/openspout/src/Writer/AbstractWriterMultiSheets.php deleted file mode 100644 index c1bae86d..00000000 --- a/vendor/openspout/openspout/src/Writer/AbstractWriterMultiSheets.php +++ /dev/null @@ -1,121 +0,0 @@ -throwIfWorkbookIsNotAvailable(); - - $externalSheets = []; - $worksheets = $this->workbookManager->getWorksheets(); - - foreach ($worksheets as $worksheet) { - $externalSheets[] = $worksheet->getExternalSheet(); - } - - return $externalSheets; - } - - /** - * Creates a new sheet and make it the current sheet. The data will now be written to this sheet. - * - * @return Sheet The created sheet - * - * @throws IOException - * @throws WriterNotOpenedException If the writer has not been opened yet - */ - final public function addNewSheetAndMakeItCurrent(): Sheet - { - $this->throwIfWorkbookIsNotAvailable(); - $worksheet = $this->workbookManager->addNewSheetAndMakeItCurrent(); - - return $worksheet->getExternalSheet(); - } - - /** - * Returns the current sheet. - * - * @return Sheet The current sheet - * - * @throws WriterNotOpenedException If the writer has not been opened yet - */ - final public function getCurrentSheet(): Sheet - { - $this->throwIfWorkbookIsNotAvailable(); - - return $this->workbookManager->getCurrentWorksheet()->getExternalSheet(); - } - - /** - * Sets the given sheet as the current one. New data will be written to this sheet. - * The writing will resume where it stopped (i.e. data won't be truncated). - * - * @param Sheet $sheet The sheet to set as current - * - * @throws SheetNotFoundException If the given sheet does not exist in the workbook - * @throws WriterNotOpenedException If the writer has not been opened yet - */ - final public function setCurrentSheet(Sheet $sheet): void - { - $this->throwIfWorkbookIsNotAvailable(); - $this->workbookManager->setCurrentSheet($sheet); - } - - abstract protected function createWorkbookManager(): WorkbookManagerInterface; - - protected function openWriter(): void - { - if (!isset($this->workbookManager)) { - $this->workbookManager = $this->createWorkbookManager(); - $this->workbookManager->addNewSheetAndMakeItCurrent(); - } - } - - /** - * @throws Exception\WriterException - */ - protected function addRowToWriter(Row $row): void - { - $this->throwIfWorkbookIsNotAvailable(); - $this->workbookManager->addRowToCurrentWorksheet($row); - } - - protected function closeWriter(): void - { - if (isset($this->workbookManager)) { - $this->workbookManager->close($this->filePointer); - } - } - - /** - * Checks if the workbook has been created. Throws an exception if not created yet. - * - * @throws WriterNotOpenedException If the workbook is not created yet - */ - private function throwIfWorkbookIsNotAvailable(): void - { - if (!isset($this->workbookManager)) { - throw new WriterNotOpenedException('The writer must be opened before performing this action.'); - } - } -} diff --git a/vendor/openspout/openspout/src/Writer/AutoFilter.php b/vendor/openspout/openspout/src/Writer/AutoFilter.php deleted file mode 100644 index 5fefac10..00000000 --- a/vendor/openspout/openspout/src/Writer/AutoFilter.php +++ /dev/null @@ -1,24 +0,0 @@ -options = $options ?? new Options(); - } - - public function getOptions(): Options - { - return $this->options; - } - - /** - * Opens the CSV streamer and makes it ready to accept data. - */ - protected function openWriter(): void - { - if ($this->options->SHOULD_ADD_BOM) { - // Adds UTF-8 BOM for Unicode compatibility - fwrite($this->filePointer, EncodingHelper::BOM_UTF8); - } - } - - /** - * Adds a row to the currently opened writer. - * - * @param Row $row The row containing cells and styles - * - * @throws IOException If unable to write data - */ - protected function addRowToWriter(Row $row): void - { - $cells = array_map(static function (Cell\BooleanCell|Cell\DateIntervalCell|Cell\DateTimeCell|Cell\EmptyCell|Cell\FormulaCell|Cell\NumericCell|Cell\StringCell $value): string { - if ($value instanceof Cell\BooleanCell) { - return (string) (int) $value->getValue(); - } - if ($value instanceof Cell\DateTimeCell) { - return $value->getValue()->format(DATE_ATOM); - } - if ($value instanceof Cell\DateIntervalCell) { - return $value->getValue()->format('P%yY%mM%dDT%hH%iM%sS%fF'); - } - - return (string) $value->getValue(); - }, $row->getCells()); - - $wasWriteSuccessful = fputcsv( - $this->filePointer, - $cells, - $this->options->FIELD_DELIMITER, - $this->options->FIELD_ENCLOSURE, - '' - ); - if (false === $wasWriteSuccessful) { - throw new IOException('Unable to write data'); // @codeCoverageIgnore - } - - ++$this->lastWrittenRowIndex; - if (0 === $this->lastWrittenRowIndex % $this->options->FLUSH_THRESHOLD) { - fflush($this->filePointer); - } - } - - /** - * Closes the CSV streamer, preventing any additional writing. - * If set, sets the headers and redirects output to the browser. - */ - protected function closeWriter(): void - { - $this->lastWrittenRowIndex = 0; - } -} diff --git a/vendor/openspout/openspout/src/Writer/Common/AbstractOptions.php b/vendor/openspout/openspout/src/Writer/Common/AbstractOptions.php deleted file mode 100644 index 0b6651d8..00000000 --- a/vendor/openspout/openspout/src/Writer/Common/AbstractOptions.php +++ /dev/null @@ -1,67 +0,0 @@ -DEFAULT_ROW_STYLE = new Style(); - } - - /** - * @param positive-int ...$columns One or more columns with this width - */ - final public function setColumnWidth(float $width, int ...$columns): void - { - // Gather sequences - $sequence = []; - foreach ($columns as $column) { - $sequenceLength = \count($sequence); - if ($sequenceLength > 0) { - $previousValue = $sequence[$sequenceLength - 1]; - if ($column !== $previousValue + 1) { - $this->setColumnWidthForRange($width, $sequence[0], $previousValue); - $sequence = []; - } - } - $sequence[] = $column; - } - $this->setColumnWidthForRange($width, $sequence[0], $sequence[\count($sequence) - 1]); - } - - /** - * @param float $width The width to set - * @param positive-int $start First column index of the range - * @param positive-int $end Last column index of the range - */ - final public function setColumnWidthForRange(float $width, int $start, int $end): void - { - $this->COLUMN_WIDTHS[] = new ColumnWidth($start, $end, $width); - } - - /** - * @internal - * - * @return ColumnWidth[] - */ - final public function getColumnWidths(): array - { - return $this->COLUMN_WIDTHS; - } -} diff --git a/vendor/openspout/openspout/src/Writer/Common/ColumnWidth.php b/vendor/openspout/openspout/src/Writer/Common/ColumnWidth.php deleted file mode 100644 index c24fbcb8..00000000 --- a/vendor/openspout/openspout/src/Writer/Common/ColumnWidth.php +++ /dev/null @@ -1,21 +0,0 @@ - new CSVWriter(), - 'xlsx' => new XLSXWriter(), - 'ods' => new ODSWriter(), - default => throw new UnsupportedTypeException('No writers supporting the given type: '.$extension), - }; - } -} diff --git a/vendor/openspout/openspout/src/Writer/Common/Entity/Sheet.php b/vendor/openspout/openspout/src/Writer/Common/Entity/Sheet.php deleted file mode 100644 index fba9f305..00000000 --- a/vendor/openspout/openspout/src/Writer/Common/Entity/Sheet.php +++ /dev/null @@ -1,222 +0,0 @@ -index = $sheetIndex; - $this->associatedWorkbookId = $associatedWorkbookId; - - $this->sheetManager = $sheetManager; - $this->sheetManager->markWorkbookIdAsUsed($associatedWorkbookId); - - $this->setName(self::DEFAULT_SHEET_NAME_PREFIX.($sheetIndex + 1)); - $this->setIsVisible(true); - } - - /** - * @return 0|positive-int Index of the sheet, based on order in the workbook (zero-based) - */ - public function getIndex(): int - { - return $this->index; - } - - public function getAssociatedWorkbookId(): string - { - return $this->associatedWorkbookId; - } - - /** - * @return string Name of the sheet - */ - public function getName(): string - { - return $this->name; - } - - /** - * Sets the name of the sheet. Note that Excel has some restrictions on the name: - * - it should not be blank - * - it should not exceed 31 characters - * - it should not contain these characters: \ / ? * : [ or ] - * - it should be unique. - * - * @param string $name Name of the sheet - * - * @throws InvalidSheetNameException if the sheet's name is invalid - */ - public function setName(string $name): self - { - $this->sheetManager->throwIfNameIsInvalid($name, $this); - - $this->name = $name; - - $this->sheetManager->markSheetNameAsUsed($this); - - return $this; - } - - /** - * @return bool isVisible Visibility of the sheet - */ - public function isVisible(): bool - { - return $this->isVisible; - } - - /** - * @param bool $isVisible Visibility of the sheet - */ - public function setIsVisible(bool $isVisible): self - { - $this->isVisible = $isVisible; - - return $this; - } - - /** - * @return $this - */ - public function setSheetView(SheetView $sheetView): self - { - $this->sheetView = $sheetView; - - return $this; - } - - public function getSheetView(): ?SheetView - { - return $this->sheetView; - } - - /** - * @internal - */ - public function incrementWrittenRowCount(): void - { - ++$this->writtenRowCount; - } - - /** - * @return 0|positive-int - */ - public function getWrittenRowCount(): int - { - return $this->writtenRowCount; - } - - /** - * @return $this - */ - public function setAutoFilter(?AutoFilter $autoFilter): self - { - $this->autoFilter = $autoFilter; - - return $this; - } - - public function getAutoFilter(): ?AutoFilter - { - return $this->autoFilter; - } - - /** - * @param positive-int ...$columns One or more columns with this width - */ - public function setColumnWidth(float $width, int ...$columns): void - { - // Gather sequences - $sequence = []; - foreach ($columns as $column) { - $sequenceLength = \count($sequence); - if ($sequenceLength > 0) { - $previousValue = $sequence[$sequenceLength - 1]; - if ($column !== $previousValue + 1) { - $this->setColumnWidthForRange($width, $sequence[0], $previousValue); - $sequence = []; - } - } - $sequence[] = $column; - } - $this->setColumnWidthForRange($width, $sequence[0], $sequence[\count($sequence) - 1]); - } - - /** - * @param float $width The width to set - * @param positive-int $start First column index of the range - * @param positive-int $end Last column index of the range - */ - public function setColumnWidthForRange(float $width, int $start, int $end): void - { - $this->COLUMN_WIDTHS[] = new ColumnWidth($start, $end, $width); - } - - /** - * @internal - * - * @return ColumnWidth[] - */ - public function getColumnWidths(): array - { - return $this->COLUMN_WIDTHS; - } - - public function getPrintTitleRows(): ?string - { - return $this->printTitleRows; - } - - public function setPrintTitleRows(string $printTitleRows): void - { - $this->printTitleRows = $printTitleRows; - } -} diff --git a/vendor/openspout/openspout/src/Writer/Common/Entity/Workbook.php b/vendor/openspout/openspout/src/Writer/Common/Entity/Workbook.php deleted file mode 100644 index 85950863..00000000 --- a/vendor/openspout/openspout/src/Writer/Common/Entity/Workbook.php +++ /dev/null @@ -1,46 +0,0 @@ -internalId = uniqid(); - } - - /** - * @return Worksheet[] - */ - public function getWorksheets(): array - { - return $this->worksheets; - } - - /** - * @param Worksheet[] $worksheets - */ - public function setWorksheets(array $worksheets): void - { - $this->worksheets = $worksheets; - } - - public function getInternalId(): string - { - return $this->internalId; - } -} diff --git a/vendor/openspout/openspout/src/Writer/Common/Entity/Worksheet.php b/vendor/openspout/openspout/src/Writer/Common/Entity/Worksheet.php deleted file mode 100644 index f1db1cbf..00000000 --- a/vendor/openspout/openspout/src/Writer/Common/Entity/Worksheet.php +++ /dev/null @@ -1,92 +0,0 @@ -filePath = $worksheetFilePath; - $this->externalSheet = $externalSheet; - } - - public function getFilePath(): string - { - return $this->filePath; - } - - /** - * @return resource - */ - public function getFilePointer() - { - \assert(null !== $this->filePointer); - - return $this->filePointer; - } - - /** - * @param resource $filePointer - */ - public function setFilePointer($filePointer): void - { - $this->filePointer = $filePointer; - } - - public function getExternalSheet(): Sheet - { - return $this->externalSheet; - } - - public function getMaxNumColumns(): int - { - return $this->maxNumColumns; - } - - public function setMaxNumColumns(int $maxNumColumns): void - { - $this->maxNumColumns = $maxNumColumns; - } - - public function getLastWrittenRowIndex(): int - { - return $this->lastWrittenRowIndex; - } - - public function setLastWrittenRowIndex(int $lastWrittenRowIndex): void - { - $this->lastWrittenRowIndex = $lastWrittenRowIndex; - } - - /** - * @return int The ID of the worksheet - */ - public function getId(): int - { - // sheet index is zero-based, while ID is 1-based - return $this->externalSheet->getIndex() + 1; - } -} diff --git a/vendor/openspout/openspout/src/Writer/Common/Helper/CellHelper.php b/vendor/openspout/openspout/src/Writer/Common/Helper/CellHelper.php deleted file mode 100644 index e70978d8..00000000 --- a/vendor/openspout/openspout/src/Writer/Common/Helper/CellHelper.php +++ /dev/null @@ -1,47 +0,0 @@ - Cache containing the mapping column index => column letters */ - private static array $columnIndexToColumnLettersCache = []; - - /** - * Returns the column letters (base 26) associated to the base 10 column index. - * Excel uses A to Z letters for column indexing, where A is the 1st column, - * Z is the 26th and AA is the 27th. - * The mapping is zero based, so that 0 maps to A, B maps to 1, Z to 25 and AA to 26. - * - * @param int $columnIndexZeroBased The Excel column index (0, 42, ...) - * - * @return string The associated cell index ('A', 'BC', ...) - */ - public static function getColumnLettersFromColumnIndex(int $columnIndexZeroBased): string - { - $originalColumnIndex = $columnIndexZeroBased; - - // Using isset here because it is way faster than array_key_exists... - if (!isset(self::$columnIndexToColumnLettersCache[$originalColumnIndex])) { - $columnLetters = ''; - $capitalAAsciiValue = \ord('A'); - - do { - $modulus = $columnIndexZeroBased % 26; - $columnLetters = \chr($capitalAAsciiValue + $modulus).$columnLetters; - - // substracting 1 because it's zero-based - $columnIndexZeroBased = (int) ($columnIndexZeroBased / 26) - 1; - } while ($columnIndexZeroBased >= 0); - - self::$columnIndexToColumnLettersCache[$originalColumnIndex] = $columnLetters; - } - - return self::$columnIndexToColumnLettersCache[$originalColumnIndex]; - } -} diff --git a/vendor/openspout/openspout/src/Writer/Common/Helper/FileSystemWithRootFolderHelperInterface.php b/vendor/openspout/openspout/src/Writer/Common/Helper/FileSystemWithRootFolderHelperInterface.php deleted file mode 100644 index 0efd0260..00000000 --- a/vendor/openspout/openspout/src/Writer/Common/Helper/FileSystemWithRootFolderHelperInterface.php +++ /dev/null @@ -1,25 +0,0 @@ -open($zipFilePath, ZipArchive::CREATE | ZipArchive::OVERWRITE); - - return $zip; - } - - /** - * @param ZipArchive $zip An opened zip archive object - * - * @return string Path where the zip file of the given folder will be created - */ - public function getZipFilePath(ZipArchive $zip): string - { - return $zip->filename; - } - - /** - * Adds the given file, located under the given root folder to the archive. - * The file will be compressed. - * - * Example of use: - * addFileToArchive($zip, '/tmp/xlsx/foo', 'bar/baz.xml'); - * => will add the file located at '/tmp/xlsx/foo/bar/baz.xml' in the archive, but only as 'bar/baz.xml' - * - * @param ZipArchive $zip An opened zip archive object - * @param string $rootFolderPath path of the root folder that will be ignored in the archive tree - * @param string $localFilePath Path of the file to be added, under the root folder - * @param string $existingFileMode Controls what to do when trying to add an existing file - */ - public function addFileToArchive(ZipArchive $zip, string $rootFolderPath, string $localFilePath, string $existingFileMode = self::EXISTING_FILES_OVERWRITE): void - { - $this->addFileToArchiveWithCompressionMethod( - $zip, - $rootFolderPath, - $localFilePath, - $existingFileMode, - ZipArchive::CM_DEFAULT - ); - } - - /** - * Adds the given file, located under the given root folder to the archive. - * The file will NOT be compressed. - * - * Example of use: - * addUncompressedFileToArchive($zip, '/tmp/xlsx/foo', 'bar/baz.xml'); - * => will add the file located at '/tmp/xlsx/foo/bar/baz.xml' in the archive, but only as 'bar/baz.xml' - * - * @param ZipArchive $zip An opened zip archive object - * @param string $rootFolderPath path of the root folder that will be ignored in the archive tree - * @param string $localFilePath Path of the file to be added, under the root folder - * @param string $existingFileMode Controls what to do when trying to add an existing file - */ - public function addUncompressedFileToArchive(ZipArchive $zip, string $rootFolderPath, string $localFilePath, string $existingFileMode = self::EXISTING_FILES_OVERWRITE): void - { - $this->addFileToArchiveWithCompressionMethod( - $zip, - $rootFolderPath, - $localFilePath, - $existingFileMode, - ZipArchive::CM_STORE - ); - } - - /** - * @param ZipArchive $zip An opened zip archive object - * @param string $folderPath Path to the folder to be zipped - * @param string $existingFileMode Controls what to do when trying to add an existing file - */ - public function addFolderToArchive(ZipArchive $zip, string $folderPath, string $existingFileMode = self::EXISTING_FILES_OVERWRITE): void - { - $folderRealPath = $this->getNormalizedRealPath($folderPath).'/'; - $itemIterator = new RecursiveIteratorIterator( - new RecursiveDirectoryIterator($folderPath, RecursiveDirectoryIterator::SKIP_DOTS), - RecursiveIteratorIterator::SELF_FIRST - ); - - foreach ($itemIterator as $itemInfo) { - \assert($itemInfo instanceof SplFileInfo); - $itemRealPath = $this->getNormalizedRealPath($itemInfo->getPathname()); - $itemLocalPath = str_replace($folderRealPath, '', $itemRealPath); - - if ($itemInfo->isFile() && !$this->shouldSkipFile($zip, $itemLocalPath, $existingFileMode)) { - $zip->addFile($itemRealPath, $itemLocalPath); - } - } - } - - /** - * Closes the archive and copies it into the given stream. - * - * @param ZipArchive $zip An opened zip archive object - * @param resource $streamPointer Pointer to the stream to copy the zip - */ - public function closeArchiveAndCopyToStream(ZipArchive $zip, $streamPointer): void - { - $zipFilePath = $zip->filename; - $zip->close(); - - $this->copyZipToStream($zipFilePath, $streamPointer); - } - - /** - * Adds the given file, located under the given root folder to the archive. - * The file will NOT be compressed. - * - * Example of use: - * addUncompressedFileToArchive($zip, '/tmp/xlsx/foo', 'bar/baz.xml'); - * => will add the file located at '/tmp/xlsx/foo/bar/baz.xml' in the archive, but only as 'bar/baz.xml' - * - * @param ZipArchive $zip An opened zip archive object - * @param string $rootFolderPath path of the root folder that will be ignored in the archive tree - * @param string $localFilePath Path of the file to be added, under the root folder - * @param string $existingFileMode Controls what to do when trying to add an existing file - * @param int $compressionMethod The compression method - */ - private function addFileToArchiveWithCompressionMethod(ZipArchive $zip, string $rootFolderPath, string $localFilePath, string $existingFileMode, int $compressionMethod): void - { - $normalizedLocalFilePath = str_replace('\\', '/', $localFilePath); - if (!$this->shouldSkipFile($zip, $normalizedLocalFilePath, $existingFileMode)) { - $normalizedFullFilePath = $this->getNormalizedRealPath($rootFolderPath.'/'.$normalizedLocalFilePath); - $zip->addFile($normalizedFullFilePath, $normalizedLocalFilePath); - - $zip->setCompressionName($normalizedLocalFilePath, $compressionMethod); - } - } - - /** - * @return bool Whether the file should be added to the archive or skipped - */ - private function shouldSkipFile(ZipArchive $zip, string $itemLocalPath, string $existingFileMode): bool - { - // Skip files if: - // - EXISTING_FILES_SKIP mode chosen - // - File already exists in the archive - return self::EXISTING_FILES_SKIP === $existingFileMode && false !== $zip->locateName($itemLocalPath); - } - - /** - * Returns canonicalized absolute pathname, containing only forward slashes. - * - * @param string $path Path to normalize - * - * @return string Normalized and canonicalized path - */ - private function getNormalizedRealPath(string $path): string - { - $realPath = realpath($path); - \assert(false !== $realPath); - - return str_replace(\DIRECTORY_SEPARATOR, '/', $realPath); - } - - /** - * Streams the contents of the zip file into the given stream. - * - * @param string $zipFilePath Path of the zip file - * @param resource $pointer Pointer to the stream to copy the zip - */ - private function copyZipToStream(string $zipFilePath, $pointer): void - { - $zipFilePointer = fopen($zipFilePath, 'r'); - \assert(false !== $zipFilePointer); - stream_copy_to_stream($zipFilePointer, $pointer); - fclose($zipFilePointer); - } -} diff --git a/vendor/openspout/openspout/src/Writer/Common/Manager/AbstractWorkbookManager.php b/vendor/openspout/openspout/src/Writer/Common/Manager/AbstractWorkbookManager.php deleted file mode 100644 index dc3fbb1a..00000000 --- a/vendor/openspout/openspout/src/Writer/Common/Manager/AbstractWorkbookManager.php +++ /dev/null @@ -1,290 +0,0 @@ -workbook = $workbook; - $this->options = $options; - $this->worksheetManager = $worksheetManager; - $this->styleManager = $styleManager; - $this->styleMerger = $styleMerger; - $this->fileSystemHelper = $fileSystemHelper; - } - - /** - * Creates a new sheet in the workbook and make it the current sheet. - * The writing will resume where it stopped (i.e. data won't be truncated). - * - * @return Worksheet The created sheet - */ - final public function addNewSheetAndMakeItCurrent(): Worksheet - { - $worksheet = $this->addNewSheet(); - $this->setCurrentWorksheet($worksheet); - - return $worksheet; - } - - /** - * @return Worksheet[] All the workbook's sheets - */ - final public function getWorksheets(): array - { - return $this->workbook->getWorksheets(); - } - - /** - * Returns the current sheet. - * - * @return Worksheet The current sheet - */ - final public function getCurrentWorksheet(): Worksheet - { - return $this->currentWorksheet; - } - - /** - * Sets the given sheet as the current one. New data will be written to this sheet. - * The writing will resume where it stopped (i.e. data won't be truncated). - * - * @param Sheet $sheet The "external" sheet to set as current - * - * @throws SheetNotFoundException If the given sheet does not exist in the workbook - */ - final public function setCurrentSheet(Sheet $sheet): void - { - $worksheet = $this->getWorksheetFromExternalSheet($sheet); - if (null !== $worksheet) { - $this->currentWorksheet = $worksheet; - } else { - throw new SheetNotFoundException('The given sheet does not exist in the workbook.'); - } - } - - /** - * Adds a row to the current sheet. - * If shouldCreateNewSheetsAutomatically option is set to true, it will handle pagination - * with the creation of new worksheets if one worksheet has reached its maximum capicity. - * - * @param Row $row The row to be added - * - * @throws IOException If trying to create a new sheet and unable to open the sheet for writing - * @throws InvalidArgumentException - */ - final public function addRowToCurrentWorksheet(Row $row): void - { - $currentWorksheet = $this->getCurrentWorksheet(); - if ($this->hasCurrentWorksheetReachedMaxRows()) { - if (!$this->options->SHOULD_CREATE_NEW_SHEETS_AUTOMATICALLY) { - return; - } - - $currentWorksheet = $this->addNewSheetAndMakeItCurrent(); - } - - $this->addRowToWorksheet($currentWorksheet, $row); - $currentWorksheet->getExternalSheet()->incrementWrittenRowCount(); - } - - /** - * Closes the workbook and all its associated sheets. - * All the necessary files are written to disk and zipped together to create the final file. - * All the temporary files are then deleted. - * - * @param resource $finalFilePointer Pointer to the spreadsheet that will be created - */ - final public function close($finalFilePointer): void - { - $this->closeAllWorksheets(); - $this->closeRemainingObjects(); - $this->writeAllFilesToDiskAndZipThem($finalFilePointer); - $this->cleanupTempFolder(); - } - - /** - * @return int Maximum number of rows/columns a sheet can contain - */ - abstract protected function getMaxRowsPerWorksheet(): int; - - /** - * Closes custom objects that are still opened. - */ - protected function closeRemainingObjects(): void - { - // do nothing by default - } - - /** - * Writes all the necessary files to disk and zip them together to create the final file. - * - * @param resource $finalFilePointer Pointer to the spreadsheet that will be created - */ - abstract protected function writeAllFilesToDiskAndZipThem($finalFilePointer): void; - - /** - * @return string The file path where the data for the given sheet will be stored - */ - private function getWorksheetFilePath(Sheet $sheet): string - { - $sheetsContentTempFolder = $this->fileSystemHelper->getSheetsContentTempFolder(); - - return $sheetsContentTempFolder.\DIRECTORY_SEPARATOR.'sheet'.(1 + $sheet->getIndex()).'.xml'; - } - - /** - * Deletes the root folder created in the temp folder and all its contents. - */ - private function cleanupTempFolder(): void - { - $rootFolder = $this->fileSystemHelper->getRootFolder(); - $this->fileSystemHelper->deleteFolderRecursively($rootFolder); - } - - /** - * Creates a new sheet in the workbook. The current sheet remains unchanged. - * - * @return Worksheet The created sheet - * - * @throws IOException If unable to open the sheet for writing - */ - private function addNewSheet(): Worksheet - { - $worksheets = $this->getWorksheets(); - - $newSheetIndex = \count($worksheets); - $sheetManager = new SheetManager(StringHelper::factory()); - $sheet = new Sheet($newSheetIndex, $this->workbook->getInternalId(), $sheetManager); - - $worksheetFilePath = $this->getWorksheetFilePath($sheet); - $worksheet = new Worksheet($worksheetFilePath, $sheet); - - $this->worksheetManager->startSheet($worksheet); - - $worksheets[] = $worksheet; - $this->workbook->setWorksheets($worksheets); - - return $worksheet; - } - - private function setCurrentWorksheet(Worksheet $worksheet): void - { - $this->currentWorksheet = $worksheet; - } - - /** - * Returns the worksheet associated to the given external sheet. - * - * @return null|Worksheet the worksheet associated to the given external sheet or null if not found - */ - private function getWorksheetFromExternalSheet(Sheet $sheet): ?Worksheet - { - $worksheetFound = null; - - foreach ($this->getWorksheets() as $worksheet) { - if ($worksheet->getExternalSheet() === $sheet) { - $worksheetFound = $worksheet; - - break; - } - } - - return $worksheetFound; - } - - /** - * @return bool whether the current worksheet has reached the maximum number of rows per sheet - */ - private function hasCurrentWorksheetReachedMaxRows(): bool - { - $currentWorksheet = $this->getCurrentWorksheet(); - - return $currentWorksheet->getLastWrittenRowIndex() >= $this->getMaxRowsPerWorksheet(); - } - - /** - * Adds a row to the given sheet. - * - * @param Worksheet $worksheet Worksheet to write the row to - * @param Row $row The row to be added - * - * @throws IOException - * @throws InvalidArgumentException - */ - private function addRowToWorksheet(Worksheet $worksheet, Row $row): void - { - $this->applyDefaultRowStyle($row); - $this->worksheetManager->addRow($worksheet, $row); - - // update max num columns for the worksheet - $currentMaxNumColumns = $worksheet->getMaxNumColumns(); - $cellsCount = $row->getNumCells(); - $worksheet->setMaxNumColumns(max($currentMaxNumColumns, $cellsCount)); - } - - private function applyDefaultRowStyle(Row $row): void - { - $mergedStyle = $this->styleMerger->merge( - $row->getStyle(), - $this->options->DEFAULT_ROW_STYLE - ); - $row->setStyle($mergedStyle); - } - - /** - * Closes all workbook's associated sheets. - */ - private function closeAllWorksheets(): void - { - $worksheets = $this->getWorksheets(); - - foreach ($worksheets as $worksheet) { - $this->worksheetManager->close($worksheet); - } - } -} diff --git a/vendor/openspout/openspout/src/Writer/Common/Manager/RegisteredStyle.php b/vendor/openspout/openspout/src/Writer/Common/Manager/RegisteredStyle.php deleted file mode 100644 index ff7fe380..00000000 --- a/vendor/openspout/openspout/src/Writer/Common/Manager/RegisteredStyle.php +++ /dev/null @@ -1,35 +0,0 @@ -style = $style; - $this->isMatchingRowStyle = $isMatchingRowStyle; - } - - public function getStyle(): Style - { - return $this->style; - } - - public function isMatchingRowStyle(): bool - { - return $this->isMatchingRowStyle; - } -} diff --git a/vendor/openspout/openspout/src/Writer/Common/Manager/SheetManager.php b/vendor/openspout/openspout/src/Writer/Common/Manager/SheetManager.php deleted file mode 100644 index 2fe54df6..00000000 --- a/vendor/openspout/openspout/src/Writer/Common/Manager/SheetManager.php +++ /dev/null @@ -1,134 +0,0 @@ -> Associative array [WORKBOOK_ID] => [[SHEET_INDEX] => [SHEET_NAME]] keeping track of sheets' name to enforce uniqueness per workbook */ - private static array $SHEETS_NAME_USED = []; - - private readonly StringHelper $stringHelper; - - /** - * SheetManager constructor. - */ - public function __construct(StringHelper $stringHelper) - { - $this->stringHelper = $stringHelper; - } - - /** - * Throws an exception if the given sheet's name is not valid. - * - * @see Sheet::setName for validity rules. - * - * @param Sheet $sheet The sheet whose future name is checked - * - * @throws InvalidSheetNameException if the sheet's name is invalid - */ - public function throwIfNameIsInvalid(string $name, Sheet $sheet): void - { - $failedRequirements = []; - $nameLength = $this->stringHelper->getStringLength($name); - - if (!$this->isNameUnique($name, $sheet)) { - $failedRequirements[] = 'It should be unique'; - } elseif (0 === $nameLength) { - $failedRequirements[] = 'It should not be blank'; - } else { - if ($nameLength > self::MAX_LENGTH_SHEET_NAME) { - $failedRequirements[] = 'It should not exceed 31 characters'; - } - - if ($this->doesContainInvalidCharacters($name)) { - $failedRequirements[] = 'It should not contain these characters: \\ / ? * : [ or ]'; - } - - if ($this->doesStartOrEndWithSingleQuote($name)) { - $failedRequirements[] = 'It should not start or end with a single quote'; - } - } - - if (0 !== \count($failedRequirements)) { - $errorMessage = "The sheet's name (\"{$name}\") is invalid. It did not respect these rules:\n - "; - $errorMessage .= implode("\n - ", $failedRequirements); - - throw new InvalidSheetNameException($errorMessage); - } - } - - /** - * @param string $workbookId Workbook ID associated to a Sheet - */ - public function markWorkbookIdAsUsed(string $workbookId): void - { - if (!isset(self::$SHEETS_NAME_USED[$workbookId])) { - self::$SHEETS_NAME_USED[$workbookId] = []; - } - } - - public function markSheetNameAsUsed(Sheet $sheet): void - { - self::$SHEETS_NAME_USED[$sheet->getAssociatedWorkbookId()][$sheet->getIndex()] = $sheet->getName(); - } - - /** - * Returns whether the given name contains at least one invalid character. - * - * @return bool TRUE if the name contains invalid characters, FALSE otherwise - */ - private function doesContainInvalidCharacters(string $name): bool - { - return str_replace(self::INVALID_CHARACTERS_IN_SHEET_NAME, '', $name) !== $name; - } - - /** - * Returns whether the given name starts or ends with a single quote. - * - * @return bool TRUE if the name starts or ends with a single quote, FALSE otherwise - */ - private function doesStartOrEndWithSingleQuote(string $name): bool - { - $startsWithSingleQuote = (0 === $this->stringHelper->getCharFirstOccurrencePosition('\'', $name)); - $endsWithSingleQuote = ($this->stringHelper->getCharLastOccurrencePosition('\'', $name) === ($this->stringHelper->getStringLength($name) - 1)); - - return $startsWithSingleQuote || $endsWithSingleQuote; - } - - /** - * Returns whether the given name is unique. - * - * @param Sheet $sheet The sheet whose future name is checked - * - * @return bool TRUE if the name is unique, FALSE otherwise - */ - private function isNameUnique(string $name, Sheet $sheet): bool - { - foreach (self::$SHEETS_NAME_USED[$sheet->getAssociatedWorkbookId()] as $sheetIndex => $sheetName) { - if ($sheetIndex !== $sheet->getIndex() && $sheetName === $name) { - return false; - } - } - - return true; - } -} diff --git a/vendor/openspout/openspout/src/Writer/Common/Manager/Style/AbstractStyleManager.php b/vendor/openspout/openspout/src/Writer/Common/Manager/Style/AbstractStyleManager.php deleted file mode 100644 index f9c1624c..00000000 --- a/vendor/openspout/openspout/src/Writer/Common/Manager/Style/AbstractStyleManager.php +++ /dev/null @@ -1,84 +0,0 @@ -styleRegistry = $styleRegistry; - } - - /** - * Registers the given style as a used style. - * Duplicate styles won't be registered more than once. - * - * @param Style $style The style to be registered - * - * @return Style the registered style, updated with an internal ID - */ - final public function registerStyle(Style $style): Style - { - return $this->styleRegistry->registerStyle($style); - } - - /** - * Apply additional styles if the given row needs it. - * Typically, set "wrap text" if a cell contains a new line. - * - * @return PossiblyUpdatedStyle The eventually updated style - */ - final public function applyExtraStylesIfNeeded(Cell $cell): PossiblyUpdatedStyle - { - return $this->applyWrapTextIfCellContainsNewLine($cell); - } - - /** - * Returns the default style. - * - * @return Style Default style - */ - final protected function getDefaultStyle(): Style - { - // By construction, the default style has ID 0 - return $this->styleRegistry->getRegisteredStyles()[0]; - } - - /** - * Set the "wrap text" option if a cell of the given row contains a new line. - * - * @NOTE: There is a bug on the Mac version of Excel (2011 and below) where new lines - * are ignored even when the "wrap text" option is set. This only occurs with - * inline strings (shared strings do work fine). - * A workaround would be to encode "\n" as "_x000D_" but it does not work - * on the Windows version of Excel... - * - * @param Cell $cell The cell the style should be applied to - * - * @return PossiblyUpdatedStyle The eventually updated style - */ - private function applyWrapTextIfCellContainsNewLine(Cell $cell): PossiblyUpdatedStyle - { - $cellStyle = $cell->getStyle(); - - // if the "wrap text" option is already set, no-op - if (!$cellStyle->hasSetWrapText() && $cell instanceof Cell\StringCell && str_contains($cell->getValue(), "\n")) { - $cellStyle->setShouldWrapText(); - - return new PossiblyUpdatedStyle($cellStyle, true); - } - - return new PossiblyUpdatedStyle($cellStyle, false); - } -} diff --git a/vendor/openspout/openspout/src/Writer/Common/Manager/Style/AbstractStyleRegistry.php b/vendor/openspout/openspout/src/Writer/Common/Manager/Style/AbstractStyleRegistry.php deleted file mode 100644 index 433c6f54..00000000 --- a/vendor/openspout/openspout/src/Writer/Common/Manager/Style/AbstractStyleRegistry.php +++ /dev/null @@ -1,96 +0,0 @@ - [SERIALIZED_STYLE] => [STYLE_ID] mapping table, keeping track of the registered styles */ - private array $serializedStyleToStyleIdMappingTable = []; - - /** @var array [STYLE_ID] => [STYLE] mapping table, keeping track of the registered styles */ - private array $styleIdToStyleMappingTable = []; - - public function __construct(Style $defaultStyle) - { - // This ensures that the default style is the first one to be registered - $this->registerStyle($defaultStyle); - } - - /** - * Registers the given style as a used style. - * Duplicate styles won't be registered more than once. - * - * @param Style $style The style to be registered - * - * @return Style the registered style, updated with an internal ID - */ - public function registerStyle(Style $style): Style - { - $serializedStyle = $this->serialize($style); - - if (!$this->hasSerializedStyleAlreadyBeenRegistered($serializedStyle)) { - $nextStyleId = \count($this->serializedStyleToStyleIdMappingTable); - $style->markAsRegistered($nextStyleId); - - $this->serializedStyleToStyleIdMappingTable[$serializedStyle] = $nextStyleId; - $this->styleIdToStyleMappingTable[$nextStyleId] = $style; - } - - return $this->getStyleFromSerializedStyle($serializedStyle); - } - - /** - * @return Style[] List of registered styles - */ - final public function getRegisteredStyles(): array - { - return array_values($this->styleIdToStyleMappingTable); - } - - final public function getStyleFromStyleId(int $styleId): Style - { - return $this->styleIdToStyleMappingTable[$styleId]; - } - - /** - * Serializes the style for future comparison with other styles. - * The ID is excluded from the comparison, as we only care about - * actual style properties. - * - * @return string The serialized style - */ - final public function serialize(Style $style): string - { - return serialize($style); - } - - /** - * Returns whether the serialized style has already been registered. - * - * @param string $serializedStyle The serialized style - */ - private function hasSerializedStyleAlreadyBeenRegistered(string $serializedStyle): bool - { - // Using isset here because it is way faster than array_key_exists... - return isset($this->serializedStyleToStyleIdMappingTable[$serializedStyle]); - } - - /** - * Returns the registered style associated to the given serialization. - * - * @param string $serializedStyle The serialized style from which the actual style should be fetched from - */ - private function getStyleFromSerializedStyle(string $serializedStyle): Style - { - $styleId = $this->serializedStyleToStyleIdMappingTable[$serializedStyle]; - - return $this->styleIdToStyleMappingTable[$styleId]; - } -} diff --git a/vendor/openspout/openspout/src/Writer/Common/Manager/Style/PossiblyUpdatedStyle.php b/vendor/openspout/openspout/src/Writer/Common/Manager/Style/PossiblyUpdatedStyle.php deleted file mode 100644 index ac6ae858..00000000 --- a/vendor/openspout/openspout/src/Writer/Common/Manager/Style/PossiblyUpdatedStyle.php +++ /dev/null @@ -1,32 +0,0 @@ -style = $style; - $this->isUpdated = $isUpdated; - } - - public function getStyle(): Style - { - return $this->style; - } - - public function isUpdated(): bool - { - return $this->isUpdated; - } -} diff --git a/vendor/openspout/openspout/src/Writer/Common/Manager/Style/StyleManagerInterface.php b/vendor/openspout/openspout/src/Writer/Common/Manager/Style/StyleManagerInterface.php deleted file mode 100644 index a2f401d0..00000000 --- a/vendor/openspout/openspout/src/Writer/Common/Manager/Style/StyleManagerInterface.php +++ /dev/null @@ -1,32 +0,0 @@ -mergeFontStyles($mergedStyle, $style, $baseStyle); - $this->mergeOtherFontProperties($mergedStyle, $style, $baseStyle); - $this->mergeCellProperties($mergedStyle, $style, $baseStyle); - - return $mergedStyle; - } - - /** - * @param Style $styleToUpdate (passed as reference) - */ - private function mergeFontStyles(Style $styleToUpdate, Style $style, Style $baseStyle): void - { - if (!$style->hasSetFontBold() && $baseStyle->isFontBold()) { - $styleToUpdate->setFontBold(); - } - if (!$style->hasSetFontItalic() && $baseStyle->isFontItalic()) { - $styleToUpdate->setFontItalic(); - } - if (!$style->hasSetFontUnderline() && $baseStyle->isFontUnderline()) { - $styleToUpdate->setFontUnderline(); - } - if (!$style->hasSetFontStrikethrough() && $baseStyle->isFontStrikethrough()) { - $styleToUpdate->setFontStrikethrough(); - } - } - - /** - * @param Style $styleToUpdate Style to update (passed as reference) - */ - private function mergeOtherFontProperties(Style $styleToUpdate, Style $style, Style $baseStyle): void - { - if (!$style->hasSetFontSize() && Style::DEFAULT_FONT_SIZE !== $baseStyle->getFontSize()) { - $styleToUpdate->setFontSize($baseStyle->getFontSize()); - } - if (!$style->hasSetFontColor() && Style::DEFAULT_FONT_COLOR !== $baseStyle->getFontColor()) { - $styleToUpdate->setFontColor($baseStyle->getFontColor()); - } - if (!$style->hasSetFontName() && Style::DEFAULT_FONT_NAME !== $baseStyle->getFontName()) { - $styleToUpdate->setFontName($baseStyle->getFontName()); - } - } - - /** - * @param Style $styleToUpdate Style to update (passed as reference) - */ - private function mergeCellProperties(Style $styleToUpdate, Style $style, Style $baseStyle): void - { - if (!$style->hasSetWrapText() && $baseStyle->hasSetWrapText()) { - $styleToUpdate->setShouldWrapText($baseStyle->shouldWrapText()); - } - if (!$style->hasSetShrinkToFit() && $baseStyle->shouldShrinkToFit()) { - $styleToUpdate->setShouldShrinkToFit(); - } - if (!$style->hasSetCellAlignment() && $baseStyle->shouldApplyCellAlignment()) { - $styleToUpdate->setCellAlignment($baseStyle->getCellAlignment()); - } - if (!$style->hasSetCellVerticalAlignment() && $baseStyle->shouldApplyCellVerticalAlignment()) { - $styleToUpdate->setCellVerticalAlignment($baseStyle->getCellVerticalAlignment()); - } - if (null === $style->getBorder() && null !== ($border = $baseStyle->getBorder())) { - $styleToUpdate->setBorder($border); - } - if (null === $style->getFormat() && null !== ($format = $baseStyle->getFormat())) { - $styleToUpdate->setFormat($format); - } - if (null === $style->getBackgroundColor() && null !== ($bgColor = $baseStyle->getBackgroundColor())) { - $styleToUpdate->setBackgroundColor($bgColor); - } - } -} diff --git a/vendor/openspout/openspout/src/Writer/Common/Manager/WorkbookManagerInterface.php b/vendor/openspout/openspout/src/Writer/Common/Manager/WorkbookManagerInterface.php deleted file mode 100644 index aecde4fb..00000000 --- a/vendor/openspout/openspout/src/Writer/Common/Manager/WorkbookManagerInterface.php +++ /dev/null @@ -1,71 +0,0 @@ - - * - * @internal - */ -final class BorderHelper -{ - /** - * Width mappings. - */ - public const widthMap = [ - Border::WIDTH_THIN => '0.75pt', - Border::WIDTH_MEDIUM => '1.75pt', - Border::WIDTH_THICK => '2.5pt', - ]; - - /** - * Style mapping. - */ - public const styleMap = [ - Border::STYLE_SOLID => 'solid', - Border::STYLE_DASHED => 'dashed', - Border::STYLE_DOTTED => 'dotted', - Border::STYLE_DOUBLE => 'double', - ]; - - public static function serializeBorderPart(BorderPart $borderPart): string - { - $definition = 'fo:border-%s="%s"'; - - if (Border::STYLE_NONE === $borderPart->getStyle()) { - $borderPartDefinition = sprintf($definition, $borderPart->getName(), 'none'); - } else { - $attributes = [ - self::widthMap[$borderPart->getWidth()], - self::styleMap[$borderPart->getStyle()], - '#'.$borderPart->getColor(), - ]; - $borderPartDefinition = sprintf($definition, $borderPart->getName(), implode(' ', $attributes)); - } - - return $borderPartDefinition; - } -} diff --git a/vendor/openspout/openspout/src/Writer/ODS/Helper/FileSystemHelper.php b/vendor/openspout/openspout/src/Writer/ODS/Helper/FileSystemHelper.php deleted file mode 100644 index df9c0e39..00000000 --- a/vendor/openspout/openspout/src/Writer/ODS/Helper/FileSystemHelper.php +++ /dev/null @@ -1,328 +0,0 @@ -baseFileSystemHelper = new CommonFileSystemHelper($baseFolderPath); - $this->baseFolderRealPath = $this->baseFileSystemHelper->getBaseFolderRealPath(); - $this->zipHelper = $zipHelper; - $this->creator = $creator; - } - - public function createFolder(string $parentFolderPath, string $folderName): string - { - return $this->baseFileSystemHelper->createFolder($parentFolderPath, $folderName); - } - - public function createFileWithContents(string $parentFolderPath, string $fileName, string $fileContents): string - { - return $this->baseFileSystemHelper->createFileWithContents($parentFolderPath, $fileName, $fileContents); - } - - public function deleteFile(string $filePath): void - { - $this->baseFileSystemHelper->deleteFile($filePath); - } - - public function deleteFolderRecursively(string $folderPath): void - { - $this->baseFileSystemHelper->deleteFolderRecursively($folderPath); - } - - public function getRootFolder(): string - { - return $this->rootFolder; - } - - public function getSheetsContentTempFolder(): string - { - return $this->sheetsContentTempFolder; - } - - /** - * Creates all the folders needed to create a ODS file, as well as the files that won't change. - * - * @throws IOException If unable to create at least one of the base folders - */ - public function createBaseFilesAndFolders(): void - { - $this - ->createRootFolder() - ->createMetaInfoFolderAndFile() - ->createSheetsContentTempFolder() - ->createMetaFile() - ->createMimetypeFile() - ; - } - - /** - * Creates the "content.xml" file under the root folder. - * - * @param Worksheet[] $worksheets - */ - public function createContentFile(WorksheetManager $worksheetManager, StyleManager $styleManager, array $worksheets): self - { - $contentXmlFileContents = <<<'EOD' - - - EOD; - - $contentXmlFileContents .= $styleManager->getContentXmlFontFaceSectionContent(); - $contentXmlFileContents .= $styleManager->getContentXmlAutomaticStylesSectionContent($worksheets); - - $contentXmlFileContents .= ''; - - $topContentTempFile = uniqid(self::CONTENT_XML_FILE_NAME); - $this->createFileWithContents($this->rootFolder, $topContentTempFile, $contentXmlFileContents); - - // Append sheets content to "content.xml" - $contentXmlFilePath = $this->rootFolder.\DIRECTORY_SEPARATOR.self::CONTENT_XML_FILE_NAME; - $contentXmlHandle = fopen($contentXmlFilePath, 'w'); - \assert(false !== $contentXmlHandle); - - $topContentTempPathname = $this->rootFolder.\DIRECTORY_SEPARATOR.$topContentTempFile; - $topContentTempHandle = fopen($topContentTempPathname, 'r'); - \assert(false !== $topContentTempHandle); - stream_copy_to_stream($topContentTempHandle, $contentXmlHandle); - fclose($topContentTempHandle); - unlink($topContentTempPathname); - - foreach ($worksheets as $worksheet) { - // write the "" node, with the final sheet's name - fwrite($contentXmlHandle, $worksheetManager->getTableElementStartAsString($worksheet)); - - $worksheetFilePath = $worksheet->getFilePath(); - $this->copyFileContentsToTarget($worksheetFilePath, $contentXmlHandle); - - fwrite($contentXmlHandle, ''); - } - - // add AutoFilter - $databaseRanges = ''; - foreach ($worksheets as $worksheet) { - $databaseRanges .= $worksheetManager->getTableDatabaseRangeElementAsString($worksheet); - } - if ('' !== $databaseRanges) { - fwrite($contentXmlHandle, ''); - fwrite($contentXmlHandle, $databaseRanges); - fwrite($contentXmlHandle, ''); - } - - $contentXmlFileContents = ''; - - fwrite($contentXmlHandle, $contentXmlFileContents); - fclose($contentXmlHandle); - - return $this; - } - - /** - * Deletes the temporary folder where sheets content was stored. - */ - public function deleteWorksheetTempFolder(): self - { - $this->deleteFolderRecursively($this->sheetsContentTempFolder); - - return $this; - } - - /** - * Creates the "styles.xml" file under the root folder. - * - * @param int $numWorksheets Number of created worksheets - */ - public function createStylesFile(StyleManager $styleManager, int $numWorksheets): self - { - $stylesXmlFileContents = $styleManager->getStylesXMLFileContent($numWorksheets); - $this->createFileWithContents($this->rootFolder, self::STYLES_XML_FILE_NAME, $stylesXmlFileContents); - - return $this; - } - - /** - * Zips the root folder and streams the contents of the zip into the given stream. - * - * @param resource $streamPointer Pointer to the stream to copy the zip - */ - public function zipRootFolderAndCopyToStream($streamPointer): void - { - $zip = $this->zipHelper->createZip($this->rootFolder); - - $zipFilePath = $this->zipHelper->getZipFilePath($zip); - - // In order to have the file's mime type detected properly, files need to be added - // to the zip file in a particular order. - // @see http://www.jejik.com/articles/2010/03/how_to_correctly_create_odf_documents_using_zip/ - $this->zipHelper->addUncompressedFileToArchive($zip, $this->rootFolder, self::MIMETYPE_FILE_NAME); - - $this->zipHelper->addFolderToArchive($zip, $this->rootFolder, ZipHelper::EXISTING_FILES_SKIP); - $this->zipHelper->closeArchiveAndCopyToStream($zip, $streamPointer); - - // once the zip is copied, remove it - $this->deleteFile($zipFilePath); - } - - /** - * Creates the folder that will be used as root. - * - * @throws IOException If unable to create the folder - */ - private function createRootFolder(): self - { - $this->rootFolder = $this->createFolder($this->baseFolderRealPath, uniqid('ods')); - - return $this; - } - - /** - * Creates the "META-INF" folder under the root folder as well as the "manifest.xml" file in it. - * - * @throws IOException If unable to create the folder or the "manifest.xml" file - */ - private function createMetaInfoFolderAndFile(): self - { - $this->metaInfFolder = $this->createFolder($this->rootFolder, self::META_INF_FOLDER_NAME); - - $this->createManifestFile(); - - return $this; - } - - /** - * Creates the "manifest.xml" file under the "META-INF" folder (under root). - * - * @throws IOException If unable to create the file - */ - private function createManifestFile(): self - { - $manifestXmlFileContents = <<<'EOD' - - - - - - - - EOD; - - $this->createFileWithContents($this->metaInfFolder, self::MANIFEST_XML_FILE_NAME, $manifestXmlFileContents); - - return $this; - } - - /** - * Creates the temp folder where specific sheets content will be written to. - * This folder is not part of the final ODS file and is only used to be able to jump between sheets. - * - * @throws IOException If unable to create the folder - */ - private function createSheetsContentTempFolder(): self - { - $this->sheetsContentTempFolder = $this->createFolder($this->rootFolder, 'worksheets-temp'); - - return $this; - } - - /** - * Creates the "meta.xml" file under the root folder. - * - * @throws IOException If unable to create the file - */ - private function createMetaFile(): self - { - $createdDate = (new DateTimeImmutable())->format(DateTimeImmutable::W3C); - - $metaXmlFileContents = << - - - {$this->creator} - {$createdDate} - {$createdDate} - - - EOD; - - $this->createFileWithContents($this->rootFolder, self::META_XML_FILE_NAME, $metaXmlFileContents); - - return $this; - } - - /** - * Creates the "mimetype" file under the root folder. - * - * @throws IOException If unable to create the file - */ - private function createMimetypeFile(): self - { - $this->createFileWithContents($this->rootFolder, self::MIMETYPE_FILE_NAME, self::MIMETYPE); - - return $this; - } - - /** - * Streams the content of the file at the given path into the target resource. - * Depending on which mode the target resource was created with, it will truncate then copy - * or append the content to the target file. - * - * @param string $sourceFilePath Path of the file whose content will be copied - * @param resource $targetResource Target resource that will receive the content - */ - private function copyFileContentsToTarget(string $sourceFilePath, $targetResource): void - { - $sourceHandle = fopen($sourceFilePath, 'r'); - \assert(false !== $sourceHandle); - stream_copy_to_stream($sourceHandle, $targetResource); - fclose($sourceHandle); - } -} diff --git a/vendor/openspout/openspout/src/Writer/ODS/Manager/Style/StyleManager.php b/vendor/openspout/openspout/src/Writer/ODS/Manager/Style/StyleManager.php deleted file mode 100644 index ca516d6e..00000000 --- a/vendor/openspout/openspout/src/Writer/ODS/Manager/Style/StyleManager.php +++ /dev/null @@ -1,436 +0,0 @@ -options = $options; - } - - /** - * Returns the content of the "styles.xml" file, given a list of styles. - * - * @param int $numWorksheets Number of worksheets created - */ - public function getStylesXMLFileContent(int $numWorksheets): string - { - $content = <<<'EOD' - - - EOD; - - $content .= $this->getFontFaceSectionContent(); - $content .= $this->getStylesSectionContent(); - $content .= $this->getAutomaticStylesSectionContent($numWorksheets); - $content .= $this->getMasterStylesSectionContent($numWorksheets); - - $content .= <<<'EOD' - - EOD; - - return $content; - } - - /** - * Returns the contents of the "" section, inside "content.xml" file. - */ - public function getContentXmlFontFaceSectionContent(): string - { - $content = ''; - foreach ($this->styleRegistry->getUsedFonts() as $fontName) { - $content .= ''; - } - $content .= ''; - - return $content; - } - - /** - * Returns the contents of the "" section, inside "content.xml" file. - * - * @param Worksheet[] $worksheets - */ - public function getContentXmlAutomaticStylesSectionContent(array $worksheets): string - { - $content = ''; - - foreach ($this->styleRegistry->getRegisteredStyles() as $style) { - $content .= $this->getStyleSectionContent($style); - } - - $useOptimalRowHeight = null === $this->options->DEFAULT_ROW_HEIGHT ? 'true' : 'false'; - $defaultRowHeight = null === $this->options->DEFAULT_ROW_HEIGHT ? '15pt' : "{$this->options->DEFAULT_ROW_HEIGHT}pt"; - $defaultColumnWidth = null === $this->options->DEFAULT_COLUMN_WIDTH ? '' : "style:column-width=\"{$this->options->DEFAULT_COLUMN_WIDTH}pt\""; - - $content .= << - - - - - - EOD; - - foreach ($worksheets as $worksheet) { - $worksheetId = $worksheet->getId(); - $isSheetVisible = $worksheet->getExternalSheet()->isVisible() ? 'true' : 'false'; - - $content .= << - - - EOD; - } - - // Sort column widths since ODS cares about order - $columnWidths = $this->options->getColumnWidths(); - usort($columnWidths, static function (ColumnWidth $a, ColumnWidth $b): int { - return $a->start <=> $b->start; - }); - $content .= $this->getTableColumnStylesXMLContent(); - - $content .= ''; - - return $content; - } - - public function getTableColumnStylesXMLContent(): string - { - if ([] === $this->options->getColumnWidths()) { - return ''; - } - - $content = ''; - foreach ($this->options->getColumnWidths() as $styleIndex => $columnWidth) { - $content .= << - - - EOD; - } - - return $content; - } - - public function getStyledTableColumnXMLContent(int $maxNumColumns): string - { - if ([] === $this->options->getColumnWidths()) { - return ''; - } - - $content = ''; - foreach ($this->options->getColumnWidths() as $styleIndex => $columnWidth) { - $numCols = $columnWidth->end - $columnWidth->start + 1; - $content .= << - EOD; - } - \assert(isset($columnWidth)); - // Note: This assumes the column widths are contiguous and default width is - // only applied to columns after the last custom column with a custom width - $content .= ''; - - return $content; - } - - /** - * Returns the content of the "" section, inside "styles.xml" file. - */ - private function getStylesSectionContent(): string - { - $defaultStyle = $this->getDefaultStyle(); - - return << - - - - - - - - - EOD; - } - - /** - * Returns the content of the "" section, inside "styles.xml" file. - * - * @param int $numWorksheets Number of worksheets created - */ - private function getMasterStylesSectionContent(int $numWorksheets): string - { - $content = ''; - - for ($i = 1; $i <= $numWorksheets; ++$i) { - $content .= << - - - - - - EOD; - } - - $content .= ''; - - return $content; - } - - /** - * Returns the content of the "" section, inside "styles.xml" file. - */ - private function getFontFaceSectionContent(): string - { - $content = ''; - foreach ($this->styleRegistry->getUsedFonts() as $fontName) { - $content .= ''; - } - $content .= ''; - - return $content; - } - - /** - * Returns the content of the "" section, inside "styles.xml" file. - * - * @param int $numWorksheets Number of worksheets created - */ - private function getAutomaticStylesSectionContent(int $numWorksheets): string - { - $content = ''; - - for ($i = 1; $i <= $numWorksheets; ++$i) { - $content .= << - - - - - EOD; - } - - $content .= ''; - - return $content; - } - - /** - * Returns the contents of the "" section, inside "" section. - */ - private function getStyleSectionContent(Style $style): string - { - $styleIndex = $style->getId() + 1; // 1-based - - $content = ''; - - $content .= $this->getTextPropertiesSectionContent($style); - $content .= $this->getParagraphPropertiesSectionContent($style); - $content .= $this->getTableCellPropertiesSectionContent($style); - - $content .= ''; - - return $content; - } - - /** - * Returns the contents of the "" section, inside "" section. - */ - private function getTextPropertiesSectionContent(Style $style): string - { - if (!$style->shouldApplyFont()) { - return ''; - } - - return 'getFontSectionContent($style) - .'/>'; - } - - /** - * Returns the contents of the fonts definition section, inside "" section. - */ - private function getFontSectionContent(Style $style): string - { - $defaultStyle = $this->getDefaultStyle(); - $content = ''; - - $fontColor = $style->getFontColor(); - if ($fontColor !== $defaultStyle->getFontColor()) { - $content .= ' fo:color="#'.$fontColor.'"'; - } - - $fontName = $style->getFontName(); - if ($fontName !== $defaultStyle->getFontName()) { - $content .= ' style:font-name="'.$fontName.'" style:font-name-asian="'.$fontName.'" style:font-name-complex="'.$fontName.'"'; - } - - $fontSize = $style->getFontSize(); - if ($fontSize !== $defaultStyle->getFontSize()) { - $content .= ' fo:font-size="'.$fontSize.'pt" style:font-size-asian="'.$fontSize.'pt" style:font-size-complex="'.$fontSize.'pt"'; - } - - if ($style->isFontBold()) { - $content .= ' fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"'; - } - if ($style->isFontItalic()) { - $content .= ' fo:font-style="italic" style:font-style-asian="italic" style:font-style-complex="italic"'; - } - if ($style->isFontUnderline()) { - $content .= ' style:text-underline-style="solid" style:text-underline-type="single"'; - } - if ($style->isFontStrikethrough()) { - $content .= ' style:text-line-through-style="solid"'; - } - - return $content; - } - - /** - * Returns the contents of the "" section, inside "" section. - */ - private function getParagraphPropertiesSectionContent(Style $style): string - { - if (!$style->shouldApplyCellAlignment() && !$style->shouldApplyCellVerticalAlignment()) { - return ''; - } - - return 'getCellAlignmentSectionContent($style) - .$this->getCellVerticalAlignmentSectionContent($style) - .'/>'; - } - - /** - * Returns the contents of the cell alignment definition for the "" section. - */ - private function getCellAlignmentSectionContent(Style $style): string - { - if (!$style->hasSetCellAlignment()) { - return ''; - } - - return sprintf( - ' fo:text-align="%s" ', - $this->transformCellAlignment($style->getCellAlignment()) - ); - } - - /** - * Returns the contents of the cell vertical alignment definition for the "" section. - */ - private function getCellVerticalAlignmentSectionContent(Style $style): string - { - if (!$style->hasSetCellVerticalAlignment()) { - return ''; - } - - return sprintf( - ' fo:vertical-align="%s" ', - $this->transformCellVerticalAlignment($style->getCellVerticalAlignment()) - ); - } - - /** - * Even though "left" and "right" alignments are part of the spec, and interpreted - * respectively as "start" and "end", using the recommended values increase compatibility - * with software that will read the created ODS file. - */ - private function transformCellAlignment(string $cellAlignment): string - { - return match ($cellAlignment) { - CellAlignment::LEFT => 'start', - CellAlignment::RIGHT => 'end', - default => $cellAlignment, - }; - } - - /** - * Spec uses 'middle' rather than 'center' - * http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1420236_253892949. - */ - private function transformCellVerticalAlignment(string $cellVerticalAlignment): string - { - return (CellVerticalAlignment::CENTER === $cellVerticalAlignment) - ? 'middle' - : $cellVerticalAlignment; - } - - /** - * Returns the contents of the "" section, inside "" section. - */ - private function getTableCellPropertiesSectionContent(Style $style): string - { - $content = 'hasSetWrapText()) { - $content .= $this->getWrapTextXMLContent($style->shouldWrapText()); - } - - if (null !== ($border = $style->getBorder())) { - $content .= $this->getBorderXMLContent($border); - } - - if (null !== ($bgColor = $style->getBackgroundColor())) { - $content .= $this->getBackgroundColorXMLContent($bgColor); - } - - $content .= '/>'; - - return $content; - } - - /** - * Returns the contents of the wrap text definition for the "" section. - */ - private function getWrapTextXMLContent(bool $shouldWrapText): string - { - return ' fo:wrap-option="'.($shouldWrapText ? '' : 'no-').'wrap" style:vertical-align="automatic" '; - } - - /** - * Returns the contents of the borders definition for the "" section. - */ - private function getBorderXMLContent(Border $border): string - { - $borders = array_map(static function (BorderPart $borderPart) { - return BorderHelper::serializeBorderPart($borderPart); - }, $border->getParts()); - - return sprintf(' %s ', implode(' ', $borders)); - } - - /** - * Returns the contents of the background color definition for the "" section. - */ - private function getBackgroundColorXMLContent(string $bgColor): string - { - return sprintf(' fo:background-color="#%s" ', $bgColor); - } -} diff --git a/vendor/openspout/openspout/src/Writer/ODS/Manager/Style/StyleRegistry.php b/vendor/openspout/openspout/src/Writer/ODS/Manager/Style/StyleRegistry.php deleted file mode 100644 index cdba6088..00000000 --- a/vendor/openspout/openspout/src/Writer/ODS/Manager/Style/StyleRegistry.php +++ /dev/null @@ -1,45 +0,0 @@ - [FONT_NAME] => [] Map whose keys contain all the fonts used */ - private array $usedFontsSet = []; - - /** - * Registers the given style as a used style. - * Duplicate styles won't be registered more than once. - * - * @param Style $style The style to be registered - * - * @return Style the registered style, updated with an internal ID - */ - public function registerStyle(Style $style): Style - { - if ($style->isRegistered()) { - return $style; - } - - $registeredStyle = parent::registerStyle($style); - $this->usedFontsSet[$style->getFontName()] = true; - - return $registeredStyle; - } - - /** - * @return string[] List of used fonts name - */ - public function getUsedFonts(): array - { - return array_keys($this->usedFontsSet); - } -} diff --git a/vendor/openspout/openspout/src/Writer/ODS/Manager/WorkbookManager.php b/vendor/openspout/openspout/src/Writer/ODS/Manager/WorkbookManager.php deleted file mode 100644 index 750e0ca2..00000000 --- a/vendor/openspout/openspout/src/Writer/ODS/Manager/WorkbookManager.php +++ /dev/null @@ -1,73 +0,0 @@ -getWorksheets(); - $numWorksheets = \count($worksheets); - - $this->fileSystemHelper - ->createContentFile($this->worksheetManager, $this->styleManager, $worksheets) - ->deleteWorksheetTempFolder() - ->createStylesFile($this->styleManager, $numWorksheets) - ->zipRootFolderAndCopyToStream($finalFilePointer) - ; - } -} diff --git a/vendor/openspout/openspout/src/Writer/ODS/Manager/WorksheetManager.php b/vendor/openspout/openspout/src/Writer/ODS/Manager/WorksheetManager.php deleted file mode 100644 index 0c548fd2..00000000 --- a/vendor/openspout/openspout/src/Writer/ODS/Manager/WorksheetManager.php +++ /dev/null @@ -1,273 +0,0 @@ -styleManager = $styleManager; - $this->styleMerger = $styleMerger; - $this->stringsEscaper = $stringsEscaper; - } - - /** - * Prepares the worksheet to accept data. - * - * @param Worksheet $worksheet The worksheet to start - * - * @throws IOException If the sheet data file cannot be opened for writing - */ - public function startSheet(Worksheet $worksheet): void - { - $sheetFilePointer = fopen($worksheet->getFilePath(), 'w'); - \assert(false !== $sheetFilePointer); - - $worksheet->setFilePointer($sheetFilePointer); - } - - /** - * Returns the table XML root node as string. - * - * @return string "" node as string - */ - public function getTableElementStartAsString(Worksheet $worksheet): string - { - $externalSheet = $worksheet->getExternalSheet(); - $escapedSheetName = $this->stringsEscaper->escape($externalSheet->getName()); - $tableStyleName = 'ta'.($externalSheet->getIndex() + 1); - - $tableElement = ''; - $tableElement .= $this->styleManager->getStyledTableColumnXMLContent($worksheet->getMaxNumColumns()); - - return $tableElement; - } - - /** - * Returns the table:database-range XML node for AutoFilter as string. - */ - public function getTableDatabaseRangeElementAsString(Worksheet $worksheet): string - { - $externalSheet = $worksheet->getExternalSheet(); - $escapedSheetName = $this->stringsEscaper->escape($externalSheet->getName()); - $databaseRange = ''; - - if (null !== $autofilter = $externalSheet->getAutoFilter()) { - $rangeAddress = sprintf( - '\'%s\'.%s%s:\'%s\'.%s%s', - $escapedSheetName, - CellHelper::getColumnLettersFromColumnIndex($autofilter->fromColumnIndex), - $autofilter->fromRow, - $escapedSheetName, - CellHelper::getColumnLettersFromColumnIndex($autofilter->toColumnIndex), - $autofilter->toRow - ); - $databaseRange = ''; - } - - return $databaseRange; - } - - /** - * Adds a row to the given worksheet. - * - * @param Worksheet $worksheet The worksheet to add the row to - * @param Row $row The row to be added - * - * @throws InvalidArgumentException If a cell value's type is not supported - * @throws IOException If the data cannot be written - */ - public function addRow(Worksheet $worksheet, Row $row): void - { - $cells = $row->getCells(); - $rowStyle = $row->getStyle(); - - $data = ''; - - $currentCellIndex = 0; - $nextCellIndex = 1; - - for ($i = 0; $i < $row->getNumCells(); ++$i) { - /** @var Cell $cell */ - $cell = $cells[$currentCellIndex]; - - /** @var null|Cell $nextCell */ - $nextCell = $cells[$nextCellIndex] ?? null; - - if (null === $nextCell || $cell->getValue() !== $nextCell->getValue()) { - $registeredStyle = $this->applyStyleAndRegister($cell, $rowStyle); - $cellStyle = $registeredStyle->getStyle(); - if ($registeredStyle->isMatchingRowStyle()) { - $rowStyle = $cellStyle; // Replace actual rowStyle (possibly with null id) by registered style (with id) - } - - $data .= $this->getCellXMLWithStyle($cell, $cellStyle, $currentCellIndex, $nextCellIndex); - $currentCellIndex = $nextCellIndex; - } - - ++$nextCellIndex; - } - - $data .= ''; - - $wasWriteSuccessful = fwrite($worksheet->getFilePointer(), $data); - if (false === $wasWriteSuccessful) { - throw new IOException("Unable to write data in {$worksheet->getFilePath()}"); - } - - // only update the count if the write worked - $lastWrittenRowIndex = $worksheet->getLastWrittenRowIndex(); - $worksheet->setLastWrittenRowIndex($lastWrittenRowIndex + 1); - } - - /** - * Closes the worksheet. - */ - public function close(Worksheet $worksheet): void - { - fclose($worksheet->getFilePointer()); - } - - /** - * Applies styles to the given style, merging the cell's style with its row's style. - * - * @throws InvalidArgumentException If a cell value's type is not supported - */ - private function applyStyleAndRegister(Cell $cell, Style $rowStyle): RegisteredStyle - { - $isMatchingRowStyle = false; - if ($cell->getStyle()->isEmpty()) { - $cell->setStyle($rowStyle); - - $possiblyUpdatedStyle = $this->styleManager->applyExtraStylesIfNeeded($cell); - - if ($possiblyUpdatedStyle->isUpdated()) { - $registeredStyle = $this->styleManager->registerStyle($possiblyUpdatedStyle->getStyle()); - } else { - $registeredStyle = $this->styleManager->registerStyle($rowStyle); - $isMatchingRowStyle = true; - } - } else { - $mergedCellAndRowStyle = $this->styleMerger->merge($cell->getStyle(), $rowStyle); - $cell->setStyle($mergedCellAndRowStyle); - - $possiblyUpdatedStyle = $this->styleManager->applyExtraStylesIfNeeded($cell); - if ($possiblyUpdatedStyle->isUpdated()) { - $newCellStyle = $possiblyUpdatedStyle->getStyle(); - } else { - $newCellStyle = $mergedCellAndRowStyle; - } - - $registeredStyle = $this->styleManager->registerStyle($newCellStyle); - } - - return new RegisteredStyle($registeredStyle, $isMatchingRowStyle); - } - - private function getCellXMLWithStyle(Cell $cell, Style $style, int $currentCellIndex, int $nextCellIndex): string - { - $styleIndex = $style->getId() + 1; // 1-based - - $numTimesValueRepeated = ($nextCellIndex - $currentCellIndex); - - return $this->getCellXML($cell, $styleIndex, $numTimesValueRepeated); - } - - /** - * Returns the cell XML content, given its value. - * - * @param Cell $cell The cell to be written - * @param int $styleIndex Index of the used style - * @param int $numTimesValueRepeated Number of times the value is consecutively repeated - * - * @return string The cell XML content - * - * @throws InvalidArgumentException If a cell value's type is not supported - */ - private function getCellXML(Cell $cell, int $styleIndex, int $numTimesValueRepeated): string - { - $data = 'getValue()); - foreach ($cellValueLines as $cellValueLine) { - $data .= ''.$this->stringsEscaper->escape($cellValueLine).''; - } - - $data .= ''; - } elseif ($cell instanceof Cell\BooleanCell) { - $value = $cell->getValue() ? 'true' : 'false'; // boolean-value spec: http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#datatype-boolean - $data .= ' office:value-type="boolean" calcext:value-type="boolean" office:boolean-value="'.$value.'">'; - $data .= ''.$cell->getValue().''; - $data .= ''; - } elseif ($cell instanceof Cell\NumericCell) { - $cellValue = $cell->getValue(); - $data .= ' office:value-type="float" calcext:value-type="float" office:value="'.$cellValue.'">'; - $data .= ''.$cellValue.''; - $data .= ''; - } elseif ($cell instanceof Cell\DateTimeCell) { - $datevalue = substr((new DateTimeImmutable('@'.$cell->getValue()->getTimestamp()))->format(DateTimeInterface::W3C), 0, -6); - $data .= ' office:value-type="date" calcext:value-type="date" office:date-value="'.$datevalue.'Z">'; - $data .= ''.$datevalue.'Z'; - $data .= ''; - } elseif ($cell instanceof Cell\DateIntervalCell) { - // workaround for missing DateInterval::format('c'), see https://stackoverflow.com/a/61088115/53538 - static $f = ['M0S', 'H0M', 'DT0H', 'M0D', 'Y0M', 'P0Y', 'Y0M', 'P0M']; - static $r = ['M', 'H', 'DT', 'M', 'Y0M', 'P', 'Y', 'P']; - $value = rtrim(str_replace($f, $r, $cell->getValue()->format('P%yY%mM%dDT%hH%iM%sS')), 'PT') ?: 'PT0S'; - $data .= ' office:value-type="time" office:time-value="'.$value.'">'; - $data .= ''.$value.''; - $data .= ''; - } elseif ($cell instanceof Cell\ErrorCell) { - // only writes the error value if it's a string - $data .= ' office:value-type="string" calcext:value-type="error" office:value="">'; - $data .= ''.$cell->getRawValue().''; - $data .= ''; - } elseif ($cell instanceof Cell\EmptyCell) { - $data .= '/>'; - } - - return $data; - } -} diff --git a/vendor/openspout/openspout/src/Writer/ODS/Options.php b/vendor/openspout/openspout/src/Writer/ODS/Options.php deleted file mode 100644 index ab26415d..00000000 --- a/vendor/openspout/openspout/src/Writer/ODS/Options.php +++ /dev/null @@ -1,9 +0,0 @@ -options = $options ?? new Options(); - } - - public function getOptions(): Options - { - return $this->options; - } - - protected function createWorkbookManager(): WorkbookManager - { - $workbook = new Workbook(); - - $fileSystemHelper = new FileSystemHelper($this->options->getTempFolder(), new ZipHelper(), $this->creator); - $fileSystemHelper->createBaseFilesAndFolders(); - - $styleMerger = new StyleMerger(); - $styleManager = new StyleManager(new StyleRegistry($this->options->DEFAULT_ROW_STYLE), $this->options); - $worksheetManager = new WorksheetManager($styleManager, $styleMerger, new ODS()); - - return new WorkbookManager( - $workbook, - $this->options, - $worksheetManager, - $styleManager, - $styleMerger, - $fileSystemHelper - ); - } -} diff --git a/vendor/openspout/openspout/src/Writer/WriterInterface.php b/vendor/openspout/openspout/src/Writer/WriterInterface.php deleted file mode 100644 index 272eba96..00000000 --- a/vendor/openspout/openspout/src/Writer/WriterInterface.php +++ /dev/null @@ -1,71 +0,0 @@ -showFormulas = $showFormulas; - - return $this; - } - - /** - * @return $this - */ - public function setShowGridLines(bool $showGridLines): self - { - $this->showGridLines = $showGridLines; - - return $this; - } - - /** - * @return $this - */ - public function setShowRowColHeaders(bool $showRowColHeaders): self - { - $this->showRowColHeaders = $showRowColHeaders; - - return $this; - } - - /** - * @return $this - */ - public function setShowZeroes(bool $showZeroes): self - { - $this->showZeroes = $showZeroes; - - return $this; - } - - /** - * @return $this - */ - public function setRightToLeft(bool $rightToLeft): self - { - $this->rightToLeft = $rightToLeft; - - return $this; - } - - /** - * @return $this - */ - public function setTabSelected(bool $tabSelected): self - { - $this->tabSelected = $tabSelected; - - return $this; - } - - /** - * @return $this - */ - public function setShowOutlineSymbols(bool $showOutlineSymbols): self - { - $this->showOutlineSymbols = $showOutlineSymbols; - - return $this; - } - - /** - * @return $this - */ - public function setDefaultGridColor(bool $defaultGridColor): self - { - $this->defaultGridColor = $defaultGridColor; - - return $this; - } - - /** - * @return $this - */ - public function setView(string $view): self - { - $this->view = $view; - - return $this; - } - - /** - * @return $this - */ - public function setTopLeftCell(string $topLeftCell): self - { - $this->topLeftCell = $topLeftCell; - - return $this; - } - - /** - * @return $this - */ - public function setColorId(int $colorId): self - { - $this->colorId = $colorId; - - return $this; - } - - /** - * @return $this - */ - public function setZoomScale(int $zoomScale): self - { - $this->zoomScale = $zoomScale; - - return $this; - } - - /** - * @return $this - */ - public function setZoomScaleNormal(int $zoomScaleNormal): self - { - $this->zoomScaleNormal = $zoomScaleNormal; - - return $this; - } - - /** - * @return $this - */ - public function setZoomScalePageLayoutView(int $zoomScalePageLayoutView): self - { - $this->zoomScalePageLayoutView = $zoomScalePageLayoutView; - - return $this; - } - - /** - * @return $this - */ - public function setWorkbookViewId(int $workbookViewId): self - { - $this->workbookViewId = $workbookViewId; - - return $this; - } - - /** - * @param positive-int $freezeRow Set to 2 to fix the first row - * - * @return $this - */ - public function setFreezeRow(int $freezeRow): self - { - if ($freezeRow < 1) { - throw new InvalidArgumentException('Freeze row must be a positive integer'); - } - - $this->freezeRow = $freezeRow; - - return $this; - } - - /** - * @param string $freezeColumn Set to B to fix the first column - * - * @return $this - */ - public function setFreezeColumn(string $freezeColumn): self - { - $this->freezeColumn = strtoupper($freezeColumn); - - return $this; - } - - public function getXml(): string - { - return 'getSheetViewAttributes().'>'. - $this->getFreezeCellPaneXml(). - ''; - } - - private function getSheetViewAttributes(): string - { - return $this->generateAttributes([ - 'showFormulas' => $this->showFormulas, - 'showGridLines' => $this->showGridLines, - 'showRowColHeaders' => $this->showRowColHeaders, - 'showZeroes' => $this->showZeroes, - 'rightToLeft' => $this->rightToLeft, - 'tabSelected' => $this->tabSelected, - 'showOutlineSymbols' => $this->showOutlineSymbols, - 'defaultGridColor' => $this->defaultGridColor, - 'view' => $this->view, - 'topLeftCell' => $this->topLeftCell, - 'colorId' => $this->colorId, - 'zoomScale' => $this->zoomScale, - 'zoomScaleNormal' => $this->zoomScaleNormal, - 'zoomScalePageLayoutView' => $this->zoomScalePageLayoutView, - 'workbookViewId' => $this->workbookViewId, - ]); - } - - private function getFreezeCellPaneXml(): string - { - if ($this->freezeRow < 2 && 'A' === $this->freezeColumn) { - return ''; - } - - $columnIndex = CellHelper::getColumnIndexFromCellIndex($this->freezeColumn.'1'); - - return 'generateAttributes([ - 'xSplit' => $columnIndex, - 'ySplit' => $this->freezeRow - 1, - 'topLeftCell' => $this->freezeColumn.$this->freezeRow, - 'activePane' => 'bottomRight', - 'state' => 'frozen', - ]).'/>'; - } - - /** - * @param array $data with key containing the attribute name and value containing the attribute value - */ - private function generateAttributes(array $data): string - { - // Create attribute for each key - $attributes = array_map(static function (string $key, bool|int|string $value): string { - if (\is_bool($value)) { - $value = $value ? 'true' : 'false'; - } - - return $key.'="'.$value.'"'; - }, array_keys($data), $data); - - // Append all attributes - return ' '.implode(' ', $attributes); - } -} diff --git a/vendor/openspout/openspout/src/Writer/XLSX/Helper/BorderHelper.php b/vendor/openspout/openspout/src/Writer/XLSX/Helper/BorderHelper.php deleted file mode 100644 index dff73459..00000000 --- a/vendor/openspout/openspout/src/Writer/XLSX/Helper/BorderHelper.php +++ /dev/null @@ -1,70 +0,0 @@ - [ - Border::WIDTH_THIN => 'thin', - Border::WIDTH_MEDIUM => 'medium', - Border::WIDTH_THICK => 'thick', - ], - Border::STYLE_DOTTED => [ - Border::WIDTH_THIN => 'dotted', - Border::WIDTH_MEDIUM => 'dotted', - Border::WIDTH_THICK => 'dotted', - ], - Border::STYLE_DASHED => [ - Border::WIDTH_THIN => 'dashed', - Border::WIDTH_MEDIUM => 'mediumDashed', - Border::WIDTH_THICK => 'mediumDashed', - ], - Border::STYLE_DOUBLE => [ - Border::WIDTH_THIN => 'double', - Border::WIDTH_MEDIUM => 'double', - Border::WIDTH_THICK => 'double', - ], - Border::STYLE_NONE => [ - Border::WIDTH_THIN => 'none', - Border::WIDTH_MEDIUM => 'none', - Border::WIDTH_THICK => 'none', - ], - ]; - - public static function serializeBorderPart(?BorderPart $borderPart): string - { - if (null === $borderPart) { - return ''; - } - - $borderStyle = self::getBorderStyle($borderPart); - - $colorEl = sprintf('', $borderPart->getColor()); - $partEl = sprintf( - '<%s style="%s">%s', - $borderPart->getName(), - $borderStyle, - $colorEl, - $borderPart->getName() - ); - - return $partEl.PHP_EOL; - } - - /** - * Get the style definition from the style map. - */ - private static function getBorderStyle(BorderPart $borderPart): string - { - return self::xlsxStyleMap[$borderPart->getStyle()][$borderPart->getWidth()]; - } -} diff --git a/vendor/openspout/openspout/src/Writer/XLSX/Helper/DateHelper.php b/vendor/openspout/openspout/src/Writer/XLSX/Helper/DateHelper.php deleted file mode 100644 index 8fc4d346..00000000 --- a/vendor/openspout/openspout/src/Writer/XLSX/Helper/DateHelper.php +++ /dev/null @@ -1,57 +0,0 @@ -format('Y'); - $month = (int) $dateTime->format('m'); - $day = (int) $dateTime->format('d'); - $hours = (int) $dateTime->format('H'); - $minutes = (int) $dateTime->format('i'); - $seconds = (int) $dateTime->format('s'); - // Fudge factor for the erroneous fact that the year 1900 is treated as a Leap Year in MS Excel - // This affects every date following 28th February 1900 - $excel1900isLeapYear = 1; - if ((1900 === $year) && ($month <= 2)) { - $excel1900isLeapYear = 0; - } - $myexcelBaseDate = 2415020; - - // Julian base date Adjustment - if ($month > 2) { - $month -= 3; - } else { - $month += 9; - --$year; - } - - // Calculate the Julian Date, then subtract the Excel base date (JD 2415020 = 31-Dec-1899 Giving Excel Date of 0) - $century = (int) substr((string) $year, 0, 2); - $decade = (int) substr((string) $year, 2, 2); - $excelDate = - floor((146097 * $century) / 4) - + floor((1461 * $decade) / 4) - + floor((153 * $month + 2) / 5) - + $day - + 1721119 - - $myexcelBaseDate - + $excel1900isLeapYear; - - $excelTime = (($hours * 3600) + ($minutes * 60) + $seconds) / 86400; - - return $excelDate + $excelTime; - } -} diff --git a/vendor/openspout/openspout/src/Writer/XLSX/Helper/DateIntervalHelper.php b/vendor/openspout/openspout/src/Writer/XLSX/Helper/DateIntervalHelper.php deleted file mode 100644 index 5fc5017a..00000000 --- a/vendor/openspout/openspout/src/Writer/XLSX/Helper/DateIntervalHelper.php +++ /dev/null @@ -1,41 +0,0 @@ -y * 365.25 - + $interval->m * 30.437 - + $interval->d - + $interval->h / 24 - + $interval->i / 24 / 60 - + $interval->s / 24 / 60 / 60; - - if (1 === $interval->invert) { - $days *= -1; - } - - return $days; - } -} diff --git a/vendor/openspout/openspout/src/Writer/XLSX/Helper/FileSystemHelper.php b/vendor/openspout/openspout/src/Writer/XLSX/Helper/FileSystemHelper.php deleted file mode 100644 index b39bdb6e..00000000 --- a/vendor/openspout/openspout/src/Writer/XLSX/Helper/FileSystemHelper.php +++ /dev/null @@ -1,738 +0,0 @@ - - - EOD; - - private readonly string $baseFolderRealPath; - private readonly CommonFileSystemHelper $baseFileSystemHelper; - - /** @var ZipHelper Helper to perform tasks with Zip archive */ - private readonly ZipHelper $zipHelper; - - /** @var string document creator */ - private readonly string $creator; - - /** @var XLSX Used to escape XML data */ - private readonly XLSX $escaper; - - /** @var string Path to the root folder inside the temp folder where the files to create the XLSX will be stored */ - private string $rootFolder; - - /** @var string Path to the "_rels" folder inside the root folder */ - private string $relsFolder; - - /** @var string Path to the "docProps" folder inside the root folder */ - private string $docPropsFolder; - - /** @var string Path to the "xl" folder inside the root folder */ - private string $xlFolder; - - /** @var string Path to the "_rels" folder inside the "xl" folder */ - private string $xlRelsFolder; - - /** @var string Path to the "worksheets" folder inside the "xl" folder */ - private string $xlWorksheetsFolder; - - /** @var string Path to the temp folder, inside the root folder, where specific sheets content will be written to */ - private string $sheetsContentTempFolder; - - /** - * @param string $baseFolderPath The path of the base folder where all the I/O can occur - * @param ZipHelper $zipHelper Helper to perform tasks with Zip archive - * @param XLSX $escaper Used to escape XML data - * @param string $creator document creator - */ - public function __construct(string $baseFolderPath, ZipHelper $zipHelper, XLSX $escaper, string $creator) - { - $this->baseFileSystemHelper = new CommonFileSystemHelper($baseFolderPath); - $this->baseFolderRealPath = $this->baseFileSystemHelper->getBaseFolderRealPath(); - $this->zipHelper = $zipHelper; - $this->escaper = $escaper; - $this->creator = $creator; - } - - public function createFolder(string $parentFolderPath, string $folderName): string - { - return $this->baseFileSystemHelper->createFolder($parentFolderPath, $folderName); - } - - public function createFileWithContents(string $parentFolderPath, string $fileName, string $fileContents): string - { - return $this->baseFileSystemHelper->createFileWithContents($parentFolderPath, $fileName, $fileContents); - } - - public function deleteFile(string $filePath): void - { - $this->baseFileSystemHelper->deleteFile($filePath); - } - - public function deleteFolderRecursively(string $folderPath): void - { - $this->baseFileSystemHelper->deleteFolderRecursively($folderPath); - } - - public function getRootFolder(): string - { - return $this->rootFolder; - } - - public function getXlFolder(): string - { - return $this->xlFolder; - } - - public function getXlWorksheetsFolder(): string - { - return $this->xlWorksheetsFolder; - } - - public function getSheetsContentTempFolder(): string - { - return $this->sheetsContentTempFolder; - } - - /** - * Creates all the folders needed to create a XLSX file, as well as the files that won't change. - * - * @throws IOException If unable to create at least one of the base folders - */ - public function createBaseFilesAndFolders(): void - { - $this - ->createRootFolder() - ->createRelsFolderAndFile() - ->createDocPropsFolderAndFiles() - ->createXlFolderAndSubFolders() - ->createSheetsContentTempFolder() - ; - } - - /** - * Creates the "[Content_Types].xml" file under the root folder. - * - * @param Worksheet[] $worksheets - */ - public function createContentTypesFile(array $worksheets): self - { - $contentTypesXmlFileContents = <<<'EOD' - - - - - - - EOD; - - /** @var Worksheet $worksheet */ - foreach ($worksheets as $worksheet) { - $contentTypesXmlFileContents .= ''; - $contentTypesXmlFileContents .= ''; - } - - $contentTypesXmlFileContents .= <<<'EOD' - - - - - - EOD; - - $this->createFileWithContents($this->rootFolder, self::CONTENT_TYPES_XML_FILE_NAME, $contentTypesXmlFileContents); - - return $this; - } - - /** - * Creates the "workbook.xml" file under the "xl" folder. - * - * @param Worksheet[] $worksheets - */ - public function createWorkbookFile(array $worksheets): self - { - $workbookXmlFileContents = <<<'EOD' - - - - EOD; - - /** @var Worksheet $worksheet */ - foreach ($worksheets as $worksheet) { - $worksheetName = $worksheet->getExternalSheet()->getName(); - $worksheetVisibility = $worksheet->getExternalSheet()->isVisible() ? 'visible' : 'hidden'; - $worksheetId = $worksheet->getId(); - $workbookXmlFileContents .= ''; - } - - $workbookXmlFileContents .= <<<'EOD' - - EOD; - - $definedNames = ''; - - /** @var Worksheet $worksheet */ - foreach ($worksheets as $worksheet) { - $sheet = $worksheet->getExternalSheet(); - if (null !== $autofilter = $sheet->getAutoFilter()) { - $worksheetName = $sheet->getName(); - $name = sprintf( - '\'%s\'!$%s$%s:$%s$%s', - $this->escaper->escape($worksheetName), - CellHelper::getColumnLettersFromColumnIndex($autofilter->fromColumnIndex), - $autofilter->fromRow, - CellHelper::getColumnLettersFromColumnIndex($autofilter->toColumnIndex), - $autofilter->toRow - ); - $definedNames .= ''; - } - if (null !== $printTitleRows = $sheet->getPrintTitleRows()) { - $definedNames .= ''.$this->escaper->escape($sheet->getName()).'!'.$printTitleRows.''; - } - } - if ('' !== $definedNames) { - $workbookXmlFileContents .= ''.$definedNames.''; - } - - $workbookXmlFileContents .= <<<'EOD' - - EOD; - - $this->createFileWithContents($this->xlFolder, self::WORKBOOK_XML_FILE_NAME, $workbookXmlFileContents); - - return $this; - } - - /** - * Creates the "workbook.xml.res" file under the "xl/_res" folder. - * - * @param Worksheet[] $worksheets - */ - public function createWorkbookRelsFile(array $worksheets): self - { - $workbookRelsXmlFileContents = <<<'EOD' - - - - - EOD; - - /** @var Worksheet $worksheet */ - foreach ($worksheets as $worksheet) { - $worksheetId = $worksheet->getId(); - $workbookRelsXmlFileContents .= ''; - } - - $workbookRelsXmlFileContents .= ''; - - $this->createFileWithContents($this->xlRelsFolder, self::WORKBOOK_RELS_XML_FILE_NAME, $workbookRelsXmlFileContents); - - return $this; - } - - /** - * Create the "rels" file for a given worksheet. This contains relations to the comments.xml and drawing.vml files for this worksheet. - * - * @param Worksheet[] $worksheets - */ - public function createWorksheetRelsFiles(array $worksheets): self - { - $this->createFolder($this->getXlWorksheetsFolder(), self::RELS_FOLDER_NAME); - - foreach ($worksheets as $worksheet) { - $worksheetId = $worksheet->getId(); - $worksheetRelsContent = ' - - - - '; - - $folder = $this->getXlWorksheetsFolder().\DIRECTORY_SEPARATOR.'_rels'; - $filename = 'sheet'.$worksheetId.'.xml.rels'; - - $this->createFileWithContents($folder, $filename, $worksheetRelsContent); - } - - return $this; - } - - /** - * Creates the "styles.xml" file under the "xl" folder. - */ - public function createStylesFile(StyleManager $styleManager): self - { - $stylesXmlFileContents = $styleManager->getStylesXMLFileContent(); - $this->createFileWithContents($this->xlFolder, self::STYLES_XML_FILE_NAME, $stylesXmlFileContents); - - return $this; - } - - /** - * Creates the "content.xml" file under the root folder. - * - * @param Worksheet[] $worksheets - */ - public function createContentFiles(Options $options, array $worksheets): self - { - $allMergeCells = $options->getMergeCells(); - $pageSetup = $options->getPageSetup(); - foreach ($worksheets as $worksheet) { - $contentXmlFilePath = $this->getXlWorksheetsFolder().\DIRECTORY_SEPARATOR.basename($worksheet->getFilePath()); - $worksheetFilePointer = fopen($contentXmlFilePath, 'w'); - \assert(false !== $worksheetFilePointer); - - $sheet = $worksheet->getExternalSheet(); - fwrite($worksheetFilePointer, self::SHEET_XML_FILE_HEADER); - - // AutoFilter tags - $range = ''; - if (null !== $autofilter = $sheet->getAutoFilter()) { - $range = sprintf( - '%s%s:%s%s', - CellHelper::getColumnLettersFromColumnIndex($autofilter->fromColumnIndex), - $autofilter->fromRow, - CellHelper::getColumnLettersFromColumnIndex($autofilter->toColumnIndex), - $autofilter->toRow - ); - if (isset($pageSetup) && $pageSetup->fitToPage) { - fwrite($worksheetFilePointer, ''); - } else { - fwrite($worksheetFilePointer, ''); - } - fwrite($worksheetFilePointer, sprintf('', $range)); - } elseif (isset($pageSetup) && $pageSetup->fitToPage) { - fwrite($worksheetFilePointer, ''); - } - if (null !== ($sheetView = $sheet->getSheetView())) { - fwrite($worksheetFilePointer, ''.$sheetView->getXml().''); - } - fwrite($worksheetFilePointer, $this->getXMLFragmentForDefaultCellSizing($options)); - fwrite($worksheetFilePointer, $this->getXMLFragmentForColumnWidths($options, $sheet)); - fwrite($worksheetFilePointer, ''); - - $worksheetFilePath = $worksheet->getFilePath(); - $this->copyFileContentsToTarget($worksheetFilePath, $worksheetFilePointer); - fwrite($worksheetFilePointer, ''); - - // AutoFilter tag - if ('' !== $range) { - fwrite($worksheetFilePointer, sprintf('', $range)); - } - - // create nodes for merge cells - $mergeCells = array_filter( - $allMergeCells, - static fn (MergeCell $c) => $c->sheetIndex === $worksheet->getExternalSheet()->getIndex(), - ); - if ([] !== $mergeCells) { - $mergeCellString = ''; - foreach ($mergeCells as $mergeCell) { - $topLeft = CellHelper::getColumnLettersFromColumnIndex($mergeCell->topLeftColumn).$mergeCell->topLeftRow; - $bottomRight = CellHelper::getColumnLettersFromColumnIndex($mergeCell->bottomRightColumn).$mergeCell->bottomRightRow; - $mergeCellString .= sprintf( - '', - $topLeft, - $bottomRight - ); - } - $mergeCellString .= ''; - fwrite($worksheetFilePointer, $mergeCellString); - } - - $this->getXMLFragmentForPageMargin($worksheetFilePointer, $options); - - $this->getXMLFragmentForPageSetup($worksheetFilePointer, $options); - - $this->getXMLFragmentForHeaderFooter($worksheetFilePointer, $options); - - // Add the legacy drawing for comments - fwrite($worksheetFilePointer, ''); - - fwrite($worksheetFilePointer, ''); - fclose($worksheetFilePointer); - } - - return $this; - } - - /** - * Deletes the temporary folder where sheets content was stored. - */ - public function deleteWorksheetTempFolder(): self - { - $this->deleteFolderRecursively($this->sheetsContentTempFolder); - - return $this; - } - - /** - * Zips the root folder and streams the contents of the zip into the given stream. - * - * @param resource $streamPointer Pointer to the stream to copy the zip - */ - public function zipRootFolderAndCopyToStream($streamPointer): void - { - $zip = $this->zipHelper->createZip($this->rootFolder); - - $zipFilePath = $this->zipHelper->getZipFilePath($zip); - - // In order to have the file's mime type detected properly, files need to be added - // to the zip file in a particular order. - // "[Content_Types].xml" then at least 2 files located in "xl" folder should be zipped first. - $this->zipHelper->addFileToArchive($zip, $this->rootFolder, self::CONTENT_TYPES_XML_FILE_NAME); - $this->zipHelper->addFileToArchive($zip, $this->rootFolder, self::XL_FOLDER_NAME.\DIRECTORY_SEPARATOR.self::WORKBOOK_XML_FILE_NAME); - $this->zipHelper->addFileToArchive($zip, $this->rootFolder, self::XL_FOLDER_NAME.\DIRECTORY_SEPARATOR.self::STYLES_XML_FILE_NAME); - - $this->zipHelper->addFolderToArchive($zip, $this->rootFolder, ZipHelper::EXISTING_FILES_SKIP); - $this->zipHelper->closeArchiveAndCopyToStream($zip, $streamPointer); - - // once the zip is copied, remove it - $this->deleteFile($zipFilePath); - } - - /** - * @param resource $targetResource - */ - private function getXMLFragmentForPageMargin($targetResource, Options $options): void - { - $pageMargin = $options->getPageMargin(); - if (null === $pageMargin) { - return; - } - - fwrite($targetResource, "top}\" right=\"{$pageMargin->right}\" bottom=\"{$pageMargin->bottom}\" left=\"{$pageMargin->left}\" header=\"{$pageMargin->header}\" footer=\"{$pageMargin->footer}\"/>"); - } - - /** - * @param resource $targetResource - */ - private function getXMLFragmentForHeaderFooter($targetResource, Options $options): void - { - $headerFooter = $options->getHeaderFooter(); - if (null === $headerFooter) { - return; - } - - $xml = 'differentOddEven) { - $xml .= " differentOddEven=\"{$headerFooter->differentOddEven}\""; - } - - $xml .= '>'; - - if (null !== $headerFooter->oddHeader) { - $xml .= "{$headerFooter->oddHeader}"; - } - - if (null !== $headerFooter->oddFooter) { - $xml .= "{$headerFooter->oddFooter}"; - } - - if ($headerFooter->differentOddEven) { - if (null !== $headerFooter->evenHeader) { - $xml .= "{$headerFooter->evenHeader}"; - } - - if (null !== $headerFooter->evenFooter) { - $xml .= "{$headerFooter->evenFooter}"; - } - } - - $xml .= ''; - - fwrite($targetResource, $xml); - } - - /** - * @param resource $targetResource - */ - private function getXMLFragmentForPageSetup($targetResource, Options $options): void - { - $pageSetup = $options->getPageSetup(); - if (null === $pageSetup) { - return; - } - - $xml = 'pageOrientation) { - $xml .= " orientation=\"{$pageSetup->pageOrientation->value}\""; - } - - if (null !== $pageSetup->paperSize) { - $xml .= " paperSize=\"{$pageSetup->paperSize->value}\""; - } - - if (null !== $pageSetup->fitToHeight) { - $xml .= " fitToHeight=\"{$pageSetup->fitToHeight}\""; - } - - if (null !== $pageSetup->fitToWidth) { - $xml .= " fitToWidth=\"{$pageSetup->fitToWidth}\""; - } - - $xml .= '/>'; - - fwrite($targetResource, $xml); - } - - /** - * Construct column width references xml to inject into worksheet xml file. - */ - private function getXMLFragmentForColumnWidths(Options $options, Sheet $sheet): string - { - if ([] !== $sheet->getColumnWidths()) { - $widths = $sheet->getColumnWidths(); - } elseif ([] !== $options->getColumnWidths()) { - $widths = $options->getColumnWidths(); - } else { - return ''; - } - - $xml = ''; - - foreach ($widths as $columnWidth) { - $xml .= ''; - } - $xml .= ''; - - return $xml; - } - - /** - * Constructs default row height and width xml to inject into worksheet xml file. - */ - private function getXMLFragmentForDefaultCellSizing(Options $options): string - { - $rowHeightXml = null === $options->DEFAULT_ROW_HEIGHT ? '' : " defaultRowHeight=\"{$options->DEFAULT_ROW_HEIGHT}\""; - $colWidthXml = null === $options->DEFAULT_COLUMN_WIDTH ? '' : " defaultColWidth=\"{$options->DEFAULT_COLUMN_WIDTH}\""; - if ('' === $colWidthXml && '' === $rowHeightXml) { - return ''; - } - // Ensure that the required defaultRowHeight is set - $rowHeightXml = '' === $rowHeightXml ? ' defaultRowHeight="0"' : $rowHeightXml; - - return ""; - } - - /** - * Creates the folder that will be used as root. - * - * @throws IOException If unable to create the folder - */ - private function createRootFolder(): self - { - $this->rootFolder = $this->createFolder($this->baseFolderRealPath, uniqid('xlsx', true)); - - return $this; - } - - /** - * Creates the "_rels" folder under the root folder as well as the ".rels" file in it. - * - * @throws IOException If unable to create the folder or the ".rels" file - */ - private function createRelsFolderAndFile(): self - { - $this->relsFolder = $this->createFolder($this->rootFolder, self::RELS_FOLDER_NAME); - - $this->createRelsFile(); - - return $this; - } - - /** - * Creates the ".rels" file under the "_rels" folder (under root). - * - * @throws IOException If unable to create the file - */ - private function createRelsFile(): self - { - $relsFileContents = <<<'EOD' - - - - - - - EOD; - - $this->createFileWithContents($this->relsFolder, self::RELS_FILE_NAME, $relsFileContents); - - return $this; - } - - /** - * Creates the "docProps" folder under the root folder as well as the "app.xml" and "core.xml" files in it. - * - * @throws IOException If unable to create the folder or one of the files - */ - private function createDocPropsFolderAndFiles(): self - { - $this->docPropsFolder = $this->createFolder($this->rootFolder, self::DOC_PROPS_FOLDER_NAME); - - $this->createAppXmlFile(); - $this->createCoreXmlFile(); - - return $this; - } - - /** - * Creates the "app.xml" file under the "docProps" folder. - * - * @throws IOException If unable to create the file - */ - private function createAppXmlFile(): self - { - $appXmlFileContents = << - - {$this->creator} - 0 - - EOD; - - $this->createFileWithContents($this->docPropsFolder, self::APP_XML_FILE_NAME, $appXmlFileContents); - - return $this; - } - - /** - * Creates the "core.xml" file under the "docProps" folder. - * - * @throws IOException If unable to create the file - */ - private function createCoreXmlFile(): self - { - $createdDate = (new DateTimeImmutable())->format(DateTimeImmutable::W3C); - $coreXmlFileContents = << - - {$createdDate} - {$createdDate} - 0 - - EOD; - - $this->createFileWithContents($this->docPropsFolder, self::CORE_XML_FILE_NAME, $coreXmlFileContents); - - return $this; - } - - /** - * Creates the "xl" folder under the root folder as well as its subfolders. - * - * @throws IOException If unable to create at least one of the folders - */ - private function createXlFolderAndSubFolders(): self - { - $this->xlFolder = $this->createFolder($this->rootFolder, self::XL_FOLDER_NAME); - $this->createXlRelsFolder(); - $this->createXlWorksheetsFolder(); - $this->createDrawingsFolder(); - - return $this; - } - - /** - * Creates the temp folder where specific sheets content will be written to. - * This folder is not part of the final ODS file and is only used to be able to jump between sheets. - * - * @throws IOException If unable to create the folder - */ - private function createSheetsContentTempFolder(): self - { - $this->sheetsContentTempFolder = $this->createFolder($this->rootFolder, 'worksheets-temp'); - - return $this; - } - - /** - * Creates the "_rels" folder under the "xl" folder. - * - * @throws IOException If unable to create the folder - */ - private function createXlRelsFolder(): self - { - $this->xlRelsFolder = $this->createFolder($this->xlFolder, self::RELS_FOLDER_NAME); - - return $this; - } - - /** - * Creates the "drawings" folder under the "xl" folder. - * - * @throws IOException If unable to create the folder - */ - private function createDrawingsFolder(): self - { - $this->createFolder($this->getXlFolder(), self::DRAWINGS_FOLDER_NAME); - - return $this; - } - - /** - * Creates the "worksheets" folder under the "xl" folder. - * - * @throws IOException If unable to create the folder - */ - private function createXlWorksheetsFolder(): self - { - $this->xlWorksheetsFolder = $this->createFolder($this->xlFolder, self::WORKSHEETS_FOLDER_NAME); - - return $this; - } - - /** - * Streams the content of the file at the given path into the target resource. - * Depending on which mode the target resource was created with, it will truncate then copy - * or append the content to the target file. - * - * @param string $sourceFilePath Path of the file whose content will be copied - * @param resource $targetResource Target resource that will receive the content - */ - private function copyFileContentsToTarget(string $sourceFilePath, $targetResource): void - { - $sourceHandle = fopen($sourceFilePath, 'r'); - \assert(false !== $sourceHandle); - stream_copy_to_stream($sourceHandle, $targetResource); - fclose($sourceHandle); - } -} diff --git a/vendor/openspout/openspout/src/Writer/XLSX/Manager/CommentsManager.php b/vendor/openspout/openspout/src/Writer/XLSX/Manager/CommentsManager.php deleted file mode 100644 index b86c1a47..00000000 --- a/vendor/openspout/openspout/src/Writer/XLSX/Manager/CommentsManager.php +++ /dev/null @@ -1,225 +0,0 @@ - - - Unknown - - EOD; - - public const COMMENTS_XML_FILE_FOOTER = <<<'EOD' - - - EOD; - - public const DRAWINGS_VML_FILE_HEADER = <<<'EOD' - - - - - - - - - - EOD; - - public const DRAWINGS_VML_FILE_FOOTER = <<<'EOD' - - EOD; - - /** - * File-pointers to the commentsX.xml files, where the index is the id of the worksheet. - * - * @var resource[] - */ - private array $commentsFilePointers = []; - - /** - * File-pointers to the vmlDrawingX.vml files, where the index is the id of the worksheet. - * - * @var resource[] - */ - private array $drawingFilePointers = []; - - private readonly string $xlFolder; - - private int $shapeId = 1024; - - private readonly Escaper\XLSX $stringsEscaper; - - /** - * @param string $xlFolder Path to the "xl" folder - */ - public function __construct(string $xlFolder, Escaper\XLSX $stringsEscaper) - { - $this->xlFolder = $xlFolder; - $this->stringsEscaper = $stringsEscaper; - } - - /** - * Create the two comment-files for the given worksheet. - */ - public function createWorksheetCommentFiles(Worksheet $sheet): void - { - $sheetId = $sheet->getId(); - $commentFp = fopen($this->getCommentsFilePath($sheet), 'w'); - \assert(false !== $commentFp); - - $drawingFp = fopen($this->getDrawingFilePath($sheet), 'w'); - \assert(false !== $drawingFp); - - fwrite($commentFp, self::COMMENTS_XML_FILE_HEADER); - fwrite($drawingFp, self::DRAWINGS_VML_FILE_HEADER); - - $this->commentsFilePointers[$sheetId] = $commentFp; - $this->drawingFilePointers[$sheetId] = $drawingFp; - } - - /** - * Close the two comment-files for the given worksheet. - */ - public function closeWorksheetCommentFiles(Worksheet $sheet): void - { - $sheetId = $sheet->getId(); - - $commentFp = $this->commentsFilePointers[$sheetId]; - $drawingFp = $this->drawingFilePointers[$sheetId]; - - fwrite($commentFp, self::COMMENTS_XML_FILE_FOOTER); - fwrite($drawingFp, self::DRAWINGS_VML_FILE_FOOTER); - - fclose($commentFp); - fclose($drawingFp); - } - - public function addComments(Worksheet $worksheet, Row $row): void - { - $rowIndexZeroBased = 0 + $worksheet->getLastWrittenRowIndex(); - foreach ($row->getCells() as $columnIndexZeroBased => $cell) { - if (null === $cell->comment) { - continue; - } - - $this->addXmlComment($worksheet->getId(), $rowIndexZeroBased, $columnIndexZeroBased, $cell->comment); - $this->addVmlComment($worksheet->getId(), $rowIndexZeroBased, $columnIndexZeroBased, $cell->comment); - } - } - - /** - * @return string The file path where the comments for the given sheet will be stored - */ - private function getCommentsFilePath(Worksheet $sheet): string - { - return $this->xlFolder.\DIRECTORY_SEPARATOR.'comments'.$sheet->getId().'.xml'; - } - - /** - * @return string The file path where the VML comments for the given sheet will be stored - */ - private function getDrawingFilePath(Worksheet $sheet): string - { - return $this->xlFolder.\DIRECTORY_SEPARATOR.'drawings'.\DIRECTORY_SEPARATOR.'vmlDrawing'.$sheet->getId().'.vml'; - } - - /** - * Add a comment to the commentsX.xml file. - * - * @param int $sheetId The id of the sheet (starting with 1) - * @param int $rowIndexZeroBased The row index, starting at 0, of the cell with the comment - * @param int $columnIndexZeroBased The column index, starting at 0, of the cell with the comment - * @param Comment $comment The actual comment - */ - private function addXmlComment(int $sheetId, int $rowIndexZeroBased, int $columnIndexZeroBased, Comment $comment): void - { - $commentsFilePointer = $this->commentsFilePointers[$sheetId]; - $rowIndexOneBased = $rowIndexZeroBased + 1; - $columnLetters = CellHelper::getColumnLettersFromColumnIndex($columnIndexZeroBased); - - $commentxml = ''; - foreach ($comment->getTextRuns() as $line) { - $commentxml .= ''; - $commentxml .= ' '; - if ($line->bold) { - $commentxml .= ' '; - } - if ($line->italic) { - $commentxml .= ' '; - } - $commentxml .= ' '; - $commentxml .= ' '; - $commentxml .= ' '; - $commentxml .= ' '; - $commentxml .= ' '; - $commentxml .= ' '.$this->stringsEscaper->escape($line->text).''; - $commentxml .= ''; - } - $commentxml .= ''; - - fwrite($commentsFilePointer, $commentxml); - } - - /** - * Add a comment to the vmlDrawingX.vml file. - * - * @param int $sheetId The id of the sheet (starting with 1) - * @param int $rowIndexZeroBased The row index, starting at 0, of the cell with the comment - * @param int $columnIndexZeroBased The column index, starting at 0, of the cell with the comment - * @param Comment $comment The actual comment - */ - private function addVmlComment(int $sheetId, int $rowIndexZeroBased, int $columnIndexZeroBased, Comment $comment): void - { - $drawingFilePointer = $this->drawingFilePointers[$sheetId]; - ++$this->shapeId; - - $style = 'position:absolute;z-index:1'; - $style .= ';margin-left:'.$comment->marginLeft; - $style .= ';margin-top:'.$comment->marginTop; - $style .= ';width:'.$comment->width; - $style .= ';height:'.$comment->height; - if (!$comment->visible) { - $style .= ';visibility:hidden'; - } - - $drawingVml = ''; - $drawingVml .= ''; - $drawingVml .= ''; - $drawingVml .= ''; - $drawingVml .= ''; - $drawingVml .= '
    '; - $drawingVml .= ''; - $drawingVml .= ''; - $drawingVml .= ' '; - $drawingVml .= ' '; - $drawingVml .= ' False'; - $drawingVml .= ' '.$rowIndexZeroBased.''; - $drawingVml .= ' '.$columnIndexZeroBased.''; - $drawingVml .= ''; - $drawingVml .= ''; - - fwrite($drawingFilePointer, $drawingVml); - } -} diff --git a/vendor/openspout/openspout/src/Writer/XLSX/Manager/SharedStringsManager.php b/vendor/openspout/openspout/src/Writer/XLSX/Manager/SharedStringsManager.php deleted file mode 100644 index 8f472ebb..00000000 --- a/vendor/openspout/openspout/src/Writer/XLSX/Manager/SharedStringsManager.php +++ /dev/null @@ -1,86 +0,0 @@ - - sharedStringsFilePointer = $resource; - - // the headers is split into different parts so that we can fseek and put in the correct count and uniqueCount later - $header = self::SHARED_STRINGS_XML_FILE_FIRST_PART_HEADER.' '.self::DEFAULT_STRINGS_COUNT_PART.'>'; - fwrite($this->sharedStringsFilePointer, $header); - - $this->stringsEscaper = $stringsEscaper; - } - - /** - * Writes the given string into the sharedStrings.xml file. - * Starting and ending whitespaces are preserved. - * - * @return int ID of the written shared string - */ - public function writeString(string $string): int - { - fwrite($this->sharedStringsFilePointer, ''.$this->stringsEscaper->escape($string).''); - ++$this->numSharedStrings; - - // Shared string ID is zero-based - return $this->numSharedStrings - 1; - } - - /** - * Finishes writing the data in the sharedStrings.xml file and closes the file. - */ - public function close(): void - { - fwrite($this->sharedStringsFilePointer, ''); - - // Replace the default strings count with the actual number of shared strings in the file header - $firstPartHeaderLength = \strlen(self::SHARED_STRINGS_XML_FILE_FIRST_PART_HEADER); - $defaultStringsCountPartLength = \strlen(self::DEFAULT_STRINGS_COUNT_PART); - - // Adding 1 to take into account the space between the last xml attribute and "count" - fseek($this->sharedStringsFilePointer, $firstPartHeaderLength + 1); - fwrite($this->sharedStringsFilePointer, sprintf("%-{$defaultStringsCountPartLength}s", 'count="'.$this->numSharedStrings.'" uniqueCount="'.$this->numSharedStrings.'"')); - - fclose($this->sharedStringsFilePointer); - } -} diff --git a/vendor/openspout/openspout/src/Writer/XLSX/Manager/Style/StyleManager.php b/vendor/openspout/openspout/src/Writer/XLSX/Manager/Style/StyleManager.php deleted file mode 100644 index 3953f4dc..00000000 --- a/vendor/openspout/openspout/src/Writer/XLSX/Manager/Style/StyleManager.php +++ /dev/null @@ -1,319 +0,0 @@ -styleRegistry->getFillIdForStyleId($styleId); - $hasStyleCustomFill = (null !== $associatedFillId && 0 !== $associatedFillId); - - $associatedBorderId = $this->styleRegistry->getBorderIdForStyleId($styleId); - $hasStyleCustomBorders = (null !== $associatedBorderId && 0 !== $associatedBorderId); - - $associatedFormatId = $this->styleRegistry->getFormatIdForStyleId($styleId); - $hasStyleCustomFormats = (null !== $associatedFormatId && 0 !== $associatedFormatId); - - return $hasStyleCustomFill || $hasStyleCustomBorders || $hasStyleCustomFormats; - } - - /** - * Returns the content of the "styles.xml" file, given a list of styles. - */ - public function getStylesXMLFileContent(): string - { - $content = <<<'EOD' - - - EOD; - - $content .= $this->getFormatsSectionContent(); - $content .= $this->getFontsSectionContent(); - $content .= $this->getFillsSectionContent(); - $content .= $this->getBordersSectionContent(); - $content .= $this->getCellStyleXfsSectionContent(); - $content .= $this->getCellXfsSectionContent(); - $content .= $this->getCellStylesSectionContent(); - - $content .= <<<'EOD' - - EOD; - - return $content; - } - - /** - * Returns the content of the "" section. - */ - private function getFormatsSectionContent(): string - { - $tags = []; - $registeredFormats = $this->styleRegistry->getRegisteredFormats(); - foreach ($registeredFormats as $styleId) { - $numFmtId = $this->styleRegistry->getFormatIdForStyleId($styleId); - - // Built-in formats do not need to be declared, skip them - if ($numFmtId < 164) { - continue; - } - - /** @var Style $style */ - $style = $this->styleRegistry->getStyleFromStyleId($styleId); - $format = $style->getFormat(); - $tags[] = ''; - } - $content = ''; - $content .= implode('', $tags); - $content .= ''; - - return $content; - } - - /** - * Returns the content of the "" section. - */ - private function getFontsSectionContent(): string - { - $registeredStyles = $this->styleRegistry->getRegisteredStyles(); - - $content = ''; - - /** @var Style $style */ - foreach ($registeredStyles as $style) { - $content .= ''; - - $content .= ''; - $content .= ''; - $content .= ''; - - if ($style->isFontBold()) { - $content .= ''; - } - if ($style->isFontItalic()) { - $content .= ''; - } - if ($style->isFontUnderline()) { - $content .= ''; - } - if ($style->isFontStrikethrough()) { - $content .= ''; - } - - $content .= ''; - } - - $content .= ''; - - return $content; - } - - /** - * Returns the content of the "" section. - */ - private function getFillsSectionContent(): string - { - $registeredFills = $this->styleRegistry->getRegisteredFills(); - - // Excel reserves two default fills - $fillsCount = \count($registeredFills) + 2; - $content = sprintf('', $fillsCount); - - $content .= ''; - $content .= ''; - - // The other fills are actually registered by setting a background color - foreach ($registeredFills as $styleId) { - /** @var Style $style */ - $style = $this->styleRegistry->getStyleFromStyleId($styleId); - - $backgroundColor = $style->getBackgroundColor(); - $content .= sprintf( - '', - $backgroundColor - ); - } - - $content .= ''; - - return $content; - } - - /** - * Returns the content of the "" section. - */ - private function getBordersSectionContent(): string - { - $registeredBorders = $this->styleRegistry->getRegisteredBorders(); - - // There is one default border with index 0 - $borderCount = \count($registeredBorders) + 1; - - $content = ''; - - // Default border starting at index 0 - $content .= ''; - - foreach ($registeredBorders as $styleId) { - $style = $this->styleRegistry->getStyleFromStyleId($styleId); - $border = $style->getBorder(); - \assert(null !== $border); - $content .= ''; - - // @see https://github.com/box/spout/issues/271 - foreach (BorderPart::allowedNames as $partName) { - $content .= BorderHelper::serializeBorderPart($border->getPart($partName)); - } - - $content .= ''; - } - - $content .= ''; - - return $content; - } - - /** - * Returns the content of the "" section. - */ - private function getCellStyleXfsSectionContent(): string - { - return <<<'EOD' - - - - EOD; - } - - /** - * Returns the content of the "" section. - */ - private function getCellXfsSectionContent(): string - { - $registeredStyles = $this->styleRegistry->getRegisteredStyles(); - - $content = ''; - - foreach ($registeredStyles as $style) { - $styleId = $style->getId(); - $fillId = $this->getFillIdForStyleId($styleId); - $borderId = $this->getBorderIdForStyleId($styleId); - $numFmtId = $this->getFormatIdForStyleId($styleId); - - $content .= 'shouldApplyFont()) { - $content .= ' applyFont="1"'; - } - - $content .= sprintf(' applyBorder="%d"', (bool) $style->getBorder()); - - if ($style->shouldApplyCellAlignment() || $style->shouldApplyCellVerticalAlignment() || $style->hasSetWrapText() || $style->shouldShrinkToFit()) { - $content .= ' applyAlignment="1">'; - $content .= 'shouldApplyCellAlignment()) { - $content .= sprintf(' horizontal="%s"', $style->getCellAlignment()); - } - if ($style->shouldApplyCellVerticalAlignment()) { - $content .= sprintf(' vertical="%s"', $style->getCellVerticalAlignment()); - } - if ($style->hasSetWrapText()) { - $content .= ' wrapText="'.($style->shouldWrapText() ? '1' : '0').'"'; - } - if ($style->shouldShrinkToFit()) { - $content .= ' shrinkToFit="true"'; - } - - $content .= '/>'; - $content .= ''; - } else { - $content .= '/>'; - } - } - - $content .= ''; - - return $content; - } - - /** - * Returns the content of the "" section. - */ - private function getCellStylesSectionContent(): string - { - return <<<'EOD' - - - - EOD; - } - - /** - * Returns the fill ID associated to the given style ID. - * For the default style, we don't a fill. - */ - private function getFillIdForStyleId(int $styleId): int - { - // For the default style (ID = 0), we don't want to override the fill. - // Otherwise all cells of the spreadsheet will have a background color. - $isDefaultStyle = (0 === $styleId); - - return $isDefaultStyle ? 0 : ($this->styleRegistry->getFillIdForStyleId($styleId) ?? 0); - } - - /** - * Returns the fill ID associated to the given style ID. - * For the default style, we don't a border. - */ - private function getBorderIdForStyleId(int $styleId): int - { - // For the default style (ID = 0), we don't want to override the border. - // Otherwise all cells of the spreadsheet will have a border. - $isDefaultStyle = (0 === $styleId); - - return $isDefaultStyle ? 0 : ($this->styleRegistry->getBorderIdForStyleId($styleId) ?? 0); - } - - /** - * Returns the format ID associated to the given style ID. - * For the default style use general format. - */ - private function getFormatIdForStyleId(int $styleId): int - { - // For the default style (ID = 0), we don't want to override the format. - // Otherwise all cells of the spreadsheet will have a format. - $isDefaultStyle = (0 === $styleId); - - return $isDefaultStyle ? 0 : ($this->styleRegistry->getFormatIdForStyleId($styleId) ?? 0); - } -} diff --git a/vendor/openspout/openspout/src/Writer/XLSX/Manager/Style/StyleRegistry.php b/vendor/openspout/openspout/src/Writer/XLSX/Manager/Style/StyleRegistry.php deleted file mode 100644 index 374638d1..00000000 --- a/vendor/openspout/openspout/src/Writer/XLSX/Manager/Style/StyleRegistry.php +++ /dev/null @@ -1,254 +0,0 @@ - 0, - '0' => 1, - '0.00' => 2, - '#,##0' => 3, - '#,##0.00' => 4, - '$#,##0,\-$#,##0' => 5, - '$#,##0,[Red]\-$#,##0' => 6, - '$#,##0.00,\-$#,##0.00' => 7, - '$#,##0.00,[Red]\-$#,##0.00' => 8, - '0%' => 9, - '0.00%' => 10, - '0.00E+00' => 11, - '# ?/?' => 12, - '# ??/??' => 13, - 'mm-dd-yy' => 14, - 'd-mmm-yy' => 15, - 'd-mmm' => 16, - 'mmm-yy' => 17, - 'h:mm AM/PM' => 18, - 'h:mm:ss AM/PM' => 19, - 'h:mm' => 20, - 'h:mm:ss' => 21, - 'm/d/yy h:mm' => 22, - - '#,##0 ,(#,##0)' => 37, - '#,##0 ,[Red](#,##0)' => 38, - '#,##0.00,(#,##0.00)' => 39, - '#,##0.00,[Red](#,##0.00)' => 40, - - '_("$"* #,##0.00_),_("$"* \(#,##0.00\),_("$"* "-"??_),_(@_)' => 44, - 'mm:ss' => 45, - '[h]:mm:ss' => 46, - 'mm:ss.0' => 47, - - '##0.0E+0' => 48, - '@' => 49, - - '[$-404]e/m/d' => 27, - 'm/d/yy' => 30, - 't0' => 59, - 't0.00' => 60, - 't#,##0' => 61, - 't#,##0.00' => 62, - 't0%' => 67, - 't0.00%' => 68, - 't# ?/?' => 69, - 't# ??/??' => 70, - ]; - - /** @var array */ - private array $registeredFormats = []; - - /** @var array [STYLE_ID] => [FORMAT_ID] maps a style to a format declaration */ - private array $styleIdToFormatsMappingTable = []; - - /** - * If the numFmtId is lower than 0xA4 (164 in decimal) - * then it's a built-in number format. - * Since Excel is the dominant vendor - we play along here. - * - * @var int the fill index counter for custom fills - */ - private int $formatIndex = 164; - - /** @var array */ - private array $registeredFills = []; - - /** @var array [STYLE_ID] => [FILL_ID] maps a style to a fill declaration */ - private array $styleIdToFillMappingTable = []; - - /** - * Excel preserves two default fills with index 0 and 1 - * Since Excel is the dominant vendor - we play along here. - * - * @var int the fill index counter for custom fills - */ - private int $fillIndex = 2; - - /** @var array */ - private array $registeredBorders = []; - - /** @var array [STYLE_ID] => [BORDER_ID] maps a style to a border declaration */ - private array $styleIdToBorderMappingTable = []; - - /** - * XLSX specific operations on the registered styles. - */ - public function registerStyle(Style $style): Style - { - if ($style->isRegistered()) { - return $style; - } - - $registeredStyle = parent::registerStyle($style); - $this->registerFill($registeredStyle); - $this->registerFormat($registeredStyle); - $this->registerBorder($registeredStyle); - - return $registeredStyle; - } - - /** - * @return null|int Format ID associated to the given style ID - */ - public function getFormatIdForStyleId(int $styleId): ?int - { - return $this->styleIdToFormatsMappingTable[$styleId] ?? null; - } - - /** - * @return null|int Fill ID associated to the given style ID - */ - public function getFillIdForStyleId(int $styleId): ?int - { - return $this->styleIdToFillMappingTable[$styleId] ?? null; - } - - /** - * @return null|int Fill ID associated to the given style ID - */ - public function getBorderIdForStyleId(int $styleId): ?int - { - return $this->styleIdToBorderMappingTable[$styleId] ?? null; - } - - /** - * @return array - */ - public function getRegisteredFills(): array - { - return $this->registeredFills; - } - - /** - * @return array - */ - public function getRegisteredBorders(): array - { - return $this->registeredBorders; - } - - /** - * @return array - */ - public function getRegisteredFormats(): array - { - return $this->registeredFormats; - } - - /** - * Register a format definition. - */ - private function registerFormat(Style $style): void - { - $styleId = $style->getId(); - - $format = $style->getFormat(); - if (null !== $format) { - $isFormatRegistered = isset($this->registeredFormats[$format]); - - // We need to track the already registered format definitions - if ($isFormatRegistered) { - $registeredStyleId = $this->registeredFormats[$format]; - $registeredFormatId = $this->styleIdToFormatsMappingTable[$registeredStyleId]; - $this->styleIdToFormatsMappingTable[$styleId] = $registeredFormatId; - } else { - $this->registeredFormats[$format] = $styleId; - - $id = self::builtinNumFormatToIdMapping[$format] ?? $this->formatIndex++; - $this->styleIdToFormatsMappingTable[$styleId] = $id; - } - } else { - // The formatId maps a style to a format declaration - // When there is no format definition - we default to 0 ( General ) - $this->styleIdToFormatsMappingTable[$styleId] = 0; - } - } - - /** - * Register a fill definition. - */ - private function registerFill(Style $style): void - { - $styleId = $style->getId(); - - // Currently - only solid backgrounds are supported - // so $backgroundColor is a scalar value (RGB Color) - $backgroundColor = $style->getBackgroundColor(); - - if (null !== $backgroundColor) { - $isBackgroundColorRegistered = isset($this->registeredFills[$backgroundColor]); - - // We need to track the already registered background definitions - if ($isBackgroundColorRegistered) { - $registeredStyleId = $this->registeredFills[$backgroundColor]; - $registeredFillId = $this->styleIdToFillMappingTable[$registeredStyleId]; - $this->styleIdToFillMappingTable[$styleId] = $registeredFillId; - } else { - $this->registeredFills[$backgroundColor] = $styleId; - $this->styleIdToFillMappingTable[$styleId] = $this->fillIndex++; - } - } else { - // The fillId maps a style to a fill declaration - // When there is no background color definition - we default to 0 - $this->styleIdToFillMappingTable[$styleId] = 0; - } - } - - /** - * Register a border definition. - */ - private function registerBorder(Style $style): void - { - $styleId = $style->getId(); - - if (null !== ($border = $style->getBorder())) { - $serializedBorder = serialize($border); - - $isBorderAlreadyRegistered = isset($this->registeredBorders[$serializedBorder]); - - if ($isBorderAlreadyRegistered) { - $registeredStyleId = $this->registeredBorders[$serializedBorder]; - $registeredBorderId = $this->styleIdToBorderMappingTable[$registeredStyleId]; - $this->styleIdToBorderMappingTable[$styleId] = $registeredBorderId; - } else { - $this->registeredBorders[$serializedBorder] = $styleId; - $this->styleIdToBorderMappingTable[$styleId] = \count($this->registeredBorders); - } - } else { - // If no border should be applied - the mapping is the default border: 0 - $this->styleIdToBorderMappingTable[$styleId] = 0; - } - } -} diff --git a/vendor/openspout/openspout/src/Writer/XLSX/Manager/WorkbookManager.php b/vendor/openspout/openspout/src/Writer/XLSX/Manager/WorkbookManager.php deleted file mode 100644 index 08295175..00000000 --- a/vendor/openspout/openspout/src/Writer/XLSX/Manager/WorkbookManager.php +++ /dev/null @@ -1,85 +0,0 @@ -worksheetManager->getSharedStringsManager()->close(); - } - - /** - * Writes all the necessary files to disk and zip them together to create the final file. - * - * @param resource $finalFilePointer Pointer to the spreadsheet that will be created - */ - protected function writeAllFilesToDiskAndZipThem($finalFilePointer): void - { - $worksheets = $this->getWorksheets(); - - $this->fileSystemHelper - ->createContentFiles($this->options, $worksheets) - ->deleteWorksheetTempFolder() - ->createContentTypesFile($worksheets) - ->createWorkbookFile($worksheets) - ->createWorkbookRelsFile($worksheets) - ->createWorksheetRelsFiles($worksheets) - ->createStylesFile($this->styleManager) - ->zipRootFolderAndCopyToStream($finalFilePointer) - ; - } -} diff --git a/vendor/openspout/openspout/src/Writer/XLSX/Manager/WorksheetManager.php b/vendor/openspout/openspout/src/Writer/XLSX/Manager/WorksheetManager.php deleted file mode 100644 index 94ca09c8..00000000 --- a/vendor/openspout/openspout/src/Writer/XLSX/Manager/WorksheetManager.php +++ /dev/null @@ -1,246 +0,0 @@ -options = $options; - $this->styleManager = $styleManager; - $this->styleMerger = $styleMerger; - $this->commentsManager = $commentsManager; - $this->sharedStringsManager = $sharedStringsManager; - $this->stringsEscaper = $stringsEscaper; - $this->stringHelper = $stringHelper; - } - - public function getSharedStringsManager(): SharedStringsManager - { - return $this->sharedStringsManager; - } - - public function startSheet(Worksheet $worksheet): void - { - $sheetFilePointer = fopen($worksheet->getFilePath(), 'w'); - \assert(false !== $sheetFilePointer); - - $worksheet->setFilePointer($sheetFilePointer); - $this->commentsManager->createWorksheetCommentFiles($worksheet); - } - - public function addRow(Worksheet $worksheet, Row $row): void - { - if (!$row->isEmpty()) { - $this->addNonEmptyRow($worksheet, $row); - $this->commentsManager->addComments($worksheet, $row); - } - - $worksheet->setLastWrittenRowIndex($worksheet->getLastWrittenRowIndex() + 1); - } - - public function close(Worksheet $worksheet): void - { - $this->commentsManager->closeWorksheetCommentFiles($worksheet); - fclose($worksheet->getFilePointer()); - } - - /** - * Adds non empty row to the worksheet. - * - * @param Worksheet $worksheet The worksheet to add the row to - * @param Row $row The row to be written - * - * @throws InvalidArgumentException If a cell value's type is not supported - * @throws IOException If the data cannot be written - */ - private function addNonEmptyRow(Worksheet $worksheet, Row $row): void - { - $sheetFilePointer = $worksheet->getFilePointer(); - $rowStyle = $row->getStyle(); - $rowIndexOneBased = $worksheet->getLastWrittenRowIndex() + 1; - $numCells = $row->getNumCells(); - - $rowHeight = $row->getHeight(); - $hasCustomHeight = ($this->options->DEFAULT_ROW_HEIGHT > 0 || $rowHeight > 0) ? '1' : '0'; - $rowXML = " 0 ? "ht=\"{$rowHeight}\" " : '')."customHeight=\"{$hasCustomHeight}\">"; - - foreach ($row->getCells() as $columnIndexZeroBased => $cell) { - $registeredStyle = $this->applyStyleAndRegister($cell, $rowStyle); - $cellStyle = $registeredStyle->getStyle(); - if ($registeredStyle->isMatchingRowStyle()) { - $rowStyle = $cellStyle; // Replace actual rowStyle (possibly with null id) by registered style (with id) - } - $rowXML .= $this->getCellXML($rowIndexOneBased, $columnIndexZeroBased, $cell, $cellStyle->getId()); - } - - $rowXML .= ''; - - $wasWriteSuccessful = fwrite($sheetFilePointer, $rowXML); - if (false === $wasWriteSuccessful) { - throw new IOException("Unable to write data in {$worksheet->getFilePath()}"); - } - } - - /** - * Applies styles to the given style, merging the cell's style with its row's style. - * - * @throws InvalidArgumentException If the given value cannot be processed - */ - private function applyStyleAndRegister(Cell $cell, Style $rowStyle): RegisteredStyle - { - $isMatchingRowStyle = false; - if ($cell->getStyle()->isEmpty()) { - $cell->setStyle($rowStyle); - - $possiblyUpdatedStyle = $this->styleManager->applyExtraStylesIfNeeded($cell); - - if ($possiblyUpdatedStyle->isUpdated()) { - $registeredStyle = $this->styleManager->registerStyle($possiblyUpdatedStyle->getStyle()); - } else { - $registeredStyle = $this->styleManager->registerStyle($rowStyle); - $isMatchingRowStyle = true; - } - } else { - $mergedCellAndRowStyle = $this->styleMerger->merge($cell->getStyle(), $rowStyle); - $cell->setStyle($mergedCellAndRowStyle); - - $possiblyUpdatedStyle = $this->styleManager->applyExtraStylesIfNeeded($cell); - - if ($possiblyUpdatedStyle->isUpdated()) { - $newCellStyle = $possiblyUpdatedStyle->getStyle(); - } else { - $newCellStyle = $mergedCellAndRowStyle; - } - - $registeredStyle = $this->styleManager->registerStyle($newCellStyle); - } - - return new RegisteredStyle($registeredStyle, $isMatchingRowStyle); - } - - /** - * Builds and returns xml for a single cell. - * - * @throws InvalidArgumentException If the given value cannot be processed - */ - private function getCellXML(int $rowIndexOneBased, int $columnIndexZeroBased, Cell $cell, ?int $styleId): string - { - $columnLetters = CellHelper::getColumnLettersFromColumnIndex($columnIndexZeroBased); - $cellXML = 'getCellXMLFragmentForNonEmptyString($cell->getValue()); - } elseif ($cell instanceof Cell\BooleanCell) { - $cellXML .= ' t="b">'.(int) $cell->getValue().''; - } elseif ($cell instanceof Cell\NumericCell) { - $cellXML .= '>'.$cell->getValue().''; - } elseif ($cell instanceof Cell\FormulaCell) { - $cellXML .= '>'.substr($cell->getValue(), 1).''; - } elseif ($cell instanceof Cell\DateTimeCell) { - $cellXML .= '>'.DateHelper::toExcel($cell->getValue()).''; - } elseif ($cell instanceof Cell\DateIntervalCell) { - $cellXML .= '>'.DateIntervalHelper::toExcel($cell->getValue()).''; - } elseif ($cell instanceof Cell\ErrorCell) { - // only writes the error value if it's a string - $cellXML .= ' t="e">'.$cell->getRawValue().''; - } elseif ($cell instanceof Cell\EmptyCell) { - if ($this->styleManager->shouldApplyStyleOnEmptyCell($styleId)) { - $cellXML .= '/>'; - } else { - // don't write empty cells that do no need styling - // NOTE: not appending to $cellXML is the right behavior!! - $cellXML = ''; - } - } - - return $cellXML; - } - - /** - * Returns the XML fragment for a cell containing a non empty string. - * - * @param string $cellValue The cell value - * - * @return string The XML fragment representing the cell - * - * @throws InvalidArgumentException If the string exceeds the maximum number of characters allowed per cell - */ - private function getCellXMLFragmentForNonEmptyString(string $cellValue): string - { - if ($this->stringHelper->getStringLength($cellValue) > self::MAX_CHARACTERS_PER_CELL) { - throw new InvalidArgumentException('Trying to add a value that exceeds the maximum number of characters allowed in a cell (32,767)'); - } - - if ($this->options->SHOULD_USE_INLINE_STRINGS) { - $cellXMLFragment = ' t="inlineStr">'.$this->stringsEscaper->escape($cellValue).''; - } else { - $sharedStringId = $this->sharedStringsManager->writeString($cellValue); - $cellXMLFragment = ' t="s">'.$sharedStringId.''; - } - - return $cellXMLFragment; - } -} diff --git a/vendor/openspout/openspout/src/Writer/XLSX/MergeCell.php b/vendor/openspout/openspout/src/Writer/XLSX/MergeCell.php deleted file mode 100644 index 02e23438..00000000 --- a/vendor/openspout/openspout/src/Writer/XLSX/MergeCell.php +++ /dev/null @@ -1,26 +0,0 @@ -setFontSize(self::DEFAULT_FONT_SIZE); - $defaultRowStyle->setFontName(self::DEFAULT_FONT_NAME); - - $this->DEFAULT_ROW_STYLE = $defaultRowStyle; - } - - /** - * Row coordinates are indexed from 1, columns from 0 (A = 0), - * so a merge B2:G2 looks like $writer->mergeCells(1, 2, 6, 2);. - * - * @param 0|positive-int $topLeftColumn - * @param positive-int $topLeftRow - * @param 0|positive-int $bottomRightColumn - * @param positive-int $bottomRightRow - * @param 0|positive-int $sheetIndex - */ - public function mergeCells( - int $topLeftColumn, - int $topLeftRow, - int $bottomRightColumn, - int $bottomRightRow, - int $sheetIndex = 0, - ): void { - $this->MERGE_CELLS[] = new MergeCell( - $sheetIndex, - $topLeftColumn, - $topLeftRow, - $bottomRightColumn, - $bottomRightRow - ); - } - - /** - * @return MergeCell[] - * - * @internal - */ - public function getMergeCells(): array - { - return $this->MERGE_CELLS; - } - - public function setPageMargin(PageMargin $pageMargin): void - { - $this->pageMargin = $pageMargin; - } - - public function getPageMargin(): ?PageMargin - { - return $this->pageMargin; - } - - public function setPageSetup(PageSetup $pageSetup): void - { - $this->pageSetup = $pageSetup; - } - - public function getPageSetup(): ?PageSetup - { - return $this->pageSetup; - } - - public function setHeaderFooter(HeaderFooter $headerFooter): void - { - $this->headerFooter = $headerFooter; - } - - public function getHeaderFooter(): ?HeaderFooter - { - return $this->headerFooter; - } -} diff --git a/vendor/openspout/openspout/src/Writer/XLSX/Options/HeaderFooter.php b/vendor/openspout/openspout/src/Writer/XLSX/Options/HeaderFooter.php deleted file mode 100644 index cda9dde3..00000000 --- a/vendor/openspout/openspout/src/Writer/XLSX/Options/HeaderFooter.php +++ /dev/null @@ -1,16 +0,0 @@ -fitToPage = null !== $fitToHeight || null !== $fitToWidth; - } -} diff --git a/vendor/openspout/openspout/src/Writer/XLSX/Options/PaperSize.php b/vendor/openspout/openspout/src/Writer/XLSX/Options/PaperSize.php deleted file mode 100644 index 2eb24910..00000000 --- a/vendor/openspout/openspout/src/Writer/XLSX/Options/PaperSize.php +++ /dev/null @@ -1,34 +0,0 @@ -options = $options ?? new Options(); - } - - public function getOptions(): Options - { - return $this->options; - } - - protected function createWorkbookManager(): WorkbookManager - { - $workbook = new Workbook(); - - $fileSystemHelper = new FileSystemHelper( - $this->options->getTempFolder(), - new ZipHelper(), - new XLSX(), - $this->creator - ); - $fileSystemHelper->createBaseFilesAndFolders(); - - $xlFolder = $fileSystemHelper->getXlFolder(); - $sharedStringsManager = new SharedStringsManager($xlFolder, new XLSX()); - - $styleMerger = new StyleMerger(); - $styleManager = new StyleManager(new StyleRegistry($this->options->DEFAULT_ROW_STYLE)); - - $commentsManager = new CommentsManager($xlFolder, new XLSX()); - - $worksheetManager = new WorksheetManager( - $this->options, - $styleManager, - $styleMerger, - $commentsManager, - $sharedStringsManager, - new XLSX(), - StringHelper::factory() - ); - - return new WorkbookManager( - $workbook, - $this->options, - $worksheetManager, - $styleManager, - $styleMerger, - $fileSystemHelper - ); - } -} diff --git a/vendor/phpoption/phpoption/LICENSE b/vendor/phpoption/phpoption/LICENSE deleted file mode 100644 index f49a4e16..00000000 --- a/vendor/phpoption/phpoption/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/vendor/phpoption/phpoption/composer.json b/vendor/phpoption/phpoption/composer.json deleted file mode 100644 index 77f50a37..00000000 --- a/vendor/phpoption/phpoption/composer.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "phpoption/phpoption", - "description": "Option Type for PHP", - "keywords": ["php", "option", "language", "type"], - "license": "Apache-2.0", - "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" - } - ], - "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" - }, - "autoload": { - "psr-4": { - "PhpOption\\": "src/PhpOption/" - } - }, - "autoload-dev": { - "psr-4": { - "PhpOption\\Tests\\": "tests/PhpOption/Tests/" - } - }, - "config": { - "allow-plugins": { - "bamarni/composer-bin-plugin": true - }, - "preferred-install": "dist" - }, - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": true - }, - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/vendor/phpoption/phpoption/src/PhpOption/LazyOption.php b/vendor/phpoption/phpoption/src/PhpOption/LazyOption.php deleted file mode 100644 index 9cb77c86..00000000 --- a/vendor/phpoption/phpoption/src/PhpOption/LazyOption.php +++ /dev/null @@ -1,175 +0,0 @@ - - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -namespace PhpOption; - -use Traversable; - -/** - * @template T - * - * @extends Option - */ -final class LazyOption extends Option -{ - /** @var callable(mixed...):(Option) */ - private $callback; - - /** @var array */ - private $arguments; - - /** @var Option|null */ - private $option; - - /** - * @template S - * @param callable(mixed...):(Option) $callback - * @param array $arguments - * - * @return LazyOption - */ - public static function create($callback, array $arguments = []): self - { - return new self($callback, $arguments); - } - - /** - * @param callable(mixed...):(Option) $callback - * @param array $arguments - */ - public function __construct($callback, array $arguments = []) - { - if (!is_callable($callback)) { - throw new \InvalidArgumentException('Invalid callback given'); - } - - $this->callback = $callback; - $this->arguments = $arguments; - } - - public function isDefined(): bool - { - return $this->option()->isDefined(); - } - - public function isEmpty(): bool - { - return $this->option()->isEmpty(); - } - - public function get() - { - return $this->option()->get(); - } - - public function getOrElse($default) - { - return $this->option()->getOrElse($default); - } - - public function getOrCall($callable) - { - return $this->option()->getOrCall($callable); - } - - public function getOrThrow(\Exception $ex) - { - return $this->option()->getOrThrow($ex); - } - - public function orElse(Option $else) - { - return $this->option()->orElse($else); - } - - public function ifDefined($callable) - { - $this->option()->forAll($callable); - } - - public function forAll($callable) - { - return $this->option()->forAll($callable); - } - - public function map($callable) - { - return $this->option()->map($callable); - } - - public function flatMap($callable) - { - return $this->option()->flatMap($callable); - } - - public function filter($callable) - { - return $this->option()->filter($callable); - } - - public function filterNot($callable) - { - return $this->option()->filterNot($callable); - } - - public function select($value) - { - return $this->option()->select($value); - } - - public function reject($value) - { - return $this->option()->reject($value); - } - - /** - * @return Traversable - */ - public function getIterator(): Traversable - { - return $this->option()->getIterator(); - } - - public function foldLeft($initialValue, $callable) - { - return $this->option()->foldLeft($initialValue, $callable); - } - - public function foldRight($initialValue, $callable) - { - return $this->option()->foldRight($initialValue, $callable); - } - - /** - * @return Option - */ - private function option(): Option - { - if (null === $this->option) { - /** @var mixed */ - $option = call_user_func_array($this->callback, $this->arguments); - if ($option instanceof Option) { - $this->option = $option; - } else { - throw new \RuntimeException(sprintf('Expected instance of %s', Option::class)); - } - } - - return $this->option; - } -} diff --git a/vendor/phpoption/phpoption/src/PhpOption/None.php b/vendor/phpoption/phpoption/src/PhpOption/None.php deleted file mode 100644 index 4b85d22d..00000000 --- a/vendor/phpoption/phpoption/src/PhpOption/None.php +++ /dev/null @@ -1,136 +0,0 @@ - - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -namespace PhpOption; - -use EmptyIterator; - -/** - * @extends Option - */ -final class None extends Option -{ - /** @var None|null */ - private static $instance; - - /** - * @return None - */ - public static function create(): self - { - if (null === self::$instance) { - self::$instance = new self(); - } - - return self::$instance; - } - - public function get() - { - throw new \RuntimeException('None has no value.'); - } - - public function getOrCall($callable) - { - return $callable(); - } - - public function getOrElse($default) - { - return $default; - } - - public function getOrThrow(\Exception $ex) - { - throw $ex; - } - - public function isEmpty(): bool - { - return true; - } - - public function isDefined(): bool - { - return false; - } - - public function orElse(Option $else) - { - return $else; - } - - public function ifDefined($callable) - { - // Just do nothing in that case. - } - - public function forAll($callable) - { - return $this; - } - - public function map($callable) - { - return $this; - } - - public function flatMap($callable) - { - return $this; - } - - public function filter($callable) - { - return $this; - } - - public function filterNot($callable) - { - return $this; - } - - public function select($value) - { - return $this; - } - - public function reject($value) - { - return $this; - } - - public function getIterator(): EmptyIterator - { - return new EmptyIterator(); - } - - public function foldLeft($initialValue, $callable) - { - return $initialValue; - } - - public function foldRight($initialValue, $callable) - { - return $initialValue; - } - - private function __construct() - { - } -} diff --git a/vendor/phpoption/phpoption/src/PhpOption/Option.php b/vendor/phpoption/phpoption/src/PhpOption/Option.php deleted file mode 100644 index 172924cf..00000000 --- a/vendor/phpoption/phpoption/src/PhpOption/Option.php +++ /dev/null @@ -1,434 +0,0 @@ - - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -namespace PhpOption; - -use ArrayAccess; -use IteratorAggregate; - -/** - * @template T - * - * @implements IteratorAggregate - */ -abstract class Option implements IteratorAggregate -{ - /** - * Creates an option given a return value. - * - * This is intended for consuming existing APIs and allows you to easily - * convert them to an option. By default, we treat ``null`` as the None - * case, and everything else as Some. - * - * @template S - * - * @param S $value The actual return value. - * @param S $noneValue The value which should be considered "None"; null by - * default. - * - * @return Option - */ - public static function fromValue($value, $noneValue = null) - { - if ($value === $noneValue) { - return None::create(); - } - - return new Some($value); - } - - /** - * Creates an option from an array's value. - * - * If the key does not exist in the array, the array is not actually an - * array, or the array's value at the given key is null, None is returned. - * Otherwise, Some is returned wrapping the value at the given key. - * - * @template S - * - * @param array|ArrayAccess|null $array A potential array or \ArrayAccess value. - * @param string $key The key to check. - * - * @return Option - */ - public static function fromArraysValue($array, $key) - { - if (!(is_array($array) || $array instanceof ArrayAccess) || !isset($array[$key])) { - return None::create(); - } - - return new Some($array[$key]); - } - - /** - * Creates a lazy-option with the given callback. - * - * This is also a helper constructor for lazy-consuming existing APIs where - * the return value is not yet an option. By default, we treat ``null`` as - * None case, and everything else as Some. - * - * @template S - * - * @param callable $callback The callback to evaluate. - * @param array $arguments The arguments for the callback. - * @param S $noneValue The value which should be considered "None"; - * null by default. - * - * @return LazyOption - */ - public static function fromReturn($callback, array $arguments = [], $noneValue = null) - { - return new LazyOption(static function () use ($callback, $arguments, $noneValue) { - /** @var mixed */ - $return = call_user_func_array($callback, $arguments); - - if ($return === $noneValue) { - return None::create(); - } - - return new Some($return); - }); - } - - /** - * Option factory, which creates new option based on passed value. - * - * If value is already an option, it simply returns. If value is callable, - * LazyOption with passed callback created and returned. If Option - * returned from callback, it returns directly. On other case value passed - * to Option::fromValue() method. - * - * @template S - * - * @param Option|callable|S $value - * @param S $noneValue Used when $value is mixed or - * callable, for None-check. - * - * @return Option|LazyOption - */ - public static function ensure($value, $noneValue = null) - { - if ($value instanceof self) { - return $value; - } elseif (is_callable($value)) { - return new LazyOption(static function () use ($value, $noneValue) { - /** @var mixed */ - $return = $value(); - - if ($return instanceof self) { - return $return; - } else { - return self::fromValue($return, $noneValue); - } - }); - } else { - return self::fromValue($value, $noneValue); - } - } - - /** - * Lift a function so that it accepts Option as parameters. - * - * We return a new closure that wraps the original callback. If any of the - * parameters passed to the lifted function is empty, the function will - * return a value of None. Otherwise, we will pass all parameters to the - * original callback and return the value inside a new Option, unless an - * Option is returned from the function, in which case, we use that. - * - * @template S - * - * @param callable $callback - * @param mixed $noneValue - * - * @return callable - */ - public static function lift($callback, $noneValue = null) - { - return static function () use ($callback, $noneValue) { - /** @var array */ - $args = func_get_args(); - - $reduced_args = array_reduce( - $args, - /** @param bool $status */ - static function ($status, self $o) { - return $o->isEmpty() ? true : $status; - }, - false - ); - // if at least one parameter is empty, return None - if ($reduced_args) { - return None::create(); - } - - $args = array_map( - /** @return T */ - static function (self $o) { - // it is safe to do so because the fold above checked - // that all arguments are of type Some - /** @var T */ - return $o->get(); - }, - $args - ); - - return self::ensure(call_user_func_array($callback, $args), $noneValue); - }; - } - - /** - * Returns the value if available, or throws an exception otherwise. - * - * @throws \RuntimeException If value is not available. - * - * @return T - */ - abstract public function get(); - - /** - * Returns the value if available, or the default value if not. - * - * @template S - * - * @param S $default - * - * @return T|S - */ - abstract public function getOrElse($default); - - /** - * Returns the value if available, or the results of the callable. - * - * This is preferable over ``getOrElse`` if the computation of the default - * value is expensive. - * - * @template S - * - * @param callable():S $callable - * - * @return T|S - */ - abstract public function getOrCall($callable); - - /** - * Returns the value if available, or throws the passed exception. - * - * @param \Exception $ex - * - * @return T - */ - abstract public function getOrThrow(\Exception $ex); - - /** - * Returns true if no value is available, false otherwise. - * - * @return bool - */ - abstract public function isEmpty(); - - /** - * Returns true if a value is available, false otherwise. - * - * @return bool - */ - abstract public function isDefined(); - - /** - * Returns this option if non-empty, or the passed option otherwise. - * - * This can be used to try multiple alternatives, and is especially useful - * with lazy evaluating options: - * - * ```php - * $repo->findSomething() - * ->orElse(new LazyOption(array($repo, 'findSomethingElse'))) - * ->orElse(new LazyOption(array($repo, 'createSomething'))); - * ``` - * - * @param Option $else - * - * @return Option - */ - abstract public function orElse(self $else); - - /** - * This is similar to map() below except that the return value has no meaning; - * the passed callable is simply executed if the option is non-empty, and - * ignored if the option is empty. - * - * In all cases, the return value of the callable is discarded. - * - * ```php - * $comment->getMaybeFile()->ifDefined(function($file) { - * // Do something with $file here. - * }); - * ``` - * - * If you're looking for something like ``ifEmpty``, you can use ``getOrCall`` - * and ``getOrElse`` in these cases. - * - * @deprecated Use forAll() instead. - * - * @param callable(T):mixed $callable - * - * @return void - */ - abstract public function ifDefined($callable); - - /** - * This is similar to map() except that the return value of the callable has no meaning. - * - * The passed callable is simply executed if the option is non-empty, and ignored if the - * option is empty. This method is preferred for callables with side-effects, while map() - * is intended for callables without side-effects. - * - * @param callable(T):mixed $callable - * - * @return Option - */ - abstract public function forAll($callable); - - /** - * Applies the callable to the value of the option if it is non-empty, - * and returns the return value of the callable wrapped in Some(). - * - * If the option is empty, then the callable is not applied. - * - * ```php - * (new Some("foo"))->map('strtoupper')->get(); // "FOO" - * ``` - * - * @template S - * - * @param callable(T):S $callable - * - * @return Option - */ - abstract public function map($callable); - - /** - * Applies the callable to the value of the option if it is non-empty, and - * returns the return value of the callable directly. - * - * In contrast to ``map``, the return value of the callable is expected to - * be an Option itself; it is not automatically wrapped in Some(). - * - * @template S - * - * @param callable(T):Option $callable must return an Option - * - * @return Option - */ - abstract public function flatMap($callable); - - /** - * If the option is empty, it is returned immediately without applying the callable. - * - * If the option is non-empty, the callable is applied, and if it returns true, - * the option itself is returned; otherwise, None is returned. - * - * @param callable(T):bool $callable - * - * @return Option - */ - abstract public function filter($callable); - - /** - * If the option is empty, it is returned immediately without applying the callable. - * - * If the option is non-empty, the callable is applied, and if it returns false, - * the option itself is returned; otherwise, None is returned. - * - * @param callable(T):bool $callable - * - * @return Option - */ - abstract public function filterNot($callable); - - /** - * If the option is empty, it is returned immediately. - * - * If the option is non-empty, and its value does not equal the passed value - * (via a shallow comparison ===), then None is returned. Otherwise, the - * Option is returned. - * - * In other words, this will filter all but the passed value. - * - * @param T $value - * - * @return Option - */ - abstract public function select($value); - - /** - * If the option is empty, it is returned immediately. - * - * If the option is non-empty, and its value does equal the passed value (via - * a shallow comparison ===), then None is returned; otherwise, the Option is - * returned. - * - * In other words, this will let all values through except the passed value. - * - * @param T $value - * - * @return Option - */ - abstract public function reject($value); - - /** - * Binary operator for the initial value and the option's value. - * - * If empty, the initial value is returned. If non-empty, the callable - * receives the initial value and the option's value as arguments. - * - * ```php - * - * $some = new Some(5); - * $none = None::create(); - * $result = $some->foldLeft(1, function($a, $b) { return $a + $b; }); // int(6) - * $result = $none->foldLeft(1, function($a, $b) { return $a + $b; }); // int(1) - * - * // This can be used instead of something like the following: - * $option = Option::fromValue($integerOrNull); - * $result = 1; - * if ( ! $option->isEmpty()) { - * $result += $option->get(); - * } - * ``` - * - * @template S - * - * @param S $initialValue - * @param callable(S, T):S $callable - * - * @return S - */ - abstract public function foldLeft($initialValue, $callable); - - /** - * foldLeft() but with reversed arguments for the callable. - * - * @template S - * - * @param S $initialValue - * @param callable(T, S):S $callable - * - * @return S - */ - abstract public function foldRight($initialValue, $callable); -} diff --git a/vendor/phpoption/phpoption/src/PhpOption/Some.php b/vendor/phpoption/phpoption/src/PhpOption/Some.php deleted file mode 100644 index 032632ea..00000000 --- a/vendor/phpoption/phpoption/src/PhpOption/Some.php +++ /dev/null @@ -1,169 +0,0 @@ - - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -namespace PhpOption; - -use ArrayIterator; - -/** - * @template T - * - * @extends Option - */ -final class Some extends Option -{ - /** @var T */ - private $value; - - /** - * @param T $value - */ - public function __construct($value) - { - $this->value = $value; - } - - /** - * @template U - * - * @param U $value - * - * @return Some - */ - public static function create($value): self - { - return new self($value); - } - - public function isDefined(): bool - { - return true; - } - - public function isEmpty(): bool - { - return false; - } - - public function get() - { - return $this->value; - } - - public function getOrElse($default) - { - return $this->value; - } - - public function getOrCall($callable) - { - return $this->value; - } - - public function getOrThrow(\Exception $ex) - { - return $this->value; - } - - public function orElse(Option $else) - { - return $this; - } - - public function ifDefined($callable) - { - $this->forAll($callable); - } - - public function forAll($callable) - { - $callable($this->value); - - return $this; - } - - public function map($callable) - { - return new self($callable($this->value)); - } - - public function flatMap($callable) - { - /** @var mixed */ - $rs = $callable($this->value); - if (!$rs instanceof Option) { - throw new \RuntimeException('Callables passed to flatMap() must return an Option. Maybe you should use map() instead?'); - } - - return $rs; - } - - public function filter($callable) - { - if (true === $callable($this->value)) { - return $this; - } - - return None::create(); - } - - public function filterNot($callable) - { - if (false === $callable($this->value)) { - return $this; - } - - return None::create(); - } - - public function select($value) - { - if ($this->value === $value) { - return $this; - } - - return None::create(); - } - - public function reject($value) - { - if ($this->value === $value) { - return None::create(); - } - - return $this; - } - - /** - * @return ArrayIterator - */ - public function getIterator(): ArrayIterator - { - return new ArrayIterator([$this->value]); - } - - public function foldLeft($initialValue, $callable) - { - return $callable($initialValue, $this->value); - } - - public function foldRight($initialValue, $callable) - { - return $callable($this->value, $initialValue); - } -} diff --git a/vendor/psr/cache/CHANGELOG.md b/vendor/psr/cache/CHANGELOG.md deleted file mode 100644 index 58ddab05..00000000 --- a/vendor/psr/cache/CHANGELOG.md +++ /dev/null @@ -1,16 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file, in reverse chronological order by release. - -## 1.0.1 - 2016-08-06 - -### Fixed - -- Make spacing consistent in phpdoc annotations php-fig/cache#9 - chalasr -- Fix grammar in phpdoc annotations php-fig/cache#10 - chalasr -- Be more specific in docblocks that `getItems()` and `deleteItems()` take an array of strings (`string[]`) compared to just `array` php-fig/cache#8 - GrahamCampbell -- For `expiresAt()` and `expiresAfter()` in CacheItemInterface fix docblock to specify null as a valid parameters as well as an implementation of DateTimeInterface php-fig/cache#7 - GrahamCampbell - -## 1.0.0 - 2015-12-11 - -Initial stable release; reflects accepted PSR-6 specification diff --git a/vendor/psr/cache/LICENSE.txt b/vendor/psr/cache/LICENSE.txt deleted file mode 100644 index b1c2c97b..00000000 --- a/vendor/psr/cache/LICENSE.txt +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2015 PHP Framework Interoperability Group - -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/vendor/psr/cache/README.md b/vendor/psr/cache/README.md deleted file mode 100644 index 9855a318..00000000 --- a/vendor/psr/cache/README.md +++ /dev/null @@ -1,12 +0,0 @@ -Caching Interface -============== - -This repository holds all interfaces related to [PSR-6 (Caching Interface)][psr-url]. - -Note that this is not a Caching implementation of its own. It is merely interfaces that describe the components of a Caching mechanism. - -The installable [package][package-url] and [implementations][implementation-url] are listed on Packagist. - -[psr-url]: https://www.php-fig.org/psr/psr-6/ -[package-url]: https://packagist.org/packages/psr/cache -[implementation-url]: https://packagist.org/providers/psr/cache-implementation diff --git a/vendor/psr/cache/composer.json b/vendor/psr/cache/composer.json deleted file mode 100644 index 4b687971..00000000 --- a/vendor/psr/cache/composer.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "psr/cache", - "description": "Common interface for caching libraries", - "keywords": ["psr", "psr-6", "cache"], - "license": "MIT", - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "require": { - "php": ">=8.0.0" - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - } -} diff --git a/vendor/psr/cache/src/CacheException.php b/vendor/psr/cache/src/CacheException.php deleted file mode 100644 index bb785f46..00000000 --- a/vendor/psr/cache/src/CacheException.php +++ /dev/null @@ -1,10 +0,0 @@ -clock = $clock; - } - - public function doSomething() - { - /** @var DateTimeImmutable $currentDateAndTime */ - $currentDateAndTime = $this->clock->now(); - // do something useful with that information - } -} -``` - -You can then pick one of the [implementations][implementation-url] of the interface to get a clock. - -If you want to implement the interface, you can require this package and -implement `Psr\Clock\ClockInterface` in your code. - -Don't forget to add `psr/clock-implementation` to your `composer.json`s `provides`-section like this: - -```json -{ - "provides": { - "psr/clock-implementation": "1.0" - } -} -``` - -And please read the [specification text][specification-url] for details on the interface. - -[psr-url]: https://www.php-fig.org/psr/psr-20 -[package-url]: https://packagist.org/packages/psr/clock -[implementation-url]: https://packagist.org/providers/psr/clock-implementation -[specification-url]: https://github.com/php-fig/fig-standards/blob/master/proposed/clock.md diff --git a/vendor/psr/clock/composer.json b/vendor/psr/clock/composer.json deleted file mode 100644 index 77992eda..00000000 --- a/vendor/psr/clock/composer.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "psr/clock", - "description": "Common interface for reading the clock.", - "keywords": ["psr", "psr-20", "time", "clock", "now"], - "homepage": "https://github.com/php-fig/clock", - "license": "MIT", - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "require": { - "php": "^7.0 || ^8.0" - }, - "autoload": { - "psr-4": { - "Psr\\Clock\\": "src/" - } - } -} diff --git a/vendor/psr/clock/src/ClockInterface.php b/vendor/psr/clock/src/ClockInterface.php deleted file mode 100644 index 7b6d8d8a..00000000 --- a/vendor/psr/clock/src/ClockInterface.php +++ /dev/null @@ -1,13 +0,0 @@ -=7.4.0" - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - } -} diff --git a/vendor/psr/container/src/ContainerExceptionInterface.php b/vendor/psr/container/src/ContainerExceptionInterface.php deleted file mode 100644 index 0f213f2f..00000000 --- a/vendor/psr/container/src/ContainerExceptionInterface.php +++ /dev/null @@ -1,12 +0,0 @@ -=7.2.0" - }, - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - } -} diff --git a/vendor/psr/event-dispatcher/src/EventDispatcherInterface.php b/vendor/psr/event-dispatcher/src/EventDispatcherInterface.php deleted file mode 100644 index 4306fa91..00000000 --- a/vendor/psr/event-dispatcher/src/EventDispatcherInterface.php +++ /dev/null @@ -1,21 +0,0 @@ -=7.0.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - } -} diff --git a/vendor/psr/http-factory/src/RequestFactoryInterface.php b/vendor/psr/http-factory/src/RequestFactoryInterface.php deleted file mode 100644 index cb39a08b..00000000 --- a/vendor/psr/http-factory/src/RequestFactoryInterface.php +++ /dev/null @@ -1,18 +0,0 @@ - `RequestInterface`, `ServerRequestInterface`, `ResponseInterface` extend `MessageInterface` because the `Request` and the `Response` are `HTTP Messages`. -> When using `ServerRequestInterface`, both `RequestInterface` and `Psr\Http\Message\MessageInterface` methods are considered. - diff --git a/vendor/psr/http-message/docs/PSR7-Usage.md b/vendor/psr/http-message/docs/PSR7-Usage.md deleted file mode 100644 index b6d048a3..00000000 --- a/vendor/psr/http-message/docs/PSR7-Usage.md +++ /dev/null @@ -1,159 +0,0 @@ -### PSR-7 Usage - -All PSR-7 applications comply with these interfaces -They were created to establish a standard between middleware implementations. - -> `RequestInterface`, `ServerRequestInterface`, `ResponseInterface` extend `MessageInterface` because the `Request` and the `Response` are `HTTP Messages`. -> When using `ServerRequestInterface`, both `RequestInterface` and `Psr\Http\Message\MessageInterface` methods are considered. - - -The following examples will illustrate how basic operations are done in PSR-7. - -##### Examples - - -For this examples to work (at least) a PSR-7 implementation package is required. (eg: zendframework/zend-diactoros, guzzlehttp/psr7, slim/slim, etc) -All PSR-7 implementations should have the same behaviour. - -The following will be assumed: -`$request` is an object of `Psr\Http\Message\RequestInterface` and - -`$response` is an object implementing `Psr\Http\Message\RequestInterface` - - -### Working with HTTP Headers - -#### Adding headers to response: - -```php -$response->withHeader('My-Custom-Header', 'My Custom Message'); -``` - -#### Appending values to headers - -```php -$response->withAddedHeader('My-Custom-Header', 'The second message'); -``` - -#### Checking if header exists: - -```php -$request->hasHeader('My-Custom-Header'); // will return false -$response->hasHeader('My-Custom-Header'); // will return true -``` - -> Note: My-Custom-Header was only added in the Response - -#### Getting comma-separated values from a header (also applies to request) - -```php -// getting value from request headers -$request->getHeaderLine('Content-Type'); // will return: "text/html; charset=UTF-8" -// getting value from response headers -$response->getHeaderLine('My-Custom-Header'); // will return: "My Custom Message; The second message" -``` - -#### Getting array of value from a header (also applies to request) -```php -// getting value from request headers -$request->getHeader('Content-Type'); // will return: ["text/html", "charset=UTF-8"] -// getting value from response headers -$response->getHeader('My-Custom-Header'); // will return: ["My Custom Message", "The second message"] -``` - -#### Removing headers from HTTP Messages -```php -// removing a header from Request, removing deprecated "Content-MD5" header -$request->withoutHeader('Content-MD5'); - -// removing a header from Response -// effect: the browser won't know the size of the stream -// the browser will download the stream till it ends -$response->withoutHeader('Content-Length'); -``` - -### Working with HTTP Message Body - -When working with the PSR-7 there are two methods of implementation: -#### 1. Getting the body separately - -> This method makes the body handling easier to understand and is useful when repeatedly calling body methods. (You only call `getBody()` once). Using this method mistakes like `$response->write()` are also prevented. - -```php -$body = $response->getBody(); -// operations on body, eg. read, write, seek -// ... -// replacing the old body -$response->withBody($body); -// this last statement is optional as we working with objects -// in this case the "new" body is same with the "old" one -// the $body variable has the same value as the one in $request, only the reference is passed -``` - -#### 2. Working directly on response - -> This method is useful when only performing few operations as the `$request->getBody()` statement fragment is required - -```php -$response->getBody()->write('hello'); -``` - -### Getting the body contents - -The following snippet gets the contents of a stream contents. -> Note: Streams must be rewinded, if content was written into streams, it will be ignored when calling `getContents()` because the stream pointer is set to the last character, which is `\0` - meaning end of stream. -```php -$body = $response->getBody(); -$body->rewind(); // or $body->seek(0); -$bodyText = $body->getContents(); -``` -> Note: If `$body->seek(1)` is called before `$body->getContents()`, the first character will be ommited as the starting pointer is set to `1`, not `0`. This is why using `$body->rewind()` is recommended. - -### Append to body - -```php -$response->getBody()->write('Hello'); // writing directly -$body = $request->getBody(); // which is a `StreamInterface` -$body->write('xxxxx'); -``` - -### Prepend to body -Prepending is different when it comes to streams. The content must be copied before writing the content to be prepended. -The following example will explain the behaviour of streams. - -```php -// assuming our response is initially empty -$body = $repsonse->getBody(); -// writing the string "abcd" -$body->write('abcd'); - -// seeking to start of stream -$body->seek(0); -// writing 'ef' -$body->write('ef'); // at this point the stream contains "efcd" -``` - -#### Prepending by rewriting separately - -```php -// assuming our response body stream only contains: "abcd" -$body = $response->getBody(); -$body->rewind(); -$contents = $body->getContents(); // abcd -// seeking the stream to beginning -$body->rewind(); -$body->write('ef'); // stream contains "efcd" -$body->write($contents); // stream contains "efabcd" -``` - -> Note: `getContents()` seeks the stream while reading it, therefore if the second `rewind()` method call was not present the stream would have resulted in `abcdefabcd` because the `write()` method appends to stream if not preceeded by `rewind()` or `seek(0)`. - -#### Prepending by using contents as a string -```php -$body = $response->getBody(); -$body->rewind(); -$contents = $body->getContents(); // efabcd -$contents = 'ef'.$contents; -$body->rewind(); -$body->write($contents); -``` diff --git a/vendor/psr/http-message/src/MessageInterface.php b/vendor/psr/http-message/src/MessageInterface.php deleted file mode 100644 index a83c9851..00000000 --- a/vendor/psr/http-message/src/MessageInterface.php +++ /dev/null @@ -1,187 +0,0 @@ -getHeaders() as $name => $values) { - * echo $name . ": " . implode(", ", $values); - * } - * - * // Emit headers iteratively: - * foreach ($message->getHeaders() as $name => $values) { - * foreach ($values as $value) { - * header(sprintf('%s: %s', $name, $value), false); - * } - * } - * - * While header names are not case-sensitive, getHeaders() will preserve the - * exact case in which headers were originally specified. - * - * @return string[][] Returns an associative array of the message's headers. Each - * key MUST be a header name, and each value MUST be an array of strings - * for that header. - */ - public function getHeaders(): array; - - /** - * Checks if a header exists by the given case-insensitive name. - * - * @param string $name Case-insensitive header field name. - * @return bool Returns true if any header names match the given header - * name using a case-insensitive string comparison. Returns false if - * no matching header name is found in the message. - */ - public function hasHeader(string $name): bool; - - /** - * Retrieves a message header value by the given case-insensitive name. - * - * This method returns an array of all the header values of the given - * case-insensitive header name. - * - * If the header does not appear in the message, this method MUST return an - * empty array. - * - * @param string $name Case-insensitive header field name. - * @return string[] An array of string values as provided for the given - * header. If the header does not appear in the message, this method MUST - * return an empty array. - */ - public function getHeader(string $name): array; - - /** - * Retrieves a comma-separated string of the values for a single header. - * - * This method returns all of the header values of the given - * case-insensitive header name as a string concatenated together using - * a comma. - * - * NOTE: Not all header values may be appropriately represented using - * comma concatenation. For such headers, use getHeader() instead - * and supply your own delimiter when concatenating. - * - * If the header does not appear in the message, this method MUST return - * an empty string. - * - * @param string $name Case-insensitive header field name. - * @return string A string of values as provided for the given header - * concatenated together using a comma. If the header does not appear in - * the message, this method MUST return an empty string. - */ - public function getHeaderLine(string $name): string; - - /** - * Return an instance with the provided value replacing the specified header. - * - * While header names are case-insensitive, the casing of the header will - * be preserved by this function, and returned from getHeaders(). - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * new and/or updated header and value. - * - * @param string $name Case-insensitive header field name. - * @param string|string[] $value Header value(s). - * @return static - * @throws \InvalidArgumentException for invalid header names or values. - */ - public function withHeader(string $name, $value): MessageInterface; - - /** - * Return an instance with the specified header appended with the given value. - * - * Existing values for the specified header will be maintained. The new - * value(s) will be appended to the existing list. If the header did not - * exist previously, it will be added. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * new header and/or value. - * - * @param string $name Case-insensitive header field name to add. - * @param string|string[] $value Header value(s). - * @return static - * @throws \InvalidArgumentException for invalid header names or values. - */ - public function withAddedHeader(string $name, $value): MessageInterface; - - /** - * Return an instance without the specified header. - * - * Header resolution MUST be done without case-sensitivity. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that removes - * the named header. - * - * @param string $name Case-insensitive header field name to remove. - * @return static - */ - public function withoutHeader(string $name): MessageInterface; - - /** - * Gets the body of the message. - * - * @return StreamInterface Returns the body as a stream. - */ - public function getBody(): StreamInterface; - - /** - * Return an instance with the specified message body. - * - * The body MUST be a StreamInterface object. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return a new instance that has the - * new body stream. - * - * @param StreamInterface $body Body. - * @return static - * @throws \InvalidArgumentException When the body is not valid. - */ - public function withBody(StreamInterface $body): MessageInterface; -} diff --git a/vendor/psr/http-message/src/RequestInterface.php b/vendor/psr/http-message/src/RequestInterface.php deleted file mode 100644 index 33f85e55..00000000 --- a/vendor/psr/http-message/src/RequestInterface.php +++ /dev/null @@ -1,130 +0,0 @@ -getQuery()` - * or from the `QUERY_STRING` server param. - * - * @return array - */ - public function getQueryParams(): array; - - /** - * Return an instance with the specified query string arguments. - * - * These values SHOULD remain immutable over the course of the incoming - * request. They MAY be injected during instantiation, such as from PHP's - * $_GET superglobal, or MAY be derived from some other value such as the - * URI. In cases where the arguments are parsed from the URI, the data - * MUST be compatible with what PHP's parse_str() would return for - * purposes of how duplicate query parameters are handled, and how nested - * sets are handled. - * - * Setting query string arguments MUST NOT change the URI stored by the - * request, nor the values in the server params. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * updated query string arguments. - * - * @param array $query Array of query string arguments, typically from - * $_GET. - * @return static - */ - public function withQueryParams(array $query): ServerRequestInterface; - - /** - * Retrieve normalized file upload data. - * - * This method returns upload metadata in a normalized tree, with each leaf - * an instance of Psr\Http\Message\UploadedFileInterface. - * - * These values MAY be prepared from $_FILES or the message body during - * instantiation, or MAY be injected via withUploadedFiles(). - * - * @return array An array tree of UploadedFileInterface instances; an empty - * array MUST be returned if no data is present. - */ - public function getUploadedFiles(): array; - - /** - * Create a new instance with the specified uploaded files. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * updated body parameters. - * - * @param array $uploadedFiles An array tree of UploadedFileInterface instances. - * @return static - * @throws \InvalidArgumentException if an invalid structure is provided. - */ - public function withUploadedFiles(array $uploadedFiles): ServerRequestInterface; - - /** - * Retrieve any parameters provided in the request body. - * - * If the request Content-Type is either application/x-www-form-urlencoded - * or multipart/form-data, and the request method is POST, this method MUST - * return the contents of $_POST. - * - * Otherwise, this method may return any results of deserializing - * the request body content; as parsing returns structured content, the - * potential types MUST be arrays or objects only. A null value indicates - * the absence of body content. - * - * @return null|array|object The deserialized body parameters, if any. - * These will typically be an array or object. - */ - public function getParsedBody(); - - /** - * Return an instance with the specified body parameters. - * - * These MAY be injected during instantiation. - * - * If the request Content-Type is either application/x-www-form-urlencoded - * or multipart/form-data, and the request method is POST, use this method - * ONLY to inject the contents of $_POST. - * - * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of - * deserializing the request body content. Deserialization/parsing returns - * structured data, and, as such, this method ONLY accepts arrays or objects, - * or a null value if nothing was available to parse. - * - * As an example, if content negotiation determines that the request data - * is a JSON payload, this method could be used to create a request - * instance with the deserialized parameters. - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * updated body parameters. - * - * @param null|array|object $data The deserialized body data. This will - * typically be in an array or object. - * @return static - * @throws \InvalidArgumentException if an unsupported argument type is - * provided. - */ - public function withParsedBody($data): ServerRequestInterface; - - /** - * Retrieve attributes derived from the request. - * - * The request "attributes" may be used to allow injection of any - * parameters derived from the request: e.g., the results of path - * match operations; the results of decrypting cookies; the results of - * deserializing non-form-encoded message bodies; etc. Attributes - * will be application and request specific, and CAN be mutable. - * - * @return array Attributes derived from the request. - */ - public function getAttributes(): array; - - /** - * Retrieve a single derived request attribute. - * - * Retrieves a single derived request attribute as described in - * getAttributes(). If the attribute has not been previously set, returns - * the default value as provided. - * - * This method obviates the need for a hasAttribute() method, as it allows - * specifying a default value to return if the attribute is not found. - * - * @see getAttributes() - * @param string $name The attribute name. - * @param mixed $default Default value to return if the attribute does not exist. - * @return mixed - */ - public function getAttribute(string $name, $default = null); - - /** - * Return an instance with the specified derived request attribute. - * - * This method allows setting a single derived request attribute as - * described in getAttributes(). - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that has the - * updated attribute. - * - * @see getAttributes() - * @param string $name The attribute name. - * @param mixed $value The value of the attribute. - * @return static - */ - public function withAttribute(string $name, $value): ServerRequestInterface; - - /** - * Return an instance that removes the specified derived request attribute. - * - * This method allows removing a single derived request attribute as - * described in getAttributes(). - * - * This method MUST be implemented in such a way as to retain the - * immutability of the message, and MUST return an instance that removes - * the attribute. - * - * @see getAttributes() - * @param string $name The attribute name. - * @return static - */ - public function withoutAttribute(string $name): ServerRequestInterface; -} diff --git a/vendor/psr/http-message/src/StreamInterface.php b/vendor/psr/http-message/src/StreamInterface.php deleted file mode 100644 index a62aabb8..00000000 --- a/vendor/psr/http-message/src/StreamInterface.php +++ /dev/null @@ -1,158 +0,0 @@ - - * [user-info@]host[:port] - * - * - * If the port component is not set or is the standard port for the current - * scheme, it SHOULD NOT be included. - * - * @see https://tools.ietf.org/html/rfc3986#section-3.2 - * @return string The URI authority, in "[user-info@]host[:port]" format. - */ - public function getAuthority(): string; - - /** - * Retrieve the user information component of the URI. - * - * If no user information is present, this method MUST return an empty - * string. - * - * If a user is present in the URI, this will return that value; - * additionally, if the password is also present, it will be appended to the - * user value, with a colon (":") separating the values. - * - * The trailing "@" character is not part of the user information and MUST - * NOT be added. - * - * @return string The URI user information, in "username[:password]" format. - */ - public function getUserInfo(): string; - - /** - * Retrieve the host component of the URI. - * - * If no host is present, this method MUST return an empty string. - * - * The value returned MUST be normalized to lowercase, per RFC 3986 - * Section 3.2.2. - * - * @see http://tools.ietf.org/html/rfc3986#section-3.2.2 - * @return string The URI host. - */ - public function getHost(): string; - - /** - * Retrieve the port component of the URI. - * - * If a port is present, and it is non-standard for the current scheme, - * this method MUST return it as an integer. If the port is the standard port - * used with the current scheme, this method SHOULD return null. - * - * If no port is present, and no scheme is present, this method MUST return - * a null value. - * - * If no port is present, but a scheme is present, this method MAY return - * the standard port for that scheme, but SHOULD return null. - * - * @return null|int The URI port. - */ - public function getPort(): ?int; - - /** - * Retrieve the path component of the URI. - * - * The path can either be empty or absolute (starting with a slash) or - * rootless (not starting with a slash). Implementations MUST support all - * three syntaxes. - * - * Normally, the empty path "" and absolute path "/" are considered equal as - * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically - * do this normalization because in contexts with a trimmed base path, e.g. - * the front controller, this difference becomes significant. It's the task - * of the user to handle both "" and "/". - * - * The value returned MUST be percent-encoded, but MUST NOT double-encode - * any characters. To determine what characters to encode, please refer to - * RFC 3986, Sections 2 and 3.3. - * - * As an example, if the value should include a slash ("/") not intended as - * delimiter between path segments, that value MUST be passed in encoded - * form (e.g., "%2F") to the instance. - * - * @see https://tools.ietf.org/html/rfc3986#section-2 - * @see https://tools.ietf.org/html/rfc3986#section-3.3 - * @return string The URI path. - */ - public function getPath(): string; - - /** - * Retrieve the query string of the URI. - * - * If no query string is present, this method MUST return an empty string. - * - * The leading "?" character is not part of the query and MUST NOT be - * added. - * - * The value returned MUST be percent-encoded, but MUST NOT double-encode - * any characters. To determine what characters to encode, please refer to - * RFC 3986, Sections 2 and 3.4. - * - * As an example, if a value in a key/value pair of the query string should - * include an ampersand ("&") not intended as a delimiter between values, - * that value MUST be passed in encoded form (e.g., "%26") to the instance. - * - * @see https://tools.ietf.org/html/rfc3986#section-2 - * @see https://tools.ietf.org/html/rfc3986#section-3.4 - * @return string The URI query string. - */ - public function getQuery(): string; - - /** - * Retrieve the fragment component of the URI. - * - * If no fragment is present, this method MUST return an empty string. - * - * The leading "#" character is not part of the fragment and MUST NOT be - * added. - * - * The value returned MUST be percent-encoded, but MUST NOT double-encode - * any characters. To determine what characters to encode, please refer to - * RFC 3986, Sections 2 and 3.5. - * - * @see https://tools.ietf.org/html/rfc3986#section-2 - * @see https://tools.ietf.org/html/rfc3986#section-3.5 - * @return string The URI fragment. - */ - public function getFragment(): string; - - /** - * Return an instance with the specified scheme. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified scheme. - * - * Implementations MUST support the schemes "http" and "https" case - * insensitively, and MAY accommodate other schemes if required. - * - * An empty scheme is equivalent to removing the scheme. - * - * @param string $scheme The scheme to use with the new instance. - * @return static A new instance with the specified scheme. - * @throws \InvalidArgumentException for invalid or unsupported schemes. - */ - public function withScheme(string $scheme): UriInterface; - - /** - * Return an instance with the specified user information. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified user information. - * - * Password is optional, but the user information MUST include the - * user; an empty string for the user is equivalent to removing user - * information. - * - * @param string $user The user name to use for authority. - * @param null|string $password The password associated with $user. - * @return static A new instance with the specified user information. - */ - public function withUserInfo(string $user, ?string $password = null): UriInterface; - - /** - * Return an instance with the specified host. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified host. - * - * An empty host value is equivalent to removing the host. - * - * @param string $host The hostname to use with the new instance. - * @return static A new instance with the specified host. - * @throws \InvalidArgumentException for invalid hostnames. - */ - public function withHost(string $host): UriInterface; - - /** - * Return an instance with the specified port. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified port. - * - * Implementations MUST raise an exception for ports outside the - * established TCP and UDP port ranges. - * - * A null value provided for the port is equivalent to removing the port - * information. - * - * @param null|int $port The port to use with the new instance; a null value - * removes the port information. - * @return static A new instance with the specified port. - * @throws \InvalidArgumentException for invalid ports. - */ - public function withPort(?int $port): UriInterface; - - /** - * Return an instance with the specified path. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified path. - * - * The path can either be empty or absolute (starting with a slash) or - * rootless (not starting with a slash). Implementations MUST support all - * three syntaxes. - * - * If the path is intended to be domain-relative rather than path relative then - * it must begin with a slash ("/"). Paths not starting with a slash ("/") - * are assumed to be relative to some base path known to the application or - * consumer. - * - * Users can provide both encoded and decoded path characters. - * Implementations ensure the correct encoding as outlined in getPath(). - * - * @param string $path The path to use with the new instance. - * @return static A new instance with the specified path. - * @throws \InvalidArgumentException for invalid paths. - */ - public function withPath(string $path): UriInterface; - - /** - * Return an instance with the specified query string. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified query string. - * - * Users can provide both encoded and decoded query characters. - * Implementations ensure the correct encoding as outlined in getQuery(). - * - * An empty query string value is equivalent to removing the query string. - * - * @param string $query The query string to use with the new instance. - * @return static A new instance with the specified query string. - * @throws \InvalidArgumentException for invalid query strings. - */ - public function withQuery(string $query): UriInterface; - - /** - * Return an instance with the specified URI fragment. - * - * This method MUST retain the state of the current instance, and return - * an instance that contains the specified URI fragment. - * - * Users can provide both encoded and decoded fragment characters. - * Implementations ensure the correct encoding as outlined in getFragment(). - * - * An empty fragment value is equivalent to removing the fragment. - * - * @param string $fragment The fragment to use with the new instance. - * @return static A new instance with the specified fragment. - */ - public function withFragment(string $fragment): UriInterface; - - /** - * Return the string representation as a URI reference. - * - * Depending on which components of the URI are present, the resulting - * string is either a full URI or relative reference according to RFC 3986, - * Section 4.1. The method concatenates the various components of the URI, - * using the appropriate delimiters: - * - * - If a scheme is present, it MUST be suffixed by ":". - * - If an authority is present, it MUST be prefixed by "//". - * - The path can be concatenated without delimiters. But there are two - * cases where the path has to be adjusted to make the URI reference - * valid as PHP does not allow to throw an exception in __toString(): - * - If the path is rootless and an authority is present, the path MUST - * be prefixed by "/". - * - If the path is starting with more than one "/" and no authority is - * present, the starting slashes MUST be reduced to one. - * - If a query is present, it MUST be prefixed by "?". - * - If a fragment is present, it MUST be prefixed by "#". - * - * @see http://tools.ietf.org/html/rfc3986#section-4.1 - * @return string - */ - public function __toString(): string; -} diff --git a/vendor/psr/log/LICENSE b/vendor/psr/log/LICENSE deleted file mode 100644 index 474c952b..00000000 --- a/vendor/psr/log/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012 PHP Framework Interoperability Group - -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/vendor/psr/log/README.md b/vendor/psr/log/README.md deleted file mode 100644 index a9f20c43..00000000 --- a/vendor/psr/log/README.md +++ /dev/null @@ -1,58 +0,0 @@ -PSR Log -======= - -This repository holds all interfaces/classes/traits related to -[PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md). - -Note that this is not a logger of its own. It is merely an interface that -describes a logger. See the specification for more details. - -Installation ------------- - -```bash -composer require psr/log -``` - -Usage ------ - -If you need a logger, you can use the interface like this: - -```php -logger = $logger; - } - - public function doSomething() - { - if ($this->logger) { - $this->logger->info('Doing work'); - } - - try { - $this->doSomethingElse(); - } catch (Exception $exception) { - $this->logger->error('Oh no!', array('exception' => $exception)); - } - - // do something useful - } -} -``` - -You can then pick one of the implementations of the interface to get a logger. - -If you want to implement the interface, you can require this package and -implement `Psr\Log\LoggerInterface` in your code. Please read the -[specification text](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md) -for details. diff --git a/vendor/psr/log/composer.json b/vendor/psr/log/composer.json deleted file mode 100644 index 879fc6f5..00000000 --- a/vendor/psr/log/composer.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "psr/log", - "description": "Common interface for logging libraries", - "keywords": ["psr", "psr-3", "log"], - "homepage": "https://github.com/php-fig/log", - "license": "MIT", - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "require": { - "php": ">=8.0.0" - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - } -} diff --git a/vendor/psr/log/src/AbstractLogger.php b/vendor/psr/log/src/AbstractLogger.php deleted file mode 100644 index d60a091a..00000000 --- a/vendor/psr/log/src/AbstractLogger.php +++ /dev/null @@ -1,15 +0,0 @@ -logger = $logger; - } -} diff --git a/vendor/psr/log/src/LoggerInterface.php b/vendor/psr/log/src/LoggerInterface.php deleted file mode 100644 index b3a24b5f..00000000 --- a/vendor/psr/log/src/LoggerInterface.php +++ /dev/null @@ -1,125 +0,0 @@ -log(LogLevel::EMERGENCY, $message, $context); - } - - /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - * - * @param string|\Stringable $message - * @param array $context - * - * @return void - */ - public function alert(string|\Stringable $message, array $context = []): void - { - $this->log(LogLevel::ALERT, $message, $context); - } - - /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. - * - * @param string|\Stringable $message - * @param array $context - * - * @return void - */ - public function critical(string|\Stringable $message, array $context = []): void - { - $this->log(LogLevel::CRITICAL, $message, $context); - } - - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - * - * @param string|\Stringable $message - * @param array $context - * - * @return void - */ - public function error(string|\Stringable $message, array $context = []): void - { - $this->log(LogLevel::ERROR, $message, $context); - } - - /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - * - * @param string|\Stringable $message - * @param array $context - * - * @return void - */ - public function warning(string|\Stringable $message, array $context = []): void - { - $this->log(LogLevel::WARNING, $message, $context); - } - - /** - * Normal but significant events. - * - * @param string|\Stringable $message - * @param array $context - * - * @return void - */ - public function notice(string|\Stringable $message, array $context = []): void - { - $this->log(LogLevel::NOTICE, $message, $context); - } - - /** - * Interesting events. - * - * Example: User logs in, SQL logs. - * - * @param string|\Stringable $message - * @param array $context - * - * @return void - */ - public function info(string|\Stringable $message, array $context = []): void - { - $this->log(LogLevel::INFO, $message, $context); - } - - /** - * Detailed debug information. - * - * @param string|\Stringable $message - * @param array $context - * - * @return void - */ - public function debug(string|\Stringable $message, array $context = []): void - { - $this->log(LogLevel::DEBUG, $message, $context); - } - - /** - * Logs with an arbitrary level. - * - * @param mixed $level - * @param string|\Stringable $message - * @param array $context - * - * @return void - * - * @throws \Psr\Log\InvalidArgumentException - */ - abstract public function log($level, string|\Stringable $message, array $context = []): void; -} diff --git a/vendor/psr/log/src/NullLogger.php b/vendor/psr/log/src/NullLogger.php deleted file mode 100644 index c1cc3c06..00000000 --- a/vendor/psr/log/src/NullLogger.php +++ /dev/null @@ -1,30 +0,0 @@ -logger) { }` - * blocks. - */ -class NullLogger extends AbstractLogger -{ - /** - * Logs with an arbitrary level. - * - * @param mixed $level - * @param string|\Stringable $message - * @param array $context - * - * @return void - * - * @throws \Psr\Log\InvalidArgumentException - */ - public function log($level, string|\Stringable $message, array $context = []): void - { - // noop - } -} diff --git a/vendor/psr/simple-cache/.editorconfig b/vendor/psr/simple-cache/.editorconfig deleted file mode 100644 index 48542cbb..00000000 --- a/vendor/psr/simple-cache/.editorconfig +++ /dev/null @@ -1,12 +0,0 @@ -; This file is for unifying the coding style for different editors and IDEs. -; More information at http://editorconfig.org - -root = true - -[*] -charset = utf-8 -indent_size = 4 -indent_style = space -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true diff --git a/vendor/psr/simple-cache/LICENSE.md b/vendor/psr/simple-cache/LICENSE.md deleted file mode 100644 index e49a7c85..00000000 --- a/vendor/psr/simple-cache/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# The MIT License (MIT) - -Copyright (c) 2016 PHP Framework Interoperability Group - -> 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/vendor/psr/simple-cache/README.md b/vendor/psr/simple-cache/README.md deleted file mode 100644 index 43641d17..00000000 --- a/vendor/psr/simple-cache/README.md +++ /dev/null @@ -1,8 +0,0 @@ -PHP FIG Simple Cache PSR -======================== - -This repository holds all interfaces related to PSR-16. - -Note that this is not a cache implementation of its own. It is merely an interface that describes a cache implementation. See [the specification](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-16-simple-cache.md) for more details. - -You can find implementations of the specification by looking for packages providing the [psr/simple-cache-implementation](https://packagist.org/providers/psr/simple-cache-implementation) virtual package. diff --git a/vendor/psr/simple-cache/composer.json b/vendor/psr/simple-cache/composer.json deleted file mode 100644 index f307a845..00000000 --- a/vendor/psr/simple-cache/composer.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "psr/simple-cache", - "description": "Common interfaces for simple caching", - "keywords": ["psr", "psr-16", "cache", "simple-cache", "caching"], - "license": "MIT", - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "require": { - "php": ">=8.0.0" - }, - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - } -} diff --git a/vendor/psr/simple-cache/src/CacheException.php b/vendor/psr/simple-cache/src/CacheException.php deleted file mode 100644 index f61b24c2..00000000 --- a/vendor/psr/simple-cache/src/CacheException.php +++ /dev/null @@ -1,10 +0,0 @@ - $keys A list of keys that can be obtained in a single operation. - * @param mixed $default Default value to return for keys that do not exist. - * - * @return iterable A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value. - * - * @throws \Psr\SimpleCache\InvalidArgumentException - * MUST be thrown if $keys is neither an array nor a Traversable, - * or if any of the $keys are not a legal value. - */ - public function getMultiple(iterable $keys, mixed $default = null): iterable; - - /** - * Persists a set of key => value pairs in the cache, with an optional TTL. - * - * @param iterable $values A list of key => value pairs for a multiple-set operation. - * @param null|int|\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and - * the driver supports TTL then the library may set a default value - * for it or let the driver take care of that. - * - * @return bool True on success and false on failure. - * - * @throws \Psr\SimpleCache\InvalidArgumentException - * MUST be thrown if $values is neither an array nor a Traversable, - * or if any of the $values are not a legal value. - */ - public function setMultiple(iterable $values, null|int|\DateInterval $ttl = null): bool; - - /** - * Deletes multiple cache items in a single operation. - * - * @param iterable $keys A list of string-based keys to be deleted. - * - * @return bool True if the items were successfully removed. False if there was an error. - * - * @throws \Psr\SimpleCache\InvalidArgumentException - * MUST be thrown if $keys is neither an array nor a Traversable, - * or if any of the $keys are not a legal value. - */ - public function deleteMultiple(iterable $keys): bool; - - /** - * Determines whether an item is present in the cache. - * - * NOTE: It is recommended that has() is only to be used for cache warming type purposes - * and not to be used within your live applications operations for get/set, as this method - * is subject to a race condition where your has() will return true and immediately after, - * another script can remove it making the state of your app out of date. - * - * @param string $key The cache item key. - * - * @return bool - * - * @throws \Psr\SimpleCache\InvalidArgumentException - * MUST be thrown if the $key string is not a legal value. - */ - public function has(string $key): bool; -} diff --git a/vendor/psr/simple-cache/src/InvalidArgumentException.php b/vendor/psr/simple-cache/src/InvalidArgumentException.php deleted file mode 100644 index 6a9524a2..00000000 --- a/vendor/psr/simple-cache/src/InvalidArgumentException.php +++ /dev/null @@ -1,13 +0,0 @@ - - -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/vendor/ramsey/collection/README.md b/vendor/ramsey/collection/README.md deleted file mode 100644 index c77ffcb1..00000000 --- a/vendor/ramsey/collection/README.md +++ /dev/null @@ -1,70 +0,0 @@ -

    ramsey/collection

    - -

    - A PHP library for representing and manipulating collections. -

    - -

    - Source Code - Download Package - PHP Programming Language - Read License - Build Status - Codecov Code Coverage - Psalm Type Coverage -

    - -## About - -ramsey/collection is a PHP library for representing and manipulating collections. - -Much inspiration for this library came from the [Java Collections Framework][java]. - -This project adheres to a [code of conduct](CODE_OF_CONDUCT.md). -By participating in this project and its community, you are expected to -uphold this code. - -## Installation - -Install this package as a dependency using [Composer](https://getcomposer.org). - -``` bash -composer require ramsey/collection -``` - -## Usage - -Examples of how to use this library may be found in the -[Wiki pages](https://github.com/ramsey/collection/wiki/Examples). - -## Contributing - -Contributions are welcome! To contribute, please familiarize yourself with -[CONTRIBUTING.md](CONTRIBUTING.md). - -## Coordinated Disclosure - -Keeping user information safe and secure is a top priority, and we welcome the -contribution of external security researchers. If you believe you've found a -security issue in software that is maintained in this repository, please read -[SECURITY.md][] for instructions on submitting a vulnerability report. - -## ramsey/collection for Enterprise - -Available as part of the Tidelift Subscription. - -The maintainers of ramsey/collection and thousands of other packages are working -with Tidelift to deliver commercial support and maintenance for the open source -packages you use to build your applications. Save time, reduce risk, and improve -code health, while paying the maintainers of the exact packages you use. -[Learn more.](https://tidelift.com/subscription/pkg/packagist-ramsey-collection?utm_source=undefined&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) - -## Copyright and License - -The ramsey/collection library is copyright © [Ben Ramsey](https://benramsey.com) -and licensed for use under the terms of the -MIT License (MIT). Please see [LICENSE](LICENSE) for more information. - - -[java]: http://docs.oracle.com/javase/8/docs/technotes/guides/collections/index.html -[security.md]: https://github.com/ramsey/collection/blob/main/SECURITY.md diff --git a/vendor/ramsey/collection/SECURITY.md b/vendor/ramsey/collection/SECURITY.md deleted file mode 100644 index 3de4c0cb..00000000 --- a/vendor/ramsey/collection/SECURITY.md +++ /dev/null @@ -1,169 +0,0 @@ - - -# Vulnerability Disclosure Policy (VDP) - -## Brand Promise - - - -Keeping user information safe and secure is a top priority, and we welcome the -contribution of external security researchers. - -## Scope - - - -If you believe you've found a security issue in software that is maintained in -this repository, we encourage you to notify us. - -| Version | In scope | Source code | -| ------- | :------: | ----------- | -| latest | ✅ | https://github.com/ramsey/collection | - -## How to Submit a Report - - - -To submit a vulnerability report, please contact us at security@ramsey.dev. -Your submission will be reviewed and validated by a member of our team. - -## Safe Harbor - - - -We support safe harbor for security researchers who: - -* Make a good faith effort to avoid privacy violations, destruction of data, and - interruption or degradation of our services. -* Only interact with accounts you own or with explicit permission of the account - holder. If you do encounter Personally Identifiable Information (PII) contact - us immediately, do not proceed with access, and immediately purge any local - information. -* Provide us with a reasonable amount of time to resolve vulnerabilities prior - to any disclosure to the public or a third party. - -We will consider activities conducted consistent with this policy to constitute -"authorized" conduct and will not pursue civil action or initiate a complaint to -law enforcement. We will help to the extent we can if legal action is initiated -by a third party against you. - -Please submit a report to us before engaging in conduct that may be inconsistent -with or unaddressed by this policy. - -## Preferences - - - -* Please provide detailed reports with reproducible steps and a clearly defined - impact. -* Include the version number of the vulnerable package in your report -* Social engineering (e.g. phishing, vishing, smishing) is prohibited. - - - -## Encryption Key for security@ramsey.dev - -For increased privacy when reporting sensitive issues, you may encrypt your -message using the following public key: - -``` ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -nmgawbBHA02D5xEqB5SU3WJu -=eJNx ------END PGP PUBLIC KEY BLOCK----- -``` diff --git a/vendor/ramsey/collection/composer.json b/vendor/ramsey/collection/composer.json deleted file mode 100644 index 56709015..00000000 --- a/vendor/ramsey/collection/composer.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "name": "ramsey/collection", - "description": "A PHP library for representing and manipulating collections.", - "license": "MIT", - "type": "library", - "keywords": [ - "array", - "collection", - "hash", - "map", - "queue", - "set" - ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - } - ], - "require": { - "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" - }, - "minimum-stability": "RC", - "prefer-stable": true, - "autoload": { - "psr-4": { - "Ramsey\\Collection\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Ramsey\\Collection\\Test\\": "tests/", - "Ramsey\\Test\\Generics\\": "tests/generics/" - }, - "files": [ - "vendor/hamcrest/hamcrest-php/hamcrest/Hamcrest.php" - ] - }, - "config": { - "allow-plugins": { - "dealerdirect/phpcodesniffer-composer-installer": true, - "ergebnis/composer-normalize": true, - "phpstan/extension-installer": true, - "captainhook/plugin-composer": true - }, - "sort-packages": true - }, - "extra": { - "captainhook": { - "force-install": true - }, - "ramsey/conventional-commits": { - "configFile": "conventional-commits.json" - } - }, - "scripts": { - "dev:analyze": [ - "@dev:analyze:phpstan", - "@dev:analyze:psalm" - ], - "dev:analyze:phpstan": "phpstan analyse --ansi --memory-limit=1G", - "dev:analyze:psalm": "psalm", - "dev:build:clean": "git clean -fX build/", - "dev:lint": [ - "@dev:lint:syntax", - "@dev:lint:style" - ], - "dev:lint:fix": "phpcbf", - "dev:lint:style": "phpcs --colors", - "dev:lint:syntax": "parallel-lint --colors src/ tests/", - "dev:test": [ - "@dev:lint", - "@dev:analyze", - "@dev:test:unit" - ], - "dev:test:coverage:ci": "phpunit --colors=always --coverage-text --coverage-clover build/coverage/clover.xml --coverage-cobertura build/coverage/cobertura.xml --coverage-crap4j build/coverage/crap4j.xml --coverage-xml build/coverage/coverage-xml --log-junit build/junit.xml", - "dev:test:coverage:html": "phpunit --colors=always --coverage-html build/coverage/coverage-html/", - "dev:test:unit": "phpunit --colors=always", - "test": "@dev:test" - }, - "scripts-descriptions": { - "dev:analyze": "Runs all static analysis checks.", - "dev:analyze:phpstan": "Runs the PHPStan static analyzer.", - "dev:analyze:psalm": "Runs the Psalm static analyzer.", - "dev:build:clean": "Cleans the build/ directory.", - "dev:lint": "Runs all linting checks.", - "dev:lint:fix": "Auto-fixes coding standards issues, if possible.", - "dev:lint:style": "Checks for coding standards issues.", - "dev:lint:syntax": "Checks for syntax errors.", - "dev:test": "Runs linting, static analysis, and unit tests.", - "dev:test:coverage:ci": "Runs unit tests and generates CI coverage reports.", - "dev:test:coverage:html": "Runs unit tests and generates HTML coverage report.", - "dev:test:unit": "Runs unit tests.", - "test": "Runs linting, static analysis, and unit tests." - } -} diff --git a/vendor/ramsey/collection/conventional-commits.json b/vendor/ramsey/collection/conventional-commits.json deleted file mode 100644 index 5fe21d2f..00000000 --- a/vendor/ramsey/collection/conventional-commits.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "typeCase": "kebab", - "types": [ - "chore", - "ci", - "docs", - "feat", - "fix", - "refactor", - "security", - "style", - "test" - ], - "scopeCase": "kebab", - "scopeRequired": false, - "scopes": [], - "descriptionCase": null, - "descriptionEndMark": "", - "bodyRequired": false, - "bodyWrapWidth": 72, - "requiredFooters": [] -} diff --git a/vendor/ramsey/collection/src/AbstractArray.php b/vendor/ramsey/collection/src/AbstractArray.php deleted file mode 100644 index 5ce622aa..00000000 --- a/vendor/ramsey/collection/src/AbstractArray.php +++ /dev/null @@ -1,171 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection; - -use ArrayIterator; -use Traversable; - -use function count; - -/** - * This class provides a basic implementation of `ArrayInterface`, to minimize - * the effort required to implement this interface. - * - * @template T - * @implements ArrayInterface - */ -abstract class AbstractArray implements ArrayInterface -{ - /** - * The items of this array. - * - * @var array - */ - protected array $data = []; - - /** - * Constructs a new array object. - * - * @param array $data The initial items to add to this array. - */ - public function __construct(array $data = []) - { - // Invoke offsetSet() for each value added; in this way, sub-classes - // may provide additional logic about values added to the array object. - foreach ($data as $key => $value) { - $this[$key] = $value; - } - } - - /** - * Returns an iterator for this array. - * - * @link http://php.net/manual/en/iteratoraggregate.getiterator.php IteratorAggregate::getIterator() - * - * @return Traversable - */ - public function getIterator(): Traversable - { - return new ArrayIterator($this->data); - } - - /** - * Returns `true` if the given offset exists in this array. - * - * @link http://php.net/manual/en/arrayaccess.offsetexists.php ArrayAccess::offsetExists() - * - * @param array-key $offset The offset to check. - */ - public function offsetExists(mixed $offset): bool - { - return isset($this->data[$offset]); - } - - /** - * Returns the value at the specified offset. - * - * @link http://php.net/manual/en/arrayaccess.offsetget.php ArrayAccess::offsetGet() - * - * @param array-key $offset The offset for which a value should be returned. - * - * @return T the value stored at the offset, or null if the offset - * does not exist. - */ - public function offsetGet(mixed $offset): mixed - { - return $this->data[$offset]; - } - - /** - * Sets the given value to the given offset in the array. - * - * @link http://php.net/manual/en/arrayaccess.offsetset.php ArrayAccess::offsetSet() - * - * @param array-key | null $offset The offset to set. If `null`, the value - * may be set at a numerically-indexed offset. - * @param T $value The value to set at the given offset. - */ - public function offsetSet(mixed $offset, mixed $value): void - { - if ($offset === null) { - $this->data[] = $value; - } else { - $this->data[$offset] = $value; - } - } - - /** - * Removes the given offset and its value from the array. - * - * @link http://php.net/manual/en/arrayaccess.offsetunset.php ArrayAccess::offsetUnset() - * - * @param array-key $offset The offset to remove from the array. - */ - public function offsetUnset(mixed $offset): void - { - unset($this->data[$offset]); - } - - /** - * Returns data suitable for PHP serialization. - * - * @link https://www.php.net/manual/en/language.oop5.magic.php#language.oop5.magic.serialize - * @link https://www.php.net/serialize - * - * @return array - */ - public function __serialize(): array - { - return $this->data; - } - - /** - * Adds unserialized data to the object. - * - * @param array $data - */ - public function __unserialize(array $data): void - { - $this->data = $data; - } - - /** - * Returns the number of items in this array. - * - * @link http://php.net/manual/en/countable.count.php Countable::count() - */ - public function count(): int - { - return count($this->data); - } - - public function clear(): void - { - $this->data = []; - } - - /** - * @inheritDoc - */ - public function toArray(): array - { - return $this->data; - } - - public function isEmpty(): bool - { - return $this->data === []; - } -} diff --git a/vendor/ramsey/collection/src/AbstractCollection.php b/vendor/ramsey/collection/src/AbstractCollection.php deleted file mode 100644 index 8cb21ec0..00000000 --- a/vendor/ramsey/collection/src/AbstractCollection.php +++ /dev/null @@ -1,393 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection; - -use Closure; -use Ramsey\Collection\Exception\CollectionMismatchException; -use Ramsey\Collection\Exception\InvalidArgumentException; -use Ramsey\Collection\Exception\InvalidPropertyOrMethod; -use Ramsey\Collection\Exception\NoSuchElementException; -use Ramsey\Collection\Exception\UnsupportedOperationException; -use Ramsey\Collection\Tool\TypeTrait; -use Ramsey\Collection\Tool\ValueExtractorTrait; -use Ramsey\Collection\Tool\ValueToStringTrait; - -use function array_filter; -use function array_key_first; -use function array_key_last; -use function array_map; -use function array_merge; -use function array_reduce; -use function array_search; -use function array_udiff; -use function array_uintersect; -use function in_array; -use function is_int; -use function is_object; -use function spl_object_id; -use function sprintf; -use function usort; - -/** - * This class provides a basic implementation of `CollectionInterface`, to - * minimize the effort required to implement this interface - * - * @template T - * @extends AbstractArray - * @implements CollectionInterface - */ -abstract class AbstractCollection extends AbstractArray implements CollectionInterface -{ - use TypeTrait; - use ValueToStringTrait; - use ValueExtractorTrait; - - /** - * @throws InvalidArgumentException if $element is of the wrong type. - */ - public function add(mixed $element): bool - { - $this[] = $element; - - return true; - } - - public function contains(mixed $element, bool $strict = true): bool - { - return in_array($element, $this->data, $strict); - } - - /** - * @throws InvalidArgumentException if $element is of the wrong type. - */ - public function offsetSet(mixed $offset, mixed $value): void - { - if ($this->checkType($this->getType(), $value) === false) { - throw new InvalidArgumentException( - 'Value must be of type ' . $this->getType() . '; value is ' - . $this->toolValueToString($value), - ); - } - - if ($offset === null) { - $this->data[] = $value; - } else { - $this->data[$offset] = $value; - } - } - - public function remove(mixed $element): bool - { - if (($position = array_search($element, $this->data, true)) !== false) { - unset($this[$position]); - - return true; - } - - return false; - } - - /** - * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist - * on the elements in this collection. - * @throws UnsupportedOperationException if unable to call column() on this - * collection. - * - * @inheritDoc - */ - public function column(string $propertyOrMethod): array - { - $temp = []; - - foreach ($this->data as $item) { - /** @psalm-suppress MixedAssignment */ - $temp[] = $this->extractValue($item, $propertyOrMethod); - } - - return $temp; - } - - /** - * @return T - * - * @throws NoSuchElementException if this collection is empty. - */ - public function first(): mixed - { - $firstIndex = array_key_first($this->data); - - if ($firstIndex === null) { - throw new NoSuchElementException('Can\'t determine first item. Collection is empty'); - } - - return $this->data[$firstIndex]; - } - - /** - * @return T - * - * @throws NoSuchElementException if this collection is empty. - */ - public function last(): mixed - { - $lastIndex = array_key_last($this->data); - - if ($lastIndex === null) { - throw new NoSuchElementException('Can\'t determine last item. Collection is empty'); - } - - return $this->data[$lastIndex]; - } - - /** - * @return CollectionInterface - * - * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist - * on the elements in this collection. - * @throws UnsupportedOperationException if unable to call sort() on this - * collection. - */ - public function sort(?string $propertyOrMethod = null, Sort $order = Sort::Ascending): CollectionInterface - { - $collection = clone $this; - - usort( - $collection->data, - /** - * @param T $a - * @param T $b - */ - function (mixed $a, mixed $b) use ($propertyOrMethod, $order): int { - /** @var mixed $aValue */ - $aValue = $this->extractValue($a, $propertyOrMethod); - - /** @var mixed $bValue */ - $bValue = $this->extractValue($b, $propertyOrMethod); - - return ($aValue <=> $bValue) * ($order === Sort::Descending ? -1 : 1); - }, - ); - - return $collection; - } - - /** - * @param callable(T): bool $callback A callable to use for filtering elements. - * - * @return CollectionInterface - */ - public function filter(callable $callback): CollectionInterface - { - $collection = clone $this; - $collection->data = array_merge([], array_filter($collection->data, $callback)); - - return $collection; - } - - /** - * @return CollectionInterface - * - * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist - * on the elements in this collection. - * @throws UnsupportedOperationException if unable to call where() on this - * collection. - */ - public function where(?string $propertyOrMethod, mixed $value): CollectionInterface - { - return $this->filter( - /** - * @param T $item - */ - function (mixed $item) use ($propertyOrMethod, $value): bool { - /** @var mixed $accessorValue */ - $accessorValue = $this->extractValue($item, $propertyOrMethod); - - return $accessorValue === $value; - }, - ); - } - - /** - * @param callable(T): TCallbackReturn $callback A callable to apply to each - * item of the collection. - * - * @return CollectionInterface - * - * @template TCallbackReturn - */ - public function map(callable $callback): CollectionInterface - { - /** @var Collection */ - return new Collection('mixed', array_map($callback, $this->data)); - } - - /** - * @param callable(TCarry, T): TCarry $callback A callable to apply to each - * item of the collection to reduce it to a single value. - * @param TCarry $initial This is the initial value provided to the callback. - * - * @return TCarry - * - * @template TCarry - */ - public function reduce(callable $callback, mixed $initial): mixed - { - /** @var TCarry */ - return array_reduce($this->data, $callback, $initial); - } - - /** - * @param CollectionInterface $other The collection to check for divergent - * items. - * - * @return CollectionInterface - * - * @throws CollectionMismatchException if the compared collections are of - * differing types. - */ - public function diff(CollectionInterface $other): CollectionInterface - { - $this->compareCollectionTypes($other); - - $diffAtoB = array_udiff($this->data, $other->toArray(), $this->getComparator()); - $diffBtoA = array_udiff($other->toArray(), $this->data, $this->getComparator()); - - /** @var array $diff */ - $diff = array_merge($diffAtoB, $diffBtoA); - - $collection = clone $this; - $collection->data = $diff; - - return $collection; - } - - /** - * @param CollectionInterface $other The collection to check for - * intersecting items. - * - * @return CollectionInterface - * - * @throws CollectionMismatchException if the compared collections are of - * differing types. - */ - public function intersect(CollectionInterface $other): CollectionInterface - { - $this->compareCollectionTypes($other); - - /** @var array $intersect */ - $intersect = array_uintersect($this->data, $other->toArray(), $this->getComparator()); - - $collection = clone $this; - $collection->data = $intersect; - - return $collection; - } - - /** - * @param CollectionInterface ...$collections The collections to merge. - * - * @return CollectionInterface - * - * @throws CollectionMismatchException if unable to merge any of the given - * collections or items within the given collections due to type - * mismatch errors. - */ - public function merge(CollectionInterface ...$collections): CollectionInterface - { - $mergedCollection = clone $this; - - foreach ($collections as $index => $collection) { - if (!$collection instanceof static) { - throw new CollectionMismatchException( - sprintf('Collection with index %d must be of type %s', $index, static::class), - ); - } - - // When using generics (Collection.php, Set.php, etc), - // we also need to make sure that the internal types match each other - if ($this->getUniformType($collection) !== $this->getUniformType($this)) { - throw new CollectionMismatchException( - sprintf( - 'Collection items in collection with index %d must be of type %s', - $index, - $this->getType(), - ), - ); - } - - foreach ($collection as $key => $value) { - if (is_int($key)) { - $mergedCollection[] = $value; - } else { - $mergedCollection[$key] = $value; - } - } - } - - return $mergedCollection; - } - - /** - * @param CollectionInterface $other - * - * @throws CollectionMismatchException - */ - private function compareCollectionTypes(CollectionInterface $other): void - { - if (!$other instanceof static) { - throw new CollectionMismatchException('Collection must be of type ' . static::class); - } - - // When using generics (Collection.php, Set.php, etc), - // we also need to make sure that the internal types match each other - if ($this->getUniformType($other) !== $this->getUniformType($this)) { - throw new CollectionMismatchException('Collection items must be of type ' . $this->getType()); - } - } - - private function getComparator(): Closure - { - return /** - * @param T $a - * @param T $b - */ - function (mixed $a, mixed $b): int { - // If the two values are object, we convert them to unique scalars. - // If the collection contains mixed values (unlikely) where some are objects - // and some are not, we leave them as they are. - // The comparator should still work and the result of $a < $b should - // be consistent but unpredictable since not documented. - if (is_object($a) && is_object($b)) { - $a = spl_object_id($a); - $b = spl_object_id($b); - } - - return $a === $b ? 0 : ($a < $b ? 1 : -1); - }; - } - - /** - * @param CollectionInterface $collection - */ - private function getUniformType(CollectionInterface $collection): string - { - return match ($collection->getType()) { - 'integer' => 'int', - 'boolean' => 'bool', - 'double' => 'float', - default => $collection->getType(), - }; - } -} diff --git a/vendor/ramsey/collection/src/AbstractSet.php b/vendor/ramsey/collection/src/AbstractSet.php deleted file mode 100644 index 7186939d..00000000 --- a/vendor/ramsey/collection/src/AbstractSet.php +++ /dev/null @@ -1,44 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection; - -/** - * This class contains the basic implementation of a collection that does not - * allow duplicated values (a set), to minimize the effort required to implement - * this specific type of collection. - * - * @template T - * @extends AbstractCollection - */ -abstract class AbstractSet extends AbstractCollection -{ - public function add(mixed $element): bool - { - if ($this->contains($element)) { - return false; - } - - return parent::add($element); - } - - public function offsetSet(mixed $offset, mixed $value): void - { - if ($this->contains($value)) { - return; - } - - parent::offsetSet($offset, $value); - } -} diff --git a/vendor/ramsey/collection/src/ArrayInterface.php b/vendor/ramsey/collection/src/ArrayInterface.php deleted file mode 100644 index bc7f6f42..00000000 --- a/vendor/ramsey/collection/src/ArrayInterface.php +++ /dev/null @@ -1,49 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection; - -use ArrayAccess; -use Countable; -use IteratorAggregate; - -/** - * `ArrayInterface` provides traversable array functionality to data types. - * - * @template T - * @extends ArrayAccess - * @extends IteratorAggregate - */ -interface ArrayInterface extends - ArrayAccess, - Countable, - IteratorAggregate -{ - /** - * Removes all items from this array. - */ - public function clear(): void; - - /** - * Returns a native PHP array representation of this array object. - * - * @return array - */ - public function toArray(): array; - - /** - * Returns `true` if this array is empty. - */ - public function isEmpty(): bool; -} diff --git a/vendor/ramsey/collection/src/Collection.php b/vendor/ramsey/collection/src/Collection.php deleted file mode 100644 index 44d26bf2..00000000 --- a/vendor/ramsey/collection/src/Collection.php +++ /dev/null @@ -1,95 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection; - -/** - * A collection represents a group of objects. - * - * Each object in the collection is of a specific, defined type. - * - * This is a direct implementation of `CollectionInterface`, provided for - * the sake of convenience. - * - * Example usage: - * - * ``` php - * $collection = new \Ramsey\Collection\Collection('My\\Foo'); - * $collection->add(new \My\Foo()); - * $collection->add(new \My\Foo()); - * - * foreach ($collection as $foo) { - * // Do something with $foo - * } - * ``` - * - * It is preferable to subclass `AbstractCollection` to create your own typed - * collections. For example: - * - * ``` php - * namespace My\Foo; - * - * class FooCollection extends \Ramsey\Collection\AbstractCollection - * { - * public function getType() - * { - * return 'My\\Foo'; - * } - * } - * ``` - * - * And then use it similarly to the earlier example: - * - * ``` php - * $fooCollection = new \My\Foo\FooCollection(); - * $fooCollection->add(new \My\Foo()); - * $fooCollection->add(new \My\Foo()); - * - * foreach ($fooCollection as $foo) { - * // Do something with $foo - * } - * ``` - * - * The benefit with this approach is that you may do type-checking on the - * collection object: - * - * ``` php - * if ($collection instanceof \My\Foo\FooCollection) { - * // the collection is a collection of My\Foo objects - * } - * ``` - * - * @template T - * @extends AbstractCollection - */ -class Collection extends AbstractCollection -{ - /** - * Constructs a collection object of the specified type, optionally with the - * specified data. - * - * @param string $collectionType The type or class name associated with this - * collection. - * @param array $data The initial items to store in the collection. - */ - public function __construct(private readonly string $collectionType, array $data = []) - { - parent::__construct($data); - } - - public function getType(): string - { - return $this->collectionType; - } -} diff --git a/vendor/ramsey/collection/src/CollectionInterface.php b/vendor/ramsey/collection/src/CollectionInterface.php deleted file mode 100644 index e3ad0147..00000000 --- a/vendor/ramsey/collection/src/CollectionInterface.php +++ /dev/null @@ -1,253 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection; - -use Ramsey\Collection\Exception\CollectionMismatchException; -use Ramsey\Collection\Exception\InvalidArgumentException; -use Ramsey\Collection\Exception\InvalidPropertyOrMethod; -use Ramsey\Collection\Exception\NoSuchElementException; -use Ramsey\Collection\Exception\UnsupportedOperationException; - -/** - * A collection represents a group of values, known as its elements. - * - * Some collections allow duplicate elements and others do not. Some are ordered - * and others unordered. - * - * @template T - * @extends ArrayInterface - */ -interface CollectionInterface extends ArrayInterface -{ - /** - * Ensures that this collection contains the specified element (optional - * operation). - * - * Returns `true` if this collection changed as a result of the call. - * (Returns `false` if this collection does not permit duplicates and - * already contains the specified element.) - * - * Collections that support this operation may place limitations on what - * elements may be added to this collection. In particular, some - * collections will refuse to add `null` elements, and others will impose - * restrictions on the type of elements that may be added. Collection - * classes should clearly specify in their documentation any restrictions - * on what elements may be added. - * - * If a collection refuses to add a particular element for any reason other - * than that it already contains the element, it must throw an exception - * (rather than returning `false`). This preserves the invariant that a - * collection always contains the specified element after this call returns. - * - * @param T $element The element to add to the collection. - * - * @return bool `true` if this collection changed as a result of the call. - * - * @throws InvalidArgumentException if the collection refuses to add the - * $element for any reason other than that it already contains the element. - */ - public function add(mixed $element): bool; - - /** - * Returns `true` if this collection contains the specified element. - * - * @param T $element The element to check whether the collection contains. - * @param bool $strict Whether to perform a strict type check on the value. - */ - public function contains(mixed $element, bool $strict = true): bool; - - /** - * Returns the type associated with this collection. - */ - public function getType(): string; - - /** - * Removes a single instance of the specified element from this collection, - * if it is present. - * - * @param T $element The element to remove from the collection. - * - * @return bool `true` if an element was removed as a result of this call. - */ - public function remove(mixed $element): bool; - - /** - * Returns the values from the given property, method, or array key. - * - * @param string $propertyOrMethod The name of the property, method, or - * array key to evaluate and return. - * - * @return array - * - * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist - * on the elements in this collection. - * @throws UnsupportedOperationException if unable to call column() on this - * collection. - */ - public function column(string $propertyOrMethod): array; - - /** - * Returns the first item of the collection. - * - * @return T - * - * @throws NoSuchElementException if this collection is empty. - */ - public function first(): mixed; - - /** - * Returns the last item of the collection. - * - * @return T - * - * @throws NoSuchElementException if this collection is empty. - */ - public function last(): mixed; - - /** - * Sort the collection by a property, method, or array key with the given - * sort order. - * - * If $propertyOrMethod is `null`, this will sort by comparing each element. - * - * This will always leave the original collection untouched and will return - * a new one. - * - * @param string | null $propertyOrMethod The property, method, or array key - * to sort by. - * @param Sort $order The sort order for the resulting collection. - * - * @return CollectionInterface - * - * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist - * on the elements in this collection. - * @throws UnsupportedOperationException if unable to call sort() on this - * collection. - */ - public function sort(?string $propertyOrMethod = null, Sort $order = Sort::Ascending): self; - - /** - * Filter out items of the collection which don't match the criteria of - * given callback. - * - * This will always leave the original collection untouched and will return - * a new one. - * - * See the {@link http://php.net/manual/en/function.array-filter.php PHP array_filter() documentation} - * for examples of how the `$callback` parameter works. - * - * @param callable(T): bool $callback A callable to use for filtering elements. - * - * @return CollectionInterface - */ - public function filter(callable $callback): self; - - /** - * Create a new collection where the result of the given property, method, - * or array key of each item in the collection equals the given value. - * - * This will always leave the original collection untouched and will return - * a new one. - * - * @param string | null $propertyOrMethod The property, method, or array key - * to evaluate. If `null`, the element itself is compared to $value. - * @param mixed $value The value to match. - * - * @return CollectionInterface - * - * @throws InvalidPropertyOrMethod if the $propertyOrMethod does not exist - * on the elements in this collection. - * @throws UnsupportedOperationException if unable to call where() on this - * collection. - */ - public function where(?string $propertyOrMethod, mixed $value): self; - - /** - * Apply a given callback method on each item of the collection. - * - * This will always leave the original collection untouched. The new - * collection is created by mapping the callback to each item of the - * original collection. - * - * See the {@link http://php.net/manual/en/function.array-map.php PHP array_map() documentation} - * for examples of how the `$callback` parameter works. - * - * @param callable(T): TCallbackReturn $callback A callable to apply to each - * item of the collection. - * - * @return CollectionInterface - * - * @template TCallbackReturn - */ - public function map(callable $callback): self; - - /** - * Apply a given callback method on each item of the collection - * to reduce it to a single value. - * - * See the {@link http://php.net/manual/en/function.array-reduce.php PHP array_reduce() documentation} - * for examples of how the `$callback` and `$initial` parameters work. - * - * @param callable(TCarry, T): TCarry $callback A callable to apply to each - * item of the collection to reduce it to a single value. - * @param TCarry $initial This is the initial value provided to the callback. - * - * @return TCarry - * - * @template TCarry - */ - public function reduce(callable $callback, mixed $initial): mixed; - - /** - * Create a new collection with divergent items between current and given - * collection. - * - * @param CollectionInterface $other The collection to check for divergent - * items. - * - * @return CollectionInterface - * - * @throws CollectionMismatchException if the compared collections are of - * differing types. - */ - public function diff(CollectionInterface $other): self; - - /** - * Create a new collection with intersecting item between current and given - * collection. - * - * @param CollectionInterface $other The collection to check for - * intersecting items. - * - * @return CollectionInterface - * - * @throws CollectionMismatchException if the compared collections are of - * differing types. - */ - public function intersect(CollectionInterface $other): self; - - /** - * Merge current items and items of given collections into a new one. - * - * @param CollectionInterface ...$collections The collections to merge. - * - * @return CollectionInterface - * - * @throws CollectionMismatchException if unable to merge any of the given - * collections or items within the given collections due to type - * mismatch errors. - */ - public function merge(CollectionInterface ...$collections): self; -} diff --git a/vendor/ramsey/collection/src/DoubleEndedQueue.php b/vendor/ramsey/collection/src/DoubleEndedQueue.php deleted file mode 100644 index 62947a24..00000000 --- a/vendor/ramsey/collection/src/DoubleEndedQueue.php +++ /dev/null @@ -1,166 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection; - -use Ramsey\Collection\Exception\InvalidArgumentException; -use Ramsey\Collection\Exception\NoSuchElementException; - -use function array_key_last; -use function array_pop; -use function array_unshift; - -/** - * This class provides a basic implementation of `DoubleEndedQueueInterface`, to - * minimize the effort required to implement this interface. - * - * @template T - * @extends Queue - * @implements DoubleEndedQueueInterface - */ -class DoubleEndedQueue extends Queue implements DoubleEndedQueueInterface -{ - /** - * Constructs a double-ended queue (dequeue) object of the specified type, - * optionally with the specified data. - * - * @param string $queueType The type or class name associated with this dequeue. - * @param array $data The initial items to store in the dequeue. - */ - public function __construct(private readonly string $queueType, array $data = []) - { - parent::__construct($this->queueType, $data); - } - - /** - * @throws InvalidArgumentException if $element is of the wrong type - */ - public function addFirst(mixed $element): bool - { - if ($this->checkType($this->getType(), $element) === false) { - throw new InvalidArgumentException( - 'Value must be of type ' . $this->getType() . '; value is ' - . $this->toolValueToString($element), - ); - } - - array_unshift($this->data, $element); - - return true; - } - - /** - * @throws InvalidArgumentException if $element is of the wrong type - */ - public function addLast(mixed $element): bool - { - return $this->add($element); - } - - public function offerFirst(mixed $element): bool - { - try { - return $this->addFirst($element); - } catch (InvalidArgumentException) { - return false; - } - } - - public function offerLast(mixed $element): bool - { - return $this->offer($element); - } - - /** - * @return T the first element in this queue. - * - * @throws NoSuchElementException if the queue is empty - */ - public function removeFirst(): mixed - { - return $this->remove(); - } - - /** - * @return T the last element in this queue. - * - * @throws NoSuchElementException if this queue is empty. - */ - public function removeLast(): mixed - { - return $this->pollLast() ?? throw new NoSuchElementException( - 'Can\'t return element from Queue. Queue is empty.', - ); - } - - /** - * @return T | null the head of this queue, or `null` if this queue is empty. - */ - public function pollFirst(): mixed - { - return $this->poll(); - } - - /** - * @return T | null the tail of this queue, or `null` if this queue is empty. - */ - public function pollLast(): mixed - { - return array_pop($this->data); - } - - /** - * @return T the head of this queue. - * - * @throws NoSuchElementException if this queue is empty. - */ - public function firstElement(): mixed - { - return $this->element(); - } - - /** - * @return T the tail of this queue. - * - * @throws NoSuchElementException if this queue is empty. - */ - public function lastElement(): mixed - { - return $this->peekLast() ?? throw new NoSuchElementException( - 'Can\'t return element from Queue. Queue is empty.', - ); - } - - /** - * @return T | null the head of this queue, or `null` if this queue is empty. - */ - public function peekFirst(): mixed - { - return $this->peek(); - } - - /** - * @return T | null the tail of this queue, or `null` if this queue is empty. - */ - public function peekLast(): mixed - { - $lastIndex = array_key_last($this->data); - - if ($lastIndex === null) { - return null; - } - - return $this->data[$lastIndex]; - } -} diff --git a/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php b/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php deleted file mode 100644 index 15cc0e97..00000000 --- a/vendor/ramsey/collection/src/DoubleEndedQueueInterface.php +++ /dev/null @@ -1,313 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection; - -use Ramsey\Collection\Exception\NoSuchElementException; -use RuntimeException; - -/** - * A linear collection that supports element insertion and removal at both ends. - * - * Most `DoubleEndedQueueInterface` implementations place no fixed limits on the - * number of elements they may contain, but this interface supports - * capacity-restricted double-ended queues as well as those with no fixed size - * limit. - * - * This interface defines methods to access the elements at both ends of the - * double-ended queue. Methods are provided to insert, remove, and examine the - * element. Each of these methods exists in two forms: one throws an exception - * if the operation fails, the other returns a special value (either `null` or - * `false`, depending on the operation). The latter form of the insert operation - * is designed specifically for use with capacity-restricted implementations; in - * most implementations, insert operations cannot fail. - * - * The twelve methods described above are summarized in the following table: - * - *
    - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
    Summary of DoubleEndedQueueInterface methods
    First Element (Head)Last Element (Tail)
    Throws exceptionSpecial valueThrows exceptionSpecial value
    InsertaddFirst()offerFirst()addLast()offerLast()
    RemoveremoveFirst()pollFirst()removeLast()pollLast()
    ExaminefirstElement()peekFirst()lastElement()peekLast()
    - * - * This interface extends the `QueueInterface`. When a double-ended queue is - * used as a queue, FIFO (first-in-first-out) behavior results. Elements are - * added at the end of the double-ended queue and removed from the beginning. - * The methods inherited from the `QueueInterface` are precisely equivalent to - * `DoubleEndedQueueInterface` methods as indicated in the following table: - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
    Comparison of QueueInterface and DoubleEndedQueueInterface methods
    QueueInterface MethodDoubleEndedQueueInterface Method
    add()addLast()
    offer()offerLast()
    remove()removeFirst()
    poll()pollFirst()
    element()firstElement()
    peek()peekFirst()
    - * - * Double-ended queues can also be used as LIFO (last-in-first-out) stacks. When - * a double-ended queue is used as a stack, elements are pushed and popped from - * the beginning of the double-ended queue. Stack concepts are precisely - * equivalent to `DoubleEndedQueueInterface` methods as indicated in the table - * below: - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
    Comparison of stack concepts and DoubleEndedQueueInterface methods
    Stack conceptDoubleEndedQueueInterface Method
    pushaddFirst()
    popremoveFirst()
    peekpeekFirst()
    - * - * Note that the `peek()` method works equally well when a double-ended queue is - * used as a queue or a stack; in either case, elements are drawn from the - * beginning of the double-ended queue. - * - * While `DoubleEndedQueueInterface` implementations are not strictly required - * to prohibit the insertion of `null` elements, they are strongly encouraged to - * do so. Users of any `DoubleEndedQueueInterface` implementations that do allow - * `null` elements are strongly encouraged *not* to take advantage of the - * ability to insert nulls. This is so because `null` is used as a special - * return value by various methods to indicated that the double-ended queue is - * empty. - * - * @template T - * @extends QueueInterface - */ -interface DoubleEndedQueueInterface extends QueueInterface -{ - /** - * Inserts the specified element at the front of this queue if it is - * possible to do so immediately without violating capacity restrictions. - * - * When using a capacity-restricted double-ended queue, it is generally - * preferable to use the `offerFirst()` method. - * - * @param T $element The element to add to the front of this queue. - * - * @return bool `true` if this queue changed as a result of the call. - * - * @throws RuntimeException if a queue refuses to add a particular element - * for any reason other than that it already contains the element. - * Implementations should use a more-specific exception that extends - * `\RuntimeException`. - */ - public function addFirst(mixed $element): bool; - - /** - * Inserts the specified element at the end of this queue if it is possible - * to do so immediately without violating capacity restrictions. - * - * When using a capacity-restricted double-ended queue, it is generally - * preferable to use the `offerLast()` method. - * - * This method is equivalent to `add()`. - * - * @param T $element The element to add to the end of this queue. - * - * @return bool `true` if this queue changed as a result of the call. - * - * @throws RuntimeException if a queue refuses to add a particular element - * for any reason other than that it already contains the element. - * Implementations should use a more-specific exception that extends - * `\RuntimeException`. - */ - public function addLast(mixed $element): bool; - - /** - * Inserts the specified element at the front of this queue if it is - * possible to do so immediately without violating capacity restrictions. - * - * When using a capacity-restricted queue, this method is generally - * preferable to `addFirst()`, which can fail to insert an element only by - * throwing an exception. - * - * @param T $element The element to add to the front of this queue. - * - * @return bool `true` if the element was added to this queue, else `false`. - */ - public function offerFirst(mixed $element): bool; - - /** - * Inserts the specified element at the end of this queue if it is possible - * to do so immediately without violating capacity restrictions. - * - * When using a capacity-restricted queue, this method is generally - * preferable to `addLast()` which can fail to insert an element only by - * throwing an exception. - * - * @param T $element The element to add to the end of this queue. - * - * @return bool `true` if the element was added to this queue, else `false`. - */ - public function offerLast(mixed $element): bool; - - /** - * Retrieves and removes the head of this queue. - * - * This method differs from `pollFirst()` only in that it throws an - * exception if this queue is empty. - * - * @return T the first element in this queue. - * - * @throws NoSuchElementException if this queue is empty. - */ - public function removeFirst(): mixed; - - /** - * Retrieves and removes the tail of this queue. - * - * This method differs from `pollLast()` only in that it throws an exception - * if this queue is empty. - * - * @return T the last element in this queue. - * - * @throws NoSuchElementException if this queue is empty. - */ - public function removeLast(): mixed; - - /** - * Retrieves and removes the head of this queue, or returns `null` if this - * queue is empty. - * - * @return T | null the head of this queue, or `null` if this queue is empty. - */ - public function pollFirst(): mixed; - - /** - * Retrieves and removes the tail of this queue, or returns `null` if this - * queue is empty. - * - * @return T | null the tail of this queue, or `null` if this queue is empty. - */ - public function pollLast(): mixed; - - /** - * Retrieves, but does not remove, the head of this queue. - * - * This method differs from `peekFirst()` only in that it throws an - * exception if this queue is empty. - * - * @return T the head of this queue. - * - * @throws NoSuchElementException if this queue is empty. - */ - public function firstElement(): mixed; - - /** - * Retrieves, but does not remove, the tail of this queue. - * - * This method differs from `peekLast()` only in that it throws an exception - * if this queue is empty. - * - * @return T the tail of this queue. - * - * @throws NoSuchElementException if this queue is empty. - */ - public function lastElement(): mixed; - - /** - * Retrieves, but does not remove, the head of this queue, or returns `null` - * if this queue is empty. - * - * @return T | null the head of this queue, or `null` if this queue is empty. - */ - public function peekFirst(): mixed; - - /** - * Retrieves, but does not remove, the tail of this queue, or returns `null` - * if this queue is empty. - * - * @return T | null the tail of this queue, or `null` if this queue is empty. - */ - public function peekLast(): mixed; -} diff --git a/vendor/ramsey/collection/src/Exception/CollectionException.php b/vendor/ramsey/collection/src/Exception/CollectionException.php deleted file mode 100644 index 4aa92bed..00000000 --- a/vendor/ramsey/collection/src/Exception/CollectionException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection\Exception; - -use Throwable; - -interface CollectionException extends Throwable -{ -} diff --git a/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php b/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php deleted file mode 100644 index 42f5be2d..00000000 --- a/vendor/ramsey/collection/src/Exception/CollectionMismatchException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection\Exception; - -use RuntimeException; - -/** - * Thrown when attempting to operate on collections of differing types. - */ -class CollectionMismatchException extends RuntimeException implements CollectionException -{ -} diff --git a/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php b/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php deleted file mode 100644 index 7b41b4a7..00000000 --- a/vendor/ramsey/collection/src/Exception/InvalidArgumentException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection\Exception; - -use InvalidArgumentException as PhpInvalidArgumentException; - -/** - * Thrown to indicate an argument is not of the expected type. - */ -class InvalidArgumentException extends PhpInvalidArgumentException implements CollectionException -{ -} diff --git a/vendor/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php b/vendor/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php deleted file mode 100644 index a53be14a..00000000 --- a/vendor/ramsey/collection/src/Exception/InvalidPropertyOrMethod.php +++ /dev/null @@ -1,26 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection\Exception; - -use RuntimeException; - -/** - * Thrown when attempting to evaluate a property, method, or array key - * that doesn't exist on an element or cannot otherwise be evaluated in the - * current context. - */ -class InvalidPropertyOrMethod extends RuntimeException implements CollectionException -{ -} diff --git a/vendor/ramsey/collection/src/Exception/NoSuchElementException.php b/vendor/ramsey/collection/src/Exception/NoSuchElementException.php deleted file mode 100644 index cd98f0c0..00000000 --- a/vendor/ramsey/collection/src/Exception/NoSuchElementException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection\Exception; - -use RuntimeException; - -/** - * Thrown when attempting to access an element that does not exist. - */ -class NoSuchElementException extends RuntimeException implements CollectionException -{ -} diff --git a/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php b/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php deleted file mode 100644 index c75294e5..00000000 --- a/vendor/ramsey/collection/src/Exception/OutOfBoundsException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection\Exception; - -use OutOfBoundsException as PhpOutOfBoundsException; - -/** - * Thrown when attempting to access an element out of the range of the collection. - */ -class OutOfBoundsException extends PhpOutOfBoundsException implements CollectionException -{ -} diff --git a/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php b/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php deleted file mode 100644 index d074f45f..00000000 --- a/vendor/ramsey/collection/src/Exception/UnsupportedOperationException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection\Exception; - -use RuntimeException; - -/** - * Thrown to indicate that the requested operation is not supported. - */ -class UnsupportedOperationException extends RuntimeException implements CollectionException -{ -} diff --git a/vendor/ramsey/collection/src/GenericArray.php b/vendor/ramsey/collection/src/GenericArray.php deleted file mode 100644 index 2b079aa5..00000000 --- a/vendor/ramsey/collection/src/GenericArray.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection; - -/** - * `GenericArray` represents a standard array object. - * - * @extends AbstractArray - */ -class GenericArray extends AbstractArray -{ -} diff --git a/vendor/ramsey/collection/src/Map/AbstractMap.php b/vendor/ramsey/collection/src/Map/AbstractMap.php deleted file mode 100644 index 7a851a80..00000000 --- a/vendor/ramsey/collection/src/Map/AbstractMap.php +++ /dev/null @@ -1,203 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection\Map; - -use Ramsey\Collection\AbstractArray; -use Ramsey\Collection\Exception\InvalidArgumentException; -use Traversable; - -use function array_key_exists; -use function array_keys; -use function in_array; -use function var_export; - -/** - * This class provides a basic implementation of `MapInterface`, to minimize the - * effort required to implement this interface. - * - * @template K of array-key - * @template T - * @extends AbstractArray - * @implements MapInterface - */ -abstract class AbstractMap extends AbstractArray implements MapInterface -{ - /** - * @param array $data The initial items to add to this map. - */ - public function __construct(array $data = []) - { - parent::__construct($data); - } - - /** - * @return Traversable - */ - public function getIterator(): Traversable - { - return parent::getIterator(); - } - - /** - * @param K $offset The offset to set - * @param T $value The value to set at the given offset. - * - * @inheritDoc - * @psalm-suppress MoreSpecificImplementedParamType,DocblockTypeContradiction - */ - public function offsetSet(mixed $offset, mixed $value): void - { - if ($offset === null) { - throw new InvalidArgumentException( - 'Map elements are key/value pairs; a key must be provided for ' - . 'value ' . var_export($value, true), - ); - } - - $this->data[$offset] = $value; - } - - public function containsKey(int | string $key): bool - { - return array_key_exists($key, $this->data); - } - - public function containsValue(mixed $value): bool - { - return in_array($value, $this->data, true); - } - - /** - * @inheritDoc - */ - public function keys(): array - { - return array_keys($this->data); - } - - /** - * @param K $key The key to return from the map. - * @param T | null $defaultValue The default value to use if `$key` is not found. - * - * @return T | null the value or `null` if the key could not be found. - */ - public function get(int | string $key, mixed $defaultValue = null): mixed - { - return $this[$key] ?? $defaultValue; - } - - /** - * @param K $key The key to put or replace in the map. - * @param T $value The value to store at `$key`. - * - * @return T | null the previous value associated with key, or `null` if - * there was no mapping for `$key`. - */ - public function put(int | string $key, mixed $value): mixed - { - $previousValue = $this->get($key); - $this[$key] = $value; - - return $previousValue; - } - - /** - * @param K $key The key to put in the map. - * @param T $value The value to store at `$key`. - * - * @return T | null the previous value associated with key, or `null` if - * there was no mapping for `$key`. - */ - public function putIfAbsent(int | string $key, mixed $value): mixed - { - $currentValue = $this->get($key); - - if ($currentValue === null) { - $this[$key] = $value; - } - - return $currentValue; - } - - /** - * @param K $key The key to remove from the map. - * - * @return T | null the previous value associated with key, or `null` if - * there was no mapping for `$key`. - */ - public function remove(int | string $key): mixed - { - $previousValue = $this->get($key); - unset($this[$key]); - - return $previousValue; - } - - public function removeIf(int | string $key, mixed $value): bool - { - if ($this->get($key) === $value) { - unset($this[$key]); - - return true; - } - - return false; - } - - /** - * @param K $key The key to replace. - * @param T $value The value to set at `$key`. - * - * @return T | null the previous value associated with key, or `null` if - * there was no mapping for `$key`. - */ - public function replace(int | string $key, mixed $value): mixed - { - $currentValue = $this->get($key); - - if ($this->containsKey($key)) { - $this[$key] = $value; - } - - return $currentValue; - } - - public function replaceIf(int | string $key, mixed $oldValue, mixed $newValue): bool - { - if ($this->get($key) === $oldValue) { - $this[$key] = $newValue; - - return true; - } - - return false; - } - - /** - * @return array - */ - public function __serialize(): array - { - return parent::__serialize(); - } - - /** - * @return array - */ - public function toArray(): array - { - return parent::toArray(); - } -} diff --git a/vendor/ramsey/collection/src/Map/AbstractTypedMap.php b/vendor/ramsey/collection/src/Map/AbstractTypedMap.php deleted file mode 100644 index 92fdcd54..00000000 --- a/vendor/ramsey/collection/src/Map/AbstractTypedMap.php +++ /dev/null @@ -1,60 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection\Map; - -use Ramsey\Collection\Exception\InvalidArgumentException; -use Ramsey\Collection\Tool\TypeTrait; -use Ramsey\Collection\Tool\ValueToStringTrait; - -/** - * This class provides a basic implementation of `TypedMapInterface`, to - * minimize the effort required to implement this interface. - * - * @template K of array-key - * @template T - * @extends AbstractMap - * @implements TypedMapInterface - */ -abstract class AbstractTypedMap extends AbstractMap implements TypedMapInterface -{ - use TypeTrait; - use ValueToStringTrait; - - /** - * @param K $offset - * @param T $value - * - * @inheritDoc - * @psalm-suppress MoreSpecificImplementedParamType - */ - public function offsetSet(mixed $offset, mixed $value): void - { - if ($this->checkType($this->getKeyType(), $offset) === false) { - throw new InvalidArgumentException( - 'Key must be of type ' . $this->getKeyType() . '; key is ' - . $this->toolValueToString($offset), - ); - } - - if ($this->checkType($this->getValueType(), $value) === false) { - throw new InvalidArgumentException( - 'Value must be of type ' . $this->getValueType() . '; value is ' - . $this->toolValueToString($value), - ); - } - - parent::offsetSet($offset, $value); - } -} diff --git a/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php b/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php deleted file mode 100644 index 34e4e853..00000000 --- a/vendor/ramsey/collection/src/Map/AssociativeArrayMap.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection\Map; - -/** - * `AssociativeArrayMap` represents a standard associative array object. - * - * @extends AbstractMap - */ -class AssociativeArrayMap extends AbstractMap -{ -} diff --git a/vendor/ramsey/collection/src/Map/MapInterface.php b/vendor/ramsey/collection/src/Map/MapInterface.php deleted file mode 100644 index 22ba1bdd..00000000 --- a/vendor/ramsey/collection/src/Map/MapInterface.php +++ /dev/null @@ -1,142 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection\Map; - -use Ramsey\Collection\ArrayInterface; - -/** - * An object that maps keys to values. - * - * A map cannot contain duplicate keys; each key can map to at most one value. - * - * @template K of array-key - * @template T - * @extends ArrayInterface - */ -interface MapInterface extends ArrayInterface -{ - /** - * Returns `true` if this map contains a mapping for the specified key. - * - * @param K $key The key to check in the map. - */ - public function containsKey(int | string $key): bool; - - /** - * Returns `true` if this map maps one or more keys to the specified value. - * - * This performs a strict type check on the value. - * - * @param T $value The value to check in the map. - */ - public function containsValue(mixed $value): bool; - - /** - * Return an array of the keys contained in this map. - * - * @return list - */ - public function keys(): array; - - /** - * Returns the value to which the specified key is mapped, `null` if this - * map contains no mapping for the key, or (optionally) `$defaultValue` if - * this map contains no mapping for the key. - * - * @param K $key The key to return from the map. - * @param T | null $defaultValue The default value to use if `$key` is not found. - * - * @return T | null the value or `null` if the key could not be found. - */ - public function get(int | string $key, mixed $defaultValue = null): mixed; - - /** - * Associates the specified value with the specified key in this map. - * - * If the map previously contained a mapping for the key, the old value is - * replaced by the specified value. - * - * @param K $key The key to put or replace in the map. - * @param T $value The value to store at `$key`. - * - * @return T | null the previous value associated with key, or `null` if - * there was no mapping for `$key`. - */ - public function put(int | string $key, mixed $value): mixed; - - /** - * Associates the specified value with the specified key in this map only if - * it is not already set. - * - * If there is already a value associated with `$key`, this returns that - * value without replacing it. - * - * @param K $key The key to put in the map. - * @param T $value The value to store at `$key`. - * - * @return T | null the previous value associated with key, or `null` if - * there was no mapping for `$key`. - */ - public function putIfAbsent(int | string $key, mixed $value): mixed; - - /** - * Removes the mapping for a key from this map if it is present. - * - * @param K $key The key to remove from the map. - * - * @return T | null the previous value associated with key, or `null` if - * there was no mapping for `$key`. - */ - public function remove(int | string $key): mixed; - - /** - * Removes the entry for the specified key only if it is currently mapped to - * the specified value. - * - * This performs a strict type check on the value. - * - * @param K $key The key to remove from the map. - * @param T $value The value to match. - * - * @return bool true if the value was removed. - */ - public function removeIf(int | string $key, mixed $value): bool; - - /** - * Replaces the entry for the specified key only if it is currently mapped - * to some value. - * - * @param K $key The key to replace. - * @param T $value The value to set at `$key`. - * - * @return T | null the previous value associated with key, or `null` if - * there was no mapping for `$key`. - */ - public function replace(int | string $key, mixed $value): mixed; - - /** - * Replaces the entry for the specified key only if currently mapped to the - * specified value. - * - * This performs a strict type check on the value. - * - * @param K $key The key to remove from the map. - * @param T $oldValue The value to match. - * @param T $newValue The value to use as a replacement. - * - * @return bool true if the value was replaced. - */ - public function replaceIf(int | string $key, mixed $oldValue, mixed $newValue): bool; -} diff --git a/vendor/ramsey/collection/src/Map/NamedParameterMap.php b/vendor/ramsey/collection/src/Map/NamedParameterMap.php deleted file mode 100644 index f948e476..00000000 --- a/vendor/ramsey/collection/src/Map/NamedParameterMap.php +++ /dev/null @@ -1,110 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection\Map; - -use Ramsey\Collection\Exception\InvalidArgumentException; -use Ramsey\Collection\Tool\TypeTrait; -use Ramsey\Collection\Tool\ValueToStringTrait; - -use function array_combine; -use function array_key_exists; -use function is_int; - -/** - * `NamedParameterMap` represents a mapping of values to a set of named keys - * that may optionally be typed - * - * @extends AbstractMap - */ -class NamedParameterMap extends AbstractMap -{ - use TypeTrait; - use ValueToStringTrait; - - /** - * Named parameters defined for this map. - * - * @var array - */ - private readonly array $namedParameters; - - /** - * Constructs a new `NamedParameterMap`. - * - * @param array $namedParameters The named parameters defined for this map. - * @param array $data An initial set of data to set on this map. - */ - public function __construct(array $namedParameters, array $data = []) - { - $this->namedParameters = $this->filterNamedParameters($namedParameters); - parent::__construct($data); - } - - /** - * Returns named parameters set for this `NamedParameterMap`. - * - * @return array - */ - public function getNamedParameters(): array - { - return $this->namedParameters; - } - - public function offsetSet(mixed $offset, mixed $value): void - { - if (!array_key_exists($offset, $this->namedParameters)) { - throw new InvalidArgumentException( - 'Attempting to set value for unconfigured parameter \'' - . $this->toolValueToString($offset) . '\'', - ); - } - - if ($this->checkType($this->namedParameters[$offset], $value) === false) { - throw new InvalidArgumentException( - 'Value for \'' . $offset . '\' must be of type ' - . $this->namedParameters[$offset] . '; value is ' - . $this->toolValueToString($value), - ); - } - - $this->data[$offset] = $value; - } - - /** - * Given an array of named parameters, constructs a proper mapping of - * named parameters to types. - * - * @param array $namedParameters The named parameters to filter. - * - * @return array - */ - protected function filterNamedParameters(array $namedParameters): array - { - $names = []; - $types = []; - - foreach ($namedParameters as $key => $value) { - if (is_int($key)) { - $names[] = $value; - $types[] = 'mixed'; - } else { - $names[] = $key; - $types[] = $value; - } - } - - return array_combine($names, $types) ?: []; - } -} diff --git a/vendor/ramsey/collection/src/Map/TypedMap.php b/vendor/ramsey/collection/src/Map/TypedMap.php deleted file mode 100644 index f914d9c7..00000000 --- a/vendor/ramsey/collection/src/Map/TypedMap.php +++ /dev/null @@ -1,112 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection\Map; - -/** - * A `TypedMap` represents a map of elements where key and value are typed. - * - * Each element is identified by a key with defined type and a value of defined - * type. The keys of the map must be unique. The values on the map can be - * repeated but each with its own different key. - * - * The most common case is to use a string type key, but it's not limited to - * this type of keys. - * - * This is a direct implementation of `TypedMapInterface`, provided for the sake - * of convenience. - * - * Example usage: - * - * ```php - * $map = new TypedMap('string', Foo::class); - * $map['x'] = new Foo(); - * foreach ($map as $key => $value) { - * // do something with $key, it will be a Foo::class - * } - * - * // this will throw an exception since key must be string - * $map[10] = new Foo(); - * - * // this will throw an exception since value must be a Foo - * $map['bar'] = 'bar'; - * - * // initialize map with contents - * $map = new TypedMap('string', Foo::class, [ - * new Foo(), new Foo(), new Foo() - * ]); - * ``` - * - * It is preferable to subclass `AbstractTypedMap` to create your own typed map - * implementation: - * - * ```php - * class FooTypedMap extends AbstractTypedMap - * { - * public function getKeyType() - * { - * return 'int'; - * } - * - * public function getValueType() - * { - * return Foo::class; - * } - * } - * ``` - * - * … but you also may use the `TypedMap` class: - * - * ```php - * class FooTypedMap extends TypedMap - * { - * public function __constructor(array $data = []) - * { - * parent::__construct('int', Foo::class, $data); - * } - * } - * ``` - * - * @template K of array-key - * @template T - * @extends AbstractTypedMap - */ -class TypedMap extends AbstractTypedMap -{ - /** - * Constructs a map object of the specified key and value types, - * optionally with the specified data. - * - * @param string $keyType The data type of the map's keys. - * @param string $valueType The data type of the map's values. - * @param array $data The initial data to set for this map. - */ - public function __construct( - private readonly string $keyType, - private readonly string $valueType, - array $data = [], - ) { - parent::__construct($data); - } - - public function getKeyType(): string - { - return $this->keyType; - } - - public function getValueType(): string - { - return $this->valueType; - } -} diff --git a/vendor/ramsey/collection/src/Map/TypedMapInterface.php b/vendor/ramsey/collection/src/Map/TypedMapInterface.php deleted file mode 100644 index 5a44f064..00000000 --- a/vendor/ramsey/collection/src/Map/TypedMapInterface.php +++ /dev/null @@ -1,36 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection\Map; - -/** - * A `TypedMapInterface` represents a map of elements where key and value are - * typed. - * - * @template K of array-key - * @template T - * @extends MapInterface - */ -interface TypedMapInterface extends MapInterface -{ - /** - * Return the type used on the key. - */ - public function getKeyType(): string; - - /** - * Return the type forced on the values. - */ - public function getValueType(): string; -} diff --git a/vendor/ramsey/collection/src/Queue.php b/vendor/ramsey/collection/src/Queue.php deleted file mode 100644 index 0f5b3374..00000000 --- a/vendor/ramsey/collection/src/Queue.php +++ /dev/null @@ -1,148 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection; - -use Ramsey\Collection\Exception\InvalidArgumentException; -use Ramsey\Collection\Exception\NoSuchElementException; -use Ramsey\Collection\Tool\TypeTrait; -use Ramsey\Collection\Tool\ValueToStringTrait; - -use function array_key_first; - -/** - * This class provides a basic implementation of `QueueInterface`, to minimize - * the effort required to implement this interface. - * - * @template T - * @extends AbstractArray - * @implements QueueInterface - */ -class Queue extends AbstractArray implements QueueInterface -{ - use TypeTrait; - use ValueToStringTrait; - - /** - * Constructs a queue object of the specified type, optionally with the - * specified data. - * - * @param string $queueType The type or class name associated with this queue. - * @param array $data The initial items to store in the queue. - */ - public function __construct(private readonly string $queueType, array $data = []) - { - parent::__construct($data); - } - - /** - * {@inheritDoc} - * - * Since arbitrary offsets may not be manipulated in a queue, this method - * serves only to fulfill the `ArrayAccess` interface requirements. It is - * invoked by other operations when adding values to the queue. - * - * @throws InvalidArgumentException if $value is of the wrong type. - */ - public function offsetSet(mixed $offset, mixed $value): void - { - if ($this->checkType($this->getType(), $value) === false) { - throw new InvalidArgumentException( - 'Value must be of type ' . $this->getType() . '; value is ' - . $this->toolValueToString($value), - ); - } - - $this->data[] = $value; - } - - /** - * @throws InvalidArgumentException if $value is of the wrong type. - */ - public function add(mixed $element): bool - { - $this[] = $element; - - return true; - } - - /** - * @return T - * - * @throws NoSuchElementException if this queue is empty. - */ - public function element(): mixed - { - return $this->peek() ?? throw new NoSuchElementException( - 'Can\'t return element from Queue. Queue is empty.', - ); - } - - public function offer(mixed $element): bool - { - try { - return $this->add($element); - } catch (InvalidArgumentException) { - return false; - } - } - - /** - * @return T | null - */ - public function peek(): mixed - { - $index = array_key_first($this->data); - - if ($index === null) { - return null; - } - - return $this[$index]; - } - - /** - * @return T | null - */ - public function poll(): mixed - { - $index = array_key_first($this->data); - - if ($index === null) { - return null; - } - - $head = $this[$index]; - unset($this[$index]); - - return $head; - } - - /** - * @return T - * - * @throws NoSuchElementException if this queue is empty. - */ - public function remove(): mixed - { - return $this->poll() ?? throw new NoSuchElementException( - 'Can\'t return element from Queue. Queue is empty.', - ); - } - - public function getType(): string - { - return $this->queueType; - } -} diff --git a/vendor/ramsey/collection/src/QueueInterface.php b/vendor/ramsey/collection/src/QueueInterface.php deleted file mode 100644 index f29ce43a..00000000 --- a/vendor/ramsey/collection/src/QueueInterface.php +++ /dev/null @@ -1,202 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection; - -use Ramsey\Collection\Exception\NoSuchElementException; -use RuntimeException; - -/** - * A queue is a collection in which the entities in the collection are kept in - * order. - * - * The principal operations on the queue are the addition of entities to the end - * (tail), also known as *enqueue*, and removal of entities from the front - * (head), also known as *dequeue*. This makes the queue a first-in-first-out - * (FIFO) data structure. - * - * Besides basic array operations, queues provide additional insertion, - * extraction, and inspection operations. Each of these methods exists in two - * forms: one throws an exception if the operation fails, the other returns a - * special value (either `null` or `false`, depending on the operation). The - * latter form of the insert operation is designed specifically for use with - * capacity-restricted `QueueInterface` implementations; in most - * implementations, insert operations cannot fail. - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - *
    Summary of QueueInterface methods
    Throws exceptionReturns special value
    Insertadd()offer()
    Removeremove()poll()
    Examineelement()peek()
    - * - * Queues typically, but do not necessarily, order elements in a FIFO - * (first-in-first-out) manner. Among the exceptions are priority queues, which - * order elements according to a supplied comparator, or the elements' natural - * ordering, and LIFO queues (or stacks) which order the elements LIFO - * (last-in-first-out). Whatever the ordering used, the head of the queue is - * that element which would be removed by a call to remove() or poll(). In a - * FIFO queue, all new elements are inserted at the tail of the queue. Other - * kinds of queues may use different placement rules. Every `QueueInterface` - * implementation must specify its ordering properties. - * - * The `offer()` method inserts an element if possible, otherwise returning - * `false`. This differs from the `add()` method, which can fail to add an - * element only by throwing an unchecked exception. The `offer()` method is - * designed for use when failure is a normal, rather than exceptional - * occurrence, for example, in fixed-capacity (or "bounded") queues. - * - * The `remove()` and `poll()` methods remove and return the head of the queue. - * Exactly which element is removed from the queue is a function of the queue's - * ordering policy, which differs from implementation to implementation. The - * `remove()` and `poll()` methods differ only in their behavior when the queue - * is empty: the `remove()` method throws an exception, while the `poll()` - * method returns `null`. - * - * The `element()` and `peek()` methods return, but do not remove, the head of - * the queue. - * - * `QueueInterface` implementations generally do not allow insertion of `null` - * elements, although some implementations do not prohibit insertion of `null`. - * Even in the implementations that permit it, `null` should not be inserted - * into a queue, as `null` is also used as a special return value by the - * `poll()` method to indicate that the queue contains no elements. - * - * @template T - * @extends ArrayInterface - */ -interface QueueInterface extends ArrayInterface -{ - /** - * Ensures that this queue contains the specified element (optional - * operation). - * - * Returns `true` if this queue changed as a result of the call. (Returns - * `false` if this queue does not permit duplicates and already contains the - * specified element.) - * - * Queues that support this operation may place limitations on what elements - * may be added to this queue. In particular, some queues will refuse to add - * `null` elements, and others will impose restrictions on the type of - * elements that may be added. Queue classes should clearly specify in their - * documentation any restrictions on what elements may be added. - * - * If a queue refuses to add a particular element for any reason other than - * that it already contains the element, it must throw an exception (rather - * than returning `false`). This preserves the invariant that a queue always - * contains the specified element after this call returns. - * - * @see self::offer() - * - * @param T $element The element to add to this queue. - * - * @return bool `true` if this queue changed as a result of the call. - * - * @throws RuntimeException if a queue refuses to add a particular element - * for any reason other than that it already contains the element. - * Implementations should use a more-specific exception that extends - * `\RuntimeException`. - */ - public function add(mixed $element): bool; - - /** - * Retrieves, but does not remove, the head of this queue. - * - * This method differs from `peek()` only in that it throws an exception if - * this queue is empty. - * - * @see self::peek() - * - * @return T the head of this queue. - * - * @throws NoSuchElementException if this queue is empty. - */ - public function element(): mixed; - - /** - * Inserts the specified element into this queue if it is possible to do so - * immediately without violating capacity restrictions. - * - * When using a capacity-restricted queue, this method is generally - * preferable to `add()`, which can fail to insert an element only by - * throwing an exception. - * - * @see self::add() - * - * @param T $element The element to add to this queue. - * - * @return bool `true` if the element was added to this queue, else `false`. - */ - public function offer(mixed $element): bool; - - /** - * Retrieves, but does not remove, the head of this queue, or returns `null` - * if this queue is empty. - * - * @see self::element() - * - * @return T | null the head of this queue, or `null` if this queue is empty. - */ - public function peek(): mixed; - - /** - * Retrieves and removes the head of this queue, or returns `null` - * if this queue is empty. - * - * @see self::remove() - * - * @return T | null the head of this queue, or `null` if this queue is empty. - */ - public function poll(): mixed; - - /** - * Retrieves and removes the head of this queue. - * - * This method differs from `poll()` only in that it throws an exception if - * this queue is empty. - * - * @see self::poll() - * - * @return T the head of this queue. - * - * @throws NoSuchElementException if this queue is empty. - */ - public function remove(): mixed; - - /** - * Returns the type associated with this queue. - */ - public function getType(): string; -} diff --git a/vendor/ramsey/collection/src/Set.php b/vendor/ramsey/collection/src/Set.php deleted file mode 100644 index aa93351c..00000000 --- a/vendor/ramsey/collection/src/Set.php +++ /dev/null @@ -1,59 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection; - -/** - * A set is a collection that contains no duplicate elements. - * - * Great care must be exercised if mutable objects are used as set elements. - * The behavior of a set is not specified if the value of an object is changed - * in a manner that affects equals comparisons while the object is an element in - * the set. - * - * Example usage: - * - * ``` php - * $foo = new \My\Foo(); - * $set = new Set(\My\Foo::class); - * - * $set->add($foo); // returns TRUE, the element doesn't exist - * $set->add($foo); // returns FALSE, the element already exists - * - * $bar = new \My\Foo(); - * $set->add($bar); // returns TRUE, $bar !== $foo - * ``` - * - * @template T - * @extends AbstractSet - */ -class Set extends AbstractSet -{ - /** - * Constructs a set object of the specified type, optionally with the - * specified data. - * - * @param string $setType The type or class name associated with this set. - * @param array $data The initial items to store in the set. - */ - public function __construct(private readonly string $setType, array $data = []) - { - parent::__construct($data); - } - - public function getType(): string - { - return $this->setType; - } -} diff --git a/vendor/ramsey/collection/src/Sort.php b/vendor/ramsey/collection/src/Sort.php deleted file mode 100644 index 0c3c1921..00000000 --- a/vendor/ramsey/collection/src/Sort.php +++ /dev/null @@ -1,31 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection; - -/** - * Collection sorting - */ -enum Sort: string -{ - /** - * Sort items in a collection in ascending order. - */ - case Ascending = 'asc'; - - /** - * Sort items in a collection in descending order. - */ - case Descending = 'desc'; -} diff --git a/vendor/ramsey/collection/src/Tool/TypeTrait.php b/vendor/ramsey/collection/src/Tool/TypeTrait.php deleted file mode 100644 index ac51b7f1..00000000 --- a/vendor/ramsey/collection/src/Tool/TypeTrait.php +++ /dev/null @@ -1,57 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection\Tool; - -use function is_array; -use function is_bool; -use function is_callable; -use function is_float; -use function is_int; -use function is_numeric; -use function is_object; -use function is_resource; -use function is_scalar; -use function is_string; - -/** - * Provides functionality to check values for specific types. - */ -trait TypeTrait -{ - /** - * Returns `true` if value is of the specified type. - * - * @param string $type The type to check the value against. - * @param mixed $value The value to check. - */ - protected function checkType(string $type, mixed $value): bool - { - return match ($type) { - 'array' => is_array($value), - 'bool', 'boolean' => is_bool($value), - 'callable' => is_callable($value), - 'float', 'double' => is_float($value), - 'int', 'integer' => is_int($value), - 'null' => $value === null, - 'numeric' => is_numeric($value), - 'object' => is_object($value), - 'resource' => is_resource($value), - 'scalar' => is_scalar($value), - 'string' => is_string($value), - 'mixed' => true, - default => $value instanceof $type, - }; - } -} diff --git a/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php b/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php deleted file mode 100644 index 44c42225..00000000 --- a/vendor/ramsey/collection/src/Tool/ValueExtractorTrait.php +++ /dev/null @@ -1,81 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection\Tool; - -use Ramsey\Collection\Exception\InvalidPropertyOrMethod; -use Ramsey\Collection\Exception\UnsupportedOperationException; - -use function is_array; -use function is_object; -use function method_exists; -use function property_exists; -use function sprintf; - -/** - * Provides functionality to extract the value of a property or method from an object. - */ -trait ValueExtractorTrait -{ - /** - * Extracts the value of the given property, method, or array key from the - * element. - * - * If `$propertyOrMethod` is `null`, we return the element as-is. - * - * @param mixed $element The element to extract the value from. - * @param string | null $propertyOrMethod The property or method for which the - * value should be extracted. - * - * @return mixed the value extracted from the specified property, method, - * or array key, or the element itself. - * - * @throws InvalidPropertyOrMethod - * @throws UnsupportedOperationException - */ - protected function extractValue(mixed $element, ?string $propertyOrMethod): mixed - { - if ($propertyOrMethod === null) { - return $element; - } - - if (!is_object($element) && !is_array($element)) { - throw new UnsupportedOperationException(sprintf( - 'The collection type "%s" does not support the $propertyOrMethod parameter', - $this->getType(), - )); - } - - if (is_array($element)) { - return $element[$propertyOrMethod] ?? throw new InvalidPropertyOrMethod(sprintf( - 'Key or index "%s" not found in collection elements', - $propertyOrMethod, - )); - } - - if (property_exists($element, $propertyOrMethod)) { - return $element->$propertyOrMethod; - } - - if (method_exists($element, $propertyOrMethod)) { - return $element->{$propertyOrMethod}(); - } - - throw new InvalidPropertyOrMethod(sprintf( - 'Method or property "%s" not defined in %s', - $propertyOrMethod, - $element::class, - )); - } -} diff --git a/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php b/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php deleted file mode 100644 index 64fc5fa4..00000000 --- a/vendor/ramsey/collection/src/Tool/ValueToStringTrait.php +++ /dev/null @@ -1,91 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Collection\Tool; - -use DateTimeInterface; - -use function assert; -use function get_resource_type; -use function is_array; -use function is_bool; -use function is_callable; -use function is_object; -use function is_resource; -use function is_scalar; - -/** - * Provides functionality to express a value as string - */ -trait ValueToStringTrait -{ - /** - * Returns a string representation of the value. - * - * - null value: `'NULL'` - * - boolean: `'TRUE'`, `'FALSE'` - * - array: `'Array'` - * - scalar: converted-value - * - resource: `'(type resource #number)'` - * - object with `__toString()`: result of `__toString()` - * - object DateTime: ISO 8601 date - * - object: `'(className Object)'` - * - anonymous function: same as object - * - * @param mixed $value the value to return as a string. - */ - protected function toolValueToString(mixed $value): string - { - // null - if ($value === null) { - return 'NULL'; - } - - // boolean constants - if (is_bool($value)) { - return $value ? 'TRUE' : 'FALSE'; - } - - // array - if (is_array($value)) { - return 'Array'; - } - - // scalar types (integer, float, string) - if (is_scalar($value)) { - return (string) $value; - } - - // resource - if (is_resource($value)) { - return '(' . get_resource_type($value) . ' resource #' . (int) $value . ')'; - } - - // From here, $value should be an object. - assert(is_object($value)); - - // __toString() is implemented - if (is_callable([$value, '__toString'])) { - return (string) $value->__toString(); - } - - // object of type \DateTime - if ($value instanceof DateTimeInterface) { - return $value->format('c'); - } - - // unknown type - return '(' . $value::class . ' Object)'; - } -} diff --git a/vendor/ramsey/uuid/LICENSE b/vendor/ramsey/uuid/LICENSE deleted file mode 100644 index 5b2acc5b..00000000 --- a/vendor/ramsey/uuid/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2012-2023 Ben Ramsey - -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/vendor/ramsey/uuid/README.md b/vendor/ramsey/uuid/README.md deleted file mode 100644 index 0db81495..00000000 --- a/vendor/ramsey/uuid/README.md +++ /dev/null @@ -1,83 +0,0 @@ -

    ramsey/uuid

    - -

    - A PHP library for generating and working with UUIDs. -

    - -

    - Source Code - Download Package - PHP Programming Language - Read License - Build Status - Codecov Code Coverage - Psalm Type Coverage -

    - -ramsey/uuid is a PHP library for generating and working with universally unique -identifiers (UUIDs). - -This project adheres to a [code of conduct](CODE_OF_CONDUCT.md). -By participating in this project and its community, you are expected to -uphold this code. - -Much inspiration for this library came from the [Java][javauuid] and -[Python][pyuuid] UUID libraries. - -## Installation - -The preferred method of installation is via [Composer][]. Run the following -command to install the package and add it as a requirement to your project's -`composer.json`: - -```bash -composer require ramsey/uuid -``` - -## Upgrading to Version 4 - -See the documentation for a thorough upgrade guide: - -* [Upgrading ramsey/uuid Version 3 to 4](https://uuid.ramsey.dev/en/stable/upgrading/3-to-4.html) - -## Documentation - -Please see for documentation, tips, examples, and -frequently asked questions. - -## Contributing - -Contributions are welcome! To contribute, please familiarize yourself with -[CONTRIBUTING.md](CONTRIBUTING.md). - -## Coordinated Disclosure - -Keeping user information safe and secure is a top priority, and we welcome the -contribution of external security researchers. If you believe you've found a -security issue in software that is maintained in this repository, please read -[SECURITY.md][] for instructions on submitting a vulnerability report. - -## ramsey/uuid for Enterprise - -Available as part of the Tidelift Subscription. - -The maintainers of ramsey/uuid and thousands of other packages are working with -Tidelift to deliver commercial support and maintenance for the open source -packages you use to build your applications. Save time, reduce risk, and improve -code health, while paying the maintainers of the exact packages you use. -[Learn more.](https://tidelift.com/subscription/pkg/packagist-ramsey-uuid?utm_source=undefined&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) - -## Copyright and License - -The ramsey/uuid library is copyright © [Ben Ramsey](https://benramsey.com/) and -licensed for use under the MIT License (MIT). Please see [LICENSE][] for more -information. - -[rfc4122]: http://tools.ietf.org/html/rfc4122 -[conduct]: https://github.com/ramsey/uuid/blob/4.x/CODE_OF_CONDUCT.md -[javauuid]: http://docs.oracle.com/javase/6/docs/api/java/util/UUID.html -[pyuuid]: http://docs.python.org/3/library/uuid.html -[composer]: http://getcomposer.org/ -[contributing.md]: https://github.com/ramsey/uuid/blob/4.x/CONTRIBUTING.md -[security.md]: https://github.com/ramsey/uuid/blob/4.x/SECURITY.md -[license]: https://github.com/ramsey/uuid/blob/4.x/LICENSE diff --git a/vendor/ramsey/uuid/composer.json b/vendor/ramsey/uuid/composer.json deleted file mode 100644 index 9ea4e06b..00000000 --- a/vendor/ramsey/uuid/composer.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "name": "ramsey/uuid", - "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", - "license": "MIT", - "type": "library", - "keywords": [ - "uuid", - "identifier", - "guid" - ], - "require": { - "php": "^8.0", - "ext-json": "*", - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", - "ramsey/collection": "^1.2 || ^2.0" - }, - "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" - }, - "replace": { - "rhumsaa/uuid": "self.version" - }, - "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." - }, - "minimum-stability": "dev", - "prefer-stable": true, - "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, - "files": [ - "src/functions.php" - ] - }, - "autoload-dev": { - "psr-4": { - "Ramsey\\Uuid\\Benchmark\\": "tests/benchmark/", - "Ramsey\\Uuid\\StaticAnalysis\\": "tests/static-analysis/", - "Ramsey\\Uuid\\Test\\": "tests/" - } - }, - "config": { - "allow-plugins": { - "captainhook/plugin-composer": true, - "ergebnis/composer-normalize": true, - "phpstan/extension-installer": true, - "dealerdirect/phpcodesniffer-composer-installer": true, - "ramsey/composer-repl": true - }, - "sort-packages": true - }, - "extra": { - "captainhook": { - "force-install": true - } - }, - "scripts": { - "analyze": [ - "@phpstan", - "@psalm" - ], - "build:clean": "git clean -fX build/", - "lint": "parallel-lint src tests", - "lint:paths": "parallel-lint", - "phpbench": "phpbench run", - "phpcbf": "phpcbf -vpw --cache=build/cache/phpcs.cache", - "phpcs": "phpcs --cache=build/cache/phpcs.cache", - "phpstan": [ - "phpstan analyse --no-progress --memory-limit=1G", - "phpstan analyse -c phpstan-tests.neon --no-progress --memory-limit=1G" - ], - "phpunit": "phpunit --verbose --colors=always", - "phpunit-coverage": "phpunit --verbose --colors=always --coverage-html build/coverage", - "psalm": "psalm --show-info=false --config=psalm.xml", - "test": [ - "@lint", - "@phpbench", - "@phpcs", - "@phpstan", - "@psalm", - "@phpunit" - ] - } -} diff --git a/vendor/ramsey/uuid/src/BinaryUtils.php b/vendor/ramsey/uuid/src/BinaryUtils.php deleted file mode 100644 index fb8ba9ad..00000000 --- a/vendor/ramsey/uuid/src/BinaryUtils.php +++ /dev/null @@ -1,63 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid; - -/** - * Provides binary math utilities - */ -class BinaryUtils -{ - /** - * Applies the RFC 4122 variant field to the 16-bit clock sequence - * - * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant - * - * @param int $clockSeq The 16-bit clock sequence value before the RFC 4122 - * variant is applied - * - * @return int The 16-bit clock sequence multiplexed with the UUID variant - * - * @psalm-pure - */ - public static function applyVariant(int $clockSeq): int - { - $clockSeq = $clockSeq & 0x3fff; - $clockSeq |= 0x8000; - - return $clockSeq; - } - - /** - * Applies the RFC 4122 version number to the 16-bit `time_hi_and_version` field - * - * @link http://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version - * - * @param int $timeHi The value of the 16-bit `time_hi_and_version` field - * before the RFC 4122 version is applied - * @param int $version The RFC 4122 version to apply to the `time_hi` field - * - * @return int The 16-bit time_hi field of the timestamp multiplexed with - * the UUID version number - * - * @psalm-pure - */ - public static function applyVersion(int $timeHi, int $version): int - { - $timeHi = $timeHi & 0x0fff; - $timeHi |= $version << 12; - - return $timeHi; - } -} diff --git a/vendor/ramsey/uuid/src/Builder/BuilderCollection.php b/vendor/ramsey/uuid/src/Builder/BuilderCollection.php deleted file mode 100644 index 9df3110f..00000000 --- a/vendor/ramsey/uuid/src/Builder/BuilderCollection.php +++ /dev/null @@ -1,85 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Builder; - -use Ramsey\Collection\AbstractCollection; -use Ramsey\Uuid\Converter\Number\GenericNumberConverter; -use Ramsey\Uuid\Converter\Time\GenericTimeConverter; -use Ramsey\Uuid\Converter\Time\PhpTimeConverter; -use Ramsey\Uuid\Guid\GuidBuilder; -use Ramsey\Uuid\Math\BrickMathCalculator; -use Ramsey\Uuid\Nonstandard\UuidBuilder as NonstandardUuidBuilder; -use Ramsey\Uuid\Rfc4122\UuidBuilder as Rfc4122UuidBuilder; -use Traversable; - -/** - * A collection of UuidBuilderInterface objects - * - * @deprecated this class has been deprecated, and will be removed in 5.0.0. The use-case for this class comes from - * a pre-`phpstan/phpstan` and pre-`vimeo/psalm` ecosystem, in which type safety had to be mostly enforced - * at runtime: that is no longer necessary, now that you can safely verify your code to be correct, and use - * more generic types like `iterable` instead. - * - * @extends AbstractCollection - */ -class BuilderCollection extends AbstractCollection -{ - public function getType(): string - { - return UuidBuilderInterface::class; - } - - /** - * @psalm-mutation-free - * @psalm-suppress ImpureMethodCall - * @psalm-suppress InvalidTemplateParam - */ - public function getIterator(): Traversable - { - return parent::getIterator(); - } - - /** - * Re-constructs the object from its serialized form - * - * @param string $serialized The serialized PHP string to unserialize into - * a UuidInterface instance - * - * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint - * @psalm-suppress RedundantConditionGivenDocblockType - */ - public function unserialize($serialized): void - { - /** @var array $data */ - $data = unserialize($serialized, [ - 'allowed_classes' => [ - BrickMathCalculator::class, - GenericNumberConverter::class, - GenericTimeConverter::class, - GuidBuilder::class, - NonstandardUuidBuilder::class, - PhpTimeConverter::class, - Rfc4122UuidBuilder::class, - ], - ]); - - $this->data = array_filter( - $data, - function ($unserialized): bool { - return $unserialized instanceof UuidBuilderInterface; - } - ); - } -} diff --git a/vendor/ramsey/uuid/src/Builder/DefaultUuidBuilder.php b/vendor/ramsey/uuid/src/Builder/DefaultUuidBuilder.php deleted file mode 100644 index 7c4a6f83..00000000 --- a/vendor/ramsey/uuid/src/Builder/DefaultUuidBuilder.php +++ /dev/null @@ -1,26 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Builder; - -use Ramsey\Uuid\Rfc4122\UuidBuilder as Rfc4122UuidBuilder; - -/** - * @deprecated Transition to {@see Rfc4122UuidBuilder}. - * - * @psalm-immutable - */ -class DefaultUuidBuilder extends Rfc4122UuidBuilder -{ -} diff --git a/vendor/ramsey/uuid/src/Builder/DegradedUuidBuilder.php b/vendor/ramsey/uuid/src/Builder/DegradedUuidBuilder.php deleted file mode 100644 index 20b38421..00000000 --- a/vendor/ramsey/uuid/src/Builder/DegradedUuidBuilder.php +++ /dev/null @@ -1,67 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Builder; - -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\Time\DegradedTimeConverter; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\DegradedUuid; -use Ramsey\Uuid\Rfc4122\Fields as Rfc4122Fields; -use Ramsey\Uuid\UuidInterface; - -/** - * @deprecated DegradedUuid instances are no longer necessary to support 32-bit - * systems. Transition to {@see DefaultUuidBuilder}. - * - * @psalm-immutable - */ -class DegradedUuidBuilder implements UuidBuilderInterface -{ - private TimeConverterInterface $timeConverter; - - /** - * @param NumberConverterInterface $numberConverter The number converter to - * use when constructing the DegradedUuid - * @param TimeConverterInterface|null $timeConverter The time converter to use - * for converting timestamps extracted from a UUID to Unix timestamps - */ - public function __construct( - private NumberConverterInterface $numberConverter, - ?TimeConverterInterface $timeConverter = null - ) { - $this->timeConverter = $timeConverter ?: new DegradedTimeConverter(); - } - - /** - * Builds and returns a DegradedUuid - * - * @param CodecInterface $codec The codec to use for building this DegradedUuid instance - * @param string $bytes The byte string from which to construct a UUID - * - * @return DegradedUuid The DegradedUuidBuild returns an instance of Ramsey\Uuid\DegradedUuid - * - * @psalm-pure - */ - public function build(CodecInterface $codec, string $bytes): UuidInterface - { - return new DegradedUuid( - new Rfc4122Fields($bytes), - $this->numberConverter, - $codec, - $this->timeConverter - ); - } -} diff --git a/vendor/ramsey/uuid/src/Builder/FallbackBuilder.php b/vendor/ramsey/uuid/src/Builder/FallbackBuilder.php deleted file mode 100644 index ba5f31fb..00000000 --- a/vendor/ramsey/uuid/src/Builder/FallbackBuilder.php +++ /dev/null @@ -1,68 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Builder; - -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Exception\BuilderNotFoundException; -use Ramsey\Uuid\Exception\UnableToBuildUuidException; -use Ramsey\Uuid\UuidInterface; - -/** - * FallbackBuilder builds a UUID by stepping through a list of UUID builders - * until a UUID can be constructed without exceptions - * - * @psalm-immutable - */ -class FallbackBuilder implements UuidBuilderInterface -{ - /** - * @param iterable $builders An array of UUID builders - */ - public function __construct(private iterable $builders) - { - } - - /** - * Builds and returns a UuidInterface instance using the first builder that - * succeeds - * - * @param CodecInterface $codec The codec to use for building this instance - * @param string $bytes The byte string from which to construct a UUID - * - * @return UuidInterface an instance of a UUID object - * - * @psalm-pure - */ - public function build(CodecInterface $codec, string $bytes): UuidInterface - { - $lastBuilderException = null; - - foreach ($this->builders as $builder) { - try { - return $builder->build($codec, $bytes); - } catch (UnableToBuildUuidException $exception) { - $lastBuilderException = $exception; - - continue; - } - } - - throw new BuilderNotFoundException( - 'Could not find a suitable builder for the provided codec and fields', - 0, - $lastBuilderException - ); - } -} diff --git a/vendor/ramsey/uuid/src/Builder/UuidBuilderInterface.php b/vendor/ramsey/uuid/src/Builder/UuidBuilderInterface.php deleted file mode 100644 index 8e58b2b4..00000000 --- a/vendor/ramsey/uuid/src/Builder/UuidBuilderInterface.php +++ /dev/null @@ -1,39 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Builder; - -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\UuidInterface; - -/** - * A UUID builder builds instances of UuidInterface - * - * @psalm-immutable - */ -interface UuidBuilderInterface -{ - /** - * Builds and returns a UuidInterface - * - * @param CodecInterface $codec The codec to use for building this UuidInterface instance - * @param string $bytes The byte string from which to construct a UUID - * - * @return UuidInterface Implementations may choose to return more specific - * instances of UUIDs that implement UuidInterface - * - * @psalm-pure - */ - public function build(CodecInterface $codec, string $bytes): UuidInterface; -} diff --git a/vendor/ramsey/uuid/src/Codec/CodecInterface.php b/vendor/ramsey/uuid/src/Codec/CodecInterface.php deleted file mode 100644 index 85f8a7e9..00000000 --- a/vendor/ramsey/uuid/src/Codec/CodecInterface.php +++ /dev/null @@ -1,71 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Codec; - -use Ramsey\Uuid\UuidInterface; - -/** - * A codec encodes and decodes a UUID according to defined rules - * - * @psalm-immutable - */ -interface CodecInterface -{ - /** - * Returns a hexadecimal string representation of a UuidInterface - * - * @param UuidInterface $uuid The UUID for which to create a hexadecimal - * string representation - * - * @return string Hexadecimal string representation of a UUID - * - * @psalm-return non-empty-string - */ - public function encode(UuidInterface $uuid): string; - - /** - * Returns a binary string representation of a UuidInterface - * - * @param UuidInterface $uuid The UUID for which to create a binary string - * representation - * - * @return string Binary string representation of a UUID - * - * @psalm-return non-empty-string - */ - public function encodeBinary(UuidInterface $uuid): string; - - /** - * Returns a UuidInterface derived from a hexadecimal string representation - * - * @param string $encodedUuid The hexadecimal string representation to - * convert into a UuidInterface instance - * - * @return UuidInterface An instance of a UUID decoded from a hexadecimal - * string representation - */ - public function decode(string $encodedUuid): UuidInterface; - - /** - * Returns a UuidInterface derived from a binary string representation - * - * @param string $bytes The binary string representation to convert into a - * UuidInterface instance - * - * @return UuidInterface An instance of a UUID decoded from a binary string - * representation - */ - public function decodeBytes(string $bytes): UuidInterface; -} diff --git a/vendor/ramsey/uuid/src/Codec/GuidStringCodec.php b/vendor/ramsey/uuid/src/Codec/GuidStringCodec.php deleted file mode 100644 index 04872e0b..00000000 --- a/vendor/ramsey/uuid/src/Codec/GuidStringCodec.php +++ /dev/null @@ -1,76 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Codec; - -use Ramsey\Uuid\Guid\Guid; -use Ramsey\Uuid\UuidInterface; - -use function bin2hex; -use function sprintf; -use function substr; - -/** - * GuidStringCodec encodes and decodes globally unique identifiers (GUID) - * - * @see Guid - * - * @psalm-immutable - */ -class GuidStringCodec extends StringCodec -{ - public function encode(UuidInterface $uuid): string - { - $hex = bin2hex($uuid->getFields()->getBytes()); - - /** @var non-empty-string */ - return sprintf( - '%02s%02s%02s%02s-%02s%02s-%02s%02s-%04s-%012s', - substr($hex, 6, 2), - substr($hex, 4, 2), - substr($hex, 2, 2), - substr($hex, 0, 2), - substr($hex, 10, 2), - substr($hex, 8, 2), - substr($hex, 14, 2), - substr($hex, 12, 2), - substr($hex, 16, 4), - substr($hex, 20), - ); - } - - public function decode(string $encodedUuid): UuidInterface - { - $bytes = $this->getBytes($encodedUuid); - - return $this->getBuilder()->build($this, $this->swapBytes($bytes)); - } - - public function decodeBytes(string $bytes): UuidInterface - { - // Specifically call parent::decode to preserve correct byte order - return parent::decode(bin2hex($bytes)); - } - - /** - * Swaps bytes according to the GUID rules - */ - private function swapBytes(string $bytes): string - { - return $bytes[3] . $bytes[2] . $bytes[1] . $bytes[0] - . $bytes[5] . $bytes[4] - . $bytes[7] . $bytes[6] - . substr($bytes, 8); - } -} diff --git a/vendor/ramsey/uuid/src/Codec/OrderedTimeCodec.php b/vendor/ramsey/uuid/src/Codec/OrderedTimeCodec.php deleted file mode 100644 index 0798ebc4..00000000 --- a/vendor/ramsey/uuid/src/Codec/OrderedTimeCodec.php +++ /dev/null @@ -1,113 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Codec; - -use Ramsey\Uuid\Exception\InvalidArgumentException; -use Ramsey\Uuid\Exception\UnsupportedOperationException; -use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; -use Ramsey\Uuid\Uuid; -use Ramsey\Uuid\UuidInterface; - -use function strlen; -use function substr; - -/** - * OrderedTimeCodec encodes and decodes a UUID, optimizing the byte order for - * more efficient storage - * - * For binary representations of version 1 UUID, this codec may be used to - * reorganize the time fields, making the UUID closer to sequential when storing - * the bytes. According to Percona, this optimization can improve database - * INSERTs and SELECTs using the UUID column as a key. - * - * The string representation of the UUID will remain unchanged. Only the binary - * representation is reordered. - * - * **PLEASE NOTE:** Binary representations of UUIDs encoded with this codec must - * be decoded with this codec. Decoding using another codec can result in - * malformed UUIDs. - * - * @link https://www.percona.com/blog/2014/12/19/store-uuid-optimized-way/ Storing UUID Values in MySQL - * - * @psalm-immutable - */ -class OrderedTimeCodec extends StringCodec -{ - /** - * Returns a binary string representation of a UUID, with the timestamp - * fields rearranged for optimized storage - * - * @inheritDoc - * @psalm-return non-empty-string - * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty - * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty - */ - public function encodeBinary(UuidInterface $uuid): string - { - if ( - !($uuid->getFields() instanceof Rfc4122FieldsInterface) - || $uuid->getFields()->getVersion() !== Uuid::UUID_TYPE_TIME - ) { - throw new InvalidArgumentException( - 'Expected RFC 4122 version 1 (time-based) UUID' - ); - } - - $bytes = $uuid->getFields()->getBytes(); - - /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ - return $bytes[6] . $bytes[7] - . $bytes[4] . $bytes[5] - . $bytes[0] . $bytes[1] . $bytes[2] . $bytes[3] - . substr($bytes, 8); - } - - /** - * Returns a UuidInterface derived from an ordered-time binary string - * representation - * - * @throws InvalidArgumentException if $bytes is an invalid length - * - * @inheritDoc - */ - public function decodeBytes(string $bytes): UuidInterface - { - if (strlen($bytes) !== 16) { - throw new InvalidArgumentException( - '$bytes string should contain 16 characters.' - ); - } - - // Rearrange the bytes to their original order. - $rearrangedBytes = $bytes[4] . $bytes[5] . $bytes[6] . $bytes[7] - . $bytes[2] . $bytes[3] - . $bytes[0] . $bytes[1] - . substr($bytes, 8); - - $uuid = parent::decodeBytes($rearrangedBytes); - - if ( - !($uuid->getFields() instanceof Rfc4122FieldsInterface) - || $uuid->getFields()->getVersion() !== Uuid::UUID_TYPE_TIME - ) { - throw new UnsupportedOperationException( - 'Attempting to decode a non-time-based UUID using ' - . 'OrderedTimeCodec' - ); - } - - return $uuid; - } -} diff --git a/vendor/ramsey/uuid/src/Codec/StringCodec.php b/vendor/ramsey/uuid/src/Codec/StringCodec.php deleted file mode 100644 index 95f38d2e..00000000 --- a/vendor/ramsey/uuid/src/Codec/StringCodec.php +++ /dev/null @@ -1,131 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Codec; - -use Ramsey\Uuid\Builder\UuidBuilderInterface; -use Ramsey\Uuid\Exception\InvalidArgumentException; -use Ramsey\Uuid\Exception\InvalidUuidStringException; -use Ramsey\Uuid\Uuid; -use Ramsey\Uuid\UuidInterface; - -use function bin2hex; -use function hex2bin; -use function implode; -use function sprintf; -use function str_replace; -use function strlen; -use function substr; - -/** - * StringCodec encodes and decodes RFC 4122 UUIDs - * - * @link http://tools.ietf.org/html/rfc4122 - * - * @psalm-immutable - */ -class StringCodec implements CodecInterface -{ - /** - * Constructs a StringCodec - * - * @param UuidBuilderInterface $builder The builder to use when encoding UUIDs - */ - public function __construct(private UuidBuilderInterface $builder) - { - } - - public function encode(UuidInterface $uuid): string - { - $hex = bin2hex($uuid->getFields()->getBytes()); - - /** @var non-empty-string */ - return sprintf( - '%08s-%04s-%04s-%04s-%012s', - substr($hex, 0, 8), - substr($hex, 8, 4), - substr($hex, 12, 4), - substr($hex, 16, 4), - substr($hex, 20), - ); - } - - /** - * @psalm-return non-empty-string - * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty - * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty - */ - public function encodeBinary(UuidInterface $uuid): string - { - /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ - return $uuid->getFields()->getBytes(); - } - - /** - * @throws InvalidUuidStringException - * - * @inheritDoc - */ - public function decode(string $encodedUuid): UuidInterface - { - return $this->builder->build($this, $this->getBytes($encodedUuid)); - } - - public function decodeBytes(string $bytes): UuidInterface - { - if (strlen($bytes) !== 16) { - throw new InvalidArgumentException( - '$bytes string should contain 16 characters.' - ); - } - - return $this->builder->build($this, $bytes); - } - - /** - * Returns the UUID builder - */ - protected function getBuilder(): UuidBuilderInterface - { - return $this->builder; - } - - /** - * Returns a byte string of the UUID - */ - protected function getBytes(string $encodedUuid): string - { - $parsedUuid = str_replace( - ['urn:', 'uuid:', 'URN:', 'UUID:', '{', '}', '-'], - '', - $encodedUuid - ); - - $components = [ - substr($parsedUuid, 0, 8), - substr($parsedUuid, 8, 4), - substr($parsedUuid, 12, 4), - substr($parsedUuid, 16, 4), - substr($parsedUuid, 20), - ]; - - if (!Uuid::isValid(implode('-', $components))) { - throw new InvalidUuidStringException( - 'Invalid UUID string: ' . $encodedUuid - ); - } - - return (string) hex2bin($parsedUuid); - } -} diff --git a/vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php b/vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php deleted file mode 100644 index 0e0042d0..00000000 --- a/vendor/ramsey/uuid/src/Codec/TimestampFirstCombCodec.php +++ /dev/null @@ -1,113 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Codec; - -use Ramsey\Uuid\Exception\InvalidUuidStringException; -use Ramsey\Uuid\UuidInterface; - -use function bin2hex; -use function sprintf; -use function substr; -use function substr_replace; - -/** - * TimestampFirstCombCodec encodes and decodes COMBs, with the timestamp as the - * first 48 bits - * - * In contrast with the TimestampLastCombCodec, the TimestampFirstCombCodec - * adds the timestamp to the first 48 bits of the COMB. To generate a - * timestamp-first COMB, set the TimestampFirstCombCodec as the codec, along - * with the CombGenerator as the random generator. - * - * ``` php - * $factory = new UuidFactory(); - * - * $factory->setCodec(new TimestampFirstCombCodec($factory->getUuidBuilder())); - * - * $factory->setRandomGenerator(new CombGenerator( - * $factory->getRandomGenerator(), - * $factory->getNumberConverter() - * )); - * - * $timestampFirstComb = $factory->uuid4(); - * ``` - * - * @link https://www.informit.com/articles/printerfriendly/25862 The Cost of GUIDs as Primary Keys - * - * @psalm-immutable - */ -class TimestampFirstCombCodec extends StringCodec -{ - /** - * @psalm-return non-empty-string - * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty - * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty - */ - public function encode(UuidInterface $uuid): string - { - $bytes = $this->swapBytes($uuid->getFields()->getBytes()); - - return sprintf( - '%08s-%04s-%04s-%04s-%012s', - bin2hex(substr($bytes, 0, 4)), - bin2hex(substr($bytes, 4, 2)), - bin2hex(substr($bytes, 6, 2)), - bin2hex(substr($bytes, 8, 2)), - bin2hex(substr($bytes, 10)) - ); - } - - /** - * @psalm-return non-empty-string - * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty - * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty - */ - public function encodeBinary(UuidInterface $uuid): string - { - /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ - return $this->swapBytes($uuid->getFields()->getBytes()); - } - - /** - * @throws InvalidUuidStringException - * - * @inheritDoc - */ - public function decode(string $encodedUuid): UuidInterface - { - $bytes = $this->getBytes($encodedUuid); - - return $this->getBuilder()->build($this, $this->swapBytes($bytes)); - } - - public function decodeBytes(string $bytes): UuidInterface - { - return $this->getBuilder()->build($this, $this->swapBytes($bytes)); - } - - /** - * Swaps bytes according to the timestamp-first COMB rules - */ - private function swapBytes(string $bytes): string - { - $first48Bits = substr($bytes, 0, 6); - $last48Bits = substr($bytes, -6); - - $bytes = substr_replace($bytes, $last48Bits, 0, 6); - $bytes = substr_replace($bytes, $first48Bits, -6); - - return $bytes; - } -} diff --git a/vendor/ramsey/uuid/src/Codec/TimestampLastCombCodec.php b/vendor/ramsey/uuid/src/Codec/TimestampLastCombCodec.php deleted file mode 100644 index 4856deae..00000000 --- a/vendor/ramsey/uuid/src/Codec/TimestampLastCombCodec.php +++ /dev/null @@ -1,51 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Codec; - -/** - * TimestampLastCombCodec encodes and decodes COMBs, with the timestamp as the - * last 48 bits - * - * The CombGenerator when used with the StringCodec (and, by proxy, the - * TimestampLastCombCodec) adds the timestamp to the last 48 bits of the COMB. - * The TimestampLastCombCodec is provided for the sake of consistency. In - * practice, it is identical to the standard StringCodec but, it may be used - * with the CombGenerator for additional context when reading code. - * - * Consider the following code. By default, the codec used by UuidFactory is the - * StringCodec, but here, we explicitly set the TimestampLastCombCodec. It is - * redundant, but it is clear that we intend this COMB to be generated with the - * timestamp appearing at the end. - * - * ``` php - * $factory = new UuidFactory(); - * - * $factory->setCodec(new TimestampLastCombCodec($factory->getUuidBuilder())); - * - * $factory->setRandomGenerator(new CombGenerator( - * $factory->getRandomGenerator(), - * $factory->getNumberConverter() - * )); - * - * $timestampLastComb = $factory->uuid4(); - * ``` - * - * @link https://www.informit.com/articles/printerfriendly/25862 The Cost of GUIDs as Primary Keys - * - * @psalm-immutable - */ -class TimestampLastCombCodec extends StringCodec -{ -} diff --git a/vendor/ramsey/uuid/src/Converter/Number/BigNumberConverter.php b/vendor/ramsey/uuid/src/Converter/Number/BigNumberConverter.php deleted file mode 100644 index 99b88b3b..00000000 --- a/vendor/ramsey/uuid/src/Converter/Number/BigNumberConverter.php +++ /dev/null @@ -1,54 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Converter\Number; - -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Math\BrickMathCalculator; - -/** - * Previously used to integrate moontoast/math as a bignum arithmetic library, - * BigNumberConverter is deprecated in favor of GenericNumberConverter - * - * @deprecated Transition to {@see GenericNumberConverter}. - * - * @psalm-immutable - */ -class BigNumberConverter implements NumberConverterInterface -{ - private NumberConverterInterface $converter; - - public function __construct() - { - $this->converter = new GenericNumberConverter(new BrickMathCalculator()); - } - - /** - * @inheritDoc - * @psalm-pure - */ - public function fromHex(string $hex): string - { - return $this->converter->fromHex($hex); - } - - /** - * @inheritDoc - * @psalm-pure - */ - public function toHex(string $number): string - { - return $this->converter->toHex($number); - } -} diff --git a/vendor/ramsey/uuid/src/Converter/Number/DegradedNumberConverter.php b/vendor/ramsey/uuid/src/Converter/Number/DegradedNumberConverter.php deleted file mode 100644 index c9cfa686..00000000 --- a/vendor/ramsey/uuid/src/Converter/Number/DegradedNumberConverter.php +++ /dev/null @@ -1,25 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Converter\Number; - -/** - * @deprecated DegradedNumberConverter is no longer necessary for converting - * numbers on 32-bit systems. Transition to {@see GenericNumberConverter}. - * - * @psalm-immutable - */ -class DegradedNumberConverter extends BigNumberConverter -{ -} diff --git a/vendor/ramsey/uuid/src/Converter/Number/GenericNumberConverter.php b/vendor/ramsey/uuid/src/Converter/Number/GenericNumberConverter.php deleted file mode 100644 index 043c3c43..00000000 --- a/vendor/ramsey/uuid/src/Converter/Number/GenericNumberConverter.php +++ /dev/null @@ -1,57 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Converter\Number; - -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Math\CalculatorInterface; -use Ramsey\Uuid\Type\Integer as IntegerObject; - -/** - * GenericNumberConverter uses the provided calculator to convert decimal - * numbers to and from hexadecimal values - * - * @psalm-immutable - */ -class GenericNumberConverter implements NumberConverterInterface -{ - public function __construct(private CalculatorInterface $calculator) - { - } - - /** - * @inheritDoc - * @psalm-pure - * @psalm-return numeric-string - * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty - * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty - */ - public function fromHex(string $hex): string - { - return $this->calculator->fromBase($hex, 16)->toString(); - } - - /** - * @inheritDoc - * @psalm-pure - * @psalm-return non-empty-string - * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty - * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty - */ - public function toHex(string $number): string - { - /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ - return $this->calculator->toBase(new IntegerObject($number), 16); - } -} diff --git a/vendor/ramsey/uuid/src/Converter/NumberConverterInterface.php b/vendor/ramsey/uuid/src/Converter/NumberConverterInterface.php deleted file mode 100644 index b33ec31f..00000000 --- a/vendor/ramsey/uuid/src/Converter/NumberConverterInterface.php +++ /dev/null @@ -1,57 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Converter; - -/** - * A number converter converts UUIDs from hexadecimal characters into - * representations of integers and vice versa - * - * @psalm-immutable - */ -interface NumberConverterInterface -{ - /** - * Converts a hexadecimal number into an string integer representation of - * the number - * - * The integer representation returned is a string representation of the - * integer, to accommodate unsigned integers greater than PHP_INT_MAX. - * - * @param string $hex The hexadecimal string representation to convert - * - * @return string String representation of an integer - * - * @psalm-return numeric-string - * - * @psalm-pure - */ - public function fromHex(string $hex): string; - - /** - * Converts a string integer representation into a hexadecimal string - * representation of the number - * - * @param string $number A string integer representation to convert; this - * must be a numeric string to accommodate unsigned integers greater - * than PHP_INT_MAX. - * - * @return string Hexadecimal string - * - * @psalm-return non-empty-string - * - * @psalm-pure - */ - public function toHex(string $number): string; -} diff --git a/vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php b/vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php deleted file mode 100644 index b6bca9ee..00000000 --- a/vendor/ramsey/uuid/src/Converter/Time/BigNumberTimeConverter.php +++ /dev/null @@ -1,48 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Converter\Time; - -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Math\BrickMathCalculator; -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Type\Time; - -/** - * Previously used to integrate moontoast/math as a bignum arithmetic library, - * BigNumberTimeConverter is deprecated in favor of GenericTimeConverter - * - * @deprecated Transition to {@see GenericTimeConverter}. - * - * @psalm-immutable - */ -class BigNumberTimeConverter implements TimeConverterInterface -{ - private TimeConverterInterface $converter; - - public function __construct() - { - $this->converter = new GenericTimeConverter(new BrickMathCalculator()); - } - - public function calculateTime(string $seconds, string $microseconds): Hexadecimal - { - return $this->converter->calculateTime($seconds, $microseconds); - } - - public function convertTime(Hexadecimal $uuidTimestamp): Time - { - return $this->converter->convertTime($uuidTimestamp); - } -} diff --git a/vendor/ramsey/uuid/src/Converter/Time/DegradedTimeConverter.php b/vendor/ramsey/uuid/src/Converter/Time/DegradedTimeConverter.php deleted file mode 100644 index cdc28752..00000000 --- a/vendor/ramsey/uuid/src/Converter/Time/DegradedTimeConverter.php +++ /dev/null @@ -1,25 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Converter\Time; - -/** - * @deprecated DegradedTimeConverter is no longer necessary for converting - * time on 32-bit systems. Transition to {@see GenericTimeConverter}. - * - * @psalm-immutable - */ -class DegradedTimeConverter extends BigNumberTimeConverter -{ -} diff --git a/vendor/ramsey/uuid/src/Converter/Time/GenericTimeConverter.php b/vendor/ramsey/uuid/src/Converter/Time/GenericTimeConverter.php deleted file mode 100644 index f6b60abb..00000000 --- a/vendor/ramsey/uuid/src/Converter/Time/GenericTimeConverter.php +++ /dev/null @@ -1,118 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Converter\Time; - -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Math\CalculatorInterface; -use Ramsey\Uuid\Math\RoundingMode; -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Type\Integer as IntegerObject; -use Ramsey\Uuid\Type\Time; - -use function explode; -use function str_pad; - -use const STR_PAD_LEFT; - -/** - * GenericTimeConverter uses the provided calculator to calculate and convert - * time values - * - * @psalm-immutable - */ -class GenericTimeConverter implements TimeConverterInterface -{ - /** - * The number of 100-nanosecond intervals from the Gregorian calendar epoch - * to the Unix epoch. - */ - private const GREGORIAN_TO_UNIX_INTERVALS = '122192928000000000'; - - /** - * The number of 100-nanosecond intervals in one second. - */ - private const SECOND_INTERVALS = '10000000'; - - /** - * The number of 100-nanosecond intervals in one microsecond. - */ - private const MICROSECOND_INTERVALS = '10'; - - public function __construct(private CalculatorInterface $calculator) - { - } - - public function calculateTime(string $seconds, string $microseconds): Hexadecimal - { - $timestamp = new Time($seconds, $microseconds); - - // Convert the seconds into a count of 100-nanosecond intervals. - $sec = $this->calculator->multiply( - $timestamp->getSeconds(), - new IntegerObject(self::SECOND_INTERVALS) - ); - - // Convert the microseconds into a count of 100-nanosecond intervals. - $usec = $this->calculator->multiply( - $timestamp->getMicroseconds(), - new IntegerObject(self::MICROSECOND_INTERVALS) - ); - - // Combine the seconds and microseconds intervals and add the count of - // 100-nanosecond intervals from the Gregorian calendar epoch to the - // Unix epoch. This gives us the correct count of 100-nanosecond - // intervals since the Gregorian calendar epoch for the given seconds - // and microseconds. - /** @var IntegerObject $uuidTime */ - $uuidTime = $this->calculator->add( - $sec, - $usec, - new IntegerObject(self::GREGORIAN_TO_UNIX_INTERVALS) - ); - - $uuidTimeHex = str_pad( - $this->calculator->toHexadecimal($uuidTime)->toString(), - 16, - '0', - STR_PAD_LEFT - ); - - return new Hexadecimal($uuidTimeHex); - } - - public function convertTime(Hexadecimal $uuidTimestamp): Time - { - // From the total, subtract the number of 100-nanosecond intervals from - // the Gregorian calendar epoch to the Unix epoch. This gives us the - // number of 100-nanosecond intervals from the Unix epoch, which also - // includes the microtime. - $epochNanoseconds = $this->calculator->subtract( - $this->calculator->toInteger($uuidTimestamp), - new IntegerObject(self::GREGORIAN_TO_UNIX_INTERVALS) - ); - - // Convert the 100-nanosecond intervals into seconds and microseconds. - $unixTimestamp = $this->calculator->divide( - RoundingMode::HALF_UP, - 6, - $epochNanoseconds, - new IntegerObject(self::SECOND_INTERVALS) - ); - - $split = explode('.', (string) $unixTimestamp, 2); - - return new Time($split[0], $split[1] ?? 0); - } -} diff --git a/vendor/ramsey/uuid/src/Converter/Time/PhpTimeConverter.php b/vendor/ramsey/uuid/src/Converter/Time/PhpTimeConverter.php deleted file mode 100644 index 66009f14..00000000 --- a/vendor/ramsey/uuid/src/Converter/Time/PhpTimeConverter.php +++ /dev/null @@ -1,172 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Converter\Time; - -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Math\BrickMathCalculator; -use Ramsey\Uuid\Math\CalculatorInterface; -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Type\Integer as IntegerObject; -use Ramsey\Uuid\Type\Time; - -use function count; -use function dechex; -use function explode; -use function is_float; -use function is_int; -use function str_pad; -use function strlen; -use function substr; - -use const STR_PAD_LEFT; -use const STR_PAD_RIGHT; - -/** - * PhpTimeConverter uses built-in PHP functions and standard math operations - * available to the PHP programming language to provide facilities for - * converting parts of time into representations that may be used in UUIDs - * - * @psalm-immutable - */ -class PhpTimeConverter implements TimeConverterInterface -{ - /** - * The number of 100-nanosecond intervals from the Gregorian calendar epoch - * to the Unix epoch. - */ - private const GREGORIAN_TO_UNIX_INTERVALS = 0x01b21dd213814000; - - /** - * The number of 100-nanosecond intervals in one second. - */ - private const SECOND_INTERVALS = 10000000; - - /** - * The number of 100-nanosecond intervals in one microsecond. - */ - private const MICROSECOND_INTERVALS = 10; - - private int $phpPrecision; - private CalculatorInterface $calculator; - private TimeConverterInterface $fallbackConverter; - - public function __construct( - ?CalculatorInterface $calculator = null, - ?TimeConverterInterface $fallbackConverter = null - ) { - if ($calculator === null) { - $calculator = new BrickMathCalculator(); - } - - if ($fallbackConverter === null) { - $fallbackConverter = new GenericTimeConverter($calculator); - } - - $this->calculator = $calculator; - $this->fallbackConverter = $fallbackConverter; - $this->phpPrecision = (int) ini_get('precision'); - } - - public function calculateTime(string $seconds, string $microseconds): Hexadecimal - { - $seconds = new IntegerObject($seconds); - $microseconds = new IntegerObject($microseconds); - - // Calculate the count of 100-nanosecond intervals since the Gregorian - // calendar epoch for the given seconds and microseconds. - $uuidTime = ((int) $seconds->toString() * self::SECOND_INTERVALS) - + ((int) $microseconds->toString() * self::MICROSECOND_INTERVALS) - + self::GREGORIAN_TO_UNIX_INTERVALS; - - // Check to see whether we've overflowed the max/min integer size. - // If so, we will default to a different time converter. - /** @psalm-suppress RedundantCondition */ - if (!is_int($uuidTime)) { - return $this->fallbackConverter->calculateTime( - $seconds->toString(), - $microseconds->toString() - ); - } - - return new Hexadecimal(str_pad(dechex($uuidTime), 16, '0', STR_PAD_LEFT)); - } - - public function convertTime(Hexadecimal $uuidTimestamp): Time - { - $timestamp = $this->calculator->toInteger($uuidTimestamp); - - // Convert the 100-nanosecond intervals into seconds and microseconds. - $splitTime = $this->splitTime( - ((int) $timestamp->toString() - self::GREGORIAN_TO_UNIX_INTERVALS) - / self::SECOND_INTERVALS - ); - - if (count($splitTime) === 0) { - return $this->fallbackConverter->convertTime($uuidTimestamp); - } - - return new Time($splitTime['sec'], $splitTime['usec']); - } - - /** - * @param float|int $time The time to split into seconds and microseconds - * - * @return string[] - */ - private function splitTime(float | int $time): array - { - $split = explode('.', (string) $time, 2); - - // If the $time value is a float but $split only has 1 element, then the - // float math was rounded up to the next second, so we want to return - // an empty array to allow use of the fallback converter. - if (is_float($time) && count($split) === 1) { - return []; - } - - if (count($split) === 1) { - return [ - 'sec' => $split[0], - 'usec' => '0', - ]; - } - - // If the microseconds are less than six characters AND the length of - // the number is greater than or equal to the PHP precision, then it's - // possible that we lost some precision for the microseconds. Return an - // empty array, so that we can choose to use the fallback converter. - if (strlen($split[1]) < 6 && strlen((string) $time) >= $this->phpPrecision) { - return []; - } - - $microseconds = $split[1]; - - // Ensure the microseconds are no longer than 6 digits. If they are, - // truncate the number to the first 6 digits and round up, if needed. - if (strlen($microseconds) > 6) { - $roundingDigit = (int) substr($microseconds, 6, 1); - $microseconds = (int) substr($microseconds, 0, 6); - - if ($roundingDigit >= 5) { - $microseconds++; - } - } - - return [ - 'sec' => $split[0], - 'usec' => str_pad((string) $microseconds, 6, '0', STR_PAD_RIGHT), - ]; - } -} diff --git a/vendor/ramsey/uuid/src/Converter/Time/UnixTimeConverter.php b/vendor/ramsey/uuid/src/Converter/Time/UnixTimeConverter.php deleted file mode 100644 index 4d6d0a8a..00000000 --- a/vendor/ramsey/uuid/src/Converter/Time/UnixTimeConverter.php +++ /dev/null @@ -1,90 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Converter\Time; - -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Math\CalculatorInterface; -use Ramsey\Uuid\Math\RoundingMode; -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Type\Integer as IntegerObject; -use Ramsey\Uuid\Type\Time; - -use function explode; -use function str_pad; - -use const STR_PAD_LEFT; - -/** - * UnixTimeConverter converts Unix Epoch timestamps to/from hexadecimal values - * consisting of milliseconds elapsed since the Unix Epoch - * - * @psalm-immutable - */ -class UnixTimeConverter implements TimeConverterInterface -{ - private const MILLISECONDS = 1000; - - public function __construct(private CalculatorInterface $calculator) - { - } - - public function calculateTime(string $seconds, string $microseconds): Hexadecimal - { - $timestamp = new Time($seconds, $microseconds); - - // Convert the seconds into milliseconds. - $sec = $this->calculator->multiply( - $timestamp->getSeconds(), - new IntegerObject(self::MILLISECONDS), - ); - - // Convert the microseconds into milliseconds; the scale is zero because - // we need to discard the fractional part. - $usec = $this->calculator->divide( - RoundingMode::DOWN, // Always round down to stay in the previous millisecond. - 0, - $timestamp->getMicroseconds(), - new IntegerObject(self::MILLISECONDS), - ); - - /** @var IntegerObject $unixTime */ - $unixTime = $this->calculator->add($sec, $usec); - - $unixTimeHex = str_pad( - $this->calculator->toHexadecimal($unixTime)->toString(), - 12, - '0', - STR_PAD_LEFT - ); - - return new Hexadecimal($unixTimeHex); - } - - public function convertTime(Hexadecimal $uuidTimestamp): Time - { - $milliseconds = $this->calculator->toInteger($uuidTimestamp); - - $unixTimestamp = $this->calculator->divide( - RoundingMode::HALF_UP, - 6, - $milliseconds, - new IntegerObject(self::MILLISECONDS) - ); - - $split = explode('.', (string) $unixTimestamp, 2); - - return new Time($split[0], $split[1] ?? '0'); - } -} diff --git a/vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php b/vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php deleted file mode 100644 index 1e848070..00000000 --- a/vendor/ramsey/uuid/src/Converter/TimeConverterInterface.php +++ /dev/null @@ -1,58 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Converter; - -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Type\Time; - -/** - * A time converter converts timestamps into representations that may be used - * in UUIDs - * - * @psalm-immutable - */ -interface TimeConverterInterface -{ - /** - * Uses the provided seconds and micro-seconds to calculate the count of - * 100-nanosecond intervals since UTC 00:00:00.00, 15 October 1582, for - * RFC 4122 variant UUIDs - * - * @link http://tools.ietf.org/html/rfc4122#section-4.2.2 RFC 4122, § 4.2.2: Generation Details - * - * @param string $seconds A string representation of the number of seconds - * since the Unix epoch for the time to calculate - * @param string $microseconds A string representation of the micro-seconds - * associated with the time to calculate - * - * @return Hexadecimal The full UUID timestamp as a Hexadecimal value - * - * @psalm-pure - */ - public function calculateTime(string $seconds, string $microseconds): Hexadecimal; - - /** - * Converts a timestamp extracted from a UUID to a Unix timestamp - * - * @param Hexadecimal $uuidTimestamp A hexadecimal representation of a UUID - * timestamp; a UUID timestamp is a count of 100-nanosecond intervals - * since UTC 00:00:00.00, 15 October 1582. - * - * @return Time An instance of {@see Time} - * - * @psalm-pure - */ - public function convertTime(Hexadecimal $uuidTimestamp): Time; -} diff --git a/vendor/ramsey/uuid/src/DegradedUuid.php b/vendor/ramsey/uuid/src/DegradedUuid.php deleted file mode 100644 index 9166042c..00000000 --- a/vendor/ramsey/uuid/src/DegradedUuid.php +++ /dev/null @@ -1,25 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid; - -/** - * @deprecated DegradedUuid is no longer necessary to represent UUIDs on 32-bit - * systems. Transition typehints to {@see UuidInterface}. - * - * @psalm-immutable - */ -class DegradedUuid extends Uuid -{ -} diff --git a/vendor/ramsey/uuid/src/DeprecatedUuidInterface.php b/vendor/ramsey/uuid/src/DeprecatedUuidInterface.php deleted file mode 100644 index ac01a79c..00000000 --- a/vendor/ramsey/uuid/src/DeprecatedUuidInterface.php +++ /dev/null @@ -1,140 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid; - -use DateTimeInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; - -/** - * This interface encapsulates deprecated methods for ramsey/uuid - * - * @psalm-immutable - */ -interface DeprecatedUuidInterface -{ - /** - * @deprecated This method will be removed in 5.0.0. There is no alternative - * recommendation, so plan accordingly. - */ - public function getNumberConverter(): NumberConverterInterface; - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. - * - * @return string[] - */ - public function getFieldsHex(): array; - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getClockSeqHiAndReserved()}. - */ - public function getClockSeqHiAndReservedHex(): string; - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getClockSeqLow()}. - */ - public function getClockSeqLowHex(): string; - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getClockSeq()}. - */ - public function getClockSequenceHex(): string; - - /** - * @deprecated In ramsey/uuid version 5.0.0, this will be removed from the - * interface. It is available at {@see UuidV1::getDateTime()}. - */ - public function getDateTime(): DateTimeInterface; - - /** - * @deprecated This method will be removed in 5.0.0. There is no direct - * alternative, but the same information may be obtained by splitting - * in half the value returned by {@see UuidInterface::getHex()}. - */ - public function getLeastSignificantBitsHex(): string; - - /** - * @deprecated This method will be removed in 5.0.0. There is no direct - * alternative, but the same information may be obtained by splitting - * in half the value returned by {@see UuidInterface::getHex()}. - */ - public function getMostSignificantBitsHex(): string; - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getNode()}. - */ - public function getNodeHex(): string; - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimeHiAndVersion()}. - */ - public function getTimeHiAndVersionHex(): string; - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimeLow()}. - */ - public function getTimeLowHex(): string; - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimeMid()}. - */ - public function getTimeMidHex(): string; - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimestamp()}. - */ - public function getTimestampHex(): string; - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getVariant()}. - */ - public function getVariant(): ?int; - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getVersion()}. - */ - public function getVersion(): ?int; -} diff --git a/vendor/ramsey/uuid/src/DeprecatedUuidMethodsTrait.php b/vendor/ramsey/uuid/src/DeprecatedUuidMethodsTrait.php deleted file mode 100644 index d3fbb0cc..00000000 --- a/vendor/ramsey/uuid/src/DeprecatedUuidMethodsTrait.php +++ /dev/null @@ -1,360 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid; - -use DateTimeImmutable; -use DateTimeInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Exception\DateTimeException; -use Ramsey\Uuid\Exception\UnsupportedOperationException; -use Throwable; - -use function str_pad; -use function substr; - -use const STR_PAD_LEFT; - -/** - * This trait encapsulates deprecated methods for ramsey/uuid; this trait and - * its methods will be removed in ramsey/uuid 5.0.0. - * - * @deprecated This trait and its methods will be removed in ramsey/uuid 5.0.0. - * - * @psalm-immutable - */ -trait DeprecatedUuidMethodsTrait -{ - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getClockSeqHiAndReserved()} - * and use the arbitrary-precision math library of your choice to - * convert it to a string integer. - */ - public function getClockSeqHiAndReserved(): string - { - return $this->numberConverter->fromHex($this->fields->getClockSeqHiAndReserved()->toString()); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getClockSeqHiAndReserved()}. - */ - public function getClockSeqHiAndReservedHex(): string - { - return $this->fields->getClockSeqHiAndReserved()->toString(); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getClockSeqLow()} - * and use the arbitrary-precision math library of your choice to - * convert it to a string integer. - */ - public function getClockSeqLow(): string - { - return $this->numberConverter->fromHex($this->fields->getClockSeqLow()->toString()); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getClockSeqLow()}. - */ - public function getClockSeqLowHex(): string - { - return $this->fields->getClockSeqLow()->toString(); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getClockSeq()} - * and use the arbitrary-precision math library of your choice to - * convert it to a string integer. - */ - public function getClockSequence(): string - { - return $this->numberConverter->fromHex($this->fields->getClockSeq()->toString()); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getClockSeq()}. - */ - public function getClockSequenceHex(): string - { - return $this->fields->getClockSeq()->toString(); - } - - /** - * @deprecated This method will be removed in 5.0.0. There is no alternative - * recommendation, so plan accordingly. - */ - public function getNumberConverter(): NumberConverterInterface - { - return $this->numberConverter; - } - - /** - * @deprecated In ramsey/uuid version 5.0.0, this will be removed. - * It is available at {@see UuidV1::getDateTime()}. - * - * @return DateTimeImmutable An immutable instance of DateTimeInterface - * - * @throws UnsupportedOperationException if UUID is not time-based - * @throws DateTimeException if DateTime throws an exception/error - */ - public function getDateTime(): DateTimeInterface - { - if ($this->fields->getVersion() !== 1) { - throw new UnsupportedOperationException('Not a time-based UUID'); - } - - $time = $this->timeConverter->convertTime($this->fields->getTimestamp()); - - try { - return new DateTimeImmutable( - '@' - . $time->getSeconds()->toString() - . '.' - . str_pad($time->getMicroseconds()->toString(), 6, '0', STR_PAD_LEFT) - ); - } catch (Throwable $e) { - throw new DateTimeException($e->getMessage(), (int) $e->getCode(), $e); - } - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. - * - * @return string[] - */ - public function getFieldsHex(): array - { - return [ - 'time_low' => $this->fields->getTimeLow()->toString(), - 'time_mid' => $this->fields->getTimeMid()->toString(), - 'time_hi_and_version' => $this->fields->getTimeHiAndVersion()->toString(), - 'clock_seq_hi_and_reserved' => $this->fields->getClockSeqHiAndReserved()->toString(), - 'clock_seq_low' => $this->fields->getClockSeqLow()->toString(), - 'node' => $this->fields->getNode()->toString(), - ]; - } - - /** - * @deprecated This method will be removed in 5.0.0. There is no direct - * alternative, but the same information may be obtained by splitting - * in half the value returned by {@see UuidInterface::getHex()}. - */ - public function getLeastSignificantBits(): string - { - $leastSignificantHex = substr($this->getHex()->toString(), 16); - - return $this->numberConverter->fromHex($leastSignificantHex); - } - - /** - * @deprecated This method will be removed in 5.0.0. There is no direct - * alternative, but the same information may be obtained by splitting - * in half the value returned by {@see UuidInterface::getHex()}. - */ - public function getLeastSignificantBitsHex(): string - { - return substr($this->getHex()->toString(), 16); - } - - /** - * @deprecated This method will be removed in 5.0.0. There is no direct - * alternative, but the same information may be obtained by splitting - * in half the value returned by {@see UuidInterface::getHex()}. - */ - public function getMostSignificantBits(): string - { - $mostSignificantHex = substr($this->getHex()->toString(), 0, 16); - - return $this->numberConverter->fromHex($mostSignificantHex); - } - - /** - * @deprecated This method will be removed in 5.0.0. There is no direct - * alternative, but the same information may be obtained by splitting - * in half the value returned by {@see UuidInterface::getHex()}. - */ - public function getMostSignificantBitsHex(): string - { - return substr($this->getHex()->toString(), 0, 16); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getNode()} and use the - * arbitrary-precision math library of your choice to convert it to a - * string integer. - */ - public function getNode(): string - { - return $this->numberConverter->fromHex($this->fields->getNode()->toString()); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getNode()}. - */ - public function getNodeHex(): string - { - return $this->fields->getNode()->toString(); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimeHiAndVersion()} - * and use the arbitrary-precision math library of your choice to - * convert it to a string integer. - */ - public function getTimeHiAndVersion(): string - { - return $this->numberConverter->fromHex($this->fields->getTimeHiAndVersion()->toString()); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimeHiAndVersion()}. - */ - public function getTimeHiAndVersionHex(): string - { - return $this->fields->getTimeHiAndVersion()->toString(); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimeLow()} and use the - * arbitrary-precision math library of your choice to convert it to a - * string integer. - */ - public function getTimeLow(): string - { - return $this->numberConverter->fromHex($this->fields->getTimeLow()->toString()); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimeLow()}. - */ - public function getTimeLowHex(): string - { - return $this->fields->getTimeLow()->toString(); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimeMid()} and use the - * arbitrary-precision math library of your choice to convert it to a - * string integer. - */ - public function getTimeMid(): string - { - return $this->numberConverter->fromHex($this->fields->getTimeMid()->toString()); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimeMid()}. - */ - public function getTimeMidHex(): string - { - return $this->fields->getTimeMid()->toString(); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimestamp()} and use - * the arbitrary-precision math library of your choice to convert it to - * a string integer. - */ - public function getTimestamp(): string - { - if ($this->fields->getVersion() !== 1) { - throw new UnsupportedOperationException('Not a time-based UUID'); - } - - return $this->numberConverter->fromHex($this->fields->getTimestamp()->toString()); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getTimestamp()}. - */ - public function getTimestampHex(): string - { - if ($this->fields->getVersion() !== 1) { - throw new UnsupportedOperationException('Not a time-based UUID'); - } - - return $this->fields->getTimestamp()->toString(); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getVariant()}. - */ - public function getVariant(): ?int - { - return $this->fields->getVariant(); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see \Ramsey\Uuid\Fields\FieldsInterface} instance. If it is a - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface} instance, you may call - * {@see \Ramsey\Uuid\Rfc4122\FieldsInterface::getVersion()}. - */ - public function getVersion(): ?int - { - return $this->fields->getVersion(); - } -} diff --git a/vendor/ramsey/uuid/src/Exception/BuilderNotFoundException.php b/vendor/ramsey/uuid/src/Exception/BuilderNotFoundException.php deleted file mode 100644 index 220ffedb..00000000 --- a/vendor/ramsey/uuid/src/Exception/BuilderNotFoundException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Exception; - -use RuntimeException as PhpRuntimeException; - -/** - * Thrown to indicate that no suitable builder could be found - */ -class BuilderNotFoundException extends PhpRuntimeException implements UuidExceptionInterface -{ -} diff --git a/vendor/ramsey/uuid/src/Exception/DateTimeException.php b/vendor/ramsey/uuid/src/Exception/DateTimeException.php deleted file mode 100644 index 5f0e658b..00000000 --- a/vendor/ramsey/uuid/src/Exception/DateTimeException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Exception; - -use RuntimeException as PhpRuntimeException; - -/** - * Thrown to indicate that the PHP DateTime extension encountered an exception/error - */ -class DateTimeException extends PhpRuntimeException implements UuidExceptionInterface -{ -} diff --git a/vendor/ramsey/uuid/src/Exception/DceSecurityException.php b/vendor/ramsey/uuid/src/Exception/DceSecurityException.php deleted file mode 100644 index e6d80013..00000000 --- a/vendor/ramsey/uuid/src/Exception/DceSecurityException.php +++ /dev/null @@ -1,25 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Exception; - -use RuntimeException as PhpRuntimeException; - -/** - * Thrown to indicate an exception occurred while dealing with DCE Security - * (version 2) UUIDs - */ -class DceSecurityException extends PhpRuntimeException implements UuidExceptionInterface -{ -} diff --git a/vendor/ramsey/uuid/src/Exception/InvalidArgumentException.php b/vendor/ramsey/uuid/src/Exception/InvalidArgumentException.php deleted file mode 100644 index 2a1fa3ac..00000000 --- a/vendor/ramsey/uuid/src/Exception/InvalidArgumentException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Exception; - -use InvalidArgumentException as PhpInvalidArgumentException; - -/** - * Thrown to indicate that the argument received is not valid - */ -class InvalidArgumentException extends PhpInvalidArgumentException implements UuidExceptionInterface -{ -} diff --git a/vendor/ramsey/uuid/src/Exception/InvalidBytesException.php b/vendor/ramsey/uuid/src/Exception/InvalidBytesException.php deleted file mode 100644 index 1c94f659..00000000 --- a/vendor/ramsey/uuid/src/Exception/InvalidBytesException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Exception; - -use RuntimeException as PhpRuntimeException; - -/** - * Thrown to indicate that the bytes being operated on are invalid in some way - */ -class InvalidBytesException extends PhpRuntimeException implements UuidExceptionInterface -{ -} diff --git a/vendor/ramsey/uuid/src/Exception/InvalidUuidStringException.php b/vendor/ramsey/uuid/src/Exception/InvalidUuidStringException.php deleted file mode 100644 index 6d975816..00000000 --- a/vendor/ramsey/uuid/src/Exception/InvalidUuidStringException.php +++ /dev/null @@ -1,25 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Exception; - -/** - * Thrown to indicate that the string received is not a valid UUID - * - * The InvalidArgumentException that this extends is the ramsey/uuid version - * of this exception. It exists in the same namespace as this class. - */ -class InvalidUuidStringException extends InvalidArgumentException implements UuidExceptionInterface -{ -} diff --git a/vendor/ramsey/uuid/src/Exception/NameException.php b/vendor/ramsey/uuid/src/Exception/NameException.php deleted file mode 100644 index fd96a1fa..00000000 --- a/vendor/ramsey/uuid/src/Exception/NameException.php +++ /dev/null @@ -1,25 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Exception; - -use RuntimeException as PhpRuntimeException; - -/** - * Thrown to indicate that an error occurred while attempting to hash a - * namespace and name - */ -class NameException extends PhpRuntimeException implements UuidExceptionInterface -{ -} diff --git a/vendor/ramsey/uuid/src/Exception/NodeException.php b/vendor/ramsey/uuid/src/Exception/NodeException.php deleted file mode 100644 index 0dbdd50b..00000000 --- a/vendor/ramsey/uuid/src/Exception/NodeException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Exception; - -use RuntimeException as PhpRuntimeException; - -/** - * Thrown to indicate that attempting to fetch or create a node ID encountered an error - */ -class NodeException extends PhpRuntimeException implements UuidExceptionInterface -{ -} diff --git a/vendor/ramsey/uuid/src/Exception/RandomSourceException.php b/vendor/ramsey/uuid/src/Exception/RandomSourceException.php deleted file mode 100644 index a44dd34a..00000000 --- a/vendor/ramsey/uuid/src/Exception/RandomSourceException.php +++ /dev/null @@ -1,27 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Exception; - -use RuntimeException as PhpRuntimeException; - -/** - * Thrown to indicate that the source of random data encountered an error - * - * This exception is used mostly to indicate that random_bytes() or random_int() - * threw an exception. However, it may be used for other sources of random data. - */ -class RandomSourceException extends PhpRuntimeException implements UuidExceptionInterface -{ -} diff --git a/vendor/ramsey/uuid/src/Exception/TimeSourceException.php b/vendor/ramsey/uuid/src/Exception/TimeSourceException.php deleted file mode 100644 index fc9cf36b..00000000 --- a/vendor/ramsey/uuid/src/Exception/TimeSourceException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Exception; - -use RuntimeException as PhpRuntimeException; - -/** - * Thrown to indicate that the source of time encountered an error - */ -class TimeSourceException extends PhpRuntimeException implements UuidExceptionInterface -{ -} diff --git a/vendor/ramsey/uuid/src/Exception/UnableToBuildUuidException.php b/vendor/ramsey/uuid/src/Exception/UnableToBuildUuidException.php deleted file mode 100644 index 5ba26d8d..00000000 --- a/vendor/ramsey/uuid/src/Exception/UnableToBuildUuidException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Exception; - -use RuntimeException as PhpRuntimeException; - -/** - * Thrown to indicate a builder is unable to build a UUID - */ -class UnableToBuildUuidException extends PhpRuntimeException implements UuidExceptionInterface -{ -} diff --git a/vendor/ramsey/uuid/src/Exception/UnsupportedOperationException.php b/vendor/ramsey/uuid/src/Exception/UnsupportedOperationException.php deleted file mode 100644 index e1b3eda1..00000000 --- a/vendor/ramsey/uuid/src/Exception/UnsupportedOperationException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Exception; - -use LogicException as PhpLogicException; - -/** - * Thrown to indicate that the requested operation is not supported - */ -class UnsupportedOperationException extends PhpLogicException implements UuidExceptionInterface -{ -} diff --git a/vendor/ramsey/uuid/src/Exception/UuidExceptionInterface.php b/vendor/ramsey/uuid/src/Exception/UuidExceptionInterface.php deleted file mode 100644 index a2f1c103..00000000 --- a/vendor/ramsey/uuid/src/Exception/UuidExceptionInterface.php +++ /dev/null @@ -1,21 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Exception; - -use Throwable; - -interface UuidExceptionInterface extends Throwable -{ -} diff --git a/vendor/ramsey/uuid/src/FeatureSet.php b/vendor/ramsey/uuid/src/FeatureSet.php deleted file mode 100644 index b9af869f..00000000 --- a/vendor/ramsey/uuid/src/FeatureSet.php +++ /dev/null @@ -1,397 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid; - -use Ramsey\Uuid\Builder\FallbackBuilder; -use Ramsey\Uuid\Builder\UuidBuilderInterface; -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Codec\GuidStringCodec; -use Ramsey\Uuid\Codec\StringCodec; -use Ramsey\Uuid\Converter\Number\GenericNumberConverter; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\Time\GenericTimeConverter; -use Ramsey\Uuid\Converter\Time\PhpTimeConverter; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Generator\DceSecurityGenerator; -use Ramsey\Uuid\Generator\DceSecurityGeneratorInterface; -use Ramsey\Uuid\Generator\NameGeneratorFactory; -use Ramsey\Uuid\Generator\NameGeneratorInterface; -use Ramsey\Uuid\Generator\PeclUuidNameGenerator; -use Ramsey\Uuid\Generator\PeclUuidRandomGenerator; -use Ramsey\Uuid\Generator\PeclUuidTimeGenerator; -use Ramsey\Uuid\Generator\RandomGeneratorFactory; -use Ramsey\Uuid\Generator\RandomGeneratorInterface; -use Ramsey\Uuid\Generator\TimeGeneratorFactory; -use Ramsey\Uuid\Generator\TimeGeneratorInterface; -use Ramsey\Uuid\Generator\UnixTimeGenerator; -use Ramsey\Uuid\Guid\GuidBuilder; -use Ramsey\Uuid\Math\BrickMathCalculator; -use Ramsey\Uuid\Math\CalculatorInterface; -use Ramsey\Uuid\Nonstandard\UuidBuilder as NonstandardUuidBuilder; -use Ramsey\Uuid\Provider\Dce\SystemDceSecurityProvider; -use Ramsey\Uuid\Provider\DceSecurityProviderInterface; -use Ramsey\Uuid\Provider\Node\FallbackNodeProvider; -use Ramsey\Uuid\Provider\Node\RandomNodeProvider; -use Ramsey\Uuid\Provider\Node\SystemNodeProvider; -use Ramsey\Uuid\Provider\NodeProviderInterface; -use Ramsey\Uuid\Provider\Time\SystemTimeProvider; -use Ramsey\Uuid\Provider\TimeProviderInterface; -use Ramsey\Uuid\Rfc4122\UuidBuilder as Rfc4122UuidBuilder; -use Ramsey\Uuid\Validator\GenericValidator; -use Ramsey\Uuid\Validator\ValidatorInterface; - -use const PHP_INT_SIZE; - -/** - * FeatureSet detects and exposes available features in the current environment - * - * A feature set is used by UuidFactory to determine the available features and - * capabilities of the environment. - */ -class FeatureSet -{ - private ?TimeProviderInterface $timeProvider = null; - private CalculatorInterface $calculator; - private CodecInterface $codec; - private DceSecurityGeneratorInterface $dceSecurityGenerator; - private NameGeneratorInterface $nameGenerator; - private NodeProviderInterface $nodeProvider; - private NumberConverterInterface $numberConverter; - private RandomGeneratorInterface $randomGenerator; - private TimeConverterInterface $timeConverter; - private TimeGeneratorInterface $timeGenerator; - private TimeGeneratorInterface $unixTimeGenerator; - private UuidBuilderInterface $builder; - private ValidatorInterface $validator; - - /** - * @param bool $useGuids True build UUIDs using the GuidStringCodec - * @param bool $force32Bit True to force the use of 32-bit functionality - * (primarily for testing purposes) - * @param bool $forceNoBigNumber (obsolete) - * @param bool $ignoreSystemNode True to disable attempts to check for the - * system node ID (primarily for testing purposes) - * @param bool $enablePecl True to enable the use of the PeclUuidTimeGenerator - * to generate version 1 UUIDs - */ - public function __construct( - bool $useGuids = false, - private bool $force32Bit = false, - bool $forceNoBigNumber = false, - private bool $ignoreSystemNode = false, - private bool $enablePecl = false - ) { - $this->randomGenerator = $this->buildRandomGenerator(); - $this->setCalculator(new BrickMathCalculator()); - $this->builder = $this->buildUuidBuilder($useGuids); - $this->codec = $this->buildCodec($useGuids); - $this->nodeProvider = $this->buildNodeProvider(); - $this->nameGenerator = $this->buildNameGenerator(); - $this->setTimeProvider(new SystemTimeProvider()); - $this->setDceSecurityProvider(new SystemDceSecurityProvider()); - $this->validator = new GenericValidator(); - - assert($this->timeProvider !== null); - $this->unixTimeGenerator = $this->buildUnixTimeGenerator(); - } - - /** - * Returns the builder configured for this environment - */ - public function getBuilder(): UuidBuilderInterface - { - return $this->builder; - } - - /** - * Returns the calculator configured for this environment - */ - public function getCalculator(): CalculatorInterface - { - return $this->calculator; - } - - /** - * Returns the codec configured for this environment - */ - public function getCodec(): CodecInterface - { - return $this->codec; - } - - /** - * Returns the DCE Security generator configured for this environment - */ - public function getDceSecurityGenerator(): DceSecurityGeneratorInterface - { - return $this->dceSecurityGenerator; - } - - /** - * Returns the name generator configured for this environment - */ - public function getNameGenerator(): NameGeneratorInterface - { - return $this->nameGenerator; - } - - /** - * Returns the node provider configured for this environment - */ - public function getNodeProvider(): NodeProviderInterface - { - return $this->nodeProvider; - } - - /** - * Returns the number converter configured for this environment - */ - public function getNumberConverter(): NumberConverterInterface - { - return $this->numberConverter; - } - - /** - * Returns the random generator configured for this environment - */ - public function getRandomGenerator(): RandomGeneratorInterface - { - return $this->randomGenerator; - } - - /** - * Returns the time converter configured for this environment - */ - public function getTimeConverter(): TimeConverterInterface - { - return $this->timeConverter; - } - - /** - * Returns the time generator configured for this environment - */ - public function getTimeGenerator(): TimeGeneratorInterface - { - return $this->timeGenerator; - } - - /** - * Returns the Unix Epoch time generator configured for this environment - */ - public function getUnixTimeGenerator(): TimeGeneratorInterface - { - return $this->unixTimeGenerator; - } - - /** - * Returns the validator configured for this environment - */ - public function getValidator(): ValidatorInterface - { - return $this->validator; - } - - /** - * Sets the calculator to use in this environment - */ - public function setCalculator(CalculatorInterface $calculator): void - { - $this->calculator = $calculator; - $this->numberConverter = $this->buildNumberConverter($calculator); - $this->timeConverter = $this->buildTimeConverter($calculator); - - /** @psalm-suppress RedundantPropertyInitializationCheck */ - if (isset($this->timeProvider)) { - $this->timeGenerator = $this->buildTimeGenerator($this->timeProvider); - } - } - - /** - * Sets the DCE Security provider to use in this environment - */ - public function setDceSecurityProvider(DceSecurityProviderInterface $dceSecurityProvider): void - { - $this->dceSecurityGenerator = $this->buildDceSecurityGenerator($dceSecurityProvider); - } - - /** - * Sets the node provider to use in this environment - */ - public function setNodeProvider(NodeProviderInterface $nodeProvider): void - { - $this->nodeProvider = $nodeProvider; - - if (isset($this->timeProvider)) { - $this->timeGenerator = $this->buildTimeGenerator($this->timeProvider); - } - } - - /** - * Sets the time provider to use in this environment - */ - public function setTimeProvider(TimeProviderInterface $timeProvider): void - { - $this->timeProvider = $timeProvider; - $this->timeGenerator = $this->buildTimeGenerator($timeProvider); - } - - /** - * Set the validator to use in this environment - */ - public function setValidator(ValidatorInterface $validator): void - { - $this->validator = $validator; - } - - /** - * Returns a codec configured for this environment - * - * @param bool $useGuids Whether to build UUIDs using the GuidStringCodec - */ - private function buildCodec(bool $useGuids = false): CodecInterface - { - if ($useGuids) { - return new GuidStringCodec($this->builder); - } - - return new StringCodec($this->builder); - } - - /** - * Returns a DCE Security generator configured for this environment - */ - private function buildDceSecurityGenerator( - DceSecurityProviderInterface $dceSecurityProvider - ): DceSecurityGeneratorInterface { - return new DceSecurityGenerator( - $this->numberConverter, - $this->timeGenerator, - $dceSecurityProvider - ); - } - - /** - * Returns a node provider configured for this environment - */ - private function buildNodeProvider(): NodeProviderInterface - { - if ($this->ignoreSystemNode) { - return new RandomNodeProvider(); - } - - return new FallbackNodeProvider([ - new SystemNodeProvider(), - new RandomNodeProvider(), - ]); - } - - /** - * Returns a number converter configured for this environment - */ - private function buildNumberConverter(CalculatorInterface $calculator): NumberConverterInterface - { - return new GenericNumberConverter($calculator); - } - - /** - * Returns a random generator configured for this environment - */ - private function buildRandomGenerator(): RandomGeneratorInterface - { - if ($this->enablePecl) { - return new PeclUuidRandomGenerator(); - } - - return (new RandomGeneratorFactory())->getGenerator(); - } - - /** - * Returns a time generator configured for this environment - * - * @param TimeProviderInterface $timeProvider The time provider to use with - * the time generator - */ - private function buildTimeGenerator(TimeProviderInterface $timeProvider): TimeGeneratorInterface - { - if ($this->enablePecl) { - return new PeclUuidTimeGenerator(); - } - - return (new TimeGeneratorFactory( - $this->nodeProvider, - $this->timeConverter, - $timeProvider - ))->getGenerator(); - } - - /** - * Returns a Unix Epoch time generator configured for this environment - */ - private function buildUnixTimeGenerator(): TimeGeneratorInterface - { - return new UnixTimeGenerator($this->randomGenerator); - } - - /** - * Returns a name generator configured for this environment - */ - private function buildNameGenerator(): NameGeneratorInterface - { - if ($this->enablePecl) { - return new PeclUuidNameGenerator(); - } - - return (new NameGeneratorFactory())->getGenerator(); - } - - /** - * Returns a time converter configured for this environment - */ - private function buildTimeConverter(CalculatorInterface $calculator): TimeConverterInterface - { - $genericConverter = new GenericTimeConverter($calculator); - - if ($this->is64BitSystem()) { - return new PhpTimeConverter($calculator, $genericConverter); - } - - return $genericConverter; - } - - /** - * Returns a UUID builder configured for this environment - * - * @param bool $useGuids Whether to build UUIDs using the GuidStringCodec - */ - private function buildUuidBuilder(bool $useGuids = false): UuidBuilderInterface - { - if ($useGuids) { - return new GuidBuilder($this->numberConverter, $this->timeConverter); - } - - return new FallbackBuilder([ - new Rfc4122UuidBuilder($this->numberConverter, $this->timeConverter), - new NonstandardUuidBuilder($this->numberConverter, $this->timeConverter), - ]); - } - - /** - * Returns true if the PHP build is 64-bit - */ - private function is64BitSystem(): bool - { - return PHP_INT_SIZE === 8 && !$this->force32Bit; - } -} diff --git a/vendor/ramsey/uuid/src/Fields/FieldsInterface.php b/vendor/ramsey/uuid/src/Fields/FieldsInterface.php deleted file mode 100644 index f1b7a290..00000000 --- a/vendor/ramsey/uuid/src/Fields/FieldsInterface.php +++ /dev/null @@ -1,32 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Fields; - -use Serializable; - -/** - * UUIDs are comprised of unsigned integers, the bytes of which are separated - * into fields and arranged in a particular layout defined by the specification - * for the variant - * - * @psalm-immutable - */ -interface FieldsInterface extends Serializable -{ - /** - * Returns the bytes that comprise the fields - */ - public function getBytes(): string; -} diff --git a/vendor/ramsey/uuid/src/Fields/SerializableFieldsTrait.php b/vendor/ramsey/uuid/src/Fields/SerializableFieldsTrait.php deleted file mode 100644 index 3d36b6f1..00000000 --- a/vendor/ramsey/uuid/src/Fields/SerializableFieldsTrait.php +++ /dev/null @@ -1,87 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Fields; - -use ValueError; - -use function base64_decode; -use function sprintf; -use function strlen; - -/** - * Provides common serialization functionality to fields - * - * @psalm-immutable - */ -trait SerializableFieldsTrait -{ - /** - * @param string $bytes The bytes that comprise the fields - */ - abstract public function __construct(string $bytes); - - /** - * Returns the bytes that comprise the fields - */ - abstract public function getBytes(): string; - - /** - * Returns a string representation of object - */ - public function serialize(): string - { - return $this->getBytes(); - } - - /** - * @return array{bytes: string} - */ - public function __serialize(): array - { - return ['bytes' => $this->getBytes()]; - } - - /** - * Constructs the object from a serialized string representation - * - * @param string $data The serialized string representation of the object - * - * @psalm-suppress UnusedMethodCall - */ - public function unserialize(string $data): void - { - if (strlen($data) === 16) { - $this->__construct($data); - } else { - $this->__construct(base64_decode($data)); - } - } - - /** - * @param array{bytes?: string} $data - * - * @psalm-suppress UnusedMethodCall - */ - public function __unserialize(array $data): void - { - // @codeCoverageIgnoreStart - if (!isset($data['bytes'])) { - throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); - } - // @codeCoverageIgnoreEnd - - $this->unserialize($data['bytes']); - } -} diff --git a/vendor/ramsey/uuid/src/Generator/CombGenerator.php b/vendor/ramsey/uuid/src/Generator/CombGenerator.php deleted file mode 100644 index 0e887060..00000000 --- a/vendor/ramsey/uuid/src/Generator/CombGenerator.php +++ /dev/null @@ -1,115 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Generator; - -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Exception\InvalidArgumentException; - -use function bin2hex; -use function explode; -use function hex2bin; -use function microtime; -use function str_pad; -use function substr; - -use const STR_PAD_LEFT; - -/** - * CombGenerator generates COMBs (combined UUID/timestamp) - * - * The CombGenerator, when used with the StringCodec (and, by proxy, the - * TimestampLastCombCodec) or the TimestampFirstCombCodec, combines the current - * timestamp with a UUID (hence the name "COMB"). The timestamp either appears - * as the first or last 48 bits of the COMB, depending on the codec used. - * - * By default, COMBs will have the timestamp set as the last 48 bits of the - * identifier. - * - * ``` php - * $factory = new UuidFactory(); - * - * $factory->setRandomGenerator(new CombGenerator( - * $factory->getRandomGenerator(), - * $factory->getNumberConverter() - * )); - * - * $comb = $factory->uuid4(); - * ``` - * - * To generate a COMB with the timestamp as the first 48 bits, set the - * TimestampFirstCombCodec as the codec. - * - * ``` php - * $factory->setCodec(new TimestampFirstCombCodec($factory->getUuidBuilder())); - * ``` - * - * @link https://www.informit.com/articles/printerfriendly/25862 The Cost of GUIDs as Primary Keys - */ -class CombGenerator implements RandomGeneratorInterface -{ - public const TIMESTAMP_BYTES = 6; - - public function __construct( - private RandomGeneratorInterface $generator, - private NumberConverterInterface $numberConverter - ) { - } - - /** - * @throws InvalidArgumentException if $length is not a positive integer - * greater than or equal to CombGenerator::TIMESTAMP_BYTES - * - * @inheritDoc - */ - public function generate(int $length): string - { - if ($length < self::TIMESTAMP_BYTES) { - throw new InvalidArgumentException( - 'Length must be a positive integer greater than or equal to ' . self::TIMESTAMP_BYTES - ); - } - - $hash = ''; - if (self::TIMESTAMP_BYTES > 0 && $length > self::TIMESTAMP_BYTES) { - $hash = $this->generator->generate($length - self::TIMESTAMP_BYTES); - } - - $lsbTime = str_pad( - $this->numberConverter->toHex($this->timestamp()), - self::TIMESTAMP_BYTES * 2, - '0', - STR_PAD_LEFT - ); - - return (string) hex2bin( - str_pad( - bin2hex($hash), - $length - self::TIMESTAMP_BYTES, - '0' - ) - . $lsbTime - ); - } - - /** - * Returns current timestamp a string integer, precise to 0.00001 seconds - */ - private function timestamp(): string - { - $time = explode(' ', microtime(false)); - - return $time[1] . substr($time[0], 2, 5); - } -} diff --git a/vendor/ramsey/uuid/src/Generator/DceSecurityGenerator.php b/vendor/ramsey/uuid/src/Generator/DceSecurityGenerator.php deleted file mode 100644 index 37ba7813..00000000 --- a/vendor/ramsey/uuid/src/Generator/DceSecurityGenerator.php +++ /dev/null @@ -1,141 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Generator; - -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Exception\DceSecurityException; -use Ramsey\Uuid\Provider\DceSecurityProviderInterface; -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Type\Integer as IntegerObject; -use Ramsey\Uuid\Uuid; - -use function hex2bin; -use function in_array; -use function pack; -use function str_pad; -use function strlen; -use function substr_replace; - -use const STR_PAD_LEFT; - -/** - * DceSecurityGenerator generates strings of binary data based on a local - * domain, local identifier, node ID, clock sequence, and the current time - */ -class DceSecurityGenerator implements DceSecurityGeneratorInterface -{ - private const DOMAINS = [ - Uuid::DCE_DOMAIN_PERSON, - Uuid::DCE_DOMAIN_GROUP, - Uuid::DCE_DOMAIN_ORG, - ]; - - /** - * Upper bounds for the clock sequence in DCE Security UUIDs. - */ - private const CLOCK_SEQ_HIGH = 63; - - /** - * Lower bounds for the clock sequence in DCE Security UUIDs. - */ - private const CLOCK_SEQ_LOW = 0; - - public function __construct( - private NumberConverterInterface $numberConverter, - private TimeGeneratorInterface $timeGenerator, - private DceSecurityProviderInterface $dceSecurityProvider - ) { - } - - public function generate( - int $localDomain, - ?IntegerObject $localIdentifier = null, - ?Hexadecimal $node = null, - ?int $clockSeq = null - ): string { - if (!in_array($localDomain, self::DOMAINS)) { - throw new DceSecurityException( - 'Local domain must be a valid DCE Security domain' - ); - } - - if ($localIdentifier && $localIdentifier->isNegative()) { - throw new DceSecurityException( - 'Local identifier out of bounds; it must be a value between 0 and 4294967295' - ); - } - - if ($clockSeq > self::CLOCK_SEQ_HIGH || $clockSeq < self::CLOCK_SEQ_LOW) { - throw new DceSecurityException( - 'Clock sequence out of bounds; it must be a value between 0 and 63' - ); - } - - switch ($localDomain) { - case Uuid::DCE_DOMAIN_ORG: - if ($localIdentifier === null) { - throw new DceSecurityException( - 'A local identifier must be provided for the org domain' - ); - } - - break; - case Uuid::DCE_DOMAIN_PERSON: - if ($localIdentifier === null) { - $localIdentifier = $this->dceSecurityProvider->getUid(); - } - - break; - case Uuid::DCE_DOMAIN_GROUP: - default: - if ($localIdentifier === null) { - $localIdentifier = $this->dceSecurityProvider->getGid(); - } - - break; - } - - $identifierHex = $this->numberConverter->toHex($localIdentifier->toString()); - - // The maximum value for the local identifier is 0xffffffff, or - // 4294967295. This is 8 hexadecimal digits, so if the length of - // hexadecimal digits is greater than 8, we know the value is greater - // than 0xffffffff. - if (strlen($identifierHex) > 8) { - throw new DceSecurityException( - 'Local identifier out of bounds; it must be a value between 0 and 4294967295' - ); - } - - $domainByte = pack('n', $localDomain)[1]; - $identifierBytes = (string) hex2bin(str_pad($identifierHex, 8, '0', STR_PAD_LEFT)); - - if ($node instanceof Hexadecimal) { - $node = $node->toString(); - } - - // Shift the clock sequence 8 bits to the left, so it matches 0x3f00. - if ($clockSeq !== null) { - $clockSeq = $clockSeq << 8; - } - - $bytes = $this->timeGenerator->generate($node, $clockSeq); - - // Replace bytes in the time-based UUID with DCE Security values. - $bytes = substr_replace($bytes, $identifierBytes, 0, 4); - - return substr_replace($bytes, $domainByte, 9, 1); - } -} diff --git a/vendor/ramsey/uuid/src/Generator/DceSecurityGeneratorInterface.php b/vendor/ramsey/uuid/src/Generator/DceSecurityGeneratorInterface.php deleted file mode 100644 index faa29a53..00000000 --- a/vendor/ramsey/uuid/src/Generator/DceSecurityGeneratorInterface.php +++ /dev/null @@ -1,53 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Generator; - -use Ramsey\Uuid\Rfc4122\UuidV2; -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Type\Integer as IntegerObject; - -/** - * A DCE Security generator generates strings of binary data based on a local - * domain, local identifier, node ID, clock sequence, and the current time - * - * @see UuidV2 - */ -interface DceSecurityGeneratorInterface -{ - /** - * Generate a binary string from a local domain, local identifier, node ID, - * clock sequence, and current time - * - * @param int $localDomain The local domain to use when generating bytes, - * according to DCE Security - * @param IntegerObject|null $localIdentifier The local identifier for the - * given domain; this may be a UID or GID on POSIX systems, if the local - * domain is person or group, or it may be a site-defined identifier - * if the local domain is org - * @param Hexadecimal|null $node A 48-bit number representing the hardware - * address - * @param int|null $clockSeq A 14-bit number used to help avoid duplicates - * that could arise when the clock is set backwards in time or if the - * node ID changes - * - * @return string A binary string - */ - public function generate( - int $localDomain, - ?IntegerObject $localIdentifier = null, - ?Hexadecimal $node = null, - ?int $clockSeq = null - ): string; -} diff --git a/vendor/ramsey/uuid/src/Generator/DefaultNameGenerator.php b/vendor/ramsey/uuid/src/Generator/DefaultNameGenerator.php deleted file mode 100644 index 7303e9fa..00000000 --- a/vendor/ramsey/uuid/src/Generator/DefaultNameGenerator.php +++ /dev/null @@ -1,48 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Generator; - -use Ramsey\Uuid\Exception\NameException; -use Ramsey\Uuid\UuidInterface; -use ValueError; - -use function hash; - -/** - * DefaultNameGenerator generates strings of binary data based on a namespace, - * name, and hashing algorithm - */ -class DefaultNameGenerator implements NameGeneratorInterface -{ - /** @psalm-pure */ - public function generate(UuidInterface $ns, string $name, string $hashAlgorithm): string - { - try { - /** @var string|bool $bytes */ - $bytes = @hash($hashAlgorithm, $ns->getBytes() . $name, true); - } catch (ValueError $e) { - $bytes = false; // keep same behavior than PHP 7 - } - - if ($bytes === false) { - throw new NameException(sprintf( - 'Unable to hash namespace and name with algorithm \'%s\'', - $hashAlgorithm - )); - } - - return (string) $bytes; - } -} diff --git a/vendor/ramsey/uuid/src/Generator/DefaultTimeGenerator.php b/vendor/ramsey/uuid/src/Generator/DefaultTimeGenerator.php deleted file mode 100644 index ea1e2a6f..00000000 --- a/vendor/ramsey/uuid/src/Generator/DefaultTimeGenerator.php +++ /dev/null @@ -1,129 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Generator; - -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Exception\InvalidArgumentException; -use Ramsey\Uuid\Exception\RandomSourceException; -use Ramsey\Uuid\Exception\TimeSourceException; -use Ramsey\Uuid\Provider\NodeProviderInterface; -use Ramsey\Uuid\Provider\TimeProviderInterface; -use Ramsey\Uuid\Type\Hexadecimal; -use Throwable; - -use function dechex; -use function hex2bin; -use function is_int; -use function pack; -use function preg_match; -use function sprintf; -use function str_pad; -use function strlen; - -use const STR_PAD_LEFT; - -/** - * DefaultTimeGenerator generates strings of binary data based on a node ID, - * clock sequence, and the current time - */ -class DefaultTimeGenerator implements TimeGeneratorInterface -{ - public function __construct( - private NodeProviderInterface $nodeProvider, - private TimeConverterInterface $timeConverter, - private TimeProviderInterface $timeProvider - ) { - } - - /** - * @throws InvalidArgumentException if the parameters contain invalid values - * @throws RandomSourceException if random_int() throws an exception/error - * - * @inheritDoc - */ - public function generate($node = null, ?int $clockSeq = null): string - { - if ($node instanceof Hexadecimal) { - $node = $node->toString(); - } - - $node = $this->getValidNode($node); - - if ($clockSeq === null) { - try { - // This does not use "stable storage"; see RFC 4122, Section 4.2.1.1. - $clockSeq = random_int(0, 0x3fff); - } catch (Throwable $exception) { - throw new RandomSourceException( - $exception->getMessage(), - (int) $exception->getCode(), - $exception - ); - } - } - - $time = $this->timeProvider->getTime(); - - $uuidTime = $this->timeConverter->calculateTime( - $time->getSeconds()->toString(), - $time->getMicroseconds()->toString() - ); - - $timeHex = str_pad($uuidTime->toString(), 16, '0', STR_PAD_LEFT); - - if (strlen($timeHex) !== 16) { - throw new TimeSourceException(sprintf( - 'The generated time of \'%s\' is larger than expected', - $timeHex - )); - } - - $timeBytes = (string) hex2bin($timeHex); - - return $timeBytes[4] . $timeBytes[5] . $timeBytes[6] . $timeBytes[7] - . $timeBytes[2] . $timeBytes[3] - . $timeBytes[0] . $timeBytes[1] - . pack('n*', $clockSeq) - . $node; - } - - /** - * Uses the node provider given when constructing this instance to get - * the node ID (usually a MAC address) - * - * @param int|string|null $node A node value that may be used to override the node provider - * - * @return string 6-byte binary string representation of the node - * - * @throws InvalidArgumentException - */ - private function getValidNode(int | string | null $node): string - { - if ($node === null) { - $node = $this->nodeProvider->getNode(); - } - - // Convert the node to hex, if it is still an integer. - if (is_int($node)) { - $node = dechex($node); - } - - if (!preg_match('/^[A-Fa-f0-9]+$/', (string) $node) || strlen((string) $node) > 12) { - throw new InvalidArgumentException('Invalid node value'); - } - - return (string) hex2bin(str_pad((string) $node, 12, '0', STR_PAD_LEFT)); - } -} diff --git a/vendor/ramsey/uuid/src/Generator/NameGeneratorFactory.php b/vendor/ramsey/uuid/src/Generator/NameGeneratorFactory.php deleted file mode 100644 index 6f08e291..00000000 --- a/vendor/ramsey/uuid/src/Generator/NameGeneratorFactory.php +++ /dev/null @@ -1,30 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Generator; - -/** - * NameGeneratorFactory retrieves a default name generator, based on the - * environment - */ -class NameGeneratorFactory -{ - /** - * Returns a default name generator, based on the current environment - */ - public function getGenerator(): NameGeneratorInterface - { - return new DefaultNameGenerator(); - } -} diff --git a/vendor/ramsey/uuid/src/Generator/NameGeneratorInterface.php b/vendor/ramsey/uuid/src/Generator/NameGeneratorInterface.php deleted file mode 100644 index cc43dd02..00000000 --- a/vendor/ramsey/uuid/src/Generator/NameGeneratorInterface.php +++ /dev/null @@ -1,38 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Generator; - -use Ramsey\Uuid\UuidInterface; - -/** - * A name generator generates strings of binary data created by hashing together - * a namespace with a name, according to a hashing algorithm - */ -interface NameGeneratorInterface -{ - /** - * Generate a binary string from a namespace and name hashed together with - * the specified hashing algorithm - * - * @param UuidInterface $ns The namespace - * @param string $name The name to use for creating a UUID - * @param string $hashAlgorithm The hashing algorithm to use - * - * @return string A binary string - * - * @psalm-pure - */ - public function generate(UuidInterface $ns, string $name, string $hashAlgorithm): string; -} diff --git a/vendor/ramsey/uuid/src/Generator/PeclUuidNameGenerator.php b/vendor/ramsey/uuid/src/Generator/PeclUuidNameGenerator.php deleted file mode 100644 index 6a6d1aec..00000000 --- a/vendor/ramsey/uuid/src/Generator/PeclUuidNameGenerator.php +++ /dev/null @@ -1,49 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Generator; - -use Ramsey\Uuid\Exception\NameException; -use Ramsey\Uuid\UuidInterface; - -use function sprintf; -use function uuid_generate_md5; -use function uuid_generate_sha1; -use function uuid_parse; - -/** - * PeclUuidNameGenerator generates strings of binary data from a namespace and a - * name, using ext-uuid - * - * @link https://pecl.php.net/package/uuid ext-uuid - */ -class PeclUuidNameGenerator implements NameGeneratorInterface -{ - /** @psalm-pure */ - public function generate(UuidInterface $ns, string $name, string $hashAlgorithm): string - { - $uuid = match ($hashAlgorithm) { - 'md5' => uuid_generate_md5($ns->toString(), $name), - 'sha1' => uuid_generate_sha1($ns->toString(), $name), - default => throw new NameException( - sprintf( - 'Unable to hash namespace and name with algorithm \'%s\'', - $hashAlgorithm - ) - ), - }; - - return uuid_parse($uuid); - } -} diff --git a/vendor/ramsey/uuid/src/Generator/PeclUuidRandomGenerator.php b/vendor/ramsey/uuid/src/Generator/PeclUuidRandomGenerator.php deleted file mode 100644 index 07c47d26..00000000 --- a/vendor/ramsey/uuid/src/Generator/PeclUuidRandomGenerator.php +++ /dev/null @@ -1,35 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Generator; - -use function uuid_create; -use function uuid_parse; - -use const UUID_TYPE_RANDOM; - -/** - * PeclUuidRandomGenerator generates strings of random binary data using ext-uuid - * - * @link https://pecl.php.net/package/uuid ext-uuid - */ -class PeclUuidRandomGenerator implements RandomGeneratorInterface -{ - public function generate(int $length): string - { - $uuid = uuid_create(UUID_TYPE_RANDOM); - - return uuid_parse($uuid); - } -} diff --git a/vendor/ramsey/uuid/src/Generator/PeclUuidTimeGenerator.php b/vendor/ramsey/uuid/src/Generator/PeclUuidTimeGenerator.php deleted file mode 100644 index e01f44e5..00000000 --- a/vendor/ramsey/uuid/src/Generator/PeclUuidTimeGenerator.php +++ /dev/null @@ -1,39 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Generator; - -use function uuid_create; -use function uuid_parse; - -use const UUID_TYPE_TIME; - -/** - * PeclUuidTimeGenerator generates strings of binary data for time-base UUIDs, - * using ext-uuid - * - * @link https://pecl.php.net/package/uuid ext-uuid - */ -class PeclUuidTimeGenerator implements TimeGeneratorInterface -{ - /** - * @inheritDoc - */ - public function generate($node = null, ?int $clockSeq = null): string - { - $uuid = uuid_create(UUID_TYPE_TIME); - - return uuid_parse($uuid); - } -} diff --git a/vendor/ramsey/uuid/src/Generator/RandomBytesGenerator.php b/vendor/ramsey/uuid/src/Generator/RandomBytesGenerator.php deleted file mode 100644 index 12edb96a..00000000 --- a/vendor/ramsey/uuid/src/Generator/RandomBytesGenerator.php +++ /dev/null @@ -1,45 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Generator; - -use Ramsey\Uuid\Exception\RandomSourceException; -use Throwable; - -/** - * RandomBytesGenerator generates strings of random binary data using the - * built-in `random_bytes()` PHP function - * - * @link http://php.net/random_bytes random_bytes() - */ -class RandomBytesGenerator implements RandomGeneratorInterface -{ - /** - * @throws RandomSourceException if random_bytes() throws an exception/error - * - * @inheritDoc - */ - public function generate(int $length): string - { - try { - return random_bytes($length); - } catch (Throwable $exception) { - throw new RandomSourceException( - $exception->getMessage(), - (int) $exception->getCode(), - $exception - ); - } - } -} diff --git a/vendor/ramsey/uuid/src/Generator/RandomGeneratorFactory.php b/vendor/ramsey/uuid/src/Generator/RandomGeneratorFactory.php deleted file mode 100644 index b723ac29..00000000 --- a/vendor/ramsey/uuid/src/Generator/RandomGeneratorFactory.php +++ /dev/null @@ -1,30 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Generator; - -/** - * RandomGeneratorFactory retrieves a default random generator, based on the - * environment - */ -class RandomGeneratorFactory -{ - /** - * Returns a default random generator, based on the current environment - */ - public function getGenerator(): RandomGeneratorInterface - { - return new RandomBytesGenerator(); - } -} diff --git a/vendor/ramsey/uuid/src/Generator/RandomGeneratorInterface.php b/vendor/ramsey/uuid/src/Generator/RandomGeneratorInterface.php deleted file mode 100644 index 1180b976..00000000 --- a/vendor/ramsey/uuid/src/Generator/RandomGeneratorInterface.php +++ /dev/null @@ -1,30 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Generator; - -/** - * A random generator generates strings of random binary data - */ -interface RandomGeneratorInterface -{ - /** - * Generates a string of randomized binary data - * - * @param int<1, max> $length The number of bytes of random binary data to generate - * - * @return string A binary string - */ - public function generate(int $length): string; -} diff --git a/vendor/ramsey/uuid/src/Generator/RandomLibAdapter.php b/vendor/ramsey/uuid/src/Generator/RandomLibAdapter.php deleted file mode 100644 index fd0ccc8a..00000000 --- a/vendor/ramsey/uuid/src/Generator/RandomLibAdapter.php +++ /dev/null @@ -1,56 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Generator; - -use RandomLib\Factory; -use RandomLib\Generator; - -/** - * RandomLibAdapter generates strings of random binary data using the - * paragonie/random-lib library - * - * @deprecated This class will be removed in 5.0.0. Use the default - * RandomBytesGenerator or implement your own generator that implements - * RandomGeneratorInterface. - * - * @link https://packagist.org/packages/paragonie/random-lib paragonie/random-lib - */ -class RandomLibAdapter implements RandomGeneratorInterface -{ - private Generator $generator; - - /** - * Constructs a RandomLibAdapter - * - * By default, if no Generator is passed in, this creates a high-strength - * generator to use when generating random binary data. - * - * @param Generator|null $generator The generator to use when generating binary data - */ - public function __construct(?Generator $generator = null) - { - if ($generator === null) { - $factory = new Factory(); - $generator = $factory->getHighStrengthGenerator(); - } - - $this->generator = $generator; - } - - public function generate(int $length): string - { - return $this->generator->generate($length); - } -} diff --git a/vendor/ramsey/uuid/src/Generator/TimeGeneratorFactory.php b/vendor/ramsey/uuid/src/Generator/TimeGeneratorFactory.php deleted file mode 100644 index 8d06fc3a..00000000 --- a/vendor/ramsey/uuid/src/Generator/TimeGeneratorFactory.php +++ /dev/null @@ -1,45 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Generator; - -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Provider\NodeProviderInterface; -use Ramsey\Uuid\Provider\TimeProviderInterface; - -/** - * TimeGeneratorFactory retrieves a default time generator, based on the - * environment - */ -class TimeGeneratorFactory -{ - public function __construct( - private NodeProviderInterface $nodeProvider, - private TimeConverterInterface $timeConverter, - private TimeProviderInterface $timeProvider - ) { - } - - /** - * Returns a default time generator, based on the current environment - */ - public function getGenerator(): TimeGeneratorInterface - { - return new DefaultTimeGenerator( - $this->nodeProvider, - $this->timeConverter, - $this->timeProvider - ); - } -} diff --git a/vendor/ramsey/uuid/src/Generator/TimeGeneratorInterface.php b/vendor/ramsey/uuid/src/Generator/TimeGeneratorInterface.php deleted file mode 100644 index 18f21c4b..00000000 --- a/vendor/ramsey/uuid/src/Generator/TimeGeneratorInterface.php +++ /dev/null @@ -1,38 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Generator; - -use Ramsey\Uuid\Type\Hexadecimal; - -/** - * A time generator generates strings of binary data based on a node ID, - * clock sequence, and the current time - */ -interface TimeGeneratorInterface -{ - /** - * Generate a binary string from a node ID, clock sequence, and current time - * - * @param Hexadecimal|int|string|null $node A 48-bit number representing the - * hardware address; this number may be represented as an integer or a - * hexadecimal string - * @param int|null $clockSeq A 14-bit number used to help avoid duplicates - * that could arise when the clock is set backwards in time or if the - * node ID changes - * - * @return string A binary string - */ - public function generate($node = null, ?int $clockSeq = null): string; -} diff --git a/vendor/ramsey/uuid/src/Generator/UnixTimeGenerator.php b/vendor/ramsey/uuid/src/Generator/UnixTimeGenerator.php deleted file mode 100644 index d7c8ed4e..00000000 --- a/vendor/ramsey/uuid/src/Generator/UnixTimeGenerator.php +++ /dev/null @@ -1,169 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Generator; - -use Brick\Math\BigInteger; -use DateTimeImmutable; -use DateTimeInterface; -use Ramsey\Uuid\Type\Hexadecimal; - -use function hash; -use function pack; -use function str_pad; -use function strlen; -use function substr; -use function substr_replace; -use function unpack; - -use const PHP_INT_SIZE; -use const STR_PAD_LEFT; - -/** - * UnixTimeGenerator generates bytes that combine a 48-bit timestamp in - * milliseconds since the Unix Epoch with 80 random bits - * - * Code and concepts within this class are borrowed from the symfony/uid package - * and are used under the terms of the MIT license distributed with symfony/uid. - * - * symfony/uid is copyright (c) Fabien Potencier. - * - * @link https://symfony.com/components/Uid Symfony Uid component - * @link https://github.com/symfony/uid/blob/4f9f537e57261519808a7ce1d941490736522bbc/UuidV7.php Symfony UuidV7 class - * @link https://github.com/symfony/uid/blob/6.2/LICENSE MIT License - */ -class UnixTimeGenerator implements TimeGeneratorInterface -{ - private static string $time = ''; - private static ?string $seed = null; - private static int $seedIndex = 0; - - /** @var int[] */ - private static array $rand = []; - - /** @var int[] */ - private static array $seedParts; - - public function __construct( - private RandomGeneratorInterface $randomGenerator, - private int $intSize = PHP_INT_SIZE - ) { - } - - /** - * @param Hexadecimal|int|string|null $node Unused in this generator - * @param int|null $clockSeq Unused in this generator - * @param DateTimeInterface $dateTime A date-time instance to use when - * generating bytes - * - * @inheritDoc - */ - public function generate($node = null, ?int $clockSeq = null, ?DateTimeInterface $dateTime = null): string - { - $time = ($dateTime ?? new DateTimeImmutable('now'))->format('Uv'); - - if ($time > self::$time || ($dateTime !== null && $time !== self::$time)) { - $this->randomize($time); - } else { - $time = $this->increment(); - } - - if ($this->intSize >= 8) { - $time = substr(pack('J', (int) $time), -6); - } else { - $time = str_pad(BigInteger::of($time)->toBytes(false), 6, "\x00", STR_PAD_LEFT); - } - - /** @var non-empty-string */ - return $time . pack('n*', self::$rand[1], self::$rand[2], self::$rand[3], self::$rand[4], self::$rand[5]); - } - - private function randomize(string $time): void - { - if (self::$seed === null) { - $seed = $this->randomGenerator->generate(16); - self::$seed = $seed; - } else { - $seed = $this->randomGenerator->generate(10); - } - - /** @var int[] $rand */ - $rand = unpack('n*', $seed); - $rand[1] &= 0x03ff; - - self::$rand = $rand; - self::$time = $time; - } - - /** - * Special thanks to Nicolas Grekas for sharing the following information: - * - * Within the same ms, we increment the rand part by a random 24-bit number. - * - * Instead of getting this number from random_bytes(), which is slow, we get - * it by sha512-hashing self::$seed. This produces 64 bytes of entropy, - * which we need to split in a list of 24-bit numbers. unpack() first splits - * them into 16 x 32-bit numbers; we take the first byte of each of these - * numbers to get 5 extra 24-bit numbers. Then, we consume those numbers - * one-by-one and run this logic every 21 iterations. - * - * self::$rand holds the random part of the UUID, split into 5 x 16-bit - * numbers for x86 portability. We increment this random part by the next - * 24-bit number in the self::$seedParts list and decrement - * self::$seedIndex. - * - * @link https://twitter.com/nicolasgrekas/status/1583356938825261061 Tweet from Nicolas Grekas - */ - private function increment(): string - { - if (self::$seedIndex === 0 && self::$seed !== null) { - self::$seed = hash('sha512', self::$seed, true); - - /** @var int[] $s */ - $s = unpack('l*', self::$seed); - $s[] = ($s[1] >> 8 & 0xff0000) | ($s[2] >> 16 & 0xff00) | ($s[3] >> 24 & 0xff); - $s[] = ($s[4] >> 8 & 0xff0000) | ($s[5] >> 16 & 0xff00) | ($s[6] >> 24 & 0xff); - $s[] = ($s[7] >> 8 & 0xff0000) | ($s[8] >> 16 & 0xff00) | ($s[9] >> 24 & 0xff); - $s[] = ($s[10] >> 8 & 0xff0000) | ($s[11] >> 16 & 0xff00) | ($s[12] >> 24 & 0xff); - $s[] = ($s[13] >> 8 & 0xff0000) | ($s[14] >> 16 & 0xff00) | ($s[15] >> 24 & 0xff); - - self::$seedParts = $s; - self::$seedIndex = 21; - } - - self::$rand[5] = 0xffff & $carry = self::$rand[5] + 1 + (self::$seedParts[self::$seedIndex--] & 0xffffff); - self::$rand[4] = 0xffff & $carry = self::$rand[4] + ($carry >> 16); - self::$rand[3] = 0xffff & $carry = self::$rand[3] + ($carry >> 16); - self::$rand[2] = 0xffff & $carry = self::$rand[2] + ($carry >> 16); - self::$rand[1] += $carry >> 16; - - if (0xfc00 & self::$rand[1]) { - $time = self::$time; - $mtime = (int) substr($time, -9); - - if ($this->intSize >= 8 || strlen($time) < 10) { - $time = (string) ((int) $time + 1); - } elseif ($mtime === 999999999) { - $time = (1 + (int) substr($time, 0, -9)) . '000000000'; - } else { - $mtime++; - $time = substr_replace($time, str_pad((string) $mtime, 9, '0', STR_PAD_LEFT), -9); - } - - $this->randomize($time); - } - - return self::$time; - } -} diff --git a/vendor/ramsey/uuid/src/Guid/Fields.php b/vendor/ramsey/uuid/src/Guid/Fields.php deleted file mode 100644 index 0fc5d1c9..00000000 --- a/vendor/ramsey/uuid/src/Guid/Fields.php +++ /dev/null @@ -1,195 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Guid; - -use Ramsey\Uuid\Exception\InvalidArgumentException; -use Ramsey\Uuid\Fields\SerializableFieldsTrait; -use Ramsey\Uuid\Rfc4122\FieldsInterface; -use Ramsey\Uuid\Rfc4122\MaxTrait; -use Ramsey\Uuid\Rfc4122\NilTrait; -use Ramsey\Uuid\Rfc4122\VariantTrait; -use Ramsey\Uuid\Rfc4122\VersionTrait; -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Uuid; - -use function bin2hex; -use function dechex; -use function hexdec; -use function pack; -use function sprintf; -use function str_pad; -use function strlen; -use function substr; -use function unpack; - -use const STR_PAD_LEFT; - -/** - * GUIDs are comprised of a set of named fields, according to RFC 4122 - * - * @see Guid - * - * @psalm-immutable - */ -final class Fields implements FieldsInterface -{ - use MaxTrait; - use NilTrait; - use SerializableFieldsTrait; - use VariantTrait; - use VersionTrait; - - /** - * @param string $bytes A 16-byte binary string representation of a UUID - * - * @throws InvalidArgumentException if the byte string is not exactly 16 bytes - * @throws InvalidArgumentException if the byte string does not represent a GUID - * @throws InvalidArgumentException if the byte string does not contain a valid version - */ - public function __construct(private string $bytes) - { - if (strlen($this->bytes) !== 16) { - throw new InvalidArgumentException( - 'The byte string must be 16 bytes long; ' - . 'received ' . strlen($this->bytes) . ' bytes' - ); - } - - if (!$this->isCorrectVariant()) { - throw new InvalidArgumentException( - 'The byte string received does not conform to the RFC ' - . '4122 or Microsoft Corporation variants' - ); - } - - if (!$this->isCorrectVersion()) { - throw new InvalidArgumentException( - 'The byte string received does not contain a valid version' - ); - } - } - - public function getBytes(): string - { - return $this->bytes; - } - - public function getTimeLow(): Hexadecimal - { - // Swap the bytes from little endian to network byte order. - /** @var array $hex */ - $hex = unpack( - 'H*', - pack( - 'v*', - hexdec(bin2hex(substr($this->bytes, 2, 2))), - hexdec(bin2hex(substr($this->bytes, 0, 2))) - ) - ); - - return new Hexadecimal((string) ($hex[1] ?? '')); - } - - public function getTimeMid(): Hexadecimal - { - // Swap the bytes from little endian to network byte order. - /** @var array $hex */ - $hex = unpack( - 'H*', - pack( - 'v', - hexdec(bin2hex(substr($this->bytes, 4, 2))) - ) - ); - - return new Hexadecimal((string) ($hex[1] ?? '')); - } - - public function getTimeHiAndVersion(): Hexadecimal - { - // Swap the bytes from little endian to network byte order. - /** @var array $hex */ - $hex = unpack( - 'H*', - pack( - 'v', - hexdec(bin2hex(substr($this->bytes, 6, 2))) - ) - ); - - return new Hexadecimal((string) ($hex[1] ?? '')); - } - - public function getTimestamp(): Hexadecimal - { - return new Hexadecimal(sprintf( - '%03x%04s%08s', - hexdec($this->getTimeHiAndVersion()->toString()) & 0x0fff, - $this->getTimeMid()->toString(), - $this->getTimeLow()->toString() - )); - } - - public function getClockSeq(): Hexadecimal - { - if ($this->isMax()) { - $clockSeq = 0xffff; - } elseif ($this->isNil()) { - $clockSeq = 0x0000; - } else { - $clockSeq = hexdec(bin2hex(substr($this->bytes, 8, 2))) & 0x3fff; - } - - return new Hexadecimal(str_pad(dechex($clockSeq), 4, '0', STR_PAD_LEFT)); - } - - public function getClockSeqHiAndReserved(): Hexadecimal - { - return new Hexadecimal(bin2hex(substr($this->bytes, 8, 1))); - } - - public function getClockSeqLow(): Hexadecimal - { - return new Hexadecimal(bin2hex(substr($this->bytes, 9, 1))); - } - - public function getNode(): Hexadecimal - { - return new Hexadecimal(bin2hex(substr($this->bytes, 10))); - } - - public function getVersion(): ?int - { - if ($this->isNil() || $this->isMax()) { - return null; - } - - /** @var array $parts */ - $parts = unpack('n*', $this->bytes); - - return ((int) $parts[4] >> 4) & 0x00f; - } - - private function isCorrectVariant(): bool - { - if ($this->isNil() || $this->isMax()) { - return true; - } - - $variant = $this->getVariant(); - - return $variant === Uuid::RFC_4122 || $variant === Uuid::RESERVED_MICROSOFT; - } -} diff --git a/vendor/ramsey/uuid/src/Guid/Guid.php b/vendor/ramsey/uuid/src/Guid/Guid.php deleted file mode 100644 index b3ed096a..00000000 --- a/vendor/ramsey/uuid/src/Guid/Guid.php +++ /dev/null @@ -1,61 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Guid; - -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Uuid; - -/** - * Guid represents a UUID with "native" (little-endian) byte order - * - * From Wikipedia: - * - * > The first three fields are unsigned 32- and 16-bit integers and are subject - * > to swapping, while the last two fields consist of uninterpreted bytes, not - * > subject to swapping. This byte swapping applies even for versions 3, 4, and - * > 5, where the canonical fields do not correspond to the content of the UUID. - * - * The first three fields of a GUID are encoded in little-endian byte order, - * while the last three fields are in network (big-endian) byte order. This is - * according to the history of the Microsoft definition of a GUID. - * - * According to the .NET Guid.ToByteArray method documentation: - * - * > Note that the order of bytes in the returned byte array is different from - * > the string representation of a Guid value. The order of the beginning - * > four-byte group and the next two two-byte groups is reversed, whereas the - * > order of the last two-byte group and the closing six-byte group is the - * > same. - * - * @link https://en.wikipedia.org/wiki/Universally_unique_identifier#Variants UUID Variants on Wikipedia - * @link https://docs.microsoft.com/en-us/windows/win32/api/guiddef/ns-guiddef-guid Windows GUID structure - * @link https://docs.microsoft.com/en-us/dotnet/api/system.guid .NET Guid Struct - * @link https://docs.microsoft.com/en-us/dotnet/api/system.guid.tobytearray .NET Guid.ToByteArray Method - * - * @psalm-immutable - */ -final class Guid extends Uuid -{ - public function __construct( - Fields $fields, - NumberConverterInterface $numberConverter, - CodecInterface $codec, - TimeConverterInterface $timeConverter - ) { - parent::__construct($fields, $numberConverter, $codec, $timeConverter); - } -} diff --git a/vendor/ramsey/uuid/src/Guid/GuidBuilder.php b/vendor/ramsey/uuid/src/Guid/GuidBuilder.php deleted file mode 100644 index c036bb20..00000000 --- a/vendor/ramsey/uuid/src/Guid/GuidBuilder.php +++ /dev/null @@ -1,77 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Guid; - -use Ramsey\Uuid\Builder\UuidBuilderInterface; -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Exception\UnableToBuildUuidException; -use Ramsey\Uuid\UuidInterface; -use Throwable; - -/** - * GuidBuilder builds instances of Guid - * - * @see Guid - * - * @psalm-immutable - */ -class GuidBuilder implements UuidBuilderInterface -{ - /** - * @param NumberConverterInterface $numberConverter The number converter to - * use when constructing the Guid - * @param TimeConverterInterface $timeConverter The time converter to use - * for converting timestamps extracted from a UUID to Unix timestamps - */ - public function __construct( - private NumberConverterInterface $numberConverter, - private TimeConverterInterface $timeConverter - ) { - } - - /** - * Builds and returns a Guid - * - * @param CodecInterface $codec The codec to use for building this Guid instance - * @param string $bytes The byte string from which to construct a UUID - * - * @return Guid The GuidBuilder returns an instance of Ramsey\Uuid\Guid\Guid - * - * @psalm-pure - */ - public function build(CodecInterface $codec, string $bytes): UuidInterface - { - try { - return new Guid( - $this->buildFields($bytes), - $this->numberConverter, - $codec, - $this->timeConverter - ); - } catch (Throwable $e) { - throw new UnableToBuildUuidException($e->getMessage(), (int) $e->getCode(), $e); - } - } - - /** - * Proxy method to allow injecting a mock, for testing - */ - protected function buildFields(string $bytes): Fields - { - return new Fields($bytes); - } -} diff --git a/vendor/ramsey/uuid/src/Lazy/LazyUuidFromString.php b/vendor/ramsey/uuid/src/Lazy/LazyUuidFromString.php deleted file mode 100644 index c0b47bbf..00000000 --- a/vendor/ramsey/uuid/src/Lazy/LazyUuidFromString.php +++ /dev/null @@ -1,572 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Lazy; - -use DateTimeInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Exception\UnsupportedOperationException; -use Ramsey\Uuid\Fields\FieldsInterface; -use Ramsey\Uuid\Rfc4122\UuidV1; -use Ramsey\Uuid\Rfc4122\UuidV6; -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Type\Integer as IntegerObject; -use Ramsey\Uuid\UuidFactory; -use Ramsey\Uuid\UuidInterface; -use ValueError; - -use function assert; -use function bin2hex; -use function hex2bin; -use function sprintf; -use function str_replace; -use function substr; - -/** - * Lazy version of a UUID: its format has not been determined yet, so it is mostly only usable for string/bytes - * conversion. This object optimizes instantiation, serialization and string conversion time, at the cost of - * increased overhead for more advanced UUID operations. - * - * @internal this type is used internally for performance reasons, and is not supposed to be directly referenced - * in consumer libraries. - * - * @psalm-immutable - * - * Note: the {@see FieldsInterface} does not declare methods that deprecated API - * relies upon: the API has been ported from the {@see \Ramsey\Uuid\Uuid} definition, - * and is deprecated anyway. - * Note: the deprecated API from {@see \Ramsey\Uuid\Uuid} is in use here (on purpose): it will be removed - * once the deprecated API is gone from this class too. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - */ -final class LazyUuidFromString implements UuidInterface -{ - public const VALID_REGEX = '/\A[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\z/ms'; - - private ?UuidInterface $unwrapped = null; - - /** - * @psalm-param non-empty-string $uuid - */ - public function __construct(private string $uuid) - { - } - - /** @psalm-pure */ - public static function fromBytes(string $bytes): self - { - $base16Uuid = bin2hex($bytes); - - return new self( - substr($base16Uuid, 0, 8) - . '-' - . substr($base16Uuid, 8, 4) - . '-' - . substr($base16Uuid, 12, 4) - . '-' - . substr($base16Uuid, 16, 4) - . '-' - . substr($base16Uuid, 20, 12) - ); - } - - public function serialize(): string - { - return $this->uuid; - } - - /** - * @return array{string: string} - * - * @psalm-return array{string: non-empty-string} - */ - public function __serialize(): array - { - return ['string' => $this->uuid]; - } - - /** - * {@inheritDoc} - * - * @param string $data - * - * @psalm-param non-empty-string $data - */ - public function unserialize(string $data): void - { - $this->uuid = $data; - } - - /** - * @param array{string?: string} $data - * - * @psalm-param array{string?: non-empty-string} $data - * @psalm-suppress UnusedMethodCall - */ - public function __unserialize(array $data): void - { - // @codeCoverageIgnoreStart - if (!isset($data['string'])) { - throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); - } - // @codeCoverageIgnoreEnd - - $this->unserialize($data['string']); - } - - /** @psalm-suppress DeprecatedMethod */ - public function getNumberConverter(): NumberConverterInterface - { - return ($this->unwrapped ?? $this->unwrap()) - ->getNumberConverter(); - } - - /** - * {@inheritDoc} - * - * @psalm-suppress DeprecatedMethod - */ - public function getFieldsHex(): array - { - return ($this->unwrapped ?? $this->unwrap()) - ->getFieldsHex(); - } - - /** @psalm-suppress DeprecatedMethod */ - public function getClockSeqHiAndReservedHex(): string - { - return ($this->unwrapped ?? $this->unwrap()) - ->getClockSeqHiAndReservedHex(); - } - - /** @psalm-suppress DeprecatedMethod */ - public function getClockSeqLowHex(): string - { - return ($this->unwrapped ?? $this->unwrap()) - ->getClockSeqLowHex(); - } - - /** @psalm-suppress DeprecatedMethod */ - public function getClockSequenceHex(): string - { - return ($this->unwrapped ?? $this->unwrap()) - ->getClockSequenceHex(); - } - - /** @psalm-suppress DeprecatedMethod */ - public function getDateTime(): DateTimeInterface - { - return ($this->unwrapped ?? $this->unwrap()) - ->getDateTime(); - } - - /** @psalm-suppress DeprecatedMethod */ - public function getLeastSignificantBitsHex(): string - { - return ($this->unwrapped ?? $this->unwrap()) - ->getLeastSignificantBitsHex(); - } - - /** @psalm-suppress DeprecatedMethod */ - public function getMostSignificantBitsHex(): string - { - return ($this->unwrapped ?? $this->unwrap()) - ->getMostSignificantBitsHex(); - } - - /** @psalm-suppress DeprecatedMethod */ - public function getNodeHex(): string - { - return ($this->unwrapped ?? $this->unwrap()) - ->getNodeHex(); - } - - /** @psalm-suppress DeprecatedMethod */ - public function getTimeHiAndVersionHex(): string - { - return ($this->unwrapped ?? $this->unwrap()) - ->getTimeHiAndVersionHex(); - } - - /** @psalm-suppress DeprecatedMethod */ - public function getTimeLowHex(): string - { - return ($this->unwrapped ?? $this->unwrap()) - ->getTimeLowHex(); - } - - /** @psalm-suppress DeprecatedMethod */ - public function getTimeMidHex(): string - { - return ($this->unwrapped ?? $this->unwrap()) - ->getTimeMidHex(); - } - - /** @psalm-suppress DeprecatedMethod */ - public function getTimestampHex(): string - { - return ($this->unwrapped ?? $this->unwrap()) - ->getTimestampHex(); - } - - /** @psalm-suppress DeprecatedMethod */ - public function getUrn(): string - { - return ($this->unwrapped ?? $this->unwrap()) - ->getUrn(); - } - - /** @psalm-suppress DeprecatedMethod */ - public function getVariant(): ?int - { - return ($this->unwrapped ?? $this->unwrap()) - ->getVariant(); - } - - /** @psalm-suppress DeprecatedMethod */ - public function getVersion(): ?int - { - return ($this->unwrapped ?? $this->unwrap()) - ->getVersion(); - } - - public function compareTo(UuidInterface $other): int - { - return ($this->unwrapped ?? $this->unwrap()) - ->compareTo($other); - } - - public function equals(?object $other): bool - { - if (! $other instanceof UuidInterface) { - return false; - } - - return $this->uuid === $other->toString(); - } - - /** - * {@inheritDoc} - * - * @psalm-suppress MoreSpecificReturnType - * @psalm-suppress LessSpecificReturnStatement we know that {@see self::$uuid} is a non-empty string, so - * we know that {@see hex2bin} will retrieve a non-empty string too. - */ - public function getBytes(): string - { - /** @phpstan-ignore-next-line PHPStan complains that this is not a non-empty-string. */ - return (string) hex2bin(str_replace('-', '', $this->uuid)); - } - - public function getFields(): FieldsInterface - { - return ($this->unwrapped ?? $this->unwrap()) - ->getFields(); - } - - public function getHex(): Hexadecimal - { - return ($this->unwrapped ?? $this->unwrap()) - ->getHex(); - } - - public function getInteger(): IntegerObject - { - return ($this->unwrapped ?? $this->unwrap()) - ->getInteger(); - } - - public function toString(): string - { - return $this->uuid; - } - - public function __toString(): string - { - return $this->uuid; - } - - public function jsonSerialize(): string - { - return $this->uuid; - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} - * instance, you may call {@see Rfc4122FieldsInterface::getClockSeqHiAndReserved()} - * and use the arbitrary-precision math library of your choice to - * convert it to a string integer. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall - */ - public function getClockSeqHiAndReserved(): string - { - $instance = ($this->unwrapped ?? $this->unwrap()); - - return $instance->getNumberConverter() - ->fromHex( - $instance->getFields() - ->getClockSeqHiAndReserved() - ->toString() - ); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} - * instance, you may call {@see Rfc4122FieldsInterface::getClockSeqLow()} - * and use the arbitrary-precision math library of your choice to - * convert it to a string integer. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall - */ - public function getClockSeqLow(): string - { - $instance = ($this->unwrapped ?? $this->unwrap()); - - return $instance->getNumberConverter() - ->fromHex( - $instance->getFields() - ->getClockSeqLow() - ->toString() - ); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} - * instance, you may call {@see Rfc4122FieldsInterface::getClockSeq()} - * and use the arbitrary-precision math library of your choice to - * convert it to a string integer. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall - */ - public function getClockSequence(): string - { - $instance = ($this->unwrapped ?? $this->unwrap()); - - return $instance->getNumberConverter() - ->fromHex( - $instance->getFields() - ->getClockSeq() - ->toString() - ); - } - - /** - * @deprecated This method will be removed in 5.0.0. There is no direct - * alternative, but the same information may be obtained by splitting - * in half the value returned by {@see UuidInterface::getHex()}. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall - */ - public function getLeastSignificantBits(): string - { - $instance = ($this->unwrapped ?? $this->unwrap()); - - return $instance->getNumberConverter() - ->fromHex(substr($instance->getHex()->toString(), 16)); - } - - /** - * @deprecated This method will be removed in 5.0.0. There is no direct - * alternative, but the same information may be obtained by splitting - * in half the value returned by {@see UuidInterface::getHex()}. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall - */ - public function getMostSignificantBits(): string - { - $instance = ($this->unwrapped ?? $this->unwrap()); - - return $instance->getNumberConverter() - ->fromHex(substr($instance->getHex()->toString(), 0, 16)); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} - * instance, you may call {@see Rfc4122FieldsInterface::getNode()} - * and use the arbitrary-precision math library of your choice to - * convert it to a string integer. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall - */ - public function getNode(): string - { - $instance = ($this->unwrapped ?? $this->unwrap()); - - return $instance->getNumberConverter() - ->fromHex( - $instance->getFields() - ->getNode() - ->toString() - ); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} - * instance, you may call {@see Rfc4122FieldsInterface::getTimeHiAndVersion()} - * and use the arbitrary-precision math library of your choice to - * convert it to a string integer. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall - */ - public function getTimeHiAndVersion(): string - { - $instance = ($this->unwrapped ?? $this->unwrap()); - - return $instance->getNumberConverter() - ->fromHex( - $instance->getFields() - ->getTimeHiAndVersion() - ->toString() - ); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} - * instance, you may call {@see Rfc4122FieldsInterface::getTimeLow()} - * and use the arbitrary-precision math library of your choice to - * convert it to a string integer. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall - */ - public function getTimeLow(): string - { - $instance = ($this->unwrapped ?? $this->unwrap()); - - return $instance->getNumberConverter() - ->fromHex( - $instance->getFields() - ->getTimeLow() - ->toString() - ); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} - * instance, you may call {@see Rfc4122FieldsInterface::getTimeMid()} - * and use the arbitrary-precision math library of your choice to - * convert it to a string integer. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall - */ - public function getTimeMid(): string - { - $instance = ($this->unwrapped ?? $this->unwrap()); - - return $instance->getNumberConverter() - ->fromHex( - $instance->getFields() - ->getTimeMid() - ->toString() - ); - } - - /** - * @deprecated Use {@see UuidInterface::getFields()} to get a - * {@see FieldsInterface} instance. If it is a {@see Rfc4122FieldsInterface} - * instance, you may call {@see Rfc4122FieldsInterface::getTimestamp()} - * and use the arbitrary-precision math library of your choice to - * convert it to a string integer. - * - * @psalm-suppress UndefinedInterfaceMethod - * @psalm-suppress DeprecatedMethod - * @psalm-suppress MixedArgument - * @psalm-suppress MixedMethodCall - */ - public function getTimestamp(): string - { - $instance = ($this->unwrapped ?? $this->unwrap()); - $fields = $instance->getFields(); - - if ($fields->getVersion() !== 1) { - throw new UnsupportedOperationException('Not a time-based UUID'); - } - - return $instance->getNumberConverter() - ->fromHex($fields->getTimestamp()->toString()); - } - - public function toUuidV1(): UuidV1 - { - $instance = ($this->unwrapped ?? $this->unwrap()); - - if ($instance instanceof UuidV1) { - return $instance; - } - - assert($instance instanceof UuidV6); - - return $instance->toUuidV1(); - } - - public function toUuidV6(): UuidV6 - { - $instance = ($this->unwrapped ?? $this->unwrap()); - - assert($instance instanceof UuidV6); - - return $instance; - } - - /** - * @psalm-suppress ImpureMethodCall the retrieval of the factory is a clear violation of purity here: this is a - * known pitfall of the design of this library, where a value object contains - * a mutable reference to a factory. We use a fixed factory here, so the violation - * will not have real-world effects, as this object is only instantiated with the - * default factory settings/features. - * @psalm-suppress InaccessibleProperty property {@see $unwrapped} is used as a cache: we don't expose it to the - * outside world, so we should be fine here. - */ - private function unwrap(): UuidInterface - { - return $this->unwrapped = (new UuidFactory()) - ->fromString($this->uuid); - } -} diff --git a/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php b/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php deleted file mode 100644 index f2d86788..00000000 --- a/vendor/ramsey/uuid/src/Math/BrickMathCalculator.php +++ /dev/null @@ -1,144 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Math; - -use Brick\Math\BigDecimal; -use Brick\Math\BigInteger; -use Brick\Math\Exception\MathException; -use Brick\Math\RoundingMode as BrickMathRounding; -use Ramsey\Uuid\Exception\InvalidArgumentException; -use Ramsey\Uuid\Type\Decimal; -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Type\Integer as IntegerObject; -use Ramsey\Uuid\Type\NumberInterface; - -/** - * A calculator using the brick/math library for arbitrary-precision arithmetic - * - * @psalm-immutable - */ -final class BrickMathCalculator implements CalculatorInterface -{ - private const ROUNDING_MODE_MAP = [ - RoundingMode::UNNECESSARY => BrickMathRounding::UNNECESSARY, - RoundingMode::UP => BrickMathRounding::UP, - RoundingMode::DOWN => BrickMathRounding::DOWN, - RoundingMode::CEILING => BrickMathRounding::CEILING, - RoundingMode::FLOOR => BrickMathRounding::FLOOR, - RoundingMode::HALF_UP => BrickMathRounding::HALF_UP, - RoundingMode::HALF_DOWN => BrickMathRounding::HALF_DOWN, - RoundingMode::HALF_CEILING => BrickMathRounding::HALF_CEILING, - RoundingMode::HALF_FLOOR => BrickMathRounding::HALF_FLOOR, - RoundingMode::HALF_EVEN => BrickMathRounding::HALF_EVEN, - ]; - - public function add(NumberInterface $augend, NumberInterface ...$addends): NumberInterface - { - $sum = BigInteger::of($augend->toString()); - - foreach ($addends as $addend) { - $sum = $sum->plus($addend->toString()); - } - - return new IntegerObject((string) $sum); - } - - public function subtract(NumberInterface $minuend, NumberInterface ...$subtrahends): NumberInterface - { - $difference = BigInteger::of($minuend->toString()); - - foreach ($subtrahends as $subtrahend) { - $difference = $difference->minus($subtrahend->toString()); - } - - return new IntegerObject((string) $difference); - } - - public function multiply(NumberInterface $multiplicand, NumberInterface ...$multipliers): NumberInterface - { - $product = BigInteger::of($multiplicand->toString()); - - foreach ($multipliers as $multiplier) { - $product = $product->multipliedBy($multiplier->toString()); - } - - return new IntegerObject((string) $product); - } - - public function divide( - int $roundingMode, - int $scale, - NumberInterface $dividend, - NumberInterface ...$divisors - ): NumberInterface { - $brickRounding = $this->getBrickRoundingMode($roundingMode); - - $quotient = BigDecimal::of($dividend->toString()); - - foreach ($divisors as $divisor) { - $quotient = $quotient->dividedBy($divisor->toString(), $scale, $brickRounding); - } - - if ($scale === 0) { - return new IntegerObject((string) $quotient->toBigInteger()); - } - - return new Decimal((string) $quotient); - } - - public function fromBase(string $value, int $base): IntegerObject - { - try { - return new IntegerObject((string) BigInteger::fromBase($value, $base)); - } catch (MathException | \InvalidArgumentException $exception) { - throw new InvalidArgumentException( - $exception->getMessage(), - (int) $exception->getCode(), - $exception - ); - } - } - - public function toBase(IntegerObject $value, int $base): string - { - try { - return BigInteger::of($value->toString())->toBase($base); - } catch (MathException | \InvalidArgumentException $exception) { - throw new InvalidArgumentException( - $exception->getMessage(), - (int) $exception->getCode(), - $exception - ); - } - } - - public function toHexadecimal(IntegerObject $value): Hexadecimal - { - return new Hexadecimal($this->toBase($value, 16)); - } - - public function toInteger(Hexadecimal $value): IntegerObject - { - return $this->fromBase($value->toString(), 16); - } - - /** - * Maps ramsey/uuid rounding modes to those used by brick/math - */ - private function getBrickRoundingMode(int $roundingMode): int - { - return self::ROUNDING_MODE_MAP[$roundingMode] ?? 0; - } -} diff --git a/vendor/ramsey/uuid/src/Math/CalculatorInterface.php b/vendor/ramsey/uuid/src/Math/CalculatorInterface.php deleted file mode 100644 index f03645d0..00000000 --- a/vendor/ramsey/uuid/src/Math/CalculatorInterface.php +++ /dev/null @@ -1,106 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Math; - -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Type\Integer as IntegerObject; -use Ramsey\Uuid\Type\NumberInterface; - -/** - * A calculator performs arithmetic operations on numbers - * - * @psalm-immutable - */ -interface CalculatorInterface -{ - /** - * Returns the sum of all the provided parameters - * - * @param NumberInterface $augend The first addend (the integer being added to) - * @param NumberInterface ...$addends The additional integers to a add to the augend - * - * @return NumberInterface The sum of all the parameters - */ - public function add(NumberInterface $augend, NumberInterface ...$addends): NumberInterface; - - /** - * Returns the difference of all the provided parameters - * - * @param NumberInterface $minuend The integer being subtracted from - * @param NumberInterface ...$subtrahends The integers to subtract from the minuend - * - * @return NumberInterface The difference after subtracting all parameters - */ - public function subtract(NumberInterface $minuend, NumberInterface ...$subtrahends): NumberInterface; - - /** - * Returns the product of all the provided parameters - * - * @param NumberInterface $multiplicand The integer to be multiplied - * @param NumberInterface ...$multipliers The factors by which to multiply the multiplicand - * - * @return NumberInterface The product of multiplying all the provided parameters - */ - public function multiply(NumberInterface $multiplicand, NumberInterface ...$multipliers): NumberInterface; - - /** - * Returns the quotient of the provided parameters divided left-to-right - * - * @param int $roundingMode The RoundingMode constant to use for this operation - * @param int $scale The scale to use for this operation - * @param NumberInterface $dividend The integer to be divided - * @param NumberInterface ...$divisors The integers to divide $dividend by, in - * the order in which the division operations should take place - * (left-to-right) - * - * @return NumberInterface The quotient of dividing the provided parameters left-to-right - */ - public function divide( - int $roundingMode, - int $scale, - NumberInterface $dividend, - NumberInterface ...$divisors - ): NumberInterface; - - /** - * Converts a value from an arbitrary base to a base-10 integer value - * - * @param string $value The value to convert - * @param int $base The base to convert from (i.e., 2, 16, 32, etc.) - * - * @return IntegerObject The base-10 integer value of the converted value - */ - public function fromBase(string $value, int $base): IntegerObject; - - /** - * Converts a base-10 integer value to an arbitrary base - * - * @param IntegerObject $value The integer value to convert - * @param int $base The base to convert to (i.e., 2, 16, 32, etc.) - * - * @return string The value represented in the specified base - */ - public function toBase(IntegerObject $value, int $base): string; - - /** - * Converts an Integer instance to a Hexadecimal instance - */ - public function toHexadecimal(IntegerObject $value): Hexadecimal; - - /** - * Converts a Hexadecimal instance to an Integer instance - */ - public function toInteger(Hexadecimal $value): IntegerObject; -} diff --git a/vendor/ramsey/uuid/src/Math/RoundingMode.php b/vendor/ramsey/uuid/src/Math/RoundingMode.php deleted file mode 100644 index e710270d..00000000 --- a/vendor/ramsey/uuid/src/Math/RoundingMode.php +++ /dev/null @@ -1,146 +0,0 @@ -= 0.5; otherwise, behaves - * as for DOWN. Note that this is the rounding mode commonly taught at - * school. - */ - public const HALF_UP = 5; - - /** - * Rounds towards "nearest neighbor" unless both neighbors are equidistant, - * in which case round down. - * - * Behaves as for UP if the discarded fraction is > 0.5; otherwise, behaves - * as for DOWN. - */ - public const HALF_DOWN = 6; - - /** - * Rounds towards "nearest neighbor" unless both neighbors are equidistant, - * in which case round towards positive infinity. - * - * If the result is positive, behaves as for HALF_UP; if negative, behaves - * as for HALF_DOWN. - */ - public const HALF_CEILING = 7; - - /** - * Rounds towards "nearest neighbor" unless both neighbors are equidistant, - * in which case round towards negative infinity. - * - * If the result is positive, behaves as for HALF_DOWN; if negative, behaves - * as for HALF_UP. - */ - public const HALF_FLOOR = 8; - - /** - * Rounds towards the "nearest neighbor" unless both neighbors are - * equidistant, in which case rounds towards the even neighbor. - * - * Behaves as for HALF_UP if the digit to the left of the discarded fraction - * is odd; behaves as for HALF_DOWN if it's even. - * - * Note that this is the rounding mode that statistically minimizes - * cumulative error when applied repeatedly over a sequence of calculations. - * It is sometimes known as "Banker's rounding", and is chiefly used in the - * USA. - */ - public const HALF_EVEN = 9; -} diff --git a/vendor/ramsey/uuid/src/Nonstandard/Fields.php b/vendor/ramsey/uuid/src/Nonstandard/Fields.php deleted file mode 100644 index 5dfe6107..00000000 --- a/vendor/ramsey/uuid/src/Nonstandard/Fields.php +++ /dev/null @@ -1,131 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Nonstandard; - -use Ramsey\Uuid\Exception\InvalidArgumentException; -use Ramsey\Uuid\Fields\SerializableFieldsTrait; -use Ramsey\Uuid\Rfc4122\FieldsInterface; -use Ramsey\Uuid\Rfc4122\VariantTrait; -use Ramsey\Uuid\Type\Hexadecimal; - -use function bin2hex; -use function dechex; -use function hexdec; -use function sprintf; -use function str_pad; -use function strlen; -use function substr; - -use const STR_PAD_LEFT; - -/** - * Nonstandard UUID fields do not conform to the RFC 4122 standard - * - * Since some systems may create nonstandard UUIDs, this implements the - * Rfc4122\FieldsInterface, so that functionality of a nonstandard UUID is not - * degraded, in the event these UUIDs are expected to contain RFC 4122 fields. - * - * Internally, this class represents the fields together as a 16-byte binary - * string. - * - * @psalm-immutable - */ -final class Fields implements FieldsInterface -{ - use SerializableFieldsTrait; - use VariantTrait; - - /** - * @param string $bytes A 16-byte binary string representation of a UUID - * - * @throws InvalidArgumentException if the byte string is not exactly 16 bytes - */ - public function __construct(private string $bytes) - { - if (strlen($this->bytes) !== 16) { - throw new InvalidArgumentException( - 'The byte string must be 16 bytes long; ' - . 'received ' . strlen($this->bytes) . ' bytes' - ); - } - } - - public function getBytes(): string - { - return $this->bytes; - } - - public function getClockSeq(): Hexadecimal - { - $clockSeq = hexdec(bin2hex(substr($this->bytes, 8, 2))) & 0x3fff; - - return new Hexadecimal(str_pad(dechex($clockSeq), 4, '0', STR_PAD_LEFT)); - } - - public function getClockSeqHiAndReserved(): Hexadecimal - { - return new Hexadecimal(bin2hex(substr($this->bytes, 8, 1))); - } - - public function getClockSeqLow(): Hexadecimal - { - return new Hexadecimal(bin2hex(substr($this->bytes, 9, 1))); - } - - public function getNode(): Hexadecimal - { - return new Hexadecimal(bin2hex(substr($this->bytes, 10))); - } - - public function getTimeHiAndVersion(): Hexadecimal - { - return new Hexadecimal(bin2hex(substr($this->bytes, 6, 2))); - } - - public function getTimeLow(): Hexadecimal - { - return new Hexadecimal(bin2hex(substr($this->bytes, 0, 4))); - } - - public function getTimeMid(): Hexadecimal - { - return new Hexadecimal(bin2hex(substr($this->bytes, 4, 2))); - } - - public function getTimestamp(): Hexadecimal - { - return new Hexadecimal(sprintf( - '%03x%04s%08s', - hexdec($this->getTimeHiAndVersion()->toString()) & 0x0fff, - $this->getTimeMid()->toString(), - $this->getTimeLow()->toString() - )); - } - - public function getVersion(): ?int - { - return null; - } - - public function isNil(): bool - { - return false; - } - - public function isMax(): bool - { - return false; - } -} diff --git a/vendor/ramsey/uuid/src/Nonstandard/Uuid.php b/vendor/ramsey/uuid/src/Nonstandard/Uuid.php deleted file mode 100644 index 715f8255..00000000 --- a/vendor/ramsey/uuid/src/Nonstandard/Uuid.php +++ /dev/null @@ -1,37 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Nonstandard; - -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Uuid as BaseUuid; - -/** - * Nonstandard\Uuid is a UUID that doesn't conform to RFC 4122 - * - * @psalm-immutable - */ -final class Uuid extends BaseUuid -{ - public function __construct( - Fields $fields, - NumberConverterInterface $numberConverter, - CodecInterface $codec, - TimeConverterInterface $timeConverter - ) { - parent::__construct($fields, $numberConverter, $codec, $timeConverter); - } -} diff --git a/vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php b/vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php deleted file mode 100644 index 82efd402..00000000 --- a/vendor/ramsey/uuid/src/Nonstandard/UuidBuilder.php +++ /dev/null @@ -1,76 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Nonstandard; - -use Ramsey\Uuid\Builder\UuidBuilderInterface; -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Exception\UnableToBuildUuidException; -use Ramsey\Uuid\UuidInterface; -use Throwable; - -/** - * Nonstandard\UuidBuilder builds instances of Nonstandard\Uuid - * - * @psalm-immutable - */ -class UuidBuilder implements UuidBuilderInterface -{ - /** - * @param NumberConverterInterface $numberConverter The number converter to - * use when constructing the Nonstandard\Uuid - * @param TimeConverterInterface $timeConverter The time converter to use - * for converting timestamps extracted from a UUID to Unix timestamps - */ - public function __construct( - private NumberConverterInterface $numberConverter, - private TimeConverterInterface $timeConverter - ) { - } - - /** - * Builds and returns a Nonstandard\Uuid - * - * @param CodecInterface $codec The codec to use for building this instance - * @param string $bytes The byte string from which to construct a UUID - * - * @return Uuid The Nonstandard\UuidBuilder returns an instance of - * Nonstandard\Uuid - * - * @psalm-pure - */ - public function build(CodecInterface $codec, string $bytes): UuidInterface - { - try { - return new Uuid( - $this->buildFields($bytes), - $this->numberConverter, - $codec, - $this->timeConverter - ); - } catch (Throwable $e) { - throw new UnableToBuildUuidException($e->getMessage(), (int) $e->getCode(), $e); - } - } - - /** - * Proxy method to allow injecting a mock, for testing - */ - protected function buildFields(string $bytes): Fields - { - return new Fields($bytes); - } -} diff --git a/vendor/ramsey/uuid/src/Nonstandard/UuidV6.php b/vendor/ramsey/uuid/src/Nonstandard/UuidV6.php deleted file mode 100644 index 7497dd10..00000000 --- a/vendor/ramsey/uuid/src/Nonstandard/UuidV6.php +++ /dev/null @@ -1,105 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Nonstandard; - -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Exception\InvalidArgumentException; -use Ramsey\Uuid\Lazy\LazyUuidFromString; -use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; -use Ramsey\Uuid\Rfc4122\TimeTrait; -use Ramsey\Uuid\Rfc4122\UuidInterface; -use Ramsey\Uuid\Rfc4122\UuidV1; -use Ramsey\Uuid\Uuid as BaseUuid; - -/** - * Reordered time, or version 6, UUIDs include timestamp, clock sequence, and - * node values that are combined into a 128-bit unsigned integer - * - * @deprecated Use {@see \Ramsey\Uuid\Rfc4122\UuidV6} instead. - * - * @link https://github.com/uuid6/uuid6-ietf-draft UUID version 6 IETF draft - * @link http://gh.peabody.io/uuidv6/ "Version 6" UUIDs - * - * @psalm-immutable - */ -class UuidV6 extends BaseUuid implements UuidInterface -{ - use TimeTrait; - - /** - * Creates a version 6 (reordered time) UUID - * - * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID - * @param NumberConverterInterface $numberConverter The number converter to use - * for converting hex values to/from integers - * @param CodecInterface $codec The codec to use when encoding or decoding - * UUID strings - * @param TimeConverterInterface $timeConverter The time converter to use - * for converting timestamps extracted from a UUID to unix timestamps - */ - public function __construct( - Rfc4122FieldsInterface $fields, - NumberConverterInterface $numberConverter, - CodecInterface $codec, - TimeConverterInterface $timeConverter - ) { - if ($fields->getVersion() !== Uuid::UUID_TYPE_REORDERED_TIME) { - throw new InvalidArgumentException( - 'Fields used to create a UuidV6 must represent a ' - . 'version 6 (reordered time) UUID' - ); - } - - parent::__construct($fields, $numberConverter, $codec, $timeConverter); - } - - /** - * Converts this UUID into an instance of a version 1 UUID - */ - public function toUuidV1(): UuidV1 - { - $hex = $this->getHex()->toString(); - $hex = substr($hex, 7, 5) - . substr($hex, 13, 3) - . substr($hex, 3, 4) - . '1' . substr($hex, 0, 3) - . substr($hex, 16); - - /** @var LazyUuidFromString $uuid */ - $uuid = Uuid::fromBytes((string) hex2bin($hex)); - - return $uuid->toUuidV1(); - } - - /** - * Converts a version 1 UUID into an instance of a version 6 UUID - */ - public static function fromUuidV1(UuidV1 $uuidV1): \Ramsey\Uuid\Rfc4122\UuidV6 - { - $hex = $uuidV1->getHex()->toString(); - $hex = substr($hex, 13, 3) - . substr($hex, 8, 4) - . substr($hex, 0, 5) - . '6' . substr($hex, 5, 3) - . substr($hex, 16); - - /** @var LazyUuidFromString $uuid */ - $uuid = Uuid::fromBytes((string) hex2bin($hex)); - - return $uuid->toUuidV6(); - } -} diff --git a/vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php b/vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php deleted file mode 100644 index d5b6cf0c..00000000 --- a/vendor/ramsey/uuid/src/Provider/Dce/SystemDceSecurityProvider.php +++ /dev/null @@ -1,231 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Provider\Dce; - -use Ramsey\Uuid\Exception\DceSecurityException; -use Ramsey\Uuid\Provider\DceSecurityProviderInterface; -use Ramsey\Uuid\Type\Integer as IntegerObject; - -use function escapeshellarg; -use function preg_split; -use function str_getcsv; -use function strrpos; -use function strtolower; -use function strtoupper; -use function substr; -use function trim; - -use const PREG_SPLIT_NO_EMPTY; - -/** - * SystemDceSecurityProvider retrieves the user or group identifiers from the system - */ -class SystemDceSecurityProvider implements DceSecurityProviderInterface -{ - /** - * @throws DceSecurityException if unable to get a user identifier - * - * @inheritDoc - */ - public function getUid(): IntegerObject - { - /** @var int|float|string|IntegerObject|null $uid */ - static $uid = null; - - if ($uid instanceof IntegerObject) { - return $uid; - } - - if ($uid === null) { - $uid = $this->getSystemUid(); - } - - if ($uid === '') { - throw new DceSecurityException( - 'Unable to get a user identifier using the system DCE ' - . 'Security provider; please provide a custom identifier or ' - . 'use a different provider' - ); - } - - $uid = new IntegerObject($uid); - - return $uid; - } - - /** - * @throws DceSecurityException if unable to get a group identifier - * - * @inheritDoc - */ - public function getGid(): IntegerObject - { - /** @var int|float|string|IntegerObject|null $gid */ - static $gid = null; - - if ($gid instanceof IntegerObject) { - return $gid; - } - - if ($gid === null) { - $gid = $this->getSystemGid(); - } - - if ($gid === '') { - throw new DceSecurityException( - 'Unable to get a group identifier using the system DCE ' - . 'Security provider; please provide a custom identifier or ' - . 'use a different provider' - ); - } - - $gid = new IntegerObject($gid); - - return $gid; - } - - /** - * Returns the UID from the system - */ - private function getSystemUid(): string - { - if (!$this->hasShellExec()) { - return ''; - } - - return match ($this->getOs()) { - 'WIN' => $this->getWindowsUid(), - default => trim((string) shell_exec('id -u')), - }; - } - - /** - * Returns the GID from the system - */ - private function getSystemGid(): string - { - if (!$this->hasShellExec()) { - return ''; - } - - return match ($this->getOs()) { - 'WIN' => $this->getWindowsGid(), - default => trim((string) shell_exec('id -g')), - }; - } - - /** - * Returns true if shell_exec() is available for use - */ - private function hasShellExec(): bool - { - $disabledFunctions = strtolower((string) ini_get('disable_functions')); - - return !str_contains($disabledFunctions, 'shell_exec'); - } - - /** - * Returns the PHP_OS string - */ - private function getOs(): string - { - /** - * @psalm-suppress UnnecessaryVarAnnotation - * @var string $phpOs - */ - $phpOs = constant('PHP_OS'); - - return strtoupper(substr($phpOs, 0, 3)); - } - - /** - * Returns the user identifier for a user on a Windows system - * - * Windows does not have the same concept as an effective POSIX UID for the - * running script. Instead, each user is uniquely identified by an SID - * (security identifier). The SID includes three 32-bit unsigned integers - * that make up a unique domain identifier, followed by an RID (relative - * identifier) that we will use as the UID. The primary caveat is that this - * UID may not be unique to the system, since it is, instead, unique to the - * domain. - * - * @link https://www.lifewire.com/what-is-an-sid-number-2626005 What Is an SID Number? - * @link https://bit.ly/30vE7NM Well-known SID Structures - * @link https://bit.ly/2FWcYKJ Well-known security identifiers in Windows operating systems - * @link https://www.windows-commandline.com/get-sid-of-user/ Get SID of user - */ - private function getWindowsUid(): string - { - $response = shell_exec('whoami /user /fo csv /nh'); - - if ($response === null) { - return ''; - } - - $sid = str_getcsv(trim((string) $response))[1] ?? ''; - - if (($lastHyphen = strrpos($sid, '-')) === false) { - return ''; - } - - return trim(substr($sid, $lastHyphen + 1)); - } - - /** - * Returns a group identifier for a user on a Windows system - * - * Since Windows does not have the same concept as an effective POSIX GID - * for the running script, we will get the local group memberships for the - * user running the script. Then, we will get the SID (security identifier) - * for the first group that appears in that list. Finally, we will return - * the RID (relative identifier) for the group and use that as the GID. - * - * @link https://www.windows-commandline.com/list-of-user-groups-command-line/ List of user groups command line - */ - private function getWindowsGid(): string - { - $response = shell_exec('net user %username% | findstr /b /i "Local Group Memberships"'); - - if ($response === null) { - return ''; - } - - /** @var string[] $userGroups */ - $userGroups = preg_split('/\s{2,}/', (string) $response, -1, PREG_SPLIT_NO_EMPTY); - - $firstGroup = trim($userGroups[1] ?? '', "* \t\n\r\0\x0B"); - - if ($firstGroup === '') { - return ''; - } - - $response = shell_exec('wmic group get name,sid | findstr /b /i ' . escapeshellarg($firstGroup)); - - if ($response === null) { - return ''; - } - - /** @var string[] $userGroup */ - $userGroup = preg_split('/\s{2,}/', (string) $response, -1, PREG_SPLIT_NO_EMPTY); - - $sid = $userGroup[1] ?? ''; - - if (($lastHyphen = strrpos($sid, '-')) === false) { - return ''; - } - - return trim(substr($sid, $lastHyphen + 1)); - } -} diff --git a/vendor/ramsey/uuid/src/Provider/DceSecurityProviderInterface.php b/vendor/ramsey/uuid/src/Provider/DceSecurityProviderInterface.php deleted file mode 100644 index 8325da69..00000000 --- a/vendor/ramsey/uuid/src/Provider/DceSecurityProviderInterface.php +++ /dev/null @@ -1,41 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Provider; - -use Ramsey\Uuid\Rfc4122\UuidV2; -use Ramsey\Uuid\Type\Integer as IntegerObject; - -/** - * A DCE provider provides access to local domain identifiers for version 2, - * DCE Security, UUIDs - * - * @see UuidV2 - */ -interface DceSecurityProviderInterface -{ - /** - * Returns a user identifier for the system - * - * @link https://en.wikipedia.org/wiki/User_identifier User identifier - */ - public function getUid(): IntegerObject; - - /** - * Returns a group identifier for the system - * - * @link https://en.wikipedia.org/wiki/Group_identifier Group identifier - */ - public function getGid(): IntegerObject; -} diff --git a/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php b/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php deleted file mode 100644 index d2eb20b7..00000000 --- a/vendor/ramsey/uuid/src/Provider/Node/FallbackNodeProvider.php +++ /dev/null @@ -1,54 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Provider\Node; - -use Ramsey\Uuid\Exception\NodeException; -use Ramsey\Uuid\Provider\NodeProviderInterface; -use Ramsey\Uuid\Type\Hexadecimal; - -/** - * FallbackNodeProvider retrieves the system node ID by stepping through a list - * of providers until a node ID can be obtained - */ -class FallbackNodeProvider implements NodeProviderInterface -{ - /** - * @param iterable $providers Array of node providers - */ - public function __construct(private iterable $providers) - { - } - - public function getNode(): Hexadecimal - { - $lastProviderException = null; - - foreach ($this->providers as $provider) { - try { - return $provider->getNode(); - } catch (NodeException $exception) { - $lastProviderException = $exception; - - continue; - } - } - - throw new NodeException( - 'Unable to find a suitable node provider', - 0, - $lastProviderException - ); - } -} diff --git a/vendor/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php b/vendor/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php deleted file mode 100644 index 1b979fae..00000000 --- a/vendor/ramsey/uuid/src/Provider/Node/NodeProviderCollection.php +++ /dev/null @@ -1,66 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Provider\Node; - -use Ramsey\Collection\AbstractCollection; -use Ramsey\Uuid\Provider\NodeProviderInterface; -use Ramsey\Uuid\Type\Hexadecimal; - -/** - * A collection of NodeProviderInterface objects - * - * @deprecated this class has been deprecated, and will be removed in 5.0.0. The use-case for this class comes from - * a pre-`phpstan/phpstan` and pre-`vimeo/psalm` ecosystem, in which type safety had to be mostly enforced - * at runtime: that is no longer necessary, now that you can safely verify your code to be correct, and use - * more generic types like `iterable` instead. - * - * @extends AbstractCollection - */ -class NodeProviderCollection extends AbstractCollection -{ - public function getType(): string - { - return NodeProviderInterface::class; - } - - /** - * Re-constructs the object from its serialized form - * - * @param string $serialized The serialized PHP string to unserialize into - * a UuidInterface instance - * - * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint - * @psalm-suppress RedundantConditionGivenDocblockType - */ - public function unserialize($serialized): void - { - /** @var array $data */ - $data = unserialize($serialized, [ - 'allowed_classes' => [ - Hexadecimal::class, - RandomNodeProvider::class, - StaticNodeProvider::class, - SystemNodeProvider::class, - ], - ]); - - $this->data = array_filter( - $data, - function ($unserialized): bool { - return $unserialized instanceof NodeProviderInterface; - } - ); - } -} diff --git a/vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php b/vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php deleted file mode 100644 index 76141361..00000000 --- a/vendor/ramsey/uuid/src/Provider/Node/RandomNodeProvider.php +++ /dev/null @@ -1,69 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Provider\Node; - -use Ramsey\Uuid\Exception\RandomSourceException; -use Ramsey\Uuid\Provider\NodeProviderInterface; -use Ramsey\Uuid\Type\Hexadecimal; -use Throwable; - -use function bin2hex; -use function dechex; -use function hex2bin; -use function hexdec; -use function str_pad; -use function substr; - -use const STR_PAD_LEFT; - -/** - * RandomNodeProvider generates a random node ID - * - * @link http://tools.ietf.org/html/rfc4122#section-4.5 RFC 4122, § 4.5: Node IDs that Do Not Identify the Host - */ -class RandomNodeProvider implements NodeProviderInterface -{ - public function getNode(): Hexadecimal - { - try { - $nodeBytes = random_bytes(6); - } catch (Throwable $exception) { - throw new RandomSourceException( - $exception->getMessage(), - (int) $exception->getCode(), - $exception - ); - } - - // Split the node bytes for math on 32-bit systems. - $nodeMsb = substr($nodeBytes, 0, 3); - $nodeLsb = substr($nodeBytes, 3); - - // Set the multicast bit; see RFC 4122, section 4.5. - $nodeMsb = hex2bin( - str_pad( - dechex(hexdec(bin2hex($nodeMsb)) | 0x010000), - 6, - '0', - STR_PAD_LEFT - ) - ); - - // Recombine the node bytes. - $node = $nodeMsb . $nodeLsb; - - return new Hexadecimal(str_pad(bin2hex($node), 12, '0', STR_PAD_LEFT)); - } -} diff --git a/vendor/ramsey/uuid/src/Provider/Node/StaticNodeProvider.php b/vendor/ramsey/uuid/src/Provider/Node/StaticNodeProvider.php deleted file mode 100644 index 0f7536a8..00000000 --- a/vendor/ramsey/uuid/src/Provider/Node/StaticNodeProvider.php +++ /dev/null @@ -1,73 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Provider\Node; - -use Ramsey\Uuid\Exception\InvalidArgumentException; -use Ramsey\Uuid\Provider\NodeProviderInterface; -use Ramsey\Uuid\Type\Hexadecimal; - -use function dechex; -use function hexdec; -use function str_pad; -use function substr; - -use const STR_PAD_LEFT; - -/** - * StaticNodeProvider provides a static node value with the multicast bit set - * - * @link http://tools.ietf.org/html/rfc4122#section-4.5 RFC 4122, § 4.5: Node IDs that Do Not Identify the Host - */ -class StaticNodeProvider implements NodeProviderInterface -{ - private Hexadecimal $node; - - /** - * @param Hexadecimal $node The static node value to use - */ - public function __construct(Hexadecimal $node) - { - if (strlen($node->toString()) > 12) { - throw new InvalidArgumentException( - 'Static node value cannot be greater than 12 hexadecimal characters' - ); - } - - $this->node = $this->setMulticastBit($node); - } - - public function getNode(): Hexadecimal - { - return $this->node; - } - - /** - * Set the multicast bit for the static node value - */ - private function setMulticastBit(Hexadecimal $node): Hexadecimal - { - $nodeHex = str_pad($node->toString(), 12, '0', STR_PAD_LEFT); - $firstOctet = substr($nodeHex, 0, 2); - - $firstOctet = str_pad( - dechex(hexdec($firstOctet) | 0x01), - 2, - '0', - STR_PAD_LEFT - ); - - return new Hexadecimal($firstOctet . substr($nodeHex, 2)); - } -} diff --git a/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php b/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php deleted file mode 100644 index a03c93b4..00000000 --- a/vendor/ramsey/uuid/src/Provider/Node/SystemNodeProvider.php +++ /dev/null @@ -1,193 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Provider\Node; - -use Ramsey\Uuid\Exception\NodeException; -use Ramsey\Uuid\Provider\NodeProviderInterface; -use Ramsey\Uuid\Type\Hexadecimal; - -use function array_filter; -use function array_map; -use function array_walk; -use function count; -use function ob_get_clean; -use function ob_start; -use function preg_match; -use function preg_match_all; -use function reset; -use function str_contains; -use function str_replace; -use function strtolower; -use function strtoupper; -use function substr; - -use const GLOB_NOSORT; -use const PREG_PATTERN_ORDER; - -/** - * SystemNodeProvider retrieves the system node ID, if possible - * - * The system node ID, or host ID, is often the same as the MAC address for a - * network interface on the host. - */ -class SystemNodeProvider implements NodeProviderInterface -{ - /** - * Pattern to match nodes in ifconfig and ipconfig output. - */ - private const IFCONFIG_PATTERN = '/[^:]([0-9a-f]{2}([:-])[0-9a-f]{2}(\2[0-9a-f]{2}){4})[^:]/i'; - - /** - * Pattern to match nodes in sysfs stream output. - */ - private const SYSFS_PATTERN = '/^([0-9a-f]{2}:){5}[0-9a-f]{2}$/i'; - - public function getNode(): Hexadecimal - { - $node = $this->getNodeFromSystem(); - - if ($node === '') { - throw new NodeException( - 'Unable to fetch a node for this system' - ); - } - - return new Hexadecimal($node); - } - - /** - * Returns the system node, if it can find it - */ - protected function getNodeFromSystem(): string - { - static $node = null; - - if ($node !== null) { - return (string) $node; - } - - // First, try a Linux-specific approach. - $node = $this->getSysfs(); - - if ($node === '') { - // Search ifconfig output for MAC addresses & return the first one. - $node = $this->getIfconfig(); - } - - $node = str_replace([':', '-'], '', $node); - - return $node; - } - - /** - * Returns the network interface configuration for the system - * - * @codeCoverageIgnore - */ - protected function getIfconfig(): string - { - $disabledFunctions = strtolower((string) ini_get('disable_functions')); - - if (str_contains($disabledFunctions, 'passthru')) { - return ''; - } - - /** - * @psalm-suppress UnnecessaryVarAnnotation - * @var string $phpOs - */ - $phpOs = constant('PHP_OS'); - - ob_start(); - switch (strtoupper(substr($phpOs, 0, 3))) { - case 'WIN': - passthru('ipconfig /all 2>&1'); - - break; - case 'DAR': - passthru('ifconfig 2>&1'); - - break; - case 'FRE': - passthru('netstat -i -f link 2>&1'); - - break; - case 'LIN': - default: - passthru('netstat -ie 2>&1'); - - break; - } - - $ifconfig = (string) ob_get_clean(); - - if (preg_match_all(self::IFCONFIG_PATTERN, $ifconfig, $matches, PREG_PATTERN_ORDER)) { - foreach ($matches[1] as $iface) { - if ($iface !== '00:00:00:00:00:00' && $iface !== '00-00-00-00-00-00') { - return $iface; - } - } - } - - return ''; - } - - /** - * Returns MAC address from the first system interface via the sysfs interface - */ - protected function getSysfs(): string - { - $mac = ''; - - /** - * @psalm-suppress UnnecessaryVarAnnotation - * @var string $phpOs - */ - $phpOs = constant('PHP_OS'); - - if (strtoupper($phpOs) === 'LINUX') { - $addressPaths = glob('/sys/class/net/*/address', GLOB_NOSORT); - - if ($addressPaths === false || count($addressPaths) === 0) { - return ''; - } - - /** @var array $macs */ - $macs = []; - - array_walk($addressPaths, function (string $addressPath) use (&$macs): void { - if (is_readable($addressPath)) { - $macs[] = file_get_contents($addressPath); - } - }); - - /** @var callable $trim */ - $trim = 'trim'; - - $macs = array_map($trim, $macs); - - // Remove invalid entries. - $macs = array_filter($macs, function (string $address) { - return $address !== '00:00:00:00:00:00' - && preg_match(self::SYSFS_PATTERN, $address); - }); - - /** @var string|bool $mac */ - $mac = reset($macs); - } - - return (string) $mac; - } -} diff --git a/vendor/ramsey/uuid/src/Provider/NodeProviderInterface.php b/vendor/ramsey/uuid/src/Provider/NodeProviderInterface.php deleted file mode 100644 index d536b455..00000000 --- a/vendor/ramsey/uuid/src/Provider/NodeProviderInterface.php +++ /dev/null @@ -1,30 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Provider; - -use Ramsey\Uuid\Type\Hexadecimal; - -/** - * A node provider retrieves or generates a node ID - */ -interface NodeProviderInterface -{ - /** - * Returns a node ID - * - * @return Hexadecimal The node ID as a hexadecimal string - */ - public function getNode(): Hexadecimal; -} diff --git a/vendor/ramsey/uuid/src/Provider/Time/FixedTimeProvider.php b/vendor/ramsey/uuid/src/Provider/Time/FixedTimeProvider.php deleted file mode 100644 index 526c8ff4..00000000 --- a/vendor/ramsey/uuid/src/Provider/Time/FixedTimeProvider.php +++ /dev/null @@ -1,57 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Provider\Time; - -use Ramsey\Uuid\Provider\TimeProviderInterface; -use Ramsey\Uuid\Type\Integer as IntegerObject; -use Ramsey\Uuid\Type\Time; - -/** - * FixedTimeProvider uses a known time to provide the time - * - * This provider allows the use of a previously-generated, or known, time - * when generating time-based UUIDs. - */ -class FixedTimeProvider implements TimeProviderInterface -{ - public function __construct(private Time $time) - { - } - - /** - * Sets the `usec` component of the time - * - * @param int|string|IntegerObject $value The `usec` value to set - */ - public function setUsec($value): void - { - $this->time = new Time($this->time->getSeconds(), $value); - } - - /** - * Sets the `sec` component of the time - * - * @param int|string|IntegerObject $value The `sec` value to set - */ - public function setSec($value): void - { - $this->time = new Time($value, $this->time->getMicroseconds()); - } - - public function getTime(): Time - { - return $this->time; - } -} diff --git a/vendor/ramsey/uuid/src/Provider/Time/SystemTimeProvider.php b/vendor/ramsey/uuid/src/Provider/Time/SystemTimeProvider.php deleted file mode 100644 index 3a1e09cb..00000000 --- a/vendor/ramsey/uuid/src/Provider/Time/SystemTimeProvider.php +++ /dev/null @@ -1,33 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Provider\Time; - -use Ramsey\Uuid\Provider\TimeProviderInterface; -use Ramsey\Uuid\Type\Time; - -use function gettimeofday; - -/** - * SystemTimeProvider retrieves the current time using built-in PHP functions - */ -class SystemTimeProvider implements TimeProviderInterface -{ - public function getTime(): Time - { - $time = gettimeofday(); - - return new Time($time['sec'], $time['usec']); - } -} diff --git a/vendor/ramsey/uuid/src/Provider/TimeProviderInterface.php b/vendor/ramsey/uuid/src/Provider/TimeProviderInterface.php deleted file mode 100644 index 43588e0b..00000000 --- a/vendor/ramsey/uuid/src/Provider/TimeProviderInterface.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Provider; - -use Ramsey\Uuid\Type\Time; - -/** - * A time provider retrieves the current time - */ -interface TimeProviderInterface -{ - /** - * Returns a time object - */ - public function getTime(): Time; -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/Fields.php b/vendor/ramsey/uuid/src/Rfc4122/Fields.php deleted file mode 100644 index 9acf810c..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/Fields.php +++ /dev/null @@ -1,195 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use Ramsey\Uuid\Exception\InvalidArgumentException; -use Ramsey\Uuid\Fields\SerializableFieldsTrait; -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Uuid; - -use function bin2hex; -use function dechex; -use function hexdec; -use function sprintf; -use function str_pad; -use function strlen; -use function substr; -use function unpack; - -use const STR_PAD_LEFT; - -/** - * RFC 4122 variant UUIDs are comprised of a set of named fields - * - * Internally, this class represents the fields together as a 16-byte binary - * string. - * - * @psalm-immutable - */ -final class Fields implements FieldsInterface -{ - use MaxTrait; - use NilTrait; - use SerializableFieldsTrait; - use VariantTrait; - use VersionTrait; - - /** - * @param string $bytes A 16-byte binary string representation of a UUID - * - * @throws InvalidArgumentException if the byte string is not exactly 16 bytes - * @throws InvalidArgumentException if the byte string does not represent an RFC 4122 UUID - * @throws InvalidArgumentException if the byte string does not contain a valid version - */ - public function __construct(private string $bytes) - { - if (strlen($this->bytes) !== 16) { - throw new InvalidArgumentException( - 'The byte string must be 16 bytes long; ' - . 'received ' . strlen($this->bytes) . ' bytes' - ); - } - - if (!$this->isCorrectVariant()) { - throw new InvalidArgumentException( - 'The byte string received does not conform to the RFC 4122 variant' - ); - } - - if (!$this->isCorrectVersion()) { - throw new InvalidArgumentException( - 'The byte string received does not contain a valid RFC 4122 version' - ); - } - } - - public function getBytes(): string - { - return $this->bytes; - } - - public function getClockSeq(): Hexadecimal - { - if ($this->isMax()) { - $clockSeq = 0xffff; - } elseif ($this->isNil()) { - $clockSeq = 0x0000; - } else { - $clockSeq = hexdec(bin2hex(substr($this->bytes, 8, 2))) & 0x3fff; - } - - return new Hexadecimal(str_pad(dechex($clockSeq), 4, '0', STR_PAD_LEFT)); - } - - public function getClockSeqHiAndReserved(): Hexadecimal - { - return new Hexadecimal(bin2hex(substr($this->bytes, 8, 1))); - } - - public function getClockSeqLow(): Hexadecimal - { - return new Hexadecimal(bin2hex(substr($this->bytes, 9, 1))); - } - - public function getNode(): Hexadecimal - { - return new Hexadecimal(bin2hex(substr($this->bytes, 10))); - } - - public function getTimeHiAndVersion(): Hexadecimal - { - return new Hexadecimal(bin2hex(substr($this->bytes, 6, 2))); - } - - public function getTimeLow(): Hexadecimal - { - return new Hexadecimal(bin2hex(substr($this->bytes, 0, 4))); - } - - public function getTimeMid(): Hexadecimal - { - return new Hexadecimal(bin2hex(substr($this->bytes, 4, 2))); - } - - /** - * Returns the full 60-bit timestamp, without the version - * - * For version 2 UUIDs, the time_low field is the local identifier and - * should not be returned as part of the time. For this reason, we set the - * bottom 32 bits of the timestamp to 0's. As a result, there is some loss - * of fidelity of the timestamp, for version 2 UUIDs. The timestamp can be - * off by a range of 0 to 429.4967295 seconds (or 7 minutes, 9 seconds, and - * 496730 microseconds). - * - * For version 6 UUIDs, the timestamp order is reversed from the typical RFC - * 4122 order (the time bits are in the correct bit order, so that it is - * monotonically increasing). In returning the timestamp value, we put the - * bits in the order: time_low + time_mid + time_hi. - */ - public function getTimestamp(): Hexadecimal - { - $timestamp = match ($this->getVersion()) { - Uuid::UUID_TYPE_DCE_SECURITY => sprintf( - '%03x%04s%08s', - hexdec($this->getTimeHiAndVersion()->toString()) & 0x0fff, - $this->getTimeMid()->toString(), - '' - ), - Uuid::UUID_TYPE_REORDERED_TIME => sprintf( - '%08s%04s%03x', - $this->getTimeLow()->toString(), - $this->getTimeMid()->toString(), - hexdec($this->getTimeHiAndVersion()->toString()) & 0x0fff - ), - // The Unix timestamp in version 7 UUIDs is a 48-bit number, - // but for consistency, we will return a 60-bit number, padded - // to the left with zeros. - Uuid::UUID_TYPE_UNIX_TIME => sprintf( - '%011s%04s', - $this->getTimeLow()->toString(), - $this->getTimeMid()->toString(), - ), - default => sprintf( - '%03x%04s%08s', - hexdec($this->getTimeHiAndVersion()->toString()) & 0x0fff, - $this->getTimeMid()->toString(), - $this->getTimeLow()->toString() - ), - }; - - return new Hexadecimal($timestamp); - } - - public function getVersion(): ?int - { - if ($this->isNil() || $this->isMax()) { - return null; - } - - /** @var int[] $parts */ - $parts = unpack('n*', $this->bytes); - - return $parts[4] >> 12; - } - - private function isCorrectVariant(): bool - { - if ($this->isNil() || $this->isMax()) { - return true; - } - - return $this->getVariant() === Uuid::RFC_4122; - } -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/FieldsInterface.php b/vendor/ramsey/uuid/src/Rfc4122/FieldsInterface.php deleted file mode 100644 index 2241cf57..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/FieldsInterface.php +++ /dev/null @@ -1,128 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use Ramsey\Uuid\Fields\FieldsInterface as BaseFieldsInterface; -use Ramsey\Uuid\Type\Hexadecimal; - -/** - * RFC 4122 defines fields for a specific variant of UUID - * - * The fields of an RFC 4122 variant UUID are: - * - * * **time_low**: The low field of the timestamp, an unsigned 32-bit integer - * * **time_mid**: The middle field of the timestamp, an unsigned 16-bit integer - * * **time_hi_and_version**: The high field of the timestamp multiplexed with - * the version number, an unsigned 16-bit integer - * * **clock_seq_hi_and_reserved**: The high field of the clock sequence - * multiplexed with the variant, an unsigned 8-bit integer - * * **clock_seq_low**: The low field of the clock sequence, an unsigned - * 8-bit integer - * * **node**: The spatially unique node identifier, an unsigned 48-bit - * integer - * - * @link http://tools.ietf.org/html/rfc4122#section-4.1 RFC 4122, § 4.1: Format - * - * @psalm-immutable - */ -interface FieldsInterface extends BaseFieldsInterface -{ - /** - * Returns the full 16-bit clock sequence, with the variant bits (two most - * significant bits) masked out - */ - public function getClockSeq(): Hexadecimal; - - /** - * Returns the high field of the clock sequence multiplexed with the variant - */ - public function getClockSeqHiAndReserved(): Hexadecimal; - - /** - * Returns the low field of the clock sequence - */ - public function getClockSeqLow(): Hexadecimal; - - /** - * Returns the node field - */ - public function getNode(): Hexadecimal; - - /** - * Returns the high field of the timestamp multiplexed with the version - */ - public function getTimeHiAndVersion(): Hexadecimal; - - /** - * Returns the low field of the timestamp - */ - public function getTimeLow(): Hexadecimal; - - /** - * Returns the middle field of the timestamp - */ - public function getTimeMid(): Hexadecimal; - - /** - * Returns the full 60-bit timestamp, without the version - */ - public function getTimestamp(): Hexadecimal; - - /** - * Returns the variant - * - * The variant number describes the layout of the UUID. The variant - * number has the following meaning: - * - * - 0 - Reserved for NCS backward compatibility - * - 2 - The RFC 4122 variant - * - 6 - Reserved, Microsoft Corporation backward compatibility - * - 7 - Reserved for future definition - * - * For RFC 4122 variant UUIDs, this value should always be the integer `2`. - * - * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant - */ - public function getVariant(): int; - - /** - * Returns the version - * - * The version number describes how the UUID was generated and has the - * following meaning: - * - * 1. Gregorian time UUID - * 2. DCE security UUID - * 3. Name-based UUID hashed with MD5 - * 4. Randomly generated UUID - * 5. Name-based UUID hashed with SHA-1 - * 6. Reordered time UUID - * 7. Unix Epoch time UUID - * - * This returns `null` if the UUID is not an RFC 4122 variant, since version - * is only meaningful for this variant. - * - * @link http://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version - */ - public function getVersion(): ?int; - - /** - * Returns true if these fields represent a nil UUID - * - * The nil UUID is special form of UUID that is specified to have all 128 - * bits set to zero. - */ - public function isNil(): bool; -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/MaxTrait.php b/vendor/ramsey/uuid/src/Rfc4122/MaxTrait.php deleted file mode 100644 index dedb7279..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/MaxTrait.php +++ /dev/null @@ -1,41 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -/** - * Provides common functionality for max UUIDs - * - * The max UUID is special form of UUID that is specified to have all 128 bits - * set to one. It is the inverse of the nil UUID. - * - * @link https://datatracker.ietf.org/doc/html/draft-ietf-uuidrev-rfc4122bis-00#section-5.10 Max UUID - * - * @psalm-immutable - */ -trait MaxTrait -{ - /** - * Returns the bytes that comprise the fields - */ - abstract public function getBytes(): string; - - /** - * Returns true if the byte string represents a max UUID - */ - public function isMax(): bool - { - return $this->getBytes() === "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"; - } -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/MaxUuid.php b/vendor/ramsey/uuid/src/Rfc4122/MaxUuid.php deleted file mode 100644 index e5ffa72c..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/MaxUuid.php +++ /dev/null @@ -1,27 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use Ramsey\Uuid\Uuid; - -/** - * The max UUID is special form of UUID that is specified to have all 128 bits - * set to one - * - * @psalm-immutable - */ -final class MaxUuid extends Uuid implements UuidInterface -{ -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/NilTrait.php b/vendor/ramsey/uuid/src/Rfc4122/NilTrait.php deleted file mode 100644 index 9a9774d8..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/NilTrait.php +++ /dev/null @@ -1,41 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -/** - * Provides common functionality for nil UUIDs - * - * The nil UUID is special form of UUID that is specified to have all 128 bits - * set to zero. - * - * @link https://tools.ietf.org/html/rfc4122#section-4.1.7 RFC 4122, § 4.1.7: Nil UUID - * - * @psalm-immutable - */ -trait NilTrait -{ - /** - * Returns the bytes that comprise the fields - */ - abstract public function getBytes(): string; - - /** - * Returns true if the byte string represents a nil UUID - */ - public function isNil(): bool - { - return $this->getBytes() === "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; - } -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/NilUuid.php b/vendor/ramsey/uuid/src/Rfc4122/NilUuid.php deleted file mode 100644 index c49b9945..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/NilUuid.php +++ /dev/null @@ -1,27 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use Ramsey\Uuid\Uuid; - -/** - * The nil UUID is special form of UUID that is specified to have all 128 bits - * set to zero - * - * @psalm-immutable - */ -final class NilUuid extends Uuid implements UuidInterface -{ -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/TimeTrait.php b/vendor/ramsey/uuid/src/Rfc4122/TimeTrait.php deleted file mode 100644 index 5d939fac..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/TimeTrait.php +++ /dev/null @@ -1,55 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use DateTimeImmutable; -use DateTimeInterface; -use Ramsey\Uuid\Exception\DateTimeException; -use Throwable; - -use function str_pad; - -use const STR_PAD_LEFT; - -/** - * Provides common functionality for getting the time from a time-based UUID - * - * @psalm-immutable - */ -trait TimeTrait -{ - /** - * Returns a DateTimeInterface object representing the timestamp associated - * with the UUID - * - * @return DateTimeImmutable A PHP DateTimeImmutable instance representing - * the timestamp of a time-based UUID - */ - public function getDateTime(): DateTimeInterface - { - $time = $this->timeConverter->convertTime($this->fields->getTimestamp()); - - try { - return new DateTimeImmutable( - '@' - . $time->getSeconds()->toString() - . '.' - . str_pad($time->getMicroseconds()->toString(), 6, '0', STR_PAD_LEFT) - ); - } catch (Throwable $e) { - throw new DateTimeException($e->getMessage(), (int) $e->getCode(), $e); - } - } -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidBuilder.php b/vendor/ramsey/uuid/src/Rfc4122/UuidBuilder.php deleted file mode 100644 index 2c2677db..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/UuidBuilder.php +++ /dev/null @@ -1,118 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use Ramsey\Uuid\Builder\UuidBuilderInterface; -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\Time\UnixTimeConverter; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Exception\UnableToBuildUuidException; -use Ramsey\Uuid\Exception\UnsupportedOperationException; -use Ramsey\Uuid\Math\BrickMathCalculator; -use Ramsey\Uuid\Rfc4122\UuidInterface as Rfc4122UuidInterface; -use Ramsey\Uuid\Uuid; -use Ramsey\Uuid\UuidInterface; -use Throwable; - -/** - * UuidBuilder builds instances of RFC 4122 UUIDs - * - * @psalm-immutable - */ -class UuidBuilder implements UuidBuilderInterface -{ - private TimeConverterInterface $unixTimeConverter; - - /** - * Constructs the DefaultUuidBuilder - * - * @param NumberConverterInterface $numberConverter The number converter to - * use when constructing the Uuid - * @param TimeConverterInterface $timeConverter The time converter to use - * for converting Gregorian time extracted from version 1, 2, and 6 - * UUIDs to Unix timestamps - * @param TimeConverterInterface|null $unixTimeConverter The time converter - * to use for converter Unix Epoch time extracted from version 7 UUIDs - * to Unix timestamps - */ - public function __construct( - private NumberConverterInterface $numberConverter, - private TimeConverterInterface $timeConverter, - ?TimeConverterInterface $unixTimeConverter = null - ) { - $this->unixTimeConverter = $unixTimeConverter ?? new UnixTimeConverter(new BrickMathCalculator()); - } - - /** - * Builds and returns a Uuid - * - * @param CodecInterface $codec The codec to use for building this Uuid instance - * @param string $bytes The byte string from which to construct a UUID - * - * @return Rfc4122UuidInterface UuidBuilder returns instances of Rfc4122UuidInterface - * - * @psalm-pure - */ - public function build(CodecInterface $codec, string $bytes): UuidInterface - { - try { - /** @var Fields $fields */ - $fields = $this->buildFields($bytes); - - if ($fields->isNil()) { - return new NilUuid($fields, $this->numberConverter, $codec, $this->timeConverter); - } - - if ($fields->isMax()) { - return new MaxUuid($fields, $this->numberConverter, $codec, $this->timeConverter); - } - - switch ($fields->getVersion()) { - case Uuid::UUID_TYPE_TIME: - return new UuidV1($fields, $this->numberConverter, $codec, $this->timeConverter); - case Uuid::UUID_TYPE_DCE_SECURITY: - return new UuidV2($fields, $this->numberConverter, $codec, $this->timeConverter); - case Uuid::UUID_TYPE_HASH_MD5: - return new UuidV3($fields, $this->numberConverter, $codec, $this->timeConverter); - case Uuid::UUID_TYPE_RANDOM: - return new UuidV4($fields, $this->numberConverter, $codec, $this->timeConverter); - case Uuid::UUID_TYPE_HASH_SHA1: - return new UuidV5($fields, $this->numberConverter, $codec, $this->timeConverter); - case Uuid::UUID_TYPE_REORDERED_TIME: - return new UuidV6($fields, $this->numberConverter, $codec, $this->timeConverter); - case Uuid::UUID_TYPE_UNIX_TIME: - return new UuidV7($fields, $this->numberConverter, $codec, $this->unixTimeConverter); - case Uuid::UUID_TYPE_CUSTOM: - return new UuidV8($fields, $this->numberConverter, $codec, $this->timeConverter); - } - - throw new UnsupportedOperationException( - 'The UUID version in the given fields is not supported ' - . 'by this UUID builder' - ); - } catch (Throwable $e) { - throw new UnableToBuildUuidException($e->getMessage(), (int) $e->getCode(), $e); - } - } - - /** - * Proxy method to allow injecting a mock, for testing - */ - protected function buildFields(string $bytes): FieldsInterface - { - return new Fields($bytes); - } -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidInterface.php b/vendor/ramsey/uuid/src/Rfc4122/UuidInterface.php deleted file mode 100644 index e80f33be..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/UuidInterface.php +++ /dev/null @@ -1,29 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use Ramsey\Uuid\UuidInterface as BaseUuidInterface; - -/** - * Also known as a Leach-Salz variant UUID, an RFC 4122 variant UUID is a - * universally unique identifier defined by RFC 4122 - * - * @link https://tools.ietf.org/html/rfc4122 RFC 4122 - * - * @psalm-immutable - */ -interface UuidInterface extends BaseUuidInterface -{ -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV1.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV1.php deleted file mode 100644 index 515c038d..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/UuidV1.php +++ /dev/null @@ -1,60 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Exception\InvalidArgumentException; -use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; -use Ramsey\Uuid\Uuid; - -/** - * Gregorian time, or version 1, UUIDs include timestamp, clock sequence, and node - * values that are combined into a 128-bit unsigned integer - * - * @psalm-immutable - */ -final class UuidV1 extends Uuid implements UuidInterface -{ - use TimeTrait; - - /** - * Creates a version 1 (Gregorian time) UUID - * - * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID - * @param NumberConverterInterface $numberConverter The number converter to use - * for converting hex values to/from integers - * @param CodecInterface $codec The codec to use when encoding or decoding - * UUID strings - * @param TimeConverterInterface $timeConverter The time converter to use - * for converting timestamps extracted from a UUID to unix timestamps - */ - public function __construct( - Rfc4122FieldsInterface $fields, - NumberConverterInterface $numberConverter, - CodecInterface $codec, - TimeConverterInterface $timeConverter - ) { - if ($fields->getVersion() !== Uuid::UUID_TYPE_TIME) { - throw new InvalidArgumentException( - 'Fields used to create a UuidV1 must represent a ' - . 'version 1 (time-based) UUID' - ); - } - - parent::__construct($fields, $numberConverter, $codec, $timeConverter); - } -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV2.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV2.php deleted file mode 100644 index c8ccbe42..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/UuidV2.php +++ /dev/null @@ -1,115 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Exception\InvalidArgumentException; -use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; -use Ramsey\Uuid\Type\Integer as IntegerObject; -use Ramsey\Uuid\Uuid; - -use function hexdec; - -/** - * DCE Security version, or version 2, UUIDs include local domain identifier, - * local ID for the specified domain, and node values that are combined into a - * 128-bit unsigned integer - * - * It is important to note that a version 2 UUID suffers from some loss of - * fidelity of the timestamp, due to replacing the time_low field with the - * local identifier. When constructing the timestamp value for date - * purposes, we replace the local identifier bits with zeros. As a result, - * the timestamp can be off by a range of 0 to 429.4967295 seconds (or 7 - * minutes, 9 seconds, and 496730 microseconds). - * - * Astute observers might note this value directly corresponds to 2^32 - 1, - * or 0xffffffff. The local identifier is 32-bits, and we have set each of - * these bits to 0, so the maximum range of timestamp drift is 0x00000000 - * to 0xffffffff (counted in 100-nanosecond intervals). - * - * @link https://publications.opengroup.org/c311 DCE 1.1: Authentication and Security Services - * @link https://publications.opengroup.org/c706 DCE 1.1: Remote Procedure Call - * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap5.htm#tagcjh_08_02_01_01 DCE 1.1: Auth & Sec, §5.2.1.1 - * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap11.htm#tagcjh_14_05_01_01 DCE 1.1: Auth & Sec, §11.5.1.1 - * @link https://pubs.opengroup.org/onlinepubs/9629399/apdxa.htm DCE 1.1: RPC, Appendix A - * @link https://github.com/google/uuid Go package for UUIDs (includes DCE implementation) - * - * @psalm-immutable - */ -final class UuidV2 extends Uuid implements UuidInterface -{ - use TimeTrait; - - /** - * Creates a version 2 (DCE Security) UUID - * - * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID - * @param NumberConverterInterface $numberConverter The number converter to use - * for converting hex values to/from integers - * @param CodecInterface $codec The codec to use when encoding or decoding - * UUID strings - * @param TimeConverterInterface $timeConverter The time converter to use - * for converting timestamps extracted from a UUID to unix timestamps - */ - public function __construct( - Rfc4122FieldsInterface $fields, - NumberConverterInterface $numberConverter, - CodecInterface $codec, - TimeConverterInterface $timeConverter - ) { - if ($fields->getVersion() !== Uuid::UUID_TYPE_DCE_SECURITY) { - throw new InvalidArgumentException( - 'Fields used to create a UuidV2 must represent a ' - . 'version 2 (DCE Security) UUID' - ); - } - - parent::__construct($fields, $numberConverter, $codec, $timeConverter); - } - - /** - * Returns the local domain used to create this version 2 UUID - */ - public function getLocalDomain(): int - { - /** @var Rfc4122FieldsInterface $fields */ - $fields = $this->getFields(); - - return (int) hexdec($fields->getClockSeqLow()->toString()); - } - - /** - * Returns the string name of the local domain - */ - public function getLocalDomainName(): string - { - return Uuid::DCE_DOMAIN_NAMES[$this->getLocalDomain()]; - } - - /** - * Returns the local identifier for the domain used to create this version 2 UUID - */ - public function getLocalIdentifier(): IntegerObject - { - /** @var Rfc4122FieldsInterface $fields */ - $fields = $this->getFields(); - - return new IntegerObject( - $this->numberConverter->fromHex($fields->getTimeLow()->toString()) - ); - } -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV3.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV3.php deleted file mode 100644 index deaa54eb..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/UuidV3.php +++ /dev/null @@ -1,58 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Exception\InvalidArgumentException; -use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; -use Ramsey\Uuid\Uuid; - -/** - * Version 3 UUIDs are named-based, using combination of a namespace and name - * that are hashed into a 128-bit unsigned integer using MD5 - * - * @psalm-immutable - */ -final class UuidV3 extends Uuid implements UuidInterface -{ - /** - * Creates a version 3 (name-based, MD5-hashed) UUID - * - * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID - * @param NumberConverterInterface $numberConverter The number converter to use - * for converting hex values to/from integers - * @param CodecInterface $codec The codec to use when encoding or decoding - * UUID strings - * @param TimeConverterInterface $timeConverter The time converter to use - * for converting timestamps extracted from a UUID to unix timestamps - */ - public function __construct( - Rfc4122FieldsInterface $fields, - NumberConverterInterface $numberConverter, - CodecInterface $codec, - TimeConverterInterface $timeConverter - ) { - if ($fields->getVersion() !== Uuid::UUID_TYPE_HASH_MD5) { - throw new InvalidArgumentException( - 'Fields used to create a UuidV3 must represent a ' - . 'version 3 (name-based, MD5-hashed) UUID' - ); - } - - parent::__construct($fields, $numberConverter, $codec, $timeConverter); - } -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV4.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV4.php deleted file mode 100644 index 2e572462..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/UuidV4.php +++ /dev/null @@ -1,58 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Exception\InvalidArgumentException; -use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; -use Ramsey\Uuid\Uuid; - -/** - * Random, or version 4, UUIDs are randomly or pseudo-randomly generated 128-bit - * integers - * - * @psalm-immutable - */ -final class UuidV4 extends Uuid implements UuidInterface -{ - /** - * Creates a version 4 (random) UUID - * - * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID - * @param NumberConverterInterface $numberConverter The number converter to use - * for converting hex values to/from integers - * @param CodecInterface $codec The codec to use when encoding or decoding - * UUID strings - * @param TimeConverterInterface $timeConverter The time converter to use - * for converting timestamps extracted from a UUID to unix timestamps - */ - public function __construct( - Rfc4122FieldsInterface $fields, - NumberConverterInterface $numberConverter, - CodecInterface $codec, - TimeConverterInterface $timeConverter - ) { - if ($fields->getVersion() !== Uuid::UUID_TYPE_RANDOM) { - throw new InvalidArgumentException( - 'Fields used to create a UuidV4 must represent a ' - . 'version 4 (random) UUID' - ); - } - - parent::__construct($fields, $numberConverter, $codec, $timeConverter); - } -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV5.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV5.php deleted file mode 100644 index 2ef6ab3f..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/UuidV5.php +++ /dev/null @@ -1,58 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Exception\InvalidArgumentException; -use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; -use Ramsey\Uuid\Uuid; - -/** - * Version 5 UUIDs are named-based, using combination of a namespace and name - * that are hashed into a 128-bit unsigned integer using SHA1 - * - * @psalm-immutable - */ -final class UuidV5 extends Uuid implements UuidInterface -{ - /** - * Creates a version 5 (name-based, SHA1-hashed) UUID - * - * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID - * @param NumberConverterInterface $numberConverter The number converter to use - * for converting hex values to/from integers - * @param CodecInterface $codec The codec to use when encoding or decoding - * UUID strings - * @param TimeConverterInterface $timeConverter The time converter to use - * for converting timestamps extracted from a UUID to unix timestamps - */ - public function __construct( - Rfc4122FieldsInterface $fields, - NumberConverterInterface $numberConverter, - CodecInterface $codec, - TimeConverterInterface $timeConverter - ) { - if ($fields->getVersion() !== Uuid::UUID_TYPE_HASH_SHA1) { - throw new InvalidArgumentException( - 'Fields used to create a UuidV5 must represent a ' - . 'version 5 (named-based, SHA1-hashed) UUID' - ); - } - - parent::__construct($fields, $numberConverter, $codec, $timeConverter); - } -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV6.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV6.php deleted file mode 100644 index 7e374339..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/UuidV6.php +++ /dev/null @@ -1,29 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use Ramsey\Uuid\Nonstandard\UuidV6 as NonstandardUuidV6; - -/** - * Reordered time, or version 6, UUIDs include timestamp, clock sequence, and - * node values that are combined into a 128-bit unsigned integer - * - * @link https://datatracker.ietf.org/doc/html/draft-ietf-uuidrev-rfc4122bis-00#section-5.6 UUID Version 6 - * - * @psalm-immutable - */ -final class UuidV6 extends NonstandardUuidV6 implements UuidInterface -{ -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV7.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV7.php deleted file mode 100644 index 5b524c48..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/UuidV7.php +++ /dev/null @@ -1,62 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Exception\InvalidArgumentException; -use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; -use Ramsey\Uuid\Uuid; - -/** - * Unix Epoch time, or version 7, UUIDs include a timestamp in milliseconds - * since the Unix Epoch, along with random bytes - * - * @link https://datatracker.ietf.org/doc/html/draft-ietf-uuidrev-rfc4122bis-00#section-5.7 UUID Version 7 - * - * @psalm-immutable - */ -final class UuidV7 extends Uuid implements UuidInterface -{ - use TimeTrait; - - /** - * Creates a version 7 (Unix Epoch time) UUID - * - * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID - * @param NumberConverterInterface $numberConverter The number converter to use - * for converting hex values to/from integers - * @param CodecInterface $codec The codec to use when encoding or decoding - * UUID strings - * @param TimeConverterInterface $timeConverter The time converter to use - * for converting timestamps extracted from a UUID to unix timestamps - */ - public function __construct( - Rfc4122FieldsInterface $fields, - NumberConverterInterface $numberConverter, - CodecInterface $codec, - TimeConverterInterface $timeConverter - ) { - if ($fields->getVersion() !== Uuid::UUID_TYPE_UNIX_TIME) { - throw new InvalidArgumentException( - 'Fields used to create a UuidV7 must represent a ' - . 'version 7 (Unix Epoch time) UUID' - ); - } - - parent::__construct($fields, $numberConverter, $codec, $timeConverter); - } -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/UuidV8.php b/vendor/ramsey/uuid/src/Rfc4122/UuidV8.php deleted file mode 100644 index 78b0290c..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/UuidV8.php +++ /dev/null @@ -1,65 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Exception\InvalidArgumentException; -use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; -use Ramsey\Uuid\Uuid; - -/** - * Version 8, Custom UUIDs provide an RFC 4122 compatible format for - * experimental or vendor-specific uses - * - * The only requirement for version 8 UUIDs is that the version and variant bits - * must be set. Otherwise, implementations are free to set the other bits - * according to their needs. As a result, the uniqueness of version 8 UUIDs is - * implementation-specific and should not be assumed. - * - * @link https://datatracker.ietf.org/doc/html/draft-ietf-uuidrev-rfc4122bis-00#section-5.8 UUID Version 8 - * - * @psalm-immutable - */ -final class UuidV8 extends Uuid implements UuidInterface -{ - /** - * Creates a version 8 (custom) UUID - * - * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID - * @param NumberConverterInterface $numberConverter The number converter to use - * for converting hex values to/from integers - * @param CodecInterface $codec The codec to use when encoding or decoding - * UUID strings - * @param TimeConverterInterface $timeConverter The time converter to use - * for converting timestamps extracted from a UUID to unix timestamps - */ - public function __construct( - Rfc4122FieldsInterface $fields, - NumberConverterInterface $numberConverter, - CodecInterface $codec, - TimeConverterInterface $timeConverter - ) { - if ($fields->getVersion() !== Uuid::UUID_TYPE_CUSTOM) { - throw new InvalidArgumentException( - 'Fields used to create a UuidV8 must represent a ' - . 'version 8 (custom) UUID' - ); - } - - parent::__construct($fields, $numberConverter, $codec, $timeConverter); - } -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/Validator.php b/vendor/ramsey/uuid/src/Rfc4122/Validator.php deleted file mode 100644 index e82a11e6..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/Validator.php +++ /dev/null @@ -1,50 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use Ramsey\Uuid\Uuid; -use Ramsey\Uuid\Validator\ValidatorInterface; - -use function preg_match; -use function str_replace; - -/** - * Rfc4122\Validator validates strings as UUIDs of the RFC 4122 variant - * - * @psalm-immutable - */ -final class Validator implements ValidatorInterface -{ - private const VALID_PATTERN = '\A[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-' - . '[1-8][0-9A-Fa-f]{3}-[ABab89][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}\z'; - - /** - * @psalm-return non-empty-string - * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty - * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty - */ - public function getPattern(): string - { - return self::VALID_PATTERN; - } - - public function validate(string $uuid): bool - { - $uuid = str_replace(['urn:', 'uuid:', 'URN:', 'UUID:', '{', '}'], '', $uuid); - $uuid = strtolower($uuid); - - return $uuid === Uuid::NIL || $uuid === Uuid::MAX || preg_match('/' . self::VALID_PATTERN . '/Dms', $uuid); - } -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/VariantTrait.php b/vendor/ramsey/uuid/src/Rfc4122/VariantTrait.php deleted file mode 100644 index 1041de51..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/VariantTrait.php +++ /dev/null @@ -1,94 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use Ramsey\Uuid\Exception\InvalidBytesException; -use Ramsey\Uuid\Uuid; - -use function decbin; -use function str_pad; -use function str_starts_with; -use function strlen; -use function substr; -use function unpack; - -use const STR_PAD_LEFT; - -/** - * Provides common functionality for handling the variant, as defined by RFC 4122 - * - * @psalm-immutable - */ -trait VariantTrait -{ - /** - * Returns the bytes that comprise the fields - */ - abstract public function getBytes(): string; - - /** - * Returns the variant identifier, according to RFC 4122, for the given bytes - * - * The following values may be returned: - * - * - `0` -- Reserved, NCS backward compatibility. - * - `2` -- The variant specified in RFC 4122. - * - `6` -- Reserved, Microsoft Corporation backward compatibility. - * - `7` -- Reserved for future definition. - * - * @link https://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant - * - * @return int The variant identifier, according to RFC 4122 - */ - public function getVariant(): int - { - if (strlen($this->getBytes()) !== 16) { - throw new InvalidBytesException('Invalid number of bytes'); - } - - if ($this->isMax() || $this->isNil()) { - // RFC 4122 defines these special types of UUID, so we will consider - // them as belonging to the RFC 4122 variant. - return Uuid::RFC_4122; - } - - /** @var int[] $parts */ - $parts = unpack('n*', $this->getBytes()); - - // $parts[5] is a 16-bit, unsigned integer containing the variant bits - // of the UUID. We convert this integer into a string containing a - // binary representation, padded to 16 characters. We analyze the first - // three characters (three most-significant bits) to determine the - // variant. - $binary = str_pad( - decbin($parts[5]), - 16, - '0', - STR_PAD_LEFT - ); - - $msb = substr($binary, 0, 3); - - if ($msb === '111') { - return Uuid::RESERVED_FUTURE; - } elseif ($msb === '110') { - return Uuid::RESERVED_MICROSOFT; - } elseif (str_starts_with($msb, '10')) { - return Uuid::RFC_4122; - } - - return Uuid::RESERVED_NCS; - } -} diff --git a/vendor/ramsey/uuid/src/Rfc4122/VersionTrait.php b/vendor/ramsey/uuid/src/Rfc4122/VersionTrait.php deleted file mode 100644 index 0195e46c..00000000 --- a/vendor/ramsey/uuid/src/Rfc4122/VersionTrait.php +++ /dev/null @@ -1,60 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Rfc4122; - -use Ramsey\Uuid\Uuid; - -/** - * Provides common functionality for handling the version, as defined by RFC 4122 - * - * @psalm-immutable - */ -trait VersionTrait -{ - /** - * Returns the version - */ - abstract public function getVersion(): ?int; - - /** - * Returns true if these fields represent a max UUID - */ - abstract public function isMax(): bool; - - /** - * Returns true if these fields represent a nil UUID - */ - abstract public function isNil(): bool; - - /** - * Returns true if the version matches one of those defined by RFC 4122 - * - * @return bool True if the UUID version is valid, false otherwise - */ - private function isCorrectVersion(): bool - { - if ($this->isNil() || $this->isMax()) { - return true; - } - - return match ($this->getVersion()) { - Uuid::UUID_TYPE_TIME, Uuid::UUID_TYPE_DCE_SECURITY, - Uuid::UUID_TYPE_HASH_MD5, Uuid::UUID_TYPE_RANDOM, - Uuid::UUID_TYPE_HASH_SHA1, Uuid::UUID_TYPE_REORDERED_TIME, - Uuid::UUID_TYPE_UNIX_TIME, Uuid::UUID_TYPE_CUSTOM => true, - default => false, - }; - } -} diff --git a/vendor/ramsey/uuid/src/Type/Decimal.php b/vendor/ramsey/uuid/src/Type/Decimal.php deleted file mode 100644 index acc5e754..00000000 --- a/vendor/ramsey/uuid/src/Type/Decimal.php +++ /dev/null @@ -1,129 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Type; - -use Ramsey\Uuid\Exception\InvalidArgumentException; -use ValueError; - -use function is_numeric; -use function sprintf; -use function str_starts_with; - -/** - * A value object representing a decimal - * - * This class exists for type-safety purposes, to ensure that decimals - * returned from ramsey/uuid methods as strings are truly decimals and not some - * other kind of string. - * - * To support values as true decimals and not as floats or doubles, we store the - * decimals as strings. - * - * @psalm-immutable - */ -final class Decimal implements NumberInterface -{ - private string $value; - private bool $isNegative = false; - - public function __construct(float | int | string | self $value) - { - $value = (string) $value; - - if (!is_numeric($value)) { - throw new InvalidArgumentException( - 'Value must be a signed decimal or a string containing only ' - . 'digits 0-9 and, optionally, a decimal point or sign (+ or -)' - ); - } - - // Remove the leading +-symbol. - if (str_starts_with($value, '+')) { - $value = substr($value, 1); - } - - // For cases like `-0` or `-0.0000`, convert the value to `0`. - if (abs((float) $value) === 0.0) { - $value = '0'; - } - - if (str_starts_with($value, '-')) { - $this->isNegative = true; - } - - $this->value = $value; - } - - public function isNegative(): bool - { - return $this->isNegative; - } - - public function toString(): string - { - return $this->value; - } - - public function __toString(): string - { - return $this->toString(); - } - - public function jsonSerialize(): string - { - return $this->toString(); - } - - public function serialize(): string - { - return $this->toString(); - } - - /** - * @return array{string: string} - */ - public function __serialize(): array - { - return ['string' => $this->toString()]; - } - - /** - * Constructs the object from a serialized string representation - * - * @param string $data The serialized string representation of the object - * - * @psalm-suppress UnusedMethodCall - */ - public function unserialize(string $data): void - { - $this->__construct($data); - } - - /** - * @param array{string?: string} $data - * - * @psalm-suppress UnusedMethodCall - */ - public function __unserialize(array $data): void - { - // @codeCoverageIgnoreStart - if (!isset($data['string'])) { - throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); - } - // @codeCoverageIgnoreEnd - - $this->unserialize($data['string']); - } -} diff --git a/vendor/ramsey/uuid/src/Type/Hexadecimal.php b/vendor/ramsey/uuid/src/Type/Hexadecimal.php deleted file mode 100644 index bf71ec4b..00000000 --- a/vendor/ramsey/uuid/src/Type/Hexadecimal.php +++ /dev/null @@ -1,115 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Type; - -use Ramsey\Uuid\Exception\InvalidArgumentException; -use ValueError; - -use function preg_match; -use function sprintf; -use function substr; - -/** - * A value object representing a hexadecimal number - * - * This class exists for type-safety purposes, to ensure that hexadecimal numbers - * returned from ramsey/uuid methods as strings are truly hexadecimal and not some - * other kind of string. - * - * @psalm-immutable - */ -final class Hexadecimal implements TypeInterface -{ - private string $value; - - /** - * @param self|string $value The hexadecimal value to store - */ - public function __construct(self | string $value) - { - $this->value = $value instanceof self ? (string) $value : $this->prepareValue($value); - } - - public function toString(): string - { - return $this->value; - } - - public function __toString(): string - { - return $this->toString(); - } - - public function jsonSerialize(): string - { - return $this->toString(); - } - - public function serialize(): string - { - return $this->toString(); - } - - /** - * @return array{string: string} - */ - public function __serialize(): array - { - return ['string' => $this->toString()]; - } - - /** - * Constructs the object from a serialized string representation - * - * @param string $data The serialized string representation of the object - * - * @psalm-suppress UnusedMethodCall - */ - public function unserialize(string $data): void - { - $this->__construct($data); - } - - /** - * @param array{string?: string} $data - */ - public function __unserialize(array $data): void - { - // @codeCoverageIgnoreStart - if (!isset($data['string'])) { - throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); - } - // @codeCoverageIgnoreEnd - - $this->unserialize($data['string']); - } - - private function prepareValue(string $value): string - { - $value = strtolower($value); - - if (str_starts_with($value, '0x')) { - $value = substr($value, 2); - } - - if (!preg_match('/^[A-Fa-f0-9]+$/', $value)) { - throw new InvalidArgumentException( - 'Value must be a hexadecimal number' - ); - } - - return $value; - } -} diff --git a/vendor/ramsey/uuid/src/Type/Integer.php b/vendor/ramsey/uuid/src/Type/Integer.php deleted file mode 100644 index 50dac993..00000000 --- a/vendor/ramsey/uuid/src/Type/Integer.php +++ /dev/null @@ -1,158 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Type; - -use Ramsey\Uuid\Exception\InvalidArgumentException; -use ValueError; - -use function assert; -use function is_numeric; -use function preg_match; -use function sprintf; -use function substr; - -/** - * A value object representing an integer - * - * This class exists for type-safety purposes, to ensure that integers - * returned from ramsey/uuid methods as strings are truly integers and not some - * other kind of string. - * - * To support large integers beyond PHP_INT_MAX and PHP_INT_MIN on both 64-bit - * and 32-bit systems, we store the integers as strings. - * - * @psalm-immutable - */ -final class Integer implements NumberInterface -{ - /** - * @psalm-var numeric-string - */ - private string $value; - - private bool $isNegative = false; - - public function __construct(float | int | string | self $value) - { - $this->value = $value instanceof self ? (string) $value : $this->prepareValue($value); - } - - public function isNegative(): bool - { - return $this->isNegative; - } - - /** - * @psalm-return numeric-string - */ - public function toString(): string - { - return $this->value; - } - - /** - * @psalm-return numeric-string - */ - public function __toString(): string - { - return $this->toString(); - } - - public function jsonSerialize(): string - { - return $this->toString(); - } - - public function serialize(): string - { - return $this->toString(); - } - - /** - * @return array{string: string} - */ - public function __serialize(): array - { - return ['string' => $this->toString()]; - } - - /** - * Constructs the object from a serialized string representation - * - * @param string $data The serialized string representation of the object - * - * @psalm-suppress UnusedMethodCall - */ - public function unserialize(string $data): void - { - $this->__construct($data); - } - - /** - * @param array{string?: string} $data - */ - public function __unserialize(array $data): void - { - // @codeCoverageIgnoreStart - if (!isset($data['string'])) { - throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); - } - // @codeCoverageIgnoreEnd - - $this->unserialize($data['string']); - } - - /** - * @return numeric-string - */ - private function prepareValue(float | int | string $value): string - { - $value = (string) $value; - $sign = '+'; - - // If the value contains a sign, remove it for digit pattern check. - if (str_starts_with($value, '-') || str_starts_with($value, '+')) { - $sign = substr($value, 0, 1); - $value = substr($value, 1); - } - - if (!preg_match('/^\d+$/', $value)) { - throw new InvalidArgumentException( - 'Value must be a signed integer or a string containing only ' - . 'digits 0-9 and, optionally, a sign (+ or -)' - ); - } - - // Trim any leading zeros. - $value = ltrim($value, '0'); - - // Set to zero if the string is empty after trimming zeros. - if ($value === '') { - $value = '0'; - } - - // Add the negative sign back to the value. - if ($sign === '-' && $value !== '0') { - $value = $sign . $value; - - /** @psalm-suppress InaccessibleProperty */ - $this->isNegative = true; - } - - assert(is_numeric($value)); - - return $value; - } -} diff --git a/vendor/ramsey/uuid/src/Type/NumberInterface.php b/vendor/ramsey/uuid/src/Type/NumberInterface.php deleted file mode 100644 index bf4ae9db..00000000 --- a/vendor/ramsey/uuid/src/Type/NumberInterface.php +++ /dev/null @@ -1,28 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Type; - -/** - * NumberInterface ensures consistency in numeric values returned by ramsey/uuid - * - * @psalm-immutable - */ -interface NumberInterface extends TypeInterface -{ - /** - * Returns true if this number is less than zero - */ - public function isNegative(): bool; -} diff --git a/vendor/ramsey/uuid/src/Type/Time.php b/vendor/ramsey/uuid/src/Type/Time.php deleted file mode 100644 index 0cedb447..00000000 --- a/vendor/ramsey/uuid/src/Type/Time.php +++ /dev/null @@ -1,128 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Type; - -use Ramsey\Uuid\Exception\UnsupportedOperationException; -use Ramsey\Uuid\Type\Integer as IntegerObject; -use ValueError; - -use function json_decode; -use function json_encode; -use function sprintf; - -/** - * A value object representing a timestamp - * - * This class exists for type-safety purposes, to ensure that timestamps used - * by ramsey/uuid are truly timestamp integers and not some other kind of string - * or integer. - * - * @psalm-immutable - */ -final class Time implements TypeInterface -{ - private IntegerObject $seconds; - private IntegerObject $microseconds; - - public function __construct( - float | int | string | IntegerObject $seconds, - float | int | string | IntegerObject $microseconds = 0, - ) { - $this->seconds = new IntegerObject($seconds); - $this->microseconds = new IntegerObject($microseconds); - } - - public function getSeconds(): IntegerObject - { - return $this->seconds; - } - - public function getMicroseconds(): IntegerObject - { - return $this->microseconds; - } - - public function toString(): string - { - return $this->seconds->toString() . '.' . sprintf('%06s', $this->microseconds->toString()); - } - - public function __toString(): string - { - return $this->toString(); - } - - /** - * @return string[] - */ - public function jsonSerialize(): array - { - return [ - 'seconds' => $this->getSeconds()->toString(), - 'microseconds' => $this->getMicroseconds()->toString(), - ]; - } - - public function serialize(): string - { - return (string) json_encode($this); - } - - /** - * @return array{seconds: string, microseconds: string} - */ - public function __serialize(): array - { - return [ - 'seconds' => $this->getSeconds()->toString(), - 'microseconds' => $this->getMicroseconds()->toString(), - ]; - } - - /** - * Constructs the object from a serialized string representation - * - * @param string $data The serialized string representation of the object - * - * @psalm-suppress UnusedMethodCall - */ - public function unserialize(string $data): void - { - /** @var array{seconds?: int|float|string, microseconds?: int|float|string} $time */ - $time = json_decode($data, true); - - if (!isset($time['seconds']) || !isset($time['microseconds'])) { - throw new UnsupportedOperationException( - 'Attempted to unserialize an invalid value' - ); - } - - $this->__construct($time['seconds'], $time['microseconds']); - } - - /** - * @param array{seconds?: string, microseconds?: string} $data - */ - public function __unserialize(array $data): void - { - // @codeCoverageIgnoreStart - if (!isset($data['seconds']) || !isset($data['microseconds'])) { - throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); - } - // @codeCoverageIgnoreEnd - - $this->__construct($data['seconds'], $data['microseconds']); - } -} diff --git a/vendor/ramsey/uuid/src/Type/TypeInterface.php b/vendor/ramsey/uuid/src/Type/TypeInterface.php deleted file mode 100644 index da2d8b20..00000000 --- a/vendor/ramsey/uuid/src/Type/TypeInterface.php +++ /dev/null @@ -1,30 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Type; - -use JsonSerializable; -use Serializable; - -/** - * TypeInterface ensures consistency in typed values returned by ramsey/uuid - * - * @psalm-immutable - */ -interface TypeInterface extends JsonSerializable, Serializable -{ - public function toString(): string; - - public function __toString(): string; -} diff --git a/vendor/ramsey/uuid/src/Uuid.php b/vendor/ramsey/uuid/src/Uuid.php deleted file mode 100644 index e0384a50..00000000 --- a/vendor/ramsey/uuid/src/Uuid.php +++ /dev/null @@ -1,758 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid; - -use BadMethodCallException; -use DateTimeInterface; -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Exception\UnsupportedOperationException; -use Ramsey\Uuid\Fields\FieldsInterface; -use Ramsey\Uuid\Lazy\LazyUuidFromString; -use Ramsey\Uuid\Rfc4122\FieldsInterface as Rfc4122FieldsInterface; -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Type\Integer as IntegerObject; -use ValueError; - -use function assert; -use function bin2hex; -use function method_exists; -use function preg_match; -use function sprintf; -use function str_replace; -use function strcmp; -use function strlen; -use function strtolower; -use function substr; - -/** - * Uuid provides constants and static methods for working with and generating UUIDs - * - * @psalm-immutable - */ -class Uuid implements UuidInterface -{ - use DeprecatedUuidMethodsTrait; - - /** - * When this namespace is specified, the name string is a fully-qualified - * domain name - * - * @link http://tools.ietf.org/html/rfc4122#appendix-C RFC 4122, Appendix C: Some Name Space IDs - */ - public const NAMESPACE_DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; - - /** - * When this namespace is specified, the name string is a URL - * - * @link http://tools.ietf.org/html/rfc4122#appendix-C RFC 4122, Appendix C: Some Name Space IDs - */ - public const NAMESPACE_URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; - - /** - * When this namespace is specified, the name string is an ISO OID - * - * @link http://tools.ietf.org/html/rfc4122#appendix-C RFC 4122, Appendix C: Some Name Space IDs - */ - public const NAMESPACE_OID = '6ba7b812-9dad-11d1-80b4-00c04fd430c8'; - - /** - * When this namespace is specified, the name string is an X.500 DN in DER - * or a text output format - * - * @link http://tools.ietf.org/html/rfc4122#appendix-C RFC 4122, Appendix C: Some Name Space IDs - */ - public const NAMESPACE_X500 = '6ba7b814-9dad-11d1-80b4-00c04fd430c8'; - - /** - * The nil UUID is a special form of UUID that is specified to have all 128 - * bits set to zero - * - * @link http://tools.ietf.org/html/rfc4122#section-4.1.7 RFC 4122, § 4.1.7: Nil UUID - */ - public const NIL = '00000000-0000-0000-0000-000000000000'; - - /** - * The max UUID is a special form of UUID that is specified to have all 128 - * bits set to one - * - * @link https://datatracker.ietf.org/doc/html/draft-ietf-uuidrev-rfc4122bis-00#section-5.10 Max UUID - */ - public const MAX = 'ffffffff-ffff-ffff-ffff-ffffffffffff'; - - /** - * Variant: reserved, NCS backward compatibility - * - * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant - */ - public const RESERVED_NCS = 0; - - /** - * Variant: the UUID layout specified in RFC 4122 - * - * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant - */ - public const RFC_4122 = 2; - - /** - * Variant: reserved, Microsoft Corporation backward compatibility - * - * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant - */ - public const RESERVED_MICROSOFT = 6; - - /** - * Variant: reserved for future definition - * - * @link http://tools.ietf.org/html/rfc4122#section-4.1.1 RFC 4122, § 4.1.1: Variant - */ - public const RESERVED_FUTURE = 7; - - /** - * @deprecated Use {@see ValidatorInterface::getPattern()} instead. - */ - public const VALID_PATTERN = '^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}$'; - - /** - * Version 1 (Gregorian time) UUID - * - * @link https://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version - */ - public const UUID_TYPE_TIME = 1; - - /** - * Version 2 (DCE Security) UUID - * - * @link https://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version - */ - public const UUID_TYPE_DCE_SECURITY = 2; - - /** - * @deprecated Use {@see Uuid::UUID_TYPE_DCE_SECURITY} instead. - */ - public const UUID_TYPE_IDENTIFIER = 2; - - /** - * Version 3 (name-based and hashed with MD5) UUID - * - * @link https://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version - */ - public const UUID_TYPE_HASH_MD5 = 3; - - /** - * Version 4 (random) UUID - * - * @link https://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version - */ - public const UUID_TYPE_RANDOM = 4; - - /** - * Version 5 (name-based and hashed with SHA1) UUID - * - * @link https://tools.ietf.org/html/rfc4122#section-4.1.3 RFC 4122, § 4.1.3: Version - */ - public const UUID_TYPE_HASH_SHA1 = 5; - - /** - * @deprecated Use {@see Uuid::UUID_TYPE_REORDERED_TIME} instead. - */ - public const UUID_TYPE_PEABODY = 6; - - /** - * Version 6 (reordered time) UUID - * - * @link https://datatracker.ietf.org/doc/html/draft-ietf-uuidrev-rfc4122bis-00#section-5.6 UUID Version 6 - */ - public const UUID_TYPE_REORDERED_TIME = 6; - - /** - * Version 7 (Unix Epoch time) UUID - * - * @link https://datatracker.ietf.org/doc/html/draft-ietf-uuidrev-rfc4122bis-00#section-5.7 UUID Version 7 - */ - public const UUID_TYPE_UNIX_TIME = 7; - - /** - * @link https://datatracker.ietf.org/doc/html/draft-ietf-uuidrev-rfc4122bis-00#section-5.8 UUID Version 8 - */ - public const UUID_TYPE_CUSTOM = 8; - - /** - * DCE Security principal domain - * - * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap11.htm#tagcjh_14_05_01_01 DCE 1.1, §11.5.1.1 - */ - public const DCE_DOMAIN_PERSON = 0; - - /** - * DCE Security group domain - * - * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap11.htm#tagcjh_14_05_01_01 DCE 1.1, §11.5.1.1 - */ - public const DCE_DOMAIN_GROUP = 1; - - /** - * DCE Security organization domain - * - * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap11.htm#tagcjh_14_05_01_01 DCE 1.1, §11.5.1.1 - */ - public const DCE_DOMAIN_ORG = 2; - - /** - * DCE Security domain string names - * - * @link https://pubs.opengroup.org/onlinepubs/9696989899/chap11.htm#tagcjh_14_05_01_01 DCE 1.1, §11.5.1.1 - */ - public const DCE_DOMAIN_NAMES = [ - self::DCE_DOMAIN_PERSON => 'person', - self::DCE_DOMAIN_GROUP => 'group', - self::DCE_DOMAIN_ORG => 'org', - ]; - - private static ?UuidFactoryInterface $factory = null; - - /** - * @var bool flag to detect if the UUID factory was replaced internally, - * which disables all optimizations for the default/happy path internal - * scenarios - */ - private static bool $factoryReplaced = false; - - protected CodecInterface $codec; - protected NumberConverterInterface $numberConverter; - protected Rfc4122FieldsInterface $fields; - protected TimeConverterInterface $timeConverter; - - /** - * Creates a universally unique identifier (UUID) from an array of fields - * - * Unless you're making advanced use of this library to generate identifiers - * that deviate from RFC 4122, you probably do not want to instantiate a - * UUID directly. Use the static methods, instead: - * - * ``` - * use Ramsey\Uuid\Uuid; - * - * $timeBasedUuid = Uuid::uuid1(); - * $namespaceMd5Uuid = Uuid::uuid3(Uuid::NAMESPACE_URL, 'http://php.net/'); - * $randomUuid = Uuid::uuid4(); - * $namespaceSha1Uuid = Uuid::uuid5(Uuid::NAMESPACE_URL, 'http://php.net/'); - * ``` - * - * @param Rfc4122FieldsInterface $fields The fields from which to construct a UUID - * @param NumberConverterInterface $numberConverter The number converter to use - * for converting hex values to/from integers - * @param CodecInterface $codec The codec to use when encoding or decoding - * UUID strings - * @param TimeConverterInterface $timeConverter The time converter to use - * for converting timestamps extracted from a UUID to unix timestamps - */ - public function __construct( - Rfc4122FieldsInterface $fields, - NumberConverterInterface $numberConverter, - CodecInterface $codec, - TimeConverterInterface $timeConverter - ) { - $this->fields = $fields; - $this->codec = $codec; - $this->numberConverter = $numberConverter; - $this->timeConverter = $timeConverter; - } - - /** - * @psalm-return non-empty-string - */ - public function __toString(): string - { - return $this->toString(); - } - - /** - * Converts the UUID to a string for JSON serialization - */ - public function jsonSerialize(): string - { - return $this->toString(); - } - - /** - * Converts the UUID to a string for PHP serialization - */ - public function serialize(): string - { - return $this->codec->encode($this); - } - - /** - * @return array{bytes: string} - */ - public function __serialize(): array - { - return ['bytes' => $this->serialize()]; - } - - /** - * Re-constructs the object from its serialized form - * - * @param string $data The serialized PHP string to unserialize into - * a UuidInterface instance - */ - public function unserialize(string $data): void - { - if (strlen($data) === 16) { - /** @var Uuid $uuid */ - $uuid = self::getFactory()->fromBytes($data); - } else { - /** @var Uuid $uuid */ - $uuid = self::getFactory()->fromString($data); - } - - $this->codec = $uuid->codec; - $this->numberConverter = $uuid->numberConverter; - $this->fields = $uuid->fields; - $this->timeConverter = $uuid->timeConverter; - } - - /** - * @param array{bytes?: string} $data - */ - public function __unserialize(array $data): void - { - // @codeCoverageIgnoreStart - if (!isset($data['bytes'])) { - throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); - } - // @codeCoverageIgnoreEnd - - $this->unserialize($data['bytes']); - } - - public function compareTo(UuidInterface $other): int - { - $compare = strcmp($this->toString(), $other->toString()); - - if ($compare < 0) { - return -1; - } - - if ($compare > 0) { - return 1; - } - - return 0; - } - - public function equals(?object $other): bool - { - if (!$other instanceof UuidInterface) { - return false; - } - - return $this->compareTo($other) === 0; - } - - /** - * @psalm-return non-empty-string - */ - public function getBytes(): string - { - return $this->codec->encodeBinary($this); - } - - public function getFields(): FieldsInterface - { - return $this->fields; - } - - public function getHex(): Hexadecimal - { - return new Hexadecimal(str_replace('-', '', $this->toString())); - } - - public function getInteger(): IntegerObject - { - return new IntegerObject($this->numberConverter->fromHex($this->getHex()->toString())); - } - - public function getUrn(): string - { - return 'urn:uuid:' . $this->toString(); - } - - /** - * @psalm-return non-empty-string - */ - public function toString(): string - { - return $this->codec->encode($this); - } - - /** - * Returns the factory used to create UUIDs - */ - public static function getFactory(): UuidFactoryInterface - { - if (self::$factory === null) { - self::$factory = new UuidFactory(); - } - - return self::$factory; - } - - /** - * Sets the factory used to create UUIDs - * - * @param UuidFactoryInterface $factory A factory that will be used by this - * class to create UUIDs - */ - public static function setFactory(UuidFactoryInterface $factory): void - { - // Note: non-strict equality is intentional here. If the factory is configured differently, every assumption - // around purity is broken, and we have to internally decide everything differently. - // phpcs:ignore SlevomatCodingStandard.Operators.DisallowEqualOperators.DisallowedNotEqualOperator - self::$factoryReplaced = ($factory != new UuidFactory()); - - self::$factory = $factory; - } - - /** - * Creates a UUID from a byte string - * - * @param string $bytes A binary string - * - * @return UuidInterface A UuidInterface instance created from a binary - * string representation - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners - * - * @psalm-suppress ImpureStaticProperty we know that the factory being replaced can lead to massive - * havoc across all consumers: that should never happen, and - * is generally to be discouraged. Until the factory is kept - * un-replaced, this method is effectively pure. - */ - public static function fromBytes(string $bytes): UuidInterface - { - if (!self::$factoryReplaced && strlen($bytes) === 16) { - $base16Uuid = bin2hex($bytes); - - // Note: we are calling `fromString` internally because we don't know if the given `$bytes` is a valid UUID - return self::fromString( - substr($base16Uuid, 0, 8) - . '-' - . substr($base16Uuid, 8, 4) - . '-' - . substr($base16Uuid, 12, 4) - . '-' - . substr($base16Uuid, 16, 4) - . '-' - . substr($base16Uuid, 20, 12) - ); - } - - return self::getFactory()->fromBytes($bytes); - } - - /** - * Creates a UUID from the string standard representation - * - * @param string $uuid A hexadecimal string - * - * @return UuidInterface A UuidInterface instance created from a hexadecimal - * string representation - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners - * - * @psalm-suppress ImpureStaticProperty we know that the factory being replaced can lead to massive - * havoc across all consumers: that should never happen, and - * is generally to be discouraged. Until the factory is kept - * un-replaced, this method is effectively pure. - */ - public static function fromString(string $uuid): UuidInterface - { - $uuid = strtolower($uuid); - if (!self::$factoryReplaced && preg_match(LazyUuidFromString::VALID_REGEX, $uuid) === 1) { - assert($uuid !== ''); - - return new LazyUuidFromString($uuid); - } - - return self::getFactory()->fromString($uuid); - } - - /** - * Creates a UUID from a DateTimeInterface instance - * - * @param DateTimeInterface $dateTime The date and time - * @param Hexadecimal|null $node A 48-bit number representing the hardware - * address - * @param int|null $clockSeq A 14-bit number used to help avoid duplicates - * that could arise when the clock is set backwards in time or if the - * node ID changes - * - * @return UuidInterface A UuidInterface instance that represents a - * version 1 UUID created from a DateTimeInterface instance - */ - public static function fromDateTime( - DateTimeInterface $dateTime, - ?Hexadecimal $node = null, - ?int $clockSeq = null - ): UuidInterface { - return self::getFactory()->fromDateTime($dateTime, $node, $clockSeq); - } - - /** - * Creates a UUID from the Hexadecimal object - * - * @param Hexadecimal $hex Hexadecimal object representing a hexadecimal number - * - * @return UuidInterface A UuidInterface instance created from the Hexadecimal - * object representing a hexadecimal number - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners - * @psalm-suppress MixedInferredReturnType,MixedReturnStatement - */ - public static function fromHexadecimal(Hexadecimal $hex): UuidInterface - { - $factory = self::getFactory(); - - if (method_exists($factory, 'fromHexadecimal')) { - /** - * @phpstan-ignore-next-line - * @psalm-suppress UndefinedInterfaceMethod - */ - return self::getFactory()->fromHexadecimal($hex); - } - - throw new BadMethodCallException('The method fromHexadecimal() does not exist on the provided factory'); - } - - /** - * Creates a UUID from a 128-bit integer string - * - * @param string $integer String representation of 128-bit integer - * - * @return UuidInterface A UuidInterface instance created from the string - * representation of a 128-bit integer - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners - */ - public static function fromInteger(string $integer): UuidInterface - { - /** @psalm-suppress ImpureMethodCall */ - return self::getFactory()->fromInteger($integer); - } - - /** - * Returns true if the provided string is a valid UUID - * - * @param string $uuid A string to validate as a UUID - * - * @return bool True if the string is a valid UUID, false otherwise - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners - * - * @psalm-assert-if-true =non-empty-string $uuid - */ - public static function isValid(string $uuid): bool - { - /** @psalm-suppress ImpureMethodCall */ - return self::getFactory()->getValidator()->validate($uuid); - } - - /** - * Returns a version 1 (Gregorian time) UUID from a host ID, sequence number, - * and the current time - * - * @param Hexadecimal|int|string|null $node A 48-bit number representing the - * hardware address; this number may be represented as an integer or a - * hexadecimal string - * @param int|null $clockSeq A 14-bit number used to help avoid duplicates that - * could arise when the clock is set backwards in time or if the node ID - * changes - * - * @return UuidInterface A UuidInterface instance that represents a - * version 1 UUID - */ - public static function uuid1($node = null, ?int $clockSeq = null): UuidInterface - { - return self::getFactory()->uuid1($node, $clockSeq); - } - - /** - * Returns a version 2 (DCE Security) UUID from a local domain, local - * identifier, host ID, clock sequence, and the current time - * - * @param int $localDomain The local domain to use when generating bytes, - * according to DCE Security - * @param IntegerObject|null $localIdentifier The local identifier for the - * given domain; this may be a UID or GID on POSIX systems, if the local - * domain is person or group, or it may be a site-defined identifier - * if the local domain is org - * @param Hexadecimal|null $node A 48-bit number representing the hardware - * address - * @param int|null $clockSeq A 14-bit number used to help avoid duplicates - * that could arise when the clock is set backwards in time or if the - * node ID changes (in a version 2 UUID, the lower 8 bits of this number - * are replaced with the domain). - * - * @return UuidInterface A UuidInterface instance that represents a - * version 2 UUID - */ - public static function uuid2( - int $localDomain, - ?IntegerObject $localIdentifier = null, - ?Hexadecimal $node = null, - ?int $clockSeq = null - ): UuidInterface { - return self::getFactory()->uuid2($localDomain, $localIdentifier, $node, $clockSeq); - } - - /** - * Returns a version 3 (name-based) UUID based on the MD5 hash of a - * namespace ID and a name - * - * @param string|UuidInterface $ns The namespace (must be a valid UUID) - * @param string $name The name to use for creating a UUID - * - * @return UuidInterface A UuidInterface instance that represents a - * version 3 UUID - * - * @psalm-suppress ImpureMethodCall we know that the factory being replaced can lead to massive - * havoc across all consumers: that should never happen, and - * is generally to be discouraged. Until the factory is kept - * un-replaced, this method is effectively pure. - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners - */ - public static function uuid3($ns, string $name): UuidInterface - { - return self::getFactory()->uuid3($ns, $name); - } - - /** - * Returns a version 4 (random) UUID - * - * @return UuidInterface A UuidInterface instance that represents a - * version 4 UUID - */ - public static function uuid4(): UuidInterface - { - return self::getFactory()->uuid4(); - } - - /** - * Returns a version 5 (name-based) UUID based on the SHA-1 hash of a - * namespace ID and a name - * - * @param string|UuidInterface $ns The namespace (must be a valid UUID) - * @param string $name The name to use for creating a UUID - * - * @return UuidInterface A UuidInterface instance that represents a - * version 5 UUID - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners - * - * @psalm-suppress ImpureMethodCall we know that the factory being replaced can lead to massive - * havoc across all consumers: that should never happen, and - * is generally to be discouraged. Until the factory is kept - * un-replaced, this method is effectively pure. - */ - public static function uuid5($ns, string $name): UuidInterface - { - return self::getFactory()->uuid5($ns, $name); - } - - /** - * Returns a version 6 (reordered time) UUID from a host ID, sequence number, - * and the current time - * - * @param Hexadecimal|null $node A 48-bit number representing the hardware - * address - * @param int|null $clockSeq A 14-bit number used to help avoid duplicates that - * could arise when the clock is set backwards in time or if the node ID - * changes - * - * @return UuidInterface A UuidInterface instance that represents a - * version 6 UUID - */ - public static function uuid6( - ?Hexadecimal $node = null, - ?int $clockSeq = null - ): UuidInterface { - return self::getFactory()->uuid6($node, $clockSeq); - } - - /** - * Returns a version 7 (Unix Epoch time) UUID - * - * @param DateTimeInterface|null $dateTime An optional date/time from which - * to create the version 7 UUID. If not provided, the UUID is generated - * using the current date/time. - * - * @return UuidInterface A UuidInterface instance that represents a - * version 7 UUID - */ - public static function uuid7(?DateTimeInterface $dateTime = null): UuidInterface - { - $factory = self::getFactory(); - - if (method_exists($factory, 'uuid7')) { - /** @var UuidInterface */ - return $factory->uuid7($dateTime); - } - - throw new UnsupportedOperationException( - 'The provided factory does not support the uuid7() method', - ); - } - - /** - * Returns a version 8 (custom) UUID - * - * The bytes provided may contain any value according to your application's - * needs. Be aware, however, that other applications may not understand the - * semantics of the value. - * - * @param string $bytes A 16-byte octet string. This is an open blob - * of data that you may fill with 128 bits of information. Be aware, - * however, bits 48 through 51 will be replaced with the UUID version - * field, and bits 64 and 65 will be replaced with the UUID variant. You - * MUST NOT rely on these bits for your application needs. - * - * @return UuidInterface A UuidInterface instance that represents a - * version 8 UUID - */ - public static function uuid8(string $bytes): UuidInterface - { - $factory = self::getFactory(); - - if (method_exists($factory, 'uuid8')) { - /** @var UuidInterface */ - return $factory->uuid8($bytes); - } - - throw new UnsupportedOperationException( - 'The provided factory does not support the uuid8() method', - ); - } -} diff --git a/vendor/ramsey/uuid/src/UuidFactory.php b/vendor/ramsey/uuid/src/UuidFactory.php deleted file mode 100644 index 1b06ea6e..00000000 --- a/vendor/ramsey/uuid/src/UuidFactory.php +++ /dev/null @@ -1,513 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid; - -use DateTimeInterface; -use Ramsey\Uuid\Builder\UuidBuilderInterface; -use Ramsey\Uuid\Codec\CodecInterface; -use Ramsey\Uuid\Converter\NumberConverterInterface; -use Ramsey\Uuid\Converter\TimeConverterInterface; -use Ramsey\Uuid\Generator\DceSecurityGeneratorInterface; -use Ramsey\Uuid\Generator\DefaultTimeGenerator; -use Ramsey\Uuid\Generator\NameGeneratorInterface; -use Ramsey\Uuid\Generator\RandomGeneratorInterface; -use Ramsey\Uuid\Generator\TimeGeneratorInterface; -use Ramsey\Uuid\Generator\UnixTimeGenerator; -use Ramsey\Uuid\Lazy\LazyUuidFromString; -use Ramsey\Uuid\Provider\NodeProviderInterface; -use Ramsey\Uuid\Provider\Time\FixedTimeProvider; -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Type\Integer as IntegerObject; -use Ramsey\Uuid\Type\Time; -use Ramsey\Uuid\Validator\ValidatorInterface; - -use function bin2hex; -use function hex2bin; -use function pack; -use function str_pad; -use function strtolower; -use function substr; -use function substr_replace; -use function unpack; - -use const STR_PAD_LEFT; - -class UuidFactory implements UuidFactoryInterface -{ - private CodecInterface $codec; - private DceSecurityGeneratorInterface $dceSecurityGenerator; - private NameGeneratorInterface $nameGenerator; - private NodeProviderInterface $nodeProvider; - private NumberConverterInterface $numberConverter; - private RandomGeneratorInterface $randomGenerator; - private TimeConverterInterface $timeConverter; - private TimeGeneratorInterface $timeGenerator; - private TimeGeneratorInterface $unixTimeGenerator; - private UuidBuilderInterface $uuidBuilder; - private ValidatorInterface $validator; - - /** - * @var bool whether the feature set was provided from outside, or we can - * operate under "default" assumptions - */ - private bool $isDefaultFeatureSet; - - /** - * @param FeatureSet|null $features A set of available features in the current environment - */ - public function __construct(?FeatureSet $features = null) - { - $this->isDefaultFeatureSet = $features === null; - - $features = $features ?: new FeatureSet(); - - $this->codec = $features->getCodec(); - $this->dceSecurityGenerator = $features->getDceSecurityGenerator(); - $this->nameGenerator = $features->getNameGenerator(); - $this->nodeProvider = $features->getNodeProvider(); - $this->numberConverter = $features->getNumberConverter(); - $this->randomGenerator = $features->getRandomGenerator(); - $this->timeConverter = $features->getTimeConverter(); - $this->timeGenerator = $features->getTimeGenerator(); - $this->uuidBuilder = $features->getBuilder(); - $this->validator = $features->getValidator(); - $this->unixTimeGenerator = $features->getUnixTimeGenerator(); - } - - /** - * Returns the codec used by this factory - */ - public function getCodec(): CodecInterface - { - return $this->codec; - } - - /** - * Sets the codec to use for this factory - * - * @param CodecInterface $codec A UUID encoder-decoder - */ - public function setCodec(CodecInterface $codec): void - { - $this->isDefaultFeatureSet = false; - - $this->codec = $codec; - } - - /** - * Returns the name generator used by this factory - */ - public function getNameGenerator(): NameGeneratorInterface - { - return $this->nameGenerator; - } - - /** - * Sets the name generator to use for this factory - * - * @param NameGeneratorInterface $nameGenerator A generator to generate - * binary data, based on a namespace and name - */ - public function setNameGenerator(NameGeneratorInterface $nameGenerator): void - { - $this->isDefaultFeatureSet = false; - - $this->nameGenerator = $nameGenerator; - } - - /** - * Returns the node provider used by this factory - */ - public function getNodeProvider(): NodeProviderInterface - { - return $this->nodeProvider; - } - - /** - * Returns the random generator used by this factory - */ - public function getRandomGenerator(): RandomGeneratorInterface - { - return $this->randomGenerator; - } - - /** - * Returns the time generator used by this factory - */ - public function getTimeGenerator(): TimeGeneratorInterface - { - return $this->timeGenerator; - } - - /** - * Sets the time generator to use for this factory - * - * @param TimeGeneratorInterface $generator A generator to generate binary - * data, based on the time - */ - public function setTimeGenerator(TimeGeneratorInterface $generator): void - { - $this->isDefaultFeatureSet = false; - - $this->timeGenerator = $generator; - } - - /** - * Returns the DCE Security generator used by this factory - */ - public function getDceSecurityGenerator(): DceSecurityGeneratorInterface - { - return $this->dceSecurityGenerator; - } - - /** - * Sets the DCE Security generator to use for this factory - * - * @param DceSecurityGeneratorInterface $generator A generator to generate - * binary data, based on a local domain and local identifier - */ - public function setDceSecurityGenerator(DceSecurityGeneratorInterface $generator): void - { - $this->isDefaultFeatureSet = false; - - $this->dceSecurityGenerator = $generator; - } - - /** - * Returns the number converter used by this factory - */ - public function getNumberConverter(): NumberConverterInterface - { - return $this->numberConverter; - } - - /** - * Sets the random generator to use for this factory - * - * @param RandomGeneratorInterface $generator A generator to generate binary - * data, based on some random input - */ - public function setRandomGenerator(RandomGeneratorInterface $generator): void - { - $this->isDefaultFeatureSet = false; - - $this->randomGenerator = $generator; - } - - /** - * Sets the number converter to use for this factory - * - * @param NumberConverterInterface $converter A converter to use for working - * with large integers (i.e. integers greater than PHP_INT_MAX) - */ - public function setNumberConverter(NumberConverterInterface $converter): void - { - $this->isDefaultFeatureSet = false; - - $this->numberConverter = $converter; - } - - /** - * Returns the UUID builder used by this factory - */ - public function getUuidBuilder(): UuidBuilderInterface - { - return $this->uuidBuilder; - } - - /** - * Sets the UUID builder to use for this factory - * - * @param UuidBuilderInterface $builder A builder for constructing instances - * of UuidInterface - */ - public function setUuidBuilder(UuidBuilderInterface $builder): void - { - $this->isDefaultFeatureSet = false; - - $this->uuidBuilder = $builder; - } - - /** - * @psalm-mutation-free - */ - public function getValidator(): ValidatorInterface - { - return $this->validator; - } - - /** - * Sets the validator to use for this factory - * - * @param ValidatorInterface $validator A validator to use for validating - * whether a string is a valid UUID - */ - public function setValidator(ValidatorInterface $validator): void - { - $this->isDefaultFeatureSet = false; - - $this->validator = $validator; - } - - /** - * @psalm-pure - */ - public function fromBytes(string $bytes): UuidInterface - { - return $this->codec->decodeBytes($bytes); - } - - /** - * @psalm-pure - */ - public function fromString(string $uuid): UuidInterface - { - $uuid = strtolower($uuid); - - return $this->codec->decode($uuid); - } - - /** - * @psalm-pure - */ - public function fromInteger(string $integer): UuidInterface - { - $hex = $this->numberConverter->toHex($integer); - $hex = str_pad($hex, 32, '0', STR_PAD_LEFT); - - return $this->fromString($hex); - } - - public function fromDateTime( - DateTimeInterface $dateTime, - ?Hexadecimal $node = null, - ?int $clockSeq = null - ): UuidInterface { - $timeProvider = new FixedTimeProvider( - new Time($dateTime->format('U'), $dateTime->format('u')) - ); - - $timeGenerator = new DefaultTimeGenerator( - $this->nodeProvider, - $this->timeConverter, - $timeProvider - ); - - $nodeHex = $node ? $node->toString() : null; - - $bytes = $timeGenerator->generate($nodeHex, $clockSeq); - - return $this->uuidFromBytesAndVersion($bytes, Uuid::UUID_TYPE_TIME); - } - - /** - * @psalm-pure - */ - public function fromHexadecimal(Hexadecimal $hex): UuidInterface - { - return $this->codec->decode($hex->__toString()); - } - - /** - * @inheritDoc - */ - public function uuid1($node = null, ?int $clockSeq = null): UuidInterface - { - $bytes = $this->timeGenerator->generate($node, $clockSeq); - - return $this->uuidFromBytesAndVersion($bytes, Uuid::UUID_TYPE_TIME); - } - - public function uuid2( - int $localDomain, - ?IntegerObject $localIdentifier = null, - ?Hexadecimal $node = null, - ?int $clockSeq = null - ): UuidInterface { - $bytes = $this->dceSecurityGenerator->generate( - $localDomain, - $localIdentifier, - $node, - $clockSeq - ); - - return $this->uuidFromBytesAndVersion($bytes, Uuid::UUID_TYPE_DCE_SECURITY); - } - - /** - * @inheritDoc - * @psalm-pure - */ - public function uuid3($ns, string $name): UuidInterface - { - return $this->uuidFromNsAndName($ns, $name, Uuid::UUID_TYPE_HASH_MD5, 'md5'); - } - - public function uuid4(): UuidInterface - { - $bytes = $this->randomGenerator->generate(16); - - return $this->uuidFromBytesAndVersion($bytes, Uuid::UUID_TYPE_RANDOM); - } - - /** - * @inheritDoc - * @psalm-pure - */ - public function uuid5($ns, string $name): UuidInterface - { - return $this->uuidFromNsAndName($ns, $name, Uuid::UUID_TYPE_HASH_SHA1, 'sha1'); - } - - public function uuid6(?Hexadecimal $node = null, ?int $clockSeq = null): UuidInterface - { - $nodeHex = $node ? $node->toString() : null; - $bytes = $this->timeGenerator->generate($nodeHex, $clockSeq); - - // Rearrange the bytes, according to the UUID version 6 specification. - $v6 = $bytes[6] . $bytes[7] . $bytes[4] . $bytes[5] - . $bytes[0] . $bytes[1] . $bytes[2] . $bytes[3]; - $v6 = bin2hex($v6); - - // Drop the first four bits, while adding an empty four bits for the - // version field. This allows us to reconstruct the correct time from - // the bytes of this UUID. - $v6Bytes = hex2bin(substr($v6, 1, 12) . '0' . substr($v6, -3)); - $v6Bytes .= substr($bytes, 8); - - return $this->uuidFromBytesAndVersion($v6Bytes, Uuid::UUID_TYPE_REORDERED_TIME); - } - - /** - * Returns a version 7 (Unix Epoch time) UUID - * - * @param DateTimeInterface|null $dateTime An optional date/time from which - * to create the version 7 UUID. If not provided, the UUID is generated - * using the current date/time. - * - * @return UuidInterface A UuidInterface instance that represents a - * version 7 UUID - */ - public function uuid7(?DateTimeInterface $dateTime = null): UuidInterface - { - assert($this->unixTimeGenerator instanceof UnixTimeGenerator); - $bytes = $this->unixTimeGenerator->generate(null, null, $dateTime); - - return $this->uuidFromBytesAndVersion($bytes, Uuid::UUID_TYPE_UNIX_TIME); - } - - /** - * Returns a version 8 (Custom) UUID - * - * The bytes provided may contain any value according to your application's - * needs. Be aware, however, that other applications may not understand the - * semantics of the value. - * - * @param string $bytes A 16-byte octet string. This is an open blob - * of data that you may fill with 128 bits of information. Be aware, - * however, bits 48 through 51 will be replaced with the UUID version - * field, and bits 64 and 65 will be replaced with the UUID variant. You - * MUST NOT rely on these bits for your application needs. - * - * @return UuidInterface A UuidInterface instance that represents a - * version 8 UUID - */ - public function uuid8(string $bytes): UuidInterface - { - return $this->uuidFromBytesAndVersion($bytes, Uuid::UUID_TYPE_CUSTOM); - } - - /** - * Returns a Uuid created from the provided byte string - * - * Uses the configured builder and codec and the provided byte string to - * construct a Uuid object. - * - * @param string $bytes The byte string from which to construct a UUID - * - * @return UuidInterface An instance of UuidInterface, created from the - * provided bytes - * - * @psalm-pure - */ - public function uuid(string $bytes): UuidInterface - { - /** @psalm-suppress ImpurePropertyFetch */ - return $this->uuidBuilder->build($this->codec, $bytes); - } - - /** - * Returns a version 3 or 5 namespaced Uuid - * - * @param string|UuidInterface $ns The namespace (must be a valid UUID) - * @param string $name The name to hash together with the namespace - * @param int $version The version of UUID to create (3 or 5) - * @param string $hashAlgorithm The hashing algorithm to use when hashing - * together the namespace and name - * - * @return UuidInterface An instance of UuidInterface, created by hashing - * together the provided namespace and name - * - * @psalm-pure - */ - private function uuidFromNsAndName( - UuidInterface | string $ns, - string $name, - int $version, - string $hashAlgorithm - ): UuidInterface { - if (!($ns instanceof UuidInterface)) { - $ns = $this->fromString($ns); - } - - $bytes = $this->nameGenerator->generate($ns, $name, $hashAlgorithm); - - return $this->uuidFromBytesAndVersion(substr($bytes, 0, 16), $version); - } - - /** - * Returns an RFC 4122 variant Uuid, created from the provided bytes and version - * - * @param string $bytes The byte string to convert to a UUID - * @param int $version The RFC 4122 version to apply to the UUID - * - * @return UuidInterface An instance of UuidInterface, created from the - * byte string and version - * - * @psalm-pure - */ - private function uuidFromBytesAndVersion(string $bytes, int $version): UuidInterface - { - /** @var array $unpackedTime */ - $unpackedTime = unpack('n*', substr($bytes, 6, 2)); - $timeHi = (int) $unpackedTime[1]; - $timeHiAndVersion = pack('n*', BinaryUtils::applyVersion($timeHi, $version)); - - /** @var array $unpackedClockSeq */ - $unpackedClockSeq = unpack('n*', substr($bytes, 8, 2)); - $clockSeqHi = (int) $unpackedClockSeq[1]; - $clockSeqHiAndReserved = pack('n*', BinaryUtils::applyVariant($clockSeqHi)); - - $bytes = substr_replace($bytes, $timeHiAndVersion, 6, 2); - $bytes = substr_replace($bytes, $clockSeqHiAndReserved, 8, 2); - - if ($this->isDefaultFeatureSet) { - return LazyUuidFromString::fromBytes($bytes); - } - - /** @psalm-suppress ImpureVariable */ - return $this->uuid($bytes); - } -} diff --git a/vendor/ramsey/uuid/src/UuidFactoryInterface.php b/vendor/ramsey/uuid/src/UuidFactoryInterface.php deleted file mode 100644 index d99fc9d5..00000000 --- a/vendor/ramsey/uuid/src/UuidFactoryInterface.php +++ /dev/null @@ -1,182 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid; - -use DateTimeInterface; -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Type\Integer as IntegerObject; -use Ramsey\Uuid\Validator\ValidatorInterface; - -/** - * UuidFactoryInterface defines common functionality all `UuidFactory` instances - * must implement - */ -interface UuidFactoryInterface -{ - /** - * Creates a UUID from a byte string - * - * @param string $bytes A binary string - * - * @return UuidInterface A UuidInterface instance created from a binary - * string representation - * - * @psalm-pure - */ - public function fromBytes(string $bytes): UuidInterface; - - /** - * Creates a UUID from a DateTimeInterface instance - * - * @param DateTimeInterface $dateTime The date and time - * @param Hexadecimal|null $node A 48-bit number representing the hardware - * address - * @param int|null $clockSeq A 14-bit number used to help avoid duplicates - * that could arise when the clock is set backwards in time or if the - * node ID changes - * - * @return UuidInterface A UuidInterface instance that represents a - * version 1 UUID created from a DateTimeInterface instance - */ - public function fromDateTime( - DateTimeInterface $dateTime, - ?Hexadecimal $node = null, - ?int $clockSeq = null - ): UuidInterface; - - /** - * Creates a UUID from a 128-bit integer string - * - * @param string $integer String representation of 128-bit integer - * - * @return UuidInterface A UuidInterface instance created from the string - * representation of a 128-bit integer - * - * @psalm-pure - */ - public function fromInteger(string $integer): UuidInterface; - - /** - * Creates a UUID from the string standard representation - * - * @param string $uuid A hexadecimal string - * - * @return UuidInterface A UuidInterface instance created from a hexadecimal - * string representation - * - * @psalm-pure - */ - public function fromString(string $uuid): UuidInterface; - - /** - * Returns the validator to use for the factory - * - * @psalm-mutation-free - */ - public function getValidator(): ValidatorInterface; - - /** - * Returns a version 1 (Gregorian time) UUID from a host ID, sequence number, - * and the current time - * - * @param Hexadecimal|int|string|null $node A 48-bit number representing the - * hardware address; this number may be represented as an integer or a - * hexadecimal string - * @param int|null $clockSeq A 14-bit number used to help avoid duplicates - * that could arise when the clock is set backwards in time or if the - * node ID changes - * - * @return UuidInterface A UuidInterface instance that represents a - * version 1 UUID - */ - public function uuid1($node = null, ?int $clockSeq = null): UuidInterface; - - /** - * Returns a version 2 (DCE Security) UUID from a local domain, local - * identifier, host ID, clock sequence, and the current time - * - * @param int $localDomain The local domain to use when generating bytes, - * according to DCE Security - * @param IntegerObject|null $localIdentifier The local identifier for the - * given domain; this may be a UID or GID on POSIX systems, if the local - * domain is person or group, or it may be a site-defined identifier - * if the local domain is org - * @param Hexadecimal|null $node A 48-bit number representing the hardware - * address - * @param int|null $clockSeq A 14-bit number used to help avoid duplicates - * that could arise when the clock is set backwards in time or if the - * node ID changes - * - * @return UuidInterface A UuidInterface instance that represents a - * version 2 UUID - */ - public function uuid2( - int $localDomain, - ?IntegerObject $localIdentifier = null, - ?Hexadecimal $node = null, - ?int $clockSeq = null - ): UuidInterface; - - /** - * Returns a version 3 (name-based) UUID based on the MD5 hash of a - * namespace ID and a name - * - * @param string|UuidInterface $ns The namespace (must be a valid UUID) - * @param string $name The name to use for creating a UUID - * - * @return UuidInterface A UuidInterface instance that represents a - * version 3 UUID - * - * @psalm-pure - */ - public function uuid3($ns, string $name): UuidInterface; - - /** - * Returns a version 4 (random) UUID - * - * @return UuidInterface A UuidInterface instance that represents a - * version 4 UUID - */ - public function uuid4(): UuidInterface; - - /** - * Returns a version 5 (name-based) UUID based on the SHA-1 hash of a - * namespace ID and a name - * - * @param string|UuidInterface $ns The namespace (must be a valid UUID) - * @param string $name The name to use for creating a UUID - * - * @return UuidInterface A UuidInterface instance that represents a - * version 5 UUID - * - * @psalm-pure - */ - public function uuid5($ns, string $name): UuidInterface; - - /** - * Returns a version 6 (reordered time) UUID from a host ID, sequence number, - * and the current time - * - * @param Hexadecimal|null $node A 48-bit number representing the hardware - * address - * @param int|null $clockSeq A 14-bit number used to help avoid duplicates - * that could arise when the clock is set backwards in time or if the - * node ID changes - * - * @return UuidInterface A UuidInterface instance that represents a - * version 6 UUID - */ - public function uuid6(?Hexadecimal $node = null, ?int $clockSeq = null): UuidInterface; -} diff --git a/vendor/ramsey/uuid/src/UuidInterface.php b/vendor/ramsey/uuid/src/UuidInterface.php deleted file mode 100644 index cac9457d..00000000 --- a/vendor/ramsey/uuid/src/UuidInterface.php +++ /dev/null @@ -1,109 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid; - -use JsonSerializable; -use Ramsey\Uuid\Fields\FieldsInterface; -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Type\Integer as IntegerObject; -use Serializable; -use Stringable; - -/** - * A UUID is a universally unique identifier adhering to an agreed-upon - * representation format and standard for generation - * - * @psalm-immutable - */ -interface UuidInterface extends - DeprecatedUuidInterface, - JsonSerializable, - Serializable, - Stringable -{ - /** - * Returns -1, 0, or 1 if the UUID is less than, equal to, or greater than - * the other UUID - * - * The first of two UUIDs is greater than the second if the most - * significant field in which the UUIDs differ is greater for the first - * UUID. - * - * * Q. What's the value of being able to sort UUIDs? - * * A. Use them as keys in a B-Tree or similar mapping. - * - * @param UuidInterface $other The UUID to compare - * - * @return int<-1,1> -1, 0, or 1 if the UUID is less than, equal to, or greater than $other - */ - public function compareTo(UuidInterface $other): int; - - /** - * Returns true if the UUID is equal to the provided object - * - * The result is true if and only if the argument is not null, is a UUID - * object, has the same variant, and contains the same value, bit for bit, - * as the UUID. - * - * @param object|null $other An object to test for equality with this UUID - * - * @return bool True if the other object is equal to this UUID - */ - public function equals(?object $other): bool; - - /** - * Returns the binary string representation of the UUID - * - * @psalm-return non-empty-string - */ - public function getBytes(): string; - - /** - * Returns the fields that comprise this UUID - */ - public function getFields(): FieldsInterface; - - /** - * Returns the hexadecimal representation of the UUID - */ - public function getHex(): Hexadecimal; - - /** - * Returns the integer representation of the UUID - */ - public function getInteger(): IntegerObject; - - /** - * Returns the string standard representation of the UUID as a URN - * - * @link http://en.wikipedia.org/wiki/Uniform_Resource_Name Uniform Resource Name - * @link https://tools.ietf.org/html/rfc4122#section-3 RFC 4122, § 3: Namespace Registration Template - */ - public function getUrn(): string; - - /** - * Returns the string standard representation of the UUID - * - * @psalm-return non-empty-string - */ - public function toString(): string; - - /** - * Casts the UUID to the string standard representation - * - * @psalm-return non-empty-string - */ - public function __toString(): string; -} diff --git a/vendor/ramsey/uuid/src/Validator/GenericValidator.php b/vendor/ramsey/uuid/src/Validator/GenericValidator.php deleted file mode 100644 index fd609551..00000000 --- a/vendor/ramsey/uuid/src/Validator/GenericValidator.php +++ /dev/null @@ -1,50 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Validator; - -use Ramsey\Uuid\Uuid; - -use function preg_match; -use function str_replace; - -/** - * GenericValidator validates strings as UUIDs of any variant - * - * @psalm-immutable - */ -final class GenericValidator implements ValidatorInterface -{ - /** - * Regular expression pattern for matching a UUID of any variant. - */ - private const VALID_PATTERN = '\A[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\z'; - - /** - * @psalm-return non-empty-string - * @psalm-suppress MoreSpecificReturnType we know that the retrieved `string` is never empty - * @psalm-suppress LessSpecificReturnStatement we know that the retrieved `string` is never empty - */ - public function getPattern(): string - { - return self::VALID_PATTERN; - } - - public function validate(string $uuid): bool - { - $uuid = str_replace(['urn:', 'uuid:', 'URN:', 'UUID:', '{', '}'], '', $uuid); - - return $uuid === Uuid::NIL || preg_match('/' . self::VALID_PATTERN . '/Dms', $uuid); - } -} diff --git a/vendor/ramsey/uuid/src/Validator/ValidatorInterface.php b/vendor/ramsey/uuid/src/Validator/ValidatorInterface.php deleted file mode 100644 index 3d4bd6f2..00000000 --- a/vendor/ramsey/uuid/src/Validator/ValidatorInterface.php +++ /dev/null @@ -1,41 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid\Validator; - -/** - * A validator validates a string as a proper UUID - * - * @psalm-immutable - */ -interface ValidatorInterface -{ - /** - * Returns the regular expression pattern used by this validator - * - * @return string The regular expression pattern this validator uses - * - * @psalm-return non-empty-string - */ - public function getPattern(): string; - - /** - * Returns true if the provided string represents a UUID - * - * @param string $uuid The string to validate as a UUID - * - * @return bool True if the string is a valid UUID, false otherwise - */ - public function validate(string $uuid): bool; -} diff --git a/vendor/ramsey/uuid/src/functions.php b/vendor/ramsey/uuid/src/functions.php deleted file mode 100644 index 1b3ce00f..00000000 --- a/vendor/ramsey/uuid/src/functions.php +++ /dev/null @@ -1,158 +0,0 @@ - - * @license http://opensource.org/licenses/MIT MIT - * phpcs:disable Squiz.Functions.GlobalFunction - */ - -declare(strict_types=1); - -namespace Ramsey\Uuid; - -use DateTimeInterface; -use Ramsey\Uuid\Type\Hexadecimal; -use Ramsey\Uuid\Type\Integer as IntegerObject; - -/** - * Returns a version 1 (Gregorian time) UUID from a host ID, sequence number, - * and the current time - * - * @param Hexadecimal|int|string|null $node A 48-bit number representing the - * hardware address; this number may be represented as an integer or a - * hexadecimal string - * @param int|null $clockSeq A 14-bit number used to help avoid duplicates that - * could arise when the clock is set backwards in time or if the node ID - * changes - * - * @return non-empty-string Version 1 UUID as a string - */ -function v1($node = null, ?int $clockSeq = null): string -{ - return Uuid::uuid1($node, $clockSeq)->toString(); -} - -/** - * Returns a version 2 (DCE Security) UUID from a local domain, local - * identifier, host ID, clock sequence, and the current time - * - * @param int $localDomain The local domain to use when generating bytes, - * according to DCE Security - * @param IntegerObject|null $localIdentifier The local identifier for the - * given domain; this may be a UID or GID on POSIX systems, if the local - * domain is person or group, or it may be a site-defined identifier - * if the local domain is org - * @param Hexadecimal|null $node A 48-bit number representing the hardware - * address - * @param int|null $clockSeq A 14-bit number used to help avoid duplicates - * that could arise when the clock is set backwards in time or if the - * node ID changes - * - * @return non-empty-string Version 2 UUID as a string - */ -function v2( - int $localDomain, - ?IntegerObject $localIdentifier = null, - ?Hexadecimal $node = null, - ?int $clockSeq = null -): string { - return Uuid::uuid2($localDomain, $localIdentifier, $node, $clockSeq)->toString(); -} - -/** - * Returns a version 3 (name-based) UUID based on the MD5 hash of a - * namespace ID and a name - * - * @param string|UuidInterface $ns The namespace (must be a valid UUID) - * - * @return non-empty-string Version 3 UUID as a string - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners - */ -function v3($ns, string $name): string -{ - return Uuid::uuid3($ns, $name)->toString(); -} - -/** - * Returns a version 4 (random) UUID - * - * @return non-empty-string Version 4 UUID as a string - */ -function v4(): string -{ - return Uuid::uuid4()->toString(); -} - -/** - * Returns a version 5 (name-based) UUID based on the SHA-1 hash of a - * namespace ID and a name - * - * @param string|UuidInterface $ns The namespace (must be a valid UUID) - * - * @return non-empty-string Version 5 UUID as a string - * - * @psalm-pure note: changing the internal factory is an edge case not covered by purity invariants, - * but under constant factory setups, this method operates in functionally pure manners - */ -function v5($ns, string $name): string -{ - return Uuid::uuid5($ns, $name)->toString(); -} - -/** - * Returns a version 6 (reordered time) UUID from a host ID, sequence number, - * and the current time - * - * @param Hexadecimal|null $node A 48-bit number representing the hardware - * address - * @param int|null $clockSeq A 14-bit number used to help avoid duplicates that - * could arise when the clock is set backwards in time or if the node ID - * changes - * - * @return non-empty-string Version 6 UUID as a string - */ -function v6(?Hexadecimal $node = null, ?int $clockSeq = null): string -{ - return Uuid::uuid6($node, $clockSeq)->toString(); -} - -/** - * Returns a version 7 (Unix Epoch time) UUID - * - * @param DateTimeInterface|null $dateTime An optional date/time from which - * to create the version 7 UUID. If not provided, the UUID is generated - * using the current date/time. - * - * @return non-empty-string Version 7 UUID as a string - */ -function v7(?DateTimeInterface $dateTime = null): string -{ - return Uuid::uuid7($dateTime)->toString(); -} - -/** - * Returns a version 8 (custom) UUID - * - * The bytes provided may contain any value according to your application's - * needs. Be aware, however, that other applications may not understand the - * semantics of the value. - * - * @param string $bytes A 16-byte octet string. This is an open blob - * of data that you may fill with 128 bits of information. Be aware, - * however, bits 48 through 51 will be replaced with the UUID version - * field, and bits 64 and 65 will be replaced with the UUID variant. You - * MUST NOT rely on these bits for your application needs. - * - * @return non-empty-string Version 8 UUID as a string - */ -function v8(string $bytes): string -{ - return Uuid::uuid8($bytes)->toString(); -} diff --git a/vendor/ryangjchandler/blade-capture-directive/CHANGELOG.md b/vendor/ryangjchandler/blade-capture-directive/CHANGELOG.md deleted file mode 100644 index 1ce6de1a..00000000 --- a/vendor/ryangjchandler/blade-capture-directive/CHANGELOG.md +++ /dev/null @@ -1,41 +0,0 @@ -# Changelog - -All notable changes to `blade-capture-directive` will be documented in this file. - -## v0.2.2 - 2022-09-02 - -**Full Changelog**: https://github.com/ryangjchandler/blade-capture-directive/compare/v0.2.1...v0.2.2 - -## v0.2.1 - 2022-08-23 - -### What's Changed - -- chore(deps): bump dependabot/fetch-metadata from 1.3.0 to 1.3.1 by @dependabot in https://github.com/ryangjchandler/blade-capture-directive/pull/3 -- chore(deps): bump dependabot/fetch-metadata from 1.3.1 to 1.3.3 by @dependabot in https://github.com/ryangjchandler/blade-capture-directive/pull/4 -- fix: maintain `$this` binding of captured closure by @ryangjchandler in https://github.com/ryangjchandler/blade-capture-directive/pull/5 - -### New Contributors - -- @dependabot made their first contribution in https://github.com/ryangjchandler/blade-capture-directive/pull/3 - -**Full Changelog**: https://github.com/ryangjchandler/blade-capture-directive/compare/v0.2.0...v0.2.1 - -## v0.2.0 - 2022-03-11 - -## What's Changed - -- feature: capture enclosing environment by @ryangjchandler in https://github.com/ryangjchandler/blade-capture-directive/pull/2 - -## New Contributors - -- @ryangjchandler made their first contribution in https://github.com/ryangjchandler/blade-capture-directive/pull/2 - -**Full Changelog**: https://github.com/ryangjchandler/blade-capture-directive/compare/v0.1.0...v0.1.1 - -## v0.1.0 - 2022-03-10 - -**Full Changelog**: https://github.com/ryangjchandler/blade-capture-directive/commits/v0.1.0 - -## 1.0.0 - 202X-XX-XX - -- initial release diff --git a/vendor/ryangjchandler/blade-capture-directive/LICENSE.md b/vendor/ryangjchandler/blade-capture-directive/LICENSE.md deleted file mode 100644 index ea5b2925..00000000 --- a/vendor/ryangjchandler/blade-capture-directive/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) ryangjchandler - -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/vendor/ryangjchandler/blade-capture-directive/README.md b/vendor/ryangjchandler/blade-capture-directive/README.md deleted file mode 100644 index 5f3b2d24..00000000 --- a/vendor/ryangjchandler/blade-capture-directive/README.md +++ /dev/null @@ -1,116 +0,0 @@ -# Create inline partials in your Blade templates with ease. - -[![Latest Version on Packagist](https://img.shields.io/packagist/v/ryangjchandler/blade-capture-directive.svg?style=flat-square)](https://packagist.org/packages/ryangjchandler/blade-capture-directive) -[![GitHub Tests Action Status](https://img.shields.io/github/workflow/status/ryangjchandler/blade-capture-directive/run-tests?label=tests)](https://github.com/ryangjchandler/blade-capture-directive/actions?query=workflow%3Arun-tests+branch%3Amain) -[![GitHub Code Style Action Status](https://img.shields.io/github/workflow/status/ryangjchandler/blade-capture-directive/Check%20&%20fix%20styling?label=code%20style)](https://github.com/ryangjchandler/blade-capture-directive/actions?query=workflow%3A"Check+%26+fix+styling"+branch%3Amain) -[![Total Downloads](https://img.shields.io/packagist/dt/ryangjchandler/blade-capture-directive.svg?style=flat-square)](https://packagist.org/packages/ryangjchandler/blade-capture-directive) - -This package introduces a new `@capture` directive that allows you to capture small parts of your Blade templates and re-use them later on without needing to extract them into partials. - -## Installation - -You can install the package via Composer: - -```bash -composer require ryangjchandler/blade-capture-directive -``` - -## Usage - -This package adds a new pair of directives: `@capture` and `@endcapture`. - -The `@capture` directive will capture all of your Blade until it reaches an `@endcapture` directive. It takes the code and stores it inside of a variable for usage later on. - -```blade -@capture($hello) - Hello, world! -@endcapture -``` - -The directive requires at least 1 argument. This argument should be a PHP variable that you would like to assign your partial to. The variable itself will become a `Closure` that can be invoked inside of Blade echo tags (`{{ }}`) anywhere after it's definition. - -```blade -@capture($hello) - Hello, world! -@endcapture - -{{ $hello() }} -``` - -The above code will invoke your captured Blade code and output `Hello, world!` when compiled by Laravel and rendered in the browser. - -The `@capture` directive also supports arguments. This means you can capture generalised chunks of Blade and change the output dynamically. This is achieved by specifying a comma-separated list of PHP variables like so: - -```blade -@capture($hello, $name) - Hello, {{ $name }}! -@endcapture -``` - -The above code will require that a name is passed to `$hello()`, like below: - -```blade -@capture($hello, $name) - Hello, {{ $name }}! -@endcapture - -{{ $hello('Ryan') }} -``` - -The Blade will compile this and your view will output `Hello, Ryan!`. Cool, right? - -The list of arguments can be treated like any set of arguments defined on a function. This means you can assign default values and specify multiple arguments: - -```blade -@capture($hello, $name, $greeting = 'Hello, ') - {{ $greeting }} {{ $name }}! -@endcapture - -{{ $hello('Ryan') }} -{{ $hello('Taylor', 'Yo, ') }} -``` - -The above code will now output `Hello, Ryan!` as well as `Yo, Taylor!`. This is really cool, I know! - -### Inheriting scope - -All captured blocks will inherit the parent scope, just like a regular partial would in Blade. This means you can use any data passed to the view without having to pass it through to the block manually. - -```blade -@php($name = 'Ryan') - -@capture($hello) - Hello, {{ $name }}! -@endcapture - -{{ $hello() }} -``` - -> If your captured block has a parameter with the same name as a predefined variable from the inherited scope, the block's parameter will always take precedence. - -## Testing - -```bash -composer test -``` - -## Changelog - -Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently. - -## Contributing - -Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details. - -## Security Vulnerabilities - -Please review [our security policy](../../security/policy) on how to report security vulnerabilities. - -## Credits - -- [Ryan Chandler](https://github.com/ryangjchandler) -- [All Contributors](../../contributors) - -## License - -The MIT License (MIT). Please see [License File](LICENSE.md) for more information. diff --git a/vendor/ryangjchandler/blade-capture-directive/composer.json b/vendor/ryangjchandler/blade-capture-directive/composer.json deleted file mode 100644 index dfddaef3..00000000 --- a/vendor/ryangjchandler/blade-capture-directive/composer.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "ryangjchandler/blade-capture-directive", - "description": "Create inline partials in your Blade templates with ease.", - "keywords": [ - "ryangjchandler", - "laravel", - "blade-capture-directive" - ], - "homepage": "https://github.com/ryangjchandler/blade-capture-directive", - "license": "MIT", - "authors": [ - { - "name": "Ryan Chandler", - "email": "support@ryangjchandler.co.uk", - "role": "Developer" - } - ], - "require": { - "php": "^8.0", - "spatie/laravel-package-tools": "^1.9.2", - "illuminate/contracts": "^9.0|^10.0" - }, - "require-dev": { - "nunomaduro/collision": "^6.0|^7.0", - "nunomaduro/larastan": "^2.0", - "orchestra/testbench": "^7.22|^8.0", - "pestphp/pest": "^1.21", - "pestphp/pest-plugin-laravel": "^1.1", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5", - "spatie/laravel-ray": "^1.26" - }, - "autoload": { - "psr-4": { - "RyanChandler\\BladeCaptureDirective\\": "src", - "RyanChandler\\BladeCaptureDirective\\Database\\Factories\\": "database/factories" - } - }, - "autoload-dev": { - "psr-4": { - "RyanChandler\\BladeCaptureDirective\\Tests\\": "tests" - } - }, - "scripts": { - "analyse": "vendor/bin/phpstan analyse", - "test": "vendor/bin/pest", - "test-coverage": "vendor/bin/pest --coverage" - }, - "config": { - "sort-packages": true, - "allow-plugins": { - "pestphp/pest-plugin": true, - "phpstan/extension-installer": true - } - }, - "extra": { - "laravel": { - "providers": [ - "RyanChandler\\BladeCaptureDirective\\BladeCaptureDirectiveServiceProvider" - ], - "aliases": { - "BladeCaptureDirective": "RyanChandler\\BladeCaptureDirective\\Facades\\BladeCaptureDirective" - } - } - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/vendor/ryangjchandler/blade-capture-directive/src/BladeCaptureDirective.php b/vendor/ryangjchandler/blade-capture-directive/src/BladeCaptureDirective.php deleted file mode 100644 index d20542ab..00000000 --- a/vendor/ryangjchandler/blade-capture-directive/src/BladeCaptureDirective.php +++ /dev/null @@ -1,30 +0,0 @@ -trim()->explode(',', 2)->map(fn ($part) => trim($part))->toArray() : - [$expression, '']; - - return " - - "; - } - - public static function close() - { - return " - - "; - } -} diff --git a/vendor/ryangjchandler/blade-capture-directive/src/BladeCaptureDirectiveServiceProvider.php b/vendor/ryangjchandler/blade-capture-directive/src/BladeCaptureDirectiveServiceProvider.php deleted file mode 100644 index c8a15ec2..00000000 --- a/vendor/ryangjchandler/blade-capture-directive/src/BladeCaptureDirectiveServiceProvider.php +++ /dev/null @@ -1,22 +0,0 @@ -name('blade-capture-directive'); - } - - public function packageBooted() - { - Blade::directive('capture', fn (string $expression) => BladeCaptureDirective::open($expression)); - - Blade::directive('endcapture', fn () => BladeCaptureDirective::close()); - } -} diff --git a/vendor/spatie/color/.editorconfig b/vendor/spatie/color/.editorconfig deleted file mode 100644 index cd8eb86e..00000000 --- a/vendor/spatie/color/.editorconfig +++ /dev/null @@ -1,15 +0,0 @@ -; This file is for unifying the coding style for different editors and IDEs. -; More information at http://editorconfig.org - -root = true - -[*] -charset = utf-8 -indent_size = 4 -indent_style = space -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true - -[*.md] -trim_trailing_whitespace = false diff --git a/vendor/spatie/color/.github/FUNDING.yml b/vendor/spatie/color/.github/FUNDING.yml deleted file mode 100644 index 11f656c1..00000000 --- a/vendor/spatie/color/.github/FUNDING.yml +++ /dev/null @@ -1,3 +0,0 @@ -# These are supported funding model platforms - -github: spatie diff --git a/vendor/spatie/color/.github/workflows/php-cs-fixer.yml b/vendor/spatie/color/.github/workflows/php-cs-fixer.yml deleted file mode 100644 index 656f0653..00000000 --- a/vendor/spatie/color/.github/workflows/php-cs-fixer.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Check & fix styling - -on: [push] - -jobs: - php-cs-fixer: - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v2 - with: - ref: ${{ github.head_ref }} - - - name: Run PHP CS Fixer - uses: docker://oskarstark/php-cs-fixer-ga - with: - args: --config=.php_cs.dist.php --allow-risky=yes - - - name: Commit changes - uses: stefanzweifel/git-auto-commit-action@v4 - with: - commit_message: Fix styling - diff --git a/vendor/spatie/color/.github/workflows/run-tests.yml b/vendor/spatie/color/.github/workflows/run-tests.yml deleted file mode 100644 index ae88bdfa..00000000 --- a/vendor/spatie/color/.github/workflows/run-tests.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Tests - -on: [push, pull_request] - -jobs: - test: - runs-on: ${{ matrix.os }} - strategy: - fail-fast: true - matrix: - os: [ubuntu-latest, windows-latest] - php: [8.2, 8.1, 8.0, 7.4, 7.3] - stability: [prefer-lowest, prefer-stable] - - name: P${{ matrix.php }} - ${{ matrix.stability }} - ${{ matrix.os }} - - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo - coverage: none - - - name: Setup problem matchers - run: | - echo "::add-matcher::${{ runner.tool_cache }}/php.json" - echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - - name: Install dependencies - run: composer update --${{ matrix.stability }} --prefer-dist --no-interaction - - - name: Execute tests - run: vendor/bin/pest diff --git a/vendor/spatie/color/.github/workflows/update-changelog.yml b/vendor/spatie/color/.github/workflows/update-changelog.yml deleted file mode 100644 index fa56639f..00000000 --- a/vendor/spatie/color/.github/workflows/update-changelog.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: "Update Changelog" - -on: - release: - types: [released] - -jobs: - update: - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v2 - with: - ref: main - - - name: Update Changelog - uses: stefanzweifel/changelog-updater-action@v1 - with: - latest-version: ${{ github.event.release.name }} - release-notes: ${{ github.event.release.body }} - - - name: Commit updated CHANGELOG - uses: stefanzweifel/git-auto-commit-action@v4 - with: - branch: main - commit_message: Update CHANGELOG - file_pattern: CHANGELOG.md diff --git a/vendor/spatie/color/.php_cs.dist.php b/vendor/spatie/color/.php_cs.dist.php deleted file mode 100644 index 8d8a7901..00000000 --- a/vendor/spatie/color/.php_cs.dist.php +++ /dev/null @@ -1,40 +0,0 @@ -in([ - __DIR__ . '/src', - __DIR__ . '/tests', - ]) - ->name('*.php') - ->notName('*.blade.php') - ->ignoreDotFiles(true) - ->ignoreVCS(true); - -return (new PhpCsFixer\Config()) - ->setRules([ - '@PSR12' => true, - 'array_syntax' => ['syntax' => 'short'], - 'ordered_imports' => ['sort_algorithm' => 'alpha'], - 'no_unused_imports' => true, - 'not_operator_with_successor_space' => true, - 'trailing_comma_in_multiline' => true, - 'phpdoc_scalar' => true, - 'unary_operator_spaces' => true, - 'binary_operator_spaces' => true, - 'blank_line_before_statement' => [ - 'statements' => ['break', 'continue', 'declare', 'return', 'throw', 'try'], - ], - 'phpdoc_single_line_var_spacing' => true, - 'phpdoc_var_without_name' => true, - 'class_attributes_separation' => [ - 'elements' => [ - 'method' => 'one', - ], - ], - 'method_argument_space' => [ - 'on_multiline' => 'ensure_fully_multiline', - 'keep_multiple_spaces_after_comma' => true, - ], - 'single_trait_insert_per_statement' => true, - ]) - ->setFinder($finder); diff --git a/vendor/spatie/color/CHANGELOG.md b/vendor/spatie/color/CHANGELOG.md deleted file mode 100755 index b47be64b..00000000 --- a/vendor/spatie/color/CHANGELOG.md +++ /dev/null @@ -1,87 +0,0 @@ -# Changelog - -All notable changes to `color` will be documented in this file - -## 1.5.2 - 2022-06-24 - -### What's Changed - -- Add RegEx fix to Validate.php too... by @jcogs-design in https://github.com/spatie/color/pull/73 -- Fix typo in Distance::CIE76. by @Angel5a in https://github.com/spatie/color/pull/76 - -### New Contributors - -- @jcogs-design made their first contribution in https://github.com/spatie/color/pull/73 -- @Angel5a made their first contribution in https://github.com/spatie/color/pull/76 - -**Full Changelog**: https://github.com/spatie/color/compare/1.5.1...1.5.2 - -## 1.5.1 - 2022-04-12 - -## What's Changed - -- Fix rgba opacity by @AstroCorp in https://github.com/spatie/color/pull/67 - -## New Contributors - -- @AstroCorp made their first contribution in https://github.com/spatie/color/pull/67 - -**Full Changelog**: https://github.com/spatie/color/compare/1.5.0...1.5.1 - -## 1.4.0 - 2022-01-05 - -- Added support for PHP 8 -- Added support for CMYK & HSB -- Added support for HEX alpha channel -- Added support for 3-digit HEX values - -## 1.3.1 - 2021-09-09 - -- Fix HEX/HSL conversion bug - -## 1.3.0 - 2021-09-06 - -- Added CIELab and XYZ color formats and `Distance` API -- Added `Contrast` API - -## 1.2.4 - 2021-02-18 - -- Fixed division by zero error on pure white/black convertions ([#42](https://github.com/spatie/color/pull/42)) - -## 1.2.3 - 2020-12-10 - -- Added support for PHP 8 - -## 1.2.2 - 2020-11-18 - -- Fix transform RGB value to HSL : division by zero (#38) - -## 1.2.1 - 2020-07-17 - -- HSL to RGB fixes - -## 1.2.0 - 2020-06-22 - -- Added HSL & HSLA support - -## 1.1.1 - 2017-02-03 - -- Fixed validation when a color contained redundant characters at the beginning or end of the string - -## 1.1.0 - 2017-01-13 - -- All color formats now implement a `Color` interface -- Added a `Factory` class with a `fromString` static method to guess a format -- `rgb` and `rgba` values can now contain spaces (e.g. `rgb(255, 255, 255)`) - -## 1.0.2 - 2016-10-17 - -- `rgbChannelToHexChannel` now also accepts single single-digit hex values - -## 1.0.1 - 2016-09-22 - -- Bugfix (breaking!): Alpha channel values are now a float between 0 and 1 - -## 1.0.0 - 2016-09-21 - -- First release diff --git a/vendor/spatie/color/LICENSE.md b/vendor/spatie/color/LICENSE.md deleted file mode 100644 index 0b32f5f9..00000000 --- a/vendor/spatie/color/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -# The MIT License (MIT) - -Copyright (c) Spatie bvba - -> 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/vendor/spatie/color/README.md b/vendor/spatie/color/README.md deleted file mode 100644 index 3b939ae6..00000000 --- a/vendor/spatie/color/README.md +++ /dev/null @@ -1,286 +0,0 @@ - -[](https://supportukrainenow.org) - -# A little library to handle color conversions and comparisons - -[![Latest Version on Packagist](https://img.shields.io/packagist/v/spatie/color.svg?style=flat-square)](https://packagist.org/packages/spatie/color) -[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.md) -[![Build Status](https://img.shields.io/travis/spatie/color/master.svg?style=flat-square)](https://travis-ci.org/spatie/color) -[![Quality Score](https://img.shields.io/scrutinizer/g/spatie/color.svg?style=flat-square)](https://scrutinizer-ci.com/g/spatie/color) -[![Total Downloads](https://img.shields.io/packagist/dt/spatie/color.svg?style=flat-square)](https://packagist.org/packages/spatie/color) -![Tests](https://github.com/spatie/color/workflows/Tests/badge.svg) - -A little library to handle color conversions and comparisons. Currently supports rgb, rgba, hex, hsl, hsla, CIELab, and xyz color formats as well as CIE76, CIE94, and CIEDE2000 color comparison algorithms. - -```php -$rgb = Rgb::fromString('rgb(55,155,255)'); - -echo $rgb->red(); // 55 -echo $rgb->green(); // 155 -echo $rgb->blue(); // 255 - -echo $rgb; // rgb(55,155,255) - -$rgba = $rgb->toRgba(); // `Spatie\Color\Rgba` -$rgba->alpha(); // 1 -echo $rgba; // rgba(55,155,255,1) - -$hex = $rgb->toHex(); // `Spatie\Color\Hex` -$rgba->alpha(); // ff -echo $hex; // #379bff - -$cmyk = $rgb->toCmyk(); // `Spatie\Color\Cmyk` -echo $cmyk; // cmyk(78,39,0,0) - -$hsl = $rgb->toHsl(); // `Spatie\Color\Hsl` -echo $hsl; // hsl(210,100%,100%) - -$hsb = $rgb->toHsb(); // `Spatie\Color\Hsb` -echo $hsb; // hsl(210,78.4%,100%) - -$lab = $rgb->toCIELab(); -echo $lab; // CIELab(62.91,5.34,-57.73) - -$xyz = $rgb->toXyz(); -echo $xyz; // xyz(31.3469,31.4749,99.0308) - -$hex2 = Hex::fromString('#2d78c8'); - -$ratio = Contrast::ratio(Hex::fromString('#f0fff0'), Hex::fromString('#191970')); -echo $ratio; // 15.0 - -$cie76_distance = Distance::CIE76($rgb, $hex2); -$cie76_distance = Distance::CIE76('rgba(55,155,255,1)', '#2d78c8'); // Outputs the same thing, Factory is built-in to all comparison functions -echo $cie76_distance; // 55.89468042667388 - -$cie94_distance = Distance::CIE94($rgb, $hex2); -echo $cie94_distance; // 13.49091942790753 - -$cie94_textiles_distance = Distance::CIE94($rgb, $hex2, 1); // Third parameter optionally sets the application type (0 = Graphic Arts [Default], 1 = Textiles) -echo $cie94_textiles_distance; // 7.0926538068477 - -$ciede2000_distance = Distance::CIEDE2000($rgb, $hex2); -echo $ciede2000_distance; // 12.711957696300898 -``` - -## Support us - -[](https://spatie.be/github-ad-click/color) - -We invest a lot of resources into creating [best in class open source packages](https://spatie.be/open-source). You can support us by [buying one of our paid products](https://spatie.be/open-source/support-us). - -We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on [our contact page](https://spatie.be/about-us). We publish all received postcards on [our virtual postcard wall](https://spatie.be/open-source/postcards). - -## Installation - -You can install the package via composer: - -```bash -composer require spatie/color -``` - -## Usage - -The `Color` package contains a separate class per color format, which each implement a `Color` interface. - -There are seven classes which implement the `Color` interface: - -- `CIELab` -- `Cmyk` -- `Hex` -- `Hsb` -- `Hsl` -- `Hsla` -- `Rgb` -- `Rgba` -- `Xyz` - -### `interface Spatie\Color\Color` - -#### `fromString(): Color` - -Parses a color string and returns a `Color` implementation, depending on the format of the input string. - -```php -Hex::fromString('#000000'); -Rgba::fromString('rgba(255, 255, 255, 1)'); -Hsla::fromString('hsla(360, 100%, 100%, 1)'); -``` - -Throws an `InvalidColorValue` exception if the string can't be parsed. - -> `Rgb`, `Rgba`, `Hsl` and `Hsla` strings are allowed to have spaces. `rgb(0,0,0)` is just as valid as `rgb(0, 0, 0)`. - -#### `red(): int|string` - -Return the value of the `red` color channel. - -```php -Hex::fromString('#ff0000')->red(); // 'ff' -Rgb::fromString('rgb(255, 0, 0)')->red(); // 255 -``` - -#### `green(): int|string` - -Return the value of the `green` color channel. - -```php -Hex::fromString('#00ff00')->green(); // 'ff' -Rgb::fromString('rgb(0, 255, 0)')->green(); // 255 -``` - -#### `blue(): int|string` - -Return the value of the `blue` color channel. - -```php -Hex::fromString('#0000ff')->blue(); // 'ff' -Rgb::fromString('rgb(0, 0, 255)')->blue(); // 255 -``` - -#### `toCmyk(): Cmyk` - -Convert a color to a `Cmyk` color. - -```php -Rgb::fromString('rgb(0, 0, 255)')->toCmyk(); -// `Cmyk` instance; 'cmyk(100,100,0,0)' -``` - -#### `toHex(): Hex` - -Convert a color to a `Hex` color. - -```php -Rgb::fromString('rgb(0, 0, 255)')->toHex(); -// `Hex` instance; '#0000ff' -``` - -When coming from a color format that doesn't support opacity, it can be added by passing it to the `$alpha` parameter. - - -#### `toHsb(): Hsb` - -Convert a color to a `Hsb` color. - -```php -Rgb::fromString('rgb(0, 0, 255)')->toHsb(); -// `Hsl` instance; 'hsb(240, 100%, 100%)' -``` - -#### `toHsl(): Hsl` - -Convert a color to a `Hsl` color. - -```php -Rgb::fromString('rgb(0, 0, 255)')->toHsl(); -// `Hsl` instance; 'hsl(240, 100%, 50%)' -``` - -When coming from a color format that supports opacity, the opacity will simply be omitted. - -```php -Rgba::fromString('rgba(0, 0, 255, .5)')->toHsl(); -// `Hsl` instance; 'hsl(240, 100%, 50%)' -``` - -#### `toHsla(float $alpha = 1): Hsla` - -Convert a color to a `Hsla` color. - -```php -Rgb::fromString('rgb(0, 0, 255)')->toHsla(); -// `Hsla` instance; 'hsla(240, 100%, 50%, 1.0)' -``` - -When coming from a color format that doesn't support opacity, it can be added by passing it to the `$alpha` parameter. - -```php -Rgb::fromString('rgb(0, 0, 255)')->toHsla(.5); -// `Hsla` instance; 'hsla(240, 100%, 50%, 0.5)' -``` - -#### `toRgb(): Rgb` - -Convert a color to an `Rgb` color. - -```php -Hex::fromString('#0000ff')->toRgb(); -// `Rgb` instance; 'rgb(0, 0, 255)' -``` - -When coming from a color format that supports opacity, the opacity will simply be omitted. - -```php -Rgba::fromString('rgb(0, 0, 255, .5)')->toRgb(); -// `Rgb` instance; 'rgb(0, 0, 255)' -``` - -#### `toRgba(float $alpha = 1): Rgba` - -Convert a color to a `Rgba` color. - -```php -Rgb::fromString('rgb(0, 0, 255)')->toRgba(); -// `Rgba` instance; 'rgba(0, 0, 255, 1)' -``` - -When coming from a color format that doesn't support opacity, it can be added by passing it to the `$alpha` parameter. - -```php -Rgba::fromString('rgb(0, 0, 255)')->toRgba(.5); -// `Rgba` instance; 'rgba(0, 0, 255, .5)' -``` - -#### `__toString(): string` - -Cast the color to a string. - -```php -(string) Rgb::fromString('rgb(0, 0, 255)'); // 'rgb(0,0,255)' -(string) Rgba::fromString('rgb(0, 0, 255, .5)'); // 'rgb(0,0,255,0.5)' -(string) Hex::fromString('#0000ff'); // '#0000ff' -(string) Hsla::fromString('hsl(240, 100%, 50%)'); // 'hsl(240, 100%, 50%)' -(string) Hsla::fromString('hsla(240, 100%, 50%, 1.0)'); // 'hsla(240, 100%, 50%, 1.0)' -``` - -### `Factory::fromString(): Color` - -With the `Factory` class, you can create a color instance from any string (it does an educated guess under the hood). If the string isn't a valid color string in any format, it throws an `InvalidColorValue` exception. - -```php -Factory::fromString('rgb(0, 0, 255)'); // `Rgb` instance -Factory::fromString('#0000ff'); // `Hex` instance -Factory::fromString('hsl(240, 100%, 50%)'); // `Hsl` instance -Factory::fromString('Hello world!'); // `InvalidColorValue` exception -``` - -## Changelog - -Please see [CHANGELOG](CHANGELOG.md) for more information what has changed recently. - -## Testing - -``` bash -$ composer test -``` - -## Contributing - -Please see [CONTRIBUTING](https://github.com/spatie/.github/blob/main/CONTRIBUTING.md) for details. - -## Security - -If you've found a bug regarding security please mail [security@spatie.be](mailto:security@spatie.be) instead of using the issue tracker. - -## Credits - -- [Sebastian De Deyne](https://github.com/sebastiandedeyne) -- [All Contributors](../../contributors) - -## About Spatie -Spatie is a webdesign agency based in Antwerp, Belgium. You'll find an overview of all our open source projects [on our website](https://spatie.be/opensource). - -## License - -The MIT License (MIT). Please see [License File](LICENSE.md) for more information. diff --git a/vendor/spatie/color/composer.json b/vendor/spatie/color/composer.json deleted file mode 100644 index ed2ce0f9..00000000 --- a/vendor/spatie/color/composer.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "spatie/color", - "description": "A little library to handle color conversions", - "keywords": [ - "spatie", - "color", - "conversion", - "rgb" - ], - "homepage": "https://github.com/spatie/color", - "license": "MIT", - "authors": [ - { - "name": "Sebastian De Deyne", - "email": "sebastian@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "require": { - "php" : "^7.3|^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.22", - "phpunit/phpunit": "^6.5||^9.0" - }, - "autoload": { - "psr-4": { - "Spatie\\Color\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "Spatie\\Color\\Test\\": "tests" - } - }, - "scripts": { - "test": "vendor/bin/pest" - }, - "config": { - "sort-packages": true, - "allow-plugins": { - "pestphp/pest-plugin": true - } - } -} diff --git a/vendor/spatie/color/src/CIELab.php b/vendor/spatie/color/src/CIELab.php deleted file mode 100644 index fa1cee84..00000000 --- a/vendor/spatie/color/src/CIELab.php +++ /dev/null @@ -1,127 +0,0 @@ -l = $l; - $this->a = $a; - $this->b = $b; - } - - public static function fromString(string $string) - { - Validate::CIELabColorString($string); - - $matches = null; - preg_match('/CIELab\( *(\d{1,3}\.?\d* *, *-?\d{1,3}\.?\d* *, *-?\d{1,3}\.?\d*) *\)/i', $string, $matches); - - $channels = explode(',', $matches[1]); - [$l, $a, $b] = array_map('trim', $channels); - - return new static($l, $a, $b); - } - - public function l(): float - { - return $this->l; - } - - public function a(): float - { - return $this->a; - } - - public function b(): float - { - return $this->b; - } - - public function red(): int - { - $rgb = $this->toRgb(); - - return $rgb->red(); - } - - public function blue(): int - { - $rgb = $this->toRgb(); - - return $rgb->blue(); - } - - public function green(): int - { - $rgb = $this->toRgb(); - - return $rgb->green(); - } - - public function toCIELab(): self - { - return new self($this->l, $this->a, $this->b); - } - - public function toCmyk(): Cmyk - { - return $this->toRgb()->toCmyk(); - } - - public function toHex(string $alpha = 'ff'): Hex - { - return $this->toRgb()->toHex($alpha); - } - - public function toHsb(): Hsb - { - return $this->toRgb()->toHsb(); - } - - public function toHsl(): Hsl - { - return $this->toRgb()->toHSL(); - } - - public function toHsla(float $alpha = 1): Hsla - { - return $this->toRgb()->toHsla($alpha); - } - - public function toRgb(): Rgb - { - return $this->toXyz()->toRgb(); - } - - public function toRgba(float $alpha = 1): Rgba - { - return $this->toRgb()->toRgba($alpha); - } - - public function toXyz(): Xyz - { - [$x, $y, $z] = Convert::CIELabValueToXyz( - $this->l, - $this->a, - $this->b - ); - - return new Xyz($x, $y, $z); - } - - public function __toString(): string - { - return "CIELab({$this->l},{$this->a},{$this->b})"; - } -} diff --git a/vendor/spatie/color/src/Cmyk.php b/vendor/spatie/color/src/Cmyk.php deleted file mode 100644 index 41cf4192..00000000 --- a/vendor/spatie/color/src/Cmyk.php +++ /dev/null @@ -1,132 +0,0 @@ -cyan = $cyan; - $this->magenta = $magenta; - $this->yellow = $yellow; - $this->key = $key; - } - - public static function fromString(string $string) - { - Validate::cmykColorString($string); - - $matches = null; - preg_match('/cmyk\( *(\d{1,3})%? *, *(\d{1,3})%? *, *(\d{1,3})%? *, *(\d{1,3})%? *\)/i', $string, $matches); - - return new static($matches[1] / 100, $matches[2] / 100, $matches[3] / 100, $matches[4] / 100); - } - - public function red(): int - { - return Convert::cmykValueToRgb($this->cyan, $this->magenta, $this->yellow, $this->key)[0]; - } - - public function green(): int - { - return Convert::cmykValueToRgb($this->cyan, $this->magenta, $this->yellow, $this->key)[1]; - } - - public function blue(): int - { - return Convert::cmykValueToRgb($this->cyan, $this->magenta, $this->yellow, $this->key)[2]; - } - - public function cyan(): float - { - return $this->cyan; - } - - public function magenta(): float - { - return $this->magenta; - } - - public function yellow(): float - { - return $this->yellow; - } - - public function key(): float - { - return $this->key; - } - - public function black(): float - { - return $this->key; - } - - public function toCmyk(): Cmyk - { - return new self($this->cyan, $this->magenta, $this->yellow, $this->key); - } - - public function toCIELab(): CIELab - { - return $this->toRgb()->toCIELab(); - } - - public function toHex(string $alpha = 'ff'): Hex - { - return $this->toRgb()->toHex($alpha); - } - - public function toHsb(): Hsb - { - return $this->toRgb()->toHsb(); - } - - public function toHsl(): Hsl - { - return $this->toRgb()->toHsl(); - } - - public function toHsla(float $alpha = 1): Hsla - { - return $this->toRgb()->toHsla($alpha); - } - - public function toRgb(): Rgb - { - list($red, $green, $blue) = Convert::cmykValueToRgb($this->cyan, $this->magenta, $this->yellow, $this->key); - - return new Rgb($red, $green, $blue); - } - - public function toRgba(float $alpha = 1): Rgba - { - return $this->toRgb()->toRgba($alpha); - } - - public function toXyz(): Xyz - { - return $this->toRgba()->toXyz(); - } - - public function __toString(): string - { - $cyan = round($this->cyan * 100); - $magenta = round($this->magenta * 100); - $yellow = round($this->yellow * 100); - $key = round($this->key * 100); - - return "cmyk({$cyan}%,{$magenta}%,{$yellow}%,{$key}%)"; - } -} diff --git a/vendor/spatie/color/src/Color.php b/vendor/spatie/color/src/Color.php deleted file mode 100644 index fbf35963..00000000 --- a/vendor/spatie/color/src/Color.php +++ /dev/null @@ -1,34 +0,0 @@ -toHex(); - } - - if (! $b instanceof Hex) { - $b = $b->toHex(); - } - - $l1 = - 0.2126 * pow(hexdec($a->red()) / 255, 2.2) + - 0.7152 * pow(hexdec($a->green()) / 255, 2.2) + - 0.0722 * pow(hexdec($a->blue()) / 255, 2.2); - - $l2 = - 0.2126 * pow(hexdec($b->red()) / 255, 2.2) + - 0.7152 * pow(hexdec($b->green()) / 255, 2.2) + - 0.0722 * pow(hexdec($b->blue()) / 255, 2.2); - - if ($l1 > $l2) { - return (int) (($l1 + 0.05) / ($l2 + 0.05)); - } else { - return (int) (($l2 + 0.05) / ($l1 + 0.05)); - } - } -} diff --git a/vendor/spatie/color/src/Convert.php b/vendor/spatie/color/src/Convert.php deleted file mode 100644 index f7854513..00000000 --- a/vendor/spatie/color/src/Convert.php +++ /dev/null @@ -1,389 +0,0 @@ - 0.008856) { - $y = pow($y, 3); - } else { - $y = ($y - 16 / 116) / 7.787; - } - - if (pow($x, 3) > 0.008856) { - $x = pow($x, 3); - } else { - $x = ($x - 16 / 116) / 7.787; - } - - if (pow($z, 3) > 0.008856) { - $z = pow($z, 3); - } else { - $z = ($z - 16 / 116) / 7.787; - } - - $x = round(95.047 * $x, 4); - $y = round(100.000 * $y, 4); - $z = round(108.883 * $z, 4); - - if ($x > 95.047) { - $x = 95.047; - } - if ($y > 100) { - $y = 100; - } - if ($z > 108.883) { - $z = 108.883; - } - - return [$x, $y, $z]; - } - - public static function cmykValueToRgb(float $cyan, float $magenta, float $yellow, float $key): array - { - return [ - (int) (255 * (1 - $cyan) * (1 - $key)), - (int) (255 * (1 - $magenta) * (1 - $key)), - (int) (255 * (1 - $yellow) * (1 - $key)), - ]; - } - - public static function rgbValueToCmyk($red, $green, $blue): array - { - $red /= 255; - $green /= 255; - $blue /= 255; - - $black = 1 - max($red, $green, $blue); - $keyNeg = (1 - $black); - - return [ - (1 - $red - $black) / ($keyNeg ?: 1), - (1 - $green - $black) / ($keyNeg ?: 1), - (1 - $blue - $black) / ($keyNeg ?: 1), - $black, - ]; - } - - public static function hexChannelToRgbChannel(string $hexValue): int - { - return hexdec($hexValue); - } - - public static function rgbChannelToHexChannel(int $rgbValue): string - { - return str_pad(dechex($rgbValue), 2, '0', STR_PAD_LEFT); - } - - public static function hsbValueToRgb($hue, $saturation, $brightness) - { - while ($hue > 360) { - $hue -= 360.0; - } - while ($hue < 0) { - $hue += 360.0; - } - - $hue /= 360; - $saturation /= 100; - $brightness /= 100; - - if ($saturation == 0) { - $R = $G = $B = $brightness * 255; - } else { - $hue = $hue * 6; - $i = floor($hue); - $j = $brightness * (1 - $saturation); - $k = $brightness * (1 - $saturation * ($hue - $i)); - $l = $brightness * (1 - $saturation * (1 - ($hue - $i))); - - switch ($i) { - case 0: - $red = $brightness; - $green = $l; - $blue = $j; - - break; - - case 1: - $red = $k; - $green = $brightness; - $blue = $j; - - break; - - case 2: - $red = $j; - $green = $brightness; - $blue = $l; - - break; - - case 3: - $red = $j; - $green = $k; - $blue = $brightness; - - break; - - case 4: - $red = $l; - $green = $j; - $blue = $brightness; - - break; - - default: - $red = $brightness; - $green = $j; - $blue = $k; - - break; - } - - $R = $red * 255; - $G = $green * 255; - $B = $blue * 255; - } - - return [round($R), round($G), round($B)]; - } - - public static function hslValueToRgb(float $hue, float $saturation, float $lightness): array - { - $h = intval((360 + (intval($hue) % 360)) % 360); // hue values can be less than 0 and greater than 360. This normalises them into the range 0-360. - - $c = (1 - abs(2 * ($lightness / 100) - 1)) * ($saturation / 100); - $x = $c * (1 - abs(fmod($h / 60, 2) - 1)); - $m = ($lightness / 100) - ($c / 2); - - if ($h >= 0 && $h <= 60) { - return [round(($c + $m) * 255), round(($x + $m) * 255), round($m * 255)]; - } - - if ($h > 60 && $h <= 120) { - return [round(($x + $m) * 255), round(($c + $m) * 255), round($m * 255)]; - } - - if ($h > 120 && $h <= 180) { - return [round($m * 255), round(($c + $m) * 255), round(($x + $m) * 255)]; - } - - if ($h > 180 && $h <= 240) { - return [round($m * 255), round(($x + $m) * 255), round(($c + $m) * 255)]; - } - - if ($h > 240 && $h <= 300) { - return [round(($x + $m) * 255), round($m * 255), round(($c + $m) * 255)]; - } - - if ($h > 300 && $h <= 360) { - return [round(($c + $m) * 255), round($m * 255), round(($x + $m) * 255)]; - } - } - - public static function rgbValueToHsb($red, $green, $blue): array - { - $red /= 255; - $green /= 255; - $blue /= 255; - - $min = min($red, $green, $blue); - $max = max($red, $green, $blue); - $delMax = $max - $min; - - $brightness = $max; - $hue = 0; - - if ($delMax == 0) { - $hue = 0; - $saturation = 0; - } else { - $saturation = $delMax / $max; - - $delR = ((($max - $red) / 6) + ($delMax / 2)) / $delMax; - $delG = ((($max - $green) / 6) + ($delMax / 2)) / $delMax; - $delB = ((($max - $blue) / 6) + ($delMax / 2)) / $delMax; - - if ($red == $max) { - $hue = $delB - $delG; - } else { - if ($green == $max) { - $hue = (1 / 3) + $delR - $delB; - } else { - if ($blue == $max) { - $hue = (2 / 3) + $delG - $delR; - } - } - } - - if ($hue < 0) { - $hue++; - } - if ($hue > 1) { - $hue--; - } - } - - return [round($hue, 2) * 360, round($saturation, 2) * 100, round($brightness, 2) * 100]; - } - - public static function rgbValueToHsl($red, $green, $blue): array - { - $r = $red / 255; - $g = $green / 255; - $b = $blue / 255; - - $cmax = max($r, $g, $b); - $cmin = min($r, $g, $b); - $delta = $cmax - $cmin; - - $hue = 0; - if ($delta != 0) { - if ($r === $cmax) { - $hue = 60 * fmod(($g - $b) / $delta, 6); - $hue = $hue < 0 ? $hue + 360 : $hue ; - } - - if ($g === $cmax) { - $hue = 60 * ((($b - $r) / $delta) + 2); - } - - if ($b === $cmax) { - $hue = 60 * ((($r - $g) / $delta) + 4); - } - } - - $lightness = ($cmax + $cmin) / 2; - - $saturation = 0; - - if ($lightness > 0 && $lightness < 1) { - $saturation = $delta / (1 - abs((2 * $lightness) - 1)); - } - - return [$hue, min($saturation, 1) * 100, min($lightness, 1) * 100]; - } - - public static function rgbValueToXyz($red, $green, $blue): array - { - $red = $red / 255; - $green = $green / 255; - $blue = $blue / 255; - - if ($red > 0.04045) { - $red = pow((($red + 0.055) / 1.055), 2.4); - } else { - $red = $red / 12.92; - } - - if ($green > 0.04045) { - $green = pow((($green + 0.055) / 1.055), 2.4); - } else { - $green = $green / 12.92; - } - - if ($blue > 0.04045) { - $blue = pow((($blue + 0.055) / 1.055), 2.4); - } else { - $blue = $blue / 12.92; - } - - $red = $red * 100; - $green = $green * 100; - $blue = $blue * 100; - $x = round($red * 0.4124 + $green * 0.3576 + $blue * 0.1805, 4); - $y = round($red * 0.2126 + $green * 0.7152 + $blue * 0.0722, 4); - $z = round($red * 0.0193 + $green * 0.1192 + $blue * 0.9505, 4); - - if ($x > 95.047) { - $x = 95.047; - } - if ($y > 100) { - $y = 100; - } - if ($z > 108.883) { - $z = 108.883; - } - - return [$x, $y, $z]; - } - - public static function xyzValueToCIELab(float $x, float $y, float $z): array - { - $x = $x / 95.047; - $y = $y / 100.000; - $z = $z / 108.883; - - if ($x > 0.008856) { - $x = pow($x, 1 / 3); - } else { - $x = (7.787 * $x) + (16 / 116); - } - - if ($y > 0.008856) { - $y = pow($y, 1 / 3); - } else { - $y = (7.787 * $y) + (16 / 116); - } - - if ($y > 0.008856) { - $l = (116 * $y) - 16; - } else { - $l = 903.3 * $y; - } - - if ($z > 0.008856) { - $z = pow($z, 1 / 3); - } else { - $z = (7.787 * $z) + (16 / 116); - } - - $l = round($l, 2); - $a = round(500 * ($x - $y), 2); - $b = round(200 * ($y - $z), 2); - - return [$l, $a, $b]; - } - - public static function xyzValueToRgb(float $x, float $y, float $z): array - { - $x = $x / 100; - $y = $y / 100; - $z = $z / 100; - - $r = $x * 3.2406 + $y * -1.5372 + $z * -0.4986; - $g = $x * -0.9689 + $y * 1.8758 + $z * 0.0415; - $b = $x * 0.0557 + $y * -0.2040 + $z * 1.0570; - - if ($r > 0.0031308) { - $r = 1.055 * pow($r, (1 / 2.4)) - 0.055; - } else { - $r = 12.92 * $r; - } - - if ($g > 0.0031308) { - $g = 1.055 * pow($g, (1 / 2.4)) - 0.055; - } else { - $g = 12.92 * $g; - } - - if ($b > 0.0031308) { - $b = 1.055 * pow($b, (1 / 2.4)) - 0.055; - } else { - $b = 12.92 * $b; - } - - $r = intval(max(0, min(255, $r * 255))); - $g = intval(max(0, min(255, $g * 255))); - $b = intval(max(0, min(255, $b * 255))); - - return [$r, $g, $b]; - } -} diff --git a/vendor/spatie/color/src/Distance.php b/vendor/spatie/color/src/Distance.php deleted file mode 100644 index f5e9cdca..00000000 --- a/vendor/spatie/color/src/Distance.php +++ /dev/null @@ -1,155 +0,0 @@ -toCIELab(); - $lab2 = $color2->toCIELab(); - - if (strval($lab1) === strval($lab2)) { - return 0; - } - - $sum = 0; - $sum += pow($lab1->l() - $lab2->l(), 2); - $sum += pow($lab1->a() - $lab2->a(), 2); - $sum += pow($lab1->b() - $lab2->b(), 2); - - return max(min(sqrt($sum), 100), 0); - } - - public static function CIE94($color1, $color2, $textiles = 0): float - { - if (gettype($color1) === 'string') { - $color1 = Factory::fromString($color1); - } - - if (gettype($color2) === 'string') { - $color2 = Factory::fromString($color2); - } - - $lab1 = $color1->toCIELab(); - $lab2 = $color2->toCIELab(); - - $l1 = $lab1->l(); - $a1 = $lab1->a(); - $b1 = $lab1->b(); - - $l2 = $lab2->l(); - $a2 = $lab2->a(); - $b2 = $lab2->b(); - - $delta_l = $l1 - $l2; - $delta_a = $a1 - $a2; - $delta_b = $b1 - $b2; - - $c1 = sqrt(pow($a1, 2) + pow($b1, 2)); - $c2 = sqrt(pow($a2, 2) + pow($b2, 2)); - $delta_c = $c1 - $c2; - - $delta_h = pow($delta_a, 2) + pow($delta_b, 2) - pow($delta_c, 2); - $delta_h = $delta_h < 0 ? 0 : sqrt($delta_h); - - if ($textiles) { - $kl = 2.0; - $k1 = .048; - $k2 = .014; - } else { - $kl = 1.0; - $k1 = .045; - $k2 = .015; - } - - $sc = 1.0 + $k1 * $c1; - $sh = 1.0 + $k2 * $c1; - - $i = pow($delta_l / $kl, 2) + pow($delta_c / $sc, 2) + pow($delta_h / $sh, 2); - - return $i < 0 ? 0 : sqrt($i); - } - - public static function CIEDE2000($color1, $color2): float - { - if (gettype($color1) === 'string') { - $color1 = Factory::fromString($color1); - } - - if (gettype($color2) === 'string') { - $color2 = Factory::fromString($color2); - } - - $lab1 = $color1->toCIELab(); - $lab2 = $color2->toCIELab(); - - $l1 = $lab1->l(); - $a1 = $lab1->a(); - $b1 = $lab1->b(); - - $l2 = $lab2->l(); - $a2 = $lab2->a(); - $b2 = $lab2->b(); - - $avg_lp = ($l1 + $l2) / 2; - $c1 = sqrt(pow($a1, 2) + pow($b1, 2)); - $c2 = sqrt(pow($a2, 2) + pow($b2, 2)); - $avg_c = ($c1 + $c2) / 2; - $g = (1 - sqrt(pow($avg_c, 7) / (pow($avg_c, 7) + pow(25, 7)))) / 2; - $a1p = $a1 * (1 + $g); - $a2p = $a2 * (1 + $g); - $c1p = sqrt(pow($a1p, 2) + pow($b1, 2)); - $c2p = sqrt(pow($a2p, 2) + pow($b2, 2)); - $avg_cp = ($c1p + $c2p) / 2; - $h1p = rad2deg(atan2($b1, $a1p)); - - if ($h1p < 0) { - $h1p += 360; - } - - $h2p = rad2deg(atan2($b2, $a2p)); - - if ($h2p < 0) { - $h2p += 360; - } - - $avg_hp = abs($h1p - $h2p) > 180 ? ($h1p + $h2p + 360) / 2 : ($h1p + $h2p) / 2; - $t = 1 - 0.17 * cos(deg2rad($avg_hp - 30)) + 0.24 * cos(deg2rad(2 * $avg_hp)) + 0.32 * cos(deg2rad(3 * $avg_hp + 6)) - 0.2 * cos(deg2rad(4 * $avg_hp - 63)); - $delta_hp = $h2p - $h1p; - - if (abs($delta_hp) > 180) { - if ($h2p <= $h1p) { - $delta_hp += 360; - } else { - $delta_hp -= 360; - } - } - - $delta_lp = $l2 - $l1; - $delta_cp = $c2p - $c1p; - $delta_hp = 2 * sqrt($c1p * $c2p) * sin(deg2rad($delta_hp) / 2); - - $s_l = 1 + ((0.015 * pow($avg_lp - 50, 2)) / sqrt(20 + pow($avg_lp - 50, 2))); - $s_c = 1 + 0.045 * $avg_cp; - $s_h = 1 + 0.015 * $avg_cp * $t; - - $delta_ro = 30 * exp(-(pow(($avg_hp - 275) / 25, 2))); - $r_c = 2 * sqrt(pow($avg_cp, 7) / (pow($avg_cp, 7) + pow(25, 7))); - $r_t = -$r_c * sin(2 * deg2rad($delta_ro)); - - $kl = $kc = $kh = 1; - - $delta_e = sqrt(pow($delta_lp / ($s_l * $kl), 2) + pow($delta_cp / ($s_c * $kc), 2) + pow($delta_hp / ($s_h * $kh), 2) + $r_t * ($delta_cp / ($s_c * $kc)) * ($delta_hp / ($s_h * $kh))); - - return $delta_e; - } -} diff --git a/vendor/spatie/color/src/Exceptions/InvalidColorValue.php b/vendor/spatie/color/src/Exceptions/InvalidColorValue.php deleted file mode 100644 index d3538636..00000000 --- a/vendor/spatie/color/src/Exceptions/InvalidColorValue.php +++ /dev/null @@ -1,100 +0,0 @@ -red = strtolower($red); - $this->green = strtolower($green); - $this->blue = strtolower($blue); - $this->alpha = strtolower($alpha); - } - - public static function fromString(string $string) - { - Validate::hexColorString($string); - - $string = ltrim($string, '#'); - - switch (strlen($string)) { - case 3: - [$red, $green, $blue] = str_split($string); - $red .= $red; - $green .= $green; - $blue .= $blue; - $alpha = 'ff'; - - break; - - case 4: - [$red, $green, $blue, $alpha] = str_split($string); - $red .= $red; - $green .= $green; - $blue .= $blue; - $alpha .= $alpha; - - break; - - default: - case 6: - [$red, $green, $blue] = str_split($string, 2); - $alpha = 'ff'; - - break; - - case 8: - [$red, $green, $blue, $alpha] = str_split($string, 2); - - break; - } - - return new static($red, $green, $blue, $alpha); - } - - public function red(): string - { - return $this->red; - } - - public function green(): string - { - return $this->green; - } - - public function blue(): string - { - return $this->blue; - } - - public function alpha(): string - { - return $this->alpha; - } - - public function toCIELab(): CIELab - { - return $this->toRgb()->toCIELab(); - } - - public function toCmyk(): Cmyk - { - return $this->toRgb()->toCmyk(); - } - - public function toHex(string $alpha = 'ff'): self - { - return new self($this->red, $this->green, $this->blue, $alpha); - } - - public function toHsb(): Hsb - { - return $this->toRgb()->toHsb(); - } - - public function toHsl(): Hsl - { - [$hue, $saturation, $lightness] = Convert::rgbValueToHsl( - Convert::hexChannelToRgbChannel($this->red), - Convert::hexChannelToRgbChannel($this->green), - Convert::hexChannelToRgbChannel($this->blue) - ); - - return new Hsl($hue, $saturation, $lightness); - } - - public function toHsla(float $alpha = 1): Hsla - { - [$hue, $saturation, $lightness] = Convert::rgbValueToHsl( - Convert::hexChannelToRgbChannel($this->red), - Convert::hexChannelToRgbChannel($this->green), - Convert::hexChannelToRgbChannel($this->blue) - ); - - return new Hsla($hue, $saturation, $lightness, $alpha); - } - - public function toRgb(): Rgb - { - return new Rgb( - Convert::hexChannelToRgbChannel($this->red), - Convert::hexChannelToRgbChannel($this->green), - Convert::hexChannelToRgbChannel($this->blue) - ); - } - - public function toRgba(float $alpha = 1): Rgba - { - return $this->toRgb()->toRgba($alpha); - } - - public function toXyz(): Xyz - { - return $this->toRgb()->toXyz(); - } - - public function __toString(): string - { - return "#{$this->red}{$this->green}{$this->blue}" . ($this->alpha !== 'ff' ? $this->alpha : ''); - } -} diff --git a/vendor/spatie/color/src/Hsb.php b/vendor/spatie/color/src/Hsb.php deleted file mode 100644 index 1698e43f..00000000 --- a/vendor/spatie/color/src/Hsb.php +++ /dev/null @@ -1,121 +0,0 @@ -hue = $hue; - $this->saturation = $saturation; - $this->brightness = $brightness; - } - - public static function fromString(string $string) - { - Validate::hsbColorString($string); - - $matches = null; - preg_match('/hs[vb]\( *(-?\d{1,3}) *, *(\d{1,3})%? *, *(\d{1,3})%? *\)/i', $string, $matches); - - return new static($matches[1], $matches[2], $matches[3]); - } - - public function hue(): float - { - return $this->hue; - } - - public function saturation(): float - { - return $this->saturation; - } - - public function brightness(): float - { - return $this->brightness; - } - - public function red(): int - { - return Convert::hsbValueToRgb($this->hue, $this->saturation, $this->brightness)[0]; - } - - public function green(): int - { - return Convert::hsbValueToRgb($this->hue, $this->saturation, $this->brightness)[1]; - } - - public function blue(): int - { - return Convert::hsbValueToRgb($this->hue, $this->saturation, $this->brightness)[2]; - } - - public function toCIELab(): CIELab - { - return $this->toRgb()->toCIELab(); - } - - public function toCmyk(): Cmyk - { - return $this->toRgb()->toCmyk(); - } - - public function toHsb(): Hsb - { - return new self($this->hue, $this->saturation, $this->brightness); - } - - public function toHex(string $alpha = 'ff'): Hex - { - return new Hex( - Convert::rgbChannelToHexChannel($this->red()), - Convert::rgbChannelToHexChannel($this->green()), - Convert::rgbChannelToHexChannel($this->blue()), - $alpha - ); - } - - public function toHsl(): Hsl - { - return $this->toRgb()->toHsl(); - } - - public function toHsla(float $alpha = 1): Hsla - { - return $this->toRgb()->toHsla($alpha); - } - - public function toRgb(): Rgb - { - return new Rgb($this->red(), $this->green(), $this->blue()); - } - - public function toRgba(float $alpha = 1): Rgba - { - return new Rgba($this->red(), $this->green(), $this->blue(), $alpha); - } - - public function toXyz(): Xyz - { - return $this->toRgb()->toXyz(); - } - - public function __toString(): string - { - $hue = round($this->hue); - $saturation = round($this->saturation); - $brightness = round($this->brightness); - - return "hsb({$hue},{$saturation}%,{$brightness}%)"; - } -} diff --git a/vendor/spatie/color/src/Hsl.php b/vendor/spatie/color/src/Hsl.php deleted file mode 100644 index d11a21f5..00000000 --- a/vendor/spatie/color/src/Hsl.php +++ /dev/null @@ -1,120 +0,0 @@ -hue = $hue; - $this->saturation = $saturation; - $this->lightness = $lightness; - } - - public static function fromString(string $string) - { - Validate::hslColorString($string); - - $matches = null; - preg_match('/hsl\( *(-?\d{1,3}) *, *(\d{1,3})%? *, *(\d{1,3})%? *\)/i', $string, $matches); - - return new static($matches[1], $matches[2], $matches[3]); - } - - public function hue(): float - { - return $this->hue; - } - - public function saturation(): float - { - return $this->saturation; - } - - public function lightness(): float - { - return $this->lightness; - } - - public function red(): int - { - return Convert::hslValueToRgb($this->hue, $this->saturation, $this->lightness)[0]; - } - - public function green(): int - { - return Convert::hslValueToRgb($this->hue, $this->saturation, $this->lightness)[1]; - } - - public function blue(): int - { - return Convert::hslValueToRgb($this->hue, $this->saturation, $this->lightness)[2]; - } - - public function toCIELab(): CIELab - { - return $this->toRgb()->toCIELab(); - } - - public function toCmyk(): Cmyk - { - return $this->toRgb()->toCmyk(); - } - - public function toHex(string $alpha = 'ff'): Hex - { - return new Hex( - Convert::rgbChannelToHexChannel($this->red()), - Convert::rgbChannelToHexChannel($this->green()), - Convert::rgbChannelToHexChannel($this->blue()), - $alpha - ); - } - - public function toHsb(): Hsb - { - return $this->toRgb()->toHsb(); - } - - public function toHsl(): self - { - return new self($this->hue(), $this->saturation(), $this->lightness()); - } - - public function toHsla(float $alpha = 1): Hsla - { - return new Hsla($this->hue(), $this->saturation(), $this->lightness(), $alpha); - } - - public function toRgb(): Rgb - { - return new Rgb($this->red(), $this->green(), $this->blue()); - } - - public function toRgba(float $alpha = 1): Rgba - { - return new Rgba($this->red(), $this->green(), $this->blue(), $alpha); - } - - public function toXyz(): Xyz - { - return $this->toRgb()->toXyz(); - } - - public function __toString(): string - { - $hue = round($this->hue); - $saturation = round($this->saturation); - $lightness = round($this->lightness); - - return "hsl({$hue},{$saturation}%,{$lightness}%)"; - } -} diff --git a/vendor/spatie/color/src/Hsla.php b/vendor/spatie/color/src/Hsla.php deleted file mode 100644 index 6c460a38..00000000 --- a/vendor/spatie/color/src/Hsla.php +++ /dev/null @@ -1,134 +0,0 @@ -hue = $hue; - $this->saturation = $saturation; - $this->lightness = $lightness; - $this->alpha = $alpha; - } - - public static function fromString(string $string) - { - Validate::hslaColorString($string); - - $matches = null; - preg_match('/hsla\( *(\d{1,3}) *, *(\d{1,3})%? *, *(\d{1,3})%? *, *([0-1](\.\d{1,2})?) *\)/i', $string, $matches); - - return new static($matches[1], $matches[2], $matches[3], $matches[4]); - } - - public function hue(): float - { - return $this->hue; - } - - public function saturation(): float - { - return $this->saturation; - } - - public function lightness(): float - { - return $this->lightness; - } - - public function red(): int - { - return Convert::hslValueToRgb($this->hue, $this->saturation, $this->lightness)[0]; - } - - public function green(): int - { - return Convert::hslValueToRgb($this->hue, $this->saturation, $this->lightness)[1]; - } - - public function blue(): int - { - return Convert::hslValueToRgb($this->hue, $this->saturation, $this->lightness)[2]; - } - - public function alpha(): float - { - return $this->alpha; - } - - public function contrast(): self - { - return Contrast::make($this->toHex())->toHsla($this->alpha()); - } - - public function toCIELab(): CIELab - { - return $this->toRgb()->toCIELab(); - } - - public function toCmyk(): Cmyk - { - return $this->toRgb()->toCmyk(); - } - - public function toHex(string $alpha = 'ff'): Hex - { - return new Hex( - Convert::rgbChannelToHexChannel($this->red()), - Convert::rgbChannelToHexChannel($this->green()), - Convert::rgbChannelToHexChannel($this->blue()), - $alpha - ); - } - - public function toHsb(): Hsb - { - return $this->toRgb()->toHsb(); - } - - public function toHsla(float $alpha = 1): self - { - return new self($this->hue(), $this->saturation(), $this->lightness(), $alpha); - } - - public function toHsl(): Hsl - { - return new Hsl($this->hue(), $this->saturation(), $this->lightness()); - } - - public function toRgb(): Rgb - { - return new Rgb($this->red(), $this->green(), $this->blue()); - } - - public function toRgba(float $alpha = 1): Rgba - { - return new Rgba($this->red(), $this->green(), $this->blue(), $alpha); - } - - public function toXyz(): Xyz - { - return $this->toRgb()->toXyz(); - } - - public function __toString(): string - { - $hue = round($this->hue); - $saturation = round($this->saturation); - $lightness = round($this->lightness); - $alpha = round($this->alpha, 2); - - return "hsla({$hue},{$saturation}%,{$lightness}%,{$alpha})"; - } -} diff --git a/vendor/spatie/color/src/Rgb.php b/vendor/spatie/color/src/Rgb.php deleted file mode 100644 index 336e2b6a..00000000 --- a/vendor/spatie/color/src/Rgb.php +++ /dev/null @@ -1,127 +0,0 @@ -red = $red; - $this->green = $green; - $this->blue = $blue; - } - - public static function fromString(string $string) - { - Validate::rgbColorString($string); - - $matches = null; - preg_match('/rgb\( *(\d{1,3} *, *\d{1,3} *, *\d{1,3}) *\)/i', $string, $matches); - - $channels = explode(',', $matches[1]); - [$red, $green, $blue] = array_map('trim', $channels); - - return new static($red, $green, $blue); - } - - public function red(): int - { - return $this->red; - } - - public function green(): int - { - return $this->green; - } - - public function blue(): int - { - return $this->blue; - } - - public function toCIELab(): CIELab - { - return $this->toXyz()->toCIELab(); - } - - public function toCmyk(): Cmyk - { - list($cyan, $magenta, $yellow, $key) = Convert::rgbValueToCmyk($this->red, $this->green, $this->blue); - - return new Cmyk($cyan, $magenta, $yellow, $key); - } - - public function toHex(string $alpha = 'ff'): Hex - { - return new Hex( - Convert::rgbChannelToHexChannel($this->red), - Convert::rgbChannelToHexChannel($this->green), - Convert::rgbChannelToHexChannel($this->blue), - $alpha - ); - } - - public function toHsb(): Hsb - { - list($hue, $saturation, $brightness) = Convert::rgbValueToHsb($this->red, $this->green, $this->blue); - - return new Hsb($hue, $saturation, $brightness); - } - - public function toHsl(): Hsl - { - [$hue, $saturation, $lightness] = Convert::rgbValueToHsl( - $this->red, - $this->green, - $this->blue - ); - - return new Hsl($hue, $saturation, $lightness); - } - - public function toHsla(float $alpha = 1): Hsla - { - [$hue, $saturation, $lightness] = Convert::rgbValueToHsl( - $this->red, - $this->green, - $this->blue - ); - - return new Hsla($hue, $saturation, $lightness, $alpha); - } - - public function toRgb(): self - { - return new self($this->red, $this->green, $this->blue); - } - - public function toRgba(float $alpha = 1): Rgba - { - return new Rgba($this->red, $this->green, $this->blue, $alpha); - } - - public function toXyz(): Xyz - { - [$x, $y, $z] = Convert::rgbValueToXyz( - $this->red, - $this->green, - $this->blue - ); - - return new Xyz($x, $y, $z); - } - - public function __toString(): string - { - return "rgb({$this->red},{$this->green},{$this->blue})"; - } -} diff --git a/vendor/spatie/color/src/Rgba.php b/vendor/spatie/color/src/Rgba.php deleted file mode 100644 index 330c1356..00000000 --- a/vendor/spatie/color/src/Rgba.php +++ /dev/null @@ -1,124 +0,0 @@ -red = $red; - $this->green = $green; - $this->blue = $blue; - $this->alpha = $alpha; - } - - public static function fromString(string $string) - { - Validate::rgbaColorString($string); - - $matches = null; - preg_match('/rgba\( *(\d{1,3} *, *\d{1,3} *, *\d{1,3} *, *[0-1]*(\.\d{1,})?) *\)/i', $string, $matches); - - $channels = explode(',', $matches[1]); - [$red, $green, $blue, $alpha] = array_map('trim', $channels); - - return new static($red, $green, $blue, $alpha); - } - - public function red(): int - { - return $this->red; - } - - public function green(): int - { - return $this->green; - } - - public function blue(): int - { - return $this->blue; - } - - public function alpha(): float - { - return $this->alpha; - } - - public function toCIELab(): CIELab - { - return $this->toRgb()->toCIELab(); - } - - public function toCmyk(): Cmyk - { - return $this->toRgb()->toCmyk(); - } - - public function toHex(string $alpha = 'ff'): Hex - { - return $this->toRgb()->toHex($alpha); - } - - public function toHsb(): Hsb - { - return $this->toRgb()->toHsb(); - } - - public function toHsl(): Hsl - { - [$hue, $saturation, $lightness] = Convert::rgbValueToHsl( - $this->red, - $this->green, - $this->blue - ); - - return new Hsl($hue, $saturation, $lightness); - } - - public function toHsla(float $alpha = 1): Hsla - { - [$hue, $saturation, $lightness] = Convert::rgbValueToHsl( - $this->red, - $this->green, - $this->blue - ); - - return new Hsla($hue, $saturation, $lightness, $alpha); - } - - public function toRgb(): Rgb - { - return new Rgb($this->red, $this->green, $this->blue); - } - - public function toRgba(float $alpha = 1): self - { - return new self($this->red, $this->green, $this->blue, $alpha); - } - - public function toXyz(): Xyz - { - return $this->toRgb()->toXyz(); - } - - public function __toString(): string - { - $alpha = number_format($this->alpha, 2); - - return "rgba({$this->red},{$this->green},{$this->blue},{$alpha})"; - } -} diff --git a/vendor/spatie/color/src/Validate.php b/vendor/spatie/color/src/Validate.php deleted file mode 100644 index 97a79ff4..00000000 --- a/vendor/spatie/color/src/Validate.php +++ /dev/null @@ -1,155 +0,0 @@ - 100)) { - throw InvalidColorValue::CIELabValueNotInRange($value, $name, 0, 100); - } - - if (($name === 'a' || $name === 'b') && ($value < -110 || $value > 110)) { - throw InvalidColorValue::CIELabValueNotInRange($value, $name, -110, 110); - } - } - - public static function CIELabColorString($string): void - { - if (! preg_match('/^ *CIELab\( *\d{1,3}\.?\d* *, *-?\d{1,3}\.?\d* *, *-?\d{1,3}\.?\d* *\) *$/i', $string)) { - throw InvalidColorValue::malformedCIELabColorString($string); - } - } - - public static function cmykValue(float $value, string $name): void - { - if ($value < 0 || $value > 1) { - throw InvalidColorValue::cmykValueNotInRange($value, $name); - } - } - - public static function rgbChannelValue(int $value, string $channel): void - { - if ($value < 0 || $value > 255) { - throw InvalidColorValue::rgbChannelValueNotInRange($value, $channel); - } - } - - public static function alphaChannelValue(float $value): void - { - if ($value < 0 || $value > 1) { - throw InvalidColorValue::alphaChannelValueNotInRange($value); - } - } - - public static function hexChannelValue(string $value): void - { - if (strlen($value) !== 2) { - throw InvalidColorValue::hexChannelValueHasInvalidLength($value); - } - - if (! preg_match('/[a-f0-9]{2}/i', $value)) { - throw InvalidColorValue::hexValueContainsInvalidCharacters($value); - } - } - - public static function hsbValue(float $value, string $name): void - { - switch ($name) { - case 'hue': - if ($value < 0 || $value > 360) { - throw InvalidColorValue::hsbValueNotInRange($value, $name); - } - - break; - - default: - if ($value < 0 || $value > 100) { - throw InvalidColorValue::hsbValueNotInRange($value, $name); - } - - break; - } - } - - public static function hslValue(float $value, string $name): void - { - if ($value < 0 || $value > 100) { - throw InvalidColorValue::hslValueNotInRange($value, $name); - } - } - - public static function cmykColorString($string): void - { - if (! preg_match('/^ *cmyk\( *(\d{1,3})%? *, *(\d{1,3})%? *, *(\d{1,3})%? *, *(\d{1,3})%? *\) *$/i', $string)) { - throw InvalidColorValue::malformedCmykColorString($string); - } - } - - public static function rgbColorString($string): void - { - if (! preg_match('/^ *rgb\( *\d{1,3} *, *\d{1,3} *, *\d{1,3} *\) *$/i', $string)) { - throw InvalidColorValue::malformedRgbColorString($string); - } - } - - public static function rgbaColorString($string): void - { - if (! preg_match('/^ *rgba\( *\d{1,3} *, *\d{1,3} *, *\d{1,3} *, *[0-1]*(\.\d{1,})? *\) *$/i', $string)) { - throw InvalidColorValue::malformedRgbaColorString($string); - } - } - - public static function hexColorString($string): void - { - if (! preg_match('/^#(?:[a-f0-9]{3}|[a-f0-9]{4}|[a-f0-9]{6}|[a-f0-9]{8})$/i', $string)) { - throw InvalidColorValue::malformedHexColorString($string); - } - } - - public static function hsbColorString($string): void - { - if (! preg_match('/^ *hs[vb]\( *-?\d{1,3} *, *\d{1,3}%? *, *\d{1,3}%? *\) *$/i', $string)) { - throw InvalidColorValue::malformedHslColorString($string); - } - } - - public static function hslColorString($string): void - { - if (! preg_match('/^ *hsl\( *-?\d{1,3} *, *\d{1,3}%? *, *\d{1,3}%? *\) *$/i', $string)) { - throw InvalidColorValue::malformedHslColorString($string); - } - } - - public static function hslaColorString($string): void - { - if (! preg_match('/^ *hsla\( *\d{1,3} *, *\d{1,3}%? *, *\d{1,3}%? *, *[0-1](\.\d{1,2})? *\) *$/i', $string)) { - throw InvalidColorValue::malformedHslaColorString($string); - } - } - - public static function xyzValue(float $value, string $name): void - { - if ($name === 'x' && ($value < 0 || $value > 95.047)) { - throw InvalidColorValue::xyzValueNotInRange($value, $name, 0, 95.047); - } - - if ($name === 'y' && ($value < 0 || $value > 100)) { - throw InvalidColorValue::xyzValueNotInRange($value, $name, 0, 100); - } - - if ($name === 'z' && ($value < 0 || $value > 108.883)) { - throw InvalidColorValue::xyzValueNotInRange($value, $name, 0, 108.883); - } - } - - public static function xyzColorString($string): void - { - if (! preg_match('/^ *xyz\( *\d{1,2}\.?\d+? *, *\d{1,3}\.?\d+? *, *\d{1,3}\.?\d+? *\) *$/i', $string)) { - throw InvalidColorValue::malformedXyzColorString($string); - } - } -} diff --git a/vendor/spatie/color/src/Xyz.php b/vendor/spatie/color/src/Xyz.php deleted file mode 100644 index c19adc7f..00000000 --- a/vendor/spatie/color/src/Xyz.php +++ /dev/null @@ -1,133 +0,0 @@ -x = $x; - $this->y = $y; - $this->z = $z; - } - - public static function fromString(string $string) - { - Validate::xyzColorString($string); - - $matches = null; - preg_match('/xyz\( *(\d{1,2}\.?\d+? *, *\d{1,3}\.?\d+? *, *\d{1,3}\.?\d+?) *\)/i', $string, $matches); - - $channels = explode(',', $matches[1]); - [$x, $y, $z] = array_map('trim', $channels); - - return new static($x, $y, $z); - } - - public function x(): float - { - return $this->x; - } - - public function y(): float - { - return $this->y; - } - - public function z(): float - { - return $this->z; - } - - public function red(): int - { - $rgb = $this->toRgb(); - - return $rgb->red(); - } - - public function blue(): int - { - $rgb = $this->toRgb(); - - return $rgb->blue(); - } - - public function green(): int - { - $rgb = $this->toRgb(); - - return $rgb->green(); - } - - public function toCIELab(): CIELab - { - [$l, $a, $b] = Convert::xyzValueToCIELab( - $this->x, - $this->y, - $this->z - ); - - return new CIELab($l, $a, $b); - } - - public function toCmyk(): Cmyk - { - return $this->toRgb()->toCmyk(); - } - - public function toHex(string $alpha = 'ff'): Hex - { - return $this->toRgb()->toHex($alpha); - } - - public function toHsb(): Hsb - { - return $this->toRgb()->toHsb(); - } - - public function toHsl(): Hsl - { - return $this->toRgb()->toHSL(); - } - - public function toHsla(float $alpha = 1): Hsla - { - return $this->toRgb()->toHsla($alpha); - } - - public function toRgb(): Rgb - { - [$red, $green, $blue] = Convert::xyzValueToRgb( - $this->x, - $this->y, - $this->z - ); - - return new Rgb($red, $green, $blue); - } - - public function toRgba(float $alpha = 1): Rgba - { - return $this->toRgb()->toRgba($alpha); - } - - public function toXyz(): self - { - return new self($this->x, $this->y, $this->z); - } - - public function __toString(): string - { - return "xyz({$this->x},{$this->y},{$this->z})"; - } -} diff --git a/vendor/spatie/invade/CHANGELOG.md b/vendor/spatie/invade/CHANGELOG.md deleted file mode 100644 index 9caccf4e..00000000 --- a/vendor/spatie/invade/CHANGELOG.md +++ /dev/null @@ -1,84 +0,0 @@ -# Changelog - -All notable changes to `invade` will be documented in this file. - -## 1.1.1 - 2022-07-05 - -### What's Changed - -- Bump dependabot/fetch-metadata from 1.3.1 to 1.3.3 by @dependabot in https://github.com/spatie/invade/pull/13 -- Improve the PHPStan extension by @jrmajor in https://github.com/spatie/invade/pull/14 - -### New Contributors - -- @jrmajor made their first contribution in https://github.com/spatie/invade/pull/14 - -**Full Changelog**: https://github.com/spatie/invade/compare/1.1.0...1.1.1 - -## 1.1.0 - 2022-07-02 - -### What's Changed - -- Add phpstan support to not report access to private properties/methods by @tpetry in https://github.com/spatie/invade/pull/12 - -### New Contributors - -- @tpetry made their first contribution in https://github.com/spatie/invade/pull/12 - -**Full Changelog**: https://github.com/spatie/invade/compare/1.0.3...1.1.0 - -## 1.0.3 - 2022-06-06 - -### What's Changed - -- Bump dependabot/fetch-metadata from 1.2.0 to 1.2.1 by @dependabot in https://github.com/spatie/invade/pull/8 -- Bump dependabot/fetch-metadata from 1.2.1 to 1.3.0 by @dependabot in https://github.com/spatie/invade/pull/9 -- Bump dependabot/fetch-metadata from 1.3.0 to 1.3.1 by @dependabot in https://github.com/spatie/invade/pull/11 -- Add type checking via phpstan by @olivernybroe in https://github.com/spatie/invade/pull/5 -- Bump actions/checkout from 2 to 3 by @dependabot in https://github.com/spatie/invade/pull/10 - -### New Contributors - -- @olivernybroe made their first contribution in https://github.com/spatie/invade/pull/5 - -**Full Changelog**: https://github.com/spatie/invade/compare/1.0.2...1.0.3 - -## 1.0.2 - 2022-02-21 - -## What's Changed - -- Bump dependabot/fetch-metadata from 1.1.1 to 1.2.0 by @dependabot in https://github.com/spatie/invade/pull/6 -- Add brand new logo to the project by @caneco in https://github.com/spatie/invade/pull/7 - -## New Contributors - -- @dependabot made their first contribution in https://github.com/spatie/invade/pull/6 -- @caneco made their first contribution in https://github.com/spatie/invade/pull/7 - -**Full Changelog**: https://github.com/spatie/invade/compare/1.0.1...1.0.2 - -## 1.0.1 - 2022-02-11 - -## What's Changed - -- Invador -> Invader spelling by @danharrin in https://github.com/spatie/invade/pull/2 -- Only declare function if it does not already exist by @benjam-es in https://github.com/spatie/invade/pull/1 - -## New Contributors - -- @danharrin made their first contribution in https://github.com/spatie/invade/pull/2 -- @benjam-es made their first contribution in https://github.com/spatie/invade/pull/1 - -**Full Changelog**: https://github.com/spatie/invade/compare/1.0.0...1.0.1 - -## 0.0.2 - 2022-02-11 - -- experimental release - -## 0.0.1 - 2022-02-11 - -- experimental release - -## 1.0.0 - 202X-XX-XX - -- initial release diff --git a/vendor/spatie/invade/LICENSE.md b/vendor/spatie/invade/LICENSE.md deleted file mode 100644 index cfe14134..00000000 --- a/vendor/spatie/invade/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) spatie - -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/vendor/spatie/invade/README.md b/vendor/spatie/invade/README.md deleted file mode 100644 index d793827c..00000000 --- a/vendor/spatie/invade/README.md +++ /dev/null @@ -1,93 +0,0 @@ -

    Social Card of Invade

    - -# A PHP function to access private properties and methods - -[![Latest Version on Packagist](https://img.shields.io/packagist/v/spatie/invade.svg?style=flat-square)](https://packagist.org/packages/spatie/invade) -[![Tests](https://github.com/spatie/invade/actions/workflows/run-tests.yml/badge.svg?branch=main)](https://github.com/spatie/invade/actions/workflows/run-tests.yml) -[![Total Downloads](https://img.shields.io/packagist/dt/spatie/invade.svg?style=flat-square)](https://packagist.org/packages/spatie/invade) - -This package offers an `invade` function that will allow you to read/write private properties of an object. It will also allow you to call private methods. - -## Support us - -[](https://spatie.be/github-ad-click/invade) - -We invest a lot of resources into creating [best in class open source packages](https://spatie.be/open-source). You can support us by [buying one of our paid products](https://spatie.be/open-source/support-us). - -We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on [our contact page](https://spatie.be/about-us). We publish all received postcards on [our virtual postcard wall](https://spatie.be/open-source/postcards). - -## Installation - -You can install the package via composer: - -```bash -composer require spatie/invade -``` - -## Usage - -Imagine you have this class defined which has a private property and method. - -```php -class MyClass -{ - private string $privateProperty = 'private value'; - - private function privateMethod(): string - { - return 'private return value'; - } -} - -$myClass = new Myclass(); -``` - -This is how you can get the value of the private property using the `invade` function. - -```php -invade($myClass)->privateProperty; // returns 'private value' -``` - -The `invade` function also allows you to change private values. - -```php -invade($myClass)->privateProperty = 'changed value'; -invade($myClass)->privateProperty; // returns 'changed value -``` - -Using `invade` you can also call private functions. - -```php -invade($myClass)->privateMethod(); // returns 'private return value' -``` - -## Testing - -```bash -composer test -``` - -## Changelog - -Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently. - -## Contributing - -Please see [CONTRIBUTING](https://github.com/spatie/.github/blob/main/CONTRIBUTING.md) for details. - -## Security Vulnerabilities - -Please review [our security policy](../../security/policy) on how to report security vulnerabilities. - -## Credits - -- [Freek Van der Herten](https://github.com/spatie) -- [All Contributors](../../contributors) - -And a special thanks to [Caneco](https://twitter.com/caneco) for the logo ✨ - -The [original idea](https://twitter.com/calebporzio/status/1492141967404371968) for the `invade` function came from [Caleb "string king" Porzio](https://twitter.com/calebporzio). We slightly polished the code that he created in [this commit on Livewire](https://github.com/livewire/livewire/pull/4649/files). - -## License - -The MIT License (MIT). Please see [License File](LICENSE.md) for more information. diff --git a/vendor/spatie/invade/composer.json b/vendor/spatie/invade/composer.json deleted file mode 100644 index 7f7ca696..00000000 --- a/vendor/spatie/invade/composer.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "name": "spatie/invade", - "description": "A PHP function to work with private properties and methods", - "keywords": [ - "spatie", - "invade" - ], - "homepage": "https://github.com/spatie/invade", - "license": "MIT", - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "role": "Developer" - } - ], - "require": { - "php": "^8.0" - }, - "require-dev": { - "pestphp/pest": "^1.20", - "phpstan/phpstan": "^1.4", - "spatie/ray": "^1.28" - }, - "autoload": { - "psr-4": { - "Spatie\\Invade\\": "src" - }, - "files": [ - "src/functions.php" - ] - }, - "autoload-dev": { - "psr-4": { - "Spatie\\Invade\\Tests\\": "tests" - } - }, - "scripts": { - "analyse": "vendor/bin/phpstan analyse", - "test": "vendor/bin/pest", - "test-coverage": "vendor/bin/pest --coverage" - }, - "config": { - "sort-packages": true, - "allow-plugins": { - "pestphp/pest-plugin": true - } - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/vendor/spatie/invade/phpstan-baseline.neon b/vendor/spatie/invade/phpstan-baseline.neon deleted file mode 100644 index e69de29b..00000000 diff --git a/vendor/spatie/invade/phpstan.neon.dist b/vendor/spatie/invade/phpstan.neon.dist deleted file mode 100644 index 561972e8..00000000 --- a/vendor/spatie/invade/phpstan.neon.dist +++ /dev/null @@ -1,9 +0,0 @@ -includes: - - phpstan-baseline.neon - -parameters: - level: 4 - paths: - - src - tmpDir: build/phpstan - checkMissingIterableValueType: false diff --git a/vendor/spatie/invade/src/Invader.php b/vendor/spatie/invade/src/Invader.php deleted file mode 100755 index 1cbd4023..00000000 --- a/vendor/spatie/invade/src/Invader.php +++ /dev/null @@ -1,33 +0,0 @@ - $this->{$name})->call($this->obj); - } - - public function __set(string $name, mixed $value): void - { - (fn () => $this->{$name} = $value)->call($this->obj); - } - - public function __call(string $name, array $params = []): mixed - { - return (fn () => $this->{$name}(...$params))->call($this->obj); - } -} diff --git a/vendor/spatie/invade/src/functions.php b/vendor/spatie/invade/src/functions.php deleted file mode 100644 index a3e7e863..00000000 --- a/vendor/spatie/invade/src/functions.php +++ /dev/null @@ -1,16 +0,0 @@ - - */ - function invade(object $object): Invader - { - return new Invader($object); - } -} diff --git a/vendor/spatie/laravel-package-tools/LICENSE.md b/vendor/spatie/laravel-package-tools/LICENSE.md deleted file mode 100644 index cfe14134..00000000 --- a/vendor/spatie/laravel-package-tools/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) spatie - -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/vendor/spatie/laravel-package-tools/README.md b/vendor/spatie/laravel-package-tools/README.md deleted file mode 100644 index 165658cf..00000000 --- a/vendor/spatie/laravel-package-tools/README.md +++ /dev/null @@ -1,553 +0,0 @@ -# Tools for creating Laravel packages - -[![Latest Version on Packagist](https://img.shields.io/packagist/v/spatie/laravel-package-tools.svg?style=flat-square)](https://packagist.org/packages/spatie/laravel-package-tools) -![Tests](https://github.com/spatie/laravel-package-tools/workflows/Tests/badge.svg) -[![Total Downloads](https://img.shields.io/packagist/dt/spatie/laravel-package-tools.svg?style=flat-square)](https://packagist.org/packages/spatie/laravel-package-tools) - -This package contains a `PackageServiceProvider` that you can use in your packages to easily register config files, -migrations, and more. - -Here's an example of how it can be used. - -```php -use Spatie\LaravelPackageTools\PackageServiceProvider; -use Spatie\LaravelPackageTools\Package; -use MyPackage\ViewComponents\Alert; -use Spatie\LaravelPackageTools\Commands\InstallCommand; - -class YourPackageServiceProvider extends PackageServiceProvider -{ - public function configurePackage(Package $package): void - { - $package - ->name('your-package-name') - ->hasConfigFile() - ->hasViews() - ->hasViewComponent('spatie', Alert::class) - ->hasViewComposer('*', MyViewComposer::class) - ->sharesDataWithAllViews('downloads', 3) - ->hasTranslations() - ->hasAssets() - ->publishesServiceProvider('MyProviderName') - ->hasRoute('web') - ->hasMigration('create_package_tables') - ->hasCommand(YourCoolPackageCommand::class) - ->hasInstallCommand(function(InstallCommand $command) { - $command - ->publishConfigFile() - ->publishAssets() - ->publishMigrations() - ->copyAndRegisterServiceProviderInApp() - ->askToStarRepoOnGitHub(); - }); - } -} -``` - -Under the hood it will do the necessary work to register the necessary things and make all sorts of files publishable. - -## Support us - -[](https://spatie.be/github-ad-click/laravel-package-tools) - -We invest a lot of resources into creating [best in class open source packages](https://spatie.be/open-source). You can -support us by [buying one of our paid products](https://spatie.be/open-source/support-us). - -We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. -You'll find our address on [our contact page](https://spatie.be/about-us). We publish all received postcards -on [our virtual postcard wall](https://spatie.be/open-source/postcards). - -## Getting started - -This package is opinionated on how you should structure your package. To get started easily, consider -using [our package-skeleton repo](https://github.com/spatie/package-skeleton-laravel) to start your package. The -skeleton is structured perfectly to work perfectly with the `PackageServiceProvider` in this package. - -## Usage - -In your package you should let your service provider extend `Spatie\LaravelPackageTools\PackageServiceProvider`. - -```php -use Spatie\LaravelPackageTools\PackageServiceProvider; -use Spatie\LaravelPackageTools\Package; - -class YourPackageServiceProvider extends PackageServiceProvider -{ - public function configurePackage(Package $package) : void - { - $package->name('your-package-name'); - } -} -``` - -Passing the package name to `name` is mandatory. - -### Working with a config file - -To register a config file, you should create a php file with your package name in the `config` directory of your -package. In this example it should be at `/config/your-package-name.php`. - -If your package name starts with `laravel-`, we expect that your config file does not contain that prefix. So if your -package name is `laravel-cool-package`, the config file should be named `cool-package.php`. - -To register that config file, call `hasConfigFile()` on `$package` in the `configurePackage` method. - -```php -$package - ->name('your-package-name') - ->hasConfigFile(); -``` - -The `hasConfigFile` method will also make the config file publishable. Users of your package will be able to publish the -config file with this command. - -```bash -php artisan vendor:publish --tag=your-package-name-config -``` - -Should your package have multiple config files, you can pass their names as an array to `hasConfigFile` - -```php -$package - ->name('your-package-name') - ->hasConfigFile(['my-config-file', 'another-config-file']); -``` - -### Working with views - -Any views your package provides, should be placed in the `/resources/views` directory. - -You can register these views with the `hasViews` command. - -```php -$package - ->name('your-package-name') - ->hasViews(); -``` - -This will register your views with Laravel. - -If you have a view `/resources/views/myView.blade.php`, you can use it like -this: `view('your-package-name::myView')`. Of course, you can also use subdirectories to organise your views. A view -located at `/resources/views/subdirectory/myOtherView.blade.php` can be used -with `view('your-package-name::subdirectory.myOtherView')`. - -#### Using a custom view namespace - -You can pass a custom view namespace to the `hasViews` method. - -```php -$package - ->name('your-package-name') - ->hasViews('custom-view-namespace'); -``` - -You can now use the views of the package like this: - -```php -view('custom-view-namespace::myView'); -``` - -#### Publishing the views - -Calling `hasViews` will also make views publishable. Users of your package will be able to publish the views with this -command: - -```bash -php artisan vendor:publish --tag=your-package-name-views -``` - -> **Note:** -> -> If you use custom view namespace then you should change your publish command like this: -```bash -php artisan vendor:publish --tag=custom-view-namespace-views -``` - - -### Sharing global data with views - -You can share data with all views using the `sharesDataWithAllViews` method. This will make the shared variable -available to all views. - -```php -$package - ->name('your-package-name') - ->sharesDataWithAllViews('companyName', 'Spatie'); -``` - -### Working with Blade view components - -Any Blade view components that your package provides should be placed in the `/src/Components` directory. - -You can register these views with the `hasViewComponents` command. - -```php -$package - ->name('your-package-name') - ->hasViewComponents('spatie', Alert::class); -``` - -This will register your view components with Laravel. In the case of `Alert::class`, it can be referenced in views -as ``, where `spatie` is the prefix you provided during registration. - -Calling `hasViewComponents` will also make view components publishable, and will be published -to `app/Views/Components/vendor/`. - -Users of your package will be able to publish the view components with this command: - -```bash -php artisan vendor:publish --tag=your-package-name-components -``` - -### Working with view composers - -You can register any view composers that your project uses with the `hasViewComposers` method. You may also register a -callback that receives a `$view` argument instead of a classname. - -To register a view composer with all views, use an asterisk as the view name `'*'`. - -```php -$package - ->name('your-package-name') - ->hasViewComposer('viewName', MyViewComposer::class) - ->hasViewComposer('*', function($view) { - $view->with('sharedVariable', 123); - }); -``` - -### Working with inertia components - -Any `.vue` or `.jsx` files your package provides, should be placed in the `/resources/js/Pages` directory. - -You can register these components with the `hasInertiaComponents` command. - -```php -$package - ->name('your-package-name') - ->hasInertiaComponents(); -``` - -This will register your components with Laravel. - -The user should publish the inertia components manually or using the [installer-command](#adding-an-installer-command) in order to use them. - -If you have an inertia component `/resources/js/Pages/myComponent.vue`, you can use it like -this: `Inertia::render('YourPackageName/myComponent')`. Of course, you can also use subdirectories to organise your components. - -#### Publishing inertia components - -Calling `hasInertiaComponents` will also make inertia components publishable. Users of your package will be able to publish the views with this -command: - -```bash -php artisan vendor:publish --tag=your-package-name-inertia-components -``` - -Also, the inertia components are available in a convenient way with your package [installer-command](#adding-an-installer-command) - -### Working with translations - -Any translations your package provides, should be placed in the `/resources/lang/` -directory. - -You can register these translations with the `hasTranslations` command. - -```php -$package - ->name('your-package-name') - ->hasTranslations(); -``` - -This will register the translations with Laravel. - -Assuming you save this translation file at `/resources/lang/en/translations.php`... - -```php -return [ - 'translatable' => 'translation', -]; -``` - -... your package and users will be able to retrieve the translation with: - -```php -trans('your-package-name::translations.translatable'); // returns 'translation' -``` - -If your package name starts with `laravel-` then you should leave that off in the example above. - -Coding with translation strings as keys, you should create JSON files -in `/resources/lang/.json`. - -For example, creating `/resources/lang/it.json` file like so: - -```json -{ - "Hello!": "Ciao!" -} -``` - -...the output of... - -```php -trans('Hello!'); -``` - -...will be `Ciao!` if the application uses the Italian language. - -Calling `hasTranslations` will also make translations publishable. Users of your package will be able to publish the -translations with this command: - -```bash -php artisan vendor:publish --tag=your-package-name-translations -``` - -### Working with assets - -Any assets your package provides, should be placed in the `/resources/dist/` directory. - -You can make these assets publishable the `hasAssets` method. - -```php -$package - ->name('your-package-name') - ->hasAssets(); -``` - -Users of your package will be able to publish the assets with this command: - -```bash -php artisan vendor:publish --tag=your-package-name-assets -``` - -This will copy over the assets to the `public/vendor/` directory in the app where your package is -installed in. - -### Working with migrations - -The `PackageServiceProvider` assumes that any migrations are placed in this -directory: `/database/migrations`. Inside that directory you can put any migrations. - -To register your migration, you should pass its name without the extension to the `hasMigration` table. - -If your migration file is called `create_my_package_tables.php.stub` you can register them like this: - -```php -$package - ->name('your-package-name') - ->hasMigration('create_my_package_tables'); -``` - -Should your package contain multiple migration files, you can just call `hasMigration` multiple times or -use `hasMigrations`. - -```php -$package - ->name('your-package-name') - ->hasMigrations(['my_package_tables', 'some_other_migration']); -``` - -Calling `hasMigration` will also make migrations publishable. Users of your package will be able to publish the -migrations with this command: - -```bash -php artisan vendor:publish --tag=your-package-name-migrations -``` - -Like you might expect, published migration files will be prefixed with the current datetime. - -You can also enable the migrations to be registered without needing the users of your package to publish them: - -```php -$package - ->name('your-package-name') - ->hasMigrations(['my_package_tables', 'some_other_migration']) - ->runsMigrations(); -``` - -### Working with a publishable service provider - -Some packages need an example service provider to be copied into the `app\Providers` directory of the Laravel app. Think -of for instance, the `laravel/horizon` package that copies an `HorizonServiceProvider` into your app with some sensible -defaults. - -```php -$package - ->name('your-package-name') - ->publishesServiceProvider($nameOfYourServiceProvider); -``` - -The file that will be copied to the app should be stored in your package -in `/resources/stubs/{$nameOfYourServiceProvider}.php.stub`. - -When your package is installed into an app, running this command... - -```bash -php artisan vendor:publish --tag=your-package-name-provider -``` - -... will copy `/resources/stubs/{$nameOfYourServiceProvider}.php.stub` in your package -to `app/Providers/{$nameOfYourServiceProvider}.php` in the app of the user. - -### Registering commands - -You can register any command you package provides with the `hasCommand` function. - -```php -$package - ->name('your-package-name') - ->hasCommand(YourCoolPackageCommand::class); -```` - -If your package provides multiple commands, you can either use `hasCommand` multiple times, or pass an array -to `hasCommands` - -```php -$package - ->name('your-package-name') - ->hasCommands([ - YourCoolPackageCommand::class, - YourOtherCoolPackageCommand::class, - ]); -``` - -### Adding an installer command - -Instead of letting your users manually publishing config files, migrations, and other files manually, you could opt to -add an install command that does all this work in one go. Packages like Laravel Horizon and Livewire provide such -commands. - -When using Laravel Package Tools, you don't have to write an `InstallCommand` yourself. Instead, you can simply -call, `hasInstallCommand` and configure it using a closure. Here's an example. - -```php -use Spatie\LaravelPackageTools\PackageServiceProvider; -use Spatie\LaravelPackageTools\Package; -use Spatie\LaravelPackageTools\Commands\InstallCommand; - -class YourPackageServiceProvider extends PackageServiceProvider -{ - public function configurePackage(Package $package): void - { - $package - ->name('your-package-name') - ->hasConfigFile() - ->hasMigration('create_package_tables') - ->publishesServiceProvider('MyServiceProviderName') - ->hasInstallCommand(function(InstallCommand $command) { - $command - ->publishConfigFile() - ->publishAssets() - ->publishMigrations() - ->askToRunMigrations() - ->copyAndRegisterServiceProviderInApp() - ->askToStarRepoOnGitHub('your-vendor/your-repo-name') - }); - } -} -``` - -With this in place, the package user can call this command: - -```bash -php artisan your-package-name:install -``` - -Using the code above, that command will: - -- publish the config file -- publish the assets -- publish the migrations -- copy the `/resources/stubs/MyProviderName.php.stub` from your package to `app/Providers/MyServiceProviderName.php`, and also register that - provider in `config/app.php` -- ask if migrations should be run now -- prompt the user to open up `https://github.com/'your-vendor/your-repo-name'` in the browser in order to star it - -You can also call `startWith` and `endWith` on the `InstallCommand`. They will respectively be executed at the start and -end when running `php artisan your-package-name:install`. You can use this to perform extra work or display extra -output. - -```php -use Spatie\LaravelPackageTools\Commands\InstallCommand; - -public function configurePackage(Package $package): void -{ - $package - // ... configure package - ->hasInstallCommand(function(InstallCommand $command) { - $command - ->startWith(function(InstallCommand $command) { - $command->info('Hello, and welcome to my great new package!'); - }) - ->publishConfigFile() - ->publishAssets() - ->publishMigrations() - ->askToRunMigrations() - ->copyAndRegisterServiceProviderInApp() - ->askToStarRepoOnGitHub('your-vendor/your-repo-name') - ->endWith(function(InstallCommand $command) { - $command->info('Have a great day!'); - }) - }); -} -``` - -### Working with routes - -The `PackageServiceProvider` assumes that any route files are placed in this directory: `/routes`. Inside -that directory you can put any route files. - -To register your route, you should pass its name without the extension to the `hasRoute` method. - -If your route file is called `web.php` you can register them like this: - -```php -$package - ->name('your-package-name') - ->hasRoute('web'); -``` - -Should your package contain multiple route files, you can just call `hasRoute` multiple times or use `hasRoutes`. - -```php -$package - ->name('your-package-name') - ->hasRoutes(['web', 'admin']); -``` - -### Using lifecycle hooks - -You can put any custom logic your package needs while starting up in one of these methods: - -- `registeringPackage`: will be called at the start of the `register` method of `PackageServiceProvider` -- `packageRegistered`: will be called at the end of the `register` method of `PackageServiceProvider` -- `bootingPackage`: will be called at the start of the `boot` method of `PackageServiceProvider` -- `packageBooted`: will be called at the end of the `boot` method of `PackageServiceProvider` - -## Testing - -```bash -composer test -``` - -## Changelog - -Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently. - -## Contributing - -Please see [CONTRIBUTING](https://github.com/spatie/.github/blob/main/CONTRIBUTING.md) for details. - -## Security Vulnerabilities - -Please review [our security policy](../../security/policy) on how to report security vulnerabilities. - -## Credits - -- [Freek Van der Herten](https://github.com/freekmurze) -- [All Contributors](../../contributors) - -## License - -The MIT License (MIT). Please see [License File](LICENSE.md) for more information. diff --git a/vendor/spatie/laravel-package-tools/composer.json b/vendor/spatie/laravel-package-tools/composer.json deleted file mode 100644 index f9035af0..00000000 --- a/vendor/spatie/laravel-package-tools/composer.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "spatie/laravel-package-tools", - "description": "Tools for creating Laravel packages", - "keywords": [ - "spatie", - "laravel-package-tools" - ], - "homepage": "https://github.com/spatie/laravel-package-tools", - "license": "MIT", - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "role": "Developer" - } - ], - "require": { - "php": "^8.0", - "illuminate/contracts": "^9.28|^10.0|^11.0" - }, - "require-dev": { - "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" - }, - "autoload": { - "psr-4": { - "Spatie\\LaravelPackageTools\\": "src" - } - }, - "autoload-dev": { - "psr-4": { - "Spatie\\LaravelPackageTools\\Tests\\": "tests" - } - }, - "scripts": { - "test": "vendor/bin/pest", - "test-coverage": "vendor/bin/pest --coverage" - }, - "config": { - "sort-packages": true, - "allow-plugins": { - "pestphp/pest-plugin": true - } - }, - "minimum-stability": "dev", - "prefer-stable": true -} diff --git a/vendor/spatie/laravel-package-tools/src/Commands/InstallCommand.php b/vendor/spatie/laravel-package-tools/src/Commands/InstallCommand.php deleted file mode 100644 index 1453bdb7..00000000 --- a/vendor/spatie/laravel-package-tools/src/Commands/InstallCommand.php +++ /dev/null @@ -1,187 +0,0 @@ -signature = $package->shortName() . ':install'; - - $this->description = 'Install ' . $package->name; - - $this->package = $package; - - parent::__construct(); - } - - public function handle() - { - if ($this->startWith) { - ($this->startWith)($this); - } - - foreach ($this->publishes as $tag) { - $name = str_replace('-', ' ', $tag); - $this->comment("Publishing {$name}..."); - - $this->callSilently("vendor:publish", [ - '--tag' => "{$this->package->shortName()}-{$tag}", - ]); - } - - if ($this->askToRunMigrations) { - if ($this->confirm('Would you like to run the migrations now?')) { - $this->comment('Running migrations...'); - - $this->call('migrate'); - } - } - - if ($this->copyServiceProviderInApp) { - $this->comment('Publishing service provider...'); - - $this->copyServiceProviderInApp(); - } - - if ($this->starRepo) { - if ($this->confirm('Would you like to star our repo on GitHub?')) { - $repoUrl = "https://github.com/{$this->starRepo}"; - - if (PHP_OS_FAMILY == 'Darwin') { - exec("open {$repoUrl}"); - } - if (PHP_OS_FAMILY == 'Windows') { - exec("start {$repoUrl}"); - } - if (PHP_OS_FAMILY == 'Linux') { - exec("xdg-open {$repoUrl}"); - } - } - } - - $this->info("{$this->package->shortName()} has been installed!"); - - if ($this->endWith) { - ($this->endWith)($this); - } - } - - public function publish(string ...$tag): self - { - $this->publishes = array_merge($this->publishes, $tag); - - return $this; - } - - public function publishConfigFile(): self - { - return $this->publish('config'); - } - - public function publishAssets(): self - { - return $this->publish('assets'); - } - - public function publishInertiaComponents(): self - { - return $this->publish('inertia-components'); - } - - public function publishMigrations(): self - { - return $this->publish('migrations'); - } - - public function askToRunMigrations(): self - { - $this->askToRunMigrations = true; - - return $this; - } - - public function copyAndRegisterServiceProviderInApp(): self - { - $this->copyServiceProviderInApp = true; - - return $this; - } - - public function askToStarRepoOnGitHub($vendorSlashRepoName): self - { - $this->starRepo = $vendorSlashRepoName; - - return $this; - } - - public function startWith($callable): self - { - $this->startWith = $callable; - - return $this; - } - - public function endWith($callable): self - { - $this->endWith = $callable; - - return $this; - } - - protected function copyServiceProviderInApp(): self - { - $providerName = $this->package->publishableProviderName; - - if (! $providerName) { - return $this; - } - - $this->callSilent('vendor:publish', ['--tag' => $this->package->shortName() . '-provider']); - - $namespace = Str::replaceLast('\\', '', $this->laravel->getNamespace()); - - $appConfig = file_get_contents(config_path('app.php')); - - $class = '\\Providers\\' . $providerName . '::class'; - - if (Str::contains($appConfig, $namespace . $class)) { - return $this; - } - - file_put_contents(config_path('app.php'), str_replace( - "{$namespace}\\Providers\\BroadcastServiceProvider::class,", - "{$namespace}\\Providers\\BroadcastServiceProvider::class," . PHP_EOL . " {$namespace}{$class},", - $appConfig - )); - - file_put_contents(app_path('Providers/' . $providerName . '.php'), str_replace( - "namespace App\Providers;", - "namespace {$namespace}\Providers;", - file_get_contents(app_path('Providers/' . $providerName . '.php')) - )); - - return $this; - } -} diff --git a/vendor/spatie/laravel-package-tools/src/Exceptions/InvalidPackage.php b/vendor/spatie/laravel-package-tools/src/Exceptions/InvalidPackage.php deleted file mode 100644 index 6e5d79d4..00000000 --- a/vendor/spatie/laravel-package-tools/src/Exceptions/InvalidPackage.php +++ /dev/null @@ -1,13 +0,0 @@ -name("yourName")`'); - } -} diff --git a/vendor/spatie/laravel-package-tools/src/Package.php b/vendor/spatie/laravel-package-tools/src/Package.php deleted file mode 100644 index 940c1440..00000000 --- a/vendor/spatie/laravel-package-tools/src/Package.php +++ /dev/null @@ -1,241 +0,0 @@ -name = $name; - - return $this; - } - - public function hasConfigFile($configFileName = null): static - { - $configFileName ??= $this->shortName(); - - if (! is_array($configFileName)) { - $configFileName = [$configFileName]; - } - - $this->configFileNames = $configFileName; - - return $this; - } - - public function publishesServiceProvider(string $providerName): static - { - $this->publishableProviderName = $providerName; - - return $this; - } - - public function hasInstallCommand($callable): static - { - $installCommand = new InstallCommand($this); - - $callable($installCommand); - - $this->consoleCommands[] = $installCommand; - - return $this; - } - - public function shortName(): string - { - return Str::after($this->name, 'laravel-'); - } - - public function hasViews(string $namespace = null): static - { - $this->hasViews = true; - - $this->viewNamespace = $namespace; - - return $this; - } - - public function hasInertiaComponents(string $namespace = null): static - { - $this->hasInertiaComponents = true; - - $this->viewNamespace = $namespace; - - return $this; - } - - public function hasViewComponent(string $prefix, string $viewComponentName): static - { - $this->viewComponents[$viewComponentName] = $prefix; - - return $this; - } - - public function hasViewComponents(string $prefix, ...$viewComponentNames): static - { - foreach ($viewComponentNames as $componentName) { - $this->viewComponents[$componentName] = $prefix; - } - - return $this; - } - - public function sharesDataWithAllViews(string $name, $value): static - { - $this->sharedViewData[$name] = $value; - - return $this; - } - - public function hasViewComposer($view, $viewComposer): static - { - if (! is_array($view)) { - $view = [$view]; - } - - foreach ($view as $viewName) { - $this->viewComposers[$viewName] = $viewComposer; - } - - return $this; - } - - public function hasTranslations(): static - { - $this->hasTranslations = true; - - return $this; - } - - public function hasAssets(): static - { - $this->hasAssets = true; - - return $this; - } - - public function runsMigrations(bool $runsMigrations = true): static - { - $this->runsMigrations = $runsMigrations; - - return $this; - } - - public function hasMigration(string $migrationFileName): static - { - $this->migrationFileNames[] = $migrationFileName; - - return $this; - } - - public function hasMigrations(...$migrationFileNames): static - { - $this->migrationFileNames = array_merge( - $this->migrationFileNames, - collect($migrationFileNames)->flatten()->toArray() - ); - - return $this; - } - - public function hasCommand(string $commandClassName): static - { - $this->commands[] = $commandClassName; - - return $this; - } - - public function hasCommands(...$commandClassNames): static - { - $this->commands = array_merge($this->commands, collect($commandClassNames)->flatten()->toArray()); - - return $this; - } - - public function hasConsoleCommand(string $commandClassName): static - { - $this->consoleCommands[] = $commandClassName; - - return $this; - } - - public function hasConsoleCommands(...$commandClassNames): static - { - $this->consoleCommands = array_merge($this->consoleCommands, collect($commandClassNames)->flatten()->toArray()); - - return $this; - } - - public function hasRoute(string $routeFileName): static - { - $this->routeFileNames[] = $routeFileName; - - return $this; - } - - public function hasRoutes(...$routeFileNames): static - { - $this->routeFileNames = array_merge($this->routeFileNames, collect($routeFileNames)->flatten()->toArray()); - - return $this; - } - - public function basePath(string $directory = null): string - { - if ($directory === null) { - return $this->basePath; - } - - return $this->basePath . DIRECTORY_SEPARATOR . ltrim($directory, DIRECTORY_SEPARATOR); - } - - public function viewNamespace(): string - { - return $this->viewNamespace ?? $this->shortName(); - } - - public function setBasePath(string $path): static - { - $this->basePath = $path; - - return $this; - } -} diff --git a/vendor/spatie/laravel-package-tools/src/PackageServiceProvider.php b/vendor/spatie/laravel-package-tools/src/PackageServiceProvider.php deleted file mode 100644 index 3d2cbb1b..00000000 --- a/vendor/spatie/laravel-package-tools/src/PackageServiceProvider.php +++ /dev/null @@ -1,215 +0,0 @@ -registeringPackage(); - - $this->package = $this->newPackage(); - - $this->package->setBasePath($this->getPackageBaseDir()); - - $this->configurePackage($this->package); - - if (empty($this->package->name)) { - throw InvalidPackage::nameIsRequired(); - } - - foreach ($this->package->configFileNames as $configFileName) { - $this->mergeConfigFrom($this->package->basePath("/../config/{$configFileName}.php"), $configFileName); - } - - $this->packageRegistered(); - - return $this; - } - - public function newPackage(): Package - { - return new Package(); - } - - public function boot() - { - $this->bootingPackage(); - - if ($this->package->hasTranslations) { - $langPath = 'vendor/' . $this->package->shortName(); - - $langPath = (function_exists('lang_path')) - ? lang_path($langPath) - : resource_path('lang/' . $langPath); - } - - if ($this->app->runningInConsole()) { - foreach ($this->package->configFileNames as $configFileName) { - $this->publishes([ - $this->package->basePath("/../config/{$configFileName}.php") => config_path("{$configFileName}.php"), - ], "{$this->package->shortName()}-config"); - } - - if ($this->package->hasViews) { - $this->publishes([ - $this->package->basePath('/../resources/views') => base_path("resources/views/vendor/{$this->packageView($this->package->viewNamespace)}"), - ], "{$this->packageView($this->package->viewNamespace)}-views"); - } - - if ($this->package->hasInertiaComponents) { - $packageDirectoryName = Str::of($this->packageView($this->package->viewNamespace))->studly()->remove('-')->value(); - - $this->publishes([ - $this->package->basePath('/../resources/js/Pages') => base_path("resources/js/Pages/{$packageDirectoryName}"), - ], "{$this->packageView($this->package->viewNamespace)}-inertia-components"); - } - - $now = Carbon::now(); - foreach ($this->package->migrationFileNames as $migrationFileName) { - $filePath = $this->package->basePath("/../database/migrations/{$migrationFileName}.php"); - if (! file_exists($filePath)) { - // Support for the .stub file extension - $filePath .= '.stub'; - } - - $this->publishes([ - $filePath => $this->generateMigrationName( - $migrationFileName, - $now->addSecond() - ), ], "{$this->package->shortName()}-migrations"); - - if ($this->package->runsMigrations) { - $this->loadMigrationsFrom($filePath); - } - } - - if ($this->package->hasTranslations) { - $this->publishes([ - $this->package->basePath('/../resources/lang') => $langPath, - ], "{$this->package->shortName()}-translations"); - } - - if ($this->package->hasAssets) { - $this->publishes([ - $this->package->basePath('/../resources/dist') => public_path("vendor/{$this->package->shortName()}"), - ], "{$this->package->shortName()}-assets"); - } - } - - if (! empty($this->package->commands)) { - $this->commands($this->package->commands); - } - - if (! empty($this->package->consoleCommands) && $this->app->runningInConsole()) { - $this->commands($this->package->consoleCommands); - } - - if ($this->package->hasTranslations) { - $this->loadTranslationsFrom( - $this->package->basePath('/../resources/lang/'), - $this->package->shortName() - ); - - $this->loadJsonTranslationsFrom($this->package->basePath('/../resources/lang/')); - - $this->loadJsonTranslationsFrom($langPath); - } - - if ($this->package->hasViews) { - $this->loadViewsFrom($this->package->basePath('/../resources/views'), $this->package->viewNamespace()); - } - - foreach ($this->package->viewComponents as $componentClass => $prefix) { - $this->loadViewComponentsAs($prefix, [$componentClass]); - } - - if (count($this->package->viewComponents)) { - $this->publishes([ - $this->package->basePath('/Components') => base_path("app/View/Components/vendor/{$this->package->shortName()}"), - ], "{$this->package->name}-components"); - } - - if ($this->package->publishableProviderName) { - $this->publishes([ - $this->package->basePath("/../resources/stubs/{$this->package->publishableProviderName}.php.stub") => base_path("app/Providers/{$this->package->publishableProviderName}.php"), - ], "{$this->package->shortName()}-provider"); - } - - - foreach ($this->package->routeFileNames as $routeFileName) { - $this->loadRoutesFrom("{$this->package->basePath('/../routes/')}{$routeFileName}.php"); - } - - foreach ($this->package->sharedViewData as $name => $value) { - View::share($name, $value); - } - - foreach ($this->package->viewComposers as $viewName => $viewComposer) { - View::composer($viewName, $viewComposer); - } - - $this->packageBooted(); - - return $this; - } - - public static function generateMigrationName(string $migrationFileName, Carbon $now): string - { - $migrationsPath = 'migrations/'; - - $len = strlen($migrationFileName) + 4; - - if (Str::contains($migrationFileName, '/')) { - $migrationsPath .= Str::of($migrationFileName)->beforeLast('/')->finish('/'); - $migrationFileName = Str::of($migrationFileName)->afterLast('/'); - } - - foreach (glob(database_path("{$migrationsPath}*.php")) as $filename) { - if ((substr($filename, -$len) === $migrationFileName . '.php')) { - return $filename; - } - } - - return database_path($migrationsPath . $now->format('Y_m_d_His') . '_' . Str::of($migrationFileName)->snake()->finish('.php')); - } - - public function registeringPackage() - { - } - - public function packageRegistered() - { - } - - public function bootingPackage() - { - } - - public function packageBooted() - { - } - - protected function getPackageBaseDir(): string - { - $reflector = new ReflectionClass(get_class($this)); - - return dirname($reflector->getFileName()); - } - - public function packageView(?string $namespace) - { - return is_null($namespace) ? $this->package->shortName() : $this->package->viewNamespace; - } -} diff --git a/vendor/spatie/laravel-permission/LICENSE.md b/vendor/spatie/laravel-permission/LICENSE.md deleted file mode 100644 index 59e5ec59..00000000 --- a/vendor/spatie/laravel-permission/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Spatie bvba - -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/vendor/spatie/laravel-permission/README.md b/vendor/spatie/laravel-permission/README.md deleted file mode 100644 index 25ff759b..00000000 --- a/vendor/spatie/laravel-permission/README.md +++ /dev/null @@ -1,101 +0,0 @@ -

    Social Card of Laravel Permission

    - -# Associate users with permissions and roles - -### Sponsor - - - - - - -
    If you want to quickly add authentication and authorization to Laravel projects, feel free to check Auth0's Laravel SDK and free plan at https://auth0.com/developers.
    - - -[![Latest Version on Packagist](https://img.shields.io/packagist/v/spatie/laravel-permission.svg?style=flat-square)](https://packagist.org/packages/spatie/laravel-permission) -[![GitHub Tests Action Status](https://img.shields.io/github/actions/workflow/status/spatie/laravel-permission/run-tests-L8.yml?branch=main&label=Tests)](https://github.com/spatie/laravel-permission/actions?query=workflow%3ATests+branch%3Amain) -[![Total Downloads](https://img.shields.io/packagist/dt/spatie/laravel-permission.svg?style=flat-square)](https://packagist.org/packages/spatie/laravel-permission) - -## Documentation, Installation, and Usage Instructions - -See the [documentation](https://spatie.be/docs/laravel-permission/) for detailed installation and usage instructions. - -## What It Does -This package allows you to manage user permissions and roles in a database. - -Once installed you can do stuff like this: - -```php -// Adding permissions to a user -$user->givePermissionTo('edit articles'); - -// Adding permissions via a role -$user->assignRole('writer'); - -$role->givePermissionTo('edit articles'); -``` - -Because all permissions will be registered on [Laravel's gate](https://laravel.com/docs/authorization), you can check if a user has a permission with Laravel's default `can` function: - -```php -$user->can('edit articles'); -``` - -## Support us - -[](https://spatie.be/github-ad-click/laravel-permission) - -We invest a lot of resources into creating [best in class open source packages](https://spatie.be/open-source). You can support us by [buying one of our paid products](https://spatie.be/open-source/support-us). - -We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on [our contact page](https://spatie.be/about-us). We publish all received postcards on [our virtual postcard wall](https://spatie.be/open-source/postcards). - -## Changelog - -Please see [CHANGELOG](CHANGELOG.md) for more information what has changed recently. - -## Contributing - -Please see [CONTRIBUTING](https://github.com/spatie/.github/blob/main/CONTRIBUTING.md) for details. - -### Testing - -``` bash -composer test -``` - -### Security - -If you discover any security-related issues, please email [security@spatie.be](mailto:security@spatie.be) instead of using the issue tracker. - -## Postcardware - -You're free to use this package, but if it makes it to your production environment we highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. - -Our address is: Spatie, Kruikstraat 22, 2018 Antwerp, Belgium. - -We publish all received postcards [on our company website](https://spatie.be/en/opensource/postcards). - -## Credits - -- [Chris Brown](https://github.com/drbyte) -- [Freek Van der Herten](https://github.com/freekmurze) -- [All Contributors](../../contributors) - -This package is heavily based on [Jeffrey Way](https://twitter.com/jeffrey_way)'s awesome [Laracasts](https://laracasts.com) lessons -on [permissions and roles](https://laracasts.com/series/whats-new-in-laravel-5-1/episodes/16). His original code -can be found [in this repo on GitHub](https://github.com/laracasts/laravel-5-roles-and-permissions-demo). - -Special thanks to [Alex Vanderbist](https://github.com/AlexVanderbist) who greatly helped with `v2`, and to [Chris Brown](https://github.com/drbyte) for his longtime support helping us maintain the package. - -And a special thanks to [Caneco](https://twitter.com/caneco) for the logo ✨ - -## Alternatives - -- [Povilas Korop](https://twitter.com/@povilaskorop) did an excellent job listing the alternatives [in an article on Laravel News](https://laravel-news.com/two-best-roles-permissions-packages). In that same article, he compares laravel-permission to [Joseph Silber](https://github.com/JosephSilber)'s [Bouncer]((https://github.com/JosephSilber/bouncer)), which in our book is also an excellent package. -- [santigarcor/laratrust](https://github.com/santigarcor/laratrust) implements team support -- [ultraware/roles](https://github.com/ultraware/roles) (archived) takes a slightly different approach to its features. -- [zizaco/entrust](https://github.com/zizaco/entrust) offers some wildcard pattern matching - -## License - -The MIT License (MIT). Please see [License File](LICENSE.md) for more information. diff --git a/vendor/spatie/laravel-permission/composer.json b/vendor/spatie/laravel-permission/composer.json deleted file mode 100644 index ab0515b8..00000000 --- a/vendor/spatie/laravel-permission/composer.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "spatie/laravel-permission", - "description": "Permission handling for Laravel 8.0 and up", - "license": "MIT", - "keywords": [ - "spatie", - "laravel", - "permission", - "permissions", - "roles", - "acl", - "rbac", - "security" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "homepage": "https://github.com/spatie/laravel-permission", - "require": { - "php": "^8.0", - "illuminate/auth": "^8.12|^9.0|^10.0|^11.0", - "illuminate/container": "^8.12|^9.0|^10.0|^11.0", - "illuminate/contracts": "^8.12|^9.0|^10.0|^11.0", - "illuminate/database": "^8.12|^9.0|^10.0|^11.0" - }, - "require-dev": { - "laravel/passport": "^11.0", - "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0", - "phpunit/phpunit": "^9.4|^10.1" - }, - "minimum-stability": "dev", - "prefer-stable": true, - "autoload": { - "psr-4": { - "Spatie\\Permission\\": "src" - }, - "files": [ - "src/helpers.php" - ] - }, - "autoload-dev": { - "psr-4": { - "Spatie\\Permission\\Tests\\": "tests" - } - }, - "config": { - "sort-packages": true - }, - "extra": { - "branch-alias": { - "dev-main": "6.x-dev", - "dev-master": "6.x-dev" - }, - "laravel": { - "providers": [ - "Spatie\\Permission\\PermissionServiceProvider" - ] - } - }, - "scripts": { - "test": "phpunit", - "format": "php-cs-fixer fix --allow-risky=yes", - "analyse": "phpstan analyse" - } -} diff --git a/vendor/spatie/laravel-permission/config/permission.php b/vendor/spatie/laravel-permission/config/permission.php deleted file mode 100644 index 2a520f35..00000000 --- a/vendor/spatie/laravel-permission/config/permission.php +++ /dev/null @@ -1,186 +0,0 @@ - [ - - /* - * 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, Laravel\Octane\Events\OperationTerminated event listener will be registered - * this will refresh permissions on every TickTerminated, TaskTerminated and RequestTerminated - * NOTE: This should not be needed in most cases, but an Octane/Vapor combination benefited from it. - */ - 'register_octane_reset_listener' => false, - - /* - * Teams Feature. - * 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 this package's migration file) - */ - - 'teams' => false, - - /* - * Passport Client Credentials Grant - * When set to true the package will use Passports Client to check permissions - */ - - 'use_passport_client_credentials' => false, - - /* - * When set to true, the required permission names are added to exception messages. - * 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 exception messages. - * 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. - * See documentation to understand supported syntax. - */ - - 'enable_wildcard_permission' => false, - - /* - * The class to use for interpreting wildcard permissions. - * If you need to modify delimiters, override the class and specify its name here. - */ - // 'permission.wildcard_permission' => Spatie\Permission\WildcardPermission::class, - - /* Cache-specific settings */ - - '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/vendor/spatie/laravel-permission/database/migrations/add_teams_fields.php.stub b/vendor/spatie/laravel-permission/database/migrations/add_teams_fields.php.stub deleted file mode 100644 index 01fcca69..00000000 --- a/vendor/spatie/laravel-permission/database/migrations/add_teams_fields.php.stub +++ /dev/null @@ -1,91 +0,0 @@ -unsignedBigInteger($columnNames['team_foreign_key'])->nullable()->after('id'); - $table->index($columnNames['team_foreign_key'], 'roles_team_foreign_key_index'); - - $table->dropUnique('roles_name_guard_name_unique'); - $table->unique([$columnNames['team_foreign_key'], 'name', 'guard_name']); - }); - } - - if (! Schema::hasColumn($tableNames['model_has_permissions'], $columnNames['team_foreign_key'])) { - Schema::table($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $columnNames, $pivotPermission) { - $table->unsignedBigInteger($columnNames['team_foreign_key'])->default('1'); - $table->index($columnNames['team_foreign_key'], 'model_has_permissions_team_foreign_key_index'); - - if (DB::getDriverName() !== 'sqlite') { - $table->dropForeign([$pivotPermission]); - } - $table->dropPrimary(); - - $table->primary([$columnNames['team_foreign_key'], $pivotPermission, $columnNames['model_morph_key'], 'model_type'], - 'model_has_permissions_permission_model_type_primary'); - if (DB::getDriverName() !== 'sqlite') { - $table->foreign($pivotPermission) - ->references('id')->on($tableNames['permissions'])->onDelete('cascade'); - } - }); - } - - if (! Schema::hasColumn($tableNames['model_has_roles'], $columnNames['team_foreign_key'])) { - Schema::table($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames, $pivotRole) { - $table->unsignedBigInteger($columnNames['team_foreign_key'])->default('1'); - $table->index($columnNames['team_foreign_key'], 'model_has_roles_team_foreign_key_index'); - - if (DB::getDriverName() !== 'sqlite') { - $table->dropForeign([$pivotRole]); - } - $table->dropPrimary(); - - $table->primary([$columnNames['team_foreign_key'], $pivotRole, $columnNames['model_morph_key'], 'model_type'], - 'model_has_roles_role_model_type_primary'); - if (DB::getDriverName() !== 'sqlite') { - $table->foreign($pivotRole) - ->references('id')->on($tableNames['roles'])->onDelete('cascade'); - } - }); - } - - app('cache') - ->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null) - ->forget(config('permission.cache.key')); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - - } -}; diff --git a/vendor/spatie/laravel-permission/database/migrations/create_permission_tables.php.stub b/vendor/spatie/laravel-permission/database/migrations/create_permission_tables.php.stub deleted file mode 100644 index b865d480..00000000 --- a/vendor/spatie/laravel-permission/database/migrations/create_permission_tables.php.stub +++ /dev/null @@ -1,138 +0,0 @@ -bigIncrements('id'); // permission id - $table->string('name'); // For MySQL 8.0 use string('name', 125); - $table->string('guard_name'); // For MySQL 8.0 use string('guard_name', 125); - $table->timestamps(); - - $table->unique(['name', 'guard_name']); - }); - - Schema::create($tableNames['roles'], function (Blueprint $table) use ($teams, $columnNames) { - $table->bigIncrements('id'); // role id - if ($teams || config('permission.testing')) { // permission.testing is a fix for sqlite testing - $table->unsignedBigInteger($columnNames['team_foreign_key'])->nullable(); - $table->index($columnNames['team_foreign_key'], 'roles_team_foreign_key_index'); - } - $table->string('name'); // For MySQL 8.0 use string('name', 125); - $table->string('guard_name'); // For MySQL 8.0 use string('guard_name', 125); - $table->timestamps(); - if ($teams || config('permission.testing')) { - $table->unique([$columnNames['team_foreign_key'], 'name', 'guard_name']); - } else { - $table->unique(['name', 'guard_name']); - } - }); - - Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $columnNames, $pivotPermission, $teams) { - $table->unsignedBigInteger($pivotPermission); - - $table->string('model_type'); - $table->unsignedBigInteger($columnNames['model_morph_key']); - $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_permissions_model_id_model_type_index'); - - $table->foreign($pivotPermission) - ->references('id') // permission id - ->on($tableNames['permissions']) - ->onDelete('cascade'); - if ($teams) { - $table->unsignedBigInteger($columnNames['team_foreign_key']); - $table->index($columnNames['team_foreign_key'], 'model_has_permissions_team_foreign_key_index'); - - $table->primary([$columnNames['team_foreign_key'], $pivotPermission, $columnNames['model_morph_key'], 'model_type'], - 'model_has_permissions_permission_model_type_primary'); - } else { - $table->primary([$pivotPermission, $columnNames['model_morph_key'], 'model_type'], - 'model_has_permissions_permission_model_type_primary'); - } - - }); - - Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames, $pivotRole, $teams) { - $table->unsignedBigInteger($pivotRole); - - $table->string('model_type'); - $table->unsignedBigInteger($columnNames['model_morph_key']); - $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_roles_model_id_model_type_index'); - - $table->foreign($pivotRole) - ->references('id') // role id - ->on($tableNames['roles']) - ->onDelete('cascade'); - if ($teams) { - $table->unsignedBigInteger($columnNames['team_foreign_key']); - $table->index($columnNames['team_foreign_key'], 'model_has_roles_team_foreign_key_index'); - - $table->primary([$columnNames['team_foreign_key'], $pivotRole, $columnNames['model_morph_key'], 'model_type'], - 'model_has_roles_role_model_type_primary'); - } else { - $table->primary([$pivotRole, $columnNames['model_morph_key'], 'model_type'], - 'model_has_roles_role_model_type_primary'); - } - }); - - Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames, $pivotRole, $pivotPermission) { - $table->unsignedBigInteger($pivotPermission); - $table->unsignedBigInteger($pivotRole); - - $table->foreign($pivotPermission) - ->references('id') // permission id - ->on($tableNames['permissions']) - ->onDelete('cascade'); - - $table->foreign($pivotRole) - ->references('id') // role id - ->on($tableNames['roles']) - ->onDelete('cascade'); - - $table->primary([$pivotPermission, $pivotRole], 'role_has_permissions_permission_id_role_id_primary'); - }); - - app('cache') - ->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null) - ->forget(config('permission.cache.key')); - } - - /** - * Reverse the migrations. - */ - public function down(): void - { - $tableNames = config('permission.table_names'); - - if (empty($tableNames)) { - throw new \Exception('Error: config/permission.php not found and defaults could not be merged. Please publish the package configuration before proceeding, or drop the tables manually.'); - } - - Schema::drop($tableNames['role_has_permissions']); - Schema::drop($tableNames['model_has_roles']); - Schema::drop($tableNames['model_has_permissions']); - Schema::drop($tableNames['roles']); - Schema::drop($tableNames['permissions']); - } -}; diff --git a/vendor/spatie/laravel-permission/ide.json b/vendor/spatie/laravel-permission/ide.json deleted file mode 100644 index 7afcd2a4..00000000 --- a/vendor/spatie/laravel-permission/ide.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "$schema": "https://laravel-ide.com/schema/laravel-ide-v2.json", - "blade": { - "directives": [ - { - "name": "role", - "prefix": "" - }, - { - "name": "elserole", - "prefix": "" - }, - { - "name": "endrole", - "prefix": "", - "suffix": "" - }, - { - "name": "hasrole", - "prefix": "" - }, - { - "name": "endhasrole", - "prefix": "", - "suffix": "" - }, - { - "name": "hasanyrole", - "prefix": "" - }, - { - "name": "endhasanyrole", - "prefix": "", - "suffix": "" - }, - { - "name": "hasallroles", - "prefix": "" - }, - { - "name": "endhasallroles", - "prefix": "", - "suffix": "" - }, - { - "name": "unlessrole", - "prefix": "" - }, - { - "name": "endunlessrole", - "prefix": "", - "suffix": "" - }, - { - "name": "hasexactroles", - "prefix": "" - }, - { - "name": "endhasexactroles", - "prefix": "", - "suffix": "" - } - ] - } -} diff --git a/vendor/spatie/laravel-permission/src/Commands/CacheReset.php b/vendor/spatie/laravel-permission/src/Commands/CacheReset.php deleted file mode 100644 index 180d1697..00000000 --- a/vendor/spatie/laravel-permission/src/Commands/CacheReset.php +++ /dev/null @@ -1,22 +0,0 @@ -forgetCachedPermissions()) { - $this->info('Permission cache flushed.'); - } else { - $this->error('Unable to flush cache.'); - } - } -} diff --git a/vendor/spatie/laravel-permission/src/Commands/CreatePermission.php b/vendor/spatie/laravel-permission/src/Commands/CreatePermission.php deleted file mode 100644 index c3bc2069..00000000 --- a/vendor/spatie/laravel-permission/src/Commands/CreatePermission.php +++ /dev/null @@ -1,24 +0,0 @@ -argument('name'), $this->argument('guard')); - - $this->info("Permission `{$permission->name}` ".($permission->wasRecentlyCreated ? 'created' : 'already exists')); - } -} diff --git a/vendor/spatie/laravel-permission/src/Commands/CreateRole.php b/vendor/spatie/laravel-permission/src/Commands/CreateRole.php deleted file mode 100644 index 7cb92aa3..00000000 --- a/vendor/spatie/laravel-permission/src/Commands/CreateRole.php +++ /dev/null @@ -1,67 +0,0 @@ -option('team-id') ?: null); - - if (! $permissionRegistrar->teams && $this->option('team-id')) { - $this->warn('Teams feature disabled, argument --team-id has no effect. Either enable it in permissions config file or remove --team-id parameter'); - - return; - } - - $role = $roleClass::findOrCreate($this->argument('name'), $this->argument('guard')); - setPermissionsTeamId($teamIdAux); - - $teams_key = $permissionRegistrar->teamsKey; - if ($permissionRegistrar->teams && $this->option('team-id') && is_null($role->$teams_key)) { - $this->warn("Role `{$role->name}` already exists on the global team; argument --team-id has no effect"); - } - - $role->givePermissionTo($this->makePermissions($this->argument('permissions'))); - - $this->info("Role `{$role->name}` ".($role->wasRecentlyCreated ? 'created' : 'updated')); - } - - /** - * @param array|null|string $string - */ - protected function makePermissions($string = null) - { - if (empty($string)) { - return; - } - - $permissionClass = app(PermissionContract::class); - - $permissions = explode('|', $string); - - $models = []; - - foreach ($permissions as $permission) { - $models[] = $permissionClass::findOrCreate(trim($permission), $this->argument('guard')); - } - - return collect($models); - } -} diff --git a/vendor/spatie/laravel-permission/src/Commands/Show.php b/vendor/spatie/laravel-permission/src/Commands/Show.php deleted file mode 100644 index e20a371e..00000000 --- a/vendor/spatie/laravel-permission/src/Commands/Show.php +++ /dev/null @@ -1,77 +0,0 @@ -argument('style') ?? 'default'; - $guard = $this->argument('guard'); - - if ($guard) { - $guards = Collection::make([$guard]); - } else { - $guards = $permissionClass::pluck('guard_name')->merge($roleClass::pluck('guard_name'))->unique(); - } - - foreach ($guards as $guard) { - $this->info("Guard: $guard"); - - $roles = $roleClass::whereGuardName($guard) - ->with('permissions') - ->when($teamsEnabled, fn ($q) => $q->orderBy($team_key)) - ->orderBy('name')->get()->mapWithKeys(fn ($role) => [ - $role->name.'_'.($teamsEnabled ? ($role->$team_key ?: '') : '') => [ - 'permissions' => $role->permissions->pluck('id'), - $team_key => $teamsEnabled ? $role->$team_key : null, - ], - ]); - - $permissions = $permissionClass::whereGuardName($guard)->orderBy('name')->pluck('name', 'id'); - - $body = $permissions->map(fn ($permission, $id) => $roles->map( - fn (array $role_data) => $role_data['permissions']->contains($id) ? ' ✔' : ' ·' - )->prepend($permission) - ); - - if ($teamsEnabled) { - $teams = $roles->groupBy($team_key)->values()->map( - fn ($group, $id) => new TableCell('Team ID: '.($id ?: 'NULL'), ['colspan' => $group->count()]) - ); - } - - $this->table( - array_merge( - isset($teams) ? $teams->prepend(new TableCell(''))->toArray() : [], - $roles->keys()->map(function ($val) { - $name = explode('_', $val); - array_pop($name); - - return implode('_', $name); - }) - ->prepend(new TableCell(''))->toArray(), - ), - $body->toArray(), - $style - ); - } - } -} diff --git a/vendor/spatie/laravel-permission/src/Commands/UpgradeForTeams.php b/vendor/spatie/laravel-permission/src/Commands/UpgradeForTeams.php deleted file mode 100644 index 8d7f9004..00000000 --- a/vendor/spatie/laravel-permission/src/Commands/UpgradeForTeams.php +++ /dev/null @@ -1,122 +0,0 @@ -error('Teams feature is disabled in your permission.php file.'); - $this->warn('Please enable the teams setting in your configuration.'); - - return; - } - - $this->line(''); - $this->info('The teams feature setup is going to add a migration and a model'); - - $existingMigrations = $this->alreadyExistingMigrations(); - - if ($existingMigrations) { - $this->line(''); - - $this->warn($this->getExistingMigrationsWarning($existingMigrations)); - } - - $this->line(''); - - if (! $this->confirm('Proceed with the migration creation?', true)) { - return; - } - - $this->line(''); - - $this->line('Creating migration'); - - if ($this->createMigration()) { - $this->info('Migration created successfully.'); - } else { - $this->error( - "Couldn't create migration.\n". - 'Check the write permissions within the database/migrations directory.' - ); - } - - $this->line(''); - } - - /** - * Create the migration. - * - * @return bool - */ - protected function createMigration() - { - try { - $migrationStub = __DIR__."/../../database/migrations/{$this->migrationSuffix}.stub"; - copy($migrationStub, $this->getMigrationPath()); - - return true; - } catch (\Throwable $e) { - $this->error($e->getMessage()); - - return false; - } - } - - /** - * Build a warning regarding possible duplication - * due to already existing migrations. - * - * @return string - */ - protected function getExistingMigrationsWarning(array $existingMigrations) - { - if (count($existingMigrations) > 1) { - $base = "Setup teams migrations already exist.\nFollowing files were found: "; - } else { - $base = "Setup teams migration already exists.\nFollowing file was found: "; - } - - return $base.array_reduce($existingMigrations, fn ($carry, $fileName) => $carry."\n - ".$fileName); - } - - /** - * Check if there is another migration - * with the same suffix. - * - * @return array - */ - protected function alreadyExistingMigrations() - { - $matchingFiles = glob($this->getMigrationPath('*')); - - return array_map(fn ($path) => basename($path), $matchingFiles); - } - - /** - * Get the migration path. - * - * The date parameter is optional for ability - * to provide a custom value or a wildcard. - * - * @param string|null $date - * @return string - */ - protected function getMigrationPath($date = null) - { - $date = $date ?: date('Y_m_d_His'); - - return database_path("migrations/{$date}_{$this->migrationSuffix}"); - } -} diff --git a/vendor/spatie/laravel-permission/src/Contracts/Permission.php b/vendor/spatie/laravel-permission/src/Contracts/Permission.php deleted file mode 100644 index 111d2ed2..00000000 --- a/vendor/spatie/laravel-permission/src/Contracts/Permission.php +++ /dev/null @@ -1,41 +0,0 @@ -implode(', ')}` instead of `{$givenGuard}`."); - } -} diff --git a/vendor/spatie/laravel-permission/src/Exceptions/PermissionAlreadyExists.php b/vendor/spatie/laravel-permission/src/Exceptions/PermissionAlreadyExists.php deleted file mode 100644 index 2748c9d1..00000000 --- a/vendor/spatie/laravel-permission/src/Exceptions/PermissionAlreadyExists.php +++ /dev/null @@ -1,13 +0,0 @@ -requiredRoles = $roles; - - return $exception; - } - - public static function forPermissions(array $permissions): self - { - $message = 'User does not have the right permissions.'; - - if (config('permission.display_permission_in_exception')) { - $message .= ' Necessary permissions are '.implode(', ', $permissions); - } - - $exception = new static(403, $message, null, []); - $exception->requiredPermissions = $permissions; - - return $exception; - } - - public static function forRolesOrPermissions(array $rolesOrPermissions): self - { - $message = 'User does not have any of the necessary access rights.'; - - if (config('permission.display_permission_in_exception') && config('permission.display_role_in_exception')) { - $message .= ' Necessary roles or permissions are '.implode(', ', $rolesOrPermissions); - } - - $exception = new static(403, $message, null, []); - $exception->requiredPermissions = $rolesOrPermissions; - - return $exception; - } - - public static function missingTraitHasRoles(Authorizable $user): self - { - $class = get_class($user); - - return new static(403, "Authorizable class `{$class}` must use Spatie\Permission\Traits\HasRoles trait.", null, []); - } - - public static function notLoggedIn(): self - { - return new static(403, 'User is not logged in.', null, []); - } - - public function getRequiredRoles(): array - { - return $this->requiredRoles; - } - - public function getRequiredPermissions(): array - { - return $this->requiredPermissions; - } -} diff --git a/vendor/spatie/laravel-permission/src/Exceptions/WildcardPermissionInvalidArgument.php b/vendor/spatie/laravel-permission/src/Exceptions/WildcardPermissionInvalidArgument.php deleted file mode 100644 index 44f09240..00000000 --- a/vendor/spatie/laravel-permission/src/Exceptions/WildcardPermissionInvalidArgument.php +++ /dev/null @@ -1,13 +0,0 @@ -guardName(); - } else { - $guardName = $model->getAttributeValue('guard_name'); - } - } - - if (! isset($guardName)) { - $guardName = (new \ReflectionClass($class))->getDefaultProperties()['guard_name'] ?? null; - } - - if ($guardName) { - return collect($guardName); - } - - return self::getConfigAuthGuards($class); - } - - /** - * Get list of relevant guards for the $class model based on config(auth) settings. - * - * Lookup flow: - * - get names of models for guards defined in auth.guards where a provider is set - * - filter for provider models matching the model $class being checked (important for Lumen) - * - keys() gives just the names of the matched guards - * - return collection of guard names - */ - protected static function getConfigAuthGuards(string $class): Collection - { - return collect(config('auth.guards')) - ->map(fn ($guard) => isset($guard['provider']) ? config("auth.providers.{$guard['provider']}.model") : null) - ->filter(fn ($model) => $class === $model) - ->keys(); - } - - /** - * Lookup a guard name relevant for the $class model and the current user. - * - * @param string|Model $class model class object or name - * @return string guard name - */ - public static function getDefaultName($class): string - { - $default = config('auth.defaults.guard'); - - $possible_guards = static::getNames($class); - - // return current-detected auth.defaults.guard if it matches one of those that have been checked - if ($possible_guards->contains($default)) { - return $default; - } - - return $possible_guards->first() ?: $default; - } - - /** - * Lookup a passport guard - */ - public static function getPassportClient($guard): ?Authorizable - { - $guards = collect(config('auth.guards'))->where('driver', 'passport'); - - if (! $guards->count()) { - return null; - } - - $authGuard = Auth::guard($guards->keys()[0]); - - if (! \method_exists($authGuard, 'client')) { - return null; - } - - $client = $authGuard->client(); - - if (! $guard || ! $client) { - return $client; - } - - if (self::getNames($client)->contains($guard)) { - return $client; - } - - return null; - } -} diff --git a/vendor/spatie/laravel-permission/src/Middleware/PermissionMiddleware.php b/vendor/spatie/laravel-permission/src/Middleware/PermissionMiddleware.php deleted file mode 100644 index 3e78f1d6..00000000 --- a/vendor/spatie/laravel-permission/src/Middleware/PermissionMiddleware.php +++ /dev/null @@ -1,56 +0,0 @@ -user(); - - // For machine-to-machine Passport clients - if (! $user && $request->bearerToken() && config('permission.use_passport_client_credentials')) { - $user = Guard::getPassportClient($guard); - } - - if (! $user) { - throw UnauthorizedException::notLoggedIn(); - } - - if (! method_exists($user, 'hasAnyPermission')) { - throw UnauthorizedException::missingTraitHasRoles($user); - } - - $permissions = is_array($permission) - ? $permission - : explode('|', $permission); - - if (! $user->canAny($permissions)) { - throw UnauthorizedException::forPermissions($permissions); - } - - return $next($request); - } - - /** - * Specify the permission and guard for the middleware. - * - * @param array|string $permission - * @param string|null $guard - * @return string - */ - public static function using($permission, $guard = null) - { - $permissionString = is_string($permission) ? $permission : implode('|', $permission); - $args = is_null($guard) ? $permissionString : "$permissionString,$guard"; - - return static::class.':'.$args; - } -} diff --git a/vendor/spatie/laravel-permission/src/Middleware/RoleMiddleware.php b/vendor/spatie/laravel-permission/src/Middleware/RoleMiddleware.php deleted file mode 100644 index 010363f6..00000000 --- a/vendor/spatie/laravel-permission/src/Middleware/RoleMiddleware.php +++ /dev/null @@ -1,56 +0,0 @@ -user(); - - // For machine-to-machine Passport clients - if (! $user && $request->bearerToken() && config('permission.use_passport_client_credentials')) { - $user = Guard::getPassportClient($guard); - } - - if (! $user) { - throw UnauthorizedException::notLoggedIn(); - } - - if (! method_exists($user, 'hasAnyRole')) { - throw UnauthorizedException::missingTraitHasRoles($user); - } - - $roles = is_array($role) - ? $role - : explode('|', $role); - - if (! $user->hasAnyRole($roles)) { - throw UnauthorizedException::forRoles($roles); - } - - return $next($request); - } - - /** - * Specify the role and guard for the middleware. - * - * @param array|string $role - * @param string|null $guard - * @return string - */ - public static function using($role, $guard = null) - { - $roleString = is_string($role) ? $role : implode('|', $role); - $args = is_null($guard) ? $roleString : "$roleString,$guard"; - - return static::class.':'.$args; - } -} diff --git a/vendor/spatie/laravel-permission/src/Middleware/RoleOrPermissionMiddleware.php b/vendor/spatie/laravel-permission/src/Middleware/RoleOrPermissionMiddleware.php deleted file mode 100644 index 6e9fa691..00000000 --- a/vendor/spatie/laravel-permission/src/Middleware/RoleOrPermissionMiddleware.php +++ /dev/null @@ -1,56 +0,0 @@ -user(); - - // For machine-to-machine Passport clients - if (! $user && $request->bearerToken() && config('permission.use_passport_client_credentials')) { - $user = Guard::getPassportClient($guard); - } - - if (! $user) { - throw UnauthorizedException::notLoggedIn(); - } - - if (! method_exists($user, 'hasAnyRole') || ! method_exists($user, 'hasAnyPermission')) { - throw UnauthorizedException::missingTraitHasRoles($user); - } - - $rolesOrPermissions = is_array($roleOrPermission) - ? $roleOrPermission - : explode('|', $roleOrPermission); - - if (! $user->canAny($rolesOrPermissions) && ! $user->hasAnyRole($rolesOrPermissions)) { - throw UnauthorizedException::forRolesOrPermissions($rolesOrPermissions); - } - - return $next($request); - } - - /** - * Specify the role or permission and guard for the middleware. - * - * @param array|string $roleOrPermission - * @param string|null $guard - * @return string - */ - public static function using($roleOrPermission, $guard = null) - { - $roleOrPermissionString = is_string($roleOrPermission) ? $roleOrPermission : implode('|', $roleOrPermission); - $args = is_null($guard) ? $roleOrPermissionString : "$roleOrPermissionString,$guard"; - - return static::class.':'.$args; - } -} diff --git a/vendor/spatie/laravel-permission/src/Models/Permission.php b/vendor/spatie/laravel-permission/src/Models/Permission.php deleted file mode 100644 index d23d15ac..00000000 --- a/vendor/spatie/laravel-permission/src/Models/Permission.php +++ /dev/null @@ -1,156 +0,0 @@ -guarded[] = $this->primaryKey; - $this->table = config('permission.table_names.permissions') ?: parent::getTable(); - } - - /** - * @return PermissionContract|Permission - * - * @throws PermissionAlreadyExists - */ - public static function create(array $attributes = []) - { - $attributes['guard_name'] = $attributes['guard_name'] ?? Guard::getDefaultName(static::class); - - $permission = static::getPermission(['name' => $attributes['name'], 'guard_name' => $attributes['guard_name']]); - - if ($permission) { - throw PermissionAlreadyExists::create($attributes['name'], $attributes['guard_name']); - } - - return static::query()->create($attributes); - } - - /** - * A permission can be applied to roles. - */ - public function roles(): BelongsToMany - { - return $this->belongsToMany( - config('permission.models.role'), - config('permission.table_names.role_has_permissions'), - app(PermissionRegistrar::class)->pivotPermission, - app(PermissionRegistrar::class)->pivotRole - ); - } - - /** - * A permission belongs to some users of the model associated with its guard. - */ - public function users(): BelongsToMany - { - return $this->morphedByMany( - getModelForGuard($this->attributes['guard_name'] ?? config('auth.defaults.guard')), - 'model', - config('permission.table_names.model_has_permissions'), - app(PermissionRegistrar::class)->pivotPermission, - config('permission.column_names.model_morph_key') - ); - } - - /** - * Find a permission by its name (and optionally guardName). - * - * @return PermissionContract|Permission - * - * @throws PermissionDoesNotExist - */ - public static function findByName(string $name, ?string $guardName = null): PermissionContract - { - $guardName = $guardName ?? Guard::getDefaultName(static::class); - $permission = static::getPermission(['name' => $name, 'guard_name' => $guardName]); - if (! $permission) { - throw PermissionDoesNotExist::create($name, $guardName); - } - - return $permission; - } - - /** - * Find a permission by its id (and optionally guardName). - * - * @return PermissionContract|Permission - * - * @throws PermissionDoesNotExist - */ - public static function findById(int|string $id, ?string $guardName = null): PermissionContract - { - $guardName = $guardName ?? Guard::getDefaultName(static::class); - $permission = static::getPermission([(new static())->getKeyName() => $id, 'guard_name' => $guardName]); - - if (! $permission) { - throw PermissionDoesNotExist::withId($id, $guardName); - } - - return $permission; - } - - /** - * Find or create permission by its name (and optionally guardName). - * - * @return PermissionContract|Permission - */ - public static function findOrCreate(string $name, ?string $guardName = null): PermissionContract - { - $guardName = $guardName ?? Guard::getDefaultName(static::class); - $permission = static::getPermission(['name' => $name, 'guard_name' => $guardName]); - - if (! $permission) { - return static::query()->create(['name' => $name, 'guard_name' => $guardName]); - } - - return $permission; - } - - /** - * Get the current cached permissions. - */ - protected static function getPermissions(array $params = [], bool $onlyOne = false): Collection - { - return app(PermissionRegistrar::class) - ->setPermissionClass(static::class) - ->getPermissions($params, $onlyOne); - } - - /** - * Get the current cached first permission. - * - * @return PermissionContract|Permission|null - */ - protected static function getPermission(array $params = []): ?PermissionContract - { - /** @var PermissionContract|null */ - return static::getPermissions($params, true)->first(); - } -} diff --git a/vendor/spatie/laravel-permission/src/Models/Role.php b/vendor/spatie/laravel-permission/src/Models/Role.php deleted file mode 100644 index 4b2e48ff..00000000 --- a/vendor/spatie/laravel-permission/src/Models/Role.php +++ /dev/null @@ -1,193 +0,0 @@ -guarded[] = $this->primaryKey; - $this->table = config('permission.table_names.roles') ?: parent::getTable(); - } - - /** - * @return RoleContract|Role - * - * @throws RoleAlreadyExists - */ - public static function create(array $attributes = []) - { - $attributes['guard_name'] = $attributes['guard_name'] ?? Guard::getDefaultName(static::class); - - $params = ['name' => $attributes['name'], 'guard_name' => $attributes['guard_name']]; - if (app(PermissionRegistrar::class)->teams) { - $teamsKey = app(PermissionRegistrar::class)->teamsKey; - - if (array_key_exists($teamsKey, $attributes)) { - $params[$teamsKey] = $attributes[$teamsKey]; - } else { - $attributes[$teamsKey] = getPermissionsTeamId(); - } - } - if (static::findByParam($params)) { - throw RoleAlreadyExists::create($attributes['name'], $attributes['guard_name']); - } - - return static::query()->create($attributes); - } - - /** - * A role may be given various permissions. - */ - public function permissions(): BelongsToMany - { - return $this->belongsToMany( - config('permission.models.permission'), - config('permission.table_names.role_has_permissions'), - app(PermissionRegistrar::class)->pivotRole, - app(PermissionRegistrar::class)->pivotPermission - ); - } - - /** - * A role belongs to some users of the model associated with its guard. - */ - public function users(): BelongsToMany - { - return $this->morphedByMany( - getModelForGuard($this->attributes['guard_name'] ?? config('auth.defaults.guard')), - 'model', - config('permission.table_names.model_has_roles'), - app(PermissionRegistrar::class)->pivotRole, - config('permission.column_names.model_morph_key') - ); - } - - /** - * Find a role by its name and guard name. - * - * @return RoleContract|Role - * - * @throws RoleDoesNotExist - */ - public static function findByName(string $name, ?string $guardName = null): RoleContract - { - $guardName = $guardName ?? Guard::getDefaultName(static::class); - - $role = static::findByParam(['name' => $name, 'guard_name' => $guardName]); - - if (! $role) { - throw RoleDoesNotExist::named($name, $guardName); - } - - return $role; - } - - /** - * Find a role by its id (and optionally guardName). - * - * @return RoleContract|Role - */ - public static function findById(int|string $id, ?string $guardName = null): RoleContract - { - $guardName = $guardName ?? Guard::getDefaultName(static::class); - - $role = static::findByParam([(new static())->getKeyName() => $id, 'guard_name' => $guardName]); - - if (! $role) { - throw RoleDoesNotExist::withId($id, $guardName); - } - - return $role; - } - - /** - * Find or create role by its name (and optionally guardName). - * - * @return RoleContract|Role - */ - public static function findOrCreate(string $name, ?string $guardName = null): RoleContract - { - $guardName = $guardName ?? Guard::getDefaultName(static::class); - - $role = static::findByParam(['name' => $name, 'guard_name' => $guardName]); - - if (! $role) { - return static::query()->create(['name' => $name, 'guard_name' => $guardName] + (app(PermissionRegistrar::class)->teams ? [app(PermissionRegistrar::class)->teamsKey => getPermissionsTeamId()] : [])); - } - - return $role; - } - - /** - * Finds a role based on an array of parameters. - * - * @return RoleContract|Role|null - */ - protected static function findByParam(array $params = []): ?RoleContract - { - $query = static::query(); - - if (app(PermissionRegistrar::class)->teams) { - $teamsKey = app(PermissionRegistrar::class)->teamsKey; - - $query->where(fn ($q) => $q->whereNull($teamsKey) - ->orWhere($teamsKey, $params[$teamsKey] ?? getPermissionsTeamId()) - ); - unset($params[$teamsKey]); - } - - foreach ($params as $key => $value) { - $query->where($key, $value); - } - - return $query->first(); - } - - /** - * Determine if the role may perform the given permission. - * - * @param string|int|Permission|\BackedEnum $permission - * - * @throws PermissionDoesNotExist|GuardDoesNotMatch - */ - public function hasPermissionTo($permission, ?string $guardName = null): bool - { - if ($this->getWildcardClass()) { - return $this->hasWildcardPermission($permission, $guardName); - } - - $permission = $this->filterPermission($permission, $guardName); - - if (! $this->getGuardNames()->contains($permission->guard_name)) { - throw GuardDoesNotMatch::create($permission->guard_name, $guardName ?? $this->getGuardNames()); - } - - return $this->permissions->contains($permission->getKeyName(), $permission->getKey()); - } -} diff --git a/vendor/spatie/laravel-permission/src/PermissionRegistrar.php b/vendor/spatie/laravel-permission/src/PermissionRegistrar.php deleted file mode 100644 index 56c7415a..00000000 --- a/vendor/spatie/laravel-permission/src/PermissionRegistrar.php +++ /dev/null @@ -1,411 +0,0 @@ -permissionClass = config('permission.models.permission'); - $this->roleClass = config('permission.models.role'); - - $this->cacheManager = $cacheManager; - $this->initializeCache(); - } - - public function initializeCache(): void - { - $this->cacheExpirationTime = config('permission.cache.expiration_time') ?: \DateInterval::createFromDateString('24 hours'); - - $this->teams = config('permission.teams', false); - $this->teamsKey = config('permission.column_names.team_foreign_key', 'team_id'); - - $this->cacheKey = config('permission.cache.key'); - - $this->pivotRole = config('permission.column_names.role_pivot_key') ?: 'role_id'; - $this->pivotPermission = config('permission.column_names.permission_pivot_key') ?: 'permission_id'; - - $this->cache = $this->getCacheStoreFromConfig(); - } - - protected function getCacheStoreFromConfig(): Repository - { - // the 'default' fallback here is from the permission.php config file, - // where 'default' means to use config(cache.default) - $cacheDriver = config('permission.cache.store', 'default'); - - // when 'default' is specified, no action is required since we already have the default instance - if ($cacheDriver === 'default') { - return $this->cacheManager->store(); - } - - // if an undefined cache store is specified, fallback to 'array' which is Laravel's closest equiv to 'none' - if (! \array_key_exists($cacheDriver, config('cache.stores'))) { - $cacheDriver = 'array'; - } - - return $this->cacheManager->store($cacheDriver); - } - - /** - * Set the team id for teams/groups support, this id is used when querying permissions/roles - * - * @param int|string|\Illuminate\Database\Eloquent\Model|null $id - */ - public function setPermissionsTeamId($id): void - { - if ($id instanceof \Illuminate\Database\Eloquent\Model) { - $id = $id->getKey(); - } - $this->teamId = $id; - } - - /** - * @return int|string - */ - public function getPermissionsTeamId() - { - return $this->teamId; - } - - /** - * Register the permission check method on the gate. - * We resolve the Gate fresh here, for benefit of long-running instances. - */ - public function registerPermissions(Gate $gate): bool - { - $gate->before(function (Authorizable $user, string $ability, array &$args = []) { - if (is_string($args[0] ?? null) && ! class_exists($args[0])) { - $guard = array_shift($args); - } - if (method_exists($user, 'checkPermissionTo')) { - return $user->checkPermissionTo($ability, $guard ?? null) ?: null; - } - }); - - return true; - } - - /** - * Flush the cache. - */ - public function forgetCachedPermissions() - { - $this->permissions = null; - $this->forgetWildcardPermissionIndex(); - - return $this->cache->forget($this->cacheKey); - } - - public function forgetWildcardPermissionIndex(?Model $record = null): void - { - if ($record) { - unset($this->wildcardPermissionsIndex[get_class($record)][$record->getKey()]); - - return; - } - - $this->wildcardPermissionsIndex = []; - } - - public function getWildcardPermissionIndex(Model $record): array - { - if (isset($this->wildcardPermissionsIndex[get_class($record)][$record->getKey()])) { - return $this->wildcardPermissionsIndex[get_class($record)][$record->getKey()]; - } - - return $this->wildcardPermissionsIndex[get_class($record)][$record->getKey()] = app($record->getWildcardClass(), ['record' => $record])->getIndex(); - } - - /** - * Clear already-loaded permissions collection. - * This is only intended to be called by the PermissionServiceProvider on boot, - * so that long-running instances like Octane or Swoole don't keep old data in memory. - */ - public function clearPermissionsCollection(): void - { - $this->permissions = null; - $this->wildcardPermissionsIndex = []; - } - - /** - * @deprecated - * - * @alias of clearPermissionsCollection() - */ - public function clearClassPermissions() - { - $this->clearPermissionsCollection(); - } - - /** - * Load permissions from cache - * And turns permissions array into a \Illuminate\Database\Eloquent\Collection - */ - private function loadPermissions(): void - { - if ($this->permissions) { - return; - } - - $this->permissions = $this->cache->remember( - $this->cacheKey, $this->cacheExpirationTime, fn () => $this->getSerializedPermissionsForCache() - ); - - // fallback for old cache method, must be removed on next mayor version - if (! isset($this->permissions['alias'])) { - $this->forgetCachedPermissions(); - $this->loadPermissions(); - - return; - } - - $this->alias = $this->permissions['alias']; - - $this->hydrateRolesCache(); - - $this->permissions = $this->getHydratedPermissionCollection(); - - $this->cachedRoles = $this->alias = $this->except = []; - } - - /** - * Get the permissions based on the passed params. - */ - public function getPermissions(array $params = [], bool $onlyOne = false): Collection - { - $this->loadPermissions(); - - $method = $onlyOne ? 'first' : 'filter'; - - $permissions = $this->permissions->$method(static function ($permission) use ($params) { - foreach ($params as $attr => $value) { - if ($permission->getAttribute($attr) != $value) { - return false; - } - } - - return true; - }); - - if ($onlyOne) { - $permissions = new Collection($permissions ? [$permissions] : []); - } - - return $permissions; - } - - public function getPermissionClass(): string - { - return $this->permissionClass; - } - - public function setPermissionClass($permissionClass) - { - $this->permissionClass = $permissionClass; - config()->set('permission.models.permission', $permissionClass); - app()->bind(Permission::class, $permissionClass); - - return $this; - } - - public function getRoleClass(): string - { - return $this->roleClass; - } - - public function setRoleClass($roleClass) - { - $this->roleClass = $roleClass; - config()->set('permission.models.role', $roleClass); - app()->bind(Role::class, $roleClass); - - return $this; - } - - public function getCacheRepository(): Repository - { - return $this->cache; - } - - public function getCacheStore(): Store - { - return $this->cache->getStore(); - } - - protected function getPermissionsWithRoles(): Collection - { - return $this->permissionClass::select()->with('roles')->get(); - } - - /** - * Changes array keys with alias - */ - private function aliasedArray($model): array - { - return collect(is_array($model) ? $model : $model->getAttributes())->except($this->except) - ->keyBy(fn ($value, $key) => $this->alias[$key] ?? $key) - ->all(); - } - - /** - * Array for cache alias - */ - private function aliasModelFields($newKeys = []): void - { - $i = 0; - $alphas = ! count($this->alias) ? range('a', 'h') : range('j', 'p'); - - foreach (array_keys($newKeys->getAttributes()) as $value) { - if (! isset($this->alias[$value])) { - $this->alias[$value] = $alphas[$i++] ?? $value; - } - } - - $this->alias = array_diff_key($this->alias, array_flip($this->except)); - } - - /* - * Make the cache smaller using an array with only required fields - */ - private function getSerializedPermissionsForCache(): array - { - $this->except = config('permission.cache.column_names_except', ['created_at', 'updated_at', 'deleted_at']); - - $permissions = $this->getPermissionsWithRoles() - ->map(function ($permission) { - if (! $this->alias) { - $this->aliasModelFields($permission); - } - - return $this->aliasedArray($permission) + $this->getSerializedRoleRelation($permission); - })->all(); - $roles = array_values($this->cachedRoles); - $this->cachedRoles = []; - - return ['alias' => array_flip($this->alias)] + compact('permissions', 'roles'); - } - - private function getSerializedRoleRelation($permission): array - { - if (! $permission->roles->count()) { - return []; - } - - if (! isset($this->alias['roles'])) { - $this->alias['roles'] = 'r'; - $this->aliasModelFields($permission->roles[0]); - } - - return [ - 'r' => $permission->roles->map(function ($role) { - if (! isset($this->cachedRoles[$role->getKey()])) { - $this->cachedRoles[$role->getKey()] = $this->aliasedArray($role); - } - - return $role->getKey(); - })->all(), - ]; - } - - private function getHydratedPermissionCollection(): Collection - { - $permissionInstance = new ($this->getPermissionClass())(); - - return Collection::make(array_map( - fn ($item) => $permissionInstance->newInstance([], true) - ->setRawAttributes($this->aliasedArray(array_diff_key($item, ['r' => 0])), true) - ->setRelation('roles', $this->getHydratedRoleCollection($item['r'] ?? [])), - $this->permissions['permissions'] - )); - } - - private function getHydratedRoleCollection(array $roles): Collection - { - return Collection::make(array_values( - array_intersect_key($this->cachedRoles, array_flip($roles)) - )); - } - - private function hydrateRolesCache(): void - { - $roleInstance = new ($this->getRoleClass())(); - - array_map(function ($item) use ($roleInstance) { - $role = $roleInstance->newInstance([], true) - ->setRawAttributes($this->aliasedArray($item), true); - $this->cachedRoles[$role->getKey()] = $role; - }, $this->permissions['roles']); - - $this->permissions['roles'] = []; - } - - public static function isUid($value): bool - { - if (! is_string($value) || empty(trim($value))) { - return false; - } - - // check if is UUID/GUID - $uid = preg_match('/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iD', $value) > 0; - if ($uid) { - return true; - } - - // check if is ULID - $ulid = strlen($value) == 26 && strspn($value, '0123456789ABCDEFGHJKMNPQRSTVWXYZabcdefghjkmnpqrstvwxyz') == 26 && $value[0] <= '7'; - if ($ulid) { - return true; - } - - return false; - } -} diff --git a/vendor/spatie/laravel-permission/src/PermissionServiceProvider.php b/vendor/spatie/laravel-permission/src/PermissionServiceProvider.php deleted file mode 100644 index a9011cd2..00000000 --- a/vendor/spatie/laravel-permission/src/PermissionServiceProvider.php +++ /dev/null @@ -1,184 +0,0 @@ -offerPublishing(); - - $this->registerMacroHelpers(); - - $this->registerCommands(); - - $this->registerModelBindings(); - - $this->registerOctaneListener(); - - $this->callAfterResolving(Gate::class, function (Gate $gate, Application $app) { - if ($this->app['config']->get('permission.register_permission_check_method')) { - /** @var PermissionRegistrar $permissionLoader */ - $permissionLoader = $app->get(PermissionRegistrar::class); - $permissionLoader->clearPermissionsCollection(); - $permissionLoader->registerPermissions($gate); - } - }); - - $this->app->singleton(PermissionRegistrar::class); - } - - public function register() - { - $this->mergeConfigFrom( - __DIR__.'/../config/permission.php', - 'permission' - ); - - $this->callAfterResolving('blade.compiler', fn (BladeCompiler $bladeCompiler) => $this->registerBladeExtensions($bladeCompiler)); - } - - protected function offerPublishing(): void - { - if (! $this->app->runningInConsole()) { - return; - } - - if (! function_exists('config_path')) { - // function not available and 'publish' not relevant in Lumen - return; - } - - $this->publishes([ - __DIR__.'/../config/permission.php' => config_path('permission.php'), - ], 'permission-config'); - - $this->publishes([ - __DIR__.'/../database/migrations/create_permission_tables.php.stub' => $this->getMigrationFileName('create_permission_tables.php'), - ], 'permission-migrations'); - } - - protected function registerCommands(): void - { - $this->commands([ - Commands\CacheReset::class, - ]); - - if (! $this->app->runningInConsole()) { - return; - } - - $this->commands([ - Commands\CreateRole::class, - Commands\CreatePermission::class, - Commands\Show::class, - Commands\UpgradeForTeams::class, - ]); - } - - protected function registerOctaneListener(): void - { - if ($this->app->runningInConsole() || ! $this->app['config']->get('octane.listeners')) { - return; - } - - $dispatcher = $this->app[Dispatcher::class]; - // @phpstan-ignore-next-line - $dispatcher->listen(function (\Laravel\Octane\Events\OperationTerminated $event) { - // @phpstan-ignore-next-line - $event->sandbox->make(PermissionRegistrar::class)->setPermissionsTeamId(null); - }); - - if (! $this->app['config']->get('permission.register_octane_reset_listener')) { - return; - } - // @phpstan-ignore-next-line - $dispatcher->listen(function (\Laravel\Octane\Events\OperationTerminated $event) { - // @phpstan-ignore-next-line - $event->sandbox->make(PermissionRegistrar::class)->clearPermissionsCollection(); - }); - } - - protected function registerModelBindings(): void - { - $this->app->bind(PermissionContract::class, fn ($app) => $app->make($app->config['permission.models.permission'])); - $this->app->bind(RoleContract::class, fn ($app) => $app->make($app->config['permission.models.role'])); - } - - public static function bladeMethodWrapper($method, $role, $guard = null): bool - { - return auth($guard)->check() && auth($guard)->user()->{$method}($role); - } - - protected function registerBladeExtensions($bladeCompiler): void - { - $bladeMethodWrapper = '\\Spatie\\Permission\\PermissionServiceProvider::bladeMethodWrapper'; - - $bladeCompiler->directive('role', fn ($args) => ""); - $bladeCompiler->directive('elserole', fn ($args) => ""); - $bladeCompiler->directive('endrole', fn () => ''); - - $bladeCompiler->directive('haspermission', fn ($args) => ""); - $bladeCompiler->directive('elsehaspermission', fn ($args) => ""); - $bladeCompiler->directive('endhaspermission', fn () => ''); - - $bladeCompiler->directive('hasrole', fn ($args) => ""); - $bladeCompiler->directive('endhasrole', fn () => ''); - - $bladeCompiler->directive('hasanyrole', fn ($args) => ""); - $bladeCompiler->directive('endhasanyrole', fn () => ''); - - $bladeCompiler->directive('hasallroles', fn ($args) => ""); - $bladeCompiler->directive('endhasallroles', fn () => ''); - - $bladeCompiler->directive('unlessrole', fn ($args) => ""); - $bladeCompiler->directive('endunlessrole', fn () => ''); - - $bladeCompiler->directive('hasexactroles', fn ($args) => ""); - $bladeCompiler->directive('endhasexactroles', fn () => ''); - } - - protected function registerMacroHelpers(): void - { - if (! method_exists(Route::class, 'macro')) { // Lumen - return; - } - - Route::macro('role', function ($roles = []) { - /** @var Route $this */ - return $this->middleware('role:'.implode('|', Arr::wrap($roles))); - }); - - Route::macro('permission', function ($permissions = []) { - /** @var Route $this */ - return $this->middleware('permission:'.implode('|', Arr::wrap($permissions))); - }); - } - - /** - * Returns existing migration file if found, else uses the current timestamp. - */ - protected function getMigrationFileName(string $migrationFileName): string - { - $timestamp = date('Y_m_d_His'); - - $filesystem = $this->app->make(Filesystem::class); - - return Collection::make([$this->app->databasePath().DIRECTORY_SEPARATOR.'migrations'.DIRECTORY_SEPARATOR]) - ->flatMap(fn ($path) => $filesystem->glob($path.'*_'.$migrationFileName)) - ->push($this->app->databasePath()."/migrations/{$timestamp}_{$migrationFileName}") - ->first(); - } -} diff --git a/vendor/spatie/laravel-permission/src/Traits/HasPermissions.php b/vendor/spatie/laravel-permission/src/Traits/HasPermissions.php deleted file mode 100644 index 1582e36d..00000000 --- a/vendor/spatie/laravel-permission/src/Traits/HasPermissions.php +++ /dev/null @@ -1,574 +0,0 @@ -isForceDeleting()) { - return; - } - - $teams = app(PermissionRegistrar::class)->teams; - app(PermissionRegistrar::class)->teams = false; - if (! is_a($model, Permission::class)) { - $model->permissions()->detach(); - } - if (is_a($model, Role::class)) { - $model->users()->detach(); - } - app(PermissionRegistrar::class)->teams = $teams; - }); - } - - public function getPermissionClass(): string - { - if (! $this->permissionClass) { - $this->permissionClass = app(PermissionRegistrar::class)->getPermissionClass(); - } - - return $this->permissionClass; - } - - public function getWildcardClass() - { - if (! is_null($this->wildcardClass)) { - return $this->wildcardClass; - } - - $this->wildcardClass = ''; - - if (config('permission.enable_wildcard_permission')) { - $this->wildcardClass = config('permission.wildcard_permission', WildcardPermission::class); - - if (! is_subclass_of($this->wildcardClass, Wildcard::class)) { - throw WildcardPermissionNotImplementsContract::create(); - } - } - - return $this->wildcardClass; - } - - /** - * A model may have multiple direct permissions. - */ - public function permissions(): BelongsToMany - { - $relation = $this->morphToMany( - config('permission.models.permission'), - 'model', - config('permission.table_names.model_has_permissions'), - config('permission.column_names.model_morph_key'), - app(PermissionRegistrar::class)->pivotPermission - ); - - if (! app(PermissionRegistrar::class)->teams) { - return $relation; - } - - return $relation->wherePivot(app(PermissionRegistrar::class)->teamsKey, getPermissionsTeamId()); - } - - /** - * Scope the model query to certain permissions only. - * - * @param string|int|array|Permission|Collection|\BackedEnum $permissions - * @param bool $without - */ - public function scopePermission(Builder $query, $permissions, $without = false): Builder - { - $permissions = $this->convertToPermissionModels($permissions); - - $permissionKey = (new ($this->getPermissionClass())())->getKeyName(); - $roleKey = (new (is_a($this, Role::class) ? static::class : $this->getRoleClass())())->getKeyName(); - - $rolesWithPermissions = is_a($this, Role::class) ? [] : array_unique( - array_reduce($permissions, fn ($result, $permission) => array_merge($result, $permission->roles->all()), []) - ); - - return $query->where(fn (Builder $query) => $query - ->{! $without ? 'whereHas' : 'whereDoesntHave'}('permissions', fn (Builder $subQuery) => $subQuery - ->whereIn(config('permission.table_names.permissions').".$permissionKey", \array_column($permissions, $permissionKey)) - ) - ->when(count($rolesWithPermissions), fn ($whenQuery) => $whenQuery - ->{! $without ? 'orWhereHas' : 'whereDoesntHave'}('roles', fn (Builder $subQuery) => $subQuery - ->whereIn(config('permission.table_names.roles').".$roleKey", \array_column($rolesWithPermissions, $roleKey)) - ) - ) - ); - } - - /** - * Scope the model query to only those without certain permissions, - * whether indirectly by role or by direct permission. - * - * @param string|int|array|Permission|Collection|\BackedEnum $permissions - */ - public function scopeWithoutPermission(Builder $query, $permissions): Builder - { - return $this->scopePermission($query, $permissions, true); - } - - /** - * @param string|int|array|Permission|Collection|\BackedEnum $permissions - * - * @throws PermissionDoesNotExist - */ - protected function convertToPermissionModels($permissions): array - { - if ($permissions instanceof Collection) { - $permissions = $permissions->all(); - } - - return array_map(function ($permission) { - if ($permission instanceof Permission) { - return $permission; - } - - if ($permission instanceof \BackedEnum) { - $permission = $permission->value; - } - - $method = is_int($permission) || PermissionRegistrar::isUid($permission) ? 'findById' : 'findByName'; - - return $this->getPermissionClass()::{$method}($permission, $this->getDefaultGuardName()); - }, Arr::wrap($permissions)); - } - - /** - * Find a permission. - * - * @param string|int|Permission|\BackedEnum $permission - * @return Permission - * - * @throws PermissionDoesNotExist - */ - public function filterPermission($permission, $guardName = null) - { - if ($permission instanceof \BackedEnum) { - $permission = $permission->value; - } - - if (is_int($permission) || PermissionRegistrar::isUid($permission)) { - $permission = $this->getPermissionClass()::findById( - $permission, - $guardName ?? $this->getDefaultGuardName() - ); - } - - if (is_string($permission)) { - $permission = $this->getPermissionClass()::findByName( - $permission, - $guardName ?? $this->getDefaultGuardName() - ); - } - - if (! $permission instanceof Permission) { - throw new PermissionDoesNotExist(); - } - - return $permission; - } - - /** - * Determine if the model may perform the given permission. - * - * @param string|int|Permission|\BackedEnum $permission - * @param string|null $guardName - * - * @throws PermissionDoesNotExist - */ - public function hasPermissionTo($permission, $guardName = null): bool - { - if ($this->getWildcardClass()) { - return $this->hasWildcardPermission($permission, $guardName); - } - - $permission = $this->filterPermission($permission, $guardName); - - return $this->hasDirectPermission($permission) || $this->hasPermissionViaRole($permission); - } - - /** - * Validates a wildcard permission against all permissions of a user. - * - * @param string|int|Permission|\BackedEnum $permission - * @param string|null $guardName - */ - protected function hasWildcardPermission($permission, $guardName = null): bool - { - $guardName = $guardName ?? $this->getDefaultGuardName(); - - if ($permission instanceof \BackedEnum) { - $permission = $permission->value; - } - - if (is_int($permission) || PermissionRegistrar::isUid($permission)) { - $permission = $this->getPermissionClass()::findById($permission, $guardName); - } - - if ($permission instanceof Permission) { - $permission = $permission->name; - } - - if (! is_string($permission)) { - throw WildcardPermissionInvalidArgument::create(); - } - - return app($this->getWildcardClass(), ['record' => $this])->implies( - $permission, - $guardName, - app(PermissionRegistrar::class)->getWildcardPermissionIndex($this), - ); - } - - /** - * An alias to hasPermissionTo(), but avoids throwing an exception. - * - * @param string|int|Permission|\BackedEnum $permission - * @param string|null $guardName - */ - public function checkPermissionTo($permission, $guardName = null): bool - { - try { - return $this->hasPermissionTo($permission, $guardName); - } catch (PermissionDoesNotExist $e) { - return false; - } - } - - /** - * Determine if the model has any of the given permissions. - * - * @param string|int|array|Permission|Collection|\BackedEnum ...$permissions - */ - public function hasAnyPermission(...$permissions): bool - { - $permissions = collect($permissions)->flatten(); - - foreach ($permissions as $permission) { - if ($this->checkPermissionTo($permission)) { - return true; - } - } - - return false; - } - - /** - * Determine if the model has all of the given permissions. - * - * @param string|int|array|Permission|Collection|\BackedEnum ...$permissions - */ - public function hasAllPermissions(...$permissions): bool - { - $permissions = collect($permissions)->flatten(); - - foreach ($permissions as $permission) { - if (! $this->checkPermissionTo($permission)) { - return false; - } - } - - return true; - } - - /** - * Determine if the model has, via roles, the given permission. - */ - protected function hasPermissionViaRole(Permission $permission): bool - { - if (is_a($this, Role::class)) { - return false; - } - - return $this->hasRole($permission->roles); - } - - /** - * Determine if the model has the given permission. - * - * @param string|int|Permission|\BackedEnum $permission - * - * @throws PermissionDoesNotExist - */ - public function hasDirectPermission($permission): bool - { - $permission = $this->filterPermission($permission); - - return $this->permissions->contains($permission->getKeyName(), $permission->getKey()); - } - - /** - * Return all the permissions the model has via roles. - */ - public function getPermissionsViaRoles(): Collection - { - if (is_a($this, Role::class) || is_a($this, Permission::class)) { - return collect(); - } - - return $this->loadMissing('roles', 'roles.permissions') - ->roles->flatMap(fn ($role) => $role->permissions) - ->sort()->values(); - } - - /** - * Return all the permissions the model has, both directly and via roles. - */ - public function getAllPermissions(): Collection - { - /** @var Collection $permissions */ - $permissions = $this->permissions; - - if (method_exists($this, 'roles')) { - $permissions = $permissions->merge($this->getPermissionsViaRoles()); - } - - return $permissions->sort()->values(); - } - - /** - * Returns permissions ids as array keys - * - * @param string|int|array|Permission|Collection|\BackedEnum $permissions - */ - private function collectPermissions(...$permissions): array - { - return collect($permissions) - ->flatten() - ->reduce(function ($array, $permission) { - if (empty($permission)) { - return $array; - } - - $permission = $this->getStoredPermission($permission); - if (! $permission instanceof Permission) { - return $array; - } - - if (! in_array($permission->getKey(), $array)) { - $this->ensureModelSharesGuard($permission); - $array[] = $permission->getKey(); - } - - return $array; - }, []); - } - - /** - * Grant the given permission(s) to a role. - * - * @param string|int|array|Permission|Collection|\BackedEnum $permissions - * @return $this - */ - public function givePermissionTo(...$permissions) - { - $permissions = $this->collectPermissions($permissions); - - $model = $this->getModel(); - $teamPivot = app(PermissionRegistrar::class)->teams && ! is_a($this, Role::class) ? - [app(PermissionRegistrar::class)->teamsKey => getPermissionsTeamId()] : []; - - if ($model->exists) { - $currentPermissions = $this->permissions->map(fn ($permission) => $permission->getKey())->toArray(); - - $this->permissions()->attach(array_diff($permissions, $currentPermissions), $teamPivot); - $model->unsetRelation('permissions'); - } else { - $class = \get_class($model); - - $class::saved( - function ($object) use ($permissions, $model, $teamPivot) { - if ($model->getKey() != $object->getKey()) { - return; - } - $model->permissions()->attach($permissions, $teamPivot); - $model->unsetRelation('permissions'); - } - ); - } - - if (is_a($this, Role::class)) { - $this->forgetCachedPermissions(); - } - - $this->forgetWildcardPermissionIndex(); - - return $this; - } - - public function forgetWildcardPermissionIndex(): void - { - app(PermissionRegistrar::class)->forgetWildcardPermissionIndex( - is_a($this, Role::class) ? null : $this, - ); - } - - /** - * Remove all current permissions and set the given ones. - * - * @param string|int|array|Permission|Collection|\BackedEnum $permissions - * @return $this - */ - public function syncPermissions(...$permissions) - { - if ($this->getModel()->exists) { - $this->collectPermissions($permissions); - $this->permissions()->detach(); - $this->setRelation('permissions', collect()); - } - - return $this->givePermissionTo($permissions); - } - - /** - * Revoke the given permission(s). - * - * @param Permission|Permission[]|string|string[]|\BackedEnum $permission - * @return $this - */ - public function revokePermissionTo($permission) - { - $this->permissions()->detach($this->getStoredPermission($permission)); - - if (is_a($this, Role::class)) { - $this->forgetCachedPermissions(); - } - - $this->forgetWildcardPermissionIndex(); - - $this->unsetRelation('permissions'); - - return $this; - } - - public function getPermissionNames(): Collection - { - return $this->permissions->pluck('name'); - } - - /** - * @param string|int|array|Permission|Collection|\BackedEnum $permissions - * @return Permission|Permission[]|Collection - */ - protected function getStoredPermission($permissions) - { - if ($permissions instanceof \BackedEnum) { - $permissions = $permissions->value; - } - - if (is_int($permissions) || PermissionRegistrar::isUid($permissions)) { - return $this->getPermissionClass()::findById($permissions, $this->getDefaultGuardName()); - } - - if (is_string($permissions)) { - return $this->getPermissionClass()::findByName($permissions, $this->getDefaultGuardName()); - } - - if (is_array($permissions)) { - $permissions = array_map(function ($permission) { - if ($permission instanceof \BackedEnum) { - return $permission->value; - } - - return is_a($permission, Permission::class) ? $permission->name : $permission; - }, $permissions); - - return $this->getPermissionClass()::whereIn('name', $permissions) - ->whereIn('guard_name', $this->getGuardNames()) - ->get(); - } - - return $permissions; - } - - /** - * @param Permission|Role $roleOrPermission - * - * @throws GuardDoesNotMatch - */ - protected function ensureModelSharesGuard($roleOrPermission) - { - if (! $this->getGuardNames()->contains($roleOrPermission->guard_name)) { - throw GuardDoesNotMatch::create($roleOrPermission->guard_name, $this->getGuardNames()); - } - } - - protected function getGuardNames(): Collection - { - return Guard::getNames($this); - } - - protected function getDefaultGuardName(): string - { - return Guard::getDefaultName($this); - } - - /** - * Forget the cached permissions. - */ - public function forgetCachedPermissions() - { - app(PermissionRegistrar::class)->forgetCachedPermissions(); - } - - /** - * Check if the model has All of the requested Direct permissions. - * - * @param string|int|array|Permission|Collection|\BackedEnum ...$permissions - */ - public function hasAllDirectPermissions(...$permissions): bool - { - $permissions = collect($permissions)->flatten(); - - foreach ($permissions as $permission) { - if (! $this->hasDirectPermission($permission)) { - return false; - } - } - - return true; - } - - /** - * Check if the model has Any of the requested Direct permissions. - * - * @param string|int|array|Permission|Collection|\BackedEnum ...$permissions - */ - public function hasAnyDirectPermission(...$permissions): bool - { - $permissions = collect($permissions)->flatten(); - - foreach ($permissions as $permission) { - if ($this->hasDirectPermission($permission)) { - return true; - } - } - - return false; - } -} diff --git a/vendor/spatie/laravel-permission/src/Traits/HasRoles.php b/vendor/spatie/laravel-permission/src/Traits/HasRoles.php deleted file mode 100644 index 97f87ba9..00000000 --- a/vendor/spatie/laravel-permission/src/Traits/HasRoles.php +++ /dev/null @@ -1,402 +0,0 @@ -isForceDeleting()) { - return; - } - - $teams = app(PermissionRegistrar::class)->teams; - app(PermissionRegistrar::class)->teams = false; - $model->roles()->detach(); - if (is_a($model, Permission::class)) { - $model->users()->detach(); - } - app(PermissionRegistrar::class)->teams = $teams; - }); - } - - public function getRoleClass(): string - { - if (! $this->roleClass) { - $this->roleClass = app(PermissionRegistrar::class)->getRoleClass(); - } - - return $this->roleClass; - } - - /** - * A model may have multiple roles. - */ - public function roles(): BelongsToMany - { - $relation = $this->morphToMany( - config('permission.models.role'), - 'model', - config('permission.table_names.model_has_roles'), - config('permission.column_names.model_morph_key'), - app(PermissionRegistrar::class)->pivotRole - ); - - if (! app(PermissionRegistrar::class)->teams) { - return $relation; - } - - $teamField = config('permission.table_names.roles').'.'.app(PermissionRegistrar::class)->teamsKey; - - return $relation->wherePivot(app(PermissionRegistrar::class)->teamsKey, getPermissionsTeamId()) - ->where(fn ($q) => $q->whereNull($teamField)->orWhere($teamField, getPermissionsTeamId())); - } - - /** - * Scope the model query to certain roles only. - * - * @param string|int|array|Role|Collection|\BackedEnum $roles - * @param string $guard - * @param bool $without - */ - public function scopeRole(Builder $query, $roles, $guard = null, $without = false): Builder - { - if ($roles instanceof Collection) { - $roles = $roles->all(); - } - - $roles = array_map(function ($role) use ($guard) { - if ($role instanceof Role) { - return $role; - } - - if ($role instanceof \BackedEnum) { - $role = $role->value; - } - - $method = is_int($role) || PermissionRegistrar::isUid($role) ? 'findById' : 'findByName'; - - return $this->getRoleClass()::{$method}($role, $guard ?: $this->getDefaultGuardName()); - }, Arr::wrap($roles)); - - $key = (new ($this->getRoleClass())())->getKeyName(); - - return $query->{! $without ? 'whereHas' : 'whereDoesntHave'}('roles', fn (Builder $subQuery) => $subQuery - ->whereIn(config('permission.table_names.roles').".$key", \array_column($roles, $key)) - ); - } - - /** - * Scope the model query to only those without certain roles. - * - * @param string|int|array|Role|Collection|\BackedEnum $roles - * @param string $guard - */ - public function scopeWithoutRole(Builder $query, $roles, $guard = null): Builder - { - return $this->scopeRole($query, $roles, $guard, true); - } - - /** - * Returns roles ids as array keys - * - * @param string|int|array|Role|Collection|\BackedEnum $roles - */ - private function collectRoles(...$roles): array - { - return collect($roles) - ->flatten() - ->reduce(function ($array, $role) { - if (empty($role)) { - return $array; - } - - $role = $this->getStoredRole($role); - if (! $role instanceof Role) { - return $array; - } - - if (! in_array($role->getKey(), $array)) { - $this->ensureModelSharesGuard($role); - $array[] = $role->getKey(); - } - - return $array; - }, []); - } - - /** - * Assign the given role to the model. - * - * @param string|int|array|Role|Collection|\BackedEnum ...$roles - * @return $this - */ - public function assignRole(...$roles) - { - $roles = $this->collectRoles($roles); - - $model = $this->getModel(); - $teamPivot = app(PermissionRegistrar::class)->teams && ! is_a($this, Permission::class) ? - [app(PermissionRegistrar::class)->teamsKey => getPermissionsTeamId()] : []; - - if ($model->exists) { - $currentRoles = $this->roles->map(fn ($role) => $role->getKey())->toArray(); - - $this->roles()->attach(array_diff($roles, $currentRoles), $teamPivot); - $model->unsetRelation('roles'); - } else { - $class = \get_class($model); - - $class::saved( - function ($object) use ($roles, $model, $teamPivot) { - if ($model->getKey() != $object->getKey()) { - return; - } - $model->roles()->attach($roles, $teamPivot); - $model->unsetRelation('roles'); - } - ); - } - - if (is_a($this, Permission::class)) { - $this->forgetCachedPermissions(); - } - - return $this; - } - - /** - * Revoke the given role from the model. - * - * @param string|int|Role|\BackedEnum $role - */ - public function removeRole($role) - { - $this->roles()->detach($this->getStoredRole($role)); - - $this->unsetRelation('roles'); - - if (is_a($this, Permission::class)) { - $this->forgetCachedPermissions(); - } - - return $this; - } - - /** - * Remove all current roles and set the given ones. - * - * @param string|int|array|Role|Collection|\BackedEnum ...$roles - * @return $this - */ - public function syncRoles(...$roles) - { - if ($this->getModel()->exists) { - $this->collectRoles($roles); - $this->roles()->detach(); - $this->setRelation('roles', collect()); - } - - return $this->assignRole($roles); - } - - /** - * Determine if the model has (one of) the given role(s). - * - * @param string|int|array|Role|Collection|\BackedEnum $roles - */ - public function hasRole($roles, ?string $guard = null): bool - { - $this->loadMissing('roles'); - - if (is_string($roles) && strpos($roles, '|') !== false) { - $roles = $this->convertPipeToArray($roles); - } - - if ($roles instanceof \BackedEnum) { - $roles = $roles->value; - } - - if (is_int($roles) || PermissionRegistrar::isUid($roles)) { - $key = (new ($this->getRoleClass())())->getKeyName(); - - return $guard - ? $this->roles->where('guard_name', $guard)->contains($key, $roles) - : $this->roles->contains($key, $roles); - } - - if (is_string($roles)) { - return $guard - ? $this->roles->where('guard_name', $guard)->contains('name', $roles) - : $this->roles->contains('name', $roles); - } - - if ($roles instanceof Role) { - return $this->roles->contains($roles->getKeyName(), $roles->getKey()); - } - - if (is_array($roles)) { - foreach ($roles as $role) { - if ($this->hasRole($role, $guard)) { - return true; - } - } - - return false; - } - - if ($roles instanceof Collection) { - return $roles->intersect($guard ? $this->roles->where('guard_name', $guard) : $this->roles)->isNotEmpty(); - } - - throw new \TypeError('Unsupported type for $roles parameter to hasRole().'); - } - - /** - * Determine if the model has any of the given role(s). - * - * Alias to hasRole() but without Guard controls - * - * @param string|int|array|Role|Collection|\BackedEnum $roles - */ - public function hasAnyRole(...$roles): bool - { - return $this->hasRole($roles); - } - - /** - * Determine if the model has all of the given role(s). - * - * @param string|array|Role|Collection|\BackedEnum $roles - */ - public function hasAllRoles($roles, ?string $guard = null): bool - { - $this->loadMissing('roles'); - - if ($roles instanceof \BackedEnum) { - $roles = $roles->value; - } - - if (is_string($roles) && strpos($roles, '|') !== false) { - $roles = $this->convertPipeToArray($roles); - } - - if (is_string($roles)) { - return $guard - ? $this->roles->where('guard_name', $guard)->contains('name', $roles) - : $this->roles->contains('name', $roles); - } - - if ($roles instanceof Role) { - return $this->roles->contains($roles->getKeyName(), $roles->getKey()); - } - - $roles = collect()->make($roles)->map(function ($role) { - if ($role instanceof \BackedEnum) { - return $role->value; - } - - return $role instanceof Role ? $role->name : $role; - }); - - return $roles->intersect( - $guard - ? $this->roles->where('guard_name', $guard)->pluck('name') - : $this->getRoleNames() - ) == $roles; - } - - /** - * Determine if the model has exactly all of the given role(s). - * - * @param string|array|Role|Collection $roles - */ - public function hasExactRoles($roles, ?string $guard = null): bool - { - $this->loadMissing('roles'); - - if (is_string($roles) && strpos($roles, '|') !== false) { - $roles = $this->convertPipeToArray($roles); - } - - if (is_string($roles)) { - $roles = [$roles]; - } - - if ($roles instanceof Role) { - $roles = [$roles->name]; - } - - $roles = collect()->make($roles)->map(fn ($role) => $role instanceof Role ? $role->name : $role - ); - - return $this->roles->count() == $roles->count() && $this->hasAllRoles($roles, $guard); - } - - /** - * Return all permissions directly coupled to the model. - */ - public function getDirectPermissions(): Collection - { - return $this->permissions; - } - - public function getRoleNames(): Collection - { - $this->loadMissing('roles'); - - return $this->roles->pluck('name'); - } - - protected function getStoredRole($role): Role - { - if ($role instanceof \BackedEnum) { - $role = $role->value; - } - - if (is_int($role) || PermissionRegistrar::isUid($role)) { - return $this->getRoleClass()::findById($role, $this->getDefaultGuardName()); - } - - if (is_string($role)) { - return $this->getRoleClass()::findByName($role, $this->getDefaultGuardName()); - } - - return $role; - } - - protected function convertPipeToArray(string $pipeString) - { - $pipeString = trim($pipeString); - - if (strlen($pipeString) <= 2) { - return [str_replace('|', '', $pipeString)]; - } - - $quoteCharacter = substr($pipeString, 0, 1); - $endCharacter = substr($quoteCharacter, -1, 1); - - if ($quoteCharacter !== $endCharacter) { - return explode('|', $pipeString); - } - - if (! in_array($quoteCharacter, ["'", '"'])) { - return explode('|', $pipeString); - } - - return explode('|', trim($pipeString, $quoteCharacter)); - } -} diff --git a/vendor/spatie/laravel-permission/src/Traits/RefreshesPermissionCache.php b/vendor/spatie/laravel-permission/src/Traits/RefreshesPermissionCache.php deleted file mode 100644 index c266dae6..00000000 --- a/vendor/spatie/laravel-permission/src/Traits/RefreshesPermissionCache.php +++ /dev/null @@ -1,19 +0,0 @@ -forgetCachedPermissions(); - }); - - static::deleted(function () { - app(PermissionRegistrar::class)->forgetCachedPermissions(); - }); - } -} diff --git a/vendor/spatie/laravel-permission/src/WildcardPermission.php b/vendor/spatie/laravel-permission/src/WildcardPermission.php deleted file mode 100644 index a4287187..00000000 --- a/vendor/spatie/laravel-permission/src/WildcardPermission.php +++ /dev/null @@ -1,118 +0,0 @@ -record = $record; - } - - public function getIndex(): array - { - $index = []; - - foreach ($this->record->getAllPermissions() as $permission) { - $index[$permission->guard_name] = $this->buildIndex( - $index[$permission->guard_name] ?? [], - explode(static::PART_DELIMITER, $permission->name), - $permission->name, - ); - } - - return $index; - } - - protected function buildIndex(array $index, array $parts, string $permission): array - { - if (empty($parts)) { - $index[null] = true; - - return $index; - } - - $part = array_shift($parts); - - if (blank($part)) { - throw WildcardPermissionNotProperlyFormatted::create($permission); - } - - if (! Str::contains($part, static::SUBPART_DELIMITER)) { - $index[$part] = $this->buildIndex( - $index[$part] ?? [], - $parts, - $permission, - ); - } - - $subParts = explode(static::SUBPART_DELIMITER, $part); - - foreach ($subParts as $subPart) { - if (blank($subPart)) { - throw WildcardPermissionNotProperlyFormatted::create($permission); - } - - $index[$subPart] = $this->buildIndex( - $index[$subPart] ?? [], - $parts, - $permission, - ); - } - - return $index; - } - - public function implies(string $permission, string $guardName, array $index): bool - { - if (! array_key_exists($guardName, $index)) { - return false; - } - - $permission = explode(static::PART_DELIMITER, $permission); - - return $this->checkIndex($permission, $index[$guardName]); - } - - protected function checkIndex(array $permission, array $index): bool - { - if (array_key_exists(strval(null), $index)) { - return true; - } - - if (empty($permission)) { - return false; - } - - $firstPermission = array_shift($permission); - - if ( - array_key_exists($firstPermission, $index) && - $this->checkIndex($permission, $index[$firstPermission]) - ) { - return true; - } - - if (array_key_exists(static::WILDCARD_TOKEN, $index)) { - return $this->checkIndex($permission, $index[static::WILDCARD_TOKEN]); - } - - return false; - } -} diff --git a/vendor/spatie/laravel-permission/src/helpers.php b/vendor/spatie/laravel-permission/src/helpers.php deleted file mode 100644 index d1aae1ee..00000000 --- a/vendor/spatie/laravel-permission/src/helpers.php +++ /dev/null @@ -1,33 +0,0 @@ -map(fn ($guard) => isset($guard['provider']) ? config("auth.providers.{$guard['provider']}.model") : null) - ->get($guard); - } -} - -if (! function_exists('setPermissionsTeamId')) { - /** - * @param int|string|\Illuminate\Database\Eloquent\Model $id - */ - function setPermissionsTeamId($id) - { - app(\Spatie\Permission\PermissionRegistrar::class)->setPermissionsTeamId($id); - } -} - -if (! function_exists('getPermissionsTeamId')) { - /** - * @return int|string - */ - function getPermissionsTeamId() - { - return app(\Spatie\Permission\PermissionRegistrar::class)->getPermissionsTeamId(); - } -} diff --git a/vendor/symfony/console/Application.php b/vendor/symfony/console/Application.php deleted file mode 100644 index 01b6a373..00000000 --- a/vendor/symfony/console/Application.php +++ /dev/null @@ -1,1331 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console; - -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Command\CompleteCommand; -use Symfony\Component\Console\Command\DumpCompletionCommand; -use Symfony\Component\Console\Command\HelpCommand; -use Symfony\Component\Console\Command\LazyCommand; -use Symfony\Component\Console\Command\ListCommand; -use Symfony\Component\Console\Command\SignalableCommandInterface; -use Symfony\Component\Console\CommandLoader\CommandLoaderInterface; -use Symfony\Component\Console\Completion\CompletionInput; -use Symfony\Component\Console\Completion\CompletionSuggestions; -use Symfony\Component\Console\Completion\Suggestion; -use Symfony\Component\Console\Event\ConsoleCommandEvent; -use Symfony\Component\Console\Event\ConsoleErrorEvent; -use Symfony\Component\Console\Event\ConsoleSignalEvent; -use Symfony\Component\Console\Event\ConsoleTerminateEvent; -use Symfony\Component\Console\Exception\CommandNotFoundException; -use Symfony\Component\Console\Exception\ExceptionInterface; -use Symfony\Component\Console\Exception\LogicException; -use Symfony\Component\Console\Exception\NamespaceNotFoundException; -use Symfony\Component\Console\Exception\RuntimeException; -use Symfony\Component\Console\Formatter\OutputFormatter; -use Symfony\Component\Console\Helper\DebugFormatterHelper; -use Symfony\Component\Console\Helper\DescriptorHelper; -use Symfony\Component\Console\Helper\FormatterHelper; -use Symfony\Component\Console\Helper\Helper; -use Symfony\Component\Console\Helper\HelperSet; -use Symfony\Component\Console\Helper\ProcessHelper; -use Symfony\Component\Console\Helper\QuestionHelper; -use Symfony\Component\Console\Input\ArgvInput; -use Symfony\Component\Console\Input\ArrayInput; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputAwareInterface; -use Symfony\Component\Console\Input\InputDefinition; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\ConsoleOutput; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\SignalRegistry\SignalRegistry; -use Symfony\Component\Console\Style\SymfonyStyle; -use Symfony\Component\ErrorHandler\ErrorHandler; -use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; -use Symfony\Contracts\Service\ResetInterface; - -/** - * An Application is the container for a collection of commands. - * - * It is the main entry point of a Console application. - * - * This class is optimized for a standard CLI environment. - * - * Usage: - * - * $app = new Application('myapp', '1.0 (stable)'); - * $app->add(new SimpleCommand()); - * $app->run(); - * - * @author Fabien Potencier - */ -class Application implements ResetInterface -{ - private array $commands = []; - private bool $wantHelps = false; - private ?Command $runningCommand = null; - private string $name; - private string $version; - private ?CommandLoaderInterface $commandLoader = null; - private bool $catchExceptions = true; - private bool $catchErrors = false; - private bool $autoExit = true; - private InputDefinition $definition; - private HelperSet $helperSet; - private ?EventDispatcherInterface $dispatcher = null; - private Terminal $terminal; - private string $defaultCommand; - private bool $singleCommand = false; - private bool $initialized = false; - private ?SignalRegistry $signalRegistry = null; - private array $signalsToDispatchEvent = []; - - public function __construct(string $name = 'UNKNOWN', string $version = 'UNKNOWN') - { - $this->name = $name; - $this->version = $version; - $this->terminal = new Terminal(); - $this->defaultCommand = 'list'; - if (\defined('SIGINT') && SignalRegistry::isSupported()) { - $this->signalRegistry = new SignalRegistry(); - $this->signalsToDispatchEvent = [\SIGINT, \SIGTERM, \SIGUSR1, \SIGUSR2]; - } - } - - /** - * @final - */ - public function setDispatcher(EventDispatcherInterface $dispatcher): void - { - $this->dispatcher = $dispatcher; - } - - /** - * @return void - */ - public function setCommandLoader(CommandLoaderInterface $commandLoader) - { - $this->commandLoader = $commandLoader; - } - - public function getSignalRegistry(): SignalRegistry - { - if (!$this->signalRegistry) { - throw new RuntimeException('Signals are not supported. Make sure that the "pcntl" extension is installed and that "pcntl_*" functions are not disabled by your php.ini\'s "disable_functions" directive.'); - } - - return $this->signalRegistry; - } - - /** - * @return void - */ - public function setSignalsToDispatchEvent(int ...$signalsToDispatchEvent) - { - $this->signalsToDispatchEvent = $signalsToDispatchEvent; - } - - /** - * Runs the current application. - * - * @return int 0 if everything went fine, or an error code - * - * @throws \Exception When running fails. Bypass this when {@link setCatchExceptions()}. - */ - public function run(InputInterface $input = null, OutputInterface $output = null): int - { - if (\function_exists('putenv')) { - @putenv('LINES='.$this->terminal->getHeight()); - @putenv('COLUMNS='.$this->terminal->getWidth()); - } - - $input ??= new ArgvInput(); - $output ??= new ConsoleOutput(); - - $renderException = function (\Throwable $e) use ($output) { - if ($output instanceof ConsoleOutputInterface) { - $this->renderThrowable($e, $output->getErrorOutput()); - } else { - $this->renderThrowable($e, $output); - } - }; - if ($phpHandler = set_exception_handler($renderException)) { - restore_exception_handler(); - if (!\is_array($phpHandler) || !$phpHandler[0] instanceof ErrorHandler) { - $errorHandler = true; - } elseif ($errorHandler = $phpHandler[0]->setExceptionHandler($renderException)) { - $phpHandler[0]->setExceptionHandler($errorHandler); - } - } - - $this->configureIO($input, $output); - - try { - $exitCode = $this->doRun($input, $output); - } catch (\Throwable $e) { - if ($e instanceof \Exception && !$this->catchExceptions) { - throw $e; - } - if (!$e instanceof \Exception && !$this->catchErrors) { - throw $e; - } - - $renderException($e); - - $exitCode = $e->getCode(); - if (is_numeric($exitCode)) { - $exitCode = (int) $exitCode; - if ($exitCode <= 0) { - $exitCode = 1; - } - } else { - $exitCode = 1; - } - } finally { - // if the exception handler changed, keep it - // otherwise, unregister $renderException - if (!$phpHandler) { - if (set_exception_handler($renderException) === $renderException) { - restore_exception_handler(); - } - restore_exception_handler(); - } elseif (!$errorHandler) { - $finalHandler = $phpHandler[0]->setExceptionHandler(null); - if ($finalHandler !== $renderException) { - $phpHandler[0]->setExceptionHandler($finalHandler); - } - } - } - - if ($this->autoExit) { - if ($exitCode > 255) { - $exitCode = 255; - } - - exit($exitCode); - } - - return $exitCode; - } - - /** - * Runs the current application. - * - * @return int 0 if everything went fine, or an error code - */ - public function doRun(InputInterface $input, OutputInterface $output) - { - if (true === $input->hasParameterOption(['--version', '-V'], true)) { - $output->writeln($this->getLongVersion()); - - return 0; - } - - try { - // Makes ArgvInput::getFirstArgument() able to distinguish an option from an argument. - $input->bind($this->getDefinition()); - } catch (ExceptionInterface) { - // Errors must be ignored, full binding/validation happens later when the command is known. - } - - $name = $this->getCommandName($input); - if (true === $input->hasParameterOption(['--help', '-h'], true)) { - if (!$name) { - $name = 'help'; - $input = new ArrayInput(['command_name' => $this->defaultCommand]); - } else { - $this->wantHelps = true; - } - } - - if (!$name) { - $name = $this->defaultCommand; - $definition = $this->getDefinition(); - $definition->setArguments(array_merge( - $definition->getArguments(), - [ - 'command' => new InputArgument('command', InputArgument::OPTIONAL, $definition->getArgument('command')->getDescription(), $name), - ] - )); - } - - try { - $this->runningCommand = null; - // the command name MUST be the first element of the input - $command = $this->find($name); - } catch (\Throwable $e) { - if (($e instanceof CommandNotFoundException && !$e instanceof NamespaceNotFoundException) && 1 === \count($alternatives = $e->getAlternatives()) && $input->isInteractive()) { - $alternative = $alternatives[0]; - - $style = new SymfonyStyle($input, $output); - $output->writeln(''); - $formattedBlock = (new FormatterHelper())->formatBlock(sprintf('Command "%s" is not defined.', $name), 'error', true); - $output->writeln($formattedBlock); - if (!$style->confirm(sprintf('Do you want to run "%s" instead? ', $alternative), false)) { - if (null !== $this->dispatcher) { - $event = new ConsoleErrorEvent($input, $output, $e); - $this->dispatcher->dispatch($event, ConsoleEvents::ERROR); - - return $event->getExitCode(); - } - - return 1; - } - - $command = $this->find($alternative); - } else { - if (null !== $this->dispatcher) { - $event = new ConsoleErrorEvent($input, $output, $e); - $this->dispatcher->dispatch($event, ConsoleEvents::ERROR); - - if (0 === $event->getExitCode()) { - return 0; - } - - $e = $event->getError(); - } - - try { - if ($e instanceof CommandNotFoundException && $namespace = $this->findNamespace($name)) { - $helper = new DescriptorHelper(); - $helper->describe($output instanceof ConsoleOutputInterface ? $output->getErrorOutput() : $output, $this, [ - 'format' => 'txt', - 'raw_text' => false, - 'namespace' => $namespace, - 'short' => false, - ]); - - return isset($event) ? $event->getExitCode() : 1; - } - - throw $e; - } catch (NamespaceNotFoundException) { - throw $e; - } - } - } - - if ($command instanceof LazyCommand) { - $command = $command->getCommand(); - } - - $this->runningCommand = $command; - $exitCode = $this->doRunCommand($command, $input, $output); - $this->runningCommand = null; - - return $exitCode; - } - - /** - * @return void - */ - public function reset() - { - } - - /** - * @return void - */ - public function setHelperSet(HelperSet $helperSet) - { - $this->helperSet = $helperSet; - } - - /** - * Get the helper set associated with the command. - */ - public function getHelperSet(): HelperSet - { - return $this->helperSet ??= $this->getDefaultHelperSet(); - } - - /** - * @return void - */ - public function setDefinition(InputDefinition $definition) - { - $this->definition = $definition; - } - - /** - * Gets the InputDefinition related to this Application. - */ - public function getDefinition(): InputDefinition - { - $this->definition ??= $this->getDefaultInputDefinition(); - - if ($this->singleCommand) { - $inputDefinition = $this->definition; - $inputDefinition->setArguments(); - - return $inputDefinition; - } - - return $this->definition; - } - - /** - * Adds suggestions to $suggestions for the current completion input (e.g. option or argument). - */ - public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void - { - if ( - CompletionInput::TYPE_ARGUMENT_VALUE === $input->getCompletionType() - && 'command' === $input->getCompletionName() - ) { - foreach ($this->all() as $name => $command) { - // skip hidden commands and aliased commands as they already get added below - if ($command->isHidden() || $command->getName() !== $name) { - continue; - } - $suggestions->suggestValue(new Suggestion($command->getName(), $command->getDescription())); - foreach ($command->getAliases() as $name) { - $suggestions->suggestValue(new Suggestion($name, $command->getDescription())); - } - } - - return; - } - - if (CompletionInput::TYPE_OPTION_NAME === $input->getCompletionType()) { - $suggestions->suggestOptions($this->getDefinition()->getOptions()); - - return; - } - } - - /** - * Gets the help message. - */ - public function getHelp(): string - { - return $this->getLongVersion(); - } - - /** - * Gets whether to catch exceptions or not during commands execution. - */ - public function areExceptionsCaught(): bool - { - return $this->catchExceptions; - } - - /** - * Sets whether to catch exceptions or not during commands execution. - * - * @return void - */ - public function setCatchExceptions(bool $boolean) - { - $this->catchExceptions = $boolean; - } - - /** - * Sets whether to catch errors or not during commands execution. - */ - public function setCatchErrors(bool $catchErrors = true): void - { - $this->catchErrors = $catchErrors; - } - - /** - * Gets whether to automatically exit after a command execution or not. - */ - public function isAutoExitEnabled(): bool - { - return $this->autoExit; - } - - /** - * Sets whether to automatically exit after a command execution or not. - * - * @return void - */ - public function setAutoExit(bool $boolean) - { - $this->autoExit = $boolean; - } - - /** - * Gets the name of the application. - */ - public function getName(): string - { - return $this->name; - } - - /** - * Sets the application name. - * - * @return void - */ - public function setName(string $name) - { - $this->name = $name; - } - - /** - * Gets the application version. - */ - public function getVersion(): string - { - return $this->version; - } - - /** - * Sets the application version. - * - * @return void - */ - public function setVersion(string $version) - { - $this->version = $version; - } - - /** - * Returns the long version of the application. - * - * @return string - */ - public function getLongVersion() - { - if ('UNKNOWN' !== $this->getName()) { - if ('UNKNOWN' !== $this->getVersion()) { - return sprintf('%s %s', $this->getName(), $this->getVersion()); - } - - return $this->getName(); - } - - return 'Console Tool'; - } - - /** - * Registers a new command. - */ - public function register(string $name): Command - { - return $this->add(new Command($name)); - } - - /** - * Adds an array of command objects. - * - * If a Command is not enabled it will not be added. - * - * @param Command[] $commands An array of commands - * - * @return void - */ - public function addCommands(array $commands) - { - foreach ($commands as $command) { - $this->add($command); - } - } - - /** - * Adds a command object. - * - * If a command with the same name already exists, it will be overridden. - * If the command is not enabled it will not be added. - * - * @return Command|null - */ - public function add(Command $command) - { - $this->init(); - - $command->setApplication($this); - - if (!$command->isEnabled()) { - $command->setApplication(null); - - return null; - } - - if (!$command instanceof LazyCommand) { - // Will throw if the command is not correctly initialized. - $command->getDefinition(); - } - - if (!$command->getName()) { - throw new LogicException(sprintf('The command defined in "%s" cannot have an empty name.', get_debug_type($command))); - } - - $this->commands[$command->getName()] = $command; - - foreach ($command->getAliases() as $alias) { - $this->commands[$alias] = $command; - } - - return $command; - } - - /** - * Returns a registered command by name or alias. - * - * @return Command - * - * @throws CommandNotFoundException When given command name does not exist - */ - public function get(string $name) - { - $this->init(); - - if (!$this->has($name)) { - throw new CommandNotFoundException(sprintf('The command "%s" does not exist.', $name)); - } - - // When the command has a different name than the one used at the command loader level - if (!isset($this->commands[$name])) { - throw new CommandNotFoundException(sprintf('The "%s" command cannot be found because it is registered under multiple names. Make sure you don\'t set a different name via constructor or "setName()".', $name)); - } - - $command = $this->commands[$name]; - - if ($this->wantHelps) { - $this->wantHelps = false; - - $helpCommand = $this->get('help'); - $helpCommand->setCommand($command); - - return $helpCommand; - } - - return $command; - } - - /** - * Returns true if the command exists, false otherwise. - */ - public function has(string $name): bool - { - $this->init(); - - return isset($this->commands[$name]) || ($this->commandLoader?->has($name) && $this->add($this->commandLoader->get($name))); - } - - /** - * Returns an array of all unique namespaces used by currently registered commands. - * - * It does not return the global namespace which always exists. - * - * @return string[] - */ - public function getNamespaces(): array - { - $namespaces = []; - foreach ($this->all() as $command) { - if ($command->isHidden()) { - continue; - } - - $namespaces[] = $this->extractAllNamespaces($command->getName()); - - foreach ($command->getAliases() as $alias) { - $namespaces[] = $this->extractAllNamespaces($alias); - } - } - - return array_values(array_unique(array_filter(array_merge([], ...$namespaces)))); - } - - /** - * Finds a registered namespace by a name or an abbreviation. - * - * @throws NamespaceNotFoundException When namespace is incorrect or ambiguous - */ - public function findNamespace(string $namespace): string - { - $allNamespaces = $this->getNamespaces(); - $expr = implode('[^:]*:', array_map('preg_quote', explode(':', $namespace))).'[^:]*'; - $namespaces = preg_grep('{^'.$expr.'}', $allNamespaces); - - if (empty($namespaces)) { - $message = sprintf('There are no commands defined in the "%s" namespace.', $namespace); - - if ($alternatives = $this->findAlternatives($namespace, $allNamespaces)) { - if (1 == \count($alternatives)) { - $message .= "\n\nDid you mean this?\n "; - } else { - $message .= "\n\nDid you mean one of these?\n "; - } - - $message .= implode("\n ", $alternatives); - } - - throw new NamespaceNotFoundException($message, $alternatives); - } - - $exact = \in_array($namespace, $namespaces, true); - if (\count($namespaces) > 1 && !$exact) { - throw new NamespaceNotFoundException(sprintf("The namespace \"%s\" is ambiguous.\nDid you mean one of these?\n%s.", $namespace, $this->getAbbreviationSuggestions(array_values($namespaces))), array_values($namespaces)); - } - - return $exact ? $namespace : reset($namespaces); - } - - /** - * Finds a command by name or alias. - * - * Contrary to get, this command tries to find the best - * match if you give it an abbreviation of a name or alias. - * - * @return Command - * - * @throws CommandNotFoundException When command name is incorrect or ambiguous - */ - public function find(string $name) - { - $this->init(); - - $aliases = []; - - foreach ($this->commands as $command) { - foreach ($command->getAliases() as $alias) { - if (!$this->has($alias)) { - $this->commands[$alias] = $command; - } - } - } - - if ($this->has($name)) { - return $this->get($name); - } - - $allCommands = $this->commandLoader ? array_merge($this->commandLoader->getNames(), array_keys($this->commands)) : array_keys($this->commands); - $expr = implode('[^:]*:', array_map('preg_quote', explode(':', $name))).'[^:]*'; - $commands = preg_grep('{^'.$expr.'}', $allCommands); - - if (empty($commands)) { - $commands = preg_grep('{^'.$expr.'}i', $allCommands); - } - - // if no commands matched or we just matched namespaces - if (empty($commands) || \count(preg_grep('{^'.$expr.'$}i', $commands)) < 1) { - if (false !== $pos = strrpos($name, ':')) { - // check if a namespace exists and contains commands - $this->findNamespace(substr($name, 0, $pos)); - } - - $message = sprintf('Command "%s" is not defined.', $name); - - if ($alternatives = $this->findAlternatives($name, $allCommands)) { - // remove hidden commands - $alternatives = array_filter($alternatives, fn ($name) => !$this->get($name)->isHidden()); - - if (1 == \count($alternatives)) { - $message .= "\n\nDid you mean this?\n "; - } else { - $message .= "\n\nDid you mean one of these?\n "; - } - $message .= implode("\n ", $alternatives); - } - - throw new CommandNotFoundException($message, array_values($alternatives)); - } - - // filter out aliases for commands which are already on the list - if (\count($commands) > 1) { - $commandList = $this->commandLoader ? array_merge(array_flip($this->commandLoader->getNames()), $this->commands) : $this->commands; - $commands = array_unique(array_filter($commands, function ($nameOrAlias) use (&$commandList, $commands, &$aliases) { - if (!$commandList[$nameOrAlias] instanceof Command) { - $commandList[$nameOrAlias] = $this->commandLoader->get($nameOrAlias); - } - - $commandName = $commandList[$nameOrAlias]->getName(); - - $aliases[$nameOrAlias] = $commandName; - - return $commandName === $nameOrAlias || !\in_array($commandName, $commands); - })); - } - - if (\count($commands) > 1) { - $usableWidth = $this->terminal->getWidth() - 10; - $abbrevs = array_values($commands); - $maxLen = 0; - foreach ($abbrevs as $abbrev) { - $maxLen = max(Helper::width($abbrev), $maxLen); - } - $abbrevs = array_map(function ($cmd) use ($commandList, $usableWidth, $maxLen, &$commands) { - if ($commandList[$cmd]->isHidden()) { - unset($commands[array_search($cmd, $commands)]); - - return false; - } - - $abbrev = str_pad($cmd, $maxLen, ' ').' '.$commandList[$cmd]->getDescription(); - - return Helper::width($abbrev) > $usableWidth ? Helper::substr($abbrev, 0, $usableWidth - 3).'...' : $abbrev; - }, array_values($commands)); - - if (\count($commands) > 1) { - $suggestions = $this->getAbbreviationSuggestions(array_filter($abbrevs)); - - throw new CommandNotFoundException(sprintf("Command \"%s\" is ambiguous.\nDid you mean one of these?\n%s.", $name, $suggestions), array_values($commands)); - } - } - - $command = $this->get(reset($commands)); - - if ($command->isHidden()) { - throw new CommandNotFoundException(sprintf('The command "%s" does not exist.', $name)); - } - - return $command; - } - - /** - * Gets the commands (registered in the given namespace if provided). - * - * The array keys are the full names and the values the command instances. - * - * @return Command[] - */ - public function all(string $namespace = null) - { - $this->init(); - - if (null === $namespace) { - if (!$this->commandLoader) { - return $this->commands; - } - - $commands = $this->commands; - foreach ($this->commandLoader->getNames() as $name) { - if (!isset($commands[$name]) && $this->has($name)) { - $commands[$name] = $this->get($name); - } - } - - return $commands; - } - - $commands = []; - foreach ($this->commands as $name => $command) { - if ($namespace === $this->extractNamespace($name, substr_count($namespace, ':') + 1)) { - $commands[$name] = $command; - } - } - - if ($this->commandLoader) { - foreach ($this->commandLoader->getNames() as $name) { - if (!isset($commands[$name]) && $namespace === $this->extractNamespace($name, substr_count($namespace, ':') + 1) && $this->has($name)) { - $commands[$name] = $this->get($name); - } - } - } - - return $commands; - } - - /** - * Returns an array of possible abbreviations given a set of names. - * - * @return string[][] - */ - public static function getAbbreviations(array $names): array - { - $abbrevs = []; - foreach ($names as $name) { - for ($len = \strlen($name); $len > 0; --$len) { - $abbrev = substr($name, 0, $len); - $abbrevs[$abbrev][] = $name; - } - } - - return $abbrevs; - } - - public function renderThrowable(\Throwable $e, OutputInterface $output): void - { - $output->writeln('', OutputInterface::VERBOSITY_QUIET); - - $this->doRenderThrowable($e, $output); - - if (null !== $this->runningCommand) { - $output->writeln(sprintf('%s', OutputFormatter::escape(sprintf($this->runningCommand->getSynopsis(), $this->getName()))), OutputInterface::VERBOSITY_QUIET); - $output->writeln('', OutputInterface::VERBOSITY_QUIET); - } - } - - protected function doRenderThrowable(\Throwable $e, OutputInterface $output): void - { - do { - $message = trim($e->getMessage()); - if ('' === $message || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { - $class = get_debug_type($e); - $title = sprintf(' [%s%s] ', $class, 0 !== ($code = $e->getCode()) ? ' ('.$code.')' : ''); - $len = Helper::width($title); - } else { - $len = 0; - } - - if (str_contains($message, "@anonymous\0")) { - $message = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', fn ($m) => class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0], $message); - } - - $width = $this->terminal->getWidth() ? $this->terminal->getWidth() - 1 : \PHP_INT_MAX; - $lines = []; - foreach ('' !== $message ? preg_split('/\r?\n/', $message) : [] as $line) { - foreach ($this->splitStringByWidth($line, $width - 4) as $line) { - // pre-format lines to get the right string length - $lineLength = Helper::width($line) + 4; - $lines[] = [$line, $lineLength]; - - $len = max($lineLength, $len); - } - } - - $messages = []; - if (!$e instanceof ExceptionInterface || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { - $messages[] = sprintf('%s', OutputFormatter::escape(sprintf('In %s line %s:', basename($e->getFile()) ?: 'n/a', $e->getLine() ?: 'n/a'))); - } - $messages[] = $emptyLine = sprintf('%s', str_repeat(' ', $len)); - if ('' === $message || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { - $messages[] = sprintf('%s%s', $title, str_repeat(' ', max(0, $len - Helper::width($title)))); - } - foreach ($lines as $line) { - $messages[] = sprintf(' %s %s', OutputFormatter::escape($line[0]), str_repeat(' ', $len - $line[1])); - } - $messages[] = $emptyLine; - $messages[] = ''; - - $output->writeln($messages, OutputInterface::VERBOSITY_QUIET); - - if (OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { - $output->writeln('Exception trace:', OutputInterface::VERBOSITY_QUIET); - - // exception related properties - $trace = $e->getTrace(); - - array_unshift($trace, [ - 'function' => '', - 'file' => $e->getFile() ?: 'n/a', - 'line' => $e->getLine() ?: 'n/a', - 'args' => [], - ]); - - for ($i = 0, $count = \count($trace); $i < $count; ++$i) { - $class = $trace[$i]['class'] ?? ''; - $type = $trace[$i]['type'] ?? ''; - $function = $trace[$i]['function'] ?? ''; - $file = $trace[$i]['file'] ?? 'n/a'; - $line = $trace[$i]['line'] ?? 'n/a'; - - $output->writeln(sprintf(' %s%s at %s:%s', $class, $function ? $type.$function.'()' : '', $file, $line), OutputInterface::VERBOSITY_QUIET); - } - - $output->writeln('', OutputInterface::VERBOSITY_QUIET); - } - } while ($e = $e->getPrevious()); - } - - /** - * Configures the input and output instances based on the user arguments and options. - * - * @return void - */ - protected function configureIO(InputInterface $input, OutputInterface $output) - { - if (true === $input->hasParameterOption(['--ansi'], true)) { - $output->setDecorated(true); - } elseif (true === $input->hasParameterOption(['--no-ansi'], true)) { - $output->setDecorated(false); - } - - if (true === $input->hasParameterOption(['--no-interaction', '-n'], true)) { - $input->setInteractive(false); - } - - switch ($shellVerbosity = (int) getenv('SHELL_VERBOSITY')) { - case -1: - $output->setVerbosity(OutputInterface::VERBOSITY_QUIET); - break; - case 1: - $output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); - break; - case 2: - $output->setVerbosity(OutputInterface::VERBOSITY_VERY_VERBOSE); - break; - case 3: - $output->setVerbosity(OutputInterface::VERBOSITY_DEBUG); - break; - default: - $shellVerbosity = 0; - break; - } - - if (true === $input->hasParameterOption(['--quiet', '-q'], true)) { - $output->setVerbosity(OutputInterface::VERBOSITY_QUIET); - $shellVerbosity = -1; - } else { - if ($input->hasParameterOption('-vvv', true) || $input->hasParameterOption('--verbose=3', true) || 3 === $input->getParameterOption('--verbose', false, true)) { - $output->setVerbosity(OutputInterface::VERBOSITY_DEBUG); - $shellVerbosity = 3; - } elseif ($input->hasParameterOption('-vv', true) || $input->hasParameterOption('--verbose=2', true) || 2 === $input->getParameterOption('--verbose', false, true)) { - $output->setVerbosity(OutputInterface::VERBOSITY_VERY_VERBOSE); - $shellVerbosity = 2; - } elseif ($input->hasParameterOption('-v', true) || $input->hasParameterOption('--verbose=1', true) || $input->hasParameterOption('--verbose', true) || $input->getParameterOption('--verbose', false, true)) { - $output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); - $shellVerbosity = 1; - } - } - - if (-1 === $shellVerbosity) { - $input->setInteractive(false); - } - - if (\function_exists('putenv')) { - @putenv('SHELL_VERBOSITY='.$shellVerbosity); - } - $_ENV['SHELL_VERBOSITY'] = $shellVerbosity; - $_SERVER['SHELL_VERBOSITY'] = $shellVerbosity; - } - - /** - * Runs the current command. - * - * If an event dispatcher has been attached to the application, - * events are also dispatched during the life-cycle of the command. - * - * @return int 0 if everything went fine, or an error code - */ - protected function doRunCommand(Command $command, InputInterface $input, OutputInterface $output) - { - foreach ($command->getHelperSet() as $helper) { - if ($helper instanceof InputAwareInterface) { - $helper->setInput($input); - } - } - - $commandSignals = $command instanceof SignalableCommandInterface ? $command->getSubscribedSignals() : []; - if ($commandSignals || $this->dispatcher && $this->signalsToDispatchEvent) { - if (!$this->signalRegistry) { - throw new RuntimeException('Unable to subscribe to signal events. Make sure that the "pcntl" extension is installed and that "pcntl_*" functions are not disabled by your php.ini\'s "disable_functions" directive.'); - } - - if (Terminal::hasSttyAvailable()) { - $sttyMode = shell_exec('stty -g'); - - foreach ([\SIGINT, \SIGTERM] as $signal) { - $this->signalRegistry->register($signal, static fn () => shell_exec('stty '.$sttyMode)); - } - } - - if ($this->dispatcher) { - // We register application signals, so that we can dispatch the event - foreach ($this->signalsToDispatchEvent as $signal) { - $event = new ConsoleSignalEvent($command, $input, $output, $signal); - - $this->signalRegistry->register($signal, function ($signal) use ($event, $command, $commandSignals) { - $this->dispatcher->dispatch($event, ConsoleEvents::SIGNAL); - $exitCode = $event->getExitCode(); - - // If the command is signalable, we call the handleSignal() method - if (\in_array($signal, $commandSignals, true)) { - $exitCode = $command->handleSignal($signal, $exitCode); - // BC layer for Symfony <= 5 - if (null === $exitCode) { - trigger_deprecation('symfony/console', '6.3', 'Not returning an exit code from "%s::handleSignal()" is deprecated, return "false" to keep the command running or "0" to exit successfully.', get_debug_type($command)); - $exitCode = 0; - } - } - - if (false !== $exitCode) { - $event = new ConsoleTerminateEvent($command, $event->getInput(), $event->getOutput(), $exitCode, $signal); - $this->dispatcher->dispatch($event, ConsoleEvents::TERMINATE); - - exit($event->getExitCode()); - } - }); - } - - // then we register command signals, but not if already handled after the dispatcher - $commandSignals = array_diff($commandSignals, $this->signalsToDispatchEvent); - } - - foreach ($commandSignals as $signal) { - $this->signalRegistry->register($signal, function (int $signal) use ($command): void { - $exitCode = $command->handleSignal($signal); - // BC layer for Symfony <= 5 - if (null === $exitCode) { - trigger_deprecation('symfony/console', '6.3', 'Not returning an exit code from "%s::handleSignal()" is deprecated, return "false" to keep the command running or "0" to exit successfully.', get_debug_type($command)); - $exitCode = 0; - } - - if (false !== $exitCode) { - exit($exitCode); - } - }); - } - } - - if (null === $this->dispatcher) { - return $command->run($input, $output); - } - - // bind before the console.command event, so the listeners have access to input options/arguments - try { - $command->mergeApplicationDefinition(); - $input->bind($command->getDefinition()); - } catch (ExceptionInterface) { - // ignore invalid options/arguments for now, to allow the event listeners to customize the InputDefinition - } - - $event = new ConsoleCommandEvent($command, $input, $output); - $e = null; - - try { - $this->dispatcher->dispatch($event, ConsoleEvents::COMMAND); - - if ($event->commandShouldRun()) { - $exitCode = $command->run($input, $output); - } else { - $exitCode = ConsoleCommandEvent::RETURN_CODE_DISABLED; - } - } catch (\Throwable $e) { - $event = new ConsoleErrorEvent($input, $output, $e, $command); - $this->dispatcher->dispatch($event, ConsoleEvents::ERROR); - $e = $event->getError(); - - if (0 === $exitCode = $event->getExitCode()) { - $e = null; - } - } - - $event = new ConsoleTerminateEvent($command, $input, $output, $exitCode); - $this->dispatcher->dispatch($event, ConsoleEvents::TERMINATE); - - if (null !== $e) { - throw $e; - } - - return $event->getExitCode(); - } - - /** - * Gets the name of the command based on input. - */ - protected function getCommandName(InputInterface $input): ?string - { - return $this->singleCommand ? $this->defaultCommand : $input->getFirstArgument(); - } - - /** - * Gets the default input definition. - */ - protected function getDefaultInputDefinition(): InputDefinition - { - return new InputDefinition([ - new InputArgument('command', InputArgument::REQUIRED, 'The command to execute'), - new InputOption('--help', '-h', InputOption::VALUE_NONE, 'Display help for the given command. When no command is given display help for the '.$this->defaultCommand.' command'), - new InputOption('--quiet', '-q', InputOption::VALUE_NONE, 'Do not output any message'), - new InputOption('--verbose', '-v|vv|vvv', InputOption::VALUE_NONE, 'Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug'), - new InputOption('--version', '-V', InputOption::VALUE_NONE, 'Display this application version'), - new InputOption('--ansi', '', InputOption::VALUE_NEGATABLE, 'Force (or disable --no-ansi) ANSI output', null), - new InputOption('--no-interaction', '-n', InputOption::VALUE_NONE, 'Do not ask any interactive question'), - ]); - } - - /** - * Gets the default commands that should always be available. - * - * @return Command[] - */ - protected function getDefaultCommands(): array - { - return [new HelpCommand(), new ListCommand(), new CompleteCommand(), new DumpCompletionCommand()]; - } - - /** - * Gets the default helper set with the helpers that should always be available. - */ - protected function getDefaultHelperSet(): HelperSet - { - return new HelperSet([ - new FormatterHelper(), - new DebugFormatterHelper(), - new ProcessHelper(), - new QuestionHelper(), - ]); - } - - /** - * Returns abbreviated suggestions in string format. - */ - private function getAbbreviationSuggestions(array $abbrevs): string - { - return ' '.implode("\n ", $abbrevs); - } - - /** - * Returns the namespace part of the command name. - * - * This method is not part of public API and should not be used directly. - */ - public function extractNamespace(string $name, int $limit = null): string - { - $parts = explode(':', $name, -1); - - return implode(':', null === $limit ? $parts : \array_slice($parts, 0, $limit)); - } - - /** - * Finds alternative of $name among $collection, - * if nothing is found in $collection, try in $abbrevs. - * - * @return string[] - */ - private function findAlternatives(string $name, iterable $collection): array - { - $threshold = 1e3; - $alternatives = []; - - $collectionParts = []; - foreach ($collection as $item) { - $collectionParts[$item] = explode(':', $item); - } - - foreach (explode(':', $name) as $i => $subname) { - foreach ($collectionParts as $collectionName => $parts) { - $exists = isset($alternatives[$collectionName]); - if (!isset($parts[$i]) && $exists) { - $alternatives[$collectionName] += $threshold; - continue; - } elseif (!isset($parts[$i])) { - continue; - } - - $lev = levenshtein($subname, $parts[$i]); - if ($lev <= \strlen($subname) / 3 || '' !== $subname && str_contains($parts[$i], $subname)) { - $alternatives[$collectionName] = $exists ? $alternatives[$collectionName] + $lev : $lev; - } elseif ($exists) { - $alternatives[$collectionName] += $threshold; - } - } - } - - foreach ($collection as $item) { - $lev = levenshtein($name, $item); - if ($lev <= \strlen($name) / 3 || str_contains($item, $name)) { - $alternatives[$item] = isset($alternatives[$item]) ? $alternatives[$item] - $lev : $lev; - } - } - - $alternatives = array_filter($alternatives, fn ($lev) => $lev < 2 * $threshold); - ksort($alternatives, \SORT_NATURAL | \SORT_FLAG_CASE); - - return array_keys($alternatives); - } - - /** - * Sets the default Command name. - * - * @return $this - */ - public function setDefaultCommand(string $commandName, bool $isSingleCommand = false): static - { - $this->defaultCommand = explode('|', ltrim($commandName, '|'))[0]; - - if ($isSingleCommand) { - // Ensure the command exist - $this->find($commandName); - - $this->singleCommand = true; - } - - return $this; - } - - /** - * @internal - */ - public function isSingleCommand(): bool - { - return $this->singleCommand; - } - - private function splitStringByWidth(string $string, int $width): array - { - // str_split is not suitable for multi-byte characters, we should use preg_split to get char array properly. - // additionally, array_slice() is not enough as some character has doubled width. - // we need a function to split string not by character count but by string width - if (false === $encoding = mb_detect_encoding($string, null, true)) { - return str_split($string, $width); - } - - $utf8String = mb_convert_encoding($string, 'utf8', $encoding); - $lines = []; - $line = ''; - - $offset = 0; - while (preg_match('/.{1,10000}/u', $utf8String, $m, 0, $offset)) { - $offset += \strlen($m[0]); - - foreach (preg_split('//u', $m[0]) as $char) { - // test if $char could be appended to current line - if (mb_strwidth($line.$char, 'utf8') <= $width) { - $line .= $char; - continue; - } - // if not, push current line to array and make new line - $lines[] = str_pad($line, $width); - $line = $char; - } - } - - $lines[] = \count($lines) ? str_pad($line, $width) : $line; - - mb_convert_variables($encoding, 'utf8', $lines); - - return $lines; - } - - /** - * Returns all namespaces of the command name. - * - * @return string[] - */ - private function extractAllNamespaces(string $name): array - { - // -1 as third argument is needed to skip the command short name when exploding - $parts = explode(':', $name, -1); - $namespaces = []; - - foreach ($parts as $part) { - if (\count($namespaces)) { - $namespaces[] = end($namespaces).':'.$part; - } else { - $namespaces[] = $part; - } - } - - return $namespaces; - } - - private function init(): void - { - if ($this->initialized) { - return; - } - $this->initialized = true; - - foreach ($this->getDefaultCommands() as $command) { - $this->add($command); - } - } -} diff --git a/vendor/symfony/console/Attribute/AsCommand.php b/vendor/symfony/console/Attribute/AsCommand.php deleted file mode 100644 index b337f548..00000000 --- a/vendor/symfony/console/Attribute/AsCommand.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Attribute; - -/** - * Service tag to autoconfigure commands. - */ -#[\Attribute(\Attribute::TARGET_CLASS)] -class AsCommand -{ - public function __construct( - public string $name, - public ?string $description = null, - array $aliases = [], - bool $hidden = false, - ) { - if (!$hidden && !$aliases) { - return; - } - - $name = explode('|', $name); - $name = array_merge($name, $aliases); - - if ($hidden && '' !== $name[0]) { - array_unshift($name, ''); - } - - $this->name = implode('|', $name); - } -} diff --git a/vendor/symfony/console/CHANGELOG.md b/vendor/symfony/console/CHANGELOG.md deleted file mode 100644 index 9ccb41d9..00000000 --- a/vendor/symfony/console/CHANGELOG.md +++ /dev/null @@ -1,261 +0,0 @@ -CHANGELOG -========= - -6.4 ---- - - * Add `SignalMap` to map signal value to its name - * Multi-line text in vertical tables is aligned properly - * The application can also catch errors with `Application::setCatchErrors(true)` - * Add `RunCommandMessage` and `RunCommandMessageHandler` - * Dispatch `ConsoleTerminateEvent` after an exit on signal handling and add `ConsoleTerminateEvent::getInterruptingSignal()` - -6.3 ---- - - * Add support for choosing exit code while handling signal, or to not exit at all - * Add `ProgressBar::setPlaceholderFormatter` to set a placeholder attached to a instance, instead of being global. - * Add `ReStructuredTextDescriptor` - -6.2 ---- - - * Improve truecolor terminal detection in some cases - * Add support for 256 color terminals (conversion from Ansi24 to Ansi8 if terminal is capable of it) - * Deprecate calling `*Command::setApplication()`, `*FormatterStyle::setForeground/setBackground()`, `Helper::setHelpSet()`, `Input*::setDefault()`, `Question::setAutocompleterCallback/setValidator()`without any arguments - * Change the signature of `OutputFormatterStyleInterface::setForeground/setBackground()` to `setForeground/setBackground(?string)` - * Change the signature of `HelperInterface::setHelperSet()` to `setHelperSet(?HelperSet)` - -6.1 ---- - - * Add support to display table vertically when calling setVertical() - * Add method `__toString()` to `InputInterface` - * Added `OutputWrapper` to prevent truncated URL in `SymfonyStyle::createBlock`. - * Deprecate `Command::$defaultName` and `Command::$defaultDescription`, use the `AsCommand` attribute instead - * Add suggested values for arguments and options in input definition, for input completion - * Add `$resumeAt` parameter to `ProgressBar#start()`, so that one can easily 'resume' progress on longer tasks, and still get accurate `getEstimate()` and `getRemaining()` results. - -6.0 ---- - - * `Command::setHidden()` has a default value (`true`) for `$hidden` parameter and is final - * Remove `Helper::strlen()`, use `Helper::width()` instead - * Remove `Helper::strlenWithoutDecoration()`, use `Helper::removeDecoration()` instead - * `AddConsoleCommandPass` can not be configured anymore - * Remove `HelperSet::setCommand()` and `getCommand()` without replacement - -5.4 ---- - - * Add `TesterTrait::assertCommandIsSuccessful()` to test command - * Deprecate `HelperSet::setCommand()` and `getCommand()` without replacement - -5.3 ---- - - * Add `GithubActionReporter` to render annotations in a Github Action - * Add `InputOption::VALUE_NEGATABLE` flag to handle `--foo`/`--no-foo` options - * Add the `Command::$defaultDescription` static property and the `description` attribute - on the `console.command` tag to allow the `list` command to instantiate commands lazily - * Add option `--short` to the `list` command - * Add support for bright colors - * Add `#[AsCommand]` attribute for declaring commands on PHP 8 - * Add `Helper::width()` and `Helper::length()` - * The `--ansi` and `--no-ansi` options now default to `null`. - -5.2.0 ------ - - * Added `SingleCommandApplication::setAutoExit()` to allow testing via `CommandTester` - * added support for multiline responses to questions through `Question::setMultiline()` - and `Question::isMultiline()` - * Added `SignalRegistry` class to stack signals handlers - * Added support for signals: - * Added `Application::getSignalRegistry()` and `Application::setSignalsToDispatchEvent()` methods - * Added `SignalableCommandInterface` interface - * Added `TableCellStyle` class to customize table cell - * Removed `php ` prefix invocation from help messages. - -5.1.0 ------ - - * `Command::setHidden()` is final since Symfony 5.1 - * Add `SingleCommandApplication` - * Add `Cursor` class - -5.0.0 ------ - - * removed support for finding hidden commands using an abbreviation, use the full name instead - * removed `TableStyle::setCrossingChar()` method in favor of `TableStyle::setDefaultCrossingChar()` - * removed `TableStyle::setHorizontalBorderChar()` method in favor of `TableStyle::setDefaultCrossingChars()` - * removed `TableStyle::getHorizontalBorderChar()` method in favor of `TableStyle::getBorderChars()` - * removed `TableStyle::setVerticalBorderChar()` method in favor of `TableStyle::setVerticalBorderChars()` - * removed `TableStyle::getVerticalBorderChar()` method in favor of `TableStyle::getBorderChars()` - * removed support for returning `null` from `Command::execute()`, return `0` instead - * `ProcessHelper::run()` accepts only `array|Symfony\Component\Process\Process` for its `command` argument - * `Application::setDispatcher` accepts only `Symfony\Contracts\EventDispatcher\EventDispatcherInterface` - for its `dispatcher` argument - * renamed `Application::renderException()` and `Application::doRenderException()` - to `renderThrowable()` and `doRenderThrowable()` respectively. - -4.4.0 ------ - - * deprecated finding hidden commands using an abbreviation, use the full name instead - * added `Question::setTrimmable` default to true to allow the answer to be trimmed - * added method `minSecondsBetweenRedraws()` and `maxSecondsBetweenRedraws()` on `ProgressBar` - * `Application` implements `ResetInterface` - * marked all dispatched event classes as `@final` - * added support for displaying table horizontally - * deprecated returning `null` from `Command::execute()`, return `0` instead - * Deprecated the `Application::renderException()` and `Application::doRenderException()` methods, - use `renderThrowable()` and `doRenderThrowable()` instead. - * added support for the `NO_COLOR` env var (https://no-color.org/) - -4.3.0 ------ - - * added support for hyperlinks - * added `ProgressBar::iterate()` method that simplify updating the progress bar when iterating - * added `Question::setAutocompleterCallback()` to provide a callback function - that dynamically generates suggestions as the user types - -4.2.0 ------ - - * allowed passing commands as `[$process, 'ENV_VAR' => 'value']` to - `ProcessHelper::run()` to pass environment variables - * deprecated passing a command as a string to `ProcessHelper::run()`, - pass it the command as an array of its arguments instead - * made the `ProcessHelper` class final - * added `WrappableOutputFormatterInterface::formatAndWrap()` (implemented in `OutputFormatter`) - * added `capture_stderr_separately` option to `CommandTester::execute()` - -4.1.0 ------ - - * added option to run suggested command if command is not found and only 1 alternative is available - * added option to modify console output and print multiple modifiable sections - * added support for iterable messages in output `write` and `writeln` methods - -4.0.0 ------ - - * `OutputFormatter` throws an exception when unknown options are used - * removed `QuestionHelper::setInputStream()/getInputStream()` - * removed `Application::getTerminalWidth()/getTerminalHeight()` and - `Application::setTerminalDimensions()/getTerminalDimensions()` - * removed `ConsoleExceptionEvent` - * removed `ConsoleEvents::EXCEPTION` - -3.4.0 ------ - - * added `SHELL_VERBOSITY` env var to control verbosity - * added `CommandLoaderInterface`, `FactoryCommandLoader` and PSR-11 - `ContainerCommandLoader` for commands lazy-loading - * added a case-insensitive command name matching fallback - * added static `Command::$defaultName/getDefaultName()`, allowing for - commands to be registered at compile time in the application command loader. - Setting the `$defaultName` property avoids the need for filling the `command` - attribute on the `console.command` tag when using `AddConsoleCommandPass`. - -3.3.0 ------ - - * added `ExceptionListener` - * added `AddConsoleCommandPass` (originally in FrameworkBundle) - * [BC BREAK] `Input::getOption()` no longer returns the default value for options - with value optional explicitly passed empty - * added console.error event to catch exceptions thrown by other listeners - * deprecated console.exception event in favor of console.error - * added ability to handle `CommandNotFoundException` through the - `console.error` event - * deprecated default validation in `SymfonyQuestionHelper::ask` - -3.2.0 ------- - - * added `setInputs()` method to CommandTester for ease testing of commands expecting inputs - * added `setStream()` and `getStream()` methods to Input (implement StreamableInputInterface) - * added StreamableInputInterface - * added LockableTrait - -3.1.0 ------ - - * added truncate method to FormatterHelper - * added setColumnWidth(s) method to Table - -2.8.3 ------ - - * remove readline support from the question helper as it caused issues - -2.8.0 ------ - - * use readline for user input in the question helper when available to allow - the use of arrow keys - -2.6.0 ------ - - * added a Process helper - * added a DebugFormatter helper - -2.5.0 ------ - - * deprecated the dialog helper (use the question helper instead) - * deprecated TableHelper in favor of Table - * deprecated ProgressHelper in favor of ProgressBar - * added ConsoleLogger - * added a question helper - * added a way to set the process name of a command - * added a way to set a default command instead of `ListCommand` - -2.4.0 ------ - - * added a way to force terminal dimensions - * added a convenient method to detect verbosity level - * [BC BREAK] made descriptors use output instead of returning a string - -2.3.0 ------ - - * added multiselect support to the select dialog helper - * added Table Helper for tabular data rendering - * added support for events in `Application` - * added a way to normalize EOLs in `ApplicationTester::getDisplay()` and `CommandTester::getDisplay()` - * added a way to set the progress bar progress via the `setCurrent` method - * added support for multiple InputOption shortcuts, written as `'-a|-b|-c'` - * added two additional verbosity levels, VERBOSITY_VERY_VERBOSE and VERBOSITY_DEBUG - -2.2.0 ------ - - * added support for colorization on Windows via ConEmu - * add a method to Dialog Helper to ask for a question and hide the response - * added support for interactive selections in console (DialogHelper::select()) - * added support for autocompletion as you type in Dialog Helper - -2.1.0 ------ - - * added ConsoleOutputInterface - * added the possibility to disable a command (Command::isEnabled()) - * added suggestions when a command does not exist - * added a --raw option to the list command - * added support for STDERR in the console output class (errors are now sent - to STDERR) - * made the defaults (helper set, commands, input definition) in Application - more easily customizable - * added support for the shell even if readline is not available - * added support for process isolation in Symfony shell via - `--process-isolation` switch - * added support for `--`, which disables options parsing after that point - (tokens will be parsed as arguments) diff --git a/vendor/symfony/console/CI/GithubActionReporter.php b/vendor/symfony/console/CI/GithubActionReporter.php deleted file mode 100644 index 7e556546..00000000 --- a/vendor/symfony/console/CI/GithubActionReporter.php +++ /dev/null @@ -1,99 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\CI; - -use Symfony\Component\Console\Output\OutputInterface; - -/** - * Utility class for Github actions. - * - * @author Maxime Steinhausser - */ -class GithubActionReporter -{ - private OutputInterface $output; - - /** - * @see https://github.com/actions/toolkit/blob/5e5e1b7aacba68a53836a34db4a288c3c1c1585b/packages/core/src/command.ts#L80-L85 - */ - private const ESCAPED_DATA = [ - '%' => '%25', - "\r" => '%0D', - "\n" => '%0A', - ]; - - /** - * @see https://github.com/actions/toolkit/blob/5e5e1b7aacba68a53836a34db4a288c3c1c1585b/packages/core/src/command.ts#L87-L94 - */ - private const ESCAPED_PROPERTIES = [ - '%' => '%25', - "\r" => '%0D', - "\n" => '%0A', - ':' => '%3A', - ',' => '%2C', - ]; - - public function __construct(OutputInterface $output) - { - $this->output = $output; - } - - public static function isGithubActionEnvironment(): bool - { - return false !== getenv('GITHUB_ACTIONS'); - } - - /** - * Output an error using the Github annotations format. - * - * @see https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-an-error-message - */ - public function error(string $message, string $file = null, int $line = null, int $col = null): void - { - $this->log('error', $message, $file, $line, $col); - } - - /** - * Output a warning using the Github annotations format. - * - * @see https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-a-warning-message - */ - public function warning(string $message, string $file = null, int $line = null, int $col = null): void - { - $this->log('warning', $message, $file, $line, $col); - } - - /** - * Output a debug log using the Github annotations format. - * - * @see https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-a-debug-message - */ - public function debug(string $message, string $file = null, int $line = null, int $col = null): void - { - $this->log('debug', $message, $file, $line, $col); - } - - private function log(string $type, string $message, string $file = null, int $line = null, int $col = null): void - { - // Some values must be encoded. - $message = strtr($message, self::ESCAPED_DATA); - - if (!$file) { - // No file provided, output the message solely: - $this->output->writeln(sprintf('::%s::%s', $type, $message)); - - return; - } - - $this->output->writeln(sprintf('::%s file=%s,line=%s,col=%s::%s', $type, strtr($file, self::ESCAPED_PROPERTIES), strtr($line ?? 1, self::ESCAPED_PROPERTIES), strtr($col ?? 0, self::ESCAPED_PROPERTIES), $message)); - } -} diff --git a/vendor/symfony/console/Color.php b/vendor/symfony/console/Color.php deleted file mode 100644 index 60ed046a..00000000 --- a/vendor/symfony/console/Color.php +++ /dev/null @@ -1,133 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console; - -use Symfony\Component\Console\Exception\InvalidArgumentException; - -/** - * @author Fabien Potencier - */ -final class Color -{ - private const COLORS = [ - 'black' => 0, - 'red' => 1, - 'green' => 2, - 'yellow' => 3, - 'blue' => 4, - 'magenta' => 5, - 'cyan' => 6, - 'white' => 7, - 'default' => 9, - ]; - - private const BRIGHT_COLORS = [ - 'gray' => 0, - 'bright-red' => 1, - 'bright-green' => 2, - 'bright-yellow' => 3, - 'bright-blue' => 4, - 'bright-magenta' => 5, - 'bright-cyan' => 6, - 'bright-white' => 7, - ]; - - private const AVAILABLE_OPTIONS = [ - 'bold' => ['set' => 1, 'unset' => 22], - 'underscore' => ['set' => 4, 'unset' => 24], - 'blink' => ['set' => 5, 'unset' => 25], - 'reverse' => ['set' => 7, 'unset' => 27], - 'conceal' => ['set' => 8, 'unset' => 28], - ]; - - private string $foreground; - private string $background; - private array $options = []; - - public function __construct(string $foreground = '', string $background = '', array $options = []) - { - $this->foreground = $this->parseColor($foreground); - $this->background = $this->parseColor($background, true); - - foreach ($options as $option) { - if (!isset(self::AVAILABLE_OPTIONS[$option])) { - throw new InvalidArgumentException(sprintf('Invalid option specified: "%s". Expected one of (%s).', $option, implode(', ', array_keys(self::AVAILABLE_OPTIONS)))); - } - - $this->options[$option] = self::AVAILABLE_OPTIONS[$option]; - } - } - - public function apply(string $text): string - { - return $this->set().$text.$this->unset(); - } - - public function set(): string - { - $setCodes = []; - if ('' !== $this->foreground) { - $setCodes[] = $this->foreground; - } - if ('' !== $this->background) { - $setCodes[] = $this->background; - } - foreach ($this->options as $option) { - $setCodes[] = $option['set']; - } - if (0 === \count($setCodes)) { - return ''; - } - - return sprintf("\033[%sm", implode(';', $setCodes)); - } - - public function unset(): string - { - $unsetCodes = []; - if ('' !== $this->foreground) { - $unsetCodes[] = 39; - } - if ('' !== $this->background) { - $unsetCodes[] = 49; - } - foreach ($this->options as $option) { - $unsetCodes[] = $option['unset']; - } - if (0 === \count($unsetCodes)) { - return ''; - } - - return sprintf("\033[%sm", implode(';', $unsetCodes)); - } - - private function parseColor(string $color, bool $background = false): string - { - if ('' === $color) { - return ''; - } - - if ('#' === $color[0]) { - return ($background ? '4' : '3').Terminal::getColorMode()->convertFromHexToAnsiColorCode($color); - } - - if (isset(self::COLORS[$color])) { - return ($background ? '4' : '3').self::COLORS[$color]; - } - - if (isset(self::BRIGHT_COLORS[$color])) { - return ($background ? '10' : '9').self::BRIGHT_COLORS[$color]; - } - - throw new InvalidArgumentException(sprintf('Invalid "%s" color; expected one of (%s).', $color, implode(', ', array_merge(array_keys(self::COLORS), array_keys(self::BRIGHT_COLORS))))); - } -} diff --git a/vendor/symfony/console/Command/Command.php b/vendor/symfony/console/Command/Command.php deleted file mode 100644 index 704b112d..00000000 --- a/vendor/symfony/console/Command/Command.php +++ /dev/null @@ -1,725 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Command; - -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Completion\CompletionInput; -use Symfony\Component\Console\Completion\CompletionSuggestions; -use Symfony\Component\Console\Completion\Suggestion; -use Symfony\Component\Console\Exception\ExceptionInterface; -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Exception\LogicException; -use Symfony\Component\Console\Helper\HelperInterface; -use Symfony\Component\Console\Helper\HelperSet; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputDefinition; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * Base class for all commands. - * - * @author Fabien Potencier - */ -class Command -{ - // see https://tldp.org/LDP/abs/html/exitcodes.html - public const SUCCESS = 0; - public const FAILURE = 1; - public const INVALID = 2; - - /** - * @var string|null The default command name - * - * @deprecated since Symfony 6.1, use the AsCommand attribute instead - */ - protected static $defaultName; - - /** - * @var string|null The default command description - * - * @deprecated since Symfony 6.1, use the AsCommand attribute instead - */ - protected static $defaultDescription; - - private ?Application $application = null; - private ?string $name = null; - private ?string $processTitle = null; - private array $aliases = []; - private InputDefinition $definition; - private bool $hidden = false; - private string $help = ''; - private string $description = ''; - private ?InputDefinition $fullDefinition = null; - private bool $ignoreValidationErrors = false; - private ?\Closure $code = null; - private array $synopsis = []; - private array $usages = []; - private ?HelperSet $helperSet = null; - - public static function getDefaultName(): ?string - { - $class = static::class; - - if ($attribute = (new \ReflectionClass($class))->getAttributes(AsCommand::class)) { - return $attribute[0]->newInstance()->name; - } - - $r = new \ReflectionProperty($class, 'defaultName'); - - if ($class !== $r->class || null === static::$defaultName) { - return null; - } - - trigger_deprecation('symfony/console', '6.1', 'Relying on the static property "$defaultName" for setting a command name is deprecated. Add the "%s" attribute to the "%s" class instead.', AsCommand::class, static::class); - - return static::$defaultName; - } - - public static function getDefaultDescription(): ?string - { - $class = static::class; - - if ($attribute = (new \ReflectionClass($class))->getAttributes(AsCommand::class)) { - return $attribute[0]->newInstance()->description; - } - - $r = new \ReflectionProperty($class, 'defaultDescription'); - - if ($class !== $r->class || null === static::$defaultDescription) { - return null; - } - - trigger_deprecation('symfony/console', '6.1', 'Relying on the static property "$defaultDescription" for setting a command description is deprecated. Add the "%s" attribute to the "%s" class instead.', AsCommand::class, static::class); - - return static::$defaultDescription; - } - - /** - * @param string|null $name The name of the command; passing null means it must be set in configure() - * - * @throws LogicException When the command name is empty - */ - public function __construct(string $name = null) - { - $this->definition = new InputDefinition(); - - if (null === $name && null !== $name = static::getDefaultName()) { - $aliases = explode('|', $name); - - if ('' === $name = array_shift($aliases)) { - $this->setHidden(true); - $name = array_shift($aliases); - } - - $this->setAliases($aliases); - } - - if (null !== $name) { - $this->setName($name); - } - - if ('' === $this->description) { - $this->setDescription(static::getDefaultDescription() ?? ''); - } - - $this->configure(); - } - - /** - * Ignores validation errors. - * - * This is mainly useful for the help command. - * - * @return void - */ - public function ignoreValidationErrors() - { - $this->ignoreValidationErrors = true; - } - - /** - * @return void - */ - public function setApplication(Application $application = null) - { - if (1 > \func_num_args()) { - trigger_deprecation('symfony/console', '6.2', 'Calling "%s()" without any arguments is deprecated, pass null explicitly instead.', __METHOD__); - } - $this->application = $application; - if ($application) { - $this->setHelperSet($application->getHelperSet()); - } else { - $this->helperSet = null; - } - - $this->fullDefinition = null; - } - - /** - * @return void - */ - public function setHelperSet(HelperSet $helperSet) - { - $this->helperSet = $helperSet; - } - - /** - * Gets the helper set. - */ - public function getHelperSet(): ?HelperSet - { - return $this->helperSet; - } - - /** - * Gets the application instance for this command. - */ - public function getApplication(): ?Application - { - return $this->application; - } - - /** - * Checks whether the command is enabled or not in the current environment. - * - * Override this to check for x or y and return false if the command cannot - * run properly under the current conditions. - * - * @return bool - */ - public function isEnabled() - { - return true; - } - - /** - * Configures the current command. - * - * @return void - */ - protected function configure() - { - } - - /** - * Executes the current command. - * - * This method is not abstract because you can use this class - * as a concrete class. In this case, instead of defining the - * execute() method, you set the code to execute by passing - * a Closure to the setCode() method. - * - * @return int 0 if everything went fine, or an exit code - * - * @throws LogicException When this abstract method is not implemented - * - * @see setCode() - */ - protected function execute(InputInterface $input, OutputInterface $output) - { - throw new LogicException('You must override the execute() method in the concrete command class.'); - } - - /** - * Interacts with the user. - * - * This method is executed before the InputDefinition is validated. - * This means that this is the only place where the command can - * interactively ask for values of missing required arguments. - * - * @return void - */ - protected function interact(InputInterface $input, OutputInterface $output) - { - } - - /** - * Initializes the command after the input has been bound and before the input - * is validated. - * - * This is mainly useful when a lot of commands extends one main command - * where some things need to be initialized based on the input arguments and options. - * - * @see InputInterface::bind() - * @see InputInterface::validate() - * - * @return void - */ - protected function initialize(InputInterface $input, OutputInterface $output) - { - } - - /** - * Runs the command. - * - * The code to execute is either defined directly with the - * setCode() method or by overriding the execute() method - * in a sub-class. - * - * @return int The command exit code - * - * @throws ExceptionInterface When input binding fails. Bypass this by calling {@link ignoreValidationErrors()}. - * - * @see setCode() - * @see execute() - */ - public function run(InputInterface $input, OutputInterface $output): int - { - // add the application arguments and options - $this->mergeApplicationDefinition(); - - // bind the input against the command specific arguments/options - try { - $input->bind($this->getDefinition()); - } catch (ExceptionInterface $e) { - if (!$this->ignoreValidationErrors) { - throw $e; - } - } - - $this->initialize($input, $output); - - if (null !== $this->processTitle) { - if (\function_exists('cli_set_process_title')) { - if (!@cli_set_process_title($this->processTitle)) { - if ('Darwin' === \PHP_OS) { - $output->writeln('Running "cli_set_process_title" as an unprivileged user is not supported on MacOS.', OutputInterface::VERBOSITY_VERY_VERBOSE); - } else { - cli_set_process_title($this->processTitle); - } - } - } elseif (\function_exists('setproctitle')) { - setproctitle($this->processTitle); - } elseif (OutputInterface::VERBOSITY_VERY_VERBOSE === $output->getVerbosity()) { - $output->writeln('Install the proctitle PECL to be able to change the process title.'); - } - } - - if ($input->isInteractive()) { - $this->interact($input, $output); - } - - // The command name argument is often omitted when a command is executed directly with its run() method. - // It would fail the validation if we didn't make sure the command argument is present, - // since it's required by the application. - if ($input->hasArgument('command') && null === $input->getArgument('command')) { - $input->setArgument('command', $this->getName()); - } - - $input->validate(); - - if ($this->code) { - $statusCode = ($this->code)($input, $output); - } else { - $statusCode = $this->execute($input, $output); - - if (!\is_int($statusCode)) { - throw new \TypeError(sprintf('Return value of "%s::execute()" must be of the type int, "%s" returned.', static::class, get_debug_type($statusCode))); - } - } - - return is_numeric($statusCode) ? (int) $statusCode : 0; - } - - /** - * Adds suggestions to $suggestions for the current completion input (e.g. option or argument). - */ - public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void - { - $definition = $this->getDefinition(); - if (CompletionInput::TYPE_OPTION_VALUE === $input->getCompletionType() && $definition->hasOption($input->getCompletionName())) { - $definition->getOption($input->getCompletionName())->complete($input, $suggestions); - } elseif (CompletionInput::TYPE_ARGUMENT_VALUE === $input->getCompletionType() && $definition->hasArgument($input->getCompletionName())) { - $definition->getArgument($input->getCompletionName())->complete($input, $suggestions); - } - } - - /** - * Sets the code to execute when running this command. - * - * If this method is used, it overrides the code defined - * in the execute() method. - * - * @param callable $code A callable(InputInterface $input, OutputInterface $output) - * - * @return $this - * - * @throws InvalidArgumentException - * - * @see execute() - */ - public function setCode(callable $code): static - { - if ($code instanceof \Closure) { - $r = new \ReflectionFunction($code); - if (null === $r->getClosureThis()) { - set_error_handler(static function () {}); - try { - if ($c = \Closure::bind($code, $this)) { - $code = $c; - } - } finally { - restore_error_handler(); - } - } - } else { - $code = $code(...); - } - - $this->code = $code; - - return $this; - } - - /** - * Merges the application definition with the command definition. - * - * This method is not part of public API and should not be used directly. - * - * @param bool $mergeArgs Whether to merge or not the Application definition arguments to Command definition arguments - * - * @internal - */ - public function mergeApplicationDefinition(bool $mergeArgs = true): void - { - if (null === $this->application) { - return; - } - - $this->fullDefinition = new InputDefinition(); - $this->fullDefinition->setOptions($this->definition->getOptions()); - $this->fullDefinition->addOptions($this->application->getDefinition()->getOptions()); - - if ($mergeArgs) { - $this->fullDefinition->setArguments($this->application->getDefinition()->getArguments()); - $this->fullDefinition->addArguments($this->definition->getArguments()); - } else { - $this->fullDefinition->setArguments($this->definition->getArguments()); - } - } - - /** - * Sets an array of argument and option instances. - * - * @return $this - */ - public function setDefinition(array|InputDefinition $definition): static - { - if ($definition instanceof InputDefinition) { - $this->definition = $definition; - } else { - $this->definition->setDefinition($definition); - } - - $this->fullDefinition = null; - - return $this; - } - - /** - * Gets the InputDefinition attached to this Command. - */ - public function getDefinition(): InputDefinition - { - return $this->fullDefinition ?? $this->getNativeDefinition(); - } - - /** - * Gets the InputDefinition to be used to create representations of this Command. - * - * Can be overridden to provide the original command representation when it would otherwise - * be changed by merging with the application InputDefinition. - * - * This method is not part of public API and should not be used directly. - */ - public function getNativeDefinition(): InputDefinition - { - return $this->definition ?? throw new LogicException(sprintf('Command class "%s" is not correctly initialized. You probably forgot to call the parent constructor.', static::class)); - } - - /** - * Adds an argument. - * - * @param $mode The argument mode: InputArgument::REQUIRED or InputArgument::OPTIONAL - * @param $default The default value (for InputArgument::OPTIONAL mode only) - * @param array|\Closure(CompletionInput,CompletionSuggestions):list $suggestedValues The values used for input completion - * - * @return $this - * - * @throws InvalidArgumentException When argument mode is not valid - */ - public function addArgument(string $name, int $mode = null, string $description = '', mixed $default = null /* array|\Closure $suggestedValues = null */): static - { - $suggestedValues = 5 <= \func_num_args() ? func_get_arg(4) : []; - if (!\is_array($suggestedValues) && !$suggestedValues instanceof \Closure) { - throw new \TypeError(sprintf('Argument 5 passed to "%s()" must be array or \Closure, "%s" given.', __METHOD__, get_debug_type($suggestedValues))); - } - $this->definition->addArgument(new InputArgument($name, $mode, $description, $default, $suggestedValues)); - $this->fullDefinition?->addArgument(new InputArgument($name, $mode, $description, $default, $suggestedValues)); - - return $this; - } - - /** - * Adds an option. - * - * @param $shortcut The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts - * @param $mode The option mode: One of the InputOption::VALUE_* constants - * @param $default The default value (must be null for InputOption::VALUE_NONE) - * @param array|\Closure(CompletionInput,CompletionSuggestions):list $suggestedValues The values used for input completion - * - * @return $this - * - * @throws InvalidArgumentException If option mode is invalid or incompatible - */ - public function addOption(string $name, string|array $shortcut = null, int $mode = null, string $description = '', mixed $default = null /* array|\Closure $suggestedValues = [] */): static - { - $suggestedValues = 6 <= \func_num_args() ? func_get_arg(5) : []; - if (!\is_array($suggestedValues) && !$suggestedValues instanceof \Closure) { - throw new \TypeError(sprintf('Argument 5 passed to "%s()" must be array or \Closure, "%s" given.', __METHOD__, get_debug_type($suggestedValues))); - } - $this->definition->addOption(new InputOption($name, $shortcut, $mode, $description, $default, $suggestedValues)); - $this->fullDefinition?->addOption(new InputOption($name, $shortcut, $mode, $description, $default, $suggestedValues)); - - return $this; - } - - /** - * Sets the name of the command. - * - * This method can set both the namespace and the name if - * you separate them by a colon (:) - * - * $command->setName('foo:bar'); - * - * @return $this - * - * @throws InvalidArgumentException When the name is invalid - */ - public function setName(string $name): static - { - $this->validateName($name); - - $this->name = $name; - - return $this; - } - - /** - * Sets the process title of the command. - * - * This feature should be used only when creating a long process command, - * like a daemon. - * - * @return $this - */ - public function setProcessTitle(string $title): static - { - $this->processTitle = $title; - - return $this; - } - - /** - * Returns the command name. - */ - public function getName(): ?string - { - return $this->name; - } - - /** - * @param bool $hidden Whether or not the command should be hidden from the list of commands - * - * @return $this - */ - public function setHidden(bool $hidden = true): static - { - $this->hidden = $hidden; - - return $this; - } - - /** - * @return bool whether the command should be publicly shown or not - */ - public function isHidden(): bool - { - return $this->hidden; - } - - /** - * Sets the description for the command. - * - * @return $this - */ - public function setDescription(string $description): static - { - $this->description = $description; - - return $this; - } - - /** - * Returns the description for the command. - */ - public function getDescription(): string - { - return $this->description; - } - - /** - * Sets the help for the command. - * - * @return $this - */ - public function setHelp(string $help): static - { - $this->help = $help; - - return $this; - } - - /** - * Returns the help for the command. - */ - public function getHelp(): string - { - return $this->help; - } - - /** - * Returns the processed help for the command replacing the %command.name% and - * %command.full_name% patterns with the real values dynamically. - */ - public function getProcessedHelp(): string - { - $name = $this->name; - $isSingleCommand = $this->application?->isSingleCommand(); - - $placeholders = [ - '%command.name%', - '%command.full_name%', - ]; - $replacements = [ - $name, - $isSingleCommand ? $_SERVER['PHP_SELF'] : $_SERVER['PHP_SELF'].' '.$name, - ]; - - return str_replace($placeholders, $replacements, $this->getHelp() ?: $this->getDescription()); - } - - /** - * Sets the aliases for the command. - * - * @param string[] $aliases An array of aliases for the command - * - * @return $this - * - * @throws InvalidArgumentException When an alias is invalid - */ - public function setAliases(iterable $aliases): static - { - $list = []; - - foreach ($aliases as $alias) { - $this->validateName($alias); - $list[] = $alias; - } - - $this->aliases = \is_array($aliases) ? $aliases : $list; - - return $this; - } - - /** - * Returns the aliases for the command. - */ - public function getAliases(): array - { - return $this->aliases; - } - - /** - * Returns the synopsis for the command. - * - * @param bool $short Whether to show the short version of the synopsis (with options folded) or not - */ - public function getSynopsis(bool $short = false): string - { - $key = $short ? 'short' : 'long'; - - if (!isset($this->synopsis[$key])) { - $this->synopsis[$key] = trim(sprintf('%s %s', $this->name, $this->definition->getSynopsis($short))); - } - - return $this->synopsis[$key]; - } - - /** - * Add a command usage example, it'll be prefixed with the command name. - * - * @return $this - */ - public function addUsage(string $usage): static - { - if (!str_starts_with($usage, $this->name)) { - $usage = sprintf('%s %s', $this->name, $usage); - } - - $this->usages[] = $usage; - - return $this; - } - - /** - * Returns alternative usages of the command. - */ - public function getUsages(): array - { - return $this->usages; - } - - /** - * Gets a helper instance by name. - * - * @return HelperInterface - * - * @throws LogicException if no HelperSet is defined - * @throws InvalidArgumentException if the helper is not defined - */ - public function getHelper(string $name): mixed - { - if (null === $this->helperSet) { - throw new LogicException(sprintf('Cannot retrieve helper "%s" because there is no HelperSet defined. Did you forget to add your command to the application or to set the application on the command using the setApplication() method? You can also set the HelperSet directly using the setHelperSet() method.', $name)); - } - - return $this->helperSet->get($name); - } - - /** - * Validates a command name. - * - * It must be non-empty and parts can optionally be separated by ":". - * - * @throws InvalidArgumentException When the name is invalid - */ - private function validateName(string $name): void - { - if (!preg_match('/^[^\:]++(\:[^\:]++)*$/', $name)) { - throw new InvalidArgumentException(sprintf('Command name "%s" is invalid.', $name)); - } - } -} diff --git a/vendor/symfony/console/Command/CompleteCommand.php b/vendor/symfony/console/Command/CompleteCommand.php deleted file mode 100644 index 23be5577..00000000 --- a/vendor/symfony/console/Command/CompleteCommand.php +++ /dev/null @@ -1,223 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Command; - -use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Completion\CompletionInput; -use Symfony\Component\Console\Completion\CompletionSuggestions; -use Symfony\Component\Console\Completion\Output\BashCompletionOutput; -use Symfony\Component\Console\Completion\Output\CompletionOutputInterface; -use Symfony\Component\Console\Completion\Output\FishCompletionOutput; -use Symfony\Component\Console\Completion\Output\ZshCompletionOutput; -use Symfony\Component\Console\Exception\CommandNotFoundException; -use Symfony\Component\Console\Exception\ExceptionInterface; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * Responsible for providing the values to the shell completion. - * - * @author Wouter de Jong - */ -#[AsCommand(name: '|_complete', description: 'Internal command to provide shell completion suggestions')] -final class CompleteCommand extends Command -{ - public const COMPLETION_API_VERSION = '1'; - - /** - * @deprecated since Symfony 6.1 - */ - protected static $defaultName = '|_complete'; - - /** - * @deprecated since Symfony 6.1 - */ - protected static $defaultDescription = 'Internal command to provide shell completion suggestions'; - - private array $completionOutputs; - - private bool $isDebug = false; - - /** - * @param array> $completionOutputs A list of additional completion outputs, with shell name as key and FQCN as value - */ - public function __construct(array $completionOutputs = []) - { - // must be set before the parent constructor, as the property value is used in configure() - $this->completionOutputs = $completionOutputs + [ - 'bash' => BashCompletionOutput::class, - 'fish' => FishCompletionOutput::class, - 'zsh' => ZshCompletionOutput::class, - ]; - - parent::__construct(); - } - - protected function configure(): void - { - $this - ->addOption('shell', 's', InputOption::VALUE_REQUIRED, 'The shell type ("'.implode('", "', array_keys($this->completionOutputs)).'")') - ->addOption('input', 'i', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'An array of input tokens (e.g. COMP_WORDS or argv)') - ->addOption('current', 'c', InputOption::VALUE_REQUIRED, 'The index of the "input" array that the cursor is in (e.g. COMP_CWORD)') - ->addOption('api-version', 'a', InputOption::VALUE_REQUIRED, 'The API version of the completion script') - ->addOption('symfony', 'S', InputOption::VALUE_REQUIRED, 'deprecated') - ; - } - - protected function initialize(InputInterface $input, OutputInterface $output): void - { - $this->isDebug = filter_var(getenv('SYMFONY_COMPLETION_DEBUG'), \FILTER_VALIDATE_BOOL); - } - - protected function execute(InputInterface $input, OutputInterface $output): int - { - try { - // "symfony" must be kept for compat with the shell scripts generated by Symfony Console 5.4 - 6.1 - $version = $input->getOption('symfony') ? '1' : $input->getOption('api-version'); - if ($version && version_compare($version, self::COMPLETION_API_VERSION, '<')) { - $message = sprintf('Completion script version is not supported ("%s" given, ">=%s" required).', $version, self::COMPLETION_API_VERSION); - $this->log($message); - - $output->writeln($message.' Install the Symfony completion script again by using the "completion" command.'); - - return 126; - } - - $shell = $input->getOption('shell'); - if (!$shell) { - throw new \RuntimeException('The "--shell" option must be set.'); - } - - if (!$completionOutput = $this->completionOutputs[$shell] ?? false) { - throw new \RuntimeException(sprintf('Shell completion is not supported for your shell: "%s" (supported: "%s").', $shell, implode('", "', array_keys($this->completionOutputs)))); - } - - $completionInput = $this->createCompletionInput($input); - $suggestions = new CompletionSuggestions(); - - $this->log([ - '', - ''.date('Y-m-d H:i:s').'', - 'Input: ("|" indicates the cursor position)', - ' '.(string) $completionInput, - 'Command:', - ' '.(string) implode(' ', $_SERVER['argv']), - 'Messages:', - ]); - - $command = $this->findCommand($completionInput, $output); - if (null === $command) { - $this->log(' No command found, completing using the Application class.'); - - $this->getApplication()->complete($completionInput, $suggestions); - } elseif ( - $completionInput->mustSuggestArgumentValuesFor('command') - && $command->getName() !== $completionInput->getCompletionValue() - && !\in_array($completionInput->getCompletionValue(), $command->getAliases(), true) - ) { - $this->log(' No command found, completing using the Application class.'); - - // expand shortcut names ("cache:cl") into their full name ("cache:clear") - $suggestions->suggestValues(array_filter(array_merge([$command->getName()], $command->getAliases()))); - } else { - $command->mergeApplicationDefinition(); - $completionInput->bind($command->getDefinition()); - - if (CompletionInput::TYPE_OPTION_NAME === $completionInput->getCompletionType()) { - $this->log(' Completing option names for the '.($command instanceof LazyCommand ? $command->getCommand() : $command)::class.' command.'); - - $suggestions->suggestOptions($command->getDefinition()->getOptions()); - } else { - $this->log([ - ' Completing using the '.($command instanceof LazyCommand ? $command->getCommand() : $command)::class.' class.', - ' Completing '.$completionInput->getCompletionType().' for '.$completionInput->getCompletionName().'', - ]); - if (null !== $compval = $completionInput->getCompletionValue()) { - $this->log(' Current value: '.$compval.''); - } - - $command->complete($completionInput, $suggestions); - } - } - - /** @var CompletionOutputInterface $completionOutput */ - $completionOutput = new $completionOutput(); - - $this->log('Suggestions:'); - if ($options = $suggestions->getOptionSuggestions()) { - $this->log(' --'.implode(' --', array_map(fn ($o) => $o->getName(), $options))); - } elseif ($values = $suggestions->getValueSuggestions()) { - $this->log(' '.implode(' ', $values)); - } else { - $this->log(' No suggestions were provided'); - } - - $completionOutput->write($suggestions, $output); - } catch (\Throwable $e) { - $this->log([ - 'Error!', - (string) $e, - ]); - - if ($output->isDebug()) { - throw $e; - } - - return 2; - } - - return 0; - } - - private function createCompletionInput(InputInterface $input): CompletionInput - { - $currentIndex = $input->getOption('current'); - if (!$currentIndex || !ctype_digit($currentIndex)) { - throw new \RuntimeException('The "--current" option must be set and it must be an integer.'); - } - - $completionInput = CompletionInput::fromTokens($input->getOption('input'), (int) $currentIndex); - - try { - $completionInput->bind($this->getApplication()->getDefinition()); - } catch (ExceptionInterface) { - } - - return $completionInput; - } - - private function findCommand(CompletionInput $completionInput, OutputInterface $output): ?Command - { - try { - $inputName = $completionInput->getFirstArgument(); - if (null === $inputName) { - return null; - } - - return $this->getApplication()->find($inputName); - } catch (CommandNotFoundException) { - } - - return null; - } - - private function log($messages): void - { - if (!$this->isDebug) { - return; - } - - $commandName = basename($_SERVER['argv'][0]); - file_put_contents(sys_get_temp_dir().'/sf_'.$commandName.'.log', implode(\PHP_EOL, (array) $messages).\PHP_EOL, \FILE_APPEND); - } -} diff --git a/vendor/symfony/console/Command/DumpCompletionCommand.php b/vendor/symfony/console/Command/DumpCompletionCommand.php deleted file mode 100644 index 51b613a1..00000000 --- a/vendor/symfony/console/Command/DumpCompletionCommand.php +++ /dev/null @@ -1,161 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Command; - -use Symfony\Component\Console\Attribute\AsCommand; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Process\Process; - -/** - * Dumps the completion script for the current shell. - * - * @author Wouter de Jong - */ -#[AsCommand(name: 'completion', description: 'Dump the shell completion script')] -final class DumpCompletionCommand extends Command -{ - /** - * @deprecated since Symfony 6.1 - */ - protected static $defaultName = 'completion'; - - /** - * @deprecated since Symfony 6.1 - */ - protected static $defaultDescription = 'Dump the shell completion script'; - - private array $supportedShells; - - protected function configure(): void - { - $fullCommand = $_SERVER['PHP_SELF']; - $commandName = basename($fullCommand); - $fullCommand = @realpath($fullCommand) ?: $fullCommand; - - $shell = $this->guessShell(); - [$rcFile, $completionFile] = match ($shell) { - 'fish' => ['~/.config/fish/config.fish', "/etc/fish/completions/$commandName.fish"], - 'zsh' => ['~/.zshrc', '$fpath[1]/_'.$commandName], - default => ['~/.bashrc', "/etc/bash_completion.d/$commandName"], - }; - - $supportedShells = implode(', ', $this->getSupportedShells()); - - $this - ->setHelp(<<%command.name% command dumps the shell completion script required -to use shell autocompletion (currently, {$supportedShells} completion are supported). - -Static installation -------------------- - -Dump the script to a global completion file and restart your shell: - - %command.full_name% {$shell} | sudo tee {$completionFile} - -Or dump the script to a local file and source it: - - %command.full_name% {$shell} > completion.sh - - # source the file whenever you use the project - source completion.sh - - # or add this line at the end of your "{$rcFile}" file: - source /path/to/completion.sh - -Dynamic installation --------------------- - -Add this to the end of your shell configuration file (e.g. "{$rcFile}"): - - eval "$({$fullCommand} completion {$shell})" -EOH - ) - ->addArgument('shell', InputArgument::OPTIONAL, 'The shell type (e.g. "bash"), the value of the "$SHELL" env var will be used if this is not given', null, $this->getSupportedShells(...)) - ->addOption('debug', null, InputOption::VALUE_NONE, 'Tail the completion debug log') - ; - } - - protected function execute(InputInterface $input, OutputInterface $output): int - { - $commandName = basename($_SERVER['argv'][0]); - - if ($input->getOption('debug')) { - $this->tailDebugLog($commandName, $output); - - return 0; - } - - $shell = $input->getArgument('shell') ?? self::guessShell(); - $completionFile = __DIR__.'/../Resources/completion.'.$shell; - if (!file_exists($completionFile)) { - $supportedShells = $this->getSupportedShells(); - - if ($output instanceof ConsoleOutputInterface) { - $output = $output->getErrorOutput(); - } - if ($shell) { - $output->writeln(sprintf('Detected shell "%s", which is not supported by Symfony shell completion (supported shells: "%s").', $shell, implode('", "', $supportedShells))); - } else { - $output->writeln(sprintf('Shell not detected, Symfony shell completion only supports "%s").', implode('", "', $supportedShells))); - } - - return 2; - } - - $output->write(str_replace(['{{ COMMAND_NAME }}', '{{ VERSION }}'], [$commandName, CompleteCommand::COMPLETION_API_VERSION], file_get_contents($completionFile))); - - return 0; - } - - private static function guessShell(): string - { - return basename($_SERVER['SHELL'] ?? ''); - } - - private function tailDebugLog(string $commandName, OutputInterface $output): void - { - $debugFile = sys_get_temp_dir().'/sf_'.$commandName.'.log'; - if (!file_exists($debugFile)) { - touch($debugFile); - } - $process = new Process(['tail', '-f', $debugFile], null, null, null, 0); - $process->run(function (string $type, string $line) use ($output): void { - $output->write($line); - }); - } - - /** - * @return string[] - */ - private function getSupportedShells(): array - { - if (isset($this->supportedShells)) { - return $this->supportedShells; - } - - $shells = []; - - foreach (new \DirectoryIterator(__DIR__.'/../Resources/') as $file) { - if (str_starts_with($file->getBasename(), 'completion.') && $file->isFile()) { - $shells[] = $file->getExtension(); - } - } - sort($shells); - - return $this->supportedShells = $shells; - } -} diff --git a/vendor/symfony/console/Command/HelpCommand.php b/vendor/symfony/console/Command/HelpCommand.php deleted file mode 100644 index e6447b05..00000000 --- a/vendor/symfony/console/Command/HelpCommand.php +++ /dev/null @@ -1,82 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Command; - -use Symfony\Component\Console\Descriptor\ApplicationDescription; -use Symfony\Component\Console\Helper\DescriptorHelper; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * HelpCommand displays the help for a given command. - * - * @author Fabien Potencier - */ -class HelpCommand extends Command -{ - private Command $command; - - /** - * @return void - */ - protected function configure() - { - $this->ignoreValidationErrors(); - - $this - ->setName('help') - ->setDefinition([ - new InputArgument('command_name', InputArgument::OPTIONAL, 'The command name', 'help', fn () => array_keys((new ApplicationDescription($this->getApplication()))->getCommands())), - new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt', fn () => (new DescriptorHelper())->getFormats()), - new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command help'), - ]) - ->setDescription('Display help for a command') - ->setHelp(<<<'EOF' -The %command.name% command displays help for a given command: - - %command.full_name% list - -You can also output the help in other formats by using the --format option: - - %command.full_name% --format=xml list - -To display the list of available commands, please use the list command. -EOF - ) - ; - } - - /** - * @return void - */ - public function setCommand(Command $command) - { - $this->command = $command; - } - - protected function execute(InputInterface $input, OutputInterface $output): int - { - $this->command ??= $this->getApplication()->find($input->getArgument('command_name')); - - $helper = new DescriptorHelper(); - $helper->describe($output, $this->command, [ - 'format' => $input->getOption('format'), - 'raw_text' => $input->getOption('raw'), - ]); - - unset($this->command); - - return 0; - } -} diff --git a/vendor/symfony/console/Command/LazyCommand.php b/vendor/symfony/console/Command/LazyCommand.php deleted file mode 100644 index d5605822..00000000 --- a/vendor/symfony/console/Command/LazyCommand.php +++ /dev/null @@ -1,207 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Command; - -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Completion\CompletionInput; -use Symfony\Component\Console\Completion\CompletionSuggestions; -use Symfony\Component\Console\Completion\Suggestion; -use Symfony\Component\Console\Helper\HelperInterface; -use Symfony\Component\Console\Helper\HelperSet; -use Symfony\Component\Console\Input\InputDefinition; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Nicolas Grekas - */ -final class LazyCommand extends Command -{ - private \Closure|Command $command; - private ?bool $isEnabled; - - public function __construct(string $name, array $aliases, string $description, bool $isHidden, \Closure $commandFactory, ?bool $isEnabled = true) - { - $this->setName($name) - ->setAliases($aliases) - ->setHidden($isHidden) - ->setDescription($description); - - $this->command = $commandFactory; - $this->isEnabled = $isEnabled; - } - - public function ignoreValidationErrors(): void - { - $this->getCommand()->ignoreValidationErrors(); - } - - public function setApplication(Application $application = null): void - { - if (1 > \func_num_args()) { - trigger_deprecation('symfony/console', '6.2', 'Calling "%s()" without any arguments is deprecated, pass null explicitly instead.', __METHOD__); - } - if ($this->command instanceof parent) { - $this->command->setApplication($application); - } - - parent::setApplication($application); - } - - public function setHelperSet(HelperSet $helperSet): void - { - if ($this->command instanceof parent) { - $this->command->setHelperSet($helperSet); - } - - parent::setHelperSet($helperSet); - } - - public function isEnabled(): bool - { - return $this->isEnabled ?? $this->getCommand()->isEnabled(); - } - - public function run(InputInterface $input, OutputInterface $output): int - { - return $this->getCommand()->run($input, $output); - } - - public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void - { - $this->getCommand()->complete($input, $suggestions); - } - - public function setCode(callable $code): static - { - $this->getCommand()->setCode($code); - - return $this; - } - - /** - * @internal - */ - public function mergeApplicationDefinition(bool $mergeArgs = true): void - { - $this->getCommand()->mergeApplicationDefinition($mergeArgs); - } - - public function setDefinition(array|InputDefinition $definition): static - { - $this->getCommand()->setDefinition($definition); - - return $this; - } - - public function getDefinition(): InputDefinition - { - return $this->getCommand()->getDefinition(); - } - - public function getNativeDefinition(): InputDefinition - { - return $this->getCommand()->getNativeDefinition(); - } - - /** - * @param array|\Closure(CompletionInput,CompletionSuggestions):list $suggestedValues The values used for input completion - */ - public function addArgument(string $name, int $mode = null, string $description = '', mixed $default = null /* array|\Closure $suggestedValues = [] */): static - { - $suggestedValues = 5 <= \func_num_args() ? func_get_arg(4) : []; - $this->getCommand()->addArgument($name, $mode, $description, $default, $suggestedValues); - - return $this; - } - - /** - * @param array|\Closure(CompletionInput,CompletionSuggestions):list $suggestedValues The values used for input completion - */ - public function addOption(string $name, string|array $shortcut = null, int $mode = null, string $description = '', mixed $default = null /* array|\Closure $suggestedValues = [] */): static - { - $suggestedValues = 6 <= \func_num_args() ? func_get_arg(5) : []; - $this->getCommand()->addOption($name, $shortcut, $mode, $description, $default, $suggestedValues); - - return $this; - } - - public function setProcessTitle(string $title): static - { - $this->getCommand()->setProcessTitle($title); - - return $this; - } - - public function setHelp(string $help): static - { - $this->getCommand()->setHelp($help); - - return $this; - } - - public function getHelp(): string - { - return $this->getCommand()->getHelp(); - } - - public function getProcessedHelp(): string - { - return $this->getCommand()->getProcessedHelp(); - } - - public function getSynopsis(bool $short = false): string - { - return $this->getCommand()->getSynopsis($short); - } - - public function addUsage(string $usage): static - { - $this->getCommand()->addUsage($usage); - - return $this; - } - - public function getUsages(): array - { - return $this->getCommand()->getUsages(); - } - - public function getHelper(string $name): HelperInterface - { - return $this->getCommand()->getHelper($name); - } - - public function getCommand(): parent - { - if (!$this->command instanceof \Closure) { - return $this->command; - } - - $command = $this->command = ($this->command)(); - $command->setApplication($this->getApplication()); - - if (null !== $this->getHelperSet()) { - $command->setHelperSet($this->getHelperSet()); - } - - $command->setName($this->getName()) - ->setAliases($this->getAliases()) - ->setHidden($this->isHidden()) - ->setDescription($this->getDescription()); - - // Will throw if the command is not correctly initialized. - $command->getDefinition(); - - return $command; - } -} diff --git a/vendor/symfony/console/Command/ListCommand.php b/vendor/symfony/console/Command/ListCommand.php deleted file mode 100644 index 5850c3d7..00000000 --- a/vendor/symfony/console/Command/ListCommand.php +++ /dev/null @@ -1,75 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Command; - -use Symfony\Component\Console\Descriptor\ApplicationDescription; -use Symfony\Component\Console\Helper\DescriptorHelper; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * ListCommand displays the list of all available commands for the application. - * - * @author Fabien Potencier - */ -class ListCommand extends Command -{ - /** - * @return void - */ - protected function configure() - { - $this - ->setName('list') - ->setDefinition([ - new InputArgument('namespace', InputArgument::OPTIONAL, 'The namespace name', null, fn () => array_keys((new ApplicationDescription($this->getApplication()))->getNamespaces())), - new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command list'), - new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt', fn () => (new DescriptorHelper())->getFormats()), - new InputOption('short', null, InputOption::VALUE_NONE, 'To skip describing commands\' arguments'), - ]) - ->setDescription('List commands') - ->setHelp(<<<'EOF' -The %command.name% command lists all commands: - - %command.full_name% - -You can also display the commands for a specific namespace: - - %command.full_name% test - -You can also output the information in other formats by using the --format option: - - %command.full_name% --format=xml - -It's also possible to get raw list of commands (useful for embedding command runner): - - %command.full_name% --raw -EOF - ) - ; - } - - protected function execute(InputInterface $input, OutputInterface $output): int - { - $helper = new DescriptorHelper(); - $helper->describe($output, $this->getApplication(), [ - 'format' => $input->getOption('format'), - 'raw_text' => $input->getOption('raw'), - 'namespace' => $input->getArgument('namespace'), - 'short' => $input->getOption('short'), - ]); - - return 0; - } -} diff --git a/vendor/symfony/console/Command/LockableTrait.php b/vendor/symfony/console/Command/LockableTrait.php deleted file mode 100644 index c1006a65..00000000 --- a/vendor/symfony/console/Command/LockableTrait.php +++ /dev/null @@ -1,68 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Command; - -use Symfony\Component\Console\Exception\LogicException; -use Symfony\Component\Lock\LockFactory; -use Symfony\Component\Lock\LockInterface; -use Symfony\Component\Lock\Store\FlockStore; -use Symfony\Component\Lock\Store\SemaphoreStore; - -/** - * Basic lock feature for commands. - * - * @author Geoffrey Brier - */ -trait LockableTrait -{ - private ?LockInterface $lock = null; - - /** - * Locks a command. - */ - private function lock(string $name = null, bool $blocking = false): bool - { - if (!class_exists(SemaphoreStore::class)) { - throw new LogicException('To enable the locking feature you must install the symfony/lock component. Try running "composer require symfony/lock".'); - } - - if (null !== $this->lock) { - throw new LogicException('A lock is already in place.'); - } - - if (SemaphoreStore::isSupported()) { - $store = new SemaphoreStore(); - } else { - $store = new FlockStore(); - } - - $this->lock = (new LockFactory($store))->createLock($name ?: $this->getName()); - if (!$this->lock->acquire($blocking)) { - $this->lock = null; - - return false; - } - - return true; - } - - /** - * Releases the command lock if there is one. - */ - private function release(): void - { - if ($this->lock) { - $this->lock->release(); - $this->lock = null; - } - } -} diff --git a/vendor/symfony/console/Command/SignalableCommandInterface.php b/vendor/symfony/console/Command/SignalableCommandInterface.php deleted file mode 100644 index f8eb8e52..00000000 --- a/vendor/symfony/console/Command/SignalableCommandInterface.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Command; - -/** - * Interface for command reacting to signal. - * - * @author Grégoire Pineau - */ -interface SignalableCommandInterface -{ - /** - * Returns the list of signals to subscribe. - */ - public function getSubscribedSignals(): array; - - /** - * The method will be called when the application is signaled. - * - * @param int|false $previousExitCode - * - * @return int|false The exit code to return or false to continue the normal execution - */ - public function handleSignal(int $signal, /* int|false $previousExitCode = 0 */); -} diff --git a/vendor/symfony/console/Command/TraceableCommand.php b/vendor/symfony/console/Command/TraceableCommand.php deleted file mode 100644 index d8c46b7f..00000000 --- a/vendor/symfony/console/Command/TraceableCommand.php +++ /dev/null @@ -1,356 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Command; - -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Completion\CompletionInput; -use Symfony\Component\Console\Completion\CompletionSuggestions; -use Symfony\Component\Console\Helper\HelperInterface; -use Symfony\Component\Console\Helper\HelperSet; -use Symfony\Component\Console\Input\InputDefinition; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Stopwatch\Stopwatch; - -/** - * @internal - * - * @author Jules Pietri - */ -final class TraceableCommand extends Command implements SignalableCommandInterface -{ - public readonly Command $command; - public int $exitCode; - public ?int $interruptedBySignal = null; - public bool $ignoreValidation; - public bool $isInteractive = false; - public string $duration = 'n/a'; - public string $maxMemoryUsage = 'n/a'; - public InputInterface $input; - public OutputInterface $output; - /** @var array */ - public array $arguments; - /** @var array */ - public array $options; - /** @var array */ - public array $interactiveInputs = []; - public array $handledSignals = []; - - public function __construct( - Command $command, - private readonly Stopwatch $stopwatch, - ) { - if ($command instanceof LazyCommand) { - $command = $command->getCommand(); - } - - $this->command = $command; - - // prevent call to self::getDefaultDescription() - $this->setDescription($command->getDescription()); - - parent::__construct($command->getName()); - - // init below enables calling {@see parent::run()} - [$code, $processTitle, $ignoreValidationErrors] = \Closure::bind(function () { - return [$this->code, $this->processTitle, $this->ignoreValidationErrors]; - }, $command, Command::class)(); - - if (\is_callable($code)) { - $this->setCode($code); - } - - if ($processTitle) { - parent::setProcessTitle($processTitle); - } - - if ($ignoreValidationErrors) { - parent::ignoreValidationErrors(); - } - - $this->ignoreValidation = $ignoreValidationErrors; - } - - public function __call(string $name, array $arguments): mixed - { - return $this->command->{$name}(...$arguments); - } - - public function getSubscribedSignals(): array - { - return $this->command instanceof SignalableCommandInterface ? $this->command->getSubscribedSignals() : []; - } - - public function handleSignal(int $signal, int|false $previousExitCode = 0): int|false - { - if (!$this->command instanceof SignalableCommandInterface) { - return false; - } - - $event = $this->stopwatch->start($this->getName().'.handle_signal'); - - $exit = $this->command->handleSignal($signal, $previousExitCode); - - $event->stop(); - - if (!isset($this->handledSignals[$signal])) { - $this->handledSignals[$signal] = [ - 'handled' => 0, - 'duration' => 0, - 'memory' => 0, - ]; - } - - ++$this->handledSignals[$signal]['handled']; - $this->handledSignals[$signal]['duration'] += $event->getDuration(); - $this->handledSignals[$signal]['memory'] = max( - $this->handledSignals[$signal]['memory'], - $event->getMemory() >> 20 - ); - - return $exit; - } - - /** - * {@inheritdoc} - * - * Calling parent method is required to be used in {@see parent::run()}. - */ - public function ignoreValidationErrors(): void - { - $this->ignoreValidation = true; - $this->command->ignoreValidationErrors(); - - parent::ignoreValidationErrors(); - } - - public function setApplication(Application $application = null): void - { - $this->command->setApplication($application); - } - - public function getApplication(): ?Application - { - return $this->command->getApplication(); - } - - public function setHelperSet(HelperSet $helperSet): void - { - $this->command->setHelperSet($helperSet); - } - - public function getHelperSet(): ?HelperSet - { - return $this->command->getHelperSet(); - } - - public function isEnabled(): bool - { - return $this->command->isEnabled(); - } - - public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void - { - $this->command->complete($input, $suggestions); - } - - /** - * {@inheritdoc} - * - * Calling parent method is required to be used in {@see parent::run()}. - */ - public function setCode(callable $code): static - { - $this->command->setCode($code); - - return parent::setCode(function (InputInterface $input, OutputInterface $output) use ($code): int { - $event = $this->stopwatch->start($this->getName().'.code'); - - $this->exitCode = $code($input, $output); - - $event->stop(); - - return $this->exitCode; - }); - } - - /** - * @internal - */ - public function mergeApplicationDefinition(bool $mergeArgs = true): void - { - $this->command->mergeApplicationDefinition($mergeArgs); - } - - public function setDefinition(array|InputDefinition $definition): static - { - $this->command->setDefinition($definition); - - return $this; - } - - public function getDefinition(): InputDefinition - { - return $this->command->getDefinition(); - } - - public function getNativeDefinition(): InputDefinition - { - return $this->command->getNativeDefinition(); - } - - public function addArgument(string $name, int $mode = null, string $description = '', mixed $default = null, array|\Closure $suggestedValues = []): static - { - $this->command->addArgument($name, $mode, $description, $default, $suggestedValues); - - return $this; - } - - public function addOption(string $name, string|array $shortcut = null, int $mode = null, string $description = '', mixed $default = null, array|\Closure $suggestedValues = []): static - { - $this->command->addOption($name, $shortcut, $mode, $description, $default, $suggestedValues); - - return $this; - } - - /** - * {@inheritdoc} - * - * Calling parent method is required to be used in {@see parent::run()}. - */ - public function setProcessTitle(string $title): static - { - $this->command->setProcessTitle($title); - - return parent::setProcessTitle($title); - } - - public function setHelp(string $help): static - { - $this->command->setHelp($help); - - return $this; - } - - public function getHelp(): string - { - return $this->command->getHelp(); - } - - public function getProcessedHelp(): string - { - return $this->command->getProcessedHelp(); - } - - public function getSynopsis(bool $short = false): string - { - return $this->command->getSynopsis($short); - } - - public function addUsage(string $usage): static - { - $this->command->addUsage($usage); - - return $this; - } - - public function getUsages(): array - { - return $this->command->getUsages(); - } - - public function getHelper(string $name): HelperInterface - { - return $this->command->getHelper($name); - } - - public function run(InputInterface $input, OutputInterface $output): int - { - $this->input = $input; - $this->output = $output; - $this->arguments = $input->getArguments(); - $this->options = $input->getOptions(); - $event = $this->stopwatch->start($this->getName(), 'command'); - - try { - $this->exitCode = parent::run($input, $output); - } finally { - $event->stop(); - - if ($output instanceof ConsoleOutputInterface && $output->isDebug()) { - $output->getErrorOutput()->writeln((string) $event); - } - - $this->duration = $event->getDuration().' ms'; - $this->maxMemoryUsage = ($event->getMemory() >> 20).' MiB'; - - if ($this->isInteractive) { - $this->extractInteractiveInputs($input->getArguments(), $input->getOptions()); - } - } - - return $this->exitCode; - } - - protected function initialize(InputInterface $input, OutputInterface $output): void - { - $event = $this->stopwatch->start($this->getName().'.init', 'command'); - - $this->command->initialize($input, $output); - - $event->stop(); - } - - protected function interact(InputInterface $input, OutputInterface $output): void - { - if (!$this->isInteractive = Command::class !== (new \ReflectionMethod($this->command, 'interact'))->getDeclaringClass()->getName()) { - return; - } - - $event = $this->stopwatch->start($this->getName().'.interact', 'command'); - - $this->command->interact($input, $output); - - $event->stop(); - } - - protected function execute(InputInterface $input, OutputInterface $output): int - { - $event = $this->stopwatch->start($this->getName().'.execute', 'command'); - - $exitCode = $this->command->execute($input, $output); - - $event->stop(); - - return $exitCode; - } - - private function extractInteractiveInputs(array $arguments, array $options): void - { - foreach ($arguments as $argName => $argValue) { - if (\array_key_exists($argName, $this->arguments) && $this->arguments[$argName] === $argValue) { - continue; - } - - $this->interactiveInputs[$argName] = $argValue; - } - - foreach ($options as $optName => $optValue) { - if (\array_key_exists($optName, $this->options) && $this->options[$optName] === $optValue) { - continue; - } - - $this->interactiveInputs['--'.$optName] = $optValue; - } - } -} diff --git a/vendor/symfony/console/CommandLoader/CommandLoaderInterface.php b/vendor/symfony/console/CommandLoader/CommandLoaderInterface.php deleted file mode 100644 index b6b637ce..00000000 --- a/vendor/symfony/console/CommandLoader/CommandLoaderInterface.php +++ /dev/null @@ -1,38 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\CommandLoader; - -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Exception\CommandNotFoundException; - -/** - * @author Robin Chalas - */ -interface CommandLoaderInterface -{ - /** - * Loads a command. - * - * @throws CommandNotFoundException - */ - public function get(string $name): Command; - - /** - * Checks if a command exists. - */ - public function has(string $name): bool; - - /** - * @return string[] - */ - public function getNames(): array; -} diff --git a/vendor/symfony/console/CommandLoader/ContainerCommandLoader.php b/vendor/symfony/console/CommandLoader/ContainerCommandLoader.php deleted file mode 100644 index bfa0ac46..00000000 --- a/vendor/symfony/console/CommandLoader/ContainerCommandLoader.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\CommandLoader; - -use Psr\Container\ContainerInterface; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Exception\CommandNotFoundException; - -/** - * Loads commands from a PSR-11 container. - * - * @author Robin Chalas - */ -class ContainerCommandLoader implements CommandLoaderInterface -{ - private ContainerInterface $container; - private array $commandMap; - - /** - * @param array $commandMap An array with command names as keys and service ids as values - */ - public function __construct(ContainerInterface $container, array $commandMap) - { - $this->container = $container; - $this->commandMap = $commandMap; - } - - public function get(string $name): Command - { - if (!$this->has($name)) { - throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name)); - } - - return $this->container->get($this->commandMap[$name]); - } - - public function has(string $name): bool - { - return isset($this->commandMap[$name]) && $this->container->has($this->commandMap[$name]); - } - - public function getNames(): array - { - return array_keys($this->commandMap); - } -} diff --git a/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php b/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php deleted file mode 100644 index 9ced75ae..00000000 --- a/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\CommandLoader; - -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Exception\CommandNotFoundException; - -/** - * A simple command loader using factories to instantiate commands lazily. - * - * @author Maxime Steinhausser - */ -class FactoryCommandLoader implements CommandLoaderInterface -{ - private array $factories; - - /** - * @param callable[] $factories Indexed by command names - */ - public function __construct(array $factories) - { - $this->factories = $factories; - } - - public function has(string $name): bool - { - return isset($this->factories[$name]); - } - - public function get(string $name): Command - { - if (!isset($this->factories[$name])) { - throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name)); - } - - $factory = $this->factories[$name]; - - return $factory(); - } - - public function getNames(): array - { - return array_keys($this->factories); - } -} diff --git a/vendor/symfony/console/Completion/CompletionInput.php b/vendor/symfony/console/Completion/CompletionInput.php deleted file mode 100644 index 7ba41c08..00000000 --- a/vendor/symfony/console/Completion/CompletionInput.php +++ /dev/null @@ -1,248 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Completion; - -use Symfony\Component\Console\Exception\RuntimeException; -use Symfony\Component\Console\Input\ArgvInput; -use Symfony\Component\Console\Input\InputDefinition; -use Symfony\Component\Console\Input\InputOption; - -/** - * An input specialized for shell completion. - * - * This input allows unfinished option names or values and exposes what kind of - * completion is expected. - * - * @author Wouter de Jong - */ -final class CompletionInput extends ArgvInput -{ - public const TYPE_ARGUMENT_VALUE = 'argument_value'; - public const TYPE_OPTION_VALUE = 'option_value'; - public const TYPE_OPTION_NAME = 'option_name'; - public const TYPE_NONE = 'none'; - - private array $tokens; - private int $currentIndex; - private string $completionType; - private ?string $completionName = null; - private string $completionValue = ''; - - /** - * Converts a terminal string into tokens. - * - * This is required for shell completions without COMP_WORDS support. - */ - public static function fromString(string $inputStr, int $currentIndex): self - { - preg_match_all('/(?<=^|\s)([\'"]?)(.+?)(?tokens = $tokens; - $input->currentIndex = $currentIndex; - - return $input; - } - - public function bind(InputDefinition $definition): void - { - parent::bind($definition); - - $relevantToken = $this->getRelevantToken(); - if ('-' === $relevantToken[0]) { - // the current token is an input option: complete either option name or option value - [$optionToken, $optionValue] = explode('=', $relevantToken, 2) + ['', '']; - - $option = $this->getOptionFromToken($optionToken); - if (null === $option && !$this->isCursorFree()) { - $this->completionType = self::TYPE_OPTION_NAME; - $this->completionValue = $relevantToken; - - return; - } - - if ($option?->acceptValue()) { - $this->completionType = self::TYPE_OPTION_VALUE; - $this->completionName = $option->getName(); - $this->completionValue = $optionValue ?: (!str_starts_with($optionToken, '--') ? substr($optionToken, 2) : ''); - - return; - } - } - - $previousToken = $this->tokens[$this->currentIndex - 1]; - if ('-' === $previousToken[0] && '' !== trim($previousToken, '-')) { - // check if previous option accepted a value - $previousOption = $this->getOptionFromToken($previousToken); - if ($previousOption?->acceptValue()) { - $this->completionType = self::TYPE_OPTION_VALUE; - $this->completionName = $previousOption->getName(); - $this->completionValue = $relevantToken; - - return; - } - } - - // complete argument value - $this->completionType = self::TYPE_ARGUMENT_VALUE; - - foreach ($this->definition->getArguments() as $argumentName => $argument) { - if (!isset($this->arguments[$argumentName])) { - break; - } - - $argumentValue = $this->arguments[$argumentName]; - $this->completionName = $argumentName; - if (\is_array($argumentValue)) { - $this->completionValue = $argumentValue ? $argumentValue[array_key_last($argumentValue)] : null; - } else { - $this->completionValue = $argumentValue; - } - } - - if ($this->currentIndex >= \count($this->tokens)) { - if (!isset($this->arguments[$argumentName]) || $this->definition->getArgument($argumentName)->isArray()) { - $this->completionName = $argumentName; - $this->completionValue = ''; - } else { - // we've reached the end - $this->completionType = self::TYPE_NONE; - $this->completionName = null; - $this->completionValue = ''; - } - } - } - - /** - * Returns the type of completion required. - * - * TYPE_ARGUMENT_VALUE when completing the value of an input argument - * TYPE_OPTION_VALUE when completing the value of an input option - * TYPE_OPTION_NAME when completing the name of an input option - * TYPE_NONE when nothing should be completed - * - * TYPE_OPTION_NAME and TYPE_NONE are already implemented by the Console component. - * - * @return self::TYPE_* - */ - public function getCompletionType(): string - { - return $this->completionType; - } - - /** - * The name of the input option or argument when completing a value. - * - * @return string|null returns null when completing an option name - */ - public function getCompletionName(): ?string - { - return $this->completionName; - } - - /** - * The value already typed by the user (or empty string). - */ - public function getCompletionValue(): string - { - return $this->completionValue; - } - - public function mustSuggestOptionValuesFor(string $optionName): bool - { - return self::TYPE_OPTION_VALUE === $this->getCompletionType() && $optionName === $this->getCompletionName(); - } - - public function mustSuggestArgumentValuesFor(string $argumentName): bool - { - return self::TYPE_ARGUMENT_VALUE === $this->getCompletionType() && $argumentName === $this->getCompletionName(); - } - - protected function parseToken(string $token, bool $parseOptions): bool - { - try { - return parent::parseToken($token, $parseOptions); - } catch (RuntimeException) { - // suppress errors, completed input is almost never valid - } - - return $parseOptions; - } - - private function getOptionFromToken(string $optionToken): ?InputOption - { - $optionName = ltrim($optionToken, '-'); - if (!$optionName) { - return null; - } - - if ('-' === ($optionToken[1] ?? ' ')) { - // long option name - return $this->definition->hasOption($optionName) ? $this->definition->getOption($optionName) : null; - } - - // short option name - return $this->definition->hasShortcut($optionName[0]) ? $this->definition->getOptionForShortcut($optionName[0]) : null; - } - - /** - * The token of the cursor, or the last token if the cursor is at the end of the input. - */ - private function getRelevantToken(): string - { - return $this->tokens[$this->isCursorFree() ? $this->currentIndex - 1 : $this->currentIndex]; - } - - /** - * Whether the cursor is "free" (i.e. at the end of the input preceded by a space). - */ - private function isCursorFree(): bool - { - $nrOfTokens = \count($this->tokens); - if ($this->currentIndex > $nrOfTokens) { - throw new \LogicException('Current index is invalid, it must be the number of input tokens or one more.'); - } - - return $this->currentIndex >= $nrOfTokens; - } - - public function __toString() - { - $str = ''; - foreach ($this->tokens as $i => $token) { - $str .= $token; - - if ($this->currentIndex === $i) { - $str .= '|'; - } - - $str .= ' '; - } - - if ($this->currentIndex > $i) { - $str .= '|'; - } - - return rtrim($str); - } -} diff --git a/vendor/symfony/console/Completion/CompletionSuggestions.php b/vendor/symfony/console/Completion/CompletionSuggestions.php deleted file mode 100644 index 549bbafb..00000000 --- a/vendor/symfony/console/Completion/CompletionSuggestions.php +++ /dev/null @@ -1,97 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Completion; - -use Symfony\Component\Console\Input\InputOption; - -/** - * Stores all completion suggestions for the current input. - * - * @author Wouter de Jong - */ -final class CompletionSuggestions -{ - private array $valueSuggestions = []; - private array $optionSuggestions = []; - - /** - * Add a suggested value for an input option or argument. - * - * @return $this - */ - public function suggestValue(string|Suggestion $value): static - { - $this->valueSuggestions[] = !$value instanceof Suggestion ? new Suggestion($value) : $value; - - return $this; - } - - /** - * Add multiple suggested values at once for an input option or argument. - * - * @param list $values - * - * @return $this - */ - public function suggestValues(array $values): static - { - foreach ($values as $value) { - $this->suggestValue($value); - } - - return $this; - } - - /** - * Add a suggestion for an input option name. - * - * @return $this - */ - public function suggestOption(InputOption $option): static - { - $this->optionSuggestions[] = $option; - - return $this; - } - - /** - * Add multiple suggestions for input option names at once. - * - * @param InputOption[] $options - * - * @return $this - */ - public function suggestOptions(array $options): static - { - foreach ($options as $option) { - $this->suggestOption($option); - } - - return $this; - } - - /** - * @return InputOption[] - */ - public function getOptionSuggestions(): array - { - return $this->optionSuggestions; - } - - /** - * @return Suggestion[] - */ - public function getValueSuggestions(): array - { - return $this->valueSuggestions; - } -} diff --git a/vendor/symfony/console/Completion/Output/BashCompletionOutput.php b/vendor/symfony/console/Completion/Output/BashCompletionOutput.php deleted file mode 100644 index c6f76eb8..00000000 --- a/vendor/symfony/console/Completion/Output/BashCompletionOutput.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Completion\Output; - -use Symfony\Component\Console\Completion\CompletionSuggestions; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Wouter de Jong - */ -class BashCompletionOutput implements CompletionOutputInterface -{ - public function write(CompletionSuggestions $suggestions, OutputInterface $output): void - { - $values = $suggestions->getValueSuggestions(); - foreach ($suggestions->getOptionSuggestions() as $option) { - $values[] = '--'.$option->getName(); - if ($option->isNegatable()) { - $values[] = '--no-'.$option->getName(); - } - } - $output->writeln(implode("\n", $values)); - } -} diff --git a/vendor/symfony/console/Completion/Output/CompletionOutputInterface.php b/vendor/symfony/console/Completion/Output/CompletionOutputInterface.php deleted file mode 100644 index 659e5965..00000000 --- a/vendor/symfony/console/Completion/Output/CompletionOutputInterface.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Completion\Output; - -use Symfony\Component\Console\Completion\CompletionSuggestions; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * Transforms the {@see CompletionSuggestions} object into output readable by the shell completion. - * - * @author Wouter de Jong - */ -interface CompletionOutputInterface -{ - public function write(CompletionSuggestions $suggestions, OutputInterface $output): void; -} diff --git a/vendor/symfony/console/Completion/Output/FishCompletionOutput.php b/vendor/symfony/console/Completion/Output/FishCompletionOutput.php deleted file mode 100644 index d2c414e4..00000000 --- a/vendor/symfony/console/Completion/Output/FishCompletionOutput.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Completion\Output; - -use Symfony\Component\Console\Completion\CompletionSuggestions; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Guillaume Aveline - */ -class FishCompletionOutput implements CompletionOutputInterface -{ - public function write(CompletionSuggestions $suggestions, OutputInterface $output): void - { - $values = $suggestions->getValueSuggestions(); - foreach ($suggestions->getOptionSuggestions() as $option) { - $values[] = '--'.$option->getName(); - if ($option->isNegatable()) { - $values[] = '--no-'.$option->getName(); - } - } - $output->write(implode("\n", $values)); - } -} diff --git a/vendor/symfony/console/Completion/Output/ZshCompletionOutput.php b/vendor/symfony/console/Completion/Output/ZshCompletionOutput.php deleted file mode 100644 index bb4ce70b..00000000 --- a/vendor/symfony/console/Completion/Output/ZshCompletionOutput.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Completion\Output; - -use Symfony\Component\Console\Completion\CompletionSuggestions; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Jitendra A - */ -class ZshCompletionOutput implements CompletionOutputInterface -{ - public function write(CompletionSuggestions $suggestions, OutputInterface $output): void - { - $values = []; - foreach ($suggestions->getValueSuggestions() as $value) { - $values[] = $value->getValue().($value->getDescription() ? "\t".$value->getDescription() : ''); - } - foreach ($suggestions->getOptionSuggestions() as $option) { - $values[] = '--'.$option->getName().($option->getDescription() ? "\t".$option->getDescription() : ''); - if ($option->isNegatable()) { - $values[] = '--no-'.$option->getName().($option->getDescription() ? "\t".$option->getDescription() : ''); - } - } - $output->write(implode("\n", $values)."\n"); - } -} diff --git a/vendor/symfony/console/Completion/Suggestion.php b/vendor/symfony/console/Completion/Suggestion.php deleted file mode 100644 index 7392965a..00000000 --- a/vendor/symfony/console/Completion/Suggestion.php +++ /dev/null @@ -1,41 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Completion; - -/** - * Represents a single suggested value. - * - * @author Wouter de Jong - */ -class Suggestion implements \Stringable -{ - public function __construct( - private readonly string $value, - private readonly string $description = '' - ) { - } - - public function getValue(): string - { - return $this->value; - } - - public function getDescription(): string - { - return $this->description; - } - - public function __toString(): string - { - return $this->getValue(); - } -} diff --git a/vendor/symfony/console/ConsoleEvents.php b/vendor/symfony/console/ConsoleEvents.php deleted file mode 100644 index 6ae8f32b..00000000 --- a/vendor/symfony/console/ConsoleEvents.php +++ /dev/null @@ -1,72 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console; - -use Symfony\Component\Console\Event\ConsoleCommandEvent; -use Symfony\Component\Console\Event\ConsoleErrorEvent; -use Symfony\Component\Console\Event\ConsoleSignalEvent; -use Symfony\Component\Console\Event\ConsoleTerminateEvent; - -/** - * Contains all events dispatched by an Application. - * - * @author Francesco Levorato - */ -final class ConsoleEvents -{ - /** - * The COMMAND event allows you to attach listeners before any command is - * executed by the console. It also allows you to modify the command, input and output - * before they are handed to the command. - * - * @Event("Symfony\Component\Console\Event\ConsoleCommandEvent") - */ - public const COMMAND = 'console.command'; - - /** - * The SIGNAL event allows you to perform some actions - * after the command execution was interrupted. - * - * @Event("Symfony\Component\Console\Event\ConsoleSignalEvent") - */ - public const SIGNAL = 'console.signal'; - - /** - * The TERMINATE event allows you to attach listeners after a command is - * executed by the console. - * - * @Event("Symfony\Component\Console\Event\ConsoleTerminateEvent") - */ - public const TERMINATE = 'console.terminate'; - - /** - * The ERROR event occurs when an uncaught exception or error appears. - * - * This event allows you to deal with the exception/error or - * to modify the thrown exception. - * - * @Event("Symfony\Component\Console\Event\ConsoleErrorEvent") - */ - public const ERROR = 'console.error'; - - /** - * Event aliases. - * - * These aliases can be consumed by RegisterListenersPass. - */ - public const ALIASES = [ - ConsoleCommandEvent::class => self::COMMAND, - ConsoleErrorEvent::class => self::ERROR, - ConsoleSignalEvent::class => self::SIGNAL, - ConsoleTerminateEvent::class => self::TERMINATE, - ]; -} diff --git a/vendor/symfony/console/Cursor.php b/vendor/symfony/console/Cursor.php deleted file mode 100644 index 69fd3821..00000000 --- a/vendor/symfony/console/Cursor.php +++ /dev/null @@ -1,204 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console; - -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Pierre du Plessis - */ -final class Cursor -{ - private OutputInterface $output; - /** @var resource */ - private $input; - - /** - * @param resource|null $input - */ - public function __construct(OutputInterface $output, $input = null) - { - $this->output = $output; - $this->input = $input ?? (\defined('STDIN') ? \STDIN : fopen('php://input', 'r+')); - } - - /** - * @return $this - */ - public function moveUp(int $lines = 1): static - { - $this->output->write(sprintf("\x1b[%dA", $lines)); - - return $this; - } - - /** - * @return $this - */ - public function moveDown(int $lines = 1): static - { - $this->output->write(sprintf("\x1b[%dB", $lines)); - - return $this; - } - - /** - * @return $this - */ - public function moveRight(int $columns = 1): static - { - $this->output->write(sprintf("\x1b[%dC", $columns)); - - return $this; - } - - /** - * @return $this - */ - public function moveLeft(int $columns = 1): static - { - $this->output->write(sprintf("\x1b[%dD", $columns)); - - return $this; - } - - /** - * @return $this - */ - public function moveToColumn(int $column): static - { - $this->output->write(sprintf("\x1b[%dG", $column)); - - return $this; - } - - /** - * @return $this - */ - public function moveToPosition(int $column, int $row): static - { - $this->output->write(sprintf("\x1b[%d;%dH", $row + 1, $column)); - - return $this; - } - - /** - * @return $this - */ - public function savePosition(): static - { - $this->output->write("\x1b7"); - - return $this; - } - - /** - * @return $this - */ - public function restorePosition(): static - { - $this->output->write("\x1b8"); - - return $this; - } - - /** - * @return $this - */ - public function hide(): static - { - $this->output->write("\x1b[?25l"); - - return $this; - } - - /** - * @return $this - */ - public function show(): static - { - $this->output->write("\x1b[?25h\x1b[?0c"); - - return $this; - } - - /** - * Clears all the output from the current line. - * - * @return $this - */ - public function clearLine(): static - { - $this->output->write("\x1b[2K"); - - return $this; - } - - /** - * Clears all the output from the current line after the current position. - */ - public function clearLineAfter(): self - { - $this->output->write("\x1b[K"); - - return $this; - } - - /** - * Clears all the output from the cursors' current position to the end of the screen. - * - * @return $this - */ - public function clearOutput(): static - { - $this->output->write("\x1b[0J"); - - return $this; - } - - /** - * Clears the entire screen. - * - * @return $this - */ - public function clearScreen(): static - { - $this->output->write("\x1b[2J"); - - return $this; - } - - /** - * Returns the current cursor position as x,y coordinates. - */ - public function getCurrentPosition(): array - { - static $isTtySupported; - - if (!$isTtySupported ??= '/' === \DIRECTORY_SEPARATOR && stream_isatty(\STDOUT)) { - return [1, 1]; - } - - $sttyMode = shell_exec('stty -g'); - shell_exec('stty -icanon -echo'); - - @fwrite($this->input, "\033[6n"); - - $code = trim(fread($this->input, 1024)); - - shell_exec(sprintf('stty %s', $sttyMode)); - - sscanf($code, "\033[%d;%dR", $row, $col); - - return [$col, $row]; - } -} diff --git a/vendor/symfony/console/DataCollector/CommandDataCollector.php b/vendor/symfony/console/DataCollector/CommandDataCollector.php deleted file mode 100644 index 16a0eadf..00000000 --- a/vendor/symfony/console/DataCollector/CommandDataCollector.php +++ /dev/null @@ -1,234 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\DataCollector; - -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Debug\CliRequest; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\SignalRegistry\SignalMap; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\DataCollector\DataCollector; -use Symfony\Component\VarDumper\Cloner\Data; - -/** - * @internal - * - * @author Jules Pietri - */ -final class CommandDataCollector extends DataCollector -{ - public function collect(Request $request, Response $response, \Throwable $exception = null): void - { - if (!$request instanceof CliRequest) { - return; - } - - $command = $request->command; - $application = $command->getApplication(); - - $this->data = [ - 'command' => $this->cloneVar($command->command), - 'exit_code' => $command->exitCode, - 'interrupted_by_signal' => $command->interruptedBySignal, - 'duration' => $command->duration, - 'max_memory_usage' => $command->maxMemoryUsage, - 'verbosity_level' => match ($command->output->getVerbosity()) { - OutputInterface::VERBOSITY_QUIET => 'quiet', - OutputInterface::VERBOSITY_NORMAL => 'normal', - OutputInterface::VERBOSITY_VERBOSE => 'verbose', - OutputInterface::VERBOSITY_VERY_VERBOSE => 'very verbose', - OutputInterface::VERBOSITY_DEBUG => 'debug', - }, - 'interactive' => $command->isInteractive, - 'validate_input' => !$command->ignoreValidation, - 'enabled' => $command->isEnabled(), - 'visible' => !$command->isHidden(), - 'input' => $this->cloneVar($command->input), - 'output' => $this->cloneVar($command->output), - 'interactive_inputs' => array_map($this->cloneVar(...), $command->interactiveInputs), - 'signalable' => $command->getSubscribedSignals(), - 'handled_signals' => $command->handledSignals, - 'helper_set' => array_map($this->cloneVar(...), iterator_to_array($command->getHelperSet())), - ]; - - $baseDefinition = $application->getDefinition(); - - foreach ($command->arguments as $argName => $argValue) { - if ($baseDefinition->hasArgument($argName)) { - $this->data['application_inputs'][$argName] = $this->cloneVar($argValue); - } else { - $this->data['arguments'][$argName] = $this->cloneVar($argValue); - } - } - - foreach ($command->options as $optName => $optValue) { - if ($baseDefinition->hasOption($optName)) { - $this->data['application_inputs']['--'.$optName] = $this->cloneVar($optValue); - } else { - $this->data['options'][$optName] = $this->cloneVar($optValue); - } - } - } - - public function getName(): string - { - return 'command'; - } - - /** - * @return array{ - * class?: class-string, - * executor?: string, - * file: string, - * line: int, - * } - */ - public function getCommand(): array - { - $class = $this->data['command']->getType(); - $r = new \ReflectionMethod($class, 'execute'); - - if (Command::class !== $r->getDeclaringClass()) { - return [ - 'executor' => $class.'::'.$r->name, - 'file' => $r->getFileName(), - 'line' => $r->getStartLine(), - ]; - } - - $r = new \ReflectionClass($class); - - return [ - 'class' => $class, - 'file' => $r->getFileName(), - 'line' => $r->getStartLine(), - ]; - } - - public function getInterruptedBySignal(): ?string - { - if (isset($this->data['interrupted_by_signal'])) { - return sprintf('%s (%d)', SignalMap::getSignalName($this->data['interrupted_by_signal']), $this->data['interrupted_by_signal']); - } - - return null; - } - - public function getDuration(): string - { - return $this->data['duration']; - } - - public function getMaxMemoryUsage(): string - { - return $this->data['max_memory_usage']; - } - - public function getVerbosityLevel(): string - { - return $this->data['verbosity_level']; - } - - public function getInteractive(): bool - { - return $this->data['interactive']; - } - - public function getValidateInput(): bool - { - return $this->data['validate_input']; - } - - public function getEnabled(): bool - { - return $this->data['enabled']; - } - - public function getVisible(): bool - { - return $this->data['visible']; - } - - public function getInput(): Data - { - return $this->data['input']; - } - - public function getOutput(): Data - { - return $this->data['output']; - } - - /** - * @return Data[] - */ - public function getArguments(): array - { - return $this->data['arguments'] ?? []; - } - - /** - * @return Data[] - */ - public function getOptions(): array - { - return $this->data['options'] ?? []; - } - - /** - * @return Data[] - */ - public function getApplicationInputs(): array - { - return $this->data['application_inputs'] ?? []; - } - - /** - * @return Data[] - */ - public function getInteractiveInputs(): array - { - return $this->data['interactive_inputs'] ?? []; - } - - public function getSignalable(): array - { - return array_map( - static fn (int $signal): string => sprintf('%s (%d)', SignalMap::getSignalName($signal), $signal), - $this->data['signalable'] - ); - } - - public function getHandledSignals(): array - { - $keys = array_map( - static fn (int $signal): string => sprintf('%s (%d)', SignalMap::getSignalName($signal), $signal), - array_keys($this->data['handled_signals']) - ); - - return array_combine($keys, array_values($this->data['handled_signals'])); - } - - /** - * @return Data[] - */ - public function getHelperSet(): array - { - return $this->data['helper_set'] ?? []; - } - - public function reset(): void - { - $this->data = []; - } -} diff --git a/vendor/symfony/console/Debug/CliRequest.php b/vendor/symfony/console/Debug/CliRequest.php deleted file mode 100644 index b023db07..00000000 --- a/vendor/symfony/console/Debug/CliRequest.php +++ /dev/null @@ -1,70 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Debug; - -use Symfony\Component\Console\Command\TraceableCommand; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; - -/** - * @internal - */ -final class CliRequest extends Request -{ - public function __construct( - public readonly TraceableCommand $command, - ) { - parent::__construct( - attributes: ['_controller' => \get_class($command->command), '_virtual_type' => 'command'], - server: $_SERVER, - ); - } - - // Methods below allow to populate a profile, thus enable search and filtering - public function getUri(): string - { - if ($this->server->has('SYMFONY_CLI_BINARY_NAME')) { - $binary = $this->server->get('SYMFONY_CLI_BINARY_NAME').' console'; - } else { - $binary = $this->server->get('argv')[0]; - } - - return $binary.' '.$this->command->input; - } - - public function getMethod(): string - { - return $this->command->isInteractive ? 'INTERACTIVE' : 'BATCH'; - } - - public function getResponse(): Response - { - return new class($this->command->exitCode) extends Response { - public function __construct(private readonly int $exitCode) - { - parent::__construct(); - } - - public function getStatusCode(): int - { - return $this->exitCode; - } - }; - } - - public function getClientIp(): string - { - $application = $this->command->getApplication(); - - return $application->getName().' '.$application->getVersion(); - } -} diff --git a/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php b/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php deleted file mode 100644 index 27705ddb..00000000 --- a/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php +++ /dev/null @@ -1,134 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\DependencyInjection; - -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Command\LazyCommand; -use Symfony\Component\Console\CommandLoader\ContainerCommandLoader; -use Symfony\Component\DependencyInjection\Argument\ServiceClosureArgument; -use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; -use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass; -use Symfony\Component\DependencyInjection\ContainerBuilder; -use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; -use Symfony\Component\DependencyInjection\Reference; -use Symfony\Component\DependencyInjection\TypedReference; - -/** - * Registers console commands. - * - * @author Grégoire Pineau - */ -class AddConsoleCommandPass implements CompilerPassInterface -{ - /** - * @return void - */ - public function process(ContainerBuilder $container) - { - $commandServices = $container->findTaggedServiceIds('console.command', true); - $lazyCommandMap = []; - $lazyCommandRefs = []; - $serviceIds = []; - - foreach ($commandServices as $id => $tags) { - $definition = $container->getDefinition($id); - $definition->addTag('container.no_preload'); - $class = $container->getParameterBag()->resolveValue($definition->getClass()); - - if (isset($tags[0]['command'])) { - $aliases = $tags[0]['command']; - } else { - if (!$r = $container->getReflectionClass($class)) { - throw new InvalidArgumentException(sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id)); - } - if (!$r->isSubclassOf(Command::class)) { - throw new InvalidArgumentException(sprintf('The service "%s" tagged "%s" must be a subclass of "%s".', $id, 'console.command', Command::class)); - } - $aliases = str_replace('%', '%%', $class::getDefaultName() ?? ''); - } - - $aliases = explode('|', $aliases ?? ''); - $commandName = array_shift($aliases); - - if ($isHidden = '' === $commandName) { - $commandName = array_shift($aliases); - } - - if (null === $commandName) { - if (!$definition->isPublic() || $definition->isPrivate() || $definition->hasTag('container.private')) { - $commandId = 'console.command.public_alias.'.$id; - $container->setAlias($commandId, $id)->setPublic(true); - $id = $commandId; - } - $serviceIds[] = $id; - - continue; - } - - $description = $tags[0]['description'] ?? null; - - unset($tags[0]); - $lazyCommandMap[$commandName] = $id; - $lazyCommandRefs[$id] = new TypedReference($id, $class); - - foreach ($aliases as $alias) { - $lazyCommandMap[$alias] = $id; - } - - foreach ($tags as $tag) { - if (isset($tag['command'])) { - $aliases[] = $tag['command']; - $lazyCommandMap[$tag['command']] = $id; - } - - $description ??= $tag['description'] ?? null; - } - - $definition->addMethodCall('setName', [$commandName]); - - if ($aliases) { - $definition->addMethodCall('setAliases', [$aliases]); - } - - if ($isHidden) { - $definition->addMethodCall('setHidden', [true]); - } - - if (!$description) { - if (!$r = $container->getReflectionClass($class)) { - throw new InvalidArgumentException(sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id)); - } - if (!$r->isSubclassOf(Command::class)) { - throw new InvalidArgumentException(sprintf('The service "%s" tagged "%s" must be a subclass of "%s".', $id, 'console.command', Command::class)); - } - $description = str_replace('%', '%%', $class::getDefaultDescription() ?? ''); - } - - if ($description) { - $definition->addMethodCall('setDescription', [$description]); - - $container->register('.'.$id.'.lazy', LazyCommand::class) - ->setArguments([$commandName, $aliases, $description, $isHidden, new ServiceClosureArgument($lazyCommandRefs[$id])]); - - $lazyCommandRefs[$id] = new Reference('.'.$id.'.lazy'); - } - } - - $container - ->register('console.command_loader', ContainerCommandLoader::class) - ->setPublic(true) - ->addTag('container.no_preload') - ->setArguments([ServiceLocatorTagPass::register($container, $lazyCommandRefs), $lazyCommandMap]); - - $container->setParameter('console.command.ids', $serviceIds); - } -} diff --git a/vendor/symfony/console/Descriptor/ApplicationDescription.php b/vendor/symfony/console/Descriptor/ApplicationDescription.php deleted file mode 100644 index f8ed1804..00000000 --- a/vendor/symfony/console/Descriptor/ApplicationDescription.php +++ /dev/null @@ -1,139 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Descriptor; - -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Exception\CommandNotFoundException; - -/** - * @author Jean-François Simon - * - * @internal - */ -class ApplicationDescription -{ - public const GLOBAL_NAMESPACE = '_global'; - - private Application $application; - private ?string $namespace; - private bool $showHidden; - private array $namespaces; - - /** - * @var array - */ - private array $commands; - - /** - * @var array - */ - private array $aliases = []; - - public function __construct(Application $application, string $namespace = null, bool $showHidden = false) - { - $this->application = $application; - $this->namespace = $namespace; - $this->showHidden = $showHidden; - } - - public function getNamespaces(): array - { - if (!isset($this->namespaces)) { - $this->inspectApplication(); - } - - return $this->namespaces; - } - - /** - * @return Command[] - */ - public function getCommands(): array - { - if (!isset($this->commands)) { - $this->inspectApplication(); - } - - return $this->commands; - } - - /** - * @throws CommandNotFoundException - */ - public function getCommand(string $name): Command - { - if (!isset($this->commands[$name]) && !isset($this->aliases[$name])) { - throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name)); - } - - return $this->commands[$name] ?? $this->aliases[$name]; - } - - private function inspectApplication(): void - { - $this->commands = []; - $this->namespaces = []; - - $all = $this->application->all($this->namespace ? $this->application->findNamespace($this->namespace) : null); - foreach ($this->sortCommands($all) as $namespace => $commands) { - $names = []; - - /** @var Command $command */ - foreach ($commands as $name => $command) { - if (!$command->getName() || (!$this->showHidden && $command->isHidden())) { - continue; - } - - if ($command->getName() === $name) { - $this->commands[$name] = $command; - } else { - $this->aliases[$name] = $command; - } - - $names[] = $name; - } - - $this->namespaces[$namespace] = ['id' => $namespace, 'commands' => $names]; - } - } - - private function sortCommands(array $commands): array - { - $namespacedCommands = []; - $globalCommands = []; - $sortedCommands = []; - foreach ($commands as $name => $command) { - $key = $this->application->extractNamespace($name, 1); - if (\in_array($key, ['', self::GLOBAL_NAMESPACE], true)) { - $globalCommands[$name] = $command; - } else { - $namespacedCommands[$key][$name] = $command; - } - } - - if ($globalCommands) { - ksort($globalCommands); - $sortedCommands[self::GLOBAL_NAMESPACE] = $globalCommands; - } - - if ($namespacedCommands) { - ksort($namespacedCommands, \SORT_STRING); - foreach ($namespacedCommands as $key => $commandsSet) { - ksort($commandsSet); - $sortedCommands[$key] = $commandsSet; - } - } - - return $sortedCommands; - } -} diff --git a/vendor/symfony/console/Descriptor/Descriptor.php b/vendor/symfony/console/Descriptor/Descriptor.php deleted file mode 100644 index 7b2509c6..00000000 --- a/vendor/symfony/console/Descriptor/Descriptor.php +++ /dev/null @@ -1,74 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Descriptor; - -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputDefinition; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Jean-François Simon - * - * @internal - */ -abstract class Descriptor implements DescriptorInterface -{ - protected OutputInterface $output; - - public function describe(OutputInterface $output, object $object, array $options = []): void - { - $this->output = $output; - - match (true) { - $object instanceof InputArgument => $this->describeInputArgument($object, $options), - $object instanceof InputOption => $this->describeInputOption($object, $options), - $object instanceof InputDefinition => $this->describeInputDefinition($object, $options), - $object instanceof Command => $this->describeCommand($object, $options), - $object instanceof Application => $this->describeApplication($object, $options), - default => throw new InvalidArgumentException(sprintf('Object of type "%s" is not describable.', get_debug_type($object))), - }; - } - - protected function write(string $content, bool $decorated = false): void - { - $this->output->write($content, false, $decorated ? OutputInterface::OUTPUT_NORMAL : OutputInterface::OUTPUT_RAW); - } - - /** - * Describes an InputArgument instance. - */ - abstract protected function describeInputArgument(InputArgument $argument, array $options = []): void; - - /** - * Describes an InputOption instance. - */ - abstract protected function describeInputOption(InputOption $option, array $options = []): void; - - /** - * Describes an InputDefinition instance. - */ - abstract protected function describeInputDefinition(InputDefinition $definition, array $options = []): void; - - /** - * Describes a Command instance. - */ - abstract protected function describeCommand(Command $command, array $options = []): void; - - /** - * Describes an Application instance. - */ - abstract protected function describeApplication(Application $application, array $options = []): void; -} diff --git a/vendor/symfony/console/Descriptor/DescriptorInterface.php b/vendor/symfony/console/Descriptor/DescriptorInterface.php deleted file mode 100644 index ab468a25..00000000 --- a/vendor/symfony/console/Descriptor/DescriptorInterface.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Descriptor; - -use Symfony\Component\Console\Output\OutputInterface; - -/** - * Descriptor interface. - * - * @author Jean-François Simon - */ -interface DescriptorInterface -{ - /** - * @return void - */ - public function describe(OutputInterface $output, object $object, array $options = []); -} diff --git a/vendor/symfony/console/Descriptor/JsonDescriptor.php b/vendor/symfony/console/Descriptor/JsonDescriptor.php deleted file mode 100644 index 95630370..00000000 --- a/vendor/symfony/console/Descriptor/JsonDescriptor.php +++ /dev/null @@ -1,166 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Descriptor; - -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputDefinition; -use Symfony\Component\Console\Input\InputOption; - -/** - * JSON descriptor. - * - * @author Jean-François Simon - * - * @internal - */ -class JsonDescriptor extends Descriptor -{ - protected function describeInputArgument(InputArgument $argument, array $options = []): void - { - $this->writeData($this->getInputArgumentData($argument), $options); - } - - protected function describeInputOption(InputOption $option, array $options = []): void - { - $this->writeData($this->getInputOptionData($option), $options); - if ($option->isNegatable()) { - $this->writeData($this->getInputOptionData($option, true), $options); - } - } - - protected function describeInputDefinition(InputDefinition $definition, array $options = []): void - { - $this->writeData($this->getInputDefinitionData($definition), $options); - } - - protected function describeCommand(Command $command, array $options = []): void - { - $this->writeData($this->getCommandData($command, $options['short'] ?? false), $options); - } - - protected function describeApplication(Application $application, array $options = []): void - { - $describedNamespace = $options['namespace'] ?? null; - $description = new ApplicationDescription($application, $describedNamespace, true); - $commands = []; - - foreach ($description->getCommands() as $command) { - $commands[] = $this->getCommandData($command, $options['short'] ?? false); - } - - $data = []; - if ('UNKNOWN' !== $application->getName()) { - $data['application']['name'] = $application->getName(); - if ('UNKNOWN' !== $application->getVersion()) { - $data['application']['version'] = $application->getVersion(); - } - } - - $data['commands'] = $commands; - - if ($describedNamespace) { - $data['namespace'] = $describedNamespace; - } else { - $data['namespaces'] = array_values($description->getNamespaces()); - } - - $this->writeData($data, $options); - } - - /** - * Writes data as json. - */ - private function writeData(array $data, array $options): void - { - $flags = $options['json_encoding'] ?? 0; - - $this->write(json_encode($data, $flags)); - } - - private function getInputArgumentData(InputArgument $argument): array - { - return [ - 'name' => $argument->getName(), - 'is_required' => $argument->isRequired(), - 'is_array' => $argument->isArray(), - 'description' => preg_replace('/\s*[\r\n]\s*/', ' ', $argument->getDescription()), - 'default' => \INF === $argument->getDefault() ? 'INF' : $argument->getDefault(), - ]; - } - - private function getInputOptionData(InputOption $option, bool $negated = false): array - { - return $negated ? [ - 'name' => '--no-'.$option->getName(), - 'shortcut' => '', - 'accept_value' => false, - 'is_value_required' => false, - 'is_multiple' => false, - 'description' => 'Negate the "--'.$option->getName().'" option', - 'default' => false, - ] : [ - 'name' => '--'.$option->getName(), - 'shortcut' => $option->getShortcut() ? '-'.str_replace('|', '|-', $option->getShortcut()) : '', - 'accept_value' => $option->acceptValue(), - 'is_value_required' => $option->isValueRequired(), - 'is_multiple' => $option->isArray(), - 'description' => preg_replace('/\s*[\r\n]\s*/', ' ', $option->getDescription()), - 'default' => \INF === $option->getDefault() ? 'INF' : $option->getDefault(), - ]; - } - - private function getInputDefinitionData(InputDefinition $definition): array - { - $inputArguments = []; - foreach ($definition->getArguments() as $name => $argument) { - $inputArguments[$name] = $this->getInputArgumentData($argument); - } - - $inputOptions = []; - foreach ($definition->getOptions() as $name => $option) { - $inputOptions[$name] = $this->getInputOptionData($option); - if ($option->isNegatable()) { - $inputOptions['no-'.$name] = $this->getInputOptionData($option, true); - } - } - - return ['arguments' => $inputArguments, 'options' => $inputOptions]; - } - - private function getCommandData(Command $command, bool $short = false): array - { - $data = [ - 'name' => $command->getName(), - 'description' => $command->getDescription(), - ]; - - if ($short) { - $data += [ - 'usage' => $command->getAliases(), - ]; - } else { - $command->mergeApplicationDefinition(false); - - $data += [ - 'usage' => array_merge([$command->getSynopsis()], $command->getUsages(), $command->getAliases()), - 'help' => $command->getProcessedHelp(), - 'definition' => $this->getInputDefinitionData($command->getDefinition()), - ]; - } - - $data['hidden'] = $command->isHidden(); - - return $data; - } -} diff --git a/vendor/symfony/console/Descriptor/MarkdownDescriptor.php b/vendor/symfony/console/Descriptor/MarkdownDescriptor.php deleted file mode 100644 index b3f16ee9..00000000 --- a/vendor/symfony/console/Descriptor/MarkdownDescriptor.php +++ /dev/null @@ -1,173 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Descriptor; - -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Helper\Helper; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputDefinition; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * Markdown descriptor. - * - * @author Jean-François Simon - * - * @internal - */ -class MarkdownDescriptor extends Descriptor -{ - public function describe(OutputInterface $output, object $object, array $options = []): void - { - $decorated = $output->isDecorated(); - $output->setDecorated(false); - - parent::describe($output, $object, $options); - - $output->setDecorated($decorated); - } - - protected function write(string $content, bool $decorated = true): void - { - parent::write($content, $decorated); - } - - protected function describeInputArgument(InputArgument $argument, array $options = []): void - { - $this->write( - '#### `'.($argument->getName() ?: '')."`\n\n" - .($argument->getDescription() ? preg_replace('/\s*[\r\n]\s*/', "\n", $argument->getDescription())."\n\n" : '') - .'* Is required: '.($argument->isRequired() ? 'yes' : 'no')."\n" - .'* Is array: '.($argument->isArray() ? 'yes' : 'no')."\n" - .'* Default: `'.str_replace("\n", '', var_export($argument->getDefault(), true)).'`' - ); - } - - protected function describeInputOption(InputOption $option, array $options = []): void - { - $name = '--'.$option->getName(); - if ($option->isNegatable()) { - $name .= '|--no-'.$option->getName(); - } - if ($option->getShortcut()) { - $name .= '|-'.str_replace('|', '|-', $option->getShortcut()).''; - } - - $this->write( - '#### `'.$name.'`'."\n\n" - .($option->getDescription() ? preg_replace('/\s*[\r\n]\s*/', "\n", $option->getDescription())."\n\n" : '') - .'* Accept value: '.($option->acceptValue() ? 'yes' : 'no')."\n" - .'* Is value required: '.($option->isValueRequired() ? 'yes' : 'no')."\n" - .'* Is multiple: '.($option->isArray() ? 'yes' : 'no')."\n" - .'* Is negatable: '.($option->isNegatable() ? 'yes' : 'no')."\n" - .'* Default: `'.str_replace("\n", '', var_export($option->getDefault(), true)).'`' - ); - } - - protected function describeInputDefinition(InputDefinition $definition, array $options = []): void - { - if ($showArguments = \count($definition->getArguments()) > 0) { - $this->write('### Arguments'); - foreach ($definition->getArguments() as $argument) { - $this->write("\n\n"); - $this->describeInputArgument($argument); - } - } - - if (\count($definition->getOptions()) > 0) { - if ($showArguments) { - $this->write("\n\n"); - } - - $this->write('### Options'); - foreach ($definition->getOptions() as $option) { - $this->write("\n\n"); - $this->describeInputOption($option); - } - } - } - - protected function describeCommand(Command $command, array $options = []): void - { - if ($options['short'] ?? false) { - $this->write( - '`'.$command->getName()."`\n" - .str_repeat('-', Helper::width($command->getName()) + 2)."\n\n" - .($command->getDescription() ? $command->getDescription()."\n\n" : '') - .'### Usage'."\n\n" - .array_reduce($command->getAliases(), fn ($carry, $usage) => $carry.'* `'.$usage.'`'."\n") - ); - - return; - } - - $command->mergeApplicationDefinition(false); - - $this->write( - '`'.$command->getName()."`\n" - .str_repeat('-', Helper::width($command->getName()) + 2)."\n\n" - .($command->getDescription() ? $command->getDescription()."\n\n" : '') - .'### Usage'."\n\n" - .array_reduce(array_merge([$command->getSynopsis()], $command->getAliases(), $command->getUsages()), fn ($carry, $usage) => $carry.'* `'.$usage.'`'."\n") - ); - - if ($help = $command->getProcessedHelp()) { - $this->write("\n"); - $this->write($help); - } - - $definition = $command->getDefinition(); - if ($definition->getOptions() || $definition->getArguments()) { - $this->write("\n\n"); - $this->describeInputDefinition($definition); - } - } - - protected function describeApplication(Application $application, array $options = []): void - { - $describedNamespace = $options['namespace'] ?? null; - $description = new ApplicationDescription($application, $describedNamespace); - $title = $this->getApplicationTitle($application); - - $this->write($title."\n".str_repeat('=', Helper::width($title))); - - foreach ($description->getNamespaces() as $namespace) { - if (ApplicationDescription::GLOBAL_NAMESPACE !== $namespace['id']) { - $this->write("\n\n"); - $this->write('**'.$namespace['id'].':**'); - } - - $this->write("\n\n"); - $this->write(implode("\n", array_map(fn ($commandName) => sprintf('* [`%s`](#%s)', $commandName, str_replace(':', '', $description->getCommand($commandName)->getName())), $namespace['commands']))); - } - - foreach ($description->getCommands() as $command) { - $this->write("\n\n"); - $this->describeCommand($command, $options); - } - } - - private function getApplicationTitle(Application $application): string - { - if ('UNKNOWN' !== $application->getName()) { - if ('UNKNOWN' !== $application->getVersion()) { - return sprintf('%s %s', $application->getName(), $application->getVersion()); - } - - return $application->getName(); - } - - return 'Console Tool'; - } -} diff --git a/vendor/symfony/console/Descriptor/ReStructuredTextDescriptor.php b/vendor/symfony/console/Descriptor/ReStructuredTextDescriptor.php deleted file mode 100644 index d4423fd3..00000000 --- a/vendor/symfony/console/Descriptor/ReStructuredTextDescriptor.php +++ /dev/null @@ -1,272 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Descriptor; - -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Helper\Helper; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputDefinition; -use Symfony\Component\Console\Input\InputOption; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\String\UnicodeString; - -class ReStructuredTextDescriptor extends Descriptor -{ - //

    - private string $partChar = '='; - //

    - private string $chapterChar = '-'; - //

    - private string $sectionChar = '~'; - //

    - private string $subsectionChar = '.'; - //

    - private string $subsubsectionChar = '^'; - //
    - private string $paragraphsChar = '"'; - - private array $visibleNamespaces = []; - - public function describe(OutputInterface $output, object $object, array $options = []): void - { - $decorated = $output->isDecorated(); - $output->setDecorated(false); - - parent::describe($output, $object, $options); - - $output->setDecorated($decorated); - } - - /** - * Override parent method to set $decorated = true. - */ - protected function write(string $content, bool $decorated = true): void - { - parent::write($content, $decorated); - } - - protected function describeInputArgument(InputArgument $argument, array $options = []): void - { - $this->write( - $argument->getName() ?: ''."\n".str_repeat($this->paragraphsChar, Helper::width($argument->getName()))."\n\n" - .($argument->getDescription() ? preg_replace('/\s*[\r\n]\s*/', "\n", $argument->getDescription())."\n\n" : '') - .'- **Is required**: '.($argument->isRequired() ? 'yes' : 'no')."\n" - .'- **Is array**: '.($argument->isArray() ? 'yes' : 'no')."\n" - .'- **Default**: ``'.str_replace("\n", '', var_export($argument->getDefault(), true)).'``' - ); - } - - protected function describeInputOption(InputOption $option, array $options = []): void - { - $name = '\-\-'.$option->getName(); - if ($option->isNegatable()) { - $name .= '|\-\-no-'.$option->getName(); - } - if ($option->getShortcut()) { - $name .= '|-'.str_replace('|', '|-', $option->getShortcut()); - } - - $optionDescription = $option->getDescription() ? preg_replace('/\s*[\r\n]\s*/', "\n\n", $option->getDescription())."\n\n" : ''; - $optionDescription = (new UnicodeString($optionDescription))->ascii(); - $this->write( - $name."\n".str_repeat($this->paragraphsChar, Helper::width($name))."\n\n" - .$optionDescription - .'- **Accept value**: '.($option->acceptValue() ? 'yes' : 'no')."\n" - .'- **Is value required**: '.($option->isValueRequired() ? 'yes' : 'no')."\n" - .'- **Is multiple**: '.($option->isArray() ? 'yes' : 'no')."\n" - .'- **Is negatable**: '.($option->isNegatable() ? 'yes' : 'no')."\n" - .'- **Default**: ``'.str_replace("\n", '', var_export($option->getDefault(), true)).'``'."\n" - ); - } - - protected function describeInputDefinition(InputDefinition $definition, array $options = []): void - { - if ($showArguments = ((bool) $definition->getArguments())) { - $this->write("Arguments\n".str_repeat($this->subsubsectionChar, 9))."\n\n"; - foreach ($definition->getArguments() as $argument) { - $this->write("\n\n"); - $this->describeInputArgument($argument); - } - } - - if ($nonDefaultOptions = $this->getNonDefaultOptions($definition)) { - if ($showArguments) { - $this->write("\n\n"); - } - - $this->write("Options\n".str_repeat($this->subsubsectionChar, 7)."\n\n"); - foreach ($nonDefaultOptions as $option) { - $this->describeInputOption($option); - $this->write("\n"); - } - } - } - - protected function describeCommand(Command $command, array $options = []): void - { - if ($options['short'] ?? false) { - $this->write( - '``'.$command->getName()."``\n" - .str_repeat($this->subsectionChar, Helper::width($command->getName()))."\n\n" - .($command->getDescription() ? $command->getDescription()."\n\n" : '') - ."Usage\n".str_repeat($this->paragraphsChar, 5)."\n\n" - .array_reduce($command->getAliases(), static fn ($carry, $usage) => $carry.'- ``'.$usage.'``'."\n") - ); - - return; - } - - $command->mergeApplicationDefinition(false); - - foreach ($command->getAliases() as $alias) { - $this->write('.. _'.$alias.":\n\n"); - } - $this->write( - $command->getName()."\n" - .str_repeat($this->subsectionChar, Helper::width($command->getName()))."\n\n" - .($command->getDescription() ? $command->getDescription()."\n\n" : '') - ."Usage\n".str_repeat($this->subsubsectionChar, 5)."\n\n" - .array_reduce(array_merge([$command->getSynopsis()], $command->getAliases(), $command->getUsages()), static fn ($carry, $usage) => $carry.'- ``'.$usage.'``'."\n") - ); - - if ($help = $command->getProcessedHelp()) { - $this->write("\n"); - $this->write($help); - } - - $definition = $command->getDefinition(); - if ($definition->getOptions() || $definition->getArguments()) { - $this->write("\n\n"); - $this->describeInputDefinition($definition); - } - } - - protected function describeApplication(Application $application, array $options = []): void - { - $description = new ApplicationDescription($application, $options['namespace'] ?? null); - $title = $this->getApplicationTitle($application); - - $this->write($title."\n".str_repeat($this->partChar, Helper::width($title))); - $this->createTableOfContents($description, $application); - $this->describeCommands($application, $options); - } - - private function getApplicationTitle(Application $application): string - { - if ('UNKNOWN' === $application->getName()) { - return 'Console Tool'; - } - if ('UNKNOWN' !== $application->getVersion()) { - return sprintf('%s %s', $application->getName(), $application->getVersion()); - } - - return $application->getName(); - } - - private function describeCommands($application, array $options): void - { - $title = 'Commands'; - $this->write("\n\n$title\n".str_repeat($this->chapterChar, Helper::width($title))."\n\n"); - foreach ($this->visibleNamespaces as $namespace) { - if ('_global' === $namespace) { - $commands = $application->all(''); - $this->write('Global'."\n".str_repeat($this->sectionChar, Helper::width('Global'))."\n\n"); - } else { - $commands = $application->all($namespace); - $this->write($namespace."\n".str_repeat($this->sectionChar, Helper::width($namespace))."\n\n"); - } - - foreach ($this->removeAliasesAndHiddenCommands($commands) as $command) { - $this->describeCommand($command, $options); - $this->write("\n\n"); - } - } - } - - private function createTableOfContents(ApplicationDescription $description, Application $application): void - { - $this->setVisibleNamespaces($description); - $chapterTitle = 'Table of Contents'; - $this->write("\n\n$chapterTitle\n".str_repeat($this->chapterChar, Helper::width($chapterTitle))."\n\n"); - foreach ($this->visibleNamespaces as $namespace) { - if ('_global' === $namespace) { - $commands = $application->all(''); - } else { - $commands = $application->all($namespace); - $this->write("\n\n"); - $this->write($namespace."\n".str_repeat($this->sectionChar, Helper::width($namespace))."\n\n"); - } - $commands = $this->removeAliasesAndHiddenCommands($commands); - - $this->write("\n\n"); - $this->write(implode("\n", array_map(static fn ($commandName) => sprintf('- `%s`_', $commandName), array_keys($commands)))); - } - } - - private function getNonDefaultOptions(InputDefinition $definition): array - { - $globalOptions = [ - 'help', - 'quiet', - 'verbose', - 'version', - 'ansi', - 'no-interaction', - ]; - $nonDefaultOptions = []; - foreach ($definition->getOptions() as $option) { - // Skip global options. - if (!\in_array($option->getName(), $globalOptions)) { - $nonDefaultOptions[] = $option; - } - } - - return $nonDefaultOptions; - } - - private function setVisibleNamespaces(ApplicationDescription $description): void - { - $commands = $description->getCommands(); - foreach ($description->getNamespaces() as $namespace) { - try { - $namespaceCommands = $namespace['commands']; - foreach ($namespaceCommands as $key => $commandName) { - if (!\array_key_exists($commandName, $commands)) { - // If the array key does not exist, then this is an alias. - unset($namespaceCommands[$key]); - } elseif ($commands[$commandName]->isHidden()) { - unset($namespaceCommands[$key]); - } - } - if (!$namespaceCommands) { - // If the namespace contained only aliases or hidden commands, skip the namespace. - continue; - } - } catch (\Exception) { - } - $this->visibleNamespaces[] = $namespace['id']; - } - } - - private function removeAliasesAndHiddenCommands(array $commands): array - { - foreach ($commands as $key => $command) { - if ($command->isHidden() || \in_array($key, $command->getAliases(), true)) { - unset($commands[$key]); - } - } - unset($commands['completion']); - - return $commands; - } -} diff --git a/vendor/symfony/console/Descriptor/TextDescriptor.php b/vendor/symfony/console/Descriptor/TextDescriptor.php deleted file mode 100644 index d04d1023..00000000 --- a/vendor/symfony/console/Descriptor/TextDescriptor.php +++ /dev/null @@ -1,317 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Descriptor; - -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Formatter\OutputFormatter; -use Symfony\Component\Console\Helper\Helper; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputDefinition; -use Symfony\Component\Console\Input\InputOption; - -/** - * Text descriptor. - * - * @author Jean-François Simon - * - * @internal - */ -class TextDescriptor extends Descriptor -{ - protected function describeInputArgument(InputArgument $argument, array $options = []): void - { - if (null !== $argument->getDefault() && (!\is_array($argument->getDefault()) || \count($argument->getDefault()))) { - $default = sprintf(' [default: %s]', $this->formatDefaultValue($argument->getDefault())); - } else { - $default = ''; - } - - $totalWidth = $options['total_width'] ?? Helper::width($argument->getName()); - $spacingWidth = $totalWidth - \strlen($argument->getName()); - - $this->writeText(sprintf(' %s %s%s%s', - $argument->getName(), - str_repeat(' ', $spacingWidth), - // + 4 = 2 spaces before , 2 spaces after - preg_replace('/\s*[\r\n]\s*/', "\n".str_repeat(' ', $totalWidth + 4), $argument->getDescription()), - $default - ), $options); - } - - protected function describeInputOption(InputOption $option, array $options = []): void - { - if ($option->acceptValue() && null !== $option->getDefault() && (!\is_array($option->getDefault()) || \count($option->getDefault()))) { - $default = sprintf(' [default: %s]', $this->formatDefaultValue($option->getDefault())); - } else { - $default = ''; - } - - $value = ''; - if ($option->acceptValue()) { - $value = '='.strtoupper($option->getName()); - - if ($option->isValueOptional()) { - $value = '['.$value.']'; - } - } - - $totalWidth = $options['total_width'] ?? $this->calculateTotalWidthForOptions([$option]); - $synopsis = sprintf('%s%s', - $option->getShortcut() ? sprintf('-%s, ', $option->getShortcut()) : ' ', - sprintf($option->isNegatable() ? '--%1$s|--no-%1$s' : '--%1$s%2$s', $option->getName(), $value) - ); - - $spacingWidth = $totalWidth - Helper::width($synopsis); - - $this->writeText(sprintf(' %s %s%s%s%s', - $synopsis, - str_repeat(' ', $spacingWidth), - // + 4 = 2 spaces before , 2 spaces after - preg_replace('/\s*[\r\n]\s*/', "\n".str_repeat(' ', $totalWidth + 4), $option->getDescription()), - $default, - $option->isArray() ? ' (multiple values allowed)' : '' - ), $options); - } - - protected function describeInputDefinition(InputDefinition $definition, array $options = []): void - { - $totalWidth = $this->calculateTotalWidthForOptions($definition->getOptions()); - foreach ($definition->getArguments() as $argument) { - $totalWidth = max($totalWidth, Helper::width($argument->getName())); - } - - if ($definition->getArguments()) { - $this->writeText('Arguments:', $options); - $this->writeText("\n"); - foreach ($definition->getArguments() as $argument) { - $this->describeInputArgument($argument, array_merge($options, ['total_width' => $totalWidth])); - $this->writeText("\n"); - } - } - - if ($definition->getArguments() && $definition->getOptions()) { - $this->writeText("\n"); - } - - if ($definition->getOptions()) { - $laterOptions = []; - - $this->writeText('Options:', $options); - foreach ($definition->getOptions() as $option) { - if (\strlen($option->getShortcut() ?? '') > 1) { - $laterOptions[] = $option; - continue; - } - $this->writeText("\n"); - $this->describeInputOption($option, array_merge($options, ['total_width' => $totalWidth])); - } - foreach ($laterOptions as $option) { - $this->writeText("\n"); - $this->describeInputOption($option, array_merge($options, ['total_width' => $totalWidth])); - } - } - } - - protected function describeCommand(Command $command, array $options = []): void - { - $command->mergeApplicationDefinition(false); - - if ($description = $command->getDescription()) { - $this->writeText('Description:', $options); - $this->writeText("\n"); - $this->writeText(' '.$description); - $this->writeText("\n\n"); - } - - $this->writeText('Usage:', $options); - foreach (array_merge([$command->getSynopsis(true)], $command->getAliases(), $command->getUsages()) as $usage) { - $this->writeText("\n"); - $this->writeText(' '.OutputFormatter::escape($usage), $options); - } - $this->writeText("\n"); - - $definition = $command->getDefinition(); - if ($definition->getOptions() || $definition->getArguments()) { - $this->writeText("\n"); - $this->describeInputDefinition($definition, $options); - $this->writeText("\n"); - } - - $help = $command->getProcessedHelp(); - if ($help && $help !== $description) { - $this->writeText("\n"); - $this->writeText('Help:', $options); - $this->writeText("\n"); - $this->writeText(' '.str_replace("\n", "\n ", $help), $options); - $this->writeText("\n"); - } - } - - protected function describeApplication(Application $application, array $options = []): void - { - $describedNamespace = $options['namespace'] ?? null; - $description = new ApplicationDescription($application, $describedNamespace); - - if (isset($options['raw_text']) && $options['raw_text']) { - $width = $this->getColumnWidth($description->getCommands()); - - foreach ($description->getCommands() as $command) { - $this->writeText(sprintf("%-{$width}s %s", $command->getName(), $command->getDescription()), $options); - $this->writeText("\n"); - } - } else { - if ('' != $help = $application->getHelp()) { - $this->writeText("$help\n\n", $options); - } - - $this->writeText("Usage:\n", $options); - $this->writeText(" command [options] [arguments]\n\n", $options); - - $this->describeInputDefinition(new InputDefinition($application->getDefinition()->getOptions()), $options); - - $this->writeText("\n"); - $this->writeText("\n"); - - $commands = $description->getCommands(); - $namespaces = $description->getNamespaces(); - if ($describedNamespace && $namespaces) { - // make sure all alias commands are included when describing a specific namespace - $describedNamespaceInfo = reset($namespaces); - foreach ($describedNamespaceInfo['commands'] as $name) { - $commands[$name] = $description->getCommand($name); - } - } - - // calculate max. width based on available commands per namespace - $width = $this->getColumnWidth(array_merge(...array_values(array_map(fn ($namespace) => array_intersect($namespace['commands'], array_keys($commands)), array_values($namespaces))))); - - if ($describedNamespace) { - $this->writeText(sprintf('Available commands for the "%s" namespace:', $describedNamespace), $options); - } else { - $this->writeText('Available commands:', $options); - } - - foreach ($namespaces as $namespace) { - $namespace['commands'] = array_filter($namespace['commands'], fn ($name) => isset($commands[$name])); - - if (!$namespace['commands']) { - continue; - } - - if (!$describedNamespace && ApplicationDescription::GLOBAL_NAMESPACE !== $namespace['id']) { - $this->writeText("\n"); - $this->writeText(' '.$namespace['id'].'', $options); - } - - foreach ($namespace['commands'] as $name) { - $this->writeText("\n"); - $spacingWidth = $width - Helper::width($name); - $command = $commands[$name]; - $commandAliases = $name === $command->getName() ? $this->getCommandAliasesText($command) : ''; - $this->writeText(sprintf(' %s%s%s', $name, str_repeat(' ', $spacingWidth), $commandAliases.$command->getDescription()), $options); - } - } - - $this->writeText("\n"); - } - } - - private function writeText(string $content, array $options = []): void - { - $this->write( - isset($options['raw_text']) && $options['raw_text'] ? strip_tags($content) : $content, - isset($options['raw_output']) ? !$options['raw_output'] : true - ); - } - - /** - * Formats command aliases to show them in the command description. - */ - private function getCommandAliasesText(Command $command): string - { - $text = ''; - $aliases = $command->getAliases(); - - if ($aliases) { - $text = '['.implode('|', $aliases).'] '; - } - - return $text; - } - - /** - * Formats input option/argument default value. - */ - private function formatDefaultValue(mixed $default): string - { - if (\INF === $default) { - return 'INF'; - } - - if (\is_string($default)) { - $default = OutputFormatter::escape($default); - } elseif (\is_array($default)) { - foreach ($default as $key => $value) { - if (\is_string($value)) { - $default[$key] = OutputFormatter::escape($value); - } - } - } - - return str_replace('\\\\', '\\', json_encode($default, \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE)); - } - - /** - * @param array $commands - */ - private function getColumnWidth(array $commands): int - { - $widths = []; - - foreach ($commands as $command) { - if ($command instanceof Command) { - $widths[] = Helper::width($command->getName()); - foreach ($command->getAliases() as $alias) { - $widths[] = Helper::width($alias); - } - } else { - $widths[] = Helper::width($command); - } - } - - return $widths ? max($widths) + 2 : 0; - } - - /** - * @param InputOption[] $options - */ - private function calculateTotalWidthForOptions(array $options): int - { - $totalWidth = 0; - foreach ($options as $option) { - // "-" + shortcut + ", --" + name - $nameLength = 1 + max(Helper::width($option->getShortcut()), 1) + 4 + Helper::width($option->getName()); - if ($option->isNegatable()) { - $nameLength += 6 + Helper::width($option->getName()); // |--no- + name - } elseif ($option->acceptValue()) { - $valueLength = 1 + Helper::width($option->getName()); // = + value - $valueLength += $option->isValueOptional() ? 2 : 0; // [ + ] - - $nameLength += $valueLength; - } - $totalWidth = max($totalWidth, $nameLength); - } - - return $totalWidth; - } -} diff --git a/vendor/symfony/console/Descriptor/XmlDescriptor.php b/vendor/symfony/console/Descriptor/XmlDescriptor.php deleted file mode 100644 index 72580fd9..00000000 --- a/vendor/symfony/console/Descriptor/XmlDescriptor.php +++ /dev/null @@ -1,232 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Descriptor; - -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputArgument; -use Symfony\Component\Console\Input\InputDefinition; -use Symfony\Component\Console\Input\InputOption; - -/** - * XML descriptor. - * - * @author Jean-François Simon - * - * @internal - */ -class XmlDescriptor extends Descriptor -{ - public function getInputDefinitionDocument(InputDefinition $definition): \DOMDocument - { - $dom = new \DOMDocument('1.0', 'UTF-8'); - $dom->appendChild($definitionXML = $dom->createElement('definition')); - - $definitionXML->appendChild($argumentsXML = $dom->createElement('arguments')); - foreach ($definition->getArguments() as $argument) { - $this->appendDocument($argumentsXML, $this->getInputArgumentDocument($argument)); - } - - $definitionXML->appendChild($optionsXML = $dom->createElement('options')); - foreach ($definition->getOptions() as $option) { - $this->appendDocument($optionsXML, $this->getInputOptionDocument($option)); - } - - return $dom; - } - - public function getCommandDocument(Command $command, bool $short = false): \DOMDocument - { - $dom = new \DOMDocument('1.0', 'UTF-8'); - $dom->appendChild($commandXML = $dom->createElement('command')); - - $commandXML->setAttribute('id', $command->getName()); - $commandXML->setAttribute('name', $command->getName()); - $commandXML->setAttribute('hidden', $command->isHidden() ? 1 : 0); - - $commandXML->appendChild($usagesXML = $dom->createElement('usages')); - - $commandXML->appendChild($descriptionXML = $dom->createElement('description')); - $descriptionXML->appendChild($dom->createTextNode(str_replace("\n", "\n ", $command->getDescription()))); - - if ($short) { - foreach ($command->getAliases() as $usage) { - $usagesXML->appendChild($dom->createElement('usage', $usage)); - } - } else { - $command->mergeApplicationDefinition(false); - - foreach (array_merge([$command->getSynopsis()], $command->getAliases(), $command->getUsages()) as $usage) { - $usagesXML->appendChild($dom->createElement('usage', $usage)); - } - - $commandXML->appendChild($helpXML = $dom->createElement('help')); - $helpXML->appendChild($dom->createTextNode(str_replace("\n", "\n ", $command->getProcessedHelp()))); - - $definitionXML = $this->getInputDefinitionDocument($command->getDefinition()); - $this->appendDocument($commandXML, $definitionXML->getElementsByTagName('definition')->item(0)); - } - - return $dom; - } - - public function getApplicationDocument(Application $application, string $namespace = null, bool $short = false): \DOMDocument - { - $dom = new \DOMDocument('1.0', 'UTF-8'); - $dom->appendChild($rootXml = $dom->createElement('symfony')); - - if ('UNKNOWN' !== $application->getName()) { - $rootXml->setAttribute('name', $application->getName()); - if ('UNKNOWN' !== $application->getVersion()) { - $rootXml->setAttribute('version', $application->getVersion()); - } - } - - $rootXml->appendChild($commandsXML = $dom->createElement('commands')); - - $description = new ApplicationDescription($application, $namespace, true); - - if ($namespace) { - $commandsXML->setAttribute('namespace', $namespace); - } - - foreach ($description->getCommands() as $command) { - $this->appendDocument($commandsXML, $this->getCommandDocument($command, $short)); - } - - if (!$namespace) { - $rootXml->appendChild($namespacesXML = $dom->createElement('namespaces')); - - foreach ($description->getNamespaces() as $namespaceDescription) { - $namespacesXML->appendChild($namespaceArrayXML = $dom->createElement('namespace')); - $namespaceArrayXML->setAttribute('id', $namespaceDescription['id']); - - foreach ($namespaceDescription['commands'] as $name) { - $namespaceArrayXML->appendChild($commandXML = $dom->createElement('command')); - $commandXML->appendChild($dom->createTextNode($name)); - } - } - } - - return $dom; - } - - protected function describeInputArgument(InputArgument $argument, array $options = []): void - { - $this->writeDocument($this->getInputArgumentDocument($argument)); - } - - protected function describeInputOption(InputOption $option, array $options = []): void - { - $this->writeDocument($this->getInputOptionDocument($option)); - } - - protected function describeInputDefinition(InputDefinition $definition, array $options = []): void - { - $this->writeDocument($this->getInputDefinitionDocument($definition)); - } - - protected function describeCommand(Command $command, array $options = []): void - { - $this->writeDocument($this->getCommandDocument($command, $options['short'] ?? false)); - } - - protected function describeApplication(Application $application, array $options = []): void - { - $this->writeDocument($this->getApplicationDocument($application, $options['namespace'] ?? null, $options['short'] ?? false)); - } - - /** - * Appends document children to parent node. - */ - private function appendDocument(\DOMNode $parentNode, \DOMNode $importedParent): void - { - foreach ($importedParent->childNodes as $childNode) { - $parentNode->appendChild($parentNode->ownerDocument->importNode($childNode, true)); - } - } - - /** - * Writes DOM document. - */ - private function writeDocument(\DOMDocument $dom): void - { - $dom->formatOutput = true; - $this->write($dom->saveXML()); - } - - private function getInputArgumentDocument(InputArgument $argument): \DOMDocument - { - $dom = new \DOMDocument('1.0', 'UTF-8'); - - $dom->appendChild($objectXML = $dom->createElement('argument')); - $objectXML->setAttribute('name', $argument->getName()); - $objectXML->setAttribute('is_required', $argument->isRequired() ? 1 : 0); - $objectXML->setAttribute('is_array', $argument->isArray() ? 1 : 0); - $objectXML->appendChild($descriptionXML = $dom->createElement('description')); - $descriptionXML->appendChild($dom->createTextNode($argument->getDescription())); - - $objectXML->appendChild($defaultsXML = $dom->createElement('defaults')); - $defaults = \is_array($argument->getDefault()) ? $argument->getDefault() : (\is_bool($argument->getDefault()) ? [var_export($argument->getDefault(), true)] : ($argument->getDefault() ? [$argument->getDefault()] : [])); - foreach ($defaults as $default) { - $defaultsXML->appendChild($defaultXML = $dom->createElement('default')); - $defaultXML->appendChild($dom->createTextNode($default)); - } - - return $dom; - } - - private function getInputOptionDocument(InputOption $option): \DOMDocument - { - $dom = new \DOMDocument('1.0', 'UTF-8'); - - $dom->appendChild($objectXML = $dom->createElement('option')); - $objectXML->setAttribute('name', '--'.$option->getName()); - $pos = strpos($option->getShortcut() ?? '', '|'); - if (false !== $pos) { - $objectXML->setAttribute('shortcut', '-'.substr($option->getShortcut(), 0, $pos)); - $objectXML->setAttribute('shortcuts', '-'.str_replace('|', '|-', $option->getShortcut())); - } else { - $objectXML->setAttribute('shortcut', $option->getShortcut() ? '-'.$option->getShortcut() : ''); - } - $objectXML->setAttribute('accept_value', $option->acceptValue() ? 1 : 0); - $objectXML->setAttribute('is_value_required', $option->isValueRequired() ? 1 : 0); - $objectXML->setAttribute('is_multiple', $option->isArray() ? 1 : 0); - $objectXML->appendChild($descriptionXML = $dom->createElement('description')); - $descriptionXML->appendChild($dom->createTextNode($option->getDescription())); - - if ($option->acceptValue()) { - $defaults = \is_array($option->getDefault()) ? $option->getDefault() : (\is_bool($option->getDefault()) ? [var_export($option->getDefault(), true)] : ($option->getDefault() ? [$option->getDefault()] : [])); - $objectXML->appendChild($defaultsXML = $dom->createElement('defaults')); - - if (!empty($defaults)) { - foreach ($defaults as $default) { - $defaultsXML->appendChild($defaultXML = $dom->createElement('default')); - $defaultXML->appendChild($dom->createTextNode($default)); - } - } - } - - if ($option->isNegatable()) { - $dom->appendChild($objectXML = $dom->createElement('option')); - $objectXML->setAttribute('name', '--no-'.$option->getName()); - $objectXML->setAttribute('shortcut', ''); - $objectXML->setAttribute('accept_value', 0); - $objectXML->setAttribute('is_value_required', 0); - $objectXML->setAttribute('is_multiple', 0); - $objectXML->appendChild($descriptionXML = $dom->createElement('description')); - $descriptionXML->appendChild($dom->createTextNode('Negate the "--'.$option->getName().'" option')); - } - - return $dom; - } -} diff --git a/vendor/symfony/console/Event/ConsoleCommandEvent.php b/vendor/symfony/console/Event/ConsoleCommandEvent.php deleted file mode 100644 index 0757a23f..00000000 --- a/vendor/symfony/console/Event/ConsoleCommandEvent.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Event; - -/** - * Allows to do things before the command is executed, like skipping the command or executing code before the command is - * going to be executed. - * - * Changing the input arguments will have no effect. - * - * @author Fabien Potencier - */ -final class ConsoleCommandEvent extends ConsoleEvent -{ - /** - * The return code for skipped commands, this will also be passed into the terminate event. - */ - public const RETURN_CODE_DISABLED = 113; - - /** - * Indicates if the command should be run or skipped. - */ - private bool $commandShouldRun = true; - - /** - * Disables the command, so it won't be run. - */ - public function disableCommand(): bool - { - return $this->commandShouldRun = false; - } - - public function enableCommand(): bool - { - return $this->commandShouldRun = true; - } - - /** - * Returns true if the command is runnable, false otherwise. - */ - public function commandShouldRun(): bool - { - return $this->commandShouldRun; - } -} diff --git a/vendor/symfony/console/Event/ConsoleErrorEvent.php b/vendor/symfony/console/Event/ConsoleErrorEvent.php deleted file mode 100644 index d4a69121..00000000 --- a/vendor/symfony/console/Event/ConsoleErrorEvent.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Event; - -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * Allows to handle throwables thrown while running a command. - * - * @author Wouter de Jong - */ -final class ConsoleErrorEvent extends ConsoleEvent -{ - private \Throwable $error; - private int $exitCode; - - public function __construct(InputInterface $input, OutputInterface $output, \Throwable $error, Command $command = null) - { - parent::__construct($command, $input, $output); - - $this->error = $error; - } - - public function getError(): \Throwable - { - return $this->error; - } - - public function setError(\Throwable $error): void - { - $this->error = $error; - } - - public function setExitCode(int $exitCode): void - { - $this->exitCode = $exitCode; - - $r = new \ReflectionProperty($this->error, 'code'); - $r->setValue($this->error, $this->exitCode); - } - - public function getExitCode(): int - { - return $this->exitCode ?? (\is_int($this->error->getCode()) && 0 !== $this->error->getCode() ? $this->error->getCode() : 1); - } -} diff --git a/vendor/symfony/console/Event/ConsoleEvent.php b/vendor/symfony/console/Event/ConsoleEvent.php deleted file mode 100644 index 6ba1615f..00000000 --- a/vendor/symfony/console/Event/ConsoleEvent.php +++ /dev/null @@ -1,61 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Event; - -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Contracts\EventDispatcher\Event; - -/** - * Allows to inspect input and output of a command. - * - * @author Francesco Levorato - */ -class ConsoleEvent extends Event -{ - protected $command; - - private InputInterface $input; - private OutputInterface $output; - - public function __construct(?Command $command, InputInterface $input, OutputInterface $output) - { - $this->command = $command; - $this->input = $input; - $this->output = $output; - } - - /** - * Gets the command that is executed. - */ - public function getCommand(): ?Command - { - return $this->command; - } - - /** - * Gets the input instance. - */ - public function getInput(): InputInterface - { - return $this->input; - } - - /** - * Gets the output instance. - */ - public function getOutput(): OutputInterface - { - return $this->output; - } -} diff --git a/vendor/symfony/console/Event/ConsoleSignalEvent.php b/vendor/symfony/console/Event/ConsoleSignalEvent.php deleted file mode 100644 index 95af1f91..00000000 --- a/vendor/symfony/console/Event/ConsoleSignalEvent.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Event; - -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author marie - */ -final class ConsoleSignalEvent extends ConsoleEvent -{ - private int $handlingSignal; - private int|false $exitCode; - - public function __construct(Command $command, InputInterface $input, OutputInterface $output, int $handlingSignal, int|false $exitCode = 0) - { - parent::__construct($command, $input, $output); - $this->handlingSignal = $handlingSignal; - $this->exitCode = $exitCode; - } - - public function getHandlingSignal(): int - { - return $this->handlingSignal; - } - - public function setExitCode(int $exitCode): void - { - if ($exitCode < 0 || $exitCode > 255) { - throw new \InvalidArgumentException('Exit code must be between 0 and 255.'); - } - - $this->exitCode = $exitCode; - } - - public function abortExit(): void - { - $this->exitCode = false; - } - - public function getExitCode(): int|false - { - return $this->exitCode; - } -} diff --git a/vendor/symfony/console/Event/ConsoleTerminateEvent.php b/vendor/symfony/console/Event/ConsoleTerminateEvent.php deleted file mode 100644 index 38f7253a..00000000 --- a/vendor/symfony/console/Event/ConsoleTerminateEvent.php +++ /dev/null @@ -1,50 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Event; - -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * Allows to manipulate the exit code of a command after its execution. - * - * @author Francesco Levorato - * @author Jules Pietri - */ -final class ConsoleTerminateEvent extends ConsoleEvent -{ - public function __construct( - Command $command, - InputInterface $input, - OutputInterface $output, - private int $exitCode, - private readonly ?int $interruptingSignal = null, - ) { - parent::__construct($command, $input, $output); - } - - public function setExitCode(int $exitCode): void - { - $this->exitCode = $exitCode; - } - - public function getExitCode(): int - { - return $this->exitCode; - } - - public function getInterruptingSignal(): ?int - { - return $this->interruptingSignal; - } -} diff --git a/vendor/symfony/console/EventListener/ErrorListener.php b/vendor/symfony/console/EventListener/ErrorListener.php deleted file mode 100644 index 9925a5f7..00000000 --- a/vendor/symfony/console/EventListener/ErrorListener.php +++ /dev/null @@ -1,101 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\EventListener; - -use Psr\Log\LoggerInterface; -use Symfony\Component\Console\ConsoleEvents; -use Symfony\Component\Console\Event\ConsoleErrorEvent; -use Symfony\Component\Console\Event\ConsoleEvent; -use Symfony\Component\Console\Event\ConsoleTerminateEvent; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; - -/** - * @author James Halsall - * @author Robin Chalas - */ -class ErrorListener implements EventSubscriberInterface -{ - private ?LoggerInterface $logger; - - public function __construct(LoggerInterface $logger = null) - { - $this->logger = $logger; - } - - /** - * @return void - */ - public function onConsoleError(ConsoleErrorEvent $event) - { - if (null === $this->logger) { - return; - } - - $error = $event->getError(); - - if (!$inputString = $this->getInputString($event)) { - $this->logger->critical('An error occurred while using the console. Message: "{message}"', ['exception' => $error, 'message' => $error->getMessage()]); - - return; - } - - $this->logger->critical('Error thrown while running command "{command}". Message: "{message}"', ['exception' => $error, 'command' => $inputString, 'message' => $error->getMessage()]); - } - - /** - * @return void - */ - public function onConsoleTerminate(ConsoleTerminateEvent $event) - { - if (null === $this->logger) { - return; - } - - $exitCode = $event->getExitCode(); - - if (0 === $exitCode) { - return; - } - - if (!$inputString = $this->getInputString($event)) { - $this->logger->debug('The console exited with code "{code}"', ['code' => $exitCode]); - - return; - } - - $this->logger->debug('Command "{command}" exited with code "{code}"', ['command' => $inputString, 'code' => $exitCode]); - } - - public static function getSubscribedEvents(): array - { - return [ - ConsoleEvents::ERROR => ['onConsoleError', -128], - ConsoleEvents::TERMINATE => ['onConsoleTerminate', -128], - ]; - } - - private static function getInputString(ConsoleEvent $event): ?string - { - $commandName = $event->getCommand()?->getName(); - $input = $event->getInput(); - - if ($input instanceof \Stringable) { - if ($commandName) { - return str_replace(["'$commandName'", "\"$commandName\""], $commandName, (string) $input); - } - - return (string) $input; - } - - return $commandName; - } -} diff --git a/vendor/symfony/console/Exception/CommandNotFoundException.php b/vendor/symfony/console/Exception/CommandNotFoundException.php deleted file mode 100644 index 1e9f1c79..00000000 --- a/vendor/symfony/console/Exception/CommandNotFoundException.php +++ /dev/null @@ -1,43 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Exception; - -/** - * Represents an incorrect command name typed in the console. - * - * @author Jérôme Tamarelle - */ -class CommandNotFoundException extends \InvalidArgumentException implements ExceptionInterface -{ - private array $alternatives; - - /** - * @param string $message Exception message to throw - * @param string[] $alternatives List of similar defined names - * @param int $code Exception code - * @param \Throwable|null $previous Previous exception used for the exception chaining - */ - public function __construct(string $message, array $alternatives = [], int $code = 0, \Throwable $previous = null) - { - parent::__construct($message, $code, $previous); - - $this->alternatives = $alternatives; - } - - /** - * @return string[] - */ - public function getAlternatives(): array - { - return $this->alternatives; - } -} diff --git a/vendor/symfony/console/Exception/ExceptionInterface.php b/vendor/symfony/console/Exception/ExceptionInterface.php deleted file mode 100644 index 1624e13d..00000000 --- a/vendor/symfony/console/Exception/ExceptionInterface.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Exception; - -/** - * ExceptionInterface. - * - * @author Jérôme Tamarelle - */ -interface ExceptionInterface extends \Throwable -{ -} diff --git a/vendor/symfony/console/Exception/InvalidArgumentException.php b/vendor/symfony/console/Exception/InvalidArgumentException.php deleted file mode 100644 index 07cc0b61..00000000 --- a/vendor/symfony/console/Exception/InvalidArgumentException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Exception; - -/** - * @author Jérôme Tamarelle - */ -class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface -{ -} diff --git a/vendor/symfony/console/Exception/InvalidOptionException.php b/vendor/symfony/console/Exception/InvalidOptionException.php deleted file mode 100644 index 5cf62792..00000000 --- a/vendor/symfony/console/Exception/InvalidOptionException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Exception; - -/** - * Represents an incorrect option name or value typed in the console. - * - * @author Jérôme Tamarelle - */ -class InvalidOptionException extends \InvalidArgumentException implements ExceptionInterface -{ -} diff --git a/vendor/symfony/console/Exception/LogicException.php b/vendor/symfony/console/Exception/LogicException.php deleted file mode 100644 index fc37b8d8..00000000 --- a/vendor/symfony/console/Exception/LogicException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Exception; - -/** - * @author Jérôme Tamarelle - */ -class LogicException extends \LogicException implements ExceptionInterface -{ -} diff --git a/vendor/symfony/console/Exception/MissingInputException.php b/vendor/symfony/console/Exception/MissingInputException.php deleted file mode 100644 index 04f02ade..00000000 --- a/vendor/symfony/console/Exception/MissingInputException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Exception; - -/** - * Represents failure to read input from stdin. - * - * @author Gabriel Ostrolucký - */ -class MissingInputException extends RuntimeException implements ExceptionInterface -{ -} diff --git a/vendor/symfony/console/Exception/NamespaceNotFoundException.php b/vendor/symfony/console/Exception/NamespaceNotFoundException.php deleted file mode 100644 index dd16e450..00000000 --- a/vendor/symfony/console/Exception/NamespaceNotFoundException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Exception; - -/** - * Represents an incorrect namespace typed in the console. - * - * @author Pierre du Plessis - */ -class NamespaceNotFoundException extends CommandNotFoundException -{ -} diff --git a/vendor/symfony/console/Exception/RunCommandFailedException.php b/vendor/symfony/console/Exception/RunCommandFailedException.php deleted file mode 100644 index 5d87ec94..00000000 --- a/vendor/symfony/console/Exception/RunCommandFailedException.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Exception; - -use Symfony\Component\Console\Messenger\RunCommandContext; - -/** - * @author Kevin Bond - */ -final class RunCommandFailedException extends RuntimeException -{ - public function __construct(\Throwable|string $exception, public readonly RunCommandContext $context) - { - parent::__construct( - $exception instanceof \Throwable ? $exception->getMessage() : $exception, - $exception instanceof \Throwable ? $exception->getCode() : 0, - $exception instanceof \Throwable ? $exception : null, - ); - } -} diff --git a/vendor/symfony/console/Exception/RuntimeException.php b/vendor/symfony/console/Exception/RuntimeException.php deleted file mode 100644 index 51d7d80a..00000000 --- a/vendor/symfony/console/Exception/RuntimeException.php +++ /dev/null @@ -1,19 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Exception; - -/** - * @author Jérôme Tamarelle - */ -class RuntimeException extends \RuntimeException implements ExceptionInterface -{ -} diff --git a/vendor/symfony/console/Formatter/NullOutputFormatter.php b/vendor/symfony/console/Formatter/NullOutputFormatter.php deleted file mode 100644 index 5c11c764..00000000 --- a/vendor/symfony/console/Formatter/NullOutputFormatter.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Formatter; - -/** - * @author Tien Xuan Vo - */ -final class NullOutputFormatter implements OutputFormatterInterface -{ - private NullOutputFormatterStyle $style; - - public function format(?string $message): ?string - { - return null; - } - - public function getStyle(string $name): OutputFormatterStyleInterface - { - // to comply with the interface we must return a OutputFormatterStyleInterface - return $this->style ??= new NullOutputFormatterStyle(); - } - - public function hasStyle(string $name): bool - { - return false; - } - - public function isDecorated(): bool - { - return false; - } - - public function setDecorated(bool $decorated): void - { - // do nothing - } - - public function setStyle(string $name, OutputFormatterStyleInterface $style): void - { - // do nothing - } -} diff --git a/vendor/symfony/console/Formatter/NullOutputFormatterStyle.php b/vendor/symfony/console/Formatter/NullOutputFormatterStyle.php deleted file mode 100644 index c2ce7d14..00000000 --- a/vendor/symfony/console/Formatter/NullOutputFormatterStyle.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Formatter; - -/** - * @author Tien Xuan Vo - */ -final class NullOutputFormatterStyle implements OutputFormatterStyleInterface -{ - public function apply(string $text): string - { - return $text; - } - - public function setBackground(string $color = null): void - { - if (1 > \func_num_args()) { - trigger_deprecation('symfony/console', '6.2', 'Calling "%s()" without any arguments is deprecated, pass null explicitly instead.', __METHOD__); - } - // do nothing - } - - public function setForeground(string $color = null): void - { - if (1 > \func_num_args()) { - trigger_deprecation('symfony/console', '6.2', 'Calling "%s()" without any arguments is deprecated, pass null explicitly instead.', __METHOD__); - } - // do nothing - } - - public function setOption(string $option): void - { - // do nothing - } - - public function setOptions(array $options): void - { - // do nothing - } - - public function unsetOption(string $option): void - { - // do nothing - } -} diff --git a/vendor/symfony/console/Formatter/OutputFormatter.php b/vendor/symfony/console/Formatter/OutputFormatter.php deleted file mode 100644 index 3e4897c3..00000000 --- a/vendor/symfony/console/Formatter/OutputFormatter.php +++ /dev/null @@ -1,277 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Formatter; - -use Symfony\Component\Console\Exception\InvalidArgumentException; - -use function Symfony\Component\String\b; - -/** - * Formatter class for console output. - * - * @author Konstantin Kudryashov - * @author Roland Franssen - */ -class OutputFormatter implements WrappableOutputFormatterInterface -{ - private bool $decorated; - private array $styles = []; - private OutputFormatterStyleStack $styleStack; - - public function __clone() - { - $this->styleStack = clone $this->styleStack; - foreach ($this->styles as $key => $value) { - $this->styles[$key] = clone $value; - } - } - - /** - * Escapes "<" and ">" special chars in given text. - */ - public static function escape(string $text): string - { - $text = preg_replace('/([^\\\\]|^)([<>])/', '$1\\\\$2', $text); - - return self::escapeTrailingBackslash($text); - } - - /** - * Escapes trailing "\" in given text. - * - * @internal - */ - public static function escapeTrailingBackslash(string $text): string - { - if (str_ends_with($text, '\\')) { - $len = \strlen($text); - $text = rtrim($text, '\\'); - $text = str_replace("\0", '', $text); - $text .= str_repeat("\0", $len - \strlen($text)); - } - - return $text; - } - - /** - * Initializes console output formatter. - * - * @param OutputFormatterStyleInterface[] $styles Array of "name => FormatterStyle" instances - */ - public function __construct(bool $decorated = false, array $styles = []) - { - $this->decorated = $decorated; - - $this->setStyle('error', new OutputFormatterStyle('white', 'red')); - $this->setStyle('info', new OutputFormatterStyle('green')); - $this->setStyle('comment', new OutputFormatterStyle('yellow')); - $this->setStyle('question', new OutputFormatterStyle('black', 'cyan')); - - foreach ($styles as $name => $style) { - $this->setStyle($name, $style); - } - - $this->styleStack = new OutputFormatterStyleStack(); - } - - /** - * @return void - */ - public function setDecorated(bool $decorated) - { - $this->decorated = $decorated; - } - - public function isDecorated(): bool - { - return $this->decorated; - } - - /** - * @return void - */ - public function setStyle(string $name, OutputFormatterStyleInterface $style) - { - $this->styles[strtolower($name)] = $style; - } - - public function hasStyle(string $name): bool - { - return isset($this->styles[strtolower($name)]); - } - - public function getStyle(string $name): OutputFormatterStyleInterface - { - if (!$this->hasStyle($name)) { - throw new InvalidArgumentException(sprintf('Undefined style: "%s".', $name)); - } - - return $this->styles[strtolower($name)]; - } - - public function format(?string $message): ?string - { - return $this->formatAndWrap($message, 0); - } - - /** - * @return string - */ - public function formatAndWrap(?string $message, int $width) - { - if (null === $message) { - return ''; - } - - $offset = 0; - $output = ''; - $openTagRegex = '[a-z](?:[^\\\\<>]*+ | \\\\.)*'; - $closeTagRegex = '[a-z][^<>]*+'; - $currentLineLength = 0; - preg_match_all("#<(($openTagRegex) | /($closeTagRegex)?)>#ix", $message, $matches, \PREG_OFFSET_CAPTURE); - foreach ($matches[0] as $i => $match) { - $pos = $match[1]; - $text = $match[0]; - - if (0 != $pos && '\\' == $message[$pos - 1]) { - continue; - } - - // add the text up to the next tag - $output .= $this->applyCurrentStyle(substr($message, $offset, $pos - $offset), $output, $width, $currentLineLength); - $offset = $pos + \strlen($text); - - // opening tag? - if ($open = '/' !== $text[1]) { - $tag = $matches[1][$i][0]; - } else { - $tag = $matches[3][$i][0] ?? ''; - } - - if (!$open && !$tag) { - // - $this->styleStack->pop(); - } elseif (null === $style = $this->createStyleFromString($tag)) { - $output .= $this->applyCurrentStyle($text, $output, $width, $currentLineLength); - } elseif ($open) { - $this->styleStack->push($style); - } else { - $this->styleStack->pop($style); - } - } - - $output .= $this->applyCurrentStyle(substr($message, $offset), $output, $width, $currentLineLength); - - return strtr($output, ["\0" => '\\', '\\<' => '<', '\\>' => '>']); - } - - public function getStyleStack(): OutputFormatterStyleStack - { - return $this->styleStack; - } - - /** - * Tries to create new style instance from string. - */ - private function createStyleFromString(string $string): ?OutputFormatterStyleInterface - { - if (isset($this->styles[$string])) { - return $this->styles[$string]; - } - - if (!preg_match_all('/([^=]+)=([^;]+)(;|$)/', $string, $matches, \PREG_SET_ORDER)) { - return null; - } - - $style = new OutputFormatterStyle(); - foreach ($matches as $match) { - array_shift($match); - $match[0] = strtolower($match[0]); - - if ('fg' == $match[0]) { - $style->setForeground(strtolower($match[1])); - } elseif ('bg' == $match[0]) { - $style->setBackground(strtolower($match[1])); - } elseif ('href' === $match[0]) { - $url = preg_replace('{\\\\([<>])}', '$1', $match[1]); - $style->setHref($url); - } elseif ('options' === $match[0]) { - preg_match_all('([^,;]+)', strtolower($match[1]), $options); - $options = array_shift($options); - foreach ($options as $option) { - $style->setOption($option); - } - } else { - return null; - } - } - - return $style; - } - - /** - * Applies current style from stack to text, if must be applied. - */ - private function applyCurrentStyle(string $text, string $current, int $width, int &$currentLineLength): string - { - if ('' === $text) { - return ''; - } - - if (!$width) { - return $this->isDecorated() ? $this->styleStack->getCurrent()->apply($text) : $text; - } - - if (!$currentLineLength && '' !== $current) { - $text = ltrim($text); - } - - if ($currentLineLength) { - $prefix = substr($text, 0, $i = $width - $currentLineLength)."\n"; - $text = substr($text, $i); - } else { - $prefix = ''; - } - - preg_match('~(\\n)$~', $text, $matches); - $text = $prefix.$this->addLineBreaks($text, $width); - $text = rtrim($text, "\n").($matches[1] ?? ''); - - if (!$currentLineLength && '' !== $current && !str_ends_with($current, "\n")) { - $text = "\n".$text; - } - - $lines = explode("\n", $text); - - foreach ($lines as $line) { - $currentLineLength += \strlen($line); - if ($width <= $currentLineLength) { - $currentLineLength = 0; - } - } - - if ($this->isDecorated()) { - foreach ($lines as $i => $line) { - $lines[$i] = $this->styleStack->getCurrent()->apply($line); - } - } - - return implode("\n", $lines); - } - - private function addLineBreaks(string $text, int $width): string - { - $encoding = mb_detect_encoding($text, null, true) ?: 'UTF-8'; - - return b($text)->toCodePointString($encoding)->wordwrap($width, "\n", true)->toByteString($encoding); - } -} diff --git a/vendor/symfony/console/Formatter/OutputFormatterInterface.php b/vendor/symfony/console/Formatter/OutputFormatterInterface.php deleted file mode 100644 index 433cd419..00000000 --- a/vendor/symfony/console/Formatter/OutputFormatterInterface.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Formatter; - -/** - * Formatter interface for console output. - * - * @author Konstantin Kudryashov - */ -interface OutputFormatterInterface -{ - /** - * Sets the decorated flag. - * - * @return void - */ - public function setDecorated(bool $decorated); - - /** - * Whether the output will decorate messages. - */ - public function isDecorated(): bool; - - /** - * Sets a new style. - * - * @return void - */ - public function setStyle(string $name, OutputFormatterStyleInterface $style); - - /** - * Checks if output formatter has style with specified name. - */ - public function hasStyle(string $name): bool; - - /** - * Gets style options from style with specified name. - * - * @throws \InvalidArgumentException When style isn't defined - */ - public function getStyle(string $name): OutputFormatterStyleInterface; - - /** - * Formats a message according to the given styles. - */ - public function format(?string $message): ?string; -} diff --git a/vendor/symfony/console/Formatter/OutputFormatterStyle.php b/vendor/symfony/console/Formatter/OutputFormatterStyle.php deleted file mode 100644 index 346a474c..00000000 --- a/vendor/symfony/console/Formatter/OutputFormatterStyle.php +++ /dev/null @@ -1,110 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Formatter; - -use Symfony\Component\Console\Color; - -/** - * Formatter style class for defining styles. - * - * @author Konstantin Kudryashov - */ -class OutputFormatterStyle implements OutputFormatterStyleInterface -{ - private Color $color; - private string $foreground; - private string $background; - private array $options; - private ?string $href = null; - private bool $handlesHrefGracefully; - - /** - * Initializes output formatter style. - * - * @param string|null $foreground The style foreground color name - * @param string|null $background The style background color name - */ - public function __construct(string $foreground = null, string $background = null, array $options = []) - { - $this->color = new Color($this->foreground = $foreground ?: '', $this->background = $background ?: '', $this->options = $options); - } - - /** - * @return void - */ - public function setForeground(string $color = null) - { - if (1 > \func_num_args()) { - trigger_deprecation('symfony/console', '6.2', 'Calling "%s()" without any arguments is deprecated, pass null explicitly instead.', __METHOD__); - } - $this->color = new Color($this->foreground = $color ?: '', $this->background, $this->options); - } - - /** - * @return void - */ - public function setBackground(string $color = null) - { - if (1 > \func_num_args()) { - trigger_deprecation('symfony/console', '6.2', 'Calling "%s()" without any arguments is deprecated, pass null explicitly instead.', __METHOD__); - } - $this->color = new Color($this->foreground, $this->background = $color ?: '', $this->options); - } - - public function setHref(string $url): void - { - $this->href = $url; - } - - /** - * @return void - */ - public function setOption(string $option) - { - $this->options[] = $option; - $this->color = new Color($this->foreground, $this->background, $this->options); - } - - /** - * @return void - */ - public function unsetOption(string $option) - { - $pos = array_search($option, $this->options); - if (false !== $pos) { - unset($this->options[$pos]); - } - - $this->color = new Color($this->foreground, $this->background, $this->options); - } - - /** - * @return void - */ - public function setOptions(array $options) - { - $this->color = new Color($this->foreground, $this->background, $this->options = $options); - } - - public function apply(string $text): string - { - $this->handlesHrefGracefully ??= 'JetBrains-JediTerm' !== getenv('TERMINAL_EMULATOR') - && (!getenv('KONSOLE_VERSION') || (int) getenv('KONSOLE_VERSION') > 201100) - && !isset($_SERVER['IDEA_INITIAL_DIRECTORY']); - - if (null !== $this->href && $this->handlesHrefGracefully) { - $text = "\033]8;;$this->href\033\\$text\033]8;;\033\\"; - } - - return $this->color->apply($text); - } -} diff --git a/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php b/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php deleted file mode 100644 index 3b15098c..00000000 --- a/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php +++ /dev/null @@ -1,60 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Formatter; - -/** - * Formatter style interface for defining styles. - * - * @author Konstantin Kudryashov - */ -interface OutputFormatterStyleInterface -{ - /** - * Sets style foreground color. - * - * @return void - */ - public function setForeground(?string $color); - - /** - * Sets style background color. - * - * @return void - */ - public function setBackground(?string $color); - - /** - * Sets some specific style option. - * - * @return void - */ - public function setOption(string $option); - - /** - * Unsets some specific style option. - * - * @return void - */ - public function unsetOption(string $option); - - /** - * Sets multiple style options at once. - * - * @return void - */ - public function setOptions(array $options); - - /** - * Applies the style to a given text. - */ - public function apply(string $text): string; -} diff --git a/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php b/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php deleted file mode 100644 index f98c2eff..00000000 --- a/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php +++ /dev/null @@ -1,107 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Formatter; - -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Contracts\Service\ResetInterface; - -/** - * @author Jean-François Simon - */ -class OutputFormatterStyleStack implements ResetInterface -{ - /** - * @var OutputFormatterStyleInterface[] - */ - private array $styles = []; - - private OutputFormatterStyleInterface $emptyStyle; - - public function __construct(OutputFormatterStyleInterface $emptyStyle = null) - { - $this->emptyStyle = $emptyStyle ?? new OutputFormatterStyle(); - $this->reset(); - } - - /** - * Resets stack (ie. empty internal arrays). - * - * @return void - */ - public function reset() - { - $this->styles = []; - } - - /** - * Pushes a style in the stack. - * - * @return void - */ - public function push(OutputFormatterStyleInterface $style) - { - $this->styles[] = $style; - } - - /** - * Pops a style from the stack. - * - * @throws InvalidArgumentException When style tags incorrectly nested - */ - public function pop(OutputFormatterStyleInterface $style = null): OutputFormatterStyleInterface - { - if (!$this->styles) { - return $this->emptyStyle; - } - - if (null === $style) { - return array_pop($this->styles); - } - - foreach (array_reverse($this->styles, true) as $index => $stackedStyle) { - if ($style->apply('') === $stackedStyle->apply('')) { - $this->styles = \array_slice($this->styles, 0, $index); - - return $stackedStyle; - } - } - - throw new InvalidArgumentException('Incorrectly nested style tag found.'); - } - - /** - * Computes current style with stacks top codes. - */ - public function getCurrent(): OutputFormatterStyleInterface - { - if (!$this->styles) { - return $this->emptyStyle; - } - - return $this->styles[\count($this->styles) - 1]; - } - - /** - * @return $this - */ - public function setEmptyStyle(OutputFormatterStyleInterface $emptyStyle): static - { - $this->emptyStyle = $emptyStyle; - - return $this; - } - - public function getEmptyStyle(): OutputFormatterStyleInterface - { - return $this->emptyStyle; - } -} diff --git a/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php b/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php deleted file mode 100644 index 746cd27e..00000000 --- a/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Formatter; - -/** - * Formatter interface for console output that supports word wrapping. - * - * @author Roland Franssen - */ -interface WrappableOutputFormatterInterface extends OutputFormatterInterface -{ - /** - * Formats a message according to the given styles, wrapping at `$width` (0 means no wrapping). - * - * @return string - */ - public function formatAndWrap(?string $message, int $width); -} diff --git a/vendor/symfony/console/Helper/DebugFormatterHelper.php b/vendor/symfony/console/Helper/DebugFormatterHelper.php deleted file mode 100644 index 9ea7fb91..00000000 --- a/vendor/symfony/console/Helper/DebugFormatterHelper.php +++ /dev/null @@ -1,98 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -/** - * Helps outputting debug information when running an external program from a command. - * - * An external program can be a Process, an HTTP request, or anything else. - * - * @author Fabien Potencier - */ -class DebugFormatterHelper extends Helper -{ - private const COLORS = ['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white', 'default']; - private array $started = []; - private int $count = -1; - - /** - * Starts a debug formatting session. - */ - public function start(string $id, string $message, string $prefix = 'RUN'): string - { - $this->started[$id] = ['border' => ++$this->count % \count(self::COLORS)]; - - return sprintf("%s %s %s\n", $this->getBorder($id), $prefix, $message); - } - - /** - * Adds progress to a formatting session. - */ - public function progress(string $id, string $buffer, bool $error = false, string $prefix = 'OUT', string $errorPrefix = 'ERR'): string - { - $message = ''; - - if ($error) { - if (isset($this->started[$id]['out'])) { - $message .= "\n"; - unset($this->started[$id]['out']); - } - if (!isset($this->started[$id]['err'])) { - $message .= sprintf('%s %s ', $this->getBorder($id), $errorPrefix); - $this->started[$id]['err'] = true; - } - - $message .= str_replace("\n", sprintf("\n%s %s ", $this->getBorder($id), $errorPrefix), $buffer); - } else { - if (isset($this->started[$id]['err'])) { - $message .= "\n"; - unset($this->started[$id]['err']); - } - if (!isset($this->started[$id]['out'])) { - $message .= sprintf('%s %s ', $this->getBorder($id), $prefix); - $this->started[$id]['out'] = true; - } - - $message .= str_replace("\n", sprintf("\n%s %s ", $this->getBorder($id), $prefix), $buffer); - } - - return $message; - } - - /** - * Stops a formatting session. - */ - public function stop(string $id, string $message, bool $successful, string $prefix = 'RES'): string - { - $trailingEOL = isset($this->started[$id]['out']) || isset($this->started[$id]['err']) ? "\n" : ''; - - if ($successful) { - return sprintf("%s%s %s %s\n", $trailingEOL, $this->getBorder($id), $prefix, $message); - } - - $message = sprintf("%s%s %s %s\n", $trailingEOL, $this->getBorder($id), $prefix, $message); - - unset($this->started[$id]['out'], $this->started[$id]['err']); - - return $message; - } - - private function getBorder(string $id): string - { - return sprintf(' ', self::COLORS[$this->started[$id]['border']]); - } - - public function getName(): string - { - return 'debug_formatter'; - } -} diff --git a/vendor/symfony/console/Helper/DescriptorHelper.php b/vendor/symfony/console/Helper/DescriptorHelper.php deleted file mode 100644 index eb32bce8..00000000 --- a/vendor/symfony/console/Helper/DescriptorHelper.php +++ /dev/null @@ -1,93 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Descriptor\DescriptorInterface; -use Symfony\Component\Console\Descriptor\JsonDescriptor; -use Symfony\Component\Console\Descriptor\MarkdownDescriptor; -use Symfony\Component\Console\Descriptor\ReStructuredTextDescriptor; -use Symfony\Component\Console\Descriptor\TextDescriptor; -use Symfony\Component\Console\Descriptor\XmlDescriptor; -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * This class adds helper method to describe objects in various formats. - * - * @author Jean-François Simon - */ -class DescriptorHelper extends Helper -{ - /** - * @var DescriptorInterface[] - */ - private array $descriptors = []; - - public function __construct() - { - $this - ->register('txt', new TextDescriptor()) - ->register('xml', new XmlDescriptor()) - ->register('json', new JsonDescriptor()) - ->register('md', new MarkdownDescriptor()) - ->register('rst', new ReStructuredTextDescriptor()) - ; - } - - /** - * Describes an object if supported. - * - * Available options are: - * * format: string, the output format name - * * raw_text: boolean, sets output type as raw - * - * @return void - * - * @throws InvalidArgumentException when the given format is not supported - */ - public function describe(OutputInterface $output, ?object $object, array $options = []) - { - $options = array_merge([ - 'raw_text' => false, - 'format' => 'txt', - ], $options); - - if (!isset($this->descriptors[$options['format']])) { - throw new InvalidArgumentException(sprintf('Unsupported format "%s".', $options['format'])); - } - - $descriptor = $this->descriptors[$options['format']]; - $descriptor->describe($output, $object, $options); - } - - /** - * Registers a descriptor. - * - * @return $this - */ - public function register(string $format, DescriptorInterface $descriptor): static - { - $this->descriptors[$format] = $descriptor; - - return $this; - } - - public function getName(): string - { - return 'descriptor'; - } - - public function getFormats(): array - { - return array_keys($this->descriptors); - } -} diff --git a/vendor/symfony/console/Helper/Dumper.php b/vendor/symfony/console/Helper/Dumper.php deleted file mode 100644 index 8c6a94d5..00000000 --- a/vendor/symfony/console/Helper/Dumper.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\VarDumper\Cloner\ClonerInterface; -use Symfony\Component\VarDumper\Cloner\VarCloner; -use Symfony\Component\VarDumper\Dumper\CliDumper; - -/** - * @author Roland Franssen - */ -final class Dumper -{ - private OutputInterface $output; - private ?CliDumper $dumper; - private ?ClonerInterface $cloner; - private \Closure $handler; - - public function __construct(OutputInterface $output, CliDumper $dumper = null, ClonerInterface $cloner = null) - { - $this->output = $output; - $this->dumper = $dumper; - $this->cloner = $cloner; - - if (class_exists(CliDumper::class)) { - $this->handler = function ($var): string { - $dumper = $this->dumper ??= new CliDumper(null, null, CliDumper::DUMP_LIGHT_ARRAY | CliDumper::DUMP_COMMA_SEPARATOR); - $dumper->setColors($this->output->isDecorated()); - - return rtrim($dumper->dump(($this->cloner ??= new VarCloner())->cloneVar($var)->withRefHandles(false), true)); - }; - } else { - $this->handler = fn ($var): string => match (true) { - null === $var => 'null', - true === $var => 'true', - false === $var => 'false', - \is_string($var) => '"'.$var.'"', - default => rtrim(print_r($var, true)), - }; - } - } - - public function __invoke(mixed $var): string - { - return ($this->handler)($var); - } -} diff --git a/vendor/symfony/console/Helper/FormatterHelper.php b/vendor/symfony/console/Helper/FormatterHelper.php deleted file mode 100644 index 279e4c79..00000000 --- a/vendor/symfony/console/Helper/FormatterHelper.php +++ /dev/null @@ -1,81 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Formatter\OutputFormatter; - -/** - * The Formatter class provides helpers to format messages. - * - * @author Fabien Potencier - */ -class FormatterHelper extends Helper -{ - /** - * Formats a message within a section. - */ - public function formatSection(string $section, string $message, string $style = 'info'): string - { - return sprintf('<%s>[%s] %s', $style, $section, $style, $message); - } - - /** - * Formats a message as a block of text. - */ - public function formatBlock(string|array $messages, string $style, bool $large = false): string - { - if (!\is_array($messages)) { - $messages = [$messages]; - } - - $len = 0; - $lines = []; - foreach ($messages as $message) { - $message = OutputFormatter::escape($message); - $lines[] = sprintf($large ? ' %s ' : ' %s ', $message); - $len = max(self::width($message) + ($large ? 4 : 2), $len); - } - - $messages = $large ? [str_repeat(' ', $len)] : []; - for ($i = 0; isset($lines[$i]); ++$i) { - $messages[] = $lines[$i].str_repeat(' ', $len - self::width($lines[$i])); - } - if ($large) { - $messages[] = str_repeat(' ', $len); - } - - for ($i = 0; isset($messages[$i]); ++$i) { - $messages[$i] = sprintf('<%s>%s', $style, $messages[$i], $style); - } - - return implode("\n", $messages); - } - - /** - * Truncates a message to the given length. - */ - public function truncate(string $message, int $length, string $suffix = '...'): string - { - $computedLength = $length - self::width($suffix); - - if ($computedLength > self::width($message)) { - return $message; - } - - return self::substr($message, 0, $length).$suffix; - } - - public function getName(): string - { - return 'formatter'; - } -} diff --git a/vendor/symfony/console/Helper/Helper.php b/vendor/symfony/console/Helper/Helper.php deleted file mode 100644 index c4b3df72..00000000 --- a/vendor/symfony/console/Helper/Helper.php +++ /dev/null @@ -1,174 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Formatter\OutputFormatterInterface; -use Symfony\Component\String\UnicodeString; - -/** - * Helper is the base class for all helper classes. - * - * @author Fabien Potencier - */ -abstract class Helper implements HelperInterface -{ - protected $helperSet; - - /** - * @return void - */ - public function setHelperSet(HelperSet $helperSet = null) - { - if (1 > \func_num_args()) { - trigger_deprecation('symfony/console', '6.2', 'Calling "%s()" without any arguments is deprecated, pass null explicitly instead.', __METHOD__); - } - $this->helperSet = $helperSet; - } - - public function getHelperSet(): ?HelperSet - { - return $this->helperSet; - } - - /** - * Returns the width of a string, using mb_strwidth if it is available. - * The width is how many characters positions the string will use. - */ - public static function width(?string $string): int - { - $string ??= ''; - - if (preg_match('//u', $string)) { - return (new UnicodeString($string))->width(false); - } - - if (false === $encoding = mb_detect_encoding($string, null, true)) { - return \strlen($string); - } - - return mb_strwidth($string, $encoding); - } - - /** - * Returns the length of a string, using mb_strlen if it is available. - * The length is related to how many bytes the string will use. - */ - public static function length(?string $string): int - { - $string ??= ''; - - if (preg_match('//u', $string)) { - return (new UnicodeString($string))->length(); - } - - if (false === $encoding = mb_detect_encoding($string, null, true)) { - return \strlen($string); - } - - return mb_strlen($string, $encoding); - } - - /** - * Returns the subset of a string, using mb_substr if it is available. - */ - public static function substr(?string $string, int $from, int $length = null): string - { - $string ??= ''; - - if (false === $encoding = mb_detect_encoding($string, null, true)) { - return substr($string, $from, $length); - } - - return mb_substr($string, $from, $length, $encoding); - } - - /** - * @return string - */ - public static function formatTime(int|float $secs, int $precision = 1) - { - $secs = (int) floor($secs); - - if (0 === $secs) { - return '< 1 sec'; - } - - static $timeFormats = [ - [1, '1 sec', 'secs'], - [60, '1 min', 'mins'], - [3600, '1 hr', 'hrs'], - [86400, '1 day', 'days'], - ]; - - $times = []; - foreach ($timeFormats as $index => $format) { - $seconds = isset($timeFormats[$index + 1]) ? $secs % $timeFormats[$index + 1][0] : $secs; - - if (isset($times[$index - $precision])) { - unset($times[$index - $precision]); - } - - if (0 === $seconds) { - continue; - } - - $unitCount = ($seconds / $format[0]); - $times[$index] = 1 === $unitCount ? $format[1] : $unitCount.' '.$format[2]; - - if ($secs === $seconds) { - break; - } - - $secs -= $seconds; - } - - return implode(', ', array_reverse($times)); - } - - /** - * @return string - */ - public static function formatMemory(int $memory) - { - if ($memory >= 1024 * 1024 * 1024) { - return sprintf('%.1f GiB', $memory / 1024 / 1024 / 1024); - } - - if ($memory >= 1024 * 1024) { - return sprintf('%.1f MiB', $memory / 1024 / 1024); - } - - if ($memory >= 1024) { - return sprintf('%d KiB', $memory / 1024); - } - - return sprintf('%d B', $memory); - } - - /** - * @return string - */ - public static function removeDecoration(OutputFormatterInterface $formatter, ?string $string) - { - $isDecorated = $formatter->isDecorated(); - $formatter->setDecorated(false); - // remove <...> formatting - $string = $formatter->format($string ?? ''); - // remove already formatted characters - $string = preg_replace("/\033\[[^m]*m/", '', $string ?? ''); - // remove terminal hyperlinks - $string = preg_replace('/\\033]8;[^;]*;[^\\033]*\\033\\\\/', '', $string ?? ''); - $formatter->setDecorated($isDecorated); - - return $string; - } -} diff --git a/vendor/symfony/console/Helper/HelperInterface.php b/vendor/symfony/console/Helper/HelperInterface.php deleted file mode 100644 index ab626c93..00000000 --- a/vendor/symfony/console/Helper/HelperInterface.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -/** - * HelperInterface is the interface all helpers must implement. - * - * @author Fabien Potencier - */ -interface HelperInterface -{ - /** - * Sets the helper set associated with this helper. - * - * @return void - */ - public function setHelperSet(?HelperSet $helperSet); - - /** - * Gets the helper set associated with this helper. - */ - public function getHelperSet(): ?HelperSet; - - /** - * Returns the canonical name of this helper. - * - * @return string - */ - public function getName(); -} diff --git a/vendor/symfony/console/Helper/HelperSet.php b/vendor/symfony/console/Helper/HelperSet.php deleted file mode 100644 index dc5d499c..00000000 --- a/vendor/symfony/console/Helper/HelperSet.php +++ /dev/null @@ -1,77 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Exception\InvalidArgumentException; - -/** - * HelperSet represents a set of helpers to be used with a command. - * - * @author Fabien Potencier - * - * @implements \IteratorAggregate - */ -class HelperSet implements \IteratorAggregate -{ - /** @var array */ - private array $helpers = []; - - /** - * @param HelperInterface[] $helpers - */ - public function __construct(array $helpers = []) - { - foreach ($helpers as $alias => $helper) { - $this->set($helper, \is_int($alias) ? null : $alias); - } - } - - /** - * @return void - */ - public function set(HelperInterface $helper, string $alias = null) - { - $this->helpers[$helper->getName()] = $helper; - if (null !== $alias) { - $this->helpers[$alias] = $helper; - } - - $helper->setHelperSet($this); - } - - /** - * Returns true if the helper if defined. - */ - public function has(string $name): bool - { - return isset($this->helpers[$name]); - } - - /** - * Gets a helper value. - * - * @throws InvalidArgumentException if the helper is not defined - */ - public function get(string $name): HelperInterface - { - if (!$this->has($name)) { - throw new InvalidArgumentException(sprintf('The helper "%s" is not defined.', $name)); - } - - return $this->helpers[$name]; - } - - public function getIterator(): \Traversable - { - return new \ArrayIterator($this->helpers); - } -} diff --git a/vendor/symfony/console/Helper/InputAwareHelper.php b/vendor/symfony/console/Helper/InputAwareHelper.php deleted file mode 100644 index 6f822597..00000000 --- a/vendor/symfony/console/Helper/InputAwareHelper.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Input\InputAwareInterface; -use Symfony\Component\Console\Input\InputInterface; - -/** - * An implementation of InputAwareInterface for Helpers. - * - * @author Wouter J - */ -abstract class InputAwareHelper extends Helper implements InputAwareInterface -{ - protected $input; - - /** - * @return void - */ - public function setInput(InputInterface $input) - { - $this->input = $input; - } -} diff --git a/vendor/symfony/console/Helper/OutputWrapper.php b/vendor/symfony/console/Helper/OutputWrapper.php deleted file mode 100644 index 2ec819c7..00000000 --- a/vendor/symfony/console/Helper/OutputWrapper.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -/** - * Simple output wrapper for "tagged outputs" instead of wordwrap(). This solution is based on a StackOverflow - * answer: https://stackoverflow.com/a/20434776/1476819 from user557597 (alias SLN). - * - * (?: - * # -- Words/Characters - * ( # (1 start) - * (?> # Atomic Group - Match words with valid breaks - * .{1,16} # 1-N characters - * # Followed by one of 4 prioritized, non-linebreak whitespace - * (?: # break types: - * (?<= [^\S\r\n] ) # 1. - Behind a non-linebreak whitespace - * [^\S\r\n]? # ( optionally accept an extra non-linebreak whitespace ) - * | (?= \r? \n ) # 2. - Ahead a linebreak - * | $ # 3. - EOS - * | [^\S\r\n] # 4. - Accept an extra non-linebreak whitespace - * ) - * ) # End atomic group - * | - * .{1,16} # No valid word breaks, just break on the N'th character - * ) # (1 end) - * (?: \r? \n )? # Optional linebreak after Words/Characters - * | - * # -- Or, Linebreak - * (?: \r? \n | $ ) # Stand alone linebreak or at EOS - * ) - * - * @author Krisztián Ferenczi - * - * @see https://stackoverflow.com/a/20434776/1476819 - */ -final class OutputWrapper -{ - private const TAG_OPEN_REGEX_SEGMENT = '[a-z](?:[^\\\\<>]*+ | \\\\.)*'; - private const TAG_CLOSE_REGEX_SEGMENT = '[a-z][^<>]*+'; - private const URL_PATTERN = 'https?://\S+'; - - public function __construct( - private bool $allowCutUrls = false - ) { - } - - public function wrap(string $text, int $width, string $break = "\n"): string - { - if (!$width) { - return $text; - } - - $tagPattern = sprintf('<(?:(?:%s)|/(?:%s)?)>', self::TAG_OPEN_REGEX_SEGMENT, self::TAG_CLOSE_REGEX_SEGMENT); - $limitPattern = "{1,$width}"; - $patternBlocks = [$tagPattern]; - if (!$this->allowCutUrls) { - $patternBlocks[] = self::URL_PATTERN; - } - $patternBlocks[] = '.'; - $blocks = implode('|', $patternBlocks); - $rowPattern = "(?:$blocks)$limitPattern"; - $pattern = sprintf('#(?:((?>(%1$s)((?<=[^\S\r\n])[^\S\r\n]?|(?=\r?\n)|$|[^\S\r\n]))|(%1$s))(?:\r?\n)?|(?:\r?\n|$))#imux', $rowPattern); - $output = rtrim(preg_replace($pattern, '\\1'.$break, $text), $break); - - return str_replace(' '.$break, $break, $output); - } -} diff --git a/vendor/symfony/console/Helper/ProcessHelper.php b/vendor/symfony/console/Helper/ProcessHelper.php deleted file mode 100644 index 26d35a1a..00000000 --- a/vendor/symfony/console/Helper/ProcessHelper.php +++ /dev/null @@ -1,137 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Process\Exception\ProcessFailedException; -use Symfony\Component\Process\Process; - -/** - * The ProcessHelper class provides helpers to run external processes. - * - * @author Fabien Potencier - * - * @final - */ -class ProcessHelper extends Helper -{ - /** - * Runs an external process. - * - * @param array|Process $cmd An instance of Process or an array of the command and arguments - * @param callable|null $callback A PHP callback to run whenever there is some - * output available on STDOUT or STDERR - */ - public function run(OutputInterface $output, array|Process $cmd, string $error = null, callable $callback = null, int $verbosity = OutputInterface::VERBOSITY_VERY_VERBOSE): Process - { - if (!class_exists(Process::class)) { - throw new \LogicException('The ProcessHelper cannot be run as the Process component is not installed. Try running "compose require symfony/process".'); - } - - if ($output instanceof ConsoleOutputInterface) { - $output = $output->getErrorOutput(); - } - - $formatter = $this->getHelperSet()->get('debug_formatter'); - - if ($cmd instanceof Process) { - $cmd = [$cmd]; - } - - if (\is_string($cmd[0] ?? null)) { - $process = new Process($cmd); - $cmd = []; - } elseif (($cmd[0] ?? null) instanceof Process) { - $process = $cmd[0]; - unset($cmd[0]); - } else { - throw new \InvalidArgumentException(sprintf('Invalid command provided to "%s()": the command should be an array whose first element is either the path to the binary to run or a "Process" object.', __METHOD__)); - } - - if ($verbosity <= $output->getVerbosity()) { - $output->write($formatter->start(spl_object_hash($process), $this->escapeString($process->getCommandLine()))); - } - - if ($output->isDebug()) { - $callback = $this->wrapCallback($output, $process, $callback); - } - - $process->run($callback, $cmd); - - if ($verbosity <= $output->getVerbosity()) { - $message = $process->isSuccessful() ? 'Command ran successfully' : sprintf('%s Command did not run successfully', $process->getExitCode()); - $output->write($formatter->stop(spl_object_hash($process), $message, $process->isSuccessful())); - } - - if (!$process->isSuccessful() && null !== $error) { - $output->writeln(sprintf('%s', $this->escapeString($error))); - } - - return $process; - } - - /** - * Runs the process. - * - * This is identical to run() except that an exception is thrown if the process - * exits with a non-zero exit code. - * - * @param array|Process $cmd An instance of Process or a command to run - * @param callable|null $callback A PHP callback to run whenever there is some - * output available on STDOUT or STDERR - * - * @throws ProcessFailedException - * - * @see run() - */ - public function mustRun(OutputInterface $output, array|Process $cmd, string $error = null, callable $callback = null): Process - { - $process = $this->run($output, $cmd, $error, $callback); - - if (!$process->isSuccessful()) { - throw new ProcessFailedException($process); - } - - return $process; - } - - /** - * Wraps a Process callback to add debugging output. - */ - public function wrapCallback(OutputInterface $output, Process $process, callable $callback = null): callable - { - if ($output instanceof ConsoleOutputInterface) { - $output = $output->getErrorOutput(); - } - - $formatter = $this->getHelperSet()->get('debug_formatter'); - - return function ($type, $buffer) use ($output, $process, $callback, $formatter) { - $output->write($formatter->progress(spl_object_hash($process), $this->escapeString($buffer), Process::ERR === $type)); - - if (null !== $callback) { - $callback($type, $buffer); - } - }; - } - - private function escapeString(string $str): string - { - return str_replace('<', '\\<', $str); - } - - public function getName(): string - { - return 'process'; - } -} diff --git a/vendor/symfony/console/Helper/ProgressBar.php b/vendor/symfony/console/Helper/ProgressBar.php deleted file mode 100644 index 64389c4a..00000000 --- a/vendor/symfony/console/Helper/ProgressBar.php +++ /dev/null @@ -1,618 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Cursor; -use Symfony\Component\Console\Exception\LogicException; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\ConsoleSectionOutput; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Terminal; - -/** - * The ProgressBar provides helpers to display progress output. - * - * @author Fabien Potencier - * @author Chris Jones - */ -final class ProgressBar -{ - public const FORMAT_VERBOSE = 'verbose'; - public const FORMAT_VERY_VERBOSE = 'very_verbose'; - public const FORMAT_DEBUG = 'debug'; - public const FORMAT_NORMAL = 'normal'; - - private const FORMAT_VERBOSE_NOMAX = 'verbose_nomax'; - private const FORMAT_VERY_VERBOSE_NOMAX = 'very_verbose_nomax'; - private const FORMAT_DEBUG_NOMAX = 'debug_nomax'; - private const FORMAT_NORMAL_NOMAX = 'normal_nomax'; - - private int $barWidth = 28; - private string $barChar; - private string $emptyBarChar = '-'; - private string $progressChar = '>'; - private ?string $format = null; - private ?string $internalFormat = null; - private ?int $redrawFreq = 1; - private int $writeCount = 0; - private float $lastWriteTime = 0; - private float $minSecondsBetweenRedraws = 0; - private float $maxSecondsBetweenRedraws = 1; - private OutputInterface $output; - private int $step = 0; - private int $startingStep = 0; - private ?int $max = null; - private int $startTime; - private int $stepWidth; - private float $percent = 0.0; - private array $messages = []; - private bool $overwrite = true; - private Terminal $terminal; - private ?string $previousMessage = null; - private Cursor $cursor; - private array $placeholders = []; - - private static array $formatters; - private static array $formats; - - /** - * @param int $max Maximum steps (0 if unknown) - */ - public function __construct(OutputInterface $output, int $max = 0, float $minSecondsBetweenRedraws = 1 / 25) - { - if ($output instanceof ConsoleOutputInterface) { - $output = $output->getErrorOutput(); - } - - $this->output = $output; - $this->setMaxSteps($max); - $this->terminal = new Terminal(); - - if (0 < $minSecondsBetweenRedraws) { - $this->redrawFreq = null; - $this->minSecondsBetweenRedraws = $minSecondsBetweenRedraws; - } - - if (!$this->output->isDecorated()) { - // disable overwrite when output does not support ANSI codes. - $this->overwrite = false; - - // set a reasonable redraw frequency so output isn't flooded - $this->redrawFreq = null; - } - - $this->startTime = time(); - $this->cursor = new Cursor($output); - } - - /** - * Sets a placeholder formatter for a given name, globally for all instances of ProgressBar. - * - * This method also allow you to override an existing placeholder. - * - * @param string $name The placeholder name (including the delimiter char like %) - * @param callable(ProgressBar):string $callable A PHP callable - */ - public static function setPlaceholderFormatterDefinition(string $name, callable $callable): void - { - self::$formatters ??= self::initPlaceholderFormatters(); - - self::$formatters[$name] = $callable; - } - - /** - * Gets the placeholder formatter for a given name. - * - * @param string $name The placeholder name (including the delimiter char like %) - */ - public static function getPlaceholderFormatterDefinition(string $name): ?callable - { - self::$formatters ??= self::initPlaceholderFormatters(); - - return self::$formatters[$name] ?? null; - } - - /** - * Sets a placeholder formatter for a given name, for this instance only. - * - * @param callable(ProgressBar):string $callable A PHP callable - */ - public function setPlaceholderFormatter(string $name, callable $callable): void - { - $this->placeholders[$name] = $callable; - } - - /** - * Gets the placeholder formatter for a given name. - * - * @param string $name The placeholder name (including the delimiter char like %) - */ - public function getPlaceholderFormatter(string $name): ?callable - { - return $this->placeholders[$name] ?? $this::getPlaceholderFormatterDefinition($name); - } - - /** - * Sets a format for a given name. - * - * This method also allow you to override an existing format. - * - * @param string $name The format name - * @param string $format A format string - */ - public static function setFormatDefinition(string $name, string $format): void - { - self::$formats ??= self::initFormats(); - - self::$formats[$name] = $format; - } - - /** - * Gets the format for a given name. - * - * @param string $name The format name - */ - public static function getFormatDefinition(string $name): ?string - { - self::$formats ??= self::initFormats(); - - return self::$formats[$name] ?? null; - } - - /** - * Associates a text with a named placeholder. - * - * The text is displayed when the progress bar is rendered but only - * when the corresponding placeholder is part of the custom format line - * (by wrapping the name with %). - * - * @param string $message The text to associate with the placeholder - * @param string $name The name of the placeholder - */ - public function setMessage(string $message, string $name = 'message'): void - { - $this->messages[$name] = $message; - } - - public function getMessage(string $name = 'message'): string - { - return $this->messages[$name]; - } - - public function getStartTime(): int - { - return $this->startTime; - } - - public function getMaxSteps(): int - { - return $this->max; - } - - public function getProgress(): int - { - return $this->step; - } - - private function getStepWidth(): int - { - return $this->stepWidth; - } - - public function getProgressPercent(): float - { - return $this->percent; - } - - public function getBarOffset(): float - { - return floor($this->max ? $this->percent * $this->barWidth : (null === $this->redrawFreq ? (int) (min(5, $this->barWidth / 15) * $this->writeCount) : $this->step) % $this->barWidth); - } - - public function getEstimated(): float - { - if (0 === $this->step || $this->step === $this->startingStep) { - return 0; - } - - return round((time() - $this->startTime) / ($this->step - $this->startingStep) * $this->max); - } - - public function getRemaining(): float - { - if (!$this->step) { - return 0; - } - - return round((time() - $this->startTime) / ($this->step - $this->startingStep) * ($this->max - $this->step)); - } - - public function setBarWidth(int $size): void - { - $this->barWidth = max(1, $size); - } - - public function getBarWidth(): int - { - return $this->barWidth; - } - - public function setBarCharacter(string $char): void - { - $this->barChar = $char; - } - - public function getBarCharacter(): string - { - return $this->barChar ?? ($this->max ? '=' : $this->emptyBarChar); - } - - public function setEmptyBarCharacter(string $char): void - { - $this->emptyBarChar = $char; - } - - public function getEmptyBarCharacter(): string - { - return $this->emptyBarChar; - } - - public function setProgressCharacter(string $char): void - { - $this->progressChar = $char; - } - - public function getProgressCharacter(): string - { - return $this->progressChar; - } - - public function setFormat(string $format): void - { - $this->format = null; - $this->internalFormat = $format; - } - - /** - * Sets the redraw frequency. - * - * @param int|null $freq The frequency in steps - */ - public function setRedrawFrequency(?int $freq): void - { - $this->redrawFreq = null !== $freq ? max(1, $freq) : null; - } - - public function minSecondsBetweenRedraws(float $seconds): void - { - $this->minSecondsBetweenRedraws = $seconds; - } - - public function maxSecondsBetweenRedraws(float $seconds): void - { - $this->maxSecondsBetweenRedraws = $seconds; - } - - /** - * Returns an iterator that will automatically update the progress bar when iterated. - * - * @template TKey - * @template TValue - * - * @param iterable $iterable - * @param int|null $max Number of steps to complete the bar (0 if indeterminate), if null it will be inferred from $iterable - * - * @return iterable - */ - public function iterate(iterable $iterable, int $max = null): iterable - { - $this->start($max ?? (is_countable($iterable) ? \count($iterable) : 0)); - - foreach ($iterable as $key => $value) { - yield $key => $value; - - $this->advance(); - } - - $this->finish(); - } - - /** - * Starts the progress output. - * - * @param int|null $max Number of steps to complete the bar (0 if indeterminate), null to leave unchanged - * @param int $startAt The starting point of the bar (useful e.g. when resuming a previously started bar) - */ - public function start(int $max = null, int $startAt = 0): void - { - $this->startTime = time(); - $this->step = $startAt; - $this->startingStep = $startAt; - - $startAt > 0 ? $this->setProgress($startAt) : $this->percent = 0.0; - - if (null !== $max) { - $this->setMaxSteps($max); - } - - $this->display(); - } - - /** - * Advances the progress output X steps. - * - * @param int $step Number of steps to advance - */ - public function advance(int $step = 1): void - { - $this->setProgress($this->step + $step); - } - - /** - * Sets whether to overwrite the progressbar, false for new line. - */ - public function setOverwrite(bool $overwrite): void - { - $this->overwrite = $overwrite; - } - - public function setProgress(int $step): void - { - if ($this->max && $step > $this->max) { - $this->max = $step; - } elseif ($step < 0) { - $step = 0; - } - - $redrawFreq = $this->redrawFreq ?? (($this->max ?: 10) / 10); - $prevPeriod = (int) ($this->step / $redrawFreq); - $currPeriod = (int) ($step / $redrawFreq); - $this->step = $step; - $this->percent = $this->max ? (float) $this->step / $this->max : 0; - $timeInterval = microtime(true) - $this->lastWriteTime; - - // Draw regardless of other limits - if ($this->max === $step) { - $this->display(); - - return; - } - - // Throttling - if ($timeInterval < $this->minSecondsBetweenRedraws) { - return; - } - - // Draw each step period, but not too late - if ($prevPeriod !== $currPeriod || $timeInterval >= $this->maxSecondsBetweenRedraws) { - $this->display(); - } - } - - public function setMaxSteps(int $max): void - { - $this->format = null; - $this->max = max(0, $max); - $this->stepWidth = $this->max ? Helper::width((string) $this->max) : 4; - } - - /** - * Finishes the progress output. - */ - public function finish(): void - { - if (!$this->max) { - $this->max = $this->step; - } - - if ($this->step === $this->max && !$this->overwrite) { - // prevent double 100% output - return; - } - - $this->setProgress($this->max); - } - - /** - * Outputs the current progress string. - */ - public function display(): void - { - if (OutputInterface::VERBOSITY_QUIET === $this->output->getVerbosity()) { - return; - } - - if (null === $this->format) { - $this->setRealFormat($this->internalFormat ?: $this->determineBestFormat()); - } - - $this->overwrite($this->buildLine()); - } - - /** - * Removes the progress bar from the current line. - * - * This is useful if you wish to write some output - * while a progress bar is running. - * Call display() to show the progress bar again. - */ - public function clear(): void - { - if (!$this->overwrite) { - return; - } - - if (null === $this->format) { - $this->setRealFormat($this->internalFormat ?: $this->determineBestFormat()); - } - - $this->overwrite(''); - } - - private function setRealFormat(string $format): void - { - // try to use the _nomax variant if available - if (!$this->max && null !== self::getFormatDefinition($format.'_nomax')) { - $this->format = self::getFormatDefinition($format.'_nomax'); - } elseif (null !== self::getFormatDefinition($format)) { - $this->format = self::getFormatDefinition($format); - } else { - $this->format = $format; - } - } - - /** - * Overwrites a previous message to the output. - */ - private function overwrite(string $message): void - { - if ($this->previousMessage === $message) { - return; - } - - $originalMessage = $message; - - if ($this->overwrite) { - if (null !== $this->previousMessage) { - if ($this->output instanceof ConsoleSectionOutput) { - $messageLines = explode("\n", $this->previousMessage); - $lineCount = \count($messageLines); - foreach ($messageLines as $messageLine) { - $messageLineLength = Helper::width(Helper::removeDecoration($this->output->getFormatter(), $messageLine)); - if ($messageLineLength > $this->terminal->getWidth()) { - $lineCount += floor($messageLineLength / $this->terminal->getWidth()); - } - } - $this->output->clear($lineCount); - } else { - $lineCount = substr_count($this->previousMessage, "\n"); - for ($i = 0; $i < $lineCount; ++$i) { - $this->cursor->moveToColumn(1); - $this->cursor->clearLine(); - $this->cursor->moveUp(); - } - - $this->cursor->moveToColumn(1); - $this->cursor->clearLine(); - } - } - } elseif ($this->step > 0) { - $message = \PHP_EOL.$message; - } - - $this->previousMessage = $originalMessage; - $this->lastWriteTime = microtime(true); - - $this->output->write($message); - ++$this->writeCount; - } - - private function determineBestFormat(): string - { - return match ($this->output->getVerbosity()) { - // OutputInterface::VERBOSITY_QUIET: display is disabled anyway - OutputInterface::VERBOSITY_VERBOSE => $this->max ? self::FORMAT_VERBOSE : self::FORMAT_VERBOSE_NOMAX, - OutputInterface::VERBOSITY_VERY_VERBOSE => $this->max ? self::FORMAT_VERY_VERBOSE : self::FORMAT_VERY_VERBOSE_NOMAX, - OutputInterface::VERBOSITY_DEBUG => $this->max ? self::FORMAT_DEBUG : self::FORMAT_DEBUG_NOMAX, - default => $this->max ? self::FORMAT_NORMAL : self::FORMAT_NORMAL_NOMAX, - }; - } - - private static function initPlaceholderFormatters(): array - { - return [ - 'bar' => function (self $bar, OutputInterface $output) { - $completeBars = $bar->getBarOffset(); - $display = str_repeat($bar->getBarCharacter(), $completeBars); - if ($completeBars < $bar->getBarWidth()) { - $emptyBars = $bar->getBarWidth() - $completeBars - Helper::length(Helper::removeDecoration($output->getFormatter(), $bar->getProgressCharacter())); - $display .= $bar->getProgressCharacter().str_repeat($bar->getEmptyBarCharacter(), $emptyBars); - } - - return $display; - }, - 'elapsed' => fn (self $bar) => Helper::formatTime(time() - $bar->getStartTime(), 2), - 'remaining' => function (self $bar) { - if (!$bar->getMaxSteps()) { - throw new LogicException('Unable to display the remaining time if the maximum number of steps is not set.'); - } - - return Helper::formatTime($bar->getRemaining(), 2); - }, - 'estimated' => function (self $bar) { - if (!$bar->getMaxSteps()) { - throw new LogicException('Unable to display the estimated time if the maximum number of steps is not set.'); - } - - return Helper::formatTime($bar->getEstimated(), 2); - }, - 'memory' => fn (self $bar) => Helper::formatMemory(memory_get_usage(true)), - 'current' => fn (self $bar) => str_pad($bar->getProgress(), $bar->getStepWidth(), ' ', \STR_PAD_LEFT), - 'max' => fn (self $bar) => $bar->getMaxSteps(), - 'percent' => fn (self $bar) => floor($bar->getProgressPercent() * 100), - ]; - } - - private static function initFormats(): array - { - return [ - self::FORMAT_NORMAL => ' %current%/%max% [%bar%] %percent:3s%%', - self::FORMAT_NORMAL_NOMAX => ' %current% [%bar%]', - - self::FORMAT_VERBOSE => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%', - self::FORMAT_VERBOSE_NOMAX => ' %current% [%bar%] %elapsed:6s%', - - self::FORMAT_VERY_VERBOSE => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s%', - self::FORMAT_VERY_VERBOSE_NOMAX => ' %current% [%bar%] %elapsed:6s%', - - self::FORMAT_DEBUG => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%', - self::FORMAT_DEBUG_NOMAX => ' %current% [%bar%] %elapsed:6s% %memory:6s%', - ]; - } - - private function buildLine(): string - { - \assert(null !== $this->format); - - $regex = "{%([a-z\-_]+)(?:\:([^%]+))?%}i"; - $callback = function ($matches) { - if ($formatter = $this->getPlaceholderFormatter($matches[1])) { - $text = $formatter($this, $this->output); - } elseif (isset($this->messages[$matches[1]])) { - $text = $this->messages[$matches[1]]; - } else { - return $matches[0]; - } - - if (isset($matches[2])) { - $text = sprintf('%'.$matches[2], $text); - } - - return $text; - }; - $line = preg_replace_callback($regex, $callback, $this->format); - - // gets string length for each sub line with multiline format - $linesLength = array_map(fn ($subLine) => Helper::width(Helper::removeDecoration($this->output->getFormatter(), rtrim($subLine, "\r"))), explode("\n", $line)); - - $linesWidth = max($linesLength); - - $terminalWidth = $this->terminal->getWidth(); - if ($linesWidth <= $terminalWidth) { - return $line; - } - - $this->setBarWidth($this->barWidth - $linesWidth + $terminalWidth); - - return preg_replace_callback($regex, $callback, $this->format); - } -} diff --git a/vendor/symfony/console/Helper/ProgressIndicator.php b/vendor/symfony/console/Helper/ProgressIndicator.php deleted file mode 100644 index 79d47643..00000000 --- a/vendor/symfony/console/Helper/ProgressIndicator.php +++ /dev/null @@ -1,235 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Exception\LogicException; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Kevin Bond - */ -class ProgressIndicator -{ - private const FORMATS = [ - 'normal' => ' %indicator% %message%', - 'normal_no_ansi' => ' %message%', - - 'verbose' => ' %indicator% %message% (%elapsed:6s%)', - 'verbose_no_ansi' => ' %message% (%elapsed:6s%)', - - 'very_verbose' => ' %indicator% %message% (%elapsed:6s%, %memory:6s%)', - 'very_verbose_no_ansi' => ' %message% (%elapsed:6s%, %memory:6s%)', - ]; - - private OutputInterface $output; - private int $startTime; - private ?string $format = null; - private ?string $message = null; - private array $indicatorValues; - private int $indicatorCurrent; - private int $indicatorChangeInterval; - private float $indicatorUpdateTime; - private bool $started = false; - - /** - * @var array - */ - private static array $formatters; - - /** - * @param int $indicatorChangeInterval Change interval in milliseconds - * @param array|null $indicatorValues Animated indicator characters - */ - public function __construct(OutputInterface $output, string $format = null, int $indicatorChangeInterval = 100, array $indicatorValues = null) - { - $this->output = $output; - - $format ??= $this->determineBestFormat(); - $indicatorValues ??= ['-', '\\', '|', '/']; - $indicatorValues = array_values($indicatorValues); - - if (2 > \count($indicatorValues)) { - throw new InvalidArgumentException('Must have at least 2 indicator value characters.'); - } - - $this->format = self::getFormatDefinition($format); - $this->indicatorChangeInterval = $indicatorChangeInterval; - $this->indicatorValues = $indicatorValues; - $this->startTime = time(); - } - - /** - * Sets the current indicator message. - * - * @return void - */ - public function setMessage(?string $message) - { - $this->message = $message; - - $this->display(); - } - - /** - * Starts the indicator output. - * - * @return void - */ - public function start(string $message) - { - if ($this->started) { - throw new LogicException('Progress indicator already started.'); - } - - $this->message = $message; - $this->started = true; - $this->startTime = time(); - $this->indicatorUpdateTime = $this->getCurrentTimeInMilliseconds() + $this->indicatorChangeInterval; - $this->indicatorCurrent = 0; - - $this->display(); - } - - /** - * Advances the indicator. - * - * @return void - */ - public function advance() - { - if (!$this->started) { - throw new LogicException('Progress indicator has not yet been started.'); - } - - if (!$this->output->isDecorated()) { - return; - } - - $currentTime = $this->getCurrentTimeInMilliseconds(); - - if ($currentTime < $this->indicatorUpdateTime) { - return; - } - - $this->indicatorUpdateTime = $currentTime + $this->indicatorChangeInterval; - ++$this->indicatorCurrent; - - $this->display(); - } - - /** - * Finish the indicator with message. - * - * @return void - */ - public function finish(string $message) - { - if (!$this->started) { - throw new LogicException('Progress indicator has not yet been started.'); - } - - $this->message = $message; - $this->display(); - $this->output->writeln(''); - $this->started = false; - } - - /** - * Gets the format for a given name. - */ - public static function getFormatDefinition(string $name): ?string - { - return self::FORMATS[$name] ?? null; - } - - /** - * Sets a placeholder formatter for a given name. - * - * This method also allow you to override an existing placeholder. - * - * @return void - */ - public static function setPlaceholderFormatterDefinition(string $name, callable $callable) - { - self::$formatters ??= self::initPlaceholderFormatters(); - - self::$formatters[$name] = $callable; - } - - /** - * Gets the placeholder formatter for a given name (including the delimiter char like %). - */ - public static function getPlaceholderFormatterDefinition(string $name): ?callable - { - self::$formatters ??= self::initPlaceholderFormatters(); - - return self::$formatters[$name] ?? null; - } - - private function display(): void - { - if (OutputInterface::VERBOSITY_QUIET === $this->output->getVerbosity()) { - return; - } - - $this->overwrite(preg_replace_callback("{%([a-z\-_]+)(?:\:([^%]+))?%}i", function ($matches) { - if ($formatter = self::getPlaceholderFormatterDefinition($matches[1])) { - return $formatter($this); - } - - return $matches[0]; - }, $this->format ?? '')); - } - - private function determineBestFormat(): string - { - return match ($this->output->getVerbosity()) { - // OutputInterface::VERBOSITY_QUIET: display is disabled anyway - OutputInterface::VERBOSITY_VERBOSE => $this->output->isDecorated() ? 'verbose' : 'verbose_no_ansi', - OutputInterface::VERBOSITY_VERY_VERBOSE, - OutputInterface::VERBOSITY_DEBUG => $this->output->isDecorated() ? 'very_verbose' : 'very_verbose_no_ansi', - default => $this->output->isDecorated() ? 'normal' : 'normal_no_ansi', - }; - } - - /** - * Overwrites a previous message to the output. - */ - private function overwrite(string $message): void - { - if ($this->output->isDecorated()) { - $this->output->write("\x0D\x1B[2K"); - $this->output->write($message); - } else { - $this->output->writeln($message); - } - } - - private function getCurrentTimeInMilliseconds(): float - { - return round(microtime(true) * 1000); - } - - /** - * @return array - */ - private static function initPlaceholderFormatters(): array - { - return [ - 'indicator' => fn (self $indicator) => $indicator->indicatorValues[$indicator->indicatorCurrent % \count($indicator->indicatorValues)], - 'message' => fn (self $indicator) => $indicator->message, - 'elapsed' => fn (self $indicator) => Helper::formatTime(time() - $indicator->startTime, 2), - 'memory' => fn () => Helper::formatMemory(memory_get_usage(true)), - ]; - } -} diff --git a/vendor/symfony/console/Helper/QuestionHelper.php b/vendor/symfony/console/Helper/QuestionHelper.php deleted file mode 100644 index f32813c6..00000000 --- a/vendor/symfony/console/Helper/QuestionHelper.php +++ /dev/null @@ -1,612 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Cursor; -use Symfony\Component\Console\Exception\MissingInputException; -use Symfony\Component\Console\Exception\RuntimeException; -use Symfony\Component\Console\Formatter\OutputFormatter; -use Symfony\Component\Console\Formatter\OutputFormatterStyle; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\StreamableInputInterface; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\ConsoleSectionOutput; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Question\ChoiceQuestion; -use Symfony\Component\Console\Question\Question; -use Symfony\Component\Console\Terminal; - -use function Symfony\Component\String\s; - -/** - * The QuestionHelper class provides helpers to interact with the user. - * - * @author Fabien Potencier - */ -class QuestionHelper extends Helper -{ - /** - * @var resource|null - */ - private $inputStream; - - private static bool $stty = true; - private static bool $stdinIsInteractive; - - /** - * Asks a question to the user. - * - * @return mixed The user answer - * - * @throws RuntimeException If there is no data to read in the input stream - */ - public function ask(InputInterface $input, OutputInterface $output, Question $question): mixed - { - if ($output instanceof ConsoleOutputInterface) { - $output = $output->getErrorOutput(); - } - - if (!$input->isInteractive()) { - return $this->getDefaultAnswer($question); - } - - if ($input instanceof StreamableInputInterface && $stream = $input->getStream()) { - $this->inputStream = $stream; - } - - try { - if (!$question->getValidator()) { - return $this->doAsk($output, $question); - } - - $interviewer = fn () => $this->doAsk($output, $question); - - return $this->validateAttempts($interviewer, $output, $question); - } catch (MissingInputException $exception) { - $input->setInteractive(false); - - if (null === $fallbackOutput = $this->getDefaultAnswer($question)) { - throw $exception; - } - - return $fallbackOutput; - } - } - - public function getName(): string - { - return 'question'; - } - - /** - * Prevents usage of stty. - * - * @return void - */ - public static function disableStty() - { - self::$stty = false; - } - - /** - * Asks the question to the user. - * - * @throws RuntimeException In case the fallback is deactivated and the response cannot be hidden - */ - private function doAsk(OutputInterface $output, Question $question): mixed - { - $this->writePrompt($output, $question); - - $inputStream = $this->inputStream ?: \STDIN; - $autocomplete = $question->getAutocompleterCallback(); - - if (null === $autocomplete || !self::$stty || !Terminal::hasSttyAvailable()) { - $ret = false; - if ($question->isHidden()) { - try { - $hiddenResponse = $this->getHiddenResponse($output, $inputStream, $question->isTrimmable()); - $ret = $question->isTrimmable() ? trim($hiddenResponse) : $hiddenResponse; - } catch (RuntimeException $e) { - if (!$question->isHiddenFallback()) { - throw $e; - } - } - } - - if (false === $ret) { - $isBlocked = stream_get_meta_data($inputStream)['blocked'] ?? true; - - if (!$isBlocked) { - stream_set_blocking($inputStream, true); - } - - $ret = $this->readInput($inputStream, $question); - - if (!$isBlocked) { - stream_set_blocking($inputStream, false); - } - - if (false === $ret) { - throw new MissingInputException('Aborted.'); - } - if ($question->isTrimmable()) { - $ret = trim($ret); - } - } - } else { - $autocomplete = $this->autocomplete($output, $question, $inputStream, $autocomplete); - $ret = $question->isTrimmable() ? trim($autocomplete) : $autocomplete; - } - - if ($output instanceof ConsoleSectionOutput) { - $output->addContent(''); // add EOL to the question - $output->addContent($ret); - } - - $ret = \strlen($ret) > 0 ? $ret : $question->getDefault(); - - if ($normalizer = $question->getNormalizer()) { - return $normalizer($ret); - } - - return $ret; - } - - private function getDefaultAnswer(Question $question): mixed - { - $default = $question->getDefault(); - - if (null === $default) { - return $default; - } - - if ($validator = $question->getValidator()) { - return \call_user_func($validator, $default); - } elseif ($question instanceof ChoiceQuestion) { - $choices = $question->getChoices(); - - if (!$question->isMultiselect()) { - return $choices[$default] ?? $default; - } - - $default = explode(',', $default); - foreach ($default as $k => $v) { - $v = $question->isTrimmable() ? trim($v) : $v; - $default[$k] = $choices[$v] ?? $v; - } - } - - return $default; - } - - /** - * Outputs the question prompt. - * - * @return void - */ - protected function writePrompt(OutputInterface $output, Question $question) - { - $message = $question->getQuestion(); - - if ($question instanceof ChoiceQuestion) { - $output->writeln(array_merge([ - $question->getQuestion(), - ], $this->formatChoiceQuestionChoices($question, 'info'))); - - $message = $question->getPrompt(); - } - - $output->write($message); - } - - /** - * @return string[] - */ - protected function formatChoiceQuestionChoices(ChoiceQuestion $question, string $tag): array - { - $messages = []; - - $maxWidth = max(array_map([__CLASS__, 'width'], array_keys($choices = $question->getChoices()))); - - foreach ($choices as $key => $value) { - $padding = str_repeat(' ', $maxWidth - self::width($key)); - - $messages[] = sprintf(" [<$tag>%s$padding] %s", $key, $value); - } - - return $messages; - } - - /** - * Outputs an error message. - * - * @return void - */ - protected function writeError(OutputInterface $output, \Exception $error) - { - if (null !== $this->getHelperSet() && $this->getHelperSet()->has('formatter')) { - $message = $this->getHelperSet()->get('formatter')->formatBlock($error->getMessage(), 'error'); - } else { - $message = ''.$error->getMessage().''; - } - - $output->writeln($message); - } - - /** - * Autocompletes a question. - * - * @param resource $inputStream - */ - private function autocomplete(OutputInterface $output, Question $question, $inputStream, callable $autocomplete): string - { - $cursor = new Cursor($output, $inputStream); - - $fullChoice = ''; - $ret = ''; - - $i = 0; - $ofs = -1; - $matches = $autocomplete($ret); - $numMatches = \count($matches); - - $sttyMode = shell_exec('stty -g'); - $isStdin = 'php://stdin' === (stream_get_meta_data($inputStream)['uri'] ?? null); - $r = [$inputStream]; - $w = []; - - // Disable icanon (so we can fread each keypress) and echo (we'll do echoing here instead) - shell_exec('stty -icanon -echo'); - - // Add highlighted text style - $output->getFormatter()->setStyle('hl', new OutputFormatterStyle('black', 'white')); - - // Read a keypress - while (!feof($inputStream)) { - while ($isStdin && 0 === @stream_select($r, $w, $w, 0, 100)) { - // Give signal handlers a chance to run - $r = [$inputStream]; - } - $c = fread($inputStream, 1); - - // as opposed to fgets(), fread() returns an empty string when the stream content is empty, not false. - if (false === $c || ('' === $ret && '' === $c && null === $question->getDefault())) { - shell_exec('stty '.$sttyMode); - throw new MissingInputException('Aborted.'); - } elseif ("\177" === $c) { // Backspace Character - if (0 === $numMatches && 0 !== $i) { - --$i; - $cursor->moveLeft(s($fullChoice)->slice(-1)->width(false)); - - $fullChoice = self::substr($fullChoice, 0, $i); - } - - if (0 === $i) { - $ofs = -1; - $matches = $autocomplete($ret); - $numMatches = \count($matches); - } else { - $numMatches = 0; - } - - // Pop the last character off the end of our string - $ret = self::substr($ret, 0, $i); - } elseif ("\033" === $c) { - // Did we read an escape sequence? - $c .= fread($inputStream, 2); - - // A = Up Arrow. B = Down Arrow - if (isset($c[2]) && ('A' === $c[2] || 'B' === $c[2])) { - if ('A' === $c[2] && -1 === $ofs) { - $ofs = 0; - } - - if (0 === $numMatches) { - continue; - } - - $ofs += ('A' === $c[2]) ? -1 : 1; - $ofs = ($numMatches + $ofs) % $numMatches; - } - } elseif (\ord($c) < 32) { - if ("\t" === $c || "\n" === $c) { - if ($numMatches > 0 && -1 !== $ofs) { - $ret = (string) $matches[$ofs]; - // Echo out remaining chars for current match - $remainingCharacters = substr($ret, \strlen(trim($this->mostRecentlyEnteredValue($fullChoice)))); - $output->write($remainingCharacters); - $fullChoice .= $remainingCharacters; - $i = (false === $encoding = mb_detect_encoding($fullChoice, null, true)) ? \strlen($fullChoice) : mb_strlen($fullChoice, $encoding); - - $matches = array_filter( - $autocomplete($ret), - fn ($match) => '' === $ret || str_starts_with($match, $ret) - ); - $numMatches = \count($matches); - $ofs = -1; - } - - if ("\n" === $c) { - $output->write($c); - break; - } - - $numMatches = 0; - } - - continue; - } else { - if ("\x80" <= $c) { - $c .= fread($inputStream, ["\xC0" => 1, "\xD0" => 1, "\xE0" => 2, "\xF0" => 3][$c & "\xF0"]); - } - - $output->write($c); - $ret .= $c; - $fullChoice .= $c; - ++$i; - - $tempRet = $ret; - - if ($question instanceof ChoiceQuestion && $question->isMultiselect()) { - $tempRet = $this->mostRecentlyEnteredValue($fullChoice); - } - - $numMatches = 0; - $ofs = 0; - - foreach ($autocomplete($ret) as $value) { - // If typed characters match the beginning chunk of value (e.g. [AcmeDe]moBundle) - if (str_starts_with($value, $tempRet)) { - $matches[$numMatches++] = $value; - } - } - } - - $cursor->clearLineAfter(); - - if ($numMatches > 0 && -1 !== $ofs) { - $cursor->savePosition(); - // Write highlighted text, complete the partially entered response - $charactersEntered = \strlen(trim($this->mostRecentlyEnteredValue($fullChoice))); - $output->write(''.OutputFormatter::escapeTrailingBackslash(substr($matches[$ofs], $charactersEntered)).''); - $cursor->restorePosition(); - } - } - - // Reset stty so it behaves normally again - shell_exec('stty '.$sttyMode); - - return $fullChoice; - } - - private function mostRecentlyEnteredValue(string $entered): string - { - // Determine the most recent value that the user entered - if (!str_contains($entered, ',')) { - return $entered; - } - - $choices = explode(',', $entered); - if ('' !== $lastChoice = trim($choices[\count($choices) - 1])) { - return $lastChoice; - } - - return $entered; - } - - /** - * Gets a hidden response from user. - * - * @param resource $inputStream The handler resource - * @param bool $trimmable Is the answer trimmable - * - * @throws RuntimeException In case the fallback is deactivated and the response cannot be hidden - */ - private function getHiddenResponse(OutputInterface $output, $inputStream, bool $trimmable = true): string - { - if ('\\' === \DIRECTORY_SEPARATOR) { - $exe = __DIR__.'/../Resources/bin/hiddeninput.exe'; - - // handle code running from a phar - if (str_starts_with(__FILE__, 'phar:')) { - $tmpExe = sys_get_temp_dir().'/hiddeninput.exe'; - copy($exe, $tmpExe); - $exe = $tmpExe; - } - - $sExec = shell_exec('"'.$exe.'"'); - $value = $trimmable ? rtrim($sExec) : $sExec; - $output->writeln(''); - - if (isset($tmpExe)) { - unlink($tmpExe); - } - - return $value; - } - - if (self::$stty && Terminal::hasSttyAvailable()) { - $sttyMode = shell_exec('stty -g'); - shell_exec('stty -echo'); - } elseif ($this->isInteractiveInput($inputStream)) { - throw new RuntimeException('Unable to hide the response.'); - } - - $value = fgets($inputStream, 4096); - - if (4095 === \strlen($value)) { - $errOutput = $output instanceof ConsoleOutputInterface ? $output->getErrorOutput() : $output; - $errOutput->warning('The value was possibly truncated by your shell or terminal emulator'); - } - - if (self::$stty && Terminal::hasSttyAvailable()) { - shell_exec('stty '.$sttyMode); - } - - if (false === $value) { - throw new MissingInputException('Aborted.'); - } - if ($trimmable) { - $value = trim($value); - } - $output->writeln(''); - - return $value; - } - - /** - * Validates an attempt. - * - * @param callable $interviewer A callable that will ask for a question and return the result - * - * @throws \Exception In case the max number of attempts has been reached and no valid response has been given - */ - private function validateAttempts(callable $interviewer, OutputInterface $output, Question $question): mixed - { - $error = null; - $attempts = $question->getMaxAttempts(); - - while (null === $attempts || $attempts--) { - if (null !== $error) { - $this->writeError($output, $error); - } - - try { - return $question->getValidator()($interviewer()); - } catch (RuntimeException $e) { - throw $e; - } catch (\Exception $error) { - } - } - - throw $error; - } - - private function isInteractiveInput($inputStream): bool - { - if ('php://stdin' !== (stream_get_meta_data($inputStream)['uri'] ?? null)) { - return false; - } - - if (isset(self::$stdinIsInteractive)) { - return self::$stdinIsInteractive; - } - - if (\function_exists('stream_isatty')) { - return self::$stdinIsInteractive = @stream_isatty(fopen('php://stdin', 'r')); - } - - if (\function_exists('posix_isatty')) { - return self::$stdinIsInteractive = @posix_isatty(fopen('php://stdin', 'r')); - } - - if (!\function_exists('shell_exec')) { - return self::$stdinIsInteractive = true; - } - - return self::$stdinIsInteractive = (bool) shell_exec('stty 2> '.('\\' === \DIRECTORY_SEPARATOR ? 'NUL' : '/dev/null')); - } - - /** - * Reads one or more lines of input and returns what is read. - * - * @param resource $inputStream The handler resource - * @param Question $question The question being asked - */ - private function readInput($inputStream, Question $question): string|false - { - if (!$question->isMultiline()) { - $cp = $this->setIOCodepage(); - $ret = fgets($inputStream, 4096); - - return $this->resetIOCodepage($cp, $ret); - } - - $multiLineStreamReader = $this->cloneInputStream($inputStream); - if (null === $multiLineStreamReader) { - return false; - } - - $ret = ''; - $cp = $this->setIOCodepage(); - while (false !== ($char = fgetc($multiLineStreamReader))) { - if (\PHP_EOL === "{$ret}{$char}") { - break; - } - $ret .= $char; - } - - return $this->resetIOCodepage($cp, $ret); - } - - private function setIOCodepage(): int - { - if (\function_exists('sapi_windows_cp_set')) { - $cp = sapi_windows_cp_get(); - sapi_windows_cp_set(sapi_windows_cp_get('oem')); - - return $cp; - } - - return 0; - } - - /** - * Sets console I/O to the specified code page and converts the user input. - */ - private function resetIOCodepage(int $cp, string|false $input): string|false - { - if (0 !== $cp) { - sapi_windows_cp_set($cp); - - if (false !== $input && '' !== $input) { - $input = sapi_windows_cp_conv(sapi_windows_cp_get('oem'), $cp, $input); - } - } - - return $input; - } - - /** - * Clones an input stream in order to act on one instance of the same - * stream without affecting the other instance. - * - * @param resource $inputStream The handler resource - * - * @return resource|null The cloned resource, null in case it could not be cloned - */ - private function cloneInputStream($inputStream) - { - $streamMetaData = stream_get_meta_data($inputStream); - $seekable = $streamMetaData['seekable'] ?? false; - $mode = $streamMetaData['mode'] ?? 'rb'; - $uri = $streamMetaData['uri'] ?? null; - - if (null === $uri) { - return null; - } - - $cloneStream = fopen($uri, $mode); - - // For seekable and writable streams, add all the same data to the - // cloned stream and then seek to the same offset. - if (true === $seekable && !\in_array($mode, ['r', 'rb', 'rt'])) { - $offset = ftell($inputStream); - rewind($inputStream); - stream_copy_to_stream($inputStream, $cloneStream); - fseek($inputStream, $offset); - fseek($cloneStream, $offset); - } - - return $cloneStream; - } -} diff --git a/vendor/symfony/console/Helper/SymfonyQuestionHelper.php b/vendor/symfony/console/Helper/SymfonyQuestionHelper.php deleted file mode 100644 index 8ebc8437..00000000 --- a/vendor/symfony/console/Helper/SymfonyQuestionHelper.php +++ /dev/null @@ -1,109 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Formatter\OutputFormatter; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Question\ChoiceQuestion; -use Symfony\Component\Console\Question\ConfirmationQuestion; -use Symfony\Component\Console\Question\Question; -use Symfony\Component\Console\Style\SymfonyStyle; - -/** - * Symfony Style Guide compliant question helper. - * - * @author Kevin Bond - */ -class SymfonyQuestionHelper extends QuestionHelper -{ - /** - * @return void - */ - protected function writePrompt(OutputInterface $output, Question $question) - { - $text = OutputFormatter::escapeTrailingBackslash($question->getQuestion()); - $default = $question->getDefault(); - - if ($question->isMultiline()) { - $text .= sprintf(' (press %s to continue)', $this->getEofShortcut()); - } - - switch (true) { - case null === $default: - $text = sprintf(' %s:', $text); - - break; - - case $question instanceof ConfirmationQuestion: - $text = sprintf(' %s (yes/no) [%s]:', $text, $default ? 'yes' : 'no'); - - break; - - case $question instanceof ChoiceQuestion && $question->isMultiselect(): - $choices = $question->getChoices(); - $default = explode(',', $default); - - foreach ($default as $key => $value) { - $default[$key] = $choices[trim($value)]; - } - - $text = sprintf(' %s [%s]:', $text, OutputFormatter::escape(implode(', ', $default))); - - break; - - case $question instanceof ChoiceQuestion: - $choices = $question->getChoices(); - $text = sprintf(' %s [%s]:', $text, OutputFormatter::escape($choices[$default] ?? $default)); - - break; - - default: - $text = sprintf(' %s [%s]:', $text, OutputFormatter::escape($default)); - } - - $output->writeln($text); - - $prompt = ' > '; - - if ($question instanceof ChoiceQuestion) { - $output->writeln($this->formatChoiceQuestionChoices($question, 'comment')); - - $prompt = $question->getPrompt(); - } - - $output->write($prompt); - } - - /** - * @return void - */ - protected function writeError(OutputInterface $output, \Exception $error) - { - if ($output instanceof SymfonyStyle) { - $output->newLine(); - $output->error($error->getMessage()); - - return; - } - - parent::writeError($output, $error); - } - - private function getEofShortcut(): string - { - if ('Windows' === \PHP_OS_FAMILY) { - return 'Ctrl+Z then Enter'; - } - - return 'Ctrl+D'; - } -} diff --git a/vendor/symfony/console/Helper/Table.php b/vendor/symfony/console/Helper/Table.php deleted file mode 100644 index 3c189580..00000000 --- a/vendor/symfony/console/Helper/Table.php +++ /dev/null @@ -1,926 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Exception\RuntimeException; -use Symfony\Component\Console\Formatter\OutputFormatter; -use Symfony\Component\Console\Formatter\WrappableOutputFormatterInterface; -use Symfony\Component\Console\Output\ConsoleSectionOutput; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * Provides helpers to display a table. - * - * @author Fabien Potencier - * @author Саша Стаменковић - * @author Abdellatif Ait boudad - * @author Max Grigorian - * @author Dany Maillard - */ -class Table -{ - private const SEPARATOR_TOP = 0; - private const SEPARATOR_TOP_BOTTOM = 1; - private const SEPARATOR_MID = 2; - private const SEPARATOR_BOTTOM = 3; - private const BORDER_OUTSIDE = 0; - private const BORDER_INSIDE = 1; - private const DISPLAY_ORIENTATION_DEFAULT = 'default'; - private const DISPLAY_ORIENTATION_HORIZONTAL = 'horizontal'; - private const DISPLAY_ORIENTATION_VERTICAL = 'vertical'; - - private ?string $headerTitle = null; - private ?string $footerTitle = null; - private array $headers = []; - private array $rows = []; - private array $effectiveColumnWidths = []; - private int $numberOfColumns; - private OutputInterface $output; - private TableStyle $style; - private array $columnStyles = []; - private array $columnWidths = []; - private array $columnMaxWidths = []; - private bool $rendered = false; - private string $displayOrientation = self::DISPLAY_ORIENTATION_DEFAULT; - - private static array $styles; - - public function __construct(OutputInterface $output) - { - $this->output = $output; - - self::$styles ??= self::initStyles(); - - $this->setStyle('default'); - } - - /** - * Sets a style definition. - * - * @return void - */ - public static function setStyleDefinition(string $name, TableStyle $style) - { - self::$styles ??= self::initStyles(); - - self::$styles[$name] = $style; - } - - /** - * Gets a style definition by name. - */ - public static function getStyleDefinition(string $name): TableStyle - { - self::$styles ??= self::initStyles(); - - return self::$styles[$name] ?? throw new InvalidArgumentException(sprintf('Style "%s" is not defined.', $name)); - } - - /** - * Sets table style. - * - * @return $this - */ - public function setStyle(TableStyle|string $name): static - { - $this->style = $this->resolveStyle($name); - - return $this; - } - - /** - * Gets the current table style. - */ - public function getStyle(): TableStyle - { - return $this->style; - } - - /** - * Sets table column style. - * - * @param TableStyle|string $name The style name or a TableStyle instance - * - * @return $this - */ - public function setColumnStyle(int $columnIndex, TableStyle|string $name): static - { - $this->columnStyles[$columnIndex] = $this->resolveStyle($name); - - return $this; - } - - /** - * Gets the current style for a column. - * - * If style was not set, it returns the global table style. - */ - public function getColumnStyle(int $columnIndex): TableStyle - { - return $this->columnStyles[$columnIndex] ?? $this->getStyle(); - } - - /** - * Sets the minimum width of a column. - * - * @return $this - */ - public function setColumnWidth(int $columnIndex, int $width): static - { - $this->columnWidths[$columnIndex] = $width; - - return $this; - } - - /** - * Sets the minimum width of all columns. - * - * @return $this - */ - public function setColumnWidths(array $widths): static - { - $this->columnWidths = []; - foreach ($widths as $index => $width) { - $this->setColumnWidth($index, $width); - } - - return $this; - } - - /** - * Sets the maximum width of a column. - * - * Any cell within this column which contents exceeds the specified width will be wrapped into multiple lines, while - * formatted strings are preserved. - * - * @return $this - */ - public function setColumnMaxWidth(int $columnIndex, int $width): static - { - if (!$this->output->getFormatter() instanceof WrappableOutputFormatterInterface) { - throw new \LogicException(sprintf('Setting a maximum column width is only supported when using a "%s" formatter, got "%s".', WrappableOutputFormatterInterface::class, get_debug_type($this->output->getFormatter()))); - } - - $this->columnMaxWidths[$columnIndex] = $width; - - return $this; - } - - /** - * @return $this - */ - public function setHeaders(array $headers): static - { - $headers = array_values($headers); - if ($headers && !\is_array($headers[0])) { - $headers = [$headers]; - } - - $this->headers = $headers; - - return $this; - } - - /** - * @return $this - */ - public function setRows(array $rows) - { - $this->rows = []; - - return $this->addRows($rows); - } - - /** - * @return $this - */ - public function addRows(array $rows): static - { - foreach ($rows as $row) { - $this->addRow($row); - } - - return $this; - } - - /** - * @return $this - */ - public function addRow(TableSeparator|array $row): static - { - if ($row instanceof TableSeparator) { - $this->rows[] = $row; - - return $this; - } - - $this->rows[] = array_values($row); - - return $this; - } - - /** - * Adds a row to the table, and re-renders the table. - * - * @return $this - */ - public function appendRow(TableSeparator|array $row): static - { - if (!$this->output instanceof ConsoleSectionOutput) { - throw new RuntimeException(sprintf('Output should be an instance of "%s" when calling "%s".', ConsoleSectionOutput::class, __METHOD__)); - } - - if ($this->rendered) { - $this->output->clear($this->calculateRowCount()); - } - - $this->addRow($row); - $this->render(); - - return $this; - } - - /** - * @return $this - */ - public function setRow(int|string $column, array $row): static - { - $this->rows[$column] = $row; - - return $this; - } - - /** - * @return $this - */ - public function setHeaderTitle(?string $title): static - { - $this->headerTitle = $title; - - return $this; - } - - /** - * @return $this - */ - public function setFooterTitle(?string $title): static - { - $this->footerTitle = $title; - - return $this; - } - - /** - * @return $this - */ - public function setHorizontal(bool $horizontal = true): static - { - $this->displayOrientation = $horizontal ? self::DISPLAY_ORIENTATION_HORIZONTAL : self::DISPLAY_ORIENTATION_DEFAULT; - - return $this; - } - - /** - * @return $this - */ - public function setVertical(bool $vertical = true): static - { - $this->displayOrientation = $vertical ? self::DISPLAY_ORIENTATION_VERTICAL : self::DISPLAY_ORIENTATION_DEFAULT; - - return $this; - } - - /** - * Renders table to output. - * - * Example: - * - * +---------------+-----------------------+------------------+ - * | ISBN | Title | Author | - * +---------------+-----------------------+------------------+ - * | 99921-58-10-7 | Divine Comedy | Dante Alighieri | - * | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | - * | 960-425-059-0 | The Lord of the Rings | J. R. R. Tolkien | - * +---------------+-----------------------+------------------+ - * - * @return void - */ - public function render() - { - $divider = new TableSeparator(); - $isCellWithColspan = static fn ($cell) => $cell instanceof TableCell && $cell->getColspan() >= 2; - - $horizontal = self::DISPLAY_ORIENTATION_HORIZONTAL === $this->displayOrientation; - $vertical = self::DISPLAY_ORIENTATION_VERTICAL === $this->displayOrientation; - - $rows = []; - if ($horizontal) { - foreach ($this->headers[0] ?? [] as $i => $header) { - $rows[$i] = [$header]; - foreach ($this->rows as $row) { - if ($row instanceof TableSeparator) { - continue; - } - if (isset($row[$i])) { - $rows[$i][] = $row[$i]; - } elseif ($isCellWithColspan($rows[$i][0])) { - // Noop, there is a "title" - } else { - $rows[$i][] = null; - } - } - } - } elseif ($vertical) { - $formatter = $this->output->getFormatter(); - $maxHeaderLength = array_reduce($this->headers[0] ?? [], static fn ($max, $header) => max($max, Helper::width(Helper::removeDecoration($formatter, $header))), 0); - - foreach ($this->rows as $row) { - if ($row instanceof TableSeparator) { - continue; - } - - if ($rows) { - $rows[] = [$divider]; - } - - $containsColspan = false; - foreach ($row as $cell) { - if ($containsColspan = $isCellWithColspan($cell)) { - break; - } - } - - $headers = $this->headers[0] ?? []; - $maxRows = max(\count($headers), \count($row)); - for ($i = 0; $i < $maxRows; ++$i) { - $cell = (string) ($row[$i] ?? ''); - - $parts = explode("\n", $cell); - foreach ($parts as $idx => $part) { - if ($headers && !$containsColspan) { - if (0 === $idx) { - $rows[] = [sprintf( - '%s: %s', - str_pad($headers[$i] ?? '', $maxHeaderLength, ' ', \STR_PAD_LEFT), - $part - )]; - } else { - $rows[] = [sprintf( - '%s %s', - str_pad('', $maxHeaderLength, ' ', \STR_PAD_LEFT), - $part - )]; - } - } elseif ('' !== $cell) { - $rows[] = [$part]; - } - } - } - } - } else { - $rows = array_merge($this->headers, [$divider], $this->rows); - } - - $this->calculateNumberOfColumns($rows); - - $rowGroups = $this->buildTableRows($rows); - $this->calculateColumnsWidth($rowGroups); - - $isHeader = !$horizontal; - $isFirstRow = $horizontal; - $hasTitle = (bool) $this->headerTitle; - - foreach ($rowGroups as $rowGroup) { - $isHeaderSeparatorRendered = false; - - foreach ($rowGroup as $row) { - if ($divider === $row) { - $isHeader = false; - $isFirstRow = true; - - continue; - } - - if ($row instanceof TableSeparator) { - $this->renderRowSeparator(); - - continue; - } - - if (!$row) { - continue; - } - - if ($isHeader && !$isHeaderSeparatorRendered) { - $this->renderRowSeparator( - self::SEPARATOR_TOP, - $hasTitle ? $this->headerTitle : null, - $hasTitle ? $this->style->getHeaderTitleFormat() : null - ); - $hasTitle = false; - $isHeaderSeparatorRendered = true; - } - - if ($isFirstRow) { - $this->renderRowSeparator( - $horizontal ? self::SEPARATOR_TOP : self::SEPARATOR_TOP_BOTTOM, - $hasTitle ? $this->headerTitle : null, - $hasTitle ? $this->style->getHeaderTitleFormat() : null - ); - $isFirstRow = false; - $hasTitle = false; - } - - if ($vertical) { - $isHeader = false; - $isFirstRow = false; - } - - if ($horizontal) { - $this->renderRow($row, $this->style->getCellRowFormat(), $this->style->getCellHeaderFormat()); - } else { - $this->renderRow($row, $isHeader ? $this->style->getCellHeaderFormat() : $this->style->getCellRowFormat()); - } - } - } - $this->renderRowSeparator(self::SEPARATOR_BOTTOM, $this->footerTitle, $this->style->getFooterTitleFormat()); - - $this->cleanup(); - $this->rendered = true; - } - - /** - * Renders horizontal header separator. - * - * Example: - * - * +-----+-----------+-------+ - */ - private function renderRowSeparator(int $type = self::SEPARATOR_MID, string $title = null, string $titleFormat = null): void - { - if (!$count = $this->numberOfColumns) { - return; - } - - $borders = $this->style->getBorderChars(); - if (!$borders[0] && !$borders[2] && !$this->style->getCrossingChar()) { - return; - } - - $crossings = $this->style->getCrossingChars(); - if (self::SEPARATOR_MID === $type) { - [$horizontal, $leftChar, $midChar, $rightChar] = [$borders[2], $crossings[8], $crossings[0], $crossings[4]]; - } elseif (self::SEPARATOR_TOP === $type) { - [$horizontal, $leftChar, $midChar, $rightChar] = [$borders[0], $crossings[1], $crossings[2], $crossings[3]]; - } elseif (self::SEPARATOR_TOP_BOTTOM === $type) { - [$horizontal, $leftChar, $midChar, $rightChar] = [$borders[0], $crossings[9], $crossings[10], $crossings[11]]; - } else { - [$horizontal, $leftChar, $midChar, $rightChar] = [$borders[0], $crossings[7], $crossings[6], $crossings[5]]; - } - - $markup = $leftChar; - for ($column = 0; $column < $count; ++$column) { - $markup .= str_repeat($horizontal, $this->effectiveColumnWidths[$column]); - $markup .= $column === $count - 1 ? $rightChar : $midChar; - } - - if (null !== $title) { - $titleLength = Helper::width(Helper::removeDecoration($formatter = $this->output->getFormatter(), $formattedTitle = sprintf($titleFormat, $title))); - $markupLength = Helper::width($markup); - if ($titleLength > $limit = $markupLength - 4) { - $titleLength = $limit; - $formatLength = Helper::width(Helper::removeDecoration($formatter, sprintf($titleFormat, ''))); - $formattedTitle = sprintf($titleFormat, Helper::substr($title, 0, $limit - $formatLength - 3).'...'); - } - - $titleStart = intdiv($markupLength - $titleLength, 2); - if (false === mb_detect_encoding($markup, null, true)) { - $markup = substr_replace($markup, $formattedTitle, $titleStart, $titleLength); - } else { - $markup = mb_substr($markup, 0, $titleStart).$formattedTitle.mb_substr($markup, $titleStart + $titleLength); - } - } - - $this->output->writeln(sprintf($this->style->getBorderFormat(), $markup)); - } - - /** - * Renders vertical column separator. - */ - private function renderColumnSeparator(int $type = self::BORDER_OUTSIDE): string - { - $borders = $this->style->getBorderChars(); - - return sprintf($this->style->getBorderFormat(), self::BORDER_OUTSIDE === $type ? $borders[1] : $borders[3]); - } - - /** - * Renders table row. - * - * Example: - * - * | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | - */ - private function renderRow(array $row, string $cellFormat, string $firstCellFormat = null): void - { - $rowContent = $this->renderColumnSeparator(self::BORDER_OUTSIDE); - $columns = $this->getRowColumns($row); - $last = \count($columns) - 1; - foreach ($columns as $i => $column) { - if ($firstCellFormat && 0 === $i) { - $rowContent .= $this->renderCell($row, $column, $firstCellFormat); - } else { - $rowContent .= $this->renderCell($row, $column, $cellFormat); - } - $rowContent .= $this->renderColumnSeparator($last === $i ? self::BORDER_OUTSIDE : self::BORDER_INSIDE); - } - $this->output->writeln($rowContent); - } - - /** - * Renders table cell with padding. - */ - private function renderCell(array $row, int $column, string $cellFormat): string - { - $cell = $row[$column] ?? ''; - $width = $this->effectiveColumnWidths[$column]; - if ($cell instanceof TableCell && $cell->getColspan() > 1) { - // add the width of the following columns(numbers of colspan). - foreach (range($column + 1, $column + $cell->getColspan() - 1) as $nextColumn) { - $width += $this->getColumnSeparatorWidth() + $this->effectiveColumnWidths[$nextColumn]; - } - } - - // str_pad won't work properly with multi-byte strings, we need to fix the padding - if (false !== $encoding = mb_detect_encoding($cell, null, true)) { - $width += \strlen($cell) - mb_strwidth($cell, $encoding); - } - - $style = $this->getColumnStyle($column); - - if ($cell instanceof TableSeparator) { - return sprintf($style->getBorderFormat(), str_repeat($style->getBorderChars()[2], $width)); - } - - $width += Helper::length($cell) - Helper::length(Helper::removeDecoration($this->output->getFormatter(), $cell)); - $content = sprintf($style->getCellRowContentFormat(), $cell); - - $padType = $style->getPadType(); - if ($cell instanceof TableCell && $cell->getStyle() instanceof TableCellStyle) { - $isNotStyledByTag = !preg_match('/^<(\w+|(\w+=[\w,]+;?)*)>.+<\/(\w+|(\w+=\w+;?)*)?>$/', $cell); - if ($isNotStyledByTag) { - $cellFormat = $cell->getStyle()->getCellFormat(); - if (!\is_string($cellFormat)) { - $tag = http_build_query($cell->getStyle()->getTagOptions(), '', ';'); - $cellFormat = '<'.$tag.'>%s'; - } - - if (str_contains($content, '')) { - $content = str_replace('', '', $content); - $width -= 3; - } - if (str_contains($content, '')) { - $content = str_replace('', '', $content); - $width -= \strlen(''); - } - } - - $padType = $cell->getStyle()->getPadByAlign(); - } - - return sprintf($cellFormat, str_pad($content, $width, $style->getPaddingChar(), $padType)); - } - - /** - * Calculate number of columns for this table. - */ - private function calculateNumberOfColumns(array $rows): void - { - $columns = [0]; - foreach ($rows as $row) { - if ($row instanceof TableSeparator) { - continue; - } - - $columns[] = $this->getNumberOfColumns($row); - } - - $this->numberOfColumns = max($columns); - } - - private function buildTableRows(array $rows): TableRows - { - /** @var WrappableOutputFormatterInterface $formatter */ - $formatter = $this->output->getFormatter(); - $unmergedRows = []; - for ($rowKey = 0; $rowKey < \count($rows); ++$rowKey) { - $rows = $this->fillNextRows($rows, $rowKey); - - // Remove any new line breaks and replace it with a new line - foreach ($rows[$rowKey] as $column => $cell) { - $colspan = $cell instanceof TableCell ? $cell->getColspan() : 1; - - if (isset($this->columnMaxWidths[$column]) && Helper::width(Helper::removeDecoration($formatter, $cell)) > $this->columnMaxWidths[$column]) { - $cell = $formatter->formatAndWrap($cell, $this->columnMaxWidths[$column] * $colspan); - } - if (!str_contains($cell ?? '', "\n")) { - continue; - } - $escaped = implode("\n", array_map(OutputFormatter::escapeTrailingBackslash(...), explode("\n", $cell))); - $cell = $cell instanceof TableCell ? new TableCell($escaped, ['colspan' => $cell->getColspan()]) : $escaped; - $lines = explode("\n", str_replace("\n", "\n", $cell)); - foreach ($lines as $lineKey => $line) { - if ($colspan > 1) { - $line = new TableCell($line, ['colspan' => $colspan]); - } - if (0 === $lineKey) { - $rows[$rowKey][$column] = $line; - } else { - if (!\array_key_exists($rowKey, $unmergedRows) || !\array_key_exists($lineKey, $unmergedRows[$rowKey])) { - $unmergedRows[$rowKey][$lineKey] = $this->copyRow($rows, $rowKey); - } - $unmergedRows[$rowKey][$lineKey][$column] = $line; - } - } - } - } - - return new TableRows(function () use ($rows, $unmergedRows): \Traversable { - foreach ($rows as $rowKey => $row) { - $rowGroup = [$row instanceof TableSeparator ? $row : $this->fillCells($row)]; - - if (isset($unmergedRows[$rowKey])) { - foreach ($unmergedRows[$rowKey] as $row) { - $rowGroup[] = $row instanceof TableSeparator ? $row : $this->fillCells($row); - } - } - yield $rowGroup; - } - }); - } - - private function calculateRowCount(): int - { - $numberOfRows = \count(iterator_to_array($this->buildTableRows(array_merge($this->headers, [new TableSeparator()], $this->rows)))); - - if ($this->headers) { - ++$numberOfRows; // Add row for header separator - } - - if ($this->rows) { - ++$numberOfRows; // Add row for footer separator - } - - return $numberOfRows; - } - - /** - * fill rows that contains rowspan > 1. - * - * @throws InvalidArgumentException - */ - private function fillNextRows(array $rows, int $line): array - { - $unmergedRows = []; - foreach ($rows[$line] as $column => $cell) { - if (null !== $cell && !$cell instanceof TableCell && !\is_scalar($cell) && !$cell instanceof \Stringable) { - throw new InvalidArgumentException(sprintf('A cell must be a TableCell, a scalar or an object implementing "__toString()", "%s" given.', get_debug_type($cell))); - } - if ($cell instanceof TableCell && $cell->getRowspan() > 1) { - $nbLines = $cell->getRowspan() - 1; - $lines = [$cell]; - if (str_contains($cell, "\n")) { - $lines = explode("\n", str_replace("\n", "\n", $cell)); - $nbLines = \count($lines) > $nbLines ? substr_count($cell, "\n") : $nbLines; - - $rows[$line][$column] = new TableCell($lines[0], ['colspan' => $cell->getColspan(), 'style' => $cell->getStyle()]); - unset($lines[0]); - } - - // create a two dimensional array (rowspan x colspan) - $unmergedRows = array_replace_recursive(array_fill($line + 1, $nbLines, []), $unmergedRows); - foreach ($unmergedRows as $unmergedRowKey => $unmergedRow) { - $value = $lines[$unmergedRowKey - $line] ?? ''; - $unmergedRows[$unmergedRowKey][$column] = new TableCell($value, ['colspan' => $cell->getColspan(), 'style' => $cell->getStyle()]); - if ($nbLines === $unmergedRowKey - $line) { - break; - } - } - } - } - - foreach ($unmergedRows as $unmergedRowKey => $unmergedRow) { - // we need to know if $unmergedRow will be merged or inserted into $rows - if (isset($rows[$unmergedRowKey]) && \is_array($rows[$unmergedRowKey]) && ($this->getNumberOfColumns($rows[$unmergedRowKey]) + $this->getNumberOfColumns($unmergedRows[$unmergedRowKey]) <= $this->numberOfColumns)) { - foreach ($unmergedRow as $cellKey => $cell) { - // insert cell into row at cellKey position - array_splice($rows[$unmergedRowKey], $cellKey, 0, [$cell]); - } - } else { - $row = $this->copyRow($rows, $unmergedRowKey - 1); - foreach ($unmergedRow as $column => $cell) { - if (!empty($cell)) { - $row[$column] = $unmergedRow[$column]; - } - } - array_splice($rows, $unmergedRowKey, 0, [$row]); - } - } - - return $rows; - } - - /** - * fill cells for a row that contains colspan > 1. - */ - private function fillCells(iterable $row): iterable - { - $newRow = []; - - foreach ($row as $column => $cell) { - $newRow[] = $cell; - if ($cell instanceof TableCell && $cell->getColspan() > 1) { - foreach (range($column + 1, $column + $cell->getColspan() - 1) as $position) { - // insert empty value at column position - $newRow[] = ''; - } - } - } - - return $newRow ?: $row; - } - - private function copyRow(array $rows, int $line): array - { - $row = $rows[$line]; - foreach ($row as $cellKey => $cellValue) { - $row[$cellKey] = ''; - if ($cellValue instanceof TableCell) { - $row[$cellKey] = new TableCell('', ['colspan' => $cellValue->getColspan()]); - } - } - - return $row; - } - - /** - * Gets number of columns by row. - */ - private function getNumberOfColumns(array $row): int - { - $columns = \count($row); - foreach ($row as $column) { - $columns += $column instanceof TableCell ? ($column->getColspan() - 1) : 0; - } - - return $columns; - } - - /** - * Gets list of columns for the given row. - */ - private function getRowColumns(array $row): array - { - $columns = range(0, $this->numberOfColumns - 1); - foreach ($row as $cellKey => $cell) { - if ($cell instanceof TableCell && $cell->getColspan() > 1) { - // exclude grouped columns. - $columns = array_diff($columns, range($cellKey + 1, $cellKey + $cell->getColspan() - 1)); - } - } - - return $columns; - } - - /** - * Calculates columns widths. - */ - private function calculateColumnsWidth(iterable $groups): void - { - for ($column = 0; $column < $this->numberOfColumns; ++$column) { - $lengths = []; - foreach ($groups as $group) { - foreach ($group as $row) { - if ($row instanceof TableSeparator) { - continue; - } - - foreach ($row as $i => $cell) { - if ($cell instanceof TableCell) { - $textContent = Helper::removeDecoration($this->output->getFormatter(), $cell); - $textLength = Helper::width($textContent); - if ($textLength > 0) { - $contentColumns = mb_str_split($textContent, ceil($textLength / $cell->getColspan())); - foreach ($contentColumns as $position => $content) { - $row[$i + $position] = $content; - } - } - } - } - - $lengths[] = $this->getCellWidth($row, $column); - } - } - - $this->effectiveColumnWidths[$column] = max($lengths) + Helper::width($this->style->getCellRowContentFormat()) - 2; - } - } - - private function getColumnSeparatorWidth(): int - { - return Helper::width(sprintf($this->style->getBorderFormat(), $this->style->getBorderChars()[3])); - } - - private function getCellWidth(array $row, int $column): int - { - $cellWidth = 0; - - if (isset($row[$column])) { - $cell = $row[$column]; - $cellWidth = Helper::width(Helper::removeDecoration($this->output->getFormatter(), $cell)); - } - - $columnWidth = $this->columnWidths[$column] ?? 0; - $cellWidth = max($cellWidth, $columnWidth); - - return isset($this->columnMaxWidths[$column]) ? min($this->columnMaxWidths[$column], $cellWidth) : $cellWidth; - } - - /** - * Called after rendering to cleanup cache data. - */ - private function cleanup(): void - { - $this->effectiveColumnWidths = []; - unset($this->numberOfColumns); - } - - /** - * @return array - */ - private static function initStyles(): array - { - $borderless = new TableStyle(); - $borderless - ->setHorizontalBorderChars('=') - ->setVerticalBorderChars(' ') - ->setDefaultCrossingChar(' ') - ; - - $compact = new TableStyle(); - $compact - ->setHorizontalBorderChars('') - ->setVerticalBorderChars('') - ->setDefaultCrossingChar('') - ->setCellRowContentFormat('%s ') - ; - - $styleGuide = new TableStyle(); - $styleGuide - ->setHorizontalBorderChars('-') - ->setVerticalBorderChars(' ') - ->setDefaultCrossingChar(' ') - ->setCellHeaderFormat('%s') - ; - - $box = (new TableStyle()) - ->setHorizontalBorderChars('─') - ->setVerticalBorderChars('│') - ->setCrossingChars('┼', '┌', '┬', '┐', '┤', '┘', '┴', '└', '├') - ; - - $boxDouble = (new TableStyle()) - ->setHorizontalBorderChars('═', '─') - ->setVerticalBorderChars('║', '│') - ->setCrossingChars('┼', '╔', '╤', '╗', '╢', '╝', '╧', '╚', '╟', '╠', '╪', '╣') - ; - - return [ - 'default' => new TableStyle(), - 'borderless' => $borderless, - 'compact' => $compact, - 'symfony-style-guide' => $styleGuide, - 'box' => $box, - 'box-double' => $boxDouble, - ]; - } - - private function resolveStyle(TableStyle|string $name): TableStyle - { - if ($name instanceof TableStyle) { - return $name; - } - - return self::$styles[$name] ?? throw new InvalidArgumentException(sprintf('Style "%s" is not defined.', $name)); - } -} diff --git a/vendor/symfony/console/Helper/TableCell.php b/vendor/symfony/console/Helper/TableCell.php deleted file mode 100644 index 394b2bc9..00000000 --- a/vendor/symfony/console/Helper/TableCell.php +++ /dev/null @@ -1,72 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Exception\InvalidArgumentException; - -/** - * @author Abdellatif Ait boudad - */ -class TableCell -{ - private string $value; - private array $options = [ - 'rowspan' => 1, - 'colspan' => 1, - 'style' => null, - ]; - - public function __construct(string $value = '', array $options = []) - { - $this->value = $value; - - // check option names - if ($diff = array_diff(array_keys($options), array_keys($this->options))) { - throw new InvalidArgumentException(sprintf('The TableCell does not support the following options: \'%s\'.', implode('\', \'', $diff))); - } - - if (isset($options['style']) && !$options['style'] instanceof TableCellStyle) { - throw new InvalidArgumentException('The style option must be an instance of "TableCellStyle".'); - } - - $this->options = array_merge($this->options, $options); - } - - /** - * Returns the cell value. - */ - public function __toString(): string - { - return $this->value; - } - - /** - * Gets number of colspan. - */ - public function getColspan(): int - { - return (int) $this->options['colspan']; - } - - /** - * Gets number of rowspan. - */ - public function getRowspan(): int - { - return (int) $this->options['rowspan']; - } - - public function getStyle(): ?TableCellStyle - { - return $this->options['style']; - } -} diff --git a/vendor/symfony/console/Helper/TableCellStyle.php b/vendor/symfony/console/Helper/TableCellStyle.php deleted file mode 100644 index 9419dcb4..00000000 --- a/vendor/symfony/console/Helper/TableCellStyle.php +++ /dev/null @@ -1,84 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Exception\InvalidArgumentException; - -/** - * @author Yewhen Khoptynskyi - */ -class TableCellStyle -{ - public const DEFAULT_ALIGN = 'left'; - - private const TAG_OPTIONS = [ - 'fg', - 'bg', - 'options', - ]; - - private const ALIGN_MAP = [ - 'left' => \STR_PAD_RIGHT, - 'center' => \STR_PAD_BOTH, - 'right' => \STR_PAD_LEFT, - ]; - - private array $options = [ - 'fg' => 'default', - 'bg' => 'default', - 'options' => null, - 'align' => self::DEFAULT_ALIGN, - 'cellFormat' => null, - ]; - - public function __construct(array $options = []) - { - if ($diff = array_diff(array_keys($options), array_keys($this->options))) { - throw new InvalidArgumentException(sprintf('The TableCellStyle does not support the following options: \'%s\'.', implode('\', \'', $diff))); - } - - if (isset($options['align']) && !\array_key_exists($options['align'], self::ALIGN_MAP)) { - throw new InvalidArgumentException(sprintf('Wrong align value. Value must be following: \'%s\'.', implode('\', \'', array_keys(self::ALIGN_MAP)))); - } - - $this->options = array_merge($this->options, $options); - } - - public function getOptions(): array - { - return $this->options; - } - - /** - * Gets options we need for tag for example fg, bg. - * - * @return string[] - */ - public function getTagOptions(): array - { - return array_filter( - $this->getOptions(), - fn ($key) => \in_array($key, self::TAG_OPTIONS) && isset($this->options[$key]), - \ARRAY_FILTER_USE_KEY - ); - } - - public function getPadByAlign(): int - { - return self::ALIGN_MAP[$this->getOptions()['align']]; - } - - public function getCellFormat(): ?string - { - return $this->getOptions()['cellFormat']; - } -} diff --git a/vendor/symfony/console/Helper/TableRows.php b/vendor/symfony/console/Helper/TableRows.php deleted file mode 100644 index 97d07726..00000000 --- a/vendor/symfony/console/Helper/TableRows.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -/** - * @internal - */ -class TableRows implements \IteratorAggregate -{ - private \Closure $generator; - - public function __construct(\Closure $generator) - { - $this->generator = $generator; - } - - public function getIterator(): \Traversable - { - return ($this->generator)(); - } -} diff --git a/vendor/symfony/console/Helper/TableSeparator.php b/vendor/symfony/console/Helper/TableSeparator.php deleted file mode 100644 index e541c531..00000000 --- a/vendor/symfony/console/Helper/TableSeparator.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -/** - * Marks a row as being a separator. - * - * @author Fabien Potencier - */ -class TableSeparator extends TableCell -{ - public function __construct(array $options = []) - { - parent::__construct('', $options); - } -} diff --git a/vendor/symfony/console/Helper/TableStyle.php b/vendor/symfony/console/Helper/TableStyle.php deleted file mode 100644 index bbad98e7..00000000 --- a/vendor/symfony/console/Helper/TableStyle.php +++ /dev/null @@ -1,362 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Exception\LogicException; - -/** - * Defines the styles for a Table. - * - * @author Fabien Potencier - * @author Саша Стаменковић - * @author Dany Maillard - */ -class TableStyle -{ - private string $paddingChar = ' '; - private string $horizontalOutsideBorderChar = '-'; - private string $horizontalInsideBorderChar = '-'; - private string $verticalOutsideBorderChar = '|'; - private string $verticalInsideBorderChar = '|'; - private string $crossingChar = '+'; - private string $crossingTopRightChar = '+'; - private string $crossingTopMidChar = '+'; - private string $crossingTopLeftChar = '+'; - private string $crossingMidRightChar = '+'; - private string $crossingBottomRightChar = '+'; - private string $crossingBottomMidChar = '+'; - private string $crossingBottomLeftChar = '+'; - private string $crossingMidLeftChar = '+'; - private string $crossingTopLeftBottomChar = '+'; - private string $crossingTopMidBottomChar = '+'; - private string $crossingTopRightBottomChar = '+'; - private string $headerTitleFormat = ' %s '; - private string $footerTitleFormat = ' %s '; - private string $cellHeaderFormat = '%s'; - private string $cellRowFormat = '%s'; - private string $cellRowContentFormat = ' %s '; - private string $borderFormat = '%s'; - private int $padType = \STR_PAD_RIGHT; - - /** - * Sets padding character, used for cell padding. - * - * @return $this - */ - public function setPaddingChar(string $paddingChar): static - { - if (!$paddingChar) { - throw new LogicException('The padding char must not be empty.'); - } - - $this->paddingChar = $paddingChar; - - return $this; - } - - /** - * Gets padding character, used for cell padding. - */ - public function getPaddingChar(): string - { - return $this->paddingChar; - } - - /** - * Sets horizontal border characters. - * - * - * ╔═══════════════╤══════════════════════════╤══════════════════╗ - * 1 ISBN 2 Title │ Author ║ - * ╠═══════════════╪══════════════════════════╪══════════════════╣ - * ║ 99921-58-10-7 │ Divine Comedy │ Dante Alighieri ║ - * ║ 9971-5-0210-0 │ A Tale of Two Cities │ Charles Dickens ║ - * ║ 960-425-059-0 │ The Lord of the Rings │ J. R. R. Tolkien ║ - * ║ 80-902734-1-6 │ And Then There Were None │ Agatha Christie ║ - * ╚═══════════════╧══════════════════════════╧══════════════════╝ - * - * - * @return $this - */ - public function setHorizontalBorderChars(string $outside, string $inside = null): static - { - $this->horizontalOutsideBorderChar = $outside; - $this->horizontalInsideBorderChar = $inside ?? $outside; - - return $this; - } - - /** - * Sets vertical border characters. - * - * - * ╔═══════════════╤══════════════════════════╤══════════════════╗ - * ║ ISBN │ Title │ Author ║ - * ╠═══════1═══════╪══════════════════════════╪══════════════════╣ - * ║ 99921-58-10-7 │ Divine Comedy │ Dante Alighieri ║ - * ║ 9971-5-0210-0 │ A Tale of Two Cities │ Charles Dickens ║ - * ╟───────2───────┼──────────────────────────┼──────────────────╢ - * ║ 960-425-059-0 │ The Lord of the Rings │ J. R. R. Tolkien ║ - * ║ 80-902734-1-6 │ And Then There Were None │ Agatha Christie ║ - * ╚═══════════════╧══════════════════════════╧══════════════════╝ - * - * - * @return $this - */ - public function setVerticalBorderChars(string $outside, string $inside = null): static - { - $this->verticalOutsideBorderChar = $outside; - $this->verticalInsideBorderChar = $inside ?? $outside; - - return $this; - } - - /** - * Gets border characters. - * - * @internal - */ - public function getBorderChars(): array - { - return [ - $this->horizontalOutsideBorderChar, - $this->verticalOutsideBorderChar, - $this->horizontalInsideBorderChar, - $this->verticalInsideBorderChar, - ]; - } - - /** - * Sets crossing characters. - * - * Example: - * - * 1═══════════════2══════════════════════════2══════════════════3 - * ║ ISBN │ Title │ Author ║ - * 8'══════════════0'═════════════════════════0'═════════════════4' - * ║ 99921-58-10-7 │ Divine Comedy │ Dante Alighieri ║ - * ║ 9971-5-0210-0 │ A Tale of Two Cities │ Charles Dickens ║ - * 8───────────────0──────────────────────────0──────────────────4 - * ║ 960-425-059-0 │ The Lord of the Rings │ J. R. R. Tolkien ║ - * ║ 80-902734-1-6 │ And Then There Were None │ Agatha Christie ║ - * 7═══════════════6══════════════════════════6══════════════════5 - * - * - * @param string $cross Crossing char (see #0 of example) - * @param string $topLeft Top left char (see #1 of example) - * @param string $topMid Top mid char (see #2 of example) - * @param string $topRight Top right char (see #3 of example) - * @param string $midRight Mid right char (see #4 of example) - * @param string $bottomRight Bottom right char (see #5 of example) - * @param string $bottomMid Bottom mid char (see #6 of example) - * @param string $bottomLeft Bottom left char (see #7 of example) - * @param string $midLeft Mid left char (see #8 of example) - * @param string|null $topLeftBottom Top left bottom char (see #8' of example), equals to $midLeft if null - * @param string|null $topMidBottom Top mid bottom char (see #0' of example), equals to $cross if null - * @param string|null $topRightBottom Top right bottom char (see #4' of example), equals to $midRight if null - * - * @return $this - */ - public function setCrossingChars(string $cross, string $topLeft, string $topMid, string $topRight, string $midRight, string $bottomRight, string $bottomMid, string $bottomLeft, string $midLeft, string $topLeftBottom = null, string $topMidBottom = null, string $topRightBottom = null): static - { - $this->crossingChar = $cross; - $this->crossingTopLeftChar = $topLeft; - $this->crossingTopMidChar = $topMid; - $this->crossingTopRightChar = $topRight; - $this->crossingMidRightChar = $midRight; - $this->crossingBottomRightChar = $bottomRight; - $this->crossingBottomMidChar = $bottomMid; - $this->crossingBottomLeftChar = $bottomLeft; - $this->crossingMidLeftChar = $midLeft; - $this->crossingTopLeftBottomChar = $topLeftBottom ?? $midLeft; - $this->crossingTopMidBottomChar = $topMidBottom ?? $cross; - $this->crossingTopRightBottomChar = $topRightBottom ?? $midRight; - - return $this; - } - - /** - * Sets default crossing character used for each cross. - * - * @see {@link setCrossingChars()} for setting each crossing individually. - */ - public function setDefaultCrossingChar(string $char): self - { - return $this->setCrossingChars($char, $char, $char, $char, $char, $char, $char, $char, $char); - } - - /** - * Gets crossing character. - */ - public function getCrossingChar(): string - { - return $this->crossingChar; - } - - /** - * Gets crossing characters. - * - * @internal - */ - public function getCrossingChars(): array - { - return [ - $this->crossingChar, - $this->crossingTopLeftChar, - $this->crossingTopMidChar, - $this->crossingTopRightChar, - $this->crossingMidRightChar, - $this->crossingBottomRightChar, - $this->crossingBottomMidChar, - $this->crossingBottomLeftChar, - $this->crossingMidLeftChar, - $this->crossingTopLeftBottomChar, - $this->crossingTopMidBottomChar, - $this->crossingTopRightBottomChar, - ]; - } - - /** - * Sets header cell format. - * - * @return $this - */ - public function setCellHeaderFormat(string $cellHeaderFormat): static - { - $this->cellHeaderFormat = $cellHeaderFormat; - - return $this; - } - - /** - * Gets header cell format. - */ - public function getCellHeaderFormat(): string - { - return $this->cellHeaderFormat; - } - - /** - * Sets row cell format. - * - * @return $this - */ - public function setCellRowFormat(string $cellRowFormat): static - { - $this->cellRowFormat = $cellRowFormat; - - return $this; - } - - /** - * Gets row cell format. - */ - public function getCellRowFormat(): string - { - return $this->cellRowFormat; - } - - /** - * Sets row cell content format. - * - * @return $this - */ - public function setCellRowContentFormat(string $cellRowContentFormat): static - { - $this->cellRowContentFormat = $cellRowContentFormat; - - return $this; - } - - /** - * Gets row cell content format. - */ - public function getCellRowContentFormat(): string - { - return $this->cellRowContentFormat; - } - - /** - * Sets table border format. - * - * @return $this - */ - public function setBorderFormat(string $borderFormat): static - { - $this->borderFormat = $borderFormat; - - return $this; - } - - /** - * Gets table border format. - */ - public function getBorderFormat(): string - { - return $this->borderFormat; - } - - /** - * Sets cell padding type. - * - * @return $this - */ - public function setPadType(int $padType): static - { - if (!\in_array($padType, [\STR_PAD_LEFT, \STR_PAD_RIGHT, \STR_PAD_BOTH], true)) { - throw new InvalidArgumentException('Invalid padding type. Expected one of (STR_PAD_LEFT, STR_PAD_RIGHT, STR_PAD_BOTH).'); - } - - $this->padType = $padType; - - return $this; - } - - /** - * Gets cell padding type. - */ - public function getPadType(): int - { - return $this->padType; - } - - public function getHeaderTitleFormat(): string - { - return $this->headerTitleFormat; - } - - /** - * @return $this - */ - public function setHeaderTitleFormat(string $format): static - { - $this->headerTitleFormat = $format; - - return $this; - } - - public function getFooterTitleFormat(): string - { - return $this->footerTitleFormat; - } - - /** - * @return $this - */ - public function setFooterTitleFormat(string $format): static - { - $this->footerTitleFormat = $format; - - return $this; - } -} diff --git a/vendor/symfony/console/Input/ArgvInput.php b/vendor/symfony/console/Input/ArgvInput.php deleted file mode 100644 index 59f9217e..00000000 --- a/vendor/symfony/console/Input/ArgvInput.php +++ /dev/null @@ -1,370 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Input; - -use Symfony\Component\Console\Exception\RuntimeException; - -/** - * ArgvInput represents an input coming from the CLI arguments. - * - * Usage: - * - * $input = new ArgvInput(); - * - * By default, the `$_SERVER['argv']` array is used for the input values. - * - * This can be overridden by explicitly passing the input values in the constructor: - * - * $input = new ArgvInput($_SERVER['argv']); - * - * If you pass it yourself, don't forget that the first element of the array - * is the name of the running application. - * - * When passing an argument to the constructor, be sure that it respects - * the same rules as the argv one. It's almost always better to use the - * `StringInput` when you want to provide your own input. - * - * @author Fabien Potencier - * - * @see http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html - * @see http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html#tag_12_02 - */ -class ArgvInput extends Input -{ - private array $tokens; - private array $parsed; - - public function __construct(array $argv = null, InputDefinition $definition = null) - { - $argv ??= $_SERVER['argv'] ?? []; - - // strip the application name - array_shift($argv); - - $this->tokens = $argv; - - parent::__construct($definition); - } - - /** - * @return void - */ - protected function setTokens(array $tokens) - { - $this->tokens = $tokens; - } - - /** - * @return void - */ - protected function parse() - { - $parseOptions = true; - $this->parsed = $this->tokens; - while (null !== $token = array_shift($this->parsed)) { - $parseOptions = $this->parseToken($token, $parseOptions); - } - } - - protected function parseToken(string $token, bool $parseOptions): bool - { - if ($parseOptions && '' == $token) { - $this->parseArgument($token); - } elseif ($parseOptions && '--' == $token) { - return false; - } elseif ($parseOptions && str_starts_with($token, '--')) { - $this->parseLongOption($token); - } elseif ($parseOptions && '-' === $token[0] && '-' !== $token) { - $this->parseShortOption($token); - } else { - $this->parseArgument($token); - } - - return $parseOptions; - } - - /** - * Parses a short option. - */ - private function parseShortOption(string $token): void - { - $name = substr($token, 1); - - if (\strlen($name) > 1) { - if ($this->definition->hasShortcut($name[0]) && $this->definition->getOptionForShortcut($name[0])->acceptValue()) { - // an option with a value (with no space) - $this->addShortOption($name[0], substr($name, 1)); - } else { - $this->parseShortOptionSet($name); - } - } else { - $this->addShortOption($name, null); - } - } - - /** - * Parses a short option set. - * - * @throws RuntimeException When option given doesn't exist - */ - private function parseShortOptionSet(string $name): void - { - $len = \strlen($name); - for ($i = 0; $i < $len; ++$i) { - if (!$this->definition->hasShortcut($name[$i])) { - $encoding = mb_detect_encoding($name, null, true); - throw new RuntimeException(sprintf('The "-%s" option does not exist.', false === $encoding ? $name[$i] : mb_substr($name, $i, 1, $encoding))); - } - - $option = $this->definition->getOptionForShortcut($name[$i]); - if ($option->acceptValue()) { - $this->addLongOption($option->getName(), $i === $len - 1 ? null : substr($name, $i + 1)); - - break; - } else { - $this->addLongOption($option->getName(), null); - } - } - } - - /** - * Parses a long option. - */ - private function parseLongOption(string $token): void - { - $name = substr($token, 2); - - if (false !== $pos = strpos($name, '=')) { - if ('' === $value = substr($name, $pos + 1)) { - array_unshift($this->parsed, $value); - } - $this->addLongOption(substr($name, 0, $pos), $value); - } else { - $this->addLongOption($name, null); - } - } - - /** - * Parses an argument. - * - * @throws RuntimeException When too many arguments are given - */ - private function parseArgument(string $token): void - { - $c = \count($this->arguments); - - // if input is expecting another argument, add it - if ($this->definition->hasArgument($c)) { - $arg = $this->definition->getArgument($c); - $this->arguments[$arg->getName()] = $arg->isArray() ? [$token] : $token; - - // if last argument isArray(), append token to last argument - } elseif ($this->definition->hasArgument($c - 1) && $this->definition->getArgument($c - 1)->isArray()) { - $arg = $this->definition->getArgument($c - 1); - $this->arguments[$arg->getName()][] = $token; - - // unexpected argument - } else { - $all = $this->definition->getArguments(); - $symfonyCommandName = null; - if (($inputArgument = $all[$key = array_key_first($all)] ?? null) && 'command' === $inputArgument->getName()) { - $symfonyCommandName = $this->arguments['command'] ?? null; - unset($all[$key]); - } - - if (\count($all)) { - if ($symfonyCommandName) { - $message = sprintf('Too many arguments to "%s" command, expected arguments "%s".', $symfonyCommandName, implode('" "', array_keys($all))); - } else { - $message = sprintf('Too many arguments, expected arguments "%s".', implode('" "', array_keys($all))); - } - } elseif ($symfonyCommandName) { - $message = sprintf('No arguments expected for "%s" command, got "%s".', $symfonyCommandName, $token); - } else { - $message = sprintf('No arguments expected, got "%s".', $token); - } - - throw new RuntimeException($message); - } - } - - /** - * Adds a short option value. - * - * @throws RuntimeException When option given doesn't exist - */ - private function addShortOption(string $shortcut, mixed $value): void - { - if (!$this->definition->hasShortcut($shortcut)) { - throw new RuntimeException(sprintf('The "-%s" option does not exist.', $shortcut)); - } - - $this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value); - } - - /** - * Adds a long option value. - * - * @throws RuntimeException When option given doesn't exist - */ - private function addLongOption(string $name, mixed $value): void - { - if (!$this->definition->hasOption($name)) { - if (!$this->definition->hasNegation($name)) { - throw new RuntimeException(sprintf('The "--%s" option does not exist.', $name)); - } - - $optionName = $this->definition->negationToName($name); - if (null !== $value) { - throw new RuntimeException(sprintf('The "--%s" option does not accept a value.', $name)); - } - $this->options[$optionName] = false; - - return; - } - - $option = $this->definition->getOption($name); - - if (null !== $value && !$option->acceptValue()) { - throw new RuntimeException(sprintf('The "--%s" option does not accept a value.', $name)); - } - - if (\in_array($value, ['', null], true) && $option->acceptValue() && \count($this->parsed)) { - // if option accepts an optional or mandatory argument - // let's see if there is one provided - $next = array_shift($this->parsed); - if ((isset($next[0]) && '-' !== $next[0]) || \in_array($next, ['', null], true)) { - $value = $next; - } else { - array_unshift($this->parsed, $next); - } - } - - if (null === $value) { - if ($option->isValueRequired()) { - throw new RuntimeException(sprintf('The "--%s" option requires a value.', $name)); - } - - if (!$option->isArray() && !$option->isValueOptional()) { - $value = true; - } - } - - if ($option->isArray()) { - $this->options[$name][] = $value; - } else { - $this->options[$name] = $value; - } - } - - public function getFirstArgument(): ?string - { - $isOption = false; - foreach ($this->tokens as $i => $token) { - if ($token && '-' === $token[0]) { - if (str_contains($token, '=') || !isset($this->tokens[$i + 1])) { - continue; - } - - // If it's a long option, consider that everything after "--" is the option name. - // Otherwise, use the last char (if it's a short option set, only the last one can take a value with space separator) - $name = '-' === $token[1] ? substr($token, 2) : substr($token, -1); - if (!isset($this->options[$name]) && !$this->definition->hasShortcut($name)) { - // noop - } elseif ((isset($this->options[$name]) || isset($this->options[$name = $this->definition->shortcutToName($name)])) && $this->tokens[$i + 1] === $this->options[$name]) { - $isOption = true; - } - - continue; - } - - if ($isOption) { - $isOption = false; - continue; - } - - return $token; - } - - return null; - } - - public function hasParameterOption(string|array $values, bool $onlyParams = false): bool - { - $values = (array) $values; - - foreach ($this->tokens as $token) { - if ($onlyParams && '--' === $token) { - return false; - } - foreach ($values as $value) { - // Options with values: - // For long options, test for '--option=' at beginning - // For short options, test for '-o' at beginning - $leading = str_starts_with($value, '--') ? $value.'=' : $value; - if ($token === $value || '' !== $leading && str_starts_with($token, $leading)) { - return true; - } - } - } - - return false; - } - - public function getParameterOption(string|array $values, string|bool|int|float|array|null $default = false, bool $onlyParams = false): mixed - { - $values = (array) $values; - $tokens = $this->tokens; - - while (0 < \count($tokens)) { - $token = array_shift($tokens); - if ($onlyParams && '--' === $token) { - return $default; - } - - foreach ($values as $value) { - if ($token === $value) { - return array_shift($tokens); - } - // Options with values: - // For long options, test for '--option=' at beginning - // For short options, test for '-o' at beginning - $leading = str_starts_with($value, '--') ? $value.'=' : $value; - if ('' !== $leading && str_starts_with($token, $leading)) { - return substr($token, \strlen($leading)); - } - } - } - - return $default; - } - - /** - * Returns a stringified representation of the args passed to the command. - */ - public function __toString(): string - { - $tokens = array_map(function ($token) { - if (preg_match('{^(-[^=]+=)(.+)}', $token, $match)) { - return $match[1].$this->escapeToken($match[2]); - } - - if ($token && '-' !== $token[0]) { - return $this->escapeToken($token); - } - - return $token; - }, $this->tokens); - - return implode(' ', $tokens); - } -} diff --git a/vendor/symfony/console/Input/ArrayInput.php b/vendor/symfony/console/Input/ArrayInput.php deleted file mode 100644 index 355de61d..00000000 --- a/vendor/symfony/console/Input/ArrayInput.php +++ /dev/null @@ -1,196 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Input; - -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Exception\InvalidOptionException; - -/** - * ArrayInput represents an input provided as an array. - * - * Usage: - * - * $input = new ArrayInput(['command' => 'foo:bar', 'foo' => 'bar', '--bar' => 'foobar']); - * - * @author Fabien Potencier - */ -class ArrayInput extends Input -{ - private array $parameters; - - public function __construct(array $parameters, InputDefinition $definition = null) - { - $this->parameters = $parameters; - - parent::__construct($definition); - } - - public function getFirstArgument(): ?string - { - foreach ($this->parameters as $param => $value) { - if ($param && \is_string($param) && '-' === $param[0]) { - continue; - } - - return $value; - } - - return null; - } - - public function hasParameterOption(string|array $values, bool $onlyParams = false): bool - { - $values = (array) $values; - - foreach ($this->parameters as $k => $v) { - if (!\is_int($k)) { - $v = $k; - } - - if ($onlyParams && '--' === $v) { - return false; - } - - if (\in_array($v, $values)) { - return true; - } - } - - return false; - } - - public function getParameterOption(string|array $values, string|bool|int|float|array|null $default = false, bool $onlyParams = false): mixed - { - $values = (array) $values; - - foreach ($this->parameters as $k => $v) { - if ($onlyParams && ('--' === $k || (\is_int($k) && '--' === $v))) { - return $default; - } - - if (\is_int($k)) { - if (\in_array($v, $values)) { - return true; - } - } elseif (\in_array($k, $values)) { - return $v; - } - } - - return $default; - } - - /** - * Returns a stringified representation of the args passed to the command. - */ - public function __toString(): string - { - $params = []; - foreach ($this->parameters as $param => $val) { - if ($param && \is_string($param) && '-' === $param[0]) { - $glue = ('-' === $param[1]) ? '=' : ' '; - if (\is_array($val)) { - foreach ($val as $v) { - $params[] = $param.('' != $v ? $glue.$this->escapeToken($v) : ''); - } - } else { - $params[] = $param.('' != $val ? $glue.$this->escapeToken($val) : ''); - } - } else { - $params[] = \is_array($val) ? implode(' ', array_map($this->escapeToken(...), $val)) : $this->escapeToken($val); - } - } - - return implode(' ', $params); - } - - /** - * @return void - */ - protected function parse() - { - foreach ($this->parameters as $key => $value) { - if ('--' === $key) { - return; - } - if (str_starts_with($key, '--')) { - $this->addLongOption(substr($key, 2), $value); - } elseif (str_starts_with($key, '-')) { - $this->addShortOption(substr($key, 1), $value); - } else { - $this->addArgument($key, $value); - } - } - } - - /** - * Adds a short option value. - * - * @throws InvalidOptionException When option given doesn't exist - */ - private function addShortOption(string $shortcut, mixed $value): void - { - if (!$this->definition->hasShortcut($shortcut)) { - throw new InvalidOptionException(sprintf('The "-%s" option does not exist.', $shortcut)); - } - - $this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value); - } - - /** - * Adds a long option value. - * - * @throws InvalidOptionException When option given doesn't exist - * @throws InvalidOptionException When a required value is missing - */ - private function addLongOption(string $name, mixed $value): void - { - if (!$this->definition->hasOption($name)) { - if (!$this->definition->hasNegation($name)) { - throw new InvalidOptionException(sprintf('The "--%s" option does not exist.', $name)); - } - - $optionName = $this->definition->negationToName($name); - $this->options[$optionName] = false; - - return; - } - - $option = $this->definition->getOption($name); - - if (null === $value) { - if ($option->isValueRequired()) { - throw new InvalidOptionException(sprintf('The "--%s" option requires a value.', $name)); - } - - if (!$option->isValueOptional()) { - $value = true; - } - } - - $this->options[$name] = $value; - } - - /** - * Adds an argument value. - * - * @throws InvalidArgumentException When argument given doesn't exist - */ - private function addArgument(string|int $name, mixed $value): void - { - if (!$this->definition->hasArgument($name)) { - throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); - } - - $this->arguments[$name] = $value; - } -} diff --git a/vendor/symfony/console/Input/Input.php b/vendor/symfony/console/Input/Input.php deleted file mode 100644 index c7959a6c..00000000 --- a/vendor/symfony/console/Input/Input.php +++ /dev/null @@ -1,193 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Input; - -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Exception\RuntimeException; - -/** - * Input is the base class for all concrete Input classes. - * - * Three concrete classes are provided by default: - * - * * `ArgvInput`: The input comes from the CLI arguments (argv) - * * `StringInput`: The input is provided as a string - * * `ArrayInput`: The input is provided as an array - * - * @author Fabien Potencier - */ -abstract class Input implements InputInterface, StreamableInputInterface -{ - protected $definition; - /** @var resource */ - protected $stream; - protected $options = []; - protected $arguments = []; - protected $interactive = true; - - public function __construct(InputDefinition $definition = null) - { - if (null === $definition) { - $this->definition = new InputDefinition(); - } else { - $this->bind($definition); - $this->validate(); - } - } - - /** - * @return void - */ - public function bind(InputDefinition $definition) - { - $this->arguments = []; - $this->options = []; - $this->definition = $definition; - - $this->parse(); - } - - /** - * Processes command line arguments. - * - * @return void - */ - abstract protected function parse(); - - /** - * @return void - */ - public function validate() - { - $definition = $this->definition; - $givenArguments = $this->arguments; - - $missingArguments = array_filter(array_keys($definition->getArguments()), fn ($argument) => !\array_key_exists($argument, $givenArguments) && $definition->getArgument($argument)->isRequired()); - - if (\count($missingArguments) > 0) { - throw new RuntimeException(sprintf('Not enough arguments (missing: "%s").', implode(', ', $missingArguments))); - } - } - - public function isInteractive(): bool - { - return $this->interactive; - } - - /** - * @return void - */ - public function setInteractive(bool $interactive) - { - $this->interactive = $interactive; - } - - public function getArguments(): array - { - return array_merge($this->definition->getArgumentDefaults(), $this->arguments); - } - - public function getArgument(string $name): mixed - { - if (!$this->definition->hasArgument($name)) { - throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); - } - - return $this->arguments[$name] ?? $this->definition->getArgument($name)->getDefault(); - } - - /** - * @return void - */ - public function setArgument(string $name, mixed $value) - { - if (!$this->definition->hasArgument($name)) { - throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); - } - - $this->arguments[$name] = $value; - } - - public function hasArgument(string $name): bool - { - return $this->definition->hasArgument($name); - } - - public function getOptions(): array - { - return array_merge($this->definition->getOptionDefaults(), $this->options); - } - - public function getOption(string $name): mixed - { - if ($this->definition->hasNegation($name)) { - if (null === $value = $this->getOption($this->definition->negationToName($name))) { - return $value; - } - - return !$value; - } - - if (!$this->definition->hasOption($name)) { - throw new InvalidArgumentException(sprintf('The "%s" option does not exist.', $name)); - } - - return \array_key_exists($name, $this->options) ? $this->options[$name] : $this->definition->getOption($name)->getDefault(); - } - - /** - * @return void - */ - public function setOption(string $name, mixed $value) - { - if ($this->definition->hasNegation($name)) { - $this->options[$this->definition->negationToName($name)] = !$value; - - return; - } elseif (!$this->definition->hasOption($name)) { - throw new InvalidArgumentException(sprintf('The "%s" option does not exist.', $name)); - } - - $this->options[$name] = $value; - } - - public function hasOption(string $name): bool - { - return $this->definition->hasOption($name) || $this->definition->hasNegation($name); - } - - /** - * Escapes a token through escapeshellarg if it contains unsafe chars. - */ - public function escapeToken(string $token): string - { - return preg_match('{^[\w-]+$}', $token) ? $token : escapeshellarg($token); - } - - /** - * @param resource $stream - * - * @return void - */ - public function setStream($stream) - { - $this->stream = $stream; - } - - /** - * @return resource - */ - public function getStream() - { - return $this->stream; - } -} diff --git a/vendor/symfony/console/Input/InputArgument.php b/vendor/symfony/console/Input/InputArgument.php deleted file mode 100644 index 5cb15148..00000000 --- a/vendor/symfony/console/Input/InputArgument.php +++ /dev/null @@ -1,154 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Input; - -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Completion\CompletionInput; -use Symfony\Component\Console\Completion\CompletionSuggestions; -use Symfony\Component\Console\Completion\Suggestion; -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Exception\LogicException; - -/** - * Represents a command line argument. - * - * @author Fabien Potencier - */ -class InputArgument -{ - public const REQUIRED = 1; - public const OPTIONAL = 2; - public const IS_ARRAY = 4; - - private string $name; - private int $mode; - private string|int|bool|array|null|float $default; - private array|\Closure $suggestedValues; - private string $description; - - /** - * @param string $name The argument name - * @param int|null $mode The argument mode: a bit mask of self::REQUIRED, self::OPTIONAL and self::IS_ARRAY - * @param string $description A description text - * @param string|bool|int|float|array|null $default The default value (for self::OPTIONAL mode only) - * @param array|\Closure(CompletionInput,CompletionSuggestions):list $suggestedValues The values used for input completion - * - * @throws InvalidArgumentException When argument mode is not valid - */ - public function __construct(string $name, int $mode = null, string $description = '', string|bool|int|float|array $default = null, \Closure|array $suggestedValues = []) - { - if (null === $mode) { - $mode = self::OPTIONAL; - } elseif ($mode > 7 || $mode < 1) { - throw new InvalidArgumentException(sprintf('Argument mode "%s" is not valid.', $mode)); - } - - $this->name = $name; - $this->mode = $mode; - $this->description = $description; - $this->suggestedValues = $suggestedValues; - - $this->setDefault($default); - } - - /** - * Returns the argument name. - */ - public function getName(): string - { - return $this->name; - } - - /** - * Returns true if the argument is required. - * - * @return bool true if parameter mode is self::REQUIRED, false otherwise - */ - public function isRequired(): bool - { - return self::REQUIRED === (self::REQUIRED & $this->mode); - } - - /** - * Returns true if the argument can take multiple values. - * - * @return bool true if mode is self::IS_ARRAY, false otherwise - */ - public function isArray(): bool - { - return self::IS_ARRAY === (self::IS_ARRAY & $this->mode); - } - - /** - * Sets the default value. - * - * @return void - * - * @throws LogicException When incorrect default value is given - */ - public function setDefault(string|bool|int|float|array $default = null) - { - if (1 > \func_num_args()) { - trigger_deprecation('symfony/console', '6.2', 'Calling "%s()" without any arguments is deprecated, pass null explicitly instead.', __METHOD__); - } - if ($this->isRequired() && null !== $default) { - throw new LogicException('Cannot set a default value except for InputArgument::OPTIONAL mode.'); - } - - if ($this->isArray()) { - if (null === $default) { - $default = []; - } elseif (!\is_array($default)) { - throw new LogicException('A default value for an array argument must be an array.'); - } - } - - $this->default = $default; - } - - /** - * Returns the default value. - */ - public function getDefault(): string|bool|int|float|array|null - { - return $this->default; - } - - public function hasCompletion(): bool - { - return [] !== $this->suggestedValues; - } - - /** - * Adds suggestions to $suggestions for the current completion input. - * - * @see Command::complete() - */ - public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void - { - $values = $this->suggestedValues; - if ($values instanceof \Closure && !\is_array($values = $values($input))) { - throw new LogicException(sprintf('Closure for argument "%s" must return an array. Got "%s".', $this->name, get_debug_type($values))); - } - if ($values) { - $suggestions->suggestValues($values); - } - } - - /** - * Returns the description text. - */ - public function getDescription(): string - { - return $this->description; - } -} diff --git a/vendor/symfony/console/Input/InputAwareInterface.php b/vendor/symfony/console/Input/InputAwareInterface.php deleted file mode 100644 index 0ad27b45..00000000 --- a/vendor/symfony/console/Input/InputAwareInterface.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Input; - -/** - * InputAwareInterface should be implemented by classes that depends on the - * Console Input. - * - * @author Wouter J - */ -interface InputAwareInterface -{ - /** - * Sets the Console Input. - * - * @return void - */ - public function setInput(InputInterface $input); -} diff --git a/vendor/symfony/console/Input/InputDefinition.php b/vendor/symfony/console/Input/InputDefinition.php deleted file mode 100644 index b7162d77..00000000 --- a/vendor/symfony/console/Input/InputDefinition.php +++ /dev/null @@ -1,416 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Input; - -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Exception\LogicException; - -/** - * A InputDefinition represents a set of valid command line arguments and options. - * - * Usage: - * - * $definition = new InputDefinition([ - * new InputArgument('name', InputArgument::REQUIRED), - * new InputOption('foo', 'f', InputOption::VALUE_REQUIRED), - * ]); - * - * @author Fabien Potencier - */ -class InputDefinition -{ - private array $arguments = []; - private int $requiredCount = 0; - private ?InputArgument $lastArrayArgument = null; - private ?InputArgument $lastOptionalArgument = null; - private array $options = []; - private array $negations = []; - private array $shortcuts = []; - - /** - * @param array $definition An array of InputArgument and InputOption instance - */ - public function __construct(array $definition = []) - { - $this->setDefinition($definition); - } - - /** - * Sets the definition of the input. - * - * @return void - */ - public function setDefinition(array $definition) - { - $arguments = []; - $options = []; - foreach ($definition as $item) { - if ($item instanceof InputOption) { - $options[] = $item; - } else { - $arguments[] = $item; - } - } - - $this->setArguments($arguments); - $this->setOptions($options); - } - - /** - * Sets the InputArgument objects. - * - * @param InputArgument[] $arguments An array of InputArgument objects - * - * @return void - */ - public function setArguments(array $arguments = []) - { - $this->arguments = []; - $this->requiredCount = 0; - $this->lastOptionalArgument = null; - $this->lastArrayArgument = null; - $this->addArguments($arguments); - } - - /** - * Adds an array of InputArgument objects. - * - * @param InputArgument[] $arguments An array of InputArgument objects - * - * @return void - */ - public function addArguments(?array $arguments = []) - { - if (null !== $arguments) { - foreach ($arguments as $argument) { - $this->addArgument($argument); - } - } - } - - /** - * @return void - * - * @throws LogicException When incorrect argument is given - */ - public function addArgument(InputArgument $argument) - { - if (isset($this->arguments[$argument->getName()])) { - throw new LogicException(sprintf('An argument with name "%s" already exists.', $argument->getName())); - } - - if (null !== $this->lastArrayArgument) { - throw new LogicException(sprintf('Cannot add a required argument "%s" after an array argument "%s".', $argument->getName(), $this->lastArrayArgument->getName())); - } - - if ($argument->isRequired() && null !== $this->lastOptionalArgument) { - throw new LogicException(sprintf('Cannot add a required argument "%s" after an optional one "%s".', $argument->getName(), $this->lastOptionalArgument->getName())); - } - - if ($argument->isArray()) { - $this->lastArrayArgument = $argument; - } - - if ($argument->isRequired()) { - ++$this->requiredCount; - } else { - $this->lastOptionalArgument = $argument; - } - - $this->arguments[$argument->getName()] = $argument; - } - - /** - * Returns an InputArgument by name or by position. - * - * @throws InvalidArgumentException When argument given doesn't exist - */ - public function getArgument(string|int $name): InputArgument - { - if (!$this->hasArgument($name)) { - throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); - } - - $arguments = \is_int($name) ? array_values($this->arguments) : $this->arguments; - - return $arguments[$name]; - } - - /** - * Returns true if an InputArgument object exists by name or position. - */ - public function hasArgument(string|int $name): bool - { - $arguments = \is_int($name) ? array_values($this->arguments) : $this->arguments; - - return isset($arguments[$name]); - } - - /** - * Gets the array of InputArgument objects. - * - * @return InputArgument[] - */ - public function getArguments(): array - { - return $this->arguments; - } - - /** - * Returns the number of InputArguments. - */ - public function getArgumentCount(): int - { - return null !== $this->lastArrayArgument ? \PHP_INT_MAX : \count($this->arguments); - } - - /** - * Returns the number of required InputArguments. - */ - public function getArgumentRequiredCount(): int - { - return $this->requiredCount; - } - - /** - * @return array - */ - public function getArgumentDefaults(): array - { - $values = []; - foreach ($this->arguments as $argument) { - $values[$argument->getName()] = $argument->getDefault(); - } - - return $values; - } - - /** - * Sets the InputOption objects. - * - * @param InputOption[] $options An array of InputOption objects - * - * @return void - */ - public function setOptions(array $options = []) - { - $this->options = []; - $this->shortcuts = []; - $this->negations = []; - $this->addOptions($options); - } - - /** - * Adds an array of InputOption objects. - * - * @param InputOption[] $options An array of InputOption objects - * - * @return void - */ - public function addOptions(array $options = []) - { - foreach ($options as $option) { - $this->addOption($option); - } - } - - /** - * @return void - * - * @throws LogicException When option given already exist - */ - public function addOption(InputOption $option) - { - if (isset($this->options[$option->getName()]) && !$option->equals($this->options[$option->getName()])) { - throw new LogicException(sprintf('An option named "%s" already exists.', $option->getName())); - } - if (isset($this->negations[$option->getName()])) { - throw new LogicException(sprintf('An option named "%s" already exists.', $option->getName())); - } - - if ($option->getShortcut()) { - foreach (explode('|', $option->getShortcut()) as $shortcut) { - if (isset($this->shortcuts[$shortcut]) && !$option->equals($this->options[$this->shortcuts[$shortcut]])) { - throw new LogicException(sprintf('An option with shortcut "%s" already exists.', $shortcut)); - } - } - } - - $this->options[$option->getName()] = $option; - if ($option->getShortcut()) { - foreach (explode('|', $option->getShortcut()) as $shortcut) { - $this->shortcuts[$shortcut] = $option->getName(); - } - } - - if ($option->isNegatable()) { - $negatedName = 'no-'.$option->getName(); - if (isset($this->options[$negatedName])) { - throw new LogicException(sprintf('An option named "%s" already exists.', $negatedName)); - } - $this->negations[$negatedName] = $option->getName(); - } - } - - /** - * Returns an InputOption by name. - * - * @throws InvalidArgumentException When option given doesn't exist - */ - public function getOption(string $name): InputOption - { - if (!$this->hasOption($name)) { - throw new InvalidArgumentException(sprintf('The "--%s" option does not exist.', $name)); - } - - return $this->options[$name]; - } - - /** - * Returns true if an InputOption object exists by name. - * - * This method can't be used to check if the user included the option when - * executing the command (use getOption() instead). - */ - public function hasOption(string $name): bool - { - return isset($this->options[$name]); - } - - /** - * Gets the array of InputOption objects. - * - * @return InputOption[] - */ - public function getOptions(): array - { - return $this->options; - } - - /** - * Returns true if an InputOption object exists by shortcut. - */ - public function hasShortcut(string $name): bool - { - return isset($this->shortcuts[$name]); - } - - /** - * Returns true if an InputOption object exists by negated name. - */ - public function hasNegation(string $name): bool - { - return isset($this->negations[$name]); - } - - /** - * Gets an InputOption by shortcut. - */ - public function getOptionForShortcut(string $shortcut): InputOption - { - return $this->getOption($this->shortcutToName($shortcut)); - } - - /** - * @return array - */ - public function getOptionDefaults(): array - { - $values = []; - foreach ($this->options as $option) { - $values[$option->getName()] = $option->getDefault(); - } - - return $values; - } - - /** - * Returns the InputOption name given a shortcut. - * - * @throws InvalidArgumentException When option given does not exist - * - * @internal - */ - public function shortcutToName(string $shortcut): string - { - if (!isset($this->shortcuts[$shortcut])) { - throw new InvalidArgumentException(sprintf('The "-%s" option does not exist.', $shortcut)); - } - - return $this->shortcuts[$shortcut]; - } - - /** - * Returns the InputOption name given a negation. - * - * @throws InvalidArgumentException When option given does not exist - * - * @internal - */ - public function negationToName(string $negation): string - { - if (!isset($this->negations[$negation])) { - throw new InvalidArgumentException(sprintf('The "--%s" option does not exist.', $negation)); - } - - return $this->negations[$negation]; - } - - /** - * Gets the synopsis. - */ - public function getSynopsis(bool $short = false): string - { - $elements = []; - - if ($short && $this->getOptions()) { - $elements[] = '[options]'; - } elseif (!$short) { - foreach ($this->getOptions() as $option) { - $value = ''; - if ($option->acceptValue()) { - $value = sprintf( - ' %s%s%s', - $option->isValueOptional() ? '[' : '', - strtoupper($option->getName()), - $option->isValueOptional() ? ']' : '' - ); - } - - $shortcut = $option->getShortcut() ? sprintf('-%s|', $option->getShortcut()) : ''; - $negation = $option->isNegatable() ? sprintf('|--no-%s', $option->getName()) : ''; - $elements[] = sprintf('[%s--%s%s%s]', $shortcut, $option->getName(), $value, $negation); - } - } - - if (\count($elements) && $this->getArguments()) { - $elements[] = '[--]'; - } - - $tail = ''; - foreach ($this->getArguments() as $argument) { - $element = '<'.$argument->getName().'>'; - if ($argument->isArray()) { - $element .= '...'; - } - - if (!$argument->isRequired()) { - $element = '['.$element; - $tail .= ']'; - } - - $elements[] = $element; - } - - return implode(' ', $elements).$tail; - } -} diff --git a/vendor/symfony/console/Input/InputInterface.php b/vendor/symfony/console/Input/InputInterface.php deleted file mode 100644 index aaed5fd0..00000000 --- a/vendor/symfony/console/Input/InputInterface.php +++ /dev/null @@ -1,150 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Input; - -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Exception\RuntimeException; - -/** - * InputInterface is the interface implemented by all input classes. - * - * @author Fabien Potencier - * - * @method string __toString() Returns a stringified representation of the args passed to the command. - * InputArguments MUST be escaped as well as the InputOption values passed to the command. - */ -interface InputInterface -{ - /** - * Returns the first argument from the raw parameters (not parsed). - */ - public function getFirstArgument(): ?string; - - /** - * Returns true if the raw parameters (not parsed) contain a value. - * - * This method is to be used to introspect the input parameters - * before they have been validated. It must be used carefully. - * Does not necessarily return the correct result for short options - * when multiple flags are combined in the same option. - * - * @param string|array $values The values to look for in the raw parameters (can be an array) - * @param bool $onlyParams Only check real parameters, skip those following an end of options (--) signal - */ - public function hasParameterOption(string|array $values, bool $onlyParams = false): bool; - - /** - * Returns the value of a raw option (not parsed). - * - * This method is to be used to introspect the input parameters - * before they have been validated. It must be used carefully. - * Does not necessarily return the correct result for short options - * when multiple flags are combined in the same option. - * - * @param string|array $values The value(s) to look for in the raw parameters (can be an array) - * @param string|bool|int|float|array|null $default The default value to return if no result is found - * @param bool $onlyParams Only check real parameters, skip those following an end of options (--) signal - * - * @return mixed - */ - public function getParameterOption(string|array $values, string|bool|int|float|array|null $default = false, bool $onlyParams = false); - - /** - * Binds the current Input instance with the given arguments and options. - * - * @return void - * - * @throws RuntimeException - */ - public function bind(InputDefinition $definition); - - /** - * Validates the input. - * - * @return void - * - * @throws RuntimeException When not enough arguments are given - */ - public function validate(); - - /** - * Returns all the given arguments merged with the default values. - * - * @return array - */ - public function getArguments(): array; - - /** - * Returns the argument value for a given argument name. - * - * @return mixed - * - * @throws InvalidArgumentException When argument given doesn't exist - */ - public function getArgument(string $name); - - /** - * Sets an argument value by name. - * - * @return void - * - * @throws InvalidArgumentException When argument given doesn't exist - */ - public function setArgument(string $name, mixed $value); - - /** - * Returns true if an InputArgument object exists by name or position. - */ - public function hasArgument(string $name): bool; - - /** - * Returns all the given options merged with the default values. - * - * @return array - */ - public function getOptions(): array; - - /** - * Returns the option value for a given option name. - * - * @return mixed - * - * @throws InvalidArgumentException When option given doesn't exist - */ - public function getOption(string $name); - - /** - * Sets an option value by name. - * - * @return void - * - * @throws InvalidArgumentException When option given doesn't exist - */ - public function setOption(string $name, mixed $value); - - /** - * Returns true if an InputOption object exists by name. - */ - public function hasOption(string $name): bool; - - /** - * Is this input means interactive? - */ - public function isInteractive(): bool; - - /** - * Sets the input interactivity. - * - * @return void - */ - public function setInteractive(bool $interactive); -} diff --git a/vendor/symfony/console/Input/InputOption.php b/vendor/symfony/console/Input/InputOption.php deleted file mode 100644 index fdf88dcc..00000000 --- a/vendor/symfony/console/Input/InputOption.php +++ /dev/null @@ -1,255 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Input; - -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Completion\CompletionInput; -use Symfony\Component\Console\Completion\CompletionSuggestions; -use Symfony\Component\Console\Completion\Suggestion; -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Exception\LogicException; - -/** - * Represents a command line option. - * - * @author Fabien Potencier - */ -class InputOption -{ - /** - * Do not accept input for the option (e.g. --yell). This is the default behavior of options. - */ - public const VALUE_NONE = 1; - - /** - * A value must be passed when the option is used (e.g. --iterations=5 or -i5). - */ - public const VALUE_REQUIRED = 2; - - /** - * The option may or may not have a value (e.g. --yell or --yell=loud). - */ - public const VALUE_OPTIONAL = 4; - - /** - * The option accepts multiple values (e.g. --dir=/foo --dir=/bar). - */ - public const VALUE_IS_ARRAY = 8; - - /** - * The option may have either positive or negative value (e.g. --ansi or --no-ansi). - */ - public const VALUE_NEGATABLE = 16; - - private string $name; - private string|array|null $shortcut; - private int $mode; - private string|int|bool|array|null|float $default; - private array|\Closure $suggestedValues; - private string $description; - - /** - * @param string|array|null $shortcut The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts - * @param int|null $mode The option mode: One of the VALUE_* constants - * @param string|bool|int|float|array|null $default The default value (must be null for self::VALUE_NONE) - * @param array|\Closure(CompletionInput,CompletionSuggestions):list $suggestedValues The values used for input completion - * - * @throws InvalidArgumentException If option mode is invalid or incompatible - */ - public function __construct(string $name, string|array $shortcut = null, int $mode = null, string $description = '', string|bool|int|float|array $default = null, array|\Closure $suggestedValues = []) - { - if (str_starts_with($name, '--')) { - $name = substr($name, 2); - } - - if (empty($name)) { - throw new InvalidArgumentException('An option name cannot be empty.'); - } - - if (empty($shortcut)) { - $shortcut = null; - } - - if (null !== $shortcut) { - if (\is_array($shortcut)) { - $shortcut = implode('|', $shortcut); - } - $shortcuts = preg_split('{(\|)-?}', ltrim($shortcut, '-')); - $shortcuts = array_filter($shortcuts); - $shortcut = implode('|', $shortcuts); - - if (empty($shortcut)) { - throw new InvalidArgumentException('An option shortcut cannot be empty.'); - } - } - - if (null === $mode) { - $mode = self::VALUE_NONE; - } elseif ($mode >= (self::VALUE_NEGATABLE << 1) || $mode < 1) { - throw new InvalidArgumentException(sprintf('Option mode "%s" is not valid.', $mode)); - } - - $this->name = $name; - $this->shortcut = $shortcut; - $this->mode = $mode; - $this->description = $description; - $this->suggestedValues = $suggestedValues; - - if ($suggestedValues && !$this->acceptValue()) { - throw new LogicException('Cannot set suggested values if the option does not accept a value.'); - } - if ($this->isArray() && !$this->acceptValue()) { - throw new InvalidArgumentException('Impossible to have an option mode VALUE_IS_ARRAY if the option does not accept a value.'); - } - if ($this->isNegatable() && $this->acceptValue()) { - throw new InvalidArgumentException('Impossible to have an option mode VALUE_NEGATABLE if the option also accepts a value.'); - } - - $this->setDefault($default); - } - - /** - * Returns the option shortcut. - */ - public function getShortcut(): ?string - { - return $this->shortcut; - } - - /** - * Returns the option name. - */ - public function getName(): string - { - return $this->name; - } - - /** - * Returns true if the option accepts a value. - * - * @return bool true if value mode is not self::VALUE_NONE, false otherwise - */ - public function acceptValue(): bool - { - return $this->isValueRequired() || $this->isValueOptional(); - } - - /** - * Returns true if the option requires a value. - * - * @return bool true if value mode is self::VALUE_REQUIRED, false otherwise - */ - public function isValueRequired(): bool - { - return self::VALUE_REQUIRED === (self::VALUE_REQUIRED & $this->mode); - } - - /** - * Returns true if the option takes an optional value. - * - * @return bool true if value mode is self::VALUE_OPTIONAL, false otherwise - */ - public function isValueOptional(): bool - { - return self::VALUE_OPTIONAL === (self::VALUE_OPTIONAL & $this->mode); - } - - /** - * Returns true if the option can take multiple values. - * - * @return bool true if mode is self::VALUE_IS_ARRAY, false otherwise - */ - public function isArray(): bool - { - return self::VALUE_IS_ARRAY === (self::VALUE_IS_ARRAY & $this->mode); - } - - public function isNegatable(): bool - { - return self::VALUE_NEGATABLE === (self::VALUE_NEGATABLE & $this->mode); - } - - /** - * @return void - */ - public function setDefault(string|bool|int|float|array $default = null) - { - if (1 > \func_num_args()) { - trigger_deprecation('symfony/console', '6.2', 'Calling "%s()" without any arguments is deprecated, pass null explicitly instead.', __METHOD__); - } - if (self::VALUE_NONE === (self::VALUE_NONE & $this->mode) && null !== $default) { - throw new LogicException('Cannot set a default value when using InputOption::VALUE_NONE mode.'); - } - - if ($this->isArray()) { - if (null === $default) { - $default = []; - } elseif (!\is_array($default)) { - throw new LogicException('A default value for an array option must be an array.'); - } - } - - $this->default = $this->acceptValue() || $this->isNegatable() ? $default : false; - } - - /** - * Returns the default value. - */ - public function getDefault(): string|bool|int|float|array|null - { - return $this->default; - } - - /** - * Returns the description text. - */ - public function getDescription(): string - { - return $this->description; - } - - public function hasCompletion(): bool - { - return [] !== $this->suggestedValues; - } - - /** - * Adds suggestions to $suggestions for the current completion input. - * - * @see Command::complete() - */ - public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void - { - $values = $this->suggestedValues; - if ($values instanceof \Closure && !\is_array($values = $values($input))) { - throw new LogicException(sprintf('Closure for option "%s" must return an array. Got "%s".', $this->name, get_debug_type($values))); - } - if ($values) { - $suggestions->suggestValues($values); - } - } - - /** - * Checks whether the given option equals this one. - */ - public function equals(self $option): bool - { - return $option->getName() === $this->getName() - && $option->getShortcut() === $this->getShortcut() - && $option->getDefault() === $this->getDefault() - && $option->isNegatable() === $this->isNegatable() - && $option->isArray() === $this->isArray() - && $option->isValueRequired() === $this->isValueRequired() - && $option->isValueOptional() === $this->isValueOptional() - ; - } -} diff --git a/vendor/symfony/console/Input/StreamableInputInterface.php b/vendor/symfony/console/Input/StreamableInputInterface.php deleted file mode 100644 index 4b95fcb1..00000000 --- a/vendor/symfony/console/Input/StreamableInputInterface.php +++ /dev/null @@ -1,39 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Input; - -/** - * StreamableInputInterface is the interface implemented by all input classes - * that have an input stream. - * - * @author Robin Chalas - */ -interface StreamableInputInterface extends InputInterface -{ - /** - * Sets the input stream to read from when interacting with the user. - * - * This is mainly useful for testing purpose. - * - * @param resource $stream The input stream - * - * @return void - */ - public function setStream($stream); - - /** - * Returns the input stream. - * - * @return resource|null - */ - public function getStream(); -} diff --git a/vendor/symfony/console/Input/StringInput.php b/vendor/symfony/console/Input/StringInput.php deleted file mode 100644 index 82bd2144..00000000 --- a/vendor/symfony/console/Input/StringInput.php +++ /dev/null @@ -1,87 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Input; - -use Symfony\Component\Console\Exception\InvalidArgumentException; - -/** - * StringInput represents an input provided as a string. - * - * Usage: - * - * $input = new StringInput('foo --bar="foobar"'); - * - * @author Fabien Potencier - */ -class StringInput extends ArgvInput -{ - /** - * @deprecated since Symfony 6.1 - */ - public const REGEX_STRING = '([^\s]+?)(?:\s|(?setTokens($this->tokenize($input)); - } - - /** - * Tokenizes a string. - * - * @throws InvalidArgumentException When unable to parse input (should never happen) - */ - private function tokenize(string $input): array - { - $tokens = []; - $length = \strlen($input); - $cursor = 0; - $token = null; - while ($cursor < $length) { - if ('\\' === $input[$cursor]) { - $token .= $input[++$cursor] ?? ''; - ++$cursor; - continue; - } - - if (preg_match('/\s+/A', $input, $match, 0, $cursor)) { - if (null !== $token) { - $tokens[] = $token; - $token = null; - } - } elseif (preg_match('/([^="\'\s]+?)(=?)('.self::REGEX_QUOTED_STRING.'+)/A', $input, $match, 0, $cursor)) { - $token .= $match[1].$match[2].stripcslashes(str_replace(['"\'', '\'"', '\'\'', '""'], '', substr($match[3], 1, -1))); - } elseif (preg_match('/'.self::REGEX_QUOTED_STRING.'/A', $input, $match, 0, $cursor)) { - $token .= stripcslashes(substr($match[0], 1, -1)); - } elseif (preg_match('/'.self::REGEX_UNQUOTED_STRING.'/A', $input, $match, 0, $cursor)) { - $token .= $match[1]; - } else { - // should never happen - throw new InvalidArgumentException(sprintf('Unable to parse input near "... %s ...".', substr($input, $cursor, 10))); - } - - $cursor += \strlen($match[0]); - } - - if (null !== $token) { - $tokens[] = $token; - } - - return $tokens; - } -} diff --git a/vendor/symfony/console/LICENSE b/vendor/symfony/console/LICENSE deleted file mode 100644 index 0138f8f0..00000000 --- a/vendor/symfony/console/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2004-present Fabien Potencier - -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/vendor/symfony/console/Logger/ConsoleLogger.php b/vendor/symfony/console/Logger/ConsoleLogger.php deleted file mode 100644 index fddef50c..00000000 --- a/vendor/symfony/console/Logger/ConsoleLogger.php +++ /dev/null @@ -1,119 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Logger; - -use Psr\Log\AbstractLogger; -use Psr\Log\InvalidArgumentException; -use Psr\Log\LogLevel; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * PSR-3 compliant console logger. - * - * @author Kévin Dunglas - * - * @see https://www.php-fig.org/psr/psr-3/ - */ -class ConsoleLogger extends AbstractLogger -{ - public const INFO = 'info'; - public const ERROR = 'error'; - - private OutputInterface $output; - private array $verbosityLevelMap = [ - LogLevel::EMERGENCY => OutputInterface::VERBOSITY_NORMAL, - LogLevel::ALERT => OutputInterface::VERBOSITY_NORMAL, - LogLevel::CRITICAL => OutputInterface::VERBOSITY_NORMAL, - LogLevel::ERROR => OutputInterface::VERBOSITY_NORMAL, - LogLevel::WARNING => OutputInterface::VERBOSITY_NORMAL, - LogLevel::NOTICE => OutputInterface::VERBOSITY_VERBOSE, - LogLevel::INFO => OutputInterface::VERBOSITY_VERY_VERBOSE, - LogLevel::DEBUG => OutputInterface::VERBOSITY_DEBUG, - ]; - private array $formatLevelMap = [ - LogLevel::EMERGENCY => self::ERROR, - LogLevel::ALERT => self::ERROR, - LogLevel::CRITICAL => self::ERROR, - LogLevel::ERROR => self::ERROR, - LogLevel::WARNING => self::INFO, - LogLevel::NOTICE => self::INFO, - LogLevel::INFO => self::INFO, - LogLevel::DEBUG => self::INFO, - ]; - private bool $errored = false; - - public function __construct(OutputInterface $output, array $verbosityLevelMap = [], array $formatLevelMap = []) - { - $this->output = $output; - $this->verbosityLevelMap = $verbosityLevelMap + $this->verbosityLevelMap; - $this->formatLevelMap = $formatLevelMap + $this->formatLevelMap; - } - - public function log($level, $message, array $context = []): void - { - if (!isset($this->verbosityLevelMap[$level])) { - throw new InvalidArgumentException(sprintf('The log level "%s" does not exist.', $level)); - } - - $output = $this->output; - - // Write to the error output if necessary and available - if (self::ERROR === $this->formatLevelMap[$level]) { - if ($this->output instanceof ConsoleOutputInterface) { - $output = $output->getErrorOutput(); - } - $this->errored = true; - } - - // the if condition check isn't necessary -- it's the same one that $output will do internally anyway. - // We only do it for efficiency here as the message formatting is relatively expensive. - if ($output->getVerbosity() >= $this->verbosityLevelMap[$level]) { - $output->writeln(sprintf('<%1$s>[%2$s] %3$s', $this->formatLevelMap[$level], $level, $this->interpolate($message, $context)), $this->verbosityLevelMap[$level]); - } - } - - /** - * Returns true when any messages have been logged at error levels. - */ - public function hasErrored(): bool - { - return $this->errored; - } - - /** - * Interpolates context values into the message placeholders. - * - * @author PHP Framework Interoperability Group - */ - private function interpolate(string $message, array $context): string - { - if (!str_contains($message, '{')) { - return $message; - } - - $replacements = []; - foreach ($context as $key => $val) { - if (null === $val || \is_scalar($val) || $val instanceof \Stringable) { - $replacements["{{$key}}"] = $val; - } elseif ($val instanceof \DateTimeInterface) { - $replacements["{{$key}}"] = $val->format(\DateTimeInterface::RFC3339); - } elseif (\is_object($val)) { - $replacements["{{$key}}"] = '[object '.$val::class.']'; - } else { - $replacements["{{$key}}"] = '['.\gettype($val).']'; - } - } - - return strtr($message, $replacements); - } -} diff --git a/vendor/symfony/console/Messenger/RunCommandContext.php b/vendor/symfony/console/Messenger/RunCommandContext.php deleted file mode 100644 index 2ee5415c..00000000 --- a/vendor/symfony/console/Messenger/RunCommandContext.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Messenger; - -/** - * @author Kevin Bond - */ -final class RunCommandContext -{ - public function __construct( - public readonly RunCommandMessage $message, - public readonly int $exitCode, - public readonly string $output, - ) { - } -} diff --git a/vendor/symfony/console/Messenger/RunCommandMessage.php b/vendor/symfony/console/Messenger/RunCommandMessage.php deleted file mode 100644 index b530c438..00000000 --- a/vendor/symfony/console/Messenger/RunCommandMessage.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Messenger; - -use Symfony\Component\Console\Exception\RunCommandFailedException; - -/** - * @author Kevin Bond - */ -class RunCommandMessage implements \Stringable -{ - /** - * @param bool $throwOnFailure If the command has a non-zero exit code, throw {@see RunCommandFailedException} - * @param bool $catchExceptions @see Application::setCatchExceptions() - */ - public function __construct( - public readonly string $input, - public readonly bool $throwOnFailure = true, - public readonly bool $catchExceptions = false, - ) { - } - - public function __toString(): string - { - return $this->input; - } -} diff --git a/vendor/symfony/console/Messenger/RunCommandMessageHandler.php b/vendor/symfony/console/Messenger/RunCommandMessageHandler.php deleted file mode 100644 index 14f9c176..00000000 --- a/vendor/symfony/console/Messenger/RunCommandMessageHandler.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Messenger; - -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Exception\RunCommandFailedException; -use Symfony\Component\Console\Input\StringInput; -use Symfony\Component\Console\Output\BufferedOutput; - -/** - * @author Kevin Bond - */ -final class RunCommandMessageHandler -{ - public function __construct(private readonly Application $application) - { - } - - public function __invoke(RunCommandMessage $message): RunCommandContext - { - $input = new StringInput($message->input); - $output = new BufferedOutput(); - - $this->application->setCatchExceptions($message->catchExceptions); - - try { - $exitCode = $this->application->run($input, $output); - } catch (\Throwable $e) { - throw new RunCommandFailedException($e, new RunCommandContext($message, Command::FAILURE, $output->fetch())); - } - - if ($message->throwOnFailure && Command::SUCCESS !== $exitCode) { - throw new RunCommandFailedException(sprintf('Command "%s" exited with code "%s".', $message->input, $exitCode), new RunCommandContext($message, $exitCode, $output->fetch())); - } - - return new RunCommandContext($message, $exitCode, $output->fetch()); - } -} diff --git a/vendor/symfony/console/Output/AnsiColorMode.php b/vendor/symfony/console/Output/AnsiColorMode.php deleted file mode 100644 index 5f9f744f..00000000 --- a/vendor/symfony/console/Output/AnsiColorMode.php +++ /dev/null @@ -1,106 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Output; - -use Symfony\Component\Console\Exception\InvalidArgumentException; - -/** - * @author Fabien Potencier - * @author Julien Boudry - */ -enum AnsiColorMode -{ - /* - * Classical 4-bit Ansi colors, including 8 classical colors and 8 bright color. Output syntax is "ESC[${foreGroundColorcode};${backGroundColorcode}m" - * Must be compatible with all terminals and it's the minimal version supported. - */ - case Ansi4; - - /* - * 8-bit Ansi colors (240 different colors + 16 duplicate color codes, ensuring backward compatibility). - * Output syntax is: "ESC[38;5;${foreGroundColorcode};48;5;${backGroundColorcode}m" - * Should be compatible with most terminals. - */ - case Ansi8; - - /* - * 24-bit Ansi colors (RGB). - * Output syntax is: "ESC[38;2;${foreGroundColorcodeRed};${foreGroundColorcodeGreen};${foreGroundColorcodeBlue};48;2;${backGroundColorcodeRed};${backGroundColorcodeGreen};${backGroundColorcodeBlue}m" - * May be compatible with many modern terminals. - */ - case Ansi24; - - /** - * Converts an RGB hexadecimal color to the corresponding Ansi code. - */ - public function convertFromHexToAnsiColorCode(string $hexColor): string - { - $hexColor = str_replace('#', '', $hexColor); - - if (3 === \strlen($hexColor)) { - $hexColor = $hexColor[0].$hexColor[0].$hexColor[1].$hexColor[1].$hexColor[2].$hexColor[2]; - } - - if (6 !== \strlen($hexColor)) { - throw new InvalidArgumentException(sprintf('Invalid "#%s" color.', $hexColor)); - } - - $color = hexdec($hexColor); - - $r = ($color >> 16) & 255; - $g = ($color >> 8) & 255; - $b = $color & 255; - - return match ($this) { - self::Ansi4 => (string) $this->convertFromRGB($r, $g, $b), - self::Ansi8 => '8;5;'.((string) $this->convertFromRGB($r, $g, $b)), - self::Ansi24 => sprintf('8;2;%d;%d;%d', $r, $g, $b) - }; - } - - private function convertFromRGB(int $r, int $g, int $b): int - { - return match ($this) { - self::Ansi4 => $this->degradeHexColorToAnsi4($r, $g, $b), - self::Ansi8 => $this->degradeHexColorToAnsi8($r, $g, $b), - default => throw new InvalidArgumentException("RGB cannot be converted to {$this->name}.") - }; - } - - private function degradeHexColorToAnsi4(int $r, int $g, int $b): int - { - return round($b / 255) << 2 | (round($g / 255) << 1) | round($r / 255); - } - - /** - * Inspired from https://github.com/ajalt/colormath/blob/e464e0da1b014976736cf97250063248fc77b8e7/colormath/src/commonMain/kotlin/com/github/ajalt/colormath/model/Ansi256.kt code (MIT license). - */ - private function degradeHexColorToAnsi8(int $r, int $g, int $b): int - { - if ($r === $g && $g === $b) { - if ($r < 8) { - return 16; - } - - if ($r > 248) { - return 231; - } - - return (int) round(($r - 8) / 247 * 24) + 232; - } else { - return 16 + - (36 * (int) round($r / 255 * 5)) + - (6 * (int) round($g / 255 * 5)) + - (int) round($b / 255 * 5); - } - } -} diff --git a/vendor/symfony/console/Output/BufferedOutput.php b/vendor/symfony/console/Output/BufferedOutput.php deleted file mode 100644 index ef5099bf..00000000 --- a/vendor/symfony/console/Output/BufferedOutput.php +++ /dev/null @@ -1,43 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Output; - -/** - * @author Jean-François Simon - */ -class BufferedOutput extends Output -{ - private string $buffer = ''; - - /** - * Empties buffer and returns its content. - */ - public function fetch(): string - { - $content = $this->buffer; - $this->buffer = ''; - - return $content; - } - - /** - * @return void - */ - protected function doWrite(string $message, bool $newline) - { - $this->buffer .= $message; - - if ($newline) { - $this->buffer .= \PHP_EOL; - } - } -} diff --git a/vendor/symfony/console/Output/ConsoleOutput.php b/vendor/symfony/console/Output/ConsoleOutput.php deleted file mode 100644 index c1eb7cd1..00000000 --- a/vendor/symfony/console/Output/ConsoleOutput.php +++ /dev/null @@ -1,165 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Output; - -use Symfony\Component\Console\Formatter\OutputFormatterInterface; - -/** - * ConsoleOutput is the default class for all CLI output. It uses STDOUT and STDERR. - * - * This class is a convenient wrapper around `StreamOutput` for both STDOUT and STDERR. - * - * $output = new ConsoleOutput(); - * - * This is equivalent to: - * - * $output = new StreamOutput(fopen('php://stdout', 'w')); - * $stdErr = new StreamOutput(fopen('php://stderr', 'w')); - * - * @author Fabien Potencier - */ -class ConsoleOutput extends StreamOutput implements ConsoleOutputInterface -{ - private OutputInterface $stderr; - private array $consoleSectionOutputs = []; - - /** - * @param int $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface) - * @param bool|null $decorated Whether to decorate messages (null for auto-guessing) - * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter) - */ - public function __construct(int $verbosity = self::VERBOSITY_NORMAL, bool $decorated = null, OutputFormatterInterface $formatter = null) - { - parent::__construct($this->openOutputStream(), $verbosity, $decorated, $formatter); - - if (null === $formatter) { - // for BC reasons, stdErr has it own Formatter only when user don't inject a specific formatter. - $this->stderr = new StreamOutput($this->openErrorStream(), $verbosity, $decorated); - - return; - } - - $actualDecorated = $this->isDecorated(); - $this->stderr = new StreamOutput($this->openErrorStream(), $verbosity, $decorated, $this->getFormatter()); - - if (null === $decorated) { - $this->setDecorated($actualDecorated && $this->stderr->isDecorated()); - } - } - - /** - * Creates a new output section. - */ - public function section(): ConsoleSectionOutput - { - return new ConsoleSectionOutput($this->getStream(), $this->consoleSectionOutputs, $this->getVerbosity(), $this->isDecorated(), $this->getFormatter()); - } - - /** - * @return void - */ - public function setDecorated(bool $decorated) - { - parent::setDecorated($decorated); - $this->stderr->setDecorated($decorated); - } - - /** - * @return void - */ - public function setFormatter(OutputFormatterInterface $formatter) - { - parent::setFormatter($formatter); - $this->stderr->setFormatter($formatter); - } - - /** - * @return void - */ - public function setVerbosity(int $level) - { - parent::setVerbosity($level); - $this->stderr->setVerbosity($level); - } - - public function getErrorOutput(): OutputInterface - { - return $this->stderr; - } - - /** - * @return void - */ - public function setErrorOutput(OutputInterface $error) - { - $this->stderr = $error; - } - - /** - * Returns true if current environment supports writing console output to - * STDOUT. - */ - protected function hasStdoutSupport(): bool - { - return false === $this->isRunningOS400(); - } - - /** - * Returns true if current environment supports writing console output to - * STDERR. - */ - protected function hasStderrSupport(): bool - { - return false === $this->isRunningOS400(); - } - - /** - * Checks if current executing environment is IBM iSeries (OS400), which - * doesn't properly convert character-encodings between ASCII to EBCDIC. - */ - private function isRunningOS400(): bool - { - $checks = [ - \function_exists('php_uname') ? php_uname('s') : '', - getenv('OSTYPE'), - \PHP_OS, - ]; - - return false !== stripos(implode(';', $checks), 'OS400'); - } - - /** - * @return resource - */ - private function openOutputStream() - { - if (!$this->hasStdoutSupport()) { - return fopen('php://output', 'w'); - } - - // Use STDOUT when possible to prevent from opening too many file descriptors - return \defined('STDOUT') ? \STDOUT : (@fopen('php://stdout', 'w') ?: fopen('php://output', 'w')); - } - - /** - * @return resource - */ - private function openErrorStream() - { - if (!$this->hasStderrSupport()) { - return fopen('php://output', 'w'); - } - - // Use STDERR when possible to prevent from opening too many file descriptors - return \defined('STDERR') ? \STDERR : (@fopen('php://stderr', 'w') ?: fopen('php://output', 'w')); - } -} diff --git a/vendor/symfony/console/Output/ConsoleOutputInterface.php b/vendor/symfony/console/Output/ConsoleOutputInterface.php deleted file mode 100644 index 9c0049c8..00000000 --- a/vendor/symfony/console/Output/ConsoleOutputInterface.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Output; - -/** - * ConsoleOutputInterface is the interface implemented by ConsoleOutput class. - * This adds information about stderr and section output stream. - * - * @author Dariusz Górecki - */ -interface ConsoleOutputInterface extends OutputInterface -{ - /** - * Gets the OutputInterface for errors. - */ - public function getErrorOutput(): OutputInterface; - - /** - * @return void - */ - public function setErrorOutput(OutputInterface $error); - - public function section(): ConsoleSectionOutput; -} diff --git a/vendor/symfony/console/Output/ConsoleSectionOutput.php b/vendor/symfony/console/Output/ConsoleSectionOutput.php deleted file mode 100644 index 21c4a44a..00000000 --- a/vendor/symfony/console/Output/ConsoleSectionOutput.php +++ /dev/null @@ -1,244 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Output; - -use Symfony\Component\Console\Formatter\OutputFormatterInterface; -use Symfony\Component\Console\Helper\Helper; -use Symfony\Component\Console\Terminal; - -/** - * @author Pierre du Plessis - * @author Gabriel Ostrolucký - */ -class ConsoleSectionOutput extends StreamOutput -{ - private array $content = []; - private int $lines = 0; - private array $sections; - private Terminal $terminal; - private int $maxHeight = 0; - - /** - * @param resource $stream - * @param ConsoleSectionOutput[] $sections - */ - public function __construct($stream, array &$sections, int $verbosity, bool $decorated, OutputFormatterInterface $formatter) - { - parent::__construct($stream, $verbosity, $decorated, $formatter); - array_unshift($sections, $this); - $this->sections = &$sections; - $this->terminal = new Terminal(); - } - - /** - * Defines a maximum number of lines for this section. - * - * When more lines are added, the section will automatically scroll to the - * end (i.e. remove the first lines to comply with the max height). - */ - public function setMaxHeight(int $maxHeight): void - { - // when changing max height, clear output of current section and redraw again with the new height - $previousMaxHeight = $this->maxHeight; - $this->maxHeight = $maxHeight; - $existingContent = $this->popStreamContentUntilCurrentSection($previousMaxHeight ? min($previousMaxHeight, $this->lines) : $this->lines); - - parent::doWrite($this->getVisibleContent(), false); - parent::doWrite($existingContent, false); - } - - /** - * Clears previous output for this section. - * - * @param int $lines Number of lines to clear. If null, then the entire output of this section is cleared - * - * @return void - */ - public function clear(int $lines = null) - { - if (empty($this->content) || !$this->isDecorated()) { - return; - } - - if ($lines) { - array_splice($this->content, -$lines); - } else { - $lines = $this->lines; - $this->content = []; - } - - $this->lines -= $lines; - - parent::doWrite($this->popStreamContentUntilCurrentSection($this->maxHeight ? min($this->maxHeight, $lines) : $lines), false); - } - - /** - * Overwrites the previous output with a new message. - * - * @return void - */ - public function overwrite(string|iterable $message) - { - $this->clear(); - $this->writeln($message); - } - - public function getContent(): string - { - return implode('', $this->content); - } - - public function getVisibleContent(): string - { - if (0 === $this->maxHeight) { - return $this->getContent(); - } - - return implode('', \array_slice($this->content, -$this->maxHeight)); - } - - /** - * @internal - */ - public function addContent(string $input, bool $newline = true): int - { - $width = $this->terminal->getWidth(); - $lines = explode(\PHP_EOL, $input); - $linesAdded = 0; - $count = \count($lines) - 1; - foreach ($lines as $i => $lineContent) { - // re-add the line break (that has been removed in the above `explode()` for - // - every line that is not the last line - // - if $newline is required, also add it to the last line - if ($i < $count || $newline) { - $lineContent .= \PHP_EOL; - } - - // skip line if there is no text (or newline for that matter) - if ('' === $lineContent) { - continue; - } - - // For the first line, check if the previous line (last entry of `$this->content`) - // needs to be continued (i.e. does not end with a line break). - if (0 === $i - && (false !== $lastLine = end($this->content)) - && !str_ends_with($lastLine, \PHP_EOL) - ) { - // deduct the line count of the previous line - $this->lines -= (int) ceil($this->getDisplayLength($lastLine) / $width) ?: 1; - // concatenate previous and new line - $lineContent = $lastLine.$lineContent; - // replace last entry of `$this->content` with the new expanded line - array_splice($this->content, -1, 1, $lineContent); - } else { - // otherwise just add the new content - $this->content[] = $lineContent; - } - - $linesAdded += (int) ceil($this->getDisplayLength($lineContent) / $width) ?: 1; - } - - $this->lines += $linesAdded; - - return $linesAdded; - } - - /** - * @internal - */ - public function addNewLineOfInputSubmit(): void - { - $this->content[] = \PHP_EOL; - ++$this->lines; - } - - /** - * @return void - */ - protected function doWrite(string $message, bool $newline) - { - // Simulate newline behavior for consistent output formatting, avoiding extra logic - if (!$newline && str_ends_with($message, \PHP_EOL)) { - $message = substr($message, 0, -\strlen(\PHP_EOL)); - $newline = true; - } - - if (!$this->isDecorated()) { - parent::doWrite($message, $newline); - - return; - } - - // Check if the previous line (last entry of `$this->content`) needs to be continued - // (i.e. does not end with a line break). In which case, it needs to be erased first. - $linesToClear = $deleteLastLine = ($lastLine = end($this->content) ?: '') && !str_ends_with($lastLine, \PHP_EOL) ? 1 : 0; - - $linesAdded = $this->addContent($message, $newline); - - if ($lineOverflow = $this->maxHeight > 0 && $this->lines > $this->maxHeight) { - // on overflow, clear the whole section and redraw again (to remove the first lines) - $linesToClear = $this->maxHeight; - } - - $erasedContent = $this->popStreamContentUntilCurrentSection($linesToClear); - - if ($lineOverflow) { - // redraw existing lines of the section - $previousLinesOfSection = \array_slice($this->content, $this->lines - $this->maxHeight, $this->maxHeight - $linesAdded); - parent::doWrite(implode('', $previousLinesOfSection), false); - } - - // if the last line was removed, re-print its content together with the new content. - // otherwise, just print the new content. - parent::doWrite($deleteLastLine ? $lastLine.$message : $message, true); - parent::doWrite($erasedContent, false); - } - - /** - * At initial stage, cursor is at the end of stream output. This method makes cursor crawl upwards until it hits - * current section. Then it erases content it crawled through. Optionally, it erases part of current section too. - */ - private function popStreamContentUntilCurrentSection(int $numberOfLinesToClearFromCurrentSection = 0): string - { - $numberOfLinesToClear = $numberOfLinesToClearFromCurrentSection; - $erasedContent = []; - - foreach ($this->sections as $section) { - if ($section === $this) { - break; - } - - $numberOfLinesToClear += $section->maxHeight ? min($section->lines, $section->maxHeight) : $section->lines; - if ('' !== $sectionContent = $section->getVisibleContent()) { - if (!str_ends_with($sectionContent, \PHP_EOL)) { - $sectionContent .= \PHP_EOL; - } - $erasedContent[] = $sectionContent; - } - } - - if ($numberOfLinesToClear > 0) { - // move cursor up n lines - parent::doWrite(sprintf("\x1b[%dA", $numberOfLinesToClear), false); - // erase to end of screen - parent::doWrite("\x1b[0J", false); - } - - return implode('', array_reverse($erasedContent)); - } - - private function getDisplayLength(string $text): int - { - return Helper::width(Helper::removeDecoration($this->getFormatter(), str_replace("\t", ' ', $text))); - } -} diff --git a/vendor/symfony/console/Output/NullOutput.php b/vendor/symfony/console/Output/NullOutput.php deleted file mode 100644 index f3aa15b1..00000000 --- a/vendor/symfony/console/Output/NullOutput.php +++ /dev/null @@ -1,104 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Output; - -use Symfony\Component\Console\Formatter\NullOutputFormatter; -use Symfony\Component\Console\Formatter\OutputFormatterInterface; - -/** - * NullOutput suppresses all output. - * - * $output = new NullOutput(); - * - * @author Fabien Potencier - * @author Tobias Schultze - */ -class NullOutput implements OutputInterface -{ - private NullOutputFormatter $formatter; - - /** - * @return void - */ - public function setFormatter(OutputFormatterInterface $formatter) - { - // do nothing - } - - public function getFormatter(): OutputFormatterInterface - { - // to comply with the interface we must return a OutputFormatterInterface - return $this->formatter ??= new NullOutputFormatter(); - } - - /** - * @return void - */ - public function setDecorated(bool $decorated) - { - // do nothing - } - - public function isDecorated(): bool - { - return false; - } - - /** - * @return void - */ - public function setVerbosity(int $level) - { - // do nothing - } - - public function getVerbosity(): int - { - return self::VERBOSITY_QUIET; - } - - public function isQuiet(): bool - { - return true; - } - - public function isVerbose(): bool - { - return false; - } - - public function isVeryVerbose(): bool - { - return false; - } - - public function isDebug(): bool - { - return false; - } - - /** - * @return void - */ - public function writeln(string|iterable $messages, int $options = self::OUTPUT_NORMAL) - { - // do nothing - } - - /** - * @return void - */ - public function write(string|iterable $messages, bool $newline = false, int $options = self::OUTPUT_NORMAL) - { - // do nothing - } -} diff --git a/vendor/symfony/console/Output/Output.php b/vendor/symfony/console/Output/Output.php deleted file mode 100644 index 3a06311a..00000000 --- a/vendor/symfony/console/Output/Output.php +++ /dev/null @@ -1,155 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Output; - -use Symfony\Component\Console\Formatter\OutputFormatter; -use Symfony\Component\Console\Formatter\OutputFormatterInterface; - -/** - * Base class for output classes. - * - * There are five levels of verbosity: - * - * * normal: no option passed (normal output) - * * verbose: -v (more output) - * * very verbose: -vv (highly extended output) - * * debug: -vvv (all debug output) - * * quiet: -q (no output) - * - * @author Fabien Potencier - */ -abstract class Output implements OutputInterface -{ - private int $verbosity; - private OutputFormatterInterface $formatter; - - /** - * @param int|null $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface) - * @param bool $decorated Whether to decorate messages - * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter) - */ - public function __construct(?int $verbosity = self::VERBOSITY_NORMAL, bool $decorated = false, OutputFormatterInterface $formatter = null) - { - $this->verbosity = $verbosity ?? self::VERBOSITY_NORMAL; - $this->formatter = $formatter ?? new OutputFormatter(); - $this->formatter->setDecorated($decorated); - } - - /** - * @return void - */ - public function setFormatter(OutputFormatterInterface $formatter) - { - $this->formatter = $formatter; - } - - public function getFormatter(): OutputFormatterInterface - { - return $this->formatter; - } - - /** - * @return void - */ - public function setDecorated(bool $decorated) - { - $this->formatter->setDecorated($decorated); - } - - public function isDecorated(): bool - { - return $this->formatter->isDecorated(); - } - - /** - * @return void - */ - public function setVerbosity(int $level) - { - $this->verbosity = $level; - } - - public function getVerbosity(): int - { - return $this->verbosity; - } - - public function isQuiet(): bool - { - return self::VERBOSITY_QUIET === $this->verbosity; - } - - public function isVerbose(): bool - { - return self::VERBOSITY_VERBOSE <= $this->verbosity; - } - - public function isVeryVerbose(): bool - { - return self::VERBOSITY_VERY_VERBOSE <= $this->verbosity; - } - - public function isDebug(): bool - { - return self::VERBOSITY_DEBUG <= $this->verbosity; - } - - /** - * @return void - */ - public function writeln(string|iterable $messages, int $options = self::OUTPUT_NORMAL) - { - $this->write($messages, true, $options); - } - - /** - * @return void - */ - public function write(string|iterable $messages, bool $newline = false, int $options = self::OUTPUT_NORMAL) - { - if (!is_iterable($messages)) { - $messages = [$messages]; - } - - $types = self::OUTPUT_NORMAL | self::OUTPUT_RAW | self::OUTPUT_PLAIN; - $type = $types & $options ?: self::OUTPUT_NORMAL; - - $verbosities = self::VERBOSITY_QUIET | self::VERBOSITY_NORMAL | self::VERBOSITY_VERBOSE | self::VERBOSITY_VERY_VERBOSE | self::VERBOSITY_DEBUG; - $verbosity = $verbosities & $options ?: self::VERBOSITY_NORMAL; - - if ($verbosity > $this->getVerbosity()) { - return; - } - - foreach ($messages as $message) { - switch ($type) { - case OutputInterface::OUTPUT_NORMAL: - $message = $this->formatter->format($message); - break; - case OutputInterface::OUTPUT_RAW: - break; - case OutputInterface::OUTPUT_PLAIN: - $message = strip_tags($this->formatter->format($message)); - break; - } - - $this->doWrite($message ?? '', $newline); - } - } - - /** - * Writes a message to the output. - * - * @return void - */ - abstract protected function doWrite(string $message, bool $newline); -} diff --git a/vendor/symfony/console/Output/OutputInterface.php b/vendor/symfony/console/Output/OutputInterface.php deleted file mode 100644 index 19a81790..00000000 --- a/vendor/symfony/console/Output/OutputInterface.php +++ /dev/null @@ -1,111 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Output; - -use Symfony\Component\Console\Formatter\OutputFormatterInterface; - -/** - * OutputInterface is the interface implemented by all Output classes. - * - * @author Fabien Potencier - */ -interface OutputInterface -{ - public const VERBOSITY_QUIET = 16; - public const VERBOSITY_NORMAL = 32; - public const VERBOSITY_VERBOSE = 64; - public const VERBOSITY_VERY_VERBOSE = 128; - public const VERBOSITY_DEBUG = 256; - - public const OUTPUT_NORMAL = 1; - public const OUTPUT_RAW = 2; - public const OUTPUT_PLAIN = 4; - - /** - * Writes a message to the output. - * - * @param bool $newline Whether to add a newline - * @param int $options A bitmask of options (one of the OUTPUT or VERBOSITY constants), - * 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL - * - * @return void - */ - public function write(string|iterable $messages, bool $newline = false, int $options = 0); - - /** - * Writes a message to the output and adds a newline at the end. - * - * @param int $options A bitmask of options (one of the OUTPUT or VERBOSITY constants), - * 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL - * - * @return void - */ - public function writeln(string|iterable $messages, int $options = 0); - - /** - * Sets the verbosity of the output. - * - * @param self::VERBOSITY_* $level - * - * @return void - */ - public function setVerbosity(int $level); - - /** - * Gets the current verbosity of the output. - * - * @return self::VERBOSITY_* - */ - public function getVerbosity(): int; - - /** - * Returns whether verbosity is quiet (-q). - */ - public function isQuiet(): bool; - - /** - * Returns whether verbosity is verbose (-v). - */ - public function isVerbose(): bool; - - /** - * Returns whether verbosity is very verbose (-vv). - */ - public function isVeryVerbose(): bool; - - /** - * Returns whether verbosity is debug (-vvv). - */ - public function isDebug(): bool; - - /** - * Sets the decorated flag. - * - * @return void - */ - public function setDecorated(bool $decorated); - - /** - * Gets the decorated flag. - */ - public function isDecorated(): bool; - - /** - * @return void - */ - public function setFormatter(OutputFormatterInterface $formatter); - - /** - * Returns current output formatter instance. - */ - public function getFormatter(): OutputFormatterInterface; -} diff --git a/vendor/symfony/console/Output/StreamOutput.php b/vendor/symfony/console/Output/StreamOutput.php deleted file mode 100644 index 08005c29..00000000 --- a/vendor/symfony/console/Output/StreamOutput.php +++ /dev/null @@ -1,113 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Output; - -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Formatter\OutputFormatterInterface; - -/** - * StreamOutput writes the output to a given stream. - * - * Usage: - * - * $output = new StreamOutput(fopen('php://stdout', 'w')); - * - * As `StreamOutput` can use any stream, you can also use a file: - * - * $output = new StreamOutput(fopen('/path/to/output.log', 'a', false)); - * - * @author Fabien Potencier - */ -class StreamOutput extends Output -{ - /** @var resource */ - private $stream; - - /** - * @param resource $stream A stream resource - * @param int $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface) - * @param bool|null $decorated Whether to decorate messages (null for auto-guessing) - * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter) - * - * @throws InvalidArgumentException When first argument is not a real stream - */ - public function __construct($stream, int $verbosity = self::VERBOSITY_NORMAL, bool $decorated = null, OutputFormatterInterface $formatter = null) - { - if (!\is_resource($stream) || 'stream' !== get_resource_type($stream)) { - throw new InvalidArgumentException('The StreamOutput class needs a stream as its first argument.'); - } - - $this->stream = $stream; - - $decorated ??= $this->hasColorSupport(); - - parent::__construct($verbosity, $decorated, $formatter); - } - - /** - * Gets the stream attached to this StreamOutput instance. - * - * @return resource - */ - public function getStream() - { - return $this->stream; - } - - /** - * @return void - */ - protected function doWrite(string $message, bool $newline) - { - if ($newline) { - $message .= \PHP_EOL; - } - - @fwrite($this->stream, $message); - - fflush($this->stream); - } - - /** - * Returns true if the stream supports colorization. - * - * Colorization is disabled if not supported by the stream: - * - * This is tricky on Windows, because Cygwin, Msys2 etc emulate pseudo - * terminals via named pipes, so we can only check the environment. - * - * Reference: Composer\XdebugHandler\Process::supportsColor - * https://github.com/composer/xdebug-handler - * - * @return bool true if the stream supports colorization, false otherwise - */ - protected function hasColorSupport(): bool - { - // Follow https://no-color.org/ - if (isset($_SERVER['NO_COLOR']) || false !== getenv('NO_COLOR')) { - return false; - } - - if (\DIRECTORY_SEPARATOR === '\\' - && \function_exists('sapi_windows_vt100_support') - && @sapi_windows_vt100_support($this->stream) - ) { - return true; - } - - return 'Hyper' === getenv('TERM_PROGRAM') - || false !== getenv('ANSICON') - || 'ON' === getenv('ConEmuANSI') - || str_starts_with((string) getenv('TERM'), 'xterm') - || stream_isatty($this->stream); - } -} diff --git a/vendor/symfony/console/Output/TrimmedBufferOutput.php b/vendor/symfony/console/Output/TrimmedBufferOutput.php deleted file mode 100644 index b00445ec..00000000 --- a/vendor/symfony/console/Output/TrimmedBufferOutput.php +++ /dev/null @@ -1,61 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Output; - -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Formatter\OutputFormatterInterface; - -/** - * A BufferedOutput that keeps only the last N chars. - * - * @author Jérémy Derussé - */ -class TrimmedBufferOutput extends Output -{ - private int $maxLength; - private string $buffer = ''; - - public function __construct(int $maxLength, ?int $verbosity = self::VERBOSITY_NORMAL, bool $decorated = false, OutputFormatterInterface $formatter = null) - { - if ($maxLength <= 0) { - throw new InvalidArgumentException(sprintf('"%s()" expects a strictly positive maxLength. Got %d.', __METHOD__, $maxLength)); - } - - parent::__construct($verbosity, $decorated, $formatter); - $this->maxLength = $maxLength; - } - - /** - * Empties buffer and returns its content. - */ - public function fetch(): string - { - $content = $this->buffer; - $this->buffer = ''; - - return $content; - } - - /** - * @return void - */ - protected function doWrite(string $message, bool $newline) - { - $this->buffer .= $message; - - if ($newline) { - $this->buffer .= \PHP_EOL; - } - - $this->buffer = substr($this->buffer, 0 - $this->maxLength); - } -} diff --git a/vendor/symfony/console/Question/ChoiceQuestion.php b/vendor/symfony/console/Question/ChoiceQuestion.php deleted file mode 100644 index e449ff68..00000000 --- a/vendor/symfony/console/Question/ChoiceQuestion.php +++ /dev/null @@ -1,177 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Question; - -use Symfony\Component\Console\Exception\InvalidArgumentException; - -/** - * Represents a choice question. - * - * @author Fabien Potencier - */ -class ChoiceQuestion extends Question -{ - private array $choices; - private bool $multiselect = false; - private string $prompt = ' > '; - private string $errorMessage = 'Value "%s" is invalid'; - - /** - * @param string $question The question to ask to the user - * @param array $choices The list of available choices - * @param mixed $default The default answer to return - */ - public function __construct(string $question, array $choices, mixed $default = null) - { - if (!$choices) { - throw new \LogicException('Choice question must have at least 1 choice available.'); - } - - parent::__construct($question, $default); - - $this->choices = $choices; - $this->setValidator($this->getDefaultValidator()); - $this->setAutocompleterValues($choices); - } - - /** - * Returns available choices. - */ - public function getChoices(): array - { - return $this->choices; - } - - /** - * Sets multiselect option. - * - * When multiselect is set to true, multiple choices can be answered. - * - * @return $this - */ - public function setMultiselect(bool $multiselect): static - { - $this->multiselect = $multiselect; - $this->setValidator($this->getDefaultValidator()); - - return $this; - } - - /** - * Returns whether the choices are multiselect. - */ - public function isMultiselect(): bool - { - return $this->multiselect; - } - - /** - * Gets the prompt for choices. - */ - public function getPrompt(): string - { - return $this->prompt; - } - - /** - * Sets the prompt for choices. - * - * @return $this - */ - public function setPrompt(string $prompt): static - { - $this->prompt = $prompt; - - return $this; - } - - /** - * Sets the error message for invalid values. - * - * The error message has a string placeholder (%s) for the invalid value. - * - * @return $this - */ - public function setErrorMessage(string $errorMessage): static - { - $this->errorMessage = $errorMessage; - $this->setValidator($this->getDefaultValidator()); - - return $this; - } - - private function getDefaultValidator(): callable - { - $choices = $this->choices; - $errorMessage = $this->errorMessage; - $multiselect = $this->multiselect; - $isAssoc = $this->isAssoc($choices); - - return function ($selected) use ($choices, $errorMessage, $multiselect, $isAssoc) { - if ($multiselect) { - // Check for a separated comma values - if (!preg_match('/^[^,]+(?:,[^,]+)*$/', (string) $selected, $matches)) { - throw new InvalidArgumentException(sprintf($errorMessage, $selected)); - } - - $selectedChoices = explode(',', (string) $selected); - } else { - $selectedChoices = [$selected]; - } - - if ($this->isTrimmable()) { - foreach ($selectedChoices as $k => $v) { - $selectedChoices[$k] = trim((string) $v); - } - } - - $multiselectChoices = []; - foreach ($selectedChoices as $value) { - $results = []; - foreach ($choices as $key => $choice) { - if ($choice === $value) { - $results[] = $key; - } - } - - if (\count($results) > 1) { - throw new InvalidArgumentException(sprintf('The provided answer is ambiguous. Value should be one of "%s".', implode('" or "', $results))); - } - - $result = array_search($value, $choices); - - if (!$isAssoc) { - if (false !== $result) { - $result = $choices[$result]; - } elseif (isset($choices[$value])) { - $result = $choices[$value]; - } - } elseif (false === $result && isset($choices[$value])) { - $result = $value; - } - - if (false === $result) { - throw new InvalidArgumentException(sprintf($errorMessage, $value)); - } - - // For associative choices, consistently return the key as string: - $multiselectChoices[] = $isAssoc ? (string) $result : $result; - } - - if ($multiselect) { - return $multiselectChoices; - } - - return current($multiselectChoices); - }; - } -} diff --git a/vendor/symfony/console/Question/ConfirmationQuestion.php b/vendor/symfony/console/Question/ConfirmationQuestion.php deleted file mode 100644 index 40eab242..00000000 --- a/vendor/symfony/console/Question/ConfirmationQuestion.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Question; - -/** - * Represents a yes/no question. - * - * @author Fabien Potencier - */ -class ConfirmationQuestion extends Question -{ - private string $trueAnswerRegex; - - /** - * @param string $question The question to ask to the user - * @param bool $default The default answer to return, true or false - * @param string $trueAnswerRegex A regex to match the "yes" answer - */ - public function __construct(string $question, bool $default = true, string $trueAnswerRegex = '/^y/i') - { - parent::__construct($question, $default); - - $this->trueAnswerRegex = $trueAnswerRegex; - $this->setNormalizer($this->getDefaultNormalizer()); - } - - /** - * Returns the default answer normalizer. - */ - private function getDefaultNormalizer(): callable - { - $default = $this->getDefault(); - $regex = $this->trueAnswerRegex; - - return function ($answer) use ($default, $regex) { - if (\is_bool($answer)) { - return $answer; - } - - $answerIsTrue = (bool) preg_match($regex, $answer); - if (false === $default) { - return $answer && $answerIsTrue; - } - - return '' === $answer || $answerIsTrue; - }; - } -} diff --git a/vendor/symfony/console/Question/Question.php b/vendor/symfony/console/Question/Question.php deleted file mode 100644 index 26896bb5..00000000 --- a/vendor/symfony/console/Question/Question.php +++ /dev/null @@ -1,291 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Question; - -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Exception\LogicException; - -/** - * Represents a Question. - * - * @author Fabien Potencier - */ -class Question -{ - private string $question; - private ?int $attempts = null; - private bool $hidden = false; - private bool $hiddenFallback = true; - private ?\Closure $autocompleterCallback = null; - private ?\Closure $validator = null; - private string|int|bool|null|float $default; - private ?\Closure $normalizer = null; - private bool $trimmable = true; - private bool $multiline = false; - - /** - * @param string $question The question to ask to the user - * @param string|bool|int|float|null $default The default answer to return if the user enters nothing - */ - public function __construct(string $question, string|bool|int|float $default = null) - { - $this->question = $question; - $this->default = $default; - } - - /** - * Returns the question. - */ - public function getQuestion(): string - { - return $this->question; - } - - /** - * Returns the default answer. - */ - public function getDefault(): string|bool|int|float|null - { - return $this->default; - } - - /** - * Returns whether the user response accepts newline characters. - */ - public function isMultiline(): bool - { - return $this->multiline; - } - - /** - * Sets whether the user response should accept newline characters. - * - * @return $this - */ - public function setMultiline(bool $multiline): static - { - $this->multiline = $multiline; - - return $this; - } - - /** - * Returns whether the user response must be hidden. - */ - public function isHidden(): bool - { - return $this->hidden; - } - - /** - * Sets whether the user response must be hidden or not. - * - * @return $this - * - * @throws LogicException In case the autocompleter is also used - */ - public function setHidden(bool $hidden): static - { - if ($this->autocompleterCallback) { - throw new LogicException('A hidden question cannot use the autocompleter.'); - } - - $this->hidden = $hidden; - - return $this; - } - - /** - * In case the response cannot be hidden, whether to fallback on non-hidden question or not. - */ - public function isHiddenFallback(): bool - { - return $this->hiddenFallback; - } - - /** - * Sets whether to fallback on non-hidden question if the response cannot be hidden. - * - * @return $this - */ - public function setHiddenFallback(bool $fallback): static - { - $this->hiddenFallback = $fallback; - - return $this; - } - - /** - * Gets values for the autocompleter. - */ - public function getAutocompleterValues(): ?iterable - { - $callback = $this->getAutocompleterCallback(); - - return $callback ? $callback('') : null; - } - - /** - * Sets values for the autocompleter. - * - * @return $this - * - * @throws LogicException - */ - public function setAutocompleterValues(?iterable $values): static - { - if (\is_array($values)) { - $values = $this->isAssoc($values) ? array_merge(array_keys($values), array_values($values)) : array_values($values); - - $callback = static fn () => $values; - } elseif ($values instanceof \Traversable) { - $callback = static function () use ($values) { - static $valueCache; - - return $valueCache ??= iterator_to_array($values, false); - }; - } else { - $callback = null; - } - - return $this->setAutocompleterCallback($callback); - } - - /** - * Gets the callback function used for the autocompleter. - */ - public function getAutocompleterCallback(): ?callable - { - return $this->autocompleterCallback; - } - - /** - * Sets the callback function used for the autocompleter. - * - * The callback is passed the user input as argument and should return an iterable of corresponding suggestions. - * - * @return $this - */ - public function setAutocompleterCallback(callable $callback = null): static - { - if (1 > \func_num_args()) { - trigger_deprecation('symfony/console', '6.2', 'Calling "%s()" without any arguments is deprecated, pass null explicitly instead.', __METHOD__); - } - if ($this->hidden && null !== $callback) { - throw new LogicException('A hidden question cannot use the autocompleter.'); - } - - $this->autocompleterCallback = null === $callback ? null : $callback(...); - - return $this; - } - - /** - * Sets a validator for the question. - * - * @return $this - */ - public function setValidator(callable $validator = null): static - { - if (1 > \func_num_args()) { - trigger_deprecation('symfony/console', '6.2', 'Calling "%s()" without any arguments is deprecated, pass null explicitly instead.', __METHOD__); - } - $this->validator = null === $validator ? null : $validator(...); - - return $this; - } - - /** - * Gets the validator for the question. - */ - public function getValidator(): ?callable - { - return $this->validator; - } - - /** - * Sets the maximum number of attempts. - * - * Null means an unlimited number of attempts. - * - * @return $this - * - * @throws InvalidArgumentException in case the number of attempts is invalid - */ - public function setMaxAttempts(?int $attempts): static - { - if (null !== $attempts && $attempts < 1) { - throw new InvalidArgumentException('Maximum number of attempts must be a positive value.'); - } - - $this->attempts = $attempts; - - return $this; - } - - /** - * Gets the maximum number of attempts. - * - * Null means an unlimited number of attempts. - */ - public function getMaxAttempts(): ?int - { - return $this->attempts; - } - - /** - * Sets a normalizer for the response. - * - * The normalizer can be a callable (a string), a closure or a class implementing __invoke. - * - * @return $this - */ - public function setNormalizer(callable $normalizer): static - { - $this->normalizer = $normalizer(...); - - return $this; - } - - /** - * Gets the normalizer for the response. - * - * The normalizer can ba a callable (a string), a closure or a class implementing __invoke. - */ - public function getNormalizer(): ?callable - { - return $this->normalizer; - } - - /** - * @return bool - */ - protected function isAssoc(array $array) - { - return (bool) \count(array_filter(array_keys($array), 'is_string')); - } - - public function isTrimmable(): bool - { - return $this->trimmable; - } - - /** - * @return $this - */ - public function setTrimmable(bool $trimmable): static - { - $this->trimmable = $trimmable; - - return $this; - } -} diff --git a/vendor/symfony/console/README.md b/vendor/symfony/console/README.md deleted file mode 100644 index e9013182..00000000 --- a/vendor/symfony/console/README.md +++ /dev/null @@ -1,36 +0,0 @@ -Console Component -================= - -The Console component eases the creation of beautiful and testable command line -interfaces. - -Sponsor -------- - -The Console component for Symfony 6.4 is [backed][1] by [Les-Tilleuls.coop][2]. - -Les-Tilleuls.coop is a team of 70+ Symfony experts who can help you design, develop and -fix your projects. They provide a wide range of professional services including development, -consulting, coaching, training and audits. They also are highly skilled in JS, Go and DevOps. -They are a worker cooperative! - -Help Symfony by [sponsoring][3] its development! - -Resources ---------- - - * [Documentation](https://symfony.com/doc/current/components/console.html) - * [Contributing](https://symfony.com/doc/current/contributing/index.html) - * [Report issues](https://github.com/symfony/symfony/issues) and - [send Pull Requests](https://github.com/symfony/symfony/pulls) - in the [main Symfony repository](https://github.com/symfony/symfony) - -Credits -------- - -`Resources/bin/hiddeninput.exe` is a third party binary provided within this -component. Find sources and license at https://github.com/Seldaek/hidden-input. - -[1]: https://symfony.com/backers -[2]: https://les-tilleuls.coop -[3]: https://symfony.com/sponsor diff --git a/vendor/symfony/console/Resources/bin/hiddeninput.exe b/vendor/symfony/console/Resources/bin/hiddeninput.exe deleted file mode 100644 index c8cf65e8d819e6e525121cf6b21f1c2429746038..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9216 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 J0sQ~1{4brj`U(I5 diff --git a/vendor/symfony/console/Resources/completion.bash b/vendor/symfony/console/Resources/completion.bash deleted file mode 100644 index 0d76eacc..00000000 --- a/vendor/symfony/console/Resources/completion.bash +++ /dev/null @@ -1,94 +0,0 @@ -# This file is part of the Symfony package. -# -# (c) Fabien Potencier -# -# For the full copyright and license information, please view -# https://symfony.com/doc/current/contributing/code/license.html - -_sf_{{ COMMAND_NAME }}() { - - # Use the default completion for shell redirect operators. - for w in '>' '>>' '&>' '<'; do - if [[ $w = "${COMP_WORDS[COMP_CWORD-1]}" ]]; then - compopt -o filenames - COMPREPLY=($(compgen -f -- "${COMP_WORDS[COMP_CWORD]}")) - return 0 - fi - done - - # Use newline as only separator to allow space in completion values - IFS=$'\n' - local sf_cmd="${COMP_WORDS[0]}" - - # for an alias, get the real script behind it - sf_cmd_type=$(type -t $sf_cmd) - if [[ $sf_cmd_type == "alias" ]]; then - sf_cmd=$(alias $sf_cmd | sed -E "s/alias $sf_cmd='(.*)'/\1/") - elif [[ $sf_cmd_type == "file" ]]; then - sf_cmd=$(type -p $sf_cmd) - fi - - if [[ $sf_cmd_type != "function" && ! -x $sf_cmd ]]; then - return 1 - fi - - local cur prev words cword - _get_comp_words_by_ref -n := cur prev words cword - - local completecmd=("$sf_cmd" "_complete" "--no-interaction" "-sbash" "-c$cword" "-a{{ VERSION }}") - for w in ${words[@]}; do - w=$(printf -- '%b' "$w") - # remove quotes from typed values - quote="${w:0:1}" - if [ "$quote" == \' ]; then - w="${w%\'}" - w="${w#\'}" - elif [ "$quote" == \" ]; then - w="${w%\"}" - w="${w#\"}" - fi - # empty values are ignored - if [ ! -z "$w" ]; then - completecmd+=("-i$w") - fi - done - - local sfcomplete - if sfcomplete=$(${completecmd[@]} 2>&1); then - local quote suggestions - quote=${cur:0:1} - - # Use single quotes by default if suggestions contains backslash (FQCN) - if [ "$quote" == '' ] && [[ "$sfcomplete" =~ \\ ]]; then - quote=\' - fi - - if [ "$quote" == \' ]; then - # single quotes: no additional escaping (does not accept ' in values) - suggestions=$(for s in $sfcomplete; do printf $'%q%q%q\n' "$quote" "$s" "$quote"; done) - elif [ "$quote" == \" ]; then - # double quotes: double escaping for \ $ ` " - suggestions=$(for s in $sfcomplete; do - s=${s//\\/\\\\} - s=${s//\$/\\\$} - s=${s//\`/\\\`} - s=${s//\"/\\\"} - printf $'%q%q%q\n' "$quote" "$s" "$quote"; - done) - else - # no quotes: double escaping - suggestions=$(for s in $sfcomplete; do printf $'%q\n' $(printf '%q' "$s"); done) - fi - COMPREPLY=($(IFS=$'\n' compgen -W "$suggestions" -- $(printf -- "%q" "$cur"))) - __ltrim_colon_completions "$cur" - else - if [[ "$sfcomplete" != *"Command \"_complete\" is not defined."* ]]; then - >&2 echo - >&2 echo $sfcomplete - fi - - return 1 - fi -} - -complete -F _sf_{{ COMMAND_NAME }} {{ COMMAND_NAME }} diff --git a/vendor/symfony/console/Resources/completion.fish b/vendor/symfony/console/Resources/completion.fish deleted file mode 100644 index 1c34292a..00000000 --- a/vendor/symfony/console/Resources/completion.fish +++ /dev/null @@ -1,29 +0,0 @@ -# This file is part of the Symfony package. -# -# (c) Fabien Potencier -# -# For the full copyright and license information, please view -# https://symfony.com/doc/current/contributing/code/license.html - -function _sf_{{ COMMAND_NAME }} - set sf_cmd (commandline -o) - set c (count (commandline -oc)) - - set completecmd "$sf_cmd[1]" "_complete" "--no-interaction" "-sfish" "-a{{ VERSION }}" - - for i in $sf_cmd - if [ $i != "" ] - set completecmd $completecmd "-i$i" - end - end - - set completecmd $completecmd "-c$c" - - set sfcomplete ($completecmd) - - for i in $sfcomplete - echo $i - end -end - -complete -c '{{ COMMAND_NAME }}' -a '(_sf_{{ COMMAND_NAME }})' -f diff --git a/vendor/symfony/console/Resources/completion.zsh b/vendor/symfony/console/Resources/completion.zsh deleted file mode 100644 index ff76fe5f..00000000 --- a/vendor/symfony/console/Resources/completion.zsh +++ /dev/null @@ -1,82 +0,0 @@ -#compdef {{ COMMAND_NAME }} - -# This file is part of the Symfony package. -# -# (c) Fabien Potencier -# -# For the full copyright and license information, please view -# https://symfony.com/doc/current/contributing/code/license.html - -# -# zsh completions for {{ COMMAND_NAME }} -# -# References: -# - https://github.com/spf13/cobra/blob/master/zsh_completions.go -# - https://github.com/symfony/symfony/blob/5.4/src/Symfony/Component/Console/Resources/completion.bash -# -_sf_{{ COMMAND_NAME }}() { - local lastParam flagPrefix requestComp out comp - local -a completions - - # The user could have moved the cursor backwards on the command-line. - # We need to trigger completion from the $CURRENT location, so we need - # to truncate the command-line ($words) up to the $CURRENT location. - # (We cannot use $CURSOR as its value does not work when a command is an alias.) - words=("${=words[1,CURRENT]}") lastParam=${words[-1]} - - # For zsh, when completing a flag with an = (e.g., {{ COMMAND_NAME }} -n=) - # completions must be prefixed with the flag - setopt local_options BASH_REMATCH - if [[ "${lastParam}" =~ '-.*=' ]]; then - # We are dealing with a flag with an = - flagPrefix="-P ${BASH_REMATCH}" - fi - - # Prepare the command to obtain completions - requestComp="${words[0]} ${words[1]} _complete --no-interaction -szsh -a{{ VERSION }} -c$((CURRENT-1))" i="" - for w in ${words[@]}; do - w=$(printf -- '%b' "$w") - # remove quotes from typed values - quote="${w:0:1}" - if [ "$quote" = \' ]; then - w="${w%\'}" - w="${w#\'}" - elif [ "$quote" = \" ]; then - w="${w%\"}" - w="${w#\"}" - fi - # empty values are ignored - if [ ! -z "$w" ]; then - i="${i}-i${w} " - fi - done - - # Ensure at least 1 input - if [ "${i}" = "" ]; then - requestComp="${requestComp} -i\" \"" - else - requestComp="${requestComp} ${i}" - fi - - # Use eval to handle any environment variables and such - out=$(eval ${requestComp} 2>/dev/null) - - while IFS='\n' read -r comp; do - if [ -n "$comp" ]; then - # If requested, completions are returned with a description. - # The description is preceded by a TAB character. - # For zsh's _describe, we need to use a : instead of a TAB. - # We first need to escape any : as part of the completion itself. - comp=${comp//:/\\:} - local tab=$(printf '\t') - comp=${comp//$tab/:} - completions+=${comp} - fi - done < <(printf "%s\n" "${out[@]}") - - # Let inbuilt _describe handle completions - eval _describe "completions" completions $flagPrefix - return $? -} - -compdef _sf_{{ COMMAND_NAME }} {{ COMMAND_NAME }} diff --git a/vendor/symfony/console/SignalRegistry/SignalMap.php b/vendor/symfony/console/SignalRegistry/SignalMap.php deleted file mode 100644 index de419bda..00000000 --- a/vendor/symfony/console/SignalRegistry/SignalMap.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\SignalRegistry; - -/** - * @author Grégoire Pineau - */ -class SignalMap -{ - private static array $map; - - public static function getSignalName(int $signal): ?string - { - if (!\extension_loaded('pcntl')) { - return null; - } - - if (!isset(self::$map)) { - $r = new \ReflectionExtension('pcntl'); - $c = $r->getConstants(); - $map = array_filter($c, fn ($k) => str_starts_with($k, 'SIG') && !str_starts_with($k, 'SIG_'), \ARRAY_FILTER_USE_KEY); - self::$map = array_flip($map); - } - - return self::$map[$signal] ?? null; - } -} diff --git a/vendor/symfony/console/SignalRegistry/SignalRegistry.php b/vendor/symfony/console/SignalRegistry/SignalRegistry.php deleted file mode 100644 index ef2e5f04..00000000 --- a/vendor/symfony/console/SignalRegistry/SignalRegistry.php +++ /dev/null @@ -1,57 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\SignalRegistry; - -final class SignalRegistry -{ - private array $signalHandlers = []; - - public function __construct() - { - if (\function_exists('pcntl_async_signals')) { - pcntl_async_signals(true); - } - } - - public function register(int $signal, callable $signalHandler): void - { - if (!isset($this->signalHandlers[$signal])) { - $previousCallback = pcntl_signal_get_handler($signal); - - if (\is_callable($previousCallback)) { - $this->signalHandlers[$signal][] = $previousCallback; - } - } - - $this->signalHandlers[$signal][] = $signalHandler; - - pcntl_signal($signal, $this->handle(...)); - } - - public static function isSupported(): bool - { - return \function_exists('pcntl_signal'); - } - - /** - * @internal - */ - public function handle(int $signal): void - { - $count = \count($this->signalHandlers[$signal]); - - foreach ($this->signalHandlers[$signal] as $i => $signalHandler) { - $hasNext = $i !== $count - 1; - $signalHandler($signal, $hasNext); - } - } -} diff --git a/vendor/symfony/console/SingleCommandApplication.php b/vendor/symfony/console/SingleCommandApplication.php deleted file mode 100644 index 4f0b5ba3..00000000 --- a/vendor/symfony/console/SingleCommandApplication.php +++ /dev/null @@ -1,72 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console; - -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * @author Grégoire Pineau - */ -class SingleCommandApplication extends Command -{ - private string $version = 'UNKNOWN'; - private bool $autoExit = true; - private bool $running = false; - - /** - * @return $this - */ - public function setVersion(string $version): static - { - $this->version = $version; - - return $this; - } - - /** - * @final - * - * @return $this - */ - public function setAutoExit(bool $autoExit): static - { - $this->autoExit = $autoExit; - - return $this; - } - - public function run(InputInterface $input = null, OutputInterface $output = null): int - { - if ($this->running) { - return parent::run($input, $output); - } - - // We use the command name as the application name - $application = new Application($this->getName() ?: 'UNKNOWN', $this->version); - $application->setAutoExit($this->autoExit); - // Fix the usage of the command displayed with "--help" - $this->setName($_SERVER['argv'][0]); - $application->add($this); - $application->setDefaultCommand($this->getName(), true); - - $this->running = true; - try { - $ret = $application->run($input, $output); - } finally { - $this->running = false; - } - - return $ret ?? 1; - } -} diff --git a/vendor/symfony/console/Style/OutputStyle.php b/vendor/symfony/console/Style/OutputStyle.php deleted file mode 100644 index ddfa8dec..00000000 --- a/vendor/symfony/console/Style/OutputStyle.php +++ /dev/null @@ -1,132 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Style; - -use Symfony\Component\Console\Formatter\OutputFormatterInterface; -use Symfony\Component\Console\Helper\ProgressBar; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * Decorates output to add console style guide helpers. - * - * @author Kevin Bond - */ -abstract class OutputStyle implements OutputInterface, StyleInterface -{ - private OutputInterface $output; - - public function __construct(OutputInterface $output) - { - $this->output = $output; - } - - /** - * @return void - */ - public function newLine(int $count = 1) - { - $this->output->write(str_repeat(\PHP_EOL, $count)); - } - - public function createProgressBar(int $max = 0): ProgressBar - { - return new ProgressBar($this->output, $max); - } - - /** - * @return void - */ - public function write(string|iterable $messages, bool $newline = false, int $type = self::OUTPUT_NORMAL) - { - $this->output->write($messages, $newline, $type); - } - - /** - * @return void - */ - public function writeln(string|iterable $messages, int $type = self::OUTPUT_NORMAL) - { - $this->output->writeln($messages, $type); - } - - /** - * @return void - */ - public function setVerbosity(int $level) - { - $this->output->setVerbosity($level); - } - - public function getVerbosity(): int - { - return $this->output->getVerbosity(); - } - - /** - * @return void - */ - public function setDecorated(bool $decorated) - { - $this->output->setDecorated($decorated); - } - - public function isDecorated(): bool - { - return $this->output->isDecorated(); - } - - /** - * @return void - */ - public function setFormatter(OutputFormatterInterface $formatter) - { - $this->output->setFormatter($formatter); - } - - public function getFormatter(): OutputFormatterInterface - { - return $this->output->getFormatter(); - } - - public function isQuiet(): bool - { - return $this->output->isQuiet(); - } - - public function isVerbose(): bool - { - return $this->output->isVerbose(); - } - - public function isVeryVerbose(): bool - { - return $this->output->isVeryVerbose(); - } - - public function isDebug(): bool - { - return $this->output->isDebug(); - } - - /** - * @return OutputInterface - */ - protected function getErrorOutput() - { - if (!$this->output instanceof ConsoleOutputInterface) { - return $this->output; - } - - return $this->output->getErrorOutput(); - } -} diff --git a/vendor/symfony/console/Style/StyleInterface.php b/vendor/symfony/console/Style/StyleInterface.php deleted file mode 100644 index e25a65bd..00000000 --- a/vendor/symfony/console/Style/StyleInterface.php +++ /dev/null @@ -1,138 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Style; - -/** - * Output style helpers. - * - * @author Kevin Bond - */ -interface StyleInterface -{ - /** - * Formats a command title. - * - * @return void - */ - public function title(string $message); - - /** - * Formats a section title. - * - * @return void - */ - public function section(string $message); - - /** - * Formats a list. - * - * @return void - */ - public function listing(array $elements); - - /** - * Formats informational text. - * - * @return void - */ - public function text(string|array $message); - - /** - * Formats a success result bar. - * - * @return void - */ - public function success(string|array $message); - - /** - * Formats an error result bar. - * - * @return void - */ - public function error(string|array $message); - - /** - * Formats an warning result bar. - * - * @return void - */ - public function warning(string|array $message); - - /** - * Formats a note admonition. - * - * @return void - */ - public function note(string|array $message); - - /** - * Formats a caution admonition. - * - * @return void - */ - public function caution(string|array $message); - - /** - * Formats a table. - * - * @return void - */ - public function table(array $headers, array $rows); - - /** - * Asks a question. - */ - public function ask(string $question, string $default = null, callable $validator = null): mixed; - - /** - * Asks a question with the user input hidden. - */ - public function askHidden(string $question, callable $validator = null): mixed; - - /** - * Asks for confirmation. - */ - public function confirm(string $question, bool $default = true): bool; - - /** - * Asks a choice question. - */ - public function choice(string $question, array $choices, mixed $default = null): mixed; - - /** - * Add newline(s). - * - * @return void - */ - public function newLine(int $count = 1); - - /** - * Starts the progress output. - * - * @return void - */ - public function progressStart(int $max = 0); - - /** - * Advances the progress output X steps. - * - * @return void - */ - public function progressAdvance(int $step = 1); - - /** - * Finishes the progress output. - * - * @return void - */ - public function progressFinish(); -} diff --git a/vendor/symfony/console/Style/SymfonyStyle.php b/vendor/symfony/console/Style/SymfonyStyle.php deleted file mode 100644 index 43d2edf5..00000000 --- a/vendor/symfony/console/Style/SymfonyStyle.php +++ /dev/null @@ -1,514 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Style; - -use Symfony\Component\Console\Exception\InvalidArgumentException; -use Symfony\Component\Console\Exception\RuntimeException; -use Symfony\Component\Console\Formatter\OutputFormatter; -use Symfony\Component\Console\Helper\Helper; -use Symfony\Component\Console\Helper\OutputWrapper; -use Symfony\Component\Console\Helper\ProgressBar; -use Symfony\Component\Console\Helper\SymfonyQuestionHelper; -use Symfony\Component\Console\Helper\Table; -use Symfony\Component\Console\Helper\TableCell; -use Symfony\Component\Console\Helper\TableSeparator; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\ConsoleOutputInterface; -use Symfony\Component\Console\Output\ConsoleSectionOutput; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Output\TrimmedBufferOutput; -use Symfony\Component\Console\Question\ChoiceQuestion; -use Symfony\Component\Console\Question\ConfirmationQuestion; -use Symfony\Component\Console\Question\Question; -use Symfony\Component\Console\Terminal; - -/** - * Output decorator helpers for the Symfony Style Guide. - * - * @author Kevin Bond - */ -class SymfonyStyle extends OutputStyle -{ - public const MAX_LINE_LENGTH = 120; - - private InputInterface $input; - private OutputInterface $output; - private SymfonyQuestionHelper $questionHelper; - private ProgressBar $progressBar; - private int $lineLength; - private TrimmedBufferOutput $bufferedOutput; - - public function __construct(InputInterface $input, OutputInterface $output) - { - $this->input = $input; - $this->bufferedOutput = new TrimmedBufferOutput(\DIRECTORY_SEPARATOR === '\\' ? 4 : 2, $output->getVerbosity(), false, clone $output->getFormatter()); - // Windows cmd wraps lines as soon as the terminal width is reached, whether there are following chars or not. - $width = (new Terminal())->getWidth() ?: self::MAX_LINE_LENGTH; - $this->lineLength = min($width - (int) (\DIRECTORY_SEPARATOR === '\\'), self::MAX_LINE_LENGTH); - - parent::__construct($this->output = $output); - } - - /** - * Formats a message as a block of text. - * - * @return void - */ - public function block(string|array $messages, string $type = null, string $style = null, string $prefix = ' ', bool $padding = false, bool $escape = true) - { - $messages = \is_array($messages) ? array_values($messages) : [$messages]; - - $this->autoPrependBlock(); - $this->writeln($this->createBlock($messages, $type, $style, $prefix, $padding, $escape)); - $this->newLine(); - } - - /** - * @return void - */ - public function title(string $message) - { - $this->autoPrependBlock(); - $this->writeln([ - sprintf('%s', OutputFormatter::escapeTrailingBackslash($message)), - sprintf('%s', str_repeat('=', Helper::width(Helper::removeDecoration($this->getFormatter(), $message)))), - ]); - $this->newLine(); - } - - /** - * @return void - */ - public function section(string $message) - { - $this->autoPrependBlock(); - $this->writeln([ - sprintf('%s', OutputFormatter::escapeTrailingBackslash($message)), - sprintf('%s', str_repeat('-', Helper::width(Helper::removeDecoration($this->getFormatter(), $message)))), - ]); - $this->newLine(); - } - - /** - * @return void - */ - public function listing(array $elements) - { - $this->autoPrependText(); - $elements = array_map(fn ($element) => sprintf(' * %s', $element), $elements); - - $this->writeln($elements); - $this->newLine(); - } - - /** - * @return void - */ - public function text(string|array $message) - { - $this->autoPrependText(); - - $messages = \is_array($message) ? array_values($message) : [$message]; - foreach ($messages as $message) { - $this->writeln(sprintf(' %s', $message)); - } - } - - /** - * Formats a command comment. - * - * @return void - */ - public function comment(string|array $message) - { - $this->block($message, null, null, ' // ', false, false); - } - - /** - * @return void - */ - public function success(string|array $message) - { - $this->block($message, 'OK', 'fg=black;bg=green', ' ', true); - } - - /** - * @return void - */ - public function error(string|array $message) - { - $this->block($message, 'ERROR', 'fg=white;bg=red', ' ', true); - } - - /** - * @return void - */ - public function warning(string|array $message) - { - $this->block($message, 'WARNING', 'fg=black;bg=yellow', ' ', true); - } - - /** - * @return void - */ - public function note(string|array $message) - { - $this->block($message, 'NOTE', 'fg=yellow', ' ! '); - } - - /** - * Formats an info message. - * - * @return void - */ - public function info(string|array $message) - { - $this->block($message, 'INFO', 'fg=green', ' ', true); - } - - /** - * @return void - */ - public function caution(string|array $message) - { - $this->block($message, 'CAUTION', 'fg=white;bg=red', ' ! ', true); - } - - /** - * @return void - */ - public function table(array $headers, array $rows) - { - $this->createTable() - ->setHeaders($headers) - ->setRows($rows) - ->render() - ; - - $this->newLine(); - } - - /** - * Formats a horizontal table. - * - * @return void - */ - public function horizontalTable(array $headers, array $rows) - { - $this->createTable() - ->setHorizontal(true) - ->setHeaders($headers) - ->setRows($rows) - ->render() - ; - - $this->newLine(); - } - - /** - * Formats a list of key/value horizontally. - * - * Each row can be one of: - * * 'A title' - * * ['key' => 'value'] - * * new TableSeparator() - * - * @return void - */ - public function definitionList(string|array|TableSeparator ...$list) - { - $headers = []; - $row = []; - foreach ($list as $value) { - if ($value instanceof TableSeparator) { - $headers[] = $value; - $row[] = $value; - continue; - } - if (\is_string($value)) { - $headers[] = new TableCell($value, ['colspan' => 2]); - $row[] = null; - continue; - } - if (!\is_array($value)) { - throw new InvalidArgumentException('Value should be an array, string, or an instance of TableSeparator.'); - } - $headers[] = key($value); - $row[] = current($value); - } - - $this->horizontalTable($headers, [$row]); - } - - public function ask(string $question, string $default = null, callable $validator = null): mixed - { - $question = new Question($question, $default); - $question->setValidator($validator); - - return $this->askQuestion($question); - } - - public function askHidden(string $question, callable $validator = null): mixed - { - $question = new Question($question); - - $question->setHidden(true); - $question->setValidator($validator); - - return $this->askQuestion($question); - } - - public function confirm(string $question, bool $default = true): bool - { - return $this->askQuestion(new ConfirmationQuestion($question, $default)); - } - - public function choice(string $question, array $choices, mixed $default = null, bool $multiSelect = false): mixed - { - if (null !== $default) { - $values = array_flip($choices); - $default = $values[$default] ?? $default; - } - - $questionChoice = new ChoiceQuestion($question, $choices, $default); - $questionChoice->setMultiselect($multiSelect); - - return $this->askQuestion($questionChoice); - } - - /** - * @return void - */ - public function progressStart(int $max = 0) - { - $this->progressBar = $this->createProgressBar($max); - $this->progressBar->start(); - } - - /** - * @return void - */ - public function progressAdvance(int $step = 1) - { - $this->getProgressBar()->advance($step); - } - - /** - * @return void - */ - public function progressFinish() - { - $this->getProgressBar()->finish(); - $this->newLine(2); - unset($this->progressBar); - } - - public function createProgressBar(int $max = 0): ProgressBar - { - $progressBar = parent::createProgressBar($max); - - if ('\\' !== \DIRECTORY_SEPARATOR || 'Hyper' === getenv('TERM_PROGRAM')) { - $progressBar->setEmptyBarCharacter('░'); // light shade character \u2591 - $progressBar->setProgressCharacter(''); - $progressBar->setBarCharacter('▓'); // dark shade character \u2593 - } - - return $progressBar; - } - - /** - * @see ProgressBar::iterate() - * - * @template TKey - * @template TValue - * - * @param iterable $iterable - * @param int|null $max Number of steps to complete the bar (0 if indeterminate), if null it will be inferred from $iterable - * - * @return iterable - */ - public function progressIterate(iterable $iterable, int $max = null): iterable - { - yield from $this->createProgressBar()->iterate($iterable, $max); - - $this->newLine(2); - } - - public function askQuestion(Question $question): mixed - { - if ($this->input->isInteractive()) { - $this->autoPrependBlock(); - } - - $this->questionHelper ??= new SymfonyQuestionHelper(); - - $answer = $this->questionHelper->ask($this->input, $this, $question); - - if ($this->input->isInteractive()) { - if ($this->output instanceof ConsoleSectionOutput) { - // add the new line of the `return` to submit the input to ConsoleSectionOutput, because ConsoleSectionOutput is holding all it's lines. - // this is relevant when a `ConsoleSectionOutput::clear` is called. - $this->output->addNewLineOfInputSubmit(); - } - $this->newLine(); - $this->bufferedOutput->write("\n"); - } - - return $answer; - } - - /** - * @return void - */ - public function writeln(string|iterable $messages, int $type = self::OUTPUT_NORMAL) - { - if (!is_iterable($messages)) { - $messages = [$messages]; - } - - foreach ($messages as $message) { - parent::writeln($message, $type); - $this->writeBuffer($message, true, $type); - } - } - - /** - * @return void - */ - public function write(string|iterable $messages, bool $newline = false, int $type = self::OUTPUT_NORMAL) - { - if (!is_iterable($messages)) { - $messages = [$messages]; - } - - foreach ($messages as $message) { - parent::write($message, $newline, $type); - $this->writeBuffer($message, $newline, $type); - } - } - - /** - * @return void - */ - public function newLine(int $count = 1) - { - parent::newLine($count); - $this->bufferedOutput->write(str_repeat("\n", $count)); - } - - /** - * Returns a new instance which makes use of stderr if available. - */ - public function getErrorStyle(): self - { - return new self($this->input, $this->getErrorOutput()); - } - - public function createTable(): Table - { - $output = $this->output instanceof ConsoleOutputInterface ? $this->output->section() : $this->output; - $style = clone Table::getStyleDefinition('symfony-style-guide'); - $style->setCellHeaderFormat('%s'); - - return (new Table($output))->setStyle($style); - } - - private function getProgressBar(): ProgressBar - { - return $this->progressBar - ?? throw new RuntimeException('The ProgressBar is not started.'); - } - - private function autoPrependBlock(): void - { - $chars = substr(str_replace(\PHP_EOL, "\n", $this->bufferedOutput->fetch()), -2); - - if (!isset($chars[0])) { - $this->newLine(); // empty history, so we should start with a new line. - - return; - } - // Prepend new line for each non LF chars (This means no blank line was output before) - $this->newLine(2 - substr_count($chars, "\n")); - } - - private function autoPrependText(): void - { - $fetched = $this->bufferedOutput->fetch(); - // Prepend new line if last char isn't EOL: - if ($fetched && !str_ends_with($fetched, "\n")) { - $this->newLine(); - } - } - - private function writeBuffer(string $message, bool $newLine, int $type): void - { - // We need to know if the last chars are PHP_EOL - $this->bufferedOutput->write($message, $newLine, $type); - } - - private function createBlock(iterable $messages, string $type = null, string $style = null, string $prefix = ' ', bool $padding = false, bool $escape = false): array - { - $indentLength = 0; - $prefixLength = Helper::width(Helper::removeDecoration($this->getFormatter(), $prefix)); - $lines = []; - - if (null !== $type) { - $type = sprintf('[%s] ', $type); - $indentLength = Helper::width($type); - $lineIndentation = str_repeat(' ', $indentLength); - } - - // wrap and add newlines for each element - $outputWrapper = new OutputWrapper(); - foreach ($messages as $key => $message) { - if ($escape) { - $message = OutputFormatter::escape($message); - } - - $lines = array_merge( - $lines, - explode(\PHP_EOL, $outputWrapper->wrap( - $message, - $this->lineLength - $prefixLength - $indentLength, - \PHP_EOL - )) - ); - - if (\count($messages) > 1 && $key < \count($messages) - 1) { - $lines[] = ''; - } - } - - $firstLineIndex = 0; - if ($padding && $this->isDecorated()) { - $firstLineIndex = 1; - array_unshift($lines, ''); - $lines[] = ''; - } - - foreach ($lines as $i => &$line) { - if (null !== $type) { - $line = $firstLineIndex === $i ? $type.$line : $lineIndentation.$line; - } - - $line = $prefix.$line; - $line .= str_repeat(' ', max($this->lineLength - Helper::width(Helper::removeDecoration($this->getFormatter(), $line)), 0)); - - if ($style) { - $line = sprintf('<%s>%s', $style, $line); - } - } - - return $lines; - } -} diff --git a/vendor/symfony/console/Terminal.php b/vendor/symfony/console/Terminal.php deleted file mode 100644 index 3eda0376..00000000 --- a/vendor/symfony/console/Terminal.php +++ /dev/null @@ -1,236 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console; - -use Symfony\Component\Console\Output\AnsiColorMode; - -class Terminal -{ - public const DEFAULT_COLOR_MODE = AnsiColorMode::Ansi4; - - private static ?AnsiColorMode $colorMode = null; - private static ?int $width = null; - private static ?int $height = null; - private static ?bool $stty = null; - - /** - * About Ansi color types: https://en.wikipedia.org/wiki/ANSI_escape_code#Colors - * For more information about true color support with terminals https://github.com/termstandard/colors/. - */ - public static function getColorMode(): AnsiColorMode - { - // Use Cache from previous run (or user forced mode) - if (null !== self::$colorMode) { - return self::$colorMode; - } - - // Try with $COLORTERM first - if (\is_string($colorterm = getenv('COLORTERM'))) { - $colorterm = strtolower($colorterm); - - if (str_contains($colorterm, 'truecolor')) { - self::setColorMode(AnsiColorMode::Ansi24); - - return self::$colorMode; - } - - if (str_contains($colorterm, '256color')) { - self::setColorMode(AnsiColorMode::Ansi8); - - return self::$colorMode; - } - } - - // Try with $TERM - if (\is_string($term = getenv('TERM'))) { - $term = strtolower($term); - - if (str_contains($term, 'truecolor')) { - self::setColorMode(AnsiColorMode::Ansi24); - - return self::$colorMode; - } - - if (str_contains($term, '256color')) { - self::setColorMode(AnsiColorMode::Ansi8); - - return self::$colorMode; - } - } - - self::setColorMode(self::DEFAULT_COLOR_MODE); - - return self::$colorMode; - } - - /** - * Force a terminal color mode rendering. - */ - public static function setColorMode(?AnsiColorMode $colorMode): void - { - self::$colorMode = $colorMode; - } - - /** - * Gets the terminal width. - */ - public function getWidth(): int - { - $width = getenv('COLUMNS'); - if (false !== $width) { - return (int) trim($width); - } - - if (null === self::$width) { - self::initDimensions(); - } - - return self::$width ?: 80; - } - - /** - * Gets the terminal height. - */ - public function getHeight(): int - { - $height = getenv('LINES'); - if (false !== $height) { - return (int) trim($height); - } - - if (null === self::$height) { - self::initDimensions(); - } - - return self::$height ?: 50; - } - - /** - * @internal - */ - public static function hasSttyAvailable(): bool - { - if (null !== self::$stty) { - return self::$stty; - } - - // skip check if shell_exec function is disabled - if (!\function_exists('shell_exec')) { - return false; - } - - return self::$stty = (bool) shell_exec('stty 2> '.('\\' === \DIRECTORY_SEPARATOR ? 'NUL' : '/dev/null')); - } - - private static function initDimensions(): void - { - if ('\\' === \DIRECTORY_SEPARATOR) { - $ansicon = getenv('ANSICON'); - if (false !== $ansicon && preg_match('/^(\d+)x(\d+)(?: \((\d+)x(\d+)\))?$/', trim($ansicon), $matches)) { - // extract [w, H] from "wxh (WxH)" - // or [w, h] from "wxh" - self::$width = (int) $matches[1]; - self::$height = isset($matches[4]) ? (int) $matches[4] : (int) $matches[2]; - } elseif (!self::hasVt100Support() && self::hasSttyAvailable()) { - // only use stty on Windows if the terminal does not support vt100 (e.g. Windows 7 + git-bash) - // testing for stty in a Windows 10 vt100-enabled console will implicitly disable vt100 support on STDOUT - self::initDimensionsUsingStty(); - } elseif (null !== $dimensions = self::getConsoleMode()) { - // extract [w, h] from "wxh" - self::$width = (int) $dimensions[0]; - self::$height = (int) $dimensions[1]; - } - } else { - self::initDimensionsUsingStty(); - } - } - - /** - * Returns whether STDOUT has vt100 support (some Windows 10+ configurations). - */ - private static function hasVt100Support(): bool - { - return \function_exists('sapi_windows_vt100_support') && sapi_windows_vt100_support(fopen('php://stdout', 'w')); - } - - /** - * Initializes dimensions using the output of an stty columns line. - */ - private static function initDimensionsUsingStty(): void - { - if ($sttyString = self::getSttyColumns()) { - if (preg_match('/rows.(\d+);.columns.(\d+);/is', $sttyString, $matches)) { - // extract [w, h] from "rows h; columns w;" - self::$width = (int) $matches[2]; - self::$height = (int) $matches[1]; - } elseif (preg_match('/;.(\d+).rows;.(\d+).columns/is', $sttyString, $matches)) { - // extract [w, h] from "; h rows; w columns" - self::$width = (int) $matches[2]; - self::$height = (int) $matches[1]; - } - } - } - - /** - * Runs and parses mode CON if it's available, suppressing any error output. - * - * @return int[]|null An array composed of the width and the height or null if it could not be parsed - */ - private static function getConsoleMode(): ?array - { - $info = self::readFromProcess('mode CON'); - - if (null === $info || !preg_match('/--------+\r?\n.+?(\d+)\r?\n.+?(\d+)\r?\n/', $info, $matches)) { - return null; - } - - return [(int) $matches[2], (int) $matches[1]]; - } - - /** - * Runs and parses stty -a if it's available, suppressing any error output. - */ - private static function getSttyColumns(): ?string - { - return self::readFromProcess(['stty', '-a']); - } - - private static function readFromProcess(string|array $command): ?string - { - if (!\function_exists('proc_open')) { - return null; - } - - $descriptorspec = [ - 1 => ['pipe', 'w'], - 2 => ['pipe', 'w'], - ]; - - $cp = \function_exists('sapi_windows_cp_set') ? sapi_windows_cp_get() : 0; - - $process = proc_open($command, $descriptorspec, $pipes, null, null, ['suppress_errors' => true]); - if (!\is_resource($process)) { - return null; - } - - $info = stream_get_contents($pipes[1]); - fclose($pipes[1]); - fclose($pipes[2]); - proc_close($process); - - if ($cp) { - sapi_windows_cp_set($cp); - } - - return $info; - } -} diff --git a/vendor/symfony/console/Tester/ApplicationTester.php b/vendor/symfony/console/Tester/ApplicationTester.php deleted file mode 100644 index 58aee54d..00000000 --- a/vendor/symfony/console/Tester/ApplicationTester.php +++ /dev/null @@ -1,85 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Tester; - -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Input\ArrayInput; - -/** - * Eases the testing of console applications. - * - * When testing an application, don't forget to disable the auto exit flag: - * - * $application = new Application(); - * $application->setAutoExit(false); - * - * @author Fabien Potencier - */ -class ApplicationTester -{ - use TesterTrait; - - private Application $application; - - public function __construct(Application $application) - { - $this->application = $application; - } - - /** - * Executes the application. - * - * Available options: - * - * * interactive: Sets the input interactive flag - * * decorated: Sets the output decorated flag - * * verbosity: Sets the output verbosity flag - * * capture_stderr_separately: Make output of stdOut and stdErr separately available - * - * @return int The command exit code - */ - public function run(array $input, array $options = []): int - { - $prevShellVerbosity = getenv('SHELL_VERBOSITY'); - - try { - $this->input = new ArrayInput($input); - if (isset($options['interactive'])) { - $this->input->setInteractive($options['interactive']); - } - - if ($this->inputs) { - $this->input->setStream(self::createStream($this->inputs)); - } - - $this->initOutput($options); - - return $this->statusCode = $this->application->run($this->input, $this->output); - } finally { - // SHELL_VERBOSITY is set by Application::configureIO so we need to unset/reset it - // to its previous value to avoid one test's verbosity to spread to the following tests - if (false === $prevShellVerbosity) { - if (\function_exists('putenv')) { - @putenv('SHELL_VERBOSITY'); - } - unset($_ENV['SHELL_VERBOSITY']); - unset($_SERVER['SHELL_VERBOSITY']); - } else { - if (\function_exists('putenv')) { - @putenv('SHELL_VERBOSITY='.$prevShellVerbosity); - } - $_ENV['SHELL_VERBOSITY'] = $prevShellVerbosity; - $_SERVER['SHELL_VERBOSITY'] = $prevShellVerbosity; - } - } - } -} diff --git a/vendor/symfony/console/Tester/CommandCompletionTester.php b/vendor/symfony/console/Tester/CommandCompletionTester.php deleted file mode 100644 index a90fe52e..00000000 --- a/vendor/symfony/console/Tester/CommandCompletionTester.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Tester; - -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Completion\CompletionInput; -use Symfony\Component\Console\Completion\CompletionSuggestions; - -/** - * Eases the testing of command completion. - * - * @author Jérôme Tamarelle - */ -class CommandCompletionTester -{ - private Command $command; - - public function __construct(Command $command) - { - $this->command = $command; - } - - /** - * Create completion suggestions from input tokens. - */ - public function complete(array $input): array - { - $currentIndex = \count($input); - if ('' === end($input)) { - array_pop($input); - } - array_unshift($input, $this->command->getName()); - - $completionInput = CompletionInput::fromTokens($input, $currentIndex); - $completionInput->bind($this->command->getDefinition()); - $suggestions = new CompletionSuggestions(); - - $this->command->complete($completionInput, $suggestions); - - $options = []; - foreach ($suggestions->getOptionSuggestions() as $option) { - $options[] = '--'.$option->getName(); - } - - return array_map('strval', array_merge($options, $suggestions->getValueSuggestions())); - } -} diff --git a/vendor/symfony/console/Tester/CommandTester.php b/vendor/symfony/console/Tester/CommandTester.php deleted file mode 100644 index 2ff813b7..00000000 --- a/vendor/symfony/console/Tester/CommandTester.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Tester; - -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\ArrayInput; - -/** - * Eases the testing of console commands. - * - * @author Fabien Potencier - * @author Robin Chalas - */ -class CommandTester -{ - use TesterTrait; - - private Command $command; - - public function __construct(Command $command) - { - $this->command = $command; - } - - /** - * Executes the command. - * - * Available execution options: - * - * * interactive: Sets the input interactive flag - * * decorated: Sets the output decorated flag - * * verbosity: Sets the output verbosity flag - * * capture_stderr_separately: Make output of stdOut and stdErr separately available - * - * @param array $input An array of command arguments and options - * @param array $options An array of execution options - * - * @return int The command exit code - */ - public function execute(array $input, array $options = []): int - { - // set the command name automatically if the application requires - // this argument and no command name was passed - if (!isset($input['command']) - && (null !== $application = $this->command->getApplication()) - && $application->getDefinition()->hasArgument('command') - ) { - $input = array_merge(['command' => $this->command->getName()], $input); - } - - $this->input = new ArrayInput($input); - // Use an in-memory input stream even if no inputs are set so that QuestionHelper::ask() does not rely on the blocking STDIN. - $this->input->setStream(self::createStream($this->inputs)); - - if (isset($options['interactive'])) { - $this->input->setInteractive($options['interactive']); - } - - if (!isset($options['decorated'])) { - $options['decorated'] = false; - } - - $this->initOutput($options); - - return $this->statusCode = $this->command->run($this->input, $this->output); - } -} diff --git a/vendor/symfony/console/Tester/Constraint/CommandIsSuccessful.php b/vendor/symfony/console/Tester/Constraint/CommandIsSuccessful.php deleted file mode 100644 index 09c6194b..00000000 --- a/vendor/symfony/console/Tester/Constraint/CommandIsSuccessful.php +++ /dev/null @@ -1,43 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Tester\Constraint; - -use PHPUnit\Framework\Constraint\Constraint; -use Symfony\Component\Console\Command\Command; - -final class CommandIsSuccessful extends Constraint -{ - public function toString(): string - { - return 'is successful'; - } - - protected function matches($other): bool - { - return Command::SUCCESS === $other; - } - - protected function failureDescription($other): string - { - return 'the command '.$this->toString(); - } - - protected function additionalFailureDescription($other): string - { - $mapping = [ - Command::FAILURE => 'Command failed.', - Command::INVALID => 'Command was invalid.', - ]; - - return $mapping[$other] ?? sprintf('Command returned exit status %d.', $other); - } -} diff --git a/vendor/symfony/console/Tester/TesterTrait.php b/vendor/symfony/console/Tester/TesterTrait.php deleted file mode 100644 index 1ab7a70a..00000000 --- a/vendor/symfony/console/Tester/TesterTrait.php +++ /dev/null @@ -1,178 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Tester; - -use PHPUnit\Framework\Assert; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\ConsoleOutput; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Output\StreamOutput; -use Symfony\Component\Console\Tester\Constraint\CommandIsSuccessful; - -/** - * @author Amrouche Hamza - */ -trait TesterTrait -{ - private StreamOutput $output; - private array $inputs = []; - private bool $captureStreamsIndependently = false; - private InputInterface $input; - private int $statusCode; - - /** - * Gets the display returned by the last execution of the command or application. - * - * @throws \RuntimeException If it's called before the execute method - */ - public function getDisplay(bool $normalize = false): string - { - if (!isset($this->output)) { - throw new \RuntimeException('Output not initialized, did you execute the command before requesting the display?'); - } - - rewind($this->output->getStream()); - - $display = stream_get_contents($this->output->getStream()); - - if ($normalize) { - $display = str_replace(\PHP_EOL, "\n", $display); - } - - return $display; - } - - /** - * Gets the output written to STDERR by the application. - * - * @param bool $normalize Whether to normalize end of lines to \n or not - */ - public function getErrorOutput(bool $normalize = false): string - { - if (!$this->captureStreamsIndependently) { - throw new \LogicException('The error output is not available when the tester is run without "capture_stderr_separately" option set.'); - } - - rewind($this->output->getErrorOutput()->getStream()); - - $display = stream_get_contents($this->output->getErrorOutput()->getStream()); - - if ($normalize) { - $display = str_replace(\PHP_EOL, "\n", $display); - } - - return $display; - } - - /** - * Gets the input instance used by the last execution of the command or application. - */ - public function getInput(): InputInterface - { - return $this->input; - } - - /** - * Gets the output instance used by the last execution of the command or application. - */ - public function getOutput(): OutputInterface - { - return $this->output; - } - - /** - * Gets the status code returned by the last execution of the command or application. - * - * @throws \RuntimeException If it's called before the execute method - */ - public function getStatusCode(): int - { - return $this->statusCode ?? throw new \RuntimeException('Status code not initialized, did you execute the command before requesting the status code?'); - } - - public function assertCommandIsSuccessful(string $message = ''): void - { - Assert::assertThat($this->statusCode, new CommandIsSuccessful(), $message); - } - - /** - * Sets the user inputs. - * - * @param array $inputs An array of strings representing each input - * passed to the command input stream - * - * @return $this - */ - public function setInputs(array $inputs): static - { - $this->inputs = $inputs; - - return $this; - } - - /** - * Initializes the output property. - * - * Available options: - * - * * decorated: Sets the output decorated flag - * * verbosity: Sets the output verbosity flag - * * capture_stderr_separately: Make output of stdOut and stdErr separately available - */ - private function initOutput(array $options): void - { - $this->captureStreamsIndependently = $options['capture_stderr_separately'] ?? false; - if (!$this->captureStreamsIndependently) { - $this->output = new StreamOutput(fopen('php://memory', 'w', false)); - if (isset($options['decorated'])) { - $this->output->setDecorated($options['decorated']); - } - if (isset($options['verbosity'])) { - $this->output->setVerbosity($options['verbosity']); - } - } else { - $this->output = new ConsoleOutput( - $options['verbosity'] ?? ConsoleOutput::VERBOSITY_NORMAL, - $options['decorated'] ?? null - ); - - $errorOutput = new StreamOutput(fopen('php://memory', 'w', false)); - $errorOutput->setFormatter($this->output->getFormatter()); - $errorOutput->setVerbosity($this->output->getVerbosity()); - $errorOutput->setDecorated($this->output->isDecorated()); - - $reflectedOutput = new \ReflectionObject($this->output); - $strErrProperty = $reflectedOutput->getProperty('stderr'); - $strErrProperty->setValue($this->output, $errorOutput); - - $reflectedParent = $reflectedOutput->getParentClass(); - $streamProperty = $reflectedParent->getProperty('stream'); - $streamProperty->setValue($this->output, fopen('php://memory', 'w', false)); - } - } - - /** - * @return resource - */ - private static function createStream(array $inputs) - { - $stream = fopen('php://memory', 'r+', false); - - foreach ($inputs as $input) { - fwrite($stream, $input.\PHP_EOL); - } - - rewind($stream); - - return $stream; - } -} diff --git a/vendor/symfony/console/composer.json b/vendor/symfony/console/composer.json deleted file mode 100644 index 1610f734..00000000 --- a/vendor/symfony/console/composer.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "symfony/console", - "type": "library", - "description": "Eases the creation of beautiful and testable command line interfaces", - "keywords": ["console", "cli", "command-line", "terminal"], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0|^7.0" - }, - "require-dev": { - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/process": "^5.4|^6.0|^7.0", - "symfony/stopwatch": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0", - "psr/log": "^1|^2|^3" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "autoload": { - "psr-4": { "Symfony\\Component\\Console\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "minimum-stability": "dev" -} diff --git a/vendor/symfony/css-selector/CHANGELOG.md b/vendor/symfony/css-selector/CHANGELOG.md deleted file mode 100644 index c035d6b3..00000000 --- a/vendor/symfony/css-selector/CHANGELOG.md +++ /dev/null @@ -1,23 +0,0 @@ -CHANGELOG -========= - -6.3 ------ - - * Add support for `:scope` - -4.4.0 ------ - - * Added support for `*:only-of-type` - -2.8.0 ------ - - * Added the `CssSelectorConverter` class as a non-static API for the component. - * Deprecated the `CssSelector` static API of the component. - -2.1.0 ------ - - * none diff --git a/vendor/symfony/css-selector/CssSelectorConverter.php b/vendor/symfony/css-selector/CssSelectorConverter.php deleted file mode 100644 index 7120a295..00000000 --- a/vendor/symfony/css-selector/CssSelectorConverter.php +++ /dev/null @@ -1,67 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector; - -use Symfony\Component\CssSelector\Parser\Shortcut\ClassParser; -use Symfony\Component\CssSelector\Parser\Shortcut\ElementParser; -use Symfony\Component\CssSelector\Parser\Shortcut\EmptyStringParser; -use Symfony\Component\CssSelector\Parser\Shortcut\HashParser; -use Symfony\Component\CssSelector\XPath\Extension\HtmlExtension; -use Symfony\Component\CssSelector\XPath\Translator; - -/** - * CssSelectorConverter is the main entry point of the component and can convert CSS - * selectors to XPath expressions. - * - * @author Christophe Coevoet - */ -class CssSelectorConverter -{ - private Translator $translator; - private array $cache; - - private static array $xmlCache = []; - private static array $htmlCache = []; - - /** - * @param bool $html Whether HTML support should be enabled. Disable it for XML documents - */ - public function __construct(bool $html = true) - { - $this->translator = new Translator(); - - if ($html) { - $this->translator->registerExtension(new HtmlExtension($this->translator)); - $this->cache = &self::$htmlCache; - } else { - $this->cache = &self::$xmlCache; - } - - $this->translator - ->registerParserShortcut(new EmptyStringParser()) - ->registerParserShortcut(new ElementParser()) - ->registerParserShortcut(new ClassParser()) - ->registerParserShortcut(new HashParser()) - ; - } - - /** - * Translates a CSS expression to its XPath equivalent. - * - * Optionally, a prefix can be added to the resulting XPath - * expression with the $prefix parameter. - */ - public function toXPath(string $cssExpr, string $prefix = 'descendant-or-self::'): string - { - return $this->cache[$prefix][$cssExpr] ??= $this->translator->cssToXPath($cssExpr, $prefix); - } -} diff --git a/vendor/symfony/css-selector/Exception/ExceptionInterface.php b/vendor/symfony/css-selector/Exception/ExceptionInterface.php deleted file mode 100644 index 9e259006..00000000 --- a/vendor/symfony/css-selector/Exception/ExceptionInterface.php +++ /dev/null @@ -1,24 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Exception; - -/** - * Interface for exceptions. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - */ -interface ExceptionInterface extends \Throwable -{ -} diff --git a/vendor/symfony/css-selector/Exception/ExpressionErrorException.php b/vendor/symfony/css-selector/Exception/ExpressionErrorException.php deleted file mode 100644 index fd5deeab..00000000 --- a/vendor/symfony/css-selector/Exception/ExpressionErrorException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Exception; - -/** - * ParseException is thrown when a CSS selector syntax is not valid. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - */ -class ExpressionErrorException extends ParseException -{ -} diff --git a/vendor/symfony/css-selector/Exception/InternalErrorException.php b/vendor/symfony/css-selector/Exception/InternalErrorException.php deleted file mode 100644 index e60e5ed0..00000000 --- a/vendor/symfony/css-selector/Exception/InternalErrorException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Exception; - -/** - * ParseException is thrown when a CSS selector syntax is not valid. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - */ -class InternalErrorException extends ParseException -{ -} diff --git a/vendor/symfony/css-selector/Exception/ParseException.php b/vendor/symfony/css-selector/Exception/ParseException.php deleted file mode 100644 index 3b0b0ee8..00000000 --- a/vendor/symfony/css-selector/Exception/ParseException.php +++ /dev/null @@ -1,24 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Exception; - -/** - * ParseException is thrown when a CSS selector syntax is not valid. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Fabien Potencier - */ -class ParseException extends \Exception implements ExceptionInterface -{ -} diff --git a/vendor/symfony/css-selector/Exception/SyntaxErrorException.php b/vendor/symfony/css-selector/Exception/SyntaxErrorException.php deleted file mode 100644 index 5a9d8078..00000000 --- a/vendor/symfony/css-selector/Exception/SyntaxErrorException.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Exception; - -use Symfony\Component\CssSelector\Parser\Token; - -/** - * ParseException is thrown when a CSS selector syntax is not valid. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - */ -class SyntaxErrorException extends ParseException -{ - public static function unexpectedToken(string $expectedValue, Token $foundToken): self - { - return new self(sprintf('Expected %s, but %s found.', $expectedValue, $foundToken)); - } - - public static function pseudoElementFound(string $pseudoElement, string $unexpectedLocation): self - { - return new self(sprintf('Unexpected pseudo-element "::%s" found %s.', $pseudoElement, $unexpectedLocation)); - } - - public static function unclosedString(int $position): self - { - return new self(sprintf('Unclosed/invalid string at %s.', $position)); - } - - public static function nestedNot(): self - { - return new self('Got nested ::not().'); - } - - public static function notAtTheStartOfASelector(string $pseudoElement): self - { - return new self(sprintf('Got immediate child pseudo-element ":%s" not at the start of a selector', $pseudoElement)); - } - - public static function stringAsFunctionArgument(): self - { - return new self('String not allowed as function argument.'); - } -} diff --git a/vendor/symfony/css-selector/LICENSE b/vendor/symfony/css-selector/LICENSE deleted file mode 100644 index 0138f8f0..00000000 --- a/vendor/symfony/css-selector/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2004-present Fabien Potencier - -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/vendor/symfony/css-selector/Node/AbstractNode.php b/vendor/symfony/css-selector/Node/AbstractNode.php deleted file mode 100644 index d99e80a8..00000000 --- a/vendor/symfony/css-selector/Node/AbstractNode.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Abstract base node class. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -abstract class AbstractNode implements NodeInterface -{ - private string $nodeName; - - public function getNodeName(): string - { - return $this->nodeName ??= preg_replace('~.*\\\\([^\\\\]+)Node$~', '$1', static::class); - } -} diff --git a/vendor/symfony/css-selector/Node/AttributeNode.php b/vendor/symfony/css-selector/Node/AttributeNode.php deleted file mode 100644 index ba4df310..00000000 --- a/vendor/symfony/css-selector/Node/AttributeNode.php +++ /dev/null @@ -1,79 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a "[| ]" node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class AttributeNode extends AbstractNode -{ - private NodeInterface $selector; - private ?string $namespace; - private string $attribute; - private string $operator; - private ?string $value; - - public function __construct(NodeInterface $selector, ?string $namespace, string $attribute, string $operator, ?string $value) - { - $this->selector = $selector; - $this->namespace = $namespace; - $this->attribute = $attribute; - $this->operator = $operator; - $this->value = $value; - } - - public function getSelector(): NodeInterface - { - return $this->selector; - } - - public function getNamespace(): ?string - { - return $this->namespace; - } - - public function getAttribute(): string - { - return $this->attribute; - } - - public function getOperator(): string - { - return $this->operator; - } - - public function getValue(): ?string - { - return $this->value; - } - - public function getSpecificity(): Specificity - { - return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0)); - } - - public function __toString(): string - { - $attribute = $this->namespace ? $this->namespace.'|'.$this->attribute : $this->attribute; - - return 'exists' === $this->operator - ? sprintf('%s[%s[%s]]', $this->getNodeName(), $this->selector, $attribute) - : sprintf("%s[%s[%s %s '%s']]", $this->getNodeName(), $this->selector, $attribute, $this->operator, $this->value); - } -} diff --git a/vendor/symfony/css-selector/Node/ClassNode.php b/vendor/symfony/css-selector/Node/ClassNode.php deleted file mode 100644 index 71744587..00000000 --- a/vendor/symfony/css-selector/Node/ClassNode.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a "." node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class ClassNode extends AbstractNode -{ - private NodeInterface $selector; - private string $name; - - public function __construct(NodeInterface $selector, string $name) - { - $this->selector = $selector; - $this->name = $name; - } - - public function getSelector(): NodeInterface - { - return $this->selector; - } - - public function getName(): string - { - return $this->name; - } - - public function getSpecificity(): Specificity - { - return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0)); - } - - public function __toString(): string - { - return sprintf('%s[%s.%s]', $this->getNodeName(), $this->selector, $this->name); - } -} diff --git a/vendor/symfony/css-selector/Node/CombinedSelectorNode.php b/vendor/symfony/css-selector/Node/CombinedSelectorNode.php deleted file mode 100644 index 19fecb70..00000000 --- a/vendor/symfony/css-selector/Node/CombinedSelectorNode.php +++ /dev/null @@ -1,63 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a combined node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class CombinedSelectorNode extends AbstractNode -{ - private NodeInterface $selector; - private string $combinator; - private NodeInterface $subSelector; - - public function __construct(NodeInterface $selector, string $combinator, NodeInterface $subSelector) - { - $this->selector = $selector; - $this->combinator = $combinator; - $this->subSelector = $subSelector; - } - - public function getSelector(): NodeInterface - { - return $this->selector; - } - - public function getCombinator(): string - { - return $this->combinator; - } - - public function getSubSelector(): NodeInterface - { - return $this->subSelector; - } - - public function getSpecificity(): Specificity - { - return $this->selector->getSpecificity()->plus($this->subSelector->getSpecificity()); - } - - public function __toString(): string - { - $combinator = ' ' === $this->combinator ? '' : $this->combinator; - - return sprintf('%s[%s %s %s]', $this->getNodeName(), $this->selector, $combinator, $this->subSelector); - } -} diff --git a/vendor/symfony/css-selector/Node/ElementNode.php b/vendor/symfony/css-selector/Node/ElementNode.php deleted file mode 100644 index 39f4d9cc..00000000 --- a/vendor/symfony/css-selector/Node/ElementNode.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a "|" node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class ElementNode extends AbstractNode -{ - private ?string $namespace; - private ?string $element; - - public function __construct(string $namespace = null, string $element = null) - { - $this->namespace = $namespace; - $this->element = $element; - } - - public function getNamespace(): ?string - { - return $this->namespace; - } - - public function getElement(): ?string - { - return $this->element; - } - - public function getSpecificity(): Specificity - { - return new Specificity(0, 0, $this->element ? 1 : 0); - } - - public function __toString(): string - { - $element = $this->element ?: '*'; - - return sprintf('%s[%s]', $this->getNodeName(), $this->namespace ? $this->namespace.'|'.$element : $element); - } -} diff --git a/vendor/symfony/css-selector/Node/FunctionNode.php b/vendor/symfony/css-selector/Node/FunctionNode.php deleted file mode 100644 index 938a82b1..00000000 --- a/vendor/symfony/css-selector/Node/FunctionNode.php +++ /dev/null @@ -1,71 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -use Symfony\Component\CssSelector\Parser\Token; - -/** - * Represents a ":()" node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class FunctionNode extends AbstractNode -{ - private NodeInterface $selector; - private string $name; - private array $arguments; - - /** - * @param Token[] $arguments - */ - public function __construct(NodeInterface $selector, string $name, array $arguments = []) - { - $this->selector = $selector; - $this->name = strtolower($name); - $this->arguments = $arguments; - } - - public function getSelector(): NodeInterface - { - return $this->selector; - } - - public function getName(): string - { - return $this->name; - } - - /** - * @return Token[] - */ - public function getArguments(): array - { - return $this->arguments; - } - - public function getSpecificity(): Specificity - { - return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0)); - } - - public function __toString(): string - { - $arguments = implode(', ', array_map(fn (Token $token) => "'".$token->getValue()."'", $this->arguments)); - - return sprintf('%s[%s:%s(%s)]', $this->getNodeName(), $this->selector, $this->name, $arguments ? '['.$arguments.']' : ''); - } -} diff --git a/vendor/symfony/css-selector/Node/HashNode.php b/vendor/symfony/css-selector/Node/HashNode.php deleted file mode 100644 index 3af8e847..00000000 --- a/vendor/symfony/css-selector/Node/HashNode.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a "#" node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class HashNode extends AbstractNode -{ - private NodeInterface $selector; - private string $id; - - public function __construct(NodeInterface $selector, string $id) - { - $this->selector = $selector; - $this->id = $id; - } - - public function getSelector(): NodeInterface - { - return $this->selector; - } - - public function getId(): string - { - return $this->id; - } - - public function getSpecificity(): Specificity - { - return $this->selector->getSpecificity()->plus(new Specificity(1, 0, 0)); - } - - public function __toString(): string - { - return sprintf('%s[%s#%s]', $this->getNodeName(), $this->selector, $this->id); - } -} diff --git a/vendor/symfony/css-selector/Node/NegationNode.php b/vendor/symfony/css-selector/Node/NegationNode.php deleted file mode 100644 index f8067583..00000000 --- a/vendor/symfony/css-selector/Node/NegationNode.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a ":not()" node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class NegationNode extends AbstractNode -{ - private NodeInterface $selector; - private NodeInterface $subSelector; - - public function __construct(NodeInterface $selector, NodeInterface $subSelector) - { - $this->selector = $selector; - $this->subSelector = $subSelector; - } - - public function getSelector(): NodeInterface - { - return $this->selector; - } - - public function getSubSelector(): NodeInterface - { - return $this->subSelector; - } - - public function getSpecificity(): Specificity - { - return $this->selector->getSpecificity()->plus($this->subSelector->getSpecificity()); - } - - public function __toString(): string - { - return sprintf('%s[%s:not(%s)]', $this->getNodeName(), $this->selector, $this->subSelector); - } -} diff --git a/vendor/symfony/css-selector/Node/NodeInterface.php b/vendor/symfony/css-selector/Node/NodeInterface.php deleted file mode 100644 index 7d541f9c..00000000 --- a/vendor/symfony/css-selector/Node/NodeInterface.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Interface for nodes. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -interface NodeInterface extends \Stringable -{ - public function getNodeName(): string; - - public function getSpecificity(): Specificity; -} diff --git a/vendor/symfony/css-selector/Node/PseudoNode.php b/vendor/symfony/css-selector/Node/PseudoNode.php deleted file mode 100644 index c21cd6e9..00000000 --- a/vendor/symfony/css-selector/Node/PseudoNode.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a ":" node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class PseudoNode extends AbstractNode -{ - private NodeInterface $selector; - private string $identifier; - - public function __construct(NodeInterface $selector, string $identifier) - { - $this->selector = $selector; - $this->identifier = strtolower($identifier); - } - - public function getSelector(): NodeInterface - { - return $this->selector; - } - - public function getIdentifier(): string - { - return $this->identifier; - } - - public function getSpecificity(): Specificity - { - return $this->selector->getSpecificity()->plus(new Specificity(0, 1, 0)); - } - - public function __toString(): string - { - return sprintf('%s[%s:%s]', $this->getNodeName(), $this->selector, $this->identifier); - } -} diff --git a/vendor/symfony/css-selector/Node/SelectorNode.php b/vendor/symfony/css-selector/Node/SelectorNode.php deleted file mode 100644 index 0b09ab5d..00000000 --- a/vendor/symfony/css-selector/Node/SelectorNode.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a "(::|:)" node. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class SelectorNode extends AbstractNode -{ - private NodeInterface $tree; - private ?string $pseudoElement; - - public function __construct(NodeInterface $tree, string $pseudoElement = null) - { - $this->tree = $tree; - $this->pseudoElement = $pseudoElement ? strtolower($pseudoElement) : null; - } - - public function getTree(): NodeInterface - { - return $this->tree; - } - - public function getPseudoElement(): ?string - { - return $this->pseudoElement; - } - - public function getSpecificity(): Specificity - { - return $this->tree->getSpecificity()->plus(new Specificity(0, 0, $this->pseudoElement ? 1 : 0)); - } - - public function __toString(): string - { - return sprintf('%s[%s%s]', $this->getNodeName(), $this->tree, $this->pseudoElement ? '::'.$this->pseudoElement : ''); - } -} diff --git a/vendor/symfony/css-selector/Node/Specificity.php b/vendor/symfony/css-selector/Node/Specificity.php deleted file mode 100644 index bb8e5e34..00000000 --- a/vendor/symfony/css-selector/Node/Specificity.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Node; - -/** - * Represents a node specificity. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @see http://www.w3.org/TR/selectors/#specificity - * - * @author Jean-François Simon - * - * @internal - */ -class Specificity -{ - public const A_FACTOR = 100; - public const B_FACTOR = 10; - public const C_FACTOR = 1; - - private int $a; - private int $b; - private int $c; - - public function __construct(int $a, int $b, int $c) - { - $this->a = $a; - $this->b = $b; - $this->c = $c; - } - - public function plus(self $specificity): self - { - return new self($this->a + $specificity->a, $this->b + $specificity->b, $this->c + $specificity->c); - } - - public function getValue(): int - { - return $this->a * self::A_FACTOR + $this->b * self::B_FACTOR + $this->c * self::C_FACTOR; - } - - /** - * Returns -1 if the object specificity is lower than the argument, - * 0 if they are equal, and 1 if the argument is lower. - */ - public function compareTo(self $specificity): int - { - if ($this->a !== $specificity->a) { - return $this->a > $specificity->a ? 1 : -1; - } - - if ($this->b !== $specificity->b) { - return $this->b > $specificity->b ? 1 : -1; - } - - if ($this->c !== $specificity->c) { - return $this->c > $specificity->c ? 1 : -1; - } - - return 0; - } -} diff --git a/vendor/symfony/css-selector/Parser/Handler/CommentHandler.php b/vendor/symfony/css-selector/Parser/Handler/CommentHandler.php deleted file mode 100644 index cc01d1e6..00000000 --- a/vendor/symfony/css-selector/Parser/Handler/CommentHandler.php +++ /dev/null @@ -1,45 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Handler; - -use Symfony\Component\CssSelector\Parser\Reader; -use Symfony\Component\CssSelector\Parser\TokenStream; - -/** - * CSS selector comment handler. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class CommentHandler implements HandlerInterface -{ - public function handle(Reader $reader, TokenStream $stream): bool - { - if ('/*' !== $reader->getSubstring(2)) { - return false; - } - - $offset = $reader->getOffset('*/'); - - if (false === $offset) { - $reader->moveToEnd(); - } else { - $reader->moveForward($offset + 2); - } - - return true; - } -} diff --git a/vendor/symfony/css-selector/Parser/Handler/HandlerInterface.php b/vendor/symfony/css-selector/Parser/Handler/HandlerInterface.php deleted file mode 100644 index 9ec714d5..00000000 --- a/vendor/symfony/css-selector/Parser/Handler/HandlerInterface.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Handler; - -use Symfony\Component\CssSelector\Parser\Reader; -use Symfony\Component\CssSelector\Parser\TokenStream; - -/** - * CSS selector handler interface. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -interface HandlerInterface -{ - public function handle(Reader $reader, TokenStream $stream): bool; -} diff --git a/vendor/symfony/css-selector/Parser/Handler/HashHandler.php b/vendor/symfony/css-selector/Parser/Handler/HashHandler.php deleted file mode 100644 index b29042f5..00000000 --- a/vendor/symfony/css-selector/Parser/Handler/HashHandler.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Handler; - -use Symfony\Component\CssSelector\Parser\Reader; -use Symfony\Component\CssSelector\Parser\Token; -use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerEscaping; -use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerPatterns; -use Symfony\Component\CssSelector\Parser\TokenStream; - -/** - * CSS selector comment handler. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class HashHandler implements HandlerInterface -{ - private TokenizerPatterns $patterns; - private TokenizerEscaping $escaping; - - public function __construct(TokenizerPatterns $patterns, TokenizerEscaping $escaping) - { - $this->patterns = $patterns; - $this->escaping = $escaping; - } - - public function handle(Reader $reader, TokenStream $stream): bool - { - $match = $reader->findPattern($this->patterns->getHashPattern()); - - if (!$match) { - return false; - } - - $value = $this->escaping->escapeUnicode($match[1]); - $stream->push(new Token(Token::TYPE_HASH, $value, $reader->getPosition())); - $reader->moveForward(\strlen($match[0])); - - return true; - } -} diff --git a/vendor/symfony/css-selector/Parser/Handler/IdentifierHandler.php b/vendor/symfony/css-selector/Parser/Handler/IdentifierHandler.php deleted file mode 100644 index 25c0761e..00000000 --- a/vendor/symfony/css-selector/Parser/Handler/IdentifierHandler.php +++ /dev/null @@ -1,55 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Handler; - -use Symfony\Component\CssSelector\Parser\Reader; -use Symfony\Component\CssSelector\Parser\Token; -use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerEscaping; -use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerPatterns; -use Symfony\Component\CssSelector\Parser\TokenStream; - -/** - * CSS selector comment handler. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class IdentifierHandler implements HandlerInterface -{ - private TokenizerPatterns $patterns; - private TokenizerEscaping $escaping; - - public function __construct(TokenizerPatterns $patterns, TokenizerEscaping $escaping) - { - $this->patterns = $patterns; - $this->escaping = $escaping; - } - - public function handle(Reader $reader, TokenStream $stream): bool - { - $match = $reader->findPattern($this->patterns->getIdentifierPattern()); - - if (!$match) { - return false; - } - - $value = $this->escaping->escapeUnicode($match[0]); - $stream->push(new Token(Token::TYPE_IDENTIFIER, $value, $reader->getPosition())); - $reader->moveForward(\strlen($match[0])); - - return true; - } -} diff --git a/vendor/symfony/css-selector/Parser/Handler/NumberHandler.php b/vendor/symfony/css-selector/Parser/Handler/NumberHandler.php deleted file mode 100644 index e3eb7afe..00000000 --- a/vendor/symfony/css-selector/Parser/Handler/NumberHandler.php +++ /dev/null @@ -1,51 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Handler; - -use Symfony\Component\CssSelector\Parser\Reader; -use Symfony\Component\CssSelector\Parser\Token; -use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerPatterns; -use Symfony\Component\CssSelector\Parser\TokenStream; - -/** - * CSS selector comment handler. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class NumberHandler implements HandlerInterface -{ - private TokenizerPatterns $patterns; - - public function __construct(TokenizerPatterns $patterns) - { - $this->patterns = $patterns; - } - - public function handle(Reader $reader, TokenStream $stream): bool - { - $match = $reader->findPattern($this->patterns->getNumberPattern()); - - if (!$match) { - return false; - } - - $stream->push(new Token(Token::TYPE_NUMBER, $match[0], $reader->getPosition())); - $reader->moveForward(\strlen($match[0])); - - return true; - } -} diff --git a/vendor/symfony/css-selector/Parser/Handler/StringHandler.php b/vendor/symfony/css-selector/Parser/Handler/StringHandler.php deleted file mode 100644 index 5fd44df2..00000000 --- a/vendor/symfony/css-selector/Parser/Handler/StringHandler.php +++ /dev/null @@ -1,74 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Handler; - -use Symfony\Component\CssSelector\Exception\InternalErrorException; -use Symfony\Component\CssSelector\Exception\SyntaxErrorException; -use Symfony\Component\CssSelector\Parser\Reader; -use Symfony\Component\CssSelector\Parser\Token; -use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerEscaping; -use Symfony\Component\CssSelector\Parser\Tokenizer\TokenizerPatterns; -use Symfony\Component\CssSelector\Parser\TokenStream; - -/** - * CSS selector comment handler. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class StringHandler implements HandlerInterface -{ - private TokenizerPatterns $patterns; - private TokenizerEscaping $escaping; - - public function __construct(TokenizerPatterns $patterns, TokenizerEscaping $escaping) - { - $this->patterns = $patterns; - $this->escaping = $escaping; - } - - public function handle(Reader $reader, TokenStream $stream): bool - { - $quote = $reader->getSubstring(1); - - if (!\in_array($quote, ["'", '"'])) { - return false; - } - - $reader->moveForward(1); - $match = $reader->findPattern($this->patterns->getQuotedStringPattern($quote)); - - if (!$match) { - throw new InternalErrorException(sprintf('Should have found at least an empty match at %d.', $reader->getPosition())); - } - - // check unclosed strings - if (\strlen($match[0]) === $reader->getRemainingLength()) { - throw SyntaxErrorException::unclosedString($reader->getPosition() - 1); - } - - // check quotes pairs validity - if ($quote !== $reader->getSubstring(1, \strlen($match[0]))) { - throw SyntaxErrorException::unclosedString($reader->getPosition() - 1); - } - - $string = $this->escaping->escapeUnicodeAndNewLine($match[0]); - $stream->push(new Token(Token::TYPE_STRING, $string, $reader->getPosition())); - $reader->moveForward(\strlen($match[0]) + 1); - - return true; - } -} diff --git a/vendor/symfony/css-selector/Parser/Handler/WhitespaceHandler.php b/vendor/symfony/css-selector/Parser/Handler/WhitespaceHandler.php deleted file mode 100644 index eb41c3f7..00000000 --- a/vendor/symfony/css-selector/Parser/Handler/WhitespaceHandler.php +++ /dev/null @@ -1,43 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Handler; - -use Symfony\Component\CssSelector\Parser\Reader; -use Symfony\Component\CssSelector\Parser\Token; -use Symfony\Component\CssSelector\Parser\TokenStream; - -/** - * CSS selector whitespace handler. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class WhitespaceHandler implements HandlerInterface -{ - public function handle(Reader $reader, TokenStream $stream): bool - { - $match = $reader->findPattern('~^[ \t\r\n\f]+~'); - - if (false === $match) { - return false; - } - - $stream->push(new Token(Token::TYPE_WHITESPACE, $match[0], $reader->getPosition())); - $reader->moveForward(\strlen($match[0])); - - return true; - } -} diff --git a/vendor/symfony/css-selector/Parser/Parser.php b/vendor/symfony/css-selector/Parser/Parser.php deleted file mode 100644 index 5313d343..00000000 --- a/vendor/symfony/css-selector/Parser/Parser.php +++ /dev/null @@ -1,359 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser; - -use Symfony\Component\CssSelector\Exception\SyntaxErrorException; -use Symfony\Component\CssSelector\Node; -use Symfony\Component\CssSelector\Parser\Tokenizer\Tokenizer; - -/** - * CSS selector parser. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/scrapy/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class Parser implements ParserInterface -{ - private Tokenizer $tokenizer; - - public function __construct(Tokenizer $tokenizer = null) - { - $this->tokenizer = $tokenizer ?? new Tokenizer(); - } - - public function parse(string $source): array - { - $reader = new Reader($source); - $stream = $this->tokenizer->tokenize($reader); - - return $this->parseSelectorList($stream); - } - - /** - * Parses the arguments for ":nth-child()" and friends. - * - * @param Token[] $tokens - * - * @throws SyntaxErrorException - */ - public static function parseSeries(array $tokens): array - { - foreach ($tokens as $token) { - if ($token->isString()) { - throw SyntaxErrorException::stringAsFunctionArgument(); - } - } - - $joined = trim(implode('', array_map(fn (Token $token) => $token->getValue(), $tokens))); - - $int = function ($string) { - if (!is_numeric($string)) { - throw SyntaxErrorException::stringAsFunctionArgument(); - } - - return (int) $string; - }; - - switch (true) { - case 'odd' === $joined: - return [2, 1]; - case 'even' === $joined: - return [2, 0]; - case 'n' === $joined: - return [1, 0]; - case !str_contains($joined, 'n'): - return [0, $int($joined)]; - } - - $split = explode('n', $joined); - $first = $split[0] ?? null; - - return [ - $first ? ('-' === $first || '+' === $first ? $int($first.'1') : $int($first)) : 1, - isset($split[1]) && $split[1] ? $int($split[1]) : 0, - ]; - } - - private function parseSelectorList(TokenStream $stream): array - { - $stream->skipWhitespace(); - $selectors = []; - - while (true) { - $selectors[] = $this->parserSelectorNode($stream); - - if ($stream->getPeek()->isDelimiter([','])) { - $stream->getNext(); - $stream->skipWhitespace(); - } else { - break; - } - } - - return $selectors; - } - - private function parserSelectorNode(TokenStream $stream): Node\SelectorNode - { - [$result, $pseudoElement] = $this->parseSimpleSelector($stream); - - while (true) { - $stream->skipWhitespace(); - $peek = $stream->getPeek(); - - if ($peek->isFileEnd() || $peek->isDelimiter([','])) { - break; - } - - if (null !== $pseudoElement) { - throw SyntaxErrorException::pseudoElementFound($pseudoElement, 'not at the end of a selector'); - } - - if ($peek->isDelimiter(['+', '>', '~'])) { - $combinator = $stream->getNext()->getValue(); - $stream->skipWhitespace(); - } else { - $combinator = ' '; - } - - [$nextSelector, $pseudoElement] = $this->parseSimpleSelector($stream); - $result = new Node\CombinedSelectorNode($result, $combinator, $nextSelector); - } - - return new Node\SelectorNode($result, $pseudoElement); - } - - /** - * Parses next simple node (hash, class, pseudo, negation). - * - * @throws SyntaxErrorException - */ - private function parseSimpleSelector(TokenStream $stream, bool $insideNegation = false): array - { - $stream->skipWhitespace(); - - $selectorStart = \count($stream->getUsed()); - $result = $this->parseElementNode($stream); - $pseudoElement = null; - - while (true) { - $peek = $stream->getPeek(); - if ($peek->isWhitespace() - || $peek->isFileEnd() - || $peek->isDelimiter([',', '+', '>', '~']) - || ($insideNegation && $peek->isDelimiter([')'])) - ) { - break; - } - - if (null !== $pseudoElement) { - throw SyntaxErrorException::pseudoElementFound($pseudoElement, 'not at the end of a selector'); - } - - if ($peek->isHash()) { - $result = new Node\HashNode($result, $stream->getNext()->getValue()); - } elseif ($peek->isDelimiter(['.'])) { - $stream->getNext(); - $result = new Node\ClassNode($result, $stream->getNextIdentifier()); - } elseif ($peek->isDelimiter(['['])) { - $stream->getNext(); - $result = $this->parseAttributeNode($result, $stream); - } elseif ($peek->isDelimiter([':'])) { - $stream->getNext(); - - if ($stream->getPeek()->isDelimiter([':'])) { - $stream->getNext(); - $pseudoElement = $stream->getNextIdentifier(); - - continue; - } - - $identifier = $stream->getNextIdentifier(); - if (\in_array(strtolower($identifier), ['first-line', 'first-letter', 'before', 'after'])) { - // Special case: CSS 2.1 pseudo-elements can have a single ':'. - // Any new pseudo-element must have two. - $pseudoElement = $identifier; - - continue; - } - - if (!$stream->getPeek()->isDelimiter(['('])) { - $result = new Node\PseudoNode($result, $identifier); - if ('Pseudo[Element[*]:scope]' === $result->__toString()) { - $used = \count($stream->getUsed()); - if (!(2 === $used - || 3 === $used && $stream->getUsed()[0]->isWhiteSpace() - || $used >= 3 && $stream->getUsed()[$used - 3]->isDelimiter([',']) - || $used >= 4 - && $stream->getUsed()[$used - 3]->isWhiteSpace() - && $stream->getUsed()[$used - 4]->isDelimiter([',']) - )) { - throw SyntaxErrorException::notAtTheStartOfASelector('scope'); - } - } - continue; - } - - $stream->getNext(); - $stream->skipWhitespace(); - - if ('not' === strtolower($identifier)) { - if ($insideNegation) { - throw SyntaxErrorException::nestedNot(); - } - - [$argument, $argumentPseudoElement] = $this->parseSimpleSelector($stream, true); - $next = $stream->getNext(); - - if (null !== $argumentPseudoElement) { - throw SyntaxErrorException::pseudoElementFound($argumentPseudoElement, 'inside ::not()'); - } - - if (!$next->isDelimiter([')'])) { - throw SyntaxErrorException::unexpectedToken('")"', $next); - } - - $result = new Node\NegationNode($result, $argument); - } else { - $arguments = []; - $next = null; - - while (true) { - $stream->skipWhitespace(); - $next = $stream->getNext(); - - if ($next->isIdentifier() - || $next->isString() - || $next->isNumber() - || $next->isDelimiter(['+', '-']) - ) { - $arguments[] = $next; - } elseif ($next->isDelimiter([')'])) { - break; - } else { - throw SyntaxErrorException::unexpectedToken('an argument', $next); - } - } - - if (!$arguments) { - throw SyntaxErrorException::unexpectedToken('at least one argument', $next); - } - - $result = new Node\FunctionNode($result, $identifier, $arguments); - } - } else { - throw SyntaxErrorException::unexpectedToken('selector', $peek); - } - } - - if (\count($stream->getUsed()) === $selectorStart) { - throw SyntaxErrorException::unexpectedToken('selector', $stream->getPeek()); - } - - return [$result, $pseudoElement]; - } - - private function parseElementNode(TokenStream $stream): Node\ElementNode - { - $peek = $stream->getPeek(); - - if ($peek->isIdentifier() || $peek->isDelimiter(['*'])) { - if ($peek->isIdentifier()) { - $namespace = $stream->getNext()->getValue(); - } else { - $stream->getNext(); - $namespace = null; - } - - if ($stream->getPeek()->isDelimiter(['|'])) { - $stream->getNext(); - $element = $stream->getNextIdentifierOrStar(); - } else { - $element = $namespace; - $namespace = null; - } - } else { - $element = $namespace = null; - } - - return new Node\ElementNode($namespace, $element); - } - - private function parseAttributeNode(Node\NodeInterface $selector, TokenStream $stream): Node\AttributeNode - { - $stream->skipWhitespace(); - $attribute = $stream->getNextIdentifierOrStar(); - - if (null === $attribute && !$stream->getPeek()->isDelimiter(['|'])) { - throw SyntaxErrorException::unexpectedToken('"|"', $stream->getPeek()); - } - - if ($stream->getPeek()->isDelimiter(['|'])) { - $stream->getNext(); - - if ($stream->getPeek()->isDelimiter(['='])) { - $namespace = null; - $stream->getNext(); - $operator = '|='; - } else { - $namespace = $attribute; - $attribute = $stream->getNextIdentifier(); - $operator = null; - } - } else { - $namespace = $operator = null; - } - - if (null === $operator) { - $stream->skipWhitespace(); - $next = $stream->getNext(); - - if ($next->isDelimiter([']'])) { - return new Node\AttributeNode($selector, $namespace, $attribute, 'exists', null); - } elseif ($next->isDelimiter(['='])) { - $operator = '='; - } elseif ($next->isDelimiter(['^', '$', '*', '~', '|', '!']) - && $stream->getPeek()->isDelimiter(['=']) - ) { - $operator = $next->getValue().'='; - $stream->getNext(); - } else { - throw SyntaxErrorException::unexpectedToken('operator', $next); - } - } - - $stream->skipWhitespace(); - $value = $stream->getNext(); - - if ($value->isNumber()) { - // if the value is a number, it's casted into a string - $value = new Token(Token::TYPE_STRING, (string) $value->getValue(), $value->getPosition()); - } - - if (!($value->isIdentifier() || $value->isString())) { - throw SyntaxErrorException::unexpectedToken('string or identifier', $value); - } - - $stream->skipWhitespace(); - $next = $stream->getNext(); - - if (!$next->isDelimiter([']'])) { - throw SyntaxErrorException::unexpectedToken('"]"', $next); - } - - return new Node\AttributeNode($selector, $namespace, $attribute, $operator, $value->getValue()); - } -} diff --git a/vendor/symfony/css-selector/Parser/ParserInterface.php b/vendor/symfony/css-selector/Parser/ParserInterface.php deleted file mode 100644 index 51c3d935..00000000 --- a/vendor/symfony/css-selector/Parser/ParserInterface.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser; - -use Symfony\Component\CssSelector\Node\SelectorNode; - -/** - * CSS selector parser interface. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -interface ParserInterface -{ - /** - * Parses given selector source into an array of tokens. - * - * @return SelectorNode[] - */ - public function parse(string $source): array; -} diff --git a/vendor/symfony/css-selector/Parser/Reader.php b/vendor/symfony/css-selector/Parser/Reader.php deleted file mode 100644 index a280a486..00000000 --- a/vendor/symfony/css-selector/Parser/Reader.php +++ /dev/null @@ -1,83 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser; - -/** - * CSS selector reader. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class Reader -{ - private string $source; - private int $length; - private int $position = 0; - - public function __construct(string $source) - { - $this->source = $source; - $this->length = \strlen($source); - } - - public function isEOF(): bool - { - return $this->position >= $this->length; - } - - public function getPosition(): int - { - return $this->position; - } - - public function getRemainingLength(): int - { - return $this->length - $this->position; - } - - public function getSubstring(int $length, int $offset = 0): string - { - return substr($this->source, $this->position + $offset, $length); - } - - public function getOffset(string $string): int|false - { - $position = strpos($this->source, $string, $this->position); - - return false === $position ? false : $position - $this->position; - } - - public function findPattern(string $pattern): array|false - { - $source = substr($this->source, $this->position); - - if (preg_match($pattern, $source, $matches)) { - return $matches; - } - - return false; - } - - public function moveForward(int $length): void - { - $this->position += $length; - } - - public function moveToEnd(): void - { - $this->position = $this->length; - } -} diff --git a/vendor/symfony/css-selector/Parser/Shortcut/ClassParser.php b/vendor/symfony/css-selector/Parser/Shortcut/ClassParser.php deleted file mode 100644 index f0ce6118..00000000 --- a/vendor/symfony/css-selector/Parser/Shortcut/ClassParser.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Shortcut; - -use Symfony\Component\CssSelector\Node\ClassNode; -use Symfony\Component\CssSelector\Node\ElementNode; -use Symfony\Component\CssSelector\Node\SelectorNode; -use Symfony\Component\CssSelector\Parser\ParserInterface; - -/** - * CSS selector class parser shortcut. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class ClassParser implements ParserInterface -{ - public function parse(string $source): array - { - // Matches an optional namespace, optional element, and required class - // $source = 'test|input.ab6bd_field'; - // $matches = array (size=4) - // 0 => string 'test|input.ab6bd_field' (length=22) - // 1 => string 'test' (length=4) - // 2 => string 'input' (length=5) - // 3 => string 'ab6bd_field' (length=11) - if (preg_match('/^(?:([a-z]++)\|)?+([\w-]++|\*)?+\.([\w-]++)$/i', trim($source), $matches)) { - return [ - new SelectorNode(new ClassNode(new ElementNode($matches[1] ?: null, $matches[2] ?: null), $matches[3])), - ]; - } - - return []; - } -} diff --git a/vendor/symfony/css-selector/Parser/Shortcut/ElementParser.php b/vendor/symfony/css-selector/Parser/Shortcut/ElementParser.php deleted file mode 100644 index a448e4a8..00000000 --- a/vendor/symfony/css-selector/Parser/Shortcut/ElementParser.php +++ /dev/null @@ -1,44 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Shortcut; - -use Symfony\Component\CssSelector\Node\ElementNode; -use Symfony\Component\CssSelector\Node\SelectorNode; -use Symfony\Component\CssSelector\Parser\ParserInterface; - -/** - * CSS selector element parser shortcut. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class ElementParser implements ParserInterface -{ - public function parse(string $source): array - { - // Matches an optional namespace, required element or `*` - // $source = 'testns|testel'; - // $matches = array (size=3) - // 0 => string 'testns|testel' (length=13) - // 1 => string 'testns' (length=6) - // 2 => string 'testel' (length=6) - if (preg_match('/^(?:([a-z]++)\|)?([\w-]++|\*)$/i', trim($source), $matches)) { - return [new SelectorNode(new ElementNode($matches[1] ?: null, $matches[2]))]; - } - - return []; - } -} diff --git a/vendor/symfony/css-selector/Parser/Shortcut/EmptyStringParser.php b/vendor/symfony/css-selector/Parser/Shortcut/EmptyStringParser.php deleted file mode 100644 index a6391912..00000000 --- a/vendor/symfony/css-selector/Parser/Shortcut/EmptyStringParser.php +++ /dev/null @@ -1,43 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Shortcut; - -use Symfony\Component\CssSelector\Node\ElementNode; -use Symfony\Component\CssSelector\Node\SelectorNode; -use Symfony\Component\CssSelector\Parser\ParserInterface; - -/** - * CSS selector class parser shortcut. - * - * This shortcut ensure compatibility with previous version. - * - The parser fails to parse an empty string. - * - In the previous version, an empty string matches each tags. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class EmptyStringParser implements ParserInterface -{ - public function parse(string $source): array - { - // Matches an empty string - if ('' == $source) { - return [new SelectorNode(new ElementNode(null, '*'))]; - } - - return []; - } -} diff --git a/vendor/symfony/css-selector/Parser/Shortcut/HashParser.php b/vendor/symfony/css-selector/Parser/Shortcut/HashParser.php deleted file mode 100644 index 6683126a..00000000 --- a/vendor/symfony/css-selector/Parser/Shortcut/HashParser.php +++ /dev/null @@ -1,48 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Shortcut; - -use Symfony\Component\CssSelector\Node\ElementNode; -use Symfony\Component\CssSelector\Node\HashNode; -use Symfony\Component\CssSelector\Node\SelectorNode; -use Symfony\Component\CssSelector\Parser\ParserInterface; - -/** - * CSS selector hash parser shortcut. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class HashParser implements ParserInterface -{ - public function parse(string $source): array - { - // Matches an optional namespace, optional element, and required id - // $source = 'test|input#ab6bd_field'; - // $matches = array (size=4) - // 0 => string 'test|input#ab6bd_field' (length=22) - // 1 => string 'test' (length=4) - // 2 => string 'input' (length=5) - // 3 => string 'ab6bd_field' (length=11) - if (preg_match('/^(?:([a-z]++)\|)?+([\w-]++|\*)?+#([\w-]++)$/i', trim($source), $matches)) { - return [ - new SelectorNode(new HashNode(new ElementNode($matches[1] ?: null, $matches[2] ?: null), $matches[3])), - ]; - } - - return []; - } -} diff --git a/vendor/symfony/css-selector/Parser/Token.php b/vendor/symfony/css-selector/Parser/Token.php deleted file mode 100644 index b50441a8..00000000 --- a/vendor/symfony/css-selector/Parser/Token.php +++ /dev/null @@ -1,111 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser; - -/** - * CSS selector token. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class Token -{ - public const TYPE_FILE_END = 'eof'; - public const TYPE_DELIMITER = 'delimiter'; - public const TYPE_WHITESPACE = 'whitespace'; - public const TYPE_IDENTIFIER = 'identifier'; - public const TYPE_HASH = 'hash'; - public const TYPE_NUMBER = 'number'; - public const TYPE_STRING = 'string'; - - private ?string $type; - private ?string $value; - private ?int $position; - - public function __construct(?string $type, ?string $value, ?int $position) - { - $this->type = $type; - $this->value = $value; - $this->position = $position; - } - - public function getType(): ?int - { - return $this->type; - } - - public function getValue(): ?string - { - return $this->value; - } - - public function getPosition(): ?int - { - return $this->position; - } - - public function isFileEnd(): bool - { - return self::TYPE_FILE_END === $this->type; - } - - public function isDelimiter(array $values = []): bool - { - if (self::TYPE_DELIMITER !== $this->type) { - return false; - } - - if (!$values) { - return true; - } - - return \in_array($this->value, $values); - } - - public function isWhitespace(): bool - { - return self::TYPE_WHITESPACE === $this->type; - } - - public function isIdentifier(): bool - { - return self::TYPE_IDENTIFIER === $this->type; - } - - public function isHash(): bool - { - return self::TYPE_HASH === $this->type; - } - - public function isNumber(): bool - { - return self::TYPE_NUMBER === $this->type; - } - - public function isString(): bool - { - return self::TYPE_STRING === $this->type; - } - - public function __toString(): string - { - if ($this->value) { - return sprintf('<%s "%s" at %s>', $this->type, $this->value, $this->position); - } - - return sprintf('<%s at %s>', $this->type, $this->position); - } -} diff --git a/vendor/symfony/css-selector/Parser/TokenStream.php b/vendor/symfony/css-selector/Parser/TokenStream.php deleted file mode 100644 index 8b72d5db..00000000 --- a/vendor/symfony/css-selector/Parser/TokenStream.php +++ /dev/null @@ -1,156 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser; - -use Symfony\Component\CssSelector\Exception\InternalErrorException; -use Symfony\Component\CssSelector\Exception\SyntaxErrorException; - -/** - * CSS selector token stream. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class TokenStream -{ - /** - * @var Token[] - */ - private array $tokens = []; - - /** - * @var Token[] - */ - private array $used = []; - - private int $cursor = 0; - private ?Token $peeked; - private bool $peeking = false; - - /** - * Pushes a token. - * - * @return $this - */ - public function push(Token $token): static - { - $this->tokens[] = $token; - - return $this; - } - - /** - * Freezes stream. - * - * @return $this - */ - public function freeze(): static - { - return $this; - } - - /** - * Returns next token. - * - * @throws InternalErrorException If there is no more token - */ - public function getNext(): Token - { - if ($this->peeking) { - $this->peeking = false; - $this->used[] = $this->peeked; - - return $this->peeked; - } - - if (!isset($this->tokens[$this->cursor])) { - throw new InternalErrorException('Unexpected token stream end.'); - } - - return $this->tokens[$this->cursor++]; - } - - /** - * Returns peeked token. - */ - public function getPeek(): Token - { - if (!$this->peeking) { - $this->peeked = $this->getNext(); - $this->peeking = true; - } - - return $this->peeked; - } - - /** - * Returns used tokens. - * - * @return Token[] - */ - public function getUsed(): array - { - return $this->used; - } - - /** - * Returns next identifier token. - * - * @throws SyntaxErrorException If next token is not an identifier - */ - public function getNextIdentifier(): string - { - $next = $this->getNext(); - - if (!$next->isIdentifier()) { - throw SyntaxErrorException::unexpectedToken('identifier', $next); - } - - return $next->getValue(); - } - - /** - * Returns next identifier or null if star delimiter token is found. - * - * @throws SyntaxErrorException If next token is not an identifier or a star delimiter - */ - public function getNextIdentifierOrStar(): ?string - { - $next = $this->getNext(); - - if ($next->isIdentifier()) { - return $next->getValue(); - } - - if ($next->isDelimiter(['*'])) { - return null; - } - - throw SyntaxErrorException::unexpectedToken('identifier or "*"', $next); - } - - /** - * Skips next whitespace if any. - */ - public function skipWhitespace(): void - { - $peek = $this->getPeek(); - - if ($peek->isWhitespace()) { - $this->getNext(); - } - } -} diff --git a/vendor/symfony/css-selector/Parser/Tokenizer/Tokenizer.php b/vendor/symfony/css-selector/Parser/Tokenizer/Tokenizer.php deleted file mode 100644 index 35c96a48..00000000 --- a/vendor/symfony/css-selector/Parser/Tokenizer/Tokenizer.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Tokenizer; - -use Symfony\Component\CssSelector\Parser\Handler; -use Symfony\Component\CssSelector\Parser\Reader; -use Symfony\Component\CssSelector\Parser\Token; -use Symfony\Component\CssSelector\Parser\TokenStream; - -/** - * CSS selector tokenizer. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class Tokenizer -{ - /** - * @var Handler\HandlerInterface[] - */ - private array $handlers; - - public function __construct() - { - $patterns = new TokenizerPatterns(); - $escaping = new TokenizerEscaping($patterns); - - $this->handlers = [ - new Handler\WhitespaceHandler(), - new Handler\IdentifierHandler($patterns, $escaping), - new Handler\HashHandler($patterns, $escaping), - new Handler\StringHandler($patterns, $escaping), - new Handler\NumberHandler($patterns), - new Handler\CommentHandler(), - ]; - } - - /** - * Tokenize selector source code. - */ - public function tokenize(Reader $reader): TokenStream - { - $stream = new TokenStream(); - - while (!$reader->isEOF()) { - foreach ($this->handlers as $handler) { - if ($handler->handle($reader, $stream)) { - continue 2; - } - } - - $stream->push(new Token(Token::TYPE_DELIMITER, $reader->getSubstring(1), $reader->getPosition())); - $reader->moveForward(1); - } - - return $stream - ->push(new Token(Token::TYPE_FILE_END, null, $reader->getPosition())) - ->freeze(); - } -} diff --git a/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerEscaping.php b/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerEscaping.php deleted file mode 100644 index 8c4b9f74..00000000 --- a/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerEscaping.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Tokenizer; - -/** - * CSS selector tokenizer escaping applier. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class TokenizerEscaping -{ - private TokenizerPatterns $patterns; - - public function __construct(TokenizerPatterns $patterns) - { - $this->patterns = $patterns; - } - - public function escapeUnicode(string $value): string - { - $value = $this->replaceUnicodeSequences($value); - - return preg_replace($this->patterns->getSimpleEscapePattern(), '$1', $value); - } - - public function escapeUnicodeAndNewLine(string $value): string - { - $value = preg_replace($this->patterns->getNewLineEscapePattern(), '', $value); - - return $this->escapeUnicode($value); - } - - private function replaceUnicodeSequences(string $value): string - { - return preg_replace_callback($this->patterns->getUnicodeEscapePattern(), function ($match) { - $c = hexdec($match[1]); - - if (0x80 > $c %= 0x200000) { - return \chr($c); - } - if (0x800 > $c) { - return \chr(0xC0 | $c >> 6).\chr(0x80 | $c & 0x3F); - } - if (0x10000 > $c) { - return \chr(0xE0 | $c >> 12).\chr(0x80 | $c >> 6 & 0x3F).\chr(0x80 | $c & 0x3F); - } - - return ''; - }, $value); - } -} diff --git a/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php b/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php deleted file mode 100644 index 3c77cf09..00000000 --- a/vendor/symfony/css-selector/Parser/Tokenizer/TokenizerPatterns.php +++ /dev/null @@ -1,89 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\Parser\Tokenizer; - -/** - * CSS selector tokenizer patterns builder. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class TokenizerPatterns -{ - private string $unicodeEscapePattern; - private string $simpleEscapePattern; - private string $newLineEscapePattern; - private string $escapePattern; - private string $stringEscapePattern; - private string $nonAsciiPattern; - private string $nmCharPattern; - private string $nmStartPattern; - private string $identifierPattern; - private string $hashPattern; - private string $numberPattern; - private string $quotedStringPattern; - - public function __construct() - { - $this->unicodeEscapePattern = '\\\\([0-9a-f]{1,6})(?:\r\n|[ \n\r\t\f])?'; - $this->simpleEscapePattern = '\\\\(.)'; - $this->newLineEscapePattern = '\\\\(?:\n|\r\n|\r|\f)'; - $this->escapePattern = $this->unicodeEscapePattern.'|\\\\[^\n\r\f0-9a-f]'; - $this->stringEscapePattern = $this->newLineEscapePattern.'|'.$this->escapePattern; - $this->nonAsciiPattern = '[^\x00-\x7F]'; - $this->nmCharPattern = '[_a-z0-9-]|'.$this->escapePattern.'|'.$this->nonAsciiPattern; - $this->nmStartPattern = '[_a-z]|'.$this->escapePattern.'|'.$this->nonAsciiPattern; - $this->identifierPattern = '-?(?:'.$this->nmStartPattern.')(?:'.$this->nmCharPattern.')*'; - $this->hashPattern = '#((?:'.$this->nmCharPattern.')+)'; - $this->numberPattern = '[+-]?(?:[0-9]*\.[0-9]+|[0-9]+)'; - $this->quotedStringPattern = '([^\n\r\f\\\\%s]|'.$this->stringEscapePattern.')*'; - } - - public function getNewLineEscapePattern(): string - { - return '~'.$this->newLineEscapePattern.'~'; - } - - public function getSimpleEscapePattern(): string - { - return '~'.$this->simpleEscapePattern.'~'; - } - - public function getUnicodeEscapePattern(): string - { - return '~'.$this->unicodeEscapePattern.'~i'; - } - - public function getIdentifierPattern(): string - { - return '~^'.$this->identifierPattern.'~i'; - } - - public function getHashPattern(): string - { - return '~^'.$this->hashPattern.'~i'; - } - - public function getNumberPattern(): string - { - return '~^'.$this->numberPattern.'~'; - } - - public function getQuotedStringPattern(string $quote): string - { - return '~^'.sprintf($this->quotedStringPattern, $quote).'~i'; - } -} diff --git a/vendor/symfony/css-selector/README.md b/vendor/symfony/css-selector/README.md deleted file mode 100644 index ede4a3ac..00000000 --- a/vendor/symfony/css-selector/README.md +++ /dev/null @@ -1,20 +0,0 @@ -CssSelector Component -===================== - -The CssSelector component converts CSS selectors to XPath expressions. - -Resources ---------- - - * [Documentation](https://symfony.com/doc/current/components/css_selector.html) - * [Contributing](https://symfony.com/doc/current/contributing/index.html) - * [Report issues](https://github.com/symfony/symfony/issues) and - [send Pull Requests](https://github.com/symfony/symfony/pulls) - in the [main Symfony repository](https://github.com/symfony/symfony) - -Credits -------- - -This component is a port of the Python cssselect library -[v0.7.1](https://github.com/SimonSapin/cssselect/releases/tag/v0.7.1), -which is distributed under the BSD license. diff --git a/vendor/symfony/css-selector/XPath/Extension/AbstractExtension.php b/vendor/symfony/css-selector/XPath/Extension/AbstractExtension.php deleted file mode 100644 index 495f8829..00000000 --- a/vendor/symfony/css-selector/XPath/Extension/AbstractExtension.php +++ /dev/null @@ -1,50 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath\Extension; - -/** - * XPath expression translator abstract extension. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -abstract class AbstractExtension implements ExtensionInterface -{ - public function getNodeTranslators(): array - { - return []; - } - - public function getCombinationTranslators(): array - { - return []; - } - - public function getFunctionTranslators(): array - { - return []; - } - - public function getPseudoClassTranslators(): array - { - return []; - } - - public function getAttributeMatchingTranslators(): array - { - return []; - } -} diff --git a/vendor/symfony/css-selector/XPath/Extension/AttributeMatchingExtension.php b/vendor/symfony/css-selector/XPath/Extension/AttributeMatchingExtension.php deleted file mode 100644 index 3c785e97..00000000 --- a/vendor/symfony/css-selector/XPath/Extension/AttributeMatchingExtension.php +++ /dev/null @@ -1,113 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath\Extension; - -use Symfony\Component\CssSelector\XPath\Translator; -use Symfony\Component\CssSelector\XPath\XPathExpr; - -/** - * XPath expression translator attribute extension. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class AttributeMatchingExtension extends AbstractExtension -{ - public function getAttributeMatchingTranslators(): array - { - return [ - 'exists' => $this->translateExists(...), - '=' => $this->translateEquals(...), - '~=' => $this->translateIncludes(...), - '|=' => $this->translateDashMatch(...), - '^=' => $this->translatePrefixMatch(...), - '$=' => $this->translateSuffixMatch(...), - '*=' => $this->translateSubstringMatch(...), - '!=' => $this->translateDifferent(...), - ]; - } - - public function translateExists(XPathExpr $xpath, string $attribute, ?string $value): XPathExpr - { - return $xpath->addCondition($attribute); - } - - public function translateEquals(XPathExpr $xpath, string $attribute, ?string $value): XPathExpr - { - return $xpath->addCondition(sprintf('%s = %s', $attribute, Translator::getXpathLiteral($value))); - } - - public function translateIncludes(XPathExpr $xpath, string $attribute, ?string $value): XPathExpr - { - return $xpath->addCondition($value ? sprintf( - '%1$s and contains(concat(\' \', normalize-space(%1$s), \' \'), %2$s)', - $attribute, - Translator::getXpathLiteral(' '.$value.' ') - ) : '0'); - } - - public function translateDashMatch(XPathExpr $xpath, string $attribute, ?string $value): XPathExpr - { - return $xpath->addCondition(sprintf( - '%1$s and (%1$s = %2$s or starts-with(%1$s, %3$s))', - $attribute, - Translator::getXpathLiteral($value), - Translator::getXpathLiteral($value.'-') - )); - } - - public function translatePrefixMatch(XPathExpr $xpath, string $attribute, ?string $value): XPathExpr - { - return $xpath->addCondition($value ? sprintf( - '%1$s and starts-with(%1$s, %2$s)', - $attribute, - Translator::getXpathLiteral($value) - ) : '0'); - } - - public function translateSuffixMatch(XPathExpr $xpath, string $attribute, ?string $value): XPathExpr - { - return $xpath->addCondition($value ? sprintf( - '%1$s and substring(%1$s, string-length(%1$s)-%2$s) = %3$s', - $attribute, - \strlen($value) - 1, - Translator::getXpathLiteral($value) - ) : '0'); - } - - public function translateSubstringMatch(XPathExpr $xpath, string $attribute, ?string $value): XPathExpr - { - return $xpath->addCondition($value ? sprintf( - '%1$s and contains(%1$s, %2$s)', - $attribute, - Translator::getXpathLiteral($value) - ) : '0'); - } - - public function translateDifferent(XPathExpr $xpath, string $attribute, ?string $value): XPathExpr - { - return $xpath->addCondition(sprintf( - $value ? 'not(%1$s) or %1$s != %2$s' : '%s != %s', - $attribute, - Translator::getXpathLiteral($value) - )); - } - - public function getName(): string - { - return 'attribute-matching'; - } -} diff --git a/vendor/symfony/css-selector/XPath/Extension/CombinationExtension.php b/vendor/symfony/css-selector/XPath/Extension/CombinationExtension.php deleted file mode 100644 index f78d4888..00000000 --- a/vendor/symfony/css-selector/XPath/Extension/CombinationExtension.php +++ /dev/null @@ -1,65 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath\Extension; - -use Symfony\Component\CssSelector\XPath\XPathExpr; - -/** - * XPath expression translator combination extension. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class CombinationExtension extends AbstractExtension -{ - public function getCombinationTranslators(): array - { - return [ - ' ' => $this->translateDescendant(...), - '>' => $this->translateChild(...), - '+' => $this->translateDirectAdjacent(...), - '~' => $this->translateIndirectAdjacent(...), - ]; - } - - public function translateDescendant(XPathExpr $xpath, XPathExpr $combinedXpath): XPathExpr - { - return $xpath->join('/descendant-or-self::*/', $combinedXpath); - } - - public function translateChild(XPathExpr $xpath, XPathExpr $combinedXpath): XPathExpr - { - return $xpath->join('/', $combinedXpath); - } - - public function translateDirectAdjacent(XPathExpr $xpath, XPathExpr $combinedXpath): XPathExpr - { - return $xpath - ->join('/following-sibling::', $combinedXpath) - ->addNameTest() - ->addCondition('position() = 1'); - } - - public function translateIndirectAdjacent(XPathExpr $xpath, XPathExpr $combinedXpath): XPathExpr - { - return $xpath->join('/following-sibling::', $combinedXpath); - } - - public function getName(): string - { - return 'combination'; - } -} diff --git a/vendor/symfony/css-selector/XPath/Extension/ExtensionInterface.php b/vendor/symfony/css-selector/XPath/Extension/ExtensionInterface.php deleted file mode 100644 index 1a74b90a..00000000 --- a/vendor/symfony/css-selector/XPath/Extension/ExtensionInterface.php +++ /dev/null @@ -1,67 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath\Extension; - -/** - * XPath expression translator extension interface. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -interface ExtensionInterface -{ - /** - * Returns node translators. - * - * These callables will receive the node as first argument and the translator as second argument. - * - * @return callable[] - */ - public function getNodeTranslators(): array; - - /** - * Returns combination translators. - * - * @return callable[] - */ - public function getCombinationTranslators(): array; - - /** - * Returns function translators. - * - * @return callable[] - */ - public function getFunctionTranslators(): array; - - /** - * Returns pseudo-class translators. - * - * @return callable[] - */ - public function getPseudoClassTranslators(): array; - - /** - * Returns attribute operation translators. - * - * @return callable[] - */ - public function getAttributeMatchingTranslators(): array; - - /** - * Returns extension name. - */ - public function getName(): string; -} diff --git a/vendor/symfony/css-selector/XPath/Extension/FunctionExtension.php b/vendor/symfony/css-selector/XPath/Extension/FunctionExtension.php deleted file mode 100644 index 4b9d7bc2..00000000 --- a/vendor/symfony/css-selector/XPath/Extension/FunctionExtension.php +++ /dev/null @@ -1,165 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath\Extension; - -use Symfony\Component\CssSelector\Exception\ExpressionErrorException; -use Symfony\Component\CssSelector\Exception\SyntaxErrorException; -use Symfony\Component\CssSelector\Node\FunctionNode; -use Symfony\Component\CssSelector\Parser\Parser; -use Symfony\Component\CssSelector\XPath\Translator; -use Symfony\Component\CssSelector\XPath\XPathExpr; - -/** - * XPath expression translator function extension. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class FunctionExtension extends AbstractExtension -{ - public function getFunctionTranslators(): array - { - return [ - 'nth-child' => $this->translateNthChild(...), - 'nth-last-child' => $this->translateNthLastChild(...), - 'nth-of-type' => $this->translateNthOfType(...), - 'nth-last-of-type' => $this->translateNthLastOfType(...), - 'contains' => $this->translateContains(...), - 'lang' => $this->translateLang(...), - ]; - } - - /** - * @throws ExpressionErrorException - */ - public function translateNthChild(XPathExpr $xpath, FunctionNode $function, bool $last = false, bool $addNameTest = true): XPathExpr - { - try { - [$a, $b] = Parser::parseSeries($function->getArguments()); - } catch (SyntaxErrorException $e) { - throw new ExpressionErrorException(sprintf('Invalid series: "%s".', implode('", "', $function->getArguments())), 0, $e); - } - - $xpath->addStarPrefix(); - if ($addNameTest) { - $xpath->addNameTest(); - } - - if (0 === $a) { - return $xpath->addCondition('position() = '.($last ? 'last() - '.($b - 1) : $b)); - } - - if ($a < 0) { - if ($b < 1) { - return $xpath->addCondition('false()'); - } - - $sign = '<='; - } else { - $sign = '>='; - } - - $expr = 'position()'; - - if ($last) { - $expr = 'last() - '.$expr; - --$b; - } - - if (0 !== $b) { - $expr .= ' - '.$b; - } - - $conditions = [sprintf('%s %s 0', $expr, $sign)]; - - if (1 !== $a && -1 !== $a) { - $conditions[] = sprintf('(%s) mod %d = 0', $expr, $a); - } - - return $xpath->addCondition(implode(' and ', $conditions)); - - // todo: handle an+b, odd, even - // an+b means every-a, plus b, e.g., 2n+1 means odd - // 0n+b means b - // n+0 means a=1, i.e., all elements - // an means every a elements, i.e., 2n means even - // -n means -1n - // -1n+6 means elements 6 and previous - } - - public function translateNthLastChild(XPathExpr $xpath, FunctionNode $function): XPathExpr - { - return $this->translateNthChild($xpath, $function, true); - } - - public function translateNthOfType(XPathExpr $xpath, FunctionNode $function): XPathExpr - { - return $this->translateNthChild($xpath, $function, false, false); - } - - /** - * @throws ExpressionErrorException - */ - public function translateNthLastOfType(XPathExpr $xpath, FunctionNode $function): XPathExpr - { - if ('*' === $xpath->getElement()) { - throw new ExpressionErrorException('"*:nth-of-type()" is not implemented.'); - } - - return $this->translateNthChild($xpath, $function, true, false); - } - - /** - * @throws ExpressionErrorException - */ - public function translateContains(XPathExpr $xpath, FunctionNode $function): XPathExpr - { - $arguments = $function->getArguments(); - foreach ($arguments as $token) { - if (!($token->isString() || $token->isIdentifier())) { - throw new ExpressionErrorException('Expected a single string or identifier for :contains(), got '.implode(', ', $arguments)); - } - } - - return $xpath->addCondition(sprintf( - 'contains(string(.), %s)', - Translator::getXpathLiteral($arguments[0]->getValue()) - )); - } - - /** - * @throws ExpressionErrorException - */ - public function translateLang(XPathExpr $xpath, FunctionNode $function): XPathExpr - { - $arguments = $function->getArguments(); - foreach ($arguments as $token) { - if (!($token->isString() || $token->isIdentifier())) { - throw new ExpressionErrorException('Expected a single string or identifier for :lang(), got '.implode(', ', $arguments)); - } - } - - return $xpath->addCondition(sprintf( - 'lang(%s)', - Translator::getXpathLiteral($arguments[0]->getValue()) - )); - } - - public function getName(): string - { - return 'function'; - } -} diff --git a/vendor/symfony/css-selector/XPath/Extension/HtmlExtension.php b/vendor/symfony/css-selector/XPath/Extension/HtmlExtension.php deleted file mode 100644 index 4653add5..00000000 --- a/vendor/symfony/css-selector/XPath/Extension/HtmlExtension.php +++ /dev/null @@ -1,178 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath\Extension; - -use Symfony\Component\CssSelector\Exception\ExpressionErrorException; -use Symfony\Component\CssSelector\Node\FunctionNode; -use Symfony\Component\CssSelector\XPath\Translator; -use Symfony\Component\CssSelector\XPath\XPathExpr; - -/** - * XPath expression translator HTML extension. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class HtmlExtension extends AbstractExtension -{ - public function __construct(Translator $translator) - { - $translator - ->getExtension('node') - ->setFlag(NodeExtension::ELEMENT_NAME_IN_LOWER_CASE, true) - ->setFlag(NodeExtension::ATTRIBUTE_NAME_IN_LOWER_CASE, true); - } - - public function getPseudoClassTranslators(): array - { - return [ - 'checked' => $this->translateChecked(...), - 'link' => $this->translateLink(...), - 'disabled' => $this->translateDisabled(...), - 'enabled' => $this->translateEnabled(...), - 'selected' => $this->translateSelected(...), - 'invalid' => $this->translateInvalid(...), - 'hover' => $this->translateHover(...), - 'visited' => $this->translateVisited(...), - ]; - } - - public function getFunctionTranslators(): array - { - return [ - 'lang' => $this->translateLang(...), - ]; - } - - public function translateChecked(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition( - '(@checked ' - ."and (name(.) = 'input' or name(.) = 'command')" - ."and (@type = 'checkbox' or @type = 'radio'))" - ); - } - - public function translateLink(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition("@href and (name(.) = 'a' or name(.) = 'link' or name(.) = 'area')"); - } - - public function translateDisabled(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition( - '(' - .'@disabled and' - .'(' - ."(name(.) = 'input' and @type != 'hidden')" - ." or name(.) = 'button'" - ." or name(.) = 'select'" - ." or name(.) = 'textarea'" - ." or name(.) = 'command'" - ." or name(.) = 'fieldset'" - ." or name(.) = 'optgroup'" - ." or name(.) = 'option'" - .')' - .') or (' - ."(name(.) = 'input' and @type != 'hidden')" - ." or name(.) = 'button'" - ." or name(.) = 'select'" - ." or name(.) = 'textarea'" - .')' - .' and ancestor::fieldset[@disabled]' - ); - // todo: in the second half, add "and is not a descendant of that fieldset element's first legend element child, if any." - } - - public function translateEnabled(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition( - '(' - .'@href and (' - ."name(.) = 'a'" - ." or name(.) = 'link'" - ." or name(.) = 'area'" - .')' - .') or (' - .'(' - ."name(.) = 'command'" - ." or name(.) = 'fieldset'" - ." or name(.) = 'optgroup'" - .')' - .' and not(@disabled)' - .') or (' - .'(' - ."(name(.) = 'input' and @type != 'hidden')" - ." or name(.) = 'button'" - ." or name(.) = 'select'" - ." or name(.) = 'textarea'" - ." or name(.) = 'keygen'" - .')' - .' and not (@disabled or ancestor::fieldset[@disabled])' - .') or (' - ."name(.) = 'option' and not(" - .'@disabled or ancestor::optgroup[@disabled]' - .')' - .')' - ); - } - - /** - * @throws ExpressionErrorException - */ - public function translateLang(XPathExpr $xpath, FunctionNode $function): XPathExpr - { - $arguments = $function->getArguments(); - foreach ($arguments as $token) { - if (!($token->isString() || $token->isIdentifier())) { - throw new ExpressionErrorException('Expected a single string or identifier for :lang(), got '.implode(', ', $arguments)); - } - } - - return $xpath->addCondition(sprintf( - 'ancestor-or-self::*[@lang][1][starts-with(concat(' - ."translate(@%s, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), '-')" - .', %s)]', - 'lang', - Translator::getXpathLiteral(strtolower($arguments[0]->getValue()).'-') - )); - } - - public function translateSelected(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition("(@selected and name(.) = 'option')"); - } - - public function translateInvalid(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition('0'); - } - - public function translateHover(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition('0'); - } - - public function translateVisited(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition('0'); - } - - public function getName(): string - { - return 'html'; - } -} diff --git a/vendor/symfony/css-selector/XPath/Extension/NodeExtension.php b/vendor/symfony/css-selector/XPath/Extension/NodeExtension.php deleted file mode 100644 index 49e894ad..00000000 --- a/vendor/symfony/css-selector/XPath/Extension/NodeExtension.php +++ /dev/null @@ -1,191 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath\Extension; - -use Symfony\Component\CssSelector\Node; -use Symfony\Component\CssSelector\XPath\Translator; -use Symfony\Component\CssSelector\XPath\XPathExpr; - -/** - * XPath expression translator node extension. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class NodeExtension extends AbstractExtension -{ - public const ELEMENT_NAME_IN_LOWER_CASE = 1; - public const ATTRIBUTE_NAME_IN_LOWER_CASE = 2; - public const ATTRIBUTE_VALUE_IN_LOWER_CASE = 4; - - private int $flags; - - public function __construct(int $flags = 0) - { - $this->flags = $flags; - } - - /** - * @return $this - */ - public function setFlag(int $flag, bool $on): static - { - if ($on && !$this->hasFlag($flag)) { - $this->flags += $flag; - } - - if (!$on && $this->hasFlag($flag)) { - $this->flags -= $flag; - } - - return $this; - } - - public function hasFlag(int $flag): bool - { - return (bool) ($this->flags & $flag); - } - - public function getNodeTranslators(): array - { - return [ - 'Selector' => $this->translateSelector(...), - 'CombinedSelector' => $this->translateCombinedSelector(...), - 'Negation' => $this->translateNegation(...), - 'Function' => $this->translateFunction(...), - 'Pseudo' => $this->translatePseudo(...), - 'Attribute' => $this->translateAttribute(...), - 'Class' => $this->translateClass(...), - 'Hash' => $this->translateHash(...), - 'Element' => $this->translateElement(...), - ]; - } - - public function translateSelector(Node\SelectorNode $node, Translator $translator): XPathExpr - { - return $translator->nodeToXPath($node->getTree()); - } - - public function translateCombinedSelector(Node\CombinedSelectorNode $node, Translator $translator): XPathExpr - { - return $translator->addCombination($node->getCombinator(), $node->getSelector(), $node->getSubSelector()); - } - - public function translateNegation(Node\NegationNode $node, Translator $translator): XPathExpr - { - $xpath = $translator->nodeToXPath($node->getSelector()); - $subXpath = $translator->nodeToXPath($node->getSubSelector()); - $subXpath->addNameTest(); - - if ($subXpath->getCondition()) { - return $xpath->addCondition(sprintf('not(%s)', $subXpath->getCondition())); - } - - return $xpath->addCondition('0'); - } - - public function translateFunction(Node\FunctionNode $node, Translator $translator): XPathExpr - { - $xpath = $translator->nodeToXPath($node->getSelector()); - - return $translator->addFunction($xpath, $node); - } - - public function translatePseudo(Node\PseudoNode $node, Translator $translator): XPathExpr - { - $xpath = $translator->nodeToXPath($node->getSelector()); - - return $translator->addPseudoClass($xpath, $node->getIdentifier()); - } - - public function translateAttribute(Node\AttributeNode $node, Translator $translator): XPathExpr - { - $name = $node->getAttribute(); - $safe = $this->isSafeName($name); - - if ($this->hasFlag(self::ATTRIBUTE_NAME_IN_LOWER_CASE)) { - $name = strtolower($name); - } - - if ($node->getNamespace()) { - $name = sprintf('%s:%s', $node->getNamespace(), $name); - $safe = $safe && $this->isSafeName($node->getNamespace()); - } - - $attribute = $safe ? '@'.$name : sprintf('attribute::*[name() = %s]', Translator::getXpathLiteral($name)); - $value = $node->getValue(); - $xpath = $translator->nodeToXPath($node->getSelector()); - - if ($this->hasFlag(self::ATTRIBUTE_VALUE_IN_LOWER_CASE)) { - $value = strtolower($value); - } - - return $translator->addAttributeMatching($xpath, $node->getOperator(), $attribute, $value); - } - - public function translateClass(Node\ClassNode $node, Translator $translator): XPathExpr - { - $xpath = $translator->nodeToXPath($node->getSelector()); - - return $translator->addAttributeMatching($xpath, '~=', '@class', $node->getName()); - } - - public function translateHash(Node\HashNode $node, Translator $translator): XPathExpr - { - $xpath = $translator->nodeToXPath($node->getSelector()); - - return $translator->addAttributeMatching($xpath, '=', '@id', $node->getId()); - } - - public function translateElement(Node\ElementNode $node): XPathExpr - { - $element = $node->getElement(); - - if ($element && $this->hasFlag(self::ELEMENT_NAME_IN_LOWER_CASE)) { - $element = strtolower($element); - } - - if ($element) { - $safe = $this->isSafeName($element); - } else { - $element = '*'; - $safe = true; - } - - if ($node->getNamespace()) { - $element = sprintf('%s:%s', $node->getNamespace(), $element); - $safe = $safe && $this->isSafeName($node->getNamespace()); - } - - $xpath = new XPathExpr('', $element); - - if (!$safe) { - $xpath->addNameTest(); - } - - return $xpath; - } - - public function getName(): string - { - return 'node'; - } - - private function isSafeName(string $name): bool - { - return 0 < preg_match('~^[a-zA-Z_][a-zA-Z0-9_.-]*$~', $name); - } -} diff --git a/vendor/symfony/css-selector/XPath/Extension/PseudoClassExtension.php b/vendor/symfony/css-selector/XPath/Extension/PseudoClassExtension.php deleted file mode 100644 index aada8329..00000000 --- a/vendor/symfony/css-selector/XPath/Extension/PseudoClassExtension.php +++ /dev/null @@ -1,122 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath\Extension; - -use Symfony\Component\CssSelector\Exception\ExpressionErrorException; -use Symfony\Component\CssSelector\XPath\XPathExpr; - -/** - * XPath expression translator pseudo-class extension. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class PseudoClassExtension extends AbstractExtension -{ - public function getPseudoClassTranslators(): array - { - return [ - 'root' => $this->translateRoot(...), - 'scope' => $this->translateScopePseudo(...), - 'first-child' => $this->translateFirstChild(...), - 'last-child' => $this->translateLastChild(...), - 'first-of-type' => $this->translateFirstOfType(...), - 'last-of-type' => $this->translateLastOfType(...), - 'only-child' => $this->translateOnlyChild(...), - 'only-of-type' => $this->translateOnlyOfType(...), - 'empty' => $this->translateEmpty(...), - ]; - } - - public function translateRoot(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition('not(parent::*)'); - } - - public function translateScopePseudo(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition('1'); - } - - public function translateFirstChild(XPathExpr $xpath): XPathExpr - { - return $xpath - ->addStarPrefix() - ->addNameTest() - ->addCondition('position() = 1'); - } - - public function translateLastChild(XPathExpr $xpath): XPathExpr - { - return $xpath - ->addStarPrefix() - ->addNameTest() - ->addCondition('position() = last()'); - } - - /** - * @throws ExpressionErrorException - */ - public function translateFirstOfType(XPathExpr $xpath): XPathExpr - { - if ('*' === $xpath->getElement()) { - throw new ExpressionErrorException('"*:first-of-type" is not implemented.'); - } - - return $xpath - ->addStarPrefix() - ->addCondition('position() = 1'); - } - - /** - * @throws ExpressionErrorException - */ - public function translateLastOfType(XPathExpr $xpath): XPathExpr - { - if ('*' === $xpath->getElement()) { - throw new ExpressionErrorException('"*:last-of-type" is not implemented.'); - } - - return $xpath - ->addStarPrefix() - ->addCondition('position() = last()'); - } - - public function translateOnlyChild(XPathExpr $xpath): XPathExpr - { - return $xpath - ->addStarPrefix() - ->addNameTest() - ->addCondition('last() = 1'); - } - - public function translateOnlyOfType(XPathExpr $xpath): XPathExpr - { - $element = $xpath->getElement(); - - return $xpath->addCondition(sprintf('count(preceding-sibling::%s)=0 and count(following-sibling::%s)=0', $element, $element)); - } - - public function translateEmpty(XPathExpr $xpath): XPathExpr - { - return $xpath->addCondition('not(*) and not(string-length())'); - } - - public function getName(): string - { - return 'pseudo-class'; - } -} diff --git a/vendor/symfony/css-selector/XPath/Translator.php b/vendor/symfony/css-selector/XPath/Translator.php deleted file mode 100644 index 83e855b5..00000000 --- a/vendor/symfony/css-selector/XPath/Translator.php +++ /dev/null @@ -1,224 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath; - -use Symfony\Component\CssSelector\Exception\ExpressionErrorException; -use Symfony\Component\CssSelector\Node\FunctionNode; -use Symfony\Component\CssSelector\Node\NodeInterface; -use Symfony\Component\CssSelector\Node\SelectorNode; -use Symfony\Component\CssSelector\Parser\Parser; -use Symfony\Component\CssSelector\Parser\ParserInterface; - -/** - * XPath expression translator interface. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class Translator implements TranslatorInterface -{ - private ParserInterface $mainParser; - - /** - * @var ParserInterface[] - */ - private array $shortcutParsers = []; - - /** - * @var Extension\ExtensionInterface[] - */ - private array $extensions = []; - - private array $nodeTranslators = []; - private array $combinationTranslators = []; - private array $functionTranslators = []; - private array $pseudoClassTranslators = []; - private array $attributeMatchingTranslators = []; - - public function __construct(ParserInterface $parser = null) - { - $this->mainParser = $parser ?? new Parser(); - - $this - ->registerExtension(new Extension\NodeExtension()) - ->registerExtension(new Extension\CombinationExtension()) - ->registerExtension(new Extension\FunctionExtension()) - ->registerExtension(new Extension\PseudoClassExtension()) - ->registerExtension(new Extension\AttributeMatchingExtension()) - ; - } - - public static function getXpathLiteral(string $element): string - { - if (!str_contains($element, "'")) { - return "'".$element."'"; - } - - if (!str_contains($element, '"')) { - return '"'.$element.'"'; - } - - $string = $element; - $parts = []; - while (true) { - if (false !== $pos = strpos($string, "'")) { - $parts[] = sprintf("'%s'", substr($string, 0, $pos)); - $parts[] = "\"'\""; - $string = substr($string, $pos + 1); - } else { - $parts[] = "'$string'"; - break; - } - } - - return sprintf('concat(%s)', implode(', ', $parts)); - } - - public function cssToXPath(string $cssExpr, string $prefix = 'descendant-or-self::'): string - { - $selectors = $this->parseSelectors($cssExpr); - - /** @var SelectorNode $selector */ - foreach ($selectors as $index => $selector) { - if (null !== $selector->getPseudoElement()) { - throw new ExpressionErrorException('Pseudo-elements are not supported.'); - } - - $selectors[$index] = $this->selectorToXPath($selector, $prefix); - } - - return implode(' | ', $selectors); - } - - public function selectorToXPath(SelectorNode $selector, string $prefix = 'descendant-or-self::'): string - { - return ($prefix ?: '').$this->nodeToXPath($selector); - } - - /** - * @return $this - */ - public function registerExtension(Extension\ExtensionInterface $extension): static - { - $this->extensions[$extension->getName()] = $extension; - - $this->nodeTranslators = array_merge($this->nodeTranslators, $extension->getNodeTranslators()); - $this->combinationTranslators = array_merge($this->combinationTranslators, $extension->getCombinationTranslators()); - $this->functionTranslators = array_merge($this->functionTranslators, $extension->getFunctionTranslators()); - $this->pseudoClassTranslators = array_merge($this->pseudoClassTranslators, $extension->getPseudoClassTranslators()); - $this->attributeMatchingTranslators = array_merge($this->attributeMatchingTranslators, $extension->getAttributeMatchingTranslators()); - - return $this; - } - - /** - * @throws ExpressionErrorException - */ - public function getExtension(string $name): Extension\ExtensionInterface - { - if (!isset($this->extensions[$name])) { - throw new ExpressionErrorException(sprintf('Extension "%s" not registered.', $name)); - } - - return $this->extensions[$name]; - } - - /** - * @return $this - */ - public function registerParserShortcut(ParserInterface $shortcut): static - { - $this->shortcutParsers[] = $shortcut; - - return $this; - } - - /** - * @throws ExpressionErrorException - */ - public function nodeToXPath(NodeInterface $node): XPathExpr - { - if (!isset($this->nodeTranslators[$node->getNodeName()])) { - throw new ExpressionErrorException(sprintf('Node "%s" not supported.', $node->getNodeName())); - } - - return $this->nodeTranslators[$node->getNodeName()]($node, $this); - } - - /** - * @throws ExpressionErrorException - */ - public function addCombination(string $combiner, NodeInterface $xpath, NodeInterface $combinedXpath): XPathExpr - { - if (!isset($this->combinationTranslators[$combiner])) { - throw new ExpressionErrorException(sprintf('Combiner "%s" not supported.', $combiner)); - } - - return $this->combinationTranslators[$combiner]($this->nodeToXPath($xpath), $this->nodeToXPath($combinedXpath)); - } - - /** - * @throws ExpressionErrorException - */ - public function addFunction(XPathExpr $xpath, FunctionNode $function): XPathExpr - { - if (!isset($this->functionTranslators[$function->getName()])) { - throw new ExpressionErrorException(sprintf('Function "%s" not supported.', $function->getName())); - } - - return $this->functionTranslators[$function->getName()]($xpath, $function); - } - - /** - * @throws ExpressionErrorException - */ - public function addPseudoClass(XPathExpr $xpath, string $pseudoClass): XPathExpr - { - if (!isset($this->pseudoClassTranslators[$pseudoClass])) { - throw new ExpressionErrorException(sprintf('Pseudo-class "%s" not supported.', $pseudoClass)); - } - - return $this->pseudoClassTranslators[$pseudoClass]($xpath); - } - - /** - * @throws ExpressionErrorException - */ - public function addAttributeMatching(XPathExpr $xpath, string $operator, string $attribute, ?string $value): XPathExpr - { - if (!isset($this->attributeMatchingTranslators[$operator])) { - throw new ExpressionErrorException(sprintf('Attribute matcher operator "%s" not supported.', $operator)); - } - - return $this->attributeMatchingTranslators[$operator]($xpath, $attribute, $value); - } - - /** - * @return SelectorNode[] - */ - private function parseSelectors(string $css): array - { - foreach ($this->shortcutParsers as $shortcut) { - $tokens = $shortcut->parse($css); - - if ($tokens) { - return $tokens; - } - } - - return $this->mainParser->parse($css); - } -} diff --git a/vendor/symfony/css-selector/XPath/TranslatorInterface.php b/vendor/symfony/css-selector/XPath/TranslatorInterface.php deleted file mode 100644 index c19eefb9..00000000 --- a/vendor/symfony/css-selector/XPath/TranslatorInterface.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath; - -use Symfony\Component\CssSelector\Node\SelectorNode; - -/** - * XPath expression translator interface. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -interface TranslatorInterface -{ - /** - * Translates a CSS selector to an XPath expression. - */ - public function cssToXPath(string $cssExpr, string $prefix = 'descendant-or-self::'): string; - - /** - * Translates a parsed selector node to an XPath expression. - */ - public function selectorToXPath(SelectorNode $selector, string $prefix = 'descendant-or-self::'): string; -} diff --git a/vendor/symfony/css-selector/XPath/XPathExpr.php b/vendor/symfony/css-selector/XPath/XPathExpr.php deleted file mode 100644 index a76e30be..00000000 --- a/vendor/symfony/css-selector/XPath/XPathExpr.php +++ /dev/null @@ -1,111 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\CssSelector\XPath; - -/** - * XPath expression translator interface. - * - * This component is a port of the Python cssselect library, - * which is copyright Ian Bicking, @see https://github.com/SimonSapin/cssselect. - * - * @author Jean-François Simon - * - * @internal - */ -class XPathExpr -{ - private string $path; - private string $element; - private string $condition; - - public function __construct(string $path = '', string $element = '*', string $condition = '', bool $starPrefix = false) - { - $this->path = $path; - $this->element = $element; - $this->condition = $condition; - - if ($starPrefix) { - $this->addStarPrefix(); - } - } - - public function getElement(): string - { - return $this->element; - } - - /** - * @return $this - */ - public function addCondition(string $condition): static - { - $this->condition = $this->condition ? sprintf('(%s) and (%s)', $this->condition, $condition) : $condition; - - return $this; - } - - public function getCondition(): string - { - return $this->condition; - } - - /** - * @return $this - */ - public function addNameTest(): static - { - if ('*' !== $this->element) { - $this->addCondition('name() = '.Translator::getXpathLiteral($this->element)); - $this->element = '*'; - } - - return $this; - } - - /** - * @return $this - */ - public function addStarPrefix(): static - { - $this->path .= '*/'; - - return $this; - } - - /** - * Joins another XPathExpr with a combiner. - * - * @return $this - */ - public function join(string $combiner, self $expr): static - { - $path = $this->__toString().$combiner; - - if ('*/' !== $expr->path) { - $path .= $expr->path; - } - - $this->path = $path; - $this->element = $expr->element; - $this->condition = $expr->condition; - - return $this; - } - - public function __toString(): string - { - $path = $this->path.$this->element; - $condition = null === $this->condition || '' === $this->condition ? '' : '['.$this->condition.']'; - - return $path.$condition; - } -} diff --git a/vendor/symfony/css-selector/composer.json b/vendor/symfony/css-selector/composer.json deleted file mode 100644 index a753a1a6..00000000 --- a/vendor/symfony/css-selector/composer.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "symfony/css-selector", - "type": "library", - "description": "Converts CSS selectors to XPath expressions", - "keywords": [], - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=8.2" - }, - "autoload": { - "psr-4": { "Symfony\\Component\\CssSelector\\": "" }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "minimum-stability": "dev" -} diff --git a/vendor/symfony/deprecation-contracts/CHANGELOG.md b/vendor/symfony/deprecation-contracts/CHANGELOG.md deleted file mode 100644 index 7932e261..00000000 --- a/vendor/symfony/deprecation-contracts/CHANGELOG.md +++ /dev/null @@ -1,5 +0,0 @@ -CHANGELOG -========= - -The changelog is maintained for all Symfony contracts at the following URL: -https://github.com/symfony/contracts/blob/main/CHANGELOG.md diff --git a/vendor/symfony/deprecation-contracts/LICENSE b/vendor/symfony/deprecation-contracts/LICENSE deleted file mode 100644 index 0ed3a246..00000000 --- a/vendor/symfony/deprecation-contracts/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2020-present Fabien Potencier - -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/vendor/symfony/deprecation-contracts/README.md b/vendor/symfony/deprecation-contracts/README.md deleted file mode 100644 index 9814864c..00000000 --- a/vendor/symfony/deprecation-contracts/README.md +++ /dev/null @@ -1,26 +0,0 @@ -Symfony Deprecation Contracts -============================= - -A generic function and convention to trigger deprecation notices. - -This package provides a single global function named `trigger_deprecation()` that triggers silenced deprecation notices. - -By using a custom PHP error handler such as the one provided by the Symfony ErrorHandler component, -the triggered deprecations can be caught and logged for later discovery, both on dev and prod environments. - -The function requires at least 3 arguments: - - the name of the Composer package that is triggering the deprecation - - the version of the package that introduced the deprecation - - the message of the deprecation - - more arguments can be provided: they will be inserted in the message using `printf()` formatting - -Example: -```php -trigger_deprecation('symfony/blockchain', '8.9', 'Using "%s" is deprecated, use "%s" instead.', 'bitcoin', 'fabcoin'); -``` - -This will generate the following message: -`Since symfony/blockchain 8.9: Using "bitcoin" is deprecated, use "fabcoin" instead.` - -While not recommended, the deprecation notices can be completely ignored by declaring an empty -`function trigger_deprecation() {}` in your application. diff --git a/vendor/symfony/deprecation-contracts/composer.json b/vendor/symfony/deprecation-contracts/composer.json deleted file mode 100644 index c6d02d87..00000000 --- a/vendor/symfony/deprecation-contracts/composer.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "symfony/deprecation-contracts", - "type": "library", - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "license": "MIT", - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "require": { - "php": ">=8.1" - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "minimum-stability": "dev", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - } -} diff --git a/vendor/symfony/deprecation-contracts/function.php b/vendor/symfony/deprecation-contracts/function.php deleted file mode 100644 index 2d56512b..00000000 --- a/vendor/symfony/deprecation-contracts/function.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -if (!function_exists('trigger_deprecation')) { - /** - * Triggers a silenced deprecation notice. - * - * @param string $package The name of the Composer package that is triggering the deprecation - * @param string $version The version of the package that introduced the deprecation - * @param string $message The message of the deprecation - * @param mixed ...$args Values to insert in the message using printf() formatting - * - * @author Nicolas Grekas - */ - function trigger_deprecation(string $package, string $version, string $message, mixed ...$args): void - { - @trigger_error(($package || $version ? "Since $package $version: " : '').($args ? vsprintf($message, $args) : $message), \E_USER_DEPRECATED); - } -} diff --git a/vendor/symfony/error-handler/BufferingLogger.php b/vendor/symfony/error-handler/BufferingLogger.php deleted file mode 100644 index b33e0799..00000000 --- a/vendor/symfony/error-handler/BufferingLogger.php +++ /dev/null @@ -1,71 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler; - -use Psr\Log\AbstractLogger; - -/** - * A buffering logger that stacks logs for later. - * - * @author Nicolas Grekas - */ -class BufferingLogger extends AbstractLogger -{ - private array $logs = []; - - public function log($level, $message, array $context = []): void - { - $this->logs[] = [$level, $message, $context]; - } - - public function cleanLogs(): array - { - $logs = $this->logs; - $this->logs = []; - - return $logs; - } - - public function __sleep(): array - { - throw new \BadMethodCallException('Cannot serialize '.__CLASS__); - } - - /** - * @return void - */ - public function __wakeup() - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); - } - - public function __destruct() - { - foreach ($this->logs as [$level, $message, $context]) { - if (str_contains($message, '{')) { - foreach ($context as $key => $val) { - if (null === $val || \is_scalar($val) || (\is_object($val) && \is_callable([$val, '__toString']))) { - $message = str_replace("{{$key}}", $val, $message); - } elseif ($val instanceof \DateTimeInterface) { - $message = str_replace("{{$key}}", $val->format(\DateTimeInterface::RFC3339), $message); - } elseif (\is_object($val)) { - $message = str_replace("{{$key}}", '[object '.get_debug_type($val).']', $message); - } else { - $message = str_replace("{{$key}}", '['.\gettype($val).']', $message); - } - } - } - - error_log(sprintf('%s [%s] %s', date(\DateTimeInterface::RFC3339), $level, $message)); - } - } -} diff --git a/vendor/symfony/error-handler/CHANGELOG.md b/vendor/symfony/error-handler/CHANGELOG.md deleted file mode 100644 index 6a5e8fb6..00000000 --- a/vendor/symfony/error-handler/CHANGELOG.md +++ /dev/null @@ -1,40 +0,0 @@ -CHANGELOG -========= - -6.4 ---- - - * `FlattenExceptionNormalizer` no longer implements `ContextAwareNormalizerInterface` - -6.3 ---- - - * Display exception properties in the HTML error page - -6.1 ---- - - * Report overridden `@final` constants and properties - * Read environment variable `SYMFONY_IDE` to configure file link format - -5.4 ---- - - * Make `DebugClassLoader` trigger deprecation notices on missing return types - * Add `SYMFONY_PATCH_TYPE_DECLARATIONS='force=2'` mode to `DebugClassLoader` to turn annotations into native return types - -5.2.0 ------ - - * added the ability to set `HtmlErrorRenderer::$template` to a custom template to render when not in debug mode. - -5.1.0 ------ - - * The `HtmlErrorRenderer` and `SerializerErrorRenderer` add `X-Debug-Exception` and `X-Debug-Exception-File` headers in debug mode. - -4.4.0 ------ - - * added the component - * added `ErrorHandler::call()` method utility to turn any PHP error into `\ErrorException` diff --git a/vendor/symfony/error-handler/Debug.php b/vendor/symfony/error-handler/Debug.php deleted file mode 100644 index d54a38c4..00000000 --- a/vendor/symfony/error-handler/Debug.php +++ /dev/null @@ -1,40 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler; - -/** - * Registers all the debug tools. - * - * @author Fabien Potencier - */ -class Debug -{ - public static function enable(): ErrorHandler - { - error_reporting(-1); - - if (!\in_array(\PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) { - ini_set('display_errors', 0); - } elseif (!filter_var(\ini_get('log_errors'), \FILTER_VALIDATE_BOOL) || \ini_get('error_log')) { - // CLI - display errors only if they're not already logged to STDERR - ini_set('display_errors', 1); - } - - @ini_set('zend.assertions', 1); - ini_set('assert.active', 1); - ini_set('assert.exception', 1); - - DebugClassLoader::enable(); - - return ErrorHandler::register(new ErrorHandler(new BufferingLogger(), true)); - } -} diff --git a/vendor/symfony/error-handler/DebugClassLoader.php b/vendor/symfony/error-handler/DebugClassLoader.php deleted file mode 100644 index 16af2d06..00000000 --- a/vendor/symfony/error-handler/DebugClassLoader.php +++ /dev/null @@ -1,1273 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler; - -use Composer\InstalledVersions; -use Doctrine\Common\Persistence\Proxy as LegacyProxy; -use Doctrine\Persistence\Proxy; -use Mockery\MockInterface; -use Phake\IMock; -use PHPUnit\Framework\MockObject\Matcher\StatelessInvocation; -use PHPUnit\Framework\MockObject\MockObject; -use Prophecy\Prophecy\ProphecySubjectInterface; -use ProxyManager\Proxy\ProxyInterface; -use Symfony\Component\ErrorHandler\Internal\TentativeTypes; -use Symfony\Component\VarExporter\LazyObjectInterface; - -/** - * Autoloader checking if the class is really defined in the file found. - * - * The ClassLoader will wrap all registered autoloaders - * and will throw an exception if a file is found but does - * not declare the class. - * - * It can also patch classes to turn docblocks into actual return types. - * This behavior is controlled by the SYMFONY_PATCH_TYPE_DECLARATIONS env var, - * which is a url-encoded array with the follow parameters: - * - "force": any value enables deprecation notices - can be any of: - * - "phpdoc" to patch only docblock annotations - * - "2" to add all possible return types - * - "1" to add return types but only to tests/final/internal/private methods - * - "php": the target version of PHP - e.g. "7.1" doesn't generate "object" types - * - "deprecations": "1" to trigger a deprecation notice when a child class misses a - * return type while the parent declares an "@return" annotation - * - * Note that patching doesn't care about any coding style so you'd better to run - * php-cs-fixer after, with rules "phpdoc_trim_consecutive_blank_line_separation" - * and "no_superfluous_phpdoc_tags" enabled typically. - * - * @author Fabien Potencier - * @author Christophe Coevoet - * @author Nicolas Grekas - * @author Guilhem Niot - */ -class DebugClassLoader -{ - private const SPECIAL_RETURN_TYPES = [ - 'void' => 'void', - 'null' => 'null', - 'resource' => 'resource', - 'boolean' => 'bool', - 'true' => 'true', - 'false' => 'false', - 'integer' => 'int', - 'array' => 'array', - 'bool' => 'bool', - 'callable' => 'callable', - 'float' => 'float', - 'int' => 'int', - 'iterable' => 'iterable', - 'object' => 'object', - 'string' => 'string', - 'self' => 'self', - 'parent' => 'parent', - 'mixed' => 'mixed', - 'static' => 'static', - '$this' => 'static', - 'list' => 'array', - 'class-string' => 'string', - 'never' => 'never', - ]; - - private const BUILTIN_RETURN_TYPES = [ - 'void' => true, - 'array' => true, - 'false' => true, - 'bool' => true, - 'callable' => true, - 'float' => true, - 'int' => true, - 'iterable' => true, - 'object' => true, - 'string' => true, - 'self' => true, - 'parent' => true, - 'mixed' => true, - 'static' => true, - 'null' => true, - 'true' => true, - 'never' => true, - ]; - - private const MAGIC_METHODS = [ - '__isset' => 'bool', - '__sleep' => 'array', - '__toString' => 'string', - '__debugInfo' => 'array', - '__serialize' => 'array', - ]; - - /** - * @var callable - */ - private $classLoader; - private bool $isFinder; - private array $loaded = []; - private array $patchTypes = []; - - private static int $caseCheck; - private static array $checkedClasses = []; - private static array $final = []; - private static array $finalMethods = []; - private static array $finalProperties = []; - private static array $finalConstants = []; - private static array $deprecated = []; - private static array $internal = []; - private static array $internalMethods = []; - private static array $annotatedParameters = []; - private static array $darwinCache = ['/' => ['/', []]]; - private static array $method = []; - private static array $returnTypes = []; - private static array $methodTraits = []; - private static array $fileOffsets = []; - - public function __construct(callable $classLoader) - { - $this->classLoader = $classLoader; - $this->isFinder = \is_array($classLoader) && method_exists($classLoader[0], 'findFile'); - parse_str($_ENV['SYMFONY_PATCH_TYPE_DECLARATIONS'] ?? $_SERVER['SYMFONY_PATCH_TYPE_DECLARATIONS'] ?? getenv('SYMFONY_PATCH_TYPE_DECLARATIONS') ?: '', $this->patchTypes); - $this->patchTypes += [ - 'force' => null, - 'php' => \PHP_MAJOR_VERSION.'.'.\PHP_MINOR_VERSION, - 'deprecations' => true, - ]; - - if ('phpdoc' === $this->patchTypes['force']) { - $this->patchTypes['force'] = 'docblock'; - } - - if (!isset(self::$caseCheck)) { - $file = is_file(__FILE__) ? __FILE__ : rtrim(realpath('.'), \DIRECTORY_SEPARATOR); - $i = strrpos($file, \DIRECTORY_SEPARATOR); - $dir = substr($file, 0, 1 + $i); - $file = substr($file, 1 + $i); - $test = strtoupper($file) === $file ? strtolower($file) : strtoupper($file); - $test = realpath($dir.$test); - - if (false === $test || false === $i) { - // filesystem is case sensitive - self::$caseCheck = 0; - } elseif (str_ends_with($test, $file)) { - // filesystem is case insensitive and realpath() normalizes the case of characters - self::$caseCheck = 1; - } elseif ('Darwin' === \PHP_OS_FAMILY) { - // on MacOSX, HFS+ is case insensitive but realpath() doesn't normalize the case of characters - self::$caseCheck = 2; - } else { - // filesystem case checks failed, fallback to disabling them - self::$caseCheck = 0; - } - } - } - - public function getClassLoader(): callable - { - return $this->classLoader; - } - - /** - * Wraps all autoloaders. - */ - public static function enable(): void - { - // Ensures we don't hit https://bugs.php.net/42098 - class_exists(\Symfony\Component\ErrorHandler\ErrorHandler::class); - class_exists(\Psr\Log\LogLevel::class); - - if (!\is_array($functions = spl_autoload_functions())) { - return; - } - - foreach ($functions as $function) { - spl_autoload_unregister($function); - } - - foreach ($functions as $function) { - if (!\is_array($function) || !$function[0] instanceof self) { - $function = [new static($function), 'loadClass']; - } - - spl_autoload_register($function); - } - } - - /** - * Disables the wrapping. - */ - public static function disable(): void - { - if (!\is_array($functions = spl_autoload_functions())) { - return; - } - - foreach ($functions as $function) { - spl_autoload_unregister($function); - } - - foreach ($functions as $function) { - if (\is_array($function) && $function[0] instanceof self) { - $function = $function[0]->getClassLoader(); - } - - spl_autoload_register($function); - } - } - - public static function checkClasses(): bool - { - if (!\is_array($functions = spl_autoload_functions())) { - return false; - } - - $loader = null; - - foreach ($functions as $function) { - if (\is_array($function) && $function[0] instanceof self) { - $loader = $function[0]; - break; - } - } - - if (null === $loader) { - return false; - } - - static $offsets = [ - 'get_declared_interfaces' => 0, - 'get_declared_traits' => 0, - 'get_declared_classes' => 0, - ]; - - foreach ($offsets as $getSymbols => $i) { - $symbols = $getSymbols(); - - for (; $i < \count($symbols); ++$i) { - if (!is_subclass_of($symbols[$i], MockObject::class) - && !is_subclass_of($symbols[$i], ProphecySubjectInterface::class) - && !is_subclass_of($symbols[$i], Proxy::class) - && !is_subclass_of($symbols[$i], ProxyInterface::class) - && !is_subclass_of($symbols[$i], LazyObjectInterface::class) - && !is_subclass_of($symbols[$i], LegacyProxy::class) - && !is_subclass_of($symbols[$i], MockInterface::class) - && !is_subclass_of($symbols[$i], IMock::class) - ) { - $loader->checkClass($symbols[$i]); - } - } - - $offsets[$getSymbols] = $i; - } - - return true; - } - - public function findFile(string $class): ?string - { - return $this->isFinder ? ($this->classLoader[0]->findFile($class) ?: null) : null; - } - - /** - * Loads the given class or interface. - * - * @throws \RuntimeException - */ - public function loadClass(string $class): void - { - $e = error_reporting(error_reporting() | \E_PARSE | \E_ERROR | \E_CORE_ERROR | \E_COMPILE_ERROR); - - try { - if ($this->isFinder && !isset($this->loaded[$class])) { - $this->loaded[$class] = true; - if (!$file = $this->classLoader[0]->findFile($class) ?: '') { - // no-op - } elseif (\function_exists('opcache_is_script_cached') && @opcache_is_script_cached($file)) { - include $file; - - return; - } elseif (false === include $file) { - return; - } - } else { - ($this->classLoader)($class); - $file = ''; - } - } finally { - error_reporting($e); - } - - $this->checkClass($class, $file); - } - - private function checkClass(string $class, string $file = null): void - { - $exists = null === $file || class_exists($class, false) || interface_exists($class, false) || trait_exists($class, false); - - if (null !== $file && $class && '\\' === $class[0]) { - $class = substr($class, 1); - } - - if ($exists) { - if (isset(self::$checkedClasses[$class])) { - return; - } - self::$checkedClasses[$class] = true; - - $refl = new \ReflectionClass($class); - if (null === $file && $refl->isInternal()) { - return; - } - $name = $refl->getName(); - - if ($name !== $class && 0 === strcasecmp($name, $class)) { - throw new \RuntimeException(sprintf('Case mismatch between loaded and declared class names: "%s" vs "%s".', $class, $name)); - } - - $deprecations = $this->checkAnnotations($refl, $name); - - foreach ($deprecations as $message) { - @trigger_error($message, \E_USER_DEPRECATED); - } - } - - if (!$file) { - return; - } - - if (!$exists) { - if (str_contains($class, '/')) { - throw new \RuntimeException(sprintf('Trying to autoload a class with an invalid name "%s". Be careful that the namespace separator is "\" in PHP, not "/".', $class)); - } - - throw new \RuntimeException(sprintf('The autoloader expected class "%s" to be defined in file "%s". The file was found but the class was not in it, the class name or namespace probably has a typo.', $class, $file)); - } - - if (self::$caseCheck && $message = $this->checkCase($refl, $file, $class)) { - throw new \RuntimeException(sprintf('Case mismatch between class and real file names: "%s" vs "%s" in "%s".', $message[0], $message[1], $message[2])); - } - } - - public function checkAnnotations(\ReflectionClass $refl, string $class): array - { - if ( - 'Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerForV7' === $class - || 'Symfony\Bridge\PhpUnit\Legacy\SymfonyTestsListenerForV6' === $class - ) { - return []; - } - $deprecations = []; - - $className = str_contains($class, "@anonymous\0") ? (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous' : $class; - - // Don't trigger deprecations for classes in the same vendor - if ($class !== $className) { - $vendor = preg_match('/^namespace ([^;\\\\\s]++)[;\\\\]/m', @file_get_contents($refl->getFileName()), $vendor) ? $vendor[1].'\\' : ''; - $vendorLen = \strlen($vendor); - } elseif (2 > $vendorLen = 1 + (strpos($class, '\\') ?: strpos($class, '_'))) { - $vendorLen = 0; - $vendor = ''; - } else { - $vendor = str_replace('_', '\\', substr($class, 0, $vendorLen)); - } - - $parent = get_parent_class($class) ?: null; - self::$returnTypes[$class] = []; - $classIsTemplate = false; - - // Detect annotations on the class - if ($doc = $this->parsePhpDoc($refl)) { - $classIsTemplate = isset($doc['template']) || isset($doc['template-covariant']); - - foreach (['final', 'deprecated', 'internal'] as $annotation) { - if (null !== $description = $doc[$annotation][0] ?? null) { - self::${$annotation}[$class] = '' !== $description ? ' '.$description.(preg_match('/[.!]$/', $description) ? '' : '.') : '.'; - } - } - - if ($refl->isInterface() && isset($doc['method'])) { - foreach ($doc['method'] as $name => [$static, $returnType, $signature, $description]) { - self::$method[$class][] = [$class, $static, $returnType, $name.$signature, $description]; - - if ('' !== $returnType) { - $this->setReturnType($returnType, $refl->name, $name, $refl->getFileName(), $parent); - } - } - } - } - - $parentAndOwnInterfaces = $this->getOwnInterfaces($class, $parent); - if ($parent) { - $parentAndOwnInterfaces[$parent] = $parent; - - if (!isset(self::$checkedClasses[$parent])) { - $this->checkClass($parent); - } - - if (isset(self::$final[$parent])) { - $deprecations[] = sprintf('The "%s" class is considered final%s It may change without further notice as of its next major version. You should not extend it from "%s".', $parent, self::$final[$parent], $className); - } - } - - // Detect if the parent is annotated - foreach ($parentAndOwnInterfaces + class_uses($class, false) as $use) { - if (!isset(self::$checkedClasses[$use])) { - $this->checkClass($use); - } - if (isset(self::$deprecated[$use]) && strncmp($vendor, str_replace('_', '\\', $use), $vendorLen) && !isset(self::$deprecated[$class])) { - $type = class_exists($class, false) ? 'class' : (interface_exists($class, false) ? 'interface' : 'trait'); - $verb = class_exists($use, false) || interface_exists($class, false) ? 'extends' : (interface_exists($use, false) ? 'implements' : 'uses'); - - $deprecations[] = sprintf('The "%s" %s %s "%s" that is deprecated%s', $className, $type, $verb, $use, self::$deprecated[$use]); - } - if (isset(self::$internal[$use]) && strncmp($vendor, str_replace('_', '\\', $use), $vendorLen)) { - $deprecations[] = sprintf('The "%s" %s is considered internal%s It may change without further notice. You should not use it from "%s".', $use, class_exists($use, false) ? 'class' : (interface_exists($use, false) ? 'interface' : 'trait'), self::$internal[$use], $className); - } - if (isset(self::$method[$use])) { - if ($refl->isAbstract()) { - if (isset(self::$method[$class])) { - self::$method[$class] = array_merge(self::$method[$class], self::$method[$use]); - } else { - self::$method[$class] = self::$method[$use]; - } - } elseif (!$refl->isInterface()) { - if (!strncmp($vendor, str_replace('_', '\\', $use), $vendorLen) - && str_starts_with($className, 'Symfony\\') - && (!class_exists(InstalledVersions::class) - || 'symfony/symfony' !== InstalledVersions::getRootPackage()['name']) - ) { - // skip "same vendor" @method deprecations for Symfony\* classes unless symfony/symfony is being tested - continue; - } - $hasCall = $refl->hasMethod('__call'); - $hasStaticCall = $refl->hasMethod('__callStatic'); - foreach (self::$method[$use] as [$interface, $static, $returnType, $name, $description]) { - if ($static ? $hasStaticCall : $hasCall) { - continue; - } - $realName = substr($name, 0, strpos($name, '(')); - if (!$refl->hasMethod($realName) || !($methodRefl = $refl->getMethod($realName))->isPublic() || ($static && !$methodRefl->isStatic()) || (!$static && $methodRefl->isStatic())) { - $deprecations[] = sprintf('Class "%s" should implement method "%s::%s%s"%s', $className, ($static ? 'static ' : '').$interface, $name, $returnType ? ': '.$returnType : '', null === $description ? '.' : ': '.$description); - } - } - } - } - } - - if (trait_exists($class)) { - $file = $refl->getFileName(); - - foreach ($refl->getMethods() as $method) { - if ($method->getFileName() === $file) { - self::$methodTraits[$file][$method->getStartLine()] = $class; - } - } - - return $deprecations; - } - - // Inherit @final, @internal, @param and @return annotations for methods - self::$finalMethods[$class] = []; - self::$internalMethods[$class] = []; - self::$annotatedParameters[$class] = []; - self::$finalProperties[$class] = []; - self::$finalConstants[$class] = []; - foreach ($parentAndOwnInterfaces as $use) { - foreach (['finalMethods', 'internalMethods', 'annotatedParameters', 'returnTypes', 'finalProperties', 'finalConstants'] as $property) { - if (isset(self::${$property}[$use])) { - self::${$property}[$class] = self::${$property}[$class] ? self::${$property}[$use] + self::${$property}[$class] : self::${$property}[$use]; - } - } - - if (null !== (TentativeTypes::RETURN_TYPES[$use] ?? null)) { - foreach (TentativeTypes::RETURN_TYPES[$use] as $method => $returnType) { - $returnType = explode('|', $returnType); - foreach ($returnType as $i => $t) { - if ('?' !== $t && !isset(self::BUILTIN_RETURN_TYPES[$t])) { - $returnType[$i] = '\\'.$t; - } - } - $returnType = implode('|', $returnType); - - self::$returnTypes[$class] += [$method => [$returnType, str_starts_with($returnType, '?') ? substr($returnType, 1).'|null' : $returnType, $use, '']]; - } - } - } - - foreach ($refl->getMethods() as $method) { - if ($method->class !== $class) { - continue; - } - - if (null === $ns = self::$methodTraits[$method->getFileName()][$method->getStartLine()] ?? null) { - $ns = $vendor; - $len = $vendorLen; - } elseif (2 > $len = 1 + (strpos($ns, '\\') ?: strpos($ns, '_'))) { - $len = 0; - $ns = ''; - } else { - $ns = str_replace('_', '\\', substr($ns, 0, $len)); - } - - if ($parent && isset(self::$finalMethods[$parent][$method->name])) { - [$declaringClass, $message] = self::$finalMethods[$parent][$method->name]; - $deprecations[] = sprintf('The "%s::%s()" method is considered final%s It may change without further notice as of its next major version. You should not extend it from "%s".', $declaringClass, $method->name, $message, $className); - } - - if (isset(self::$internalMethods[$class][$method->name])) { - [$declaringClass, $message] = self::$internalMethods[$class][$method->name]; - if (strncmp($ns, $declaringClass, $len)) { - $deprecations[] = sprintf('The "%s::%s()" method is considered internal%s It may change without further notice. You should not extend it from "%s".', $declaringClass, $method->name, $message, $className); - } - } - - // To read method annotations - $doc = $this->parsePhpDoc($method); - - if (($classIsTemplate || isset($doc['template']) || isset($doc['template-covariant'])) && $method->hasReturnType()) { - unset($doc['return']); - } - - if (isset(self::$annotatedParameters[$class][$method->name])) { - $definedParameters = []; - foreach ($method->getParameters() as $parameter) { - $definedParameters[$parameter->name] = true; - } - - foreach (self::$annotatedParameters[$class][$method->name] as $parameterName => $deprecation) { - if (!isset($definedParameters[$parameterName]) && !isset($doc['param'][$parameterName])) { - $deprecations[] = sprintf($deprecation, $className); - } - } - } - - $forcePatchTypes = $this->patchTypes['force']; - - if ($canAddReturnType = null !== $forcePatchTypes && !str_contains($method->getFileName(), \DIRECTORY_SEPARATOR.'vendor'.\DIRECTORY_SEPARATOR)) { - if ('void' !== (self::MAGIC_METHODS[$method->name] ?? 'void')) { - $this->patchTypes['force'] = $forcePatchTypes ?: 'docblock'; - } - - $canAddReturnType = 2 === (int) $forcePatchTypes - || false !== stripos($method->getFileName(), \DIRECTORY_SEPARATOR.'Tests'.\DIRECTORY_SEPARATOR) - || $refl->isFinal() - || $method->isFinal() - || $method->isPrivate() - || ('.' === (self::$internal[$class] ?? null) && !$refl->isAbstract()) - || '.' === (self::$final[$class] ?? null) - || '' === ($doc['final'][0] ?? null) - || '' === ($doc['internal'][0] ?? null) - ; - } - - if (null !== ($returnType = self::$returnTypes[$class][$method->name] ?? null) && 'docblock' === $this->patchTypes['force'] && !$method->hasReturnType() && isset(TentativeTypes::RETURN_TYPES[$returnType[2]][$method->name])) { - $this->patchReturnTypeWillChange($method); - } - - if (null !== ($returnType ??= self::MAGIC_METHODS[$method->name] ?? null) && !$method->hasReturnType() && !isset($doc['return'])) { - [$normalizedType, $returnType, $declaringClass, $declaringFile] = \is_string($returnType) ? [$returnType, $returnType, '', ''] : $returnType; - - if ($canAddReturnType && 'docblock' !== $this->patchTypes['force']) { - $this->patchMethod($method, $returnType, $declaringFile, $normalizedType); - } - if (!isset($doc['deprecated']) && strncmp($ns, $declaringClass, $len)) { - if ('docblock' === $this->patchTypes['force']) { - $this->patchMethod($method, $returnType, $declaringFile, $normalizedType); - } elseif ('' !== $declaringClass && $this->patchTypes['deprecations']) { - $deprecations[] = sprintf('Method "%s::%s()" might add "%s" as a native return type declaration in the future. Do the same in %s "%s" now to avoid errors or add an explicit @return annotation to suppress this message.', $declaringClass, $method->name, $normalizedType, interface_exists($declaringClass) ? 'implementation' : 'child class', $className); - } - } - } - - if (!$doc) { - $this->patchTypes['force'] = $forcePatchTypes; - - continue; - } - - if (isset($doc['return']) || 'void' !== (self::MAGIC_METHODS[$method->name] ?? 'void')) { - $this->setReturnType($doc['return'] ?? self::MAGIC_METHODS[$method->name], $method->class, $method->name, $method->getFileName(), $parent, $method->getReturnType()); - - if (isset(self::$returnTypes[$class][$method->name][0]) && $canAddReturnType) { - $this->fixReturnStatements($method, self::$returnTypes[$class][$method->name][0]); - } - - if ($method->isPrivate()) { - unset(self::$returnTypes[$class][$method->name]); - } - } - - $this->patchTypes['force'] = $forcePatchTypes; - - if ($method->isPrivate()) { - continue; - } - - $finalOrInternal = false; - - foreach (['final', 'internal'] as $annotation) { - if (null !== $description = $doc[$annotation][0] ?? null) { - self::${$annotation.'Methods'}[$class][$method->name] = [$class, '' !== $description ? ' '.$description.(preg_match('/[[:punct:]]$/', $description) ? '' : '.') : '.']; - $finalOrInternal = true; - } - } - - if ($finalOrInternal || $method->isConstructor() || !isset($doc['param']) || StatelessInvocation::class === $class) { - continue; - } - if (!isset(self::$annotatedParameters[$class][$method->name])) { - $definedParameters = []; - foreach ($method->getParameters() as $parameter) { - $definedParameters[$parameter->name] = true; - } - } - foreach ($doc['param'] as $parameterName => $parameterType) { - if (!isset($definedParameters[$parameterName])) { - self::$annotatedParameters[$class][$method->name][$parameterName] = sprintf('The "%%s::%s()" method will require a new "%s$%s" argument in the next major version of its %s "%s", not defining it is deprecated.', $method->name, $parameterType ? $parameterType.' ' : '', $parameterName, interface_exists($className) ? 'interface' : 'parent class', $className); - } - } - } - - $finals = isset(self::$final[$class]) || $refl->isFinal() ? [] : [ - 'finalConstants' => $refl->getReflectionConstants(\ReflectionClassConstant::IS_PUBLIC | \ReflectionClassConstant::IS_PROTECTED), - 'finalProperties' => $refl->getProperties(\ReflectionProperty::IS_PUBLIC | \ReflectionProperty::IS_PROTECTED), - ]; - foreach ($finals as $type => $reflectors) { - foreach ($reflectors as $r) { - if ($r->class !== $class) { - continue; - } - - $doc = $this->parsePhpDoc($r); - - foreach ($parentAndOwnInterfaces as $use) { - if (isset(self::${$type}[$use][$r->name]) && !isset($doc['deprecated']) && ('finalConstants' === $type || substr($use, 0, strrpos($use, '\\')) !== substr($use, 0, strrpos($class, '\\')))) { - $msg = 'finalConstants' === $type ? '%s" constant' : '$%s" property'; - $deprecations[] = sprintf('The "%s::'.$msg.' is considered final. You should not override it in "%s".', self::${$type}[$use][$r->name], $r->name, $class); - } - } - - if (isset($doc['final']) || ('finalProperties' === $type && str_starts_with($class, 'Symfony\\') && !$r->hasType())) { - self::${$type}[$class][$r->name] = $class; - } - } - } - - return $deprecations; - } - - public function checkCase(\ReflectionClass $refl, string $file, string $class): ?array - { - $real = explode('\\', $class.strrchr($file, '.')); - $tail = explode(\DIRECTORY_SEPARATOR, str_replace('/', \DIRECTORY_SEPARATOR, $file)); - - $i = \count($tail) - 1; - $j = \count($real) - 1; - - while (isset($tail[$i], $real[$j]) && $tail[$i] === $real[$j]) { - --$i; - --$j; - } - - array_splice($tail, 0, $i + 1); - - if (!$tail) { - return null; - } - - $tail = \DIRECTORY_SEPARATOR.implode(\DIRECTORY_SEPARATOR, $tail); - $tailLen = \strlen($tail); - $real = $refl->getFileName(); - - if (2 === self::$caseCheck) { - $real = $this->darwinRealpath($real); - } - - if (0 === substr_compare($real, $tail, -$tailLen, $tailLen, true) - && 0 !== substr_compare($real, $tail, -$tailLen, $tailLen, false) - ) { - return [substr($tail, -$tailLen + 1), substr($real, -$tailLen + 1), substr($real, 0, -$tailLen + 1)]; - } - - return null; - } - - /** - * `realpath` on MacOSX doesn't normalize the case of characters. - */ - private function darwinRealpath(string $real): string - { - $i = 1 + strrpos($real, '/'); - $file = substr($real, $i); - $real = substr($real, 0, $i); - - if (isset(self::$darwinCache[$real])) { - $kDir = $real; - } else { - $kDir = strtolower($real); - - if (isset(self::$darwinCache[$kDir])) { - $real = self::$darwinCache[$kDir][0]; - } else { - $dir = getcwd(); - - if (!@chdir($real)) { - return $real.$file; - } - - $real = getcwd().'/'; - chdir($dir); - - $dir = $real; - $k = $kDir; - $i = \strlen($dir) - 1; - while (!isset(self::$darwinCache[$k])) { - self::$darwinCache[$k] = [$dir, []]; - self::$darwinCache[$dir] = &self::$darwinCache[$k]; - - while ('/' !== $dir[--$i]) { - } - $k = substr($k, 0, ++$i); - $dir = substr($dir, 0, $i--); - } - } - } - - $dirFiles = self::$darwinCache[$kDir][1]; - - if (!isset($dirFiles[$file]) && str_ends_with($file, ') : eval()\'d code')) { - // Get the file name from "file_name.php(123) : eval()'d code" - $file = substr($file, 0, strrpos($file, '(', -17)); - } - - if (isset($dirFiles[$file])) { - return $real.$dirFiles[$file]; - } - - $kFile = strtolower($file); - - if (!isset($dirFiles[$kFile])) { - foreach (scandir($real, 2) as $f) { - if ('.' !== $f[0]) { - $dirFiles[$f] = $f; - if ($f === $file) { - $kFile = $file; - } elseif ($f !== $k = strtolower($f)) { - $dirFiles[$k] = $f; - } - } - } - self::$darwinCache[$kDir][1] = $dirFiles; - } - - return $real.$dirFiles[$kFile]; - } - - /** - * `class_implements` includes interfaces from the parents so we have to manually exclude them. - * - * @return string[] - */ - private function getOwnInterfaces(string $class, ?string $parent): array - { - $ownInterfaces = class_implements($class, false); - - if ($parent) { - foreach (class_implements($parent, false) as $interface) { - unset($ownInterfaces[$interface]); - } - } - - foreach ($ownInterfaces as $interface) { - foreach (class_implements($interface) as $interface) { - unset($ownInterfaces[$interface]); - } - } - - return $ownInterfaces; - } - - private function setReturnType(string $types, string $class, string $method, string $filename, ?string $parent, \ReflectionType $returnType = null): void - { - if ('__construct' === $method) { - return; - } - - if ('null' === $types) { - self::$returnTypes[$class][$method] = ['null', 'null', $class, $filename]; - - return; - } - - if ($nullable = str_starts_with($types, 'null|')) { - $types = substr($types, 5); - } elseif ($nullable = str_ends_with($types, '|null')) { - $types = substr($types, 0, -5); - } - $arrayType = ['array' => 'array']; - $typesMap = []; - $glue = str_contains($types, '&') ? '&' : '|'; - foreach (explode($glue, $types) as $t) { - $t = self::SPECIAL_RETURN_TYPES[strtolower($t)] ?? $t; - $typesMap[$this->normalizeType($t, $class, $parent, $returnType)][$t] = $t; - } - - if (isset($typesMap['array'])) { - if (isset($typesMap['Traversable']) || isset($typesMap['\Traversable'])) { - $typesMap['iterable'] = $arrayType !== $typesMap['array'] ? $typesMap['array'] : ['iterable']; - unset($typesMap['array'], $typesMap['Traversable'], $typesMap['\Traversable']); - } elseif ($arrayType !== $typesMap['array'] && isset(self::$returnTypes[$class][$method]) && !$returnType) { - return; - } - } - - if (isset($typesMap['array']) && isset($typesMap['iterable'])) { - if ($arrayType !== $typesMap['array']) { - $typesMap['iterable'] = $typesMap['array']; - } - unset($typesMap['array']); - } - - $iterable = $object = true; - foreach ($typesMap as $n => $t) { - if ('null' !== $n) { - $iterable = $iterable && (\in_array($n, ['array', 'iterable']) || str_contains($n, 'Iterator')); - $object = $object && (\in_array($n, ['callable', 'object', '$this', 'static']) || !isset(self::SPECIAL_RETURN_TYPES[$n])); - } - } - - $phpTypes = []; - $docTypes = []; - - foreach ($typesMap as $n => $t) { - if ('null' === $n) { - $nullable = true; - continue; - } - - $docTypes[] = $t; - - if ('mixed' === $n || 'void' === $n) { - $nullable = false; - $phpTypes = ['' => $n]; - continue; - } - - if ('resource' === $n) { - // there is no native type for "resource" - return; - } - - if (!preg_match('/^(?:\\\\?[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*)+$/', $n)) { - // exclude any invalid PHP class name (e.g. `Cookie::SAMESITE_*`) - continue; - } - - if (!isset($phpTypes[''])) { - $phpTypes[] = $n; - } - } - $docTypes = array_merge([], ...$docTypes); - - if (!$phpTypes) { - return; - } - - if (1 < \count($phpTypes)) { - if ($iterable && '8.0' > $this->patchTypes['php']) { - $phpTypes = $docTypes = ['iterable']; - } elseif ($object && 'object' === $this->patchTypes['force']) { - $phpTypes = $docTypes = ['object']; - } elseif ('8.0' > $this->patchTypes['php']) { - // ignore multi-types return declarations - return; - } - } - - $phpType = sprintf($nullable ? (1 < \count($phpTypes) ? '%s|null' : '?%s') : '%s', implode($glue, $phpTypes)); - $docType = sprintf($nullable ? '%s|null' : '%s', implode($glue, $docTypes)); - - self::$returnTypes[$class][$method] = [$phpType, $docType, $class, $filename]; - } - - private function normalizeType(string $type, string $class, ?string $parent, ?\ReflectionType $returnType): string - { - if (isset(self::SPECIAL_RETURN_TYPES[$lcType = strtolower($type)])) { - if ('parent' === $lcType = self::SPECIAL_RETURN_TYPES[$lcType]) { - $lcType = null !== $parent ? '\\'.$parent : 'parent'; - } elseif ('self' === $lcType) { - $lcType = '\\'.$class; - } - - return $lcType; - } - - // We could resolve "use" statements to return the FQDN - // but this would be too expensive for a runtime checker - - if (!str_ends_with($type, '[]')) { - return $type; - } - - if ($returnType instanceof \ReflectionNamedType) { - $type = $returnType->getName(); - - if ('mixed' !== $type) { - return isset(self::SPECIAL_RETURN_TYPES[$type]) ? $type : '\\'.$type; - } - } - - return 'array'; - } - - /** - * Utility method to add #[ReturnTypeWillChange] where php triggers deprecations. - */ - private function patchReturnTypeWillChange(\ReflectionMethod $method): void - { - if (\count($method->getAttributes(\ReturnTypeWillChange::class))) { - return; - } - - if (!is_file($file = $method->getFileName())) { - return; - } - - $fileOffset = self::$fileOffsets[$file] ?? 0; - - $code = file($file); - - $startLine = $method->getStartLine() + $fileOffset - 2; - - if (false !== stripos($code[$startLine], 'ReturnTypeWillChange')) { - return; - } - - $code[$startLine] .= " #[\\ReturnTypeWillChange]\n"; - self::$fileOffsets[$file] = 1 + $fileOffset; - file_put_contents($file, $code); - } - - /** - * Utility method to add @return annotations to the Symfony code-base where it triggers self-deprecations. - */ - private function patchMethod(\ReflectionMethod $method, string $returnType, string $declaringFile, string $normalizedType): void - { - static $patchedMethods = []; - static $useStatements = []; - - if (!is_file($file = $method->getFileName()) || isset($patchedMethods[$file][$startLine = $method->getStartLine()])) { - return; - } - - $patchedMethods[$file][$startLine] = true; - $fileOffset = self::$fileOffsets[$file] ?? 0; - $startLine += $fileOffset - 2; - if ($nullable = str_ends_with($returnType, '|null')) { - $returnType = substr($returnType, 0, -5); - } - $glue = str_contains($returnType, '&') ? '&' : '|'; - $returnType = explode($glue, $returnType); - $code = file($file); - - foreach ($returnType as $i => $type) { - if (preg_match('/((?:\[\])+)$/', $type, $m)) { - $type = substr($type, 0, -\strlen($m[1])); - $format = '%s'.$m[1]; - } else { - $format = null; - } - - if (isset(self::SPECIAL_RETURN_TYPES[$type]) || ('\\' === $type[0] && !$p = strrpos($type, '\\', 1))) { - continue; - } - - [$namespace, $useOffset, $useMap] = $useStatements[$file] ??= self::getUseStatements($file); - - if ('\\' !== $type[0]) { - [$declaringNamespace, , $declaringUseMap] = $useStatements[$declaringFile] ??= self::getUseStatements($declaringFile); - - $p = strpos($type, '\\', 1); - $alias = $p ? substr($type, 0, $p) : $type; - - if (isset($declaringUseMap[$alias])) { - $type = '\\'.$declaringUseMap[$alias].($p ? substr($type, $p) : ''); - } else { - $type = '\\'.$declaringNamespace.$type; - } - - $p = strrpos($type, '\\', 1); - } - - $alias = substr($type, 1 + $p); - $type = substr($type, 1); - - if (!isset($useMap[$alias]) && (class_exists($c = $namespace.$alias) || interface_exists($c) || trait_exists($c))) { - $useMap[$alias] = $c; - } - - if (!isset($useMap[$alias])) { - $useStatements[$file][2][$alias] = $type; - $code[$useOffset] = "use $type;\n".$code[$useOffset]; - ++$fileOffset; - } elseif ($useMap[$alias] !== $type) { - $alias .= 'FIXME'; - $useStatements[$file][2][$alias] = $type; - $code[$useOffset] = "use $type as $alias;\n".$code[$useOffset]; - ++$fileOffset; - } - - $returnType[$i] = null !== $format ? sprintf($format, $alias) : $alias; - } - - if ('docblock' === $this->patchTypes['force'] || ('object' === $normalizedType && '7.1' === $this->patchTypes['php'])) { - $returnType = implode($glue, $returnType).($nullable ? '|null' : ''); - - if (str_contains($code[$startLine], '#[')) { - --$startLine; - } - - if ($method->getDocComment()) { - $code[$startLine] = " * @return $returnType\n".$code[$startLine]; - } else { - $code[$startLine] .= <<fixReturnStatements($method, $normalizedType); - } - - private static function getUseStatements(string $file): array - { - $namespace = ''; - $useMap = []; - $useOffset = 0; - - if (!is_file($file)) { - return [$namespace, $useOffset, $useMap]; - } - - $file = file($file); - - for ($i = 0; $i < \count($file); ++$i) { - if (preg_match('/^(class|interface|trait|abstract) /', $file[$i])) { - break; - } - - if (str_starts_with($file[$i], 'namespace ')) { - $namespace = substr($file[$i], \strlen('namespace '), -2).'\\'; - $useOffset = $i + 2; - } - - if (str_starts_with($file[$i], 'use ')) { - $useOffset = $i; - - for (; str_starts_with($file[$i], 'use '); ++$i) { - $u = explode(' as ', substr($file[$i], 4, -2), 2); - - if (1 === \count($u)) { - $p = strrpos($u[0], '\\'); - $useMap[substr($u[0], false !== $p ? 1 + $p : 0)] = $u[0]; - } else { - $useMap[$u[1]] = $u[0]; - } - } - - break; - } - } - - return [$namespace, $useOffset, $useMap]; - } - - private function fixReturnStatements(\ReflectionMethod $method, string $returnType): void - { - if ('docblock' !== $this->patchTypes['force']) { - if ('7.1' === $this->patchTypes['php'] && 'object' === ltrim($returnType, '?')) { - return; - } - - if ('7.4' > $this->patchTypes['php'] && $method->hasReturnType()) { - return; - } - - if ('8.0' > $this->patchTypes['php'] && (str_contains($returnType, '|') || \in_array($returnType, ['mixed', 'static'], true))) { - return; - } - - if ('8.1' > $this->patchTypes['php'] && str_contains($returnType, '&')) { - return; - } - } - - if (!is_file($file = $method->getFileName())) { - return; - } - - $fixedCode = $code = file($file); - $i = (self::$fileOffsets[$file] ?? 0) + $method->getStartLine(); - - if ('?' !== $returnType && 'docblock' !== $this->patchTypes['force']) { - $fixedCode[$i - 1] = preg_replace('/\)(?::[^;\n]++)?(;?\n)/', "): $returnType\\1", $code[$i - 1]); - } - - $end = $method->isGenerator() ? $i : $method->getEndLine(); - $inClosure = false; - $braces = 0; - for (; $i < $end; ++$i) { - if (!$inClosure) { - $inClosure = str_contains($code[$i], 'function ('); - } - - if ($inClosure) { - $braces += substr_count($code[$i], '{') - substr_count($code[$i], '}'); - $inClosure = $braces > 0; - - continue; - } - - if ('void' === $returnType) { - $fixedCode[$i] = str_replace(' return null;', ' return;', $code[$i]); - } elseif ('mixed' === $returnType || '?' === $returnType[0]) { - $fixedCode[$i] = str_replace(' return;', ' return null;', $code[$i]); - } else { - $fixedCode[$i] = str_replace(' return;', " return $returnType!?;", $code[$i]); - } - } - - if ($fixedCode !== $code) { - file_put_contents($file, $fixedCode); - } - } - - /** - * @param \ReflectionClass|\ReflectionMethod|\ReflectionProperty $reflector - */ - private function parsePhpDoc(\Reflector $reflector): array - { - if (!$doc = $reflector->getDocComment()) { - return []; - } - - $tagName = ''; - $tagContent = ''; - - $tags = []; - - foreach (explode("\n", substr($doc, 3, -2)) as $line) { - $line = ltrim($line); - $line = ltrim($line, '*'); - - if ('' === $line = trim($line)) { - if ('' !== $tagName) { - $tags[$tagName][] = $tagContent; - } - $tagName = $tagContent = ''; - continue; - } - - if ('@' === $line[0]) { - if ('' !== $tagName) { - $tags[$tagName][] = $tagContent; - $tagContent = ''; - } - - if (preg_match('{^@([-a-zA-Z0-9_:]++)(\s|$)}', $line, $m)) { - $tagName = $m[1]; - $tagContent = str_replace("\t", ' ', ltrim(substr($line, 2 + \strlen($tagName)))); - } else { - $tagName = ''; - } - } elseif ('' !== $tagName) { - $tagContent .= ' '.str_replace("\t", ' ', $line); - } - } - - if ('' !== $tagName) { - $tags[$tagName][] = $tagContent; - } - - foreach ($tags['method'] ?? [] as $i => $method) { - unset($tags['method'][$i]); - - $parts = preg_split('{(\s++|\((?:[^()]*+|(?R))*\)(?: *: *[^ ]++)?|<(?:[^<>]*+|(?R))*>|\{(?:[^{}]*+|(?R))*\})}', $method, -1, \PREG_SPLIT_DELIM_CAPTURE); - $returnType = ''; - $static = 'static' === $parts[0]; - - for ($i = $static ? 2 : 0; null !== $p = $parts[$i] ?? null; $i += 2) { - if (\in_array($p, ['', '|', '&', 'callable'], true) || \in_array(substr($returnType, -1), ['|', '&'], true)) { - $returnType .= trim($parts[$i - 1] ?? '').$p; - continue; - } - - $signature = '(' === ($parts[$i + 1][0] ?? '(') ? $parts[$i + 1] ?? '()' : null; - - if (null === $signature && '' === $returnType) { - $returnType = $p; - continue; - } - - if ($static && 2 === $i) { - $static = false; - $returnType = 'static'; - } - - if (\in_array($description = trim(implode('', \array_slice($parts, 2 + $i))), ['', '.'], true)) { - $description = null; - } elseif (!preg_match('/[.!]$/', $description)) { - $description .= '.'; - } - - $tags['method'][$p] = [$static, $returnType, $signature ?? '()', $description]; - break; - } - } - - foreach ($tags['param'] ?? [] as $i => $param) { - unset($tags['param'][$i]); - - if (\strlen($param) !== strcspn($param, '<{(')) { - $param = preg_replace('{\(([^()]*+|(?R))*\)(?: *: *[^ ]++)?|<([^<>]*+|(?R))*>|\{([^{}]*+|(?R))*\}}', '', $param); - } - - if (false === $i = strpos($param, '$')) { - continue; - } - - $type = 0 === $i ? '' : rtrim(substr($param, 0, $i), ' &'); - $param = substr($param, 1 + $i, (strpos($param, ' ', $i) ?: (1 + $i + \strlen($param))) - $i - 1); - - $tags['param'][$param] = $type; - } - - foreach (['var', 'return'] as $k) { - if (null === $v = $tags[$k][0] ?? null) { - continue; - } - if (\strlen($v) !== strcspn($v, '<{(')) { - $v = preg_replace('{\(([^()]*+|(?R))*\)(?: *: *[^ ]++)?|<([^<>]*+|(?R))*>|\{([^{}]*+|(?R))*\}}', '', $v); - } - - $tags[$k] = substr($v, 0, strpos($v, ' ') ?: \strlen($v)) ?: null; - } - - return $tags; - } -} diff --git a/vendor/symfony/error-handler/Error/ClassNotFoundError.php b/vendor/symfony/error-handler/Error/ClassNotFoundError.php deleted file mode 100644 index 8a17745c..00000000 --- a/vendor/symfony/error-handler/Error/ClassNotFoundError.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\Error; - -class ClassNotFoundError extends \Error -{ - public function __construct(string $message, \Throwable $previous) - { - parent::__construct($message, $previous->getCode(), $previous->getPrevious()); - - foreach ([ - 'file' => $previous->getFile(), - 'line' => $previous->getLine(), - 'trace' => $previous->getTrace(), - ] as $property => $value) { - $refl = new \ReflectionProperty(\Error::class, $property); - $refl->setValue($this, $value); - } - } -} diff --git a/vendor/symfony/error-handler/Error/FatalError.php b/vendor/symfony/error-handler/Error/FatalError.php deleted file mode 100644 index a1fd5a99..00000000 --- a/vendor/symfony/error-handler/Error/FatalError.php +++ /dev/null @@ -1,83 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\Error; - -class FatalError extends \Error -{ - private array $error; - - /** - * @param array $error An array as returned by error_get_last() - */ - public function __construct(string $message, int $code, array $error, int $traceOffset = null, bool $traceArgs = true, array $trace = null) - { - parent::__construct($message, $code); - - $this->error = $error; - - if (null !== $trace) { - if (!$traceArgs) { - foreach ($trace as &$frame) { - unset($frame['args'], $frame['this'], $frame); - } - } - } elseif (null !== $traceOffset) { - if (\function_exists('xdebug_get_function_stack') && $trace = @xdebug_get_function_stack()) { - if (0 < $traceOffset) { - array_splice($trace, -$traceOffset); - } - - foreach ($trace as &$frame) { - if (!isset($frame['type'])) { - // XDebug pre 2.1.1 doesn't currently set the call type key http://bugs.xdebug.org/view.php?id=695 - if (isset($frame['class'])) { - $frame['type'] = '::'; - } - } elseif ('dynamic' === $frame['type']) { - $frame['type'] = '->'; - } elseif ('static' === $frame['type']) { - $frame['type'] = '::'; - } - - // XDebug also has a different name for the parameters array - if (!$traceArgs) { - unset($frame['params'], $frame['args']); - } elseif (isset($frame['params']) && !isset($frame['args'])) { - $frame['args'] = $frame['params']; - unset($frame['params']); - } - } - - unset($frame); - $trace = array_reverse($trace); - } else { - $trace = []; - } - } - - foreach ([ - 'file' => $error['file'], - 'line' => $error['line'], - 'trace' => $trace, - ] as $property => $value) { - if (null !== $value) { - $refl = new \ReflectionProperty(\Error::class, $property); - $refl->setValue($this, $value); - } - } - } - - public function getError(): array - { - return $this->error; - } -} diff --git a/vendor/symfony/error-handler/Error/OutOfMemoryError.php b/vendor/symfony/error-handler/Error/OutOfMemoryError.php deleted file mode 100644 index d685c3d3..00000000 --- a/vendor/symfony/error-handler/Error/OutOfMemoryError.php +++ /dev/null @@ -1,16 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\Error; - -class OutOfMemoryError extends FatalError -{ -} diff --git a/vendor/symfony/error-handler/Error/UndefinedFunctionError.php b/vendor/symfony/error-handler/Error/UndefinedFunctionError.php deleted file mode 100644 index 5063b73d..00000000 --- a/vendor/symfony/error-handler/Error/UndefinedFunctionError.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\Error; - -class UndefinedFunctionError extends \Error -{ - public function __construct(string $message, \Throwable $previous) - { - parent::__construct($message, $previous->getCode(), $previous->getPrevious()); - - foreach ([ - 'file' => $previous->getFile(), - 'line' => $previous->getLine(), - 'trace' => $previous->getTrace(), - ] as $property => $value) { - $refl = new \ReflectionProperty(\Error::class, $property); - $refl->setValue($this, $value); - } - } -} diff --git a/vendor/symfony/error-handler/Error/UndefinedMethodError.php b/vendor/symfony/error-handler/Error/UndefinedMethodError.php deleted file mode 100644 index 35f15451..00000000 --- a/vendor/symfony/error-handler/Error/UndefinedMethodError.php +++ /dev/null @@ -1,29 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\Error; - -class UndefinedMethodError extends \Error -{ - public function __construct(string $message, \Throwable $previous) - { - parent::__construct($message, $previous->getCode(), $previous->getPrevious()); - - foreach ([ - 'file' => $previous->getFile(), - 'line' => $previous->getLine(), - 'trace' => $previous->getTrace(), - ] as $property => $value) { - $refl = new \ReflectionProperty(\Error::class, $property); - $refl->setValue($this, $value); - } - } -} diff --git a/vendor/symfony/error-handler/ErrorEnhancer/ClassNotFoundErrorEnhancer.php b/vendor/symfony/error-handler/ErrorEnhancer/ClassNotFoundErrorEnhancer.php deleted file mode 100644 index a98075fe..00000000 --- a/vendor/symfony/error-handler/ErrorEnhancer/ClassNotFoundErrorEnhancer.php +++ /dev/null @@ -1,182 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\ErrorEnhancer; - -use Composer\Autoload\ClassLoader; -use Symfony\Component\ErrorHandler\DebugClassLoader; -use Symfony\Component\ErrorHandler\Error\ClassNotFoundError; -use Symfony\Component\ErrorHandler\Error\FatalError; - -/** - * @author Fabien Potencier - */ -class ClassNotFoundErrorEnhancer implements ErrorEnhancerInterface -{ - public function enhance(\Throwable $error): ?\Throwable - { - // Some specific versions of PHP produce a fatal error when extending a not found class. - $message = !$error instanceof FatalError ? $error->getMessage() : $error->getError()['message']; - if (!preg_match('/^(Class|Interface|Trait) [\'"]([^\'"]+)[\'"] not found$/', $message, $matches)) { - return null; - } - $typeName = strtolower($matches[1]); - $fullyQualifiedClassName = $matches[2]; - - if (false !== $namespaceSeparatorIndex = strrpos($fullyQualifiedClassName, '\\')) { - $className = substr($fullyQualifiedClassName, $namespaceSeparatorIndex + 1); - $namespacePrefix = substr($fullyQualifiedClassName, 0, $namespaceSeparatorIndex); - $message = sprintf('Attempted to load %s "%s" from namespace "%s".', $typeName, $className, $namespacePrefix); - $tail = ' for another namespace?'; - } else { - $className = $fullyQualifiedClassName; - $message = sprintf('Attempted to load %s "%s" from the global namespace.', $typeName, $className); - $tail = '?'; - } - - if ($candidates = $this->getClassCandidates($className)) { - $tail = array_pop($candidates).'"?'; - if ($candidates) { - $tail = ' for e.g. "'.implode('", "', $candidates).'" or "'.$tail; - } else { - $tail = ' for "'.$tail; - } - } - $message .= "\nDid you forget a \"use\" statement".$tail; - - return new ClassNotFoundError($message, $error); - } - - /** - * Tries to guess the full namespace for a given class name. - * - * By default, it looks for PSR-0 and PSR-4 classes registered via a Symfony or a Composer - * autoloader (that should cover all common cases). - * - * @param string $class A class name (without its namespace) - * - * Returns an array of possible fully qualified class names - */ - private function getClassCandidates(string $class): array - { - if (!\is_array($functions = spl_autoload_functions())) { - return []; - } - - // find Symfony and Composer autoloaders - $classes = []; - - foreach ($functions as $function) { - if (!\is_array($function)) { - continue; - } - // get class loaders wrapped by DebugClassLoader - if ($function[0] instanceof DebugClassLoader) { - $function = $function[0]->getClassLoader(); - - if (!\is_array($function)) { - continue; - } - } - - if ($function[0] instanceof ClassLoader) { - foreach ($function[0]->getPrefixes() as $prefix => $paths) { - foreach ($paths as $path) { - $classes[] = $this->findClassInPath($path, $class, $prefix); - } - } - - foreach ($function[0]->getPrefixesPsr4() as $prefix => $paths) { - foreach ($paths as $path) { - $classes[] = $this->findClassInPath($path, $class, $prefix); - } - } - } - } - - return array_unique(array_merge([], ...$classes)); - } - - private function findClassInPath(string $path, string $class, string $prefix): array - { - if (!$path = realpath($path.'/'.strtr($prefix, '\\_', '//')) ?: realpath($path.'/'.\dirname(strtr($prefix, '\\_', '//'))) ?: realpath($path)) { - return []; - } - - $classes = []; - $filename = $class.'.php'; - foreach (new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::LEAVES_ONLY) as $file) { - if ($filename == $file->getFileName() && $class = $this->convertFileToClass($path, $file->getPathName(), $prefix)) { - $classes[] = $class; - } - } - - return $classes; - } - - private function convertFileToClass(string $path, string $file, string $prefix): ?string - { - $candidates = [ - // namespaced class - $namespacedClass = str_replace([$path.\DIRECTORY_SEPARATOR, '.php', '/'], ['', '', '\\'], $file), - // namespaced class (with target dir) - $prefix.$namespacedClass, - // namespaced class (with target dir and separator) - $prefix.'\\'.$namespacedClass, - // PEAR class - str_replace('\\', '_', $namespacedClass), - // PEAR class (with target dir) - str_replace('\\', '_', $prefix.$namespacedClass), - // PEAR class (with target dir and separator) - str_replace('\\', '_', $prefix.'\\'.$namespacedClass), - ]; - - if ($prefix) { - $candidates = array_filter($candidates, fn ($candidate) => str_starts_with($candidate, $prefix)); - } - - // We cannot use the autoloader here as most of them use require; but if the class - // is not found, the new autoloader call will require the file again leading to a - // "cannot redeclare class" error. - foreach ($candidates as $candidate) { - if ($this->classExists($candidate)) { - return $candidate; - } - } - - // Symfony may ship some polyfills, like "Normalizer". But if the Intl - // extension is already installed, the next require_once will fail with - // a compile error because the class is already defined. And this one - // does not throw a Throwable. So it's better to skip it here. - if (str_contains($file, 'Resources/stubs')) { - return null; - } - - try { - require_once $file; - } catch (\Throwable) { - return null; - } - - foreach ($candidates as $candidate) { - if ($this->classExists($candidate)) { - return $candidate; - } - } - - return null; - } - - private function classExists(string $class): bool - { - return class_exists($class, false) || interface_exists($class, false) || trait_exists($class, false); - } -} diff --git a/vendor/symfony/error-handler/ErrorEnhancer/ErrorEnhancerInterface.php b/vendor/symfony/error-handler/ErrorEnhancer/ErrorEnhancerInterface.php deleted file mode 100644 index 7c3f4ef9..00000000 --- a/vendor/symfony/error-handler/ErrorEnhancer/ErrorEnhancerInterface.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\ErrorEnhancer; - -interface ErrorEnhancerInterface -{ - /** - * Returns an \Throwable instance if the class is able to improve the error, null otherwise. - */ - public function enhance(\Throwable $error): ?\Throwable; -} diff --git a/vendor/symfony/error-handler/ErrorEnhancer/UndefinedFunctionErrorEnhancer.php b/vendor/symfony/error-handler/ErrorEnhancer/UndefinedFunctionErrorEnhancer.php deleted file mode 100644 index 0458c26a..00000000 --- a/vendor/symfony/error-handler/ErrorEnhancer/UndefinedFunctionErrorEnhancer.php +++ /dev/null @@ -1,84 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\ErrorEnhancer; - -use Symfony\Component\ErrorHandler\Error\FatalError; -use Symfony\Component\ErrorHandler\Error\UndefinedFunctionError; - -/** - * @author Fabien Potencier - */ -class UndefinedFunctionErrorEnhancer implements ErrorEnhancerInterface -{ - public function enhance(\Throwable $error): ?\Throwable - { - if ($error instanceof FatalError) { - return null; - } - - $message = $error->getMessage(); - $messageLen = \strlen($message); - $notFoundSuffix = '()'; - $notFoundSuffixLen = \strlen($notFoundSuffix); - if ($notFoundSuffixLen > $messageLen) { - return null; - } - - if (0 !== substr_compare($message, $notFoundSuffix, -$notFoundSuffixLen)) { - return null; - } - - $prefix = 'Call to undefined function '; - $prefixLen = \strlen($prefix); - if (!str_starts_with($message, $prefix)) { - return null; - } - - $fullyQualifiedFunctionName = substr($message, $prefixLen, -$notFoundSuffixLen); - if (false !== $namespaceSeparatorIndex = strrpos($fullyQualifiedFunctionName, '\\')) { - $functionName = substr($fullyQualifiedFunctionName, $namespaceSeparatorIndex + 1); - $namespacePrefix = substr($fullyQualifiedFunctionName, 0, $namespaceSeparatorIndex); - $message = sprintf('Attempted to call function "%s" from namespace "%s".', $functionName, $namespacePrefix); - } else { - $functionName = $fullyQualifiedFunctionName; - $message = sprintf('Attempted to call function "%s" from the global namespace.', $functionName); - } - - $candidates = []; - foreach (get_defined_functions() as $type => $definedFunctionNames) { - foreach ($definedFunctionNames as $definedFunctionName) { - if (false !== $namespaceSeparatorIndex = strrpos($definedFunctionName, '\\')) { - $definedFunctionNameBasename = substr($definedFunctionName, $namespaceSeparatorIndex + 1); - } else { - $definedFunctionNameBasename = $definedFunctionName; - } - - if ($definedFunctionNameBasename === $functionName) { - $candidates[] = '\\'.$definedFunctionName; - } - } - } - - if ($candidates) { - sort($candidates); - $last = array_pop($candidates).'"?'; - if ($candidates) { - $candidates = 'e.g. "'.implode('", "', $candidates).'" or "'.$last; - } else { - $candidates = '"'.$last; - } - $message .= "\nDid you mean to call ".$candidates; - } - - return new UndefinedFunctionError($message, $error); - } -} diff --git a/vendor/symfony/error-handler/ErrorEnhancer/UndefinedMethodErrorEnhancer.php b/vendor/symfony/error-handler/ErrorEnhancer/UndefinedMethodErrorEnhancer.php deleted file mode 100644 index 80eaec9b..00000000 --- a/vendor/symfony/error-handler/ErrorEnhancer/UndefinedMethodErrorEnhancer.php +++ /dev/null @@ -1,66 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\ErrorEnhancer; - -use Symfony\Component\ErrorHandler\Error\FatalError; -use Symfony\Component\ErrorHandler\Error\UndefinedMethodError; - -/** - * @author Grégoire Pineau - */ -class UndefinedMethodErrorEnhancer implements ErrorEnhancerInterface -{ - public function enhance(\Throwable $error): ?\Throwable - { - if ($error instanceof FatalError) { - return null; - } - - $message = $error->getMessage(); - preg_match('/^Call to undefined method (.*)::(.*)\(\)$/', $message, $matches); - if (!$matches) { - return null; - } - - $className = $matches[1]; - $methodName = $matches[2]; - - $message = sprintf('Attempted to call an undefined method named "%s" of class "%s".', $methodName, $className); - - if ('' === $methodName || !class_exists($className) || null === $methods = get_class_methods($className)) { - // failed to get the class or its methods on which an unknown method was called (for example on an anonymous class) - return new UndefinedMethodError($message, $error); - } - - $candidates = []; - foreach ($methods as $definedMethodName) { - $lev = levenshtein($methodName, $definedMethodName); - if ($lev <= \strlen($methodName) / 3 || str_contains($definedMethodName, $methodName)) { - $candidates[] = $definedMethodName; - } - } - - if ($candidates) { - sort($candidates); - $last = array_pop($candidates).'"?'; - if ($candidates) { - $candidates = 'e.g. "'.implode('", "', $candidates).'" or "'.$last; - } else { - $candidates = '"'.$last; - } - - $message .= "\nDid you mean to call ".$candidates; - } - - return new UndefinedMethodError($message, $error); - } -} diff --git a/vendor/symfony/error-handler/ErrorHandler.php b/vendor/symfony/error-handler/ErrorHandler.php deleted file mode 100644 index 1ee29e1b..00000000 --- a/vendor/symfony/error-handler/ErrorHandler.php +++ /dev/null @@ -1,737 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler; - -use Psr\Log\LoggerInterface; -use Psr\Log\LogLevel; -use Symfony\Component\ErrorHandler\Error\FatalError; -use Symfony\Component\ErrorHandler\Error\OutOfMemoryError; -use Symfony\Component\ErrorHandler\ErrorEnhancer\ClassNotFoundErrorEnhancer; -use Symfony\Component\ErrorHandler\ErrorEnhancer\ErrorEnhancerInterface; -use Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedFunctionErrorEnhancer; -use Symfony\Component\ErrorHandler\ErrorEnhancer\UndefinedMethodErrorEnhancer; -use Symfony\Component\ErrorHandler\ErrorRenderer\CliErrorRenderer; -use Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer; -use Symfony\Component\ErrorHandler\Exception\SilencedErrorContext; - -/** - * A generic ErrorHandler for the PHP engine. - * - * Provides five bit fields that control how errors are handled: - * - thrownErrors: errors thrown as \ErrorException - * - loggedErrors: logged errors, when not @-silenced - * - scopedErrors: errors thrown or logged with their local context - * - tracedErrors: errors logged with their stack trace - * - screamedErrors: never @-silenced errors - * - * Each error level can be logged by a dedicated PSR-3 logger object. - * Screaming only applies to logging. - * Throwing takes precedence over logging. - * Uncaught exceptions are logged as E_ERROR. - * E_DEPRECATED and E_USER_DEPRECATED levels never throw. - * E_RECOVERABLE_ERROR and E_USER_ERROR levels always throw. - * Non catchable errors that can be detected at shutdown time are logged when the scream bit field allows so. - * As errors have a performance cost, repeated errors are all logged, so that the developer - * can see them and weight them as more important to fix than others of the same level. - * - * @author Nicolas Grekas - * @author Grégoire Pineau - * - * @final - */ -class ErrorHandler -{ - private array $levels = [ - \E_DEPRECATED => 'Deprecated', - \E_USER_DEPRECATED => 'User Deprecated', - \E_NOTICE => 'Notice', - \E_USER_NOTICE => 'User Notice', - \E_STRICT => 'Runtime Notice', - \E_WARNING => 'Warning', - \E_USER_WARNING => 'User Warning', - \E_COMPILE_WARNING => 'Compile Warning', - \E_CORE_WARNING => 'Core Warning', - \E_USER_ERROR => 'User Error', - \E_RECOVERABLE_ERROR => 'Catchable Fatal Error', - \E_COMPILE_ERROR => 'Compile Error', - \E_PARSE => 'Parse Error', - \E_ERROR => 'Error', - \E_CORE_ERROR => 'Core Error', - ]; - - private array $loggers = [ - \E_DEPRECATED => [null, LogLevel::INFO], - \E_USER_DEPRECATED => [null, LogLevel::INFO], - \E_NOTICE => [null, LogLevel::WARNING], - \E_USER_NOTICE => [null, LogLevel::WARNING], - \E_STRICT => [null, LogLevel::WARNING], - \E_WARNING => [null, LogLevel::WARNING], - \E_USER_WARNING => [null, LogLevel::WARNING], - \E_COMPILE_WARNING => [null, LogLevel::WARNING], - \E_CORE_WARNING => [null, LogLevel::WARNING], - \E_USER_ERROR => [null, LogLevel::CRITICAL], - \E_RECOVERABLE_ERROR => [null, LogLevel::CRITICAL], - \E_COMPILE_ERROR => [null, LogLevel::CRITICAL], - \E_PARSE => [null, LogLevel::CRITICAL], - \E_ERROR => [null, LogLevel::CRITICAL], - \E_CORE_ERROR => [null, LogLevel::CRITICAL], - ]; - - private int $thrownErrors = 0x1FFF; // E_ALL - E_DEPRECATED - E_USER_DEPRECATED - private int $scopedErrors = 0x1FFF; // E_ALL - E_DEPRECATED - E_USER_DEPRECATED - private int $tracedErrors = 0x77FB; // E_ALL - E_STRICT - E_PARSE - private int $screamedErrors = 0x55; // E_ERROR + E_CORE_ERROR + E_COMPILE_ERROR + E_PARSE - private int $loggedErrors = 0; - private \Closure $configureException; - private bool $debug; - - private bool $isRecursive = false; - private bool $isRoot = false; - /** @var callable|null */ - private $exceptionHandler; - private ?BufferingLogger $bootstrappingLogger = null; - - private static ?string $reservedMemory = null; - private static array $silencedErrorCache = []; - private static int $silencedErrorCount = 0; - private static int $exitCode = 0; - - /** - * Registers the error handler. - */ - public static function register(self $handler = null, bool $replace = true): self - { - if (null === self::$reservedMemory) { - self::$reservedMemory = str_repeat('x', 32768); - register_shutdown_function(self::handleFatalError(...)); - } - - if ($handlerIsNew = null === $handler) { - $handler = new static(); - } - - if (null === $prev = set_error_handler([$handler, 'handleError'])) { - restore_error_handler(); - // Specifying the error types earlier would expose us to https://bugs.php.net/63206 - set_error_handler([$handler, 'handleError'], $handler->thrownErrors | $handler->loggedErrors); - $handler->isRoot = true; - } - - if ($handlerIsNew && \is_array($prev) && $prev[0] instanceof self) { - $handler = $prev[0]; - $replace = false; - } - if (!$replace && $prev) { - restore_error_handler(); - $handlerIsRegistered = \is_array($prev) && $handler === $prev[0]; - } else { - $handlerIsRegistered = true; - } - if (\is_array($prev = set_exception_handler([$handler, 'handleException'])) && $prev[0] instanceof self) { - restore_exception_handler(); - if (!$handlerIsRegistered) { - $handler = $prev[0]; - } elseif ($handler !== $prev[0] && $replace) { - set_exception_handler([$handler, 'handleException']); - $p = $prev[0]->setExceptionHandler(null); - $handler->setExceptionHandler($p); - $prev[0]->setExceptionHandler($p); - } - } else { - $handler->setExceptionHandler($prev ?? [$handler, 'renderException']); - } - - $handler->throwAt(\E_ALL & $handler->thrownErrors, true); - - return $handler; - } - - /** - * Calls a function and turns any PHP error into \ErrorException. - * - * @throws \ErrorException When $function(...$arguments) triggers a PHP error - */ - public static function call(callable $function, mixed ...$arguments): mixed - { - set_error_handler(static function (int $type, string $message, string $file, int $line) { - if (__FILE__ === $file) { - $trace = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 3); - $file = $trace[2]['file'] ?? $file; - $line = $trace[2]['line'] ?? $line; - } - - throw new \ErrorException($message, 0, $type, $file, $line); - }); - - try { - return $function(...$arguments); - } finally { - restore_error_handler(); - } - } - - public function __construct(BufferingLogger $bootstrappingLogger = null, bool $debug = false) - { - if ($bootstrappingLogger) { - $this->bootstrappingLogger = $bootstrappingLogger; - $this->setDefaultLogger($bootstrappingLogger); - } - $traceReflector = new \ReflectionProperty(\Exception::class, 'trace'); - $this->configureException = \Closure::bind(static function ($e, $trace, $file = null, $line = null) use ($traceReflector) { - $traceReflector->setValue($e, $trace); - $e->file = $file ?? $e->file; - $e->line = $line ?? $e->line; - }, null, new class() extends \Exception { - }); - $this->debug = $debug; - } - - /** - * Sets a logger to non assigned errors levels. - * - * @param LoggerInterface $logger A PSR-3 logger to put as default for the given levels - * @param array|int|null $levels An array map of E_* to LogLevel::* or an integer bit field of E_* constants - * @param bool $replace Whether to replace or not any existing logger - */ - public function setDefaultLogger(LoggerInterface $logger, array|int|null $levels = \E_ALL, bool $replace = false): void - { - $loggers = []; - - if (\is_array($levels)) { - foreach ($levels as $type => $logLevel) { - if (empty($this->loggers[$type][0]) || $replace || $this->loggers[$type][0] === $this->bootstrappingLogger) { - $loggers[$type] = [$logger, $logLevel]; - } - } - } else { - $levels ??= \E_ALL; - foreach ($this->loggers as $type => $log) { - if (($type & $levels) && (empty($log[0]) || $replace || $log[0] === $this->bootstrappingLogger)) { - $log[0] = $logger; - $loggers[$type] = $log; - } - } - } - - $this->setLoggers($loggers); - } - - /** - * Sets a logger for each error level. - * - * @param array $loggers Error levels to [LoggerInterface|null, LogLevel::*] map - * - * @throws \InvalidArgumentException - */ - public function setLoggers(array $loggers): array - { - $prevLogged = $this->loggedErrors; - $prev = $this->loggers; - $flush = []; - - foreach ($loggers as $type => $log) { - if (!isset($prev[$type])) { - throw new \InvalidArgumentException('Unknown error type: '.$type); - } - if (!\is_array($log)) { - $log = [$log]; - } elseif (!\array_key_exists(0, $log)) { - throw new \InvalidArgumentException('No logger provided.'); - } - if (null === $log[0]) { - $this->loggedErrors &= ~$type; - } elseif ($log[0] instanceof LoggerInterface) { - $this->loggedErrors |= $type; - } else { - throw new \InvalidArgumentException('Invalid logger provided.'); - } - $this->loggers[$type] = $log + $prev[$type]; - - if ($this->bootstrappingLogger && $prev[$type][0] === $this->bootstrappingLogger) { - $flush[$type] = $type; - } - } - $this->reRegister($prevLogged | $this->thrownErrors); - - if ($flush) { - foreach ($this->bootstrappingLogger->cleanLogs() as $log) { - $type = ThrowableUtils::getSeverity($log[2]['exception']); - if (!isset($flush[$type])) { - $this->bootstrappingLogger->log($log[0], $log[1], $log[2]); - } elseif ($this->loggers[$type][0]) { - $this->loggers[$type][0]->log($this->loggers[$type][1], $log[1], $log[2]); - } - } - } - - return $prev; - } - - public function setExceptionHandler(?callable $handler): ?callable - { - $prev = $this->exceptionHandler; - $this->exceptionHandler = $handler; - - return $prev; - } - - /** - * Sets the PHP error levels that throw an exception when a PHP error occurs. - * - * @param int $levels A bit field of E_* constants for thrown errors - * @param bool $replace Replace or amend the previous value - */ - public function throwAt(int $levels, bool $replace = false): int - { - $prev = $this->thrownErrors; - $this->thrownErrors = ($levels | \E_RECOVERABLE_ERROR | \E_USER_ERROR) & ~\E_USER_DEPRECATED & ~\E_DEPRECATED; - if (!$replace) { - $this->thrownErrors |= $prev; - } - $this->reRegister($prev | $this->loggedErrors); - - return $prev; - } - - /** - * Sets the PHP error levels for which local variables are preserved. - * - * @param int $levels A bit field of E_* constants for scoped errors - * @param bool $replace Replace or amend the previous value - */ - public function scopeAt(int $levels, bool $replace = false): int - { - $prev = $this->scopedErrors; - $this->scopedErrors = $levels; - if (!$replace) { - $this->scopedErrors |= $prev; - } - - return $prev; - } - - /** - * Sets the PHP error levels for which the stack trace is preserved. - * - * @param int $levels A bit field of E_* constants for traced errors - * @param bool $replace Replace or amend the previous value - */ - public function traceAt(int $levels, bool $replace = false): int - { - $prev = $this->tracedErrors; - $this->tracedErrors = $levels; - if (!$replace) { - $this->tracedErrors |= $prev; - } - - return $prev; - } - - /** - * Sets the error levels where the @-operator is ignored. - * - * @param int $levels A bit field of E_* constants for screamed errors - * @param bool $replace Replace or amend the previous value - */ - public function screamAt(int $levels, bool $replace = false): int - { - $prev = $this->screamedErrors; - $this->screamedErrors = $levels; - if (!$replace) { - $this->screamedErrors |= $prev; - } - - return $prev; - } - - /** - * Re-registers as a PHP error handler if levels changed. - */ - private function reRegister(int $prev): void - { - if ($prev !== ($this->thrownErrors | $this->loggedErrors)) { - $handler = set_error_handler(static fn () => null); - $handler = \is_array($handler) ? $handler[0] : null; - restore_error_handler(); - if ($handler === $this) { - restore_error_handler(); - if ($this->isRoot) { - set_error_handler([$this, 'handleError'], $this->thrownErrors | $this->loggedErrors); - } else { - set_error_handler([$this, 'handleError']); - } - } - } - } - - /** - * Handles errors by filtering then logging them according to the configured bit fields. - * - * @return bool Returns false when no handling happens so that the PHP engine can handle the error itself - * - * @throws \ErrorException When $this->thrownErrors requests so - * - * @internal - */ - public function handleError(int $type, string $message, string $file, int $line): bool - { - if (\E_WARNING === $type && '"' === $message[0] && str_contains($message, '" targeting switch is equivalent to "break')) { - $type = \E_DEPRECATED; - } - - // Level is the current error reporting level to manage silent error. - $level = error_reporting(); - $silenced = 0 === ($level & $type); - // Strong errors are not authorized to be silenced. - $level |= \E_RECOVERABLE_ERROR | \E_USER_ERROR | \E_DEPRECATED | \E_USER_DEPRECATED; - $log = $this->loggedErrors & $type; - $throw = $this->thrownErrors & $type & $level; - $type &= $level | $this->screamedErrors; - - // Never throw on warnings triggered by assert() - if (\E_WARNING === $type && 'a' === $message[0] && 0 === strncmp($message, 'assert(): ', 10)) { - $throw = 0; - } - - if (!$type || (!$log && !$throw)) { - return false; - } - - $logMessage = $this->levels[$type].': '.$message; - - if (!$throw && !($type & $level)) { - if (!isset(self::$silencedErrorCache[$id = $file.':'.$line])) { - $lightTrace = $this->tracedErrors & $type ? $this->cleanTrace(debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS, 5), $type, $file, $line, false) : []; - $errorAsException = new SilencedErrorContext($type, $file, $line, isset($lightTrace[1]) ? [$lightTrace[0]] : $lightTrace); - } elseif (isset(self::$silencedErrorCache[$id][$message])) { - $lightTrace = null; - $errorAsException = self::$silencedErrorCache[$id][$message]; - ++$errorAsException->count; - } else { - $lightTrace = []; - $errorAsException = null; - } - - if (100 < ++self::$silencedErrorCount) { - self::$silencedErrorCache = $lightTrace = []; - self::$silencedErrorCount = 1; - } - if ($errorAsException) { - self::$silencedErrorCache[$id][$message] = $errorAsException; - } - if (null === $lightTrace) { - return true; - } - } else { - if (str_contains($message, '@anonymous')) { - $backtrace = debug_backtrace(false, 5); - - for ($i = 1; isset($backtrace[$i]); ++$i) { - if (isset($backtrace[$i]['function'], $backtrace[$i]['args'][0]) - && ('trigger_error' === $backtrace[$i]['function'] || 'user_error' === $backtrace[$i]['function']) - ) { - if ($backtrace[$i]['args'][0] !== $message) { - $message = $this->parseAnonymousClass($backtrace[$i]['args'][0]); - $logMessage = $this->levels[$type].': '.$message; - } - - break; - } - } - } - - $errorAsException = new \ErrorException($logMessage, 0, $type, $file, $line); - - if ($throw || $this->tracedErrors & $type) { - $backtrace = $errorAsException->getTrace(); - $backtrace = $this->cleanTrace($backtrace, $type, $file, $line, $throw); - ($this->configureException)($errorAsException, $backtrace, $file, $line); - } else { - ($this->configureException)($errorAsException, []); - } - } - - if ($throw) { - throw $errorAsException; - } - - if ($this->isRecursive) { - $log = 0; - } else { - try { - $this->isRecursive = true; - $level = ($type & $level) ? $this->loggers[$type][1] : LogLevel::DEBUG; - $this->loggers[$type][0]->log($level, $logMessage, $errorAsException ? ['exception' => $errorAsException] : []); - } finally { - $this->isRecursive = false; - } - } - - return !$silenced && $type && $log; - } - - /** - * Handles an exception by logging then forwarding it to another handler. - * - * @internal - */ - public function handleException(\Throwable $exception): void - { - $handlerException = null; - - if (!$exception instanceof FatalError) { - self::$exitCode = 255; - - $type = ThrowableUtils::getSeverity($exception); - } else { - $type = $exception->getError()['type']; - } - - if ($this->loggedErrors & $type) { - if (str_contains($message = $exception->getMessage(), "@anonymous\0")) { - $message = $this->parseAnonymousClass($message); - } - - if ($exception instanceof FatalError) { - $message = 'Fatal '.$message; - } elseif ($exception instanceof \Error) { - $message = 'Uncaught Error: '.$message; - } elseif ($exception instanceof \ErrorException) { - $message = 'Uncaught '.$message; - } else { - $message = 'Uncaught Exception: '.$message; - } - - try { - $this->loggers[$type][0]->log($this->loggers[$type][1], $message, ['exception' => $exception]); - } catch (\Throwable $handlerException) { - } - } - - $exception = $this->enhanceError($exception); - - $exceptionHandler = $this->exceptionHandler; - $this->exceptionHandler = [$this, 'renderException']; - - if (null === $exceptionHandler || $exceptionHandler === $this->exceptionHandler) { - $this->exceptionHandler = null; - } - - try { - if (null !== $exceptionHandler) { - $exceptionHandler($exception); - - return; - } - $handlerException ??= $exception; - } catch (\Throwable $handlerException) { - } - if ($exception === $handlerException && null === $this->exceptionHandler) { - self::$reservedMemory = null; // Disable the fatal error handler - throw $exception; // Give back $exception to the native handler - } - - $loggedErrors = $this->loggedErrors; - if ($exception === $handlerException) { - $this->loggedErrors &= ~$type; - } - - try { - $this->handleException($handlerException); - } finally { - $this->loggedErrors = $loggedErrors; - } - } - - /** - * Shutdown registered function for handling PHP fatal errors. - * - * @param array|null $error An array as returned by error_get_last() - * - * @internal - */ - public static function handleFatalError(array $error = null): void - { - if (null === self::$reservedMemory) { - return; - } - - $handler = self::$reservedMemory = null; - $handlers = []; - $previousHandler = null; - $sameHandlerLimit = 10; - - while (!\is_array($handler) || !$handler[0] instanceof self) { - $handler = set_exception_handler('is_int'); - restore_exception_handler(); - - if (!$handler) { - break; - } - restore_exception_handler(); - - if ($handler !== $previousHandler) { - array_unshift($handlers, $handler); - $previousHandler = $handler; - } elseif (0 === --$sameHandlerLimit) { - $handler = null; - break; - } - } - foreach ($handlers as $h) { - set_exception_handler($h); - } - if (!$handler) { - return; - } - if ($handler !== $h) { - $handler[0]->setExceptionHandler($h); - } - $handler = $handler[0]; - $handlers = []; - - if ($exit = null === $error) { - $error = error_get_last(); - } - - if ($error && $error['type'] &= \E_PARSE | \E_ERROR | \E_CORE_ERROR | \E_COMPILE_ERROR) { - // Let's not throw anymore but keep logging - $handler->throwAt(0, true); - $trace = $error['backtrace'] ?? null; - - if (str_starts_with($error['message'], 'Allowed memory') || str_starts_with($error['message'], 'Out of memory')) { - $fatalError = new OutOfMemoryError($handler->levels[$error['type']].': '.$error['message'], 0, $error, 2, false, $trace); - } else { - $fatalError = new FatalError($handler->levels[$error['type']].': '.$error['message'], 0, $error, 2, true, $trace); - } - } else { - $fatalError = null; - } - - try { - if (null !== $fatalError) { - self::$exitCode = 255; - $handler->handleException($fatalError); - } - } catch (FatalError) { - // Ignore this re-throw - } - - if ($exit && self::$exitCode) { - $exitCode = self::$exitCode; - register_shutdown_function('register_shutdown_function', function () use ($exitCode) { exit($exitCode); }); - } - } - - /** - * Renders the given exception. - * - * As this method is mainly called during boot where nothing is yet available, - * the output is always either HTML or CLI depending where PHP runs. - */ - private function renderException(\Throwable $exception): void - { - $renderer = \in_array(\PHP_SAPI, ['cli', 'phpdbg', 'embed'], true) ? new CliErrorRenderer() : new HtmlErrorRenderer($this->debug); - - $exception = $renderer->render($exception); - - if (!headers_sent()) { - http_response_code($exception->getStatusCode()); - - foreach ($exception->getHeaders() as $name => $value) { - header($name.': '.$value, false); - } - } - - echo $exception->getAsString(); - } - - public function enhanceError(\Throwable $exception): \Throwable - { - if ($exception instanceof OutOfMemoryError) { - return $exception; - } - - foreach ($this->getErrorEnhancers() as $errorEnhancer) { - if ($e = $errorEnhancer->enhance($exception)) { - return $e; - } - } - - return $exception; - } - - /** - * Override this method if you want to define more error enhancers. - * - * @return ErrorEnhancerInterface[] - */ - protected function getErrorEnhancers(): iterable - { - return [ - new UndefinedFunctionErrorEnhancer(), - new UndefinedMethodErrorEnhancer(), - new ClassNotFoundErrorEnhancer(), - ]; - } - - /** - * Cleans the trace by removing function arguments and the frames added by the error handler and DebugClassLoader. - */ - private function cleanTrace(array $backtrace, int $type, string &$file, int &$line, bool $throw): array - { - $lightTrace = $backtrace; - - for ($i = 0; isset($backtrace[$i]); ++$i) { - if (isset($backtrace[$i]['file'], $backtrace[$i]['line']) && $backtrace[$i]['line'] === $line && $backtrace[$i]['file'] === $file) { - $lightTrace = \array_slice($lightTrace, 1 + $i); - break; - } - } - if (\E_USER_DEPRECATED === $type) { - for ($i = 0; isset($lightTrace[$i]); ++$i) { - if (!isset($lightTrace[$i]['file'], $lightTrace[$i]['line'], $lightTrace[$i]['function'])) { - continue; - } - if (!isset($lightTrace[$i]['class']) && 'trigger_deprecation' === $lightTrace[$i]['function']) { - $file = $lightTrace[$i]['file']; - $line = $lightTrace[$i]['line']; - $lightTrace = \array_slice($lightTrace, 1 + $i); - break; - } - } - } - if (class_exists(DebugClassLoader::class, false)) { - for ($i = \count($lightTrace) - 2; 0 < $i; --$i) { - if (DebugClassLoader::class === ($lightTrace[$i]['class'] ?? null)) { - array_splice($lightTrace, --$i, 2); - } - } - } - if (!($throw || $this->scopedErrors & $type)) { - for ($i = 0; isset($lightTrace[$i]); ++$i) { - unset($lightTrace[$i]['args'], $lightTrace[$i]['object']); - } - } - - return $lightTrace; - } - - /** - * Parse the error message by removing the anonymous class notation - * and using the parent class instead if possible. - */ - private function parseAnonymousClass(string $message): string - { - return preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', static fn ($m) => class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0], $message); - } -} diff --git a/vendor/symfony/error-handler/ErrorRenderer/CliErrorRenderer.php b/vendor/symfony/error-handler/ErrorRenderer/CliErrorRenderer.php deleted file mode 100644 index 04b3edb1..00000000 --- a/vendor/symfony/error-handler/ErrorRenderer/CliErrorRenderer.php +++ /dev/null @@ -1,46 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\ErrorRenderer; - -use Symfony\Component\ErrorHandler\Exception\FlattenException; -use Symfony\Component\VarDumper\Cloner\VarCloner; -use Symfony\Component\VarDumper\Dumper\CliDumper; - -// Help opcache.preload discover always-needed symbols -class_exists(CliDumper::class); - -/** - * @author Nicolas Grekas - */ -class CliErrorRenderer implements ErrorRendererInterface -{ - public function render(\Throwable $exception): FlattenException - { - $cloner = new VarCloner(); - $dumper = new class() extends CliDumper { - protected function supportsColors(): bool - { - $outputStream = $this->outputStream; - $this->outputStream = fopen('php://stdout', 'w'); - - try { - return parent::supportsColors(); - } finally { - $this->outputStream = $outputStream; - } - } - }; - - return FlattenException::createFromThrowable($exception) - ->setAsString($dumper->dump($cloner->cloneVar($exception), true)); - } -} diff --git a/vendor/symfony/error-handler/ErrorRenderer/ErrorRendererInterface.php b/vendor/symfony/error-handler/ErrorRenderer/ErrorRendererInterface.php deleted file mode 100644 index 2e289624..00000000 --- a/vendor/symfony/error-handler/ErrorRenderer/ErrorRendererInterface.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\ErrorRenderer; - -use Symfony\Component\ErrorHandler\Exception\FlattenException; - -/** - * Formats an exception to be used as response content. - * - * @author Yonel Ceruto - */ -interface ErrorRendererInterface -{ - public const IDE_LINK_FORMATS = [ - 'textmate' => 'txmt://open?url=file://%f&line=%l', - 'macvim' => 'mvim://open?url=file://%f&line=%l', - 'emacs' => 'emacs://open?url=file://%f&line=%l', - 'sublime' => 'subl://open?url=file://%f&line=%l', - 'phpstorm' => 'phpstorm://open?file=%f&line=%l', - 'atom' => 'atom://core/open/file?filename=%f&line=%l', - 'vscode' => 'vscode://file/%f:%l', - ]; - - /** - * Renders a Throwable as a FlattenException. - */ - public function render(\Throwable $exception): FlattenException; -} diff --git a/vendor/symfony/error-handler/ErrorRenderer/FileLinkFormatter.php b/vendor/symfony/error-handler/ErrorRenderer/FileLinkFormatter.php deleted file mode 100644 index 29fcf835..00000000 --- a/vendor/symfony/error-handler/ErrorRenderer/FileLinkFormatter.php +++ /dev/null @@ -1,115 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\ErrorRenderer; - -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\RequestStack; -use Symfony\Component\Routing\Generator\UrlGeneratorInterface; - -/** - * Formats debug file links. - * - * @author Jérémy Romey - * - * @final - */ -class FileLinkFormatter -{ - private array|false $fileLinkFormat; - private ?RequestStack $requestStack = null; - private ?string $baseDir = null; - private \Closure|string|null $urlFormat; - - /** - * @param string|\Closure $urlFormat the URL format, or a closure that returns it on-demand - */ - public function __construct(string|array $fileLinkFormat = null, RequestStack $requestStack = null, string $baseDir = null, string|\Closure $urlFormat = null) - { - $fileLinkFormat ??= $_ENV['SYMFONY_IDE'] ?? $_SERVER['SYMFONY_IDE'] ?? ''; - - if (!\is_array($f = $fileLinkFormat)) { - $f = (ErrorRendererInterface::IDE_LINK_FORMATS[$f] ?? $f) ?: \ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format') ?: 'file://%f#L%l'; - $i = strpos($f, '&', max(strrpos($f, '%f'), strrpos($f, '%l'))) ?: \strlen($f); - $fileLinkFormat = [substr($f, 0, $i)] + preg_split('/&([^>]++)>/', substr($f, $i), -1, \PREG_SPLIT_DELIM_CAPTURE); - } - - $this->fileLinkFormat = $fileLinkFormat; - $this->requestStack = $requestStack; - $this->baseDir = $baseDir; - $this->urlFormat = $urlFormat; - } - - /** - * @return string|false - */ - public function format(string $file, int $line): string|bool - { - if ($fmt = $this->getFileLinkFormat()) { - for ($i = 1; isset($fmt[$i]); ++$i) { - if (str_starts_with($file, $k = $fmt[$i++])) { - $file = substr_replace($file, $fmt[$i], 0, \strlen($k)); - break; - } - } - - return strtr($fmt[0], ['%f' => $file, '%l' => $line]); - } - - return false; - } - - /** - * @internal - */ - public function __sleep(): array - { - $this->fileLinkFormat = $this->getFileLinkFormat(); - - return ['fileLinkFormat']; - } - - /** - * @internal - */ - public static function generateUrlFormat(UrlGeneratorInterface $router, string $routeName, string $queryString): ?string - { - try { - return $router->generate($routeName).$queryString; - } catch (\Throwable) { - return null; - } - } - - private function getFileLinkFormat(): array|false - { - if ($this->fileLinkFormat) { - return $this->fileLinkFormat; - } - - if ($this->requestStack && $this->baseDir && $this->urlFormat) { - $request = $this->requestStack->getMainRequest(); - - if ($request instanceof Request && (!$this->urlFormat instanceof \Closure || $this->urlFormat = ($this->urlFormat)())) { - return [ - $request->getSchemeAndHttpHost().$this->urlFormat, - $this->baseDir.\DIRECTORY_SEPARATOR, '', - ]; - } - } - - return false; - } -} - -if (!class_exists(\Symfony\Component\HttpKernel\Debug\FileLinkFormatter::class, false)) { - class_alias(FileLinkFormatter::class, \Symfony\Component\HttpKernel\Debug\FileLinkFormatter::class); -} diff --git a/vendor/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php b/vendor/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php deleted file mode 100644 index 4e2a99b8..00000000 --- a/vendor/symfony/error-handler/ErrorRenderer/HtmlErrorRenderer.php +++ /dev/null @@ -1,351 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\ErrorRenderer; - -use Psr\Log\LoggerInterface; -use Symfony\Component\ErrorHandler\Exception\FlattenException; -use Symfony\Component\HttpFoundation\RequestStack; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\Log\DebugLoggerConfigurator; -use Symfony\Component\VarDumper\Cloner\Data; -use Symfony\Component\VarDumper\Dumper\HtmlDumper; - -/** - * @author Yonel Ceruto - */ -class HtmlErrorRenderer implements ErrorRendererInterface -{ - private const GHOST_ADDONS = [ - '02-14' => self::GHOST_HEART, - '02-29' => self::GHOST_PLUS, - '10-18' => self::GHOST_GIFT, - ]; - - private const GHOST_GIFT = 'M124.00534057617188,5.3606138080358505 C124.40059661865234,4.644828304648399 125.1237564086914,3.712414965033531 123.88127899169922,3.487462028861046 C123.53517150878906,3.3097832053899765 123.18894958496094,2.9953975528478622 122.8432846069336,3.345616325736046 C122.07421112060547,3.649444565176964 121.40750122070312,4.074306473135948 122.2164306640625,4.869479164481163 C122.57514953613281,5.3830065578222275 122.90142822265625,6.503447040915489 123.3077621459961,6.626829609274864 C123.55027770996094,6.210384353995323 123.7774658203125,5.785196766257286 124.00534057617188,5.3606138080358505 zM122.30630493164062,7.336987480521202 C121.60028076171875,6.076864704489708 121.03211975097656,4.72498320043087 120.16796875,3.562500938773155 C119.11695098876953,2.44033907353878 117.04605865478516,2.940566048026085 116.57544708251953,4.387995228171349 C115.95028686523438,5.819030746817589 117.2991714477539,7.527640804648399 118.826171875,7.348545059561729 C119.98493194580078,7.367936596274376 121.15027618408203,7.420116886496544 122.30630493164062,7.336987480521202 zM128.1732177734375,7.379541382193565 C129.67486572265625,7.17823551595211 130.53842163085938,5.287807449698448 129.68344116210938,4.032590612769127 C128.92578125,2.693056806921959 126.74605560302734,2.6463639587163925 125.98509216308594,4.007616028189659 C125.32617950439453,5.108129009604454 124.75428009033203,6.258124336600304 124.14962768554688,7.388818249106407 C125.48638916015625,7.465229496359825 126.8357162475586,7.447416767477989 128.1732177734375,7.379541382193565 zM130.6601104736328,8.991325363516808 C131.17202758789062,8.540884003043175 133.1543731689453,8.009847149252892 131.65304565429688,7.582054600119591 C131.2811279296875,7.476506695151329 130.84751892089844,6.99234913289547 130.5132598876953,7.124847874045372 C129.78744506835938,8.02728746831417 128.67140197753906,8.55669592320919 127.50616455078125,8.501235947012901 C127.27806091308594,8.576229080557823 126.11459350585938,8.38720129430294 126.428955078125,8.601900085806847 C127.25099182128906,9.070617660880089 128.0523223876953,9.579657539725304 128.902587890625,9.995706543326378 C129.49813842773438,9.678531631827354 130.0761260986328,9.329126343131065 130.6601104736328,8.991325363516808 zM118.96446990966797,9.246344551444054 C119.4022445678711,8.991325363516808 119.84001922607422,8.736305221915245 120.27779388427734,8.481284126639366 C118.93965911865234,8.414779648184776 117.40827941894531,8.607666000723839 116.39698791503906,7.531384453177452 C116.11186981201172,7.212117180228233 115.83845520019531,6.846597656607628 115.44329071044922,7.248530372977257 C114.96995544433594,7.574637398123741 113.5140609741211,7.908811077475548 114.63501739501953,8.306883797049522 C115.61112976074219,8.883499130606651 116.58037567138672,9.474181160330772 117.58061218261719,10.008124336600304 C118.05723571777344,9.784612640738487 118.50651550292969,9.5052699893713 118.96446990966797,9.246344551444054 zM125.38018035888672,12.091858848929405 C125.9474868774414,11.636047348380089 127.32159423828125,11.201767906546593 127.36749267578125,10.712632164359093 C126.08487701416016,9.974547371268272 124.83960723876953,9.152772888541222 123.49772644042969,8.528907760977745 C123.03594207763672,8.353693947196007 122.66152954101562,8.623294815421104 122.28982543945312,8.857431396842003 C121.19065856933594,9.51122473180294 120.06505584716797,10.12446115911007 119.00167083740234,10.835315689444542 C120.39238739013672,11.69529627263546 121.79983520507812,12.529837593436241 123.22095489501953,13.338589653372765 C123.94580841064453,12.932025894522667 124.66128540039062,12.508862480521202 125.38018035888672,12.091858848929405 zM131.07164001464844,13.514615997672081 C131.66018676757812,13.143282875418663 132.2487335205078,12.771927818655968 132.8372802734375,12.400571808218956 C132.8324737548828,11.156818374991417 132.8523406982422,9.912529930472374 132.81829833984375,8.669195160269737 C131.63046264648438,9.332009300589561 130.45948791503906,10.027913078665733 129.30828857421875,10.752535805106163 C129.182373046875,12.035354599356651 129.24623107910156,13.33940313756466 129.27359008789062,14.628684982657433 C129.88104248046875,14.27079389989376 130.4737548828125,13.888019546866417 131.07164001464844,13.514640793204308 zM117.26847839355469,12.731024727225304 C117.32825469970703,11.67083452641964 117.45709991455078,10.46224020421505 116.17853546142578,10.148179039359093 C115.37110900878906,9.77159021794796 114.25194549560547,8.806716904044151 113.62991333007812,8.81639002263546 C113.61052703857422,10.0110072940588 113.62078857421875,11.20585821568966 113.61869049072266,12.400571808218956 C114.81139373779297,13.144886955618858 115.98292541503906,13.925040230154991 117.20137023925781,14.626662239432335 C117.31951141357422,14.010867103934288 117.24227905273438,13.35805033147335 117.26847839355469,12.731024727225304 zM125.80937957763672,16.836034759879112 C126.51483917236328,16.390663132071495 127.22030639648438,15.945291504263878 127.92576599121094,15.49991987645626 C127.92250061035156,14.215868934988976 127.97560119628906,12.929980263113976 127.91757202148438,11.647302612662315 C127.14225769042969,11.869626984000206 126.25550079345703,12.556857094168663 125.43866729736328,12.983742699027061 C124.82704162597656,13.342005714774132 124.21542358398438,13.700271591544151 123.60379028320312,14.05853746831417 C123.61585235595703,15.429577812552452 123.57081604003906,16.803131088614464 123.64839172363281,18.172149643301964 C124.37957000732422,17.744937881827354 125.09130859375,17.284801468253136 125.80937957763672,16.836034759879112 zM122.8521499633789,16.115344032645226 C122.8521499633789,15.429741844534874 122.8521499633789,14.744139656424522 122.8521499633789,14.05853746831417 C121.43595123291016,13.230924591422081 120.02428436279297,12.395455345511436 118.60256958007812,11.577354416251183 C118.52394104003906,12.888403877615929 118.56887817382812,14.204405769705772 118.55702209472656,15.517732605338097 C119.97289276123047,16.4041957706213 121.37410736083984,17.314891800284386 122.80789947509766,18.172149643301964 C122.86368560791016,17.488990768790245 122.84332275390625,16.800363525748253 122.8521499633789,16.115344032645226 zM131.10684204101562,18.871450409293175 C131.68399047851562,18.48711584508419 132.2611541748047,18.10278509557247 132.8383026123047,17.718475326895714 C132.81423950195312,16.499977096915245 132.89776611328125,15.264989838004112 132.77627563476562,14.05993078649044 C131.5760040283203,14.744719490408897 130.41763305664062,15.524359688162804 129.23875427246094,16.255397781729698 C129.26707458496094,17.516149505972862 129.18060302734375,18.791316971182823 129.3108367919922,20.041303619742393 C129.91973876953125,19.667551025748253 130.51010131835938,19.264152511954308 131.10684204101562,18.871450409293175 zM117.2557373046875,18.188333496451378 C117.25104522705078,17.549470886588097 117.24633026123047,16.91058538854122 117.24163055419922,16.271720871329308 C116.04924774169922,15.525708183646202 114.87187957763672,14.75476549565792 113.66158294677734,14.038097366690636 C113.5858383178711,15.262084946036339 113.62901306152344,16.49083898961544 113.61761474609375,17.717010483145714 C114.82051086425781,18.513254150748253 116.00987243652344,19.330610260367393 117.22888946533203,20.101993545889854 C117.27559661865234,19.466014847159386 117.25241088867188,18.825733169913292 117.2557373046875,18.188333496451378 zM125.8398666381836,22.38675306737423 C126.54049682617188,21.921453461050987 127.24110412597656,21.456151947379112 127.94172668457031,20.99083136022091 C127.94009399414062,19.693386062979698 127.96646118164062,18.395381912589073 127.93160247802734,17.098379120230675 C126.50540924072266,17.97775076329708 125.08877563476562,18.873308166861534 123.68258666992188,19.78428266942501 C123.52366638183594,21.03710363805294 123.626708984375,22.32878302037716 123.62647247314453,23.595300659537315 C124.06291198730469,23.86113165318966 125.1788101196289,22.68297766149044 125.8398666381836,22.38675306737423 zM122.8521499633789,21.83134649693966 C122.76741790771484,20.936696991324425 123.21651458740234,19.67745779454708 122.0794677734375,19.330633148550987 C120.93280029296875,18.604360565543175 119.7907485961914,17.870157226920128 118.62899780273438,17.16818617284298 C118.45966339111328,18.396427139639854 118.63676452636719,19.675991043448448 118.50668334960938,20.919256195425987 C119.89984130859375,21.92635916173458 121.32942199707031,22.88914106786251 122.78502655029297,23.803510650992393 C122.90177917480469,23.1627406924963 122.82917022705078,22.48402212560177 122.8521499633789,21.83134649693966 zM117.9798355102539,21.59483526647091 C116.28416442871094,20.46288488805294 114.58848571777344,19.330957397818565 112.892822265625,18.199007019400597 C112.89473724365234,14.705654129385948 112.84647369384766,11.211485847830772 112.90847778320312,7.718807205557823 C113.7575912475586,7.194885239005089 114.66117858886719,6.765397056937218 115.5350341796875,6.284702762961388 C114.97061157226562,4.668964847922325 115.78496551513672,2.7054970115423203 117.42159271240234,2.1007001250982285 C118.79354095458984,1.537783369421959 120.44731903076172,2.0457767099142075 121.32200622558594,3.23083733022213 C121.95732116699219,2.9050118774175644 122.59264373779297,2.5791852325201035 123.22796630859375,2.253336176276207 C123.86669921875,2.5821153968572617 124.50543975830078,2.9108948558568954 125.1441650390625,3.23967407643795 C126.05941009521484,2.154020771384239 127.62747192382812,1.5344576686620712 128.986328125,2.1429056972265244 C130.61741638183594,2.716217741370201 131.50650024414062,4.675290569663048 130.9215545654297,6.2884936183691025 C131.8018341064453,6.78548763692379 132.7589111328125,7.1738648265600204 133.5660400390625,7.780336365103722 C133.60182189941406,11.252970680594444 133.56637573242188,14.726140961050987 133.5631103515625,18.199007019400597 C130.18914794921875,20.431867584586143 126.86984252929688,22.74994657933712 123.44108581542969,24.897907242178917 C122.44406127929688,24.897628769278526 121.5834732055664,23.815067276358604 120.65831756591797,23.37616156041622 C119.76387023925781,22.784828171133995 118.87168884277344,22.19007681310177 117.9798355102539,21.59483526647091 z'; - private const GHOST_HEART = 'M125.91386369681868,8.305165958366445 C128.95033202169043,-0.40540639102854037 140.8469835342744,8.305165958366445 125.91386369681868,19.504526138305664 C110.98208663272044,8.305165958366445 122.87795231771452,-0.40540639102854037 125.91386369681868,8.305165958366445 z'; - private const GHOST_PLUS = 'M111.36824226379395,8.969108581542969 L118.69175148010254,8.969108581542969 L118.69175148010254,1.6455793380737305 L126.20429420471191,1.6455793380737305 L126.20429420471191,8.969108581542969 L133.52781105041504,8.969108581542969 L133.52781105041504,16.481630325317383 L126.20429420471191,16.481630325317383 L126.20429420471191,23.805158615112305 L118.69175148010254,23.805158615112305 L118.69175148010254,16.481630325317383 L111.36824226379395,16.481630325317383 z'; - - private bool|\Closure $debug; - private string $charset; - private FileLinkFormatter $fileLinkFormat; - private ?string $projectDir; - private string|\Closure $outputBuffer; - private ?LoggerInterface $logger; - - private static string $template = 'views/error.html.php'; - - /** - * @param bool|callable $debug The debugging mode as a boolean or a callable that should return it - * @param string|callable $outputBuffer The output buffer as a string or a callable that should return it - */ - public function __construct(bool|callable $debug = false, string $charset = null, string|FileLinkFormatter $fileLinkFormat = null, string $projectDir = null, string|callable $outputBuffer = '', LoggerInterface $logger = null) - { - $this->debug = \is_bool($debug) ? $debug : $debug(...); - $this->charset = $charset ?: (\ini_get('default_charset') ?: 'UTF-8'); - $this->fileLinkFormat = $fileLinkFormat instanceof FileLinkFormatter ? $fileLinkFormat : new FileLinkFormatter($fileLinkFormat); - $this->projectDir = $projectDir; - $this->outputBuffer = \is_string($outputBuffer) ? $outputBuffer : $outputBuffer(...); - $this->logger = $logger; - } - - public function render(\Throwable $exception): FlattenException - { - $headers = ['Content-Type' => 'text/html; charset='.$this->charset]; - if (\is_bool($this->debug) ? $this->debug : ($this->debug)($exception)) { - $headers['X-Debug-Exception'] = rawurlencode($exception->getMessage()); - $headers['X-Debug-Exception-File'] = rawurlencode($exception->getFile()).':'.$exception->getLine(); - } - - $exception = FlattenException::createWithDataRepresentation($exception, null, $headers); - - return $exception->setAsString($this->renderException($exception)); - } - - /** - * Gets the HTML content associated with the given exception. - */ - public function getBody(FlattenException $exception): string - { - return $this->renderException($exception, 'views/exception.html.php'); - } - - /** - * Gets the stylesheet associated with the given exception. - */ - public function getStylesheet(): string - { - if (!$this->debug) { - return $this->include('assets/css/error.css'); - } - - return $this->include('assets/css/exception.css'); - } - - public static function isDebug(RequestStack $requestStack, bool $debug): \Closure - { - return static function () use ($requestStack, $debug): bool { - if (!$request = $requestStack->getCurrentRequest()) { - return $debug; - } - - return $debug && $request->attributes->getBoolean('showException', true); - }; - } - - public static function getAndCleanOutputBuffer(RequestStack $requestStack): \Closure - { - return static function () use ($requestStack): string { - if (!$request = $requestStack->getCurrentRequest()) { - return ''; - } - - $startObLevel = $request->headers->get('X-Php-Ob-Level', -1); - - if (ob_get_level() <= $startObLevel) { - return ''; - } - - Response::closeOutputBuffers($startObLevel + 1, true); - - return ob_get_clean(); - }; - } - - private function renderException(FlattenException $exception, string $debugTemplate = 'views/exception_full.html.php'): string - { - $debug = \is_bool($this->debug) ? $this->debug : ($this->debug)($exception); - $statusText = $this->escape($exception->getStatusText()); - $statusCode = $this->escape($exception->getStatusCode()); - - if (!$debug) { - return $this->include(self::$template, [ - 'statusText' => $statusText, - 'statusCode' => $statusCode, - ]); - } - - $exceptionMessage = $this->escape($exception->getMessage()); - - return $this->include($debugTemplate, [ - 'exception' => $exception, - 'exceptionMessage' => $exceptionMessage, - 'statusText' => $statusText, - 'statusCode' => $statusCode, - 'logger' => DebugLoggerConfigurator::getDebugLogger($this->logger), - 'currentContent' => \is_string($this->outputBuffer) ? $this->outputBuffer : ($this->outputBuffer)(), - ]); - } - - private function dumpValue(Data $value): string - { - $dumper = new HtmlDumper(); - $dumper->setTheme('light'); - - return $dumper->dump($value, true); - } - - private function formatArgs(array $args): string - { - $result = []; - foreach ($args as $key => $item) { - if ('object' === $item[0]) { - $formattedValue = sprintf('object(%s)', $this->abbrClass($item[1])); - } elseif ('array' === $item[0]) { - $formattedValue = sprintf('array(%s)', \is_array($item[1]) ? $this->formatArgs($item[1]) : $item[1]); - } elseif ('null' === $item[0]) { - $formattedValue = 'null'; - } elseif ('boolean' === $item[0]) { - $formattedValue = ''.strtolower(var_export($item[1], true)).''; - } elseif ('resource' === $item[0]) { - $formattedValue = 'resource'; - } else { - $formattedValue = str_replace("\n", '', $this->escape(var_export($item[1], true))); - } - - $result[] = \is_int($key) ? $formattedValue : sprintf("'%s' => %s", $this->escape($key), $formattedValue); - } - - return implode(', ', $result); - } - - private function formatArgsAsText(array $args): string - { - return strip_tags($this->formatArgs($args)); - } - - private function escape(string $string): string - { - return htmlspecialchars($string, \ENT_COMPAT | \ENT_SUBSTITUTE, $this->charset); - } - - private function abbrClass(string $class): string - { - $parts = explode('\\', $class); - $short = array_pop($parts); - - return sprintf('%s', $class, $short); - } - - private function getFileRelative(string $file): ?string - { - $file = str_replace('\\', '/', $file); - - if (null !== $this->projectDir && str_starts_with($file, $this->projectDir)) { - return ltrim(substr($file, \strlen($this->projectDir)), '/'); - } - - return null; - } - - /** - * Formats a file path. - * - * @param string $file An absolute file path - * @param int $line The line number - * @param string $text Use this text for the link rather than the file path - */ - private function formatFile(string $file, int $line, string $text = null): string - { - $file = trim($file); - - if (null === $text) { - $text = $file; - if (null !== $rel = $this->getFileRelative($text)) { - $rel = explode('/', $rel, 2); - $text = sprintf('%s%s', $this->projectDir, $rel[0], '/'.($rel[1] ?? '')); - } - } - - if (0 < $line) { - $text .= ' at line '.$line; - } - - $link = $this->fileLinkFormat->format($file, $line); - - return sprintf('%s', $this->escape($link), $text); - } - - /** - * Returns an excerpt of a code file around the given line number. - * - * @param string $file A file path - * @param int $line The selected line number - * @param int $srcContext The number of displayed lines around or -1 for the whole file - */ - private function fileExcerpt(string $file, int $line, int $srcContext = 3): string - { - if (is_file($file) && is_readable($file)) { - // highlight_file could throw warnings - // see https://bugs.php.net/25725 - $code = @highlight_file($file, true); - if (\PHP_VERSION_ID >= 80300) { - // remove main pre/code tags - $code = preg_replace('#^\s*(.*)\s*#s', '\\1', $code); - // split multiline code tags - $code = preg_replace_callback('#]++)>((?:[^<]*+\\n)++[^<]*+)#', fn ($m) => "".str_replace("\n", "\n", $m[2]).'', $code); - // Convert spaces to html entities to preserve indentation when rendered - $code = str_replace(' ', ' ', $code); - $content = explode("\n", $code); - } else { - // remove main code/span tags - $code = preg_replace('#^\s*(.*)\s*#s', '\\1', $code); - // split multiline spans - $code = preg_replace_callback('#]++)>((?:[^<]*+
    )++[^<]*+)
    #', fn ($m) => "".str_replace('
    ', "

    ", $m[2]).'', $code); - $content = explode('
    ', $code); - } - - $lines = []; - if (0 > $srcContext) { - $srcContext = \count($content); - } - - for ($i = max($line - $srcContext, 1), $max = min($line + $srcContext, \count($content)); $i <= $max; ++$i) { - $lines[] = ''.$this->fixCodeMarkup($content[$i - 1]).''; - } - - return '
      '.implode("\n", $lines).'
    '; - } - - return ''; - } - - private function fixCodeMarkup(string $line): string - { - // ending tag from previous line - $opening = strpos($line, ''); - if (false !== $closing && (false === $opening || $closing < $opening)) { - $line = substr_replace($line, '', $closing, 7); - } - - // missing tag at the end of line - $opening = strrpos($line, ''); - if (false !== $opening && (false === $closing || $closing < $opening)) { - $line .= ''; - } - - return trim($line); - } - - private function formatFileFromText(string $text): string - { - return preg_replace_callback('/in ("|")?(.+?)\1(?: +(?:on|at))? +line (\d+)/s', fn ($match) => 'in '.$this->formatFile($match[2], $match[3]), $text); - } - - private function formatLogMessage(string $message, array $context): string - { - if ($context && str_contains($message, '{')) { - $replacements = []; - foreach ($context as $key => $val) { - if (\is_scalar($val)) { - $replacements['{'.$key.'}'] = $val; - } - } - - if ($replacements) { - $message = strtr($message, $replacements); - } - } - - return $this->escape($message); - } - - private function addElementToGhost(): string - { - if (!isset(self::GHOST_ADDONS[date('m-d')])) { - return ''; - } - - return ''; - } - - private function include(string $name, array $context = []): string - { - extract($context, \EXTR_SKIP); - ob_start(); - - include is_file(\dirname(__DIR__).'/Resources/'.$name) ? \dirname(__DIR__).'/Resources/'.$name : $name; - - return trim(ob_get_clean()); - } - - /** - * Allows overriding the default non-debug template. - * - * @param string $template path to the custom template file to render - */ - public static function setTemplate(string $template): void - { - self::$template = $template; - } -} diff --git a/vendor/symfony/error-handler/ErrorRenderer/SerializerErrorRenderer.php b/vendor/symfony/error-handler/ErrorRenderer/SerializerErrorRenderer.php deleted file mode 100644 index 1f286b78..00000000 --- a/vendor/symfony/error-handler/ErrorRenderer/SerializerErrorRenderer.php +++ /dev/null @@ -1,81 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\ErrorRenderer; - -use Symfony\Component\ErrorHandler\Exception\FlattenException; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\RequestStack; -use Symfony\Component\Serializer\Exception\NotEncodableValueException; -use Symfony\Component\Serializer\SerializerInterface; - -/** - * Formats an exception using Serializer for rendering. - * - * @author Nicolas Grekas - */ -class SerializerErrorRenderer implements ErrorRendererInterface -{ - private SerializerInterface $serializer; - private string|\Closure $format; - private ErrorRendererInterface $fallbackErrorRenderer; - private bool|\Closure $debug; - - /** - * @param string|callable(FlattenException) $format The format as a string or a callable that should return it - * formats not supported by Request::getMimeTypes() should be given as mime types - * @param bool|callable $debug The debugging mode as a boolean or a callable that should return it - */ - public function __construct(SerializerInterface $serializer, string|callable $format, ErrorRendererInterface $fallbackErrorRenderer = null, bool|callable $debug = false) - { - $this->serializer = $serializer; - $this->format = \is_string($format) ? $format : $format(...); - $this->fallbackErrorRenderer = $fallbackErrorRenderer ?? new HtmlErrorRenderer(); - $this->debug = \is_bool($debug) ? $debug : $debug(...); - } - - public function render(\Throwable $exception): FlattenException - { - $headers = ['Vary' => 'Accept']; - $debug = \is_bool($this->debug) ? $this->debug : ($this->debug)($exception); - if ($debug) { - $headers['X-Debug-Exception'] = rawurlencode($exception->getMessage()); - $headers['X-Debug-Exception-File'] = rawurlencode($exception->getFile()).':'.$exception->getLine(); - } - - $flattenException = FlattenException::createFromThrowable($exception, null, $headers); - - try { - $format = \is_string($this->format) ? $this->format : ($this->format)($flattenException); - $headers['Content-Type'] = Request::getMimeTypes($format)[0] ?? $format; - - $flattenException->setAsString($this->serializer->serialize($flattenException, $format, [ - 'exception' => $exception, - 'debug' => $debug, - ])); - } catch (NotEncodableValueException) { - $flattenException = $this->fallbackErrorRenderer->render($exception); - } - - return $flattenException->setHeaders($flattenException->getHeaders() + $headers); - } - - public static function getPreferredFormat(RequestStack $requestStack): \Closure - { - return static function () use ($requestStack) { - if (!$request = $requestStack->getCurrentRequest()) { - throw new NotEncodableValueException(); - } - - return $request->getPreferredFormat(); - }; - } -} diff --git a/vendor/symfony/error-handler/Exception/FlattenException.php b/vendor/symfony/error-handler/Exception/FlattenException.php deleted file mode 100644 index ab62b1be..00000000 --- a/vendor/symfony/error-handler/Exception/FlattenException.php +++ /dev/null @@ -1,440 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\Exception; - -use Symfony\Component\HttpFoundation\Exception\RequestExceptionInterface; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; -use Symfony\Component\VarDumper\Caster\Caster; -use Symfony\Component\VarDumper\Cloner\Data; -use Symfony\Component\VarDumper\Cloner\Stub; -use Symfony\Component\VarDumper\Cloner\VarCloner; - -/** - * FlattenException wraps a PHP Error or Exception to be able to serialize it. - * - * Basically, this class removes all objects from the trace. - * - * @author Fabien Potencier - */ -class FlattenException -{ - private string $message; - private string|int $code; - private ?self $previous = null; - private array $trace; - private string $traceAsString; - private string $class; - private int $statusCode; - private string $statusText; - private array $headers; - private string $file; - private int $line; - private ?string $asString = null; - private Data $dataRepresentation; - - public static function create(\Exception $exception, int $statusCode = null, array $headers = []): static - { - return static::createFromThrowable($exception, $statusCode, $headers); - } - - public static function createFromThrowable(\Throwable $exception, int $statusCode = null, array $headers = []): static - { - $e = new static(); - $e->setMessage($exception->getMessage()); - $e->setCode($exception->getCode()); - - if ($exception instanceof HttpExceptionInterface) { - $statusCode = $exception->getStatusCode(); - $headers = array_merge($headers, $exception->getHeaders()); - } elseif ($exception instanceof RequestExceptionInterface) { - $statusCode = 400; - } - - $statusCode ??= 500; - - if (class_exists(Response::class) && isset(Response::$statusTexts[$statusCode])) { - $statusText = Response::$statusTexts[$statusCode]; - } else { - $statusText = 'Whoops, looks like something went wrong.'; - } - - $e->setStatusText($statusText); - $e->setStatusCode($statusCode); - $e->setHeaders($headers); - $e->setTraceFromThrowable($exception); - $e->setClass(get_debug_type($exception)); - $e->setFile($exception->getFile()); - $e->setLine($exception->getLine()); - - $previous = $exception->getPrevious(); - - if ($previous instanceof \Throwable) { - $e->setPrevious(static::createFromThrowable($previous)); - } - - return $e; - } - - public static function createWithDataRepresentation(\Throwable $throwable, int $statusCode = null, array $headers = [], VarCloner $cloner = null): static - { - $e = static::createFromThrowable($throwable, $statusCode, $headers); - - static $defaultCloner; - - if (!$cloner ??= $defaultCloner) { - $cloner = $defaultCloner = new VarCloner(); - $cloner->addCasters([ - \Throwable::class => function (\Throwable $e, array $a, Stub $s, bool $isNested): array { - if (!$isNested) { - unset($a[Caster::PREFIX_PROTECTED.'message']); - unset($a[Caster::PREFIX_PROTECTED.'code']); - unset($a[Caster::PREFIX_PROTECTED.'file']); - unset($a[Caster::PREFIX_PROTECTED.'line']); - unset($a["\0Error\0trace"], $a["\0Exception\0trace"]); - unset($a["\0Error\0previous"], $a["\0Exception\0previous"]); - } - - return $a; - }, - ]); - } - - return $e->setDataRepresentation($cloner->cloneVar($throwable)); - } - - public function toArray(): array - { - $exceptions = []; - foreach (array_merge([$this], $this->getAllPrevious()) as $exception) { - $exceptions[] = [ - 'message' => $exception->getMessage(), - 'class' => $exception->getClass(), - 'trace' => $exception->getTrace(), - 'data' => $exception->getDataRepresentation(), - ]; - } - - return $exceptions; - } - - public function getStatusCode(): int - { - return $this->statusCode; - } - - /** - * @return $this - */ - public function setStatusCode(int $code): static - { - $this->statusCode = $code; - - return $this; - } - - public function getHeaders(): array - { - return $this->headers; - } - - /** - * @return $this - */ - public function setHeaders(array $headers): static - { - $this->headers = $headers; - - return $this; - } - - public function getClass(): string - { - return $this->class; - } - - /** - * @return $this - */ - public function setClass(string $class): static - { - $this->class = str_contains($class, "@anonymous\0") ? (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous' : $class; - - return $this; - } - - public function getFile(): string - { - return $this->file; - } - - /** - * @return $this - */ - public function setFile(string $file): static - { - $this->file = $file; - - return $this; - } - - public function getLine(): int - { - return $this->line; - } - - /** - * @return $this - */ - public function setLine(int $line): static - { - $this->line = $line; - - return $this; - } - - public function getStatusText(): string - { - return $this->statusText; - } - - /** - * @return $this - */ - public function setStatusText(string $statusText): static - { - $this->statusText = $statusText; - - return $this; - } - - public function getMessage(): string - { - return $this->message; - } - - /** - * @return $this - */ - public function setMessage(string $message): static - { - if (str_contains($message, "@anonymous\0")) { - $message = preg_replace_callback('/[a-zA-Z_\x7f-\xff][\\\\a-zA-Z0-9_\x7f-\xff]*+@anonymous\x00.*?\.php(?:0x?|:[0-9]++\$)[0-9a-fA-F]++/', fn ($m) => class_exists($m[0], false) ? (get_parent_class($m[0]) ?: key(class_implements($m[0])) ?: 'class').'@anonymous' : $m[0], $message); - } - - $this->message = $message; - - return $this; - } - - /** - * @return int|string int most of the time (might be a string with PDOException) - */ - public function getCode(): int|string - { - return $this->code; - } - - /** - * @return $this - */ - public function setCode(int|string $code): static - { - $this->code = $code; - - return $this; - } - - public function getPrevious(): ?self - { - return $this->previous; - } - - /** - * @return $this - */ - public function setPrevious(?self $previous): static - { - $this->previous = $previous; - - return $this; - } - - /** - * @return self[] - */ - public function getAllPrevious(): array - { - $exceptions = []; - $e = $this; - while ($e = $e->getPrevious()) { - $exceptions[] = $e; - } - - return $exceptions; - } - - public function getTrace(): array - { - return $this->trace; - } - - /** - * @return $this - */ - public function setTraceFromThrowable(\Throwable $throwable): static - { - $this->traceAsString = $throwable->getTraceAsString(); - - return $this->setTrace($throwable->getTrace(), $throwable->getFile(), $throwable->getLine()); - } - - /** - * @return $this - */ - public function setTrace(array $trace, ?string $file, ?int $line): static - { - $this->trace = []; - $this->trace[] = [ - 'namespace' => '', - 'short_class' => '', - 'class' => '', - 'type' => '', - 'function' => '', - 'file' => $file, - 'line' => $line, - 'args' => [], - ]; - foreach ($trace as $entry) { - $class = ''; - $namespace = ''; - if (isset($entry['class'])) { - $parts = explode('\\', $entry['class']); - $class = array_pop($parts); - $namespace = implode('\\', $parts); - } - - $this->trace[] = [ - 'namespace' => $namespace, - 'short_class' => $class, - 'class' => $entry['class'] ?? '', - 'type' => $entry['type'] ?? '', - 'function' => $entry['function'] ?? null, - 'file' => $entry['file'] ?? null, - 'line' => $entry['line'] ?? null, - 'args' => isset($entry['args']) ? $this->flattenArgs($entry['args']) : [], - ]; - } - - return $this; - } - - public function getDataRepresentation(): ?Data - { - return $this->dataRepresentation ?? null; - } - - /** - * @return $this - */ - public function setDataRepresentation(Data $data): static - { - $this->dataRepresentation = $data; - - return $this; - } - - private function flattenArgs(array $args, int $level = 0, int &$count = 0): array - { - $result = []; - foreach ($args as $key => $value) { - if (++$count > 1e4) { - return ['array', '*SKIPPED over 10000 entries*']; - } - if ($value instanceof \__PHP_Incomplete_Class) { - $result[$key] = ['incomplete-object', $this->getClassNameFromIncomplete($value)]; - } elseif (\is_object($value)) { - $result[$key] = ['object', get_debug_type($value)]; - } elseif (\is_array($value)) { - if ($level > 10) { - $result[$key] = ['array', '*DEEP NESTED ARRAY*']; - } else { - $result[$key] = ['array', $this->flattenArgs($value, $level + 1, $count)]; - } - } elseif (null === $value) { - $result[$key] = ['null', null]; - } elseif (\is_bool($value)) { - $result[$key] = ['boolean', $value]; - } elseif (\is_int($value)) { - $result[$key] = ['integer', $value]; - } elseif (\is_float($value)) { - $result[$key] = ['float', $value]; - } elseif (\is_resource($value)) { - $result[$key] = ['resource', get_resource_type($value)]; - } else { - $result[$key] = ['string', (string) $value]; - } - } - - return $result; - } - - private function getClassNameFromIncomplete(\__PHP_Incomplete_Class $value): string - { - $array = new \ArrayObject($value); - - return $array['__PHP_Incomplete_Class_Name']; - } - - public function getTraceAsString(): string - { - return $this->traceAsString; - } - - /** - * @return $this - */ - public function setAsString(?string $asString): static - { - $this->asString = $asString; - - return $this; - } - - public function getAsString(): string - { - if (null !== $this->asString) { - return $this->asString; - } - - $message = ''; - $next = false; - - foreach (array_reverse(array_merge([$this], $this->getAllPrevious())) as $exception) { - if ($next) { - $message .= 'Next '; - } else { - $next = true; - } - $message .= $exception->getClass(); - - if ('' != $exception->getMessage()) { - $message .= ': '.$exception->getMessage(); - } - - $message .= ' in '.$exception->getFile().':'.$exception->getLine(). - "\nStack trace:\n".$exception->getTraceAsString()."\n\n"; - } - - return rtrim($message); - } -} diff --git a/vendor/symfony/error-handler/Exception/SilencedErrorContext.php b/vendor/symfony/error-handler/Exception/SilencedErrorContext.php deleted file mode 100644 index ac19e639..00000000 --- a/vendor/symfony/error-handler/Exception/SilencedErrorContext.php +++ /dev/null @@ -1,67 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\Exception; - -/** - * Data Object that represents a Silenced Error. - * - * @author Grégoire Pineau - */ -class SilencedErrorContext implements \JsonSerializable -{ - public $count = 1; - - private int $severity; - private string $file; - private int $line; - private array $trace; - - public function __construct(int $severity, string $file, int $line, array $trace = [], int $count = 1) - { - $this->severity = $severity; - $this->file = $file; - $this->line = $line; - $this->trace = $trace; - $this->count = $count; - } - - public function getSeverity(): int - { - return $this->severity; - } - - public function getFile(): string - { - return $this->file; - } - - public function getLine(): int - { - return $this->line; - } - - public function getTrace(): array - { - return $this->trace; - } - - public function jsonSerialize(): array - { - return [ - 'severity' => $this->severity, - 'file' => $this->file, - 'line' => $this->line, - 'trace' => $this->trace, - 'count' => $this->count, - ]; - } -} diff --git a/vendor/symfony/error-handler/Internal/TentativeTypes.php b/vendor/symfony/error-handler/Internal/TentativeTypes.php deleted file mode 100644 index 1e8afe39..00000000 --- a/vendor/symfony/error-handler/Internal/TentativeTypes.php +++ /dev/null @@ -1,1643 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\ErrorHandler\Internal; - -/** - * This class has been generated by extract-tentative-return-types.php. - * - * @internal - */ -class TentativeTypes -{ - public const RETURN_TYPES = [ - 'CURLFile' => [ - 'getFilename' => 'string', - 'getMimeType' => 'string', - 'getPostFilename' => 'string', - 'setMimeType' => 'void', - 'setPostFilename' => 'void', - ], - 'DateTimeInterface' => [ - 'format' => 'string', - 'getTimezone' => 'DateTimeZone|false', - 'getOffset' => 'int', - 'getTimestamp' => 'int', - 'diff' => 'DateInterval', - '__wakeup' => 'void', - ], - 'DateTime' => [ - '__wakeup' => 'void', - '__set_state' => 'DateTime', - 'createFromImmutable' => 'static', - 'createFromFormat' => 'DateTime|false', - 'getLastErrors' => 'array|false', - 'format' => 'string', - 'modify' => 'DateTime|false', - 'add' => 'DateTime', - 'sub' => 'DateTime', - 'getTimezone' => 'DateTimeZone|false', - 'setTimezone' => 'DateTime', - 'getOffset' => 'int', - 'setTime' => 'DateTime', - 'setDate' => 'DateTime', - 'setISODate' => 'DateTime', - 'setTimestamp' => 'DateTime', - 'getTimestamp' => 'int', - 'diff' => 'DateInterval', - ], - 'DateTimeImmutable' => [ - '__wakeup' => 'void', - '__set_state' => 'DateTimeImmutable', - 'createFromFormat' => 'DateTimeImmutable|false', - 'getLastErrors' => 'array|false', - 'format' => 'string', - 'getTimezone' => 'DateTimeZone|false', - 'getOffset' => 'int', - 'getTimestamp' => 'int', - 'diff' => 'DateInterval', - 'modify' => 'DateTimeImmutable|false', - 'add' => 'DateTimeImmutable', - 'sub' => 'DateTimeImmutable', - 'setTimezone' => 'DateTimeImmutable', - 'setTime' => 'DateTimeImmutable', - 'setDate' => 'DateTimeImmutable', - 'setISODate' => 'DateTimeImmutable', - 'setTimestamp' => 'DateTimeImmutable', - 'createFromMutable' => 'static', - ], - 'DateTimeZone' => [ - 'getName' => 'string', - 'getOffset' => 'int', - 'getTransitions' => 'array|false', - 'getLocation' => 'array|false', - 'listAbbreviations' => 'array', - 'listIdentifiers' => 'array', - '__wakeup' => 'void', - '__set_state' => 'DateTimeZone', - ], - 'DateInterval' => [ - 'createFromDateString' => 'DateInterval|false', - 'format' => 'string', - '__wakeup' => 'void', - '__set_state' => 'DateInterval', - ], - 'DatePeriod' => [ - 'getStartDate' => 'DateTimeInterface', - 'getEndDate' => '?DateTimeInterface', - 'getDateInterval' => 'DateInterval', - 'getRecurrences' => '?int', - '__wakeup' => 'void', - '__set_state' => 'DatePeriod', - ], - 'DOMNode' => [ - 'C14N' => 'string|false', - 'C14NFile' => 'int|false', - 'getLineNo' => 'int', - 'getNodePath' => '?string', - 'hasAttributes' => 'bool', - 'hasChildNodes' => 'bool', - 'isDefaultNamespace' => 'bool', - 'isSameNode' => 'bool', - 'isSupported' => 'bool', - 'lookupNamespaceURI' => '?string', - 'lookupPrefix' => '?string', - 'normalize' => 'void', - ], - 'DOMImplementation' => [ - 'getFeature' => 'never', - 'hasFeature' => 'bool', - ], - 'DOMDocumentFragment' => [ - 'appendXML' => 'bool', - ], - 'DOMNodeList' => [ - 'count' => 'int', - ], - 'DOMCharacterData' => [ - 'appendData' => 'bool', - 'insertData' => 'bool', - 'deleteData' => 'bool', - 'replaceData' => 'bool', - ], - 'DOMAttr' => [ - 'isId' => 'bool', - ], - 'DOMElement' => [ - 'getAttribute' => 'string', - 'getAttributeNS' => 'string', - 'getElementsByTagName' => 'DOMNodeList', - 'getElementsByTagNameNS' => 'DOMNodeList', - 'hasAttribute' => 'bool', - 'hasAttributeNS' => 'bool', - 'removeAttribute' => 'bool', - 'removeAttributeNS' => 'void', - 'setAttributeNS' => 'void', - 'setIdAttribute' => 'void', - 'setIdAttributeNS' => 'void', - 'setIdAttributeNode' => 'void', - ], - 'DOMDocument' => [ - 'createComment' => 'DOMComment', - 'createDocumentFragment' => 'DOMDocumentFragment', - 'createTextNode' => 'DOMText', - 'getElementById' => '?DOMElement', - 'getElementsByTagName' => 'DOMNodeList', - 'getElementsByTagNameNS' => 'DOMNodeList', - 'normalizeDocument' => 'void', - 'registerNodeClass' => 'bool', - 'save' => 'int|false', - 'saveHTML' => 'string|false', - 'saveHTMLFile' => 'int|false', - 'saveXML' => 'string|false', - 'schemaValidate' => 'bool', - 'schemaValidateSource' => 'bool', - 'relaxNGValidate' => 'bool', - 'relaxNGValidateSource' => 'bool', - 'validate' => 'bool', - 'xinclude' => 'int|false', - ], - 'DOMText' => [ - 'isWhitespaceInElementContent' => 'bool', - 'isElementContentWhitespace' => 'bool', - ], - 'DOMNamedNodeMap' => [ - 'getNamedItem' => '?DOMNode', - 'getNamedItemNS' => '?DOMNode', - 'item' => '?DOMNode', - 'count' => 'int', - ], - 'DOMXPath' => [ - 'evaluate' => 'mixed', - 'query' => 'mixed', - 'registerNamespace' => 'bool', - 'registerPhpFunctions' => 'void', - ], - 'finfo' => [ - 'file' => 'string|false', - 'buffer' => 'string|false', - ], - 'IntlPartsIterator' => [ - 'getBreakIterator' => 'IntlBreakIterator', - 'getRuleStatus' => 'int', - ], - 'IntlBreakIterator' => [ - 'createCharacterInstance' => '?IntlBreakIterator', - 'createCodePointInstance' => 'IntlCodePointBreakIterator', - 'createLineInstance' => '?IntlBreakIterator', - 'createSentenceInstance' => '?IntlBreakIterator', - 'createTitleInstance' => '?IntlBreakIterator', - 'createWordInstance' => '?IntlBreakIterator', - 'current' => 'int', - 'first' => 'int', - 'following' => 'int', - 'getErrorCode' => 'int', - 'getErrorMessage' => 'string', - 'getLocale' => 'string|false', - 'getPartsIterator' => 'IntlPartsIterator', - 'getText' => '?string', - 'isBoundary' => 'bool', - 'last' => 'int', - 'next' => 'int', - 'preceding' => 'int', - 'previous' => 'int', - 'setText' => '?bool', - ], - 'IntlRuleBasedBreakIterator' => [ - 'getBinaryRules' => 'string|false', - 'getRules' => 'string|false', - 'getRuleStatus' => 'int', - 'getRuleStatusVec' => 'array|false', - ], - 'IntlCodePointBreakIterator' => [ - 'getLastCodePoint' => 'int', - ], - 'IntlCalendar' => [ - 'createInstance' => '?IntlCalendar', - 'equals' => 'bool', - 'fieldDifference' => 'int|false', - 'add' => 'bool', - 'after' => 'bool', - 'before' => 'bool', - 'fromDateTime' => '?IntlCalendar', - 'get' => 'int|false', - 'getActualMaximum' => 'int|false', - 'getActualMinimum' => 'int|false', - 'getAvailableLocales' => 'array', - 'getDayOfWeekType' => 'int|false', - 'getErrorCode' => 'int|false', - 'getErrorMessage' => 'string|false', - 'getFirstDayOfWeek' => 'int|false', - 'getGreatestMinimum' => 'int|false', - 'getKeywordValuesForLocale' => 'IntlIterator|false', - 'getLeastMaximum' => 'int|false', - 'getLocale' => 'string|false', - 'getMaximum' => 'int|false', - 'getMinimalDaysInFirstWeek' => 'int|false', - 'getMinimum' => 'int|false', - 'getNow' => 'float', - 'getRepeatedWallTimeOption' => 'int', - 'getSkippedWallTimeOption' => 'int', - 'getTime' => 'float|false', - 'getTimeZone' => 'IntlTimeZone|false', - 'getType' => 'string', - 'getWeekendTransition' => 'int|false', - 'inDaylightTime' => 'bool', - 'isEquivalentTo' => 'bool', - 'isLenient' => 'bool', - 'isWeekend' => 'bool', - 'roll' => 'bool', - 'isSet' => 'bool', - 'setTime' => 'bool', - 'setTimeZone' => 'bool', - 'toDateTime' => 'DateTime|false', - ], - 'IntlGregorianCalendar' => [ - 'setGregorianChange' => 'bool', - 'getGregorianChange' => 'float', - 'isLeapYear' => 'bool', - ], - 'Collator' => [ - 'create' => '?Collator', - 'compare' => 'int|false', - 'sort' => 'bool', - 'sortWithSortKeys' => 'bool', - 'asort' => 'bool', - 'getAttribute' => 'int|false', - 'setAttribute' => 'bool', - 'getStrength' => 'int', - 'getLocale' => 'string|false', - 'getErrorCode' => 'int|false', - 'getErrorMessage' => 'string|false', - 'getSortKey' => 'string|false', - ], - 'IntlIterator' => [ - 'current' => 'mixed', - 'key' => 'mixed', - 'next' => 'void', - 'rewind' => 'void', - 'valid' => 'bool', - ], - 'UConverter' => [ - 'convert' => 'string|false', - 'fromUCallback' => 'string|int|array|null', - 'getAliases' => 'array|false|null', - 'getAvailable' => 'array', - 'getDestinationEncoding' => 'string|false|null', - 'getDestinationType' => 'int|false|null', - 'getErrorCode' => 'int', - 'getErrorMessage' => '?string', - 'getSourceEncoding' => 'string|false|null', - 'getSourceType' => 'int|false|null', - 'getStandards' => '?array', - 'getSubstChars' => 'string|false|null', - 'reasonText' => 'string', - 'setDestinationEncoding' => 'bool', - 'setSourceEncoding' => 'bool', - 'setSubstChars' => 'bool', - 'toUCallback' => 'string|int|array|null', - 'transcode' => 'string|false', - ], - 'IntlDateFormatter' => [ - 'create' => '?IntlDateFormatter', - 'getDateType' => 'int|false', - 'getTimeType' => 'int|false', - 'getCalendar' => 'int|false', - 'setCalendar' => 'bool', - 'getTimeZoneId' => 'string|false', - 'getCalendarObject' => 'IntlCalendar|false|null', - 'getTimeZone' => 'IntlTimeZone|false', - 'setTimeZone' => '?bool', - 'setPattern' => 'bool', - 'getPattern' => 'string|false', - 'getLocale' => 'string|false', - 'setLenient' => 'void', - 'isLenient' => 'bool', - 'format' => 'string|false', - 'formatObject' => 'string|false', - 'parse' => 'int|float|false', - 'localtime' => 'array|false', - 'getErrorCode' => 'int', - 'getErrorMessage' => 'string', - ], - 'NumberFormatter' => [ - 'create' => '?NumberFormatter', - 'format' => 'string|false', - 'parse' => 'int|float|false', - 'formatCurrency' => 'string|false', - 'parseCurrency' => 'float|false', - 'setAttribute' => 'bool', - 'getAttribute' => 'int|float|false', - 'setTextAttribute' => 'bool', - 'getTextAttribute' => 'string|false', - 'setSymbol' => 'bool', - 'getSymbol' => 'string|false', - 'setPattern' => 'bool', - 'getPattern' => 'string|false', - 'getLocale' => 'string|false', - 'getErrorCode' => 'int', - 'getErrorMessage' => 'string', - ], - 'Locale' => [ - 'getDefault' => 'string', - 'getPrimaryLanguage' => '?string', - 'getScript' => '?string', - 'getRegion' => '?string', - 'getKeywords' => 'array|false|null', - 'getDisplayScript' => 'string|false', - 'getDisplayRegion' => 'string|false', - 'getDisplayName' => 'string|false', - 'getDisplayLanguage' => 'string|false', - 'getDisplayVariant' => 'string|false', - 'composeLocale' => 'string|false', - 'parseLocale' => '?array', - 'getAllVariants' => '?array', - 'filterMatches' => '?bool', - 'lookup' => '?string', - 'canonicalize' => '?string', - 'acceptFromHttp' => 'string|false', - ], - 'MessageFormatter' => [ - 'create' => '?MessageFormatter', - 'format' => 'string|false', - 'formatMessage' => 'string|false', - 'parse' => 'array|false', - 'parseMessage' => 'array|false', - 'setPattern' => 'bool', - 'getPattern' => 'string|false', - 'getLocale' => 'string', - 'getErrorCode' => 'int', - 'getErrorMessage' => 'string', - ], - 'Normalizer' => [ - 'normalize' => 'string|false', - 'isNormalized' => 'bool', - 'getRawDecomposition' => '?string', - ], - 'ResourceBundle' => [ - 'create' => '?ResourceBundle', - 'get' => 'mixed', - 'count' => 'int', - 'getLocales' => 'array|false', - 'getErrorCode' => 'int', - 'getErrorMessage' => 'string', - ], - 'Spoofchecker' => [ - 'isSuspicious' => 'bool', - 'areConfusable' => 'bool', - 'setAllowedLocales' => 'void', - 'setChecks' => 'void', - 'setRestrictionLevel' => 'void', - ], - 'IntlTimeZone' => [ - 'countEquivalentIDs' => 'int|false', - 'createDefault' => 'IntlTimeZone', - 'createEnumeration' => 'IntlIterator|false', - 'createTimeZone' => '?IntlTimeZone', - 'createTimeZoneIDEnumeration' => 'IntlIterator|false', - 'fromDateTimeZone' => '?IntlTimeZone', - 'getCanonicalID' => 'string|false', - 'getDisplayName' => 'string|false', - 'getDSTSavings' => 'int', - 'getEquivalentID' => 'string|false', - 'getErrorCode' => 'int|false', - 'getErrorMessage' => 'string|false', - 'getGMT' => 'IntlTimeZone', - 'getID' => 'string|false', - 'getOffset' => 'bool', - 'getRawOffset' => 'int', - 'getRegion' => 'string|false', - 'getTZDataVersion' => 'string|false', - 'getUnknown' => 'IntlTimeZone', - 'getWindowsID' => 'string|false', - 'getIDForWindowsID' => 'string|false', - 'hasSameRules' => 'bool', - 'toDateTimeZone' => 'DateTimeZone|false', - 'useDaylightTime' => 'bool', - ], - 'Transliterator' => [ - 'create' => '?Transliterator', - 'createFromRules' => '?Transliterator', - 'createInverse' => '?Transliterator', - 'listIDs' => 'array|false', - 'transliterate' => 'string|false', - 'getErrorCode' => 'int|false', - 'getErrorMessage' => 'string|false', - ], - 'IntlChar' => [ - 'hasBinaryProperty' => '?bool', - 'charAge' => '?array', - 'charDigitValue' => '?int', - 'charDirection' => '?int', - 'charFromName' => '?int', - 'charMirror' => 'int|string|null', - 'charName' => '?string', - 'charType' => '?int', - 'chr' => '?string', - 'digit' => 'int|false|null', - 'enumCharNames' => '?bool', - 'enumCharTypes' => 'void', - 'foldCase' => 'int|string|null', - 'forDigit' => 'int', - 'getBidiPairedBracket' => 'int|string|null', - 'getBlockCode' => '?int', - 'getCombiningClass' => '?int', - 'getFC_NFKC_Closure' => 'string|false|null', - 'getIntPropertyMaxValue' => 'int', - 'getIntPropertyMinValue' => 'int', - 'getIntPropertyValue' => '?int', - 'getNumericValue' => '?float', - 'getPropertyEnum' => 'int', - 'getPropertyName' => 'string|false', - 'getPropertyValueEnum' => 'int', - 'getPropertyValueName' => 'string|false', - 'getUnicodeVersion' => 'array', - 'isalnum' => '?bool', - 'isalpha' => '?bool', - 'isbase' => '?bool', - 'isblank' => '?bool', - 'iscntrl' => '?bool', - 'isdefined' => '?bool', - 'isdigit' => '?bool', - 'isgraph' => '?bool', - 'isIDIgnorable' => '?bool', - 'isIDPart' => '?bool', - 'isIDStart' => '?bool', - 'isISOControl' => '?bool', - 'isJavaIDPart' => '?bool', - 'isJavaIDStart' => '?bool', - 'isJavaSpaceChar' => '?bool', - 'islower' => '?bool', - 'isMirrored' => '?bool', - 'isprint' => '?bool', - 'ispunct' => '?bool', - 'isspace' => '?bool', - 'istitle' => '?bool', - 'isUAlphabetic' => '?bool', - 'isULowercase' => '?bool', - 'isupper' => '?bool', - 'isUUppercase' => '?bool', - 'isUWhiteSpace' => '?bool', - 'isWhitespace' => '?bool', - 'isxdigit' => '?bool', - 'ord' => '?int', - 'tolower' => 'int|string|null', - 'totitle' => 'int|string|null', - 'toupper' => 'int|string|null', - ], - 'JsonSerializable' => [ - 'jsonSerialize' => 'mixed', - ], - 'mysqli' => [ - 'autocommit' => 'bool', - 'begin_transaction' => 'bool', - 'change_user' => 'bool', - 'character_set_name' => 'string', - 'commit' => 'bool', - 'connect' => 'bool', - 'dump_debug_info' => 'bool', - 'get_charset' => '?object', - 'get_client_info' => 'string', - 'get_connection_stats' => 'array', - 'get_server_info' => 'string', - 'get_warnings' => 'mysqli_warning|false', - 'kill' => 'bool', - 'multi_query' => 'bool', - 'more_results' => 'bool', - 'next_result' => 'bool', - 'ping' => 'bool', - 'poll' => 'int|false', - 'prepare' => 'mysqli_stmt|false', - 'query' => 'mysqli_result|bool', - 'real_connect' => 'bool', - 'real_escape_string' => 'string', - 'reap_async_query' => 'mysqli_result|bool', - 'escape_string' => 'string', - 'real_query' => 'bool', - 'release_savepoint' => 'bool', - 'rollback' => 'bool', - 'savepoint' => 'bool', - 'select_db' => 'bool', - 'set_charset' => 'bool', - 'options' => 'bool', - 'set_opt' => 'bool', - 'stat' => 'string|false', - 'stmt_init' => 'mysqli_stmt|false', - 'store_result' => 'mysqli_result|false', - 'thread_safe' => 'bool', - 'use_result' => 'mysqli_result|false', - 'refresh' => 'bool', - ], - 'mysqli_result' => [ - 'close' => 'void', - 'free' => 'void', - 'data_seek' => 'bool', - 'fetch_field' => 'object|false', - 'fetch_fields' => 'array', - 'fetch_field_direct' => 'object|false', - 'fetch_all' => 'array', - 'fetch_array' => 'array|null|false', - 'fetch_assoc' => 'array|null|false', - 'fetch_object' => 'object|null|false', - 'fetch_row' => 'array|null|false', - 'field_seek' => 'bool', - 'free_result' => 'void', - ], - 'mysqli_stmt' => [ - 'attr_get' => 'int', - 'attr_set' => 'bool', - 'bind_param' => 'bool', - 'bind_result' => 'bool', - 'data_seek' => 'void', - 'execute' => 'bool', - 'fetch' => '?bool', - 'get_warnings' => 'mysqli_warning|false', - 'result_metadata' => 'mysqli_result|false', - 'more_results' => 'bool', - 'next_result' => 'bool', - 'num_rows' => 'int|string', - 'send_long_data' => 'bool', - 'free_result' => 'void', - 'reset' => 'bool', - 'prepare' => 'bool', - 'store_result' => 'bool', - 'get_result' => 'mysqli_result|false', - ], - 'OCILob' => [ - 'save' => 'bool', - 'import' => 'bool', - 'saveFile' => 'bool', - 'load' => 'string|false', - 'read' => 'string|false', - 'eof' => 'bool', - 'tell' => 'int|false', - 'rewind' => 'bool', - 'seek' => 'bool', - 'size' => 'int|false', - 'write' => 'int|false', - 'append' => 'bool', - 'truncate' => 'bool', - 'erase' => 'int|false', - 'flush' => 'bool', - 'setBuffering' => 'bool', - 'getBuffering' => 'bool', - 'writeToFile' => 'bool', - 'export' => 'bool', - 'writeTemporary' => 'bool', - 'close' => 'bool', - 'free' => 'bool', - ], - 'OCICollection' => [ - 'free' => 'bool', - 'append' => 'bool', - 'getElem' => 'string|float|null|false', - 'assign' => 'bool', - 'assignElem' => 'bool', - 'size' => 'int|false', - 'max' => 'int|false', - 'trim' => 'bool', - ], - 'PDO' => [ - 'beginTransaction' => 'bool', - 'commit' => 'bool', - 'errorCode' => '?string', - 'errorInfo' => 'array', - 'exec' => 'int|false', - 'getAttribute' => 'mixed', - 'getAvailableDrivers' => 'array', - 'inTransaction' => 'bool', - 'lastInsertId' => 'string|false', - 'prepare' => 'PDOStatement|false', - 'query' => 'PDOStatement|false', - 'quote' => 'string|false', - 'rollBack' => 'bool', - 'setAttribute' => 'bool', - ], - 'PDOStatement' => [ - 'bindColumn' => 'bool', - 'bindParam' => 'bool', - 'bindValue' => 'bool', - 'closeCursor' => 'bool', - 'columnCount' => 'int', - 'debugDumpParams' => '?bool', - 'errorCode' => '?string', - 'errorInfo' => 'array', - 'execute' => 'bool', - 'fetch' => 'mixed', - 'fetchAll' => 'array', - 'fetchColumn' => 'mixed', - 'fetchObject' => 'object|false', - 'getAttribute' => 'mixed', - 'getColumnMeta' => 'array|false', - 'nextRowset' => 'bool', - 'rowCount' => 'int', - 'setAttribute' => 'bool', - ], - 'PDO_PGSql_Ext' => [ - 'pgsqlCopyFromArray' => 'bool', - 'pgsqlCopyFromFile' => 'bool', - 'pgsqlCopyToArray' => 'array|false', - 'pgsqlCopyToFile' => 'bool', - 'pgsqlLOBCreate' => 'string|false', - 'pgsqlLOBUnlink' => 'bool', - 'pgsqlGetNotify' => 'array|false', - 'pgsqlGetPid' => 'int', - ], - 'PDO_SQLite_Ext' => [ - 'sqliteCreateFunction' => 'bool', - 'sqliteCreateAggregate' => 'bool', - 'sqliteCreateCollation' => 'bool', - ], - 'Phar' => [ - 'addEmptyDir' => 'void', - 'addFile' => 'void', - 'addFromString' => 'void', - 'buildFromDirectory' => 'array', - 'buildFromIterator' => 'array', - 'compressFiles' => 'void', - 'compress' => '?Phar', - 'decompress' => '?Phar', - 'convertToExecutable' => '?Phar', - 'convertToData' => '?PharData', - 'count' => 'int', - 'extractTo' => 'bool', - 'getAlias' => '?string', - 'getPath' => 'string', - 'getMetadata' => 'mixed', - 'getModified' => 'bool', - 'getSignature' => 'array|false', - 'getStub' => 'string', - 'getVersion' => 'string', - 'hasMetadata' => 'bool', - 'isBuffering' => 'bool', - 'isCompressed' => 'int|false', - 'isFileFormat' => 'bool', - 'isWritable' => 'bool', - 'offsetExists' => 'bool', - 'offsetGet' => 'SplFileInfo', - 'offsetSet' => 'void', - 'offsetUnset' => 'void', - 'setAlias' => 'bool', - 'setDefaultStub' => 'bool', - 'setMetadata' => 'void', - 'setSignatureAlgorithm' => 'void', - 'startBuffering' => 'void', - 'stopBuffering' => 'void', - ], - 'PharData' => [ - 'addEmptyDir' => 'void', - 'addFile' => 'void', - 'addFromString' => 'void', - 'buildFromDirectory' => 'array', - 'buildFromIterator' => 'array', - 'compressFiles' => 'void', - 'compress' => '?PharData', - 'decompress' => '?PharData', - 'convertToExecutable' => '?Phar', - 'convertToData' => '?PharData', - 'count' => 'int', - 'extractTo' => 'bool', - 'getAlias' => '?string', - 'getPath' => 'string', - 'getMetadata' => 'mixed', - 'getModified' => 'bool', - 'getSignature' => 'array|false', - 'getStub' => 'string', - 'getVersion' => 'string', - 'hasMetadata' => 'bool', - 'isBuffering' => 'bool', - 'isCompressed' => 'int|false', - 'isFileFormat' => 'bool', - 'isWritable' => 'bool', - 'offsetExists' => 'bool', - 'offsetGet' => 'SplFileInfo', - 'offsetSet' => 'void', - 'offsetUnset' => 'void', - 'setAlias' => 'bool', - 'setDefaultStub' => 'bool', - 'setMetadata' => 'void', - 'setSignatureAlgorithm' => 'void', - 'startBuffering' => 'void', - 'stopBuffering' => 'void', - ], - 'PharFileInfo' => [ - 'chmod' => 'void', - 'getCompressedSize' => 'int', - 'getCRC32' => 'int', - 'getContent' => 'string', - 'getMetadata' => 'mixed', - 'getPharFlags' => 'int', - 'hasMetadata' => 'bool', - 'isCompressed' => 'bool', - 'isCRCChecked' => 'bool', - 'setMetadata' => 'void', - ], - 'Reflection' => [ - 'getModifierNames' => 'array', - ], - 'ReflectionFunctionAbstract' => [ - 'inNamespace' => 'bool', - 'isClosure' => 'bool', - 'isDeprecated' => 'bool', - 'isInternal' => 'bool', - 'isUserDefined' => 'bool', - 'isGenerator' => 'bool', - 'isVariadic' => 'bool', - 'isStatic' => 'bool', - 'getClosureThis' => '?object', - 'getClosureCalledClass' => '?ReflectionClass', - 'getClosureScopeClass' => '?ReflectionClass', - 'getDocComment' => 'string|false', - 'getEndLine' => 'int|false', - 'getExtension' => '?ReflectionExtension', - 'getExtensionName' => 'string|false', - 'getFileName' => 'string|false', - 'getName' => 'string', - 'getNamespaceName' => 'string', - 'getNumberOfParameters' => 'int', - 'getNumberOfRequiredParameters' => 'int', - 'getParameters' => 'array', - 'getShortName' => 'string', - 'getStartLine' => 'int|false', - 'getStaticVariables' => 'array', - 'returnsReference' => 'bool', - 'hasReturnType' => 'bool', - 'getReturnType' => '?ReflectionType', - ], - 'ReflectionFunction' => [ - 'isDisabled' => 'bool', - 'invoke' => 'mixed', - 'invokeArgs' => 'mixed', - 'getClosure' => 'Closure', - 'getExecutingLine' => 'int', - 'getExecutingFile' => 'string', - 'getTrace' => 'array', - 'getFunction' => 'ReflectionFunctionAbstract', - 'getThis' => '?object', - 'getExecutingGenerator' => 'Generator', - ], - 'ReflectionMethod' => [ - 'isPublic' => 'bool', - 'isPrivate' => 'bool', - 'isProtected' => 'bool', - 'isAbstract' => 'bool', - 'isFinal' => 'bool', - 'isConstructor' => 'bool', - 'isDestructor' => 'bool', - 'getClosure' => 'Closure', - 'getModifiers' => 'int', - 'invoke' => 'mixed', - 'invokeArgs' => 'mixed', - 'getDeclaringClass' => 'ReflectionClass', - 'getPrototype' => 'ReflectionMethod', - 'setAccessible' => 'void', - ], - 'ReflectionClass' => [ - 'getName' => 'string', - 'isInternal' => 'bool', - 'isUserDefined' => 'bool', - 'isAnonymous' => 'bool', - 'isInstantiable' => 'bool', - 'isCloneable' => 'bool', - 'getFileName' => 'string|false', - 'getStartLine' => 'int|false', - 'getEndLine' => 'int|false', - 'getDocComment' => 'string|false', - 'getConstructor' => '?ReflectionMethod', - 'hasMethod' => 'bool', - 'getMethod' => 'ReflectionMethod', - 'getMethods' => 'array', - 'hasProperty' => 'bool', - 'getProperty' => 'ReflectionProperty', - 'getProperties' => 'array', - 'hasConstant' => 'bool', - 'getConstants' => 'array', - 'getReflectionConstants' => 'array', - 'getConstant' => 'mixed', - 'getReflectionConstant' => 'ReflectionClassConstant|false', - 'getInterfaces' => 'array', - 'getInterfaceNames' => 'array', - 'isInterface' => 'bool', - 'getTraits' => 'array', - 'getTraitNames' => 'array', - 'getTraitAliases' => 'array', - 'isTrait' => 'bool', - 'isAbstract' => 'bool', - 'isFinal' => 'bool', - 'getModifiers' => 'int', - 'isInstance' => 'bool', - 'newInstance' => 'object', - 'newInstanceWithoutConstructor' => 'object', - 'newInstanceArgs' => '?object', - 'getParentClass' => 'ReflectionClass|false', - 'isSubclassOf' => 'bool', - 'getStaticProperties' => '?array', - 'getStaticPropertyValue' => 'mixed', - 'setStaticPropertyValue' => 'void', - 'getDefaultProperties' => 'array', - 'isIterable' => 'bool', - 'isIterateable' => 'bool', - 'implementsInterface' => 'bool', - 'getExtension' => '?ReflectionExtension', - 'getExtensionName' => 'string|false', - 'inNamespace' => 'bool', - 'getNamespaceName' => 'string', - 'getShortName' => 'string', - ], - 'ReflectionProperty' => [ - 'getName' => 'string', - 'getValue' => 'mixed', - 'setValue' => 'void', - 'isInitialized' => 'bool', - 'isPublic' => 'bool', - 'isPrivate' => 'bool', - 'isProtected' => 'bool', - 'isStatic' => 'bool', - 'isDefault' => 'bool', - 'getModifiers' => 'int', - 'getDeclaringClass' => 'ReflectionClass', - 'getDocComment' => 'string|false', - 'setAccessible' => 'void', - 'getType' => '?ReflectionType', - 'hasType' => 'bool', - 'getDefaultValue' => 'mixed', - ], - 'ReflectionClassConstant' => [ - 'getName' => 'string', - 'getValue' => 'mixed', - 'isPublic' => 'bool', - 'isPrivate' => 'bool', - 'isProtected' => 'bool', - 'getModifiers' => 'int', - 'getDeclaringClass' => 'ReflectionClass', - 'getDocComment' => 'string|false', - ], - 'ReflectionParameter' => [ - 'getName' => 'string', - 'isPassedByReference' => 'bool', - 'canBePassedByValue' => 'bool', - 'getDeclaringFunction' => 'ReflectionFunctionAbstract', - 'getDeclaringClass' => '?ReflectionClass', - 'getClass' => '?ReflectionClass', - 'hasType' => 'bool', - 'getType' => '?ReflectionType', - 'isArray' => 'bool', - 'isCallable' => 'bool', - 'allowsNull' => 'bool', - 'getPosition' => 'int', - 'isOptional' => 'bool', - 'isDefaultValueAvailable' => 'bool', - 'getDefaultValue' => 'mixed', - 'isDefaultValueConstant' => 'bool', - 'getDefaultValueConstantName' => '?string', - 'isVariadic' => 'bool', - ], - 'ReflectionType' => [ - 'allowsNull' => 'bool', - ], - 'ReflectionNamedType' => [ - 'getName' => 'string', - 'isBuiltin' => 'bool', - ], - 'ReflectionExtension' => [ - 'getName' => 'string', - 'getVersion' => '?string', - 'getFunctions' => 'array', - 'getConstants' => 'array', - 'getINIEntries' => 'array', - 'getClasses' => 'array', - 'getClassNames' => 'array', - 'getDependencies' => 'array', - 'info' => 'void', - 'isPersistent' => 'bool', - 'isTemporary' => 'bool', - ], - 'ReflectionZendExtension' => [ - 'getName' => 'string', - 'getVersion' => 'string', - 'getAuthor' => 'string', - 'getURL' => 'string', - 'getCopyright' => 'string', - ], - 'SessionHandlerInterface' => [ - 'open' => 'bool', - 'close' => 'bool', - 'read' => 'string|false', - 'write' => 'bool', - 'destroy' => 'bool', - 'gc' => 'int|false', - ], - 'SessionIdInterface' => [ - 'create_sid' => 'string', - ], - 'SessionUpdateTimestampHandlerInterface' => [ - 'validateId' => 'bool', - 'updateTimestamp' => 'bool', - ], - 'SessionHandler' => [ - 'open' => 'bool', - 'close' => 'bool', - 'read' => 'string|false', - 'write' => 'bool', - 'destroy' => 'bool', - 'gc' => 'int|false', - 'create_sid' => 'string', - ], - 'SimpleXMLElement' => [ - 'xpath' => 'array|null|false', - 'registerXPathNamespace' => 'bool', - 'asXML' => 'string|bool', - 'saveXML' => 'string|bool', - 'getNamespaces' => 'array', - 'getDocNamespaces' => 'array|false', - 'children' => '?SimpleXMLElement', - 'attributes' => '?SimpleXMLElement', - 'addChild' => '?SimpleXMLElement', - 'addAttribute' => 'void', - 'getName' => 'string', - 'count' => 'int', - 'rewind' => 'void', - 'valid' => 'bool', - 'current' => 'SimpleXMLElement', - 'key' => 'string', - 'next' => 'void', - 'hasChildren' => 'bool', - 'getChildren' => '?SimpleXMLElement', - ], - 'SNMP' => [ - 'close' => 'bool', - 'setSecurity' => 'bool', - 'get' => 'mixed', - 'getnext' => 'mixed', - 'walk' => 'array|false', - 'set' => 'bool', - 'getErrno' => 'int', - 'getError' => 'string', - ], - 'SoapServer' => [ - 'fault' => 'void', - 'addSoapHeader' => 'void', - 'setPersistence' => 'void', - 'setClass' => 'void', - 'setObject' => 'void', - 'getFunctions' => 'array', - 'addFunction' => 'void', - 'handle' => 'void', - ], - 'SoapClient' => [ - '__call' => 'mixed', - '__soapCall' => 'mixed', - '__getFunctions' => '?array', - '__getTypes' => '?array', - '__getLastRequest' => '?string', - '__getLastResponse' => '?string', - '__getLastRequestHeaders' => '?string', - '__getLastResponseHeaders' => '?string', - '__doRequest' => '?string', - '__setCookie' => 'void', - '__getCookies' => 'array', - '__setSoapHeaders' => 'bool', - '__setLocation' => '?string', - ], - 'ArrayObject' => [ - 'offsetExists' => 'bool', - 'offsetGet' => 'mixed', - 'offsetSet' => 'void', - 'offsetUnset' => 'void', - 'append' => 'void', - 'getArrayCopy' => 'array', - 'count' => 'int', - 'getFlags' => 'int', - 'setFlags' => 'void', - 'asort' => 'bool', - 'ksort' => 'bool', - 'uasort' => 'bool', - 'uksort' => 'bool', - 'natsort' => 'bool', - 'natcasesort' => 'bool', - 'unserialize' => 'void', - 'serialize' => 'string', - '__serialize' => 'array', - '__unserialize' => 'void', - 'getIterator' => 'Iterator', - 'exchangeArray' => 'array', - 'setIteratorClass' => 'void', - 'getIteratorClass' => 'string', - '__debugInfo' => 'array', - ], - 'ArrayIterator' => [ - 'offsetExists' => 'bool', - 'offsetGet' => 'mixed', - 'offsetSet' => 'void', - 'offsetUnset' => 'void', - 'append' => 'void', - 'getArrayCopy' => 'array', - 'count' => 'int', - 'getFlags' => 'int', - 'setFlags' => 'void', - 'asort' => 'bool', - 'ksort' => 'bool', - 'uasort' => 'bool', - 'uksort' => 'bool', - 'natsort' => 'bool', - 'natcasesort' => 'bool', - 'unserialize' => 'void', - 'serialize' => 'string', - '__serialize' => 'array', - '__unserialize' => 'void', - 'rewind' => 'void', - 'current' => 'mixed', - 'key' => 'string|int|null', - 'next' => 'void', - 'valid' => 'bool', - 'seek' => 'void', - '__debugInfo' => 'array', - ], - 'RecursiveArrayIterator' => [ - 'hasChildren' => 'bool', - 'getChildren' => '?RecursiveArrayIterator', - ], - 'SplFileInfo' => [ - 'getPath' => 'string', - 'getFilename' => 'string', - 'getExtension' => 'string', - 'getBasename' => 'string', - 'getPathname' => 'string', - 'getPerms' => 'int|false', - 'getInode' => 'int|false', - 'getSize' => 'int|false', - 'getOwner' => 'int|false', - 'getGroup' => 'int|false', - 'getATime' => 'int|false', - 'getMTime' => 'int|false', - 'getCTime' => 'int|false', - 'getType' => 'string|false', - 'isWritable' => 'bool', - 'isReadable' => 'bool', - 'isExecutable' => 'bool', - 'isFile' => 'bool', - 'isDir' => 'bool', - 'isLink' => 'bool', - 'getLinkTarget' => 'string|false', - 'getRealPath' => 'string|false', - 'getFileInfo' => 'SplFileInfo', - 'getPathInfo' => '?SplFileInfo', - 'openFile' => 'SplFileObject', - 'setFileClass' => 'void', - 'setInfoClass' => 'void', - '__debugInfo' => 'array', - '_bad_state_ex' => 'void', - ], - 'DirectoryIterator' => [ - 'getFilename' => 'string', - 'getExtension' => 'string', - 'getBasename' => 'string', - 'isDot' => 'bool', - 'rewind' => 'void', - 'valid' => 'bool', - 'key' => 'mixed', - 'current' => 'mixed', - 'next' => 'void', - 'seek' => 'void', - ], - 'FilesystemIterator' => [ - 'rewind' => 'void', - 'key' => 'string', - 'current' => 'string|SplFileInfo|FilesystemIterator', - 'getFlags' => 'int', - 'setFlags' => 'void', - ], - 'RecursiveDirectoryIterator' => [ - 'hasChildren' => 'bool', - 'getChildren' => 'RecursiveDirectoryIterator', - 'getSubPath' => 'string', - 'getSubPathname' => 'string', - ], - 'GlobIterator' => [ - 'count' => 'int', - ], - 'SplFileObject' => [ - 'rewind' => 'void', - 'eof' => 'bool', - 'valid' => 'bool', - 'fgets' => 'string', - 'fread' => 'string|false', - 'fgetcsv' => 'array|false', - 'fputcsv' => 'int|false', - 'setCsvControl' => 'void', - 'getCsvControl' => 'array', - 'flock' => 'bool', - 'fflush' => 'bool', - 'ftell' => 'int|false', - 'fseek' => 'int', - 'fgetc' => 'string|false', - 'fpassthru' => 'int', - 'fscanf' => 'array|int|null', - 'fwrite' => 'int|false', - 'fstat' => 'array', - 'ftruncate' => 'bool', - 'current' => 'string|array|false', - 'key' => 'int', - 'next' => 'void', - 'setFlags' => 'void', - 'getFlags' => 'int', - 'setMaxLineLen' => 'void', - 'getMaxLineLen' => 'int', - 'hasChildren' => 'false', - 'getChildren' => 'null', - 'seek' => 'void', - 'getCurrentLine' => 'string', - ], - 'SplDoublyLinkedList' => [ - 'add' => 'void', - 'pop' => 'mixed', - 'shift' => 'mixed', - 'push' => 'void', - 'unshift' => 'void', - 'top' => 'mixed', - 'bottom' => 'mixed', - '__debugInfo' => 'array', - 'count' => 'int', - 'isEmpty' => 'bool', - 'setIteratorMode' => 'int', - 'getIteratorMode' => 'int', - 'offsetExists' => 'bool', - 'offsetGet' => 'mixed', - 'offsetSet' => 'void', - 'offsetUnset' => 'void', - 'rewind' => 'void', - 'current' => 'mixed', - 'key' => 'int', - 'prev' => 'void', - 'next' => 'void', - 'valid' => 'bool', - 'unserialize' => 'void', - 'serialize' => 'string', - '__serialize' => 'array', - '__unserialize' => 'void', - ], - 'SplQueue' => [ - 'enqueue' => 'void', - 'dequeue' => 'mixed', - ], - 'SplFixedArray' => [ - '__wakeup' => 'void', - 'count' => 'int', - 'toArray' => 'array', - 'fromArray' => 'SplFixedArray', - 'getSize' => 'int', - 'offsetExists' => 'bool', - 'offsetGet' => 'mixed', - 'offsetSet' => 'void', - 'offsetUnset' => 'void', - ], - 'SplPriorityQueue' => [ - 'compare' => 'int', - 'setExtractFlags' => 'int', - 'top' => 'mixed', - 'extract' => 'mixed', - 'count' => 'int', - 'isEmpty' => 'bool', - 'rewind' => 'void', - 'current' => 'mixed', - 'key' => 'int', - 'next' => 'void', - 'valid' => 'bool', - 'isCorrupted' => 'bool', - 'getExtractFlags' => 'int', - '__debugInfo' => 'array', - ], - 'SplHeap' => [ - 'extract' => 'mixed', - 'insert' => 'bool', - 'top' => 'mixed', - 'count' => 'int', - 'isEmpty' => 'bool', - 'rewind' => 'void', - 'current' => 'mixed', - 'key' => 'int', - 'next' => 'void', - 'valid' => 'bool', - 'recoverFromCorruption' => 'bool', - 'compare' => 'int', - 'isCorrupted' => 'bool', - '__debugInfo' => 'array', - ], - 'SplMinHeap' => [ - 'compare' => 'int', - ], - 'SplMaxHeap' => [ - 'compare' => 'int', - ], - 'EmptyIterator' => [ - 'current' => 'never', - 'next' => 'void', - 'key' => 'never', - 'valid' => 'false', - 'rewind' => 'void', - ], - 'CallbackFilterIterator' => [ - 'accept' => 'bool', - ], - 'RecursiveCallbackFilterIterator' => [ - 'hasChildren' => 'bool', - 'getChildren' => 'RecursiveCallbackFilterIterator', - ], - 'RecursiveIterator' => [ - 'hasChildren' => 'bool', - 'getChildren' => '?RecursiveIterator', - ], - 'RecursiveIteratorIterator' => [ - 'rewind' => 'void', - 'valid' => 'bool', - 'key' => 'mixed', - 'current' => 'mixed', - 'next' => 'void', - 'getDepth' => 'int', - 'getSubIterator' => '?RecursiveIterator', - 'getInnerIterator' => 'RecursiveIterator', - 'beginIteration' => 'void', - 'endIteration' => 'void', - 'callHasChildren' => 'bool', - 'callGetChildren' => '?RecursiveIterator', - 'beginChildren' => 'void', - 'endChildren' => 'void', - 'nextElement' => 'void', - 'setMaxDepth' => 'void', - 'getMaxDepth' => 'int|false', - ], - 'OuterIterator' => [ - 'getInnerIterator' => '?Iterator', - ], - 'IteratorIterator' => [ - 'getInnerIterator' => '?Iterator', - 'rewind' => 'void', - 'valid' => 'bool', - 'key' => 'mixed', - 'current' => 'mixed', - 'next' => 'void', - ], - 'FilterIterator' => [ - 'accept' => 'bool', - 'rewind' => 'void', - 'next' => 'void', - ], - 'RecursiveFilterIterator' => [ - 'hasChildren' => 'bool', - 'getChildren' => '?RecursiveFilterIterator', - ], - 'ParentIterator' => [ - 'accept' => 'bool', - ], - 'SeekableIterator' => [ - 'seek' => 'void', - ], - 'LimitIterator' => [ - 'rewind' => 'void', - 'valid' => 'bool', - 'next' => 'void', - 'seek' => 'int', - 'getPosition' => 'int', - ], - 'CachingIterator' => [ - 'rewind' => 'void', - 'valid' => 'bool', - 'next' => 'void', - 'hasNext' => 'bool', - 'getFlags' => 'int', - 'setFlags' => 'void', - 'offsetGet' => 'mixed', - 'offsetSet' => 'void', - 'offsetUnset' => 'void', - 'offsetExists' => 'bool', - 'getCache' => 'array', - 'count' => 'int', - ], - 'RecursiveCachingIterator' => [ - 'hasChildren' => 'bool', - 'getChildren' => '?RecursiveCachingIterator', - ], - 'NoRewindIterator' => [ - 'rewind' => 'void', - 'valid' => 'bool', - 'key' => 'mixed', - 'current' => 'mixed', - 'next' => 'void', - ], - 'AppendIterator' => [ - 'append' => 'void', - 'rewind' => 'void', - 'valid' => 'bool', - 'current' => 'mixed', - 'next' => 'void', - 'getIteratorIndex' => '?int', - 'getArrayIterator' => 'ArrayIterator', - ], - 'InfiniteIterator' => [ - 'next' => 'void', - ], - 'RegexIterator' => [ - 'accept' => 'bool', - 'getMode' => 'int', - 'setMode' => 'void', - 'getFlags' => 'int', - 'setFlags' => 'void', - 'getRegex' => 'string', - 'getPregFlags' => 'int', - 'setPregFlags' => 'void', - ], - 'RecursiveRegexIterator' => [ - 'accept' => 'bool', - 'hasChildren' => 'bool', - 'getChildren' => 'RecursiveRegexIterator', - ], - 'RecursiveTreeIterator' => [ - 'key' => 'mixed', - 'current' => 'mixed', - 'getPrefix' => 'string', - 'setPostfix' => 'void', - 'setPrefixPart' => 'void', - 'getEntry' => 'string', - 'getPostfix' => 'string', - ], - 'SplObserver' => [ - 'update' => 'void', - ], - 'SplSubject' => [ - 'attach' => 'void', - 'detach' => 'void', - 'notify' => 'void', - ], - 'SplObjectStorage' => [ - 'attach' => 'void', - 'detach' => 'void', - 'contains' => 'bool', - 'addAll' => 'int', - 'removeAll' => 'int', - 'removeAllExcept' => 'int', - 'getInfo' => 'mixed', - 'setInfo' => 'void', - 'count' => 'int', - 'rewind' => 'void', - 'valid' => 'bool', - 'key' => 'int', - 'current' => 'object', - 'next' => 'void', - 'unserialize' => 'void', - 'serialize' => 'string', - 'offsetExists' => 'bool', - 'offsetGet' => 'mixed', - 'offsetSet' => 'void', - 'offsetUnset' => 'void', - 'getHash' => 'string', - '__serialize' => 'array', - '__unserialize' => 'void', - '__debugInfo' => 'array', - ], - 'MultipleIterator' => [ - 'getFlags' => 'int', - 'setFlags' => 'void', - 'attachIterator' => 'void', - 'detachIterator' => 'void', - 'containsIterator' => 'bool', - 'countIterators' => 'int', - 'rewind' => 'void', - 'valid' => 'bool', - 'key' => 'array', - 'current' => 'array', - 'next' => 'void', - '__debugInfo' => 'array', - ], - 'SQLite3' => [ - 'open' => 'void', - 'version' => 'array', - 'lastInsertRowID' => 'int', - 'lastErrorCode' => 'int', - 'lastExtendedErrorCode' => 'int', - 'lastErrorMsg' => 'string', - 'changes' => 'int', - 'busyTimeout' => 'bool', - 'loadExtension' => 'bool', - 'backup' => 'bool', - 'escapeString' => 'string', - 'prepare' => 'SQLite3Stmt|false', - 'exec' => 'bool', - 'query' => 'SQLite3Result|false', - 'querySingle' => 'mixed', - 'createFunction' => 'bool', - 'createAggregate' => 'bool', - 'createCollation' => 'bool', - 'enableExceptions' => 'bool', - 'enableExtendedResultCodes' => 'bool', - 'setAuthorizer' => 'bool', - ], - 'SQLite3Stmt' => [ - 'bindParam' => 'bool', - 'bindValue' => 'bool', - 'clear' => 'bool', - 'close' => 'bool', - 'execute' => 'SQLite3Result|false', - 'getSQL' => 'string|false', - 'paramCount' => 'int', - 'readOnly' => 'bool', - 'reset' => 'bool', - ], - 'SQLite3Result' => [ - 'numColumns' => 'int', - 'columnName' => 'string|false', - 'columnType' => 'int|false', - 'fetchArray' => 'array|false', - 'reset' => 'bool', - ], - 'Directory' => [ - 'close' => 'void', - 'rewind' => 'void', - 'read' => 'string|false', - ], - 'php_user_filter' => [ - 'filter' => 'int', - 'onCreate' => 'bool', - 'onClose' => 'void', - ], - 'tidy' => [ - 'getOpt' => 'string|int|bool', - 'cleanRepair' => 'bool', - 'parseFile' => 'bool', - 'parseString' => 'bool', - 'repairString' => 'string|false', - 'repairFile' => 'string|false', - 'diagnose' => 'bool', - 'getRelease' => 'string', - 'getConfig' => 'array', - 'getStatus' => 'int', - 'getHtmlVer' => 'int', - 'getOptDoc' => 'string|false', - 'isXhtml' => 'bool', - 'isXml' => 'bool', - 'root' => '?tidyNode', - 'head' => '?tidyNode', - 'html' => '?tidyNode', - 'body' => '?tidyNode', - ], - 'XMLReader' => [ - 'getAttribute' => '?string', - 'getAttributeNo' => '?string', - 'getAttributeNs' => '?string', - 'getParserProperty' => 'bool', - 'isValid' => 'bool', - 'lookupNamespace' => '?string', - 'moveToAttribute' => 'bool', - 'moveToAttributeNo' => 'bool', - 'moveToAttributeNs' => 'bool', - 'moveToElement' => 'bool', - 'moveToFirstAttribute' => 'bool', - 'moveToNextAttribute' => 'bool', - 'read' => 'bool', - 'next' => 'bool', - 'readInnerXml' => 'string', - 'readOuterXml' => 'string', - 'readString' => 'string', - 'setSchema' => 'bool', - 'setParserProperty' => 'bool', - 'setRelaxNGSchema' => 'bool', - 'setRelaxNGSchemaSource' => 'bool', - 'expand' => 'DOMNode|false', - ], - 'XMLWriter' => [ - 'openUri' => 'bool', - 'openMemory' => 'bool', - 'setIndent' => 'bool', - 'setIndentString' => 'bool', - 'startComment' => 'bool', - 'endComment' => 'bool', - 'startAttribute' => 'bool', - 'endAttribute' => 'bool', - 'writeAttribute' => 'bool', - 'startAttributeNs' => 'bool', - 'writeAttributeNs' => 'bool', - 'startElement' => 'bool', - 'endElement' => 'bool', - 'fullEndElement' => 'bool', - 'startElementNs' => 'bool', - 'writeElement' => 'bool', - 'writeElementNs' => 'bool', - 'startPi' => 'bool', - 'endPi' => 'bool', - 'writePi' => 'bool', - 'startCdata' => 'bool', - 'endCdata' => 'bool', - 'writeCdata' => 'bool', - 'text' => 'bool', - 'writeRaw' => 'bool', - 'startDocument' => 'bool', - 'endDocument' => 'bool', - 'writeComment' => 'bool', - 'startDtd' => 'bool', - 'endDtd' => 'bool', - 'writeDtd' => 'bool', - 'startDtdElement' => 'bool', - 'endDtdElement' => 'bool', - 'writeDtdElement' => 'bool', - 'startDtdAttlist' => 'bool', - 'endDtdAttlist' => 'bool', - 'writeDtdAttlist' => 'bool', - 'startDtdEntity' => 'bool', - 'endDtdEntity' => 'bool', - 'writeDtdEntity' => 'bool', - 'outputMemory' => 'string', - 'flush' => 'string|int', - ], - 'XSLTProcessor' => [ - 'importStylesheet' => 'bool', - 'transformToDoc' => 'DOMDocument|false', - 'transformToUri' => 'int', - 'transformToXml' => 'string|null|false', - 'setParameter' => 'bool', - 'getParameter' => 'string|false', - 'removeParameter' => 'bool', - 'hasExsltSupport' => 'bool', - 'registerPHPFunctions' => 'void', - 'setSecurityPrefs' => 'int', - 'getSecurityPrefs' => 'int', - ], - 'ZipArchive' => [ - 'open' => 'bool|int', - 'setPassword' => 'bool', - 'close' => 'bool', - 'count' => 'int', - 'getStatusString' => 'string', - 'addEmptyDir' => 'bool', - 'addFromString' => 'bool', - 'addFile' => 'bool', - 'replaceFile' => 'bool', - 'addGlob' => 'array|false', - 'addPattern' => 'array|false', - 'renameIndex' => 'bool', - 'renameName' => 'bool', - 'setArchiveComment' => 'bool', - 'getArchiveComment' => 'string|false', - 'setCommentIndex' => 'bool', - 'setCommentName' => 'bool', - 'setMtimeIndex' => 'bool', - 'setMtimeName' => 'bool', - 'getCommentIndex' => 'string|false', - 'getCommentName' => 'string|false', - 'deleteIndex' => 'bool', - 'deleteName' => 'bool', - 'statName' => 'array|false', - 'statIndex' => 'array|false', - 'locateName' => 'int|false', - 'getNameIndex' => 'string|false', - 'unchangeArchive' => 'bool', - 'unchangeAll' => 'bool', - 'unchangeIndex' => 'bool', - 'unchangeName' => 'bool', - 'extractTo' => 'bool', - 'getFromName' => 'string|false', - 'getFromIndex' => 'string|false', - 'setExternalAttributesName' => 'bool', - 'setExternalAttributesIndex' => 'bool', - 'getExternalAttributesName' => 'bool', - 'getExternalAttributesIndex' => 'bool', - 'setCompressionName' => 'bool', - 'setCompressionIndex' => 'bool', - 'setEncryptionName' => 'bool', - 'setEncryptionIndex' => 'bool', - 'registerProgressCallback' => 'bool', - 'registerCancelCallback' => 'bool', - ], - 'Exception' => [ - '__wakeup' => 'void', - ], - 'Error' => [ - '__wakeup' => 'void', - ], - 'IteratorAggregate' => [ - 'getIterator' => 'Traversable', - ], - 'Iterator' => [ - 'current' => 'mixed', - 'next' => 'void', - 'key' => 'mixed', - 'valid' => 'bool', - 'rewind' => 'void', - ], - 'ArrayAccess' => [ - 'offsetExists' => 'bool', - 'offsetGet' => 'mixed', - 'offsetSet' => 'void', - 'offsetUnset' => 'void', - ], - 'Countable' => [ - 'count' => 'int', - ], - ]; -} diff --git a/vendor/symfony/error-handler/LICENSE b/vendor/symfony/error-handler/LICENSE deleted file mode 100644 index f37c76b5..00000000 --- a/vendor/symfony/error-handler/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2019-present Fabien Potencier - -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/vendor/symfony/error-handler/README.md b/vendor/symfony/error-handler/README.md deleted file mode 100644 index 12c0bfa6..00000000 --- a/vendor/symfony/error-handler/README.md +++ /dev/null @@ -1,44 +0,0 @@ -ErrorHandler Component -====================== - -The ErrorHandler component provides tools to manage errors and ease debugging PHP code. - -Getting Started ---------------- - -``` -$ composer require symfony/error-handler -``` - -```php -use Symfony\Component\ErrorHandler\Debug; -use Symfony\Component\ErrorHandler\ErrorHandler; -use Symfony\Component\ErrorHandler\DebugClassLoader; - -Debug::enable(); - -// or enable only one feature -//ErrorHandler::register(); -//DebugClassLoader::enable(); - -// If you want a custom generic template when debug is not enabled -// HtmlErrorRenderer::setTemplate('/path/to/custom/error.html.php'); - -$data = ErrorHandler::call(static function () use ($filename, $datetimeFormat) { - // if any code executed inside this anonymous function fails, a PHP exception - // will be thrown, even if the code uses the '@' PHP silence operator - $data = json_decode(file_get_contents($filename), true); - $data['read_at'] = date($datetimeFormat); - file_put_contents($filename, json_encode($data)); - - return $data; -}); -``` - -Resources ---------- - - * [Contributing](https://symfony.com/doc/current/contributing/index.html) - * [Report issues](https://github.com/symfony/symfony/issues) and - [send Pull Requests](https://github.com/symfony/symfony/pulls) - in the [main Symfony repository](https://github.com/symfony/symfony) diff --git a/vendor/symfony/error-handler/Resources/assets/css/error.css b/vendor/symfony/error-handler/Resources/assets/css/error.css deleted file mode 100644 index 332d8187..00000000 --- a/vendor/symfony/error-handler/Resources/assets/css/error.css +++ /dev/null @@ -1,4 +0,0 @@ -body { background-color: #fff; color: #222; font: 16px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; margin: 0; } -.container { margin: 30px; max-width: 600px; } -h1 { color: #dc3545; font-size: 24px; } -h2 { font-size: 18px; } diff --git a/vendor/symfony/error-handler/Resources/assets/css/exception.css b/vendor/symfony/error-handler/Resources/assets/css/exception.css deleted file mode 100644 index 3e6eae5a..00000000 --- a/vendor/symfony/error-handler/Resources/assets/css/exception.css +++ /dev/null @@ -1,359 +0,0 @@ -/* This file is based on WebProfilerBundle/Resources/views/Profiler/profiler.css.twig. - If you make any change in this file, verify the same change is needed in the other file. */ -:root { - --font-sans-serif: Helvetica, Arial, sans-serif; - --page-background: #f9f9f9; - --color-text: #222; - /* when updating any of these colors, do the same in toolbar.css.twig */ - --color-success: #4f805d; - --color-warning: #a46a1f; - --color-error: #b0413e; - --color-muted: #999; - --tab-background: #f0f0f0; - --tab-border-color: #e5e5e5; - --tab-active-border-color: #d4d4d4; - --tab-color: #444; - --tab-active-background: #fff; - --tab-active-color: var(--color-text); - --tab-disabled-background: #f5f5f5; - --tab-disabled-color: #999; - --selected-badge-background: #e5e5e5; - --selected-badge-color: #525252; - --selected-badge-shadow: inset 0 0 0 1px #d4d4d4; - --selected-badge-warning-background: #fde496; - --selected-badge-warning-color: #785b02; - --selected-badge-warning-shadow: inset 0 0 0 1px #e6af05; - --selected-badge-danger-background: #FCE9ED; - --selected-badge-danger-color: #83122A; - --selected-badge-danger-shadow: inset 0 0 0 1px #F5B8C5; - --metric-value-background: #fff; - --metric-value-color: inherit; - --metric-unit-color: #999; - --metric-label-background: #e0e0e0; - --metric-label-color: inherit; - --table-border: #e0e0e0; - --table-background: #fff; - --table-header: #e0e0e0; - --trace-selected-background: #F7E5A1; - --tree-active-background: #F7E5A1; - --exception-title-color: var(--base-2); - --shadow: 0px 0px 1px rgba(128, 128, 128, .2); - --border: 1px solid #e0e0e0; - --background-error: var(--color-error); - --highlight-comment: #969896; - --highlight-default: #222222; - --highlight-keyword: #a71d5d; - --highlight-string: #183691; - --base-0: #fff; - --base-1: #f5f5f5; - --base-2: #e0e0e0; - --base-3: #ccc; - --base-4: #666; - --base-5: #444; - --base-6: #222; -} - -.theme-dark { - --page-background: #36393e; - --color-text: #e0e0e0; - --color-muted: #777; - --color-error: #d43934; - --tab-background: #404040; - --tab-border-color: #737373; - --tab-active-border-color: #171717; - --tab-color: var(--color-text); - --tab-active-background: #d4d4d4; - --tab-active-color: #262626; - --tab-disabled-background: var(--page-background); - --tab-disabled-color: #a3a3a3; - --selected-badge-background: #555; - --selected-badge-color: #ddd; - --selected-badge-shadow: none; - --selected-badge-warning-background: #fcd55f; - --selected-badge-warning-color: #785b02; - --selected-badge-warning-shadow: inset 0 0 0 1px #af8503; - --selected-badge-danger-background: #B41939; - --selected-badge-danger-color: #FCE9ED; - --selected-badge-danger-shadow: none; - --metric-value-background: #555; - --metric-value-color: inherit; - --metric-unit-color: #999; - --metric-label-background: #777; - --metric-label-color: #e0e0e0; - --trace-selected-background: #71663acc; - --table-border: #444; - --table-background: #333; - --table-header: #555; - --info-background: rgba(79, 148, 195, 0.5); - --tree-active-background: var(--metric-label-background); - --exception-title-color: var(--base-2); - --shadow: 0px 0px 1px rgba(32, 32, 32, .2); - --border: 1px solid #666; - --background-error: #b0413e; - --highlight-comment: #dedede; - --highlight-default: var(--base-6); - --highlight-keyword: #ff413c; - --highlight-string: #70a6fd; - --base-0: #2e3136; - --base-1: #444; - --base-2: #666; - --base-3: #666; - --base-4: #666; - --base-5: #e0e0e0; - --base-6: #f5f5f5; - --card-label-background: var(--tab-active-background); - --card-label-color: var(--tab-active-color); -} - -html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}summary{cursor: pointer} - -html { - /* always display the vertical scrollbar to avoid jumps when toggling contents */ - overflow-y: scroll; -} -body { background-color: var(--page-background); color: var(--base-6); font: 14px/1.4 Helvetica, Arial, sans-serif; padding-bottom: 45px; } - -a { cursor: pointer; text-decoration: none; } -a:hover { text-decoration: underline; } -abbr[title] { border-bottom: none; cursor: help; text-decoration: none; } - -code, pre { font: 13px/1.5 Consolas, Monaco, Menlo, "Ubuntu Mono", "Liberation Mono", monospace; } - -table, tr, th, td { background: var(--base-0); border-collapse: collapse; vertical-align: top; } -table { background: var(--base-0); border: var(--border); box-shadow: 0px 0px 1px rgba(128, 128, 128, .2); margin: 1em 0; width: 100%; } -table th, table td { border: solid var(--base-2); border-width: 1px 0; padding: 8px 10px; } -table th { background-color: var(--base-2); font-weight: bold; text-align: left; } - -.m-t-5 { margin-top: 5px; } -.hidden-xs-down { display: none; } -.block { display: block; } -.full-width { width: 100%; } -.hidden { display: none; } -.prewrap { white-space: pre-wrap; } -.nowrap { white-space: nowrap; } -.newline { display: block; } -.break-long-words { word-wrap: break-word; overflow-wrap: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; min-width: 0; } -.text-small { font-size: 12px !important; } -.text-muted { color: #999; } -.text-bold { font-weight: bold; } -.empty { border: 4px dashed var(--base-2); color: #999; margin: 1em 0; padding: .5em 2em; } - -.status-success { background: rgba(94, 151, 110, 0.3); } -.status-warning { background: rgba(240, 181, 24, 0.3); } -.status-error { background: rgba(176, 65, 62, 0.2); } -.status-success td, .status-warning td, .status-error td { background: transparent; } -tr.status-error td, tr.status-warning td { border-bottom: 1px solid var(--base-2); border-top: 1px solid var(--base-2); } -.status-warning .colored { color: #A46A1F; } -.status-error .colored { color: var(--color-error); } - -.sf-toggle { cursor: pointer; position: relative; } -.sf-toggle-content { -moz-transition: display .25s ease; -webkit-transition: display .25s ease; transition: display .25s ease; } -.sf-toggle-content.sf-toggle-hidden { display: none; } -.sf-toggle-content.sf-toggle-visible { display: block; } -thead.sf-toggle-content.sf-toggle-visible, tbody.sf-toggle-content.sf-toggle-visible { display: table-row-group; } -.sf-toggle-off .icon-close, .sf-toggle-on .icon-open { display: none; } -.sf-toggle-off .icon-open, .sf-toggle-on .icon-close { display: block; } - -.tab-navigation { - background-color: var(--tab-background); - border-radius: 6px; - box-shadow: inset 0 0 0 1px var(--tab-border-color), 0 0 0 5px var(--page-background); - display: inline-flex; - flex-wrap: wrap; - margin: 0 0 15px; - padding: 0; - user-select: none; - -webkit-user-select: none; -} -.sf-tabs-sm .tab-navigation { - box-shadow: inset 0 0 0 1px var(--tab-border-color), 0 0 0 4px var(--page-background); - margin: 0 0 10px; -} -.tab-navigation .tab-control { - background: transparent; - border: 0; - box-shadow: none; - transition: box-shadow .05s ease-in, background-color .05s ease-in; - cursor: pointer; - font-size: 14px; - font-weight: 500; - line-height: 1.4; - margin: 0; - padding: 4px 14px; - position: relative; - text-align: center; - z-index: 1; -} -.sf-tabs-sm .tab-navigation .tab-control { - font-size: 13px; - padding: 2.5px 10px; -} -.tab-navigation .tab-control:before { - background: var(--tab-border-color); - bottom: 15%; - content: ""; - left: 0; - position: absolute; - top: 15%; - width: 1px; -} -.tab-navigation .tab-control:first-child:before, -.tab-navigation .tab-control.active + .tab-control:before, -.tab-navigation .tab-control.active:before { - width: 0; -} -.tab-navigation .tab-control .badge { - background: var(--selected-badge-background); - box-shadow: var(--selected-badge-shadow); - color: var(--selected-badge-color); - display: inline-block; - font-size: 12px; - font-weight: bold; - line-height: 1; - margin-left: 8px; - min-width: 10px; - padding: 2px 6px; - text-align: center; - white-space: nowrap; -} -.tab-navigation .tab-control.disabled { - color: var(--tab-disabled-color); -} -.tab-navigation .tab-control.active { - background-color: var(--tab-active-background); - border-radius: 6px; - box-shadow: inset 0 0 0 1.5px var(--tab-active-border-color); - color: var(--tab-active-color); - position: relative; - z-index: 1; -} -.theme-dark .tab-navigation li.active { - box-shadow: inset 0 0 0 1px var(--tab-border-color); -} -.tab-content > *:first-child { - margin-top: 0; -} -.tab-navigation .tab-control .badge.status-warning { - background: var(--selected-badge-warning-background); - box-shadow: var(--selected-badge-warning-shadow); - color: var(--selected-badge-warning-color); -} -.tab-navigation .tab-control .badge.status-error { - background: var(--selected-badge-danger-background); - box-shadow: var(--selected-badge-danger-shadow); - color: var(--selected-badge-danger-color); -} - -.sf-tabs .tab:not(:first-child) { display: none; } - -[data-filters] { position: relative; } -[data-filtered] { cursor: pointer; } -[data-filtered]:after { content: '\00a0\25BE'; } -[data-filtered]:hover .filter-list li { display: inline-flex; } -[class*="filter-hidden-"] { display: none; } -.filter-list { position: absolute; border: var(--border); box-shadow: var(--shadow); margin: 0; padding: 0; display: flex; flex-direction: column; } -.filter-list :after { content: ''; } -.filter-list li { - background: var(--tab-disabled-background); - border-bottom: var(--border); - color: var(--tab-disabled-color); - display: none; - list-style: none; - margin: 0; - padding: 5px 10px; - text-align: left; - font-weight: normal; -} -.filter-list li.active { - background: var(--tab-background); - color: var(--tab-color); -} -.filter-list li.last-active { - background: var(--tab-active-background); - color: var(--tab-active-color); -} - -.filter-list-level li { cursor: s-resize; } -.filter-list-level li.active { cursor: n-resize; } -.filter-list-level li.last-active { cursor: default; } -.filter-list-level li.last-active:before { content: '\2714\00a0'; } -.filter-list-choice li:before { content: '\2714\00a0'; color: transparent; } -.filter-list-choice li.active:before { color: unset; } - -.container { max-width: 1024px; margin: 0 auto; padding: 0 15px; } -.container::after { content: ""; display: table; clear: both; } - -header { background-color: #222; color: rgba(255, 255, 255, 0.75); font-size: 13px; height: 33px; line-height: 33px; padding: 0; } -header .container { display: flex; justify-content: space-between; } -.logo { flex: 1; font-size: 13px; font-weight: normal; margin: 0; padding: 0; } -.logo svg { height: 18px; width: 18px; opacity: .8; vertical-align: -5px; } - -.help-link { margin-left: 15px; } -.help-link a { color: inherit; } -.help-link .icon svg { height: 15px; width: 15px; opacity: .7; vertical-align: -2px; } -.help-link a:hover { color: #EEE; text-decoration: none; } -.help-link a:hover svg { opacity: .9; } - -.exception-summary { background: var(--background-error); border-bottom: 2px solid rgba(0, 0, 0, 0.1); border-top: 1px solid rgba(0, 0, 0, .3); flex: 0 0 auto; margin-bottom: 15px; } -.exception-metadata { background: rgba(0, 0, 0, 0.1); padding: 7px 0; } -.exception-metadata .container { display: flex; flex-direction: row; justify-content: space-between; } -.exception-metadata h2, .exception-metadata h2 > a { color: rgba(255, 255, 255, 0.8); font-size: 13px; font-weight: 400; margin: 0; } -.exception-http small { font-size: 13px; opacity: .7; } -.exception-hierarchy { flex: 1; } -.exception-hierarchy .icon { margin: 0 3px; opacity: .7; } -.exception-hierarchy .icon svg { height: 13px; width: 13px; vertical-align: -2px; } - -.exception-without-message .exception-message-wrapper { display: none; } -.exception-message-wrapper .container { display: flex; align-items: flex-start; min-height: 70px; padding: 10px 15px 8px; } -.exception-message { flex-grow: 1; } -.exception-message, .exception-message a { color: #FFF; font-size: 21px; font-weight: 400; margin: 0; } -.exception-message.long { font-size: 18px; } -.exception-message a { border-bottom: 1px solid rgba(255, 255, 255, 0.5); font-size: inherit; text-decoration: none; } -.exception-message a:hover { border-bottom-color: #ffffff; } - -.exception-properties-wrapper { margin: .8em 0; } -.exception-properties { background: var(--base-0); border: var(--border); box-shadow: 0px 0px 1px rgba(128, 128, 128, .2); } -.exception-properties pre { margin: 0; padding: 0.2em 0; } - -.exception-illustration { flex-basis: 111px; flex-shrink: 0; height: 66px; margin-left: 15px; opacity: .7; } - -.trace + .trace { margin-top: 30px; } -.trace-head { background-color: var(--base-2); padding: 10px; position: relative; } -.trace-head .trace-class { color: var(--base-6); font-size: 18px; font-weight: bold; line-height: 1.3; margin: 0; position: relative; } -.trace-head .trace-namespace { color: #999; display: block; font-size: 13px; } -.trace-head .icon { position: absolute; right: 0; top: 0; } -.trace-head .icon svg { fill: var(--base-5); height: 24px; width: 24px; } - -.trace-details { background: var(--base-0); border: var(--border); box-shadow: 0px 0px 1px rgba(128, 128, 128, .2); margin: 0 0 1em; table-layout: fixed; } - -.trace-message { font-size: 14px; font-weight: normal; margin: .5em 0 0; } - -.trace-line { position: relative; padding-top: 8px; padding-bottom: 8px; } -.trace-line + .trace-line { border-top: var(--border); } -.trace-line:hover { background: var(--base-1); } -.trace-line a { color: var(--base-6); } -.trace-line .icon { opacity: .4; position: absolute; left: 10px; } -.trace-line .icon svg { fill: var(--base-5); height: 16px; width: 16px; } -.trace-line .icon.icon-copy { left: auto; top: auto; padding-left: 5px; display: none } -.trace-line:hover .icon.icon-copy:not(.hidden) { display: inline-block } -.trace-line-header { padding-left: 36px; padding-right: 10px; } - -.trace-file-path, .trace-file-path a { color: var(--base-6); font-size: 13px; } -.trace-class { color: var(--color-error); } -.trace-type { padding: 0 2px; } -.trace-method { color: var(--color-error); font-weight: bold; } -.trace-arguments { color: #777; font-weight: normal; padding-left: 2px; } - -.trace-code { background: var(--base-0); font-size: 12px; margin: 10px 10px 2px 10px; padding: 10px; overflow-x: auto; white-space: nowrap; } -.trace-code ol { margin: 0; float: left; } -.trace-code li { color: #969896; margin: 0; padding-left: 10px; float: left; width: 100%; } -.trace-code li + li { margin-top: 5px; } -.trace-code li.selected { background: var(--trace-selected-background); margin-top: 2px; } -.trace-code li code { color: var(--base-6); white-space: nowrap; } - -.trace-as-text .stacktrace { line-height: 1.8; margin: 0 0 15px; white-space: pre-wrap; } - -@media (min-width: 575px) { - .hidden-xs-down { display: initial; } - .help-link { margin-left: 30px; } -} diff --git a/vendor/symfony/error-handler/Resources/assets/css/exception_full.css b/vendor/symfony/error-handler/Resources/assets/css/exception_full.css deleted file mode 100644 index fa77cb32..00000000 --- a/vendor/symfony/error-handler/Resources/assets/css/exception_full.css +++ /dev/null @@ -1,128 +0,0 @@ -.sf-reset .traces { - padding-bottom: 14px; -} -.sf-reset .traces li { - font-size: 12px; - color: #868686; - padding: 5px 4px; - list-style-type: decimal; - margin-left: 20px; -} -.sf-reset #logs .traces li.error { - font-style: normal; - color: #AA3333; - background: #f9ecec; -} -.sf-reset #logs .traces li.warning { - font-style: normal; - background: #ffcc00; -} -/* fix for Opera not liking empty
  • */ -.sf-reset .traces li:after { - content: "\00A0"; -} -.sf-reset .trace { - border: 1px solid #D3D3D3; - padding: 10px; - overflow: auto; - margin: 10px 0 20px; -} -.sf-reset .block-exception { - -moz-border-radius: 16px; - -webkit-border-radius: 16px; - border-radius: 16px; - margin-bottom: 20px; - background-color: #f6f6f6; - border: 1px solid #dfdfdf; - padding: 30px 28px; - word-wrap: break-word; - overflow: hidden; -} -.sf-reset .block-exception div { - color: #313131; - font-size: 10px; -} -.sf-reset .block-exception-detected .illustration-exception, -.sf-reset .block-exception-detected .text-exception { - float: left; -} -.sf-reset .block-exception-detected .illustration-exception { - width: 152px; -} -.sf-reset .block-exception-detected .text-exception { - width: 670px; - padding: 30px 44px 24px 46px; - position: relative; -} -.sf-reset .text-exception .open-quote, -.sf-reset .text-exception .close-quote { - font-family: Arial, Helvetica, sans-serif; - position: absolute; - color: #C9C9C9; - font-size: 8em; -} -.sf-reset .open-quote { - top: 0; - left: 0; -} -.sf-reset .close-quote { - bottom: -0.5em; - right: 50px; -} -.sf-reset .block-exception p { - font-family: Arial, Helvetica, sans-serif; -} -.sf-reset .block-exception p a, -.sf-reset .block-exception p a:hover { - color: #565656; -} -.sf-reset .logs h2 { - float: left; - width: 654px; -} -.sf-reset .error-count, .sf-reset .support { - float: right; - width: 170px; - text-align: right; -} -.sf-reset .error-count span { - display: inline-block; - background-color: #aacd4e; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - border-radius: 6px; - padding: 4px; - color: white; - margin-right: 2px; - font-size: 11px; - font-weight: bold; -} - -.sf-reset .support a { - display: inline-block; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - border-radius: 6px; - padding: 4px; - color: #000000; - margin-right: 2px; - font-size: 11px; - font-weight: bold; -} - -.sf-reset .toggle { - vertical-align: middle; -} -.sf-reset .linked ul, -.sf-reset .linked li { - display: inline; -} -.sf-reset #output-content { - color: #000; - font-size: 12px; -} -.sf-reset #traces-text pre { - white-space: pre; - font-size: 12px; - font-family: monospace; -} diff --git a/vendor/symfony/error-handler/Resources/assets/images/chevron-right.svg b/vendor/symfony/error-handler/Resources/assets/images/chevron-right.svg deleted file mode 100644 index 6837aff1..00000000 --- a/vendor/symfony/error-handler/Resources/assets/images/chevron-right.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vendor/symfony/error-handler/Resources/assets/images/favicon.png.base64 b/vendor/symfony/error-handler/Resources/assets/images/favicon.png.base64 deleted file mode 100644 index fb076ed1..00000000 --- a/vendor/symfony/error-handler/Resources/assets/images/favicon.png.base64 +++ /dev/null @@ -1 +0,0 @@ -data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAgCAYAAAABtRhCAAADVUlEQVRIx82XX0jTURTHLYPyqZdefQx66CEo80+aYpoIkqzUikz6Z5klQoWUWYRIJYEUGpQ+lIr9U5dOTLdCtkmWZis3rbnC5fw/neYW002307mX/cZvP3/7o1PwwOdh95x7vnf39zvnd29AgBer2xO6DclAXiMqZAqxIiNIN/IYSUS2BPhjmGATchUxI+ADWiRhpWK7HKuHFVBFdmU5YvnI4grFGCaReF/EBH4KsZlGgj2JBTuCYBWRIYF8YoEOJ6wBt/gEs7mBbyOjQXruPLSdOgPCiEiPSUUHDoL8Ug5IUo9B/d5wrt+G7OAKNrODPuVdB6vRCIzN6SdBlpW9RIgk/1FeAXabzRlrUPVCS/JhbmwudztnGeeH9AyXBIwtmM3wLinZJZHifjHw2V+NBoRh+9ixQrbgbnaSIcl7cGea6hoXQbNe7za241oeO5Z0p42M4BV2EqP2D50wo+6HzvwC6C4sApNOR8cmOrtcnhtj2kYRyC9eBvXzKrBZrXSs72kFd1t3MoKVbMekQkEnSNKOO8fac3LpmK6l1TlGtsxmsdKFsecPYgwxst0cwROMYDXboSotg0WLBRqjY51jLYcENElXwW2XJKPydvoI2GN9T8rBtrAArYIUruBJXkFheCQYlCpQP6uk5dAQFQNaUROMSGVQFxLmkoQsxDJrhLbTZ+nvVsERME9MgPJRKV/58AsyomTSzE813WLFvWK++qI0xSfQl8k8Pg46sYRuv5t6dS+4RqxDwaa4BGjYH+NTQvKScIp9+YL/hoZh3jDtLRHtt2C3g6bmhX+CpsFBWg7ilDSPgj0lD2ncr5ev/BP8VvyAJhqVyZeUhPOrEhEFxgEtjft846Z/guQTNT89Q5P9flMLoth4F7808wKtWWKzAwNQHxrh/1vaid2F+XpYTSbQf1XA2McOmOpROnvpvMEA4tSjq1cW0sws2gCYxswY6TKkvzYnJq1NHZLnRU4BX+4U0uburvusu8Kv8iHY7qefkM4IFngJHEOUXmLEPgiGsI8YnlZILit3vSSLRTQe/MPIZva5pshNIEmyFQlCvruJKXPkCEfmePzkphXHdzZNQdoRI9KPlBAxlj/I8U97ERPS5bjGbWDFbEdqHVe5caTBeZZx2H/IMvzeN15yoQAAAABJRU5ErkJggg== diff --git a/vendor/symfony/error-handler/Resources/assets/images/icon-book.svg b/vendor/symfony/error-handler/Resources/assets/images/icon-book.svg deleted file mode 100644 index 498a74f4..00000000 --- a/vendor/symfony/error-handler/Resources/assets/images/icon-book.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vendor/symfony/error-handler/Resources/assets/images/icon-copy.svg b/vendor/symfony/error-handler/Resources/assets/images/icon-copy.svg deleted file mode 100644 index 844a4f99..00000000 --- a/vendor/symfony/error-handler/Resources/assets/images/icon-copy.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vendor/symfony/error-handler/Resources/assets/images/icon-minus-square-o.svg b/vendor/symfony/error-handler/Resources/assets/images/icon-minus-square-o.svg deleted file mode 100644 index be534ad4..00000000 --- a/vendor/symfony/error-handler/Resources/assets/images/icon-minus-square-o.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vendor/symfony/error-handler/Resources/assets/images/icon-minus-square.svg b/vendor/symfony/error-handler/Resources/assets/images/icon-minus-square.svg deleted file mode 100644 index 471c2741..00000000 --- a/vendor/symfony/error-handler/Resources/assets/images/icon-minus-square.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vendor/symfony/error-handler/Resources/assets/images/icon-plus-square-o.svg b/vendor/symfony/error-handler/Resources/assets/images/icon-plus-square-o.svg deleted file mode 100644 index b2593a9f..00000000 --- a/vendor/symfony/error-handler/Resources/assets/images/icon-plus-square-o.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vendor/symfony/error-handler/Resources/assets/images/icon-plus-square.svg b/vendor/symfony/error-handler/Resources/assets/images/icon-plus-square.svg deleted file mode 100644 index 2f5c3b35..00000000 --- a/vendor/symfony/error-handler/Resources/assets/images/icon-plus-square.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vendor/symfony/error-handler/Resources/assets/images/icon-support.svg b/vendor/symfony/error-handler/Resources/assets/images/icon-support.svg deleted file mode 100644 index 03fd8e76..00000000 --- a/vendor/symfony/error-handler/Resources/assets/images/icon-support.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vendor/symfony/error-handler/Resources/assets/images/symfony-ghost.svg.php b/vendor/symfony/error-handler/Resources/assets/images/symfony-ghost.svg.php deleted file mode 100644 index 4b2f9c1b..00000000 --- a/vendor/symfony/error-handler/Resources/assets/images/symfony-ghost.svg.php +++ /dev/null @@ -1 +0,0 @@ -addElementToGhost(); ?> diff --git a/vendor/symfony/error-handler/Resources/assets/images/symfony-logo.svg b/vendor/symfony/error-handler/Resources/assets/images/symfony-logo.svg deleted file mode 100644 index f10824ae..00000000 --- a/vendor/symfony/error-handler/Resources/assets/images/symfony-logo.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/vendor/symfony/error-handler/Resources/assets/js/exception.js b/vendor/symfony/error-handler/Resources/assets/js/exception.js deleted file mode 100644 index 22ce675d..00000000 --- a/vendor/symfony/error-handler/Resources/assets/js/exception.js +++ /dev/null @@ -1,304 +0,0 @@ -/* This file is based on WebProfilerBundle/Resources/views/Profiler/base_js.html.twig. - If you make any change in this file, verify the same change is needed in the other file. */ -/* .tab'); - var tabNavigation = document.createElement('div'); - tabNavigation.className = 'tab-navigation'; - tabNavigation.setAttribute('role', 'tablist'); - - var selectedTabId = 'tab-' + i + '-0'; /* select the first tab by default */ - for (var j = 0; j < tabs.length; j++) { - var tabId = 'tab-' + i + '-' + j; - var tabTitle = tabs[j].querySelector('.tab-title').innerHTML; - - var tabNavigationItem = document.createElement('button'); - addClass(tabNavigationItem, 'tab-control'); - tabNavigationItem.setAttribute('data-tab-id', tabId); - tabNavigationItem.setAttribute('role', 'tab'); - tabNavigationItem.setAttribute('aria-controls', tabId); - if (hasClass(tabs[j], 'active')) { selectedTabId = tabId; } - if (hasClass(tabs[j], 'disabled')) { - addClass(tabNavigationItem, 'disabled'); - } - tabNavigationItem.innerHTML = tabTitle; - tabNavigation.appendChild(tabNavigationItem); - - var tabContent = tabs[j].querySelector('.tab-content'); - tabContent.parentElement.setAttribute('id', tabId); - } - - tabGroups[i].insertBefore(tabNavigation, tabGroups[i].firstChild); - addClass(document.querySelector('[data-tab-id="' + selectedTabId + '"]'), 'active'); - } - - /* display the active tab and add the 'click' event listeners */ - for (i = 0; i < tabGroups.length; i++) { - tabNavigation = tabGroups[i].querySelectorAll(':scope > .tab-navigation .tab-control'); - - for (j = 0; j < tabNavigation.length; j++) { - tabId = tabNavigation[j].getAttribute('data-tab-id'); - var tabPanel = document.getElementById(tabId); - tabPanel.setAttribute('role', 'tabpanel'); - tabPanel.setAttribute('aria-labelledby', tabId); - tabPanel.querySelector('.tab-title').className = 'hidden'; - - if (hasClass(tabNavigation[j], 'active')) { - tabPanel.className = 'block'; - tabNavigation[j].setAttribute('aria-selected', 'true'); - tabNavigation[j].removeAttribute('tabindex'); - } else { - tabPanel.className = 'hidden'; - tabNavigation[j].removeAttribute('aria-selected'); - tabNavigation[j].setAttribute('tabindex', '-1'); - } - - tabNavigation[j].addEventListener('click', function(e) { - var activeTab = e.target || e.srcElement; - - /* needed because when the tab contains HTML contents, user can click */ - /* on any of those elements instead of their parent '